UNPKG

@farris/ui-vue

Version:

Farris Vue, a Farris Design based Vue3 component library.

2 lines (1 loc) 29.6 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(o,e,t){const i=o.getSchemaByType("splitter-pane");return i.appearance={class:"f-col-w6 f-page-content-nav"},i.position="left",e.contents.unshift(i),e}function q(o,e,t){const i=o.getSchemaByType("splitter-pane");return i.appearance={class:"f-page-content-main"},i.position="main",e.contents.push(i),e}function W(o,e,t){const i=t.parentComponentInstance;return String(i.schema.appearance.class||"").split(" ").includes("f-page-main")&&(e.appearance={class:"f-page-content"}),A(o,e),q(o,e),e}function D(o,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,W);function O(o){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`})),l=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=o.value;if(y){const{left:g}=y.getBoundingClientRect();i.value=p.clientX-g}}function m(p){const y=o.value;if(y){const{top:g}=y.getBoundingClientRect();s.value=p.clientY-g}}return{horizontalResizeHandleStyle:d,verticalResizeHandleStyle:l,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(o,e){const t=a.ref(),i=O(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,o==null?void 0:o.customClass)}),l=a.computed(()=>{const u={"flex-direction":o.direction==="row"?"row":"column"};return E.getCustomStyle(u,o==null?void 0:o.customStyle)});return()=>a.createVNode("div",{class:d.value,ref:t,style:l.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"},maxHeight:{description:"",type:"number"},maxWidth:{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},maxWidth:{type:Number,default:0},maxHeight:{type:Number,default:0}},T=z.createPropsResolver(N,X,_,D);function F(o,e){const t=a.ref(o.width),i=a.ref(o.height),{horizontalResizeBarPosition:s,horizontalResizeHandleOffset:r,showHorizontalResizeHandle:n,showVerticalResizeHandle:d,verticalResizeBarPosition:l,verticalResizeHandleOffset:u,draggingHorizontalResizeHandle:c,draggingVerticalResizeHandle:m}=e;let p="",y,g;function x(b){if((p==="left"||p==="right")&&g){const{left:f}=g.getBoundingClientRect(),{width:h}=y.getBoundingClientRect(),P=b.clientX-f,w=p==="left"?(h||0)+(P-s.value):(h||0)-(P-s.value);t.value=o.minWidth>0?Math.max(o.minWidth,w):w,t.value=o.maxWidth>0?Math.min(t.value,o.maxWidth):t.value}if((p==="top"||p==="bottom")&&g){const{top:f}=g.getBoundingClientRect(),{height:h}=y.getBoundingClientRect(),P=b.clientY-f,w=p==="top"?(h||0)+(P-l.value):(h||0)-(P-l.value);i.value=o.minHeight>0?Math.max(o.minHeight,w):w,i.value=o.maxHeight>0?Math.min(i.value,o.maxHeight):i.value}r.value=0,u.value=0,s.value=-1,l.value=-1,n.value=!1,d.value=!1,document.removeEventListener("mousemove",c),document.removeEventListener("mouseup",x),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(w=>w.className.split(" ")[0]==="f-splitter"),g){const{left:w}=g.getBoundingClientRect();r.value=b.clientX-w,s.value=b.clientX-w,document.addEventListener("mousemove",c),document.addEventListener("mouseup",x),document.body.style.userSelect="none"}}function M(b,f,h){if(p=f,y=h,d.value=!0,g=b.composedPath().find(w=>w.className.split(" ")[0]==="f-splitter"),g){const{top:w}=g.getBoundingClientRect();u.value=b.clientY-w,l.value=b.clientY-w,document.addEventListener("mousemove",m),document.addEventListener("mouseup",x),document.body.style.userSelect="none"}}return{actualWidth:t,actualHeight:i,onClickSplitterHorizontalResizeBar:S,onClickSplitterVerticalResizeBar:M}}const H=a.defineComponent({name:"FSplitterPane",props:N,emits:[],setup(o,e){const t=a.ref(),i=a.inject("splitter"),{useResizeHandleComposition:s}=i,r=F(o,s),{actualHeight:n,actualWidth:d,onClickSplitterHorizontalResizeBar:l,onClickSplitterVerticalResizeBar:u}=r,c=a.ref(o.position),m=a.computed(()=>{const f={"f-splitter-pane":!0,"f-splitter-pane-main":c.value==="center","has-resize-bar":o.resizable};return f["f-splitter-pane-"+c.value]=!0,E.getCustomClass(f,o==null?void 0:o.customClass)}),p=a.computed(()=>o.resizeHandle?o.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,o==null?void 0:o.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 x(f){return{e:"left",w:"right",s:"top",n:"bottom"}[f]||f}function S(f,h){h=x(h),["left","right"].find(P=>P===h)&&l(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=o.width,n.value=o.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(),o.resizable&&M()])}});function Y(o){const{formSchemaUtils:e,formStateMachineUtils:t}=o;function i(l,u=""){return{path:u+l.code,field:l.id,fullPath:l.code}}function s(l,u=""){const c=e.getViewModelById(l);return c?c.states.map(m=>i(m,u)):[]}function r(l){const u=e.getRootViewModelId(),c=s(l);if(l===u)return c;const m=s(u,"root-component.");return[...c,...m]}function n(l){return l.binding&&l.binding.path||l.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 l;if(s==="dataPicking"&&(r!=null&&r.target)){const u=`${r.target}_dataPicking`;((l=r.rules)==null?void 0:l.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 l,u;const r=this.createTreeNode(s,t);r.type="entity";const n=this.buildEntityFieldsTreeData((l=s.type)==null?void 0:l.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,l={id:`${e}_${i}`,type:i,value:r};return(i==="validate"||i==="dataPicking"||i==="required")&&(l.message=n),i==="dataPicking"&&(l.messageType=d),i==="validate"&&s&&(l.elementId=s),l}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 l=this.getExpressionData().find(c=>c.targetType===t&&c.target===r);const u=c=>c.value.trim()==="";if(l){const c=l.rules.find(m=>m.id===n.id);if(c)u(n)?l.rules=l.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;l.rules=l.rules||[],l.rules.push(n)}}else{if(u(n))return null;l={target:`${r}`,rules:[n],targetType:t}}return l}getExpressionEditorOptions(e,t,i,s){return i.reduce((r,n)=>{var l,u;const d=t==="Field"?(l=e==null?void 0:e.binding)==null?void 0:l.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){var r;return{description:"表达式",title:"表达式",hide:!(e.binding&&((r=e.binding)==null?void 0:r.type)==="Form"),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 k{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)}inResponsiveForm(){var e;return!!((e=this.designerContext)!=null&&e.responsiveForm)}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:l,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:l(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","Custom"]:t==="dataGrid"||t==="treeGrid"||t==="wizard"?i=["Const","Variable","Expression"]:(e.type.indexOf("toolbar-item")>-1||t==="form-group")&&(i=["Const","Variable","StateMachine","Custom","Expression"]),{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 l in i)n[l]=Object.assign(n[l]||{},i[l]);const d=this;return{...r,properties:{...n},setPropertyRelates(l,u){if(l){switch(l.propertyID){case"disabled":case"readonly":case"visible":d.afterMutilEditorChanged(e,l);break}s&&s(l,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:l,targetType:u,expressionType:c,value:m,message:p}=d,y=this.getExpressions();let g=y.find(S=>S.target===l);g||(g={target:l,rules:[],targetType:u},y.push(g));const x=g.rules.find(S=>S.type===c);if(x)x.id=n,x.value=m,x.message=p,(c==="minDate"||c==="maxDate"||c==="defaultTime")&&(x.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,l=n.find(u=>u.target===d);!l||!l.rules||(l.rules=l.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 k{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.categories.behavior=this.getBehaviorProperties(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((l,u)=>{var c;(c=l.appearance)!=null&&c.class&&(l.appearance.class=l.appearance.class.replaceAll(r,n)),l.resizable===!0&&l.resizeHandle&&d.findIndex(m=>m===l.resizeHandle)>-1&&u===0&&(l.resizeHandle=s?"e":"s"),s&&l.minHeight&&(l.minHeight=null),!s&&l.minWidth&&(l.minWidth=null)})}}}}}function K(o,e){const t=new R.UseTemplateDragAndDropRules,{canMove:i,canDelete:s}=t.getTemplateRule(o,e),r=o.schema;function n(){return!1}function d(){return s}function l(){return i}function u(){return!0}function c(m){return new J(m,e).getPropertyConfig(r)}return{canAccepts:n,checkCanDeleteComponent:d,checkCanMoveComponent:l,hideNestedPaddingInDesginerView:u,getPropsConfig:c}}const Q=a.defineComponent({name:"FSplitterDesign",props:I,emits:[],setup(o,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=O(t),{horizontalResizeHandleStyle:l,verticalResizeHandleStyle:u,resizeOverlayStyle:c}=d;a.provide("splitter",{useResizeHandleComposition:d});const m=a.computed(()=>{const y={"f-splitter":!0};return E.getCustomClass(y,o==null?void 0:o.customClass)}),p=a.computed(()=>{const y={"flex-direction":o.direction==="row"?"row":"column"};return E.getCustomStyle(y,o==null?void 0:o.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:l.value},null),a.createVNode("div",{class:"f-splitter-vertical-resize-proxy",style:u.value},null)])}});class Z extends k{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 l,u,c;if(n)switch(n&&n.propertyID){case"resizable":{n.propertyValue&&(((c=(u=(l=r.designItemContext)==null?void 0:l.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(o,e){const t=new R.UseTemplateDragAndDropRules,i=o.schema,{canAccept:s}=t.getTemplateRule(o,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=o==null?void 0:o.parent)==null?void 0:y.schema.direction)||"row")==="row",p=(((g=o==null?void 0:o.parent)==null?void 0:g.schema.contents)||[]).findIndex(x=>i.id===(x==null?void 0:x.id));return p===0&&!i.resizeHandle&&i.resizable&&(i.resizeHandle=m?"e":"s"),c.getPropertyConfig(i,o,m,p)}function d(){return!1}function l(){return!1}return{canAccepts:r,getPropsConfig:n,checkCanMoveComponent:d,checkCanDeleteComponent:l}}const te=a.defineComponent({name:"FSplitterPaneDesign",props:N,emits:[],setup(o,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:l}=d,u=F(o,l),{actualHeight:c,actualWidth:m}=u,p=a.ref(o.position),y=a.computed(()=>{const b={"f-splitter-pane":!0,"f-splitter-pane-main":p.value==="center","has-resize-bar":o.resizable,"f-component-splitter-pane":!0,"drag-container":!0};return b["f-splitter-pane-"+p.value]=!0,E.getCustomClass(b,o==null?void 0:o.customClass)}),g=a.computed(()=>o.resizeHandle?o.resizeHandle.split(",").filter(b=>["e","n","s","w"].find(f=>f===b)):[]),x=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,o==null?void 0:o.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:x.value},[e.slots.default&&e.slots.default(),o.resizable&&M()])}});V.install=o=>{o.component(V.name,V),o.component(H.name,H)},V.register=(o,e,t,i)=>{o.splitter=V,e.splitter=B,o["splitter-pane"]=H,e["splitter-pane"]=T},V.registerDesigner=(o,e,t)=>{o.splitter=Q,e.splitter=B,o["splitter-pane"]=te,e["splitter-pane"]=T},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"}})});