UNPKG

@farris/ui-vue

Version:

Farris Vue, a Farris Design based Vue3 component library.

2 lines (1 loc) 28.9 kB
(function(C,a){typeof exports=="object"&&typeof module<"u"?a(exports,require("vue"),require("../dynamic-resolver/index.umd.js"),require("../common/index.umd.js"),require("../designer-canvas/index.umd.js"),require("lodash-es"),require("../notify/index.umd.js")):typeof define=="function"&&define.amd?define(["exports","vue","../dynamic-resolver/index.umd.js","../common/index.umd.js","../designer-canvas/index.umd.js","lodash-es","../notify/index.umd.js"],a):(C=typeof globalThis<"u"?globalThis:C||self,a(C.splitter={},C.Vue,C.dynamicResolver,C.common,C.designerCanvas,C.LodashES,C.notify))})(this,function(C,a,z,E,R,j,$){"use strict";var ie=Object.defineProperty;var se=(C,a,z)=>a in C?ie(C,a,{enumerable:!0,configurable:!0,writable:!0,value:z}):C[a]=z;var v=(C,a,z)=>se(C,typeof a!="symbol"?a+"":a,z);const U=new Map([["appearance",z.resolveAppearance]]);function A(l,e,t){const i=l.getSchemaByType("splitter-pane");return i.appearance={class:"f-col-w6 f-page-content-nav"},i.position="left",e.contents.unshift(i),e}function q(l,e,t){const i=l.getSchemaByType("splitter-pane");return i.appearance={class:"f-page-content-main"},i.position="main",e.contents.push(i),e}function D(l,e,t){const i=t.parentComponentInstance;return String(i.schema.appearance.class||"").split(" ").includes("f-page-main")&&(e.appearance={class:"f-page-content"}),A(l,e),q(l,e),e}function W(l,e,t){return e}const L={$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"]},I={customStyle:{type:String,default:""},customClass:{type:String,default:""},direction:{Type:String,default:"row"}},B=z.createPropsResolver(I,L,U,D);function T(l){const e=a.ref(-1),t=a.ref(-1),i=a.ref(0),s=a.ref(0),r=a.ref(!1),n=a.ref(!1),d=a.computed(()=>({display:r.value?"block":"none",left:`${i.value}px`})),o=a.computed(()=>({display:n.value?"block":"none",top:`${s.value}px`})),u=a.computed(()=>({display:n.value||r.value?"block":"none"}));function c(p){const y=l.value;if(y){const{left:g}=y.getBoundingClientRect();i.value=p.clientX-g}}function m(p){const y=l.value;if(y){const{top:g}=y.getBoundingClientRect();s.value=p.clientY-g}}return{horizontalResizeHandleStyle:d,verticalResizeHandleStyle:o,resizeOverlayStyle:u,showHorizontalResizeHandle:r,showVerticalResizeHandle:n,horizontalResizeBarPosition:e,verticalResizeBarPosition:t,verticalResizeHandleOffset:s,horizontalResizeHandleOffset:i,draggingHorizontalResizeHandle:c,draggingVerticalResizeHandle:m}}const V=a.defineComponent({name:"FSplitter",props:I,emits:[],setup(l,e){const t=a.ref(),i=T(t),{horizontalResizeHandleStyle:s,verticalResizeHandleStyle:r,resizeOverlayStyle:n}=i;a.provide("splitter",{useResizeHandleComposition:i});const d=a.computed(()=>{const u={"f-splitter":!0};return E.getCustomClass(u,l==null?void 0:l.customClass)}),o=a.computed(()=>{const u={"flex-direction":l.direction==="row"?"row":"column"};return E.getCustomStyle(u,l==null?void 0:l.customStyle)});return()=>a.createVNode("div",{class:d.value,ref:t,style:o.value},[e.slots.default&&e.slots.default(),a.createVNode("div",{class:"f-splitter-resize-overlay",style:n.value},null),a.createVNode("div",{class:"f-splitter-horizontal-resize-proxy",style:s.value},null),a.createVNode("div",{class:"f-splitter-vertical-resize-proxy",style:r.value},null)])}}),_=new Map([["appearance",z.resolveAppearance]]),X={$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},resizeHandle:{description:"",type:"string",default:""},visible:{description:"",type:"number",default:!0}},required:["id","type","contents"]},N={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}},O=z.createPropsResolver(N,X,_,W);function k(l,e){const t=a.ref(l.width),i=a.ref(l.height),{horizontalResizeBarPosition:s,horizontalResizeHandleOffset:r,showHorizontalResizeHandle:n,showVerticalResizeHandle:d,verticalResizeBarPosition:o,verticalResizeHandleOffset:u,draggingHorizontalResizeHandle:c,draggingVerticalResizeHandle:m}=e;let p="",y,g;function w(b){if((p==="left"||p==="right")&&g){const{left:f}=g.getBoundingClientRect(),{width:h}=y.getBoundingClientRect(),P=b.clientX-f,x=p==="left"?(h||0)+(P-s.value):(h||0)-(P-s.value);t.value=l.minWidth>0?Math.max(l.minWidth,x):x}if((p==="top"||p==="bottom")&&g){const{top:f}=g.getBoundingClientRect(),{height:h}=y.getBoundingClientRect(),P=b.clientY-f,x=p==="top"?(h||0)+(P-o.value):(h||0)-(P-o.value);i.value=l.minHeight>0?Math.max(l.minHeight,x):x}r.value=0,u.value=0,s.value=-1,o.value=-1,n.value=!1,d.value=!1,document.removeEventListener("mousemove",c),document.removeEventListener("mouseup",w),document.body.style.userSelect="",p="",y=null,g=null}function S(b,f,h){if(p=f,y=h,n.value=!0,g=b.composedPath().find(x=>x.className.split(" ")[0]==="f-splitter"),g){const{left:x}=g.getBoundingClientRect();r.value=b.clientX-x,s.value=b.clientX-x,document.addEventListener("mousemove",c),document.addEventListener("mouseup",w),document.body.style.userSelect="none"}}function M(b,f,h){if(p=f,y=h,d.value=!0,g=b.composedPath().find(x=>x.className.split(" ")[0]==="f-splitter"),g){const{top:x}=g.getBoundingClientRect();u.value=b.clientY-x,o.value=b.clientY-x,document.addEventListener("mousemove",m),document.addEventListener("mouseup",w),document.body.style.userSelect="none"}}return{actualWidth:t,actualHeight:i,onClickSplitterHorizontalResizeBar:S,onClickSplitterVerticalResizeBar:M}}const H=a.defineComponent({name:"FSplitterPane",props:N,emits:[],setup(l,e){const t=a.ref(),i=a.inject("splitter"),{useResizeHandleComposition:s}=i,r=k(l,s),{actualHeight:n,actualWidth:d,onClickSplitterHorizontalResizeBar:o,onClickSplitterVerticalResizeBar:u}=r,c=a.ref(l.position),m=a.computed(()=>{const f={"f-splitter-pane":!0,"f-splitter-pane-main":c.value==="center","has-resize-bar":l.resizable};return f["f-splitter-pane-"+c.value]=!0,E.getCustomClass(f,l==null?void 0:l.customClass)}),p=a.computed(()=>l.resizeHandle?l.resizeHandle.split(",").filter(f=>["e","n","s","w"].find(h=>h===f)):[]),y=a.computed(()=>{const f={};return(d.value||d.value===0)&&(c.value==="left"||c.value==="right"||p.value.find(h=>h==="e")||p.value.find(h=>h==="w"))&&(f.width=`${d.value}px`),(n.value||n.value===0)&&(c.value==="bottom"||c.value==="top"||p.value.find(h=>h==="s")||p.value.find(h=>h==="n"))&&(f.height=`${n.value}px`),E.getCustomStyle(f,l==null?void 0:l.customStyle)}),g=a.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 w(f){return{e:"left",w:"right",s:"top",n:"bottom"}[f]||f}function S(f,h){h=w(h),["left","right"].find(P=>P===h)&&o(f,h,t.value),["top","bottom"].find(P=>P===h)&&u(f,h,t.value)}function M(){return p.value.length>0?p.value.map(f=>a.createVNode("span",{class:"f-splitter-resize-bar f-splitter-resize-bar-"+f,onMousedown:h=>S(h,f)},null)):a.createVNode("span",{class:g.value,onMousedown:f=>S(f,c.value)},null)}function b(){d.value=l.width,n.value=l.height,y.value}return e.expose({reset:b}),()=>a.createVNode("div",{ref:t,class:m.value,style:y.value},[e.slots.default&&e.slots.default(),l.resizable&&M()])}});function Y(l){const{formSchemaUtils:e,formStateMachineUtils:t}=l;function i(o,u=""){return{path:u+o.code,field:o.id,fullPath:o.code}}function s(o,u=""){const c=e.getViewModelById(o);return c?c.states.map(m=>i(m,u)):[]}function r(o){const u=e.getRootViewModelId(),c=s(o);if(o===u)return c;const m=s(u,"root-component.");return[...c,...m]}function n(o){return o.binding&&o.binding.path||o.id||""}function d(){return t&&t.getRenderStates()||[]}return{getVariables:r,getControlName:n,getStateMachines:d}}class G{constructor(e){v(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'"}]);v(this,"expressionNames",{compute:"计算表达式",dependency:"依赖表达式",validate:"验证表达式",dataPicking:"帮助前表达式",visible:"可见表达式",readonly:"只读表达式",required:"必填表达式"});v(this,"getExpressionConverter",(e,t)=>({convertFrom:(i,s,r,n)=>{const d=r.getExpressionRuleValue(e,t||s);return d&&d.value||""},convertTo:(i,s,r,n,d)=>{var o;if(s==="dataPicking"&&(r!=null&&r.target)){const u=`${r.target}_dataPicking`;((o=r.rules)==null?void 0:o.some(m=>m.id===u&&m.value))?i.dictPickingExpressionId=u:delete i.dictPickingExpressionId}n.updateExpression(r)}}));this.formSchemaService=e}getExpressionRule(e,t){const i=this.getExpressionData();if(!i)return"";const s=i.find(n=>n.target===e);if(!s)return"";const r=s.rules.find(n=>n.type===t);return r||""}getContextFormVariables(){const{module:e}=this.formSchemaService.getFormSchema();if(!e.viewmodels||e.viewmodels.length===0)return[];const t=this.formSchemaService.getRootViewModelId(),i=this.formSchemaService.getViewModelById(t);if(!i||!i.states||i.states.length===0)return[];const s=[];return i.states.filter(r=>r.category==="remote").forEach(r=>{s.push({key:r.code,name:r.name,description:r.name,category:r.category})}),s}createTreeNode(e,t,i="label"){return{id:e.id,name:e.name,bindingPath:e[i],parents:t,type:"field"}}buildEntityFieldsTreeData(e=null,t){const i=[];return e==null||e.forEach(s=>{var d;const r=this.createTreeNode(s,t);let n=[];(d=s.type)!=null&&d.fields&&(n=this.buildEntityFieldsTreeData(s.type.fields,[...t,s.label])),i.push({data:r,children:n,expanded:!0})}),i}buildChildEntityTreeData(e=null,t){const i=[];return e==null||e.forEach(s=>{var o,u;const r=this.createTreeNode(s,t);r.type="entity";const n=this.buildEntityFieldsTreeData((o=s.type)==null?void 0:o.fields,[...t,s.label]),d=this.buildChildEntityTreeData((u=s.type)==null?void 0:u.entities,[...t,s.label]);d!=null&&d.length&&(n==null||n.push(...d)),i.push({data:r,children:n||[],expanded:!0})}),i}getEntitiesTreeData(){const e=this.formSchemaService.getSchemaEntities();if(!(e!=null&&e.length))return[];const t=e[0];if(!(t!=null&&t.type))return[];const i=this.buildEntityFieldsTreeData(t.type.fields,[t.code]),s=this.buildChildEntityTreeData(t.type.entities,[t.code]);return s!=null&&s.length&&(i==null||i.push(...s)),{entityCode:t.code,fields:[{data:this.createTreeNode(t,[],"code"),children:i||[]}]}}getEntitiesAndVariables(){return{entities:this.getEntitiesTreeData(),variables:{session:{name:"系统变量",items:this.sessionVariables,visible:!1},forms:{name:"表单变量",items:this.getContextFormVariables(),visible:!0}}}}onBeforeOpenExpression(e,t,i){const s=i==="Field"?e.binding.field:e.id,r=this.getExpressionRule(s,t),n=this.getEntitiesAndVariables(),d={message:["validate","required","dataPicking"].includes(t)&&r?r.message:"",...n};return r.messageType!=null&&(d.messageType=r.messageType),d}buildRule(e,t,i,s){const{expression:r,message:n,messageType:d}=t,o={id:`${e}_${i}`,type:i,value:r};return(i==="validate"||i==="dataPicking"||i==="required")&&(o.message=n),i==="dataPicking"&&(o.messageType=d),i==="validate"&&s&&(o.elementId=s),o}getExpressionData(){const{expressions:e}=this.formSchemaService.getFormSchema().module;return e||[]}updateExpression(e,t,i,s){const r=t==="Field"?e.binding.field:e.id,n=this.buildRule(r,i,s,e.type==="form-group"?e.id:"");let o=this.getExpressionData().find(c=>c.targetType===t&&c.target===r);const u=c=>c.value.trim()==="";if(o){const c=o.rules.find(m=>m.id===n.id);if(c)u(n)?o.rules=o.rules.filter(m=>m.id!==n.id):(Object.assign(c,n),s==="validate"&&e.type==="form-group"&&(c.elementId=e.id));else{if(u(n))return null;o.rules=o.rules||[],o.rules.push(n)}}else{if(u(n))return null;o={target:`${r}`,rules:[n],targetType:t}}return o}getExpressionEditorOptions(e,t,i,s){return i.reduce((r,n)=>{var o,u;const d=t==="Field"?(o=e==null?void 0:e.binding)==null?void 0:o.field:e.id;return r[n]={hide:t==="Field"?!!((u=e==null?void 0:e.binding)!=null&&u.field):!1,description:"",title:this.expressionNames[n],type:"string",$converter:this.getExpressionConverter(d),refreshPanelAfterChanged:!0,editor:{type:"expression-editor",singleExpand:!1,dialogTitle:`${this.expressionNames[n]}编辑器`,showMessage:n==="validate"||n==="dataPicking"||n==="required",showMessageType:n==="dataPicking",beforeOpen:()=>this.onBeforeOpenExpression(e,n,t),onSubmitModal:c=>{const m=this.updateExpression(e,t,c,n);if(s){const p=this.buildRule(d,c,n);s(p)}return m}}},r},{})}getExpressionInfo(e,t,i){const s=t==="Field"?e.binding.field:e.id,r=this.getExpressionRule(s,i),n={value:r&&r.value,targetId:s,targetType:t,expressionType:i};return r&&r.message&&(n.message=r.message),n}getExpressionConfig(e,t,i=["compute","dependency","validate"],s){return{description:"表达式",title:"表达式",hide:!e.binding,properties:{...this.getExpressionEditorOptions(e,t,i,s)}}}getExpressionOptions(e,t,i){const s=this.getExpressionInfo(e,t,i);return{dialogTitle:`${this.expressionNames[i]||"表达式"}编辑器`,singleExpand:!1,showMessage:i==="required",beforeOpen:()=>this.onBeforeOpenExpression(e,i,t),expressionInfo:s}}}class F{constructor(e,t){v(this,"componentId");v(this,"viewModelId");v(this,"eventsEditorUtils");v(this,"formSchemaUtils");v(this,"formMetadataConverter");v(this,"designViewModelUtils");v(this,"designViewModelField");v(this,"controlCreatorUtils");v(this,"designerHostService");v(this,"designerContext");v(this,"modalService",null);v(this,"formRule",null);v(this,"schemaService",null);v(this,"metadataService",null);v(this,"propertyConfig",{type:"object",categories:{}});v(this,"expressionProperty");var i;this.componentId=e,this.designerHostService=t,this.eventsEditorUtils=t.eventsEditorUtils,this.formSchemaUtils=t.formSchemaUtils,this.formMetadataConverter=t.formMetadataConverter,this.viewModelId=((i=this.formSchemaUtils)==null?void 0:i.getViewModelIdByComponentId(e))||"",this.designViewModelUtils=t.designViewModelUtils,this.controlCreatorUtils=t.controlCreatorUtils,this.metadataService=t.metadataService,this.schemaService=t.schemaService,this.designerContext=t.designerContext,this.modalService=t.modalService,this.expressionProperty=new G(this.formSchemaUtils)}getFormDesignerInstance(){var e,t;return(t=(e=this.designerContext)==null?void 0:e.instances)==null?void 0:t.formDesigner.value}getTableInfo(){var e;return(e=this.schemaService)==null?void 0:e.getTableInfoByViewModelId(this.viewModelId)}setDesignViewModelField(e){var i;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=(i=this.designViewModelField)==null?void 0:i.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:R.DgControl[e.type]&&R.DgControl[e.type].name}]}}}}}getAppearanceConfig(e=null,t={},i){const s={title:"外观",description:"Appearance"},r={class:{title:"class样式",type:"string",description:"组件的CSS样式",$converter:"/converter/appearance.converter",parentPropertyID:"appearance"},style:{title:"style样式",type:"string",description:"组件的样式",$converter:"/converter/appearance.converter",parentPropertyID:"appearance"}};for(const n in t)r[n]=Object.assign(r[n]||{},t[n]);return{...s,properties:{...r},setPropertyRelates(n,d){if(n){switch(n&&n.propertyID){case"class":case"style":{R.canvasChanged.value++;break}}i&&i(n,e,d)}}}}getPropertyEditorParams(e,t=[],i="visible",s={},r={},n=""){const{getVariables:d,getControlName:o,getStateMachines:u}=Y(this.designerHostService),c=this.getRealTargetType(e),m=t&&t.length>0?t:["Const","Variable","StateMachine","Expression"],p={type:"property-editor",propertyTypes:m};return m.map(y=>{switch(y){case"Const":Object.assign(p,{constType:"enum",constEnums:[{id:!0,name:"是"},{id:!1,name:"否"}]},s);break;case"Expression":p.expressionConfig=this.getExpressionOptions(e,c,n||i);break;case"StateMachine":p.stateMachines=u();break;case"Variable":Object.assign(p,{controlName:o(e),newVariablePrefix:"is",newVariableType:"Boolean",variables:d(this.viewModelId),parentComponentId:this.componentId==="root-component"?"":"root-component",onBeforeOpenVariables:g=>{g.value=d(this.viewModelId)}},r),this.designerContext.designerMode==="PC_RTC"&&(p.newVariablePrefix="ext_"+p.newVariablePrefix);break}}),p}getVisibleProperty(e,t=""){var r;let i=["Const","Variable","StateMachine","Expression"];return t==="gridFieldEditor"?i=["Const","Expression"]:t==="form-group"&&!((r=e.binding)!=null&&r.field)&&(i=["Const","Variable","StateMachine"]),{visible:{title:"是否可见",type:"boolean",description:"运行时组件是否可见",editor:this.getPropertyEditorParams(e,i,"visible")}}}getBehaviorConfig(e,t="",i={},s){const r={title:"行为",description:""},n=this.getVisibleProperty(e,t);for(const o in i)n[o]=Object.assign(n[o]||{},i[o]);const d=this;return{...r,properties:{...n},setPropertyRelates(o,u){if(o){switch(o.propertyID){case"disabled":case"readonly":case"visible":d.afterMutilEditorChanged(e,o);break}s&&s(o,u)}}}}afterMutilEditorChanged(e,t){this.addNewVariableToViewModel(t,this.viewModelId),this.updateExpressionValue(t,e),this.clearExpression(t,e)}updateElementByParentContainer(e,t){const i=t&&t.parent&&t.parent.schema;if(!i)return;const s=i.contents.findIndex(n=>n.id===e),r=j.cloneDeep(i.contents[s]);i.contents.splice(s,1),i.contents.splice(s,0,r),R.refreshCanvas()}addNewVariableToViewModel(e,t){const i=e.propertyValue;if(!(i&&typeof i=="object")||!(i.type==="Variable"&&i.isNewVariable))return;const n={id:i.field,category:"locale",code:i.fullPath,name:i.fullPath,type:i.newVariableType||"String",isRtcVariable:this.designerContext.designerMode==="PC_RTC"?!0:void 0};delete i.newVariableType,delete i.isNewVariable,this.formSchemaUtils.getVariableByCode(n.code)||this.formSchemaUtils.getViewModelById("root-viewmodel").states.push(n)}getExpressions(){let e=[];return this.formRule?(this.formRule.expressions=this.formRule.expressions||[],e=this.formRule.expressions||[]):e=this.formSchemaUtils.getExpressions(),e}updateExpressionValue(e,t){const i=e.propertyValue;if(!((i&&i.type)==="Expression"&&i.expressionInfo))return;const{expressionId:n,expressionInfo:d}=i,{targetId:o,targetType:u,expressionType:c,value:m,message:p}=d,y=this.getExpressions();let g=y.find(S=>S.target===o);g||(g={target:o,rules:[],targetType:u},y.push(g));const w=g.rules.find(S=>S.type===c);if(w)w.value=m,w.message=p,(c==="minDate"||c==="maxDate"||c==="defaultTime")&&(w.elementId=t.id);else{const S={id:n,type:c,value:m,message:p,elementId:t.id};g.rules.push(S)}delete i.expressionInfo}clearExpression(e,t){const i=e.propertyValue;if(i&&i.type==="Expression")return;const r=e.propertyID,n=this.getExpressions(),d=t.binding?t.binding.field:t.id,o=n.find(u=>u.target===d);!o||!o.rules||(o.rules=o.rules.filter(u=>u.type!==r))}getExpressionOptions(e,t,i){return this.expressionProperty.getExpressionOptions(e,t,i)}getRealTargetType(e){return["response-toolbar-item","tab-toolbar-item","section-toolbar-item","drawer-toolbar-item"].indexOf(e.type)>-1?"Button":e.binding&&e.binding.field?"Field":"Container"}createBaseEventProperty(e){const t={};return t[this.viewModelId]={type:"events-editor",editor:{initialData:e,viewSourceHandle:i=>{var s;((s=i.controller)==null?void 0:s.label.indexOf(this.formSchemaUtils.getModule().code))>-1&&this.eventsEditorUtils.jumpToMethod(i)}}},t}}class J extends F{constructor(e,t){super(e,t)}getPropertyConfig(e){return this.propertyConfig.categories.basic=this.getBasicPropConfig(e),this.propertyConfig.categories.appearance=this.getAppearanceConfig(e),this.propertyConfig}getBehaviorProperties(e){return{description:"",title:"行为",properties:{direction:{title:"布局方向",description:"指定内部分栏面板的布局方向",type:"string",editor:{type:"combo-list",data:[{id:"row",name:"横向排列"},{id:"column",name:"上下排列"}]}}},setPropertyRelates(t,i){if(t&&t.propertyID==="direction"){const s=t.propertyValue!=="column",r=s?"f-col-h":"f-col-w",n=s?"f-col-w":"f-col-h",d=s?["s","n"]:["e","w"];e==null||e.contents.forEach((o,u)=>{var c;(c=o.appearance)!=null&&c.class&&(o.appearance.class=o.appearance.class.replaceAll(r,n)),o.resizable===!0&&o.resizeHandle&&d.findIndex(m=>m===o.resizeHandle)>-1&&u===0&&(o.resizeHandle=s?"e":"s"),s&&o.minHeight&&(o.minHeight=null),!s&&o.minWidth&&(o.minWidth=null)})}}}}}function K(l,e){const t=new R.UseTemplateDragAndDropRules,{canMove:i,canDelete:s}=t.getTemplateRule(l,e),r=l.schema;function n(){return!1}function d(){return s}function o(){return i}function u(){return!0}function c(m){return new J(m,e).getPropertyConfig(r)}return{canAccepts:n,checkCanDeleteComponent:d,checkCanMoveComponent:o,hideNestedPaddingInDesginerView:u,getPropsConfig:c}}const Q=a.defineComponent({name:"FSplitterDesign",props:I,emits:[],setup(l,e){const t=a.ref(),i=a.inject("designer-host-service"),s=a.inject("design-item-context"),r=K(s,i),n=R.useDesignerComponent(t,s,r);n.value.canNested=!1;const d=T(t),{horizontalResizeHandleStyle:o,verticalResizeHandleStyle:u,resizeOverlayStyle:c}=d;a.provide("splitter",{useResizeHandleComposition:d});const m=a.computed(()=>{const y={"f-splitter":!0};return E.getCustomClass(y,l==null?void 0:l.customClass)}),p=a.computed(()=>{const y={"flex-direction":l.direction==="row"?"row":"column"};return E.getCustomStyle(y,l==null?void 0:l.customStyle)});return a.onMounted(()=>{t.value.componentInstance=n}),e.expose(n.value),()=>a.createVNode("div",{class:m.value,ref:t,style:p.value},[e.slots.default&&e.slots.default(),a.createVNode("div",{class:"f-splitter-resize-overlay",style:c.value},null),a.createVNode("div",{class:"f-splitter-horizontal-resize-proxy",style:o.value},null),a.createVNode("div",{class:"f-splitter-vertical-resize-proxy",style:u.value},null)])}});class Z extends F{constructor(t,i){super(t,i);v(this,"parentSplitterDirectionIsRow",!0);v(this,"positionIndex",-1);v(this,"notifyService");v(this,"designItemContext",null);this.notifyService=new $.FNotifyService}getPropertyConfig(t,i,s=!0,r=0){return this.parentSplitterDirectionIsRow=s,this.designItemContext=i,this.positionIndex=r,this.propertyConfig.categories.basic=this.getBasicPropConfig(t),this.propertyConfig.categories.appearance=this.getAppearanceProperties(t),this.propertyConfig}getAppearanceProperties(t){const i=this,s=i.parentSplitterDirectionIsRow&&t.resizable===!0,r=!i.parentSplitterDirectionIsRow&&t.resizable===!0;return{description:"",title:"外观",properties:{class:{description:"组件的CSS样式",title:"class样式"},style:{description:"组件的内容样式",title:"style样式"},minWidth:{description:"面板最小宽度",title:"最小宽度(px)",type:"number",editor:{nullable:!0},visible:s},minHeight:{description:"面板最小高度",title:"最小高度(px)",type:"number",editor:{nullable:!0},visible:r}}}}getBehaviorProperties(t){const i=[{id:"e",name:"左侧"},{id:"w",name:"右侧"}],s=[{id:"n",name:"上方"},{id:"s",name:"下方"}],r=this;return{description:"",title:"行为",properties:{resizable:{description:"规则:两列布局只有一个元素启用拖拽,多列布局可以有多个元素启用拖拽。",title:"允许拖拽",type:"boolean",refreshPanelAfterChanged:!0},resizeHandle:{description:"指定拖拽条的位置",title:"指定拖拽条的位置",type:"string",visible:t.resizable===!0,defaultValue:t.resizeHandle||"",editor:{type:"combo-list",data:this.parentSplitterDirectionIsRow?i:s}}},setPropertyRelates(n,d){var o,u,c;if(n)switch(n&&n.propertyID){case"resizable":{n.propertyValue&&(((c=(u=(o=r.designItemContext)==null?void 0:o.parent)==null?void 0:u.schema)==null?void 0:c.contents)||[]).find(p=>p.id!==t.id&&t.resizable)&&r.notifyService.warning({message:"相邻元素已启用拖拽功能",position:"top-center"});break}}}}}}function ee(l,e){const t=new R.UseTemplateDragAndDropRules,i=l.schema,{canAccept:s}=t.getTemplateRule(l,e);function r(u){return R.useDragulaCommonRule().basalDragulaRuleForContainer(u,e)?s:!1}function n(u){var y,g;const c=new Z(u,e),m=(((y=l==null?void 0:l.parent)==null?void 0:y.schema.direction)||"row")==="row",p=(((g=l==null?void 0:l.parent)==null?void 0:g.schema.contents)||[]).findIndex(w=>i.id===(w==null?void 0:w.id));return p===0&&!i.resizeHandle&&i.resizable&&(i.resizeHandle=m?"e":"s"),c.getPropertyConfig(i,l,m,p)}function d(){return!1}function o(){return!1}return{canAccepts:r,getPropsConfig:n,checkCanMoveComponent:d,checkCanDeleteComponent:o}}const te=a.defineComponent({name:"FSplitterPaneDesign",props:N,emits:[],setup(l,e){const t=a.ref(),i=a.inject("designer-host-service"),s=a.inject("design-item-context"),r=ee(s,i),n=R.useDesignerComponent(t,s,r);n.value.styles="padding:0;box-shadow:none;",n.value.canNested=!1,n.value.canMove=!1,n.value.canDelete=!1,a.onMounted(()=>{t.value.componentInstance=n}),e.expose(n.value);const d=a.inject("splitter"),{useResizeHandleComposition:o}=d,u=k(l,o),{actualHeight:c,actualWidth:m}=u,p=a.ref(l.position),y=a.computed(()=>{const b={"f-splitter-pane":!0,"f-splitter-pane-main":p.value==="center","has-resize-bar":l.resizable,"f-component-splitter-pane":!0,"drag-container":!0};return b["f-splitter-pane-"+p.value]=!0,E.getCustomClass(b,l==null?void 0:l.customClass)}),g=a.computed(()=>l.resizeHandle?l.resizeHandle.split(",").filter(b=>["e","n","s","w"].find(f=>f===b)):[]),w=a.computed(()=>{const b={};return(m.value&&p.value==="left"||p.value==="right"||g.value.find(f=>f==="e")||g.value.find(f=>f==="w"))&&(b.width=`${m.value}px`),(c.value&&p.value==="bottom"||p.value==="top"||g.value.find(f=>f==="s")||g.value.find(f=>f==="n"))&&(b.height=`${c.value}px`),E.getCustomStyle(b,l==null?void 0:l.customStyle)}),S=a.computed(()=>({"no-drag":!0,"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 M(){return g.value.length>0?g.value.map(b=>a.createVNode("span",{class:"f-splitter-resize-bar f-splitter-resize-bar-"+b},null)):a.createVNode("span",{class:S.value},null)}return()=>a.createVNode("div",{ref:t,"data-dragref":`${s.schema.id}-container`,class:y.value,style:w.value},[e.slots.default&&e.slots.default(),l.resizable&&M()])}});V.install=l=>{l.component(V.name,V),l.component(H.name,H)},V.register=(l,e,t,i)=>{l.splitter=V,e.splitter=B,l["splitter-pane"]=H,e["splitter-pane"]=O},V.registerDesigner=(l,e,t)=>{l.splitter=Q,e.splitter=B,l["splitter-pane"]=te,e["splitter-pane"]=O},C.FSplitter=V,C.FSplitterPane=H,C.default=V,C.splitterProps=I,C.splitterPropsResolver=B,Object.defineProperties(C,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});