@jerry-fd/ui 0.3.4 → 0.3.6

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{f as DataFilter,b as useTransition}from'./chunk-LIGJLNSS.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-BDjZbii_.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-BDjZbii_.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,22 +35,26 @@ 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;
275
51
  toolbarItems?: ToolbarItemConfig<any>[];
276
52
  onFiltersChange: React__default.Dispatch<React__default.SetStateAction<FiltersState>>;
53
+ syncing?: boolean;
277
54
  animated?: boolean;
278
55
  size?: antd_es_button.ButtonSize;
279
56
  caption?: React__default.ReactNode;
280
57
  footer?: _rc_component_table_lib_interface.PanelRender<TData> | undefined;
281
- style?: React__default.CSSProperties | undefined;
282
58
  summary?: ((data: readonly TData[]) => React__default.ReactNode) | undefined;
283
59
  children?: React__default.ReactNode;
284
60
  onScroll?: React__default.UIEventHandler<HTMLDivElement> | undefined;
@@ -323,39 +99,41 @@ declare function useDataTableStateAdapter<TData extends BaseRecord = BaseRecord>
323
99
  sortDirections?: antd_es_table_interface.SortOrder[] | undefined;
324
100
  showSorterTooltip?: (boolean | antd_es_table_interface.SorterTooltipProps) | undefined;
325
101
  virtual?: boolean | undefined;
326
- label: React__default.ReactNode;
327
- value: string;
328
102
  id: string;
329
103
  loading: boolean | undefined;
330
104
  exporting: boolean | undefined;
331
105
  disabled: boolean | undefined;
332
106
  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;
107
+ pagination: PaginationConfig;
108
+ onChange: (pagination: antd.TablePaginationConfig, filters: Record<string, antd_es_table_interface.FilterValue | null>, sorter: SorterResult<TData> | SorterResult<TData>[], extra: TableCurrentDataSource<TData>) => void;
335
109
  onToolbarAction: (toolbarAction: ToolbarAction) => void;
336
110
  };
337
111
 
338
112
  declare function useTabsDataTableState<TData extends BaseRecord = BaseRecord>({ fireOnMount: globalFireOnMount, active, defaultActive, tabList, onTabChange, onTableChange, onToolbarAction, }: UseTabsDataTableStateProps<TData>): {
113
+ activeTabId: string;
114
+ style?: React__default.CSSProperties & {
115
+ [key: `--${string}`]: string | number;
116
+ };
339
117
  storageKey?: string;
340
118
  alwaysShowingColumns?: string[];
341
119
  title?: React__default.ReactNode;
342
120
  icon?: React__default.ReactNode;
343
121
  description?: React__default.ReactNode;
344
122
  variant?: "default" | "accent";
123
+ total?: number;
345
124
  slots?: Record<"summary" | "footer", React__default.ReactNode>;
346
125
  classNames?: (Partial<Record<"root" | "cardHeader" | "cardHeading" | "cardIcon" | "cardToolbar" | "cardContent" | "cardSummary" | "cardFooter", string>> & antd_es_table_InternalTable.TableClassNamesType<TData>) | undefined;
347
126
  columns: DataTableColumnType<TData>[];
348
127
  className?: string;
349
128
  toolbarItems?: ToolbarItemConfig<any>[];
350
129
  onFiltersChange: React__default.Dispatch<React__default.SetStateAction<FiltersState>>;
130
+ syncing?: boolean;
351
131
  animated?: boolean;
352
- activeTab: string;
353
132
  tabList: TabItem<TData>[];
354
133
  onTabChange: (value: string) => void;
355
134
  size?: antd_es_button.ButtonSize;
356
135
  caption?: React__default.ReactNode;
357
136
  footer?: _rc_component_table_lib_interface.PanelRender<TData> | undefined;
358
- style?: React__default.CSSProperties | undefined;
359
137
  summary?: ((data: readonly TData[]) => React__default.ReactNode) | undefined;
360
138
  children?: React__default.ReactNode;
361
139
  onScroll?: React__default.UIEventHandler<HTMLDivElement> | undefined;
@@ -400,16 +178,14 @@ declare function useTabsDataTableState<TData extends BaseRecord = BaseRecord>({
400
178
  sortDirections?: antd_es_table_interface.SortOrder[] | undefined;
401
179
  showSorterTooltip?: (boolean | antd_es_table_interface.SorterTooltipProps) | undefined;
402
180
  virtual?: boolean | undefined;
403
- label: React__default.ReactNode;
404
- value: string;
405
181
  id: string;
406
182
  loading: boolean | undefined;
407
183
  exporting: boolean | undefined;
408
184
  disabled: boolean | undefined;
409
185
  filters: FiltersState;
410
- pagination: PaginationProps;
186
+ pagination: PaginationConfig;
411
187
  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
188
  onToolbarAction: (toolbarAction: ToolbarAction) => void;
413
189
  };
414
190
 
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 };
191
+ 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 as e$1,f as f$1,g as g$1,k as k$1}from'./chunk-IFQYYBK3.js';import {a,b as b$1,e,c,d}from'./chunk-LIGJLNSS.js';import {g,h,l,o,f,n,p,m,j,i,k,M,r,s,A,t,B,C,E,D as D$1,F,H}from'./chunk-ZLJEIJBZ.js';import'./chunk-WOT6VMZA.js';import {Card,Table,ConfigProvider,Pagination,Tooltip,Checkbox}from'antd';import D from'react';import {createStore,useStore}from'zustand';import {persist}from'zustand/middleware';import {immer}from'zustand/middleware/immer';import {useShallow}from'zustand/react/shallow';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {AnimatePresence,m as m$1}from'motion/react';import {ArrowDownToLine,RefreshCw}from'lucide-react';var Dt={tableSize:"middle",columnVisibility:{}},qe={tabStates:{},activeTabId:"",loading:false,exporting:false},it=(t,n)=>{t.tabStates[n]||(t.tabStates[n]={...Dt});},me=t=>t.tabStates[t.activeTabId]??Dt,Xe=(t,n)=>({...qe,activeTabId:n??"",setActiveTab:e=>t(a=>{a.activeTabId=e,it(a,e);}),setTableSize:e=>t(a=>{let o=a.activeTabId;it(a,o),a.tabStates[o].tableSize=e;}),setColumnVisibility:(e,a)=>t(o=>{let i=o.activeTabId;it(o,i),o.tabStates[i].columnVisibility[e]=a;}),setColumnVisibilityState:e=>t(a=>{let o=a.activeTabId;it(a,o);let i=a.tabStates[o].columnVisibility;a.tabStates[o].columnVisibility=typeof e=="function"?e(i):e;}),toggleColumnVisibility:e=>t(a=>{let o=a.activeTabId;it(a,o);let i=a.tabStates[o].columnVisibility[e];a.tabStates[o].columnVisibility[e]=!i;}),setLoading:e=>t({loading:e}),setExporting:e=>t({exporting:e}),resetCurrentTabState:()=>t(e=>{let a=e.activeTabId;e.tabStates[a]={...Dt};})}),Ze=(t,n)=>createStore()(persist(immer(e=>Xe(e,n)),{name:t,partialize:e=>({tabStates:e.tabStates})})),ht=D.createContext(null),Je=["id","action","actions"],be=D.createContext({});function Te({storageKey:t,initialTabId:n,alwaysShowingColumns:e,children:a$1}){let o=D.useRef(null);o.current||(o.current=Ze(t,n)),D.useEffect(()=>{let r=o.current;r&&!r.getState().activeTabId&&r.getState().setActiveTab(n);},[n]);let i=D.useMemo(()=>({alwaysShowingColumns:e??Je}),[e]);return jsx(be.Provider,{value:i,children:jsx(ht.Provider,{value:o.current,children:jsx(ConfigProvider,{theme:a,children:a$1})})})}function fe(){return D.useContext(be)}function Y(t){let n=D.useContext(ht);if(!n)throw new Error("useDataTableStore must be used within DataTableProvider");return useStore(n,t)}function Tt(){let t=D.useContext(ht);if(!t)throw new Error("useCurrentTabUIState must be used within DataTableProvider");return useStore(t,useShallow(n=>me(n)))}function ge(){return Y(t=>me(t).tableSize)}var ta={small:"min-h-22",middle:"min-h-30",large:"min-h-38"};function Ce({count:t,size:n="small",classNames:e,columns:a,scroll:o}){let i=D.useCallback(()=>ea(a,ta[n]),[a,n]);return jsx(Table,{rowKey:"id",size:n,rowHoverable:false,classNames:e,dataSource:Array.from({length:t},(r,s)=>({id:s})),pagination:false,scroll:o,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 ye=16;function ea(t,n){let e=t.length,o=`calc((100% - ${ye*(e-1)}px) / ${e})`,i=t.some(r=>r.skeleton==="avatar"||r.skeleton==="double-line");return jsx("div",{className:f("flex items-center",n),style:{gap:`${ye}px`},children:t.map((r,s)=>{let c=r?.key??s;return jsx("div",{style:{width:o},children:aa(r.skeleton,i)},c)})})}function aa(t,n){switch(t){case "avatar":return jsx(na,{});case "double-line":return jsx(ra,{});case "group":return jsx(ia,{needAlignment:n});default:return jsx(oa,{needAlignment:n})}}function oa({needAlignment:t}){return jsxs("div",{className:"grid h-full gap-4",children:[t&&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: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(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 De({className:t,options:n,...e}){return jsx(e$1,{className:f("w-full",t),...e,children:jsx(f$1,{variant:"line",size:"medium",className:"w-full px-12",children:n?.map(a=>jsx(g$1,{value:a.value,className:"py-8",children:a.label},a.id??a.value))})})}function xe({value:t,className:n,onChange:e,...a}){let o=b$1(),[i,r]=D.useState(false),s=D.useMemo(()=>[{groupType:"radio",value:t,options:[{label:o("large"),value:"large"},{label:o("middle"),value:"middle"},{label:o("compact"),value:"small"}],onValueChange:e}],[e,o,t]);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",n,i&&"active"),...a,children:[jsx(Tooltip,{title:o("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 ft(t){return t.key?String(t.key):Array.isArray(t.dataIndex)?t.dataIndex.join("."):String(t.dataIndex)}function ca(t){return typeof t=="string"&&t.length>0}function ve(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(ca)}function Pe({disabled:t$1,columns:n}){let e=b$1(),{alwaysShowingColumns:a}=fe(),[o,i]=D.useState(false),{columnVisibility:r$1}=Tt(),s$1=Y(l=>l.setColumnVisibilityState),c=D.useCallback((l,d)=>{s$1(u=>({...u,[l]:d}));},[s$1]);return jsxs(r,{open:o,onOpenChange:i,children:[jsx(s,{asChild:true,children:jsx(M,{mode:"stroke",variant:"neutral",size:"small",className:f(o&&"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$1,{className:"max-h-256",children:jsx(F,{children:n.map(l=>{let d=ft(l),u=r$1[d]!==false;return jsxs(H,{keywords:ve(l),onSelect:()=>c(d,!u),className:"group flex items-center gap-6",value:d,disabled:a?.includes(d),children:[jsx(Checkbox,{checked:u,tabIndex:-1,className:f("mr-4 opacity-100")}),jsx("span",{children:l.title})]},d)})})})]})})]})}function ga(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 Sa({btnProps:t,tooltip:n,disabled:e,loading:a,syncing:o,onAction:i}){let r=b$1(),s=n??r("refresh");return jsx(M,{mode:"stroke",variant:"neutral",startContent:jsx(RefreshCw,{}),loading:o||a,disabled:e||a,className:"gap-0",onClick:()=>i({action:"data_refresh"}),...t,children:jsx(Tooltip,{title:s,mouseEnterDelay:1,children:jsx("div",{className:"absolute inset-0"})})})}function ya(){let t=ge()??"small",n=Y(e=>e.setTableSize);return jsx(xe,{value:t,onChange:n})}function Ca({columns:t}){return jsx(Pe,{columns:t})}function Da({btnProps:t,disabled:n,loading:e,onAction:a}){let o=b$1();return jsx(M,{variant:"primary",startContent:jsx(ArrowDownToLine,{}),loading:e,disabled:n||e,onClick:()=>a({action:"data_export"}),...t,children:o("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 we({items:t,columns:n,disabled:e,loading:a,exporting:o,syncing:i,filter:r,onAction:s,className:c}){let l=D.useMemo(()=>t.map(p=>ga(p)),[t]),d=D.useMemo(()=>l.filter(p=>!p.hidden),[l]),u=D.useCallback(p=>{s?.(p);},[s]),E=D.useMemo(()=>({disabled:e,loading:a,exporting:o,columns:n,onAction:u}),[e,a,o,n,u]),C=p=>{let S={btnProps:p.btnProps,tooltip:p.tooltip,disabled:e,loading:a,onAction:u};switch(p.type){case "data_refresh":return jsx(Sa,{...S,syncing:i});case "size_setting":return jsx(ya,{});case "column_setting":return jsx(Ca,{columns:n});case "data_export":return jsx(Da,{...S,loading:o});case "custom":return p.render?.(E);case "filter_btn":return r;default:return null}};return jsx("div",{className:f("flex items-center gap-8",c),children:jsx(AnimatePresence,{mode:"popLayout",initial:false,children:d.map(p=>jsx(m$1.div,{layout:true,variants:ha,initial:"initial",animate:"animate",exit:"exit",transition:xa,children:C(p)},p.key))})})}var Rt=["data_refresh","size_setting","column_setting","filter_btn"];function Ie(t){return t.filter(n=>n.filter!==void 0).map(n=>{let{filter:e,dataIndex:a,title:o}=n,i=Array.isArray(a)?a.join("."):a,r=e.displayName??(typeof o=="string"?o:i);return {...e,columnId:i,displayName:r}})}function Ae(t){return t.map(({filter:n,...e})=>e)}var va=31,Ra=44,Pa=250,wa=350,Ia={},Pt=(t,n)=>{if(!t)return 0;let e=t.querySelectorAll(':scope > [data-id^="data-table-card-"]'),a=0;return e.forEach(o=>{let i=o.getAttribute("data-id")==="data-table-card-content";a+=i?0:o.clientHeight;}),document.documentElement.clientHeight-n-window.scrollY-va-Ra-a-3};function ze(t,n,{x:e="max-content",y:a,...o}=Ia){let[i,r]=D.useState(a),s=D.useRef(0),c=D.useRef(null);return D.useLayoutEffect(()=>(s.current=t.current?.offsetTop??0,c.current||(c.current=c$1(()=>{s.current=t.current?.offsetTop??0,r(Pt(t.current,s.current));},Pa,false,true)),window.addEventListener("resize",c.current),()=>{c.current&&(window.removeEventListener("resize",c.current),c.current.cancel());}),[t]),D.useEffect(()=>{if(a!==void 0)return;r(Pt(t.current,s.current));let l=setTimeout(()=>{r(Pt(t.current,s.current));},wa);return ()=>{clearTimeout(l);}},[a,n,t]),{x:e,y:i,...o}}var Fa={pagination:{root:"m-0 py-16 px-8 [&_.ant-pagination-total-text]:mr-auto"},body:{cell:"px-12!"}},Na={root:"m-0 flex w-full [&_.ant-pagination-total-text]:ps-12 [&_.ant-pagination-total-text]:mr-auto"},ka={initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0}},Ba={initial:{opacity:0,y:24},animate:{opacity:1,y:0},exit:{opacity:0,y:-24}},_a={ease:[.26,.08,.25,1],duration:.3};function Oa({id:t,activeTabId:n$1,tabList:e$1,title:a,icon:o$1,description:i$1,variant:r,classNames:s,slots:c$1,columns:l$1,filters:d$1,defaultFilters:u,total:E,pagination:C,defaultPagination:p$1,loading:S,syncing:F,exporting:P,disabled:w,animated:B=true,style:K,toolbarItems:_,onTabChange:U,onChange:j$1,onFiltersChange:ut,onToolbarAction:Z,...f$1}){let O=b$1(),H=Y(R=>R.setActiveTab),J=Y(R=>R.activeTabId),{tableSize:y,columnVisibility:et}=Tt();D.useEffect(()=>{t&&t!==J&&H(t);},[t,J,H]);let W=D.useMemo(()=>l$1.filter(R=>R.hidden!==true),[l$1]),at=D.useMemo(()=>Ae(W),[W]),q=D.useMemo(()=>Ie(l$1),[l$1]),[M,pt]=e({filters:d$1,defaultFilters:u,onFiltersChange:ut}),ot=D.useMemo(()=>at.filter(R=>et[ft(R)]!==false),[at,et]),V=D.useRef({pagination:{},filters:{},sorter:{},extra:{action:"paginate",currentDataSource:[]}}),[mt,b]=D.useState(()=>({current:C?.current??p$1?.current??1,pageSize:C?.pageSize??p$1?.pageSize??10})),x=D.useCallback(R=>O("pagination_total").replace("{total}",String(R)),[O]),N=D.useCallback((R,St,rt,Ve)=>{let{pagination:Le,filters:Ke,sorter:Ue,extra:He}=V.current={...V.current,filters:St,sorter:rt,extra:Ve};j$1?.(Le,Ke,Ue,He);},[j$1]),I=D.useCallback((R,St)=>{let rt={current:R,pageSize:St};V.current={...V.current,pagination:rt},b(rt),j$1?.(rt,V.current.filters,V.current.sorter,V.current.extra);},[j$1]),G=D.useMemo(()=>({disabled:S||w||F,size:y==="large"?"middle":y,...p$1,showTotal:x,onChange:I,onShowSizeChange:I,...C,...mt,total:E}),[S,F,w,y,x,C,I,p$1,mt,E]),Q=D.useMemo(()=>({...Fa,header:{cell:f$1.bordered?"p-12":"px-12 py-10 border-t border-stroke-antd first:border-l last:border-r"}}),[f$1.bordered]),nt=e$1&&Array.isArray(e$1),_e=Math.min(G.pageSize??G.defaultPageSize??10,15),Oe=!!(S&&ot.some(R=>R.skeleton)),Ee=q.length!==0,kt=M&&M.length!==0,Bt=D.useRef(null),_t=ze(Bt,`${M?.length}-${n$1??t}`,f$1.scroll),Ot=Oe?jsx(Ce,{id:`${t}-skeleton`,columns:ot,size:y,count:_e,classNames:Q,scroll:_t}):jsx(Table,{id:`${t}-data-table`,columns:ot,classNames:Q,pagination:false,size:y,loading:S,showSorterTooltip:false,onChange:N,...f$1,scroll:_t}),Me=r==="accent",Et=jsx(c,{columns:q,filters:M,actions:pt,"data-id":"data-table-active-filters",className:"flex flex-wrap gap-6 px-12 pt-16",disabled:F||S,enableAutoClose:true});return jsxs(g,{ref:Bt,className:f("relative h-full max-h-[calc(100vh-80px)] overflow-hidden rounded-2xl",s?.root),style:K,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",Me&&"pt-10",nt&&"border-b-0",s?.cardHeader),children:[jsxs(l,{className:f("flex items-center gap-12",s?.cardHeading),children:[o$1&&jsx(o,{className:f("size-34 border border-stone-200 bg-stone-100 text-text-sub",!!(a&&i$1)&&"size-44 [&_svg]:size-24",s?.cardIcon),children:o$1}),a&&jsxs("div",{className:f(i$1&&"flex flex-col gap-4"),children:[jsx(n,{children:a}),i$1&&jsx(p,{children:i$1})]})]}),jsx(m,{className:s?.cardToolbar,children:jsx(we,{onAction:Z,items:_??Rt,loading:S,syncing:F,disabled:w,exporting:P,filter:Ee&&jsx(d,{columns:q,filters:M,actions:pt,align:"end",enableAutoBack:true},`${t}-filter`),columns:W})})]}),c$1?.summary&&jsx(j,{"data-id":"data-table-card-summary",className:f("grow-0 p-16",s?.cardSummary),children:c$1?.summary}),nt&&jsx(j,{"data-id":"data-table-card-tabs",className:"grow-0 p-0",children:jsx(De,{value:n$1,options:e$1,onValueChange:U})}),jsx(AnimatePresence,{initial:false,children:kt&&jsx(m$1.div,{"data-id":"data-table-card-filter-values",variants:ka,initial:"initial",animate:"animate",exit:"exit",children:jsx(j,{className:"p-0",children:Et})},n$1)}),jsx(i,{"data-id":"data-table-card-content",className:f("relative grow overflow-hidden px-12 py-16 pb-63",F&&"pointer-events-none",s?.cardContent),children:B?jsx(AnimatePresence,{mode:"popLayout",initial:false,children:jsx(m$1.div,{variants:Ba,initial:"initial",animate:"animate",exit:"exit",transition:_a,children:Ot},n$1)}):jsxs(Fragment,{children:[kt&&jsx("div",{className:"mb-16",children:Et}),Ot]})}),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:Na,...G})}),c$1?.footer&&jsx(k,{"data-id":"data-table-card-footer",className:f("grow-0 p-16",s?.cardFooter),children:c$1?.footer})]})}var Ea=import.meta.env?.VITE_MOCK_API_SSR??false;function Ma({storageKey:t,alwaysShowingColumns:n,...e}){let{tableStateStorageKey:a,pagination:o}=b(),i=t??a??"APP_UI_TABLE_CONFIG";if(Ea)return jsx(Te,{initialTabId:e.activeTabId??e.id,storageKey:i,alwaysShowingColumns:n,children:jsx(Oa,{defaultPagination:o,...e})});let{title:r,port:s,host:c,url:l,method:d,...u}=Va(e);return jsx(Card,{title:r,children:jsx(Table,{id:e.id,...u})})}function Va(t){let n=t.columns.map(({render:e,port:a,host:o,method:i,...r})=>({...r}));return {...t,columns:n}}var wt={dateFormat:"YYYY-MM-DD",paginationKeys:{current:"current",pageSize:"pageSize"},sorterKeys:{field:"sortField",order:"sortOrder"},filtersKey:"filters",orderValues:{ascend:"asc",descend:"desc"},fieldMapping:{}};function It(t,n){return n[t]??t}function Ka(t){return t!==null&&typeof t=="object"&&"$d"in t&&typeof t.format=="function"}function At(t,n){return t==null?null:Ka(t)?t.format(n):typeof t=="string"||typeof t=="number"||typeof t=="boolean"?t:String(t)}function Ua(t,n={}){let e={...wt,...n},{pagination:a,filters:o,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 s=Array.isArray(i)?i[0]:i;s?.field&&s?.order&&(r[e.sorterKeys.field]=String(s.field),r[e.sorterKeys.order]=e.orderValues[s.order]??s.order);let c={};for(let l of o){let d=It(l.columnId,e.fieldMapping);c[d]=l.values.map(u=>At(u,e.dateFormat));}return Object.keys(c).length>0&&(r[e.filtersKey]=c),r}function dt(t,n={}){let e={...wt,...n},{pagination:a,filters:o,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 s=Array.isArray(i)?i[0]:i;s?.field&&s?.order&&(r[e.sorterKeys.field]=String(s.field),r[e.sorterKeys.order]=e.orderValues[s.order]??s.order);for(let c of o){let l=It(c.columnId,e.fieldMapping),d=c.values.map(u=>At(u,e.dateFormat));r[l]=d.length===1?d[0]:d;}return r}function Be(t,n={}){let e={...wt,...n},{pagination:a,filters:o,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 s=Array.isArray(i)?i[0]:i;s?.field&&s?.order&&(r.set(e.sorterKeys.field,String(s.field)),r.set(e.sorterKeys.order,e.orderValues[s.order]??s.order));for(let c of o){let l=It(c.columnId,e.fieldMapping),d=c.values.map(u=>At(u,e.dateFormat));r.set(l,d.join(","));}return r.toString()}function Ha(t,n={}){let e=Be(t,n);return new URLSearchParams(e)}var zt=[],Ft={current:1,pageSize:10},Ga={};function $a(){return {filters:zt,pagination:Ft,sorter:{},extra:{action:"paginate",currentDataSource:[]}}}function Ya(t){let n=new Map,e=$a();for(let a of t)n.set(a.value,{filters:a.defaultFilters??a.filters??e.filters,pagination:a.defaultPagination??a.pagination??e.pagination,sorter:a.defaultSorter??e.sorter,extra:e.extra});return n}function Nt({fireOnMount:t=true,active:n,defaultActive:e,tabList:a,onTabChange:o,onTableChange:i,onToolbarAction:r}){let[s,c]=D.useState(()=>e??a[0]?.value??""),l=n??s,[d,u]=D.useState(()=>Ya(a)),E=D.useMemo(()=>a.find(b=>b.value===l)??a[0],[l,a]),{id:C,fireOnMount:p=t,loading:S,exporting:F,disabled:P,serializeOptions:w=Ga,serializeFn:B=dt,defaultFilters:K,defaultPagination:_,defaultSorter:U,filters:j,pagination:ut,onChange:Z,onToolbarAction:f,value:O,label:H,...J}=E;D.useEffect(()=>{d.has(l)||u(b=>{if(b.has(l))return b;let x=new Map(b);return x.set(l,{filters:K??zt,pagination:_??Ft,sorter:U??{},extra:{action:"paginate",currentDataSource:[]}}),x});},[l,d,K,_,U]);let y=D.useMemo(()=>d.get(l)??{filters:K??zt,pagination:_??Ft,sorter:U??{},extra:{action:"paginate",currentDataSource:[]}},[d,l,K,_,U]),et=D.useRef(i),W=D.useRef(r),at=D.useRef(Z),q=D.useRef(f);et.current=i,W.current=r,at.current=Z,q.current=f;let M=D.useRef(new Map);D.useEffect(()=>{M.current.has(l)||M.current.set(l,!p);},[l,p]);let pt=D.useCallback(b=>{c(b),o?.(b);},[o]),ot=D.useCallback(b=>{u(x=>{let N=new Map(x),I=N.get(l);if(!I)return x;let G=typeof b=="function"?b(I.filters):b;return N.set(l,{...I,filters:G,pagination:{...I.pagination,current:1}}),N});},[l]),V=D.useCallback((b,x,N,I)=>{u(G=>{let Q=new Map(G),nt=Q.get(l);return nt?(Q.set(l,{...nt,pagination:b,sorter:N,extra:I}),Q):G});},[l]),mt=D.useCallback(b=>{if(b.action==="data_export"){let x={pagination:y.pagination,filters:y.filters,sorter:y.sorter,extra:y.extra},N=B(x,w),I={action:b.action,payload:N};q.current?.(I),W.current?.(C,I);return}q.current?.(b),W.current?.(C,b);},[C,y,B,w]);return D.useEffect(()=>{if(M.current.get(l)){M.current.set(l,false);return}let x={pagination:y.pagination,filters:y.filters,sorter:y.sorter,extra:y.extra},N=B(x,w);at.current?.(N,x),et.current?.(C,N,x);},[l,C,y,B,w]),{activeTabId:l,tabList:a,onTabChange:pt,id:C,loading:S,exporting:F,disabled:P||F,filters:y.filters,pagination:y.pagination,onFiltersChange:ot,onChange:V,onToolbarAction:mt,...J}}var ja=[],Wa={},qa={action:"paginate",currentDataSource:[]},Xa={current:1,pageSize:10};function Za({id:t,fireOnMount:n=true,defaultFilters:e=ja,defaultPagination:a=Xa,defaultSorter:o=Wa,serializeOptions:i={},loading:r,exporting:s,disabled:c,serializeFn:l=dt,onChange:d,onToolbarAction:u}={}){let E=D.useRef(!n),C=D.useRef(d),p=D.useRef(u);C.current=d,p.current=u;let[S,F]=D.useState(e),[P,w]=D.useState(a),[B,K]=D.useState(o),[_,U]=D.useState(qa),j=D.useCallback(f=>{F(O=>typeof f=="function"?f(O):f),w(O=>({...O,current:1}));},[]),ut=D.useCallback((f,O,H,J)=>{w(f),K(H),U(J);},[]),Z=D.useCallback(f=>{if(f.action==="data_export"){let H=l({pagination:P,filters:S,sorter:B,extra:_},i);p.current?.({action:f.action,payload:H});return}p.current?.(f);},[S,P,B,_,l,i]);return D.useEffect(()=>{if(E.current){E.current=false;return}let f={pagination:P,filters:S,sorter:B,extra:_},O=l(f,i);C.current?.(O,f);},[P,S,B,_,l,i]),{id:t,loading:r,exporting:s,disabled:c||s,filters:S,pagination:P,onFiltersChange:j,onChange:ut,onToolbarAction:Z}}var Ja=[];function Qa(t={}){let{id:n="default",onChange:e,onToolbarAction:a,...o}=t,i=D.useRef(e),r=D.useRef(a);i.current=e,r.current=a;let s=D.useCallback((F,P,w)=>{i.current?.(P,w);},[]),c=D.useCallback((F,P)=>{r.current?.(P);},[]),l=D.useMemo(()=>[{id:n,value:n,label:"",columns:Ja,total:o.total,defaultFilters:o.defaultFilters,defaultPagination:o.defaultPagination,defaultSorter:o.defaultSorter,serializeOptions:o.serializeOptions,serializeFn:o.serializeFn,loading:o.loading,exporting:o.exporting,disabled:o.disabled}],[n,o.total,o.defaultFilters,o.defaultPagination,o.defaultSorter,o.serializeOptions,o.serializeFn,o.loading,o.exporting,o.disabled]),d=Nt({fireOnMount:t.fireOnMount,tabList:l,onTableChange:s,onToolbarAction:c}),{activeTabId:u,tabList:E,columns:C,onTabChange:p,...S}=d;return S}
2
+ export{Rt as DEFAULT_TOOLBAR_ITEMS,Ma as DataTable,Ua as serializeForPost,dt as serializeForPostFlat,Be as serializeForURL,Ha as serializeToURLSearchParams,Za as useDataTableState,Qa as useDataTableStateAdapter,Nt 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:a})=>{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:a})})})};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,a=true){let r,i=(...m)=>{r?(clearTimeout(r),r=void 0):o&&e(...m),r=self.setTimeout(()=>{a&&e(...m),r=void 0;},t);};return i.cancel=()=>{r&&(clearTimeout(r),r=void 0);},i}function Se(e,t,o=true){let a,r,i,m=(...f)=>{r=true,i=f,a||(o&&(r=false,e(...i)),a=self.setInterval(()=>{if(!r){self.clearInterval(a),a=void 0;return}r=false,e(...i);},t));};return m.cancel=()=>{a&&(self.clearInterval(a),a=void 0),r=false;},m}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:a="medium",...r}){return jsx($.Provider,{value:{variant:t||"default",size:a||"medium"},children:jsx(Tabs.List,{"data-slot":"tabs-list",className:f(ue({variant:t,shape:o,size:a}),e),...r})})}function ge({className:e,...t}){let{variant:o,size:a}=z.useContext($);return jsx(Tabs.Trigger,{"data-slot":"tabs-trigger",className:f(me({variant:o,size:a}),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,...a})=>jsxs(DropdownMenu.SubTrigger,{className:s.trigger({inset:t,className:e}),...a,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 F=({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})});F.displayName=DropdownMenu.Content.displayName;var V=({className:e,inset:t,destructive:o,...a})=>jsx(DropdownMenu.Item,{className:s.item({inset:t,destructive:o,className:e}),...a});V.displayName=DropdownMenu.Item.displayName;var L=({className:e,children:t,checked:o,...a})=>jsxs(DropdownMenu.CheckboxItem,{className:s.checkbox({className:e}),checked:o,...a,children:[jsx(DropdownMenu.ItemIndicator,{className:s.check(),asChild:true,children:jsx(Check,{})}),t]});L.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:a,children:r,items:i,disabled:m,className:f$1,asChild:g=true,renderItem:N,onOpenChange:I,onAction:b,...C})=>{let l=N??j;return jsxs(K,{open:e,defaultOpen:t,modal:o,onOpenChange:I,children:[jsx(q,{disabled:m,asChild:g,children:r}),jsxs(F,{className:f(f$1,"origin-(--radix-dropdown-menu-content-transform-origin)"),...C,children:[a&&jsxs(Fragment,{children:[jsx(h,{children:a}),jsx(x,{})]}),Array.isArray(i)&&i.map((y,w)=>l(y,w,b))]})]})};Z.displayName="DropdownMenu";function j(e,t,o){let{key:a,groupType:r,label:i,shortcut:m,icon:f,inset:g,onValueChange:N,...I}=e,b=a??t,C=Array.isArray(e.items)?e.items:void 0;return e.separator?jsx(x,{},a||`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))]},b):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(L,{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))]},b):C?jsxs(J,{children:[jsxs(S,{inset:g,disabled:e.disabled,children:[f&&jsx(D,{as:f}),i]}),jsx(Y,{children:jsx(k,{children:C.map((l,y)=>j(l,`${b}-${y}`,o))})})]},b):jsxs(V,{inset:g,onClick:l=>o?.(e,l),...I,children:[f&&jsx(D,{as:f}),i,m&&jsx(O,{children:m})]},b)}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};