@jerry-fd/ui 0.3.4 → 0.3.5

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.
@@ -1,7 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { D as DataFilterProps } from './types-BRYHaCob.js';
3
- export { F as FilterColumnDef, a as FilterColumnOption, b as FiltersState } from './types-BRYHaCob.js';
4
- import './icon-BmaneZ4I.js';
2
+ import { D as DataFilterProps } from './types-P1L_aHdl.js';
3
+ export { F as FilterColumnDef, a as FilterColumnOption, b as FiltersState } from './types-P1L_aHdl.js';
5
4
  import 'react';
6
5
  import 'dayjs';
7
6
 
@@ -1 +1 @@
1
- export{e as DataFilter,a as useTransition}from'./chunk-23OVYXGQ.js';import'./chunk-BJHN7W7I.js';import'./chunk-WOT6VMZA.js';
1
+ export{e as DataFilter,a as useTransition}from'./chunk-H4KCSH5E.js';import'./chunk-ZLJEIJBZ.js';import'./chunk-WOT6VMZA.js';
@@ -1,248 +1,20 @@
1
- import * as antd from 'antd';
2
- import { PaginationProps, TableProps } from 'antd';
3
- export { PaginationProps as PaginationState, TableProps } from 'antd';
4
- import { a as FilterColumnOption, b as FiltersState } from './types-BRYHaCob.js';
1
+ import { b as FiltersState } from './types-P1L_aHdl.js';
5
2
  import * as react_jsx_runtime from 'react/jsx-runtime';
6
- import { I as IconType } from './icon-BmaneZ4I.js';
7
- import React__default from 'react';
8
- import { ColumnType } from 'antd/es/table';
9
- import * as antd_es_table_interface from 'antd/es/table/interface';
10
- import { SorterResult, GetRowKey } from 'antd/es/table/interface';
11
- import { B as Button } from './button-mRGhVhV8.js';
3
+ import { c as BaseRecord, D as DataTableProps, U as UseDataTableStateOptions, P as PaginationConfig, T as ToolbarAction, d as ToolbarItemConfig, e as UseTabsDataTableStateProps, f as DataTableColumnType, g as TabItem } from './types-xnXBx9Tt.js';
4
+ export { h as DEFAULT_TOOLBAR_ITEMS, i as DataTableFilterConfig, S as SerializeOptions, j as SorterState, k as TableChangeHandler, l as TableChangeState, m as TabsTableChangeHandler, s as serializeForPost, n as serializeForPostFlat, o as serializeForURL, p as serializeToURLSearchParams } from './types-xnXBx9Tt.js';
12
5
  import * as _rc_component_table from '@rc-component/table';
13
6
  import * as _rc_component_table_lib_interface from '@rc-component/table/lib/interface';
14
7
  import * as antd_es_button from 'antd/es/button';
15
8
  import * as antd_es_table_InternalTable from 'antd/es/table/InternalTable';
9
+ import * as antd_es_table_interface from 'antd/es/table/interface';
10
+ import { SorterResult, TableCurrentDataSource, GetRowKey } from 'antd/es/table/interface';
11
+ import * as antd from 'antd';
12
+ import React__default from 'react';
16
13
  import 'dayjs';
14
+ import 'antd/es/table';
17
15
  import 'tailwind-variants';
18
16
 
19
- type ButtonProps = Omit<React__default.ComponentProps<typeof Button>, 'onClick'>;
20
- /** 渲染 props,传递给自定义组件 */
21
- interface ToolbarRenderContext<TData = unknown> {
22
- disabled?: boolean;
23
- loading?: boolean;
24
- exporting?: boolean;
25
- columns: DataTableColumnType<TData>[];
26
- onAction: (action: ToolbarAction) => void;
27
- }
28
- /** 内置 toolbar item */
29
- type BuiltInToolbarItem = {
30
- /** 内置 action 类型 */
31
- type: ToolbarBuiltInActionType;
32
- /** 唯一标识,默认使用 type */
33
- key?: string;
34
- /** 覆盖按钮 props */
35
- btnProps?: ButtonProps;
36
- /** tooltip 提示 */
37
- tooltip?: string;
38
- /** 是否隐藏 */
39
- hidden?: boolean;
40
- };
41
- /** 自定义 toolbar item */
42
- type CustomToolbarItem<TData = unknown> = {
43
- type: 'custom';
44
- /** 唯一标识,必填 */
45
- key: string;
46
- /** 自定义渲染函数 */
47
- render: (ctx: ToolbarRenderContext<TData>) => React__default.ReactNode;
48
- /** 是否隐藏 */
49
- hidden?: boolean;
50
- };
51
- /** Toolbar item 类型 */
52
- type ToolbarItemConfig<TData = any> = ToolbarBuiltInActionType | BuiltInToolbarItem | CustomToolbarItem<TData>;
53
- /** 默认 toolbar items */
54
- declare const DEFAULT_TOOLBAR_ITEMS: ToolbarItemConfig[];
55
-
56
- type SerializeOptions = {
57
- /** 日期格式,默认 'YYYY-MM-DD' */
58
- dateFormat?: string;
59
- /** 分页参数名映射 */
60
- paginationKeys?: {
61
- current?: string;
62
- pageSize?: string;
63
- };
64
- /** 排序参数名映射 */
65
- sorterKeys?: {
66
- field?: string;
67
- order?: string;
68
- };
69
- /** 筛选参数名映射,默认使用 columnId 作为 key */
70
- filtersKey?: string;
71
- /** 排序顺序值映射 */
72
- orderValues?: {
73
- ascend?: string;
74
- descend?: string;
75
- };
76
- /**
77
- * 筛选字段别名映射
78
- * key: columnId, value: 实际查询参数名
79
- * @example { p95: 'keyword', name: 'searchName' }
80
- */
81
- fieldMapping?: Record<string, string>;
82
- };
83
- /**
84
- * 将 TableChangeState 序列化为 POST 请求的数据结构
85
- *
86
- * @example
87
- * const postData = serializeForPost(state);
88
- * // {
89
- * // current: 1,
90
- * // pageSize: 10,
91
- * // sortField: 'age',
92
- * // sortOrder: 'desc',
93
- * // filters: {
94
- * // p95: [12131],
95
- * // name: ['hahah'],
96
- * // date: ['2026-01-30'],
97
- * // tags: ['2026-01-01', '2026-01-10'],
98
- * // url: ['backlog', 'todo'],
99
- * // status: ['todo']
100
- * // }
101
- * // }
102
- */
103
- declare function serializeForPost<TData = Record<string, unknown>>(state: TableChangeState<TData>, options?: SerializeOptions): Record<string, unknown>;
104
- /**
105
- * 将 TableChangeState 序列化为扁平化的 POST 数据(筛选条件直接作为顶级字段)
106
- *
107
- * @example
108
- * const postData = serializeForPostFlat(state);
109
- * // {
110
- * // current: 1,
111
- * // pageSize: 10,
112
- * // sortField: 'age',
113
- * // sortOrder: 'desc',
114
- * // p95: 12131, // 单值直接展开
115
- * // name: 'hahah',
116
- * // date: '2026-01-30',
117
- * // tags: ['2026-01-01', '2026-01-10'], // 多值保持数组
118
- * // url: ['backlog', 'todo'],
119
- * // status: 'todo'
120
- * // }
121
- */
122
- declare function serializeForPostFlat<TData = Record<string, unknown>>(state: TableChangeState<TData>, options?: SerializeOptions): Record<string, unknown>;
123
- /**
124
- * 将 TableChangeState 序列化为 URL 查询参数字符串
125
- *
126
- * @example
127
- * const queryString = serializeForURL(state);
128
- * // "current=1&pageSize=10&sortField=age&sortOrder=desc&p95=12131&name=hahah&date=2026-01-30&tags=2026-01-01,2026-01-10&url=backlog,todo&status=todo"
129
- */
130
- declare function serializeForURL<TData = Record<string, unknown>>(state: TableChangeState<TData>, options?: SerializeOptions): string;
131
- /**
132
- * 将 TableChangeState 序列化为 URLSearchParams 对象
133
- */
134
- declare function serializeToURLSearchParams<TData = Record<string, unknown>>(state: TableChangeState<TData>, options?: SerializeOptions): URLSearchParams;
135
-
136
- type TextFilterConfig = {
137
- type: 'text';
138
- displayName?: string;
139
- icon?: IconType;
140
- };
141
- type OptionFilterConfig = {
142
- type: 'option' | 'multiOption';
143
- options: FilterColumnOption[];
144
- displayName?: string;
145
- icon?: IconType;
146
- };
147
- type NumberFilterConfig = {
148
- type: 'number';
149
- mode?: 'single' | 'range';
150
- min?: number;
151
- max?: number;
152
- step?: number;
153
- displayName?: string;
154
- icon?: IconType;
155
- };
156
- type DateFilterConfig = {
157
- type: 'date';
158
- mode?: 'single' | 'range';
159
- showTime?: boolean | {
160
- format: 'HH:mm' | 'HH:mm:ss';
161
- };
162
- displayName?: string;
163
- icon?: IconType;
164
- };
165
- type SkeletonVariant = 'text' | 'avatar' | 'double-line' | 'group';
166
- type DataTableFilterConfig = TextFilterConfig | OptionFilterConfig | NumberFilterConfig | DateFilterConfig;
167
- type DataTableColumnType<TData> = ColumnType<TData> & {
168
- hidden?: boolean;
169
- filter?: DataTableFilterConfig;
170
- skeleton?: SkeletonVariant;
171
- };
172
- type BaseRecord = Record<string, unknown>;
173
- type SorterState<TData = BaseRecord> = SorterResult<TData> | SorterResult<TData>[];
174
- type TableChangeState<TData = BaseRecord> = {
175
- pagination: PaginationProps;
176
- filters: FiltersState;
177
- sorter: SorterState<TData>;
178
- };
179
- type UseDataTableStateOptions<TData> = {
180
- id?: string;
181
- loading?: boolean;
182
- exporting?: boolean;
183
- disabled?: boolean;
184
- fireOnMount?: boolean;
185
- defaultFilters?: FiltersState;
186
- defaultPagination?: PaginationProps;
187
- defaultSorter?: SorterState<TData>;
188
- serializeOptions?: SerializeOptions;
189
- serializeFn?: (state: TableChangeState<TData>, options?: SerializeOptions) => BaseRecord;
190
- onChange?: (serialized: BaseRecord, source: TableChangeState<TData>) => void;
191
- onToolbarAction?: (action: ToolbarAction) => void | Promise<void>;
192
- };
193
- type UseTabsDataTableStateProps<TData extends BaseRecord = BaseRecord> = {
194
- fireOnMount?: boolean;
195
- disabled?: boolean;
196
- active?: string;
197
- defaultActive?: string;
198
- tabList: TabItem<TData>[];
199
- onTabChange?: (value: string) => void;
200
- onTableChange?: (tableId: string, serialized: BaseRecord, source: TableChangeState<TData>) => void;
201
- onToolbarAction?: (tableId: string, action: ToolbarAction) => void | Promise<void>;
202
- };
203
- type ToolbarBuiltInActionType = 'data_refresh' | 'size_setting' | 'column_setting' | 'data_export' | 'filter_btn';
204
- type ToolbarAction<T extends BaseRecord = BaseRecord> = {
205
- action: ToolbarBuiltInActionType | string;
206
- payload?: T;
207
- };
208
- type TabItem<TData extends BaseRecord = BaseRecord> = DataTableProps<TData> & UseDataTableStateOptions<TData> & {
209
- id: string;
210
- /** Tab 标签 */
211
- label: React__default.ReactNode;
212
- /** Tab 唯一标识 */
213
- value: string;
214
- };
215
- type NamedClass = 'root' | 'cardHeader' | 'cardHeading' | 'cardIcon' | 'cardToolbar' | 'cardContent' | 'cardSummary' | 'cardFooter';
216
- type DataTableProps<TData extends BaseRecord = BaseRecord> = {
217
- id: string;
218
- /** 多 Tab 共享存储时传入,默认使用 id */
219
- storageKey?: string;
220
- alwaysShowingColumns?: string[];
221
- title?: React__default.ReactNode;
222
- icon?: React__default.ReactNode;
223
- description?: React__default.ReactNode;
224
- variant?: 'default' | 'accent';
225
- slots?: Record<'summary' | 'footer', React__default.ReactNode>;
226
- classNames?: Partial<Record<NamedClass, string>>;
227
- columns: DataTableColumnType<TData>[];
228
- filters?: FiltersState;
229
- defaultFilters?: FiltersState;
230
- className?: string;
231
- toolbarItems?: ToolbarItemConfig<any>[];
232
- onFiltersChange?: React__default.Dispatch<React__default.SetStateAction<FiltersState>>;
233
- onToolbarAction?: (action: ToolbarAction) => void | Promise<void>;
234
- loading?: boolean;
235
- exporting?: boolean;
236
- disabled?: boolean;
237
- /** 是否启用动画,默认 true */
238
- animated?: boolean;
239
- pagination?: PaginationProps;
240
- activeTab?: string;
241
- tabList?: TabItem<TData>[];
242
- onTabChange?: (value: string) => void;
243
- } & Omit<TableProps<TData>, 'title' | 'columns' | 'loading' | 'pagination'>;
244
-
245
- declare function DataTable<TData extends BaseRecord = BaseRecord>({ id, storageKey, alwaysShowingColumns, ...props }: DataTableProps<TData>): react_jsx_runtime.JSX.Element;
17
+ declare function DataTable<TData extends BaseRecord = BaseRecord>({ storageKey, alwaysShowingColumns, ...props }: DataTableProps<TData>): react_jsx_runtime.JSX.Element;
246
18
 
247
19
  declare function useDataTableState<TData extends BaseRecord = BaseRecord>({ id, fireOnMount, defaultFilters: initialFilters, defaultPagination: initialPagination, defaultSorter: initialSorter, serializeOptions, loading, exporting, disabled, serializeFn, onChange, onToolbarAction, }?: UseDataTableStateOptions<TData>): {
248
20
  id: string | undefined;
@@ -250,9 +22,9 @@ declare function useDataTableState<TData extends BaseRecord = BaseRecord>({ id,
250
22
  exporting: boolean | undefined;
251
23
  disabled: boolean | undefined;
252
24
  filters: FiltersState;
253
- pagination: PaginationProps;
25
+ pagination: PaginationConfig;
254
26
  onFiltersChange: React__default.Dispatch<React__default.SetStateAction<FiltersState>>;
255
- onChange: (pagination: antd.TablePaginationConfig, filters: Record<string, antd_es_table_interface.FilterValue | null>, sorter: SorterResult<TData> | SorterResult<TData>[], extra: antd_es_table_interface.TableCurrentDataSource<TData>) => void;
27
+ onChange: (pagination: antd.TablePaginationConfig, filters: Record<string, antd_es_table_interface.FilterValue | null>, sorter: SorterResult<TData> | SorterResult<TData>[], extra: TableCurrentDataSource<TData>) => void;
256
28
  onToolbarAction: (toolbarAction: ToolbarAction) => void;
257
29
  };
258
30
  /**
@@ -263,12 +35,16 @@ declare function useDataTableState<TData extends BaseRecord = BaseRecord>({ id,
263
35
  declare function useDataTableStateAdapter<TData extends BaseRecord = BaseRecord>(options?: UseDataTableStateOptions<TData> & {
264
36
  rowKey?: string | keyof TData | GetRowKey<TData>;
265
37
  }): {
38
+ style?: React__default.CSSProperties & {
39
+ [key: `--${string}`]: string | number;
40
+ };
266
41
  storageKey?: string;
267
42
  alwaysShowingColumns?: string[];
268
43
  title?: React__default.ReactNode;
269
44
  icon?: React__default.ReactNode;
270
45
  description?: React__default.ReactNode;
271
46
  variant?: "default" | "accent";
47
+ total?: number;
272
48
  slots?: Record<"summary" | "footer", React__default.ReactNode>;
273
49
  classNames?: (Partial<Record<"root" | "cardHeader" | "cardHeading" | "cardIcon" | "cardToolbar" | "cardContent" | "cardSummary" | "cardFooter", string>> & antd_es_table_InternalTable.TableClassNamesType<TData>) | undefined;
274
50
  className?: string;
@@ -278,7 +54,6 @@ declare function useDataTableStateAdapter<TData extends BaseRecord = BaseRecord>
278
54
  size?: antd_es_button.ButtonSize;
279
55
  caption?: React__default.ReactNode;
280
56
  footer?: _rc_component_table_lib_interface.PanelRender<TData> | undefined;
281
- style?: React__default.CSSProperties | undefined;
282
57
  summary?: ((data: readonly TData[]) => React__default.ReactNode) | undefined;
283
58
  children?: React__default.ReactNode;
284
59
  onScroll?: React__default.UIEventHandler<HTMLDivElement> | undefined;
@@ -323,25 +98,28 @@ declare function useDataTableStateAdapter<TData extends BaseRecord = BaseRecord>
323
98
  sortDirections?: antd_es_table_interface.SortOrder[] | undefined;
324
99
  showSorterTooltip?: (boolean | antd_es_table_interface.SorterTooltipProps) | undefined;
325
100
  virtual?: boolean | undefined;
326
- label: React__default.ReactNode;
327
- value: string;
328
101
  id: string;
329
102
  loading: boolean | undefined;
330
103
  exporting: boolean | undefined;
331
104
  disabled: boolean | undefined;
332
105
  filters: FiltersState;
333
- pagination: PaginationProps;
334
- onChange: (pagination: antd.TablePaginationConfig, filters: Record<string, antd_es_table_interface.FilterValue | null>, sorter: SorterResult<TData> | SorterResult<TData>[], extra: antd_es_table_interface.TableCurrentDataSource<TData>) => void;
106
+ pagination: PaginationConfig;
107
+ onChange: (pagination: antd.TablePaginationConfig, filters: Record<string, antd_es_table_interface.FilterValue | null>, sorter: SorterResult<TData> | SorterResult<TData>[], extra: TableCurrentDataSource<TData>) => void;
335
108
  onToolbarAction: (toolbarAction: ToolbarAction) => void;
336
109
  };
337
110
 
338
111
  declare function useTabsDataTableState<TData extends BaseRecord = BaseRecord>({ fireOnMount: globalFireOnMount, active, defaultActive, tabList, onTabChange, onTableChange, onToolbarAction, }: UseTabsDataTableStateProps<TData>): {
112
+ activeTabId: string;
113
+ style?: React__default.CSSProperties & {
114
+ [key: `--${string}`]: string | number;
115
+ };
339
116
  storageKey?: string;
340
117
  alwaysShowingColumns?: string[];
341
118
  title?: React__default.ReactNode;
342
119
  icon?: React__default.ReactNode;
343
120
  description?: React__default.ReactNode;
344
121
  variant?: "default" | "accent";
122
+ total?: number;
345
123
  slots?: Record<"summary" | "footer", React__default.ReactNode>;
346
124
  classNames?: (Partial<Record<"root" | "cardHeader" | "cardHeading" | "cardIcon" | "cardToolbar" | "cardContent" | "cardSummary" | "cardFooter", string>> & antd_es_table_InternalTable.TableClassNamesType<TData>) | undefined;
347
125
  columns: DataTableColumnType<TData>[];
@@ -349,13 +127,11 @@ declare function useTabsDataTableState<TData extends BaseRecord = BaseRecord>({
349
127
  toolbarItems?: ToolbarItemConfig<any>[];
350
128
  onFiltersChange: React__default.Dispatch<React__default.SetStateAction<FiltersState>>;
351
129
  animated?: boolean;
352
- activeTab: string;
353
130
  tabList: TabItem<TData>[];
354
131
  onTabChange: (value: string) => void;
355
132
  size?: antd_es_button.ButtonSize;
356
133
  caption?: React__default.ReactNode;
357
134
  footer?: _rc_component_table_lib_interface.PanelRender<TData> | undefined;
358
- style?: React__default.CSSProperties | undefined;
359
135
  summary?: ((data: readonly TData[]) => React__default.ReactNode) | undefined;
360
136
  children?: React__default.ReactNode;
361
137
  onScroll?: React__default.UIEventHandler<HTMLDivElement> | undefined;
@@ -400,16 +176,14 @@ declare function useTabsDataTableState<TData extends BaseRecord = BaseRecord>({
400
176
  sortDirections?: antd_es_table_interface.SortOrder[] | undefined;
401
177
  showSorterTooltip?: (boolean | antd_es_table_interface.SorterTooltipProps) | undefined;
402
178
  virtual?: boolean | undefined;
403
- label: React__default.ReactNode;
404
- value: string;
405
179
  id: string;
406
180
  loading: boolean | undefined;
407
181
  exporting: boolean | undefined;
408
182
  disabled: boolean | undefined;
409
183
  filters: FiltersState;
410
- pagination: PaginationProps;
184
+ pagination: PaginationConfig;
411
185
  onChange: (pagination: antd.TablePaginationConfig, filters: Record<string, antd_es_table_interface.FilterValue | null>, sorter: antd_es_table_interface.SorterResult<TData> | antd_es_table_interface.SorterResult<TData>[], extra: antd_es_table_interface.TableCurrentDataSource<TData>) => void;
412
186
  onToolbarAction: (toolbarAction: ToolbarAction) => void;
413
187
  };
414
188
 
415
- export { DEFAULT_TOOLBAR_ITEMS, DataTable, type DataTableColumnType, type DataTableFilterConfig, type DataTableProps, FiltersState, type SerializeOptions, type SorterState, type TableChangeState, type ToolbarAction, serializeForPost, serializeForPostFlat, serializeForURL, serializeToURLSearchParams, useDataTableState, useDataTableStateAdapter, useTabsDataTableState };
189
+ export { DataTable, DataTableColumnType, DataTableProps, FiltersState, PaginationConfig, ToolbarAction, UseDataTableStateOptions, useDataTableState, useDataTableStateAdapter, useTabsDataTableState };
@@ -1,2 +1,2 @@
1
- import {e,a as a$1,b as b$1,c as c$1,g as g$1}from'./chunk-MQJGKS3C.js';import {a,d,b,c}from'./chunk-23OVYXGQ.js';import {f,g,h,l,o,n,p,m,j,i,k,M as M$1,r,s,A,t,B,C,E,D,F,H}from'./chunk-BJHN7W7I.js';import'./chunk-WOT6VMZA.js';import y from'react';import {createStore,useStore}from'zustand';import {persist}from'zustand/middleware';import {immer}from'zustand/middleware/immer';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {Card,Table,ConfigProvider,Tooltip,Checkbox}from'antd';import {AnimatePresence,m as m$1}from'motion/react';import {ArrowDownToLine,RefreshCw}from'lucide-react';var Yt={components:{DatePicker:{activeBorderColor:"#d9d9d9",hoverBorderColor:"#d9d9d9",activeShadow:"none",cellHeight:24,cellWidth:28}}};var mt={tableSize:"middle",columnVisibility:{}},he={tabStates:{},activeTabId:"",loading:false,exporting:false},tt=(t,o)=>{t.tabStates[o]||(t.tabStates[o]={...mt});},Xt=t=>t.tabStates[t.activeTabId]??mt,xe=(t,o)=>({...he,activeTabId:o??"",setActiveTab:e=>t(a=>{a.activeTabId=e,tt(a,e);}),setTableSize:e=>t(a=>{let n=a.activeTabId;tt(a,n),a.tabStates[n].tableSize=e;}),setColumnVisibility:(e,a)=>t(n=>{let i=n.activeTabId;tt(n,i),n.tabStates[i].columnVisibility[e]=a;}),setColumnVisibilityState:e=>t(a=>{let n=a.activeTabId;tt(a,n);let i=a.tabStates[n].columnVisibility;a.tabStates[n].columnVisibility=typeof e=="function"?e(i):e;}),toggleColumnVisibility:e=>t(a=>{let n=a.activeTabId;tt(a,n);let i=a.tabStates[n].columnVisibility[e];a.tabStates[n].columnVisibility[e]=!i;}),setLoading:e=>t({loading:e}),setExporting:e=>t({exporting:e}),resetCurrentTabState:()=>t(e=>{let a=e.activeTabId;e.tabStates[a]={...mt};})}),ve=(t,o)=>createStore()(persist(immer(e=>xe(e,o)),{name:t,partialize:e=>({tabStates:e.tabStates})})),qt=y.createContext(null),Re=["id","action","actions"],Jt=y.createContext({});function Qt({storageKey:t,initialTabId:o,alwaysShowingColumns:e,children:a}){let n=y.useRef(null);n.current||(n.current=ve(t,o)),y.useEffect(()=>{let r=n.current;r&&!r.getState().activeTabId&&r.getState().setActiveTab(o);},[o]);let i=y.useMemo(()=>({alwaysShowingColumns:e??Re}),[e]);return jsx(Jt.Provider,{value:i,children:jsx(qt.Provider,{value:n.current,children:a})})}function Zt(){return y.useContext(Jt)}function M(t){let o=y.useContext(qt);if(!o)throw new Error("useDataTableStore must be used within DataTableProvider");return useStore(o,t)}function lt(){return M(t=>Xt(t))}function te(){return M(t=>Xt(t).tableSize)}var Ie={small:"min-h-22",middle:"min-h-30",large:"min-h-38"};function oe({count:t,size:o="small",pagination:e$1,classNames:a,columns:n}){let i=y.useCallback(()=>Ae(n,Ie[o]),[n,o]);return jsx(Table,{rowKey:"id",size:o,rowHoverable:false,classNames:a,dataSource:Array.from({length:t},(r,l)=>({id:l})),pagination:e$1,children:n.map((r,l)=>jsx(Table.Column,{dataIndex:r.dataIndex,width:r.width,title:jsx(e,{className:"h-22 w-full animate-none bg-bg-antd"}),render:i,onCell:()=>l===0?{colSpan:n.length}:{colSpan:0}},r.dataIndex))})}var ae=16;function Ae(t,o){let e=t.length,n=`calc((100% - ${ae*(e-1)}px) / ${e})`,i=t.some(r=>r.skeleton==="avatar"||r.skeleton==="double-line");return jsx("div",{className:f("flex items-center",o),style:{gap:`${ae}px`},children:t.map((r,l)=>{let p=r?.key??l;return jsx("div",{style:{width:n},children:we(r.skeleton,i)},p)})})}function we(t,o){switch(t){case "avatar":return jsx(ze,{});case "double-line":return jsx(Ne,{});case "group":return jsx(Fe,{needAlignment:o});default:return jsx(ke,{needAlignment:o})}}function ke({needAlignment:t}){return jsxs("div",{className:"grid h-full gap-4",children:[t&&jsx("div",{className:"h-12 w-1"}),jsx(e,{className:"h-10"})]})}function ze(){return jsxs("div",{className:"flex w-full items-center gap-6",children:[jsx(e,{className:"shrink-0 rounded-full",style:{width:"var(--avatar-size, 32px)",height:"var(--avatar-size, 32px)"}}),jsxs("div",{className:"grid flex-1 gap-4",children:[jsx(e,{className:"h-12 w-[60%]"}),jsx(e,{className:"h-10"})]})]})}function Ne(){return jsxs("div",{className:"grid h-full w-full gap-4 py-4",children:[jsx(e,{className:"h-12 w-[60%]"}),jsx(e,{className:"h-10"})]})}function Fe({needAlignment:t}){return jsxs("div",{className:"grid h-full gap-4",children:[t&&jsx("div",{className:"h-12 w-1"}),jsxs("div",{className:"flex w-full items-center gap-4",children:[jsx(e,{className:"h-10 w-[20%]"}),jsx(e,{className:"h-10 w-[20%]"}),jsx(e,{className:"h-10 w-[20%]"}),jsx(e,{className:"h-10 w-[20%]"}),jsx(e,{className:"h-10 w-[20%]"})]})]})}function ne({className:t,options:o,...e}){return jsx(a$1,{className:f("w-full",t),...e,children:jsx(b$1,{variant:"line",size:"medium",className:"w-full px-12",children:o?.map(a=>jsx(c$1,{value:a.value,className:"py-8",children:a.label},a.id??a.value))})})}function ie({value:t,className:o,onChange:e,...a$1}){let n=a(),[i,r]=y.useState(false),l=y.useMemo(()=>[{groupType:"radio",value:t,options:[{label:n("large"),value:"large"},{label:n("middle"),value:"middle"},{label:n("compact"),value:"small"}],onValueChange:e}],[e,n,t]);return jsx(g$1,{side:"bottom",align:"end",collisionPadding:6,items:l,className:"min-w-100",open:i,onOpenChange:r,children:jsxs(M$1,{mode:"stroke",variant:"neutral",size:"small",className:f("gap-0",o,i&&"active"),...a$1,children:[jsx(Tooltip,{title:n("density"),mouseEnterDelay:1,children:jsx("div",{className:"absolute inset-0"})}),jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"size-16",viewBox:"0 0 1024 1024",children:jsx("path",{d:"M840 836H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm0-724H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM610.8 378c6 0 9.4-7 5.7-11.7L515.7 238.7a7.14 7.14 0 0 0-11.3 0L403.6 366.3a7.23 7.23 0 0 0 5.7 11.7H476v268h-62.8c-6 0-9.4 7-5.7 11.7l100.8 127.5c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H548V378h62.8z"})})]})})}function Me(t){return t.key?String(t.key):Array.isArray(t.dataIndex)?t.dataIndex.join("."):String(t.dataIndex)}function Ke(t){return typeof t=="string"&&t.length>0}function Ee(t){return [Array.isArray(t.dataIndex)?t.dataIndex.join(" "):typeof t.dataIndex=="string"?t.dataIndex:null,typeof t.title=="string"?t.title:null,t.key!==null?String(t.key):null].filter(Ke)}function le({disabled:t$1,columns:o}){let e=a(),{alwaysShowingColumns:a$1}=Zt(),[n,i]=y.useState(false),{columnVisibility:r$1}=lt(),l=M(s=>s.setColumnVisibilityState),p=y.useCallback((s,c)=>{l(m=>({...m,[s]:c}));},[l]);return jsxs(r,{open:n,onOpenChange:i,children:[jsx(s,{asChild:true,children:jsx(M$1,{mode:"stroke",variant:"neutral",size:"small",className:f(n&&"active","relative gap-0"),disabled:t$1,startContent:jsx(A,{}),children:jsx(Tooltip,{title:e("column_set"),mouseEnterDelay:1,children:jsx("div",{className:"absolute inset-0"})})})}),jsx(t,{align:"end",side:"bottom",arrow:false,className:"w-fit rounded-xl p-0",sideOffset:6,children:jsxs(B,{children:[jsx(C,{autoFocus:true,placeholder:"Search..."}),jsx(E,{children:e("no_results")}),jsx(D,{className:"max-h-256",children:jsx(F,{children:o.map(s=>{let c=Me(s),m=r$1[c]!==false;return jsxs(H,{keywords:Ee(s),onSelect:()=>p(c,!m),className:"group flex items-center gap-6",value:c,disabled:a$1?.includes(c),children:[jsx(Checkbox,{checked:m,tabIndex:-1,className:f("mr-4 opacity-100")}),jsx("span",{children:s.title})]},c)})})})]})})]})}function $e(t){return typeof t=="string"?{type:t,key:t}:t.type==="custom"?{type:"custom",key:t.key,hidden:t.hidden,render:t.render}:{type:t.type,key:t.key??t.type,hidden:t.hidden,btnProps:t.btnProps,tooltip:t.tooltip}}function Ye({btnProps:t,tooltip:o,disabled:e,loading:a$1,onAction:n}){let i=a(),r=o??i("refresh");return jsx(M$1,{mode:"stroke",variant:"neutral",startContent:jsx(RefreshCw,{}),loading:a$1,disabled:e||a$1,className:"gap-0",onClick:()=>n({action:"data_refresh"}),...t,children:jsx(Tooltip,{title:r,mouseEnterDelay:1,children:jsx("div",{className:"absolute inset-0"})})})}function je(){let t=te()??"small",o=M(e=>e.setTableSize);return jsx(ie,{value:t,onChange:o})}function Xe({columns:t}){return jsx(le,{columns:t})}function qe({btnProps:t,disabled:o,loading:e,onAction:a$1}){let n=a();return jsx(M$1,{variant:"primary",startContent:jsx(ArrowDownToLine,{}),loading:e,disabled:o||e,onClick:()=>a$1({action:"data_export"}),...t,children:n("data_export")})}var Je={initial:{opacity:0,scale:.75,x:10,originX:1},animate:{opacity:1,scale:1,x:0,originX:1},exit:{opacity:0,scale:.75,x:10,originX:1}},Qe={ease:[.26,.08,.25,1],duration:.25};function ce({items:t,columns:o,disabled:e,loading:a,exporting:n,filter:i,onAction:r,className:l}){let p=y.useMemo(()=>t.map(d=>$e(d)),[t]),s=y.useMemo(()=>p.filter(d=>!d.hidden),[p]),c=y.useCallback(d=>{r?.(d);},[r]),m=y.useMemo(()=>({disabled:e,loading:a,exporting:n,columns:o,onAction:c}),[e,a,n,o,c]),C=d=>{let P={btnProps:d.btnProps,tooltip:d.tooltip,disabled:e,loading:a,onAction:c};switch(d.type){case "data_refresh":return jsx(Ye,{...P});case "size_setting":return jsx(je,{});case "column_setting":return jsx(Xe,{columns:o});case "data_export":return jsx(qe,{...P,loading:n});case "custom":return d.render?.(m);case "filter_btn":return i;default:return null}};return jsx("div",{className:f("flex items-center gap-8",l),children:jsx(AnimatePresence,{mode:"popLayout",initial:false,children:s.map(d=>jsx(m$1.div,{layout:true,variants:Je,initial:"initial",animate:"animate",exit:"exit",transition:Qe,children:C(d)},d.key))})})}var ft=["data_refresh","size_setting","column_setting","filter_btn"];function de(t){return t.filter(o=>o.filter!==void 0).map(o=>{let{filter:e,dataIndex:a,title:n}=o,i=Array.isArray(a)?a.join("."):a,r=e.displayName??(typeof n=="string"?n:i);return {...e,columnId:i,displayName:r}})}function pe(t){return t.map(({filter:o,...e})=>e)}function ea(t){return t.key?String(t.key):Array.isArray(t.dataIndex)?t.dataIndex.join("."):String(t.dataIndex)}var aa={pagination:{root:"m-0 py-16 px-8 [&_.ant-pagination-total-text]:mr-auto"}},oa={hideOnSinglePage:false,showSizeChanger:true,pageSizeOptions:[10,20,30,50]},na={initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0}},ra={initial:{opacity:0,y:24},animate:{opacity:1,y:0},exit:{opacity:0,y:-24}},ia={ease:[.26,.08,.25,1],duration:.3};function sa({id:t,title:o$1,icon:e,description:a$1,variant:n$1,classNames:i$1,slots:r,columns:l$1,filters:p$1,defaultFilters:s,loading:c$1,exporting:m$2,disabled:C,animated:d$1=true,pagination:P,style:O,toolbarItems:Y,activeTab:_,tabList:w,onTabChange:k$1,onFiltersChange:ot,onToolbarAction:nt,...q}){let J=a(),g$1=M(N=>N.setActiveTab),S=M(N=>N.activeTabId),{tableSize:v,columnVisibility:rt}=lt();y.useEffect(()=>{t&&t!==S&&g$1(t);},[t,S,g$1]);let I=y.useMemo(()=>l$1.filter(N=>N.hidden!==true),[l$1]),h$1=y.useMemo(()=>de(I),[I]),Q=y.useMemo(()=>pe(I),[I]),[K,Z]=d({filters:p$1,defaultFilters:s,onFiltersChange:ot}),L=y.useMemo(()=>Q.filter(N=>{let ge=ea(N);return rt[ge]!==false}),[Q,rt]),U=y.useCallback(N=>J("pagination_total").replace("{total}",String(N)),[J]),j$1=y.useMemo(()=>({showTotal:U,disabled:c$1||C,size:v==="large"?"middle":v,...oa,...P}),[U,c$1,C,v,P]),it={...aa,header:{cell:q?.bordered?"":f("border-t border-stroke-antd first:border-l last:border-r")}},st=w&&Array.isArray(w),dt=Math.min(j$1.pageSize??j$1.defaultPageSize??10,15),f$1=!!(c$1&&L.some(N=>N.skeleton)),F=h$1.length!==0,x=K&&K.length!==0,z=jsx(b,{columns:h$1,filters:K,actions:Z,className:"flex flex-wrap gap-6",enableAutoClose:true}),E=f$1?jsx(oe,{id:`${t}-skeleton`,columns:L,size:v,count:dt,className:"bg-bg-white",classNames:it,pagination:j$1}):jsx(Table,{id:`${t}-data-table`,columns:L,className:"bg-bg-white",classNames:it,pagination:j$1,size:v,loading:c$1,...q}),pt=n$1==="accent";return jsx(ConfigProvider,{theme:Yt,children:jsxs(g,{style:O,className:f("rounded-2xl",i$1?.root),variant:n$1,children:[jsxs(h,{className:f("px-14 pt-12 pb-10",pt&&"pt-10",st&&"border-b-0",i$1?.cardHeader),children:[jsxs(l,{className:f("flex items-center gap-12",i$1?.cardHeading),children:[e&&jsx(o,{className:f("size-34 border border-stone-200 bg-stone-100 text-text-sub",!!(o$1&&a$1)&&"size-44 [&_svg]:size-24",i$1?.cardIcon),children:e}),o$1&&jsxs("div",{className:f(a$1&&"flex flex-col gap-4"),children:[jsx(n,{children:o$1}),a$1&&jsx(p,{children:a$1})]})]}),jsx(m,{className:i$1?.cardToolbar,children:jsx(ce,{onAction:nt,items:Y??ft,loading:c$1,disabled:C,exporting:m$2,filter:F&&jsx(c,{columns:h$1,filters:K,actions:Z,align:"end",enableAutoBack:true},`${t}-filter`),columns:I})})]}),r?.summary&&jsx(j,{className:f("p-16",i$1?.cardSummary),children:r?.footer}),st&&jsx(j,{className:"p-0",children:jsx(ne,{value:_,options:w,onValueChange:k$1})}),jsx(i,{className:f("overflow-hidden p-12 pt-16 pb-8",i$1?.cardContent),children:d$1?jsx(AnimatePresence,{mode:"popLayout",initial:false,children:jsxs(m$1.div,{variants:ra,initial:"initial",animate:"animate",exit:"exit",custom:x,transition:ia,children:[jsx(AnimatePresence,{initial:false,children:x&&jsxs(m$1.div,{variants:na,initial:"initial",animate:"animate",exit:"exit",children:[z,jsx("div",{className:"h-14"})]},S)}),E]},S)}):jsxs(Fragment,{children:[x&&jsx("div",{className:"mb-16",children:z}),E]})}),r?.footer&&jsx(k,{className:f("p-16",i$1?.cardFooter),children:r?.footer})]})})}function la({id:t,storageKey:o,alwaysShowingColumns:e,...a}){let n=o??"UI_TABLE_CONFIG";if(!import.meta.env?.VITE_MOCK_API_SSR){let{title:i,...r}=ca(a);return jsx(Card,{title:i,children:jsx(Table,{id:t,...r})})}return jsx(Qt,{storageKey:n,initialTabId:t,alwaysShowingColumns:e,children:jsx(sa,{id:t,...a})})}function ca(t){let o=t.columns.map(({render:e,...a})=>({...a}));return {...t,columns:o}}var gt={dateFormat:"YYYY-MM-DD",paginationKeys:{current:"current",pageSize:"pageSize"},sorterKeys:{field:"sortField",order:"sortOrder"},filtersKey:"filters",orderValues:{ascend:"asc",descend:"desc"},fieldMapping:{}};function yt(t,o){return o[t]??t}function pa(t){return t!==null&&typeof t=="object"&&"$d"in t&&typeof t.format=="function"}function St(t,o){return t==null?null:pa(t)?t.format(o):typeof t=="string"||typeof t=="number"||typeof t=="boolean"?t:String(t)}function ua(t,o={}){let e={...gt,...o},{pagination:a,filters:n,sorter:i}=t,r={};a.current!==void 0&&(r[e.paginationKeys.current]=a.current),a.pageSize!==void 0&&(r[e.paginationKeys.pageSize]=a.pageSize);let l=Array.isArray(i)?i[0]:i;l?.field&&l?.order&&(r[e.sorterKeys.field]=String(l.field),r[e.sorterKeys.order]=e.orderValues[l.order]??l.order);let p={};for(let s of n){let c=yt(s.columnId,e.fieldMapping);p[c]=s.values.map(m=>St(m,e.dateFormat));}return Object.keys(p).length>0&&(r[e.filtersKey]=p),r}function at(t,o={}){let e={...gt,...o},{pagination:a,filters:n,sorter:i}=t,r={};a.current!==void 0&&(r[e.paginationKeys.current]=a.current),a.pageSize!==void 0&&(r[e.paginationKeys.pageSize]=a.pageSize);let l=Array.isArray(i)?i[0]:i;l?.field&&l?.order&&(r[e.sorterKeys.field]=String(l.field),r[e.sorterKeys.order]=e.orderValues[l.order]??l.order);for(let p of n){let s=yt(p.columnId,e.fieldMapping),c=p.values.map(m=>St(m,e.dateFormat));r[s]=c.length===1?c[0]:c;}return r}function be(t,o={}){let e={...gt,...o},{pagination:a,filters:n,sorter:i}=t,r=new URLSearchParams;a.current!==void 0&&r.set(e.paginationKeys.current,String(a.current)),a.pageSize!==void 0&&r.set(e.paginationKeys.pageSize,String(a.pageSize));let l=Array.isArray(i)?i[0]:i;l?.field&&l?.order&&(r.set(e.sorterKeys.field,String(l.field)),r.set(e.sorterKeys.order,e.orderValues[l.order]??l.order));for(let p of n){let s=yt(p.columnId,e.fieldMapping),c=p.values.map(m=>St(m,e.dateFormat));r.set(s,c.join(","));}return r.toString()}function ma(t,o={}){let e=be(t,o);return new URLSearchParams(e)}var Ta=[],ba={current:1,pageSize:10};function fe(){return {filters:Ta,pagination:ba,sorter:{}}}function fa(t){let o=new Map,e=fe();for(let a of t)o.set(a.value,{filters:a.defaultFilters??a.filters??e.filters,pagination:a.defaultPagination??a.pagination??e.pagination,sorter:a.defaultSorter??e.sorter});return o}function Dt({fireOnMount:t=true,active:o,defaultActive:e,tabList:a,onTabChange:n,onTableChange:i,onToolbarAction:r}){let[l,p]=y.useState(()=>e??a[0]?.value??""),s=o??l,[c,m]=y.useState(()=>fa(a)),C=y.useMemo(()=>a.find(f=>f.value===s)??a[0],[s,a]),{id:d,fireOnMount:P=t,loading:O,exporting:Y,disabled:_,serializeOptions:w={},serializeFn:k=at,defaultFilters:ot,defaultPagination:nt,defaultSorter:q,filters:J,pagination:g,onChange:S,onToolbarAction:v,...rt}=C,I=y.useMemo(()=>fe(),[]),h=y.useMemo(()=>c.get(s)??I,[c,s,I]),Q=y.useRef(i),K=y.useRef(r),Z=y.useRef(S),L=y.useRef(v);Q.current=i,K.current=r,Z.current=S,L.current=v;let U=y.useRef(new Map);y.useEffect(()=>{U.current.has(s)||U.current.set(s,!P);},[s,P]);let j=y.useCallback(f=>{p(f),n?.(f);},[n]),it=y.useCallback(f=>{m(F=>{let x=new Map(F),z=x.get(s)??I,E=typeof f=="function"?f(z.filters):f;return x.set(s,{...z,filters:E,pagination:{...z.pagination,current:1}}),x});},[s,I]),st=y.useCallback((f,F,x)=>{m(z=>{let E=new Map(z),pt=E.get(s)??I;return E.set(s,{...pt,pagination:f,sorter:x}),E});},[s,I]),dt=y.useCallback(f=>{if(f.action==="data_export"){let F={pagination:h.pagination,filters:h.filters,sorter:h.sorter},x=k(F,w),z={action:f.action,payload:x};L.current?.(z),K.current?.(d,z);return}L.current?.(f),K.current?.(d,f);},[d,h,k,w]);return y.useEffect(()=>{if(U.current.get(s)){U.current.set(s,false);return}let F={pagination:h.pagination,filters:h.filters,sorter:h.sorter},x=k(F,w);Z.current?.(x,F),Q.current?.(d,x,F);},[s,d,h,k,w]),{activeTab:s,tabList:a,onTabChange:j,id:d,loading:O,exporting:Y,disabled:_||Y,filters:h.filters,pagination:h.pagination,onFiltersChange:it,onChange:st,onToolbarAction:dt,...rt}}var ga=[],ya={},Sa={current:1,pageSize:10};function Da({id:t,fireOnMount:o=true,defaultFilters:e=ga,defaultPagination:a=Sa,defaultSorter:n=ya,serializeOptions:i={},loading:r,exporting:l,disabled:p,serializeFn:s=at,onChange:c,onToolbarAction:m}={}){let C=y.useRef(!o),d=y.useRef(c),P=y.useRef(m);d.current=c,P.current=m;let[O,Y]=y.useState(e),[_,w]=y.useState(a),[k,ot]=y.useState(n),nt=y.useCallback(g=>{Y(S=>typeof g=="function"?g(S):g),w(S=>({...S,current:1}));},[]),q=y.useCallback((g,S,v)=>{w(g),ot(v);},[]),J=y.useCallback(g=>{if(g.action==="data_export"){let v=s({pagination:_,filters:O,sorter:k},i);P.current?.({action:g.action,payload:v});return}P.current?.(g);},[O,_,s,i,k]);return y.useEffect(()=>{if(C.current){C.current=false;return}let g={pagination:_,filters:O,sorter:k},S=s(g,i);d.current?.(S,g);},[_,O,k,s,i]),{id:t,loading:r,exporting:l,disabled:p||l,filters:O,pagination:_,onFiltersChange:nt,onChange:q,onToolbarAction:J}}function Ca(t={}){let{id:o="default",onChange:e,onToolbarAction:a,...n}=t,i=Dt({fireOnMount:t.fireOnMount,tabList:[{id:o,value:o,label:"",columns:[],...n}],onTableChange:e?(m,C,d)=>e(C,d):void 0,onToolbarAction:a?(m,C)=>a(C):void 0}),{activeTab:r,tabList:l,columns:p,onTabChange:s,...c}=i;return c}
2
- export{ft as DEFAULT_TOOLBAR_ITEMS,la as DataTable,ua as serializeForPost,at as serializeForPostFlat,be as serializeForURL,ma as serializeToURLSearchParams,Da as useDataTableState,Ca as useDataTableStateAdapter,Dt as useTabsDataTableState};
1
+ import {b,c as c$1,i as i$1,e,f as f$1,g as g$1,k as k$1}from'./chunk-CU3BCSE2.js';import {a,d,b as b$1,c}from'./chunk-H4KCSH5E.js';import {g,h,l,o,f,n,p,m,j,i,k,M,r,s,A,t,B,C as C$1,E,D,F,H as H$1}from'./chunk-ZLJEIJBZ.js';import'./chunk-WOT6VMZA.js';import {Card,Table,ConfigProvider,Pagination,Tooltip,Checkbox}from'antd';import C from'react';import {createStore,useStore}from'zustand';import {persist}from'zustand/middleware';import {immer}from'zustand/middleware/immer';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {AnimatePresence,m as m$1}from'motion/react';import {ArrowDownToLine,RefreshCw}from'lucide-react';var ct={components:{DatePicker:{activeBorderColor:"#d9d9d9",hoverBorderColor:"#d9d9d9",activeShadow:"none",cellHeight:24,cellWidth:28}}};var De={tableSize:"middle",columnVisibility:{}},qt={tabStates:{},activeTabId:"",loading:false,exporting:false},ae=(e,o)=>{e.tabStates[o]||(e.tabStates[o]={...De});},dt=e=>e.tabStates[e.activeTabId]??De,Xt=(e,o)=>({...qt,activeTabId:o??"",setActiveTab:t=>e(a=>{a.activeTabId=t,ae(a,t);}),setTableSize:t=>e(a=>{let n=a.activeTabId;ae(a,n),a.tabStates[n].tableSize=t;}),setColumnVisibility:(t,a)=>e(n=>{let i=n.activeTabId;ae(n,i),n.tabStates[i].columnVisibility[t]=a;}),setColumnVisibilityState:t=>e(a=>{let n=a.activeTabId;ae(a,n);let i=a.tabStates[n].columnVisibility;a.tabStates[n].columnVisibility=typeof t=="function"?t(i):t;}),toggleColumnVisibility:t=>e(a=>{let n=a.activeTabId;ae(a,n);let i=a.tabStates[n].columnVisibility[t];a.tabStates[n].columnVisibility[t]=!i;}),setLoading:t=>e({loading:t}),setExporting:t=>e({exporting:t}),resetCurrentTabState:()=>e(t=>{let a=t.activeTabId;t.tabStates[a]={...De};})}),Jt=(e,o)=>createStore()(persist(immer(t=>Xt(t,o)),{name:e,partialize:t=>({tabStates:t.tabStates})})),ut=C.createContext(null),Qt=["id","action","actions"],pt=C.createContext({});function mt({storageKey:e,initialTabId:o,alwaysShowingColumns:t,children:a}){let n=C.useRef(null);n.current||(n.current=Jt(e,o)),C.useEffect(()=>{let r=n.current;r&&!r.getState().activeTabId&&r.getState().setActiveTab(o);},[o]);let i=C.useMemo(()=>({alwaysShowingColumns:t??Qt}),[t]);return jsx(pt.Provider,{value:i,children:jsx(ut.Provider,{value:n.current,children:jsx(ConfigProvider,{theme:ct,children:a})})})}function bt(){return C.useContext(pt)}function H(e){let o=C.useContext(ut);if(!o)throw new Error("useDataTableStore must be used within DataTableProvider");return useStore(o,e)}function me(){return H(e=>dt(e))}function Tt(){return H(e=>dt(e).tableSize)}var ea={small:"min-h-22",middle:"min-h-30",large:"min-h-38"};function yt({count:e,size:o="small",classNames:t,columns:a,scroll:n}){let i=C.useCallback(()=>ta(a,ea[o]),[a,o]);return jsx(Table,{rowKey:"id",size:o,rowHoverable:false,classNames:t,dataSource:Array.from({length:e},(r,s)=>({id:s})),pagination:false,scroll:n,children:a.map((r,s)=>jsx(Table.Column,{dataIndex:r.dataIndex,width:r.width,title:jsx(i$1,{className:"h-22 w-full animate-none bg-bg-antd"}),render:i,onCell:()=>s===0?{colSpan:a.length}:{colSpan:0}},r.dataIndex))})}var gt=16;function ta(e,o){let t=e.length,n=`calc((100% - ${gt*(t-1)}px) / ${t})`,i=e.some(r=>r.skeleton==="avatar"||r.skeleton==="double-line");return jsx("div",{className:f("flex items-center",o),style:{gap:`${gt}px`},children:e.map((r,s)=>{let u=r?.key??s;return jsx("div",{style:{width:n},children:aa(r.skeleton,i)},u)})})}function aa(e,o){switch(e){case "avatar":return jsx(na,{});case "double-line":return jsx(ra,{});case "group":return jsx(ia,{needAlignment:o});default:return jsx(oa,{needAlignment:o})}}function oa({needAlignment:e}){return jsxs("div",{className:"grid h-full gap-4",children:[e&&jsx("div",{className:"h-12 w-1"}),jsx(i$1,{className:"h-10"})]})}function na(){return jsxs("div",{className:"flex w-full items-center gap-6",children:[jsx(i$1,{className:"shrink-0 rounded-full",style:{width:"var(--avatar-size, 32px)",height:"var(--avatar-size, 32px)"}}),jsxs("div",{className:"grid flex-1 gap-4",children:[jsx(i$1,{className:"h-12 w-[60%]"}),jsx(i$1,{className:"h-10"})]})]})}function ra(){return jsxs("div",{className:"grid h-full w-full gap-4 py-4",children:[jsx(i$1,{className:"h-12 w-[60%]"}),jsx(i$1,{className:"h-10"})]})}function ia({needAlignment:e}){return jsxs("div",{className:"grid h-full gap-4",children:[e&&jsx("div",{className:"h-12 w-1"}),jsxs("div",{className:"flex w-full items-center gap-4",children:[jsx(i$1,{className:"h-10 w-[20%]"}),jsx(i$1,{className:"h-10 w-[20%]"}),jsx(i$1,{className:"h-10 w-[20%]"}),jsx(i$1,{className:"h-10 w-[20%]"}),jsx(i$1,{className:"h-10 w-[20%]"})]})]})}function St({className:e$1,options:o,...t}){return jsx(e,{className:f("w-full",e$1),...t,children:jsx(f$1,{variant:"line",size:"medium",className:"w-full px-12",children:o?.map(a=>jsx(g$1,{value:a.value,className:"py-8",children:a.label},a.id??a.value))})})}function Dt({value:e,className:o,onChange:t,...a$1}){let n=a(),[i,r]=C.useState(false),s=C.useMemo(()=>[{groupType:"radio",value:e,options:[{label:n("large"),value:"large"},{label:n("middle"),value:"middle"},{label:n("compact"),value:"small"}],onValueChange:t}],[t,n,e]);return jsx(k$1,{side:"bottom",align:"end",collisionPadding:6,items:s,className:"min-w-100",open:i,onOpenChange:r,children:jsxs(M,{mode:"stroke",variant:"neutral",size:"small",className:f("gap-0",o,i&&"active"),...a$1,children:[jsx(Tooltip,{title:n("density"),mouseEnterDelay:1,children:jsx("div",{className:"absolute inset-0"})}),jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"size-16",viewBox:"0 0 1024 1024",children:jsx("path",{d:"M840 836H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm0-724H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM610.8 378c6 0 9.4-7 5.7-11.7L515.7 238.7a7.14 7.14 0 0 0-11.3 0L403.6 366.3a7.23 7.23 0 0 0 5.7 11.7H476v268h-62.8c-6 0-9.4 7-5.7 11.7l100.8 127.5c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H548V378h62.8z"})})]})})}function be(e){return e.key?String(e.key):Array.isArray(e.dataIndex)?e.dataIndex.join("."):String(e.dataIndex)}function ca(e){return typeof e=="string"&&e.length>0}function ht(e){return [Array.isArray(e.dataIndex)?e.dataIndex.join(" "):typeof e.dataIndex=="string"?e.dataIndex:null,typeof e.title=="string"?e.title:null,e.key!==null?String(e.key):null].filter(ca)}function vt({disabled:e,columns:o}){let t$1=a(),{alwaysShowingColumns:a$1}=bt(),[n,i]=C.useState(false),{columnVisibility:r$1}=me(),s$1=H(l=>l.setColumnVisibilityState),u=C.useCallback((l,d)=>{s$1(m=>({...m,[l]:d}));},[s$1]);return jsxs(r,{open:n,onOpenChange:i,children:[jsx(s,{asChild:true,children:jsx(M,{mode:"stroke",variant:"neutral",size:"small",className:f(n&&"active","relative gap-0"),disabled:e,startContent:jsx(A,{}),children:jsx(Tooltip,{title:t$1("column_set"),mouseEnterDelay:1,children:jsx("div",{className:"absolute inset-0"})})})}),jsx(t,{align:"end",side:"bottom",arrow:false,className:"w-fit rounded-xl p-0",sideOffset:6,children:jsxs(B,{children:[jsx(C$1,{autoFocus:true,placeholder:"Search..."}),jsx(E,{children:t$1("no_results")}),jsx(D,{className:"max-h-256",children:jsx(F,{children:o.map(l=>{let d=be(l),m=r$1[d]!==false;return jsxs(H$1,{keywords:ht(l),onSelect:()=>u(d,!m),className:"group flex items-center gap-6",value:d,disabled:a$1?.includes(d),children:[jsx(Checkbox,{checked:m,tabIndex:-1,className:f("mr-4 opacity-100")}),jsx("span",{children:l.title})]},d)})})})]})})]})}function ga(e){return typeof e=="string"?{type:e,key:e}:e.type==="custom"?{type:"custom",key:e.key,hidden:e.hidden,render:e.render}:{type:e.type,key:e.key??e.type,hidden:e.hidden,btnProps:e.btnProps,tooltip:e.tooltip}}function ya({btnProps:e,tooltip:o,disabled:t,loading:a$1,onAction:n}){let i=a(),r=o??i("refresh");return jsx(M,{mode:"stroke",variant:"neutral",startContent:jsx(RefreshCw,{}),loading:a$1,disabled:t||a$1,className:"gap-0",onClick:()=>n({action:"data_refresh"}),...e,children:jsx(Tooltip,{title:r,mouseEnterDelay:1,children:jsx("div",{className:"absolute inset-0"})})})}function Sa(){let e=Tt()??"small",o=H(t=>t.setTableSize);return jsx(Dt,{value:e,onChange:o})}function Ca({columns:e}){return jsx(vt,{columns:e})}function Da({btnProps:e,disabled:o,loading:t,onAction:a$1}){let n=a();return jsx(M,{variant:"primary",startContent:jsx(ArrowDownToLine,{}),loading:t,disabled:o||t,onClick:()=>a$1({action:"data_export"}),...e,children:n("data_export")})}var ha={initial:{opacity:0,scale:.85,x:10,originX:1},animate:{opacity:1,scale:1,x:0,originX:1},exit:{opacity:0,scale:.85,x:10,originX:1}},xa={ease:[.26,.08,.25,1],duration:.25};function Rt({items:e,columns:o,disabled:t,loading:a,exporting:n,filter:i,onAction:r,className:s}){let u=C.useMemo(()=>e.map(c=>ga(c)),[e]),l=C.useMemo(()=>u.filter(c=>!c.hidden),[u]),d=C.useCallback(c=>{r?.(c);},[r]),m=C.useMemo(()=>({disabled:t,loading:a,exporting:n,columns:o,onAction:d}),[t,a,n,o,d]),z=c=>{let f={btnProps:c.btnProps,tooltip:c.tooltip,disabled:t,loading:a,onAction:d};switch(c.type){case "data_refresh":return jsx(ya,{...f});case "size_setting":return jsx(Sa,{});case "column_setting":return jsx(Ca,{columns:o});case "data_export":return jsx(Da,{...f,loading:n});case "custom":return c.render?.(m);case "filter_btn":return i;default:return null}};return jsx("div",{className:f("flex items-center gap-8",s),children:jsx(AnimatePresence,{mode:"popLayout",initial:false,children:l.map(c=>jsx(m$1.div,{layout:true,variants:ha,initial:"initial",animate:"animate",exit:"exit",transition:xa,children:z(c)},c.key))})})}var ve=["data_refresh","size_setting","column_setting","filter_btn"];function Pt(e){return e.filter(o=>o.filter!==void 0).map(o=>{let{filter:t,dataIndex:a,title:n}=o,i=Array.isArray(a)?a.join("."):a,r=t.displayName??(typeof n=="string"?n:i);return {...t,columnId:i,displayName:r}})}function wt(e){return e.map(({filter:o,...t})=>t)}var va=31,Ra=44,Pa={},At=0,Pe=e=>{if(!e)return 0;let o=e.querySelectorAll(':scope > [data-id^="data-table-card-"]'),t=0;return o.forEach(a=>{let n=a.getAttribute("data-id")==="data-table-card-content";t+=n?0:a.clientHeight;}),document.documentElement.clientHeight-At-window.scrollY-va-Ra-t-3},It=e=>{At=e?.offsetTop??0;};function zt(e,o,{x:t="max-content",y:a,...n}=Pa){let[i,r]=C.useState(a);return C.useLayoutEffect(()=>{It(e.current);let s=c$1(()=>{It(e.current),r(Pe(e.current));},250);return window.addEventListener("resize",s),()=>{window.removeEventListener("resize",s);}},[e]),C.useEffect(()=>{if(a!==void 0)return;r(Pe(e.current));let s=setTimeout(()=>{r(Pe(e.current));},350);return ()=>{clearTimeout(s);}},[a,o,e]),{x:t,y:i,...n}}var Aa={pagination:{root:"m-0 py-16 px-8 [&_.ant-pagination-total-text]:mr-auto"},body:{cell:"px-12!"}},za={root:"m-0 flex w-full [&_.ant-pagination-total-text]:ps-12 [&_.ant-pagination-total-text]:mr-auto"},Na={initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0}},ka={initial:{opacity:0,y:24},animate:{opacity:1,y:0},exit:{opacity:0,y:-24}},Fa={ease:[.26,.08,.25,1],duration:.3};function Ba({id:e,activeTabId:o$1,tabList:t,title:a$1,icon:n$1,description:i$1,variant:r,classNames:s,slots:u,columns:l$1,filters:d$1,defaultFilters:m$2,total:z,pagination:c$1,defaultPagination:f$1,loading:D,exporting:q,disabled:N,animated:M=true,style:k$1,toolbarItems:ie,onTabChange:$,onChange:W,onFiltersChange:se,onToolbarAction:le,..._}){let g$1=a(),F=H(v=>v.setActiveTab),L=H(v=>v.activeTabId),{tableSize:V,columnVisibility:E}=me();C.useEffect(()=>{e&&e!==L&&F(e);},[e,L,F]);let y=C.useMemo(()=>l$1.filter(v=>v.hidden!==true),[l$1]),X=C.useMemo(()=>Pt(y),[y]),J=C.useMemo(()=>wt(y),[y]),[U,Q]=d({filters:d$1,defaultFilters:m$2,onFiltersChange:se}),G=C.useMemo(()=>J.filter(v=>E[be(v)]!==false),[J,E]),O=C.useRef({pagination:{},filters:{},sorter:{},extra:{action:"paginate",currentDataSource:[]}}),[ce,fe]=C.useState(()=>({current:c$1?.current??f$1?.current??1,pageSize:c$1?.pageSize??f$1?.pageSize??10})),de=C.useCallback(v=>g$1("pagination_total").replace("{total}",String(v)),[g$1]),S=C.useCallback((v,ye,ue,Et)=>{let{pagination:Kt,filters:Ht,sorter:Lt,extra:Ut}=O.current={...O.current,filters:ye,sorter:ue,extra:Et};W?.(Kt,Ht,Lt,Ut);},[W]),I=C.useCallback((v,ye)=>{let ue={...c$1,current:v,pageSize:ye};O.current={...O.current,pagination:ue},fe(ue),W?.(O.current.pagination,O.current.filters,O.current.sorter,O.current.extra);},[W,c$1]),x=C.useMemo(()=>({disabled:D||N,size:V==="large"?"middle":V,...f$1,showTotal:de,onChange:I,onShowSizeChange:I,...c$1,...ce,total:z}),[D,N,V,de,c$1,I,f$1,ce,z]),B=C.useMemo(()=>({...Aa,header:{cell:_.bordered?"p-12":"px-12 py-10 border-t border-stroke-antd first:border-l last:border-r"}}),[_.bordered]),Z=t&&Array.isArray(t),te=Math.min(x.pageSize??x.defaultPageSize??10,15),ge=!!(D&&G.some(v=>v.skeleton)),Ot=X.length!==0,Ne=U&&U.length!==0,ke=C.useRef(null),Mt=C.useMemo(()=>_.scroll,[_.scroll]),Fe=zt(ke,`${U?.length}-${o$1??e}`,Mt),Be=ge?jsx(yt,{id:`${e}-skeleton`,columns:G,size:V,count:te,classNames:B,scroll:Fe}):jsx(Table,{id:`${e}-data-table`,columns:G,classNames:B,pagination:false,size:V,loading:D,showSorterTooltip:false,onChange:S,..._,scroll:Fe}),Vt=r==="accent",_e=jsx(b$1,{columns:X,filters:U,actions:Q,"data-id":"data-table-active-filters",className:"flex flex-wrap gap-6 px-12 pt-16",enableAutoClose:true});return jsxs(g,{ref:ke,className:f("relative h-full max-h-[calc(100vh-80px)] overflow-hidden rounded-2xl",s?.root),style:k$1,variant:r,children:[jsxs(h,{"data-id":"data-table-card-header",className:f("data-table-card-header grow-0 px-14 pt-12 pb-10",Vt&&"pt-10",Z&&"border-b-0",s?.cardHeader),children:[jsxs(l,{className:f("flex items-center gap-12",s?.cardHeading),children:[n$1&&jsx(o,{className:f("size-34 border border-stone-200 bg-stone-100 text-text-sub",!!(a$1&&i$1)&&"size-44 [&_svg]:size-24",s?.cardIcon),children:n$1}),a$1&&jsxs("div",{className:f(i$1&&"flex flex-col gap-4"),children:[jsx(n,{children:a$1}),i$1&&jsx(p,{children:i$1})]})]}),jsx(m,{className:s?.cardToolbar,children:jsx(Rt,{onAction:le,items:ie??ve,loading:D,disabled:N,exporting:q,filter:Ot&&jsx(c,{columns:X,filters:U,actions:Q,align:"end",enableAutoBack:true},`${e}-filter`),columns:y})})]}),u?.summary&&jsx(j,{"data-id":"data-table-card-summary",className:f("grow-0 p-16",s?.cardSummary),children:u?.summary}),Z&&jsx(j,{"data-id":"data-table-card-tabs",className:"grow-0 p-0",children:jsx(St,{value:o$1,options:t,onValueChange:$})}),jsx(AnimatePresence,{initial:false,children:Ne&&jsx(m$1.div,{"data-id":"data-table-card-filter-values",variants:Na,initial:"initial",animate:"animate",exit:"exit",children:jsx(j,{className:"p-0",children:_e})},o$1)}),jsx(i,{"data-id":"data-table-card-content",className:f("relative grow overflow-hidden px-12 py-16 pb-63",s?.cardContent),children:M?jsx(AnimatePresence,{mode:"popLayout",initial:false,children:jsx(m$1.div,{variants:ka,initial:"initial",animate:"animate",exit:"exit",transition:Fa,children:Be},o$1)}):jsxs(Fragment,{children:[Ne&&jsx("div",{className:"mb-16",children:_e}),Be]})}),jsx(k,{"data-id":"data-table-card-pager",className:"flex min-h-64 w-full grow-0 items-center justify-between",children:jsx(Pagination,{classNames:za,...x})}),u?.footer&&jsx(k,{"data-id":"data-table-card-footer",className:f("grow-0 p-16",s?.cardFooter),children:u?.footer})]})}var _a=import.meta.env?.VITE_MOCK_API_SSR;function Oa({storageKey:e,alwaysShowingColumns:o,...t}){let{tableStateStorageKey:a,pagination:n}=b(),i=e??a??"APP_UI_TABLE_CONFIG";if(_a)return jsx(mt,{initialTabId:t.activeTabId??t.id,storageKey:i,alwaysShowingColumns:o,children:jsx(Ba,{defaultPagination:n,...t})});let{title:r,port:s,host:u,url:l,method:d,...m}=Ma(t);return jsx(Card,{title:r,children:jsx(Table,{id:t.id,...m})})}function Ma(e){let o=e.columns.map(({render:t,port:a,host:n,method:i,...r})=>({...r}));return {...e,columns:o}}var we={dateFormat:"YYYY-MM-DD",paginationKeys:{current:"current",pageSize:"pageSize"},sorterKeys:{field:"sortField",order:"sortOrder"},filtersKey:"filters",orderValues:{ascend:"asc",descend:"desc"},fieldMapping:{}};function Ie(e,o){return o[e]??e}function Ea(e){return e!==null&&typeof e=="object"&&"$d"in e&&typeof e.format=="function"}function Ae(e,o){return e==null?null:Ea(e)?e.format(o):typeof e=="string"||typeof e=="number"||typeof e=="boolean"?e:String(e)}function Ka(e,o={}){let t={...we,...o},{pagination:a,filters:n,sorter:i}=e,r={};a.current!==void 0&&(r[t.paginationKeys.current]=a.current),a.pageSize!==void 0&&(r[t.paginationKeys.pageSize]=a.pageSize);let s=Array.isArray(i)?i[0]:i;s?.field&&s?.order&&(r[t.sorterKeys.field]=String(s.field),r[t.sorterKeys.order]=t.orderValues[s.order]??s.order);let u={};for(let l of n){let d=Ie(l.columnId,t.fieldMapping);u[d]=l.values.map(m=>Ae(m,t.dateFormat));}return Object.keys(u).length>0&&(r[t.filtersKey]=u),r}function re(e,o={}){let t={...we,...o},{pagination:a,filters:n,sorter:i}=e,r={};a.current!==void 0&&(r[t.paginationKeys.current]=a.current),a.pageSize!==void 0&&(r[t.paginationKeys.pageSize]=a.pageSize);let s=Array.isArray(i)?i[0]:i;s?.field&&s?.order&&(r[t.sorterKeys.field]=String(s.field),r[t.sorterKeys.order]=t.orderValues[s.order]??s.order);for(let u of n){let l=Ie(u.columnId,t.fieldMapping),d=u.values.map(m=>Ae(m,t.dateFormat));r[l]=d.length===1?d[0]:d;}return r}function Bt(e,o={}){let t={...we,...o},{pagination:a,filters:n,sorter:i}=e,r=new URLSearchParams;a.current!==void 0&&r.set(t.paginationKeys.current,String(a.current)),a.pageSize!==void 0&&r.set(t.paginationKeys.pageSize,String(a.pageSize));let s=Array.isArray(i)?i[0]:i;s?.field&&s?.order&&(r.set(t.sorterKeys.field,String(s.field)),r.set(t.sorterKeys.order,t.orderValues[s.order]??s.order));for(let u of n){let l=Ie(u.columnId,t.fieldMapping),d=u.values.map(m=>Ae(m,t.dateFormat));r.set(l,d.join(","));}return r.toString()}function Ha(e,o={}){let t=Bt(e,o);return new URLSearchParams(t)}var La=[],Ua={current:1,pageSize:10},Ga={};function _t(){return {filters:La,pagination:Ua,sorter:{},extra:{action:"paginate",currentDataSource:[]}}}function $a(e){let o=new Map,t=_t();for(let a of e)o.set(a.value,{filters:a.defaultFilters??a.filters??t.filters,pagination:a.defaultPagination??a.pagination??t.pagination,sorter:a.defaultSorter??t.sorter,extra:t.extra});return o}function ze({fireOnMount:e=true,active:o,defaultActive:t,tabList:a,onTabChange:n,onTableChange:i,onToolbarAction:r}){let[s,u]=C.useState(()=>t??a[0]?.value??""),l=o??s,[d,m]=C.useState(()=>$a(a)),z=C.useMemo(()=>a.find(S=>S.value===l)??a[0],[l,a]),{id:c,fireOnMount:f=e,loading:D,exporting:q,disabled:N,serializeOptions:M=Ga,serializeFn:k=re,defaultFilters:ie,defaultPagination:$,defaultSorter:W,filters:se,pagination:le,onChange:_,onToolbarAction:g,value:F,label:L,...V}=z,E=C.useMemo(()=>_t(),[]),y=C.useMemo(()=>d.get(l)??E,[d,l,E]),X=C.useRef(i),J=C.useRef(r),U=C.useRef(_),Q=C.useRef(g);X.current=i,J.current=r,U.current=_,Q.current=g;let G=C.useRef(new Map);C.useEffect(()=>{G.current.has(l)||G.current.set(l,!f);},[l,f]);let O=C.useCallback(S=>{u(S),n?.(S);},[n]),ce=C.useCallback(S=>{m(I=>{let x=new Map(I),B=x.get(l)??E,Z=typeof S=="function"?S(B.filters):S;return x.set(l,{...B,filters:Z,pagination:{...B.pagination,current:1}}),x});},[l,E]),fe=C.useCallback((S,I,x,B)=>{m(Z=>{let te=new Map(Z),ge=te.get(l)??E;return te.set(l,{...ge,pagination:S,sorter:x,extra:B}),te});},[l,E]),de=C.useCallback(S=>{if(S.action==="data_export"){let I={pagination:y.pagination,filters:y.filters,sorter:y.sorter,extra:y.extra},x=k(I,M),B={action:S.action,payload:x};Q.current?.(B),J.current?.(c,B);return}Q.current?.(S),J.current?.(c,S);},[c,y,k,M]);return C.useEffect(()=>{if(G.current.get(l)){G.current.set(l,false);return}let I={pagination:y.pagination,filters:y.filters,sorter:y.sorter,extra:y.extra},x=k(I,M);U.current?.(x,I),X.current?.(c,x,I);},[l,c,y,k,M]),{activeTabId:l,tabList:a,onTabChange:O,id:c,loading:D,exporting:q,disabled:N||q,filters:y.filters,pagination:y.pagination,onFiltersChange:ce,onChange:fe,onToolbarAction:de,...V}}var Wa=[],Ya={},ja={action:"paginate",currentDataSource:[]},qa={current:1,pageSize:10};function Xa({id:e,fireOnMount:o=true,defaultFilters:t=Wa,defaultPagination:a=qa,defaultSorter:n=Ya,serializeOptions:i={},loading:r,exporting:s,disabled:u,serializeFn:l=re,onChange:d,onToolbarAction:m}={}){let z=C.useRef(!o),c=C.useRef(d),f=C.useRef(m);c.current=d,f.current=m;let[D,q]=C.useState(t),[N,M]=C.useState(a),[k,ie]=C.useState(n),[$,W]=C.useState(ja),se=C.useCallback(g=>{q(F=>typeof g=="function"?g(F):g),M(F=>({...F,current:1}));},[]),le=C.useCallback((g,F,L,V)=>{M(g),ie(L),W(V);},[]),_=C.useCallback(g=>{if(g.action==="data_export"){let L=l({pagination:N,filters:D,sorter:k,extra:$},i);f.current?.({action:g.action,payload:L});return}f.current?.(g);},[D,N,k,$,l,i]);return C.useEffect(()=>{if(z.current){z.current=false;return}let g={pagination:N,filters:D,sorter:k,extra:$},F=l(g,i);c.current?.(F,g);},[N,D,k,$,l,i]),{id:e,loading:r,exporting:s,disabled:u||s,filters:D,pagination:N,onFiltersChange:se,onChange:le,onToolbarAction:_}}function Ja(e={}){let{id:o="default",onChange:t,onToolbarAction:a,...n}=e,i=C.useCallback((c,f,D)=>{t?.(f,D);},[t]),r=C.useCallback((c,f)=>{a?.(f);},[a]),s=ze({fireOnMount:e.fireOnMount,tabList:[{id:o,value:o,label:"",columns:[],total:e.total,...n}],onTableChange:t?i:void 0,onToolbarAction:a?r:void 0}),{activeTabId:u,tabList:l,columns:d,onTabChange:m,...z}=s;return z}
2
+ export{ve as DEFAULT_TOOLBAR_ITEMS,Oa as DataTable,Ka as serializeForPost,re as serializeForPostFlat,Bt as serializeForURL,Ha as serializeToURLSearchParams,Xa as useDataTableState,Ja as useDataTableStateAdapter,ze as useTabsDataTableState};
@@ -0,0 +1 @@
1
+ import {e,f,a as a$1,N}from'./chunk-ZLJEIJBZ.js';import {a}from'./chunk-WOT6VMZA.js';import {LazyMotion}from'motion/react';import z from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {Tabs,DropdownMenu}from'radix-ui';import {Circle,Check,ChevronRight}from'lucide-react';var R=Symbol.for("@@jerry-fe/ui/UIProviderContext");function se(){if(!globalThis[R]){let e=z.createContext(null);globalThis[R]=e;}return globalThis[R]}var de=()=>import('./motion-features-NSSC2G6R.js').then(e=>e.default),E=se(),le={hideOnSinglePage:false,showSizeChanger:true,pageSizeOptions:[10,20,30,50]},pe=({locale:e="zh-CN",tableStateStorageKey:t="APP_UI_TABLE_CONFIG",pagination:o=le,children:n})=>{let r=z.useMemo(()=>({tableStateStorageKey:t,pagination:o}),[t,o]);return jsx(LazyMotion,{features:de,strict:true,children:jsx(E.Provider,{value:r,children:jsx(a$1,{locale:e,children:n})})})};pe.displayName="UIProvider";function Ie(){let e=z.useContext(E);if(!e)throw new Error("useUiState must be used within UIProvider");return e}function ze(e,t,o=true,n=true){let r;return (...i)=>{r?(clearTimeout(r),r=void 0):o&&e(...i),r=self.setTimeout(()=>{n&&e(...i),r=void 0;},t);}}function Se(e,t,o=true){let n,r,i;return (...f)=>{r=true,i=f,n||(o&&(r=false,e(...i)),n=self.setInterval(()=>{if(!r){self.clearInterval(n),n=void 0;return}r=false,e(...i);},t));}}var xe={};a(xe,{Root:()=>fe,Tabs:()=>fe,TabsContent:()=>ve,TabsList:()=>be,TabsTrigger:()=>ge});var ue=e({base:"flex w-fit shrink-0 items-center",variants:{variant:{default:"bg-bg-antd p-4",button:"",line:"border-b border-stroke-antd"},shape:{default:"",pill:""},size:{large:"gap-10",medium:"gap-8",small:"gap-6",xsmall:"gap-4"}},compoundVariants:[{variant:"default",size:"large",className:"gap-10 p-6"},{variant:"default",size:"medium",className:"gap-4 p-4"},{variant:"default",size:"small",className:"gap-6 p-4"},{variant:"default",size:"xsmall",className:"gap-4 p-4"},{variant:"default",shape:"default",size:"large",className:"rounded-lg"},{variant:"default",shape:"default",size:"medium",className:"rounded-lg"},{variant:"default",shape:"default",size:"small",className:"rounded-md"},{variant:"default",shape:"default",size:"xsmall",className:"rounded-md"},{variant:"line",size:"large",className:"gap-28"},{variant:"line",size:"medium",className:"gap-28"},{variant:"line",size:"small",className:"gap-16"},{variant:"line",size:"xsmall",className:"gap-16"},{variant:"default",shape:"pill",className:"rounded-full **:[[role=tab]]:rounded-full"},{variant:"button",shape:"pill",className:"rounded-full **:[[role=tab]]:rounded-full"}],defaultVariants:{variant:"default",size:"medium"}}),me=e({base:"inline-flex shrink-0 cursor-pointer items-center justify-center border-0 bg-transparent font-medium whitespace-nowrap ring-offset-1 transition-colors select-none focus-visible:ring-2 focus-visible:ring-primary-base focus-visible:ring-offset-2 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:shrink-0 [&_svg]:text-text-soft [&:hover_svg]:text-primary-base [&[data-state=active]_svg]:text-primary-base",variants:{variant:{default:"text-text-sub hover:text-text-strong data-[state=active]:bg-bg-white data-[state=active]:text-primary-base",button:"rounded-lg text-text-sub hover:text-text-strong focus-visible:ring-2 focus-visible:ring-primary-base focus-visible:ring-offset-1 data-[state=active]:bg-bg-antd data-[state=active]:text-text-strong",line:"border-b-2 border-transparent text-text-sub hover:text-text-strong data-[state=active]:border-primary-base data-[state=active]:text-primary-base"},size:{large:"gap-10 text-label-md [&_svg]:size-20",medium:"gap-8 text-label-sm [&_svg]:size-16",small:"gap-6 text-label-xs [&_svg]:size-14",xsmall:"gap-4 text-label-xs [&_svg]:size-14"}},compoundVariants:[{variant:"default",size:"large",className:"rounded-md px-16 py-10"},{variant:"default",size:"medium",className:"rounded-md px-12 py-6"},{variant:"default",size:"small",className:"rounded-sm px-10 py-6"},{variant:"default",size:"xsmall",className:"rounded-sm px-8 py-4"},{variant:"button",size:"large",className:"rounded-lg px-16 py-12"},{variant:"button",size:"medium",className:"rounded-lg px-12 py-10"},{variant:"button",size:"small",className:"rounded-md px-10 py-8"},{variant:"button",size:"xsmall",className:"rounded-md px-8 py-6"},{variant:"line",size:"large",className:"py-12"},{variant:"line",size:"medium",className:"py-10"},{variant:"line",size:"small",className:"py-8"},{variant:"line",size:"xsmall",className:"py-6"}],defaultVariants:{variant:"default",size:"medium"}}),ce=e({base:"focus-visible:ring-ring mt-10 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden",variants:{variant:{default:""}},defaultVariants:{variant:"default"}}),$=z.createContext({variant:"default",size:"medium"});function fe({className:e,...t}){return jsx(Tabs.Root,{"data-slot":"tabs",className:f("",e),...t})}function be({className:e,variant:t="default",shape:o="default",size:n="medium",...r}){return jsx($.Provider,{value:{variant:t||"default",size:n||"medium"},children:jsx(Tabs.List,{"data-slot":"tabs-list",className:f(ue({variant:t,shape:o,size:n}),e),...r})})}function ge({className:e,...t}){let{variant:o,size:n}=z.useContext($);return jsx(Tabs.Trigger,{"data-slot":"tabs-trigger",className:f(me({variant:o,size:n}),e),...t})}function ve({className:e,variant:t,...o}){return jsx(Tabs.Content,{"data-slot":"tabs-content",className:f(ce({variant:t}),e),...o})}function _e({className:e,...t}){return jsx("div",{className:f("animate-pulse rounded-sm bg-bg-soft",e),...t})}var we=e({slots:{content:["z-50 overflow-hidden rounded-2xl bg-bg-white p-8 shadow-regular-md ring-1 ring-stroke-soft ring-inset","flex flex-col gap-4 text-label-sm text-text-sub","data-[side=bottom]:origin-top data-[side=left]:origin-right data-[side=right]:origin-left data-[side=top]:origin-bottom","data-[state=open]:animate-in data-[state=open]:fade-in-0","data-[state=closed]:animate-out data-[state=closed]:fade-out-0","data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95","data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2"],trigger:["cursor-default rounded-lg px-10 py-6 outline-none select-none [&_svg]:pointer-events-none [&_svg]:shrink-0","flex items-center gap-8","data-highlighted:bg-bg-weak data-[state=open]:bg-bg-weak","focus-visible:ring-2 focus-visible:ring-primary-base","data-disabled:pointer-events-none data-disabled:text-text-disabled"],item:["group/item relative cursor-pointer rounded-lg px-10 py-6 outline-none select-none data-highlighted:bg-bg-weak","flex items-center gap-8","transition duration-200 ease-out","focus:outline-none","focus-visible:ring-2 focus-visible:ring-primary-base","data-disabled:pointer-events-none data-disabled:text-text-disabled"],checkbox:["relative flex cursor-default items-center rounded-lg py-6 pr-6 transition-colors outline-none select-none","data-disabled:pointer-events-none data-disabled:text-text-disabled","data-highlighted:bg-bg-weak","focus:outline-none","focus-visible:ring-2 focus-visible:ring-primary-base","pl-38"],label:"px-8 py-2 text-label-sm text-text-soft",separator:"-mx-4 my-4 h-px bg-bg-weak",shortcut:"ml-auto text-text-soft group-data-disabled/item:text-text-disabled",arrow:"-mr-6 ml-auto size-16",icon:"size-16",check:"absolute top-1/2 left-10 size-16 -translate-y-1/2"},variants:{inset:{true:{trigger:"pl-38",item:"pl-38",label:"pl-38"}},destructive:{true:{item:"text-error-base focus-visible:ring-error-base data-highlighted:bg-red-50"}}}}),s=we();var K=DropdownMenu.Root,q=DropdownMenu.Trigger,X=DropdownMenu.Group,Y=DropdownMenu.Portal,J=DropdownMenu.Sub,Q=DropdownMenu.RadioGroup;DropdownMenu.Arrow;var S=({className:e,inset:t,children:o,...n})=>jsxs(DropdownMenu.SubTrigger,{className:s.trigger({inset:t,className:e}),...n,children:[o,jsx(ChevronRight,{className:s.arrow()})]});S.displayName=DropdownMenu.SubTrigger.displayName;var k=({className:e,...t})=>jsx(DropdownMenu.SubContent,{className:s.content({className:f("min-w-120",e)}),...t});k.displayName=DropdownMenu.SubContent.displayName;var V=({className:e,sideOffset:t=4,...o})=>jsx(DropdownMenu.Portal,{children:jsx(DropdownMenu.Content,{sideOffset:t,className:s.content({className:f("min-w-xs",e)}),...o})});V.displayName=DropdownMenu.Content.displayName;var L=({className:e,inset:t,destructive:o,...n})=>jsx(DropdownMenu.Item,{className:s.item({inset:t,destructive:o,className:e}),...n});L.displayName=DropdownMenu.Item.displayName;var F=({className:e,children:t,checked:o,...n})=>jsxs(DropdownMenu.CheckboxItem,{className:s.checkbox({className:e}),checked:o,...n,children:[jsx(DropdownMenu.ItemIndicator,{className:s.check(),asChild:true,children:jsx(Check,{})}),t]});F.displayName=DropdownMenu.CheckboxItem.displayName;var A=({className:e,children:t,...o})=>jsxs(DropdownMenu.RadioItem,{className:s.checkbox({className:e}),...o,children:[jsx(DropdownMenu.ItemIndicator,{className:s.check({className:"left-14 size-8 fill-current"}),asChild:true,children:jsx(Circle,{})}),t]});A.displayName=DropdownMenu.RadioItem.displayName;var h=({className:e,inset:t,...o})=>jsx(DropdownMenu.Label,{className:s.label({inset:t,className:e}),...o});h.displayName=DropdownMenu.Label.displayName;var x=({className:e,...t})=>jsx(DropdownMenu.Separator,{className:s.separator({className:e}),...t});x.displayName=DropdownMenu.Separator.displayName;var O=({className:e,...t})=>jsx("span",{className:s.shortcut({className:e}),...t});O.displayName="DropdownMenuShortcut";var D=({className:e,...t})=>jsx(N,{className:s.icon({className:e}),...t});D.displayName="DropdownMenuIcon";var Z=({open:e,defaultOpen:t,modal:o,menuLabel:n,children:r,items:i,disabled:f$1,className:b,asChild:g=true,renderItem:N,onOpenChange:I,onAction:c,...C})=>{let l=N??j;return jsxs(K,{open:e,defaultOpen:t,modal:o,onOpenChange:I,children:[jsx(q,{disabled:f$1,asChild:g,children:r}),jsxs(V,{className:f(b,"origin-(--radix-dropdown-menu-content-transform-origin)"),...C,children:[n&&jsxs(Fragment,{children:[jsx(h,{children:n}),jsx(x,{})]}),Array.isArray(i)&&i.map((y,w)=>l(y,w,c))]})]})};Z.displayName="DropdownMenu";function j(e,t,o){let{key:n,groupType:r,label:i,shortcut:f,icon:b,inset:g,onValueChange:N,...I}=e,c=n??t,C=Array.isArray(e.items)?e.items:void 0;return e.separator?jsx(x,{},n||`separator-${t}`):r==="radio"&&e.options?jsxs(Q,{value:String(e.value),onValueChange:N,children:[i&&jsxs(Fragment,{children:[jsx(h,{inset:g,children:i}),jsx(x,{})]}),e.options.map(l=>jsx(A,{disabled:l.disabled||e.disabled,value:String(l.value),children:l.label},l.key||l.value))]},c):r==="checkbox"&&e.options?jsxs(X,{children:[i&&jsxs(Fragment,{children:[jsx(h,{inset:g,children:i}),jsx(x,{})]}),e.options.map(({key:l,label:y,value:w,disabled:ee},te)=>jsx(F,{disabled:ee||e.disabled,checked:String(e.value)?.includes(String(w)),onCheckedChange:oe=>{let G=e.value??[],ae=oe?[...G,w]:G.filter(ne=>ne!==w);e.onValueChange?.(ae);},children:y},l||te))]},c):C?jsxs(J,{children:[jsxs(S,{inset:g,disabled:e.disabled,children:[b&&jsx(D,{as:b}),i]}),jsx(Y,{children:jsx(k,{children:C.map((l,y)=>j(l,`${c}-${y}`,o))})})]},c):jsxs(L,{inset:g,onClick:l=>o?.(e,l),...I,children:[b&&jsx(D,{as:b}),i,f&&jsx(O,{children:f})]},c)}export{pe as a,Ie as b,ze as c,Se as d,fe as e,be as f,ge as g,xe as h,_e as i,s as j,Z as k};