UNPKG

@farris/ui-vue

Version:

Farris Vue, a Farris Design based Vue3 component library.

1 lines 123 kB
(function(Y,i){typeof exports=="object"&&typeof module<"u"?i(exports,require("vue"),require("lodash-es"),require("../common/index.umd.js"),require("../capsule/index.umd.js"),require("../response-toolbar/index.umd.js"),require("../dynamic-resolver/index.umd.js"),require("../section/index.umd.js"),require("../designer-canvas/index.umd.js")):typeof define=="function"&&define.amd?define(["exports","vue","lodash-es","../common/index.umd.js","../capsule/index.umd.js","../response-toolbar/index.umd.js","../dynamic-resolver/index.umd.js","../section/index.umd.js","../designer-canvas/index.umd.js"],i):(Y=typeof globalThis<"u"?globalThis:Y||self,i(Y.tabs={},Y.Vue,Y.LodashES,Y.common,Y.FCapsule,Y.FResponseToolbar,Y.dynamicResolver,Y.FSection$1,Y.designerCanvas))})(this,function(Y,i,se,me,Dt,Qe,Nt,kt,Ze){"use strict";var uo=Object.defineProperty;var fo=(Y,i,se)=>i in Y?uo(Y,i,{enumerable:!0,configurable:!0,writable:!0,value:se}):Y[i]=se;var te=(Y,i,se)=>fo(Y,typeof i!="symbol"?i+"":i,se);const Je={},Ke={};function ke(n){const{properties:e,title:t,ignore:o}=n,r=o&&Array.isArray(o),s=Object.keys(e).reduce((a,c)=>((!r||!o.find(l=>l===c))&&(a[c]=e[c].type==="object"&&e[c].properties?ke(e[c]):se.cloneDeep(e[c].default)),a),{});if(t&&(!r||!o.find(a=>a==="id"))){const a=t.toLowerCase().replace(/-/g,"_");s.id=`${a}_${Math.random().toString().slice(2,6)}`}return s}function Bt(n){const{properties:e,title:t,required:o}=n;if(o&&Array.isArray(o)){const r=o.reduce((s,a)=>(s[a]=e[a].type==="object"&&e[a].properties?ke(e[a]):se.cloneDeep(e[a].default),s),{});if(t&&o.find(s=>s==="id")){const s=t.toLowerCase().replace(/-/g,"_");r.id=`${s}_${Math.random().toString().slice(2,6)}`}return r}return{type:t}}function ge(n,e={},t){const o=Je[n];if(o){let r=Bt(o);const s=Ke[n];return r=s?s({getSchemaByType:ge},r,e,t):r,r}return null}function $t(n,e){const t=ke(e);return Object.keys(t).reduce((o,r)=>(Object.prototype.hasOwnProperty.call(n,r)&&(o[r]&&se.isPlainObject(o[r])&&se.isPlainObject(n[r]||!n[r])?Object.assign(o[r],n[r]||{}):o[r]=n[r]),o),t),t}function et(n,e){return Object.keys(n).filter(o=>n[o]!=null).reduce((o,r)=>{if(e.has(r)){const s=e.get(r);if(typeof s=="string")o[s]=n[r];else{const a=s(r,n[r],n);Object.assign(o,a)}}else o[r]=n[r];return o},{})}function At(n,e,t=new Map){const o=$t(n,e);return et(o,t)}function jt(n={}){function e(u,p,d,g){if(typeof d=="number")return g[u].length===d;if(typeof d=="object"){const f=Object.keys(d)[0],h=d[f];if(f==="not")return Number(g[u].length)!==Number(h);if(f==="moreThan")return Number(g[u].length)>=Number(h);if(f==="lessThan")return Number(g[u].length)<=Number(h)}return!1}function t(u,p,d,g){return g[u]&&g[u].propertyValue&&String(g[u].propertyValue.value)===String(d)}const o=new Map([["length",e],["getProperty",t]]);Object.keys(n).reduce((u,p)=>(u.set(p,n[p]),u),o);function r(u,p){const d=u;return typeof p=="number"?[{target:d,operator:"length",param:null,value:Number(p)}]:typeof p=="boolean"?[{target:d,operator:"getProperty",param:u,value:!!p}]:typeof p=="object"?Object.keys(p).map(g=>{if(g==="length")return{target:d,operator:"length",param:null,value:p[g]};const f=g,h=p[g];return{target:d,operator:"getProperty",param:f,value:h}}):[]}function s(u){return Object.keys(u).reduce((d,g)=>{const f=r(g,u[g]);return d.push(...f),d},[])}function a(u,p){if(o.has(u.operator)){const d=o.get(u.operator);return d&&d(u.target,u.param,u.value,p)||!1}return!1}function c(u,p){return s(u).reduce((f,h)=>f&&a(h,p),!0)}function l(u,p){const d=Object.keys(u),g=d.includes("allOf"),f=d.includes("anyOf"),h=g||f,S=(h?u[h?g?"allOf":"anyOf":"allOf"]:[u]).map(V=>c(V,p));return g?!S.includes(!1):S.includes(!0)}return{parseValueSchema:l}}const oe={button:{type:"button",name:"按钮"},"response-toolbar":{type:"response-toolbar",name:"工具栏"},"response-toolbar-item":{type:"response-toolbar-item",name:"按钮"},"content-container":{type:"content-container",name:"容器"},"input-group":{type:"input-group",name:"文本"},textarea:{type:"textarea",name:"多行文本"},lookup:{type:"lookup",name:"帮助"},"number-spinner":{type:"number-spinner",name:"数值"},"date-picker":{type:"date-picker",name:"日期"},switch:{type:"switch",name:"开关"},"radio-group":{type:"radio-group",name:"单选组"},"check-box":{type:"check-box",name:"复选框"},"check-group":{type:"check-group",name:"复选框组"},"combo-list":{type:"combo-list",name:"下拉列表"},"response-form":{type:"response-form",name:"卡片面板"},"response-layout":{type:"response-layout",name:"布局容器",icon:"response-layout-3"},"response-layout-item":{type:"response-layout-item",name:"布局",icon:"response-layout-1"},"tree-grid":{type:"tree-grid",name:"树表格"},"tree-grid-column":{type:"tree-grid-column",name:"树表格列"},"data-grid":{type:"data-grid",name:"表格"},"data-grid-column":{type:"data-grid-column",name:"表格列"},module:{type:"Module",name:"模块"},component:{type:"component",name:"组件"},tabs:{type:"tabs",name:"标签页"},"tab-page":{type:"tab-page",name:"标签页项",dependentParentControl:"Tab"},"tab-toolbar-item":{type:"tab-toolbar-item",name:"标签页工具栏按钮"},"html-template":{type:"html-template",name:"模板容器"},"time-picker":{type:"time-picker",name:"时间选择"},section:{type:"section",name:"分组面板"},"section-toolbar":{type:"section-toolbar",name:"分组面板工具栏"},"section-toolbar-item":{type:"section-toolbar-item",name:"分组面板按钮"},splitter:{type:"splitter",name:"分栏面板"},"splitter-pane":{type:"splitter-pane",name:"分栏面板项",dependentParentControl:"Splitter"},"component-ref":{type:"component-ref",name:"组件引用节点"},uploader:{type:"uploader",name:"附件上传"},"page-header":{type:"page-header",name:"页头"},"page-footer":{type:"page-footer",name:"页脚"},"tab-toolbar":{type:"tab-toolbar",name:"标签页工具栏"},fieldset:{type:"fieldset",name:"分组"},"query-solution":{type:"query-solution",name:"筛选方案"},drawer:{type:"drawer",name:"抽屉"},"external-container":{type:"external-container",name:"外部容器",icon:"content-container"},"list-nav":{type:"list-nav",name:"列表导航"},"filter-bar":{type:"filter-bar",name:"筛选条"}},Ot={},Rt={};jt();function Se(n,e,t=new Map,o=(a,c,l,u)=>c,r={},s=a=>a){return Je[e.title]=e,Ke[e.title]=o,Ot[e.title]=r,Rt[e.title]=s,(a={},c=!0)=>{if(!c)return et(a,t);const l=At(a,e,t),u=Object.keys(n).reduce((p,d)=>(p[d]=n[d].default,p),{});return Object.assign(u,l)}}function Ie(n,e){return{customClass:e.class,customStyle:e.style}}function Lt(n,e){if(!n||n.length<1)return null;for(const t of n){if(t.id===e)return t;if(t.children){const o=t.children.find(r=>r.id===e);if(o)return o}}return null}function Ft(){function n(e,t){const{name:o}=t,[r,s]=t.payloads;if(o==="tabChange"||o==="tabRemove")return e[`on${o.charAt(0).toUpperCase()}${o.slice(1)}`];const a=e.contents;if(!a||a.length<1)return null;const c=a.reduce((u,p)=>{const d=p.toolbar&&p.toolbar.buttons||[];return u.push(...d),u},[]);if(!c||c.length<1)return;const l=Lt(c,s);return l?l.onClick||l.click:null}return{resolve:n}}const Be=new Map([["appearance",Ie]]);function qt(n,e){const t=Math.random().toString().slice(2,6),o=e.parentComponentInstance,r=n.getSchemaByType("tab-page");r.id=`tab-page-${t}`,r.title="标题",r.toolbar={id:`tab-page-toolbar-${t}`,buttons:[]};const s=n.getSchemaByType("tabs");Object.assign(s,{id:`tabs-${t}`,appearance:{class:"f-component-tabs f-tabs-has-grid"},contents:[r],activeId:r.id});const a=n.getSchemaByType("section");Object.assign(a,{id:`section-${t}`,appearance:{class:"f-section-tabs f-section-in-mainsubcard"},fill:!1,showHeader:!1,contents:[s]});const c=n.getSchemaByType("content-container");Object.assign(c,{id:`container-${t}`,appearance:{class:"f-struct-wrapper"},contents:[a]});const l=o.schema;switch(l&&l.type){case oe["splitter-pane"].type:{a.appearance.class="f-section-tabs f-section-in-main",s.appearance.class="f-component-tabs";break}}const u=o.elementRef,p=window.getComputedStyle(u);return p&&p.display==="flex"&&(c.appearance.class+=" d-block"),c}function tt(n,e,t){if(t.parentComponentInstance)return qt(n,t);{const r=n.getSchemaByType("tab-page");return e.contents=[r],e}}function Ht(n,e,t){return e}const nt={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/tabs.schema.json",title:"tabs",description:"A Farris Container Component",type:"object",properties:{id:{description:"The unique identifier for a Tabs",type:"string"},type:{description:"The type string of Tabs component",type:"string",default:"tabs"},appearance:{description:"",type:"object",properties:{class:{type:"string"},style:{type:"string"}},default:{}},contents:{description:"",type:"array",default:[]},autoTitleWidth:{description:"",type:"boolean",default:!1},titleWidth:{description:"",type:"number"},titleLength:{description:"",type:"number",default:7},fill:{description:"",type:"boolean",default:!1},visible:{description:"",type:"boolean",default:!0},activeId:{description:"",type:"string",default:""}},required:["id","type","contents"],events:{onTabChange:"切换标签页事件",onTabRemove:"移除标签页事件"}},Pe={tabType:{type:String,default:"default"},autoTitleWidth:{type:Boolean,default:!1},titleLength:{type:Number,default:7},position:{type:String,default:"top"},showDropdown:{type:Boolean,default:!0},scrollStep:{type:Number,default:10},autoResize:{type:Boolean,default:!1},width:{type:Number},height:{type:Number},searchBoxVisible:{type:Boolean,default:!0},titleWidth:{type:Number,default:0},customClass:{type:String,default:""},activeId:{type:String},fill:{type:Boolean,default:!1},justifyContent:{type:String,default:"left"},visible:{type:Boolean,default:!0}},ot=Se(Pe,nt,Be,tt),$e=Object.assign({},Pe,{componentId:{type:String,default:""}}),it=Se($e,nt,Be,tt),rt=Ft();function _t(n,e,t){const o=i.ref([]),r=i.ref(n.activeId||"");let s="";const a=i.ref(!0),c=i.ref([]),l=i.ref(0),u=i.computed(()=>{const T=o.value.find(D=>D.props.id===r.value);return(T==null?void 0:T.props.toolbarPosition)==="inHead"});function p(T,N=!0){const D=T.findIndex(y=>y.props.show!==!1&&!y.props.disabled);if(c.value=[],D!==-1){if(r.value=T[D].props.id,!N)return;const y=T[D];y&&y.props.toolbar&&y.props.toolbar.buttons&&y.props.toolbar.buttons.length&&(c.value=[...y.props.toolbar.buttons])}}function d(T){r.value=T;const N=o.value.find(D=>D.props.id===T);c.value=[],N&&N.props.toolbar&&N.props.toolbar.buttons&&N.props.toolbar.buttons.length&&(c.value=[...N.props.toolbar.buttons]),e.emit("update:activeId",T),e.emit("tabChange",{prevId:s,nextId:r.value})}function g(T){let N=-1;if(!r.value){if(N=T.findIndex(D=>r.value===D.props.id&&D.props.show!==!1&&!D.props.disabled),N>-1)return;s=r.value}p(T,!1),d(r.value)}function f(T){let N=!1;if(T){const D=o.value.find(y=>y.props.id===T);N=!D||D.props.show===!1||D.props.disabled===!0}N?g(o.value):(r.value!==T&&(s=r.value,r.value=T),d(r.value))}i.watch(()=>n.activeId,(T,N)=>{T!==N&&f(T)});function h(T){var D;if(n.autoTitleWidth)return;const N=(D=T.value)==null?void 0:D.querySelectorAll(".st-tab-text");if(!(!N||n.tabType==="pill"))for(let y=0;y<N.length;y++){const A=N[y].parentNode;N[y].scrollWidth>A.offsetWidth?N[y].classList.contains("farris-title-text-custom")||N[y].classList.add("farris-title-text-custom"):N[y].classList.remove("farris-title-text-custom")}}const b=T=>{T.preventDefault(),T.stopPropagation()};function E(T,N,D=!1){const y=o.value.findIndex(A=>A.props.id===N);o.value=o.value.filter(A=>A.props.id!==N),r.value===N&&(s=N,r.value="",p(o.value)),b(T),i.nextTick(()=>{l.value++,h(t),D&&(a.value=!0),e.emit("tabRemove",{removeIndex:y,removeId:N,activeId:r.value})})}function S(T,N=!0){r.value===T&&(r.value="",s=T,f("")),i.nextTick(()=>{l.value++,N&&(a.value=!0)})}function w(T){r.value!==T&&(s=r.value,d(T))}function V(T){o.value.findIndex(D=>D.props.id===T.props.id)===-1&&o.value.push(T),l.value++}function O(T){o.value.findIndex(D=>D.props.id===T.props.id)!==-1&&(o.value.forEach(D=>{D.props.id===T.props.id&&(D=T)}),T.props.id===r.value&&u.value,i.nextTick(()=>{l.value++,h(t)}))}return{activeId:r,addTab:V,changeTitleStyle:h,removeTab:E,selectTab:w,tabPages:o,updateTab:O,toolbarItems:c,needUpdateNavigationLayout:l,checkActiveIdAndSelect:f,toggleShowTab:S,hasInHeadClass:u}}function Ut(n,e,t,o,r){const{activeId:s,removeTab:a,selectTab:c}=r,l=i.computed(()=>{const V={"st-tab-text":!0,"text-truncate":n.tabType==="pill"&&!n.autoTitleWidth,"farris-title-auto":n.autoTitleWidth};return me.getCustomClass(V,e.customTitleClass)}),u=i.computed(()=>({"nav-item":!0,"d-none":e.show!==void 0?!e.show:!1,"f-state-active":e.id===s.value,"f-state-disabled":e.disabled})),p=i.computed(()=>({width:`${e.tabWidth}px`})),d=i.computed(()=>({"nav-link":!0,"tabs-text-truncate":!0,active:e.id===s.value,disabled:e.disabled})),g=i.reactive({content:e.title,overflowShown:!0});function f(V){return n.tabType!=="pill"&&!n.autoTitleWidth?i.withDirectives(i.createVNode("span",{class:l.value,"data-tabid":V.id},[V.title]),[[i.resolveDirective("tooltip"),g]]):i.createVNode("span",{class:l.value,"data-tabid":V.id,title:V.title},[V.title])}function h(V){return V.slots.title?V.slots.title:f}const b=h(t),E=i.ref(e.removeable);function S(){return i.createVNode("span",{class:"st-drop-close",onClick:V=>a(V,e.id)},[i.createVNode("i",{class:"f-icon f-icon-close"},null)])}function w(V){c(e.id),n.tabType==="one-page"&&o.scrollToByPaggId(e.id)}return i.createVNode("li",{class:u.value,style:p.value},[i.createVNode("a",{class:d.value,onClick:w},[b(e),E.value&&S()])])}function Wt(n,e,t,o,r){const{shouldShowNavigationButtons:s}=t,{tabPages:a}=r,c=i.computed(()=>({spacer:!0,"f-utils-fill":!0,"spacer-sides-dropdown":s.value})),l=i.computed(()=>({width:"100%","justify-content":n.justifyContent})),u=i.computed(()=>({nav:!0,"farris-nav-tabs":!0,"flex-nowrap":!0,"nav-fill":n.tabType==="fill","nav-pills":n.tabType==="pills","flex-row":n.position==="top"||n.position==="bottom","flex-column":n.position==="left"||n.position==="right"}));return()=>i.createVNode("div",{class:c.value,style:l.value},[i.createVNode("ul",{class:u.value,ref:e},[a.value.map(p=>Ut(n,p.props,p,o,r))])])}function st(n,e,t,o,r){const s=i.ref(),{shouldShowNavigationButtons:a}=t,{activeId:c,tabPages:l,selectTab:u}=r,p=i.ref(c.value),d=i.computed(()=>l.value.map(b=>({name:b.props.title,value:b.props.id,show:b.props.show,disabled:b.props.disabled}))),g=i.computed(()=>({spacer:!0,"f-utils-fill":!0,"spacer-sides-dropdown":a.value})),f=i.computed(()=>({width:"100%",display:"flex","justify-content":n.justifyContent}));i.onMounted(()=>{s.value&&(e.value=s.value.$el)});function h(b){u(b)}return i.watch(()=>c.value,b=>{b!==p.value&&(p.value=b)},{immediate:!0}),()=>i.createVNode("div",{class:g.value,style:f.value},[i.createVNode(Dt,{items:d.value,modelValue:p.value,"onUpdate:modelValue":b=>p.value=b,onChange:h,ref:s},null)])}function zt(n,e,t,o){const r=i.ref(),{activeId:s,removeTab:a,tabPages:c}=o,{selectAndScrollToTab:l}=t,{hideDropDown:u,searchTabText:p}=e,d=600;let g=null;const f=i.computed(()=>{var A,x;let y=[];return n.searchBoxVisible?y=(A=c.value)==null?void 0:A.filter(m=>m.props.title.includes(p.value)):y=(x=c.value)==null?void 0:x.slice(),y}),h=i.computed(()=>({"dropdown-menu":!0,"tabs-pt28":n.searchBoxVisible,show:!u.value,"d-none":u.value}));let b;function E(y){b=y}i.watch(u,y=>{if(b.value)if(y)r.value.style.width=null;else{const A=b.value.querySelector(".farris-tabs-header"),x=b.value.clientHeight-A.clientHeight-20,C=A.querySelector(".farris-tabs-title").clientWidth-20;r.value.style.maxWidth=C+"px",r.value.style.maxHeight=x+"px",i.nextTick(()=>{const{width:j}=r.value.getClientRects()[0];r.value.style.width=j?j+"px":null})}});function S(y){return{"dropdown-item":!0,"text-truncate":!0,"px-2":!0,disabled:y.props.disabled,active:y.props.id===s.value,"d-none":y.props.show!==!0}}function w(y){y.preventDefault(),y.stopPropagation()}function V(){g&&clearTimeout(g)}function O(){u.value||(g=setTimeout(()=>{u.value=!0},d))}function T(y,A){y.stopPropagation(),l(y,A),u.value=!0}function N(y,A){y.stopPropagation(),a(y,A,!0)}function D(){return i.createVNode("div",{ref:r,class:h.value,onMouseenter:()=>V(),onMouseleave:()=>O()},[n.searchBoxVisible&&i.createVNode("div",{onClick:y=>w(y),class:"pb-1 tabs-li-absolute"},[i.withDirectives(i.createVNode("input",{type:"text",class:"form-control","onUpdate:modelValue":y=>p.value=y},null),[[i.vModelText,p.value]]),i.createVNode("span",{class:"f-icon f-icon-page-title-query tabs-icon-search"},null)]),f.value.length?i.createVNode("ul",{class:"tab-dropdown-menu--items flex-fill"},[f.value.map(y=>i.createVNode("li",{class:S(y),onClick:A=>T(A,y.props)},[y.props.removeable&&y.props.disabled!==!0&&i.createVNode("span",{class:"float-right st-drop-close",onClick:A=>N(A,y.props.id)},[i.createVNode("i",{class:"f-icon f-icon-close"},null)]),i.createVNode("a",{class:"dropdown-title",title:y.props.title},[y.props.title])]))]):i.createVNode("div",{class:"dropdown-no-data"},[i.createTextVNode("没有相关数据")])])}return{renderDropdownMenu:D,setTabsRef:E}}function Xt(n,e,t,o){const{hideDropDown:r}=e,{renderDropdownMenu:s,setTabsRef:a}=zt(n,e,t,o),c=i.ref(n.showDropdown);function l(){return c.value&&i.createVNode(i.Fragment,null,[i.createVNode("button",{class:"btn dropdown-toggle-split dropdown-toggle",onClick:()=>{r.value=!1}},null),s()])}return{renderMorePagesButtton:l,setTabsRef:a}}function at(n,e,t,o){const r=i.ref(!1),{selectTab:s,tabPages:a,needUpdateNavigationLayout:c,activeId:l}=o,u=4,p=i.computed(()=>({btn:!0,"sc-nav-btn":!0,"px-1":!0,"sc-nav-lr":!0,"d-none":!r.value})),d=i.computed(()=>({"btn-group":!0,"sc-nav-btn":!0,dropdown:!0,"d-none":!r.value})),g=i.computed(()=>({btn:!0,"sc-nav-rg":!0,"d-none":!r.value}));function f(S,w){if(!e.value)return;const V=e.value.scrollLeft,O=e.value.scrollWidth-e.value.offsetWidth;if(w>0){if(e.value.scrollLeft>=O)return;e.value.scrollLeft=V+n.scrollStep+S}else if(w<0){if(e.value.scrollLeft<=0)return;e.value.scrollLeft=V-n.scrollStep-S}}function h(S=-1){if(!r.value||!e.value)return;S<0&&(S=a.value.findIndex(N=>N.props.id===l.value));const w=n.tabType==="pills"?".f-capsule-item":".nav-item",V=e.value.querySelectorAll(w),{parentElement:O}=e.value,T=V[S];if(T&&O){const N=O.getBoundingClientRect().left,D=O.getBoundingClientRect().right,y=T.getBoundingClientRect().left,A=T.getBoundingClientRect().right;y<N?f(N-y,-1):D<A&&f(A-D,1),n.tabType==="one-page"&&t.scrollTo(S)}}function b(){var V;if(!e.value)return;const S=e.value,w=(V=e.value)==null?void 0:V.parentElement;r.value=w&&S&&w.offsetWidth<S.scrollWidth-u,r.value&&i.nextTick(()=>{h()})}function E(S,w){w.disabled||(s(w.id),i.nextTick(()=>{h()}))}return i.watch(c,()=>{b()}),{previousButtonClass:p,nextButtonGroupClass:d,nextButtonClass:g,scrollTab:f,selectAndScrollToTab:E,shouldShowNavigationButtons:r,updateNavigationLayout:b}}function lt(n,e){const{tabPages:t}=e,o=i.ref(""),r=i.ref(!0),s=i.computed(()=>n.searchBoxVisible),a=i.computed(()=>s.value?t.value.filter(l=>l.props.title.includes(o.value)):t.value.slice());return i.watch(r,c=>{c||(o.value="")}),{searchTabText:o,hideDropDown:r,shouldShowSearchBox:s,tabsInDropdownMenu:a}}function ct(n,e,t){const o=".farris-tab-page",{tabPages:r}=t;function s(c){const l=e.value;if(l){const u=e.value.querySelectorAll(o);if(u.length>0){const p=u[c],{offsetTop:d}=p,g=d-32>0?d-32:0;l.scrollTop=g}}}function a(c){const l=r.value.findIndex(u=>u.props.id===c);l>-1&&s(l)}return{scrollTo:s,scrollToByPaggId:a}}const be=i.defineComponent({name:"FTabs",props:Pe,emits:["tabChange","tabRemove","update:activeId","Click"],setup(n,e){const t=i.ref(n.tabType),o=i.shallowRef(),r=i.ref(n.customClass),s=i.shallowRef(),a=i.shallowRef(),c=i.ref(),l=_t(n,e,s),{activeId:u,changeTitleStyle:p,tabPages:d,addTab:g,updateTab:f,toolbarItems:h,checkActiveIdAndSelect:b,toggleShowTab:E,hasInHeadClass:S}=l,w=ct(n,a,l),V=at(n,s,w,l),{previousButtonClass:O,nextButtonClass:T,nextButtonGroupClass:N,scrollTab:D,updateNavigationLayout:y}=V,A=lt(n,l),x=Wt(n,s,V,w,l),m=x,C=st(n,s,V,w,l),j=new Map([["default",x],["one-page",m],["pills",C]]);i.computed(()=>{const B=d.value.find(z=>z.props.id===u.value);return B==null?void 0:B.slots});const M=i.computed(()=>n.fill);i.provide("tabs",{activeId:u,addTab:g,updateTab:f,tabPages:d,tabType:t,shouldFillParentContaner:M,toggleShowTab:E});let $=!1;const L=i.computed(()=>({"farris-tabs-header":!0,"farris-tabs-inHead":S.value,"farris-tabs-inContent":!S.value,"farris-tabs-nav-fill":n.tabType==="fill","farris-tabs-nav-pills":n.tabType==="pills"})),X=i.computed(()=>{const B={width:S.value&&n.titleWidth?`${n.titleWidth}%`:""};return B.width&&(B.flex="unset"),B}),q=i.computed(()=>{const B={"farris-tabs":!0,"f-utils-fill-flex-column":M.value,"flex-column":n.position==="top","flex-column-reverse":n.position==="bottom","flex-row":n.position==="left","flex-row-reverse":n.position==="right","one-page":n.tabType==="one-page"};return r.value&&r.value.split(" ").reduce((z,J)=>(z[J]=!0,z),B),B}),_=new ResizeObserver(B=>{B.length&&y()});function G(){c.value&&!$&&(_.observe(c.value),$=!0)}i.watch(()=>n.visible,B=>{i.nextTick(()=>{d.value.length&&b(n.activeId||d.value[0].props.id),y(),p(s),G()})}),i.watch(()=>n.autoTitleWidth,B=>{i.nextTick(()=>{y(),p(s)})}),i.onMounted(()=>{n.visible&&(d.value.length&&b(n.activeId||d.value[0].props.id),i.nextTick(()=>{y(),p(s)}),G())});function W(){return i.createVNode("button",{title:"向左",type:"button",class:O.value,onClick:()=>{D(0,-1)}},null)}function K(){return i.createVNode("button",{title:"向右",type:"button",class:T.value,onClick:()=>{D(0,1)}},null)}const{renderMorePagesButtton:ee,setTabsRef:de}=Xt(n,A,V,l);de(o);const U=(B,z)=>{e.emit("Click",B,z,u.value)};function ce(){return h.value.length?i.createVNode("div",{class:"farris-tabs-toolbar"},[i.createVNode(Qe,{class:"f-utils-fill",alignment:S.value?"right":"left",items:h.value,onClick:U},null)]):null}const ae=j.get(n.tabType)||j.get("default");function I(){var B,z,J,le;return i.createVNode("div",{class:L.value},[i.createVNode("div",{class:"farris-tabs-header-pre"},[(z=(B=e.slots).headerPrefix)==null?void 0:z.call(B)]),i.createVNode("div",{class:"farris-tabs-title scroll-tabs",style:X.value,ref:c},[W(),ae&&ae(),i.createVNode("div",{class:N.value},[K(),ee()])]),ce(),i.createVNode("div",{class:"farris-tabs-header-post"},[(le=(J=e.slots).headerSuffix)==null?void 0:le.call(J)])])}const v=i.computed(()=>({"farris-tabs-content":!0,"f-utils-fill-flex-column":M.value}));function k(){var B,z;return i.createVNode("div",{class:v.value,ref:a},[(z=(B=e.slots).default)==null?void 0:z.call(B)])}return()=>n.visible?i.createVNode("div",{class:q.value,ref:o},[I(),k()]):null}});function Yt(n,e,t){return e&&e.contents&&e.contents.length&&(e.contents.forEach(o=>{o.title&&(o.text=o.title)}),e.buttons=e.contents,delete e.contents),{toolbar:e}}const Gt=new Map([["appearance",Ie],["toolbar",Yt]]),Qt={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/tab-page.schema.json",title:"tab-page",description:"A Farris Container Component",type:"object",properties:{id:{description:"The unique identifier for a tab-page Item",type:"string"},type:{description:"The type string of tab-page Item component",type:"string",default:"tab-page"},contents:{description:"",type:"array",default:[]},title:{description:"",type:"string",default:"标题"},disabled:{description:"",type:"boolean",default:!1},removeable:{description:"",type:"boolean",default:!1},show:{description:"",type:"boolean",default:!0},toolbar:{description:"",type:"object"},tabWidth:{description:"",type:"number"},toolbarPosition:{description:"",type:"string",default:"inHead"},customTitleClass:{description:"",type:"string",default:""},onTabChange:{description:"",type:"切换标签页事件",default:""},onTabRemove:{description:"",type:"string",default:"移除标签页事件"}},required:["id","type","contents"]},Ee={tabWidth:{type:Number},id:{type:String,default:""},customTitleClass:{type:String,default:""},titleOverflow:{type:Boolean,default:!1},title:{type:String,default:""},selected:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},removeable:{type:Boolean,default:!1},show:{type:Boolean,default:!0},toolbar:{type:Object,default:{}},toolbarPosition:{type:String,default:"inHead"}},Ae=Nt.createPropsResolver(Ee,Qt,Gt);function Zt(n){return typeof n=="function"||Object.prototype.toString.call(n)==="[object Object]"&&!i.isVNode(n)}const Me=i.defineComponent({name:"FTabPage",props:Ee,emits:[],setup(n,e){const t=i.inject("tabs"),o=i.ref(n.show),r={slots:e.slots,props:n},s=i.ref((t==null?void 0:t.tabType.value)||"default");i.onMounted(()=>{const f=t==null?void 0:t.tabPages.value.findIndex(h=>h.props.id===n.id);(!f||f===-1)&&(t==null||t.addTab(r))}),i.onUnmounted(()=>{});const a=i.computed(()=>(n==null?void 0:n.id)===(t==null?void 0:t.activeId.value)),c=i.computed(()=>({display:a.value?"":"none"}));i.watch(()=>n,f=>{t==null||t.updateTab({props:f,slots:e.slots})},{immediate:!0,deep:!0}),i.watch(()=>n.show,f=>{t==null||t.toggleShowTab(n.id)});function l(){var h,b;const f=(b=(h=e.slots).default)==null?void 0:b.call(h);return i.createVNode(kt,{"main-title":n.title,class:["farris-tab-page",o.value?"":"f-tab-d-none"]},Zt(f)?f:{default:()=>[f]})}const u=i.computed(()=>{var h;return{"farris-tab-page":!0,"f-tab-d-none":!o.value,"f-utils-fill-flex-column":a.value&&t&&((h=t.shouldFillParentContaner)==null?void 0:h.value)}});function p(){var h,b;const f=(b=(h=e.slots).default)==null?void 0:b.call(h);return i.createVNode("div",{class:u.value,style:c.value},[f])}const g=new Map([["default",p],["one-page",l]]).get(s.value)||p;return()=>g()}});function Jt(n,e,t,o,r,s){const{activeId:a,selectTab:c,removeDesignTab:l,selectDesignTab:u,addTabPageToolbar:p,resetPositionForSelectedElement:d}=r,g=i.computed(()=>({"st-tab-text":!0,"farris-title-auto":n.autoTitleWidth})),f=i.computed(()=>{const C={"farris-component":!0,"nav-item":!0,"f-state-active":e.id===a.value};return C[`${e.id}-design-item`]=!0,C}),h=i.computed(()=>{const C={};return e.tabWidth&&e.tabWidth>0&&(C.width=`${e.tabWidth}px`),C}),b=i.computed(()=>({"nav-link":!0,"tabs-text-truncate":!0,active:e.id===a.value}));function E(C){return i.createVNode("span",{class:g.value,title:C.title},[C.title])}function S(C){return C.slots.title?C.slots.title:E}const w=S(t),V=i.ref(e.removeable);function O(){return i.createVNode("span",{class:"st-drop-close",style:{opacity:.6}},[i.createVNode("i",{class:"f-icon f-icon-close"},null)])}function T(C){c(e.id),n.tabType==="one-page"&&o.scrollToByPaggId(e.id)}function N(C){C&&(C.stopPropagation(),C.preventDefault()),u(C,e.id,s.value)}function D(C){l(C,e.id)}function y(C){p(C,e.id)}i.watch(()=>e.toolbarPosition,()=>{i.nextTick(()=>{d(null)})}),i.watch(()=>e.tabWidth,()=>{i.nextTick(()=>{d(null)})});function A(){return i.createVNode("div",{role:"button",class:"btn component-settings-button",title:"删除",ref:"removeComponent",onClick:C=>D(C)},[i.createVNode("i",{class:"f-icon f-icon-yxs_delete"},null)])}function x(){return i.createVNode("div",{role:"button",class:"btn component-settings-button",title:"新增按钮",ref:"addComponent",onClick:C=>y(C)},[i.createVNode("i",{class:"f-icon f-icon-plus-circle"},null)])}function m(){return i.createVNode("div",{class:"component-btn-group","data-noattach":"true"},[i.createVNode("div",null,[A(),!e.toolbar||!e.toolbar.buttons||!e.toolbar.buttons.length?x():""])])}return i.createVNode("li",{onClick:C=>N(C),class:f.value,style:h.value,pageId:`${e.id}-design-item`},[m(),i.createVNode("a",{class:b.value,onClick:T,id:`${e.id}-design-item`},[w(e),V.value&&O()])])}function Kt(n,e,t,o,r,s,a){const{tabPages:c,selectTab:l,emitSelectionChange:u}=r,p=i.computed(()=>({spacer:!0,"f-utils-fill":!0})),d=i.computed(()=>({width:"100%","justify-content":n.justifyContent})),g=i.computed(()=>({nav:!0,"farris-nav-tabs":!0,"flex-nowrap":!0,"nav-fill":n.tabType==="fill","nav-pills":n.tabType==="pills","flex-row":n.position==="top"||n.position==="bottom","flex-column":n.position==="left"||n.position==="right"})),f=i.computed(()=>({overflow:"auto"})),h=function(b){var S;b&&(b.stopPropagation(),b.preventDefault());const E=ge("tab-page");E.id=`tab_page_${Math.random().toString().slice(2,6)}`,E.title="标题",E.toolbar={id:`${E.id}_toolbar`,buttons:[]},(S=s.value.schema.contents)==null||S.push(E),l(E.id),i.nextTick(()=>{u(E.id,s.value)})};return()=>i.createVNode("div",{class:p.value,style:d.value},[i.createVNode("ul",{class:g.value,style:f.value,ref:e},[c.value.map(b=>Jt(n,b.props,b,o,r,s)),i.createVNode("li",{class:"nav-item no-drag"},[i.createVNode("a",{class:"nav-link tabs-text-truncate",title:"添加页签",onClick:b=>h(b)},[i.createVNode("i",{class:"f-icon f-icon-plus",style:"font-size: 20px;margin: 0 auto;line-height: 24px;"},null)])])])])}function ut(n,e,t){var D;const o=t&&t.getStyles&&t.getStyles()||"",r=t&&t.getDesignerClass&&t.getDesignerClass()||"",s=i.ref();function a(){return(e==null?void 0:e.schema.componentType)==="frame"?!1:t&&t.checkCanMoveComponent?t.checkCanMoveComponent():!0}function c(){return!1}function l(){return(e==null?void 0:e.schema.componentType)==="frame"?!1:t&&t.checkCanDeleteComponent?t.checkCanDeleteComponent():!0}function u(){return(e==null?void 0:e.schema.componentType)==="frame"?!0:t&&t.hideNestedPaddingInDesginerView?t.hideNestedPaddingInDesginerView():!1}function p(y){if(!y||!y.value)return null;if(y.value.schema&&y.value.schema.type==="component")return y.value;const A=i.ref(y==null?void 0:y.value.parent),x=p(A);return x||null}function d(y=e){var C;if(t!=null&&t.getDraggableDesignItemElement)return t.getDraggableDesignItemElement(y);const{componentInstance:A,designerItemElementRef:x}=y;if(!A||!A.value)return null;const{getCustomButtons:m}=A.value;return A.value.canMove||m&&((C=m())!=null&&C.length)?x:d(y.parent)}function g(y){return!!t&&t.canAccepts(y)}function f(){return(e==null?void 0:e.schema.label)||(e==null?void 0:e.schema.title)||(e==null?void 0:e.schema.name)}function h(){}function b(y,A){var x;!y||!A||(t!=null&&t.onAcceptMovedChildElement&&t.onAcceptMovedChildElement(y,A),(x=e==null?void 0:e.setupContext)==null||x.emit("dragEnd"))}function E(y,A){const{componentType:x}=y;let m=ge(x,y,A);t&&t.onResolveNewComponentSchema&&(m=t.onResolveNewComponentSchema(y,m));const C=x.toLowerCase().replace(/-/g,"_");return m&&!m.id&&m.type===x&&(m.id=`${C}_${Math.random().toString().slice(2,6)}`),m}function S(y){y&&t!=null&&t.onChildElementMovedOut&&t.onChildElementMovedOut(y)}function w(...y){if(t&&t.getPropsConfig)return t.getPropsConfig(...y)}function V(y){if(!y)return;const A=e==null?void 0:e.schema,{formSchemaUtils:x}=y;if(A&&x.getExpressions().length){const m=x.getExpressions().findIndex(C=>C.target===A.id);m>-1&&x.getExpressions().splice(m,1)}}function O(y){t&&t.onRemoveComponent&&t.onRemoveComponent(),V(y),e!=null&&e.schema.contents&&e.schema.contents.map(A=>{let x=A.id;A.type==="component-ref"&&(x=A.component);const m=n.value.querySelectorAll(`#${x}-design-item`);m!=null&&m.length&&Array.from(m).map(C=>{var j;(j=C==null?void 0:C.componentInstance)!=null&&j.value.onRemoveComponent&&C.componentInstance.value.onRemoveComponent(y)})})}function T(){if(t&&t.getCustomButtons)return t.getCustomButtons()}function N(y){if(t&&t.onPropertyChanged)return t.onPropertyChanged(y)}return s.value={canMove:a(),canSelectParent:c(),canDelete:l(),canNested:!u(),contents:e==null?void 0:e.schema.contents,elementRef:n,parent:(D=e==null?void 0:e.parent)==null?void 0:D.componentInstance,schema:e==null?void 0:e.schema,styles:o,designerClass:r,canAccepts:g,getBelongedComponentInstance:p,getDraggableDesignItemElement:d,getDraggingDisplayText:f,getPropConfig:w,getDragScopeElement:h,onAcceptMovedChildElement:b,onChildElementMovedOut:S,addNewChildComponentSchema:E,triggerBelongedComponentToMoveWhenMoved:!!t&&t.triggerBelongedComponentToMoveWhenMoved||i.ref(!1),triggerBelongedComponentToDeleteWhenDeleted:!!t&&t.triggerBelongedComponentToDeleteWhenDeleted||i.ref(!1),onRemoveComponent:O,getCustomButtons:T,onPropertyChanged:N},s}class dt{getTemplateRule(e,t){const o=t==null?void 0:t.formSchemaUtils,r=o==null?void 0:o.getFormTemplateRule(),s={canAccept:!0,canDelete:!0,canMove:!0};if(!r)return s;const a=this.getComponentContext(e),{componentClassList:c}=a;return c.forEach(l=>{if(!l||!r[l])return;const{canMove:u,canDelete:p,canAccept:d}=r[l];s.canMove=s.canMove&&this.resolveRuleValue(u,a),s.canDelete=s.canDelete&&this.resolveRuleValue(p,a),s.canAccept=s.canAccept&&this.resolveRuleValue(d,a)}),s}resolveRuleValue(e,t){return typeof e=="boolean"?e:this.parseRuleValueSchema(e,t)}parseRuleValueSchema(e,t){const o=e.invalidContext||[];let r=!0;for(const s of o){if(s.firstLevelChild){if(s.firstLevelChild.class){const{firstLevelChildClassList:a}=t;if(a&&!a.includes(s.firstLevelChild.class)){r=!1;continue}}if(s.firstLevelChild.type){const{firstLevelChildSchema:a}=t;if(!a||a.type!==s.firstLevelChild.type){r=!1;continue}}}if(s.secondLevelChild){if(s.secondLevelChild.class){const{secondLevelChildClassList:a}=t;if(a&&!a.includes(s.secondLevelChild.class)){r=!1;continue}}if(s.secondLevelChild.type){const{secondLevelChildSchema:a}=t;if(!a||a.type!==s.secondLevelChild.type){r=!1;continue}}}if(s.parent){if(s.parent.class){const{parentClassList:a}=t;if(a&&!a.includes(s.parent.class)){r=!1;continue}}if(s.parent.type){const{parentSchema:a}=t;if(a&&a.type!==s.parent.type){r=!1;continue}}}r=!0;break}return!r}getComponentContext(e){var b,E,S,w;const t=e.schema,o=t.appearance&&t.appearance.class||"",r=o.split(" ")||[],s=t.contents||[],a=s.length?s[0]:null,c=a&&a.appearance?a.appearance.class:"",l=c?c.split(" "):[],u=(b=a==null?void 0:a.contents)!=null&&b.length?a==null?void 0:a.contents[0]:null,p=u&&u.appearance?u.appearance.class:"",d=p?p.split(" "):[],g=t.type==="component"?(S=(E=e.parent)==null?void 0:E.parent)==null?void 0:S.schema:(w=e.parent)==null?void 0:w.schema,f=g&&g.appearance&&g.appearance.class||"",h=f?f.split(" "):[];return{componentClass:o,componentClassList:r,childContents:s,firstLevelChildSchema:a,firstLevelChildClass:c,firstLevelChildClassList:l,secondLevelChildSchema:u,secondLevelChildClass:p,secondLevelChildClassList:d,parentSchema:g,parentClass:f,parentClassList:h}}}const en=i.ref(0);function tn(){en.value++}const we=i.ref(0);function nn(n,e){const t=e.getBoundingClientRect(),o=n.getBoundingClientRect(),r=o.top>=t.top,s=o.top<=t.bottom;return r&&s}function je(n){const e=n.querySelector(".component-btn-group");if(!e)return;e.style.display="";const t=e.getBoundingClientRect();if(!(t.top===0&&t.left===0)){const o=e.querySelector("div");if(o){const r=o.getBoundingClientRect();o.style.top=t.top+"px";let s=t.left-r.width;const a=document.querySelector(".editorDiv");if(a){const c=a.getBoundingClientRect();s<c.left&&({left:s}=n.getBoundingClientRect())}o.style.left=s+"px"}}}function on(n){if(!window.scrollContainerList)return;const e=Array.from(window.scrollContainerList);if(e.length&&e.length===1){const t=e[0],o=document.querySelector(`[id=${t}]`);if(o&&o.contains(n))return o}}function Oe(n){if(!n)return;const e=n.getBoundingClientRect();if(e.width===0&&e.height===0)return;const t=n.querySelector(".component-btn-group");if(t){let o=!0;const r=on(n);if(r&&(o=nn(n,r)),!o){t.style.display="none";return}je(n)}}function rn(n){if(!n)return;let e;n.className.includes("dgComponentSelected")?e=n:e=n.querySelector(".dgComponentSelected"),e&&Oe(e)}function sn(n){const{formSchemaUtils:e,formStateMachineUtils:t}=n;function o(l,u=""){return{path:u+l.code,field:l.id,fullPath:l.code}}function r(l,u=""){return e.getViewModelById(l).states.map(d=>o(d,u))}function s(l){const u=e.getRootViewModelId(),p=r(l);if(l===u)return p;const d=r(u,"root-component.");return[...p,...d]}function a(l){return l.binding&&l.binding.path||l.id||""}function c(){return t&&t.getRenderStates()||[]}return{getVariables:s,getControlName:a,getStateMachines:c}}class an{constructor(e){te(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'"}]);te(this,"expressionNames",{compute:"计算表达式",dependency:"依赖表达式",validate:"验证表达式",dataPicking:"帮助前表达式",visible:"可见表达式",readonly:"只读表达式",required:"必填表达式"});te(this,"getExpressionConverter",(e,t)=>({convertFrom:(o,r,s,a)=>{const c=s.getExpressionRuleValue(e,t||r);return c&&c.value||""},convertTo:(o,r,s,a,c)=>{var l;if(r==="dataPicking"&&(s!=null&&s.target)){const u=`${s.target}_dataPicking`;((l=s.rules)==null?void 0:l.some(d=>d.id===u&&d.value))?o.dictPickingExpressionId=u:delete o.dictPickingExpressionId}a.updateExpression(s)}}));this.formSchemaService=e}getExpressionRule(e,t){const o=this.formSchemaService.getExpressions();if(!o)return"";const r=o.find(a=>a.target===e);if(!r)return"";const s=r.rules.find(a=>a.type===t);return s||""}getContextFormVariables(){const{module:e}=this.formSchemaService.getFormSchema();if(!e.viewmodels||e.viewmodels.length===0)return[];const t=this.formSchemaService.getRootViewModelId(),o=this.formSchemaService.getViewModelById(t);if(!o||!o.states||o.states.length===0)return[];const r=[];return o.states.forEach(s=>{r.push({key:s.code,name:s.name,description:s.name,category:s.category})}),r}createTreeNode(e,t,o="label"){return{id:e.id,name:e.name,bindingPath:e[o],parents:t}}buildEntityFieldsTreeData(e=null,t){const o=[];return e==null||e.forEach(r=>{var c;const s=this.createTreeNode(r,t);let a=[];(c=r.type)!=null&&c.fields&&(a=this.buildEntityFieldsTreeData(r.type.fields,[...t,r.label])),o.push({data:s,children:a,expanded:!0})}),o}buildChildEntityTreeData(e=null,t){const o=[];return e==null||e.forEach(r=>{var l,u;const s=this.createTreeNode(r,t),a=this.buildEntityFieldsTreeData((l=r.type)==null?void 0:l.fields,[...t,r.label]),c=this.buildChildEntityTreeData((u=r.type)==null?void 0:u.entities,[...t,r.label]);c!=null&&c.length&&(a==null||a.push(...c)),o.push({data:s,children:a||[],expanded:!0})}),o}getEntitiesTreeData(){const e=this.formSchemaService.getSchemaEntities();if(!(e!=null&&e.length))return[];const t=e[0];if(!(t!=null&&t.type))return[];const o=this.buildEntityFieldsTreeData(t.type.fields,[t.code]),r=this.buildChildEntityTreeData(t.type.entities,[t.code]);return r!=null&&r.length&&(o==null||o.push(...r)),{entityCode:t.code,fields:[{data:this.createTreeNode(t,[],"code"),children:o||[]}]}}getEntitiesAndVariables(){return{entities:this.getEntitiesTreeData(),variables:{session:{name:"系统变量",items:this.sessionVariables,visible:!1},forms:{name:"表单变量",items:this.getContextFormVariables(),visible:!0}}}}onBeforeOpenExpression(e,t,o){const r=o==="Field"?e.binding.field:e.id,s=this.getExpressionRule(r,t),a=this.getEntitiesAndVariables(),c={message:["validate","required","dataPicking"].includes(t)&&s?s.message:"",...a};return s.messageType!=null&&(c.messageType=s.messageType),c}buildRule(e,t,o,r){const{expression:s,message:a,messageType:c}=t,l={id:`${e}_${o}`,type:o,value:s};return(o==="validate"||o==="dataPicking"||o==="required")&&(l.message=a),o==="dataPicking"&&(l.messageType=c),o==="validate"&&r&&(l.elementId=r),l}getExpressionData(){const{expressions:e}=this.formSchemaService.getFormSchema().module;return e||[]}updateExpression(e,t,o,r){const s=t==="Field"?e.binding.field:e.id,a=this.buildRule(s,o,r,e.type==="form-group"?e.id:"");let l=this.getExpressionData().find(p=>p.targetType===t&&p.target===s);const u=p=>p.value.trim()==="";if(l){const p=l.rules.find(d=>d.id===a.id);if(p)u(a)?l.rules=l.rules.filter(d=>d.id!==a.id):(Object.assign(p,a),r==="validate"&&e.type==="form-group"&&(p.elementId=e.id));else{if(u(a))return null;l.rules=l.rules||[],l.rules.push(a)}}else{if(u(a))return null;l={target:`${s}`,rules:[a],targetType:t}}return l}getExpressionEditorOptions(e,t,o,r){return o.reduce((s,a)=>{var l,u;const c=t==="Field"?(l=e==null?void 0:e.binding)==null?void 0:l.field:e.id;return s[a]={hide:t==="Field"?!!((u=e==null?void 0:e.binding)!=null&&u.field):!1,description:"",title:this.expressionNames[a],type:"string",$converter:this.getExpressionConverter(c),editor:{type:"expression-editor",singleExpand:!1,dialogTitle:`${this.expressionNames[a]}编辑器`,showMessage:a==="validate"||a==="dataPicking"||a==="required",showMessageType:a==="dataPicking",beforeOpen:()=>this.onBeforeOpenExpression(e,a,t),onSubmitModal:p=>{const d=this.updateExpression(e,t,p,a);if(r){const g=this.buildRule(c,p,a);r(g)}return d}}},s},{})}getExpressionInfo(e,t,o){const r=t==="Field"?e.binding.field:e.id,s=this.getExpressionRule(r,o),a={value:s&&s.value,targetId:r,targetType:t,expressionType:o};return s&&s.message&&(a.message=s.message),a}getExpressionConfig(e,t,o=["compute","dependency","validate"],r){return{description:"表达式",title:"表达式",properties:{...this.getExpressionEditorOptions(e,t,o,r)}}}getExpressionOptions(e,t,o){const r=this.getExpressionInfo(e,t,o);return{dialogTitle:`${this.expressionNames[o]}编辑器`,singleExpand:!1,showMessage:o==="required",beforeOpen:()=>this.onBeforeOpenExpression(e,o,t),expressionInfo:r}}}class xe{constructor(e,t){te(this,"componentId");te(this,"viewModelId");te(this,"eventsEditorUtils");te(this,"formSchemaUtils");te(this,"formMetadataConverter");te(this,"designViewModelUtils");te(this,"designViewModelField");te(this,"controlCreatorUtils");te(this,"designerHostService");te(this,"schemaService",null);te(this,"metadataService",null);te(this,"propertyConfig",{type:"object",categories:{}});var o;this.componentId=e,this.designerHostService=t,this.eventsEditorUtils=t.eventsEditorUtils,this.formSchemaUtils=t.formSchemaUtils,this.formMetadataConverter=t.formMetadataConverter,this.viewModelId=((o=this.formSchemaUtils)==null?void 0:o.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 o;const t=e.binding&&e.binding.type==="Form"&&e.binding.field;if(t){if(!this.designViewModelField){const r=this.designViewModelUtils.getDgViewModel(this.viewModelId);this.designViewModelField=r.fields.find(s=>s.id===t)}e.updateOn=(o=this.designViewModelField)==null?void 0:o.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:oe[e.type].name}]}}}}}getAppearanceConfig(e=null,t={},o){const r={title:"外观",description:"Appearance"},s={class:{title:"class样式",type:"string",description:"组件的CSS样式",$converter:"/converter/appearance.converter"},style:{title:"style样式",type:"string",description:"组件的样式",$converter:"/converter/appearance.converter"}};for(const a in t)s[a]=Object.assign(s[a]||{},t[a]);return{...r,properties:{...s},setPropertyRelates(a,c){if(a){switch(a&&a.propertyID){case"class":case"style":{we.value++;break}}o&&o(a,e,c)}}}}getPropertyEditorParams(e,t=[],o="visible",r={},s={}){const{getVariables:a,getControlName:c,getStateMachines:l}=sn(this.designerHostService),u=this.getRealTargetType(e),p=t&&t.length>0?t:["Const","Variable","StateMachine","Expression"],d={type:"property-editor",propertyTypes:p};return p.map(g=>{switch(g){case"Const":Object.assign(d,{constType:"enum",constEnums:[{id:!0,name:"是"},{id:!1,name:"否"}]},r);break;case"Expression":d.expressionConfig=this.getExpressionOptions(e,u,o);break;case"StateMachine":d.stateMachines=l();break;case"Variable":Object.assign(d,{controlName:c(e),newVariablePrefix:"is",newVariableType:"Boolean",variables:a(this.viewModelId),onBeforeOpenVariables:f=>{f.value=a(this.viewModelId)}},s);break}}),d}getVisibleProperty(e,t=""){return{visible:{title:"是否可见",type:"boolean",description:"运行时组件是否可见",editor:this.getPropertyEditorParams(e,t==="gridFieldEditor"?["Const","Expression"]:["Const","Variable","StateMachine","Expression"],"visible")}}}getBehaviorConfig(e,t="",o={},r){const s={title:"行为",description:""},a=this.getVisibleProperty(e,t);for(const l in o)a[l]=Object.assign(a[l]||{},o[l]);const c=this;return{...s,properties:{...a},setPropertyRelates(l,u){if(l){switch(l.propertyID){case"disabled":case"readonly":case"visible":c.afterMutilEditorChanged(e,l);break}r&&r(l,u)}}}}afterMutilEditorChanged(e,t){this.addNewVariableToViewModel(t,this.viewModelId),this.updateExpressionValue(t),this.clearExpression(t,e)}updateElementByParentContainer(e,t){const o=t&&t.parent&&t.parent.schema;if(!o)return;const r=o.contents.findIndex(a=>a.id===e),s=se.cloneDeep(o.contents[r]);o.contents.splice(r,1),o.contents.splice(r,0,s),tn()}addNewVariableToViewModel(e,t){const o=e.propertyValue;if(!(o&&typeof o=="object")||!(o.type==="Variable"&&o.isNewVariable))return;const a={id:o.field,category:"locale",code:o.fullPath,name:o.fullPath,type:o.newVariableType||"String"};delete o.newVariableType,delete o.isNewVariable,this.formSchemaUtils.getVariableByCode(a.code)||this.formSchemaUtils.getViewModelById(t).states.push(a)}updateExpressionValue(e){const t=e.propertyValue;if(!((t&&t.type)==="Expression"&&t.expressionInfo))return;const{expressionId:s,expressionInfo:a}=t,{targetId:c,targetType:l,expressionType:u,value:p,message:d}=a,g=this.formSchemaUtils.getModule();g.expressions??(g.expressions=[]);const{expressions:f}=g;let h=f.find(E=>E.target===c);h||(h={target:c,rules:[],targetType:l},f.push(h));const b=h.rules.find(E=>E.type===u);if(b)b.value=p,b.message=d;else{const E={id:s,type:u,value:p,message:d};h.rules.push(E)}delete t.expressionInfo}clearExpression(e,t){const o=e.propertyValue;if(o&&o.type==="Expression")return;const s=e.propertyID,a=this.formSchemaUtils.getExpressions(),c=t.binding?t.binding.field:t.id,l=a.find(u=>u.target===c);!l||!l.rules||(l.rules=l.rules.filter(u=>u.type!==s))}getExpressionOptions(e,t,o){return new an(this.formSchemaUtils).getExpressionOptions(e,t,o)}getRealTargetType(e){return["response-toolbar-item","tab-toolbar-item","section-toolbar-item"].indexOf(e.type)>-1?"Button":e.binding&&e.binding.field?"Field":"Container"}}class ln extends xe{constructor(e,t){super(e,t)}getPropertyConfig(e){return this.getBasicPropConfig(e),this.getAppearanceProperties(e),this.getBehaviorProperties(e),this.getToolbarProperties(e),this.propertyConfig}getBehaviorProperties(e){this.propertyConfig.categories.behavior={description:"",title:"行为",properties:{removeable:{description:"是否可移除",type:"boolean",title:"是否可移除"},disabled:{description:"是否禁用",type:"boolean",title:"是否禁用"},show:{description:"是否可见",type:"boolean",title:"是否可见"}}}}getBasicPropConfig(e){this.propertyConfig.categories.basic={description:"Basic Infomation",title:"基本信息",properties:{id:{description:"标签页项的标识",title:"标识",type:"string",readonly:!0},title:{description:"标签页项的标题",title:"标题",type:"string"}},setPropertyRelates(t,o){if(t)switch(t&&t.propertyID){case"title":{t.needRefreshControlTree=!0;break}}}}}getAppearanceProperties(e){this.propertyConfig.categories.appearance={title:"外观",description:"",properties:{customTitleClass:{title:"标题样式",type:"string",description:"为标签页的标题指定样式"},tabWidth:{description:"为标签页的标题指定宽度",type:"number",title:"标签页的标题宽度(px)",editor:{nullable:!0,min:0,decimals:0}}}}}getToolbarProperties(e){this.propertyConfig.categories.toolbar={title:"工具栏",description:"",properties:{toolbarPosition:{title:"工具栏位置",type:"string",description:"为工具栏指定位置",editor:{type:"combo-list",data:[{id:"inHead",name:"标题区域"},{id:"inContent",name:"内容区域"}]}}}}}}class cn extends xe{constructor(e,t){super(e,t)}getPropertyConfig(e){this.propertyConfig.categories.basic=this.getBasicPropConfig(e),this.propertyConfig.categories.appearance=this.getAppearanceProperties(e);const t=this.getCurrentTabPages(e),o=this.getPropertyEditorParams(e,["Const","Variable"],"activeId",{constType:"enum",constEnums:t},{newVariableType:"String"});return this.propertyConfig.categories.behavior=this.getBehaviorConfig(e,"",{activeId:{title:"默认选中标签页",type:"string",description:"默认选中标签页",defaultValue:t.length>0?t[0].id:"",editor:o}},(r,s)=>{switch(r.propertyID){case"activeId":this.addNewVariableToViewModel(r,this.viewModelId);break}}),this.getEventPropConfig(e),this.propertyConfig}getAppearanceProperties(e){return{title:"外观",description:"Appearance",properties:{class:{title:"class样式",type:"string",description:""},titleWidth:{description:"标题区域宽度占标签头部区域的横向比例",type:"number",title:"标题区域宽度(%)",editor:{min:0,decimals:0,max:100,nullable:!0}},autoTitleWidth:{description:"是,则标题显示全部字符;否,则标题最多显示20个字符",type:"boolean",title:"标题自适应宽度"},fill:{description:"flex布局下,是否填充满剩余部分",type:"boolean",title:"填充"}}}}getCurrentTabPages(e){const t=e.contents||[],o=[];return t.forEach(r=>{o.push({name:r.title,id:r.id})}),o}getEventPropConfig(e){const t=[{label:"onTabChange",name:"切换标签页事件"},{label:"onTabRemove",name:"移除标签页事件"}],o=this,r=o.eventsEditorUtils.formProperties(e,o.viewModelId,t),s={};s[o.viewModelId]={type:"events-editor",editor:{initialData:r}},this.propertyConfig.categories.eventsEditor={title:"事件",hideTitle:!0,properties:s,refreshPanelAfterChanged:!0,tabId:"commands",tabName:"交互",setPropertyRelates(a,c){const l=a.propertyValue;delete e[o.viewModelId],l&&(l.setPropertyRelates=this.setPropertyRelates,o.eventsEditorUtils.saveRelatedParameters(e,o.viewModelId,l.events,l))}}}}function un(n,e){const t=n.schema,o=new dt,{canMove:r,canAccept:s,canDelete:a}=o.getTemplateRule(n,e);function c(h){return s}function l(){return a}function u(){return r}function p(){return!r&&!a}function d(h){var S;return(((S=document.querySelector(".dgComponentFocused"))==null?void 0:S.id)===`${t.id}-design-item`?new cn(h,e):new ln(h,e)).getPropertyConfig(t)}function g(){n.designerItemElementRef.value&&i.nextTick(()=>{const h=n.designerItemElementRef.value.querySelector(".dgComponentSelected");h!=null&&h.className.includes("dgComponentSelected")&&h.click()})}function f(h){if(!h)return;const{changeObject:b}=h;b&&b.propertyID==="title"&&g()}return{canAccepts:c,checkCanDeleteComponent:l,checkCanMoveComponent:u,getPropsConfig:d,hideNestedPaddingInDesginerV