@farris/ui-vue
Version:
Farris Vue, a Farris Design based Vue3 component library.
9 lines (8 loc) • 33.9 kB
JavaScript
(function($,W){typeof exports=="object"&&typeof module<"u"?W(exports,require("../common/index.umd.js"),require("vue"),require("lodash-es"),require("../dynamic-resolver/index.umd.js")):typeof define=="function"&&define.amd?define(["exports","../common/index.umd.js","vue","lodash-es","../dynamic-resolver/index.umd.js"],W):($=typeof globalThis<"u"?globalThis:$||self,W($["scroll-navbar"]={},$.common,$.Vue,$.LodashES,$.dynamicResolver))})(this,function($,W,a,_,le){"use strict";function J(e,t){let n;function r(i){const{properties:s,title:p,ignore:l}=i,o=l&&Array.isArray(l),c=Object.keys(s).reduce((g,w)=>((!o||!l.find(j=>j===w))&&(g[w]=s[w].type==="object"&&s[w].properties?r(s[w]):_.cloneDeep(s[w].default)),g),{});if(p&&(!o||!l.find(g=>g==="id"))){const g=p.toLowerCase().replace(/-/g,"_");c.id=`${g}_${Math.random().toString().slice(2,6)}`}return c}function d(i){const{properties:s,title:p,required:l}=i;if(l&&Array.isArray(l)){const o=l.reduce((c,g)=>(c[g]=s[g].type==="object"&&s[g].properties?r(s[g]):_.cloneDeep(s[g].default),c),{});if(p&&l.find(c=>c==="id")){const c=p.toLowerCase().replace(/-/g,"_");o.id=`${c}_${Math.random().toString().slice(2,6)}`}return o}return{type:p}}function m(i,s={},p){const l=e[i];if(l){let o=d(l);const c=t[i];return o=c?c({getSchemaByType:m},o,s,p):o,n!=null&&n.appendIdentifyForNewControl&&n.appendIdentifyForNewControl(o),o}return null}function T(i,s){const p=r(s);return Object.keys(p).reduce((l,o)=>(Object.prototype.hasOwnProperty.call(i,o)&&(l[o]&&_.isPlainObject(l[o])&&_.isPlainObject(i[o]||!i[o])?Object.assign(l[o],i[o]||{}):l[o]=i[o]),l),p),p}function y(i,s){return Object.keys(i).filter(l=>i[l]!=null).reduce((l,o)=>{if(s.has(o)){const c=s.get(o);if(typeof c=="string")l[c]=i[o];else{const g=c(o,i[o],i);Object.assign(l,g)}}else l[o]=i[o];return l},{})}function f(i,s,p=new Map){const l=T(i,s);return y(l,p)}function u(i){var p;const s=i.type;if(s){const l=e[s];if(!l)return i;const o=T(i,l),c=((p=i.editor)==null?void 0:p.type)||"";if(c){const g=e[c],w=T(i.editor,g);o.editor=w}return o}return i}function v(i){n=i}return{getSchemaByType:m,resolveSchemaWithDefaultValue:u,resolveSchemaToProps:f,mappingSchemaToProps:y,setDesignerContext:v}}const Q={},Y={},{resolveSchemaWithDefaultValue:ce,resolveSchemaToProps:se,mappingSchemaToProps:ue}=J(Q,Y);function fe(e={}){function t(u,v,i,s){if(typeof i=="number")return s[u].length===i;if(typeof i=="object"){const p=Object.keys(i)[0],l=i[p];if(p==="not")return Number(s[u].length)!==Number(l);if(p==="moreThan")return Number(s[u].length)>=Number(l);if(p==="lessThan")return Number(s[u].length)<=Number(l)}return!1}function n(u,v,i,s){return s[u]&&s[u].propertyValue&&String(s[u].propertyValue.value)===String(i)}const r=new Map([["length",t],["getProperty",n]]);Object.keys(e).reduce((u,v)=>(u.set(v,e[v]),u),r);function d(u,v){const i=u;return typeof v=="number"?[{target:i,operator:"length",param:null,value:Number(v)}]:typeof v=="boolean"?[{target:i,operator:"getProperty",param:u,value:!!v}]:typeof v=="object"?Object.keys(v).map(s=>{if(s==="length")return{target:i,operator:"length",param:null,value:v[s]};const p=s,l=v[s];return{target:i,operator:"getProperty",param:p,value:l}}):[]}function m(u){return Object.keys(u).reduce((i,s)=>{const p=d(s,u[s]);return i.push(...p),i},[])}function T(u,v){if(r.has(u.operator)){const i=r.get(u.operator);return i&&i(u.target,u.param,u.value,v)||!1}return!1}function y(u,v){return m(u).reduce((p,l)=>p&&T(l,v),!0)}function f(u,v){const i=Object.keys(u),s=i.includes("allOf"),p=i.includes("anyOf"),l=s||p,g=(l?u[l?s?"allOf":"anyOf":"allOf"]:[u]).map(j=>y(j,v));return s?!g.includes(!1):g.includes(!0)}return{parseValueSchema:f}}const de={convertTo:(e,t,n,r)=>{e.appearance||(e.appearance={}),e.appearance[t]=n},convertFrom:(e,t,n)=>e.appearance?e.appearance[t]:e[t]},me={convertFrom:(e,t,n)=>e.buttons&&e.buttons.length?`共 ${e.buttons.length} 项`:"无"},pe={convertTo:(e,t,n,r)=>{e.editor&&(e.editor[t]=n)},convertFrom:(e,t,n)=>e.editor&&Object.prototype.hasOwnProperty.call(e.editor,t)?e.editor[t]:e[t]},Z={button:{type:"button",name:"按钮"},"response-toolbar":{type:"response-toolbar",name:"工具栏"},"response-toolbar-item":{type:"response-toolbar-item",name:"按钮"},"content-container":{type:"content-container",name:"容器"},table:{type:"table",name:"表格布局"},"table-td":{type:"table-td",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:"标签页工具栏按钮"},"drawer-toolbar-item":{type:"drawer-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:"标签页工具栏"},"drawer-toolbar":{type:"drawer-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:"列表导航"},nav:{type:"nav",name:"标签类导航"},"list-view":{type:"list-view",name:"列表"},"filter-bar":{type:"filter-bar",name:"筛选条"},"language-textbox":{type:"language-textbox",name:"多语输入框"},image:{type:"image",name:"图像"},avatar:{type:"avatar",name:"头像"},"discussion-editor":{type:"discussion-editor",name:"评论编辑区"},"discussion-list":{type:"discussion-list",name:"评论列表"},comment:{type:"comment",name:"评论区"},"approval-logs":{type:"approval-logs",name:"审批记录"},"rich-text-editor":{type:"rich-text-editor",name:"富文本",icon:"rich-text-box"},calendar:{type:"calendar",name:"日历",icon:"date-picker"},wizard:{type:"wizard",name:"向导",icon:"wizard"},"wizard-page":{type:"wizard-page",name:"向导页",icon:"wizard"},"wizard-page-detail":{type:"wizard-page-detail",name:"向导详情",icon:"wizard"},step:{type:"step",name:"步骤条",icon:"step"},"dynamic-form":{type:"dynamic-form",name:"动态表单"}},ve={convertFrom:(e,t,n)=>{var d;const r=e.editor&&e.editor[t]?e.editor[t]:e[t];return((d=Z[r])==null?void 0:d.name)||r}},be={convertTo:(e,t,n,r)=>{e[t]=e[t]},convertFrom:(e,t,n)=>e.editor?n.getRealEditorType(e.editor.type):""},ge={convertTo:(e,t,n,r)=>{(e.type==="data-grid-column"||e.type==="tree-grid-column")&&(e.formatter?e.formatter[t]=n:e.formatter={[t]:n})},convertFrom:(e,t,n)=>{if(e.formatter){if(t==="trueText")return e.formatter.trueText;if(t==="falseText")return e.formatter.falseText;if(t==="prefix")return e.formatter.prefix;if(t==="suffix")return e.formatter.suffix;if(t==="precision")return e.formatter.precision;if(t==="decimal")return e.formatter.decimal;if(t==="thousand")return e.formatter.thousand;if(t==="dateFormat")return e.formatter.dateFormat||"yyyy-MM-dd";if(t==="customFormat")return e.formatter.customFormat;if(t==="type")return e.formatter.type||"none"}return"none"}},ye={convertTo:(e,t,n,r)=>{e.command?e.command[t]=n:e.command={[t]:n},t==="enableType"&&n==="default"&&(e.command.enable=!0,e.command.formatter="",e.command.commands=[{text:"编辑",type:"primary",command:"edit"},{text:"删除",type:"danger",command:"remove"}]),t==="enableType"&&n==="custom"&&(e.command.enable=!0,e.command.commands=[{value:"add",text:"增加",type:"link"},{value:"edit",text:"编辑",type:"link"},{value:"remove",text:"删除",type:"link"}]),t==="enableType"&&n==="unable"&&(e.command.enable=!1,e.command.formatter="")},convertFrom:(e,t,n)=>{var r,d;if(e.command){if(t==="enableType"){if(e.command.enableType)return e.command.enableType;const m=(d=(r=e.command)==null?void 0:r.commands)==null?void 0:d.find(T=>T.command==="edit"&&T.type==="primary");return e.command.enable?m?"default":"custom":"unable"}if(t==="commands")return e.command.enableType==="custom"?e.command.commands:[];if(t==="formatter")return e.command.formatter;if(t==="count")return e.command.count;if(t==="columnWidth")return e.command.columnWidth||200}return""}},Te={convertTo:(e,t,n,r)=>{if(e.column||(e.column={}),t==="fitMode"){n&&n!=="none"?(e.column.fitColumns=!0,e.column.fitMode=n):(e.column.fitColumns=!1,e.column.fitMode="average");return}if(t==="fitColumns"){e.column.fitColumns=n,n&&!e.column.fitMode&&(e.column.fitMode="average");return}e.column[t]=n},convertFrom:(e,t,n)=>{if(e.column){if(t==="fitMode")return e.column.fitColumns?e.column.fitMode||"average":"none";if(t==="fitColumns")return e.column.fitColumns}return t==="fitMode"?"none":""}},he={convertTo:(e,t,n,r)=>{e.summary?e.summary[t]=n:e.summary={[t]:n},t==="enable"&&n&&(e.summary?e.summary.groupFields||(e.summary.groupFields=[]):e.summary={enable:n,groupFields:[]})},convertFrom:(e,t,n)=>{var r,d;return t==="customSummaryStyle"?e.summary.customSummaryStyle:t==="position"?((r=e.summary)==null?void 0:r[t])||"bottom":t==="customRender"?((d=e.summary)==null?void 0:d[t])||"":e.summary&&t==="enable"?e.summary.enable:e.type==="data-grid-column"?e.enableSummary===void 0?!1:e.enableSummary:""}},Se={convertTo:(e,t,n,r)=>{e.group?e.group[t]=n:e.group={[t]:n},t==="enable"&&n&&(e.group?e.group.groupFields||(e.group.groupFields=[]):e.group={enable:n,groupFields:[],showSummary:!1,customRender:""})},convertFrom:(e,t,n)=>{if(e.group){if(t==="enable")return e.group.enable;if(t==="showSummary")return e.group.showSummary;if(t==="customRender")return e.group.customRender;if(t==="groupFields")return e.group.groupFields}}},Ne={convertFrom:(e,t)=>e.binding?e.binding.path:"",convertTo:(e,t,n)=>{if(n&&n.length>0){const r=n[0];e.binding||(e.binding={}),e.binding.type="Form",e.binding.path=r.bindingField,e.binding.field=r.id,e.binding.fullPath=r.path,e.path=r.bindingPath}}},we={convertTo:(e,t,n,r)=>{if(e.pagination||(e.pagination={}),t==="sizeLimits")if(n==null)delete e.pagination.sizeLimits;else{const d=[...new Set(String(n).split(",").map(m=>m.trim()).filter(m=>m!=="").map(m=>parseInt(m,10)).filter(m=>!Number.isNaN(m)&&m>0))];d.length>0?e.pagination.sizeLimits=d:delete e.pagination.sizeLimits}else e.pagination[t]=n},convertFrom:(e,t,n)=>{var r;return e.pagination?t==="sizeLimits"?((r=e.pagination.sizeLimits)==null?void 0:r.join(","))??"":e.pagination[t]:e[t]}},ke={convertTo:(e,t,n,r)=>{e.rowNumber||(e.rowNumber={}),e.rowNumber[t]=n},convertFrom:(e,t,n)=>e.rowNumber?e.rowNumber[t]:e[t]},Fe={convertTo:(e,t,n,r)=>{e.selection||(e.selection={}),e.selection[t]=n},convertFrom:(e,t,n)=>{if(!e.selection)return!!e[t];const r=!!e.selection[t];return t==="showCheckbox"&&r==null&&e.selection.multiSelect===!0?!0:r}},Pe={convertFrom:(e,t,n)=>e[t]&&e[t].length?`共 ${e[t].length} 项`:""},Oe={convertFrom:(e,t)=>e[t]||"",convertTo:(e,t,n)=>{e[t]=n}},Me={convertTo:(e,t,n,r)=>{e.size||(e.size={}),e.size[t]=n},convertFrom:(e,t,n)=>e.size?e.size[t]:e[t]},De={convertFrom:(e,t,n)=>{var r,d;return(r=e.formatter)!=null&&r.data&&t==="formatterEnumData"&&!e.formatterEnumData?(d=e.formatter)==null?void 0:d.data:e.formatterEnumData}},je={convertTo:(e,t,n,r)=>{e.sort||(e.sort={}),e.sort[t]=n},convertFrom:(e,t,n)=>{var r,d;if(t==="mode")return((r=e.sort)==null?void 0:r.mode)||"client";if(t==="multiSort")return!!((d=e.sort)!=null&&d.multiSort)}},Ve={convertTo:(e,t,n,r)=>{e.filter||(e.filter={}),e.filter[t]=n,t==="enable"&&(e.enableFilter=!1)},convertFrom:(e,t,n)=>{var r,d,m,T;return t==="mode"?((r=e.filter)==null?void 0:r.mode)||"server":t==="filterStyle"?((d=e.filter)==null?void 0:d.filterStyle)||"filter-column":t==="enable"?((m=e.filter)==null?void 0:m.enable)!==void 0?!!e.filter.enable:!!e.enableFilter:((T=e.filter)==null?void 0:T[t])||void 0}},$e={convertTo:(e,t,n,r)=>{e.rowOption?e.rowOption[t]=n:e.rowOption={[t]:n}},convertFrom:(e,t,n)=>{if(e.rowOption){if(t==="customRowStyle")return e.rowOption.customRowStyle;if(t==="customCellStyle")return e.rowOption.customCellStyle;if(t==="height")return e.rowOption.height}return""}},Ee={convertTo:(e,t,n,r)=>{(e.type==="data-grid-column"||e.type==="tree-grid-column")&&(e[t]=n,t==="columnTemplateType"&&n==="hyperlink"&&(e.onClickLinkCommand?e.columnTemplate=`
<span class="f-pretend-link f-cursor-pointer"
@click="(ctx)=>viewModel.current.${e.onClickLinkCommand||""}({id: rowData.id,context: ctx})">
{{rowData.${e.field}}}
</span>`:e.columnTemplate=`
<span class="f-pretend-link f-cursor-pointer">
{{rowData.${e.field}}}
</span>`),t==="columnTemplateType"&&n==="default"&&(e.columnTemplate=""),t==="columnTemplateType"&&n==="custom"&&(e.columnTemplate=""))},convertFrom:(e,t,n)=>t==="columnTemplate"?e.columnTemplate:t==="columnTemplateType"?e.columnTemplateType?e.columnTemplateType||"default":e.columnTemplate&&!e.onClickLinkCommand?"custom":e.columnTemplate&&e.onClickLinkCommand?"hyperlink":"default":""},Re={convertTo:(e,t,n,r)=>{e.hierarchy||(e.hierarchy={cascadeOption:{}}),e.hierarchy.cascadeOption||(e.hierarchy.cascadeOption={}),e.hierarchy.cascadeOption[t]=n},convertFrom:(e,t,n)=>{var r,d;return!!((d=(r=e.hierarchy)==null?void 0:r.cascadeOption)!=null&&d[t])}};function I(e,t,n){const r=new Map([["/converter/appearance.converter",de],["/converter/buttons.converter",me],["/converter/property-editor.converter",pe],["/converter/items-count.converter",Pe],["/converter/type.converter",ve],["/converter/change-editor.converter",be],["/converter/change-formatter.converter",ge],["/converter/column-command.converter",ye],["/converter/column-option.converter",Te],["/converter/summary.converter",he],["/converter/group.converter",Se],["/converter/form-group-label.converter",Oe],["/converter/field-selector.converter",Ne],["/converter/pagination.converter",we],["/converter/row-number.converter",ke],["/converter/grid-selection.converter",Fe],["/converter/size.converter",Me],["/converter/change-formatter-enum.converter",De],["/converter/grid-sort.converter",je],["/converter/grid-filter.converter",Ve],["/converter/row-option.converter",$e],["/converter/change-formatter-type.converter",Ee],["/converter/tree-auto-check.converter",Re]]),d=new Map([["string",{type:"input-group",enableClear:!1}],["boolean",{type:"combo-list",textField:"name",valueField:"value",idField:"value",enableClear:!1,editable:!1,data:[{value:!0,name:"是"},{value:!1,name:"否"}]}],["enum",{type:"combo-list",maxHeight:128,enableClear:!1,editable:!1}],["array",{type:"button-edit"}],["number",{type:"number-spinner",placeholder:""}],["events-editor",{type:"events-editor",hide:!0}],["multiLanguage",{type:"language-textbox"}]]),m=fe();function T(l,o){return()=>m.parseValueSchema(l,o)}function y(l,o,c){return l.includes("visible")&&o.visible!==void 0?typeof o.visible=="boolean"?()=>!!o.visible:o.visible===void 0?!0:T(o.visible,c):()=>!0}function f(l,o,c){return l.includes("readonly")&&o.readonly!==void 0?typeof o.readonly=="boolean"?()=>!!o.readonly:T(o.readonly,c):()=>!1}function u(l,o){const c=l.$converter||o;return typeof c=="string"&&c&&r.has(c)?r.get(c)||null:c||null}function v(l,o,c,g,w,j="",N=""){return Object.keys(l).map(k=>{const L=a.ref(1),R=k,F=l[k],h=Object.keys(F),A=F.title,C=F.type,b=d.get(C)||{type:"input-group",enableClear:!1},S=F.editor?Object.assign({},b,F.editor):Object.assign({},b),P=y(h,F,o),O=f(h,F,o);S.readonly=S.readonly===void 0?O():S.readonly;const D=F.type==="cascade"?v(F.properties,o,c,g,w,j,N):[],E=!0;let V=u(F,N);const x=a.computed({get(){if(L.value){if(["class","style"].find(H=>H===R)&&!V&&(V=r.get("/converter/appearance.converter")||null),V&&V.convertFrom){const H=V.convertFrom(c,k,w,j);return H===void 0&&Object.prototype.hasOwnProperty.call(F,"defaultValue")?F.type==="boolean"?F.defaultValue:F.defaultValue||"":H}const z=c[k];return Object.prototype.hasOwnProperty.call(F,"defaultValue")&&(z===void 0||typeof z=="string"&&z==="")?F.type==="boolean"?F.defaultValue:F.defaultValue||"":z}return null},set(z){L.value+=1,V&&V.convertTo?(V.convertTo(g,k,z,w,j),V.convertTo(c,k,z,w,j)):(g[k]=z,c[k]=z)}}),{refreshPanelAfterChanged:B,description:q,isExpand:Je,parentPropertyID:Qe}=F,ie={propertyID:R,propertyName:A,propertyType:C,propertyValue:x,editor:S,visible:P,readonly:O,cascadeConfig:D,hideCascadeTitle:E,refreshPanelAfterChanged:B,description:q,isExpand:Je,parentPropertyID:Qe};return o[R]=ie,ie})}function i(l,o,c={}){const g={},w=e[l];return w&&w.categories?Object.keys(w.categories).map(N=>{const M=w.categories[N],k=M==null?void 0:M.title,L=v(M.properties||{},g,{},c,o);return{categoryId:N,categoryName:k,properties:L}}):[]}function s(l,o,c,g,w=""){const j=o.$ref.schema,N=o.$ref.converter,M=c[j],k=M.type,L=n(M),R={},F=e[k];if(F&&F.categories){const h=F.categories[l],A=h==null?void 0:h.title;N&&Object.keys(h.properties).forEach(S=>{h.properties[S].$converter=N});const C=(h==null?void 0:h.properties)||{},b=v(C,R,L,M,g,w);return{categoryId:l,categoryName:A,properties:b}}return{categoryId:l,categoryName:"",properties:[]}}function p(l,o,c,g,w){const j=l.type,N=n(l),M={};let k=w||e[j];if(!(k&&Object.keys(k).length>0)&&c&&c.getPropConfig&&(k=c.getPropConfig(g)),k&&k.categories){const R=[];return Object.keys(k.categories).map(F=>{const h=k.categories[F];if(h.$ref){R.push(s(F,h,l,o,g));return}const A=h==null?void 0:h.title,C=h==null?void 0:h.tabId,b=h==null?void 0:h.tabName,S=h==null?void 0:h.hide,P=h==null?void 0:h.hideTitle,O=v(h.properties||{},M,N,l,o,g,h.$converter),{setPropertyRelates:D}=h,E=h==null?void 0:h.parentPropertyID;R.push({categoryId:F,categoryName:A,tabId:C,tabName:b,hide:S,properties:O,hideTitle:P,setPropertyRelates:D,parentPropertyID:E})}),R}return[]}return{getPropertyConfigBySchema:p,getPropertyConfigByType:i,propertyConverterMap:r}}const K={},ee={};I(K,ee,ce);const te={},ne={},{resolveSchemaWithDefaultValue:Le}=J(te,ne),re={},oe={};I(re,oe,Le);function Ce(e,t,n=new Map,r=(T,y,f,u)=>y,d={},m=T=>T){return Q[t.title]=t,Y[t.title]=r,K[t.title]=d,ee[t.title]=m,te[t.title]=t,ne[t.title]=r,re[t.title]=d,oe[t.title]=m,(T={},y=!0)=>{if(!y)return ue(T,n);const f=se(T,t,n),u=Object.keys(e).reduce((v,i)=>(v[i]=e[i].default,v),{});return Object.assign(u,f)}}function Be(e,t){return{customClass:t.class,customStyle:t.style}}const ze=new Map([["appearance",Be],["scrollItems","itemRef"],["title","extendTitle"]]);function ae(e,t){Array.isArray(e)&&e.forEach(n=>{if(n){if(n.type==="section"||n.type==="html-template"){const r=n.title||n.mainTitle||n.id||"";t.push({id:n.id||"",type:n.type,title:r,originalTitle:r,selector:"#"+n.id||"",visible:!0})}n.contents&&ae(n.contents,t),n.type==="component-ref"&&n.component}})}function xe(e){var n;const t=[];return(n=e.module)!=null&&n.components&&e.module.components.forEach(r=>{r.contents&&ae(r.contents,t)}),t}function Ae(e,t,n,r){if(!r)return console.warn("designerHostService is undefined, returning empty scrollItems"),t.scrollItems=[],t;const d=xe(r.formSchemaUtils.getFormSchema());return t.scrollItems=d,t}const qe={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/scroll-navbar.schema.json",title:"scroll-navbar",description:"滚动导航",type:"object",properties:{id:{description:"标识",type:"string"},type:{description:"组件类型",type:"string",default:"scroll-navbar"},visible:{description:"是否可见",type:"boolean",default:!0},title:{description:"标题",type:"string",default:"导航栏"},scrollItems:{description:"导航内容",type:"array",default:[]},contentRef:{description:"",type:"string",default:".fm-page-main"},isManualEditMode:{description:"",type:"boolean",default:!1},contents:{description:"",type:"array",default:[]},alwaysShow:{description:"Whether the navbar is always visible",type:"boolean",default:!1},extendable:{description:"Whether the tab bar is extendable",type:"boolean",default:!1},extendTitle:{description:"Title for extendable functionality",type:"string"},appearance:{description:"Component appearance styling",type:"object",properties:{class:{type:"string"},style:{type:"string"}},default:{}}},required:["id","type","visible","scrollItems"]},U={alwaysShow:{type:Boolean,default:!1},contentRef:{type:String,default:".fm-page-main"},extendable:{type:Boolean,default:!1},extendTitle:{type:String,default:""},itemRef:{type:Array,default:[]}},X=Ce(U,qe,ze,Ae),We=(e,t)=>{const n=a.ref([]),r=y=>y.map(f=>{const{id:u="",title:v="",selector:i="",visible:s=!0}=f;if(!s)return null;const p=e.value.querySelector(i);if(!p)return null;const{offsetTop:l,clientHeight:o}=p;return{name:u,title:v,offsetTop:l,clientHeight:o,element:p}}).filter(f=>f!==null),d=y=>{const f=[];return y.forEach(u=>{const v=Array.from(e.value.querySelectorAll(u));f.push(...v)}),f.map(u=>{const{dataset:v,offsetTop:i,clientHeight:s}=u;return{name:v.id||"",title:v.title||"",offsetTop:i,clientHeight:s,element:u}})},m=()=>{if(n.value=[],!t||Array.isArray(t)&&t.length===0)return n.value;try{const y=typeof t=="string"?[t]:t;typeof y[0]=="string"?n.value=d(y):n.value=r(y),n.value.sort((f,u)=>f.offsetTop-u.offsetTop)}catch(y){console.warn("获取导航项时出错:",y)}return n.value},T=()=>{const y=e.value.scrollTop||0,f=n.value;if(f.length===0)return{name:"",title:"",offsetTop:0,clientHeight:0,element:null};for(let u=0;u<f.length;u++){const v=f[u];if(v.offsetTop+v.clientHeight/2>y)return v}return f[f.length-1]};return{items:a.ref(n.value),getItems:m,getTopElementInView:T}},_e=(e,t,n,r,d,m,T)=>{let y=0;const f={active:!1,start:0,end:0,timer:0},u=a.computed(()=>m.value),v=a.computed(()=>({"f-scroll-navbar":!0,"f-scroll-navbar-fixed":r.value.scrollTop>y,"f-scroll-navbar-visible":m.value})),i=()=>!r.value||!n.value?!1:r.value.contains(n.value),s=()=>{if(e.alwaysShow||i()){m.value=!0;return}const N=d.value[0]?d.value[0].offsetTop:0;m.value=r.value.scrollTop>N},p=()=>{const N=r.value;if(!N||!(N instanceof HTMLElement)){console.warn("Content element is not available for style checking");return}const M=getComputedStyle(N),k=["fixed","absolute","relative"];(!M.position||!k.includes(M.position))&&(N.style.position="relative")},l=N=>{f.active=!0,r.value&&"scrollTo"in r.value&&r.value.scrollTo({top:Math.max(0,N.offsetTop-44),behavior:"smooth"}),T.value=N.name,t.emit("change",N);const M=r.value.scrollTop;setTimeout(()=>{M===r.value.scrollTop&&(f.active=!1)},500)},o=N=>{l(N.item),console.log(`点击了导航项: ${N.item.title}, 索引: ${N.index}`)},c=N=>{f.end=r.value.scrollTop,f.start===f.end&&(f.active=!1,N())},g=()=>{if(!r.value||!n.value)return;if(i()&&(n.value.classList.contains("f-scroll-navbar-fixed")||(y=n.value.offsetTop),r.value.scrollTop>y?n.value.classList.add("f-scroll-navbar-fixed"):n.value.classList.remove("f-scroll-navbar-fixed")),f.active){clearTimeout(f.timer),f.timer=window.setTimeout(()=>{c(s)},100),f.start=r.value.scrollTop;return}const{scrollTop:N}=r.value;let M;for(const k of d.value)if(k.offsetTop+k.clientHeight/2>N){M=k;break}M?T.value=M.name:d.value.length>0&&(T.value=d.value[d.value.length-1].name),s()},w=()=>{r.value&&r.value.addEventListener("scroll",g)},j=()=>{r.value&&r.value.removeEventListener("scroll",g)};return a.onMounted(()=>{w(),p(),s()}),a.onUnmounted(()=>{j()}),{shouldShowNavbar:u,navbarFixedClass:v,handlertabChange:l,handlePanelItemClick:o,checkContentStyle:p,handlerScroll:g,checkNavbarShow:s,navbarShow:m,checkContentContainsNavbar:i}},G=a.defineComponent({name:"FScrollNavbar",props:U,emits:["change","update:modelValue"],setup(e,t){const n=a.ref(),r=a.ref(e.modelValue),d=a.ref(!0),m=a.ref(!1),T=a.computed(()=>{try{return document.querySelector(e.contentRef)||document.body}catch{return document.body}}),{items:y,getItems:f}=We(T,e.itemRef),u=_e(e,t,n,T,y,d,r);a.watch(()=>e.modelValue,o=>{r.value=o});const v=()=>{m.value=!m.value},i=(o,c)=>{r.value=o.name,u.handlertabChange(o),t.emit("change",o,c),t.emit("update:modelValue",o.name)},s=o=>{i(o.item,o.index),m.value=!1};a.onMounted(()=>{a.nextTick(()=>{f(),u.checkContentStyle(),u.checkNavbarShow()})});const p=a.computed(()=>!y.value||y.value.length===0?[{name:"section1",title:"基本信息",active:!0,disabled:!1},{name:"section2",title:"详细信息",active:!1,disabled:!1},{name:"section3",title:"附件信息",active:!1,disabled:!1},{name:"section4",title:"审批流程",active:!1,disabled:!0}]:y.value.map((o,c)=>({...o,active:o.name===r.value,disabled:!1}))),l=a.computed(()=>{const o=p.value.findIndex(j=>j.active),c=100,g=60,w=o*c+(c-g)/2;return{width:`${g}px`,transform:`translateX(${w}px)`}});return()=>{var o;return a.createVNode("div",{class:"drag-container",dragref:"scroll-navbar-container"},[a.createVNode("div",{class:"fm-scroll-navbar-design-preview"},[a.createVNode("div",{class:"fm-scroll-navbar-design"},[a.createVNode("nav",{class:["fm-tab-bar","fm-tab-bar--designer",e.type==="nav"?"fm-tab-bar-nav":"",e.type==="tab"?"fm-tab-bar-tab":""]},[a.createVNode("div",{class:["fm-tab-bar-inner",e.extendable?"fm-tab-bar-extendable":""]},[a.createVNode("div",{class:"fm-tab-bar-start"},null),a.createVNode("div",{class:"fm-tab-bar-end"},null),e.extendable&&a.createVNode("div",{class:"fm-tab-bar-extend",onClick:v},[a.createVNode("span",{class:"fm-icon-simulate"},[a.createTextVNode("⋮")])]),a.createVNode("div",{class:"fm-scroll-view-simulate"},[a.createVNode("div",{class:"fm-tab-bar-list",style:{width:`${p.value.length*100}px`}},[p.value.map((c,g)=>a.createVNode("div",{key:c.name,class:["fm-tab-bar-item","fm-tab-bar-item-line",c.active?"is-active":"",c.disabled?"is-disabled":""],onClick:()=>!c.disabled&&i(c,g)},[a.createVNode("div",{class:"fm-tab-bar-item-content"},[a.createVNode("div",{class:"text",title:c.title},[c.title])])]))]),e.type==="line"&&e.ink&&a.createVNode("span",{class:["fm-tab-bar-ink",(o=p.value.find(c=>c.active))!=null&&o.disabled?"is-disabled":""],style:l.value},null)])])]),a.createVNode("div",{class:"fm-scroll-navbar-placeholder"},null)]),a.createVNode(a.resolveComponent("f-popup"),{show:m.value,"onUpdate:show":c=>m.value=c,position:"bottom",round:!0},{default:()=>[a.createVNode("div",{class:"fm-tab-bar-panel"},[a.createVNode("div",{class:"fm-tab-bar-panel-header"},[a.createVNode("span",null,[e.extendTitle||"更多"])]),a.createVNode("div",{class:"fm-tab-bar-panel-content"},[p.value.map((c,g)=>a.createVNode("div",{key:c.name,class:["fm-tab-bar-panel-item",c.active?"fm-tab-bar-panel-item-active":""],onClick:()=>!c.disabled&&s({item:c,index:g})},[a.createVNode("span",{class:"fm-tab-bar-panel-item-text"},[c.title])]))])])]})])])}}});function Ue(e,t,n){var C;const r="",d="",m=a.ref();let T;function y(){return(t==null?void 0:t.schema.componentType)!=="frame"}function f(){return!1}function u(){return(t==null?void 0:t.schema.componentType)!=="frame"}function v(){return(t==null?void 0:t.schema.componentType)==="frame"}function i(b){if(!b||!b.value)return null;if(b.value.schema&&b.value.schema.type==="component")return b.value;const S=a.ref(b==null?void 0:b.value.parent),P=i(S);return P||null}function s(b=t){var D;const{componentInstance:S,designerItemElementRef:P}=b;if(!S||!S.value)return null;const{getCustomButtons:O}=S.value;return S.value.canMove||O&&((D=O())!=null&&D.length)?P:s(b.parent)}function p(b){return!1}function l(){return(t==null?void 0:t.schema.label)||(t==null?void 0:t.schema.title)||(t==null?void 0:t.schema.name)}function o(){}function c(b,S){var P;!b||!S||(P=t==null?void 0:t.setupContext)==null||P.emit("dragEnd")}function g(b,S){const{componentType:P}=b;let O=le.getSchemaByTypeForDesigner(P,b,S);const D=P.toLowerCase().replace(/-/g,"_");return O&&!O.id&&O.type===P&&(O.id=`${D}_${Math.random().toString().slice(2,6)}`),O}function w(b){}function j(...b){}function N(b){if(!b)return;const S=t==null?void 0:t.schema,{formSchemaUtils:P}=b;if(S&&P.getExpressions().length){const O=P.getExpressions().findIndex(D=>D.target===S.id);O>-1&&P.getExpressions().splice(O,1)}}function M(b){if(!b||!(t!=null&&t.schema))return;const S=t.schema,{formSchemaUtils:P}=b;P.removeCommunicationInComponent(S)}function k(b){N(b),M(b),t!=null&&t.schema.contents&&t.schema.contents.map(S=>{let P=S.id;S.type==="component-ref"&&(P=S.component);const O=e.value.querySelectorAll(`#${P}-design-item`);O!=null&&O.length&&Array.from(O).map(D=>{var E;(E=D==null?void 0:D.componentInstance)!=null&&E.value.onRemoveComponent&&D.componentInstance.value.onRemoveComponent(b)})})}function L(){}function R(b){var P,O;if(!((P=t==null?void 0:t.schema)!=null&&P.id))return;!T&&b&&(T=b.formSchemaUtils);let S="";{const{text:D,title:E,label:V,mainTitle:x,name:B,type:q}=t.schema;S=D||E||V||x||B||((O=Z[q])==null?void 0:O.name)}S&&T.getControlBasicInfoMap().set(t.schema.id,{componentTitle:S,parentPathName:S})}function F(b){var D;const{changeObject:S}=b,{propertyID:P,propertyValue:O}=S;if(["text","title","label","name","mainTitle"].includes((D=b==null?void 0:b.changeObject)==null?void 0:D.propertyID)&&P&&O&&(R(),T)){const E=T.getControlBasicInfoMap(),V=E.keys().toArray().filter(x=>{var B,q;return((B=E.get(x))==null?void 0:B.reliedComponentId)===((q=t==null?void 0:t.schema)==null?void 0:q.id)});V!=null&&V.length&&V.forEach(x=>{const B=E.get(x).parentPathName.split(" > ");B[0]=O,E.get(x).parentPathName=B.join(" > ")})}}function h(b){F(b)}function A(){return!0}return m.value={canMove:y(),canSelectParent:f(),canDelete:u(),canNested:!v(),contents:t==null?void 0:t.schema.contents,elementRef:e,parent:(C=t==null?void 0:t.parent)==null?void 0:C.componentInstance,schema:t==null?void 0:t.schema,styles:r,designerClass:d,canAccepts:p,getBelongedComponentInstance:i,getDraggableDesignItemElement:s,getDraggingDisplayText:l,getPropConfig:j,getDragScopeElement:o,onAcceptMovedChildElement:c,onChildElementMovedOut:w,addNewChildComponentSchema:g,triggerBelongedComponentToMoveWhenMoved:a.ref(!1),triggerBelongedComponentToDeleteWhenDeleted:a.ref(!1),onRemoveComponent:k,getCustomButtons:L,onPropertyChanged:h,setComponentBasicInfoMap:R,updateContextSchema:t==null?void 0:t.updateContextSchema,shouldApplyClassToComponent:A},m}const Ge=a.defineComponent({name:"FScrollNavbarDesign",props:U,emits:["clear","update:modelValue","change"],setup(e,t){const n=a.ref();a.inject("designer-host-service");const r=a.inject("design-item-context"),d=Ue(n,r),m=a.ref(e.itemRef);a.onMounted(()=>{n.value.componentInstance=d}),t.expose(d.value);const T=a.computed(()=>{if(!m.value||m.value.length===0)return[{name:"section1",title:"基本信息",active:!0,disabled:!1},{name:"section2",title:"详细信息",active:!1,disabled:!1},{name:"section3",title:"附件信息",active:!1,disabled:!1},{name:"section4",title:"审批流程",active:!1,disabled:!0}];{const y=[];for(let f=0;f<m.value.length;f++)f===0?y[f]={name:m.value[f].id,title:m.value[f].title,active:!0,disabled:!1}:y[f]={name:m.value[f].id,title:m.value[f].title,active:!1,disabled:!1};return y}});return()=>{var y;return a.createVNode("div",{ref:n,class:"drag-container",dragref:`${r.schema.id}-container`},[a.createVNode("div",{class:"fm-scroll-navbar-design-preview"},[a.createVNode("div",{class:"fm-scroll-navbar-design"},[a.createVNode("nav",{class:["fm-tab-bar","fm-tab-bar--designer",e.type==="nav"?"fm-tab-bar-nav":"",e.type==="tab"?"fm-tab-bar-tab":""]},[a.createVNode("div",{class:["fm-tab-bar-inner",e.extendable?"fm-tab-bar-extendable":""]},[a.createVNode("div",{class:"fm-tab-bar-start"},null),a.createVNode("div",{class:"fm-tab-bar-end"},null),e.extendable&&a.createVNode("div",{class:"fm-tab-bar-extend"},[a.createVNode("span",{class:"fm-icon-simulate"},[a.createTextVNode("⋮")])]),a.createVNode("div",{class:"fm-scroll-view-simulate"},[a.createVNode("div",{class:"fm-tab-bar-list",style:{width:"400px"}},[T.value.map((f,u)=>a.createVNode("div",{class:["fm-tab-bar-item","fm-tab-bar-item-line",f.active?"is-active":"",f.disabled?"is-disabled":""]},[a.createVNode("div",{class:"fm-tab-bar-item-content"},[a.createVNode("div",{class:"text",title:f.title},[f.title])])]))]),e.type==="line"&&e.ink&&a.createVNode("span",{class:["fm-tab-bar-ink",(y=T.value.find(f=>f.active))!=null&&y.disabled?"is-disabled":""],style:{width:"60px",transform:"translateX(20px)"}},null)])])]),a.createVNode("div",{class:"fm-scroll-navbar-placeholder"},null)]),t.slots.default&&t.slots.default()])])}}}),He=W.withInstall(G),Xe={install(e){e.component(G.name,G)},register(e,t){e["scroll-navbar"]=G,t["scroll-navbar"]=X},registerDesigner(e,t){e["scroll-navbar"]=Ge,t["scroll-navbar"]=X}};$.ScrollNavbar=He,$.default=Xe,$.propsResolverGenerator=X,$.scrollNavbarProps=U,Object.defineProperties($,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});