@farris/ui-vue
Version:
Farris Vue, a Farris Design based Vue3 component library.
1 lines • 94.9 kB
JavaScript
(function(Y,o){typeof exports=="object"&&typeof module<"u"?o(exports,require("vue"),require("lodash-es"),require("../capsule/index.umd.js"),require("../response-toolbar/index.umd.js"),require("@vueuse/core"),require("../dynamic-resolver/index.umd.js"),require("../section/index.umd.js"),require("../designer-canvas/index.umd.js"),require("../common/index.umd.js"),require("bignumber.js")):typeof define=="function"&&define.amd?define(["exports","vue","lodash-es","../capsule/index.umd.js","../response-toolbar/index.umd.js","@vueuse/core","../dynamic-resolver/index.umd.js","../section/index.umd.js","../designer-canvas/index.umd.js","../common/index.umd.js","bignumber.js"],o):(Y=typeof globalThis<"u"?globalThis:Y||self,o(Y.tabs={},Y.Vue,Y.LodashES,Y.FCapsule,Y.FResponseToolbar,Y.VueUseCore,Y.dynamicResolver,Y.FSection$1,Y.designerCanvas,Y.common))})(this,function(Y,o,ie,It,He,Dt,xt,Bt,_e,Ie){"use strict";var co=Object.defineProperty;var uo=(Y,o,ie)=>o in Y?co(Y,o,{enumerable:!0,configurable:!0,writable:!0,value:ie}):Y[o]=ie;var z=(Y,o,ie)=>uo(Y,typeof o!="symbol"?o+"":o,ie);const Ue={},We={};function De(n){const{properties:e,title:t,ignore:a}=n,i=a&&Array.isArray(a),r=Object.keys(e).reduce((s,d)=>((!i||!a.find(l=>l===d))&&(s[d]=e[d].type==="object"&&e[d].properties?De(e[d]):ie.cloneDeep(e[d].default)),s),{});if(t&&(!i||!a.find(s=>s==="id"))){const s=t.toLowerCase().replace(/-/g,"_");r.id=`${s}_${Math.random().toString().slice(2,6)}`}return r}function $t(n){const{properties:e,title:t,required:a}=n;if(a&&Array.isArray(a)){const i=a.reduce((r,s)=>(r[s]=e[s].type==="object"&&e[s].properties?De(e[s]):ie.cloneDeep(e[s].default),r),{});if(t&&a.find(r=>r==="id")){const r=t.toLowerCase().replace(/-/g,"_");i.id=`${r}_${Math.random().toString().slice(2,6)}`}return i}return{type:t}}function be(n,e={},t){const a=Ue[n];if(a){let i=$t(a);const r=We[n];return i=r?r({getSchemaByType:be},i,e,t):i,i}return null}function jt(n,e){const t=De(e);return Object.keys(t).reduce((a,i)=>(Object.prototype.hasOwnProperty.call(n,i)&&(a[i]&&ie.isPlainObject(a[i])&&ie.isPlainObject(n[i]||!n[i])?Object.assign(a[i],n[i]||{}):a[i]=n[i]),a),t),t}function ze(n,e){return Object.keys(n).filter(a=>n[a]!=null).reduce((a,i)=>{if(e.has(i)){const r=e.get(i);if(typeof r=="string")a[r]=n[i];else{const s=r(i,n[i],n);Object.assign(a,s)}}else a[i]=n[i];return a},{})}function Mt(n,e,t=new Map){const a=jt(n,e);return ze(a,t)}function Nt(n={}){function e(c,p,f,m){if(typeof f=="number")return m[c].length===f;if(typeof f=="object"){const u=Object.keys(f)[0],g=f[u];if(u==="not")return Number(m[c].length)!==Number(g);if(u==="moreThan")return Number(m[c].length)>=Number(g);if(u==="lessThan")return Number(m[c].length)<=Number(g)}return!1}function t(c,p,f,m){return m[c]&&m[c].propertyValue&&String(m[c].propertyValue.value)===String(f)}const a=new Map([["length",e],["getProperty",t]]);Object.keys(n).reduce((c,p)=>(c.set(p,n[p]),c),a);function i(c,p){const f=c;return typeof p=="number"?[{target:f,operator:"length",param:null,value:Number(p)}]:typeof p=="boolean"?[{target:f,operator:"getProperty",param:c,value:!!p}]:typeof p=="object"?Object.keys(p).map(m=>{if(m==="length")return{target:f,operator:"length",param:null,value:p[m]};const u=m,g=p[m];return{target:f,operator:"getProperty",param:u,value:g}}):[]}function r(c){return Object.keys(c).reduce((f,m)=>{const u=i(m,c[m]);return f.push(...u),f},[])}function s(c,p){if(a.has(c.operator)){const f=a.get(c.operator);return f&&f(c.target,c.param,c.value,p)||!1}return!1}function d(c,p){return r(c).reduce((u,g)=>u&&s(g,p),!0)}function l(c,p){const f=Object.keys(c),m=f.includes("allOf"),u=f.includes("anyOf"),g=m||u,T=(g?c[g?m?"allOf":"anyOf":"allOf"]:[c]).map(w=>d(w,p));return m?!T.includes(!1):T.includes(!0)}return{parseValueSchema:l}}const te={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:"标签页工具栏按钮"},"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:"抽屉"}},At={},Vt={};Nt();function ge(n,e,t=new Map,a=(s,d,l,c)=>d,i={},r=s=>s){return Ue[e.title]=e,We[e.title]=a,At[e.title]=i,Vt[e.title]=r,(s={},d=!0)=>{if(!d)return ze(s,t);const l=Mt(s,e,t),c=Object.keys(n).reduce((p,f)=>(p[f]=n[f].default,p),{});return Object.assign(c,l)}}function ye(n,e){return{customClass:e.class,customStyle:e.style}}function Et(){function n(e,t){const a=e.contents;if(!a||a.length<1)return null;const i=a.reduce((l,c)=>{const p=c.toolbar&&c.toolbar.buttons||[];return l.push(...p),l},[]);if(!i||i.length<1)return;const[r,s]=t.payloads,d=i.find(l=>l.id===s);return d?d.onClick||d.click:null}return{resolve:n}}const xe=new Map([["appearance",ye]]);function kt(n,e){const t=Math.random().toString().slice(2,6),a=e.parentComponentInstance,i=n.getSchemaByType("tab-page");i.id=`tab-page-${t}`,i.title="标题";const r=n.getSchemaByType("tabs");Object.assign(r,{id:`tabs-${t}`,appearance:{class:"f-component-tabs f-tabs-has-grid"},contents:[i],activeId:i.id});const s=n.getSchemaByType("section");Object.assign(s,{id:`section-${t}`,appearance:{class:"f-section-tabs f-section-in-mainsubcard"},fill:!1,showHeader:!1,contents:[r]});const d=n.getSchemaByType("content-container");Object.assign(d,{id:`container-${t}`,appearance:{class:"f-struct-wrapper"},contents:[s]});const l=a.schema;switch(l&&l.type){case te["splitter-pane"].type:{s.appearance.class="f-section-tabs f-section-in-main",r.appearance.class="f-component-tabs";break}}const c=a.elementRef,p=window.getComputedStyle(c);return p&&p.display==="flex"&&(d.appearance.class+=" d-block"),d}function Xe(n,e,t){if(t.parentComponentInstance)return kt(n,t);{const i=n.getSchemaByType("tab-page");return e.contents=[i],e}}function Ot(n,e,t){return e}const Ye={$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",default:0},titleLength:{description:"",type:"number",default:7},fill:{description:"",type:"boolean",default:!1}},required:["id","type","contents"]},Ce={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},selectedTab:{type:String,default:""},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"}},Ge=ge(Ce,Ye,xe,Xe),Be=Object.assign({},Ce,{componentId:{type:String,default:""}}),Qe=ge(Be,Ye,xe,Xe),Ze=Et();function Rt(n,e,t){const a=o.ref([]),i=o.ref(n.activeId||""),r=o.ref(!0),s=o.ref([]),d=o.ref(0);function l(T){const y=T.findIndex(w=>w.props.show!==!1&&!i.value&&!w.props.disabled);if(s.value=[],!i.value&&y!==-1){i.value=T[y].props.id;const w=T[y];w&&w.props.toolbar&&w.props.toolbar.buttons&&w.props.toolbar.buttons.length&&(s.value=[...w.props.toolbar.buttons])}}function c(T){let y=!1;const w=a.value.find(M=>M.props.id===T);y=!w||w.props.show===!1||w.props.disabled===!1,y?l(a.value):i.value=T}o.watch(()=>n.activeId,(T,y)=>{T!==y&&c(T)});function p(T){var w;if(n.autoTitleWidth)return;const y=(w=T.value)==null?void 0:w.querySelectorAll(".st-tab-text");if(y)for(let M=0;M<y.length;M++){const I=y[M].parentNode;y[M].scrollWidth>I.offsetWidth?y[M].classList.contains("farris-title-text-custom")||y[M].classList.add("farris-title-text-custom"):y[M].classList.remove("farris-title-text-custom")}}const f=T=>{T.preventDefault(),T.stopPropagation()};function m(T,y,w=!1){const M=a.value.findIndex(I=>I.props.id===y);a.value=a.value.filter(I=>I.props.id!==y),i.value===y&&(i.value="",l(a.value)),f(T),o.nextTick(()=>{d.value++,p(t),w&&(r.value=!0),e.emit("tabRemove",{removeIndex:M,removeId:y,activeId:i.value})})}function u(T){const y=i.value;i.value=T;const w=a.value.find(M=>M.props.id===T);s.value=[],w&&w.props.toolbar&&w.props.toolbar.buttons&&w.props.toolbar.buttons.length&&(s.value=[...w.props.toolbar.buttons]),e.emit("update:activeId",T),e.emit("tabChange",{prevId:y,nextId:i.value})}function g(T){u(T)}function C(T){a.value.findIndex(w=>w.props.id===T.props.id)===-1&&a.value.push(T),d.value++}function E(T){a.value.findIndex(w=>w.props.id===T.props.id)!==-1&&(a.value.forEach(w=>{w.props.id===T.props.id&&(w=T)}),o.nextTick(()=>{d.value++,p(t)}))}return{activeId:i,addTab:C,changeTitleStyle:p,removeTab:m,selectTab:g,selectTabByTabId:u,tabPages:a,updateTab:E,toolbarItems:s,needUpdateNavigationLayout:d,checkActiveId:c}}function Lt(n,e,t,a,i){const{activeId:r,removeTab:s,selectTab:d}=i,l=o.computed(()=>({"st-tab-text":!0,"text-truncate":!0,"farris-title-auto":n.autoTitleWidth})),c=o.computed(()=>({"nav-item":!0,"d-none":e.show!==void 0?!e.show:!1,"f-state-active":e.id===r.value,"f-state-disabled":e.disabled})),p=o.computed(()=>({width:`${e.tabWidth}px`})),f=o.computed(()=>({"nav-link":!0,"tabs-text-truncate":!0,active:e.id===r.value,disabled:e.disabled}));function m(y){return o.createVNode("span",{class:l.value,title:y.title},[y.title])}function u(y){return y.slots.title?y.slots.title:m}const g=u(t),C=o.ref(e.removeable);function E(){return o.createVNode("span",{class:"st-drop-close",onClick:y=>s(y,e.id)},[o.createVNode("i",{class:"f-icon f-icon-close"},null)])}function T(y){d(e.id),n.tabType==="one-page"&&a.scrollToByPaggId(e.id)}return o.createVNode("li",{class:c.value,style:p.value},[o.createVNode("a",{class:f.value,onClick:T},[g(e),C.value&&E()])])}function Ft(n,e,t,a,i){const{shouldShowNavigationButtons:r}=t,{tabPages:s}=i,d=o.computed(()=>({spacer:!0,"f-utils-fill":!0,"spacer-sides-dropdown":r.value})),l=o.computed(()=>({width:"100%","justify-content":n.justifyContent})),c=o.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()=>o.createVNode("div",{class:d.value,style:l.value},[o.createVNode("ul",{class:c.value,ref:e},[s.value.map(p=>Lt(n,p.props,p,a,i))])])}function Je(n,e,t,a,i){const r=o.ref(),{shouldShowNavigationButtons:s}=t,{activeId:d,tabPages:l,selectTab:c}=i,p=o.ref(d.value),f=o.computed(()=>l.value.map(C=>({name:C.props.title,value:C.props.id,show:C.props.show,disabled:C.props.disabled}))),m=o.computed(()=>({spacer:!0,"f-utils-fill":!0,"spacer-sides-dropdown":s.value})),u=o.computed(()=>({width:"100%",display:"flex","justify-content":n.justifyContent}));o.onMounted(()=>{r.value&&(e.value=r.value.$el)});function g(C){c(C)}return o.watch(()=>d.value,C=>{C!==p.value&&(p.value=C)},{immediate:!0}),()=>o.createVNode("div",{class:m.value,style:u.value},[o.createVNode(It,{items:f.value,modelValue:p.value,"onUpdate:modelValue":C=>p.value=C,onChange:g,ref:r},null)])}function qt(n,e,t,a){const{activeId:i,removeTab:r,tabPages:s}=a,{selectAndScrollToTab:d}=t,{hideDropDown:l,searchTabText:c}=e,p=600;let f=null;const m=o.ref("auto"),u=o.computed(()=>{var S,O;let b=[];return n.searchBoxVisible?b=(S=s.value)==null?void 0:S.filter(R=>R.props.title.includes(c.value)):b=(O=s.value)==null?void 0:O.slice(),b}),g=o.computed(()=>({"dropdown-menu":!0,"tabs-pt28":n.searchBoxVisible,show:!l.value}));function C(b){return{"dropdown-item":!0,"text-truncate":!0,"px-2":!0,disabled:b.props.disabled,active:b.props.id===i.value,"d-none":b.props.show!==!0}}function E(b){b.preventDefault(),b.stopPropagation()}const T=()=>({width:m.value});function y(){f&&clearTimeout(f)}function w(){l.value||(f=setTimeout(()=>{l.value=!0},p))}function M(b,S){b.stopPropagation(),d(b,S),l.value=!0}function I(b,S){b.stopPropagation(),r(b,S,!0)}function B(){return o.createVNode("div",{class:g.value,onMouseenter:()=>y(),onMouseleave:()=>w()},[n.searchBoxVisible&&o.createVNode("div",{onClick:b=>E(b),class:"pb-1 tabs-li-absolute"},[o.withDirectives(o.createVNode("input",{type:"text",class:"form-control k-textbox","onUpdate:modelValue":b=>c.value=b},null),[[o.vModelText,c.value]]),o.createVNode("span",{class:"f-icon f-icon-page-title-query tabs-icon-search"},null)]),u.value.length?o.createVNode("ul",{class:"tab-dropdown-menu--items",style:T()},[u.value.map(b=>o.createVNode("li",{class:C(b),onClick:S=>M(S,b.props)},[b.props.removeable&&o.createVNode("span",{class:"float-right st-drop-close",onClick:S=>I(S,b.props.id)},[o.createVNode("i",{class:"f-icon f-icon-close"},null)]),o.createVNode("a",{class:"dropdown-title",title:b.props.title},[b.props.title])]))]):o.createVNode("div",{class:"dropdown-no-data"},[o.createTextVNode("没有相关数据")])])}return{renderDropdownMenu:B}}function Ht(n,e,t,a){const{hideDropDown:i}=e,{renderDropdownMenu:r}=qt(n,e,t,a),s=o.ref(n.showDropdown);function d(){return s.value&&o.createVNode(o.Fragment,null,[o.createVNode("button",{class:"btn dropdown-toggle-split dropdown-toggle",onClick:()=>{i.value=!1}},null),r()])}return{renderMorePagesButtton:d}}function Ke(n,e,t,a){const i=o.ref(!1),{selectTabByTabId:r,tabPages:s,needUpdateNavigationLayout:d}=a,l=4;function c(){var y;const E=e.value,T=(y=e.value)==null?void 0:y.parentElement;i.value=T&&E&&T.offsetWidth<E.scrollWidth-l}const p=o.computed(()=>({btn:!0,"sc-nav-btn":!0,"px-1":!0,"sc-nav-lr":!0,"d-none":!i.value})),f=o.computed(()=>({"btn-group":!0,"sc-nav-btn":!0,dropdown:!0,"d-none":!i.value})),m=o.computed(()=>({btn:!0,"sc-nav-rg":!0,"d-none":!i.value}));function u(E,T){if(!e.value)return;const y=e.value.scrollLeft,w=e.value.scrollWidth-e.value.offsetWidth;if(T>0){if(e.value.scrollLeft>=w)return;e.value.scrollLeft=y+n.scrollStep+E}else if(T<0){if(e.value.scrollLeft<=0)return;e.value.scrollLeft=y-n.scrollStep-E}}function g(E){if(!i.value||!e.value)return;const T=n.tabType==="pills"?".f-capsule-item":".nav-item",y=e.value.querySelectorAll(T),{parentElement:w}=e.value,M=y[E];if(M&&w){const I=w.getBoundingClientRect().left,B=w.getBoundingClientRect().right,b=M.getBoundingClientRect().left,S=M.getBoundingClientRect().right;b<I?u(I-b,-1):B<S&&u(S-B,1),n.tabType==="one-page"&&t.scrollTo(E)}}function C(E,T){if(T.disabled)return;r(T.id);const y=s.value.findIndex(w=>w.props.id===T.id);o.nextTick(()=>{g(y)})}return o.watch(d,()=>{c()}),{previousButtonClass:p,nextButtonGroupClass:f,nextButtonClass:m,scrollTab:u,selectAndScrollToTab:C,shouldShowNavigationButtons:i,updateNavigationLayout:c}}function et(n,e){const{tabPages:t}=e,a=o.ref(""),i=o.ref(!0),r=o.computed(()=>n.searchBoxVisible),s=o.computed(()=>r.value?t.value.filter(l=>l.props.title.includes(a.value)):t.value.slice());return{searchTabText:a,hideDropDown:i,shouldShowSearchBox:r,tabsInDropdownMenu:s}}function tt(n,e,t){const a=".farris-tab-page",{tabPages:i}=t;function r(d){const l=e.value;if(l){const c=e.value.querySelectorAll(a);if(c.length>0){const p=c[d],{offsetTop:f}=p,m=f-32>0?f-32:0;l.scrollTop=m}}}function s(d){const l=i.value.findIndex(c=>c.props.id===d);l>-1&&r(l)}return{scrollTo:r,scrollToByPaggId:s}}const de=o.defineComponent({name:"FTabs",props:Ce,emits:["tabChange","tabRemove","update:activeId","Click"],setup(n,e){const t=o.ref(n.tabType),a=o.shallowRef(),i=o.ref(n.customClass),r=o.shallowRef(),s=o.shallowRef(),d=o.ref(),l=Rt(n,e,r),{activeId:c,changeTitleStyle:p,tabPages:f,addTab:m,updateTab:u,selectTabByTabId:g,toolbarItems:C,checkActiveId:E}=l,T=tt(n,s,l),y=Ke(n,r,T,l),{previousButtonClass:w,nextButtonClass:M,nextButtonGroupClass:I,scrollTab:B,updateNavigationLayout:b}=y,S=et(n,l),O=Ft(n,r,y,T,l),R=O,v=Je(n,r,y,T,l),W=new Map([["default",O],["one-page",R],["pills",v]]);o.computed(()=>{const X=f.value.find(k=>k.props.id===c.value);return X==null?void 0:X.slots});const V=o.computed(()=>{const X=f.value.find(j=>j.props.id===c.value);return(X==null?void 0:X.props.toolbarPosition)==="inHead"}),x=o.computed(()=>n.fill);o.provide("tabs",{activeId:c,addTab:m,updateTab:u,tabPages:f,tabType:t,shouldFillParentContaner:x});const H=o.computed(()=>({"farris-tabs-header":!0,"farris-tabs-inHead":V.value,"farris-tabs-inContent":!V.value,"farris-tabs-nav-fill":n.tabType==="fill","farris-tabs-nav-pills":n.tabType==="pills"})),q=o.computed(()=>{const X={width:V.value&&n.titleWidth?`${n.titleWidth}%`:""};return X.width&&(X.flex="unset"),X}),K=o.computed(()=>{const X={"farris-tabs":!0,"f-utils-fill-flex-column":x.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 i.value&&i.value.split(" ").reduce((k,j)=>(k[j]=!0,k),X),X});o.onMounted(()=>{f.value.length&&(E(n.activeId||f.value[0].props.id),g(c.value)),o.nextTick(()=>{b()}),p(r),Dt.useResizeObserver(d.value,()=>{b()})});function oe(){return o.createVNode("button",{title:"向左",type:"button",class:w.value,onClick:()=>{B(0,-1)}},null)}function P(){return o.createVNode("button",{title:"向右",type:"button",class:M.value,onClick:()=>{B(0,1)}},null)}const{renderMorePagesButtton:N}=Ht(n,S,y,l),D=(X,k)=>{e.emit("Click",X,k,c.value)};function F(){return C.value.length?o.createVNode(He,{class:"f-utils-fill",items:C.value,onClick:D},null):null}const Z=W.get(n.tabType)||W.get("default");function J(){var X,k,j,U;return o.createVNode("div",{class:H.value},[o.createVNode("div",{class:"farris-tabs-header-pre"},[(k=(X=e.slots).headerPrefix)==null?void 0:k.call(X)]),o.createVNode("div",{class:"farris-tabs-title scroll-tabs",style:q.value,ref:d},[oe(),Z&&Z(),o.createVNode("div",{class:I.value},[P(),N()])]),F(),o.createVNode("div",{class:"farris-tabs-header-post"},[(U=(j=e.slots).headerSuffix)==null?void 0:U.call(j)])])}const _=o.computed(()=>({"farris-tabs-content":!0,"f-utils-fill-flex-column":x.value}));function se(){var X,k;return o.createVNode("div",{class:_.value,ref:s},[(k=(X=e.slots).default)==null?void 0:k.call(X)])}return()=>o.createVNode("div",{class:K.value,ref:a},[J(),se()])}});function _t(n,e,t){return e&&e.contents&&e.contents.length&&(e.contents.forEach(a=>{a.title&&(a.text=a.title)}),e.buttons=e.contents,delete e.contents),{toolbar:e}}const Ut=new Map([["appearance",ye],["toolbar",_t]]),Wt={$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"}},required:["id","type","contents"]},Te={tabWidth:{type:Number,default:-1},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"}},$e=xt.createPropsResolver(Te,Wt,Ut);function zt(n){return typeof n=="function"||Object.prototype.toString.call(n)==="[object Object]"&&!o.isVNode(n)}const we=o.defineComponent({name:"FTabPage",props:Te,emits:[],setup(n,e){const t=o.inject("tabs"),a=o.ref(n.show),i={slots:e.slots,props:n},r=o.ref((t==null?void 0:t.tabType.value)||"default");o.onMounted(()=>{const u=t==null?void 0:t.tabPages.value.findIndex(g=>g.props.id===n.id);!u||u===-1?t==null||t.addTab(i):u>-1&&(a.value=!1,console.warn(`已经存在id为${n.id}的页签啦`))}),o.onUnmounted(()=>{});const s=o.computed(()=>(n==null?void 0:n.id)===(t==null?void 0:t.activeId.value)),d=o.computed(()=>({display:s.value?"":"none"}));o.watch(()=>n,u=>{t==null||t.updateTab({props:u,slots:e.slots})},{immediate:!0,deep:!0});function l(){var g,C;const u=(C=(g=e.slots).default)==null?void 0:C.call(g);return o.createVNode(Bt,{"main-title":n.title,class:"farris-tab-page"},zt(u)?u:{default:()=>[u]})}const c=o.computed(()=>{var g;return{"farris-tab-page":!0,"f-utils-fill-flex-column":s.value&&t&&((g=t.shouldFillParentContaner)==null?void 0:g.value)}});function p(){var g,C;const u=(C=(g=e.slots).default)==null?void 0:C.call(g);return o.createVNode("div",{class:c.value,style:d.value},[u])}const m=new Map([["default",p],["one-page",l]]).get(r.value)||p;return()=>a.value?m():null}});function Xt(n,e,t,a,i,r){const{activeId:s,selectTab:d,removeDesignTab:l,selectDesignTab:c,addTabPageToolbar:p}=i,f=o.computed(()=>({"st-tab-text":!0,"farris-title-auto":n.autoTitleWidth})),m=o.computed(()=>{const v={"farris-component":!0,"nav-item":!0,"f-state-active":e.id===s.value,"f-state-disabled":e.disabled};return v[`${e.id}-design-item`]=!0,v}),u=o.computed(()=>({width:`${e.tabWidth}px`})),g=o.computed(()=>({"nav-link":!0,"tabs-text-truncate":!0,active:e.id===s.value}));function C(v){return o.createVNode("span",{class:f.value,title:v.title},[v.title])}function E(v){return v.slots.title?v.slots.title:C}const T=E(t),y=o.ref(e.removeable);function w(){return o.createVNode("span",{class:"st-drop-close",style:{opacity:.6}},[o.createVNode("i",{class:"f-icon f-icon-close"},null)])}function M(v){d(e.id),n.tabType==="one-page"&&a.scrollToByPaggId(e.id)}function I(v){v&&(v.stopPropagation(),v.preventDefault()),c(v,e.id,r.value)}function B(v){l(v,e.id)}function b(v){p(v,e.id)}function S(){return o.createVNode("div",{role:"button",class:"btn component-settings-button",title:"删除",ref:"removeComponent",onClick:v=>B(v)},[o.createVNode("i",{class:"f-icon f-icon-yxs_delete"},null)])}function O(){return o.createVNode("div",{role:"button",class:"btn component-settings-button",title:"新增按钮",ref:"addComponent",onClick:v=>b(v)},[o.createVNode("i",{class:"f-icon f-icon-plus-circle"},null)])}function R(){return o.createVNode("div",{class:"component-btn-group","data-noattach":"true"},[o.createVNode("div",null,[S(),!e.toolbar||!e.toolbar.buttons||!e.toolbar.buttons.length?O():""])])}return o.createVNode("li",{onClick:v=>I(v),class:m.value,style:u.value,pageId:`${e.id}-design-item`},[R(),o.createVNode("a",{class:g.value,onClick:M,id:`${e.id}-design-item`},[T(e),y.value&&w()])])}function Yt(n,e,t,a,i,r,s){const{tabPages:d}=i,l=o.computed(()=>({spacer:!0,"f-utils-fill":!0})),c=o.computed(()=>({width:"100%","justify-content":n.justifyContent})),p=o.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=o.computed(()=>({overflow:"auto"})),m=function(u){var E;const g=be("tab-page");g.id=`tab_page_${Math.random().toString().slice(2,6)}`,g.title="标题",g.toolbar={buttons:[]},(E=r.value.schema.contents)==null||E.push(g);const{selectTabByTabId:C}=i;C(g.id)};return()=>o.createVNode("div",{class:l.value,style:c.value},[o.createVNode("ul",{class:p.value,style:f.value,ref:e},[d.value.map(u=>Xt(n,u.props,u,a,i,r)),o.createVNode("li",{class:"nav-item no-drag"},[o.createVNode("a",{class:"nav-link tabs-text-truncate",title:"添加页签",onClick:u=>m()},[o.createVNode("i",{class:"f-icon f-icon-plus",style:"font-size: 20px;margin: 0 auto;line-height: 24px;"},null)])])])])}function nt(n,e,t){var B;const a=t&&t.getStyles&&t.getStyles()||"",i=t&&t.getDesignerClass&&t.getDesignerClass()||"",r=o.ref();function s(){return(e==null?void 0:e.schema.componentType)==="frame"?!1:t&&t.checkCanMoveComponent?t.checkCanMoveComponent():!0}function d(){return!1}function l(){return(e==null?void 0:e.schema.componentType)==="frame"?!1:t&&t.checkCanDeleteComponent?t.checkCanDeleteComponent():!0}function c(){return(e==null?void 0:e.schema.componentType)==="frame"?!0:t&&t.hideNestedPaddingInDesginerView?t.hideNestedPaddingInDesginerView():!1}function p(b){if(!b||!b.value)return null;if(b.value.schema&&b.value.schema.type==="component")return b.value;const S=o.ref(b==null?void 0:b.value.parent),O=p(S);return O||null}function f(b=e){var v;if(t!=null&&t.getDraggableDesignItemElement)return t.getDraggableDesignItemElement(b);const{componentInstance:S,designerItemElementRef:O}=b;if(!S||!S.value)return null;const{getCustomButtons:R}=S.value;return S.value.canMove||R&&((v=R())!=null&&v.length)?O:f(b.parent)}function m(b){return!!t&&t.canAccepts(b)}function u(){return(e==null?void 0:e.schema.label)||(e==null?void 0:e.schema.title)||(e==null?void 0:e.schema.name)}function g(){}function C(b,S){var O;!b||!S||(t!=null&&t.onAcceptMovedChildElement&&t.onAcceptMovedChildElement(b,S),(O=e==null?void 0:e.setupContext)==null||O.emit("dragEnd"))}function E(b,S){const{componentType:O}=b;let R=be(O,b,S);t&&t.onResolveNewComponentSchema&&(R=t.onResolveNewComponentSchema(b,R));const v=O.toLowerCase().replace(/-/g,"_");return R&&!R.id&&R.type===O&&(R.id=`${v}_${Math.random().toString().slice(2,6)}`),R}function T(b){b&&t!=null&&t.onChildElementMovedOut&&t.onChildElementMovedOut(b)}function y(...b){if(t&&t.getPropsConfig)return t.getPropsConfig(...b)}function w(){t&&t.onRemoveComponent&&t.onRemoveComponent(),e!=null&&e.schema.contents&&e.schema.contents.map(b=>{let S=b.id;b.type==="component-ref"&&(S=b.component);const O=n.value.querySelectorAll(`#${S}-design-item`);O!=null&&O.length&&Array.from(O).map(R=>{var v;(v=R==null?void 0:R.componentInstance)!=null&&v.value.onRemoveComponent&&R.componentInstance.value.onRemoveComponent()})})}function M(){if(t&&t.getCustomButtons)return t.getCustomButtons()}function I(b){if(t&&t.onPropertyChanged)return t.onPropertyChanged(b)}return r.value={canMove:s(),canSelectParent:d(),canDelete:l(),canNested:!c(),contents:e==null?void 0:e.schema.contents,elementRef:n,parent:(B=e==null?void 0:e.parent)==null?void 0:B.componentInstance,schema:e==null?void 0:e.schema,styles:a,designerClass:i,canAccepts:m,getBelongedComponentInstance:p,getDraggableDesignItemElement:f,getDraggingDisplayText:u,getPropConfig:y,getDragScopeElement:g,onAcceptMovedChildElement:C,onChildElementMovedOut:T,addNewChildComponentSchema:E,triggerBelongedComponentToMoveWhenMoved:!!t&&t.triggerBelongedComponentToMoveWhenMoved||o.ref(!1),triggerBelongedComponentToDeleteWhenDeleted:!!t&&t.triggerBelongedComponentToDeleteWhenDeleted||o.ref(!1),onRemoveComponent:w,getCustomButtons:M,onPropertyChanged:I},r}class ot{getTemplateRule(e,t){const a=t==null?void 0:t.formSchemaUtils,i=a==null?void 0:a.getFormTemplateRule(),r={canAccept:!0,canDelete:!0,canMove:!0};if(!i)return r;const s=this.getComponentContext(e),{componentClassList:d}=s;return d.forEach(l=>{if(!l||!i[l])return;const{canMove:c,canDelete:p,canAccept:f}=i[l];r.canMove=r.canMove&&this.resolveRuleValue(c,s),r.canDelete=r.canDelete&&this.resolveRuleValue(p,s),r.canAccept=r.canAccept&&this.resolveRuleValue(f,s)}),r}resolveRuleValue(e,t){return typeof e=="boolean"?e:this.parseRuleValueSchema(e,t)}parseRuleValueSchema(e,t){const a=e.invalidContext||[];let i=!0;for(const r of a){if(r.firstLevelChild){if(r.firstLevelChild.class){const{firstLevelChildClassList:s}=t;if(s&&!s.includes(r.firstLevelChild.class)){i=!1;continue}}if(r.firstLevelChild.type){const{firstLevelChildSchema:s}=t;if(!s||s.type!==r.firstLevelChild.type){i=!1;continue}}}if(r.secondLevelChild){if(r.secondLevelChild.class){const{secondLevelChildClassList:s}=t;if(s&&!s.includes(r.secondLevelChild.class)){i=!1;continue}}if(r.secondLevelChild.type){const{secondLevelChildSchema:s}=t;if(!s||s.type!==r.secondLevelChild.type){i=!1;continue}}}if(r.parent){if(r.parent.class){const{parentClassList:s}=t;if(s&&!s.includes(r.parent.class)){i=!1;continue}}if(r.parent.type){const{parentSchema:s}=t;if(s&&s.type!==r.parent.type){i=!1;continue}}}i=!0;break}return!i}getComponentContext(e){var C,E,T,y;const t=e.schema,a=t.appearance&&t.appearance.class||"",i=a.split(" ")||[],r=t.contents||[],s=r.length?r[0]:null,d=s&&s.appearance?s.appearance.class:"",l=d?d.split(" "):[],c=(C=s==null?void 0:s.contents)!=null&&C.length?s==null?void 0:s.contents[0]:null,p=c&&c.appearance?c.appearance.class:"",f=p?p.split(" "):[],m=t.type==="component"?(T=(E=e.parent)==null?void 0:E.parent)==null?void 0:T.schema:(y=e.parent)==null?void 0:y.schema,u=m&&m.appearance&&m.appearance.class||"",g=u?u.split(" "):[];return{componentClass:a,componentClassList:i,childContents:r,firstLevelChildSchema:s,firstLevelChildClass:d,firstLevelChildClassList:l,secondLevelChildSchema:c,secondLevelChildClass:p,secondLevelChildClassList:f,parentSchema:m,parentClass:u,parentClassList:g}}}const Gt=o.ref(0);function Qt(){Gt.value++}const he=o.ref(0);function Zt(n,e){const t=e.getBoundingClientRect(),a=n.getBoundingClientRect(),i=a.top>=t.top,r=a.top<=t.bottom;return i&&r}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 a=e.querySelector("div");if(a){const i=a.getBoundingClientRect();a.style.top=t.top+"px";let r=t.left-i.width;const s=document.querySelector(".editorDiv");if(s){const d=s.getBoundingClientRect();r<d.left&&({left:r}=n.getBoundingClientRect())}a.style.left=r+"px"}}}function Jt(n){if(!window.scrollContainerList)return;const e=Array.from(window.scrollContainerList);if(e.length&&e.length===1){const t=e[0],a=document.querySelector(`[id=${t}]`);if(a&&a.contains(n))return a}}function rt(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 a=!0;const i=Jt(n);if(i&&(a=Zt(n,i)),!a){t.style.display="none";return}je(n)}}function Kt(n){if(!n)return;let e;n.className.includes("dgComponentSelected")?e=n:e=n.querySelector(".dgComponentSelected"),e&&rt(e)}class ve{constructor(e,t){z(this,"componentId");z(this,"viewModelId");z(this,"eventsEditorUtils");z(this,"formSchemaUtils");z(this,"formMetadataConverter");z(this,"designViewModelUtils");z(this,"designViewModelField");z(this,"controlCreatorUtils");z(this,"designerHostService");z(this,"schemaService",null);z(this,"metadataService",null);z(this,"propertyConfig",{type:"object",categories:{}});var a;this.componentId=e,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(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 a;const t=e.binding&&e.binding.type==="Form"&&e.binding.field;if(t){if(!this.designViewModelField){const i=this.designViewModelUtils.getDgViewModel(this.viewModelId);this.designViewModelField=i.fields.find(r=>r.id===t)}e.updateOn=(a=this.designViewModelField)==null?void 0:a.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",editable:!1,data:[{value:e.type,name:te[e.type].name}]}}}}}getAppearanceConfig(e=null){return{title:"外观",description:"Appearance",properties:{class:{title:"class样式",type:"string",description:"组件的CSS样式",$converter:"/converter/appearance.converter"},style:{title:"style样式",type:"string",description:"组件的样式",$converter:"/converter/appearance.converter"}},setPropertyRelates(t,a){if(t)switch(t&&t.propertyID){case"class":case"style":{he.value++;break}}}}}updateElementByParentContainer(e,t){const a=t&&t.parent&&t.parent.schema;if(!a)return;const i=a.contents.findIndex(s=>s.id===e),r=ie.cloneDeep(a.contents[i]);a.contents.splice(i,1),a.contents.splice(i,0,r),Qt()}}class en extends ve{constructor(e,t){super(e,t)}getPropertyConfig(e){return this.getBasicPropConfig(e),this.getBehaviorProperties(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,a){if(t)switch(t&&t.propertyID){case"title":{t.needRefreshControlTree=!0;break}}}}}}class tn extends ve{constructor(e,t){super(e,t)}getPropertyConfig(e){return this.propertyConfig.categories.basic=this.getBasicPropConfig(e),this.propertyConfig.categories.appearance=this.getAppearanceProperties(e),this.propertyConfig}getAppearanceProperties(e){return{title:"外观",description:"Appearance",properties:{class:{title:"class样式",type:"string",description:""},titleWidth:{description:"标题区域宽度占页面比",type:"number",title:"标题区域宽度(%)",min:0,decimals:0,max:100},autoTitleWidth:{description:"开启,则显示全部字符;关闭,最多显示7个字符",type:"boolean",title:"标题自适应宽度",defaultValue:!1,visible:!1},fill:{description:"flex布局下,填充满剩余部分",type:"boolean",title:"填充"}}}}}function nn(n,e){const t=n.schema,a=new ot,{canMove:i,canAccept:r,canDelete:s}=a.getTemplateRule(n,e);function d(g){return r}function l(){return s}function c(){return i}function p(){return!i&&!s}function f(g){var T;return(((T=document.querySelector(".dgComponentFocused"))==null?void 0:T.id)===`${t.id}-design-item`?new tn(g,e):new en(g,e)).getPropertyConfig(t)}function m(){n.designerItemElementRef.value&&o.nextTick(()=>{const g=n.designerItemElementRef.value.querySelector(".dgComponentSelected");g!=null&&g.className.includes("dgComponentSelected")&&g.click()})}function u(g){if(!g)return;const{changeObject:C}=g;C&&C.propertyID==="title"&&m()}return{canAccepts:d,checkCanDeleteComponent:l,checkCanMoveComponent:c,getPropsConfig:f,hideNestedPaddingInDesginerView:p,onPropertyChanged:u}}function on(n,e,t,a){const i=o.ref([]),r=o.ref(n.activeId||""),s=o.ref(!0),d=o.ref(),l=o.ref([]),c=o.ref(0);function p(P){const N=P.value.findIndex(D=>D.props.show!==!1&&!r.value);if(l.value=[],!r.value&&N!==-1){r.value=P.value[N].props.id;const D=P.value[N];D&&D.props.toolbar&&D.props.toolbar.buttons&&D.props.toolbar.buttons.length&&(l.value=[...D.props.toolbar.buttons])}}function f(P){r.value=P}function m(P,N){P.classList.contains(N)||P.classList.add(N)}function u(P,N){P.classList.remove(N)}function g(P){const{parentElement:N}=P;N&&(P.scrollWidth>N.offsetWidth?m(P,"farris-title-text-custom"):u(P,"farris-title-text-custom"))}function C(P){var D;if(n.autoTitleWidth)return;const N=(D=P.value)==null?void 0:D.querySelectorAll(".st-tab-text");N&&N.forEach(F=>g(F))}const E=P=>{P.preventDefault(),P.stopPropagation()};function T(P){i.value=i.value.filter(N=>N.props.id!==P),r.value===P&&(r.value="",p(i))}function y(P,N,D=!1){const F=i.value.findIndex(Z=>Z.props.id===N);T(N),E(P),o.nextTick(()=>{c.value++,C(t),D&&(s.value=!0),e.emit("tabRemove",{removeIndex:F,removeId:N,activeId:r.value})})}function w(){const P=i.value.find(F=>F.props.id===r.value);if(l.value=[],P&&P.props.toolbar){const F=Object.prototype.hasOwnProperty.call(P.props.toolbar,"contents")?"contents":"buttons";P.props.toolbar[F]&&P.props.toolbar[F].length&&(l.value=[...P.props.toolbar[F]])}const N=a.schema.contents,D=N==null?void 0:N.find(F=>F.id===r.value);d.value=D==null?void 0:D.toolbar}function M(P){const N=r.value;r.value=P,w(),e.emit("tabChange",{prevId:N,nextId:r.value})}function I(P){M(P)}function B(P){i.value.findIndex(D=>D.props.id===P.props.id)===-1&&i.value.push(P),c.value++}function b(P){i.value.findIndex(D=>D.props.id===P.props.id)!==-1&&(i.value.forEach(D=>{D.props.id===P.props.id&&(D=P)}),o.nextTick(()=>{c.value++,C(t)}))}function S(P){P&&(P.stopPropagation(),P.preventDefault())}function O(P){var F;const N=a.designerItemElementRef.value.querySelector(".farris-tabs-content"),D=N==null?void 0:N.querySelector(`#${P}-design-item`);(F=D==null?void 0:D.componentInstance)!=null&&F.value.onRemoveComponent&&D.componentInstance.value.onRemoveComponent()}function R(P,N){var Z;S(P),O(N);const D=a.schema.contents,F=D==null?void 0:D.findIndex(J=>J.id===N);F===-1||F===void 0||(D==null||D.splice(F,1),T(N),w(),(Z=a==null?void 0:a.setupContext)==null||Z.emit("selectionChange"),he.value++)}function v(){Array.from(document.getElementsByClassName("dgComponentFocused")).forEach(N=>N.classList.remove("dgComponentFocused"));const P=document.getElementsByClassName("dgComponentSelected");Array.from(P).forEach(N=>N.classList.remove("dgComponentSelected"))}function W(P){P.currentTarget.classList.add("dgComponentFocused","dgComponentSelected")}function V(P,N){var J;const{contents:D=[]}=a.schema,F=D==null?void 0:D.findIndex(_=>_.id===P),Z=D[F];(J=a==null?void 0:a.setupContext)==null||J.emit("selectionChange",Z.type,Z,n.componentId,N)}function x(P,N){const D=N.getBoundingClientRect(),F=P.getBoundingClientRect(),Z=F.left+F.width<=D.left+D.width,J=F.left+F.width>=D.left;return Z&&J}function H(){t&&t.value&&t.value.addEventListener("scroll",P=>{const N=P.target.querySelector(".dgComponentSelected");if(N){const D=N.querySelector(".component-btn-group");x(N,P.target)?je(N):D&&(D.style.display="none")}})}function q(P){if(P&&P.parentElement){let N=P.getBoundingClientRect(),D=P.parentElement.getBoundingClientRect();(N.left<D.left||N.right>D.right)&&(t.value.scrollLeft=0,N=P.getBoundingClientRect(),D=P.parentElement.getBoundingClientRect(),t.value.scrollLeft=N.left-D.left),je(P)}}function K(P,N,D){v(),S(P),W(P),V(N,D);const F=P.currentTarget;q(F)}function oe(P,N){S(P);const D=a.schema.contents,F=D==null?void 0:D.find(J=>J.id===N);if(!F)return;(!F.toolbar||!F.toolbar.buttons)&&(F.toolbar={buttons:[]});const Z=be("tab-toolbar-item");Z.id=`tab_toolbar_item_${Math.random().toString().slice(2,6)}`,F.toolbar.buttons.push(Z),l.value=[...F.toolbar.buttons],d.value=F.toolbar,o.nextTick(()=>{if(t&&t.value){const J=t.value.querySelector(".f-state-active");J&&q(J)}})}return{activeId:r,addTab:B,changeTitleStyle:C,removeTab:y,selectTab:I,selectTabByTabId:M,tabPages:i,updateTab:b,toolbarItems:l,removeDesignTab:R,selectDesignTab:K,toolbarSchema:d,changeToolbarItems:w,addTabPageToolbar:oe,listenTabNavElementScroll:H,setHorizontalScrollbarPosition:q,needUpdateNavigationLayout:c,checkActiveId:f}}const rn=new Map([["buttons","items"],["appearance",ye]]);function at(n,e,t){return e}const an={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/response-toolbar.schema.json",title:"response-toolbar",description:"A Farris Toolbar Component",type:"object",properties:{id:{description:"The unique identifier for a Response Toolbar",type:"string"},type:{description:"The type string of Response Toolbar",type:"string",default:"response-toolbar"},appearance:{description:"",type:"object",properties:{class:{type:"string",default:""}}},alignment:{description:"The alignment of Response Toolbar Button.",type:"string",default:"right"},buttons:{description:"The items of Response Toolbar.",type:"array",default:[]},buttonSize:{type:"string",default:""}},required:["id","type","buttons"]},sn={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/response-toolbar-item.schema.json",title:"response-toolbar-item",description:"A Farris Toolbar Item Component",type:"object",properties:{id:{description:"The unique identifier for a Response Toolbar",type:"string"},type:{description:"The type string of Response Toolbar",type:"string",default:"response-toolbar-item"},appearance:{description:"",type:"object",properties:{class:{type:"string",default:"btn-secondary"}}},alignment:{description:"对齐",type:"string",default:"right"},text:{description:"文本",type:"string",default:"按钮"},icon:{description:"图标",type:"string",default:""},disabled:{description:"禁用",type:"boolean",default:!1},onClick:{description:"点击事件",type:"string",default:""}},required:["id","type","text"]},it={customClass:{type:String,default:""},buttonSize:{type:String,default:""},alignment:{Type:String,default:"right"},items:{Type:Array,default:[]}},ln=Object.assign({},it,{componentId:{type:String,default:""}});ge(it,an,rn,at);const st={id:{type:String,default:""},items:{type:Object,default:{}},class:{type:String,default:""},text:{type:String,default:""},icon:{type:String,default:""},componentId:{type:String,default:""},alignment:{Type:String,default:"right"}};ge(st,sn,void 0,at);class cn extends ve{constructor(e,t){super(e,t)}getPropertyConfig(e){return this.propertyConfig.categories.basic=this.getBasicPropConfig(e),this.getAppearancePropConfig(e),this.propertyConfig}getAppearancePropConfig(e){this.propertyConfig.categories.appearance={title:"外观",description:"Appearance",properties:{class:{title:"class样式",type:"string",description:"组件的CSS样式",$converter:"/converter/appearance.converter"}}}}getBehaviorProperties(e){this.propertyConfig.categories.behavior={title:"行为",description:"",properties:{alignment:{title:"对齐方式",description:"在工具栏区域内按钮组的位置",type:"enum",editor:{type:"combo-list",textField:"name",valueField:"value",data:[{value:"left",name:"左对齐"},{value:"center",name:"居中"},{value:"right",name:"右对齐"}]}}}}}}function un(n,e){const t=n.schema;function a(m){return!1}function i(m,u){return u.text=m.label,u}function r(){return!1}function s(){return!1}function d(){return!0}function l(){return!0}function c(m){return new cn(m,e).getPropertyConfig(t)}function p(m){m&&(m.stopPropagation(),m.preventDefault());const{schema:u}=n;u.buttons||(u.buttons=[]);const g=be("response-toolbar-item");g.id=`toolbar_item_${Math.random().toString().slice(2,6)}`,g.appearance={class:"btn btn-secondary"},u.buttons.push(g)}function f(){return[{id:"appendItem",title:"新增按钮",icon:"f-icon f-icon-plus-circle text-white",onClick:m=>p(m)}]}return{canAccepts:a,checkCanAddComponent:d,checkCanDeleteComponent:s,checkCanMoveComponent:r,hideNestedPaddingInDesginerView:l,onResolveNewComponentSchema:i,getPropsConfig:c,getCustomButtons:f}}const dn={id:{type:String,default:""},componentId:{type:String,default:""},canAdd:{type:Boolean,default:!1},canDelete:{type:Boolean,default:!1},canMove:{type:Boolean,default:!1},contentKey:{type:String,default:"contents"},childLabel:{type:String,default:""},childType:{type:String,default:""},modelValue:{type:Object}};function fn(n,e,t){var I;const a="",i=o.ref();function r(){return!0}function s(){return!1}function d(){return!0}function l(){return!0}function c(){return!0}function p(B){if(!B||!B.value)return null;const b=o.ref(B==null?void 0:B.value.parent),S=p(b);return S||null}function f(B=e){const{componentInstance:b,designerItemElementRef:S}=B;return!b||!b.value?null:b.value.canMove||b.value.canAdd||b.value.canDelete?S:f(B.parent)}function m(B){return!!t}function u(){return(e==null?void 0:e.schema.label)||(e==null?void 0:e.schema.title)||(e==null?void 0:e.schema.name)}function g(){}function C(B,b){}function E(B){const{componentType:b}=B,S=o.inject("designer-host-service");let O=be(b,B,S);const R=b.toLowerCase().replace(/-/g,"_");return O&&!O.id&&O.type===b&&(O.id=`${R}_${Math.random().toString().slice(2,6)}`),O}function T(B){}function y(...B){return[]}function w(){}function M(B){}return i.value={canMove:r(),canSelectParent:s(),canAdd:l(),canDelete:d(),canNested:!c(),contents:[],elementRef:n,parent:(I=e.parent)==null?void 0:I.componentInstance,schema:e.schema,styles:a,canAccepts:m,getBelongedComponentInstance:p,getDraggableDesignItemElement:f,getDraggingDisplayText:u,getPropConfig:y,getDragScopeElement:g,onAcceptMovedChildElement:C,onChildElementMovedOut:T,addNewChildComponentSchema:E,onRemoveComponent:w,triggerBelongedComponentToMoveWhenMoved:o.ref(!1),triggerBelongedComponentToDeleteWhenDeleted:o.ref(!1),onPropertyChanged:M},i}const lt=o.defineComponent({name:"FDesignerInnerItem",props:dn,emits:["selectionChange","addComponent","removeComponent"],setup(n,e){const t=o.ref(n.canMove),a=o.ref(n.canAdd),i=o.ref(n.canDelete),r=o.ref(!1),s=o.ref(n.contentKey),d=o.ref(n.childType),l=o.ref(n.childLabel),c=o.ref(n.modelValue),p=o.ref(""),f=o.ref(),m=o.inject("canvas-dragula"),u=o.ref(),g=o.inject("design-item-context"),C={designerItemElementRef:f,componentInstance:u,schema:c.value,parent:g,setupContext:e};o.provide("design-item-context",C);const E=o.computed(()=>({"farris-component":!0,"flex-fill":n.id==="root-component","position-relative":t.value||i.value,"farris-nested":r.value,"can-move":t.value,"d-none":f.value&&f.value.classList.contains("d-none")})),T=o.computed(()=>{const V={};return p.value&&p.value.split(";").reduce((x,H)=>{const[q,K]=H.split(":");return q&&(x[q]=K),x},V),V});function y(V,x){if(g&&g.schema[s.value]){const H=g.schema[s.value].findIndex(q=>q.id===x.id);if(H>-1){const q=g.schema[s.value].length,K=g.schema[s.value][H%q];g.designerItemElementRef.value.querySelector(`#${K.id}-design-item`),g.schema[s.value].splice(H,1),he.value++,e.emit("removeComponent"),e.emit("selectionChange")}}}function w(V){if(u.value.addNewChildComponentSchema){const x={componentType:d.value,label:l.value,parentComponentInstance:u.value,targetPosition:-1},H=u.value.addNewChildComponentSchema(x);c.value[s.value].push(H),e.emit("addComponent")}}function M(){return a.value&&o.createVNode("div",{role:"button",class:"btn component-settings-button",title:"新增",ref:"removeComponent",onClick:V=>{w()}},[o.createVNode("i",{class:"f-icon f-icon-plus-circle"},null)])}function I(V){return i.value&&o.createVNode("div",{role:"button",class:"btn component-settings-button",title:"删除",ref:"removeComponent",onClick:o.withModifiers(x=>y(x,V),["stop"])},[o.createVNode("i",{class:"f-icon f-icon-yxs_delete"},null)])}function B(){return t.value&&o.createVNode("div",{role:"button",class:"btn component-settings-button",title:"移动",ref:"moveComponent"},[o.createVNode("i",{"data-dragging-icon":"true",class:"cmp_move f-icon f-icon-yxs_move"},null)])}function b(V){return o.createVNode("div",{class:"component-btn-group","data-noattach":"true"},[o.createVNode("div",null,[M(),B(),I(V)])])}o.watch(()=>n.modelValue,V=>{c.value=V,C.schema=V});function S(V){window.scrollContainerList||(window.scrollContainerList=new Set);const x=V.getAttribute("id");x&&window.scrollContainerList.add(x)}function O(V){const x=V.target;S(x),Kt(x)}function R(){var V,x;(x=(V=c.value)==null?void 0:V.contents)!=null&&x.length&&f.value&&f.value.addEventListener("scroll",O)}function v(){const V=f.value,x=o.ref(V.children[1]);return fn(x,C).value}o.onMounted(()=>{if(f.value){const V=f.value.querySelector(`[data-dragref='${c.value.id}-container']`);u.value=V&&V.componentInstance?V.componentInstance.value:v(),m&&V&&m.attachComponents(V,c.value),r.value=u.value.canNested!==void 0?u.value.canNested:r.value,a.value=u.value.canAdd!==void 0?u.value.canAdd:a.value,i.value=u.value.canDelete!==void 0?u.value.canDelete:i.value,t.value=u.value.canMove!==void 0?u.value.canMove:t.value,p.value=u.value.styles||"",f.value&&(f.value.componentInstance=u,f.value.designItemContext=C)}R(),he.value++}),o.onBeforeUnmount(()=>{f.value&&f.value.removeEventListener("scroll",O)});function W(V){V&&(V.preventDefault(),V.stopPropagation());let x=C.designerItemElementRef;const H=f.value;if(H){const q=document.getElementsByClassName("dgComponentFocused");q&&q.length===1&&q[0]===f.value||(Array.from(q).forEach(oe=>oe.classList.remove("dgComponentFocused")),Array.from(document.getElementsByClassName("dgComponentSelected")).forEach(oe=>oe.classList.remove("dgComponentSelected")),H.classList.add("dgComponentFocused"),e.emit("selectionChange",c.value.type,c.value,n.com