@farris/ui-vue
Version:
Farris Vue, a Farris Design based Vue3 component library.
1 lines • 427 kB
JavaScript
(function(ee,o){typeof exports=="object"&&typeof module<"u"?o(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"),require("../button-edit/index.umd.js"),require("../list-view/index.umd.js"),require("../loading/index.umd.js"),require("../data-view/index.umd.js"),require("../checkbox/index.umd.js"),require("../modal/index.umd.js"),require("../transfer/index.umd.js"),require("../tabs/index.umd.js"),require("../order/index.umd.js"),require("../condition/index.umd.js"),require("../filter-bar/index.umd.js"),require("../tooltip/index.umd.js"),require("../pagination/index.umd.js"),require("../button/index.umd.js"),require("../search-box/index.umd.js"),require("../tags/index.umd.js"),require("../dynamic-form/index.umd.js"),require("../property-panel/index.umd.js"),require("../accordion/index.umd.js"),require("../avatar/index.umd.js"),require("../../designer/button-edit/index.umd.js"),require("../button-group/index.umd.js"),require("../calendar/index.umd.js"),require("../../designer/checkbox/index.umd.js"),require("../../designer/checkbox-group/index.umd.js"),require("../combo-list/index.umd.js"),require("../combo-tree/index.umd.js"),require("../component/index.umd.js"),require("../color-picker/index.umd.js"),require("../content-container/index.umd.js"),require("../date-picker/index.umd.js"),require("../../designer/data-grid/index.umd.js"),require("../dropdown/index.umd.js"),require("../events-editor/index.umd.js"),require("../field-selector/index.umd.js"),require("../binding-selector/index.umd.js"),require("../image-cropper/index.umd.js"),require("../../designer/input-group/index.umd.js"),require("../layout/index.umd.js"),require("../list-nav/index.umd.js"),require("../lookup/index.umd.js"),require("../mapping-editor/index.umd.js"),require("../nav/index.umd.js"),require("../number-range/index.umd.js"),require("../number-spinner/index.umd.js"),require("../page-header/index.umd.js"),require("../page-footer/index.umd.js"),require("../progress/index.umd.js"),require("../query-solution/index.umd.js"),require("../../designer/radio-group/index.umd.js"),require("../rate/index.umd.js"),require("../response-layout/index.umd.js"),require("../response-layout-editor/index.umd.js"),require("../smoke-detector/index.umd.js"),require("../splitter/index.umd.js"),require("../step/index.umd.js"),require("../switch/index.umd.js"),require("../text/index.umd.js"),require("../time-picker/index.umd.js"),require("../tree-view/index.umd.js"),require("../uploader/index.umd.js"),require("../verify-detail/index.umd.js"),require("../video/index.umd.js"),require("../textarea/index.umd.js"),require("../schema-selector/index.umd.js"),require("../tree-grid/index.umd.js"),require("../event-parameter/index.umd.js"),require("../filter-condition-editor/index.umd.js"),require("../fieldset/index.umd.js"),require("../sort-condition-editor/index.umd.js"),require("../menu-lookup/index.umd.js"),require("../drawer/index.umd.js"),require("../json-editor/index.umd.js"),require("../property-editor/index.umd.js"),require("../expression-editor/index.umd.js"),require("../code-editor/index.umd.js"),require("../html-template/index.umd.js"),require("../external-container/index.umd.js"),require("@vueuse/core"),require("../notify/index.umd.js"),require("../popover/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","../button-edit/index.umd.js","../list-view/index.umd.js","../loading/index.umd.js","../data-view/index.umd.js","../checkbox/index.umd.js","../modal/index.umd.js","../transfer/index.umd.js","../tabs/index.umd.js","../order/index.umd.js","../condition/index.umd.js","../filter-bar/index.umd.js","../tooltip/index.umd.js","../pagination/index.umd.js","../button/index.umd.js","../search-box/index.umd.js","../tags/index.umd.js","../dynamic-form/index.umd.js","../property-panel/index.umd.js","../accordion/index.umd.js","../avatar/index.umd.js","../../designer/button-edit/index.umd.js","../button-group/index.umd.js","../calendar/index.umd.js","../../designer/checkbox/index.umd.js","../../designer/checkbox-group/index.umd.js","../combo-list/index.umd.js","../combo-tree/index.umd.js","../component/index.umd.js","../color-picker/index.umd.js","../content-container/index.umd.js","../date-picker/index.umd.js","../../designer/data-grid/index.umd.js","../dropdown/index.umd.js","../events-editor/index.umd.js","../field-selector/index.umd.js","../binding-selector/index.umd.js","../image-cropper/index.umd.js","../../designer/input-group/index.umd.js","../layout/index.umd.js","../list-nav/index.umd.js","../lookup/index.umd.js","../mapping-editor/index.umd.js","../nav/index.umd.js","../number-range/index.umd.js","../number-spinner/index.umd.js","../page-header/index.umd.js","../page-footer/index.umd.js","../progress/index.umd.js","../query-solution/index.umd.js","../../designer/radio-group/index.umd.js","../rate/index.umd.js","../response-layout/index.umd.js","../response-layout-editor/index.umd.js","../smoke-detector/index.umd.js","../splitter/index.umd.js","../step/index.umd.js","../switch/index.umd.js","../text/index.umd.js","../time-picker/index.umd.js","../tree-view/index.umd.js","../uploader/index.umd.js","../verify-detail/index.umd.js","../video/index.umd.js","../textarea/index.umd.js","../schema-selector/index.umd.js","../tree-grid/index.umd.js","../event-parameter/index.umd.js","../filter-condition-editor/index.umd.js","../fieldset/index.umd.js","../sort-condition-editor/index.umd.js","../menu-lookup/index.umd.js","../drawer/index.umd.js","../json-editor/index.umd.js","../property-editor/index.umd.js","../expression-editor/index.umd.js","../code-editor/index.umd.js","../html-template/index.umd.js","../external-container/index.umd.js","@vueuse/core","../notify/index.umd.js","../popover/index.umd.js"],o):(ee=typeof globalThis<"u"?globalThis:ee||self,o(ee["schema-selector"]={},ee.Vue,ee.LodashES,ee.common,ee.FCapsule,ee.FResponseToolbar,ee.dynamicResolver,ee.FSection$1,ee.designerCanvas,ee.FButtonEdit$1,ee.FListView$1,ee.FLoading$1,ee.dataView,ee.checkbox,null,ee.FTransfer,ee.FTabs$1,ee.FOrder,null,ee.FFilterBar,ee.FTooltip,ee.FPagination$1,ee.FButton,ee.FSearchBox$1,ee.FTags,ee.FDynamicForm,null,ee.FAccordion,ee.FAvatar,ee.FButtonEdit$2,ee.FButtonGroup,ee.FCalendar,ee.FCheckbox,ee.FCheckboxGroup,ee.FComboList,ee.FComboTree,ee.FComponent,ee.FColorPicker,ee.FContentContainer,ee.FDatePicker,ee.FDataGrid,ee.FDropdown,ee.FEventsEditor,ee.FFieldSelector,ee.FBindingSelector,ee.FImageCropper,ee.FInputGroup,ee.FLayout,ee.FListNav,ee.FLookup,ee.FMappingEditor,ee.FNav,ee.FNumberRange,ee.FNumberSpinner,ee.FPageHeader,ee.FPageFooter,ee.FProgress,ee.FQuerySolution,ee.FRadioGroup,ee.FRate,ee.FResponseLayout,ee.FResponseLayoutEditorSetting,ee.FSmokeDetector,ee.FSplitter,ee.FStep,ee.FSwitch,ee.FText,ee.FTimePicker,ee.FTreeview,ee.FUploader,ee.FVerifyDetail,ee.FVideo,ee.FTextArea,ee.FSchemaSelector$1,ee.FTreeGrid$1,ee.FEventParameter,ee.FFilterConditionEditor,ee.FFieldset,ee.FSortConditionEditor,ee.FMenuLookup,ee.FDrawer,ee.FJsonEditor,ee.FPropertyEditor,ee.FExpressionEditor,ee.FCodeEditor,ee.FHtmlTemplate,null,ee.VueUseCore,null,ee.FPopover))})(this,function(ee,o,Fe,Ne,Wn,gn,qn,zn,Gn,nr,Yn,or,xe,Jt,xf,ar,rr,ir,Sf,sr,Un,lr,cr,ur,Xn,yn,Tf,dr,fr,pr,mr,hr,Qn,Kn,vn,gr,yr,vr,br,wr,Cr,xr,Sr,Tr,Vr,Nr,_r,kr,Ir,Fr,Mr,Or,Dr,Er,Pr,jr,Br,$r,Rr,Lr,Hr,Ar,Wr,qr,zr,Gr,Yr,Ur,Xr,Qr,Kr,Jr,Zr,ei,ti,ni,oi,ai,ri,ii,si,li,ci,ui,di,fi,Vf,Jn,Nf,pi){"use strict";var wf=Object.defineProperty;var Cf=(ee,o,Fe)=>o in ee?wf(ee,o,{enumerable:!0,configurable:!0,writable:!0,value:Fe}):ee[o]=Fe;var A=(ee,o,Fe)=>Cf(ee,typeof o!="symbol"?o+"":o,Fe);const Zn={injectSymbolToken:{type:Symbol},viewOptions:{type:Array,default:[]},viewType:{type:String,default:"Tabs"},editorParams:{type:Object,default:null},showFooter:{type:Boolean,default:!1},validateFunction:{type:Function,default:null}},eo={},to={};function bn(e){const{properties:n,title:t,ignore:a}=e,r=a&&Array.isArray(a),i=Object.keys(n).reduce((s,l)=>((!r||!a.find(c=>c===l))&&(s[l]=n[l].type==="object"&&n[l].properties?bn(n[l]):Fe.cloneDeep(n[l].default)),s),{});if(t&&(!r||!a.find(s=>s==="id"))){const s=t.toLowerCase().replace(/-/g,"_");i.id=`${s}_${Math.random().toString().slice(2,6)}`}return i}function mi(e){const{properties:n,title:t,required:a}=e;if(a&&Array.isArray(a)){const r=a.reduce((i,s)=>(i[s]=n[s].type==="object"&&n[s].properties?bn(n[s]):Fe.cloneDeep(n[s].default),i),{});if(t&&a.find(i=>i==="id")){const i=t.toLowerCase().replace(/-/g,"_");r.id=`${i}_${Math.random().toString().slice(2,6)}`}return r}return{type:t}}function wt(e,n={},t){const a=eo[e];if(a){let r=mi(a);const i=to[e];return r=i?i({getSchemaByType:wt},r,n,t):r,r}return null}function hi(e,n){const t=bn(n);return Object.keys(t).reduce((a,r)=>(Object.prototype.hasOwnProperty.call(e,r)&&(a[r]&&Fe.isPlainObject(a[r])&&Fe.isPlainObject(e[r]||!e[r])?Object.assign(a[r],e[r]||{}):a[r]=e[r]),a),t),t}function no(e,n){return Object.keys(e).filter(a=>e[a]!=null).reduce((a,r)=>{if(n.has(r)){const i=n.get(r);if(typeof i=="string")a[i]=e[r];else{const s=i(r,e[r],e);Object.assign(a,s)}}else a[r]=e[r];return a},{})}function gi(e,n,t=new Map){const a=hi(e,n);return no(a,t)}function yi(e={}){function n(d,u,f,h){if(typeof f=="number")return h[d].length===f;if(typeof f=="object"){const p=Object.keys(f)[0],m=f[p];if(p==="not")return Number(h[d].length)!==Number(m);if(p==="moreThan")return Number(h[d].length)>=Number(m);if(p==="lessThan")return Number(h[d].length)<=Number(m)}return!1}function t(d,u,f,h){return h[d]&&h[d].propertyValue&&String(h[d].propertyValue.value)===String(f)}const a=new Map([["length",n],["getProperty",t]]);Object.keys(e).reduce((d,u)=>(d.set(u,e[u]),d),a);function r(d,u){const f=d;return typeof u=="number"?[{target:f,operator:"length",param:null,value:Number(u)}]:typeof u=="boolean"?[{target:f,operator:"getProperty",param:d,value:!!u}]:typeof u=="object"?Object.keys(u).map(h=>{if(h==="length")return{target:f,operator:"length",param:null,value:u[h]};const p=h,m=u[h];return{target:f,operator:"getProperty",param:p,value:m}}):[]}function i(d){return Object.keys(d).reduce((f,h)=>{const p=r(h,d[h]);return f.push(...p),f},[])}function s(d,u){if(a.has(d.operator)){const f=a.get(d.operator);return f&&f(d.target,d.param,d.value,u)||!1}return!1}function l(d,u){return i(d).reduce((p,m)=>p&&s(m,u),!0)}function c(d,u){const f=Object.keys(d),h=f.includes("allOf"),p=f.includes("anyOf"),m=h||p,g=(m?d[m?h?"allOf":"anyOf":"allOf"]:[d]).map(x=>l(x,u));return h?!g.includes(!1):g.includes(!0)}return{parseValueSchema:c}}const ce={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:"筛选条"}},vi={},bi={};yi();function Ke(e,n,t=new Map,a=(s,l,c,d)=>l,r={},i=s=>s){return eo[n.title]=n,to[n.title]=a,vi[n.title]=r,bi[n.title]=i,(s={},l=!0)=>{if(!l)return no(s,t);const c=gi(s,n,t),d=Object.keys(e).reduce((u,f)=>(u[f]=e[f].default,u),{});return Object.assign(d,c)}}function ut(e,n){return{customClass:n.class,customStyle:n.style}}function wi(){function e(n,t){const{dataSource:a}=n||{};return a===void 0?{}:{}}return{resolve:e}}function Ci(){function e(n,t){return n.selectItemById(t)}return{selectItemById:e}}function xi(e,n){if(!e||e.length<1)return null;for(const t of e){if(t.id===n)return t;if(t.children){const a=t.children.find(r=>r.id===n);if(a)return a}}return null}function Si(){function e(n,t){const{name:a}=t,[r,i]=t.payloads;if(a==="tabChange"||a==="tabRemove")return n[`on${a.charAt(0).toUpperCase()}${a.slice(1)}`];const s=n.contents;if(!s||s.length<1)return null;const l=s.reduce((d,u)=>{const f=u.toolbar&&u.toolbar.buttons||[];return d.push(...f),d},[]);if(!l||l.length<1)return;const c=xi(l,i);return c?c.onClick||c.click:null}return{resolve:e}}function Ti(){function e(n,t){const{columns:a}=t;return n.updateColumns(a)}return{updateColumns:e}}const wn=new Map([["appearance",ut]]);function Vi(e,n){const t=Math.random().toString().slice(2,6),a=n.parentComponentInstance,r=e.getSchemaByType("tab-page");r.id=`tab-page-${t}`,r.title="标题",r.toolbar={id:`tab-page-toolbar-${t}`,buttons:[]};const i=e.getSchemaByType("tabs");Object.assign(i,{id:`tabs-${t}`,appearance:{class:"f-component-tabs f-tabs-has-grid"},contents:[r],activeId:r.id});const s=e.getSchemaByType("section");Object.assign(s,{id:`section-${t}`,appearance:{class:"f-section-tabs f-section-in-mainsubcard"},fill:!1,showHeader:!1,contents:[i]});const l=e.getSchemaByType("content-container");Object.assign(l,{id:`container-${t}`,appearance:{class:"f-struct-wrapper"},contents:[s]});const c=a.schema;switch(c&&c.type){case ce["splitter-pane"].type:{s.appearance.class="f-section-tabs f-section-in-main",i.appearance.class="f-component-tabs";break}}const d=a.elementRef,u=window.getComputedStyle(d);return u&&u.display==="flex"&&(l.appearance.class+=" d-block"),l}function oo(e,n,t){if(t.parentComponentInstance)return Vi(e,t);{const r=e.getSchemaByType("tab-page");return n.contents=[r],n}}function Ni(e,n,t){return n}const ao={$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:"移除标签页事件"}},Cn={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}},_i=Ke(Cn,ao,wn,oo),ro=Object.assign({},Cn,{componentId:{type:String,default:""}}),ki=Ke(ro,ao,wn,oo),Ii=Si();function Fi(e,n,t){const a=o.ref([]),r=o.ref(e.activeId||"");let i="";const s=o.ref(!0),l=o.ref([]),c=o.ref(0),d=o.computed(()=>{const _=a.value.find(y=>y.props.id===r.value);return(_==null?void 0:_.props.toolbarPosition)==="inHead"});function u(_,S=!0){const y=_.findIndex(w=>w.props.show!==!1&&!w.props.disabled);if(l.value=[],y!==-1){if(r.value=_[y].props.id,!S)return;const w=_[y];w&&w.props.toolbar&&w.props.toolbar.buttons&&w.props.toolbar.buttons.length&&(l.value=[...w.props.toolbar.buttons])}}function f(_){r.value=_;const S=a.value.find(y=>y.props.id===_);l.value=[],S&&S.props.toolbar&&S.props.toolbar.buttons&&S.props.toolbar.buttons.length&&(l.value=[...S.props.toolbar.buttons]),n.emit("update:activeId",_),n.emit("tabChange",{prevId:i,nextId:r.value})}function h(_){let S=-1;if(!r.value){if(S=_.findIndex(y=>r.value===y.props.id&&y.props.show!==!1&&!y.props.disabled),S>-1)return;i=r.value}u(_,!1),f(r.value)}function p(_){let S=!1;if(_){const y=a.value.find(w=>w.props.id===_);S=!y||y.props.show===!1||y.props.disabled===!0}S?h(a.value):(r.value!==_&&(i=r.value,r.value=_),f(r.value))}o.watch(()=>e.activeId,(_,S)=>{_!==S&&p(_)});function m(_){var y;if(e.autoTitleWidth)return;const S=(y=_.value)==null?void 0:y.querySelectorAll(".st-tab-text");if(!(!S||e.tabType==="pill"))for(let w=0;w<S.length;w++){const V=S[w].parentNode;S[w].scrollWidth>V.offsetWidth?S[w].classList.contains("farris-title-text-custom")||S[w].classList.add("farris-title-text-custom"):S[w].classList.remove("farris-title-text-custom")}}const T=_=>{_.preventDefault(),_.stopPropagation()};function v(_,S,y=!1){const w=a.value.findIndex(V=>V.props.id===S);a.value=a.value.filter(V=>V.props.id!==S),r.value===S&&(i=S,r.value="",u(a.value)),T(_),o.nextTick(()=>{c.value++,m(t),y&&(s.value=!0),n.emit("tabRemove",{removeIndex:w,removeId:S,activeId:r.value})})}function g(_,S=!0){r.value===_&&(r.value="",i=_,p("")),o.nextTick(()=>{c.value++,S&&(s.value=!0)})}function C(_){r.value!==_&&(i=r.value,f(_))}function x(_){a.value.findIndex(y=>y.props.id===_.props.id)===-1&&a.value.push(_),c.value++}function k(_){a.value.findIndex(y=>y.props.id===_.props.id)!==-1&&(a.value.forEach(y=>{y.props.id===_.props.id&&(y=_)}),_.props.id===r.value&&d.value,o.nextTick(()=>{c.value++,m(t)}))}return{activeId:r,addTab:x,changeTitleStyle:m,removeTab:v,selectTab:C,tabPages:a,updateTab:k,toolbarItems:l,needUpdateNavigationLayout:c,checkActiveIdAndSelect:p,toggleShowTab:g,hasInHeadClass:d}}function Mi(e,n,t,a,r){const{activeId:i,removeTab:s,selectTab:l}=r,c=o.computed(()=>{const x={"st-tab-text":!0,"text-truncate":e.tabType==="pill"&&!e.autoTitleWidth,"farris-title-auto":e.autoTitleWidth};return Ne.getCustomClass(x,n.customTitleClass)}),d=o.computed(()=>({"nav-item":!0,"d-none":n.show!==void 0?!n.show:!1,"f-state-active":n.id===i.value,"f-state-disabled":n.disabled})),u=o.computed(()=>({width:`${n.tabWidth}px`})),f=o.computed(()=>({"nav-link":!0,"tabs-text-truncate":!0,active:n.id===i.value,disabled:n.disabled})),h=o.reactive({content:n.title,overflowShown:!0});function p(x){return e.tabType!=="pill"&&!e.autoTitleWidth?o.withDirectives(o.createVNode("span",{class:c.value,"data-tabid":x.id},[x.title]),[[o.resolveDirective("tooltip"),h]]):o.createVNode("span",{class:c.value,"data-tabid":x.id,title:x.title},[x.title])}function m(x){return x.slots.title?x.slots.title:p}const T=m(t),v=o.ref(n.removeable);function g(){return o.createVNode("span",{class:"st-drop-close",onClick:x=>s(x,n.id)},[o.createVNode("i",{class:"f-icon f-icon-close"},null)])}function C(x){l(n.id),e.tabType==="one-page"&&a.scrollToByPaggId(n.id)}return o.createVNode("li",{class:d.value,style:u.value},[o.createVNode("a",{class:f.value,onClick:C},[T(n),v.value&&g()])])}function Oi(e,n,t,a,r){const{shouldShowNavigationButtons:i}=t,{tabPages:s}=r,l=o.computed(()=>({spacer:!0,"f-utils-fill":!0,"spacer-sides-dropdown":i.value})),c=o.computed(()=>({width:"100%","justify-content":e.justifyContent})),d=o.computed(()=>({nav:!0,"farris-nav-tabs":!0,"flex-nowrap":!0,"nav-fill":e.tabType==="fill","nav-pills":e.tabType==="pills","flex-row":e.position==="top"||e.position==="bottom","flex-column":e.position==="left"||e.position==="right"}));return()=>o.createVNode("div",{class:l.value,style:c.value},[o.createVNode("ul",{class:d.value,ref:n},[s.value.map(u=>Mi(e,u.props,u,a,r))])])}function io(e,n,t,a,r){const i=o.ref(),{shouldShowNavigationButtons:s}=t,{activeId:l,tabPages:c,selectTab:d}=r,u=o.ref(l.value),f=o.computed(()=>c.value.map(T=>({name:T.props.title,value:T.props.id,show:T.props.show,disabled:T.props.disabled}))),h=o.computed(()=>({spacer:!0,"f-utils-fill":!0,"spacer-sides-dropdown":s.value})),p=o.computed(()=>({width:"100%",display:"flex","justify-content":e.justifyContent}));o.onMounted(()=>{i.value&&(n.value=i.value.$el)});function m(T){d(T)}return o.watch(()=>l.value,T=>{T!==u.value&&(u.value=T)},{immediate:!0}),()=>o.createVNode("div",{class:h.value,style:p.value},[o.createVNode(Wn,{items:f.value,modelValue:u.value,"onUpdate:modelValue":T=>u.value=T,onChange:m,ref:i},null)])}function Di(e,n,t,a){const r=o.ref(),{activeId:i,removeTab:s,tabPages:l}=a,{selectAndScrollToTab:c}=t,{hideDropDown:d,searchTabText:u}=n,f=600;let h=null;const p=o.computed(()=>{var V,N;let w=[];return e.searchBoxVisible?w=(V=l.value)==null?void 0:V.filter(b=>b.props.title.includes(u.value)):w=(N=l.value)==null?void 0:N.slice(),w}),m=o.computed(()=>({"dropdown-menu":!0,"tabs-pt28":e.searchBoxVisible,show:!d.value,"d-none":d.value}));let T;function v(w){T=w}o.watch(d,w=>{if(T.value)if(w)r.value.style.width=null;else{const V=T.value.querySelector(".farris-tabs-header"),N=T.value.clientHeight-V.clientHeight-20,F=V.querySelector(".farris-tabs-title").clientWidth-20;r.value.style.maxWidth=F+"px",r.value.style.maxHeight=N+"px",o.nextTick(()=>{const{width:D}=r.value.getClientRects()[0];r.value.style.width=D?D+"px":null})}});function g(w){return{"dropdown-item":!0,"text-truncate":!0,"px-2":!0,disabled:w.props.disabled,active:w.props.id===i.value,"d-none":w.props.show!==!0}}function C(w){w.preventDefault(),w.stopPropagation()}function x(){h&&clearTimeout(h)}function k(){d.value||(h=setTimeout(()=>{d.value=!0},f))}function _(w,V){w.stopPropagation(),c(w,V),d.value=!0}function S(w,V){w.stopPropagation(),s(w,V,!0)}function y(){return o.createVNode("div",{ref:r,class:m.value,onMouseenter:()=>x(),onMouseleave:()=>k()},[e.searchBoxVisible&&o.createVNode("div",{onClick:w=>C(w),class:"pb-1 tabs-li-absolute"},[o.withDirectives(o.createVNode("input",{type:"text",class:"form-control","onUpdate:modelValue":w=>u.value=w},null),[[o.vModelText,u.value]]),o.createVNode("span",{class:"f-icon f-icon-page-title-query tabs-icon-search"},null)]),p.value.length?o.createVNode("ul",{class:"tab-dropdown-menu--items flex-fill"},[p.value.map(w=>o.createVNode("li",{class:g(w),onClick:V=>_(V,w.props)},[w.props.removeable&&w.props.disabled!==!0&&o.createVNode("span",{class:"float-right st-drop-close",onClick:V=>S(V,w.props.id)},[o.createVNode("i",{class:"f-icon f-icon-close"},null)]),o.createVNode("a",{class:"dropdown-title",title:w.props.title},[w.props.title])]))]):o.createVNode("div",{class:"dropdown-no-data"},[o.createTextVNode("没有相关数据")])])}return{renderDropdownMenu:y,setTabsRef:v}}function Ei(e,n,t,a){const{hideDropDown:r}=n,{renderDropdownMenu:i,setTabsRef:s}=Di(e,n,t,a),l=o.ref(e.showDropdown);function c(){return l.value&&o.createVNode(o.Fragment,null,[o.createVNode("button",{class:"btn dropdown-toggle-split dropdown-toggle",onClick:()=>{r.value=!1}},null),i()])}return{renderMorePagesButtton:c,setTabsRef:s}}function so(e,n,t,a){const r=o.ref(!1),{selectTab:i,tabPages:s,needUpdateNavigationLayout:l,activeId:c}=a,d=4,u=o.computed(()=>({btn:!0,"sc-nav-btn":!0,"px-1":!0,"sc-nav-lr":!0,"d-none":!r.value})),f=o.computed(()=>({"btn-group":!0,"sc-nav-btn":!0,dropdown:!0,"d-none":!r.value})),h=o.computed(()=>({btn:!0,"sc-nav-rg":!0,"d-none":!r.value}));function p(g,C){if(!n.value)return;const x=n.value.scrollLeft,k=n.value.scrollWidth-n.value.offsetWidth;if(C>0){if(n.value.scrollLeft>=k)return;n.value.scrollLeft=x+e.scrollStep+g}else if(C<0){if(n.value.scrollLeft<=0)return;n.value.scrollLeft=x-e.scrollStep-g}}function m(g=-1){if(!r.value||!n.value)return;g<0&&(g=s.value.findIndex(S=>S.props.id===c.value));const C=e.tabType==="pills"?".f-capsule-item":".nav-item",x=n.value.querySelectorAll(C),{parentElement:k}=n.value,_=x[g];if(_&&k){const S=k.getBoundingClientRect().left,y=k.getBoundingClientRect().right,w=_.getBoundingClientRect().left,V=_.getBoundingClientRect().right;w<S?p(S-w,-1):y<V&&p(V-y,1),e.tabType==="one-page"&&t.scrollTo(g)}}function T(){var x;if(!n.value)return;const g=n.value,C=(x=n.value)==null?void 0:x.parentElement;r.value=C&&g&&C.offsetWidth<g.scrollWidth-d,r.value&&o.nextTick(()=>{m()})}function v(g,C){C.disabled||(i(C.id),o.nextTick(()=>{m()}))}return o.watch(l,()=>{T()}),{previousButtonClass:u,nextButtonGroupClass:f,nextButtonClass:h,scrollTab:p,selectAndScrollToTab:v,shouldShowNavigationButtons:r,updateNavigationLayout:T}}function lo(e,n){const{tabPages:t}=n,a=o.ref(""),r=o.ref(!0),i=o.computed(()=>e.searchBoxVisible),s=o.computed(()=>i.value?t.value.filter(c=>c.props.title.includes(a.value)):t.value.slice());return o.watch(r,l=>{l||(a.value="")}),{searchTabText:a,hideDropDown:r,shouldShowSearchBox:i,tabsInDropdownMenu:s}}function co(e,n,t){const a=".farris-tab-page",{tabPages:r}=t;function i(l){const c=n.value;if(c){const d=n.value.querySelectorAll(a);if(d.length>0){const u=d[l],{offsetTop:f}=u,h=f-32>0?f-32:0;c.scrollTop=h}}}function s(l){const c=r.value.findIndex(d=>d.props.id===l);c>-1&&i(c)}return{scrollTo:i,scrollToByPaggId:s}}const It=o.defineComponent({name:"FTabs",props:Cn,emits:["tabChange","tabRemove","update:activeId","Click"],setup(e,n){const t=o.ref(e.tabType),a=o.shallowRef(),r=o.ref(e.customClass),i=o.shallowRef(),s=o.shallowRef(),l=o.ref(),c=Fi(e,n,i),{activeId:d,changeTitleStyle:u,tabPages:f,addTab:h,updateTab:p,toolbarItems:m,checkActiveIdAndSelect:T,toggleShowTab:v,hasInHeadClass:g}=c,C=co(e,s,c),x=so(e,i,C,c),{previousButtonClass:k,nextButtonClass:_,nextButtonGroupClass:S,scrollTab:y,updateNavigationLayout:w}=x,V=lo(e,c),N=Oi(e,i,x,C,c),b=N,F=io(e,i,x,C,c),D=new Map([["default",N],["one-page",b],["pills",F]]);o.computed(()=>{const G=f.value.find(se=>se.props.id===d.value);return G==null?void 0:G.slots});const I=o.computed(()=>e.fill);o.provide("tabs",{activeId:d,addTab:h,updateTab:p,tabPages:f,tabType:t,shouldFillParentContaner:I,toggleShowTab:v});let M=!1;const E=o.computed(()=>({"farris-tabs-header":!0,"farris-tabs-inHead":g.value,"farris-tabs-inContent":!g.value,"farris-tabs-nav-fill":e.tabType==="fill","farris-tabs-nav-pills":e.tabType==="pills"})),R=o.computed(()=>{const G={width:g.value&&e.titleWidth?`${e.titleWidth}%`:""};return G.width&&(G.flex="unset"),G}),O=o.computed(()=>{const G={"farris-tabs":!0,"f-utils-fill-flex-column":I.value,"flex-column":e.position==="top","flex-column-reverse":e.position==="bottom","flex-row":e.position==="left","flex-row-reverse":e.position==="right","one-page":e.tabType==="one-page"};return r.value&&r.value.split(" ").reduce((se,ve)=>(se[ve]=!0,se),G),G}),$=new ResizeObserver(G=>{G.length&&w()});function U(){l.value&&!M&&($.observe(l.value),M=!0)}o.watch(()=>e.visible,G=>{o.nextTick(()=>{f.value.length&&T(e.activeId||f.value[0].props.id),w(),u(i),U()})}),o.watch(()=>e.autoTitleWidth,G=>{o.nextTick(()=>{w(),u(i)})}),o.onMounted(()=>{e.visible&&(f.value.length&&T(e.activeId||f.value[0].props.id),o.nextTick(()=>{w(),u(i)}),U())});function P(){return o.createVNode("button",{title:"向左",type:"button",class:k.value,onClick:()=>{y(0,-1)}},null)}function B(){return o.createVNode("button",{title:"向右",type:"button",class:_.value,onClick:()=>{y(0,1)}},null)}const{renderMorePagesButtton:K,setTabsRef:z}=Ei(e,V,x,c);z(a);const H=(G,se)=>{n.emit("Click",G,se,d.value)};function X(){return m.value.length?o.createVNode("div",{class:"farris-tabs-toolbar"},[o.createVNode(gn,{class:"f-utils-fill",alignment:g.value?"right":"left",items:m.value,onClick:H},null)]):null}const J=D.get(e.tabType)||D.get("default");function L(){var G,se,ve,_e;return o.createVNode("div",{class:E.value},[o.createVNode("div",{class:"farris-tabs-header-pre"},[(se=(G=n.slots).headerPrefix)==null?void 0:se.call(G)]),o.createVNode("div",{class:"farris-tabs-title scroll-tabs",style:R.value,ref:l},[P(),J&&J(),o.createVNode("div",{class:S.value},[B(),K()])]),X(),o.createVNode("div",{class:"farris-tabs-header-post"},[(_e=(ve=n.slots).headerSuffix)==null?void 0:_e.call(ve)])])}const j=o.computed(()=>({"farris-tabs-content":!0,"f-utils-fill-flex-column":I.value}));function q(){var G,se;return o.createVNode("div",{class:j.value,ref:s},[(se=(G=n.slots).default)==null?void 0:se.call(G)])}return()=>e.visible?o.createVNode("div",{class:O.value,ref:a},[L(),q()]):null}});function Pi(e,n,t){return n&&n.contents&&n.contents.length&&(n.contents.forEach(a=>{a.title&&(a.text=a.title)}),n.buttons=n.contents,delete n.contents),{toolbar:n}}const ji=new Map([["appearance",ut],["toolbar",Pi]]),Bi={$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"]},xn={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"}},uo=qn.createPropsResolver(xn,Bi,ji);function $i(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!o.isVNode(e)}const Zt=o.defineComponent({name:"FTabPage",props:xn,emits:[],setup(e,n){const t=o.inject("tabs"),a=o.ref(e.show),r={slots:n.slots,props:e},i=o.ref((t==null?void 0:t.tabType.value)||"default");o.onMounted(()=>{const p=t==null?void 0:t.tabPages.value.findIndex(m=>m.props.id===e.id);(!p||p===-1)&&(t==null||t.addTab(r))}),o.onUnmounted(()=>{});const s=o.computed(()=>(e==null?void 0:e.id)===(t==null?void 0:t.activeId.value)),l=o.computed(()=>({display:s.value?"":"none"}));o.watch(()=>e,p=>{t==null||t.updateTab({props:p,slots:n.slots})},{immediate:!0,deep:!0}),o.watch(()=>e.show,p=>{t==null||t.toggleShowTab(e.id)});function c(){var m,T;const p=(T=(m=n.slots).default)==null?void 0:T.call(m);return o.createVNode(zn,{"main-title":e.title,class:["farris-tab-page",a.value?"":"f-tab-d-none"]},$i(p)?p:{default:()=>[p]})}const d=o.computed(()=>{var m;return{"farris-tab-page":!0,"f-tab-d-none":!a.value,"f-utils-fill-flex-column":s.value&&t&&((m=t.shouldFillParentContaner)==null?void 0:m.value)}});function u(){var m,T;const p=(T=(m=n.slots).default)==null?void 0:T.call(m);return o.createVNode("div",{class:d.value,style:l.value},[p])}const h=new Map([["default",u],["one-page",c]]).get(i.value)||u;return()=>h()}});function Ri(e,n,t,a,r,i){const{activeId:s,selectTab:l,removeDesignTab:c,selectDesignTab:d,addTabPageToolbar:u,resetPositionForSelectedElement:f}=r,h=o.computed(()=>({"st-tab-text":!0,"farris-title-auto":e.autoTitleWidth})),p=o.computed(()=>{const F={"farris-component":!0,"nav-item":!0,"f-state-active":n.id===s.value};return F[`${n.id}-design-item`]=!0,F}),m=o.computed(()=>{const F={};return n.tabWidth&&n.tabWidth>0&&(F.width=`${n.tabWidth}px`),F}),T=o.computed(()=>({"nav-link":!0,"tabs-text-truncate":!0,active:n.id===s.value}));function v(F){return o.createVNode("span",{class:h.value,title:F.title},[F.title])}function g(F){return F.slots.title?F.slots.title:v}const C=g(t),x=o.ref(n.removeable);function k(){return o.createVNode("span",{class:"st-drop-close",style:{opacity:.6}},[o.createVNode("i",{class:"f-icon f-icon-close"},null)])}function _(F){l(n.id),e.tabType==="one-page"&&a.scrollToByPaggId(n.id)}function S(F){F&&(F.stopPropagation(),F.preventDefault()),d(F,n.id,i.value)}function y(F){c(F,n.id)}function w(F){u(F,n.id)}o.watch(()=>n.toolbarPosition,()=>{o.nextTick(()=>{f(null)})}),o.watch(()=>n.tabWidth,()=>{o.nextTick(()=>{f(null)})});function V(){return o.createVNode("div",{role:"button",class:"btn component-settings-button",title:"删除",ref:"removeComponent",onClick:F=>y(F)},[o.createVNode("i",{class:"f-icon f-icon-yxs_delete"},null)])}function N(){return o.createVNode("div",{role:"button",class:"btn component-settings-button",title:"新增按钮",ref:"addComponent",onClick:F=>w(F)},[o.createVNode("i",{class:"f-icon f-icon-plus-circle"},null)])}function b(){return o.createVNode("div",{class:"component-btn-group","data-noattach":"true"},[o.createVNode("div",null,[V(),!n.toolbar||!n.toolbar.buttons||!n.toolbar.buttons.length?N():""])])}return o.createVNode("li",{onClick:F=>S(F),class:p.value,style:m.value,pageId:`${n.id}-design-item`},[b(),o.createVNode("a",{class:T.value,onClick:_,id:`${n.id}-design-item`},[C(n),x.value&&k()])])}function Li(e,n,t,a,r,i,s){const{tabPages:l,selectTab:c,emitSelectionChange:d}=r,u=o.computed(()=>({spacer:!0,"f-utils-fill":!0})),f=o.computed(()=>({width:"100%","justify-content":e.justifyContent})),h=o.computed(()=>({nav:!0,"farris-nav-tabs":!0,"flex-nowrap":!0,"nav-fill":e.tabType==="fill","nav-pills":e.tabType==="pills","flex-row":e.position==="top"||e.position==="bottom","flex-column":e.position==="left"||e.position==="right"})),p=o.computed(()=>({overflow:"auto"})),m=function(T){var g;T&&(T.stopPropagation(),T.preventDefault());const v=wt("tab-page");v.id=`tab_page_${Math.random().toString().slice(2,6)}`,v.title="标题",v.toolbar={id:`${v.id}_toolbar`,buttons:[]},(g=i.value.schema.contents)==null||g.push(v),c(v.id),o.nextTick(()=>{d(v.id,i.value)})};return()=>o.createVNode("div",{class:u.value,style:f.value},[o.createVNode("ul",{class:h.value,style:p.value,ref:n},[l.value.map(T=>Ri(e,T.props,T,a,r,i)),o.createVNode("li",{class:"nav-item no-drag"},[o.createVNode("a",{class:"nav-link tabs-text-truncate",title:"添加页签",onClick:T=>m(T)},[o.createVNode("i",{class:"f-icon f-icon-plus",style:"font-size: 20px;margin: 0 auto;line-height: 24px;"},null)])])])])}function Ft(e,n,t){var y;const a=t&&t.getStyles&&t.getStyles()||"",r=t&&t.getDesignerClass&&t.getDesignerClass()||"",i=o.ref();function s(){return(n==null?void 0:n.schema.componentType)==="frame"?!1:t&&t.checkCanMoveComponent?t.checkCanMoveComponent():!0}function l(){return!1}function c(){return(n==null?void 0:n.schema.componentType)==="frame"?!1:t&&t.checkCanDeleteComponent?t.checkCanDeleteComponent():!0}function d(){return(n==null?void 0:n.schema.componentType)==="frame"?!0:t&&t.hideNestedPaddingInDesginerView?t.hideNestedPaddingInDesginerView():!1}function u(w){if(!w||!w.value)return null;if(w.value.schema&&w.value.schema.type==="component")return w.value;const V=o.ref(w==null?void 0:w.value.parent),N=u(V);return N||null}function f(w=n){var F;if(t!=null&&t.getDraggableDesignItemElement)return t.getDraggableDesignItemElement(w);const{componentInstance:V,designerItemElementRef:N}=w;if(!V||!V.value)return null;const{getCustomButtons:b}=V.value;return V.value.canMove||b&&((F=b())!=null&&F.length)?N:f(w.parent)}function h(w){return!!t&&t.canAccepts(w)}function p(){return(n==null?void 0:n.schema.label)||(n==null?void 0:n.schema.title)||(n==null?void 0:n.schema.name)}function m(){}function T(w,V){var N;!w||!V||(t!=null&&t.onAcceptMovedChildElement&&t.onAcceptMovedChildElement(w,V),(N=n==null?void 0:n.setupContext)==null||N.emit("dragEnd"))}function v(w,V){const{componentType:N}=w;let b=wt(N,w,V);t&&t.onResolveNewComponentSchema&&(b=t.onResolveNewComponentSchema(w,b));const F=N.toLowerCase().replace(/-/g,"_");return b&&!b.id&&b.type===N&&(b.id=`${F}_${Math.random().toString().slice(2,6)}`),b}function g(w){w&&t!=null&&t.onChildElementMovedOut&&t.onChildElementMovedOut(w)}function C(...w){if(t&&t.getPropsConfig)return t.getPropsConfig(...w)}function x(w){if(!w)return;const V=n==null?void 0:n.schema,{formSchemaUtils:N}=w;if(V&&N.getExpressions().length){const b=N.getExpressions().findIndex(F=>F.target===V.id);b>-1&&N.getExpressions().splice(b,1)}}function k(w){t&&t.onRemoveComponent&&t.onRemoveComponent(),x(w),n!=null&&n.schema.contents&&n.schema.contents.map(V=>{let N=V.id;V.type==="component-ref"&&(N=V.component);const b=e.value.querySelectorAll(`#${N}-design-item`);b!=null&&b.length&&Array.from(b).map(F=>{var D;(D=F==null?void 0:F.componentInstance)!=null&&D.value.onRemoveComponent&&F.componentInstance.value.onRemoveComponent(w)})})}function _(){if(t&&t.getCustomButtons)return t.getCustomButtons()}function S(w){if(t&&t.onPropertyChanged)return t.onPropertyChanged(w)}return i.value={canMove:s(),canSelectParent:l(),canDelete:c(),canNested:!d(),contents:n==null?void 0:n.schema.contents,elementRef:e,parent:(y=n==null?void 0:n.parent)==null?void 0:y.componentInstance,schema:n==null?void 0:n.schema,styles:a,designerClass:r,canAccepts:h,getBelongedComponentInstance:u,getDraggableDesignItemElement:f,getDraggingDisplayText:p,getPropConfig:C,getDragScopeElement:m,onAcceptMovedChildElement:T,onChildElementMovedOut:g,addNewChildComponentSchema:v,triggerBelongedComponentToMoveWhenMoved:!!t&&t.triggerBelongedComponentToMoveWhenMoved||o.ref(!1),triggerBelongedComponentToDeleteWhenDeleted:!!t&&t.triggerBelongedComponentToDeleteWhenDeleted||o.ref(!1),onRemoveComponent:k,getCustomButtons:_,onPropertyChanged:S},i}class fo{getTemplateRule(n,t){const a=t==null?void 0:t.formSchemaUtils,r=a==null?void 0:a.getFormTemplateRule(),i={canAccept:!0,canDelete:!0,canMove:!0};if(!r)return i;const s=this.getComponentContext(n),{componentClassList:l}=s;return l.forEach(c=>{if(!c||!r[c])return;const{canMove:d,canDelete:u,canAccept:f}=r[c];i.canMove=i.canMove&&this.resolveRuleValue(d,s),i.canDelete=i.canDelete&&this.resolveRuleValue(u,s),i.canAccept=i.canAccept&&this.resolveRuleValue(f,s)}),i}resolveRuleValue(n,t){return typeof n=="boolean"?n:this.parseRuleValueSchema(n,t)}parseRuleValueSchema(n,t){const a=n.invalidContext||[];let r=!0;for(const i of a){if(i.firstLevelChild){if(i.firstLevelChild.class){const{firstLevelChildClassList:s}=t;if(s&&!s.includes(i.firstLevelChild.class)){r=!1;continue}}if(i.firstLevelChild.type){const{firstLevelChildSchema:s}=t;if(!s||s.type!==i.firstLevelChild.type){r=!1;continue}}}if(i.secondLevelChild){if(i.secondLevelChild.class){const{secondLevelChildClassList:s}=t;if(s&&!s.includes(i.secondLevelChild.class)){r=!1;continue}}if(i.secondLevelChild.type){const{secondLevelChildSchema:s}=t;if(!s||s.type!==i.secondLevelChild.type){r=!1;continue}}}if(i.parent){if(i.parent.class){const{parentClassList:s}=t;if(s&&!s.includes(i.parent.class)){r=!1;continue}}if(i.parent.type){const{parentSchema:s}=t;if(s&&s.type!==i.parent.type){r=!1;continue}}}r=!0;break}return!r}getComponentContext(n){var T,v,g,C;const t=n.schema,a=t.appearance&&t.appearance.class||"",r=a.split(" ")||[],i=t.contents||[],s=i.length?i[0]:null,l=s&&s.appearance?s.appearance.class:"",c=l?l.split(" "):[],d=(T=s==null?void 0:s.contents)!=null&&T.length?s==null?void 0:s.contents[0]:null,u=d&&d.appearance?d.appearance.class:"",f=u?u.split(" "):[],h=t.type==="component"?(g=(v=n.parent)==null?void 0:v.parent)==null?void 0:g.schema:(C=n.parent)==null?void 0:C.schema,p=h&&h.appearance&&h.appearance.class||"",m=p?p.split(" "):[];return{componentClass:a,componentClassList:r,childContents:i,firstLevelChildSchema:s,firstLevelChildClass:l,firstLevelChildClassList:c,secondLevelChildSchema:d,secondLevelChildClass:u,secondLevelChildClassList:f,parentSchema:h,parentClass:p,parentClassList:m}}}const Hi=o.ref(0);function Ai(){Hi.value++}const dt=o.ref(0);function Wi(e,n){const t=n.getBoundingClientRect(),a=e.getBoundingClientRect(),r=a.top>=t.top,i=a.top<=t.bottom;return r&&i}function Sn(e){const n=e.querySelector(".component-btn-group");if(!n)return;n.style.display="";const t=n.getBoundingClientRect();if(!(t.top===0&&t.left===0)){const a=n.querySelector("div");if(a){const r=a.getBoundingClientRect();a.style.top=t.top+"px";let i=t.left-r.width;const s=document.querySelector(".editorDiv");if(s){const l=s.getBoundingClientRect();i<l.left&&({left:i}=e.getBoundingClientRect())}a.style.left=i+"px"}}}function qi(e){if(!window.scrollContainerList)return;const n=Array.from(window.scrollContainerList);if(n.length&&n.length===1){const t=n[0],a=document.querySelector(`[id=${t}]`);if(a&&a.contains(e))return a}}function en(e){if(!e)return;const n=e.getBoundingClientRect();if(n.width===0&&n.height===0)return;const t=e.querySelector(".component-btn-group");if(t){let a=!0;const r=qi(e);if(r&&(a=Wi(e,r)),!a){t.style.display="none";return}Sn(e)}}function po(e){if(!e)return;let n;e.className.includes("dgComponentSelected")?n=e:n=e.querySelector(".dgComponentSelected"),n&&en(n)}function zi(e){const{formSchemaUtils:n,formStateMachineUtils:t}=e;function a(c,d=""){return{path:d+c.code,field:c.id,fullPath:c.code}}function r(c,d=""){return n.getViewModelById(c).states.map(f=>a(f,d))}function i(c){const d=n.getRootViewModelId(),u=r(c);if(c===d)return u;const f=r(d,"root-component.");return[...u,...f]}function s(c){return c.binding&&c.binding.path||c.id||""}function l(){return t&&t.getRenderStates()||[]}return{getVariables:i,getControlName:s,getStateMachines:l}}class Gi{constructor(n){A(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'"}]);A(this,"expressionNames",{compute:"计算表达式",dependency:"依赖表达式",validate:"验证表达式",dataPicking:"帮助前表达式",visible:"可见表达式",readonly:"只读表达式",required:"必填表达式"});A(this,"getExpressionConverter",(n,t)=>({convertFrom:(a,r,i,s)=>{const l=i.getExpressionRuleValue(n,t||r);return l&&l.value||""},convertTo:(a,r,i,s,l)=>{var c;if(r==="dataPicking"&&(i!=null&&i.target)){const d=`${i.target}_dataPicking`;((c=i.rules)==null?void 0:c.some(f=>f.id===d&&f.value))?a.dictPickingExpressionId=d:delete a.dictPickingExpressionId}s.updateExpression(i)}}));this.formSchemaService=n}getExpressionRule(n,t){const a=this.formSchemaService.getExpressions();if(!a)return"";const r=a.find(s=>s.target===n);if(!r)return"";const i=r.rules.find(s=>s.type===t);return i||""}getContextFormVariables(){const{module:n}=this.formSchemaService.getFormSchema();if(!n.viewmodels||n.viewmodels.length===0)return[];const t=this.formSchemaService.getRootViewModelId(),a=this.formSchemaService.getViewModelById(t);if(!a||!a.states||a.states.length===0)return[];const r=[];return a.states.forEach(i=>{r.push({key:i.code,name:i.name,description:i.name,category:i.category})}),r}createTreeNode(n,t,a="label"){return{id:n.id,name:n.name,bindingPath:n[a],parents:t}}buildEntityFieldsTreeData(n=null,t){const a=[];return n==null||n.forEach(r=>{var l;const i=this.createTreeNode(r,t);let s=[];(l=r.type)!=null&&l.fields&&(s=this.buildEntityFieldsTreeData(r.type.fields,[...t,r.label])),a.push({data:i,children:s,expanded:!0})}),a}buildChildEntityTreeData(n=null,t){const a=[];return n==null||n.forEach(r=>{var c,d;const i=this.createTreeNode(r,t),s=this.buildEntityFieldsTreeData((c=r.type)==null?void 0:c.fields,[...t,r.label]),l=this.buildChildEntityTreeData((d=r.type)==null?void 0:d.entities,[...t,r.label]);l!=null&&l.length&&(s==null||s.push(...l)),a.push({data:i,children:s||[],expanded:!0})}),a}getEntitiesTreeData(){const n=this.formSchemaService.getSchemaEntities();if(!(n!=null&&n.length))return[];const t=n[0];if(!(t!=null&&t.type))return[];const a=this.buildEntityFieldsTreeData(t.type.fields,[t.code]),r=this.buildChildEntityTreeData(t.type.entities,[t.code]);return r!=null&&r.length&&(a==null||a.push(...r)),{entityCode:t.code,fields:[{data:this.createTreeNode(t,[],"code"),children:a||[]}]}}getEntitiesAndVariables(){return{entities:this.getEntitiesTreeData(),variables:{session:{name:"系统变量",items:this.sessionVariables,visible:!1},forms:{name:"表单变量",items:this.getContextFormVariables(),visible:!0}}}}onBeforeOpenExpression(n,t,a){const r=a==="Field"?n.binding.field:n.id,i=this.getExpressionRule(r,t),s=this.getEntitiesAndVariables(),l={message:["validate","required","dataPicking"].includes(t)&&i?i.message:"",...s};return i.messageType!=null&&(l.messageType=i.messageType),l}buildRule(n,t,a,r){const{expression:i,message:s,messageType:l}=t,c={id:`${n}_${a}`,type:a,value:i};return(a==="validate"||a==="dataPicking"||a==="required")&&(c.message=s),a==="dataPicking"&&(c.messageType=l),a==="validate"&&r&&(c.elementId=r),c}getExpressionData(){const{expressions:n}=this.formSchemaService.getFormSchema().module;return n||[]}updateExpression(n,t,a,r){const i=t==="Field"?n.binding.field:n.id,s=this.buildRule(i,a,r,n.type==="form-group"?n.id:"");let c=this.getExpressionData().find(u=>u.targetType===t&&u.target===i);const d=u=>u.value.trim()==="";if(c){const u=c.rules.find(f=>f.id===s.id);if(u)d(s)?c.rules=c.rules.filter(f=>f.id!==s.id):(Object.assign(u,s),r==="validate"&&n.type==="form-group"&&(u.elementId=n.id));else{if(d(s))return null;c.rules=c.rules||[],c.rules.push(s)}}else{if(d(s))return null;c={target:`${i}`,rules:[s],targetType:t}}return c}getExpressionEditorOptions(n,t,a,r){return a.reduce((i,s)=>{var c,d;const l=t==="Field"?(c=n==null?void 0:n.binding)==null?void 0:c.field:n.id;return i[s]={hide:t==="Field"?!!((d=n==null?void 0:n.binding)!=null&&d.field):!1,description:"",title:this.expressionNames[s],type:"string",$converter:this.getExpressionConverter(l),editor:{type:"expression-editor",singleExpand:!1,dialogTitle:`${this.expressionNames[s]}编辑器`,showMessage:s==="validate"||s==="dataPicking"||s==="required",showMessageType:s==="dataPicking",beforeOpen:()=>this.onBeforeOpenExpression(n,s,t),onSubmitModal:u=>{const f=this.updateExpression(n,t,u,s);if(r){const h=this.buildRule(l,u,s);r(h)}return f}}},i},{})}getExpressionInfo(n,t,a){const r=t==="Field"?n.binding.field:n.id,i=this.getExpressionRule(r,a),s={value:i&&i.value,targetId:r,targetType:t,expressionType:a};return i&&i.message&&(s.message=i.message),s}getExpressionConfig(n,t,a=["compute","dependency","validate"],r){return{description:"表达式",title:"表达式",properties:{...this.getExpressionEditorOptions(n,t,a,r)}}}getExpressionOptions(n,t,a){const r=this.getExpressionInfo(n,t,a);return{dialogTitle:`${this.expressionNames[a]}编辑器`,singleExpand:!1,showMessage:a==="required",beforeOpen:()=>this.onBeforeOpenExpression(n,a,t),expressionInfo:r}}}class Ht{constructor(n,t){A(this,"componentId");A(this,"viewModelId");A(this,"eventsEditorUtils");A(this,"formSchemaUtils");A(this,"formMetadataConverter");A(this,"designViewModelUtils");A(this,"designViewModelField");A(this,"controlCreatorUtils");A(this,"designerHostService");A(this,"schemaService",null);A(this,"metadataService",null);A(this,"propertyConfig",{type:"object",categories:{}});var a;this.componentId=n,this.designerHostService=t,this.eventsEditorUtils=t.eventsEditorUtils,this.formSchemaUtils=t.formSchemaUtils,this.formMetadataConverter=t.formMetadataConverter,this.viewModelId=((a=this.formSchemaUtils)==null?void 0:a.getViewModelIdByComponentId(n))||"",this.designViewModelUtils=t.designViewModelUtils,this.controlCreatorUtils=t.controlCreatorUtils,this.metadataService=t.metadataService,this.schemaService=t.schemaService}getTableInfo(){var n;return(n=this.schemaService)==null?void 0:n.getTableInfoByViewModelId(this.viewModelId)}setDesignViewModelField(n){var a;const t=n.binding&&n.binding.type==="Form"&&n.binding.field;if(t){if(!this.designViewModelField){const r=this.designViewModelUtils.getDgViewModel(this.viewModelId);this.designViewModelField=r.fields.find(i=>i.id===t)}n.updateOn=(a=this.designViewModelField)==null?void 0:a.updateOn}}getBasicPropConfig(n){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:n.type,name:ce[n.type].