UNPKG

@farris/ui-vue

Version:

Farris Vue, a Farris Design based Vue3 component library.

2 lines (1 loc) 28.1 kB
(function(C,s){typeof exports=="object"&&typeof module<"u"?s(exports,require("vue"),require("lodash-es"),require("bignumber.js"),require("../common/index.umd.js")):typeof define=="function"&&define.amd?define(["exports","vue","lodash-es","bignumber.js","../common/index.umd.js"],s):(C=typeof globalThis<"u"?globalThis:C||self,s(C.splitter={},C.Vue,C.LodashES))})(this,function(C,s,R){"use strict";var Oe=Object.defineProperty;var De=(C,s,R)=>s in C?Oe(C,s,{enumerable:!0,configurable:!0,writable:!0,value:R}):C[s]=R;var B=(C,s,R)=>De(C,typeof s!="symbol"?s+"":s,R);const q={},U={};function F(n){const{properties:e,title:t,ignore:r}=n,i=r&&Array.isArray(r),o=Object.keys(e).reduce((a,f)=>((!i||!r.find(h=>h===f))&&(a[f]=e[f].type==="object"&&e[f].properties?F(e[f]):R.cloneDeep(e[f].default)),a),{});if(t&&(!i||!r.find(a=>a==="id"))){const a=t.toLowerCase().replace(/-/g,"_");o.id=`${a}_${Math.random().toString().slice(2,6)}`}return o}function I(n){const{properties:e,title:t,required:r}=n;if(r&&Array.isArray(r)){const i=r.reduce((o,a)=>(o[a]=e[a].type==="object"&&e[a].properties?F(e[a]):R.cloneDeep(e[a].default),o),{});if(t&&r.find(o=>o==="id")){const o=t.toLowerCase().replace(/-/g,"_");i.id=`${o}_${Math.random().toString().slice(2,6)}`}return i}return{type:t}}function W(n,e={},t){const r=q[n];if(r){let i=I(r);const o=U[n];return i=o?o({getSchemaByType:W},i,e,t):i,i}return null}function x(n,e){const t=F(e);return Object.keys(t).reduce((r,i)=>(Object.prototype.hasOwnProperty.call(n,i)&&(r[i]&&R.isPlainObject(r[i])&&R.isPlainObject(n[i]||!n[i])?Object.assign(r[i],n[i]||{}):r[i]=n[i]),r),t),t}function _(n,e){return Object.keys(n).filter(r=>n[r]!=null).reduce((r,i)=>{if(e.has(i)){const o=e.get(i);if(typeof o=="string")r[o]=n[i];else{const a=o(i,n[i],n);Object.assign(r,a)}}else r[i]=n[i];return r},{})}function ee(n,e,t=new Map){const r=x(n,e);return _(r,t)}function te(n={}){function e(c,p,u,l){if(typeof u=="number")return l[c].length===u;if(typeof u=="object"){const y=Object.keys(u)[0],m=u[y];if(y==="not")return Number(l[c].length)!==Number(m);if(y==="moreThan")return Number(l[c].length)>=Number(m);if(y==="lessThan")return Number(l[c].length)<=Number(m)}return!1}function t(c,p,u,l){return l[c]&&l[c].propertyValue&&String(l[c].propertyValue.value)===String(u)}const r=new Map([["length",e],["getProperty",t]]);Object.keys(n).reduce((c,p)=>(c.set(p,n[p]),c),r);function i(c,p){const u=c;return typeof p=="number"?[{target:u,operator:"length",param:null,value:Number(p)}]:typeof p=="boolean"?[{target:u,operator:"getProperty",param:c,value:!!p}]:typeof p=="object"?Object.keys(p).map(l=>{if(l==="length")return{target:u,operator:"length",param:null,value:p[l]};const y=l,m=p[l];return{target:u,operator:"getProperty",param:y,value:m}}):[]}function o(c){return Object.keys(c).reduce((u,l)=>{const y=i(l,c[l]);return u.push(...y),u},[])}function a(c,p){if(r.has(c.operator)){const u=r.get(c.operator);return u&&u(c.target,c.param,c.value,p)||!1}return!1}function f(c,p){return o(c).reduce((y,m)=>y&&a(m,p),!0)}function h(c,p){const u=Object.keys(c),l=u.includes("allOf"),y=u.includes("anyOf"),m=l||y,O=(m?c[m?l?"allOf":"anyOf":"allOf"]:[c]).map(d=>f(d,p));return l?!O.includes(!1):O.includes(!0)}return{parseValueSchema:h}}const j={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:"标签页工具栏按钮"},"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:"抽屉"}},ne={},re={};te();function X(n,e,t=new Map,r=(a,f,h,c)=>f,i={},o=a=>a){return q[e.title]=e,U[e.title]=r,ne[e.title]=i,re[e.title]=o,(a={},f=!0)=>{if(!f)return _(a,t);const h=ee(a,e,t),c=Object.keys(n).reduce((p,u)=>(p[u]=n[u].default,p),{});return Object.assign(c,h)}}function Y(n,e){return{customClass:e.class,customStyle:e.style}}const ie=new Map([["appearance",Y]]);function ae(n,e,t){const r=n.getSchemaByType("splitter-pane");return r.appearance={class:"f-col-w6 f-page-content-nav"},r.position="left",e.contents.unshift(r),e}function oe(n,e,t){const r=n.getSchemaByType("splitter-pane");return r.appearance={class:"f-page-content-main"},r.position="main",e.contents.push(r),e}function se(n,e,t){const r=t.parentComponentInstance;return String(r.schema.appearance.class||"").split(" ").includes("f-page-main")&&(e.appearance={class:"f-page-content"}),ae(n,e),oe(n,e),e}function le(n,e,t){return e}const ce={$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"]},pe={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样式"}}}}},k={customStyle:{type:String,default:""},customClass:{type:String,default:""},direction:{Type:String,default:"row"}},E=X(k,ce,ie,se,pe);function G(n){const e=s.ref(-1),t=s.ref(-1),r=s.ref(0),i=s.ref(0),o=s.ref(!1),a=s.ref(!1),f=s.computed(()=>({display:o.value?"block":"none",left:`${r.value}px`})),h=s.computed(()=>({display:a.value?"block":"none",top:`${i.value}px`})),c=s.computed(()=>({display:a.value||o.value?"block":"none"}));function p(l){const y=n.value;if(y){const{left:m}=y.getBoundingClientRect();r.value=l.clientX-m}}function u(l){const y=n.value;if(y){const{top:m}=y.getBoundingClientRect();i.value=l.clientY-m}}return{horizontalResizeHandleStyle:f,verticalResizeHandleStyle:h,resizeOverlayStyle:c,showHorizontalResizeHandle:o,showVerticalResizeHandle:a,horizontalResizeBarPosition:e,verticalResizeBarPosition:t,verticalResizeHandleOffset:i,horizontalResizeHandleOffset:r,draggingHorizontalResizeHandle:p,draggingVerticalResizeHandle:u}}const ue=["moz","ms","webkit"];function fe(){let n=0;return e=>{const t=new Date().getTime(),r=Math.max(0,16-(t-n)),i=setTimeout(()=>{e(t+r)},r);return n=t+r,i}}function de(){if(typeof window>"u")return()=>0;if(window.requestAnimationFrame)return window.requestAnimationFrame.bind(window);const n=ue.filter(e=>`${e}RequestAnimationFrame`in window)[0];return n?window[`${n}RequestAnimationFrame`]:fe()}de();function A(n,e){return((e==null?void 0:e.split(" "))||[]).reduce((r,i)=>(i&&(r[i]=!0),r),n),n}function L(n,e){return((e==null?void 0:e.split(";"))||[]).reduce((r,i)=>{if(i){const o=i.split(":");r[o[0]]=o[1]}return r},n),n}const V=s.defineComponent({name:"FSplitter",props:k,emits:[],setup(n,e){const t=s.ref(),r=G(t),{horizontalResizeHandleStyle:i,verticalResizeHandleStyle:o,resizeOverlayStyle:a}=r;s.provide("splitter",{useResizeHandleComposition:r});const f=s.computed(()=>A({"f-splitter":!0},n==null?void 0:n.customClass)),h=s.computed(()=>{const c={"flex-direction":n.direction==="row"?"row":"column"};return L(c,n==null?void 0:n.customStyle)});return()=>s.createVNode("div",{class:f.value,ref:t,style:h.value},[e.slots.default&&e.slots.default(),s.createVNode("div",{class:"f-splitter-resize-overlay",style:a.value},null),s.createVNode("div",{class:"f-splitter-horizontal-resize-proxy",style:i.value},null),s.createVNode("div",{class:"f-splitter-vertical-resize-proxy",style:o.value},null)])}}),me=new Map([["appearance",Y]]),ye={$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"]},H={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}},J=X(H,ye,me,le);function Q(n,e){const t=s.ref(n.width),r=s.ref(n.height),{horizontalResizeBarPosition:i,horizontalResizeHandleOffset:o,showHorizontalResizeHandle:a,showVerticalResizeHandle:f,verticalResizeBarPosition:h,verticalResizeHandleOffset:c,draggingHorizontalResizeHandle:p,draggingVerticalResizeHandle:u}=e;let l="",y,m;function S(b){if((l==="left"||l==="right")&&m){const{left:d}=m.getBoundingClientRect(),{width:g}=y.getBoundingClientRect(),D=b.clientX-d,z=l==="left"?(g||0)+(D-i.value):(g||0)-(D-i.value);t.value=n.minWidth>0?Math.max(n.minWidth,z):z}if((l==="top"||l==="bottom")&&m){const{top:d}=m.getBoundingClientRect(),{height:g}=y.getBoundingClientRect(),D=b.clientY-d,z=l==="top"?(g||0)+(D-h.value):(g||0)-(D-h.value);r.value=n.minHeight>0?Math.max(n.minHeight,z):z}o.value=0,c.value=0,i.value=-1,h.value=-1,a.value=!1,f.value=!1,document.removeEventListener("mousemove",p),document.removeEventListener("mouseup",S),document.body.style.userSelect="",l="",y=null,m=null}function T(b,d,g){if(l=d,y=g,a.value=!0,m=b.composedPath().find(z=>z.className.split(" ")[0]==="f-splitter"),m){const{left:z}=m.getBoundingClientRect();o.value=b.clientX-z,i.value=b.clientX-z,document.addEventListener("mousemove",p),document.addEventListener("mouseup",S),document.body.style.userSelect="none"}}function O(b,d,g){if(l=d,y=g,f.value=!0,m=b.composedPath().find(z=>z.className.split(" ")[0]==="f-splitter"),m){const{top:z}=m.getBoundingClientRect();c.value=b.clientY-z,h.value=b.clientY-z,document.addEventListener("mousemove",u),document.addEventListener("mouseup",S),document.body.style.userSelect="none"}}return{actualWidth:t,actualHeight:r,onClickSplitterHorizontalResizeBar:T,onClickSplitterVerticalResizeBar:O}}const N=s.defineComponent({name:"FSplitterPane",props:H,emits:[],setup(n,e){const t=s.ref(),r=s.inject("splitter"),{useResizeHandleComposition:i}=r,o=Q(n,i),{actualHeight:a,actualWidth:f,onClickSplitterHorizontalResizeBar:h,onClickSplitterVerticalResizeBar:c}=o,p=s.ref(n.position),u=s.computed(()=>{const d={"f-splitter-pane":!0,"f-splitter-pane-main":p.value==="center","has-resize-bar":n.resizable};return d["f-splitter-pane-"+p.value]=!0,A(d,n==null?void 0:n.customClass)}),l=s.computed(()=>n.resizeHandle?n.resizeHandle.split(",").filter(d=>["e","n","s","w"].find(g=>g===d)):[]),y=s.computed(()=>{const d={};return(f.value||f.value===0)&&(p.value==="left"||p.value==="right"||l.value.find(g=>g==="e")||l.value.find(g=>g==="w"))&&(d.width=`${f.value}px`),(a.value||a.value===0)&&(p.value==="bottom"||p.value==="top"||l.value.find(g=>g==="s")||l.value.find(g=>g==="n"))&&(d.height=`${a.value}px`),L(d,n==null?void 0:n.customStyle)}),m=s.computed(()=>({"f-splitter-resize-bar":!0,"f-splitter-resize-bar-e":p.value==="left","f-splitter-resize-bar-n":p.value==="bottom","f-splitter-resize-bar-s":p.value==="top","f-splitter-resize-bar-w":p.value==="right"}));function S(d){return{e:"left",w:"right",s:"top",n:"bottom"}[d]||d}function T(d,g){g=S(g),["left","right"].find(D=>D===g)&&h(d,g,t.value),["top","bottom"].find(D=>D===g)&&c(d,g,t.value)}function O(){return l.value.length>0?l.value.map(d=>s.createVNode("span",{class:"f-splitter-resize-bar f-splitter-resize-bar-"+d,onMousedown:g=>T(g,d)},null)):s.createVNode("span",{class:m.value,onMousedown:d=>T(d,p.value)},null)}function b(){f.value=n.width,a.value=n.height,y.value}return e.expose({reset:b}),()=>s.createVNode("div",{ref:t,class:u.value,style:y.value},[e.slots.default&&e.slots.default(),n.resizable&&O()])}});function Z(n,e,t){var z;const r=t&&t.getStyles&&t.getStyles()||"",i=t&&t.getDesignerClass&&t.getDesignerClass()||"",o=s.ref();function a(){return(e==null?void 0:e.schema.componentType)==="frame"?!1:t&&t.checkCanMoveComponent?t.checkCanMoveComponent():!0}function f(){return!1}function h(){return(e==null?void 0:e.schema.componentType)==="frame"?!1:t&&t.checkCanDeleteComponent?t.checkCanDeleteComponent():!0}function c(){return(e==null?void 0:e.schema.componentType)==="frame"?!0:t&&t.hideNestedPaddingInDesginerView?t.hideNestedPaddingInDesginerView():!1}function p(v){if(!v||!v.value)return null;if(v.value.schema&&v.value.schema.type==="component")return v.value;const M=s.ref(v==null?void 0:v.value.parent),P=p(M);return P||null}function u(v=e){var $;if(t!=null&&t.getDraggableDesignItemElement)return t.getDraggableDesignItemElement(v);const{componentInstance:M,designerItemElementRef:P}=v;if(!M||!M.value)return null;const{getCustomButtons:w}=M.value;return M.value.canMove||w&&(($=w())!=null&&$.length)?P:u(v.parent)}function l(v){return!!t&&t.canAccepts(v)}function y(){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(v,M){var P;!v||!M||(t!=null&&t.onAcceptMovedChildElement&&t.onAcceptMovedChildElement(v,M),(P=e==null?void 0:e.setupContext)==null||P.emit("dragEnd"))}function T(v,M){const{componentType:P}=v;let w=W(P,v,M);t&&t.onResolveNewComponentSchema&&(w=t.onResolveNewComponentSchema(v,w));const $=P.toLowerCase().replace(/-/g,"_");return w&&!w.id&&w.type===P&&(w.id=`${$}_${Math.random().toString().slice(2,6)}`),w}function O(v){v&&t!=null&&t.onChildElementMovedOut&&t.onChildElementMovedOut(v)}function b(...v){if(t&&t.getPropsConfig)return t.getPropsConfig(...v)}function d(){t&&t.onRemoveComponent&&t.onRemoveComponent(),e!=null&&e.schema.contents&&e.schema.contents.map(v=>{let M=v.id;v.type==="component-ref"&&(M=v.component);const P=n.value.querySelectorAll(`#${M}-design-item`);P!=null&&P.length&&Array.from(P).map(w=>{var $;($=w==null?void 0:w.componentInstance)!=null&&$.value.onRemoveComponent&&w.componentInstance.value.onRemoveComponent()})})}function g(){if(t&&t.getCustomButtons)return t.getCustomButtons()}function D(v){if(t&&t.onPropertyChanged)return t.onPropertyChanged(v)}return o.value={canMove:a(),canSelectParent:f(),canDelete:h(),canNested:!c(),contents:e==null?void 0:e.schema.contents,elementRef:n,parent:(z=e==null?void 0:e.parent)==null?void 0:z.componentInstance,schema:e==null?void 0:e.schema,styles:r,designerClass:i,canAccepts:l,getBelongedComponentInstance:p,getDraggableDesignItemElement:u,getDraggingDisplayText:y,getPropConfig:b,getDragScopeElement:m,onAcceptMovedChildElement:S,onChildElementMovedOut:O,addNewChildComponentSchema:T,triggerBelongedComponentToMoveWhenMoved:!!t&&t.triggerBelongedComponentToMoveWhenMoved||s.ref(!1),triggerBelongedComponentToDeleteWhenDeleted:!!t&&t.triggerBelongedComponentToDeleteWhenDeleted||s.ref(!1),onRemoveComponent:d,getCustomButtons:g,onPropertyChanged:D},o}class K{getTemplateRule(e,t){const r=t==null?void 0:t.formSchemaUtils,i=r==null?void 0:r.getFormTemplateRule(),o={canAccept:!0,canDelete:!0,canMove:!0};if(!i)return o;const a=this.getComponentContext(e),{componentClassList:f}=a;return f.forEach(h=>{if(!h||!i[h])return;const{canMove:c,canDelete:p,canAccept:u}=i[h];o.canMove=o.canMove&&this.resolveRuleValue(c,a),o.canDelete=o.canDelete&&this.resolveRuleValue(p,a),o.canAccept=o.canAccept&&this.resolveRuleValue(u,a)}),o}resolveRuleValue(e,t){return typeof e=="boolean"?e:this.parseRuleValueSchema(e,t)}parseRuleValueSchema(e,t){const r=e.invalidContext||[];let i=!0;for(const o of r){if(o.firstLevelChild){if(o.firstLevelChild.class){const{firstLevelChildClassList:a}=t;if(a&&!a.includes(o.firstLevelChild.class)){i=!1;continue}}if(o.firstLevelChild.type){const{firstLevelChildSchema:a}=t;if(!a||a.type!==o.firstLevelChild.type){i=!1;continue}}}if(o.secondLevelChild){if(o.secondLevelChild.class){const{secondLevelChildClassList:a}=t;if(a&&!a.includes(o.secondLevelChild.class)){i=!1;continue}}if(o.secondLevelChild.type){const{secondLevelChildSchema:a}=t;if(!a||a.type!==o.secondLevelChild.type){i=!1;continue}}}if(o.parent){if(o.parent.class){const{parentClassList:a}=t;if(a&&!a.includes(o.parent.class)){i=!1;continue}}if(o.parent.type){const{parentSchema:a}=t;if(a&&a.type!==o.parent.type){i=!1;continue}}}i=!0;break}return!i}getComponentContext(e){var S,T,O,b;const t=e.schema,r=t.appearance&&t.appearance.class||"",i=r.split(" ")||[],o=t.contents||[],a=o.length?o[0]:null,f=a&&a.appearance?a.appearance.class:"",h=f?f.split(" "):[],c=(S=a==null?void 0:a.contents)!=null&&S.length?a==null?void 0:a.contents[0]:null,p=c&&c.appearance?c.appearance.class:"",u=p?p.split(" "):[],l=t.type==="component"?(O=(T=e.parent)==null?void 0:T.parent)==null?void 0:O.schema:(b=e.parent)==null?void 0:b.schema,y=l&&l.appearance&&l.appearance.class||"",m=y?y.split(" "):[];return{componentClass:r,componentClassList:i,childContents:o,firstLevelChildSchema:a,firstLevelChildClass:f,firstLevelChildClassList:h,secondLevelChildSchema:c,secondLevelChildClass:p,secondLevelChildClassList:u,parentSchema:l,parentClass:y,parentClassList:m}}}function he(n,e){const t=new K,{canMove:r,canDelete:i}=t.getTemplateRule(n,e);function o(){return!1}function a(){return i}function f(){return r}function h(){return!0}return{canAccepts:o,checkCanDeleteComponent:a,checkCanMoveComponent:f,hideNestedPaddingInDesginerView:h}}const ve=s.defineComponent({name:"FSplitterDesign",props:k,emits:[],setup(n,e){const t=s.ref(),r=s.inject("designer-host-service"),i=s.inject("design-item-context"),o=he(i,r),a=Z(t,i,o);a.value.canNested=!1;const f=G(t),{horizontalResizeHandleStyle:h,verticalResizeHandleStyle:c,resizeOverlayStyle:p}=f;s.provide("splitter",{useResizeHandleComposition:f});const u=s.computed(()=>A({"f-splitter":!0},n==null?void 0:n.customClass)),l=s.computed(()=>{const y={"flex-direction":n.direction==="row"?"row":"column"};return L(y,n==null?void 0:n.customStyle)});return s.onMounted(()=>{t.value.componentInstance=a}),e.expose(a.value),()=>s.createVNode("div",{class:u.value,ref:t,style:l.value},[e.slots.default&&e.slots.default(),s.createVNode("div",{class:"f-splitter-resize-overlay",style:p.value},null),s.createVNode("div",{class:"f-splitter-horizontal-resize-proxy",style:h.value},null),s.createVNode("div",{class:"f-splitter-vertical-resize-proxy",style:c.value},null)])}});function ge(){function n(e,t){var a;if(!e)return!1;const r=((a=e.targetContainer)==null?void 0:a.componentInstance)&&e.targetContainer.componentInstance.value;if(!r)return!1;const i=r.schema.type,o=t==null?void 0:t.formSchemaUtils.getComponentById(r.belongedComponentId);return!((e.componentCategory==="input"||e.componentType==="form-group")&&![j["response-layout-item"].type,j["response-form"].type,j.fieldset.type].includes(i)||(e.componentType===j.tabs.type||e.componentType===j.section.type)&&((o==null?void 0:o.componentType)!=="frame"||![j["content-container"].type,j["splitter-pane"].type,j["response-layout-item"].type].includes(i))||e.componentType===j["query-solution"].type||e.componentType===j.fieldset.type&&i!==j["response-form"].type)}return{basalDragulaRuleForContainer:n}}const be=s.ref(0);function Ce(){be.value++}const ze=s.ref(0);class Pe{constructor(e,t){B(this,"componentId");B(this,"viewModelId");B(this,"eventsEditorUtils");B(this,"formSchemaUtils");B(this,"formMetadataConverter");B(this,"designViewModelUtils");B(this,"designViewModelField");B(this,"controlCreatorUtils");B(this,"designerHostService");B(this,"schemaService",null);B(this,"metadataService",null);B(this,"propertyConfig",{type:"object",categories:{}});var r;this.componentId=e,this.designerHostService=t,this.eventsEditorUtils=t.eventsEditorUtils,this.formSchemaUtils=t.formSchemaUtils,this.formMetadataConverter=t.formMetadataConverter,this.viewModelId=((r=this.formSchemaUtils)==null?void 0:r.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 r;const t=e.binding&&e.binding.type==="Form"&&e.binding.field;if(t){if(!this.designViewModelField){const i=this.designViewModelUtils.getDgViewModel(this.viewModelId);this.designViewModelField=i.fields.find(o=>o.id===t)}e.updateOn=(r=this.designViewModelField)==null?void 0:r.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",editable:!1,data:[{value:e.type,name:j[e.type].name}]}}}}}getAppearanceConfig(e=null){return{title:"外观",description:"Appearance",properties:{class:{title:"class样式",type:"string",description:"组件的CSS样式",$converter:"/converter/appearance.converter"},style:{title:"style样式",type:"string",description:"组件的样式",$converter:"/converter/appearance.converter"}},setPropertyRelates(t,r){if(t)switch(t&&t.propertyID){case"class":case"style":{ze.value++;break}}}}}updateElementByParentContainer(e,t){const r=t&&t.parent&&t.parent.schema;if(!r)return;const i=r.contents.findIndex(a=>a.id===e),o=R.cloneDeep(r.contents[i]);r.contents.splice(i,1),r.contents.splice(i,0,o),Ce()}}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 Se(n,e){const t=new K,r=n.schema,{canAccept:i}=t.getTemplateRule(n,e);function o(c){return ge().basalDragulaRuleForContainer(c,e)?i:!1}function a(c){return new we(c,e).getPropertyConfig(r)}function f(){return!1}function h(){return!1}return{canAccepts:o,getPropsConfig:a,checkCanMoveComponent:f,checkCanDeleteComponent:h}}const Me=s.defineComponent({name:"FSplitterPaneDesign",props:H,emits:[],setup(n,e){const t=s.ref(),r=s.inject("designer-host-service"),i=s.inject("design-item-context"),o=Se(i,r),a=Z(t,i,o);a.value.styles="padding:0;box-shadow:none;",a.value.canNested=!1,a.value.canMove=!1,a.value.canDelete=!1,s.onMounted(()=>{t.value.componentInstance=a}),e.expose(a.value);const f=s.inject("splitter"),{useResizeHandleComposition:h}=f,c=Q(n,h),{actualHeight:p,actualWidth:u}=c,l=s.ref(n.position),y=s.computed(()=>{const b={"f-splitter-pane":!0,"f-splitter-pane-main":l.value==="center","has-resize-bar":n.resizable,"f-component-splitter-pane":!0,"drag-container":!0};return b["f-splitter-pane-"+l.value]=!0,A(b,n==null?void 0:n.customClass)}),m=s.computed(()=>n.resizeHandle?n.resizeHandle.split(",").filter(b=>["e","n","s","w"].find(d=>d===b)):[]),S=s.computed(()=>{const b={};return(u.value&&l.value==="left"||l.value==="right"||m.value.find(d=>d==="e")||m.value.find(d=>d==="w"))&&(b.width=`${u.value}px`),(p.value&&l.value==="bottom"||l.value==="top"||m.value.find(d=>d==="s")||m.value.find(d=>d==="n"))&&(b.height=`${p.value}px`),L(b,n==null?void 0:n.customStyle)}),T=s.computed(()=>({"no-drag":!0,"f-splitter-resize-bar":!0,"f-splitter-resize-bar-e":l.value==="left","f-splitter-resize-bar-n":l.value==="bottom","f-splitter-resize-bar-s":l.value==="top","f-splitter-resize-bar-w":l.value==="right"}));function O(){return m.value.length>0?m.value.map(b=>s.createVNode("span",{class:"f-splitter-resize-bar f-splitter-resize-bar-"+b},null)):s.createVNode("span",{class:T.value},null)}return()=>s.createVNode("div",{ref:t,"data-dragref":`${i.schema.id}-container`,class:y.value,style:S.value},[e.slots.default&&e.slots.default(),n.resizable&&O()])}});V.install=n=>{n.component(V.name,V),n.component(N.name,N)},V.register=(n,e,t,r)=>{n.splitter=V,e.splitter=E,n["splitter-pane"]=N,e["splitter-pane"]=J},V.registerDesigner=(n,e,t)=>{n.splitter=ve,e.splitter=E,n["splitter-pane"]=Me,e["splitter-pane"]=J},C.FSplitter=V,C.FSplitterPane=N,C.default=V,C.splitterProps=k,C.splitterPropsResolver=E,Object.defineProperties(C,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});