UNPKG

@farris/ui-vue

Version:

Farris Vue, a Farris Design based Vue3 component library.

2 lines (1 loc) 33.9 kB
(function(k,l){typeof exports=="object"&&typeof module<"u"?l(exports,require("vue"),require("lodash-es"),require("../common/index.umd.js"),require("../dynamic-resolver/index.umd.js")):typeof define=="function"&&define.amd?define(["exports","vue","lodash-es","../common/index.umd.js","../dynamic-resolver/index.umd.js"],l):(k=typeof globalThis<"u"?globalThis:k||self,l(k.layout={},k.Vue,k.LodashES,k.common,k.dynamicResolver))})(this,function(k,l,_,J,me){"use strict";function Q(e,t){let n;function r(a){const{properties:f,title:S,ignore:c}=a,o=c&&Array.isArray(c),i=Object.keys(f).reduce((s,p)=>((!o||!c.find(b=>b===p))&&(s[p]=f[p].type==="object"&&f[p].properties?r(f[p]):_.cloneDeep(f[p].default)),s),{});if(S&&(!o||!c.find(s=>s==="id"))){const s=S.toLowerCase().replace(/-/g,"_");i.id=`${s}_${Math.random().toString().slice(2,6)}`}return i}function z(a){const{properties:f,title:S,required:c}=a;if(c&&Array.isArray(c)){const o=c.reduce((i,s)=>(i[s]=f[s].type==="object"&&f[s].properties?r(f[s]):_.cloneDeep(f[s].default),i),{});if(S&&c.find(i=>i==="id")){const i=S.toLowerCase().replace(/-/g,"_");o.id=`${i}_${Math.random().toString().slice(2,6)}`}return o}return{type:S}}function P(a,f={},S){const c=e[a];if(c){let o=z(c);const i=t[a];return o=i?i({getSchemaByType:P},o,f,S):o,n!=null&&n.appendIdentifyForNewControl&&n.appendIdentifyForNewControl(o),o}return null}function h(a,f){const S=r(f);return Object.keys(S).reduce((c,o)=>(Object.prototype.hasOwnProperty.call(a,o)&&(c[o]&&_.isPlainObject(c[o])&&_.isPlainObject(a[o]||!a[o])?Object.assign(c[o],a[o]||{}):c[o]=a[o]),c),S),S}function w(a,f){return Object.keys(a).filter(c=>a[c]!=null).reduce((c,o)=>{if(f.has(o)){const i=f.get(o);if(typeof i=="string")c[i]=a[o];else{const s=i(o,a[o],a);Object.assign(c,s)}}else c[o]=a[o];return c},{})}function j(a,f,S=new Map){const c=h(a,f);return w(c,S)}function u(a){var S;const f=a.type;if(f){const c=e[f];if(!c)return a;const o=h(a,c),i=((S=a.editor)==null?void 0:S.type)||"";if(i){const s=e[i],p=h(a.editor,s);o.editor=p}return o}return a}function g(a){n=a}return{getSchemaByType:P,resolveSchemaWithDefaultValue:u,resolveSchemaToProps:j,mappingSchemaToProps:w,setDesignerContext:g}}const Z={},x={},{getSchemaByType:et,resolveSchemaWithDefaultValue:de,resolveSchemaToProps:ye,mappingSchemaToProps:ve,setDesignerContext:tt}=Q(Z,x);function be(e={}){function t(u,g,a,f){if(typeof a=="number")return f[u].length===a;if(typeof a=="object"){const S=Object.keys(a)[0],c=a[S];if(S==="not")return Number(f[u].length)!==Number(c);if(S==="moreThan")return Number(f[u].length)>=Number(c);if(S==="lessThan")return Number(f[u].length)<=Number(c)}return!1}function n(u,g,a,f){return f[u]&&f[u].propertyValue&&String(f[u].propertyValue.value)===String(a)}const r=new Map([["length",t],["getProperty",n]]);Object.keys(e).reduce((u,g)=>(u.set(g,e[g]),u),r);function z(u,g){const a=u;return typeof g=="number"?[{target:a,operator:"length",param:null,value:Number(g)}]:typeof g=="boolean"?[{target:a,operator:"getProperty",param:u,value:!!g}]:typeof g=="object"?Object.keys(g).map(f=>{if(f==="length")return{target:a,operator:"length",param:null,value:g[f]};const S=f,c=g[f];return{target:a,operator:"getProperty",param:S,value:c}}):[]}function P(u){return Object.keys(u).reduce((a,f)=>{const S=z(f,u[f]);return a.push(...S),a},[])}function h(u,g){if(r.has(u.operator)){const a=r.get(u.operator);return a&&a(u.target,u.param,u.value,g)||!1}return!1}function w(u,g){return P(u).reduce((S,c)=>S&&h(c,g),!0)}function j(u,g){const a=Object.keys(u),f=a.includes("allOf"),S=a.includes("anyOf"),c=f||S,s=(c?u[c?f?"allOf":"anyOf":"allOf"]:[u]).map(b=>w(b,g));return f?!s.includes(!1):s.includes(!0)}return{parseValueSchema:j}}const he={convertTo:(e,t,n,r)=>{e.appearance||(e.appearance={}),e.appearance[t]=n},convertFrom:(e,t,n)=>e.appearance?e.appearance[t]:e[t]},ge={convertFrom:(e,t,n)=>e.buttons&&e.buttons.length?`共 ${e.buttons.length} 项`:"无"},Se={convertTo:(e,t,n,r)=>{e.editor&&(e.editor[t]=n)},convertFrom:(e,t,n)=>e.editor&&Object.prototype.hasOwnProperty.call(e.editor,t)?e.editor[t]:e[t]},H={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:"列表导航"},"list-view":{type:"list-view",name:"列表"},"filter-bar":{type:"filter-bar",name:"筛选条"},"language-textbox":{type:"language-textbox",name:"多语输入框"}},ze={convertFrom:(e,t,n)=>{var z;const r=e.editor&&e.editor[t]?e.editor[t]:e[t];return((z=H[r])==null?void 0:z.name)||r}},Pe={convertTo:(e,t,n,r)=>{e[t]=e[t]},convertFrom:(e,t,n)=>e.editor?n.getRealEditorType(e.editor.type):""},Te={convertTo:(e,t,n,r)=>{(e.type==="data-grid-column"||e.type==="tree-grid-column")&&(e.formatter?e.formatter[t]=n:e.formatter={[t]:n})},convertFrom:(e,t,n)=>{if(e.formatter){if(t==="trueText")return e.formatter.trueText;if(t==="falseText")return e.formatter.falseText;if(t==="prefix")return e.formatter.prefix;if(t==="suffix")return e.formatter.suffix;if(t==="precision")return e.formatter.precision;if(t==="decimal")return e.formatter.decimal;if(t==="thousand")return e.formatter.thousand;if(t==="tempDateFormat")return e.formatter.dateFormat==="yyyy年MM月dd日"?"yearMonthDay":e.formatter.dateFormat==="yyyy-MM-dd HH:mm:ss"?"yyyy-MM-ddTHH:mm:ss":e.formatter.dateFormat==="yyyy/MM/dd HH:mm:ss"?"yyyy/MM/ddTHH:mm:ss":e.formatter.dateFormat==="yyyy年MM月dd日 HH时mm分ss秒"?"yearMonthDayHourMinuteSecond":e.formatter.tempDateFormat||e.formatter.dateFormat||"yyyy-MM-dd";if(t==="customFormat")return e.formatter.customFormat;if(t==="type")return e.formatter.type||"none"}return"none"}},Ce={convertTo:(e,t,n,r)=>{e.command?e.command[t]=n:e.command={[t]:n},t==="enable"&&n&&(e.command.commands||(e.command.commands=[{text:"编辑",type:"primary",command:"edit"},{text:"删除",type:"danger",command:"remove"}]))},convertFrom:(e,t,n)=>e.command&&t==="enable"?e.command.enable:""},Me={convertTo:(e,t,n,r)=>{e.column?e.column[t]=n:e.column={[t]:n},t==="fitColumns"&&n&&(e.column.fitMode||(e.column.fitMode="average"))},convertFrom:(e,t,n)=>{if(e.column){if(t==="fitColumns")return e.column.fitColumns;if(t==="fitMode")return e.column.fitMode}return""}},Oe={convertTo:(e,t,n,r)=>{e.summary?e.summary[t]=n:e.summary={[t]:n},t==="enable"&&n&&(e.summary?e.summary.groupFields||(e.summary.groupFields=[]):e.summary={enable:n,groupFields:[]})},convertFrom:(e,t,n)=>e.summary&&t==="enable"?e.summary.enable:e.type==="data-grid-column"?e.enableSummary===void 0?!1:e.enableSummary:""},Fe={convertTo:(e,t,n,r)=>{e.group?e.group[t]=n:e.group={[t]:n},t==="enable"&&n&&(e.group?e.group.groupFields||(e.group.groupFields=[]):e.group={enable:n,groupFields:[],showSummary:!1})},convertFrom:(e,t,n)=>{if(e.group){if(t==="enable")return e.group.enable;if(t==="showSummary")return e.group.showSummary}}},we={convertFrom:(e,t)=>e.binding?e.binding.path:"",convertTo:(e,t,n)=>{if(n&&n.length>0){const r=n[0];e.binding||(e.binding={}),e.binding.type="Form",e.binding.path=r.bindingField,e.binding.field=r.id,e.binding.fullPath=r.path,e.path=r.bindingPath}}},De={convertTo:(e,t,n,r)=>{e.pagination||(e.pagination={}),e.pagination[t]=n},convertFrom:(e,t,n)=>e.pagination?e.pagination[t]:e[t]},$e={convertTo:(e,t,n,r)=>{e.rowNumber||(e.rowNumber={}),e.rowNumber[t]=n},convertFrom:(e,t,n)=>e.rowNumber?e.rowNumber[t]:e[t]},je={convertTo:(e,t,n,r)=>{e.selection||(e.selection={}),e.selection[t]=n},convertFrom:(e,t,n)=>e.selection?e.selection[t]:e[t]},Be={convertFrom:(e,t,n)=>e[t]&&e[t].length?`共 ${e[t].length} 项`:""},Ne={convertFrom:(e,t)=>e[t]||"",convertTo:(e,t,n)=>{e[t]=n}},Ee={convertTo:(e,t,n,r)=>{e.size||(e.size={}),e.size[t]=n},convertFrom:(e,t,n)=>e.size?e.size[t]:e[t]},ke={convertFrom:(e,t,n)=>{var r,z;return(r=e.formatter)!=null&&r.data&&t==="formatterEnumData"&&!e.formatterEnumData?(z=e.formatter)==null?void 0:z.data:e.formatterEnumData}},He={convertTo:(e,t,n,r)=>{e.sort||(e.sort={}),e.sort[t]=n},convertFrom:(e,t,n)=>{var r,z;if(t==="mode")return((r=e.sort)==null?void 0:r.mode)||"client";if(t==="multiSort")return!!((z=e.sort)!=null&&z.multiSort)}},Le={convertTo:(e,t,n,r)=>{e.filter||(e.filter={}),e.filter[t]=n},convertFrom:(e,t,n)=>{var r;if(t==="mode")return((r=e.filter)==null?void 0:r.mode)||"client"}},Ae={convertTo:(e,t,n,r)=>{e.rowOption?e.rowOption[t]=n:e.rowOption={[t]:n}},convertFrom:(e,t,n)=>{if(e.rowOption){if(t==="customRowStyle")return e.rowOption.customRowStyle;if(t==="customCellStyle")return e.rowOption.customCellStyle}return""}};function I(e,t,n){const r=new Map([["/converter/appearance.converter",he],["/converter/buttons.converter",ge],["/converter/property-editor.converter",Se],["/converter/items-count.converter",Be],["/converter/type.converter",ze],["/converter/change-editor.converter",Pe],["/converter/change-formatter.converter",Te],["/converter/column-command.converter",Ce],["/converter/column-option.converter",Me],["/converter/summary.converter",Oe],["/converter/group.converter",Fe],["/converter/form-group-label.converter",Ne],["/converter/field-selector.converter",we],["/converter/pagination.converter",De],["/converter/row-number.converter",$e],["/converter/grid-selection.converter",je],["/converter/size.converter",Ee],["/converter/change-formatter-enum.converter",ke],["/converter/grid-sort.converter",He],["/converter/grid-filter.converter",Le],["/converter/row-option.converter",Ae]]),z=new Map([["string",{type:"input-group",enableClear:!1}],["boolean",{type:"combo-list",textField:"name",valueField:"value",idField:"value",enableClear:!1,editable:!1,data:[{value:!0,name:"是"},{value:!1,name:"否"}]}],["enum",{type:"combo-list",maxHeight:128,enableClear:!1,editable:!1}],["array",{type:"button-edit"}],["number",{type:"number-spinner",placeholder:""}],["events-editor",{type:"events-editor",hide:!0}]]),P=be();function h(c,o){return()=>P.parseValueSchema(c,o)}function w(c,o,i){return c.includes("visible")&&o.visible!==void 0?typeof o.visible=="boolean"?()=>!!o.visible:o.visible===void 0?!0:h(o.visible,i):()=>!0}function j(c,o,i){return c.includes("readonly")&&o.readonly!==void 0?typeof o.readonly=="boolean"?()=>!!o.readonly:h(o.readonly,i):()=>!1}function u(c,o){const i=c.$converter||o;return typeof i=="string"&&i&&r.has(i)?r.get(i)||null:i||null}function g(c,o,i,s,p,b="",F=""){return Object.keys(c).map(y=>{const D=l.ref(1),T=y,v=c[y],C=Object.keys(v),B=v.title,m=v.type,M=z.get(m)||{type:"input-group",enableClear:!1},O=v.editor?Object.assign({},M,v.editor):Object.assign({},M),$=w(C,v,o),N=j(C,v,o);O.readonly=O.readonly===void 0?N():O.readonly;const L=v.type==="cascade"?g(v.properties,o,i,s,p,b,F):[],V=!0;let E=u(v,F);const A=l.computed({get(){if(D.value){if(["class","style"].find(Ke=>Ke===T)&&!E&&(E=r.get("/converter/appearance.converter")||null),E&&E.convertFrom)return E.convertFrom(i,y,p,b);const R=i[y];return Object.prototype.hasOwnProperty.call(v,"defaultValue")&&(R===void 0||typeof R=="string"&&R==="")?v.type==="boolean"?v.defaultValue:v.defaultValue||"":R}return null},set(R){D.value+=1,E&&E.convertTo?(E.convertTo(s,y,R,p,b),E.convertTo(i,y,R,p,b)):(s[y]=R,i[y]=R)}}),{refreshPanelAfterChanged:W,description:Ze,isExpand:xe,parentPropertyID:Ie}=v,pe={propertyID:T,propertyName:B,propertyType:m,propertyValue:A,editor:O,visible:$,readonly:N,cascadeConfig:L,hideCascadeTitle:V,refreshPanelAfterChanged:W,description:Ze,isExpand:xe,parentPropertyID:Ie};return o[T]=pe,pe})}function a(c,o,i={}){const s={},p=e[c];return p&&p.categories?Object.keys(p.categories).map(F=>{const d=p.categories[F],y=d==null?void 0:d.title,D=g(d.properties||{},s,{},i,o);return{categoryId:F,categoryName:y,properties:D}}):[]}function f(c,o,i,s,p=""){const b=o.$ref.schema,F=o.$ref.converter,d=i[b],y=d.type,D=n(d),T={},v=e[y];if(v&&v.categories){const C=v.categories[c],B=C==null?void 0:C.title;F&&Object.keys(C.properties).forEach(O=>{C.properties[O].$converter=F});const m=(C==null?void 0:C.properties)||{},M=g(m,T,D,d,s,p);return{categoryId:c,categoryName:B,properties:M}}return{categoryId:c,categoryName:"",properties:[]}}function S(c,o,i,s,p){const b=c.type,F=n(c),d={};let y=p||e[b];if(y&&Object.keys(y).length===0&&i&&i.getPropConfig&&(y=i.getPropConfig(s)),y&&y.categories){const D=[];return Object.keys(y.categories).map(T=>{const v=y.categories[T];if(v.$ref){D.push(f(T,v,c,o,s));return}const C=v==null?void 0:v.title,B=v==null?void 0:v.tabId,m=v==null?void 0:v.tabName,M=v==null?void 0:v.hide,O=v==null?void 0:v.hideTitle,$=g(v.properties||{},d,F,c,o,s,v.$converter),{setPropertyRelates:N}=v,L=v==null?void 0:v.parentPropertyID;D.push({categoryId:T,categoryName:C,tabId:B,tabName:m,hide:M,properties:$,hideTitle:O,setPropertyRelates:N,parentPropertyID:L})}),D}return[]}return{getPropertyConfigBySchema:S,getPropertyConfigByType:a,propertyConverterMap:r}}const K={},ee={};I(K,ee,de);const te={},ne={},{getSchemaByType:nt,resolveSchemaWithDefaultValue:Re,resolveSchemaToProps:ot,mappingSchemaToProps:rt,setDesignerContext:at}=Q(te,ne),oe={},re={};I(oe,re,Re);function ae(e,t,n=new Map,r=(h,w,j,u)=>w,z={},P=h=>h){return Z[t.title]=t,x[t.title]=r,K[t.title]=z,ee[t.title]=P,te[t.title]=t,ne[t.title]=r,oe[t.title]=z,re[t.title]=P,(h={},w=!0)=>{if(!w)return ve(h,n);const j=ye(h,t,n),u=Object.keys(e).reduce((g,a)=>(g[a]=e[a].default,g),{});return Object.assign(u,j)}}function qe(e,t){return{customClass:t.class,customStyle:t.style}}const ie=new Map([["appearance",qe]]);function ce(e,t,n){return t}const Ve={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/layout.schema.json",title:"layout",description:"A Farris Container Component",type:"object",properties:{id:{description:"The unique identifier for layout component",type:"string"},type:{description:"The type string of layout component",type:"string",default:"layout"},appearance:{description:"",type:"object",properties:{class:{type:"string"},style:{type:"string"}},default:{}},contents:{description:"",type:"array",default:[]},collapsable:{description:"",type:"boolean",default:!1},resizable:{description:"",type:"boolean",default:!0},visible:{description:"",type:"boolean",default:!0}},required:["id","type","contents"]},We={title:"layout",description:"A Farris Component",type:"object",categories:{basic:{description:"Basic Infomation",title:"基本信息",properties:{id:{description:"组件标识",title:"标识",type:"string",readonly:!0},type:{description:"类型",title:"类型",type:"string",readonly:!0}}},behavior:{description:"Basic Infomation",title:"行为",properties:{collapsable:{description:"",title:"可收折",type:"boolean"},resizable:{description:"",title:"可调整尺寸",type:"boolean"}}}}},Y={customStyle:{type:String,defaut:""},customClass:{type:String,defaut:""}},X=ae(Y,Ve,ie,ce,We);function le(e){const t=l.ref(-1),n=l.ref(-1),r=l.ref(0),z=l.ref(0),P=l.ref(!1),h=l.ref(!1),w=l.computed(()=>({display:P.value?"block":"none",left:`${r.value}px`,cursor:"e-resize"})),j=l.computed(()=>({display:h.value?"block":"none",top:`${z.value}px`,cursor:"n-resize"})),u=l.computed(()=>{const i={display:h.value||P.value?"block":"none"};return z.value>0&&(i.cursor="n-resize"),i});function g(i,s,p,b){const F=e.value;if(F){const{left:d,right:y,width:D}=F.getBoundingClientRect();let T=i.clientX-d;b==="right"&&(T=y-i.clientX),T>s&&(T=s),T<p&&(T=p),b==="right"&&(T=D-T),r.value=T}}function a(i,s,p,b){const F=e.value;if(F){const{top:d,bottom:y,height:D}=F.getBoundingClientRect();let T=i.clientY-d;b==="bottom"&&(T=y-i.clientY),T>s&&(T=s),T<p&&(T=p),b==="bottom"&&(T=D-T),z.value=T}}function f(){const i=e.value;if(i){const{width:s,height:p}=i.getBoundingClientRect();return{width:s,height:p}}return null}function S(){const i=e.value;return i?Array.from(i.querySelectorAll("[data-position]")).reduce((s,p)=>{const b=p.getAttribute("data-position");return s=Object.assign(s,{[b]:p}),s},{}):null}function c(i,s){const p=f(),b=S();if(p&&b){const F=b==null?void 0:b.right,d=b==null?void 0:b.left;if(i==="left"&&d)return F?p.width-F.clientWidth-s:p.width-s;if(i==="right"&&F)return d?p.width-d.clientWidth-s:p.width-s}}function o(i,s){const p=f(),b=S();if(p&&b){const F=b==null?void 0:b.bottom,d=b==null?void 0:b.top;if(i==="top"&&d)return F?p.height-F.clientHeight-s:p.height-s;if(i==="bottom"&&F)return d?p.height-d.clientHeight-s:p.height-s}}return{horizontalResizeHandleStyle:w,verticalResizeHandleStyle:j,resizeOverlayStyle:u,showHorizontalResizeHandle:P,showVerticalResizeHandle:h,horizontalResizeBarPosition:t,verticalResizeBarPosition:n,verticalResizeHandleOffset:z,horizontalResizeHandleOffset:r,draggingHorizontalResizeHandle:g,draggingVerticalResizeHandle:a,getPanelMaxHeight:o,getPanelMaxWidth:c}}const q=l.defineComponent({name:"FLayout",props:Y,emits:[],setup(e,t){const n=l.ref(),r=le(n),{horizontalResizeHandleStyle:z,verticalResizeHandleStyle:P,resizeOverlayStyle:h}=r;l.provide("layout",{useResizeHandleComposition:r});const w=l.computed(()=>{const u={"f-layout":!0};return J.getCustomClass(u,e==null?void 0:e.customClass)}),j=l.computed(()=>{const u={};return J.getCustomStyle(u,e==null?void 0:e.customStyle)});return()=>l.createVNode("div",{class:w.value,style:j.value,ref:n},[t.slots.default&&t.slots.default(),l.createVNode("div",{class:"f-layout-resize-overlay",style:h.value},null),l.createVNode("div",{class:"f-layout-horizontal-resize-proxy",style:z.value},null),l.createVNode("div",{class:"f-layout-vertical-resize-proxy",style:P.value},null)])}}),_e={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/layout-pane.schema.json",title:"layout-pane",description:"A Farris Container Component",type:"object",properties:{id:{description:"The unique identifier for a layout pane",type:"string"},type:{description:"The type string of layout paney",type:"string",default:"layout-pane"},appearance:{description:"",type:"object",properties:{class:{type:"string"},style:{type:"string"}},default:{}},collapsable:{description:"",type:"boolean",default:!1},contents:{description:"",type:"array",default:[]},height:{description:"",type:"number"},position:{description:"",type:"string",default:"left",enum:["left","center","right","top","bottom"]},resizeable:{description:"",type:"boolean",default:!0},width:{description:"",type:"number"},visible:{description:"",type:"number",default:!0}},required:["id","type","contents"]},Ye={title:"layout-pane",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:"enum"},width:{description:"",type:"number",title:"宽度"},height:{description:"",type:"number",title:"高度"}}},appearance:{title:"样式",description:"Appearance",properties:{class:{title:"class样式",type:"string",description:""},style:{title:"style",type:"string",description:""}}},behavior:{description:"",title:"行为",properties:{collapsable:{description:"",type:"boolean",title:"允许收折"},position:{description:"",type:"enum",title:"位置",editor:{type:"combo-list",data:[{id:"left",name:"左侧"},{id:"center",name:"居中"},{id:"right",name:"右侧"},{id:"top",name:"顶部"},{id:"bottom",name:"底部"}]}},resizeable:{description:"",type:"boolean",title:"允许调整尺寸"},visible:{description:"运行时组件是否可见",type:"boolean",title:"是否可见"}}}}},G={customClass:{type:String,defaut:""},customStyle:{type:String,defaut:""},width:{type:Number,default:-1},height:{type:Number,default:-1},position:{type:String,default:"left"},visible:{type:Boolean,default:!0},resizable:{type:Boolean,default:!0},collapsable:{type:Boolean,default:!1},minWidth:{type:Number,default:100},minHeight:{type:Number,default:100}},se=ae(G,_e,ie,ce,Ye);function ue(e,t,n,r,z){const{horizontalResizeBarPosition:P,horizontalResizeHandleOffset:h,showHorizontalResizeHandle:w,showVerticalResizeHandle:j,verticalResizeBarPosition:u,verticalResizeHandleOffset:g,draggingHorizontalResizeHandle:a,draggingVerticalResizeHandle:f,getPanelMaxHeight:S,getPanelMaxWidth:c}=z;let o="",i,s,p;function b(y){if((o==="left"||o==="right")&&s){const{left:D}=s.getBoundingClientRect(),{width:T}=i.getBoundingClientRect(),v=y.clientX-D;let C=o==="left"?(T||0)+(v-P.value):(T||0)-(v-P.value);C=n.value>0?Math.max(n.value,C):C;const B=c(o,n.value);B!=null&&(C=B>C?C:B),e.value=C}if((o==="top"||o==="bottom")&&s){const{top:D}=s.getBoundingClientRect(),{height:T}=i.getBoundingClientRect(),v=y.clientY-D;let C=o==="top"?(T||0)+(v-u.value):(T||0)-(v-u.value);C=r.value>0?Math.max(r.value,C):C;const B=S(o,r.value);B!=null&&(C=B>C?C:B),t.value=C}h.value=0,g.value=0,P.value=-1,u.value=-1,w.value=!1,j.value=!1,document.removeEventListener("mousemove",p),document.removeEventListener("mouseup",b),document.body.style.userSelect="",o="",i=null,s=null}function F(y,D,T){if(o=D,i=T,w.value=!0,s=y.composedPath().find(C=>(C.className||"").split(" ")[0]==="f-layout"),s){const{left:C}=s.getBoundingClientRect(),B=y.clientX-C;h.value=B,P.value=B;const m=c(o,n.value)||0;p=M=>a(M,m,n.value,o),document.addEventListener("mousemove",p),document.addEventListener("mouseup",b),document.body.style.userSelect="none"}}function d(y,D,T){if(o=D,i=T,j.value=!0,s=y.composedPath().find(C=>(C.className||"").split(" ")[0]==="f-layout"),s){const{top:C}=s.getBoundingClientRect();g.value=y.clientY-C,u.value=y.clientY-C;const B=S(o,r.value)||0;p=m=>f(m,B,r.value,o),document.addEventListener("mousemove",p),document.addEventListener("mouseup",b),document.body.style.userSelect="none"}}return{onClickHorizontalResizeBar:F,onClickVerticalResizeBar:d}}const U=l.defineComponent({name:"FLayoutPane",props:G,emits:[],setup(e,t){const n=l.ref(e.minHeight<=0?100:e.minHeight),r=l.ref(e.minWidth<=0?100:e.minWidth),z=l.ref(e.width<=0?100:e.width),P=l.ref(e.height<=0?100:e.height),h=l.ref(Math.max(n.value,P.value)),w=l.ref(Math.max(r.value,z.value)),j=l.ref(),u=l.ref(e.position),g=l.ref(e.resizable);l.watch(()=>e.resizable,d=>{g.value=d});const a=l.inject("layout"),{useResizeHandleComposition:f}=a,S=ue(w,h,r,n,f),{onClickHorizontalResizeBar:c,onClickVerticalResizeBar:o}=S,i=l.computed(()=>({"f-layout-resize-bar":!0,"f-layout-resize-bar-e":u.value==="left","f-layout-resize-bar-n":u.value==="bottom","f-layout-resize-bar-s":u.value==="top","f-layout-resize-bar-w":u.value==="right"})),s=l.computed(()=>u.value!=="center"&&g.value);function p(d,y){(y==="left"||y==="right")&&c(d,y,j.value),(y==="top"||y==="bottom")&&o(d,y,j.value)}const b=l.computed(()=>{const d={"f-layout-pane":!0,"f-page-content-nav":u.value==="left"||u.value==="right","f-page-content-main":u.value==="center"};return e.customClass&&String(e.customClass).split(" ").reduce((y,D)=>(y[D]=!0,y),d),d}),F=l.computed(()=>{const d={};return(w.value&&u.value==="left"||u.value==="right")&&(d.width=`${w.value}px`),(h.value&&u.value==="bottom"||u.value==="top")&&(d.height=`${h.value}px`),e.visible||(d.display="none"),d});return()=>l.createVNode("div",{ref:j,class:b.value,style:F.value,"data-position":u.value},[t.slots.default&&t.slots.default(),s.value&&l.createVNode("span",{class:i.value,onMousedown:d=>p(d,u.value)},null)])}});function Ue(e,t){function n(){return!1}return{canAccepts:n}}function fe(e,t,n){var B;const r=n&&n.getStyles&&n.getStyles()||"",z=n&&n.getDesignerClass&&n.getDesignerClass()||"",P=l.ref();let h;function w(){return(t==null?void 0:t.schema.componentType)==="frame"?!1:n&&n.checkCanMoveComponent?n.checkCanMoveComponent():!0}function j(){return!1}function u(){return(t==null?void 0:t.schema.componentType)==="frame"?!1:n&&n.checkCanDeleteComponent?n.checkCanDeleteComponent():!0}function g(){return(t==null?void 0:t.schema.componentType)==="frame"?!0:n&&n.hideNestedPaddingInDesginerView?n.hideNestedPaddingInDesginerView():!1}function a(m){if(!m||!m.value)return null;if(m.value.schema&&m.value.schema.type==="component")return m.value;const M=l.ref(m==null?void 0:m.value.parent),O=a(M);return O||null}function f(m=t){var N;if(n!=null&&n.getDraggableDesignItemElement)return n.getDraggableDesignItemElement(m);const{componentInstance:M,designerItemElementRef:O}=m;if(!M||!M.value)return null;const{getCustomButtons:$}=M.value;return M.value.canMove||$&&((N=$())!=null&&N.length)?O:f(m.parent)}function S(m){return!!n&&n.canAccepts(m)}function c(){return(t==null?void 0:t.schema.label)||(t==null?void 0:t.schema.title)||(t==null?void 0:t.schema.name)}function o(){}function i(m,M){var O;!m||!M||(n!=null&&n.onAcceptMovedChildElement&&n.onAcceptMovedChildElement(m,M),(O=t==null?void 0:t.setupContext)==null||O.emit("dragEnd"))}function s(m,M){const{componentType:O}=m;let $=me.getSchemaByTypeForDesigner(O,m,M);n&&n.onResolveNewComponentSchema&&($=n.onResolveNewComponentSchema(m,$));const N=O.toLowerCase().replace(/-/g,"_");return $&&!$.id&&$.type===O&&($.id=`${N}_${Math.random().toString().slice(2,6)}`),$}function p(m){m&&n!=null&&n.onChildElementMovedOut&&n.onChildElementMovedOut(m)}function b(...m){if(n&&n.getPropsConfig)return n.getPropsConfig(...m)}function F(m){if(!m)return;const M=t==null?void 0:t.schema,{formSchemaUtils:O}=m;if(M&&O.getExpressions().length){const $=O.getExpressions().findIndex(N=>N.target===M.id);$>-1&&O.getExpressions().splice($,1)}}function d(m){if(!m||!(t!=null&&t.schema))return;const M=t.schema,{formSchemaUtils:O}=m;O.removeCommunicationInComponent(M)}function y(m){n&&n.onRemoveComponent&&n.onRemoveComponent(),F(m),d(m),t!=null&&t.schema.contents&&t.schema.contents.map(M=>{let O=M.id;M.type==="component-ref"&&(O=M.component);const $=e.value.querySelectorAll(`#${O}-design-item`);$!=null&&$.length&&Array.from($).map(N=>{var L;(L=N==null?void 0:N.componentInstance)!=null&&L.value.onRemoveComponent&&N.componentInstance.value.onRemoveComponent(m)})})}function D(){if(n&&n.getCustomButtons)return n.getCustomButtons()}function T(m){var O,$;if(!((O=t==null?void 0:t.schema)!=null&&O.id))return;if(!h&&m&&(h=m.formSchemaUtils),n!=null&&n.setComponentBasicInfoMap){n.setComponentBasicInfoMap();return}let M="";if(n!=null&&n.getComponentTitle)M=n.getComponentTitle();else{const{text:N,title:L,label:V,mainTitle:E,name:A,type:W}=t.schema;M=N||L||V||E||A||(($=H[W])==null?void 0:$.name)}M&&h.getControlBasicInfoMap().set(t.schema.id,{componentTitle:M,parentPathName:M})}function v(m){var N;const{changeObject:M}=m,{propertyID:O,propertyValue:$}=M;if(["text","title","label","name","mainTitle"].includes((N=m==null?void 0:m.changeObject)==null?void 0:N.propertyID)&&O&&$&&(T(),h)){const L=h.getControlBasicInfoMap(),V=L.keys().toArray().filter(E=>{var A,W;return((A=L.get(E))==null?void 0:A.reliedComponentId)===((W=t==null?void 0:t.schema)==null?void 0:W.id)});V!=null&&V.length&&V.forEach(E=>{const A=L.get(E).parentPathName.split(" > ");A[0]=$,L.get(E).parentPathName=A.join(" > ")})}}function C(m){if(v(m),n&&n.onPropertyChanged)return n.onPropertyChanged(m)}return P.value={canMove:w(),canSelectParent:j(),canDelete:u(),canNested:!g(),contents:t==null?void 0:t.schema.contents,elementRef:e,parent:(B=t==null?void 0:t.parent)==null?void 0:B.componentInstance,schema:t==null?void 0:t.schema,styles:r,designerClass:z,canAccepts:S,getBelongedComponentInstance:a,getDraggableDesignItemElement:f,getDraggingDisplayText:c,getPropConfig:b,getDragScopeElement:o,onAcceptMovedChildElement:i,onChildElementMovedOut:p,addNewChildComponentSchema:s,triggerBelongedComponentToMoveWhenMoved:!!n&&n.triggerBelongedComponentToMoveWhenMoved||l.ref(!1),triggerBelongedComponentToDeleteWhenDeleted:!!n&&n.triggerBelongedComponentToDeleteWhenDeleted||l.ref(!1),onRemoveComponent:y,getCustomButtons:D,onPropertyChanged:C,setComponentBasicInfoMap:T,updateContextSchema:t==null?void 0:t.updateContextSchema},P}const Xe=l.defineComponent({name:"FLayoutDesign",props:Y,emits:[],setup(e,t){var g;const n=l.ref(),r=l.inject("design-item-context"),z=Ue(r.schema,(g=r.parent)==null?void 0:g.schema),P=fe(n,r,z);P.value.canNested=!1;const h=le(n),{horizontalResizeHandleStyle:w,verticalResizeHandleStyle:j,resizeOverlayStyle:u}=h;return l.provide("layout",{useResizeHandleComposition:h}),l.onMounted(()=>{n.value.componentInstance=P}),t.expose(P.value),()=>l.createVNode("div",{class:"f-layout f-page-content",ref:n},[t.slots.default&&t.slots.default(),l.createVNode("div",{class:"f-layout-resize-overlay",style:u.value},null),l.createVNode("div",{class:"f-layout-horizontal-resize-proxy",style:w.value},null),l.createVNode("div",{class:"f-layout-vertical-resize-proxy",style:j.value},null)])}});function Ge(){function e(t,n){var h;if(!t)return!1;const r=((h=t.targetContainer)==null?void 0:h.componentInstance)&&t.targetContainer.componentInstance.value;if(!r)return!1;const z=r.schema.type,P=n==null?void 0:n.formSchemaUtils.getComponentById(r.belongedComponentId);return!((t.componentCategory==="input"||t.componentType==="form-group")&&![H["response-layout-item"].type,H["response-form"].type,H.fieldset.type].includes(z)||(t.componentType===H.tabs.type||t.componentType===H.section.type)&&((P==null?void 0:P.componentType)!=="frame"||![H["content-container"].type,H["splitter-pane"].type,H["response-layout-item"].type].includes(z))||[H["query-solution"].type,H["filter-bar"].type].includes(t.componentType)||t.componentType===H.fieldset.type&&z!==H["response-form"].type)}return{basalDragulaRuleForContainer:e}}function Je(e,t){const n=e.schema;function r(P){return!!Ge().basalDragulaRuleForContainer(P)}function z(){const P=["f-layout-pane"];return(n.position==="left"||n.position==="right")&&P.push("f-page-content-nav"),n.position==="center"&&P.push("f-page-content-main"),P.join(" ")}return{canAccepts:r,getDesignerClass:z}}const Qe=l.defineComponent({name:"FLayoutPaneDesign",props:G,emits:[],setup(e,t){const n=l.ref(),r=l.ref();l.inject("designer-host-service");const z=l.inject("design-item-context"),P=Je(z),h=fe(r,z,P);h.value.canNested=!1,h.value.canMove=!1,h.value.canDelete=!1,l.onMounted(()=>{r.value.componentInstance=h}),t.expose(h.value);const w=l.ref(Math.max(e.minHeight,e.height)),j=l.ref(Math.max(e.minWidth,e.width)),u=l.ref(e.minHeight),g=l.ref(e.minWidth),a=l.ref(e.position),f=l.inject("layout"),{useResizeHandleComposition:S}=f,c=ue(j,w,g,u,S),{onClickHorizontalResizeBar:o,onClickVerticalResizeBar:i}=c,s=l.computed(()=>({"f-layout-resize-bar":!0,"f-layout-resize-bar-e":a.value==="left","f-layout-resize-bar-n":a.value==="bottom","f-layout-resize-bar-s":a.value==="top","f-layout-resize-bar-w":a.value==="right"}));function p(d,y){(y==="left"||y==="right")&&o(d,y,n.value),(y==="top"||y==="bottom")&&i(d,y,n.value)}const b=l.computed(()=>{const d={"f-layout-pane":!0,"f-page-content-nav":a.value==="left"||a.value==="right","f-page-content-main":a.value==="center"};return e.customClass&&String(e.customClass).split(" ").reduce((y,D)=>(y[D]=!0,y),d),d}),F=l.computed(()=>{const d={flex:"1"};return(j.value&&a.value==="left"||a.value==="right")&&(d.width=`${j.value}px`),(w.value&&a.value==="bottom"||a.value==="top")&&(d.height=`${w.value}px`),d});return()=>l.createVNode("div",{ref:n,class:b.value,style:F.value},[l.createVNode("div",{ref:r,class:"drag-container","data-dragref":`${z.schema.id}-container`},[t.slots.default&&t.slots.default()]),l.createVNode("span",{class:s.value,onMousedown:d=>p(d,a.value)},null)])}});q.install=e=>{e.component(q.name,q),e.component(U.name,U)},q.register=(e,t,n,r)=>{e.layout=q,t.layout=X,e["layout-pane"]=U,t["layout-pane"]=se},q.registerDesigner=(e,t,n)=>{e.layout=Xe,t.layout=X,e["layout-pane"]=Qe,t["layout-pane"]=se},k.FLayout=q,k.FLayoutPane=U,k.default=q,k.layoutProps=Y,k.layoutPropsResolver=X,Object.defineProperties(k,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});