UNPKG

@farris/ui-vue

Version:

Farris Vue, a Farris Design based Vue3 component library.

1,248 lines 116 kB
var We = Object.defineProperty; var De = (e, n, t) => n in e ? We(e, n, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[n] = t; var V = (e, n, t) => De(e, typeof n != "symbol" ? n + "" : n, t); import { ref as T, computed as _, defineComponent as re, watch as Q, createVNode as x, createTextVNode as ge, mergeProps as _e, reactive as Xe, withDirectives as Te, resolveDirective as Je, Fragment as ve, inject as be, onMounted as Ce, onBeforeMount as Qe, vModelText as Ye, nextTick as Ie } from "vue"; import { isPlainObject as Fe, cloneDeep as me, debounce as He } from "lodash-es"; import Ze from "../accordion/index.esm.js"; import Ke from "../../designer/avatar/index.esm.js"; import et from "../../designer/approval-logs/index.esm.js"; import tt from "../../designer/button-edit/index.esm.js"; import nt from "../button-group/index.esm.js"; import it from "../button/index.esm.js"; import rt from "../calendar/index.esm.js"; import ot from "../../designer/capsule/index.esm.js"; import xe from "../../designer/checkbox/index.esm.js"; import we from "../../designer/checkbox-group/index.esm.js"; import at from "../combo-list/index.esm.js"; import st from "../combo-tree/index.esm.js"; import lt from "../component/index.esm.js"; import dt from "../color-picker/index.esm.js"; import ut from "../content-container/index.esm.js"; import ct from "../../designer/date-picker/index.esm.js"; import pt from "../../designer/data-grid/index.esm.js"; import ft from "../dropdown/index.esm.js"; import mt from "../../designer/dynamic-form/index.esm.js"; import gt from "../events-editor/index.esm.js"; import vt from "../filter-bar/index.esm.js"; import ht from "../field-selector/index.esm.js"; import yt from "../binding-selector/index.esm.js"; import bt from "../image-cropper/index.esm.js"; import Ct from "../../designer/input-group/index.esm.js"; import Ft from "../layout/index.esm.js"; import xt from "../list-nav/index.esm.js"; import wt from "../../designer/list-view/index.esm.js"; import Et from "../lookup/index.esm.js"; import St from "../mapping-editor/index.esm.js"; import Pt from "../../designer/nav/index.esm.js"; import kt from "../number-range/index.esm.js"; import Tt from "../../designer/number-spinner/index.esm.js"; import It from "../order/index.esm.js"; import Vt from "../page-header/index.esm.js"; import Mt from "../page-footer/index.esm.js"; import Lt from "../pagination/index.esm.js"; import Bt from "../progress/index.esm.js"; import Nt from "../query-solution/index.esm.js"; import Ot from "../../designer/radio-group/index.esm.js"; import Rt from "../../designer/rate/index.esm.js"; import $t from "../../designer/response-toolbar/index.esm.js"; import At from "../response-layout/index.esm.js"; import Ut from "../../designer/response-layout-editor/index.esm.js"; import qt from "../search-box/index.esm.js"; import jt from "../../designer/section/index.esm.js"; import Gt from "../smoke-detector/index.esm.js"; import zt from "../splitter/index.esm.js"; import Wt from "../step/index.esm.js"; import Dt from "../../designer/switch/index.esm.js"; import _t from "../../designer/tabs/index.esm.js"; import Xt from "../../designer/tags/index.esm.js"; import Jt from "../text/index.esm.js"; import Qt from "../../designer/time-picker/index.esm.js"; import Yt from "../transfer/index.esm.js"; import Ht from "../tree-view/index.esm.js"; import Zt from "../uploader/index.esm.js"; import Kt from "../verify-detail/index.esm.js"; import en from "../video/index.esm.js"; import tn from "../../designer/textarea/index.esm.js"; import nn from "../schema-selector/index.esm.js"; import rn from "../../designer/tree-grid/index.esm.js"; import on from "../event-parameter/index.esm.js"; import an from "../filter-condition-editor/index.esm.js"; import sn from "../fieldset/index.esm.js"; import ln from "../sort-condition-editor/index.esm.js"; import dn from "../menu-lookup/index.esm.js"; import un from "../../designer/drawer/index.esm.js"; import cn from "../json-editor/index.esm.js"; import pn from "../property-editor/index.esm.js"; import fn from "../expression-editor/index.esm.js"; import mn from "../code-editor/index.esm.js"; import gn from "../html-template/index.esm.js"; import vn from "../collection-property-editor/index.esm.js"; import hn from "../../designer/modal/index.esm.js"; import yn from "../external-container/index.esm.js"; import bn from "../language-textbox/index.esm.js"; import Cn from "../image/index.esm.js"; import Fn from "../comment/index.esm.js"; import xn from "../../designer/wizard/index.esm.js"; import { schemaResolverMap as wn, propertyEffectMap as En, propertyConfigSchemaMap as Sn, schemaMap as Pn, createPropsResolver as kn } from "../dynamic-resolver/index.esm.js"; import { useThirdComponent as Tn, isMobilePhone as In, FormSchemaEntityField$Type as Ee, FormSchemaEntityFieldType$Type as Vn, EVENT_PROPERTY_TAB_IDS as Se } from "../common/index.esm.js"; import Mn from "../tooltip/index.esm.js"; import { DgControl as v, canvasChanged as ce, refreshCanvas as Ln } from "../designer-canvas/index.esm.js"; const Bn = { width: { type: String, default: "300px" }, height: { type: Number, default: 10 }, isWidePanel: { type: Boolean, default: !1 }, /** 是否启用搜索 */ enableSearch: { type: Boolean, default: !0 }, /** 使用模式 */ mode: { type: String, default: "panel" }, /** 是否持有面板的隐藏显示状态 */ isPersitOpenState: { type: Boolean, default: !1 }, /** isPersitOpenState=true时,控制面板是否隐藏显示 */ isShowPanel: { type: Boolean, default: !1 }, /** 属性名 */ propertyName: { type: String, default: "" }, /** 属性类型 */ propertyConfig: { type: Array }, /** 属性值 */ propertyData: { type: Object, default: {} }, /** 是否展示关闭按钮 */ showCloseBtn: { type: Boolean, default: !1 }, /** 当前选中的标签页id */ selectedTabId: { type: String, default: "" }, /** 是否是白色主题 */ isWhiteTheme: { type: Boolean, default: !0 }, /** dom结构 */ schema: { type: Object, default: {} }, /** 属性变更后事件 */ propertyChanged: { type: Function }, /** 允许折叠面板 */ allowCollapse: { type: Boolean, default: !0 } }; function Nn(e = {}) { function n(p, m, s, u) { if (typeof s == "number") return u[p].length === s; if (typeof s == "object") { const f = Object.keys(s)[0], d = s[f]; if (f === "not") return Number(u[p].length) !== Number(d); if (f === "moreThan") return Number(u[p].length) >= Number(d); if (f === "lessThan") return Number(u[p].length) <= Number(d); } return !1; } function t(p, m, s, u) { return u[p] && u[p].propertyValue && String(u[p].propertyValue.value) === String(s); } const i = /* @__PURE__ */ new Map([ ["length", n], ["getProperty", t] ]); Object.keys(e).reduce((p, m) => (p.set(m, e[m]), p), i); function r(p, m) { const s = p; return typeof m == "number" ? [{ target: s, operator: "length", param: null, value: Number(m) }] : typeof m == "boolean" ? [{ target: s, operator: "getProperty", param: p, value: !!m }] : typeof m == "object" ? Object.keys(m).map((u) => { if (u === "length") return { target: s, operator: "length", param: null, value: m[u] }; const f = u, d = m[u]; return { target: s, operator: "getProperty", param: f, value: d }; }) : []; } function o(p) { return Object.keys(p).reduce((s, u) => { const f = r(u, p[u]); return s.push(...f), s; }, []); } function a(p, m) { if (i.has(p.operator)) { const s = i.get(p.operator); return s && s(p.target, p.param, p.value, m) || !1; } return !1; } function g(p, m) { return o(p).reduce((f, d) => f && a(d, m), !0); } function c(p, m) { const s = Object.keys(p), u = s.includes("allOf"), f = s.includes("anyOf"), d = u || f, w = (d ? p[d ? u ? "allOf" : "anyOf" : "allOf"] : [p]).map(($) => g($, m)); return u ? !w.includes(!1) : w.includes(!0); } return { parseValueSchema: c }; } const On = { convertTo: (e, n, t, i) => { e.appearance || (e.appearance = {}), e.appearance[n] = t; }, convertFrom: (e, n, t) => e.appearance ? e.appearance[n] : e[n] }, Rn = { convertFrom: (e, n, t) => e.buttons && e.buttons.length ? `共 ${e.buttons.length} 项` : "无" }, $n = { convertTo: (e, n, t, i) => { e.editor && (e.editor[n] = t); }, convertFrom: (e, n, t) => e.editor && Object.prototype.hasOwnProperty.call(e.editor, n) ? e.editor[n] : e[n] }, An = { 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: "标签页工具栏按钮" }, "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: "动态表单" } }, Un = { convertFrom: (e, n, t) => { var r; const i = e.editor && e.editor[n] ? e.editor[n] : e[n]; return ((r = An[i]) == null ? void 0 : r.name) || i; } }, qn = { convertTo: (e, n, t, i) => { e[n] = e[n]; }, convertFrom: (e, n, t) => e.editor ? t.getRealEditorType(e.editor.type) : "" }, jn = { convertTo: (e, n, t, i) => { (e.type === "data-grid-column" || e.type === "tree-grid-column") && (e.formatter ? e.formatter[n] = t : e.formatter = { [n]: t }); }, convertFrom: (e, n, t) => { if (e.formatter) { if (n === "trueText") return e.formatter.trueText; if (n === "falseText") return e.formatter.falseText; if (n === "prefix") return e.formatter.prefix; if (n === "suffix") return e.formatter.suffix; if (n === "precision") return e.formatter.precision; if (n === "decimal") return e.formatter.decimal; if (n === "thousand") return e.formatter.thousand; if (n === "dateFormat") return e.formatter.dateFormat || "yyyy-MM-dd"; if (n === "customFormat") return e.formatter.customFormat; if (n === "type") return e.formatter.type || "none"; } return "none"; } }, Gn = { convertTo: (e, n, t, i) => { e.command ? e.command[n] = t : e.command = { [n]: t }, n === "enableType" && t === "default" && (e.command.enable = !0, e.command.formatter = "", e.command.commands = [ { text: "编辑", type: "primary", command: "edit" }, { text: "删除", type: "danger", command: "remove" } ]), n === "enableType" && t === "custom" && (e.command.enable = !0, e.command.commands = [ { value: "add", text: "增加", type: "link" }, { value: "edit", text: "编辑", type: "link" }, { value: "remove", text: "删除", type: "link" } ]), n === "enableType" && t === "unable" && (e.command.enable = !1, e.command.formatter = ""); }, convertFrom: (e, n, t) => { var i, r; if (e.command) { if (n === "enableType") { if (e.command.enableType) return e.command.enableType; const o = (r = (i = e.command) == null ? void 0 : i.commands) == null ? void 0 : r.find((a) => a.command === "edit" && a.type === "primary"); return e.command.enable ? o ? "default" : "custom" : "unable"; } if (n === "commands") return e.command.enableType === "custom" ? e.command.commands : []; if (n === "formatter") return e.command.formatter; if (n === "count") return e.command.count; if (n === "columnWidth") return e.command.columnWidth || 200; } return ""; } }, zn = { convertTo: (e, n, t, i) => { e.column ? e.column[n] = t : e.column = { [n]: t }, n === "fitColumns" && t && (e.column.fitMode || (e.column.fitMode = "average")); }, convertFrom: (e, n, t) => { if (e.column) { if (n === "fitColumns") return e.column.fitColumns; if (n === "fitMode") return e.column.fitMode; } return ""; } }, Wn = { convertTo: (e, n, t, i) => { e.summary ? e.summary[n] = t : e.summary = { [n]: t }, n === "enable" && t && (e.summary ? e.summary.groupFields || (e.summary.groupFields = []) : e.summary = { enable: t, groupFields: [] }); }, convertFrom: (e, n, t) => { var i, r; return n === "customSummaryStyle" ? e.summary.customSummaryStyle : n === "position" ? ((i = e.summary) == null ? void 0 : i[n]) || "bottom" : n === "customRender" ? ((r = e.summary) == null ? void 0 : r[n]) || "" : e.summary && n === "enable" ? e.summary.enable : e.type === "data-grid-column" ? e.enableSummary === void 0 ? !1 : e.enableSummary : ""; } }, Dn = { convertTo: (e, n, t, i) => { e.group ? e.group[n] = t : e.group = { [n]: t }, n === "enable" && t && (e.group ? e.group.groupFields || (e.group.groupFields = []) : e.group = { enable: t, groupFields: [], showSummary: !1, customRender: "" }); }, convertFrom: (e, n, t) => { if (e.group) { if (n === "enable") return e.group.enable; if (n === "showSummary") return e.group.showSummary; if (n === "customRender") return e.group.customRender; if (n === "groupFields") return e.group.groupFields; } } }, _n = { convertFrom: (e, n) => e.binding ? e.binding.path : "", convertTo: (e, n, t) => { if (t && t.length > 0) { const i = t[0]; e.binding || (e.binding = {}), e.binding.type = "Form", e.binding.path = i.bindingField, e.binding.field = i.id, e.binding.fullPath = i.path, e.path = i.bindingPath; } } }, Xn = { convertTo: (e, n, t, i) => { e.pagination || (e.pagination = {}), n === "sizeLimits" ? e.pagination.sizeLimits = t.split(",") : e.pagination[n] = t; }, convertFrom: (e, n, t) => { var i; return e.pagination ? n === "sizeLimits" ? (i = e.pagination.sizeLimits) == null ? void 0 : i.join(",") : e.pagination[n] : e[n]; } }, Jn = { convertTo: (e, n, t, i) => { e.rowNumber || (e.rowNumber = {}), e.rowNumber[n] = t; }, convertFrom: (e, n, t) => e.rowNumber ? e.rowNumber[n] : e[n] }, Qn = { convertTo: (e, n, t, i) => { e.selection || (e.selection = {}), e.selection[n] = t; }, convertFrom: (e, n, t) => { if (!e.selection) return !!e[n]; const i = !!e.selection[n]; return n === "showCheckbox" && i == null && e.selection.multiSelect === !0 ? !0 : i; } }, Yn = { convertFrom: (e, n, t) => e[n] && e[n].length ? `共 ${e[n].length} 项` : "" }, Hn = { convertFrom: (e, n) => e[n] || "", convertTo: (e, n, t) => { e[n] = t; } }, Zn = { convertTo: (e, n, t, i) => { e.size || (e.size = {}), e.size[n] = t; }, convertFrom: (e, n, t) => e.size ? e.size[n] : e[n] }, Kn = { convertFrom: (e, n, t) => { var i, r; return (i = e.formatter) != null && i.data && n === "formatterEnumData" && !e.formatterEnumData ? (r = e.formatter) == null ? void 0 : r.data : e.formatterEnumData; } }, ei = { convertTo: (e, n, t, i) => { e.sort || (e.sort = {}), e.sort[n] = t; }, convertFrom: (e, n, t) => { var i, r; if (n === "mode") return ((i = e.sort) == null ? void 0 : i.mode) || "client"; if (n === "multiSort") return !!((r = e.sort) != null && r.multiSort); } }, ti = { convertTo: (e, n, t, i) => { e.filter || (e.filter = {}), e.filter[n] = t, n === "enable" && (e.enableFilter = !1); }, convertFrom: (e, n, t) => { var i, r, o, a; return n === "mode" ? ((i = e.filter) == null ? void 0 : i.mode) || "server" : n === "filterStyle" ? ((r = e.filter) == null ? void 0 : r.filterStyle) || "filter-column" : n === "enable" ? ((o = e.filter) == null ? void 0 : o.enable) !== void 0 ? !!e.filter.enable : !!e.enableFilter : ((a = e.filter) == null ? void 0 : a[n]) || void 0; } }, ni = { convertTo: (e, n, t, i) => { e.rowOption ? e.rowOption[n] = t : e.rowOption = { [n]: t }; }, convertFrom: (e, n, t) => { if (e.rowOption) { if (n === "customRowStyle") return e.rowOption.customRowStyle; if (n === "customCellStyle") return e.rowOption.customCellStyle; if (n === "height") return e.rowOption.height; } return ""; } }, ii = { convertTo: (e, n, t, i) => { (e.type === "data-grid-column" || e.type === "tree-grid-column") && (e[n] = t, n === "columnTemplateType" && t === "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>`), n === "columnTemplateType" && t === "default" && (e.columnTemplate = ""), n === "columnTemplateType" && t === "custom" && (e.columnTemplate = "")); }, convertFrom: (e, n, t) => n === "columnTemplate" ? e.columnTemplate : n === "columnTemplateType" ? e.columnTemplateType ? e.columnTemplateType || "default" : e.columnTemplate && !e.onClickLinkCommand ? "custom" : e.columnTemplate && e.onClickLinkCommand ? "hyperlink" : "default" : "" }, ri = { convertTo: (e, n, t, i) => { e.hierarchy || (e.hierarchy = { cascadeOption: {} }), e.hierarchy.cascadeOption || (e.hierarchy.cascadeOption = {}), e.hierarchy.cascadeOption[n] = t; }, convertFrom: (e, n, t) => { var i, r; return !!((r = (i = e.hierarchy) == null ? void 0 : i.cascadeOption) != null && r[n]); } }; function oi(e, n, t) { const i = /* @__PURE__ */ new Map([ ["/converter/appearance.converter", On], ["/converter/buttons.converter", Rn], ["/converter/property-editor.converter", $n], ["/converter/items-count.converter", Yn], ["/converter/type.converter", Un], ["/converter/change-editor.converter", qn], ["/converter/change-formatter.converter", jn], ["/converter/column-command.converter", Gn], ["/converter/column-option.converter", zn], ["/converter/summary.converter", Wn], ["/converter/group.converter", Dn], ["/converter/form-group-label.converter", Hn], ["/converter/field-selector.converter", _n], ["/converter/pagination.converter", Xn], ["/converter/row-number.converter", Jn], ["/converter/grid-selection.converter", Qn], ["/converter/size.converter", Zn], ["/converter/change-formatter-enum.converter", Kn], ["/converter/grid-sort.converter", ei], ["/converter/grid-filter.converter", ti], ["/converter/row-option.converter", ni], ["/converter/change-formatter-type.converter", ii], ["/converter/tree-auto-check.converter", ri] ]), r = /* @__PURE__ */ 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" }] ]), o = Nn(); function a(d, l) { return () => o.parseValueSchema(d, l); } function g(d, l, h) { return d.includes("visible") && l.visible !== void 0 ? typeof l.visible == "boolean" ? () => !!l.visible : l.visible === void 0 ? !0 : a(l.visible, h) : () => !0; } function c(d, l, h) { return d.includes("readonly") && l.readonly !== void 0 ? typeof l.readonly == "boolean" ? () => !!l.readonly : a(l.readonly, h) : () => !1; } function p(d, l) { const h = d.$converter || l; return typeof h == "string" && h && i.has(h) ? i.get(h) || null : h || null; } function m(d, l, h, w, I, $ = "", U = "") { return Object.keys(d).map((O) => { const L = T(1), G = O, N = d[O], k = Object.keys(N), Y = N.title, X = N.type, B = r.get(X) || { type: "input-group", enableClear: !1 }, q = N.editor ? Object.assign({}, B, N.editor) : Object.assign({}, B), R = g(k, N, l), z = c(k, N, l); q.readonly = q.readonly === void 0 ? z() : q.readonly; const W = N.type === "cascade" ? m(N.properties, l, h, w, I, $, U) : [], H = !0; let D = p(N, U); const oe = _({ get() { if (L.value) { if (["class", "style"].find((ne) => ne === G) && !D && (D = i.get("/converter/appearance.converter") || null), D && D.convertFrom) { const ne = D.convertFrom(h, O, I, $); return ne === void 0 && Object.prototype.hasOwnProperty.call(N, "defaultValue") ? N.type === "boolean" ? N.defaultValue : N.defaultValue || "" : ne; } const J = h[O]; return Object.prototype.hasOwnProperty.call(N, "defaultValue") && (J === void 0 || typeof J == "string" && J === "") ? N.type === "boolean" ? N.defaultValue : N.defaultValue || "" : J; } return null; }, set(J) { L.value += 1, D && D.convertTo ? (D.convertTo(w, O, J, I, $), D.convertTo(h, O, J, I, $)) : (w[O] = J, h[O] = J); } }), { refreshPanelAfterChanged: ae, description: K, isExpand: te, parentPropertyID: ee } = N, se = { propertyID: G, propertyName: Y, propertyType: X, propertyValue: oe, editor: q, visible: R, readonly: z, cascadeConfig: W, hideCascadeTitle: H, refreshPanelAfterChanged: ae, description: K, isExpand: te, parentPropertyID: ee }; return l[G] = se, se; }); } function s(d, l, h = {}) { const w = {}, I = e[d]; return I && I.categories ? Object.keys(I.categories).map((U) => { const A = I.categories[U], O = A == null ? void 0 : A.title, L = m(A.properties || {}, w, {}, h, l); return { categoryId: U, categoryName: O, properties: L }; }) : []; } function u(d, l, h, w, I = "") { const $ = l.$ref.schema, U = l.$ref.converter, A = h[$], O = A.type, L = t(A), G = {}, N = e[O]; if (N && N.categories) { const k = N.categories[d], Y = k == null ? void 0 : k.title; U && Object.keys(k.properties).forEach((q) => { k.properties[q].$converter = U; }); const X = (k == null ? void 0 : k.properties) || {}, B = m(X, G, L, A, w, I); return { categoryId: d, categoryName: Y, properties: B }; } return { categoryId: d, categoryName: "", properties: [] }; } function f(d, l, h, w, I) { const $ = d.type, U = t(d), A = {}; let O = I || e[$]; if (!(O && Object.keys(O).length > 0) && h && h.getPropConfig && (O = h.getPropConfig(w)), O && O.categories) { const G = []; return Object.keys(O.categories).map((N) => { const k = O.categories[N]; if (k.$ref) { G.push(u(N, k, d, l, w)); return; } const Y = k == null ? void 0 : k.title, X = k == null ? void 0 : k.tabId, B = k == null ? void 0 : k.tabName, q = k == null ? void 0 : k.hide, R = k == null ? void 0 : k.hideTitle, z = m(k.properties || {}, A, U, d, l, w, k.$converter), { setPropertyRelates: W } = k, H = k == null ? void 0 : k.parentPropertyID; G.push({ categoryId: N, categoryName: Y, tabId: X, tabName: B, hide: q, properties: z, hideTitle: R, setPropertyRelates: W, parentPropertyID: H }); }), G; } return []; } return { getPropertyConfigBySchema: f, getPropertyConfigByType: s, propertyConverterMap: i }; } function ai(e, n) { let t; function i(s) { const { properties: u, title: f, ignore: d } = s, l = d && Array.isArray(d), h = Object.keys(u).reduce((w, I) => ((!l || !d.find(($) => $ === I)) && (w[I] = u[I].type === "object" && u[I].properties ? i(u[I]) : me(u[I].default)), w), {}); if (f && (!l || !d.find((w) => w === "id"))) { const w = f.toLowerCase().replace(/-/g, "_"); h.id = `${w}_${Math.random().toString().slice(2, 6)}`; } return h; } function r(s) { const { properties: u, title: f, required: d } = s; if (d && Array.isArray(d)) { const l = d.reduce((h, w) => (h[w] = u[w].type === "object" && u[w].properties ? i(u[w]) : me(u[w].default), h), {}); if (f && d.find((h) => h === "id")) { const h = f.toLowerCase().replace(/-/g, "_"); l.id = `${h}_${Math.random().toString().slice(2, 6)}`; } return l; } return { type: f }; } function o(s, u = {}, f) { const d = e[s]; if (d) { let l = r(d); const h = n[s]; return l = h ? h({ getSchemaByType: o }, l, u, f) : l, t != null && t.appendIdentifyForNewControl && t.appendIdentifyForNewControl(l), l; } return null; } function a(s, u) { const f = i(u); return Object.keys(f).reduce((d, l) => (Object.prototype.hasOwnProperty.call(s, l) && (d[l] && Fe(d[l]) && Fe(s[l] || !s[l]) ? Object.assign(d[l], s[l] || {}) : d[l] = s[l]), d), f), f; } function g(s, u) { return Object.keys(s).filter((d) => s[d] != null).reduce((d, l) => { if (u.has(l)) { const h = u.get(l); if (typeof h == "string") d[h] = s[l]; else { const w = h(l, s[l], s); Object.assign(d, w); } } else d[l] = s[l]; return d; }, {}); } function c(s, u, f = /* @__PURE__ */ new Map()) { const d = a(s, u); return g(d, f); } function p(s) { var f; const u = s.type; if (u) { const d = e[u]; if (!d) return s; const l = a(s, d), h = ((f = s.editor) == null ? void 0 : f.type) || ""; if (h) { const w = e[h], I = a(s.editor, w); l.editor = I; } return l; } return s; } function m(s) { t = s; } return { getSchemaByType: o, resolveSchemaWithDefaultValue: p, resolveSchemaToProps: c, mappingSchemaToProps: g, setDesignerContext: m }; } const si = {}, li = {}, { resolveSchemaWithDefaultValue: di } = ai(si, li), ui = {}, ci = {}, { getPropertyConfigBySchema: fe } = oi(ui, ci, di), pi = { /** 某一分类下的属性配置 */ // as PropType<ElementPropertyConfig> category: { type: Object, default: {} }, categoryKey: { type: String }, /** 属性值 */ propertyData: { type: Object, default: {} }, valueChanged: { type: Function }, triggerRefreshPanel: { type: Function } }, fi = { elementConfig: { type: Object, default: {} }, category: { type: Object, default: {} } }, mi = { id: { type: String, default: "" }, customClass: { type: String, default: "" }, customStyle: { type: String, default: "" }, /** 筛选组件配置器,具体配置项可查看各组件文档 */ editor: { type: Object, default: {} }, label: { type: String, default: "" }, /** value is uncertain because type is uncertain, default value should not be set */ modelValue: { type: [String, Boolean, Array, Number], default: null }, // readonly: { type: Boolean, default: false }, visible: { type: Boolean, default: !0 }, required: { type: Boolean, default: !1 }, showLabel: { type: Boolean, default: !0 }, /** * visible相当于showLabel为true,none相当于showLabel为false */ showLabelType: { type: String, default: "visible" }, type: { type: String, default: "input-group" }, componentId: { type: String, default: "" }, errors: { type: Object, default: null }, fill: { type: Boolean, default: !1 }, enableTips: { type: Boolean, default: !1 }, tipsContent: { type: [Object, String], default: "" }, linkLabel: { type: String, default: !1 } }, gi = { id: { type: String }, required: { type: Boolean, default: !1 }, text: { type: String, default: "" }, title: { type: String }, valid: { type: Boolean, default: !0 }, inValidTip: { type: String, default: "" }, /** * 实际支持 'visible'可见 | 'reserve-space' 占位不显示 */ showType: { type: String, default: "visible" }, isLink: { type: Boolean, default: !1 } }, vi = /* @__PURE__ */ re({ name: "FDynamicFormLabel", props: gi, emits: ["clickLabel"], setup(e, n) { T(e.title || e.text); const t = T(e.required), i = T(e.text), r = T(e.valid), o = T(e.inValidTip); Q(() => e.text, () => { i.value = e.text; }), Q(() => e.required, (u, f) => { u !== f && (t.value = u); }), Q([() => e.valid, () => e.inValidTip], ([u, f]) => { r.value = u, o.value = f; }); const a = _(() => r.value ? i.value : o.value), g = _(() => r.value ? "" : "color:red"), c = _(() => ({ "col-form-label": !0, // 指定必填,当显示模式是隐藏或者没有指定标签名时,宽度不限定 "f-width-auto": t.value && (e.showType === "none" || !i.value) })), p = _(() => e.showType === "force-none" ? !1 : e.showType === "reserve-space" || t.value || e.showType !== "none"), m = () => { e.showType !== "reserve-space" && n.emit("clickLabel"); }, s = _(() => ({ "farris-label-text": !0, "f-pretend-link": !!e.isLink && e.showType !== "reserve-space" })); return () => p.value && x("label", { class: c.value, title: a.value, style: g.value }, [!r.value && x("span", { class: "f-icon f-icon-warning mr-1", style: "color: red; min-width: 16px;", title: o.value }, null), x("span", { class: s.value, onClick: m }, [t.value && x("span", { class: "farris-label-info text-danger" }, [ge("*")]), e.showType === "visible" && i.value])]); } }), { globalStorageKey: hi } = Tn(), y = {}, b = {}, C = {}, F = {}; async function yi() { { const e = { schemaMap: Pn, propertyConfigSchemaMap: Sn, propertyEffectMap: En, schemaResolverMap: wn }; Ke.register(y, b, C, F), Ze.register(y, b, C, F), et.register(y, b, C, F, e), tt.register(y, b, C, F), nt.register(y, b, C, F), it.register(y, b, C, F), rt.register(y, b, C, F, e), ot.register(y, b, C, F), xe.register(y, b, C, F, e), we.register(y, b, C, F, e), xe.register(y, b, C, F, e), we.register(y, b, C, F, e), at.register(y, b, C, F, e), st.register(y, b, C, F, e), lt.register(y, b, C, F), ut.register(y, b, C, F, e), dt.register(y, b, C, F, e), ct.register(y, b, C, F, e), pt.register(y, b, C, F, e), ft.register(y, b, C, F), mt.register(y, b, C, F, e), gt.register(y, b, C, F), fn.register(y, b, C, F), vt.register(y, b, C, F, e), ht.register(y, b, C, F), an.register(y, b, C, F), bt.register(y, b, C, F, e), Ct.register(y, b, C, F, e), Ft.register(y, b, C, F, e), wt.register(y, b, C, F, e), xt.register(y, b, C, F), Et.register(y, b, C, F, e), St.register(y, b, C, F), Pt.register(y, b, C, F, e), kt.register(y, b, C, F, e), Tt.register(y, b, C, F, e), It.register(y, b, C, F), Vt.register(y, b, C, F, e), Mt.register(y, b, C, F), Lt.register(y, b, C, F, e), Bt.register(y, b, C, F, e), Nt.register(y, b, C, F, e), Ot.register(y, b, C, F, e), Rt.register(y, b, C, F, e), At.register(y, b, C, F, e), Ut.register(y, b, C, F), $t.register(y, b, C, F, e), nn.register(y, b, C), qt.register(y, b, C, F, e), jt.register(y, b, C, F, e), Gt.register(y, b, C, F), zt.register(y, b, C, F, e), Wt.register(y, b, C, F, e), Dt.register(y, b, C, F, e), ln.register(y, b, C, F), _t.register(y, b, C, F, e), Xt.register(y, b, C, F, e), Jt.register(y, b, C, F), Qt.register(y, b, C, F, e), Yt.register(y, b, C, F, e), Ht.register(y, b, C, F, e), Kt.register(y, b, C, F), Zt.register(y, b, C, F, e), en.register(y, b, C, F), tn.register(y, b, C, F, e), rn.register(y, b, C, F, e), yt.register(y, b, C, F, e), on.register(y, b, C, F, e), sn.register(y, b, C, F, e), dn.register(y, b, C, F, e), un.register(y, b, C, F, e), cn.register(y, b, C, F, e), pn.register(y, b, C, F, e), mn.register(y, b, C, F), gn.register(y, b, C, F, e), vn.register(y, b, C, F), hn.register(y, b, C, F), yn.register(y, b, C, F), bn.register(y, b, C, F, e), Cn.register(y, b, C, F, e), Fn.register(y, b, C, F, e), xn.register(y, b, C, F, e); const n = window[hi]; if (n) for (const t in n) n[t].createPropsResolver = kn, n[t].register(y, b, C); } } function bi() { yi(); function e(a) { const g = y[a]; if (!g) throw new Error(`Could not find the editor of type '${a}'`); return g; } function n(a, g) { const c = b[a]; return c ? c(g) : {}; } function t(a) { switch (a) { case "check-box": return "onChangeValue"; case "switch": return "onModelValueChanged"; case "check-group": return "onChangeValue"; case "combo-list": case "combo-tree": return "onChange"; case "combo-lookup": return ""; case "year-range": case "year-picker": case "month-range": case "month-picker": case "date-range": case "datetime-range": case "datetime-picker": return "onDatePicked"; case "date-picker": return "onUpdate:modelValue"; case "time-picker": return "onValueChange"; case "input-group": return "onChange"; case "lookup": case "sort-condition-editor": case "filter-condition-editor": case "code-editor": case "language-textbox": case "rich-text-editor": return "onUpdate:modelValue"; case "number-range": return "onValueChange"; case "number-spinner": return "onValueChange"; case "radio-group": return "onChangeValue"; case "text": return ""; case "events-editor": return "onSavedCommandListChanged"; case "grid-field-editor": case "item-collection-editor": case "response-form-layout-setting": case "response-layout-editor-setting": case "response-layout-splitter": case "menu-lookup": case "json-editor": return "onChange"; case "field-selector": case "binding-selector": return "onFieldSelected"; case "schema-selector": return "onSchemaSelected"; case "mapping-editor": return "onMappingFieldsChanged"; case "textarea": return "onChange"; case "query-solution-config": case "solution-preset": case "filter-bar-config": return "onFieldsChanged"; case "property-editor": return "onValueChange"; case "expression-editor": return "onExpressionChanged"; case "collection-property-editor": return "onValueChange"; default: return "onUpdate:modelValue"; } } function i(a) { switch (a) { case "combo-list": case "input-group": case "textarea": return "onClear"; } } function r(a) { switch (a) { case "input-group": case "textarea": return "onMousedownEvent"; } } function o(a) { switch (a) { case "input-group": case "textarea": return "onMouseupEvent"; } } return { resolveEditorProps: n, resolveEditorType: e, getChangeFunctionName: t, getClearFunctionName: i, getMousedownFunctionName: r, getMouseupFunctionName: o }; } const Ci = { /** * 显示的错误信息 */ errors: { type: Object, default: null } }, Fi = /* @__PURE__ */ re({ name: "FValidationMessage", props: Ci, emits: [], setup(e, n) { const t = T(e.errors); Q(() => e.errors, (o) => { t.value = o; }); const i = T(!0), r = _(() => { if (t.value) { const o = Object.keys(t.value).map((a) => { var g; return (g = t.value[a]) == null ? void 0 : g.name; }); return o.length ? o.join(" ") : ""; } return ""; }); return () => r.value && x("div", { class: "farris-feedback f-state-invalid", onClick: () => i.value = !i.value }, [!i.value && x("span", { class: "f-icon f-icon-message_warning f-feedback-icon" }, null), i.value && x("span", { class: "f-feedback-message" }, [r.value])]); } }), xi = /* @__PURE__ */ re({ name: "FDynamicFormGroup", props: mi, emits: ["change", "update:modelValue", "clickLabel"], setup(e, n) { var X; const t = T(e.id), i = T(e.customClass), r = T(e.editor), o = T(e.label), a = T(e.modelValue), g = T(e.readonly), c = T(((X = e.editor) == null ? void 0 : X.required) || e.required), p = T(e.showLabel), m = T(e.visible); T(e.type); const s = T(), u = T(e.errors), f = In(), d = T(e.editor.type || "input-group"), l = _(() => p.value ? e.showLabelType : "none"), { resolveEditorProps: h, resolveEditorType: w, getChangeFunctionName: I, getClearFunctionName: $ } = bi(), U = _(() => { const B = { "form-group": !0, "farris-form-group": !0, "common-group": !0, "q-state-readonly": g.value, "align-items-start": r.value.type === "textarea" || r.value.type === "rich-text-editor", "form-group--in-mobile": f }; return B["form-group--has-" + d.value] = !0, B; }), A = _(() => { if (e.fill) return { maxWidth: "none" }; }); function O(B, q, R) { a.value = q !== void 0 ? q : B, n.emit("update:modelValue", a.value), n.emit("change", a.value, { newValue: B, newModelValue: q, parameters: R }); } function L(B) { return (...q) => { typeof B == "function" && B(...q); }; } function G(B) { return (q, R, z) => { O(q, R, z), typeof B == "function" && B(q, R, z); }; } const N = _(() => { const B = r.value.type || "input-group", q = w(B), R = h(B, r.value), z = I(B), W = $(r.value.type); return W && (R[W] = L(R[W])), z && (R[z] = G(R[z])), (R.id == null || R.id === "") && (R.id = t.value), B === "number-range" && r.value.onBeginValueChange && typeof r.value.onBeginValueChange == "function" ? (r.value.onBeginValueChange && typeof r.value.onBeginValueChange == "function" && (R.onBeginValueChange = r.value.onBeginValueChange), r.value.onEndValueChange && typeof r.value.onEndValueChange == "function" && (R.onEndValueChange = r.value.onEndValueChange)) : B === "lookup" && r.value["onUpdate:idValue"] && typeof r.value["onUpdate:idValue"] == "function" ? (R["onUpdate:idValue"] = r.value["onUpdate:idValue"], R.id = t.value) : B === "collection-property-editor" && r.value.onSelectionChange && typeof r.value.onSelectionChange == "function" ? R.onSelectionChange = r.value.onSelectionChange : B === "property-editor" && (R.onBeforeOpenVariables = r.value.onBeforeOpenVariables), (B === "lookup" || B === "combo-list" || B === "date-picker") && (R.title = o.value), () => x(q, _e({ ref: s }, R, { modelValue: a.value, "onUpdate:modelValue": (H) => a.value = H }), n.slots); }); function k() { return x(Fi, { id: `${t.value}-validation-message`, errors: u.value }, null); } Q([() => e.id, () => e.customClass, () => e.editor, () => e.label, () => e.modelValue, () => e.readonly, () => e.required, () => e.showLabel, () => e.visible, () => e.errors], ([B, q, R, z, W, H, D, oe, ae, K]) => { var te; t.value = B, i.value = q, r.value = R, o.value = z, a.value = W, g.value = H, c.value = ((te = r.value) == null ? void 0 : te.required) || D, p.value = oe, m.value = ae, u.value = K; }); function Y(B) { n.emit("clickLabel", B); } return n.expose({ editorRef: s }), () => m.value && x("div", { id: `${t.value}-form-group`, class: i.value, style: e.customStyle }, [x("div", { class: "farris-group-wrap", style: A.value }, [x("div", { class: U.value }, [n.slots.label ? n.slots.label() : x(vi, { id: `${t.value}-lable`, showType: l.value, required: c.value, text: o.value, title: o.value, isLink: !!e.linkLabel, onClickLabel: Y }, null), x("div", { class: "farris-input-wrap" }, [n.slots.content ? n.slots.content() : N.value(), k()]), !!e.enableTips && x(Mn, null, { default: () => [x("span", { class: "farris-label-tips ml-1" }, [x("i", { class: "f-icon f-icon-description-tips" }, null)])], contentTemplate: e.tipsContent })])])]); } }), wi = /* @__PURE__ */ re({ name: "FPropertyPanelItem", props: fi, emits: ["propertyChange", "triggerRefreshPanel"], setup(e, n) { var s; const t = T((s = e.category) == null ? void 0 : s.categoryId), i = T(e.elementConfig.propertyID), r = T(e.elementConfig.propertyName); T(e.elementConfig.editor); const o = T(e.elementConfig.propertyValue), a = _(() => { const u = e.elementConfig.visible; return { "farris-group-wrap": !0, "property-item": !0, "d-none": !(typeof u == "boolean" ? u : u === void 0 ? !0 : u()) }; }); Q(() => { var u; return (u = e.elementConfig) == null ? void 0 : u.propertyValue; }, (u) => { o.value = u; }), Q(() => { var u; return (u = e.elementConfig) == null ? void 0 : u.propertyName; }, (u) => { r.value = u; }); function g(u, f) { const { parameters: d } = f; e.elementConfig.propertyValue = u; const l = { propertyID: e.elementConfig.propertyID, propertyValue: u }; n.emit("propertyChange", l, d, e.elementConfig.refreshPanelAfterChanged); } const c = e.elementConfig.description ? `<div style="color: gray; "> 描述 :${e.elementConfig.description}</div>` : "", p = Xe({ content: ` <div> <div style="color: black; ">${e.elementConfig.propertyName}</div> <div style="color: gray; ">ID:${e.elementConfig.propertyID}</div> ${c} </div>`, placement: "left" }), m = T(""); return m.value = `${t.value}-${i.value}`, () => x("div", { class: a.value }, [e.elementConfig.propertyName && Te(x("label", { class: `col-form-label ${m.value}` }, [x("span", { class: "farris-label-text" }, [r.value])]), [[Je("tooltip"), p]]), x(xi, { id: m.value, showLabel: !1, editor: e.elementConfig.editor, modelValue: o.value, onChange: g, editorParams: e.elementConfig.editorParams }, null)]); } }), Ei = /* @__PURE__ */ re({ name: "FPropertyPanelItemList", props: pi, emits: ["valueChanged", "submitModal", "triggerRefreshPanel"], setup(e, n) { const t = T(e.category); function i(f) { if (!f.hideCascadeTitle) return x("div", { class: "farris-input-wrap" }, [x("input", { title: "summary", type: "input", class: "form-control form-control-sm", value: f.cascadeSummary, readonly: !0 }, null)]); } function r(f, d) { d.isExpand = !d.isExpand; } function o(f) { return x("div", { class: "landscape" }, [x("button", { title: "expand-button", class: ["btn f-btn-collapse-expand f-btn-mx px-1", { "f-state-expand": f.isExpand }], onClick: (d) => r(d, f) }, [x("span", null, null)])]); } function a(f) { return x("div", { class: `f-section-formgroup-legend ${t.value.categoryId}-${f.propertyID}` }, [x("div", { class: "f-header px-0 my-0 col-form-label", style: "font-size: inherit;" }, [x("div", { class: "wrap" }, [x("span", { class: ["f-icon mr-1", { "f-icon-arrow-60-right": !f.isExpand, "f-icon-arrow-60-down": f.isExpand }] }, null), x("span", { class: "farris-label-text" }, [f.propertyName])])])]); } function g(f) { return `${e.categoryKey}_${f.propertyID}`; } async function c(f, d, l) { f.categoryId = t.value.categoryId, t.value.enableCascade && (f.propertyPath = t.value.parentPropertyID), t.value.setPropertyRelates && await t.value.setPropertyRelates(f, e.propertyData, d), n.emit("valueChanged", { changeObject: f }), l && n.emit("triggerRefreshPanel"); } function p() { n.emit("triggerRefreshPanel"); } function m(f) { return x("div", { class: "px-2 mb-2" }, [x(wi, { key: g(f), elementConfig: f, category: t.value, onPropertyChange: c, onTriggerRefreshPanel: p }, null)]); } function s(f) { var d; return x("div", { class: "propertyCascadeItem farris-panel px-2 mb-2" }, [x("div", { class: ["farris-panel-item card", { hidden: !f.isExpand }] }, [x("div", { class: "card-header", onClick: (l) => r(l, f) }, [x("div", { class: "panel-item-title" }, [x("div", { class: "form-group farris-form-group line-item" }, [a(f), i(f), o(f)])])]), x("div", { class: ["card-body", { hidden: !f.isExpand }] }, [(d = f.cascadeConfig) == null ? void 0 : d.map((l) => m(l))])])]); } Q(() => e.category, () => { t.value = e.category; }); function u(f) { return f.propertyType === "cascade" ? s : m; } return () => x(ve, null, [t.value.properties.map((f) => u(f)(f))]); } }), Pe = /* @__PURE__ */ re({ name: "FPropertyPanel", props: Bn, emits: ["propertyChanged"], setup(e, n) { const t = T(e.width), i = T(e.isWidePanel), r = T(e.enableSearch), o = T(e.mode), a = T(e.isPersitOpenState), g = T(e.isShowPanel), c = T(), p = T(), m = T(e.showCloseBtn), s = T(e.selectedTabId), u = T(!0), f = T(e.isWhiteTheme); let d = [], l = []; const h = T(""), w = T(), I = T(), $ = be("SchemaService"); let U = [], A = null, O = ""; const L = T(), G = T(0), N = _(() => d.map((S) => !S.hide).length === 1), k = be("designerContext"); function Y() { l = [], L.value && L.value.categoryList && Array.isArray(L.value.categoryList) && L.value.categoryList.length > 0 && L.value.categoryList.forEach((P) => { if (P.properties && Array.isArray(P.properties) && P.properties.length > 0) { const E = P.properties.map((M) => (M.category = P, M.propertyType === "cascade" && M.cascadeConfig && M.cascadeConfig.map((j) => { j.category = P, j.cascadeParent = M, l = l.concat(j); }), M)); l = l.concat(E); } }); } function X(S) { let P = S.offsetTop, E = S.offsetParent; for (; E !== null; ) P += E.offsetTop, E = E.offsetParent; return P; } function B(S, P) { S && P && Object.keys(P).length > 0 && Object.k