dishui 0.0.84 → 0.0.89
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/dist/components/Input/index.js +52 -62
- package/dist/components/Input/index.js.map +1 -1
- package/dist/components/LayoutSuite/index.d.ts +10 -0
- package/dist/components/LayoutSuite/index.js +27 -18
- package/dist/components/LayoutSuite/index.js.map +1 -1
- package/dist/components/Markdown/markdownComponents.js +1 -0
- package/dist/components/Markdown/markdownComponents.js.map +1 -1
- package/dist/components/Markdown/useMarkdownSource.js +46 -31
- package/dist/components/Markdown/useMarkdownSource.js.map +1 -1
- package/dist/components/Markdown/useMarkmapRenderer.js +44 -31
- package/dist/components/Markdown/useMarkmapRenderer.js.map +1 -1
- package/dist/components/Markdown/useMermaidRenderer.js +49 -31
- package/dist/components/Markdown/useMermaidRenderer.js.map +1 -1
- package/dist/components/ProtectedRoute/index.d.ts +2 -1
- package/dist/components/ProtectedRoute/index.js +16 -6
- package/dist/components/ProtectedRoute/index.js.map +1 -1
- package/dist/components/Select/index.d.ts +6 -0
- package/dist/components/Select/index.js +166 -136
- package/dist/components/Select/index.js.map +1 -1
- package/dist/components/Tabs/index.d.ts +12 -1
- package/dist/components/Tabs/index.js +42 -17
- package/dist/components/Tabs/index.js.map +1 -1
- package/dist/components/pro/ArticleContextMenu/index.js +7 -7
- package/dist/components/pro/CodeEditor/editors/CodeEditor.js +200 -189
- package/dist/components/pro/CodeEditor/editors/CodeEditor.js.map +1 -1
- package/dist/components/pro/CodeEditor/types.d.ts +3 -0
- package/dist/components/pro/DataTable/DataTable.d.ts +1 -1
- package/dist/components/pro/DataTable/DataTable.js +98 -240
- package/dist/components/pro/DataTable/DataTable.js.map +1 -1
- package/dist/components/pro/DataTable/components/TableBody.js +14 -16
- package/dist/components/pro/DataTable/components/TableBody.js.map +1 -1
- package/dist/components/pro/DataTable/components/TablePagination.d.ts +3 -9
- package/dist/components/pro/DataTable/components/TablePagination.js +29 -25
- package/dist/components/pro/DataTable/components/TablePagination.js.map +1 -1
- package/dist/components/pro/DataTable/tanstack-table.d.ts +2 -2
- package/dist/components/pro/DataTable/tanstack-table.js +29 -21
- package/dist/components/pro/DataTable/tanstack-table.js.map +1 -1
- package/dist/components/pro/DataTable/treeDataUtils.d.ts +2 -0
- package/dist/components/pro/DataTable/treeDataUtils.js +18 -19
- package/dist/components/pro/DataTable/treeDataUtils.js.map +1 -1
- package/dist/components/pro/DataTable/types.d.ts +24 -0
- package/dist/components/pro/DataTable/useDataTableModel.d.ts +16 -0
- package/dist/components/pro/DataTable/useDataTableModel.js +148 -0
- package/dist/components/pro/DataTable/useDataTableModel.js.map +1 -0
- package/dist/components/pro/FileExplorer/Breadcrumb.js +12 -12
- package/dist/components/pro/Flow/nodes/DataNodeView.js +87 -82
- package/dist/components/pro/Flow/nodes/DataNodeView.js.map +1 -1
- package/dist/components/pro/Flow/nodes/MediaContent.js +1 -1
- package/dist/components/pro/Flow/nodes/MediaContent.js.map +1 -1
- package/dist/components/pro/Flow/nodes/MediaOverlay.js +1 -1
- package/dist/components/pro/Flow/nodes/MediaOverlay.js.map +1 -1
- package/dist/components/pro/Flow/nodes/Model3DView.js +69 -63
- package/dist/components/pro/Flow/nodes/Model3DView.js.map +1 -1
- package/dist/components/pro/Flow/nodes/chartGeometryBudget.d.ts +14 -0
- package/dist/components/pro/Flow/nodes/chartGeometryBudget.js +76 -0
- package/dist/components/pro/Flow/nodes/chartGeometryBudget.js.map +1 -0
- package/dist/components/pro/Flow/nodes/demandRender.d.ts +11 -0
- package/dist/components/pro/Flow/nodes/demandRender.js +26 -0
- package/dist/components/pro/Flow/nodes/demandRender.js.map +1 -0
- package/dist/components/pro/RichTextEditor/SlashMenu.js +68 -58
- package/dist/components/pro/RichTextEditor/SlashMenu.js.map +1 -1
- package/dist/contexts/AppContext.d.ts +1 -0
- package/dist/contexts/AppContext.js +144 -145
- package/dist/contexts/AppContext.js.map +1 -1
- package/dist/contexts/authentication.d.ts +7 -0
- package/dist/contexts/authentication.js +22 -0
- package/dist/contexts/authentication.js.map +1 -0
- package/dist/dishui.css +1 -1
- package/dist/hooks/useControllableState.d.ts +6 -14
- package/dist/hooks/useControllableState.js +21 -15
- package/dist/hooks/useControllableState.js.map +1 -1
- package/dist/hooks/useTableColumns.d.ts +3 -3
- package/dist/hooks/useTableColumns.js +2 -2
- package/dist/hooks/useTableColumns.js.map +1 -1
- package/dist/hooks/useTableData.d.ts +11 -4
- package/dist/hooks/useTableData.js +44 -26
- package/dist/hooks/useTableData.js.map +1 -1
- package/dist/index-nostyled.d.ts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +97 -97
- package/dist/utils/i18n.js +1 -1
- package/dist/utils/i18n.js.map +1 -1
- package/dist/utils/routerBuilder.d.ts +7 -5
- package/dist/utils/routerBuilder.js +11 -15
- package/dist/utils/routerBuilder.js.map +1 -1
- package/dist/utils/safeStorage.d.ts +8 -0
- package/dist/utils/safeStorage.js +45 -0
- package/dist/utils/safeStorage.js.map +1 -0
- package/package.json +22 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"treeDataUtils.js","names":[],"sources":["../../../../src/components/pro/DataTable/treeDataUtils.ts"],"sourcesContent":["import { Row } from './tanstack-table';\n\nexport const treeRowAnimationStyles = `\n.tree-row-icon {\n transition: transform 0.3s ease;\n}\n\n.tree-row-expanded .tree-row-icon {\n transform: rotate(90deg);\n}\n`;\n\nexport function findAllChildRowIds<T>(\n row: any,\n parentId: string,\n subDataKey: string,\n getRowId?: (row: T, index: number) => string,\n prefix: string = '',\n): string[] {\n const childIds: string[] = [];\n const subs = row[subDataKey];\n\n if (Array.isArray(subs) && subs.length > 0) {\n subs.forEach((subRow: any, index: number) => {\n const childId = getRowId\n ? getRowId(subRow, index)\n : `${
|
|
1
|
+
{"version":3,"file":"treeDataUtils.js","names":[],"sources":["../../../../src/components/pro/DataTable/treeDataUtils.ts"],"sourcesContent":["import { Row } from './tanstack-table';\n\nexport const treeRowAnimationStyles = `\n.tree-row-icon {\n transition: transform 0.3s ease;\n}\n\n.tree-row-expanded .tree-row-icon {\n transform: rotate(90deg);\n}\n`;\n\nexport function findAllChildRowIds<T>(\n row: any,\n parentId: string,\n subDataKey: string,\n getRowId?: (row: T, index: number) => string,\n prefix: string = '',\n): string[] {\n const childIds: string[] = [];\n const subs = row[subDataKey];\n\n if (Array.isArray(subs) && subs.length > 0) {\n subs.forEach((subRow: any, index: number) => {\n const childId = getRowId\n ? getRowId(subRow, index)\n : `${parentId}_${index}`;\n\n childIds.push(childId);\n\n const subChildIds = findAllChildRowIds(\n subRow, childId, subDataKey, getRowId,\n );\n childIds.push(...subChildIds);\n });\n }\n\n return childIds;\n}\n\nexport function flattenTreeData<T extends object>(\n items: T[],\n expandedRowsState: Record<string, boolean>,\n subDataKey: string,\n getRowId?: (row: T, index: number) => string,\n depth: number = 0,\n parentId: string = '',\n isParentExpanded: boolean = true,\n result: any[] = [],\n onlyTopLevel: boolean = false,\n) {\n items.forEach((item: any, index: number) => {\n const rowId = getRowId\n ? getRowId(item, index)\n : parentId ? `${parentId}_${index}` : `${index}`;\n\n const rowWithMeta = {\n ...item,\n __depth: depth,\n __id: rowId,\n __parentId: parentId,\n __hasChildren: Array.isArray(item[subDataKey]) && item[subDataKey].length > 0,\n __isExpanded: expandedRowsState[rowId] || false,\n __childCount: Array.isArray(item[subDataKey]) ? item[subDataKey].length : 0,\n };\n\n if (onlyTopLevel) {\n if (depth === 0) result.push(rowWithMeta);\n } else {\n if (depth === 0 || isParentExpanded) result.push(rowWithMeta);\n }\n\n const isExpanded = expandedRowsState[rowId] || false;\n if (Array.isArray(item[subDataKey]) && item[subDataKey].length > 0 && isExpanded && !onlyTopLevel) {\n flattenTreeData(\n item[subDataKey], expandedRowsState, subDataKey, getRowId,\n depth + 1, rowId, isParentExpanded && isExpanded, result, onlyTopLevel,\n );\n }\n });\n\n return result;\n}\n\n/** Keep the hierarchy intact for TanStack's filter → sort → root-page → expand pipeline. */\nexport function prepareTreeData<T extends object>(\n items: T[],\n expanded: Record<string, boolean>,\n subDataKey: string,\n getRowId?: (row: T, index: number) => string,\n depth = 0,\n parentId = '',\n): T[] {\n return items.map((item, index) => {\n const id = getRowId ? getRowId(item, index) : depth > 0 ? `${parentId}_${index}` : String(index);\n const children = (item as Record<string, unknown>)[subDataKey];\n const subs = Array.isArray(children) ? children as T[] : [];\n return {\n ...item,\n [subDataKey]: prepareTreeData(subs, expanded, subDataKey, getRowId, depth + 1, id),\n __id: id,\n __parentId: parentId,\n __depth: depth,\n __hasChildren: subs.length > 0,\n __childCount: subs.length,\n __isExpanded: expanded[id] || false,\n };\n });\n}\n\nexport function createTreeSortingFns<T extends object>() {\n return {\n treeSortAsc: (rowA: Row<T>, rowB: Row<T>, columnId: string) => {\n const valueA = rowA.original as any;\n const valueB = rowB.original as any;\n\n const depthA = rowA.depth ?? valueA.__depth ?? 0;\n const depthB = rowB.depth ?? valueB.__depth ?? 0;\n\n if (depthA !== depthB) return 0;\n\n if (depthA === 0 && depthB === 0) {\n const colA = rowA.getValue(columnId);\n const colB = rowB.getValue(columnId);\n\n if (colA === colB) return 0;\n if (colA == null) return -1;\n if (colB == null) return 1;\n\n if (typeof colA === 'number' && typeof colB === 'number') {\n return colA - colB;\n }\n if (colA instanceof Date && colB instanceof Date) {\n return colA.getTime() - colB.getTime();\n }\n return String(colA).localeCompare(String(colB));\n }\n\n return 0;\n },\n };\n}\n"],"mappings":";AAEA,IAAa,IAAyB;AAUtC,SAAgB,EACd,GACA,GACA,GACA,GACA,IAAiB,IACP;CACV,IAAM,IAAqB,CAAC,GACtB,IAAO,EAAI;CAiBjB,OAfI,MAAM,QAAQ,CAAI,KAAK,EAAK,SAAS,KACvC,EAAK,SAAS,GAAa,MAAkB;EAC3C,IAAM,IAAU,IACZ,EAAS,GAAQ,CAAK,IACtB,GAAG,EAAS,GAAG;EAEnB,EAAS,KAAK,CAAO;EAErB,IAAM,IAAc,EAClB,GAAQ,GAAS,GAAY,CAC/B;EACA,EAAS,KAAK,GAAG,CAAW;CAC9B,CAAC,GAGI;AACT;AA+CA,SAAgB,EACd,GACA,GACA,GACA,GACA,IAAQ,GACR,IAAW,IACN;CACL,OAAO,EAAM,KAAK,GAAM,MAAU;EAChC,IAAM,IAAK,IAAW,EAAS,GAAM,CAAK,IAAI,IAAQ,IAAI,GAAG,EAAS,GAAG,MAAU,OAAO,CAAK,GACzF,IAAY,EAAiC,IAC7C,IAAO,MAAM,QAAQ,CAAQ,IAAI,IAAkB,CAAC;EAC1D,OAAO;GACL,GAAG;IACF,IAAa,EAAgB,GAAM,GAAU,GAAY,GAAU,IAAQ,GAAG,CAAE;GACjF,MAAM;GACN,YAAY;GACZ,SAAS;GACT,eAAe,EAAK,SAAS;GAC7B,cAAc,EAAK;GACnB,cAAc,EAAS,MAAO;EAChC;CACF,CAAC;AACH;AAEA,SAAgB,IAAyC;CACvD,OAAO,EACL,cAAc,GAAc,GAAc,MAAqB;EAC7D,IAAM,IAAS,EAAK,UACd,IAAS,EAAK,UAEd,IAAS,EAAK,SAAS,EAAO,WAAW,GACzC,IAAS,EAAK,SAAS,EAAO,WAAW;EAE/C,IAAI,MAAW,GAAQ,OAAO;EAE9B,IAAI,MAAW,KAAK,MAAW,GAAG;GAChC,IAAM,IAAO,EAAK,SAAS,CAAQ,GAC7B,IAAO,EAAK,SAAS,CAAQ;GAYnC,OAVI,MAAS,IAAa,IACtB,KAAQ,OAAa,KACrB,KAAQ,OAAa,IAErB,OAAO,KAAS,YAAY,OAAO,KAAS,WACvC,IAAO,IAEZ,aAAgB,QAAQ,aAAgB,OACnC,EAAK,QAAQ,IAAI,EAAK,QAAQ,IAEhC,OAAO,CAAI,CAAC,CAAC,cAAc,OAAO,CAAI,CAAC;EAChD;EAEA,OAAO;CACT,EACF;AACF"}
|
|
@@ -46,14 +46,21 @@ export interface DataTableProps<T extends object> {
|
|
|
46
46
|
enableSelection?: boolean;
|
|
47
47
|
enableColumnReordering?: boolean;
|
|
48
48
|
enableColumnResizing?: boolean;
|
|
49
|
+
/** 跳过本地筛选;服务端分页时始终跳过。 */
|
|
49
50
|
manualFiltering?: boolean;
|
|
51
|
+
/** 跳过本地排序;服务端分页时始终跳过。 */
|
|
52
|
+
manualSorting?: boolean;
|
|
53
|
+
/** 按根节点分页,展开后代不占页大小。默认仅对根节点筛选,保留匹配根的整个子树。 */
|
|
50
54
|
enableExpanding?: boolean;
|
|
51
55
|
subDataKey?: string;
|
|
52
56
|
onRowExpand?: ExpandRowHandler;
|
|
53
57
|
expandedRows?: Record<string, boolean>;
|
|
58
|
+
defaultExpandedRows?: Record<string, boolean>;
|
|
54
59
|
onExpandedRowsChange?: (expandedRows: Record<string, boolean>) => void;
|
|
60
|
+
/** 必须全表唯一;服务端分页/数据重排时应提供稳定业务 ID。默认 ID 是输入索引(子行用父 ID_index)。 */
|
|
55
61
|
getRowId?: (row: T, index: number) => string;
|
|
56
62
|
indentSize?: number;
|
|
63
|
+
/** 默认 true:只排序根节点,后代保持输入顺序。false:逐层排序同级节点,仍保持树结构。 */
|
|
57
64
|
enableTreeSort?: boolean;
|
|
58
65
|
toolbar?: ToolbarOptions;
|
|
59
66
|
customFilterPanel?: React.ComponentType<CustomFilterPanelProps>;
|
|
@@ -71,19 +78,36 @@ export interface DataTableProps<T extends object> {
|
|
|
71
78
|
onTableClick?: TableEventHandler;
|
|
72
79
|
onTableMouseEnter?: TableEventHandler;
|
|
73
80
|
onTableMouseLeave?: TableEventHandler;
|
|
81
|
+
/** 默认 false:data 是完整客户端数据,先筛选/排序再分页。
|
|
82
|
+
* true:data 已由服务端完成筛选/排序/分页,不再做本地转换;需提供 rowCount 或 pageCount。
|
|
83
|
+
* enablePagination=false 只关闭本地切片和分页控件,不取消 manual* 的含义。
|
|
84
|
+
*/
|
|
85
|
+
manualPagination?: boolean;
|
|
86
|
+
/** 服务端筛选后的根节点总数;仅 manualPagination 时使用。 */
|
|
87
|
+
rowCount?: number;
|
|
88
|
+
/** 服务端总页数,优先于 rowCount;必须是非负整数(不支持未知总页数 -1)。 */
|
|
89
|
+
pageCount?: number;
|
|
74
90
|
pageSize?: number;
|
|
91
|
+
defaultPageSize?: number;
|
|
92
|
+
/** 从 0 开始。客户端非受控页码在数据缩短时夹到最后一页;受控页码由父组件负责保持有效。 */
|
|
75
93
|
pageIndex?: number;
|
|
94
|
+
defaultPageIndex?: number;
|
|
76
95
|
onPageChange?: (page: number) => void;
|
|
77
96
|
onPageSizeChange?: (pageSize: number) => void;
|
|
78
97
|
selectedRows?: RowSelectionState;
|
|
98
|
+
defaultSelectedRows?: RowSelectionState;
|
|
79
99
|
onRowSelectionChange?: (selectedRows: RowSelectionState) => void;
|
|
80
100
|
sortingState?: SortingState;
|
|
101
|
+
defaultSortingState?: SortingState;
|
|
81
102
|
onSortingChange?: (sortingState: SortingState) => void;
|
|
82
103
|
columnFilters?: ColumnFiltersState;
|
|
104
|
+
defaultColumnFilters?: ColumnFiltersState;
|
|
83
105
|
onColumnFiltersChange?: (columnFilters: ColumnFiltersState) => void;
|
|
84
106
|
columnVisibility?: VisibilityState;
|
|
107
|
+
defaultColumnVisibility?: VisibilityState;
|
|
85
108
|
onColumnVisibilityChange?: (columnVisibility: VisibilityState) => void;
|
|
86
109
|
columnOrder?: string[];
|
|
110
|
+
defaultColumnOrder?: string[];
|
|
87
111
|
onColumnOrderChange?: (columnOrder: string[]) => void;
|
|
88
112
|
extensions?: DataTableExtension<T>[];
|
|
89
113
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type PaginationState, type Updater } from './tanstack-table';
|
|
2
|
+
import type { DataTableProps } from './types';
|
|
3
|
+
/** Shared by the view and executable row-model regression tests. */
|
|
4
|
+
export declare function useDataTableModel<T extends object>(props: DataTableProps<T>): {
|
|
5
|
+
table: import("./tanstack-table").Table<T>;
|
|
6
|
+
rowSelection: import("@tanstack/table-core").RowSelectionState;
|
|
7
|
+
visibilityState: import("@tanstack/table-core").ColumnVisibilityState;
|
|
8
|
+
columnOrderState: string[];
|
|
9
|
+
setColumnOrderState: import("react").Dispatch<import("react").SetStateAction<string[]>>;
|
|
10
|
+
expandedRowsState: Record<string, boolean>;
|
|
11
|
+
handleRowExpand: (rowId: string, row: T) => void;
|
|
12
|
+
resolveRowId: (row: T, index: number) => string;
|
|
13
|
+
internalPageIndex: number;
|
|
14
|
+
internalPageSize: number;
|
|
15
|
+
handlePaginationChange: (updater: Updater<PaginationState>) => void;
|
|
16
|
+
};
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { builtInSortFns as e, useReactTable as t } from "./tanstack-table.js";
|
|
2
|
+
import { createTreeSortingFns as n, findAllChildRowIds as r, prepareTreeData as i } from "./treeDataUtils.js";
|
|
3
|
+
import { deepEqual as a, useControllableState as o } from "../../../hooks/useControllableState.js";
|
|
4
|
+
import { useCallback as s, useEffect as c, useLayoutEffect as l, useMemo as u, useRef as d } from "react";
|
|
5
|
+
//#region src/components/pro/DataTable/useDataTableModel.ts
|
|
6
|
+
function f(e, t, n = 0) {
|
|
7
|
+
if (!Number.isSafeInteger(t) || t < n) throw RangeError(`DataTable: ${e} must be an integer >= ${n}.`);
|
|
8
|
+
}
|
|
9
|
+
function p(p) {
|
|
10
|
+
let { data: m, columns: h, getRowId: g, subDataKey: _ = "subs", enableExpanding: v = !1, enableTreeSort: y = !0, enablePagination: b = !0, manualPagination: x = !1, enableSorting: S = !0, enableFiltering: C = !0, enableSelection: w = !0, manualSorting: T = !1, manualFiltering: E = !1, rowCount: D, pageCount: O } = p, [k, A] = o(p.sortingState, p.onSortingChange, a, p.defaultSortingState ?? []), [j, M] = o(p.selectedRows, p.onRowSelectionChange, a, p.defaultSelectedRows ?? {}), [N, P] = o(p.columnFilters, p.onColumnFiltersChange, a, p.defaultColumnFilters ?? []), [F, I] = o(p.columnVisibility, p.onColumnVisibilityChange, a, p.defaultColumnVisibility ?? {}), [L, R] = o(p.columnOrder, p.onColumnOrderChange, a, p.defaultColumnOrder ?? []), [z, B] = o(p.expandedRows, p.onExpandedRowsChange, a, p.defaultExpandedRows ?? {}), [V, H] = o(p.pageIndex, p.onPageChange, Object.is, p.defaultPageIndex ?? 0), [U, W] = o(p.pageSize, p.onPageSizeChange, Object.is, p.defaultPageSize ?? 10);
|
|
11
|
+
if (f("pageIndex", V), f("pageSize", U, 1), x && (D !== void 0 && f("rowCount", D), O !== void 0 && f("pageCount", O), b && D === void 0 && O === void 0)) throw Error("DataTable: manualPagination requires rowCount or pageCount.");
|
|
12
|
+
let G = u(() => v ? i(m, z, _, g) : m, [
|
|
13
|
+
m,
|
|
14
|
+
v,
|
|
15
|
+
z,
|
|
16
|
+
_,
|
|
17
|
+
g
|
|
18
|
+
]), K = u(() => {
|
|
19
|
+
if (!v || !y) return h;
|
|
20
|
+
let t = n().treeSortAsc, r = (n) => n.map((n) => {
|
|
21
|
+
if ("columns" in n) return {
|
|
22
|
+
...n,
|
|
23
|
+
columns: r(n.columns ?? [])
|
|
24
|
+
};
|
|
25
|
+
if (n.enableSorting === !1) return n;
|
|
26
|
+
let i = n.sortFn, a = typeof i == "function" ? i : i && i !== "auto" ? e[i] : t;
|
|
27
|
+
return {
|
|
28
|
+
...n,
|
|
29
|
+
sortUndefined: !1,
|
|
30
|
+
sortFn: (e, n, r) => e.depth > 0 || n.depth > 0 ? 0 : (a ?? t)(e, n, r)
|
|
31
|
+
};
|
|
32
|
+
});
|
|
33
|
+
return r(h);
|
|
34
|
+
}, [
|
|
35
|
+
h,
|
|
36
|
+
v,
|
|
37
|
+
y
|
|
38
|
+
]), q = {
|
|
39
|
+
pageIndex: V,
|
|
40
|
+
pageSize: U
|
|
41
|
+
}, J = d(q);
|
|
42
|
+
l(() => {
|
|
43
|
+
J.current = q;
|
|
44
|
+
});
|
|
45
|
+
let Y = s((e) => {
|
|
46
|
+
let t = J.current, n = typeof e == "function" ? e(t) : e;
|
|
47
|
+
f("pageIndex", n.pageIndex), f("pageSize", n.pageSize, 1), J.current = {
|
|
48
|
+
pageIndex: p.pageIndex === void 0 ? n.pageIndex : t.pageIndex,
|
|
49
|
+
pageSize: p.pageSize === void 0 ? n.pageSize : t.pageSize
|
|
50
|
+
}, W(n.pageSize), H(n.pageIndex);
|
|
51
|
+
}, [
|
|
52
|
+
p.pageIndex,
|
|
53
|
+
p.pageSize,
|
|
54
|
+
H,
|
|
55
|
+
W
|
|
56
|
+
]), X = t({
|
|
57
|
+
data: G,
|
|
58
|
+
columns: K,
|
|
59
|
+
getRowId: (e, t) => v ? String(e.__id) : g?.(e, t) ?? String(t),
|
|
60
|
+
getSubRows: v ? (e) => e[_] : void 0,
|
|
61
|
+
manualPagination: x || !b,
|
|
62
|
+
manualSorting: x || T || !S,
|
|
63
|
+
manualFiltering: x || E || !C,
|
|
64
|
+
pageCount: x ? O : void 0,
|
|
65
|
+
rowCount: x ? D : void 0,
|
|
66
|
+
paginateExpandedRows: !1,
|
|
67
|
+
maxLeafRowFilterDepth: v ? 0 : void 0,
|
|
68
|
+
enableSorting: S,
|
|
69
|
+
enableFilters: C,
|
|
70
|
+
enableRowSelection: w,
|
|
71
|
+
enableSubRowSelection: !1,
|
|
72
|
+
autoResetPageIndex: !1,
|
|
73
|
+
autoResetExpanded: !1,
|
|
74
|
+
state: {
|
|
75
|
+
sorting: k,
|
|
76
|
+
rowSelection: j,
|
|
77
|
+
columnFilters: N,
|
|
78
|
+
columnVisibility: F,
|
|
79
|
+
columnOrder: L,
|
|
80
|
+
expanded: z,
|
|
81
|
+
pagination: {
|
|
82
|
+
pageIndex: V,
|
|
83
|
+
pageSize: U
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
onSortingChange: A,
|
|
87
|
+
onRowSelectionChange: M,
|
|
88
|
+
onColumnFiltersChange: P,
|
|
89
|
+
onColumnVisibilityChange: I,
|
|
90
|
+
onColumnOrderChange: R,
|
|
91
|
+
onExpandedChange: (e) => B((t) => {
|
|
92
|
+
let n = typeof e == "function" ? e(t) : e;
|
|
93
|
+
return n === !0 ? Object.fromEntries(X.getCoreRowModel().flatRows.map((e) => [e.id, !0])) : n;
|
|
94
|
+
}),
|
|
95
|
+
onPaginationChange: Y
|
|
96
|
+
}), Z = X.getPageCount(), Q = d({
|
|
97
|
+
sorting: k,
|
|
98
|
+
columnFilters: N,
|
|
99
|
+
size: U
|
|
100
|
+
});
|
|
101
|
+
c(() => {
|
|
102
|
+
let e = Q.current;
|
|
103
|
+
Q.current = {
|
|
104
|
+
sorting: k,
|
|
105
|
+
columnFilters: N,
|
|
106
|
+
size: U
|
|
107
|
+
}, b && !x && p.pageIndex === void 0 && (!a(e.sorting, k) || !a(e.columnFilters, N) || e.size !== U ? H(0) : V >= Z && H(Math.max(0, Z - 1)));
|
|
108
|
+
}, [
|
|
109
|
+
k,
|
|
110
|
+
N,
|
|
111
|
+
U,
|
|
112
|
+
V,
|
|
113
|
+
Z,
|
|
114
|
+
b,
|
|
115
|
+
x,
|
|
116
|
+
p.pageIndex,
|
|
117
|
+
H
|
|
118
|
+
]);
|
|
119
|
+
let $ = (e, t) => {
|
|
120
|
+
let n = !z[e];
|
|
121
|
+
B((i) => {
|
|
122
|
+
let a = {
|
|
123
|
+
...i,
|
|
124
|
+
[e]: n
|
|
125
|
+
};
|
|
126
|
+
return n || r(t, e, _, g).forEach((e) => {
|
|
127
|
+
a[e] = !1;
|
|
128
|
+
}), a;
|
|
129
|
+
}), p.onRowExpand?.(t, n);
|
|
130
|
+
}, ee = new Map(X.getCoreRowModel().flatRows.map((e) => [e.original, e.id]));
|
|
131
|
+
return {
|
|
132
|
+
table: X,
|
|
133
|
+
rowSelection: j,
|
|
134
|
+
visibilityState: F,
|
|
135
|
+
columnOrderState: X.getAllLeafColumns().map((e) => e.id),
|
|
136
|
+
setColumnOrderState: R,
|
|
137
|
+
expandedRowsState: z,
|
|
138
|
+
handleRowExpand: $,
|
|
139
|
+
resolveRowId: (e, t) => ee.get(e) ?? g?.(e, t) ?? String(t),
|
|
140
|
+
internalPageIndex: V,
|
|
141
|
+
internalPageSize: U,
|
|
142
|
+
handlePaginationChange: Y
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
//#endregion
|
|
146
|
+
export { p as useDataTableModel };
|
|
147
|
+
|
|
148
|
+
//# sourceMappingURL=useDataTableModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDataTableModel.js","names":[],"sources":["../../../../src/components/pro/DataTable/useDataTableModel.ts"],"sourcesContent":["import { useCallback, useEffect, useLayoutEffect, useMemo, useRef } from 'react';\nimport { useControllableState, deepEqual } from '../../../hooks/useControllableState';\nimport {\n useReactTable, builtInSortFns,\n type ColumnDef, type SortingFn, type PaginationState, type Updater,\n} from './tanstack-table';\nimport type { DataTableProps } from './types';\nimport { createTreeSortingFns, findAllChildRowIds, prepareTreeData } from './treeDataUtils';\n\nfunction assertInteger(name: string, value: number, minimum = 0) {\n if (!Number.isSafeInteger(value) || value < minimum) {\n throw new RangeError(`DataTable: ${name} must be an integer >= ${minimum}.`);\n }\n}\n\n/** Shared by the view and executable row-model regression tests. */\nexport function useDataTableModel<T extends object>(props: DataTableProps<T>) {\n const {\n data, columns, getRowId, subDataKey = 'subs', enableExpanding = false,\n enableTreeSort = true, enablePagination = true, manualPagination = false,\n enableSorting = true, enableFiltering = true, enableSelection = true,\n manualSorting = false, manualFiltering = false, rowCount, pageCount,\n } = props;\n const [sorting, setSorting] = useControllableState(\n props.sortingState, props.onSortingChange, deepEqual, props.defaultSortingState ?? [],\n );\n const [rowSelection, setRowSelection] = useControllableState(\n props.selectedRows, props.onRowSelectionChange, deepEqual, props.defaultSelectedRows ?? {},\n );\n const [columnFilters, setColumnFilters] = useControllableState(\n props.columnFilters, props.onColumnFiltersChange, deepEqual, props.defaultColumnFilters ?? [],\n );\n const [visibilityState, setVisibilityState] = useControllableState(\n props.columnVisibility, props.onColumnVisibilityChange, deepEqual, props.defaultColumnVisibility ?? {},\n );\n const [columnOrder, setColumnOrderState] = useControllableState(\n props.columnOrder, props.onColumnOrderChange, deepEqual, props.defaultColumnOrder ?? [],\n );\n const [expandedRowsState, setExpandedRowsState] = useControllableState(\n props.expandedRows, props.onExpandedRowsChange, deepEqual, props.defaultExpandedRows ?? {},\n );\n const [internalPageIndex, setInternalPageIndex] = useControllableState(\n props.pageIndex, props.onPageChange, Object.is, props.defaultPageIndex ?? 0,\n );\n const [internalPageSize, setInternalPageSize] = useControllableState(\n props.pageSize, props.onPageSizeChange, Object.is, props.defaultPageSize ?? 10,\n );\n assertInteger('pageIndex', internalPageIndex);\n assertInteger('pageSize', internalPageSize, 1);\n if (manualPagination) {\n if (rowCount !== undefined) assertInteger('rowCount', rowCount);\n if (pageCount !== undefined) assertInteger('pageCount', pageCount);\n if (enablePagination && rowCount === undefined && pageCount === undefined) {\n throw new Error('DataTable: manualPagination requires rowCount or pageCount.');\n }\n }\n\n const tableData = useMemo(() => enableExpanding\n ? prepareTreeData(data, expandedRowsState, subDataKey, getRowId)\n : data, [data, enableExpanding, expandedRowsState, subDataKey, getRowId]);\n\n const processedColumns = useMemo(() => {\n if (!enableExpanding || !enableTreeSort) return columns;\n const defaultSort = createTreeSortingFns<T>().treeSortAsc;\n const wrap = (defs: readonly ColumnDef<T, any>[]): ColumnDef<T, any>[] => defs.map(column => {\n if ('columns' in column) return { ...column, columns: wrap(column.columns ?? []) };\n if (column.enableSorting === false) return column;\n const originalSort = column.sortFn;\n const sort = typeof originalSort === 'function' ? originalSort\n : originalSort && originalSort !== 'auto'\n ? builtInSortFns[originalSort as keyof typeof builtInSortFns] as SortingFn<T>\n : defaultSort;\n return {\n ...column,\n // TanStack handles undefined before invoking sortFn. Disable that shortcut\n // so an undefined child value cannot reorder an otherwise unsorted subtree.\n sortUndefined: false,\n sortFn: (a, b, id) => a.depth > 0 || b.depth > 0 ? 0 : (sort ?? defaultSort)(a, b, id),\n };\n });\n return wrap(columns);\n }, [columns, enableExpanding, enableTreeSort]);\n\n const pagination = { pageIndex: internalPageIndex, pageSize: internalPageSize };\n const paginationRef = useRef(pagination);\n useLayoutEffect(() => { paginationRef.current = pagination; });\n const handlePaginationChange = useCallback((updater: Updater<PaginationState>) => {\n const current = paginationRef.current;\n const next = typeof updater === 'function' ? updater(current) : updater;\n assertInteger('pageIndex', next.pageIndex);\n assertInteger('pageSize', next.pageSize, 1);\n // Preserve pending uncontrolled slices across batched TanStack updaters,\n // while controlled slices continue to use the parent's committed values.\n paginationRef.current = {\n pageIndex: props.pageIndex === undefined ? next.pageIndex : current.pageIndex,\n pageSize: props.pageSize === undefined ? next.pageSize : current.pageSize,\n };\n setInternalPageSize(next.pageSize);\n setInternalPageIndex(next.pageIndex);\n }, [props.pageIndex, props.pageSize, setInternalPageIndex, setInternalPageSize]);\n\n const table = useReactTable<T>({\n data: tableData,\n columns: processedColumns,\n getRowId: (row, index) => enableExpanding\n ? String((row as Record<string, unknown>).__id)\n : getRowId?.(row, index) ?? String(index),\n getSubRows: enableExpanding\n ? row => (row as Record<string, unknown>)[subDataKey] as T[]\n : undefined,\n // Local pipeline sees the full hierarchy. Only server mode bypasses all\n // processing; hiding pagination alone still permits local sort/filter.\n manualPagination: manualPagination || !enablePagination,\n manualSorting: manualPagination || manualSorting || !enableSorting,\n manualFiltering: manualPagination || manualFiltering || !enableFiltering,\n pageCount: manualPagination ? pageCount : undefined,\n rowCount: manualPagination ? rowCount : undefined,\n paginateExpandedRows: false,\n maxLeafRowFilterDepth: enableExpanding ? 0 : undefined,\n enableSorting,\n enableFilters: enableFiltering,\n enableRowSelection: enableSelection,\n enableSubRowSelection: false,\n autoResetPageIndex: false,\n autoResetExpanded: false,\n state: {\n sorting, rowSelection, columnFilters, columnVisibility: visibilityState,\n columnOrder, expanded: expandedRowsState,\n pagination: { pageIndex: internalPageIndex, pageSize: internalPageSize },\n },\n onSortingChange: setSorting,\n onRowSelectionChange: setRowSelection,\n onColumnFiltersChange: setColumnFilters,\n onColumnVisibilityChange: setVisibilityState,\n onColumnOrderChange: setColumnOrderState,\n onExpandedChange: updater => setExpandedRowsState(previous => {\n const next = typeof updater === 'function' ? updater(previous) : updater;\n return next === true\n ? Object.fromEntries(table.getCoreRowModel().flatRows.map(row => [row.id, true]))\n : next;\n }),\n onPaginationChange: handlePaginationChange,\n });\n\n const localPageCount = table.getPageCount();\n const previousQuery = useRef({ sorting, columnFilters, size: internalPageSize });\n useEffect(() => {\n const previous = previousQuery.current;\n previousQuery.current = { sorting, columnFilters, size: internalPageSize };\n // Never rewrite a controlled page or a server request. Their owner must\n // reset/clamp the page along with the query and remote total.\n if (!enablePagination || manualPagination || props.pageIndex !== undefined) return;\n if (!deepEqual(previous.sorting, sorting) || !deepEqual(previous.columnFilters, columnFilters)\n || previous.size !== internalPageSize) {\n setInternalPageIndex(0);\n } else if (internalPageIndex >= localPageCount) {\n setInternalPageIndex(Math.max(0, localPageCount - 1));\n }\n }, [sorting, columnFilters, internalPageSize, internalPageIndex, localPageCount,\n enablePagination, manualPagination, props.pageIndex, setInternalPageIndex]);\n\n const handleRowExpand = (rowId: string, row: T) => {\n const expanded = !expandedRowsState[rowId];\n setExpandedRowsState(previous => {\n const next = { ...previous, [rowId]: expanded };\n if (!expanded) {\n findAllChildRowIds(row, rowId, subDataKey, getRowId).forEach(id => { next[id] = false; });\n }\n return next;\n });\n props.onRowExpand?.(row, expanded);\n };\n\n // TanStack owns mutable row models; snapshot IDs per render rather than\n // caching by flatRows identity, which does not guarantee unchanged contents.\n const rowIds = new Map(table.getCoreRowModel().flatRows.map(row => [row.original, row.id]));\n const resolveRowId = (row: T, index: number) =>\n rowIds.get(row) ?? getRowId?.(row, index) ?? String(index);\n\n // Derive the default order instead of notifying the parent on mount.\n const columnOrderState = table.getAllLeafColumns().map(column => column.id);\n return {\n table, rowSelection, visibilityState, columnOrderState, setColumnOrderState,\n expandedRowsState, handleRowExpand, resolveRowId,\n internalPageIndex, internalPageSize, handlePaginationChange,\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import t from "
|
|
1
|
+
import e from "../../Tree/Tree.js";
|
|
2
|
+
import { useClickOutside as t } from "../../../hooks/useClickOutside.js";
|
|
3
3
|
import n, { useCallback as r, useEffect as i, useRef as a, useState as o } from "react";
|
|
4
4
|
import { jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
5
5
|
//#region src/components/pro/FileExplorer/Breadcrumb.tsx
|
|
@@ -43,7 +43,7 @@ var l = { root: "Root" }, u = () => /* @__PURE__ */ s("svg", {
|
|
|
43
43
|
d: "M4 4a2 2 0 012-2h4.586A2 2 0 0112 2.586L15.414 6A2 2 0 0116 7.414V16a2 2 0 01-2 2H6a2 2 0 01-2-2V4zm2 6a1 1 0 011-1h6a1 1 0 110 2H7a1 1 0 01-1-1zm1 3a1 1 0 100 2h6a1 1 0 100-2H7z",
|
|
44
44
|
clipRule: "evenodd"
|
|
45
45
|
})
|
|
46
|
-
}), m = ({ path:
|
|
46
|
+
}), m = ({ path: t, adapter: n, onNavigate: a }) => {
|
|
47
47
|
let [c, l] = o([]), [u, d] = o(!1), m = r(async (e) => {
|
|
48
48
|
try {
|
|
49
49
|
return (await n.list(e)).sort((e, t) => e.type === t.type ? String(e.name).localeCompare(String(t.name)) : e.type === "folder" ? -1 : 1).map((e) => ({
|
|
@@ -61,13 +61,13 @@ var l = { root: "Root" }, u = () => /* @__PURE__ */ s("svg", {
|
|
|
61
61
|
}
|
|
62
62
|
}, [n]);
|
|
63
63
|
i(() => {
|
|
64
|
-
let
|
|
65
|
-
return d(!0), m(
|
|
66
|
-
|
|
64
|
+
let e = !0;
|
|
65
|
+
return d(!0), m(t).then((t) => {
|
|
66
|
+
e && (l(t), d(!1));
|
|
67
67
|
}), () => {
|
|
68
|
-
|
|
68
|
+
e = !1;
|
|
69
69
|
};
|
|
70
|
-
}, [
|
|
70
|
+
}, [t, m]);
|
|
71
71
|
let h = r(async (e, t) => {
|
|
72
72
|
if (!t) return;
|
|
73
73
|
let n = String(e), r = (e, t) => {
|
|
@@ -104,7 +104,7 @@ var l = { root: "Root" }, u = () => /* @__PURE__ */ s("svg", {
|
|
|
104
104
|
children: "Empty Folder"
|
|
105
105
|
}) : /* @__PURE__ */ s("div", {
|
|
106
106
|
className: "p-1 w-64 max-h-[300px] overflow-y-auto sm:min-w-[200px] max-w-[80vw]",
|
|
107
|
-
children: /* @__PURE__ */ s(
|
|
107
|
+
children: /* @__PURE__ */ s(e, {
|
|
108
108
|
data: c,
|
|
109
109
|
onNodeClick: g,
|
|
110
110
|
onNodeToggle: h,
|
|
@@ -117,9 +117,9 @@ var l = { root: "Root" }, u = () => /* @__PURE__ */ s("svg", {
|
|
|
117
117
|
indent: 12
|
|
118
118
|
})
|
|
119
119
|
});
|
|
120
|
-
}, h = ({ path:
|
|
120
|
+
}, h = ({ path: e, adapter: n, onNavigate: r }) => {
|
|
121
121
|
let [i, l] = o(!1), u = a(null);
|
|
122
|
-
return
|
|
122
|
+
return t(u, () => l(!1), i), /* @__PURE__ */ c("div", {
|
|
123
123
|
className: "relative flex items-center",
|
|
124
124
|
ref: u,
|
|
125
125
|
children: [n ? /* @__PURE__ */ s("button", {
|
|
@@ -135,7 +135,7 @@ var l = { root: "Root" }, u = () => /* @__PURE__ */ s("svg", {
|
|
|
135
135
|
className: "absolute top-full left-1/2 -translate-x-1/2 mt-1 bg-base-100 shadow-2xl border border-base-200 rounded-xl z-[9999]",
|
|
136
136
|
onClick: (e) => e.stopPropagation(),
|
|
137
137
|
children: /* @__PURE__ */ s(m, {
|
|
138
|
-
path:
|
|
138
|
+
path: e,
|
|
139
139
|
adapter: n,
|
|
140
140
|
onNavigate: (e) => {
|
|
141
141
|
r(e), l(!1);
|