@robot-admin/naive-ui-components 0.19.0 → 0.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/README.md +5 -5
- package/README_EN.md +5 -5
- package/SECURITY.md +39 -0
- package/dist/C_AntV.css +31 -31
- package/dist/C_AntV2.cjs +1 -1
- package/dist/C_AntV2.js +1 -1
- package/dist/C_Breadcrumb.css +308 -20
- package/dist/C_Breadcrumb.d.cts +2 -2
- package/dist/C_Breadcrumb.d.ts +2 -2
- package/dist/C_Breadcrumb2.cjs +1 -1
- package/dist/C_Breadcrumb2.js +1 -1
- package/dist/C_Chat.css +90 -90
- package/dist/C_Chat2.cjs +1 -1
- package/dist/C_Chat2.js +1 -1
- package/dist/C_CollapsePanel2.cjs +1 -1
- package/dist/C_CollapsePanel2.js +1 -1
- package/dist/C_Draggable.css +53 -53
- package/dist/C_Draggable2.cjs +1 -1
- package/dist/C_Draggable2.js +1 -1
- package/dist/C_FilePreview.css +98 -98
- package/dist/C_FilePreview.d.cts +2 -2
- package/dist/C_FilePreview.d.ts +2 -2
- package/dist/C_FilePreview2.cjs +1 -1
- package/dist/C_FilePreview2.js +1 -1
- package/dist/C_Form.base.css +9 -9
- package/dist/C_Form.css +9 -9
- package/dist/C_FormSearch.css +52 -52
- package/dist/C_FormSearch2.cjs +1 -1
- package/dist/C_FormSearch2.js +1 -1
- package/dist/C_Language.css +2 -2
- package/dist/C_Language2.cjs +1 -1
- package/dist/C_Language2.js +1 -1
- package/dist/C_Login.css +79 -79
- package/dist/C_Login2.cjs +1 -1
- package/dist/C_Login2.js +1 -1
- package/dist/C_Menu.css +1 -1
- package/dist/C_Menu.d.cts +2 -2
- package/dist/C_Menu.d.ts +2 -2
- package/dist/C_Menu2.cjs +1 -1
- package/dist/C_Menu2.js +1 -1
- package/dist/C_NotificationCenter.css +124 -124
- package/dist/C_NotificationCenter.d.cts +2 -2
- package/dist/C_NotificationCenter.d.ts +2 -2
- package/dist/C_NotificationCenter2.cjs +1 -1
- package/dist/C_NotificationCenter2.js +1 -1
- package/dist/C_Skeleton.css +2 -2
- package/dist/C_Skeleton2.cjs +1 -1
- package/dist/C_Skeleton2.js +1 -1
- package/dist/C_SplitPane.css +66 -66
- package/dist/C_SplitPane2.cjs +1 -1
- package/dist/C_SplitPane2.js +1 -1
- package/dist/C_Table.base.css +9 -9
- package/dist/C_Table.css +9 -9
- package/dist/C_Table.d.ts +1 -0
- package/dist/C_Theme2.cjs +1 -1
- package/dist/C_Theme2.js +1 -1
- package/dist/C_Timeline.css +46 -46
- package/dist/C_Timeline2.cjs +1 -1
- package/dist/C_Timeline2.js +1 -1
- package/dist/C_Transfer.css +26 -26
- package/dist/C_Transfer2.cjs +1 -1
- package/dist/C_Transfer2.js +1 -1
- package/dist/C_Tree.css +23 -23
- package/dist/C_Tree.d.ts +1 -0
- package/dist/C_Tree2.cjs +1 -1
- package/dist/C_Tree2.js +1 -1
- package/dist/C_Upload2.cjs +1 -1
- package/dist/C_Upload2.js +1 -1
- package/dist/C_VideoPlayer.d.cts +2 -2
- package/dist/C_VideoPlayer.d.ts +2 -2
- package/dist/C_VideoPlayer2.cjs +2 -2
- package/dist/C_VideoPlayer2.js +2 -2
- package/dist/C_WaterFall.css +31 -29
- package/dist/C_WaterFall2.cjs +1 -1
- package/dist/C_WaterFall2.js +1 -1
- package/dist/C_WorkFlow.css +111 -111
- package/dist/C_WorkFlow2.cjs +1 -1
- package/dist/C_WorkFlow2.js +1 -1
- package/dist/config.cjs +1 -0
- package/dist/config.d.cts +8 -0
- package/dist/config.d.ts +8 -0
- package/dist/config.js +1 -0
- package/dist/constants3.d.cts +34 -11
- package/dist/constants3.d.ts +34 -11
- package/dist/constants4.d.cts +14 -3
- package/dist/constants4.d.ts +14 -3
- package/dist/constants5.d.cts +24 -20
- package/dist/constants5.d.ts +24 -20
- package/dist/data.d.cts +6 -6
- package/dist/data.d.ts +6 -6
- package/dist/dateRange.d.cts +2 -0
- package/dist/dateRange.d.ts +2 -0
- package/dist/feedback.cjs +1 -1
- package/dist/feedback.js +1 -1
- package/dist/helpers.cjs +1 -1
- package/dist/helpers.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +8 -7
- package/dist/index.d.ts +9 -7
- package/dist/index.js +1 -1
- package/dist/index.vue.d.cts +4 -4
- package/dist/index.vue.d.ts +4 -4
- package/dist/index10.vue.d.cts +5 -5
- package/dist/index10.vue.d.ts +3 -3
- package/dist/index11.vue.d.cts +3 -3
- package/dist/index12.vue.d.ts +2 -2
- package/dist/index13.vue.d.cts +2 -2
- package/dist/index13.vue.d.ts +6 -6
- package/dist/index14.vue.d.cts +6 -6
- package/dist/index14.vue.d.ts +0 -1
- package/dist/index15.vue.d.cts +0 -1
- package/dist/index16.vue.d.ts +2 -2
- package/dist/index17.vue.d.cts +2 -2
- package/dist/index17.vue.d.ts +1 -1
- package/dist/index18.vue.d.cts +1 -1
- package/dist/index18.vue.d.ts +44 -40
- package/dist/index19.vue.d.cts +2 -2
- package/dist/index19.vue.d.ts +2 -2
- package/dist/index2.vue.d.cts +1 -1
- package/dist/index2.vue.d.ts +1 -1
- package/dist/index20.vue.d.cts +1 -1
- package/dist/index20.vue.d.ts +1 -1
- package/dist/index21.vue.d.cts +1 -1
- package/dist/index21.vue.d.ts +1 -1
- package/dist/index22.vue.d.cts +2 -2
- package/dist/index22.vue.d.ts +2 -2
- package/dist/index25.vue.d.cts +2 -3
- package/dist/index25.vue.d.ts +2 -3
- package/dist/index26.vue.d.cts +3 -3
- package/dist/index26.vue.d.ts +3 -3
- package/dist/index3.vue.d.cts +4 -4
- package/dist/index3.vue.d.ts +4 -4
- package/dist/index4.vue.d.cts +44 -40
- package/dist/index4.vue.d.ts +26 -12
- package/dist/index5.vue.d.cts +26 -12
- package/dist/index6.vue.d.ts +0 -2
- package/dist/index7.vue.d.cts +0 -2
- package/dist/index8.vue.d.ts +4 -4
- package/dist/index9.vue.d.cts +4 -4
- package/dist/index9.vue.d.ts +5 -5
- package/dist/mapUtils.d.cts +3 -3
- package/dist/mapUtils.d.ts +3 -3
- package/dist/presets.d.cts +1 -1
- package/dist/presets.d.ts +1 -1
- package/dist/public.d.ts +3 -1
- package/dist/style.css +1154 -864
- package/dist/types.d.cts +3 -1
- package/dist/useCalendarEvents.d.cts +1 -1
- package/dist/useCalendarEvents.d.ts +1 -1
- package/dist/useCollapsePanel.d.cts +3 -3
- package/dist/useCollapsePanel.d.ts +3 -3
- package/dist/useComponentLocale.cjs +1 -1
- package/dist/useComponentLocale.js +1 -1
- package/dist/useCropperCore.d.cts +4 -4
- package/dist/useCropperCore.d.ts +4 -4
- package/dist/useDraggableLayout.d.cts +1 -0
- package/dist/useDraggableLayout.d.ts +1 -0
- package/dist/useEdgeInteraction.d.cts +2 -2
- package/dist/useEdgeInteraction.d.ts +2 -2
- package/dist/useFullscreen.d.cts +41 -23
- package/dist/useFullscreen.d.ts +41 -23
- package/dist/useInfiniteScroll.d.cts +6 -4
- package/dist/useInfiniteScroll.d.ts +6 -4
- package/dist/useQRCode.d.cts +4 -4
- package/dist/useQRCode.d.ts +4 -4
- package/dist/useSignatureHistory.d.cts +2 -2
- package/dist/useSignatureHistory.d.ts +2 -2
- package/dist/useSplitResize.d.cts +6 -7
- package/dist/useSplitResize.d.ts +6 -7
- package/dist/useTableQuery.cjs +1 -1
- package/dist/useTableQuery.d.cts +6 -10
- package/dist/useTableQuery.d.ts +6 -10
- package/dist/useTableQuery.js +1 -1
- package/dist/useWorkflowValidation.d.cts +11 -3
- package/dist/useWorkflowValidation.d.ts +11 -3
- package/dist/verification.d.cts +1 -1
- package/dist/verification.d.ts +1 -1
- package/docs/architecture.en.md +3 -1
- package/docs/architecture.md +3 -1
- package/docs/guides/usage.en.md +22 -0
- package/docs/guides/usage.md +73 -0
- package/package.json +27 -10
- package/dist/context.cjs +0 -1
- package/dist/context.js +0 -1
package/dist/useTableQuery.d.ts
CHANGED
|
@@ -7,10 +7,6 @@ import { DataTableBaseColumn, DataTableColumn, DataTableRowKey, FormItemRule, Pa
|
|
|
7
7
|
import * as _vue_shared0 from "@vue/shared";
|
|
8
8
|
import { HLJSApi } from "highlight.js";
|
|
9
9
|
|
|
10
|
-
//#region src/context.d.ts
|
|
11
|
-
declare const COMPONENT_FEEDBACK_KEY: InjectionKey<ComponentFeedback>;
|
|
12
|
-
declare const COMPONENT_LOCALE_KEY: InjectionKey<ComponentLocale>;
|
|
13
|
-
//#endregion
|
|
14
10
|
//#region src/composables/useComponentLocale.d.ts
|
|
15
11
|
/** Bind the UI-independent translator to this Vue application and local configuration. */
|
|
16
12
|
declare function useComponentLocale(local?: MaybeRefOrGetter<ComponentLocale | undefined>): {
|
|
@@ -1750,13 +1746,13 @@ interface TreeSlots<T extends object = TreeOption$1> {
|
|
|
1750
1746
|
//#region src/components/C_Tree/index.vue.d.ts
|
|
1751
1747
|
declare const __VLS_export: <T extends object = TreeNodeData>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
1752
1748
|
props: vue.PublicProps & __VLS_PrettifyLocal<TreeProps$1<T> & {
|
|
1753
|
-
onRefresh?: (() => any) | undefined;
|
|
1754
1749
|
onAdd?: ((parentNode?: T | undefined) => any) | undefined;
|
|
1750
|
+
onRefresh?: (() => any) | undefined;
|
|
1755
1751
|
"onLoad-error"?: ((error: unknown, node: T) => any) | undefined;
|
|
1756
|
-
"onUpdate:expandedKeys"?: ((keys: TreeKey[], options: (T | null)[], meta: TreeUpdateMeta<T, "filter" | "
|
|
1752
|
+
"onUpdate:expandedKeys"?: ((keys: TreeKey[], options: (T | null)[], meta: TreeUpdateMeta<T, "filter" | "expand" | "collapse" | "select" | "unselect" | "check" | "uncheck">) => any) | undefined;
|
|
1757
1753
|
"onUpdate:searchPattern"?: ((pattern: string) => any) | undefined;
|
|
1758
|
-
"onUpdate:selectedKeys"?: ((keys: TreeKey[], options: (T | null)[], meta: TreeUpdateMeta<T, "filter" | "
|
|
1759
|
-
"onUpdate:checkedKeys"?: ((keys: TreeKey[], options: (T | null)[], meta: TreeUpdateMeta<T, "filter" | "
|
|
1754
|
+
"onUpdate:selectedKeys"?: ((keys: TreeKey[], options: (T | null)[], meta: TreeUpdateMeta<T, "filter" | "expand" | "collapse" | "select" | "unselect" | "check" | "uncheck">) => any) | undefined;
|
|
1755
|
+
"onUpdate:checkedKeys"?: ((keys: TreeKey[], options: (T | null)[], meta: TreeUpdateMeta<T, "filter" | "expand" | "collapse" | "select" | "unselect" | "check" | "uncheck">) => any) | undefined;
|
|
1760
1756
|
"onNode-select"?: ((node: T | null, selectedKeys: TreeKey[]) => any) | undefined;
|
|
1761
1757
|
"onNode-action"?: ((action: string, node: T) => any) | undefined;
|
|
1762
1758
|
"onNode-drop"?: ((info: DropInfo<T>) => any) | undefined;
|
|
@@ -1770,7 +1766,7 @@ declare const __VLS_export: <T extends object = TreeNodeData>(__VLS_props: NonNu
|
|
|
1770
1766
|
}>) => void;
|
|
1771
1767
|
attrs: any;
|
|
1772
1768
|
slots: TreeSlots<T>;
|
|
1773
|
-
emit: ((evt: "
|
|
1769
|
+
emit: ((evt: "add", parentNode?: T | undefined) => void) & ((evt: "refresh") => void) & ((evt: "load-error", error: unknown, node: T) => void) & ((evt: "update:expandedKeys", keys: TreeKey[], options: (T | null)[], meta: TreeUpdateMeta<T, "filter" | "expand" | "collapse" | "select" | "unselect" | "check" | "uncheck">) => void) & ((evt: "update:searchPattern", pattern: string) => void) & ((evt: "update:selectedKeys", keys: TreeKey[], options: (T | null)[], meta: TreeUpdateMeta<T, "filter" | "expand" | "collapse" | "select" | "unselect" | "check" | "uncheck">) => void) & ((evt: "update:checkedKeys", keys: TreeKey[], options: (T | null)[], meta: TreeUpdateMeta<T, "filter" | "expand" | "collapse" | "select" | "unselect" | "check" | "uncheck">) => void) & ((evt: "node-select", node: T | null, selectedKeys: TreeKey[]) => void) & ((evt: "node-action", action: string, node: T) => void) & ((evt: "node-drop", info: DropInfo<T>) => void);
|
|
1774
1770
|
}>) => vue.VNode & {
|
|
1775
1771
|
__ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
|
|
1776
1772
|
};
|
|
@@ -1956,4 +1952,4 @@ declare function useTableQuery<T extends object, Q extends object = Record<strin
|
|
|
1956
1952
|
cancel: () => void;
|
|
1957
1953
|
};
|
|
1958
1954
|
//#endregion
|
|
1959
|
-
export { MaybeRefLike as $, PrintWatermarkOptions as $t, HighlightPluginOptions as A, createEditModeChecker as At, useRowEdit as B, mergeGlobalConfig as Bt, TreeNodeData as C, ExpandConfig$1 as Ct, TreeSlots as D, ToolbarConfig as Dt, TreeRenderContext as E, TableConfig as Et, useCellEdit as F, FormatterConfig as Ft, _default$1 as G, useCrossPageSelection as Gt, defineTableColumns as H, CrossPageSelectionConfig as Ht, usePagination as I, FormatterType as It, ChildSelectionState as J, UseRowDragReturn as Jt, ApiFunction as K, RowDragConfig as Kt, useTableActions as L, TABLE_GLOBAL_CONFIG_KEY as Lt, setupHighlight as M, ExportConfig as Mt, useHighlight as N, exportTableData as Nt, TreeUpdateMeta as O, TreeConfig as Ot, useModalEdit as P, ColumnFormatter as Pt, EditMode as Q, useDynamicRows as Qt, useTableExpand as R, TableGlobalConfig as Rt, TreeNativeProps as S, ErrorConfig as St, TreeProps$1 as T, SummaryConfig as Tt, defineTableConfig as U, UseCrossPageSelectionOptions as Ut, useTableColumns as V, useTableGlobalConfig as Vt, validateTableRowKeys as W, UseCrossPageSelectionReturn as Wt, CustomAction as X, DynamicRowsOptions as Xt, ColumnWithKey as Y, useRowDrag as Yt, DataRecord as Z, DynamicRowsReturn as Zt, StatusType as _, BatchActionsConfig as _t, getItem as a,
|
|
1955
|
+
export { MaybeRefLike as $, PrintWatermarkOptions as $t, HighlightPluginOptions as A, createEditModeChecker as At, useRowEdit as B, mergeGlobalConfig as Bt, TreeNodeData as C, ExpandConfig$1 as Ct, TreeSlots as D, ToolbarConfig as Dt, TreeRenderContext as E, TableConfig as Et, useCellEdit as F, FormatterConfig as Ft, _default$1 as G, useCrossPageSelection as Gt, defineTableColumns as H, CrossPageSelectionConfig as Ht, usePagination as I, FormatterType as It, ChildSelectionState as J, UseRowDragReturn as Jt, ApiFunction as K, RowDragConfig as Kt, useTableActions as L, TABLE_GLOBAL_CONFIG_KEY as Lt, setupHighlight as M, ExportConfig as Mt, useHighlight as N, exportTableData as Nt, TreeUpdateMeta as O, TreeConfig as Ot, useModalEdit as P, ColumnFormatter as Pt, EditMode as Q, useDynamicRows as Qt, useTableExpand as R, TableGlobalConfig as Rt, TreeNativeProps as S, ErrorConfig as St, TreeProps$1 as T, SummaryConfig as Tt, defineTableConfig as U, UseCrossPageSelectionOptions as Ut, useTableColumns as V, useTableGlobalConfig as Vt, validateTableRowKeys as W, UseCrossPageSelectionReturn as Wt, CustomAction as X, DynamicRowsOptions as Xt, ColumnWithKey as Y, useRowDrag as Yt, DataRecord as Z, DynamicRowsReturn as Zt, StatusType as _, BatchActionsConfig as _t, getItem as a, SelectOption as at, TreeKey as b, DisplayConfig as bt, setItem as c, TableColumn as ct, _default as d, TableManagerApi as dt, printPresets as en, NormalTableColumn as et, ActionConfig as f, TableProps as ft, StatusConfig as g, UseTableExpandReturn as gt, IconConfig as h, UseTableExpandOptions as ht, useTableQuery as i, RowAction as it, createHighlight as j, resolveConfig as jt, HighlightAPI as k, VirtualScrollConfig as kt, useTreeOperations as l, TableEmits as lt, DropInfo as m, TableRowKeyIssue as mt, TableQueryResult as n, useComponentFeedback as nn, ParentChildLinkMode as nt, removeAllItem as o, SimpleTableActions as ot, ButtonType as p, TableRowKey as pt, BuiltInTableColumn as q, UseRowDragOptions as qt, UseTableQueryOptions as r, useComponentLocale as rn, RenderFunction as rt, removeItem as s, StrictTableColumn as st, TableQueryContext as t, usePrintWatermark as tn, PaginationConfig as tt, presetConfigs as u, TableInstance as ut, TreeEmits as v, ColumnDragConfig as vt, TreeOption$1 as w, SelectionConfig$1 as wt, TreeMode as x, EditConfig as xt, TreeExpose as y, CrudBinding as yt, useTableManager as z, applyFormatter as zt };
|
package/dist/useTableQuery.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{t as e}from"./density.js";import{t}from"./useComponentLocale.js";import{t as n}from"./feedback.js";import{t as r}from"./C_Icon2.js";import{t as i}from"./export-helper.js";import{t as a}from"./C_Loading2.js";import{t as o}from"./useActionTask.js";import{t as s}from"./C_ActionBar2.js";import{a as c,t as l}from"./data.js";import{i as u}from"./formValidation.js";import{Fragment as d,computed as f,createBlock as p,createCommentVNode as m,createElementBlock as h,createElementVNode as g,createSlots as _,createTextVNode as v,createVNode as y,defineAsyncComponent as b,defineComponent as x,getCurrentInstance as S,getCurrentScope as C,h as w,inject as T,isRef as E,mergeProps as ee,nextTick as D,normalizeClass as te,normalizeStyle as O,onBeforeUnmount as ne,onMounted as re,onScopeDispose as ie,openBlock as k,reactive as A,ref as j,renderList as ae,renderSlot as oe,resolveDynamicComponent as se,shallowReactive as M,shallowRef as N,toDisplayString as P,toValue as F,unref as I,useAttrs as ce,watch as L,withCtx as R}from"vue";import{NButton as z,NButtonGroup as le,NCheckbox as B,NDataTable as ue,NDrawer as de,NDrawerContent as fe,NDropdown as pe,NInput as me,NInputNumber as V,NModal as he,NPagination as ge,NSelect as _e,NSpace as ve,NSpin as ye,NSwitch as be,NTag as xe,NText as H,NTooltip as U}from"naive-ui";const Se={editable:!1,editMode:`none`,showRowActions:!1,modalTitle:`编辑数据`,modalWidth:600,onEditSave:void 0,onEditCancel:void 0,onEditError:void 0},Ce=e=>{if(e===!1||e===void 0)return Se;if(typeof e==`string`)return Ce({mode:e});if(e===!0)return{editable:!0,editMode:`modal`,showRowActions:!0,modalTitle:`编辑数据`,modalWidth:600,onEditSave:void 0,onEditCancel:void 0,onEditError:void 0};let t=e.enabled!==!1&&e.mode!==`none`;return{editable:t,editMode:e.mode||`modal`,showRowActions:t&&e.showRowActions!==!1,modalTitle:e.modalTitle||`编辑数据`,modalWidth:e.modalWidth||600,onEditSave:e.onSave,onEditCancel:e.onCancel,onEditError:e.onError}},we=e=>e?e===!0?{expandable:!0,defaultExpandedKeys:void 0,onLoadExpandData:void 0,onExpandError:void 0,renderExpandContent:void 0,rowExpandable:void 0}:{expandable:e.enabled!==!1,defaultExpandedKeys:e.defaultExpandedKeys,onLoadExpandData:e.onLoadData,onExpandError:e.onError,renderExpandContent:e.renderContent,rowExpandable:e.rowExpandable}:{expandable:!1,defaultExpandedKeys:void 0,onLoadExpandData:void 0,onExpandError:void 0,renderExpandContent:void 0,rowExpandable:void 0},Te=e=>{if(!e)return{enableSelection:!1,defaultCheckedKeys:void 0,rowCheckable:void 0,maxSelection:void 0,enableChildSelection:!1,childRowCheckable:void 0,enableParentChildLink:!1,parentChildLinkMode:`loose`};if(e===!0)return{enableSelection:!0,defaultCheckedKeys:void 0,rowCheckable:void 0,maxSelection:void 0,enableChildSelection:!1,childRowCheckable:void 0,enableParentChildLink:!1,parentChildLinkMode:`loose`};let t=e.childSelection||{},n=e.parentChildLink||{};return{enableSelection:e.enabled!==!1,defaultCheckedKeys:e.defaultCheckedKeys,rowCheckable:e.rowCheckable,maxSelection:e.maxSelection,enableChildSelection:t.enabled||!1,childRowCheckable:t.childRowCheckable,enableParentChildLink:n.enabled||!1,parentChildLinkMode:n.mode||`loose`}},W=(t,n)=>{let r={enabled:!0,page:1,pageSize:10,showSizePicker:!0,showQuickJumper:!0,pageSizes:[10,20,50,100],simple:!1,size:n?e(n).size:`medium`};return t===!1?{pagination:null}:t===!0||t===void 0?{pagination:r}:{pagination:{...r,...t}}},Ee=e=>e?e===!0?{dynamicRows:{enableRadioSelection:!0,enableAdd:!0,enableInsert:!0,enableDelete:!0,enableCopy:!0,enableMove:!0,enablePrint:!0}}:{dynamicRows:e}:{dynamicRows:void 0},De={striped:!0,bordered:!0,singleLine:!0,size:`medium`,maxHeight:void 0,scrollX:void 0,columnWidth:180};function Oe(t,n){let{size:r}=e(n);return t?{striped:t.striped??De.striped,bordered:t.bordered??De.bordered,singleLine:t.singleLine??De.singleLine,size:t.size??r,maxHeight:t.maxHeight,scrollX:t.scrollX,columnWidth:t.columnWidth??De.columnWidth}:{...De,size:r}}const ke=(t,n)=>({showToolbar:t?.show!==!1,enableColumnSettings:t?.columnSettings!==!1,toolbarActions:t?.actions??[],toolbarRightActions:t?.rightActions??[],toolbarActionBarConfig:{...n?{size:e(n).size,compact:n===`compact`}:{},...t?.actionBar}}),Ae=e=>e?e===!0?{virtualScroll:!0,virtualItemHeight:34,virtualMaxHeight:600}:{virtualScroll:e.enabled!==!1,virtualItemHeight:e.itemHeight??34,virtualMaxHeight:e.maxHeight??600}:{virtualScroll:!1,virtualItemHeight:34,virtualMaxHeight:600},je=e=>e?{summaryPosition:e.position??`bottom`,summaryRender:e.render}:{summaryPosition:void 0,summaryRender:void 0},Me=e=>e?e===!0?{enableColumnDrag:!0,columnDragHandleClass:void 0,columnDragAnimationDuration:150}:{enableColumnDrag:e.enabled!==!1,columnDragHandleClass:e.handleClass,columnDragAnimationDuration:e.animationDuration??150}:{enableColumnDrag:!1,columnDragHandleClass:void 0,columnDragAnimationDuration:150},Ne=e=>e?e===!0?{treeEnabled:!0,treeChildrenKey:`children`,treeIndent:16,treeDefaultExpandAll:!1}:{treeEnabled:e.enabled!==!1,treeChildrenKey:e.childrenKey??`children`,treeIndent:e.indent??16,treeDefaultExpandAll:e.defaultExpandAll??!1}:{treeEnabled:!1,treeChildrenKey:`children`,treeIndent:16,treeDefaultExpandAll:!1},Pe=e=>e?e===!0?{rowDrag:{enabled:!0}}:{rowDrag:e.enabled===!1?void 0:e}:{rowDrag:void 0},Fe=e=>e?e===!0?{crossPageSelection:{enabled:!0}}:{crossPageSelection:e.enabled===!1?void 0:e}:{crossPageSelection:void 0};function Ie(t={}){return{density:t.density,controlSize:t.density?e(t.density).size:`small`,feedback:t.feedback,locale:t.locale,...Ce(t.edit),...we(t.expand),...Te(t.selection),...W(t.pagination,t.density),...Ee(t.dynamicRows),...Oe(t.display,t.density),...ke(t.toolbar,t.density),...Ae(t.virtualScroll),...je(t.summary),...Me(t.columnDrag),...Ne(t.tree),...Pe(t.rowDrag),...Fe(t.crossPageSelection),exportConfig:t.export,persistKey:t.persistKey,formatterConfig:t.formatterConfig,error:t.error,batchActions:t.batchActions}}const Le=e=>({isNonEditable:t=>!e.editable||t.editable===!1||e.editMode===`none`,isRowEditMode:()=>[`row`,`both`].includes(e.editMode),isCellEditMode:()=>[`cell`,`both`].includes(e.editMode)});function G(e){return e.type===void 0&&e.editable!==!1&&e.key!==`_actions`&&String(e.key??``).trim().length>0}function K(e,t){if(!G(e))return[];let n=[...e.editProps?.rules??[]];return e.required&&!n.some(e=>e.required)&&n.unshift(u(e.title,`${e.title}不能为空`)),n.map(n=>{let r={...n};if(r.type===void 0&&(e.editType===`number`&&(r.type=`number`),e.editType===`switch`&&(r.type=`boolean`)),n.validator){let e=n.validator;r.validator=(n,r,i,a,o)=>{let s=!1;try{let c=e(n,r,e=>{s=!0,i(e)},t?.()??a,o);return c===void 0&&!s?!0:c}catch(e){return e instanceof Error?e:Error(String(e))}}}if(n.asyncValidator){let e=n.asyncValidator;r.asyncValidator=(n,r,i,a,o)=>new Promise((i,s)=>{e(n,r,e=>{e?s(e):i()},t?.()??a,o)?.then(i,s)})}return r})}async function Re(e,t,n,r,i=e.key??`value`){if(e.level===`warning`)return null;let a=`${n}校验失败`;try{let n=(await import(`async-validator`)).default;return await new(`default`in n?n.default:n)({[i]:e}).validate({...r,[i]:t},{first:!0,suppressWarning:!0,suppressValidatorError:!0}),null}catch(e){return(e?.errors)?.[0]?.message??(e instanceof Error?e.message:a)}}function ze(e){let t=0,n=j(null),r=j({}),i=j(!1),a=j([]),o=()=>{t++,n.value=null,r.value={},a.value=[]},s=e=>n.value===e,c=t=>{let n=e.data();return!n||!Array.isArray(n)?null:n.find(n=>e.rowKey(n)===t)},u=e=>{let t=c(e);return!t||i.value?!1:(n.value=e,r.value={[String(e)]:l(t)},a.value=[],!0)},d=async()=>{if(n.value===null||i.value)return;let t=e.data();if(!t||!Array.isArray(t))return;let a=t.findIndex(t=>e.rowKey(t)===n.value);i.value=!0;try{a>-1&&await e.onCancel?.(t[a],a),n.value=null,r.value={}}finally{i.value=!1}},f=async(r,i)=>{let o=t,s=(e.columns?.()||[]).filter(G).map(async e=>{let t=String(e.key);if(!t)return null;let n=(await Promise.all(K(e).map(n=>Re(n,r[t],e.title||t,r,t)))).find(Boolean);return n?{field:t,message:n}:null}),c=(await Promise.all(s)).filter(Boolean);return t===o?(n.value===i&&(a.value=c),c.length===0):!1},p=async()=>{let e=n.value;if(e===null)return!0;let t=r.value[String(e)];return t?f(l(t),e):!0},m=async()=>{let a=n.value;if(a===null||i.value)return;let o=r.value[String(a)];if(!o)return;let s=l(o),u=t,d=c(a);i.value=!0;try{if(!await f(s,a)||t!==u)return;let i=e.data(),o=i.findIndex(t=>e.rowKey(t)===a);return o===-1||i[o]!==d||(await e.onSave?.(s,o,a),t!==u)?void 0:(n.value=null,r.value={},{updatedData:s,rowIndex:o})}finally{i.value=!1}},h=e=>{if(n.value===e)return r.value[String(e)]};return{editingRowKey:n,editingData:r,isSaving:i,isEditingRow:s,startEditRow:u,cancelEditRow:d,saveEditRow:m,validateRow:p,validationErrors:a,getEditingRowData:h,updateEditingRowData:(e,t,n)=>{let r=h(e);!r||i.value||(r[t]=l(n))},findRowData:c,invalidate:o}}function Be(e,t){let n=String(e);return`${typeof e}:${n.length}:${n}|${t.length}:${t}`}function Ve(e){let t=0,n=j({rowKey:null,columnKey:null}),r=j({}),i=j(!1),a=j(null),o=()=>{t++,n.value={rowKey:null,columnKey:null},r.value={},a.value=null},s=(e,t)=>n.value.rowKey===e&&n.value.columnKey===t,c=t=>{let n=e.data();return!n||!Array.isArray(n)?null:n.find(n=>e.rowKey(n)===t)},u=(e,t)=>{let o=c(e);return!o||!t||i.value?!1:(n.value={rowKey:e,columnKey:t},r.value={[Be(e,t)]:l(o[t])},a.value=null,!0)},d=t=>(e.columns?.()??[]).find(e=>String(e.key)===t),f=async()=>{let e=t;a.value=null;let{rowKey:i,columnKey:o}=n.value;if(i===null||o===null)return!0;let s=d(o);if(!s)return!0;let l=Be(i,o),u=r.value[l],f=s.title||o,p={...c(i),[o]:u},m=await Promise.all(K(s).map(e=>Re(e,u,f,p,o)));if(t!==e)return!1;let h=m.find(Boolean);return h?(a.value=h,!1):!0};return{editingCell:n,editingData:r,isSaving:i,isEditingCell:s,startEditCell:u,saveEditCell:async()=>{let{rowKey:a,columnKey:o}=n.value;if(a===null||o===null||i.value)return;let s=Be(a,o),u=l(r.value[s]),d=t,p=c(a);i.value=!0;try{if(!await f()||t!==d)return;let i=e.data(),s=i.findIndex(t=>e.rowKey(t)===a);if(s===-1||i[s]!==p)return;let c={...i[s],[o]:u};return await e.onSave?.(l(c),s,o,a),t===d?(n.value={rowKey:null,columnKey:null},r.value={},{updatedData:c,rowIndex:s,columnKey:o}):void 0}finally{i.value=!1}},cancelEditCell:()=>{let{rowKey:e,columnKey:t}=n.value;i.value||(e!==null&&t!==null&&delete r.value[Be(e,t)],n.value={rowKey:null,columnKey:null},a.value=null)},validateCell:f,cellValidationError:a,getEditingCellValue:(e,t)=>r.value[Be(e,t)],updateEditingCellValue:(e,t,n)=>{!s(e,t)||i.value||(r.value[Be(e,t)]=l(n))},findRowData:c,invalidate:o}}function He(e){let t=0,n=j(!1),r=j(!1),i=j(null),a=j({}),o=()=>{t++,n.value=!1,i.value=null,a.value={}},s=f(()=>{if(i.value===null)return-1;let t=e.data();return Array.isArray(t)?t.findIndex(t=>e.rowKey(t)===i.value):-1});return{isModalVisible:n,isSaving:r,editingData:a,editingRowKey:i,editingRowIndex:s,startEdit:(o,s)=>{if(r.value)return!1;let c=e.data();if(!Array.isArray(c))return!1;let u=c.findIndex(t=>e.rowKey(t)===o);return u===-1?!1:(t++,i.value=o,a.value=l(s??c[u]),n.value=!0,!0)},saveEdit:async o=>{if(r.value||i.value===null)return;let c=s.value;if(c===-1)return;let u=i.value,d=t,f=l(o??a.value);r.value=!0;try{return await e.onSave?.(f,c,u),t===d?(n.value=!1,i.value=null,a.value={},{updatedData:f,rowIndex:c}):void 0}finally{r.value=!1}},cancelEdit:async()=>{if(r.value)return!1;let o=t,c=s.value;try{if(i.value!==null&&c>-1){let t=e.data();t[c]&&await e.onCancel?.(t[c],c)}}finally{t===o&&(n.value=!1,i.value=null,a.value={})}return!0},updateEditingData:e=>r.value?!1:(a.value=l(e),!0),resetEditingState:()=>r.value?!1:(i.value=null,a.value={},!0),isEditingRow:e=>i.value===e&&n.value,getEditingRowData:e=>i.value===e?a.value:null,invalidate:o}}function Ue(e,t){try{let n=t(e);if(typeof n==`string`&&n!==``)return JSON.stringify([`string`,n]);if(typeof n==`number`&&Number.isFinite(n))return JSON.stringify([`number`,n])}catch{}}function We(e,t){if(!t)return e;let n=[],r=new WeakSet,i=[];for(let t=e.length-1;t>=0;t--)i.push(e[t]);for(;i.length;){let e=i.pop();if(r.has(e))continue;r.add(e),n.push(e);let a=e[t];if(Array.isArray(a))for(let e=a.length-1;e>=0;e--){let t=a[e];t&&typeof t==`object`&&i.push(t)}}return n}function Ge(e,t,n,r){let i=new WeakSet,a=e=>{if(e===t)return n;if(!r||i.has(e))return e;i.add(e);let o=e[r];if(!Array.isArray(o))return e;let s=o.map(e=>e&&typeof e==`object`?a(e):e);return s.some((e,t)=>e!==o[t])?{...e,[r]:s}:e};return e.map(a)}function Ke(e){return e}function q(e){return e}function qe(e,t){let n=new Map,r=[];return e.forEach((e,i)=>{let a;try{a=t(e)}catch(t){r.push({type:`error`,row:e,index:i,cause:t});return}if(a==null||a===``){r.push({type:`missing`,row:e,index:i});return}let o=n.get(a);if(o!==void 0){r.push({type:`duplicate`,row:e,index:i,key:a,firstIndex:o});return}n.set(a,i)}),r}function Je(e,t,n){let r=new Set,i=new WeakSet,a=[...e],o=e=>{try{return n(e)}catch{return}},s=e=>e!=null&&e!==``;for(;a.length;){let e=a.pop();if(i.has(e))continue;i.add(e);let n=e[t];if(!Array.isArray(n)||n.length===0)continue;let c=o(e);s(c)&&r.add(c);for(let e of n)e&&typeof e==`object`&&a.push(e)}return[...r]}const J=e=>({expandedKeys:j([...e.defaultExpandedKeys||[]]),expandDataMap:j(new Map),loadingMap:j(new Map),errorMap:j(new Map),checkedKeys:e.enableSelection?j([...e.defaultCheckedKeys||[]]):j([]),childSelections:(e.enableChildSelection,j(new Map))}),Ye=e=>{let t=f(()=>We(I(e.data),e.childrenKey)),n=e.rowKey,r=f(()=>{let e=new Map;for(let r of t.value){let t=n(r);e.has(t)||e.set(t,r)}return e});return{data:t,getRowKey:n,getChildRowKey:e.childRowKey||(e=>e.id),findRow:e=>r.value.get(e),isRowExpandable:t=>e.rowExpandable?.(t)??!0,isRowCheckable:t=>e.rowCheckable?.(t)??!0,isChildRowCheckable:(t,n)=>e.childRowCheckable?.(t,n)??!0}},Xe=(e,t,n)=>{let r=new Map,i=new Map,a=!1,o=0,s=new Set(n.defaultExpandedKeys||[]),c=t=>{let n=t===void 0?new Set([...e.expandDataMap.value.keys(),...e.errorMap.value.keys(),...r.keys()]):new Set([t]);for(let t of n)r.delete(t),i.delete(t),e.expandDataMap.value.delete(t),e.errorMap.value.delete(t),e.loadingMap.value.delete(t),e.childSelections.value.delete(t)},l=async o=>{if(!n.onLoadData||a)return[];let s=t.getRowKey(o);if(e.expandDataMap.value.has(s))return e.expandDataMap.value.get(s);if(e.errorMap.value.has(s))return[];let c=r.get(s);if(c)return c.promise;let l={};i.set(s,o),e.loadingMap.value.set(s,!0);let u=()=>!a&&r.get(s)?.token===l,d,f=new Promise(e=>{d=e});return r.set(s,{token:l,promise:f}),(async()=>{try{let t=await n.onLoadData(o),r=Array.isArray(t)?t:[];return u()?(e.expandDataMap.value.set(s,r),n.enableChildSelection&&!e.childSelections.value.has(s)&&e.childSelections.value.set(s,[]),r):[]}catch(t){return u()&&(e.errorMap.value.set(s,t),n.onError?.(t,o)),[]}finally{u()&&(r.delete(s),e.loadingMap.value.set(s,!1))}})().then(d,()=>d([])),f};return L(t.data,n=>{if(i.size===0)return;let r=new Map(n.map(e=>[t.getRowKey(e),e]));for(let[t,n]of i){let i=r.get(t);i!==n&&(c(t),i&&e.expandedKeys.value.includes(t)&&l(i),i||s.delete(t))}e.expandedKeys.value=e.expandedKeys.value.filter(e=>r.has(e))}),C()&&ie(()=>{a=!0,c()}),{loadData:l,retryExpand:async e=>{let n=t.findRow(e);n&&(c(e),await l(n))},invalidateExpand:c,handleRowExpand:async(r,i)=>{let a=t.getRowKey(r);if(o+=1,i){if(s.add(a),e.expandedKeys.value.includes(a)||(e.expandedKeys.value=[...e.expandedKeys.value,a]),await l(r),!s.has(a))return}else s.delete(a),e.expandedKeys.value=e.expandedKeys.value.filter(e=>e!==a);n.onExpandChange?.(e.expandedKeys.value,r,i)},expandAll:async()=>{let r=++o,i=t.data.value.filter(t.isRowExpandable);s=new Set(i.map(t.getRowKey)),e.expandedKeys.value=[...s],await Promise.allSettled(i.map(l)),r===o&&(e.expandedKeys.value=i.map(t.getRowKey),n.onExpandChange?.(e.expandedKeys.value))},collapseAll:()=>{o+=1,s.clear(),e.expandedKeys.value=[],e.childSelections.value.clear(),n.onExpandChange?.(e.expandedKeys.value)},handleExpandChange:async r=>{let i=++o;s=new Set(r);let a=new Set(e.expandedKeys.value),c=new Set(r),u=[...c].filter(e=>!a.has(e)),d=e.expandedKeys.value.filter(e=>!c.has(e));for(let t of d)e.childSelections.value.delete(t);e.expandedKeys.value=[...r],await Promise.all(u.map(async e=>{let n=t.findRow(e);n&&await l(n)})),i===o&&n.onExpandChange?.(r)}}},Ze=(e,t,n)=>{let r=[],i=[],a=(t,a)=>{let o=t.length===r.length&&t.every((e,t)=>e===r[t]),s=a.length===i.length&&a.every((e,t)=>e===i[t]);o&&s||(r=[...t],i=[...a],n.onSelectionChange?.(t,a,e.childSelections.value))},o=f(()=>t.data.value.filter(t.isRowCheckable));return{selectAll:()=>{if(!n.enableSelection)return;let r=o.value.map(t.getRowKey),i=n.maxSelection?r.slice(0,n.maxSelection):r;e.checkedKeys.value=i;let s=new Set(i);a(i,o.value.filter(e=>s.has(t.getRowKey(e))))},clearSelection:()=>{n.enableSelection&&(e.checkedKeys.value=[],a([],[]))},handleSelectionChange:r=>{if(!n.enableSelection)return;let i=new Set(o.value.map(e=>t.getRowKey(e))),s=[...new Set(r)].filter(e=>i.has(e)),c=n.maxSelection?s.slice(0,Math.max(0,n.maxSelection)):s;e.checkedKeys.value=c;let l=new Set(c);a(c,t.data.value.filter(e=>l.has(t.getRowKey(e))))},selectedRowsCount:f(()=>e.checkedKeys.value.length),selectableRows:o}},Qe=(e,t)=>{let n=()=>!!(t.enableParentChildLink&&t.enableSelection&&t.enableChildSelection);return{handleParentChildLink:(r,i,a)=>{if(!n())return;let o=t.parentChildLinkMode===`strict`?i.length===a&&a>0:i.length>0,s=[...e.checkedKeys.value],c=s.includes(r);o&&!c?e.checkedKeys.value=[...s,r]:!o&&c&&(e.checkedKeys.value=s.filter(e=>e!==r))},isLinkEnabled:n}},$e=(e,t,n,r)=>({totalChildSelections:f(()=>r.enableChildSelection?Array.from(e.childSelections.value.values()).reduce((e,t)=>e+t.length,0):0),clearAllSelections:()=>{e.checkedKeys.value=[],e.childSelections.value.clear(),r.onSelectionChange?.([],[],e.childSelections.value)},handleChildSelectionChange:(i,a)=>{if(!r.enableChildSelection)return;e.childSelections.value.set(i,a);let o=e.expandDataMap.value.get(i)||[],s=o.filter(e=>a.includes(t.getChildRowKey(e)));r.onChildSelectionChange?.(i,a,s),n.isLinkEnabled()&&n.handleParentChildLink(i,a,o.length)}}),et=(e,t,n,r,i)=>{if(!i.enableChildSelection)return;let a=t.childSelections.value.get(e)||[],o=t.expandDataMap.value.get(e)||[],s=n.findRow(e);if(!s)return;let c=o.filter(e=>n.isChildRowCheckable(e,s));return{selectedKeys:a,isAllChecked:c.length>0&&c.every(e=>a.includes(n.getChildRowKey(e))),selectAll:()=>{let t=c.map(e=>n.getChildRowKey(e));r.handleChildSelectionChange(e,t)},clearAll:()=>{r.handleChildSelectionChange(e,[])}}},tt=e=>w(`div`,{class:`flex justify-center items-center py-8`},e?[e()]:[w(ye,{size:`small`}),w(`span`,{class:`ml-2 text-gray-500`},`加载中...`)]),nt=()=>w(`div`,{class:`text-center py-8 text-gray-400`},`暂无数据`),rt=e=>{if(!e.length)return[];let t=e[0];return!t||typeof t!=`object`?[]:[{title:`序号`,key:`_index`,width:60,align:`center`,titleAlign:`center`,render:(e,t)=>t+1},...Object.keys(t).filter(e=>![`id`,`key`].includes(e)).map(e=>({key:e,title:e.charAt(0).toUpperCase()+e.slice(1),width:120,align:`center`,titleAlign:`center`,ellipsis:{tooltip:!0}}))]},Y=(e,t,n,r,i,a)=>{let o=[];return a.enableChildSelection&&o.push({type:`selection`,multiple:!0}),o.push(...rt(t)),w(`div`,{class:`p-4 bg-gray-50`},[w(`div`,{class:`mb-2 text-sm text-gray-600`},`详细信息 (${t.length} 条)`),w(ue,{data:t,columns:o,size:`small`,striped:!0,checkedRowKeys:n?.selectedKeys||[],rowKey:e=>r.getChildRowKey(e),onUpdateCheckedRowKeys:a.enableChildSelection?t=>{i.handleChildSelectionChange(e,t)}:void 0})])},it=(e,n,r,i,a)=>{let{t:o}=t(()=>a.locale),s=t=>{let s=n.getRowKey(t),c=e.expandDataMap.value.get(s)||[],l=e.loadingMap.value.get(s)||!1,u=et(s,e,n,r,a);return a.renderContent?a.renderContent(t,c,l,u):l?tt(a.renderLoading):e.errorMap.value.has(s)?w(`div`,{class:`c-table-expand-error`,role:`alert`},[w(`span`,o(`table.loadFailed`)),w(z,{size:`small`,onClick:()=>i.retryExpand(s)},()=>o(`common.retry`))]):c.length?Y(s,c,u,n,r,a):nt()};return{getTableColumns:e=>e.map(e=>{if(e.type===`selection`&&a.enableSelection){let t=`disabled`in e?e.disabled:void 0,r=`multiple`in e?e.multiple:void 0;return{...e,type:`selection`,disabled:e=>!!t?.(e)||!n.isRowCheckable(e),multiple:a.maxSelection===1?!1:r??!0}}return e.type===`expand`&&(a.onLoadData||a.renderContent)?{...e,type:`expand`,expandable:t=>n.isRowExpandable(t)&&(!(`expandable`in e)||e.expandable?.(t)!==!1),renderExpand:s}:e})}};function at(e){let t=J(e),n=Ye(e),r=Xe(t,n,e),i=Ze(t,n,e),a=$e(t,n,Qe(t,e),e),o=it(t,n,a,r,e);return L(n.data,()=>{!e.enableSelection||t.checkedKeys.value.length===0||i.handleSelectionChange(t.checkedKeys.value)}),e.defaultExpandedKeys?.length&&D(async()=>{let i=e.defaultExpandedKeys||[];if(i.length===0)return;let a=i.map(async e=>{let i=n.findRow(e);i&&!t.expandDataMap.value.has(e)&&await r.loadData(i)});await Promise.allSettled(a)}),{expandedKeys:t.expandedKeys,checkedKeys:t.checkedKeys,childSelections:t.childSelections,selectedRowsCount:i.selectedRowsCount,totalChildSelections:a.totalChildSelections,expandAll:r.expandAll,collapseAll:r.collapseAll,expandRow:async e=>{if(t.expandedKeys.value.includes(e)&&!t.loadingMap.value.get(e))return;let i=n.findRow(e);i&&await r.handleRowExpand(i,!0)},handleExpandChange:r.handleExpandChange,selectAll:i.selectAll,clearSelection:i.clearSelection,clearAllSelections:a.clearAllSelections,handleSelectionChange:i.handleSelectionChange,getTableColumns:o.getTableColumns,expandDataMap:t.expandDataMap,loadingMap:t.loadingMap,errorMap:t.errorMap,retryExpand:r.retryExpand,invalidateExpand:r.invalidateExpand}}const ot={text:`Robot Admin`,textSize:16,textColor:`rgba(128, 128, 128, 0.3)`,font:`Microsoft JhengHei`,opacity:.3,rotate:-20,position:`repeat`,xGap:200,yGap:120},st={scale:1,quality:.92,format:`png`,backgroundColor:`#ffffff`,logging:!1,allowTaint:!0,useCORS:!0},ct={orientation:`portrait`,paperSize:`A4`,margin:`10mm 10mm 0 10mm`,style:`@page { margin: 10mm 10mm 0 10mm; } @media print { body { margin: 0; } }`,header:``,footer:``,showModal:!1,modalMessage:`正在准备打印...`,onLoadingStart:()=>{},onLoadingEnd:()=>{},onPrintDialogClose:()=>{}};function lt(e,t,n,r){e.save(),e.translate(t/2,n/2),e.rotate(r.rotate*Math.PI/180),e.fillText(r.text,0,0),e.restore()}function ut(e,t,n,r){[[50,50],[t-50,50],[50,n-50],[t-50,n-50]].forEach(([t,n])=>{e.save(),e.translate(t,n),e.rotate(r.rotate*Math.PI/180),e.fillText(r.text,0,0),e.restore()})}function X(e,t,n,r){let i=Math.sqrt(t*t+n*n),a=t/2,o=n/2;e.save(),e.translate(a,o),e.rotate(Math.atan2(n,t));let s=Math.floor(i/r.xGap),c=-i/2;for(let t=0;t<=s;t++){let n=c+t*r.xGap;e.fillText(r.text,n,0)}e.restore()}function dt(e,t,n,r){let i=Math.ceil(t/r.xGap)+1,a=Math.ceil(n/r.yGap)+1;for(let t=0;t<a;t++)for(let n=0;n<i;n++){let i=n*r.xGap+r.xGap/2,a=t*r.yGap+r.yGap/2;e.save(),e.translate(i,a),e.rotate(r.rotate*Math.PI/180),e.fillText(r.text,0,0),e.restore()}}function ft(e,t){let n=e.getContext(`2d`);if(!n)return e;let r={...ot,...t},{width:i,height:a}=e;n.save(),n.globalAlpha=r.opacity,n.font=`${r.textSize}px ${r.font}`,n.fillStyle=r.textColor,n.textAlign=`center`,n.textBaseline=`middle`;let o={center:lt,corner:ut,diagonal:X,repeat:dt};return(o[r.position]||o.repeat)(n,i,a,r),n.restore(),e}async function pt(e,t={}){if(typeof window>`u`)throw Error(`截图功能仅支持浏览器环境`);let n={...st,...t},{default:r}=await import(`html2canvas`);return await r(e,{logging:n.logging,scale:n.scale,allowTaint:n.allowTaint,useCORS:n.useCORS,backgroundColor:n.backgroundColor,onclone:e=>{let t=e.body;t.style.transform=`scale(1)`}})}function Z(e,t=`png`,n=.92){let r=`image/${t}`;return t===`png`?e.toDataURL(r):e.toDataURL(r,n)}function mt(e,t=`screenshot-${new Date().toISOString().slice(0,10)}.png`,n=`png`){let r=Z(e,n),i=document.createElement(`a`);i.download=t,i.href=r,document.body.appendChild(i),i.click(),document.body.removeChild(i)}async function ht(e,t={}){if(typeof window>`u`)throw Error(`打印功能仅支持浏览器环境`);let n={...ct,...t},{default:r}=await import(`print-js`);return new Promise((t,i)=>{try{n.onLoadingStart?.(),r({printable:e,type:`image`,style:n.style,showModal:n.showModal,modalMessage:n.modalMessage,onLoadingEnd:n.onLoadingEnd,onPrintDialogClose:()=>{n.onPrintDialogClose?.(),t()}})}catch(e){i(e)}})}function gt(e,t,n){let r=0,i=0;e.forEach(e=>{let{width:n,height:a}=e;t===`horizontal`?(r+=n,i=Math.max(i,a)):(r=Math.max(r,n),i+=a)});let a=(e.length-1)*n;return t===`horizontal`?r+=a:i+=a,{totalWidth:r,totalHeight:i}}function _t(e,t){let{orientation:n,spacing:r,backgroundColor:i,totalWidth:a,totalHeight:o}=t,s=document.createElement(`canvas`);s.width=a,s.height=o;let c=s.getContext(`2d`);if(!c)throw Error(`无法创建画布上下文`);c.fillStyle=i,c.fillRect(0,0,a,o);let l=0,u=0;return e.forEach(e=>{c.drawImage(e,l,u),n===`horizontal`?l+=e.width+r:u+=e.height+r}),s}function vt(e,t,n){return e.length?{orientation:t.orientation||`vertical`,spacing:t.spacing||20,backgroundColor:t.backgroundColor||`#ffffff`}:(n.warning(`没有要打印的元素`),null)}async function yt(e,t,n,r){let{orientation:i,spacing:a,backgroundColor:o}=n;r(10);let s=await Promise.all(e.map(e=>pt(e,t.capture)));r(50);let{totalWidth:c,totalHeight:l}=gt(s,i,a);return r(60),_t(s,{orientation:i,spacing:a,backgroundColor:o,totalWidth:c,totalHeight:l})}async function Q(e,t,n,r,i){r(70),t.watermark&&ft(e,t.watermark),r(90),await ht(Z(e,t.capture?.format,t.capture?.quality),t.print),r(100),i.success(`合并打印完成,共合并 ${n} 个元素`)}function bt(){let e=n(),t=j(!1),r=j(0),i=e=>{r.value=Math.max(0,Math.min(100,e))},a=async(e,t={})=>{try{i(0),i(30);let n=await pt(e,t.capture);i(60),t.watermark&&ft(n,t.watermark),i(90);let r=Z(n,t.capture?.format||`png`,t.capture?.quality||.92);return i(100),r}catch(e){throw Error(`截图失败: ${e instanceof Error?e.message:`未知错误`}`)}},o=async(n,r={})=>{t.value=!0,i(0);try{await D();let t=await a(n,r);i(95),await ht(t,r.print),i(100),e.success(`打印完成`)}catch(t){throw e.error(`打印失败: ${t instanceof Error?t.message:`未知错误`}`,t),t}finally{t.value=!1,i(0)}},s=async(n,r,i={})=>{t.value=!0;try{await D();let t=await pt(n,i.capture);i.watermark&&ft(t,i.watermark);let a=i.capture?.format||`png`,o=`screenshot-${new Date().toISOString().slice(0,19).replace(/:/g,`-`)}.${a}`;mt(t,r||o,a),e.success(`下载完成`)}catch(t){throw e.error(`下载失败`,t),t}finally{t.value=!1}},c=async(e,t=`Robot Admin`)=>o(e,{watermark:{text:t,position:`repeat`,textColor:`rgba(128, 128, 128, 0.3)`}}),l=async(e,t={})=>{let n=e.length;i(10);let r=e.map(async(e,r)=>{let o=await a(e,t);return i(10+(r+1)/n*70),o});return Promise.all(r)},u=async(e,t={})=>{await e.reduce(async(n,r,i)=>{await n,await ht(r,t),i<e.length-1&&await new Promise(e=>{setTimeout(()=>e(),1e3)})},Promise.resolve())};return{loading:t,progress:r,captureWithWatermark:a,printWithWatermark:o,downloadScreenshot:s,quickPrint:c,batchCapture:l,batchPrint:async(n,r={})=>{if(!n.length){e.warning(`没有要打印的元素`);return}t.value=!0;try{i(0);let t=await l(n,r);i(80),await u(t,r.print),i(100),e.success(`批量打印完成,共 ${n.length} 个元素`)}catch(t){throw e.error(`批量打印失败`,t),t}finally{t.value=!1,i(0)}},mergePrint:async(n,r={},a={})=>{let o=vt(n,a,e);if(o){t.value=!0;try{await Q(await yt(n,r,o,i),r,n.length,i,e)}catch(t){throw e.error(`合并打印失败`,t),t}finally{t.value=!1,i(0)}}},createPreset:(e,t)=>({use:e=>o(e,t),download:(e,n)=>s(e,n,t)}),updateProgress:i,utils:{captureElement:pt,drawWatermark:ft,canvasToDataURL:Z,downloadCanvas:mt,printImage:ht}}}const xt={table:{watermark:{text:`Robot Admin - 数据表格`,position:`repeat`,textColor:`rgba(100, 100, 100, 0.25)`,textSize:14,xGap:250,yGap:120},capture:{scale:1.2},print:{orientation:`landscape`,style:`@page { margin: 8mm; } body { font-family: Arial, sans-serif; }`}},form:{watermark:{text:`Robot Admin - 表单数据`,position:`diagonal`,textColor:`rgba(150, 150, 150, 0.2)`,textSize:16},print:{orientation:`portrait`}},report:{watermark:{text:`Robot Admin - 机密报告`,position:`center`,textColor:`rgba(200, 50, 50, 0.15)`,textSize:24},capture:{quality:.95,format:`png`}}};function St(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?`row_${crypto.randomUUID()}`:`row_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}function Ct(e,t){return typeof t==`function`?t(e):Reflect.get(e,t)}function wt(e,t,n){if(e){let r=e(n===void 0?void 0:l(n));if(!r||typeof r!=`object`||Array.isArray(r))return null;let i=l(r);return n&&typeof t==`string`?{...l(n),[t]:Reflect.get(i,t)}:i}return typeof t==`string`?{...n?l(n):{},[t]:St()}:null}function Tt(e,...i){let a=i[0]??{},o={enabled:!0,rowKey:`id`,enableRadioSelection:!0,enableAdd:!0,enableInsert:!0,enableDelete:!0,enableCopy:!0,enableMove:!0,enablePrint:!0,confirmDelete:!0,deleteConfirmText:``,printPreset:`table`,printTargetSelector:`.c-table-wrapper`},s=A({...o,...F(a)});L(()=>F(a),e=>{let t=s;Object.keys(t).forEach(e=>delete t[e]),Object.assign(t,o,e)},{deep:!0});let c=n(()=>s.feedback),{t:l}=t(()=>s.locale),u=`c-table-radio-${St()}`,d=j(null),p=j(!1),m=f(()=>d.value===null?null:e.value.find(e=>Ct(e,s.rowKey)===d.value)||null),h=f(()=>m.value?e.value.findIndex(e=>e===m.value):-1),g=f(()=>h.value>0),_=f(()=>h.value>=0&&h.value<e.value.length-1),{loading:v,progress:y,printWithWatermark:b,downloadScreenshot:x,quickPrint:S}=bt(),T=()=>{if(s.printOptions)return s.printOptions;let e=xt[s.printPreset||`table`];return s.printWatermarkText&&e.watermark?{...e,watermark:{...e.watermark,text:s.printWatermarkText}}:e},E=e=>{s.onRowChange?.(e)},ee=t=>{let n=Ct(t,s.rowKey);return(typeof n==`string`&&n!==``||typeof n==`number`&&Number.isFinite(n))&&!e.value.some(e=>Ct(e,s.rowKey)===n)?!0:(c.warning(l(`table.invalidRowKeys`,{count:1})),!1)},D=e=>{try{let t=wt(s.defaultRowData,s.rowKey,e);if(t)return ee(t)?t:null;c.warning(l(`table.invalidRowKeys`,{count:1}))}catch(t){c.error(l(`table.actionFailed`,{action:l(e?`table.copyRow`:`table.addRow`)}),t)}return null},te=()=>{if(!s.enabled||!s.enableAdd)return;let t=D();t&&(E([...e.value,t]),s.onRowAdd?.(t),c.success(l(`table.addRowSuccess`)))},O=()=>{if(!s.enabled||!s.enableInsert||!m.value){c.warning(l(`table.selectRowFirst`));return}let t=D();if(!t)return;let n=[...e.value];n.splice(h.value+1,0,t),E(n),s.onRowAdd?.(t),c.success(l(`table.insertRowSuccess`))},ne=()=>{if(!s.enabled||!s.enableDelete||!m.value){c.warning(l(`table.selectDeleteRowFirst`));return}s.confirmDelete?p.value=!0:re()},re=()=>{if(!m.value)return;let t=m.value,n=h.value;E(e.value.filter((e,t)=>t!==n)),d.value=null,s.onSelectionChange?.(null,null),s.onRowDelete?.(t,n),c.success(l(`table.deleteRowSuccess`)),p.value=!1},k=()=>{if(!s.enabled||!s.enableCopy||!m.value){c.warning(l(`table.selectCopyRowFirst`));return}let t=m.value,n=D(t);n&&(E([...e.value,n]),s.onRowCopy?.(t,n),c.success(l(`table.copyRowSuccess`)))},ae=()=>{if(!s.enabled||!s.enableMove||!g.value)return;let t=h.value,n=[...e.value],r=n[t];[n[t],n[t-1]]=[n[t-1],n[t]],E(n),s.onRowMove?.(r,t,t-1),c.success(l(`table.moveUpSuccess`))},oe=()=>{if(!s.enabled||!s.enableMove||!_.value)return;let t=h.value,n=[...e.value],r=n[t];[n[t],n[t+1]]=[n[t+1],n[t]],E(n),s.onRowMove?.(r,t,t+1),c.success(l(`table.moveDownSuccess`))},se=t=>{if(!s.enabled)return;let n=e.value.find(e=>Ct(e,s.rowKey)===t);n&&(d.value=t,s.onSelectionChange?.(t,n))},M=()=>{d.value=null,s.onSelectionChange?.(null,null)},P=async e=>{if(!e.value){c.error(l(`table.printTargetMissing`));return}let t=T();await b(e.value,t)};return C()&&ie(()=>{d.value=null,p.value=!1}),{selectedRowKey:d,selectedRowData:m,selectedRowIndex:h,canMoveUp:g,canMoveDown:_,deleteConfirmVisible:p,printLoading:v,printProgress:y,addRow:te,insertRow:O,deleteRow:ne,confirmDelete:re,copyRow:k,moveRowUp:ae,moveRowDown:oe,selectRow:se,clearSelection:M,handlePrint:P,handleDownload:async(e,t)=>{if(!e.value){c.error(l(`table.downloadTargetMissing`));return}let n=T();await x(e.value,t,n)},handleQuickPrint:async e=>{if(!e.value){c.error(l(`table.printTargetMissing`));return}let t=s.printWatermarkText||`Robot Admin`;await S(e.value,t)},enhanceColumns:e=>{if(!s.enabled)return e;let t=[...e];return s.enabled&&s.enableRadioSelection&&t.unshift({key:`_radio_selection`,title:l(`common.select`),width:80,align:`center`,editable:!1,render:e=>{let t=Ct(e,s.rowKey);return w(`div`,{class:`flex justify-center`},[w(`input`,{type:`radio`,name:u,"aria-label":l(`common.select`),checked:d.value===t,class:`cursor-pointer accent-blue-500 scale-110`,onChange:e=>{e.target.checked&&se(t)}})])}}),t},renderToolbar:e=>{if(!s.enabled)return null;let t=[];s.enablePrint&&t.push(w(z,{loading:v.value,type:`primary`,ghost:!0,onClick:async()=>{try{let t=e??document.querySelector(s.printTargetSelector);t?await P(N(t)):c.warning(l(`table.printTargetMissing`))}catch(e){c.error(l(`table.printTargetMissing`),e)}}},{icon:()=>w(r,{name:`mdi:printer`,title:l(`common.print`)}),default:()=>l(`common.print`)}));let n=[];return s.enableAdd&&n.push(w(z,{onClick:te,type:`primary`},{icon:()=>w(r,{name:`mdi:plus`,title:l(`table.addRow`)}),default:()=>l(`table.addRow`)})),s.enableInsert&&n.push(w(U,{disabled:!!m.value},{trigger:()=>w(z,{onClick:O,disabled:!m.value,type:`primary`,ghost:!0},{icon:()=>w(r,{name:`mdi:table-row-plus-after`,title:l(`table.insertRow`)}),default:()=>l(`table.insertRow`)}),default:()=>l(`table.selectRowFirst`)})),s.enableDelete&&n.push(w(U,{disabled:!!m.value},{trigger:()=>w(z,{onClick:ne,disabled:!m.value,type:`error`,ghost:!0},{icon:()=>w(r,{name:`mdi:delete`,title:l(`table.deleteRow`)}),default:()=>l(`table.deleteRow`)}),default:()=>l(`table.selectDeleteRowFirst`)})),s.enableCopy&&n.push(w(U,{disabled:!!m.value},{trigger:()=>w(z,{onClick:k,disabled:!m.value,type:`info`,ghost:!0},{icon:()=>w(r,{name:`mdi:content-copy`,title:l(`table.copyRow`)}),default:()=>l(`table.copyRow`)}),default:()=>l(`table.selectCopyRowFirst`)})),s.enableMove&&n.push(w(U,{disabled:g.value},{trigger:()=>w(z,{onClick:ae,disabled:!g.value,type:`warning`,ghost:!0},{icon:()=>w(r,{name:`mdi:arrow-up`,title:l(`table.moveUp`)}),default:()=>l(`table.moveUp`)}),default:()=>m.value?l(`table.firstRow`):l(`table.selectRowFirst`)}),w(U,{disabled:_.value},{trigger:()=>w(z,{onClick:oe,disabled:!_.value,type:`warning`,ghost:!0},{icon:()=>w(r,{name:`mdi:arrow-down`,title:l(`table.moveDown`)}),default:()=>l(`table.moveDown`)}),default:()=>m.value?l(`table.lastRow`):l(`table.selectRowFirst`)})),n.length>0&&t.push(w(le,{},()=>n)),w(`div`,{class:`dynamic-rows-toolbar mb-4 flex justify-end`},[w(ve,{},()=>t)])},renderConfirmModal:()=>w(he,{show:p.value,"onUpdate:show":e=>{p.value=e},preset:`dialog`,title:l(`table.deleteTitle`),content:s.deleteConfirmText||l(`table.deleteRowContent`),positiveText:l(`table.confirmDeleteRow`),negativeText:l(`common.cancel`),onPositiveClick:re})}}function Et(e){let r=0,{data:i,rowKey:a,emit:o}=e,s=()=>F(e.config),c=()=>s().treeEnabled?s().treeChildrenKey??`children`:void 0,l=f(()=>We(i(),c())),u=()=>l.value,d=n(()=>s().feedback),{t:p}=t(()=>s().locale),m=(e,t,n)=>i()===e&&l.value.find(e=>a(e)===t)===n,h={onSave:async(e,t,n,u)=>{let d=i(),f=u??a(e),p=l.value.find(e=>a(e)===f);if(!p)return;let h=l.value.indexOf(p),g={...p,...e},_=r;if(s().editable)try{if(await s().onEditSave?.(g,h,n),r!==_||(await o(`save`,g,h,n),r!==_)||!m(d,f,p))return;o(`update:data`,Ge(i(),p,g,c()))}catch(e){throw s().onEditError?.(e),o(`edit-error`,e),e}},onCancel:async(e,t)=>{let n=r;try{if(await s().onEditCancel?.(e,t),r!==n)return;await o(`cancel`,e,t)}catch(e){throw s().onEditError?.(e),o(`edit-error`,e),e}},onExpandChange:(e,t,n)=>{o(`expand-change`,e,t,n)},onSelectionChange:(e,t,n)=>{o(`selection-change`,e,t,n)},onChildSelectionChange:(e,t,n)=>{o(`child-selection-change`,e,t,n)},onRowChange:e=>{o(`update:data`,e),s().dynamicRows?.onRowChange?.(e)},onRowSelectionChange:(e,t)=>{o(`row-selection-change`,e,t),s().dynamicRows?.onSelectionChange?.(e,t)},onRowAdd:e=>{o(`row-add`,e),s().dynamicRows?.onRowAdd?.(e)},onRowDelete:(e,t)=>{o(`row-delete`,e,t),s().dynamicRows?.onRowDelete?.(e,t)},onRowCopy:(e,t)=>{o(`row-copy`,e,t),s().dynamicRows?.onRowCopy?.(e,t)},onRowMove:(e,t,n)=>{o(`row-move`,e,t,n),s().dynamicRows?.onRowMove?.(e,t,n)}},g=()=>({rowEdit:ze({data:u,rowKey:a,onSave:(e,t,n)=>h.onSave(e,t,void 0,n),onCancel:h.onCancel,columns:e.columns}),cellEdit:Ve({data:u,rowKey:a,onSave:h.onSave,columns:e.columns}),modalEdit:He({data:u,rowKey:a,onSave:(e,t,n)=>h.onSave(e,t,void 0,n),onCancel:h.onCancel})}),_=()=>at({data:f(()=>i()),rowKey:a,get childrenKey(){return c()},childRowKey:e=>e.id,get locale(){return s().locale},renderLoading:e.renderLoading,get defaultExpandedKeys(){return s().defaultExpandedKeys},get onLoadData(){return s().onLoadExpandData},onError:(e,t)=>{let n=s().onExpandError;n?n(e,t):d.error(p(`table.loadFailed`),e)},get renderContent(){return s().renderExpandContent},get rowExpandable(){return s().rowExpandable},get enableSelection(){return s().enableSelection},get defaultCheckedKeys(){return s().defaultCheckedKeys},get rowCheckable(){return s().rowCheckable},get maxSelection(){return s().maxSelection},get enableChildSelection(){return s().enableChildSelection},get childRowCheckable(){return s().childRowCheckable},get enableParentChildLink(){return s().enableParentChildLink},get parentChildLinkMode(){return s().parentChildLinkMode},onExpandChange:h.onExpandChange,onSelectionChange:h.onSelectionChange,onChildSelectionChange:h.onChildSelectionChange}),v=()=>Tt(f(()=>i()),f(()=>({...s().dynamicRows,rowKey:s().dynamicRows?.rowKey??F(e.rowKeyField)??a,enabled:!!s().dynamicRows&&s().dynamicRows?.enabled!==!1,feedback:s().feedback,locale:s().locale,onRowChange:h.onRowChange,onSelectionChange:h.onRowSelectionChange,onRowAdd:h.onRowAdd,onRowDelete:h.onRowDelete,onRowCopy:h.onRowCopy,onRowMove:h.onRowMove}))),y=g();L(y.rowEdit.validationErrors,e=>{y.rowEdit.editingRowKey.value!==null&&e.length&&d.error(e[0].message)}),L(y.cellEdit.cellValidationError,e=>{y.cellEdit.editingCell.value.rowKey!==null&&e&&d.error(e)});let b=()=>{r++,y.rowEdit.invalidate(),y.cellEdit.invalidate(),y.modalEdit.invalidate()};L([()=>s().editable,()=>s().editMode],b,{flush:`sync`}),C()&&ie(b);let x=_(),S=v();return{editStates:y,expandState:x,dynamicRowsState:S,stateManager:{edit:{start(e,t){if(!s().editable)return;let n=s().editMode;n===`modal`?y.modalEdit.startEdit(e):n===`cell`&&t?y.cellEdit.startEditCell(e,t):(n===`row`||n===`both`)&&y.rowEdit.startEditRow(e)},cancel(){y.modalEdit.isModalVisible.value?y.modalEdit.cancelEdit():y.cellEdit.editingCell.value.rowKey===null?y.rowEdit.editingRowKey.value!==null&&y.rowEdit.cancelEditRow():y.cellEdit.cancelEditCell()},async save(){y.modalEdit.isModalVisible.value?await y.modalEdit.saveEdit():y.cellEdit.editingCell.value.rowKey===null?y.rowEdit.editingRowKey.value!==null&&await y.rowEdit.saveEditRow():await y.cellEdit.saveEditCell()},isEditing(e,t){return s().editMode===`modal`?y.modalEdit.isEditingRow(e):t?y.cellEdit.isEditingCell(e,t):y.rowEdit.isEditingRow(e)},getEditingData(){return y.modalEdit.isModalVisible.value?y.modalEdit.editingData.value:y.rowEdit.editingRowKey.value===null?null:y.rowEdit.getEditingRowData(y.rowEdit.editingRowKey.value)}},expand:{async row(e){if(x){let t=[...x.expandedKeys.value];t.includes(e)||(t.push(e),x.handleExpandChange(t))}},collapse(e){if(x){let t=x.expandedKeys.value.filter(t=>t!==e);x.handleExpandChange(t)}},async toggle(e){x?.expandedKeys.value.includes(e)?this.collapse(e):await this.row(e)},async all(){await x?.expandAll()},collapseAll(){x?.collapseAll()},isExpanded(e){return x?.expandedKeys.value.includes(e)??!1}},selection:{select(e){if(x?.checkedKeys.value&&!x.checkedKeys.value.includes(e)){let t=[...x.checkedKeys.value,e];x.handleSelectionChange(t)}},unselect(e){if(x?.checkedKeys.value){let t=x.checkedKeys.value.filter(t=>t!==e);x.handleSelectionChange(t)}},all(){x?.selectAll()},clear(){x?.clearSelection()},isSelected(e){return x?.checkedKeys.value.includes(e)??!1},getSelected(){if(!x?.checkedKeys.value)return[];let e=new Set(x.checkedKeys.value);return l.value.filter(t=>e.has(a(t)))}},childSelection:{select(e,t){if(x?.childSelections.value){let n=x.childSelections.value.get(e)||[];if(!n.includes(t)){let r=[...n,t];x.childSelections.value.set(e,r),o(`child-selection-change`,e,r,[])}}},unselect(e,t){if(x?.childSelections.value){let n=(x.childSelections.value.get(e)||[]).filter(e=>e!==t);x.childSelections.value.set(e,n),o(`child-selection-change`,e,n,[])}},selectAll(e){if(x?.childSelections.value&&x.expandDataMap?.value){let t=x.expandDataMap.value.get(e)||[],n=t.map(e=>e.id);x.childSelections.value.set(e,n),o(`child-selection-change`,e,n,t)}},clear(e){x?.childSelections.value&&(x.childSelections.value.set(e,[]),o(`child-selection-change`,e,[],[]))},getSelected(e){if(!x?.childSelections.value||!x.expandDataMap?.value)return[];let t=x.childSelections.value.get(e)||[];return(x.expandDataMap.value.get(e)||[]).filter(e=>t.includes(e.id))}},dynamicRows:{add(){S?.addRow()},insert(){S?.insertRow()},delete(){S?.deleteRow()},copy(){S?.copyRow()},moveUp(){S?.moveRowUp()},moveDown(){S?.moveRowDown()},clearSelection(){S?.clearSelection()},getSelected(){return S?.selectedRowData.value||null},async print(e){S&&e&&await S.handlePrint(N(e))},async download(e,t){S&&e&&await S.handleDownload(N(e),t)}},clearAllSelections(){x?.clearAllSelections()}},expandedKeys:f(()=>x?.expandedKeys.value??[]),checkedKeys:f(()=>x?.checkedKeys.value??[]),eventHandlers:h}}const $={page:1,pageSize:10,showSizePicker:!0,showQuickJumper:!0,pageSizes:[10,20,50,100],simple:!1,size:`medium`};function Dt(e,t){return!Number.isFinite(e)||(e??0)<=0?t:Math.max(1,Math.trunc(e))}function Ot(e){let{data:t,config:n,emit:r}=e,i=j($.page),a=j($.pageSize),o=f(()=>{let e=typeof t==`function`?t():I(t);return Array.isArray(e)?e:[]}),s=f(()=>{let e=n.value;return e?.remote?Math.max(0,Math.trunc(e.total??o.value.length)):o.value.length}),c=()=>n.value?.enabled?Math.max(1,Math.ceil(s.value/a.value)):1,l=(e,t)=>{let n=Math.min(Dt(e,1),c());i.value!==n&&(i.value=n,t&&r?.(`pagination-change`,n,a.value))},u=e=>l(e,!0),d=e=>{let t=Dt(e,$.pageSize),n=a.value!==t;a.value=t,i.value=1,n&&r?.(`pagination-change`,1,t)},p=()=>l(1,!0),m=f(()=>{let e=n.value;if(!e?.enabled||e.remote)return o.value;let t=(i.value-1)*a.value;return o.value.slice(t,t+a.value)}),h=f(()=>{let e=n.value;return e?.enabled?{page:i.value,pageSize:a.value,itemCount:s.value,showSizePicker:e.showSizePicker??$.showSizePicker,showQuickJumper:e.showQuickJumper??$.showQuickJumper,pageSizes:e.pageSizes??$.pageSizes,simple:e.simple??$.simple,size:e.size??$.size,prefix:e=>`共 ${e.itemCount??0} 条`,suffix:e=>(e.itemCount??0)>0?`第 ${e.startIndex+1}-${e.endIndex} 条`:`暂无数据`,"onUpdate:page":u,"onUpdate:pageSize":d}:null});return L(()=>[n.value?.page,n.value?.pageSize],([e,t])=>{a.value=Dt(t,$.pageSize),i.value=Math.min(Dt(e,$.page),c())},{immediate:!0}),L([s,a],()=>{let e=Math.min(i.value,c());e!==i.value&&(i.value=e,r?.(`pagination-change`,e,a.value))}),{currentPage:i,currentPageSize:a,paginatedData:m,paginationConfig:h,handlePageChange:u,handlePageSizeChange:d,resetToFirstPage:p,getTotalPages:c}}function kt(e){return e.flatMap(e=>e.visible===!1?[]:`children`in e&&Array.isArray(e.children)?kt(e.children):`type`in e&&e.type?[]:[e])}function At(e,t){return e==null?t==null?0:-1:t==null?1:typeof e==`number`&&typeof t==`number`?e-t:typeof e==`string`&&typeof t==`string`?e.localeCompare(t):0}function jt(e,t,n){let{sorter:r}=e;return typeof r==`function`?r(t,n):r&&typeof r==`object`&&typeof r.compare==`function`?r.compare(t,n):r===`default`||typeof r==`object`&&r.compare===`default`?At(t[e.key],n[e.key]):0}function Mt(e,t,n){let r=Array.isArray(t)?t:[t];if(t==null||r.length===0)return!0;let{filter:i}=e,a=t=>t==null?!0:typeof i==`function`?i(t,n):i===`default`?String(n[e.key]).includes(String(t)):!0;return e.filterMode===`and`?r.every(a):r.some(a)}function Nt(e,t){return e.filterOptionValues===void 0?e.filterOptionValue===void 0?Object.prototype.hasOwnProperty.call(t,e.key)?t[e.key]:e.defaultFilterOptionValues??e.defaultFilterOptionValue:e.filterOptionValue:e.filterOptionValues}function Pt(e){let t=N(),n=N({}),r=f(()=>kt(F(e.columns))),i=f(()=>r.value.flatMap(e=>{if(e.filter!==`default`&&typeof e.filter!=`function`)return[];let t=Nt(e,n.value);return t==null||Array.isArray(t)&&t.length===0?[]:[{column:e,value:t}]})),a=f(()=>{let t=F(e.data);if(F(e.remote))return t;let n=i.value;return n.length?t.filter(e=>n.every(({column:t,value:n})=>Mt(t,n,e))):t}),o=f(()=>{let e=r.value.filter(e=>e.sortOrder===!1||e.sortOrder===`ascend`||e.sortOrder===`descend`);return e.length?e.map(e=>({columnKey:e.key,order:e.sortOrder})):t.value===void 0?r.value.map(e=>({columnKey:e.key,order:e.defaultSortOrder})):t.value?Array.isArray(t.value)?t.value:[t.value]:[]});return{processedData:f(()=>{if(F(e.remote))return F(e.data);let t=o.value.flatMap(e=>{let t=r.value.find(t=>t.key===e.columnKey);if(!t?.sorter||!e.order)return[];let n=typeof t.sorter==`object`?t.sorter.multiple??0:0;return[{column:t,direction:e.order===`ascend`?1:-1,priority:n}]}).sort((e,t)=>t.priority-e.priority);return t.length?a.value.slice().sort((e,n)=>{for(let r of t){let t=jt(r.column,e,n)*r.direction;if(t)return t}return 0}):a.value}),setSorter:e=>{t.value=e},setFilters:e=>{n.value={...e}}}}const Ft=e=>e&&typeof e==`object`&&`error`in e?e.error:null;function It(e){let{actions:i,config:a,tableManager:s,rowKey:c,onRowDeleted:l,onViewDetail:u,isDeleteFeedbackHandled:d}=e,f=o(),p=!0;C()&&ie(()=>{p=!1});let m=(e,t)=>JSON.stringify([typeof e,e,t]),h=n(()=>a.value.feedback),{t:g}=t(()=>a.value.locale),_=e=>e===`edit`?a.value.editable&&i.value?.edit!==!1:typeof i.value?.[e]==`function`,v=e=>e!==!1&&typeof e==`function`,y=e=>e&&typeof e==`object`&&`data`in e?e.data:e,b=(e,t,n=`primary`,i,o,s=!1)=>w(z,{size:a.value.controlSize??`small`,type:n,quaternary:!0,onClick:i,loading:s||(o?f.isRunning(o):!1),disabled:o?f.isRunning(o):!1},()=>[w(r,{name:e,size:14,title:t})]),x=async(e,t)=>{let n=c(e),r=i.value?.edit;if(v(r)){try{await r(e,t)}catch(e){h.error(g(`table.actionFailed`,{action:g(`common.edit`)}),e)}return}a.value.editMode===`modal`?s.editStates.modalEdit.startEdit(n,{...e}):s.editStates.rowEdit.startEditRow(n)},S=(e,t)=>{p&&!t&&h.error(g(`table.deleteFailed`),e)},T=async(e,t,n)=>{let r=d?.(e)===!0;try{let i=await e(t,n);if(!p)return;let a=Ft(i);if(a!=null){S(a,r);return}r||h.success(g(`table.deleteSuccess`)),l?.(t,n)}catch(e){throw S(e,r),e}},E=async(e,t)=>{let n=i.value?.delete;v(n)&&await h.confirm({title:g(`table.deleteTitle`),content:g(`table.deleteContent`),positiveText:g(`common.confirm`),negativeText:g(`common.cancel`),type:`warning`})&&p&&await T(n,e,t)},ee=async(e,t)=>{let n=i.value?.detail;if(!v(n)){u?.(e);return}try{let r=await n(e,t);if(!p)return;let i=y(r);u?.(i||e)}catch(t){if(!p)return;h.error(g(`table.detailFailed`),t),u?.(e)}},D=(e,t)=>f.run(m(c(e),`edit`),()=>x(e,t)),te=(e,t)=>f.run(m(c(e),`delete`),()=>E(e,t)),O=(e,t)=>f.run(m(c(e),`detail`),()=>ee(e,t)),ne=e=>s.editStates.rowEdit.isEditingRow(e)?[b(`mdi:check`,g(`common.save`),`primary`,()=>void f.run(m(e,`save`),()=>s.editStates.rowEdit.saveEditRow()).catch(e=>h.error(g(`table.actionFailed`,{action:g(`common.save`)}),e)),m(e,`save`)),b(`mdi:close`,g(`common.cancel`),`default`,()=>void f.run(m(e,`cancel`),()=>s.editStates.rowEdit.cancelEditRow()).catch(e=>h.error(g(`table.actionFailed`,{action:g(`common.cancel`)}),e)),m(e,`cancel`))]:[b(`mdi:pencil`,g(`common.edit`),`warning`,()=>s.editStates.rowEdit.startEditRow(e))],re=(e,t)=>{let n=[];return _(`detail`)&&n.push(b(`mdi:eye`,g(`common.detail`),`info`,()=>void O(e,t),m(c(e),`detail`))),_(`edit`)&&(a.value.editMode===`modal`||v(i.value?.edit))&&n.push(b(`mdi:pencil`,g(`common.edit`),`warning`,()=>void D(e,t),m(c(e),`edit`))),_(`delete`)&&n.push(b(`mdi:delete`,g(`common.delete`),`error`,()=>void te(e,t).catch(()=>void 0),m(c(e),`delete`))),n},k=(e,t)=>{let n=i.value?.custom;if(!n?.length)return null;let a=n.filter(n=>n.show?n.show(e,t):!0);return a.length?w(pe,{options:a.map(n=>{let i=typeof n.label==`function`?n.label(e,t):n.label,a=typeof n.icon==`function`?n.icon(e,t):n.icon;return{label:i,key:n.key,icon:()=>w(r,{name:a,size:14}),disabled:n.disabled?.(e,t)||f.isRunning(m(c(e),`custom:${n.key}`))}}),onSelect:n=>{let r=a.find(e=>e.key===n);if(!r)return;let i=typeof r.label==`function`?r.label(e,t):r.label;f.run(m(c(e),`custom:${r.key}`),()=>r.onClick(e,t),()=>!r.disabled?.(e,t)).catch(e=>h.error(g(`table.actionFailed`,{action:i}),e))}},()=>b(`mdi:dots-horizontal`,g(`table.moreActions`),`default`,()=>{},void 0,a.some(t=>f.isRunning(m(c(e),`custom:${t.key}`))))):null};return{renderActions:(e,t)=>{if(i.value?.render)return i.value.render(e,t);let n=c(e),r=a.value.editable&&[`row`,`both`].includes(a.value.editMode);if(r&&s.editStates.rowEdit.isEditingRow(n))return w(ve,{size:2,wrap:!1},()=>ne(n));let o=v(i.value?.edit),l=[...r&&!o?ne(n):[],...re(e,t)],u=k(e,t);return u&&l.push(u),w(ve,{size:2,wrap:!1},()=>l)},isActionEnabled:_}}const Lt=Symbol(`C_TABLE_GLOBAL_CONFIG`),Rt={date:{format:`YYYY-MM-DD`},datetime:{format:`YYYY-MM-DD HH:mm:ss`},currency:{prefix:`¥`,precision:2},percent:{precision:2,suffix:`%`},number:{precision:0}};function zt(e,t){if(e==null||e===``)return`-`;let n=new Date(typeof e==`number`?e:String(e));if(Number.isNaN(n.getTime()))return String(e);let r=e=>String(e).padStart(2,`0`);return t.replace(`YYYY`,String(n.getFullYear())).replace(`MM`,r(n.getMonth()+1)).replace(`DD`,r(n.getDate())).replace(`HH`,r(n.getHours())).replace(`mm`,r(n.getMinutes())).replace(`ss`,r(n.getSeconds()))}function Bt(e,t){if(e==null||e===``)return`-`;let n=Number(e);return Number.isNaN(n)?String(e):n.toLocaleString(`zh-CN`,{minimumFractionDigits:t,maximumFractionDigits:t})}const Vt={date:(e,t)=>zt(e,t.format??`YYYY-MM-DD`),datetime:(e,t)=>zt(e,t.format??`YYYY-MM-DD HH:mm:ss`),currency:(e,t)=>{let n=Bt(e,t.precision??2);return n===`-`?`-`:`${t.prefix??`¥`}${n}${t.suffix??``}`},percent:(e,t)=>{if(e==null||e===``)return`-`;let n=Number(e);return Number.isNaN(n)?String(e):`${(n*100).toFixed(t.precision??2)}${t.suffix??`%`}`},number:(e,t)=>Bt(e,t.precision??0)};function Ht(e,t,n,r){if(n.fn)return n.fn(e,t);if(n.type===`enum`)return n.mapping?n.mapping[String(e)]??String(e??`-`):String(e??`-`);let i=n.type&&Vt[n.type];return i?i(e,{...{...Rt,...r}[n.type],...n.config}):String(e??`-`)}function Ut(){return S()?T(Lt,{}):{}}const Wt=(e,t)=>t===void 0?e:t&&e&&typeof t==`object`&&typeof e==`object`&&!Array.isArray(t)&&!Array.isArray(e)?{...e,...t}:t;function Gt(e,t){let n=t.defaults??{},r={...n,...e};if([`edit`,`pagination`,`expand`,`selection`,`dynamicRows`,`toolbar`,`display`,`virtualScroll`,`summary`,`columnDrag`,`tree`,`rowDrag`,`crossPageSelection`,`export`,`formatterConfig`,`error`,`batchActions`].forEach(t=>{let i=e=>t===`edit`&&typeof e==`string`?{mode:e}:e,a=Wt(i(n[t]),i(e[t]));a!==void 0&&(r[t]=a)}),t.display){let e=typeof r.display==`object`?r.display:{};r.display={...t.display,...e}}if(t.pageSize&&r.pagination!==!1){let e=typeof r.pagination==`object`?r.pagination:{};e.pageSize||(r.pagination={...e,pageSize:t.pageSize})}return r}const Kt=b(()=>import(`./date-picker.js`)),qt={number:V,switch:be,input:me,email:me,mobile:me,date:e=>w(Kt,{...e,type:`date`,format:`yyyy-MM-dd`}),select:e=>w(_e,{...e,options:e.options||[]}),textarea:e=>w(me,{...e,type:`textarea`,rows:3})},Jt={number:`inputNumber`,date:`datePicker`,textarea:`textarea`,select:`select`,switch:`switch`},Yt=(e,t)=>e.filter(G).map(e=>{let n={...e.editProps};return delete n.rules,{prop:String(e.key),label:e.title||String(e.key),type:Jt[e.editType??`input`]??`input`,placeholder:e.editProps?.placeholder??`请输入${e.title}`,rules:K(e,t),attrs:n,layout:{span:1},show:!0}});function Xt(e,t,n,r={},i=0,a,o=!1){if(e.editRender)return e.editRender(t,r,i,{onUpdate:n});let s=e,c={value:t,"onUpdate:value":n,placeholder:`请输入${s.title??``}`,style:{width:`100%`},...a?{size:a}:{},...e.editProps,...o?{disabled:!0}:{}};return w(qt[e.editType||`input`]||qt.input,c)}function Zt(e,t,n,r,i){return e.render?e.render(t,n)??String(r??``):e.formatter?Ht(r,t,e.formatter,i):String(r??``)}function Qt(e,t,n,i,a,o={rowData:{},rowIndex:0}){let s=(e,t,n)=>w(`button`,{class:`cell-action-btn cell-action-${e}`,disabled:o.busy,"aria-busy":o.busy||void 0,title:t,type:`button`,onClick:e=>{e.stopPropagation(),e.preventDefault(),n(e)}},[w(r,{name:`mdi:${e===`save`?`check`:`close`}`,title:e===`save`?`保存`:`取消`,size:12})]);return w(`div`,{class:`cell-editing-container`},[w(`div`,{class:`cell-editing-input`},[Xt(e,t,n,o.rowData,o.rowIndex,o.size,o.busy)]),w(`div`,{class:`cell-editing-actions`},[s(`save`,`保存`,i),s(`cancel`,`取消`,a)])])}function $t(e,t,n,i,a,o){let s;return s=e.render?e.render(t,n)??String(i??``):e.formatter?Ht(i,t,e.formatter,o):String(i??``),w(`div`,{class:`cell-edit-wrapper`},[w(`span`,{class:`cell-value`},s),w(r,{name:`mdi:square-edit-outline`,title:`编辑`,class:`cell-edit-icon`,size:14,clickable:!0,onClick:e=>{e.stopPropagation(),a()}})])}function en(e){let{rawColumns:t,config:n,rowKey:r,tableManager:i,actionsRenderer:a,editModeChecker:o,showActionsColumn:s}=e,c=j([]),l=j(!1),u=e=>{let t=e.find(e=>e.key===`_actions`),n=c.value.find(e=>e.key===`_actions`),r=e.filter(e=>e.key!==`_actions`);c.value=s.value?[...r,t||n||{key:`_actions`,title:`操作`,width:180,editable:!1,visible:!0,fixed:`right`}]:r};L([t,s],([e])=>{e?.length?u(e):c.value=[]},{deep:!0,immediate:!0});let d=(e,t,r,a)=>{let o=e.key??``,s=t[o],{isEditingCell:c,getEditingCellValue:l,updateEditingCellValue:u,saveEditCell:d,cancelEditCell:f,startEditCell:p}=i.editStates.cellEdit;return c(a,o)?Qt(e,l(a,o),e=>u(a,o,e),()=>d(),()=>f(),{rowData:t,rowIndex:r,busy:i.editStates.cellEdit.isSaving?.value,size:n.value.density?n.value.controlSize:void 0}):$t(e,t,r,s,()=>p(a,o),n.value.formatterConfig)},p=(e,t,a)=>{let s=e.key??``,c=t[s],l=r(t),u=o.value;if(u.isNonEditable(e))return Zt(e,t,a,c,n.value.formatterConfig);if(u.isRowEditMode()&&i.editStates.rowEdit.isEditingRow(l)){let r=i.editStates.rowEdit.getEditingRowData(l);return Xt(e,r?.[s],e=>i.editStates.rowEdit.updateEditingRowData(l,s,e),r??t,a,n.value.density?n.value.controlSize:void 0,i.editStates.rowEdit.isSaving?.value)}return u.isCellEditMode()?d(e,t,a,l):Zt(e,t,a,c,n.value.formatterConfig)},m=t=>t.width===void 0?t.type===`selection`||t.type===`expand`?40:t.type===`index`?50:e.columnWidth??180:t.width,h=e=>{let t=e;return{...t,type:void 0,key:`_index`,title:t.title??`序号`,width:m(e),className:[t.className,`c-table-index-column`].filter(Boolean).join(` `),titleAlign:t.titleAlign??`center`,align:t.align??`center`,render:(e,t)=>t+1,fixed:e.fixed}},g=t=>{let n=t,r=!n.fixed&&n.width===void 0&&n.maxWidth===void 0&&e.columnWidthExplicit===!1,i={...n,width:r?void 0:m(t),minWidth:n.minWidth??(r?e.columnWidth:void 0),titleAlign:n.titleAlign||`center`,align:n.align||`center`,render:(e,n)=>p(t,e,n)};return t.fixed&&(i.fixed=t.fixed),t.resizable&&typeof i.width==`number`&&(i.resizable=!0,i.minWidth=t.minWidth??80,i.maxWidth=t.maxWidth??500),i},_=f(()=>{let e=c.value.filter(e=>{let t=e;return t.visible!==!1&&t.key!==`_actions`}).map(e=>{let t=e;return e.type===`index`?h(e):e.type===`selection`||e.type===`expand`?{...t,width:m(e)}:g(e)});if(i.dynamicRowsState&&(e=i.dynamicRowsState.enhanceColumns(e)),i.expandState&&(n.value.expandable||n.value.enableSelection)&&(e=i.expandState.getTableColumns(e)),s.value){let t=c.value.find(e=>e.key===`_actions`);e.push({...t,type:void 0,key:`_actions`,title:t?.title??`操作`,width:t?.width??180,className:[t?.className,`c-table-actions-column`].filter(Boolean).join(` `),align:t?.align??`center`,titleAlign:t?.titleAlign??`center`,render:a,fixed:t?.fixed})}return e});return{reactiveColumns:c,showSettingsPanel:l,computedColumns:_,computedScrollX:f(()=>{if(e.scrollX!==void 0)return e.scrollX;let t=_.value.some(e=>e.fixed),n=_.value.some(e=>e.type===`selection`||e.type===`expand`||e.key===`_index`),r=_.value.some(e=>!e.type&&!e.fixed&&e.key!==`_index`&&e.key!==`_actions`&&e.width===void 0);if(!(!t&&!(n&&r)))return _.value.reduce((e,t)=>{let n=t.width;return e+(typeof n==`number`?n:typeof n==`string`&&/^\s*\d+(?:\.\d+)?(?:px)?\s*$/.test(n)?Number.parseFloat(n):typeof t.minWidth==`number`?t.minWidth:180)},0)}),handleColumnChange:e=>{c.value=e.map(e=>{let t=e;return{...e,visible:t.visible!==!1,fixed:e.fixed,width:t.width??(t.type?m(e):void 0),align:t.align||`center`,titleAlign:t.titleAlign||`center`}})}}}function tn(e){let{data:t,onReorder:n,onSort:r}=e,i=j(!1),a=null,o=0,s=!1,c,l=null,u,d,f=null,p,m=t=>t.map(t=>Ue(t,e.rowKey)),h=()=>{p?.parentNode!==l||!l||f&&f.parentNode!==l||l.insertBefore(p,f)},g=()=>{a?.destroy(),a=null,l=null,u=void 0,d=void 0,p=void 0,f=null,i.value=!1},_=(e,t,n)=>{if(!u||u.length!==e.length||u.some((t,n)=>t!==e[n])||t.some((e,t)=>e===void 0||e!==d?.[t])||n.length!==t.length||new Set(n).size!==t.length)return!1;let r=new Set(t);return n.every(e=>r.has(e))},v=e=>{i.value=!1;let{item:a}=e,o=a.getAttribute(`data-c-table-row-key`),s=[...t.value],c=m(s),g=l?[...l.children].map(e=>e.getAttribute(`data-c-table-row-key`)).filter(e=>e!==null):[],v=a===p&&_(s,c,g);if(h(),u=void 0,d=void 0,p=void 0,f=null,!v||!o)return;let y=c.indexOf(o),b=g.indexOf(o);if(y<0||b<0||y===b)return;let[x]=s.splice(y,1);s.splice(b,0,x),n?.(s),r?.(x,y,b)},y=async n=>{let r=++o;c?.disconnect(),c=void 0,g();let h=F(e.config);if(!(!h||h.enabled===!1||!n||s))try{let{default:e}=await import(`sortablejs`);if(s||r!==o)return;let _=()=>{if(s||r!==o)return;let c=n.querySelector(`.n-data-table-tbody`);c!==l&&(g(),c&&(l=c,a=new e(c,{animation:h.animationDuration??150,handle:h.handleSelector,draggable:`> tr[data-c-table-row-key]`,ghostClass:h.ghostClass??`row-drag-ghost`,chosenClass:h.chosenClass??`row-drag-chosen`,onMove:e=>e.related.hasAttribute(`data-c-table-row-key`),onStart:e=>{u=[...t.value],d=m(u),p=e.item,f=e.item.nextSibling,i.value=!0},onEnd:v})))};c=new MutationObserver(_),c.observe(n,{childList:!0,subtree:!0}),_()}catch{}},b=()=>{o+=1,c?.disconnect(),c=void 0,g()};return ne(()=>{s=!0,b()}),{initRowDrag:y,destroyRowDrag:b,isDragging:i}}function nn(e){let t=j(new Set),n=M(new Map),r=()=>F(e.config)?.enabled===!0,i=(t=e.allData.value)=>We(t,F(e.childrenKey)),a=f(()=>{let t=new Map,n=new Map;for(let r of i()){let i=e.rowKey(r),a=t.get(i);if(!a)t.set(i,r);else{let e=n.get(i);e?e.push(r):n.set(i,[a,r])}}return{index:t,duplicates:n}}),o=t=>e.rowCheckable?.(t)!==!1,s=()=>{let t=F(e.config)?.maxSelection;return Number.isFinite(t)&&(t??0)>0?Math.trunc(t):void 0},c=f(()=>t.value.size),l=()=>[...t.value].flatMap(e=>{let t=n.get(e);return t?[t]:[]}),u=e=>{let t=s(),n=new Set;for(let r of e){if(t&&n.size>=t)break;n.add(r)}return n},d=(r,i=[])=>{let a=u(r);for(let t of i){let r=e.rowKey(t);a.has(r)&&n.set(r,t)}for(let e of n.keys())a.has(e)||n.delete(e);let o=t.value;o.size===a.size&&[...o].every(e=>a.has(e))||(t.value=a,e.onSelectionChange?.([...a],l()))},p=n=>i(n).map(e.rowKey).filter(e=>t.value.has(e)),m=(n,a)=>{if(!r())return;let s=i(a),c=new Set(s.filter(o).map(e.rowKey)),l=new Set(t.value);s.forEach(t=>l.delete(e.rowKey(t))),n.forEach(e=>{c.has(e)&&l.add(e)}),d(l,s)},h=()=>{if(!r())return;let n=i().filter(o),a=n.map(e.rowKey);d(F(e.remote)?[...t.value,...a]:a,n)},g=e=>{if(!r())return!1;if(t.value.has(e))return!0;let{index:n,duplicates:i}=a.value,c=i.get(e),l=c?c.find(o):n.get(e);if(!l||!c&&!o(l))return!1;let u=s();return u&&t.value.size>=u?!1:(d([...t.value,e],[l]),!0)},_=e=>{if(!t.value.has(e))return;let n=new Set(t.value);n.delete(e),d(n)},v=()=>d([]);return L(e.allData,a=>{if(!r()||t.value.size===0)return;let o=i(a);if(F(e.remote)){for(let r of o){let i=e.rowKey(r);t.value.has(i)&&n.set(i,r)}return}let s=new Set(o.map(e.rowKey));d([...t.value].filter(e=>s.has(e)),o)}),L(()=>[r(),s()],([e])=>{e?d(t.value):v()}),{selectedKeys:t,selectedCount:c,getPageCheckedKeys:p,handlePageSelectionChange:m,selectAll:h,select:g,unselect:_,clearAll:v,getSelectedRows:l,isSelected:e=>t.value.has(e)}}function rn(e,t){return e.filter(e=>typeof e.key!=`string`||e.key.startsWith(`_`)||e.type===`selection`||e.type===`expand`?!1:t?.length?t.includes(e.key):e.visible!==!1)}function an(e,t,n){let r=e[t.key];return t.formatter?Ht(r,e,t.formatter,n):r==null?``:typeof r==`boolean`?r?`是`:`否`:String(r)}function on(e,t,n){let r=n&&/^[=+\-@\t\r]/.test(e)?`'${e}`:e;return r.includes(t)||r.includes(`"`)||r.includes(`
|
|
1
|
+
import{t as e}from"./density.js";import{t}from"./useComponentLocale.js";import{t as n}from"./feedback.js";import{t as r}from"./C_Icon2.js";import{t as i}from"./export-helper.js";import{t as a}from"./C_Loading2.js";import{t as o}from"./useActionTask.js";import{t as s}from"./C_ActionBar2.js";import{a as c,t as l}from"./data.js";import{i as u}from"./formValidation.js";import{Fragment as d,computed as f,createBlock as p,createCommentVNode as m,createElementBlock as h,createElementVNode as g,createSlots as _,createTextVNode as v,createVNode as y,defineAsyncComponent as b,defineComponent as x,getCurrentInstance as S,getCurrentScope as C,h as w,inject as T,isRef as E,mergeProps as ee,nextTick as D,normalizeClass as te,normalizeStyle as O,onBeforeUnmount as ne,onMounted as re,onScopeDispose as ie,openBlock as k,reactive as A,ref as j,renderList as ae,renderSlot as oe,resolveDynamicComponent as se,shallowReactive as M,shallowRef as N,toDisplayString as P,toValue as F,unref as I,useAttrs as ce,watch as L,withCtx as R}from"vue";import{NButton as z,NButtonGroup as le,NCheckbox as B,NDataTable as ue,NDrawer as de,NDrawerContent as fe,NDropdown as pe,NInput as me,NInputNumber as V,NModal as he,NPagination as ge,NSelect as _e,NSpace as ve,NSpin as ye,NSwitch as be,NTag as xe,NText as H,NTooltip as U}from"naive-ui";const Se={editable:!1,editMode:`none`,showRowActions:!1,modalTitle:`编辑数据`,modalWidth:600,onEditSave:void 0,onEditCancel:void 0,onEditError:void 0},Ce=e=>{if(e===!1||e===void 0)return Se;if(typeof e==`string`)return Ce({mode:e});if(e===!0)return{editable:!0,editMode:`modal`,showRowActions:!0,modalTitle:`编辑数据`,modalWidth:600,onEditSave:void 0,onEditCancel:void 0,onEditError:void 0};let t=e.enabled!==!1&&e.mode!==`none`;return{editable:t,editMode:e.mode||`modal`,showRowActions:t&&e.showRowActions!==!1,modalTitle:e.modalTitle||`编辑数据`,modalWidth:e.modalWidth||600,onEditSave:e.onSave,onEditCancel:e.onCancel,onEditError:e.onError}},we=e=>e?e===!0?{expandable:!0,defaultExpandedKeys:void 0,onLoadExpandData:void 0,onExpandError:void 0,renderExpandContent:void 0,rowExpandable:void 0}:{expandable:e.enabled!==!1,defaultExpandedKeys:e.defaultExpandedKeys,onLoadExpandData:e.onLoadData,onExpandError:e.onError,renderExpandContent:e.renderContent,rowExpandable:e.rowExpandable}:{expandable:!1,defaultExpandedKeys:void 0,onLoadExpandData:void 0,onExpandError:void 0,renderExpandContent:void 0,rowExpandable:void 0},Te=e=>{if(!e)return{enableSelection:!1,defaultCheckedKeys:void 0,rowCheckable:void 0,maxSelection:void 0,enableChildSelection:!1,childRowCheckable:void 0,enableParentChildLink:!1,parentChildLinkMode:`loose`};if(e===!0)return{enableSelection:!0,defaultCheckedKeys:void 0,rowCheckable:void 0,maxSelection:void 0,enableChildSelection:!1,childRowCheckable:void 0,enableParentChildLink:!1,parentChildLinkMode:`loose`};let t=e.childSelection||{},n=e.parentChildLink||{};return{enableSelection:e.enabled!==!1,defaultCheckedKeys:e.defaultCheckedKeys,rowCheckable:e.rowCheckable,maxSelection:e.maxSelection,enableChildSelection:t.enabled||!1,childRowCheckable:t.childRowCheckable,enableParentChildLink:n.enabled||!1,parentChildLinkMode:n.mode||`loose`}},W=(t,n)=>{let r={enabled:!0,page:1,pageSize:10,showSizePicker:!0,showQuickJumper:!0,pageSizes:[10,20,50,100],simple:!1,size:n?e(n).size:`medium`};return t===!1?{pagination:null}:t===!0||t===void 0?{pagination:r}:{pagination:{...r,...t}}},Ee=e=>e?e===!0?{dynamicRows:{enableRadioSelection:!0,enableAdd:!0,enableInsert:!0,enableDelete:!0,enableCopy:!0,enableMove:!0,enablePrint:!0}}:{dynamicRows:e}:{dynamicRows:void 0},De={striped:!0,bordered:!0,singleLine:!0,size:`medium`,maxHeight:void 0,scrollX:void 0,columnWidth:180};function Oe(t,n){let{size:r}=e(n);return t?{striped:t.striped??De.striped,bordered:t.bordered??De.bordered,singleLine:t.singleLine??De.singleLine,size:t.size??r,maxHeight:t.maxHeight,scrollX:t.scrollX,columnWidth:t.columnWidth??De.columnWidth}:{...De,size:r}}const ke=(t,n)=>({showToolbar:t?.show!==!1,enableColumnSettings:t?.columnSettings!==!1,toolbarActions:t?.actions??[],toolbarRightActions:t?.rightActions??[],toolbarActionBarConfig:{...n?{size:e(n).size,compact:n===`compact`}:{},...t?.actionBar}}),Ae=e=>e?e===!0?{virtualScroll:!0,virtualItemHeight:34,virtualMaxHeight:600}:{virtualScroll:e.enabled!==!1,virtualItemHeight:e.itemHeight??34,virtualMaxHeight:e.maxHeight??600}:{virtualScroll:!1,virtualItemHeight:34,virtualMaxHeight:600},je=e=>e?{summaryPosition:e.position??`bottom`,summaryRender:e.render}:{summaryPosition:void 0,summaryRender:void 0},Me=e=>e?e===!0?{enableColumnDrag:!0,columnDragHandleClass:void 0,columnDragAnimationDuration:150}:{enableColumnDrag:e.enabled!==!1,columnDragHandleClass:e.handleClass,columnDragAnimationDuration:e.animationDuration??150}:{enableColumnDrag:!1,columnDragHandleClass:void 0,columnDragAnimationDuration:150},Ne=e=>e?e===!0?{treeEnabled:!0,treeChildrenKey:`children`,treeIndent:16,treeDefaultExpandAll:!1}:{treeEnabled:e.enabled!==!1,treeChildrenKey:e.childrenKey??`children`,treeIndent:e.indent??16,treeDefaultExpandAll:e.defaultExpandAll??!1}:{treeEnabled:!1,treeChildrenKey:`children`,treeIndent:16,treeDefaultExpandAll:!1},Pe=e=>e?e===!0?{rowDrag:{enabled:!0}}:{rowDrag:e.enabled===!1?void 0:e}:{rowDrag:void 0},Fe=e=>e?e===!0?{crossPageSelection:{enabled:!0}}:{crossPageSelection:e.enabled===!1?void 0:e}:{crossPageSelection:void 0};function Ie(t={}){return{density:t.density,controlSize:t.density?e(t.density).size:`small`,feedback:t.feedback,locale:t.locale,...Ce(t.edit),...we(t.expand),...Te(t.selection),...W(t.pagination,t.density),...Ee(t.dynamicRows),...Oe(t.display,t.density),...ke(t.toolbar,t.density),...Ae(t.virtualScroll),...je(t.summary),...Me(t.columnDrag),...Ne(t.tree),...Pe(t.rowDrag),...Fe(t.crossPageSelection),exportConfig:t.export,persistKey:t.persistKey,formatterConfig:t.formatterConfig,error:t.error,batchActions:t.batchActions}}const Le=e=>({isNonEditable:t=>!e.editable||t.editable===!1||e.editMode===`none`,isRowEditMode:()=>[`row`,`both`].includes(e.editMode),isCellEditMode:()=>[`cell`,`both`].includes(e.editMode)});function G(e){return e.type===void 0&&e.editable!==!1&&e.key!==`_actions`&&String(e.key??``).trim().length>0}function K(e,t){if(!G(e))return[];let n=[...e.editProps?.rules??[]];return e.required&&!n.some(e=>e.required)&&n.unshift(u(e.title,`${e.title}不能为空`)),n.map(n=>{let r={...n};if(r.type===void 0&&(e.editType===`number`&&(r.type=`number`),e.editType===`switch`&&(r.type=`boolean`)),n.validator){let e=n.validator;r.validator=(n,r,i,a,o)=>{let s=!1;try{let c=e(n,r,e=>{s=!0,i(e)},t?.()??a,o);return c===void 0&&!s?!0:c}catch(e){return e instanceof Error?e:Error(String(e))}}}if(n.asyncValidator){let e=n.asyncValidator;r.asyncValidator=(n,r,i,a,o)=>new Promise((i,s)=>{e(n,r,e=>{e?s(e):i()},t?.()??a,o)?.then(i,s)})}return r})}async function Re(e,t,n,r,i=e.key??`value`){if(e.level===`warning`)return null;let a=`${n}校验失败`;try{let n=(await import(`async-validator`)).default;return await new(`default`in n?n.default:n)({[i]:e}).validate({...r,[i]:t},{first:!0,suppressWarning:!0,suppressValidatorError:!0}),null}catch(e){return(e?.errors)?.[0]?.message??(e instanceof Error?e.message:a)}}function ze(e){let t=0,n=j(null),r=j({}),i=j(!1),a=j([]),o=()=>{t++,n.value=null,r.value={},a.value=[]},s=e=>n.value===e,c=t=>{let n=e.data();return!n||!Array.isArray(n)?null:n.find(n=>e.rowKey(n)===t)},u=e=>{let t=c(e);return!t||i.value?!1:(n.value=e,r.value={[String(e)]:l(t)},a.value=[],!0)},d=async()=>{if(n.value===null||i.value)return;let t=e.data();if(!t||!Array.isArray(t))return;let a=t.findIndex(t=>e.rowKey(t)===n.value);i.value=!0;try{a>-1&&await e.onCancel?.(t[a],a),n.value=null,r.value={}}finally{i.value=!1}},f=async(r,i)=>{let o=t,s=(e.columns?.()||[]).filter(G).map(async e=>{let t=String(e.key);if(!t)return null;let n=(await Promise.all(K(e).map(n=>Re(n,r[t],e.title||t,r,t)))).find(Boolean);return n?{field:t,message:n}:null}),c=(await Promise.all(s)).filter(Boolean);return t===o?(n.value===i&&(a.value=c),c.length===0):!1},p=async()=>{let e=n.value;if(e===null)return!0;let t=r.value[String(e)];return t?f(l(t),e):!0},m=async()=>{let a=n.value;if(a===null||i.value)return;let o=r.value[String(a)];if(!o)return;let s=l(o),u=t,d=c(a);i.value=!0;try{if(!await f(s,a)||t!==u)return;let i=e.data(),o=i.findIndex(t=>e.rowKey(t)===a);return o===-1||i[o]!==d||(await e.onSave?.(s,o,a),t!==u)?void 0:(n.value=null,r.value={},{updatedData:s,rowIndex:o})}finally{i.value=!1}},h=e=>{if(n.value===e)return r.value[String(e)]};return{editingRowKey:n,editingData:r,isSaving:i,isEditingRow:s,startEditRow:u,cancelEditRow:d,saveEditRow:m,validateRow:p,validationErrors:a,getEditingRowData:h,updateEditingRowData:(e,t,n)=>{let r=h(e);!r||i.value||(r[t]=l(n))},findRowData:c,invalidate:o}}function Be(e,t){let n=String(e);return`${typeof e}:${n.length}:${n}|${t.length}:${t}`}function Ve(e){let t=0,n=j({rowKey:null,columnKey:null}),r=j({}),i=j(!1),a=j(null),o=()=>{t++,n.value={rowKey:null,columnKey:null},r.value={},a.value=null},s=(e,t)=>n.value.rowKey===e&&n.value.columnKey===t,c=t=>{let n=e.data();return!n||!Array.isArray(n)?null:n.find(n=>e.rowKey(n)===t)},u=(e,t)=>{let o=c(e);return!o||!t||i.value?!1:(n.value={rowKey:e,columnKey:t},r.value={[Be(e,t)]:l(o[t])},a.value=null,!0)},d=t=>(e.columns?.()??[]).find(e=>String(e.key)===t),f=async()=>{let e=t;a.value=null;let{rowKey:i,columnKey:o}=n.value;if(i===null||o===null)return!0;let s=d(o);if(!s)return!0;let l=Be(i,o),u=r.value[l],f=s.title||o,p={...c(i),[o]:u},m=await Promise.all(K(s).map(e=>Re(e,u,f,p,o)));if(t!==e)return!1;let h=m.find(Boolean);return h?(a.value=h,!1):!0};return{editingCell:n,editingData:r,isSaving:i,isEditingCell:s,startEditCell:u,saveEditCell:async()=>{let{rowKey:a,columnKey:o}=n.value;if(a===null||o===null||i.value)return;let s=Be(a,o),u=l(r.value[s]),d=t,p=c(a);i.value=!0;try{if(!await f()||t!==d)return;let i=e.data(),s=i.findIndex(t=>e.rowKey(t)===a);if(s===-1||i[s]!==p)return;let c={...i[s],[o]:u};return await e.onSave?.(l(c),s,o,a),t===d?(n.value={rowKey:null,columnKey:null},r.value={},{updatedData:c,rowIndex:s,columnKey:o}):void 0}finally{i.value=!1}},cancelEditCell:()=>{let{rowKey:e,columnKey:t}=n.value;i.value||(e!==null&&t!==null&&delete r.value[Be(e,t)],n.value={rowKey:null,columnKey:null},a.value=null)},validateCell:f,cellValidationError:a,getEditingCellValue:(e,t)=>r.value[Be(e,t)],updateEditingCellValue:(e,t,n)=>{!s(e,t)||i.value||(r.value[Be(e,t)]=l(n))},findRowData:c,invalidate:o}}function He(e){let t=0,n=j(!1),r=j(!1),i=j(null),a=j({}),o=()=>{t++,n.value=!1,i.value=null,a.value={}},s=f(()=>{if(i.value===null)return-1;let t=e.data();return Array.isArray(t)?t.findIndex(t=>e.rowKey(t)===i.value):-1});return{isModalVisible:n,isSaving:r,editingData:a,editingRowKey:i,editingRowIndex:s,startEdit:(o,s)=>{if(r.value)return!1;let c=e.data();if(!Array.isArray(c))return!1;let u=c.findIndex(t=>e.rowKey(t)===o);return u===-1?!1:(t++,i.value=o,a.value=l(s??c[u]),n.value=!0,!0)},saveEdit:async o=>{if(r.value||i.value===null)return;let c=s.value;if(c===-1)return;let u=i.value,d=t,f=l(o??a.value);r.value=!0;try{return await e.onSave?.(f,c,u),t===d?(n.value=!1,i.value=null,a.value={},{updatedData:f,rowIndex:c}):void 0}finally{r.value=!1}},cancelEdit:async()=>{if(r.value)return!1;let o=t,c=s.value;try{if(i.value!==null&&c>-1){let t=e.data();t[c]&&await e.onCancel?.(t[c],c)}}finally{t===o&&(n.value=!1,i.value=null,a.value={})}return!0},updateEditingData:e=>r.value?!1:(a.value=l(e),!0),resetEditingState:()=>r.value?!1:(i.value=null,a.value={},!0),isEditingRow:e=>i.value===e&&n.value,getEditingRowData:e=>i.value===e?a.value:null,invalidate:o}}function Ue(e,t){try{let n=t(e);if(typeof n==`string`&&n!==``)return JSON.stringify([`string`,n]);if(typeof n==`number`&&Number.isFinite(n))return JSON.stringify([`number`,n])}catch{}}function We(e,t){if(!t)return e;let n=[],r=new WeakSet,i=[];for(let t=e.length-1;t>=0;t--)i.push(e[t]);for(;i.length;){let e=i.pop();if(r.has(e))continue;r.add(e),n.push(e);let a=e[t];if(Array.isArray(a))for(let e=a.length-1;e>=0;e--){let t=a[e];t&&typeof t==`object`&&i.push(t)}}return n}function Ge(e,t,n,r){let i=new WeakSet,a=e=>{if(e===t)return n;if(!r||i.has(e))return e;i.add(e);let o=e[r];if(!Array.isArray(o))return e;let s=o.map(e=>e&&typeof e==`object`?a(e):e);return s.some((e,t)=>e!==o[t])?{...e,[r]:s}:e};return e.map(a)}function Ke(e){return e}function q(e){return e}function qe(e,t){let n=new Map,r=[];return e.forEach((e,i)=>{let a;try{a=t(e)}catch(t){r.push({type:`error`,row:e,index:i,cause:t});return}if(a==null||a===``){r.push({type:`missing`,row:e,index:i});return}let o=n.get(a);if(o!==void 0){r.push({type:`duplicate`,row:e,index:i,key:a,firstIndex:o});return}n.set(a,i)}),r}function Je(e,t,n){let r=new Set,i=new WeakSet,a=[...e],o=e=>{try{return n(e)}catch{return}},s=e=>e!=null&&e!==``;for(;a.length;){let e=a.pop();if(i.has(e))continue;i.add(e);let n=e[t];if(!Array.isArray(n)||n.length===0)continue;let c=o(e);s(c)&&r.add(c);for(let e of n)e&&typeof e==`object`&&a.push(e)}return[...r]}const J=e=>({expandedKeys:j([...e.defaultExpandedKeys||[]]),expandDataMap:j(new Map),loadingMap:j(new Map),errorMap:j(new Map),checkedKeys:e.enableSelection?j([...e.defaultCheckedKeys||[]]):j([]),childSelections:(e.enableChildSelection,j(new Map))}),Ye=e=>{let t=f(()=>We(I(e.data),e.childrenKey)),n=e.rowKey,r=f(()=>{let e=new Map;for(let r of t.value){let t=n(r);e.has(t)||e.set(t,r)}return e});return{data:t,getRowKey:n,getChildRowKey:e.childRowKey||(e=>e.id),findRow:e=>r.value.get(e),isRowExpandable:t=>e.rowExpandable?.(t)??!0,isRowCheckable:t=>e.rowCheckable?.(t)??!0,isChildRowCheckable:(t,n)=>e.childRowCheckable?.(t,n)??!0}},Xe=(e,t,n)=>{let r=new Map,i=new Map,a=!1,o=0,s=new Set(n.defaultExpandedKeys||[]),c=t=>{let n=t===void 0?new Set([...e.expandDataMap.value.keys(),...e.errorMap.value.keys(),...r.keys()]):new Set([t]);for(let t of n)r.delete(t),i.delete(t),e.expandDataMap.value.delete(t),e.errorMap.value.delete(t),e.loadingMap.value.delete(t),e.childSelections.value.delete(t)},l=async o=>{if(!n.onLoadData||a)return[];let s=t.getRowKey(o);if(e.expandDataMap.value.has(s))return e.expandDataMap.value.get(s);if(e.errorMap.value.has(s))return[];let c=r.get(s);if(c)return c.promise;let l={};i.set(s,o),e.loadingMap.value.set(s,!0);let u=()=>!a&&r.get(s)?.token===l,d,f=new Promise(e=>{d=e});return r.set(s,{token:l,promise:f}),(async()=>{try{let t=await n.onLoadData(o),r=Array.isArray(t)?t:[];return u()?(e.expandDataMap.value.set(s,r),n.enableChildSelection&&!e.childSelections.value.has(s)&&e.childSelections.value.set(s,[]),r):[]}catch(t){return u()&&(e.errorMap.value.set(s,t),n.onError?.(t,o)),[]}finally{u()&&(r.delete(s),e.loadingMap.value.set(s,!1))}})().then(d,()=>d([])),f};return L(t.data,n=>{if(o+=1,i.size===0&&e.expandedKeys.value.length===0&&s.size===0)return;let r=new Map(n.map(e=>[t.getRowKey(e),e]));for(let[t,n]of i){let i=r.get(t);i!==n&&(c(t),i&&e.expandedKeys.value.includes(t)&&l(i),i||s.delete(t))}s=new Set([...s].filter(e=>r.has(e))),e.expandedKeys.value=e.expandedKeys.value.filter(e=>r.has(e))}),C()&&ie(()=>{a=!0,o+=1,c()}),{loadData:l,retryExpand:async e=>{let n=t.findRow(e);n&&(c(e),await l(n))},invalidateExpand:c,handleRowExpand:async(r,i)=>{let c=t.getRowKey(r);if(o+=1,i){if(s.add(c),e.expandedKeys.value.includes(c)||(e.expandedKeys.value=[...e.expandedKeys.value,c]),await l(r),a||t.findRow(c)!==r||!s.has(c))return}else s.delete(c),e.expandedKeys.value=e.expandedKeys.value.filter(e=>e!==c);n.onExpandChange?.(e.expandedKeys.value,r,i)},expandAll:async()=>{if(a)return;let r=++o,i=t.data.value.filter(t.isRowExpandable);s=new Set(i.map(t.getRowKey)),e.expandedKeys.value=[...s],await Promise.allSettled(i.map(l)),!(a||r!==o)&&(e.expandedKeys.value=i.map(t.getRowKey),n.onExpandChange?.(e.expandedKeys.value))},collapseAll:()=>{o+=1,s.clear(),e.expandedKeys.value=[],e.childSelections.value.clear(),n.onExpandChange?.(e.expandedKeys.value)},handleExpandChange:async r=>{let i=++o;s=new Set(r);let c=new Set(e.expandedKeys.value),u=new Set(r),d=[...u].filter(e=>!c.has(e)),f=e.expandedKeys.value.filter(e=>!u.has(e));for(let t of f)e.childSelections.value.delete(t);e.expandedKeys.value=[...r],await Promise.all(d.map(async e=>{let n=t.findRow(e);n&&await l(n)})),!(a||i!==o)&&n.onExpandChange?.(r)}}},Ze=(e,t,n)=>{let r=[],i=[],a=(t,a,o=!1)=>{let s=t.length===r.length&&t.every((e,t)=>e===r[t]),c=a.length===i.length&&a.every((e,t)=>e===i[t]);!o&&s&&c||(r=[...t],i=[...a],n.onSelectionChange?.(t,a,e.childSelections.value))},o=f(()=>t.data.value.filter(t.isRowCheckable)),s=f(()=>e.checkedKeys.value.length),c=(r,i=!1)=>{let s=new Set(o.value.map(e=>t.getRowKey(e))),c=[...new Set(r)].filter(e=>s.has(e)),l=n.maxSelection?c.slice(0,Math.max(0,n.maxSelection)):c;e.checkedKeys.value=l;let u=new Set(l);a(l,t.data.value.filter(e=>u.has(t.getRowKey(e))),i)},l=(e,t=!1)=>{n.enableSelection&&c(e,t)};return{commitSelection:c,selectAll:()=>{n.enableSelection&&l(o.value.map(t.getRowKey))},clearSelection:()=>{l([])},handleSelectionChange:l,selectedRowsCount:s,selectableRows:o}},Qe=(e,t,n)=>{let r=()=>!!(t.enableParentChildLink&&t.enableSelection&&t.enableChildSelection);return{handleParentChildLink:(i,a,o)=>{if(!r())return;let s=t.parentChildLinkMode===`strict`?a.length===o&&o>0:a.length>0,c=[...e.checkedKeys.value],l=c.includes(i),u=s&&!l?[...c,i]:!s&&l?c.filter(e=>e!==i):c;n.handleSelectionChange(u,!0)},isLinkEnabled:r}},$e=(e,t,n,r,i)=>({totalChildSelections:f(()=>i.enableChildSelection?Array.from(e.childSelections.value.values()).reduce((e,t)=>e+t.length,0):0),clearAllSelections:()=>{e.childSelections.value.clear(),r.commitSelection([],!0)},handleChildSelectionChange:(r,a)=>{if(!i.enableChildSelection)return;let o=t.findRow(r);if(!o)return;let s=(e.expandDataMap.value.get(r)||[]).filter(e=>t.isChildRowCheckable(e,o)),c=new Set(s.map(t.getChildRowKey)),l=[...new Set(a)].filter(e=>c.has(e)),u=e.childSelections.value.get(r)??[];if(u.length===l.length&&u.every((e,t)=>e===l[t]))return;e.childSelections.value.set(r,l);let d=new Set(l),f=s.filter(e=>d.has(t.getChildRowKey(e)));n.isLinkEnabled()&&n.handleParentChildLink(r,l,s.length),i.onChildSelectionChange?.(r,l,f)}}),et=(e,t,n,r,i)=>{if(!i.enableChildSelection)return;let a=t.childSelections.value.get(e)||[],o=t.expandDataMap.value.get(e)||[],s=n.findRow(e);if(!s)return;let c=o.filter(e=>n.isChildRowCheckable(e,s));return{selectedKeys:a,isAllChecked:c.length>0&&c.every(e=>a.includes(n.getChildRowKey(e))),selectAll:()=>{let t=c.map(e=>n.getChildRowKey(e));r.handleChildSelectionChange(e,t)},clearAll:()=>{r.handleChildSelectionChange(e,[])}}},tt=e=>w(`div`,{class:`flex justify-center items-center py-8`},e?[e()]:[w(ye,{size:`small`}),w(`span`,{class:`ml-2 text-gray-500`},`加载中...`)]),nt=()=>w(`div`,{class:`text-center py-8 text-gray-400`},`暂无数据`),rt=e=>{if(!e.length)return[];let t=e[0];return!t||typeof t!=`object`?[]:[{title:`序号`,key:`_index`,width:60,align:`center`,titleAlign:`center`,render:(e,t)=>t+1},...Object.keys(t).filter(e=>![`id`,`key`].includes(e)).map(e=>({key:e,title:e.charAt(0).toUpperCase()+e.slice(1),width:120,align:`center`,titleAlign:`center`,ellipsis:{tooltip:!0}}))]},Y=(e,t,n,r,i,a)=>{let o=[];return a.enableChildSelection&&o.push({type:`selection`,multiple:!0,disabled:t=>{let n=r.findRow(e);return!n||!r.isChildRowCheckable(t,n)}}),o.push(...rt(t)),w(`div`,{class:`p-4 bg-gray-50`},[w(`div`,{class:`mb-2 text-sm text-gray-600`},`详细信息 (${t.length} 条)`),w(ue,{data:t,columns:o,size:`small`,striped:!0,checkedRowKeys:n?.selectedKeys||[],rowKey:e=>r.getChildRowKey(e),onUpdateCheckedRowKeys:a.enableChildSelection?t=>{i.handleChildSelectionChange(e,t)}:void 0})])},it=(e,n,r,i,a)=>{let{t:o}=t(()=>a.locale),s=t=>{let s=n.getRowKey(t),c=e.expandDataMap.value.get(s)||[],l=e.loadingMap.value.get(s)||!1,u=et(s,e,n,r,a);return a.renderContent?a.renderContent(t,c,l,u):l?tt(a.renderLoading):e.errorMap.value.has(s)?w(`div`,{class:`c-table-expand-error`,role:`alert`},[w(`span`,o(`table.loadFailed`)),w(z,{size:`small`,onClick:()=>i.retryExpand(s)},()=>o(`common.retry`))]):c.length?Y(s,c,u,n,r,a):nt()};return{getTableColumns:e=>e.map(e=>{if(e.type===`selection`&&a.enableSelection){let t=`disabled`in e?e.disabled:void 0,r=`multiple`in e?e.multiple:void 0;return{...e,type:`selection`,disabled:e=>!!t?.(e)||!n.isRowCheckable(e),multiple:a.maxSelection===1?!1:r??!0}}return e.type===`expand`&&(a.onLoadData||a.renderContent)?{...e,type:`expand`,expandable:t=>n.isRowExpandable(t)&&(!(`expandable`in e)||e.expandable?.(t)!==!1),renderExpand:s}:e})}};function at(e){let t=J(e),n=Ye(e),r=Xe(t,n,e),i=Ze(t,n,e),a=$e(t,n,Qe(t,e,i),i,e),o=it(t,n,a,r,e);return L(n.data,()=>{!e.enableSelection||t.checkedKeys.value.length===0||i.handleSelectionChange(t.checkedKeys.value)}),e.defaultExpandedKeys?.length&&D(async()=>{let i=e.defaultExpandedKeys||[];if(i.length===0)return;let a=i.map(async e=>{let i=n.findRow(e);i&&!t.expandDataMap.value.has(e)&&await r.loadData(i)});await Promise.allSettled(a)}),{expandedKeys:t.expandedKeys,checkedKeys:t.checkedKeys,childSelections:t.childSelections,selectedRowsCount:i.selectedRowsCount,totalChildSelections:a.totalChildSelections,expandAll:r.expandAll,collapseAll:r.collapseAll,expandRow:async e=>{if(t.expandedKeys.value.includes(e)&&!t.loadingMap.value.get(e))return;let i=n.findRow(e);i&&await r.handleRowExpand(i,!0)},handleExpandChange:r.handleExpandChange,selectAll:i.selectAll,clearSelection:i.clearSelection,clearAllSelections:a.clearAllSelections,handleSelectionChange:i.handleSelectionChange,getTableColumns:o.getTableColumns,expandDataMap:t.expandDataMap,loadingMap:t.loadingMap,errorMap:t.errorMap,retryExpand:r.retryExpand,invalidateExpand:r.invalidateExpand}}const ot={text:`Robot Admin`,textSize:16,textColor:`rgba(128, 128, 128, 0.3)`,font:`Microsoft JhengHei`,opacity:.3,rotate:-20,position:`repeat`,xGap:200,yGap:120},st={scale:1,quality:.92,format:`png`,backgroundColor:`#ffffff`,logging:!1,allowTaint:!0,useCORS:!0},ct={orientation:`portrait`,paperSize:`A4`,margin:`10mm 10mm 0 10mm`,style:`@page { margin: 10mm 10mm 0 10mm; } @media print { body { margin: 0; } }`,header:``,footer:``,showModal:!1,modalMessage:`正在准备打印...`,onLoadingStart:()=>{},onLoadingEnd:()=>{},onPrintDialogClose:()=>{}};function lt(e,t,n,r){e.save(),e.translate(t/2,n/2),e.rotate(r.rotate*Math.PI/180),e.fillText(r.text,0,0),e.restore()}function ut(e,t,n,r){[[50,50],[t-50,50],[50,n-50],[t-50,n-50]].forEach(([t,n])=>{e.save(),e.translate(t,n),e.rotate(r.rotate*Math.PI/180),e.fillText(r.text,0,0),e.restore()})}function X(e,t,n,r){let i=Math.sqrt(t*t+n*n),a=t/2,o=n/2;e.save(),e.translate(a,o),e.rotate(Math.atan2(n,t));let s=Math.floor(i/r.xGap),c=-i/2;for(let t=0;t<=s;t++){let n=c+t*r.xGap;e.fillText(r.text,n,0)}e.restore()}function dt(e,t,n,r){let i=Math.ceil(t/r.xGap)+1,a=Math.ceil(n/r.yGap)+1;for(let t=0;t<a;t++)for(let n=0;n<i;n++){let i=n*r.xGap+r.xGap/2,a=t*r.yGap+r.yGap/2;e.save(),e.translate(i,a),e.rotate(r.rotate*Math.PI/180),e.fillText(r.text,0,0),e.restore()}}function ft(e,t){let n=e.getContext(`2d`);if(!n)return e;let r={...ot,...t},{width:i,height:a}=e;n.save(),n.globalAlpha=r.opacity,n.font=`${r.textSize}px ${r.font}`,n.fillStyle=r.textColor,n.textAlign=`center`,n.textBaseline=`middle`;let o={center:lt,corner:ut,diagonal:X,repeat:dt};return(o[r.position]||o.repeat)(n,i,a,r),n.restore(),e}async function pt(e,t={}){if(typeof window>`u`)throw Error(`截图功能仅支持浏览器环境`);let n={...st,...t},{default:r}=await import(`html2canvas`);return await r(e,{logging:n.logging,scale:n.scale,allowTaint:n.allowTaint,useCORS:n.useCORS,backgroundColor:n.backgroundColor,onclone:e=>{let t=e.body;t.style.transform=`scale(1)`}})}function Z(e,t=`png`,n=.92){let r=`image/${t}`;return t===`png`?e.toDataURL(r):e.toDataURL(r,n)}function mt(e,t=`screenshot-${new Date().toISOString().slice(0,10)}.png`,n=`png`){let r=Z(e,n),i=document.createElement(`a`);i.download=t,i.href=r,document.body.appendChild(i),i.click(),document.body.removeChild(i)}async function ht(e,t={}){if(typeof window>`u`)throw Error(`打印功能仅支持浏览器环境`);let n={...ct,...t},{default:r}=await import(`print-js`);return new Promise((t,i)=>{try{n.onLoadingStart?.(),r({printable:e,type:`image`,style:n.style,showModal:n.showModal,modalMessage:n.modalMessage,onLoadingEnd:n.onLoadingEnd,onPrintDialogClose:()=>{n.onPrintDialogClose?.(),t()}})}catch(e){i(e)}})}function gt(e,t,n){let r=0,i=0;e.forEach(e=>{let{width:n,height:a}=e;t===`horizontal`?(r+=n,i=Math.max(i,a)):(r=Math.max(r,n),i+=a)});let a=(e.length-1)*n;return t===`horizontal`?r+=a:i+=a,{totalWidth:r,totalHeight:i}}function _t(e,t){let{orientation:n,spacing:r,backgroundColor:i,totalWidth:a,totalHeight:o}=t,s=document.createElement(`canvas`);s.width=a,s.height=o;let c=s.getContext(`2d`);if(!c)throw Error(`无法创建画布上下文`);c.fillStyle=i,c.fillRect(0,0,a,o);let l=0,u=0;return e.forEach(e=>{c.drawImage(e,l,u),n===`horizontal`?l+=e.width+r:u+=e.height+r}),s}function vt(e,t,n){return e.length?{orientation:t.orientation||`vertical`,spacing:t.spacing||20,backgroundColor:t.backgroundColor||`#ffffff`}:(n.warning(`没有要打印的元素`),null)}async function yt(e,t,n,r){let{orientation:i,spacing:a,backgroundColor:o}=n;r(10);let s=await Promise.all(e.map(e=>pt(e,t.capture)));r(50);let{totalWidth:c,totalHeight:l}=gt(s,i,a);return r(60),_t(s,{orientation:i,spacing:a,backgroundColor:o,totalWidth:c,totalHeight:l})}async function Q(e,t,n,r,i){r(70),t.watermark&&ft(e,t.watermark),r(90),await ht(Z(e,t.capture?.format,t.capture?.quality),t.print),r(100),i.success(`合并打印完成,共合并 ${n} 个元素`)}function bt(){let e=n(),t=j(!1),r=j(0),i=e=>{r.value=Math.max(0,Math.min(100,e))},a=async(e,t={})=>{try{i(0),i(30);let n=await pt(e,t.capture);i(60),t.watermark&&ft(n,t.watermark),i(90);let r=Z(n,t.capture?.format||`png`,t.capture?.quality||.92);return i(100),r}catch(e){throw Error(`截图失败: ${e instanceof Error?e.message:`未知错误`}`)}},o=async(n,r={})=>{t.value=!0,i(0);try{await D();let t=await a(n,r);i(95),await ht(t,r.print),i(100),e.success(`打印完成`)}catch(t){throw e.error(`打印失败: ${t instanceof Error?t.message:`未知错误`}`,t),t}finally{t.value=!1,i(0)}},s=async(n,r,i={})=>{t.value=!0;try{await D();let t=await pt(n,i.capture);i.watermark&&ft(t,i.watermark);let a=i.capture?.format||`png`,o=`screenshot-${new Date().toISOString().slice(0,19).replace(/:/g,`-`)}.${a}`;mt(t,r||o,a),e.success(`下载完成`)}catch(t){throw e.error(`下载失败`,t),t}finally{t.value=!1}},c=async(e,t=`Robot Admin`)=>o(e,{watermark:{text:t,position:`repeat`,textColor:`rgba(128, 128, 128, 0.3)`}}),l=async(e,t={})=>{let n=e.length;i(10);let r=e.map(async(e,r)=>{let o=await a(e,t);return i(10+(r+1)/n*70),o});return Promise.all(r)},u=async(e,t={})=>{await e.reduce(async(n,r,i)=>{await n,await ht(r,t),i<e.length-1&&await new Promise(e=>{setTimeout(()=>e(),1e3)})},Promise.resolve())};return{loading:t,progress:r,captureWithWatermark:a,printWithWatermark:o,downloadScreenshot:s,quickPrint:c,batchCapture:l,batchPrint:async(n,r={})=>{if(!n.length){e.warning(`没有要打印的元素`);return}t.value=!0;try{i(0);let t=await l(n,r);i(80),await u(t,r.print),i(100),e.success(`批量打印完成,共 ${n.length} 个元素`)}catch(t){throw e.error(`批量打印失败`,t),t}finally{t.value=!1,i(0)}},mergePrint:async(n,r={},a={})=>{let o=vt(n,a,e);if(o){t.value=!0;try{await Q(await yt(n,r,o,i),r,n.length,i,e)}catch(t){throw e.error(`合并打印失败`,t),t}finally{t.value=!1,i(0)}}},createPreset:(e,t)=>({use:e=>o(e,t),download:(e,n)=>s(e,n,t)}),updateProgress:i,utils:{captureElement:pt,drawWatermark:ft,canvasToDataURL:Z,downloadCanvas:mt,printImage:ht}}}const xt={table:{watermark:{text:`Robot Admin - 数据表格`,position:`repeat`,textColor:`rgba(100, 100, 100, 0.25)`,textSize:14,xGap:250,yGap:120},capture:{scale:1.2},print:{orientation:`landscape`,style:`@page { margin: 8mm; } body { font-family: Arial, sans-serif; }`}},form:{watermark:{text:`Robot Admin - 表单数据`,position:`diagonal`,textColor:`rgba(150, 150, 150, 0.2)`,textSize:16},print:{orientation:`portrait`}},report:{watermark:{text:`Robot Admin - 机密报告`,position:`center`,textColor:`rgba(200, 50, 50, 0.15)`,textSize:24},capture:{quality:.95,format:`png`}}};function St(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?`row_${crypto.randomUUID()}`:`row_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}function Ct(e,t){return typeof t==`function`?t(e):Reflect.get(e,t)}function wt(e,t,n){if(e){let r=e(n===void 0?void 0:l(n));if(!r||typeof r!=`object`||Array.isArray(r))return null;let i=l(r);return n&&typeof t==`string`?{...l(n),[t]:Reflect.get(i,t)}:i}return typeof t==`string`?{...n?l(n):{},[t]:St()}:null}function Tt(e,...i){let a=i[0]??{},o={enabled:!0,rowKey:`id`,enableRadioSelection:!0,enableAdd:!0,enableInsert:!0,enableDelete:!0,enableCopy:!0,enableMove:!0,enablePrint:!0,confirmDelete:!0,deleteConfirmText:``,printPreset:`table`,printTargetSelector:`.c-table-wrapper`},s=A({...o,...F(a)});L(()=>F(a),e=>{let t=s;Object.keys(t).forEach(e=>delete t[e]),Object.assign(t,o,e)},{deep:!0});let c=n(()=>s.feedback),{t:l}=t(()=>s.locale),u=`c-table-radio-${St()}`,d=j(null),p=j(!1),m=f(()=>d.value===null?null:e.value.find(e=>Ct(e,s.rowKey)===d.value)||null),h=f(()=>m.value?e.value.findIndex(e=>e===m.value):-1),g=f(()=>h.value>0),_=f(()=>h.value>=0&&h.value<e.value.length-1),{loading:v,progress:y,printWithWatermark:b,downloadScreenshot:x,quickPrint:S}=bt(),T=()=>{if(s.printOptions)return s.printOptions;let e=xt[s.printPreset||`table`];return s.printWatermarkText&&e.watermark?{...e,watermark:{...e.watermark,text:s.printWatermarkText}}:e},E=e=>{s.onRowChange?.(e)},ee=t=>{let n=Ct(t,s.rowKey);return(typeof n==`string`&&n!==``||typeof n==`number`&&Number.isFinite(n))&&!e.value.some(e=>Ct(e,s.rowKey)===n)?!0:(c.warning(l(`table.invalidRowKeys`,{count:1})),!1)},D=e=>{try{let t=wt(s.defaultRowData,s.rowKey,e);if(t)return ee(t)?t:null;c.warning(l(`table.invalidRowKeys`,{count:1}))}catch(t){c.error(l(`table.actionFailed`,{action:l(e?`table.copyRow`:`table.addRow`)}),t)}return null},te=()=>{if(!s.enabled||!s.enableAdd)return;let t=D();t&&(E([...e.value,t]),s.onRowAdd?.(t),c.success(l(`table.addRowSuccess`)))},O=()=>{if(!s.enabled||!s.enableInsert||!m.value){c.warning(l(`table.selectRowFirst`));return}let t=D();if(!t)return;let n=[...e.value];n.splice(h.value+1,0,t),E(n),s.onRowAdd?.(t),c.success(l(`table.insertRowSuccess`))},ne=()=>{if(!s.enabled||!s.enableDelete||!m.value){c.warning(l(`table.selectDeleteRowFirst`));return}s.confirmDelete?p.value=!0:re()},re=()=>{if(!m.value)return;let t=m.value,n=h.value;E(e.value.filter((e,t)=>t!==n)),d.value=null,s.onSelectionChange?.(null,null),s.onRowDelete?.(t,n),c.success(l(`table.deleteRowSuccess`)),p.value=!1},k=()=>{if(!s.enabled||!s.enableCopy||!m.value){c.warning(l(`table.selectCopyRowFirst`));return}let t=m.value,n=D(t);n&&(E([...e.value,n]),s.onRowCopy?.(t,n),c.success(l(`table.copyRowSuccess`)))},ae=()=>{if(!s.enabled||!s.enableMove||!g.value)return;let t=h.value,n=[...e.value],r=n[t];[n[t],n[t-1]]=[n[t-1],n[t]],E(n),s.onRowMove?.(r,t,t-1),c.success(l(`table.moveUpSuccess`))},oe=()=>{if(!s.enabled||!s.enableMove||!_.value)return;let t=h.value,n=[...e.value],r=n[t];[n[t],n[t+1]]=[n[t+1],n[t]],E(n),s.onRowMove?.(r,t,t+1),c.success(l(`table.moveDownSuccess`))},se=t=>{if(!s.enabled)return;let n=e.value.find(e=>Ct(e,s.rowKey)===t);n&&(d.value=t,s.onSelectionChange?.(t,n))},M=()=>{d.value=null,s.onSelectionChange?.(null,null)},P=async e=>{if(!e.value){c.error(l(`table.printTargetMissing`));return}let t=T();await b(e.value,t)};return C()&&ie(()=>{d.value=null,p.value=!1}),{selectedRowKey:d,selectedRowData:m,selectedRowIndex:h,canMoveUp:g,canMoveDown:_,deleteConfirmVisible:p,printLoading:v,printProgress:y,addRow:te,insertRow:O,deleteRow:ne,confirmDelete:re,copyRow:k,moveRowUp:ae,moveRowDown:oe,selectRow:se,clearSelection:M,handlePrint:P,handleDownload:async(e,t)=>{if(!e.value){c.error(l(`table.downloadTargetMissing`));return}let n=T();await x(e.value,t,n)},handleQuickPrint:async e=>{if(!e.value){c.error(l(`table.printTargetMissing`));return}let t=s.printWatermarkText||`Robot Admin`;await S(e.value,t)},enhanceColumns:e=>{if(!s.enabled)return e;let t=[...e];return s.enabled&&s.enableRadioSelection&&t.unshift({key:`_radio_selection`,title:l(`common.select`),width:80,align:`center`,editable:!1,render:e=>{let t=Ct(e,s.rowKey);return w(`div`,{class:`flex justify-center`},[w(`input`,{type:`radio`,name:u,"aria-label":l(`common.select`),checked:d.value===t,class:`cursor-pointer accent-blue-500 scale-110`,onChange:e=>{e.target.checked&&se(t)}})])}}),t},renderToolbar:e=>{if(!s.enabled)return null;let t=[];s.enablePrint&&t.push(w(z,{loading:v.value,type:`primary`,ghost:!0,onClick:async()=>{try{let t=e??document.querySelector(s.printTargetSelector);t?await P(N(t)):c.warning(l(`table.printTargetMissing`))}catch(e){c.error(l(`table.printTargetMissing`),e)}}},{icon:()=>w(r,{name:`mdi:printer`,title:l(`common.print`)}),default:()=>l(`common.print`)}));let n=[];return s.enableAdd&&n.push(w(z,{onClick:te,type:`primary`},{icon:()=>w(r,{name:`mdi:plus`,title:l(`table.addRow`)}),default:()=>l(`table.addRow`)})),s.enableInsert&&n.push(w(U,{disabled:!!m.value},{trigger:()=>w(z,{onClick:O,disabled:!m.value,type:`primary`,ghost:!0},{icon:()=>w(r,{name:`mdi:table-row-plus-after`,title:l(`table.insertRow`)}),default:()=>l(`table.insertRow`)}),default:()=>l(`table.selectRowFirst`)})),s.enableDelete&&n.push(w(U,{disabled:!!m.value},{trigger:()=>w(z,{onClick:ne,disabled:!m.value,type:`error`,ghost:!0},{icon:()=>w(r,{name:`mdi:delete`,title:l(`table.deleteRow`)}),default:()=>l(`table.deleteRow`)}),default:()=>l(`table.selectDeleteRowFirst`)})),s.enableCopy&&n.push(w(U,{disabled:!!m.value},{trigger:()=>w(z,{onClick:k,disabled:!m.value,type:`info`,ghost:!0},{icon:()=>w(r,{name:`mdi:content-copy`,title:l(`table.copyRow`)}),default:()=>l(`table.copyRow`)}),default:()=>l(`table.selectCopyRowFirst`)})),s.enableMove&&n.push(w(U,{disabled:g.value},{trigger:()=>w(z,{onClick:ae,disabled:!g.value,type:`warning`,ghost:!0},{icon:()=>w(r,{name:`mdi:arrow-up`,title:l(`table.moveUp`)}),default:()=>l(`table.moveUp`)}),default:()=>m.value?l(`table.firstRow`):l(`table.selectRowFirst`)}),w(U,{disabled:_.value},{trigger:()=>w(z,{onClick:oe,disabled:!_.value,type:`warning`,ghost:!0},{icon:()=>w(r,{name:`mdi:arrow-down`,title:l(`table.moveDown`)}),default:()=>l(`table.moveDown`)}),default:()=>m.value?l(`table.lastRow`):l(`table.selectRowFirst`)})),n.length>0&&t.push(w(le,{},()=>n)),w(`div`,{class:`dynamic-rows-toolbar mb-4 flex justify-end`},[w(ve,{},()=>t)])},renderConfirmModal:()=>w(he,{show:p.value,"onUpdate:show":e=>{p.value=e},preset:`dialog`,title:l(`table.deleteTitle`),content:s.deleteConfirmText||l(`table.deleteRowContent`),positiveText:l(`table.confirmDeleteRow`),negativeText:l(`common.cancel`),onPositiveClick:re})}}function Et(e){let r=0,{data:i,rowKey:a,emit:o}=e,s=()=>F(e.config),c=()=>s().treeEnabled?s().treeChildrenKey??`children`:void 0,l=f(()=>We(i(),c())),u=()=>l.value,d=n(()=>s().feedback),{t:p}=t(()=>s().locale),m=(e,t,n)=>i()===e&&l.value.find(e=>a(e)===t)===n,h={onSave:async(e,t,n,u)=>{let d=i(),f=u??a(e),p=l.value.find(e=>a(e)===f);if(!p)return;let h=l.value.indexOf(p),g={...p,...e},_=r;if(s().editable)try{if(await s().onEditSave?.(g,h,n),r!==_||(await o(`save`,g,h,n),r!==_)||!m(d,f,p))return;o(`update:data`,Ge(i(),p,g,c()))}catch(e){throw s().onEditError?.(e),o(`edit-error`,e),e}},onCancel:async(e,t)=>{let n=r;try{if(await s().onEditCancel?.(e,t),r!==n)return;await o(`cancel`,e,t)}catch(e){throw s().onEditError?.(e),o(`edit-error`,e),e}},onExpandChange:(e,t,n)=>{o(`expand-change`,e,t,n)},onSelectionChange:(e,t,n)=>{o(`selection-change`,e,t,n)},onChildSelectionChange:(e,t,n)=>{o(`child-selection-change`,e,t,n)},onRowChange:e=>{o(`update:data`,e),s().dynamicRows?.onRowChange?.(e)},onRowSelectionChange:(e,t)=>{o(`row-selection-change`,e,t),s().dynamicRows?.onSelectionChange?.(e,t)},onRowAdd:e=>{o(`row-add`,e),s().dynamicRows?.onRowAdd?.(e)},onRowDelete:(e,t)=>{o(`row-delete`,e,t),s().dynamicRows?.onRowDelete?.(e,t)},onRowCopy:(e,t)=>{o(`row-copy`,e,t),s().dynamicRows?.onRowCopy?.(e,t)},onRowMove:(e,t,n)=>{o(`row-move`,e,t,n),s().dynamicRows?.onRowMove?.(e,t,n)}},g=()=>({rowEdit:ze({data:u,rowKey:a,onSave:(e,t,n)=>h.onSave(e,t,void 0,n),onCancel:h.onCancel,columns:e.columns}),cellEdit:Ve({data:u,rowKey:a,onSave:h.onSave,columns:e.columns}),modalEdit:He({data:u,rowKey:a,onSave:(e,t,n)=>h.onSave(e,t,void 0,n),onCancel:h.onCancel})}),_=()=>at({data:f(()=>i()),rowKey:a,get childrenKey(){return c()},childRowKey:e=>e.id,get locale(){return s().locale},renderLoading:e.renderLoading,get defaultExpandedKeys(){return s().defaultExpandedKeys},get onLoadData(){return s().onLoadExpandData},onError:(e,t)=>{let n=s().onExpandError;n?n(e,t):d.error(p(`table.loadFailed`),e)},get renderContent(){return s().renderExpandContent},get rowExpandable(){return s().rowExpandable},get enableSelection(){return s().enableSelection},get defaultCheckedKeys(){return s().defaultCheckedKeys},get rowCheckable(){return s().rowCheckable},get maxSelection(){return s().maxSelection},get enableChildSelection(){return s().enableChildSelection},get childRowCheckable(){return s().childRowCheckable},get enableParentChildLink(){return s().enableParentChildLink},get parentChildLinkMode(){return s().parentChildLinkMode},onExpandChange:h.onExpandChange,onSelectionChange:h.onSelectionChange,onChildSelectionChange:h.onChildSelectionChange}),v=()=>Tt(f(()=>i()),f(()=>({...s().dynamicRows,rowKey:s().dynamicRows?.rowKey??F(e.rowKeyField)??a,enabled:!!s().dynamicRows&&s().dynamicRows?.enabled!==!1,feedback:s().feedback,locale:s().locale,onRowChange:h.onRowChange,onSelectionChange:h.onRowSelectionChange,onRowAdd:h.onRowAdd,onRowDelete:h.onRowDelete,onRowCopy:h.onRowCopy,onRowMove:h.onRowMove}))),y=g();L(y.rowEdit.validationErrors,e=>{y.rowEdit.editingRowKey.value!==null&&e.length&&d.error(e[0].message)}),L(y.cellEdit.cellValidationError,e=>{y.cellEdit.editingCell.value.rowKey!==null&&e&&d.error(e)});let b=()=>{r++,y.rowEdit.invalidate(),y.cellEdit.invalidate(),y.modalEdit.invalidate()};L([()=>s().editable,()=>s().editMode],b,{flush:`sync`}),C()&&ie(b);let x=_(),S=v();return{editStates:y,expandState:x,dynamicRowsState:S,stateManager:{edit:{start(e,t){if(!s().editable)return;let n=s().editMode;n===`modal`?y.modalEdit.startEdit(e):n===`cell`&&t?y.cellEdit.startEditCell(e,t):(n===`row`||n===`both`)&&y.rowEdit.startEditRow(e)},cancel(){y.modalEdit.isModalVisible.value?y.modalEdit.cancelEdit():y.cellEdit.editingCell.value.rowKey===null?y.rowEdit.editingRowKey.value!==null&&y.rowEdit.cancelEditRow():y.cellEdit.cancelEditCell()},async save(){y.modalEdit.isModalVisible.value?await y.modalEdit.saveEdit():y.cellEdit.editingCell.value.rowKey===null?y.rowEdit.editingRowKey.value!==null&&await y.rowEdit.saveEditRow():await y.cellEdit.saveEditCell()},isEditing(e,t){return s().editMode===`modal`?y.modalEdit.isEditingRow(e):t?y.cellEdit.isEditingCell(e,t):y.rowEdit.isEditingRow(e)},getEditingData(){return y.modalEdit.isModalVisible.value?y.modalEdit.editingData.value:y.rowEdit.editingRowKey.value===null?null:y.rowEdit.getEditingRowData(y.rowEdit.editingRowKey.value)}},expand:{async row(e){if(x){let t=[...x.expandedKeys.value];t.includes(e)||(t.push(e),x.handleExpandChange(t))}},collapse(e){if(x){let t=x.expandedKeys.value.filter(t=>t!==e);x.handleExpandChange(t)}},async toggle(e){x?.expandedKeys.value.includes(e)?this.collapse(e):await this.row(e)},async all(){await x?.expandAll()},collapseAll(){x?.collapseAll()},isExpanded(e){return x?.expandedKeys.value.includes(e)??!1}},selection:{select(e){if(x?.checkedKeys.value&&!x.checkedKeys.value.includes(e)){let t=[...x.checkedKeys.value,e];x.handleSelectionChange(t)}},unselect(e){if(x?.checkedKeys.value){let t=x.checkedKeys.value.filter(t=>t!==e);x.handleSelectionChange(t)}},all(){x?.selectAll()},clear(){x?.clearSelection()},isSelected(e){return x?.checkedKeys.value.includes(e)??!1},getSelected(){if(!x?.checkedKeys.value)return[];let e=new Set(x.checkedKeys.value);return l.value.filter(t=>e.has(a(t)))}},childSelection:{select(e,t){if(x?.childSelections.value){let n=x.childSelections.value.get(e)||[];if(!n.includes(t)){let r=[...n,t];x.childSelections.value.set(e,r),o(`child-selection-change`,e,r,[])}}},unselect(e,t){if(x?.childSelections.value){let n=(x.childSelections.value.get(e)||[]).filter(e=>e!==t);x.childSelections.value.set(e,n),o(`child-selection-change`,e,n,[])}},selectAll(e){if(x?.childSelections.value&&x.expandDataMap?.value){let t=x.expandDataMap.value.get(e)||[],n=t.map(e=>e.id);x.childSelections.value.set(e,n),o(`child-selection-change`,e,n,t)}},clear(e){x?.childSelections.value&&(x.childSelections.value.set(e,[]),o(`child-selection-change`,e,[],[]))},getSelected(e){if(!x?.childSelections.value||!x.expandDataMap?.value)return[];let t=x.childSelections.value.get(e)||[];return(x.expandDataMap.value.get(e)||[]).filter(e=>t.includes(e.id))}},dynamicRows:{add(){S?.addRow()},insert(){S?.insertRow()},delete(){S?.deleteRow()},copy(){S?.copyRow()},moveUp(){S?.moveRowUp()},moveDown(){S?.moveRowDown()},clearSelection(){S?.clearSelection()},getSelected(){return S?.selectedRowData.value||null},async print(e){S&&e&&await S.handlePrint(N(e))},async download(e,t){S&&e&&await S.handleDownload(N(e),t)}},clearAllSelections(){x?.clearAllSelections()}},expandedKeys:f(()=>x?.expandedKeys.value??[]),checkedKeys:f(()=>x?.checkedKeys.value??[]),eventHandlers:h}}const $={page:1,pageSize:10,showSizePicker:!0,showQuickJumper:!0,pageSizes:[10,20,50,100],simple:!1,size:`medium`};function Dt(e,t){return!Number.isFinite(e)||(e??0)<=0?t:Math.max(1,Math.trunc(e))}function Ot(e){let{data:t,config:n,emit:r}=e,i=j($.page),a=j($.pageSize),o=f(()=>{let e=typeof t==`function`?t():I(t);return Array.isArray(e)?e:[]}),s=f(()=>{let e=n.value;return e?.remote?Math.max(0,Math.trunc(e.total??o.value.length)):o.value.length}),c=()=>n.value?.enabled?Math.max(1,Math.ceil(s.value/a.value)):1,l=(e,t)=>{let n=Math.min(Dt(e,1),c());i.value!==n&&(i.value=n,t&&r?.(`pagination-change`,n,a.value))},u=e=>l(e,!0),d=e=>{let t=Dt(e,$.pageSize),n=a.value!==t;a.value=t,i.value=1,n&&r?.(`pagination-change`,1,t)},p=()=>l(1,!0),m=f(()=>{let e=n.value;if(!e?.enabled||e.remote)return o.value;let t=(i.value-1)*a.value;return o.value.slice(t,t+a.value)}),h=f(()=>{let e=n.value;return e?.enabled?{page:i.value,pageSize:a.value,itemCount:s.value,showSizePicker:e.showSizePicker??$.showSizePicker,showQuickJumper:e.showQuickJumper??$.showQuickJumper,pageSizes:e.pageSizes??$.pageSizes,simple:e.simple??$.simple,size:e.size??$.size,prefix:e=>`共 ${e.itemCount??0} 条`,suffix:e=>(e.itemCount??0)>0?`第 ${e.startIndex+1}-${e.endIndex} 条`:`暂无数据`,"onUpdate:page":u,"onUpdate:pageSize":d}:null});return L(()=>[n.value?.page,n.value?.pageSize],([e,t])=>{a.value=Dt(t,$.pageSize),i.value=Math.min(Dt(e,$.page),c())},{immediate:!0}),L([s,a],()=>{let e=Math.min(i.value,c());e!==i.value&&(i.value=e,r?.(`pagination-change`,e,a.value))}),{currentPage:i,currentPageSize:a,paginatedData:m,paginationConfig:h,handlePageChange:u,handlePageSizeChange:d,resetToFirstPage:p,getTotalPages:c}}function kt(e){return e.flatMap(e=>e.visible===!1?[]:`children`in e&&Array.isArray(e.children)?kt(e.children):`type`in e&&e.type?[]:[e])}function At(e,t){return e==null?t==null?0:-1:t==null?1:typeof e==`number`&&typeof t==`number`?e-t:typeof e==`string`&&typeof t==`string`?e.localeCompare(t):0}function jt(e,t,n){let{sorter:r}=e;return typeof r==`function`?r(t,n):r&&typeof r==`object`&&typeof r.compare==`function`?r.compare(t,n):r===`default`||typeof r==`object`&&r.compare===`default`?At(t[e.key],n[e.key]):0}function Mt(e,t,n){let r=Array.isArray(t)?t:[t];if(t==null||r.length===0)return!0;let{filter:i}=e,a=t=>t==null?!0:typeof i==`function`?i(t,n):i===`default`?String(n[e.key]).includes(String(t)):!0;return e.filterMode===`and`?r.every(a):r.some(a)}function Nt(e,t){return e.filterOptionValues===void 0?e.filterOptionValue===void 0?Object.prototype.hasOwnProperty.call(t,e.key)?t[e.key]:e.defaultFilterOptionValues??e.defaultFilterOptionValue:e.filterOptionValue:e.filterOptionValues}function Pt(e){let t=N(),n=N({}),r=f(()=>kt(F(e.columns))),i=f(()=>r.value.flatMap(e=>{if(e.filter!==`default`&&typeof e.filter!=`function`)return[];let t=Nt(e,n.value);return t==null||Array.isArray(t)&&t.length===0?[]:[{column:e,value:t}]})),a=f(()=>{let t=F(e.data);if(F(e.remote))return t;let n=i.value;return n.length?t.filter(e=>n.every(({column:t,value:n})=>Mt(t,n,e))):t}),o=f(()=>{let e=r.value.filter(e=>e.sortOrder===!1||e.sortOrder===`ascend`||e.sortOrder===`descend`);return e.length?e.map(e=>({columnKey:e.key,order:e.sortOrder})):t.value===void 0?r.value.map(e=>({columnKey:e.key,order:e.defaultSortOrder})):t.value?Array.isArray(t.value)?t.value:[t.value]:[]});return{processedData:f(()=>{if(F(e.remote))return F(e.data);let t=o.value.flatMap(e=>{let t=r.value.find(t=>t.key===e.columnKey);if(!t?.sorter||!e.order)return[];let n=typeof t.sorter==`object`?t.sorter.multiple??0:0;return[{column:t,direction:e.order===`ascend`?1:-1,priority:n}]}).sort((e,t)=>t.priority-e.priority);return t.length?a.value.slice().sort((e,n)=>{for(let r of t){let t=jt(r.column,e,n)*r.direction;if(t)return t}return 0}):a.value}),setSorter:e=>{t.value=e},setFilters:e=>{n.value={...e}}}}const Ft=e=>e&&typeof e==`object`&&`error`in e?e.error:null;function It(e){let{actions:i,config:a,tableManager:s,rowKey:c,onRowDeleted:l,onViewDetail:u,isDeleteFeedbackHandled:d}=e,f=o(),p=!0;C()&&ie(()=>{p=!1});let m=(e,t)=>JSON.stringify([typeof e,e,t]),h=n(()=>a.value.feedback),{t:g}=t(()=>a.value.locale),_=e=>e===`edit`?a.value.editable&&i.value?.edit!==!1:typeof i.value?.[e]==`function`,v=e=>e!==!1&&typeof e==`function`,y=e=>e&&typeof e==`object`&&`data`in e?e.data:e,b=(e,t,n=`primary`,i,o,s=!1)=>w(z,{size:a.value.controlSize??`small`,type:n,quaternary:!0,onClick:i,loading:s||(o?f.isRunning(o):!1),disabled:o?f.isRunning(o):!1},()=>[w(r,{name:e,size:14,title:t})]),x=async(e,t)=>{let n=c(e),r=i.value?.edit;if(v(r)){try{await r(e,t)}catch(e){h.error(g(`table.actionFailed`,{action:g(`common.edit`)}),e)}return}a.value.editMode===`modal`?s.editStates.modalEdit.startEdit(n,{...e}):s.editStates.rowEdit.startEditRow(n)},S=(e,t)=>{p&&!t&&h.error(g(`table.deleteFailed`),e)},T=async(e,t,n)=>{let r=d?.(e)===!0;try{let i=await e(t,n);if(!p)return;let a=Ft(i);if(a!=null){S(a,r);return}r||h.success(g(`table.deleteSuccess`)),l?.(t,n)}catch(e){throw S(e,r),e}},E=async(e,t)=>{let n=i.value?.delete;v(n)&&await h.confirm({title:g(`table.deleteTitle`),content:g(`table.deleteContent`),positiveText:g(`common.confirm`),negativeText:g(`common.cancel`),type:`warning`})&&p&&await T(n,e,t)},ee=async(e,t)=>{let n=i.value?.detail;if(!v(n)){u?.(e);return}try{let r=await n(e,t);if(!p)return;let i=y(r);u?.(i||e)}catch(t){if(!p)return;h.error(g(`table.detailFailed`),t),u?.(e)}},D=(e,t)=>f.run(m(c(e),`edit`),()=>x(e,t)),te=(e,t)=>f.run(m(c(e),`delete`),()=>E(e,t)),O=(e,t)=>f.run(m(c(e),`detail`),()=>ee(e,t)),ne=e=>s.editStates.rowEdit.isEditingRow(e)?[b(`mdi:check`,g(`common.save`),`primary`,()=>void f.run(m(e,`save`),()=>s.editStates.rowEdit.saveEditRow()).catch(e=>h.error(g(`table.actionFailed`,{action:g(`common.save`)}),e)),m(e,`save`)),b(`mdi:close`,g(`common.cancel`),`default`,()=>void f.run(m(e,`cancel`),()=>s.editStates.rowEdit.cancelEditRow()).catch(e=>h.error(g(`table.actionFailed`,{action:g(`common.cancel`)}),e)),m(e,`cancel`))]:[b(`mdi:pencil`,g(`common.edit`),`warning`,()=>s.editStates.rowEdit.startEditRow(e))],re=(e,t)=>{let n=[];return _(`detail`)&&n.push(b(`mdi:eye`,g(`common.detail`),`info`,()=>void O(e,t),m(c(e),`detail`))),_(`edit`)&&(a.value.editMode===`modal`||v(i.value?.edit))&&n.push(b(`mdi:pencil`,g(`common.edit`),`warning`,()=>void D(e,t),m(c(e),`edit`))),_(`delete`)&&n.push(b(`mdi:delete`,g(`common.delete`),`error`,()=>void te(e,t).catch(()=>void 0),m(c(e),`delete`))),n},k=(e,t)=>{let n=i.value?.custom;if(!n?.length)return null;let a=n.filter(n=>n.show?n.show(e,t):!0);return a.length?w(pe,{options:a.map(n=>{let i=typeof n.label==`function`?n.label(e,t):n.label,a=typeof n.icon==`function`?n.icon(e,t):n.icon;return{label:i,key:n.key,icon:()=>w(r,{name:a,size:14}),disabled:n.disabled?.(e,t)||f.isRunning(m(c(e),`custom:${n.key}`))}}),onSelect:n=>{let r=a.find(e=>e.key===n);if(!r)return;let i=typeof r.label==`function`?r.label(e,t):r.label;f.run(m(c(e),`custom:${r.key}`),()=>r.onClick(e,t),()=>!r.disabled?.(e,t)).catch(e=>h.error(g(`table.actionFailed`,{action:i}),e))}},()=>b(`mdi:dots-horizontal`,g(`table.moreActions`),`default`,()=>{},void 0,a.some(t=>f.isRunning(m(c(e),`custom:${t.key}`))))):null};return{renderActions:(e,t)=>{if(i.value?.render)return i.value.render(e,t);let n=c(e),r=a.value.editable&&[`row`,`both`].includes(a.value.editMode);if(r&&s.editStates.rowEdit.isEditingRow(n))return w(ve,{size:2,wrap:!1},()=>ne(n));let o=v(i.value?.edit),l=[...r&&!o?ne(n):[],...re(e,t)],u=k(e,t);return u&&l.push(u),w(ve,{size:2,wrap:!1},()=>l)},isActionEnabled:_}}const Lt=Symbol(`C_TABLE_GLOBAL_CONFIG`),Rt={date:{format:`YYYY-MM-DD`},datetime:{format:`YYYY-MM-DD HH:mm:ss`},currency:{prefix:`¥`,precision:2},percent:{precision:2,suffix:`%`},number:{precision:0}};function zt(e,t){if(e==null||e===``)return`-`;let n=new Date(typeof e==`number`?e:String(e));if(Number.isNaN(n.getTime()))return String(e);let r=e=>String(e).padStart(2,`0`);return t.replace(`YYYY`,String(n.getFullYear())).replace(`MM`,r(n.getMonth()+1)).replace(`DD`,r(n.getDate())).replace(`HH`,r(n.getHours())).replace(`mm`,r(n.getMinutes())).replace(`ss`,r(n.getSeconds()))}function Bt(e,t){if(e==null||e===``)return`-`;let n=Number(e);return Number.isNaN(n)?String(e):n.toLocaleString(`zh-CN`,{minimumFractionDigits:t,maximumFractionDigits:t})}const Vt={date:(e,t)=>zt(e,t.format??`YYYY-MM-DD`),datetime:(e,t)=>zt(e,t.format??`YYYY-MM-DD HH:mm:ss`),currency:(e,t)=>{let n=Bt(e,t.precision??2);return n===`-`?`-`:`${t.prefix??`¥`}${n}${t.suffix??``}`},percent:(e,t)=>{if(e==null||e===``)return`-`;let n=Number(e);return Number.isNaN(n)?String(e):`${(n*100).toFixed(t.precision??2)}${t.suffix??`%`}`},number:(e,t)=>Bt(e,t.precision??0)};function Ht(e,t,n,r){if(n.fn)return n.fn(e,t);if(n.type===`enum`)return n.mapping?n.mapping[String(e)]??String(e??`-`):String(e??`-`);let i=n.type&&Vt[n.type];return i?i(e,{...{...Rt,...r}[n.type],...n.config}):String(e??`-`)}function Ut(){return S()?T(Lt,{}):{}}const Wt=(e,t)=>t===void 0?e:t&&e&&typeof t==`object`&&typeof e==`object`&&!Array.isArray(t)&&!Array.isArray(e)?{...e,...t}:t;function Gt(e,t){let n=t.defaults??{},r={...n,...e};if([`edit`,`pagination`,`expand`,`selection`,`dynamicRows`,`toolbar`,`display`,`virtualScroll`,`summary`,`columnDrag`,`tree`,`rowDrag`,`crossPageSelection`,`export`,`formatterConfig`,`error`,`batchActions`].forEach(t=>{let i=e=>t===`edit`&&typeof e==`string`?{mode:e}:e,a=Wt(i(n[t]),i(e[t]));a!==void 0&&(r[t]=a)}),t.display){let e=typeof r.display==`object`?r.display:{};r.display={...t.display,...e}}if(t.pageSize&&r.pagination!==!1){let e=typeof r.pagination==`object`?r.pagination:{};e.pageSize||(r.pagination={...e,pageSize:t.pageSize})}return r}const Kt=b(()=>import(`./date-picker.js`)),qt={number:V,switch:be,input:me,email:me,mobile:me,date:e=>w(Kt,{...e,type:`date`,format:`yyyy-MM-dd`}),select:e=>w(_e,{...e,options:e.options||[]}),textarea:e=>w(me,{...e,type:`textarea`,rows:3})},Jt={number:`inputNumber`,date:`datePicker`,textarea:`textarea`,select:`select`,switch:`switch`},Yt=(e,t)=>e.filter(G).map(e=>{let n={...e.editProps};return delete n.rules,{prop:String(e.key),label:e.title||String(e.key),type:Jt[e.editType??`input`]??`input`,placeholder:e.editProps?.placeholder??`请输入${e.title}`,rules:K(e,t),attrs:n,layout:{span:1},show:!0}});function Xt(e,t,n,r={},i=0,a,o=!1){if(e.editRender)return e.editRender(t,r,i,{onUpdate:n});let s=e,c={value:t,"onUpdate:value":n,placeholder:`请输入${s.title??``}`,style:{width:`100%`},...a?{size:a}:{},...e.editProps,...o?{disabled:!0}:{}};return w(qt[e.editType||`input`]||qt.input,c)}function Zt(e,t,n,r,i){return e.render?e.render(t,n)??String(r??``):e.formatter?Ht(r,t,e.formatter,i):String(r??``)}function Qt(e,t,n,i,a,o={rowData:{},rowIndex:0}){let s=(e,t,n)=>w(`button`,{class:`cell-action-btn cell-action-${e}`,disabled:o.busy,"aria-busy":o.busy||void 0,title:t,type:`button`,onClick:e=>{e.stopPropagation(),e.preventDefault(),n(e)}},[w(r,{name:`mdi:${e===`save`?`check`:`close`}`,title:e===`save`?`保存`:`取消`,size:12})]);return w(`div`,{class:`cell-editing-container`},[w(`div`,{class:`cell-editing-input`},[Xt(e,t,n,o.rowData,o.rowIndex,o.size,o.busy)]),w(`div`,{class:`cell-editing-actions`},[s(`save`,`保存`,i),s(`cancel`,`取消`,a)])])}function $t(e,t,n,i,a,o){let s;return s=e.render?e.render(t,n)??String(i??``):e.formatter?Ht(i,t,e.formatter,o):String(i??``),w(`div`,{class:`cell-edit-wrapper`},[w(`span`,{class:`cell-value`},s),w(r,{name:`mdi:square-edit-outline`,title:`编辑`,class:`cell-edit-icon`,size:14,clickable:!0,onClick:e=>{e.stopPropagation(),a()}})])}function en(e){let{rawColumns:t,config:n,rowKey:r,tableManager:i,actionsRenderer:a,editModeChecker:o,showActionsColumn:s}=e,c=j([]),l=j(!1),u=e=>{let t=e.find(e=>e.key===`_actions`),n=c.value.find(e=>e.key===`_actions`),r=e.filter(e=>e.key!==`_actions`);c.value=s.value?[...r,t||n||{key:`_actions`,title:`操作`,width:180,editable:!1,visible:!0,fixed:`right`}]:r};L([t,s],([e])=>{e?.length?u(e):c.value=[]},{deep:!0,immediate:!0});let d=(e,t,r,a)=>{let o=e.key??``,s=t[o],{isEditingCell:c,getEditingCellValue:l,updateEditingCellValue:u,saveEditCell:d,cancelEditCell:f,startEditCell:p}=i.editStates.cellEdit;return c(a,o)?Qt(e,l(a,o),e=>u(a,o,e),()=>d(),()=>f(),{rowData:t,rowIndex:r,busy:i.editStates.cellEdit.isSaving?.value,size:n.value.density?n.value.controlSize:void 0}):$t(e,t,r,s,()=>p(a,o),n.value.formatterConfig)},p=(e,t,a)=>{let s=e.key??``,c=t[s],l=r(t),u=o.value;if(u.isNonEditable(e))return Zt(e,t,a,c,n.value.formatterConfig);if(u.isRowEditMode()&&i.editStates.rowEdit.isEditingRow(l)){let r=i.editStates.rowEdit.getEditingRowData(l);return Xt(e,r?.[s],e=>i.editStates.rowEdit.updateEditingRowData(l,s,e),r??t,a,n.value.density?n.value.controlSize:void 0,i.editStates.rowEdit.isSaving?.value)}return u.isCellEditMode()?d(e,t,a,l):Zt(e,t,a,c,n.value.formatterConfig)},m=t=>t.width===void 0?t.type===`selection`||t.type===`expand`?40:t.type===`index`?50:e.columnWidth??180:t.width,h=e=>{let t=e;return{...t,type:void 0,key:`_index`,title:t.title??`序号`,width:m(e),className:[t.className,`c-table-index-column`].filter(Boolean).join(` `),titleAlign:t.titleAlign??`center`,align:t.align??`center`,render:(e,t)=>t+1,fixed:e.fixed}},g=t=>{let n=t,r=!n.fixed&&n.width===void 0&&n.maxWidth===void 0&&e.columnWidthExplicit===!1,i={...n,width:r?void 0:m(t),minWidth:n.minWidth??(r?e.columnWidth:void 0),titleAlign:n.titleAlign||`center`,align:n.align||`center`,render:(e,n)=>p(t,e,n)};return t.fixed&&(i.fixed=t.fixed),t.resizable&&typeof i.width==`number`&&(i.resizable=!0,i.minWidth=t.minWidth??80,i.maxWidth=t.maxWidth??500),i},_=f(()=>{let e=c.value.filter(e=>{let t=e;return t.visible!==!1&&t.key!==`_actions`}).map(e=>{let t=e;return e.type===`index`?h(e):e.type===`selection`||e.type===`expand`?{...t,width:m(e)}:g(e)});if(i.dynamicRowsState&&(e=i.dynamicRowsState.enhanceColumns(e)),i.expandState&&(n.value.expandable||n.value.enableSelection)&&(e=i.expandState.getTableColumns(e)),s.value){let t=c.value.find(e=>e.key===`_actions`);e.push({...t,type:void 0,key:`_actions`,title:t?.title??`操作`,width:t?.width??180,className:[t?.className,`c-table-actions-column`].filter(Boolean).join(` `),align:t?.align??`center`,titleAlign:t?.titleAlign??`center`,render:a,fixed:t?.fixed})}return e});return{reactiveColumns:c,showSettingsPanel:l,computedColumns:_,computedScrollX:f(()=>{if(e.scrollX!==void 0)return e.scrollX;let t=_.value.some(e=>e.fixed),n=_.value.some(e=>e.type===`selection`||e.type===`expand`||e.key===`_index`),r=_.value.some(e=>!e.type&&!e.fixed&&e.key!==`_index`&&e.key!==`_actions`&&e.width===void 0);if(!(!t&&!(n&&r)))return _.value.reduce((e,t)=>{let n=t.width;return e+(typeof n==`number`?n:typeof n==`string`&&/^\s*\d+(?:\.\d+)?(?:px)?\s*$/.test(n)?Number.parseFloat(n):typeof t.minWidth==`number`?t.minWidth:180)},0)}),handleColumnChange:e=>{c.value=e.map(e=>{let t=e;return{...e,visible:t.visible!==!1,fixed:e.fixed,width:t.width??(t.type?m(e):void 0),align:t.align||`center`,titleAlign:t.titleAlign||`center`}})}}}function tn(e){let{data:t,onReorder:n,onSort:r}=e,i=j(!1),a=null,o=0,s=!1,c,l=null,u,d,f=null,p,m=t=>t.map(t=>Ue(t,e.rowKey)),h=()=>{p?.parentNode!==l||!l||f&&f.parentNode!==l||l.insertBefore(p,f)},g=()=>{a?.destroy(),a=null,l=null,u=void 0,d=void 0,p=void 0,f=null,i.value=!1},_=(e,t,n)=>{if(!u||u.length!==e.length||u.some((t,n)=>t!==e[n])||t.some((e,t)=>e===void 0||e!==d?.[t])||n.length!==t.length||new Set(n).size!==t.length)return!1;let r=new Set(t);return n.every(e=>r.has(e))},v=e=>{i.value=!1;let{item:a}=e,o=a.getAttribute(`data-c-table-row-key`),s=[...t.value],c=m(s),g=l?[...l.children].map(e=>e.getAttribute(`data-c-table-row-key`)).filter(e=>e!==null):[],v=a===p&&_(s,c,g);if(h(),u=void 0,d=void 0,p=void 0,f=null,!v||!o)return;let y=c.indexOf(o),b=g.indexOf(o);if(y<0||b<0||y===b)return;let[x]=s.splice(y,1);s.splice(b,0,x),n?.(s),r?.(x,y,b)},y=async n=>{let r=++o;c?.disconnect(),c=void 0,g();let h=F(e.config);if(!(!h||h.enabled===!1||!n||s))try{let{default:e}=await import(`sortablejs`);if(s||r!==o)return;let _=()=>{if(s||r!==o)return;let c=n.querySelector(`.n-data-table-tbody`);c!==l&&(g(),c&&(l=c,a=new e(c,{animation:h.animationDuration??150,handle:h.handleSelector,draggable:`> tr[data-c-table-row-key]`,ghostClass:h.ghostClass??`row-drag-ghost`,chosenClass:h.chosenClass??`row-drag-chosen`,onMove:e=>e.related.hasAttribute(`data-c-table-row-key`),onStart:e=>{u=[...t.value],d=m(u),p=e.item,f=e.item.nextSibling,i.value=!0},onEnd:v})))};c=new MutationObserver(_),c.observe(n,{childList:!0,subtree:!0}),_()}catch{}},b=()=>{o+=1,c?.disconnect(),c=void 0,g()};return ne(()=>{s=!0,b()}),{initRowDrag:y,destroyRowDrag:b,isDragging:i}}function nn(e){let t=j(new Set),n=M(new Map),r=()=>F(e.config)?.enabled===!0,i=(t=e.allData.value)=>We(t,F(e.childrenKey)),a=f(()=>{let t=new Map,n=new Map;for(let r of i()){let i=e.rowKey(r),a=t.get(i);if(!a)t.set(i,r);else{let e=n.get(i);e?e.push(r):n.set(i,[a,r])}}return{index:t,duplicates:n}}),o=t=>e.rowCheckable?.(t)!==!1,s=()=>{let t=F(e.config)?.maxSelection;return Number.isFinite(t)&&(t??0)>0?Math.trunc(t):void 0},c=f(()=>t.value.size),l=()=>[...t.value].flatMap(e=>{let t=n.get(e);return t?[t]:[]}),u=e=>{let t=s(),n=new Set;for(let r of e){if(t&&n.size>=t)break;n.add(r)}return n},d=(r,i=[])=>{let a=u(r);for(let t of i){let r=e.rowKey(t);a.has(r)&&n.set(r,t)}for(let e of n.keys())a.has(e)||n.delete(e);let o=t.value;o.size===a.size&&[...o].every(e=>a.has(e))||(t.value=a,e.onSelectionChange?.([...a],l()))},p=n=>i(n).map(e.rowKey).filter(e=>t.value.has(e)),m=(n,a)=>{if(!r())return;let s=i(a),c=new Set(s.filter(o).map(e.rowKey)),l=new Set(t.value);s.forEach(t=>l.delete(e.rowKey(t))),n.forEach(e=>{c.has(e)&&l.add(e)}),d(l,s)},h=()=>{if(!r())return;let n=i().filter(o),a=n.map(e.rowKey);d(F(e.remote)?[...t.value,...a]:a,n)},g=e=>{if(!r())return!1;if(t.value.has(e))return!0;let{index:n,duplicates:i}=a.value,c=i.get(e),l=c?c.find(o):n.get(e);if(!l||!c&&!o(l))return!1;let u=s();return u&&t.value.size>=u?!1:(d([...t.value,e],[l]),!0)},_=e=>{if(!t.value.has(e))return;let n=new Set(t.value);n.delete(e),d(n)},v=()=>d([]);return L(e.allData,a=>{if(!r()||t.value.size===0)return;let o=i(a);if(F(e.remote)){for(let r of o){let i=e.rowKey(r);t.value.has(i)&&n.set(i,r)}return}let s=new Set(o.map(e.rowKey));d([...t.value].filter(e=>s.has(e)),o)}),L(()=>[r(),s()],([e])=>{e?d(t.value):v()}),{selectedKeys:t,selectedCount:c,getPageCheckedKeys:p,handlePageSelectionChange:m,selectAll:h,select:g,unselect:_,clearAll:v,getSelectedRows:l,isSelected:e=>t.value.has(e)}}function rn(e,t){return e.filter(e=>typeof e.key!=`string`||e.key.startsWith(`_`)||e.type===`selection`||e.type===`expand`?!1:t?.length?t.includes(e.key):e.visible!==!1)}function an(e,t,n){let r=e[t.key];return t.formatter?Ht(r,e,t.formatter,n):r==null?``:typeof r==`boolean`?r?`是`:`否`:String(r)}function on(e,t,n){let r=n&&/^[=+\-@\t\r]/.test(e)?`'${e}`:e;return r.includes(t)||r.includes(`"`)||r.includes(`
|
|
2
2
|
`)||r.includes(`\r`)?`"${r.replace(/"/g,`""`)}"`:r}function sn(e){return[...e||`export`].map(e=>e.charCodeAt(0)<32||`<>:"/\\|?*`.includes(e)?`_`:e).join(``).trim()||`export`}function cn(e,t,n){let r=n.csvSeparator??`,`,i=n.preventFormulaInjection!==!1,a=rn(t,n.columnKeys),o=[];n.includeHeader!==!1&&o.push(a.map(e=>on(e.title??``,r,i)).join(r));for(let t of e){let e=a.map(e=>on(an(t,e,n.formatterConfig),r,i));o.push(e.join(r))}un(new Blob([``+o.join(`
|
|
3
3
|
`)],{type:`text/csv;charset=utf-8;`}),`${sn(n.filename)}.csv`)}async function ln(e,t,n){let r=rn(t,n.columnKeys),i;try{i=await import(`xlsx`)}catch(r){n.onFallback?.(`xlsx`,`csv`,r),cn(e,t,{...n,format:`csv`});return}let a=r.map(e=>e.title??e.key??``),o=e.map(e=>r.map(t=>an(e,t,n.formatterConfig))),s=n.includeHeader===!1?o:[a,...o],c=i.utils.aoa_to_sheet(s),l=i.utils.book_new();i.utils.book_append_sheet(l,c,`Sheet1`),i.writeFile(l,`${sn(n.filename)}.xlsx`)}function un(e,t){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.style.display=`none`,document.body.appendChild(r),r.click(),document.body.removeChild(r),setTimeout(()=>URL.revokeObjectURL(n),0)}async function dn(e,t,n={}){n.format===`xlsx`?await ln(e,t,n):cn(e,t,n)}const fn=e=>[{label:e.fixed?`✓ 取消固定`:`不固定`,key:`none`,disabled:!e.fixed},{label:e.fixed===`left`?`✓ 固定左侧`:`固定左侧`,key:`left`,disabled:!1},{label:e.fixed===`right`?`✓ 固定右侧`:`固定右侧`,key:`right`,disabled:!1}],pn=[`_actions`],mn=[`selection`,`expand`],hn=e=>pn.includes(e.key)||mn.includes(e.type),gn=e=>typeof e==`string`||typeof e==`number`&&Number.isFinite(e),_n=e=>typeof e==`number`&&Number.isFinite(e)&&e>=0||typeof e==`string`&&e.trim().length>0&&e.length<=128,vn=e=>e.map(e=>({...e})),yn=e=>{let t;try{t=JSON.parse(e)}catch{return[]}return Array.isArray(t)?t.flatMap((e,t)=>{if(!e||typeof e!=`object`||Array.isArray(e))return[];let n=e;return gn(n.key)?[{key:n.key,order:t,...typeof n.visible==`boolean`&&{visible:n.visible},..._n(n.width)&&{width:n.width},...(n.fixed===`left`||n.fixed===`right`)&&{fixed:n.fixed}}]:[]}):[]},bn=(e,t)=>{let n=new Map(yn(t).map(e=>[e.key,e]));return vn(e).map(e=>{let t=gn(e.key)?n.get(e.key):void 0;return t?{...e,visible:t.visible??e.visible,width:t.width??e.width,fixed:t.fixed??e.fixed}:e}).sort((e,t)=>{let r=gn(e.key)?n.get(e.key)?.order:void 0,i=gn(t.key)?n.get(t.key)?.order:void 0;return(r??1/0)-(i??1/0)})},xn=e=>JSON.stringify(e.filter(e=>gn(e.key)).map(e=>({key:e.key,visible:e.visible,width:e.width,fixed:e.fixed}))),Sn={class:`column-management-tab`},Cn={class:`search-row`},wn={class:`resizable-control`},Tn={class:`top-actions-bar`},En={class:`stats-info`},Dn={class:`quick-actions`},On=[`draggable`,`onDragstart`,`onDragover`,`onDrop`],kn={class:`column-info`},An={class:`column-controls`},jn={class:`column-details`},Mn={class:`column-actions`},Nn={class:`drag-controls`};var Pn=i(x({name:`ColumnSettings`,__name:`index`,props:{columns:{},persistKey:{}},emits:[`change`],setup(e,{emit:t}){let n=e,i=t,a=e=>{if(!n.persistKey)return vn(e);try{let t=localStorage.getItem(`c_table_cols_${n.persistKey}`);return t?bn(e,t):vn(e)}catch{return vn(e)}},o=e=>{if(n.persistKey)try{localStorage.setItem(`c_table_cols_${n.persistKey}`,xn(e))}catch{}},s=j(a(n.columns)),c=j(``),l=j(),u=j(null),_=j(null),b=j(!1);re(()=>{b.value=s.value.some(e=>e.resizable===!0),n.persistKey&&i(`change`,[...s.value])}),L(()=>n.columns,e=>{s.value=a(e),b.value=s.value.some(e=>e.resizable===!0)},{deep:!0});let x=f(()=>{if(!c.value)return s.value;let e=c.value.toLowerCase();return s.value.filter(t=>String(t.title??``).toLowerCase().includes(e)||String(t.key??``).toLowerCase().includes(e))}),S=f(()=>s.value.filter(e=>e.visible!==!1).length),C=f(()=>s.value.length),w=e=>{s.value.forEach(t=>{t.key!==`_actions`&&(t.visible=e)}),A()},T=()=>w(!0),E=()=>w(!1),ee=e=>{let t=x.value[e];return s.value.findIndex(e=>e.key===t.key)},D=(e,t)=>{let n=ee(e);n!==-1&&(t(s.value[n]),A())},ne=(e,t)=>{D(e,e=>{e.visible=t})},ie=(e,t)=>{D(e,e=>{e.fixed=t===`none`?void 0:t})},A=()=>{o(s.value),i(`change`,[...s.value])},oe=()=>{s.value=vn(n.columns),A()},se=e=>{s.value.forEach(t=>{hn(t)||(t.resizable=e,e&&(t.minWidth=t.minWidth||80,t.maxWidth=t.maxWidth||500))}),A()},M=(e,t)=>{let n=ee(e),r=ee(t);if(n!==-1&&r!==-1){let[e]=s.value.splice(n,1);s.value.splice(r,0,e),A()}},N=(e,t)=>{if(x.value[e].key===`_actions`){t.preventDefault();return}u.value=e,t.dataTransfer&&(t.dataTransfer.effectAllowed=`move`)},F=(e,t)=>{t.preventDefault(),!(u.value===null||x.value[e].key===`_actions`)&&(_.value=e,t.dataTransfer&&(t.dataTransfer.dropEffect=`move`))},ce=e=>{u.value===null||x.value[e].key===`_actions`||(M(u.value,e),u.value=null,_.value=null)},le=()=>{u.value=null,_.value=null};return(e,t)=>(k(),h(`div`,Sn,[m(` 搜索框和列宽调整开关 `),g(`div`,Cn,[y(I(me),{value:c.value,"onUpdate:value":t[0]||=e=>c.value=e,placeholder:`搜索列名...`,clearable:``,class:`search-input`},{prefix:R(()=>[y(r,{name:`mdi:magnify`})]),_:1},8,[`value`]),g(`div`,wn,[y(r,{name:`mdi:arrow-split-vertical`,size:`14`,title:b.value?`开启后可拖拽列边界调整宽度`:`允许调整列宽`},null,8,[`title`]),y(I(H),{style:{fontSize:`12px`,marginLeft:`4px`}},{default:R(()=>[...t[2]||=[v(` 列宽调整 `,-1)]]),_:1}),y(I(be),{value:b.value,"onUpdate:value":[t[1]||=e=>b.value=e,se],size:`small`,style:{"margin-left":`6px`}},null,8,[`value`])])]),m(` 顶部操作栏:统计信息和快捷操作按钮 `),g(`div`,Tn,[g(`div`,En,[y(I(H),{depth:`3`,style:{fontSize:`13px`}},{default:R(()=>[v(` 已选 `+P(S.value)+` / 总共 `+P(C.value)+` 列 `,1)]),_:1})]),g(`div`,Dn,[y(I(ve),{size:6},{default:R(()=>[y(I(z),{size:`tiny`,onClick:T},{default:R(()=>[...t[3]||=[v(` 全选 `,-1)]]),_:1}),y(I(z),{size:`tiny`,onClick:E},{default:R(()=>[...t[4]||=[v(` 全不选 `,-1)]]),_:1}),y(I(z),{size:`tiny`,onClick:oe},{default:R(()=>[...t[5]||=[v(` 重置 `,-1)]]),_:1})]),_:1})])]),m(` 列列表 `),g(`div`,{ref_key:`listRef`,ref:l,class:`column-list`},[(k(!0),h(d,null,ae(x.value,(e,n)=>(k(),h(`div`,{key:e.key,class:te([`column-item`,{disabled:e.key===`_actions`,"fixed-left":e.fixed===`left`,"fixed-right":e.fixed===`right`}]),draggable:e.key!==`_actions`,onDragstart:e=>N(n,e),onDragover:e=>F(n,e),onDragend:le,onDrop:e=>ce(n)},[g(`div`,kn,[g(`div`,An,[y(r,{name:`mdi:drag`,size:`16`,class:te([`drag-handle`,{disabled:e.key===`_actions`}])},null,8,[`class`]),y(I(B),{checked:e.visible!==!1,disabled:e.key===`_actions`,"onUpdate:checked":e=>ne(n,e)},null,8,[`checked`,`disabled`,`onUpdate:checked`])]),g(`div`,jn,[y(I(ve),{align:`center`,size:6},{default:R(()=>[y(I(H),{strong:``,style:{fontSize:`13px`}},{default:R(()=>[v(P(e.title||e.key),1)]),_:2},1024),e.fixed===`left`?(k(),p(I(xe),{key:0,size:`tiny`,type:`info`},{default:R(()=>[...t[6]||=[v(` 左固定 `,-1)]]),_:1})):m(`v-if`,!0),e.fixed===`right`?(k(),p(I(xe),{key:1,size:`tiny`,type:`warning`},{default:R(()=>[...t[7]||=[v(` 右固定 `,-1)]]),_:1})):m(`v-if`,!0)]),_:2},1024),y(I(H),{depth:`3`,style:{fontSize:`11px`}},{default:R(()=>[v(P(e.key),1)]),_:2},1024)])]),g(`div`,Mn,[g(`div`,Nn,[y(r,{name:`mdi:chevron-up`,size:`14`,title:`上移`,clickable:n!==0,class:te({disabled:n===0}),onClick:e=>n!==0&&M(n,n-1)},null,8,[`clickable`,`class`,`onClick`]),y(r,{name:`mdi:chevron-down`,size:`14`,title:`下移`,clickable:n!==x.value.length-1,class:te({disabled:n===x.value.length-1}),onClick:e=>n!==x.value.length-1&&M(n,n+1)},null,8,[`clickable`,`class`,`onClick`])]),y(I(pe),{options:I(fn)(e),onSelect:e=>ie(n,e)},{default:R(()=>[y(r,{name:`mdi:pin`,size:`14`,title:`固定列`,clickable:``,style:O({color:e.fixed?`var(--n-primary-color)`:void 0})},null,8,[`style`])]),_:2},1032,[`options`,`onSelect`])])],42,On))),128))],512)]))}}),[[`__scopeId`,`data-v-92119048`]]);const Fn=[`aria-busy`],In={key:1,class:`table-toolbar`},Ln={class:`toolbar-left`},Rn={class:`toolbar-right`},zn={key:2,class:`batch-actions-bar`},Bn={class:`batch-info`},Vn={key:3,class:`table-error-state`},Hn={class:`error-content`},Un={class:`error-message`};var Wn=i(x({name:`C_Table`,inheritAttrs:!1,__name:`index`,props:{columns:{},data:{},loading:{},rowKey:{},config:{default:()=>({})},crud:{},pagination:{type:[Object,Boolean],default:void 0},remote:{type:Boolean,default:void 0},virtualScrollX:{type:Boolean},wrapperClass:{},flexHeight:{type:Boolean}},emits:[`pagination-change`,`row-delete`,`batch-action-error`,`row-key-error`,`row-add`,`row-copy`,`row-move`,`row-selection-change`,`view-detail`,`column-change`,`expand-change`,`selection-change`,`child-selection-change`,`parent-child-link-change`,`update:data`,`save`,`cancel`,`edit-error`],setup(e,{expose:i,emit:u}){let x=b(()=>import(`./C_Form.js`).then(e=>e.C_Form)),S=e,C=u,T=j(null),O=(...e)=>{C(...e);let{crud:t}=S;if(t)switch(e[0]){case`save`:return t.save?.(e[1],e[2],e[3]);case`cancel`:return t.handleCancel?.();case`pagination-change`:return t.handlePaginationChange?.(e[1],e[2]);case`row-delete`:return t.handleRowDelete?.(e[1],e[2]);case`view-detail`:return t.detail?.show(e[1])}},ie=Ut(),A=e=>{let t=S.rowKey??`id`;return typeof t==`function`?t(e):e[t]},M=f(()=>{let e=S.config||{};if(S.crud){let t={};if(S.crud.actions){let e=S.crud.actions.value;t.actions={...e,...S.crud.save&&typeof e.edit==`function`?{edit:void 0}:{}}}S.crud.pagination&&(t.pagination=S.crud.pagination.value??void 0),e={...t,...e}}return Gt(e,ie)}),N=f(()=>S.columns??S.crud?.columns.value??[]),F=f(()=>Ie(M.value)),le=n(()=>F.value.feedback),{t:B}=t(()=>F.value.locale),pe=f(()=>Le(F.value)),me=e=>e&&typeof e==`object`&&`value`in e?e.value:e,V=f(()=>me(S.data)??S.crud?.data.value??[]),_e=f(()=>me(S.loading)??S.crud?.loading.value??!1),ye=f(()=>F.value.treeEnabled&&F.value.treeDefaultExpandAll?Je(V.value,F.value.treeChildrenKey,A):[]),be=f(()=>({...F.value,defaultExpandedKeys:[...new Set([...F.value.defaultExpandedKeys??[],...ye.value])]})),xe=``;L(()=>M.value.validateRowKeys===!1?[]:V.value.map(e=>{try{return A(e)}catch{return}}),()=>{if(M.value.validateRowKeys===!1){xe=``;return}let e=qe(V.value,A);if(e.length===0){xe=``;return}let t=e.map(e=>[e.type,e.index,e.firstIndex,String(e.key)].join(`:`)).join(`|`);t!==xe&&(xe=t,le.warning(B(`table.invalidRowKeys`,{count:e.length})),C(`row-key-error`,e))},{immediate:!0});let H=f(()=>S.pagination!==void 0),U=f(()=>S.remote??F.value.pagination?.remote??!1),Se=j((e=>{if(!e)return 10;if(e.defaultPageSize!==void 0)return e.defaultPageSize;let t=e.pageSizes?.[0];return typeof t==`number`?t:t?.value||10})(S.pagination)),Ce=j(S.pagination?S.pagination.defaultPage??1:1),we=e=>{Ce.value=e},Te=e=>{Se.value=e},W=Et({config:be,data:()=>V.value,rowKey:A,rowKeyField:()=>typeof S.rowKey==`function`?void 0:S.rowKey??`id`,emit:O,columns:()=>N.value,renderLoading:()=>w(a,{size:32,label:B(`table.loading`)})}),Ee=new Set;L(ye,e=>{if(!F.value.treeEnabled||!F.value.treeDefaultExpandAll){Ee.clear();return}let t=e.filter(e=>!Ee.has(e));e.forEach(e=>Ee.add(e));let n=W.expandedKeys.value,r=t.filter(e=>!n.includes(e));r.length&&W.expandState?.handleExpandChange([...n,...r])},{immediate:!0});let De=It({actions:f(()=>M.value.actions||{}),config:F,tableManager:W,rowKey:A,onRowDeleted:(e,t)=>C(`row-delete`,e,t),isDeleteFeedbackHandled:e=>S.crud?.actions?.value.delete===e,onViewDetail:e=>O(`view-detail`,e)}),Oe=f(()=>{let{actions:e}=M.value;return!!(F.value.showRowActions||e?.delete||e?.detail||e?.custom?.length||e?.render)}),ke=en({rawColumns:N,config:F,get columnWidth(){return F.value.columnWidth},get columnWidthExplicit(){return S.virtualScrollX===!0||M.value.display?.columnWidth!==void 0},get scrollX(){return F.value.scrollX},rowKey:A,tableManager:W,actionsRenderer:De.renderActions,editModeChecker:pe,showActionsColumn:Oe}),{showSettingsPanel:Ae,reactiveColumns:je,computedColumns:Me,computedScrollX:Ne}=ke,Pe=Pt({data:V,columns:je,remote:()=>H.value||F.value.pagination?.remote===!0}),Fe=Pt({data:V,columns:je,remote:U}),G=Ot({data:Pe.processedData,config:f(()=>H.value?null:F.value.pagination),emit:O}),K=f(()=>{if(H.value){let e=T.value?.getCurrentPageData?.();if(e)return e;let t=Fe.processedData.value;if(!S.pagination||U.value)return t;let n=S.pagination.pageSize??Se.value,r=Math.max(1,Math.min(S.pagination.page??Ce.value,Math.ceil(t.length/Math.max(1,n))));return t.slice((r-1)*n,r*n)}return G.paginatedData.value}),Re=e=>{Pe.setSorter(e),Fe.setSorter(e)},ze=e=>{Pe.setFilters(e),Fe.setFilters(e),!H.value&&!F.value.pagination?.remote&&G.resetToFirstPage()},Be=ce(),Ve=f(()=>F.value.rowDrag!==void 0&&F.value.rowDrag.enabled!==!1&&!F.value.virtualScroll&&S.virtualScrollX!==!0),He=f(()=>{let e=K.value,t=e.map(e=>[Ue(e,A),e]),n=new Set(t.map(([e])=>e));return t.some(([e])=>e===void 0)||n.size!==e.length?new Map:new Map(t)}),We=(e,t)=>{let n=Be.rowProps??Be[`row-props`],r=typeof n==`function`?n(e,t):void 0;if(!Ve.value)return r;let i=Ue(e,A);return{...r,"data-c-table-row-key":i!==void 0&&He.value.get(i)===e?i:void 0}},Ge,Ke=tn({data:K,rowKey:A,config:f(()=>Ve.value?F.value.rowDrag:void 0),onReorder:e=>{let t=new Map(V.value.map((e,t)=>[A(e),t]));if(Ge=K.value.map(e=>t.get(A(e))),H.value?U.value:F.value.pagination?.remote===!0){O(`update:data`,e);return}let n=[...V.value];Ge.forEach((t,r)=>{t!==void 0&&(n[t]=e[r])}),O(`update:data`,n)},onSort:(e,t,n)=>{let r=Ge?.[t]??t,i=Ge?.[n]??n;Ge=void 0,C(`row-move`,e,r,i)}}),q=nn({allData:V,rowKey:A,config:f(()=>F.value.crossPageSelection),remote:()=>H.value?U.value:F.value.pagination?.remote===!0,childrenKey:()=>F.value.treeEnabled?F.value.treeChildrenKey:void 0,rowCheckable:e=>F.value.rowCheckable?.(e)??!0,onSelectionChange:(e,t)=>C(`selection-change`,e,t,new Map)}),J=f(()=>F.value.crossPageSelection?.enabled===!0),Ye=f(()=>J.value?q.selectedCount.value:W.checkedKeys?.value?.length??0),Xe=o(),Ze=async e=>{if(Xe.isRunning(e.key))return;let t=J.value?[...q.selectedKeys.value]:W.checkedKeys?.value??[],n=new Set(t),r=J.value?q.getSelectedRows():V.value.filter(e=>n.has(A(e)));try{if(!(await Xe.run(e.key,()=>e.onClick(t,r))).executed)return;F.value.batchActions?.clearSelectionOnSuccess&&Qe()}catch(t){F.value.batchActions?.onError?.(t,e.key),C(`batch-action-error`,t,e.key)}},Qe=()=>{J.value?q.clearAll():W.stateManager.selection.clear()},$e=f(()=>J.value?q.getPageCheckedKeys(K.value):null),et=e=>{if(J.value){q.handlePageSelectionChange(e,K.value);return}W.expandState?.handleSelectionChange?.(e)},tt=o(),nt=async()=>{let e=F.value.exportConfig??{};await tt.run(`export`,async()=>{let t=()=>J.value?q.getSelectedRows():W.stateManager.selection.getSelected(),n=e.scope===`page`?K.value:V.value;await dn(e.requestData?await e.requestData():e.scope===`selected`?t():n,e.scope&&e.scope!==`source`?je.value:N.value,{...e,formatterConfig:F.value.formatterConfig})})},rt=f(()=>F.value.summaryRender),Y=j(),it=null,at=0,ot=()=>{at+=1,it?.destroy(),it=null},st=async()=>{let e=++at;if(it?.destroy(),it=null,!(!F.value.enableColumnDrag||!Y.value))try{let{default:t}=await import(`sortablejs`);if(e!==at||!Y.value)return;let n=Y.value.querySelector(`.n-data-table-thead tr`);if(!n)return;it=new t(n,{animation:F.value.columnDragAnimationDuration,handle:F.value.columnDragHandleClass?`.${F.value.columnDragHandleClass}`:void 0,filter:`.c-table-actions-column`,preventOnFilter:!0,ghostClass:`column-drag-ghost`,onEnd:e=>{if(e.oldIndex==null||e.newIndex==null)return;let t=[...je.value],n=t.filter(e=>e.visible!==!1&&e.key!==`_actions`),r=n[e.oldIndex],i=n[e.newIndex];if(!r||!i||r===i)return;let a=t.indexOf(r),o=t.indexOf(i);t.splice(a,1),t.splice(o,0,r),ke.handleColumnChange(t),C(`column-change`,t)}})}catch{}},ct=f(()=>({striped:F.value.striped,bordered:F.value.bordered,singleLine:F.value.singleLine,size:F.value.size,maxHeight:F.value.maxHeight,tableLayout:Me.value.some(e=>e.type===`selection`||e.type===`expand`||e.key===`_index`)&&Me.value.some(e=>!e.type&&!e.fixed&&e.key!==`_index`&&e.key!==`_actions`&&e.width===void 0)?`fixed`:void 0})),lt=j(),ut=j(!1),X=j({}),dt=f({get:()=>W.editStates.modalEdit.isModalVisible.value,set:e=>{W.editStates.modalEdit.isModalVisible.value=e}}),ft=f(()=>`edit-form-${W.editStates.modalEdit.editingRowKey.value??`new`}`),pt=f(()=>Yt(N.value,()=>X.value));L(()=>W.editStates.modalEdit.editingData.value,e=>{e&&Object.keys(e).length>0&&(X.value=l(e))},{immediate:!0,deep:!0});let Z=null;L(dt,e=>{e&&Z&&(clearTimeout(Z),Z=null),e||(Z&&clearTimeout(Z),Z=setTimeout(()=>{X.value={},Z=null},300))});let mt=async()=>{if(!lt.value||ut.value)return;let e=W.editStates.modalEdit.editingRowKey.value,t=l(X.value);ut.value=!0;try{try{await lt.value.validate()}catch{return}if(e!==W.editStates.modalEdit.editingRowKey.value||!c(t,X.value))return;await W.editStates.modalEdit.saveEdit(t)}finally{ut.value=!1}},ht=()=>{X.value={},W.editStates.modalEdit.cancelEdit()},gt=e=>{ke.handleColumnChange(e),C(`column-change`,ke.reactiveColumns.value)},{edit:_t,expand:vt,selection:yt,dynamicRows:Q}=W.stateManager,bt=()=>T.value?.getFilteredAndSortedData?.().length??Fe.processedData.value.length,xt={startEdit:_t.start,cancelEdit:_t.cancel,saveEdit:()=>W.editStates.modalEdit.isModalVisible.value?mt():_t.save(),expandRow:vt.row,collapseRow:vt.collapse,toggleExpand:vt.toggle,retryExpand:e=>W.expandState.retryExpand(e),invalidateExpand:e=>W.expandState.invalidateExpand(e),expandAll:vt.all,collapseAll:vt.collapseAll,selectRow:e=>J.value?q.select(e):(yt.select(e),yt.isSelected(e)),unselectRow:e=>{J.value?q.unselect(e):yt.unselect(e)},selectAll:()=>{J.value?q.selectAll():yt.all()},clearSelection:Qe,isRowSelected:e=>J.value?q.isSelected(e):yt.isSelected(e),clearAllSelections:()=>{q.clearAll(),W.stateManager.clearAllSelections()},selectChildRow:W.stateManager.childSelection.select,unselectChildRow:W.stateManager.childSelection.unselect,selectAllChildren:W.stateManager.childSelection.selectAll,clearChildrenSelection:W.stateManager.childSelection.clear,getChildSelectedRows:W.stateManager.childSelection.getSelected,addRow:Q.add,insertRow:Q.insert,deleteRow:Q.delete,copyRow:Q.copy,moveRowUp:Q.moveUp,moveRowDown:Q.moveDown,clearRowSelection:Q?.clearSelection,getSelectedRowData:Q.getSelected,printTable:e=>Q.print(e??Y.value),downloadTableScreenshot:(e,t)=>Q.download(e??Y.value,t),resetToFirstPage:()=>{H.value?(Ce.value=1,T.value?.page(1)):G.resetToFirstPage()},getTotalPages:()=>{if(!H.value)return G.getTotalPages();let e=S.pagination;if(!e)return 1;if(U.value&&e.itemCount===void 0&&e.pageCount!==void 0)return Math.max(1,e.pageCount);let t=U.value?e.itemCount??V.value.length:bt(),n=e.pageSize??Se.value;return Math.max(1,Math.ceil(t/Math.max(1,n)))},getSelectedRows:()=>J.value?q.getSelectedRows():yt.getSelected(),getEditingData:()=>_t.getEditingData()??null,isEditing:_t.isEditing,isExpanded:vt.isExpanded,getManager:()=>W.stateManager,exportData:nt,crossPageSelection:{enabled:J,selectedKeys:q.selectedKeys,selectedCount:q.selectedCount,select:q.select,unselect:q.unselect,selectAll:q.selectAll,clearAll:q.clearAll,getSelectedRows:q.getSelectedRows}};return i(xt),re(()=>{let e=S.crud?.tableRef;e&&(e.value=xt),st(),Y.value&&Ke.initRowDrag(Y.value)}),L([()=>F.value.enableColumnDrag,()=>F.value.columnDragHandleClass,()=>_e.value,()=>Me.value.length],async()=>{await D(),await st()},{immediate:!0,flush:`post`}),L([()=>F.value.rowDrag,Ve,()=>_e.value,()=>K.value.length,()=>G.currentPage.value],async()=>{await D(),Y.value&&await Ke.initRowDrag(Y.value)},{immediate:!0,deep:!0,flush:`post`}),ne(()=>{Z&&clearTimeout(Z),ot(),Ke.destroyRowDrag()}),(t,n)=>(k(),h(`div`,{ref_key:`tableWrapperRef`,ref:Y,class:te([`c-table-wrapper`,[e.wrapperClass,{"c-table-wrapper--flex":e.flexHeight},F.value.density&&`c-table-wrapper--${F.value.density}`]]),"aria-busy":_e.value},[m(` 动态行工具栏 `),F.value.dynamicRows&&I(W).dynamicRowsState?(k(),p(se(I(W).dynamicRowsState.renderToolbar(Y.value)),{key:0})):m(`v-if`,!0),m(` 表格工具栏 `),F.value.showToolbar?(k(),h(`div`,In,[g(`div`,Ln,[oe(t.$slots,`toolbar-left`,{},void 0,!0),F.value.toolbarActions.length?(k(),p(s,{key:0,actions:F.value.toolbarActions,config:{...F.value.toolbarActionBarConfig}},null,8,[`actions`,`config`])):m(`v-if`,!0)]),g(`div`,Rn,[oe(t.$slots,`toolbar-right`,{},void 0,!0),F.value.toolbarRightActions.length?(k(),p(s,{key:0,actions:F.value.toolbarRightActions,config:{align:`right`,...F.value.toolbarActionBarConfig}},null,8,[`actions`,`config`])):m(`v-if`,!0),F.value.exportConfig?(k(),p(r,{key:1,name:`mdi:download`,size:`18`,title:I(B)(`table.export`),clickable:``,class:`column-settings-btn`,onClick:n[0]||=e=>nt()},null,8,[`title`])):m(`v-if`,!0),F.value.enableColumnSettings?(k(),p(r,{key:2,name:`mdi:cog`,size:`18`,title:I(B)(`table.settings`),clickable:``,class:`column-settings-btn`,onClick:n[1]||=e=>Ae.value=!0},null,8,[`title`])):m(`v-if`,!0)])])):m(`v-if`,!0),m(` 批量操作栏 `),F.value.batchActions?.enabled&&Ye.value>0?(k(),h(`div`,zn,[g(`span`,Bn,P(I(B)(`table.selectedCount`,{count:Ye.value})),1),y(I(ve),{size:8},{default:R(()=>[(k(!0),h(d,null,ae(F.value.batchActions.actions||[],e=>(k(),p(I(z),{key:e.key,type:e.type||`default`,size:F.value.controlSize,loading:I(Xe).isRunning(e.key),disabled:I(Xe).isRunning(e.key),onClick:t=>Ze(e)},_({default:R(()=>[v(` `+P(e.label),1)]),_:2},[e.icon?{name:`icon`,fn:R(()=>[y(r,{name:e.icon,size:`14`},null,8,[`name`])]),key:`0`}:void 0]),1032,[`type`,`size`,`loading`,`disabled`,`onClick`]))),128)),y(I(z),{size:F.value.controlSize,onClick:Qe},{default:R(()=>[v(P(I(B)(`table.cancelSelection`)),1)]),_:1},8,[`size`])]),_:1})])):m(`v-if`,!0),m(` 错误状态 `),F.value.error?.show?(k(),h(`div`,Vn,[oe(t.$slots,`error`,{error:F.value.error},()=>[g(`div`,Hn,[y(r,{name:`mdi:alert-circle-outline`,size:`48`}),g(`p`,Un,P(F.value.error.message||I(B)(`table.loadFailed`)),1),F.value.error.onRetry?(k(),p(I(z),{key:0,type:`primary`,size:F.value.controlSize,onClick:F.value.error.onRetry},{default:R(()=>[v(P(I(B)(`common.retry`)),1)]),_:1},8,[`size`,`onClick`])):m(`v-if`,!0)])],!0)])):m(`v-if`,!0),m(` 表格主体 `),F.value.error?.show?m(`v-if`,!0):(k(),p(I(ue),ee({key:4,ref_key:`tableRef`,ref:T},{...ct.value,...t.$attrs},{"flex-height":e.flexHeight,columns:I(Me),data:H.value?V.value:I(G).paginatedData.value,pagination:H.value?S.pagination:!1,remote:H.value?U.value:!0,"onUpdate:sorter":Re,"onUpdate:filters":ze,"onUpdate:pageSize":Te,"onUpdate:page":we,loading:_e.value,"row-key":A,"row-props":We,"expanded-row-keys":I(W).expandedKeys.value,"checked-row-keys":$e.value??I(W).checkedKeys.value,"onUpdate:expandedRowKeys":I(W).expandState?.handleExpandChange,"onUpdate:checkedRowKeys":et,"scroll-x":I(Ne),"virtual-scroll":F.value.virtualScroll,"virtual-scroll-x":S.virtualScrollX,"min-row-height":F.value.virtualScroll?F.value.virtualItemHeight:void 0,"max-height":F.value.virtualScroll?F.value.virtualMaxHeight:F.value.maxHeight,summary:rt.value,"summary-placement":F.value.summaryPosition,"children-key":F.value.treeEnabled?F.value.treeChildrenKey:void 0,indent:F.value.treeEnabled?F.value.treeIndent:void 0,"default-expand-all":F.value.treeEnabled?F.value.treeDefaultExpandAll:void 0,style:{width:`100%`}}),{loading:R(()=>[oe(t.$slots,`loading`,{},()=>[y(I(a),{label:I(B)(`table.loading`)},null,8,[`label`])],!0)]),_:3},16,[`flex-height`,`columns`,`data`,`pagination`,`remote`,`loading`,`expanded-row-keys`,`checked-row-keys`,`onUpdate:expandedRowKeys`,`scroll-x`,`virtual-scroll`,`virtual-scroll-x`,`min-row-height`,`max-height`,`summary`,`summary-placement`,`children-key`,`indent`,`default-expand-all`])),m(` 分页 `),!H.value&&I(G).paginationConfig.value?(k(),p(I(ge),ee({key:5},I(G).paginationConfig.value,{class:`pagination-wrapper`}),null,16)):m(`v-if`,!0),m(` 编辑弹窗 `),F.value.editMode===`modal`||F.value.editMode===`both`?(k(),p(I(he),{key:6,show:dt.value,"onUpdate:show":n[3]||=e=>dt.value=e,title:F.value.modalTitle,width:F.value.modalWidth,preset:`card`,"mask-closable":!1,"close-on-esc":!1,class:`w60%`,closable:!1},{action:R(()=>[y(I(ve),{justify:`end`},{default:R(()=>[y(I(z),{size:F.value.density?F.value.controlSize:`medium`,disabled:ut.value,onClick:ht},{default:R(()=>[v(P(I(B)(`common.cancel`)),1)]),_:1},8,[`size`,`disabled`]),y(I(z),{type:`primary`,size:F.value.density?F.value.controlSize:`medium`,disabled:!lt.value||ut.value,loading:ut.value,onClick:mt},{default:R(()=>[v(P(I(B)(`common.save`)),1)]),_:1},8,[`size`,`disabled`,`loading`])]),_:1})]),default:R(()=>[dt.value&&pt.value.length?(k(),p(I(x),{ref_key:`editFormRef`,ref:lt,key:ft.value,modelValue:X.value,"onUpdate:modelValue":n[2]||=e=>X.value=e,options:pt.value,config:{layout:`grid`,density:F.value.density,grid:{cols:2,...F.value.density?{}:{xGap:16,yGap:16}},showActions:!1}},null,8,[`modelValue`,`options`,`config`])):m(`v-if`,!0)]),_:1},8,[`show`,`title`,`width`])):m(`v-if`,!0),m(` 动态行确认删除弹窗 `),F.value.dynamicRows&&I(W).dynamicRowsState?(k(),p(se(I(W).dynamicRowsState.renderConfirmModal()),{key:7})):m(`v-if`,!0),m(` 列设置抽屉 `),y(I(de),{show:I(Ae),"onUpdate:show":n[4]||=e=>E(Ae)?Ae.value=e:null,width:420,placement:`right`,"mask-closable":!0},{default:R(()=>[y(I(fe),{title:I(B)(`table.columnSettings`),closable:``},{default:R(()=>[y(Pn,{columns:I(je),"persist-key":F.value.persistKey,onChange:gt},null,8,[`columns`,`persist-key`])]),_:1},8,[`title`])]),_:1},8,[`show`])],10,Fn))}}),[[`__scopeId`,`data-v-e7f232d7`]]);const Gn=(e,t)=>Number.isFinite(e)?Math.max(1,Math.floor(e)):t;function Kn(e){let t=N([]),n=j(!1),r=N(),i=j(0),a=l(e.initialQuery),o=j(Gn(e.initialPage,1)),s=j(Gn(e.pageSize,20)),c=N(l(a)),u=0,d=null,p=async()=>{let a=++u;d?.abort(),d=new AbortController,n.value=!0,r.value=void 0;try{let n=await e.request({page:o.value,pageSize:s.value,query:l(c.value),signal:d.signal});if(a!==u||d.signal.aborted)return!1;if(!Array.isArray(n.data)||!Number.isFinite(n.total))throw TypeError(`[C_Table] request 必须返回 { data: T[], total: number }`);return t.value=l([...n.data]),i.value=Math.max(0,Math.floor(n.total)),e.onSuccess?.({data:t.value,total:i.value}),!0}catch(t){return a!==u||d.signal.aborted?!1:(r.value=t,e.onError?.(t),!1)}finally{a===u&&(n.value=!1)}},m=async(e,t=!0)=>(c.value=l(typeof e==`function`?e(c.value):{...c.value,...e}),o.value=1,t?p():!0),h=async(e,t)=>(o.value=Gn(e,o.value),s.value=Gn(t,s.value),p()),g=async(e=!0)=>(c.value=l(a),o.value=1,e?p():!0),_=f(()=>{let r=F(e.config)??{},a=typeof r.pagination==`object`?r.pagination:{};return{data:t.value,loading:n.value,columns:F(e.columns),rowKey:e.rowKey??`id`,config:{...r,pagination:{...a,enabled:!0,remote:!0,page:o.value,pageSize:s.value,total:i.value}}}}),v=f(()=>({..._.value,onPaginationChange:h})),y=()=>{u+=1,d?.abort(),d=null,n.value=!1};return e.immediate!==!1&&re(()=>void p()),ie(y),{data:t,loading:n,error:r,total:i,page:o,pageSize:s,query:c,tableProps:_,execute:p,reload:p,setQuery:m,resetQuery:g,handlePaginationChange:h,bindings:v,cancel:y}}export{ze as C,Ve as S,Ie as T,at as _,tn as a,qe as b,Ht as c,It as d,Ot as f,bt as g,xt as h,nn as i,Gt as l,Tt as m,Wn as n,en as o,Et as p,dn as r,Lt as s,Kn as t,Ut as u,Ke as v,Le as w,He as x,q as y};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as vue from "vue";
|
|
2
2
|
import { Component, Ref } from "vue";
|
|
3
|
+
import { Connection, EdgeChange, EdgeUpdateEvent, NodeChange } from "@vue-flow/core";
|
|
3
4
|
|
|
4
5
|
//#region src/components/C_WorkFlow/types.d.ts
|
|
5
6
|
/**
|
|
@@ -260,23 +261,23 @@ declare const __VLS_export: vue.DefineComponent<WorkflowProps, {
|
|
|
260
261
|
}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
|
261
262
|
"update:modelValue": (value: WorkflowData) => any;
|
|
262
263
|
change: (value: WorkflowData) => any;
|
|
263
|
-
save: (data: WorkflowData) => any;
|
|
264
264
|
"node-click": (node: WorkflowNode<NodeType>) => any;
|
|
265
|
+
save: (data: WorkflowData) => any;
|
|
265
266
|
"edge-click": (edge: WorkflowEdge) => any;
|
|
266
267
|
"validate-error": (errors: ValidationError[]) => any;
|
|
267
268
|
}, string, vue.PublicProps, Readonly<WorkflowProps> & Readonly<{
|
|
268
269
|
"onUpdate:modelValue"?: ((value: WorkflowData) => any) | undefined;
|
|
269
270
|
onChange?: ((value: WorkflowData) => any) | undefined;
|
|
270
|
-
onSave?: ((data: WorkflowData) => any) | undefined;
|
|
271
271
|
"onNode-click"?: ((node: WorkflowNode<NodeType>) => any) | undefined;
|
|
272
|
+
onSave?: ((data: WorkflowData) => any) | undefined;
|
|
272
273
|
"onEdge-click"?: ((edge: WorkflowEdge) => any) | undefined;
|
|
273
274
|
"onValidate-error"?: ((errors: ValidationError[]) => any) | undefined;
|
|
274
275
|
}>, {
|
|
275
276
|
theme: "light" | "dark";
|
|
277
|
+
readonly: boolean;
|
|
276
278
|
users: User[];
|
|
277
279
|
roles: Role[];
|
|
278
280
|
departments: Department[];
|
|
279
|
-
readonly: boolean;
|
|
280
281
|
allowCycles: boolean;
|
|
281
282
|
}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
|
|
282
283
|
declare const _default: typeof __VLS_export;
|
|
@@ -978,6 +979,13 @@ declare function useWorkflowNodes(props: WorkflowProps, emit: EmitFn$1, vueFlowR
|
|
|
978
979
|
copyNodes: number;
|
|
979
980
|
conditionNodes: number;
|
|
980
981
|
}>;
|
|
982
|
+
commitCanvasChange: () => void;
|
|
983
|
+
handleCanvasChanges: (changes: NodeChange[] | EdgeChange[]) => void;
|
|
984
|
+
connectNodes: (connection: Connection) => void;
|
|
985
|
+
updateConnection: ({
|
|
986
|
+
edge,
|
|
987
|
+
connection
|
|
988
|
+
}: EdgeUpdateEvent) => void;
|
|
981
989
|
addNode: (type: NodeType) => void;
|
|
982
990
|
onNodeClick: (event: {
|
|
983
991
|
node: {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as vue from "vue";
|
|
2
2
|
import { Component, Ref } from "vue";
|
|
3
|
+
import { Connection, EdgeChange, EdgeUpdateEvent, NodeChange } from "@vue-flow/core";
|
|
3
4
|
|
|
4
5
|
//#region src/components/C_WorkFlow/types.d.ts
|
|
5
6
|
/**
|
|
@@ -260,23 +261,23 @@ declare const __VLS_export: vue.DefineComponent<WorkflowProps, {
|
|
|
260
261
|
}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
|
261
262
|
"update:modelValue": (value: WorkflowData) => any;
|
|
262
263
|
change: (value: WorkflowData) => any;
|
|
263
|
-
save: (data: WorkflowData) => any;
|
|
264
264
|
"node-click": (node: WorkflowNode<NodeType>) => any;
|
|
265
|
+
save: (data: WorkflowData) => any;
|
|
265
266
|
"edge-click": (edge: WorkflowEdge) => any;
|
|
266
267
|
"validate-error": (errors: ValidationError[]) => any;
|
|
267
268
|
}, string, vue.PublicProps, Readonly<WorkflowProps> & Readonly<{
|
|
268
269
|
"onUpdate:modelValue"?: ((value: WorkflowData) => any) | undefined;
|
|
269
270
|
onChange?: ((value: WorkflowData) => any) | undefined;
|
|
270
|
-
onSave?: ((data: WorkflowData) => any) | undefined;
|
|
271
271
|
"onNode-click"?: ((node: WorkflowNode<NodeType>) => any) | undefined;
|
|
272
|
+
onSave?: ((data: WorkflowData) => any) | undefined;
|
|
272
273
|
"onEdge-click"?: ((edge: WorkflowEdge) => any) | undefined;
|
|
273
274
|
"onValidate-error"?: ((errors: ValidationError[]) => any) | undefined;
|
|
274
275
|
}>, {
|
|
275
276
|
theme: "light" | "dark";
|
|
277
|
+
readonly: boolean;
|
|
276
278
|
users: User[];
|
|
277
279
|
roles: Role[];
|
|
278
280
|
departments: Department[];
|
|
279
|
-
readonly: boolean;
|
|
280
281
|
allowCycles: boolean;
|
|
281
282
|
}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
|
|
282
283
|
declare const _default: typeof __VLS_export;
|
|
@@ -978,6 +979,13 @@ declare function useWorkflowNodes(props: WorkflowProps, emit: EmitFn$1, vueFlowR
|
|
|
978
979
|
copyNodes: number;
|
|
979
980
|
conditionNodes: number;
|
|
980
981
|
}>;
|
|
982
|
+
commitCanvasChange: () => void;
|
|
983
|
+
handleCanvasChanges: (changes: NodeChange[] | EdgeChange[]) => void;
|
|
984
|
+
connectNodes: (connection: Connection) => void;
|
|
985
|
+
updateConnection: ({
|
|
986
|
+
edge,
|
|
987
|
+
connection
|
|
988
|
+
}: EdgeUpdateEvent) => void;
|
|
981
989
|
addNode: (type: NodeType) => void;
|
|
982
990
|
onNodeClick: (event: {
|
|
983
991
|
node: {
|
package/dist/verification.d.cts
CHANGED
|
@@ -92,8 +92,8 @@ declare const __VLS_export: vue.DefineComponent<CaptchaProps, {
|
|
|
92
92
|
"onLoad-error"?: ((error: unknown) => any) | undefined;
|
|
93
93
|
"onVisible-change"?: ((visible: boolean) => any) | undefined;
|
|
94
94
|
}>, {
|
|
95
|
-
disabled: boolean;
|
|
96
95
|
theme: "light" | "dark";
|
|
96
|
+
disabled: boolean;
|
|
97
97
|
provider: CaptchaProvider;
|
|
98
98
|
images: string[];
|
|
99
99
|
verificationTimeout: number;
|
package/dist/verification.d.ts
CHANGED
|
@@ -92,8 +92,8 @@ declare const __VLS_export: vue.DefineComponent<CaptchaProps, {
|
|
|
92
92
|
"onLoad-error"?: ((error: unknown) => any) | undefined;
|
|
93
93
|
"onVisible-change"?: ((visible: boolean) => any) | undefined;
|
|
94
94
|
}>, {
|
|
95
|
-
disabled: boolean;
|
|
96
95
|
theme: "light" | "dark";
|
|
96
|
+
disabled: boolean;
|
|
97
97
|
provider: CaptchaProvider;
|
|
98
98
|
images: string[];
|
|
99
99
|
verificationTimeout: number;
|
package/docs/architecture.en.md
CHANGED
|
@@ -25,7 +25,7 @@ The core is currently an internal boundary, not a separately published package.
|
|
|
25
25
|
- ESM resolves `.d.ts`; CJS resolves `.d.cts`. Each declaration condition matches its JavaScript format.
|
|
26
26
|
- All public reachable declarations are checked for `naive-ui/es/*` and `naive-ui/lib/*` internal imports, in both formats.
|
|
27
27
|
|
|
28
|
-
The consumer contract check unpacks a real tarball into a temporary directory and attaches the repository's resolved dependencies. It covers Node16/NodeNext ESM/CJS types and subpath runtime imports without optional peers.
|
|
28
|
+
The default consumer contract check unpacks a real tarball into a temporary directory and attaches the repository's resolved dependencies. It covers Node16/NodeNext ESM/CJS types and subpath runtime imports without optional peers. The `minimum` and `latest` profiles instead install fresh dependencies from the registry and also render representative components. CI runs both profiles; application acceptance remains a separate check.
|
|
29
29
|
|
|
30
30
|
## Highlight instances
|
|
31
31
|
|
|
@@ -81,3 +81,5 @@ Running both UI libraries in one application is outside this iteration. That wou
|
|
|
81
81
|
Verify behavior through published consumers, public types, multiple applications, dynamic registration, unmount and host-state restoration. Source-level dependency guards complement runtime verification.
|
|
82
82
|
|
|
83
83
|
`bun run verify` is the local quality gate. `bun run check:audit` remains a separate check and CI gate. Record actual advisory results; do not hide them by disabling checks or forcing unverified major versions.
|
|
84
|
+
|
|
85
|
+
Fresh consumer compatibility is checked with `bun run check:consumer-contracts minimum` and `latest`. Each profile installs the real tarball in an isolated temporary directory, checks ESM/CJS types and renders representative components. CI runs both profiles. `/config` exports shared injection keys and protocol types without loading the presentation layer.
|
package/docs/architecture.md
CHANGED
|
@@ -25,7 +25,9 @@
|
|
|
25
25
|
- ESM 使用 `.d.ts`,CJS 使用 `.d.cts`;条件类型入口与相应 JavaScript 格式对应。
|
|
26
26
|
- 公共可达声明同时检查 ESM / CJS,不能引用 `naive-ui/es/*` 或 `naive-ui/lib/*` 内部路径。
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
消费者契约验证使用真实 tarball,覆盖 Node16 / NodeNext 的 ESM / CJS 类型、轻量配置入口的注入键一致性和缺失可选 peer 的子路径运行行为。默认检查复用本地安装;`bun run check:consumer-contracts minimum` / `latest` 在临时目录联网全新安装依赖并渲染表单、表格、原生数字键菜单。CI 分别运行两种组合。类型检查保留 `skipLibCheck`,不将第三方声明内部检查冒充业务消费验证。
|
|
29
|
+
|
|
30
|
+
`/config` 是独立公共配置入口,只包含注入键和协议类型,不引入呈现层。组件注册、样式与反馈适配仍由各自入口负责。
|
|
29
31
|
|
|
30
32
|
## 高亮实例
|
|
31
33
|
|
package/docs/guides/usage.en.md
CHANGED
|
@@ -671,3 +671,25 @@ Define domain models in the application. Components preserve their types without
|
|
|
671
671
|
CRUD bindings remain structural. `@robot-admin/request-core` 0.6.3 accepts component columns directly, without application converters or a dependency between the two packages.
|
|
672
672
|
|
|
673
673
|
For a concrete business model, enable dynamic insertion with the existing `dynamicRows.defaultRowData` factory returning a complete row and valid unique key; `false` still disables it directly. Factory keys retain their original type. Copying with a string key preserves business fields and takes a fresh key from the factory. With a function key, the factory receives an optional source copy and returns a complete new record. Missing, duplicate or invalid factory keys report failure without changing data. Open dynamic records retain the legacy empty-row shorthand.
|
|
674
|
+
|
|
675
|
+
## Breadcrumb directory navigation
|
|
676
|
+
|
|
677
|
+
`C_Breadcrumb` keeps automatic route and manual `items` modes. Optional `menus` accepts the host's authorized menu tree directly (`path/key`, `label/meta.title`, `children`); the component emits `select(path)` and leaves authorization and navigation to the application. Supplying an empty menu explicitly exposes no route-derived shortcuts. Hidden entries and unresolved parameterized leaves are omitted from shortcuts, while the active detail page remains visible unless explicitly excluded with `meta.breadcrumb: false`.
|
|
678
|
+
|
|
679
|
+
Parent buttons open a themed directory panel with page counts and current-page feedback. Narrow containers collapse intermediate path segments. Arrow keys, Home/End, Enter/Space and Escape are supported. Readonly inputs remain unchanged, disabled directories disable their descendants, and route/query/menu/size changes close stale panels. Generic text uses the existing component locale service. Existing `items`, `showIcon`, `iconSize`, `labelFormatter` and `select` remain available; manual labels are not translated again.
|
|
680
|
+
|
|
681
|
+
## Configuration and behavior contracts (0.21)
|
|
682
|
+
|
|
683
|
+
Use `@robot-admin/naive-ui-components/config` to import `COMPONENT_LOCALE_KEY`, `COMPONENT_FEEDBACK_KEY` and their protocol types. This entry shares injection identities with the root entry without importing components, router or the Naive feedback adapter. Provide a reactive configuration or locale getter for language changes. Built-in `zh-CN`/`en-US` text now also covers Tree, Transfer, SplitPane, Chat, NotificationCenter, Theme, Language, Skeleton and Timeline. Explicit labels remain application-owned.
|
|
684
|
+
|
|
685
|
+
Form action slots receive the current model, including a normal business field named `value`. Collapsed search fields remain mounted and validated; errors expand the form. `show: false` excludes a field. Table expansion discards stale completions after dataset changes, and nested selection honors eligibility, parent limits and consistent events. Native Menu options preserve string/number keys; route-mode callbacks remain string paths. Chat drafts belong to the contact and retain at most 50 nonempty inactive drafts. ER and Workflow emit user-completed canvas edits without echoing parent updates. Human verification gates password login; SMS uses its own validation.
|
|
686
|
+
|
|
687
|
+
Upload `concurrency` applies across normal and chunk upload requests. Cancellation stops subsequent hash reads; a Blob read already in progress is discarded on completion. Application-provided check/merge callbacks retain responsibility for their own network lifecycle.
|
|
688
|
+
|
|
689
|
+
Excel previews preserve raw values, cell types and workbook display formatting. Sheets expand on demand. Defaults are 32 MiB per file and 100000 cells per sheet; `previewLimits: { maxBytes, maxCells }` accepts finite safe positive integers. Over-budget previews report an error and retain download access. These limits do not guarantee a bound on decompressed archive memory.
|
|
690
|
+
|
|
691
|
+
WaterFall fills a visible sentinel for at most five consecutive pages, then exposes a manual continuation. Custom `footer` slots receive `paused` and `loadMore`. Continue updating `loading` and `noMore` in the host. Draggable instances sort independently by default; cross-list transfers require an explicitly shared `group`.
|
|
692
|
+
|
|
693
|
+
Video supports MP4/HLS by default. DASH/FLV require a `sourceAdapters` loader returning a compatible xgplayer constructor; missing adapters enter the error state and emit `error`. Protocol SDK installation remains opt-in.
|
|
694
|
+
|
|
695
|
+
Notification `categoryOptions` customizes labels/order of existing `all/system/business/alarm` categories. It does not add domain enums. The `filters` slot receives `{ controller }`; `item` and `item-actions` receive `{ message, index, busy, select, read, remove }`. Use supplied callbacks to retain busy/error handling. Approval commands, tenancy, authorization and backend contracts remain application-owned; Robot_Admin's enterprise notification store is not bundled into this preview component.
|