@farris/ui-vue
Version:
Farris Vue, a Farris Design based Vue3 component library.
2 lines (1 loc) • 37.2 kB
JavaScript
(function(C,u){typeof exports=="object"&&typeof module<"u"?u(exports,require("vue"),require("lodash-es"),require("../common/index.umd.js")):typeof define=="function"&&define.amd?define(["exports","vue","lodash-es","../common/index.umd.js"],u):(C=typeof globalThis<"u"?globalThis:C||self,u(C.splitter={},C.Vue,C.LodashES,C.common))})(this,function(C,u,N,R){"use strict";var Me=Object.defineProperty;var ze=(C,u,N)=>u in C?Me(C,u,{enumerable:!0,configurable:!0,writable:!0,value:N}):C[u]=N;var z=(C,u,N)=>ze(C,typeof u!="symbol"?u+"":u,N);const H={},A={};function F(o){const{properties:e,title:t,ignore:n}=o,s=n&&Array.isArray(n),r=Object.keys(e).reduce((i,p)=>((!s||!n.find(l=>l===p))&&(i[p]=e[p].type==="object"&&e[p].properties?F(e[p]):N.cloneDeep(e[p].default)),i),{});if(t&&(!s||!n.find(i=>i==="id"))){const i=t.toLowerCase().replace(/-/g,"_");r.id=`${i}_${Math.random().toString().slice(2,6)}`}return r}function K(o){const{properties:e,title:t,required:n}=o;if(n&&Array.isArray(n)){const s=n.reduce((r,i)=>(r[i]=e[i].type==="object"&&e[i].properties?F(e[i]):N.cloneDeep(e[i].default),r),{});if(t&&n.find(r=>r==="id")){const r=t.toLowerCase().replace(/-/g,"_");s.id=`${r}_${Math.random().toString().slice(2,6)}`}return s}return{type:t}}function U(o,e={},t){const n=H[o];if(n){let s=K(n);const r=A[o];return s=r?r({getSchemaByType:U},s,e,t):s,s}return null}function ee(o,e){const t=F(e);return Object.keys(t).reduce((n,s)=>(Object.prototype.hasOwnProperty.call(o,s)&&(n[s]&&N.isPlainObject(n[s])&&N.isPlainObject(o[s]||!o[s])?Object.assign(n[s],o[s]||{}):n[s]=o[s]),n),t),t}function q(o,e){return Object.keys(o).filter(n=>o[n]!=null).reduce((n,s)=>{if(e.has(s)){const r=e.get(s);if(typeof r=="string")n[r]=o[s];else{const i=r(s,o[s],o);Object.assign(n,i)}}else n[s]=o[s];return n},{})}function te(o,e,t=new Map){const n=ee(o,e);return q(n,t)}function ne(o={}){function e(a,c,f,d){if(typeof f=="number")return d[a].length===f;if(typeof f=="object"){const h=Object.keys(f)[0],m=f[h];if(h==="not")return Number(d[a].length)!==Number(m);if(h==="moreThan")return Number(d[a].length)>=Number(m);if(h==="lessThan")return Number(d[a].length)<=Number(m)}return!1}function t(a,c,f,d){return d[a]&&d[a].propertyValue&&String(d[a].propertyValue.value)===String(f)}const n=new Map([["length",e],["getProperty",t]]);Object.keys(o).reduce((a,c)=>(a.set(c,o[c]),a),n);function s(a,c){const f=a;return typeof c=="number"?[{target:f,operator:"length",param:null,value:Number(c)}]:typeof c=="boolean"?[{target:f,operator:"getProperty",param:a,value:!!c}]:typeof c=="object"?Object.keys(c).map(d=>{if(d==="length")return{target:f,operator:"length",param:null,value:c[d]};const h=d,m=c[d];return{target:f,operator:"getProperty",param:h,value:m}}):[]}function r(a){return Object.keys(a).reduce((f,d)=>{const h=s(d,a[d]);return f.push(...h),f},[])}function i(a,c){if(n.has(a.operator)){const f=n.get(a.operator);return f&&f(a.target,a.param,a.value,c)||!1}return!1}function p(a,c){return r(a).reduce((h,m)=>h&&i(m,c),!0)}function l(a,c){const f=Object.keys(a),d=f.includes("allOf"),h=f.includes("anyOf"),m=d||h,O=(m?a[m?d?"allOf":"anyOf":"allOf"]:[a]).map(y=>p(y,c));return d?!O.includes(!1):O.includes(!0)}return{parseValueSchema:l}}const k={button:{type:"button",name:"按钮"},"response-toolbar":{type:"response-toolbar",name:"工具栏"},"response-toolbar-item":{type:"response-toolbar-item",name:"按钮"},"content-container":{type:"content-container",name:"容器"},"input-group":{type:"input-group",name:"文本"},textarea:{type:"textarea",name:"多行文本"},lookup:{type:"lookup",name:"帮助"},"number-spinner":{type:"number-spinner",name:"数值"},"date-picker":{type:"date-picker",name:"日期"},switch:{type:"switch",name:"开关"},"radio-group":{type:"radio-group",name:"单选组"},"check-box":{type:"check-box",name:"复选框"},"check-group":{type:"check-group",name:"复选框组"},"combo-list":{type:"combo-list",name:"下拉列表"},"response-form":{type:"response-form",name:"卡片面板"},"response-layout":{type:"response-layout",name:"布局容器",icon:"response-layout-3"},"response-layout-item":{type:"response-layout-item",name:"布局",icon:"response-layout-1"},"tree-grid":{type:"tree-grid",name:"树表格"},"tree-grid-column":{type:"tree-grid-column",name:"树表格列"},"data-grid":{type:"data-grid",name:"表格"},"data-grid-column":{type:"data-grid-column",name:"表格列"},module:{type:"Module",name:"模块"},component:{type:"component",name:"组件"},tabs:{type:"tabs",name:"标签页"},"tab-page":{type:"tab-page",name:"标签页项",dependentParentControl:"Tab"},"tab-toolbar-item":{type:"tab-toolbar-item",name:"标签页工具栏按钮"},"html-template":{type:"html-template",name:"模板容器"},"time-picker":{type:"time-picker",name:"时间选择"},section:{type:"section",name:"分组面板"},"section-toolbar":{type:"section-toolbar",name:"分组面板工具栏"},"section-toolbar-item":{type:"section-toolbar-item",name:"分组面板按钮"},splitter:{type:"splitter",name:"分栏面板"},"splitter-pane":{type:"splitter-pane",name:"分栏面板项",dependentParentControl:"Splitter"},"component-ref":{type:"component-ref",name:"组件引用节点"},uploader:{type:"uploader",name:"附件上传"},"page-header":{type:"page-header",name:"页头"},"page-footer":{type:"page-footer",name:"页脚"},"tab-toolbar":{type:"tab-toolbar",name:"标签页工具栏"},fieldset:{type:"fieldset",name:"分组"},"query-solution":{type:"query-solution",name:"筛选方案"},drawer:{type:"drawer",name:"抽屉"},"external-container":{type:"external-container",name:"外部容器",icon:"content-container"},"list-nav":{type:"list-nav",name:"列表导航"},"filter-bar":{type:"filter-bar",name:"筛选条"}},ie={},se={};ne();function I(o,e,t=new Map,n=(i,p,l,a)=>p,s={},r=i=>i){return H[e.title]=e,A[e.title]=n,ie[e.title]=s,se[e.title]=r,(i={},p=!0)=>{if(!p)return q(i,t);const l=te(i,e,t),a=Object.keys(o).reduce((c,f)=>(c[f]=o[f].default,c),{});return Object.assign(a,l)}}function W(o,e){return{customClass:e.class,customStyle:e.style}}const re=new Map([["appearance",W]]);function oe(o,e,t){const n=o.getSchemaByType("splitter-pane");return n.appearance={class:"f-col-w6 f-page-content-nav"},n.position="left",e.contents.unshift(n),e}function ae(o,e,t){const n=o.getSchemaByType("splitter-pane");return n.appearance={class:"f-page-content-main"},n.position="main",e.contents.push(n),e}function le(o,e,t){const n=t.parentComponentInstance;return String(n.schema.appearance.class||"").split(" ").includes("f-page-main")&&(e.appearance={class:"f-page-content"}),oe(o,e),ae(o,e),e}function ce(o,e,t){return e}const pe={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/splitter.schema.json",title:"splitter",description:"A Farris Container Component",type:"object",properties:{id:{description:"The unique identifier for a splitter",type:"string"},type:{description:"The type string of splitter component",type:"string",default:"splitter"},appearance:{description:"",type:"object",properties:{class:{type:"string"},style:{type:"string"}},default:{}},contents:{description:"",type:"array",default:[]},direction:{description:"",type:"string",default:"row",enum:["column","row"]}},required:["id","type","contents"]},ue={title:"splitter",description:"A Farris Container Component",type:"object",categories:{basic:{description:"Basic Infomation",title:"基本信息",properties:{id:{description:"组件标识",title:"标识",type:"string",readonly:!0},type:{description:"组件类型",title:"控件类型",type:"select",editor:{type:"combo-list",textField:"value",valueField:"key",data:[{key:"splitter",value:"分栏面板"}],editable:!1}}}},appearance:{description:"",title:"外观",properties:{class:{description:"组件的CSS样式",title:"class样式"},style:{description:"组件的内容样式",title:"style样式"}}}}},$={customStyle:{type:String,default:""},customClass:{type:String,default:""},direction:{Type:String,default:"row"}},L=I($,pe,re,le,ue);function _(o){const e=u.ref(-1),t=u.ref(-1),n=u.ref(0),s=u.ref(0),r=u.ref(!1),i=u.ref(!1),p=u.computed(()=>({display:r.value?"block":"none",left:`${n.value}px`})),l=u.computed(()=>({display:i.value?"block":"none",top:`${s.value}px`})),a=u.computed(()=>({display:i.value||r.value?"block":"none"}));function c(d){const h=o.value;if(h){const{left:m}=h.getBoundingClientRect();n.value=d.clientX-m}}function f(d){const h=o.value;if(h){const{top:m}=h.getBoundingClientRect();s.value=d.clientY-m}}return{horizontalResizeHandleStyle:p,verticalResizeHandleStyle:l,resizeOverlayStyle:a,showHorizontalResizeHandle:r,showVerticalResizeHandle:i,horizontalResizeBarPosition:e,verticalResizeBarPosition:t,verticalResizeHandleOffset:s,horizontalResizeHandleOffset:n,draggingHorizontalResizeHandle:c,draggingVerticalResizeHandle:f}}const x=u.defineComponent({name:"FSplitter",props:$,emits:[],setup(o,e){const t=u.ref(),n=_(t),{horizontalResizeHandleStyle:s,verticalResizeHandleStyle:r,resizeOverlayStyle:i}=n;u.provide("splitter",{useResizeHandleComposition:n});const p=u.computed(()=>{const a={"f-splitter":!0};return R.getCustomClass(a,o==null?void 0:o.customClass)}),l=u.computed(()=>{const a={"flex-direction":o.direction==="row"?"row":"column"};return R.getCustomStyle(a,o==null?void 0:o.customStyle)});return()=>u.createVNode("div",{class:p.value,ref:t,style:l.value},[e.slots.default&&e.slots.default(),u.createVNode("div",{class:"f-splitter-resize-overlay",style:i.value},null),u.createVNode("div",{class:"f-splitter-horizontal-resize-proxy",style:s.value},null),u.createVNode("div",{class:"f-splitter-vertical-resize-proxy",style:r.value},null)])}}),de=new Map([["appearance",W]]),fe={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/splitter-pane.schema.json",title:"splitter-pane",description:"A Farris Container Component",type:"object",properties:{id:{description:"The unique identifier for a splitter",type:"string"},type:{description:"The type string of splitter component",type:"string",default:"splitter-pane"},appearance:{description:"",type:"object",properties:{class:{type:"string"},style:{type:"string"}},default:{}},size:{description:"",type:"object",properties:{width:{type:"number"},height:{type:"strnumbering"}},default:{}},collapsable:{description:"",type:"boolean",default:!1},contents:{description:"",type:"array",default:[]},minHeight:{description:"",type:"number"},minWidth:{description:"",type:"number"},position:{description:"",type:"string",default:"left",enum:["left","center","right","top","bottom"]},resizable:{description:"",type:"boolean",default:!1},visible:{description:"",type:"number",default:!0}},required:["id","type","contents"]},D={customClass:{type:String,defaut:""},customStyle:{type:String,default:""},width:{type:Number},height:{type:Number},position:{type:String,default:"left"},visible:{type:Boolean,default:!0},resizable:{type:Boolean,default:!1},resizeHandle:{type:String,default:""},collapsable:{type:Boolean,default:!1},minWidth:{type:Number,default:0},minHeight:{type:Number,default:0}},X=I(D,fe,de,ce);function Y(o,e){const t=u.ref(o.width),n=u.ref(o.height),{horizontalResizeBarPosition:s,horizontalResizeHandleOffset:r,showHorizontalResizeHandle:i,showVerticalResizeHandle:p,verticalResizeBarPosition:l,verticalResizeHandleOffset:a,draggingHorizontalResizeHandle:c,draggingVerticalResizeHandle:f}=e;let d="",h,m;function S(v){if((d==="left"||d==="right")&&m){const{left:y}=m.getBoundingClientRect(),{width:b}=h.getBoundingClientRect(),T=v.clientX-y,M=d==="left"?(b||0)+(T-s.value):(b||0)-(T-s.value);t.value=o.minWidth>0?Math.max(o.minWidth,M):M}if((d==="top"||d==="bottom")&&m){const{top:y}=m.getBoundingClientRect(),{height:b}=h.getBoundingClientRect(),T=v.clientY-y,M=d==="top"?(b||0)+(T-l.value):(b||0)-(T-l.value);n.value=o.minHeight>0?Math.max(o.minHeight,M):M}r.value=0,a.value=0,s.value=-1,l.value=-1,i.value=!1,p.value=!1,document.removeEventListener("mousemove",c),document.removeEventListener("mouseup",S),document.body.style.userSelect="",d="",h=null,m=null}function P(v,y,b){if(d=y,h=b,i.value=!0,m=v.composedPath().find(M=>M.className.split(" ")[0]==="f-splitter"),m){const{left:M}=m.getBoundingClientRect();r.value=v.clientX-M,s.value=v.clientX-M,document.addEventListener("mousemove",c),document.addEventListener("mouseup",S),document.body.style.userSelect="none"}}function O(v,y,b){if(d=y,h=b,p.value=!0,m=v.composedPath().find(M=>M.className.split(" ")[0]==="f-splitter"),m){const{top:M}=m.getBoundingClientRect();a.value=v.clientY-M,l.value=v.clientY-M,document.addEventListener("mousemove",f),document.addEventListener("mouseup",S),document.body.style.userSelect="none"}}return{actualWidth:t,actualHeight:n,onClickSplitterHorizontalResizeBar:P,onClickSplitterVerticalResizeBar:O}}const j=u.defineComponent({name:"FSplitterPane",props:D,emits:[],setup(o,e){const t=u.ref(),n=u.inject("splitter"),{useResizeHandleComposition:s}=n,r=Y(o,s),{actualHeight:i,actualWidth:p,onClickSplitterHorizontalResizeBar:l,onClickSplitterVerticalResizeBar:a}=r,c=u.ref(o.position),f=u.computed(()=>{const y={"f-splitter-pane":!0,"f-splitter-pane-main":c.value==="center","has-resize-bar":o.resizable};return y["f-splitter-pane-"+c.value]=!0,R.getCustomClass(y,o==null?void 0:o.customClass)}),d=u.computed(()=>o.resizeHandle?o.resizeHandle.split(",").filter(y=>["e","n","s","w"].find(b=>b===y)):[]),h=u.computed(()=>{const y={};return(p.value||p.value===0)&&(c.value==="left"||c.value==="right"||d.value.find(b=>b==="e")||d.value.find(b=>b==="w"))&&(y.width=`${p.value}px`),(i.value||i.value===0)&&(c.value==="bottom"||c.value==="top"||d.value.find(b=>b==="s")||d.value.find(b=>b==="n"))&&(y.height=`${i.value}px`),R.getCustomStyle(y,o==null?void 0:o.customStyle)}),m=u.computed(()=>({"f-splitter-resize-bar":!0,"f-splitter-resize-bar-e":c.value==="left","f-splitter-resize-bar-n":c.value==="bottom","f-splitter-resize-bar-s":c.value==="top","f-splitter-resize-bar-w":c.value==="right"}));function S(y){return{e:"left",w:"right",s:"top",n:"bottom"}[y]||y}function P(y,b){b=S(b),["left","right"].find(T=>T===b)&&l(y,b,t.value),["top","bottom"].find(T=>T===b)&&a(y,b,t.value)}function O(){return d.value.length>0?d.value.map(y=>u.createVNode("span",{class:"f-splitter-resize-bar f-splitter-resize-bar-"+y,onMousedown:b=>P(b,y)},null)):u.createVNode("span",{class:m.value,onMousedown:y=>P(y,c.value)},null)}function v(){p.value=o.width,i.value=o.height,h.value}return e.expose({reset:v}),()=>u.createVNode("div",{ref:t,class:f.value,style:h.value},[e.slots.default&&e.slots.default(),o.resizable&&O()])}});function G(o,e,t){var Q;const n=t&&t.getStyles&&t.getStyles()||"",s=t&&t.getDesignerClass&&t.getDesignerClass()||"",r=u.ref();function i(){return(e==null?void 0:e.schema.componentType)==="frame"?!1:t&&t.checkCanMoveComponent?t.checkCanMoveComponent():!0}function p(){return!1}function l(){return(e==null?void 0:e.schema.componentType)==="frame"?!1:t&&t.checkCanDeleteComponent?t.checkCanDeleteComponent():!0}function a(){return(e==null?void 0:e.schema.componentType)==="frame"?!0:t&&t.hideNestedPaddingInDesginerView?t.hideNestedPaddingInDesginerView():!1}function c(g){if(!g||!g.value)return null;if(g.value.schema&&g.value.schema.type==="component")return g.value;const w=u.ref(g==null?void 0:g.value.parent),E=c(w);return E||null}function f(g=e){var B;if(t!=null&&t.getDraggableDesignItemElement)return t.getDraggableDesignItemElement(g);const{componentInstance:w,designerItemElementRef:E}=g;if(!w||!w.value)return null;const{getCustomButtons:V}=w.value;return w.value.canMove||V&&((B=V())!=null&&B.length)?E:f(g.parent)}function d(g){return!!t&&t.canAccepts(g)}function h(){return(e==null?void 0:e.schema.label)||(e==null?void 0:e.schema.title)||(e==null?void 0:e.schema.name)}function m(){}function S(g,w){var E;!g||!w||(t!=null&&t.onAcceptMovedChildElement&&t.onAcceptMovedChildElement(g,w),(E=e==null?void 0:e.setupContext)==null||E.emit("dragEnd"))}function P(g,w){const{componentType:E}=g;let V=U(E,g,w);t&&t.onResolveNewComponentSchema&&(V=t.onResolveNewComponentSchema(g,V));const B=E.toLowerCase().replace(/-/g,"_");return V&&!V.id&&V.type===E&&(V.id=`${B}_${Math.random().toString().slice(2,6)}`),V}function O(g){g&&t!=null&&t.onChildElementMovedOut&&t.onChildElementMovedOut(g)}function v(...g){if(t&&t.getPropsConfig)return t.getPropsConfig(...g)}function y(g){if(!g)return;const w=e==null?void 0:e.schema,{formSchemaUtils:E}=g;if(w&&E.getExpressions().length){const V=E.getExpressions().findIndex(B=>B.target===w.id);V>-1&&E.getExpressions().splice(V,1)}}function b(g){t&&t.onRemoveComponent&&t.onRemoveComponent(),y(g),e!=null&&e.schema.contents&&e.schema.contents.map(w=>{let E=w.id;w.type==="component-ref"&&(E=w.component);const V=o.value.querySelectorAll(`#${E}-design-item`);V!=null&&V.length&&Array.from(V).map(B=>{var Z;(Z=B==null?void 0:B.componentInstance)!=null&&Z.value.onRemoveComponent&&B.componentInstance.value.onRemoveComponent(g)})})}function T(){if(t&&t.getCustomButtons)return t.getCustomButtons()}function M(g){if(t&&t.onPropertyChanged)return t.onPropertyChanged(g)}return r.value={canMove:i(),canSelectParent:p(),canDelete:l(),canNested:!a(),contents:e==null?void 0:e.schema.contents,elementRef:o,parent:(Q=e==null?void 0:e.parent)==null?void 0:Q.componentInstance,schema:e==null?void 0:e.schema,styles:n,designerClass:s,canAccepts:d,getBelongedComponentInstance:c,getDraggableDesignItemElement:f,getDraggingDisplayText:h,getPropConfig:v,getDragScopeElement:m,onAcceptMovedChildElement:S,onChildElementMovedOut:O,addNewChildComponentSchema:P,triggerBelongedComponentToMoveWhenMoved:!!t&&t.triggerBelongedComponentToMoveWhenMoved||u.ref(!1),triggerBelongedComponentToDeleteWhenDeleted:!!t&&t.triggerBelongedComponentToDeleteWhenDeleted||u.ref(!1),onRemoveComponent:b,getCustomButtons:T,onPropertyChanged:M},r}class J{getTemplateRule(e,t){const n=t==null?void 0:t.formSchemaUtils,s=n==null?void 0:n.getFormTemplateRule(),r={canAccept:!0,canDelete:!0,canMove:!0};if(!s)return r;const i=this.getComponentContext(e),{componentClassList:p}=i;return p.forEach(l=>{if(!l||!s[l])return;const{canMove:a,canDelete:c,canAccept:f}=s[l];r.canMove=r.canMove&&this.resolveRuleValue(a,i),r.canDelete=r.canDelete&&this.resolveRuleValue(c,i),r.canAccept=r.canAccept&&this.resolveRuleValue(f,i)}),r}resolveRuleValue(e,t){return typeof e=="boolean"?e:this.parseRuleValueSchema(e,t)}parseRuleValueSchema(e,t){const n=e.invalidContext||[];let s=!0;for(const r of n){if(r.firstLevelChild){if(r.firstLevelChild.class){const{firstLevelChildClassList:i}=t;if(i&&!i.includes(r.firstLevelChild.class)){s=!1;continue}}if(r.firstLevelChild.type){const{firstLevelChildSchema:i}=t;if(!i||i.type!==r.firstLevelChild.type){s=!1;continue}}}if(r.secondLevelChild){if(r.secondLevelChild.class){const{secondLevelChildClassList:i}=t;if(i&&!i.includes(r.secondLevelChild.class)){s=!1;continue}}if(r.secondLevelChild.type){const{secondLevelChildSchema:i}=t;if(!i||i.type!==r.secondLevelChild.type){s=!1;continue}}}if(r.parent){if(r.parent.class){const{parentClassList:i}=t;if(i&&!i.includes(r.parent.class)){s=!1;continue}}if(r.parent.type){const{parentSchema:i}=t;if(i&&i.type!==r.parent.type){s=!1;continue}}}s=!0;break}return!s}getComponentContext(e){var S,P,O,v;const t=e.schema,n=t.appearance&&t.appearance.class||"",s=n.split(" ")||[],r=t.contents||[],i=r.length?r[0]:null,p=i&&i.appearance?i.appearance.class:"",l=p?p.split(" "):[],a=(S=i==null?void 0:i.contents)!=null&&S.length?i==null?void 0:i.contents[0]:null,c=a&&a.appearance?a.appearance.class:"",f=c?c.split(" "):[],d=t.type==="component"?(O=(P=e.parent)==null?void 0:P.parent)==null?void 0:O.schema:(v=e.parent)==null?void 0:v.schema,h=d&&d.appearance&&d.appearance.class||"",m=h?h.split(" "):[];return{componentClass:n,componentClassList:s,childContents:r,firstLevelChildSchema:i,firstLevelChildClass:p,firstLevelChildClassList:l,secondLevelChildSchema:a,secondLevelChildClass:c,secondLevelChildClassList:f,parentSchema:d,parentClass:h,parentClassList:m}}}function me(o,e){const t=new J,{canMove:n,canDelete:s}=t.getTemplateRule(o,e);function r(){return!1}function i(){return s}function p(){return n}function l(){return!0}return{canAccepts:r,checkCanDeleteComponent:i,checkCanMoveComponent:p,hideNestedPaddingInDesginerView:l}}const he=u.defineComponent({name:"FSplitterDesign",props:$,emits:[],setup(o,e){const t=u.ref(),n=u.inject("designer-host-service"),s=u.inject("design-item-context"),r=me(s,n),i=G(t,s,r);i.value.canNested=!1;const p=_(t),{horizontalResizeHandleStyle:l,verticalResizeHandleStyle:a,resizeOverlayStyle:c}=p;u.provide("splitter",{useResizeHandleComposition:p});const f=u.computed(()=>{const h={"f-splitter":!0};return R.getCustomClass(h,o==null?void 0:o.customClass)}),d=u.computed(()=>{const h={"flex-direction":o.direction==="row"?"row":"column"};return R.getCustomStyle(h,o==null?void 0:o.customStyle)});return u.onMounted(()=>{t.value.componentInstance=i}),e.expose(i.value),()=>u.createVNode("div",{class:f.value,ref:t,style:d.value},[e.slots.default&&e.slots.default(),u.createVNode("div",{class:"f-splitter-resize-overlay",style:c.value},null),u.createVNode("div",{class:"f-splitter-horizontal-resize-proxy",style:l.value},null),u.createVNode("div",{class:"f-splitter-vertical-resize-proxy",style:a.value},null)])}});function ye(){function o(e,t){var i;if(!e)return!1;const n=((i=e.targetContainer)==null?void 0:i.componentInstance)&&e.targetContainer.componentInstance.value;if(!n)return!1;const s=n.schema.type,r=t==null?void 0:t.formSchemaUtils.getComponentById(n.belongedComponentId);return!((e.componentCategory==="input"||e.componentType==="form-group")&&![k["response-layout-item"].type,k["response-form"].type,k.fieldset.type].includes(s)||(e.componentType===k.tabs.type||e.componentType===k.section.type)&&((r==null?void 0:r.componentType)!=="frame"||![k["content-container"].type,k["splitter-pane"].type,k["response-layout-item"].type].includes(s))||e.componentType===k["query-solution"].type||e.componentType===k.fieldset.type&&s!==k["response-form"].type)}return{basalDragulaRuleForContainer:o}}const ge=u.ref(0);function be(){ge.value++}const ve=u.ref(0);function Ce(o){const{formSchemaUtils:e,formStateMachineUtils:t}=o;function n(l,a=""){return{path:a+l.code,field:l.id,fullPath:l.code}}function s(l,a=""){return e.getViewModelById(l).states.map(f=>n(f,a))}function r(l){const a=e.getRootViewModelId(),c=s(l);if(l===a)return c;const f=s(a,"root-component.");return[...c,...f]}function i(l){return l.binding&&l.binding.path||l.id||""}function p(){return t&&t.getRenderStates()||[]}return{getVariables:r,getControlName:i,getStateMachines:p}}class Se{constructor(e){z(this,"sessionVariables",[{key:"CurrentSysOrgName",name:"当前组织Name",description:"当前组织Name"},{key:"CurrentSysOrgId",name:"当前组织Id",description:"当前组织Id"},{key:"CurrentUserName",name:"当前用户Name",description:"当前用户Name"},{key:"CurrentUserCode",name:"当前用户Code",description:"当前用户Code"},{key:"CurrentUserId",name:"当前用户Id",description:"当前用户Id"},{key:"CurrentLanguage",name:"当前语言编号",description:"当前登录的语言编号,例如简体中文返回'zh-CHS',英文返回'en',繁体中文'zh-CHT'"}]);z(this,"expressionNames",{compute:"计算表达式",dependency:"依赖表达式",validate:"验证表达式",dataPicking:"帮助前表达式",visible:"可见表达式",readonly:"只读表达式",required:"必填表达式"});z(this,"getExpressionConverter",(e,t)=>({convertFrom:(n,s,r,i)=>{const p=r.getExpressionRuleValue(e,t||s);return p&&p.value||""},convertTo:(n,s,r,i,p)=>{var l;if(s==="dataPicking"&&(r!=null&&r.target)){const a=`${r.target}_dataPicking`;((l=r.rules)==null?void 0:l.some(f=>f.id===a&&f.value))?n.dictPickingExpressionId=a:delete n.dictPickingExpressionId}i.updateExpression(r)}}));this.formSchemaService=e}getExpressionRule(e,t){const n=this.formSchemaService.getExpressions();if(!n)return"";const s=n.find(i=>i.target===e);if(!s)return"";const r=s.rules.find(i=>i.type===t);return r||""}getContextFormVariables(){const{module:e}=this.formSchemaService.getFormSchema();if(!e.viewmodels||e.viewmodels.length===0)return[];const t=this.formSchemaService.getRootViewModelId(),n=this.formSchemaService.getViewModelById(t);if(!n||!n.states||n.states.length===0)return[];const s=[];return n.states.forEach(r=>{s.push({key:r.code,name:r.name,description:r.name,category:r.category})}),s}createTreeNode(e,t,n="label"){return{id:e.id,name:e.name,bindingPath:e[n],parents:t}}buildEntityFieldsTreeData(e=null,t){const n=[];return e==null||e.forEach(s=>{var p;const r=this.createTreeNode(s,t);let i=[];(p=s.type)!=null&&p.fields&&(i=this.buildEntityFieldsTreeData(s.type.fields,[...t,s.label])),n.push({data:r,children:i,expanded:!0})}),n}buildChildEntityTreeData(e=null,t){const n=[];return e==null||e.forEach(s=>{var l,a;const r=this.createTreeNode(s,t),i=this.buildEntityFieldsTreeData((l=s.type)==null?void 0:l.fields,[...t,s.label]),p=this.buildChildEntityTreeData((a=s.type)==null?void 0:a.entities,[...t,s.label]);p!=null&&p.length&&(i==null||i.push(...p)),n.push({data:r,children:i||[],expanded:!0})}),n}getEntitiesTreeData(){const e=this.formSchemaService.getSchemaEntities();if(!(e!=null&&e.length))return[];const t=e[0];if(!(t!=null&&t.type))return[];const n=this.buildEntityFieldsTreeData(t.type.fields,[t.code]),s=this.buildChildEntityTreeData(t.type.entities,[t.code]);return s!=null&&s.length&&(n==null||n.push(...s)),{entityCode:t.code,fields:[{data:this.createTreeNode(t,[],"code"),children:n||[]}]}}getEntitiesAndVariables(){return{entities:this.getEntitiesTreeData(),variables:{session:{name:"系统变量",items:this.sessionVariables,visible:!1},forms:{name:"表单变量",items:this.getContextFormVariables(),visible:!0}}}}onBeforeOpenExpression(e,t,n){const s=n==="Field"?e.binding.field:e.id,r=this.getExpressionRule(s,t),i=this.getEntitiesAndVariables(),p={message:["validate","required","dataPicking"].includes(t)&&r?r.message:"",...i};return r.messageType!=null&&(p.messageType=r.messageType),p}buildRule(e,t,n,s){const{expression:r,message:i,messageType:p}=t,l={id:`${e}_${n}`,type:n,value:r};return(n==="validate"||n==="dataPicking"||n==="required")&&(l.message=i),n==="dataPicking"&&(l.messageType=p),n==="validate"&&s&&(l.elementId=s),l}getExpressionData(){const{expressions:e}=this.formSchemaService.getFormSchema().module;return e||[]}updateExpression(e,t,n,s){const r=t==="Field"?e.binding.field:e.id,i=this.buildRule(r,n,s,e.type==="form-group"?e.id:"");let l=this.getExpressionData().find(c=>c.targetType===t&&c.target===r);const a=c=>c.value.trim()==="";if(l){const c=l.rules.find(f=>f.id===i.id);if(c)a(i)?l.rules=l.rules.filter(f=>f.id!==i.id):(Object.assign(c,i),s==="validate"&&e.type==="form-group"&&(c.elementId=e.id));else{if(a(i))return null;l.rules=l.rules||[],l.rules.push(i)}}else{if(a(i))return null;l={target:`${r}`,rules:[i],targetType:t}}return l}getExpressionEditorOptions(e,t,n,s){return n.reduce((r,i)=>{var l,a;const p=t==="Field"?(l=e==null?void 0:e.binding)==null?void 0:l.field:e.id;return r[i]={hide:t==="Field"?!!((a=e==null?void 0:e.binding)!=null&&a.field):!1,description:"",title:this.expressionNames[i],type:"string",$converter:this.getExpressionConverter(p),editor:{type:"expression-editor",singleExpand:!1,dialogTitle:`${this.expressionNames[i]}编辑器`,showMessage:i==="validate"||i==="dataPicking"||i==="required",showMessageType:i==="dataPicking",beforeOpen:()=>this.onBeforeOpenExpression(e,i,t),onSubmitModal:c=>{const f=this.updateExpression(e,t,c,i);if(s){const d=this.buildRule(p,c,i);s(d)}return f}}},r},{})}getExpressionInfo(e,t,n){const s=t==="Field"?e.binding.field:e.id,r=this.getExpressionRule(s,n),i={value:r&&r.value,targetId:s,targetType:t,expressionType:n};return r&&r.message&&(i.message=r.message),i}getExpressionConfig(e,t,n=["compute","dependency","validate"],s){return{description:"表达式",title:"表达式",properties:{...this.getExpressionEditorOptions(e,t,n,s)}}}getExpressionOptions(e,t,n){const s=this.getExpressionInfo(e,t,n);return{dialogTitle:`${this.expressionNames[n]}编辑器`,singleExpand:!1,showMessage:n==="required",beforeOpen:()=>this.onBeforeOpenExpression(e,n,t),expressionInfo:s}}}class Pe{constructor(e,t){z(this,"componentId");z(this,"viewModelId");z(this,"eventsEditorUtils");z(this,"formSchemaUtils");z(this,"formMetadataConverter");z(this,"designViewModelUtils");z(this,"designViewModelField");z(this,"controlCreatorUtils");z(this,"designerHostService");z(this,"schemaService",null);z(this,"metadataService",null);z(this,"propertyConfig",{type:"object",categories:{}});var n;this.componentId=e,this.designerHostService=t,this.eventsEditorUtils=t.eventsEditorUtils,this.formSchemaUtils=t.formSchemaUtils,this.formMetadataConverter=t.formMetadataConverter,this.viewModelId=((n=this.formSchemaUtils)==null?void 0:n.getViewModelIdByComponentId(e))||"",this.designViewModelUtils=t.designViewModelUtils,this.controlCreatorUtils=t.controlCreatorUtils,this.metadataService=t.metadataService,this.schemaService=t.schemaService}getTableInfo(){var e;return(e=this.schemaService)==null?void 0:e.getTableInfoByViewModelId(this.viewModelId)}setDesignViewModelField(e){var n;const t=e.binding&&e.binding.type==="Form"&&e.binding.field;if(t){if(!this.designViewModelField){const s=this.designViewModelUtils.getDgViewModel(this.viewModelId);this.designViewModelField=s.fields.find(r=>r.id===t)}e.updateOn=(n=this.designViewModelField)==null?void 0:n.updateOn}}getBasicPropConfig(e){return{description:"Basic Information",title:"基本信息",properties:{id:{description:"组件标识",title:"标识",type:"string",readonly:!0},type:{description:"组件类型",title:"控件类型",type:"select",editor:{type:"combo-list",textField:"name",valueField:"value",idField:"value",editable:!1,data:[{value:e.type,name:k[e.type].name}]}}}}}getAppearanceConfig(e=null,t={},n){const s={title:"外观",description:"Appearance"},r={class:{title:"class样式",type:"string",description:"组件的CSS样式",$converter:"/converter/appearance.converter"},style:{title:"style样式",type:"string",description:"组件的样式",$converter:"/converter/appearance.converter"}};for(const i in t)r[i]=Object.assign(r[i]||{},t[i]);return{...s,properties:{...r},setPropertyRelates(i,p){if(i){switch(i&&i.propertyID){case"class":case"style":{ve.value++;break}}n&&n(i,e,p)}}}}getPropertyEditorParams(e,t=[],n="visible",s={},r={}){const{getVariables:i,getControlName:p,getStateMachines:l}=Ce(this.designerHostService),a=this.getRealTargetType(e),c=t&&t.length>0?t:["Const","Variable","StateMachine","Expression"],f={type:"property-editor",propertyTypes:c};return c.map(d=>{switch(d){case"Const":Object.assign(f,{constType:"enum",constEnums:[{id:!0,name:"是"},{id:!1,name:"否"}]},s);break;case"Expression":f.expressionConfig=this.getExpressionOptions(e,a,n);break;case"StateMachine":f.stateMachines=l();break;case"Variable":Object.assign(f,{controlName:p(e),newVariablePrefix:"is",newVariableType:"Boolean",variables:i(this.viewModelId),onBeforeOpenVariables:h=>{h.value=i(this.viewModelId)}},r);break}}),f}getVisibleProperty(e,t=""){return{visible:{title:"是否可见",type:"boolean",description:"运行时组件是否可见",editor:this.getPropertyEditorParams(e,t==="gridFieldEditor"?["Const","Expression"]:["Const","Variable","StateMachine","Expression"],"visible")}}}getBehaviorConfig(e,t="",n={},s){const r={title:"行为",description:""},i=this.getVisibleProperty(e,t);for(const l in n)i[l]=Object.assign(i[l]||{},n[l]);const p=this;return{...r,properties:{...i},setPropertyRelates(l,a){if(l){switch(l.propertyID){case"disabled":case"readonly":case"visible":p.afterMutilEditorChanged(e,l);break}s&&s(l,a)}}}}afterMutilEditorChanged(e,t){this.addNewVariableToViewModel(t,this.viewModelId),this.updateExpressionValue(t),this.clearExpression(t,e)}updateElementByParentContainer(e,t){const n=t&&t.parent&&t.parent.schema;if(!n)return;const s=n.contents.findIndex(i=>i.id===e),r=N.cloneDeep(n.contents[s]);n.contents.splice(s,1),n.contents.splice(s,0,r),be()}addNewVariableToViewModel(e,t){const n=e.propertyValue;if(!(n&&typeof n=="object")||!(n.type==="Variable"&&n.isNewVariable))return;const i={id:n.field,category:"locale",code:n.fullPath,name:n.fullPath,type:n.newVariableType||"String"};delete n.newVariableType,delete n.isNewVariable,this.formSchemaUtils.getVariableByCode(i.code)||this.formSchemaUtils.getViewModelById(t).states.push(i)}updateExpressionValue(e){const t=e.propertyValue;if(!((t&&t.type)==="Expression"&&t.expressionInfo))return;const{expressionId:r,expressionInfo:i}=t,{targetId:p,targetType:l,expressionType:a,value:c,message:f}=i,d=this.formSchemaUtils.getModule();d.expressions??(d.expressions=[]);const{expressions:h}=d;let m=h.find(P=>P.target===p);m||(m={target:p,rules:[],targetType:l},h.push(m));const S=m.rules.find(P=>P.type===a);if(S)S.value=c,S.message=f;else{const P={id:r,type:a,value:c,message:f};m.rules.push(P)}delete t.expressionInfo}clearExpression(e,t){const n=e.propertyValue;if(n&&n.type==="Expression")return;const r=e.propertyID,i=this.formSchemaUtils.getExpressions(),p=t.binding?t.binding.field:t.id,l=i.find(a=>a.target===p);!l||!l.rules||(l.rules=l.rules.filter(a=>a.type!==r))}getExpressionOptions(e,t,n){return new Se(this.formSchemaUtils).getExpressionOptions(e,t,n)}getRealTargetType(e){return["response-toolbar-item","tab-toolbar-item","section-toolbar-item"].indexOf(e.type)>-1?"Button":e.binding&&e.binding.field?"Field":"Container"}}class we extends Pe{constructor(e,t){super(e,t)}getPropertyConfig(e){return this.propertyConfig.categories.basic=this.getBasicPropConfig(e),this.propertyConfig.categories.appearance=this.getAppearanceProperties(e),this.propertyConfig.categories.behavior=this.getBehaviorProperties(e),this.propertyConfig}getAppearanceProperties(e){return{description:"",title:"外观",properties:{class:{description:"组件的CSS样式",title:"class样式"},style:{description:"组件的内容样式",title:"style样式"},minWidth:{description:"面板最小宽度",title:"最小宽度(px)",type:"number",editor:{nullable:!0},visible:{resizable:!0}}}}}getBehaviorProperties(e){return{hide:!0,description:"",title:"行为",properties:{position:{description:"",title:"位置",refreshPanelAfterChanged:!0,editor:{type:"combo-list",idField:"value",valueField:"value",data:[{value:"left",name:"左侧"},{value:"center",name:"居中"},{value:"right",name:"右侧"},{value:"top",name:"顶部"},{value:"bottom",name:"底部"}]}},resizable:{description:"",title:"允许拖拽",type:"boolean",visible:e.position!=="center"}}}}}function Ee(o,e){const t=new J,n=o.schema,{canAccept:s}=t.getTemplateRule(o,e);function r(a){return ye().basalDragulaRuleForContainer(a,e)?s:!1}function i(a){return new we(a,e).getPropertyConfig(n)}function p(){return!1}function l(){return!1}return{canAccepts:r,getPropsConfig:i,checkCanMoveComponent:p,checkCanDeleteComponent:l}}const Ve=u.defineComponent({name:"FSplitterPaneDesign",props:D,emits:[],setup(o,e){const t=u.ref(),n=u.inject("designer-host-service"),s=u.inject("design-item-context"),r=Ee(s,n),i=G(t,s,r);i.value.styles="padding:0;box-shadow:none;",i.value.canNested=!1,i.value.canMove=!1,i.value.canDelete=!1,u.onMounted(()=>{t.value.componentInstance=i}),e.expose(i.value);const p=u.inject("splitter"),{useResizeHandleComposition:l}=p,a=Y(o,l),{actualHeight:c,actualWidth:f}=a,d=u.ref(o.position),h=u.computed(()=>{const v={"f-splitter-pane":!0,"f-splitter-pane-main":d.value==="center","has-resize-bar":o.resizable,"f-component-splitter-pane":!0,"drag-container":!0};return v["f-splitter-pane-"+d.value]=!0,R.getCustomClass(v,o==null?void 0:o.customClass)}),m=u.computed(()=>o.resizeHandle?o.resizeHandle.split(",").filter(v=>["e","n","s","w"].find(y=>y===v)):[]),S=u.computed(()=>{const v={};return(f.value&&d.value==="left"||d.value==="right"||m.value.find(y=>y==="e")||m.value.find(y=>y==="w"))&&(v.width=`${f.value}px`),(c.value&&d.value==="bottom"||d.value==="top"||m.value.find(y=>y==="s")||m.value.find(y=>y==="n"))&&(v.height=`${c.value}px`),R.getCustomStyle(v,o==null?void 0:o.customStyle)}),P=u.computed(()=>({"no-drag":!0,"f-splitter-resize-bar":!0,"f-splitter-resize-bar-e":d.value==="left","f-splitter-resize-bar-n":d.value==="bottom","f-splitter-resize-bar-s":d.value==="top","f-splitter-resize-bar-w":d.value==="right"}));function O(){return m.value.length>0?m.value.map(v=>u.createVNode("span",{class:"f-splitter-resize-bar f-splitter-resize-bar-"+v},null)):u.createVNode("span",{class:P.value},null)}return()=>u.createVNode("div",{ref:t,"data-dragref":`${s.schema.id}-container`,class:h.value,style:S.value},[e.slots.default&&e.slots.default(),o.resizable&&O()])}});x.install=o=>{o.component(x.name,x),o.component(j.name,j)},x.register=(o,e,t,n)=>{o.splitter=x,e.splitter=L,o["splitter-pane"]=j,e["splitter-pane"]=X},x.registerDesigner=(o,e,t)=>{o.splitter=he,e.splitter=L,o["splitter-pane"]=Ve,e["splitter-pane"]=X},C.FSplitter=x,C.FSplitterPane=j,C.default=x,C.splitterProps=$,C.splitterPropsResolver=L,Object.defineProperties(C,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});