From 3a2273431ac1ac0fc9bc50287310b5abc24b68e0 Mon Sep 17 00:00:00 2001 From: Toby Martin Date: Sat, 8 Aug 2026 23:54:24 +0000 Subject: [PATCH 01/31] feat: add grouped column headers --- CHANGELOG.md | 17 +++ README.md | 51 +++++++- api-snapshots/public-api.md | 32 +++-- dist/adapter-virtual.d.ts | 4 +- dist/adapter-virtual.js | 2 +- dist/adapter.d.ts | 4 +- dist/adapter.js | 2 +- dist/advanced.d.ts | 4 +- dist/advanced.js | 2 +- dist/chunk-3CYYXB7K.js | 2 - dist/chunk-3CYYXB7K.js.map | 1 - dist/chunk-54H6DRO6.js | 2 + dist/chunk-54H6DRO6.js.map | 1 + dist/{chunk-2V6RVOWX.js => chunk-7EXRF7VC.js} | 4 +- ...-2V6RVOWX.js.map => chunk-7EXRF7VC.js.map} | 2 +- dist/chunk-7NEQYX7P.js.map | 1 - dist/{chunk-GTOBHZ7L.js => chunk-A2VV3NIL.js} | 4 +- dist/chunk-A2VV3NIL.js.map | 1 + dist/{chunk-7NEQYX7P.js => chunk-BTA3VDTU.js} | 4 +- dist/chunk-BTA3VDTU.js.map | 1 + dist/chunk-GTOBHZ7L.js.map | 1 - dist/chunk-HOUWU4KF.js | 3 - dist/chunk-HOUWU4KF.js.map | 1 - dist/{chunk-Y5JNRFE4.js => chunk-JYNJ2FDX.js} | 4 +- ...-Y5JNRFE4.js.map => chunk-JYNJ2FDX.js.map} | 2 +- dist/{chunk-ACKI7LST.js => chunk-M77BQPKU.js} | 4 +- ...-ACKI7LST.js.map => chunk-M77BQPKU.js.map} | 2 +- dist/{chunk-S7PROCUM.js => chunk-NC2TEQVN.js} | 4 +- dist/chunk-NC2TEQVN.js.map | 1 + dist/{chunk-ZF4EP4WP.js => chunk-PFB5LOU7.js} | 4 +- dist/chunk-PFB5LOU7.js.map | 1 + dist/chunk-RJOEF7NA.js | 2 - dist/chunk-S7PROCUM.js.map | 1 - dist/{chunk-EAV5MZCW.js => chunk-U5TIDLB3.js} | 4 +- ...-EAV5MZCW.js.map => chunk-U5TIDLB3.js.map} | 2 +- dist/chunk-Y2VSRDR3.js | 2 + ...-RJOEF7NA.js.map => chunk-Y2VSRDR3.js.map} | 2 +- dist/chunk-ZF4EP4WP.js.map | 1 - dist/chunk-ZGXFBFNQ.js | 3 + dist/chunk-ZGXFBFNQ.js.map | 1 + .../data-table-virtual-card-panel-HHZCRLEB.js | 2 + ...-table-virtual-card-panel-HHZCRLEB.js.map} | 2 +- .../data-table-virtual-card-panel-RWD765II.js | 2 - ...data-table-virtual-table-panel-7K3LOTBT.js | 2 + ...table-virtual-table-panel-7K3LOTBT.js.map} | 2 +- ...data-table-virtual-table-panel-ASNINA6M.js | 2 - dist/heroui-virtual.d.ts | 2 +- dist/heroui-virtual.js | 2 +- dist/heroui.d.ts | 2 +- dist/heroui.js | 2 +- dist/index.d.ts | 2 +- dist/index.js | 2 +- dist/thegridcn-virtual.d.ts | 2 +- dist/thegridcn-virtual.js | 2 +- dist/thegridcn.d.ts | 2 +- dist/thegridcn.js | 2 +- dist/types.d.ts | 8 +- ...kit-DPJDIPrF.d.ts => ui-kit-B3pF-Pxw.d.ts} | 1 + dist/virtual.d.ts | 2 +- dist/virtual.js | 2 +- docs/API.md | 40 ++++++ docs/Roadmap.md | 4 +- package.json | 2 +- src/adapters/heroui/index.tsx | 1 + src/adapters/shadcn/index.tsx | 1 + src/adapters/thegridcn/index.tsx | 1 + .../data-table/create-data-table.test.tsx | 119 +++++++++++++++++- src/core/data-table/create-data-table.tsx | 8 +- .../data-table/data-table-header-cell.tsx | 65 +++++++++- .../data-table/data-table-table-panel.tsx | 41 +++++- src/core/data-table/data-table-utils.ts | 27 +++- src/core/data-table/use-column-layout.ts | 5 +- .../data-table/use-data-table-instance.ts | 7 +- src/core/data-table/use-data-table-state.ts | 18 +-- .../use-data-table-toolbar-features.ts | 5 +- src/core/data-table/use-row-editing.tsx | 20 +-- src/core/types.ts | 10 ++ src/core/ui-kit.ts | 1 + 78 files changed, 490 insertions(+), 116 deletions(-) delete mode 100644 dist/chunk-3CYYXB7K.js delete mode 100644 dist/chunk-3CYYXB7K.js.map create mode 100644 dist/chunk-54H6DRO6.js create mode 100644 dist/chunk-54H6DRO6.js.map rename dist/{chunk-2V6RVOWX.js => chunk-7EXRF7VC.js} (99%) rename dist/{chunk-2V6RVOWX.js.map => chunk-7EXRF7VC.js.map} (99%) delete mode 100644 dist/chunk-7NEQYX7P.js.map rename dist/{chunk-GTOBHZ7L.js => chunk-A2VV3NIL.js} (67%) create mode 100644 dist/chunk-A2VV3NIL.js.map rename dist/{chunk-7NEQYX7P.js => chunk-BTA3VDTU.js} (63%) create mode 100644 dist/chunk-BTA3VDTU.js.map delete mode 100644 dist/chunk-GTOBHZ7L.js.map delete mode 100644 dist/chunk-HOUWU4KF.js delete mode 100644 dist/chunk-HOUWU4KF.js.map rename dist/{chunk-Y5JNRFE4.js => chunk-JYNJ2FDX.js} (74%) rename dist/{chunk-Y5JNRFE4.js.map => chunk-JYNJ2FDX.js.map} (98%) rename dist/{chunk-ACKI7LST.js => chunk-M77BQPKU.js} (89%) rename dist/{chunk-ACKI7LST.js.map => chunk-M77BQPKU.js.map} (98%) rename dist/{chunk-S7PROCUM.js => chunk-NC2TEQVN.js} (71%) create mode 100644 dist/chunk-NC2TEQVN.js.map rename dist/{chunk-ZF4EP4WP.js => chunk-PFB5LOU7.js} (70%) create mode 100644 dist/chunk-PFB5LOU7.js.map delete mode 100644 dist/chunk-RJOEF7NA.js delete mode 100644 dist/chunk-S7PROCUM.js.map rename dist/{chunk-EAV5MZCW.js => chunk-U5TIDLB3.js} (93%) rename dist/{chunk-EAV5MZCW.js.map => chunk-U5TIDLB3.js.map} (99%) create mode 100644 dist/chunk-Y2VSRDR3.js rename dist/{chunk-RJOEF7NA.js.map => chunk-Y2VSRDR3.js.map} (92%) delete mode 100644 dist/chunk-ZF4EP4WP.js.map create mode 100644 dist/chunk-ZGXFBFNQ.js create mode 100644 dist/chunk-ZGXFBFNQ.js.map create mode 100644 dist/data-table-virtual-card-panel-HHZCRLEB.js rename dist/{data-table-virtual-card-panel-RWD765II.js.map => data-table-virtual-card-panel-HHZCRLEB.js.map} (62%) delete mode 100644 dist/data-table-virtual-card-panel-RWD765II.js create mode 100644 dist/data-table-virtual-table-panel-7K3LOTBT.js rename dist/{data-table-virtual-table-panel-ASNINA6M.js.map => data-table-virtual-table-panel-7K3LOTBT.js.map} (62%) delete mode 100644 dist/data-table-virtual-table-panel-ASNINA6M.js rename dist/{ui-kit-DPJDIPrF.d.ts => ui-kit-B3pF-Pxw.d.ts} (99%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 40a2427..1473949 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,23 @@ No changes yet. +## 4.2.0 - 2026-08-08 + +### Features + +- Added first-class nested column groups with multi-row shared headings, + visible-leaf spans, nested custom renderers, group class/inline-style hooks, + proportional group resizing, and semantic `colgroup`/`col` header scopes. + +### Fixes + +- Made visibility controls, column filters, responsive hiding, ordering, + pinning, sizing, editing defaults, card-title detection, and custom-cell + handling resolve nested leaf definitions instead of assuming every + top-level definition is a data column. +- Prevented placeholder and group headings from being individually reordered, + while retaining leaf reordering and group splitting behavior. + ## 4.1.0 - 2026-07-29 ### Fixes diff --git a/README.md b/README.md index 6192210..770370e 100644 --- a/README.md +++ b/README.md @@ -28,10 +28,11 @@ Dedicated subpath exports are also available: The current 4.0 feature set includes client/manual filtering, sorting and pagination, unknown-total pagination, selection, detail panels, table/card -views, row/card virtualization, column sizing/order/pinning/visibility, -versioned persistence, named saved views, versioned URL state, CSV export, -inline row editing, density controls, loading/empty states, summary rows, -infinite loading, and host-owned drag/upload integrations. See +views, row/card virtualization, nested column groups, column +sizing/order/pinning/visibility, versioned persistence, named saved views, +versioned URL state, CSV export, inline row editing, density controls, +loading/empty states, summary rows, infinite loading, and host-owned +drag/upload integrations. See [`docs/API.md`](./docs/API.md) for the complete contract. ## Breaking Changes In 3.0.0 @@ -52,11 +53,11 @@ The previously planned API cleanup is deferred to a future 5.0 release. ## Installation ```bash -pnpm add github:Dastari/data-table-pro#v4.0.0 +pnpm add github:Dastari/data-table-pro#v4.2.0 ``` This package is installed from GitHub refs. It is not published to npm. -Release tags such as `v4.0.0` include committed `dist/` output, so consumers +Release tags such as `v4.2.0` include committed `dist/` output, so consumers do not need to allow package build scripts during install. Peer dependencies: @@ -280,6 +281,44 @@ export function PeopleTable({ rows }: { rows: Array }) { } ``` +### Grouped column headers + +Define a group with an `id`, a `header`, and nested `columns`. Groups can be +nested to any depth and use the same TanStack-compatible definition shape as +leaf columns: + +```tsx +import type { + DataTableColumnDef, + DataTableColumnGroupDef, +} from "data-table-pro"; + +const contactGroup: DataTableColumnGroupDef = { + id: "contact", + header: "Contact", + meta: { + align: "center", + headerClassName: "bg-muted/50 font-semibold", + }, + columns: [ + { accessorKey: "name", header: "Name" }, + { accessorKey: "email", header: "Email" }, + ], +}; + +const columns: Array> = [contactGroup]; +``` + +The table creates one header row per nesting level and gives every group +header the span of its visible leaf columns. `header` may be a string or a +TanStack header render function. Use `meta.headerClassName`, +`meta.headerStyle`, and `meta.align` for group styling. Visibility, filters, +ordering, pinning, sizing, editing, responsive hiding, and CSV export continue +to operate on leaf columns. Drag/keyboard reordering applies to leaves; moving +a leaf away from its siblings visually splits the group, matching the usual +grid behavior. A group resize handle resizes its visible descendants +proportionally. + ### Controlled toolbar query ```tsx diff --git a/api-snapshots/public-api.md b/api-snapshots/public-api.md index 2938d23..64df638 100644 --- a/api-snapshots/public-api.md +++ b/api-snapshots/public-api.md @@ -64,7 +64,7 @@ This file is generated by `pnpm api:update`. Review changes to it as public API ```ts import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; @@ -77,7 +77,7 @@ export { DataTable, DataTableProps }; ```ts import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; @@ -90,7 +90,7 @@ export { DataTable, DataTableProps }; ```ts import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; @@ -103,7 +103,7 @@ export { DataTable, DataTableProps }; ```ts import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; @@ -116,7 +116,7 @@ export { DataTable, DataTableProps }; ```ts import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; @@ -129,7 +129,7 @@ export { DataTable, DataTableProps }; ```ts import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; @@ -218,8 +218,8 @@ import * as React from 'react'; import * as _tanstack_react_table from '@tanstack/react-table'; import { Row, ColumnSizingState, Column, Table, Cell, PaginationState, SortingState, Header, Updater, ColumnDef, ColumnFiltersState, ColumnOrderState, ColumnPinningState, ExpandedState, VisibilityState, FilterFnOption, OnChangeFn } from '@tanstack/react-table'; import { DataTableProps, DataTableLabels, DataTableColumnDef, DataTableDensity, DataTableRowLoadingState, DataTableEditableRowsConfig, DataTableRowAction } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDragAndDropConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; -import { D as DataTableUiKit, a as DataTableUiClassNames } from './ui-kit-DPJDIPrF.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDragAndDropConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +import { D as DataTableUiKit, a as DataTableUiClassNames } from './ui-kit-B3pF-Pxw.js'; type DataTableCardPanelProps = { cardClassName: string | undefined; @@ -675,8 +675,8 @@ export { DataTableBodyRow, DataTableCardPanel, DataTableColumnDef, type DataTabl ```ts import * as React from 'react'; import { DataTableProps } from './types.js'; -import { D as DataTableUiKit } from './ui-kit-DPJDIPrF.js'; -export { a as DataTableUiClassNames } from './ui-kit-DPJDIPrF.js'; +import { D as DataTableUiKit } from './ui-kit-B3pF-Pxw.js'; +export { a as DataTableUiClassNames } from './ui-kit-B3pF-Pxw.js'; import '@tanstack/react-table'; declare function createDataTable(ui: DataTableUiKit): ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; @@ -691,8 +691,8 @@ export { DataTableUiKit, createDataTable, primitiveUiKit }; ```ts import * as React from 'react'; import { DataTableProps } from './types.js'; -import { D as DataTableUiKit } from './ui-kit-DPJDIPrF.js'; -export { a as DataTableUiClassNames } from './ui-kit-DPJDIPrF.js'; +import { D as DataTableUiKit } from './ui-kit-B3pF-Pxw.js'; +export { a as DataTableUiClassNames } from './ui-kit-B3pF-Pxw.js'; import '@tanstack/react-table'; declare function createVirtualDataTable(ui: DataTableUiKit): ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; @@ -758,6 +758,7 @@ type DataTableColumnMeta = { value: TValue | undefined; }) => DataTableCellOverflow | undefined); headerClassName?: string; + headerStyle?: React.CSSProperties; cellClassName?: string | ((args: { row: TData; value: TValue | undefined; @@ -771,6 +772,11 @@ type DataTableColumnMeta = { }; type DataTableColumnDef = ColumnDef & { meta?: DataTableColumnMeta; + columns?: Array>; +}; +type DataTableColumnGroupDef = DataTableColumnDef & { + id: string; + columns: Array>; }; type DataTableToolbarAction = { key: string; @@ -1193,5 +1199,5 @@ declare function hideOnClassName(hideOn: DataTableContainerBreakpoint | Array | undefined, containerWidth: number): boolean; declare function rowSelectionStateFromRows(rows: Array>): TData[]; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, type DataTableActionErrorContext, type DataTableActionErrorSource, type DataTableAlign, type DataTableApi, type DataTableCardRendererProps, type DataTableCardSizing, type DataTableCardVirtualizationConfig, type DataTableCellEditRenderProps, type DataTableCellOverflow, type DataTableColumnDef, type DataTableColumnFilterConfig, type DataTableColumnFilterOption, type DataTableColumnFilterType, type DataTableColumnFixed, type DataTableColumnMeta, type DataTableColumnPrefs, type DataTableColumnType, type DataTableColumnVisibilityOption, type DataTableContainerBreakpoint, type DataTableCsvExportOptions, type DataTableCsvExportScope, type DataTableDensity, type DataTableDragAndDropConfig, type DataTableEditableRowsConfig, type DataTableEmptyStateContext, type DataTableExpandedRowProps, type DataTableFileUploadConfig, type DataTableHiddenRowsConfig, type DataTableInfiniteScroll, type DataTableInitialState, type DataTableLabels, type DataTableLoadingState, type DataTablePersistenceConfig, type DataTablePersistenceOperation, type DataTablePersistencePayload, type DataTablePersistenceSlice, type DataTablePersistenceStorage, type DataTableProps, type DataTableResetOptions, type DataTableRowAction, type DataTableRowLoadingState, type DataTableSavedView, type DataTableSavedViewSlice, type DataTableSavedViewsChangeOperation, type DataTableSavedViewsConfig, type DataTableSavedViewsPayload, type DataTableSelectionAction, type DataTableState, type DataTableSummaryRow, type DataTableToolbarAction, type DataTableToolbarVisibility, type DataTableViewMode, type DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows }; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, type DataTableActionErrorContext, type DataTableActionErrorSource, type DataTableAlign, type DataTableApi, type DataTableCardRendererProps, type DataTableCardSizing, type DataTableCardVirtualizationConfig, type DataTableCellEditRenderProps, type DataTableCellOverflow, type DataTableColumnDef, type DataTableColumnFilterConfig, type DataTableColumnFilterOption, type DataTableColumnFilterType, type DataTableColumnFixed, type DataTableColumnGroupDef, type DataTableColumnMeta, type DataTableColumnPrefs, type DataTableColumnType, type DataTableColumnVisibilityOption, type DataTableContainerBreakpoint, type DataTableCsvExportOptions, type DataTableCsvExportScope, type DataTableDensity, type DataTableDragAndDropConfig, type DataTableEditableRowsConfig, type DataTableEmptyStateContext, type DataTableExpandedRowProps, type DataTableFileUploadConfig, type DataTableHiddenRowsConfig, type DataTableInfiniteScroll, type DataTableInitialState, type DataTableLabels, type DataTableLoadingState, type DataTablePersistenceConfig, type DataTablePersistenceOperation, type DataTablePersistencePayload, type DataTablePersistenceSlice, type DataTablePersistenceStorage, type DataTableProps, type DataTableResetOptions, type DataTableRowAction, type DataTableRowLoadingState, type DataTableSavedView, type DataTableSavedViewSlice, type DataTableSavedViewsChangeOperation, type DataTableSavedViewsConfig, type DataTableSavedViewsPayload, type DataTableSelectionAction, type DataTableState, type DataTableSummaryRow, type DataTableToolbarAction, type DataTableToolbarVisibility, type DataTableViewMode, type DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows }; ``` diff --git a/dist/adapter-virtual.d.ts b/dist/adapter-virtual.d.ts index 62d0fc7..9ffd4dc 100644 --- a/dist/adapter-virtual.d.ts +++ b/dist/adapter-virtual.d.ts @@ -1,7 +1,7 @@ import * as React from 'react'; import { DataTableProps } from './types.js'; -import { D as DataTableUiKit } from './ui-kit-DPJDIPrF.js'; -export { a as DataTableUiClassNames } from './ui-kit-DPJDIPrF.js'; +import { D as DataTableUiKit } from './ui-kit-B3pF-Pxw.js'; +export { a as DataTableUiClassNames } from './ui-kit-B3pF-Pxw.js'; import '@tanstack/react-table'; declare function createVirtualDataTable(ui: DataTableUiKit): ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; diff --git a/dist/adapter-virtual.js b/dist/adapter-virtual.js index 44aef3b..674371e 100644 --- a/dist/adapter-virtual.js +++ b/dist/adapter-virtual.js @@ -1,2 +1,2 @@ -export{a as createVirtualDataTable}from'./chunk-RJOEF7NA.js';import'./chunk-EAV5MZCW.js';import'./chunk-Y5JNRFE4.js';import'./chunk-3CYYXB7K.js';import'./chunk-ACKI7LST.js';import'./chunk-HOUWU4KF.js';import'./chunk-ZF4EP4WP.js';//# sourceMappingURL=adapter-virtual.js.map +export{a as createVirtualDataTable}from'./chunk-Y2VSRDR3.js';import'./chunk-U5TIDLB3.js';import'./chunk-JYNJ2FDX.js';import'./chunk-54H6DRO6.js';import'./chunk-M77BQPKU.js';import'./chunk-ZGXFBFNQ.js';import'./chunk-PFB5LOU7.js';//# sourceMappingURL=adapter-virtual.js.map //# sourceMappingURL=adapter-virtual.js.map \ No newline at end of file diff --git a/dist/adapter.d.ts b/dist/adapter.d.ts index ac4f328..cb25442 100644 --- a/dist/adapter.d.ts +++ b/dist/adapter.d.ts @@ -1,7 +1,7 @@ import * as React from 'react'; import { DataTableProps } from './types.js'; -import { D as DataTableUiKit } from './ui-kit-DPJDIPrF.js'; -export { a as DataTableUiClassNames } from './ui-kit-DPJDIPrF.js'; +import { D as DataTableUiKit } from './ui-kit-B3pF-Pxw.js'; +export { a as DataTableUiClassNames } from './ui-kit-B3pF-Pxw.js'; import '@tanstack/react-table'; declare function createDataTable(ui: DataTableUiKit): ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; diff --git a/dist/adapter.js b/dist/adapter.js index 77cfd48..c7ec169 100644 --- a/dist/adapter.js +++ b/dist/adapter.js @@ -1,2 +1,2 @@ -export{X as primitiveUiKit}from'./chunk-2V6RVOWX.js';export{i as createDataTable}from'./chunk-3CYYXB7K.js';import'./chunk-ACKI7LST.js';import'./chunk-HOUWU4KF.js';import'./chunk-ZF4EP4WP.js';//# sourceMappingURL=adapter.js.map +export{X as primitiveUiKit}from'./chunk-7EXRF7VC.js';export{i as createDataTable}from'./chunk-54H6DRO6.js';import'./chunk-M77BQPKU.js';import'./chunk-ZGXFBFNQ.js';import'./chunk-PFB5LOU7.js';//# sourceMappingURL=adapter.js.map //# sourceMappingURL=adapter.js.map \ No newline at end of file diff --git a/dist/advanced.d.ts b/dist/advanced.d.ts index ea9f714..9aa9389 100644 --- a/dist/advanced.d.ts +++ b/dist/advanced.d.ts @@ -3,8 +3,8 @@ import * as React from 'react'; import * as _tanstack_react_table from '@tanstack/react-table'; import { Row, ColumnSizingState, Column, Table, Cell, PaginationState, SortingState, Header, Updater, ColumnDef, ColumnFiltersState, ColumnOrderState, ColumnPinningState, ExpandedState, VisibilityState, FilterFnOption, OnChangeFn } from '@tanstack/react-table'; import { DataTableProps, DataTableLabels, DataTableColumnDef, DataTableDensity, DataTableRowLoadingState, DataTableEditableRowsConfig, DataTableRowAction } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDragAndDropConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; -import { D as DataTableUiKit, a as DataTableUiClassNames } from './ui-kit-DPJDIPrF.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDragAndDropConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +import { D as DataTableUiKit, a as DataTableUiClassNames } from './ui-kit-B3pF-Pxw.js'; type DataTableCardPanelProps = { cardClassName: string | undefined; diff --git a/dist/advanced.js b/dist/advanced.js index e43522b..d919b33 100644 --- a/dist/advanced.js +++ b/dist/advanced.js @@ -1,2 +1,2 @@ -export{X as primitiveUiKit}from'./chunk-2V6RVOWX.js';export{a as DataTableCardPanel,b as DataTableFooterSection,c as DataTableToolbarSection,i as createDataTable,h as useColumnLayout,f as useControllableState,d as useDataTableColumns,e as useDataTableInstance,g as useDataTableState}from'./chunk-3CYYXB7K.js';import'./chunk-ACKI7LST.js';export{N as DataTableBodyRow,O as DataTableHeaderCell,P as DataTableTablePanel,M as useRowEditing}from'./chunk-HOUWU4KF.js';import'./chunk-ZF4EP4WP.js';import*as e from'react';function R(a){let t=e.useRef(a);return e.useLayoutEffect(()=>{t.current=a;}),e.useCallback((...o)=>t.current?.(...o),[])}export{R as useStableCallback};//# sourceMappingURL=advanced.js.map +export{X as primitiveUiKit}from'./chunk-7EXRF7VC.js';export{a as DataTableCardPanel,b as DataTableFooterSection,c as DataTableToolbarSection,i as createDataTable,h as useColumnLayout,f as useControllableState,d as useDataTableColumns,e as useDataTableInstance,g as useDataTableState}from'./chunk-54H6DRO6.js';import'./chunk-M77BQPKU.js';export{O as DataTableBodyRow,P as DataTableHeaderCell,Q as DataTableTablePanel,N as useRowEditing}from'./chunk-ZGXFBFNQ.js';import'./chunk-PFB5LOU7.js';import*as e from'react';function R(a){let t=e.useRef(a);return e.useLayoutEffect(()=>{t.current=a;}),e.useCallback((...o)=>t.current?.(...o),[])}export{R as useStableCallback};//# sourceMappingURL=advanced.js.map //# sourceMappingURL=advanced.js.map \ No newline at end of file diff --git a/dist/chunk-3CYYXB7K.js b/dist/chunk-3CYYXB7K.js deleted file mode 100644 index a669956..0000000 --- a/dist/chunk-3CYYXB7K.js +++ /dev/null @@ -1,2 +0,0 @@ -import {a as a$1,b}from'./chunk-ACKI7LST.js';import {w,u,c,z,F,J,C,K,E,v as v$1,x,y,H,I,M,D,P,o,t,j as j$1,l,r,a as a$2,q,p,G,L,A,B,k,i}from'./chunk-HOUWU4KF.js';import {a,j,c as c$1,e,f,d}from'./chunk-ZF4EP4WP.js';import*as v from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {useReactTable,getPaginationRowModel,getExpandedRowModel,getSortedRowModel,getFilteredRowModel,getCoreRowModel}from'@tanstack/react-table';import {flushSync}from'react-dom';function Et({cardClassName:e,cardGridClassName:a$1,cardSizing:n,cardRenderer:t,currentRowSelection:o,DataTableCardView:c,DataTableEmptyState:l,dragAndDrop:u,editableRows:g,editingRowId:f,emptyNode:P,enableRowSelection:x,flexGrow:S,getRowClassName:R,hasCardTitle:k,infiniteScroll:E,localSearchValue:O,onRowClick:T,renderedRows:b,renderExpandedRow:d,resolvedLabels:h,resolvedLoadingRowCount:m,rowActions:r=[],ScrollArea:C,sentinelRef:D,setCurrentRowSelection:z,setEditingRowId:N,shouldRenderInitialLoading:U,tableContainerClassName:F,uiClassNames:I}){let w=U||b.length>0,j=v.useRef(null),K=(ae,oe)=>jsx(c,{rows:ae,cardRenderer:t,cardGridClassName:a$1,cardClassName:e,cardSizing:n,rowActions:r,editableRows:g,renderExpandedRow:d,hasCardTitle:k,rowSelection:o,onRowSelectionChange:z,enableRowSelection:x,editingRowId:f,onEditingRowIdChange:N,getRowClassName:R,onRowClick:T,getRowDraggable:u?.getRowDraggable,onRowDragStart:u?.onRowDragStart,onRowDragEnd:u?.onRowDragEnd,isLoading:oe?.isLoading,loadingRowCount:oe?.loadingRowCount,labels:h});return jsx("div",{ref:j,"data-dtp-slot":"data-table-card-shell",className:a("box-border border-2 border-transparent transition-colors",S?"flex min-h-0 flex-1 flex-col":"h-full",u?.isDragging&&(I.dragActive??"rounded-md border-dashed")),children:jsx(C,{className:a(S?"min-h-0 flex-1":"h-full",I.cardScrollArea,F),children:jsxs("div",{"data-dtp-slot":"data-table-card-viewport",className:a("flex min-h-full min-w-0 flex-col",S&&"min-h-0 flex-1",I.cardViewport),children:[w?U?K([],{isLoading:true,loadingRowCount:m}):K(b):jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center p-4",children:P??jsx(l,{title:O?h.noMatchingRowsTitle:h.noRowsTitle,description:O?h.noMatchingRowsDescription:h.noRowsDescription})}),E?.enabled&&!U?jsx("div",{className:"shrink-0 px-4 pb-4",children:jsx("div",{ref:D,className:"h-4 w-full"})}):null]})})})}var ur=v.lazy(async()=>({default:(await import('./data-table-virtual-card-panel-RWD765II.js')).DataTableVirtualCardPanel}));function Wn(e){return (typeof e.virtualization=="object"?e.virtualization.card:void 0)?.enabled!==true?jsx(Et,{...e}):jsx(v.Suspense,{fallback:jsx(Et,{...e}),children:jsx(ur,{...e})})}function Jn({children:e,currentPagination:a,DataTableFooter:n,effectivePageCount:t,footerTotalRowCount:o,handleFooterPageIndexChange:c,handleFooterPageSizeChange:l,labels:u,pageCountKnown:g=true,rowsPerPageOptions:f,showFooter:P}){return !P&&!e?null:jsxs("div",{"data-dtp-slot":"data-table-footer",className:"shrink-0",children:[P?jsx(n,{pageIndex:a.pageIndex,pageCount:t,pageCountKnown:g,pageSize:a.pageSize,totalRowCount:o,rowsPerPageOptions:f,onPageIndexChange:c,onPageSizeChange:l,labels:u}):null,e]})}function Xn({allRows:e,columnFilters:a,columnVisibilityOptions:n,compactToolbar:t,customToolbar:o,DataTableToolbar:c,description:l,effectiveToolbarActions:u,enableColumnPinning:g,enableDensityToggle:f,enableViewToggle:P,hiddenRowsLabel:x,labels:S,onClearColumnFilters:R,onColumnFilterChange:k,onColumnPinningChange:E,onDensityChange:O,onShowHiddenRowsChange:T,onToolbarQueryValueChange:b,onViewModeChange:d,openFileDialog:h,selectedRows:m,selectionActions:r,showHiddenRows:C,table:D,title:z,toolbarQueryPlaceholder:N,toolbarQueryValue:U,toolbarVisibility:F,density:I,viewMode:w}){return jsx("div",{"data-dtp-slot":"data-table-toolbar",className:"shrink-0",children:jsx(c,{title:z,description:l,toolbarQueryValue:U,toolbarQueryPlaceholder:N,onToolbarQueryValueChange:b,customToolbar:o,compactToolbar:t,viewMode:w,onViewModeChange:d,enableViewToggle:P,toolbarActions:u,selectionActions:r,selectedRows:m,showHiddenRows:C,hiddenRowsLabel:x,onShowHiddenRowsChange:T,allRows:e,columnVisibilityOptions:n,onColumnVisibilityChange:(j,K)=>{D.getColumn(j)?.toggleVisibility(K);},enableColumnPinning:g,onColumnPinningChange:E,columnFilters:a,onColumnFilterChange:k,onClearColumnFilters:R,density:I,onDensityChange:O,enableDensityToggle:f,labels:S,toolbarVisibility:F,openFileDialog:h})})}var de={searchPlaceholder:"Search rows...",searchTable:"Search table",clearSearch:"Clear search",noRowsTitle:"No rows yet",noRowsDescription:"Create a record or refresh this view once data exists.",noMatchingRowsTitle:"No matching rows",noMatchingRowsDescription:"Try a different search term or clear filters.",tableOptions:"Show table options",columns:"Columns",filters:"Filters",clearFilters:"Clear filters",selectedRows:e=>`${e} record${e===1?"":"s"} selected`,showHiddenRows:e=>`Show ${e}`,recordsPerPage:"Records per page",totalRecords:e=>`Total records: ${e}`,pageStatus:(e,a)=>`Page ${e+1} of ${a}`,pageStatusUnknown:e=>`Page ${e+1}`,pagination:"Pagination",morePages:"More pages",firstPage:"First page",previousPage:"Previous page",nextPage:"Next page",lastPage:"Last page",selectAllVisibleRows:"Select all visible rows",selectRow:"Select row",selectCardRow:e=>`Select row ${e}`,switchToTableView:"Switch to table view",switchToCardView:"Switch to card view",tableView:"Table view",cardView:"Card view",allFilterOptions:"All",actions:"Actions",rowActions:"Row actions",editRow:"Edit row",saveEdit:"Save",cancelEdit:"Cancel editing",expandRow:"Expand row",collapseRow:"Collapse row",exportCsv:"Export CSV",density:"Density",compactDensity:"Compact",comfortableDensity:"Comfortable",spaciousDensity:"Spacious",pinLeft:"Pin left",pinRight:"Pin right",unpin:"Unpin"};function Yn(e){return {...de,...e}}function Zn({Button:e,Checkbox:a$1,DataTableRowActions:n,Tooltip:t,TooltipContent:o,TooltipTrigger:c$1,cancelEditing:l,columns:u$1,editableRows:g,editingRowId:f,enableRowSelection:P,getRowCanExpand:x,isSavingEdit:S,labels:R,lastSelectedRowIdRef:k,renderExpandedRow:E,rowActions:O,saveEdit:T,startEditingRow:b,tableRef:d}){let h=v.useCallback((m,r)=>{let C=d.current;if(!C||!k.current)return;let D=C.getRowModel().rows.filter(I=>!w(I.original)),z=D.findIndex(I=>I.id===k.current),N=D.findIndex(I=>I.id===m);if(z<0||N<0)return;let U=Math.min(z,N),F=Math.max(z,N);C.setRowSelection(I=>{let w={...I};for(let j of D.slice(U,F+1))r?w[j.id]=true:delete w[j.id];return w});},[k,d]);return v.useMemo(()=>{let m=[];return E&&m.push({id:"__expand__",enableResizing:false,enableSorting:false,enableHiding:false,size:u,minSize:u,maxSize:u,header:()=>jsx("span",{className:"sr-only",children:R.expandRow}),cell:({row:r})=>{if(!(x?.(r.original)??!!E))return null;let D=r.getIsExpanded();return jsx("div",{className:"flex items-center justify-center",children:jsx(e,{type:"button",variant:"ghost",size:"icon-sm","aria-label":D?R.collapseRow:R.expandRow,"aria-expanded":D,onClick:()=>r.toggleExpanded(),children:jsx(c,{className:a("transition-transform",D?"rotate-0":"-rotate-90")})})})}}),P&&m.push({id:"__select__",enableResizing:false,enableSorting:false,enableHiding:false,size:u,minSize:u,maxSize:u,header:({table:r})=>jsx("div",{className:"flex items-center justify-center",children:jsx(a$1,{className:"my-0.5",checked:r.getIsAllPageRowsSelected(),onCheckedChange:C=>{r.toggleAllPageRowsSelected(C===true);},"aria-label":R.selectAllVisibleRows??de.selectAllVisibleRows})}),cell:({row:r})=>jsx("div",{className:"flex items-center justify-center",children:jsx(a$1,{className:"my-0.5",checked:r.getIsSelected(),onClick:C=>{if(!C.shiftKey||!k.current){k.current=r.id;return}C.preventDefault(),C.stopPropagation(),h(r.id,!r.getIsSelected()),k.current=r.id;},onCheckedChange:C=>{k.current=r.id,r.toggleSelected(C===true);},"aria-label":R.selectRow??de.selectRow})})}),m.push(...u$1.map(r=>z(r))),(O.length||g)&&m.push({id:"__actions__",enableSorting:false,enableResizing:false,enableHiding:false,size:u,minSize:u,maxSize:u,header:()=>jsx("span",{className:"sr-only",children:R.actions}),cell:({row:r})=>{let C=r.id;return f===C?jsxs("div",{className:"flex w-full items-center justify-end gap-2",children:[jsx(e,{type:"button",size:"sm",disabled:S,onClick:()=>{T(r.original);},children:R.saveEdit}),jsxs(t,{children:[jsx(c$1,{asChild:true,children:jsxs(e,{type:"button",size:"icon-sm",variant:"ghost",onClick:l,children:[jsx(c,{className:"rotate-45"}),jsx("span",{className:"sr-only",children:R.cancelEdit})]})}),jsx(o,{children:R.cancelEdit})]})]}):jsx("div",{className:"flex w-full items-center justify-center",children:jsx(n,{row:r.original,rowActions:O,editableRows:g,isEditing:false,onStartEditing:()=>{b(r.original,r.id);},onCancelEditing:()=>{},labels:R})})}}),m},[e,a$1,n,t,o,c$1,l,u$1,g,f,P,x,S,R,k,E,O,T,h,b])}function eo({enabled:e,hasMore:a,isLoadingMore:n,onLoadMore:t,onError:o}){let c=v.useRef(null),l=v.useRef(false),u=v.useEffectEvent(t),g=v.useEffectEvent(f=>{o?.(f);});return v.useEffect(()=>{if(!e||!a||n)return;let f=c.current;if(!f)return;let P=new IntersectionObserver(x=>{if(x[0].isIntersecting&&!l.current){l.current=true;let R;try{R=u();}catch(k){l.current=false,g(k);return}Promise.resolve(R).catch(k=>{g(k);}).finally(()=>{l.current=false;});}},{rootMargin:"200px 0px 200px 0px"});return P.observe(f),()=>{P.disconnect();}},[e,a,n]),c}function to({enabled:e,maxPageIndex:a,onPageIndexChange:n,pageIndex:t,setLocalPageIndex:o}){v.useEffect(()=>{if(!e||t>=0&&t<=a)return;let c=Math.min(Math.max(t,0),a);o(c),n?.(c);},[e,a,n,t,o]);}function no({autoResetPageIndex:e,columnResizeMode:a,currentColumnFilters:n,currentColumnOrder:t,currentColumnPinning:o,currentColumnSizing:c,currentExpanded:l,currentPagination:u,currentRowSelection:g,currentSorting:f,defaultColumn:P,effectiveColumnVisibility:x,enableColumnResizing:S,enableRowSelection:R,getRowCanExpand:k,globalFilterFn:E,globalFilterValue:O,hasNextPage:T,handleColumnFiltersChange:b,handleColumnOrderChange:d,handleColumnPinningChange:h,handleColumnVisibilityChange:m,handleExpandedChange:r,infiniteScroll:C$1,manualFiltering:D,manualPagination:z,manualSorting:N,onActionError:U,onPageIndexChange:F$1,onPageSizeChange:I,pageCount:w,pageIndex:j,pageSize:K$1,renderExpandedRow:ae,setCurrentRowSelection:oe,setCurrentSorting:A,setLocalColumnSizing:G,setLocalPagination:W,shouldRenderInitialLoading:De,tableColumns:be,tableData:ge,tableGetRowId:Ae,tableRef:Le,totalRowCount:Se}){let J$1=v.useMemo(()=>be.map((y,V)=>F(y,V)),[be]),ve=v.useMemo(()=>{let y=J$1,V=y.filter(q=>!J(q)&&q!=="__spacer__"),me=new Set(V),Re=t.filter(q=>me.has(q)),X=V.filter(q=>!Re.includes(q));return [...y.filter(q=>q==="__expand__"||q==="__select__"),...Re,...X,...y.filter(q=>q==="__spacer__"),...y.filter(q=>q==="__actions__")]},[t,J$1]),we=v.useMemo(()=>{let y=new Set(J$1),V=new Set(J$1.filter(X=>!J(X)&&X!=="__spacer__")),me=(o.left??[]).filter(X=>V.has(X)),Re=(o.right??[]).filter(X=>V.has(X));return {left:[...["__expand__","__select__"].filter(X=>y.has(X)),...me],right:[...Re,...["__actions__"].filter(X=>y.has(X))]}},[o,J$1]),M=v.useMemo(()=>({sorting:f,pagination:u,rowSelection:g,columnVisibility:x,columnFilters:n,globalFilter:O,expanded:l,columnOrder:ve,columnPinning:we,columnSizing:c}),[n,c,l,u,g,f,x,ve,we,O]),ie=v.useCallback(y=>{let V=typeof y=="function"?y(u):y;(j===void 0||K$1===void 0)&&W(me=>({pageIndex:j===void 0?V.pageIndex:me.pageIndex,pageSize:K$1===void 0?V.pageSize:me.pageSize})),V.pageIndex!==u.pageIndex&&F$1?.(V.pageIndex),V.pageSize!==u.pageSize&&I?.(V.pageSize);},[u,F$1,I,j,K$1,W]),We=v.useCallback(y=>{G(y);},[G]),ue=useReactTable({data:ge,columns:be,getCoreRowModel:getCoreRowModel(),getFilteredRowModel:D?void 0:getFilteredRowModel(),getSortedRowModel:N?void 0:getSortedRowModel(),getExpandedRowModel:ae?getExpandedRowModel():void 0,getPaginationRowModel:z||C$1?.enabled?void 0:getPaginationRowModel(),enableRowSelection:R,enableMultiRowSelection:R,enableColumnResizing:S,columnResizeMode:a,getRowId:Ae,getRowCanExpand:ae?y=>k?.(y.original)??true:void 0,globalFilterFn:E??C,getColumnCanGlobalFilter:y=>y.columnDef.enableGlobalFilter!==false&&typeof y.accessorFn=="function",manualSorting:N,manualFiltering:D,manualPagination:z||!!C$1?.enabled,defaultColumn:P,autoResetPageIndex:e,state:M,onSortingChange:A,onPaginationChange:ie,onRowSelectionChange:oe,onColumnVisibilityChange:m,onColumnFiltersChange:b,onExpandedChange:r,onColumnOrderChange:d,onColumnPinningChange:h,onColumnSizingChange:We});Le.current=ue;let pe=ue.getVisibleLeafColumns(),oa=v.useCallback((y,V)=>{if(y===V)return;let me=ue.getAllLeafColumns().map(X=>X.id).filter(X=>!J(X)),Re=K(t.length?t:me,y,V);d(Re);},[t,d,ue]),ee=ue.getRowModel().rows,Oe=ee.map((y,V)=>({row:y,rowIndex:V})),he=z||!!C$1?.enabled,_e=he?void 0:ue.getFilteredRowModel().rows.length,Pe=Se??_e,He=!he||w!==void 0||Se!==void 0,Be=Pe,$e=De?1:w??(Pe!==void 0?Math.max(1,Math.ceil(Pe/u.pageSize)):he?u.pageIndex+(T?2:1):ue.getPageCount()),Ue=Math.max(0,$e-1),ye=v.useCallback(y=>{j===void 0&&W(V=>V.pageIndex===y?V:{...V,pageIndex:y});},[j,W]);to({enabled:!De&&!C$1?.enabled&&He,maxPageIndex:Ue,onPageIndexChange:F$1,pageIndex:u.pageIndex,setLocalPageIndex:ye});let Ke=v.useCallback(y=>{y!==u.pageIndex&&(F$1?.(y),j===void 0&&W(V=>V.pageIndex===y?V:{...V,pageIndex:y}));},[u.pageIndex,F$1,j,W]),ia=v.useCallback(y=>{u.pageIndex!==0&&F$1?.(0),y!==u.pageSize&&I?.(y),K$1===void 0&&W({pageIndex:0,pageSize:y});},[u.pageIndex,u.pageSize,F$1,I,K$1,W]),Je=eo({enabled:!!C$1?.enabled,hasMore:!!C$1?.hasMore,isLoadingMore:C$1?.isLoadingMore,onLoadMore:()=>C$1?.onLoadMore(),onError:y=>{U?.({error:y,source:"infiniteScroll"});}});return {effectivePageCount:$e,footerTotalRowCount:Be,handleFooterPageIndexChange:Ke,handleFooterPageSizeChange:ia,isPageCountKnown:He,renderedRows:ee,reorderColumn:oa,rowsToRender:Oe,sentinelRef:Je,table:ue,virtualPaddingBottom:0,virtualPaddingTop:0,visibleLeafColumns:pe}}function Ee({defaultValue:e,onChange:a,value:n}){let[t,o]=v.useState(e),c=n??t,l=v.useRef(c);v.useEffect(()=>{l.current=c;},[c]);let u=v.useCallback(g=>{let f=typeof g=="function"?g(l.current):g;l.current=f,a?.(f),n===void 0&&o(f);},[a,n]);return [c,u]}var wr="data-table-pro:column-prefs:",io=1,oo=["visibility","sizing","order","pinning","density"];function ro(e){let a=Vt(e);if(!a)return {};let n=Ft(a);if(!n)return {};let t=It(a.key),o;try{o=n.getItem(t);}catch(g){return a.onError?.({error:g,operation:"read"}),{}}if(!o)return {};let c;try{c=(a.deserialize??JSON.parse)(o);}catch(g){return a.onError?.({error:g,operation:"deserialize"}),{}}let l=a.version??io,u;if(hr(c))if(c.version===l)u=c.state;else if(a.migrate)try{u=a.migrate({version:c.version,state:c.state},l);}catch(g){return a.onError?.({error:g,operation:"migrate"}),{}}else return {};else u=c;return co(yr(u),a.slices)}function lo(e){let a=Vt(e);if(!a)return false;let n=Ft(a);if(!n)return false;try{return n.removeItem(It(a.key)),!0}catch(t){return a.onError?.({error:t,operation:"remove"}),false}}function so({key:e,persistence:a,prefs:n}){let t=a??Vt(e),o=t?Ft(t):void 0,c=t?It(t.key):void 0,l=t?.version??io,u=Math.max(0,t?.debounceMs??100),g=co(n,t?.slices),f=v.useMemo(()=>{if(!t)return {value:void 0};try{let x={version:l,state:g};return {value:(t.serialize??JSON.stringify)(x)}}catch(x){return {error:x,value:void 0}}},[t,g,l]),P=v.useEffectEvent((x,S)=>{t?.onError?.({error:x,operation:S});});v.useEffect(()=>{f.error!==void 0&&P(f.error,"serialize");},[f.error]),v.useEffect(()=>{if(!o||!c||f.value===void 0)return;let x=()=>{try{if(o.getItem(c)===f.value)return;o.setItem(c,f.value);}catch(R){P(R,"write");}};if(u===0){x();return}let S=globalThis.setTimeout(x,u);return ()=>{globalThis.clearTimeout(S);}},[u,f.value,o,c]);}function Vt(e){if(e)return typeof e=="string"?{key:e}:e}function Ft(e){if(e.storage)return e.storage;if(!(typeof window>"u"))try{return window.localStorage}catch(a){e.onError?.({error:a,operation:"read"});return}}function It(e){return `${wr}${e}`}function hr(e){return Ia(e)&&Object.prototype.hasOwnProperty.call(e,"version")&&Object.prototype.hasOwnProperty.call(e,"state")}function co(e,a){let n=new Set(a??oo),t={};for(let o of oo)n.has(o)&&e[o]!==void 0&&Object.assign(t,{[o]:e[o]});return t}function yr(e){if(!Ia(e))return {};let a={},n=Rr(e.visibility);n&&(a.visibility=n);let t=Sr(e.sizing);t&&(a.sizing=t);let o=At(e.order);if(o&&(a.order=o),Ia(e.pinning)){let c=At(e.pinning.left)??[],l=At(e.pinning.right)??[];a.pinning={left:c,right:l};}return vr(e.density)&&(a.density=e.density),a}function Rr(e){if(Ia(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="boolean"))}function Sr(e){if(Ia(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="number"&&Number.isFinite(a[1])&&a[1]>=0))}function At(e){if(Array.isArray(e))return e.filter(a=>typeof a=="string")}function vr(e){return e==="compact"||e==="comfortable"||e==="spacious"}function Ia(e){return !!e&&typeof e=="object"&&!Array.isArray(e)}function uo({columnFilters:e,columnOrder:a,columnPinning:n,columnSizing:t,columnPrefsKey:o,persistence:c,columnVisibility:l,columns:u,data:g,density:f,enableRowSelection:P,enableToolbarQueryFiltering:x$1,expanded:S,getRowId:R,hiddenRows:k,initialState:E$1,isLoading:O,loadingRowCount:T,manualFiltering:b,onColumnFiltersChange:d,onColumnOrderChange:h,onColumnPinningChange:m,onColumnSizingChange:r,onColumnVisibilityChange:C,onDensityChange:D,onExpandedChange:z,onPageIndexChange:N,onRowSelectionChange:U,onShowHiddenRowsChange:F$1,onSortingChange:I,onToolbarQueryValueChange:w$1,onViewModeChange:j$1,pageIndex:K,pageSize:ae,resolvedLabels:oe,rowSelection:A,rowsPerPageOptions:G,selectionActions:W,showHiddenRows:De,sorting:be,toolbarQueryDebounceMs:ge,toolbarQueryPlaceholder:Ae,toolbarQueryValue:Le,viewMode:Se,containerRef:J}){let ve=v.useMemo(()=>c??(o?{key:o}:void 0),[o,c]),we=v.useMemo(()=>ro(ve),[ve]),[M,ie]=v.useState({pageIndex:E$1?.pagination?.pageIndex??0,pageSize:E$1?.pagination?.pageSize??G[0]??20}),[We,ue]=Ee({value:be,onChange:I,defaultValue:()=>E$1?.sorting??[]}),[pe,oa]=Ee({value:A,onChange:U,defaultValue:()=>E$1?.rowSelection??{}}),[ee,Oe]=Ee({value:l,onChange:C,defaultValue:()=>E$1?.columnVisibility??we.visibility??{}}),[he,_e]=Ee({value:e,onChange:d,defaultValue:()=>E$1?.columnFilters??[]}),[Pe,He]=Ee({value:S,onChange:z,defaultValue:()=>E$1?.expanded??{}}),[Be,$e]=Ee({value:a,onChange:h,defaultValue:()=>E$1?.columnOrder??we.order??[]}),[Ue,ye]=Ee({value:n,onChange:m,defaultValue:()=>E$1?.columnPinning??we.pinning??E(u)}),[Ke,ia]=Ee({value:t,onChange:r,defaultValue:()=>E$1?.columnSizing??we.sizing??{}}),[Je,y]=Ee({value:Se,onChange:j$1,defaultValue:()=>E$1?.viewMode??"table"}),[V,me]=Ee({value:De,onChange:F$1,defaultValue:()=>E$1?.showHiddenRows??false}),[Re,X]=Ee({value:f,onChange:D,defaultValue:()=>E$1?.density??we.density??"comfortable"}),q=Le??E$1?.globalFilter??"",ya=Ae??oe.searchPlaceholder,i=ge??250,[$,fe]=v.useState(q),ca=a$1(J),Ra=!!w$1,Sa=v.useRef(q),lt=v.useEffectEvent(_=>{Sa.current=_,w$1?.(_);});v.useEffect(()=>{Sa.current=q,fe(q);},[q]),v.useEffect(()=>{if(!Ra||$===q||$===Sa.current)return;let _=window.setTimeout(()=>{lt($);},i);return ()=>{window.clearTimeout(_);}},[Ra,$,i,q]);let ua=v.useMemo(()=>({pageIndex:K??M.pageIndex,pageSize:ae??M.pageSize}),[M.pageIndex,M.pageSize,K,ae]),ra=Math.max(1,T??Math.min(5,ua.pageSize)),re=x$1?$:"",Y=v.useCallback(_=>{y(_);},[y]),le=v.useCallback(_=>{me(_);},[me]),ne=v.useCallback(_=>{X(_);},[X]),Na=v.useCallback(()=>{N?.(0),K===void 0&&ie(_=>_.pageIndex===0?_:{..._,pageIndex:0});},[N,K]),qe=v.useMemo(()=>JSON.stringify({globalFilterValue:re,columnFilters:he}),[he,re]),va=v.useRef(qe);v.useEffect(()=>{if(b){va.current=qe;return}va.current!==qe&&(va.current=qe,Na());},[qe,b,Na]),so({persistence:ve,prefs:{visibility:l?void 0:ee,sizing:t===void 0?Ke:void 0,order:a?void 0:Be,pinning:n?void 0:Ue,density:f?void 0:Re}});let pa=v.useMemo(()=>u.reduce((_,Fe,Ha)=>{let pt=F(Fe,Ha);return j(Fe.meta?.hideOn,ca)&&(_[pt]=false),_},{}),[u,ca]),st=v.useMemo(()=>({...ee,...pa}),[ee,pa]),Xe=v.useMemo(()=>g.filter(_=>c$1(_,k,V)),[V,g,k]),La=O&&Xe.length===0,Oa=v.useMemo(()=>v$1(ra),[ra]),dt=La?Oa:Xe,ct=v.useCallback((_,Fe)=>w(_)?x(Fe):R(_,Fe),[R]),Ye=P||(W?.length??0)>0||Object.values(pe).some(Boolean),_a=v.useMemo(()=>Ye?new Map(Xe.map((_,Fe)=>[R(_,Fe),_])):new Map,[R,Ye,Xe]),ut=v.useMemo(()=>Ye?Object.entries(pe).filter(([,_])=>_).map(([_])=>_a.get(_)).filter(_=>!!_):[],[pe,_a,Ye]);return {currentColumnFilters:he,currentColumnOrder:Be,currentColumnPinning:Ue,currentColumnSizing:Ke,currentColumnVisibility:ee,currentDensity:Re,currentExpanded:Pe,currentPagination:ua,currentRowSelection:pe,currentShowHiddenRows:V,currentSorting:We,currentViewMode:Je,effectiveColumnVisibility:st,globalFilterValue:re,handleDensityChange:ne,handleShowHiddenRowsChange:le,handleViewModeChange:Y,localSearchValue:$,resolvedLoadingRowCount:ra,resolvedToolbarQueryPlaceholder:ya,selectedRows:ut,setCurrentColumnFilters:_e,setCurrentColumnOrder:$e,setCurrentColumnPinning:ye,setCurrentColumnVisibility:Oe,setCurrentExpanded:He,setCurrentRowSelection:oa,setCurrentSorting:ue,setLocalColumnSizing:ia,setLocalPagination:ie,setLocalSearchValue:fe,shouldRenderInitialLoading:La,tableData:dt,tableGetRowId:ct,toolbarFilteredData:Xe,visibleData:Xe}}var Pr={cellStyle:void 0,colStyle:void 0,fixedSide:void 0,headerStyle:void 0,isActionsColumn:false,isExpansionColumn:false,isSelectionColumn:false,isSpacerColumn:false,isUtilityColumn:false,pinnedClassName:void 0,utilityClassName:void 0};function mo({columns:e,columnSizing:a,editableRows:n,enableRowSelection:t,hasRowActions:o,hasRowExpansion:c,layoutMode:l,uiClassNames:u$1,visibleLeafColumns:g}){let f=v.useMemo(()=>{let T=new Set;for(let[b,d]of e.entries())Object.prototype.hasOwnProperty.call(d,"size")&&T.add(F(d,b));return t&&T.add("__select__"),c&&T.add("__expand__"),(o||n)&&T.add("__actions__"),T},[e,n,t,o,c]),P=v.useMemo(()=>{let T=new Map;for(let[b,d]of e.entries()){let h=y(d);h!==void 0&&T.set(F(d,b),h);}return T},[e]),x=v.useMemo(()=>{let T=new Map,b=new Map,d=0;for(let m of g)H(m)==="left"&&(T.set(m.id,d),d+=po(m));let h=0;for(let m of [...g].reverse())H(m)==="right"&&(b.set(m.id,h),h+=po(m));return {left:T,right:b}},[g]),S=v.useMemo(()=>{if(l!=="fill")return;let T=g.filter(d=>!J(d.id));return T.length&&T.every(d=>f.has(d.id)||Object.prototype.hasOwnProperty.call(a,d.id))?T[T.length-1]?.id:void 0},[a,f,l,g]),R=v.useMemo(()=>{let T=new Set([...f,...Object.keys(a)]);return S&&T.delete(S),T},[a,f,S]),k=v.useMemo(()=>{let T=new Map;for(let b of g){let d=b.id==="__select__",h=b.id==="__expand__",m=b.id==="__actions__",r=d||h||m,C=b.id==="__spacer__",D=P.get(b.id),z=b.id===S,N=D??(z?b.getSize():void 0),U=!C&&(l==="fit"||r||R.has(b.id)),F=U||N!==void 0?{width:U?r?u:b.getSize():void 0,minWidth:r?u:U?b.getSize():N,maxWidth:U?r?u:b.getSize():void 0}:void 0,I$1=H(b),w=I$1?{insetInlineStart:I$1==="left"?x.left.get(b.id):void 0,insetInlineEnd:I$1==="right"?x.right.get(b.id):void 0}:void 0,j=F||w?{...F,...w}:void 0;T.set(b.id,{cellStyle:j,colStyle:F,fixedSide:I$1,headerStyle:j,isActionsColumn:m,isExpansionColumn:h,isSelectionColumn:d,isSpacerColumn:C,isUtilityColumn:r,pinnedClassName:I$1?I(I$1,u$1,{isUtilityColumn:r}):void 0,utilityClassName:r?"w-[50px] max-w-[50px] min-w-[50px] px-0":void 0});}return T},[S,R,l,P,x,u$1,g]),E=v.useMemo(()=>g.reduce((T,b)=>{let d=k.get(b.id),h=P.get(b.id),m=b.id===S;return d?.isUtilityColumn?T+u:R.has(b.id)?T+b.getSize():T+(h??(m?b.getSize():0))},0),[k,S,R,P,g]),O=v.useCallback(T=>k.get(T)??Pr,[k]);return {columnLayouts:k,explicitlySizedColumnIds:f,fillMinWidth:E,getColumnLayout:O}}function po(e){return J(e.id)?u:e.getSize()}function go(e,a$1){let n=e.classNames??{},{Card:t,CardContent:o,CardHeader:c,Checkbox:l,Skeleton:u}=e;return function({rows:f,cardRenderer:P,cardSizing:x="fixed",cardGridClassName:S,cardClassName:R,rowActions:k,editableRows:E,renderExpandedRow:O,hasCardTitle:T,rowSelection:b,onRowSelectionChange:d,enableRowSelection:h,editingRowId:m,onEditingRowIdChange:r,getRowClassName:C,onRowClick:D,getRowDraggable:z,onRowDragStart:N,onRowDragEnd:U,isLoading:F=false,loadingRowCount:I=5,labels:w}){let j=x??"fixed",K=S?a("grid",S):xr(j),ae=a("min-h-0 w-full gap-4 p-1",n.cardGrid,K),oe=A=>a("relative min-w-0 max-w-full gap-0 overflow-hidden bg-transparent p-0",kr(j),n.cardItem,R,A);return F?jsx("div",{role:"list","data-dtp-slot":"data-table-card-grid",className:ae,children:Array.from({length:Math.max(1,I)},(A,G)=>jsxs(t,{role:"listitem","aria-hidden":"true","data-dtp-slot":"data-table-card-item",className:oe("min-h-52"),children:[T?jsxs(c,{className:"px-4 pt-4 pb-3",children:[jsx(u,{className:"h-5 w-40 max-w-[70%]"}),jsx(u,{className:"h-4 w-24 max-w-[40%]"})]}):null,jsxs(o,{className:a("space-y-3 pb-4",T?"":"pt-4"),children:[jsx(u,{className:"h-4 w-full"}),jsx(u,{className:"h-4 w-[82%]"}),jsx(u,{className:"h-4 w-[68%]"}),jsx(u,{className:"h-24 w-full rounded-xl"})]})]},`loading-card-${G}`))}):jsx("div",{role:"list","data-dtp-slot":"data-table-card-grid",className:ae,children:f.map(A=>{let G=A.id,W=A.original,De=!!b[G],be=m===G,ge=k.length>0||!!E,Ae=h||ge||T,Le=h||ge,Se=()=>{D&&D({row:W,rowId:G});};return jsxs(t,{role:"listitem","data-row-id":G,draggable:z?.(W)??false,"data-dtp-slot":"data-table-card-item","data-state":De?"selected":void 0,className:oe(a([C?.(W)].filter(Boolean).join(" "),"transition transition-colors hover:scale-101 data-[state=selected]:scale-101",n.card,De?n.cardSelected:n.cardUnselected)),onDragStart:J=>{N?.({row:W,rowId:G,event:J});},onDragEnd:J=>{U?.({row:W,rowId:G,event:J});},children:[Ae?jsx("div",{"aria-hidden":"true",className:a("pointer-events-none absolute inset-x-0 top-0 z-10 h-24 bg-linear-to-b opacity-0 transition-opacity group-hover/card:opacity-100",n.cardOverlay??"from-transparent via-transparent to-transparent")}):null,jsxs("div",{"data-dtp-slot":"data-table-card-renderer",role:D?"button":void 0,tabIndex:D?0:void 0,className:a("flex min-h-0 max-w-full min-w-0 overflow-hidden rounded-[inherit] [&>*]:min-w-0",Er(j),D&&"cursor-pointer focus-visible:outline-none"),onClick:J=>{J.target?.closest("[data-row-click-ignore='true']")||Se();},onKeyDown:J=>{J.target?.closest("[data-row-click-ignore='true']")||(J.key==="Enter"||J.key===" ")&&(J.preventDefault(),Se());},children:[P({row:W,rowId:G,isSelected:De,onSelectedChange:J=>{d(bo(b,G,J));},actions:k,isEditing:be,startEditing:()=>{r(G);},cancelEditing:()=>{r(null);}}),be||!O||!A.getIsExpanded()?null:O({row:W,rowId:G,tableRow:A})]}),Le?jsxs(c,{className:"absolute inset-x-0 top-0 z-20 flex flex-row items-center gap-3 space-y-0 px-4 pt-4 pb-8",children:[h?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(l,{checked:De,"aria-label":(w.selectCardRow??de.selectCardRow)(G),onCheckedChange:J=>{d(bo(b,G,J===true));}})}):null,jsx("div",{className:"pointer-events-none min-w-0 flex-1"}),ge?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(a$1,{row:W,rowActions:k,editableRows:E,isEditing:be,onStartEditing:()=>{r(G);},onCancelEditing:()=>{r(null);},labels:w})}):null]}):null]},G)})})}}function xr(e){switch(e){case "content":return "flex flex-wrap items-start justify-start";case "fluid":return "grid grid-cols-[repeat(auto-fit,minmax(min(18rem,100%),1fr))]";default:return "grid grid-cols-[repeat(auto-fill,minmax(min(18rem,100%),18rem))] justify-start"}}function kr(e){switch(e){case "content":return "w-fit";case "fluid":return "w-full";default:return}}function Er(e){switch(e){case "content":return "w-fit";case "fluid":return "w-full flex-1 [&>*]:w-full";default:return "flex-1"}}function bo(e,a,n){if(n)return {...e,[a]:true};if(!e[a])return e;let t={...e};return delete t[a],t}function To(e){let a=e.classNames??{},{Empty:n,EmptyContent:t,EmptyDescription:o$1,EmptyHeader:c,EmptyMedia:l,EmptyTitle:u}=e;return function({title:f="No rows found",description:P="Adjust your filters or create a new record to populate this table."}){return jsxs(n,{className:`min-h-60 rounded-2xl ${a.emptyState??"border bg-transparent"}`,children:[jsxs(c,{children:[jsx(l,{variant:"icon",children:jsx(o,{})}),jsx(u,{children:f}),jsx(o$1,{children:P})]}),jsx(t,{})]})}}function Co(e){let a=e.classNames??{},{Pagination:n,PaginationContent:t,PaginationEllipsis:o,PaginationFirst:c,PaginationItem:l,PaginationLast:u,PaginationLink:g,PaginationNext:f,PaginationPrevious:P,Select:x,SelectContent:S,SelectGroup:R,SelectItem:k,SelectTrigger:E,SelectValue:O,Tooltip:T,TooltipContent:b,TooltipTrigger:d}=e;function h({pageIndex:r,pageCount:C,pageCountKnown:D,pageSize:z,totalRowCount:N,rowsPerPageOptions:U,onPageIndexChange:F,onPageSizeChange:I,labels:w}){let j=D?Mr(r,Math.max(1,C)):[],K=r>0,ae=r+1{I(Number(A));},children:[jsx(E,{"aria-label":w.recordsPerPage,className:`w-22 ${a.paginationSelectTrigger??""}`,children:jsx(O,{})}),jsx(S,{children:jsx(R,{children:U.map(A=>jsx(k,{value:String(A),children:A},A))})})]})]}),N!==void 0?jsx("div",{className:"flex shrink-0 items-center justify-center",children:jsxs("div",{className:`inline-flex items-center gap-2 px-2.5 py-1.5 text-sm ${a.paginationTotal??""}`,"aria-label":w.totalRecords(N),children:[jsx(i,{className:"size-4"}),jsx("span",{className:"@md/data-table:hidden",children:N}),jsx("span",{className:"hidden @md/data-table:inline",children:w.totalRecords(N)})]})}):null,jsxs("div",{className:"flex flex-1 items-center justify-end gap-4",children:[jsx("div",{className:`hidden text-sm @md/data-table:inline ${a.mutedText??"opacity-70"}`,children:D?w.pageStatus(r,Math.max(1,C)):(w.pageStatusUnknown??de.pageStatusUnknown)(r)}),jsx(n,{"aria-label":w.pagination??de.pagination,className:"mx-0 w-auto justify-end",children:jsxs(t,{children:[jsx(l,{className:"@md/data-table:hidden",children:jsxs(T,{children:[jsx(d,{asChild:true,children:jsx(c,{"aria-label":w.firstPage,href:"#",size:"icon-sm",showText:false,disabled:!K,onClick:A=>{A.preventDefault(),K&&F(0);},text:w.firstPage})}),jsx(b,{children:w.firstPage})]})}),jsx(l,{children:jsxs(T,{children:[jsx(d,{asChild:true,children:jsx(P,{"aria-label":w.previousPage,href:"#",size:"icon-sm",showText:false,disabled:!K,onClick:A=>{A.preventDefault(),K&&F(r-1);},text:w.previousPage})}),jsx(b,{children:w.previousPage})]})}),j.map((A,G)=>jsx(l,{className:"hidden @md/data-table:block",children:A==="ellipsis"?jsx(o,{text:w.morePages??de.morePages}):jsx(g,{href:"#",isActive:A===r+1,size:"icon-sm",onClick:W=>{W.preventDefault(),F(A-1);},children:A})},`${A}-${G}`)),jsx(l,{children:jsxs(T,{children:[jsx(d,{asChild:true,children:jsx(f,{"aria-label":w.nextPage,href:"#",size:"icon-sm",showText:false,disabled:!ae,onClick:A=>{A.preventDefault(),ae&&F(r+1);},text:w.nextPage})}),jsx(b,{children:w.nextPage})]})}),D?jsx(l,{className:"@md/data-table:hidden",children:jsxs(T,{children:[jsx(d,{asChild:true,children:jsx(u,{"aria-label":w.lastPage,href:"#",size:"icon-sm",showText:false,text:w.lastPage,disabled:!ae,onClick:A=>{A.preventDefault(),ae&&F(oe);}})}),jsx(b,{children:w.lastPage})]})}):null]})})]})]})}function m(r){return jsx("div",{className:`rounded-md border px-2 py-1 ${a.footer??""}`,children:jsx(h,{...r})})}return {DataTableFooter:m,DataTablePagination:h}}function Mr(e,a){let n=e+1,t=new Set([1,a]);for(let l=Math.max(1,n-2);l<=Math.min(a,n+2);l+=1)t.add(l);let o=Array.from(t).sort((l,u)=>l-u),c=[];for(let l=0;l1&&c.push("ellipsis"),c.push(u);}return c}function wo(e$1){let{Button:a,DropdownMenu:n,DropdownMenuContent:t$1,DropdownMenuGroup:o,DropdownMenuItem:c,DropdownMenuSeparator:l$1,DropdownMenuTrigger:u,Tooltip:g,TooltipContent:f$1,TooltipTrigger:P}=e$1;return function({row:S,rowActions:R,editableRows:k,isEditing:E,onStartEditing:O,onCancelEditing:T,labels:b}){let d$1=R.filter(r=>e(r,S)),h=v.useCallback(r=>{r.stopPropagation();},[]);if(E)return jsxs(g,{children:[jsx(P,{asChild:true,children:jsxs(a,{type:"button",variant:"ghost",size:"icon-sm",onPointerDown:h,onClick:T,children:[jsx(t,{}),jsx("span",{className:"sr-only",children:b.cancelEdit})]})}),jsx(f$1,{children:b.cancelEdit})]});let m=f(k,S);return !d$1.length&&!m?null:jsxs(n,{children:[jsxs(g,{children:[jsx(P,{asChild:true,children:jsx(u,{asChild:true,children:jsxs(a,{type:"button",variant:"ghost",size:"icon-sm",onPointerDown:h,onClick:h,children:[jsx(j$1,{}),jsx("span",{className:"sr-only",children:b.rowActions})]})})}),jsx(f$1,{children:b.rowActions})]}),jsxs(t$1,{align:"end",className:"w-52",children:[m?jsx(o,{children:jsxs(c,{onClick:r=>{r.stopPropagation(),O();},children:[jsx(l,{"data-icon":"inline-start"}),b.editRow]})}):null,m&&d$1.length?jsx(l$1,{}):null,d$1.length?jsx(o,{children:d$1.map(r=>{let C=r.icon;return jsxs(c,{disabled:r.disabled?.(S),variant:r.variant==="destructive"?"destructive":void 0,onClick:D=>{D.stopPropagation(),r.onClick(S);},children:[C?jsx(C,{"data-icon":"inline-start"}):null,d(r.label,S)]},r.key)})}):null]})]})}}function ho(e){let a=e.classNames??{},{Button:n,ButtonGroup:t$1,DropdownMenu:o,DropdownMenuCheckboxItem:c,DropdownMenuContent:l,DropdownMenuGroup:u,DropdownMenuItem:g,DropdownMenuLabel:f,DropdownMenuSeparator:P,DropdownMenuTrigger:x,InputGroup:S,InputGroupAddon:R,InputGroupInput:k,Tooltip:E,TooltipContent:O,TooltipTrigger:T}=e;return function({title:h,description:m,toolbarQueryValue:r$1,toolbarQueryPlaceholder:C,onToolbarQueryValueChange:D,customToolbar:z,compactToolbar:N,viewMode:U,onViewModeChange:F,enableViewToggle:I,toolbarActions:w,selectionActions:j,selectedRows:K,showHiddenRows:ae,hiddenRowsLabel:oe,onShowHiddenRowsChange:A,allRows:G,columnVisibilityOptions:W,onColumnVisibilityChange:De,enableColumnPinning:be,onColumnPinningChange:ge,columnFilters:Ae,onColumnFilterChange:Le,onClearColumnFilters:Se,density:J,onDensityChange:ve,enableDensityToggle:we,labels:M,toolbarVisibility:ie,openFileDialog:We}){let ue=v.useRef(null),[pe,oa]=v.useState(false),ee=a.toolbarCompactIconButton??"",Oe=w.filter(i=>(i.placement??"primary")==="primary"),he=w.filter(i=>i.placement==="trailing"),_e=ie?.title??true,Pe=ie?.search??true,He=ie?.actions??true,Be=ie?.trailingActions??true,$e=ie?.options??true,Ue=ie?.viewToggle??true,ye=ie?.customToolbar??true,Ke=_e&&!!(h||m),ia=Pe,Je=He&&Oe.length>0,y=K.length>0&&j.length>0,V=$e&&(W.some(i=>i.canHide)||!!(A&&oe)||be||we),me=Ue&&I&&!!F,Re=Be&&he.length>0,X=ye&&!!z,q$1=ye&&!!(N??z),ya=M.selectedRows(K.length);return v.useEffect(()=>{pe&&ue.current?.focus();},[pe]),!Ke&&!ia&&!Je&&!y&&!V&&!me&&!Re&&!X&&!q$1?null:jsxs("div",{className:"flex flex-col gap-4 pb-0",children:[_e&&(h||m)?jsxs("div",{className:"flex flex-col gap-1",children:[h?jsx("h2",{className:"text-lg font-semibold tracking-tight",children:h}):null,m?jsx("p",{className:`max-w-3xl text-sm ${a.mutedText??"opacity-70"}`,children:m}):null]}):null,jsxs("div",{className:"flex flex-col gap-3",children:[jsxs("div",{"data-dtp-slot":"data-table-toolbar-controls",className:"flex items-center gap-2 overflow-x-auto px-1 @md/data-table:gap-3 @md/data-table:overflow-visible",children:[Pe?jsxs(Fragment,{children:[jsx("div",{className:"hidden min-w-0 grow max-w-md @md/data-table:block",children:jsxs(S,{className:"min-w-0",children:[jsx(k,{value:r$1,onChange:i=>{D(i.target.value);},placeholder:C}),jsx(R,{align:"inline-start","aria-hidden":"true",children:jsx(r,{})}),r$1?jsx(R,{align:"inline-end",children:jsx("button",{type:"button",className:`inline-flex size-5 items-center justify-center rounded-md transition-colors focus-visible:outline-none ${a.toolbarIconButton??"opacity-70 hover:opacity-100"}`,onClick:()=>{D("");},"aria-label":M.clearSearch,title:M.clearSearch,children:jsx(t,{})})}):null]})}),jsxs(E,{children:[jsx(T,{asChild:true,children:jsxs(n,{type:"button",variant:pe||r$1?"secondary":"outline",size:"icon-sm","aria-label":M.searchTable,"aria-pressed":pe,className:`shrink-0 @md/data-table:hidden ${ee} ${a.toolbarInputButton??""}`,onClick:()=>{oa(i=>!i);},children:[jsx(r,{}),jsx("span",{className:"sr-only",children:M.searchTable})]})}),jsx(O,{children:M.searchTable})]})]}):null,He?jsx("div",{className:"flex shrink-0 items-center gap-2",children:Oe.map(i=>{let $=!i.iconOnly&&!!i.icon,fe=jsxs(n,{type:"button",className:$?`size-7 shrink-0 px-0 @md/data-table:h-8 @md/data-table:w-fit @md/data-table:px-2.5 ${ee}`:i.iconOnly?`size-7 shrink-0 @md/data-table:size-8 ${ee}`:"size-7 shrink-0 @md/data-table:h-8 @md/data-table:w-fit",variant:i.variant??"outline",size:i.iconOnly?"icon":"default",onClick:()=>{i.onClick({rows:G,openFileDialog:We});},disabled:i.disabled,"aria-label":i.label,title:i.iconOnly?void 0:i.label,children:[i.icon?jsx(i.icon,{}):null,i.iconOnly?jsx("span",{className:"sr-only",children:i.label}):$?jsx("span",{className:"hidden @md/data-table:inline",children:i.label}):jsx("span",{children:i.label})]},i.key);return i.iconOnly?jsxs(E,{children:[jsx(T,{asChild:true,children:fe}),jsx(O,{children:i.label})]},i.key):fe})}):null,q$1?jsx("div",{"data-dtp-slot":"data-table-toolbar-compact-custom",className:"flex shrink-0 items-center gap-2 @lg/data-table:hidden",children:N??z}):null,jsx("div",{className:"grow","aria-hidden":"true"}),jsxs("div",{"data-dtp-slot":"data-table-toolbar-end-controls",className:"flex shrink-0 items-center gap-2",children:[K.length?jsx("div",{className:`hidden text-sm @md/data-table:block ${a.mutedText??"opacity-70"}`,children:ya}):null,K.length?j.map(i=>{let $=i.icon,fe=typeof i.disabled=="function"?i.disabled(K):i.disabled;return jsxs(E,{children:[jsx(T,{asChild:true,children:jsxs(n,{type:"button",variant:i.variant??"secondary",size:"icon-sm",className:ee,disabled:fe,onClick:()=>{i.onClick({rows:K});},"aria-label":i.label,children:[$?jsx($,{}):null,jsx("span",{className:"sr-only",children:i.label})]})}),jsx(O,{children:i.label})]},i.key)}):null,V?jsxs(o,{children:[jsx(x,{asChild:true,children:jsxs(n,{type:"button",variant:"outline",size:"icon-sm","aria-label":M.tableOptions,className:`${ee} ${a.toolbarInputButton??""}`,title:M.tableOptions,children:[jsx(a$2,{}),jsx("span",{className:"sr-only",children:M.tableOptions})]})}),jsxs(l,{align:"end",className:"w-56",children:[jsx(f,{children:M.tableOptions}),jsx(u,{children:A&&oe?jsx(c,{checked:ae,onCheckedChange:i=>{A(i===true);},children:M.showHiddenRows(oe)}):null}),we?jsxs(Fragment,{children:[jsx(P,{}),jsx(f,{children:M.density}),jsx(u,{children:[["compact",M.compactDensity],["comfortable",M.comfortableDensity],["spacious",M.spaciousDensity]].map(([i,$])=>jsx(c,{checked:J===i,onCheckedChange:()=>{ve(i);},children:$},i))})]}):null,W.some(i=>i.canHide)?jsxs(Fragment,{children:[jsx(P,{}),jsx(f,{children:M.columns}),jsx(u,{children:W.filter(i=>i.canHide).map(i=>jsx(c,{checked:i.visible,onCheckedChange:$=>{De?.(i.id,$===true);},children:i.label},i.id))})]}):null,be?jsxs(Fragment,{children:[jsx(P,{}),jsxs(f,{children:[M.pinLeft," / ",M.pinRight]}),jsx(u,{children:W.map(i=>jsxs(g,{onSelect:$=>{$.preventDefault();},children:[jsx("span",{className:"min-w-0 flex-1 truncate",children:i.label}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${M.pinLeft}: ${i.label}`,onClick:$=>{$.stopPropagation(),ge(i.id,"left");},children:"L"}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${M.pinRight}: ${i.label}`,onClick:$=>{$.stopPropagation(),ge(i.id,"right");},children:"R"}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${M.unpin}: ${i.label}`,onClick:$=>{$.stopPropagation(),ge(i.id,false);},children:"-"})]},`pin-${i.id}`))})]}):null]})]}):null,Ue&&I&&F?jsxs(t$1,{children:[jsxs(E,{children:[jsx(T,{asChild:true,children:jsxs(n,{type:"button",variant:U==="table"?"default":"outline","aria-pressed":U==="table",className:U==="table"?ee:`${ee} ${a.toolbarInputButton??""}`,size:"icon-sm",onClick:()=>{F("table");},children:[jsx(q,{}),jsx("span",{className:"sr-only",children:M.switchToTableView??de.switchToTableView})]})}),jsx(O,{children:M.tableView??de.tableView})]}),jsxs(E,{children:[jsx(T,{asChild:true,children:jsxs(n,{type:"button",variant:U==="card"?"default":"outline","aria-pressed":U==="card",className:U==="table"?`${ee} ${a.toolbarInputButton??""}`:ee,size:"icon-sm",onClick:()=>{F("card");},children:[jsx(p,{}),jsx("span",{className:"sr-only",children:M.switchToCardView??de.switchToCardView})]})}),jsx(O,{children:M.cardView??de.cardView})]})]}):null,Be?he.map(i=>{let $=!i.iconOnly&&!!i.icon,fe=jsxs(n,{type:"button",variant:i.variant??"outline",size:i.iconOnly?"icon-sm":"default",onClick:()=>{i.onClick({rows:G,openFileDialog:We});},disabled:i.disabled,"aria-label":i.label,title:i.iconOnly?void 0:i.label,className:`size-7 shrink-0 ${i.iconOnly?"":`${$?"px-0 @md/data-table:px-2.5":""} @md/data-table:h-8 @md/data-table:w-fit`} ${i.iconOnly||$?ee:""} ${a.toolbarInputButton??""}`,children:[i.icon?jsx(i.icon,{"data-icon":i.iconOnly?void 0:"inline-start"}):null,i.iconOnly?jsx("span",{className:"sr-only",children:i.label}):$?jsx("span",{className:"hidden @md/data-table:inline",children:i.label}):jsx("span",{children:i.label})]},i.key);return i.iconOnly?jsxs(E,{children:[jsx(T,{asChild:true,children:fe}),jsx(O,{children:i.label})]},i.key):fe}):null]})]}),Pe&&pe?jsx("div",{"data-dtp-slot":"data-table-toolbar-compact-search",className:"min-w-0 @md/data-table:hidden",children:jsxs(S,{children:[jsx(k,{ref:ue,value:r$1,onChange:i=>{D(i.target.value);},placeholder:C}),jsx(R,{align:"inline-start","aria-hidden":"true",children:jsx(r,{})}),r$1?jsx(R,{align:"inline-end",children:jsx("button",{type:"button",className:`inline-flex size-5 items-center justify-center rounded-md transition-colors focus-visible:outline-none ${a.toolbarIconButton??"opacity-70 hover:opacity-100"}`,onClick:()=>{D("");},"aria-label":M.clearSearch,title:M.clearSearch,children:jsx(t,{})})}):null]})}):null,Ae.length?jsxs("div",{"data-dtp-slot":"data-table-toolbar-filters",className:"flex min-w-0 flex-wrap items-center gap-2",children:[Ae.map(i=>jsx(b,{filter:i,labels:M,onColumnFilterChange:Le},i.id)),Ae.some(i=>Ar(i.value))?jsx(n,{type:"button",variant:"ghost",size:"sm",onClick:Se,children:M.clearFilters}):null]}):null]}),ye&&z?jsx("div",{"data-dtp-slot":"data-table-toolbar-desktop-custom",className:"hidden flex-row items-center gap-3 @lg/data-table:flex",children:z}):null]})};function b({filter:d,labels:h,onColumnFilterChange:m}){if(d.type==="text")return jsxs(S,{className:"min-w-48 max-w-64",children:[jsx(k,{value:typeof d.value=="string"?d.value:"",onChange:D=>{m(d.id,D.target.value);},placeholder:d.placeholder??d.label,"aria-label":`${h.filters}: ${d.label}`}),jsx(R,{align:"inline-start","aria-hidden":"true",children:jsx(r,{})})]});let r$1=Array.isArray(d.value)?d.value.map(String):typeof d.value=="string"&&d.value?[d.value]:[],C=r$1.length===0?d.label:`${d.label}: ${r$1.length===1?d.options.find(D=>D.value===r$1[0])?.label??r$1[0]:r$1.length}`;return jsxs(o,{children:[jsx(x,{asChild:true,children:jsx(n,{type:"button",variant:"outline",size:"sm",children:C})}),jsxs(l,{align:"start",className:"w-56",children:[jsx(f,{children:d.label}),jsxs(u,{children:[d.type==="select"?jsx(g,{onClick:()=>{m(d.id,"");},children:h.allFilterOptions??de.allFilterOptions}):null,d.options.map(D=>jsx(c,{checked:r$1.includes(D.value),onCheckedChange:z=>{if(d.type==="select"){m(d.id,z===true?D.value:"");return}let N=new Set(r$1);z===true?N.add(D.value):N.delete(D.value),m(d.id,Array.from(N));},children:D.label},D.value))]})]})]})}}function Ar(e){return Array.isArray(e)?e.length>0:e!=null&&e!==""}var Vr=v.lazy(async()=>({default:(await import('./data-table-virtual-table-panel-ASNINA6M.js')).DataTableVirtualTablePanel}));function yo(e){let a=typeof e.virtualization=="object"?e.virtualization:void 0;return e.virtualization===true||a?.enabled===true?jsx(v.Suspense,{fallback:jsx(P,{...e}),children:jsx(Vr,{...e})}):jsx(P,{...e})}var Fr="data-table-pro:saved-views:";var So=["sorting","columnVisibility","columnFilters","columnOrder","columnPinning","columnSizing","density","viewMode","showHiddenRows","globalFilter"],Ro=0;function ha(e){let a=_t(e);if(!e||!a)return [];let n;try{n=a.getItem(Ht(e.key));}catch(l){return e.onError?.({error:l,operation:"read"}),[]}if(!n)return [];let t;try{t=(e.deserialize??JSON.parse)(n);}catch(l){return e.onError?.({error:l,operation:"deserialize"}),[]}if(!Ve(t)||!("version"in t)||!("views"in t))return [];let o=e.version??1,c=t.views;if(t.version!==o){if(!e.migrate)return [];try{c=e.migrate({version:t.version,views:t.views},o);}catch(l){return e.onError?.({error:l,operation:"migrate"}),[]}}return Array.isArray(c)?c.map(l=>zr(l,e.slices)).filter(l=>!!l):[]}function vo(e,a,n){let t=a.trim();if(!e||!t)return;let o=new Date().toISOString(),c={id:$r(),name:t,createdAt:o,updatedAt:o,state:Ir(n,e.slices)},l=[...ha(e),c];return Lt(e,l,"create")?Ot(c):void 0}function Po(e,a,n){let t=n.trim();if(!e||!t)return;let o,c=ha(e).map(l=>l.id!==a?l:(o={...l,name:t,updatedAt:new Date().toISOString()},o));if(o)return Lt(e,c,"rename")?Ot(o):void 0}function xo(e,a){if(!e)return false;let n=ha(e),t=n.filter(o=>o.id!==a);return t.length!==n.length&&Lt(e,t,"delete")}function ko(e){let a=_t(e);if(!e||!a)return false;try{a.removeItem(Ht(e.key));}catch(n){return e.onError?.({error:n,operation:"remove"}),false}return e.onChange?.([],"clear"),true}function Lt(e,a,n){let t=_t(e);if(!t)return false;let o;try{let l={version:e.version??1,views:a};o=(e.serialize??JSON.stringify)(l);}catch(l){return e.onError?.({error:l,operation:"serialize"}),false}try{t.setItem(Ht(e.key),o);}catch(l){return e.onError?.({error:l,operation:"write"}),false}let c=a.map(Ot);return e.onChange?.(c,n),true}function Ir(e,a){let n=new Set(a??So),t={};for(let o of Object.keys(e))n.has(o)&&Object.assign(t,{[o]:Nr(o,e[o])});return t}function zr(e,a){if(!(!Ve(e)||typeof e.id!="string"||!e.id||typeof e.name!="string"||!e.name.trim()||typeof e.createdAt!="string"||typeof e.updatedAt!="string"))return {id:e.id,name:e.name.trim(),createdAt:e.createdAt,updatedAt:e.updatedAt,state:Eo(e.state,a)}}function Eo(e,a){if(!Ve(e))return {};let n=new Set(a??So),t={},o=Lr(e.sorting);n.has("sorting")&&o&&(t.sorting=o);let c=Or(e.pagination);n.has("pagination")&&c&&(t.pagination=c);let l=zt(e.rowSelection);n.has("rowSelection")&&l&&(t.rowSelection=l);let u=zt(e.columnVisibility);n.has("columnVisibility")&&u&&(t.columnVisibility=u);let g=_r(e.columnFilters);n.has("columnFilters")&&g&&(t.columnFilters=g);let f=e.expanded===true?true:zt(e.expanded);n.has("expanded")&&f!==void 0&&(t.expanded=f);let P=Nt(e.columnOrder);n.has("columnOrder")&&P&&(t.columnOrder=P);let x=Hr(e.columnPinning);n.has("columnPinning")&&x&&(t.columnPinning=x);let S=Br(e.columnSizing);return n.has("columnSizing")&&S&&(t.columnSizing=S),n.has("density")&&(e.density==="compact"||e.density==="comfortable"||e.density==="spacious")&&(t.density=e.density),n.has("viewMode")&&(e.viewMode==="table"||e.viewMode==="card")&&(t.viewMode=e.viewMode),n.has("showHiddenRows")&&typeof e.showHiddenRows=="boolean"&&(t.showHiddenRows=e.showHiddenRows),n.has("globalFilter")&&typeof e.globalFilter=="string"&&(t.globalFilter=e.globalFilter),t}function Ot(e){return {...e,state:Eo(e.state,Object.keys(e.state))}}function Nr(e,a){return Array.isArray(a)?a.map(n=>Ve(n)?{...n}:n):Ve(a)?e==="columnPinning"?{left:Array.isArray(a.left)?[...a.left]:void 0,right:Array.isArray(a.right)?[...a.right]:void 0}:{...a}:a}function Lr(e){if(Array.isArray(e))return e.filter(a=>Ve(a)&&typeof a.id=="string").map(a=>({id:a.id,desc:!!a.desc}))}function Or(e){if(!(!Ve(e)||!Number.isInteger(e.pageIndex)||e.pageIndex<0||!Number.isInteger(e.pageSize)||e.pageSize<1))return {pageIndex:e.pageIndex,pageSize:e.pageSize}}function _r(e){if(Array.isArray(e))return e.filter(a=>Ve(a)&&typeof a.id=="string"&&Object.prototype.hasOwnProperty.call(a,"value")).map(a=>({id:a.id,value:a.value}))}function Hr(e){if(Ve(e))return {left:Nt(e.left)??[],right:Nt(e.right)??[]}}function zt(e){if(Ve(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="boolean"))}function Br(e){if(Ve(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="number"&&Number.isFinite(a[1])&&a[1]>=0))}function Nt(e){if(Array.isArray(e))return e.filter(a=>typeof a=="string")}function _t(e){if(e){if(e.storage)return e.storage;if(!(typeof window>"u"))try{return window.localStorage}catch(a){e.onError?.({error:a,operation:"read"});return}}}function $r(){return typeof globalThis.crypto?.randomUUID=="function"?globalThis.crypto.randomUUID():(Ro+=1,`view-${Date.now().toString(36)}-${Ro.toString(36)}`)}function Ht(e){return `${Fr}${e}`}function Ve(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Mo({columns:e,currentColumnFilters:a,currentColumnPinning:n,effectiveColumnVisibility:t,enableColumnFilters:o,handleColumnFiltersChange:c,handleColumnPinningChange:l,labels:u,table:g,toolbarActions:f,visibleData:P,csvExport:x}){let S=v.useMemo(()=>e.map((d,h)=>{let m=F(d,h),r=d.header,C=G(d),D=typeof r=="string"?r:C?L(C):L(m),z=n.left?.includes(m)===true?"left":n.right?.includes(m)===true?"right":false;return {id:m,label:D,visible:t[m]!==false,canHide:d.enableHiding!==false,pinned:z}}),[e,n,t]),R=v.useMemo(()=>o===false?[]:e.flatMap((d,h)=>{let m=d.meta?.filter;if(!m)return [];let r=F(d,h),C=d.header,D=G(d),z=m.label??(typeof C=="string"?C:D?L(D):L(r)),N=a.find(F=>F.id===r),U=typeof m.options=="function"?m.options({rows:P}):m.options??[];return [{id:r,label:z,type:m.type,value:N?.value,placeholder:m.placeholder,options:A(U)}]}),[e,a,o,P]),k$1=v.useCallback((d,h)=>{c(m=>{let r=m.filter(C=>C.id!==d);return B(h)&&r.push({id:d,value:h}),r});},[c]),E=v.useCallback(()=>{c([]);},[c]),O=v.useCallback((d,h)=>{l(m=>{let r=(m.left??[]).filter(D=>D!==d),C=(m.right??[]).filter(D=>D!==d);return h==="left"&&r.push(d),h==="right"&&C.push(d),{left:r,right:C}});},[l]),T=v.useCallback(()=>{if(x)return D({csvExport:x,table:g,labels:u})},[x,u,g]),b=v.useMemo(()=>x?[...f??[],{key:"__csv_export__",label:u.exportCsv,icon:k,placement:"trailing",onClick:T}]:f??[],[x,T,u.exportCsv,f]);return {columnVisibilityOptions:S,effectiveToolbarActions:b,handleClearColumnFilters:E,handleToolbarColumnFilterChange:k$1,handleToolbarColumnPinningChange:O,toolbarColumnFilters:R}}function xs(e){return Kr(e)}function Kr(e,a$1={}){let n=a$1.CardPanel??Wn,t=a$1.TablePanel??yo,o=e.classNames??{},{rootClassName:c,Button:l,Checkbox:u,Input:g,ScrollArea:f,ScrollBar:P,Skeleton:x,Table:S,TableBody:R,TableCell:k,TableFooter:E$1="tfoot",TableHead:O,TableHeader:T,TableRow:b$1,Tooltip:d,TooltipContent:h,TooltipProvider:m=v.Fragment,TooltipTrigger:r}=e,C=To(e),D$1=wo(e),{DataTableFooter:z}=Co(e),N=ho(e),U=go(e,D$1),F$1={minSize:80,size:180,maxSize:720};return function({columns:w,data:j,getRowId:K,children:ae,title:oe,description:A,toolbarQueryValue:G,onToolbarQueryValueChange:W,toolbarQueryPlaceholder:De,toolbarQueryDebounceMs:be,manualFiltering:ge=false,enableToolbarQueryFiltering:Ae=true,globalFilterFn:Le,columnFilters:Se,onColumnFiltersChange:J,enableColumnFilters:ve,customToolbar:we,compactToolbar:M$1,rowsPerPageOptions:ie=[10,20,50,100],totalRowCount:We,hasNextPage:ue,sorting:pe,onSortingChange:oa,manualSorting:ee=false,pageIndex:Oe,pageSize:he,onPageIndexChange:_e,onPageSizeChange:Pe,pageCount:He,manualPagination:Be=false,rowSelection:$e,onRowSelectionChange:Ue,enableRowSelection:ye=false,expanded:Ke,onExpandedChange:ia,getRowCanExpand:Je,renderExpandedRow:y,columnOrder:V,onColumnOrderChange:me,enableColumnReordering:Re=false,columnPinning:X,onColumnPinningChange:q,enableColumnPinning:ya=false,toolbarActions:i=[],selectionActions:$=[],rowActions:fe=[],csvExport:ca,density:Ra,onDensityChange:Sa,enableDensityToggle:lt=false,columnPrefsKey:ua,persistence:ra,savedViews:re,initialState:Y,state:le,onStateChange:ne,apiRef:Na,labels:qe,summaryRows:va=[],cardRenderer:pa,cardSizing:st,cardGridClassName:Xe,cardClassName:La,viewMode:Oa,onViewModeChange:dt,enableViewToggle:ct=false,emptyState:Ye,isLoading:_a=false,loadingRowCount:ut,getRowLoadingState:_,hiddenRows:Fe,showHiddenRows:Ha,onShowHiddenRowsChange:pt,infiniteScroll:Ba,editableRows:$a,columnVisibility:Bt,onColumnVisibilityChange:Fo,columnSizing:$t,onColumnSizingChange:Io,enableColumnResizing:Ut=false,columnResizeMode:zo="onChange",layoutMode:Kt="fill",stickyHeader:No=true,showFooter:Lo=true,showToolbar:Oo=true,dir:_o="ltr",flexGrow:ma=true,toolbarVisibility:Ho,className:Bo,tableClassName:$o,tableContainerClassName:jt,getRowClassName:Gt,onRowClick:mt,onActionError:Pa,dragAndDrop:ba,fileUpload:je,virtualization:bt}){let xa=v.useRef(null),Qt=v.useRef(null),Wt=v.useRef(null),Uo=v.useRef(null),gt=v.useRef(null),Ko=v.useRef(null),Ge=v.useMemo(()=>Yn(qe),[qe]),jo=G??le?.globalFilter,Go=pe??le?.sorting,Ua=Oe??le?.pagination?.pageIndex,Ka=he??le?.pagination?.pageSize,Qo=$e??le?.rowSelection,Wo=Bt??le?.columnVisibility,Jo=Se??le?.columnFilters,qo=Ke??le?.expanded,Xo=V??le?.columnOrder,Yo=X??le?.columnPinning,Zo=$t??le?.columnSizing,ei=Ra??le?.density,ai=Oa??le?.viewMode,ti=Ha??le?.showHiddenRows;Gr(le,{columnFilters:Se!==void 0,columnOrder:V!==void 0,columnPinning:X!==void 0,columnSizing:$t!==void 0,columnVisibility:Bt!==void 0,density:Ra!==void 0,expanded:Ke!==void 0,globalFilter:G!==void 0,pagination:Oe!==void 0||he!==void 0,rowSelection:$e!==void 0,showHiddenRows:Ha!==void 0,sorting:pe!==void 0,viewMode:Oa!==void 0});let ni=Me("globalFilter",W,ne),oi=Me("sorting",oa,ne),ii=Me("rowSelection",Ue,ne),ri=Me("columnVisibility",Fo,ne),li=Me("columnFilters",J,ne),si=Me("expanded",ia,ne),di=Me("columnOrder",me,ne),ci=Me("columnPinning",q,ne),ui=Me("columnSizing",Io,ne),pi=Me("density",Sa,ne),mi=Me("viewMode",dt,ne),bi=Me("showHiddenRows",pt,ne),Jt=v.useCallback(s=>{_e?.(s),ne?.(H=>({...H,pagination:{pageIndex:s,pageSize:Ka??H.pagination.pageSize}}));},[_e,ne,Ka]),gi=v.useCallback(s=>{Pe?.(s),ne?.(H=>({...H,pagination:{pageIndex:Ua??H.pagination.pageIndex,pageSize:s}}));},[Pe,ne,Ua]),Ie=v.useCallback((s,H)=>{jr(H,s,Pa);},[Pa]),qt=v.useMemo(()=>fe.map(s=>({...s,onClick:H=>{Ie({actionKey:s.key,row:H,source:"rowAction"},()=>s.onClick(H));}})),[fe,Ie]),Xt=v.useMemo(()=>mt?s=>{Ie({row:s.row,source:"rowClick"},()=>mt(s));}:void 0,[mt,Ie]),fi=v.useCallback((s,H)=>{Pa?.({error:s,row:H,source:"edit"});},[Pa]),{currentColumnFilters:ja,currentColumnOrder:ft,currentColumnPinning:Ga,currentColumnSizing:Qa,currentColumnVisibility:Yt,currentDensity:ka,currentExpanded:Tt,currentPagination:Wa,currentRowSelection:Ja,currentShowHiddenRows:Ct,currentSorting:qa,currentViewMode:ga,effectiveColumnVisibility:Zt,globalFilterValue:Ti,handleDensityChange:Dt,handleShowHiddenRowsChange:wt,handleViewModeChange:ht,localSearchValue:fa,resolvedLoadingRowCount:Ci,resolvedToolbarQueryPlaceholder:Di,selectedRows:wi,setCurrentColumnFilters:en,setCurrentColumnOrder:hi,setCurrentColumnPinning:an,setCurrentColumnVisibility:yi,setCurrentExpanded:Ri,setCurrentRowSelection:tn,setCurrentSorting:Si,setLocalColumnSizing:vi,setLocalPagination:Pi,setLocalSearchValue:yt,shouldRenderInitialLoading:Rt,tableData:xi,tableGetRowId:ki,visibleData:Ei}=uo({columnFilters:Jo,columnOrder:Xo,columnPinning:Yo,columnSizing:Zo,columnPrefsKey:ua,persistence:ra,columnVisibility:Wo,columns:w,containerRef:xa,data:j,density:ei,enableRowSelection:ye,enableToolbarQueryFiltering:Ae,expanded:qo,getRowId:K,hiddenRows:Fe,isLoading:_a,loadingRowCount:ut,manualFiltering:ge,initialState:Y,onColumnFiltersChange:li,onColumnOrderChange:di,onColumnPinningChange:ci,onColumnSizingChange:ui,onColumnVisibilityChange:ri,onDensityChange:pi,onExpandedChange:si,onPageIndexChange:Jt,onRowSelectionChange:ii,onShowHiddenRowsChange:bi,onSortingChange:oi,onToolbarQueryValueChange:ni,onViewModeChange:mi,pageIndex:Ua,pageSize:Ka,resolvedLabels:Ge,rowSelection:Qo,rowsPerPageOptions:ie,selectionActions:$,showHiddenRows:ti,sorting:Go,toolbarQueryDebounceMs:be,toolbarQueryPlaceholder:De,toolbarQueryValue:jo,viewMode:ai}),{cancelEditing:Mi,draftValues:Ai,editingRowId:St,isSavingEdit:Vi,saveEdit:Fi,setDraftValues:Ii,setEditingRowId:zi,startEditingRow:Ni}=M({columns:w,editableRows:$a,onError:fi}),{viewportElement:nn,viewportHeight:on}=b(Wt,ga),Li=v.useCallback(()=>{je?.disabled||Qt.current?.click();},[je?.disabled]),Oi=v.useCallback(s=>{Ie({source:"fileUpload"},()=>je?.onFilesSelected(s));},[je,Ie]),_i=Zn({Button:l,Checkbox:u,DataTableRowActions:D$1,Tooltip:d,TooltipContent:h,TooltipTrigger:r,cancelEditing:Mi,columns:w,editableRows:$a,editingRowId:St,enableRowSelection:ye,getRowCanExpand:Je,isSavingEdit:Vi,labels:Ge,lastSelectedRowIdRef:Ko,renderExpandedRow:y,rowActions:qt,saveEdit:Fi,startEditingRow:Ni,tableRef:gt}),{effectivePageCount:Hi,footerTotalRowCount:Bi,handleFooterPageIndexChange:$i,handleFooterPageSizeChange:Ui,isPageCountKnown:Ki,renderedRows:rn,reorderColumn:ji,rowsToRender:Gi,sentinelRef:ln,table:Z,virtualPaddingBottom:Qi,virtualPaddingTop:Wi,visibleLeafColumns:vt}=no({autoResetPageIndex:false,columnResizeMode:zo,currentColumnFilters:ja,currentColumnOrder:ft,currentColumnPinning:Ga,currentColumnSizing:Qa,currentExpanded:Tt,currentPagination:Wa,currentRowSelection:Ja,currentSorting:qa,defaultColumn:F$1,effectiveColumnVisibility:Zt,enableColumnResizing:Ut,enableRowSelection:ye,getRowCanExpand:Je,globalFilterFn:Le,globalFilterValue:Ti,hasNextPage:ue,handleColumnFiltersChange:en,handleColumnOrderChange:hi,handleColumnPinningChange:an,handleColumnVisibilityChange:yi,handleExpandedChange:Ri,infiniteScroll:Ba,manualFiltering:ge,manualPagination:Be,manualSorting:ee,onActionError:Pa,onPageIndexChange:Jt,onPageSizeChange:gi,pageCount:He,pageIndex:Ua,pageSize:Ka,renderExpandedRow:y,setCurrentRowSelection:tn,setCurrentSorting:Si,setLocalColumnSizing:vi,setLocalPagination:Pi,shouldRenderInitialLoading:Rt,tableColumns:_i,tableData:xi,tableGetRowId:ki,tableRef:gt,totalRowCount:We}),sn=mo({columns:w,columnSizing:Qa,editableRows:!!$a,enableRowSelection:ye,hasRowActions:fe.length>0,hasRowExpansion:!!y,layoutMode:Kt,uiClassNames:o,visibleLeafColumns:vt}),{explicitlySizedColumnIds:Xa,fillMinWidth:Ji,getColumnLayout:qi}=sn,Xi=v.useMemo(()=>new Set(w.flatMap((s,H)=>Object.prototype.hasOwnProperty.call(s,"cell")&&typeof s.cell=="function"?[F(s,H)]:[])),[w]),Yi=vt.length,Zi=v.useMemo(()=>({Checkbox:u,Input:g,Skeleton:x,TableCell:k,TableRow:b$1}),[]),er=v.useMemo(()=>w.some(s=>s.meta?.cardTitle),[w]),ar=v.useCallback((s,H)=>{Xa.has(s)||Object.prototype.hasOwnProperty.call(Z.getState().columnSizing,s)||flushSync(()=>{Z.setColumnSizing(Ca=>({...Ca,[s]:H}));});},[Xa,Z]),tr=v.useCallback(s=>{if(Xa.has(s)){Z.getColumn(s)?.resetSize();return}Z.setColumnSizing(H=>{if(!Object.prototype.hasOwnProperty.call(H,s))return H;let Ca={...H};return delete Ca[s],Ca});},[Xa,Z]),dn=Z.getFilteredRowModel().rows.map(s=>s.original),cn=typeof Ye=="function"?Ye({rows:dn,toolbarQueryValue:fa}):Ye,{columnVisibilityOptions:nr,effectiveToolbarActions:un,handleClearColumnFilters:or,handleToolbarColumnFilterChange:ir,handleToolbarColumnPinningChange:rr,toolbarColumnFilters:lr}=Mo({columns:w,currentColumnFilters:ja,currentColumnPinning:Ga,csvExport:ca,effectiveColumnVisibility:Zt,enableColumnFilters:ve,handleColumnFiltersChange:en,handleColumnPinningChange:an,labels:Ge,table:Z,toolbarActions:i,visibleData:Ei}),sr=v.useMemo(()=>un.map(s=>({...s,onClick:H=>{Ie({actionKey:s.key,source:"toolbarAction"},()=>s.onClick(H));}})),[un,Ie]),dr=v.useMemo(()=>$.map(s=>({...s,onClick:H=>{Ie({actionKey:s.key,source:"selectionAction"},()=>s.onClick(H));}})),[Ie,$]),pn=v.useMemo(()=>({sorting:qa,pagination:Wa,rowSelection:Ja,columnVisibility:Yt,columnFilters:ja,expanded:Tt,columnOrder:ft,columnPinning:Ga,columnSizing:Qa,density:ka,viewMode:ga,showHiddenRows:Ct,globalFilter:fa}),[ja,ft,Ga,Qa,Yt,ka,Tt,Wa,Ja,Ct,qa,ga,fa]),Ea=v.useCallback(()=>Wr(pn),[pn]),Ze=v.useCallback(s=>{s.sorting!==void 0&&Z.setSorting(s.sorting),s.pagination!==void 0&&Z.setPagination(s.pagination),s.rowSelection!==void 0&&Z.setRowSelection(s.rowSelection),s.columnVisibility!==void 0&&Z.setColumnVisibility(s.columnVisibility),s.columnFilters!==void 0&&Z.setColumnFilters(s.columnFilters),s.expanded!==void 0&&Z.setExpanded(s.expanded),s.columnOrder!==void 0&&Z.setColumnOrder(s.columnOrder),s.columnPinning!==void 0&&Z.setColumnPinning(s.columnPinning),s.columnSizing!==void 0&&Z.setColumnSizing(s.columnSizing),s.density!==void 0&&Dt(s.density),s.viewMode!==void 0&&ht(s.viewMode),s.showHiddenRows!==void 0&&wt(s.showHiddenRows),s.globalFilter!==void 0&&yt(s.globalFilter);},[Dt,wt,ht,yt,Z]),Ta=v.useCallback(()=>lo(ra??ua),[ua,ra]),mn=v.useCallback(s=>{s?.clearPersistence&&Ta(),Ze({columnVisibility:Y?.columnVisibility??{},columnOrder:Y?.columnOrder??[],columnPinning:Y?.columnPinning??E(w),columnSizing:Y?.columnSizing??{}});},[Ta,w,Y,Ze]),bn=v.useCallback(s=>{s?.clearPersistence&&Ta(),Ze({sorting:Y?.sorting??[],pagination:Y?.pagination??{pageIndex:0,pageSize:ie[0]??20},rowSelection:Y?.rowSelection??{},columnVisibility:Y?.columnVisibility??{},columnFilters:Y?.columnFilters??[],expanded:Y?.expanded??{},columnOrder:Y?.columnOrder??[],columnPinning:Y?.columnPinning??E(w),columnSizing:Y?.columnSizing??{},density:Y?.density??"comfortable",viewMode:Y?.viewMode??"table",showHiddenRows:Y?.showHiddenRows??false,globalFilter:Y?.globalFilter??""});},[Ta,w,Y,Ze,ie]),gn=v.useCallback(()=>ha(re),[re]),fn=v.useCallback(s=>vo(re,s,Ea()),[Ea,re]),Tn=v.useCallback(s=>{let H=ha(re).find(Ca=>Ca.id===s);return H?(Ze(H.state),re?.onApply?.(H),true):false},[Ze,re]),Cn=v.useCallback((s,H)=>Po(re,s,H),[re]),Dn=v.useCallback(s=>xo(re,s),[re]),wn=v.useCallback(()=>ko(re),[re]),hn=v.useCallback(s=>D({csvExport:s??(ca||true),labels:Ge,table:Z}),[ca,Ge,Z]);return v.useImperativeHandle(Na,()=>({getTable:()=>gt.current,getState:Ea,snapshot:Ea,restore:Ze,resetColumnLayout:mn,resetState:bn,clearPersistedState:Ta,getSavedViews:gn,createSavedView:fn,applySavedView:Tn,renameSavedView:Cn,deleteSavedView:Dn,clearSavedViews:wn,focus:()=>{xa.current?.focus();},scrollToRow:s=>Ao(xa.current,"row",s),scrollToColumn:s=>Ao(xa.current,"column",s),exportCsv:hn}),[Tn,Ta,wn,fn,Dn,hn,gn,Ea,Cn,mn,bn,Ze]),jsx(m,{children:jsxs("div",{ref:xa,"data-dtp-slot":"data-table-root","data-density":ka,dir:_o,tabIndex:-1,className:a("@container/data-table data-table-container-query flex flex-col",ma?"h-full min-h-0 flex-1":"grow",c),onDragEnter:ba?.onDragEnter,onDragOver:ba?.onDragOver,onDragLeave:ba?.onDragLeave,onDrop:ba?.onDrop,children:[je?jsx("input",{ref:Qt,className:"hidden",type:"file",accept:je.accept,multiple:je.multiple??true,disabled:je.disabled,onChange:s=>{let H=s.currentTarget.files;H?.length&&Oi(H),s.currentTarget.value="";}}):null,jsx("div",{"data-dtp-slot":"data-table-layout",className:a("flex w-full flex-col",ma?"min-h-0 flex-1":"grow"),children:jsxs("div",{"data-dtp-slot":"data-table-main",className:a("flex w-full flex-col gap-4",ma?"min-h-0 flex-1":"grow",Bo),children:[Oo?jsx(Xn,{allRows:dn,columnFilters:lr,columnVisibilityOptions:nr,compactToolbar:M$1,customToolbar:we,DataTableToolbar:N,density:ka,description:A,effectiveToolbarActions:sr,enableColumnPinning:ya,enableDensityToggle:lt,enableViewToggle:ct&&!!pa,hiddenRowsLabel:Fe?.label,labels:Ge,onClearColumnFilters:or,onColumnFilterChange:ir,onColumnPinningChange:rr,onDensityChange:Dt,onShowHiddenRowsChange:wt,onToolbarQueryValueChange:yt,onViewModeChange:ht,openFileDialog:je?Li:void 0,selectedRows:wi,selectionActions:dr,showHiddenRows:Ct,table:Z,title:oe,toolbarQueryPlaceholder:Di,toolbarQueryValue:fa,toolbarVisibility:Ho,viewMode:ga}):null,jsx("div",{"data-dtp-slot":"data-table-content",className:a(ma?"flex min-h-0 flex-1 flex-col":""),children:ga==="card"&&pa?jsx(n,{cardClassName:La,cardGridClassName:Xe,cardSizing:st,cardRenderer:pa,currentRowSelection:Ja,DataTableCardView:U,DataTableEmptyState:C,dragAndDrop:ba,editableRows:$a,editingRowId:St,emptyNode:cn,enableRowSelection:ye,flexGrow:ma,getRowClassName:Gt,hasCardTitle:er,infiniteScroll:Ba,localSearchValue:fa,onRowClick:Xt,renderedRows:rn,renderExpandedRow:y,resolvedLabels:Ge,resolvedLoadingRowCount:Ci,rowActions:qt,ScrollArea:f,sentinelRef:ln,setCurrentRowSelection:tn,setEditingRowId:zi,shouldRenderInitialLoading:Rt,tableContainerClassName:jt,uiClassNames:o,virtualization:bt}):jsx(t,{bodyRowComponents:Zi,columnLayouts:sn.columnLayouts,currentDensity:ka,currentSorting:qa,DataTableEmptyState:C,dragAndDrop:ba,draggedColumnIdRef:Uo,draftValues:Ai,editingRowId:St,emptyNode:cn,enableColumnReordering:Re,enableColumnResizing:Ut,explicitCustomCellColumnIds:Xi,fillMinWidth:Ji,flexGrow:ma,getColumnLayout:qi,getRowClassName:Gt,getRowLoadingState:_,infiniteScroll:Ba,layoutMode:Kt,localSearchValue:fa,onRowClick:Xt,primeColumnForResize:ar,renderedRows:rn,renderExpandedRow:y,reorderColumn:ji,resetColumnSize:tr,resolvedLabels:Ge,rowsToRender:Gi,ScrollArea:f,ScrollBar:P,sentinelRef:ln,setDraftValues:Ii,shouldRenderInitialLoading:Rt,stickyHeader:No,summaryRows:va,table:Z,tableClassName:$o,tableContainerClassName:jt,Table:S,TableBody:R,TableCell:k,TableFooter:E$1,TableHead:O,TableHeader:T,TableRow:b$1,tableScrollContainerRef:Wt,tableScrollElement:nn,uiClassNames:o,viewportHeight:on,virtualization:bt,virtualPaddingBottom:Qi,virtualPaddingTop:Wi,visibleLeafColumnCount:Yi,visibleLeafColumns:vt})}),jsx(Jn,{currentPagination:Wa,DataTableFooter:z,effectivePageCount:Hi,footerTotalRowCount:Bi,handleFooterPageIndexChange:$i,handleFooterPageSizeChange:Ui,labels:Ge,pageCountKnown:Ki,rowsPerPageOptions:ie,showFooter:Lo&&!Ba?.enabled,children:ae})]})})]})})}}function jr(e,a,n){let t;try{t=e();}catch(o){n?.({...a,error:o});return}Promise.resolve(t).catch(o=>{n?.({...a,error:o});});}function Me(e,a,n){let t=v.useCallback(o=>{a?.(o),n?.(c=>({...c,[e]:o}));},[e,a,n]);return a||n?t:void 0}function Gr(e,a){let n=v.useRef(new Set);v.useEffect(()=>{if(!(!e||!Qr()))for(let t of Object.keys(a))e[t]===void 0||!a[t]||n.current.has(t)||(n.current.add(t),console.warn(`[data-table-pro] Both state.${t} and its legacy controlled prop were provided. The legacy prop takes precedence during the 4.x compatibility window.`));},[a,e]);}function Qr(){return globalThis.process?.env?.NODE_ENV!=="production"}function Wr(e){return {sorting:e.sorting.map(a=>({...a})),pagination:{...e.pagination},rowSelection:{...e.rowSelection},columnVisibility:{...e.columnVisibility},columnFilters:e.columnFilters.map(a=>({...a})),expanded:typeof e.expanded=="boolean"?e.expanded:{...e.expanded},columnOrder:[...e.columnOrder],columnPinning:{left:e.columnPinning.left?[...e.columnPinning.left]:void 0,right:e.columnPinning.right?[...e.columnPinning.right]:void 0},columnSizing:{...e.columnSizing},density:e.density,viewMode:e.viewMode,showHiddenRows:e.showHiddenRows,globalFilter:e.globalFilter}}function Ao(e,a,n){if(!e)return false;let t=a==="row"?"data-row-id":"data-column-id",o=Array.from(e.querySelectorAll(`[${t}]`)).find(c=>c.getAttribute(t)===n);return o?(o.scrollIntoView?.({block:"nearest",inline:"nearest"}),true):false}export{Wn as a,Jn as b,Xn as c,Zn as d,no as e,Ee as f,uo as g,mo as h,xs as i,Kr as j};//# sourceMappingURL=chunk-3CYYXB7K.js.map -//# sourceMappingURL=chunk-3CYYXB7K.js.map \ No newline at end of file diff --git a/dist/chunk-3CYYXB7K.js.map b/dist/chunk-3CYYXB7K.js.map deleted file mode 100644 index a50a31f..0000000 --- a/dist/chunk-3CYYXB7K.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/core/data-table/data-table-base-card-panel.tsx","../src/core/data-table/data-table-card-panel.tsx","../src/core/data-table/data-table-footer-section.tsx","../src/core/data-table/data-table-toolbar-section.tsx","../src/core/data-table/data-table-labels.ts","../src/core/data-table/use-data-table-columns.tsx","../src/core/data-table/use-data-table-infinite-scroll.ts","../src/core/data-table/use-data-table-pagination-clamp.ts","../src/core/data-table/use-data-table-instance.ts","../src/core/data-table/use-controllable-state.ts","../src/core/data-table/use-data-table-column-prefs.ts","../src/core/data-table/use-data-table-state.ts","../src/core/data-table/use-column-layout.ts","../src/core/data-table/create-data-table-card-view.tsx","../src/core/data-table/create-data-table-empty-state.tsx","../src/core/data-table/create-data-table-pagination.tsx","../src/core/data-table/create-data-table-row-actions.tsx","../src/core/data-table/create-data-table-toolbar.tsx","../src/core/data-table/data-table-table-panel-router.tsx","../src/core/data-table/data-table-saved-views.ts","../src/core/data-table/use-data-table-toolbar-features.ts","../src/core/data-table/create-data-table.tsx"],"names":["DataTableBaseCardPanel","cardClassName","cardGridClassName","cardSizing","cardRenderer","currentRowSelection","DataTableCardView","DataTableEmptyState","dragAndDrop","editableRows","editingRowId","emptyNode","enableRowSelection","flexGrow","getRowClassName","hasCardTitle","infiniteScroll","localSearchValue","onRowClick","renderedRows","renderExpandedRow","resolvedLabels","resolvedLoadingRowCount","rowActions","ScrollArea","sentinelRef","setCurrentRowSelection","setEditingRowId","shouldRenderInitialLoading","tableContainerClassName","uiClassNames","shouldRenderCards","cardScrollContainerRef","Qn","renderCardView","rows","options","jsx","cn","jsxs","LazyDataTableVirtualCardPanel","tt","DataTableCardPanel","props","DataTableFooterSection","children","currentPagination","DataTableFooter","effectivePageCount","footerTotalRowCount","handleFooterPageIndexChange","handleFooterPageSizeChange","labels","pageCountKnown","rowsPerPageOptions","showFooter","DataTableToolbarSection","allRows","columnFilters","columnVisibilityOptions","compactToolbar","customToolbar","DataTableToolbar","description","effectiveToolbarActions","enableColumnPinning","enableDensityToggle","enableViewToggle","hiddenRowsLabel","onClearColumnFilters","onColumnFilterChange","onColumnPinningChange","onDensityChange","onShowHiddenRowsChange","onToolbarQueryValueChange","onViewModeChange","openFileDialog","selectedRows","selectionActions","showHiddenRows","table","title","toolbarQueryPlaceholder","toolbarQueryValue","toolbarVisibility","density","viewMode","columnId","visible","DATA_TABLE_DEFAULT_LABELS","count","label","pageIndex","pageCount","rowId","resolveDataTableLabels","useDataTableColumns","Button","Checkbox","DataTableRowActions","Tooltip","TooltipContent","TooltipTrigger","cancelEditing","columns","getRowCanExpand","isSavingEdit","lastSelectedRowIdRef","saveEdit","startEditingRow","tableRef","selectRowRange","nt","targetRowId","selected","tableInstance","row","isDataTableLoadingRow","startIndex","endIndex","from","to","current","next","defs","UTILITY_COLUMN_SIZE","isExpanded","IconChevronDown","checked","event","column","decorateFilterableColumn","useDataTableInfiniteScroll","enabled","hasMore","isLoadingMore","onLoadMore","onError","ea","isRequestInFlightRef","onLoadMoreEvent","onErrorEvent","error","target","observer","entries","result","useDataTablePaginationClamp","maxPageIndex","onPageIndexChange","setLocalPageIndex","ao","nextPageIndex","useDataTableInstance","autoResetPageIndex","columnResizeMode","currentColumnFilters","currentColumnOrder","currentColumnPinning","currentColumnSizing","currentExpanded","currentSorting","defaultColumn","effectiveColumnVisibility","enableColumnResizing","globalFilterFn","globalFilterValue","hasNextPage","handleColumnFiltersChange","handleColumnOrderChange","handleColumnPinningChange","handleColumnVisibilityChange","handleExpandedChange","manualFiltering","manualPagination","manualSorting","onActionError","onPageSizeChange","pageSize","setCurrentSorting","setLocalColumnSizing","setLocalPagination","tableColumns","tableData","tableGetRowId","totalRowCount","generatedColumnIds","ke","index","getColumnId","effectiveColumnOrder","columnIds","dataColumnIds","isUtilityColumnId","dataColumnIdSet","orderedDataColumnIds","unorderedDataColumnIds","effectiveColumnPinning","columnIdSet","dataLeft","dataRight","tableState","handlePaginationChange","updater","nextValue","handleColumnSizingChange","useReactTable","getCoreRowModel","getFilteredRowModel","getSortedRowModel","getExpandedRowModel","getPaginationRowModel","dataTableGlobalFilterFn","visibleLeafColumns","reorderColumn","sourceColumnId","targetColumnId","defaultOrder","nextOrder","moveColumnInOrder","rowsToRender","rowIndex","usesManualRows","derivedTotalRowCount","effectiveTotalRowCount","isPageCountKnown","nextPageSize","useControllableState","defaultValue","onChange","value","uncontrolledValue","setUncontrolledValue","aa","currentValue","currentValueRef","setValue","STORAGE_PREFIX","DEFAULT_VERSION","ALL_SLICES","readDataTableColumnPrefs","input","config","resolvePersistenceConfig","storage","resolveStorage","storageKey","getStorageKey","parsed","targetVersion","candidate","isPersistencePayload","selectPersistenceSlices","validateDataTableColumnPrefs","clearDataTableColumnPrefs","usePersistDataTableColumnPrefs","key","persistence","prefs","version","debounceMs","selectedState","serialized","da","payload","operation","write","timeout","isRecord","slices","slice","visibility","validateBooleanRecord","sizing","validateSizingRecord","order","validateStringArray","left","right","isDataTableDensity","entry","item","useDataTableState","columnOrder","columnPinning","columnSizing","columnPrefsKey","columnVisibility","data","enableToolbarQueryFiltering","expanded","getRowId","hiddenRows","initialState","isLoading","loadingRowCount","onColumnFiltersChange","onColumnOrderChange","onColumnSizingChange","onColumnVisibilityChange","onExpandedChange","onRowSelectionChange","onSortingChange","rowSelection","sorting","toolbarQueryDebounceMs","containerRef","persistenceConfig","Q","persistedColumnPrefs","localPagination","currentColumnVisibility","setCurrentColumnVisibility","setCurrentColumnFilters","setCurrentExpanded","setCurrentColumnOrder","setCurrentColumnPinning","getInitialColumnPinning","setCurrentColumnSizing","currentViewMode","setCurrentViewMode","currentShowHiddenRows","setCurrentShowHiddenRows","currentDensity","setCurrentDensity","resolvedToolbarQueryValue","resolvedToolbarQueryPlaceholder","resolvedToolbarQueryDebounceMs","setLocalSearchValue","containerWidth","useDataTableContainerWidth","hasOnSearchValueChange","lastReportedSearchValueRef","onToolbarQueryValueChangeEvent","handleViewModeChange","nextViewMode","handleShowHiddenRowsChange","nextShowHiddenRows","handleDensityChange","nextDensity","resetPageIndexForFilterChange","filterResetSignature","lastFilterResetSignatureRef","responsiveColumnVisibility","isHiddenAtContainerWidth","visibleData","isRowVisible","loadingRows","createDataTableLoadingRows","getDataTableLoadingRowId","shouldResolveSelectedRows","rowById","EMPTY_COLUMN_LAYOUT","useColumnLayout","hasRowActions","hasRowExpansion","layoutMode","explicitlySizedColumnIds","ze","ids","minimumColumnWidths","widths","configuredMinWidth","getConfiguredColumnMinWidth","pinnedColumns","leftOffset","getFixedSide","getColumnLayoutSize","rightOffset","fillColumnId","dataColumns","fixedWidthColumnIds","columnLayouts","layouts","isSelectionColumn","isExpansionColumn","isActionsColumn","isUtilityColumn","isSpacerColumn","isFlexibleFillColumn","columnMinWidth","shouldFixWidth","baseStyle","fixedSide","pinnedStyle","cellStyle","getPinnedColumnClassName","fillMinWidth","total","layout","getColumnLayout","createDataTableCardView","ui","Card","CardContent","CardHeader","Skeleton","onEditingRowIdChange","getRowDraggable","onRowDragStart","onRowDragEnd","resolvedCardSizing","resolvedCardGridClassName","getCardGridClassName","cardGridClasses","cardItemClasses","stateClassName","getCardItemClassName","_","originalRow","isSelected","isEditing","hasCardActions","showCardGradient","showCardOverlayControls","handleCardActivate","getCardRendererClassName","updateRowSelection","nextSelection","createDataTableEmptyState","Empty","EmptyContent","EmptyDescription","EmptyHeader","EmptyMedia","EmptyTitle","IconInbox","createDataTablePagination","Pagination","PaginationContent","PaginationEllipsis","PaginationFirst","PaginationItem","PaginationLast","PaginationLink","PaginationNext","PaginationPrevious","Select","SelectContent","SelectGroup","SelectItem","SelectTrigger","SelectValue","DataTablePagination","pages","getVisiblePages","canGoPrevious","canGoNext","lastPageIndex","option","IconDatabase","currentPageIndex","currentPage","page","orderedPages","items","previous","createDataTableRowActions","DropdownMenu","DropdownMenuContent","DropdownMenuGroup","DropdownMenuItem","DropdownMenuSeparator","DropdownMenuTrigger","onStartEditing","onCancelEditing","actions","action","canUseRowAction","stopRowClickPropagation","Do","IconX","allowEdit","canEditRow","IconDots","IconEdit","Icon","resolveRowActionLabel","createDataTableToolbar","ButtonGroup","DropdownMenuCheckboxItem","DropdownMenuLabel","InputGroup","InputGroupAddon","InputGroupInput","toolbarActions","compactSearchInputRef","wa","isCompactSearchVisible","setIsCompactSearchVisible","compactToolbarIconButtonClassName","primaryActions","trailingActions","showTitle","showSearch","showActions","showTrailingActions","showOptions","showViewToggle","showCustomToolbar","hasVisibleTitle","hasVisibleSearch","hasVisiblePrimaryActions","hasVisibleSelectionActions","hasVisibleOptions","hasVisibleViewToggle","hasVisibleTrailingActions","hasVisibleCustomToolbar","hasVisibleCompactToolbar","selectedRowCountLabel","Fragment","IconSearch","collapsesToIcon","button","disabled","IconAdjustmentsHorizontal","IconList","IconLayoutGrid","filter","ToolbarColumnFilterControl","hasColumnFilterValue","selectedValues","selectedLabel","nextValues","LazyDataTableVirtualTablePanel","rt","DataTableTablePanelRouter","DataTableTablePanel","DEFAULT_SLICES","fallbackId","readDataTableSavedViews","view","validateSavedView","createDataTableSavedView","name","state","normalizedName","now","createSavedViewId","selectSavedViewSlices","views","writeViews","cloneSavedView","renameDataTableSavedView","id","renamed","deleteDataTableSavedView","clearDataTableSavedViews","snapshots","snapshot","cloneStateSlice","validateState","validateSorting","pagination","validatePagination","filters","validateFilters","pinning","validatePinning","useDataTableToolbarFeatures","enableColumnFilters","csvExport","Qe","header","accessorKey","getAccessorKey","startCase","pinned","toolbarColumnFilters","rawOptions","normalizeColumnFilterOptions","handleToolbarColumnFilterChange","hasFilterValue","handleClearColumnFilters","handleToolbarColumnPinningChange","side","handleCsvExport","exportDataTableCsv","IconDownload","createDataTable","createDataTableWithPanels","rootClassName","Input","ScrollBar","Table","TableBody","TableCell","TableFooter","TableHead","TableHeader","TableRow","TooltipProvider","enableColumnReordering","savedViews","unifiedState","onStateChange","apiRef","summaryRows","emptyState","getRowLoadingState","stickyHeader","showToolbar","dir","className","tableClassName","fileUpload","virtualization","fileInputRef","tableScrollContainerRef","draggedColumnIdRef","resolvedSorting","resolvedPageIndex","resolvedPageSize","resolvedRowSelection","resolvedColumnVisibility","resolvedColumnFilters","resolvedExpanded","resolvedColumnOrder","resolvedColumnPinning","resolvedColumnSizing","resolvedDensity","resolvedViewMode","resolvedShowHiddenRows","useDataTableStateConflictWarnings","handleToolbarQueryValueChange","useDataTableStateSliceChange","handleSortingPropChange","handleRowSelectionPropChange","handleColumnVisibilityPropChange","handleColumnFiltersPropChange","handleExpandedPropChange","handleColumnOrderPropChange","handleColumnPinningPropChange","handleColumnSizingPropChange","handleDensityPropChange","handleViewModePropChange","handleShowHiddenRowsPropChange","handlePageIndexPropChange","handlePageSizePropChange","runAction","context","runDataTableAction","guardedRowActions","guardedOnRowClick","handleEditError","draftValues","setDraftValues","useRowEditing","tableScrollElement","viewportHeight","useDataTableScrollViewport","handleSelectedFiles","files","virtualPaddingBottom","virtualPaddingTop","columnLayout","explicitCustomCellColumnIds","visibleLeafColumnCount","bodyRowComponents","primeColumnForResize","currentSize","flushSync","resetColumnSize","filteredData","guardedToolbarActions","guardedSelectionActions","currentDataTableState","getCurrentState","cloneDataTableState","restoreState","nextState","clearPersistedState","resetColumnLayout","resetState","getSavedViews","createSavedView","applySavedView","renameSavedView","deleteSavedView","clearSavedViews","exportCsvFromApi","scrollDataTableElementIntoView","onLegacyChange","handleChange","legacySlices","warnedSlicesRef","isDevelopmentEnvironment","container","kind","attribute","element"],"mappings":"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","file":"chunk-3CYYXB7K.js","sourcesContent":["import * as React from \"react\";\nimport type { Row } from \"@tanstack/react-table\";\nimport { cn } from \"../../lib/utils\";\nimport type { DataTableCardPanelProps } from \"./data-table-card-panel-types\";\n\nexport function DataTableBaseCardPanel({\n cardClassName,\n cardGridClassName,\n cardSizing,\n cardRenderer,\n currentRowSelection,\n DataTableCardView,\n DataTableEmptyState,\n dragAndDrop,\n editableRows,\n editingRowId,\n emptyNode,\n enableRowSelection,\n flexGrow,\n getRowClassName,\n hasCardTitle,\n infiniteScroll,\n localSearchValue,\n onRowClick,\n renderedRows,\n renderExpandedRow,\n resolvedLabels,\n resolvedLoadingRowCount,\n rowActions = [],\n ScrollArea,\n sentinelRef,\n setCurrentRowSelection,\n setEditingRowId,\n shouldRenderInitialLoading,\n tableContainerClassName,\n uiClassNames,\n}: DataTableCardPanelProps) {\n const shouldRenderCards =\n shouldRenderInitialLoading || renderedRows.length > 0;\n const cardScrollContainerRef = React.useRef(null);\n\n const renderCardView = (\n rows: Array>,\n options?: {\n isLoading?: boolean;\n loadingRowCount?: number;\n },\n ) => (\n \n );\n\n return (\n \n \n \n {shouldRenderCards ? (\n shouldRenderInitialLoading ? (\n renderCardView([], {\n isLoading: true,\n loadingRowCount: resolvedLoadingRowCount,\n })\n ) : (\n renderCardView(renderedRows)\n )\n ) : (\n
\n {emptyNode ?? (\n \n )}\n
\n )}\n\n {infiniteScroll?.enabled && !shouldRenderInitialLoading ? (\n
\n
\n
\n ) : null}\n
\n \n \n );\n}\n","import * as React from \"react\";\nimport { DataTableBaseCardPanel } from \"./data-table-base-card-panel\";\nimport type { DataTableCardPanelProps } from \"./data-table-card-panel-types\";\n\nconst LazyDataTableVirtualCardPanel = React.lazy(async () => {\n const module = await import(\"./data-table-virtual-card-panel\");\n return { default: module.DataTableVirtualCardPanel };\n}) as unknown as typeof DataTableBaseCardPanel;\n\nexport function DataTableCardPanel(\n props: DataTableCardPanelProps,\n) {\n const config =\n typeof props.virtualization === \"object\"\n ? props.virtualization.card\n : undefined;\n\n if (config?.enabled !== true) {\n return ;\n }\n\n return (\n }>\n \n \n );\n}\n\nexport type { DataTableCardPanelProps };\n","import * as React from \"react\";\nimport type { PaginationState } from \"@tanstack/react-table\";\nimport type { DataTableLabels } from \"../types\";\n\ntype DataTableFooterSectionProps = {\n children?: React.ReactNode;\n currentPagination: PaginationState;\n DataTableFooter: React.ElementType;\n effectivePageCount: number;\n footerTotalRowCount: number | undefined;\n handleFooterPageIndexChange: (pageIndex: number) => void;\n handleFooterPageSizeChange: (pageSize: number) => void;\n labels: DataTableLabels;\n pageCountKnown?: boolean;\n rowsPerPageOptions: Array;\n showFooter: boolean;\n};\n\nexport function DataTableFooterSection({\n children,\n currentPagination,\n DataTableFooter,\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n labels,\n pageCountKnown = true,\n rowsPerPageOptions,\n showFooter,\n}: DataTableFooterSectionProps) {\n if (!showFooter && !children) {\n return null;\n }\n\n return (\n
\n {showFooter ? (\n \n ) : null}\n {children}\n
\n );\n}\n","import * as React from \"react\";\nimport type { Table as TanStackTable } from \"@tanstack/react-table\";\nimport type { DataTableLabels, DataTableProps } from \"../types\";\n\ntype DataTableToolbarSectionProps = {\n allRows: Array;\n columnFilters: Array;\n columnVisibilityOptions: Array;\n compactToolbar: React.ReactNode;\n customToolbar: React.ReactNode;\n DataTableToolbar: React.ElementType;\n description: string | undefined;\n effectiveToolbarActions: Array;\n enableColumnPinning: boolean;\n enableDensityToggle: boolean;\n enableViewToggle: boolean;\n hiddenRowsLabel: string | undefined;\n labels: DataTableLabels;\n onClearColumnFilters: () => void;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n onColumnPinningChange: (columnId: string, side: \"left\" | \"right\" | false) => void;\n onDensityChange: (density: \"compact\" | \"comfortable\" | \"spacious\") => void;\n onShowHiddenRowsChange: (showHiddenRows: boolean) => void;\n onToolbarQueryValueChange: (value: string) => void;\n onViewModeChange: (viewMode: \"table\" | \"card\") => void;\n openFileDialog: (() => void) | undefined;\n selectedRows: Array;\n selectionActions: DataTableProps[\"selectionActions\"];\n showHiddenRows: boolean;\n table: TanStackTable;\n title: string | undefined;\n toolbarQueryPlaceholder: string;\n toolbarQueryValue: string;\n toolbarVisibility: DataTableProps[\"toolbarVisibility\"];\n density: \"compact\" | \"comfortable\" | \"spacious\";\n viewMode: \"table\" | \"card\";\n};\n\nexport function DataTableToolbarSection({\n allRows,\n columnFilters,\n columnVisibilityOptions,\n compactToolbar,\n customToolbar,\n DataTableToolbar,\n description,\n effectiveToolbarActions,\n enableColumnPinning,\n enableDensityToggle,\n enableViewToggle,\n hiddenRowsLabel,\n labels,\n onClearColumnFilters,\n onColumnFilterChange,\n onColumnPinningChange,\n onDensityChange,\n onShowHiddenRowsChange,\n onToolbarQueryValueChange,\n onViewModeChange,\n openFileDialog,\n selectedRows,\n selectionActions,\n showHiddenRows,\n table,\n title,\n toolbarQueryPlaceholder,\n toolbarQueryValue,\n toolbarVisibility,\n density,\n viewMode,\n}: DataTableToolbarSectionProps) {\n return (\n
\n {\n table.getColumn(columnId)?.toggleVisibility(visible);\n }}\n enableColumnPinning={enableColumnPinning}\n onColumnPinningChange={onColumnPinningChange}\n columnFilters={columnFilters}\n onColumnFilterChange={onColumnFilterChange}\n onClearColumnFilters={onClearColumnFilters}\n density={density}\n onDensityChange={onDensityChange}\n enableDensityToggle={enableDensityToggle}\n labels={labels}\n toolbarVisibility={toolbarVisibility}\n openFileDialog={openFileDialog}\n />\n
\n );\n}\n","import type { DataTableLabels } from \"../types\";\n\ntype ResolvedDataTableLabels = Required;\n\nexport const DATA_TABLE_DEFAULT_LABELS: ResolvedDataTableLabels = {\n searchPlaceholder: \"Search rows...\",\n searchTable: \"Search table\",\n clearSearch: \"Clear search\",\n noRowsTitle: \"No rows yet\",\n noRowsDescription: \"Create a record or refresh this view once data exists.\",\n noMatchingRowsTitle: \"No matching rows\",\n noMatchingRowsDescription: \"Try a different search term or clear filters.\",\n tableOptions: \"Show table options\",\n columns: \"Columns\",\n filters: \"Filters\",\n clearFilters: \"Clear filters\",\n selectedRows: (count) =>\n `${count} record${count === 1 ? \"\" : \"s\"} selected`,\n showHiddenRows: (label) => `Show ${label}`,\n recordsPerPage: \"Records per page\",\n totalRecords: (count) => `Total records: ${count}`,\n pageStatus: (pageIndex, pageCount) => `Page ${pageIndex + 1} of ${pageCount}`,\n pageStatusUnknown: (pageIndex) => `Page ${pageIndex + 1}`,\n pagination: \"Pagination\",\n morePages: \"More pages\",\n firstPage: \"First page\",\n previousPage: \"Previous page\",\n nextPage: \"Next page\",\n lastPage: \"Last page\",\n selectAllVisibleRows: \"Select all visible rows\",\n selectRow: \"Select row\",\n selectCardRow: (rowId) => `Select row ${rowId}`,\n switchToTableView: \"Switch to table view\",\n switchToCardView: \"Switch to card view\",\n tableView: \"Table view\",\n cardView: \"Card view\",\n allFilterOptions: \"All\",\n actions: \"Actions\",\n rowActions: \"Row actions\",\n editRow: \"Edit row\",\n saveEdit: \"Save\",\n cancelEdit: \"Cancel editing\",\n expandRow: \"Expand row\",\n collapseRow: \"Collapse row\",\n exportCsv: \"Export CSV\",\n density: \"Density\",\n compactDensity: \"Compact\",\n comfortableDensity: \"Comfortable\",\n spaciousDensity: \"Spacious\",\n pinLeft: \"Pin left\",\n pinRight: \"Pin right\",\n unpin: \"Unpin\",\n};\n\nexport function resolveDataTableLabels(\n labels?: Partial,\n): ResolvedDataTableLabels {\n return {\n ...DATA_TABLE_DEFAULT_LABELS,\n ...labels,\n } as ResolvedDataTableLabels;\n}\n","import * as React from \"react\";\nimport type { ColumnDef, Table as TanStackTable } from \"@tanstack/react-table\";\nimport { IconChevronDown } from \"../icons\";\nimport type {\n DataTableEditableRowsConfig,\n DataTableLabels,\n DataTableProps,\n DataTableRowAction,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport {\n UTILITY_COLUMN_SIZE,\n decorateFilterableColumn,\n isDataTableLoadingRow,\n} from \"./data-table-utils\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\ntype DataTableRowActionsComponentProps = {\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n labels: DataTableLabels;\n onCancelEditing: () => void;\n onStartEditing: () => void;\n row: TData;\n rowActions: Array>;\n};\n\nexport function useDataTableColumns({\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n editingRowId,\n enableRowSelection,\n getRowCanExpand,\n isSavingEdit,\n labels,\n lastSelectedRowIdRef,\n renderExpandedRow,\n rowActions,\n saveEdit,\n startEditingRow,\n tableRef,\n}: {\n Button: DataTableUiKit[\"Button\"];\n Checkbox: DataTableUiKit[\"Checkbox\"];\n DataTableRowActions: React.ComponentType<\n DataTableRowActionsComponentProps\n >;\n Tooltip: DataTableUiKit[\"Tooltip\"];\n TooltipContent: DataTableUiKit[\"TooltipContent\"];\n TooltipTrigger: DataTableUiKit[\"TooltipTrigger\"];\n cancelEditing: () => void;\n columns: DataTableProps[\"columns\"];\n editableRows: DataTableProps[\"editableRows\"];\n editingRowId: string | null;\n enableRowSelection: boolean;\n getRowCanExpand: DataTableProps[\"getRowCanExpand\"];\n isSavingEdit: boolean;\n labels: DataTableLabels;\n lastSelectedRowIdRef: React.MutableRefObject;\n renderExpandedRow: DataTableProps[\"renderExpandedRow\"];\n rowActions: Array>;\n saveEdit: (row: TData) => Promise;\n startEditingRow: (row: TData, rowId: string) => void;\n tableRef: React.RefObject | null>;\n}) {\n const selectRowRange = React.useCallback(\n (targetRowId: string, selected: boolean) => {\n const tableInstance = tableRef.current;\n if (!tableInstance || !lastSelectedRowIdRef.current) {\n return;\n }\n\n const rows = tableInstance\n .getRowModel()\n .rows.filter((row) => !isDataTableLoadingRow(row.original));\n const startIndex = rows.findIndex(\n (row) => row.id === lastSelectedRowIdRef.current,\n );\n const endIndex = rows.findIndex((row) => row.id === targetRowId);\n\n if (startIndex < 0 || endIndex < 0) {\n return;\n }\n\n const from = Math.min(startIndex, endIndex);\n const to = Math.max(startIndex, endIndex);\n tableInstance.setRowSelection((current) => {\n const next = { ...current };\n for (const row of rows.slice(from, to + 1)) {\n if (selected) {\n next[row.id] = true;\n } else {\n delete next[row.id];\n }\n }\n return next;\n });\n },\n [lastSelectedRowIdRef, tableRef],\n );\n\n return React.useMemo>>(() => {\n const defs: Array> = [];\n\n if (renderExpandedRow) {\n defs.push({\n id: \"__expand__\",\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n size: UTILITY_COLUMN_SIZE,\n minSize: UTILITY_COLUMN_SIZE,\n maxSize: UTILITY_COLUMN_SIZE,\n header: () => {labels.expandRow},\n cell: ({ row }) => {\n const canExpand =\n getRowCanExpand?.(row.original) ?? Boolean(renderExpandedRow);\n if (!canExpand) {\n return null;\n }\n\n const isExpanded = row.getIsExpanded();\n return (\n
\n row.toggleExpanded()}\n >\n \n \n
\n );\n },\n });\n }\n\n if (enableRowSelection) {\n defs.push({\n id: \"__select__\",\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n size: UTILITY_COLUMN_SIZE,\n minSize: UTILITY_COLUMN_SIZE,\n maxSize: UTILITY_COLUMN_SIZE,\n header: ({ table }) => (\n
\n {\n table.toggleAllPageRowsSelected(checked === true);\n }}\n aria-label={\n labels.selectAllVisibleRows ??\n DATA_TABLE_DEFAULT_LABELS.selectAllVisibleRows\n }\n />\n
\n ),\n cell: ({ row }) => (\n
\n ) => {\n if (!event.shiftKey || !lastSelectedRowIdRef.current) {\n lastSelectedRowIdRef.current = row.id;\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n selectRowRange(row.id, !row.getIsSelected());\n lastSelectedRowIdRef.current = row.id;\n }}\n onCheckedChange={(checked: boolean | \"indeterminate\") => {\n lastSelectedRowIdRef.current = row.id;\n row.toggleSelected(checked === true);\n }}\n aria-label={\n labels.selectRow ?? DATA_TABLE_DEFAULT_LABELS.selectRow\n }\n />\n
\n ),\n });\n }\n\n defs.push(...columns.map((column) => decorateFilterableColumn(column)));\n\n if (rowActions.length || editableRows) {\n defs.push({\n id: \"__actions__\",\n enableSorting: false,\n enableResizing: false,\n enableHiding: false,\n size: UTILITY_COLUMN_SIZE,\n minSize: UTILITY_COLUMN_SIZE,\n maxSize: UTILITY_COLUMN_SIZE,\n header: () => {labels.actions},\n cell: ({ row }) => {\n const rowId = row.id;\n const isEditing = editingRowId === rowId;\n\n if (isEditing) {\n return (\n
\n {\n void saveEdit(row.original);\n }}\n >\n {labels.saveEdit}\n \n \n \n \n \n {labels.cancelEdit}\n \n \n {labels.cancelEdit}\n \n
\n );\n }\n\n return (\n
\n {\n startEditingRow(row.original, row.id);\n }}\n onCancelEditing={() => {}}\n labels={labels}\n />\n
\n );\n },\n });\n }\n\n return defs;\n }, [\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n editingRowId,\n enableRowSelection,\n getRowCanExpand,\n isSavingEdit,\n labels,\n lastSelectedRowIdRef,\n renderExpandedRow,\n rowActions,\n saveEdit,\n selectRowRange,\n startEditingRow,\n ]);\n}\n","import * as React from \"react\";\n\nexport function useDataTableInfiniteScroll({\n enabled,\n hasMore,\n isLoadingMore,\n onLoadMore,\n onError,\n}: {\n enabled: boolean;\n hasMore: boolean;\n isLoadingMore?: boolean;\n onLoadMore: () => void | Promise;\n onError?: (error: unknown) => void;\n}) {\n const sentinelRef = React.useRef(null);\n const isRequestInFlightRef = React.useRef(false);\n const onLoadMoreEvent = React.useEffectEvent(onLoadMore);\n const onErrorEvent = React.useEffectEvent((error: unknown) => {\n onError?.(error);\n });\n\n React.useEffect(() => {\n if (!enabled || !hasMore || isLoadingMore) {\n return;\n }\n\n const target = sentinelRef.current;\n if (!target) {\n return;\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n const entry = entries[0];\n if (entry.isIntersecting && !isRequestInFlightRef.current) {\n isRequestInFlightRef.current = true;\n\n let result: void | Promise;\n try {\n result = onLoadMoreEvent();\n } catch (error) {\n isRequestInFlightRef.current = false;\n onErrorEvent(error);\n return;\n }\n\n void Promise.resolve(result)\n .catch((error: unknown) => {\n onErrorEvent(error);\n })\n .finally(() => {\n isRequestInFlightRef.current = false;\n });\n }\n },\n {\n rootMargin: \"200px 0px 200px 0px\",\n },\n );\n\n observer.observe(target);\n\n return () => {\n observer.disconnect();\n };\n }, [enabled, hasMore, isLoadingMore]);\n\n return sentinelRef;\n}\n","import * as React from \"react\";\n\nexport function useDataTablePaginationClamp({\n enabled,\n maxPageIndex,\n onPageIndexChange,\n pageIndex,\n setLocalPageIndex,\n}: {\n enabled: boolean;\n maxPageIndex: number;\n onPageIndexChange?: (pageIndex: number) => void;\n pageIndex: number;\n setLocalPageIndex: (pageIndex: number) => void;\n}) {\n React.useEffect(() => {\n if (!enabled) {\n return;\n }\n\n if (pageIndex >= 0 && pageIndex <= maxPageIndex) {\n return;\n }\n\n const nextPageIndex = Math.min(Math.max(pageIndex, 0), maxPageIndex);\n setLocalPageIndex(nextPageIndex);\n onPageIndexChange?.(nextPageIndex);\n }, [enabled, maxPageIndex, onPageIndexChange, pageIndex, setLocalPageIndex]);\n}\n","import * as React from \"react\";\nimport {\n getCoreRowModel,\n getExpandedRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\";\nimport type {\n ColumnDef,\n ColumnFiltersState,\n ColumnOrderState,\n ColumnPinningState,\n ColumnSizingState,\n ExpandedState,\n FilterFnOption,\n OnChangeFn,\n PaginationState,\n Row,\n SortingState,\n Table as TanStackTable,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport type { DataTableProps } from \"../types\";\nimport {\n dataTableGlobalFilterFn,\n getColumnId,\n isUtilityColumnId,\n moveColumnInOrder,\n} from \"./data-table-utils\";\nimport { useDataTableInfiniteScroll } from \"./use-data-table-infinite-scroll\";\nimport { useDataTablePaginationClamp } from \"./use-data-table-pagination-clamp\";\n\nexport function useDataTableInstance({\n autoResetPageIndex,\n columnResizeMode,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentColumnSizing,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentSorting,\n defaultColumn,\n effectiveColumnVisibility,\n enableColumnResizing,\n enableRowSelection,\n getRowCanExpand,\n globalFilterFn,\n globalFilterValue,\n hasNextPage,\n handleColumnFiltersChange,\n handleColumnOrderChange,\n handleColumnPinningChange,\n handleColumnVisibilityChange,\n handleExpandedChange,\n infiniteScroll,\n manualFiltering,\n manualPagination,\n manualSorting,\n onActionError,\n onPageIndexChange,\n onPageSizeChange,\n pageCount,\n pageIndex,\n pageSize,\n renderExpandedRow,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n shouldRenderInitialLoading,\n tableColumns,\n tableData,\n tableGetRowId,\n tableRef,\n totalRowCount,\n}: {\n autoResetPageIndex: boolean;\n columnResizeMode: DataTableProps[\"columnResizeMode\"];\n currentColumnFilters: ColumnFiltersState;\n currentColumnOrder: ColumnOrderState;\n currentColumnPinning: ColumnPinningState;\n currentColumnSizing: ColumnSizingState;\n currentExpanded: ExpandedState;\n currentPagination: PaginationState;\n currentRowSelection: Record;\n currentSorting: SortingState;\n currentViewMode: \"table\" | \"card\";\n defaultColumn: Partial>;\n effectiveColumnVisibility: VisibilityState;\n enableColumnResizing: boolean;\n enableRowSelection: boolean;\n getRowCanExpand: DataTableProps[\"getRowCanExpand\"];\n globalFilterFn: FilterFnOption | undefined;\n globalFilterValue: string;\n hasNextPage?: DataTableProps[\"hasNextPage\"];\n handleColumnFiltersChange: OnChangeFn;\n handleColumnOrderChange: OnChangeFn;\n handleColumnPinningChange: OnChangeFn;\n handleColumnVisibilityChange: OnChangeFn;\n handleExpandedChange: OnChangeFn;\n infiniteScroll: DataTableProps[\"infiniteScroll\"];\n manualFiltering: boolean;\n manualPagination: boolean;\n manualSorting: boolean;\n onActionError?: DataTableProps[\"onActionError\"];\n onPageIndexChange: DataTableProps[\"onPageIndexChange\"];\n onPageSizeChange: DataTableProps[\"onPageSizeChange\"];\n pageCount: DataTableProps[\"pageCount\"];\n pageIndex: DataTableProps[\"pageIndex\"];\n pageSize: DataTableProps[\"pageSize\"];\n renderExpandedRow: DataTableProps[\"renderExpandedRow\"];\n setCurrentRowSelection: OnChangeFn>;\n setCurrentSorting: OnChangeFn;\n setLocalColumnSizing: OnChangeFn;\n setLocalPagination: React.Dispatch>;\n shouldRenderInitialLoading: boolean;\n tableColumns: Array>;\n tableData: Array;\n tableGetRowId: DataTableProps[\"getRowId\"];\n tableRef: React.RefObject | null>;\n tableScrollElement: HTMLElement | null;\n /**\n * @deprecated Filtering now runs through TanStack Table. Retained so\n * advanced 4.x hook callers remain source-compatible.\n */\n toolbarFilteredData?: Array;\n totalRowCount: DataTableProps[\"totalRowCount\"];\n virtualization: DataTableProps[\"virtualization\"];\n viewportHeight: number;\n}) {\n const generatedColumnIds = React.useMemo(() => {\n return tableColumns.map((column, index) =>\n getColumnId(column as DataTableProps[\"columns\"][number], index),\n );\n }, [tableColumns]);\n\n const effectiveColumnOrder = React.useMemo(() => {\n const columnIds = generatedColumnIds;\n const dataColumnIds = columnIds.filter(\n (columnId) =>\n !isUtilityColumnId(columnId) && columnId !== \"__spacer__\",\n );\n const dataColumnIdSet = new Set(dataColumnIds);\n const orderedDataColumnIds = currentColumnOrder.filter((columnId) =>\n dataColumnIdSet.has(columnId),\n );\n const unorderedDataColumnIds = dataColumnIds.filter(\n (columnId) => !orderedDataColumnIds.includes(columnId),\n );\n\n return [\n ...columnIds.filter(\n (columnId) => columnId === \"__expand__\" || columnId === \"__select__\",\n ),\n ...orderedDataColumnIds,\n ...unorderedDataColumnIds,\n ...columnIds.filter((columnId) => columnId === \"__spacer__\"),\n ...columnIds.filter((columnId) => columnId === \"__actions__\"),\n ];\n }, [currentColumnOrder, generatedColumnIds]);\n\n const effectiveColumnPinning = React.useMemo(() => {\n const columnIdSet = new Set(generatedColumnIds);\n const dataColumnIdSet = new Set(\n generatedColumnIds.filter(\n (columnId) =>\n !isUtilityColumnId(columnId) && columnId !== \"__spacer__\",\n ),\n );\n const dataLeft = (currentColumnPinning.left ?? []).filter((columnId) =>\n dataColumnIdSet.has(columnId),\n );\n const dataRight = (currentColumnPinning.right ?? []).filter((columnId) =>\n dataColumnIdSet.has(columnId),\n );\n\n return {\n left: [\n ...[\"__expand__\", \"__select__\"].filter((columnId) =>\n columnIdSet.has(columnId),\n ),\n ...dataLeft,\n ],\n right: [\n ...dataRight,\n ...[\"__actions__\"].filter((columnId) => columnIdSet.has(columnId)),\n ],\n };\n }, [currentColumnPinning, generatedColumnIds]);\n\n const tableState = React.useMemo(\n () => ({\n sorting: currentSorting,\n pagination: currentPagination,\n rowSelection: currentRowSelection,\n columnVisibility: effectiveColumnVisibility,\n columnFilters: currentColumnFilters,\n globalFilter: globalFilterValue,\n expanded: currentExpanded,\n columnOrder: effectiveColumnOrder,\n columnPinning: effectiveColumnPinning,\n columnSizing: currentColumnSizing,\n }),\n [\n currentColumnFilters,\n currentColumnSizing,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentSorting,\n effectiveColumnVisibility,\n effectiveColumnOrder,\n effectiveColumnPinning,\n globalFilterValue,\n ],\n );\n\n const handlePaginationChange = React.useCallback<\n OnChangeFn\n >(\n (updater) => {\n const nextValue =\n typeof updater === \"function\" ? updater(currentPagination) : updater;\n\n if (pageIndex === undefined || pageSize === undefined) {\n setLocalPagination((current) => ({\n pageIndex:\n pageIndex === undefined ? nextValue.pageIndex : current.pageIndex,\n pageSize:\n pageSize === undefined ? nextValue.pageSize : current.pageSize,\n }));\n }\n\n if (nextValue.pageIndex !== currentPagination.pageIndex) {\n onPageIndexChange?.(nextValue.pageIndex);\n }\n if (nextValue.pageSize !== currentPagination.pageSize) {\n onPageSizeChange?.(nextValue.pageSize);\n }\n },\n [\n currentPagination,\n onPageIndexChange,\n onPageSizeChange,\n pageIndex,\n pageSize,\n setLocalPagination,\n ],\n );\n\n const handleColumnSizingChange = React.useCallback<\n OnChangeFn\n >(\n (updater) => {\n setLocalColumnSizing(updater);\n },\n [setLocalColumnSizing],\n );\n\n // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Table owns its instance functions.\n const table = useReactTable({\n data: tableData,\n columns: tableColumns,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: manualFiltering ? undefined : getFilteredRowModel(),\n getSortedRowModel: manualSorting ? undefined : getSortedRowModel(),\n getExpandedRowModel: renderExpandedRow ? getExpandedRowModel() : undefined,\n getPaginationRowModel:\n manualPagination || infiniteScroll?.enabled\n ? undefined\n : getPaginationRowModel(),\n enableRowSelection,\n enableMultiRowSelection: enableRowSelection,\n enableColumnResizing,\n columnResizeMode,\n getRowId: tableGetRowId,\n getRowCanExpand: renderExpandedRow\n ? (row) => getRowCanExpand?.(row.original) ?? true\n : undefined,\n globalFilterFn: globalFilterFn ?? dataTableGlobalFilterFn,\n getColumnCanGlobalFilter: (column) =>\n column.columnDef.enableGlobalFilter !== false &&\n typeof column.accessorFn === \"function\",\n manualSorting,\n manualFiltering,\n manualPagination: manualPagination || Boolean(infiniteScroll?.enabled),\n defaultColumn,\n autoResetPageIndex,\n state: tableState,\n onSortingChange: setCurrentSorting,\n onPaginationChange: handlePaginationChange,\n onRowSelectionChange: setCurrentRowSelection,\n onColumnVisibilityChange: handleColumnVisibilityChange,\n onColumnFiltersChange: handleColumnFiltersChange,\n onExpandedChange: handleExpandedChange,\n onColumnOrderChange: handleColumnOrderChange,\n onColumnPinningChange: handleColumnPinningChange,\n onColumnSizingChange: handleColumnSizingChange,\n });\n tableRef.current = table;\n\n const visibleLeafColumns = table.getVisibleLeafColumns();\n const reorderColumn = React.useCallback(\n (sourceColumnId: string, targetColumnId: string) => {\n if (sourceColumnId === targetColumnId) {\n return;\n }\n\n const defaultOrder = table\n .getAllLeafColumns()\n .map((column) => column.id)\n .filter((columnId) => !isUtilityColumnId(columnId));\n const nextOrder = moveColumnInOrder(\n currentColumnOrder.length ? currentColumnOrder : defaultOrder,\n sourceColumnId,\n targetColumnId,\n );\n handleColumnOrderChange(nextOrder);\n },\n [currentColumnOrder, handleColumnOrderChange, table],\n );\n\n const renderedRows = table.getRowModel().rows;\n const rowsToRender = renderedRows.map((row, rowIndex) => ({\n row,\n rowIndex,\n }));\n\n const usesManualRows = manualPagination || Boolean(infiniteScroll?.enabled);\n const derivedTotalRowCount = usesManualRows\n ? undefined\n : table.getFilteredRowModel().rows.length;\n const effectiveTotalRowCount = totalRowCount ?? derivedTotalRowCount;\n const isPageCountKnown =\n !usesManualRows || pageCount !== undefined || totalRowCount !== undefined;\n const footerTotalRowCount = effectiveTotalRowCount;\n const effectivePageCount = shouldRenderInitialLoading\n ? 1\n : (pageCount ??\n (effectiveTotalRowCount !== undefined\n ? Math.max(\n 1,\n Math.ceil(effectiveTotalRowCount / currentPagination.pageSize),\n )\n : usesManualRows\n ? currentPagination.pageIndex + (hasNextPage ? 2 : 1)\n : table.getPageCount()));\n const maxPageIndex = Math.max(0, effectivePageCount - 1);\n\n const setLocalPageIndex = React.useCallback(\n (nextPageIndex: number) => {\n if (pageIndex !== undefined) {\n return;\n }\n\n setLocalPagination((current) =>\n current.pageIndex === nextPageIndex\n ? current\n : { ...current, pageIndex: nextPageIndex },\n );\n },\n [pageIndex, setLocalPagination],\n );\n useDataTablePaginationClamp({\n enabled:\n !shouldRenderInitialLoading &&\n !infiniteScroll?.enabled &&\n isPageCountKnown,\n maxPageIndex,\n onPageIndexChange,\n pageIndex: currentPagination.pageIndex,\n setLocalPageIndex,\n });\n\n const handleFooterPageIndexChange = React.useCallback(\n (nextPageIndex: number) => {\n if (nextPageIndex === currentPagination.pageIndex) {\n return;\n }\n\n onPageIndexChange?.(nextPageIndex);\n if (pageIndex === undefined) {\n setLocalPagination((current) =>\n current.pageIndex === nextPageIndex\n ? current\n : { ...current, pageIndex: nextPageIndex },\n );\n }\n },\n [\n currentPagination.pageIndex,\n onPageIndexChange,\n pageIndex,\n setLocalPagination,\n ],\n );\n const handleFooterPageSizeChange = React.useCallback(\n (nextPageSize: number) => {\n if (currentPagination.pageIndex !== 0) {\n onPageIndexChange?.(0);\n }\n if (nextPageSize !== currentPagination.pageSize) {\n onPageSizeChange?.(nextPageSize);\n }\n if (pageSize === undefined) {\n setLocalPagination({\n pageIndex: 0,\n pageSize: nextPageSize,\n });\n }\n },\n [\n currentPagination.pageIndex,\n currentPagination.pageSize,\n onPageIndexChange,\n onPageSizeChange,\n pageSize,\n setLocalPagination,\n ],\n );\n\n const sentinelRef = useDataTableInfiniteScroll({\n enabled: Boolean(infiniteScroll?.enabled),\n hasMore: Boolean(infiniteScroll?.hasMore),\n isLoadingMore: infiniteScroll?.isLoadingMore,\n onLoadMore: () => infiniteScroll?.onLoadMore(),\n onError: (error) => {\n onActionError?.({\n error,\n source: \"infiniteScroll\",\n });\n },\n });\n\n return {\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n isPageCountKnown,\n renderedRows,\n reorderColumn,\n rowsToRender,\n sentinelRef,\n table,\n virtualPaddingBottom: 0,\n virtualPaddingTop: 0,\n visibleLeafColumns,\n };\n}\n\nexport type DataTableRowsToRender = Array<{\n row: Row;\n rowIndex: number;\n}>;\n","import * as React from \"react\";\nimport type { Updater } from \"@tanstack/react-table\";\n\nexport function useControllableState({\n defaultValue,\n onChange,\n value,\n}: {\n defaultValue: T | (() => T);\n onChange?: (value: T) => void;\n value: T | undefined;\n}) {\n const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue);\n const currentValue = value ?? uncontrolledValue;\n const currentValueRef = React.useRef(currentValue);\n\n React.useEffect(() => {\n currentValueRef.current = currentValue;\n }, [currentValue]);\n\n const setValue = React.useCallback(\n (updater: Updater) => {\n const nextValue =\n typeof updater === \"function\"\n ? (updater as (current: T) => T)(currentValueRef.current)\n : updater;\n currentValueRef.current = nextValue;\n\n onChange?.(nextValue);\n\n if (value === undefined) {\n setUncontrolledValue(nextValue);\n }\n },\n [onChange, value],\n );\n\n return [currentValue, setValue] as const;\n}\n","import * as React from \"react\";\nimport type {\n DataTableColumnPrefs,\n DataTableDensity,\n DataTablePersistenceConfig,\n DataTablePersistencePayload,\n DataTablePersistenceSlice,\n DataTablePersistenceStorage,\n} from \"../types\";\n\nconst STORAGE_PREFIX = \"data-table-pro:column-prefs:\";\nconst DEFAULT_VERSION = 1;\nconst ALL_SLICES: Array = [\n \"visibility\",\n \"sizing\",\n \"order\",\n \"pinning\",\n \"density\",\n];\n\nexport function readDataTableColumnPrefs(\n input: string | DataTablePersistenceConfig | undefined,\n): DataTableColumnPrefs {\n const config = resolvePersistenceConfig(input);\n if (!config) {\n return {};\n }\n\n const storage = resolveStorage(config);\n if (!storage) {\n return {};\n }\n const storageKey = getStorageKey(config.key);\n\n let value: string | null;\n try {\n value = storage.getItem(storageKey);\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return {};\n }\n if (!value) {\n return {};\n }\n\n let parsed: unknown;\n try {\n parsed = (config.deserialize ?? JSON.parse)(value);\n } catch (error) {\n config.onError?.({ error, operation: \"deserialize\" });\n return {};\n }\n\n const targetVersion = config.version ?? DEFAULT_VERSION;\n let candidate: unknown;\n if (isPersistencePayload(parsed)) {\n if (parsed.version === targetVersion) {\n candidate = parsed.state;\n } else if (config.migrate) {\n try {\n candidate = config.migrate(\n {\n version: parsed.version,\n state: parsed.state,\n },\n targetVersion,\n );\n } catch (error) {\n config.onError?.({ error, operation: \"migrate\" });\n return {};\n }\n } else {\n return {};\n }\n } else {\n // Raw objects are the legacy columnPrefsKey format. They are validated and\n // upgraded to a versioned envelope on the next successful write.\n candidate = parsed;\n }\n\n return selectPersistenceSlices(\n validateDataTableColumnPrefs(candidate),\n config.slices,\n );\n}\n\nexport function clearDataTableColumnPrefs(\n input: string | DataTablePersistenceConfig | undefined,\n) {\n const config = resolvePersistenceConfig(input);\n if (!config) {\n return false;\n }\n\n const storage = resolveStorage(config);\n if (!storage) {\n return false;\n }\n\n try {\n storage.removeItem(getStorageKey(config.key));\n return true;\n } catch (error) {\n config.onError?.({ error, operation: \"remove\" });\n return false;\n }\n}\n\nexport function usePersistDataTableColumnPrefs({\n key,\n persistence,\n prefs,\n}: {\n key?: string;\n persistence?: DataTablePersistenceConfig;\n prefs: DataTableColumnPrefs;\n}) {\n const config = persistence ?? resolvePersistenceConfig(key);\n const storage = config ? resolveStorage(config) : undefined;\n const storageKey = config ? getStorageKey(config.key) : undefined;\n const version = config?.version ?? DEFAULT_VERSION;\n const debounceMs = Math.max(0, config?.debounceMs ?? 100);\n const selectedState = selectPersistenceSlices(prefs, config?.slices);\n const serialized = React.useMemo(() => {\n if (!config) {\n return { value: undefined };\n }\n\n try {\n const payload: DataTablePersistencePayload = {\n version,\n state: selectedState,\n };\n return {\n value: (config.serialize ?? JSON.stringify)(payload),\n };\n } catch (error) {\n return { error, value: undefined };\n }\n }, [config, selectedState, version]);\n const onErrorEvent = React.useEffectEvent(\n (\n error: unknown,\n operation: \"serialize\" | \"write\",\n ) => {\n config?.onError?.({ error, operation });\n },\n );\n\n React.useEffect(() => {\n if (serialized.error !== undefined) {\n onErrorEvent(serialized.error, \"serialize\");\n }\n }, [serialized.error]);\n\n React.useEffect(() => {\n if (!storage || !storageKey || serialized.value === undefined) {\n return;\n }\n\n const write = () => {\n try {\n if (storage.getItem(storageKey) === serialized.value) {\n return;\n }\n storage.setItem(storageKey, serialized.value);\n } catch (error) {\n onErrorEvent(error, \"write\");\n }\n };\n\n if (debounceMs === 0) {\n write();\n return;\n }\n\n const timeout = globalThis.setTimeout(write, debounceMs);\n return () => {\n globalThis.clearTimeout(timeout);\n };\n }, [debounceMs, serialized.value, storage, storageKey]);\n}\n\nfunction resolvePersistenceConfig(\n input: string | DataTablePersistenceConfig | undefined,\n): DataTablePersistenceConfig | undefined {\n if (!input) {\n return undefined;\n }\n\n return typeof input === \"string\" ? { key: input } : input;\n}\n\nfunction resolveStorage(\n config: DataTablePersistenceConfig,\n): DataTablePersistenceStorage | undefined {\n if (config.storage) {\n return config.storage;\n }\n\n if (typeof window === \"undefined\") {\n return undefined;\n }\n\n try {\n return window.localStorage;\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return undefined;\n }\n}\n\nfunction getStorageKey(key: string) {\n return `${STORAGE_PREFIX}${key}`;\n}\n\nfunction isPersistencePayload(\n value: unknown,\n): value is { version: unknown; state: unknown } {\n return (\n isRecord(value) &&\n Object.prototype.hasOwnProperty.call(value, \"version\") &&\n Object.prototype.hasOwnProperty.call(value, \"state\")\n );\n}\n\nfunction selectPersistenceSlices(\n prefs: DataTableColumnPrefs,\n slices: Array | undefined,\n) {\n const selected = new Set(slices ?? ALL_SLICES);\n const result: DataTableColumnPrefs = {};\n\n for (const slice of ALL_SLICES) {\n if (selected.has(slice) && prefs[slice] !== undefined) {\n Object.assign(result, { [slice]: prefs[slice] });\n }\n }\n\n return result;\n}\n\nfunction validateDataTableColumnPrefs(value: unknown): DataTableColumnPrefs {\n if (!isRecord(value)) {\n return {};\n }\n\n const prefs: DataTableColumnPrefs = {};\n const visibility = validateBooleanRecord(value.visibility);\n if (visibility) {\n prefs.visibility = visibility;\n }\n const sizing = validateSizingRecord(value.sizing);\n if (sizing) {\n prefs.sizing = sizing;\n }\n const order = validateStringArray(value.order);\n if (order) {\n prefs.order = order;\n }\n if (isRecord(value.pinning)) {\n const left = validateStringArray(value.pinning.left) ?? [];\n const right = validateStringArray(value.pinning.right) ?? [];\n prefs.pinning = { left, right };\n }\n if (isDataTableDensity(value.density)) {\n prefs.density = value.density;\n }\n\n return prefs;\n}\n\nfunction validateBooleanRecord(value: unknown) {\n if (!isRecord(value)) {\n return undefined;\n }\n\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, boolean] => typeof entry[1] === \"boolean\",\n ),\n );\n}\n\nfunction validateSizingRecord(value: unknown) {\n if (!isRecord(value)) {\n return undefined;\n }\n\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, number] =>\n typeof entry[1] === \"number\" &&\n Number.isFinite(entry[1]) &&\n entry[1] >= 0,\n ),\n );\n}\n\nfunction validateStringArray(value: unknown) {\n if (!Array.isArray(value)) {\n return undefined;\n }\n\n return value.filter((item): item is string => typeof item === \"string\");\n}\n\nfunction isDataTableDensity(value: unknown): value is DataTableDensity {\n return (\n value === \"compact\" ||\n value === \"comfortable\" ||\n value === \"spacious\"\n );\n}\n\nfunction isRecord(value: unknown): value is Record {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n","import * as React from \"react\";\nimport type {\n ColumnFiltersState,\n ColumnOrderState,\n ColumnPinningState,\n ColumnSizingState,\n ExpandedState,\n PaginationState,\n SortingState,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableDensity,\n DataTableLabels,\n DataTableProps,\n} from \"../types\";\nimport {\n createDataTableLoadingRows,\n getColumnId,\n getDataTableLoadingRowId,\n getInitialColumnPinning,\n isDataTableLoadingRow,\n} from \"./data-table-utils\";\nimport {\n readDataTableColumnPrefs,\n usePersistDataTableColumnPrefs,\n} from \"./use-data-table-column-prefs\";\nimport { useControllableState } from \"./use-controllable-state\";\nimport { useDataTableContainerWidth } from \"./use-data-table-container-width\";\nimport { isHiddenAtContainerWidth, isRowVisible } from \"../types\";\n\nexport function useDataTableState({\n columnFilters,\n columnOrder,\n columnPinning,\n columnSizing,\n columnPrefsKey,\n persistence,\n columnVisibility,\n columns,\n data,\n density,\n enableRowSelection,\n enableToolbarQueryFiltering,\n expanded,\n getRowId,\n hiddenRows,\n initialState,\n isLoading,\n loadingRowCount,\n manualFiltering,\n onColumnFiltersChange,\n onColumnOrderChange,\n onColumnPinningChange,\n onColumnSizingChange,\n onColumnVisibilityChange,\n onDensityChange,\n onExpandedChange,\n onPageIndexChange,\n onRowSelectionChange,\n onShowHiddenRowsChange,\n onSortingChange,\n onToolbarQueryValueChange,\n onViewModeChange,\n pageIndex,\n pageSize,\n resolvedLabels,\n rowSelection,\n rowsPerPageOptions,\n selectionActions,\n showHiddenRows,\n sorting,\n toolbarQueryDebounceMs,\n toolbarQueryPlaceholder,\n toolbarQueryValue,\n viewMode,\n containerRef,\n}: {\n columnFilters: DataTableProps[\"columnFilters\"];\n columnOrder: DataTableProps[\"columnOrder\"];\n columnPinning: DataTableProps[\"columnPinning\"];\n columnSizing?: DataTableProps[\"columnSizing\"];\n columnPrefsKey: DataTableProps[\"columnPrefsKey\"];\n persistence?: DataTableProps[\"persistence\"];\n columnVisibility: DataTableProps[\"columnVisibility\"];\n columns: DataTableProps[\"columns\"];\n data: DataTableProps[\"data\"];\n density: DataTableProps[\"density\"];\n enableRowSelection: boolean;\n enableToolbarQueryFiltering: boolean;\n expanded: DataTableProps[\"expanded\"];\n getRowId: DataTableProps[\"getRowId\"];\n hiddenRows: DataTableProps[\"hiddenRows\"];\n initialState?: DataTableProps[\"initialState\"];\n isLoading: boolean;\n loadingRowCount: DataTableProps[\"loadingRowCount\"];\n manualFiltering: boolean;\n onColumnFiltersChange: DataTableProps[\"onColumnFiltersChange\"];\n onColumnOrderChange: DataTableProps[\"onColumnOrderChange\"];\n onColumnPinningChange: DataTableProps[\"onColumnPinningChange\"];\n onColumnSizingChange?: DataTableProps[\"onColumnSizingChange\"];\n onColumnVisibilityChange: DataTableProps[\"onColumnVisibilityChange\"];\n onDensityChange: DataTableProps[\"onDensityChange\"];\n onExpandedChange: DataTableProps[\"onExpandedChange\"];\n onPageIndexChange: DataTableProps[\"onPageIndexChange\"];\n onRowSelectionChange: DataTableProps[\"onRowSelectionChange\"];\n onShowHiddenRowsChange: DataTableProps[\"onShowHiddenRowsChange\"];\n onSortingChange: DataTableProps[\"onSortingChange\"];\n onToolbarQueryValueChange: DataTableProps[\"onToolbarQueryValueChange\"];\n onViewModeChange: DataTableProps[\"onViewModeChange\"];\n pageIndex: DataTableProps[\"pageIndex\"];\n pageSize: DataTableProps[\"pageSize\"];\n resolvedLabels: DataTableLabels;\n rowSelection: DataTableProps[\"rowSelection\"];\n rowsPerPageOptions: Array;\n selectionActions: DataTableProps[\"selectionActions\"];\n showHiddenRows: DataTableProps[\"showHiddenRows\"];\n sorting: DataTableProps[\"sorting\"];\n toolbarQueryDebounceMs: DataTableProps[\"toolbarQueryDebounceMs\"];\n toolbarQueryPlaceholder: DataTableProps[\"toolbarQueryPlaceholder\"];\n toolbarQueryValue: DataTableProps[\"toolbarQueryValue\"];\n viewMode: DataTableProps[\"viewMode\"];\n containerRef: React.RefObject;\n}) {\n const persistenceConfig = React.useMemo(\n () => persistence ?? (columnPrefsKey ? { key: columnPrefsKey } : undefined),\n [columnPrefsKey, persistence],\n );\n const persistedColumnPrefs = React.useMemo(\n () => readDataTableColumnPrefs(persistenceConfig),\n [persistenceConfig],\n );\n const [localPagination, setLocalPagination] =\n React.useState({\n pageIndex: initialState?.pagination?.pageIndex ?? 0,\n pageSize:\n initialState?.pagination?.pageSize ??\n rowsPerPageOptions[0] ??\n 20,\n });\n const [currentSorting, setCurrentSorting] =\n useControllableState({\n value: sorting,\n onChange: onSortingChange,\n defaultValue: () => initialState?.sorting ?? [],\n });\n const [currentRowSelection, setCurrentRowSelection] = useControllableState<\n Record\n >({\n value: rowSelection,\n onChange: onRowSelectionChange,\n defaultValue: () => initialState?.rowSelection ?? {},\n });\n const [currentColumnVisibility, setCurrentColumnVisibility] =\n useControllableState({\n value: columnVisibility,\n onChange: onColumnVisibilityChange,\n defaultValue: () =>\n initialState?.columnVisibility ??\n persistedColumnPrefs.visibility ??\n {},\n });\n const [currentColumnFilters, setCurrentColumnFilters] =\n useControllableState({\n value: columnFilters,\n onChange: onColumnFiltersChange,\n defaultValue: () => initialState?.columnFilters ?? [],\n });\n const [currentExpanded, setCurrentExpanded] =\n useControllableState({\n value: expanded,\n onChange: onExpandedChange,\n defaultValue: () => initialState?.expanded ?? {},\n });\n const [currentColumnOrder, setCurrentColumnOrder] =\n useControllableState({\n value: columnOrder,\n onChange: onColumnOrderChange,\n defaultValue: () =>\n initialState?.columnOrder ?? persistedColumnPrefs.order ?? [],\n });\n const [currentColumnPinning, setCurrentColumnPinning] =\n useControllableState({\n value: columnPinning,\n onChange: onColumnPinningChange,\n defaultValue: () =>\n initialState?.columnPinning ??\n persistedColumnPrefs.pinning ??\n getInitialColumnPinning(columns),\n });\n const [currentColumnSizing, setCurrentColumnSizing] =\n useControllableState({\n value: columnSizing,\n onChange: onColumnSizingChange,\n defaultValue: () =>\n initialState?.columnSizing ?? persistedColumnPrefs.sizing ?? {},\n });\n const [currentViewMode, setCurrentViewMode] = useControllableState<\n \"table\" | \"card\"\n >({\n value: viewMode,\n onChange: onViewModeChange,\n defaultValue: () => initialState?.viewMode ?? \"table\",\n });\n const [currentShowHiddenRows, setCurrentShowHiddenRows] =\n useControllableState({\n value: showHiddenRows,\n onChange: onShowHiddenRowsChange,\n defaultValue: () => initialState?.showHiddenRows ?? false,\n });\n const [currentDensity, setCurrentDensity] =\n useControllableState({\n value: density,\n onChange: onDensityChange,\n defaultValue: () =>\n initialState?.density ??\n persistedColumnPrefs.density ??\n \"comfortable\",\n });\n const resolvedToolbarQueryValue =\n toolbarQueryValue ?? initialState?.globalFilter ?? \"\";\n const resolvedToolbarQueryPlaceholder =\n toolbarQueryPlaceholder ?? resolvedLabels.searchPlaceholder;\n const resolvedToolbarQueryDebounceMs = toolbarQueryDebounceMs ?? 250;\n const [localSearchValue, setLocalSearchValue] = React.useState(\n resolvedToolbarQueryValue,\n );\n const containerWidth = useDataTableContainerWidth(containerRef);\n const hasOnSearchValueChange = Boolean(onToolbarQueryValueChange);\n const lastReportedSearchValueRef = React.useRef(resolvedToolbarQueryValue);\n const onToolbarQueryValueChangeEvent = React.useEffectEvent(\n (value: string) => {\n lastReportedSearchValueRef.current = value;\n onToolbarQueryValueChange?.(value);\n },\n );\n\n React.useEffect(() => {\n lastReportedSearchValueRef.current = resolvedToolbarQueryValue;\n // A controlled query change must replace any pending debounced draft.\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setLocalSearchValue(resolvedToolbarQueryValue);\n }, [resolvedToolbarQueryValue]);\n\n React.useEffect(() => {\n if (!hasOnSearchValueChange) {\n return;\n }\n\n if (localSearchValue === resolvedToolbarQueryValue) {\n return;\n }\n\n if (localSearchValue === lastReportedSearchValueRef.current) {\n return;\n }\n\n const timeout = window.setTimeout(() => {\n onToolbarQueryValueChangeEvent(localSearchValue);\n }, resolvedToolbarQueryDebounceMs);\n\n return () => {\n window.clearTimeout(timeout);\n };\n }, [\n hasOnSearchValueChange,\n localSearchValue,\n resolvedToolbarQueryDebounceMs,\n resolvedToolbarQueryValue,\n ]);\n\n const currentPagination = React.useMemo(\n () => ({\n pageIndex: pageIndex ?? localPagination.pageIndex,\n pageSize: pageSize ?? localPagination.pageSize,\n }),\n [\n localPagination.pageIndex,\n localPagination.pageSize,\n pageIndex,\n pageSize,\n ],\n );\n const resolvedLoadingRowCount = Math.max(\n 1,\n loadingRowCount ?? Math.min(5, currentPagination.pageSize),\n );\n const globalFilterValue = enableToolbarQueryFiltering\n ? localSearchValue\n : \"\";\n const handleViewModeChange = React.useCallback(\n (nextViewMode: \"table\" | \"card\") => {\n setCurrentViewMode(nextViewMode);\n },\n [setCurrentViewMode],\n );\n const handleShowHiddenRowsChange = React.useCallback(\n (nextShowHiddenRows: boolean) => {\n setCurrentShowHiddenRows(nextShowHiddenRows);\n },\n [setCurrentShowHiddenRows],\n );\n const handleDensityChange = React.useCallback(\n (nextDensity: DataTableDensity) => {\n setCurrentDensity(nextDensity);\n },\n [setCurrentDensity],\n );\n const resetPageIndexForFilterChange = React.useCallback(() => {\n onPageIndexChange?.(0);\n if (pageIndex === undefined) {\n setLocalPagination((current) =>\n current.pageIndex === 0 ? current : { ...current, pageIndex: 0 },\n );\n }\n }, [onPageIndexChange, pageIndex]);\n const filterResetSignature = React.useMemo(\n () =>\n JSON.stringify({\n globalFilterValue,\n columnFilters: currentColumnFilters,\n }),\n [currentColumnFilters, globalFilterValue],\n );\n const lastFilterResetSignatureRef = React.useRef(filterResetSignature);\n\n React.useEffect(() => {\n if (manualFiltering) {\n lastFilterResetSignatureRef.current = filterResetSignature;\n return;\n }\n\n if (lastFilterResetSignatureRef.current === filterResetSignature) {\n return;\n }\n\n lastFilterResetSignatureRef.current = filterResetSignature;\n resetPageIndexForFilterChange();\n }, [filterResetSignature, manualFiltering, resetPageIndexForFilterChange]);\n\n usePersistDataTableColumnPrefs({\n persistence: persistenceConfig,\n prefs: {\n visibility: columnVisibility ? undefined : currentColumnVisibility,\n sizing:\n columnSizing === undefined ? currentColumnSizing : undefined,\n order: columnOrder ? undefined : currentColumnOrder,\n pinning: columnPinning ? undefined : currentColumnPinning,\n density: density ? undefined : currentDensity,\n },\n });\n const responsiveColumnVisibility = React.useMemo(() => {\n return columns.reduce((visibility, column, index) => {\n const columnId = getColumnId(column, index);\n if (isHiddenAtContainerWidth(column.meta?.hideOn, containerWidth)) {\n visibility[columnId] = false;\n }\n return visibility;\n }, {});\n }, [columns, containerWidth]);\n const effectiveColumnVisibility = React.useMemo(() => {\n return {\n ...currentColumnVisibility,\n ...responsiveColumnVisibility,\n };\n }, [currentColumnVisibility, responsiveColumnVisibility]);\n const visibleData = React.useMemo(\n () =>\n data.filter((row) =>\n isRowVisible(row, hiddenRows, currentShowHiddenRows),\n ),\n [currentShowHiddenRows, data, hiddenRows],\n );\n const shouldRenderInitialLoading = isLoading && visibleData.length === 0;\n const loadingRows = React.useMemo(\n () => createDataTableLoadingRows(resolvedLoadingRowCount),\n [resolvedLoadingRowCount],\n );\n const tableData = shouldRenderInitialLoading\n ? loadingRows\n : visibleData;\n const tableGetRowId = React.useCallback(\n (row: TData, index: number) => {\n if (isDataTableLoadingRow(row)) {\n return getDataTableLoadingRowId(index);\n }\n\n return getRowId(row, index);\n },\n [getRowId],\n );\n const shouldResolveSelectedRows =\n enableRowSelection ||\n (selectionActions?.length ?? 0) > 0 ||\n Object.values(currentRowSelection).some(Boolean);\n const rowById = React.useMemo(() => {\n if (!shouldResolveSelectedRows) {\n return new Map();\n }\n\n return new Map(\n visibleData.map((row, index) => [getRowId(row, index), row]),\n );\n }, [getRowId, shouldResolveSelectedRows, visibleData]);\n const selectedRows = React.useMemo(() => {\n if (!shouldResolveSelectedRows) {\n return [];\n }\n\n return Object.entries(currentRowSelection)\n .filter(([, selected]) => selected)\n .map(([rowId]) => rowById.get(rowId))\n .filter((row): row is TData => Boolean(row));\n }, [currentRowSelection, rowById, shouldResolveSelectedRows]);\n\n return {\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n effectiveColumnVisibility,\n globalFilterValue,\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n localSearchValue,\n resolvedLoadingRowCount,\n resolvedToolbarQueryPlaceholder,\n selectedRows,\n setCurrentColumnFilters,\n setCurrentColumnOrder,\n setCurrentColumnPinning,\n setCurrentColumnVisibility,\n setCurrentExpanded,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing: setCurrentColumnSizing,\n setLocalPagination,\n setLocalSearchValue,\n shouldRenderInitialLoading,\n tableData,\n tableGetRowId,\n /**\n * @deprecated Read the filtered TanStack row model from the table\n * instance. This alias remains for advanced 4.x callers.\n */\n toolbarFilteredData: visibleData,\n visibleData,\n };\n}\n","import * as React from \"react\";\nimport type { Column, ColumnSizingState } from \"@tanstack/react-table\";\nimport type { DataTableColumnDef } from \"../types\";\nimport type { DataTableUiClassNames } from \"../ui-kit\";\nimport {\n UTILITY_COLUMN_SIZE,\n getColumnId,\n getConfiguredColumnMinWidth,\n getFixedSide,\n getPinnedColumnClassName,\n isUtilityColumnId,\n} from \"./data-table-utils\";\n\ntype ColumnLayoutMode = \"fill\" | \"fit\";\n\nexport type DataTableColumnLayout = {\n cellStyle: React.CSSProperties | undefined;\n colStyle: React.CSSProperties | undefined;\n fixedSide: \"left\" | \"right\" | false | undefined;\n headerStyle: React.CSSProperties | undefined;\n isActionsColumn: boolean;\n isExpansionColumn: boolean;\n isSelectionColumn: boolean;\n isSpacerColumn: boolean;\n isUtilityColumn: boolean;\n pinnedClassName: string | undefined;\n utilityClassName: string | undefined;\n};\n\nconst EMPTY_COLUMN_LAYOUT: DataTableColumnLayout = {\n cellStyle: undefined,\n colStyle: undefined,\n fixedSide: undefined,\n headerStyle: undefined,\n isActionsColumn: false,\n isExpansionColumn: false,\n isSelectionColumn: false,\n isSpacerColumn: false,\n isUtilityColumn: false,\n pinnedClassName: undefined,\n utilityClassName: undefined,\n};\n\nexport function useColumnLayout({\n columns,\n columnSizing,\n editableRows,\n enableRowSelection,\n hasRowActions,\n hasRowExpansion,\n layoutMode,\n uiClassNames,\n visibleLeafColumns,\n}: {\n columns: Array>;\n columnSizing: ColumnSizingState;\n editableRows: boolean;\n enableRowSelection: boolean;\n hasRowActions: boolean;\n hasRowExpansion: boolean;\n layoutMode: ColumnLayoutMode;\n uiClassNames: DataTableUiClassNames;\n visibleLeafColumns: Array>;\n}) {\n const explicitlySizedColumnIds = React.useMemo(() => {\n const ids = new Set();\n\n for (const [index, column] of columns.entries()) {\n if (Object.prototype.hasOwnProperty.call(column, \"size\")) {\n ids.add(getColumnId(column, index));\n }\n }\n\n if (enableRowSelection) {\n ids.add(\"__select__\");\n }\n\n if (hasRowExpansion) {\n ids.add(\"__expand__\");\n }\n\n if (hasRowActions || editableRows) {\n ids.add(\"__actions__\");\n }\n\n return ids;\n }, [\n columns,\n editableRows,\n enableRowSelection,\n hasRowActions,\n hasRowExpansion,\n ]);\n\n const minimumColumnWidths = React.useMemo(() => {\n const widths = new Map();\n\n for (const [index, column] of columns.entries()) {\n const configuredMinWidth = getConfiguredColumnMinWidth(column);\n\n if (configuredMinWidth !== undefined) {\n widths.set(getColumnId(column, index), configuredMinWidth);\n }\n }\n\n return widths;\n }, [columns]);\n\n const pinnedColumns = React.useMemo(() => {\n const left = new Map();\n const right = new Map();\n\n let leftOffset = 0;\n for (const column of visibleLeafColumns) {\n if (getFixedSide(column) === \"left\") {\n left.set(column.id, leftOffset);\n leftOffset += getColumnLayoutSize(column);\n }\n }\n\n let rightOffset = 0;\n for (const column of [...visibleLeafColumns].reverse()) {\n if (getFixedSide(column) === \"right\") {\n right.set(column.id, rightOffset);\n rightOffset += getColumnLayoutSize(column);\n }\n }\n\n return { left, right };\n }, [visibleLeafColumns]);\n\n const fillColumnId = React.useMemo(() => {\n if (layoutMode !== \"fill\") {\n return undefined;\n }\n\n const dataColumns = visibleLeafColumns.filter(\n (column) => !isUtilityColumnId(column.id),\n );\n\n if (!dataColumns.length) {\n return undefined;\n }\n\n const allDataColumnsAreFixed = dataColumns.every(\n (column) =>\n explicitlySizedColumnIds.has(column.id) ||\n Object.prototype.hasOwnProperty.call(columnSizing, column.id),\n );\n\n return allDataColumnsAreFixed\n ? dataColumns[dataColumns.length - 1]?.id\n : undefined;\n }, [\n columnSizing,\n explicitlySizedColumnIds,\n layoutMode,\n visibleLeafColumns,\n ]);\n\n const fixedWidthColumnIds = React.useMemo(() => {\n const ids = new Set([\n ...explicitlySizedColumnIds,\n ...Object.keys(columnSizing),\n ]);\n\n if (fillColumnId) {\n ids.delete(fillColumnId);\n }\n\n return ids;\n }, [columnSizing, explicitlySizedColumnIds, fillColumnId]);\n\n const columnLayouts = React.useMemo(() => {\n const layouts = new Map();\n\n for (const column of visibleLeafColumns) {\n const isSelectionColumn = column.id === \"__select__\";\n const isExpansionColumn = column.id === \"__expand__\";\n const isActionsColumn = column.id === \"__actions__\";\n const isUtilityColumn =\n isSelectionColumn || isExpansionColumn || isActionsColumn;\n const isSpacerColumn = column.id === \"__spacer__\";\n const configuredMinWidth = minimumColumnWidths.get(column.id);\n const isFlexibleFillColumn = column.id === fillColumnId;\n const columnMinWidth =\n configuredMinWidth ??\n (isFlexibleFillColumn ? column.getSize() : undefined);\n const shouldFixWidth =\n !isSpacerColumn &&\n (layoutMode === \"fit\" ||\n isUtilityColumn ||\n fixedWidthColumnIds.has(column.id));\n const baseStyle =\n shouldFixWidth || columnMinWidth !== undefined\n ? {\n width: shouldFixWidth\n ? isUtilityColumn\n ? UTILITY_COLUMN_SIZE\n : column.getSize()\n : undefined,\n minWidth: isUtilityColumn\n ? UTILITY_COLUMN_SIZE\n : shouldFixWidth\n ? column.getSize()\n : columnMinWidth,\n maxWidth: shouldFixWidth\n ? isUtilityColumn\n ? UTILITY_COLUMN_SIZE\n : column.getSize()\n : undefined,\n }\n : undefined;\n const fixedSide = getFixedSide(column);\n const pinnedStyle = fixedSide\n ? {\n insetInlineStart:\n fixedSide === \"left\" ? pinnedColumns.left.get(column.id) : undefined,\n insetInlineEnd:\n fixedSide === \"right\"\n ? pinnedColumns.right.get(column.id)\n : undefined,\n }\n : undefined;\n const cellStyle =\n baseStyle || pinnedStyle ? { ...baseStyle, ...pinnedStyle } : undefined;\n\n layouts.set(column.id, {\n cellStyle,\n colStyle: baseStyle,\n fixedSide,\n headerStyle: cellStyle,\n isActionsColumn,\n isExpansionColumn,\n isSelectionColumn,\n isSpacerColumn,\n isUtilityColumn,\n pinnedClassName: fixedSide\n ? getPinnedColumnClassName(fixedSide, uiClassNames, {\n isUtilityColumn,\n })\n : undefined,\n utilityClassName: isUtilityColumn\n ? \"w-[50px] max-w-[50px] min-w-[50px] px-0\"\n : undefined,\n });\n }\n\n return layouts;\n }, [\n fillColumnId,\n fixedWidthColumnIds,\n layoutMode,\n minimumColumnWidths,\n pinnedColumns,\n uiClassNames,\n visibleLeafColumns,\n ]);\n\n const fillMinWidth = React.useMemo(() => {\n return visibleLeafColumns.reduce((total, column) => {\n const layout = columnLayouts.get(column.id);\n const configuredMinWidth = minimumColumnWidths.get(column.id);\n const isFlexibleFillColumn = column.id === fillColumnId;\n\n if (layout?.isUtilityColumn) {\n return total + UTILITY_COLUMN_SIZE;\n }\n\n if (fixedWidthColumnIds.has(column.id)) {\n return total + column.getSize();\n }\n\n return (\n total +\n (configuredMinWidth ?? (isFlexibleFillColumn ? column.getSize() : 0))\n );\n }, 0);\n }, [\n columnLayouts,\n fillColumnId,\n fixedWidthColumnIds,\n minimumColumnWidths,\n visibleLeafColumns,\n ]);\n\n const getColumnLayout = React.useCallback(\n (columnId: string) => columnLayouts.get(columnId) ?? EMPTY_COLUMN_LAYOUT,\n [columnLayouts],\n );\n\n return {\n columnLayouts,\n explicitlySizedColumnIds,\n fillMinWidth,\n getColumnLayout,\n };\n}\n\nfunction getColumnLayoutSize(column: Column) {\n return isUtilityColumnId(column.id) ? UTILITY_COLUMN_SIZE : column.getSize();\n}\n","import * as React from \"react\";\nimport type { Row } from \"@tanstack/react-table\";\nimport type {\n DataTableCardRendererProps,\n DataTableCardSizing,\n DataTableEditableRowsConfig,\n DataTableExpandedRowProps,\n DataTableLabels,\n DataTableRowAction,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\ntype DataTableCardViewProps = {\n rows: Array>;\n cardRenderer: (props: DataTableCardRendererProps) => React.ReactNode;\n cardSizing?: DataTableCardSizing;\n cardGridClassName?: string;\n cardClassName?: string;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n renderExpandedRow?: (\n props: DataTableExpandedRowProps,\n ) => React.ReactNode;\n hasCardTitle: boolean;\n rowSelection: Record;\n onRowSelectionChange: (rowSelection: Record) => void;\n enableRowSelection: boolean;\n editingRowId: string | null;\n onEditingRowIdChange: (rowId: string | null) => void;\n getRowClassName?: (row: TData) => string | undefined;\n onRowClick?: (context: { row: TData; rowId: string }) => void | Promise;\n getRowDraggable?: (row: TData) => boolean;\n onRowDragStart?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n onRowDragEnd?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n isLoading?: boolean;\n loadingRowCount?: number;\n labels: DataTableLabels;\n};\n\ntype DataTableRowActionsComponent = (props: {\n row: TData;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n onStartEditing: () => void;\n onCancelEditing: () => void;\n labels: DataTableLabels;\n}) => React.ReactElement | null;\n\nexport function createDataTableCardView(\n ui: DataTableUiKit,\n DataTableRowActions: DataTableRowActionsComponent,\n) {\n const uiClassNames = ui.classNames ?? {};\n const { Card, CardContent, CardHeader, Checkbox, Skeleton } = ui;\n\n return function DataTableCardView({\n rows,\n cardRenderer,\n cardSizing = \"fixed\",\n cardGridClassName,\n cardClassName,\n rowActions,\n editableRows,\n renderExpandedRow,\n hasCardTitle,\n rowSelection,\n onRowSelectionChange,\n enableRowSelection,\n editingRowId,\n onEditingRowIdChange,\n getRowClassName,\n onRowClick,\n getRowDraggable,\n onRowDragStart,\n onRowDragEnd,\n isLoading = false,\n loadingRowCount = 5,\n labels,\n }: DataTableCardViewProps) {\n const resolvedCardSizing = cardSizing ?? \"fixed\";\n const resolvedCardGridClassName =\n cardGridClassName\n ? cn(\"grid\", cardGridClassName)\n : getCardGridClassName(resolvedCardSizing);\n const cardGridClasses = cn(\n \"min-h-0 w-full gap-4 p-1\",\n uiClassNames.cardGrid,\n resolvedCardGridClassName,\n );\n const cardItemClasses = (stateClassName?: string) =>\n cn(\n \"relative min-w-0 max-w-full gap-0 overflow-hidden bg-transparent p-0\",\n getCardItemClassName(resolvedCardSizing),\n uiClassNames.cardItem,\n cardClassName,\n stateClassName,\n );\n\n if (isLoading) {\n return (\n \n {Array.from({ length: Math.max(1, loadingRowCount) }, (_, index) => (\n \n {hasCardTitle ? (\n \n \n \n \n ) : null}\n \n \n \n \n \n \n \n ))}\n \n );\n }\n\n return (\n \n {rows.map((row) => {\n const rowId = row.id;\n const originalRow = row.original;\n const isSelected = Boolean(rowSelection[rowId]);\n const isEditing = editingRowId === rowId;\n const hasCardActions = rowActions.length > 0 || Boolean(editableRows);\n const showCardGradient =\n enableRowSelection || hasCardActions || hasCardTitle;\n const showCardOverlayControls = enableRowSelection || hasCardActions;\n const handleCardActivate = () => {\n if (!onRowClick) {\n return;\n }\n\n void onRowClick({ row: originalRow, rowId });\n };\n\n return (\n ) => {\n onRowDragStart?.({ row: originalRow, rowId, event });\n }}\n onDragEnd={(event: React.DragEvent) => {\n onRowDragEnd?.({ row: originalRow, rowId, event });\n }}\n >\n {showCardGradient ? (\n \n ) : null}\n *]:min-w-0\",\n getCardRendererClassName(resolvedCardSizing),\n onRowClick && \"cursor-pointer focus-visible:outline-none\",\n )}\n onClick={(event: React.MouseEvent) => {\n const target = event.target as HTMLElement | null;\n if (target?.closest(\"[data-row-click-ignore='true']\")) {\n return;\n }\n\n handleCardActivate();\n }}\n onKeyDown={(event: React.KeyboardEvent) => {\n const target = event.target as HTMLElement | null;\n if (target?.closest(\"[data-row-click-ignore='true']\")) {\n return;\n }\n\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n handleCardActivate();\n }\n }}\n >\n {cardRenderer({\n row: originalRow,\n rowId,\n isSelected,\n onSelectedChange: (nextValue) => {\n onRowSelectionChange(\n updateRowSelection(rowSelection, rowId, nextValue),\n );\n },\n actions: rowActions,\n isEditing,\n startEditing: () => {\n onEditingRowIdChange(rowId);\n },\n cancelEditing: () => {\n onEditingRowIdChange(null);\n },\n })}\n {isEditing || !renderExpandedRow || !row.getIsExpanded()\n ? null\n : renderExpandedRow({\n row: originalRow,\n rowId,\n tableRow: row,\n })}\n \n {showCardOverlayControls ? (\n \n {enableRowSelection ? (\n \n {\n onRowSelectionChange(\n updateRowSelection(\n rowSelection,\n rowId,\n checked === true,\n ),\n );\n }}\n />\n \n ) : null}\n
\n {hasCardActions ? (\n \n {\n onEditingRowIdChange(rowId);\n }}\n onCancelEditing={() => {\n onEditingRowIdChange(null);\n }}\n labels={labels}\n />\n
\n ) : null}\n
\n ) : null}\n \n );\n })}\n \n );\n };\n}\n\nfunction getCardGridClassName(cardSizing: DataTableCardSizing) {\n switch (cardSizing) {\n case \"content\":\n return \"flex flex-wrap items-start justify-start\";\n case \"fluid\":\n return \"grid grid-cols-[repeat(auto-fit,minmax(min(18rem,100%),1fr))]\";\n case \"fixed\":\n default:\n return \"grid grid-cols-[repeat(auto-fill,minmax(min(18rem,100%),18rem))] justify-start\";\n }\n}\n\nfunction getCardItemClassName(cardSizing: DataTableCardSizing) {\n switch (cardSizing) {\n case \"content\":\n return \"w-fit\";\n case \"fluid\":\n return \"w-full\";\n case \"fixed\":\n default:\n return undefined;\n }\n}\n\nfunction getCardRendererClassName(cardSizing: DataTableCardSizing) {\n switch (cardSizing) {\n case \"content\":\n return \"w-fit\";\n case \"fluid\":\n return \"w-full flex-1 [&>*]:w-full\";\n case \"fixed\":\n default:\n return \"flex-1\";\n }\n}\n\nfunction updateRowSelection(\n rowSelection: Record,\n rowId: string,\n isSelected: boolean,\n) {\n if (isSelected) {\n return {\n ...rowSelection,\n [rowId]: true,\n };\n }\n\n if (!rowSelection[rowId]) {\n return rowSelection;\n }\n\n const nextSelection = { ...rowSelection };\n delete nextSelection[rowId];\n return nextSelection;\n}\n","import { IconInbox } from \"../icons\";\nimport type { DataTableUiKit } from \"../ui-kit\";\n\nexport function createDataTableEmptyState(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n } = ui;\n\n return function DataTableEmptyState({\n title = \"No rows found\",\n description = \"Adjust your filters or create a new record to populate this table.\",\n }: {\n title?: string;\n description?: string;\n }) {\n return (\n \n \n \n \n \n {title}\n {description}\n \n \n \n );\n };\n}\n","import * as React from \"react\";\nimport { IconDatabase } from \"../icons\";\nimport type { DataTableLabels } from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\ntype DataTablePaginationProps = {\n pageIndex: number;\n pageCount: number;\n pageCountKnown: boolean;\n pageSize: number;\n totalRowCount?: number;\n rowsPerPageOptions: Array;\n onPageIndexChange: (pageIndex: number) => void;\n onPageSizeChange: (pageSize: number) => void;\n labels: DataTableLabels;\n};\n\nexport function createDataTablePagination(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectTrigger,\n SelectValue,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n function DataTablePagination({\n pageIndex,\n pageCount,\n pageCountKnown,\n pageSize,\n totalRowCount,\n rowsPerPageOptions,\n onPageIndexChange,\n onPageSizeChange,\n labels,\n }: DataTablePaginationProps) {\n const pages = pageCountKnown\n ? getVisiblePages(pageIndex, Math.max(1, pageCount))\n : [];\n const canGoPrevious = pageIndex > 0;\n const canGoNext = pageIndex + 1 < pageCount;\n const lastPageIndex = Math.max(0, pageCount - 1);\n\n return (\n
\n \n \n {labels.recordsPerPage}\n \n {\n onPageSizeChange(Number(value));\n }}\n >\n \n \n \n \n \n {rowsPerPageOptions.map((option) => (\n \n {option}\n \n ))}\n \n \n \n
\n\n {totalRowCount !== undefined ? (\n
\n \n \n {totalRowCount}\n \n {labels.totalRecords(totalRowCount)}\n \n
\n \n ) : null}\n\n
\n \n {pageCountKnown\n ? labels.pageStatus(pageIndex, Math.max(1, pageCount))\n : (\n labels.pageStatusUnknown ??\n DATA_TABLE_DEFAULT_LABELS.pageStatusUnknown\n )(pageIndex)}\n
\n \n \n \n \n \n ) => {\n event.preventDefault();\n if (canGoPrevious) {\n onPageIndexChange(0);\n }\n }}\n text={labels.firstPage}\n />\n \n {labels.firstPage}\n \n \n \n \n \n ) => {\n event.preventDefault();\n if (canGoPrevious) {\n onPageIndexChange(pageIndex - 1);\n }\n }}\n text={labels.previousPage}\n />\n \n {labels.previousPage}\n \n \n {pages.map((item, index) => (\n \n {item === \"ellipsis\" ? (\n \n ) : (\n ) => {\n event.preventDefault();\n onPageIndexChange(item - 1);\n }}\n >\n {item}\n \n )}\n \n ))}\n \n \n \n ) => {\n event.preventDefault();\n if (canGoNext) {\n onPageIndexChange(pageIndex + 1);\n }\n }}\n text={labels.nextPage}\n />\n \n {labels.nextPage}\n \n \n {pageCountKnown ? (\n \n \n \n ,\n ) => {\n event.preventDefault();\n if (canGoNext) {\n onPageIndexChange(lastPageIndex);\n }\n }}\n />\n \n {labels.lastPage}\n \n \n ) : null}\n \n \n \n \n );\n }\n\n function DataTableFooter(props: DataTablePaginationProps) {\n return (\n \n \n \n );\n }\n\n return {\n DataTableFooter,\n DataTablePagination,\n };\n}\n\nfunction getVisiblePages(currentPageIndex: number, pageCount: number) {\n const currentPage = currentPageIndex + 1;\n const pages = new Set([1, pageCount]);\n\n for (\n let page = Math.max(1, currentPage - 2);\n page <= Math.min(pageCount, currentPage + 2);\n page += 1\n ) {\n pages.add(page);\n }\n\n const orderedPages = Array.from(pages).sort((left, right) => left - right);\n const items: Array = [];\n\n for (let index = 0; index < orderedPages.length; index += 1) {\n const page = orderedPages[index];\n const previous = orderedPages[index - 1];\n\n if (previous && page - previous > 1) {\n items.push(\"ellipsis\");\n }\n\n items.push(page);\n }\n\n return items;\n}\n","import * as React from \"react\";\nimport { IconDots, IconEdit, IconX } from \"../icons\";\nimport type {\n DataTableEditableRowsConfig,\n DataTableLabels,\n DataTableRowAction,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { canEditRow, canUseRowAction, resolveRowActionLabel } from \"../types\";\n\ntype DataTableRowActionsProps = {\n row: TData;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n onStartEditing: () => void;\n onCancelEditing: () => void;\n labels: DataTableLabels;\n};\n\nexport function createDataTableRowActions(ui: DataTableUiKit) {\n const {\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n return function DataTableRowActions({\n row,\n rowActions,\n editableRows,\n isEditing,\n onStartEditing,\n onCancelEditing,\n labels,\n }: DataTableRowActionsProps) {\n const actions = rowActions.filter((action) => canUseRowAction(action, row));\n const stopRowClickPropagation = React.useCallback(\n (event: React.SyntheticEvent) => {\n event.stopPropagation();\n },\n [],\n );\n\n if (isEditing) {\n return (\n \n \n \n \n {labels.cancelEdit}\n \n \n {labels.cancelEdit}\n \n );\n }\n\n const allowEdit = canEditRow(editableRows, row);\n if (!actions.length && !allowEdit) {\n return null;\n }\n\n return (\n \n \n \n \n \n \n {labels.rowActions}\n \n \n \n {labels.rowActions}\n \n \n {allowEdit ? (\n \n ) => {\n event.stopPropagation();\n onStartEditing();\n }}\n >\n \n {labels.editRow}\n \n \n ) : null}\n {allowEdit && actions.length ? : null}\n {actions.length ? (\n \n {actions.map((action) => {\n const Icon = action.icon;\n return (\n ) => {\n event.stopPropagation();\n void action.onClick(row);\n }}\n >\n {Icon ? : null}\n {resolveRowActionLabel(action.label, row)}\n \n );\n })}\n \n ) : null}\n \n \n );\n };\n}\n","import * as React from \"react\";\nimport {\n IconAdjustmentsHorizontal,\n IconLayoutGrid,\n IconList,\n IconSearch,\n IconX,\n} from \"../icons\";\nimport type {\n DataTableColumnFilterType,\n DataTableColumnFixed,\n DataTableColumnVisibilityOption,\n DataTableDensity,\n DataTableLabels,\n DataTableSelectionAction,\n DataTableToolbarAction,\n DataTableToolbarVisibility,\n DataTableViewMode,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\nexport type DataTableToolbarColumnFilter = {\n id: string;\n label: string;\n type: DataTableColumnFilterType;\n value: unknown;\n placeholder?: string;\n options: Array<{ label: string; value: string }>;\n};\n\ntype DataTableToolbarProps = {\n title?: string;\n description?: string;\n toolbarQueryValue: string;\n toolbarQueryPlaceholder: string;\n onToolbarQueryValueChange: (value: string) => void;\n customToolbar?: React.ReactNode;\n compactToolbar?: React.ReactNode;\n viewMode: DataTableViewMode;\n onViewModeChange?: (viewMode: DataTableViewMode) => void;\n enableViewToggle: boolean;\n toolbarActions: Array>;\n selectionActions: Array>;\n selectedRows: Array;\n showHiddenRows: boolean;\n hiddenRowsLabel?: string;\n onShowHiddenRowsChange?: (showHiddenRows: boolean) => void;\n allRows: Array;\n columnVisibilityOptions: Array;\n onColumnVisibilityChange?: (columnId: string, visible: boolean) => void;\n enableColumnPinning: boolean;\n onColumnPinningChange: (columnId: string, side: DataTableColumnFixed | false) => void;\n columnFilters: Array;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n onClearColumnFilters: () => void;\n density: DataTableDensity;\n onDensityChange: (density: DataTableDensity) => void;\n enableDensityToggle: boolean;\n labels: DataTableLabels;\n toolbarVisibility?: DataTableToolbarVisibility;\n openFileDialog?: () => void;\n};\n\nexport function createDataTableToolbar(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Button,\n ButtonGroup,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n return function DataTableToolbar({\n title,\n description,\n toolbarQueryValue,\n toolbarQueryPlaceholder,\n onToolbarQueryValueChange,\n customToolbar,\n compactToolbar,\n viewMode,\n onViewModeChange,\n enableViewToggle,\n toolbarActions,\n selectionActions,\n selectedRows,\n showHiddenRows,\n hiddenRowsLabel,\n onShowHiddenRowsChange,\n allRows,\n columnVisibilityOptions,\n onColumnVisibilityChange,\n enableColumnPinning,\n onColumnPinningChange,\n columnFilters,\n onColumnFilterChange,\n onClearColumnFilters,\n density,\n onDensityChange,\n enableDensityToggle,\n labels,\n toolbarVisibility,\n openFileDialog,\n }: DataTableToolbarProps) {\n const compactSearchInputRef = React.useRef(null);\n const [isCompactSearchVisible, setIsCompactSearchVisible] =\n React.useState(false);\n const compactToolbarIconButtonClassName =\n uiClassNames.toolbarCompactIconButton ?? \"\";\n const primaryActions = toolbarActions.filter(\n (action) => (action.placement ?? \"primary\") === \"primary\",\n );\n const trailingActions = toolbarActions.filter(\n (action) => action.placement === \"trailing\",\n );\n const showTitle = toolbarVisibility?.title ?? true;\n const showSearch = toolbarVisibility?.search ?? true;\n const showActions = toolbarVisibility?.actions ?? true;\n const showTrailingActions = toolbarVisibility?.trailingActions ?? true;\n const showOptions = toolbarVisibility?.options ?? true;\n const showViewToggle = toolbarVisibility?.viewToggle ?? true;\n const showCustomToolbar = toolbarVisibility?.customToolbar ?? true;\n const hasVisibleTitle = showTitle && Boolean(title || description);\n const hasVisibleSearch = showSearch;\n const hasVisiblePrimaryActions = showActions && primaryActions.length > 0;\n const hasVisibleSelectionActions =\n selectedRows.length > 0 && selectionActions.length > 0;\n const hasVisibleOptions =\n showOptions &&\n (columnVisibilityOptions.some((column) => column.canHide) ||\n Boolean(onShowHiddenRowsChange && hiddenRowsLabel) ||\n enableColumnPinning ||\n enableDensityToggle);\n const hasVisibleViewToggle =\n showViewToggle && enableViewToggle && Boolean(onViewModeChange);\n const hasVisibleTrailingActions =\n showTrailingActions && trailingActions.length > 0;\n const hasVisibleCustomToolbar = showCustomToolbar && Boolean(customToolbar);\n const hasVisibleCompactToolbar =\n showCustomToolbar && Boolean(compactToolbar ?? customToolbar);\n const selectedRowCountLabel = labels.selectedRows(selectedRows.length);\n\n React.useEffect(() => {\n if (!isCompactSearchVisible) {\n return;\n }\n\n compactSearchInputRef.current?.focus();\n }, [isCompactSearchVisible]);\n\n if (\n !hasVisibleTitle &&\n !hasVisibleSearch &&\n !hasVisiblePrimaryActions &&\n !hasVisibleSelectionActions &&\n !hasVisibleOptions &&\n !hasVisibleViewToggle &&\n !hasVisibleTrailingActions &&\n !hasVisibleCustomToolbar &&\n !hasVisibleCompactToolbar\n ) {\n return null;\n }\n\n return (\n
\n {showTitle && (title || description) ? (\n
\n {title ? (\n

{title}

\n ) : null}\n {description ? (\n \n {description}\n

\n ) : null}\n
\n ) : null}\n\n
\n \n {showSearch ? (\n <>\n
\n \n ) => {\n onToolbarQueryValueChange(event.target.value);\n }}\n placeholder={toolbarQueryPlaceholder}\n />\n \n \n \n {toolbarQueryValue ? (\n \n {\n onToolbarQueryValueChange(\"\");\n }}\n aria-label={labels.clearSearch}\n title={labels.clearSearch}\n >\n \n \n \n ) : null}\n \n
\n \n \n {\n setIsCompactSearchVisible((current) => !current);\n }}\n >\n \n {labels.searchTable}\n \n \n {labels.searchTable}\n \n \n ) : null}\n\n {showActions ? (\n
\n {primaryActions.map((action) => {\n const collapsesToIcon =\n !action.iconOnly && Boolean(action.icon);\n const button = (\n {\n void action.onClick({\n rows: allRows,\n openFileDialog,\n });\n }}\n disabled={action.disabled}\n aria-label={action.label}\n title={action.iconOnly ? undefined : action.label}\n >\n {action.icon ? : null}\n {action.iconOnly ? (\n {action.label}\n ) : collapsesToIcon ? (\n \n {action.label}\n \n ) : (\n {action.label}\n )}\n \n );\n\n return action.iconOnly ? (\n \n {button}\n {action.label}\n \n ) : (\n button\n );\n })}\n
\n ) : null}\n\n {hasVisibleCompactToolbar ? (\n \n {compactToolbar ?? customToolbar}\n
\n ) : null}\n\n
\n\n \n {selectedRows.length ? (\n \n {selectedRowCountLabel}\n
\n ) : null}\n {selectedRows.length\n ? selectionActions.map((action) => {\n const Icon = action.icon;\n const disabled =\n typeof action.disabled === \"function\"\n ? action.disabled(selectedRows)\n : action.disabled;\n\n return (\n \n \n {\n void action.onClick({ rows: selectedRows });\n }}\n aria-label={action.label}\n >\n {Icon ? : null}\n {action.label}\n \n \n {action.label}\n \n );\n })\n : null}\n\n {hasVisibleOptions ? (\n \n \n \n \n {labels.tableOptions}\n \n \n \n {labels.tableOptions}\n \n {onShowHiddenRowsChange && hiddenRowsLabel ? (\n {\n onShowHiddenRowsChange(checked === true);\n }}\n >\n {labels.showHiddenRows(hiddenRowsLabel)}\n \n ) : null}\n \n {enableDensityToggle ? (\n <>\n \n {labels.density}\n \n {(\n [\n [\"compact\", labels.compactDensity],\n [\"comfortable\", labels.comfortableDensity],\n [\"spacious\", labels.spaciousDensity],\n ] as const\n ).map(([nextDensity, label]) => (\n {\n onDensityChange(nextDensity);\n }}\n >\n {label}\n \n ))}\n \n \n ) : null}\n {columnVisibilityOptions.some((column) => column.canHide) ? (\n <>\n \n {labels.columns}\n \n {columnVisibilityOptions\n .filter((column) => column.canHide)\n .map((column) => (\n {\n onColumnVisibilityChange?.(\n column.id,\n checked === true,\n );\n }}\n >\n {column.label}\n \n ))}\n \n \n ) : null}\n {enableColumnPinning ? (\n <>\n \n \n {labels.pinLeft} / {labels.pinRight}\n \n \n {columnVisibilityOptions.map((column) => (\n {\n event.preventDefault();\n }}\n >\n \n {column.label}\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, \"left\");\n }}\n >\n L\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, \"right\");\n }}\n >\n R\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, false);\n }}\n >\n -\n \n \n ))}\n \n \n ) : null}\n \n \n ) : null}\n\n {showViewToggle && enableViewToggle && onViewModeChange ? (\n \n \n \n {\n onViewModeChange(\"table\");\n }}\n >\n \n \n {labels.switchToTableView ??\n DATA_TABLE_DEFAULT_LABELS.switchToTableView}\n \n \n \n \n {labels.tableView ??\n DATA_TABLE_DEFAULT_LABELS.tableView}\n \n \n \n \n {\n onViewModeChange(\"card\");\n }}\n >\n \n \n {labels.switchToCardView ??\n DATA_TABLE_DEFAULT_LABELS.switchToCardView}\n \n \n \n \n {labels.cardView ??\n DATA_TABLE_DEFAULT_LABELS.cardView}\n \n \n \n ) : null}\n\n {showTrailingActions\n ? trailingActions.map((action) => {\n const collapsesToIcon =\n !action.iconOnly && Boolean(action.icon);\n const button = (\n {\n void action.onClick({\n rows: allRows,\n openFileDialog,\n });\n }}\n disabled={action.disabled}\n aria-label={action.label}\n title={action.iconOnly ? undefined : action.label}\n className={`size-7 shrink-0 ${action.iconOnly ? \"\" : `${collapsesToIcon ? \"px-0 @md/data-table:px-2.5\" : \"\"} @md/data-table:h-8 @md/data-table:w-fit`} ${action.iconOnly || collapsesToIcon ? compactToolbarIconButtonClassName : \"\"} ${uiClassNames.toolbarInputButton ?? \"\"}`}\n >\n {action.icon ? (\n \n ) : null}\n {action.iconOnly ? (\n {action.label}\n ) : collapsesToIcon ? (\n \n {action.label}\n \n ) : (\n {action.label}\n )}\n \n );\n\n return action.iconOnly ? (\n \n {button}\n {action.label}\n \n ) : (\n button\n );\n })\n : null}\n
\n \n\n {showSearch && isCompactSearchVisible ? (\n \n \n ) => {\n onToolbarQueryValueChange(event.target.value);\n }}\n placeholder={toolbarQueryPlaceholder}\n />\n \n \n \n {toolbarQueryValue ? (\n \n {\n onToolbarQueryValueChange(\"\");\n }}\n aria-label={labels.clearSearch}\n title={labels.clearSearch}\n >\n \n \n \n ) : null}\n \n \n ) : null}\n\n {columnFilters.length ? (\n \n {columnFilters.map((filter) => (\n \n ))}\n {columnFilters.some((filter) =>\n hasColumnFilterValue(filter.value),\n ) ? (\n \n {labels.clearFilters}\n \n ) : null}\n \n ) : null}\n\n \n\n {showCustomToolbar && customToolbar ? (\n \n {customToolbar}\n \n ) : null}\n \n );\n };\n\n function ToolbarColumnFilterControl({\n filter,\n labels,\n onColumnFilterChange,\n }: {\n filter: DataTableToolbarColumnFilter;\n labels: DataTableLabels;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n }) {\n if (filter.type === \"text\") {\n return (\n \n ) => {\n onColumnFilterChange(filter.id, event.target.value);\n }}\n placeholder={filter.placeholder ?? filter.label}\n aria-label={`${labels.filters}: ${filter.label}`}\n />\n \n \n \n \n );\n }\n\n const selectedValues = Array.isArray(filter.value)\n ? filter.value.map(String)\n : typeof filter.value === \"string\" && filter.value\n ? [filter.value]\n : [];\n const selectedLabel =\n selectedValues.length === 0\n ? filter.label\n : `${filter.label}: ${\n selectedValues.length === 1\n ? (filter.options.find(\n (option) => option.value === selectedValues[0],\n )?.label ?? selectedValues[0])\n : selectedValues.length\n }`;\n\n return (\n \n \n \n \n \n {filter.label}\n \n {filter.type === \"select\" ? (\n {\n onColumnFilterChange(filter.id, \"\");\n }}\n >\n {labels.allFilterOptions ??\n DATA_TABLE_DEFAULT_LABELS.allFilterOptions}\n \n ) : null}\n {filter.options.map((option) => (\n {\n if (filter.type === \"select\") {\n onColumnFilterChange(\n filter.id,\n checked === true ? option.value : \"\",\n );\n return;\n }\n\n const nextValues = new Set(selectedValues);\n if (checked === true) {\n nextValues.add(option.value);\n } else {\n nextValues.delete(option.value);\n }\n onColumnFilterChange(filter.id, Array.from(nextValues));\n }}\n >\n {option.label}\n \n ))}\n \n \n \n );\n }\n}\n\nfunction hasColumnFilterValue(value: unknown) {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n\n return value !== undefined && value !== null && value !== \"\";\n}\n","import * as React from \"react\";\nimport { DataTableTablePanel } from \"./data-table-table-panel\";\nimport type { DataTableTablePanelProps } from \"./data-table-table-panel\";\n\nconst LazyDataTableVirtualTablePanel = React.lazy(async () => {\n const module = await import(\"./data-table-virtual-table-panel\");\n return { default: module.DataTableVirtualTablePanel };\n}) as unknown as typeof DataTableTablePanel;\n\nexport function DataTableTablePanelRouter(\n props: DataTableTablePanelProps,\n) {\n const config =\n typeof props.virtualization === \"object\"\n ? props.virtualization\n : undefined;\n const enabled =\n props.virtualization === true || config?.enabled === true;\n\n if (!enabled) {\n return ;\n }\n\n return (\n }>\n \n \n );\n}\n","import type {\n DataTableSavedView,\n DataTableSavedViewSlice,\n DataTableSavedViewsChangeOperation,\n DataTableSavedViewsConfig,\n DataTableSavedViewsPayload,\n DataTableState,\n} from \"../types\";\n\nconst STORAGE_PREFIX = \"data-table-pro:saved-views:\";\nconst DEFAULT_VERSION = 1;\nconst DEFAULT_SLICES: Array = [\n \"sorting\",\n \"columnVisibility\",\n \"columnFilters\",\n \"columnOrder\",\n \"columnPinning\",\n \"columnSizing\",\n \"density\",\n \"viewMode\",\n \"showHiddenRows\",\n \"globalFilter\",\n];\nlet fallbackId = 0;\n\nexport function readDataTableSavedViews(\n config: DataTableSavedViewsConfig | undefined,\n): Array {\n const storage = resolveStorage(config);\n if (!config || !storage) {\n return [];\n }\n\n let serialized: string | null;\n try {\n serialized = storage.getItem(getStorageKey(config.key));\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return [];\n }\n if (!serialized) {\n return [];\n }\n\n let parsed: unknown;\n try {\n parsed = (config.deserialize ?? JSON.parse)(serialized);\n } catch (error) {\n config.onError?.({ error, operation: \"deserialize\" });\n return [];\n }\n\n if (!isRecord(parsed) || !(\"version\" in parsed) || !(\"views\" in parsed)) {\n return [];\n }\n\n const targetVersion = config.version ?? DEFAULT_VERSION;\n let candidate: unknown = parsed.views;\n if (parsed.version !== targetVersion) {\n if (!config.migrate) {\n return [];\n }\n try {\n candidate = config.migrate(\n { version: parsed.version, views: parsed.views },\n targetVersion,\n );\n } catch (error) {\n config.onError?.({ error, operation: \"migrate\" });\n return [];\n }\n }\n\n if (!Array.isArray(candidate)) {\n return [];\n }\n\n return candidate\n .map((view) => validateSavedView(view, config.slices))\n .filter((view): view is DataTableSavedView => Boolean(view));\n}\n\nexport function createDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n name: string,\n state: DataTableState,\n) {\n const normalizedName = name.trim();\n if (!config || !normalizedName) {\n return undefined;\n }\n\n const now = new Date().toISOString();\n const view: DataTableSavedView = {\n id: createSavedViewId(),\n name: normalizedName,\n createdAt: now,\n updatedAt: now,\n state: selectSavedViewSlices(state, config.slices),\n };\n const views = [...readDataTableSavedViews(config), view];\n return writeViews(config, views, \"create\") ? cloneSavedView(view) : undefined;\n}\n\nexport function renameDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n id: string,\n name: string,\n) {\n const normalizedName = name.trim();\n if (!config || !normalizedName) {\n return undefined;\n }\n\n let renamed: DataTableSavedView | undefined;\n const views = readDataTableSavedViews(config).map((view) => {\n if (view.id !== id) {\n return view;\n }\n renamed = {\n ...view,\n name: normalizedName,\n updatedAt: new Date().toISOString(),\n };\n return renamed;\n });\n if (!renamed) {\n return undefined;\n }\n\n return writeViews(config, views, \"rename\")\n ? cloneSavedView(renamed)\n : undefined;\n}\n\nexport function deleteDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n id: string,\n) {\n if (!config) {\n return false;\n }\n\n const current = readDataTableSavedViews(config);\n const views = current.filter((view) => view.id !== id);\n return views.length !== current.length && writeViews(config, views, \"delete\");\n}\n\nexport function clearDataTableSavedViews(\n config: DataTableSavedViewsConfig | undefined,\n) {\n const storage = resolveStorage(config);\n if (!config || !storage) {\n return false;\n }\n\n try {\n storage.removeItem(getStorageKey(config.key));\n } catch (error) {\n config.onError?.({ error, operation: \"remove\" });\n return false;\n }\n config.onChange?.([], \"clear\");\n return true;\n}\n\nfunction writeViews(\n config: DataTableSavedViewsConfig,\n views: Array,\n operation: DataTableSavedViewsChangeOperation,\n) {\n const storage = resolveStorage(config);\n if (!storage) {\n return false;\n }\n\n let serialized: string;\n try {\n const payload: DataTableSavedViewsPayload = {\n version: config.version ?? DEFAULT_VERSION,\n views,\n };\n serialized = (config.serialize ?? JSON.stringify)(payload);\n } catch (error) {\n config.onError?.({ error, operation: \"serialize\" });\n return false;\n }\n\n try {\n storage.setItem(getStorageKey(config.key), serialized);\n } catch (error) {\n config.onError?.({ error, operation: \"write\" });\n return false;\n }\n const snapshots = views.map(cloneSavedView);\n config.onChange?.(snapshots, operation);\n return true;\n}\n\nfunction selectSavedViewSlices(\n state: DataTableState,\n slices: Array | undefined,\n) {\n const selected = new Set(slices ?? DEFAULT_SLICES);\n const snapshot: Partial = {};\n for (const slice of Object.keys(state) as Array) {\n if (selected.has(slice)) {\n Object.assign(snapshot, {\n [slice]: cloneStateSlice(slice, state[slice]),\n });\n }\n }\n return snapshot;\n}\n\nfunction validateSavedView(\n value: unknown,\n slices: Array | undefined,\n): DataTableSavedView | undefined {\n if (\n !isRecord(value) ||\n typeof value.id !== \"string\" ||\n !value.id ||\n typeof value.name !== \"string\" ||\n !value.name.trim() ||\n typeof value.createdAt !== \"string\" ||\n typeof value.updatedAt !== \"string\"\n ) {\n return undefined;\n }\n\n return {\n id: value.id,\n name: value.name.trim(),\n createdAt: value.createdAt,\n updatedAt: value.updatedAt,\n state: validateState(value.state, slices),\n };\n}\n\nfunction validateState(\n value: unknown,\n slices: Array | undefined,\n) {\n if (!isRecord(value)) {\n return {};\n }\n\n const selected = new Set(slices ?? DEFAULT_SLICES);\n const state: Partial = {};\n const sorting = validateSorting(value.sorting);\n if (selected.has(\"sorting\") && sorting) state.sorting = sorting;\n const pagination = validatePagination(value.pagination);\n if (selected.has(\"pagination\") && pagination) state.pagination = pagination;\n const rowSelection = validateBooleanRecord(value.rowSelection);\n if (selected.has(\"rowSelection\") && rowSelection) {\n state.rowSelection = rowSelection;\n }\n const visibility = validateBooleanRecord(value.columnVisibility);\n if (selected.has(\"columnVisibility\") && visibility) {\n state.columnVisibility = visibility;\n }\n const filters = validateFilters(value.columnFilters);\n if (selected.has(\"columnFilters\") && filters) state.columnFilters = filters;\n const expanded =\n value.expanded === true\n ? true\n : validateBooleanRecord(value.expanded);\n if (selected.has(\"expanded\") && expanded !== undefined) {\n state.expanded = expanded;\n }\n const order = validateStringArray(value.columnOrder);\n if (selected.has(\"columnOrder\") && order) state.columnOrder = order;\n const pinning = validatePinning(value.columnPinning);\n if (selected.has(\"columnPinning\") && pinning) {\n state.columnPinning = pinning;\n }\n const sizing = validateSizingRecord(value.columnSizing);\n if (selected.has(\"columnSizing\") && sizing) state.columnSizing = sizing;\n if (\n selected.has(\"density\") &&\n (value.density === \"compact\" ||\n value.density === \"comfortable\" ||\n value.density === \"spacious\")\n ) {\n state.density = value.density;\n }\n if (\n selected.has(\"viewMode\") &&\n (value.viewMode === \"table\" || value.viewMode === \"card\")\n ) {\n state.viewMode = value.viewMode;\n }\n if (selected.has(\"showHiddenRows\") && typeof value.showHiddenRows === \"boolean\") {\n state.showHiddenRows = value.showHiddenRows;\n }\n if (selected.has(\"globalFilter\") && typeof value.globalFilter === \"string\") {\n state.globalFilter = value.globalFilter;\n }\n return state;\n}\n\nfunction cloneSavedView(view: DataTableSavedView): DataTableSavedView {\n return {\n ...view,\n state: validateState(view.state, Object.keys(view.state) as Array),\n };\n}\n\nfunction cloneStateSlice(\n slice: DataTableSavedViewSlice,\n value: unknown,\n) {\n if (Array.isArray(value)) {\n return (value as Array).map((item) =>\n isRecord(item) ? { ...item } : item,\n );\n }\n if (isRecord(value)) {\n if (slice === \"columnPinning\") {\n return {\n left: Array.isArray(value.left)\n ? [...(value.left as Array)]\n : undefined,\n right: Array.isArray(value.right)\n ? [...(value.right as Array)]\n : undefined,\n };\n }\n return { ...value };\n }\n return value;\n}\n\nfunction validateSorting(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value\n .filter(\n (item): item is { id: string; desc?: boolean } =>\n isRecord(item) && typeof item.id === \"string\",\n )\n .map((item) => ({ id: item.id, desc: Boolean(item.desc) }));\n}\n\nfunction validatePagination(value: unknown) {\n if (\n !isRecord(value) ||\n !Number.isInteger(value.pageIndex) ||\n (value.pageIndex as number) < 0 ||\n !Number.isInteger(value.pageSize) ||\n (value.pageSize as number) < 1\n ) {\n return undefined;\n }\n return {\n pageIndex: value.pageIndex as number,\n pageSize: value.pageSize as number,\n };\n}\n\nfunction validateFilters(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value\n .filter(\n (item): item is { id: string; value: unknown } =>\n isRecord(item) &&\n typeof item.id === \"string\" &&\n Object.prototype.hasOwnProperty.call(item, \"value\"),\n )\n .map((item) => ({ id: item.id, value: item.value }));\n}\n\nfunction validatePinning(value: unknown) {\n if (!isRecord(value)) return undefined;\n return {\n left: validateStringArray(value.left) ?? [],\n right: validateStringArray(value.right) ?? [],\n };\n}\n\nfunction validateBooleanRecord(value: unknown) {\n if (!isRecord(value)) return undefined;\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, boolean] => typeof entry[1] === \"boolean\",\n ),\n );\n}\n\nfunction validateSizingRecord(value: unknown) {\n if (!isRecord(value)) return undefined;\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, number] =>\n typeof entry[1] === \"number\" &&\n Number.isFinite(entry[1]) &&\n entry[1] >= 0,\n ),\n );\n}\n\nfunction validateStringArray(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value.filter((item): item is string => typeof item === \"string\");\n}\n\nfunction resolveStorage(config: DataTableSavedViewsConfig | undefined) {\n if (!config) {\n return undefined;\n }\n if (config.storage) {\n return config.storage;\n }\n if (typeof window === \"undefined\") {\n return undefined;\n }\n try {\n return window.localStorage;\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return undefined;\n }\n}\n\nfunction createSavedViewId() {\n if (typeof globalThis.crypto?.randomUUID === \"function\") {\n return globalThis.crypto.randomUUID();\n }\n fallbackId += 1;\n return `view-${Date.now().toString(36)}-${fallbackId.toString(36)}`;\n}\n\nfunction getStorageKey(key: string) {\n return `${STORAGE_PREFIX}${key}`;\n}\n\nfunction isRecord(value: unknown): value is Record {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n","import * as React from \"react\";\nimport { IconDownload } from \"../icons\";\nimport type {\n ColumnFiltersState,\n ColumnPinningState,\n OnChangeFn,\n Table as TanStackTable,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableColumnFixed,\n DataTableLabels,\n DataTableProps,\n} from \"../types\";\nimport {\n exportDataTableCsv,\n getAccessorKey,\n getColumnId,\n hasFilterValue,\n normalizeColumnFilterOptions,\n startCase,\n} from \"./data-table-utils\";\n\nexport function useDataTableToolbarFeatures({\n columns,\n currentColumnFilters,\n currentColumnPinning,\n effectiveColumnVisibility,\n enableColumnFilters,\n handleColumnFiltersChange,\n handleColumnPinningChange,\n labels,\n table,\n toolbarActions,\n visibleData,\n csvExport,\n}: {\n columns: DataTableProps[\"columns\"];\n currentColumnFilters: ColumnFiltersState;\n currentColumnPinning: ColumnPinningState;\n effectiveColumnVisibility: VisibilityState;\n enableColumnFilters: boolean | undefined;\n handleColumnFiltersChange: OnChangeFn;\n handleColumnPinningChange: OnChangeFn;\n labels: DataTableLabels;\n table: TanStackTable;\n toolbarActions: DataTableProps[\"toolbarActions\"];\n visibleData: Array;\n csvExport: DataTableProps[\"csvExport\"];\n}) {\n const columnVisibilityOptions = React.useMemo(() => {\n return columns.map((column, index) => {\n const id = getColumnId(column, index);\n const header = column.header;\n const accessorKey = getAccessorKey(column);\n const label =\n typeof header === \"string\"\n ? header\n : accessorKey\n ? startCase(accessorKey)\n : startCase(id);\n\n const pinned: false | DataTableColumnFixed =\n currentColumnPinning.left?.includes(id) === true\n ? \"left\"\n : currentColumnPinning.right?.includes(id) === true\n ? \"right\"\n : false;\n\n return {\n id,\n label,\n visible: effectiveColumnVisibility[id] !== false,\n canHide: column.enableHiding !== false,\n pinned,\n };\n });\n }, [columns, currentColumnPinning, effectiveColumnVisibility]);\n\n const toolbarColumnFilters = React.useMemo(() => {\n if (enableColumnFilters === false) {\n return [];\n }\n\n return columns.flatMap((column, index) => {\n const filter = column.meta?.filter;\n if (!filter) {\n return [];\n }\n\n const id = getColumnId(column, index);\n const header = column.header;\n const accessorKey = getAccessorKey(column);\n const label =\n filter.label ??\n (typeof header === \"string\"\n ? header\n : accessorKey\n ? startCase(accessorKey)\n : startCase(id));\n const state = currentColumnFilters.find((item) => item.id === id);\n const rawOptions =\n typeof filter.options === \"function\"\n ? filter.options({ rows: visibleData })\n : (filter.options ?? []);\n\n return [\n {\n id,\n label,\n type: filter.type,\n value: state?.value,\n placeholder: filter.placeholder,\n options: normalizeColumnFilterOptions(rawOptions),\n },\n ];\n });\n }, [columns, currentColumnFilters, enableColumnFilters, visibleData]);\n\n const handleToolbarColumnFilterChange = React.useCallback(\n (columnId: string, value: unknown) => {\n handleColumnFiltersChange((current) => {\n const next = current.filter((filter) => filter.id !== columnId);\n if (hasFilterValue(value)) {\n next.push({ id: columnId, value });\n }\n return next;\n });\n },\n [handleColumnFiltersChange],\n );\n\n const handleClearColumnFilters = React.useCallback(() => {\n handleColumnFiltersChange([]);\n }, [handleColumnFiltersChange]);\n\n const handleToolbarColumnPinningChange = React.useCallback(\n (columnId: string, side: DataTableColumnFixed | false) => {\n handleColumnPinningChange((current) => {\n const left = (current.left ?? []).filter((id) => id !== columnId);\n const right = (current.right ?? []).filter((id) => id !== columnId);\n\n if (side === \"left\") {\n left.push(columnId);\n }\n if (side === \"right\") {\n right.push(columnId);\n }\n\n return { left, right };\n });\n },\n [handleColumnPinningChange],\n );\n\n const handleCsvExport = React.useCallback(() => {\n if (!csvExport) {\n return;\n }\n\n return exportDataTableCsv({\n csvExport,\n table,\n labels,\n });\n }, [csvExport, labels, table]);\n\n const effectiveToolbarActions = React.useMemo(() => {\n if (!csvExport) {\n return toolbarActions ?? [];\n }\n\n return [\n ...(toolbarActions ?? []),\n {\n key: \"__csv_export__\",\n label: labels.exportCsv,\n icon: IconDownload,\n placement: \"trailing\" as const,\n onClick: handleCsvExport,\n },\n ];\n }, [csvExport, handleCsvExport, labels.exportCsv, toolbarActions]);\n\n return {\n columnVisibilityOptions,\n effectiveToolbarActions,\n handleClearColumnFilters,\n handleToolbarColumnFilterChange,\n handleToolbarColumnPinningChange,\n toolbarColumnFilters,\n };\n}\n","import * as React from \"react\";\nimport { flushSync } from \"react-dom\";\nimport type {\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableActionErrorContext,\n DataTableApi,\n DataTableProps,\n DataTableState,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { createDataTableCardView } from \"./create-data-table-card-view\";\nimport { createDataTableEmptyState } from \"./create-data-table-empty-state\";\nimport { createDataTablePagination } from \"./create-data-table-pagination\";\nimport { createDataTableRowActions } from \"./create-data-table-row-actions\";\nimport { createDataTableToolbar } from \"./create-data-table-toolbar\";\nimport { DataTableCardPanel as DefaultDataTableCardPanel } from \"./data-table-card-panel\";\nimport { DataTableFooterSection } from \"./data-table-footer-section\";\nimport { DataTableTablePanelRouter as DefaultDataTableTablePanel } from \"./data-table-table-panel-router\";\nimport { DataTableToolbarSection } from \"./data-table-toolbar-section\";\nimport {\n clearDataTableSavedViews,\n createDataTableSavedView,\n deleteDataTableSavedView,\n readDataTableSavedViews,\n renameDataTableSavedView,\n} from \"./data-table-saved-views\";\nimport { resolveDataTableLabels } from \"./data-table-labels\";\nimport { useDataTableColumns } from \"./use-data-table-columns\";\nimport { useDataTableInstance } from \"./use-data-table-instance\";\nimport { useDataTableScrollViewport } from \"./use-data-table-scroll-viewport\";\nimport {\n exportDataTableCsv,\n getColumnId,\n getInitialColumnPinning,\n} from \"./data-table-utils\";\nimport { useDataTableState } from \"./use-data-table-state\";\nimport { clearDataTableColumnPrefs } from \"./use-data-table-column-prefs\";\nimport { useDataTableToolbarFeatures } from \"./use-data-table-toolbar-features\";\nimport { useColumnLayout } from \"./use-column-layout\";\nimport { useRowEditing } from \"./use-row-editing\";\n\ntype CreateDataTableOptions = {\n CardPanel?: typeof DefaultDataTableCardPanel;\n TablePanel?: typeof DefaultDataTableTablePanel;\n};\n\nexport function createDataTable(ui: DataTableUiKit) {\n return createDataTableWithPanels(ui);\n}\n\nexport function createDataTableWithPanels(\n ui: DataTableUiKit,\n options: CreateDataTableOptions = {},\n) {\n const DataTableCardPanel =\n options.CardPanel ?? DefaultDataTableCardPanel;\n const DataTableTablePanel =\n options.TablePanel ?? DefaultDataTableTablePanel;\n const uiClassNames = ui.classNames ?? {};\n const {\n rootClassName,\n Button,\n Checkbox,\n Input,\n ScrollArea,\n ScrollBar,\n Skeleton,\n Table,\n TableBody,\n TableCell,\n TableFooter = \"tfoot\",\n TableHead,\n TableHeader,\n TableRow,\n Tooltip,\n TooltipContent,\n TooltipProvider = React.Fragment,\n TooltipTrigger,\n } = ui;\n const DataTableEmptyState = createDataTableEmptyState(ui);\n const DataTableRowActions = createDataTableRowActions(ui);\n const { DataTableFooter } = createDataTablePagination(ui);\n const DataTableToolbar = createDataTableToolbar(ui);\n const DataTableCardView = createDataTableCardView(ui, DataTableRowActions);\n const defaultColumn = {\n minSize: 80,\n size: 180,\n maxSize: 720,\n };\n\n return function DataTable({\n columns,\n data,\n getRowId,\n children,\n title,\n description,\n toolbarQueryValue,\n onToolbarQueryValueChange,\n toolbarQueryPlaceholder,\n toolbarQueryDebounceMs,\n manualFiltering = false,\n enableToolbarQueryFiltering = true,\n globalFilterFn,\n columnFilters,\n onColumnFiltersChange,\n enableColumnFilters,\n customToolbar,\n compactToolbar,\n rowsPerPageOptions = [10, 20, 50, 100],\n totalRowCount,\n hasNextPage,\n sorting,\n onSortingChange,\n manualSorting = false,\n pageIndex,\n pageSize,\n onPageIndexChange,\n onPageSizeChange,\n pageCount,\n manualPagination = false,\n rowSelection,\n onRowSelectionChange,\n enableRowSelection = false,\n expanded,\n onExpandedChange,\n getRowCanExpand,\n renderExpandedRow,\n columnOrder,\n onColumnOrderChange,\n enableColumnReordering = false,\n columnPinning,\n onColumnPinningChange,\n enableColumnPinning = false,\n toolbarActions = [],\n selectionActions = [],\n rowActions = [],\n csvExport,\n density,\n onDensityChange,\n enableDensityToggle = false,\n columnPrefsKey,\n persistence,\n savedViews,\n initialState,\n state: unifiedState,\n onStateChange,\n apiRef,\n labels,\n summaryRows = [],\n cardRenderer,\n cardSizing,\n cardGridClassName,\n cardClassName,\n viewMode,\n onViewModeChange,\n enableViewToggle = false,\n emptyState,\n isLoading = false,\n loadingRowCount,\n getRowLoadingState,\n hiddenRows,\n showHiddenRows,\n onShowHiddenRowsChange,\n infiniteScroll,\n editableRows,\n columnVisibility,\n onColumnVisibilityChange,\n columnSizing,\n onColumnSizingChange,\n enableColumnResizing = false,\n columnResizeMode = \"onChange\",\n layoutMode = \"fill\",\n stickyHeader = true,\n showFooter = true,\n showToolbar = true,\n dir = \"ltr\",\n flexGrow = true,\n toolbarVisibility,\n className,\n tableClassName,\n tableContainerClassName,\n getRowClassName,\n onRowClick,\n onActionError,\n dragAndDrop,\n fileUpload,\n virtualization,\n }: DataTableProps) {\n const containerRef = React.useRef(null);\n const fileInputRef = React.useRef(null);\n const tableScrollContainerRef = React.useRef(null);\n const draggedColumnIdRef = React.useRef(null);\n const tableRef = React.useRef | null>(null);\n const lastSelectedRowIdRef = React.useRef(null);\n const resolvedLabels = React.useMemo(\n () => resolveDataTableLabels(labels),\n [labels],\n );\n const resolvedToolbarQueryValue =\n toolbarQueryValue ?? unifiedState?.globalFilter;\n const resolvedSorting = sorting ?? unifiedState?.sorting;\n const resolvedPageIndex =\n pageIndex ?? unifiedState?.pagination?.pageIndex;\n const resolvedPageSize = pageSize ?? unifiedState?.pagination?.pageSize;\n const resolvedRowSelection =\n rowSelection ?? unifiedState?.rowSelection;\n const resolvedColumnVisibility =\n columnVisibility ?? unifiedState?.columnVisibility;\n const resolvedColumnFilters =\n columnFilters ?? unifiedState?.columnFilters;\n const resolvedExpanded = expanded ?? unifiedState?.expanded;\n const resolvedColumnOrder =\n columnOrder ?? unifiedState?.columnOrder;\n const resolvedColumnPinning =\n columnPinning ?? unifiedState?.columnPinning;\n const resolvedColumnSizing =\n columnSizing ?? unifiedState?.columnSizing;\n const resolvedDensity = density ?? unifiedState?.density;\n const resolvedViewMode = viewMode ?? unifiedState?.viewMode;\n const resolvedShowHiddenRows =\n showHiddenRows ?? unifiedState?.showHiddenRows;\n useDataTableStateConflictWarnings(unifiedState, {\n columnFilters: columnFilters !== undefined,\n columnOrder: columnOrder !== undefined,\n columnPinning: columnPinning !== undefined,\n columnSizing: columnSizing !== undefined,\n columnVisibility: columnVisibility !== undefined,\n density: density !== undefined,\n expanded: expanded !== undefined,\n globalFilter: toolbarQueryValue !== undefined,\n pagination: pageIndex !== undefined || pageSize !== undefined,\n rowSelection: rowSelection !== undefined,\n showHiddenRows: showHiddenRows !== undefined,\n sorting: sorting !== undefined,\n viewMode: viewMode !== undefined,\n });\n const handleToolbarQueryValueChange = useDataTableStateSliceChange(\n \"globalFilter\",\n onToolbarQueryValueChange,\n onStateChange,\n );\n const handleSortingPropChange = useDataTableStateSliceChange(\n \"sorting\",\n onSortingChange,\n onStateChange,\n );\n const handleRowSelectionPropChange = useDataTableStateSliceChange(\n \"rowSelection\",\n onRowSelectionChange,\n onStateChange,\n );\n const handleColumnVisibilityPropChange = useDataTableStateSliceChange(\n \"columnVisibility\",\n onColumnVisibilityChange,\n onStateChange,\n );\n const handleColumnFiltersPropChange = useDataTableStateSliceChange(\n \"columnFilters\",\n onColumnFiltersChange,\n onStateChange,\n );\n const handleExpandedPropChange = useDataTableStateSliceChange(\n \"expanded\",\n onExpandedChange,\n onStateChange,\n );\n const handleColumnOrderPropChange = useDataTableStateSliceChange(\n \"columnOrder\",\n onColumnOrderChange,\n onStateChange,\n );\n const handleColumnPinningPropChange = useDataTableStateSliceChange(\n \"columnPinning\",\n onColumnPinningChange,\n onStateChange,\n );\n const handleColumnSizingPropChange = useDataTableStateSliceChange(\n \"columnSizing\",\n onColumnSizingChange,\n onStateChange,\n );\n const handleDensityPropChange = useDataTableStateSliceChange(\n \"density\",\n onDensityChange,\n onStateChange,\n );\n const handleViewModePropChange = useDataTableStateSliceChange(\n \"viewMode\",\n onViewModeChange,\n onStateChange,\n );\n const handleShowHiddenRowsPropChange = useDataTableStateSliceChange(\n \"showHiddenRows\",\n onShowHiddenRowsChange,\n onStateChange,\n );\n const handlePageIndexPropChange = React.useCallback(\n (nextPageIndex: number) => {\n onPageIndexChange?.(nextPageIndex);\n onStateChange?.((current) => ({\n ...current,\n pagination: {\n pageIndex: nextPageIndex,\n pageSize:\n resolvedPageSize ?? current.pagination.pageSize,\n },\n }));\n },\n [onPageIndexChange, onStateChange, resolvedPageSize],\n );\n const handlePageSizePropChange = React.useCallback(\n (nextPageSize: number) => {\n onPageSizeChange?.(nextPageSize);\n onStateChange?.((current) => ({\n ...current,\n pagination: {\n pageIndex:\n resolvedPageIndex ?? current.pagination.pageIndex,\n pageSize: nextPageSize,\n },\n }));\n },\n [onPageSizeChange, onStateChange, resolvedPageIndex],\n );\n const runAction = React.useCallback(\n (\n context: Omit, \"error\">,\n action: () => void | Promise,\n ) => {\n runDataTableAction(action, context, onActionError);\n },\n [onActionError],\n );\n const guardedRowActions = React.useMemo(\n () =>\n rowActions.map((action) => ({\n ...action,\n onClick: (row: TData) => {\n runAction(\n {\n actionKey: action.key,\n row,\n source: \"rowAction\",\n },\n () => action.onClick(row),\n );\n },\n })),\n [rowActions, runAction],\n );\n const guardedOnRowClick = React.useMemo<\n DataTableProps[\"onRowClick\"]\n >(\n () =>\n onRowClick\n ? (context) => {\n runAction(\n {\n row: context.row,\n source: \"rowClick\",\n },\n () => onRowClick(context),\n );\n }\n : undefined,\n [onRowClick, runAction],\n );\n const handleEditError = React.useCallback(\n (error: unknown, row: TData) => {\n onActionError?.({\n error,\n row,\n source: \"edit\",\n });\n },\n [onActionError],\n );\n const {\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n effectiveColumnVisibility,\n globalFilterValue,\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n localSearchValue,\n resolvedLoadingRowCount,\n resolvedToolbarQueryPlaceholder,\n selectedRows,\n setCurrentColumnFilters,\n setCurrentColumnOrder,\n setCurrentColumnPinning,\n setCurrentColumnVisibility,\n setCurrentExpanded,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n setLocalSearchValue,\n shouldRenderInitialLoading,\n tableData,\n tableGetRowId,\n visibleData,\n } = useDataTableState({\n columnFilters: resolvedColumnFilters,\n columnOrder: resolvedColumnOrder,\n columnPinning: resolvedColumnPinning,\n columnSizing: resolvedColumnSizing,\n columnPrefsKey,\n persistence,\n columnVisibility: resolvedColumnVisibility,\n columns,\n containerRef,\n data,\n density: resolvedDensity,\n enableRowSelection,\n enableToolbarQueryFiltering,\n expanded: resolvedExpanded,\n getRowId,\n hiddenRows,\n isLoading,\n loadingRowCount,\n manualFiltering,\n initialState,\n onColumnFiltersChange: handleColumnFiltersPropChange,\n onColumnOrderChange: handleColumnOrderPropChange,\n onColumnPinningChange: handleColumnPinningPropChange,\n onColumnSizingChange: handleColumnSizingPropChange,\n onColumnVisibilityChange: handleColumnVisibilityPropChange,\n onDensityChange: handleDensityPropChange,\n onExpandedChange: handleExpandedPropChange,\n onPageIndexChange: handlePageIndexPropChange,\n onRowSelectionChange: handleRowSelectionPropChange,\n onShowHiddenRowsChange: handleShowHiddenRowsPropChange,\n onSortingChange: handleSortingPropChange,\n onToolbarQueryValueChange: handleToolbarQueryValueChange,\n onViewModeChange: handleViewModePropChange,\n pageIndex: resolvedPageIndex,\n pageSize: resolvedPageSize,\n resolvedLabels,\n rowSelection: resolvedRowSelection,\n rowsPerPageOptions,\n selectionActions,\n showHiddenRows: resolvedShowHiddenRows,\n sorting: resolvedSorting,\n toolbarQueryDebounceMs,\n toolbarQueryPlaceholder,\n toolbarQueryValue: resolvedToolbarQueryValue,\n viewMode: resolvedViewMode,\n });\n const {\n cancelEditing,\n draftValues,\n editingRowId,\n isSavingEdit,\n saveEdit,\n setDraftValues,\n setEditingRowId,\n startEditingRow,\n } = useRowEditing({\n columns,\n editableRows,\n onError: handleEditError,\n });\n const { viewportElement: tableScrollElement, viewportHeight } =\n useDataTableScrollViewport(tableScrollContainerRef, currentViewMode);\n const openFileDialog = React.useCallback(() => {\n if (fileUpload?.disabled) {\n return;\n }\n\n fileInputRef.current?.click();\n }, [fileUpload?.disabled]);\n const handleSelectedFiles = React.useCallback(\n (files: FileList | Array) => {\n runAction(\n {\n source: \"fileUpload\",\n },\n () => fileUpload?.onFilesSelected(files),\n );\n },\n [fileUpload, runAction],\n );\n\n const tableColumns = useDataTableColumns({\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n editingRowId,\n enableRowSelection,\n getRowCanExpand,\n isSavingEdit,\n labels: resolvedLabels,\n lastSelectedRowIdRef,\n renderExpandedRow,\n rowActions: guardedRowActions,\n saveEdit,\n startEditingRow,\n tableRef,\n });\n\n const {\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n isPageCountKnown,\n renderedRows,\n reorderColumn,\n rowsToRender,\n sentinelRef,\n table,\n virtualPaddingBottom,\n virtualPaddingTop,\n visibleLeafColumns,\n } = useDataTableInstance({\n autoResetPageIndex: false,\n columnResizeMode,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentColumnSizing,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentSorting,\n currentViewMode,\n defaultColumn,\n effectiveColumnVisibility,\n enableColumnResizing,\n enableRowSelection,\n getRowCanExpand,\n globalFilterFn,\n globalFilterValue,\n hasNextPage,\n handleColumnFiltersChange: setCurrentColumnFilters,\n handleColumnOrderChange: setCurrentColumnOrder,\n handleColumnPinningChange: setCurrentColumnPinning,\n handleColumnVisibilityChange: setCurrentColumnVisibility,\n handleExpandedChange: setCurrentExpanded,\n infiniteScroll,\n manualFiltering,\n manualPagination,\n manualSorting,\n onActionError,\n onPageIndexChange: handlePageIndexPropChange,\n onPageSizeChange: handlePageSizePropChange,\n pageCount,\n pageIndex: resolvedPageIndex,\n pageSize: resolvedPageSize,\n renderExpandedRow,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n shouldRenderInitialLoading,\n tableColumns,\n tableData,\n tableGetRowId,\n tableRef,\n tableScrollElement,\n totalRowCount,\n virtualization,\n viewportHeight,\n });\n const columnLayout = useColumnLayout({\n columns,\n columnSizing: currentColumnSizing,\n editableRows: Boolean(editableRows),\n enableRowSelection,\n hasRowActions: rowActions.length > 0,\n hasRowExpansion: Boolean(renderExpandedRow),\n layoutMode,\n uiClassNames,\n visibleLeafColumns,\n });\n const { explicitlySizedColumnIds, fillMinWidth, getColumnLayout } =\n columnLayout;\n const explicitCustomCellColumnIds = React.useMemo(() => {\n return new Set(\n columns.flatMap((column, index) => {\n return Object.prototype.hasOwnProperty.call(column, \"cell\") &&\n typeof column.cell === \"function\"\n ? [getColumnId(column, index)]\n : [];\n }),\n );\n }, [columns]);\n const visibleLeafColumnCount = visibleLeafColumns.length;\n const bodyRowComponents = React.useMemo(\n () => ({\n Checkbox,\n Input,\n Skeleton,\n TableCell,\n TableRow,\n }),\n [],\n );\n const hasCardTitle = React.useMemo(\n () => columns.some((column) => column.meta?.cardTitle),\n [columns],\n );\n const primeColumnForResize = React.useCallback(\n (columnId: string, currentSize: number) => {\n if (\n explicitlySizedColumnIds.has(columnId) ||\n Object.prototype.hasOwnProperty.call(\n table.getState().columnSizing,\n columnId,\n )\n ) {\n return;\n }\n\n flushSync(() => {\n table.setColumnSizing((current) => ({\n ...current,\n [columnId]: currentSize,\n }));\n });\n },\n [explicitlySizedColumnIds, table],\n );\n const resetColumnSize = React.useCallback(\n (columnId: string) => {\n if (explicitlySizedColumnIds.has(columnId)) {\n table.getColumn(columnId)?.resetSize();\n return;\n }\n\n table.setColumnSizing((current) => {\n if (!Object.prototype.hasOwnProperty.call(current, columnId)) {\n return current;\n }\n\n const next = { ...current };\n delete next[columnId];\n return next;\n });\n },\n [explicitlySizedColumnIds, table],\n );\n\n const filteredData = table\n .getFilteredRowModel()\n .rows.map((row) => row.original);\n const emptyNode =\n typeof emptyState === \"function\"\n ? emptyState({\n rows: filteredData,\n toolbarQueryValue: localSearchValue,\n })\n : emptyState;\n const {\n columnVisibilityOptions,\n effectiveToolbarActions,\n handleClearColumnFilters,\n handleToolbarColumnFilterChange,\n handleToolbarColumnPinningChange,\n toolbarColumnFilters,\n } = useDataTableToolbarFeatures({\n columns,\n currentColumnFilters,\n currentColumnPinning,\n csvExport,\n effectiveColumnVisibility,\n enableColumnFilters,\n handleColumnFiltersChange: setCurrentColumnFilters,\n handleColumnPinningChange: setCurrentColumnPinning,\n labels: resolvedLabels,\n table,\n toolbarActions,\n visibleData,\n });\n const guardedToolbarActions = React.useMemo(\n () =>\n effectiveToolbarActions.map((action) => ({\n ...action,\n onClick: (context: {\n rows: Array;\n openFileDialog?: () => void;\n }) => {\n runAction(\n {\n actionKey: action.key,\n source: \"toolbarAction\",\n },\n () => action.onClick(context),\n );\n },\n })),\n [effectiveToolbarActions, runAction],\n );\n const guardedSelectionActions = React.useMemo(\n () =>\n selectionActions.map((action) => ({\n ...action,\n onClick: (context: Parameters[0]) => {\n runAction(\n {\n actionKey: action.key,\n source: \"selectionAction\",\n },\n () => action.onClick(context),\n );\n },\n })),\n [runAction, selectionActions],\n );\n const currentDataTableState = React.useMemo(\n () => ({\n sorting: currentSorting,\n pagination: currentPagination,\n rowSelection: currentRowSelection,\n columnVisibility: currentColumnVisibility,\n columnFilters: currentColumnFilters,\n expanded: currentExpanded,\n columnOrder: currentColumnOrder,\n columnPinning: currentColumnPinning,\n columnSizing: currentColumnSizing,\n density: currentDensity,\n viewMode: currentViewMode,\n showHiddenRows: currentShowHiddenRows,\n globalFilter: localSearchValue,\n }),\n [\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n localSearchValue,\n ],\n );\n const getCurrentState = React.useCallback(\n () => cloneDataTableState(currentDataTableState),\n [currentDataTableState],\n );\n const restoreState = React.useCallback(\n (nextState: Partial) => {\n if (nextState.sorting !== undefined) {\n table.setSorting(nextState.sorting);\n }\n if (nextState.pagination !== undefined) {\n table.setPagination(nextState.pagination);\n }\n if (nextState.rowSelection !== undefined) {\n table.setRowSelection(nextState.rowSelection);\n }\n if (nextState.columnVisibility !== undefined) {\n table.setColumnVisibility(nextState.columnVisibility);\n }\n if (nextState.columnFilters !== undefined) {\n table.setColumnFilters(nextState.columnFilters);\n }\n if (nextState.expanded !== undefined) {\n table.setExpanded(nextState.expanded);\n }\n if (nextState.columnOrder !== undefined) {\n table.setColumnOrder(nextState.columnOrder);\n }\n if (nextState.columnPinning !== undefined) {\n table.setColumnPinning(nextState.columnPinning);\n }\n if (nextState.columnSizing !== undefined) {\n table.setColumnSizing(nextState.columnSizing);\n }\n if (nextState.density !== undefined) {\n handleDensityChange(nextState.density);\n }\n if (nextState.viewMode !== undefined) {\n handleViewModeChange(nextState.viewMode);\n }\n if (nextState.showHiddenRows !== undefined) {\n handleShowHiddenRowsChange(nextState.showHiddenRows);\n }\n if (nextState.globalFilter !== undefined) {\n setLocalSearchValue(nextState.globalFilter);\n }\n },\n [\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n setLocalSearchValue,\n table,\n ],\n );\n const clearPersistedState = React.useCallback(\n () => clearDataTableColumnPrefs(persistence ?? columnPrefsKey),\n [columnPrefsKey, persistence],\n );\n const resetColumnLayout = React.useCallback<\n DataTableApi[\"resetColumnLayout\"]\n >(\n (options) => {\n if (options?.clearPersistence) {\n clearPersistedState();\n }\n restoreState({\n columnVisibility: initialState?.columnVisibility ?? {},\n columnOrder: initialState?.columnOrder ?? [],\n columnPinning:\n initialState?.columnPinning ?? getInitialColumnPinning(columns),\n columnSizing: initialState?.columnSizing ?? {},\n });\n },\n [\n clearPersistedState,\n columns,\n initialState,\n restoreState,\n ],\n );\n const resetState = React.useCallback[\"resetState\"]>(\n (options) => {\n if (options?.clearPersistence) {\n clearPersistedState();\n }\n restoreState({\n sorting: initialState?.sorting ?? [],\n pagination: initialState?.pagination ?? {\n pageIndex: 0,\n pageSize: rowsPerPageOptions[0] ?? 20,\n },\n rowSelection: initialState?.rowSelection ?? {},\n columnVisibility: initialState?.columnVisibility ?? {},\n columnFilters: initialState?.columnFilters ?? [],\n expanded: initialState?.expanded ?? {},\n columnOrder: initialState?.columnOrder ?? [],\n columnPinning:\n initialState?.columnPinning ?? getInitialColumnPinning(columns),\n columnSizing: initialState?.columnSizing ?? {},\n density: initialState?.density ?? \"comfortable\",\n viewMode: initialState?.viewMode ?? \"table\",\n showHiddenRows: initialState?.showHiddenRows ?? false,\n globalFilter: initialState?.globalFilter ?? \"\",\n });\n },\n [\n clearPersistedState,\n columns,\n initialState,\n restoreState,\n rowsPerPageOptions,\n ],\n );\n const getSavedViews = React.useCallback(\n () => readDataTableSavedViews(savedViews),\n [savedViews],\n );\n const createSavedView = React.useCallback<\n DataTableApi[\"createSavedView\"]\n >(\n (name) =>\n createDataTableSavedView(savedViews, name, getCurrentState()),\n [getCurrentState, savedViews],\n );\n const applySavedView = React.useCallback<\n DataTableApi[\"applySavedView\"]\n >(\n (id) => {\n const view = readDataTableSavedViews(savedViews).find(\n (candidate) => candidate.id === id,\n );\n if (!view) {\n return false;\n }\n restoreState(view.state);\n savedViews?.onApply?.(view);\n return true;\n },\n [restoreState, savedViews],\n );\n const renameSavedView = React.useCallback<\n DataTableApi[\"renameSavedView\"]\n >(\n (id, name) => renameDataTableSavedView(savedViews, id, name),\n [savedViews],\n );\n const deleteSavedView = React.useCallback<\n DataTableApi[\"deleteSavedView\"]\n >(\n (id) => deleteDataTableSavedView(savedViews, id),\n [savedViews],\n );\n const clearSavedViews = React.useCallback(\n () => clearDataTableSavedViews(savedViews),\n [savedViews],\n );\n const exportCsvFromApi = React.useCallback<\n DataTableApi[\"exportCsv\"]\n >(\n (options) =>\n exportDataTableCsv({\n csvExport: options ?? (csvExport || true),\n labels: resolvedLabels,\n table,\n }),\n [csvExport, resolvedLabels, table],\n );\n React.useImperativeHandle(\n apiRef,\n () => ({\n getTable: () => tableRef.current,\n getState: getCurrentState,\n snapshot: getCurrentState,\n restore: restoreState,\n resetColumnLayout,\n resetState,\n clearPersistedState,\n getSavedViews,\n createSavedView,\n applySavedView,\n renameSavedView,\n deleteSavedView,\n clearSavedViews,\n focus: () => {\n containerRef.current?.focus();\n },\n scrollToRow: (rowId) =>\n scrollDataTableElementIntoView(containerRef.current, \"row\", rowId),\n scrollToColumn: (columnId) =>\n scrollDataTableElementIntoView(\n containerRef.current,\n \"column\",\n columnId,\n ),\n exportCsv: exportCsvFromApi,\n }),\n [\n applySavedView,\n clearPersistedState,\n clearSavedViews,\n createSavedView,\n deleteSavedView,\n exportCsvFromApi,\n getSavedViews,\n getCurrentState,\n renameSavedView,\n resetColumnLayout,\n resetState,\n restoreState,\n ],\n );\n\n return (\n \n \n {fileUpload ? (\n {\n const files = event.currentTarget.files;\n if (files?.length) {\n handleSelectedFiles(files);\n }\n event.currentTarget.value = \"\";\n }}\n />\n ) : null}\n \n \n {showToolbar ? (\n \n ) : null}\n\n \n {currentViewMode === \"card\" && cardRenderer ? (\n \n ) : (\n \n )}\n \n \n {children}\n \n \n \n \n \n );\n };\n}\n\nfunction runDataTableAction(\n action: () => void | Promise,\n context: Omit, \"error\">,\n onActionError: DataTableProps[\"onActionError\"],\n) {\n let result: void | Promise;\n try {\n result = action();\n } catch (error) {\n onActionError?.({ ...context, error });\n return;\n }\n\n void Promise.resolve(result).catch((error: unknown) => {\n onActionError?.({ ...context, error });\n });\n}\n\nfunction useDataTableStateSliceChange(\n key: K,\n onLegacyChange: ((value: DataTableState[K]) => void) | undefined,\n onStateChange: DataTableProps[\"onStateChange\"],\n) {\n const handleChange = React.useCallback(\n (value: DataTableState[K]) => {\n onLegacyChange?.(value);\n onStateChange?.((current) => ({\n ...current,\n [key]: value,\n }));\n },\n [key, onLegacyChange, onStateChange],\n );\n\n return onLegacyChange || onStateChange ? handleChange : undefined;\n}\n\nfunction useDataTableStateConflictWarnings(\n state: Partial | undefined,\n legacySlices: Record,\n) {\n const warnedSlicesRef = React.useRef(new Set());\n\n React.useEffect(() => {\n if (!state || !isDevelopmentEnvironment()) {\n return;\n }\n\n for (const key of Object.keys(legacySlices) as Array<\n keyof DataTableState\n >) {\n if (\n state[key] === undefined ||\n !legacySlices[key] ||\n warnedSlicesRef.current.has(key)\n ) {\n continue;\n }\n\n warnedSlicesRef.current.add(key);\n console.warn(\n `[data-table-pro] Both state.${key} and its legacy controlled prop were provided. The legacy prop takes precedence during the 4.x compatibility window.`,\n );\n }\n }, [legacySlices, state]);\n}\n\nfunction isDevelopmentEnvironment() {\n const nodeEnvironment = (\n globalThis as {\n process?: { env?: { NODE_ENV?: string } };\n }\n ).process?.env?.NODE_ENV;\n\n return nodeEnvironment !== \"production\";\n}\n\nfunction cloneDataTableState(state: DataTableState): DataTableState {\n return {\n sorting: state.sorting.map((item) => ({ ...item })),\n pagination: { ...state.pagination },\n rowSelection: { ...state.rowSelection },\n columnVisibility: { ...state.columnVisibility },\n columnFilters: state.columnFilters.map((item) => ({ ...item })),\n expanded:\n typeof state.expanded === \"boolean\"\n ? state.expanded\n : { ...state.expanded },\n columnOrder: [...state.columnOrder],\n columnPinning: {\n left: state.columnPinning.left\n ? [...state.columnPinning.left]\n : undefined,\n right: state.columnPinning.right\n ? [...state.columnPinning.right]\n : undefined,\n },\n columnSizing: { ...state.columnSizing },\n density: state.density,\n viewMode: state.viewMode,\n showHiddenRows: state.showHiddenRows,\n globalFilter: state.globalFilter,\n };\n}\n\nfunction scrollDataTableElementIntoView(\n container: HTMLDivElement | null,\n kind: \"row\" | \"column\",\n value: string,\n) {\n if (!container) {\n return false;\n }\n\n const attribute = kind === \"row\" ? \"data-row-id\" : \"data-column-id\";\n const element = Array.from(\n container.querySelectorAll(`[${attribute}]`),\n ).find((candidate) => candidate.getAttribute(attribute) === value);\n if (!element) {\n return false;\n }\n\n element.scrollIntoView?.({ block: \"nearest\", inline: \"nearest\" });\n return true;\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-54H6DRO6.js b/dist/chunk-54H6DRO6.js new file mode 100644 index 0000000..cbf57aa --- /dev/null +++ b/dist/chunk-54H6DRO6.js @@ -0,0 +1,2 @@ +import {a as a$1,b}from'./chunk-M77BQPKU.js';import {w,u,c,z,A,G,K,D,L,F,v as v$1,x,y,I,J,N,E,Q,o,t,j as j$1,l,r,a as a$2,q,p,H,M,B,C,k,i}from'./chunk-ZGXFBFNQ.js';import {a,j,c as c$1,e,f,d}from'./chunk-PFB5LOU7.js';import*as v from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {useReactTable,getPaginationRowModel,getExpandedRowModel,getSortedRowModel,getFilteredRowModel,getCoreRowModel}from'@tanstack/react-table';import {flushSync}from'react-dom';function Mt({cardClassName:e,cardGridClassName:a$1,cardSizing:n,cardRenderer:t,currentRowSelection:o,DataTableCardView:d,DataTableEmptyState:l,dragAndDrop:u,editableRows:g,editingRowId:f,emptyNode:P,enableRowSelection:x,flexGrow:S,getRowClassName:R,hasCardTitle:k,infiniteScroll:E,localSearchValue:O,onRowClick:T,renderedRows:m,renderExpandedRow:c,resolvedLabels:h,resolvedLoadingRowCount:b,rowActions:r=[],ScrollArea:C,sentinelRef:D,setCurrentRowSelection:z,setEditingRowId:N,shouldRenderInitialLoading:U,tableContainerClassName:F,uiClassNames:I}){let w=U||m.length>0,j=v.useRef(null),K=(ae,oe)=>jsx(d,{rows:ae,cardRenderer:t,cardGridClassName:a$1,cardClassName:e,cardSizing:n,rowActions:r,editableRows:g,renderExpandedRow:c,hasCardTitle:k,rowSelection:o,onRowSelectionChange:z,enableRowSelection:x,editingRowId:f,onEditingRowIdChange:N,getRowClassName:R,onRowClick:T,getRowDraggable:u?.getRowDraggable,onRowDragStart:u?.onRowDragStart,onRowDragEnd:u?.onRowDragEnd,isLoading:oe?.isLoading,loadingRowCount:oe?.loadingRowCount,labels:h});return jsx("div",{ref:j,"data-dtp-slot":"data-table-card-shell",className:a("box-border border-2 border-transparent transition-colors",S?"flex min-h-0 flex-1 flex-col":"h-full",u?.isDragging&&(I.dragActive??"rounded-md border-dashed")),children:jsx(C,{className:a(S?"min-h-0 flex-1":"h-full",I.cardScrollArea,F),children:jsxs("div",{"data-dtp-slot":"data-table-card-viewport",className:a("flex min-h-full min-w-0 flex-col",S&&"min-h-0 flex-1",I.cardViewport),children:[w?U?K([],{isLoading:true,loadingRowCount:b}):K(m):jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center p-4",children:P??jsx(l,{title:O?h.noMatchingRowsTitle:h.noRowsTitle,description:O?h.noMatchingRowsDescription:h.noRowsDescription})}),E?.enabled&&!U?jsx("div",{className:"shrink-0 px-4 pb-4",children:jsx("div",{ref:D,className:"h-4 w-full"})}):null]})})})}var pr=v.lazy(async()=>({default:(await import('./data-table-virtual-card-panel-HHZCRLEB.js')).DataTableVirtualCardPanel}));function Jn(e){return (typeof e.virtualization=="object"?e.virtualization.card:void 0)?.enabled!==true?jsx(Mt,{...e}):jsx(v.Suspense,{fallback:jsx(Mt,{...e}),children:jsx(pr,{...e})})}function qn({children:e,currentPagination:a,DataTableFooter:n,effectivePageCount:t,footerTotalRowCount:o,handleFooterPageIndexChange:d,handleFooterPageSizeChange:l,labels:u,pageCountKnown:g=true,rowsPerPageOptions:f,showFooter:P}){return !P&&!e?null:jsxs("div",{"data-dtp-slot":"data-table-footer",className:"shrink-0",children:[P?jsx(n,{pageIndex:a.pageIndex,pageCount:t,pageCountKnown:g,pageSize:a.pageSize,totalRowCount:o,rowsPerPageOptions:f,onPageIndexChange:d,onPageSizeChange:l,labels:u}):null,e]})}function Yn({allRows:e,columnFilters:a,columnVisibilityOptions:n,compactToolbar:t,customToolbar:o,DataTableToolbar:d,description:l,effectiveToolbarActions:u,enableColumnPinning:g,enableDensityToggle:f,enableViewToggle:P,hiddenRowsLabel:x,labels:S,onClearColumnFilters:R,onColumnFilterChange:k,onColumnPinningChange:E,onDensityChange:O,onShowHiddenRowsChange:T,onToolbarQueryValueChange:m,onViewModeChange:c,openFileDialog:h,selectedRows:b,selectionActions:r,showHiddenRows:C,table:D,title:z,toolbarQueryPlaceholder:N,toolbarQueryValue:U,toolbarVisibility:F,density:I,viewMode:w}){return jsx("div",{"data-dtp-slot":"data-table-toolbar",className:"shrink-0",children:jsx(d,{title:z,description:l,toolbarQueryValue:U,toolbarQueryPlaceholder:N,onToolbarQueryValueChange:m,customToolbar:o,compactToolbar:t,viewMode:w,onViewModeChange:c,enableViewToggle:P,toolbarActions:u,selectionActions:r,selectedRows:b,showHiddenRows:C,hiddenRowsLabel:x,onShowHiddenRowsChange:T,allRows:e,columnVisibilityOptions:n,onColumnVisibilityChange:(j,K)=>{D.getColumn(j)?.toggleVisibility(K);},enableColumnPinning:g,onColumnPinningChange:E,columnFilters:a,onColumnFilterChange:k,onClearColumnFilters:R,density:I,onDensityChange:O,enableDensityToggle:f,labels:S,toolbarVisibility:F,openFileDialog:h})})}var de={searchPlaceholder:"Search rows...",searchTable:"Search table",clearSearch:"Clear search",noRowsTitle:"No rows yet",noRowsDescription:"Create a record or refresh this view once data exists.",noMatchingRowsTitle:"No matching rows",noMatchingRowsDescription:"Try a different search term or clear filters.",tableOptions:"Show table options",columns:"Columns",filters:"Filters",clearFilters:"Clear filters",selectedRows:e=>`${e} record${e===1?"":"s"} selected`,showHiddenRows:e=>`Show ${e}`,recordsPerPage:"Records per page",totalRecords:e=>`Total records: ${e}`,pageStatus:(e,a)=>`Page ${e+1} of ${a}`,pageStatusUnknown:e=>`Page ${e+1}`,pagination:"Pagination",morePages:"More pages",firstPage:"First page",previousPage:"Previous page",nextPage:"Next page",lastPage:"Last page",selectAllVisibleRows:"Select all visible rows",selectRow:"Select row",selectCardRow:e=>`Select row ${e}`,switchToTableView:"Switch to table view",switchToCardView:"Switch to card view",tableView:"Table view",cardView:"Card view",allFilterOptions:"All",actions:"Actions",rowActions:"Row actions",editRow:"Edit row",saveEdit:"Save",cancelEdit:"Cancel editing",expandRow:"Expand row",collapseRow:"Collapse row",exportCsv:"Export CSV",density:"Density",compactDensity:"Compact",comfortableDensity:"Comfortable",spaciousDensity:"Spacious",pinLeft:"Pin left",pinRight:"Pin right",unpin:"Unpin"};function Zn(e){return {...de,...e}}function eo({Button:e,Checkbox:a$1,DataTableRowActions:n,Tooltip:t,TooltipContent:o,TooltipTrigger:d,cancelEditing:l,columns:u$1,editableRows:g,editingRowId:f,enableRowSelection:P,getRowCanExpand:x,isSavingEdit:S,labels:R,lastSelectedRowIdRef:k,renderExpandedRow:E,rowActions:O,saveEdit:T,startEditingRow:m,tableRef:c$1}){let h=v.useCallback((b,r)=>{let C=c$1.current;if(!C||!k.current)return;let D=C.getRowModel().rows.filter(I=>!w(I.original)),z=D.findIndex(I=>I.id===k.current),N=D.findIndex(I=>I.id===b);if(z<0||N<0)return;let U=Math.min(z,N),F=Math.max(z,N);C.setRowSelection(I=>{let w={...I};for(let j of D.slice(U,F+1))r?w[j.id]=true:delete w[j.id];return w});},[k,c$1]);return v.useMemo(()=>{let b=[];return E&&b.push({id:"__expand__",enableResizing:false,enableSorting:false,enableHiding:false,size:u,minSize:u,maxSize:u,header:()=>jsx("span",{className:"sr-only",children:R.expandRow}),cell:({row:r})=>{if(!(x?.(r.original)??!!E))return null;let D=r.getIsExpanded();return jsx("div",{className:"flex items-center justify-center",children:jsx(e,{type:"button",variant:"ghost",size:"icon-sm","aria-label":D?R.collapseRow:R.expandRow,"aria-expanded":D,onClick:()=>r.toggleExpanded(),children:jsx(c,{className:a("transition-transform",D?"rotate-0":"-rotate-90")})})})}}),P&&b.push({id:"__select__",enableResizing:false,enableSorting:false,enableHiding:false,size:u,minSize:u,maxSize:u,header:({table:r})=>jsx("div",{className:"flex items-center justify-center",children:jsx(a$1,{className:"my-0.5",checked:r.getIsAllPageRowsSelected(),onCheckedChange:C=>{r.toggleAllPageRowsSelected(C===true);},"aria-label":R.selectAllVisibleRows??de.selectAllVisibleRows})}),cell:({row:r})=>jsx("div",{className:"flex items-center justify-center",children:jsx(a$1,{className:"my-0.5",checked:r.getIsSelected(),onClick:C=>{if(!C.shiftKey||!k.current){k.current=r.id;return}C.preventDefault(),C.stopPropagation(),h(r.id,!r.getIsSelected()),k.current=r.id;},onCheckedChange:C=>{k.current=r.id,r.toggleSelected(C===true);},"aria-label":R.selectRow??de.selectRow})})}),b.push(...u$1.map(r=>z(r))),(O.length||g)&&b.push({id:"__actions__",enableSorting:false,enableResizing:false,enableHiding:false,size:u,minSize:u,maxSize:u,header:()=>jsx("span",{className:"sr-only",children:R.actions}),cell:({row:r})=>{let C=r.id;return f===C?jsxs("div",{className:"flex w-full items-center justify-end gap-2",children:[jsx(e,{type:"button",size:"sm",disabled:S,onClick:()=>{T(r.original);},children:R.saveEdit}),jsxs(t,{children:[jsx(d,{asChild:true,children:jsxs(e,{type:"button",size:"icon-sm",variant:"ghost",onClick:l,children:[jsx(c,{className:"rotate-45"}),jsx("span",{className:"sr-only",children:R.cancelEdit})]})}),jsx(o,{children:R.cancelEdit})]})]}):jsx("div",{className:"flex w-full items-center justify-center",children:jsx(n,{row:r.original,rowActions:O,editableRows:g,isEditing:false,onStartEditing:()=>{m(r.original,r.id);},onCancelEditing:()=>{},labels:R})})}}),b},[e,a$1,n,t,o,d,l,u$1,g,f,P,x,S,R,k,E,O,T,h,m])}function ao({enabled:e,hasMore:a,isLoadingMore:n,onLoadMore:t,onError:o}){let d=v.useRef(null),l=v.useRef(false),u=v.useEffectEvent(t),g=v.useEffectEvent(f=>{o?.(f);});return v.useEffect(()=>{if(!e||!a||n)return;let f=d.current;if(!f)return;let P=new IntersectionObserver(x=>{if(x[0].isIntersecting&&!l.current){l.current=true;let R;try{R=u();}catch(k){l.current=false,g(k);return}Promise.resolve(R).catch(k=>{g(k);}).finally(()=>{l.current=false;});}},{rootMargin:"200px 0px 200px 0px"});return P.observe(f),()=>{P.disconnect();}},[e,a,n]),d}function no({enabled:e,maxPageIndex:a,onPageIndexChange:n,pageIndex:t,setLocalPageIndex:o}){v.useEffect(()=>{if(!e||t>=0&&t<=a)return;let d=Math.min(Math.max(t,0),a);o(d),n?.(d);},[e,a,n,t,o]);}function oo({autoResetPageIndex:e,columnResizeMode:a,currentColumnFilters:n,currentColumnOrder:t,currentColumnPinning:o,currentColumnSizing:d,currentExpanded:l,currentPagination:u,currentRowSelection:g,currentSorting:f,defaultColumn:P,effectiveColumnVisibility:x,enableColumnResizing:S,enableRowSelection:R,getRowCanExpand:k,globalFilterFn:E,globalFilterValue:O,hasNextPage:T,handleColumnFiltersChange:m,handleColumnOrderChange:c,handleColumnPinningChange:h,handleColumnVisibilityChange:b,handleExpandedChange:r,infiniteScroll:C,manualFiltering:D$1,manualPagination:z,manualSorting:N,onActionError:U,onPageIndexChange:F,onPageSizeChange:I,pageCount:w,pageIndex:j,pageSize:K$1,renderExpandedRow:ae,setCurrentRowSelection:oe,setCurrentSorting:A$1,setLocalColumnSizing:G$1,setLocalPagination:W,shouldRenderInitialLoading:De,tableColumns:be,tableData:ge,tableGetRowId:Ve,tableRef:Oe,totalRowCount:ve}){let J=v.useMemo(()=>A(be).map(({column:y,index:V})=>G(y,V)),[be]),Pe=v.useMemo(()=>{let y=J,V=y.filter(q=>!K(q)&&q!=="__spacer__"),me=new Set(V),Re=t.filter(q=>me.has(q)),X=V.filter(q=>!Re.includes(q));return [...y.filter(q=>q==="__expand__"||q==="__select__"),...Re,...X,...y.filter(q=>q==="__spacer__"),...y.filter(q=>q==="__actions__")]},[t,J]),we=v.useMemo(()=>{let y=new Set(J),V=new Set(J.filter(X=>!K(X)&&X!=="__spacer__")),me=(o.left??[]).filter(X=>V.has(X)),Re=(o.right??[]).filter(X=>V.has(X));return {left:[...["__expand__","__select__"].filter(X=>y.has(X)),...me],right:[...Re,...["__actions__"].filter(X=>y.has(X))]}},[o,J]),M=v.useMemo(()=>({sorting:f,pagination:u,rowSelection:g,columnVisibility:x,columnFilters:n,globalFilter:O,expanded:l,columnOrder:Pe,columnPinning:we,columnSizing:d}),[n,d,l,u,g,f,x,Pe,we,O]),ie=v.useCallback(y=>{let V=typeof y=="function"?y(u):y;(j===void 0||K$1===void 0)&&W(me=>({pageIndex:j===void 0?V.pageIndex:me.pageIndex,pageSize:K$1===void 0?V.pageSize:me.pageSize})),V.pageIndex!==u.pageIndex&&F?.(V.pageIndex),V.pageSize!==u.pageSize&&I?.(V.pageSize);},[u,F,I,j,K$1,W]),Je=v.useCallback(y=>{G$1(y);},[G$1]),ue=useReactTable({data:ge,columns:be,getCoreRowModel:getCoreRowModel(),getFilteredRowModel:D$1?void 0:getFilteredRowModel(),getSortedRowModel:N?void 0:getSortedRowModel(),getExpandedRowModel:ae?getExpandedRowModel():void 0,getPaginationRowModel:z||C?.enabled?void 0:getPaginationRowModel(),enableRowSelection:R,enableMultiRowSelection:R,enableColumnResizing:S,columnResizeMode:a,getRowId:Ve,getRowCanExpand:ae?y=>k?.(y.original)??true:void 0,globalFilterFn:E??D,getColumnCanGlobalFilter:y=>y.columnDef.enableGlobalFilter!==false&&typeof y.accessorFn=="function",manualSorting:N,manualFiltering:D$1,manualPagination:z||!!C?.enabled,defaultColumn:P,autoResetPageIndex:e,state:M,onSortingChange:A$1,onPaginationChange:ie,onRowSelectionChange:oe,onColumnVisibilityChange:b,onColumnFiltersChange:m,onExpandedChange:r,onColumnOrderChange:c,onColumnPinningChange:h,onColumnSizingChange:Je});Oe.current=ue;let pe=ue.getVisibleLeafColumns(),ia=v.useCallback((y,V)=>{if(y===V)return;let me=ue.getAllLeafColumns().map(X=>X.id).filter(X=>!K(X)),Re=L(t.length?t:me,y,V);c(Re);},[t,c,ue]),ee=ue.getRowModel().rows,_e=ee.map((y,V)=>({row:y,rowIndex:V})),he=z||!!C?.enabled,He=he?void 0:ue.getFilteredRowModel().rows.length,xe=ve??He,Be=!he||w!==void 0||ve!==void 0,$e=xe,Ue=De?1:w??(xe!==void 0?Math.max(1,Math.ceil(xe/u.pageSize)):he?u.pageIndex+(T?2:1):ue.getPageCount()),Ke=Math.max(0,Ue-1),ye=v.useCallback(y=>{j===void 0&&W(V=>V.pageIndex===y?V:{...V,pageIndex:y});},[j,W]);no({enabled:!De&&!C?.enabled&&Be,maxPageIndex:Ke,onPageIndexChange:F,pageIndex:u.pageIndex,setLocalPageIndex:ye});let je=v.useCallback(y=>{y!==u.pageIndex&&(F?.(y),j===void 0&&W(V=>V.pageIndex===y?V:{...V,pageIndex:y}));},[u.pageIndex,F,j,W]),ra=v.useCallback(y=>{u.pageIndex!==0&&F?.(0),y!==u.pageSize&&I?.(y),K$1===void 0&&W({pageIndex:0,pageSize:y});},[u.pageIndex,u.pageSize,F,I,K$1,W]),qe=ao({enabled:!!C?.enabled,hasMore:!!C?.hasMore,isLoadingMore:C?.isLoadingMore,onLoadMore:()=>C?.onLoadMore(),onError:y=>{U?.({error:y,source:"infiniteScroll"});}});return {effectivePageCount:Ue,footerTotalRowCount:$e,handleFooterPageIndexChange:je,handleFooterPageSizeChange:ra,isPageCountKnown:Be,renderedRows:ee,reorderColumn:ia,rowsToRender:_e,sentinelRef:qe,table:ue,virtualPaddingBottom:0,virtualPaddingTop:0,visibleLeafColumns:pe}}function Me({defaultValue:e,onChange:a,value:n}){let[t,o]=v.useState(e),d=n??t,l=v.useRef(d);v.useEffect(()=>{l.current=d;},[d]);let u=v.useCallback(g=>{let f=typeof g=="function"?g(l.current):g;l.current=f,a?.(f),n===void 0&&o(f);},[a,n]);return [d,u]}var hr="data-table-pro:column-prefs:",ro=1,io=["visibility","sizing","order","pinning","density"];function lo(e){let a=Ft(e);if(!a)return {};let n=It(a);if(!n)return {};let t=zt(a.key),o;try{o=n.getItem(t);}catch(g){return a.onError?.({error:g,operation:"read"}),{}}if(!o)return {};let d;try{d=(a.deserialize??JSON.parse)(o);}catch(g){return a.onError?.({error:g,operation:"deserialize"}),{}}let l=a.version??ro,u;if(yr(d))if(d.version===l)u=d.state;else if(a.migrate)try{u=a.migrate({version:d.version,state:d.state},l);}catch(g){return a.onError?.({error:g,operation:"migrate"}),{}}else return {};else u=d;return uo(Rr(u),a.slices)}function so(e){let a=Ft(e);if(!a)return false;let n=It(a);if(!n)return false;try{return n.removeItem(zt(a.key)),!0}catch(t){return a.onError?.({error:t,operation:"remove"}),false}}function co({key:e,persistence:a,prefs:n}){let t=a??Ft(e),o=t?It(t):void 0,d=t?zt(t.key):void 0,l=t?.version??ro,u=Math.max(0,t?.debounceMs??100),g=uo(n,t?.slices),f=v.useMemo(()=>{if(!t)return {value:void 0};try{let x={version:l,state:g};return {value:(t.serialize??JSON.stringify)(x)}}catch(x){return {error:x,value:void 0}}},[t,g,l]),P=v.useEffectEvent((x,S)=>{t?.onError?.({error:x,operation:S});});v.useEffect(()=>{f.error!==void 0&&P(f.error,"serialize");},[f.error]),v.useEffect(()=>{if(!o||!d||f.value===void 0)return;let x=()=>{try{if(o.getItem(d)===f.value)return;o.setItem(d,f.value);}catch(R){P(R,"write");}};if(u===0){x();return}let S=globalThis.setTimeout(x,u);return ()=>{globalThis.clearTimeout(S);}},[u,f.value,o,d]);}function Ft(e){if(e)return typeof e=="string"?{key:e}:e}function It(e){if(e.storage)return e.storage;if(!(typeof window>"u"))try{return window.localStorage}catch(a){e.onError?.({error:a,operation:"read"});return}}function zt(e){return `${hr}${e}`}function yr(e){return za(e)&&Object.prototype.hasOwnProperty.call(e,"version")&&Object.prototype.hasOwnProperty.call(e,"state")}function uo(e,a){let n=new Set(a??io),t={};for(let o of io)n.has(o)&&e[o]!==void 0&&Object.assign(t,{[o]:e[o]});return t}function Rr(e){if(!za(e))return {};let a={},n=Sr(e.visibility);n&&(a.visibility=n);let t=vr(e.sizing);t&&(a.sizing=t);let o=Vt(e.order);if(o&&(a.order=o),za(e.pinning)){let d=Vt(e.pinning.left)??[],l=Vt(e.pinning.right)??[];a.pinning={left:d,right:l};}return Pr(e.density)&&(a.density=e.density),a}function Sr(e){if(za(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="boolean"))}function vr(e){if(za(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="number"&&Number.isFinite(a[1])&&a[1]>=0))}function Vt(e){if(Array.isArray(e))return e.filter(a=>typeof a=="string")}function Pr(e){return e==="compact"||e==="comfortable"||e==="spacious"}function za(e){return !!e&&typeof e=="object"&&!Array.isArray(e)}function po({columnFilters:e,columnOrder:a,columnPinning:n,columnSizing:t,columnPrefsKey:o,persistence:d,columnVisibility:l,columns:u,data:g,density:f,enableRowSelection:P,enableToolbarQueryFiltering:x$1,expanded:S,getRowId:R,hiddenRows:k,initialState:E,isLoading:O,loadingRowCount:T,manualFiltering:m,onColumnFiltersChange:c,onColumnOrderChange:h,onColumnPinningChange:b,onColumnSizingChange:r,onColumnVisibilityChange:C,onDensityChange:D,onExpandedChange:z,onPageIndexChange:N,onRowSelectionChange:U,onShowHiddenRowsChange:F$1,onSortingChange:I,onToolbarQueryValueChange:w$1,onViewModeChange:j$1,pageIndex:K,pageSize:ae,resolvedLabels:oe,rowSelection:A$1,rowsPerPageOptions:G$1,selectionActions:W,showHiddenRows:De,sorting:be,toolbarQueryDebounceMs:ge,toolbarQueryPlaceholder:Ve,toolbarQueryValue:Oe,viewMode:ve,containerRef:J}){let Pe=v.useMemo(()=>d??(o?{key:o}:void 0),[o,d]),we=v.useMemo(()=>lo(Pe),[Pe]),[M,ie]=v.useState({pageIndex:E?.pagination?.pageIndex??0,pageSize:E?.pagination?.pageSize??G$1[0]??20}),[Je,ue]=Me({value:be,onChange:I,defaultValue:()=>E?.sorting??[]}),[pe,ia]=Me({value:A$1,onChange:U,defaultValue:()=>E?.rowSelection??{}}),[ee,_e]=Me({value:l,onChange:C,defaultValue:()=>E?.columnVisibility??we.visibility??{}}),[he,He]=Me({value:e,onChange:c,defaultValue:()=>E?.columnFilters??[]}),[xe,Be]=Me({value:S,onChange:z,defaultValue:()=>E?.expanded??{}}),[$e,Ue]=Me({value:a,onChange:h,defaultValue:()=>E?.columnOrder??we.order??[]}),[Ke,ye]=Me({value:n,onChange:b,defaultValue:()=>E?.columnPinning??we.pinning??F(u)}),[je,ra]=Me({value:t,onChange:r,defaultValue:()=>E?.columnSizing??we.sizing??{}}),[qe,y]=Me({value:ve,onChange:j$1,defaultValue:()=>E?.viewMode??"table"}),[V,me]=Me({value:De,onChange:F$1,defaultValue:()=>E?.showHiddenRows??false}),[Re,X]=Me({value:f,onChange:D,defaultValue:()=>E?.density??we.density??"comfortable"}),q=Oe??E?.globalFilter??"",Ra=Ve??oe.searchPlaceholder,i=ge??250,[$,fe]=v.useState(q),ua=a$1(J),Sa=!!w$1,va=v.useRef(q),st=v.useEffectEvent(_=>{va.current=_,w$1?.(_);});v.useEffect(()=>{va.current=q,fe(q);},[q]),v.useEffect(()=>{if(!Sa||$===q||$===va.current)return;let _=window.setTimeout(()=>{st($);},i);return ()=>{window.clearTimeout(_);}},[Sa,$,i,q]);let pa=v.useMemo(()=>({pageIndex:K??M.pageIndex,pageSize:ae??M.pageSize}),[M.pageIndex,M.pageSize,K,ae]),la=Math.max(1,T??Math.min(5,pa.pageSize)),re=x$1?$:"",Y=v.useCallback(_=>{y(_);},[y]),le=v.useCallback(_=>{me(_);},[me]),ne=v.useCallback(_=>{X(_);},[X]),La=v.useCallback(()=>{N?.(0),K===void 0&&ie(_=>_.pageIndex===0?_:{..._,pageIndex:0});},[N,K]),Xe=v.useMemo(()=>JSON.stringify({globalFilterValue:re,columnFilters:he}),[he,re]),Pa=v.useRef(Xe);v.useEffect(()=>{if(m){Pa.current=Xe;return}Pa.current!==Xe&&(Pa.current=Xe,La());},[Xe,m,La]),co({persistence:Pe,prefs:{visibility:l?void 0:ee,sizing:t===void 0?je:void 0,order:a?void 0:$e,pinning:n?void 0:Ke,density:f?void 0:Re}});let ma=v.useMemo(()=>A(u).reduce((_,{column:Ie,index:Ba})=>{let mt=G(Ie,Ba);return j(Ie.meta?.hideOn,ua)&&(_[mt]=false),_},{}),[u,ua]),dt=v.useMemo(()=>({...ee,...ma}),[ee,ma]),Ye=v.useMemo(()=>g.filter(_=>c$1(_,k,V)),[V,g,k]),Oa=O&&Ye.length===0,_a=v.useMemo(()=>v$1(la),[la]),ct=Oa?_a:Ye,ut=v.useCallback((_,Ie)=>w(_)?x(Ie):R(_,Ie),[R]),Ze=P||(W?.length??0)>0||Object.values(pe).some(Boolean),Ha=v.useMemo(()=>Ze?new Map(Ye.map((_,Ie)=>[R(_,Ie),_])):new Map,[R,Ze,Ye]),pt=v.useMemo(()=>Ze?Object.entries(pe).filter(([,_])=>_).map(([_])=>Ha.get(_)).filter(_=>!!_):[],[pe,Ha,Ze]);return {currentColumnFilters:he,currentColumnOrder:$e,currentColumnPinning:Ke,currentColumnSizing:je,currentColumnVisibility:ee,currentDensity:Re,currentExpanded:xe,currentPagination:pa,currentRowSelection:pe,currentShowHiddenRows:V,currentSorting:Je,currentViewMode:qe,effectiveColumnVisibility:dt,globalFilterValue:re,handleDensityChange:ne,handleShowHiddenRowsChange:le,handleViewModeChange:Y,localSearchValue:$,resolvedLoadingRowCount:la,resolvedToolbarQueryPlaceholder:Ra,selectedRows:pt,setCurrentColumnFilters:He,setCurrentColumnOrder:Ue,setCurrentColumnPinning:ye,setCurrentColumnVisibility:_e,setCurrentExpanded:Be,setCurrentRowSelection:ia,setCurrentSorting:ue,setLocalColumnSizing:ra,setLocalPagination:ie,setLocalSearchValue:fe,shouldRenderInitialLoading:Oa,tableData:ct,tableGetRowId:ut,toolbarFilteredData:Ye,visibleData:Ye}}var xr={cellStyle:void 0,colStyle:void 0,fixedSide:void 0,headerStyle:void 0,isActionsColumn:false,isExpansionColumn:false,isSelectionColumn:false,isSpacerColumn:false,isUtilityColumn:false,pinnedClassName:void 0,utilityClassName:void 0};function bo({columns:e,columnSizing:a,editableRows:n,enableRowSelection:t,hasRowActions:o,hasRowExpansion:d,layoutMode:l,uiClassNames:u$1,visibleLeafColumns:g}){let f=v.useMemo(()=>{let T=new Set;for(let{column:m,index:c}of A(e))Object.prototype.hasOwnProperty.call(m,"size")&&T.add(G(m,c));return t&&T.add("__select__"),d&&T.add("__expand__"),(o||n)&&T.add("__actions__"),T},[e,n,t,o,d]),P=v.useMemo(()=>{let T=new Map;for(let{column:m,index:c}of A(e)){let h=y(m);h!==void 0&&T.set(G(m,c),h);}return T},[e]),x=v.useMemo(()=>{let T=new Map,m=new Map,c=0;for(let b of g)I(b)==="left"&&(T.set(b.id,c),c+=mo(b));let h=0;for(let b of [...g].reverse())I(b)==="right"&&(m.set(b.id,h),h+=mo(b));return {left:T,right:m}},[g]),S=v.useMemo(()=>{if(l!=="fill")return;let T=g.filter(c=>!K(c.id));return T.length&&T.every(c=>f.has(c.id)||Object.prototype.hasOwnProperty.call(a,c.id))?T[T.length-1]?.id:void 0},[a,f,l,g]),R=v.useMemo(()=>{let T=new Set([...f,...Object.keys(a)]);return S&&T.delete(S),T},[a,f,S]),k=v.useMemo(()=>{let T=new Map;for(let m of g){let c=m.id==="__select__",h=m.id==="__expand__",b=m.id==="__actions__",r=c||h||b,C=m.id==="__spacer__",D=P.get(m.id),z=m.id===S,N=D??(z?m.getSize():void 0),U=!C&&(l==="fit"||r||R.has(m.id)),F=U||N!==void 0?{width:U?r?u:m.getSize():void 0,minWidth:r?u:U?m.getSize():N,maxWidth:U?r?u:m.getSize():void 0}:void 0,I$1=I(m),w=I$1?{insetInlineStart:I$1==="left"?x.left.get(m.id):void 0,insetInlineEnd:I$1==="right"?x.right.get(m.id):void 0}:void 0,j=F||w?{...F,...w}:void 0;T.set(m.id,{cellStyle:j,colStyle:F,fixedSide:I$1,headerStyle:j,isActionsColumn:b,isExpansionColumn:h,isSelectionColumn:c,isSpacerColumn:C,isUtilityColumn:r,pinnedClassName:I$1?J(I$1,u$1,{isUtilityColumn:r}):void 0,utilityClassName:r?"w-[50px] max-w-[50px] min-w-[50px] px-0":void 0});}return T},[S,R,l,P,x,u$1,g]),E=v.useMemo(()=>g.reduce((T,m)=>{let c=k.get(m.id),h=P.get(m.id),b=m.id===S;return c?.isUtilityColumn?T+u:R.has(m.id)?T+m.getSize():T+(h??(b?m.getSize():0))},0),[k,S,R,P,g]),O=v.useCallback(T=>k.get(T)??xr,[k]);return {columnLayouts:k,explicitlySizedColumnIds:f,fillMinWidth:E,getColumnLayout:O}}function mo(e){return K(e.id)?u:e.getSize()}function fo(e,a$1){let n=e.classNames??{},{Card:t,CardContent:o,CardHeader:d,Checkbox:l,Skeleton:u}=e;return function({rows:f,cardRenderer:P,cardSizing:x="fixed",cardGridClassName:S,cardClassName:R,rowActions:k,editableRows:E,renderExpandedRow:O,hasCardTitle:T,rowSelection:m,onRowSelectionChange:c,enableRowSelection:h,editingRowId:b,onEditingRowIdChange:r,getRowClassName:C,onRowClick:D,getRowDraggable:z,onRowDragStart:N,onRowDragEnd:U,isLoading:F=false,loadingRowCount:I=5,labels:w}){let j=x??"fixed",K=S?a("grid",S):kr(j),ae=a("min-h-0 w-full gap-4 p-1",n.cardGrid,K),oe=A=>a("relative min-w-0 max-w-full gap-0 overflow-hidden bg-transparent p-0",Er(j),n.cardItem,R,A);return F?jsx("div",{role:"list","data-dtp-slot":"data-table-card-grid",className:ae,children:Array.from({length:Math.max(1,I)},(A,G)=>jsxs(t,{role:"listitem","aria-hidden":"true","data-dtp-slot":"data-table-card-item",className:oe("min-h-52"),children:[T?jsxs(d,{className:"px-4 pt-4 pb-3",children:[jsx(u,{className:"h-5 w-40 max-w-[70%]"}),jsx(u,{className:"h-4 w-24 max-w-[40%]"})]}):null,jsxs(o,{className:a("space-y-3 pb-4",T?"":"pt-4"),children:[jsx(u,{className:"h-4 w-full"}),jsx(u,{className:"h-4 w-[82%]"}),jsx(u,{className:"h-4 w-[68%]"}),jsx(u,{className:"h-24 w-full rounded-xl"})]})]},`loading-card-${G}`))}):jsx("div",{role:"list","data-dtp-slot":"data-table-card-grid",className:ae,children:f.map(A=>{let G=A.id,W=A.original,De=!!m[G],be=b===G,ge=k.length>0||!!E,Ve=h||ge||T,Oe=h||ge,ve=()=>{D&&D({row:W,rowId:G});};return jsxs(t,{role:"listitem","data-row-id":G,draggable:z?.(W)??false,"data-dtp-slot":"data-table-card-item","data-state":De?"selected":void 0,className:oe(a([C?.(W)].filter(Boolean).join(" "),"transition transition-colors hover:scale-101 data-[state=selected]:scale-101",n.card,De?n.cardSelected:n.cardUnselected)),onDragStart:J=>{N?.({row:W,rowId:G,event:J});},onDragEnd:J=>{U?.({row:W,rowId:G,event:J});},children:[Ve?jsx("div",{"aria-hidden":"true",className:a("pointer-events-none absolute inset-x-0 top-0 z-10 h-24 bg-linear-to-b opacity-0 transition-opacity group-hover/card:opacity-100",n.cardOverlay??"from-transparent via-transparent to-transparent")}):null,jsxs("div",{"data-dtp-slot":"data-table-card-renderer",role:D?"button":void 0,tabIndex:D?0:void 0,className:a("flex min-h-0 max-w-full min-w-0 overflow-hidden rounded-[inherit] [&>*]:min-w-0",Mr(j),D&&"cursor-pointer focus-visible:outline-none"),onClick:J=>{J.target?.closest("[data-row-click-ignore='true']")||ve();},onKeyDown:J=>{J.target?.closest("[data-row-click-ignore='true']")||(J.key==="Enter"||J.key===" ")&&(J.preventDefault(),ve());},children:[P({row:W,rowId:G,isSelected:De,onSelectedChange:J=>{c(go(m,G,J));},actions:k,isEditing:be,startEditing:()=>{r(G);},cancelEditing:()=>{r(null);}}),be||!O||!A.getIsExpanded()?null:O({row:W,rowId:G,tableRow:A})]}),Oe?jsxs(d,{className:"absolute inset-x-0 top-0 z-20 flex flex-row items-center gap-3 space-y-0 px-4 pt-4 pb-8",children:[h?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(l,{checked:De,"aria-label":(w.selectCardRow??de.selectCardRow)(G),onCheckedChange:J=>{c(go(m,G,J===true));}})}):null,jsx("div",{className:"pointer-events-none min-w-0 flex-1"}),ge?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(a$1,{row:W,rowActions:k,editableRows:E,isEditing:be,onStartEditing:()=>{r(G);},onCancelEditing:()=>{r(null);},labels:w})}):null]}):null]},G)})})}}function kr(e){switch(e){case "content":return "flex flex-wrap items-start justify-start";case "fluid":return "grid grid-cols-[repeat(auto-fit,minmax(min(18rem,100%),1fr))]";default:return "grid grid-cols-[repeat(auto-fill,minmax(min(18rem,100%),18rem))] justify-start"}}function Er(e){switch(e){case "content":return "w-fit";case "fluid":return "w-full";default:return}}function Mr(e){switch(e){case "content":return "w-fit";case "fluid":return "w-full flex-1 [&>*]:w-full";default:return "flex-1"}}function go(e,a,n){if(n)return {...e,[a]:true};if(!e[a])return e;let t={...e};return delete t[a],t}function Co(e){let a=e.classNames??{},{Empty:n,EmptyContent:t,EmptyDescription:o$1,EmptyHeader:d,EmptyMedia:l,EmptyTitle:u}=e;return function({title:f="No rows found",description:P="Adjust your filters or create a new record to populate this table."}){return jsxs(n,{className:`min-h-60 rounded-2xl ${a.emptyState??"border bg-transparent"}`,children:[jsxs(d,{children:[jsx(l,{variant:"icon",children:jsx(o,{})}),jsx(u,{children:f}),jsx(o$1,{children:P})]}),jsx(t,{})]})}}function Do(e){let a=e.classNames??{},{Pagination:n,PaginationContent:t,PaginationEllipsis:o,PaginationFirst:d,PaginationItem:l,PaginationLast:u,PaginationLink:g,PaginationNext:f,PaginationPrevious:P,Select:x,SelectContent:S,SelectGroup:R,SelectItem:k,SelectTrigger:E,SelectValue:O,Tooltip:T,TooltipContent:m,TooltipTrigger:c}=e;function h({pageIndex:r,pageCount:C,pageCountKnown:D,pageSize:z,totalRowCount:N,rowsPerPageOptions:U,onPageIndexChange:F,onPageSizeChange:I,labels:w}){let j=D?Ar(r,Math.max(1,C)):[],K=r>0,ae=r+1{I(Number(A));},children:[jsx(E,{"aria-label":w.recordsPerPage,className:`w-22 ${a.paginationSelectTrigger??""}`,children:jsx(O,{})}),jsx(S,{children:jsx(R,{children:U.map(A=>jsx(k,{value:String(A),children:A},A))})})]})]}),N!==void 0?jsx("div",{className:"flex shrink-0 items-center justify-center",children:jsxs("div",{className:`inline-flex items-center gap-2 px-2.5 py-1.5 text-sm ${a.paginationTotal??""}`,"aria-label":w.totalRecords(N),children:[jsx(i,{className:"size-4"}),jsx("span",{className:"@md/data-table:hidden",children:N}),jsx("span",{className:"hidden @md/data-table:inline",children:w.totalRecords(N)})]})}):null,jsxs("div",{className:"flex flex-1 items-center justify-end gap-4",children:[jsx("div",{className:`hidden text-sm @md/data-table:inline ${a.mutedText??"opacity-70"}`,children:D?w.pageStatus(r,Math.max(1,C)):(w.pageStatusUnknown??de.pageStatusUnknown)(r)}),jsx(n,{"aria-label":w.pagination??de.pagination,className:"mx-0 w-auto justify-end",children:jsxs(t,{children:[jsx(l,{className:"@md/data-table:hidden",children:jsxs(T,{children:[jsx(c,{asChild:true,children:jsx(d,{"aria-label":w.firstPage,href:"#",size:"icon-sm",showText:false,disabled:!K,onClick:A=>{A.preventDefault(),K&&F(0);},text:w.firstPage})}),jsx(m,{children:w.firstPage})]})}),jsx(l,{children:jsxs(T,{children:[jsx(c,{asChild:true,children:jsx(P,{"aria-label":w.previousPage,href:"#",size:"icon-sm",showText:false,disabled:!K,onClick:A=>{A.preventDefault(),K&&F(r-1);},text:w.previousPage})}),jsx(m,{children:w.previousPage})]})}),j.map((A,G)=>jsx(l,{className:"hidden @md/data-table:block",children:A==="ellipsis"?jsx(o,{text:w.morePages??de.morePages}):jsx(g,{href:"#",isActive:A===r+1,size:"icon-sm",onClick:W=>{W.preventDefault(),F(A-1);},children:A})},`${A}-${G}`)),jsx(l,{children:jsxs(T,{children:[jsx(c,{asChild:true,children:jsx(f,{"aria-label":w.nextPage,href:"#",size:"icon-sm",showText:false,disabled:!ae,onClick:A=>{A.preventDefault(),ae&&F(r+1);},text:w.nextPage})}),jsx(m,{children:w.nextPage})]})}),D?jsx(l,{className:"@md/data-table:hidden",children:jsxs(T,{children:[jsx(c,{asChild:true,children:jsx(u,{"aria-label":w.lastPage,href:"#",size:"icon-sm",showText:false,text:w.lastPage,disabled:!ae,onClick:A=>{A.preventDefault(),ae&&F(oe);}})}),jsx(m,{children:w.lastPage})]})}):null]})})]})]})}function b(r){return jsx("div",{className:`rounded-md border px-2 py-1 ${a.footer??""}`,children:jsx(h,{...r})})}return {DataTableFooter:b,DataTablePagination:h}}function Ar(e,a){let n=e+1,t=new Set([1,a]);for(let l=Math.max(1,n-2);l<=Math.min(a,n+2);l+=1)t.add(l);let o=Array.from(t).sort((l,u)=>l-u),d=[];for(let l=0;l1&&d.push("ellipsis"),d.push(u);}return d}function ho(e$1){let{Button:a,DropdownMenu:n,DropdownMenuContent:t$1,DropdownMenuGroup:o,DropdownMenuItem:d$1,DropdownMenuSeparator:l$1,DropdownMenuTrigger:u,Tooltip:g,TooltipContent:f$1,TooltipTrigger:P}=e$1;return function({row:S,rowActions:R,editableRows:k,isEditing:E,onStartEditing:O,onCancelEditing:T,labels:m}){let c=R.filter(r=>e(r,S)),h=v.useCallback(r=>{r.stopPropagation();},[]);if(E)return jsxs(g,{children:[jsx(P,{asChild:true,children:jsxs(a,{type:"button",variant:"ghost",size:"icon-sm",onPointerDown:h,onClick:T,children:[jsx(t,{}),jsx("span",{className:"sr-only",children:m.cancelEdit})]})}),jsx(f$1,{children:m.cancelEdit})]});let b=f(k,S);return !c.length&&!b?null:jsxs(n,{children:[jsxs(g,{children:[jsx(P,{asChild:true,children:jsx(u,{asChild:true,children:jsxs(a,{type:"button",variant:"ghost",size:"icon-sm",onPointerDown:h,onClick:h,children:[jsx(j$1,{}),jsx("span",{className:"sr-only",children:m.rowActions})]})})}),jsx(f$1,{children:m.rowActions})]}),jsxs(t$1,{align:"end",className:"w-52",children:[b?jsx(o,{children:jsxs(d$1,{onClick:r=>{r.stopPropagation(),O();},children:[jsx(l,{"data-icon":"inline-start"}),m.editRow]})}):null,b&&c.length?jsx(l$1,{}):null,c.length?jsx(o,{children:c.map(r=>{let C=r.icon;return jsxs(d$1,{disabled:r.disabled?.(S),variant:r.variant==="destructive"?"destructive":void 0,onClick:D=>{D.stopPropagation(),r.onClick(S);},children:[C?jsx(C,{"data-icon":"inline-start"}):null,d(r.label,S)]},r.key)})}):null]})]})}}function yo(e){let a=e.classNames??{},{Button:n,ButtonGroup:t$1,DropdownMenu:o,DropdownMenuCheckboxItem:d,DropdownMenuContent:l,DropdownMenuGroup:u,DropdownMenuItem:g,DropdownMenuLabel:f,DropdownMenuSeparator:P,DropdownMenuTrigger:x,InputGroup:S,InputGroupAddon:R,InputGroupInput:k,Tooltip:E,TooltipContent:O,TooltipTrigger:T}=e;return function({title:h,description:b,toolbarQueryValue:r$1,toolbarQueryPlaceholder:C,onToolbarQueryValueChange:D,customToolbar:z,compactToolbar:N,viewMode:U,onViewModeChange:F,enableViewToggle:I,toolbarActions:w,selectionActions:j,selectedRows:K,showHiddenRows:ae,hiddenRowsLabel:oe,onShowHiddenRowsChange:A,allRows:G,columnVisibilityOptions:W,onColumnVisibilityChange:De,enableColumnPinning:be,onColumnPinningChange:ge,columnFilters:Ve,onColumnFilterChange:Oe,onClearColumnFilters:ve,density:J,onDensityChange:Pe,enableDensityToggle:we,labels:M,toolbarVisibility:ie,openFileDialog:Je}){let ue=v.useRef(null),[pe,ia]=v.useState(false),ee=a.toolbarCompactIconButton??"",_e=w.filter(i=>(i.placement??"primary")==="primary"),he=w.filter(i=>i.placement==="trailing"),He=ie?.title??true,xe=ie?.search??true,Be=ie?.actions??true,$e=ie?.trailingActions??true,Ue=ie?.options??true,Ke=ie?.viewToggle??true,ye=ie?.customToolbar??true,je=He&&!!(h||b),ra=xe,qe=Be&&_e.length>0,y=K.length>0&&j.length>0,V=Ue&&(W.some(i=>i.canHide)||!!(A&&oe)||be||we),me=Ke&&I&&!!F,Re=$e&&he.length>0,X=ye&&!!z,q$1=ye&&!!(N??z),Ra=M.selectedRows(K.length);return v.useEffect(()=>{pe&&ue.current?.focus();},[pe]),!je&&!ra&&!qe&&!y&&!V&&!me&&!Re&&!X&&!q$1?null:jsxs("div",{className:"flex flex-col gap-4 pb-0",children:[He&&(h||b)?jsxs("div",{className:"flex flex-col gap-1",children:[h?jsx("h2",{className:"text-lg font-semibold tracking-tight",children:h}):null,b?jsx("p",{className:`max-w-3xl text-sm ${a.mutedText??"opacity-70"}`,children:b}):null]}):null,jsxs("div",{className:"flex flex-col gap-3",children:[jsxs("div",{"data-dtp-slot":"data-table-toolbar-controls",className:"flex items-center gap-2 overflow-x-auto px-1 @md/data-table:gap-3 @md/data-table:overflow-visible",children:[xe?jsxs(Fragment,{children:[jsx("div",{className:"hidden min-w-0 grow max-w-md @md/data-table:block",children:jsxs(S,{className:"min-w-0",children:[jsx(k,{value:r$1,onChange:i=>{D(i.target.value);},placeholder:C}),jsx(R,{align:"inline-start","aria-hidden":"true",children:jsx(r,{})}),r$1?jsx(R,{align:"inline-end",children:jsx("button",{type:"button",className:`inline-flex size-5 items-center justify-center rounded-md transition-colors focus-visible:outline-none ${a.toolbarIconButton??"opacity-70 hover:opacity-100"}`,onClick:()=>{D("");},"aria-label":M.clearSearch,title:M.clearSearch,children:jsx(t,{})})}):null]})}),jsxs(E,{children:[jsx(T,{asChild:true,children:jsxs(n,{type:"button",variant:pe||r$1?"secondary":"outline",size:"icon-sm","aria-label":M.searchTable,"aria-pressed":pe,className:`shrink-0 @md/data-table:hidden ${ee} ${a.toolbarInputButton??""}`,onClick:()=>{ia(i=>!i);},children:[jsx(r,{}),jsx("span",{className:"sr-only",children:M.searchTable})]})}),jsx(O,{children:M.searchTable})]})]}):null,Be?jsx("div",{className:"flex shrink-0 items-center gap-2",children:_e.map(i=>{let $=!i.iconOnly&&!!i.icon,fe=jsxs(n,{type:"button",className:$?`size-7 shrink-0 px-0 @md/data-table:h-8 @md/data-table:w-fit @md/data-table:px-2.5 ${ee}`:i.iconOnly?`size-7 shrink-0 @md/data-table:size-8 ${ee}`:"size-7 shrink-0 @md/data-table:h-8 @md/data-table:w-fit",variant:i.variant??"outline",size:i.iconOnly?"icon":"default",onClick:()=>{i.onClick({rows:G,openFileDialog:Je});},disabled:i.disabled,"aria-label":i.label,title:i.iconOnly?void 0:i.label,children:[i.icon?jsx(i.icon,{}):null,i.iconOnly?jsx("span",{className:"sr-only",children:i.label}):$?jsx("span",{className:"hidden @md/data-table:inline",children:i.label}):jsx("span",{children:i.label})]},i.key);return i.iconOnly?jsxs(E,{children:[jsx(T,{asChild:true,children:fe}),jsx(O,{children:i.label})]},i.key):fe})}):null,q$1?jsx("div",{"data-dtp-slot":"data-table-toolbar-compact-custom",className:"flex shrink-0 items-center gap-2 @lg/data-table:hidden",children:N??z}):null,jsx("div",{className:"grow","aria-hidden":"true"}),jsxs("div",{"data-dtp-slot":"data-table-toolbar-end-controls",className:"flex shrink-0 items-center gap-2",children:[K.length?jsx("div",{className:`hidden text-sm @md/data-table:block ${a.mutedText??"opacity-70"}`,children:Ra}):null,K.length?j.map(i=>{let $=i.icon,fe=typeof i.disabled=="function"?i.disabled(K):i.disabled;return jsxs(E,{children:[jsx(T,{asChild:true,children:jsxs(n,{type:"button",variant:i.variant??"secondary",size:"icon-sm",className:ee,disabled:fe,onClick:()=>{i.onClick({rows:K});},"aria-label":i.label,children:[$?jsx($,{}):null,jsx("span",{className:"sr-only",children:i.label})]})}),jsx(O,{children:i.label})]},i.key)}):null,V?jsxs(o,{children:[jsx(x,{asChild:true,children:jsxs(n,{type:"button",variant:"outline",size:"icon-sm","aria-label":M.tableOptions,className:`${ee} ${a.toolbarInputButton??""}`,title:M.tableOptions,children:[jsx(a$2,{}),jsx("span",{className:"sr-only",children:M.tableOptions})]})}),jsxs(l,{align:"end",className:"w-56",children:[jsx(f,{children:M.tableOptions}),jsx(u,{children:A&&oe?jsx(d,{checked:ae,onCheckedChange:i=>{A(i===true);},children:M.showHiddenRows(oe)}):null}),we?jsxs(Fragment,{children:[jsx(P,{}),jsx(f,{children:M.density}),jsx(u,{children:[["compact",M.compactDensity],["comfortable",M.comfortableDensity],["spacious",M.spaciousDensity]].map(([i,$])=>jsx(d,{checked:J===i,onCheckedChange:()=>{Pe(i);},children:$},i))})]}):null,W.some(i=>i.canHide)?jsxs(Fragment,{children:[jsx(P,{}),jsx(f,{children:M.columns}),jsx(u,{children:W.filter(i=>i.canHide).map(i=>jsx(d,{checked:i.visible,onCheckedChange:$=>{De?.(i.id,$===true);},children:i.label},i.id))})]}):null,be?jsxs(Fragment,{children:[jsx(P,{}),jsxs(f,{children:[M.pinLeft," / ",M.pinRight]}),jsx(u,{children:W.map(i=>jsxs(g,{onSelect:$=>{$.preventDefault();},children:[jsx("span",{className:"min-w-0 flex-1 truncate",children:i.label}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${M.pinLeft}: ${i.label}`,onClick:$=>{$.stopPropagation(),ge(i.id,"left");},children:"L"}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${M.pinRight}: ${i.label}`,onClick:$=>{$.stopPropagation(),ge(i.id,"right");},children:"R"}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${M.unpin}: ${i.label}`,onClick:$=>{$.stopPropagation(),ge(i.id,false);},children:"-"})]},`pin-${i.id}`))})]}):null]})]}):null,Ke&&I&&F?jsxs(t$1,{children:[jsxs(E,{children:[jsx(T,{asChild:true,children:jsxs(n,{type:"button",variant:U==="table"?"default":"outline","aria-pressed":U==="table",className:U==="table"?ee:`${ee} ${a.toolbarInputButton??""}`,size:"icon-sm",onClick:()=>{F("table");},children:[jsx(q,{}),jsx("span",{className:"sr-only",children:M.switchToTableView??de.switchToTableView})]})}),jsx(O,{children:M.tableView??de.tableView})]}),jsxs(E,{children:[jsx(T,{asChild:true,children:jsxs(n,{type:"button",variant:U==="card"?"default":"outline","aria-pressed":U==="card",className:U==="table"?`${ee} ${a.toolbarInputButton??""}`:ee,size:"icon-sm",onClick:()=>{F("card");},children:[jsx(p,{}),jsx("span",{className:"sr-only",children:M.switchToCardView??de.switchToCardView})]})}),jsx(O,{children:M.cardView??de.cardView})]})]}):null,$e?he.map(i=>{let $=!i.iconOnly&&!!i.icon,fe=jsxs(n,{type:"button",variant:i.variant??"outline",size:i.iconOnly?"icon-sm":"default",onClick:()=>{i.onClick({rows:G,openFileDialog:Je});},disabled:i.disabled,"aria-label":i.label,title:i.iconOnly?void 0:i.label,className:`size-7 shrink-0 ${i.iconOnly?"":`${$?"px-0 @md/data-table:px-2.5":""} @md/data-table:h-8 @md/data-table:w-fit`} ${i.iconOnly||$?ee:""} ${a.toolbarInputButton??""}`,children:[i.icon?jsx(i.icon,{"data-icon":i.iconOnly?void 0:"inline-start"}):null,i.iconOnly?jsx("span",{className:"sr-only",children:i.label}):$?jsx("span",{className:"hidden @md/data-table:inline",children:i.label}):jsx("span",{children:i.label})]},i.key);return i.iconOnly?jsxs(E,{children:[jsx(T,{asChild:true,children:fe}),jsx(O,{children:i.label})]},i.key):fe}):null]})]}),xe&&pe?jsx("div",{"data-dtp-slot":"data-table-toolbar-compact-search",className:"min-w-0 @md/data-table:hidden",children:jsxs(S,{children:[jsx(k,{ref:ue,value:r$1,onChange:i=>{D(i.target.value);},placeholder:C}),jsx(R,{align:"inline-start","aria-hidden":"true",children:jsx(r,{})}),r$1?jsx(R,{align:"inline-end",children:jsx("button",{type:"button",className:`inline-flex size-5 items-center justify-center rounded-md transition-colors focus-visible:outline-none ${a.toolbarIconButton??"opacity-70 hover:opacity-100"}`,onClick:()=>{D("");},"aria-label":M.clearSearch,title:M.clearSearch,children:jsx(t,{})})}):null]})}):null,Ve.length?jsxs("div",{"data-dtp-slot":"data-table-toolbar-filters",className:"flex min-w-0 flex-wrap items-center gap-2",children:[Ve.map(i=>jsx(m,{filter:i,labels:M,onColumnFilterChange:Oe},i.id)),Ve.some(i=>Vr(i.value))?jsx(n,{type:"button",variant:"ghost",size:"sm",onClick:ve,children:M.clearFilters}):null]}):null]}),ye&&z?jsx("div",{"data-dtp-slot":"data-table-toolbar-desktop-custom",className:"hidden flex-row items-center gap-3 @lg/data-table:flex",children:z}):null]})};function m({filter:c,labels:h,onColumnFilterChange:b}){if(c.type==="text")return jsxs(S,{className:"min-w-48 max-w-64",children:[jsx(k,{value:typeof c.value=="string"?c.value:"",onChange:D=>{b(c.id,D.target.value);},placeholder:c.placeholder??c.label,"aria-label":`${h.filters}: ${c.label}`}),jsx(R,{align:"inline-start","aria-hidden":"true",children:jsx(r,{})})]});let r$1=Array.isArray(c.value)?c.value.map(String):typeof c.value=="string"&&c.value?[c.value]:[],C=r$1.length===0?c.label:`${c.label}: ${r$1.length===1?c.options.find(D=>D.value===r$1[0])?.label??r$1[0]:r$1.length}`;return jsxs(o,{children:[jsx(x,{asChild:true,children:jsx(n,{type:"button",variant:"outline",size:"sm",children:C})}),jsxs(l,{align:"start",className:"w-56",children:[jsx(f,{children:c.label}),jsxs(u,{children:[c.type==="select"?jsx(g,{onClick:()=>{b(c.id,"");},children:h.allFilterOptions??de.allFilterOptions}):null,c.options.map(D=>jsx(d,{checked:r$1.includes(D.value),onCheckedChange:z=>{if(c.type==="select"){b(c.id,z===true?D.value:"");return}let N=new Set(r$1);z===true?N.add(D.value):N.delete(D.value),b(c.id,Array.from(N));},children:D.label},D.value))]})]})]})}}function Vr(e){return Array.isArray(e)?e.length>0:e!=null&&e!==""}var Fr=v.lazy(async()=>({default:(await import('./data-table-virtual-table-panel-7K3LOTBT.js')).DataTableVirtualTablePanel}));function Ro(e){let a=typeof e.virtualization=="object"?e.virtualization:void 0;return e.virtualization===true||a?.enabled===true?jsx(v.Suspense,{fallback:jsx(Q,{...e}),children:jsx(Fr,{...e})}):jsx(Q,{...e})}var Ir="data-table-pro:saved-views:";var vo=["sorting","columnVisibility","columnFilters","columnOrder","columnPinning","columnSizing","density","viewMode","showHiddenRows","globalFilter"],So=0;function ya(e){let a=Ht(e);if(!e||!a)return [];let n;try{n=a.getItem(Bt(e.key));}catch(l){return e.onError?.({error:l,operation:"read"}),[]}if(!n)return [];let t;try{t=(e.deserialize??JSON.parse)(n);}catch(l){return e.onError?.({error:l,operation:"deserialize"}),[]}if(!Fe(t)||!("version"in t)||!("views"in t))return [];let o=e.version??1,d=t.views;if(t.version!==o){if(!e.migrate)return [];try{d=e.migrate({version:t.version,views:t.views},o);}catch(l){return e.onError?.({error:l,operation:"migrate"}),[]}}return Array.isArray(d)?d.map(l=>Nr(l,e.slices)).filter(l=>!!l):[]}function Po(e,a,n){let t=a.trim();if(!e||!t)return;let o=new Date().toISOString(),d={id:Ur(),name:t,createdAt:o,updatedAt:o,state:zr(n,e.slices)},l=[...ya(e),d];return Ot(e,l,"create")?_t(d):void 0}function xo(e,a,n){let t=n.trim();if(!e||!t)return;let o,d=ya(e).map(l=>l.id!==a?l:(o={...l,name:t,updatedAt:new Date().toISOString()},o));if(o)return Ot(e,d,"rename")?_t(o):void 0}function ko(e,a){if(!e)return false;let n=ya(e),t=n.filter(o=>o.id!==a);return t.length!==n.length&&Ot(e,t,"delete")}function Eo(e){let a=Ht(e);if(!e||!a)return false;try{a.removeItem(Bt(e.key));}catch(n){return e.onError?.({error:n,operation:"remove"}),false}return e.onChange?.([],"clear"),true}function Ot(e,a,n){let t=Ht(e);if(!t)return false;let o;try{let l={version:e.version??1,views:a};o=(e.serialize??JSON.stringify)(l);}catch(l){return e.onError?.({error:l,operation:"serialize"}),false}try{t.setItem(Bt(e.key),o);}catch(l){return e.onError?.({error:l,operation:"write"}),false}let d=a.map(_t);return e.onChange?.(d,n),true}function zr(e,a){let n=new Set(a??vo),t={};for(let o of Object.keys(e))n.has(o)&&Object.assign(t,{[o]:Lr(o,e[o])});return t}function Nr(e,a){if(!(!Fe(e)||typeof e.id!="string"||!e.id||typeof e.name!="string"||!e.name.trim()||typeof e.createdAt!="string"||typeof e.updatedAt!="string"))return {id:e.id,name:e.name.trim(),createdAt:e.createdAt,updatedAt:e.updatedAt,state:Mo(e.state,a)}}function Mo(e,a){if(!Fe(e))return {};let n=new Set(a??vo),t={},o=Or(e.sorting);n.has("sorting")&&o&&(t.sorting=o);let d=_r(e.pagination);n.has("pagination")&&d&&(t.pagination=d);let l=Nt(e.rowSelection);n.has("rowSelection")&&l&&(t.rowSelection=l);let u=Nt(e.columnVisibility);n.has("columnVisibility")&&u&&(t.columnVisibility=u);let g=Hr(e.columnFilters);n.has("columnFilters")&&g&&(t.columnFilters=g);let f=e.expanded===true?true:Nt(e.expanded);n.has("expanded")&&f!==void 0&&(t.expanded=f);let P=Lt(e.columnOrder);n.has("columnOrder")&&P&&(t.columnOrder=P);let x=Br(e.columnPinning);n.has("columnPinning")&&x&&(t.columnPinning=x);let S=$r(e.columnSizing);return n.has("columnSizing")&&S&&(t.columnSizing=S),n.has("density")&&(e.density==="compact"||e.density==="comfortable"||e.density==="spacious")&&(t.density=e.density),n.has("viewMode")&&(e.viewMode==="table"||e.viewMode==="card")&&(t.viewMode=e.viewMode),n.has("showHiddenRows")&&typeof e.showHiddenRows=="boolean"&&(t.showHiddenRows=e.showHiddenRows),n.has("globalFilter")&&typeof e.globalFilter=="string"&&(t.globalFilter=e.globalFilter),t}function _t(e){return {...e,state:Mo(e.state,Object.keys(e.state))}}function Lr(e,a){return Array.isArray(a)?a.map(n=>Fe(n)?{...n}:n):Fe(a)?e==="columnPinning"?{left:Array.isArray(a.left)?[...a.left]:void 0,right:Array.isArray(a.right)?[...a.right]:void 0}:{...a}:a}function Or(e){if(Array.isArray(e))return e.filter(a=>Fe(a)&&typeof a.id=="string").map(a=>({id:a.id,desc:!!a.desc}))}function _r(e){if(!(!Fe(e)||!Number.isInteger(e.pageIndex)||e.pageIndex<0||!Number.isInteger(e.pageSize)||e.pageSize<1))return {pageIndex:e.pageIndex,pageSize:e.pageSize}}function Hr(e){if(Array.isArray(e))return e.filter(a=>Fe(a)&&typeof a.id=="string"&&Object.prototype.hasOwnProperty.call(a,"value")).map(a=>({id:a.id,value:a.value}))}function Br(e){if(Fe(e))return {left:Lt(e.left)??[],right:Lt(e.right)??[]}}function Nt(e){if(Fe(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="boolean"))}function $r(e){if(Fe(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="number"&&Number.isFinite(a[1])&&a[1]>=0))}function Lt(e){if(Array.isArray(e))return e.filter(a=>typeof a=="string")}function Ht(e){if(e){if(e.storage)return e.storage;if(!(typeof window>"u"))try{return window.localStorage}catch(a){e.onError?.({error:a,operation:"read"});return}}}function Ur(){return typeof globalThis.crypto?.randomUUID=="function"?globalThis.crypto.randomUUID():(So+=1,`view-${Date.now().toString(36)}-${So.toString(36)}`)}function Bt(e){return `${Ir}${e}`}function Fe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ao({columns:e,currentColumnFilters:a,currentColumnPinning:n,effectiveColumnVisibility:t,enableColumnFilters:o,handleColumnFiltersChange:d,handleColumnPinningChange:l,labels:u,table:g,toolbarActions:f,visibleData:P,csvExport:x}){let S=v.useMemo(()=>A(e).map(({column:c,index:h})=>{let b=G(c,h),r=c.header,C=H(c),D=typeof r=="string"?r:C?M(C):M(b),z=n.left?.includes(b)===true?"left":n.right?.includes(b)===true?"right":false;return {id:b,label:D,visible:t[b]!==false,canHide:c.enableHiding!==false,pinned:z}}),[e,n,t]),R=v.useMemo(()=>o===false?[]:A(e).flatMap(({column:c,index:h})=>{let b=c.meta?.filter;if(!b)return [];let r=G(c,h),C=c.header,D=H(c),z=b.label??(typeof C=="string"?C:D?M(D):M(r)),N=a.find(F=>F.id===r),U=typeof b.options=="function"?b.options({rows:P}):b.options??[];return [{id:r,label:z,type:b.type,value:N?.value,placeholder:b.placeholder,options:B(U)}]}),[e,a,o,P]),k$1=v.useCallback((c,h)=>{d(b=>{let r=b.filter(C=>C.id!==c);return C(h)&&r.push({id:c,value:h}),r});},[d]),E$1=v.useCallback(()=>{d([]);},[d]),O=v.useCallback((c,h)=>{l(b=>{let r=(b.left??[]).filter(D=>D!==c),C=(b.right??[]).filter(D=>D!==c);return h==="left"&&r.push(c),h==="right"&&C.push(c),{left:r,right:C}});},[l]),T=v.useCallback(()=>{if(x)return E({csvExport:x,table:g,labels:u})},[x,u,g]),m=v.useMemo(()=>x?[...f??[],{key:"__csv_export__",label:u.exportCsv,icon:k,placement:"trailing",onClick:T}]:f??[],[x,T,u.exportCsv,f]);return {columnVisibilityOptions:S,effectiveToolbarActions:m,handleClearColumnFilters:E$1,handleToolbarColumnFilterChange:k$1,handleToolbarColumnPinningChange:O,toolbarColumnFilters:R}}function ks(e){return jr(e)}function jr(e,a$1={}){let n=a$1.CardPanel??Jn,t=a$1.TablePanel??Ro,o=e.classNames??{},{rootClassName:d,Button:l,Checkbox:u,Input:g,ScrollArea:f,ScrollBar:P,Skeleton:x,Table:S,TableBody:R,TableCell:k,TableFooter:E$1="tfoot",TableHead:O,TableHeader:T,TableRow:m,Tooltip:c,TooltipContent:h,TooltipProvider:b$1=v.Fragment,TooltipTrigger:r}=e,C=Co(e),D=ho(e),{DataTableFooter:z}=Do(e),N$1=yo(e),U=fo(e,D),F$1={minSize:80,size:180,maxSize:720};return function({columns:w,data:j,getRowId:K,children:ae,title:oe,description:A$1,toolbarQueryValue:G$1,onToolbarQueryValueChange:W,toolbarQueryPlaceholder:De,toolbarQueryDebounceMs:be,manualFiltering:ge=false,enableToolbarQueryFiltering:Ve=true,globalFilterFn:Oe,columnFilters:ve,onColumnFiltersChange:J,enableColumnFilters:Pe,customToolbar:we,compactToolbar:M,rowsPerPageOptions:ie=[10,20,50,100],totalRowCount:Je,hasNextPage:ue,sorting:pe,onSortingChange:ia,manualSorting:ee=false,pageIndex:_e,pageSize:he,onPageIndexChange:He,onPageSizeChange:xe,pageCount:Be,manualPagination:$e=false,rowSelection:Ue,onRowSelectionChange:Ke,enableRowSelection:ye=false,expanded:je,onExpandedChange:ra,getRowCanExpand:qe,renderExpandedRow:y,columnOrder:V,onColumnOrderChange:me,enableColumnReordering:Re=false,columnPinning:X,onColumnPinningChange:q,enableColumnPinning:Ra=false,toolbarActions:i=[],selectionActions:$=[],rowActions:fe=[],csvExport:ua,density:Sa,onDensityChange:va,enableDensityToggle:st=false,columnPrefsKey:pa,persistence:la,savedViews:re,initialState:Y,state:le,onStateChange:ne,apiRef:La,labels:Xe,summaryRows:Pa=[],cardRenderer:ma,cardSizing:dt,cardGridClassName:Ye,cardClassName:Oa,viewMode:_a,onViewModeChange:ct,enableViewToggle:ut=false,emptyState:Ze,isLoading:Ha=false,loadingRowCount:pt,getRowLoadingState:_,hiddenRows:Ie,showHiddenRows:Ba,onShowHiddenRowsChange:mt,infiniteScroll:$a,editableRows:Ua,columnVisibility:$t,onColumnVisibilityChange:Io,columnSizing:Ut,onColumnSizingChange:zo,enableColumnResizing:Kt=false,columnResizeMode:No="onChange",layoutMode:jt="fill",stickyHeader:Lo=true,showFooter:Oo=true,showToolbar:_o=true,dir:Ho="ltr",flexGrow:ba=true,toolbarVisibility:Bo,className:$o,tableClassName:Uo,tableContainerClassName:Gt,getRowClassName:Qt,onRowClick:bt,onActionError:xa,dragAndDrop:ga,fileUpload:Ge,virtualization:gt}){let ka=v.useRef(null),Wt=v.useRef(null),Jt=v.useRef(null),Ko=v.useRef(null),ft=v.useRef(null),jo=v.useRef(null),Qe=v.useMemo(()=>Zn(Xe),[Xe]),Go=G$1??le?.globalFilter,Qo=pe??le?.sorting,Ka=_e??le?.pagination?.pageIndex,ja=he??le?.pagination?.pageSize,Wo=Ue??le?.rowSelection,Jo=$t??le?.columnVisibility,qo=ve??le?.columnFilters,Xo=je??le?.expanded,Yo=V??le?.columnOrder,Zo=X??le?.columnPinning,ei=Ut??le?.columnSizing,ai=Sa??le?.density,ti=_a??le?.viewMode,ni=Ba??le?.showHiddenRows;Qr(le,{columnFilters:ve!==void 0,columnOrder:V!==void 0,columnPinning:X!==void 0,columnSizing:Ut!==void 0,columnVisibility:$t!==void 0,density:Sa!==void 0,expanded:je!==void 0,globalFilter:G$1!==void 0,pagination:_e!==void 0||he!==void 0,rowSelection:Ue!==void 0,showHiddenRows:Ba!==void 0,sorting:pe!==void 0,viewMode:_a!==void 0});let oi=Ae("globalFilter",W,ne),ii=Ae("sorting",ia,ne),ri=Ae("rowSelection",Ke,ne),li=Ae("columnVisibility",Io,ne),si=Ae("columnFilters",J,ne),di=Ae("expanded",ra,ne),ci=Ae("columnOrder",me,ne),ui=Ae("columnPinning",q,ne),pi=Ae("columnSizing",zo,ne),mi=Ae("density",va,ne),bi=Ae("viewMode",ct,ne),gi=Ae("showHiddenRows",mt,ne),qt=v.useCallback(s=>{He?.(s),ne?.(H=>({...H,pagination:{pageIndex:s,pageSize:ja??H.pagination.pageSize}}));},[He,ne,ja]),fi=v.useCallback(s=>{xe?.(s),ne?.(H=>({...H,pagination:{pageIndex:Ka??H.pagination.pageIndex,pageSize:s}}));},[xe,ne,Ka]),ze=v.useCallback((s,H)=>{Gr(H,s,xa);},[xa]),Xt=v.useMemo(()=>fe.map(s=>({...s,onClick:H=>{ze({actionKey:s.key,row:H,source:"rowAction"},()=>s.onClick(H));}})),[fe,ze]),Yt=v.useMemo(()=>bt?s=>{ze({row:s.row,source:"rowClick"},()=>bt(s));}:void 0,[bt,ze]),Ti=v.useCallback((s,H)=>{xa?.({error:s,row:H,source:"edit"});},[xa]),{currentColumnFilters:Ga,currentColumnOrder:Tt,currentColumnPinning:Qa,currentColumnSizing:Wa,currentColumnVisibility:Zt,currentDensity:Ea,currentExpanded:Ct,currentPagination:Ja,currentRowSelection:qa,currentShowHiddenRows:Dt,currentSorting:Xa,currentViewMode:fa,effectiveColumnVisibility:en,globalFilterValue:Ci,handleDensityChange:wt,handleShowHiddenRowsChange:ht,handleViewModeChange:yt,localSearchValue:Ta,resolvedLoadingRowCount:Di,resolvedToolbarQueryPlaceholder:wi,selectedRows:hi,setCurrentColumnFilters:an,setCurrentColumnOrder:yi,setCurrentColumnPinning:tn,setCurrentColumnVisibility:Ri,setCurrentExpanded:Si,setCurrentRowSelection:nn,setCurrentSorting:vi,setLocalColumnSizing:Pi,setLocalPagination:xi,setLocalSearchValue:Rt,shouldRenderInitialLoading:St,tableData:ki,tableGetRowId:Ei,visibleData:Mi}=po({columnFilters:qo,columnOrder:Yo,columnPinning:Zo,columnSizing:ei,columnPrefsKey:pa,persistence:la,columnVisibility:Jo,columns:w,containerRef:ka,data:j,density:ai,enableRowSelection:ye,enableToolbarQueryFiltering:Ve,expanded:Xo,getRowId:K,hiddenRows:Ie,isLoading:Ha,loadingRowCount:pt,manualFiltering:ge,initialState:Y,onColumnFiltersChange:si,onColumnOrderChange:ci,onColumnPinningChange:ui,onColumnSizingChange:pi,onColumnVisibilityChange:li,onDensityChange:mi,onExpandedChange:di,onPageIndexChange:qt,onRowSelectionChange:ri,onShowHiddenRowsChange:gi,onSortingChange:ii,onToolbarQueryValueChange:oi,onViewModeChange:bi,pageIndex:Ka,pageSize:ja,resolvedLabels:Qe,rowSelection:Wo,rowsPerPageOptions:ie,selectionActions:$,showHiddenRows:ni,sorting:Qo,toolbarQueryDebounceMs:be,toolbarQueryPlaceholder:De,toolbarQueryValue:Go,viewMode:ti}),{cancelEditing:Ai,draftValues:Vi,editingRowId:vt,isSavingEdit:Fi,saveEdit:Ii,setDraftValues:zi,setEditingRowId:Ni,startEditingRow:Li}=N({columns:w,editableRows:Ua,onError:Ti}),{viewportElement:on,viewportHeight:rn}=b(Jt,fa),Oi=v.useCallback(()=>{Ge?.disabled||Wt.current?.click();},[Ge?.disabled]),_i=v.useCallback(s=>{ze({source:"fileUpload"},()=>Ge?.onFilesSelected(s));},[Ge,ze]),Hi=eo({Button:l,Checkbox:u,DataTableRowActions:D,Tooltip:c,TooltipContent:h,TooltipTrigger:r,cancelEditing:Ai,columns:w,editableRows:Ua,editingRowId:vt,enableRowSelection:ye,getRowCanExpand:qe,isSavingEdit:Fi,labels:Qe,lastSelectedRowIdRef:jo,renderExpandedRow:y,rowActions:Xt,saveEdit:Ii,startEditingRow:Li,tableRef:ft}),{effectivePageCount:Bi,footerTotalRowCount:$i,handleFooterPageIndexChange:Ui,handleFooterPageSizeChange:Ki,isPageCountKnown:ji,renderedRows:ln,reorderColumn:Gi,rowsToRender:Qi,sentinelRef:sn,table:Z,virtualPaddingBottom:Wi,virtualPaddingTop:Ji,visibleLeafColumns:Pt}=oo({autoResetPageIndex:false,columnResizeMode:No,currentColumnFilters:Ga,currentColumnOrder:Tt,currentColumnPinning:Qa,currentColumnSizing:Wa,currentExpanded:Ct,currentPagination:Ja,currentRowSelection:qa,currentSorting:Xa,defaultColumn:F$1,effectiveColumnVisibility:en,enableColumnResizing:Kt,enableRowSelection:ye,getRowCanExpand:qe,globalFilterFn:Oe,globalFilterValue:Ci,hasNextPage:ue,handleColumnFiltersChange:an,handleColumnOrderChange:yi,handleColumnPinningChange:tn,handleColumnVisibilityChange:Ri,handleExpandedChange:Si,infiniteScroll:$a,manualFiltering:ge,manualPagination:$e,manualSorting:ee,onActionError:xa,onPageIndexChange:qt,onPageSizeChange:fi,pageCount:Be,pageIndex:Ka,pageSize:ja,renderExpandedRow:y,setCurrentRowSelection:nn,setCurrentSorting:vi,setLocalColumnSizing:Pi,setLocalPagination:xi,shouldRenderInitialLoading:St,tableColumns:Hi,tableData:ki,tableGetRowId:Ei,tableRef:ft,totalRowCount:Je}),dn=bo({columns:w,columnSizing:Wa,editableRows:!!Ua,enableRowSelection:ye,hasRowActions:fe.length>0,hasRowExpansion:!!y,layoutMode:jt,uiClassNames:o,visibleLeafColumns:Pt}),{explicitlySizedColumnIds:Ya,fillMinWidth:qi,getColumnLayout:Xi}=dn,Yi=v.useMemo(()=>new Set(A(w).flatMap(({column:s,index:H})=>Object.prototype.hasOwnProperty.call(s,"cell")&&typeof s.cell=="function"?[G(s,H)]:[])),[w]),Zi=Pt.length,er=v.useMemo(()=>({Checkbox:u,Input:g,Skeleton:x,TableCell:k,TableRow:m}),[]),ar=v.useMemo(()=>A(w).some(({column:s})=>s.meta?.cardTitle),[w]),tr=v.useCallback((s,H)=>{Ya.has(s)||Object.prototype.hasOwnProperty.call(Z.getState().columnSizing,s)||flushSync(()=>{Z.setColumnSizing(Da=>({...Da,[s]:H}));});},[Ya,Z]),nr=v.useCallback(s=>{if(Ya.has(s)){Z.getColumn(s)?.resetSize();return}Z.setColumnSizing(H=>{if(!Object.prototype.hasOwnProperty.call(H,s))return H;let Da={...H};return delete Da[s],Da});},[Ya,Z]),cn=Z.getFilteredRowModel().rows.map(s=>s.original),un=typeof Ze=="function"?Ze({rows:cn,toolbarQueryValue:Ta}):Ze,{columnVisibilityOptions:or,effectiveToolbarActions:pn,handleClearColumnFilters:ir,handleToolbarColumnFilterChange:rr,handleToolbarColumnPinningChange:lr,toolbarColumnFilters:sr}=Ao({columns:w,currentColumnFilters:Ga,currentColumnPinning:Qa,csvExport:ua,effectiveColumnVisibility:en,enableColumnFilters:Pe,handleColumnFiltersChange:an,handleColumnPinningChange:tn,labels:Qe,table:Z,toolbarActions:i,visibleData:Mi}),dr=v.useMemo(()=>pn.map(s=>({...s,onClick:H=>{ze({actionKey:s.key,source:"toolbarAction"},()=>s.onClick(H));}})),[pn,ze]),cr=v.useMemo(()=>$.map(s=>({...s,onClick:H=>{ze({actionKey:s.key,source:"selectionAction"},()=>s.onClick(H));}})),[ze,$]),mn=v.useMemo(()=>({sorting:Xa,pagination:Ja,rowSelection:qa,columnVisibility:Zt,columnFilters:Ga,expanded:Ct,columnOrder:Tt,columnPinning:Qa,columnSizing:Wa,density:Ea,viewMode:fa,showHiddenRows:Dt,globalFilter:Ta}),[Ga,Tt,Qa,Wa,Zt,Ea,Ct,Ja,qa,Dt,Xa,fa,Ta]),Ma=v.useCallback(()=>Jr(mn),[mn]),ea=v.useCallback(s=>{s.sorting!==void 0&&Z.setSorting(s.sorting),s.pagination!==void 0&&Z.setPagination(s.pagination),s.rowSelection!==void 0&&Z.setRowSelection(s.rowSelection),s.columnVisibility!==void 0&&Z.setColumnVisibility(s.columnVisibility),s.columnFilters!==void 0&&Z.setColumnFilters(s.columnFilters),s.expanded!==void 0&&Z.setExpanded(s.expanded),s.columnOrder!==void 0&&Z.setColumnOrder(s.columnOrder),s.columnPinning!==void 0&&Z.setColumnPinning(s.columnPinning),s.columnSizing!==void 0&&Z.setColumnSizing(s.columnSizing),s.density!==void 0&&wt(s.density),s.viewMode!==void 0&&yt(s.viewMode),s.showHiddenRows!==void 0&&ht(s.showHiddenRows),s.globalFilter!==void 0&&Rt(s.globalFilter);},[wt,ht,yt,Rt,Z]),Ca=v.useCallback(()=>so(la??pa),[pa,la]),bn=v.useCallback(s=>{s?.clearPersistence&&Ca(),ea({columnVisibility:Y?.columnVisibility??{},columnOrder:Y?.columnOrder??[],columnPinning:Y?.columnPinning??F(w),columnSizing:Y?.columnSizing??{}});},[Ca,w,Y,ea]),gn=v.useCallback(s=>{s?.clearPersistence&&Ca(),ea({sorting:Y?.sorting??[],pagination:Y?.pagination??{pageIndex:0,pageSize:ie[0]??20},rowSelection:Y?.rowSelection??{},columnVisibility:Y?.columnVisibility??{},columnFilters:Y?.columnFilters??[],expanded:Y?.expanded??{},columnOrder:Y?.columnOrder??[],columnPinning:Y?.columnPinning??F(w),columnSizing:Y?.columnSizing??{},density:Y?.density??"comfortable",viewMode:Y?.viewMode??"table",showHiddenRows:Y?.showHiddenRows??false,globalFilter:Y?.globalFilter??""});},[Ca,w,Y,ea,ie]),fn=v.useCallback(()=>ya(re),[re]),Tn=v.useCallback(s=>Po(re,s,Ma()),[Ma,re]),Cn=v.useCallback(s=>{let H=ya(re).find(Da=>Da.id===s);return H?(ea(H.state),re?.onApply?.(H),true):false},[ea,re]),Dn=v.useCallback((s,H)=>xo(re,s,H),[re]),wn=v.useCallback(s=>ko(re,s),[re]),hn=v.useCallback(()=>Eo(re),[re]),yn=v.useCallback(s=>E({csvExport:s??(ua||true),labels:Qe,table:Z}),[ua,Qe,Z]);return v.useImperativeHandle(La,()=>({getTable:()=>ft.current,getState:Ma,snapshot:Ma,restore:ea,resetColumnLayout:bn,resetState:gn,clearPersistedState:Ca,getSavedViews:fn,createSavedView:Tn,applySavedView:Cn,renameSavedView:Dn,deleteSavedView:wn,clearSavedViews:hn,focus:()=>{ka.current?.focus();},scrollToRow:s=>Vo(ka.current,"row",s),scrollToColumn:s=>Vo(ka.current,"column",s),exportCsv:yn}),[Cn,Ca,hn,Tn,wn,yn,fn,Ma,Dn,bn,gn,ea]),jsx(b$1,{children:jsxs("div",{ref:ka,"data-dtp-slot":"data-table-root","data-density":Ea,dir:Ho,tabIndex:-1,className:a("@container/data-table data-table-container-query flex flex-col",ba?"h-full min-h-0 flex-1":"grow",d),onDragEnter:ga?.onDragEnter,onDragOver:ga?.onDragOver,onDragLeave:ga?.onDragLeave,onDrop:ga?.onDrop,children:[Ge?jsx("input",{ref:Wt,className:"hidden",type:"file",accept:Ge.accept,multiple:Ge.multiple??true,disabled:Ge.disabled,onChange:s=>{let H=s.currentTarget.files;H?.length&&_i(H),s.currentTarget.value="";}}):null,jsx("div",{"data-dtp-slot":"data-table-layout",className:a("flex w-full flex-col",ba?"min-h-0 flex-1":"grow"),children:jsxs("div",{"data-dtp-slot":"data-table-main",className:a("flex w-full flex-col gap-4",ba?"min-h-0 flex-1":"grow",$o),children:[_o?jsx(Yn,{allRows:cn,columnFilters:sr,columnVisibilityOptions:or,compactToolbar:M,customToolbar:we,DataTableToolbar:N$1,density:Ea,description:A$1,effectiveToolbarActions:dr,enableColumnPinning:Ra,enableDensityToggle:st,enableViewToggle:ut&&!!ma,hiddenRowsLabel:Ie?.label,labels:Qe,onClearColumnFilters:ir,onColumnFilterChange:rr,onColumnPinningChange:lr,onDensityChange:wt,onShowHiddenRowsChange:ht,onToolbarQueryValueChange:Rt,onViewModeChange:yt,openFileDialog:Ge?Oi:void 0,selectedRows:hi,selectionActions:cr,showHiddenRows:Dt,table:Z,title:oe,toolbarQueryPlaceholder:wi,toolbarQueryValue:Ta,toolbarVisibility:Bo,viewMode:fa}):null,jsx("div",{"data-dtp-slot":"data-table-content",className:a(ba?"flex min-h-0 flex-1 flex-col":""),children:fa==="card"&&ma?jsx(n,{cardClassName:Oa,cardGridClassName:Ye,cardSizing:dt,cardRenderer:ma,currentRowSelection:qa,DataTableCardView:U,DataTableEmptyState:C,dragAndDrop:ga,editableRows:Ua,editingRowId:vt,emptyNode:un,enableRowSelection:ye,flexGrow:ba,getRowClassName:Qt,hasCardTitle:ar,infiniteScroll:$a,localSearchValue:Ta,onRowClick:Yt,renderedRows:ln,renderExpandedRow:y,resolvedLabels:Qe,resolvedLoadingRowCount:Di,rowActions:Xt,ScrollArea:f,sentinelRef:sn,setCurrentRowSelection:nn,setEditingRowId:Ni,shouldRenderInitialLoading:St,tableContainerClassName:Gt,uiClassNames:o,virtualization:gt}):jsx(t,{bodyRowComponents:er,columnLayouts:dn.columnLayouts,currentDensity:Ea,currentSorting:Xa,DataTableEmptyState:C,dragAndDrop:ga,draggedColumnIdRef:Ko,draftValues:Vi,editingRowId:vt,emptyNode:un,enableColumnReordering:Re,enableColumnResizing:Kt,explicitCustomCellColumnIds:Yi,fillMinWidth:qi,flexGrow:ba,getColumnLayout:Xi,getRowClassName:Qt,getRowLoadingState:_,infiniteScroll:$a,layoutMode:jt,localSearchValue:Ta,onRowClick:Yt,primeColumnForResize:tr,renderedRows:ln,renderExpandedRow:y,reorderColumn:Gi,resetColumnSize:nr,resolvedLabels:Qe,rowsToRender:Qi,ScrollArea:f,ScrollBar:P,sentinelRef:sn,setDraftValues:zi,shouldRenderInitialLoading:St,stickyHeader:Lo,summaryRows:Pa,table:Z,tableClassName:Uo,tableContainerClassName:Gt,Table:S,TableBody:R,TableCell:k,TableFooter:E$1,TableHead:O,TableHeader:T,TableRow:m,tableScrollContainerRef:Jt,tableScrollElement:on,uiClassNames:o,viewportHeight:rn,virtualization:gt,virtualPaddingBottom:Wi,virtualPaddingTop:Ji,visibleLeafColumnCount:Zi,visibleLeafColumns:Pt})}),jsx(qn,{currentPagination:Ja,DataTableFooter:z,effectivePageCount:Bi,footerTotalRowCount:$i,handleFooterPageIndexChange:Ui,handleFooterPageSizeChange:Ki,labels:Qe,pageCountKnown:ji,rowsPerPageOptions:ie,showFooter:Oo&&!$a?.enabled,children:ae})]})})]})})}}function Gr(e,a,n){let t;try{t=e();}catch(o){n?.({...a,error:o});return}Promise.resolve(t).catch(o=>{n?.({...a,error:o});});}function Ae(e,a,n){let t=v.useCallback(o=>{a?.(o),n?.(d=>({...d,[e]:o}));},[e,a,n]);return a||n?t:void 0}function Qr(e,a){let n=v.useRef(new Set);v.useEffect(()=>{if(!(!e||!Wr()))for(let t of Object.keys(a))e[t]===void 0||!a[t]||n.current.has(t)||(n.current.add(t),console.warn(`[data-table-pro] Both state.${t} and its legacy controlled prop were provided. The legacy prop takes precedence during the 4.x compatibility window.`));},[a,e]);}function Wr(){return globalThis.process?.env?.NODE_ENV!=="production"}function Jr(e){return {sorting:e.sorting.map(a=>({...a})),pagination:{...e.pagination},rowSelection:{...e.rowSelection},columnVisibility:{...e.columnVisibility},columnFilters:e.columnFilters.map(a=>({...a})),expanded:typeof e.expanded=="boolean"?e.expanded:{...e.expanded},columnOrder:[...e.columnOrder],columnPinning:{left:e.columnPinning.left?[...e.columnPinning.left]:void 0,right:e.columnPinning.right?[...e.columnPinning.right]:void 0},columnSizing:{...e.columnSizing},density:e.density,viewMode:e.viewMode,showHiddenRows:e.showHiddenRows,globalFilter:e.globalFilter}}function Vo(e,a,n){if(!e)return false;let t=a==="row"?"data-row-id":"data-column-id",o=Array.from(e.querySelectorAll(`[${t}]`)).find(d=>d.getAttribute(t)===n);return o?(o.scrollIntoView?.({block:"nearest",inline:"nearest"}),true):false}export{Jn as a,qn as b,Yn as c,eo as d,oo as e,Me as f,po as g,bo as h,ks as i,jr as j};//# sourceMappingURL=chunk-54H6DRO6.js.map +//# sourceMappingURL=chunk-54H6DRO6.js.map \ No newline at end of file diff --git a/dist/chunk-54H6DRO6.js.map b/dist/chunk-54H6DRO6.js.map new file mode 100644 index 0000000..da28b2b --- /dev/null +++ b/dist/chunk-54H6DRO6.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/core/data-table/data-table-base-card-panel.tsx","../src/core/data-table/data-table-card-panel.tsx","../src/core/data-table/data-table-footer-section.tsx","../src/core/data-table/data-table-toolbar-section.tsx","../src/core/data-table/data-table-labels.ts","../src/core/data-table/use-data-table-columns.tsx","../src/core/data-table/use-data-table-infinite-scroll.ts","../src/core/data-table/use-data-table-pagination-clamp.ts","../src/core/data-table/use-data-table-instance.ts","../src/core/data-table/use-controllable-state.ts","../src/core/data-table/use-data-table-column-prefs.ts","../src/core/data-table/use-data-table-state.ts","../src/core/data-table/use-column-layout.ts","../src/core/data-table/create-data-table-card-view.tsx","../src/core/data-table/create-data-table-empty-state.tsx","../src/core/data-table/create-data-table-pagination.tsx","../src/core/data-table/create-data-table-row-actions.tsx","../src/core/data-table/create-data-table-toolbar.tsx","../src/core/data-table/data-table-table-panel-router.tsx","../src/core/data-table/data-table-saved-views.ts","../src/core/data-table/use-data-table-toolbar-features.ts","../src/core/data-table/create-data-table.tsx"],"names":["DataTableBaseCardPanel","cardClassName","cardGridClassName","cardSizing","cardRenderer","currentRowSelection","DataTableCardView","DataTableEmptyState","dragAndDrop","editableRows","editingRowId","emptyNode","enableRowSelection","flexGrow","getRowClassName","hasCardTitle","infiniteScroll","localSearchValue","onRowClick","renderedRows","renderExpandedRow","resolvedLabels","resolvedLoadingRowCount","rowActions","ScrollArea","sentinelRef","setCurrentRowSelection","setEditingRowId","shouldRenderInitialLoading","tableContainerClassName","uiClassNames","shouldRenderCards","cardScrollContainerRef","Wn","renderCardView","rows","options","jsx","cn","jsxs","LazyDataTableVirtualCardPanel","nt","DataTableCardPanel","props","DataTableFooterSection","children","currentPagination","DataTableFooter","effectivePageCount","footerTotalRowCount","handleFooterPageIndexChange","handleFooterPageSizeChange","labels","pageCountKnown","rowsPerPageOptions","showFooter","DataTableToolbarSection","allRows","columnFilters","columnVisibilityOptions","compactToolbar","customToolbar","DataTableToolbar","description","effectiveToolbarActions","enableColumnPinning","enableDensityToggle","enableViewToggle","hiddenRowsLabel","onClearColumnFilters","onColumnFilterChange","onColumnPinningChange","onDensityChange","onShowHiddenRowsChange","onToolbarQueryValueChange","onViewModeChange","openFileDialog","selectedRows","selectionActions","showHiddenRows","table","title","toolbarQueryPlaceholder","toolbarQueryValue","toolbarVisibility","density","viewMode","columnId","visible","DATA_TABLE_DEFAULT_LABELS","count","label","pageIndex","pageCount","rowId","resolveDataTableLabels","useDataTableColumns","Button","Checkbox","DataTableRowActions","Tooltip","TooltipContent","TooltipTrigger","cancelEditing","columns","getRowCanExpand","isSavingEdit","lastSelectedRowIdRef","saveEdit","startEditingRow","tableRef","selectRowRange","ot","targetRowId","selected","tableInstance","row","isDataTableLoadingRow","startIndex","endIndex","from","to","current","next","defs","UTILITY_COLUMN_SIZE","isExpanded","IconChevronDown","checked","event","column","decorateFilterableColumn","useDataTableInfiniteScroll","enabled","hasMore","isLoadingMore","onLoadMore","onError","aa","isRequestInFlightRef","onLoadMoreEvent","onErrorEvent","error","target","observer","entries","result","useDataTablePaginationClamp","maxPageIndex","onPageIndexChange","setLocalPageIndex","nextPageIndex","useDataTableInstance","autoResetPageIndex","columnResizeMode","currentColumnFilters","currentColumnOrder","currentColumnPinning","currentColumnSizing","currentExpanded","currentSorting","defaultColumn","effectiveColumnVisibility","enableColumnResizing","globalFilterFn","globalFilterValue","hasNextPage","handleColumnFiltersChange","handleColumnOrderChange","handleColumnPinningChange","handleColumnVisibilityChange","handleExpandedChange","manualFiltering","manualPagination","manualSorting","onActionError","onPageSizeChange","pageSize","setCurrentSorting","setLocalColumnSizing","setLocalPagination","tableColumns","tableData","tableGetRowId","totalRowCount","generatedColumnIds","Ee","getDataTableLeafColumns","index","getColumnId","effectiveColumnOrder","columnIds","dataColumnIds","isUtilityColumnId","dataColumnIdSet","orderedDataColumnIds","unorderedDataColumnIds","effectiveColumnPinning","columnIdSet","dataLeft","dataRight","tableState","handlePaginationChange","updater","nextValue","handleColumnSizingChange","useReactTable","getCoreRowModel","getFilteredRowModel","getSortedRowModel","getExpandedRowModel","getPaginationRowModel","dataTableGlobalFilterFn","visibleLeafColumns","reorderColumn","sourceColumnId","targetColumnId","defaultOrder","nextOrder","moveColumnInOrder","rowsToRender","rowIndex","usesManualRows","derivedTotalRowCount","effectiveTotalRowCount","isPageCountKnown","nextPageSize","useControllableState","defaultValue","onChange","value","uncontrolledValue","setUncontrolledValue","ta","currentValue","currentValueRef","setValue","STORAGE_PREFIX","DEFAULT_VERSION","ALL_SLICES","readDataTableColumnPrefs","input","config","resolvePersistenceConfig","storage","resolveStorage","storageKey","getStorageKey","parsed","targetVersion","candidate","isPersistencePayload","selectPersistenceSlices","validateDataTableColumnPrefs","clearDataTableColumnPrefs","usePersistDataTableColumnPrefs","key","persistence","prefs","version","debounceMs","selectedState","serialized","ca","payload","operation","write","timeout","isRecord","slices","slice","visibility","validateBooleanRecord","sizing","validateSizingRecord","order","validateStringArray","left","right","isDataTableDensity","entry","item","useDataTableState","columnOrder","columnPinning","columnSizing","columnPrefsKey","columnVisibility","data","enableToolbarQueryFiltering","expanded","getRowId","hiddenRows","initialState","isLoading","loadingRowCount","onColumnFiltersChange","onColumnOrderChange","onColumnSizingChange","onColumnVisibilityChange","onExpandedChange","onRowSelectionChange","onSortingChange","rowSelection","sorting","toolbarQueryDebounceMs","containerRef","persistenceConfig","Q","persistedColumnPrefs","localPagination","currentColumnVisibility","setCurrentColumnVisibility","setCurrentColumnFilters","setCurrentExpanded","setCurrentColumnOrder","setCurrentColumnPinning","getInitialColumnPinning","setCurrentColumnSizing","currentViewMode","setCurrentViewMode","currentShowHiddenRows","setCurrentShowHiddenRows","currentDensity","setCurrentDensity","resolvedToolbarQueryValue","resolvedToolbarQueryPlaceholder","resolvedToolbarQueryDebounceMs","setLocalSearchValue","containerWidth","useDataTableContainerWidth","hasOnSearchValueChange","lastReportedSearchValueRef","onToolbarQueryValueChangeEvent","handleViewModeChange","nextViewMode","handleShowHiddenRowsChange","nextShowHiddenRows","handleDensityChange","nextDensity","resetPageIndexForFilterChange","filterResetSignature","lastFilterResetSignatureRef","responsiveColumnVisibility","isHiddenAtContainerWidth","visibleData","isRowVisible","loadingRows","createDataTableLoadingRows","getDataTableLoadingRowId","shouldResolveSelectedRows","rowById","EMPTY_COLUMN_LAYOUT","useColumnLayout","hasRowActions","hasRowExpansion","layoutMode","explicitlySizedColumnIds","Ne","ids","minimumColumnWidths","widths","configuredMinWidth","getConfiguredColumnMinWidth","pinnedColumns","leftOffset","getFixedSide","getColumnLayoutSize","rightOffset","fillColumnId","dataColumns","fixedWidthColumnIds","columnLayouts","layouts","isSelectionColumn","isExpansionColumn","isActionsColumn","isUtilityColumn","isSpacerColumn","isFlexibleFillColumn","columnMinWidth","shouldFixWidth","baseStyle","fixedSide","pinnedStyle","cellStyle","getPinnedColumnClassName","fillMinWidth","total","layout","getColumnLayout","createDataTableCardView","ui","Card","CardContent","CardHeader","Skeleton","onEditingRowIdChange","getRowDraggable","onRowDragStart","onRowDragEnd","resolvedCardSizing","resolvedCardGridClassName","getCardGridClassName","cardGridClasses","cardItemClasses","stateClassName","getCardItemClassName","_","originalRow","isSelected","isEditing","hasCardActions","showCardGradient","showCardOverlayControls","handleCardActivate","getCardRendererClassName","updateRowSelection","nextSelection","createDataTableEmptyState","Empty","EmptyContent","EmptyDescription","EmptyHeader","EmptyMedia","EmptyTitle","IconInbox","createDataTablePagination","Pagination","PaginationContent","PaginationEllipsis","PaginationFirst","PaginationItem","PaginationLast","PaginationLink","PaginationNext","PaginationPrevious","Select","SelectContent","SelectGroup","SelectItem","SelectTrigger","SelectValue","DataTablePagination","pages","getVisiblePages","canGoPrevious","canGoNext","lastPageIndex","option","IconDatabase","currentPageIndex","currentPage","page","orderedPages","items","previous","createDataTableRowActions","DropdownMenu","DropdownMenuContent","DropdownMenuGroup","DropdownMenuItem","DropdownMenuSeparator","DropdownMenuTrigger","onStartEditing","onCancelEditing","actions","action","canUseRowAction","stopRowClickPropagation","wo","IconX","allowEdit","canEditRow","IconDots","IconEdit","Icon","resolveRowActionLabel","createDataTableToolbar","ButtonGroup","DropdownMenuCheckboxItem","DropdownMenuLabel","InputGroup","InputGroupAddon","InputGroupInput","toolbarActions","compactSearchInputRef","ha","isCompactSearchVisible","setIsCompactSearchVisible","compactToolbarIconButtonClassName","primaryActions","trailingActions","showTitle","showSearch","showActions","showTrailingActions","showOptions","showViewToggle","showCustomToolbar","hasVisibleTitle","hasVisibleSearch","hasVisiblePrimaryActions","hasVisibleSelectionActions","hasVisibleOptions","hasVisibleViewToggle","hasVisibleTrailingActions","hasVisibleCustomToolbar","hasVisibleCompactToolbar","selectedRowCountLabel","Fragment","IconSearch","collapsesToIcon","button","disabled","IconAdjustmentsHorizontal","IconList","IconLayoutGrid","filter","ToolbarColumnFilterControl","hasColumnFilterValue","selectedValues","selectedLabel","nextValues","LazyDataTableVirtualTablePanel","lt","DataTableTablePanelRouter","DataTableTablePanel","DEFAULT_SLICES","fallbackId","readDataTableSavedViews","view","validateSavedView","createDataTableSavedView","name","state","normalizedName","now","createSavedViewId","selectSavedViewSlices","views","writeViews","cloneSavedView","renameDataTableSavedView","id","renamed","deleteDataTableSavedView","clearDataTableSavedViews","snapshots","snapshot","cloneStateSlice","validateState","validateSorting","pagination","validatePagination","filters","validateFilters","pinning","validatePinning","useDataTableToolbarFeatures","enableColumnFilters","csvExport","We","header","accessorKey","getAccessorKey","startCase","pinned","toolbarColumnFilters","rawOptions","normalizeColumnFilterOptions","handleToolbarColumnFilterChange","hasFilterValue","handleClearColumnFilters","handleToolbarColumnPinningChange","side","handleCsvExport","exportDataTableCsv","IconDownload","createDataTable","createDataTableWithPanels","rootClassName","Input","ScrollBar","Table","TableBody","TableCell","TableFooter","TableHead","TableHeader","TableRow","TooltipProvider","enableColumnReordering","savedViews","unifiedState","onStateChange","apiRef","summaryRows","emptyState","getRowLoadingState","stickyHeader","showToolbar","dir","className","tableClassName","fileUpload","virtualization","fileInputRef","tableScrollContainerRef","draggedColumnIdRef","resolvedSorting","resolvedPageIndex","resolvedPageSize","resolvedRowSelection","resolvedColumnVisibility","resolvedColumnFilters","resolvedExpanded","resolvedColumnOrder","resolvedColumnPinning","resolvedColumnSizing","resolvedDensity","resolvedViewMode","resolvedShowHiddenRows","useDataTableStateConflictWarnings","handleToolbarQueryValueChange","useDataTableStateSliceChange","handleSortingPropChange","handleRowSelectionPropChange","handleColumnVisibilityPropChange","handleColumnFiltersPropChange","handleExpandedPropChange","handleColumnOrderPropChange","handleColumnPinningPropChange","handleColumnSizingPropChange","handleDensityPropChange","handleViewModePropChange","handleShowHiddenRowsPropChange","handlePageIndexPropChange","handlePageSizePropChange","runAction","context","runDataTableAction","guardedRowActions","guardedOnRowClick","handleEditError","draftValues","setDraftValues","useRowEditing","tableScrollElement","viewportHeight","useDataTableScrollViewport","handleSelectedFiles","files","virtualPaddingBottom","virtualPaddingTop","columnLayout","explicitCustomCellColumnIds","visibleLeafColumnCount","bodyRowComponents","primeColumnForResize","currentSize","flushSync","resetColumnSize","filteredData","guardedToolbarActions","guardedSelectionActions","currentDataTableState","getCurrentState","cloneDataTableState","restoreState","nextState","clearPersistedState","resetColumnLayout","resetState","getSavedViews","createSavedView","applySavedView","renameSavedView","deleteSavedView","clearSavedViews","exportCsvFromApi","scrollDataTableElementIntoView","onLegacyChange","handleChange","legacySlices","warnedSlicesRef","isDevelopmentEnvironment","container","kind","attribute","element"],"mappings":"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","file":"chunk-54H6DRO6.js","sourcesContent":["import * as React from \"react\";\nimport type { Row } from \"@tanstack/react-table\";\nimport { cn } from \"../../lib/utils\";\nimport type { DataTableCardPanelProps } from \"./data-table-card-panel-types\";\n\nexport function DataTableBaseCardPanel({\n cardClassName,\n cardGridClassName,\n cardSizing,\n cardRenderer,\n currentRowSelection,\n DataTableCardView,\n DataTableEmptyState,\n dragAndDrop,\n editableRows,\n editingRowId,\n emptyNode,\n enableRowSelection,\n flexGrow,\n getRowClassName,\n hasCardTitle,\n infiniteScroll,\n localSearchValue,\n onRowClick,\n renderedRows,\n renderExpandedRow,\n resolvedLabels,\n resolvedLoadingRowCount,\n rowActions = [],\n ScrollArea,\n sentinelRef,\n setCurrentRowSelection,\n setEditingRowId,\n shouldRenderInitialLoading,\n tableContainerClassName,\n uiClassNames,\n}: DataTableCardPanelProps) {\n const shouldRenderCards =\n shouldRenderInitialLoading || renderedRows.length > 0;\n const cardScrollContainerRef = React.useRef(null);\n\n const renderCardView = (\n rows: Array>,\n options?: {\n isLoading?: boolean;\n loadingRowCount?: number;\n },\n ) => (\n \n );\n\n return (\n \n \n \n {shouldRenderCards ? (\n shouldRenderInitialLoading ? (\n renderCardView([], {\n isLoading: true,\n loadingRowCount: resolvedLoadingRowCount,\n })\n ) : (\n renderCardView(renderedRows)\n )\n ) : (\n
\n {emptyNode ?? (\n \n )}\n
\n )}\n\n {infiniteScroll?.enabled && !shouldRenderInitialLoading ? (\n
\n
\n
\n ) : null}\n
\n \n \n );\n}\n","import * as React from \"react\";\nimport { DataTableBaseCardPanel } from \"./data-table-base-card-panel\";\nimport type { DataTableCardPanelProps } from \"./data-table-card-panel-types\";\n\nconst LazyDataTableVirtualCardPanel = React.lazy(async () => {\n const module = await import(\"./data-table-virtual-card-panel\");\n return { default: module.DataTableVirtualCardPanel };\n}) as unknown as typeof DataTableBaseCardPanel;\n\nexport function DataTableCardPanel(\n props: DataTableCardPanelProps,\n) {\n const config =\n typeof props.virtualization === \"object\"\n ? props.virtualization.card\n : undefined;\n\n if (config?.enabled !== true) {\n return ;\n }\n\n return (\n }>\n \n \n );\n}\n\nexport type { DataTableCardPanelProps };\n","import * as React from \"react\";\nimport type { PaginationState } from \"@tanstack/react-table\";\nimport type { DataTableLabels } from \"../types\";\n\ntype DataTableFooterSectionProps = {\n children?: React.ReactNode;\n currentPagination: PaginationState;\n DataTableFooter: React.ElementType;\n effectivePageCount: number;\n footerTotalRowCount: number | undefined;\n handleFooterPageIndexChange: (pageIndex: number) => void;\n handleFooterPageSizeChange: (pageSize: number) => void;\n labels: DataTableLabels;\n pageCountKnown?: boolean;\n rowsPerPageOptions: Array;\n showFooter: boolean;\n};\n\nexport function DataTableFooterSection({\n children,\n currentPagination,\n DataTableFooter,\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n labels,\n pageCountKnown = true,\n rowsPerPageOptions,\n showFooter,\n}: DataTableFooterSectionProps) {\n if (!showFooter && !children) {\n return null;\n }\n\n return (\n
\n {showFooter ? (\n \n ) : null}\n {children}\n
\n );\n}\n","import * as React from \"react\";\nimport type { Table as TanStackTable } from \"@tanstack/react-table\";\nimport type { DataTableLabels, DataTableProps } from \"../types\";\n\ntype DataTableToolbarSectionProps = {\n allRows: Array;\n columnFilters: Array;\n columnVisibilityOptions: Array;\n compactToolbar: React.ReactNode;\n customToolbar: React.ReactNode;\n DataTableToolbar: React.ElementType;\n description: string | undefined;\n effectiveToolbarActions: Array;\n enableColumnPinning: boolean;\n enableDensityToggle: boolean;\n enableViewToggle: boolean;\n hiddenRowsLabel: string | undefined;\n labels: DataTableLabels;\n onClearColumnFilters: () => void;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n onColumnPinningChange: (columnId: string, side: \"left\" | \"right\" | false) => void;\n onDensityChange: (density: \"compact\" | \"comfortable\" | \"spacious\") => void;\n onShowHiddenRowsChange: (showHiddenRows: boolean) => void;\n onToolbarQueryValueChange: (value: string) => void;\n onViewModeChange: (viewMode: \"table\" | \"card\") => void;\n openFileDialog: (() => void) | undefined;\n selectedRows: Array;\n selectionActions: DataTableProps[\"selectionActions\"];\n showHiddenRows: boolean;\n table: TanStackTable;\n title: string | undefined;\n toolbarQueryPlaceholder: string;\n toolbarQueryValue: string;\n toolbarVisibility: DataTableProps[\"toolbarVisibility\"];\n density: \"compact\" | \"comfortable\" | \"spacious\";\n viewMode: \"table\" | \"card\";\n};\n\nexport function DataTableToolbarSection({\n allRows,\n columnFilters,\n columnVisibilityOptions,\n compactToolbar,\n customToolbar,\n DataTableToolbar,\n description,\n effectiveToolbarActions,\n enableColumnPinning,\n enableDensityToggle,\n enableViewToggle,\n hiddenRowsLabel,\n labels,\n onClearColumnFilters,\n onColumnFilterChange,\n onColumnPinningChange,\n onDensityChange,\n onShowHiddenRowsChange,\n onToolbarQueryValueChange,\n onViewModeChange,\n openFileDialog,\n selectedRows,\n selectionActions,\n showHiddenRows,\n table,\n title,\n toolbarQueryPlaceholder,\n toolbarQueryValue,\n toolbarVisibility,\n density,\n viewMode,\n}: DataTableToolbarSectionProps) {\n return (\n
\n {\n table.getColumn(columnId)?.toggleVisibility(visible);\n }}\n enableColumnPinning={enableColumnPinning}\n onColumnPinningChange={onColumnPinningChange}\n columnFilters={columnFilters}\n onColumnFilterChange={onColumnFilterChange}\n onClearColumnFilters={onClearColumnFilters}\n density={density}\n onDensityChange={onDensityChange}\n enableDensityToggle={enableDensityToggle}\n labels={labels}\n toolbarVisibility={toolbarVisibility}\n openFileDialog={openFileDialog}\n />\n
\n );\n}\n","import type { DataTableLabels } from \"../types\";\n\ntype ResolvedDataTableLabels = Required;\n\nexport const DATA_TABLE_DEFAULT_LABELS: ResolvedDataTableLabels = {\n searchPlaceholder: \"Search rows...\",\n searchTable: \"Search table\",\n clearSearch: \"Clear search\",\n noRowsTitle: \"No rows yet\",\n noRowsDescription: \"Create a record or refresh this view once data exists.\",\n noMatchingRowsTitle: \"No matching rows\",\n noMatchingRowsDescription: \"Try a different search term or clear filters.\",\n tableOptions: \"Show table options\",\n columns: \"Columns\",\n filters: \"Filters\",\n clearFilters: \"Clear filters\",\n selectedRows: (count) =>\n `${count} record${count === 1 ? \"\" : \"s\"} selected`,\n showHiddenRows: (label) => `Show ${label}`,\n recordsPerPage: \"Records per page\",\n totalRecords: (count) => `Total records: ${count}`,\n pageStatus: (pageIndex, pageCount) => `Page ${pageIndex + 1} of ${pageCount}`,\n pageStatusUnknown: (pageIndex) => `Page ${pageIndex + 1}`,\n pagination: \"Pagination\",\n morePages: \"More pages\",\n firstPage: \"First page\",\n previousPage: \"Previous page\",\n nextPage: \"Next page\",\n lastPage: \"Last page\",\n selectAllVisibleRows: \"Select all visible rows\",\n selectRow: \"Select row\",\n selectCardRow: (rowId) => `Select row ${rowId}`,\n switchToTableView: \"Switch to table view\",\n switchToCardView: \"Switch to card view\",\n tableView: \"Table view\",\n cardView: \"Card view\",\n allFilterOptions: \"All\",\n actions: \"Actions\",\n rowActions: \"Row actions\",\n editRow: \"Edit row\",\n saveEdit: \"Save\",\n cancelEdit: \"Cancel editing\",\n expandRow: \"Expand row\",\n collapseRow: \"Collapse row\",\n exportCsv: \"Export CSV\",\n density: \"Density\",\n compactDensity: \"Compact\",\n comfortableDensity: \"Comfortable\",\n spaciousDensity: \"Spacious\",\n pinLeft: \"Pin left\",\n pinRight: \"Pin right\",\n unpin: \"Unpin\",\n};\n\nexport function resolveDataTableLabels(\n labels?: Partial,\n): ResolvedDataTableLabels {\n return {\n ...DATA_TABLE_DEFAULT_LABELS,\n ...labels,\n } as ResolvedDataTableLabels;\n}\n","import * as React from \"react\";\nimport type { ColumnDef, Table as TanStackTable } from \"@tanstack/react-table\";\nimport { IconChevronDown } from \"../icons\";\nimport type {\n DataTableEditableRowsConfig,\n DataTableLabels,\n DataTableProps,\n DataTableRowAction,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport {\n UTILITY_COLUMN_SIZE,\n decorateFilterableColumn,\n isDataTableLoadingRow,\n} from \"./data-table-utils\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\ntype DataTableRowActionsComponentProps = {\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n labels: DataTableLabels;\n onCancelEditing: () => void;\n onStartEditing: () => void;\n row: TData;\n rowActions: Array>;\n};\n\nexport function useDataTableColumns({\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n editingRowId,\n enableRowSelection,\n getRowCanExpand,\n isSavingEdit,\n labels,\n lastSelectedRowIdRef,\n renderExpandedRow,\n rowActions,\n saveEdit,\n startEditingRow,\n tableRef,\n}: {\n Button: DataTableUiKit[\"Button\"];\n Checkbox: DataTableUiKit[\"Checkbox\"];\n DataTableRowActions: React.ComponentType<\n DataTableRowActionsComponentProps\n >;\n Tooltip: DataTableUiKit[\"Tooltip\"];\n TooltipContent: DataTableUiKit[\"TooltipContent\"];\n TooltipTrigger: DataTableUiKit[\"TooltipTrigger\"];\n cancelEditing: () => void;\n columns: DataTableProps[\"columns\"];\n editableRows: DataTableProps[\"editableRows\"];\n editingRowId: string | null;\n enableRowSelection: boolean;\n getRowCanExpand: DataTableProps[\"getRowCanExpand\"];\n isSavingEdit: boolean;\n labels: DataTableLabels;\n lastSelectedRowIdRef: React.MutableRefObject;\n renderExpandedRow: DataTableProps[\"renderExpandedRow\"];\n rowActions: Array>;\n saveEdit: (row: TData) => Promise;\n startEditingRow: (row: TData, rowId: string) => void;\n tableRef: React.RefObject | null>;\n}) {\n const selectRowRange = React.useCallback(\n (targetRowId: string, selected: boolean) => {\n const tableInstance = tableRef.current;\n if (!tableInstance || !lastSelectedRowIdRef.current) {\n return;\n }\n\n const rows = tableInstance\n .getRowModel()\n .rows.filter((row) => !isDataTableLoadingRow(row.original));\n const startIndex = rows.findIndex(\n (row) => row.id === lastSelectedRowIdRef.current,\n );\n const endIndex = rows.findIndex((row) => row.id === targetRowId);\n\n if (startIndex < 0 || endIndex < 0) {\n return;\n }\n\n const from = Math.min(startIndex, endIndex);\n const to = Math.max(startIndex, endIndex);\n tableInstance.setRowSelection((current) => {\n const next = { ...current };\n for (const row of rows.slice(from, to + 1)) {\n if (selected) {\n next[row.id] = true;\n } else {\n delete next[row.id];\n }\n }\n return next;\n });\n },\n [lastSelectedRowIdRef, tableRef],\n );\n\n return React.useMemo>>(() => {\n const defs: Array> = [];\n\n if (renderExpandedRow) {\n defs.push({\n id: \"__expand__\",\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n size: UTILITY_COLUMN_SIZE,\n minSize: UTILITY_COLUMN_SIZE,\n maxSize: UTILITY_COLUMN_SIZE,\n header: () => {labels.expandRow},\n cell: ({ row }) => {\n const canExpand =\n getRowCanExpand?.(row.original) ?? Boolean(renderExpandedRow);\n if (!canExpand) {\n return null;\n }\n\n const isExpanded = row.getIsExpanded();\n return (\n
\n row.toggleExpanded()}\n >\n \n \n
\n );\n },\n });\n }\n\n if (enableRowSelection) {\n defs.push({\n id: \"__select__\",\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n size: UTILITY_COLUMN_SIZE,\n minSize: UTILITY_COLUMN_SIZE,\n maxSize: UTILITY_COLUMN_SIZE,\n header: ({ table }) => (\n
\n {\n table.toggleAllPageRowsSelected(checked === true);\n }}\n aria-label={\n labels.selectAllVisibleRows ??\n DATA_TABLE_DEFAULT_LABELS.selectAllVisibleRows\n }\n />\n
\n ),\n cell: ({ row }) => (\n
\n ) => {\n if (!event.shiftKey || !lastSelectedRowIdRef.current) {\n lastSelectedRowIdRef.current = row.id;\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n selectRowRange(row.id, !row.getIsSelected());\n lastSelectedRowIdRef.current = row.id;\n }}\n onCheckedChange={(checked: boolean | \"indeterminate\") => {\n lastSelectedRowIdRef.current = row.id;\n row.toggleSelected(checked === true);\n }}\n aria-label={\n labels.selectRow ?? DATA_TABLE_DEFAULT_LABELS.selectRow\n }\n />\n
\n ),\n });\n }\n\n defs.push(...columns.map((column) => decorateFilterableColumn(column)));\n\n if (rowActions.length || editableRows) {\n defs.push({\n id: \"__actions__\",\n enableSorting: false,\n enableResizing: false,\n enableHiding: false,\n size: UTILITY_COLUMN_SIZE,\n minSize: UTILITY_COLUMN_SIZE,\n maxSize: UTILITY_COLUMN_SIZE,\n header: () => {labels.actions},\n cell: ({ row }) => {\n const rowId = row.id;\n const isEditing = editingRowId === rowId;\n\n if (isEditing) {\n return (\n
\n {\n void saveEdit(row.original);\n }}\n >\n {labels.saveEdit}\n \n \n \n \n \n {labels.cancelEdit}\n \n \n {labels.cancelEdit}\n \n
\n );\n }\n\n return (\n
\n {\n startEditingRow(row.original, row.id);\n }}\n onCancelEditing={() => {}}\n labels={labels}\n />\n
\n );\n },\n });\n }\n\n return defs;\n }, [\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n editingRowId,\n enableRowSelection,\n getRowCanExpand,\n isSavingEdit,\n labels,\n lastSelectedRowIdRef,\n renderExpandedRow,\n rowActions,\n saveEdit,\n selectRowRange,\n startEditingRow,\n ]);\n}\n","import * as React from \"react\";\n\nexport function useDataTableInfiniteScroll({\n enabled,\n hasMore,\n isLoadingMore,\n onLoadMore,\n onError,\n}: {\n enabled: boolean;\n hasMore: boolean;\n isLoadingMore?: boolean;\n onLoadMore: () => void | Promise;\n onError?: (error: unknown) => void;\n}) {\n const sentinelRef = React.useRef(null);\n const isRequestInFlightRef = React.useRef(false);\n const onLoadMoreEvent = React.useEffectEvent(onLoadMore);\n const onErrorEvent = React.useEffectEvent((error: unknown) => {\n onError?.(error);\n });\n\n React.useEffect(() => {\n if (!enabled || !hasMore || isLoadingMore) {\n return;\n }\n\n const target = sentinelRef.current;\n if (!target) {\n return;\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n const entry = entries[0];\n if (entry.isIntersecting && !isRequestInFlightRef.current) {\n isRequestInFlightRef.current = true;\n\n let result: void | Promise;\n try {\n result = onLoadMoreEvent();\n } catch (error) {\n isRequestInFlightRef.current = false;\n onErrorEvent(error);\n return;\n }\n\n void Promise.resolve(result)\n .catch((error: unknown) => {\n onErrorEvent(error);\n })\n .finally(() => {\n isRequestInFlightRef.current = false;\n });\n }\n },\n {\n rootMargin: \"200px 0px 200px 0px\",\n },\n );\n\n observer.observe(target);\n\n return () => {\n observer.disconnect();\n };\n }, [enabled, hasMore, isLoadingMore]);\n\n return sentinelRef;\n}\n","import * as React from \"react\";\n\nexport function useDataTablePaginationClamp({\n enabled,\n maxPageIndex,\n onPageIndexChange,\n pageIndex,\n setLocalPageIndex,\n}: {\n enabled: boolean;\n maxPageIndex: number;\n onPageIndexChange?: (pageIndex: number) => void;\n pageIndex: number;\n setLocalPageIndex: (pageIndex: number) => void;\n}) {\n React.useEffect(() => {\n if (!enabled) {\n return;\n }\n\n if (pageIndex >= 0 && pageIndex <= maxPageIndex) {\n return;\n }\n\n const nextPageIndex = Math.min(Math.max(pageIndex, 0), maxPageIndex);\n setLocalPageIndex(nextPageIndex);\n onPageIndexChange?.(nextPageIndex);\n }, [enabled, maxPageIndex, onPageIndexChange, pageIndex, setLocalPageIndex]);\n}\n","import * as React from \"react\";\nimport {\n getCoreRowModel,\n getExpandedRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\";\nimport type {\n ColumnDef,\n ColumnFiltersState,\n ColumnOrderState,\n ColumnPinningState,\n ColumnSizingState,\n ExpandedState,\n FilterFnOption,\n OnChangeFn,\n PaginationState,\n Row,\n SortingState,\n Table as TanStackTable,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport type { DataTableProps } from \"../types\";\nimport {\n dataTableGlobalFilterFn,\n getColumnId,\n getDataTableLeafColumns,\n isUtilityColumnId,\n moveColumnInOrder,\n} from \"./data-table-utils\";\nimport { useDataTableInfiniteScroll } from \"./use-data-table-infinite-scroll\";\nimport { useDataTablePaginationClamp } from \"./use-data-table-pagination-clamp\";\n\nexport function useDataTableInstance({\n autoResetPageIndex,\n columnResizeMode,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentColumnSizing,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentSorting,\n defaultColumn,\n effectiveColumnVisibility,\n enableColumnResizing,\n enableRowSelection,\n getRowCanExpand,\n globalFilterFn,\n globalFilterValue,\n hasNextPage,\n handleColumnFiltersChange,\n handleColumnOrderChange,\n handleColumnPinningChange,\n handleColumnVisibilityChange,\n handleExpandedChange,\n infiniteScroll,\n manualFiltering,\n manualPagination,\n manualSorting,\n onActionError,\n onPageIndexChange,\n onPageSizeChange,\n pageCount,\n pageIndex,\n pageSize,\n renderExpandedRow,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n shouldRenderInitialLoading,\n tableColumns,\n tableData,\n tableGetRowId,\n tableRef,\n totalRowCount,\n}: {\n autoResetPageIndex: boolean;\n columnResizeMode: DataTableProps[\"columnResizeMode\"];\n currentColumnFilters: ColumnFiltersState;\n currentColumnOrder: ColumnOrderState;\n currentColumnPinning: ColumnPinningState;\n currentColumnSizing: ColumnSizingState;\n currentExpanded: ExpandedState;\n currentPagination: PaginationState;\n currentRowSelection: Record;\n currentSorting: SortingState;\n currentViewMode: \"table\" | \"card\";\n defaultColumn: Partial>;\n effectiveColumnVisibility: VisibilityState;\n enableColumnResizing: boolean;\n enableRowSelection: boolean;\n getRowCanExpand: DataTableProps[\"getRowCanExpand\"];\n globalFilterFn: FilterFnOption | undefined;\n globalFilterValue: string;\n hasNextPage?: DataTableProps[\"hasNextPage\"];\n handleColumnFiltersChange: OnChangeFn;\n handleColumnOrderChange: OnChangeFn;\n handleColumnPinningChange: OnChangeFn;\n handleColumnVisibilityChange: OnChangeFn;\n handleExpandedChange: OnChangeFn;\n infiniteScroll: DataTableProps[\"infiniteScroll\"];\n manualFiltering: boolean;\n manualPagination: boolean;\n manualSorting: boolean;\n onActionError?: DataTableProps[\"onActionError\"];\n onPageIndexChange: DataTableProps[\"onPageIndexChange\"];\n onPageSizeChange: DataTableProps[\"onPageSizeChange\"];\n pageCount: DataTableProps[\"pageCount\"];\n pageIndex: DataTableProps[\"pageIndex\"];\n pageSize: DataTableProps[\"pageSize\"];\n renderExpandedRow: DataTableProps[\"renderExpandedRow\"];\n setCurrentRowSelection: OnChangeFn>;\n setCurrentSorting: OnChangeFn;\n setLocalColumnSizing: OnChangeFn;\n setLocalPagination: React.Dispatch>;\n shouldRenderInitialLoading: boolean;\n tableColumns: Array>;\n tableData: Array;\n tableGetRowId: DataTableProps[\"getRowId\"];\n tableRef: React.RefObject | null>;\n tableScrollElement: HTMLElement | null;\n /**\n * @deprecated Filtering now runs through TanStack Table. Retained so\n * advanced 4.x hook callers remain source-compatible.\n */\n toolbarFilteredData?: Array;\n totalRowCount: DataTableProps[\"totalRowCount\"];\n virtualization: DataTableProps[\"virtualization\"];\n viewportHeight: number;\n}) {\n const generatedColumnIds = React.useMemo(() => {\n return getDataTableLeafColumns(\n tableColumns as DataTableProps[\"columns\"],\n ).map(({ column, index }) => getColumnId(column, index));\n }, [tableColumns]);\n\n const effectiveColumnOrder = React.useMemo(() => {\n const columnIds = generatedColumnIds;\n const dataColumnIds = columnIds.filter(\n (columnId) =>\n !isUtilityColumnId(columnId) && columnId !== \"__spacer__\",\n );\n const dataColumnIdSet = new Set(dataColumnIds);\n const orderedDataColumnIds = currentColumnOrder.filter((columnId) =>\n dataColumnIdSet.has(columnId),\n );\n const unorderedDataColumnIds = dataColumnIds.filter(\n (columnId) => !orderedDataColumnIds.includes(columnId),\n );\n\n return [\n ...columnIds.filter(\n (columnId) => columnId === \"__expand__\" || columnId === \"__select__\",\n ),\n ...orderedDataColumnIds,\n ...unorderedDataColumnIds,\n ...columnIds.filter((columnId) => columnId === \"__spacer__\"),\n ...columnIds.filter((columnId) => columnId === \"__actions__\"),\n ];\n }, [currentColumnOrder, generatedColumnIds]);\n\n const effectiveColumnPinning = React.useMemo(() => {\n const columnIdSet = new Set(generatedColumnIds);\n const dataColumnIdSet = new Set(\n generatedColumnIds.filter(\n (columnId) =>\n !isUtilityColumnId(columnId) && columnId !== \"__spacer__\",\n ),\n );\n const dataLeft = (currentColumnPinning.left ?? []).filter((columnId) =>\n dataColumnIdSet.has(columnId),\n );\n const dataRight = (currentColumnPinning.right ?? []).filter((columnId) =>\n dataColumnIdSet.has(columnId),\n );\n\n return {\n left: [\n ...[\"__expand__\", \"__select__\"].filter((columnId) =>\n columnIdSet.has(columnId),\n ),\n ...dataLeft,\n ],\n right: [\n ...dataRight,\n ...[\"__actions__\"].filter((columnId) => columnIdSet.has(columnId)),\n ],\n };\n }, [currentColumnPinning, generatedColumnIds]);\n\n const tableState = React.useMemo(\n () => ({\n sorting: currentSorting,\n pagination: currentPagination,\n rowSelection: currentRowSelection,\n columnVisibility: effectiveColumnVisibility,\n columnFilters: currentColumnFilters,\n globalFilter: globalFilterValue,\n expanded: currentExpanded,\n columnOrder: effectiveColumnOrder,\n columnPinning: effectiveColumnPinning,\n columnSizing: currentColumnSizing,\n }),\n [\n currentColumnFilters,\n currentColumnSizing,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentSorting,\n effectiveColumnVisibility,\n effectiveColumnOrder,\n effectiveColumnPinning,\n globalFilterValue,\n ],\n );\n\n const handlePaginationChange = React.useCallback<\n OnChangeFn\n >(\n (updater) => {\n const nextValue =\n typeof updater === \"function\" ? updater(currentPagination) : updater;\n\n if (pageIndex === undefined || pageSize === undefined) {\n setLocalPagination((current) => ({\n pageIndex:\n pageIndex === undefined ? nextValue.pageIndex : current.pageIndex,\n pageSize:\n pageSize === undefined ? nextValue.pageSize : current.pageSize,\n }));\n }\n\n if (nextValue.pageIndex !== currentPagination.pageIndex) {\n onPageIndexChange?.(nextValue.pageIndex);\n }\n if (nextValue.pageSize !== currentPagination.pageSize) {\n onPageSizeChange?.(nextValue.pageSize);\n }\n },\n [\n currentPagination,\n onPageIndexChange,\n onPageSizeChange,\n pageIndex,\n pageSize,\n setLocalPagination,\n ],\n );\n\n const handleColumnSizingChange = React.useCallback<\n OnChangeFn\n >(\n (updater) => {\n setLocalColumnSizing(updater);\n },\n [setLocalColumnSizing],\n );\n\n // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Table owns its instance functions.\n const table = useReactTable({\n data: tableData,\n columns: tableColumns,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: manualFiltering ? undefined : getFilteredRowModel(),\n getSortedRowModel: manualSorting ? undefined : getSortedRowModel(),\n getExpandedRowModel: renderExpandedRow ? getExpandedRowModel() : undefined,\n getPaginationRowModel:\n manualPagination || infiniteScroll?.enabled\n ? undefined\n : getPaginationRowModel(),\n enableRowSelection,\n enableMultiRowSelection: enableRowSelection,\n enableColumnResizing,\n columnResizeMode,\n getRowId: tableGetRowId,\n getRowCanExpand: renderExpandedRow\n ? (row) => getRowCanExpand?.(row.original) ?? true\n : undefined,\n globalFilterFn: globalFilterFn ?? dataTableGlobalFilterFn,\n getColumnCanGlobalFilter: (column) =>\n column.columnDef.enableGlobalFilter !== false &&\n typeof column.accessorFn === \"function\",\n manualSorting,\n manualFiltering,\n manualPagination: manualPagination || Boolean(infiniteScroll?.enabled),\n defaultColumn,\n autoResetPageIndex,\n state: tableState,\n onSortingChange: setCurrentSorting,\n onPaginationChange: handlePaginationChange,\n onRowSelectionChange: setCurrentRowSelection,\n onColumnVisibilityChange: handleColumnVisibilityChange,\n onColumnFiltersChange: handleColumnFiltersChange,\n onExpandedChange: handleExpandedChange,\n onColumnOrderChange: handleColumnOrderChange,\n onColumnPinningChange: handleColumnPinningChange,\n onColumnSizingChange: handleColumnSizingChange,\n });\n tableRef.current = table;\n\n const visibleLeafColumns = table.getVisibleLeafColumns();\n const reorderColumn = React.useCallback(\n (sourceColumnId: string, targetColumnId: string) => {\n if (sourceColumnId === targetColumnId) {\n return;\n }\n\n const defaultOrder = table\n .getAllLeafColumns()\n .map((column) => column.id)\n .filter((columnId) => !isUtilityColumnId(columnId));\n const nextOrder = moveColumnInOrder(\n currentColumnOrder.length ? currentColumnOrder : defaultOrder,\n sourceColumnId,\n targetColumnId,\n );\n handleColumnOrderChange(nextOrder);\n },\n [currentColumnOrder, handleColumnOrderChange, table],\n );\n\n const renderedRows = table.getRowModel().rows;\n const rowsToRender = renderedRows.map((row, rowIndex) => ({\n row,\n rowIndex,\n }));\n\n const usesManualRows = manualPagination || Boolean(infiniteScroll?.enabled);\n const derivedTotalRowCount = usesManualRows\n ? undefined\n : table.getFilteredRowModel().rows.length;\n const effectiveTotalRowCount = totalRowCount ?? derivedTotalRowCount;\n const isPageCountKnown =\n !usesManualRows || pageCount !== undefined || totalRowCount !== undefined;\n const footerTotalRowCount = effectiveTotalRowCount;\n const effectivePageCount = shouldRenderInitialLoading\n ? 1\n : (pageCount ??\n (effectiveTotalRowCount !== undefined\n ? Math.max(\n 1,\n Math.ceil(effectiveTotalRowCount / currentPagination.pageSize),\n )\n : usesManualRows\n ? currentPagination.pageIndex + (hasNextPage ? 2 : 1)\n : table.getPageCount()));\n const maxPageIndex = Math.max(0, effectivePageCount - 1);\n\n const setLocalPageIndex = React.useCallback(\n (nextPageIndex: number) => {\n if (pageIndex !== undefined) {\n return;\n }\n\n setLocalPagination((current) =>\n current.pageIndex === nextPageIndex\n ? current\n : { ...current, pageIndex: nextPageIndex },\n );\n },\n [pageIndex, setLocalPagination],\n );\n useDataTablePaginationClamp({\n enabled:\n !shouldRenderInitialLoading &&\n !infiniteScroll?.enabled &&\n isPageCountKnown,\n maxPageIndex,\n onPageIndexChange,\n pageIndex: currentPagination.pageIndex,\n setLocalPageIndex,\n });\n\n const handleFooterPageIndexChange = React.useCallback(\n (nextPageIndex: number) => {\n if (nextPageIndex === currentPagination.pageIndex) {\n return;\n }\n\n onPageIndexChange?.(nextPageIndex);\n if (pageIndex === undefined) {\n setLocalPagination((current) =>\n current.pageIndex === nextPageIndex\n ? current\n : { ...current, pageIndex: nextPageIndex },\n );\n }\n },\n [\n currentPagination.pageIndex,\n onPageIndexChange,\n pageIndex,\n setLocalPagination,\n ],\n );\n const handleFooterPageSizeChange = React.useCallback(\n (nextPageSize: number) => {\n if (currentPagination.pageIndex !== 0) {\n onPageIndexChange?.(0);\n }\n if (nextPageSize !== currentPagination.pageSize) {\n onPageSizeChange?.(nextPageSize);\n }\n if (pageSize === undefined) {\n setLocalPagination({\n pageIndex: 0,\n pageSize: nextPageSize,\n });\n }\n },\n [\n currentPagination.pageIndex,\n currentPagination.pageSize,\n onPageIndexChange,\n onPageSizeChange,\n pageSize,\n setLocalPagination,\n ],\n );\n\n const sentinelRef = useDataTableInfiniteScroll({\n enabled: Boolean(infiniteScroll?.enabled),\n hasMore: Boolean(infiniteScroll?.hasMore),\n isLoadingMore: infiniteScroll?.isLoadingMore,\n onLoadMore: () => infiniteScroll?.onLoadMore(),\n onError: (error) => {\n onActionError?.({\n error,\n source: \"infiniteScroll\",\n });\n },\n });\n\n return {\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n isPageCountKnown,\n renderedRows,\n reorderColumn,\n rowsToRender,\n sentinelRef,\n table,\n virtualPaddingBottom: 0,\n virtualPaddingTop: 0,\n visibleLeafColumns,\n };\n}\n\nexport type DataTableRowsToRender = Array<{\n row: Row;\n rowIndex: number;\n}>;\n","import * as React from \"react\";\nimport type { Updater } from \"@tanstack/react-table\";\n\nexport function useControllableState({\n defaultValue,\n onChange,\n value,\n}: {\n defaultValue: T | (() => T);\n onChange?: (value: T) => void;\n value: T | undefined;\n}) {\n const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue);\n const currentValue = value ?? uncontrolledValue;\n const currentValueRef = React.useRef(currentValue);\n\n React.useEffect(() => {\n currentValueRef.current = currentValue;\n }, [currentValue]);\n\n const setValue = React.useCallback(\n (updater: Updater) => {\n const nextValue =\n typeof updater === \"function\"\n ? (updater as (current: T) => T)(currentValueRef.current)\n : updater;\n currentValueRef.current = nextValue;\n\n onChange?.(nextValue);\n\n if (value === undefined) {\n setUncontrolledValue(nextValue);\n }\n },\n [onChange, value],\n );\n\n return [currentValue, setValue] as const;\n}\n","import * as React from \"react\";\nimport type {\n DataTableColumnPrefs,\n DataTableDensity,\n DataTablePersistenceConfig,\n DataTablePersistencePayload,\n DataTablePersistenceSlice,\n DataTablePersistenceStorage,\n} from \"../types\";\n\nconst STORAGE_PREFIX = \"data-table-pro:column-prefs:\";\nconst DEFAULT_VERSION = 1;\nconst ALL_SLICES: Array = [\n \"visibility\",\n \"sizing\",\n \"order\",\n \"pinning\",\n \"density\",\n];\n\nexport function readDataTableColumnPrefs(\n input: string | DataTablePersistenceConfig | undefined,\n): DataTableColumnPrefs {\n const config = resolvePersistenceConfig(input);\n if (!config) {\n return {};\n }\n\n const storage = resolveStorage(config);\n if (!storage) {\n return {};\n }\n const storageKey = getStorageKey(config.key);\n\n let value: string | null;\n try {\n value = storage.getItem(storageKey);\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return {};\n }\n if (!value) {\n return {};\n }\n\n let parsed: unknown;\n try {\n parsed = (config.deserialize ?? JSON.parse)(value);\n } catch (error) {\n config.onError?.({ error, operation: \"deserialize\" });\n return {};\n }\n\n const targetVersion = config.version ?? DEFAULT_VERSION;\n let candidate: unknown;\n if (isPersistencePayload(parsed)) {\n if (parsed.version === targetVersion) {\n candidate = parsed.state;\n } else if (config.migrate) {\n try {\n candidate = config.migrate(\n {\n version: parsed.version,\n state: parsed.state,\n },\n targetVersion,\n );\n } catch (error) {\n config.onError?.({ error, operation: \"migrate\" });\n return {};\n }\n } else {\n return {};\n }\n } else {\n // Raw objects are the legacy columnPrefsKey format. They are validated and\n // upgraded to a versioned envelope on the next successful write.\n candidate = parsed;\n }\n\n return selectPersistenceSlices(\n validateDataTableColumnPrefs(candidate),\n config.slices,\n );\n}\n\nexport function clearDataTableColumnPrefs(\n input: string | DataTablePersistenceConfig | undefined,\n) {\n const config = resolvePersistenceConfig(input);\n if (!config) {\n return false;\n }\n\n const storage = resolveStorage(config);\n if (!storage) {\n return false;\n }\n\n try {\n storage.removeItem(getStorageKey(config.key));\n return true;\n } catch (error) {\n config.onError?.({ error, operation: \"remove\" });\n return false;\n }\n}\n\nexport function usePersistDataTableColumnPrefs({\n key,\n persistence,\n prefs,\n}: {\n key?: string;\n persistence?: DataTablePersistenceConfig;\n prefs: DataTableColumnPrefs;\n}) {\n const config = persistence ?? resolvePersistenceConfig(key);\n const storage = config ? resolveStorage(config) : undefined;\n const storageKey = config ? getStorageKey(config.key) : undefined;\n const version = config?.version ?? DEFAULT_VERSION;\n const debounceMs = Math.max(0, config?.debounceMs ?? 100);\n const selectedState = selectPersistenceSlices(prefs, config?.slices);\n const serialized = React.useMemo(() => {\n if (!config) {\n return { value: undefined };\n }\n\n try {\n const payload: DataTablePersistencePayload = {\n version,\n state: selectedState,\n };\n return {\n value: (config.serialize ?? JSON.stringify)(payload),\n };\n } catch (error) {\n return { error, value: undefined };\n }\n }, [config, selectedState, version]);\n const onErrorEvent = React.useEffectEvent(\n (\n error: unknown,\n operation: \"serialize\" | \"write\",\n ) => {\n config?.onError?.({ error, operation });\n },\n );\n\n React.useEffect(() => {\n if (serialized.error !== undefined) {\n onErrorEvent(serialized.error, \"serialize\");\n }\n }, [serialized.error]);\n\n React.useEffect(() => {\n if (!storage || !storageKey || serialized.value === undefined) {\n return;\n }\n\n const write = () => {\n try {\n if (storage.getItem(storageKey) === serialized.value) {\n return;\n }\n storage.setItem(storageKey, serialized.value);\n } catch (error) {\n onErrorEvent(error, \"write\");\n }\n };\n\n if (debounceMs === 0) {\n write();\n return;\n }\n\n const timeout = globalThis.setTimeout(write, debounceMs);\n return () => {\n globalThis.clearTimeout(timeout);\n };\n }, [debounceMs, serialized.value, storage, storageKey]);\n}\n\nfunction resolvePersistenceConfig(\n input: string | DataTablePersistenceConfig | undefined,\n): DataTablePersistenceConfig | undefined {\n if (!input) {\n return undefined;\n }\n\n return typeof input === \"string\" ? { key: input } : input;\n}\n\nfunction resolveStorage(\n config: DataTablePersistenceConfig,\n): DataTablePersistenceStorage | undefined {\n if (config.storage) {\n return config.storage;\n }\n\n if (typeof window === \"undefined\") {\n return undefined;\n }\n\n try {\n return window.localStorage;\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return undefined;\n }\n}\n\nfunction getStorageKey(key: string) {\n return `${STORAGE_PREFIX}${key}`;\n}\n\nfunction isPersistencePayload(\n value: unknown,\n): value is { version: unknown; state: unknown } {\n return (\n isRecord(value) &&\n Object.prototype.hasOwnProperty.call(value, \"version\") &&\n Object.prototype.hasOwnProperty.call(value, \"state\")\n );\n}\n\nfunction selectPersistenceSlices(\n prefs: DataTableColumnPrefs,\n slices: Array | undefined,\n) {\n const selected = new Set(slices ?? ALL_SLICES);\n const result: DataTableColumnPrefs = {};\n\n for (const slice of ALL_SLICES) {\n if (selected.has(slice) && prefs[slice] !== undefined) {\n Object.assign(result, { [slice]: prefs[slice] });\n }\n }\n\n return result;\n}\n\nfunction validateDataTableColumnPrefs(value: unknown): DataTableColumnPrefs {\n if (!isRecord(value)) {\n return {};\n }\n\n const prefs: DataTableColumnPrefs = {};\n const visibility = validateBooleanRecord(value.visibility);\n if (visibility) {\n prefs.visibility = visibility;\n }\n const sizing = validateSizingRecord(value.sizing);\n if (sizing) {\n prefs.sizing = sizing;\n }\n const order = validateStringArray(value.order);\n if (order) {\n prefs.order = order;\n }\n if (isRecord(value.pinning)) {\n const left = validateStringArray(value.pinning.left) ?? [];\n const right = validateStringArray(value.pinning.right) ?? [];\n prefs.pinning = { left, right };\n }\n if (isDataTableDensity(value.density)) {\n prefs.density = value.density;\n }\n\n return prefs;\n}\n\nfunction validateBooleanRecord(value: unknown) {\n if (!isRecord(value)) {\n return undefined;\n }\n\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, boolean] => typeof entry[1] === \"boolean\",\n ),\n );\n}\n\nfunction validateSizingRecord(value: unknown) {\n if (!isRecord(value)) {\n return undefined;\n }\n\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, number] =>\n typeof entry[1] === \"number\" &&\n Number.isFinite(entry[1]) &&\n entry[1] >= 0,\n ),\n );\n}\n\nfunction validateStringArray(value: unknown) {\n if (!Array.isArray(value)) {\n return undefined;\n }\n\n return value.filter((item): item is string => typeof item === \"string\");\n}\n\nfunction isDataTableDensity(value: unknown): value is DataTableDensity {\n return (\n value === \"compact\" ||\n value === \"comfortable\" ||\n value === \"spacious\"\n );\n}\n\nfunction isRecord(value: unknown): value is Record {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n","import * as React from \"react\";\nimport type {\n ColumnFiltersState,\n ColumnOrderState,\n ColumnPinningState,\n ColumnSizingState,\n ExpandedState,\n PaginationState,\n SortingState,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableDensity,\n DataTableLabels,\n DataTableProps,\n} from \"../types\";\nimport {\n createDataTableLoadingRows,\n getColumnId,\n getDataTableLeafColumns,\n getDataTableLoadingRowId,\n getInitialColumnPinning,\n isDataTableLoadingRow,\n} from \"./data-table-utils\";\nimport {\n readDataTableColumnPrefs,\n usePersistDataTableColumnPrefs,\n} from \"./use-data-table-column-prefs\";\nimport { useControllableState } from \"./use-controllable-state\";\nimport { useDataTableContainerWidth } from \"./use-data-table-container-width\";\nimport { isHiddenAtContainerWidth, isRowVisible } from \"../types\";\n\nexport function useDataTableState({\n columnFilters,\n columnOrder,\n columnPinning,\n columnSizing,\n columnPrefsKey,\n persistence,\n columnVisibility,\n columns,\n data,\n density,\n enableRowSelection,\n enableToolbarQueryFiltering,\n expanded,\n getRowId,\n hiddenRows,\n initialState,\n isLoading,\n loadingRowCount,\n manualFiltering,\n onColumnFiltersChange,\n onColumnOrderChange,\n onColumnPinningChange,\n onColumnSizingChange,\n onColumnVisibilityChange,\n onDensityChange,\n onExpandedChange,\n onPageIndexChange,\n onRowSelectionChange,\n onShowHiddenRowsChange,\n onSortingChange,\n onToolbarQueryValueChange,\n onViewModeChange,\n pageIndex,\n pageSize,\n resolvedLabels,\n rowSelection,\n rowsPerPageOptions,\n selectionActions,\n showHiddenRows,\n sorting,\n toolbarQueryDebounceMs,\n toolbarQueryPlaceholder,\n toolbarQueryValue,\n viewMode,\n containerRef,\n}: {\n columnFilters: DataTableProps[\"columnFilters\"];\n columnOrder: DataTableProps[\"columnOrder\"];\n columnPinning: DataTableProps[\"columnPinning\"];\n columnSizing?: DataTableProps[\"columnSizing\"];\n columnPrefsKey: DataTableProps[\"columnPrefsKey\"];\n persistence?: DataTableProps[\"persistence\"];\n columnVisibility: DataTableProps[\"columnVisibility\"];\n columns: DataTableProps[\"columns\"];\n data: DataTableProps[\"data\"];\n density: DataTableProps[\"density\"];\n enableRowSelection: boolean;\n enableToolbarQueryFiltering: boolean;\n expanded: DataTableProps[\"expanded\"];\n getRowId: DataTableProps[\"getRowId\"];\n hiddenRows: DataTableProps[\"hiddenRows\"];\n initialState?: DataTableProps[\"initialState\"];\n isLoading: boolean;\n loadingRowCount: DataTableProps[\"loadingRowCount\"];\n manualFiltering: boolean;\n onColumnFiltersChange: DataTableProps[\"onColumnFiltersChange\"];\n onColumnOrderChange: DataTableProps[\"onColumnOrderChange\"];\n onColumnPinningChange: DataTableProps[\"onColumnPinningChange\"];\n onColumnSizingChange?: DataTableProps[\"onColumnSizingChange\"];\n onColumnVisibilityChange: DataTableProps[\"onColumnVisibilityChange\"];\n onDensityChange: DataTableProps[\"onDensityChange\"];\n onExpandedChange: DataTableProps[\"onExpandedChange\"];\n onPageIndexChange: DataTableProps[\"onPageIndexChange\"];\n onRowSelectionChange: DataTableProps[\"onRowSelectionChange\"];\n onShowHiddenRowsChange: DataTableProps[\"onShowHiddenRowsChange\"];\n onSortingChange: DataTableProps[\"onSortingChange\"];\n onToolbarQueryValueChange: DataTableProps[\"onToolbarQueryValueChange\"];\n onViewModeChange: DataTableProps[\"onViewModeChange\"];\n pageIndex: DataTableProps[\"pageIndex\"];\n pageSize: DataTableProps[\"pageSize\"];\n resolvedLabels: DataTableLabels;\n rowSelection: DataTableProps[\"rowSelection\"];\n rowsPerPageOptions: Array;\n selectionActions: DataTableProps[\"selectionActions\"];\n showHiddenRows: DataTableProps[\"showHiddenRows\"];\n sorting: DataTableProps[\"sorting\"];\n toolbarQueryDebounceMs: DataTableProps[\"toolbarQueryDebounceMs\"];\n toolbarQueryPlaceholder: DataTableProps[\"toolbarQueryPlaceholder\"];\n toolbarQueryValue: DataTableProps[\"toolbarQueryValue\"];\n viewMode: DataTableProps[\"viewMode\"];\n containerRef: React.RefObject;\n}) {\n const persistenceConfig = React.useMemo(\n () => persistence ?? (columnPrefsKey ? { key: columnPrefsKey } : undefined),\n [columnPrefsKey, persistence],\n );\n const persistedColumnPrefs = React.useMemo(\n () => readDataTableColumnPrefs(persistenceConfig),\n [persistenceConfig],\n );\n const [localPagination, setLocalPagination] =\n React.useState({\n pageIndex: initialState?.pagination?.pageIndex ?? 0,\n pageSize:\n initialState?.pagination?.pageSize ??\n rowsPerPageOptions[0] ??\n 20,\n });\n const [currentSorting, setCurrentSorting] =\n useControllableState({\n value: sorting,\n onChange: onSortingChange,\n defaultValue: () => initialState?.sorting ?? [],\n });\n const [currentRowSelection, setCurrentRowSelection] = useControllableState<\n Record\n >({\n value: rowSelection,\n onChange: onRowSelectionChange,\n defaultValue: () => initialState?.rowSelection ?? {},\n });\n const [currentColumnVisibility, setCurrentColumnVisibility] =\n useControllableState({\n value: columnVisibility,\n onChange: onColumnVisibilityChange,\n defaultValue: () =>\n initialState?.columnVisibility ??\n persistedColumnPrefs.visibility ??\n {},\n });\n const [currentColumnFilters, setCurrentColumnFilters] =\n useControllableState({\n value: columnFilters,\n onChange: onColumnFiltersChange,\n defaultValue: () => initialState?.columnFilters ?? [],\n });\n const [currentExpanded, setCurrentExpanded] =\n useControllableState({\n value: expanded,\n onChange: onExpandedChange,\n defaultValue: () => initialState?.expanded ?? {},\n });\n const [currentColumnOrder, setCurrentColumnOrder] =\n useControllableState({\n value: columnOrder,\n onChange: onColumnOrderChange,\n defaultValue: () =>\n initialState?.columnOrder ?? persistedColumnPrefs.order ?? [],\n });\n const [currentColumnPinning, setCurrentColumnPinning] =\n useControllableState({\n value: columnPinning,\n onChange: onColumnPinningChange,\n defaultValue: () =>\n initialState?.columnPinning ??\n persistedColumnPrefs.pinning ??\n getInitialColumnPinning(columns),\n });\n const [currentColumnSizing, setCurrentColumnSizing] =\n useControllableState({\n value: columnSizing,\n onChange: onColumnSizingChange,\n defaultValue: () =>\n initialState?.columnSizing ?? persistedColumnPrefs.sizing ?? {},\n });\n const [currentViewMode, setCurrentViewMode] = useControllableState<\n \"table\" | \"card\"\n >({\n value: viewMode,\n onChange: onViewModeChange,\n defaultValue: () => initialState?.viewMode ?? \"table\",\n });\n const [currentShowHiddenRows, setCurrentShowHiddenRows] =\n useControllableState({\n value: showHiddenRows,\n onChange: onShowHiddenRowsChange,\n defaultValue: () => initialState?.showHiddenRows ?? false,\n });\n const [currentDensity, setCurrentDensity] =\n useControllableState({\n value: density,\n onChange: onDensityChange,\n defaultValue: () =>\n initialState?.density ??\n persistedColumnPrefs.density ??\n \"comfortable\",\n });\n const resolvedToolbarQueryValue =\n toolbarQueryValue ?? initialState?.globalFilter ?? \"\";\n const resolvedToolbarQueryPlaceholder =\n toolbarQueryPlaceholder ?? resolvedLabels.searchPlaceholder;\n const resolvedToolbarQueryDebounceMs = toolbarQueryDebounceMs ?? 250;\n const [localSearchValue, setLocalSearchValue] = React.useState(\n resolvedToolbarQueryValue,\n );\n const containerWidth = useDataTableContainerWidth(containerRef);\n const hasOnSearchValueChange = Boolean(onToolbarQueryValueChange);\n const lastReportedSearchValueRef = React.useRef(resolvedToolbarQueryValue);\n const onToolbarQueryValueChangeEvent = React.useEffectEvent(\n (value: string) => {\n lastReportedSearchValueRef.current = value;\n onToolbarQueryValueChange?.(value);\n },\n );\n\n React.useEffect(() => {\n lastReportedSearchValueRef.current = resolvedToolbarQueryValue;\n // A controlled query change must replace any pending debounced draft.\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setLocalSearchValue(resolvedToolbarQueryValue);\n }, [resolvedToolbarQueryValue]);\n\n React.useEffect(() => {\n if (!hasOnSearchValueChange) {\n return;\n }\n\n if (localSearchValue === resolvedToolbarQueryValue) {\n return;\n }\n\n if (localSearchValue === lastReportedSearchValueRef.current) {\n return;\n }\n\n const timeout = window.setTimeout(() => {\n onToolbarQueryValueChangeEvent(localSearchValue);\n }, resolvedToolbarQueryDebounceMs);\n\n return () => {\n window.clearTimeout(timeout);\n };\n }, [\n hasOnSearchValueChange,\n localSearchValue,\n resolvedToolbarQueryDebounceMs,\n resolvedToolbarQueryValue,\n ]);\n\n const currentPagination = React.useMemo(\n () => ({\n pageIndex: pageIndex ?? localPagination.pageIndex,\n pageSize: pageSize ?? localPagination.pageSize,\n }),\n [\n localPagination.pageIndex,\n localPagination.pageSize,\n pageIndex,\n pageSize,\n ],\n );\n const resolvedLoadingRowCount = Math.max(\n 1,\n loadingRowCount ?? Math.min(5, currentPagination.pageSize),\n );\n const globalFilterValue = enableToolbarQueryFiltering\n ? localSearchValue\n : \"\";\n const handleViewModeChange = React.useCallback(\n (nextViewMode: \"table\" | \"card\") => {\n setCurrentViewMode(nextViewMode);\n },\n [setCurrentViewMode],\n );\n const handleShowHiddenRowsChange = React.useCallback(\n (nextShowHiddenRows: boolean) => {\n setCurrentShowHiddenRows(nextShowHiddenRows);\n },\n [setCurrentShowHiddenRows],\n );\n const handleDensityChange = React.useCallback(\n (nextDensity: DataTableDensity) => {\n setCurrentDensity(nextDensity);\n },\n [setCurrentDensity],\n );\n const resetPageIndexForFilterChange = React.useCallback(() => {\n onPageIndexChange?.(0);\n if (pageIndex === undefined) {\n setLocalPagination((current) =>\n current.pageIndex === 0 ? current : { ...current, pageIndex: 0 },\n );\n }\n }, [onPageIndexChange, pageIndex]);\n const filterResetSignature = React.useMemo(\n () =>\n JSON.stringify({\n globalFilterValue,\n columnFilters: currentColumnFilters,\n }),\n [currentColumnFilters, globalFilterValue],\n );\n const lastFilterResetSignatureRef = React.useRef(filterResetSignature);\n\n React.useEffect(() => {\n if (manualFiltering) {\n lastFilterResetSignatureRef.current = filterResetSignature;\n return;\n }\n\n if (lastFilterResetSignatureRef.current === filterResetSignature) {\n return;\n }\n\n lastFilterResetSignatureRef.current = filterResetSignature;\n resetPageIndexForFilterChange();\n }, [filterResetSignature, manualFiltering, resetPageIndexForFilterChange]);\n\n usePersistDataTableColumnPrefs({\n persistence: persistenceConfig,\n prefs: {\n visibility: columnVisibility ? undefined : currentColumnVisibility,\n sizing:\n columnSizing === undefined ? currentColumnSizing : undefined,\n order: columnOrder ? undefined : currentColumnOrder,\n pinning: columnPinning ? undefined : currentColumnPinning,\n density: density ? undefined : currentDensity,\n },\n });\n const responsiveColumnVisibility = React.useMemo(() => {\n return getDataTableLeafColumns(columns).reduce(\n (visibility, { column, index }) => {\n const columnId = getColumnId(column, index);\n if (isHiddenAtContainerWidth(column.meta?.hideOn, containerWidth)) {\n visibility[columnId] = false;\n }\n return visibility;\n },\n {},\n );\n }, [columns, containerWidth]);\n const effectiveColumnVisibility = React.useMemo(() => {\n return {\n ...currentColumnVisibility,\n ...responsiveColumnVisibility,\n };\n }, [currentColumnVisibility, responsiveColumnVisibility]);\n const visibleData = React.useMemo(\n () =>\n data.filter((row) =>\n isRowVisible(row, hiddenRows, currentShowHiddenRows),\n ),\n [currentShowHiddenRows, data, hiddenRows],\n );\n const shouldRenderInitialLoading = isLoading && visibleData.length === 0;\n const loadingRows = React.useMemo(\n () => createDataTableLoadingRows(resolvedLoadingRowCount),\n [resolvedLoadingRowCount],\n );\n const tableData = shouldRenderInitialLoading\n ? loadingRows\n : visibleData;\n const tableGetRowId = React.useCallback(\n (row: TData, index: number) => {\n if (isDataTableLoadingRow(row)) {\n return getDataTableLoadingRowId(index);\n }\n\n return getRowId(row, index);\n },\n [getRowId],\n );\n const shouldResolveSelectedRows =\n enableRowSelection ||\n (selectionActions?.length ?? 0) > 0 ||\n Object.values(currentRowSelection).some(Boolean);\n const rowById = React.useMemo(() => {\n if (!shouldResolveSelectedRows) {\n return new Map();\n }\n\n return new Map(\n visibleData.map((row, index) => [getRowId(row, index), row]),\n );\n }, [getRowId, shouldResolveSelectedRows, visibleData]);\n const selectedRows = React.useMemo(() => {\n if (!shouldResolveSelectedRows) {\n return [];\n }\n\n return Object.entries(currentRowSelection)\n .filter(([, selected]) => selected)\n .map(([rowId]) => rowById.get(rowId))\n .filter((row): row is TData => Boolean(row));\n }, [currentRowSelection, rowById, shouldResolveSelectedRows]);\n\n return {\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n effectiveColumnVisibility,\n globalFilterValue,\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n localSearchValue,\n resolvedLoadingRowCount,\n resolvedToolbarQueryPlaceholder,\n selectedRows,\n setCurrentColumnFilters,\n setCurrentColumnOrder,\n setCurrentColumnPinning,\n setCurrentColumnVisibility,\n setCurrentExpanded,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing: setCurrentColumnSizing,\n setLocalPagination,\n setLocalSearchValue,\n shouldRenderInitialLoading,\n tableData,\n tableGetRowId,\n /**\n * @deprecated Read the filtered TanStack row model from the table\n * instance. This alias remains for advanced 4.x callers.\n */\n toolbarFilteredData: visibleData,\n visibleData,\n };\n}\n","import * as React from \"react\";\nimport type { Column, ColumnSizingState } from \"@tanstack/react-table\";\nimport type { DataTableColumnDef } from \"../types\";\nimport type { DataTableUiClassNames } from \"../ui-kit\";\nimport {\n UTILITY_COLUMN_SIZE,\n getColumnId,\n getConfiguredColumnMinWidth,\n getDataTableLeafColumns,\n getFixedSide,\n getPinnedColumnClassName,\n isUtilityColumnId,\n} from \"./data-table-utils\";\n\ntype ColumnLayoutMode = \"fill\" | \"fit\";\n\nexport type DataTableColumnLayout = {\n cellStyle: React.CSSProperties | undefined;\n colStyle: React.CSSProperties | undefined;\n fixedSide: \"left\" | \"right\" | false | undefined;\n headerStyle: React.CSSProperties | undefined;\n isActionsColumn: boolean;\n isExpansionColumn: boolean;\n isSelectionColumn: boolean;\n isSpacerColumn: boolean;\n isUtilityColumn: boolean;\n pinnedClassName: string | undefined;\n utilityClassName: string | undefined;\n};\n\nconst EMPTY_COLUMN_LAYOUT: DataTableColumnLayout = {\n cellStyle: undefined,\n colStyle: undefined,\n fixedSide: undefined,\n headerStyle: undefined,\n isActionsColumn: false,\n isExpansionColumn: false,\n isSelectionColumn: false,\n isSpacerColumn: false,\n isUtilityColumn: false,\n pinnedClassName: undefined,\n utilityClassName: undefined,\n};\n\nexport function useColumnLayout({\n columns,\n columnSizing,\n editableRows,\n enableRowSelection,\n hasRowActions,\n hasRowExpansion,\n layoutMode,\n uiClassNames,\n visibleLeafColumns,\n}: {\n columns: Array>;\n columnSizing: ColumnSizingState;\n editableRows: boolean;\n enableRowSelection: boolean;\n hasRowActions: boolean;\n hasRowExpansion: boolean;\n layoutMode: ColumnLayoutMode;\n uiClassNames: DataTableUiClassNames;\n visibleLeafColumns: Array>;\n}) {\n const explicitlySizedColumnIds = React.useMemo(() => {\n const ids = new Set();\n\n for (const { column, index } of getDataTableLeafColumns(columns)) {\n if (Object.prototype.hasOwnProperty.call(column, \"size\")) {\n ids.add(getColumnId(column, index));\n }\n }\n\n if (enableRowSelection) {\n ids.add(\"__select__\");\n }\n\n if (hasRowExpansion) {\n ids.add(\"__expand__\");\n }\n\n if (hasRowActions || editableRows) {\n ids.add(\"__actions__\");\n }\n\n return ids;\n }, [\n columns,\n editableRows,\n enableRowSelection,\n hasRowActions,\n hasRowExpansion,\n ]);\n\n const minimumColumnWidths = React.useMemo(() => {\n const widths = new Map();\n\n for (const { column, index } of getDataTableLeafColumns(columns)) {\n const configuredMinWidth = getConfiguredColumnMinWidth(column);\n\n if (configuredMinWidth !== undefined) {\n widths.set(getColumnId(column, index), configuredMinWidth);\n }\n }\n\n return widths;\n }, [columns]);\n\n const pinnedColumns = React.useMemo(() => {\n const left = new Map();\n const right = new Map();\n\n let leftOffset = 0;\n for (const column of visibleLeafColumns) {\n if (getFixedSide(column) === \"left\") {\n left.set(column.id, leftOffset);\n leftOffset += getColumnLayoutSize(column);\n }\n }\n\n let rightOffset = 0;\n for (const column of [...visibleLeafColumns].reverse()) {\n if (getFixedSide(column) === \"right\") {\n right.set(column.id, rightOffset);\n rightOffset += getColumnLayoutSize(column);\n }\n }\n\n return { left, right };\n }, [visibleLeafColumns]);\n\n const fillColumnId = React.useMemo(() => {\n if (layoutMode !== \"fill\") {\n return undefined;\n }\n\n const dataColumns = visibleLeafColumns.filter(\n (column) => !isUtilityColumnId(column.id),\n );\n\n if (!dataColumns.length) {\n return undefined;\n }\n\n const allDataColumnsAreFixed = dataColumns.every(\n (column) =>\n explicitlySizedColumnIds.has(column.id) ||\n Object.prototype.hasOwnProperty.call(columnSizing, column.id),\n );\n\n return allDataColumnsAreFixed\n ? dataColumns[dataColumns.length - 1]?.id\n : undefined;\n }, [\n columnSizing,\n explicitlySizedColumnIds,\n layoutMode,\n visibleLeafColumns,\n ]);\n\n const fixedWidthColumnIds = React.useMemo(() => {\n const ids = new Set([\n ...explicitlySizedColumnIds,\n ...Object.keys(columnSizing),\n ]);\n\n if (fillColumnId) {\n ids.delete(fillColumnId);\n }\n\n return ids;\n }, [columnSizing, explicitlySizedColumnIds, fillColumnId]);\n\n const columnLayouts = React.useMemo(() => {\n const layouts = new Map();\n\n for (const column of visibleLeafColumns) {\n const isSelectionColumn = column.id === \"__select__\";\n const isExpansionColumn = column.id === \"__expand__\";\n const isActionsColumn = column.id === \"__actions__\";\n const isUtilityColumn =\n isSelectionColumn || isExpansionColumn || isActionsColumn;\n const isSpacerColumn = column.id === \"__spacer__\";\n const configuredMinWidth = minimumColumnWidths.get(column.id);\n const isFlexibleFillColumn = column.id === fillColumnId;\n const columnMinWidth =\n configuredMinWidth ??\n (isFlexibleFillColumn ? column.getSize() : undefined);\n const shouldFixWidth =\n !isSpacerColumn &&\n (layoutMode === \"fit\" ||\n isUtilityColumn ||\n fixedWidthColumnIds.has(column.id));\n const baseStyle =\n shouldFixWidth || columnMinWidth !== undefined\n ? {\n width: shouldFixWidth\n ? isUtilityColumn\n ? UTILITY_COLUMN_SIZE\n : column.getSize()\n : undefined,\n minWidth: isUtilityColumn\n ? UTILITY_COLUMN_SIZE\n : shouldFixWidth\n ? column.getSize()\n : columnMinWidth,\n maxWidth: shouldFixWidth\n ? isUtilityColumn\n ? UTILITY_COLUMN_SIZE\n : column.getSize()\n : undefined,\n }\n : undefined;\n const fixedSide = getFixedSide(column);\n const pinnedStyle = fixedSide\n ? {\n insetInlineStart:\n fixedSide === \"left\" ? pinnedColumns.left.get(column.id) : undefined,\n insetInlineEnd:\n fixedSide === \"right\"\n ? pinnedColumns.right.get(column.id)\n : undefined,\n }\n : undefined;\n const cellStyle =\n baseStyle || pinnedStyle ? { ...baseStyle, ...pinnedStyle } : undefined;\n\n layouts.set(column.id, {\n cellStyle,\n colStyle: baseStyle,\n fixedSide,\n headerStyle: cellStyle,\n isActionsColumn,\n isExpansionColumn,\n isSelectionColumn,\n isSpacerColumn,\n isUtilityColumn,\n pinnedClassName: fixedSide\n ? getPinnedColumnClassName(fixedSide, uiClassNames, {\n isUtilityColumn,\n })\n : undefined,\n utilityClassName: isUtilityColumn\n ? \"w-[50px] max-w-[50px] min-w-[50px] px-0\"\n : undefined,\n });\n }\n\n return layouts;\n }, [\n fillColumnId,\n fixedWidthColumnIds,\n layoutMode,\n minimumColumnWidths,\n pinnedColumns,\n uiClassNames,\n visibleLeafColumns,\n ]);\n\n const fillMinWidth = React.useMemo(() => {\n return visibleLeafColumns.reduce((total, column) => {\n const layout = columnLayouts.get(column.id);\n const configuredMinWidth = minimumColumnWidths.get(column.id);\n const isFlexibleFillColumn = column.id === fillColumnId;\n\n if (layout?.isUtilityColumn) {\n return total + UTILITY_COLUMN_SIZE;\n }\n\n if (fixedWidthColumnIds.has(column.id)) {\n return total + column.getSize();\n }\n\n return (\n total +\n (configuredMinWidth ?? (isFlexibleFillColumn ? column.getSize() : 0))\n );\n }, 0);\n }, [\n columnLayouts,\n fillColumnId,\n fixedWidthColumnIds,\n minimumColumnWidths,\n visibleLeafColumns,\n ]);\n\n const getColumnLayout = React.useCallback(\n (columnId: string) => columnLayouts.get(columnId) ?? EMPTY_COLUMN_LAYOUT,\n [columnLayouts],\n );\n\n return {\n columnLayouts,\n explicitlySizedColumnIds,\n fillMinWidth,\n getColumnLayout,\n };\n}\n\nfunction getColumnLayoutSize(column: Column) {\n return isUtilityColumnId(column.id) ? UTILITY_COLUMN_SIZE : column.getSize();\n}\n","import * as React from \"react\";\nimport type { Row } from \"@tanstack/react-table\";\nimport type {\n DataTableCardRendererProps,\n DataTableCardSizing,\n DataTableEditableRowsConfig,\n DataTableExpandedRowProps,\n DataTableLabels,\n DataTableRowAction,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\ntype DataTableCardViewProps = {\n rows: Array>;\n cardRenderer: (props: DataTableCardRendererProps) => React.ReactNode;\n cardSizing?: DataTableCardSizing;\n cardGridClassName?: string;\n cardClassName?: string;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n renderExpandedRow?: (\n props: DataTableExpandedRowProps,\n ) => React.ReactNode;\n hasCardTitle: boolean;\n rowSelection: Record;\n onRowSelectionChange: (rowSelection: Record) => void;\n enableRowSelection: boolean;\n editingRowId: string | null;\n onEditingRowIdChange: (rowId: string | null) => void;\n getRowClassName?: (row: TData) => string | undefined;\n onRowClick?: (context: { row: TData; rowId: string }) => void | Promise;\n getRowDraggable?: (row: TData) => boolean;\n onRowDragStart?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n onRowDragEnd?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n isLoading?: boolean;\n loadingRowCount?: number;\n labels: DataTableLabels;\n};\n\ntype DataTableRowActionsComponent = (props: {\n row: TData;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n onStartEditing: () => void;\n onCancelEditing: () => void;\n labels: DataTableLabels;\n}) => React.ReactElement | null;\n\nexport function createDataTableCardView(\n ui: DataTableUiKit,\n DataTableRowActions: DataTableRowActionsComponent,\n) {\n const uiClassNames = ui.classNames ?? {};\n const { Card, CardContent, CardHeader, Checkbox, Skeleton } = ui;\n\n return function DataTableCardView({\n rows,\n cardRenderer,\n cardSizing = \"fixed\",\n cardGridClassName,\n cardClassName,\n rowActions,\n editableRows,\n renderExpandedRow,\n hasCardTitle,\n rowSelection,\n onRowSelectionChange,\n enableRowSelection,\n editingRowId,\n onEditingRowIdChange,\n getRowClassName,\n onRowClick,\n getRowDraggable,\n onRowDragStart,\n onRowDragEnd,\n isLoading = false,\n loadingRowCount = 5,\n labels,\n }: DataTableCardViewProps) {\n const resolvedCardSizing = cardSizing ?? \"fixed\";\n const resolvedCardGridClassName =\n cardGridClassName\n ? cn(\"grid\", cardGridClassName)\n : getCardGridClassName(resolvedCardSizing);\n const cardGridClasses = cn(\n \"min-h-0 w-full gap-4 p-1\",\n uiClassNames.cardGrid,\n resolvedCardGridClassName,\n );\n const cardItemClasses = (stateClassName?: string) =>\n cn(\n \"relative min-w-0 max-w-full gap-0 overflow-hidden bg-transparent p-0\",\n getCardItemClassName(resolvedCardSizing),\n uiClassNames.cardItem,\n cardClassName,\n stateClassName,\n );\n\n if (isLoading) {\n return (\n \n {Array.from({ length: Math.max(1, loadingRowCount) }, (_, index) => (\n \n {hasCardTitle ? (\n \n \n \n \n ) : null}\n \n \n \n \n \n \n \n ))}\n \n );\n }\n\n return (\n \n {rows.map((row) => {\n const rowId = row.id;\n const originalRow = row.original;\n const isSelected = Boolean(rowSelection[rowId]);\n const isEditing = editingRowId === rowId;\n const hasCardActions = rowActions.length > 0 || Boolean(editableRows);\n const showCardGradient =\n enableRowSelection || hasCardActions || hasCardTitle;\n const showCardOverlayControls = enableRowSelection || hasCardActions;\n const handleCardActivate = () => {\n if (!onRowClick) {\n return;\n }\n\n void onRowClick({ row: originalRow, rowId });\n };\n\n return (\n ) => {\n onRowDragStart?.({ row: originalRow, rowId, event });\n }}\n onDragEnd={(event: React.DragEvent) => {\n onRowDragEnd?.({ row: originalRow, rowId, event });\n }}\n >\n {showCardGradient ? (\n \n ) : null}\n *]:min-w-0\",\n getCardRendererClassName(resolvedCardSizing),\n onRowClick && \"cursor-pointer focus-visible:outline-none\",\n )}\n onClick={(event: React.MouseEvent) => {\n const target = event.target as HTMLElement | null;\n if (target?.closest(\"[data-row-click-ignore='true']\")) {\n return;\n }\n\n handleCardActivate();\n }}\n onKeyDown={(event: React.KeyboardEvent) => {\n const target = event.target as HTMLElement | null;\n if (target?.closest(\"[data-row-click-ignore='true']\")) {\n return;\n }\n\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n handleCardActivate();\n }\n }}\n >\n {cardRenderer({\n row: originalRow,\n rowId,\n isSelected,\n onSelectedChange: (nextValue) => {\n onRowSelectionChange(\n updateRowSelection(rowSelection, rowId, nextValue),\n );\n },\n actions: rowActions,\n isEditing,\n startEditing: () => {\n onEditingRowIdChange(rowId);\n },\n cancelEditing: () => {\n onEditingRowIdChange(null);\n },\n })}\n {isEditing || !renderExpandedRow || !row.getIsExpanded()\n ? null\n : renderExpandedRow({\n row: originalRow,\n rowId,\n tableRow: row,\n })}\n \n {showCardOverlayControls ? (\n \n {enableRowSelection ? (\n \n {\n onRowSelectionChange(\n updateRowSelection(\n rowSelection,\n rowId,\n checked === true,\n ),\n );\n }}\n />\n \n ) : null}\n
\n {hasCardActions ? (\n \n {\n onEditingRowIdChange(rowId);\n }}\n onCancelEditing={() => {\n onEditingRowIdChange(null);\n }}\n labels={labels}\n />\n
\n ) : null}\n
\n ) : null}\n \n );\n })}\n \n );\n };\n}\n\nfunction getCardGridClassName(cardSizing: DataTableCardSizing) {\n switch (cardSizing) {\n case \"content\":\n return \"flex flex-wrap items-start justify-start\";\n case \"fluid\":\n return \"grid grid-cols-[repeat(auto-fit,minmax(min(18rem,100%),1fr))]\";\n case \"fixed\":\n default:\n return \"grid grid-cols-[repeat(auto-fill,minmax(min(18rem,100%),18rem))] justify-start\";\n }\n}\n\nfunction getCardItemClassName(cardSizing: DataTableCardSizing) {\n switch (cardSizing) {\n case \"content\":\n return \"w-fit\";\n case \"fluid\":\n return \"w-full\";\n case \"fixed\":\n default:\n return undefined;\n }\n}\n\nfunction getCardRendererClassName(cardSizing: DataTableCardSizing) {\n switch (cardSizing) {\n case \"content\":\n return \"w-fit\";\n case \"fluid\":\n return \"w-full flex-1 [&>*]:w-full\";\n case \"fixed\":\n default:\n return \"flex-1\";\n }\n}\n\nfunction updateRowSelection(\n rowSelection: Record,\n rowId: string,\n isSelected: boolean,\n) {\n if (isSelected) {\n return {\n ...rowSelection,\n [rowId]: true,\n };\n }\n\n if (!rowSelection[rowId]) {\n return rowSelection;\n }\n\n const nextSelection = { ...rowSelection };\n delete nextSelection[rowId];\n return nextSelection;\n}\n","import { IconInbox } from \"../icons\";\nimport type { DataTableUiKit } from \"../ui-kit\";\n\nexport function createDataTableEmptyState(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n } = ui;\n\n return function DataTableEmptyState({\n title = \"No rows found\",\n description = \"Adjust your filters or create a new record to populate this table.\",\n }: {\n title?: string;\n description?: string;\n }) {\n return (\n \n \n \n \n \n {title}\n {description}\n \n \n \n );\n };\n}\n","import * as React from \"react\";\nimport { IconDatabase } from \"../icons\";\nimport type { DataTableLabels } from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\ntype DataTablePaginationProps = {\n pageIndex: number;\n pageCount: number;\n pageCountKnown: boolean;\n pageSize: number;\n totalRowCount?: number;\n rowsPerPageOptions: Array;\n onPageIndexChange: (pageIndex: number) => void;\n onPageSizeChange: (pageSize: number) => void;\n labels: DataTableLabels;\n};\n\nexport function createDataTablePagination(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectTrigger,\n SelectValue,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n function DataTablePagination({\n pageIndex,\n pageCount,\n pageCountKnown,\n pageSize,\n totalRowCount,\n rowsPerPageOptions,\n onPageIndexChange,\n onPageSizeChange,\n labels,\n }: DataTablePaginationProps) {\n const pages = pageCountKnown\n ? getVisiblePages(pageIndex, Math.max(1, pageCount))\n : [];\n const canGoPrevious = pageIndex > 0;\n const canGoNext = pageIndex + 1 < pageCount;\n const lastPageIndex = Math.max(0, pageCount - 1);\n\n return (\n
\n \n \n {labels.recordsPerPage}\n \n {\n onPageSizeChange(Number(value));\n }}\n >\n \n \n \n \n \n {rowsPerPageOptions.map((option) => (\n \n {option}\n \n ))}\n \n \n \n
\n\n {totalRowCount !== undefined ? (\n
\n \n \n {totalRowCount}\n \n {labels.totalRecords(totalRowCount)}\n \n
\n \n ) : null}\n\n
\n \n {pageCountKnown\n ? labels.pageStatus(pageIndex, Math.max(1, pageCount))\n : (\n labels.pageStatusUnknown ??\n DATA_TABLE_DEFAULT_LABELS.pageStatusUnknown\n )(pageIndex)}\n
\n \n \n \n \n \n ) => {\n event.preventDefault();\n if (canGoPrevious) {\n onPageIndexChange(0);\n }\n }}\n text={labels.firstPage}\n />\n \n {labels.firstPage}\n \n \n \n \n \n ) => {\n event.preventDefault();\n if (canGoPrevious) {\n onPageIndexChange(pageIndex - 1);\n }\n }}\n text={labels.previousPage}\n />\n \n {labels.previousPage}\n \n \n {pages.map((item, index) => (\n \n {item === \"ellipsis\" ? (\n \n ) : (\n ) => {\n event.preventDefault();\n onPageIndexChange(item - 1);\n }}\n >\n {item}\n \n )}\n \n ))}\n \n \n \n ) => {\n event.preventDefault();\n if (canGoNext) {\n onPageIndexChange(pageIndex + 1);\n }\n }}\n text={labels.nextPage}\n />\n \n {labels.nextPage}\n \n \n {pageCountKnown ? (\n \n \n \n ,\n ) => {\n event.preventDefault();\n if (canGoNext) {\n onPageIndexChange(lastPageIndex);\n }\n }}\n />\n \n {labels.lastPage}\n \n \n ) : null}\n \n \n \n \n );\n }\n\n function DataTableFooter(props: DataTablePaginationProps) {\n return (\n \n \n \n );\n }\n\n return {\n DataTableFooter,\n DataTablePagination,\n };\n}\n\nfunction getVisiblePages(currentPageIndex: number, pageCount: number) {\n const currentPage = currentPageIndex + 1;\n const pages = new Set([1, pageCount]);\n\n for (\n let page = Math.max(1, currentPage - 2);\n page <= Math.min(pageCount, currentPage + 2);\n page += 1\n ) {\n pages.add(page);\n }\n\n const orderedPages = Array.from(pages).sort((left, right) => left - right);\n const items: Array = [];\n\n for (let index = 0; index < orderedPages.length; index += 1) {\n const page = orderedPages[index];\n const previous = orderedPages[index - 1];\n\n if (previous && page - previous > 1) {\n items.push(\"ellipsis\");\n }\n\n items.push(page);\n }\n\n return items;\n}\n","import * as React from \"react\";\nimport { IconDots, IconEdit, IconX } from \"../icons\";\nimport type {\n DataTableEditableRowsConfig,\n DataTableLabels,\n DataTableRowAction,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { canEditRow, canUseRowAction, resolveRowActionLabel } from \"../types\";\n\ntype DataTableRowActionsProps = {\n row: TData;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n onStartEditing: () => void;\n onCancelEditing: () => void;\n labels: DataTableLabels;\n};\n\nexport function createDataTableRowActions(ui: DataTableUiKit) {\n const {\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n return function DataTableRowActions({\n row,\n rowActions,\n editableRows,\n isEditing,\n onStartEditing,\n onCancelEditing,\n labels,\n }: DataTableRowActionsProps) {\n const actions = rowActions.filter((action) => canUseRowAction(action, row));\n const stopRowClickPropagation = React.useCallback(\n (event: React.SyntheticEvent) => {\n event.stopPropagation();\n },\n [],\n );\n\n if (isEditing) {\n return (\n \n \n \n \n {labels.cancelEdit}\n \n \n {labels.cancelEdit}\n \n );\n }\n\n const allowEdit = canEditRow(editableRows, row);\n if (!actions.length && !allowEdit) {\n return null;\n }\n\n return (\n \n \n \n \n \n \n {labels.rowActions}\n \n \n \n {labels.rowActions}\n \n \n {allowEdit ? (\n \n ) => {\n event.stopPropagation();\n onStartEditing();\n }}\n >\n \n {labels.editRow}\n \n \n ) : null}\n {allowEdit && actions.length ? : null}\n {actions.length ? (\n \n {actions.map((action) => {\n const Icon = action.icon;\n return (\n ) => {\n event.stopPropagation();\n void action.onClick(row);\n }}\n >\n {Icon ? : null}\n {resolveRowActionLabel(action.label, row)}\n \n );\n })}\n \n ) : null}\n \n \n );\n };\n}\n","import * as React from \"react\";\nimport {\n IconAdjustmentsHorizontal,\n IconLayoutGrid,\n IconList,\n IconSearch,\n IconX,\n} from \"../icons\";\nimport type {\n DataTableColumnFilterType,\n DataTableColumnFixed,\n DataTableColumnVisibilityOption,\n DataTableDensity,\n DataTableLabels,\n DataTableSelectionAction,\n DataTableToolbarAction,\n DataTableToolbarVisibility,\n DataTableViewMode,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\nexport type DataTableToolbarColumnFilter = {\n id: string;\n label: string;\n type: DataTableColumnFilterType;\n value: unknown;\n placeholder?: string;\n options: Array<{ label: string; value: string }>;\n};\n\ntype DataTableToolbarProps = {\n title?: string;\n description?: string;\n toolbarQueryValue: string;\n toolbarQueryPlaceholder: string;\n onToolbarQueryValueChange: (value: string) => void;\n customToolbar?: React.ReactNode;\n compactToolbar?: React.ReactNode;\n viewMode: DataTableViewMode;\n onViewModeChange?: (viewMode: DataTableViewMode) => void;\n enableViewToggle: boolean;\n toolbarActions: Array>;\n selectionActions: Array>;\n selectedRows: Array;\n showHiddenRows: boolean;\n hiddenRowsLabel?: string;\n onShowHiddenRowsChange?: (showHiddenRows: boolean) => void;\n allRows: Array;\n columnVisibilityOptions: Array;\n onColumnVisibilityChange?: (columnId: string, visible: boolean) => void;\n enableColumnPinning: boolean;\n onColumnPinningChange: (columnId: string, side: DataTableColumnFixed | false) => void;\n columnFilters: Array;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n onClearColumnFilters: () => void;\n density: DataTableDensity;\n onDensityChange: (density: DataTableDensity) => void;\n enableDensityToggle: boolean;\n labels: DataTableLabels;\n toolbarVisibility?: DataTableToolbarVisibility;\n openFileDialog?: () => void;\n};\n\nexport function createDataTableToolbar(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Button,\n ButtonGroup,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n return function DataTableToolbar({\n title,\n description,\n toolbarQueryValue,\n toolbarQueryPlaceholder,\n onToolbarQueryValueChange,\n customToolbar,\n compactToolbar,\n viewMode,\n onViewModeChange,\n enableViewToggle,\n toolbarActions,\n selectionActions,\n selectedRows,\n showHiddenRows,\n hiddenRowsLabel,\n onShowHiddenRowsChange,\n allRows,\n columnVisibilityOptions,\n onColumnVisibilityChange,\n enableColumnPinning,\n onColumnPinningChange,\n columnFilters,\n onColumnFilterChange,\n onClearColumnFilters,\n density,\n onDensityChange,\n enableDensityToggle,\n labels,\n toolbarVisibility,\n openFileDialog,\n }: DataTableToolbarProps) {\n const compactSearchInputRef = React.useRef(null);\n const [isCompactSearchVisible, setIsCompactSearchVisible] =\n React.useState(false);\n const compactToolbarIconButtonClassName =\n uiClassNames.toolbarCompactIconButton ?? \"\";\n const primaryActions = toolbarActions.filter(\n (action) => (action.placement ?? \"primary\") === \"primary\",\n );\n const trailingActions = toolbarActions.filter(\n (action) => action.placement === \"trailing\",\n );\n const showTitle = toolbarVisibility?.title ?? true;\n const showSearch = toolbarVisibility?.search ?? true;\n const showActions = toolbarVisibility?.actions ?? true;\n const showTrailingActions = toolbarVisibility?.trailingActions ?? true;\n const showOptions = toolbarVisibility?.options ?? true;\n const showViewToggle = toolbarVisibility?.viewToggle ?? true;\n const showCustomToolbar = toolbarVisibility?.customToolbar ?? true;\n const hasVisibleTitle = showTitle && Boolean(title || description);\n const hasVisibleSearch = showSearch;\n const hasVisiblePrimaryActions = showActions && primaryActions.length > 0;\n const hasVisibleSelectionActions =\n selectedRows.length > 0 && selectionActions.length > 0;\n const hasVisibleOptions =\n showOptions &&\n (columnVisibilityOptions.some((column) => column.canHide) ||\n Boolean(onShowHiddenRowsChange && hiddenRowsLabel) ||\n enableColumnPinning ||\n enableDensityToggle);\n const hasVisibleViewToggle =\n showViewToggle && enableViewToggle && Boolean(onViewModeChange);\n const hasVisibleTrailingActions =\n showTrailingActions && trailingActions.length > 0;\n const hasVisibleCustomToolbar = showCustomToolbar && Boolean(customToolbar);\n const hasVisibleCompactToolbar =\n showCustomToolbar && Boolean(compactToolbar ?? customToolbar);\n const selectedRowCountLabel = labels.selectedRows(selectedRows.length);\n\n React.useEffect(() => {\n if (!isCompactSearchVisible) {\n return;\n }\n\n compactSearchInputRef.current?.focus();\n }, [isCompactSearchVisible]);\n\n if (\n !hasVisibleTitle &&\n !hasVisibleSearch &&\n !hasVisiblePrimaryActions &&\n !hasVisibleSelectionActions &&\n !hasVisibleOptions &&\n !hasVisibleViewToggle &&\n !hasVisibleTrailingActions &&\n !hasVisibleCustomToolbar &&\n !hasVisibleCompactToolbar\n ) {\n return null;\n }\n\n return (\n
\n {showTitle && (title || description) ? (\n
\n {title ? (\n

{title}

\n ) : null}\n {description ? (\n \n {description}\n

\n ) : null}\n
\n ) : null}\n\n
\n \n {showSearch ? (\n <>\n
\n \n ) => {\n onToolbarQueryValueChange(event.target.value);\n }}\n placeholder={toolbarQueryPlaceholder}\n />\n \n \n \n {toolbarQueryValue ? (\n \n {\n onToolbarQueryValueChange(\"\");\n }}\n aria-label={labels.clearSearch}\n title={labels.clearSearch}\n >\n \n \n \n ) : null}\n \n
\n \n \n {\n setIsCompactSearchVisible((current) => !current);\n }}\n >\n \n {labels.searchTable}\n \n \n {labels.searchTable}\n \n \n ) : null}\n\n {showActions ? (\n
\n {primaryActions.map((action) => {\n const collapsesToIcon =\n !action.iconOnly && Boolean(action.icon);\n const button = (\n {\n void action.onClick({\n rows: allRows,\n openFileDialog,\n });\n }}\n disabled={action.disabled}\n aria-label={action.label}\n title={action.iconOnly ? undefined : action.label}\n >\n {action.icon ? : null}\n {action.iconOnly ? (\n {action.label}\n ) : collapsesToIcon ? (\n \n {action.label}\n \n ) : (\n {action.label}\n )}\n \n );\n\n return action.iconOnly ? (\n \n {button}\n {action.label}\n \n ) : (\n button\n );\n })}\n
\n ) : null}\n\n {hasVisibleCompactToolbar ? (\n \n {compactToolbar ?? customToolbar}\n
\n ) : null}\n\n
\n\n \n {selectedRows.length ? (\n \n {selectedRowCountLabel}\n
\n ) : null}\n {selectedRows.length\n ? selectionActions.map((action) => {\n const Icon = action.icon;\n const disabled =\n typeof action.disabled === \"function\"\n ? action.disabled(selectedRows)\n : action.disabled;\n\n return (\n \n \n {\n void action.onClick({ rows: selectedRows });\n }}\n aria-label={action.label}\n >\n {Icon ? : null}\n {action.label}\n \n \n {action.label}\n \n );\n })\n : null}\n\n {hasVisibleOptions ? (\n \n \n \n \n {labels.tableOptions}\n \n \n \n {labels.tableOptions}\n \n {onShowHiddenRowsChange && hiddenRowsLabel ? (\n {\n onShowHiddenRowsChange(checked === true);\n }}\n >\n {labels.showHiddenRows(hiddenRowsLabel)}\n \n ) : null}\n \n {enableDensityToggle ? (\n <>\n \n {labels.density}\n \n {(\n [\n [\"compact\", labels.compactDensity],\n [\"comfortable\", labels.comfortableDensity],\n [\"spacious\", labels.spaciousDensity],\n ] as const\n ).map(([nextDensity, label]) => (\n {\n onDensityChange(nextDensity);\n }}\n >\n {label}\n \n ))}\n \n \n ) : null}\n {columnVisibilityOptions.some((column) => column.canHide) ? (\n <>\n \n {labels.columns}\n \n {columnVisibilityOptions\n .filter((column) => column.canHide)\n .map((column) => (\n {\n onColumnVisibilityChange?.(\n column.id,\n checked === true,\n );\n }}\n >\n {column.label}\n \n ))}\n \n \n ) : null}\n {enableColumnPinning ? (\n <>\n \n \n {labels.pinLeft} / {labels.pinRight}\n \n \n {columnVisibilityOptions.map((column) => (\n {\n event.preventDefault();\n }}\n >\n \n {column.label}\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, \"left\");\n }}\n >\n L\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, \"right\");\n }}\n >\n R\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, false);\n }}\n >\n -\n \n \n ))}\n \n \n ) : null}\n \n \n ) : null}\n\n {showViewToggle && enableViewToggle && onViewModeChange ? (\n \n \n \n {\n onViewModeChange(\"table\");\n }}\n >\n \n \n {labels.switchToTableView ??\n DATA_TABLE_DEFAULT_LABELS.switchToTableView}\n \n \n \n \n {labels.tableView ??\n DATA_TABLE_DEFAULT_LABELS.tableView}\n \n \n \n \n {\n onViewModeChange(\"card\");\n }}\n >\n \n \n {labels.switchToCardView ??\n DATA_TABLE_DEFAULT_LABELS.switchToCardView}\n \n \n \n \n {labels.cardView ??\n DATA_TABLE_DEFAULT_LABELS.cardView}\n \n \n \n ) : null}\n\n {showTrailingActions\n ? trailingActions.map((action) => {\n const collapsesToIcon =\n !action.iconOnly && Boolean(action.icon);\n const button = (\n {\n void action.onClick({\n rows: allRows,\n openFileDialog,\n });\n }}\n disabled={action.disabled}\n aria-label={action.label}\n title={action.iconOnly ? undefined : action.label}\n className={`size-7 shrink-0 ${action.iconOnly ? \"\" : `${collapsesToIcon ? \"px-0 @md/data-table:px-2.5\" : \"\"} @md/data-table:h-8 @md/data-table:w-fit`} ${action.iconOnly || collapsesToIcon ? compactToolbarIconButtonClassName : \"\"} ${uiClassNames.toolbarInputButton ?? \"\"}`}\n >\n {action.icon ? (\n \n ) : null}\n {action.iconOnly ? (\n {action.label}\n ) : collapsesToIcon ? (\n \n {action.label}\n \n ) : (\n {action.label}\n )}\n \n );\n\n return action.iconOnly ? (\n \n {button}\n {action.label}\n \n ) : (\n button\n );\n })\n : null}\n
\n \n\n {showSearch && isCompactSearchVisible ? (\n \n \n ) => {\n onToolbarQueryValueChange(event.target.value);\n }}\n placeholder={toolbarQueryPlaceholder}\n />\n \n \n \n {toolbarQueryValue ? (\n \n {\n onToolbarQueryValueChange(\"\");\n }}\n aria-label={labels.clearSearch}\n title={labels.clearSearch}\n >\n \n \n \n ) : null}\n \n \n ) : null}\n\n {columnFilters.length ? (\n \n {columnFilters.map((filter) => (\n \n ))}\n {columnFilters.some((filter) =>\n hasColumnFilterValue(filter.value),\n ) ? (\n \n {labels.clearFilters}\n \n ) : null}\n \n ) : null}\n\n \n\n {showCustomToolbar && customToolbar ? (\n \n {customToolbar}\n \n ) : null}\n \n );\n };\n\n function ToolbarColumnFilterControl({\n filter,\n labels,\n onColumnFilterChange,\n }: {\n filter: DataTableToolbarColumnFilter;\n labels: DataTableLabels;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n }) {\n if (filter.type === \"text\") {\n return (\n \n ) => {\n onColumnFilterChange(filter.id, event.target.value);\n }}\n placeholder={filter.placeholder ?? filter.label}\n aria-label={`${labels.filters}: ${filter.label}`}\n />\n \n \n \n \n );\n }\n\n const selectedValues = Array.isArray(filter.value)\n ? filter.value.map(String)\n : typeof filter.value === \"string\" && filter.value\n ? [filter.value]\n : [];\n const selectedLabel =\n selectedValues.length === 0\n ? filter.label\n : `${filter.label}: ${\n selectedValues.length === 1\n ? (filter.options.find(\n (option) => option.value === selectedValues[0],\n )?.label ?? selectedValues[0])\n : selectedValues.length\n }`;\n\n return (\n \n \n \n \n \n {filter.label}\n \n {filter.type === \"select\" ? (\n {\n onColumnFilterChange(filter.id, \"\");\n }}\n >\n {labels.allFilterOptions ??\n DATA_TABLE_DEFAULT_LABELS.allFilterOptions}\n \n ) : null}\n {filter.options.map((option) => (\n {\n if (filter.type === \"select\") {\n onColumnFilterChange(\n filter.id,\n checked === true ? option.value : \"\",\n );\n return;\n }\n\n const nextValues = new Set(selectedValues);\n if (checked === true) {\n nextValues.add(option.value);\n } else {\n nextValues.delete(option.value);\n }\n onColumnFilterChange(filter.id, Array.from(nextValues));\n }}\n >\n {option.label}\n \n ))}\n \n \n \n );\n }\n}\n\nfunction hasColumnFilterValue(value: unknown) {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n\n return value !== undefined && value !== null && value !== \"\";\n}\n","import * as React from \"react\";\nimport { DataTableTablePanel } from \"./data-table-table-panel\";\nimport type { DataTableTablePanelProps } from \"./data-table-table-panel\";\n\nconst LazyDataTableVirtualTablePanel = React.lazy(async () => {\n const module = await import(\"./data-table-virtual-table-panel\");\n return { default: module.DataTableVirtualTablePanel };\n}) as unknown as typeof DataTableTablePanel;\n\nexport function DataTableTablePanelRouter(\n props: DataTableTablePanelProps,\n) {\n const config =\n typeof props.virtualization === \"object\"\n ? props.virtualization\n : undefined;\n const enabled =\n props.virtualization === true || config?.enabled === true;\n\n if (!enabled) {\n return ;\n }\n\n return (\n }>\n \n \n );\n}\n","import type {\n DataTableSavedView,\n DataTableSavedViewSlice,\n DataTableSavedViewsChangeOperation,\n DataTableSavedViewsConfig,\n DataTableSavedViewsPayload,\n DataTableState,\n} from \"../types\";\n\nconst STORAGE_PREFIX = \"data-table-pro:saved-views:\";\nconst DEFAULT_VERSION = 1;\nconst DEFAULT_SLICES: Array = [\n \"sorting\",\n \"columnVisibility\",\n \"columnFilters\",\n \"columnOrder\",\n \"columnPinning\",\n \"columnSizing\",\n \"density\",\n \"viewMode\",\n \"showHiddenRows\",\n \"globalFilter\",\n];\nlet fallbackId = 0;\n\nexport function readDataTableSavedViews(\n config: DataTableSavedViewsConfig | undefined,\n): Array {\n const storage = resolveStorage(config);\n if (!config || !storage) {\n return [];\n }\n\n let serialized: string | null;\n try {\n serialized = storage.getItem(getStorageKey(config.key));\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return [];\n }\n if (!serialized) {\n return [];\n }\n\n let parsed: unknown;\n try {\n parsed = (config.deserialize ?? JSON.parse)(serialized);\n } catch (error) {\n config.onError?.({ error, operation: \"deserialize\" });\n return [];\n }\n\n if (!isRecord(parsed) || !(\"version\" in parsed) || !(\"views\" in parsed)) {\n return [];\n }\n\n const targetVersion = config.version ?? DEFAULT_VERSION;\n let candidate: unknown = parsed.views;\n if (parsed.version !== targetVersion) {\n if (!config.migrate) {\n return [];\n }\n try {\n candidate = config.migrate(\n { version: parsed.version, views: parsed.views },\n targetVersion,\n );\n } catch (error) {\n config.onError?.({ error, operation: \"migrate\" });\n return [];\n }\n }\n\n if (!Array.isArray(candidate)) {\n return [];\n }\n\n return candidate\n .map((view) => validateSavedView(view, config.slices))\n .filter((view): view is DataTableSavedView => Boolean(view));\n}\n\nexport function createDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n name: string,\n state: DataTableState,\n) {\n const normalizedName = name.trim();\n if (!config || !normalizedName) {\n return undefined;\n }\n\n const now = new Date().toISOString();\n const view: DataTableSavedView = {\n id: createSavedViewId(),\n name: normalizedName,\n createdAt: now,\n updatedAt: now,\n state: selectSavedViewSlices(state, config.slices),\n };\n const views = [...readDataTableSavedViews(config), view];\n return writeViews(config, views, \"create\") ? cloneSavedView(view) : undefined;\n}\n\nexport function renameDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n id: string,\n name: string,\n) {\n const normalizedName = name.trim();\n if (!config || !normalizedName) {\n return undefined;\n }\n\n let renamed: DataTableSavedView | undefined;\n const views = readDataTableSavedViews(config).map((view) => {\n if (view.id !== id) {\n return view;\n }\n renamed = {\n ...view,\n name: normalizedName,\n updatedAt: new Date().toISOString(),\n };\n return renamed;\n });\n if (!renamed) {\n return undefined;\n }\n\n return writeViews(config, views, \"rename\")\n ? cloneSavedView(renamed)\n : undefined;\n}\n\nexport function deleteDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n id: string,\n) {\n if (!config) {\n return false;\n }\n\n const current = readDataTableSavedViews(config);\n const views = current.filter((view) => view.id !== id);\n return views.length !== current.length && writeViews(config, views, \"delete\");\n}\n\nexport function clearDataTableSavedViews(\n config: DataTableSavedViewsConfig | undefined,\n) {\n const storage = resolveStorage(config);\n if (!config || !storage) {\n return false;\n }\n\n try {\n storage.removeItem(getStorageKey(config.key));\n } catch (error) {\n config.onError?.({ error, operation: \"remove\" });\n return false;\n }\n config.onChange?.([], \"clear\");\n return true;\n}\n\nfunction writeViews(\n config: DataTableSavedViewsConfig,\n views: Array,\n operation: DataTableSavedViewsChangeOperation,\n) {\n const storage = resolveStorage(config);\n if (!storage) {\n return false;\n }\n\n let serialized: string;\n try {\n const payload: DataTableSavedViewsPayload = {\n version: config.version ?? DEFAULT_VERSION,\n views,\n };\n serialized = (config.serialize ?? JSON.stringify)(payload);\n } catch (error) {\n config.onError?.({ error, operation: \"serialize\" });\n return false;\n }\n\n try {\n storage.setItem(getStorageKey(config.key), serialized);\n } catch (error) {\n config.onError?.({ error, operation: \"write\" });\n return false;\n }\n const snapshots = views.map(cloneSavedView);\n config.onChange?.(snapshots, operation);\n return true;\n}\n\nfunction selectSavedViewSlices(\n state: DataTableState,\n slices: Array | undefined,\n) {\n const selected = new Set(slices ?? DEFAULT_SLICES);\n const snapshot: Partial = {};\n for (const slice of Object.keys(state) as Array) {\n if (selected.has(slice)) {\n Object.assign(snapshot, {\n [slice]: cloneStateSlice(slice, state[slice]),\n });\n }\n }\n return snapshot;\n}\n\nfunction validateSavedView(\n value: unknown,\n slices: Array | undefined,\n): DataTableSavedView | undefined {\n if (\n !isRecord(value) ||\n typeof value.id !== \"string\" ||\n !value.id ||\n typeof value.name !== \"string\" ||\n !value.name.trim() ||\n typeof value.createdAt !== \"string\" ||\n typeof value.updatedAt !== \"string\"\n ) {\n return undefined;\n }\n\n return {\n id: value.id,\n name: value.name.trim(),\n createdAt: value.createdAt,\n updatedAt: value.updatedAt,\n state: validateState(value.state, slices),\n };\n}\n\nfunction validateState(\n value: unknown,\n slices: Array | undefined,\n) {\n if (!isRecord(value)) {\n return {};\n }\n\n const selected = new Set(slices ?? DEFAULT_SLICES);\n const state: Partial = {};\n const sorting = validateSorting(value.sorting);\n if (selected.has(\"sorting\") && sorting) state.sorting = sorting;\n const pagination = validatePagination(value.pagination);\n if (selected.has(\"pagination\") && pagination) state.pagination = pagination;\n const rowSelection = validateBooleanRecord(value.rowSelection);\n if (selected.has(\"rowSelection\") && rowSelection) {\n state.rowSelection = rowSelection;\n }\n const visibility = validateBooleanRecord(value.columnVisibility);\n if (selected.has(\"columnVisibility\") && visibility) {\n state.columnVisibility = visibility;\n }\n const filters = validateFilters(value.columnFilters);\n if (selected.has(\"columnFilters\") && filters) state.columnFilters = filters;\n const expanded =\n value.expanded === true\n ? true\n : validateBooleanRecord(value.expanded);\n if (selected.has(\"expanded\") && expanded !== undefined) {\n state.expanded = expanded;\n }\n const order = validateStringArray(value.columnOrder);\n if (selected.has(\"columnOrder\") && order) state.columnOrder = order;\n const pinning = validatePinning(value.columnPinning);\n if (selected.has(\"columnPinning\") && pinning) {\n state.columnPinning = pinning;\n }\n const sizing = validateSizingRecord(value.columnSizing);\n if (selected.has(\"columnSizing\") && sizing) state.columnSizing = sizing;\n if (\n selected.has(\"density\") &&\n (value.density === \"compact\" ||\n value.density === \"comfortable\" ||\n value.density === \"spacious\")\n ) {\n state.density = value.density;\n }\n if (\n selected.has(\"viewMode\") &&\n (value.viewMode === \"table\" || value.viewMode === \"card\")\n ) {\n state.viewMode = value.viewMode;\n }\n if (selected.has(\"showHiddenRows\") && typeof value.showHiddenRows === \"boolean\") {\n state.showHiddenRows = value.showHiddenRows;\n }\n if (selected.has(\"globalFilter\") && typeof value.globalFilter === \"string\") {\n state.globalFilter = value.globalFilter;\n }\n return state;\n}\n\nfunction cloneSavedView(view: DataTableSavedView): DataTableSavedView {\n return {\n ...view,\n state: validateState(view.state, Object.keys(view.state) as Array),\n };\n}\n\nfunction cloneStateSlice(\n slice: DataTableSavedViewSlice,\n value: unknown,\n) {\n if (Array.isArray(value)) {\n return (value as Array).map((item) =>\n isRecord(item) ? { ...item } : item,\n );\n }\n if (isRecord(value)) {\n if (slice === \"columnPinning\") {\n return {\n left: Array.isArray(value.left)\n ? [...(value.left as Array)]\n : undefined,\n right: Array.isArray(value.right)\n ? [...(value.right as Array)]\n : undefined,\n };\n }\n return { ...value };\n }\n return value;\n}\n\nfunction validateSorting(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value\n .filter(\n (item): item is { id: string; desc?: boolean } =>\n isRecord(item) && typeof item.id === \"string\",\n )\n .map((item) => ({ id: item.id, desc: Boolean(item.desc) }));\n}\n\nfunction validatePagination(value: unknown) {\n if (\n !isRecord(value) ||\n !Number.isInteger(value.pageIndex) ||\n (value.pageIndex as number) < 0 ||\n !Number.isInteger(value.pageSize) ||\n (value.pageSize as number) < 1\n ) {\n return undefined;\n }\n return {\n pageIndex: value.pageIndex as number,\n pageSize: value.pageSize as number,\n };\n}\n\nfunction validateFilters(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value\n .filter(\n (item): item is { id: string; value: unknown } =>\n isRecord(item) &&\n typeof item.id === \"string\" &&\n Object.prototype.hasOwnProperty.call(item, \"value\"),\n )\n .map((item) => ({ id: item.id, value: item.value }));\n}\n\nfunction validatePinning(value: unknown) {\n if (!isRecord(value)) return undefined;\n return {\n left: validateStringArray(value.left) ?? [],\n right: validateStringArray(value.right) ?? [],\n };\n}\n\nfunction validateBooleanRecord(value: unknown) {\n if (!isRecord(value)) return undefined;\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, boolean] => typeof entry[1] === \"boolean\",\n ),\n );\n}\n\nfunction validateSizingRecord(value: unknown) {\n if (!isRecord(value)) return undefined;\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, number] =>\n typeof entry[1] === \"number\" &&\n Number.isFinite(entry[1]) &&\n entry[1] >= 0,\n ),\n );\n}\n\nfunction validateStringArray(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value.filter((item): item is string => typeof item === \"string\");\n}\n\nfunction resolveStorage(config: DataTableSavedViewsConfig | undefined) {\n if (!config) {\n return undefined;\n }\n if (config.storage) {\n return config.storage;\n }\n if (typeof window === \"undefined\") {\n return undefined;\n }\n try {\n return window.localStorage;\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return undefined;\n }\n}\n\nfunction createSavedViewId() {\n if (typeof globalThis.crypto?.randomUUID === \"function\") {\n return globalThis.crypto.randomUUID();\n }\n fallbackId += 1;\n return `view-${Date.now().toString(36)}-${fallbackId.toString(36)}`;\n}\n\nfunction getStorageKey(key: string) {\n return `${STORAGE_PREFIX}${key}`;\n}\n\nfunction isRecord(value: unknown): value is Record {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n","import * as React from \"react\";\nimport { IconDownload } from \"../icons\";\nimport type {\n ColumnFiltersState,\n ColumnPinningState,\n OnChangeFn,\n Table as TanStackTable,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableColumnFixed,\n DataTableLabels,\n DataTableProps,\n} from \"../types\";\nimport {\n exportDataTableCsv,\n getAccessorKey,\n getColumnId,\n getDataTableLeafColumns,\n hasFilterValue,\n normalizeColumnFilterOptions,\n startCase,\n} from \"./data-table-utils\";\n\nexport function useDataTableToolbarFeatures({\n columns,\n currentColumnFilters,\n currentColumnPinning,\n effectiveColumnVisibility,\n enableColumnFilters,\n handleColumnFiltersChange,\n handleColumnPinningChange,\n labels,\n table,\n toolbarActions,\n visibleData,\n csvExport,\n}: {\n columns: DataTableProps[\"columns\"];\n currentColumnFilters: ColumnFiltersState;\n currentColumnPinning: ColumnPinningState;\n effectiveColumnVisibility: VisibilityState;\n enableColumnFilters: boolean | undefined;\n handleColumnFiltersChange: OnChangeFn;\n handleColumnPinningChange: OnChangeFn;\n labels: DataTableLabels;\n table: TanStackTable;\n toolbarActions: DataTableProps[\"toolbarActions\"];\n visibleData: Array;\n csvExport: DataTableProps[\"csvExport\"];\n}) {\n const columnVisibilityOptions = React.useMemo(() => {\n return getDataTableLeafColumns(columns).map(({ column, index }) => {\n const id = getColumnId(column, index);\n const header = column.header;\n const accessorKey = getAccessorKey(column);\n const label =\n typeof header === \"string\"\n ? header\n : accessorKey\n ? startCase(accessorKey)\n : startCase(id);\n\n const pinned: false | DataTableColumnFixed =\n currentColumnPinning.left?.includes(id) === true\n ? \"left\"\n : currentColumnPinning.right?.includes(id) === true\n ? \"right\"\n : false;\n\n return {\n id,\n label,\n visible: effectiveColumnVisibility[id] !== false,\n canHide: column.enableHiding !== false,\n pinned,\n };\n });\n }, [columns, currentColumnPinning, effectiveColumnVisibility]);\n\n const toolbarColumnFilters = React.useMemo(() => {\n if (enableColumnFilters === false) {\n return [];\n }\n\n return getDataTableLeafColumns(columns).flatMap(({ column, index }) => {\n const filter = column.meta?.filter;\n if (!filter) {\n return [];\n }\n\n const id = getColumnId(column, index);\n const header = column.header;\n const accessorKey = getAccessorKey(column);\n const label =\n filter.label ??\n (typeof header === \"string\"\n ? header\n : accessorKey\n ? startCase(accessorKey)\n : startCase(id));\n const state = currentColumnFilters.find((item) => item.id === id);\n const rawOptions =\n typeof filter.options === \"function\"\n ? filter.options({ rows: visibleData })\n : (filter.options ?? []);\n\n return [\n {\n id,\n label,\n type: filter.type,\n value: state?.value,\n placeholder: filter.placeholder,\n options: normalizeColumnFilterOptions(rawOptions),\n },\n ];\n });\n }, [columns, currentColumnFilters, enableColumnFilters, visibleData]);\n\n const handleToolbarColumnFilterChange = React.useCallback(\n (columnId: string, value: unknown) => {\n handleColumnFiltersChange((current) => {\n const next = current.filter((filter) => filter.id !== columnId);\n if (hasFilterValue(value)) {\n next.push({ id: columnId, value });\n }\n return next;\n });\n },\n [handleColumnFiltersChange],\n );\n\n const handleClearColumnFilters = React.useCallback(() => {\n handleColumnFiltersChange([]);\n }, [handleColumnFiltersChange]);\n\n const handleToolbarColumnPinningChange = React.useCallback(\n (columnId: string, side: DataTableColumnFixed | false) => {\n handleColumnPinningChange((current) => {\n const left = (current.left ?? []).filter((id) => id !== columnId);\n const right = (current.right ?? []).filter((id) => id !== columnId);\n\n if (side === \"left\") {\n left.push(columnId);\n }\n if (side === \"right\") {\n right.push(columnId);\n }\n\n return { left, right };\n });\n },\n [handleColumnPinningChange],\n );\n\n const handleCsvExport = React.useCallback(() => {\n if (!csvExport) {\n return;\n }\n\n return exportDataTableCsv({\n csvExport,\n table,\n labels,\n });\n }, [csvExport, labels, table]);\n\n const effectiveToolbarActions = React.useMemo(() => {\n if (!csvExport) {\n return toolbarActions ?? [];\n }\n\n return [\n ...(toolbarActions ?? []),\n {\n key: \"__csv_export__\",\n label: labels.exportCsv,\n icon: IconDownload,\n placement: \"trailing\" as const,\n onClick: handleCsvExport,\n },\n ];\n }, [csvExport, handleCsvExport, labels.exportCsv, toolbarActions]);\n\n return {\n columnVisibilityOptions,\n effectiveToolbarActions,\n handleClearColumnFilters,\n handleToolbarColumnFilterChange,\n handleToolbarColumnPinningChange,\n toolbarColumnFilters,\n };\n}\n","import * as React from \"react\";\nimport { flushSync } from \"react-dom\";\nimport type {\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableActionErrorContext,\n DataTableApi,\n DataTableProps,\n DataTableState,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { createDataTableCardView } from \"./create-data-table-card-view\";\nimport { createDataTableEmptyState } from \"./create-data-table-empty-state\";\nimport { createDataTablePagination } from \"./create-data-table-pagination\";\nimport { createDataTableRowActions } from \"./create-data-table-row-actions\";\nimport { createDataTableToolbar } from \"./create-data-table-toolbar\";\nimport { DataTableCardPanel as DefaultDataTableCardPanel } from \"./data-table-card-panel\";\nimport { DataTableFooterSection } from \"./data-table-footer-section\";\nimport { DataTableTablePanelRouter as DefaultDataTableTablePanel } from \"./data-table-table-panel-router\";\nimport { DataTableToolbarSection } from \"./data-table-toolbar-section\";\nimport {\n clearDataTableSavedViews,\n createDataTableSavedView,\n deleteDataTableSavedView,\n readDataTableSavedViews,\n renameDataTableSavedView,\n} from \"./data-table-saved-views\";\nimport { resolveDataTableLabels } from \"./data-table-labels\";\nimport { useDataTableColumns } from \"./use-data-table-columns\";\nimport { useDataTableInstance } from \"./use-data-table-instance\";\nimport { useDataTableScrollViewport } from \"./use-data-table-scroll-viewport\";\nimport {\n exportDataTableCsv,\n getColumnId,\n getDataTableLeafColumns,\n getInitialColumnPinning,\n} from \"./data-table-utils\";\nimport { useDataTableState } from \"./use-data-table-state\";\nimport { clearDataTableColumnPrefs } from \"./use-data-table-column-prefs\";\nimport { useDataTableToolbarFeatures } from \"./use-data-table-toolbar-features\";\nimport { useColumnLayout } from \"./use-column-layout\";\nimport { useRowEditing } from \"./use-row-editing\";\n\ntype CreateDataTableOptions = {\n CardPanel?: typeof DefaultDataTableCardPanel;\n TablePanel?: typeof DefaultDataTableTablePanel;\n};\n\nexport function createDataTable(ui: DataTableUiKit) {\n return createDataTableWithPanels(ui);\n}\n\nexport function createDataTableWithPanels(\n ui: DataTableUiKit,\n options: CreateDataTableOptions = {},\n) {\n const DataTableCardPanel =\n options.CardPanel ?? DefaultDataTableCardPanel;\n const DataTableTablePanel =\n options.TablePanel ?? DefaultDataTableTablePanel;\n const uiClassNames = ui.classNames ?? {};\n const {\n rootClassName,\n Button,\n Checkbox,\n Input,\n ScrollArea,\n ScrollBar,\n Skeleton,\n Table,\n TableBody,\n TableCell,\n TableFooter = \"tfoot\",\n TableHead,\n TableHeader,\n TableRow,\n Tooltip,\n TooltipContent,\n TooltipProvider = React.Fragment,\n TooltipTrigger,\n } = ui;\n const DataTableEmptyState = createDataTableEmptyState(ui);\n const DataTableRowActions = createDataTableRowActions(ui);\n const { DataTableFooter } = createDataTablePagination(ui);\n const DataTableToolbar = createDataTableToolbar(ui);\n const DataTableCardView = createDataTableCardView(ui, DataTableRowActions);\n const defaultColumn = {\n minSize: 80,\n size: 180,\n maxSize: 720,\n };\n\n return function DataTable({\n columns,\n data,\n getRowId,\n children,\n title,\n description,\n toolbarQueryValue,\n onToolbarQueryValueChange,\n toolbarQueryPlaceholder,\n toolbarQueryDebounceMs,\n manualFiltering = false,\n enableToolbarQueryFiltering = true,\n globalFilterFn,\n columnFilters,\n onColumnFiltersChange,\n enableColumnFilters,\n customToolbar,\n compactToolbar,\n rowsPerPageOptions = [10, 20, 50, 100],\n totalRowCount,\n hasNextPage,\n sorting,\n onSortingChange,\n manualSorting = false,\n pageIndex,\n pageSize,\n onPageIndexChange,\n onPageSizeChange,\n pageCount,\n manualPagination = false,\n rowSelection,\n onRowSelectionChange,\n enableRowSelection = false,\n expanded,\n onExpandedChange,\n getRowCanExpand,\n renderExpandedRow,\n columnOrder,\n onColumnOrderChange,\n enableColumnReordering = false,\n columnPinning,\n onColumnPinningChange,\n enableColumnPinning = false,\n toolbarActions = [],\n selectionActions = [],\n rowActions = [],\n csvExport,\n density,\n onDensityChange,\n enableDensityToggle = false,\n columnPrefsKey,\n persistence,\n savedViews,\n initialState,\n state: unifiedState,\n onStateChange,\n apiRef,\n labels,\n summaryRows = [],\n cardRenderer,\n cardSizing,\n cardGridClassName,\n cardClassName,\n viewMode,\n onViewModeChange,\n enableViewToggle = false,\n emptyState,\n isLoading = false,\n loadingRowCount,\n getRowLoadingState,\n hiddenRows,\n showHiddenRows,\n onShowHiddenRowsChange,\n infiniteScroll,\n editableRows,\n columnVisibility,\n onColumnVisibilityChange,\n columnSizing,\n onColumnSizingChange,\n enableColumnResizing = false,\n columnResizeMode = \"onChange\",\n layoutMode = \"fill\",\n stickyHeader = true,\n showFooter = true,\n showToolbar = true,\n dir = \"ltr\",\n flexGrow = true,\n toolbarVisibility,\n className,\n tableClassName,\n tableContainerClassName,\n getRowClassName,\n onRowClick,\n onActionError,\n dragAndDrop,\n fileUpload,\n virtualization,\n }: DataTableProps) {\n const containerRef = React.useRef(null);\n const fileInputRef = React.useRef(null);\n const tableScrollContainerRef = React.useRef(null);\n const draggedColumnIdRef = React.useRef(null);\n const tableRef = React.useRef | null>(null);\n const lastSelectedRowIdRef = React.useRef(null);\n const resolvedLabels = React.useMemo(\n () => resolveDataTableLabels(labels),\n [labels],\n );\n const resolvedToolbarQueryValue =\n toolbarQueryValue ?? unifiedState?.globalFilter;\n const resolvedSorting = sorting ?? unifiedState?.sorting;\n const resolvedPageIndex =\n pageIndex ?? unifiedState?.pagination?.pageIndex;\n const resolvedPageSize = pageSize ?? unifiedState?.pagination?.pageSize;\n const resolvedRowSelection =\n rowSelection ?? unifiedState?.rowSelection;\n const resolvedColumnVisibility =\n columnVisibility ?? unifiedState?.columnVisibility;\n const resolvedColumnFilters =\n columnFilters ?? unifiedState?.columnFilters;\n const resolvedExpanded = expanded ?? unifiedState?.expanded;\n const resolvedColumnOrder =\n columnOrder ?? unifiedState?.columnOrder;\n const resolvedColumnPinning =\n columnPinning ?? unifiedState?.columnPinning;\n const resolvedColumnSizing =\n columnSizing ?? unifiedState?.columnSizing;\n const resolvedDensity = density ?? unifiedState?.density;\n const resolvedViewMode = viewMode ?? unifiedState?.viewMode;\n const resolvedShowHiddenRows =\n showHiddenRows ?? unifiedState?.showHiddenRows;\n useDataTableStateConflictWarnings(unifiedState, {\n columnFilters: columnFilters !== undefined,\n columnOrder: columnOrder !== undefined,\n columnPinning: columnPinning !== undefined,\n columnSizing: columnSizing !== undefined,\n columnVisibility: columnVisibility !== undefined,\n density: density !== undefined,\n expanded: expanded !== undefined,\n globalFilter: toolbarQueryValue !== undefined,\n pagination: pageIndex !== undefined || pageSize !== undefined,\n rowSelection: rowSelection !== undefined,\n showHiddenRows: showHiddenRows !== undefined,\n sorting: sorting !== undefined,\n viewMode: viewMode !== undefined,\n });\n const handleToolbarQueryValueChange = useDataTableStateSliceChange(\n \"globalFilter\",\n onToolbarQueryValueChange,\n onStateChange,\n );\n const handleSortingPropChange = useDataTableStateSliceChange(\n \"sorting\",\n onSortingChange,\n onStateChange,\n );\n const handleRowSelectionPropChange = useDataTableStateSliceChange(\n \"rowSelection\",\n onRowSelectionChange,\n onStateChange,\n );\n const handleColumnVisibilityPropChange = useDataTableStateSliceChange(\n \"columnVisibility\",\n onColumnVisibilityChange,\n onStateChange,\n );\n const handleColumnFiltersPropChange = useDataTableStateSliceChange(\n \"columnFilters\",\n onColumnFiltersChange,\n onStateChange,\n );\n const handleExpandedPropChange = useDataTableStateSliceChange(\n \"expanded\",\n onExpandedChange,\n onStateChange,\n );\n const handleColumnOrderPropChange = useDataTableStateSliceChange(\n \"columnOrder\",\n onColumnOrderChange,\n onStateChange,\n );\n const handleColumnPinningPropChange = useDataTableStateSliceChange(\n \"columnPinning\",\n onColumnPinningChange,\n onStateChange,\n );\n const handleColumnSizingPropChange = useDataTableStateSliceChange(\n \"columnSizing\",\n onColumnSizingChange,\n onStateChange,\n );\n const handleDensityPropChange = useDataTableStateSliceChange(\n \"density\",\n onDensityChange,\n onStateChange,\n );\n const handleViewModePropChange = useDataTableStateSliceChange(\n \"viewMode\",\n onViewModeChange,\n onStateChange,\n );\n const handleShowHiddenRowsPropChange = useDataTableStateSliceChange(\n \"showHiddenRows\",\n onShowHiddenRowsChange,\n onStateChange,\n );\n const handlePageIndexPropChange = React.useCallback(\n (nextPageIndex: number) => {\n onPageIndexChange?.(nextPageIndex);\n onStateChange?.((current) => ({\n ...current,\n pagination: {\n pageIndex: nextPageIndex,\n pageSize:\n resolvedPageSize ?? current.pagination.pageSize,\n },\n }));\n },\n [onPageIndexChange, onStateChange, resolvedPageSize],\n );\n const handlePageSizePropChange = React.useCallback(\n (nextPageSize: number) => {\n onPageSizeChange?.(nextPageSize);\n onStateChange?.((current) => ({\n ...current,\n pagination: {\n pageIndex:\n resolvedPageIndex ?? current.pagination.pageIndex,\n pageSize: nextPageSize,\n },\n }));\n },\n [onPageSizeChange, onStateChange, resolvedPageIndex],\n );\n const runAction = React.useCallback(\n (\n context: Omit, \"error\">,\n action: () => void | Promise,\n ) => {\n runDataTableAction(action, context, onActionError);\n },\n [onActionError],\n );\n const guardedRowActions = React.useMemo(\n () =>\n rowActions.map((action) => ({\n ...action,\n onClick: (row: TData) => {\n runAction(\n {\n actionKey: action.key,\n row,\n source: \"rowAction\",\n },\n () => action.onClick(row),\n );\n },\n })),\n [rowActions, runAction],\n );\n const guardedOnRowClick = React.useMemo<\n DataTableProps[\"onRowClick\"]\n >(\n () =>\n onRowClick\n ? (context) => {\n runAction(\n {\n row: context.row,\n source: \"rowClick\",\n },\n () => onRowClick(context),\n );\n }\n : undefined,\n [onRowClick, runAction],\n );\n const handleEditError = React.useCallback(\n (error: unknown, row: TData) => {\n onActionError?.({\n error,\n row,\n source: \"edit\",\n });\n },\n [onActionError],\n );\n const {\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n effectiveColumnVisibility,\n globalFilterValue,\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n localSearchValue,\n resolvedLoadingRowCount,\n resolvedToolbarQueryPlaceholder,\n selectedRows,\n setCurrentColumnFilters,\n setCurrentColumnOrder,\n setCurrentColumnPinning,\n setCurrentColumnVisibility,\n setCurrentExpanded,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n setLocalSearchValue,\n shouldRenderInitialLoading,\n tableData,\n tableGetRowId,\n visibleData,\n } = useDataTableState({\n columnFilters: resolvedColumnFilters,\n columnOrder: resolvedColumnOrder,\n columnPinning: resolvedColumnPinning,\n columnSizing: resolvedColumnSizing,\n columnPrefsKey,\n persistence,\n columnVisibility: resolvedColumnVisibility,\n columns,\n containerRef,\n data,\n density: resolvedDensity,\n enableRowSelection,\n enableToolbarQueryFiltering,\n expanded: resolvedExpanded,\n getRowId,\n hiddenRows,\n isLoading,\n loadingRowCount,\n manualFiltering,\n initialState,\n onColumnFiltersChange: handleColumnFiltersPropChange,\n onColumnOrderChange: handleColumnOrderPropChange,\n onColumnPinningChange: handleColumnPinningPropChange,\n onColumnSizingChange: handleColumnSizingPropChange,\n onColumnVisibilityChange: handleColumnVisibilityPropChange,\n onDensityChange: handleDensityPropChange,\n onExpandedChange: handleExpandedPropChange,\n onPageIndexChange: handlePageIndexPropChange,\n onRowSelectionChange: handleRowSelectionPropChange,\n onShowHiddenRowsChange: handleShowHiddenRowsPropChange,\n onSortingChange: handleSortingPropChange,\n onToolbarQueryValueChange: handleToolbarQueryValueChange,\n onViewModeChange: handleViewModePropChange,\n pageIndex: resolvedPageIndex,\n pageSize: resolvedPageSize,\n resolvedLabels,\n rowSelection: resolvedRowSelection,\n rowsPerPageOptions,\n selectionActions,\n showHiddenRows: resolvedShowHiddenRows,\n sorting: resolvedSorting,\n toolbarQueryDebounceMs,\n toolbarQueryPlaceholder,\n toolbarQueryValue: resolvedToolbarQueryValue,\n viewMode: resolvedViewMode,\n });\n const {\n cancelEditing,\n draftValues,\n editingRowId,\n isSavingEdit,\n saveEdit,\n setDraftValues,\n setEditingRowId,\n startEditingRow,\n } = useRowEditing({\n columns,\n editableRows,\n onError: handleEditError,\n });\n const { viewportElement: tableScrollElement, viewportHeight } =\n useDataTableScrollViewport(tableScrollContainerRef, currentViewMode);\n const openFileDialog = React.useCallback(() => {\n if (fileUpload?.disabled) {\n return;\n }\n\n fileInputRef.current?.click();\n }, [fileUpload?.disabled]);\n const handleSelectedFiles = React.useCallback(\n (files: FileList | Array) => {\n runAction(\n {\n source: \"fileUpload\",\n },\n () => fileUpload?.onFilesSelected(files),\n );\n },\n [fileUpload, runAction],\n );\n\n const tableColumns = useDataTableColumns({\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n editingRowId,\n enableRowSelection,\n getRowCanExpand,\n isSavingEdit,\n labels: resolvedLabels,\n lastSelectedRowIdRef,\n renderExpandedRow,\n rowActions: guardedRowActions,\n saveEdit,\n startEditingRow,\n tableRef,\n });\n\n const {\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n isPageCountKnown,\n renderedRows,\n reorderColumn,\n rowsToRender,\n sentinelRef,\n table,\n virtualPaddingBottom,\n virtualPaddingTop,\n visibleLeafColumns,\n } = useDataTableInstance({\n autoResetPageIndex: false,\n columnResizeMode,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentColumnSizing,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentSorting,\n currentViewMode,\n defaultColumn,\n effectiveColumnVisibility,\n enableColumnResizing,\n enableRowSelection,\n getRowCanExpand,\n globalFilterFn,\n globalFilterValue,\n hasNextPage,\n handleColumnFiltersChange: setCurrentColumnFilters,\n handleColumnOrderChange: setCurrentColumnOrder,\n handleColumnPinningChange: setCurrentColumnPinning,\n handleColumnVisibilityChange: setCurrentColumnVisibility,\n handleExpandedChange: setCurrentExpanded,\n infiniteScroll,\n manualFiltering,\n manualPagination,\n manualSorting,\n onActionError,\n onPageIndexChange: handlePageIndexPropChange,\n onPageSizeChange: handlePageSizePropChange,\n pageCount,\n pageIndex: resolvedPageIndex,\n pageSize: resolvedPageSize,\n renderExpandedRow,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n shouldRenderInitialLoading,\n tableColumns,\n tableData,\n tableGetRowId,\n tableRef,\n tableScrollElement,\n totalRowCount,\n virtualization,\n viewportHeight,\n });\n const columnLayout = useColumnLayout({\n columns,\n columnSizing: currentColumnSizing,\n editableRows: Boolean(editableRows),\n enableRowSelection,\n hasRowActions: rowActions.length > 0,\n hasRowExpansion: Boolean(renderExpandedRow),\n layoutMode,\n uiClassNames,\n visibleLeafColumns,\n });\n const { explicitlySizedColumnIds, fillMinWidth, getColumnLayout } =\n columnLayout;\n const explicitCustomCellColumnIds = React.useMemo(() => {\n return new Set(\n getDataTableLeafColumns(columns).flatMap(({ column, index }) => {\n return Object.prototype.hasOwnProperty.call(column, \"cell\") &&\n typeof column.cell === \"function\"\n ? [getColumnId(column, index)]\n : [];\n }),\n );\n }, [columns]);\n const visibleLeafColumnCount = visibleLeafColumns.length;\n const bodyRowComponents = React.useMemo(\n () => ({\n Checkbox,\n Input,\n Skeleton,\n TableCell,\n TableRow,\n }),\n [],\n );\n const hasCardTitle = React.useMemo(\n () =>\n getDataTableLeafColumns(columns).some(\n ({ column }) => column.meta?.cardTitle,\n ),\n [columns],\n );\n const primeColumnForResize = React.useCallback(\n (columnId: string, currentSize: number) => {\n if (\n explicitlySizedColumnIds.has(columnId) ||\n Object.prototype.hasOwnProperty.call(\n table.getState().columnSizing,\n columnId,\n )\n ) {\n return;\n }\n\n flushSync(() => {\n table.setColumnSizing((current) => ({\n ...current,\n [columnId]: currentSize,\n }));\n });\n },\n [explicitlySizedColumnIds, table],\n );\n const resetColumnSize = React.useCallback(\n (columnId: string) => {\n if (explicitlySizedColumnIds.has(columnId)) {\n table.getColumn(columnId)?.resetSize();\n return;\n }\n\n table.setColumnSizing((current) => {\n if (!Object.prototype.hasOwnProperty.call(current, columnId)) {\n return current;\n }\n\n const next = { ...current };\n delete next[columnId];\n return next;\n });\n },\n [explicitlySizedColumnIds, table],\n );\n\n const filteredData = table\n .getFilteredRowModel()\n .rows.map((row) => row.original);\n const emptyNode =\n typeof emptyState === \"function\"\n ? emptyState({\n rows: filteredData,\n toolbarQueryValue: localSearchValue,\n })\n : emptyState;\n const {\n columnVisibilityOptions,\n effectiveToolbarActions,\n handleClearColumnFilters,\n handleToolbarColumnFilterChange,\n handleToolbarColumnPinningChange,\n toolbarColumnFilters,\n } = useDataTableToolbarFeatures({\n columns,\n currentColumnFilters,\n currentColumnPinning,\n csvExport,\n effectiveColumnVisibility,\n enableColumnFilters,\n handleColumnFiltersChange: setCurrentColumnFilters,\n handleColumnPinningChange: setCurrentColumnPinning,\n labels: resolvedLabels,\n table,\n toolbarActions,\n visibleData,\n });\n const guardedToolbarActions = React.useMemo(\n () =>\n effectiveToolbarActions.map((action) => ({\n ...action,\n onClick: (context: {\n rows: Array;\n openFileDialog?: () => void;\n }) => {\n runAction(\n {\n actionKey: action.key,\n source: \"toolbarAction\",\n },\n () => action.onClick(context),\n );\n },\n })),\n [effectiveToolbarActions, runAction],\n );\n const guardedSelectionActions = React.useMemo(\n () =>\n selectionActions.map((action) => ({\n ...action,\n onClick: (context: Parameters[0]) => {\n runAction(\n {\n actionKey: action.key,\n source: \"selectionAction\",\n },\n () => action.onClick(context),\n );\n },\n })),\n [runAction, selectionActions],\n );\n const currentDataTableState = React.useMemo(\n () => ({\n sorting: currentSorting,\n pagination: currentPagination,\n rowSelection: currentRowSelection,\n columnVisibility: currentColumnVisibility,\n columnFilters: currentColumnFilters,\n expanded: currentExpanded,\n columnOrder: currentColumnOrder,\n columnPinning: currentColumnPinning,\n columnSizing: currentColumnSizing,\n density: currentDensity,\n viewMode: currentViewMode,\n showHiddenRows: currentShowHiddenRows,\n globalFilter: localSearchValue,\n }),\n [\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n localSearchValue,\n ],\n );\n const getCurrentState = React.useCallback(\n () => cloneDataTableState(currentDataTableState),\n [currentDataTableState],\n );\n const restoreState = React.useCallback(\n (nextState: Partial) => {\n if (nextState.sorting !== undefined) {\n table.setSorting(nextState.sorting);\n }\n if (nextState.pagination !== undefined) {\n table.setPagination(nextState.pagination);\n }\n if (nextState.rowSelection !== undefined) {\n table.setRowSelection(nextState.rowSelection);\n }\n if (nextState.columnVisibility !== undefined) {\n table.setColumnVisibility(nextState.columnVisibility);\n }\n if (nextState.columnFilters !== undefined) {\n table.setColumnFilters(nextState.columnFilters);\n }\n if (nextState.expanded !== undefined) {\n table.setExpanded(nextState.expanded);\n }\n if (nextState.columnOrder !== undefined) {\n table.setColumnOrder(nextState.columnOrder);\n }\n if (nextState.columnPinning !== undefined) {\n table.setColumnPinning(nextState.columnPinning);\n }\n if (nextState.columnSizing !== undefined) {\n table.setColumnSizing(nextState.columnSizing);\n }\n if (nextState.density !== undefined) {\n handleDensityChange(nextState.density);\n }\n if (nextState.viewMode !== undefined) {\n handleViewModeChange(nextState.viewMode);\n }\n if (nextState.showHiddenRows !== undefined) {\n handleShowHiddenRowsChange(nextState.showHiddenRows);\n }\n if (nextState.globalFilter !== undefined) {\n setLocalSearchValue(nextState.globalFilter);\n }\n },\n [\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n setLocalSearchValue,\n table,\n ],\n );\n const clearPersistedState = React.useCallback(\n () => clearDataTableColumnPrefs(persistence ?? columnPrefsKey),\n [columnPrefsKey, persistence],\n );\n const resetColumnLayout = React.useCallback<\n DataTableApi[\"resetColumnLayout\"]\n >(\n (options) => {\n if (options?.clearPersistence) {\n clearPersistedState();\n }\n restoreState({\n columnVisibility: initialState?.columnVisibility ?? {},\n columnOrder: initialState?.columnOrder ?? [],\n columnPinning:\n initialState?.columnPinning ?? getInitialColumnPinning(columns),\n columnSizing: initialState?.columnSizing ?? {},\n });\n },\n [\n clearPersistedState,\n columns,\n initialState,\n restoreState,\n ],\n );\n const resetState = React.useCallback[\"resetState\"]>(\n (options) => {\n if (options?.clearPersistence) {\n clearPersistedState();\n }\n restoreState({\n sorting: initialState?.sorting ?? [],\n pagination: initialState?.pagination ?? {\n pageIndex: 0,\n pageSize: rowsPerPageOptions[0] ?? 20,\n },\n rowSelection: initialState?.rowSelection ?? {},\n columnVisibility: initialState?.columnVisibility ?? {},\n columnFilters: initialState?.columnFilters ?? [],\n expanded: initialState?.expanded ?? {},\n columnOrder: initialState?.columnOrder ?? [],\n columnPinning:\n initialState?.columnPinning ?? getInitialColumnPinning(columns),\n columnSizing: initialState?.columnSizing ?? {},\n density: initialState?.density ?? \"comfortable\",\n viewMode: initialState?.viewMode ?? \"table\",\n showHiddenRows: initialState?.showHiddenRows ?? false,\n globalFilter: initialState?.globalFilter ?? \"\",\n });\n },\n [\n clearPersistedState,\n columns,\n initialState,\n restoreState,\n rowsPerPageOptions,\n ],\n );\n const getSavedViews = React.useCallback(\n () => readDataTableSavedViews(savedViews),\n [savedViews],\n );\n const createSavedView = React.useCallback<\n DataTableApi[\"createSavedView\"]\n >(\n (name) =>\n createDataTableSavedView(savedViews, name, getCurrentState()),\n [getCurrentState, savedViews],\n );\n const applySavedView = React.useCallback<\n DataTableApi[\"applySavedView\"]\n >(\n (id) => {\n const view = readDataTableSavedViews(savedViews).find(\n (candidate) => candidate.id === id,\n );\n if (!view) {\n return false;\n }\n restoreState(view.state);\n savedViews?.onApply?.(view);\n return true;\n },\n [restoreState, savedViews],\n );\n const renameSavedView = React.useCallback<\n DataTableApi[\"renameSavedView\"]\n >(\n (id, name) => renameDataTableSavedView(savedViews, id, name),\n [savedViews],\n );\n const deleteSavedView = React.useCallback<\n DataTableApi[\"deleteSavedView\"]\n >(\n (id) => deleteDataTableSavedView(savedViews, id),\n [savedViews],\n );\n const clearSavedViews = React.useCallback(\n () => clearDataTableSavedViews(savedViews),\n [savedViews],\n );\n const exportCsvFromApi = React.useCallback<\n DataTableApi[\"exportCsv\"]\n >(\n (options) =>\n exportDataTableCsv({\n csvExport: options ?? (csvExport || true),\n labels: resolvedLabels,\n table,\n }),\n [csvExport, resolvedLabels, table],\n );\n React.useImperativeHandle(\n apiRef,\n () => ({\n getTable: () => tableRef.current,\n getState: getCurrentState,\n snapshot: getCurrentState,\n restore: restoreState,\n resetColumnLayout,\n resetState,\n clearPersistedState,\n getSavedViews,\n createSavedView,\n applySavedView,\n renameSavedView,\n deleteSavedView,\n clearSavedViews,\n focus: () => {\n containerRef.current?.focus();\n },\n scrollToRow: (rowId) =>\n scrollDataTableElementIntoView(containerRef.current, \"row\", rowId),\n scrollToColumn: (columnId) =>\n scrollDataTableElementIntoView(\n containerRef.current,\n \"column\",\n columnId,\n ),\n exportCsv: exportCsvFromApi,\n }),\n [\n applySavedView,\n clearPersistedState,\n clearSavedViews,\n createSavedView,\n deleteSavedView,\n exportCsvFromApi,\n getSavedViews,\n getCurrentState,\n renameSavedView,\n resetColumnLayout,\n resetState,\n restoreState,\n ],\n );\n\n return (\n \n \n {fileUpload ? (\n {\n const files = event.currentTarget.files;\n if (files?.length) {\n handleSelectedFiles(files);\n }\n event.currentTarget.value = \"\";\n }}\n />\n ) : null}\n \n \n {showToolbar ? (\n \n ) : null}\n\n \n {currentViewMode === \"card\" && cardRenderer ? (\n \n ) : (\n \n )}\n \n \n {children}\n \n \n \n \n \n );\n };\n}\n\nfunction runDataTableAction(\n action: () => void | Promise,\n context: Omit, \"error\">,\n onActionError: DataTableProps[\"onActionError\"],\n) {\n let result: void | Promise;\n try {\n result = action();\n } catch (error) {\n onActionError?.({ ...context, error });\n return;\n }\n\n void Promise.resolve(result).catch((error: unknown) => {\n onActionError?.({ ...context, error });\n });\n}\n\nfunction useDataTableStateSliceChange(\n key: K,\n onLegacyChange: ((value: DataTableState[K]) => void) | undefined,\n onStateChange: DataTableProps[\"onStateChange\"],\n) {\n const handleChange = React.useCallback(\n (value: DataTableState[K]) => {\n onLegacyChange?.(value);\n onStateChange?.((current) => ({\n ...current,\n [key]: value,\n }));\n },\n [key, onLegacyChange, onStateChange],\n );\n\n return onLegacyChange || onStateChange ? handleChange : undefined;\n}\n\nfunction useDataTableStateConflictWarnings(\n state: Partial | undefined,\n legacySlices: Record,\n) {\n const warnedSlicesRef = React.useRef(new Set());\n\n React.useEffect(() => {\n if (!state || !isDevelopmentEnvironment()) {\n return;\n }\n\n for (const key of Object.keys(legacySlices) as Array<\n keyof DataTableState\n >) {\n if (\n state[key] === undefined ||\n !legacySlices[key] ||\n warnedSlicesRef.current.has(key)\n ) {\n continue;\n }\n\n warnedSlicesRef.current.add(key);\n console.warn(\n `[data-table-pro] Both state.${key} and its legacy controlled prop were provided. The legacy prop takes precedence during the 4.x compatibility window.`,\n );\n }\n }, [legacySlices, state]);\n}\n\nfunction isDevelopmentEnvironment() {\n const nodeEnvironment = (\n globalThis as {\n process?: { env?: { NODE_ENV?: string } };\n }\n ).process?.env?.NODE_ENV;\n\n return nodeEnvironment !== \"production\";\n}\n\nfunction cloneDataTableState(state: DataTableState): DataTableState {\n return {\n sorting: state.sorting.map((item) => ({ ...item })),\n pagination: { ...state.pagination },\n rowSelection: { ...state.rowSelection },\n columnVisibility: { ...state.columnVisibility },\n columnFilters: state.columnFilters.map((item) => ({ ...item })),\n expanded:\n typeof state.expanded === \"boolean\"\n ? state.expanded\n : { ...state.expanded },\n columnOrder: [...state.columnOrder],\n columnPinning: {\n left: state.columnPinning.left\n ? [...state.columnPinning.left]\n : undefined,\n right: state.columnPinning.right\n ? [...state.columnPinning.right]\n : undefined,\n },\n columnSizing: { ...state.columnSizing },\n density: state.density,\n viewMode: state.viewMode,\n showHiddenRows: state.showHiddenRows,\n globalFilter: state.globalFilter,\n };\n}\n\nfunction scrollDataTableElementIntoView(\n container: HTMLDivElement | null,\n kind: \"row\" | \"column\",\n value: string,\n) {\n if (!container) {\n return false;\n }\n\n const attribute = kind === \"row\" ? \"data-row-id\" : \"data-column-id\";\n const element = Array.from(\n container.querySelectorAll(`[${attribute}]`),\n ).find((candidate) => candidate.getAttribute(attribute) === value);\n if (!element) {\n return false;\n }\n\n element.scrollIntoView?.({ block: \"nearest\", inline: \"nearest\" });\n return true;\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-2V6RVOWX.js b/dist/chunk-7EXRF7VC.js similarity index 99% rename from dist/chunk-2V6RVOWX.js rename to dist/chunk-7EXRF7VC.js index ae2abfb..42ca2bc 100644 --- a/dist/chunk-2V6RVOWX.js +++ b/dist/chunk-7EXRF7VC.js @@ -1,2 +1,2 @@ -import {n,m,b,e,d,g as g$1,h as h$1,j,s,f,c}from'./chunk-HOUWU4KF.js';import {a}from'./chunk-ZF4EP4WP.js';import*as M from'react';import {cva}from'class-variance-authority';import {Slot,Separator,Checkbox,DropdownMenu,ScrollArea,Select,Tooltip}from'radix-ui';import {jsx,jsxs}from'react/jsx-runtime';var ce=cva("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:outline-none active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"",outline:"",secondary:"",ghost:"",destructive:"",link:"underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function g({className:t,variant:e="default",size:n="default",asChild:a$1=false,...s}){let d=a$1?Slot.Root:"button";return jsx(d,{"data-slot":"button","data-variant":e,"data-size":n,className:a(ce({variant:e,size:n,className:t})),...s})}function N({className:t,orientation:e="horizontal",decorative:n=true,...a$1}){return jsx(Separator.Root,{"data-slot":"separator",decorative:n,orientation:e,className:a("shrink-0 data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",t),...a$1})}var ve=cva("flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1",{variants:{orientation:{horizontal:"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg!",vertical:"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg!"}},defaultVariants:{orientation:"horizontal"}});function Y({className:t,orientation:e,...n}){return jsx("div",{role:"group","data-slot":"button-group","data-orientation":e,className:a(ve({orientation:e}),t),...n})}function Z({className:t,asChild:e=false,...n}){let a$1=e?Slot.Root:"div";return jsx(a$1,{className:a("flex items-center gap-2 rounded-lg border px-2.5 text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",t),...n})}function $({className:t,orientation:e="vertical",...n}){return jsx(N,{"data-slot":"button-group-separator",orientation:e,className:a("relative self-stretch data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto",t),...n})}function tt({className:t,size:e="default",...n}){return jsx("div",{"data-slot":"card","data-size":e,className:a("group/card flex flex-col gap-4 overflow-hidden rounded-xl border py-4 text-sm ring-1 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",t),...n})}function et({className:t,...e}){return jsx("div",{"data-slot":"card-header",className:a("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3",t),...e})}function ot({className:t,...e}){return jsx("div",{"data-slot":"card-title",className:a("font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",t),...e})}function nt({className:t,...e}){return jsx("div",{"data-slot":"card-description",className:a("text-sm opacity-80",t),...e})}function at({className:t,...e}){return jsx("div",{"data-slot":"card-action",className:a("col-start-2 row-span-2 row-start-1 self-start justify-self-end",t),...e})}function rt({className:t,...e}){return jsx("div",{"data-slot":"card-content",className:a("px-4 group-data-[size=sm]/card:px-3",t),...e})}function it({className:t,...e}){return jsx("div",{"data-slot":"card-footer",className:a("flex items-center rounded-b-xl border-t p-4 group-data-[size=sm]/card:p-3",t),...e})}function lt({className:t,...e}){return jsx(Checkbox.Root,{"data-slot":"checkbox",className:a("peer relative flex size-4 shrink-0 items-center justify-center rounded-[4px] border ring-2 transition-colors outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 data-checked:ring-2",t),...e,children:jsx(Checkbox.Indicator,{"data-slot":"checkbox-indicator",className:"grid place-content-center text-current transition-none [&>svg]:size-3.5",children:jsx(b,{})})})}function dt({...t}){return jsx(DropdownMenu.Root,{"data-slot":"dropdown-menu",...t})}function pt({...t}){return jsx(DropdownMenu.Portal,{"data-slot":"dropdown-menu-portal",...t})}function ct({...t}){return jsx(DropdownMenu.Trigger,{"data-slot":"dropdown-menu-trigger",...t})}function ut({className:t,align:e="start",sideOffset:n=4,...a$1}){return jsx(DropdownMenu.Portal,{children:jsx(DropdownMenu.Content,{"data-slot":"dropdown-menu-content",sideOffset:n,align:e,className:a("relative z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) animate-none! overflow-x-hidden overflow-y-auto rounded-lg border p-1 shadow-md duration-100 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] 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 data-[state=closed]:overflow-hidden data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",t),...a$1})})}function mt({...t}){return jsx(DropdownMenu.Group,{"data-slot":"dropdown-menu-group",...t})}function ft({className:t,inset:e,variant:n="default",...a$1}){return jsx(DropdownMenu.Item,{"data-slot":"dropdown-menu-item","data-inset":e,"data-variant":n,className:a("group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:outline-none data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a$1})}function gt({className:t,children:e,checked:n,inset:a$1,...s}){return jsxs(DropdownMenu.CheckboxItem,{"data-slot":"dropdown-menu-checkbox-item","data-inset":a$1,className:a("relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:outline-none data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),checked:n,...s,children:[jsx("span",{className:"pointer-events-none absolute right-2 flex items-center justify-center","data-slot":"dropdown-menu-checkbox-item-indicator",children:jsx(DropdownMenu.ItemIndicator,{children:jsx(b,{})})}),e]})}function bt({...t}){return jsx(DropdownMenu.RadioGroup,{"data-slot":"dropdown-menu-radio-group",...t})}function vt({className:t,children:e,inset:n,...a$1}){return jsxs(DropdownMenu.RadioItem,{"data-slot":"dropdown-menu-radio-item","data-inset":n,className:a("relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:outline-none data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a$1,children:[jsx("span",{className:"pointer-events-none absolute right-2 flex items-center justify-center","data-slot":"dropdown-menu-radio-item-indicator",children:jsx(DropdownMenu.ItemIndicator,{children:jsx(b,{})})}),e]})}function ht({className:t,inset:e,...n}){return jsx(DropdownMenu.Label,{"data-slot":"dropdown-menu-label","data-inset":e,className:a("px-1.5 py-1 text-xs font-medium opacity-80 data-inset:pl-7",t),...n})}function Pt({className:t,...e}){return jsx(DropdownMenu.Separator,{"data-slot":"dropdown-menu-separator",className:a("-mx-1 my-1 h-px",t),...e})}function xt({className:t,...e}){return jsx("span",{"data-slot":"dropdown-menu-shortcut",className:a("ml-auto text-xs tracking-widest opacity-75",t),...e})}function wt({...t}){return jsx(DropdownMenu.Sub,{"data-slot":"dropdown-menu-sub",...t})}function yt({className:t,inset:e$1,children:n,...a$1}){return jsxs(DropdownMenu.SubTrigger,{"data-slot":"dropdown-menu-sub-trigger","data-inset":e$1,className:a("flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:outline-none data-inset:pl-7 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a$1,children:[n,jsx(e,{className:"ml-auto"})]})}function Ct({className:t,...e}){return jsx(DropdownMenu.SubContent,{"data-slot":"dropdown-menu-sub-content",className:a("relative z-50 min-w-[96px] origin-(--radix-dropdown-menu-content-transform-origin) animate-none! overflow-hidden rounded-lg border p-1 shadow-lg duration-100 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] 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 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",t),...e})}function Rt({className:t,...e}){return jsx("div",{"data-slot":"empty",className:a("flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-xl border-dashed p-6 text-center text-balance",t),...e})}function St({className:t,...e}){return jsx("div",{"data-slot":"empty-header",className:a("flex max-w-sm flex-col items-center gap-2",t),...e})}var Pe=cva("mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0",{variants:{variant:{default:"bg-transparent",icon:"flex size-8 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-4"}},defaultVariants:{variant:"default"}});function zt({className:t,variant:e="default",...n}){return jsx("div",{"data-slot":"empty-icon","data-variant":e,className:a(Pe({variant:e,className:t})),...n})}function Nt({className:t,...e}){return jsx("div",{"data-slot":"empty-title",className:a("font-heading text-sm font-medium tracking-tight",t),...e})}function It({className:t,...e}){return jsx("div",{"data-slot":"empty-description",className:a("text-sm/relaxed opacity-80 [&>a]:underline [&>a]:underline-offset-4",t),...e})}function kt({className:t,...e}){return jsx("div",{"data-slot":"empty-content",className:a("flex w-full max-w-sm min-w-0 flex-col items-center gap-2.5 text-sm text-balance",t),...e})}var I="h-8 w-full min-w-0 rounded-lg border px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:opacity-70 focus-visible:outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm";function k({className:t,...e}){return jsx("div",{role:"group","data-slot":"input-group",className:a("group/input-group flex w-full min-w-0 items-stretch rounded-lg border transition-colors outline-none focus-within:outline-none has-[>[data-slot=input-group-addon][data-align=block-start]]:flex-col has-[>[data-slot=input-group-addon][data-align=block-end]]:flex-col has-[>[data-slot=input-group-control]:disabled]:cursor-not-allowed has-[>[data-slot=input-group-control]:disabled]:opacity-50",t),...e})}var x=M.forwardRef(function({className:e,...n},a$1){return jsx("input",{ref:a$1,"data-slot":"input-group-control",type:n.type,className:a(I,"flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:border-0 focus-visible:ring-0",e),...n})});function T({align:t="inline-start",className:e,...n}){return jsx("div",{"data-slot":"input-group-addon","data-align":t,className:a("flex shrink-0 items-center gap-1.5 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",t==="inline-start"&&"order-first pl-2.5 pr-1",t==="inline-end"&&"order-last pl-1 pr-2.5",t==="block-start"&&"order-first w-full justify-between border-b px-2.5 py-1.5 text-sm",t==="block-end"&&"order-last w-full justify-between border-t px-2.5 py-1.5 text-sm",e),...n})}function Dt({className:t,...e}){return jsx("span",{"data-slot":"input-group-text",className:a("whitespace-nowrap text-sm",t),...e})}x.displayName="InputGroupInput";var A=M.forwardRef(function({className:e,passwordToggle:n$1=false,type:a$1,...s},d){let[S,le]=M.useState(false);return n$1&&a$1==="password"?jsxs(k,{className:e,children:[jsx(x,{ref:d,type:S?"text":"password","data-slot":"input-group-control",className:"pr-0",...s}),jsx(T,{align:"inline-end",children:jsx(g,{type:"button",variant:"ghost",size:"icon-xs","aria-label":S?"Hide password":"Show password","aria-pressed":S,className:"hover:bg-transparent",onMouseDown:G=>G.preventDefault(),onClick:()=>le(G=>!G),children:S?jsx(n,{"data-icon":"inline-start"}):jsx(m,{"data-icon":"inline-start"})})})]}):jsx("input",{ref:d,type:a$1,"data-slot":"input",className:a(I,e),...s})});A.displayName="Input";function Mt({className:t,...e}){return jsx("nav",{role:"navigation","aria-label":"pagination","data-slot":"pagination",className:a("mx-auto flex w-full justify-center",t),...e})}function Gt({className:t,...e}){return jsx("ul",{"data-slot":"pagination-content",className:a("flex items-center gap-1",t),...e})}function _t({...t}){return jsx("li",{"data-slot":"pagination-item",...t})}function h({className:t,isActive:e,disabled:n=false,variant:a$1,size:s="icon",...d}){return jsx(g,{asChild:true,variant:a$1??(e?"outline":"ghost"),size:s,className:a(n&&"pointer-events-none opacity-50",t),children:jsx("a",{"aria-current":e?"page":void 0,"aria-disabled":n?true:void 0,"data-slot":"pagination-link","data-active":e,tabIndex:n?-1:d.tabIndex,...d})})}function Bt({className:t,disabled:e,showText:n=true,size:a$1="default",text:s="Previous",...d$1}){return jsxs(h,{"aria-label":"Go to previous page",disabled:e,size:a$1,variant:"outline",className:a("pl-1.5!",t),...d$1,children:[jsx(d,{"data-icon":"inline-start"}),n?jsx("span",{className:"hidden sm:block",children:s}):null]})}function Lt({className:t,disabled:e,showText:n=true,size:a$1="default",text:s="First",...d}){return jsxs(h,{"aria-label":"Go to first page",disabled:e,size:a$1,variant:"outline",className:a("pl-1.5!",t),...d,children:[jsx(g$1,{"data-icon":"inline-start"}),n?jsx("span",{className:"hidden sm:block",children:s}):null]})}function At({className:t,disabled:e$1,showText:n=true,size:a$1="default",text:s="Next",...d}){return jsxs(h,{"aria-label":"Go to next page",disabled:e$1,size:a$1,variant:"outline",className:a("pr-1.5!",t),...d,children:[n?jsx("span",{className:"hidden sm:block",children:s}):null,jsx(e,{"data-icon":"inline-end"})]})}function Vt({className:t,disabled:e,showText:n=true,size:a$1="default",text:s="Last",...d}){return jsxs(h,{"aria-label":"Go to last page",disabled:e,size:a$1,variant:"outline",className:a("pr-1.5!",t),...d,children:[n?jsx("span",{className:"hidden sm:block",children:s}):null,jsx(h$1,{"data-icon":"inline-end"})]})}function Et({className:t,text:e="More pages",...n}){return jsxs("span",{"aria-hidden":true,"data-slot":"pagination-ellipsis",className:a("flex size-8 items-center justify-center [&_svg:not([class*='size-'])]:size-4",t),...n,children:[jsx(j,{}),jsx("span",{className:"sr-only",children:e})]})}function Ht({className:t,children:e,...n}){return jsxs(ScrollArea.Root,{"data-slot":"scroll-area",className:a("relative",t),...n,children:[jsx(ScrollArea.Viewport,{"data-slot":"scroll-area-viewport",className:"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:outline-none",children:e}),jsx(V,{className:"z-100"}),jsx(ScrollArea.Corner,{})]})}function V({className:t,orientation:e="vertical",...n}){return jsx(ScrollArea.ScrollAreaScrollbar,{"data-slot":"scroll-area-scrollbar","data-orientation":e,orientation:e,className:a("flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent",t),...n,children:jsx(ScrollArea.ScrollAreaThumb,{"data-slot":"scroll-area-thumb",className:"relative flex-1 rounded-full"})})}function Ut({...t}){return jsx(Select.Root,{"data-slot":"select",...t})}function Ft({className:t,...e}){return jsx(Select.Group,{"data-slot":"select-group",className:a("scroll-my-1 p-1",t),...e})}function Kt({...t}){return jsx(Select.Value,{"data-slot":"select-value",...t})}function Ot({className:t,size:e="default",children:n,...a$1}){return jsxs(Select.Trigger,{"data-slot":"select-trigger","data-size":e,className:a("flex w-fit items-center justify-between gap-1.5 rounded-lg border bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a$1,children:[n,jsx(Select.Icon,{asChild:true,children:jsx(s,{className:"pointer-events-none size-4"})})]})}function jt({className:t,children:e,position:n="item-aligned",align:a$1="center",...s}){return jsx(Select.Portal,{children:jsxs(Select.Content,{"data-slot":"select-content","data-align-trigger":n==="item-aligned",className:a("relative z-50 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) animate-none! overflow-x-hidden overflow-y-auto rounded-lg border shadow-md duration-100 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] data-[align-trigger=true]:animate-none 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 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",n==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",t),position:n,align:a$1,...s,children:[jsx(E,{}),jsx(Select.Viewport,{"data-position":n,className:a("data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)",n==="popper"&&""),children:e}),jsx(H,{})]})})}function qt({className:t,...e}){return jsx(Select.Label,{"data-slot":"select-label",className:a("px-1.5 py-1 text-xs opacity-80",t),...e})}function Jt({className:t,children:e,...n}){return jsxs(Select.Item,{"data-slot":"select-item",className:a("relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:outline-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",t),...n,children:[jsx("span",{className:"pointer-events-none absolute right-2 flex size-4 items-center justify-center",children:jsx(Select.ItemIndicator,{children:jsx(b,{className:"pointer-events-none"})})}),jsx(Select.ItemText,{children:e})]})}function Qt({className:t,...e}){return jsx(Select.Separator,{"data-slot":"select-separator",className:a("pointer-events-none -mx-1 my-1 h-px",t),...e})}function E({className:t,...e}){return jsx(Select.ScrollUpButton,{"data-slot":"select-scroll-up-button",className:a("z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4",t),...e,children:jsx(f,{})})}function H({className:t,...e}){return jsx(Select.ScrollDownButton,{"data-slot":"select-scroll-down-button",className:a("z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4",t),...e,children:jsx(c,{})})}function Wt({className:t,...e}){return jsx("div",{"data-slot":"skeleton",className:a("animate-pulse rounded-md",t),...e})}function Xt({className:t,...e}){return jsx("table",{"data-slot":"table",className:a("w-full border-collapse caption-bottom text-sm",t),...e})}function Yt({className:t,...e}){return jsx("thead",{"data-slot":"table-header",className:a("[&_tr]:border-b",t),...e})}function Zt({className:t,...e}){return jsx("tbody",{"data-slot":"table-body",className:a("[&_tr:last-child]:border-0",t),...e})}function $t({className:t,...e}){return jsx("tfoot",{"data-slot":"table-footer",className:a("border-t font-medium [&>tr]:last:border-b-0",t),...e})}function te({className:t,...e}){return jsx("tr",{"data-slot":"table-row",className:a("border-b transition-colors",t),...e})}function ee({className:t,...e}){return jsx("th",{"data-slot":"table-head",className:a("h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0",t),...e})}function oe({className:t,...e}){return jsx("td",{"data-slot":"table-cell",className:a("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0",t),...e})}function ne({className:t,...e}){return jsx("caption",{"data-slot":"table-caption",className:a("mt-4 text-sm opacity-80",t),...e})}function ae({delayDuration:t=0,...e}){return jsx(Tooltip.Provider,{"data-slot":"tooltip-provider",delayDuration:t,...e})}function re({...t}){return jsx(Tooltip.Root,{"data-slot":"tooltip",...t})}function ie({...t}){return jsx(Tooltip.Trigger,{"data-slot":"tooltip-trigger",...t})}function se({className:t,sideOffset:e=0,children:n,...a$1}){return jsx(Tooltip.Portal,{children:jsxs(Tooltip.Content,{"data-slot":"tooltip-content",sideOffset:e,className:a("z-50 inline-flex w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) items-center gap-1.5 rounded-md border px-3 py-1.5 text-xs has-data-[slot=kbd]:pr-1.5 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 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",t),...a$1,children:[n,jsx(Tooltip.Arrow,{className:"z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]"})]})})}var un={Button:g,ButtonGroup:Y,ButtonGroupSeparator:$,ButtonGroupText:Z,Card:tt,CardAction:at,CardContent:rt,CardDescription:nt,CardFooter:it,CardHeader:et,CardTitle:ot,Checkbox:lt,DropdownMenu:dt,DropdownMenuCheckboxItem:gt,DropdownMenuContent:ut,DropdownMenuGroup:mt,DropdownMenuItem:ft,DropdownMenuLabel:ht,DropdownMenuPortal:pt,DropdownMenuRadioGroup:bt,DropdownMenuRadioItem:vt,DropdownMenuSeparator:Pt,DropdownMenuShortcut:xt,DropdownMenuSub:wt,DropdownMenuSubContent:Ct,DropdownMenuSubTrigger:yt,DropdownMenuTrigger:ct,Empty:Rt,EmptyContent:kt,EmptyDescription:It,EmptyHeader:St,EmptyMedia:zt,EmptyTitle:Nt,Input:A,InputGroup:k,InputGroupAddon:T,InputGroupInput:x,InputGroupText:Dt,Pagination:Mt,PaginationContent:Gt,PaginationEllipsis:Et,PaginationFirst:Lt,PaginationItem:_t,PaginationLast:Vt,PaginationLink:h,PaginationNext:At,PaginationPrevious:Bt,ScrollArea:Ht,ScrollBar:V,Select:Ut,SelectContent:jt,SelectGroup:Ft,SelectItem:Jt,SelectLabel:qt,SelectScrollDownButton:H,SelectScrollUpButton:E,SelectSeparator:Qt,SelectTrigger:Ot,SelectValue:Kt,Separator:N,Skeleton:Wt,Table:Xt,TableBody:Zt,TableCaption:ne,TableCell:oe,TableFooter:$t,TableHead:ee,TableHeader:Yt,TableRow:te,Tooltip:re,TooltipContent:se,TooltipProvider:ae,TooltipTrigger:ie};export{Mt as A,h as B,Bt as C,Lt as D,At as E,Vt as F,Ht as G,V as H,Ot as I,jt as J,qt as K,Jt as L,Qt as M,Wt as N,Xt as O,Yt as P,Zt as Q,$t as R,te as S,ee as T,oe as U,ne as V,se as W,un as X,g as a,N as b,tt as c,et as d,nt as e,rt as f,it as g,lt as h,ut as i,ft as j,gt as k,vt as l,ht as m,Pt as n,yt as o,Ct as p,Rt as q,St as r,zt as s,Nt as t,It as u,kt as v,k as w,x,T as y,A as z};//# sourceMappingURL=chunk-2V6RVOWX.js.map -//# sourceMappingURL=chunk-2V6RVOWX.js.map \ No newline at end of file +import {n,m,b,e,d,g as g$1,h as h$1,j,s,f,c}from'./chunk-ZGXFBFNQ.js';import {a}from'./chunk-PFB5LOU7.js';import*as M from'react';import {cva}from'class-variance-authority';import {Slot,Separator,Checkbox,DropdownMenu,ScrollArea,Select,Tooltip}from'radix-ui';import {jsx,jsxs}from'react/jsx-runtime';var ce=cva("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:outline-none active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"",outline:"",secondary:"",ghost:"",destructive:"",link:"underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function g({className:t,variant:e="default",size:n="default",asChild:a$1=false,...s}){let d=a$1?Slot.Root:"button";return jsx(d,{"data-slot":"button","data-variant":e,"data-size":n,className:a(ce({variant:e,size:n,className:t})),...s})}function N({className:t,orientation:e="horizontal",decorative:n=true,...a$1}){return jsx(Separator.Root,{"data-slot":"separator",decorative:n,orientation:e,className:a("shrink-0 data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",t),...a$1})}var ve=cva("flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1",{variants:{orientation:{horizontal:"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg!",vertical:"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg!"}},defaultVariants:{orientation:"horizontal"}});function Y({className:t,orientation:e,...n}){return jsx("div",{role:"group","data-slot":"button-group","data-orientation":e,className:a(ve({orientation:e}),t),...n})}function Z({className:t,asChild:e=false,...n}){let a$1=e?Slot.Root:"div";return jsx(a$1,{className:a("flex items-center gap-2 rounded-lg border px-2.5 text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",t),...n})}function $({className:t,orientation:e="vertical",...n}){return jsx(N,{"data-slot":"button-group-separator",orientation:e,className:a("relative self-stretch data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto",t),...n})}function tt({className:t,size:e="default",...n}){return jsx("div",{"data-slot":"card","data-size":e,className:a("group/card flex flex-col gap-4 overflow-hidden rounded-xl border py-4 text-sm ring-1 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",t),...n})}function et({className:t,...e}){return jsx("div",{"data-slot":"card-header",className:a("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3",t),...e})}function ot({className:t,...e}){return jsx("div",{"data-slot":"card-title",className:a("font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",t),...e})}function nt({className:t,...e}){return jsx("div",{"data-slot":"card-description",className:a("text-sm opacity-80",t),...e})}function at({className:t,...e}){return jsx("div",{"data-slot":"card-action",className:a("col-start-2 row-span-2 row-start-1 self-start justify-self-end",t),...e})}function rt({className:t,...e}){return jsx("div",{"data-slot":"card-content",className:a("px-4 group-data-[size=sm]/card:px-3",t),...e})}function it({className:t,...e}){return jsx("div",{"data-slot":"card-footer",className:a("flex items-center rounded-b-xl border-t p-4 group-data-[size=sm]/card:p-3",t),...e})}function lt({className:t,...e}){return jsx(Checkbox.Root,{"data-slot":"checkbox",className:a("peer relative flex size-4 shrink-0 items-center justify-center rounded-[4px] border ring-2 transition-colors outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 data-checked:ring-2",t),...e,children:jsx(Checkbox.Indicator,{"data-slot":"checkbox-indicator",className:"grid place-content-center text-current transition-none [&>svg]:size-3.5",children:jsx(b,{})})})}function dt({...t}){return jsx(DropdownMenu.Root,{"data-slot":"dropdown-menu",...t})}function pt({...t}){return jsx(DropdownMenu.Portal,{"data-slot":"dropdown-menu-portal",...t})}function ct({...t}){return jsx(DropdownMenu.Trigger,{"data-slot":"dropdown-menu-trigger",...t})}function ut({className:t,align:e="start",sideOffset:n=4,...a$1}){return jsx(DropdownMenu.Portal,{children:jsx(DropdownMenu.Content,{"data-slot":"dropdown-menu-content",sideOffset:n,align:e,className:a("relative z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) animate-none! overflow-x-hidden overflow-y-auto rounded-lg border p-1 shadow-md duration-100 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] 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 data-[state=closed]:overflow-hidden data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",t),...a$1})})}function mt({...t}){return jsx(DropdownMenu.Group,{"data-slot":"dropdown-menu-group",...t})}function ft({className:t,inset:e,variant:n="default",...a$1}){return jsx(DropdownMenu.Item,{"data-slot":"dropdown-menu-item","data-inset":e,"data-variant":n,className:a("group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:outline-none data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a$1})}function gt({className:t,children:e,checked:n,inset:a$1,...s}){return jsxs(DropdownMenu.CheckboxItem,{"data-slot":"dropdown-menu-checkbox-item","data-inset":a$1,className:a("relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:outline-none data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),checked:n,...s,children:[jsx("span",{className:"pointer-events-none absolute right-2 flex items-center justify-center","data-slot":"dropdown-menu-checkbox-item-indicator",children:jsx(DropdownMenu.ItemIndicator,{children:jsx(b,{})})}),e]})}function bt({...t}){return jsx(DropdownMenu.RadioGroup,{"data-slot":"dropdown-menu-radio-group",...t})}function vt({className:t,children:e,inset:n,...a$1}){return jsxs(DropdownMenu.RadioItem,{"data-slot":"dropdown-menu-radio-item","data-inset":n,className:a("relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:outline-none data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a$1,children:[jsx("span",{className:"pointer-events-none absolute right-2 flex items-center justify-center","data-slot":"dropdown-menu-radio-item-indicator",children:jsx(DropdownMenu.ItemIndicator,{children:jsx(b,{})})}),e]})}function ht({className:t,inset:e,...n}){return jsx(DropdownMenu.Label,{"data-slot":"dropdown-menu-label","data-inset":e,className:a("px-1.5 py-1 text-xs font-medium opacity-80 data-inset:pl-7",t),...n})}function Pt({className:t,...e}){return jsx(DropdownMenu.Separator,{"data-slot":"dropdown-menu-separator",className:a("-mx-1 my-1 h-px",t),...e})}function xt({className:t,...e}){return jsx("span",{"data-slot":"dropdown-menu-shortcut",className:a("ml-auto text-xs tracking-widest opacity-75",t),...e})}function wt({...t}){return jsx(DropdownMenu.Sub,{"data-slot":"dropdown-menu-sub",...t})}function yt({className:t,inset:e$1,children:n,...a$1}){return jsxs(DropdownMenu.SubTrigger,{"data-slot":"dropdown-menu-sub-trigger","data-inset":e$1,className:a("flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:outline-none data-inset:pl-7 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a$1,children:[n,jsx(e,{className:"ml-auto"})]})}function Ct({className:t,...e}){return jsx(DropdownMenu.SubContent,{"data-slot":"dropdown-menu-sub-content",className:a("relative z-50 min-w-[96px] origin-(--radix-dropdown-menu-content-transform-origin) animate-none! overflow-hidden rounded-lg border p-1 shadow-lg duration-100 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] 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 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",t),...e})}function Rt({className:t,...e}){return jsx("div",{"data-slot":"empty",className:a("flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-xl border-dashed p-6 text-center text-balance",t),...e})}function St({className:t,...e}){return jsx("div",{"data-slot":"empty-header",className:a("flex max-w-sm flex-col items-center gap-2",t),...e})}var Pe=cva("mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0",{variants:{variant:{default:"bg-transparent",icon:"flex size-8 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-4"}},defaultVariants:{variant:"default"}});function zt({className:t,variant:e="default",...n}){return jsx("div",{"data-slot":"empty-icon","data-variant":e,className:a(Pe({variant:e,className:t})),...n})}function Nt({className:t,...e}){return jsx("div",{"data-slot":"empty-title",className:a("font-heading text-sm font-medium tracking-tight",t),...e})}function It({className:t,...e}){return jsx("div",{"data-slot":"empty-description",className:a("text-sm/relaxed opacity-80 [&>a]:underline [&>a]:underline-offset-4",t),...e})}function kt({className:t,...e}){return jsx("div",{"data-slot":"empty-content",className:a("flex w-full max-w-sm min-w-0 flex-col items-center gap-2.5 text-sm text-balance",t),...e})}var I="h-8 w-full min-w-0 rounded-lg border px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:opacity-70 focus-visible:outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm";function k({className:t,...e}){return jsx("div",{role:"group","data-slot":"input-group",className:a("group/input-group flex w-full min-w-0 items-stretch rounded-lg border transition-colors outline-none focus-within:outline-none has-[>[data-slot=input-group-addon][data-align=block-start]]:flex-col has-[>[data-slot=input-group-addon][data-align=block-end]]:flex-col has-[>[data-slot=input-group-control]:disabled]:cursor-not-allowed has-[>[data-slot=input-group-control]:disabled]:opacity-50",t),...e})}var x=M.forwardRef(function({className:e,...n},a$1){return jsx("input",{ref:a$1,"data-slot":"input-group-control",type:n.type,className:a(I,"flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:border-0 focus-visible:ring-0",e),...n})});function T({align:t="inline-start",className:e,...n}){return jsx("div",{"data-slot":"input-group-addon","data-align":t,className:a("flex shrink-0 items-center gap-1.5 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",t==="inline-start"&&"order-first pl-2.5 pr-1",t==="inline-end"&&"order-last pl-1 pr-2.5",t==="block-start"&&"order-first w-full justify-between border-b px-2.5 py-1.5 text-sm",t==="block-end"&&"order-last w-full justify-between border-t px-2.5 py-1.5 text-sm",e),...n})}function Dt({className:t,...e}){return jsx("span",{"data-slot":"input-group-text",className:a("whitespace-nowrap text-sm",t),...e})}x.displayName="InputGroupInput";var A=M.forwardRef(function({className:e,passwordToggle:n$1=false,type:a$1,...s},d){let[S,le]=M.useState(false);return n$1&&a$1==="password"?jsxs(k,{className:e,children:[jsx(x,{ref:d,type:S?"text":"password","data-slot":"input-group-control",className:"pr-0",...s}),jsx(T,{align:"inline-end",children:jsx(g,{type:"button",variant:"ghost",size:"icon-xs","aria-label":S?"Hide password":"Show password","aria-pressed":S,className:"hover:bg-transparent",onMouseDown:G=>G.preventDefault(),onClick:()=>le(G=>!G),children:S?jsx(n,{"data-icon":"inline-start"}):jsx(m,{"data-icon":"inline-start"})})})]}):jsx("input",{ref:d,type:a$1,"data-slot":"input",className:a(I,e),...s})});A.displayName="Input";function Mt({className:t,...e}){return jsx("nav",{role:"navigation","aria-label":"pagination","data-slot":"pagination",className:a("mx-auto flex w-full justify-center",t),...e})}function Gt({className:t,...e}){return jsx("ul",{"data-slot":"pagination-content",className:a("flex items-center gap-1",t),...e})}function _t({...t}){return jsx("li",{"data-slot":"pagination-item",...t})}function h({className:t,isActive:e,disabled:n=false,variant:a$1,size:s="icon",...d}){return jsx(g,{asChild:true,variant:a$1??(e?"outline":"ghost"),size:s,className:a(n&&"pointer-events-none opacity-50",t),children:jsx("a",{"aria-current":e?"page":void 0,"aria-disabled":n?true:void 0,"data-slot":"pagination-link","data-active":e,tabIndex:n?-1:d.tabIndex,...d})})}function Bt({className:t,disabled:e,showText:n=true,size:a$1="default",text:s="Previous",...d$1}){return jsxs(h,{"aria-label":"Go to previous page",disabled:e,size:a$1,variant:"outline",className:a("pl-1.5!",t),...d$1,children:[jsx(d,{"data-icon":"inline-start"}),n?jsx("span",{className:"hidden sm:block",children:s}):null]})}function Lt({className:t,disabled:e,showText:n=true,size:a$1="default",text:s="First",...d}){return jsxs(h,{"aria-label":"Go to first page",disabled:e,size:a$1,variant:"outline",className:a("pl-1.5!",t),...d,children:[jsx(g$1,{"data-icon":"inline-start"}),n?jsx("span",{className:"hidden sm:block",children:s}):null]})}function At({className:t,disabled:e$1,showText:n=true,size:a$1="default",text:s="Next",...d}){return jsxs(h,{"aria-label":"Go to next page",disabled:e$1,size:a$1,variant:"outline",className:a("pr-1.5!",t),...d,children:[n?jsx("span",{className:"hidden sm:block",children:s}):null,jsx(e,{"data-icon":"inline-end"})]})}function Vt({className:t,disabled:e,showText:n=true,size:a$1="default",text:s="Last",...d}){return jsxs(h,{"aria-label":"Go to last page",disabled:e,size:a$1,variant:"outline",className:a("pr-1.5!",t),...d,children:[n?jsx("span",{className:"hidden sm:block",children:s}):null,jsx(h$1,{"data-icon":"inline-end"})]})}function Et({className:t,text:e="More pages",...n}){return jsxs("span",{"aria-hidden":true,"data-slot":"pagination-ellipsis",className:a("flex size-8 items-center justify-center [&_svg:not([class*='size-'])]:size-4",t),...n,children:[jsx(j,{}),jsx("span",{className:"sr-only",children:e})]})}function Ht({className:t,children:e,...n}){return jsxs(ScrollArea.Root,{"data-slot":"scroll-area",className:a("relative",t),...n,children:[jsx(ScrollArea.Viewport,{"data-slot":"scroll-area-viewport",className:"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:outline-none",children:e}),jsx(V,{className:"z-100"}),jsx(ScrollArea.Corner,{})]})}function V({className:t,orientation:e="vertical",...n}){return jsx(ScrollArea.ScrollAreaScrollbar,{"data-slot":"scroll-area-scrollbar","data-orientation":e,orientation:e,className:a("flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent",t),...n,children:jsx(ScrollArea.ScrollAreaThumb,{"data-slot":"scroll-area-thumb",className:"relative flex-1 rounded-full"})})}function Ut({...t}){return jsx(Select.Root,{"data-slot":"select",...t})}function Ft({className:t,...e}){return jsx(Select.Group,{"data-slot":"select-group",className:a("scroll-my-1 p-1",t),...e})}function Kt({...t}){return jsx(Select.Value,{"data-slot":"select-value",...t})}function Ot({className:t,size:e="default",children:n,...a$1}){return jsxs(Select.Trigger,{"data-slot":"select-trigger","data-size":e,className:a("flex w-fit items-center justify-between gap-1.5 rounded-lg border bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a$1,children:[n,jsx(Select.Icon,{asChild:true,children:jsx(s,{className:"pointer-events-none size-4"})})]})}function jt({className:t,children:e,position:n="item-aligned",align:a$1="center",...s}){return jsx(Select.Portal,{children:jsxs(Select.Content,{"data-slot":"select-content","data-align-trigger":n==="item-aligned",className:a("relative z-50 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) animate-none! overflow-x-hidden overflow-y-auto rounded-lg border shadow-md duration-100 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] data-[align-trigger=true]:animate-none 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 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",n==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",t),position:n,align:a$1,...s,children:[jsx(E,{}),jsx(Select.Viewport,{"data-position":n,className:a("data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)",n==="popper"&&""),children:e}),jsx(H,{})]})})}function qt({className:t,...e}){return jsx(Select.Label,{"data-slot":"select-label",className:a("px-1.5 py-1 text-xs opacity-80",t),...e})}function Jt({className:t,children:e,...n}){return jsxs(Select.Item,{"data-slot":"select-item",className:a("relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:outline-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",t),...n,children:[jsx("span",{className:"pointer-events-none absolute right-2 flex size-4 items-center justify-center",children:jsx(Select.ItemIndicator,{children:jsx(b,{className:"pointer-events-none"})})}),jsx(Select.ItemText,{children:e})]})}function Qt({className:t,...e}){return jsx(Select.Separator,{"data-slot":"select-separator",className:a("pointer-events-none -mx-1 my-1 h-px",t),...e})}function E({className:t,...e}){return jsx(Select.ScrollUpButton,{"data-slot":"select-scroll-up-button",className:a("z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4",t),...e,children:jsx(f,{})})}function H({className:t,...e}){return jsx(Select.ScrollDownButton,{"data-slot":"select-scroll-down-button",className:a("z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4",t),...e,children:jsx(c,{})})}function Wt({className:t,...e}){return jsx("div",{"data-slot":"skeleton",className:a("animate-pulse rounded-md",t),...e})}function Xt({className:t,...e}){return jsx("table",{"data-slot":"table",className:a("w-full border-collapse caption-bottom text-sm",t),...e})}function Yt({className:t,...e}){return jsx("thead",{"data-slot":"table-header",className:a("[&_tr]:border-b",t),...e})}function Zt({className:t,...e}){return jsx("tbody",{"data-slot":"table-body",className:a("[&_tr:last-child]:border-0",t),...e})}function $t({className:t,...e}){return jsx("tfoot",{"data-slot":"table-footer",className:a("border-t font-medium [&>tr]:last:border-b-0",t),...e})}function te({className:t,...e}){return jsx("tr",{"data-slot":"table-row",className:a("border-b transition-colors",t),...e})}function ee({className:t,...e}){return jsx("th",{"data-slot":"table-head",className:a("h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0",t),...e})}function oe({className:t,...e}){return jsx("td",{"data-slot":"table-cell",className:a("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0",t),...e})}function ne({className:t,...e}){return jsx("caption",{"data-slot":"table-caption",className:a("mt-4 text-sm opacity-80",t),...e})}function ae({delayDuration:t=0,...e}){return jsx(Tooltip.Provider,{"data-slot":"tooltip-provider",delayDuration:t,...e})}function re({...t}){return jsx(Tooltip.Root,{"data-slot":"tooltip",...t})}function ie({...t}){return jsx(Tooltip.Trigger,{"data-slot":"tooltip-trigger",...t})}function se({className:t,sideOffset:e=0,children:n,...a$1}){return jsx(Tooltip.Portal,{children:jsxs(Tooltip.Content,{"data-slot":"tooltip-content",sideOffset:e,className:a("z-50 inline-flex w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) items-center gap-1.5 rounded-md border px-3 py-1.5 text-xs has-data-[slot=kbd]:pr-1.5 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 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",t),...a$1,children:[n,jsx(Tooltip.Arrow,{className:"z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]"})]})})}var un={Button:g,ButtonGroup:Y,ButtonGroupSeparator:$,ButtonGroupText:Z,Card:tt,CardAction:at,CardContent:rt,CardDescription:nt,CardFooter:it,CardHeader:et,CardTitle:ot,Checkbox:lt,DropdownMenu:dt,DropdownMenuCheckboxItem:gt,DropdownMenuContent:ut,DropdownMenuGroup:mt,DropdownMenuItem:ft,DropdownMenuLabel:ht,DropdownMenuPortal:pt,DropdownMenuRadioGroup:bt,DropdownMenuRadioItem:vt,DropdownMenuSeparator:Pt,DropdownMenuShortcut:xt,DropdownMenuSub:wt,DropdownMenuSubContent:Ct,DropdownMenuSubTrigger:yt,DropdownMenuTrigger:ct,Empty:Rt,EmptyContent:kt,EmptyDescription:It,EmptyHeader:St,EmptyMedia:zt,EmptyTitle:Nt,Input:A,InputGroup:k,InputGroupAddon:T,InputGroupInput:x,InputGroupText:Dt,Pagination:Mt,PaginationContent:Gt,PaginationEllipsis:Et,PaginationFirst:Lt,PaginationItem:_t,PaginationLast:Vt,PaginationLink:h,PaginationNext:At,PaginationPrevious:Bt,ScrollArea:Ht,ScrollBar:V,Select:Ut,SelectContent:jt,SelectGroup:Ft,SelectItem:Jt,SelectLabel:qt,SelectScrollDownButton:H,SelectScrollUpButton:E,SelectSeparator:Qt,SelectTrigger:Ot,SelectValue:Kt,Separator:N,Skeleton:Wt,Table:Xt,TableBody:Zt,TableCaption:ne,TableCell:oe,TableFooter:$t,TableHead:ee,TableHeader:Yt,TableRow:te,Tooltip:re,TooltipContent:se,TooltipProvider:ae,TooltipTrigger:ie};export{Mt as A,h as B,Bt as C,Lt as D,At as E,Vt as F,Ht as G,V as H,Ot as I,jt as J,qt as K,Jt as L,Qt as M,Wt as N,Xt as O,Yt as P,Zt as Q,$t as R,te as S,ee as T,oe as U,ne as V,se as W,un as X,g as a,N as b,tt as c,et as d,nt as e,rt as f,it as g,lt as h,ut as i,ft as j,gt as k,vt as l,ht as m,Pt as n,yt as o,Ct as p,Rt as q,St as r,zt as s,Nt as t,It as u,kt as v,k as w,x,T as y,A as z};//# sourceMappingURL=chunk-7EXRF7VC.js.map +//# sourceMappingURL=chunk-7EXRF7VC.js.map \ No newline at end of file diff --git a/dist/chunk-2V6RVOWX.js.map b/dist/chunk-7EXRF7VC.js.map similarity index 99% rename from dist/chunk-2V6RVOWX.js.map rename to dist/chunk-7EXRF7VC.js.map index f1a922a..340a7cc 100644 --- a/dist/chunk-2V6RVOWX.js.map +++ b/dist/chunk-7EXRF7VC.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/components/ui/button.tsx","../src/components/ui/separator.tsx","../src/components/ui/button-group.tsx","../src/components/ui/card.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/empty.tsx","../src/components/ui/input-base.ts","../src/components/ui/input-group.tsx","../src/components/ui/input.tsx","../src/components/ui/pagination.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/select.tsx","../src/components/ui/skeleton.tsx","../src/components/ui/table.tsx","../src/components/ui/tooltip.tsx","../src/core/primitive-ui-kit.ts"],"names":["buttonVariants","cva","Button","className","variant","size","asChild","props","Comp","Slot","jsx","cn","Separator","orientation","decorative","SeparatorPrimitive","buttonGroupVariants","ButtonGroup","ButtonGroupText","ButtonGroupSeparator","Card","CardHeader","CardTitle","CardDescription","CardAction","CardContent","CardFooter","Checkbox","CheckboxPrimitive","IconCheck","DropdownMenu","DropdownMenuPrimitive","DropdownMenuPortal","DropdownMenuTrigger","DropdownMenuContent","align","sideOffset","DropdownMenuGroup","DropdownMenuItem","inset","DropdownMenuCheckboxItem","children","checked","jsxs","DropdownMenuRadioGroup","DropdownMenuRadioItem","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuShortcut","DropdownMenuSub","DropdownMenuSubTrigger","IconChevronRight","DropdownMenuSubContent","Empty","EmptyHeader","emptyMediaVariants","EmptyMedia","EmptyTitle","EmptyDescription","EmptyContent","inputClassName","InputGroup","InputGroupInput","Tt","ref","InputGroupAddon","InputGroupText","Input","passwordToggle","type","showPassword","setShowPassword","event","current","IconEyeOff","IconEye","Pagination","PaginationContent","PaginationItem","PaginationLink","isActive","disabled","PaginationPrevious","showText","text","IconChevronLeft","PaginationFirst","IconChevronsLeft","PaginationNext","PaginationLast","IconChevronsRight","PaginationEllipsis","IconDots","ScrollArea","ScrollAreaPrimitive","ScrollBar","Select","SelectPrimitive","SelectGroup","SelectValue","SelectTrigger","IconSelector","SelectContent","position","SelectScrollUpButton","SelectScrollDownButton","SelectLabel","SelectItem","SelectSeparator","IconChevronUp","IconChevronDown","Skeleton","Table","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","TooltipProvider","delayDuration","TooltipPrimitive","Tooltip","TooltipTrigger","TooltipContent","primitiveUiKit"],"mappings":"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","file":"chunk-2V6RVOWX.js","sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:outline-none active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"\",\n outline: \"\",\n secondary: \"\",\n ghost: \"\",\n destructive: \"\",\n link: \"underline-offset-4 hover:underline\",\n },\n size: {\n default:\n \"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n xs: \"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n icon: \"size-8\",\n \"icon-xs\":\n \"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\":\n \"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg\",\n \"icon-lg\": \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps & {\n asChild?: boolean;\n }) {\n const Comp = asChild ? Slot.Root : \"button\";\n\n return (\n \n );\n}\n\nexport { Button, buttonVariants };\n","import * as React from \"react\";\nimport { Separator as SeparatorPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nexport { Separator };\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Separator } from \"./separator\";\n\nconst buttonGroupVariants = cva(\n \"flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal:\n \"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg!\",\n vertical:\n \"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg!\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n },\n);\n\nfunction ButtonGroup({\n className,\n orientation,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps) {\n return (\n \n );\n}\n\nfunction ButtonGroupText({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n asChild?: boolean;\n}) {\n const Comp = asChild ? Slot.Root : \"div\";\n\n return (\n \n );\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nexport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n buttonGroupVariants,\n};\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n};\n","import * as React from \"react\";\nimport { Checkbox as CheckboxPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\nimport { IconCheck } from \"../../core/icons\";\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n svg]:size-3.5\"\n >\n \n \n \n );\n}\n\nexport { Checkbox };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\nimport { IconCheck, IconChevronRight } from \"../../core/icons\";\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuContent({\n className,\n align = \"start\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n );\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n \n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n inset,\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n}) {\n return (\n \n \n \n \n \n \n {children}\n \n );\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n inset,\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n}) {\n return (\n \n \n \n \n \n \n {children}\n \n );\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n}) {\n return (\n \n );\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n \n );\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n}) {\n return (\n \n {children}\n \n \n );\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n};\n","import { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Empty({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nconst emptyMediaVariants = cva(\n \"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"flex size-8 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction EmptyMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps) {\n return (\n \n );\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n a]:underline [&>a]:underline-offset-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nexport {\n Empty,\n EmptyHeader,\n EmptyTitle,\n EmptyDescription,\n EmptyContent,\n EmptyMedia,\n};\n","export const inputClassName =\n \"h-8 w-full min-w-0 rounded-lg border px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:opacity-70 focus-visible:outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\";\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { inputClassName } from \"./input-base\";\n\ntype InputGroupAddonAlign =\n | \"inline-start\"\n | \"inline-end\"\n | \"block-start\"\n | \"block-end\";\n\nfunction InputGroup({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n [data-slot=input-group-addon][data-align=block-start]]:flex-col has-[>[data-slot=input-group-addon][data-align=block-end]]:flex-col has-[>[data-slot=input-group-control]:disabled]:cursor-not-allowed has-[>[data-slot=input-group-control]:disabled]:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nconst InputGroupInput = React.forwardRef<\n HTMLInputElement,\n React.ComponentProps<\"input\">\n>(function InputGroupInput({ className, ...props }, ref) {\n return (\n \n );\n});\n\ntype InputGroupAddonProps = React.ComponentProps<\"div\"> & {\n align?: InputGroupAddonAlign;\n};\n\nfunction InputGroupAddon({\n align = \"inline-start\",\n className,\n ...props\n}: InputGroupAddonProps) {\n return (\n \n );\n}\n\nfunction InputGroupText({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n \n );\n}\n\nInputGroupInput.displayName = \"InputGroupInput\";\n\nexport { InputGroup, InputGroupAddon, InputGroupInput, InputGroupText };\n","import * as React from \"react\";\nimport { IconEye, IconEyeOff } from \"../../core/icons\";\n\nimport { Button } from \"./button\";\nimport { inputClassName } from \"./input-base\";\nimport { InputGroup, InputGroupAddon, InputGroupInput } from \"./input-group\";\nimport { cn } from \"../../lib/utils\";\n\ntype InputProps = React.ComponentProps<\"input\"> & {\n passwordToggle?: boolean;\n};\n\nconst Input = React.forwardRef(function Input(\n { className, passwordToggle = false, type, ...props },\n ref,\n) {\n const [showPassword, setShowPassword] = React.useState(false);\n const canTogglePassword = passwordToggle && type === \"password\";\n\n if (!canTogglePassword) {\n return (\n \n );\n }\n\n return (\n \n \n \n event.preventDefault()}\n onClick={() => setShowPassword((current) => !current)}\n >\n {showPassword ? (\n \n ) : (\n \n )}\n \n \n \n );\n});\n\nInput.displayName = \"Input\";\n\nexport { Input };\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"./button\";\nimport {\n IconChevronsLeft,\n IconChevronsRight,\n IconChevronLeft,\n IconChevronRight,\n IconDots,\n} from \"../../core/icons\";\n\nfunction Pagination({ className, ...props }: React.ComponentProps<\"nav\">) {\n return (\n \n );\n}\n\nfunction PaginationContent({\n className,\n ...props\n}: React.ComponentProps<\"ul\">) {\n return (\n \n );\n}\n\nfunction PaginationItem({ ...props }: React.ComponentProps<\"li\">) {\n return
  • ;\n}\n\ntype PaginationLinkProps = {\n isActive?: boolean;\n disabled?: boolean;\n variant?: React.ComponentProps[\"variant\"];\n} & Pick, \"size\"> &\n React.ComponentProps<\"a\">;\n\nfunction PaginationLink({\n className,\n isActive,\n disabled = false,\n variant,\n size = \"icon\",\n ...props\n}: PaginationLinkProps) {\n return (\n \n \n \n );\n}\n\nfunction PaginationPrevious({\n className,\n disabled,\n showText = true,\n size = \"default\",\n text = \"Previous\",\n ...props\n}: React.ComponentProps & {\n showText?: boolean;\n text?: string;\n}) {\n return (\n \n \n {showText ? {text} : null}\n \n );\n}\n\nfunction PaginationFirst({\n className,\n disabled,\n showText = true,\n size = \"default\",\n text = \"First\",\n ...props\n}: React.ComponentProps & {\n showText?: boolean;\n text?: string;\n}) {\n return (\n \n \n {showText ? {text} : null}\n \n );\n}\n\nfunction PaginationNext({\n className,\n disabled,\n showText = true,\n size = \"default\",\n text = \"Next\",\n ...props\n}: React.ComponentProps & {\n showText?: boolean;\n text?: string;\n}) {\n return (\n \n {showText ? {text} : null}\n \n \n );\n}\n\nfunction PaginationLast({\n className,\n disabled,\n showText = true,\n size = \"default\",\n text = \"Last\",\n ...props\n}: React.ComponentProps & {\n showText?: boolean;\n text?: string;\n}) {\n return (\n \n {showText ? {text} : null}\n \n \n );\n}\n\nfunction PaginationEllipsis({\n className,\n text = \"More pages\",\n ...props\n}: React.ComponentProps<\"span\"> & { text?: string }) {\n return (\n \n \n {text}\n \n );\n}\n\nexport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n};\n","import * as React from \"react\";\nimport { ScrollArea as ScrollAreaPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n {children}\n \n \n \n \n );\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n );\n}\n\nexport { ScrollArea, ScrollBar };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Select as SelectPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\nimport {\n IconSelector,\n IconCheck,\n IconChevronUp,\n IconChevronDown,\n} from \"../../core/icons\";\n\nfunction Select({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction SelectGroup({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n \n {children}\n \n \n \n \n );\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"item-aligned\",\n align = \"center\",\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n \n {children}\n \n \n \n \n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n \n \n \n {children}\n \n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n","import { cn } from \"../../lib/utils\";\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nexport { Skeleton };\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n \n );\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n \n );\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n \n );\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n tr]:last:border-b-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n \n );\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n \n );\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n \n );\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n \n );\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Tooltip as TooltipPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n {children}\n \n \n \n );\n}\n\nexport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };\n","import type { DataTableUiKit } from \"./ui-kit\";\nimport { Button } from \"../components/ui/button\";\nimport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n} from \"../components/ui/button-group\";\nimport {\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"../components/ui/card\";\nimport { Checkbox } from \"../components/ui/checkbox\";\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from \"../components/ui/dropdown-menu\";\nimport {\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n} from \"../components/ui/empty\";\nimport { Input } from \"../components/ui/input\";\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n InputGroupText,\n} from \"../components/ui/input-group\";\nimport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n} from \"../components/ui/pagination\";\nimport { ScrollArea, ScrollBar } from \"../components/ui/scroll-area\";\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n} from \"../components/ui/select\";\nimport { Separator } from \"../components/ui/separator\";\nimport { Skeleton } from \"../components/ui/skeleton\";\nimport {\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n} from \"../components/ui/table\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../components/ui/tooltip\";\n\nexport const primitiveUiKit: DataTableUiKit = {\n Button,\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n Checkbox,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n Input,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n InputGroupText,\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n ScrollArea,\n ScrollBar,\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n Separator,\n Skeleton,\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n};\n\nexport {\n Button,\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n Checkbox,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n Input,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n InputGroupText,\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n ScrollArea,\n ScrollBar,\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n Separator,\n Skeleton,\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n};\n"]} \ No newline at end of file +{"version":3,"sources":["../src/components/ui/button.tsx","../src/components/ui/separator.tsx","../src/components/ui/button-group.tsx","../src/components/ui/card.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/empty.tsx","../src/components/ui/input-base.ts","../src/components/ui/input-group.tsx","../src/components/ui/input.tsx","../src/components/ui/pagination.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/select.tsx","../src/components/ui/skeleton.tsx","../src/components/ui/table.tsx","../src/components/ui/tooltip.tsx","../src/core/primitive-ui-kit.ts"],"names":["buttonVariants","cva","Button","className","variant","size","asChild","props","Comp","Slot","jsx","cn","Separator","orientation","decorative","SeparatorPrimitive","buttonGroupVariants","ButtonGroup","ButtonGroupText","ButtonGroupSeparator","Card","CardHeader","CardTitle","CardDescription","CardAction","CardContent","CardFooter","Checkbox","CheckboxPrimitive","IconCheck","DropdownMenu","DropdownMenuPrimitive","DropdownMenuPortal","DropdownMenuTrigger","DropdownMenuContent","align","sideOffset","DropdownMenuGroup","DropdownMenuItem","inset","DropdownMenuCheckboxItem","children","checked","jsxs","DropdownMenuRadioGroup","DropdownMenuRadioItem","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuShortcut","DropdownMenuSub","DropdownMenuSubTrigger","IconChevronRight","DropdownMenuSubContent","Empty","EmptyHeader","emptyMediaVariants","EmptyMedia","EmptyTitle","EmptyDescription","EmptyContent","inputClassName","InputGroup","InputGroupInput","Tt","ref","InputGroupAddon","InputGroupText","Input","passwordToggle","type","showPassword","setShowPassword","event","current","IconEyeOff","IconEye","Pagination","PaginationContent","PaginationItem","PaginationLink","isActive","disabled","PaginationPrevious","showText","text","IconChevronLeft","PaginationFirst","IconChevronsLeft","PaginationNext","PaginationLast","IconChevronsRight","PaginationEllipsis","IconDots","ScrollArea","ScrollAreaPrimitive","ScrollBar","Select","SelectPrimitive","SelectGroup","SelectValue","SelectTrigger","IconSelector","SelectContent","position","SelectScrollUpButton","SelectScrollDownButton","SelectLabel","SelectItem","SelectSeparator","IconChevronUp","IconChevronDown","Skeleton","Table","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","TooltipProvider","delayDuration","TooltipPrimitive","Tooltip","TooltipTrigger","TooltipContent","primitiveUiKit"],"mappings":"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","file":"chunk-7EXRF7VC.js","sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:outline-none active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"\",\n outline: \"\",\n secondary: \"\",\n ghost: \"\",\n destructive: \"\",\n link: \"underline-offset-4 hover:underline\",\n },\n size: {\n default:\n \"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n xs: \"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n icon: \"size-8\",\n \"icon-xs\":\n \"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\":\n \"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg\",\n \"icon-lg\": \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps & {\n asChild?: boolean;\n }) {\n const Comp = asChild ? Slot.Root : \"button\";\n\n return (\n \n );\n}\n\nexport { Button, buttonVariants };\n","import * as React from \"react\";\nimport { Separator as SeparatorPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nexport { Separator };\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Separator } from \"./separator\";\n\nconst buttonGroupVariants = cva(\n \"flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal:\n \"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg!\",\n vertical:\n \"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg!\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n },\n);\n\nfunction ButtonGroup({\n className,\n orientation,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps) {\n return (\n \n );\n}\n\nfunction ButtonGroupText({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n asChild?: boolean;\n}) {\n const Comp = asChild ? Slot.Root : \"div\";\n\n return (\n \n );\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nexport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n buttonGroupVariants,\n};\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n};\n","import * as React from \"react\";\nimport { Checkbox as CheckboxPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\nimport { IconCheck } from \"../../core/icons\";\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n svg]:size-3.5\"\n >\n \n \n \n );\n}\n\nexport { Checkbox };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\nimport { IconCheck, IconChevronRight } from \"../../core/icons\";\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuContent({\n className,\n align = \"start\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n );\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n \n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n inset,\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n}) {\n return (\n \n \n \n \n \n \n {children}\n \n );\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n inset,\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n}) {\n return (\n \n \n \n \n \n \n {children}\n \n );\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n}) {\n return (\n \n );\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n \n );\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n}) {\n return (\n \n {children}\n \n \n );\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n};\n","import { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Empty({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nconst emptyMediaVariants = cva(\n \"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"flex size-8 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction EmptyMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps) {\n return (\n \n );\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n a]:underline [&>a]:underline-offset-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nexport {\n Empty,\n EmptyHeader,\n EmptyTitle,\n EmptyDescription,\n EmptyContent,\n EmptyMedia,\n};\n","export const inputClassName =\n \"h-8 w-full min-w-0 rounded-lg border px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:opacity-70 focus-visible:outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\";\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { inputClassName } from \"./input-base\";\n\ntype InputGroupAddonAlign =\n | \"inline-start\"\n | \"inline-end\"\n | \"block-start\"\n | \"block-end\";\n\nfunction InputGroup({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n [data-slot=input-group-addon][data-align=block-start]]:flex-col has-[>[data-slot=input-group-addon][data-align=block-end]]:flex-col has-[>[data-slot=input-group-control]:disabled]:cursor-not-allowed has-[>[data-slot=input-group-control]:disabled]:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nconst InputGroupInput = React.forwardRef<\n HTMLInputElement,\n React.ComponentProps<\"input\">\n>(function InputGroupInput({ className, ...props }, ref) {\n return (\n \n );\n});\n\ntype InputGroupAddonProps = React.ComponentProps<\"div\"> & {\n align?: InputGroupAddonAlign;\n};\n\nfunction InputGroupAddon({\n align = \"inline-start\",\n className,\n ...props\n}: InputGroupAddonProps) {\n return (\n \n );\n}\n\nfunction InputGroupText({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n \n );\n}\n\nInputGroupInput.displayName = \"InputGroupInput\";\n\nexport { InputGroup, InputGroupAddon, InputGroupInput, InputGroupText };\n","import * as React from \"react\";\nimport { IconEye, IconEyeOff } from \"../../core/icons\";\n\nimport { Button } from \"./button\";\nimport { inputClassName } from \"./input-base\";\nimport { InputGroup, InputGroupAddon, InputGroupInput } from \"./input-group\";\nimport { cn } from \"../../lib/utils\";\n\ntype InputProps = React.ComponentProps<\"input\"> & {\n passwordToggle?: boolean;\n};\n\nconst Input = React.forwardRef(function Input(\n { className, passwordToggle = false, type, ...props },\n ref,\n) {\n const [showPassword, setShowPassword] = React.useState(false);\n const canTogglePassword = passwordToggle && type === \"password\";\n\n if (!canTogglePassword) {\n return (\n \n );\n }\n\n return (\n \n \n \n event.preventDefault()}\n onClick={() => setShowPassword((current) => !current)}\n >\n {showPassword ? (\n \n ) : (\n \n )}\n \n \n \n );\n});\n\nInput.displayName = \"Input\";\n\nexport { Input };\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"./button\";\nimport {\n IconChevronsLeft,\n IconChevronsRight,\n IconChevronLeft,\n IconChevronRight,\n IconDots,\n} from \"../../core/icons\";\n\nfunction Pagination({ className, ...props }: React.ComponentProps<\"nav\">) {\n return (\n \n );\n}\n\nfunction PaginationContent({\n className,\n ...props\n}: React.ComponentProps<\"ul\">) {\n return (\n \n );\n}\n\nfunction PaginationItem({ ...props }: React.ComponentProps<\"li\">) {\n return
  • ;\n}\n\ntype PaginationLinkProps = {\n isActive?: boolean;\n disabled?: boolean;\n variant?: React.ComponentProps[\"variant\"];\n} & Pick, \"size\"> &\n React.ComponentProps<\"a\">;\n\nfunction PaginationLink({\n className,\n isActive,\n disabled = false,\n variant,\n size = \"icon\",\n ...props\n}: PaginationLinkProps) {\n return (\n \n \n \n );\n}\n\nfunction PaginationPrevious({\n className,\n disabled,\n showText = true,\n size = \"default\",\n text = \"Previous\",\n ...props\n}: React.ComponentProps & {\n showText?: boolean;\n text?: string;\n}) {\n return (\n \n \n {showText ? {text} : null}\n \n );\n}\n\nfunction PaginationFirst({\n className,\n disabled,\n showText = true,\n size = \"default\",\n text = \"First\",\n ...props\n}: React.ComponentProps & {\n showText?: boolean;\n text?: string;\n}) {\n return (\n \n \n {showText ? {text} : null}\n \n );\n}\n\nfunction PaginationNext({\n className,\n disabled,\n showText = true,\n size = \"default\",\n text = \"Next\",\n ...props\n}: React.ComponentProps & {\n showText?: boolean;\n text?: string;\n}) {\n return (\n \n {showText ? {text} : null}\n \n \n );\n}\n\nfunction PaginationLast({\n className,\n disabled,\n showText = true,\n size = \"default\",\n text = \"Last\",\n ...props\n}: React.ComponentProps & {\n showText?: boolean;\n text?: string;\n}) {\n return (\n \n {showText ? {text} : null}\n \n \n );\n}\n\nfunction PaginationEllipsis({\n className,\n text = \"More pages\",\n ...props\n}: React.ComponentProps<\"span\"> & { text?: string }) {\n return (\n \n \n {text}\n \n );\n}\n\nexport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n};\n","import * as React from \"react\";\nimport { ScrollArea as ScrollAreaPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n {children}\n \n \n \n \n );\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n );\n}\n\nexport { ScrollArea, ScrollBar };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Select as SelectPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\nimport {\n IconSelector,\n IconCheck,\n IconChevronUp,\n IconChevronDown,\n} from \"../../core/icons\";\n\nfunction Select({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction SelectGroup({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n \n {children}\n \n \n \n \n );\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"item-aligned\",\n align = \"center\",\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n \n {children}\n \n \n \n \n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n \n \n \n {children}\n \n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n","import { cn } from \"../../lib/utils\";\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nexport { Skeleton };\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n \n );\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n \n );\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n \n );\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n tr]:last:border-b-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n \n );\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n \n );\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n \n );\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n \n );\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Tooltip as TooltipPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n {children}\n \n \n \n );\n}\n\nexport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };\n","import type { DataTableUiKit } from \"./ui-kit\";\nimport { Button } from \"../components/ui/button\";\nimport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n} from \"../components/ui/button-group\";\nimport {\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"../components/ui/card\";\nimport { Checkbox } from \"../components/ui/checkbox\";\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from \"../components/ui/dropdown-menu\";\nimport {\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n} from \"../components/ui/empty\";\nimport { Input } from \"../components/ui/input\";\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n InputGroupText,\n} from \"../components/ui/input-group\";\nimport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n} from \"../components/ui/pagination\";\nimport { ScrollArea, ScrollBar } from \"../components/ui/scroll-area\";\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n} from \"../components/ui/select\";\nimport { Separator } from \"../components/ui/separator\";\nimport { Skeleton } from \"../components/ui/skeleton\";\nimport {\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n} from \"../components/ui/table\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../components/ui/tooltip\";\n\nexport const primitiveUiKit: DataTableUiKit = {\n Button,\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n Checkbox,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n Input,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n InputGroupText,\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n ScrollArea,\n ScrollBar,\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n Separator,\n Skeleton,\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n};\n\nexport {\n Button,\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n Checkbox,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n Input,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n InputGroupText,\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n ScrollArea,\n ScrollBar,\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n Separator,\n Skeleton,\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n};\n"]} \ No newline at end of file diff --git a/dist/chunk-7NEQYX7P.js.map b/dist/chunk-7NEQYX7P.js.map deleted file mode 100644 index 772391b..0000000 --- a/dist/chunk-7NEQYX7P.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/adapters/shadcn/index.tsx"],"names":["withClassName","Component","defaultClassName","className","props","jsx","cn","ShadcnButton","Button","ShadcnCard","Card","ShadcnCardDescription","CardDescription","ShadcnCardFooter","CardFooter","ShadcnCheckbox","Checkbox","ShadcnDropdownMenuContent","DropdownMenuContent","ShadcnDropdownMenuItem","DropdownMenuItem","ShadcnDropdownMenuCheckboxItem","DropdownMenuCheckboxItem","ShadcnDropdownMenuRadioItem","DropdownMenuRadioItem","ShadcnDropdownMenuLabel","DropdownMenuLabel","ShadcnDropdownMenuSeparator","DropdownMenuSeparator","ShadcnDropdownMenuSubContent","DropdownMenuSubContent","ShadcnDropdownMenuSubTrigger","DropdownMenuSubTrigger","ShadcnEmpty","Empty","ShadcnEmptyDescription","EmptyDescription","ShadcnEmptyMedia","EmptyMedia","ShadcnInput","Input","ShadcnInputGroup","InputGroup","ShadcnInputGroupAddon","InputGroupAddon","ShadcnInputGroupInput","InputGroupInput","ShadcnScrollBar","ScrollBar","ShadcnSelectTrigger","SelectTrigger","ShadcnSelectContent","SelectContent","ShadcnSelectItem","SelectItem","ShadcnSelectLabel","SelectLabel","ShadcnSelectSeparator","SelectSeparator","ShadcnSeparator","Separator","ShadcnSkeleton","Skeleton","ShadcnTableFooter","TableFooter","ShadcnTableHead","TableHead","ShadcnTooltipContent","TooltipContent","shadcnUiKit","primitiveUiKit"],"mappings":"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","file":"chunk-7NEQYX7P.js","sourcesContent":["import * as React from \"react\";\nimport type { DataTableUiKit } from \"../../core/ui-kit\";\nimport {\n Button as PrimitiveButton,\n Card as PrimitiveCard,\n CardDescription as PrimitiveCardDescription,\n CardFooter as PrimitiveCardFooter,\n Checkbox as PrimitiveCheckbox,\n DropdownMenuCheckboxItem as PrimitiveDropdownMenuCheckboxItem,\n DropdownMenuContent as PrimitiveDropdownMenuContent,\n DropdownMenuItem as PrimitiveDropdownMenuItem,\n DropdownMenuLabel as PrimitiveDropdownMenuLabel,\n DropdownMenuRadioItem as PrimitiveDropdownMenuRadioItem,\n DropdownMenuSeparator as PrimitiveDropdownMenuSeparator,\n DropdownMenuSubContent as PrimitiveDropdownMenuSubContent,\n DropdownMenuSubTrigger as PrimitiveDropdownMenuSubTrigger,\n Empty as PrimitiveEmpty,\n EmptyDescription as PrimitiveEmptyDescription,\n EmptyMedia as PrimitiveEmptyMedia,\n Input as PrimitiveInput,\n InputGroup as PrimitiveInputGroup,\n InputGroupAddon as PrimitiveInputGroupAddon,\n InputGroupInput as PrimitiveInputGroupInput,\n ScrollBar as PrimitiveScrollBar,\n SelectContent as PrimitiveSelectContent,\n SelectItem as PrimitiveSelectItem,\n SelectLabel as PrimitiveSelectLabel,\n SelectSeparator as PrimitiveSelectSeparator,\n SelectTrigger as PrimitiveSelectTrigger,\n Separator as PrimitiveSeparator,\n Skeleton as PrimitiveSkeleton,\n TableFooter as PrimitiveTableFooter,\n TableHead as PrimitiveTableHead,\n TooltipContent as PrimitiveTooltipContent,\n primitiveUiKit,\n} from \"../../core/primitive-ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nfunction withClassName(\n Component: React.ComponentType,\n defaultClassName: string,\n) {\n return function Wrapped({ className, ...props }: TProps) {\n return (\n \n );\n };\n}\n\nconst ShadcnButton = withClassName(\n PrimitiveButton,\n \"rounded-md text-foreground data-[variant=default]:border-primary data-[variant=default]:bg-primary data-[variant=default]:text-primary-foreground data-[variant=outline]:border-input data-[variant=outline]:bg-card data-[variant=outline]:hover:bg-accent data-[variant=outline]:hover:text-accent-foreground data-[variant=secondary]:border-secondary data-[variant=secondary]:bg-secondary data-[variant=secondary]:text-secondary-foreground data-[variant=ghost]:border-transparent data-[variant=ghost]:bg-transparent data-[variant=ghost]:hover:bg-accent data-[variant=ghost]:hover:text-accent-foreground data-[variant=destructive]:border-destructive data-[variant=destructive]:bg-destructive data-[variant=destructive]:text-destructive-foreground data-[variant=link]:border-transparent data-[variant=link]:bg-transparent\",\n);\nconst ShadcnCard = withClassName(\n PrimitiveCard,\n \"rounded-xl border-border bg-card text-card-foreground shadow-sm ring-0\",\n);\nconst ShadcnCardDescription = withClassName(\n PrimitiveCardDescription,\n \"text-muted-foreground\",\n);\nconst ShadcnCardFooter = withClassName(\n PrimitiveCardFooter,\n \"border-t border-border/60 bg-muted/50\",\n);\nconst ShadcnCheckbox = withClassName(\n PrimitiveCheckbox,\n \"border-input bg-card ring-ring/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground data-checked:ring-primary\",\n);\nconst ShadcnDropdownMenuContent = withClassName(\n PrimitiveDropdownMenuContent,\n \"border-border bg-popover text-popover-foreground shadow-md\",\n);\nconst ShadcnDropdownMenuItem = withClassName(\n PrimitiveDropdownMenuItem,\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10\",\n);\nconst ShadcnDropdownMenuCheckboxItem = withClassName(\n PrimitiveDropdownMenuCheckboxItem,\n \"focus:bg-accent focus:text-accent-foreground\",\n);\nconst ShadcnDropdownMenuRadioItem = withClassName(\n PrimitiveDropdownMenuRadioItem,\n \"focus:bg-accent focus:text-accent-foreground\",\n);\nconst ShadcnDropdownMenuLabel = withClassName(\n PrimitiveDropdownMenuLabel,\n \"text-muted-foreground\",\n);\nconst ShadcnDropdownMenuSeparator = withClassName(\n PrimitiveDropdownMenuSeparator,\n \"bg-border\",\n);\nconst ShadcnDropdownMenuSubContent = withClassName(\n PrimitiveDropdownMenuSubContent,\n \"border-border bg-popover text-popover-foreground shadow-md\",\n);\nconst ShadcnDropdownMenuSubTrigger = withClassName(\n PrimitiveDropdownMenuSubTrigger,\n \"focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground\",\n);\nconst ShadcnEmpty = withClassName(\n PrimitiveEmpty,\n \"rounded-2xl border-border/60 bg-background/70\",\n);\nconst ShadcnEmptyDescription = withClassName(\n PrimitiveEmptyDescription,\n \"text-muted-foreground\",\n);\nconst ShadcnEmptyMedia = withClassName(\n PrimitiveEmptyMedia,\n \"[&[data-variant=icon]]:bg-muted [&[data-variant=icon]]:text-foreground\",\n);\nconst ShadcnInput = withClassName(\n PrimitiveInput,\n \"rounded-md border-input bg-card text-foreground placeholder:text-muted-foreground\",\n);\nconst ShadcnInputGroup = withClassName(\n PrimitiveInputGroup,\n \"rounded-md border-input bg-card text-foreground\",\n);\nconst ShadcnInputGroupAddon = withClassName(\n PrimitiveInputGroupAddon,\n \"text-muted-foreground\",\n);\nconst ShadcnInputGroupInput = withClassName(\n PrimitiveInputGroupInput,\n \"bg-transparent\",\n);\nconst ShadcnScrollBar = withClassName(\n PrimitiveScrollBar,\n \"[&>[data-slot=scroll-area-thumb]]:bg-border\",\n);\nconst ShadcnSelectTrigger = withClassName(\n PrimitiveSelectTrigger,\n \"rounded-md border-input bg-card text-foreground\",\n);\nconst ShadcnSelectContent = withClassName(\n PrimitiveSelectContent,\n \"border-border bg-popover text-popover-foreground shadow-md\",\n);\nconst ShadcnSelectItem = withClassName(\n PrimitiveSelectItem,\n \"focus:bg-accent focus:text-accent-foreground\",\n);\nconst ShadcnSelectLabel = withClassName(\n PrimitiveSelectLabel,\n \"text-muted-foreground\",\n);\nconst ShadcnSelectSeparator = withClassName(\n PrimitiveSelectSeparator,\n \"bg-border\",\n);\nconst ShadcnSeparator = withClassName(PrimitiveSeparator, \"bg-border\");\nconst ShadcnSkeleton = withClassName(PrimitiveSkeleton, \"bg-muted\");\nconst ShadcnTableFooter = withClassName(\n PrimitiveTableFooter,\n \"border-border bg-muted/50\",\n);\nconst ShadcnTableHead = withClassName(\n PrimitiveTableHead,\n \"text-foreground\",\n);\nconst ShadcnTooltipContent = withClassName(\n PrimitiveTooltipContent,\n \"bg-foreground text-background ring-1 ring-foreground/10 [&>svg]:bg-foreground [&>svg]:fill-foreground\",\n);\n\nexport const shadcnUiKit: DataTableUiKit = {\n ...primitiveUiKit,\n rootClassName: \"dtp-shadcn\",\n classNames: {\n card: \"hover:bg-muted/50 data-[state=selected]:bg-primary/10\",\n cardGrid: \"bg-transparent\",\n cardItem: \"min-w-0\",\n cardOverlay: \"from-background/95 via-background/85 to-transparent\",\n cardScrollArea: \"bg-transparent\",\n cardSelected: \"bg-primary/10 ring-primary\",\n cardUnselected: \"border-border\",\n cardViewport: \"bg-transparent\",\n cellBorder: \"border-border/40\",\n dragActive: \"rounded-md border-dashed border-primary\",\n emptyState: \"border-border/60 bg-background/70\",\n footer: \"border-border bg-card\",\n headerSortIcon: \"text-muted-foreground\",\n mutedText: \"text-muted-foreground\",\n paginationSelectTrigger: \"border-input bg-card\",\n paginationTotal: \"text-muted-foreground\",\n pinnedColumn: \"border-border\",\n pinnedUtilityColumn: \"bg-card\",\n resizeHandle: \"after:bg-border hover:after:bg-primary\",\n resizeHandleActive: \"after:bg-primary\",\n row: \"hover:bg-muted/50 data-[state=selected]:!bg-primary/10\",\n rowSelected: \"!bg-primary/10\",\n tableContainer: \"border-border bg-card text-card-foreground\",\n tableStickyHeader:\n \"sticky top-0 z-30 bg-card/95 backdrop-blur [&_th]:border-border [&_th]:bg-card/95\",\n toolbarCompactIconButton: \"size-7\",\n toolbarIconButton: \"text-muted-foreground hover:text-foreground\",\n toolbarInputButton: \"border-input bg-card\",\n },\n Button: ShadcnButton,\n Card: ShadcnCard,\n CardDescription: ShadcnCardDescription,\n CardFooter: ShadcnCardFooter,\n Checkbox: ShadcnCheckbox,\n DropdownMenuCheckboxItem: ShadcnDropdownMenuCheckboxItem,\n DropdownMenuContent: ShadcnDropdownMenuContent,\n DropdownMenuItem: ShadcnDropdownMenuItem,\n DropdownMenuLabel: ShadcnDropdownMenuLabel,\n DropdownMenuRadioItem: ShadcnDropdownMenuRadioItem,\n DropdownMenuSeparator: ShadcnDropdownMenuSeparator,\n DropdownMenuSubContent: ShadcnDropdownMenuSubContent,\n DropdownMenuSubTrigger: ShadcnDropdownMenuSubTrigger,\n Empty: ShadcnEmpty,\n EmptyDescription: ShadcnEmptyDescription,\n EmptyMedia: ShadcnEmptyMedia,\n Input: ShadcnInput,\n InputGroup: ShadcnInputGroup,\n InputGroupAddon: ShadcnInputGroupAddon,\n InputGroupInput: ShadcnInputGroupInput,\n ScrollBar: ShadcnScrollBar,\n SelectContent: ShadcnSelectContent,\n SelectItem: ShadcnSelectItem,\n SelectLabel: ShadcnSelectLabel,\n SelectSeparator: ShadcnSelectSeparator,\n SelectTrigger: ShadcnSelectTrigger,\n Separator: ShadcnSeparator,\n Skeleton: ShadcnSkeleton,\n TableFooter: ShadcnTableFooter,\n TableHead: ShadcnTableHead,\n TooltipContent: ShadcnTooltipContent,\n};\n"]} \ No newline at end of file diff --git a/dist/chunk-GTOBHZ7L.js b/dist/chunk-A2VV3NIL.js similarity index 67% rename from dist/chunk-GTOBHZ7L.js rename to dist/chunk-A2VV3NIL.js index 58d2de5..37f9d4f 100644 --- a/dist/chunk-GTOBHZ7L.js +++ b/dist/chunk-A2VV3NIL.js @@ -1,2 +1,2 @@ -import {X as X$1,a as a$1,c,d,f,h,i,j,k,l,m,n,p,o,z,w,y,x,A,B,D,C,E,F,G,H,I,J,L,b,N,O,P,Q,R,T,S,U,W,q,r,s,t,u,v}from'./chunk-2V6RVOWX.js';import {a}from'./chunk-ZF4EP4WP.js';import'react';import {jsx}from'react/jsx-runtime';function e(j,q){return function({className:J,...Q}){return jsx(j,{className:a(q,J),...Q})}}var X=e(a$1,"rounded-field border-field-border shadow-field data-[variant=default]:bg-accent data-[variant=default]:text-accent-foreground data-[variant=outline]:border-field-border data-[variant=outline]:bg-field data-[variant=outline]:hover:bg-field-hover data-[variant=secondary]:bg-default data-[variant=secondary]:text-default-foreground data-[variant=ghost]:hover:bg-default data-[variant=destructive]:bg-danger-soft data-[variant=destructive]:text-danger"),Y=e(c,"rounded-2xl border border-separator bg-surface text-surface-foreground shadow-surface ring-0"),Z=e(d,"px-5 pt-5 pb-3"),ee=e(f,"px-5 pb-5"),re=e(h,"rounded-field border-field-border bg-field ring-focus/40 data-checked:bg-accent data-checked:text-accent-foreground data-checked:ring-focus"),te=e(i,"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden **:data-[slot$=-item]:focus:bg-default **:data-[slot$=-item]:data-highlighted:bg-default **:data-[slot$=-separator]:bg-separator **:data-[slot$=-trigger]:focus:bg-default"),oe=e(j,"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground data-[variant=destructive]:text-danger data-[variant=destructive]:focus:bg-danger-soft"),ae=e(k,"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground"),ne=e(l,"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground"),de=e(m,"text-muted"),ie=e(n,"bg-separator"),le=e(p,"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden"),se=e(o,"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground data-open:bg-default data-open:text-overlay-foreground"),ue=e(z,"rounded-field border-field-border bg-field text-field-foreground shadow-field placeholder:text-field-placeholder"),ce=e(w,"rounded-field border-field-border bg-field text-field-foreground shadow-field"),be=e(y,"text-muted"),ge=e(x,"bg-transparent"),pe=e(A,"justify-end"),fe=e(B,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover data-[active=true]:bg-accent data-[active=true]:text-accent-foreground"),me=e(D,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover"),ve=e(C,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover"),xe=e(E,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover"),Pe=e(F,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover"),ye=e(G,"rounded-2xl"),He=e(H,"[&>[data-slot=scroll-area-thumb]]:bg-default-500"),he=e(I,"rounded-field border-field-border bg-field text-field-foreground shadow-field"),Ce=e(J,"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden"),Te=e(L,"rounded-xl focus:bg-default"),we=e(b,"bg-separator"),Se=e(N,"rounded-xl bg-default"),Ie=e(O,"rounded-2xl text-foreground"),De=e(P,"[&_tr]:border-separator"),Me=e(Q,""),Ee=e(R,"border-separator bg-surface-secondary"),ke=e(T,"h-11 border-separator text-muted font-semibold"),Be=e(S,"border-separator hover:bg-default data-[state=selected]:bg-accent-soft"),Ge=e(U,"py-2.5"),Ae=e(W,"rounded-xl bg-overlay text-overlay-foreground ring-1 ring-separator shadow-overlay [&>svg]:bg-overlay [&>svg]:fill-overlay"),Le=e(q,"rounded-2xl border-separator bg-surface shadow-surface"),Re=e(r,""),Ne=e(s,"[&[data-variant=icon]]:rounded-2xl [&[data-variant=icon]]:bg-accent-soft [&[data-variant=icon]]:text-accent-soft-foreground"),Fe=e(t,"text-foreground"),Ue=e(u,"text-muted"),ze=e(v,""),We={...X$1,rootClassName:"dtp-heroui",classNames:{card:"hover:bg-default data-[state=selected]:bg-accent-soft",cardGrid:"bg-transparent",cardItem:"min-w-0",cardOverlay:"from-surface/95 via-surface/85 to-transparent",cardScrollArea:"bg-transparent",cardSelected:"bg-accent-soft ring-accent",cardUnselected:"border-separator",cardViewport:"bg-transparent",cellBorder:"border-separator/70",dragActive:"rounded-2xl border-dashed border-accent",emptyState:"border-separator bg-surface",footer:"border-separator bg-surface text-surface-foreground",headerSortIcon:"text-muted",mutedText:"text-muted",paginationSelectTrigger:"border-field-border bg-field",paginationTotal:"text-muted",pinnedColumn:"border-separator",pinnedUtilityColumn:"bg-surface",resizeHandle:"after:bg-separator hover:after:bg-accent",resizeHandleActive:"after:bg-accent",row:"hover:bg-default data-[state=selected]:!bg-accent-soft",rowSelected:"!bg-accent-soft",tableContainer:"border-separator bg-surface text-surface-foreground",tableScrollArea:"bg-surface",tableStickyHeader:"sticky top-0 z-30 bg-surface/95 backdrop-blur [&_th]:border-separator [&_th]:bg-surface/95",toolbarCompactIconButton:"size-7",toolbarIconButton:"text-muted hover:text-foreground",toolbarInputButton:"bg-field"},Button:X,Card:Y,CardContent:ee,CardHeader:Z,Checkbox:re,DropdownMenuCheckboxItem:ae,DropdownMenuContent:te,DropdownMenuItem:oe,DropdownMenuLabel:de,DropdownMenuRadioItem:ne,DropdownMenuSeparator:ie,DropdownMenuSubContent:le,DropdownMenuSubTrigger:se,Empty:Le,EmptyContent:ze,EmptyDescription:Ue,EmptyHeader:Re,EmptyMedia:Ne,EmptyTitle:Fe,Input:ue,InputGroup:ce,InputGroupAddon:be,InputGroupInput:ge,Pagination:pe,PaginationFirst:me,PaginationLast:Pe,PaginationLink:fe,PaginationNext:xe,PaginationPrevious:ve,ScrollArea:ye,ScrollBar:He,SelectContent:Ce,SelectItem:Te,SelectTrigger:he,Separator:we,Skeleton:Se,Table:Ie,TableBody:Me,TableCell:Ge,TableFooter:Ee,TableHead:ke,TableHeader:De,TableRow:Be,TooltipContent:Ae};export{We as a};//# sourceMappingURL=chunk-GTOBHZ7L.js.map -//# sourceMappingURL=chunk-GTOBHZ7L.js.map \ No newline at end of file +import {X as X$1,a as a$1,c,d,f,h,i,j,k,l,m,n,p,o,z,w,y,x,A,B,D,C,E,F,G,H,I,J,L,b,N,O,P,Q,R,T,S,U,W,q,r,s,t,u,v}from'./chunk-7EXRF7VC.js';import {a}from'./chunk-PFB5LOU7.js';import'react';import {jsx}from'react/jsx-runtime';function e(j,q){return function({className:J,...Q}){return jsx(j,{className:a(q,J),...Q})}}var X=e(a$1,"rounded-field border-field-border shadow-field data-[variant=default]:bg-accent data-[variant=default]:text-accent-foreground data-[variant=outline]:border-field-border data-[variant=outline]:bg-field data-[variant=outline]:hover:bg-field-hover data-[variant=secondary]:bg-default data-[variant=secondary]:text-default-foreground data-[variant=ghost]:hover:bg-default data-[variant=destructive]:bg-danger-soft data-[variant=destructive]:text-danger"),Y=e(c,"rounded-2xl border border-separator bg-surface text-surface-foreground shadow-surface ring-0"),Z=e(d,"px-5 pt-5 pb-3"),ee=e(f,"px-5 pb-5"),re=e(h,"rounded-field border-field-border bg-field ring-focus/40 data-checked:bg-accent data-checked:text-accent-foreground data-checked:ring-focus"),te=e(i,"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden **:data-[slot$=-item]:focus:bg-default **:data-[slot$=-item]:data-highlighted:bg-default **:data-[slot$=-separator]:bg-separator **:data-[slot$=-trigger]:focus:bg-default"),oe=e(j,"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground data-[variant=destructive]:text-danger data-[variant=destructive]:focus:bg-danger-soft"),ae=e(k,"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground"),ne=e(l,"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground"),de=e(m,"text-muted"),ie=e(n,"bg-separator"),le=e(p,"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden"),se=e(o,"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground data-open:bg-default data-open:text-overlay-foreground"),ue=e(z,"rounded-field border-field-border bg-field text-field-foreground shadow-field placeholder:text-field-placeholder"),ce=e(w,"rounded-field border-field-border bg-field text-field-foreground shadow-field"),be=e(y,"text-muted"),ge=e(x,"bg-transparent"),pe=e(A,"justify-end"),fe=e(B,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover data-[active=true]:bg-accent data-[active=true]:text-accent-foreground"),me=e(D,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover"),ve=e(C,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover"),xe=e(E,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover"),Pe=e(F,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover"),He=e(G,"rounded-2xl"),ye=e(H,"[&>[data-slot=scroll-area-thumb]]:bg-default-500"),he=e(I,"rounded-field border-field-border bg-field text-field-foreground shadow-field"),Ce=e(J,"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden"),Te=e(L,"rounded-xl focus:bg-default"),we=e(b,"bg-separator"),Se=e(N,"rounded-xl bg-default"),Ie=e(O,"rounded-2xl text-foreground"),De=e(P,"[&_tr]:border-separator"),Me=e(Q,""),Ee=e(R,"border-separator bg-surface-secondary"),ke=e(T,"h-11 border-separator text-muted font-semibold"),Be=e(S,"border-separator hover:bg-default data-[state=selected]:bg-accent-soft"),Ge=e(U,"py-2.5"),Ae=e(W,"rounded-xl bg-overlay text-overlay-foreground ring-1 ring-separator shadow-overlay [&>svg]:bg-overlay [&>svg]:fill-overlay"),Le=e(q,"rounded-2xl border-separator bg-surface shadow-surface"),Re=e(r,""),Ne=e(s,"[&[data-variant=icon]]:rounded-2xl [&[data-variant=icon]]:bg-accent-soft [&[data-variant=icon]]:text-accent-soft-foreground"),Fe=e(t,"text-foreground"),Ue=e(u,"text-muted"),ze=e(v,""),We={...X$1,rootClassName:"dtp-heroui",classNames:{card:"hover:bg-default data-[state=selected]:bg-accent-soft",cardGrid:"bg-transparent",cardItem:"min-w-0",cardOverlay:"from-surface/95 via-surface/85 to-transparent",cardScrollArea:"bg-transparent",cardSelected:"bg-accent-soft ring-accent",cardUnselected:"border-separator",cardViewport:"bg-transparent",cellBorder:"border-separator/70",columnGroupHeader:"bg-default/50 font-semibold",dragActive:"rounded-2xl border-dashed border-accent",emptyState:"border-separator bg-surface",footer:"border-separator bg-surface text-surface-foreground",headerSortIcon:"text-muted",mutedText:"text-muted",paginationSelectTrigger:"border-field-border bg-field",paginationTotal:"text-muted",pinnedColumn:"border-separator",pinnedUtilityColumn:"bg-surface",resizeHandle:"after:bg-separator hover:after:bg-accent",resizeHandleActive:"after:bg-accent",row:"hover:bg-default data-[state=selected]:!bg-accent-soft",rowSelected:"!bg-accent-soft",tableContainer:"border-separator bg-surface text-surface-foreground",tableScrollArea:"bg-surface",tableStickyHeader:"sticky top-0 z-30 bg-surface/95 backdrop-blur [&_th]:border-separator [&_th]:bg-surface/95",toolbarCompactIconButton:"size-7",toolbarIconButton:"text-muted hover:text-foreground",toolbarInputButton:"bg-field"},Button:X,Card:Y,CardContent:ee,CardHeader:Z,Checkbox:re,DropdownMenuCheckboxItem:ae,DropdownMenuContent:te,DropdownMenuItem:oe,DropdownMenuLabel:de,DropdownMenuRadioItem:ne,DropdownMenuSeparator:ie,DropdownMenuSubContent:le,DropdownMenuSubTrigger:se,Empty:Le,EmptyContent:ze,EmptyDescription:Ue,EmptyHeader:Re,EmptyMedia:Ne,EmptyTitle:Fe,Input:ue,InputGroup:ce,InputGroupAddon:be,InputGroupInput:ge,Pagination:pe,PaginationFirst:me,PaginationLast:Pe,PaginationLink:fe,PaginationNext:xe,PaginationPrevious:ve,ScrollArea:He,ScrollBar:ye,SelectContent:Ce,SelectItem:Te,SelectTrigger:he,Separator:we,Skeleton:Se,Table:Ie,TableBody:Me,TableCell:Ge,TableFooter:Ee,TableHead:ke,TableHeader:De,TableRow:Be,TooltipContent:Ae};export{We as a};//# sourceMappingURL=chunk-A2VV3NIL.js.map +//# sourceMappingURL=chunk-A2VV3NIL.js.map \ No newline at end of file diff --git a/dist/chunk-A2VV3NIL.js.map b/dist/chunk-A2VV3NIL.js.map new file mode 100644 index 0000000..7b1d30d --- /dev/null +++ b/dist/chunk-A2VV3NIL.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/adapters/heroui/index.tsx"],"names":["withClassName","Component","defaultClassName","className","props","jsx","cn","HeroButton","Button","HeroCard","Card","HeroCardHeader","CardHeader","HeroCardContent","CardContent","HeroCheckbox","Checkbox","HeroDropdownMenuContent","DropdownMenuContent","HeroDropdownMenuItem","DropdownMenuItem","HeroDropdownMenuCheckboxItem","DropdownMenuCheckboxItem","HeroDropdownMenuRadioItem","DropdownMenuRadioItem","HeroDropdownMenuLabel","DropdownMenuLabel","HeroDropdownMenuSeparator","DropdownMenuSeparator","HeroDropdownMenuSubContent","DropdownMenuSubContent","HeroDropdownMenuSubTrigger","DropdownMenuSubTrigger","HeroInput","Input","HeroInputGroup","InputGroup","HeroInputGroupAddon","InputGroupAddon","HeroInputGroupInput","InputGroupInput","HeroPagination","Pagination","HeroPaginationLink","PaginationLink","HeroPaginationFirst","PaginationFirst","HeroPaginationPrevious","PaginationPrevious","HeroPaginationNext","PaginationNext","HeroPaginationLast","PaginationLast","HeroScrollArea","ScrollArea","HeroScrollBar","ScrollBar","HeroSelectTrigger","SelectTrigger","HeroSelectContent","SelectContent","HeroSelectItem","SelectItem","HeroSeparator","Separator","HeroSkeleton","Skeleton","HeroTable","Table","HeroTableHeader","TableHeader","HeroTableBody","TableBody","HeroTableFooter","TableFooter","HeroTableHead","TableHead","HeroTableRow","TableRow","HeroTableCell","TableCell","HeroTooltipContent","TooltipContent","HeroEmpty","Empty","HeroEmptyHeader","EmptyHeader","HeroEmptyMedia","EmptyMedia","HeroEmptyTitle","EmptyTitle","HeroEmptyDescription","EmptyDescription","HeroEmptyContent","EmptyContent","heroUiKit","primitiveUiKit"],"mappings":"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","file":"chunk-A2VV3NIL.js","sourcesContent":["import * as React from \"react\";\nimport type { DataTableUiKit } from \"../../core/ui-kit\";\nimport {\n Button as PrimitiveButton,\n Card as PrimitiveCard,\n CardContent as PrimitiveCardContent,\n CardHeader as PrimitiveCardHeader,\n Checkbox as PrimitiveCheckbox,\n DropdownMenuCheckboxItem as PrimitiveDropdownMenuCheckboxItem,\n DropdownMenuContent as PrimitiveDropdownMenuContent,\n DropdownMenuItem as PrimitiveDropdownMenuItem,\n DropdownMenuLabel as PrimitiveDropdownMenuLabel,\n DropdownMenuRadioItem as PrimitiveDropdownMenuRadioItem,\n DropdownMenuSeparator as PrimitiveDropdownMenuSeparator,\n DropdownMenuSubContent as PrimitiveDropdownMenuSubContent,\n DropdownMenuSubTrigger as PrimitiveDropdownMenuSubTrigger,\n Empty as PrimitiveEmpty,\n EmptyContent as PrimitiveEmptyContent,\n EmptyDescription as PrimitiveEmptyDescription,\n EmptyHeader as PrimitiveEmptyHeader,\n EmptyMedia as PrimitiveEmptyMedia,\n EmptyTitle as PrimitiveEmptyTitle,\n Input as PrimitiveInput,\n InputGroup as PrimitiveInputGroup,\n InputGroupAddon as PrimitiveInputGroupAddon,\n InputGroupInput as PrimitiveInputGroupInput,\n Pagination as PrimitivePagination,\n PaginationFirst as PrimitivePaginationFirst,\n PaginationLast as PrimitivePaginationLast,\n PaginationLink as PrimitivePaginationLink,\n PaginationNext as PrimitivePaginationNext,\n PaginationPrevious as PrimitivePaginationPrevious,\n ScrollArea as PrimitiveScrollArea,\n ScrollBar as PrimitiveScrollBar,\n SelectContent as PrimitiveSelectContent,\n SelectItem as PrimitiveSelectItem,\n SelectTrigger as PrimitiveSelectTrigger,\n Separator as PrimitiveSeparator,\n Skeleton as PrimitiveSkeleton,\n Table as PrimitiveTable,\n TableBody as PrimitiveTableBody,\n TableCell as PrimitiveTableCell,\n TableFooter as PrimitiveTableFooter,\n TableHead as PrimitiveTableHead,\n TableHeader as PrimitiveTableHeader,\n TableRow as PrimitiveTableRow,\n TooltipContent as PrimitiveTooltipContent,\n primitiveUiKit,\n} from \"../../core/primitive-ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nfunction withClassName(\n Component: React.ComponentType,\n defaultClassName: string,\n) {\n return function Wrapped({ className, ...props }: TProps) {\n return (\n \n );\n };\n}\n\nconst HeroButton = withClassName(\n PrimitiveButton,\n \"rounded-field border-field-border shadow-field data-[variant=default]:bg-accent data-[variant=default]:text-accent-foreground data-[variant=outline]:border-field-border data-[variant=outline]:bg-field data-[variant=outline]:hover:bg-field-hover data-[variant=secondary]:bg-default data-[variant=secondary]:text-default-foreground data-[variant=ghost]:hover:bg-default data-[variant=destructive]:bg-danger-soft data-[variant=destructive]:text-danger\",\n);\nconst HeroCard = withClassName(\n PrimitiveCard,\n \"rounded-2xl border border-separator bg-surface text-surface-foreground shadow-surface ring-0\",\n);\nconst HeroCardHeader = withClassName(PrimitiveCardHeader, \"px-5 pt-5 pb-3\");\nconst HeroCardContent = withClassName(PrimitiveCardContent, \"px-5 pb-5\");\nconst HeroCheckbox = withClassName(\n PrimitiveCheckbox,\n \"rounded-field border-field-border bg-field ring-focus/40 data-checked:bg-accent data-checked:text-accent-foreground data-checked:ring-focus\",\n);\nconst HeroDropdownMenuContent = withClassName(\n PrimitiveDropdownMenuContent,\n \"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden **:data-[slot$=-item]:focus:bg-default **:data-[slot$=-item]:data-highlighted:bg-default **:data-[slot$=-separator]:bg-separator **:data-[slot$=-trigger]:focus:bg-default\",\n);\nconst HeroDropdownMenuItem = withClassName(\n PrimitiveDropdownMenuItem,\n \"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground data-[variant=destructive]:text-danger data-[variant=destructive]:focus:bg-danger-soft\",\n);\nconst HeroDropdownMenuCheckboxItem = withClassName(\n PrimitiveDropdownMenuCheckboxItem,\n \"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground\",\n);\nconst HeroDropdownMenuRadioItem = withClassName(\n PrimitiveDropdownMenuRadioItem,\n \"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground\",\n);\nconst HeroDropdownMenuLabel = withClassName(\n PrimitiveDropdownMenuLabel,\n \"text-muted\",\n);\nconst HeroDropdownMenuSeparator = withClassName(\n PrimitiveDropdownMenuSeparator,\n \"bg-separator\",\n);\nconst HeroDropdownMenuSubContent = withClassName(\n PrimitiveDropdownMenuSubContent,\n \"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden\",\n);\nconst HeroDropdownMenuSubTrigger = withClassName(\n PrimitiveDropdownMenuSubTrigger,\n \"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground data-open:bg-default data-open:text-overlay-foreground\",\n);\nconst HeroInput = withClassName(\n PrimitiveInput,\n \"rounded-field border-field-border bg-field text-field-foreground shadow-field placeholder:text-field-placeholder\",\n);\nconst HeroInputGroup = withClassName(\n PrimitiveInputGroup,\n \"rounded-field border-field-border bg-field text-field-foreground shadow-field\",\n);\nconst HeroInputGroupAddon = withClassName(\n PrimitiveInputGroupAddon,\n \"text-muted\",\n);\nconst HeroInputGroupInput = withClassName(PrimitiveInputGroupInput, \"bg-transparent\");\nconst HeroPagination = withClassName(PrimitivePagination, \"justify-end\");\nconst HeroPaginationLink = withClassName(\n PrimitivePaginationLink,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover data-[active=true]:bg-accent data-[active=true]:text-accent-foreground\",\n);\nconst HeroPaginationFirst = withClassName(\n PrimitivePaginationFirst,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover\",\n);\nconst HeroPaginationPrevious = withClassName(\n PrimitivePaginationPrevious,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover\",\n);\nconst HeroPaginationNext = withClassName(\n PrimitivePaginationNext,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover\",\n);\nconst HeroPaginationLast = withClassName(\n PrimitivePaginationLast,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover\",\n);\nconst HeroScrollArea = withClassName(PrimitiveScrollArea, \"rounded-2xl\");\nconst HeroScrollBar = withClassName(\n PrimitiveScrollBar,\n \"[&>[data-slot=scroll-area-thumb]]:bg-default-500\",\n);\nconst HeroSelectTrigger = withClassName(\n PrimitiveSelectTrigger,\n \"rounded-field border-field-border bg-field text-field-foreground shadow-field\",\n);\nconst HeroSelectContent = withClassName(\n PrimitiveSelectContent,\n \"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden\",\n);\nconst HeroSelectItem = withClassName(\n PrimitiveSelectItem,\n \"rounded-xl focus:bg-default\",\n);\nconst HeroSeparator = withClassName(PrimitiveSeparator, \"bg-separator\");\nconst HeroSkeleton = withClassName(\n PrimitiveSkeleton,\n \"rounded-xl bg-default\",\n);\nconst HeroTable = withClassName(PrimitiveTable, \"rounded-2xl text-foreground\");\nconst HeroTableHeader = withClassName(\n PrimitiveTableHeader,\n \"[&_tr]:border-separator\",\n);\nconst HeroTableBody = withClassName(PrimitiveTableBody, \"\");\nconst HeroTableFooter = withClassName(\n PrimitiveTableFooter,\n \"border-separator bg-surface-secondary\",\n);\nconst HeroTableHead = withClassName(\n PrimitiveTableHead,\n \"h-11 border-separator text-muted font-semibold\",\n);\nconst HeroTableRow = withClassName(\n PrimitiveTableRow,\n \"border-separator hover:bg-default data-[state=selected]:bg-accent-soft\",\n);\nconst HeroTableCell = withClassName(PrimitiveTableCell, \"py-2.5\");\nconst HeroTooltipContent = withClassName(\n PrimitiveTooltipContent,\n \"rounded-xl bg-overlay text-overlay-foreground ring-1 ring-separator shadow-overlay [&>svg]:bg-overlay [&>svg]:fill-overlay\",\n);\nconst HeroEmpty = withClassName(\n PrimitiveEmpty,\n \"rounded-2xl border-separator bg-surface shadow-surface\",\n);\nconst HeroEmptyHeader = withClassName(PrimitiveEmptyHeader, \"\");\nconst HeroEmptyMedia = withClassName(\n PrimitiveEmptyMedia,\n \"[&[data-variant=icon]]:rounded-2xl [&[data-variant=icon]]:bg-accent-soft [&[data-variant=icon]]:text-accent-soft-foreground\",\n);\nconst HeroEmptyTitle = withClassName(PrimitiveEmptyTitle, \"text-foreground\");\nconst HeroEmptyDescription = withClassName(\n PrimitiveEmptyDescription,\n \"text-muted\",\n);\nconst HeroEmptyContent = withClassName(PrimitiveEmptyContent, \"\");\n\nexport const heroUiKit: DataTableUiKit = {\n ...primitiveUiKit,\n rootClassName: \"dtp-heroui\",\n classNames: {\n card: \"hover:bg-default data-[state=selected]:bg-accent-soft\",\n cardGrid: \"bg-transparent\",\n cardItem: \"min-w-0\",\n cardOverlay: \"from-surface/95 via-surface/85 to-transparent\",\n cardScrollArea: \"bg-transparent\",\n cardSelected: \"bg-accent-soft ring-accent\",\n cardUnselected: \"border-separator\",\n cardViewport: \"bg-transparent\",\n cellBorder: \"border-separator/70\",\n columnGroupHeader: \"bg-default/50 font-semibold\",\n dragActive: \"rounded-2xl border-dashed border-accent\",\n emptyState: \"border-separator bg-surface\",\n footer: \"border-separator bg-surface text-surface-foreground\",\n headerSortIcon: \"text-muted\",\n mutedText: \"text-muted\",\n paginationSelectTrigger: \"border-field-border bg-field\",\n paginationTotal: \"text-muted\",\n pinnedColumn: \"border-separator\",\n pinnedUtilityColumn: \"bg-surface\",\n resizeHandle: \"after:bg-separator hover:after:bg-accent\",\n resizeHandleActive: \"after:bg-accent\",\n row: \"hover:bg-default data-[state=selected]:!bg-accent-soft\",\n rowSelected: \"!bg-accent-soft\",\n tableContainer: \"border-separator bg-surface text-surface-foreground\",\n tableScrollArea: \"bg-surface\",\n tableStickyHeader:\n \"sticky top-0 z-30 bg-surface/95 backdrop-blur [&_th]:border-separator [&_th]:bg-surface/95\",\n toolbarCompactIconButton: \"size-7\",\n toolbarIconButton: \"text-muted hover:text-foreground\",\n toolbarInputButton: \"bg-field\",\n },\n Button: HeroButton,\n Card: HeroCard,\n CardContent: HeroCardContent,\n CardHeader: HeroCardHeader,\n Checkbox: HeroCheckbox,\n DropdownMenuCheckboxItem: HeroDropdownMenuCheckboxItem,\n DropdownMenuContent: HeroDropdownMenuContent,\n DropdownMenuItem: HeroDropdownMenuItem,\n DropdownMenuLabel: HeroDropdownMenuLabel,\n DropdownMenuRadioItem: HeroDropdownMenuRadioItem,\n DropdownMenuSeparator: HeroDropdownMenuSeparator,\n DropdownMenuSubContent: HeroDropdownMenuSubContent,\n DropdownMenuSubTrigger: HeroDropdownMenuSubTrigger,\n Empty: HeroEmpty,\n EmptyContent: HeroEmptyContent,\n EmptyDescription: HeroEmptyDescription,\n EmptyHeader: HeroEmptyHeader,\n EmptyMedia: HeroEmptyMedia,\n EmptyTitle: HeroEmptyTitle,\n Input: HeroInput,\n InputGroup: HeroInputGroup,\n InputGroupAddon: HeroInputGroupAddon,\n InputGroupInput: HeroInputGroupInput,\n Pagination: HeroPagination,\n PaginationFirst: HeroPaginationFirst,\n PaginationLast: HeroPaginationLast,\n PaginationLink: HeroPaginationLink,\n PaginationNext: HeroPaginationNext,\n PaginationPrevious: HeroPaginationPrevious,\n ScrollArea: HeroScrollArea,\n ScrollBar: HeroScrollBar,\n SelectContent: HeroSelectContent,\n SelectItem: HeroSelectItem,\n SelectTrigger: HeroSelectTrigger,\n Separator: HeroSeparator,\n Skeleton: HeroSkeleton,\n Table: HeroTable,\n TableBody: HeroTableBody,\n TableCell: HeroTableCell,\n TableFooter: HeroTableFooter,\n TableHead: HeroTableHead,\n TableHeader: HeroTableHeader,\n TableRow: HeroTableRow,\n TooltipContent: HeroTooltipContent,\n};\n"]} \ No newline at end of file diff --git a/dist/chunk-7NEQYX7P.js b/dist/chunk-BTA3VDTU.js similarity index 63% rename from dist/chunk-7NEQYX7P.js rename to dist/chunk-BTA3VDTU.js index d0f28c2..f64f990 100644 --- a/dist/chunk-7NEQYX7P.js +++ b/dist/chunk-BTA3VDTU.js @@ -1,2 +1,2 @@ -import {X as X$1,a as a$1,c,e,g,h,i,j as j$1,k,l,m,n,p,o,q as q$1,u,s,z as z$1,w,y,x,H,I,J as J$1,L,K as K$1,M,b,N as N$1,R,T,W as W$1}from'./chunk-2V6RVOWX.js';import {a}from'./chunk-ZF4EP4WP.js';import'react';import {jsx}from'react/jsx-runtime';function r(L,A){return function({className:H,...R}){return jsx(L,{className:a(A,H),...R})}}var U=r(a$1,"rounded-md text-foreground data-[variant=default]:border-primary data-[variant=default]:bg-primary data-[variant=default]:text-primary-foreground data-[variant=outline]:border-input data-[variant=outline]:bg-card data-[variant=outline]:hover:bg-accent data-[variant=outline]:hover:text-accent-foreground data-[variant=secondary]:border-secondary data-[variant=secondary]:bg-secondary data-[variant=secondary]:text-secondary-foreground data-[variant=ghost]:border-transparent data-[variant=ghost]:bg-transparent data-[variant=ghost]:hover:bg-accent data-[variant=ghost]:hover:text-accent-foreground data-[variant=destructive]:border-destructive data-[variant=destructive]:bg-destructive data-[variant=destructive]:text-destructive-foreground data-[variant=link]:border-transparent data-[variant=link]:bg-transparent"),N=r(c,"rounded-xl border-border bg-card text-card-foreground shadow-sm ring-0"),z=r(e,"text-muted-foreground"),K=r(g,"border-t border-border/60 bg-muted/50"),_=r(h,"border-input bg-card ring-ring/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground data-checked:ring-primary"),O=r(i,"border-border bg-popover text-popover-foreground shadow-md"),V=r(j$1,"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10"),W=r(k,"focus:bg-accent focus:text-accent-foreground"),q=r(l,"focus:bg-accent focus:text-accent-foreground"),J=r(m,"text-muted-foreground"),Q=r(n,"bg-border"),X=r(p,"border-border bg-popover text-popover-foreground shadow-md"),Y=r(o,"focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground"),Z=r(q$1,"rounded-2xl border-border/60 bg-background/70"),$=r(u,"text-muted-foreground"),j=r(s,"[&[data-variant=icon]]:bg-muted [&[data-variant=icon]]:text-foreground"),rr=r(z$1,"rounded-md border-input bg-card text-foreground placeholder:text-muted-foreground"),er=r(w,"rounded-md border-input bg-card text-foreground"),tr=r(y,"text-muted-foreground"),or=r(x,"bg-transparent"),ar=r(H,"[&>[data-slot=scroll-area-thumb]]:bg-border"),nr=r(I,"rounded-md border-input bg-card text-foreground"),dr=r(J$1,"border-border bg-popover text-popover-foreground shadow-md"),ir=r(L,"focus:bg-accent focus:text-accent-foreground"),cr=r(K$1,"text-muted-foreground"),ur=r(M,"bg-border"),pr=r(b,"bg-border"),br=r(N$1,"bg-muted"),sr=r(R,"border-border bg-muted/50"),gr=r(T,"text-foreground"),mr=r(W$1,"bg-foreground text-background ring-1 ring-foreground/10 [&>svg]:bg-foreground [&>svg]:fill-foreground"),xr={...X$1,rootClassName:"dtp-shadcn",classNames:{card:"hover:bg-muted/50 data-[state=selected]:bg-primary/10",cardGrid:"bg-transparent",cardItem:"min-w-0",cardOverlay:"from-background/95 via-background/85 to-transparent",cardScrollArea:"bg-transparent",cardSelected:"bg-primary/10 ring-primary",cardUnselected:"border-border",cardViewport:"bg-transparent",cellBorder:"border-border/40",dragActive:"rounded-md border-dashed border-primary",emptyState:"border-border/60 bg-background/70",footer:"border-border bg-card",headerSortIcon:"text-muted-foreground",mutedText:"text-muted-foreground",paginationSelectTrigger:"border-input bg-card",paginationTotal:"text-muted-foreground",pinnedColumn:"border-border",pinnedUtilityColumn:"bg-card",resizeHandle:"after:bg-border hover:after:bg-primary",resizeHandleActive:"after:bg-primary",row:"hover:bg-muted/50 data-[state=selected]:!bg-primary/10",rowSelected:"!bg-primary/10",tableContainer:"border-border bg-card text-card-foreground",tableStickyHeader:"sticky top-0 z-30 bg-card/95 backdrop-blur [&_th]:border-border [&_th]:bg-card/95",toolbarCompactIconButton:"size-7",toolbarIconButton:"text-muted-foreground hover:text-foreground",toolbarInputButton:"border-input bg-card"},Button:U,Card:N,CardDescription:z,CardFooter:K,Checkbox:_,DropdownMenuCheckboxItem:W,DropdownMenuContent:O,DropdownMenuItem:V,DropdownMenuLabel:J,DropdownMenuRadioItem:q,DropdownMenuSeparator:Q,DropdownMenuSubContent:X,DropdownMenuSubTrigger:Y,Empty:Z,EmptyDescription:$,EmptyMedia:j,Input:rr,InputGroup:er,InputGroupAddon:tr,InputGroupInput:or,ScrollBar:ar,SelectContent:dr,SelectItem:ir,SelectLabel:cr,SelectSeparator:ur,SelectTrigger:nr,Separator:pr,Skeleton:br,TableFooter:sr,TableHead:gr,TooltipContent:mr};export{xr as a};//# sourceMappingURL=chunk-7NEQYX7P.js.map -//# sourceMappingURL=chunk-7NEQYX7P.js.map \ No newline at end of file +import {X as X$1,a as a$1,c,e,g,h,i,j as j$1,k,l,m,n,p,o,q as q$1,u,s,z as z$1,w,y,x,H,I,J as J$1,L,K as K$1,M,b,N as N$1,R,T,W as W$1}from'./chunk-7EXRF7VC.js';import {a}from'./chunk-PFB5LOU7.js';import'react';import {jsx}from'react/jsx-runtime';function r(H,L){return function({className:A,...R}){return jsx(H,{className:a(L,A),...R})}}var U=r(a$1,"rounded-md text-foreground data-[variant=default]:border-primary data-[variant=default]:bg-primary data-[variant=default]:text-primary-foreground data-[variant=outline]:border-input data-[variant=outline]:bg-card data-[variant=outline]:hover:bg-accent data-[variant=outline]:hover:text-accent-foreground data-[variant=secondary]:border-secondary data-[variant=secondary]:bg-secondary data-[variant=secondary]:text-secondary-foreground data-[variant=ghost]:border-transparent data-[variant=ghost]:bg-transparent data-[variant=ghost]:hover:bg-accent data-[variant=ghost]:hover:text-accent-foreground data-[variant=destructive]:border-destructive data-[variant=destructive]:bg-destructive data-[variant=destructive]:text-destructive-foreground data-[variant=link]:border-transparent data-[variant=link]:bg-transparent"),N=r(c,"rounded-xl border-border bg-card text-card-foreground shadow-sm ring-0"),z=r(e,"text-muted-foreground"),K=r(g,"border-t border-border/60 bg-muted/50"),_=r(h,"border-input bg-card ring-ring/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground data-checked:ring-primary"),O=r(i,"border-border bg-popover text-popover-foreground shadow-md"),V=r(j$1,"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10"),W=r(k,"focus:bg-accent focus:text-accent-foreground"),q=r(l,"focus:bg-accent focus:text-accent-foreground"),J=r(m,"text-muted-foreground"),Q=r(n,"bg-border"),X=r(p,"border-border bg-popover text-popover-foreground shadow-md"),Y=r(o,"focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground"),Z=r(q$1,"rounded-2xl border-border/60 bg-background/70"),$=r(u,"text-muted-foreground"),j=r(s,"[&[data-variant=icon]]:bg-muted [&[data-variant=icon]]:text-foreground"),rr=r(z$1,"rounded-md border-input bg-card text-foreground placeholder:text-muted-foreground"),er=r(w,"rounded-md border-input bg-card text-foreground"),tr=r(y,"text-muted-foreground"),or=r(x,"bg-transparent"),ar=r(H,"[&>[data-slot=scroll-area-thumb]]:bg-border"),nr=r(I,"rounded-md border-input bg-card text-foreground"),dr=r(J$1,"border-border bg-popover text-popover-foreground shadow-md"),ir=r(L,"focus:bg-accent focus:text-accent-foreground"),cr=r(K$1,"text-muted-foreground"),ur=r(M,"bg-border"),pr=r(b,"bg-border"),br=r(N$1,"bg-muted"),sr=r(R,"border-border bg-muted/50"),gr=r(T,"text-foreground"),mr=r(W$1,"bg-foreground text-background ring-1 ring-foreground/10 [&>svg]:bg-foreground [&>svg]:fill-foreground"),xr={...X$1,rootClassName:"dtp-shadcn",classNames:{card:"hover:bg-muted/50 data-[state=selected]:bg-primary/10",cardGrid:"bg-transparent",cardItem:"min-w-0",cardOverlay:"from-background/95 via-background/85 to-transparent",cardScrollArea:"bg-transparent",cardSelected:"bg-primary/10 ring-primary",cardUnselected:"border-border",cardViewport:"bg-transparent",cellBorder:"border-border/40",columnGroupHeader:"bg-muted/50 font-semibold",dragActive:"rounded-md border-dashed border-primary",emptyState:"border-border/60 bg-background/70",footer:"border-border bg-card",headerSortIcon:"text-muted-foreground",mutedText:"text-muted-foreground",paginationSelectTrigger:"border-input bg-card",paginationTotal:"text-muted-foreground",pinnedColumn:"border-border",pinnedUtilityColumn:"bg-card",resizeHandle:"after:bg-border hover:after:bg-primary",resizeHandleActive:"after:bg-primary",row:"hover:bg-muted/50 data-[state=selected]:!bg-primary/10",rowSelected:"!bg-primary/10",tableContainer:"border-border bg-card text-card-foreground",tableStickyHeader:"sticky top-0 z-30 bg-card/95 backdrop-blur [&_th]:border-border [&_th]:bg-card/95",toolbarCompactIconButton:"size-7",toolbarIconButton:"text-muted-foreground hover:text-foreground",toolbarInputButton:"border-input bg-card"},Button:U,Card:N,CardDescription:z,CardFooter:K,Checkbox:_,DropdownMenuCheckboxItem:W,DropdownMenuContent:O,DropdownMenuItem:V,DropdownMenuLabel:J,DropdownMenuRadioItem:q,DropdownMenuSeparator:Q,DropdownMenuSubContent:X,DropdownMenuSubTrigger:Y,Empty:Z,EmptyDescription:$,EmptyMedia:j,Input:rr,InputGroup:er,InputGroupAddon:tr,InputGroupInput:or,ScrollBar:ar,SelectContent:dr,SelectItem:ir,SelectLabel:cr,SelectSeparator:ur,SelectTrigger:nr,Separator:pr,Skeleton:br,TableFooter:sr,TableHead:gr,TooltipContent:mr};export{xr as a};//# sourceMappingURL=chunk-BTA3VDTU.js.map +//# sourceMappingURL=chunk-BTA3VDTU.js.map \ No newline at end of file diff --git a/dist/chunk-BTA3VDTU.js.map b/dist/chunk-BTA3VDTU.js.map new file mode 100644 index 0000000..4d62371 --- /dev/null +++ b/dist/chunk-BTA3VDTU.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/adapters/shadcn/index.tsx"],"names":["withClassName","Component","defaultClassName","className","props","jsx","cn","ShadcnButton","Button","ShadcnCard","Card","ShadcnCardDescription","CardDescription","ShadcnCardFooter","CardFooter","ShadcnCheckbox","Checkbox","ShadcnDropdownMenuContent","DropdownMenuContent","ShadcnDropdownMenuItem","DropdownMenuItem","ShadcnDropdownMenuCheckboxItem","DropdownMenuCheckboxItem","ShadcnDropdownMenuRadioItem","DropdownMenuRadioItem","ShadcnDropdownMenuLabel","DropdownMenuLabel","ShadcnDropdownMenuSeparator","DropdownMenuSeparator","ShadcnDropdownMenuSubContent","DropdownMenuSubContent","ShadcnDropdownMenuSubTrigger","DropdownMenuSubTrigger","ShadcnEmpty","Empty","ShadcnEmptyDescription","EmptyDescription","ShadcnEmptyMedia","EmptyMedia","ShadcnInput","Input","ShadcnInputGroup","InputGroup","ShadcnInputGroupAddon","InputGroupAddon","ShadcnInputGroupInput","InputGroupInput","ShadcnScrollBar","ScrollBar","ShadcnSelectTrigger","SelectTrigger","ShadcnSelectContent","SelectContent","ShadcnSelectItem","SelectItem","ShadcnSelectLabel","SelectLabel","ShadcnSelectSeparator","SelectSeparator","ShadcnSeparator","Separator","ShadcnSkeleton","Skeleton","ShadcnTableFooter","TableFooter","ShadcnTableHead","TableHead","ShadcnTooltipContent","TooltipContent","shadcnUiKit","primitiveUiKit"],"mappings":"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","file":"chunk-BTA3VDTU.js","sourcesContent":["import * as React from \"react\";\nimport type { DataTableUiKit } from \"../../core/ui-kit\";\nimport {\n Button as PrimitiveButton,\n Card as PrimitiveCard,\n CardDescription as PrimitiveCardDescription,\n CardFooter as PrimitiveCardFooter,\n Checkbox as PrimitiveCheckbox,\n DropdownMenuCheckboxItem as PrimitiveDropdownMenuCheckboxItem,\n DropdownMenuContent as PrimitiveDropdownMenuContent,\n DropdownMenuItem as PrimitiveDropdownMenuItem,\n DropdownMenuLabel as PrimitiveDropdownMenuLabel,\n DropdownMenuRadioItem as PrimitiveDropdownMenuRadioItem,\n DropdownMenuSeparator as PrimitiveDropdownMenuSeparator,\n DropdownMenuSubContent as PrimitiveDropdownMenuSubContent,\n DropdownMenuSubTrigger as PrimitiveDropdownMenuSubTrigger,\n Empty as PrimitiveEmpty,\n EmptyDescription as PrimitiveEmptyDescription,\n EmptyMedia as PrimitiveEmptyMedia,\n Input as PrimitiveInput,\n InputGroup as PrimitiveInputGroup,\n InputGroupAddon as PrimitiveInputGroupAddon,\n InputGroupInput as PrimitiveInputGroupInput,\n ScrollBar as PrimitiveScrollBar,\n SelectContent as PrimitiveSelectContent,\n SelectItem as PrimitiveSelectItem,\n SelectLabel as PrimitiveSelectLabel,\n SelectSeparator as PrimitiveSelectSeparator,\n SelectTrigger as PrimitiveSelectTrigger,\n Separator as PrimitiveSeparator,\n Skeleton as PrimitiveSkeleton,\n TableFooter as PrimitiveTableFooter,\n TableHead as PrimitiveTableHead,\n TooltipContent as PrimitiveTooltipContent,\n primitiveUiKit,\n} from \"../../core/primitive-ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nfunction withClassName(\n Component: React.ComponentType,\n defaultClassName: string,\n) {\n return function Wrapped({ className, ...props }: TProps) {\n return (\n \n );\n };\n}\n\nconst ShadcnButton = withClassName(\n PrimitiveButton,\n \"rounded-md text-foreground data-[variant=default]:border-primary data-[variant=default]:bg-primary data-[variant=default]:text-primary-foreground data-[variant=outline]:border-input data-[variant=outline]:bg-card data-[variant=outline]:hover:bg-accent data-[variant=outline]:hover:text-accent-foreground data-[variant=secondary]:border-secondary data-[variant=secondary]:bg-secondary data-[variant=secondary]:text-secondary-foreground data-[variant=ghost]:border-transparent data-[variant=ghost]:bg-transparent data-[variant=ghost]:hover:bg-accent data-[variant=ghost]:hover:text-accent-foreground data-[variant=destructive]:border-destructive data-[variant=destructive]:bg-destructive data-[variant=destructive]:text-destructive-foreground data-[variant=link]:border-transparent data-[variant=link]:bg-transparent\",\n);\nconst ShadcnCard = withClassName(\n PrimitiveCard,\n \"rounded-xl border-border bg-card text-card-foreground shadow-sm ring-0\",\n);\nconst ShadcnCardDescription = withClassName(\n PrimitiveCardDescription,\n \"text-muted-foreground\",\n);\nconst ShadcnCardFooter = withClassName(\n PrimitiveCardFooter,\n \"border-t border-border/60 bg-muted/50\",\n);\nconst ShadcnCheckbox = withClassName(\n PrimitiveCheckbox,\n \"border-input bg-card ring-ring/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground data-checked:ring-primary\",\n);\nconst ShadcnDropdownMenuContent = withClassName(\n PrimitiveDropdownMenuContent,\n \"border-border bg-popover text-popover-foreground shadow-md\",\n);\nconst ShadcnDropdownMenuItem = withClassName(\n PrimitiveDropdownMenuItem,\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10\",\n);\nconst ShadcnDropdownMenuCheckboxItem = withClassName(\n PrimitiveDropdownMenuCheckboxItem,\n \"focus:bg-accent focus:text-accent-foreground\",\n);\nconst ShadcnDropdownMenuRadioItem = withClassName(\n PrimitiveDropdownMenuRadioItem,\n \"focus:bg-accent focus:text-accent-foreground\",\n);\nconst ShadcnDropdownMenuLabel = withClassName(\n PrimitiveDropdownMenuLabel,\n \"text-muted-foreground\",\n);\nconst ShadcnDropdownMenuSeparator = withClassName(\n PrimitiveDropdownMenuSeparator,\n \"bg-border\",\n);\nconst ShadcnDropdownMenuSubContent = withClassName(\n PrimitiveDropdownMenuSubContent,\n \"border-border bg-popover text-popover-foreground shadow-md\",\n);\nconst ShadcnDropdownMenuSubTrigger = withClassName(\n PrimitiveDropdownMenuSubTrigger,\n \"focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground\",\n);\nconst ShadcnEmpty = withClassName(\n PrimitiveEmpty,\n \"rounded-2xl border-border/60 bg-background/70\",\n);\nconst ShadcnEmptyDescription = withClassName(\n PrimitiveEmptyDescription,\n \"text-muted-foreground\",\n);\nconst ShadcnEmptyMedia = withClassName(\n PrimitiveEmptyMedia,\n \"[&[data-variant=icon]]:bg-muted [&[data-variant=icon]]:text-foreground\",\n);\nconst ShadcnInput = withClassName(\n PrimitiveInput,\n \"rounded-md border-input bg-card text-foreground placeholder:text-muted-foreground\",\n);\nconst ShadcnInputGroup = withClassName(\n PrimitiveInputGroup,\n \"rounded-md border-input bg-card text-foreground\",\n);\nconst ShadcnInputGroupAddon = withClassName(\n PrimitiveInputGroupAddon,\n \"text-muted-foreground\",\n);\nconst ShadcnInputGroupInput = withClassName(\n PrimitiveInputGroupInput,\n \"bg-transparent\",\n);\nconst ShadcnScrollBar = withClassName(\n PrimitiveScrollBar,\n \"[&>[data-slot=scroll-area-thumb]]:bg-border\",\n);\nconst ShadcnSelectTrigger = withClassName(\n PrimitiveSelectTrigger,\n \"rounded-md border-input bg-card text-foreground\",\n);\nconst ShadcnSelectContent = withClassName(\n PrimitiveSelectContent,\n \"border-border bg-popover text-popover-foreground shadow-md\",\n);\nconst ShadcnSelectItem = withClassName(\n PrimitiveSelectItem,\n \"focus:bg-accent focus:text-accent-foreground\",\n);\nconst ShadcnSelectLabel = withClassName(\n PrimitiveSelectLabel,\n \"text-muted-foreground\",\n);\nconst ShadcnSelectSeparator = withClassName(\n PrimitiveSelectSeparator,\n \"bg-border\",\n);\nconst ShadcnSeparator = withClassName(PrimitiveSeparator, \"bg-border\");\nconst ShadcnSkeleton = withClassName(PrimitiveSkeleton, \"bg-muted\");\nconst ShadcnTableFooter = withClassName(\n PrimitiveTableFooter,\n \"border-border bg-muted/50\",\n);\nconst ShadcnTableHead = withClassName(\n PrimitiveTableHead,\n \"text-foreground\",\n);\nconst ShadcnTooltipContent = withClassName(\n PrimitiveTooltipContent,\n \"bg-foreground text-background ring-1 ring-foreground/10 [&>svg]:bg-foreground [&>svg]:fill-foreground\",\n);\n\nexport const shadcnUiKit: DataTableUiKit = {\n ...primitiveUiKit,\n rootClassName: \"dtp-shadcn\",\n classNames: {\n card: \"hover:bg-muted/50 data-[state=selected]:bg-primary/10\",\n cardGrid: \"bg-transparent\",\n cardItem: \"min-w-0\",\n cardOverlay: \"from-background/95 via-background/85 to-transparent\",\n cardScrollArea: \"bg-transparent\",\n cardSelected: \"bg-primary/10 ring-primary\",\n cardUnselected: \"border-border\",\n cardViewport: \"bg-transparent\",\n cellBorder: \"border-border/40\",\n columnGroupHeader: \"bg-muted/50 font-semibold\",\n dragActive: \"rounded-md border-dashed border-primary\",\n emptyState: \"border-border/60 bg-background/70\",\n footer: \"border-border bg-card\",\n headerSortIcon: \"text-muted-foreground\",\n mutedText: \"text-muted-foreground\",\n paginationSelectTrigger: \"border-input bg-card\",\n paginationTotal: \"text-muted-foreground\",\n pinnedColumn: \"border-border\",\n pinnedUtilityColumn: \"bg-card\",\n resizeHandle: \"after:bg-border hover:after:bg-primary\",\n resizeHandleActive: \"after:bg-primary\",\n row: \"hover:bg-muted/50 data-[state=selected]:!bg-primary/10\",\n rowSelected: \"!bg-primary/10\",\n tableContainer: \"border-border bg-card text-card-foreground\",\n tableStickyHeader:\n \"sticky top-0 z-30 bg-card/95 backdrop-blur [&_th]:border-border [&_th]:bg-card/95\",\n toolbarCompactIconButton: \"size-7\",\n toolbarIconButton: \"text-muted-foreground hover:text-foreground\",\n toolbarInputButton: \"border-input bg-card\",\n },\n Button: ShadcnButton,\n Card: ShadcnCard,\n CardDescription: ShadcnCardDescription,\n CardFooter: ShadcnCardFooter,\n Checkbox: ShadcnCheckbox,\n DropdownMenuCheckboxItem: ShadcnDropdownMenuCheckboxItem,\n DropdownMenuContent: ShadcnDropdownMenuContent,\n DropdownMenuItem: ShadcnDropdownMenuItem,\n DropdownMenuLabel: ShadcnDropdownMenuLabel,\n DropdownMenuRadioItem: ShadcnDropdownMenuRadioItem,\n DropdownMenuSeparator: ShadcnDropdownMenuSeparator,\n DropdownMenuSubContent: ShadcnDropdownMenuSubContent,\n DropdownMenuSubTrigger: ShadcnDropdownMenuSubTrigger,\n Empty: ShadcnEmpty,\n EmptyDescription: ShadcnEmptyDescription,\n EmptyMedia: ShadcnEmptyMedia,\n Input: ShadcnInput,\n InputGroup: ShadcnInputGroup,\n InputGroupAddon: ShadcnInputGroupAddon,\n InputGroupInput: ShadcnInputGroupInput,\n ScrollBar: ShadcnScrollBar,\n SelectContent: ShadcnSelectContent,\n SelectItem: ShadcnSelectItem,\n SelectLabel: ShadcnSelectLabel,\n SelectSeparator: ShadcnSelectSeparator,\n SelectTrigger: ShadcnSelectTrigger,\n Separator: ShadcnSeparator,\n Skeleton: ShadcnSkeleton,\n TableFooter: ShadcnTableFooter,\n TableHead: ShadcnTableHead,\n TooltipContent: ShadcnTooltipContent,\n};\n"]} \ No newline at end of file diff --git a/dist/chunk-GTOBHZ7L.js.map b/dist/chunk-GTOBHZ7L.js.map deleted file mode 100644 index 015864e..0000000 --- a/dist/chunk-GTOBHZ7L.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/adapters/heroui/index.tsx"],"names":["withClassName","Component","defaultClassName","className","props","jsx","cn","HeroButton","Button","HeroCard","Card","HeroCardHeader","CardHeader","HeroCardContent","CardContent","HeroCheckbox","Checkbox","HeroDropdownMenuContent","DropdownMenuContent","HeroDropdownMenuItem","DropdownMenuItem","HeroDropdownMenuCheckboxItem","DropdownMenuCheckboxItem","HeroDropdownMenuRadioItem","DropdownMenuRadioItem","HeroDropdownMenuLabel","DropdownMenuLabel","HeroDropdownMenuSeparator","DropdownMenuSeparator","HeroDropdownMenuSubContent","DropdownMenuSubContent","HeroDropdownMenuSubTrigger","DropdownMenuSubTrigger","HeroInput","Input","HeroInputGroup","InputGroup","HeroInputGroupAddon","InputGroupAddon","HeroInputGroupInput","InputGroupInput","HeroPagination","Pagination","HeroPaginationLink","PaginationLink","HeroPaginationFirst","PaginationFirst","HeroPaginationPrevious","PaginationPrevious","HeroPaginationNext","PaginationNext","HeroPaginationLast","PaginationLast","HeroScrollArea","ScrollArea","HeroScrollBar","ScrollBar","HeroSelectTrigger","SelectTrigger","HeroSelectContent","SelectContent","HeroSelectItem","SelectItem","HeroSeparator","Separator","HeroSkeleton","Skeleton","HeroTable","Table","HeroTableHeader","TableHeader","HeroTableBody","TableBody","HeroTableFooter","TableFooter","HeroTableHead","TableHead","HeroTableRow","TableRow","HeroTableCell","TableCell","HeroTooltipContent","TooltipContent","HeroEmpty","Empty","HeroEmptyHeader","EmptyHeader","HeroEmptyMedia","EmptyMedia","HeroEmptyTitle","EmptyTitle","HeroEmptyDescription","EmptyDescription","HeroEmptyContent","EmptyContent","heroUiKit","primitiveUiKit"],"mappings":"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","file":"chunk-GTOBHZ7L.js","sourcesContent":["import * as React from \"react\";\nimport type { DataTableUiKit } from \"../../core/ui-kit\";\nimport {\n Button as PrimitiveButton,\n Card as PrimitiveCard,\n CardContent as PrimitiveCardContent,\n CardHeader as PrimitiveCardHeader,\n Checkbox as PrimitiveCheckbox,\n DropdownMenuCheckboxItem as PrimitiveDropdownMenuCheckboxItem,\n DropdownMenuContent as PrimitiveDropdownMenuContent,\n DropdownMenuItem as PrimitiveDropdownMenuItem,\n DropdownMenuLabel as PrimitiveDropdownMenuLabel,\n DropdownMenuRadioItem as PrimitiveDropdownMenuRadioItem,\n DropdownMenuSeparator as PrimitiveDropdownMenuSeparator,\n DropdownMenuSubContent as PrimitiveDropdownMenuSubContent,\n DropdownMenuSubTrigger as PrimitiveDropdownMenuSubTrigger,\n Empty as PrimitiveEmpty,\n EmptyContent as PrimitiveEmptyContent,\n EmptyDescription as PrimitiveEmptyDescription,\n EmptyHeader as PrimitiveEmptyHeader,\n EmptyMedia as PrimitiveEmptyMedia,\n EmptyTitle as PrimitiveEmptyTitle,\n Input as PrimitiveInput,\n InputGroup as PrimitiveInputGroup,\n InputGroupAddon as PrimitiveInputGroupAddon,\n InputGroupInput as PrimitiveInputGroupInput,\n Pagination as PrimitivePagination,\n PaginationFirst as PrimitivePaginationFirst,\n PaginationLast as PrimitivePaginationLast,\n PaginationLink as PrimitivePaginationLink,\n PaginationNext as PrimitivePaginationNext,\n PaginationPrevious as PrimitivePaginationPrevious,\n ScrollArea as PrimitiveScrollArea,\n ScrollBar as PrimitiveScrollBar,\n SelectContent as PrimitiveSelectContent,\n SelectItem as PrimitiveSelectItem,\n SelectTrigger as PrimitiveSelectTrigger,\n Separator as PrimitiveSeparator,\n Skeleton as PrimitiveSkeleton,\n Table as PrimitiveTable,\n TableBody as PrimitiveTableBody,\n TableCell as PrimitiveTableCell,\n TableFooter as PrimitiveTableFooter,\n TableHead as PrimitiveTableHead,\n TableHeader as PrimitiveTableHeader,\n TableRow as PrimitiveTableRow,\n TooltipContent as PrimitiveTooltipContent,\n primitiveUiKit,\n} from \"../../core/primitive-ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nfunction withClassName(\n Component: React.ComponentType,\n defaultClassName: string,\n) {\n return function Wrapped({ className, ...props }: TProps) {\n return (\n \n );\n };\n}\n\nconst HeroButton = withClassName(\n PrimitiveButton,\n \"rounded-field border-field-border shadow-field data-[variant=default]:bg-accent data-[variant=default]:text-accent-foreground data-[variant=outline]:border-field-border data-[variant=outline]:bg-field data-[variant=outline]:hover:bg-field-hover data-[variant=secondary]:bg-default data-[variant=secondary]:text-default-foreground data-[variant=ghost]:hover:bg-default data-[variant=destructive]:bg-danger-soft data-[variant=destructive]:text-danger\",\n);\nconst HeroCard = withClassName(\n PrimitiveCard,\n \"rounded-2xl border border-separator bg-surface text-surface-foreground shadow-surface ring-0\",\n);\nconst HeroCardHeader = withClassName(PrimitiveCardHeader, \"px-5 pt-5 pb-3\");\nconst HeroCardContent = withClassName(PrimitiveCardContent, \"px-5 pb-5\");\nconst HeroCheckbox = withClassName(\n PrimitiveCheckbox,\n \"rounded-field border-field-border bg-field ring-focus/40 data-checked:bg-accent data-checked:text-accent-foreground data-checked:ring-focus\",\n);\nconst HeroDropdownMenuContent = withClassName(\n PrimitiveDropdownMenuContent,\n \"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden **:data-[slot$=-item]:focus:bg-default **:data-[slot$=-item]:data-highlighted:bg-default **:data-[slot$=-separator]:bg-separator **:data-[slot$=-trigger]:focus:bg-default\",\n);\nconst HeroDropdownMenuItem = withClassName(\n PrimitiveDropdownMenuItem,\n \"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground data-[variant=destructive]:text-danger data-[variant=destructive]:focus:bg-danger-soft\",\n);\nconst HeroDropdownMenuCheckboxItem = withClassName(\n PrimitiveDropdownMenuCheckboxItem,\n \"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground\",\n);\nconst HeroDropdownMenuRadioItem = withClassName(\n PrimitiveDropdownMenuRadioItem,\n \"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground\",\n);\nconst HeroDropdownMenuLabel = withClassName(\n PrimitiveDropdownMenuLabel,\n \"text-muted\",\n);\nconst HeroDropdownMenuSeparator = withClassName(\n PrimitiveDropdownMenuSeparator,\n \"bg-separator\",\n);\nconst HeroDropdownMenuSubContent = withClassName(\n PrimitiveDropdownMenuSubContent,\n \"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden\",\n);\nconst HeroDropdownMenuSubTrigger = withClassName(\n PrimitiveDropdownMenuSubTrigger,\n \"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground data-open:bg-default data-open:text-overlay-foreground\",\n);\nconst HeroInput = withClassName(\n PrimitiveInput,\n \"rounded-field border-field-border bg-field text-field-foreground shadow-field placeholder:text-field-placeholder\",\n);\nconst HeroInputGroup = withClassName(\n PrimitiveInputGroup,\n \"rounded-field border-field-border bg-field text-field-foreground shadow-field\",\n);\nconst HeroInputGroupAddon = withClassName(\n PrimitiveInputGroupAddon,\n \"text-muted\",\n);\nconst HeroInputGroupInput = withClassName(PrimitiveInputGroupInput, \"bg-transparent\");\nconst HeroPagination = withClassName(PrimitivePagination, \"justify-end\");\nconst HeroPaginationLink = withClassName(\n PrimitivePaginationLink,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover data-[active=true]:bg-accent data-[active=true]:text-accent-foreground\",\n);\nconst HeroPaginationFirst = withClassName(\n PrimitivePaginationFirst,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover\",\n);\nconst HeroPaginationPrevious = withClassName(\n PrimitivePaginationPrevious,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover\",\n);\nconst HeroPaginationNext = withClassName(\n PrimitivePaginationNext,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover\",\n);\nconst HeroPaginationLast = withClassName(\n PrimitivePaginationLast,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover\",\n);\nconst HeroScrollArea = withClassName(PrimitiveScrollArea, \"rounded-2xl\");\nconst HeroScrollBar = withClassName(\n PrimitiveScrollBar,\n \"[&>[data-slot=scroll-area-thumb]]:bg-default-500\",\n);\nconst HeroSelectTrigger = withClassName(\n PrimitiveSelectTrigger,\n \"rounded-field border-field-border bg-field text-field-foreground shadow-field\",\n);\nconst HeroSelectContent = withClassName(\n PrimitiveSelectContent,\n \"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden\",\n);\nconst HeroSelectItem = withClassName(\n PrimitiveSelectItem,\n \"rounded-xl focus:bg-default\",\n);\nconst HeroSeparator = withClassName(PrimitiveSeparator, \"bg-separator\");\nconst HeroSkeleton = withClassName(\n PrimitiveSkeleton,\n \"rounded-xl bg-default\",\n);\nconst HeroTable = withClassName(PrimitiveTable, \"rounded-2xl text-foreground\");\nconst HeroTableHeader = withClassName(\n PrimitiveTableHeader,\n \"[&_tr]:border-separator\",\n);\nconst HeroTableBody = withClassName(PrimitiveTableBody, \"\");\nconst HeroTableFooter = withClassName(\n PrimitiveTableFooter,\n \"border-separator bg-surface-secondary\",\n);\nconst HeroTableHead = withClassName(\n PrimitiveTableHead,\n \"h-11 border-separator text-muted font-semibold\",\n);\nconst HeroTableRow = withClassName(\n PrimitiveTableRow,\n \"border-separator hover:bg-default data-[state=selected]:bg-accent-soft\",\n);\nconst HeroTableCell = withClassName(PrimitiveTableCell, \"py-2.5\");\nconst HeroTooltipContent = withClassName(\n PrimitiveTooltipContent,\n \"rounded-xl bg-overlay text-overlay-foreground ring-1 ring-separator shadow-overlay [&>svg]:bg-overlay [&>svg]:fill-overlay\",\n);\nconst HeroEmpty = withClassName(\n PrimitiveEmpty,\n \"rounded-2xl border-separator bg-surface shadow-surface\",\n);\nconst HeroEmptyHeader = withClassName(PrimitiveEmptyHeader, \"\");\nconst HeroEmptyMedia = withClassName(\n PrimitiveEmptyMedia,\n \"[&[data-variant=icon]]:rounded-2xl [&[data-variant=icon]]:bg-accent-soft [&[data-variant=icon]]:text-accent-soft-foreground\",\n);\nconst HeroEmptyTitle = withClassName(PrimitiveEmptyTitle, \"text-foreground\");\nconst HeroEmptyDescription = withClassName(\n PrimitiveEmptyDescription,\n \"text-muted\",\n);\nconst HeroEmptyContent = withClassName(PrimitiveEmptyContent, \"\");\n\nexport const heroUiKit: DataTableUiKit = {\n ...primitiveUiKit,\n rootClassName: \"dtp-heroui\",\n classNames: {\n card: \"hover:bg-default data-[state=selected]:bg-accent-soft\",\n cardGrid: \"bg-transparent\",\n cardItem: \"min-w-0\",\n cardOverlay: \"from-surface/95 via-surface/85 to-transparent\",\n cardScrollArea: \"bg-transparent\",\n cardSelected: \"bg-accent-soft ring-accent\",\n cardUnselected: \"border-separator\",\n cardViewport: \"bg-transparent\",\n cellBorder: \"border-separator/70\",\n dragActive: \"rounded-2xl border-dashed border-accent\",\n emptyState: \"border-separator bg-surface\",\n footer: \"border-separator bg-surface text-surface-foreground\",\n headerSortIcon: \"text-muted\",\n mutedText: \"text-muted\",\n paginationSelectTrigger: \"border-field-border bg-field\",\n paginationTotal: \"text-muted\",\n pinnedColumn: \"border-separator\",\n pinnedUtilityColumn: \"bg-surface\",\n resizeHandle: \"after:bg-separator hover:after:bg-accent\",\n resizeHandleActive: \"after:bg-accent\",\n row: \"hover:bg-default data-[state=selected]:!bg-accent-soft\",\n rowSelected: \"!bg-accent-soft\",\n tableContainer: \"border-separator bg-surface text-surface-foreground\",\n tableScrollArea: \"bg-surface\",\n tableStickyHeader:\n \"sticky top-0 z-30 bg-surface/95 backdrop-blur [&_th]:border-separator [&_th]:bg-surface/95\",\n toolbarCompactIconButton: \"size-7\",\n toolbarIconButton: \"text-muted hover:text-foreground\",\n toolbarInputButton: \"bg-field\",\n },\n Button: HeroButton,\n Card: HeroCard,\n CardContent: HeroCardContent,\n CardHeader: HeroCardHeader,\n Checkbox: HeroCheckbox,\n DropdownMenuCheckboxItem: HeroDropdownMenuCheckboxItem,\n DropdownMenuContent: HeroDropdownMenuContent,\n DropdownMenuItem: HeroDropdownMenuItem,\n DropdownMenuLabel: HeroDropdownMenuLabel,\n DropdownMenuRadioItem: HeroDropdownMenuRadioItem,\n DropdownMenuSeparator: HeroDropdownMenuSeparator,\n DropdownMenuSubContent: HeroDropdownMenuSubContent,\n DropdownMenuSubTrigger: HeroDropdownMenuSubTrigger,\n Empty: HeroEmpty,\n EmptyContent: HeroEmptyContent,\n EmptyDescription: HeroEmptyDescription,\n EmptyHeader: HeroEmptyHeader,\n EmptyMedia: HeroEmptyMedia,\n EmptyTitle: HeroEmptyTitle,\n Input: HeroInput,\n InputGroup: HeroInputGroup,\n InputGroupAddon: HeroInputGroupAddon,\n InputGroupInput: HeroInputGroupInput,\n Pagination: HeroPagination,\n PaginationFirst: HeroPaginationFirst,\n PaginationLast: HeroPaginationLast,\n PaginationLink: HeroPaginationLink,\n PaginationNext: HeroPaginationNext,\n PaginationPrevious: HeroPaginationPrevious,\n ScrollArea: HeroScrollArea,\n ScrollBar: HeroScrollBar,\n SelectContent: HeroSelectContent,\n SelectItem: HeroSelectItem,\n SelectTrigger: HeroSelectTrigger,\n Separator: HeroSeparator,\n Skeleton: HeroSkeleton,\n Table: HeroTable,\n TableBody: HeroTableBody,\n TableCell: HeroTableCell,\n TableFooter: HeroTableFooter,\n TableHead: HeroTableHead,\n TableHeader: HeroTableHeader,\n TableRow: HeroTableRow,\n TooltipContent: HeroTooltipContent,\n};\n"]} \ No newline at end of file diff --git a/dist/chunk-HOUWU4KF.js b/dist/chunk-HOUWU4KF.js deleted file mode 100644 index db62933..0000000 --- a/dist/chunk-HOUWU4KF.js +++ /dev/null @@ -1,3 +0,0 @@ -import {i,a,h,g}from'./chunk-ZF4EP4WP.js';import*as k from'react';import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {flexRender}from'@tanstack/react-table';function Dt({columns:e,editableRows:t,onError:a}){let[r,l]=k.useState(null),[n,d]=k.useState({}),i=k.useRef(n),[h,f]=k.useState(false);k.useEffect(()=>{i.current=n;},[n]);let s=k.useCallback(()=>{l(null),d({});},[]),S=k.useCallback((u,m)=>{let c=t?.getInitialValues?.(u)??Oe(u,e);d(c),l(m);},[e,t]),C=k.useCallback(async u=>{if(t){f(true);try{await t.onSaveRow(u,i.current),k.startTransition(s);}catch(m){a?.(m,u);}finally{f(false);}}},[s,t,a]);return {cancelEditing:s,draftValues:n,editingRowId:r,isSavingEdit:h,saveEdit:C,setDraftValues:d,setEditingRowId:l,startEditingRow:S}}function Oe(e,t){return t.reduce((a,r)=>("accessorKey"in r&&typeof r.accessorKey=="string"&&(a[r.accessorKey]=e[r.accessorKey]),a),{})}function pe(e,t,a,r){let{Checkbox:l,Input:n}=r,d=e.column.columnDef,i=d.meta,h="accessorKey"in d&&typeof d.accessorKey=="string"?d.accessorKey:e.column.id,f=t[h],s=C=>{a(u=>({...u,[h]:C}));};if(i?.renderEditCell)return i.renderEditCell({cell:e,row:e.row.original,value:e.getValue(),draftValue:f,setDraftValue:s});let S=Ke(i?.type,f);return typeof f=="boolean"?jsx(l,{checked:f,onCheckedChange:C=>{s(C===true);}}):jsx(n,{type:S,value:i?.formatEditValue?i.formatEditValue(f,e):Be(f,S),onChange:C=>{let u=C.target.value,m=i?.parseEditValue?i.parseEditValue(u,e):Fe(u,S,f);s(m);}})}function Ke(e,t){return e==="numeric"||typeof t=="number"?"number":e==="date"||t instanceof Date?"datetime-local":"text"}function Be(e,t="text"){return e==null?"":e instanceof Date?t==="datetime-local"?e.toISOString().slice(0,16):e.toISOString():typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint"?String(e):""}function Fe(e,t,a){return t==="number"?e===""?null:Number(e):t==="datetime-local"?e?a instanceof Date?new Date(e):e:null:e}function T({children:e,viewBox:t="0 0 24 24",...a}){return jsx("svg",{"aria-hidden":"true",focusable:"false",width:"1em",height:"1em",viewBox:t,fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",...a,children:e})}function yt(e){return jsxs(T,{...e,children:[jsx("path",{d:"M4 7h4"}),jsx("path",{d:"M14 7h6"}),jsx("path",{d:"M10 5v4"}),jsx("path",{d:"M4 17h10"}),jsx("path",{d:"M18 17h2"}),jsx("path",{d:"M16 15v4"})]})}function ht(e){return jsx(T,{...e,children:jsx("path",{d:"M5 12l4 4L19 6"})})}function be(e){return jsx(T,{...e,children:jsx("path",{d:"M6 9l6 6 6-6"})})}function wt(e){return jsx(T,{...e,children:jsx("path",{d:"M15 6l-6 6 6 6"})})}function Rt(e){return jsx(T,{...e,children:jsx("path",{d:"M9 6l6 6-6 6"})})}function St(e){return jsx(T,{...e,children:jsx("path",{d:"M6 15l6-6 6 6"})})}function It(e){return jsxs(T,{...e,children:[jsx("path",{d:"M11 6l-6 6 6 6"}),jsx("path",{d:"M19 6l-6 6 6 6"})]})}function kt(e){return jsxs(T,{...e,children:[jsx("path",{d:"M5 6l6 6-6 6"}),jsx("path",{d:"M13 6l6 6-6 6"})]})}function De(e){return jsxs(T,{...e,children:[jsx("circle",{cx:"12",cy:"12",r:"9"}),jsx("path",{d:"M12 7v5l3 2"})]})}function xt(e){return jsxs(T,{...e,children:[jsx("ellipse",{cx:"12",cy:"5",rx:"7",ry:"3"}),jsx("path",{d:"M5 5v6c0 1.7 3.1 3 7 3s7-1.3 7-3V5"}),jsx("path",{d:"M5 11v6c0 1.7 3.1 3 7 3s7-1.3 7-3v-6"})]})}function Mt(e){return jsxs(T,{...e,children:[jsx("path",{d:"M5 12h.01"}),jsx("path",{d:"M12 12h.01"}),jsx("path",{d:"M19 12h.01"})]})}function Lt(e){return jsxs(T,{...e,children:[jsx("path",{d:"M12 3v12"}),jsx("path",{d:"M7 10l5 5 5-5"}),jsx("path",{d:"M5 21h14"})]})}function Et(e){return jsxs(T,{...e,children:[jsx("path",{d:"M4 20h4l11-11-4-4L4 16v4z"}),jsx("path",{d:"M13 7l4 4"})]})}function Nt(e){return jsxs(T,{...e,children:[jsx("path",{d:"M2 12s4-7 10-7 10 7 10 7-4 7-10 7S2 12 2 12z"}),jsx("circle",{cx:"12",cy:"12",r:"3"})]})}function Pt(e){return jsxs(T,{...e,children:[jsx("path",{d:"M3 3l18 18"}),jsx("path",{d:"M10.6 10.6a2 2 0 0 0 2.8 2.8"}),jsx("path",{d:"M9.9 5.3A10.5 10.5 0 0 1 12 5c6 0 10 7 10 7a18 18 0 0 1-3.2 4"}),jsx("path",{d:"M6.6 6.6C3.8 8.4 2 12 2 12s4 7 10 7a10.6 10.6 0 0 0 4.1-.8"})]})}function At(e){return jsxs(T,{...e,children:[jsx("path",{d:"M4 13l2-8h12l2 8"}),jsx("path",{d:"M4 13h5l2 3h2l2-3h5v6H4z"})]})}function Ht(e){return jsxs(T,{...e,children:[jsx("path",{d:"M4 4h6v6H4z"}),jsx("path",{d:"M14 4h6v6h-6z"}),jsx("path",{d:"M4 14h6v6H4z"}),jsx("path",{d:"M14 14h6v6h-6z"})]})}function _t(e){return jsxs(T,{...e,children:[jsx("path",{d:"M8 6h13"}),jsx("path",{d:"M8 12h13"}),jsx("path",{d:"M8 18h13"}),jsx("path",{d:"M3 6h.01"}),jsx("path",{d:"M3 12h.01"}),jsx("path",{d:"M3 18h.01"})]})}function zt(e){return jsxs(T,{...e,children:[jsx("circle",{cx:"11",cy:"11",r:"7"}),jsx("path",{d:"M16 16l5 5"})]})}function ge(e){return jsxs(T,{...e,children:[jsx("path",{d:"M8 9l4-4 4 4"}),jsx("path",{d:"M16 15l-4 4-4-4"})]})}function vt(e){return jsxs(T,{...e,children:[jsx("path",{d:"M18 6L6 18"}),jsx("path",{d:"M6 6l12 12"})]})}function ye(e,t,a$1){let r=e.column.columnDef,l=r.meta,n=e.getValue(),d=a$1?.hasCustomCell??false,i=d&&r.cell?flexRender(r.cell,e):void 0,h=Ge(i),f=je({context:e,useCustomOverflowDefaults:a$1?.useCustomOverflowDefaults??false,value:n});if(l?.type==="date"&&!d)return jsxs("div",{"data-dtp-slot":"data-table-cell-content","data-dtp-overflow":f,className:a(Te(f),"flex w-full min-w-0 items-center justify-end gap-2"),children:[jsx(De,{className:a("shrink-0",t?.mutedText??"opacity-70")}),jsx("span",{className:"min-w-0 truncate",children:$e(n)})]});let s=i!=null&&i!==""?i:n==null||n===""?jsx("span",{className:t?.mutedText??"opacity-70",children:"-"}):qe(n);return jsx("div",{"data-dtp-slot":"data-table-cell-content","data-dtp-overflow":f,className:a(Te(f),"w-full min-w-0 max-w-full",h&&"[&>*]:max-w-full [&>*]:min-w-0"),children:s})}function je({context:e,useCustomOverflowDefaults:t,value:a}){let r=e.column.columnDef,l=typeof r.meta?.overflow=="function"?r.meta.overflow({row:e.row.original,value:a}):r.meta?.overflow;return l||(t?"clip":"truncate")}function Te(e){switch(e){case "clip":return "block overflow-hidden whitespace-nowrap";case "wrap":return "block overflow-hidden whitespace-normal break-words";case "visible":return "block overflow-visible whitespace-normal";default:return "block overflow-hidden text-ellipsis whitespace-nowrap"}}function Ge(e){return e==null?false:k.isValidElement(e)||Array.isArray(e)||typeof e=="object"}function $e(e){return typeof e=="number"?new Date(e*1e3).toLocaleString():typeof e=="string"&&e?e:"-"}function qe(e){if(e instanceof Date)return e.toLocaleString();if(typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint")return String(e);try{return JSON.stringify(e)}catch{return "-"}}var he=Symbol("data-table-loading-row"),Gt=50;function $t(e){return Array.from({length:e},(t,a)=>({[he]:true,index:a}))}function ae(e){return !!(e&&typeof e=="object"&&he in e)}function qt(e){return `__loading__${e}`}function Jt(e){if(typeof e.meta?.minWidth=="number")return e.meta.minWidth;if(Object.prototype.hasOwnProperty.call(e,"minSize")){let t=e.minSize;if(typeof t=="number")return t}}function Ze(e){if("columns"in e&&Array.isArray(e.columns))return {...e,columns:e.columns.map(a=>Ze(a))};let t=e.meta?.filter;return !t||e.filterFn?e:{...e,filterFn:(a,r,l)=>{if(!Qe(l))return true;let n=a.getValue(r),d=t.getOptionValue?.(n,a.original)??G(n);return t.type==="multi"?Array.isArray(l)?l.map(String).includes(d):true:t.type==="select"?d===String(l):G(n).toLowerCase().includes(String(l).toLowerCase())}}}function Zt(e){return e.map(t=>typeof t=="string"?{label:Re(t),value:t}:t)}function G(e){if(e==null)return "";if(e instanceof Date)return e.toISOString();if(typeof e=="object")try{return JSON.stringify(e)}catch{return ""}return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint"||typeof e=="symbol"?String(e):""}function Qe(e){return Array.isArray(e)?e.length>0:e!=null&&e!==""}function Qt(e,t,a){let r=G(a).trim().toLowerCase();return r?G(e.getValue(t)).toLowerCase().includes(r):true}async function Xt({csvExport:e,table:t}){if(e===false)return;let a=e===true?{}:e,r=a.filename??"data-table.csv",l=a.scope??"filtered",n=a.columns?new Set(a.columns):void 0,d=t.getVisibleLeafColumns().filter(c=>!le(c.id)&&c.id!=="__spacer__"&&(!n||n.has(c.id))),i=Xe(t,l),h=[];(a.includeHeaders??true)&&h.push(d.map(c=>typeof c.columnDef.header=="string"?c.columnDef.header:Re(c.id)));for(let c of i)h.push(d.map(w=>{let x=c.getValue(w.id);return a.getCellValue?a.getCellValue({row:c.original,rowId:c.id,columnId:w.id,value:x}):x}));let f=a.lineEnding??`\r -`,s=a.escapeFormulaValues??true,S=h.map(c=>c.map(w=>Ye(w,s)).join(",")).join(f);if(a.onExport){await a.onExport({csv:S,filename:r,rows:i.map(c=>c.original),scope:l});return}if(typeof window>"u")return;let C=new Blob([S],{type:"text/csv;charset=utf-8"}),u=window.URL.createObjectURL(C),m=window.document.createElement("a");m.href=u,m.download=r,m.click(),window.URL.revokeObjectURL(u);}function Xe(e,t){switch(t){case "page":return e.getRowModel().rows;case "selected":return e.getPrePaginationRowModel().rows.filter(a=>a.getIsSelected());case "all":return e.getCoreRowModel().rows;default:return e.getPrePaginationRowModel().rows}}function Ye(e,t){let a=G(e);return t&&typeof e=="string"&&/^[\t\r ]*[=+\-@]/.test(e)&&(a=`'${a}`),/[",\n\r]/.test(a)?`"${a.replace(/"/g,'""')}"`:a}function Yt(e){let t=[],a=[];for(let[r,l]of e.entries()){let n=et(l,r);l.meta?.fixed==="left"&&t.push(n),l.meta?.fixed==="right"&&a.push(n);}return {left:t,right:a}}function et(e,t){if(e.id)return e.id;let a=tt(e);return a||`column-${t}`}function tt(e){if("accessorKey"in e&&typeof e.accessorKey=="string")return e.accessorKey}function ea(e){let t=e.getIsPinned();return t||(e.id==="__select__"||e.id==="__expand__"?"left":e.id==="__actions__"?"right":e.columnDef.meta?.fixed)}function ta(e,t,a$1){let r=a$1?.isUtilityColumn??false;return a("sticky backdrop-blur box-border",t.pinnedColumn,!r&&"border-dotted",r?t.pinnedUtilityColumn:void 0,e==="left"?"border-r-1":"border-l")}function le(e){return e==="__select__"||e==="__expand__"||e==="__actions__"}function we(e){switch(e){case "compact":return "h-8 py-1";case "spacious":return "h-14 py-4";default:return}}function ie(e){switch(e){case "compact":return "py-1.5";case "spacious":return "py-4";default:return}}function aa(e,t,a){let r=e.includes(t)?e.slice():[...e,t],l=r.indexOf(t),n=r.indexOf(a);if(l<0||n<0||l===n)return r;let[d]=r.splice(l,1);return r.splice(n,0,d),r}function Re(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,t=>t.toUpperCase())}function at({columnLayouts:e,components:t,currentDensity:a$1,draftValues:r,dragAndDrop:l,explicitCustomCellColumnIds:n,getRowClassName:d,isDraggable:i$1,isEditing:h$1,isExpanded:f,isInitialLoadingRow:s,isSelected:S,loadingState:C,onRowClick:u,originalRow:m,renderExpandedRow:c,row:w,setDraftValues:x,uiClassNames:N,visibleCells:D,visibleLeafColumnCount:L}){let{Checkbox:z,Input:v,Skeleton:P,TableCell:q,TableRow:J}=t;return jsxs(k.Fragment,{children:[jsx(J,{"data-row-id":w.id,draggable:s?false:i$1,"data-loading":C?.isLoading||void 0,"data-state":s?void 0:S?"selected":void 0,tabIndex:u&&!s?0:void 0,className:a(!s&&d?.(m),N.row,S&&!s&&N.rowSelected,u&&!s&&"cursor-pointer",s&&"pointer-events-none"),onClick:g=>{s||g.target?.closest("[data-row-click-ignore='true']")||u?.({row:m,rowId:w.id});},onKeyDown:g=>{s||!u||g.key!=="Enter"&&g.key!==" "||g.target?.closest("[data-row-click-ignore='true']")||(g.preventDefault(),u({row:m,rowId:w.id}));},onDragStart:g=>{s||l?.onRowDragStart?.({row:m,rowId:w.id,event:g});},onDragEnd:g=>{s||l?.onRowDragEnd?.({row:m,rowId:w.id,event:g});},children:D.map(g=>{let I=g.column.columnDef.meta,U=g.getContext(),oe=g.getValue(),E=e.get(g.column.id),K=E?.isSelectionColumn??false,B=E?.isExpansionColumn??false,F=E?.isActionsColumn??false,Z=E?.isSpacerColumn??false,Q=i(I?.hideOn),A=s||ae(m)?void 0:typeof I?.cellClassName=="function"?I.cellClassName({row:m,value:oe}):I?.cellClassName;return jsx(q,{className:a("border-b",ie(a$1),N.cellBorder,E?.utilityClassName,E?.isSpacerColumn&&"border-b-0 bg-transparent p-0",E?.pinnedClassName,Q,h(U),I?.responsiveClassName,A),style:E?.cellStyle,children:jsx("div",{"data-row-click-ignore":K||B||F?"true":void 0,className:"min-w-0 max-w-full",children:C?.isLoading?I?.skeleton?.(U)??C.skeleton??jsx(P,{className:a("h-4 rounded",I?.type==="numeric"?"ml-auto w-16":I?.type==="date"?"ml-auto w-28":"w-full")}):h$1&&g.column.id!=="__select__"&&g.column.id!=="__expand__"&&g.column.id!=="__actions__"?pe(U,r,x,{Checkbox:z,Input:v}):ye(U,N,{hasCustomCell:n.has(g.column.id)||K||B||F||Z,useCustomOverflowDefaults:n.has(g.column.id)||K||B||F||Z})})},g.id)})}),!s&&c&&f?jsx(J,{children:jsx(q,{colSpan:Math.max(1,L),className:a("border-b",ie(a$1),N.cellBorder),children:c({row:m,rowId:w.id,tableRow:w})})}):null]})}function nt(e,t){return e.row.id===t.row.id&&e.row.original===t.row.original&&e.rowIndex===t.rowIndex&&e.isSelected===t.isSelected&&e.isInitialLoadingRow===t.isInitialLoadingRow&&e.isEditing===t.isEditing&&e.isExpanded===t.isExpanded&&e.isDraggable===t.isDraggable&&ot(e.loadingState,t.loadingState)&&rt(e.visibleCells,t.visibleCells)&&e.components===t.components&<(e.columnLayouts,t.columnLayouts,t.visibleCells)&&e.currentDensity===t.currentDensity&&e.renderExpandedRow===t.renderExpandedRow&&e.onRowClick===t.onRowClick&&e.dragAndDrop===t.dragAndDrop&&e.getRowClassName===t.getRowClassName&&e.uiClassNames===t.uiClassNames&&e.explicitCustomCellColumnIds===t.explicitCustomCellColumnIds&&(!e.isEditing||e.draftValues===t.draftValues)}function ot(e,t){return e?.isLoading===t?.isLoading&&e?.skeleton===t?.skeleton}function rt(e,t){return e.length===t.length&&e.every((a,r)=>{let l=t[r];return l?.id===a.id&&l.column.id===a.column.id})}function lt(e,t,a){return a.every(r=>{let l=e.get(r.column.id),n=t.get(r.column.id);return l?.fixedSide===n?.fixedSide&&l?.isActionsColumn===n?.isActionsColumn&&l?.isExpansionColumn===n?.isExpansionColumn&&l?.isSelectionColumn===n?.isSelectionColumn&&l?.isSpacerColumn===n?.isSpacerColumn&&l?.isUtilityColumn===n?.isUtilityColumn&&l?.pinnedClassName===n?.pinnedClassName&&l?.utilityClassName===n?.utilityClassName&&it(l?.cellStyle,n?.cellStyle)})}function it(e,t){return e?.width===t?.width&&e?.minWidth===t?.minWidth&&e?.maxWidth===t?.maxWidth&&e?.insetInlineStart===t?.insetInlineStart&&e?.insetInlineEnd===t?.insetInlineEnd}var Se=k.memo(at,nt);function ct({currentDensity:e,currentSorting:t,draggedColumnIdRef:a$1,enableColumnReordering:r,enableColumnResizing:l,header:n,headerGroupHeaders:d,layout:i$1,primeColumnForResize:h,reorderColumn:f,resetColumnSize:s,TableHead:S,uiClassNames:C}){let u=n.column.columnDef.meta,m=n.column.getCanSort(),c=n.column.getIsSorted(),w=t.findIndex(D=>D.id===n.column.id),x=r&&!i$1.isUtilityColumn&&!i$1.isSpacerColumn,N=i(u?.hideOn);return jsxs(S,{colSpan:n.colSpan,"data-column-id":n.column.id,className:a("relative border-b",we(e),i$1.utilityClassName,i$1.isSpacerColumn&&"border-b-1 bg-transparent p-0",i$1.pinnedClassName,N,g(n.getContext()),u?.headerClassName,u?.responsiveClassName),style:i$1.headerStyle,"aria-sort":c==="asc"?"ascending":c==="desc"?"descending":m?"none":void 0,draggable:x,tabIndex:x?0:void 0,onDragStart:x?D=>{a$1.current=n.column.id,D.dataTransfer.effectAllowed="move";}:void 0,onDragOver:x?D=>{D.preventDefault(),D.dataTransfer.dropEffect="move";}:void 0,onDrop:x?D=>{D.preventDefault();let L=a$1.current;a$1.current=null,L&&f(L,n.column.id);}:void 0,onKeyDown:x?D=>{if(!D.altKey||D.key!=="ArrowLeft"&&D.key!=="ArrowRight")return;D.preventDefault();let L=d.filter(P=>!le(P.column.id)&&P.column.id!=="__spacer__"),z=L.findIndex(P=>P.column.id===n.column.id),v=L[D.key==="ArrowLeft"?z-1:z+1];v&&f(n.column.id,v.column.id);}:void 0,children:[n.isPlaceholder?null:m?jsxs("button",{type:"button",className:a("flex w-full items-center gap-2 font-medium",g(n.getContext())),onClick:n.column.getToggleSortingHandler(),children:[jsx("span",{className:"truncate",children:flexRender(n.column.columnDef.header,n.getContext())}),c?jsxs(Fragment,{children:[jsx(be,{className:a("size-4 shrink-0 transition-transform",c==="desc"?"rotate-0":"rotate-180")}),t.length>1&&w>=0?jsx("span",{className:"inline-flex size-4 shrink-0 items-center justify-center rounded-full text-[10px] leading-none",children:w+1}):null]}):jsx(ge,{className:a("size-4 shrink-0",C.headerSortIcon??"opacity-70")})]}):flexRender(n.column.columnDef.header,n.getContext()),l&&n.column.getCanResize()?jsx("div",{onDoubleClick:()=>{s(n.column.id);},onMouseDown:D=>{h(n.column.id,n.getSize()),n.getResizeHandler()(D);},onTouchStart:D=>{h(n.column.id,n.getSize()),n.getResizeHandler()(D);},className:a("absolute inset-y-0 right-0 z-50 h-full w-3 translate-x-1/2 cursor-col-resize touch-none select-none after:absolute after:top-0 after:left-1/2 after:h-full after:w-px after:-translate-x-1/2",C.resizeHandle??"after:bg-current after:opacity-20 hover:after:opacity-70",n.column.getIsResizing()&&(C.resizeHandleActive??"after:opacity-100"))}):null]},n.id)}function dt(e,t){return e.header.id===t.header.id&&e.header.column.id===t.header.column.id&&e.currentDensity===t.currentDensity&&e.enableColumnReordering===t.enableColumnReordering&&e.enableColumnResizing===t.enableColumnResizing&&e.TableHead===t.TableHead&&e.uiClassNames===t.uiClassNames&&e.draggedColumnIdRef===t.draggedColumnIdRef&&e.primeColumnForResize===t.primeColumnForResize&&e.reorderColumn===t.reorderColumn&&e.resetColumnSize===t.resetColumnSize&&e.selectionState===t.selectionState&&ut(e.currentSorting,t.currentSorting)&&mt(e.headerGroupHeaders,t.headerGroupHeaders)&&ft(e.layout,t.layout)}function ut(e,t){return e.length===t.length&&e.every((a,r)=>{let l=t[r];return l?.id===a.id&&l.desc===a.desc})}function mt(e,t){return e.length===t.length&&e.every((a,r)=>t[r]?.id===a.id)}function ft(e,t){return e.fixedSide===t.fixedSide&&e.isSpacerColumn===t.isSpacerColumn&&e.isUtilityColumn===t.isUtilityColumn&&e.pinnedClassName===t.pinnedClassName&&e.utilityClassName===t.utilityClassName&&e.headerStyle?.width===t.headerStyle?.width&&e.headerStyle?.minWidth===t.headerStyle?.minWidth&&e.headerStyle?.maxWidth===t.headerStyle?.maxWidth&&e.headerStyle?.insetInlineStart===t.headerStyle?.insetInlineStart&&e.headerStyle?.insetInlineEnd===t.headerStyle?.insetInlineEnd}var xe=k.memo(ct,dt);function Ra({bodyRowComponents:e,columnLayouts:t,currentDensity:a$1,currentSorting:r=[],DataTableEmptyState:l,dragAndDrop:n,draggedColumnIdRef:d,draftValues:i,editingRowId:h,emptyNode:f,enableColumnReordering:s,enableColumnResizing:S,explicitCustomCellColumnIds:C,fillMinWidth:u,flexGrow:m,getColumnLayout:c,getRowClassName:w,getRowLoadingState:x,infiniteScroll:N,layoutMode:D,localSearchValue:L,onRowClick:z,primeColumnForResize:v,renderedRows:P,renderExpandedRow:q,reorderColumn:J,resetColumnSize:g,resolvedLabels:I,rowsToRender:U,ScrollArea:oe,ScrollBar:E,sentinelRef:K,setDraftValues:B,shouldRenderInitialLoading:F,stickyHeader:Z,summaryRows:Q,table:A,tableClassName:Me,tableContainerClassName:Le,Table:Ee,TableBody:Ne,TableCell:X,TableFooter:Pe="tfoot",TableHead:Ae,TableHeader:He,TableRow:W,tableScrollContainerRef:_e,uiClassNames:H,virtualPaddingBottom:de,virtualPaddingTop:ue,visibleLeafColumnCount:Y,visibleLeafColumns:ze}){let ve=A.getIsAllPageRowsSelected()?true:A.getIsSomePageRowsSelected()?"indeterminate":false;return jsx("div",{"data-dtp-slot":"data-table-table-shell",className:a("box-border border-2 border-transparent transition-colors",m?"flex min-h-0 flex-1 flex-col":"h-full",n?.isDragging&&(H.dragActive??"rounded-md border-dashed")),children:jsx("div",{ref:_e,className:a(m?"flex min-h-0 flex-1 flex-col":"h-full"),children:jsxs(oe,{className:a("rounded-md border",m?"min-h-0 flex-1":"h-full",H.tableContainer,H.tableScrollArea,Le),children:[jsx("div",{className:"min-h-full",children:jsxs(Ee,{className:a("w-full table-fixed border-separate border-spacing-0",Me),style:{minWidth:D==="fill"&&u||void 0,width:D==="fit"?A.getTotalSize():"100%"},children:[jsx("colgroup",{children:A.getVisibleLeafColumns().map(y=>{let M=c(y.id);return jsx("col",{style:M.colStyle},y.id)})}),jsx(He,{className:a(Z?H.tableStickyHeader??"sticky top-0 z-30 backdrop-blur":void 0),children:A.getHeaderGroups().map(y=>jsx(W,{children:y.headers.map(M=>jsx(xe,{currentDensity:a$1,currentSorting:r,draggedColumnIdRef:d,enableColumnReordering:s,enableColumnResizing:S,header:M,headerGroupHeaders:y.headers,layout:c(M.column.id),primeColumnForResize:v,reorderColumn:J,resetColumnSize:g,selectionState:M.column.id==="__select__"?ve:void 0,TableHead:Ae,uiClassNames:H},M.id))},y.id))}),jsx(Ne,{children:P.length?jsxs(Fragment,{children:[ue>0?jsx(W,{"aria-hidden":"true",children:jsx(X,{colSpan:Math.max(1,Y),className:"border-b-0 p-0",style:{height:ue}})}):null,U.map(({row:y,rowIndex:M})=>{let V=y.original,_=ae(V),j=_?{isLoading:true}:x?.(V,M),Ue=typeof j=="boolean"?{isLoading:j}:j,Ve=_?false:n?.getRowDraggable?.(V)??false;return jsx(Se,{columnLayouts:t,components:e,currentDensity:a$1,draftValues:i,dragAndDrop:n,explicitCustomCellColumnIds:C,getRowClassName:w,isDraggable:Ve,isEditing:h===y.id,isExpanded:y.getIsExpanded(),isInitialLoadingRow:_,isSelected:y.getIsSelected(),loadingState:Ue,onRowClick:z,originalRow:V,renderExpandedRow:q,row:y,rowIndex:M,setDraftValues:B,uiClassNames:H,visibleCells:y.getVisibleCells(),visibleLeafColumnCount:Y},y.id)}),de>0?jsx(W,{"aria-hidden":"true",children:jsx(X,{colSpan:Math.max(1,Y),className:"border-b-0 p-0",style:{height:de}})}):null]}):jsx(W,{children:jsx(X,{colSpan:Math.max(1,Y),className:"h-full grow",children:jsx("div",{className:"flex h-full min-h-full w-full grow items-center justify-center",children:f??jsx(l,{title:L?I.noMatchingRowsTitle:I.noRowsTitle,description:L?I.noMatchingRowsDescription:I.noRowsDescription})})})})}),Q.length?jsx(Pe,{children:Q.map(y=>jsx(W,{children:ze.map((M,V)=>{let _=y.cells[M.id]??(V===0?y.label:null);return jsx(X,{className:a("border-b font-medium",H.cellBorder),children:typeof _=="function"?_({rows:A.getFilteredRowModel().rows.map(j=>j.original),columnId:M.id}):_},`${y.key}-${M.id}`)})},y.key))}):null]})}),N?.enabled&&P.length&&!F?jsx("div",{className:"px-4 pb-4",children:jsx("div",{ref:K,className:"h-4 w-full"})}):null,jsx(E,{orientation:"horizontal"})]})})})}export{Zt as A,Qe as B,Qt as C,Xt as D,Yt as E,et as F,tt as G,ea as H,ta as I,le as J,aa as K,Re as L,Dt as M,Se as N,xe as O,Ra as P,yt as a,ht as b,be as c,wt as d,Rt as e,St as f,It as g,kt as h,xt as i,Mt as j,Lt as k,Et as l,Nt as m,Pt as n,At as o,Ht as p,_t as q,zt as r,ge as s,vt as t,Gt as u,$t as v,ae as w,qt as x,Jt as y,Ze as z};//# sourceMappingURL=chunk-HOUWU4KF.js.map -//# sourceMappingURL=chunk-HOUWU4KF.js.map \ No newline at end of file diff --git a/dist/chunk-HOUWU4KF.js.map b/dist/chunk-HOUWU4KF.js.map deleted file mode 100644 index 3dec8da..0000000 --- a/dist/chunk-HOUWU4KF.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/core/data-table/use-row-editing.tsx","../src/core/icons.tsx","../src/core/data-table/data-table-cell-content.tsx","../src/core/data-table/data-table-utils.ts","../src/core/data-table/data-table-body-row.tsx","../src/core/data-table/data-table-header-cell.tsx","../src/core/data-table/data-table-table-panel.tsx"],"names":["useRowEditing","columns","editableRows","onError","editingRowId","setEditingRowId","draftValues","setDraftValues","draftValuesRef","isSavingEdit","setIsSavingEdit","cancelEditing","startEditingRow","row","rowId","initialValues","defaultDraftValues","saveEdit","error","draft","column","renderEditableCell","context","components","Checkbox","Input","meta","accessorKey","draftValue","setDraftValue","value","current","inputType","getEditableInputType","jsx","checked","getEditableInputValue","event","rawValue","parsedValue","parseEditableInputValue","type","previousValue","Icon","children","viewBox","props","IconAdjustmentsHorizontal","jsxs","IconCheck","IconChevronDown","IconChevronLeft","IconChevronRight","IconChevronUp","IconChevronsLeft","IconChevronsRight","IconClock","IconDatabase","IconDots","IconDownload","IconEdit","IconEye","IconEyeOff","IconInbox","IconLayoutGrid","IconList","IconSearch","IconSelector","IconX","renderDataTableCellContent","classNames","options","hasCustomCell","renderedCellContent","flexRender","hasComplexRenderedContent","isComplexRenderedCellContent","resolvedOverflow","resolveDataTableCellOverflow","cn","getCellOverflowClassName","formatDateValue","content","formatCellValue","useCustomOverflowDefaults","overflow","Ce","DATA_TABLE_LOADING_ROW","UTILITY_COLUMN_SIZE","createDataTableLoadingRows","count","_","index","isDataTableLoadingRow","getDataTableLoadingRowId","getConfiguredColumnMinWidth","minSize","decorateFilterableColumn","childColumn","filter","columnId","filterValue","hasFilterValue","optionValue","normalizeFilterValue","normalizeColumnFilterOptions","option","startCase","dataTableGlobalFilterFn","normalizedQuery","exportDataTableCsv","csvExport","table","filename","scope","exportColumnIds","isUtilityColumnId","rows","getCsvExportRows","csvRows","lineEnding","escapeFormulaValues","csv","escapeCsvCell","blob","url","anchor","text","getInitialColumnPinning","left","right","getColumnId","getAccessorKey","getFixedSide","pinnedSide","getPinnedColumnClassName","side","uiClassNames","isUtilityColumn","getDensityHeaderClassName","density","getDensityCellClassName","moveColumnInOrder","currentOrder","sourceColumnId","targetColumnId","order","sourceIndex","targetIndex","source","character","DataTableBodyRowInner","columnLayouts","currentDensity","dragAndDrop","explicitCustomCellColumnIds","getRowClassName","isDraggable","isEditing","isExpanded","isInitialLoadingRow","isSelected","loadingState","onRowClick","originalRow","renderExpandedRow","visibleCells","visibleLeafColumnCount","Skeleton","TableCell","TableRow","ne","cell","cellContext","layout","isSelectionColumn","isExpansionColumn","isActionsColumn","isSpacerColumn","hideClassName","hideOnClassName","cellClassName","cellAlignClassName","areDataTableBodyRowsEqual","previous","next","sameLoadingState","sameVisibleCells","sameColumnLayouts","nextCell","cells","previousLayout","nextLayout","sameCellStyle","DataTableBodyRow","DataTableHeaderCellInner","currentSorting","draggedColumnIdRef","enableColumnReordering","enableColumnResizing","header","headerGroupHeaders","primeColumnForResize","reorderColumn","resetColumnSize","TableHead","canSort","sortingState","sortingIndex","sort","canReorderColumn","headerAlignClassName","headers","item","currentIndex","target","Fragment","areDataTableHeaderCellsEqual","sameSorting","sameHeaderGroupHeaders","sameHeaderLayout","nextSort","DataTableHeaderCell","ke","DataTableTablePanel","bodyRowComponents","DataTableEmptyState","emptyNode","fillMinWidth","flexGrow","getColumnLayout","getRowLoadingState","infiniteScroll","layoutMode","localSearchValue","renderedRows","resolvedLabels","rowsToRender","ScrollArea","ScrollBar","sentinelRef","shouldRenderInitialLoading","stickyHeader","summaryRows","tableClassName","tableContainerClassName","Table","TableBody","TableFooter","TableHeader","tableScrollContainerRef","virtualPaddingBottom","virtualPaddingTop","visibleLeafColumns","selectionState","headerGroup","rowIndex","resolvedLoadingState","summaryRow"],"mappings":"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","file":"chunk-HOUWU4KF.js","sourcesContent":["import * as React from \"react\";\nimport type { CellContext } from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableColumnType,\n DataTableEditableRowsConfig,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\n\nexport function useRowEditing({\n columns,\n editableRows,\n onError,\n}: {\n columns: Array>;\n editableRows: DataTableEditableRowsConfig | undefined;\n onError?: (error: unknown, row: TData) => void;\n}) {\n const [editingRowId, setEditingRowId] = React.useState(null);\n const [draftValues, setDraftValues] = React.useState<\n Record\n >({});\n const draftValuesRef = React.useRef(draftValues);\n const [isSavingEdit, setIsSavingEdit] = React.useState(false);\n\n React.useEffect(() => {\n draftValuesRef.current = draftValues;\n }, [draftValues]);\n\n const cancelEditing = React.useCallback(() => {\n setEditingRowId(null);\n setDraftValues({});\n }, []);\n\n const startEditingRow = React.useCallback(\n (row: TData, rowId: string) => {\n const initialValues =\n editableRows?.getInitialValues?.(row) ??\n defaultDraftValues(row, columns);\n setDraftValues(initialValues);\n setEditingRowId(rowId);\n },\n [columns, editableRows],\n );\n\n const saveEdit = React.useCallback(\n async (row: TData) => {\n if (!editableRows) {\n return;\n }\n\n setIsSavingEdit(true);\n try {\n await editableRows.onSaveRow(row, draftValuesRef.current);\n React.startTransition(cancelEditing);\n } catch (error) {\n onError?.(error, row);\n } finally {\n setIsSavingEdit(false);\n }\n },\n [cancelEditing, editableRows, onError],\n );\n\n return {\n cancelEditing,\n draftValues,\n editingRowId,\n isSavingEdit,\n saveEdit,\n setDraftValues,\n setEditingRowId,\n startEditingRow,\n };\n}\n\nfunction defaultDraftValues(\n row: TData,\n columns: Array>,\n) {\n return columns.reduce>((draft, column) => {\n if (\"accessorKey\" in column && typeof column.accessorKey === \"string\") {\n draft[column.accessorKey] = (row as Record)[\n column.accessorKey\n ];\n }\n return draft;\n }, {});\n}\n\nexport function renderEditableCell(\n context: CellContext,\n draftValues: Record,\n setDraftValues: React.Dispatch>>,\n components: Pick,\n) {\n const { Checkbox, Input } = components;\n const column = context.column.columnDef as DataTableColumnDef;\n const meta = column.meta;\n const accessorKey =\n \"accessorKey\" in column && typeof column.accessorKey === \"string\"\n ? column.accessorKey\n : context.column.id;\n const draftValue = draftValues[accessorKey];\n const setDraftValue = (value: unknown) => {\n setDraftValues((current) => ({\n ...current,\n [accessorKey]: value,\n }));\n };\n\n if (meta?.renderEditCell) {\n return meta.renderEditCell({\n cell: context,\n row: context.row.original,\n value: context.getValue(),\n draftValue,\n setDraftValue,\n });\n }\n\n const inputType = getEditableInputType(meta?.type, draftValue);\n\n if (typeof draftValue === \"boolean\") {\n return (\n {\n setDraftValue(checked === true);\n }}\n />\n );\n }\n\n return (\n ) => {\n const rawValue = event.target.value;\n const parsedValue = meta?.parseEditValue\n ? meta.parseEditValue(rawValue, context)\n : parseEditableInputValue(rawValue, inputType, draftValue);\n setDraftValue(parsedValue);\n }}\n />\n );\n}\n\nfunction getEditableInputType(\n type: DataTableColumnType | undefined,\n value: unknown,\n) {\n if (type === \"numeric\" || typeof value === \"number\") {\n return \"number\";\n }\n\n if (type === \"date\" || value instanceof Date) {\n return \"datetime-local\";\n }\n\n return \"text\";\n}\n\nfunction getEditableInputValue(value: unknown, inputType = \"text\") {\n if (value == null) {\n return \"\";\n }\n\n if (value instanceof Date) {\n return inputType === \"datetime-local\"\n ? value.toISOString().slice(0, 16)\n : value.toISOString();\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n typeof value === \"bigint\"\n ) {\n return String(value);\n }\n\n return \"\";\n}\n\nfunction parseEditableInputValue(\n value: string,\n inputType: string,\n previousValue: unknown,\n) {\n if (inputType === \"number\") {\n return value === \"\" ? null : Number(value);\n }\n\n if (inputType === \"datetime-local\") {\n if (!value) {\n return null;\n }\n return previousValue instanceof Date ? new Date(value) : value;\n }\n\n return value;\n}\n","import * as React from \"react\";\n\ntype IconProps = React.SVGProps;\n\nfunction Icon({\n children,\n viewBox = \"0 0 24 24\",\n ...props\n}: IconProps & { children: React.ReactNode }) {\n return (\n \n {children}\n \n );\n}\n\nexport function IconAdjustmentsHorizontal(props: IconProps) {\n return (\n \n \n \n \n \n \n \n \n );\n}\n\nexport function IconArchive(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconBell(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconBriefcase(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconCheck(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronDown(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronLeft(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronRight(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronUp(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronsLeft(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconChevronsRight(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconClock(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconDatabase(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconDots(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconDownload(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconEdit(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconEye(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconEyeOff(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconFileUpload(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconInbox(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconLayoutGrid(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconList(props: IconProps) {\n return (\n \n \n \n \n \n \n \n \n );\n}\n\nexport function IconRefresh(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconSearch(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconSelector(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconSparkles(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconStar(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconUserCheck(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconX(props: IconProps) {\n return (\n \n \n \n \n );\n}\n","import * as React from \"react\";\nimport { flexRender, type CellContext } from \"@tanstack/react-table\";\nimport { IconClock } from \"../icons\";\nimport type {\n DataTableCellOverflow,\n DataTableColumnDef,\n} from \"../types\";\nimport type { DataTableUiClassNames } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nexport function renderDataTableCellContent(\n context: CellContext,\n classNames?: DataTableUiClassNames,\n options?: {\n hasCustomCell?: boolean;\n useCustomOverflowDefaults?: boolean;\n },\n) {\n const column = context.column.columnDef as DataTableColumnDef;\n const meta = column.meta;\n const value = context.getValue();\n const hasCustomCell = options?.hasCustomCell ?? false;\n const renderedCellContent = hasCustomCell && column.cell\n ? flexRender(column.cell, context)\n : undefined;\n const hasComplexRenderedContent = isComplexRenderedCellContent(\n renderedCellContent,\n );\n const resolvedOverflow = resolveDataTableCellOverflow({\n context,\n useCustomOverflowDefaults: options?.useCustomOverflowDefaults ?? false,\n value,\n });\n\n if (meta?.type === \"date\" && !hasCustomCell) {\n return (\n \n \n {formatDateValue(value)}\n \n );\n }\n\n const content =\n renderedCellContent !== undefined &&\n renderedCellContent !== null &&\n renderedCellContent !== \"\"\n ? renderedCellContent\n : value == null || value === \"\"\n ? -\n : formatCellValue(value);\n\n return (\n *]:max-w-full [&>*]:min-w-0\",\n )}\n >\n {content}\n \n );\n}\n\nfunction resolveDataTableCellOverflow({\n context,\n useCustomOverflowDefaults,\n value,\n}: {\n context: CellContext;\n useCustomOverflowDefaults: boolean;\n value: unknown;\n}): DataTableCellOverflow {\n const column = context.column.columnDef as DataTableColumnDef;\n const resolvedOverflow =\n typeof column.meta?.overflow === \"function\"\n ? column.meta.overflow({\n row: context.row.original,\n value,\n })\n : column.meta?.overflow;\n\n if (resolvedOverflow) {\n return resolvedOverflow;\n }\n\n return useCustomOverflowDefaults ? \"clip\" : \"truncate\";\n}\n\nfunction getCellOverflowClassName(overflow: DataTableCellOverflow) {\n switch (overflow) {\n case \"clip\":\n return \"block overflow-hidden whitespace-nowrap\";\n case \"wrap\":\n return \"block overflow-hidden whitespace-normal break-words\";\n case \"visible\":\n return \"block overflow-visible whitespace-normal\";\n case \"truncate\":\n default:\n return \"block overflow-hidden text-ellipsis whitespace-nowrap\";\n }\n}\n\nfunction isComplexRenderedCellContent(content: React.ReactNode) {\n if (content == null) {\n return false;\n }\n\n return (\n React.isValidElement(content) ||\n Array.isArray(content) ||\n typeof content === \"object\"\n );\n}\n\nfunction formatDateValue(value: unknown) {\n if (typeof value === \"number\") {\n return new Date(value * 1000).toLocaleString();\n }\n\n if (typeof value === \"string\" && value) {\n return value;\n }\n\n return \"-\";\n}\n\nfunction formatCellValue(value: unknown) {\n if (value instanceof Date) {\n return value.toLocaleString();\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n typeof value === \"bigint\"\n ) {\n return String(value);\n }\n\n try {\n return JSON.stringify(value);\n } catch {\n return \"-\";\n }\n}\n","import type {\n Column,\n ColumnDef,\n ColumnPinningState,\n Row,\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableColumnFilterOption,\n DataTableCsvExportOptions,\n DataTableCsvExportScope,\n DataTableDensity,\n DataTableLabels,\n} from \"../types\";\nimport type { DataTableUiClassNames } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nconst DATA_TABLE_LOADING_ROW = Symbol(\"data-table-loading-row\");\n\nexport const UTILITY_COLUMN_SIZE = 50;\n\ntype DataTableLoadingRow = {\n [DATA_TABLE_LOADING_ROW]: true;\n index: number;\n};\n\nexport function createDataTableLoadingRows(count: number) {\n return Array.from({ length: count }, (_, index) => {\n return {\n [DATA_TABLE_LOADING_ROW]: true,\n index,\n } as DataTableLoadingRow as TData;\n });\n}\n\nexport function isDataTableLoadingRow(\n row: unknown,\n): row is DataTableLoadingRow {\n return Boolean(\n row &&\n typeof row === \"object\" &&\n DATA_TABLE_LOADING_ROW in (row as Record),\n );\n}\n\nexport function getDataTableLoadingRowId(index: number) {\n return `__loading__${index}`;\n}\n\nexport function getConfiguredColumnMinWidth(\n column: DataTableColumnDef,\n) {\n if (typeof column.meta?.minWidth === \"number\") {\n return column.meta.minWidth;\n }\n\n if (Object.prototype.hasOwnProperty.call(column, \"minSize\")) {\n const minSize = (column as { minSize?: unknown }).minSize;\n\n if (typeof minSize === \"number\") {\n return minSize;\n }\n }\n\n return undefined;\n}\n\nexport function decorateFilterableColumn(\n column: DataTableColumnDef,\n): ColumnDef {\n if (\"columns\" in column && Array.isArray(column.columns)) {\n return {\n ...column,\n columns: column.columns.map((childColumn) =>\n decorateFilterableColumn(\n childColumn as DataTableColumnDef,\n ),\n ),\n };\n }\n\n const filter = column.meta?.filter;\n if (!filter || column.filterFn) {\n return column;\n }\n\n return {\n ...column,\n filterFn: (row, columnId, filterValue) => {\n if (!hasFilterValue(filterValue)) {\n return true;\n }\n\n const value = row.getValue(columnId);\n const optionValue =\n filter.getOptionValue?.(value, row.original) ??\n normalizeFilterValue(value);\n\n if (filter.type === \"multi\") {\n return Array.isArray(filterValue)\n ? filterValue.map(String).includes(optionValue)\n : true;\n }\n\n if (filter.type === \"select\") {\n return optionValue === String(filterValue);\n }\n\n return normalizeFilterValue(value)\n .toLowerCase()\n .includes(String(filterValue).toLowerCase());\n },\n };\n}\n\nexport function normalizeColumnFilterOptions(\n options: Array,\n) {\n return options.map((option) =>\n typeof option === \"string\"\n ? { label: startCase(option), value: option }\n : option,\n );\n}\n\nexport function normalizeFilterValue(value: unknown) {\n if (value == null) {\n return \"\";\n }\n\n if (value instanceof Date) {\n return value.toISOString();\n }\n\n if (typeof value === \"object\") {\n try {\n return JSON.stringify(value);\n } catch {\n return \"\";\n }\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n typeof value === \"bigint\" ||\n typeof value === \"symbol\"\n ) {\n return String(value);\n }\n\n return \"\";\n}\n\nexport function hasFilterValue(value: unknown) {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n\n return value !== undefined && value !== null && value !== \"\";\n}\n\nexport function dataTableGlobalFilterFn(\n row: Row,\n columnId: string,\n filterValue: unknown,\n) {\n const normalizedQuery = normalizeFilterValue(filterValue)\n .trim()\n .toLowerCase();\n\n if (!normalizedQuery) {\n return true;\n }\n\n return normalizeFilterValue(row.getValue(columnId))\n .toLowerCase()\n .includes(normalizedQuery);\n}\n\nexport async function exportDataTableCsv({\n csvExport,\n table,\n}: {\n csvExport: boolean | DataTableCsvExportOptions;\n table: TanStackTable;\n labels: DataTableLabels;\n}) {\n if (csvExport === false) {\n return;\n }\n\n const options: DataTableCsvExportOptions =\n csvExport === true ? {} : csvExport;\n const filename = options.filename ?? \"data-table.csv\";\n const scope = options.scope ?? \"filtered\";\n const exportColumnIds = options.columns\n ? new Set(options.columns)\n : undefined;\n const columns = table\n .getVisibleLeafColumns()\n .filter(\n (column) =>\n !isUtilityColumnId(column.id) &&\n column.id !== \"__spacer__\" &&\n (!exportColumnIds || exportColumnIds.has(column.id)),\n );\n const rows = getCsvExportRows(table, scope);\n const csvRows: Array> = [];\n\n if (options.includeHeaders ?? true) {\n csvRows.push(\n columns.map((column) =>\n typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : startCase(column.id),\n ),\n );\n }\n\n for (const row of rows) {\n csvRows.push(\n columns.map((column) => {\n const value = row.getValue(column.id);\n return options.getCellValue\n ? options.getCellValue({\n row: row.original,\n rowId: row.id,\n columnId: column.id,\n value,\n })\n : value;\n }),\n );\n }\n\n const lineEnding = options.lineEnding ?? \"\\r\\n\";\n const escapeFormulaValues = options.escapeFormulaValues ?? true;\n const csv = csvRows\n .map((row) =>\n row\n .map((value) => escapeCsvCell(value, escapeFormulaValues))\n .join(\",\"),\n )\n .join(lineEnding);\n\n if (options.onExport) {\n await options.onExport({\n csv,\n filename,\n rows: rows.map((row) => row.original),\n scope,\n });\n return;\n }\n\n if (typeof window === \"undefined\") {\n return;\n }\n\n const blob = new Blob([csv], { type: \"text/csv;charset=utf-8\" });\n const url = window.URL.createObjectURL(blob);\n const anchor = window.document.createElement(\"a\");\n anchor.href = url;\n anchor.download = filename;\n anchor.click();\n window.URL.revokeObjectURL(url);\n}\n\nfunction getCsvExportRows(\n table: TanStackTable,\n scope: DataTableCsvExportScope,\n) {\n switch (scope) {\n case \"page\":\n return table.getRowModel().rows;\n case \"selected\":\n return table\n .getPrePaginationRowModel()\n .rows.filter((row) => row.getIsSelected());\n case \"all\":\n return table.getCoreRowModel().rows;\n default:\n return table.getPrePaginationRowModel().rows;\n }\n}\n\nfunction escapeCsvCell(value: unknown, escapeFormulaValues: boolean) {\n let text = normalizeFilterValue(value);\n if (\n escapeFormulaValues &&\n typeof value === \"string\" &&\n /^[\\t\\r ]*[=+\\-@]/.test(value)\n ) {\n text = `'${text}`;\n }\n if (/[\",\\n\\r]/.test(text)) {\n return `\"${text.replace(/\"/g, '\"\"')}\"`;\n }\n return text;\n}\n\nexport function getInitialColumnPinning(\n columns: Array>,\n): ColumnPinningState {\n const left: Array = [];\n const right: Array = [];\n\n for (const [index, column] of columns.entries()) {\n const columnId = getColumnId(column, index);\n if (column.meta?.fixed === \"left\") {\n left.push(columnId);\n }\n if (column.meta?.fixed === \"right\") {\n right.push(columnId);\n }\n }\n\n return { left, right };\n}\n\nexport function getColumnId(\n column: DataTableColumnDef,\n index: number,\n) {\n if (column.id) {\n return column.id;\n }\n\n const accessorKey = getAccessorKey(column);\n if (accessorKey) {\n return accessorKey;\n }\n\n return `column-${index}`;\n}\n\nexport function getAccessorKey(\n column: DataTableColumnDef,\n) {\n if (\"accessorKey\" in column && typeof column.accessorKey === \"string\") {\n return column.accessorKey;\n }\n\n return undefined;\n}\n\nexport function getFixedSide(column: Column) {\n const pinnedSide = column.getIsPinned();\n if (pinnedSide) {\n return pinnedSide;\n }\n\n if (column.id === \"__select__\") {\n return \"left\" as const;\n }\n\n if (column.id === \"__expand__\") {\n return \"left\" as const;\n }\n\n if (column.id === \"__actions__\") {\n return \"right\" as const;\n }\n\n const meta = (column.columnDef as DataTableColumnDef).meta;\n return meta?.fixed;\n}\n\nexport function getPinnedColumnClassName(\n side: \"left\" | \"right\",\n uiClassNames: DataTableUiClassNames,\n options?: { isUtilityColumn?: boolean },\n) {\n const isUtilityColumn = options?.isUtilityColumn ?? false;\n return cn(\n \"sticky backdrop-blur box-border\",\n uiClassNames.pinnedColumn,\n !isUtilityColumn && \"border-dotted\",\n isUtilityColumn ? uiClassNames.pinnedUtilityColumn : undefined,\n side === \"left\" ? \"border-r-1\" : \"border-l\",\n );\n}\n\nexport function isUtilityColumnId(columnId: string) {\n return (\n columnId === \"__select__\" ||\n columnId === \"__expand__\" ||\n columnId === \"__actions__\"\n );\n}\n\nexport function getDensityHeaderClassName(density: DataTableDensity) {\n switch (density) {\n case \"compact\":\n return \"h-8 py-1\";\n case \"spacious\":\n return \"h-14 py-4\";\n case \"comfortable\":\n default:\n return undefined;\n }\n}\n\nexport function getDensityCellClassName(density: DataTableDensity) {\n switch (density) {\n case \"compact\":\n return \"py-1.5\";\n case \"spacious\":\n return \"py-4\";\n case \"comfortable\":\n default:\n return undefined;\n }\n}\n\nexport function moveColumnInOrder(\n currentOrder: Array,\n sourceColumnId: string,\n targetColumnId: string,\n) {\n const order = currentOrder.includes(sourceColumnId)\n ? currentOrder.slice()\n : [...currentOrder, sourceColumnId];\n const sourceIndex = order.indexOf(sourceColumnId);\n const targetIndex = order.indexOf(targetColumnId);\n\n if (sourceIndex < 0 || targetIndex < 0 || sourceIndex === targetIndex) {\n return order;\n }\n\n const [source] = order.splice(sourceIndex, 1);\n order.splice(targetIndex, 0, source);\n return order;\n}\n\nexport function startCase(value: string) {\n return value\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .replace(/[_-]+/g, \" \")\n .replace(/\\s+/g, \" \")\n .trim()\n .replace(/\\b\\w/g, (character) => character.toUpperCase());\n}\n","import * as React from \"react\";\nimport type { Cell, Row } from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableDensity,\n DataTableProps,\n DataTableRowLoadingState,\n} from \"../types\";\nimport type { DataTableUiClassNames, DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { renderDataTableCellContent } from \"./data-table-cell-content\";\nimport type { DataTableColumnLayout } from \"./use-column-layout\";\nimport {\n getDensityCellClassName,\n isDataTableLoadingRow,\n} from \"./data-table-utils\";\nimport { renderEditableCell } from \"./use-row-editing\";\nimport { cellAlignClassName, hideOnClassName } from \"../types\";\n\ntype DataTableBodyRowProps = {\n columnLayouts: ReadonlyMap;\n components: Pick<\n DataTableUiKit,\n \"Checkbox\" | \"Input\" | \"Skeleton\" | \"TableCell\" | \"TableRow\"\n >;\n currentDensity: DataTableDensity;\n draftValues: Record;\n dragAndDrop: DataTableProps[\"dragAndDrop\"];\n explicitCustomCellColumnIds: ReadonlySet;\n getRowClassName: DataTableProps[\"getRowClassName\"];\n isDraggable: boolean;\n isEditing: boolean;\n isExpanded: boolean;\n isInitialLoadingRow: boolean;\n isSelected: boolean;\n loadingState: DataTableRowLoadingState | undefined;\n onRowClick: DataTableProps[\"onRowClick\"];\n originalRow: TData;\n renderExpandedRow: DataTableProps[\"renderExpandedRow\"];\n row: Row;\n rowIndex: number;\n setDraftValues: React.Dispatch>>;\n uiClassNames: DataTableUiClassNames;\n visibleCells: Array>;\n visibleLeafColumnCount: number;\n};\n\nfunction DataTableBodyRowInner({\n columnLayouts,\n components,\n currentDensity,\n draftValues,\n dragAndDrop,\n explicitCustomCellColumnIds,\n getRowClassName,\n isDraggable,\n isEditing,\n isExpanded,\n isInitialLoadingRow,\n isSelected,\n loadingState,\n onRowClick,\n originalRow,\n renderExpandedRow,\n row,\n setDraftValues,\n uiClassNames,\n visibleCells,\n visibleLeafColumnCount,\n}: DataTableBodyRowProps) {\n const { Checkbox, Input, Skeleton, TableCell, TableRow } = components;\n\n return (\n \n ) => {\n if (isInitialLoadingRow) {\n return;\n }\n\n const target = event.target as HTMLElement | null;\n if (target?.closest(\"[data-row-click-ignore='true']\")) {\n return;\n }\n\n void onRowClick?.({ row: originalRow, rowId: row.id });\n }}\n onKeyDown={(event: React.KeyboardEvent) => {\n if (\n isInitialLoadingRow ||\n !onRowClick ||\n (event.key !== \"Enter\" && event.key !== \" \")\n ) {\n return;\n }\n\n const target = event.target as HTMLElement | null;\n if (target?.closest(\"[data-row-click-ignore='true']\")) {\n return;\n }\n\n event.preventDefault();\n void onRowClick({ row: originalRow, rowId: row.id });\n }}\n onDragStart={(event: React.DragEvent) => {\n if (isInitialLoadingRow) {\n return;\n }\n\n dragAndDrop?.onRowDragStart?.({\n row: originalRow,\n rowId: row.id,\n event,\n });\n }}\n onDragEnd={(event: React.DragEvent) => {\n if (isInitialLoadingRow) {\n return;\n }\n\n dragAndDrop?.onRowDragEnd?.({\n row: originalRow,\n rowId: row.id,\n event,\n });\n }}\n >\n {visibleCells.map((cell) => {\n const meta = (\n cell.column.columnDef as DataTableColumnDef\n ).meta;\n const cellContext = cell.getContext();\n const value = cell.getValue();\n const layout = columnLayouts.get(cell.column.id);\n const isSelectionColumn = layout?.isSelectionColumn ?? false;\n const isExpansionColumn = layout?.isExpansionColumn ?? false;\n const isActionsColumn = layout?.isActionsColumn ?? false;\n const isSpacerColumn = layout?.isSpacerColumn ?? false;\n const hideClassName = hideOnClassName(meta?.hideOn);\n const cellClassName =\n isInitialLoadingRow || isDataTableLoadingRow(originalRow)\n ? undefined\n : typeof meta?.cellClassName === \"function\"\n ? meta.cellClassName({\n row: originalRow,\n value,\n })\n : meta?.cellClassName;\n\n return (\n \n \n {loadingState?.isLoading ? (\n (meta?.skeleton?.(cellContext) ??\n loadingState.skeleton ?? (\n \n ))\n ) : isEditing &&\n cell.column.id !== \"__select__\" &&\n cell.column.id !== \"__expand__\" &&\n cell.column.id !== \"__actions__\" ? (\n renderEditableCell(cellContext, draftValues, setDraftValues, {\n Checkbox,\n Input,\n })\n ) : (\n renderDataTableCellContent(cellContext, uiClassNames, {\n hasCustomCell:\n explicitCustomCellColumnIds.has(cell.column.id) ||\n isSelectionColumn ||\n isExpansionColumn ||\n isActionsColumn ||\n isSpacerColumn,\n useCustomOverflowDefaults:\n explicitCustomCellColumnIds.has(cell.column.id) ||\n isSelectionColumn ||\n isExpansionColumn ||\n isActionsColumn ||\n isSpacerColumn,\n })\n )}\n \n \n );\n })}\n \n {!isInitialLoadingRow && renderExpandedRow && isExpanded ? (\n \n \n {renderExpandedRow({\n row: originalRow,\n rowId: row.id,\n tableRow: row,\n })}\n \n \n ) : null}\n \n );\n}\n\nfunction areDataTableBodyRowsEqual(\n previous: DataTableBodyRowProps,\n next: DataTableBodyRowProps,\n) {\n return (\n previous.row.id === next.row.id &&\n previous.row.original === next.row.original &&\n previous.rowIndex === next.rowIndex &&\n previous.isSelected === next.isSelected &&\n previous.isInitialLoadingRow === next.isInitialLoadingRow &&\n previous.isEditing === next.isEditing &&\n previous.isExpanded === next.isExpanded &&\n previous.isDraggable === next.isDraggable &&\n sameLoadingState(previous.loadingState, next.loadingState) &&\n sameVisibleCells(previous.visibleCells, next.visibleCells) &&\n previous.components === next.components &&\n sameColumnLayouts(\n previous.columnLayouts,\n next.columnLayouts,\n next.visibleCells,\n ) &&\n previous.currentDensity === next.currentDensity &&\n previous.renderExpandedRow === next.renderExpandedRow &&\n previous.onRowClick === next.onRowClick &&\n previous.dragAndDrop === next.dragAndDrop &&\n previous.getRowClassName === next.getRowClassName &&\n previous.uiClassNames === next.uiClassNames &&\n previous.explicitCustomCellColumnIds === next.explicitCustomCellColumnIds &&\n (!previous.isEditing || previous.draftValues === next.draftValues)\n );\n}\n\nfunction sameLoadingState(\n previous: DataTableRowLoadingState | undefined,\n next: DataTableRowLoadingState | undefined,\n) {\n return (\n previous?.isLoading === next?.isLoading &&\n previous?.skeleton === next?.skeleton\n );\n}\n\nfunction sameVisibleCells(\n previous: Array>,\n next: Array>,\n) {\n return (\n previous.length === next.length &&\n previous.every((cell, index) => {\n const nextCell = next[index];\n return nextCell?.id === cell.id && nextCell.column.id === cell.column.id;\n })\n );\n}\n\nfunction sameColumnLayouts(\n previous: ReadonlyMap,\n next: ReadonlyMap,\n cells: Array>,\n) {\n return cells.every((cell) => {\n const previousLayout = previous.get(cell.column.id);\n const nextLayout = next.get(cell.column.id);\n\n return (\n previousLayout?.fixedSide === nextLayout?.fixedSide &&\n previousLayout?.isActionsColumn === nextLayout?.isActionsColumn &&\n previousLayout?.isExpansionColumn === nextLayout?.isExpansionColumn &&\n previousLayout?.isSelectionColumn === nextLayout?.isSelectionColumn &&\n previousLayout?.isSpacerColumn === nextLayout?.isSpacerColumn &&\n previousLayout?.isUtilityColumn === nextLayout?.isUtilityColumn &&\n previousLayout?.pinnedClassName === nextLayout?.pinnedClassName &&\n previousLayout?.utilityClassName === nextLayout?.utilityClassName &&\n sameCellStyle(previousLayout?.cellStyle, nextLayout?.cellStyle)\n );\n });\n}\n\nfunction sameCellStyle(\n previous: React.CSSProperties | undefined,\n next: React.CSSProperties | undefined,\n) {\n return (\n previous?.width === next?.width &&\n previous?.minWidth === next?.minWidth &&\n previous?.maxWidth === next?.maxWidth &&\n previous?.insetInlineStart === next?.insetInlineStart &&\n previous?.insetInlineEnd === next?.insetInlineEnd\n );\n}\n\nexport const DataTableBodyRow = React.memo(\n DataTableBodyRowInner,\n areDataTableBodyRowsEqual,\n) as typeof DataTableBodyRowInner;\n","import * as React from \"react\";\nimport { flexRender } from \"@tanstack/react-table\";\nimport { IconChevronDown, IconSelector } from \"../icons\";\nimport type { Header, SortingState } from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableDensity,\n} from \"../types\";\nimport type { DataTableUiClassNames, DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport type { DataTableColumnLayout } from \"./use-column-layout\";\nimport {\n getDensityHeaderClassName,\n isUtilityColumnId,\n} from \"./data-table-utils\";\nimport { headerAlignClassName, hideOnClassName } from \"../types\";\n\ntype DataTableHeaderCellProps = {\n currentDensity: DataTableDensity;\n currentSorting: SortingState;\n draggedColumnIdRef: React.MutableRefObject;\n enableColumnReordering: boolean;\n enableColumnResizing: boolean;\n header: Header;\n headerGroupHeaders: Array>;\n layout: DataTableColumnLayout;\n primeColumnForResize: (columnId: string, currentSize: number) => void;\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n resetColumnSize: (columnId: string) => void;\n // Rendered through flexRender inside the header def; carried as a prop so\n // the memo comparator re-renders the selection header when it changes.\n selectionState?: boolean | \"indeterminate\";\n TableHead: DataTableUiKit[\"TableHead\"];\n uiClassNames: DataTableUiClassNames;\n};\n\nfunction DataTableHeaderCellInner({\n currentDensity,\n currentSorting,\n draggedColumnIdRef,\n enableColumnReordering,\n enableColumnResizing,\n header,\n headerGroupHeaders,\n layout,\n primeColumnForResize,\n reorderColumn,\n resetColumnSize,\n TableHead,\n uiClassNames,\n}: DataTableHeaderCellProps) {\n const meta = (header.column.columnDef as DataTableColumnDef)\n .meta;\n const canSort = header.column.getCanSort();\n const sortingState = header.column.getIsSorted();\n const sortingIndex = currentSorting.findIndex(\n (sort) => sort.id === header.column.id,\n );\n const canReorderColumn =\n enableColumnReordering &&\n !layout.isUtilityColumn &&\n !layout.isSpacerColumn;\n const hideClassName = hideOnClassName(meta?.hideOn);\n\n return (\n ) => {\n draggedColumnIdRef.current = header.column.id;\n event.dataTransfer.effectAllowed = \"move\";\n }\n : undefined\n }\n onDragOver={\n canReorderColumn\n ? (event: React.DragEvent) => {\n event.preventDefault();\n event.dataTransfer.dropEffect = \"move\";\n }\n : undefined\n }\n onDrop={\n canReorderColumn\n ? (event: React.DragEvent) => {\n event.preventDefault();\n const sourceColumnId = draggedColumnIdRef.current;\n draggedColumnIdRef.current = null;\n if (sourceColumnId) {\n reorderColumn(sourceColumnId, header.column.id);\n }\n }\n : undefined\n }\n onKeyDown={\n canReorderColumn\n ? (event: React.KeyboardEvent) => {\n if (\n !event.altKey ||\n (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\")\n ) {\n return;\n }\n\n event.preventDefault();\n const headers = headerGroupHeaders.filter(\n (item) =>\n !isUtilityColumnId(item.column.id) &&\n item.column.id !== \"__spacer__\",\n );\n const currentIndex = headers.findIndex(\n (item) => item.column.id === header.column.id,\n );\n const target =\n headers[\n event.key === \"ArrowLeft\"\n ? currentIndex - 1\n : currentIndex + 1\n ];\n if (target) {\n reorderColumn(header.column.id, target.column.id);\n }\n }\n : undefined\n }\n >\n {header.isPlaceholder ? null : canSort ? (\n \n \n {flexRender(header.column.columnDef.header, header.getContext())}\n \n {sortingState ? (\n <>\n \n {currentSorting.length > 1 && sortingIndex >= 0 ? (\n \n {sortingIndex + 1}\n \n ) : null}\n \n ) : (\n \n )}\n \n ) : (\n flexRender(header.column.columnDef.header, header.getContext())\n )}\n\n {enableColumnResizing && header.column.getCanResize() ? (\n {\n resetColumnSize(header.column.id);\n }}\n onMouseDown={(event) => {\n primeColumnForResize(header.column.id, header.getSize());\n header.getResizeHandler()(event);\n }}\n onTouchStart={(event) => {\n primeColumnForResize(header.column.id, header.getSize());\n header.getResizeHandler()(event);\n }}\n className={cn(\n \"absolute inset-y-0 right-0 z-50 h-full w-3 translate-x-1/2 cursor-col-resize touch-none select-none after:absolute after:top-0 after:left-1/2 after:h-full after:w-px after:-translate-x-1/2\",\n uiClassNames.resizeHandle ??\n \"after:bg-current after:opacity-20 hover:after:opacity-70\",\n header.column.getIsResizing() &&\n (uiClassNames.resizeHandleActive ?? \"after:opacity-100\"),\n )}\n />\n ) : null}\n \n );\n}\n\nfunction areDataTableHeaderCellsEqual(\n previous: DataTableHeaderCellProps,\n next: DataTableHeaderCellProps,\n) {\n return (\n previous.header.id === next.header.id &&\n previous.header.column.id === next.header.column.id &&\n previous.currentDensity === next.currentDensity &&\n previous.enableColumnReordering === next.enableColumnReordering &&\n previous.enableColumnResizing === next.enableColumnResizing &&\n previous.TableHead === next.TableHead &&\n previous.uiClassNames === next.uiClassNames &&\n previous.draggedColumnIdRef === next.draggedColumnIdRef &&\n previous.primeColumnForResize === next.primeColumnForResize &&\n previous.reorderColumn === next.reorderColumn &&\n previous.resetColumnSize === next.resetColumnSize &&\n previous.selectionState === next.selectionState &&\n sameSorting(previous.currentSorting, next.currentSorting) &&\n sameHeaderGroupHeaders(\n previous.headerGroupHeaders,\n next.headerGroupHeaders,\n ) &&\n sameHeaderLayout(previous.layout, next.layout)\n );\n}\n\nfunction sameSorting(previous: SortingState, next: SortingState) {\n return (\n previous.length === next.length &&\n previous.every((sort, index) => {\n const nextSort = next[index];\n return nextSort?.id === sort.id && nextSort.desc === sort.desc;\n })\n );\n}\n\nfunction sameHeaderGroupHeaders(\n previous: Array>,\n next: Array>,\n) {\n return (\n previous.length === next.length &&\n previous.every((header, index) => next[index]?.id === header.id)\n );\n}\n\nfunction sameHeaderLayout(\n previous: DataTableColumnLayout,\n next: DataTableColumnLayout,\n) {\n return (\n previous.fixedSide === next.fixedSide &&\n previous.isSpacerColumn === next.isSpacerColumn &&\n previous.isUtilityColumn === next.isUtilityColumn &&\n previous.pinnedClassName === next.pinnedClassName &&\n previous.utilityClassName === next.utilityClassName &&\n previous.headerStyle?.width === next.headerStyle?.width &&\n previous.headerStyle?.minWidth === next.headerStyle?.minWidth &&\n previous.headerStyle?.maxWidth === next.headerStyle?.maxWidth &&\n previous.headerStyle?.insetInlineStart ===\n next.headerStyle?.insetInlineStart &&\n previous.headerStyle?.insetInlineEnd === next.headerStyle?.insetInlineEnd\n );\n}\n\nexport const DataTableHeaderCell = React.memo(\n DataTableHeaderCellInner,\n areDataTableHeaderCellsEqual,\n) as typeof DataTableHeaderCellInner;\n","import * as React from \"react\";\nimport type {\n Column,\n Row,\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableDensity,\n DataTableProps,\n DataTableRowLoadingState,\n} from \"../types\";\nimport type { DataTableUiClassNames, DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { DataTableBodyRow } from \"./data-table-body-row\";\nimport { DataTableHeaderCell } from \"./data-table-header-cell\";\nimport type { DataTableColumnLayout } from \"./use-column-layout\";\nimport { isDataTableLoadingRow } from \"./data-table-utils\";\nimport type { DataTableLabels } from \"../types\";\n\nexport type DataTableTablePanelProps = {\n bodyRowComponents: Pick<\n DataTableUiKit,\n \"Checkbox\" | \"Input\" | \"Skeleton\" | \"TableCell\" | \"TableRow\"\n >;\n columnLayouts: ReadonlyMap;\n currentDensity: DataTableDensity;\n currentSorting: DataTableProps[\"sorting\"];\n DataTableEmptyState: React.ElementType;\n dragAndDrop: DataTableProps[\"dragAndDrop\"];\n draggedColumnIdRef: React.RefObject;\n draftValues: Record;\n editingRowId: string | null;\n emptyNode: React.ReactNode;\n enableColumnReordering: boolean;\n enableColumnResizing: boolean;\n explicitCustomCellColumnIds: ReadonlySet;\n fillMinWidth: number;\n flexGrow: boolean;\n getColumnLayout: (columnId: string) => DataTableColumnLayout;\n getRowClassName: DataTableProps[\"getRowClassName\"];\n getRowLoadingState: DataTableProps[\"getRowLoadingState\"];\n infiniteScroll: DataTableProps[\"infiniteScroll\"];\n layoutMode: \"fill\" | \"fit\";\n localSearchValue: string;\n onRowClick: DataTableProps[\"onRowClick\"];\n primeColumnForResize: (columnId: string, currentSize: number) => void;\n renderedRows: Array>;\n renderExpandedRow: DataTableProps[\"renderExpandedRow\"];\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n resetColumnSize: (columnId: string) => void;\n resolvedLabels: DataTableLabels;\n rowsToRender: Array<{ row: Row; rowIndex: number }>;\n ScrollArea: DataTableUiKit[\"ScrollArea\"];\n ScrollBar: DataTableUiKit[\"ScrollBar\"];\n sentinelRef: React.RefObject;\n setDraftValues: React.Dispatch>>;\n shouldRenderInitialLoading: boolean;\n stickyHeader: boolean;\n summaryRows: NonNullable[\"summaryRows\"]>;\n table: TanStackTable;\n tableClassName: string | undefined;\n tableContainerClassName: string | undefined;\n Table: DataTableUiKit[\"Table\"];\n TableBody: DataTableUiKit[\"TableBody\"];\n TableCell: DataTableUiKit[\"TableCell\"];\n TableFooter: DataTableUiKit[\"TableFooter\"];\n TableHead: DataTableUiKit[\"TableHead\"];\n TableHeader: DataTableUiKit[\"TableHeader\"];\n TableRow: DataTableUiKit[\"TableRow\"];\n tableScrollContainerRef: React.RefObject;\n tableScrollElement?: HTMLElement | null;\n uiClassNames: DataTableUiClassNames;\n viewportHeight?: number;\n virtualization?: DataTableProps[\"virtualization\"];\n virtualPaddingBottom: number;\n virtualPaddingTop: number;\n visibleLeafColumnCount: number;\n visibleLeafColumns: Array>;\n};\n\nexport function DataTableTablePanel({\n bodyRowComponents,\n columnLayouts,\n currentDensity,\n currentSorting = [],\n DataTableEmptyState,\n dragAndDrop,\n draggedColumnIdRef,\n draftValues,\n editingRowId,\n emptyNode,\n enableColumnReordering,\n enableColumnResizing,\n explicitCustomCellColumnIds,\n fillMinWidth,\n flexGrow,\n getColumnLayout,\n getRowClassName,\n getRowLoadingState,\n infiniteScroll,\n layoutMode,\n localSearchValue,\n onRowClick,\n primeColumnForResize,\n renderedRows,\n renderExpandedRow,\n reorderColumn,\n resetColumnSize,\n resolvedLabels,\n rowsToRender,\n ScrollArea,\n ScrollBar,\n sentinelRef,\n setDraftValues,\n shouldRenderInitialLoading,\n stickyHeader,\n summaryRows,\n table,\n tableClassName,\n tableContainerClassName,\n Table,\n TableBody,\n TableCell,\n TableFooter = \"tfoot\",\n TableHead,\n TableHeader,\n TableRow,\n tableScrollContainerRef,\n uiClassNames,\n virtualPaddingBottom,\n virtualPaddingTop,\n visibleLeafColumnCount,\n visibleLeafColumns,\n}: DataTableTablePanelProps) {\n const selectionState: boolean | \"indeterminate\" =\n table.getIsAllPageRowsSelected()\n ? true\n : table.getIsSomePageRowsSelected()\n ? \"indeterminate\"\n : false;\n\n return (\n \n \n \n
    \n \n \n {table.getVisibleLeafColumns().map((column) => {\n const layout = getColumnLayout(column.id);\n return ;\n })}\n \n \n {table.getHeaderGroups().map((headerGroup) => (\n \n {headerGroup.headers.map((header) => (\n \n ))}\n \n ))}\n \n \n {renderedRows.length ? (\n <>\n {virtualPaddingTop > 0 ? (\n \n \n \n ) : null}\n {rowsToRender.map(({ row, rowIndex }) => {\n const originalRow = row.original;\n const isInitialLoadingRow =\n isDataTableLoadingRow(originalRow);\n const loadingState = isInitialLoadingRow\n ? { isLoading: true }\n : getRowLoadingState?.(originalRow, rowIndex);\n const resolvedLoadingState: DataTableRowLoadingState | undefined =\n typeof loadingState === \"boolean\"\n ? { isLoading: loadingState }\n : loadingState;\n const isDraggable = isInitialLoadingRow\n ? false\n : (dragAndDrop?.getRowDraggable?.(originalRow) ?? false);\n\n return (\n \n );\n })}\n {virtualPaddingBottom > 0 ? (\n \n \n \n ) : null}\n \n ) : (\n \n \n
    \n {emptyNode ?? (\n \n )}\n
    \n \n
    \n )}\n
    \n {summaryRows.length ? (\n \n {summaryRows.map((summaryRow) => (\n \n {visibleLeafColumns.map((column, index) => {\n const content =\n summaryRow.cells[column.id] ??\n (index === 0 ? summaryRow.label : null);\n return (\n \n {typeof content === \"function\"\n ? content({\n rows: table\n .getFilteredRowModel()\n .rows.map((row) => row.original),\n columnId: column.id,\n })\n : content}\n \n );\n })}\n \n ))}\n \n ) : null}\n \n
    \n\n {infiniteScroll?.enabled &&\n renderedRows.length &&\n !shouldRenderInitialLoading ? (\n
    \n
    \n
    \n ) : null}\n \n \n
    \n \n );\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-Y5JNRFE4.js b/dist/chunk-JYNJ2FDX.js similarity index 74% rename from dist/chunk-Y5JNRFE4.js rename to dist/chunk-JYNJ2FDX.js index fefe656..ce06600 100644 --- a/dist/chunk-Y5JNRFE4.js +++ b/dist/chunk-JYNJ2FDX.js @@ -1,2 +1,2 @@ -import {P}from'./chunk-HOUWU4KF.js';import {useVirtualizer}from'@tanstack/react-virtual';import {jsx}from'react/jsx-runtime';function z(i){let{renderedRows:o,shouldRenderInitialLoading:T,tableScrollElement:d,viewportHeight:m=0,virtualization:n}=i,l=typeof n=="object"?n:void 0,s=!T&&(n===true||l?.enabled===true),t=s&&!!d&&m>0,u=useVirtualizer({count:s?o.length:0,enabled:t,estimateSize:()=>l?.estimateRowHeight??48,getScrollElement:()=>d??null,overscan:l?.overscan??8}),r=t?u.getVirtualItems():[],g=t?r.flatMap(e=>{let a=o[e.index];return a?[{row:a,rowIndex:e.index}]:[]}):o.map((e,a)=>({row:e,rowIndex:a})),c=t?r[0]?.start??0:0,p=t?Math.max(0,u.getTotalSize()-(r.at(-1)?.end??c)):0;return jsx(P,{...i,rowsToRender:g,virtualPaddingBottom:p,virtualPaddingTop:c})}export{z as a};//# sourceMappingURL=chunk-Y5JNRFE4.js.map -//# sourceMappingURL=chunk-Y5JNRFE4.js.map \ No newline at end of file +import {Q}from'./chunk-ZGXFBFNQ.js';import {useVirtualizer}from'@tanstack/react-virtual';import {jsx}from'react/jsx-runtime';function z(i){let{renderedRows:o,shouldRenderInitialLoading:T,tableScrollElement:d,viewportHeight:m=0,virtualization:n}=i,l=typeof n=="object"?n:void 0,s=!T&&(n===true||l?.enabled===true),t=s&&!!d&&m>0,u=useVirtualizer({count:s?o.length:0,enabled:t,estimateSize:()=>l?.estimateRowHeight??48,getScrollElement:()=>d??null,overscan:l?.overscan??8}),r=t?u.getVirtualItems():[],g=t?r.flatMap(e=>{let a=o[e.index];return a?[{row:a,rowIndex:e.index}]:[]}):o.map((e,a)=>({row:e,rowIndex:a})),c=t?r[0]?.start??0:0,p=t?Math.max(0,u.getTotalSize()-(r.at(-1)?.end??c)):0;return jsx(Q,{...i,rowsToRender:g,virtualPaddingBottom:p,virtualPaddingTop:c})}export{z as a};//# sourceMappingURL=chunk-JYNJ2FDX.js.map +//# sourceMappingURL=chunk-JYNJ2FDX.js.map \ No newline at end of file diff --git a/dist/chunk-Y5JNRFE4.js.map b/dist/chunk-JYNJ2FDX.js.map similarity index 98% rename from dist/chunk-Y5JNRFE4.js.map rename to dist/chunk-JYNJ2FDX.js.map index 9b6f380..0a5d56b 100644 --- a/dist/chunk-Y5JNRFE4.js.map +++ b/dist/chunk-JYNJ2FDX.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/core/data-table/data-table-virtual-table-panel.tsx"],"names":["DataTableVirtualTablePanel","props","renderedRows","shouldRenderInitialLoading","tableScrollElement","viewportHeight","virtualization","virtualizationConfig","enableVirtualization","shouldUseVirtualRows","rowVirtualizer","useVirtualizer","virtualItems","rowsToRender","virtualItem","row","rowIndex","virtualPaddingTop","virtualPaddingBottom","jsx","DataTableTablePanel"],"mappings":"6HAIO,SAASA,CAAAA,CACdC,CAAAA,CACA,CACA,GAAM,CACJ,YAAA,CAAAC,CAAAA,CACA,2BAAAC,CAAAA,CACA,kBAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,EAAiB,CAAA,CACjB,cAAA,CAAAC,CACF,CAAA,CAAIL,EACEM,CAAAA,CACJ,OAAOD,CAAAA,EAAmB,QAAA,CAAWA,EAAiB,MAAA,CAClDE,CAAAA,CACJ,CAACL,CAAAA,GACAG,IAAmB,IAAA,EAAQC,CAAAA,EAAsB,OAAA,GAAY,IAAA,CAAA,CAC1DE,CAAAA,CACJD,CAAAA,EAAwB,CAAA,CAAQJ,CAAAA,EAAuBC,EAAiB,CAAA,CAGpEK,CAAAA,CAAiBC,cAAAA,CAAe,CACpC,MAAOH,CAAAA,CAAuBN,CAAAA,CAAa,MAAA,CAAS,CAAA,CACpD,QAASO,CAAAA,CACT,YAAA,CAAc,IAAMF,CAAAA,EAAsB,mBAAqB,EAAA,CAC/D,gBAAA,CAAkB,IAAMH,CAAAA,EAAsB,KAC9C,QAAA,CAAUG,CAAAA,EAAsB,QAAA,EAAY,CAC9C,CAAC,CAAA,CACKK,CAAAA,CAAeH,CAAAA,CACjBC,CAAAA,CAAe,iBAAgB,CAC/B,EAAC,CACCG,CAAAA,CAAeJ,CAAAA,CACjBG,CAAAA,CAAa,OAAA,CAASE,CAAAA,EAAgB,CACpC,IAAMC,CAAAA,CAAMb,CAAAA,CAAaY,CAAAA,CAAY,KAAK,CAAA,CAC1C,OAAOC,CAAAA,CAAM,CAAC,CAAE,GAAA,CAAAA,CAAAA,CAAK,QAAA,CAAUD,CAAAA,CAAY,KAAM,CAAC,CAAA,CAAI,EACxD,CAAC,CAAA,CACDZ,CAAAA,CAAa,GAAA,CAAI,CAACa,EAAKC,CAAAA,IAAc,CAAE,GAAA,CAAAD,CAAAA,CAAK,SAAAC,CAAS,CAAA,CAAE,CAAA,CACrDC,CAAAA,CAAoBR,CAAAA,CACrBG,CAAAA,CAAa,CAAC,CAAA,EAAG,OAAS,CAAA,CAC3B,CAAA,CACEM,CAAAA,CAAuBT,CAAAA,CACzB,KAAK,GAAA,CACH,CAAA,CACAC,CAAAA,CAAe,YAAA,IACZE,CAAAA,CAAa,EAAA,CAAG,EAAE,CAAA,EAAG,KAAOK,CAAAA,CACjC,CAAA,CACA,CAAA,CAEJ,OACEE,IAACC,CAAAA,CAAA,CACE,GAAGnB,CAAAA,CACJ,aAAcY,CAAAA,CACd,oBAAA,CAAsBK,CAAAA,CACtB,iBAAA,CAAmBD,EACrB,CAEJ","file":"chunk-Y5JNRFE4.js","sourcesContent":["import { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { DataTableTablePanel } from \"./data-table-table-panel\";\nimport type { DataTableTablePanelProps } from \"./data-table-table-panel\";\n\nexport function DataTableVirtualTablePanel(\n props: DataTableTablePanelProps,\n) {\n const {\n renderedRows,\n shouldRenderInitialLoading,\n tableScrollElement,\n viewportHeight = 0,\n virtualization,\n } = props;\n const virtualizationConfig =\n typeof virtualization === \"object\" ? virtualization : undefined;\n const enableVirtualization =\n !shouldRenderInitialLoading &&\n (virtualization === true || virtualizationConfig?.enabled === true);\n const shouldUseVirtualRows =\n enableVirtualization && Boolean(tableScrollElement) && viewportHeight > 0;\n\n // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Virtual owns its instance functions.\n const rowVirtualizer = useVirtualizer({\n count: enableVirtualization ? renderedRows.length : 0,\n enabled: shouldUseVirtualRows,\n estimateSize: () => virtualizationConfig?.estimateRowHeight ?? 48,\n getScrollElement: () => tableScrollElement ?? null,\n overscan: virtualizationConfig?.overscan ?? 8,\n });\n const virtualItems = shouldUseVirtualRows\n ? rowVirtualizer.getVirtualItems()\n : [];\n const rowsToRender = shouldUseVirtualRows\n ? virtualItems.flatMap((virtualItem) => {\n const row = renderedRows[virtualItem.index];\n return row ? [{ row, rowIndex: virtualItem.index }] : [];\n })\n : renderedRows.map((row, rowIndex) => ({ row, rowIndex }));\n const virtualPaddingTop = shouldUseVirtualRows\n ? (virtualItems[0]?.start ?? 0)\n : 0;\n const virtualPaddingBottom = shouldUseVirtualRows\n ? Math.max(\n 0,\n rowVirtualizer.getTotalSize() -\n (virtualItems.at(-1)?.end ?? virtualPaddingTop),\n )\n : 0;\n\n return (\n \n );\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../src/core/data-table/data-table-virtual-table-panel.tsx"],"names":["DataTableVirtualTablePanel","props","renderedRows","shouldRenderInitialLoading","tableScrollElement","viewportHeight","virtualization","virtualizationConfig","enableVirtualization","shouldUseVirtualRows","rowVirtualizer","useVirtualizer","virtualItems","rowsToRender","virtualItem","row","rowIndex","virtualPaddingTop","virtualPaddingBottom","jsx","DataTableTablePanel"],"mappings":"6HAIO,SAASA,CAAAA,CACdC,CAAAA,CACA,CACA,GAAM,CACJ,YAAA,CAAAC,CAAAA,CACA,2BAAAC,CAAAA,CACA,kBAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,EAAiB,CAAA,CACjB,cAAA,CAAAC,CACF,CAAA,CAAIL,EACEM,CAAAA,CACJ,OAAOD,CAAAA,EAAmB,QAAA,CAAWA,EAAiB,MAAA,CAClDE,CAAAA,CACJ,CAACL,CAAAA,GACAG,IAAmB,IAAA,EAAQC,CAAAA,EAAsB,OAAA,GAAY,IAAA,CAAA,CAC1DE,CAAAA,CACJD,CAAAA,EAAwB,CAAA,CAAQJ,CAAAA,EAAuBC,EAAiB,CAAA,CAGpEK,CAAAA,CAAiBC,cAAAA,CAAe,CACpC,MAAOH,CAAAA,CAAuBN,CAAAA,CAAa,MAAA,CAAS,CAAA,CACpD,QAASO,CAAAA,CACT,YAAA,CAAc,IAAMF,CAAAA,EAAsB,mBAAqB,EAAA,CAC/D,gBAAA,CAAkB,IAAMH,CAAAA,EAAsB,KAC9C,QAAA,CAAUG,CAAAA,EAAsB,QAAA,EAAY,CAC9C,CAAC,CAAA,CACKK,CAAAA,CAAeH,CAAAA,CACjBC,CAAAA,CAAe,iBAAgB,CAC/B,EAAC,CACCG,CAAAA,CAAeJ,CAAAA,CACjBG,CAAAA,CAAa,OAAA,CAASE,CAAAA,EAAgB,CACpC,IAAMC,CAAAA,CAAMb,CAAAA,CAAaY,CAAAA,CAAY,KAAK,CAAA,CAC1C,OAAOC,CAAAA,CAAM,CAAC,CAAE,GAAA,CAAAA,CAAAA,CAAK,QAAA,CAAUD,CAAAA,CAAY,KAAM,CAAC,CAAA,CAAI,EACxD,CAAC,CAAA,CACDZ,CAAAA,CAAa,GAAA,CAAI,CAACa,EAAKC,CAAAA,IAAc,CAAE,GAAA,CAAAD,CAAAA,CAAK,SAAAC,CAAS,CAAA,CAAE,CAAA,CACrDC,CAAAA,CAAoBR,CAAAA,CACrBG,CAAAA,CAAa,CAAC,CAAA,EAAG,OAAS,CAAA,CAC3B,CAAA,CACEM,CAAAA,CAAuBT,CAAAA,CACzB,KAAK,GAAA,CACH,CAAA,CACAC,CAAAA,CAAe,YAAA,IACZE,CAAAA,CAAa,EAAA,CAAG,EAAE,CAAA,EAAG,KAAOK,CAAAA,CACjC,CAAA,CACA,CAAA,CAEJ,OACEE,IAACC,CAAAA,CAAA,CACE,GAAGnB,CAAAA,CACJ,aAAcY,CAAAA,CACd,oBAAA,CAAsBK,CAAAA,CACtB,iBAAA,CAAmBD,EACrB,CAEJ","file":"chunk-JYNJ2FDX.js","sourcesContent":["import { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { DataTableTablePanel } from \"./data-table-table-panel\";\nimport type { DataTableTablePanelProps } from \"./data-table-table-panel\";\n\nexport function DataTableVirtualTablePanel(\n props: DataTableTablePanelProps,\n) {\n const {\n renderedRows,\n shouldRenderInitialLoading,\n tableScrollElement,\n viewportHeight = 0,\n virtualization,\n } = props;\n const virtualizationConfig =\n typeof virtualization === \"object\" ? virtualization : undefined;\n const enableVirtualization =\n !shouldRenderInitialLoading &&\n (virtualization === true || virtualizationConfig?.enabled === true);\n const shouldUseVirtualRows =\n enableVirtualization && Boolean(tableScrollElement) && viewportHeight > 0;\n\n // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Virtual owns its instance functions.\n const rowVirtualizer = useVirtualizer({\n count: enableVirtualization ? renderedRows.length : 0,\n enabled: shouldUseVirtualRows,\n estimateSize: () => virtualizationConfig?.estimateRowHeight ?? 48,\n getScrollElement: () => tableScrollElement ?? null,\n overscan: virtualizationConfig?.overscan ?? 8,\n });\n const virtualItems = shouldUseVirtualRows\n ? rowVirtualizer.getVirtualItems()\n : [];\n const rowsToRender = shouldUseVirtualRows\n ? virtualItems.flatMap((virtualItem) => {\n const row = renderedRows[virtualItem.index];\n return row ? [{ row, rowIndex: virtualItem.index }] : [];\n })\n : renderedRows.map((row, rowIndex) => ({ row, rowIndex }));\n const virtualPaddingTop = shouldUseVirtualRows\n ? (virtualItems[0]?.start ?? 0)\n : 0;\n const virtualPaddingBottom = shouldUseVirtualRows\n ? Math.max(\n 0,\n rowVirtualizer.getTotalSize() -\n (virtualItems.at(-1)?.end ?? virtualPaddingTop),\n )\n : 0;\n\n return (\n \n );\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-ACKI7LST.js b/dist/chunk-M77BQPKU.js similarity index 89% rename from dist/chunk-ACKI7LST.js rename to dist/chunk-M77BQPKU.js index 099c6d7..79dfa2f 100644 --- a/dist/chunk-ACKI7LST.js +++ b/dist/chunk-M77BQPKU.js @@ -1,2 +1,2 @@ -import {b as b$1}from'./chunk-ZF4EP4WP.js';import*as u from'react';var b=Object.values(b$1).slice().sort((e,t)=>e-t);function T(e){let t=u.useRef(0),[o,s]=u.useState(0);return u.useEffect(()=>{let c=e.current;if(!c)return;let n=null,i=()=>{let l=R(c.clientWidth);l!==t.current&&(t.current=l,s(l));};if(i(),typeof ResizeObserver>"u")return;let r=new ResizeObserver(()=>{n!==null&&window.cancelAnimationFrame(n),n=window.requestAnimationFrame(()=>{n=null,i();});});return r.observe(c),()=>{n!==null&&window.cancelAnimationFrame(n),r.disconnect();}},[e]),o}function R(e){if(e<=0)return 0;let t=1;for(let o of b){if(e{let i=e.current?.querySelector("[data-slot='scroll-area-viewport']")??null;if(s(i),!i){n(0);return}let r=null,l=()=>{n(m=>{let d=i.clientHeight;return m===d?m:d});};if(l(),typeof ResizeObserver>"u")return;let f=new ResizeObserver(()=>{r!==null&&window.cancelAnimationFrame(r),r=window.requestAnimationFrame(()=>{r=null,l();});});return f.observe(i),()=>{r!==null&&window.cancelAnimationFrame(r),f.disconnect();}},[e,t]),{viewportElement:o,viewportHeight:c}}export{T as a,v as b};//# sourceMappingURL=chunk-ACKI7LST.js.map -//# sourceMappingURL=chunk-ACKI7LST.js.map \ No newline at end of file +import {b as b$1}from'./chunk-PFB5LOU7.js';import*as u from'react';var b=Object.values(b$1).slice().sort((e,t)=>e-t);function T(e){let t=u.useRef(0),[o,s]=u.useState(0);return u.useEffect(()=>{let c=e.current;if(!c)return;let n=null,i=()=>{let l=R(c.clientWidth);l!==t.current&&(t.current=l,s(l));};if(i(),typeof ResizeObserver>"u")return;let r=new ResizeObserver(()=>{n!==null&&window.cancelAnimationFrame(n),n=window.requestAnimationFrame(()=>{n=null,i();});});return r.observe(c),()=>{n!==null&&window.cancelAnimationFrame(n),r.disconnect();}},[e]),o}function R(e){if(e<=0)return 0;let t=1;for(let o of b){if(e{let i=e.current?.querySelector("[data-slot='scroll-area-viewport']")??null;if(s(i),!i){n(0);return}let r=null,l=()=>{n(m=>{let d=i.clientHeight;return m===d?m:d});};if(l(),typeof ResizeObserver>"u")return;let f=new ResizeObserver(()=>{r!==null&&window.cancelAnimationFrame(r),r=window.requestAnimationFrame(()=>{r=null,l();});});return f.observe(i),()=>{r!==null&&window.cancelAnimationFrame(r),f.disconnect();}},[e,t]),{viewportElement:o,viewportHeight:c}}export{T as a,v as b};//# sourceMappingURL=chunk-M77BQPKU.js.map +//# sourceMappingURL=chunk-M77BQPKU.js.map \ No newline at end of file diff --git a/dist/chunk-ACKI7LST.js.map b/dist/chunk-M77BQPKU.js.map similarity index 98% rename from dist/chunk-ACKI7LST.js.map rename to dist/chunk-M77BQPKU.js.map index 14be162..f7fada9 100644 --- a/dist/chunk-ACKI7LST.js.map +++ b/dist/chunk-M77BQPKU.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/core/data-table/use-data-table-container-width.ts","../src/core/data-table/use-data-table-scroll-viewport.ts"],"names":["BREAKPOINT_WIDTHS","DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS","first","second","useDataTableContainerWidth","containerRef","widthRef","width","setWidth","element","frameId","updateWidth","nextWidth","quantizeContainerWidth","observer","bucket","breakpointWidth","useDataTableScrollViewport","refreshKey","viewportElement","setViewportElement","a","viewportHeight","setViewportHeight","updateHeight","currentHeight","nextHeight"],"mappings":"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","file":"chunk-ACKI7LST.js","sourcesContent":["import * as React from \"react\";\nimport { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS } from \"../types\";\n\nconst BREAKPOINT_WIDTHS = Object.values(DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS)\n .slice()\n .sort((first, second) => first - second);\n\nexport function useDataTableContainerWidth(\n containerRef: React.RefObject,\n) {\n const widthRef = React.useRef(0);\n const [width, setWidth] = React.useState(0);\n\n React.useEffect(() => {\n const element = containerRef.current;\n if (!element) {\n return;\n }\n\n let frameId: number | null = null;\n const updateWidth = () => {\n const nextWidth = quantizeContainerWidth(element.clientWidth);\n if (nextWidth === widthRef.current) {\n return;\n }\n\n widthRef.current = nextWidth;\n setWidth(nextWidth);\n };\n\n updateWidth();\n\n if (typeof ResizeObserver === \"undefined\") {\n return;\n }\n\n const observer = new ResizeObserver(() => {\n if (frameId !== null) {\n window.cancelAnimationFrame(frameId);\n }\n\n frameId = window.requestAnimationFrame(() => {\n frameId = null;\n updateWidth();\n });\n });\n\n observer.observe(element);\n\n return () => {\n if (frameId !== null) {\n window.cancelAnimationFrame(frameId);\n }\n observer.disconnect();\n };\n }, [containerRef]);\n\n return width;\n}\n\nfunction quantizeContainerWidth(width: number) {\n if (width <= 0) {\n return 0;\n }\n\n let bucket = 1;\n for (const breakpointWidth of BREAKPOINT_WIDTHS) {\n if (width < breakpointWidth) {\n break;\n }\n bucket = breakpointWidth;\n }\n\n return bucket;\n}\n","import * as React from \"react\";\n\nexport function useDataTableScrollViewport(\n containerRef: React.RefObject,\n refreshKey: unknown,\n) {\n const [viewportElement, setViewportElement] =\n React.useState(null);\n const [viewportHeight, setViewportHeight] = React.useState(0);\n\n React.useEffect(() => {\n const element =\n containerRef.current?.querySelector(\n \"[data-slot='scroll-area-viewport']\",\n ) ?? null;\n\n setViewportElement(element);\n if (!element) {\n setViewportHeight(0);\n return;\n }\n\n let frameId: number | null = null;\n const updateHeight = () => {\n setViewportHeight((currentHeight) => {\n const nextHeight = element.clientHeight;\n return currentHeight === nextHeight ? currentHeight : nextHeight;\n });\n };\n\n updateHeight();\n\n if (typeof ResizeObserver === \"undefined\") {\n return;\n }\n\n const observer = new ResizeObserver(() => {\n if (frameId !== null) {\n window.cancelAnimationFrame(frameId);\n }\n\n frameId = window.requestAnimationFrame(() => {\n frameId = null;\n updateHeight();\n });\n });\n\n observer.observe(element);\n\n return () => {\n if (frameId !== null) {\n window.cancelAnimationFrame(frameId);\n }\n observer.disconnect();\n };\n }, [containerRef, refreshKey]);\n\n return { viewportElement, viewportHeight };\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../src/core/data-table/use-data-table-container-width.ts","../src/core/data-table/use-data-table-scroll-viewport.ts"],"names":["BREAKPOINT_WIDTHS","DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS","first","second","useDataTableContainerWidth","containerRef","widthRef","width","setWidth","element","frameId","updateWidth","nextWidth","quantizeContainerWidth","observer","bucket","breakpointWidth","useDataTableScrollViewport","refreshKey","viewportElement","setViewportElement","a","viewportHeight","setViewportHeight","updateHeight","currentHeight","nextHeight"],"mappings":"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","file":"chunk-M77BQPKU.js","sourcesContent":["import * as React from \"react\";\nimport { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS } from \"../types\";\n\nconst BREAKPOINT_WIDTHS = Object.values(DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS)\n .slice()\n .sort((first, second) => first - second);\n\nexport function useDataTableContainerWidth(\n containerRef: React.RefObject,\n) {\n const widthRef = React.useRef(0);\n const [width, setWidth] = React.useState(0);\n\n React.useEffect(() => {\n const element = containerRef.current;\n if (!element) {\n return;\n }\n\n let frameId: number | null = null;\n const updateWidth = () => {\n const nextWidth = quantizeContainerWidth(element.clientWidth);\n if (nextWidth === widthRef.current) {\n return;\n }\n\n widthRef.current = nextWidth;\n setWidth(nextWidth);\n };\n\n updateWidth();\n\n if (typeof ResizeObserver === \"undefined\") {\n return;\n }\n\n const observer = new ResizeObserver(() => {\n if (frameId !== null) {\n window.cancelAnimationFrame(frameId);\n }\n\n frameId = window.requestAnimationFrame(() => {\n frameId = null;\n updateWidth();\n });\n });\n\n observer.observe(element);\n\n return () => {\n if (frameId !== null) {\n window.cancelAnimationFrame(frameId);\n }\n observer.disconnect();\n };\n }, [containerRef]);\n\n return width;\n}\n\nfunction quantizeContainerWidth(width: number) {\n if (width <= 0) {\n return 0;\n }\n\n let bucket = 1;\n for (const breakpointWidth of BREAKPOINT_WIDTHS) {\n if (width < breakpointWidth) {\n break;\n }\n bucket = breakpointWidth;\n }\n\n return bucket;\n}\n","import * as React from \"react\";\n\nexport function useDataTableScrollViewport(\n containerRef: React.RefObject,\n refreshKey: unknown,\n) {\n const [viewportElement, setViewportElement] =\n React.useState(null);\n const [viewportHeight, setViewportHeight] = React.useState(0);\n\n React.useEffect(() => {\n const element =\n containerRef.current?.querySelector(\n \"[data-slot='scroll-area-viewport']\",\n ) ?? null;\n\n setViewportElement(element);\n if (!element) {\n setViewportHeight(0);\n return;\n }\n\n let frameId: number | null = null;\n const updateHeight = () => {\n setViewportHeight((currentHeight) => {\n const nextHeight = element.clientHeight;\n return currentHeight === nextHeight ? currentHeight : nextHeight;\n });\n };\n\n updateHeight();\n\n if (typeof ResizeObserver === \"undefined\") {\n return;\n }\n\n const observer = new ResizeObserver(() => {\n if (frameId !== null) {\n window.cancelAnimationFrame(frameId);\n }\n\n frameId = window.requestAnimationFrame(() => {\n frameId = null;\n updateHeight();\n });\n });\n\n observer.observe(element);\n\n return () => {\n if (frameId !== null) {\n window.cancelAnimationFrame(frameId);\n }\n observer.disconnect();\n };\n }, [containerRef, refreshKey]);\n\n return { viewportElement, viewportHeight };\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-S7PROCUM.js b/dist/chunk-NC2TEQVN.js similarity index 71% rename from dist/chunk-S7PROCUM.js rename to dist/chunk-NC2TEQVN.js index 1118a99..f143e2d 100644 --- a/dist/chunk-S7PROCUM.js +++ b/dist/chunk-NC2TEQVN.js @@ -1,2 +1,2 @@ -import {X as X$1,a as a$1,c,d,f,h,i,j as j$1,k,l,m,n,p,o,q as q$1,s,t,u,z,w,B,G,H,I,J as J$1,L,b,N,O as O$1,P,Q as Q$1,R,T,S,U,V as V$1,W as W$1}from'./chunk-2V6RVOWX.js';import {a}from'./chunk-ZF4EP4WP.js';import'react';import {jsx}from'react/jsx-runtime';function e(N,z){return function({className:F,...K}){return jsx(N,{className:a(z,F),...K})}}var $=e(a$1,"rounded-md border border-cyan-400/45 bg-black/75 font-mono text-[0.8rem] tracking-[0.045em] text-cyan-50 uppercase shadow-[0_0_0_1px_rgba(34,211,238,0.12),0_0_18px_rgba(34,211,238,0.1)] data-[variant=default]:bg-cyan-300 data-[variant=default]:text-slate-950 data-[variant=outline]:bg-black/55 data-[variant=ghost]:border-transparent data-[variant=ghost]:bg-transparent data-[variant=ghost]:hover:bg-cyan-400/10 data-[variant=secondary]:bg-cyan-400/12 data-[variant=destructive]:border-rose-400/50 data-[variant=destructive]:bg-rose-500/15 data-[variant=destructive]:text-rose-200"),O=e(c,"rounded-md border border-cyan-400/35 bg-[linear-gradient(180deg,rgba(0,229,255,0.055),transparent_58%),rgba(1,8,11,0.9)] font-mono text-cyan-50 shadow-[inset_0_1px_0_rgba(125,211,252,0.08),0_0_0_1px_rgba(34,211,238,0.12),0_0_28px_rgba(34,211,238,0.08)] ring-0"),V=e(d,"px-5 pt-5 pb-3"),W=e(f,"px-5 pb-5"),q=e(h,"rounded-sm border-cyan-400/55 bg-black/65 ring-cyan-300/70 data-checked:bg-cyan-300 data-checked:text-slate-950 data-checked:ring-cyan-300"),J=e(i,"rounded-md border border-cyan-400/35 bg-black/92 font-mono text-cyan-50 shadow-[0_0_26px_rgba(34,211,238,0.16)] ring-0 before:hidden **:data-[slot$=-item]:focus:bg-cyan-400/12 **:data-[slot$=-item]:data-highlighted:bg-cyan-400/12 **:data-[slot$=-separator]:bg-cyan-400/18 **:data-[slot$=-trigger]:focus:bg-cyan-400/12"),Q=e(j$1,"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50 data-[variant=destructive]:text-rose-200 data-[variant=destructive]:focus:bg-rose-500/15"),X=e(k,"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50"),Y=e(l,"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50"),Z=e(m,"font-mono text-[0.68rem] tracking-[0.16em] text-cyan-200/70 uppercase"),j=e(n,"bg-cyan-400/20"),ee=e(p,"rounded-md border border-cyan-400/35 bg-black/92 font-mono text-cyan-50 shadow-[0_0_26px_rgba(34,211,238,0.16)] ring-0 before:hidden"),te=e(o,"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50 data-open:bg-cyan-400/12 data-open:text-cyan-50"),ae=e(q$1,"rounded-md border-cyan-400/35 bg-black/80 font-mono text-cyan-50"),re=e(s,"[&[data-variant=icon]]:rounded-xl [&[data-variant=icon]]:bg-cyan-400/12 [&[data-variant=icon]]:text-cyan-200"),ne=e(t,"text-cyan-50"),oe=e(u,"text-cyan-100/70"),de=e(z,"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 placeholder:text-cyan-100/45 focus-visible:ring-cyan-300/70"),ie=e(w,"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 shadow-[0_0_18px_rgba(34,211,238,0.06)]"),ce=e(B,"rounded-md border-cyan-400/35 bg-black/55 font-mono text-cyan-50 hover:bg-cyan-400/12 data-[active=true]:bg-cyan-300 data-[active=true]:text-slate-950"),be=e(G,"rounded-md border border-cyan-400/35 bg-black/72 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_26px_rgba(34,211,238,0.08)]"),se=e(H,"[&>[data-slot=scroll-area-thumb]]:bg-cyan-300/65"),le=e(I,"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 focus-visible:ring-cyan-300/70"),pe=e(J$1,"rounded-md border border-cyan-400/35 bg-black/95 font-mono text-cyan-50 ring-0 shadow-[0_0_26px_rgba(34,211,238,0.16)] before:hidden"),me=e(L,"rounded-sm focus:bg-cyan-400/12 focus:text-cyan-50"),ge=e(b,"bg-cyan-400/20"),ye=e(N,"rounded-md bg-cyan-400/12"),ue=e(O$1,"border-separate border-spacing-0 border border-cyan-400/45 bg-black/72 font-mono text-[0.84rem] text-cyan-50 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_24px_rgba(34,211,238,0.08)]"),xe=e(P,"[&_tr]:border-cyan-400/45"),ve=e(Q$1,"[&_tr:last-child]:border-b"),_e=e(R,"border-cyan-400/40 bg-cyan-400/10 font-mono"),Te=e(T,"h-12 border-b border-cyan-400/45 bg-cyan-950/20 px-3 font-mono text-[0.68rem] font-bold tracking-[0.18em] text-cyan-300 uppercase"),Ce=e(S,"border-cyan-400/25 hover:bg-cyan-400/10 data-[state=selected]:bg-cyan-400/15"),fe=e(U,"border-b border-cyan-400/16 px-3 py-3 font-mono text-cyan-50"),ke=e(V$1,"font-mono text-cyan-100/65"),we=e(W$1,"rounded-md bg-black text-cyan-50 ring-1 ring-cyan-400/35 shadow-[0_0_22px_rgba(34,211,238,0.18)] [&>svg]:bg-black [&>svg]:fill-black"),Me={...X$1,rootClassName:"dtp-thegridcn",classNames:{card:"hover:bg-cyan-400/10 data-[state=selected]:bg-cyan-400/15",cardGrid:"bg-transparent",cardItem:"min-w-0",cardOverlay:"from-black/95 via-black/75 to-transparent",cardScrollArea:"bg-transparent",cardSelected:"bg-cyan-400/15 ring-cyan-300/70",cardUnselected:"border-cyan-400/35",cardViewport:"bg-transparent",cellBorder:"border-cyan-400/16",dragActive:"rounded-md border-dashed border-cyan-300",emptyState:"border-cyan-400/35 bg-black/80",footer:"border-cyan-400/40 bg-black/80 text-cyan-50",headerSortIcon:"text-cyan-100/65",mutedText:"text-cyan-100/70",paginationSelectTrigger:"border-cyan-400/45 bg-black/70 text-cyan-50",paginationTotal:"text-cyan-100/70",pinnedColumn:"border-cyan-400/25",pinnedUtilityColumn:"bg-black/80",resizeHandle:"after:bg-cyan-400/20 hover:after:bg-cyan-300",resizeHandleActive:"after:bg-cyan-300",row:"hover:bg-cyan-400/10 data-[state=selected]:!bg-cyan-400/15",rowSelected:"!bg-cyan-400/15",tableContainer:"border-cyan-400/35 bg-black/72 text-cyan-50 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_26px_rgba(34,211,238,0.08)]",tableScrollArea:"bg-black/72",tableStickyHeader:"sticky top-0 z-30 bg-black/90 backdrop-blur [&_th]:border-cyan-400/45 [&_th]:bg-black/90",toolbarCompactIconButton:"size-7",toolbarIconButton:"text-cyan-100/70 hover:text-cyan-50",toolbarInputButton:"border-cyan-400/45 bg-black/70 text-cyan-50"},Button:$,Card:O,CardContent:W,CardHeader:V,Checkbox:q,DropdownMenuCheckboxItem:X,DropdownMenuContent:J,DropdownMenuItem:Q,DropdownMenuLabel:Z,DropdownMenuRadioItem:Y,DropdownMenuSeparator:j,DropdownMenuSubContent:ee,DropdownMenuSubTrigger:te,Empty:ae,EmptyDescription:oe,EmptyMedia:re,EmptyTitle:ne,Input:de,InputGroup:ie,PaginationLink:ce,ScrollArea:be,ScrollBar:se,SelectContent:pe,SelectItem:me,SelectTrigger:le,Separator:ge,Skeleton:ye,Table:ue,TableBody:ve,TableCaption:ke,TableCell:fe,TableFooter:_e,TableHead:Te,TableHeader:xe,TableRow:Ce,TooltipContent:we};export{Me as a};//# sourceMappingURL=chunk-S7PROCUM.js.map -//# sourceMappingURL=chunk-S7PROCUM.js.map \ No newline at end of file +import {X as X$1,a as a$1,c,d,f,h,i,j as j$1,k,l,m,n,p,o,q as q$1,s,t,u,z,w,B,G,H,I,J as J$1,L,b,N,O as O$1,P,Q as Q$1,R,T,S,U,V as V$1,W as W$1}from'./chunk-7EXRF7VC.js';import {a}from'./chunk-PFB5LOU7.js';import'react';import {jsx}from'react/jsx-runtime';function e(N,z){return function({className:F,...K}){return jsx(N,{className:a(z,F),...K})}}var $=e(a$1,"rounded-md border border-cyan-400/45 bg-black/75 font-mono text-[0.8rem] tracking-[0.045em] text-cyan-50 uppercase shadow-[0_0_0_1px_rgba(34,211,238,0.12),0_0_18px_rgba(34,211,238,0.1)] data-[variant=default]:bg-cyan-300 data-[variant=default]:text-slate-950 data-[variant=outline]:bg-black/55 data-[variant=ghost]:border-transparent data-[variant=ghost]:bg-transparent data-[variant=ghost]:hover:bg-cyan-400/10 data-[variant=secondary]:bg-cyan-400/12 data-[variant=destructive]:border-rose-400/50 data-[variant=destructive]:bg-rose-500/15 data-[variant=destructive]:text-rose-200"),O=e(c,"rounded-md border border-cyan-400/35 bg-[linear-gradient(180deg,rgba(0,229,255,0.055),transparent_58%),rgba(1,8,11,0.9)] font-mono text-cyan-50 shadow-[inset_0_1px_0_rgba(125,211,252,0.08),0_0_0_1px_rgba(34,211,238,0.12),0_0_28px_rgba(34,211,238,0.08)] ring-0"),V=e(d,"px-5 pt-5 pb-3"),W=e(f,"px-5 pb-5"),q=e(h,"rounded-sm border-cyan-400/55 bg-black/65 ring-cyan-300/70 data-checked:bg-cyan-300 data-checked:text-slate-950 data-checked:ring-cyan-300"),J=e(i,"rounded-md border border-cyan-400/35 bg-black/92 font-mono text-cyan-50 shadow-[0_0_26px_rgba(34,211,238,0.16)] ring-0 before:hidden **:data-[slot$=-item]:focus:bg-cyan-400/12 **:data-[slot$=-item]:data-highlighted:bg-cyan-400/12 **:data-[slot$=-separator]:bg-cyan-400/18 **:data-[slot$=-trigger]:focus:bg-cyan-400/12"),Q=e(j$1,"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50 data-[variant=destructive]:text-rose-200 data-[variant=destructive]:focus:bg-rose-500/15"),X=e(k,"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50"),Y=e(l,"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50"),Z=e(m,"font-mono text-[0.68rem] tracking-[0.16em] text-cyan-200/70 uppercase"),j=e(n,"bg-cyan-400/20"),ee=e(p,"rounded-md border border-cyan-400/35 bg-black/92 font-mono text-cyan-50 shadow-[0_0_26px_rgba(34,211,238,0.16)] ring-0 before:hidden"),te=e(o,"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50 data-open:bg-cyan-400/12 data-open:text-cyan-50"),ae=e(q$1,"rounded-md border-cyan-400/35 bg-black/80 font-mono text-cyan-50"),re=e(s,"[&[data-variant=icon]]:rounded-xl [&[data-variant=icon]]:bg-cyan-400/12 [&[data-variant=icon]]:text-cyan-200"),ne=e(t,"text-cyan-50"),oe=e(u,"text-cyan-100/70"),de=e(z,"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 placeholder:text-cyan-100/45 focus-visible:ring-cyan-300/70"),ie=e(w,"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 shadow-[0_0_18px_rgba(34,211,238,0.06)]"),ce=e(B,"rounded-md border-cyan-400/35 bg-black/55 font-mono text-cyan-50 hover:bg-cyan-400/12 data-[active=true]:bg-cyan-300 data-[active=true]:text-slate-950"),be=e(G,"rounded-md border border-cyan-400/35 bg-black/72 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_26px_rgba(34,211,238,0.08)]"),se=e(H,"[&>[data-slot=scroll-area-thumb]]:bg-cyan-300/65"),le=e(I,"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 focus-visible:ring-cyan-300/70"),pe=e(J$1,"rounded-md border border-cyan-400/35 bg-black/95 font-mono text-cyan-50 ring-0 shadow-[0_0_26px_rgba(34,211,238,0.16)] before:hidden"),me=e(L,"rounded-sm focus:bg-cyan-400/12 focus:text-cyan-50"),ge=e(b,"bg-cyan-400/20"),ye=e(N,"rounded-md bg-cyan-400/12"),ue=e(O$1,"border-separate border-spacing-0 border border-cyan-400/45 bg-black/72 font-mono text-[0.84rem] text-cyan-50 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_24px_rgba(34,211,238,0.08)]"),xe=e(P,"[&_tr]:border-cyan-400/45"),ve=e(Q$1,"[&_tr:last-child]:border-b"),_e=e(R,"border-cyan-400/40 bg-cyan-400/10 font-mono"),Te=e(T,"h-12 border-b border-cyan-400/45 bg-cyan-950/20 px-3 font-mono text-[0.68rem] font-bold tracking-[0.18em] text-cyan-300 uppercase"),Ce=e(S,"border-cyan-400/25 hover:bg-cyan-400/10 data-[state=selected]:bg-cyan-400/15"),fe=e(U,"border-b border-cyan-400/16 px-3 py-3 font-mono text-cyan-50"),ke=e(V$1,"font-mono text-cyan-100/65"),we=e(W$1,"rounded-md bg-black text-cyan-50 ring-1 ring-cyan-400/35 shadow-[0_0_22px_rgba(34,211,238,0.18)] [&>svg]:bg-black [&>svg]:fill-black"),Me={...X$1,rootClassName:"dtp-thegridcn",classNames:{card:"hover:bg-cyan-400/10 data-[state=selected]:bg-cyan-400/15",cardGrid:"bg-transparent",cardItem:"min-w-0",cardOverlay:"from-black/95 via-black/75 to-transparent",cardScrollArea:"bg-transparent",cardSelected:"bg-cyan-400/15 ring-cyan-300/70",cardUnselected:"border-cyan-400/35",cardViewport:"bg-transparent",cellBorder:"border-cyan-400/16",columnGroupHeader:"bg-cyan-400/10 text-cyan-200",dragActive:"rounded-md border-dashed border-cyan-300",emptyState:"border-cyan-400/35 bg-black/80",footer:"border-cyan-400/40 bg-black/80 text-cyan-50",headerSortIcon:"text-cyan-100/65",mutedText:"text-cyan-100/70",paginationSelectTrigger:"border-cyan-400/45 bg-black/70 text-cyan-50",paginationTotal:"text-cyan-100/70",pinnedColumn:"border-cyan-400/25",pinnedUtilityColumn:"bg-black/80",resizeHandle:"after:bg-cyan-400/20 hover:after:bg-cyan-300",resizeHandleActive:"after:bg-cyan-300",row:"hover:bg-cyan-400/10 data-[state=selected]:!bg-cyan-400/15",rowSelected:"!bg-cyan-400/15",tableContainer:"border-cyan-400/35 bg-black/72 text-cyan-50 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_26px_rgba(34,211,238,0.08)]",tableScrollArea:"bg-black/72",tableStickyHeader:"sticky top-0 z-30 bg-black/90 backdrop-blur [&_th]:border-cyan-400/45 [&_th]:bg-black/90",toolbarCompactIconButton:"size-7",toolbarIconButton:"text-cyan-100/70 hover:text-cyan-50",toolbarInputButton:"border-cyan-400/45 bg-black/70 text-cyan-50"},Button:$,Card:O,CardContent:W,CardHeader:V,Checkbox:q,DropdownMenuCheckboxItem:X,DropdownMenuContent:J,DropdownMenuItem:Q,DropdownMenuLabel:Z,DropdownMenuRadioItem:Y,DropdownMenuSeparator:j,DropdownMenuSubContent:ee,DropdownMenuSubTrigger:te,Empty:ae,EmptyDescription:oe,EmptyMedia:re,EmptyTitle:ne,Input:de,InputGroup:ie,PaginationLink:ce,ScrollArea:be,ScrollBar:se,SelectContent:pe,SelectItem:me,SelectTrigger:le,Separator:ge,Skeleton:ye,Table:ue,TableBody:ve,TableCaption:ke,TableCell:fe,TableFooter:_e,TableHead:Te,TableHeader:xe,TableRow:Ce,TooltipContent:we};export{Me as a};//# sourceMappingURL=chunk-NC2TEQVN.js.map +//# sourceMappingURL=chunk-NC2TEQVN.js.map \ No newline at end of file diff --git a/dist/chunk-NC2TEQVN.js.map b/dist/chunk-NC2TEQVN.js.map new file mode 100644 index 0000000..f6d8708 --- /dev/null +++ b/dist/chunk-NC2TEQVN.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/adapters/thegridcn/index.tsx"],"names":["withClassName","Component","defaultClassName","className","props","jsx","cn","GridButton","Button","GridCard","Card","GridCardHeader","CardHeader","GridCardContent","CardContent","GridCheckbox","Checkbox","GridDropdownMenuContent","DropdownMenuContent","GridDropdownMenuItem","DropdownMenuItem","GridDropdownMenuCheckboxItem","DropdownMenuCheckboxItem","GridDropdownMenuRadioItem","DropdownMenuRadioItem","GridDropdownMenuLabel","DropdownMenuLabel","GridDropdownMenuSeparator","DropdownMenuSeparator","GridDropdownMenuSubContent","DropdownMenuSubContent","GridDropdownMenuSubTrigger","DropdownMenuSubTrigger","GridEmpty","Empty","GridEmptyMedia","EmptyMedia","GridEmptyTitle","EmptyTitle","GridEmptyDescription","EmptyDescription","GridInput","Input","GridInputGroup","InputGroup","GridPaginationLink","PaginationLink","GridScrollArea","ScrollArea","GridScrollBar","ScrollBar","GridSelectTrigger","SelectTrigger","GridSelectContent","SelectContent","GridSelectItem","SelectItem","GridSeparator","Separator","GridSkeleton","Skeleton","GridTable","Table","GridTableHeader","TableHeader","GridTableBody","TableBody","GridTableFooter","TableFooter","GridTableHead","TableHead","GridTableRow","TableRow","GridTableCell","TableCell","GridTableCaption","TableCaption","GridTooltipContent","TooltipContent","theGridcnUiKit","primitiveUiKit"],"mappings":"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","file":"chunk-NC2TEQVN.js","sourcesContent":["import * as React from \"react\";\nimport type { DataTableUiKit } from \"../../core/ui-kit\";\nimport {\n Button as PrimitiveButton,\n Card as PrimitiveCard,\n CardContent as PrimitiveCardContent,\n CardHeader as PrimitiveCardHeader,\n Checkbox as PrimitiveCheckbox,\n DropdownMenuCheckboxItem as PrimitiveDropdownMenuCheckboxItem,\n DropdownMenuContent as PrimitiveDropdownMenuContent,\n DropdownMenuItem as PrimitiveDropdownMenuItem,\n DropdownMenuLabel as PrimitiveDropdownMenuLabel,\n DropdownMenuRadioItem as PrimitiveDropdownMenuRadioItem,\n DropdownMenuSeparator as PrimitiveDropdownMenuSeparator,\n DropdownMenuSubContent as PrimitiveDropdownMenuSubContent,\n DropdownMenuSubTrigger as PrimitiveDropdownMenuSubTrigger,\n Empty as PrimitiveEmpty,\n EmptyDescription as PrimitiveEmptyDescription,\n EmptyMedia as PrimitiveEmptyMedia,\n EmptyTitle as PrimitiveEmptyTitle,\n Input as PrimitiveInput,\n InputGroup as PrimitiveInputGroup,\n PaginationLink as PrimitivePaginationLink,\n ScrollArea as PrimitiveScrollArea,\n ScrollBar as PrimitiveScrollBar,\n SelectContent as PrimitiveSelectContent,\n SelectItem as PrimitiveSelectItem,\n SelectTrigger as PrimitiveSelectTrigger,\n Separator as PrimitiveSeparator,\n Skeleton as PrimitiveSkeleton,\n Table as PrimitiveTable,\n TableBody as PrimitiveTableBody,\n TableCaption as PrimitiveTableCaption,\n TableCell as PrimitiveTableCell,\n TableFooter as PrimitiveTableFooter,\n TableHead as PrimitiveTableHead,\n TableHeader as PrimitiveTableHeader,\n TableRow as PrimitiveTableRow,\n TooltipContent as PrimitiveTooltipContent,\n primitiveUiKit,\n} from \"../../core/primitive-ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nfunction withClassName(\n Component: React.ComponentType,\n defaultClassName: string,\n) {\n return function Wrapped({ className, ...props }: TProps) {\n return (\n \n );\n };\n}\n\nconst GridButton = withClassName(\n PrimitiveButton,\n \"rounded-md border border-cyan-400/45 bg-black/75 font-mono text-[0.8rem] tracking-[0.045em] text-cyan-50 uppercase shadow-[0_0_0_1px_rgba(34,211,238,0.12),0_0_18px_rgba(34,211,238,0.1)] data-[variant=default]:bg-cyan-300 data-[variant=default]:text-slate-950 data-[variant=outline]:bg-black/55 data-[variant=ghost]:border-transparent data-[variant=ghost]:bg-transparent data-[variant=ghost]:hover:bg-cyan-400/10 data-[variant=secondary]:bg-cyan-400/12 data-[variant=destructive]:border-rose-400/50 data-[variant=destructive]:bg-rose-500/15 data-[variant=destructive]:text-rose-200\",\n);\nconst GridCard = withClassName(\n PrimitiveCard,\n \"rounded-md border border-cyan-400/35 bg-[linear-gradient(180deg,rgba(0,229,255,0.055),transparent_58%),rgba(1,8,11,0.9)] font-mono text-cyan-50 shadow-[inset_0_1px_0_rgba(125,211,252,0.08),0_0_0_1px_rgba(34,211,238,0.12),0_0_28px_rgba(34,211,238,0.08)] ring-0\",\n);\nconst GridCardHeader = withClassName(PrimitiveCardHeader, \"px-5 pt-5 pb-3\");\nconst GridCardContent = withClassName(PrimitiveCardContent, \"px-5 pb-5\");\nconst GridCheckbox = withClassName(\n PrimitiveCheckbox,\n \"rounded-sm border-cyan-400/55 bg-black/65 ring-cyan-300/70 data-checked:bg-cyan-300 data-checked:text-slate-950 data-checked:ring-cyan-300\",\n);\nconst GridDropdownMenuContent = withClassName(\n PrimitiveDropdownMenuContent,\n \"rounded-md border border-cyan-400/35 bg-black/92 font-mono text-cyan-50 shadow-[0_0_26px_rgba(34,211,238,0.16)] ring-0 before:hidden **:data-[slot$=-item]:focus:bg-cyan-400/12 **:data-[slot$=-item]:data-highlighted:bg-cyan-400/12 **:data-[slot$=-separator]:bg-cyan-400/18 **:data-[slot$=-trigger]:focus:bg-cyan-400/12\",\n);\nconst GridDropdownMenuItem = withClassName(\n PrimitiveDropdownMenuItem,\n \"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50 data-[variant=destructive]:text-rose-200 data-[variant=destructive]:focus:bg-rose-500/15\",\n);\nconst GridDropdownMenuCheckboxItem = withClassName(\n PrimitiveDropdownMenuCheckboxItem,\n \"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50\",\n);\nconst GridDropdownMenuRadioItem = withClassName(\n PrimitiveDropdownMenuRadioItem,\n \"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50\",\n);\nconst GridDropdownMenuLabel = withClassName(\n PrimitiveDropdownMenuLabel,\n \"font-mono text-[0.68rem] tracking-[0.16em] text-cyan-200/70 uppercase\",\n);\nconst GridDropdownMenuSeparator = withClassName(\n PrimitiveDropdownMenuSeparator,\n \"bg-cyan-400/20\",\n);\nconst GridDropdownMenuSubContent = withClassName(\n PrimitiveDropdownMenuSubContent,\n \"rounded-md border border-cyan-400/35 bg-black/92 font-mono text-cyan-50 shadow-[0_0_26px_rgba(34,211,238,0.16)] ring-0 before:hidden\",\n);\nconst GridDropdownMenuSubTrigger = withClassName(\n PrimitiveDropdownMenuSubTrigger,\n \"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50 data-open:bg-cyan-400/12 data-open:text-cyan-50\",\n);\nconst GridEmpty = withClassName(\n PrimitiveEmpty,\n \"rounded-md border-cyan-400/35 bg-black/80 font-mono text-cyan-50\",\n);\nconst GridEmptyMedia = withClassName(\n PrimitiveEmptyMedia,\n \"[&[data-variant=icon]]:rounded-xl [&[data-variant=icon]]:bg-cyan-400/12 [&[data-variant=icon]]:text-cyan-200\",\n);\nconst GridEmptyTitle = withClassName(PrimitiveEmptyTitle, \"text-cyan-50\");\nconst GridEmptyDescription = withClassName(\n PrimitiveEmptyDescription,\n \"text-cyan-100/70\",\n);\nconst GridInput = withClassName(\n PrimitiveInput,\n \"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 placeholder:text-cyan-100/45 focus-visible:ring-cyan-300/70\",\n);\nconst GridInputGroup = withClassName(\n PrimitiveInputGroup,\n \"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 shadow-[0_0_18px_rgba(34,211,238,0.06)]\",\n);\nconst GridPaginationLink = withClassName(\n PrimitivePaginationLink,\n \"rounded-md border-cyan-400/35 bg-black/55 font-mono text-cyan-50 hover:bg-cyan-400/12 data-[active=true]:bg-cyan-300 data-[active=true]:text-slate-950\",\n);\nconst GridScrollArea = withClassName(\n PrimitiveScrollArea,\n \"rounded-md border border-cyan-400/35 bg-black/72 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_26px_rgba(34,211,238,0.08)]\",\n);\nconst GridScrollBar = withClassName(\n PrimitiveScrollBar,\n \"[&>[data-slot=scroll-area-thumb]]:bg-cyan-300/65\",\n);\nconst GridSelectTrigger = withClassName(\n PrimitiveSelectTrigger,\n \"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 focus-visible:ring-cyan-300/70\",\n);\nconst GridSelectContent = withClassName(\n PrimitiveSelectContent,\n \"rounded-md border border-cyan-400/35 bg-black/95 font-mono text-cyan-50 ring-0 shadow-[0_0_26px_rgba(34,211,238,0.16)] before:hidden\",\n);\nconst GridSelectItem = withClassName(\n PrimitiveSelectItem,\n \"rounded-sm focus:bg-cyan-400/12 focus:text-cyan-50\",\n);\nconst GridSeparator = withClassName(PrimitiveSeparator, \"bg-cyan-400/20\");\nconst GridSkeleton = withClassName(\n PrimitiveSkeleton,\n \"rounded-md bg-cyan-400/12\",\n);\nconst GridTable = withClassName(\n PrimitiveTable,\n \"border-separate border-spacing-0 border border-cyan-400/45 bg-black/72 font-mono text-[0.84rem] text-cyan-50 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_24px_rgba(34,211,238,0.08)]\",\n);\nconst GridTableHeader = withClassName(\n PrimitiveTableHeader,\n \"[&_tr]:border-cyan-400/45\",\n);\nconst GridTableBody = withClassName(\n PrimitiveTableBody,\n \"[&_tr:last-child]:border-b\",\n);\nconst GridTableFooter = withClassName(\n PrimitiveTableFooter,\n \"border-cyan-400/40 bg-cyan-400/10 font-mono\",\n);\nconst GridTableHead = withClassName(\n PrimitiveTableHead,\n \"h-12 border-b border-cyan-400/45 bg-cyan-950/20 px-3 font-mono text-[0.68rem] font-bold tracking-[0.18em] text-cyan-300 uppercase\",\n);\nconst GridTableRow = withClassName(\n PrimitiveTableRow,\n \"border-cyan-400/25 hover:bg-cyan-400/10 data-[state=selected]:bg-cyan-400/15\",\n);\nconst GridTableCell = withClassName(\n PrimitiveTableCell,\n \"border-b border-cyan-400/16 px-3 py-3 font-mono text-cyan-50\",\n);\nconst GridTableCaption = withClassName(\n PrimitiveTableCaption,\n \"font-mono text-cyan-100/65\",\n);\nconst GridTooltipContent = withClassName(\n PrimitiveTooltipContent,\n \"rounded-md bg-black text-cyan-50 ring-1 ring-cyan-400/35 shadow-[0_0_22px_rgba(34,211,238,0.18)] [&>svg]:bg-black [&>svg]:fill-black\",\n);\n\nexport const theGridcnUiKit: DataTableUiKit = {\n ...primitiveUiKit,\n rootClassName: \"dtp-thegridcn\",\n classNames: {\n card: \"hover:bg-cyan-400/10 data-[state=selected]:bg-cyan-400/15\",\n cardGrid: \"bg-transparent\",\n cardItem: \"min-w-0\",\n cardOverlay: \"from-black/95 via-black/75 to-transparent\",\n cardScrollArea: \"bg-transparent\",\n cardSelected: \"bg-cyan-400/15 ring-cyan-300/70\",\n cardUnselected: \"border-cyan-400/35\",\n cardViewport: \"bg-transparent\",\n cellBorder: \"border-cyan-400/16\",\n columnGroupHeader: \"bg-cyan-400/10 text-cyan-200\",\n dragActive: \"rounded-md border-dashed border-cyan-300\",\n emptyState: \"border-cyan-400/35 bg-black/80\",\n footer: \"border-cyan-400/40 bg-black/80 text-cyan-50\",\n headerSortIcon: \"text-cyan-100/65\",\n mutedText: \"text-cyan-100/70\",\n paginationSelectTrigger: \"border-cyan-400/45 bg-black/70 text-cyan-50\",\n paginationTotal: \"text-cyan-100/70\",\n pinnedColumn: \"border-cyan-400/25\",\n pinnedUtilityColumn: \"bg-black/80\",\n resizeHandle: \"after:bg-cyan-400/20 hover:after:bg-cyan-300\",\n resizeHandleActive: \"after:bg-cyan-300\",\n row: \"hover:bg-cyan-400/10 data-[state=selected]:!bg-cyan-400/15\",\n rowSelected: \"!bg-cyan-400/15\",\n tableContainer:\n \"border-cyan-400/35 bg-black/72 text-cyan-50 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_26px_rgba(34,211,238,0.08)]\",\n tableScrollArea: \"bg-black/72\",\n tableStickyHeader:\n \"sticky top-0 z-30 bg-black/90 backdrop-blur [&_th]:border-cyan-400/45 [&_th]:bg-black/90\",\n toolbarCompactIconButton: \"size-7\",\n toolbarIconButton: \"text-cyan-100/70 hover:text-cyan-50\",\n toolbarInputButton: \"border-cyan-400/45 bg-black/70 text-cyan-50\",\n },\n Button: GridButton,\n Card: GridCard,\n CardContent: GridCardContent,\n CardHeader: GridCardHeader,\n Checkbox: GridCheckbox,\n DropdownMenuCheckboxItem: GridDropdownMenuCheckboxItem,\n DropdownMenuContent: GridDropdownMenuContent,\n DropdownMenuItem: GridDropdownMenuItem,\n DropdownMenuLabel: GridDropdownMenuLabel,\n DropdownMenuRadioItem: GridDropdownMenuRadioItem,\n DropdownMenuSeparator: GridDropdownMenuSeparator,\n DropdownMenuSubContent: GridDropdownMenuSubContent,\n DropdownMenuSubTrigger: GridDropdownMenuSubTrigger,\n Empty: GridEmpty,\n EmptyDescription: GridEmptyDescription,\n EmptyMedia: GridEmptyMedia,\n EmptyTitle: GridEmptyTitle,\n Input: GridInput,\n InputGroup: GridInputGroup,\n PaginationLink: GridPaginationLink,\n ScrollArea: GridScrollArea,\n ScrollBar: GridScrollBar,\n SelectContent: GridSelectContent,\n SelectItem: GridSelectItem,\n SelectTrigger: GridSelectTrigger,\n Separator: GridSeparator,\n Skeleton: GridSkeleton,\n Table: GridTable,\n TableBody: GridTableBody,\n TableCaption: GridTableCaption,\n TableCell: GridTableCell,\n TableFooter: GridTableFooter,\n TableHead: GridTableHead,\n TableHeader: GridTableHeader,\n TableRow: GridTableRow,\n TooltipContent: GridTooltipContent,\n};\n"]} \ No newline at end of file diff --git a/dist/chunk-ZF4EP4WP.js b/dist/chunk-PFB5LOU7.js similarity index 70% rename from dist/chunk-ZF4EP4WP.js rename to dist/chunk-PFB5LOU7.js index 545b903..3b04780 100644 --- a/dist/chunk-ZF4EP4WP.js +++ b/dist/chunk-PFB5LOU7.js @@ -1,2 +1,2 @@ -import {clsx}from'clsx';import {twMerge}from'tailwind-merge';function g(...e){return twMerge(clsx(e))}var s={sm:640,md:768,lg:1024,xl:1280,"2xl":1536};function u(e,a,t){return !a||t?true:!a.getIsHidden(e)}function c(e,a){return typeof e=="function"?e(a):e}function D(e,a){return !e.hidden?.(a)}function p(e,a){return e?.canEditRow?e.canEditRow(a):!!e}function n(e){switch(e){case "center":return "text-center";case "end":return "text-right";default:return "text-left"}}function o(e,a){return e||(a==="numeric"?"end":"start")}function m(e){let a=e.column.columnDef.meta;return n(o(a?.align,a?.type))}function w(e){let a=e.column.columnDef.meta;return n(o(a?.align,a?.type))}function C(e){return e?(Array.isArray(e)?e:[e]).map(t=>`dt-hide-on-${t}`).join(" "):void 0}function y(e,a){return !e||a<=0?false:(Array.isArray(e)?e:[e]).some(i=>a`dt-hide-on-${t}`).join(" "):void 0}function y(e,a){return !e||a<=0?false:(Array.isArray(e)?e:[e]).some(i=>a = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n \"2xl\": 1536,\n};\n\nexport type DataTableRowLoadingState = {\n isLoading: boolean;\n skeleton?: React.ReactNode;\n};\n\nexport type DataTableLoadingState = {\n isLoading: boolean;\n loadingRowCount?: number;\n};\n\nexport type DataTableCellEditRenderProps = {\n cell: CellContext;\n row: TData;\n value: TValue | undefined;\n draftValue: unknown;\n setDraftValue: (value: unknown) => void;\n};\n\nexport type DataTableColumnFilterOption = {\n label: string;\n value: string;\n};\n\nexport type DataTableColumnFilterConfig = {\n type: DataTableColumnFilterType;\n label?: string;\n placeholder?: string;\n options?:\n | Array\n | ((context: { rows: Array }) => Array);\n getOptionValue?: (value: TValue | undefined, row: TData) => string;\n};\n\nexport type DataTableColumnMeta = {\n type?: DataTableColumnType;\n fixed?: DataTableColumnFixed;\n cardTitle?: boolean;\n hideOn?: DataTableContainerBreakpoint | Array;\n minWidth?: number;\n align?: DataTableAlign;\n overflow?:\n | DataTableCellOverflow\n | ((args: {\n row: TData;\n value: TValue | undefined;\n }) => DataTableCellOverflow | undefined);\n headerClassName?: string;\n headerStyle?: React.CSSProperties;\n cellClassName?:\n | string\n | ((args: { row: TData; value: TValue | undefined }) => string | undefined);\n responsiveClassName?: string;\n skeleton?: (context: CellContext) => React.ReactNode;\n filter?: DataTableColumnFilterConfig;\n parseEditValue?: (value: unknown, context: CellContext) => unknown;\n formatEditValue?: (\n value: unknown,\n context: CellContext,\n ) => string;\n renderEditCell?: (\n props: DataTableCellEditRenderProps,\n ) => React.ReactNode;\n};\n\nexport type DataTableColumnDef = ColumnDef<\n TData,\n TValue\n> & {\n meta?: DataTableColumnMeta;\n columns?: Array>;\n};\n\nexport type DataTableColumnGroupDef = DataTableColumnDef<\n TData,\n unknown\n> & {\n id: string;\n columns: Array>;\n};\n\nexport type DataTableToolbarAction = {\n key: string;\n label: string;\n icon?: React.ComponentType<{ className?: string }>;\n iconOnly?: boolean;\n placement?: \"primary\" | \"trailing\";\n onClick: (context: {\n rows: Array;\n openFileDialog?: () => void;\n }) => void | Promise;\n variant?: \"default\" | \"secondary\" | \"outline\" | \"ghost\" | \"destructive\";\n disabled?: boolean;\n};\n\nexport type DataTableSelectionAction = {\n key: string;\n label: string;\n icon?: React.ComponentType<{ className?: string }>;\n iconOnly?: boolean;\n onClick: (context: { rows: Array }) => void | Promise;\n variant?: \"default\" | \"secondary\" | \"outline\" | \"ghost\" | \"destructive\";\n disabled?: boolean | ((rows: Array) => boolean);\n};\n\nexport type DataTableRowAction = {\n key: string;\n label: string | ((row: TData) => string);\n icon?: React.ComponentType<{ className?: string }>;\n onClick: (row: TData) => void | Promise;\n variant?: \"default\" | \"secondary\" | \"destructive\";\n hidden?: (row: TData) => boolean;\n disabled?: (row: TData) => boolean;\n};\n\nexport type DataTableColumnVisibilityOption = {\n id: string;\n label: string;\n visible: boolean;\n canHide: boolean;\n pinned?: false | DataTableColumnFixed;\n};\n\nexport type DataTableToolbarVisibility = {\n title?: boolean;\n search?: boolean;\n actions?: boolean;\n trailingActions?: boolean;\n options?: boolean;\n viewToggle?: boolean;\n customToolbar?: boolean;\n};\n\nexport type DataTableCardRendererProps = {\n row: TData;\n rowId: string;\n isSelected: boolean;\n onSelectedChange: (nextValue: boolean) => void;\n actions: Array>;\n isEditing: boolean;\n startEditing: () => void;\n cancelEditing: () => void;\n};\n\nexport type DataTableEditableRowsConfig = {\n canEditRow?: (row: TData) => boolean;\n getInitialValues?: (row: TData) => Record;\n onSaveRow: (\n row: TData,\n draftValues: Record,\n ) => void | Promise;\n};\n\nexport type DataTableInfiniteScroll = {\n enabled: boolean;\n hasMore: boolean;\n isLoadingMore?: boolean;\n onLoadMore: () => void | Promise;\n};\n\nexport type DataTableHiddenRowsConfig = {\n getIsHidden: (row: TData) => boolean;\n label?: string;\n};\n\nexport type DataTableEmptyStateContext = {\n rows: Array;\n toolbarQueryValue: string;\n};\n\nexport type DataTableDragAndDropConfig = {\n isDragging?: boolean;\n onDragEnter?: React.DragEventHandler;\n onDragOver?: React.DragEventHandler;\n onDragLeave?: React.DragEventHandler;\n onDrop?: React.DragEventHandler;\n getRowDraggable?: (row: TData) => boolean;\n onRowDragStart?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n onRowDragEnd?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n};\n\nexport type DataTableFileUploadConfig = {\n accept?: string;\n disabled?: boolean;\n multiple?: boolean;\n onFilesSelected: (files: FileList | Array) => void | Promise;\n};\n\nexport type DataTableVirtualizationConfig = {\n enabled?: boolean;\n estimateRowHeight?: number;\n overscan?: number;\n card?: DataTableCardVirtualizationConfig;\n};\n\nexport type DataTableCardVirtualizationConfig = {\n enabled?: boolean;\n estimateCardHeight?: number;\n overscan?: number;\n lanes?: number | \"auto\";\n};\n\nexport type DataTableExpandedRowProps = {\n row: TData;\n rowId: string;\n tableRow: Row;\n};\n\nexport type DataTableCsvExportOptions = {\n filename?: string;\n includeHeaders?: boolean;\n columns?: Array;\n scope?: DataTableCsvExportScope;\n escapeFormulaValues?: boolean;\n lineEnding?: \"\\n\" | \"\\r\\n\";\n getCellValue?: (context: {\n row: TData;\n rowId: string;\n columnId: string;\n value: unknown;\n }) => unknown;\n onExport?: (context: {\n csv: string;\n filename: string;\n rows: Array;\n scope: DataTableCsvExportScope;\n }) => void | Promise;\n};\n\nexport type DataTableActionErrorContext = {\n source: DataTableActionErrorSource;\n error: unknown;\n actionKey?: string;\n row?: TData;\n};\n\nexport type DataTableColumnPrefs = {\n visibility?: VisibilityState;\n sizing?: Record;\n order?: ColumnOrderState;\n pinning?: ColumnPinningState;\n density?: DataTableDensity;\n};\n\nexport type DataTablePersistenceSlice = keyof DataTableColumnPrefs;\n\nexport type DataTablePersistenceStorage = Pick<\n Storage,\n \"getItem\" | \"setItem\" | \"removeItem\"\n>;\n\nexport type DataTablePersistenceOperation =\n | \"read\"\n | \"write\"\n | \"remove\"\n | \"serialize\"\n | \"deserialize\"\n | \"migrate\";\n\nexport type DataTablePersistencePayload = {\n version: string | number;\n state: DataTableColumnPrefs;\n};\n\nexport type DataTablePersistenceConfig = {\n key: string;\n version?: string | number;\n slices?: Array;\n storage?: DataTablePersistenceStorage;\n serialize?: (payload: DataTablePersistencePayload) => string;\n deserialize?: (value: string) => unknown;\n migrate?: (\n payload: { version: unknown; state: unknown },\n targetVersion: string | number,\n ) => DataTableColumnPrefs | undefined;\n debounceMs?: number;\n onError?: (context: {\n error: unknown;\n operation: DataTablePersistenceOperation;\n }) => void;\n};\n\nexport type DataTableState = {\n sorting: SortingState;\n pagination: PaginationState;\n rowSelection: Record;\n columnVisibility: VisibilityState;\n columnFilters: ColumnFiltersState;\n expanded: ExpandedState;\n columnOrder: ColumnOrderState;\n columnPinning: ColumnPinningState;\n columnSizing: ColumnSizingState;\n density: DataTableDensity;\n viewMode: DataTableViewMode;\n showHiddenRows: boolean;\n globalFilter: string;\n};\n\nexport type DataTableInitialState = Partial;\n\nexport type DataTableSavedViewSlice = keyof DataTableState;\n\nexport type DataTableSavedView = {\n id: string;\n name: string;\n createdAt: string;\n updatedAt: string;\n state: Partial;\n};\n\nexport type DataTableSavedViewsPayload = {\n version: string | number;\n views: Array;\n};\n\nexport type DataTableSavedViewsChangeOperation =\n | \"create\"\n | \"rename\"\n | \"delete\"\n | \"clear\";\n\nexport type DataTableSavedViewsConfig = {\n key: string;\n version?: string | number;\n slices?: Array;\n storage?: DataTablePersistenceStorage;\n serialize?: (payload: DataTableSavedViewsPayload) => string;\n deserialize?: (value: string) => unknown;\n migrate?: (\n payload: { version: unknown; views: unknown },\n targetVersion: string | number,\n ) => Array | undefined;\n onChange?: (\n views: Array,\n operation: DataTableSavedViewsChangeOperation,\n ) => void;\n onApply?: (view: DataTableSavedView) => void;\n onError?: (context: {\n error: unknown;\n operation: DataTablePersistenceOperation;\n }) => void;\n};\n\nexport type DataTableResetOptions = {\n clearPersistence?: boolean;\n};\n\nexport type DataTableApi = {\n getTable: () => TanStackTable | null;\n getState: () => DataTableState;\n snapshot: () => DataTableState;\n restore: (state: Partial) => void;\n resetColumnLayout: (options?: DataTableResetOptions) => void;\n resetState: (options?: DataTableResetOptions) => void;\n clearPersistedState: () => boolean;\n getSavedViews: () => Array;\n createSavedView: (name: string) => DataTableSavedView | undefined;\n applySavedView: (id: string) => boolean;\n renameSavedView: (\n id: string,\n name: string,\n ) => DataTableSavedView | undefined;\n deleteSavedView: (id: string) => boolean;\n clearSavedViews: () => boolean;\n focus: () => void;\n scrollToRow: (rowId: string) => boolean;\n scrollToColumn: (columnId: string) => boolean;\n exportCsv: (\n options?: boolean | DataTableCsvExportOptions,\n ) => Promise;\n};\n\nexport type DataTableLabels = {\n searchPlaceholder: string;\n searchTable: string;\n clearSearch: string;\n noRowsTitle: string;\n noRowsDescription: string;\n noMatchingRowsTitle: string;\n noMatchingRowsDescription: string;\n tableOptions: string;\n columns: string;\n filters: string;\n clearFilters: string;\n selectedRows: (count: number) => string;\n showHiddenRows: (label: string) => string;\n recordsPerPage: string;\n totalRecords: (count: number) => string;\n pageStatus: (pageIndex: number, pageCount: number) => string;\n pageStatusUnknown?: (pageIndex: number) => string;\n pagination?: string;\n morePages?: string;\n firstPage: string;\n previousPage: string;\n nextPage: string;\n lastPage: string;\n selectAllVisibleRows?: string;\n selectRow?: string;\n selectCardRow?: (rowId: string) => string;\n switchToTableView?: string;\n switchToCardView?: string;\n tableView?: string;\n cardView?: string;\n allFilterOptions?: string;\n actions: string;\n rowActions: string;\n editRow: string;\n saveEdit: string;\n cancelEdit: string;\n expandRow: string;\n collapseRow: string;\n exportCsv: string;\n density: string;\n compactDensity: string;\n comfortableDensity: string;\n spaciousDensity: string;\n pinLeft: string;\n pinRight: string;\n unpin: string;\n};\n\nexport type DataTableSummaryRow = {\n key: string;\n label?: React.ReactNode;\n cells: Record<\n string,\n React.ReactNode | ((context: { rows: Array; columnId: string }) => React.ReactNode)\n >;\n};\n\nexport type DataTableProps = {\n columns: Array>;\n data: Array;\n getRowId: (row: TData, index: number) => string;\n children?: React.ReactNode;\n title?: string;\n description?: string;\n toolbarQueryValue?: string;\n onToolbarQueryValueChange?: (value: string) => void;\n toolbarQueryPlaceholder?: string;\n toolbarQueryDebounceMs?: number;\n manualFiltering?: boolean;\n enableToolbarQueryFiltering?: boolean;\n globalFilterFn?: FilterFnOption;\n columnFilters?: ColumnFiltersState;\n onColumnFiltersChange?: (filters: ColumnFiltersState) => void;\n enableColumnFilters?: boolean;\n customToolbar?: React.ReactNode;\n compactToolbar?: React.ReactNode;\n rowsPerPageOptions?: Array;\n totalRowCount?: number;\n hasNextPage?: boolean;\n sorting?: SortingState;\n onSortingChange?: (sorting: SortingState) => void;\n manualSorting?: boolean;\n pageIndex?: number;\n pageSize?: number;\n onPageIndexChange?: (pageIndex: number) => void;\n onPageSizeChange?: (pageSize: number) => void;\n pageCount?: number;\n manualPagination?: boolean;\n rowSelection?: Record;\n onRowSelectionChange?: (rowSelection: Record) => void;\n enableRowSelection?: boolean;\n expanded?: ExpandedState;\n onExpandedChange?: (expanded: ExpandedState) => void;\n getRowCanExpand?: (row: TData) => boolean;\n renderExpandedRow?: (\n props: DataTableExpandedRowProps,\n ) => React.ReactNode;\n columnOrder?: ColumnOrderState;\n onColumnOrderChange?: (columnOrder: ColumnOrderState) => void;\n enableColumnReordering?: boolean;\n columnPinning?: ColumnPinningState;\n onColumnPinningChange?: (columnPinning: ColumnPinningState) => void;\n enableColumnPinning?: boolean;\n toolbarActions?: Array>;\n selectionActions?: Array>;\n rowActions?: Array>;\n csvExport?: boolean | DataTableCsvExportOptions;\n density?: DataTableDensity;\n onDensityChange?: (density: DataTableDensity) => void;\n enableDensityToggle?: boolean;\n columnPrefsKey?: string;\n persistence?: DataTablePersistenceConfig;\n savedViews?: DataTableSavedViewsConfig;\n initialState?: DataTableInitialState;\n state?: Partial;\n onStateChange?: (updater: Updater) => void;\n apiRef?: React.Ref>;\n labels?: Partial;\n summaryRows?: Array>;\n cardRenderer?: (props: DataTableCardRendererProps) => React.ReactNode;\n cardSizing?: DataTableCardSizing;\n cardGridClassName?: string;\n cardClassName?: string;\n viewMode?: DataTableViewMode;\n onViewModeChange?: (viewMode: DataTableViewMode) => void;\n enableViewToggle?: boolean;\n emptyState?:\n | React.ReactNode\n | ((context: DataTableEmptyStateContext) => React.ReactNode);\n isLoading?: boolean;\n loadingRowCount?: number;\n getRowLoadingState?: (\n row: TData,\n index: number,\n ) => boolean | DataTableRowLoadingState;\n hiddenRows?: DataTableHiddenRowsConfig;\n showHiddenRows?: boolean;\n onShowHiddenRowsChange?: (showHiddenRows: boolean) => void;\n infiniteScroll?: DataTableInfiniteScroll;\n editableRows?: DataTableEditableRowsConfig;\n columnVisibility?: VisibilityState;\n onColumnVisibilityChange?: (visibility: VisibilityState) => void;\n columnSizing?: ColumnSizingState;\n onColumnSizingChange?: (sizing: ColumnSizingState) => void;\n enableColumnResizing?: boolean;\n columnResizeMode?: \"onChange\" | \"onEnd\";\n layoutMode?: \"fill\" | \"fit\";\n stickyHeader?: boolean;\n showFooter?: boolean;\n showToolbar?: boolean;\n dir?: \"ltr\" | \"rtl\";\n flexGrow?: boolean;\n toolbarVisibility?: DataTableToolbarVisibility;\n className?: string;\n tableClassName?: string;\n tableContainerClassName?: string;\n getRowClassName?: (row: TData) => string | undefined;\n onRowClick?: (context: { row: TData; rowId: string }) => void | Promise;\n onActionError?: (context: DataTableActionErrorContext) => void;\n dragAndDrop?: DataTableDragAndDropConfig;\n fileUpload?: DataTableFileUploadConfig;\n virtualization?: boolean | DataTableVirtualizationConfig;\n};\n\nexport function isRowVisible(\n row: TData,\n hiddenRows: DataTableHiddenRowsConfig | undefined,\n showHiddenRows: boolean,\n) {\n if (!hiddenRows) {\n return true;\n }\n\n if (showHiddenRows) {\n return true;\n }\n\n return !hiddenRows.getIsHidden(row);\n}\n\nexport function resolveRowActionLabel(\n label: DataTableRowAction[\"label\"],\n row: TData,\n) {\n return typeof label === \"function\" ? label(row) : label;\n}\n\nexport function canUseRowAction(\n action: DataTableRowAction,\n row: TData,\n) {\n return !action.hidden?.(row);\n}\n\nexport function canEditRow(\n editableRows: DataTableEditableRowsConfig | undefined,\n row: TData,\n) {\n return editableRows?.canEditRow\n ? editableRows.canEditRow(row)\n : Boolean(editableRows);\n}\n\nexport function alignClassName(align: DataTableAlign | undefined) {\n switch (align) {\n case \"center\":\n return \"text-center\";\n case \"end\":\n return \"text-right\";\n default:\n return \"text-left\";\n }\n}\n\nexport function resolveColumnAlign(\n align: DataTableAlign | undefined,\n type: DataTableColumnType | undefined,\n) {\n if (align) {\n return align;\n }\n\n if (type === \"numeric\") {\n return \"end\";\n }\n\n return \"start\";\n}\n\nexport function headerAlignClassName(\n context: HeaderContext,\n) {\n const meta = (context.column.columnDef as DataTableColumnDef)\n .meta;\n return alignClassName(resolveColumnAlign(meta?.align, meta?.type));\n}\n\nexport function cellAlignClassName(\n context: CellContext,\n) {\n const meta = (context.column.columnDef as DataTableColumnDef)\n .meta;\n return alignClassName(resolveColumnAlign(meta?.align, meta?.type));\n}\n\nexport function hideOnClassName(\n hideOn:\n | DataTableContainerBreakpoint\n | Array\n | undefined,\n) {\n if (!hideOn) {\n return undefined;\n }\n\n const values = Array.isArray(hideOn) ? hideOn : [hideOn];\n return values.map((value) => `dt-hide-on-${value}`).join(\" \");\n}\n\nexport function isHiddenAtContainerWidth(\n hideOn:\n | DataTableContainerBreakpoint\n | Array\n | undefined,\n containerWidth: number,\n) {\n if (!hideOn || containerWidth <= 0) {\n return false;\n }\n\n const values = Array.isArray(hideOn) ? hideOn : [hideOn];\n return values.some(\n (value) => containerWidth < DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS[value],\n );\n}\n\nexport function rowSelectionStateFromRows(rows: Array>) {\n return rows.map((row) => row.original);\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-RJOEF7NA.js b/dist/chunk-RJOEF7NA.js deleted file mode 100644 index c55d183..0000000 --- a/dist/chunk-RJOEF7NA.js +++ /dev/null @@ -1,2 +0,0 @@ -import {a as a$1}from'./chunk-EAV5MZCW.js';import {a}from'./chunk-Y5JNRFE4.js';import {j}from'./chunk-3CYYXB7K.js';function b(r){return j(r,{CardPanel:a$1,TablePanel:a})}export{b as a};//# sourceMappingURL=chunk-RJOEF7NA.js.map -//# sourceMappingURL=chunk-RJOEF7NA.js.map \ No newline at end of file diff --git a/dist/chunk-S7PROCUM.js.map b/dist/chunk-S7PROCUM.js.map deleted file mode 100644 index a2a0ec9..0000000 --- a/dist/chunk-S7PROCUM.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/adapters/thegridcn/index.tsx"],"names":["withClassName","Component","defaultClassName","className","props","jsx","cn","GridButton","Button","GridCard","Card","GridCardHeader","CardHeader","GridCardContent","CardContent","GridCheckbox","Checkbox","GridDropdownMenuContent","DropdownMenuContent","GridDropdownMenuItem","DropdownMenuItem","GridDropdownMenuCheckboxItem","DropdownMenuCheckboxItem","GridDropdownMenuRadioItem","DropdownMenuRadioItem","GridDropdownMenuLabel","DropdownMenuLabel","GridDropdownMenuSeparator","DropdownMenuSeparator","GridDropdownMenuSubContent","DropdownMenuSubContent","GridDropdownMenuSubTrigger","DropdownMenuSubTrigger","GridEmpty","Empty","GridEmptyMedia","EmptyMedia","GridEmptyTitle","EmptyTitle","GridEmptyDescription","EmptyDescription","GridInput","Input","GridInputGroup","InputGroup","GridPaginationLink","PaginationLink","GridScrollArea","ScrollArea","GridScrollBar","ScrollBar","GridSelectTrigger","SelectTrigger","GridSelectContent","SelectContent","GridSelectItem","SelectItem","GridSeparator","Separator","GridSkeleton","Skeleton","GridTable","Table","GridTableHeader","TableHeader","GridTableBody","TableBody","GridTableFooter","TableFooter","GridTableHead","TableHead","GridTableRow","TableRow","GridTableCell","TableCell","GridTableCaption","TableCaption","GridTooltipContent","TooltipContent","theGridcnUiKit","primitiveUiKit"],"mappings":"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","file":"chunk-S7PROCUM.js","sourcesContent":["import * as React from \"react\";\nimport type { DataTableUiKit } from \"../../core/ui-kit\";\nimport {\n Button as PrimitiveButton,\n Card as PrimitiveCard,\n CardContent as PrimitiveCardContent,\n CardHeader as PrimitiveCardHeader,\n Checkbox as PrimitiveCheckbox,\n DropdownMenuCheckboxItem as PrimitiveDropdownMenuCheckboxItem,\n DropdownMenuContent as PrimitiveDropdownMenuContent,\n DropdownMenuItem as PrimitiveDropdownMenuItem,\n DropdownMenuLabel as PrimitiveDropdownMenuLabel,\n DropdownMenuRadioItem as PrimitiveDropdownMenuRadioItem,\n DropdownMenuSeparator as PrimitiveDropdownMenuSeparator,\n DropdownMenuSubContent as PrimitiveDropdownMenuSubContent,\n DropdownMenuSubTrigger as PrimitiveDropdownMenuSubTrigger,\n Empty as PrimitiveEmpty,\n EmptyDescription as PrimitiveEmptyDescription,\n EmptyMedia as PrimitiveEmptyMedia,\n EmptyTitle as PrimitiveEmptyTitle,\n Input as PrimitiveInput,\n InputGroup as PrimitiveInputGroup,\n PaginationLink as PrimitivePaginationLink,\n ScrollArea as PrimitiveScrollArea,\n ScrollBar as PrimitiveScrollBar,\n SelectContent as PrimitiveSelectContent,\n SelectItem as PrimitiveSelectItem,\n SelectTrigger as PrimitiveSelectTrigger,\n Separator as PrimitiveSeparator,\n Skeleton as PrimitiveSkeleton,\n Table as PrimitiveTable,\n TableBody as PrimitiveTableBody,\n TableCaption as PrimitiveTableCaption,\n TableCell as PrimitiveTableCell,\n TableFooter as PrimitiveTableFooter,\n TableHead as PrimitiveTableHead,\n TableHeader as PrimitiveTableHeader,\n TableRow as PrimitiveTableRow,\n TooltipContent as PrimitiveTooltipContent,\n primitiveUiKit,\n} from \"../../core/primitive-ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nfunction withClassName(\n Component: React.ComponentType,\n defaultClassName: string,\n) {\n return function Wrapped({ className, ...props }: TProps) {\n return (\n \n );\n };\n}\n\nconst GridButton = withClassName(\n PrimitiveButton,\n \"rounded-md border border-cyan-400/45 bg-black/75 font-mono text-[0.8rem] tracking-[0.045em] text-cyan-50 uppercase shadow-[0_0_0_1px_rgba(34,211,238,0.12),0_0_18px_rgba(34,211,238,0.1)] data-[variant=default]:bg-cyan-300 data-[variant=default]:text-slate-950 data-[variant=outline]:bg-black/55 data-[variant=ghost]:border-transparent data-[variant=ghost]:bg-transparent data-[variant=ghost]:hover:bg-cyan-400/10 data-[variant=secondary]:bg-cyan-400/12 data-[variant=destructive]:border-rose-400/50 data-[variant=destructive]:bg-rose-500/15 data-[variant=destructive]:text-rose-200\",\n);\nconst GridCard = withClassName(\n PrimitiveCard,\n \"rounded-md border border-cyan-400/35 bg-[linear-gradient(180deg,rgba(0,229,255,0.055),transparent_58%),rgba(1,8,11,0.9)] font-mono text-cyan-50 shadow-[inset_0_1px_0_rgba(125,211,252,0.08),0_0_0_1px_rgba(34,211,238,0.12),0_0_28px_rgba(34,211,238,0.08)] ring-0\",\n);\nconst GridCardHeader = withClassName(PrimitiveCardHeader, \"px-5 pt-5 pb-3\");\nconst GridCardContent = withClassName(PrimitiveCardContent, \"px-5 pb-5\");\nconst GridCheckbox = withClassName(\n PrimitiveCheckbox,\n \"rounded-sm border-cyan-400/55 bg-black/65 ring-cyan-300/70 data-checked:bg-cyan-300 data-checked:text-slate-950 data-checked:ring-cyan-300\",\n);\nconst GridDropdownMenuContent = withClassName(\n PrimitiveDropdownMenuContent,\n \"rounded-md border border-cyan-400/35 bg-black/92 font-mono text-cyan-50 shadow-[0_0_26px_rgba(34,211,238,0.16)] ring-0 before:hidden **:data-[slot$=-item]:focus:bg-cyan-400/12 **:data-[slot$=-item]:data-highlighted:bg-cyan-400/12 **:data-[slot$=-separator]:bg-cyan-400/18 **:data-[slot$=-trigger]:focus:bg-cyan-400/12\",\n);\nconst GridDropdownMenuItem = withClassName(\n PrimitiveDropdownMenuItem,\n \"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50 data-[variant=destructive]:text-rose-200 data-[variant=destructive]:focus:bg-rose-500/15\",\n);\nconst GridDropdownMenuCheckboxItem = withClassName(\n PrimitiveDropdownMenuCheckboxItem,\n \"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50\",\n);\nconst GridDropdownMenuRadioItem = withClassName(\n PrimitiveDropdownMenuRadioItem,\n \"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50\",\n);\nconst GridDropdownMenuLabel = withClassName(\n PrimitiveDropdownMenuLabel,\n \"font-mono text-[0.68rem] tracking-[0.16em] text-cyan-200/70 uppercase\",\n);\nconst GridDropdownMenuSeparator = withClassName(\n PrimitiveDropdownMenuSeparator,\n \"bg-cyan-400/20\",\n);\nconst GridDropdownMenuSubContent = withClassName(\n PrimitiveDropdownMenuSubContent,\n \"rounded-md border border-cyan-400/35 bg-black/92 font-mono text-cyan-50 shadow-[0_0_26px_rgba(34,211,238,0.16)] ring-0 before:hidden\",\n);\nconst GridDropdownMenuSubTrigger = withClassName(\n PrimitiveDropdownMenuSubTrigger,\n \"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50 data-open:bg-cyan-400/12 data-open:text-cyan-50\",\n);\nconst GridEmpty = withClassName(\n PrimitiveEmpty,\n \"rounded-md border-cyan-400/35 bg-black/80 font-mono text-cyan-50\",\n);\nconst GridEmptyMedia = withClassName(\n PrimitiveEmptyMedia,\n \"[&[data-variant=icon]]:rounded-xl [&[data-variant=icon]]:bg-cyan-400/12 [&[data-variant=icon]]:text-cyan-200\",\n);\nconst GridEmptyTitle = withClassName(PrimitiveEmptyTitle, \"text-cyan-50\");\nconst GridEmptyDescription = withClassName(\n PrimitiveEmptyDescription,\n \"text-cyan-100/70\",\n);\nconst GridInput = withClassName(\n PrimitiveInput,\n \"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 placeholder:text-cyan-100/45 focus-visible:ring-cyan-300/70\",\n);\nconst GridInputGroup = withClassName(\n PrimitiveInputGroup,\n \"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 shadow-[0_0_18px_rgba(34,211,238,0.06)]\",\n);\nconst GridPaginationLink = withClassName(\n PrimitivePaginationLink,\n \"rounded-md border-cyan-400/35 bg-black/55 font-mono text-cyan-50 hover:bg-cyan-400/12 data-[active=true]:bg-cyan-300 data-[active=true]:text-slate-950\",\n);\nconst GridScrollArea = withClassName(\n PrimitiveScrollArea,\n \"rounded-md border border-cyan-400/35 bg-black/72 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_26px_rgba(34,211,238,0.08)]\",\n);\nconst GridScrollBar = withClassName(\n PrimitiveScrollBar,\n \"[&>[data-slot=scroll-area-thumb]]:bg-cyan-300/65\",\n);\nconst GridSelectTrigger = withClassName(\n PrimitiveSelectTrigger,\n \"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 focus-visible:ring-cyan-300/70\",\n);\nconst GridSelectContent = withClassName(\n PrimitiveSelectContent,\n \"rounded-md border border-cyan-400/35 bg-black/95 font-mono text-cyan-50 ring-0 shadow-[0_0_26px_rgba(34,211,238,0.16)] before:hidden\",\n);\nconst GridSelectItem = withClassName(\n PrimitiveSelectItem,\n \"rounded-sm focus:bg-cyan-400/12 focus:text-cyan-50\",\n);\nconst GridSeparator = withClassName(PrimitiveSeparator, \"bg-cyan-400/20\");\nconst GridSkeleton = withClassName(\n PrimitiveSkeleton,\n \"rounded-md bg-cyan-400/12\",\n);\nconst GridTable = withClassName(\n PrimitiveTable,\n \"border-separate border-spacing-0 border border-cyan-400/45 bg-black/72 font-mono text-[0.84rem] text-cyan-50 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_24px_rgba(34,211,238,0.08)]\",\n);\nconst GridTableHeader = withClassName(\n PrimitiveTableHeader,\n \"[&_tr]:border-cyan-400/45\",\n);\nconst GridTableBody = withClassName(\n PrimitiveTableBody,\n \"[&_tr:last-child]:border-b\",\n);\nconst GridTableFooter = withClassName(\n PrimitiveTableFooter,\n \"border-cyan-400/40 bg-cyan-400/10 font-mono\",\n);\nconst GridTableHead = withClassName(\n PrimitiveTableHead,\n \"h-12 border-b border-cyan-400/45 bg-cyan-950/20 px-3 font-mono text-[0.68rem] font-bold tracking-[0.18em] text-cyan-300 uppercase\",\n);\nconst GridTableRow = withClassName(\n PrimitiveTableRow,\n \"border-cyan-400/25 hover:bg-cyan-400/10 data-[state=selected]:bg-cyan-400/15\",\n);\nconst GridTableCell = withClassName(\n PrimitiveTableCell,\n \"border-b border-cyan-400/16 px-3 py-3 font-mono text-cyan-50\",\n);\nconst GridTableCaption = withClassName(\n PrimitiveTableCaption,\n \"font-mono text-cyan-100/65\",\n);\nconst GridTooltipContent = withClassName(\n PrimitiveTooltipContent,\n \"rounded-md bg-black text-cyan-50 ring-1 ring-cyan-400/35 shadow-[0_0_22px_rgba(34,211,238,0.18)] [&>svg]:bg-black [&>svg]:fill-black\",\n);\n\nexport const theGridcnUiKit: DataTableUiKit = {\n ...primitiveUiKit,\n rootClassName: \"dtp-thegridcn\",\n classNames: {\n card: \"hover:bg-cyan-400/10 data-[state=selected]:bg-cyan-400/15\",\n cardGrid: \"bg-transparent\",\n cardItem: \"min-w-0\",\n cardOverlay: \"from-black/95 via-black/75 to-transparent\",\n cardScrollArea: \"bg-transparent\",\n cardSelected: \"bg-cyan-400/15 ring-cyan-300/70\",\n cardUnselected: \"border-cyan-400/35\",\n cardViewport: \"bg-transparent\",\n cellBorder: \"border-cyan-400/16\",\n dragActive: \"rounded-md border-dashed border-cyan-300\",\n emptyState: \"border-cyan-400/35 bg-black/80\",\n footer: \"border-cyan-400/40 bg-black/80 text-cyan-50\",\n headerSortIcon: \"text-cyan-100/65\",\n mutedText: \"text-cyan-100/70\",\n paginationSelectTrigger: \"border-cyan-400/45 bg-black/70 text-cyan-50\",\n paginationTotal: \"text-cyan-100/70\",\n pinnedColumn: \"border-cyan-400/25\",\n pinnedUtilityColumn: \"bg-black/80\",\n resizeHandle: \"after:bg-cyan-400/20 hover:after:bg-cyan-300\",\n resizeHandleActive: \"after:bg-cyan-300\",\n row: \"hover:bg-cyan-400/10 data-[state=selected]:!bg-cyan-400/15\",\n rowSelected: \"!bg-cyan-400/15\",\n tableContainer:\n \"border-cyan-400/35 bg-black/72 text-cyan-50 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_26px_rgba(34,211,238,0.08)]\",\n tableScrollArea: \"bg-black/72\",\n tableStickyHeader:\n \"sticky top-0 z-30 bg-black/90 backdrop-blur [&_th]:border-cyan-400/45 [&_th]:bg-black/90\",\n toolbarCompactIconButton: \"size-7\",\n toolbarIconButton: \"text-cyan-100/70 hover:text-cyan-50\",\n toolbarInputButton: \"border-cyan-400/45 bg-black/70 text-cyan-50\",\n },\n Button: GridButton,\n Card: GridCard,\n CardContent: GridCardContent,\n CardHeader: GridCardHeader,\n Checkbox: GridCheckbox,\n DropdownMenuCheckboxItem: GridDropdownMenuCheckboxItem,\n DropdownMenuContent: GridDropdownMenuContent,\n DropdownMenuItem: GridDropdownMenuItem,\n DropdownMenuLabel: GridDropdownMenuLabel,\n DropdownMenuRadioItem: GridDropdownMenuRadioItem,\n DropdownMenuSeparator: GridDropdownMenuSeparator,\n DropdownMenuSubContent: GridDropdownMenuSubContent,\n DropdownMenuSubTrigger: GridDropdownMenuSubTrigger,\n Empty: GridEmpty,\n EmptyDescription: GridEmptyDescription,\n EmptyMedia: GridEmptyMedia,\n EmptyTitle: GridEmptyTitle,\n Input: GridInput,\n InputGroup: GridInputGroup,\n PaginationLink: GridPaginationLink,\n ScrollArea: GridScrollArea,\n ScrollBar: GridScrollBar,\n SelectContent: GridSelectContent,\n SelectItem: GridSelectItem,\n SelectTrigger: GridSelectTrigger,\n Separator: GridSeparator,\n Skeleton: GridSkeleton,\n Table: GridTable,\n TableBody: GridTableBody,\n TableCaption: GridTableCaption,\n TableCell: GridTableCell,\n TableFooter: GridTableFooter,\n TableHead: GridTableHead,\n TableHeader: GridTableHeader,\n TableRow: GridTableRow,\n TooltipContent: GridTooltipContent,\n};\n"]} \ No newline at end of file diff --git a/dist/chunk-EAV5MZCW.js b/dist/chunk-U5TIDLB3.js similarity index 93% rename from dist/chunk-EAV5MZCW.js rename to dist/chunk-U5TIDLB3.js index a8c3e3d..13aeae6 100644 --- a/dist/chunk-EAV5MZCW.js +++ b/dist/chunk-U5TIDLB3.js @@ -1,2 +1,2 @@ -import {b,a}from'./chunk-ACKI7LST.js';import {a as a$1}from'./chunk-ZF4EP4WP.js';import*as S from'react';import {useVirtualizer}from'@tanstack/react-virtual';import {jsx,jsxs}from'react/jsx-runtime';function nt({cardClassName:o,cardGridClassName:e,cardSizing:y,cardRenderer:V,currentRowSelection:z,DataTableCardView:E,DataTableEmptyState:N,dragAndDrop:l,editableRows:M,editingRowId:k,emptyNode:P,enableRowSelection:H,flexGrow:m,getRowClassName:A,hasCardTitle:j,infiniteScroll:B,localSearchValue:h,onRowClick:I,renderedRows:r,renderExpandedRow:U,resolvedLabels:n,resolvedLoadingRowCount:Y,rowActions:$=[],ScrollArea:q,sentinelRef:F,setCurrentRowSelection:J,setEditingRowId:K,shouldRenderInitialLoading:s,tableContainerClassName:O,uiClassNames:u,virtualization:C}){let R=s||r.length>0,f=S.useRef(null),{viewportElement:v,viewportHeight:Q}=b(f,R),X=a(f),d=typeof C=="object"?C.card:void 0,x=!s&&r.length>0&&d?.enabled===true,p=L(d?.lanes,X),Z=Math.ceil(r.length/p),g=x&&!!v&&Q>0,w=useVirtualizer({count:x?Z:0,enabled:g,estimateSize:()=>d?.estimateCardHeight??280,getScrollElement:()=>v,overscan:d?.overscan??4}),_=g?w.getVirtualItems():[],b$1=(a,i)=>jsx(E,{rows:a,cardRenderer:V,cardGridClassName:e,cardClassName:o,cardSizing:y,rowActions:$,editableRows:M,renderExpandedRow:U,hasCardTitle:j,rowSelection:z,onRowSelectionChange:J,enableRowSelection:H,editingRowId:k,onEditingRowIdChange:K,getRowClassName:A,onRowClick:I,getRowDraggable:l?.getRowDraggable,onRowDragStart:l?.onRowDragStart,onRowDragEnd:l?.onRowDragEnd,isLoading:i?.isLoading,loadingRowCount:i?.loadingRowCount,labels:n});return jsx("div",{ref:f,"data-dtp-slot":"data-table-card-shell",className:a$1("box-border border-2 border-transparent transition-colors",m?"flex min-h-0 flex-1 flex-col":"h-full",l?.isDragging&&(u.dragActive??"rounded-md border-dashed")),children:jsx(q,{className:a$1(m?"min-h-0 flex-1":"h-full",u.cardScrollArea,O),children:jsxs("div",{"data-dtp-slot":"data-table-card-viewport",className:a$1("flex min-h-full min-w-0 flex-col",m&&"min-h-0 flex-1",u.cardViewport),children:[R?s?b$1([],{isLoading:true,loadingRowCount:Y}):g?jsx("div",{"data-dtp-slot":"data-table-card-virtualizer",style:{height:w.getTotalSize(),position:"relative",width:"100%"},children:_.map(a=>{let i=a.index*p,G=r.slice(i,i+p);return jsx("div",{"data-index":a.index,ref:w.measureElement,style:{left:0,position:"absolute",top:0,transform:`translateY(${a.start}px)`,width:"100%"},children:b$1(G)},a.key)})}):b$1(r):jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center p-4",children:P??jsx(N,{title:h?n.noMatchingRowsTitle:n.noRowsTitle,description:h?n.noMatchingRowsDescription:n.noRowsDescription})}),B?.enabled&&!s?jsx("div",{className:"shrink-0 px-4 pb-4",children:jsx("div",{ref:F,className:"h-4 w-full"})}):null]})})})}function L(o,e){return typeof o=="number"?Math.max(1,Math.floor(o)):o!=="auto"?1:e>=1536?5:e>=1280?4:e>=1024?3:e>=640?2:1}export{nt as a};//# sourceMappingURL=chunk-EAV5MZCW.js.map -//# sourceMappingURL=chunk-EAV5MZCW.js.map \ No newline at end of file +import {b,a}from'./chunk-M77BQPKU.js';import {a as a$1}from'./chunk-PFB5LOU7.js';import*as S from'react';import {useVirtualizer}from'@tanstack/react-virtual';import {jsx,jsxs}from'react/jsx-runtime';function nt({cardClassName:o,cardGridClassName:e,cardSizing:y,cardRenderer:V,currentRowSelection:z,DataTableCardView:E,DataTableEmptyState:N,dragAndDrop:l,editableRows:M,editingRowId:k,emptyNode:P,enableRowSelection:H,flexGrow:m,getRowClassName:A,hasCardTitle:j,infiniteScroll:B,localSearchValue:h,onRowClick:I,renderedRows:r,renderExpandedRow:U,resolvedLabels:n,resolvedLoadingRowCount:Y,rowActions:$=[],ScrollArea:q,sentinelRef:F,setCurrentRowSelection:J,setEditingRowId:K,shouldRenderInitialLoading:s,tableContainerClassName:O,uiClassNames:u,virtualization:C}){let R=s||r.length>0,f=S.useRef(null),{viewportElement:v,viewportHeight:Q}=b(f,R),X=a(f),d=typeof C=="object"?C.card:void 0,x=!s&&r.length>0&&d?.enabled===true,p=L(d?.lanes,X),Z=Math.ceil(r.length/p),g=x&&!!v&&Q>0,w=useVirtualizer({count:x?Z:0,enabled:g,estimateSize:()=>d?.estimateCardHeight??280,getScrollElement:()=>v,overscan:d?.overscan??4}),_=g?w.getVirtualItems():[],b$1=(a,i)=>jsx(E,{rows:a,cardRenderer:V,cardGridClassName:e,cardClassName:o,cardSizing:y,rowActions:$,editableRows:M,renderExpandedRow:U,hasCardTitle:j,rowSelection:z,onRowSelectionChange:J,enableRowSelection:H,editingRowId:k,onEditingRowIdChange:K,getRowClassName:A,onRowClick:I,getRowDraggable:l?.getRowDraggable,onRowDragStart:l?.onRowDragStart,onRowDragEnd:l?.onRowDragEnd,isLoading:i?.isLoading,loadingRowCount:i?.loadingRowCount,labels:n});return jsx("div",{ref:f,"data-dtp-slot":"data-table-card-shell",className:a$1("box-border border-2 border-transparent transition-colors",m?"flex min-h-0 flex-1 flex-col":"h-full",l?.isDragging&&(u.dragActive??"rounded-md border-dashed")),children:jsx(q,{className:a$1(m?"min-h-0 flex-1":"h-full",u.cardScrollArea,O),children:jsxs("div",{"data-dtp-slot":"data-table-card-viewport",className:a$1("flex min-h-full min-w-0 flex-col",m&&"min-h-0 flex-1",u.cardViewport),children:[R?s?b$1([],{isLoading:true,loadingRowCount:Y}):g?jsx("div",{"data-dtp-slot":"data-table-card-virtualizer",style:{height:w.getTotalSize(),position:"relative",width:"100%"},children:_.map(a=>{let i=a.index*p,G=r.slice(i,i+p);return jsx("div",{"data-index":a.index,ref:w.measureElement,style:{left:0,position:"absolute",top:0,transform:`translateY(${a.start}px)`,width:"100%"},children:b$1(G)},a.key)})}):b$1(r):jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center p-4",children:P??jsx(N,{title:h?n.noMatchingRowsTitle:n.noRowsTitle,description:h?n.noMatchingRowsDescription:n.noRowsDescription})}),B?.enabled&&!s?jsx("div",{className:"shrink-0 px-4 pb-4",children:jsx("div",{ref:F,className:"h-4 w-full"})}):null]})})})}function L(o,e){return typeof o=="number"?Math.max(1,Math.floor(o)):o!=="auto"?1:e>=1536?5:e>=1280?4:e>=1024?3:e>=640?2:1}export{nt as a};//# sourceMappingURL=chunk-U5TIDLB3.js.map +//# sourceMappingURL=chunk-U5TIDLB3.js.map \ No newline at end of file diff --git a/dist/chunk-EAV5MZCW.js.map b/dist/chunk-U5TIDLB3.js.map similarity index 99% rename from dist/chunk-EAV5MZCW.js.map rename to dist/chunk-U5TIDLB3.js.map index 28edb53..0fd7f77 100644 --- a/dist/chunk-EAV5MZCW.js.map +++ b/dist/chunk-U5TIDLB3.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/core/data-table/data-table-virtual-card-panel.tsx"],"names":["DataTableVirtualCardPanel","cardClassName","cardGridClassName","cardSizing","cardRenderer","currentRowSelection","DataTableCardView","DataTableEmptyState","dragAndDrop","editableRows","editingRowId","emptyNode","enableRowSelection","flexGrow","getRowClassName","hasCardTitle","infiniteScroll","localSearchValue","onRowClick","renderedRows","renderExpandedRow","resolvedLabels","resolvedLoadingRowCount","rowActions","ScrollArea","sentinelRef","setCurrentRowSelection","setEditingRowId","shouldRenderInitialLoading","tableContainerClassName","uiClassNames","virtualization","shouldRenderCards","cardScrollContainerRef","viewportElement","viewportHeight","useDataTableScrollViewport","containerWidth","useDataTableContainerWidth","virtualizationConfig","enableCardVirtualization","lanes","resolveCardVirtualizationLanes","virtualRowCount","shouldUseVirtualCardRows","cardVirtualizer","useVirtualizer","virtualCardRows","renderCardView","rows","options","jsx","cn","jsxs","virtualRow","startIndex","configuredLanes"],"mappings":"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","file":"chunk-EAV5MZCW.js","sourcesContent":["import * as React from \"react\";\nimport type { Row } from \"@tanstack/react-table\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { cn } from \"../../lib/utils\";\nimport type { DataTableCardPanelProps } from \"./data-table-card-panel-types\";\nimport { useDataTableContainerWidth } from \"./use-data-table-container-width\";\nimport { useDataTableScrollViewport } from \"./use-data-table-scroll-viewport\";\n\nexport function DataTableVirtualCardPanel({\n cardClassName,\n cardGridClassName,\n cardSizing,\n cardRenderer,\n currentRowSelection,\n DataTableCardView,\n DataTableEmptyState,\n dragAndDrop,\n editableRows,\n editingRowId,\n emptyNode,\n enableRowSelection,\n flexGrow,\n getRowClassName,\n hasCardTitle,\n infiniteScroll,\n localSearchValue,\n onRowClick,\n renderedRows,\n renderExpandedRow,\n resolvedLabels,\n resolvedLoadingRowCount,\n rowActions = [],\n ScrollArea,\n sentinelRef,\n setCurrentRowSelection,\n setEditingRowId,\n shouldRenderInitialLoading,\n tableContainerClassName,\n uiClassNames,\n virtualization,\n}: DataTableCardPanelProps) {\n const shouldRenderCards = shouldRenderInitialLoading || renderedRows.length > 0;\n const cardScrollContainerRef = React.useRef(null);\n const { viewportElement, viewportHeight } = useDataTableScrollViewport(\n cardScrollContainerRef,\n shouldRenderCards,\n );\n const containerWidth = useDataTableContainerWidth(cardScrollContainerRef);\n const virtualizationConfig =\n typeof virtualization === \"object\" ? virtualization.card : undefined;\n const enableCardVirtualization =\n !shouldRenderInitialLoading &&\n renderedRows.length > 0 &&\n virtualizationConfig?.enabled === true;\n const lanes = resolveCardVirtualizationLanes(\n virtualizationConfig?.lanes,\n containerWidth,\n );\n const virtualRowCount = Math.ceil(renderedRows.length / lanes);\n const shouldUseVirtualCardRows =\n enableCardVirtualization && Boolean(viewportElement) && viewportHeight > 0;\n // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Virtual owns its instance functions.\n const cardVirtualizer = useVirtualizer({\n count: enableCardVirtualization ? virtualRowCount : 0,\n enabled: shouldUseVirtualCardRows,\n estimateSize: () => virtualizationConfig?.estimateCardHeight ?? 280,\n getScrollElement: () => viewportElement,\n overscan: virtualizationConfig?.overscan ?? 4,\n });\n const virtualCardRows = shouldUseVirtualCardRows\n ? cardVirtualizer.getVirtualItems()\n : [];\n\n const renderCardView = (\n rows: Array>,\n options?: {\n isLoading?: boolean;\n loadingRowCount?: number;\n },\n ) => (\n \n );\n\n return (\n \n \n \n {shouldRenderCards ? (\n shouldRenderInitialLoading ? (\n renderCardView([], {\n isLoading: true,\n loadingRowCount: resolvedLoadingRowCount,\n })\n ) : shouldUseVirtualCardRows ? (\n \n {virtualCardRows.map((virtualRow) => {\n const startIndex = virtualRow.index * lanes;\n const rows = renderedRows.slice(\n startIndex,\n startIndex + lanes,\n );\n\n return (\n \n {renderCardView(rows)}\n \n );\n })}\n \n ) : (\n renderCardView(renderedRows)\n )\n ) : (\n
    \n {emptyNode ?? (\n \n )}\n
    \n )}\n\n {infiniteScroll?.enabled && !shouldRenderInitialLoading ? (\n
    \n
    \n
    \n ) : null}\n
    \n \n \n );\n}\n\nfunction resolveCardVirtualizationLanes(\n configuredLanes: number | \"auto\" | undefined,\n containerWidth: number,\n) {\n if (typeof configuredLanes === \"number\") {\n return Math.max(1, Math.floor(configuredLanes));\n }\n\n if (configuredLanes !== \"auto\") {\n return 1;\n }\n\n if (containerWidth >= 1536) {\n return 5;\n }\n if (containerWidth >= 1280) {\n return 4;\n }\n if (containerWidth >= 1024) {\n return 3;\n }\n if (containerWidth >= 640) {\n return 2;\n }\n return 1;\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../src/core/data-table/data-table-virtual-card-panel.tsx"],"names":["DataTableVirtualCardPanel","cardClassName","cardGridClassName","cardSizing","cardRenderer","currentRowSelection","DataTableCardView","DataTableEmptyState","dragAndDrop","editableRows","editingRowId","emptyNode","enableRowSelection","flexGrow","getRowClassName","hasCardTitle","infiniteScroll","localSearchValue","onRowClick","renderedRows","renderExpandedRow","resolvedLabels","resolvedLoadingRowCount","rowActions","ScrollArea","sentinelRef","setCurrentRowSelection","setEditingRowId","shouldRenderInitialLoading","tableContainerClassName","uiClassNames","virtualization","shouldRenderCards","cardScrollContainerRef","viewportElement","viewportHeight","useDataTableScrollViewport","containerWidth","useDataTableContainerWidth","virtualizationConfig","enableCardVirtualization","lanes","resolveCardVirtualizationLanes","virtualRowCount","shouldUseVirtualCardRows","cardVirtualizer","useVirtualizer","virtualCardRows","renderCardView","rows","options","jsx","cn","jsxs","virtualRow","startIndex","configuredLanes"],"mappings":"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","file":"chunk-U5TIDLB3.js","sourcesContent":["import * as React from \"react\";\nimport type { Row } from \"@tanstack/react-table\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { cn } from \"../../lib/utils\";\nimport type { DataTableCardPanelProps } from \"./data-table-card-panel-types\";\nimport { useDataTableContainerWidth } from \"./use-data-table-container-width\";\nimport { useDataTableScrollViewport } from \"./use-data-table-scroll-viewport\";\n\nexport function DataTableVirtualCardPanel({\n cardClassName,\n cardGridClassName,\n cardSizing,\n cardRenderer,\n currentRowSelection,\n DataTableCardView,\n DataTableEmptyState,\n dragAndDrop,\n editableRows,\n editingRowId,\n emptyNode,\n enableRowSelection,\n flexGrow,\n getRowClassName,\n hasCardTitle,\n infiniteScroll,\n localSearchValue,\n onRowClick,\n renderedRows,\n renderExpandedRow,\n resolvedLabels,\n resolvedLoadingRowCount,\n rowActions = [],\n ScrollArea,\n sentinelRef,\n setCurrentRowSelection,\n setEditingRowId,\n shouldRenderInitialLoading,\n tableContainerClassName,\n uiClassNames,\n virtualization,\n}: DataTableCardPanelProps) {\n const shouldRenderCards = shouldRenderInitialLoading || renderedRows.length > 0;\n const cardScrollContainerRef = React.useRef(null);\n const { viewportElement, viewportHeight } = useDataTableScrollViewport(\n cardScrollContainerRef,\n shouldRenderCards,\n );\n const containerWidth = useDataTableContainerWidth(cardScrollContainerRef);\n const virtualizationConfig =\n typeof virtualization === \"object\" ? virtualization.card : undefined;\n const enableCardVirtualization =\n !shouldRenderInitialLoading &&\n renderedRows.length > 0 &&\n virtualizationConfig?.enabled === true;\n const lanes = resolveCardVirtualizationLanes(\n virtualizationConfig?.lanes,\n containerWidth,\n );\n const virtualRowCount = Math.ceil(renderedRows.length / lanes);\n const shouldUseVirtualCardRows =\n enableCardVirtualization && Boolean(viewportElement) && viewportHeight > 0;\n // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Virtual owns its instance functions.\n const cardVirtualizer = useVirtualizer({\n count: enableCardVirtualization ? virtualRowCount : 0,\n enabled: shouldUseVirtualCardRows,\n estimateSize: () => virtualizationConfig?.estimateCardHeight ?? 280,\n getScrollElement: () => viewportElement,\n overscan: virtualizationConfig?.overscan ?? 4,\n });\n const virtualCardRows = shouldUseVirtualCardRows\n ? cardVirtualizer.getVirtualItems()\n : [];\n\n const renderCardView = (\n rows: Array>,\n options?: {\n isLoading?: boolean;\n loadingRowCount?: number;\n },\n ) => (\n \n );\n\n return (\n \n \n \n {shouldRenderCards ? (\n shouldRenderInitialLoading ? (\n renderCardView([], {\n isLoading: true,\n loadingRowCount: resolvedLoadingRowCount,\n })\n ) : shouldUseVirtualCardRows ? (\n \n {virtualCardRows.map((virtualRow) => {\n const startIndex = virtualRow.index * lanes;\n const rows = renderedRows.slice(\n startIndex,\n startIndex + lanes,\n );\n\n return (\n \n {renderCardView(rows)}\n \n );\n })}\n \n ) : (\n renderCardView(renderedRows)\n )\n ) : (\n
    \n {emptyNode ?? (\n \n )}\n
    \n )}\n\n {infiniteScroll?.enabled && !shouldRenderInitialLoading ? (\n
    \n
    \n
    \n ) : null}\n
    \n \n \n );\n}\n\nfunction resolveCardVirtualizationLanes(\n configuredLanes: number | \"auto\" | undefined,\n containerWidth: number,\n) {\n if (typeof configuredLanes === \"number\") {\n return Math.max(1, Math.floor(configuredLanes));\n }\n\n if (configuredLanes !== \"auto\") {\n return 1;\n }\n\n if (containerWidth >= 1536) {\n return 5;\n }\n if (containerWidth >= 1280) {\n return 4;\n }\n if (containerWidth >= 1024) {\n return 3;\n }\n if (containerWidth >= 640) {\n return 2;\n }\n return 1;\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-Y2VSRDR3.js b/dist/chunk-Y2VSRDR3.js new file mode 100644 index 0000000..b6b33d1 --- /dev/null +++ b/dist/chunk-Y2VSRDR3.js @@ -0,0 +1,2 @@ +import {a as a$1}from'./chunk-U5TIDLB3.js';import {a}from'./chunk-JYNJ2FDX.js';import {j}from'./chunk-54H6DRO6.js';function b(r){return j(r,{CardPanel:a$1,TablePanel:a})}export{b as a};//# sourceMappingURL=chunk-Y2VSRDR3.js.map +//# sourceMappingURL=chunk-Y2VSRDR3.js.map \ No newline at end of file diff --git a/dist/chunk-RJOEF7NA.js.map b/dist/chunk-Y2VSRDR3.js.map similarity index 92% rename from dist/chunk-RJOEF7NA.js.map rename to dist/chunk-Y2VSRDR3.js.map index 0f52448..72261f4 100644 --- a/dist/chunk-RJOEF7NA.js.map +++ b/dist/chunk-Y2VSRDR3.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/core/data-table/create-virtual-data-table.ts"],"names":["createVirtualDataTable","ui","createDataTableWithPanels","DataTableVirtualCardPanel","DataTableVirtualTablePanel"],"mappings":"mHAKO,SAASA,CAAAA,CAAuBC,CAAAA,CAAoB,CACzD,OAAOC,CAAAA,CAA0BD,CAAAA,CAAI,CACnC,SAAA,CAAWE,GAAAA,CACX,UAAA,CAAYC,CACd,CAAC,CACH","file":"chunk-RJOEF7NA.js","sourcesContent":["import type { DataTableUiKit } from \"../ui-kit\";\nimport { createDataTableWithPanels } from \"./create-data-table\";\nimport { DataTableVirtualCardPanel } from \"./data-table-virtual-card-panel\";\nimport { DataTableVirtualTablePanel } from \"./data-table-virtual-table-panel\";\n\nexport function createVirtualDataTable(ui: DataTableUiKit) {\n return createDataTableWithPanels(ui, {\n CardPanel: DataTableVirtualCardPanel,\n TablePanel: DataTableVirtualTablePanel,\n });\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../src/core/data-table/create-virtual-data-table.ts"],"names":["createVirtualDataTable","ui","createDataTableWithPanels","DataTableVirtualCardPanel","DataTableVirtualTablePanel"],"mappings":"mHAKO,SAASA,CAAAA,CAAuBC,CAAAA,CAAoB,CACzD,OAAOC,CAAAA,CAA0BD,CAAAA,CAAI,CACnC,SAAA,CAAWE,GAAAA,CACX,UAAA,CAAYC,CACd,CAAC,CACH","file":"chunk-Y2VSRDR3.js","sourcesContent":["import type { DataTableUiKit } from \"../ui-kit\";\nimport { createDataTableWithPanels } from \"./create-data-table\";\nimport { DataTableVirtualCardPanel } from \"./data-table-virtual-card-panel\";\nimport { DataTableVirtualTablePanel } from \"./data-table-virtual-table-panel\";\n\nexport function createVirtualDataTable(ui: DataTableUiKit) {\n return createDataTableWithPanels(ui, {\n CardPanel: DataTableVirtualCardPanel,\n TablePanel: DataTableVirtualTablePanel,\n });\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-ZF4EP4WP.js.map b/dist/chunk-ZF4EP4WP.js.map deleted file mode 100644 index 4511914..0000000 --- a/dist/chunk-ZF4EP4WP.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/lib/utils.ts","../src/core/types.ts"],"names":["cn","inputs","twMerge","clsx","DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS","isRowVisible","row","hiddenRows","showHiddenRows","resolveRowActionLabel","label","canUseRowAction","action","canEditRow","editableRows","alignClassName","align","resolveColumnAlign","type","headerAlignClassName","context","meta","cellAlignClassName","hideOnClassName","hideOn","value","isHiddenAtContainerWidth","containerWidth"],"mappings":"6DAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,KC0CaG,CAAAA,CAGT,CACF,EAAA,CAAI,GAAA,CACJ,EAAA,CAAI,GAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,KAAA,CAAO,IACT,EAwhBO,SAASC,CAAAA,CACdC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACA,CAKA,OAJI,CAACD,CAAAA,EAIDC,CAAAA,CACK,IAAA,CAGF,CAACD,CAAAA,CAAW,YAAYD,CAAG,CACpC,CAEO,SAASG,CAAAA,CACdC,CAAAA,CACAJ,EACA,CACA,OAAO,OAAOI,CAAAA,EAAU,UAAA,CAAaA,EAAMJ,CAAG,CAAA,CAAII,CACpD,CAEO,SAASC,CAAAA,CACdC,EACAN,CAAAA,CACA,CACA,OAAO,CAACM,CAAAA,CAAO,MAAA,GAASN,CAAG,CAC7B,CAEO,SAASO,CAAAA,CACdC,CAAAA,CACAR,CAAAA,CACA,CACA,OAAOQ,CAAAA,EAAc,WACjBA,CAAAA,CAAa,UAAA,CAAWR,CAAG,CAAA,CAC3B,CAAA,CAAQQ,CACd,CAEO,SAASC,CAAAA,CAAeC,EAAmC,CAChE,OAAQA,CAAAA,EACN,KAAK,QAAA,CACH,OAAO,aAAA,CACT,KAAK,KAAA,CACH,OAAO,YAAA,CACT,QACE,OAAO,WACX,CACF,CAEO,SAASC,CAAAA,CACdD,EACAE,CAAAA,CACA,CACA,OAAIF,CAAAA,GAIAE,CAAAA,GAAS,SAAA,CACJ,MAGF,OAAA,CACT,CAEO,SAASC,CAAAA,CACdC,CAAAA,CACA,CACA,IAAMC,CAAAA,CAAQD,CAAAA,CAAQ,MAAA,CAAO,SAAA,CAC1B,IAAA,CACH,OAAOL,EAAeE,CAAAA,CAAmBI,CAAAA,EAAM,MAAOA,CAAAA,EAAM,IAAI,CAAC,CACnE,CAEO,SAASC,CAAAA,CACdF,CAAAA,CACA,CACA,IAAMC,CAAAA,CAAQD,CAAAA,CAAQ,MAAA,CAAO,SAAA,CAC1B,IAAA,CACH,OAAOL,EAAeE,CAAAA,CAAmBI,CAAAA,EAAM,KAAA,CAAOA,CAAAA,EAAM,IAAI,CAAC,CACnE,CAEO,SAASE,EACdC,CAAAA,CAIA,CACA,OAAKA,CAAAA,CAAAA,CAIU,KAAA,CAAM,OAAA,CAAQA,CAAM,CAAA,CAAIA,CAAAA,CAAS,CAACA,CAAM,CAAA,EACzC,GAAA,CAAKC,CAAAA,EAAU,CAAA,WAAA,EAAcA,CAAK,EAAE,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,CAJ1D,MAKJ,CAEO,SAASC,CAAAA,CACdF,CAAAA,CAIAG,EACA,CACA,OAAI,CAACH,CAAAA,EAAUG,CAAAA,EAAkB,CAAA,CACxB,KAAA,CAAA,CAGM,KAAA,CAAM,OAAA,CAAQH,CAAM,CAAA,CAAIA,CAAAA,CAAS,CAACA,CAAM,CAAA,EACzC,IAAA,CACXC,GAAUE,CAAAA,CAAiBvB,CAAAA,CAAuCqB,CAAK,CAC1E,CACF","file":"chunk-ZF4EP4WP.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import type * as React from \"react\";\nimport type {\n CellContext,\n ColumnFiltersState,\n ColumnDef,\n ColumnOrderState,\n ColumnPinningState,\n ColumnSizingState,\n ExpandedState,\n FilterFnOption,\n HeaderContext,\n PaginationState,\n Row,\n SortingState,\n Table as TanStackTable,\n Updater,\n VisibilityState,\n} from \"@tanstack/react-table\";\n\nexport type DataTableViewMode = \"table\" | \"card\";\n\nexport type DataTableAlign = \"start\" | \"center\" | \"end\";\nexport type DataTableColumnType = \"text\" | \"numeric\" | \"date\";\nexport type DataTableColumnFixed = \"left\" | \"right\";\nexport type DataTableContainerBreakpoint = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\nexport type DataTableDensity = \"compact\" | \"comfortable\" | \"spacious\";\nexport type DataTableCardSizing = \"fixed\" | \"content\" | \"fluid\";\nexport type DataTableCellOverflow =\n | \"truncate\"\n | \"clip\"\n | \"wrap\"\n | \"visible\";\nexport type DataTableColumnFilterType = \"text\" | \"select\" | \"multi\";\nexport type DataTableCsvExportScope =\n | \"filtered\"\n | \"page\"\n | \"selected\"\n | \"all\";\nexport type DataTableActionErrorSource =\n | \"toolbarAction\"\n | \"selectionAction\"\n | \"rowAction\"\n | \"rowClick\"\n | \"edit\"\n | \"fileUpload\"\n | \"infiniteScroll\";\n\nexport const DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS: Record<\n DataTableContainerBreakpoint,\n number\n> = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n \"2xl\": 1536,\n};\n\nexport type DataTableRowLoadingState = {\n isLoading: boolean;\n skeleton?: React.ReactNode;\n};\n\nexport type DataTableLoadingState = {\n isLoading: boolean;\n loadingRowCount?: number;\n};\n\nexport type DataTableCellEditRenderProps = {\n cell: CellContext;\n row: TData;\n value: TValue | undefined;\n draftValue: unknown;\n setDraftValue: (value: unknown) => void;\n};\n\nexport type DataTableColumnFilterOption = {\n label: string;\n value: string;\n};\n\nexport type DataTableColumnFilterConfig = {\n type: DataTableColumnFilterType;\n label?: string;\n placeholder?: string;\n options?:\n | Array\n | ((context: { rows: Array }) => Array);\n getOptionValue?: (value: TValue | undefined, row: TData) => string;\n};\n\nexport type DataTableColumnMeta = {\n type?: DataTableColumnType;\n fixed?: DataTableColumnFixed;\n cardTitle?: boolean;\n hideOn?: DataTableContainerBreakpoint | Array;\n minWidth?: number;\n align?: DataTableAlign;\n overflow?:\n | DataTableCellOverflow\n | ((args: {\n row: TData;\n value: TValue | undefined;\n }) => DataTableCellOverflow | undefined);\n headerClassName?: string;\n cellClassName?:\n | string\n | ((args: { row: TData; value: TValue | undefined }) => string | undefined);\n responsiveClassName?: string;\n skeleton?: (context: CellContext) => React.ReactNode;\n filter?: DataTableColumnFilterConfig;\n parseEditValue?: (value: unknown, context: CellContext) => unknown;\n formatEditValue?: (\n value: unknown,\n context: CellContext,\n ) => string;\n renderEditCell?: (\n props: DataTableCellEditRenderProps,\n ) => React.ReactNode;\n};\n\nexport type DataTableColumnDef = ColumnDef<\n TData,\n TValue\n> & {\n meta?: DataTableColumnMeta;\n};\n\nexport type DataTableToolbarAction = {\n key: string;\n label: string;\n icon?: React.ComponentType<{ className?: string }>;\n iconOnly?: boolean;\n placement?: \"primary\" | \"trailing\";\n onClick: (context: {\n rows: Array;\n openFileDialog?: () => void;\n }) => void | Promise;\n variant?: \"default\" | \"secondary\" | \"outline\" | \"ghost\" | \"destructive\";\n disabled?: boolean;\n};\n\nexport type DataTableSelectionAction = {\n key: string;\n label: string;\n icon?: React.ComponentType<{ className?: string }>;\n iconOnly?: boolean;\n onClick: (context: { rows: Array }) => void | Promise;\n variant?: \"default\" | \"secondary\" | \"outline\" | \"ghost\" | \"destructive\";\n disabled?: boolean | ((rows: Array) => boolean);\n};\n\nexport type DataTableRowAction = {\n key: string;\n label: string | ((row: TData) => string);\n icon?: React.ComponentType<{ className?: string }>;\n onClick: (row: TData) => void | Promise;\n variant?: \"default\" | \"secondary\" | \"destructive\";\n hidden?: (row: TData) => boolean;\n disabled?: (row: TData) => boolean;\n};\n\nexport type DataTableColumnVisibilityOption = {\n id: string;\n label: string;\n visible: boolean;\n canHide: boolean;\n pinned?: false | DataTableColumnFixed;\n};\n\nexport type DataTableToolbarVisibility = {\n title?: boolean;\n search?: boolean;\n actions?: boolean;\n trailingActions?: boolean;\n options?: boolean;\n viewToggle?: boolean;\n customToolbar?: boolean;\n};\n\nexport type DataTableCardRendererProps = {\n row: TData;\n rowId: string;\n isSelected: boolean;\n onSelectedChange: (nextValue: boolean) => void;\n actions: Array>;\n isEditing: boolean;\n startEditing: () => void;\n cancelEditing: () => void;\n};\n\nexport type DataTableEditableRowsConfig = {\n canEditRow?: (row: TData) => boolean;\n getInitialValues?: (row: TData) => Record;\n onSaveRow: (\n row: TData,\n draftValues: Record,\n ) => void | Promise;\n};\n\nexport type DataTableInfiniteScroll = {\n enabled: boolean;\n hasMore: boolean;\n isLoadingMore?: boolean;\n onLoadMore: () => void | Promise;\n};\n\nexport type DataTableHiddenRowsConfig = {\n getIsHidden: (row: TData) => boolean;\n label?: string;\n};\n\nexport type DataTableEmptyStateContext = {\n rows: Array;\n toolbarQueryValue: string;\n};\n\nexport type DataTableDragAndDropConfig = {\n isDragging?: boolean;\n onDragEnter?: React.DragEventHandler;\n onDragOver?: React.DragEventHandler;\n onDragLeave?: React.DragEventHandler;\n onDrop?: React.DragEventHandler;\n getRowDraggable?: (row: TData) => boolean;\n onRowDragStart?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n onRowDragEnd?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n};\n\nexport type DataTableFileUploadConfig = {\n accept?: string;\n disabled?: boolean;\n multiple?: boolean;\n onFilesSelected: (files: FileList | Array) => void | Promise;\n};\n\nexport type DataTableVirtualizationConfig = {\n enabled?: boolean;\n estimateRowHeight?: number;\n overscan?: number;\n card?: DataTableCardVirtualizationConfig;\n};\n\nexport type DataTableCardVirtualizationConfig = {\n enabled?: boolean;\n estimateCardHeight?: number;\n overscan?: number;\n lanes?: number | \"auto\";\n};\n\nexport type DataTableExpandedRowProps = {\n row: TData;\n rowId: string;\n tableRow: Row;\n};\n\nexport type DataTableCsvExportOptions = {\n filename?: string;\n includeHeaders?: boolean;\n columns?: Array;\n scope?: DataTableCsvExportScope;\n escapeFormulaValues?: boolean;\n lineEnding?: \"\\n\" | \"\\r\\n\";\n getCellValue?: (context: {\n row: TData;\n rowId: string;\n columnId: string;\n value: unknown;\n }) => unknown;\n onExport?: (context: {\n csv: string;\n filename: string;\n rows: Array;\n scope: DataTableCsvExportScope;\n }) => void | Promise;\n};\n\nexport type DataTableActionErrorContext = {\n source: DataTableActionErrorSource;\n error: unknown;\n actionKey?: string;\n row?: TData;\n};\n\nexport type DataTableColumnPrefs = {\n visibility?: VisibilityState;\n sizing?: Record;\n order?: ColumnOrderState;\n pinning?: ColumnPinningState;\n density?: DataTableDensity;\n};\n\nexport type DataTablePersistenceSlice = keyof DataTableColumnPrefs;\n\nexport type DataTablePersistenceStorage = Pick<\n Storage,\n \"getItem\" | \"setItem\" | \"removeItem\"\n>;\n\nexport type DataTablePersistenceOperation =\n | \"read\"\n | \"write\"\n | \"remove\"\n | \"serialize\"\n | \"deserialize\"\n | \"migrate\";\n\nexport type DataTablePersistencePayload = {\n version: string | number;\n state: DataTableColumnPrefs;\n};\n\nexport type DataTablePersistenceConfig = {\n key: string;\n version?: string | number;\n slices?: Array;\n storage?: DataTablePersistenceStorage;\n serialize?: (payload: DataTablePersistencePayload) => string;\n deserialize?: (value: string) => unknown;\n migrate?: (\n payload: { version: unknown; state: unknown },\n targetVersion: string | number,\n ) => DataTableColumnPrefs | undefined;\n debounceMs?: number;\n onError?: (context: {\n error: unknown;\n operation: DataTablePersistenceOperation;\n }) => void;\n};\n\nexport type DataTableState = {\n sorting: SortingState;\n pagination: PaginationState;\n rowSelection: Record;\n columnVisibility: VisibilityState;\n columnFilters: ColumnFiltersState;\n expanded: ExpandedState;\n columnOrder: ColumnOrderState;\n columnPinning: ColumnPinningState;\n columnSizing: ColumnSizingState;\n density: DataTableDensity;\n viewMode: DataTableViewMode;\n showHiddenRows: boolean;\n globalFilter: string;\n};\n\nexport type DataTableInitialState = Partial;\n\nexport type DataTableSavedViewSlice = keyof DataTableState;\n\nexport type DataTableSavedView = {\n id: string;\n name: string;\n createdAt: string;\n updatedAt: string;\n state: Partial;\n};\n\nexport type DataTableSavedViewsPayload = {\n version: string | number;\n views: Array;\n};\n\nexport type DataTableSavedViewsChangeOperation =\n | \"create\"\n | \"rename\"\n | \"delete\"\n | \"clear\";\n\nexport type DataTableSavedViewsConfig = {\n key: string;\n version?: string | number;\n slices?: Array;\n storage?: DataTablePersistenceStorage;\n serialize?: (payload: DataTableSavedViewsPayload) => string;\n deserialize?: (value: string) => unknown;\n migrate?: (\n payload: { version: unknown; views: unknown },\n targetVersion: string | number,\n ) => Array | undefined;\n onChange?: (\n views: Array,\n operation: DataTableSavedViewsChangeOperation,\n ) => void;\n onApply?: (view: DataTableSavedView) => void;\n onError?: (context: {\n error: unknown;\n operation: DataTablePersistenceOperation;\n }) => void;\n};\n\nexport type DataTableResetOptions = {\n clearPersistence?: boolean;\n};\n\nexport type DataTableApi = {\n getTable: () => TanStackTable | null;\n getState: () => DataTableState;\n snapshot: () => DataTableState;\n restore: (state: Partial) => void;\n resetColumnLayout: (options?: DataTableResetOptions) => void;\n resetState: (options?: DataTableResetOptions) => void;\n clearPersistedState: () => boolean;\n getSavedViews: () => Array;\n createSavedView: (name: string) => DataTableSavedView | undefined;\n applySavedView: (id: string) => boolean;\n renameSavedView: (\n id: string,\n name: string,\n ) => DataTableSavedView | undefined;\n deleteSavedView: (id: string) => boolean;\n clearSavedViews: () => boolean;\n focus: () => void;\n scrollToRow: (rowId: string) => boolean;\n scrollToColumn: (columnId: string) => boolean;\n exportCsv: (\n options?: boolean | DataTableCsvExportOptions,\n ) => Promise;\n};\n\nexport type DataTableLabels = {\n searchPlaceholder: string;\n searchTable: string;\n clearSearch: string;\n noRowsTitle: string;\n noRowsDescription: string;\n noMatchingRowsTitle: string;\n noMatchingRowsDescription: string;\n tableOptions: string;\n columns: string;\n filters: string;\n clearFilters: string;\n selectedRows: (count: number) => string;\n showHiddenRows: (label: string) => string;\n recordsPerPage: string;\n totalRecords: (count: number) => string;\n pageStatus: (pageIndex: number, pageCount: number) => string;\n pageStatusUnknown?: (pageIndex: number) => string;\n pagination?: string;\n morePages?: string;\n firstPage: string;\n previousPage: string;\n nextPage: string;\n lastPage: string;\n selectAllVisibleRows?: string;\n selectRow?: string;\n selectCardRow?: (rowId: string) => string;\n switchToTableView?: string;\n switchToCardView?: string;\n tableView?: string;\n cardView?: string;\n allFilterOptions?: string;\n actions: string;\n rowActions: string;\n editRow: string;\n saveEdit: string;\n cancelEdit: string;\n expandRow: string;\n collapseRow: string;\n exportCsv: string;\n density: string;\n compactDensity: string;\n comfortableDensity: string;\n spaciousDensity: string;\n pinLeft: string;\n pinRight: string;\n unpin: string;\n};\n\nexport type DataTableSummaryRow = {\n key: string;\n label?: React.ReactNode;\n cells: Record<\n string,\n React.ReactNode | ((context: { rows: Array; columnId: string }) => React.ReactNode)\n >;\n};\n\nexport type DataTableProps = {\n columns: Array>;\n data: Array;\n getRowId: (row: TData, index: number) => string;\n children?: React.ReactNode;\n title?: string;\n description?: string;\n toolbarQueryValue?: string;\n onToolbarQueryValueChange?: (value: string) => void;\n toolbarQueryPlaceholder?: string;\n toolbarQueryDebounceMs?: number;\n manualFiltering?: boolean;\n enableToolbarQueryFiltering?: boolean;\n globalFilterFn?: FilterFnOption;\n columnFilters?: ColumnFiltersState;\n onColumnFiltersChange?: (filters: ColumnFiltersState) => void;\n enableColumnFilters?: boolean;\n customToolbar?: React.ReactNode;\n compactToolbar?: React.ReactNode;\n rowsPerPageOptions?: Array;\n totalRowCount?: number;\n hasNextPage?: boolean;\n sorting?: SortingState;\n onSortingChange?: (sorting: SortingState) => void;\n manualSorting?: boolean;\n pageIndex?: number;\n pageSize?: number;\n onPageIndexChange?: (pageIndex: number) => void;\n onPageSizeChange?: (pageSize: number) => void;\n pageCount?: number;\n manualPagination?: boolean;\n rowSelection?: Record;\n onRowSelectionChange?: (rowSelection: Record) => void;\n enableRowSelection?: boolean;\n expanded?: ExpandedState;\n onExpandedChange?: (expanded: ExpandedState) => void;\n getRowCanExpand?: (row: TData) => boolean;\n renderExpandedRow?: (\n props: DataTableExpandedRowProps,\n ) => React.ReactNode;\n columnOrder?: ColumnOrderState;\n onColumnOrderChange?: (columnOrder: ColumnOrderState) => void;\n enableColumnReordering?: boolean;\n columnPinning?: ColumnPinningState;\n onColumnPinningChange?: (columnPinning: ColumnPinningState) => void;\n enableColumnPinning?: boolean;\n toolbarActions?: Array>;\n selectionActions?: Array>;\n rowActions?: Array>;\n csvExport?: boolean | DataTableCsvExportOptions;\n density?: DataTableDensity;\n onDensityChange?: (density: DataTableDensity) => void;\n enableDensityToggle?: boolean;\n columnPrefsKey?: string;\n persistence?: DataTablePersistenceConfig;\n savedViews?: DataTableSavedViewsConfig;\n initialState?: DataTableInitialState;\n state?: Partial;\n onStateChange?: (updater: Updater) => void;\n apiRef?: React.Ref>;\n labels?: Partial;\n summaryRows?: Array>;\n cardRenderer?: (props: DataTableCardRendererProps) => React.ReactNode;\n cardSizing?: DataTableCardSizing;\n cardGridClassName?: string;\n cardClassName?: string;\n viewMode?: DataTableViewMode;\n onViewModeChange?: (viewMode: DataTableViewMode) => void;\n enableViewToggle?: boolean;\n emptyState?:\n | React.ReactNode\n | ((context: DataTableEmptyStateContext) => React.ReactNode);\n isLoading?: boolean;\n loadingRowCount?: number;\n getRowLoadingState?: (\n row: TData,\n index: number,\n ) => boolean | DataTableRowLoadingState;\n hiddenRows?: DataTableHiddenRowsConfig;\n showHiddenRows?: boolean;\n onShowHiddenRowsChange?: (showHiddenRows: boolean) => void;\n infiniteScroll?: DataTableInfiniteScroll;\n editableRows?: DataTableEditableRowsConfig;\n columnVisibility?: VisibilityState;\n onColumnVisibilityChange?: (visibility: VisibilityState) => void;\n columnSizing?: ColumnSizingState;\n onColumnSizingChange?: (sizing: ColumnSizingState) => void;\n enableColumnResizing?: boolean;\n columnResizeMode?: \"onChange\" | \"onEnd\";\n layoutMode?: \"fill\" | \"fit\";\n stickyHeader?: boolean;\n showFooter?: boolean;\n showToolbar?: boolean;\n dir?: \"ltr\" | \"rtl\";\n flexGrow?: boolean;\n toolbarVisibility?: DataTableToolbarVisibility;\n className?: string;\n tableClassName?: string;\n tableContainerClassName?: string;\n getRowClassName?: (row: TData) => string | undefined;\n onRowClick?: (context: { row: TData; rowId: string }) => void | Promise;\n onActionError?: (context: DataTableActionErrorContext) => void;\n dragAndDrop?: DataTableDragAndDropConfig;\n fileUpload?: DataTableFileUploadConfig;\n virtualization?: boolean | DataTableVirtualizationConfig;\n};\n\nexport function isRowVisible(\n row: TData,\n hiddenRows: DataTableHiddenRowsConfig | undefined,\n showHiddenRows: boolean,\n) {\n if (!hiddenRows) {\n return true;\n }\n\n if (showHiddenRows) {\n return true;\n }\n\n return !hiddenRows.getIsHidden(row);\n}\n\nexport function resolveRowActionLabel(\n label: DataTableRowAction[\"label\"],\n row: TData,\n) {\n return typeof label === \"function\" ? label(row) : label;\n}\n\nexport function canUseRowAction(\n action: DataTableRowAction,\n row: TData,\n) {\n return !action.hidden?.(row);\n}\n\nexport function canEditRow(\n editableRows: DataTableEditableRowsConfig | undefined,\n row: TData,\n) {\n return editableRows?.canEditRow\n ? editableRows.canEditRow(row)\n : Boolean(editableRows);\n}\n\nexport function alignClassName(align: DataTableAlign | undefined) {\n switch (align) {\n case \"center\":\n return \"text-center\";\n case \"end\":\n return \"text-right\";\n default:\n return \"text-left\";\n }\n}\n\nexport function resolveColumnAlign(\n align: DataTableAlign | undefined,\n type: DataTableColumnType | undefined,\n) {\n if (align) {\n return align;\n }\n\n if (type === \"numeric\") {\n return \"end\";\n }\n\n return \"start\";\n}\n\nexport function headerAlignClassName(\n context: HeaderContext,\n) {\n const meta = (context.column.columnDef as DataTableColumnDef)\n .meta;\n return alignClassName(resolveColumnAlign(meta?.align, meta?.type));\n}\n\nexport function cellAlignClassName(\n context: CellContext,\n) {\n const meta = (context.column.columnDef as DataTableColumnDef)\n .meta;\n return alignClassName(resolveColumnAlign(meta?.align, meta?.type));\n}\n\nexport function hideOnClassName(\n hideOn:\n | DataTableContainerBreakpoint\n | Array\n | undefined,\n) {\n if (!hideOn) {\n return undefined;\n }\n\n const values = Array.isArray(hideOn) ? hideOn : [hideOn];\n return values.map((value) => `dt-hide-on-${value}`).join(\" \");\n}\n\nexport function isHiddenAtContainerWidth(\n hideOn:\n | DataTableContainerBreakpoint\n | Array\n | undefined,\n containerWidth: number,\n) {\n if (!hideOn || containerWidth <= 0) {\n return false;\n }\n\n const values = Array.isArray(hideOn) ? hideOn : [hideOn];\n return values.some(\n (value) => containerWidth < DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS[value],\n );\n}\n\nexport function rowSelectionStateFromRows(rows: Array>) {\n return rows.map((row) => row.original);\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-ZGXFBFNQ.js b/dist/chunk-ZGXFBFNQ.js new file mode 100644 index 0000000..2f05f43 --- /dev/null +++ b/dist/chunk-ZGXFBFNQ.js @@ -0,0 +1,3 @@ +import {i,a,h,g}from'./chunk-PFB5LOU7.js';import*as L from'react';import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {flexRender}from'@tanstack/react-table';var be=Symbol("data-table-loading-row"),ht=50;function wt(e){return Array.from({length:e},(t,a)=>({[be]:true,index:a}))}function te(e){return !!(e&&typeof e=="object"&&be in e)}function St(e){return `__loading__${e}`}function Rt(e){if(typeof e.meta?.minWidth=="number")return e.meta.minWidth;if(Object.prototype.hasOwnProperty.call(e,"minSize")){let t=e.minSize;if(typeof t=="number")return t}}function Be(e){if("columns"in e&&Array.isArray(e.columns))return {...e,columns:e.columns.map(a=>Be(a))};let t=e.meta?.filter;return !t||e.filterFn?e:{...e,filterFn:(a,o,r)=>{if(!Fe(r))return true;let n=a.getValue(o),i=t.getOptionValue?.(n,a.original)??$(n);return t.type==="multi"?Array.isArray(r)?r.map(String).includes(i):true:t.type==="select"?i===String(r):$(n).toLowerCase().includes(String(r).toLowerCase())}}}function le(e){let t=[],a=o=>{o.forEach((r,n)=>{if("columns"in r&&r.columns?.length){a(r.columns);return}t.push({column:r,index:n});});};return a(e),t}function It(e){return e.map(t=>typeof t=="string"?{label:ge(t),value:t}:t)}function $(e){if(e==null)return "";if(e instanceof Date)return e.toISOString();if(typeof e=="object")try{return JSON.stringify(e)}catch{return ""}return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint"||typeof e=="symbol"?String(e):""}function Fe(e){return Array.isArray(e)?e.length>0:e!=null&&e!==""}function kt(e,t,a){let o=$(a).trim().toLowerCase();return o?$(e.getValue(t)).toLowerCase().includes(o):true}async function xt({csvExport:e,table:t}){if(e===false)return;let a=e===true?{}:e,o=a.filename??"data-table.csv",r=a.scope??"filtered",n=a.columns?new Set(a.columns):void 0,i=t.getVisibleLeafColumns().filter(m=>!ie(m.id)&&m.id!=="__spacer__"&&(!n||n.has(m.id))),s=We(t,r),w=[];(a.includeHeaders??true)&&w.push(i.map(m=>typeof m.columnDef.header=="string"?m.columnDef.header:ge(m.id)));for(let m of s)w.push(i.map(y=>{let H=m.getValue(y.id);return a.getCellValue?a.getCellValue({row:m.original,rowId:m.id,columnId:y.id,value:H}):H}));let p=a.lineEnding??`\r +`,c=a.escapeFormulaValues??true,R=w.map(m=>m.map(y=>Ge(y,c)).join(",")).join(p);if(a.onExport){await a.onExport({csv:R,filename:o,rows:s.map(m=>m.original),scope:r});return}if(typeof window>"u")return;let C=new Blob([R],{type:"text/csv;charset=utf-8"}),u=window.URL.createObjectURL(C),d=window.document.createElement("a");d.href=u,d.download=o,d.click(),window.URL.revokeObjectURL(u);}function We(e,t){switch(t){case "page":return e.getRowModel().rows;case "selected":return e.getPrePaginationRowModel().rows.filter(a=>a.getIsSelected());case "all":return e.getCoreRowModel().rows;default:return e.getPrePaginationRowModel().rows}}function Ge(e,t){let a=$(e);return t&&typeof e=="string"&&/^[\t\r ]*[=+\-@]/.test(e)&&(a=`'${a}`),/[",\n\r]/.test(a)?`"${a.replace(/"/g,'""')}"`:a}function Lt(e){let t=[],a=[];for(let{column:o,index:r}of le(e)){let n=je(o,r);o.meta?.fixed==="left"&&t.push(n),o.meta?.fixed==="right"&&a.push(n);}return {left:t,right:a}}function je(e,t){if(e.id)return e.id;let a=$e(e);return a||`column-${t}`}function $e(e){if("accessorKey"in e&&typeof e.accessorKey=="string")return e.accessorKey}function Mt(e){let t=e.getIsPinned();return t||(e.id==="__select__"||e.id==="__expand__"?"left":e.id==="__actions__"?"right":e.columnDef.meta?.fixed)}function Et(e,t,a$1){let o=a$1?.isUtilityColumn??false;return a("sticky backdrop-blur box-border",t.pinnedColumn,!o&&"border-dotted",o?t.pinnedUtilityColumn:void 0,e==="left"?"border-r-1":"border-l")}function ie(e){return e==="__select__"||e==="__expand__"||e==="__actions__"}function De(e){switch(e){case "compact":return "h-8 py-1";case "spacious":return "h-14 py-4";default:return}}function se(e){switch(e){case "compact":return "py-1.5";case "spacious":return "py-4";default:return}}function Ht(e,t,a){let o=e.includes(t)?e.slice():[...e,t],r=o.indexOf(t),n=o.indexOf(a);if(r<0||n<0||r===n)return o;let[i]=o.splice(r,1);return o.splice(n,0,i),o}function ge(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,t=>t.toUpperCase())}function At({columns:e,editableRows:t,onError:a}){let[o,r]=L.useState(null),[n,i]=L.useState({}),s=L.useRef(n),[w,p]=L.useState(false);L.useEffect(()=>{s.current=n;},[n]);let c=L.useCallback(()=>{r(null),i({});},[]),R=L.useCallback((u,d)=>{let m=t?.getInitialValues?.(u)??qe(u,e);i(m),r(d);},[e,t]),C=L.useCallback(async u=>{if(t){p(true);try{await t.onSaveRow(u,s.current),L.startTransition(c);}catch(d){a?.(d,u);}finally{p(false);}}},[c,t,a]);return {cancelEditing:c,draftValues:n,editingRowId:o,isSavingEdit:w,saveEdit:C,setDraftValues:i,setEditingRowId:r,startEditingRow:R}}function qe(e,t){return le(t).reduce((a,{column:o})=>("accessorKey"in o&&typeof o.accessorKey=="string"&&(a[o.accessorKey]=e[o.accessorKey]),a),{})}function Ce(e,t,a,o){let{Checkbox:r,Input:n}=o,i=e.column.columnDef,s=i.meta,w="accessorKey"in i&&typeof i.accessorKey=="string"?i.accessorKey:e.column.id,p=t[w],c=C=>{a(u=>({...u,[w]:C}));};if(s?.renderEditCell)return s.renderEditCell({cell:e,row:e.row.original,value:e.getValue(),draftValue:p,setDraftValue:c});let R=Je(s?.type,p);return typeof p=="boolean"?jsx(r,{checked:p,onCheckedChange:C=>{c(C===true);}}):jsx(n,{type:R,value:s?.formatEditValue?s.formatEditValue(p,e):Ze(p,R),onChange:C=>{let u=C.target.value,d=s?.parseEditValue?s.parseEditValue(u,e):Qe(u,R,p);c(d);}})}function Je(e,t){return e==="numeric"||typeof t=="number"?"number":e==="date"||t instanceof Date?"datetime-local":"text"}function Ze(e,t="text"){return e==null?"":e instanceof Date?t==="datetime-local"?e.toISOString().slice(0,16):e.toISOString():typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint"?String(e):""}function Qe(e,t,a){return t==="number"?e===""?null:Number(e):t==="datetime-local"?e?a instanceof Date?new Date(e):e:null:e}function T({children:e,viewBox:t="0 0 24 24",...a}){return jsx("svg",{"aria-hidden":"true",focusable:"false",width:"1em",height:"1em",viewBox:t,fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",...a,children:e})}function Ut(e){return jsxs(T,{...e,children:[jsx("path",{d:"M4 7h4"}),jsx("path",{d:"M14 7h6"}),jsx("path",{d:"M10 5v4"}),jsx("path",{d:"M4 17h10"}),jsx("path",{d:"M18 17h2"}),jsx("path",{d:"M16 15v4"})]})}function Vt(e){return jsx(T,{...e,children:jsx("path",{d:"M5 12l4 4L19 6"})})}function ye(e){return jsx(T,{...e,children:jsx("path",{d:"M6 9l6 6 6-6"})})}function Ot(e){return jsx(T,{...e,children:jsx("path",{d:"M15 6l-6 6 6 6"})})}function Kt(e){return jsx(T,{...e,children:jsx("path",{d:"M9 6l6 6-6 6"})})}function Bt(e){return jsx(T,{...e,children:jsx("path",{d:"M6 15l6-6 6 6"})})}function Ft(e){return jsxs(T,{...e,children:[jsx("path",{d:"M11 6l-6 6 6 6"}),jsx("path",{d:"M19 6l-6 6 6 6"})]})}function Wt(e){return jsxs(T,{...e,children:[jsx("path",{d:"M5 6l6 6-6 6"}),jsx("path",{d:"M13 6l6 6-6 6"})]})}function he(e){return jsxs(T,{...e,children:[jsx("circle",{cx:"12",cy:"12",r:"9"}),jsx("path",{d:"M12 7v5l3 2"})]})}function Gt(e){return jsxs(T,{...e,children:[jsx("ellipse",{cx:"12",cy:"5",rx:"7",ry:"3"}),jsx("path",{d:"M5 5v6c0 1.7 3.1 3 7 3s7-1.3 7-3V5"}),jsx("path",{d:"M5 11v6c0 1.7 3.1 3 7 3s7-1.3 7-3v-6"})]})}function jt(e){return jsxs(T,{...e,children:[jsx("path",{d:"M5 12h.01"}),jsx("path",{d:"M12 12h.01"}),jsx("path",{d:"M19 12h.01"})]})}function $t(e){return jsxs(T,{...e,children:[jsx("path",{d:"M12 3v12"}),jsx("path",{d:"M7 10l5 5 5-5"}),jsx("path",{d:"M5 21h14"})]})}function qt(e){return jsxs(T,{...e,children:[jsx("path",{d:"M4 20h4l11-11-4-4L4 16v4z"}),jsx("path",{d:"M13 7l4 4"})]})}function Jt(e){return jsxs(T,{...e,children:[jsx("path",{d:"M2 12s4-7 10-7 10 7 10 7-4 7-10 7S2 12 2 12z"}),jsx("circle",{cx:"12",cy:"12",r:"3"})]})}function Zt(e){return jsxs(T,{...e,children:[jsx("path",{d:"M3 3l18 18"}),jsx("path",{d:"M10.6 10.6a2 2 0 0 0 2.8 2.8"}),jsx("path",{d:"M9.9 5.3A10.5 10.5 0 0 1 12 5c6 0 10 7 10 7a18 18 0 0 1-3.2 4"}),jsx("path",{d:"M6.6 6.6C3.8 8.4 2 12 2 12s4 7 10 7a10.6 10.6 0 0 0 4.1-.8"})]})}function Qt(e){return jsxs(T,{...e,children:[jsx("path",{d:"M4 13l2-8h12l2 8"}),jsx("path",{d:"M4 13h5l2 3h2l2-3h5v6H4z"})]})}function Xt(e){return jsxs(T,{...e,children:[jsx("path",{d:"M4 4h6v6H4z"}),jsx("path",{d:"M14 4h6v6h-6z"}),jsx("path",{d:"M4 14h6v6H4z"}),jsx("path",{d:"M14 14h6v6h-6z"})]})}function Yt(e){return jsxs(T,{...e,children:[jsx("path",{d:"M8 6h13"}),jsx("path",{d:"M8 12h13"}),jsx("path",{d:"M8 18h13"}),jsx("path",{d:"M3 6h.01"}),jsx("path",{d:"M3 12h.01"}),jsx("path",{d:"M3 18h.01"})]})}function ea(e){return jsxs(T,{...e,children:[jsx("circle",{cx:"11",cy:"11",r:"7"}),jsx("path",{d:"M16 16l5 5"})]})}function we(e){return jsxs(T,{...e,children:[jsx("path",{d:"M8 9l4-4 4 4"}),jsx("path",{d:"M16 15l-4 4-4-4"})]})}function ta(e){return jsxs(T,{...e,children:[jsx("path",{d:"M18 6L6 18"}),jsx("path",{d:"M6 6l12 12"})]})}function Ie(e,t,a$1){let o=e.column.columnDef,r=o.meta,n=e.getValue(),i=a$1?.hasCustomCell??false,s=i&&o.cell?flexRender(o.cell,e):void 0,w=et(s),p=Ye({context:e,useCustomOverflowDefaults:a$1?.useCustomOverflowDefaults??false,value:n});if(r?.type==="date"&&!i)return jsxs("div",{"data-dtp-slot":"data-table-cell-content","data-dtp-overflow":p,className:a(Se(p),"flex w-full min-w-0 items-center justify-end gap-2"),children:[jsx(he,{className:a("shrink-0",t?.mutedText??"opacity-70")}),jsx("span",{className:"min-w-0 truncate",children:tt(n)})]});let c=s!=null&&s!==""?s:n==null||n===""?jsx("span",{className:t?.mutedText??"opacity-70",children:"-"}):at(n);return jsx("div",{"data-dtp-slot":"data-table-cell-content","data-dtp-overflow":p,className:a(Se(p),"w-full min-w-0 max-w-full",w&&"[&>*]:max-w-full [&>*]:min-w-0"),children:c})}function Ye({context:e,useCustomOverflowDefaults:t,value:a}){let o=e.column.columnDef,r=typeof o.meta?.overflow=="function"?o.meta.overflow({row:e.row.original,value:a}):o.meta?.overflow;return r||(t?"clip":"truncate")}function Se(e){switch(e){case "clip":return "block overflow-hidden whitespace-nowrap";case "wrap":return "block overflow-hidden whitespace-normal break-words";case "visible":return "block overflow-visible whitespace-normal";default:return "block overflow-hidden text-ellipsis whitespace-nowrap"}}function et(e){return e==null?false:L.isValidElement(e)||Array.isArray(e)||typeof e=="object"}function tt(e){return typeof e=="number"?new Date(e*1e3).toLocaleString():typeof e=="string"&&e?e:"-"}function at(e){if(e instanceof Date)return e.toLocaleString();if(typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint")return String(e);try{return JSON.stringify(e)}catch{return "-"}}function ot({columnLayouts:e,components:t,currentDensity:a$1,draftValues:o,dragAndDrop:r,explicitCustomCellColumnIds:n,getRowClassName:i$1,isDraggable:s,isEditing:w,isExpanded:p,isInitialLoadingRow:c,isSelected:R,loadingState:C,onRowClick:u,originalRow:d,renderExpandedRow:m,row:y,setDraftValues:H,uiClassNames:x,visibleCells:v,visibleLeafColumnCount:f}){let{Checkbox:I,Input:U,Skeleton:A,TableCell:N,TableRow:J}=t;return jsxs(L.Fragment,{children:[jsx(J,{"data-row-id":y.id,draggable:c?false:s,"data-loading":C?.isLoading||void 0,"data-state":c?void 0:R?"selected":void 0,tabIndex:u&&!c?0:void 0,className:a(!c&&i$1?.(d),x.row,R&&!c&&x.rowSelected,u&&!c&&"cursor-pointer",c&&"pointer-events-none"),onClick:g=>{c||g.target?.closest("[data-row-click-ignore='true']")||u?.({row:d,rowId:y.id});},onKeyDown:g=>{c||!u||g.key!=="Enter"&&g.key!==" "||g.target?.closest("[data-row-click-ignore='true']")||(g.preventDefault(),u({row:d,rowId:y.id}));},onDragStart:g=>{c||r?.onRowDragStart?.({row:d,rowId:y.id,event:g});},onDragEnd:g=>{c||r?.onRowDragEnd?.({row:d,rowId:y.id,event:g});},children:v.map(g=>{let k=g.column.columnDef.meta,V=g.getContext(),oe=g.getValue(),E=e.get(g.column.id),B=E?.isSelectionColumn??false,F=E?.isExpansionColumn??false,W=E?.isActionsColumn??false,Z=E?.isSpacerColumn??false,Q=i(k?.hideOn),P=c||te(d)?void 0:typeof k?.cellClassName=="function"?k.cellClassName({row:d,value:oe}):k?.cellClassName;return jsx(N,{className:a("border-b",se(a$1),x.cellBorder,E?.utilityClassName,E?.isSpacerColumn&&"border-b-0 bg-transparent p-0",E?.pinnedClassName,Q,h(V),k?.responsiveClassName,P),style:E?.cellStyle,children:jsx("div",{"data-row-click-ignore":B||F||W?"true":void 0,className:"min-w-0 max-w-full",children:C?.isLoading?k?.skeleton?.(V)??C.skeleton??jsx(A,{className:a("h-4 rounded",k?.type==="numeric"?"ml-auto w-16":k?.type==="date"?"ml-auto w-28":"w-full")}):w&&g.column.id!=="__select__"&&g.column.id!=="__expand__"&&g.column.id!=="__actions__"?Ce(V,o,H,{Checkbox:I,Input:U}):Ie(V,x,{hasCustomCell:n.has(g.column.id)||B||F||W||Z,useCustomOverflowDefaults:n.has(g.column.id)||B||F||W||Z})})},g.id)})}),!c&&m&&p?jsx(J,{children:jsx(N,{colSpan:Math.max(1,f),className:a("border-b",se(a$1),x.cellBorder),children:m({row:d,rowId:y.id,tableRow:y})})}):null]})}function rt(e,t){return e.row.id===t.row.id&&e.row.original===t.row.original&&e.rowIndex===t.rowIndex&&e.isSelected===t.isSelected&&e.isInitialLoadingRow===t.isInitialLoadingRow&&e.isEditing===t.isEditing&&e.isExpanded===t.isExpanded&&e.isDraggable===t.isDraggable&<(e.loadingState,t.loadingState)&&it(e.visibleCells,t.visibleCells)&&e.components===t.components&&st(e.columnLayouts,t.columnLayouts,t.visibleCells)&&e.currentDensity===t.currentDensity&&e.renderExpandedRow===t.renderExpandedRow&&e.onRowClick===t.onRowClick&&e.dragAndDrop===t.dragAndDrop&&e.getRowClassName===t.getRowClassName&&e.uiClassNames===t.uiClassNames&&e.explicitCustomCellColumnIds===t.explicitCustomCellColumnIds&&(!e.isEditing||e.draftValues===t.draftValues)}function lt(e,t){return e?.isLoading===t?.isLoading&&e?.skeleton===t?.skeleton}function it(e,t){return e.length===t.length&&e.every((a,o)=>{let r=t[o];return r?.id===a.id&&r.column.id===a.column.id})}function st(e,t,a){return a.every(o=>{let r=e.get(o.column.id),n=t.get(o.column.id);return r?.fixedSide===n?.fixedSide&&r?.isActionsColumn===n?.isActionsColumn&&r?.isExpansionColumn===n?.isExpansionColumn&&r?.isSelectionColumn===n?.isSelectionColumn&&r?.isSpacerColumn===n?.isSpacerColumn&&r?.isUtilityColumn===n?.isUtilityColumn&&r?.pinnedClassName===n?.pinnedClassName&&r?.utilityClassName===n?.utilityClassName&&ct(r?.cellStyle,n?.cellStyle)})}function ct(e,t){return e?.width===t?.width&&e?.minWidth===t?.minWidth&&e?.maxWidth===t?.maxWidth&&e?.insetInlineStart===t?.insetInlineStart&&e?.insetInlineEnd===t?.insetInlineEnd}var ke=L.memo(ot,rt);function ut({currentDensity:e,currentSorting:t,draggedColumnIdRef:a$1,enableColumnReordering:o,enableColumnResizing:r,header:n,headerGroupHeaders:i$1,layout:s,primeColumnForResize:w,reorderColumn:p,resetColumnSize:c,TableHead:R,uiClassNames:C}){let u=n.column.columnDef.meta,d=!n.isPlaceholder&&n.subHeaders.length>0,m=n.column.getCanSort(),y=n.column.getIsSorted(),H=t.findIndex(f=>f.id===n.column.id),x=o&&!n.isPlaceholder&&!d&&!s.isUtilityColumn&&!s.isSpacerColumn,v=i(u?.hideOn);return jsxs(R,{colSpan:n.colSpan,scope:n.isPlaceholder?void 0:d?"colgroup":"col","aria-hidden":n.isPlaceholder||void 0,"data-column-id":n.column.id,"data-header-depth":n.depth,"data-dtp-slot":d?"data-table-column-group-header":"data-table-column-header",className:a("relative border-b",De(e),d&&C.columnGroupHeader,s.utilityClassName,s.isSpacerColumn&&"border-b-1 bg-transparent p-0",s.pinnedClassName,v,g(n.getContext()),u?.headerClassName,u?.responsiveClassName),style:{...u?.headerStyle,...s.headerStyle},"aria-sort":y==="asc"?"ascending":y==="desc"?"descending":m?"none":void 0,draggable:x,tabIndex:x?0:void 0,onDragStart:x?f=>{a$1.current=n.column.id,f.dataTransfer.effectAllowed="move";}:void 0,onDragOver:x?f=>{f.preventDefault(),f.dataTransfer.dropEffect="move";}:void 0,onDrop:x?f=>{f.preventDefault();let I=a$1.current;a$1.current=null,I&&p(I,n.column.id);}:void 0,onKeyDown:x?f=>{if(!f.altKey||f.key!=="ArrowLeft"&&f.key!=="ArrowRight")return;f.preventDefault();let I=i$1.filter(N=>!ie(N.column.id)&&N.column.id!=="__spacer__"),U=I.findIndex(N=>N.column.id===n.column.id),A=I[f.key==="ArrowLeft"?U-1:U+1];A&&p(n.column.id,A.column.id);}:void 0,children:[n.isPlaceholder?null:m?jsxs("button",{type:"button",className:a("flex w-full items-center gap-2 font-medium",g(n.getContext())),onClick:n.column.getToggleSortingHandler(),children:[jsx("span",{className:"truncate",children:flexRender(n.column.columnDef.header,n.getContext())}),y?jsxs(Fragment,{children:[jsx(ye,{className:a("size-4 shrink-0 transition-transform",y==="desc"?"rotate-0":"rotate-180")}),t.length>1&&H>=0?jsx("span",{className:"inline-flex size-4 shrink-0 items-center justify-center rounded-full text-[10px] leading-none",children:H+1}):null]}):jsx(we,{className:a("size-4 shrink-0",C.headerSortIcon??"opacity-70")})]}):flexRender(n.column.columnDef.header,n.getContext()),r&&!n.isPlaceholder&&n.column.getCanResize()?jsx("div",{onDoubleClick:()=>{for(let f of ce(n))c(f.column.id);},onMouseDown:f=>{for(let I of ce(n))w(I.column.id,I.getSize());n.getResizeHandler()(f);},onTouchStart:f=>{for(let I of ce(n))w(I.column.id,I.getSize());n.getResizeHandler()(f);},className:a("absolute inset-y-0 right-0 z-50 h-full w-3 translate-x-1/2 cursor-col-resize touch-none select-none after:absolute after:top-0 after:left-1/2 after:h-full after:w-px after:-translate-x-1/2",C.resizeHandle??"after:bg-current after:opacity-20 hover:after:opacity-70",n.column.getIsResizing()&&(C.resizeHandleActive??"after:opacity-100"))}):null]},n.id)}function mt(e,t){return e.header.id===t.header.id&&e.header.column.id===t.header.column.id&&e.header.column.columnDef===t.header.column.columnDef&&e.header.colSpan===t.header.colSpan&&e.header.isPlaceholder===t.header.isPlaceholder&&ft(e.header,t.header)&&e.currentDensity===t.currentDensity&&e.enableColumnReordering===t.enableColumnReordering&&e.enableColumnResizing===t.enableColumnResizing&&e.TableHead===t.TableHead&&e.uiClassNames===t.uiClassNames&&e.draggedColumnIdRef===t.draggedColumnIdRef&&e.primeColumnForResize===t.primeColumnForResize&&e.reorderColumn===t.reorderColumn&&e.resetColumnSize===t.resetColumnSize&&e.selectionState===t.selectionState&&pt(e.currentSorting,t.currentSorting)&&bt(e.headerGroupHeaders,t.headerGroupHeaders)&&Dt(e.layout,t.layout)}function ce(e){return e.subHeaders.length?e.getLeafHeaders().filter(t=>!t.subHeaders.length):[e]}function ft(e,t){return e.subHeaders.length===t.subHeaders.length&&e.subHeaders.every((a,o)=>t.subHeaders[o]?.id===a.id)}function pt(e,t){return e.length===t.length&&e.every((a,o)=>{let r=t[o];return r?.id===a.id&&r.desc===a.desc})}function bt(e,t){return e.length===t.length&&e.every((a,o)=>t[o]?.id===a.id)}function Dt(e,t){return e.fixedSide===t.fixedSide&&e.isSpacerColumn===t.isSpacerColumn&&e.isUtilityColumn===t.isUtilityColumn&&e.pinnedClassName===t.pinnedClassName&&e.utilityClassName===t.utilityClassName&&e.headerStyle?.width===t.headerStyle?.width&&e.headerStyle?.minWidth===t.headerStyle?.minWidth&&e.headerStyle?.maxWidth===t.headerStyle?.maxWidth&&e.headerStyle?.insetInlineStart===t.headerStyle?.insetInlineStart&&e.headerStyle?.insetInlineEnd===t.headerStyle?.insetInlineEnd}var Me=L.memo(ut,mt);function La({bodyRowComponents:e,columnLayouts:t,currentDensity:a$1,currentSorting:o=[],DataTableEmptyState:r,dragAndDrop:n,draggedColumnIdRef:i,draftValues:s,editingRowId:w,emptyNode:p,enableColumnReordering:c,enableColumnResizing:R,explicitCustomCellColumnIds:C,fillMinWidth:u,flexGrow:d,getColumnLayout:m,getRowClassName:y,getRowLoadingState:H,infiniteScroll:x,layoutMode:v,localSearchValue:f,onRowClick:I,primeColumnForResize:U,renderedRows:A,renderExpandedRow:N,reorderColumn:J,resetColumnSize:g,resolvedLabels:k,rowsToRender:V,ScrollArea:oe,ScrollBar:E,sentinelRef:B,setDraftValues:F,shouldRenderInitialLoading:W,stickyHeader:Z,summaryRows:Q,table:P,tableClassName:Ee,tableContainerClassName:He,Table:Ne,TableBody:Pe,TableCell:X,TableFooter:Ae="tfoot",TableHead:_e,TableHeader:ze,TableRow:G,tableScrollContainerRef:ve,uiClassNames:_,virtualPaddingBottom:me,virtualPaddingTop:fe,visibleLeafColumnCount:Y,visibleLeafColumns:Ue}){let Ve=P.getIsAllPageRowsSelected()?true:P.getIsSomePageRowsSelected()?"indeterminate":false;return jsx("div",{"data-dtp-slot":"data-table-table-shell",className:a("box-border border-2 border-transparent transition-colors",d?"flex min-h-0 flex-1 flex-col":"h-full",n?.isDragging&&(_.dragActive??"rounded-md border-dashed")),children:jsx("div",{ref:ve,className:a(d?"flex min-h-0 flex-1 flex-col":"h-full"),children:jsxs(oe,{className:a("rounded-md border",d?"min-h-0 flex-1":"h-full",_.tableContainer,_.tableScrollArea,He),children:[jsx("div",{className:"min-h-full",children:jsxs(Ne,{className:a("w-full table-fixed border-separate border-spacing-0",Ee),style:{minWidth:v==="fill"&&u||void 0,width:v==="fit"?P.getTotalSize():"100%"},children:[jsx("colgroup",{children:P.getVisibleLeafColumns().map(h=>{let M=m(h.id);return jsx("col",{style:M.colStyle},h.id)})}),jsx(ze,{className:a(Z?_.tableStickyHeader??"sticky top-0 z-30 backdrop-blur":void 0),children:P.getHeaderGroups().map(h=>jsx(G,{children:h.headers.map(M=>jsx(Me,{currentDensity:a$1,currentSorting:o,draggedColumnIdRef:i,enableColumnReordering:c,enableColumnResizing:R,header:M,headerGroupHeaders:h.headers,layout:Tt(M,m),primeColumnForResize:U,reorderColumn:J,resetColumnSize:g,selectionState:M.column.id==="__select__"?Ve:void 0,TableHead:_e,uiClassNames:_},M.id))},h.id))}),jsx(Pe,{children:A.length?jsxs(Fragment,{children:[fe>0?jsx(G,{"aria-hidden":"true",children:jsx(X,{colSpan:Math.max(1,Y),className:"border-b-0 p-0",style:{height:fe}})}):null,V.map(({row:h,rowIndex:M})=>{let O=h.original,z=te(O),j=z?{isLoading:true}:H?.(O,M),Oe=typeof j=="boolean"?{isLoading:j}:j,Ke=z?false:n?.getRowDraggable?.(O)??false;return jsx(ke,{columnLayouts:t,components:e,currentDensity:a$1,draftValues:s,dragAndDrop:n,explicitCustomCellColumnIds:C,getRowClassName:y,isDraggable:Ke,isEditing:w===h.id,isExpanded:h.getIsExpanded(),isInitialLoadingRow:z,isSelected:h.getIsSelected(),loadingState:Oe,onRowClick:I,originalRow:O,renderExpandedRow:N,row:h,rowIndex:M,setDraftValues:F,uiClassNames:_,visibleCells:h.getVisibleCells(),visibleLeafColumnCount:Y},h.id)}),me>0?jsx(G,{"aria-hidden":"true",children:jsx(X,{colSpan:Math.max(1,Y),className:"border-b-0 p-0",style:{height:me}})}):null]}):jsx(G,{children:jsx(X,{colSpan:Math.max(1,Y),className:"h-full grow",children:jsx("div",{className:"flex h-full min-h-full w-full grow items-center justify-center",children:p??jsx(r,{title:f?k.noMatchingRowsTitle:k.noRowsTitle,description:f?k.noMatchingRowsDescription:k.noRowsDescription})})})})}),Q.length?jsx(Ae,{children:Q.map(h=>jsx(G,{children:Ue.map((M,O)=>{let z=h.cells[M.id]??(O===0?h.label:null);return jsx(X,{className:a("border-b font-medium",_.cellBorder),children:typeof z=="function"?z({rows:P.getFilteredRowModel().rows.map(j=>j.original),columnId:M.id}):z},`${h.key}-${M.id}`)})},h.key))}):null]})}),x?.enabled&&A.length&&!W?jsx("div",{className:"px-4 pb-4",children:jsx("div",{ref:B,className:"h-4 w-full"})}):null,jsx(E,{orientation:"horizontal"})]})})})}function Tt(e,t){let a=t(e.column.id);if(e.isPlaceholder||!e.subHeaders.length)return a;let o=e.getLeafHeaders().filter(i=>!i.subHeaders.length).map(i=>t(i.column.id)),r=o[0]?.fixedSide;if(!r||!o.every(i=>i.fixedSide===r))return a;let n=r==="left"?o[0]:o.at(-1);return {...a,fixedSide:r,headerStyle:n?.headerStyle?{insetInlineStart:n.headerStyle.insetInlineStart,insetInlineEnd:n.headerStyle.insetInlineEnd}:void 0,pinnedClassName:n?.pinnedClassName}}export{le as A,It as B,Fe as C,kt as D,xt as E,Lt as F,je as G,$e as H,Mt as I,Et as J,ie as K,Ht as L,ge as M,At as N,ke as O,Me as P,La as Q,Ut as a,Vt as b,ye as c,Ot as d,Kt as e,Bt as f,Ft as g,Wt as h,Gt as i,jt as j,$t as k,qt as l,Jt as m,Zt as n,Qt as o,Xt as p,Yt as q,ea as r,we as s,ta as t,ht as u,wt as v,te as w,St as x,Rt as y,Be as z};//# sourceMappingURL=chunk-ZGXFBFNQ.js.map +//# sourceMappingURL=chunk-ZGXFBFNQ.js.map \ No newline at end of file diff --git a/dist/chunk-ZGXFBFNQ.js.map b/dist/chunk-ZGXFBFNQ.js.map new file mode 100644 index 0000000..b2b0b25 --- /dev/null +++ b/dist/chunk-ZGXFBFNQ.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/core/data-table/data-table-utils.ts","../src/core/data-table/use-row-editing.tsx","../src/core/icons.tsx","../src/core/data-table/data-table-cell-content.tsx","../src/core/data-table/data-table-body-row.tsx","../src/core/data-table/data-table-header-cell.tsx","../src/core/data-table/data-table-table-panel.tsx"],"names":["DATA_TABLE_LOADING_ROW","UTILITY_COLUMN_SIZE","createDataTableLoadingRows","count","_","index","isDataTableLoadingRow","row","getDataTableLoadingRowId","getConfiguredColumnMinWidth","column","minSize","decorateFilterableColumn","childColumn","filter","columnId","filterValue","hasFilterValue","value","optionValue","normalizeFilterValue","getDataTableLeafColumns","columns","leaves","visit","currentColumns","normalizeColumnFilterOptions","options","option","startCase","dataTableGlobalFilterFn","normalizedQuery","exportDataTableCsv","csvExport","table","filename","scope","exportColumnIds","isUtilityColumnId","rows","getCsvExportRows","csvRows","lineEnding","escapeFormulaValues","csv","escapeCsvCell","blob","url","anchor","text","getInitialColumnPinning","left","right","getColumnId","accessorKey","getAccessorKey","getFixedSide","pinnedSide","getPinnedColumnClassName","side","uiClassNames","isUtilityColumn","cn","getDensityHeaderClassName","density","getDensityCellClassName","moveColumnInOrder","currentOrder","sourceColumnId","targetColumnId","order","sourceIndex","targetIndex","source","character","useRowEditing","editableRows","onError","editingRowId","setEditingRowId","draftValues","setDraftValues","draftValuesRef","isSavingEdit","setIsSavingEdit","cancelEditing","startEditingRow","rowId","initialValues","defaultDraftValues","saveEdit","error","draft","renderEditableCell","context","components","Checkbox","Input","meta","draftValue","setDraftValue","current","inputType","getEditableInputType","jsx","checked","getEditableInputValue","event","rawValue","parsedValue","parseEditableInputValue","type","previousValue","Icon","children","viewBox","props","IconAdjustmentsHorizontal","jsxs","IconCheck","IconChevronDown","IconChevronLeft","IconChevronRight","IconChevronUp","IconChevronsLeft","IconChevronsRight","IconClock","IconDatabase","IconDots","IconDownload","IconEdit","IconEye","IconEyeOff","IconInbox","IconLayoutGrid","IconList","IconSearch","IconSelector","IconX","renderDataTableCellContent","classNames","hasCustomCell","renderedCellContent","flexRender","hasComplexRenderedContent","isComplexRenderedCellContent","resolvedOverflow","resolveDataTableCellOverflow","getCellOverflowClassName","formatDateValue","content","formatCellValue","useCustomOverflowDefaults","overflow","Re","DataTableBodyRowInner","columnLayouts","currentDensity","dragAndDrop","explicitCustomCellColumnIds","getRowClassName","isDraggable","isEditing","isExpanded","isInitialLoadingRow","isSelected","loadingState","onRowClick","originalRow","renderExpandedRow","visibleCells","visibleLeafColumnCount","Skeleton","TableCell","TableRow","ne","cell","cellContext","layout","isSelectionColumn","isExpansionColumn","isActionsColumn","isSpacerColumn","hideClassName","hideOnClassName","cellClassName","cellAlignClassName","areDataTableBodyRowsEqual","previous","next","sameLoadingState","sameVisibleCells","sameColumnLayouts","nextCell","cells","previousLayout","nextLayout","sameCellStyle","DataTableBodyRow","DataTableHeaderCellInner","currentSorting","draggedColumnIdRef","enableColumnReordering","enableColumnResizing","header","headerGroupHeaders","primeColumnForResize","reorderColumn","resetColumnSize","TableHead","isColumnGroup","canSort","sortingState","sortingIndex","sort","canReorderColumn","headerAlignClassName","headers","item","currentIndex","target","Fragment","leafHeader","getResizableLeafHeaders","areDataTableHeaderCellsEqual","sameSubHeaders","sameSorting","sameHeaderGroupHeaders","sameHeaderLayout","nextSort","DataTableHeaderCell","Le","DataTableTablePanel","bodyRowComponents","DataTableEmptyState","emptyNode","fillMinWidth","flexGrow","getColumnLayout","getRowLoadingState","infiniteScroll","layoutMode","localSearchValue","renderedRows","resolvedLabels","rowsToRender","ScrollArea","ScrollBar","sentinelRef","shouldRenderInitialLoading","stickyHeader","summaryRows","tableClassName","tableContainerClassName","Table","TableBody","TableFooter","TableHeader","tableScrollContainerRef","virtualPaddingBottom","virtualPaddingTop","visibleLeafColumns","selectionState","headerGroup","getHeaderLayout","rowIndex","resolvedLoadingState","summaryRow","columnLayout","leafLayouts","fixedSide","edgeLayout"],"mappings":"mKAkBA,IAAMA,EAAAA,CAAyB,MAAA,CAAO,wBAAwB,CAAA,CAEjDC,EAAAA,CAAsB,GAO5B,SAASC,EAAAA,CAAkCC,CAAAA,CAAe,CAC/D,OAAO,KAAA,CAAM,IAAA,CAAK,CAAE,MAAA,CAAQA,CAAM,CAAA,CAAG,CAACC,CAAAA,CAAGC,CAAAA,IAChC,CACL,CAACL,EAAsB,EAAG,IAAA,CAC1B,KAAA,CAAAK,CACF,CAAA,CACD,CACH,CAEO,SAASC,EAAAA,CACdC,CAAAA,CAC4B,CAC5B,OAAO,CAAA,EACLA,CAAAA,EACE,OAAOA,CAAAA,EAAQ,QAAA,EACfP,EAAAA,IAA2BO,CAAAA,CAEjC,CAEO,SAASC,EAAAA,CAAyBH,CAAAA,CAAe,CACtD,OAAO,CAAA,WAAA,EAAcA,CAAK,CAAA,CAC5B,CAEO,SAASI,EAAAA,CACdC,CAAAA,CACA,CACA,GAAI,OAAOA,CAAAA,CAAO,IAAA,EAAM,QAAA,EAAa,QAAA,CACnC,OAAOA,CAAAA,CAAO,IAAA,CAAK,QAAA,CAGrB,GAAI,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAKA,CAAAA,CAAQ,SAAS,CAAA,CAAG,CAC3D,IAAMC,CAAAA,CAAWD,CAAAA,CAAiC,OAAA,CAElD,GAAI,OAAOC,CAAAA,EAAY,QAAA,CACrB,OAAOA,CAEX,CAGF,CAEO,SAASC,EAAAA,CACdF,CAAAA,CAC2B,CAC3B,GAAI,SAAA,GAAaA,CAAAA,EAAU,KAAA,CAAM,OAAA,CAAQA,CAAAA,CAAO,OAAO,CAAA,CACrD,OAAO,CACL,GAAGA,CAAAA,CACH,OAAA,CAASA,CAAAA,CAAO,OAAA,CAAQ,GAAA,CAAKG,CAAAA,EAC3BD,EAAAA,CACEC,CACF,CACF,CACF,CAAA,CAGF,IAAMC,CAAAA,CAASJ,CAAAA,CAAO,IAAA,EAAM,MAAA,CAC5B,OAAI,CAACI,GAAUJ,CAAAA,CAAO,QAAA,CACbA,CAAAA,CAGF,CACL,GAAGA,CAAAA,CACH,QAAA,CAAU,CAACH,CAAAA,CAAKQ,CAAAA,CAAUC,CAAAA,GAAgB,CACxC,GAAI,CAACC,EAAAA,CAAeD,CAAW,CAAA,CAC7B,OAAO,KAAA,CAGT,IAAME,CAAAA,CAAQX,CAAAA,CAAI,QAAA,CAASQ,CAAQ,CAAA,CAC7BI,CAAAA,CACJL,CAAAA,CAAO,cAAA,GAAiBI,CAAAA,CAAOX,CAAAA,CAAI,QAAQ,CAAA,EAC3Ca,CAAAA,CAAqBF,CAAK,CAAA,CAE5B,OAAIJ,CAAAA,CAAO,IAAA,GAAS,OAAA,CACX,KAAA,CAAM,OAAA,CAAQE,CAAW,CAAA,CAC5BA,CAAAA,CAAY,GAAA,CAAI,MAAM,CAAA,CAAE,QAAA,CAASG,CAAW,CAAA,CAC5C,IAAA,CAGFL,CAAAA,CAAO,IAAA,GAAS,QAAA,CACXK,CAAAA,GAAgB,MAAA,CAAOH,CAAW,CAAA,CAGpCI,CAAAA,CAAqBF,CAAK,CAAA,CAC9B,WAAA,GACA,QAAA,CAAS,MAAA,CAAOF,CAAW,CAAA,CAAE,WAAA,EAAa,CAC/C,CACF,CACF,CAOO,SAASK,EAAAA,CACdC,CAAAA,CACA,CACA,IAAMC,CAAAA,CAA4C,EAAC,CAE7CC,CAAAA,CAASC,CAAAA,EAA8D,CAC3EA,CAAAA,CAAe,OAAA,CAAQ,CAACf,CAAAA,CAAQL,CAAAA,GAAU,CACxC,GAAI,SAAA,GAAaK,CAAAA,EAAUA,CAAAA,CAAO,OAAA,EAAS,MAAA,CAAQ,CACjDc,CAAAA,CAAMd,CAAAA,CAAO,OAAO,CAAA,CACpB,MACF,CAEAa,CAAAA,CAAO,IAAA,CAAK,CAAE,MAAA,CAAAb,CAAAA,CAAQ,KAAA,CAAAL,CAAM,CAAC,EAC/B,CAAC,EACH,CAAA,CAEA,OAAAmB,CAAAA,CAAMF,CAAO,CAAA,CACNC,CACT,CAEO,SAASG,EAAAA,CACdC,CAAAA,CACA,CACA,OAAOA,CAAAA,CAAQ,GAAA,CAAKC,CAAAA,EAClB,OAAOA,CAAAA,EAAW,QAAA,CACd,CAAE,KAAA,CAAOC,EAAAA,CAAUD,CAAM,CAAA,CAAG,KAAA,CAAOA,CAAO,CAAA,CAC1CA,CACN,CACF,CAEO,SAASR,CAAAA,CAAqBF,CAAAA,CAAgB,CACnD,GAAIA,CAAAA,EAAS,IAAA,CACX,OAAO,EAAA,CAGT,GAAIA,CAAAA,YAAiB,IAAA,CACnB,OAAOA,EAAM,WAAA,EAAY,CAG3B,GAAI,OAAOA,CAAAA,EAAU,QAAA,CACnB,GAAI,CACF,OAAO,IAAA,CAAK,SAAA,CAAUA,CAAK,CAC7B,CAAA,KAAQ,CACN,OAAO,EACT,CAGF,OACE,OAAOA,CAAAA,EAAU,QAAA,EACjB,OAAOA,CAAAA,EAAU,QAAA,EACjB,OAAOA,CAAAA,EAAU,SAAA,EACjB,OAAOA,CAAAA,EAAU,UACjB,OAAOA,CAAAA,EAAU,QAAA,CAEV,MAAA,CAAOA,CAAK,CAAA,CAGd,EACT,CAEO,SAASD,EAAAA,CAAeC,CAAAA,CAAgB,CAC7C,OAAI,KAAA,CAAM,OAAA,CAAQA,CAAK,CAAA,CACdA,CAAAA,CAAM,MAAA,CAAS,CAAA,CAGMA,CAAAA,EAAU,IAAA,EAAQA,CAAAA,GAAU,EAC5D,CAEO,SAASY,EAAAA,CACdvB,CAAAA,CACAQ,CAAAA,CACAC,CAAAA,CACA,CACA,IAAMe,CAAAA,CAAkBX,CAAAA,CAAqBJ,CAAW,CAAA,CACrD,IAAA,EAAK,CACL,WAAA,EAAY,CAEf,OAAKe,CAAAA,CAIEX,CAAAA,CAAqBb,CAAAA,CAAI,QAAA,CAASQ,CAAQ,CAAC,CAAA,CAC/C,WAAA,EAAY,CACZ,QAAA,CAASgB,CAAe,CAAA,CALlB,IAMX,CAEA,eAAsBC,EAAAA,CAA0B,CAC9C,SAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CACF,EAIG,CACD,GAAID,CAAAA,GAAc,KAAA,CAChB,OAGF,IAAMN,CAAAA,CACJM,CAAAA,GAAc,IAAA,CAAO,EAAC,CAAIA,CAAAA,CACtBE,CAAAA,CAAWR,CAAAA,CAAQ,QAAA,EAAY,gBAAA,CAC/BS,CAAAA,CAAQT,CAAAA,CAAQ,KAAA,EAAS,UAAA,CACzBU,CAAAA,CAAkBV,CAAAA,CAAQ,OAAA,CAC5B,IAAI,GAAA,CAAIA,CAAAA,CAAQ,OAAO,CAAA,CACvB,MAAA,CACEL,CAAAA,CAAUY,CAAAA,CACb,qBAAA,EAAsB,CACtB,MAAA,CACExB,CAAAA,EACC,CAAC4B,EAAAA,CAAkB5B,CAAAA,CAAO,EAAE,CAAA,EAC5BA,CAAAA,CAAO,EAAA,GAAO,YAAA,GACb,CAAC2B,CAAAA,EAAmBA,CAAAA,CAAgB,GAAA,CAAI3B,CAAAA,CAAO,EAAE,CAAA,CACtD,CAAA,CACI6B,CAAAA,CAAOC,EAAAA,CAAiBN,CAAAA,CAAOE,CAAK,CAAA,CACpCK,CAAAA,CAAiC,EAAC,CAAA,CAEpCd,CAAAA,CAAQ,cAAA,EAAkB,IAAA,GAC5Bc,EAAQ,IAAA,CACNnB,CAAAA,CAAQ,GAAA,CAAKZ,CAAAA,EACX,OAAOA,CAAAA,CAAO,SAAA,CAAU,MAAA,EAAW,QAAA,CAC/BA,CAAAA,CAAO,SAAA,CAAU,MAAA,CACjBmB,EAAAA,CAAUnB,CAAAA,CAAO,EAAE,CACzB,CACF,CAAA,CAGF,IAAA,IAAWH,CAAAA,IAAOgC,CAAAA,CAChBE,CAAAA,CAAQ,IAAA,CACNnB,CAAAA,CAAQ,GAAA,CAAKZ,CAAAA,EAAW,CACtB,IAAMQ,CAAAA,CAAQX,CAAAA,CAAI,QAAA,CAASG,CAAAA,CAAO,EAAE,CAAA,CACpC,OAAOiB,CAAAA,CAAQ,YAAA,CACXA,CAAAA,CAAQ,YAAA,CAAa,CACnB,GAAA,CAAKpB,CAAAA,CAAI,QAAA,CACT,KAAA,CAAOA,CAAAA,CAAI,EAAA,CACX,QAAA,CAAUG,CAAAA,CAAO,EAAA,CACjB,KAAA,CAAAQ,CACF,CAAC,CAAA,CACDA,CACN,CAAC,CACH,CAAA,CAGF,IAAMwB,CAAAA,CAAaf,CAAAA,CAAQ,UAAA,EAAc,CAAA;AAAA,CAAA,CACnCgB,CAAAA,CAAsBhB,CAAAA,CAAQ,mBAAA,EAAuB,IAAA,CACrDiB,CAAAA,CAAMH,CAAAA,CACT,GAAA,CAAKlC,CAAAA,EACJA,CAAAA,CACG,GAAA,CAAKW,CAAAA,EAAU2B,EAAAA,CAAc3B,CAAAA,CAAOyB,CAAmB,CAAC,CAAA,CACxD,IAAA,CAAK,GAAG,CACb,CAAA,CACC,IAAA,CAAKD,CAAU,CAAA,CAElB,GAAIf,CAAAA,CAAQ,QAAA,CAAU,CACpB,MAAMA,EAAQ,QAAA,CAAS,CACrB,GAAA,CAAAiB,CAAAA,CACA,QAAA,CAAAT,CAAAA,CACA,IAAA,CAAMI,CAAAA,CAAK,GAAA,CAAKhC,CAAAA,EAAQA,CAAAA,CAAI,QAAQ,CAAA,CACpC,KAAA,CAAA6B,CACF,CAAC,CAAA,CACD,MACF,CAEA,GAAI,OAAO,MAAA,CAAW,GAAA,CACpB,OAGF,IAAMU,CAAAA,CAAO,IAAI,IAAA,CAAK,CAACF,CAAG,EAAG,CAAE,IAAA,CAAM,wBAAyB,CAAC,CAAA,CACzDG,CAAAA,CAAM,MAAA,CAAO,GAAA,CAAI,eAAA,CAAgBD,CAAI,CAAA,CACrCE,CAAAA,CAAS,MAAA,CAAO,QAAA,CAAS,aAAA,CAAc,GAAG,CAAA,CAChDA,CAAAA,CAAO,IAAA,CAAOD,CAAAA,CACdC,CAAAA,CAAO,QAAA,CAAWb,CAAAA,CAClBa,CAAAA,CAAO,KAAA,EAAM,CACb,MAAA,CAAO,GAAA,CAAI,eAAA,CAAgBD,CAAG,EAChC,CAEA,SAASP,EAAAA,CACPN,CAAAA,CACAE,CAAAA,CACA,CACA,OAAQA,CAAAA,EACN,KAAK,MAAA,CACH,OAAOF,CAAAA,CAAM,WAAA,EAAY,CAAE,IAAA,CAC7B,KAAK,UAAA,CACH,OAAOA,CAAAA,CACJ,wBAAA,EAAyB,CACzB,IAAA,CAAK,MAAA,CAAQ3B,CAAAA,EAAQA,CAAAA,CAAI,aAAA,EAAe,CAAA,CAC7C,KAAK,MACH,OAAO2B,CAAAA,CAAM,eAAA,EAAgB,CAAE,IAAA,CACjC,QACE,OAAOA,CAAAA,CAAM,wBAAA,EAAyB,CAAE,IAC5C,CACF,CAEA,SAASW,GAAc3B,CAAAA,CAAgByB,CAAAA,CAA8B,CACnE,IAAIM,CAAAA,CAAO7B,CAAAA,CAAqBF,CAAK,CAAA,CAQrC,OANEyB,CAAAA,EACA,OAAOzB,CAAAA,EAAU,QAAA,EACjB,kBAAA,CAAmB,KAAKA,CAAK,CAAA,GAE7B+B,CAAAA,CAAO,CAAA,CAAA,EAAIA,CAAI,CAAA,CAAA,CAAA,CAEb,UAAA,CAAW,IAAA,CAAKA,CAAI,CAAA,CACf,CAAA,CAAA,EAAIA,CAAAA,CAAK,OAAA,CAAQ,IAAA,CAAM,IAAI,CAAC,CAAA,CAAA,CAAA,CAE9BA,CACT,CAEO,SAASC,EAAAA,CACd5B,CAAAA,CACoB,CACpB,IAAM6B,CAAAA,CAAsB,EAAC,CACvBC,CAAAA,CAAuB,EAAC,CAE9B,OAAW,CAAE,MAAA,CAAA1C,CAAAA,CAAQ,KAAA,CAAAL,CAAM,CAAA,GAAKgB,EAAAA,CAAwBC,CAAO,CAAA,CAAG,CAChE,IAAMP,CAAAA,CAAWsC,EAAAA,CAAY3C,CAAAA,CAAQL,CAAK,CAAA,CACtCK,CAAAA,CAAO,IAAA,EAAM,KAAA,GAAU,MAAA,EACzByC,CAAAA,CAAK,IAAA,CAAKpC,CAAQ,CAAA,CAEhBL,CAAAA,CAAO,IAAA,EAAM,KAAA,GAAU,OAAA,EACzB0C,CAAAA,CAAM,IAAA,CAAKrC,CAAQ,EAEvB,CAEA,OAAO,CAAE,IAAA,CAAAoC,CAAAA,CAAM,KAAA,CAAAC,CAAM,CACvB,CAEO,SAASC,EAAAA,CACd3C,CAAAA,CACAL,CAAAA,CACA,CACA,GAAIK,CAAAA,CAAO,EAAA,CACT,OAAOA,CAAAA,CAAO,EAAA,CAGhB,IAAM4C,CAAAA,CAAcC,EAAAA,CAAe7C,CAAM,CAAA,CACzC,OAAI4C,CAAAA,EAIG,CAAA,OAAA,EAAUjD,CAAK,EACxB,CAEO,SAASkD,EAAAA,CACd7C,CAAAA,CACA,CACA,GAAI,aAAA,GAAiBA,CAAAA,EAAU,OAAOA,CAAAA,CAAO,WAAA,EAAgB,QAAA,CAC3D,OAAOA,CAAAA,CAAO,WAIlB,CAEO,SAAS8C,EAAAA,CAAoB9C,CAAAA,CAAuB,CACzD,IAAM+C,CAAAA,CAAa/C,CAAAA,CAAO,WAAA,EAAY,CACtC,OAAI+C,CAAAA,GAIA/C,CAAAA,CAAO,EAAA,GAAO,cAIdA,CAAAA,CAAO,EAAA,GAAO,YAAA,CACT,MAAA,CAGLA,CAAAA,CAAO,EAAA,GAAO,aAAA,CACT,OAAA,CAGKA,CAAAA,CAAO,SAAA,CAAiD,IAAA,EACzD,KAAA,CACf,CAEO,SAASgD,EAAAA,CACdC,CAAAA,CACAC,CAAAA,CACAjC,GAAAA,CACA,CACA,IAAMkC,CAAAA,CAAkBlC,GAAAA,EAAS,eAAA,EAAmB,KAAA,CACpD,OAAOmC,CAAAA,CACL,iCAAA,CACAF,CAAAA,CAAa,YAAA,CACb,CAACC,GAAmB,eAAA,CACpBA,CAAAA,CAAkBD,CAAAA,CAAa,mBAAA,CAAsB,MAAA,CACrDD,CAAAA,GAAS,MAAA,CAAS,YAAA,CAAe,UACnC,CACF,CAEO,SAASrB,EAAAA,CAAkBvB,CAAAA,CAAkB,CAClD,OACEA,CAAAA,GAAa,YAAA,EACbA,CAAAA,GAAa,YAAA,EACbA,CAAAA,GAAa,aAEjB,CAEO,SAASgD,EAAAA,CAA0BC,CAAAA,CAA2B,CACnE,OAAQA,CAAAA,EACN,KAAK,SAAA,CACH,OAAO,UAAA,CACT,KAAK,UAAA,CACH,OAAO,WAAA,CAET,QACE,MACJ,CACF,CAEO,SAASC,EAAAA,CAAwBD,CAAAA,CAA2B,CACjE,OAAQA,CAAAA,EACN,KAAK,SAAA,CACH,OAAO,QAAA,CACT,KAAK,UAAA,CACH,OAAO,MAAA,CAET,QACE,MACJ,CACF,CAEO,SAASE,EAAAA,CACdC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACA,CACA,IAAMC,CAAAA,CAAQH,CAAAA,CAAa,QAAA,CAASC,CAAc,CAAA,CAC9CD,CAAAA,CAAa,KAAA,EAAM,CACnB,CAAC,GAAGA,CAAAA,CAAcC,CAAc,CAAA,CAC9BG,CAAAA,CAAcD,CAAAA,CAAM,OAAA,CAAQF,CAAc,CAAA,CAC1CI,CAAAA,CAAcF,CAAAA,CAAM,OAAA,CAAQD,CAAc,CAAA,CAEhD,GAAIE,EAAc,CAAA,EAAKC,CAAAA,CAAc,CAAA,EAAKD,CAAAA,GAAgBC,CAAAA,CACxD,OAAOF,CAAAA,CAGT,GAAM,CAACG,CAAM,CAAA,CAAIH,CAAAA,CAAM,MAAA,CAAOC,CAAAA,CAAa,CAAC,CAAA,CAC5C,OAAAD,CAAAA,CAAM,MAAA,CAAOE,CAAAA,CAAa,CAAA,CAAGC,CAAM,CAAA,CAC5BH,CACT,CAEO,SAASzC,EAAAA,CAAUX,CAAAA,CAAe,CACvC,OAAOA,EACJ,OAAA,CAAQ,oBAAA,CAAsB,OAAO,CAAA,CACrC,OAAA,CAAQ,QAAA,CAAU,GAAG,CAAA,CACrB,OAAA,CAAQ,MAAA,CAAQ,GAAG,CAAA,CACnB,IAAA,EAAK,CACL,OAAA,CAAQ,OAAA,CAAUwD,CAAAA,EAAcA,CAAAA,CAAU,WAAA,EAAa,CAC5D,CC5cO,SAASC,EAAAA,CAAqB,CACnC,OAAA,CAAArD,CAAAA,CACA,aAAAsD,CAAAA,CACA,OAAA,CAAAC,CACF,CAAA,CAIG,CACD,GAAM,CAACC,CAAAA,CAAcC,CAAe,CAAA,CAAU,CAAA,CAAA,QAAA,CAAwB,IAAI,CAAA,CACpE,CAACC,CAAAA,CAAaC,CAAc,CAAA,CAAU,CAAA,CAAA,QAAA,CAE1C,EAAE,CAAA,CACEC,CAAAA,CAAuB,CAAA,CAAA,MAAA,CAAOF,CAAW,CAAA,CACzC,CAACG,CAAAA,CAAcC,CAAe,CAAA,CAAU,CAAA,CAAA,QAAA,CAAS,KAAK,CAAA,CAEtD,CAAA,CAAA,SAAA,CAAU,IAAM,CACpBF,CAAAA,CAAe,OAAA,CAAUF,EAC3B,CAAA,CAAG,CAACA,CAAW,CAAC,CAAA,CAEhB,IAAMK,CAAAA,CAAsB,cAAY,IAAM,CAC5CN,CAAAA,CAAgB,IAAI,CAAA,CACpBE,CAAAA,CAAe,EAAE,EACnB,CAAA,CAAG,EAAE,CAAA,CAECK,CAAAA,CAAwB,cAC5B,CAAC/E,CAAAA,CAAYgF,CAAAA,GAAkB,CAC7B,IAAMC,CAAAA,CACJZ,CAAAA,EAAc,gBAAA,GAAmBrE,CAAG,CAAA,EACpCkF,EAAAA,CAAmBlF,CAAAA,CAAKe,CAAO,CAAA,CACjC2D,CAAAA,CAAeO,CAAa,CAAA,CAC5BT,CAAAA,CAAgBQ,CAAK,EACvB,CAAA,CACA,CAACjE,CAAAA,CAASsD,CAAY,CACxB,CAAA,CAEMc,CAAAA,CAAiB,CAAA,CAAA,WAAA,CACrB,MAAOnF,CAAAA,EAAe,CACpB,GAAKqE,CAAAA,CAIL,CAAAQ,CAAAA,CAAgB,IAAI,CAAA,CACpB,GAAI,CACF,MAAMR,CAAAA,CAAa,SAAA,CAAUrE,CAAAA,CAAK2E,CAAAA,CAAe,OAAO,CAAA,CAClD,CAAA,CAAA,eAAA,CAAgBG,CAAa,EACrC,CAAA,MAASM,CAAAA,CAAO,CACdd,CAAAA,GAAUc,CAAAA,CAAOpF,CAAG,EACtB,CAAA,OAAE,CACA6E,CAAAA,CAAgB,KAAK,EACvB,EACF,CAAA,CACA,CAACC,CAAAA,CAAeT,CAAAA,CAAcC,CAAO,CACvC,CAAA,CAEA,OAAO,CACL,aAAA,CAAAQ,CAAAA,CACA,WAAA,CAAAL,CAAAA,CACA,YAAA,CAAAF,CAAAA,CACA,YAAA,CAAAK,CAAAA,CACA,QAAA,CAAAO,CAAAA,CACA,cAAA,CAAAT,CAAAA,CACA,eAAA,CAAAF,CAAAA,CACA,eAAA,CAAAO,CACF,CACF,CAEA,SAASG,EAAAA,CACPlF,CAAAA,CACAe,EACA,CACA,OAAOD,EAAAA,CAAwBC,CAAO,CAAA,CAAE,MAAA,CACtC,CAACsE,CAAAA,CAAO,CAAE,MAAA,CAAAlF,CAAO,CAAA,IACX,aAAA,GAAiBA,CAAAA,EAAU,OAAOA,CAAAA,CAAO,WAAA,EAAgB,QAAA,GAC3DkF,CAAAA,CAAMlF,CAAAA,CAAO,WAAW,CAAA,CAAKH,CAAAA,CAC3BG,CAAAA,CAAO,WACT,CAAA,CAAA,CAEKkF,CAAAA,CAAAA,CAET,EACF,CACF,CAEO,SAASC,EAAAA,CACdC,CAAAA,CACAd,CAAAA,CACAC,CAAAA,CACAc,CAAAA,CACA,CACA,GAAM,CAAE,QAAA,CAAAC,CAAAA,CAAU,KAAA,CAAAC,CAAM,CAAA,CAAIF,CAAAA,CACtBrF,CAAAA,CAASoF,CAAAA,CAAQ,MAAA,CAAO,SAAA,CACxBI,CAAAA,CAAOxF,CAAAA,CAAO,IAAA,CACd4C,CAAAA,CACJ,aAAA,GAAiB5C,CAAAA,EAAU,OAAOA,CAAAA,CAAO,WAAA,EAAgB,QAAA,CACrDA,EAAO,WAAA,CACPoF,CAAAA,CAAQ,MAAA,CAAO,EAAA,CACfK,CAAAA,CAAanB,CAAAA,CAAY1B,CAAW,CAAA,CACpC8C,CAAAA,CAAiBlF,CAAAA,EAAmB,CACxC+D,CAAAA,CAAgBoB,CAAAA,GAAa,CAC3B,GAAGA,CAAAA,CACH,CAAC/C,CAAW,EAAGpC,CACjB,CAAA,CAAE,EACJ,CAAA,CAEA,GAAIgF,CAAAA,EAAM,cAAA,CACR,OAAOA,CAAAA,CAAK,cAAA,CAAe,CACzB,KAAMJ,CAAAA,CACN,GAAA,CAAKA,CAAAA,CAAQ,GAAA,CAAI,QAAA,CACjB,KAAA,CAAOA,CAAAA,CAAQ,QAAA,EAAS,CACxB,UAAA,CAAAK,CAAAA,CACA,aAAA,CAAAC,CACF,CAAC,CAAA,CAGH,IAAME,CAAAA,CAAYC,EAAAA,CAAqBL,CAAAA,EAAM,IAAA,CAAMC,CAAU,CAAA,CAE7D,OAAI,OAAOA,CAAAA,EAAe,SAAA,CAEtBK,GAAAA,CAACR,CAAAA,CAAA,CACC,OAAA,CAASG,EACT,eAAA,CAAkBM,CAAAA,EAAuC,CACvDL,CAAAA,CAAcK,CAAAA,GAAY,IAAI,EAChC,CAAA,CACF,CAAA,CAKFD,GAAAA,CAACP,CAAAA,CAAA,CACC,IAAA,CAAMK,CAAAA,CACN,MACEJ,CAAAA,EAAM,eAAA,CACFA,CAAAA,CAAK,eAAA,CAAgBC,CAAAA,CAAYL,CAAO,CAAA,CACxCY,EAAAA,CAAsBP,CAAAA,CAAYG,CAAS,CAAA,CAEjD,QAAA,CAAWK,CAAAA,EAA+C,CACxD,IAAMC,CAAAA,CAAWD,CAAAA,CAAM,MAAA,CAAO,KAAA,CACxBE,CAAAA,CAAcX,CAAAA,EAAM,cAAA,CACtBA,CAAAA,CAAK,cAAA,CAAeU,CAAAA,CAAUd,CAAO,CAAA,CACrCgB,EAAAA,CAAwBF,CAAAA,CAAUN,CAAAA,CAAWH,CAAU,CAAA,CAC3DC,CAAAA,CAAcS,CAAW,EAC3B,CAAA,CACF,CAEJ,CAEA,SAASN,EAAAA,CACPQ,CAAAA,CACA7F,CAAAA,CACA,CACA,OAAI6F,CAAAA,GAAS,WAAa,OAAO7F,CAAAA,EAAU,QAAA,CAClC,QAAA,CAGL6F,CAAAA,GAAS,MAAA,EAAU7F,CAAAA,YAAiB,IAAA,CAC/B,gBAAA,CAGF,MACT,CAEA,SAASwF,EAAAA,CAAsBxF,CAAAA,CAAgBoF,CAAAA,CAAY,MAAA,CAAQ,CACjE,OAAIpF,CAAAA,EAAS,IAAA,CACJ,EAAA,CAGLA,CAAAA,YAAiB,IAAA,CACZoF,CAAAA,GAAc,gBAAA,CACjBpF,CAAAA,CAAM,WAAA,EAAY,CAAE,KAAA,CAAM,CAAA,CAAG,EAAE,CAAA,CAC/BA,CAAAA,CAAM,WAAA,EAAY,CAItB,OAAOA,CAAAA,EAAU,QAAA,EACjB,OAAOA,CAAAA,EAAU,QAAA,EACjB,OAAOA,CAAAA,EAAU,SAAA,EACjB,OAAOA,CAAAA,EAAU,QAAA,CAEV,MAAA,CAAOA,CAAK,CAAA,CAGd,EACT,CAEA,SAAS4F,EAAAA,CACP5F,CAAAA,CACAoF,CAAAA,CACAU,CAAAA,CACA,CACA,OAAIV,CAAAA,GAAc,QAAA,CACTpF,IAAU,EAAA,CAAK,IAAA,CAAO,MAAA,CAAOA,CAAK,CAAA,CAGvCoF,CAAAA,GAAc,gBAAA,CACXpF,CAAAA,CAGE8F,CAAAA,YAAyB,IAAA,CAAO,IAAI,IAAA,CAAK9F,CAAK,CAAA,CAAIA,CAAAA,CAFhD,IAAA,CAKJA,CACT,CChNA,SAAS+F,CAAAA,CAAK,CACZ,QAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CAAU,WAAA,CACV,GAAGC,CACL,CAAA,CAA8C,CAC5C,OACEZ,GAAAA,CAAC,KAAA,CAAA,CACC,aAAA,CAAY,MAAA,CACZ,SAAA,CAAU,OAAA,CACV,KAAA,CAAM,KAAA,CACN,MAAA,CAAO,KAAA,CACP,OAAA,CAASW,CAAAA,CACT,IAAA,CAAK,OACL,MAAA,CAAO,cAAA,CACP,WAAA,CAAY,GAAA,CACZ,aAAA,CAAc,OAAA,CACd,cAAA,CAAe,OAAA,CACd,GAAGC,CAAAA,CAEH,QAAA,CAAAF,CAAAA,CACH,CAEJ,CAEO,SAASG,EAAAA,CAA0BD,CAAAA,CAAkB,CAC1D,OACEE,IAAAA,CAACL,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAA,CAAAZ,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,QAAA,CAAS,CAAA,CACjBA,IAAC,MAAA,CAAA,CAAK,CAAA,CAAE,SAAA,CAAU,CAAA,CAClBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,SAAA,CAAU,CAAA,CAClBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,UAAA,CAAW,CAAA,CACnBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,UAAA,CAAW,CAAA,CACnBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,UAAA,CAAW,CAAA,CAAA,CACrB,CAEJ,CAiCO,SAASe,EAAAA,CAAUH,CAAAA,CAAkB,CAC1C,OACEZ,GAAAA,CAACS,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAAZ,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,gBAAA,CAAiB,CAAA,CAC3B,CAEJ,CAEO,SAASgB,GAAgBJ,CAAAA,CAAkB,CAChD,OACEZ,GAAAA,CAACS,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAAZ,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,cAAA,CAAe,CAAA,CACzB,CAEJ,CAEO,SAASiB,EAAAA,CAAgBL,CAAAA,CAAkB,CAChD,OACEZ,GAAAA,CAACS,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAAZ,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,gBAAA,CAAiB,CAAA,CAC3B,CAEJ,CAEO,SAASkB,EAAAA,CAAiBN,CAAAA,CAAkB,CACjD,OACEZ,GAAAA,CAACS,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAAZ,IAAC,MAAA,CAAA,CAAK,CAAA,CAAE,cAAA,CAAe,CAAA,CACzB,CAEJ,CAEO,SAASmB,EAAAA,CAAcP,CAAAA,CAAkB,CAC9C,OACEZ,GAAAA,CAACS,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAAZ,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,eAAA,CAAgB,CAAA,CAC1B,CAEJ,CAEO,SAASoB,EAAAA,CAAiBR,CAAAA,CAAkB,CACjD,OACEE,IAAAA,CAACL,EAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAA,CAAAZ,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,gBAAA,CAAiB,CAAA,CACzBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,gBAAA,CAAiB,CAAA,CAAA,CAC3B,CAEJ,CAEO,SAASqB,EAAAA,CAAkBT,CAAAA,CAAkB,CAClD,OACEE,IAAAA,CAACL,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAA,CAAAZ,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,eAAe,CAAA,CACvBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,eAAA,CAAgB,CAAA,CAAA,CAC1B,CAEJ,CAEO,SAASsB,EAAAA,CAAUV,CAAAA,CAAkB,CAC1C,OACEE,IAAAA,CAACL,EAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAA,CAAAZ,GAAAA,CAAC,QAAA,CAAA,CAAO,EAAA,CAAG,IAAA,CAAK,EAAA,CAAG,IAAA,CAAK,CAAA,CAAE,GAAA,CAAI,CAAA,CAC9BA,GAAAA,CAAC,QAAK,CAAA,CAAE,aAAA,CAAc,CAAA,CAAA,CACxB,CAEJ,CAEO,SAASuB,EAAAA,CAAaX,CAAAA,CAAkB,CAC7C,OACEE,IAAAA,CAACL,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAA,CAAAZ,GAAAA,CAAC,SAAA,CAAA,CAAQ,EAAA,CAAG,IAAA,CAAK,EAAA,CAAG,GAAA,CAAI,EAAA,CAAG,GAAA,CAAI,EAAA,CAAG,GAAA,CAAI,CAAA,CACtCA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,qCAAqC,CAAA,CAC7CA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,sCAAA,CAAuC,CAAA,CAAA,CACjD,CAEJ,CAEO,SAASwB,EAAAA,CAASZ,CAAAA,CAAkB,CACzC,OACEE,IAAAA,CAACL,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAA,CAAAZ,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,WAAA,CAAY,CAAA,CACpBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,YAAA,CAAa,CAAA,CACrBA,GAAAA,CAAC,QAAK,CAAA,CAAE,YAAA,CAAa,CAAA,CAAA,CACvB,CAEJ,CAEO,SAASyB,EAAAA,CAAab,CAAAA,CAAkB,CAC7C,OACEE,IAAAA,CAACL,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAA,CAAAZ,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,UAAA,CAAW,CAAA,CACnBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,eAAA,CAAgB,CAAA,CACxBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,UAAA,CAAW,GACrB,CAEJ,CAEO,SAAS0B,EAAAA,CAASd,CAAAA,CAAkB,CACzC,OACEE,IAAAA,CAACL,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAA,CAAAZ,GAAAA,CAAC,QAAK,CAAA,CAAE,2BAAA,CAA4B,CAAA,CACpCA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,WAAA,CAAY,CAAA,CAAA,CACtB,CAEJ,CAEO,SAAS2B,EAAAA,CAAQf,CAAAA,CAAkB,CACxC,OACEE,IAAAA,CAACL,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAA,CAAAZ,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,8CAAA,CAA+C,CAAA,CACvDA,GAAAA,CAAC,QAAA,CAAA,CAAO,EAAA,CAAG,IAAA,CAAK,EAAA,CAAG,IAAA,CAAK,CAAA,CAAE,GAAA,CAAI,CAAA,CAAA,CAChC,CAEJ,CAEO,SAAS4B,EAAAA,CAAWhB,CAAAA,CAAkB,CAC3C,OACEE,IAAAA,CAACL,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAA,CAAAZ,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,YAAA,CAAa,CAAA,CACrBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,8BAAA,CAA+B,CAAA,CACvCA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,+DAAA,CAAgE,CAAA,CACxEA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,4DAAA,CAA6D,CAAA,CAAA,CACvE,CAEJ,CAaO,SAAS6B,EAAAA,CAAUjB,CAAAA,CAAkB,CAC1C,OACEE,IAAAA,CAACL,EAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAA,CAAAZ,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,kBAAA,CAAmB,CAAA,CAC3BA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,0BAAA,CAA2B,CAAA,CAAA,CACrC,CAEJ,CAEO,SAAS8B,EAAAA,CAAelB,CAAAA,CAAkB,CAC/C,OACEE,IAAAA,CAACL,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAA,CAAAZ,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,cAAc,CAAA,CACtBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,eAAA,CAAgB,CAAA,CACxBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,cAAA,CAAe,CAAA,CACvBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,gBAAA,CAAiB,CAAA,CAAA,CAC3B,CAEJ,CAEO,SAAS+B,EAAAA,CAASnB,CAAAA,CAAkB,CACzC,OACEE,IAAAA,CAACL,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAA,CAAAZ,GAAAA,CAAC,QAAK,CAAA,CAAE,SAAA,CAAU,CAAA,CAClBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,UAAA,CAAW,CAAA,CACnBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,UAAA,CAAW,CAAA,CACnBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,UAAA,CAAW,CAAA,CACnBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,WAAA,CAAY,CAAA,CACpBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,WAAA,CAAY,CAAA,CAAA,CACtB,CAEJ,CAaO,SAASgC,EAAAA,CAAWpB,CAAAA,CAAkB,CAC3C,OACEE,IAAAA,CAACL,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAA,CAAAZ,GAAAA,CAAC,QAAA,CAAA,CAAO,EAAA,CAAG,IAAA,CAAK,EAAA,CAAG,IAAA,CAAK,CAAA,CAAE,GAAA,CAAI,CAAA,CAC9BA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,YAAA,CAAa,CAAA,CAAA,CACvB,CAEJ,CAEO,SAASiC,EAAAA,CAAarB,CAAAA,CAAkB,CAC7C,OACEE,IAAAA,CAACL,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAA,CAAAZ,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,cAAA,CAAe,CAAA,CACvBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,iBAAA,CAAkB,CAAA,CAAA,CAC5B,CAEJ,CA8BO,SAASkC,EAAAA,CAAMtB,CAAAA,CAAkB,CACtC,OACEE,IAAAA,CAACL,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAA,CAAAZ,GAAAA,CAAC,QAAK,CAAA,CAAE,YAAA,CAAa,CAAA,CACrBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,YAAA,CAAa,CAAA,CAAA,CACvB,CAEJ,CCxSO,SAASmC,EAAAA,CACd7C,CAAAA,CACA8C,CAAAA,CACAjH,GAAAA,CAIA,CACA,IAAMjB,CAAAA,CAASoF,CAAAA,CAAQ,MAAA,CAAO,SAAA,CACxBI,CAAAA,CAAOxF,CAAAA,CAAO,KACdQ,CAAAA,CAAQ4E,CAAAA,CAAQ,QAAA,EAAS,CACzB+C,CAAAA,CAAgBlH,GAAAA,EAAS,aAAA,EAAiB,KAAA,CAC1CmH,CAAAA,CAAsBD,CAAAA,EAAiBnI,CAAAA,CAAO,IAAA,CAChDqI,UAAAA,CAAWrI,CAAAA,CAAO,IAAA,CAAMoF,CAAO,CAAA,CAC/B,MAAA,CACEkD,CAAAA,CAA4BC,EAAAA,CAChCH,CACF,CAAA,CACMI,CAAAA,CAAmBC,EAAAA,CAA6B,CACpD,OAAA,CAAArD,CAAAA,CACA,yBAAA,CAA2BnE,GAAAA,EAAS,yBAAA,EAA6B,MACjE,KAAA,CAAAT,CACF,CAAC,CAAA,CAED,GAAIgF,CAAAA,EAAM,IAAA,GAAS,MAAA,EAAU,CAAC2C,CAAAA,CAC5B,OACEvB,IAAAA,CAAC,KAAA,CAAA,CACC,eAAA,CAAc,yBAAA,CACd,mBAAA,CAAmB4B,CAAAA,CACnB,SAAA,CAAWpF,CAAAA,CACTsF,EAAAA,CAAyBF,CAAgB,CAAA,CACzC,oDACF,CAAA,CAEA,QAAA,CAAA,CAAA1C,GAAAA,CAACsB,EAAAA,CAAA,CACC,SAAA,CAAWhE,CAAAA,CACT,WACA8E,CAAAA,EAAY,SAAA,EAAa,YAC3B,CAAA,CACF,CAAA,CACApC,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,kBAAA,CAAoB,QAAA,CAAA6C,EAAAA,CAAgBnI,CAAK,CAAA,CAAE,CAAA,CAAA,CAC7D,CAAA,CAIJ,IAAMoI,CAAAA,CAEJR,CAAAA,EAAwB,IAAA,EACxBA,CAAAA,GAAwB,EAAA,CACpBA,CAAAA,CACA5H,CAAAA,EAAS,IAAA,EAAQA,CAAAA,GAAU,EAAA,CAC3BsF,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAWoC,CAAAA,EAAY,WAAa,YAAA,CAAc,QAAA,CAAA,GAAA,CAAC,CAAA,CACzDW,EAAAA,CAAgBrI,CAAK,CAAA,CAE3B,OACEsF,GAAAA,CAAC,KAAA,CAAA,CACC,eAAA,CAAc,yBAAA,CACd,mBAAA,CAAmB0C,CAAAA,CACnB,SAAA,CAAWpF,EACTsF,EAAAA,CAAyBF,CAAgB,CAAA,CACzC,2BAAA,CACAF,CAAAA,EAA6B,gCAC/B,CAAA,CAEC,QAAA,CAAAM,CAAAA,CACH,CAEJ,CAEA,SAASH,EAAAA,CAAoC,CAC3C,QAAArD,CAAAA,CACA,yBAAA,CAAA0D,CAAAA,CACA,KAAA,CAAAtI,CACF,CAAA,CAI0B,CACxB,IAAMR,CAAAA,CAASoF,CAAAA,CAAQ,MAAA,CAAO,SAAA,CACxBoD,CAAAA,CACJ,OAAOxI,CAAAA,CAAO,IAAA,EAAM,QAAA,EAAa,UAAA,CAC7BA,CAAAA,CAAO,IAAA,CAAK,QAAA,CAAS,CACnB,GAAA,CAAKoF,CAAAA,CAAQ,GAAA,CAAI,QAAA,CACjB,KAAA,CAAA5E,CACF,CAAC,CAAA,CACDR,EAAO,IAAA,EAAM,QAAA,CAEnB,OAAIwI,CAAAA,GAIGM,CAAAA,CAA4B,MAAA,CAAS,UAAA,CAC9C,CAEA,SAASJ,EAAAA,CAAyBK,CAAAA,CAAiC,CACjE,OAAQA,CAAAA,EACN,KAAK,MAAA,CACH,OAAO,yCAAA,CACT,KAAK,MAAA,CACH,OAAO,qDAAA,CACT,KAAK,SAAA,CACH,OAAO,0CAAA,CAET,QACE,OAAO,uDACX,CACF,CAEA,SAASR,EAAAA,CAA6BK,CAAAA,CAA0B,CAC9D,OAAIA,CAAAA,EAAW,IAAA,CACN,KAAA,CAIDI,CAAA,CAAA,cAAA,CAAeJ,CAAO,CAAA,EAC5B,KAAA,CAAM,OAAA,CAAQA,CAAO,CAAA,EACrB,OAAOA,CAAAA,EAAY,QAEvB,CAEA,SAASD,EAAAA,CAAgBnI,CAAAA,CAAgB,CACvC,OAAI,OAAOA,CAAAA,EAAU,QAAA,CACZ,IAAI,IAAA,CAAKA,EAAQ,GAAI,CAAA,CAAE,cAAA,EAAe,CAG3C,OAAOA,CAAAA,EAAU,QAAA,EAAYA,CAAAA,CACxBA,CAAAA,CAGF,GACT,CAEA,SAASqI,EAAAA,CAAgBrI,CAAAA,CAAgB,CACvC,GAAIA,CAAAA,YAAiB,IAAA,CACnB,OAAOA,CAAAA,CAAM,cAAA,EAAe,CAG9B,GACE,OAAOA,CAAAA,EAAU,QAAA,EACjB,OAAOA,CAAAA,EAAU,QAAA,EACjB,OAAOA,CAAAA,EAAU,SAAA,EACjB,OAAOA,CAAAA,EAAU,QAAA,CAEjB,OAAO,MAAA,CAAOA,CAAK,CAAA,CAGrB,GAAI,CACF,OAAO,IAAA,CAAK,SAAA,CAAUA,CAAK,CAC7B,CAAA,KAAQ,CACN,OAAO,GACT,CACF,CClHA,SAASyI,EAAAA,CAA6B,CACpC,aAAA,CAAAC,CAAAA,CACA,UAAA,CAAA7D,CAAAA,CACA,cAAA,CAAA8D,GAAAA,CACA,WAAA,CAAA7E,CAAAA,CACA,WAAA,CAAA8E,CAAAA,CACA,2BAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,GAAAA,CACA,WAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,UAAA,CAAAC,CAAAA,CACA,mBAAA,CAAAC,CAAAA,CACA,UAAA,CAAAC,CAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,UAAA,CAAAC,CAAAA,CACA,WAAA,CAAAC,CAAAA,CACA,kBAAAC,CAAAA,CACA,GAAA,CAAAlK,CAAAA,CACA,cAAA,CAAA0E,CAAAA,CACA,YAAA,CAAArB,CAAAA,CACA,YAAA,CAAA8G,CAAAA,CACA,sBAAA,CAAAC,CACF,CAAA,CAAiC,CAC/B,GAAM,CAAE,QAAA,CAAA3E,CAAAA,CAAU,KAAA,CAAAC,CAAAA,CAAO,QAAA,CAAA2E,CAAAA,CAAU,SAAA,CAAAC,CAAAA,CAAW,QAAA,CAAAC,CAAS,CAAA,CAAI/E,CAAAA,CAE3D,OACEuB,IAAAA,CAAOyD,CAAA,CAAA,QAAA,CAAN,CACC,QAAA,CAAA,CAAAvE,GAAAA,CAACsE,CAAAA,CAAA,CACC,aAAA,CAAavK,CAAAA,CAAI,EAAA,CACjB,SAAA,CAAW6J,CAAAA,CAAsB,KAAA,CAAQH,CAAAA,CACzC,cAAA,CAAcK,CAAAA,EAAc,SAAA,EAAa,MAAA,CACzC,YAAA,CACEF,CAAAA,CAAsB,MAAA,CAAYC,CAAAA,CAAa,UAAA,CAAa,MAAA,CAE9D,QAAA,CAAUE,CAAAA,EAAc,CAACH,CAAAA,CAAsB,CAAA,CAAI,MAAA,CACnD,SAAA,CAAWtG,CAAAA,CACT,CAACsG,GAAuBJ,GAAAA,GAAkBQ,CAAW,CAAA,CACrD5G,CAAAA,CAAa,GAAA,CACbyG,CAAAA,EAAc,CAACD,CAAAA,EAAuBxG,CAAAA,CAAa,WAAA,CACnD2G,CAAAA,EAAc,CAACH,CAAAA,EAAuB,gBAAA,CACtCA,CAAAA,EAAuB,qBACzB,CAAA,CACA,OAAA,CAAUzD,CAAAA,EAAiD,CACrDyD,CAAAA,EAIWzD,CAAAA,CAAM,MAAA,EACT,OAAA,CAAQ,gCAAgC,CAAA,EAI/C4D,CAAAA,GAAa,CAAE,GAAA,CAAKC,CAAAA,CAAa,MAAOjK,CAAAA,CAAI,EAAG,CAAC,EACvD,CAAA,CACA,SAAA,CAAYoG,CAAAA,EAAoD,CAE5DyD,CAAAA,EACA,CAACG,CAAAA,EACA5D,CAAAA,CAAM,GAAA,GAAQ,OAAA,EAAWA,CAAAA,CAAM,GAAA,GAAQ,GAAA,EAK3BA,CAAAA,CAAM,MAAA,EACT,OAAA,CAAQ,gCAAgC,CAAA,GAIpDA,CAAAA,CAAM,cAAA,EAAe,CAChB4D,CAAAA,CAAW,CAAE,GAAA,CAAKC,CAAAA,CAAa,KAAA,CAAOjK,EAAI,EAAG,CAAC,CAAA,EACrD,CAAA,CACA,WAAA,CAAcoG,CAAAA,EAAgD,CACxDyD,CAAAA,EAIJN,CAAAA,EAAa,cAAA,GAAiB,CAC5B,GAAA,CAAKU,CAAAA,CACL,KAAA,CAAOjK,CAAAA,CAAI,EAAA,CACX,KAAA,CAAAoG,CACF,CAAC,EACH,CAAA,CACA,SAAA,CAAYA,CAAAA,EAAgD,CACtDyD,CAAAA,EAIJN,CAAAA,EAAa,YAAA,GAAe,CAC1B,GAAA,CAAKU,CAAAA,CACL,MAAOjK,CAAAA,CAAI,EAAA,CACX,KAAA,CAAAoG,CACF,CAAC,EACH,CAAA,CAEC,QAAA,CAAA+D,CAAAA,CAAa,GAAA,CAAKM,CAAAA,EAAS,CAC1B,IAAM9E,CAAAA,CACJ8E,EAAK,MAAA,CAAO,SAAA,CACZ,IAAA,CACIC,CAAAA,CAAcD,CAAAA,CAAK,UAAA,EAAW,CAC9B9J,EAAAA,CAAQ8J,CAAAA,CAAK,QAAA,EAAS,CACtBE,CAAAA,CAAStB,CAAAA,CAAc,GAAA,CAAIoB,EAAK,MAAA,CAAO,EAAE,CAAA,CACzCG,CAAAA,CAAoBD,CAAAA,EAAQ,iBAAA,EAAqB,KAAA,CACjDE,CAAAA,CAAoBF,CAAAA,EAAQ,iBAAA,EAAqB,KAAA,CACjDG,CAAAA,CAAkBH,CAAAA,EAAQ,eAAA,EAAmB,KAAA,CAC7CI,CAAAA,CAAiBJ,CAAAA,EAAQ,cAAA,EAAkB,KAAA,CAC3CK,CAAAA,CAAgBC,CAAAA,CAAgBtF,CAAAA,EAAM,MAAM,CAAA,CAC5CuF,CAAAA,CACJrB,CAAAA,EAAuB9J,EAAAA,CAAsBkK,CAAW,CAAA,CACpD,MAAA,CACA,OAAOtE,CAAAA,EAAM,aAAA,EAAkB,UAAA,CAC7BA,CAAAA,CAAK,aAAA,CAAc,CACjB,GAAA,CAAKsE,CAAAA,CACL,KAAA,CAAAtJ,EACF,CAAC,CAAA,CACDgF,CAAAA,EAAM,aAAA,CAEd,OACEM,GAAAA,CAACqE,CAAAA,CAAA,CAEC,SAAA,CAAW/G,CAAAA,CACT,UAAA,CACAG,EAAAA,CAAwB4F,GAAc,CAAA,CACtCjG,CAAAA,CAAa,UAAA,CACbsH,CAAAA,EAAQ,gBAAA,CACRA,CAAAA,EAAQ,cAAA,EAAkB,gCAC1BA,CAAAA,EAAQ,eAAA,CACRK,CAAAA,CACAG,CAAAA,CAAmBT,CAAW,CAAA,CAC9B/E,CAAAA,EAAM,mBAAA,CACNuF,CACF,CAAA,CACA,KAAA,CAAOP,CAAAA,EAAQ,SAAA,CAEf,QAAA,CAAA1E,GAAAA,CAAC,KAAA,CAAA,CACC,uBAAA,CACE2E,CAAAA,EAAqBC,CAAAA,EAAqBC,CAAAA,CACtC,MAAA,CACA,MAAA,CAEN,SAAA,CAAU,oBAAA,CAET,QAAA,CAAAf,CAAAA,EAAc,SAAA,CACZpE,CAAAA,EAAM,QAAA,GAAW+E,CAAW,GAC7BX,CAAAA,CAAa,QAAA,EACX9D,GAAAA,CAACoE,CAAAA,CAAA,CACC,SAAA,CAAW9G,CAAAA,CACT,aAAA,CACAoC,CAAAA,EAAM,IAAA,GAAS,SAAA,CACX,cAAA,CACAA,CAAAA,EAAM,IAAA,GAAS,OACb,cAAA,CACA,QACR,CAAA,CACF,CAAA,CAEAgE,CAAAA,EACFc,CAAAA,CAAK,MAAA,CAAO,EAAA,GAAO,YAAA,EACnBA,CAAAA,CAAK,MAAA,CAAO,EAAA,GAAO,YAAA,EACnBA,CAAAA,CAAK,OAAO,EAAA,GAAO,aAAA,CACnBnF,EAAAA,CAAmBoF,CAAAA,CAAajG,CAAAA,CAAaC,CAAAA,CAAgB,CAC3D,QAAA,CAAAe,CAAAA,CACA,KAAA,CAAAC,CACF,CAAC,CAAA,CAED0C,EAAAA,CAA2BsC,CAAAA,CAAarH,CAAAA,CAAc,CACpD,aAAA,CACEmG,CAAAA,CAA4B,GAAA,CAAIiB,CAAAA,CAAK,MAAA,CAAO,EAAE,CAAA,EAC9CG,CAAAA,EACAC,CAAAA,EACAC,CAAAA,EACAC,CAAAA,CACF,yBAAA,CACEvB,CAAAA,CAA4B,IAAIiB,CAAAA,CAAK,MAAA,CAAO,EAAE,CAAA,EAC9CG,CAAAA,EACAC,CAAAA,EACAC,CAAAA,EACAC,CACJ,CAAC,CAAA,CAEL,CAAA,CAAA,CA7DKN,CAAAA,CAAK,EA8DZ,CAEJ,CAAC,CAAA,CACH,CAAA,CACC,CAACZ,CAAAA,EAAuBK,CAAAA,EAAqBN,CAAAA,CAC5C3D,GAAAA,CAACsE,CAAAA,CAAA,CACC,QAAA,CAAAtE,GAAAA,CAACqE,CAAAA,CAAA,CACC,OAAA,CAAS,IAAA,CAAK,IAAI,CAAA,CAAGF,CAAsB,CAAA,CAC3C,SAAA,CAAW7G,CAAAA,CACT,UAAA,CACAG,EAAAA,CAAwB4F,GAAc,CAAA,CACtCjG,CAAAA,CAAa,UACf,CAAA,CAEC,QAAA,CAAA6G,CAAAA,CAAkB,CACjB,GAAA,CAAKD,CAAAA,CACL,KAAA,CAAOjK,CAAAA,CAAI,EAAA,CACX,QAAA,CAAUA,CACZ,CAAC,CAAA,CACH,CAAA,CACF,CAAA,CACE,IAAA,CAAA,CACN,CAEJ,CAEA,SAASoL,GACPC,CAAAA,CACAC,CAAAA,CACA,CACA,OACED,CAAAA,CAAS,GAAA,CAAI,EAAA,GAAOC,CAAAA,CAAK,GAAA,CAAI,EAAA,EAC7BD,CAAAA,CAAS,GAAA,CAAI,QAAA,GAAaC,CAAAA,CAAK,IAAI,QAAA,EACnCD,CAAAA,CAAS,QAAA,GAAaC,CAAAA,CAAK,QAAA,EAC3BD,CAAAA,CAAS,UAAA,GAAeC,CAAAA,CAAK,UAAA,EAC7BD,CAAAA,CAAS,mBAAA,GAAwBC,CAAAA,CAAK,mBAAA,EACtCD,CAAAA,CAAS,YAAcC,CAAAA,CAAK,SAAA,EAC5BD,CAAAA,CAAS,UAAA,GAAeC,CAAAA,CAAK,UAAA,EAC7BD,CAAAA,CAAS,WAAA,GAAgBC,CAAAA,CAAK,WAAA,EAC9BC,EAAAA,CAAiBF,CAAAA,CAAS,YAAA,CAAcC,CAAAA,CAAK,YAAY,CAAA,EACzDE,EAAAA,CAAiBH,CAAAA,CAAS,YAAA,CAAcC,CAAAA,CAAK,YAAY,CAAA,EACzDD,CAAAA,CAAS,UAAA,GAAeC,CAAAA,CAAK,UAAA,EAC7BG,EAAAA,CACEJ,CAAAA,CAAS,aAAA,CACTC,CAAAA,CAAK,cACLA,CAAAA,CAAK,YACP,CAAA,EACAD,CAAAA,CAAS,cAAA,GAAmBC,CAAAA,CAAK,cAAA,EACjCD,CAAAA,CAAS,iBAAA,GAAsBC,CAAAA,CAAK,iBAAA,EACpCD,CAAAA,CAAS,UAAA,GAAeC,CAAAA,CAAK,UAAA,EAC7BD,CAAAA,CAAS,WAAA,GAAgBC,CAAAA,CAAK,WAAA,EAC9BD,CAAAA,CAAS,eAAA,GAAoBC,CAAAA,CAAK,eAAA,EAClCD,CAAAA,CAAS,YAAA,GAAiBC,CAAAA,CAAK,YAAA,EAC/BD,CAAAA,CAAS,2BAAA,GAAgCC,CAAAA,CAAK,8BAC7C,CAACD,CAAAA,CAAS,SAAA,EAAaA,CAAAA,CAAS,WAAA,GAAgBC,CAAAA,CAAK,WAAA,CAE1D,CAEA,SAASC,EAAAA,CACPF,CAAAA,CACAC,CAAAA,CACA,CACA,OACED,CAAAA,EAAU,SAAA,GAAcC,CAAAA,EAAM,SAAA,EAC9BD,CAAAA,EAAU,QAAA,GAAaC,CAAAA,EAAM,QAEjC,CAEA,SAASE,EAAAA,CACPH,CAAAA,CACAC,CAAAA,CACA,CACA,OACED,CAAAA,CAAS,SAAWC,CAAAA,CAAK,MAAA,EACzBD,CAAAA,CAAS,KAAA,CAAM,CAACZ,CAAAA,CAAM3K,CAAAA,GAAU,CAC9B,IAAM4L,CAAAA,CAAWJ,CAAAA,CAAKxL,CAAK,CAAA,CAC3B,OAAO4L,CAAAA,EAAU,EAAA,GAAOjB,CAAAA,CAAK,EAAA,EAAMiB,CAAAA,CAAS,MAAA,CAAO,EAAA,GAAOjB,CAAAA,CAAK,MAAA,CAAO,EACxE,CAAC,CAEL,CAEA,SAASgB,EAAAA,CACPJ,CAAAA,CACAC,EACAK,CAAAA,CACA,CACA,OAAOA,CAAAA,CAAM,KAAA,CAAOlB,CAAAA,EAAS,CAC3B,IAAMmB,CAAAA,CAAiBP,CAAAA,CAAS,GAAA,CAAIZ,CAAAA,CAAK,MAAA,CAAO,EAAE,CAAA,CAC5CoB,CAAAA,CAAaP,CAAAA,CAAK,GAAA,CAAIb,CAAAA,CAAK,MAAA,CAAO,EAAE,CAAA,CAE1C,OACEmB,CAAAA,EAAgB,SAAA,GAAcC,CAAAA,EAAY,SAAA,EAC1CD,CAAAA,EAAgB,eAAA,GAAoBC,CAAAA,EAAY,iBAChDD,CAAAA,EAAgB,iBAAA,GAAsBC,CAAAA,EAAY,iBAAA,EAClDD,CAAAA,EAAgB,iBAAA,GAAsBC,CAAAA,EAAY,iBAAA,EAClDD,CAAAA,EAAgB,cAAA,GAAmBC,CAAAA,EAAY,cAAA,EAC/CD,CAAAA,EAAgB,eAAA,GAAoBC,CAAAA,EAAY,eAAA,EAChDD,CAAAA,EAAgB,eAAA,GAAoBC,CAAAA,EAAY,eAAA,EAChDD,CAAAA,EAAgB,gBAAA,GAAqBC,CAAAA,EAAY,gBAAA,EACjDC,EAAAA,CAAcF,CAAAA,EAAgB,SAAA,CAAWC,CAAAA,EAAY,SAAS,CAElE,CAAC,CACH,CAEA,SAASC,EAAAA,CACPT,CAAAA,CACAC,CAAAA,CACA,CACA,OACED,CAAAA,EAAU,KAAA,GAAUC,CAAAA,EAAM,KAAA,EAC1BD,CAAAA,EAAU,QAAA,GAAaC,CAAAA,EAAM,QAAA,EAC7BD,CAAAA,EAAU,QAAA,GAAaC,CAAAA,EAAM,QAAA,EAC7BD,CAAAA,EAAU,gBAAA,GAAqBC,CAAAA,EAAM,gBAAA,EACrCD,CAAAA,EAAU,cAAA,GAAmBC,CAAAA,EAAM,cAEvC,CAEO,IAAMS,GAAyBvB,CAAA,CAAA,IAAA,CACpCpB,EAAAA,CACAgC,EACF,ECvTA,SAASY,EAAAA,CAAgC,CACvC,cAAA,CAAA1C,CAAAA,CACA,cAAA,CAAA2C,CAAAA,CACA,kBAAA,CAAAC,GAAAA,CACA,sBAAA,CAAAC,EACA,oBAAA,CAAAC,CAAAA,CACA,MAAA,CAAAC,CAAAA,CACA,kBAAA,CAAAC,GAAAA,CACA,MAAA,CAAA3B,CAAAA,CACA,oBAAA,CAAA4B,CAAAA,CACA,aAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,YAAA,CAAArJ,CACF,CAAA,CAAoC,CAClC,IAAMsC,CAAAA,CAAQ0G,CAAAA,CAAO,MAAA,CAAO,SAAA,CACzB,IAAA,CACGM,CAAAA,CACJ,CAACN,CAAAA,CAAO,aAAA,EAAiBA,EAAO,UAAA,CAAW,MAAA,CAAS,CAAA,CAChDO,CAAAA,CAAUP,CAAAA,CAAO,MAAA,CAAO,UAAA,EAAW,CACnCQ,CAAAA,CAAeR,CAAAA,CAAO,MAAA,CAAO,WAAA,EAAY,CACzCS,CAAAA,CAAeb,CAAAA,CAAe,SAAA,CACjCc,CAAAA,EAASA,CAAAA,CAAK,EAAA,GAAOV,CAAAA,CAAO,MAAA,CAAO,EACtC,CAAA,CACMW,CAAAA,CACJb,CAAAA,EACA,CAACE,CAAAA,CAAO,aAAA,EACR,CAACM,CAAAA,EACD,CAAChC,CAAAA,CAAO,eAAA,EACR,CAACA,CAAAA,CAAO,cAAA,CACJK,CAAAA,CAAgBC,CAAAA,CAAgBtF,CAAAA,EAAM,MAAM,CAAA,CAElD,OACEoB,IAAAA,CAAC2F,CAAAA,CAAA,CAEC,OAAA,CAASL,CAAAA,CAAO,OAAA,CAChB,KAAA,CACEA,CAAAA,CAAO,aAAA,CAAgB,MAAA,CAAYM,CAAAA,CAAgB,UAAA,CAAa,KAAA,CAElE,aAAA,CAAaN,CAAAA,CAAO,aAAA,EAAiB,MAAA,CACrC,gBAAA,CAAgBA,CAAAA,CAAO,OAAO,EAAA,CAC9B,mBAAA,CAAmBA,CAAAA,CAAO,KAAA,CAC1B,eAAA,CACEM,CAAAA,CACI,gCAAA,CACA,0BAAA,CAEN,SAAA,CAAWpJ,CAAAA,CACT,mBAAA,CACAC,EAAAA,CAA0B8F,CAAc,CAAA,CACxCqD,GAAiBtJ,CAAAA,CAAa,iBAAA,CAC9BsH,CAAAA,CAAO,gBAAA,CACPA,CAAAA,CAAO,cAAA,EAAkB,+BAAA,CACzBA,CAAAA,CAAO,eAAA,CACPK,CAAAA,CACAiC,CAAAA,CAAqBZ,CAAAA,CAAO,UAAA,EAAY,EACxC1G,CAAAA,EAAM,eAAA,CACNA,CAAAA,EAAM,mBACR,CAAA,CACA,KAAA,CAAO,CAAE,GAAGA,CAAAA,EAAM,WAAA,CAAa,GAAGgF,CAAAA,CAAO,WAAY,CAAA,CACrD,WAAA,CACEkC,CAAAA,GAAiB,KAAA,CACb,WAAA,CACAA,CAAAA,GAAiB,MAAA,CACf,YAAA,CACAD,CAAAA,CACE,MAAA,CACA,MAAA,CAEV,SAAA,CAAWI,CAAAA,CACX,QAAA,CAAUA,CAAAA,CAAmB,CAAA,CAAI,MAAA,CACjC,YACEA,CAAAA,CACK5G,CAAAA,EAAiD,CAChD8F,GAAAA,CAAmB,OAAA,CAAUG,CAAAA,CAAO,MAAA,CAAO,EAAA,CAC3CjG,CAAAA,CAAM,YAAA,CAAa,aAAA,CAAgB,OACrC,CAAA,CACA,MAAA,CAEN,UAAA,CACE4G,CAAAA,CACK5G,CAAAA,EAAiD,CAChDA,CAAAA,CAAM,cAAA,EAAe,CACrBA,CAAAA,CAAM,YAAA,CAAa,UAAA,CAAa,OAClC,CAAA,CACA,MAAA,CAEN,MAAA,CACE4G,CAAAA,CACK5G,CAAAA,EAAiD,CAChDA,CAAAA,CAAM,cAAA,EAAe,CACrB,IAAMvC,CAAAA,CAAiBqI,GAAAA,CAAmB,OAAA,CAC1CA,GAAAA,CAAmB,OAAA,CAAU,IAAA,CACzBrI,CAAAA,EACF2I,CAAAA,CAAc3I,CAAAA,CAAgBwI,CAAAA,CAAO,MAAA,CAAO,EAAE,EAElD,CAAA,CACA,MAAA,CAEN,SAAA,CACEW,CAAAA,CACK5G,CAAAA,EAAqD,CACpD,GACE,CAACA,CAAAA,CAAM,MAAA,EACNA,CAAAA,CAAM,GAAA,GAAQ,WAAA,EAAeA,EAAM,GAAA,GAAQ,YAAA,CAE5C,OAGFA,CAAAA,CAAM,cAAA,EAAe,CACrB,IAAM8G,CAAAA,CAAUZ,GAAAA,CAAmB,MAAA,CAChCa,CAAAA,EACC,CAACpL,EAAAA,CAAkBoL,CAAAA,CAAK,OAAO,EAAE,CAAA,EACjCA,CAAAA,CAAK,MAAA,CAAO,EAAA,GAAO,YACvB,CAAA,CACMC,CAAAA,CAAeF,CAAAA,CAAQ,SAAA,CAC1BC,CAAAA,EAASA,CAAAA,CAAK,MAAA,CAAO,EAAA,GAAOd,EAAO,MAAA,CAAO,EAC7C,CAAA,CACMgB,CAAAA,CACJH,CAAAA,CACE9G,CAAAA,CAAM,GAAA,GAAQ,WAAA,CACVgH,CAAAA,CAAe,CAAA,CACfA,CAAAA,CAAe,CACrB,CAAA,CACEC,CAAAA,EACFb,CAAAA,CAAcH,CAAAA,CAAO,MAAA,CAAO,EAAA,CAAIgB,CAAAA,CAAO,MAAA,CAAO,EAAE,EAEpD,CAAA,CACA,MAAA,CAGL,QAAA,CAAA,CAAAhB,CAAAA,CAAO,aAAA,CAAgB,IAAA,CAAOO,CAAAA,CAC7B7F,IAAAA,CAAC,UACC,IAAA,CAAK,QAAA,CACL,SAAA,CAAWxD,CAAAA,CACT,4CAAA,CACA0J,CAAAA,CAAqBZ,CAAAA,CAAO,UAAA,EAAY,CAC1C,CAAA,CACA,OAAA,CAASA,CAAAA,CAAO,MAAA,CAAO,uBAAA,EAAwB,CAE/C,QAAA,CAAA,CAAApG,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,UAAA,CACb,QAAA,CAAAuC,UAAAA,CAAW6D,CAAAA,CAAO,MAAA,CAAO,SAAA,CAAU,MAAA,CAAQA,CAAAA,CAAO,UAAA,EAAY,EACjE,CAAA,CACCQ,CAAAA,CACC9F,IAAAA,CAAAuG,QAAAA,CAAA,CACE,QAAA,CAAA,CAAArH,GAAAA,CAACgB,EAAAA,CAAA,CACC,SAAA,CAAW1D,CAAAA,CACT,sCAAA,CACAsJ,CAAAA,GAAiB,MAAA,CAAS,UAAA,CAAa,YACzC,CAAA,CACF,CAAA,CACCZ,CAAAA,CAAe,MAAA,CAAS,CAAA,EAAKa,CAAAA,EAAgB,CAAA,CAC5C7G,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,+FAAA,CACb,QAAA,CAAA6G,CAAAA,CAAe,CAAA,CAClB,EACE,IAAA,CAAA,CACN,CAAA,CAEA7G,GAAAA,CAACiC,EAAAA,CAAA,CACC,SAAA,CAAW3E,CAAAA,CACT,iBAAA,CACAF,CAAAA,CAAa,cAAA,EAAkB,YACjC,CAAA,CACF,CAAA,CAAA,CAEJ,CAAA,CAEAmF,UAAAA,CAAW6D,CAAAA,CAAO,MAAA,CAAO,SAAA,CAAU,MAAA,CAAQA,CAAAA,CAAO,UAAA,EAAY,CAAA,CAG/DD,CAAAA,EACD,CAACC,CAAAA,CAAO,aAAA,EACRA,CAAAA,CAAO,MAAA,CAAO,YAAA,GACZpG,GAAAA,CAAC,KAAA,CAAA,CACC,aAAA,CAAe,IAAM,CACnB,IAAA,IAAWsH,CAAAA,IAAcC,EAAAA,CAAwBnB,CAAM,CAAA,CACrDI,CAAAA,CAAgBc,CAAAA,CAAW,MAAA,CAAO,EAAE,EAExC,CAAA,CACA,WAAA,CAAcnH,CAAAA,EAAU,CACtB,IAAA,IAAWmH,CAAAA,IAAcC,EAAAA,CAAwBnB,CAAM,CAAA,CACrDE,CAAAA,CACEgB,CAAAA,CAAW,MAAA,CAAO,EAAA,CAClBA,CAAAA,CAAW,OAAA,EACb,CAAA,CAEFlB,CAAAA,CAAO,gBAAA,EAAiB,CAAEjG,CAAK,EACjC,CAAA,CACA,YAAA,CAAeA,CAAAA,EAAU,CACvB,IAAA,IAAWmH,CAAAA,IAAcC,EAAAA,CAAwBnB,CAAM,CAAA,CACrDE,CAAAA,CACEgB,CAAAA,CAAW,MAAA,CAAO,EAAA,CAClBA,CAAAA,CAAW,OAAA,EACb,CAAA,CAEFlB,CAAAA,CAAO,gBAAA,EAAiB,CAAEjG,CAAK,EACjC,CAAA,CACA,SAAA,CAAW7C,EACT,8LAAA,CACAF,CAAAA,CAAa,YAAA,EACX,0DAAA,CACFgJ,CAAAA,CAAO,MAAA,CAAO,aAAA,EAAc,GACzBhJ,CAAAA,CAAa,kBAAA,EAAsB,mBAAA,CACxC,CAAA,CACF,CAAA,CACE,IAAA,CAAA,CAAA,CA3KCgJ,CAAAA,CAAO,EA4Kd,CAEJ,CAEA,SAASoB,EAAAA,CACPpC,CAAAA,CACAC,CAAAA,CACA,CACA,OACED,CAAAA,CAAS,MAAA,CAAO,EAAA,GAAOC,CAAAA,CAAK,MAAA,CAAO,EAAA,EACnCD,EAAS,MAAA,CAAO,MAAA,CAAO,EAAA,GAAOC,CAAAA,CAAK,MAAA,CAAO,MAAA,CAAO,EAAA,EACjDD,CAAAA,CAAS,MAAA,CAAO,MAAA,CAAO,SAAA,GAAcC,CAAAA,CAAK,MAAA,CAAO,MAAA,CAAO,WACxDD,CAAAA,CAAS,MAAA,CAAO,OAAA,GAAYC,CAAAA,CAAK,MAAA,CAAO,OAAA,EACxCD,CAAAA,CAAS,MAAA,CAAO,aAAA,GAAkBC,CAAAA,CAAK,MAAA,CAAO,aAAA,EAC9CoC,EAAAA,CAAerC,CAAAA,CAAS,OAAQC,CAAAA,CAAK,MAAM,CAAA,EAC3CD,CAAAA,CAAS,cAAA,GAAmBC,CAAAA,CAAK,cAAA,EACjCD,CAAAA,CAAS,sBAAA,GAA2BC,CAAAA,CAAK,sBAAA,EACzCD,CAAAA,CAAS,oBAAA,GAAyBC,CAAAA,CAAK,oBAAA,EACvCD,CAAAA,CAAS,SAAA,GAAcC,CAAAA,CAAK,SAAA,EAC5BD,CAAAA,CAAS,YAAA,GAAiBC,CAAAA,CAAK,YAAA,EAC/BD,CAAAA,CAAS,kBAAA,GAAuBC,CAAAA,CAAK,kBAAA,EACrCD,CAAAA,CAAS,oBAAA,GAAyBC,CAAAA,CAAK,sBACvCD,CAAAA,CAAS,aAAA,GAAkBC,CAAAA,CAAK,aAAA,EAChCD,CAAAA,CAAS,eAAA,GAAoBC,CAAAA,CAAK,eAAA,EAClCD,CAAAA,CAAS,cAAA,GAAmBC,CAAAA,CAAK,cAAA,EACjCqC,EAAAA,CAAYtC,CAAAA,CAAS,cAAA,CAAgBC,CAAAA,CAAK,cAAc,CAAA,EACxDsC,EAAAA,CACEvC,CAAAA,CAAS,kBAAA,CACTC,CAAAA,CAAK,kBACP,CAAA,EACAuC,EAAAA,CAAiBxC,CAAAA,CAAS,MAAA,CAAQC,CAAAA,CAAK,MAAM,CAEjD,CAEA,SAASkC,EAAAA,CAA+BnB,CAAAA,CAAgC,CACtE,OAAKA,CAAAA,CAAO,UAAA,CAAW,MAAA,CAIhBA,CAAAA,CACJ,cAAA,EAAe,CACf,MAAA,CAAQkB,CAAAA,EAAe,CAACA,CAAAA,CAAW,UAAA,CAAW,MAAM,CAAA,CAL9C,CAAClB,CAAM,CAMlB,CAEA,SAASqB,EAAAA,CACPrC,CAAAA,CACAC,CAAAA,CACA,CACA,OACED,CAAAA,CAAS,UAAA,CAAW,SAAWC,CAAAA,CAAK,UAAA,CAAW,MAAA,EAC/CD,CAAAA,CAAS,UAAA,CAAW,KAAA,CAClB,CAACgB,CAAAA,CAAQvM,CAAAA,GAAUwL,CAAAA,CAAK,UAAA,CAAWxL,CAAK,CAAA,EAAG,EAAA,GAAOuM,EAAO,EAC3D,CAEJ,CAEA,SAASsB,EAAAA,CAAYtC,CAAAA,CAAwBC,CAAAA,CAAoB,CAC/D,OACED,CAAAA,CAAS,MAAA,GAAWC,CAAAA,CAAK,MAAA,EACzBD,CAAAA,CAAS,MAAM,CAAC0B,CAAAA,CAAMjN,CAAAA,GAAU,CAC9B,IAAMgO,CAAAA,CAAWxC,CAAAA,CAAKxL,CAAK,CAAA,CAC3B,OAAOgO,CAAAA,EAAU,EAAA,GAAOf,CAAAA,CAAK,EAAA,EAAMe,CAAAA,CAAS,IAAA,GAASf,CAAAA,CAAK,IAC5D,CAAC,CAEL,CAEA,SAASa,EAAAA,CACPvC,CAAAA,CACAC,CAAAA,CACA,CACA,OACED,CAAAA,CAAS,MAAA,GAAWC,CAAAA,CAAK,QACzBD,CAAAA,CAAS,KAAA,CAAM,CAACgB,CAAAA,CAAQvM,CAAAA,GAAUwL,CAAAA,CAAKxL,CAAK,CAAA,EAAG,EAAA,GAAOuM,CAAAA,CAAO,EAAE,CAEnE,CAEA,SAASwB,EAAAA,CACPxC,CAAAA,CACAC,CAAAA,CACA,CACA,OACED,CAAAA,CAAS,SAAA,GAAcC,CAAAA,CAAK,SAAA,EAC5BD,CAAAA,CAAS,cAAA,GAAmBC,CAAAA,CAAK,cAAA,EACjCD,CAAAA,CAAS,eAAA,GAAoBC,CAAAA,CAAK,iBAClCD,CAAAA,CAAS,eAAA,GAAoBC,CAAAA,CAAK,eAAA,EAClCD,CAAAA,CAAS,gBAAA,GAAqBC,CAAAA,CAAK,gBAAA,EACnCD,CAAAA,CAAS,WAAA,EAAa,KAAA,GAAUC,CAAAA,CAAK,WAAA,EAAa,KAAA,EAClDD,CAAAA,CAAS,WAAA,EAAa,QAAA,GAAaC,CAAAA,CAAK,WAAA,EAAa,QAAA,EACrDD,CAAAA,CAAS,WAAA,EAAa,QAAA,GAAaC,CAAAA,CAAK,WAAA,EAAa,QAAA,EACrDD,CAAAA,CAAS,WAAA,EAAa,gBAAA,GACpBC,CAAAA,CAAK,aAAa,gBAAA,EACpBD,CAAAA,CAAS,WAAA,EAAa,cAAA,GAAmBC,CAAAA,CAAK,WAAA,EAAa,cAE/D,CAEO,IAAMyC,EAAAA,CAA4BC,CAAA,CAAA,IAAA,CACvChC,EAAAA,CACAyB,EACF,ECnQO,SAASQ,EAAAA,CAA2B,CACzC,iBAAA,CAAAC,CAAAA,CACA,cAAA7E,CAAAA,CACA,cAAA,CAAAC,GAAAA,CACA,cAAA,CAAA2C,CAAAA,CAAiB,EAAC,CAClB,mBAAA,CAAAkC,CAAAA,CACA,WAAA,CAAA5E,CAAAA,CACA,kBAAA,CAAA2C,CAAAA,CACA,WAAA,CAAAzH,CAAAA,CACA,YAAA,CAAAF,CAAAA,CACA,SAAA,CAAA6J,CAAAA,CACA,sBAAA,CAAAjC,CAAAA,CACA,oBAAA,CAAAC,CAAAA,CACA,2BAAA,CAAA5C,CAAAA,CACA,YAAA,CAAA6E,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,EACA,eAAA,CAAA9E,CAAAA,CACA,kBAAA,CAAA+E,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,UAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,UAAA,CAAA3E,CAAAA,CACA,oBAAA,CAAAuC,CAAAA,CACA,YAAA,CAAAqC,CAAAA,CACA,iBAAA,CAAA1E,CAAAA,CACA,aAAA,CAAAsC,CAAAA,CACA,eAAA,CAAAC,CAAAA,CACA,cAAA,CAAAoC,CAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,UAAA,CAAAC,EAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,YAAAC,CAAAA,CACA,cAAA,CAAAvK,CAAAA,CACA,0BAAA,CAAAwK,CAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,WAAA,CAAAC,CAAAA,CACA,KAAA,CAAAzN,CAAAA,CACA,cAAA,CAAA0N,EAAAA,CACA,uBAAA,CAAAC,EAAAA,CACA,KAAA,CAAAC,EAAAA,CACA,SAAA,CAAAC,EAAAA,CACA,SAAA,CAAAlF,CAAAA,CACA,WAAA,CAAAmF,EAAAA,CAAc,OAAA,CACd,SAAA,CAAA/C,EAAAA,CACA,WAAA,CAAAgD,EAAAA,CACA,QAAA,CAAAnF,CAAAA,CACA,wBAAAoF,EAAAA,CACA,YAAA,CAAAtM,CAAAA,CACA,oBAAA,CAAAuM,EAAAA,CACA,iBAAA,CAAAC,EAAAA,CACA,sBAAA,CAAAzF,CAAAA,CACA,kBAAA,CAAA0F,EACF,CAAA,CAAoC,CAClC,IAAMC,EAAAA,CACJpO,CAAAA,CAAM,wBAAA,EAAyB,CAC3B,IAAA,CACAA,CAAAA,CAAM,yBAAA,EAA0B,CAC9B,eAAA,CACA,KAAA,CAER,OACEsE,GAAAA,CAAC,KAAA,CAAA,CACC,eAAA,CAAc,wBAAA,CACd,SAAA,CAAW1C,EACT,0DAAA,CACA+K,CAAAA,CAAW,8BAAA,CAAiC,QAAA,CAC5C/E,CAAAA,EAAa,UAAA,GACVlG,CAAAA,CAAa,UAAA,EAAc,0BAAA,CAChC,CAAA,CAEA,QAAA,CAAA4C,GAAAA,CAAC,KAAA,CAAA,CACC,GAAA,CAAK0J,EAAAA,CACL,SAAA,CAAWpM,CAAAA,CAAG+K,CAAAA,CAAW,8BAAA,CAAiC,QAAQ,CAAA,CAElE,QAAA,CAAAvH,IAAAA,CAACgI,EAAAA,CAAA,CACC,SAAA,CAAWxL,CAAAA,CACT,mBAAA,CACA+K,CAAAA,CAAW,gBAAA,CAAmB,SAC9BjL,CAAAA,CAAa,cAAA,CACbA,CAAAA,CAAa,eAAA,CACbiM,EACF,CAAA,CAEA,QAAA,CAAA,CAAArJ,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,YAAA,CACb,QAAA,CAAAc,IAAAA,CAACwI,EAAAA,CAAA,CACC,SAAA,CAAWhM,CAAAA,CACT,qDAAA,CACA8L,EACF,CAAA,CACA,KAAA,CAAO,CACL,QAAA,CAAUX,CAAAA,GAAe,MAAA,EAASL,CAAAA,EAAgB,MAAA,CAClD,KAAA,CAAOK,CAAAA,GAAe,KAAA,CAAQ/M,EAAM,YAAA,EAAa,CAAI,MACvD,CAAA,CAEA,QAAA,CAAA,CAAAsE,GAAAA,CAAC,UAAA,CAAA,CACE,QAAA,CAAAtE,CAAAA,CAAM,qBAAA,EAAsB,CAAE,GAAA,CAAKxB,CAAAA,EAAW,CAC7C,IAAMwK,CAAAA,CAAS4D,CAAAA,CAAgBpO,CAAAA,CAAO,EAAE,CAAA,CACxC,OAAO8F,GAAAA,CAAC,KAAA,CAAA,CAAoB,KAAA,CAAO0E,CAAAA,CAAO,QAAA,CAAA,CAAzBxK,CAAAA,CAAO,EAA4B,CACtD,CAAC,EACH,CAAA,CACA8F,GAAAA,CAACyJ,EAAAA,CAAA,CACC,SAAA,CAAWnM,CAAAA,CACT4L,CAAAA,CACK9L,CAAAA,CAAa,iBAAA,EACd,iCAAA,CACA,MACN,CAAA,CAEC,QAAA,CAAA1B,CAAAA,CAAM,iBAAgB,CAAE,GAAA,CAAKqO,CAAAA,EAC5B/J,GAAAA,CAACsE,CAAAA,CAAA,CACE,QAAA,CAAAyF,CAAAA,CAAY,OAAA,CAAQ,GAAA,CAAK3D,CAAAA,EACxBpG,GAAAA,CAAC8H,EAAAA,CAAA,CAEC,eAAgBzE,GAAAA,CAChB,cAAA,CAAgB2C,CAAAA,CAChB,kBAAA,CAAoBC,CAAAA,CACpB,sBAAA,CAAwBC,CAAAA,CACxB,oBAAA,CAAsBC,CAAAA,CACtB,MAAA,CAAQC,CAAAA,CACR,kBAAA,CAAoB2D,CAAAA,CAAY,OAAA,CAChC,MAAA,CAAQC,EAAAA,CAAgB5D,CAAAA,CAAQkC,CAAe,CAAA,CAC/C,oBAAA,CAAsBhC,CAAAA,CACtB,aAAA,CAAeC,CAAAA,CACf,eAAA,CAAiBC,CAAAA,CACjB,cAAA,CACEJ,CAAAA,CAAO,MAAA,CAAO,EAAA,GAAO,YAAA,CACjB0D,GACA,MAAA,CAEN,SAAA,CAAWrD,EAAAA,CACX,YAAA,CAAcrJ,CAAAA,CAAAA,CAlBTgJ,CAAAA,CAAO,EAmBd,CACD,CAAA,CAAA,CAvBY2D,CAAAA,CAAY,EAwB3B,CACD,CAAA,CACH,CAAA,CACA/J,GAAAA,CAACuJ,EAAAA,CAAA,CACE,QAAA,CAAAZ,CAAAA,CAAa,MAAA,CACZ7H,IAAAA,CAAAuG,QAAAA,CAAA,CACG,QAAA,CAAA,CAAAuC,EAAAA,CAAoB,CAAA,CACnB5J,GAAAA,CAACsE,CAAAA,CAAA,CAAS,aAAA,CAAY,OACpB,QAAA,CAAAtE,GAAAA,CAACqE,CAAAA,CAAA,CACC,OAAA,CAAS,IAAA,CAAK,GAAA,CAAI,CAAA,CAAGF,CAAsB,CAAA,CAC3C,SAAA,CAAU,gBAAA,CACV,KAAA,CAAO,CAAE,MAAA,CAAQyF,EAAkB,CAAA,CACrC,CAAA,CACF,CAAA,CACE,IAAA,CACHf,CAAAA,CAAa,GAAA,CAAI,CAAC,CAAE,GAAA,CAAA9O,CAAAA,CAAK,QAAA,CAAAkQ,CAAS,CAAA,GAAM,CACvC,IAAMjG,CAAAA,CAAcjK,CAAAA,CAAI,QAAA,CAClB6J,CAAAA,CACJ9J,EAAAA,CAAsBkK,CAAW,CAAA,CAC7BF,CAAAA,CAAeF,CAAAA,CACjB,CAAE,SAAA,CAAW,IAAK,CAAA,CAClB2E,CAAAA,GAAqBvE,CAAAA,CAAaiG,CAAQ,CAAA,CACxCC,EAAAA,CACJ,OAAOpG,CAAAA,EAAiB,SAAA,CACpB,CAAE,SAAA,CAAWA,CAAa,CAAA,CAC1BA,CAAAA,CACAL,EAAAA,CAAcG,CAAAA,CAChB,KAAA,CACCN,CAAAA,EAAa,kBAAkBU,CAAW,CAAA,EAAK,KAAA,CAEpD,OACEhE,GAAAA,CAAC8F,EAAAA,CAAA,CAEC,aAAA,CAAe1C,CAAAA,CACf,UAAA,CAAY6E,CAAAA,CACZ,cAAA,CAAgB5E,GAAAA,CAChB,WAAA,CAAa7E,CAAAA,CACb,WAAA,CAAa8E,CAAAA,CACb,2BAAA,CAA6BC,CAAAA,CAC7B,eAAA,CAAiBC,CAAAA,CACjB,WAAA,CAAaC,EAAAA,CACb,SAAA,CAAWnF,CAAAA,GAAiBvE,CAAAA,CAAI,EAAA,CAChC,UAAA,CAAYA,CAAAA,CAAI,aAAA,GAChB,mBAAA,CAAqB6J,CAAAA,CACrB,UAAA,CAAY7J,CAAAA,CAAI,aAAA,EAAc,CAC9B,YAAA,CAAcmQ,EAAAA,CACd,UAAA,CAAYnG,CAAAA,CACZ,WAAA,CAAaC,CAAAA,CACb,iBAAA,CAAmBC,CAAAA,CACnB,GAAA,CAAKlK,CAAAA,CACL,QAAA,CAAUkQ,CAAAA,CACV,cAAA,CAAgBxL,CAAAA,CAChB,YAAA,CAAcrB,CAAAA,CACd,YAAA,CAAcrD,CAAAA,CAAI,eAAA,EAAgB,CAClC,sBAAA,CAAwBoK,CAAAA,CAAAA,CAtBnBpK,CAAAA,CAAI,EAuBX,CAEJ,CAAC,CAAA,CACA4P,EAAAA,CAAuB,CAAA,CACtB3J,GAAAA,CAACsE,CAAAA,CAAA,CAAS,aAAA,CAAY,MAAA,CACpB,QAAA,CAAAtE,GAAAA,CAACqE,CAAAA,CAAA,CACC,OAAA,CAAS,IAAA,CAAK,GAAA,CAAI,CAAA,CAAGF,CAAsB,CAAA,CAC3C,SAAA,CAAU,gBAAA,CACV,KAAA,CAAO,CAAE,MAAA,CAAQwF,EAAqB,CAAA,CACxC,CAAA,CACF,CAAA,CACE,IAAA,CAAA,CACN,CAAA,CAEA3J,IAACsE,CAAAA,CAAA,CACC,QAAA,CAAAtE,GAAAA,CAACqE,CAAAA,CAAA,CACC,OAAA,CAAS,IAAA,CAAK,GAAA,CAAI,CAAA,CAAGF,CAAsB,CAAA,CAC3C,SAAA,CAAU,aAAA,CAEV,SAAAnE,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,gEAAA,CACZ,QAAA,CAAAmI,CAAAA,EACCnI,GAAAA,CAACkI,CAAAA,CAAA,CACC,KAAA,CACEQ,CAAAA,CACIE,CAAAA,CAAe,mBAAA,CACfA,CAAAA,CAAe,YAErB,WAAA,CACEF,CAAAA,CACIE,CAAAA,CAAe,yBAAA,CACfA,CAAAA,CAAe,iBAAA,CAEvB,CAAA,CAEJ,CAAA,CACF,CAAA,CACF,CAAA,CAEJ,CAAA,CACCO,CAAAA,CAAY,MAAA,CACXnJ,GAAAA,CAACwJ,EAAAA,CAAA,CACE,QAAA,CAAAL,CAAAA,CAAY,GAAA,CAAKgB,CAAAA,EAChBnK,GAAAA,CAACsE,CAAAA,CAAA,CACE,QAAA,CAAAuF,EAAAA,CAAmB,GAAA,CAAI,CAAC3P,CAAAA,CAAQL,CAAAA,GAAU,CACzC,IAAMiJ,CAAAA,CACJqH,CAAAA,CAAW,KAAA,CAAMjQ,CAAAA,CAAO,EAAE,CAAA,GACzBL,CAAAA,GAAU,CAAA,CAAIsQ,CAAAA,CAAW,KAAA,CAAQ,IAAA,CAAA,CACpC,OACEnK,GAAAA,CAACqE,CAAAA,CAAA,CAEC,SAAA,CAAW/G,CAAAA,CACT,sBAAA,CACAF,CAAAA,CAAa,UACf,CAAA,CAEC,QAAA,CAAA,OAAO0F,CAAAA,EAAY,UAAA,CAChBA,CAAAA,CAAQ,CACN,IAAA,CAAMpH,CAAAA,CACH,mBAAA,EAAoB,CACpB,KAAK,GAAA,CAAK3B,CAAAA,EAAQA,CAAAA,CAAI,QAAQ,CAAA,CACjC,QAAA,CAAUG,CAAAA,CAAO,EACnB,CAAC,CAAA,CACD4I,CAAAA,CAAAA,CAbC,CAAA,EAAGqH,CAAAA,CAAW,GAAG,CAAA,CAAA,EAAIjQ,CAAAA,CAAO,EAAE,CAAA,CAcrC,CAEJ,CAAC,CAAA,CAAA,CAvBYiQ,CAAAA,CAAW,GAwB1B,CACD,CAAA,CACH,CAAA,CACE,IAAA,CAAA,CACN,CAAA,CACF,CAAA,CAEC3B,CAAAA,EAAgB,SACjBG,CAAAA,CAAa,MAAA,EACb,CAACM,CAAAA,CACCjJ,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,WAAA,CACb,QAAA,CAAAA,GAAAA,CAAC,KAAA,CAAA,CAAI,GAAA,CAAKgJ,CAAAA,CAAa,SAAA,CAAU,YAAA,CAAa,CAAA,CAChD,CAAA,CACE,IAAA,CACJhJ,GAAAA,CAAC+I,CAAAA,CAAA,CAAU,WAAA,CAAY,YAAA,CAAa,CAAA,CAAA,CACtC,CAAA,CACF,CAAA,CACF,CAEJ,CAEA,SAASiB,EAAAA,CACP5D,EACAkC,CAAAA,CACA,CACA,IAAM8B,CAAAA,CAAe9B,CAAAA,CAAgBlC,CAAAA,CAAO,MAAA,CAAO,EAAE,CAAA,CACrD,GAAIA,CAAAA,CAAO,aAAA,EAAiB,CAACA,CAAAA,CAAO,UAAA,CAAW,MAAA,CAC7C,OAAOgE,CAAAA,CAGT,IAAMC,CAAAA,CAAcjE,CAAAA,CACjB,cAAA,EAAe,CACf,MAAA,CAAQkB,CAAAA,EAAe,CAACA,CAAAA,CAAW,UAAA,CAAW,MAAM,CAAA,CACpD,IAAKA,CAAAA,EAAegB,CAAAA,CAAgBhB,CAAAA,CAAW,MAAA,CAAO,EAAE,CAAC,CAAA,CACtDgD,CAAAA,CAAYD,CAAAA,CAAY,CAAC,CAAA,EAAG,SAAA,CAElC,GACE,CAACC,CAAAA,EACD,CAACD,CAAAA,CAAY,KAAA,CAAO3F,CAAAA,EAAWA,CAAAA,CAAO,SAAA,GAAc4F,CAAS,CAAA,CAE7D,OAAOF,CAAAA,CAGT,IAAMG,CAAAA,CACJD,CAAAA,GAAc,MAAA,CAASD,CAAAA,CAAY,CAAC,CAAA,CAAIA,CAAAA,CAAY,EAAA,CAAG,EAAE,CAAA,CAE3D,OAAO,CACL,GAAGD,CAAAA,CACH,SAAA,CAAAE,CAAAA,CACA,WAAA,CAAaC,CAAAA,EAAY,WAAA,CACrB,CACE,gBAAA,CAAkBA,CAAAA,CAAW,WAAA,CAAY,gBAAA,CACzC,cAAA,CAAgBA,CAAAA,CAAW,WAAA,CAAY,cACzC,CAAA,CACA,MAAA,CACJ,eAAA,CAAiBA,CAAAA,EAAY,eAC/B,CACF","file":"chunk-ZGXFBFNQ.js","sourcesContent":["import type {\n Column,\n ColumnDef,\n ColumnPinningState,\n Row,\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableColumnFilterOption,\n DataTableCsvExportOptions,\n DataTableCsvExportScope,\n DataTableDensity,\n DataTableLabels,\n} from \"../types\";\nimport type { DataTableUiClassNames } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nconst DATA_TABLE_LOADING_ROW = Symbol(\"data-table-loading-row\");\n\nexport const UTILITY_COLUMN_SIZE = 50;\n\ntype DataTableLoadingRow = {\n [DATA_TABLE_LOADING_ROW]: true;\n index: number;\n};\n\nexport function createDataTableLoadingRows(count: number) {\n return Array.from({ length: count }, (_, index) => {\n return {\n [DATA_TABLE_LOADING_ROW]: true,\n index,\n } as DataTableLoadingRow as TData;\n });\n}\n\nexport function isDataTableLoadingRow(\n row: unknown,\n): row is DataTableLoadingRow {\n return Boolean(\n row &&\n typeof row === \"object\" &&\n DATA_TABLE_LOADING_ROW in (row as Record),\n );\n}\n\nexport function getDataTableLoadingRowId(index: number) {\n return `__loading__${index}`;\n}\n\nexport function getConfiguredColumnMinWidth(\n column: DataTableColumnDef,\n) {\n if (typeof column.meta?.minWidth === \"number\") {\n return column.meta.minWidth;\n }\n\n if (Object.prototype.hasOwnProperty.call(column, \"minSize\")) {\n const minSize = (column as { minSize?: unknown }).minSize;\n\n if (typeof minSize === \"number\") {\n return minSize;\n }\n }\n\n return undefined;\n}\n\nexport function decorateFilterableColumn(\n column: DataTableColumnDef,\n): ColumnDef {\n if (\"columns\" in column && Array.isArray(column.columns)) {\n return {\n ...column,\n columns: column.columns.map((childColumn) =>\n decorateFilterableColumn(\n childColumn as DataTableColumnDef,\n ),\n ),\n };\n }\n\n const filter = column.meta?.filter;\n if (!filter || column.filterFn) {\n return column;\n }\n\n return {\n ...column,\n filterFn: (row, columnId, filterValue) => {\n if (!hasFilterValue(filterValue)) {\n return true;\n }\n\n const value = row.getValue(columnId);\n const optionValue =\n filter.getOptionValue?.(value, row.original) ??\n normalizeFilterValue(value);\n\n if (filter.type === \"multi\") {\n return Array.isArray(filterValue)\n ? filterValue.map(String).includes(optionValue)\n : true;\n }\n\n if (filter.type === \"select\") {\n return optionValue === String(filterValue);\n }\n\n return normalizeFilterValue(value)\n .toLowerCase()\n .includes(String(filterValue).toLowerCase());\n },\n };\n}\n\nexport type DataTableLeafColumn = {\n column: DataTableColumnDef;\n index: number;\n};\n\nexport function getDataTableLeafColumns(\n columns: Array>,\n) {\n const leaves: Array> = [];\n\n const visit = (currentColumns: Array>) => {\n currentColumns.forEach((column, index) => {\n if (\"columns\" in column && column.columns?.length) {\n visit(column.columns);\n return;\n }\n\n leaves.push({ column, index });\n });\n };\n\n visit(columns);\n return leaves;\n}\n\nexport function normalizeColumnFilterOptions(\n options: Array,\n) {\n return options.map((option) =>\n typeof option === \"string\"\n ? { label: startCase(option), value: option }\n : option,\n );\n}\n\nexport function normalizeFilterValue(value: unknown) {\n if (value == null) {\n return \"\";\n }\n\n if (value instanceof Date) {\n return value.toISOString();\n }\n\n if (typeof value === \"object\") {\n try {\n return JSON.stringify(value);\n } catch {\n return \"\";\n }\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n typeof value === \"bigint\" ||\n typeof value === \"symbol\"\n ) {\n return String(value);\n }\n\n return \"\";\n}\n\nexport function hasFilterValue(value: unknown) {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n\n return value !== undefined && value !== null && value !== \"\";\n}\n\nexport function dataTableGlobalFilterFn(\n row: Row,\n columnId: string,\n filterValue: unknown,\n) {\n const normalizedQuery = normalizeFilterValue(filterValue)\n .trim()\n .toLowerCase();\n\n if (!normalizedQuery) {\n return true;\n }\n\n return normalizeFilterValue(row.getValue(columnId))\n .toLowerCase()\n .includes(normalizedQuery);\n}\n\nexport async function exportDataTableCsv({\n csvExport,\n table,\n}: {\n csvExport: boolean | DataTableCsvExportOptions;\n table: TanStackTable;\n labels: DataTableLabels;\n}) {\n if (csvExport === false) {\n return;\n }\n\n const options: DataTableCsvExportOptions =\n csvExport === true ? {} : csvExport;\n const filename = options.filename ?? \"data-table.csv\";\n const scope = options.scope ?? \"filtered\";\n const exportColumnIds = options.columns\n ? new Set(options.columns)\n : undefined;\n const columns = table\n .getVisibleLeafColumns()\n .filter(\n (column) =>\n !isUtilityColumnId(column.id) &&\n column.id !== \"__spacer__\" &&\n (!exportColumnIds || exportColumnIds.has(column.id)),\n );\n const rows = getCsvExportRows(table, scope);\n const csvRows: Array> = [];\n\n if (options.includeHeaders ?? true) {\n csvRows.push(\n columns.map((column) =>\n typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : startCase(column.id),\n ),\n );\n }\n\n for (const row of rows) {\n csvRows.push(\n columns.map((column) => {\n const value = row.getValue(column.id);\n return options.getCellValue\n ? options.getCellValue({\n row: row.original,\n rowId: row.id,\n columnId: column.id,\n value,\n })\n : value;\n }),\n );\n }\n\n const lineEnding = options.lineEnding ?? \"\\r\\n\";\n const escapeFormulaValues = options.escapeFormulaValues ?? true;\n const csv = csvRows\n .map((row) =>\n row\n .map((value) => escapeCsvCell(value, escapeFormulaValues))\n .join(\",\"),\n )\n .join(lineEnding);\n\n if (options.onExport) {\n await options.onExport({\n csv,\n filename,\n rows: rows.map((row) => row.original),\n scope,\n });\n return;\n }\n\n if (typeof window === \"undefined\") {\n return;\n }\n\n const blob = new Blob([csv], { type: \"text/csv;charset=utf-8\" });\n const url = window.URL.createObjectURL(blob);\n const anchor = window.document.createElement(\"a\");\n anchor.href = url;\n anchor.download = filename;\n anchor.click();\n window.URL.revokeObjectURL(url);\n}\n\nfunction getCsvExportRows(\n table: TanStackTable,\n scope: DataTableCsvExportScope,\n) {\n switch (scope) {\n case \"page\":\n return table.getRowModel().rows;\n case \"selected\":\n return table\n .getPrePaginationRowModel()\n .rows.filter((row) => row.getIsSelected());\n case \"all\":\n return table.getCoreRowModel().rows;\n default:\n return table.getPrePaginationRowModel().rows;\n }\n}\n\nfunction escapeCsvCell(value: unknown, escapeFormulaValues: boolean) {\n let text = normalizeFilterValue(value);\n if (\n escapeFormulaValues &&\n typeof value === \"string\" &&\n /^[\\t\\r ]*[=+\\-@]/.test(value)\n ) {\n text = `'${text}`;\n }\n if (/[\",\\n\\r]/.test(text)) {\n return `\"${text.replace(/\"/g, '\"\"')}\"`;\n }\n return text;\n}\n\nexport function getInitialColumnPinning(\n columns: Array>,\n): ColumnPinningState {\n const left: Array = [];\n const right: Array = [];\n\n for (const { column, index } of getDataTableLeafColumns(columns)) {\n const columnId = getColumnId(column, index);\n if (column.meta?.fixed === \"left\") {\n left.push(columnId);\n }\n if (column.meta?.fixed === \"right\") {\n right.push(columnId);\n }\n }\n\n return { left, right };\n}\n\nexport function getColumnId(\n column: DataTableColumnDef,\n index: number,\n) {\n if (column.id) {\n return column.id;\n }\n\n const accessorKey = getAccessorKey(column);\n if (accessorKey) {\n return accessorKey;\n }\n\n return `column-${index}`;\n}\n\nexport function getAccessorKey(\n column: DataTableColumnDef,\n) {\n if (\"accessorKey\" in column && typeof column.accessorKey === \"string\") {\n return column.accessorKey;\n }\n\n return undefined;\n}\n\nexport function getFixedSide(column: Column) {\n const pinnedSide = column.getIsPinned();\n if (pinnedSide) {\n return pinnedSide;\n }\n\n if (column.id === \"__select__\") {\n return \"left\" as const;\n }\n\n if (column.id === \"__expand__\") {\n return \"left\" as const;\n }\n\n if (column.id === \"__actions__\") {\n return \"right\" as const;\n }\n\n const meta = (column.columnDef as DataTableColumnDef).meta;\n return meta?.fixed;\n}\n\nexport function getPinnedColumnClassName(\n side: \"left\" | \"right\",\n uiClassNames: DataTableUiClassNames,\n options?: { isUtilityColumn?: boolean },\n) {\n const isUtilityColumn = options?.isUtilityColumn ?? false;\n return cn(\n \"sticky backdrop-blur box-border\",\n uiClassNames.pinnedColumn,\n !isUtilityColumn && \"border-dotted\",\n isUtilityColumn ? uiClassNames.pinnedUtilityColumn : undefined,\n side === \"left\" ? \"border-r-1\" : \"border-l\",\n );\n}\n\nexport function isUtilityColumnId(columnId: string) {\n return (\n columnId === \"__select__\" ||\n columnId === \"__expand__\" ||\n columnId === \"__actions__\"\n );\n}\n\nexport function getDensityHeaderClassName(density: DataTableDensity) {\n switch (density) {\n case \"compact\":\n return \"h-8 py-1\";\n case \"spacious\":\n return \"h-14 py-4\";\n case \"comfortable\":\n default:\n return undefined;\n }\n}\n\nexport function getDensityCellClassName(density: DataTableDensity) {\n switch (density) {\n case \"compact\":\n return \"py-1.5\";\n case \"spacious\":\n return \"py-4\";\n case \"comfortable\":\n default:\n return undefined;\n }\n}\n\nexport function moveColumnInOrder(\n currentOrder: Array,\n sourceColumnId: string,\n targetColumnId: string,\n) {\n const order = currentOrder.includes(sourceColumnId)\n ? currentOrder.slice()\n : [...currentOrder, sourceColumnId];\n const sourceIndex = order.indexOf(sourceColumnId);\n const targetIndex = order.indexOf(targetColumnId);\n\n if (sourceIndex < 0 || targetIndex < 0 || sourceIndex === targetIndex) {\n return order;\n }\n\n const [source] = order.splice(sourceIndex, 1);\n order.splice(targetIndex, 0, source);\n return order;\n}\n\nexport function startCase(value: string) {\n return value\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .replace(/[_-]+/g, \" \")\n .replace(/\\s+/g, \" \")\n .trim()\n .replace(/\\b\\w/g, (character) => character.toUpperCase());\n}\n","import * as React from \"react\";\nimport type { CellContext } from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableColumnType,\n DataTableEditableRowsConfig,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { getDataTableLeafColumns } from \"./data-table-utils\";\n\nexport function useRowEditing({\n columns,\n editableRows,\n onError,\n}: {\n columns: Array>;\n editableRows: DataTableEditableRowsConfig | undefined;\n onError?: (error: unknown, row: TData) => void;\n}) {\n const [editingRowId, setEditingRowId] = React.useState(null);\n const [draftValues, setDraftValues] = React.useState<\n Record\n >({});\n const draftValuesRef = React.useRef(draftValues);\n const [isSavingEdit, setIsSavingEdit] = React.useState(false);\n\n React.useEffect(() => {\n draftValuesRef.current = draftValues;\n }, [draftValues]);\n\n const cancelEditing = React.useCallback(() => {\n setEditingRowId(null);\n setDraftValues({});\n }, []);\n\n const startEditingRow = React.useCallback(\n (row: TData, rowId: string) => {\n const initialValues =\n editableRows?.getInitialValues?.(row) ??\n defaultDraftValues(row, columns);\n setDraftValues(initialValues);\n setEditingRowId(rowId);\n },\n [columns, editableRows],\n );\n\n const saveEdit = React.useCallback(\n async (row: TData) => {\n if (!editableRows) {\n return;\n }\n\n setIsSavingEdit(true);\n try {\n await editableRows.onSaveRow(row, draftValuesRef.current);\n React.startTransition(cancelEditing);\n } catch (error) {\n onError?.(error, row);\n } finally {\n setIsSavingEdit(false);\n }\n },\n [cancelEditing, editableRows, onError],\n );\n\n return {\n cancelEditing,\n draftValues,\n editingRowId,\n isSavingEdit,\n saveEdit,\n setDraftValues,\n setEditingRowId,\n startEditingRow,\n };\n}\n\nfunction defaultDraftValues(\n row: TData,\n columns: Array>,\n) {\n return getDataTableLeafColumns(columns).reduce>(\n (draft, { column }) => {\n if (\"accessorKey\" in column && typeof column.accessorKey === \"string\") {\n draft[column.accessorKey] = (row as Record)[\n column.accessorKey\n ];\n }\n return draft;\n },\n {},\n );\n}\n\nexport function renderEditableCell(\n context: CellContext,\n draftValues: Record,\n setDraftValues: React.Dispatch>>,\n components: Pick,\n) {\n const { Checkbox, Input } = components;\n const column = context.column.columnDef as DataTableColumnDef;\n const meta = column.meta;\n const accessorKey =\n \"accessorKey\" in column && typeof column.accessorKey === \"string\"\n ? column.accessorKey\n : context.column.id;\n const draftValue = draftValues[accessorKey];\n const setDraftValue = (value: unknown) => {\n setDraftValues((current) => ({\n ...current,\n [accessorKey]: value,\n }));\n };\n\n if (meta?.renderEditCell) {\n return meta.renderEditCell({\n cell: context,\n row: context.row.original,\n value: context.getValue(),\n draftValue,\n setDraftValue,\n });\n }\n\n const inputType = getEditableInputType(meta?.type, draftValue);\n\n if (typeof draftValue === \"boolean\") {\n return (\n {\n setDraftValue(checked === true);\n }}\n />\n );\n }\n\n return (\n ) => {\n const rawValue = event.target.value;\n const parsedValue = meta?.parseEditValue\n ? meta.parseEditValue(rawValue, context)\n : parseEditableInputValue(rawValue, inputType, draftValue);\n setDraftValue(parsedValue);\n }}\n />\n );\n}\n\nfunction getEditableInputType(\n type: DataTableColumnType | undefined,\n value: unknown,\n) {\n if (type === \"numeric\" || typeof value === \"number\") {\n return \"number\";\n }\n\n if (type === \"date\" || value instanceof Date) {\n return \"datetime-local\";\n }\n\n return \"text\";\n}\n\nfunction getEditableInputValue(value: unknown, inputType = \"text\") {\n if (value == null) {\n return \"\";\n }\n\n if (value instanceof Date) {\n return inputType === \"datetime-local\"\n ? value.toISOString().slice(0, 16)\n : value.toISOString();\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n typeof value === \"bigint\"\n ) {\n return String(value);\n }\n\n return \"\";\n}\n\nfunction parseEditableInputValue(\n value: string,\n inputType: string,\n previousValue: unknown,\n) {\n if (inputType === \"number\") {\n return value === \"\" ? null : Number(value);\n }\n\n if (inputType === \"datetime-local\") {\n if (!value) {\n return null;\n }\n return previousValue instanceof Date ? new Date(value) : value;\n }\n\n return value;\n}\n","import * as React from \"react\";\n\ntype IconProps = React.SVGProps;\n\nfunction Icon({\n children,\n viewBox = \"0 0 24 24\",\n ...props\n}: IconProps & { children: React.ReactNode }) {\n return (\n \n {children}\n \n );\n}\n\nexport function IconAdjustmentsHorizontal(props: IconProps) {\n return (\n \n \n \n \n \n \n \n \n );\n}\n\nexport function IconArchive(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconBell(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconBriefcase(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconCheck(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronDown(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronLeft(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronRight(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronUp(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronsLeft(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconChevronsRight(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconClock(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconDatabase(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconDots(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconDownload(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconEdit(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconEye(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconEyeOff(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconFileUpload(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconInbox(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconLayoutGrid(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconList(props: IconProps) {\n return (\n \n \n \n \n \n \n \n \n );\n}\n\nexport function IconRefresh(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconSearch(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconSelector(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconSparkles(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconStar(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconUserCheck(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconX(props: IconProps) {\n return (\n \n \n \n \n );\n}\n","import * as React from \"react\";\nimport { flexRender, type CellContext } from \"@tanstack/react-table\";\nimport { IconClock } from \"../icons\";\nimport type {\n DataTableCellOverflow,\n DataTableColumnDef,\n} from \"../types\";\nimport type { DataTableUiClassNames } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nexport function renderDataTableCellContent(\n context: CellContext,\n classNames?: DataTableUiClassNames,\n options?: {\n hasCustomCell?: boolean;\n useCustomOverflowDefaults?: boolean;\n },\n) {\n const column = context.column.columnDef as DataTableColumnDef;\n const meta = column.meta;\n const value = context.getValue();\n const hasCustomCell = options?.hasCustomCell ?? false;\n const renderedCellContent = hasCustomCell && column.cell\n ? flexRender(column.cell, context)\n : undefined;\n const hasComplexRenderedContent = isComplexRenderedCellContent(\n renderedCellContent,\n );\n const resolvedOverflow = resolveDataTableCellOverflow({\n context,\n useCustomOverflowDefaults: options?.useCustomOverflowDefaults ?? false,\n value,\n });\n\n if (meta?.type === \"date\" && !hasCustomCell) {\n return (\n \n \n {formatDateValue(value)}\n \n );\n }\n\n const content =\n renderedCellContent !== undefined &&\n renderedCellContent !== null &&\n renderedCellContent !== \"\"\n ? renderedCellContent\n : value == null || value === \"\"\n ? -\n : formatCellValue(value);\n\n return (\n *]:max-w-full [&>*]:min-w-0\",\n )}\n >\n {content}\n \n );\n}\n\nfunction resolveDataTableCellOverflow({\n context,\n useCustomOverflowDefaults,\n value,\n}: {\n context: CellContext;\n useCustomOverflowDefaults: boolean;\n value: unknown;\n}): DataTableCellOverflow {\n const column = context.column.columnDef as DataTableColumnDef;\n const resolvedOverflow =\n typeof column.meta?.overflow === \"function\"\n ? column.meta.overflow({\n row: context.row.original,\n value,\n })\n : column.meta?.overflow;\n\n if (resolvedOverflow) {\n return resolvedOverflow;\n }\n\n return useCustomOverflowDefaults ? \"clip\" : \"truncate\";\n}\n\nfunction getCellOverflowClassName(overflow: DataTableCellOverflow) {\n switch (overflow) {\n case \"clip\":\n return \"block overflow-hidden whitespace-nowrap\";\n case \"wrap\":\n return \"block overflow-hidden whitespace-normal break-words\";\n case \"visible\":\n return \"block overflow-visible whitespace-normal\";\n case \"truncate\":\n default:\n return \"block overflow-hidden text-ellipsis whitespace-nowrap\";\n }\n}\n\nfunction isComplexRenderedCellContent(content: React.ReactNode) {\n if (content == null) {\n return false;\n }\n\n return (\n React.isValidElement(content) ||\n Array.isArray(content) ||\n typeof content === \"object\"\n );\n}\n\nfunction formatDateValue(value: unknown) {\n if (typeof value === \"number\") {\n return new Date(value * 1000).toLocaleString();\n }\n\n if (typeof value === \"string\" && value) {\n return value;\n }\n\n return \"-\";\n}\n\nfunction formatCellValue(value: unknown) {\n if (value instanceof Date) {\n return value.toLocaleString();\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n typeof value === \"bigint\"\n ) {\n return String(value);\n }\n\n try {\n return JSON.stringify(value);\n } catch {\n return \"-\";\n }\n}\n","import * as React from \"react\";\nimport type { Cell, Row } from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableDensity,\n DataTableProps,\n DataTableRowLoadingState,\n} from \"../types\";\nimport type { DataTableUiClassNames, DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { renderDataTableCellContent } from \"./data-table-cell-content\";\nimport type { DataTableColumnLayout } from \"./use-column-layout\";\nimport {\n getDensityCellClassName,\n isDataTableLoadingRow,\n} from \"./data-table-utils\";\nimport { renderEditableCell } from \"./use-row-editing\";\nimport { cellAlignClassName, hideOnClassName } from \"../types\";\n\ntype DataTableBodyRowProps = {\n columnLayouts: ReadonlyMap;\n components: Pick<\n DataTableUiKit,\n \"Checkbox\" | \"Input\" | \"Skeleton\" | \"TableCell\" | \"TableRow\"\n >;\n currentDensity: DataTableDensity;\n draftValues: Record;\n dragAndDrop: DataTableProps[\"dragAndDrop\"];\n explicitCustomCellColumnIds: ReadonlySet;\n getRowClassName: DataTableProps[\"getRowClassName\"];\n isDraggable: boolean;\n isEditing: boolean;\n isExpanded: boolean;\n isInitialLoadingRow: boolean;\n isSelected: boolean;\n loadingState: DataTableRowLoadingState | undefined;\n onRowClick: DataTableProps[\"onRowClick\"];\n originalRow: TData;\n renderExpandedRow: DataTableProps[\"renderExpandedRow\"];\n row: Row;\n rowIndex: number;\n setDraftValues: React.Dispatch>>;\n uiClassNames: DataTableUiClassNames;\n visibleCells: Array>;\n visibleLeafColumnCount: number;\n};\n\nfunction DataTableBodyRowInner({\n columnLayouts,\n components,\n currentDensity,\n draftValues,\n dragAndDrop,\n explicitCustomCellColumnIds,\n getRowClassName,\n isDraggable,\n isEditing,\n isExpanded,\n isInitialLoadingRow,\n isSelected,\n loadingState,\n onRowClick,\n originalRow,\n renderExpandedRow,\n row,\n setDraftValues,\n uiClassNames,\n visibleCells,\n visibleLeafColumnCount,\n}: DataTableBodyRowProps) {\n const { Checkbox, Input, Skeleton, TableCell, TableRow } = components;\n\n return (\n \n ) => {\n if (isInitialLoadingRow) {\n return;\n }\n\n const target = event.target as HTMLElement | null;\n if (target?.closest(\"[data-row-click-ignore='true']\")) {\n return;\n }\n\n void onRowClick?.({ row: originalRow, rowId: row.id });\n }}\n onKeyDown={(event: React.KeyboardEvent) => {\n if (\n isInitialLoadingRow ||\n !onRowClick ||\n (event.key !== \"Enter\" && event.key !== \" \")\n ) {\n return;\n }\n\n const target = event.target as HTMLElement | null;\n if (target?.closest(\"[data-row-click-ignore='true']\")) {\n return;\n }\n\n event.preventDefault();\n void onRowClick({ row: originalRow, rowId: row.id });\n }}\n onDragStart={(event: React.DragEvent) => {\n if (isInitialLoadingRow) {\n return;\n }\n\n dragAndDrop?.onRowDragStart?.({\n row: originalRow,\n rowId: row.id,\n event,\n });\n }}\n onDragEnd={(event: React.DragEvent) => {\n if (isInitialLoadingRow) {\n return;\n }\n\n dragAndDrop?.onRowDragEnd?.({\n row: originalRow,\n rowId: row.id,\n event,\n });\n }}\n >\n {visibleCells.map((cell) => {\n const meta = (\n cell.column.columnDef as DataTableColumnDef\n ).meta;\n const cellContext = cell.getContext();\n const value = cell.getValue();\n const layout = columnLayouts.get(cell.column.id);\n const isSelectionColumn = layout?.isSelectionColumn ?? false;\n const isExpansionColumn = layout?.isExpansionColumn ?? false;\n const isActionsColumn = layout?.isActionsColumn ?? false;\n const isSpacerColumn = layout?.isSpacerColumn ?? false;\n const hideClassName = hideOnClassName(meta?.hideOn);\n const cellClassName =\n isInitialLoadingRow || isDataTableLoadingRow(originalRow)\n ? undefined\n : typeof meta?.cellClassName === \"function\"\n ? meta.cellClassName({\n row: originalRow,\n value,\n })\n : meta?.cellClassName;\n\n return (\n \n \n {loadingState?.isLoading ? (\n (meta?.skeleton?.(cellContext) ??\n loadingState.skeleton ?? (\n \n ))\n ) : isEditing &&\n cell.column.id !== \"__select__\" &&\n cell.column.id !== \"__expand__\" &&\n cell.column.id !== \"__actions__\" ? (\n renderEditableCell(cellContext, draftValues, setDraftValues, {\n Checkbox,\n Input,\n })\n ) : (\n renderDataTableCellContent(cellContext, uiClassNames, {\n hasCustomCell:\n explicitCustomCellColumnIds.has(cell.column.id) ||\n isSelectionColumn ||\n isExpansionColumn ||\n isActionsColumn ||\n isSpacerColumn,\n useCustomOverflowDefaults:\n explicitCustomCellColumnIds.has(cell.column.id) ||\n isSelectionColumn ||\n isExpansionColumn ||\n isActionsColumn ||\n isSpacerColumn,\n })\n )}\n \n \n );\n })}\n \n {!isInitialLoadingRow && renderExpandedRow && isExpanded ? (\n \n \n {renderExpandedRow({\n row: originalRow,\n rowId: row.id,\n tableRow: row,\n })}\n \n \n ) : null}\n \n );\n}\n\nfunction areDataTableBodyRowsEqual(\n previous: DataTableBodyRowProps,\n next: DataTableBodyRowProps,\n) {\n return (\n previous.row.id === next.row.id &&\n previous.row.original === next.row.original &&\n previous.rowIndex === next.rowIndex &&\n previous.isSelected === next.isSelected &&\n previous.isInitialLoadingRow === next.isInitialLoadingRow &&\n previous.isEditing === next.isEditing &&\n previous.isExpanded === next.isExpanded &&\n previous.isDraggable === next.isDraggable &&\n sameLoadingState(previous.loadingState, next.loadingState) &&\n sameVisibleCells(previous.visibleCells, next.visibleCells) &&\n previous.components === next.components &&\n sameColumnLayouts(\n previous.columnLayouts,\n next.columnLayouts,\n next.visibleCells,\n ) &&\n previous.currentDensity === next.currentDensity &&\n previous.renderExpandedRow === next.renderExpandedRow &&\n previous.onRowClick === next.onRowClick &&\n previous.dragAndDrop === next.dragAndDrop &&\n previous.getRowClassName === next.getRowClassName &&\n previous.uiClassNames === next.uiClassNames &&\n previous.explicitCustomCellColumnIds === next.explicitCustomCellColumnIds &&\n (!previous.isEditing || previous.draftValues === next.draftValues)\n );\n}\n\nfunction sameLoadingState(\n previous: DataTableRowLoadingState | undefined,\n next: DataTableRowLoadingState | undefined,\n) {\n return (\n previous?.isLoading === next?.isLoading &&\n previous?.skeleton === next?.skeleton\n );\n}\n\nfunction sameVisibleCells(\n previous: Array>,\n next: Array>,\n) {\n return (\n previous.length === next.length &&\n previous.every((cell, index) => {\n const nextCell = next[index];\n return nextCell?.id === cell.id && nextCell.column.id === cell.column.id;\n })\n );\n}\n\nfunction sameColumnLayouts(\n previous: ReadonlyMap,\n next: ReadonlyMap,\n cells: Array>,\n) {\n return cells.every((cell) => {\n const previousLayout = previous.get(cell.column.id);\n const nextLayout = next.get(cell.column.id);\n\n return (\n previousLayout?.fixedSide === nextLayout?.fixedSide &&\n previousLayout?.isActionsColumn === nextLayout?.isActionsColumn &&\n previousLayout?.isExpansionColumn === nextLayout?.isExpansionColumn &&\n previousLayout?.isSelectionColumn === nextLayout?.isSelectionColumn &&\n previousLayout?.isSpacerColumn === nextLayout?.isSpacerColumn &&\n previousLayout?.isUtilityColumn === nextLayout?.isUtilityColumn &&\n previousLayout?.pinnedClassName === nextLayout?.pinnedClassName &&\n previousLayout?.utilityClassName === nextLayout?.utilityClassName &&\n sameCellStyle(previousLayout?.cellStyle, nextLayout?.cellStyle)\n );\n });\n}\n\nfunction sameCellStyle(\n previous: React.CSSProperties | undefined,\n next: React.CSSProperties | undefined,\n) {\n return (\n previous?.width === next?.width &&\n previous?.minWidth === next?.minWidth &&\n previous?.maxWidth === next?.maxWidth &&\n previous?.insetInlineStart === next?.insetInlineStart &&\n previous?.insetInlineEnd === next?.insetInlineEnd\n );\n}\n\nexport const DataTableBodyRow = React.memo(\n DataTableBodyRowInner,\n areDataTableBodyRowsEqual,\n) as typeof DataTableBodyRowInner;\n","import * as React from \"react\";\nimport { flexRender } from \"@tanstack/react-table\";\nimport { IconChevronDown, IconSelector } from \"../icons\";\nimport type { Header, SortingState } from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableDensity,\n} from \"../types\";\nimport type { DataTableUiClassNames, DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport type { DataTableColumnLayout } from \"./use-column-layout\";\nimport {\n getDensityHeaderClassName,\n isUtilityColumnId,\n} from \"./data-table-utils\";\nimport { headerAlignClassName, hideOnClassName } from \"../types\";\n\ntype DataTableHeaderCellProps = {\n currentDensity: DataTableDensity;\n currentSorting: SortingState;\n draggedColumnIdRef: React.MutableRefObject;\n enableColumnReordering: boolean;\n enableColumnResizing: boolean;\n header: Header;\n headerGroupHeaders: Array>;\n layout: DataTableColumnLayout;\n primeColumnForResize: (columnId: string, currentSize: number) => void;\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n resetColumnSize: (columnId: string) => void;\n // Rendered through flexRender inside the header def; carried as a prop so\n // the memo comparator re-renders the selection header when it changes.\n selectionState?: boolean | \"indeterminate\";\n TableHead: DataTableUiKit[\"TableHead\"];\n uiClassNames: DataTableUiClassNames;\n};\n\nfunction DataTableHeaderCellInner({\n currentDensity,\n currentSorting,\n draggedColumnIdRef,\n enableColumnReordering,\n enableColumnResizing,\n header,\n headerGroupHeaders,\n layout,\n primeColumnForResize,\n reorderColumn,\n resetColumnSize,\n TableHead,\n uiClassNames,\n}: DataTableHeaderCellProps) {\n const meta = (header.column.columnDef as DataTableColumnDef)\n .meta;\n const isColumnGroup =\n !header.isPlaceholder && header.subHeaders.length > 0;\n const canSort = header.column.getCanSort();\n const sortingState = header.column.getIsSorted();\n const sortingIndex = currentSorting.findIndex(\n (sort) => sort.id === header.column.id,\n );\n const canReorderColumn =\n enableColumnReordering &&\n !header.isPlaceholder &&\n !isColumnGroup &&\n !layout.isUtilityColumn &&\n !layout.isSpacerColumn;\n const hideClassName = hideOnClassName(meta?.hideOn);\n\n return (\n ) => {\n draggedColumnIdRef.current = header.column.id;\n event.dataTransfer.effectAllowed = \"move\";\n }\n : undefined\n }\n onDragOver={\n canReorderColumn\n ? (event: React.DragEvent) => {\n event.preventDefault();\n event.dataTransfer.dropEffect = \"move\";\n }\n : undefined\n }\n onDrop={\n canReorderColumn\n ? (event: React.DragEvent) => {\n event.preventDefault();\n const sourceColumnId = draggedColumnIdRef.current;\n draggedColumnIdRef.current = null;\n if (sourceColumnId) {\n reorderColumn(sourceColumnId, header.column.id);\n }\n }\n : undefined\n }\n onKeyDown={\n canReorderColumn\n ? (event: React.KeyboardEvent) => {\n if (\n !event.altKey ||\n (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\")\n ) {\n return;\n }\n\n event.preventDefault();\n const headers = headerGroupHeaders.filter(\n (item) =>\n !isUtilityColumnId(item.column.id) &&\n item.column.id !== \"__spacer__\",\n );\n const currentIndex = headers.findIndex(\n (item) => item.column.id === header.column.id,\n );\n const target =\n headers[\n event.key === \"ArrowLeft\"\n ? currentIndex - 1\n : currentIndex + 1\n ];\n if (target) {\n reorderColumn(header.column.id, target.column.id);\n }\n }\n : undefined\n }\n >\n {header.isPlaceholder ? null : canSort ? (\n \n \n {flexRender(header.column.columnDef.header, header.getContext())}\n \n {sortingState ? (\n <>\n \n {currentSorting.length > 1 && sortingIndex >= 0 ? (\n \n {sortingIndex + 1}\n \n ) : null}\n \n ) : (\n \n )}\n \n ) : (\n flexRender(header.column.columnDef.header, header.getContext())\n )}\n\n {enableColumnResizing &&\n !header.isPlaceholder &&\n header.column.getCanResize() ? (\n {\n for (const leafHeader of getResizableLeafHeaders(header)) {\n resetColumnSize(leafHeader.column.id);\n }\n }}\n onMouseDown={(event) => {\n for (const leafHeader of getResizableLeafHeaders(header)) {\n primeColumnForResize(\n leafHeader.column.id,\n leafHeader.getSize(),\n );\n }\n header.getResizeHandler()(event);\n }}\n onTouchStart={(event) => {\n for (const leafHeader of getResizableLeafHeaders(header)) {\n primeColumnForResize(\n leafHeader.column.id,\n leafHeader.getSize(),\n );\n }\n header.getResizeHandler()(event);\n }}\n className={cn(\n \"absolute inset-y-0 right-0 z-50 h-full w-3 translate-x-1/2 cursor-col-resize touch-none select-none after:absolute after:top-0 after:left-1/2 after:h-full after:w-px after:-translate-x-1/2\",\n uiClassNames.resizeHandle ??\n \"after:bg-current after:opacity-20 hover:after:opacity-70\",\n header.column.getIsResizing() &&\n (uiClassNames.resizeHandleActive ?? \"after:opacity-100\"),\n )}\n />\n ) : null}\n \n );\n}\n\nfunction areDataTableHeaderCellsEqual(\n previous: DataTableHeaderCellProps,\n next: DataTableHeaderCellProps,\n) {\n return (\n previous.header.id === next.header.id &&\n previous.header.column.id === next.header.column.id &&\n previous.header.column.columnDef === next.header.column.columnDef &&\n previous.header.colSpan === next.header.colSpan &&\n previous.header.isPlaceholder === next.header.isPlaceholder &&\n sameSubHeaders(previous.header, next.header) &&\n previous.currentDensity === next.currentDensity &&\n previous.enableColumnReordering === next.enableColumnReordering &&\n previous.enableColumnResizing === next.enableColumnResizing &&\n previous.TableHead === next.TableHead &&\n previous.uiClassNames === next.uiClassNames &&\n previous.draggedColumnIdRef === next.draggedColumnIdRef &&\n previous.primeColumnForResize === next.primeColumnForResize &&\n previous.reorderColumn === next.reorderColumn &&\n previous.resetColumnSize === next.resetColumnSize &&\n previous.selectionState === next.selectionState &&\n sameSorting(previous.currentSorting, next.currentSorting) &&\n sameHeaderGroupHeaders(\n previous.headerGroupHeaders,\n next.headerGroupHeaders,\n ) &&\n sameHeaderLayout(previous.layout, next.layout)\n );\n}\n\nfunction getResizableLeafHeaders(header: Header) {\n if (!header.subHeaders.length) {\n return [header];\n }\n\n return header\n .getLeafHeaders()\n .filter((leafHeader) => !leafHeader.subHeaders.length);\n}\n\nfunction sameSubHeaders(\n previous: Header,\n next: Header,\n) {\n return (\n previous.subHeaders.length === next.subHeaders.length &&\n previous.subHeaders.every(\n (header, index) => next.subHeaders[index]?.id === header.id,\n )\n );\n}\n\nfunction sameSorting(previous: SortingState, next: SortingState) {\n return (\n previous.length === next.length &&\n previous.every((sort, index) => {\n const nextSort = next[index];\n return nextSort?.id === sort.id && nextSort.desc === sort.desc;\n })\n );\n}\n\nfunction sameHeaderGroupHeaders(\n previous: Array>,\n next: Array>,\n) {\n return (\n previous.length === next.length &&\n previous.every((header, index) => next[index]?.id === header.id)\n );\n}\n\nfunction sameHeaderLayout(\n previous: DataTableColumnLayout,\n next: DataTableColumnLayout,\n) {\n return (\n previous.fixedSide === next.fixedSide &&\n previous.isSpacerColumn === next.isSpacerColumn &&\n previous.isUtilityColumn === next.isUtilityColumn &&\n previous.pinnedClassName === next.pinnedClassName &&\n previous.utilityClassName === next.utilityClassName &&\n previous.headerStyle?.width === next.headerStyle?.width &&\n previous.headerStyle?.minWidth === next.headerStyle?.minWidth &&\n previous.headerStyle?.maxWidth === next.headerStyle?.maxWidth &&\n previous.headerStyle?.insetInlineStart ===\n next.headerStyle?.insetInlineStart &&\n previous.headerStyle?.insetInlineEnd === next.headerStyle?.insetInlineEnd\n );\n}\n\nexport const DataTableHeaderCell = React.memo(\n DataTableHeaderCellInner,\n areDataTableHeaderCellsEqual,\n) as typeof DataTableHeaderCellInner;\n","import * as React from \"react\";\nimport type {\n Column,\n Header,\n Row,\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableDensity,\n DataTableProps,\n DataTableRowLoadingState,\n} from \"../types\";\nimport type { DataTableUiClassNames, DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { DataTableBodyRow } from \"./data-table-body-row\";\nimport { DataTableHeaderCell } from \"./data-table-header-cell\";\nimport type { DataTableColumnLayout } from \"./use-column-layout\";\nimport { isDataTableLoadingRow } from \"./data-table-utils\";\nimport type { DataTableLabels } from \"../types\";\n\nexport type DataTableTablePanelProps = {\n bodyRowComponents: Pick<\n DataTableUiKit,\n \"Checkbox\" | \"Input\" | \"Skeleton\" | \"TableCell\" | \"TableRow\"\n >;\n columnLayouts: ReadonlyMap;\n currentDensity: DataTableDensity;\n currentSorting: DataTableProps[\"sorting\"];\n DataTableEmptyState: React.ElementType;\n dragAndDrop: DataTableProps[\"dragAndDrop\"];\n draggedColumnIdRef: React.RefObject;\n draftValues: Record;\n editingRowId: string | null;\n emptyNode: React.ReactNode;\n enableColumnReordering: boolean;\n enableColumnResizing: boolean;\n explicitCustomCellColumnIds: ReadonlySet;\n fillMinWidth: number;\n flexGrow: boolean;\n getColumnLayout: (columnId: string) => DataTableColumnLayout;\n getRowClassName: DataTableProps[\"getRowClassName\"];\n getRowLoadingState: DataTableProps[\"getRowLoadingState\"];\n infiniteScroll: DataTableProps[\"infiniteScroll\"];\n layoutMode: \"fill\" | \"fit\";\n localSearchValue: string;\n onRowClick: DataTableProps[\"onRowClick\"];\n primeColumnForResize: (columnId: string, currentSize: number) => void;\n renderedRows: Array>;\n renderExpandedRow: DataTableProps[\"renderExpandedRow\"];\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n resetColumnSize: (columnId: string) => void;\n resolvedLabels: DataTableLabels;\n rowsToRender: Array<{ row: Row; rowIndex: number }>;\n ScrollArea: DataTableUiKit[\"ScrollArea\"];\n ScrollBar: DataTableUiKit[\"ScrollBar\"];\n sentinelRef: React.RefObject;\n setDraftValues: React.Dispatch>>;\n shouldRenderInitialLoading: boolean;\n stickyHeader: boolean;\n summaryRows: NonNullable[\"summaryRows\"]>;\n table: TanStackTable;\n tableClassName: string | undefined;\n tableContainerClassName: string | undefined;\n Table: DataTableUiKit[\"Table\"];\n TableBody: DataTableUiKit[\"TableBody\"];\n TableCell: DataTableUiKit[\"TableCell\"];\n TableFooter: DataTableUiKit[\"TableFooter\"];\n TableHead: DataTableUiKit[\"TableHead\"];\n TableHeader: DataTableUiKit[\"TableHeader\"];\n TableRow: DataTableUiKit[\"TableRow\"];\n tableScrollContainerRef: React.RefObject;\n tableScrollElement?: HTMLElement | null;\n uiClassNames: DataTableUiClassNames;\n viewportHeight?: number;\n virtualization?: DataTableProps[\"virtualization\"];\n virtualPaddingBottom: number;\n virtualPaddingTop: number;\n visibleLeafColumnCount: number;\n visibleLeafColumns: Array>;\n};\n\nexport function DataTableTablePanel({\n bodyRowComponents,\n columnLayouts,\n currentDensity,\n currentSorting = [],\n DataTableEmptyState,\n dragAndDrop,\n draggedColumnIdRef,\n draftValues,\n editingRowId,\n emptyNode,\n enableColumnReordering,\n enableColumnResizing,\n explicitCustomCellColumnIds,\n fillMinWidth,\n flexGrow,\n getColumnLayout,\n getRowClassName,\n getRowLoadingState,\n infiniteScroll,\n layoutMode,\n localSearchValue,\n onRowClick,\n primeColumnForResize,\n renderedRows,\n renderExpandedRow,\n reorderColumn,\n resetColumnSize,\n resolvedLabels,\n rowsToRender,\n ScrollArea,\n ScrollBar,\n sentinelRef,\n setDraftValues,\n shouldRenderInitialLoading,\n stickyHeader,\n summaryRows,\n table,\n tableClassName,\n tableContainerClassName,\n Table,\n TableBody,\n TableCell,\n TableFooter = \"tfoot\",\n TableHead,\n TableHeader,\n TableRow,\n tableScrollContainerRef,\n uiClassNames,\n virtualPaddingBottom,\n virtualPaddingTop,\n visibleLeafColumnCount,\n visibleLeafColumns,\n}: DataTableTablePanelProps) {\n const selectionState: boolean | \"indeterminate\" =\n table.getIsAllPageRowsSelected()\n ? true\n : table.getIsSomePageRowsSelected()\n ? \"indeterminate\"\n : false;\n\n return (\n \n \n \n
    \n \n \n {table.getVisibleLeafColumns().map((column) => {\n const layout = getColumnLayout(column.id);\n return ;\n })}\n \n \n {table.getHeaderGroups().map((headerGroup) => (\n \n {headerGroup.headers.map((header) => (\n \n ))}\n \n ))}\n \n \n {renderedRows.length ? (\n <>\n {virtualPaddingTop > 0 ? (\n \n \n \n ) : null}\n {rowsToRender.map(({ row, rowIndex }) => {\n const originalRow = row.original;\n const isInitialLoadingRow =\n isDataTableLoadingRow(originalRow);\n const loadingState = isInitialLoadingRow\n ? { isLoading: true }\n : getRowLoadingState?.(originalRow, rowIndex);\n const resolvedLoadingState: DataTableRowLoadingState | undefined =\n typeof loadingState === \"boolean\"\n ? { isLoading: loadingState }\n : loadingState;\n const isDraggable = isInitialLoadingRow\n ? false\n : (dragAndDrop?.getRowDraggable?.(originalRow) ?? false);\n\n return (\n \n );\n })}\n {virtualPaddingBottom > 0 ? (\n \n \n \n ) : null}\n \n ) : (\n \n \n
    \n {emptyNode ?? (\n \n )}\n
    \n \n
    \n )}\n
    \n {summaryRows.length ? (\n \n {summaryRows.map((summaryRow) => (\n \n {visibleLeafColumns.map((column, index) => {\n const content =\n summaryRow.cells[column.id] ??\n (index === 0 ? summaryRow.label : null);\n return (\n \n {typeof content === \"function\"\n ? content({\n rows: table\n .getFilteredRowModel()\n .rows.map((row) => row.original),\n columnId: column.id,\n })\n : content}\n \n );\n })}\n \n ))}\n \n ) : null}\n \n
    \n\n {infiniteScroll?.enabled &&\n renderedRows.length &&\n !shouldRenderInitialLoading ? (\n
    \n
    \n
    \n ) : null}\n \n \n
    \n \n );\n}\n\nfunction getHeaderLayout(\n header: Header,\n getColumnLayout: (columnId: string) => DataTableColumnLayout,\n) {\n const columnLayout = getColumnLayout(header.column.id);\n if (header.isPlaceholder || !header.subHeaders.length) {\n return columnLayout;\n }\n\n const leafLayouts = header\n .getLeafHeaders()\n .filter((leafHeader) => !leafHeader.subHeaders.length)\n .map((leafHeader) => getColumnLayout(leafHeader.column.id));\n const fixedSide = leafLayouts[0]?.fixedSide;\n\n if (\n !fixedSide ||\n !leafLayouts.every((layout) => layout.fixedSide === fixedSide)\n ) {\n return columnLayout;\n }\n\n const edgeLayout =\n fixedSide === \"left\" ? leafLayouts[0] : leafLayouts.at(-1);\n\n return {\n ...columnLayout,\n fixedSide,\n headerStyle: edgeLayout?.headerStyle\n ? {\n insetInlineStart: edgeLayout.headerStyle.insetInlineStart,\n insetInlineEnd: edgeLayout.headerStyle.insetInlineEnd,\n }\n : undefined,\n pinnedClassName: edgeLayout?.pinnedClassName,\n };\n}\n"]} \ No newline at end of file diff --git a/dist/data-table-virtual-card-panel-HHZCRLEB.js b/dist/data-table-virtual-card-panel-HHZCRLEB.js new file mode 100644 index 0000000..d9ed1e2 --- /dev/null +++ b/dist/data-table-virtual-card-panel-HHZCRLEB.js @@ -0,0 +1,2 @@ +export{a as DataTableVirtualCardPanel}from'./chunk-U5TIDLB3.js';import'./chunk-M77BQPKU.js';import'./chunk-PFB5LOU7.js';//# sourceMappingURL=data-table-virtual-card-panel-HHZCRLEB.js.map +//# sourceMappingURL=data-table-virtual-card-panel-HHZCRLEB.js.map \ No newline at end of file diff --git a/dist/data-table-virtual-card-panel-RWD765II.js.map b/dist/data-table-virtual-card-panel-HHZCRLEB.js.map similarity index 62% rename from dist/data-table-virtual-card-panel-RWD765II.js.map rename to dist/data-table-virtual-card-panel-HHZCRLEB.js.map index 73bf424..b27fdea 100644 --- a/dist/data-table-virtual-card-panel-RWD765II.js.map +++ b/dist/data-table-virtual-card-panel-HHZCRLEB.js.map @@ -1 +1 @@ -{"version":3,"sources":[],"names":[],"mappings":"","file":"data-table-virtual-card-panel-RWD765II.js"} \ No newline at end of file +{"version":3,"sources":[],"names":[],"mappings":"","file":"data-table-virtual-card-panel-HHZCRLEB.js"} \ No newline at end of file diff --git a/dist/data-table-virtual-card-panel-RWD765II.js b/dist/data-table-virtual-card-panel-RWD765II.js deleted file mode 100644 index 1999d4c..0000000 --- a/dist/data-table-virtual-card-panel-RWD765II.js +++ /dev/null @@ -1,2 +0,0 @@ -export{a as DataTableVirtualCardPanel}from'./chunk-EAV5MZCW.js';import'./chunk-ACKI7LST.js';import'./chunk-ZF4EP4WP.js';//# sourceMappingURL=data-table-virtual-card-panel-RWD765II.js.map -//# sourceMappingURL=data-table-virtual-card-panel-RWD765II.js.map \ No newline at end of file diff --git a/dist/data-table-virtual-table-panel-7K3LOTBT.js b/dist/data-table-virtual-table-panel-7K3LOTBT.js new file mode 100644 index 0000000..0c9236c --- /dev/null +++ b/dist/data-table-virtual-table-panel-7K3LOTBT.js @@ -0,0 +1,2 @@ +export{a as DataTableVirtualTablePanel}from'./chunk-JYNJ2FDX.js';import'./chunk-ZGXFBFNQ.js';import'./chunk-PFB5LOU7.js';//# sourceMappingURL=data-table-virtual-table-panel-7K3LOTBT.js.map +//# sourceMappingURL=data-table-virtual-table-panel-7K3LOTBT.js.map \ No newline at end of file diff --git a/dist/data-table-virtual-table-panel-ASNINA6M.js.map b/dist/data-table-virtual-table-panel-7K3LOTBT.js.map similarity index 62% rename from dist/data-table-virtual-table-panel-ASNINA6M.js.map rename to dist/data-table-virtual-table-panel-7K3LOTBT.js.map index 768be76..89c26f6 100644 --- a/dist/data-table-virtual-table-panel-ASNINA6M.js.map +++ b/dist/data-table-virtual-table-panel-7K3LOTBT.js.map @@ -1 +1 @@ -{"version":3,"sources":[],"names":[],"mappings":"","file":"data-table-virtual-table-panel-ASNINA6M.js"} \ No newline at end of file +{"version":3,"sources":[],"names":[],"mappings":"","file":"data-table-virtual-table-panel-7K3LOTBT.js"} \ No newline at end of file diff --git a/dist/data-table-virtual-table-panel-ASNINA6M.js b/dist/data-table-virtual-table-panel-ASNINA6M.js deleted file mode 100644 index e38347b..0000000 --- a/dist/data-table-virtual-table-panel-ASNINA6M.js +++ /dev/null @@ -1,2 +0,0 @@ -export{a as DataTableVirtualTablePanel}from'./chunk-Y5JNRFE4.js';import'./chunk-HOUWU4KF.js';import'./chunk-ZF4EP4WP.js';//# sourceMappingURL=data-table-virtual-table-panel-ASNINA6M.js.map -//# sourceMappingURL=data-table-virtual-table-panel-ASNINA6M.js.map \ No newline at end of file diff --git a/dist/heroui-virtual.d.ts b/dist/heroui-virtual.d.ts index 7accbc3..f57af3e 100644 --- a/dist/heroui-virtual.d.ts +++ b/dist/heroui-virtual.d.ts @@ -1,6 +1,6 @@ import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; diff --git a/dist/heroui-virtual.js b/dist/heroui-virtual.js index 476dccf..ed8f849 100644 --- a/dist/heroui-virtual.js +++ b/dist/heroui-virtual.js @@ -1,2 +1,2 @@ -import {a as a$2}from'./chunk-GTOBHZ7L.js';import {a as a$1}from'./chunk-RJOEF7NA.js';import'./chunk-EAV5MZCW.js';import'./chunk-Y5JNRFE4.js';import'./chunk-2V6RVOWX.js';import'./chunk-3CYYXB7K.js';import'./chunk-ACKI7LST.js';import'./chunk-HOUWU4KF.js';import'./chunk-ZF4EP4WP.js';var a=a$1(a$2);export{a as DataTable};//# sourceMappingURL=heroui-virtual.js.map +import {a as a$2}from'./chunk-A2VV3NIL.js';import {a as a$1}from'./chunk-Y2VSRDR3.js';import'./chunk-U5TIDLB3.js';import'./chunk-JYNJ2FDX.js';import'./chunk-7EXRF7VC.js';import'./chunk-54H6DRO6.js';import'./chunk-M77BQPKU.js';import'./chunk-ZGXFBFNQ.js';import'./chunk-PFB5LOU7.js';var a=a$1(a$2);export{a as DataTable};//# sourceMappingURL=heroui-virtual.js.map //# sourceMappingURL=heroui-virtual.js.map \ No newline at end of file diff --git a/dist/heroui.d.ts b/dist/heroui.d.ts index 7accbc3..f57af3e 100644 --- a/dist/heroui.d.ts +++ b/dist/heroui.d.ts @@ -1,6 +1,6 @@ import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; diff --git a/dist/heroui.js b/dist/heroui.js index 37bf822..4c7d0cf 100644 --- a/dist/heroui.js +++ b/dist/heroui.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-GTOBHZ7L.js';import'./chunk-2V6RVOWX.js';import {i}from'./chunk-3CYYXB7K.js';import'./chunk-ACKI7LST.js';import'./chunk-HOUWU4KF.js';import'./chunk-ZF4EP4WP.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=heroui.js.map +import {a as a$1}from'./chunk-A2VV3NIL.js';import'./chunk-7EXRF7VC.js';import {i}from'./chunk-54H6DRO6.js';import'./chunk-M77BQPKU.js';import'./chunk-ZGXFBFNQ.js';import'./chunk-PFB5LOU7.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=heroui.js.map //# sourceMappingURL=heroui.js.map \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts index 7accbc3..f57af3e 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -1,6 +1,6 @@ import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; diff --git a/dist/index.js b/dist/index.js index f1d08cb..24f81f6 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-7NEQYX7P.js';import'./chunk-2V6RVOWX.js';import {i}from'./chunk-3CYYXB7K.js';import'./chunk-ACKI7LST.js';import'./chunk-HOUWU4KF.js';import'./chunk-ZF4EP4WP.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=index.js.map +import {a as a$1}from'./chunk-BTA3VDTU.js';import'./chunk-7EXRF7VC.js';import {i}from'./chunk-54H6DRO6.js';import'./chunk-M77BQPKU.js';import'./chunk-ZGXFBFNQ.js';import'./chunk-PFB5LOU7.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=index.js.map //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/thegridcn-virtual.d.ts b/dist/thegridcn-virtual.d.ts index 7accbc3..f57af3e 100644 --- a/dist/thegridcn-virtual.d.ts +++ b/dist/thegridcn-virtual.d.ts @@ -1,6 +1,6 @@ import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; diff --git a/dist/thegridcn-virtual.js b/dist/thegridcn-virtual.js index 6e23c8c..ebe8678 100644 --- a/dist/thegridcn-virtual.js +++ b/dist/thegridcn-virtual.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-RJOEF7NA.js';import'./chunk-EAV5MZCW.js';import'./chunk-Y5JNRFE4.js';import {a as a$2}from'./chunk-S7PROCUM.js';import'./chunk-2V6RVOWX.js';import'./chunk-3CYYXB7K.js';import'./chunk-ACKI7LST.js';import'./chunk-HOUWU4KF.js';import'./chunk-ZF4EP4WP.js';var a=a$1(a$2);export{a as DataTable};//# sourceMappingURL=thegridcn-virtual.js.map +import {a as a$1}from'./chunk-Y2VSRDR3.js';import'./chunk-U5TIDLB3.js';import'./chunk-JYNJ2FDX.js';import {a as a$2}from'./chunk-NC2TEQVN.js';import'./chunk-7EXRF7VC.js';import'./chunk-54H6DRO6.js';import'./chunk-M77BQPKU.js';import'./chunk-ZGXFBFNQ.js';import'./chunk-PFB5LOU7.js';var a=a$1(a$2);export{a as DataTable};//# sourceMappingURL=thegridcn-virtual.js.map //# sourceMappingURL=thegridcn-virtual.js.map \ No newline at end of file diff --git a/dist/thegridcn.d.ts b/dist/thegridcn.d.ts index 7accbc3..f57af3e 100644 --- a/dist/thegridcn.d.ts +++ b/dist/thegridcn.d.ts @@ -1,6 +1,6 @@ import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; diff --git a/dist/thegridcn.js b/dist/thegridcn.js index 223f3cb..ce04470 100644 --- a/dist/thegridcn.js +++ b/dist/thegridcn.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-S7PROCUM.js';import'./chunk-2V6RVOWX.js';import {i}from'./chunk-3CYYXB7K.js';import'./chunk-ACKI7LST.js';import'./chunk-HOUWU4KF.js';import'./chunk-ZF4EP4WP.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=thegridcn.js.map +import {a as a$1}from'./chunk-NC2TEQVN.js';import'./chunk-7EXRF7VC.js';import {i}from'./chunk-54H6DRO6.js';import'./chunk-M77BQPKU.js';import'./chunk-ZGXFBFNQ.js';import'./chunk-PFB5LOU7.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=thegridcn.js.map //# sourceMappingURL=thegridcn.js.map \ No newline at end of file diff --git a/dist/types.d.ts b/dist/types.d.ts index 4585b49..18aca79 100644 --- a/dist/types.d.ts +++ b/dist/types.d.ts @@ -53,6 +53,7 @@ type DataTableColumnMeta = { value: TValue | undefined; }) => DataTableCellOverflow | undefined); headerClassName?: string; + headerStyle?: React.CSSProperties; cellClassName?: string | ((args: { row: TData; value: TValue | undefined; @@ -66,6 +67,11 @@ type DataTableColumnMeta = { }; type DataTableColumnDef = ColumnDef & { meta?: DataTableColumnMeta; + columns?: Array>; +}; +type DataTableColumnGroupDef = DataTableColumnDef & { + id: string; + columns: Array>; }; type DataTableToolbarAction = { key: string; @@ -488,4 +494,4 @@ declare function hideOnClassName(hideOn: DataTableContainerBreakpoint | Array | undefined, containerWidth: number): boolean; declare function rowSelectionStateFromRows(rows: Array>): TData[]; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, type DataTableActionErrorContext, type DataTableActionErrorSource, type DataTableAlign, type DataTableApi, type DataTableCardRendererProps, type DataTableCardSizing, type DataTableCardVirtualizationConfig, type DataTableCellEditRenderProps, type DataTableCellOverflow, type DataTableColumnDef, type DataTableColumnFilterConfig, type DataTableColumnFilterOption, type DataTableColumnFilterType, type DataTableColumnFixed, type DataTableColumnMeta, type DataTableColumnPrefs, type DataTableColumnType, type DataTableColumnVisibilityOption, type DataTableContainerBreakpoint, type DataTableCsvExportOptions, type DataTableCsvExportScope, type DataTableDensity, type DataTableDragAndDropConfig, type DataTableEditableRowsConfig, type DataTableEmptyStateContext, type DataTableExpandedRowProps, type DataTableFileUploadConfig, type DataTableHiddenRowsConfig, type DataTableInfiniteScroll, type DataTableInitialState, type DataTableLabels, type DataTableLoadingState, type DataTablePersistenceConfig, type DataTablePersistenceOperation, type DataTablePersistencePayload, type DataTablePersistenceSlice, type DataTablePersistenceStorage, type DataTableProps, type DataTableResetOptions, type DataTableRowAction, type DataTableRowLoadingState, type DataTableSavedView, type DataTableSavedViewSlice, type DataTableSavedViewsChangeOperation, type DataTableSavedViewsConfig, type DataTableSavedViewsPayload, type DataTableSelectionAction, type DataTableState, type DataTableSummaryRow, type DataTableToolbarAction, type DataTableToolbarVisibility, type DataTableViewMode, type DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows }; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, type DataTableActionErrorContext, type DataTableActionErrorSource, type DataTableAlign, type DataTableApi, type DataTableCardRendererProps, type DataTableCardSizing, type DataTableCardVirtualizationConfig, type DataTableCellEditRenderProps, type DataTableCellOverflow, type DataTableColumnDef, type DataTableColumnFilterConfig, type DataTableColumnFilterOption, type DataTableColumnFilterType, type DataTableColumnFixed, type DataTableColumnGroupDef, type DataTableColumnMeta, type DataTableColumnPrefs, type DataTableColumnType, type DataTableColumnVisibilityOption, type DataTableContainerBreakpoint, type DataTableCsvExportOptions, type DataTableCsvExportScope, type DataTableDensity, type DataTableDragAndDropConfig, type DataTableEditableRowsConfig, type DataTableEmptyStateContext, type DataTableExpandedRowProps, type DataTableFileUploadConfig, type DataTableHiddenRowsConfig, type DataTableInfiniteScroll, type DataTableInitialState, type DataTableLabels, type DataTableLoadingState, type DataTablePersistenceConfig, type DataTablePersistenceOperation, type DataTablePersistencePayload, type DataTablePersistenceSlice, type DataTablePersistenceStorage, type DataTableProps, type DataTableResetOptions, type DataTableRowAction, type DataTableRowLoadingState, type DataTableSavedView, type DataTableSavedViewSlice, type DataTableSavedViewsChangeOperation, type DataTableSavedViewsConfig, type DataTableSavedViewsPayload, type DataTableSelectionAction, type DataTableState, type DataTableSummaryRow, type DataTableToolbarAction, type DataTableToolbarVisibility, type DataTableViewMode, type DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows }; diff --git a/dist/ui-kit-DPJDIPrF.d.ts b/dist/ui-kit-B3pF-Pxw.d.ts similarity index 99% rename from dist/ui-kit-DPJDIPrF.d.ts rename to dist/ui-kit-B3pF-Pxw.d.ts index d7e8498..9b76bca 100644 --- a/dist/ui-kit-DPJDIPrF.d.ts +++ b/dist/ui-kit-B3pF-Pxw.d.ts @@ -11,6 +11,7 @@ type DataTableUiClassNames = { cardUnselected?: string; cardViewport?: string; cellBorder?: string; + columnGroupHeader?: string; dragActive?: string; emptyState?: string; footer?: string; diff --git a/dist/virtual.d.ts b/dist/virtual.d.ts index 7accbc3..f57af3e 100644 --- a/dist/virtual.d.ts +++ b/dist/virtual.d.ts @@ -1,6 +1,6 @@ import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; diff --git a/dist/virtual.js b/dist/virtual.js index 428f911..60008ca 100644 --- a/dist/virtual.js +++ b/dist/virtual.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-7NEQYX7P.js';import {a}from'./chunk-RJOEF7NA.js';import'./chunk-EAV5MZCW.js';import'./chunk-Y5JNRFE4.js';import'./chunk-2V6RVOWX.js';import'./chunk-3CYYXB7K.js';import'./chunk-ACKI7LST.js';import'./chunk-HOUWU4KF.js';import'./chunk-ZF4EP4WP.js';var o=a(a$1);export{o as DataTable};//# sourceMappingURL=virtual.js.map +import {a as a$1}from'./chunk-BTA3VDTU.js';import {a}from'./chunk-Y2VSRDR3.js';import'./chunk-U5TIDLB3.js';import'./chunk-JYNJ2FDX.js';import'./chunk-7EXRF7VC.js';import'./chunk-54H6DRO6.js';import'./chunk-M77BQPKU.js';import'./chunk-ZGXFBFNQ.js';import'./chunk-PFB5LOU7.js';var o=a(a$1);export{o as DataTable};//# sourceMappingURL=virtual.js.map //# sourceMappingURL=virtual.js.map \ No newline at end of file diff --git a/docs/API.md b/docs/API.md index 110214b..85482a2 100644 --- a/docs/API.md +++ b/docs/API.md @@ -180,6 +180,7 @@ These are exported from the adapter entrypoints and from `data-table-pro/types`. - `DataTableCellEditRenderProps` - `DataTableCardRendererProps` - `DataTableColumnDef` +- `DataTableColumnGroupDef` - `DataTableColumnFilterConfig` - `DataTableColumnFilterOption` - `DataTableColumnFilterType` @@ -242,6 +243,45 @@ function DataTable(props: DataTableProps): React.ReactElement; | `data` | `Array` | Row data. | | `getRowId` | `(row: TData, index: number) => string` | Stable row identifier used for selection, editing, and row actions. | +### Grouped column headers + +Column groups use nested `DataTableColumnDef` objects. A group requires a +stable `id`, a shared `header`, and a non-empty `columns` array: + +```tsx +const columns: Array> = [ + { + id: "contact", + header: "Contact", + meta: { + align: "center", + headerClassName: "bg-muted/50 font-semibold", + headerStyle: { letterSpacing: "0.025em" }, + }, + columns: [ + { accessorKey: "name", header: "Name" }, + { accessorKey: "email", header: "Email" }, + ], + }, +]; +``` + +Groups may be nested to any depth. Every nesting level renders as another +header row; group cells receive `colSpan` for their visible descendants and +`scope="colgroup"`, while leaf headers receive `scope="col"`. A group header +supports string or render-function content plus `meta.headerClassName`, +`meta.headerStyle`, and `meta.align` styling. The DOM also exposes +`data-dtp-slot="data-table-column-group-header"` and `data-header-depth`. + +Visibility, toolbar filters, ordering, pinning, sizing, responsive hiding, +editing defaults, card-title detection, and CSV export resolve nested leaf +columns. Leaf columns remain independently reorderable and pinnable. If leaf +ordering separates siblings, the shared heading is rendered as separate +spans. Resizing a group distributes the size change proportionally across its +visible descendants; setting `enableResizing: false` on the group removes its +resize handle. Group definitions themselves do not appear in the leaf-column +visibility, filter, or pinning controls. + ### Unified state and API ref | Prop | Type | Default | Description | diff --git a/docs/Roadmap.md b/docs/Roadmap.md index 95053ee..0a9ddad 100644 --- a/docs/Roadmap.md +++ b/docs/Roadmap.md @@ -16,7 +16,7 @@ Audit baseline: Current implementation baseline: -- package version: 4.1.0 +- package version: 4.2.0 - React/React DOM peers: 19.2.8 - TanStack Table: 8.21.3 - TanStack Virtual: 3.14.8 @@ -83,7 +83,7 @@ exposed by the wrapper. | Column filtering | Text/select/multi | Add boolean, numeric/date range, faceted autocomplete, filter operators, and server facets. | | Column faceting | Missing | Support unique values, counts, min/max values, and async server-provided facets. | | Column visibility/order/pinning/sizing | Supported | Add controlled sizing, keyboard-safe controls, presets, reset, and stronger grouped-column behavior. | -| Header/column groups | Incidental TanStack rendering | Make nested definitions first-class across search, sizing, visibility, export, and tests. | +| Header/column groups | Supported | Keep nested definitions first-class across search, sizing, visibility, export, editing, pinning, and tests. | | Row selection | Multi-row and shift range | Add single/multi/sub-row policies, selectability predicates, cross-page selection, and select-all scope. | | Detail panels | Supported through expansion state | Move to an explicit detail-panel contract so tree expansion is independent. | | Tree/sub-row expansion | Missing | Add `getSubRows`, manual expansion, leaf-first filtering, depth controls, and expanded-row pagination policy. | diff --git a/package.json b/package.json index 338262f..edbe613 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "data-table-pro", - "version": "4.1.0", + "version": "4.2.0", "description": "Reusable React data table library with shadcn, HeroUI, and The Gridcn adapters.", "type": "module", "license": "MIT", diff --git a/src/adapters/heroui/index.tsx b/src/adapters/heroui/index.tsx index 2fe9951..59235c1 100644 --- a/src/adapters/heroui/index.tsx +++ b/src/adapters/heroui/index.tsx @@ -217,6 +217,7 @@ export const heroUiKit: DataTableUiKit = { cardUnselected: "border-separator", cardViewport: "bg-transparent", cellBorder: "border-separator/70", + columnGroupHeader: "bg-default/50 font-semibold", dragActive: "rounded-2xl border-dashed border-accent", emptyState: "border-separator bg-surface", footer: "border-separator bg-surface text-surface-foreground", diff --git a/src/adapters/shadcn/index.tsx b/src/adapters/shadcn/index.tsx index 2541271..9634769 100644 --- a/src/adapters/shadcn/index.tsx +++ b/src/adapters/shadcn/index.tsx @@ -182,6 +182,7 @@ export const shadcnUiKit: DataTableUiKit = { cardUnselected: "border-border", cardViewport: "bg-transparent", cellBorder: "border-border/40", + columnGroupHeader: "bg-muted/50 font-semibold", dragActive: "rounded-md border-dashed border-primary", emptyState: "border-border/60 bg-background/70", footer: "border-border bg-card", diff --git a/src/adapters/thegridcn/index.tsx b/src/adapters/thegridcn/index.tsx index b024fe7..8a44bc1 100644 --- a/src/adapters/thegridcn/index.tsx +++ b/src/adapters/thegridcn/index.tsx @@ -201,6 +201,7 @@ export const theGridcnUiKit: DataTableUiKit = { cardUnselected: "border-cyan-400/35", cardViewport: "bg-transparent", cellBorder: "border-cyan-400/16", + columnGroupHeader: "bg-cyan-400/10 text-cyan-200", dragActive: "rounded-md border-dashed border-cyan-300", emptyState: "border-cyan-400/35 bg-black/80", footer: "border-cyan-400/40 bg-black/80 text-cyan-50", diff --git a/src/core/data-table/create-data-table.test.tsx b/src/core/data-table/create-data-table.test.tsx index b2c1e0c..a88506f 100644 --- a/src/core/data-table/create-data-table.test.tsx +++ b/src/core/data-table/create-data-table.test.tsx @@ -25,7 +25,11 @@ import { DataTable as HeroDataTable } from "../../entries/heroui"; import * as GridEntry from "../../entries/thegridcn"; import { DataTable as GridDataTable } from "../../entries/thegridcn"; import { useDataTableUrlState as useDataTableUrlStateEntry } from "../../entries/url-state"; -import type { DataTableColumnDef, DataTableProps } from "../../index"; +import type { + DataTableColumnDef, + DataTableColumnGroupDef, + DataTableProps, +} from "../../index"; import type { DataTableEmptyStateContext, DataTableProps as DataTablePropsFromEntry, @@ -745,6 +749,119 @@ for (const suite of suites) { expect(renderCounts.get("2")).toBe(0); }); + it("renders nested column groups and keeps leaf-column features working", () => { + type GroupedRow = TestRow & { email: string; status: string }; + const identityGroup: DataTableColumnGroupDef = { + id: "identity", + header: "Identity", + meta: { + align: "center", + headerClassName: "custom-group-heading", + headerStyle: { backgroundColor: "rgb(1, 2, 3)" }, + }, + columns: [ + { + accessorKey: "name", + header: "Name", + }, + { + accessorKey: "email", + header: "Email", + }, + ], + }; + const groupedColumns: Array< + DataTableColumnDef + > = [ + { + id: "person", + header: () => Person, + columns: [ + identityGroup, + { + accessorKey: "status", + header: "Status", + meta: { + filter: { type: "text" }, + }, + }, + ], + }, + ]; + + render( + + row.id} + columnVisibility={{ email: false }} + enableColumnReordering + enableColumnResizing + toolbarQueryDebounceMs={100} + /> + , + ); + + const personHeader = screen.getByRole("columnheader", { + name: "Person", + }); + const identityHeader = screen.getByRole("columnheader", { + name: "Identity", + }); + const nameHeader = screen.getByRole("columnheader", { name: "Name" }); + + expect(personHeader.getAttribute("colspan")).toBe("2"); + expect(personHeader.getAttribute("scope")).toBe("colgroup"); + expect(identityHeader.getAttribute("colspan")).toBe("1"); + expect(identityHeader.getAttribute("scope")).toBe("colgroup"); + expect(identityHeader.className).toContain("custom-group-heading"); + expect(identityHeader.style.backgroundColor).toBe("rgb(1, 2, 3)"); + expect(identityHeader.getAttribute("tabindex")).toBeNull(); + expect(nameHeader.getAttribute("scope")).toBe("col"); + expect(screen.queryByRole("columnheader", { name: "Email" })).toBeNull(); + + fireEvent.change(screen.getByLabelText("Filters: Status"), { + target: { value: "paused" }, + }); + + expect(screen.queryByText("Ada")).toBeNull(); + expect(screen.getByText("Grace")).not.toBeNull(); + + fireEvent.pointerDown( + screen.getByRole("button", { name: "Show table options" }), + ); + + expect( + screen.queryByRole("menuitemcheckbox", { name: "Person" }), + ).toBeNull(); + expect( + screen.queryByRole("menuitemcheckbox", { name: "Identity" }), + ).toBeNull(); + expect( + screen.getByRole("menuitemcheckbox", { name: "Name" }), + ).not.toBeNull(); + expect( + screen.getByRole("menuitemcheckbox", { name: "Email" }), + ).not.toBeNull(); + expect( + screen.getByRole("menuitemcheckbox", { name: "Status" }), + ).not.toBeNull(); + }); + it("supports keyboard column reordering", () => { const onColumnOrderChange = vi.fn(); diff --git a/src/core/data-table/create-data-table.tsx b/src/core/data-table/create-data-table.tsx index 0c6d9d8..af82e43 100644 --- a/src/core/data-table/create-data-table.tsx +++ b/src/core/data-table/create-data-table.tsx @@ -34,6 +34,7 @@ import { useDataTableScrollViewport } from "./use-data-table-scroll-viewport"; import { exportDataTableCsv, getColumnId, + getDataTableLeafColumns, getInitialColumnPinning, } from "./data-table-utils"; import { useDataTableState } from "./use-data-table-state"; @@ -599,7 +600,7 @@ export function createDataTableWithPanels( columnLayout; const explicitCustomCellColumnIds = React.useMemo(() => { return new Set( - columns.flatMap((column, index) => { + getDataTableLeafColumns(columns).flatMap(({ column, index }) => { return Object.prototype.hasOwnProperty.call(column, "cell") && typeof column.cell === "function" ? [getColumnId(column, index)] @@ -619,7 +620,10 @@ export function createDataTableWithPanels( [], ); const hasCardTitle = React.useMemo( - () => columns.some((column) => column.meta?.cardTitle), + () => + getDataTableLeafColumns(columns).some( + ({ column }) => column.meta?.cardTitle, + ), [columns], ); const primeColumnForResize = React.useCallback( diff --git a/src/core/data-table/data-table-header-cell.tsx b/src/core/data-table/data-table-header-cell.tsx index b3c07fb..b513946 100644 --- a/src/core/data-table/data-table-header-cell.tsx +++ b/src/core/data-table/data-table-header-cell.tsx @@ -51,6 +51,8 @@ function DataTableHeaderCellInner({ }: DataTableHeaderCellProps) { const meta = (header.column.columnDef as DataTableColumnDef) .meta; + const isColumnGroup = + !header.isPlaceholder && header.subHeaders.length > 0; const canSort = header.column.getCanSort(); const sortingState = header.column.getIsSorted(); const sortingIndex = currentSorting.findIndex( @@ -58,6 +60,8 @@ function DataTableHeaderCellInner({ ); const canReorderColumn = enableColumnReordering && + !header.isPlaceholder && + !isColumnGroup && !layout.isUtilityColumn && !layout.isSpacerColumn; const hideClassName = hideOnClassName(meta?.hideOn); @@ -66,10 +70,21 @@ function DataTableHeaderCellInner({ ({ meta?.headerClassName, meta?.responsiveClassName, )} - style={layout.headerStyle} + style={{ ...meta?.headerStyle, ...layout.headerStyle }} aria-sort={ sortingState === "asc" ? "ascending" @@ -189,17 +204,31 @@ function DataTableHeaderCellInner({ flexRender(header.column.columnDef.header, header.getContext()) )} - {enableColumnResizing && header.column.getCanResize() ? ( + {enableColumnResizing && + !header.isPlaceholder && + header.column.getCanResize() ? (
    { - resetColumnSize(header.column.id); + for (const leafHeader of getResizableLeafHeaders(header)) { + resetColumnSize(leafHeader.column.id); + } }} onMouseDown={(event) => { - primeColumnForResize(header.column.id, header.getSize()); + for (const leafHeader of getResizableLeafHeaders(header)) { + primeColumnForResize( + leafHeader.column.id, + leafHeader.getSize(), + ); + } header.getResizeHandler()(event); }} onTouchStart={(event) => { - primeColumnForResize(header.column.id, header.getSize()); + for (const leafHeader of getResizableLeafHeaders(header)) { + primeColumnForResize( + leafHeader.column.id, + leafHeader.getSize(), + ); + } header.getResizeHandler()(event); }} className={cn( @@ -222,6 +251,10 @@ function areDataTableHeaderCellsEqual( return ( previous.header.id === next.header.id && previous.header.column.id === next.header.column.id && + previous.header.column.columnDef === next.header.column.columnDef && + previous.header.colSpan === next.header.colSpan && + previous.header.isPlaceholder === next.header.isPlaceholder && + sameSubHeaders(previous.header, next.header) && previous.currentDensity === next.currentDensity && previous.enableColumnReordering === next.enableColumnReordering && previous.enableColumnResizing === next.enableColumnResizing && @@ -241,6 +274,28 @@ function areDataTableHeaderCellsEqual( ); } +function getResizableLeafHeaders(header: Header) { + if (!header.subHeaders.length) { + return [header]; + } + + return header + .getLeafHeaders() + .filter((leafHeader) => !leafHeader.subHeaders.length); +} + +function sameSubHeaders( + previous: Header, + next: Header, +) { + return ( + previous.subHeaders.length === next.subHeaders.length && + previous.subHeaders.every( + (header, index) => next.subHeaders[index]?.id === header.id, + ) + ); +} + function sameSorting(previous: SortingState, next: SortingState) { return ( previous.length === next.length && diff --git a/src/core/data-table/data-table-table-panel.tsx b/src/core/data-table/data-table-table-panel.tsx index 9ae551a..c230c21 100644 --- a/src/core/data-table/data-table-table-panel.tsx +++ b/src/core/data-table/data-table-table-panel.tsx @@ -1,6 +1,7 @@ import * as React from "react"; import type { Column, + Header, Row, Table as TanStackTable, } from "@tanstack/react-table"; @@ -199,7 +200,7 @@ export function DataTableTablePanel({ enableColumnResizing={enableColumnResizing} header={header} headerGroupHeaders={headerGroup.headers} - layout={getColumnLayout(header.column.id)} + layout={getHeaderLayout(header, getColumnLayout)} primeColumnForResize={primeColumnForResize} reorderColumn={reorderColumn} resetColumnSize={resetColumnSize} @@ -353,3 +354,41 @@ export function DataTableTablePanel({
    ); } + +function getHeaderLayout( + header: Header, + getColumnLayout: (columnId: string) => DataTableColumnLayout, +) { + const columnLayout = getColumnLayout(header.column.id); + if (header.isPlaceholder || !header.subHeaders.length) { + return columnLayout; + } + + const leafLayouts = header + .getLeafHeaders() + .filter((leafHeader) => !leafHeader.subHeaders.length) + .map((leafHeader) => getColumnLayout(leafHeader.column.id)); + const fixedSide = leafLayouts[0]?.fixedSide; + + if ( + !fixedSide || + !leafLayouts.every((layout) => layout.fixedSide === fixedSide) + ) { + return columnLayout; + } + + const edgeLayout = + fixedSide === "left" ? leafLayouts[0] : leafLayouts.at(-1); + + return { + ...columnLayout, + fixedSide, + headerStyle: edgeLayout?.headerStyle + ? { + insetInlineStart: edgeLayout.headerStyle.insetInlineStart, + insetInlineEnd: edgeLayout.headerStyle.insetInlineEnd, + } + : undefined, + pinnedClassName: edgeLayout?.pinnedClassName, + }; +} diff --git a/src/core/data-table/data-table-utils.ts b/src/core/data-table/data-table-utils.ts index c0b2cb0..d8668ea 100644 --- a/src/core/data-table/data-table-utils.ts +++ b/src/core/data-table/data-table-utils.ts @@ -114,6 +114,31 @@ export function decorateFilterableColumn( }; } +export type DataTableLeafColumn = { + column: DataTableColumnDef; + index: number; +}; + +export function getDataTableLeafColumns( + columns: Array>, +) { + const leaves: Array> = []; + + const visit = (currentColumns: Array>) => { + currentColumns.forEach((column, index) => { + if ("columns" in column && column.columns?.length) { + visit(column.columns); + return; + } + + leaves.push({ column, index }); + }); + }; + + visit(columns); + return leaves; +} + export function normalizeColumnFilterOptions( options: Array, ) { @@ -308,7 +333,7 @@ export function getInitialColumnPinning( const left: Array = []; const right: Array = []; - for (const [index, column] of columns.entries()) { + for (const { column, index } of getDataTableLeafColumns(columns)) { const columnId = getColumnId(column, index); if (column.meta?.fixed === "left") { left.push(columnId); diff --git a/src/core/data-table/use-column-layout.ts b/src/core/data-table/use-column-layout.ts index 22292c5..f4cdc88 100644 --- a/src/core/data-table/use-column-layout.ts +++ b/src/core/data-table/use-column-layout.ts @@ -6,6 +6,7 @@ import { UTILITY_COLUMN_SIZE, getColumnId, getConfiguredColumnMinWidth, + getDataTableLeafColumns, getFixedSide, getPinnedColumnClassName, isUtilityColumnId, @@ -65,7 +66,7 @@ export function useColumnLayout({ const explicitlySizedColumnIds = React.useMemo(() => { const ids = new Set(); - for (const [index, column] of columns.entries()) { + for (const { column, index } of getDataTableLeafColumns(columns)) { if (Object.prototype.hasOwnProperty.call(column, "size")) { ids.add(getColumnId(column, index)); } @@ -95,7 +96,7 @@ export function useColumnLayout({ const minimumColumnWidths = React.useMemo(() => { const widths = new Map(); - for (const [index, column] of columns.entries()) { + for (const { column, index } of getDataTableLeafColumns(columns)) { const configuredMinWidth = getConfiguredColumnMinWidth(column); if (configuredMinWidth !== undefined) { diff --git a/src/core/data-table/use-data-table-instance.ts b/src/core/data-table/use-data-table-instance.ts index 3499f57..65e8ff5 100644 --- a/src/core/data-table/use-data-table-instance.ts +++ b/src/core/data-table/use-data-table-instance.ts @@ -26,6 +26,7 @@ import type { DataTableProps } from "../types"; import { dataTableGlobalFilterFn, getColumnId, + getDataTableLeafColumns, isUtilityColumnId, moveColumnInOrder, } from "./data-table-utils"; @@ -133,9 +134,9 @@ export function useDataTableInstance({ viewportHeight: number; }) { const generatedColumnIds = React.useMemo(() => { - return tableColumns.map((column, index) => - getColumnId(column as DataTableProps["columns"][number], index), - ); + return getDataTableLeafColumns( + tableColumns as DataTableProps["columns"], + ).map(({ column, index }) => getColumnId(column, index)); }, [tableColumns]); const effectiveColumnOrder = React.useMemo(() => { diff --git a/src/core/data-table/use-data-table-state.ts b/src/core/data-table/use-data-table-state.ts index befa305..e50be5f 100644 --- a/src/core/data-table/use-data-table-state.ts +++ b/src/core/data-table/use-data-table-state.ts @@ -17,6 +17,7 @@ import type { import { createDataTableLoadingRows, getColumnId, + getDataTableLeafColumns, getDataTableLoadingRowId, getInitialColumnPinning, isDataTableLoadingRow, @@ -350,13 +351,16 @@ export function useDataTableState({ }, }); const responsiveColumnVisibility = React.useMemo(() => { - return columns.reduce((visibility, column, index) => { - const columnId = getColumnId(column, index); - if (isHiddenAtContainerWidth(column.meta?.hideOn, containerWidth)) { - visibility[columnId] = false; - } - return visibility; - }, {}); + return getDataTableLeafColumns(columns).reduce( + (visibility, { column, index }) => { + const columnId = getColumnId(column, index); + if (isHiddenAtContainerWidth(column.meta?.hideOn, containerWidth)) { + visibility[columnId] = false; + } + return visibility; + }, + {}, + ); }, [columns, containerWidth]); const effectiveColumnVisibility = React.useMemo(() => { return { diff --git a/src/core/data-table/use-data-table-toolbar-features.ts b/src/core/data-table/use-data-table-toolbar-features.ts index ac663a3..9c34efe 100644 --- a/src/core/data-table/use-data-table-toolbar-features.ts +++ b/src/core/data-table/use-data-table-toolbar-features.ts @@ -16,6 +16,7 @@ import { exportDataTableCsv, getAccessorKey, getColumnId, + getDataTableLeafColumns, hasFilterValue, normalizeColumnFilterOptions, startCase, @@ -49,7 +50,7 @@ export function useDataTableToolbarFeatures({ csvExport: DataTableProps["csvExport"]; }) { const columnVisibilityOptions = React.useMemo(() => { - return columns.map((column, index) => { + return getDataTableLeafColumns(columns).map(({ column, index }) => { const id = getColumnId(column, index); const header = column.header; const accessorKey = getAccessorKey(column); @@ -82,7 +83,7 @@ export function useDataTableToolbarFeatures({ return []; } - return columns.flatMap((column, index) => { + return getDataTableLeafColumns(columns).flatMap(({ column, index }) => { const filter = column.meta?.filter; if (!filter) { return []; diff --git a/src/core/data-table/use-row-editing.tsx b/src/core/data-table/use-row-editing.tsx index 0190d46..6467d9d 100644 --- a/src/core/data-table/use-row-editing.tsx +++ b/src/core/data-table/use-row-editing.tsx @@ -6,6 +6,7 @@ import type { DataTableEditableRowsConfig, } from "../types"; import type { DataTableUiKit } from "../ui-kit"; +import { getDataTableLeafColumns } from "./data-table-utils"; export function useRowEditing({ columns, @@ -78,14 +79,17 @@ function defaultDraftValues( row: TData, columns: Array>, ) { - return columns.reduce>((draft, column) => { - if ("accessorKey" in column && typeof column.accessorKey === "string") { - draft[column.accessorKey] = (row as Record)[ - column.accessorKey - ]; - } - return draft; - }, {}); + return getDataTableLeafColumns(columns).reduce>( + (draft, { column }) => { + if ("accessorKey" in column && typeof column.accessorKey === "string") { + draft[column.accessorKey] = (row as Record)[ + column.accessorKey + ]; + } + return draft; + }, + {}, + ); } export function renderEditableCell( diff --git a/src/core/types.ts b/src/core/types.ts index fe1e855..389786f 100644 --- a/src/core/types.ts +++ b/src/core/types.ts @@ -103,6 +103,7 @@ export type DataTableColumnMeta = { value: TValue | undefined; }) => DataTableCellOverflow | undefined); headerClassName?: string; + headerStyle?: React.CSSProperties; cellClassName?: | string | ((args: { row: TData; value: TValue | undefined }) => string | undefined); @@ -124,6 +125,15 @@ export type DataTableColumnDef = ColumnDef< TValue > & { meta?: DataTableColumnMeta; + columns?: Array>; +}; + +export type DataTableColumnGroupDef = DataTableColumnDef< + TData, + unknown +> & { + id: string; + columns: Array>; }; export type DataTableToolbarAction = { diff --git a/src/core/ui-kit.ts b/src/core/ui-kit.ts index fc7f128..90017c8 100644 --- a/src/core/ui-kit.ts +++ b/src/core/ui-kit.ts @@ -12,6 +12,7 @@ export type DataTableUiClassNames = { cardUnselected?: string; cardViewport?: string; cellBorder?: string; + columnGroupHeader?: string; dragActive?: string; emptyState?: string; footer?: string; From 4865cfc2967e7a1ff8da3fb02e720b13a592aa19 Mon Sep 17 00:00:00 2001 From: Toby Martin Date: Sun, 9 Aug 2026 01:15:09 +0000 Subject: [PATCH 02/31] feat: harden responsive table foundations --- README.md | 24 ++-- api-snapshots/public-api.md | 79 +++++++----- browser-tests/data-table.spec.ts | 47 ++++++++ dist/adapter-virtual.d.ts | 6 +- dist/adapter-virtual.js | 2 +- dist/adapter.d.ts | 6 +- dist/adapter.js | 2 +- dist/advanced.d.ts | 26 ++-- dist/advanced.js | 2 +- dist/chunk-32UNH3MQ.js | 3 + dist/chunk-32UNH3MQ.js.map | 1 + dist/chunk-54H6DRO6.js | 2 - dist/chunk-54H6DRO6.js.map | 1 - dist/{chunk-A2VV3NIL.js => chunk-5QNEI6BL.js} | 4 +- ...-A2VV3NIL.js.map => chunk-5QNEI6BL.js.map} | 2 +- dist/{chunk-PFB5LOU7.js => chunk-674VSOYY.js} | 4 +- dist/chunk-674VSOYY.js.map | 1 + dist/{chunk-BTA3VDTU.js => chunk-ARW55TNZ.js} | 4 +- ...-BTA3VDTU.js.map => chunk-ARW55TNZ.js.map} | 2 +- dist/chunk-EJHT5JBZ.js | 2 + dist/chunk-EJHT5JBZ.js.map | 1 + dist/{chunk-7EXRF7VC.js => chunk-ERWHHOBD.js} | 4 +- ...-7EXRF7VC.js.map => chunk-ERWHHOBD.js.map} | 2 +- dist/chunk-FXX3TZ63.js | 2 + dist/chunk-FXX3TZ63.js.map | 1 + dist/chunk-ICUCANNA.js | 2 + dist/chunk-ICUCANNA.js.map | 1 + dist/chunk-ICUHQJ2O.js | 2 + ...-Y2VSRDR3.js.map => chunk-ICUHQJ2O.js.map} | 2 +- dist/chunk-JYNJ2FDX.js | 2 - dist/chunk-JYNJ2FDX.js.map | 1 - dist/chunk-M77BQPKU.js | 2 - dist/chunk-M77BQPKU.js.map | 1 - dist/chunk-PFB5LOU7.js.map | 1 - dist/{chunk-NC2TEQVN.js => chunk-TER4YPQI.js} | 4 +- ...-NC2TEQVN.js.map => chunk-TER4YPQI.js.map} | 2 +- dist/chunk-TUHIU4D7.js | 2 + dist/chunk-TUHIU4D7.js.map | 1 + dist/chunk-U5TIDLB3.js | 2 - dist/chunk-U5TIDLB3.js.map | 1 - dist/chunk-Y2VSRDR3.js | 2 - dist/chunk-ZGXFBFNQ.js | 3 - dist/chunk-ZGXFBFNQ.js.map | 1 - .../data-table-virtual-card-panel-4LELMUIN.js | 2 + ...-table-virtual-card-panel-4LELMUIN.js.map} | 2 +- .../data-table-virtual-card-panel-HHZCRLEB.js | 2 - ...data-table-virtual-table-panel-7K3LOTBT.js | 2 - ...data-table-virtual-table-panel-H3MFN25G.js | 2 + ...table-virtual-table-panel-H3MFN25G.js.map} | 2 +- dist/heroui-virtual.d.ts | 4 +- dist/heroui-virtual.js | 2 +- dist/heroui.d.ts | 4 +- dist/heroui.js | 2 +- dist/index.d.ts | 4 +- dist/index.js | 2 +- dist/thegridcn-virtual.d.ts | 4 +- dist/thegridcn-virtual.js | 2 +- dist/thegridcn.d.ts | 4 +- dist/thegridcn.js | 2 +- dist/types.d.ts | 17 ++- ...kit-B3pF-Pxw.d.ts => ui-kit-D2knVOJ4.d.ts} | 2 + dist/virtual.d.ts | 4 +- dist/virtual.js | 2 +- docs/API.md | 29 +++-- docs/Migration.md | 7 +- package.json | 3 + scripts/check-bundle-size.mjs | 53 ++++++-- .../create-data-table-card-view.tsx | 34 +++++- .../create-data-table-pagination.tsx | 14 +-- .../data-table/create-data-table-toolbar.tsx | 38 +++--- .../data-table/create-data-table.test.tsx | 68 ++++++++++- src/core/data-table/create-data-table.tsx | 25 +++- src/core/data-table/data-table-body-row.tsx | 39 ++++-- .../data-table/data-table-card-panel-types.ts | 1 + src/core/data-table/data-table-card-panel.tsx | 12 +- .../data-table/data-table-correctness.test.ts | 64 ++++++++++ .../data-table/data-table-header-cell.tsx | 113 ++++++++++++++++-- src/core/data-table/data-table-labels.ts | 1 + .../data-table/data-table-phase-zero.test.tsx | 19 +++ .../data-table/data-table-state-api.test.tsx | 69 ++++++++++- .../data-table-table-panel-router.tsx | 12 +- .../data-table/data-table-table-panel.tsx | 37 ++++-- .../data-table/data-table-toolbar-section.tsx | 6 + src/core/data-table/data-table-utils.ts | 77 +++++++++++- .../data-table-virtual-card-panel.tsx | 29 +++-- .../data-table-virtual-table-panel.tsx | 16 ++- src/core/data-table/use-column-layout.ts | 4 +- .../use-data-table-container-width.ts | 41 ++++--- .../data-table/use-data-table-instance.ts | 17 ++- src/core/data-table/use-data-table-state.ts | 34 ++++-- src/core/types.ts | 19 ++- src/core/ui-kit.ts | 2 + styles.css | 22 +++- 93 files changed, 986 insertions(+), 248 deletions(-) create mode 100644 dist/chunk-32UNH3MQ.js create mode 100644 dist/chunk-32UNH3MQ.js.map delete mode 100644 dist/chunk-54H6DRO6.js delete mode 100644 dist/chunk-54H6DRO6.js.map rename dist/{chunk-A2VV3NIL.js => chunk-5QNEI6BL.js} (96%) rename dist/{chunk-A2VV3NIL.js.map => chunk-5QNEI6BL.js.map} (99%) rename dist/{chunk-PFB5LOU7.js => chunk-674VSOYY.js} (89%) create mode 100644 dist/chunk-674VSOYY.js.map rename dist/{chunk-BTA3VDTU.js => chunk-ARW55TNZ.js} (97%) rename dist/{chunk-BTA3VDTU.js.map => chunk-ARW55TNZ.js.map} (99%) create mode 100644 dist/chunk-EJHT5JBZ.js create mode 100644 dist/chunk-EJHT5JBZ.js.map rename dist/{chunk-7EXRF7VC.js => chunk-ERWHHOBD.js} (99%) rename dist/{chunk-7EXRF7VC.js.map => chunk-ERWHHOBD.js.map} (99%) create mode 100644 dist/chunk-FXX3TZ63.js create mode 100644 dist/chunk-FXX3TZ63.js.map create mode 100644 dist/chunk-ICUCANNA.js create mode 100644 dist/chunk-ICUCANNA.js.map create mode 100644 dist/chunk-ICUHQJ2O.js rename dist/{chunk-Y2VSRDR3.js.map => chunk-ICUHQJ2O.js.map} (92%) delete mode 100644 dist/chunk-JYNJ2FDX.js delete mode 100644 dist/chunk-JYNJ2FDX.js.map delete mode 100644 dist/chunk-M77BQPKU.js delete mode 100644 dist/chunk-M77BQPKU.js.map delete mode 100644 dist/chunk-PFB5LOU7.js.map rename dist/{chunk-NC2TEQVN.js => chunk-TER4YPQI.js} (97%) rename dist/{chunk-NC2TEQVN.js.map => chunk-TER4YPQI.js.map} (99%) create mode 100644 dist/chunk-TUHIU4D7.js create mode 100644 dist/chunk-TUHIU4D7.js.map delete mode 100644 dist/chunk-U5TIDLB3.js delete mode 100644 dist/chunk-U5TIDLB3.js.map delete mode 100644 dist/chunk-Y2VSRDR3.js delete mode 100644 dist/chunk-ZGXFBFNQ.js delete mode 100644 dist/chunk-ZGXFBFNQ.js.map create mode 100644 dist/data-table-virtual-card-panel-4LELMUIN.js rename dist/{data-table-virtual-card-panel-HHZCRLEB.js.map => data-table-virtual-card-panel-4LELMUIN.js.map} (62%) delete mode 100644 dist/data-table-virtual-card-panel-HHZCRLEB.js delete mode 100644 dist/data-table-virtual-table-panel-7K3LOTBT.js create mode 100644 dist/data-table-virtual-table-panel-H3MFN25G.js rename dist/{data-table-virtual-table-panel-7K3LOTBT.js.map => data-table-virtual-table-panel-H3MFN25G.js.map} (62%) rename dist/{ui-kit-B3pF-Pxw.d.ts => ui-kit-D2knVOJ4.d.ts} (98%) create mode 100644 src/core/data-table/data-table-correctness.test.ts diff --git a/README.md b/README.md index 770370e..eeafac9 100644 --- a/README.md +++ b/README.md @@ -26,12 +26,13 @@ Dedicated subpath exports are also available: - `data-table-pro/advanced`: advanced composition hooks, panels, and adapter helpers - `data-table-pro/types`: public TypeScript types -The current 4.0 feature set includes client/manual filtering, sorting and +The current feature set includes client/manual filtering, sorting and pagination, unknown-total pagination, selection, detail panels, table/card views, row/card virtualization, nested column groups, column sizing/order/pinning/visibility, versioned persistence, named saved views, versioned URL state, CSV export, inline row editing, density controls, -loading/empty states, summary rows, infinite loading, and host-owned +loading/empty states, summary rows, alternate row shading, infinite loading, +and host-owned drag/upload integrations. See [`docs/API.md`](./docs/API.md) for the complete contract. @@ -117,9 +118,9 @@ import { DataTable } from "data-table-pro/virtual"; The existing base entrypoints remain source-compatible with `virtualization`. They load the virtual row/card implementation only when the -prop enables it and render the complete non-virtual view as the Suspense -fallback. Applications that never enable virtualization do not statically -load `@tanstack/react-virtual`. +prop enables it and render a bounded initial set as the Suspense fallback +(20 rows or 12 cards by default). Applications that never enable +virtualization do not statically load `@tanstack/react-virtual`. Custom adapter authors should use `createDataTable` from `data-table-pro/adapter`, or `createVirtualDataTable` from @@ -163,8 +164,14 @@ Always import: `data-table-pro/styles.css` provides: -- Tailwind package scanning for the built output -- the package-owned container query helpers used by column `hideOn` +- Tailwind package scanning for built JavaScript output +- package-owned inline-size container queries used by column `hideOn` and the toolbar + +Responsive behavior is based on the table's allocated width, not the browser +viewport. The package uses fixed `sm`/`md`/`lg`/`xl`/`2xl` thresholds of +640/768/1024/1280/1536px for both CSS presentation and TanStack column state; +host Tailwind breakpoint customization and root font-size changes do not alter +these thresholds. It does not provide: @@ -216,6 +223,7 @@ Card mode can virtualize large card sets: card: { enabled: true, estimateCardHeight: 280, + fallbackCardCount: 12, overscan: 4, lanes: "auto", }, @@ -223,7 +231,7 @@ Card mode can virtualize large card sets: /> ``` -`virtualization.card.lanes` accepts a positive number or `"auto"`. `"auto"` derives lanes from the card viewport width, and the table renders the full card set until the scroll viewport is measurable so first paint is never blank. +`virtualization.card.lanes` accepts a positive number or `"auto"`. `"auto"` derives lanes from the card viewport width. Before the scroll viewport is measurable, `fallbackCardCount` bounds first-paint work so large card collections do not mount in full. ## Adapter Requirements diff --git a/api-snapshots/public-api.md b/api-snapshots/public-api.md index 64df638..e11e8d4 100644 --- a/api-snapshots/public-api.md +++ b/api-snapshots/public-api.md @@ -64,10 +64,10 @@ This file is generated by `pnpm api:update`. Review changes to it as public API ```ts import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; -declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; export { DataTable, DataTableProps }; ``` @@ -77,10 +77,10 @@ export { DataTable, DataTableProps }; ```ts import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; -declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; export { DataTable, DataTableProps }; ``` @@ -90,10 +90,10 @@ export { DataTable, DataTableProps }; ```ts import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; -declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; export { DataTable, DataTableProps }; ``` @@ -103,10 +103,10 @@ export { DataTable, DataTableProps }; ```ts import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; -declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; export { DataTable, DataTableProps }; ``` @@ -116,10 +116,10 @@ export { DataTable, DataTableProps }; ```ts import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; -declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; export { DataTable, DataTableProps }; ``` @@ -129,10 +129,10 @@ export { DataTable, DataTableProps }; ```ts import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; -declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; export { DataTable, DataTableProps }; ``` @@ -218,14 +218,15 @@ import * as React from 'react'; import * as _tanstack_react_table from '@tanstack/react-table'; import { Row, ColumnSizingState, Column, Table, Cell, PaginationState, SortingState, Header, Updater, ColumnDef, ColumnFiltersState, ColumnOrderState, ColumnPinningState, ExpandedState, VisibilityState, FilterFnOption, OnChangeFn } from '@tanstack/react-table'; import { DataTableProps, DataTableLabels, DataTableColumnDef, DataTableDensity, DataTableRowLoadingState, DataTableEditableRowsConfig, DataTableRowAction } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDragAndDropConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; -import { D as DataTableUiKit, a as DataTableUiClassNames } from './ui-kit-B3pF-Pxw.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDragAndDropConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowClassNameContext, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +import { D as DataTableUiKit, a as DataTableUiClassNames } from './ui-kit-D2knVOJ4.js'; type DataTableCardPanelProps = { cardClassName: string | undefined; cardGridClassName: string | undefined; cardSizing: DataTableProps["cardSizing"]; cardRenderer: NonNullable["cardRenderer"]>; + containerWidth: number; currentRowSelection: Record; DataTableCardView: React.ElementType; DataTableEmptyState: React.ElementType; @@ -289,10 +290,13 @@ declare function useColumnLayout({ columns, columnSizing, editableRows, e }; type DataTableTablePanelProps = { + ariaDescribedBy: string | undefined; + ariaLabelledBy: string | undefined; bodyRowComponents: Pick; columnLayouts: ReadonlyMap; currentDensity: DataTableDensity; currentSorting: DataTableProps["sorting"]; + dir: NonNullable["dir"]>; DataTableEmptyState: React.ElementType; dragAndDrop: DataTableProps["dragAndDrop"]; draggedColumnIdRef: React.RefObject; @@ -327,6 +331,7 @@ type DataTableTablePanelProps = { setDraftValues: React.Dispatch>>; shouldRenderInitialLoading: boolean; stickyHeader: boolean; + stripedRows: boolean; summaryRows: NonNullable["summaryRows"]>; table: Table; tableClassName: string | undefined; @@ -348,7 +353,7 @@ type DataTableTablePanelProps = { visibleLeafColumnCount: number; visibleLeafColumns: Array>; }; -declare function DataTableTablePanel({ bodyRowComponents, columnLayouts, currentDensity, currentSorting, DataTableEmptyState, dragAndDrop, draggedColumnIdRef, draftValues, editingRowId, emptyNode, enableColumnReordering, enableColumnResizing, explicitCustomCellColumnIds, fillMinWidth, flexGrow, getColumnLayout, getRowClassName, getRowLoadingState, infiniteScroll, layoutMode, localSearchValue, onRowClick, primeColumnForResize, renderedRows, renderExpandedRow, reorderColumn, resetColumnSize, resolvedLabels, rowsToRender, ScrollArea, ScrollBar, sentinelRef, setDraftValues, shouldRenderInitialLoading, stickyHeader, summaryRows, table, tableClassName, tableContainerClassName, Table, TableBody, TableCell, TableFooter, TableHead, TableHeader, TableRow, tableScrollContainerRef, uiClassNames, virtualPaddingBottom, virtualPaddingTop, visibleLeafColumnCount, visibleLeafColumns, }: DataTableTablePanelProps): React.JSX.Element; +declare function DataTableTablePanel({ ariaDescribedBy, ariaLabelledBy, bodyRowComponents, columnLayouts, currentDensity, currentSorting, dir, DataTableEmptyState, dragAndDrop, draggedColumnIdRef, draftValues, editingRowId, emptyNode, enableColumnReordering, enableColumnResizing, explicitCustomCellColumnIds, fillMinWidth, flexGrow, getColumnLayout, getRowClassName, getRowLoadingState, infiniteScroll, layoutMode, localSearchValue, onRowClick, primeColumnForResize, renderedRows, renderExpandedRow, reorderColumn, resetColumnSize, resolvedLabels, rowsToRender, ScrollArea, ScrollBar, sentinelRef, setDraftValues, shouldRenderInitialLoading, stickyHeader, stripedRows, summaryRows, table, tableClassName, tableContainerClassName, Table, TableBody, TableCell, TableFooter, TableHead, TableHeader, TableRow, tableScrollContainerRef, uiClassNames, virtualPaddingBottom, virtualPaddingTop, visibleLeafColumnCount, visibleLeafColumns, }: DataTableTablePanelProps): React.JSX.Element; type DataTableBodyRowProps = { columnLayouts: ReadonlyMap; @@ -370,11 +375,12 @@ type DataTableBodyRowProps = { row: Row; rowIndex: number; setDraftValues: React.Dispatch>>; + stripedRows: boolean; uiClassNames: DataTableUiClassNames; visibleCells: Array>; visibleLeafColumnCount: number; }; -declare function DataTableBodyRowInner({ columnLayouts, components, currentDensity, draftValues, dragAndDrop, explicitCustomCellColumnIds, getRowClassName, isDraggable, isEditing, isExpanded, isInitialLoadingRow, isSelected, loadingState, onRowClick, originalRow, renderExpandedRow, row, setDraftValues, uiClassNames, visibleCells, visibleLeafColumnCount, }: DataTableBodyRowProps): React.JSX.Element; +declare function DataTableBodyRowInner({ columnLayouts, components, currentDensity, draftValues, dragAndDrop, explicitCustomCellColumnIds, getRowClassName, isDraggable, isEditing, isExpanded, isInitialLoadingRow, isSelected, loadingState, onRowClick, originalRow, renderExpandedRow, row, rowIndex, setDraftValues, stripedRows, uiClassNames, visibleCells, visibleLeafColumnCount, }: DataTableBodyRowProps): React.JSX.Element; declare const DataTableBodyRow: typeof DataTableBodyRowInner; type DataTableFooterSectionProps = { @@ -395,6 +401,7 @@ declare function DataTableFooterSection({ children, currentPagination, DataTable type DataTableHeaderCellProps = { currentDensity: DataTableDensity; currentSorting: SortingState; + dir: NonNullable["dir"]>; draggedColumnIdRef: React.MutableRefObject; enableColumnReordering: boolean; enableColumnResizing: boolean; @@ -403,12 +410,13 @@ type DataTableHeaderCellProps = { layout: DataTableColumnLayout; primeColumnForResize: (columnId: string, currentSize: number) => void; reorderColumn: (sourceColumnId: string, targetColumnId: string) => void; + resizeColumnLabel: string; resetColumnSize: (columnId: string) => void; selectionState?: boolean | "indeterminate"; TableHead: DataTableUiKit["TableHead"]; uiClassNames: DataTableUiClassNames; }; -declare function DataTableHeaderCellInner({ currentDensity, currentSorting, draggedColumnIdRef, enableColumnReordering, enableColumnResizing, header, headerGroupHeaders, layout, primeColumnForResize, reorderColumn, resetColumnSize, TableHead, uiClassNames, }: DataTableHeaderCellProps): React.JSX.Element; +declare function DataTableHeaderCellInner({ currentDensity, currentSorting, dir, draggedColumnIdRef, enableColumnReordering, enableColumnResizing, header, headerGroupHeaders, layout, primeColumnForResize, reorderColumn, resizeColumnLabel, resetColumnSize, TableHead, uiClassNames, }: DataTableHeaderCellProps): React.JSX.Element; declare const DataTableHeaderCell: typeof DataTableHeaderCellInner; type DataTableToolbarSectionProps = { @@ -419,6 +427,7 @@ type DataTableToolbarSectionProps = { customToolbar: React.ReactNode; DataTableToolbar: React.ElementType; description: string | undefined; + descriptionId: string | undefined; effectiveToolbarActions: Array; enableColumnPinning: boolean; enableDensityToggle: boolean; @@ -438,13 +447,14 @@ type DataTableToolbarSectionProps = { showHiddenRows: boolean; table: Table; title: string | undefined; + titleId: string | undefined; toolbarQueryPlaceholder: string; toolbarQueryValue: string; toolbarVisibility: DataTableProps["toolbarVisibility"]; density: "compact" | "comfortable" | "spacious"; viewMode: "table" | "card"; }; -declare function DataTableToolbarSection({ allRows, columnFilters, columnVisibilityOptions, compactToolbar, customToolbar, DataTableToolbar, description, effectiveToolbarActions, enableColumnPinning, enableDensityToggle, enableViewToggle, hiddenRowsLabel, labels, onClearColumnFilters, onColumnFilterChange, onColumnPinningChange, onDensityChange, onShowHiddenRowsChange, onToolbarQueryValueChange, onViewModeChange, openFileDialog, selectedRows, selectionActions, showHiddenRows, table, title, toolbarQueryPlaceholder, toolbarQueryValue, toolbarVisibility, density, viewMode, }: DataTableToolbarSectionProps): React.JSX.Element; +declare function DataTableToolbarSection({ allRows, columnFilters, columnVisibilityOptions, compactToolbar, customToolbar, DataTableToolbar, description, descriptionId, effectiveToolbarActions, enableColumnPinning, enableDensityToggle, enableViewToggle, hiddenRowsLabel, labels, onClearColumnFilters, onColumnFilterChange, onColumnPinningChange, onDensityChange, onShowHiddenRowsChange, onToolbarQueryValueChange, onViewModeChange, openFileDialog, selectedRows, selectionActions, showHiddenRows, table, title, titleId, toolbarQueryPlaceholder, toolbarQueryValue, toolbarVisibility, density, viewMode, }: DataTableToolbarSectionProps): React.JSX.Element; declare function useControllableState({ defaultValue, onChange, value, }: { defaultValue: T | (() => T); @@ -484,9 +494,10 @@ declare function useDataTableColumns({ Button, Checkbox, DataTableRowActi tableRef: React.RefObject | null>; }): ColumnDef[]; -declare function useDataTableInstance({ autoResetPageIndex, columnResizeMode, currentColumnFilters, currentColumnOrder, currentColumnPinning, currentColumnSizing, currentExpanded, currentPagination, currentRowSelection, currentSorting, defaultColumn, effectiveColumnVisibility, enableColumnResizing, enableRowSelection, getRowCanExpand, globalFilterFn, globalFilterValue, hasNextPage, handleColumnFiltersChange, handleColumnOrderChange, handleColumnPinningChange, handleColumnVisibilityChange, handleExpandedChange, infiniteScroll, manualFiltering, manualPagination, manualSorting, onActionError, onPageIndexChange, onPageSizeChange, pageCount, pageIndex, pageSize, renderExpandedRow, setCurrentRowSelection, setCurrentSorting, setLocalColumnSizing, setLocalPagination, shouldRenderInitialLoading, tableColumns, tableData, tableGetRowId, tableRef, totalRowCount, }: { +declare function useDataTableInstance({ autoResetPageIndex, columnResizeMode, dir, currentColumnFilters, currentColumnOrder, currentColumnPinning, currentColumnSizing, currentExpanded, currentPagination, currentRowSelection, currentSorting, defaultColumn, effectiveColumnVisibility, enableColumnResizing, enableRowSelection, getRowCanExpand, globalFilterFn, globalFilterValue, hasNextPage, handleColumnFiltersChange, handleColumnOrderChange, handleColumnPinningChange, handleColumnVisibilityChange, handleExpandedChange, infiniteScroll, manualFiltering, manualPagination, manualSorting, onActionError, onPageIndexChange, onPageSizeChange, pageCount, pageIndex, pageSize, renderExpandedRow, setCurrentRowSelection, setCurrentSorting, setLocalColumnSizing, setLocalPagination, shouldRenderInitialLoading, tableColumns, tableData, tableGetRowId, tableRef, totalRowCount, virtualization, }: { autoResetPageIndex: boolean; columnResizeMode: DataTableProps["columnResizeMode"]; + dir: NonNullable["dir"]>; currentColumnFilters: ColumnFiltersState; currentColumnOrder: ColumnOrderState; currentColumnPinning: ColumnPinningState; @@ -608,6 +619,7 @@ declare function useDataTableState({ columnFilters, columnOrder, columnPi viewMode: DataTableProps["viewMode"]; containerRef: React.RefObject; }): { + containerWidth: number; currentColumnFilters: ColumnFiltersState; currentColumnOrder: ColumnOrderState; currentColumnPinning: ColumnPinningState; @@ -675,11 +687,11 @@ export { DataTableBodyRow, DataTableCardPanel, DataTableColumnDef, type DataTabl ```ts import * as React from 'react'; import { DataTableProps } from './types.js'; -import { D as DataTableUiKit } from './ui-kit-B3pF-Pxw.js'; -export { a as DataTableUiClassNames } from './ui-kit-B3pF-Pxw.js'; +import { D as DataTableUiKit } from './ui-kit-D2knVOJ4.js'; +export { a as DataTableUiClassNames } from './ui-kit-D2knVOJ4.js'; import '@tanstack/react-table'; -declare function createDataTable(ui: DataTableUiKit): ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare function createDataTable(ui: DataTableUiKit): ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; declare const primitiveUiKit: DataTableUiKit; @@ -691,11 +703,11 @@ export { DataTableUiKit, createDataTable, primitiveUiKit }; ```ts import * as React from 'react'; import { DataTableProps } from './types.js'; -import { D as DataTableUiKit } from './ui-kit-B3pF-Pxw.js'; -export { a as DataTableUiClassNames } from './ui-kit-B3pF-Pxw.js'; +import { D as DataTableUiKit } from './ui-kit-D2knVOJ4.js'; +export { a as DataTableUiClassNames } from './ui-kit-D2knVOJ4.js'; import '@tanstack/react-table'; -declare function createVirtualDataTable(ui: DataTableUiKit): ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare function createVirtualDataTable(ui: DataTableUiKit): ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; export { DataTableUiKit, createVirtualDataTable }; ``` @@ -889,12 +901,14 @@ type DataTableFileUploadConfig = { type DataTableVirtualizationConfig = { enabled?: boolean; estimateRowHeight?: number; + fallbackRowCount?: number; overscan?: number; card?: DataTableCardVirtualizationConfig; }; type DataTableCardVirtualizationConfig = { enabled?: boolean; estimateCardHeight?: number; + fallbackCardCount?: number; overscan?: number; lanes?: number | "auto"; }; @@ -1076,6 +1090,7 @@ type DataTableLabels = { pinLeft: string; pinRight: string; unpin: string; + resizeColumn: (columnLabel: string) => string; }; type DataTableSummaryRow = { key: string; @@ -1085,6 +1100,15 @@ type DataTableSummaryRow = { columnId: string; }) => React.ReactNode)>; }; +type DataTableRowClassNameContext = { + row: TData; + rowId: string; + rowIndex: number; + isEditing: boolean; + isExpanded: boolean; + isLoading: boolean; + isSelected: boolean; +}; type DataTableProps = { columns: Array>; data: Array; @@ -1177,7 +1201,8 @@ type DataTableProps = { className?: string; tableClassName?: string; tableContainerClassName?: string; - getRowClassName?: (row: TData) => string | undefined; + stripedRows?: boolean; + getRowClassName?: (row: TData, context: DataTableRowClassNameContext) => string | undefined; onRowClick?: (context: { row: TData; rowId: string; @@ -1199,5 +1224,5 @@ declare function hideOnClassName(hideOn: DataTableContainerBreakpoint | Array | undefined, containerWidth: number): boolean; declare function rowSelectionStateFromRows(rows: Array>): TData[]; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, type DataTableActionErrorContext, type DataTableActionErrorSource, type DataTableAlign, type DataTableApi, type DataTableCardRendererProps, type DataTableCardSizing, type DataTableCardVirtualizationConfig, type DataTableCellEditRenderProps, type DataTableCellOverflow, type DataTableColumnDef, type DataTableColumnFilterConfig, type DataTableColumnFilterOption, type DataTableColumnFilterType, type DataTableColumnFixed, type DataTableColumnGroupDef, type DataTableColumnMeta, type DataTableColumnPrefs, type DataTableColumnType, type DataTableColumnVisibilityOption, type DataTableContainerBreakpoint, type DataTableCsvExportOptions, type DataTableCsvExportScope, type DataTableDensity, type DataTableDragAndDropConfig, type DataTableEditableRowsConfig, type DataTableEmptyStateContext, type DataTableExpandedRowProps, type DataTableFileUploadConfig, type DataTableHiddenRowsConfig, type DataTableInfiniteScroll, type DataTableInitialState, type DataTableLabels, type DataTableLoadingState, type DataTablePersistenceConfig, type DataTablePersistenceOperation, type DataTablePersistencePayload, type DataTablePersistenceSlice, type DataTablePersistenceStorage, type DataTableProps, type DataTableResetOptions, type DataTableRowAction, type DataTableRowLoadingState, type DataTableSavedView, type DataTableSavedViewSlice, type DataTableSavedViewsChangeOperation, type DataTableSavedViewsConfig, type DataTableSavedViewsPayload, type DataTableSelectionAction, type DataTableState, type DataTableSummaryRow, type DataTableToolbarAction, type DataTableToolbarVisibility, type DataTableViewMode, type DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows }; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, type DataTableActionErrorContext, type DataTableActionErrorSource, type DataTableAlign, type DataTableApi, type DataTableCardRendererProps, type DataTableCardSizing, type DataTableCardVirtualizationConfig, type DataTableCellEditRenderProps, type DataTableCellOverflow, type DataTableColumnDef, type DataTableColumnFilterConfig, type DataTableColumnFilterOption, type DataTableColumnFilterType, type DataTableColumnFixed, type DataTableColumnGroupDef, type DataTableColumnMeta, type DataTableColumnPrefs, type DataTableColumnType, type DataTableColumnVisibilityOption, type DataTableContainerBreakpoint, type DataTableCsvExportOptions, type DataTableCsvExportScope, type DataTableDensity, type DataTableDragAndDropConfig, type DataTableEditableRowsConfig, type DataTableEmptyStateContext, type DataTableExpandedRowProps, type DataTableFileUploadConfig, type DataTableHiddenRowsConfig, type DataTableInfiniteScroll, type DataTableInitialState, type DataTableLabels, type DataTableLoadingState, type DataTablePersistenceConfig, type DataTablePersistenceOperation, type DataTablePersistencePayload, type DataTablePersistenceSlice, type DataTablePersistenceStorage, type DataTableProps, type DataTableResetOptions, type DataTableRowAction, type DataTableRowClassNameContext, type DataTableRowLoadingState, type DataTableSavedView, type DataTableSavedViewSlice, type DataTableSavedViewsChangeOperation, type DataTableSavedViewsConfig, type DataTableSavedViewsPayload, type DataTableSelectionAction, type DataTableState, type DataTableSummaryRow, type DataTableToolbarAction, type DataTableToolbarVisibility, type DataTableViewMode, type DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows }; ``` diff --git a/browser-tests/data-table.spec.ts b/browser-tests/data-table.spec.ts index 762071b..f19243e 100644 --- a/browser-tests/data-table.spec.ts +++ b/browser-tests/data-table.spec.ts @@ -131,3 +131,50 @@ for (const adapter of adapters) { }); } } + +test("responsive behavior follows table container boundaries", async ({ + page, +}) => { + await page.goto("/"); + + const table = page.locator('[data-dtp-slot="data-table-root"]').first(); + const setContainerWidth = async (width: number) => { + await table.evaluate((element, nextWidth) => { + element.style.flex = "none"; + element.style.maxWidth = "none"; + element.style.width = `${nextWidth}px`; + }, width); + await expect(table).toHaveCSS("width", `${width}px`); + }; + const header = (columnId: string) => + table.locator(`thead [data-column-id="${columnId}"]`); + + await setContainerWidth(639); + await expect(header("department")).toHaveCount(0); + + await setContainerWidth(640); + await expect(header("department")).toBeVisible(); + + await setContainerWidth(767); + await expect(header("role")).toHaveCount(0); + await expect( + table.getByRole("button", { name: "Search table" }), + ).toBeVisible(); + + await setContainerWidth(768); + await expect(header("role")).toBeVisible(); + await expect(table.getByPlaceholder("Search rows...")).toBeVisible(); + + await setContainerWidth(1023); + await expect(header("location")).toHaveCount(0); + + await setContainerWidth(1024); + await expect(header("location")).toBeVisible(); + + await page.evaluate(() => { + document.documentElement.style.fontSize = "20px"; + }); + await setContainerWidth(768); + await expect(header("role")).toBeVisible(); + await expect(header("location")).toHaveCount(0); +}); diff --git a/dist/adapter-virtual.d.ts b/dist/adapter-virtual.d.ts index 9ffd4dc..ae992dc 100644 --- a/dist/adapter-virtual.d.ts +++ b/dist/adapter-virtual.d.ts @@ -1,9 +1,9 @@ import * as React from 'react'; import { DataTableProps } from './types.js'; -import { D as DataTableUiKit } from './ui-kit-B3pF-Pxw.js'; -export { a as DataTableUiClassNames } from './ui-kit-B3pF-Pxw.js'; +import { D as DataTableUiKit } from './ui-kit-D2knVOJ4.js'; +export { a as DataTableUiClassNames } from './ui-kit-D2knVOJ4.js'; import '@tanstack/react-table'; -declare function createVirtualDataTable(ui: DataTableUiKit): ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare function createVirtualDataTable(ui: DataTableUiKit): ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; export { DataTableUiKit, createVirtualDataTable }; diff --git a/dist/adapter-virtual.js b/dist/adapter-virtual.js index 674371e..94e716c 100644 --- a/dist/adapter-virtual.js +++ b/dist/adapter-virtual.js @@ -1,2 +1,2 @@ -export{a as createVirtualDataTable}from'./chunk-Y2VSRDR3.js';import'./chunk-U5TIDLB3.js';import'./chunk-JYNJ2FDX.js';import'./chunk-54H6DRO6.js';import'./chunk-M77BQPKU.js';import'./chunk-ZGXFBFNQ.js';import'./chunk-PFB5LOU7.js';//# sourceMappingURL=adapter-virtual.js.map +export{a as createVirtualDataTable}from'./chunk-ICUHQJ2O.js';import'./chunk-FXX3TZ63.js';import'./chunk-TUHIU4D7.js';import'./chunk-ICUCANNA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-32UNH3MQ.js';import'./chunk-674VSOYY.js';//# sourceMappingURL=adapter-virtual.js.map //# sourceMappingURL=adapter-virtual.js.map \ No newline at end of file diff --git a/dist/adapter.d.ts b/dist/adapter.d.ts index cb25442..9cb057c 100644 --- a/dist/adapter.d.ts +++ b/dist/adapter.d.ts @@ -1,10 +1,10 @@ import * as React from 'react'; import { DataTableProps } from './types.js'; -import { D as DataTableUiKit } from './ui-kit-B3pF-Pxw.js'; -export { a as DataTableUiClassNames } from './ui-kit-B3pF-Pxw.js'; +import { D as DataTableUiKit } from './ui-kit-D2knVOJ4.js'; +export { a as DataTableUiClassNames } from './ui-kit-D2knVOJ4.js'; import '@tanstack/react-table'; -declare function createDataTable(ui: DataTableUiKit): ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare function createDataTable(ui: DataTableUiKit): ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; declare const primitiveUiKit: DataTableUiKit; diff --git a/dist/adapter.js b/dist/adapter.js index c7ec169..0a41ff3 100644 --- a/dist/adapter.js +++ b/dist/adapter.js @@ -1,2 +1,2 @@ -export{X as primitiveUiKit}from'./chunk-7EXRF7VC.js';export{i as createDataTable}from'./chunk-54H6DRO6.js';import'./chunk-M77BQPKU.js';import'./chunk-ZGXFBFNQ.js';import'./chunk-PFB5LOU7.js';//# sourceMappingURL=adapter.js.map +export{X as primitiveUiKit}from'./chunk-ERWHHOBD.js';export{i as createDataTable}from'./chunk-ICUCANNA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-32UNH3MQ.js';import'./chunk-674VSOYY.js';//# sourceMappingURL=adapter.js.map //# sourceMappingURL=adapter.js.map \ No newline at end of file diff --git a/dist/advanced.d.ts b/dist/advanced.d.ts index 9aa9389..f2d49be 100644 --- a/dist/advanced.d.ts +++ b/dist/advanced.d.ts @@ -3,14 +3,15 @@ import * as React from 'react'; import * as _tanstack_react_table from '@tanstack/react-table'; import { Row, ColumnSizingState, Column, Table, Cell, PaginationState, SortingState, Header, Updater, ColumnDef, ColumnFiltersState, ColumnOrderState, ColumnPinningState, ExpandedState, VisibilityState, FilterFnOption, OnChangeFn } from '@tanstack/react-table'; import { DataTableProps, DataTableLabels, DataTableColumnDef, DataTableDensity, DataTableRowLoadingState, DataTableEditableRowsConfig, DataTableRowAction } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDragAndDropConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; -import { D as DataTableUiKit, a as DataTableUiClassNames } from './ui-kit-B3pF-Pxw.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDragAndDropConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowClassNameContext, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +import { D as DataTableUiKit, a as DataTableUiClassNames } from './ui-kit-D2knVOJ4.js'; type DataTableCardPanelProps = { cardClassName: string | undefined; cardGridClassName: string | undefined; cardSizing: DataTableProps["cardSizing"]; cardRenderer: NonNullable["cardRenderer"]>; + containerWidth: number; currentRowSelection: Record; DataTableCardView: React.ElementType; DataTableEmptyState: React.ElementType; @@ -74,10 +75,13 @@ declare function useColumnLayout({ columns, columnSizing, editableRows, e }; type DataTableTablePanelProps = { + ariaDescribedBy: string | undefined; + ariaLabelledBy: string | undefined; bodyRowComponents: Pick; columnLayouts: ReadonlyMap; currentDensity: DataTableDensity; currentSorting: DataTableProps["sorting"]; + dir: NonNullable["dir"]>; DataTableEmptyState: React.ElementType; dragAndDrop: DataTableProps["dragAndDrop"]; draggedColumnIdRef: React.RefObject; @@ -112,6 +116,7 @@ type DataTableTablePanelProps = { setDraftValues: React.Dispatch>>; shouldRenderInitialLoading: boolean; stickyHeader: boolean; + stripedRows: boolean; summaryRows: NonNullable["summaryRows"]>; table: Table; tableClassName: string | undefined; @@ -133,7 +138,7 @@ type DataTableTablePanelProps = { visibleLeafColumnCount: number; visibleLeafColumns: Array>; }; -declare function DataTableTablePanel({ bodyRowComponents, columnLayouts, currentDensity, currentSorting, DataTableEmptyState, dragAndDrop, draggedColumnIdRef, draftValues, editingRowId, emptyNode, enableColumnReordering, enableColumnResizing, explicitCustomCellColumnIds, fillMinWidth, flexGrow, getColumnLayout, getRowClassName, getRowLoadingState, infiniteScroll, layoutMode, localSearchValue, onRowClick, primeColumnForResize, renderedRows, renderExpandedRow, reorderColumn, resetColumnSize, resolvedLabels, rowsToRender, ScrollArea, ScrollBar, sentinelRef, setDraftValues, shouldRenderInitialLoading, stickyHeader, summaryRows, table, tableClassName, tableContainerClassName, Table, TableBody, TableCell, TableFooter, TableHead, TableHeader, TableRow, tableScrollContainerRef, uiClassNames, virtualPaddingBottom, virtualPaddingTop, visibleLeafColumnCount, visibleLeafColumns, }: DataTableTablePanelProps): React.JSX.Element; +declare function DataTableTablePanel({ ariaDescribedBy, ariaLabelledBy, bodyRowComponents, columnLayouts, currentDensity, currentSorting, dir, DataTableEmptyState, dragAndDrop, draggedColumnIdRef, draftValues, editingRowId, emptyNode, enableColumnReordering, enableColumnResizing, explicitCustomCellColumnIds, fillMinWidth, flexGrow, getColumnLayout, getRowClassName, getRowLoadingState, infiniteScroll, layoutMode, localSearchValue, onRowClick, primeColumnForResize, renderedRows, renderExpandedRow, reorderColumn, resetColumnSize, resolvedLabels, rowsToRender, ScrollArea, ScrollBar, sentinelRef, setDraftValues, shouldRenderInitialLoading, stickyHeader, stripedRows, summaryRows, table, tableClassName, tableContainerClassName, Table, TableBody, TableCell, TableFooter, TableHead, TableHeader, TableRow, tableScrollContainerRef, uiClassNames, virtualPaddingBottom, virtualPaddingTop, visibleLeafColumnCount, visibleLeafColumns, }: DataTableTablePanelProps): React.JSX.Element; type DataTableBodyRowProps = { columnLayouts: ReadonlyMap; @@ -155,11 +160,12 @@ type DataTableBodyRowProps = { row: Row; rowIndex: number; setDraftValues: React.Dispatch>>; + stripedRows: boolean; uiClassNames: DataTableUiClassNames; visibleCells: Array>; visibleLeafColumnCount: number; }; -declare function DataTableBodyRowInner({ columnLayouts, components, currentDensity, draftValues, dragAndDrop, explicitCustomCellColumnIds, getRowClassName, isDraggable, isEditing, isExpanded, isInitialLoadingRow, isSelected, loadingState, onRowClick, originalRow, renderExpandedRow, row, setDraftValues, uiClassNames, visibleCells, visibleLeafColumnCount, }: DataTableBodyRowProps): React.JSX.Element; +declare function DataTableBodyRowInner({ columnLayouts, components, currentDensity, draftValues, dragAndDrop, explicitCustomCellColumnIds, getRowClassName, isDraggable, isEditing, isExpanded, isInitialLoadingRow, isSelected, loadingState, onRowClick, originalRow, renderExpandedRow, row, rowIndex, setDraftValues, stripedRows, uiClassNames, visibleCells, visibleLeafColumnCount, }: DataTableBodyRowProps): React.JSX.Element; declare const DataTableBodyRow: typeof DataTableBodyRowInner; type DataTableFooterSectionProps = { @@ -180,6 +186,7 @@ declare function DataTableFooterSection({ children, currentPagination, DataTable type DataTableHeaderCellProps = { currentDensity: DataTableDensity; currentSorting: SortingState; + dir: NonNullable["dir"]>; draggedColumnIdRef: React.MutableRefObject; enableColumnReordering: boolean; enableColumnResizing: boolean; @@ -188,12 +195,13 @@ type DataTableHeaderCellProps = { layout: DataTableColumnLayout; primeColumnForResize: (columnId: string, currentSize: number) => void; reorderColumn: (sourceColumnId: string, targetColumnId: string) => void; + resizeColumnLabel: string; resetColumnSize: (columnId: string) => void; selectionState?: boolean | "indeterminate"; TableHead: DataTableUiKit["TableHead"]; uiClassNames: DataTableUiClassNames; }; -declare function DataTableHeaderCellInner({ currentDensity, currentSorting, draggedColumnIdRef, enableColumnReordering, enableColumnResizing, header, headerGroupHeaders, layout, primeColumnForResize, reorderColumn, resetColumnSize, TableHead, uiClassNames, }: DataTableHeaderCellProps): React.JSX.Element; +declare function DataTableHeaderCellInner({ currentDensity, currentSorting, dir, draggedColumnIdRef, enableColumnReordering, enableColumnResizing, header, headerGroupHeaders, layout, primeColumnForResize, reorderColumn, resizeColumnLabel, resetColumnSize, TableHead, uiClassNames, }: DataTableHeaderCellProps): React.JSX.Element; declare const DataTableHeaderCell: typeof DataTableHeaderCellInner; type DataTableToolbarSectionProps = { @@ -204,6 +212,7 @@ type DataTableToolbarSectionProps = { customToolbar: React.ReactNode; DataTableToolbar: React.ElementType; description: string | undefined; + descriptionId: string | undefined; effectiveToolbarActions: Array; enableColumnPinning: boolean; enableDensityToggle: boolean; @@ -223,13 +232,14 @@ type DataTableToolbarSectionProps = { showHiddenRows: boolean; table: Table; title: string | undefined; + titleId: string | undefined; toolbarQueryPlaceholder: string; toolbarQueryValue: string; toolbarVisibility: DataTableProps["toolbarVisibility"]; density: "compact" | "comfortable" | "spacious"; viewMode: "table" | "card"; }; -declare function DataTableToolbarSection({ allRows, columnFilters, columnVisibilityOptions, compactToolbar, customToolbar, DataTableToolbar, description, effectiveToolbarActions, enableColumnPinning, enableDensityToggle, enableViewToggle, hiddenRowsLabel, labels, onClearColumnFilters, onColumnFilterChange, onColumnPinningChange, onDensityChange, onShowHiddenRowsChange, onToolbarQueryValueChange, onViewModeChange, openFileDialog, selectedRows, selectionActions, showHiddenRows, table, title, toolbarQueryPlaceholder, toolbarQueryValue, toolbarVisibility, density, viewMode, }: DataTableToolbarSectionProps): React.JSX.Element; +declare function DataTableToolbarSection({ allRows, columnFilters, columnVisibilityOptions, compactToolbar, customToolbar, DataTableToolbar, description, descriptionId, effectiveToolbarActions, enableColumnPinning, enableDensityToggle, enableViewToggle, hiddenRowsLabel, labels, onClearColumnFilters, onColumnFilterChange, onColumnPinningChange, onDensityChange, onShowHiddenRowsChange, onToolbarQueryValueChange, onViewModeChange, openFileDialog, selectedRows, selectionActions, showHiddenRows, table, title, titleId, toolbarQueryPlaceholder, toolbarQueryValue, toolbarVisibility, density, viewMode, }: DataTableToolbarSectionProps): React.JSX.Element; declare function useControllableState({ defaultValue, onChange, value, }: { defaultValue: T | (() => T); @@ -269,9 +279,10 @@ declare function useDataTableColumns({ Button, Checkbox, DataTableRowActi tableRef: React.RefObject | null>; }): ColumnDef[]; -declare function useDataTableInstance({ autoResetPageIndex, columnResizeMode, currentColumnFilters, currentColumnOrder, currentColumnPinning, currentColumnSizing, currentExpanded, currentPagination, currentRowSelection, currentSorting, defaultColumn, effectiveColumnVisibility, enableColumnResizing, enableRowSelection, getRowCanExpand, globalFilterFn, globalFilterValue, hasNextPage, handleColumnFiltersChange, handleColumnOrderChange, handleColumnPinningChange, handleColumnVisibilityChange, handleExpandedChange, infiniteScroll, manualFiltering, manualPagination, manualSorting, onActionError, onPageIndexChange, onPageSizeChange, pageCount, pageIndex, pageSize, renderExpandedRow, setCurrentRowSelection, setCurrentSorting, setLocalColumnSizing, setLocalPagination, shouldRenderInitialLoading, tableColumns, tableData, tableGetRowId, tableRef, totalRowCount, }: { +declare function useDataTableInstance({ autoResetPageIndex, columnResizeMode, dir, currentColumnFilters, currentColumnOrder, currentColumnPinning, currentColumnSizing, currentExpanded, currentPagination, currentRowSelection, currentSorting, defaultColumn, effectiveColumnVisibility, enableColumnResizing, enableRowSelection, getRowCanExpand, globalFilterFn, globalFilterValue, hasNextPage, handleColumnFiltersChange, handleColumnOrderChange, handleColumnPinningChange, handleColumnVisibilityChange, handleExpandedChange, infiniteScroll, manualFiltering, manualPagination, manualSorting, onActionError, onPageIndexChange, onPageSizeChange, pageCount, pageIndex, pageSize, renderExpandedRow, setCurrentRowSelection, setCurrentSorting, setLocalColumnSizing, setLocalPagination, shouldRenderInitialLoading, tableColumns, tableData, tableGetRowId, tableRef, totalRowCount, virtualization, }: { autoResetPageIndex: boolean; columnResizeMode: DataTableProps["columnResizeMode"]; + dir: NonNullable["dir"]>; currentColumnFilters: ColumnFiltersState; currentColumnOrder: ColumnOrderState; currentColumnPinning: ColumnPinningState; @@ -393,6 +404,7 @@ declare function useDataTableState({ columnFilters, columnOrder, columnPi viewMode: DataTableProps["viewMode"]; containerRef: React.RefObject; }): { + containerWidth: number; currentColumnFilters: ColumnFiltersState; currentColumnOrder: ColumnOrderState; currentColumnPinning: ColumnPinningState; diff --git a/dist/advanced.js b/dist/advanced.js index d919b33..7cf9438 100644 --- a/dist/advanced.js +++ b/dist/advanced.js @@ -1,2 +1,2 @@ -export{X as primitiveUiKit}from'./chunk-7EXRF7VC.js';export{a as DataTableCardPanel,b as DataTableFooterSection,c as DataTableToolbarSection,i as createDataTable,h as useColumnLayout,f as useControllableState,d as useDataTableColumns,e as useDataTableInstance,g as useDataTableState}from'./chunk-54H6DRO6.js';import'./chunk-M77BQPKU.js';export{O as DataTableBodyRow,P as DataTableHeaderCell,Q as DataTableTablePanel,N as useRowEditing}from'./chunk-ZGXFBFNQ.js';import'./chunk-PFB5LOU7.js';import*as e from'react';function R(a){let t=e.useRef(a);return e.useLayoutEffect(()=>{t.current=a;}),e.useCallback((...o)=>t.current?.(...o),[])}export{R as useStableCallback};//# sourceMappingURL=advanced.js.map +export{X as primitiveUiKit}from'./chunk-ERWHHOBD.js';export{a as DataTableCardPanel,b as DataTableFooterSection,c as DataTableToolbarSection,i as createDataTable,h as useColumnLayout,f as useControllableState,d as useDataTableColumns,e as useDataTableInstance,g as useDataTableState}from'./chunk-ICUCANNA.js';import'./chunk-EJHT5JBZ.js';export{Q as DataTableBodyRow,R as DataTableHeaderCell,S as DataTableTablePanel,P as useRowEditing}from'./chunk-32UNH3MQ.js';import'./chunk-674VSOYY.js';import*as e from'react';function R(a){let t=e.useRef(a);return e.useLayoutEffect(()=>{t.current=a;}),e.useCallback((...o)=>t.current?.(...o),[])}export{R as useStableCallback};//# sourceMappingURL=advanced.js.map //# sourceMappingURL=advanced.js.map \ No newline at end of file diff --git a/dist/chunk-32UNH3MQ.js b/dist/chunk-32UNH3MQ.js new file mode 100644 index 0000000..2f1c767 --- /dev/null +++ b/dist/chunk-32UNH3MQ.js @@ -0,0 +1,3 @@ +import {i,a,h,g}from'./chunk-674VSOYY.js';import*as L from'react';import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {flexRender}from'@tanstack/react-table';var Se=Symbol("data-table-loading-row"),_t=50;function At(e){return Array.from({length:e},(t,a)=>({[Se]:true,index:a}))}function ne(e){return !!(e&&typeof e=="object"&&Se in e)}function zt(e){return `__loading__${e}`}function vt(e){if(typeof e.meta?.minWidth=="number")return e.meta.minWidth;if(Object.prototype.hasOwnProperty.call(e,"minSize")){let t=e.minSize;if(typeof t=="number")return t}}function Ze(e){if("columns"in e&&Array.isArray(e.columns))return {...e,columns:e.columns.map(a=>Ze(a))};let t=e.meta?.filter;return !t||e.filterFn?e:{...e,filterFn:(a,o,r)=>{if(!Qe(r))return true;let i=a.getValue(o),n=t.getOptionValue?.(i,a.original)??Z(i);return t.type==="multi"?Array.isArray(r)?r.map(String).includes(n):true:t.type==="select"?n===String(r):Z(i).toLowerCase().includes(String(r).toLowerCase())}}}function me(e){let t=[],a=o=>{o.forEach((r,i)=>{if("columns"in r&&r.columns?.length){a(r.columns);return}t.push({column:r,index:i});});};return a(e),t}function Ut(e){return e.map(t=>typeof t=="string"?{label:ke(t),value:t}:t)}function Z(e){if(e==null)return "";if(e instanceof Date)return e.toISOString();if(typeof e=="object")try{return JSON.stringify(e)}catch{return ""}return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint"||typeof e=="symbol"?String(e):""}function Qe(e){return Array.isArray(e)?e.length>0:e!=null&&e!==""}function Vt(e,t,a){let o=Z(a).trim().toLowerCase();return o?Z(e.getValue(t)).toLowerCase().includes(o):true}async function Ot({csvExport:e,table:t}){if(e===false)return;let a=e===true?{}:e,o=a.filename??"data-table.csv",r=a.scope??"filtered",i=a.columns?new Set(a.columns):void 0,n=t.getVisibleLeafColumns().filter(f=>!fe(f.id)&&f.id!=="__spacer__"&&(!i||i.has(f.id))),d=Ye(t,r),u=[];(a.includeHeaders??true)&&u.push(n.map(f=>typeof f.columnDef.header=="string"?f.columnDef.header:ke(f.id)));for(let f of d)u.push(n.map(w=>{let I=f.getValue(w.id);return a.getCellValue?a.getCellValue({row:f.original,rowId:f.id,columnId:w.id,value:I}):I}));let m=a.lineEnding??`\r +`,c=a.escapeFormulaValues??true,R=u.map(f=>f.map(w=>et(w,c)).join(",")).join(m);if(a.onExport){await a.onExport({csv:R,filename:o,rows:d.map(f=>f.original),scope:r});return}if(typeof window>"u")return;let h=new Blob([R],{type:"text/csv;charset=utf-8"}),g=window.URL.createObjectURL(h),p=window.document.createElement("a");p.href=g,p.download=o,p.click(),window.URL.revokeObjectURL(g);}function Ye(e,t){switch(t){case "page":return e.getRowModel().rows;case "selected":return e.getPrePaginationRowModel().rows.filter(a=>a.getIsSelected());case "all":return e.getCoreRowModel().rows;default:return e.getPrePaginationRowModel().rows}}function et(e,t){let a=Z(e);return t&&typeof e=="string"&&/^[\t\r ]*[=+\-@]/.test(e)&&(a=`'${a}`),/[",\n\r]/.test(a)?`"${a.replace(/"/g,'""')}"`:a}function Kt(e){let t=[],a=[];for(let{column:o,index:r}of me(e)){let i=Re(o);o.meta?.fixed==="left"&&t.push(i),o.meta?.fixed==="right"&&a.push(i);}return {left:t,right:a}}function Re(e,t){if(e.id)return e.id;let a=at(e);if(a)return a.replace(/\./g,"_");if(typeof e.header=="string")return e.header;throw new Error("Data table columns using an accessor function or non-string header must define a unique id.")}var tt=new Set(["__select__","__expand__","__actions__","__spacer__"]);function Bt(e){let t=new Set,a=o=>{o.forEach((r,i)=>{let n=Re(r);if(tt.has(n))throw new Error(`Data table column id "${n}" is reserved for an internal column.`);if(t.has(n))throw new Error(`Duplicate data table column id "${n}".`);t.add(n),"columns"in r&&r.columns?.length&&a(r.columns);});};a(e);}function at(e){if("accessorKey"in e&&typeof e.accessorKey=="string")return e.accessorKey}function Ft(e){let t=e.getIsPinned();return t||(e.id==="__select__"||e.id==="__expand__"?"left":e.id==="__actions__"?"right":e.columnDef.meta?.fixed)}function Wt(e,t,a$1){let o=a$1?.isUtilityColumn??false;return a("sticky backdrop-blur box-border",t.pinnedColumn,!o&&"border-dotted",o?t.pinnedUtilityColumn:void 0,e==="left"?"border-r-1":"border-l")}function fe(e){return e==="__select__"||e==="__expand__"||e==="__actions__"}var nt=["[data-row-click-ignore='true']","a[href]","button","input","select","summary","textarea","[contenteditable='true']","[role='button']","[role='link']"].join(",");function pe(e,t){if(!(e instanceof Element))return false;let a=e.closest(nt);return !!(a&&a!==t&&t.contains(a))}function Ie(e){switch(e){case "compact":return "h-8 py-1";case "spacious":return "h-14 py-4";default:return}}function be(e){switch(e){case "compact":return "py-1.5";case "spacious":return "py-4";default:return}}function Gt(e,t,a){let o=e.includes(t)?e.slice():[...e,t],r=o.indexOf(t),i=o.indexOf(a);if(r<0||i<0||r===i)return o;let[n]=o.splice(r,1);return o.splice(i,0,n),o}function ke(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,t=>t.toUpperCase())}function qt({columns:e,editableRows:t,onError:a}){let[o,r]=L.useState(null),[i,n]=L.useState({}),d=L.useRef(i),[u,m]=L.useState(false);L.useEffect(()=>{d.current=i;},[i]);let c=L.useCallback(()=>{r(null),n({});},[]),R=L.useCallback((g,p)=>{let f=t?.getInitialValues?.(g)??ot(g,e);n(f),r(p);},[e,t]),h=L.useCallback(async g=>{if(t){m(true);try{await t.onSaveRow(g,d.current),L.startTransition(c);}catch(p){a?.(p,g);}finally{m(false);}}},[c,t,a]);return {cancelEditing:c,draftValues:i,editingRowId:o,isSavingEdit:u,saveEdit:h,setDraftValues:n,setEditingRowId:r,startEditingRow:R}}function ot(e,t){return me(t).reduce((a,{column:o})=>("accessorKey"in o&&typeof o.accessorKey=="string"&&(a[o.accessorKey]=e[o.accessorKey]),a),{})}function Le(e,t,a,o){let{Checkbox:r,Input:i}=o,n=e.column.columnDef,d=n.meta,u="accessorKey"in n&&typeof n.accessorKey=="string"?n.accessorKey:e.column.id,m=t[u],c=h=>{a(g=>({...g,[u]:h}));};if(d?.renderEditCell)return d.renderEditCell({cell:e,row:e.row.original,value:e.getValue(),draftValue:m,setDraftValue:c});let R=rt(d?.type,m);return typeof m=="boolean"?jsx(r,{checked:m,onCheckedChange:h=>{c(h===true);}}):jsx(i,{type:R,value:d?.formatEditValue?d.formatEditValue(m,e):lt(m,R),onChange:h=>{let g=h.target.value,p=d?.parseEditValue?d.parseEditValue(g,e):it(g,R,m);c(p);}})}function rt(e,t){return e==="numeric"||typeof t=="number"?"number":e==="date"||t instanceof Date?"datetime-local":"text"}function lt(e,t="text"){return e==null?"":e instanceof Date?t==="datetime-local"?e.toISOString().slice(0,16):e.toISOString():typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint"?String(e):""}function it(e,t,a){return t==="number"?e===""?null:Number(e):t==="datetime-local"?e?a instanceof Date?new Date(e):e:null:e}function y({children:e,viewBox:t="0 0 24 24",...a}){return jsx("svg",{"aria-hidden":"true",focusable:"false",width:"1em",height:"1em",viewBox:t,fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",...a,children:e})}function Qt(e){return jsxs(y,{...e,children:[jsx("path",{d:"M4 7h4"}),jsx("path",{d:"M14 7h6"}),jsx("path",{d:"M10 5v4"}),jsx("path",{d:"M4 17h10"}),jsx("path",{d:"M18 17h2"}),jsx("path",{d:"M16 15v4"})]})}function Yt(e){return jsx(y,{...e,children:jsx("path",{d:"M5 12l4 4L19 6"})})}function Me(e){return jsx(y,{...e,children:jsx("path",{d:"M6 9l6 6 6-6"})})}function ea(e){return jsx(y,{...e,children:jsx("path",{d:"M15 6l-6 6 6 6"})})}function ta(e){return jsx(y,{...e,children:jsx("path",{d:"M9 6l6 6-6 6"})})}function aa(e){return jsx(y,{...e,children:jsx("path",{d:"M6 15l6-6 6 6"})})}function na(e){return jsxs(y,{...e,children:[jsx("path",{d:"M11 6l-6 6 6 6"}),jsx("path",{d:"M19 6l-6 6 6 6"})]})}function oa(e){return jsxs(y,{...e,children:[jsx("path",{d:"M5 6l6 6-6 6"}),jsx("path",{d:"M13 6l6 6-6 6"})]})}function Ee(e){return jsxs(y,{...e,children:[jsx("circle",{cx:"12",cy:"12",r:"9"}),jsx("path",{d:"M12 7v5l3 2"})]})}function ra(e){return jsxs(y,{...e,children:[jsx("ellipse",{cx:"12",cy:"5",rx:"7",ry:"3"}),jsx("path",{d:"M5 5v6c0 1.7 3.1 3 7 3s7-1.3 7-3V5"}),jsx("path",{d:"M5 11v6c0 1.7 3.1 3 7 3s7-1.3 7-3v-6"})]})}function la(e){return jsxs(y,{...e,children:[jsx("path",{d:"M5 12h.01"}),jsx("path",{d:"M12 12h.01"}),jsx("path",{d:"M19 12h.01"})]})}function ia(e){return jsxs(y,{...e,children:[jsx("path",{d:"M12 3v12"}),jsx("path",{d:"M7 10l5 5 5-5"}),jsx("path",{d:"M5 21h14"})]})}function sa(e){return jsxs(y,{...e,children:[jsx("path",{d:"M4 20h4l11-11-4-4L4 16v4z"}),jsx("path",{d:"M13 7l4 4"})]})}function ca(e){return jsxs(y,{...e,children:[jsx("path",{d:"M2 12s4-7 10-7 10 7 10 7-4 7-10 7S2 12 2 12z"}),jsx("circle",{cx:"12",cy:"12",r:"3"})]})}function da(e){return jsxs(y,{...e,children:[jsx("path",{d:"M3 3l18 18"}),jsx("path",{d:"M10.6 10.6a2 2 0 0 0 2.8 2.8"}),jsx("path",{d:"M9.9 5.3A10.5 10.5 0 0 1 12 5c6 0 10 7 10 7a18 18 0 0 1-3.2 4"}),jsx("path",{d:"M6.6 6.6C3.8 8.4 2 12 2 12s4 7 10 7a10.6 10.6 0 0 0 4.1-.8"})]})}function ua(e){return jsxs(y,{...e,children:[jsx("path",{d:"M4 13l2-8h12l2 8"}),jsx("path",{d:"M4 13h5l2 3h2l2-3h5v6H4z"})]})}function ma(e){return jsxs(y,{...e,children:[jsx("path",{d:"M4 4h6v6H4z"}),jsx("path",{d:"M14 4h6v6h-6z"}),jsx("path",{d:"M4 14h6v6H4z"}),jsx("path",{d:"M14 14h6v6h-6z"})]})}function fa(e){return jsxs(y,{...e,children:[jsx("path",{d:"M8 6h13"}),jsx("path",{d:"M8 12h13"}),jsx("path",{d:"M8 18h13"}),jsx("path",{d:"M3 6h.01"}),jsx("path",{d:"M3 12h.01"}),jsx("path",{d:"M3 18h.01"})]})}function pa(e){return jsxs(y,{...e,children:[jsx("circle",{cx:"11",cy:"11",r:"7"}),jsx("path",{d:"M16 16l5 5"})]})}function He(e){return jsxs(y,{...e,children:[jsx("path",{d:"M8 9l4-4 4 4"}),jsx("path",{d:"M16 15l-4 4-4-4"})]})}function ba(e){return jsxs(y,{...e,children:[jsx("path",{d:"M18 6L6 18"}),jsx("path",{d:"M6 6l12 12"})]})}function _e(e,t,a$1){let o=e.column.columnDef,r=o.meta,i=e.getValue(),n=a$1?.hasCustomCell??false,d=n&&o.cell?flexRender(o.cell,e):void 0,u=dt(d),m=ct({context:e,useCustomOverflowDefaults:a$1?.useCustomOverflowDefaults??false,value:i});if(r?.type==="date"&&!n)return jsxs("div",{"data-dtp-slot":"data-table-cell-content","data-dtp-overflow":m,className:a(Ne(m),"flex w-full min-w-0 items-center justify-end gap-2"),children:[jsx(Ee,{className:a("shrink-0",t?.mutedText??"opacity-70")}),jsx("span",{className:"min-w-0 truncate",children:ut(i)})]});let c=d!=null&&d!==""?d:i==null||i===""?jsx("span",{className:t?.mutedText??"opacity-70",children:"-"}):mt(i);return jsx("div",{"data-dtp-slot":"data-table-cell-content","data-dtp-overflow":m,className:a(Ne(m),"w-full min-w-0 max-w-full",u&&"[&>*]:max-w-full [&>*]:min-w-0"),children:c})}function ct({context:e,useCustomOverflowDefaults:t,value:a}){let o=e.column.columnDef,r=typeof o.meta?.overflow=="function"?o.meta.overflow({row:e.row.original,value:a}):o.meta?.overflow;return r||(t?"clip":"truncate")}function Ne(e){switch(e){case "clip":return "block overflow-hidden whitespace-nowrap";case "wrap":return "block overflow-hidden whitespace-normal break-words";case "visible":return "block overflow-visible whitespace-normal";default:return "block overflow-hidden text-ellipsis whitespace-nowrap"}}function dt(e){return e==null?false:L.isValidElement(e)||Array.isArray(e)||typeof e=="object"}function ut(e){return typeof e=="number"?new Date(e*1e3).toLocaleString():typeof e=="string"&&e?e:"-"}function mt(e){if(e instanceof Date)return e.toLocaleString();if(typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint")return String(e);try{return JSON.stringify(e)}catch{return "-"}}function pt({columnLayouts:e,components:t,currentDensity:a$1,draftValues:o,dragAndDrop:r,explicitCustomCellColumnIds:i$1,getRowClassName:n,isDraggable:d,isEditing:u,isExpanded:m,isInitialLoadingRow:c,isSelected:R,loadingState:h$1,onRowClick:g,originalRow:p,renderExpandedRow:f,row:w,rowIndex:I,setDraftValues:z,stripedRows:_,uiClassNames:M,visibleCells:E,visibleLeafColumnCount:B}){let{Checkbox:s,Input:S,Skeleton:v,TableCell:U,TableRow:A}=t;return jsxs(L.Fragment,{children:[jsx(A,{"data-row-id":w.id,draggable:c?false:d,"data-loading":h$1?.isLoading||void 0,"data-row-index":c?void 0:I,"data-row-parity":_&&!c?I%2===0?"odd":"even":void 0,"data-state":c?void 0:R?"selected":void 0,tabIndex:g&&!c?0:void 0,className:a(!c&&n?.(p,{row:p,rowId:w.id,rowIndex:I,isEditing:u,isExpanded:m,isLoading:!!h$1?.isLoading,isSelected:R}),M.row,_&&!c&&(I%2===0?M.rowOdd:M.rowEven),R&&!c&&M.rowSelected,g&&!c&&"cursor-pointer",c&&"pointer-events-none"),onClick:b=>{c||pe(b.target,b.currentTarget)||g?.({row:p,rowId:w.id});},onKeyDown:b=>{c||!g||b.key!=="Enter"&&b.key!==" "||pe(b.target,b.currentTarget)||(b.preventDefault(),g({row:p,rowId:w.id}));},onDragStart:b=>{c||r?.onRowDragStart?.({row:p,rowId:w.id,event:b});},onDragEnd:b=>{c||r?.onRowDragEnd?.({row:p,rowId:w.id,event:b});},children:E.map(b=>{let H=b.column.columnDef.meta,N=b.getContext(),ie=b.getValue(),P=e.get(b.column.id),$=P?.isSelectionColumn??false,q=P?.isExpansionColumn??false,X=P?.isActionsColumn??false,Q=P?.isSpacerColumn??false,se=i(H?.hideOn),ce=c||ne(p)?void 0:typeof H?.cellClassName=="function"?H.cellClassName({row:p,value:ie}):H?.cellClassName;return jsx(U,{className:a("border-b",be(a$1),M.cellBorder,P?.utilityClassName,P?.isSpacerColumn&&"border-b-0 bg-transparent p-0",P?.pinnedClassName,se,h(N),H?.responsiveClassName,ce),style:P?.cellStyle,children:jsx("div",{"data-row-click-ignore":$||q||X?"true":void 0,className:"min-w-0 max-w-full",children:h$1?.isLoading?H?.skeleton?.(N)??h$1.skeleton??jsx(v,{className:a("h-4 rounded",H?.type==="numeric"?"ml-auto w-16":H?.type==="date"?"ml-auto w-28":"w-full")}):u&&b.column.id!=="__select__"&&b.column.id!=="__expand__"&&b.column.id!=="__actions__"?Le(N,o,z,{Checkbox:s,Input:S}):_e(N,M,{hasCustomCell:i$1.has(b.column.id)||$||q||X||Q,useCustomOverflowDefaults:i$1.has(b.column.id)||$||q||X||Q})})},b.id)})}),!c&&f&&m?jsx(A,{children:jsx(U,{colSpan:Math.max(1,B),className:a("border-b",be(a$1),M.cellBorder),children:f({row:p,rowId:w.id,tableRow:w})})}):null]})}function bt(e,t){return e.row.id===t.row.id&&e.row.original===t.row.original&&e.rowIndex===t.rowIndex&&e.isSelected===t.isSelected&&e.isInitialLoadingRow===t.isInitialLoadingRow&&e.isEditing===t.isEditing&&e.isExpanded===t.isExpanded&&e.isDraggable===t.isDraggable&&Dt(e.loadingState,t.loadingState)&&Tt(e.visibleCells,t.visibleCells)&&e.components===t.components&>(e.columnLayouts,t.columnLayouts,t.visibleCells)&&e.currentDensity===t.currentDensity&&e.renderExpandedRow===t.renderExpandedRow&&e.onRowClick===t.onRowClick&&e.dragAndDrop===t.dragAndDrop&&e.getRowClassName===t.getRowClassName&&e.stripedRows===t.stripedRows&&e.uiClassNames===t.uiClassNames&&e.explicitCustomCellColumnIds===t.explicitCustomCellColumnIds&&(!e.isEditing||e.draftValues===t.draftValues)}function Dt(e,t){return e?.isLoading===t?.isLoading&&e?.skeleton===t?.skeleton}function Tt(e,t){return e.length===t.length&&e.every((a,o)=>{let r=t[o];return r?.id===a.id&&r.column.id===a.column.id})}function gt(e,t,a){return a.every(o=>{let r=e.get(o.column.id),i=t.get(o.column.id);return r?.fixedSide===i?.fixedSide&&r?.isActionsColumn===i?.isActionsColumn&&r?.isExpansionColumn===i?.isExpansionColumn&&r?.isSelectionColumn===i?.isSelectionColumn&&r?.isSpacerColumn===i?.isSpacerColumn&&r?.isUtilityColumn===i?.isUtilityColumn&&r?.pinnedClassName===i?.pinnedClassName&&r?.utilityClassName===i?.utilityClassName&&Ct(r?.cellStyle,i?.cellStyle)})}function Ct(e,t){return e?.width===t?.width&&e?.minWidth===t?.minWidth&&e?.maxWidth===t?.maxWidth&&e?.left===t?.left&&e?.right===t?.right}var Ae=L.memo(pt,bt);function ht({currentDensity:e,currentSorting:t,dir:a$1,draggedColumnIdRef:o,enableColumnReordering:r,enableColumnResizing:i$1,header:n,headerGroupHeaders:d,layout:u,primeColumnForResize:m,reorderColumn:c,resizeColumnLabel:R,resetColumnSize:h,TableHead:g$1,uiClassNames:p}){let f=n.column.columnDef.meta,w=L.useId(),I=!n.isPlaceholder&&n.subHeaders.length>0,z=n.column.getCanSort(),_=n.column.getIsSorted(),M=t.findIndex(s=>s.id===n.column.id),E=r&&!n.isPlaceholder&&!I&&!u.isUtilityColumn&&!u.isSpacerColumn,B=i(f?.hideOn);return jsxs(g$1,{colSpan:n.colSpan,scope:n.isPlaceholder?void 0:I?"colgroup":"col","aria-hidden":n.isPlaceholder||void 0,"aria-labelledby":!n.isPlaceholder&&!u.isUtilityColumn&&!u.isSpacerColumn?w:void 0,"data-column-id":n.column.id,"data-header-depth":n.depth,"data-dtp-slot":I?"data-table-column-group-header":"data-table-column-header",className:a("relative border-b",Ie(e),I&&p.columnGroupHeader,u.utilityClassName,u.isSpacerColumn&&"border-b-1 bg-transparent p-0",u.pinnedClassName,B,g(n.getContext()),f?.headerClassName,f?.responsiveClassName),style:{...f?.headerStyle,...u.headerStyle},"aria-sort":_==="asc"?"ascending":_==="desc"?"descending":z?"none":void 0,draggable:E,tabIndex:E&&!z&&!(i$1&&n.column.getCanResize())?0:void 0,onDragStart:E?s=>{o.current=n.column.id,s.dataTransfer.effectAllowed="move";}:void 0,onDragOver:E?s=>{s.preventDefault(),s.dataTransfer.dropEffect="move";}:void 0,onDrop:E?s=>{s.preventDefault();let S=o.current;o.current=null,S&&c(S,n.column.id);}:void 0,onKeyDown:E?s=>{if(!s.altKey||s.key!=="ArrowLeft"&&s.key!=="ArrowRight")return;s.preventDefault();let S=d.filter(A=>!fe(A.column.id)&&A.column.id!=="__spacer__"),v=S.findIndex(A=>A.column.id===n.column.id),U=S[s.key==="ArrowLeft"!=(a$1==="rtl")?v-1:v+1];U&&c(n.column.id,U.column.id);}:void 0,children:[n.isPlaceholder?null:z?jsxs("button",{type:"button",className:a("flex w-full items-center gap-2 font-medium",g(n.getContext())),onClick:n.column.getToggleSortingHandler(),children:[jsx("span",{id:w,className:"truncate",children:flexRender(n.column.columnDef.header,n.getContext())}),_?jsxs(Fragment,{children:[jsx(Me,{className:a("size-4 shrink-0 transition-transform",_==="desc"?"rotate-0":"rotate-180")}),t.length>1&&M>=0?jsx("span",{className:"inline-flex size-4 shrink-0 items-center justify-center rounded-full text-[10px] leading-none",children:M+1}):null]}):jsx(He,{className:a("size-4 shrink-0",p.headerSortIcon??"opacity-70")})]}):u.isUtilityColumn||u.isSpacerColumn?flexRender(n.column.columnDef.header,n.getContext()):jsx("span",{id:w,children:flexRender(n.column.columnDef.header,n.getContext())}),i$1&&!n.isPlaceholder&&n.column.getCanResize()?jsx("div",{"aria-label":R,"aria-orientation":"vertical","aria-valuemax":Rt(n),"aria-valuemin":St(n),"aria-valuenow":Math.round(n.getSize()),role:"separator",tabIndex:0,onDoubleClick:()=>{for(let s of K(n))h(s.column.id);},onMouseDown:s=>{for(let S of K(n))m(S.column.id,S.getSize());n.getResizeHandler()(s);},onTouchStart:s=>{for(let S of K(n))m(S.column.id,S.getSize());n.getResizeHandler()(s);},onKeyDown:s=>{if(s.altKey)return;if(s.key==="Home"){s.preventDefault();for(let v of K(n))h(v.column.id);return}if(s.key!=="ArrowLeft"&&s.key!=="ArrowRight")return;s.preventDefault(),s.stopPropagation();let S=s.key==="ArrowRight"!=(a$1==="rtl");It(n,(S?1:-1)*(s.shiftKey?25:10));},className:a("absolute inset-y-0 z-50 h-full w-3 cursor-col-resize touch-none select-none ltr:right-0 ltr:translate-x-1/2 rtl:left-0 rtl:-translate-x-1/2 after:absolute after:top-0 after:left-1/2 after:h-full after:w-px after:-translate-x-1/2",p.resizeHandle??"after:bg-current after:opacity-20 hover:after:opacity-70",n.column.getIsResizing()&&(p.resizeHandleActive??"after:opacity-100"))}):null]},n.id)}function wt(e,t){return e.header.id===t.header.id&&e.header.column.id===t.header.column.id&&e.header.column.columnDef===t.header.column.columnDef&&e.header.colSpan===t.header.colSpan&&e.header.isPlaceholder===t.header.isPlaceholder&&kt(e.header,t.header)&&e.currentDensity===t.currentDensity&&e.dir===t.dir&&e.enableColumnReordering===t.enableColumnReordering&&e.enableColumnResizing===t.enableColumnResizing&&e.TableHead===t.TableHead&&e.uiClassNames===t.uiClassNames&&e.draggedColumnIdRef===t.draggedColumnIdRef&&e.primeColumnForResize===t.primeColumnForResize&&e.reorderColumn===t.reorderColumn&&e.resizeColumnLabel===t.resizeColumnLabel&&e.resetColumnSize===t.resetColumnSize&&e.selectionState===t.selectionState&&xt(e.currentSorting,t.currentSorting)&&Lt(e.headerGroupHeaders,t.headerGroupHeaders)&&Mt(e.layout,t.layout)}function K(e){return e.subHeaders.length?e.getLeafHeaders().filter(t=>!t.subHeaders.length):[e]}function St(e){return K(e).reduce((t,a)=>t+(a.column.columnDef.minSize??20),0)}function Rt(e){return K(e).reduce((t,a)=>t+(a.column.columnDef.maxSize??Number.MAX_SAFE_INTEGER),0)}function It(e,t){let a=K(e),o=t/a.length;e.getContext().table.setColumnSizing(r=>{let i={...r};for(let n of a){let d=n.column,u=d.columnDef.minSize??20,m=d.columnDef.maxSize??Number.MAX_SAFE_INTEGER;i[d.id]=Math.min(m,Math.max(u,d.getSize()+o));}return i});}function kt(e,t){return e.subHeaders.length===t.subHeaders.length&&e.subHeaders.every((a,o)=>t.subHeaders[o]?.id===a.id)}function xt(e,t){return e.length===t.length&&e.every((a,o)=>{let r=t[o];return r?.id===a.id&&r.desc===a.desc})}function Lt(e,t){return e.length===t.length&&e.every((a,o)=>t[o]?.id===a.id)}function Mt(e,t){return e.fixedSide===t.fixedSide&&e.isSpacerColumn===t.isSpacerColumn&&e.isUtilityColumn===t.isUtilityColumn&&e.pinnedClassName===t.pinnedClassName&&e.utilityClassName===t.utilityClassName&&e.headerStyle?.width===t.headerStyle?.width&&e.headerStyle?.minWidth===t.headerStyle?.minWidth&&e.headerStyle?.maxWidth===t.headerStyle?.maxWidth&&e.headerStyle?.left===t.headerStyle?.left&&e.headerStyle?.right===t.headerStyle?.right}var ze=L.memo(ht,wt);function Ka({ariaDescribedBy:e,ariaLabelledBy:t,bodyRowComponents:a$1,columnLayouts:o,currentDensity:r,currentSorting:i=[],dir:n,DataTableEmptyState:d,dragAndDrop:u,draggedColumnIdRef:m,draftValues:c,editingRowId:R,emptyNode:h,enableColumnReordering:g,enableColumnResizing:p,explicitCustomCellColumnIds:f,fillMinWidth:w,flexGrow:I,getColumnLayout:z,getRowClassName:_,getRowLoadingState:M,infiniteScroll:E,layoutMode:B,localSearchValue:s,onRowClick:S,primeColumnForResize:v,renderedRows:U,renderExpandedRow:A,reorderColumn:b,resetColumnSize:H,resolvedLabels:N,rowsToRender:ie,ScrollArea:P,ScrollBar:$,sentinelRef:q,setDraftValues:X,shouldRenderInitialLoading:Q,stickyHeader:se,stripedRows:ce,summaryRows:Y,table:F,tableClassName:Ue,tableContainerClassName:Ve,Table:Oe,TableBody:Ke,TableCell:ee,TableFooter:Be="tfoot",TableHead:Fe,TableHeader:We,TableRow:J,tableScrollContainerRef:Ge,uiClassNames:V,virtualPaddingBottom:Ce,virtualPaddingTop:ye,visibleLeafColumnCount:te,visibleLeafColumns:je}){let $e=F.getIsAllPageRowsSelected()?true:F.getIsSomePageRowsSelected()?"indeterminate":false,he=F.getFilteredRowModel().rows,qe=L.useMemo(()=>Y.length?he.map(C=>C.original):[],[he,Y.length]);return jsx("div",{"data-dtp-slot":"data-table-table-shell",className:a("box-border border-2 border-transparent transition-colors",I?"flex min-h-0 flex-1 flex-col":"h-full",u?.isDragging&&(V.dragActive??"rounded-md border-dashed")),children:jsx("div",{ref:Ge,className:a(I?"flex min-h-0 flex-1 flex-col":"h-full"),children:jsxs(P,{className:a("rounded-md border",I?"min-h-0 flex-1":"h-full",V.tableContainer,V.tableScrollArea,Ve),children:[jsx("div",{className:"min-h-full",children:jsxs(Oe,{"aria-describedby":e,"aria-labelledby":t,className:a("w-full table-fixed border-separate border-spacing-0",Ue),style:{minWidth:B==="fill"&&w||void 0,width:B==="fit"?F.getTotalSize():"100%"},children:[jsx("colgroup",{children:F.getVisibleLeafColumns().map(C=>{let k=z(C.id);return jsx("col",{style:k.colStyle},C.id)})}),jsx(We,{className:a(se?V.tableStickyHeader??"sticky top-0 z-30 backdrop-blur":void 0),children:F.getHeaderGroups().map(C=>jsx(J,{children:C.headers.map(k=>jsx(ze,{currentDensity:r,currentSorting:i,dir:n,draggedColumnIdRef:m,enableColumnReordering:g,enableColumnResizing:p,header:k,headerGroupHeaders:C.headers,layout:Ht(k,z),primeColumnForResize:v,reorderColumn:b,resizeColumnLabel:N.resizeColumn(typeof k.column.columnDef.header=="string"?k.column.columnDef.header:k.column.id),resetColumnSize:H,selectionState:k.column.id==="__select__"?$e:void 0,TableHead:Fe,uiClassNames:V},k.id))},C.id))}),jsx(Ke,{children:U.length?jsxs(Fragment,{children:[ye>0?jsx(J,{"aria-hidden":"true",children:jsx(ee,{colSpan:Math.max(1,te),className:"border-b-0 p-0",style:{height:ye}})}):null,ie.map(({row:C,rowIndex:k})=>{let W=C.original,O=ne(W),de=O?{isLoading:true}:M?.(W,k),Xe=typeof de=="boolean"?{isLoading:de}:de,Je=O?false:u?.getRowDraggable?.(W)??false;return jsx(Ae,{columnLayouts:o,components:a$1,currentDensity:r,draftValues:c,dragAndDrop:u,explicitCustomCellColumnIds:f,getRowClassName:_,isDraggable:Je,isEditing:R===C.id,isExpanded:C.getIsExpanded(),isInitialLoadingRow:O,isSelected:C.getIsSelected(),loadingState:Xe,onRowClick:S,originalRow:W,renderExpandedRow:A,row:C,rowIndex:k,setDraftValues:X,stripedRows:ce,uiClassNames:V,visibleCells:C.getVisibleCells(),visibleLeafColumnCount:te},C.id)}),Ce>0?jsx(J,{"aria-hidden":"true",children:jsx(ee,{colSpan:Math.max(1,te),className:"border-b-0 p-0",style:{height:Ce}})}):null]}):jsx(J,{children:jsx(ee,{colSpan:Math.max(1,te),className:"h-full grow",children:jsx("div",{className:"flex h-full min-h-full w-full grow items-center justify-center",children:h??jsx(d,{title:s?N.noMatchingRowsTitle:N.noRowsTitle,description:s?N.noMatchingRowsDescription:N.noRowsDescription})})})})}),Y.length?jsx(Be,{children:Y.map(C=>jsx(J,{children:je.map((k,W)=>{let O=C.cells[k.id]??(W===0?C.label:null);return jsx(ee,{className:a("border-b font-medium",V.cellBorder),children:typeof O=="function"?O({rows:qe,columnId:k.id}):O},`${C.key}-${k.id}`)})},C.key))}):null]})}),E?.enabled&&U.length&&!Q?jsx("div",{className:"px-4 pb-4",children:jsx("div",{ref:q,className:"h-4 w-full"})}):null,jsx($,{orientation:"horizontal"})]})})})}function Ht(e,t){let a=t(e.column.id);if(e.isPlaceholder||!e.subHeaders.length)return a;let o=e.getLeafHeaders().filter(n=>!n.subHeaders.length).map(n=>t(n.column.id)),r=o[0]?.fixedSide;if(!r||!o.every(n=>n.fixedSide===r))return a;let i=r==="left"?o[0]:o.at(-1);return {...a,fixedSide:r,headerStyle:i?.headerStyle?{left:i.headerStyle.left,right:i.headerStyle.right}:void 0,pinnedClassName:i?.pinnedClassName}}export{me as A,Ut as B,Qe as C,Vt as D,Ot as E,Kt as F,Re as G,Bt as H,at as I,Ft as J,Wt as K,fe as L,pe as M,Gt as N,ke as O,qt as P,Ae as Q,ze as R,Ka as S,Qt as a,Yt as b,Me as c,ea as d,ta as e,aa as f,na as g,oa as h,ra as i,la as j,ia as k,sa as l,ca as m,da as n,ua as o,ma as p,fa as q,pa as r,He as s,ba as t,_t as u,At as v,ne as w,zt as x,vt as y,Ze as z};//# sourceMappingURL=chunk-32UNH3MQ.js.map +//# sourceMappingURL=chunk-32UNH3MQ.js.map \ No newline at end of file diff --git a/dist/chunk-32UNH3MQ.js.map b/dist/chunk-32UNH3MQ.js.map new file mode 100644 index 0000000..c2ad7be --- /dev/null +++ b/dist/chunk-32UNH3MQ.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/core/data-table/data-table-utils.ts","../src/core/data-table/use-row-editing.tsx","../src/core/icons.tsx","../src/core/data-table/data-table-cell-content.tsx","../src/core/data-table/data-table-body-row.tsx","../src/core/data-table/data-table-header-cell.tsx","../src/core/data-table/data-table-table-panel.tsx"],"names":["DATA_TABLE_LOADING_ROW","UTILITY_COLUMN_SIZE","createDataTableLoadingRows","count","_","index","isDataTableLoadingRow","row","getDataTableLoadingRowId","getConfiguredColumnMinWidth","column","minSize","decorateFilterableColumn","childColumn","filter","columnId","filterValue","hasFilterValue","value","optionValue","normalizeFilterValue","getDataTableLeafColumns","columns","leaves","visit","currentColumns","normalizeColumnFilterOptions","options","option","startCase","dataTableGlobalFilterFn","normalizedQuery","exportDataTableCsv","csvExport","table","filename","scope","exportColumnIds","isUtilityColumnId","rows","getCsvExportRows","csvRows","lineEnding","escapeFormulaValues","csv","escapeCsvCell","blob","url","anchor","text","getInitialColumnPinning","left","right","getColumnId","_index","accessorKey","getAccessorKey","RESERVED_DATA_TABLE_COLUMN_IDS","validateDataTableColumnIds","ids","id","getFixedSide","pinnedSide","getPinnedColumnClassName","side","uiClassNames","isUtilityColumn","cn","DATA_TABLE_INTERACTIVE_TARGET_SELECTOR","isDataTableInteractiveTarget","target","boundary","interactiveTarget","getDensityHeaderClassName","density","getDensityCellClassName","moveColumnInOrder","currentOrder","sourceColumnId","targetColumnId","order","sourceIndex","targetIndex","source","character","useRowEditing","editableRows","onError","editingRowId","setEditingRowId","draftValues","setDraftValues","draftValuesRef","isSavingEdit","setIsSavingEdit","cancelEditing","startEditingRow","rowId","initialValues","defaultDraftValues","saveEdit","error","draft","renderEditableCell","context","components","Checkbox","Input","meta","draftValue","setDraftValue","current","inputType","getEditableInputType","jsx","checked","getEditableInputValue","event","rawValue","parsedValue","parseEditableInputValue","type","previousValue","Icon","children","viewBox","props","IconAdjustmentsHorizontal","jsxs","IconCheck","IconChevronDown","IconChevronLeft","IconChevronRight","IconChevronUp","IconChevronsLeft","IconChevronsRight","IconClock","IconDatabase","IconDots","IconDownload","IconEdit","IconEye","IconEyeOff","IconInbox","IconLayoutGrid","IconList","IconSearch","IconSelector","IconX","renderDataTableCellContent","classNames","hasCustomCell","renderedCellContent","flexRender","hasComplexRenderedContent","isComplexRenderedCellContent","resolvedOverflow","resolveDataTableCellOverflow","getCellOverflowClassName","formatDateValue","content","formatCellValue","useCustomOverflowDefaults","overflow","Pe","DataTableBodyRowInner","columnLayouts","currentDensity","dragAndDrop","explicitCustomCellColumnIds","getRowClassName","isDraggable","isEditing","isExpanded","isInitialLoadingRow","isSelected","loadingState","onRowClick","originalRow","renderExpandedRow","rowIndex","stripedRows","visibleCells","visibleLeafColumnCount","Skeleton","TableCell","TableRow","re","cell","cellContext","layout","isSelectionColumn","isExpansionColumn","isActionsColumn","isSpacerColumn","hideClassName","hideOnClassName","cellClassName","cellAlignClassName","areDataTableBodyRowsEqual","previous","next","sameLoadingState","sameVisibleCells","sameColumnLayouts","nextCell","cells","previousLayout","nextLayout","sameCellStyle","DataTableBodyRow","DataTableHeaderCellInner","currentSorting","dir","draggedColumnIdRef","enableColumnReordering","enableColumnResizing","header","headerGroupHeaders","primeColumnForResize","reorderColumn","resizeColumnLabel","resetColumnSize","TableHead","headerContentId","le","isColumnGroup","canSort","sortingState","sortingIndex","sort","canReorderColumn","headerAlignClassName","headers","item","currentIndex","Fragment","getHeaderMaximumSize","getHeaderMinimumSize","leafHeader","getResizableLeafHeaders","grows","resizeHeaderBy","areDataTableHeaderCellsEqual","sameSubHeaders","sameSorting","sameHeaderGroupHeaders","sameHeaderLayout","total","delta","leafHeaders","deltaPerLeaf","minimum","maximum","nextSort","DataTableHeaderCell","DataTableTablePanel","ariaDescribedBy","ariaLabelledBy","bodyRowComponents","DataTableEmptyState","emptyNode","fillMinWidth","flexGrow","getColumnLayout","getRowLoadingState","infiniteScroll","layoutMode","localSearchValue","renderedRows","resolvedLabels","rowsToRender","ScrollArea","ScrollBar","sentinelRef","shouldRenderInitialLoading","stickyHeader","summaryRows","tableClassName","tableContainerClassName","Table","TableBody","TableFooter","TableHeader","tableScrollContainerRef","virtualPaddingBottom","virtualPaddingTop","visibleLeafColumns","selectionState","filteredRows","summarySourceRows","ve","headerGroup","getHeaderLayout","resolvedLoadingState","summaryRow","columnLayout","leafLayouts","fixedSide","edgeLayout"],"mappings":"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","file":"chunk-32UNH3MQ.js","sourcesContent":["import type {\n Column,\n ColumnDef,\n ColumnPinningState,\n Row,\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableColumnFilterOption,\n DataTableCsvExportOptions,\n DataTableCsvExportScope,\n DataTableDensity,\n DataTableLabels,\n} from \"../types\";\nimport type { DataTableUiClassNames } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nconst DATA_TABLE_LOADING_ROW = Symbol(\"data-table-loading-row\");\n\nexport const UTILITY_COLUMN_SIZE = 50;\n\ntype DataTableLoadingRow = {\n [DATA_TABLE_LOADING_ROW]: true;\n index: number;\n};\n\nexport function createDataTableLoadingRows(count: number) {\n return Array.from({ length: count }, (_, index) => {\n return {\n [DATA_TABLE_LOADING_ROW]: true,\n index,\n } as DataTableLoadingRow as TData;\n });\n}\n\nexport function isDataTableLoadingRow(\n row: unknown,\n): row is DataTableLoadingRow {\n return Boolean(\n row &&\n typeof row === \"object\" &&\n DATA_TABLE_LOADING_ROW in (row as Record),\n );\n}\n\nexport function getDataTableLoadingRowId(index: number) {\n return `__loading__${index}`;\n}\n\nexport function getConfiguredColumnMinWidth(\n column: DataTableColumnDef,\n) {\n if (typeof column.meta?.minWidth === \"number\") {\n return column.meta.minWidth;\n }\n\n if (Object.prototype.hasOwnProperty.call(column, \"minSize\")) {\n const minSize = (column as { minSize?: unknown }).minSize;\n\n if (typeof minSize === \"number\") {\n return minSize;\n }\n }\n\n return undefined;\n}\n\nexport function decorateFilterableColumn(\n column: DataTableColumnDef,\n): ColumnDef {\n if (\"columns\" in column && Array.isArray(column.columns)) {\n return {\n ...column,\n columns: column.columns.map((childColumn) =>\n decorateFilterableColumn(\n childColumn as DataTableColumnDef,\n ),\n ),\n };\n }\n\n const filter = column.meta?.filter;\n if (!filter || column.filterFn) {\n return column;\n }\n\n return {\n ...column,\n filterFn: (row, columnId, filterValue) => {\n if (!hasFilterValue(filterValue)) {\n return true;\n }\n\n const value = row.getValue(columnId);\n const optionValue =\n filter.getOptionValue?.(value, row.original) ??\n normalizeFilterValue(value);\n\n if (filter.type === \"multi\") {\n return Array.isArray(filterValue)\n ? filterValue.map(String).includes(optionValue)\n : true;\n }\n\n if (filter.type === \"select\") {\n return optionValue === String(filterValue);\n }\n\n return normalizeFilterValue(value)\n .toLowerCase()\n .includes(String(filterValue).toLowerCase());\n },\n };\n}\n\nexport type DataTableLeafColumn = {\n column: DataTableColumnDef;\n index: number;\n};\n\nexport function getDataTableLeafColumns(\n columns: Array>,\n) {\n const leaves: Array> = [];\n\n const visit = (currentColumns: Array>) => {\n currentColumns.forEach((column, index) => {\n if (\"columns\" in column && column.columns?.length) {\n visit(column.columns);\n return;\n }\n\n leaves.push({ column, index });\n });\n };\n\n visit(columns);\n return leaves;\n}\n\nexport function normalizeColumnFilterOptions(\n options: Array,\n) {\n return options.map((option) =>\n typeof option === \"string\"\n ? { label: startCase(option), value: option }\n : option,\n );\n}\n\nexport function normalizeFilterValue(value: unknown) {\n if (value == null) {\n return \"\";\n }\n\n if (value instanceof Date) {\n return value.toISOString();\n }\n\n if (typeof value === \"object\") {\n try {\n return JSON.stringify(value);\n } catch {\n return \"\";\n }\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n typeof value === \"bigint\" ||\n typeof value === \"symbol\"\n ) {\n return String(value);\n }\n\n return \"\";\n}\n\nexport function hasFilterValue(value: unknown) {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n\n return value !== undefined && value !== null && value !== \"\";\n}\n\nexport function dataTableGlobalFilterFn(\n row: Row,\n columnId: string,\n filterValue: unknown,\n) {\n const normalizedQuery = normalizeFilterValue(filterValue)\n .trim()\n .toLowerCase();\n\n if (!normalizedQuery) {\n return true;\n }\n\n return normalizeFilterValue(row.getValue(columnId))\n .toLowerCase()\n .includes(normalizedQuery);\n}\n\nexport async function exportDataTableCsv({\n csvExport,\n table,\n}: {\n csvExport: boolean | DataTableCsvExportOptions;\n table: TanStackTable;\n labels: DataTableLabels;\n}) {\n if (csvExport === false) {\n return;\n }\n\n const options: DataTableCsvExportOptions =\n csvExport === true ? {} : csvExport;\n const filename = options.filename ?? \"data-table.csv\";\n const scope = options.scope ?? \"filtered\";\n const exportColumnIds = options.columns\n ? new Set(options.columns)\n : undefined;\n const columns = table\n .getVisibleLeafColumns()\n .filter(\n (column) =>\n !isUtilityColumnId(column.id) &&\n column.id !== \"__spacer__\" &&\n (!exportColumnIds || exportColumnIds.has(column.id)),\n );\n const rows = getCsvExportRows(table, scope);\n const csvRows: Array> = [];\n\n if (options.includeHeaders ?? true) {\n csvRows.push(\n columns.map((column) =>\n typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : startCase(column.id),\n ),\n );\n }\n\n for (const row of rows) {\n csvRows.push(\n columns.map((column) => {\n const value = row.getValue(column.id);\n return options.getCellValue\n ? options.getCellValue({\n row: row.original,\n rowId: row.id,\n columnId: column.id,\n value,\n })\n : value;\n }),\n );\n }\n\n const lineEnding = options.lineEnding ?? \"\\r\\n\";\n const escapeFormulaValues = options.escapeFormulaValues ?? true;\n const csv = csvRows\n .map((row) =>\n row\n .map((value) => escapeCsvCell(value, escapeFormulaValues))\n .join(\",\"),\n )\n .join(lineEnding);\n\n if (options.onExport) {\n await options.onExport({\n csv,\n filename,\n rows: rows.map((row) => row.original),\n scope,\n });\n return;\n }\n\n if (typeof window === \"undefined\") {\n return;\n }\n\n const blob = new Blob([csv], { type: \"text/csv;charset=utf-8\" });\n const url = window.URL.createObjectURL(blob);\n const anchor = window.document.createElement(\"a\");\n anchor.href = url;\n anchor.download = filename;\n anchor.click();\n window.URL.revokeObjectURL(url);\n}\n\nfunction getCsvExportRows(\n table: TanStackTable,\n scope: DataTableCsvExportScope,\n) {\n switch (scope) {\n case \"page\":\n return table.getRowModel().rows;\n case \"selected\":\n return table\n .getPrePaginationRowModel()\n .rows.filter((row) => row.getIsSelected());\n case \"all\":\n return table.getCoreRowModel().rows;\n default:\n return table.getPrePaginationRowModel().rows;\n }\n}\n\nfunction escapeCsvCell(value: unknown, escapeFormulaValues: boolean) {\n let text = normalizeFilterValue(value);\n if (\n escapeFormulaValues &&\n typeof value === \"string\" &&\n /^[\\t\\r ]*[=+\\-@]/.test(value)\n ) {\n text = `'${text}`;\n }\n if (/[\",\\n\\r]/.test(text)) {\n return `\"${text.replace(/\"/g, '\"\"')}\"`;\n }\n return text;\n}\n\nexport function getInitialColumnPinning(\n columns: Array>,\n): ColumnPinningState {\n const left: Array = [];\n const right: Array = [];\n\n for (const { column, index } of getDataTableLeafColumns(columns)) {\n const columnId = getColumnId(column, index);\n if (column.meta?.fixed === \"left\") {\n left.push(columnId);\n }\n if (column.meta?.fixed === \"right\") {\n right.push(columnId);\n }\n }\n\n return { left, right };\n}\n\nexport function getColumnId(\n column: DataTableColumnDef,\n _index?: number,\n) {\n if (column.id) {\n return column.id;\n }\n\n const accessorKey = getAccessorKey(column);\n if (accessorKey) {\n return accessorKey.replace(/\\./g, \"_\");\n }\n\n if (typeof column.header === \"string\") {\n return column.header;\n }\n\n throw new Error(\n \"Data table columns using an accessor function or non-string header must define a unique id.\",\n );\n}\n\nconst RESERVED_DATA_TABLE_COLUMN_IDS = new Set([\n \"__select__\",\n \"__expand__\",\n \"__actions__\",\n \"__spacer__\",\n]);\n\nexport function validateDataTableColumnIds(\n columns: Array>,\n) {\n const ids = new Set();\n\n const visit = (currentColumns: Array>) => {\n currentColumns.forEach((column, index) => {\n const id = getColumnId(column, index);\n if (RESERVED_DATA_TABLE_COLUMN_IDS.has(id)) {\n throw new Error(\n `Data table column id \"${id}\" is reserved for an internal column.`,\n );\n }\n if (ids.has(id)) {\n throw new Error(`Duplicate data table column id \"${id}\".`);\n }\n ids.add(id);\n\n if (\"columns\" in column && column.columns?.length) {\n visit(column.columns);\n }\n });\n };\n\n visit(columns);\n}\n\nexport function getAccessorKey(\n column: DataTableColumnDef,\n) {\n if (\"accessorKey\" in column && typeof column.accessorKey === \"string\") {\n return column.accessorKey;\n }\n\n return undefined;\n}\n\nexport function getFixedSide(column: Column) {\n const pinnedSide = column.getIsPinned();\n if (pinnedSide) {\n return pinnedSide;\n }\n\n if (column.id === \"__select__\") {\n return \"left\" as const;\n }\n\n if (column.id === \"__expand__\") {\n return \"left\" as const;\n }\n\n if (column.id === \"__actions__\") {\n return \"right\" as const;\n }\n\n const meta = (column.columnDef as DataTableColumnDef).meta;\n return meta?.fixed;\n}\n\nexport function getPinnedColumnClassName(\n side: \"left\" | \"right\",\n uiClassNames: DataTableUiClassNames,\n options?: { isUtilityColumn?: boolean },\n) {\n const isUtilityColumn = options?.isUtilityColumn ?? false;\n return cn(\n \"sticky backdrop-blur box-border\",\n uiClassNames.pinnedColumn,\n !isUtilityColumn && \"border-dotted\",\n isUtilityColumn ? uiClassNames.pinnedUtilityColumn : undefined,\n side === \"left\" ? \"border-r-1\" : \"border-l\",\n );\n}\n\nexport function isUtilityColumnId(columnId: string) {\n return (\n columnId === \"__select__\" ||\n columnId === \"__expand__\" ||\n columnId === \"__actions__\"\n );\n}\n\nconst DATA_TABLE_INTERACTIVE_TARGET_SELECTOR = [\n \"[data-row-click-ignore='true']\",\n \"a[href]\",\n \"button\",\n \"input\",\n \"select\",\n \"summary\",\n \"textarea\",\n \"[contenteditable='true']\",\n \"[role='button']\",\n \"[role='link']\",\n].join(\",\");\n\nexport function isDataTableInteractiveTarget(\n target: EventTarget | null,\n boundary: Element,\n) {\n if (!(target instanceof Element)) {\n return false;\n }\n\n const interactiveTarget = target.closest(\n DATA_TABLE_INTERACTIVE_TARGET_SELECTOR,\n );\n return Boolean(\n interactiveTarget &&\n interactiveTarget !== boundary &&\n boundary.contains(interactiveTarget),\n );\n}\n\nexport function getDensityHeaderClassName(density: DataTableDensity) {\n switch (density) {\n case \"compact\":\n return \"h-8 py-1\";\n case \"spacious\":\n return \"h-14 py-4\";\n case \"comfortable\":\n default:\n return undefined;\n }\n}\n\nexport function getDensityCellClassName(density: DataTableDensity) {\n switch (density) {\n case \"compact\":\n return \"py-1.5\";\n case \"spacious\":\n return \"py-4\";\n case \"comfortable\":\n default:\n return undefined;\n }\n}\n\nexport function moveColumnInOrder(\n currentOrder: Array,\n sourceColumnId: string,\n targetColumnId: string,\n) {\n const order = currentOrder.includes(sourceColumnId)\n ? currentOrder.slice()\n : [...currentOrder, sourceColumnId];\n const sourceIndex = order.indexOf(sourceColumnId);\n const targetIndex = order.indexOf(targetColumnId);\n\n if (sourceIndex < 0 || targetIndex < 0 || sourceIndex === targetIndex) {\n return order;\n }\n\n const [source] = order.splice(sourceIndex, 1);\n order.splice(targetIndex, 0, source);\n return order;\n}\n\nexport function startCase(value: string) {\n return value\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .replace(/[_-]+/g, \" \")\n .replace(/\\s+/g, \" \")\n .trim()\n .replace(/\\b\\w/g, (character) => character.toUpperCase());\n}\n","import * as React from \"react\";\nimport type { CellContext } from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableColumnType,\n DataTableEditableRowsConfig,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { getDataTableLeafColumns } from \"./data-table-utils\";\n\nexport function useRowEditing({\n columns,\n editableRows,\n onError,\n}: {\n columns: Array>;\n editableRows: DataTableEditableRowsConfig | undefined;\n onError?: (error: unknown, row: TData) => void;\n}) {\n const [editingRowId, setEditingRowId] = React.useState(null);\n const [draftValues, setDraftValues] = React.useState<\n Record\n >({});\n const draftValuesRef = React.useRef(draftValues);\n const [isSavingEdit, setIsSavingEdit] = React.useState(false);\n\n React.useEffect(() => {\n draftValuesRef.current = draftValues;\n }, [draftValues]);\n\n const cancelEditing = React.useCallback(() => {\n setEditingRowId(null);\n setDraftValues({});\n }, []);\n\n const startEditingRow = React.useCallback(\n (row: TData, rowId: string) => {\n const initialValues =\n editableRows?.getInitialValues?.(row) ??\n defaultDraftValues(row, columns);\n setDraftValues(initialValues);\n setEditingRowId(rowId);\n },\n [columns, editableRows],\n );\n\n const saveEdit = React.useCallback(\n async (row: TData) => {\n if (!editableRows) {\n return;\n }\n\n setIsSavingEdit(true);\n try {\n await editableRows.onSaveRow(row, draftValuesRef.current);\n React.startTransition(cancelEditing);\n } catch (error) {\n onError?.(error, row);\n } finally {\n setIsSavingEdit(false);\n }\n },\n [cancelEditing, editableRows, onError],\n );\n\n return {\n cancelEditing,\n draftValues,\n editingRowId,\n isSavingEdit,\n saveEdit,\n setDraftValues,\n setEditingRowId,\n startEditingRow,\n };\n}\n\nfunction defaultDraftValues(\n row: TData,\n columns: Array>,\n) {\n return getDataTableLeafColumns(columns).reduce>(\n (draft, { column }) => {\n if (\"accessorKey\" in column && typeof column.accessorKey === \"string\") {\n draft[column.accessorKey] = (row as Record)[\n column.accessorKey\n ];\n }\n return draft;\n },\n {},\n );\n}\n\nexport function renderEditableCell(\n context: CellContext,\n draftValues: Record,\n setDraftValues: React.Dispatch>>,\n components: Pick,\n) {\n const { Checkbox, Input } = components;\n const column = context.column.columnDef as DataTableColumnDef;\n const meta = column.meta;\n const accessorKey =\n \"accessorKey\" in column && typeof column.accessorKey === \"string\"\n ? column.accessorKey\n : context.column.id;\n const draftValue = draftValues[accessorKey];\n const setDraftValue = (value: unknown) => {\n setDraftValues((current) => ({\n ...current,\n [accessorKey]: value,\n }));\n };\n\n if (meta?.renderEditCell) {\n return meta.renderEditCell({\n cell: context,\n row: context.row.original,\n value: context.getValue(),\n draftValue,\n setDraftValue,\n });\n }\n\n const inputType = getEditableInputType(meta?.type, draftValue);\n\n if (typeof draftValue === \"boolean\") {\n return (\n {\n setDraftValue(checked === true);\n }}\n />\n );\n }\n\n return (\n ) => {\n const rawValue = event.target.value;\n const parsedValue = meta?.parseEditValue\n ? meta.parseEditValue(rawValue, context)\n : parseEditableInputValue(rawValue, inputType, draftValue);\n setDraftValue(parsedValue);\n }}\n />\n );\n}\n\nfunction getEditableInputType(\n type: DataTableColumnType | undefined,\n value: unknown,\n) {\n if (type === \"numeric\" || typeof value === \"number\") {\n return \"number\";\n }\n\n if (type === \"date\" || value instanceof Date) {\n return \"datetime-local\";\n }\n\n return \"text\";\n}\n\nfunction getEditableInputValue(value: unknown, inputType = \"text\") {\n if (value == null) {\n return \"\";\n }\n\n if (value instanceof Date) {\n return inputType === \"datetime-local\"\n ? value.toISOString().slice(0, 16)\n : value.toISOString();\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n typeof value === \"bigint\"\n ) {\n return String(value);\n }\n\n return \"\";\n}\n\nfunction parseEditableInputValue(\n value: string,\n inputType: string,\n previousValue: unknown,\n) {\n if (inputType === \"number\") {\n return value === \"\" ? null : Number(value);\n }\n\n if (inputType === \"datetime-local\") {\n if (!value) {\n return null;\n }\n return previousValue instanceof Date ? new Date(value) : value;\n }\n\n return value;\n}\n","import * as React from \"react\";\n\ntype IconProps = React.SVGProps;\n\nfunction Icon({\n children,\n viewBox = \"0 0 24 24\",\n ...props\n}: IconProps & { children: React.ReactNode }) {\n return (\n \n {children}\n \n );\n}\n\nexport function IconAdjustmentsHorizontal(props: IconProps) {\n return (\n \n \n \n \n \n \n \n \n );\n}\n\nexport function IconArchive(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconBell(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconBriefcase(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconCheck(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronDown(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronLeft(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronRight(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronUp(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronsLeft(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconChevronsRight(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconClock(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconDatabase(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconDots(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconDownload(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconEdit(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconEye(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconEyeOff(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconFileUpload(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconInbox(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconLayoutGrid(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconList(props: IconProps) {\n return (\n \n \n \n \n \n \n \n \n );\n}\n\nexport function IconRefresh(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconSearch(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconSelector(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconSparkles(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconStar(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconUserCheck(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconX(props: IconProps) {\n return (\n \n \n \n \n );\n}\n","import * as React from \"react\";\nimport { flexRender, type CellContext } from \"@tanstack/react-table\";\nimport { IconClock } from \"../icons\";\nimport type {\n DataTableCellOverflow,\n DataTableColumnDef,\n} from \"../types\";\nimport type { DataTableUiClassNames } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nexport function renderDataTableCellContent(\n context: CellContext,\n classNames?: DataTableUiClassNames,\n options?: {\n hasCustomCell?: boolean;\n useCustomOverflowDefaults?: boolean;\n },\n) {\n const column = context.column.columnDef as DataTableColumnDef;\n const meta = column.meta;\n const value = context.getValue();\n const hasCustomCell = options?.hasCustomCell ?? false;\n const renderedCellContent = hasCustomCell && column.cell\n ? flexRender(column.cell, context)\n : undefined;\n const hasComplexRenderedContent = isComplexRenderedCellContent(\n renderedCellContent,\n );\n const resolvedOverflow = resolveDataTableCellOverflow({\n context,\n useCustomOverflowDefaults: options?.useCustomOverflowDefaults ?? false,\n value,\n });\n\n if (meta?.type === \"date\" && !hasCustomCell) {\n return (\n \n \n {formatDateValue(value)}\n \n );\n }\n\n const content =\n renderedCellContent !== undefined &&\n renderedCellContent !== null &&\n renderedCellContent !== \"\"\n ? renderedCellContent\n : value == null || value === \"\"\n ? -\n : formatCellValue(value);\n\n return (\n *]:max-w-full [&>*]:min-w-0\",\n )}\n >\n {content}\n \n );\n}\n\nfunction resolveDataTableCellOverflow({\n context,\n useCustomOverflowDefaults,\n value,\n}: {\n context: CellContext;\n useCustomOverflowDefaults: boolean;\n value: unknown;\n}): DataTableCellOverflow {\n const column = context.column.columnDef as DataTableColumnDef;\n const resolvedOverflow =\n typeof column.meta?.overflow === \"function\"\n ? column.meta.overflow({\n row: context.row.original,\n value,\n })\n : column.meta?.overflow;\n\n if (resolvedOverflow) {\n return resolvedOverflow;\n }\n\n return useCustomOverflowDefaults ? \"clip\" : \"truncate\";\n}\n\nfunction getCellOverflowClassName(overflow: DataTableCellOverflow) {\n switch (overflow) {\n case \"clip\":\n return \"block overflow-hidden whitespace-nowrap\";\n case \"wrap\":\n return \"block overflow-hidden whitespace-normal break-words\";\n case \"visible\":\n return \"block overflow-visible whitespace-normal\";\n case \"truncate\":\n default:\n return \"block overflow-hidden text-ellipsis whitespace-nowrap\";\n }\n}\n\nfunction isComplexRenderedCellContent(content: React.ReactNode) {\n if (content == null) {\n return false;\n }\n\n return (\n React.isValidElement(content) ||\n Array.isArray(content) ||\n typeof content === \"object\"\n );\n}\n\nfunction formatDateValue(value: unknown) {\n if (typeof value === \"number\") {\n return new Date(value * 1000).toLocaleString();\n }\n\n if (typeof value === \"string\" && value) {\n return value;\n }\n\n return \"-\";\n}\n\nfunction formatCellValue(value: unknown) {\n if (value instanceof Date) {\n return value.toLocaleString();\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n typeof value === \"bigint\"\n ) {\n return String(value);\n }\n\n try {\n return JSON.stringify(value);\n } catch {\n return \"-\";\n }\n}\n","import * as React from \"react\";\nimport type { Cell, Row } from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableDensity,\n DataTableProps,\n DataTableRowLoadingState,\n} from \"../types\";\nimport type { DataTableUiClassNames, DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { renderDataTableCellContent } from \"./data-table-cell-content\";\nimport type { DataTableColumnLayout } from \"./use-column-layout\";\nimport {\n getDensityCellClassName,\n isDataTableInteractiveTarget,\n isDataTableLoadingRow,\n} from \"./data-table-utils\";\nimport { renderEditableCell } from \"./use-row-editing\";\nimport { cellAlignClassName, hideOnClassName } from \"../types\";\n\ntype DataTableBodyRowProps = {\n columnLayouts: ReadonlyMap;\n components: Pick<\n DataTableUiKit,\n \"Checkbox\" | \"Input\" | \"Skeleton\" | \"TableCell\" | \"TableRow\"\n >;\n currentDensity: DataTableDensity;\n draftValues: Record;\n dragAndDrop: DataTableProps[\"dragAndDrop\"];\n explicitCustomCellColumnIds: ReadonlySet;\n getRowClassName: DataTableProps[\"getRowClassName\"];\n isDraggable: boolean;\n isEditing: boolean;\n isExpanded: boolean;\n isInitialLoadingRow: boolean;\n isSelected: boolean;\n loadingState: DataTableRowLoadingState | undefined;\n onRowClick: DataTableProps[\"onRowClick\"];\n originalRow: TData;\n renderExpandedRow: DataTableProps[\"renderExpandedRow\"];\n row: Row;\n rowIndex: number;\n setDraftValues: React.Dispatch>>;\n stripedRows: boolean;\n uiClassNames: DataTableUiClassNames;\n visibleCells: Array>;\n visibleLeafColumnCount: number;\n};\n\nfunction DataTableBodyRowInner({\n columnLayouts,\n components,\n currentDensity,\n draftValues,\n dragAndDrop,\n explicitCustomCellColumnIds,\n getRowClassName,\n isDraggable,\n isEditing,\n isExpanded,\n isInitialLoadingRow,\n isSelected,\n loadingState,\n onRowClick,\n originalRow,\n renderExpandedRow,\n row,\n rowIndex,\n setDraftValues,\n stripedRows,\n uiClassNames,\n visibleCells,\n visibleLeafColumnCount,\n}: DataTableBodyRowProps) {\n const { Checkbox, Input, Skeleton, TableCell, TableRow } = components;\n\n return (\n \n ) => {\n if (isInitialLoadingRow) {\n return;\n }\n\n if (isDataTableInteractiveTarget(event.target, event.currentTarget)) {\n return;\n }\n\n void onRowClick?.({ row: originalRow, rowId: row.id });\n }}\n onKeyDown={(event: React.KeyboardEvent) => {\n if (\n isInitialLoadingRow ||\n !onRowClick ||\n (event.key !== \"Enter\" && event.key !== \" \")\n ) {\n return;\n }\n\n if (isDataTableInteractiveTarget(event.target, event.currentTarget)) {\n return;\n }\n\n event.preventDefault();\n void onRowClick({ row: originalRow, rowId: row.id });\n }}\n onDragStart={(event: React.DragEvent) => {\n if (isInitialLoadingRow) {\n return;\n }\n\n dragAndDrop?.onRowDragStart?.({\n row: originalRow,\n rowId: row.id,\n event,\n });\n }}\n onDragEnd={(event: React.DragEvent) => {\n if (isInitialLoadingRow) {\n return;\n }\n\n dragAndDrop?.onRowDragEnd?.({\n row: originalRow,\n rowId: row.id,\n event,\n });\n }}\n >\n {visibleCells.map((cell) => {\n const meta = (\n cell.column.columnDef as DataTableColumnDef\n ).meta;\n const cellContext = cell.getContext();\n const value = cell.getValue();\n const layout = columnLayouts.get(cell.column.id);\n const isSelectionColumn = layout?.isSelectionColumn ?? false;\n const isExpansionColumn = layout?.isExpansionColumn ?? false;\n const isActionsColumn = layout?.isActionsColumn ?? false;\n const isSpacerColumn = layout?.isSpacerColumn ?? false;\n const hideClassName = hideOnClassName(meta?.hideOn);\n const cellClassName =\n isInitialLoadingRow || isDataTableLoadingRow(originalRow)\n ? undefined\n : typeof meta?.cellClassName === \"function\"\n ? meta.cellClassName({\n row: originalRow,\n value,\n })\n : meta?.cellClassName;\n\n return (\n \n \n {loadingState?.isLoading ? (\n (meta?.skeleton?.(cellContext) ??\n loadingState.skeleton ?? (\n \n ))\n ) : isEditing &&\n cell.column.id !== \"__select__\" &&\n cell.column.id !== \"__expand__\" &&\n cell.column.id !== \"__actions__\" ? (\n renderEditableCell(cellContext, draftValues, setDraftValues, {\n Checkbox,\n Input,\n })\n ) : (\n renderDataTableCellContent(cellContext, uiClassNames, {\n hasCustomCell:\n explicitCustomCellColumnIds.has(cell.column.id) ||\n isSelectionColumn ||\n isExpansionColumn ||\n isActionsColumn ||\n isSpacerColumn,\n useCustomOverflowDefaults:\n explicitCustomCellColumnIds.has(cell.column.id) ||\n isSelectionColumn ||\n isExpansionColumn ||\n isActionsColumn ||\n isSpacerColumn,\n })\n )}\n \n \n );\n })}\n \n {!isInitialLoadingRow && renderExpandedRow && isExpanded ? (\n \n \n {renderExpandedRow({\n row: originalRow,\n rowId: row.id,\n tableRow: row,\n })}\n \n \n ) : null}\n \n );\n}\n\nfunction areDataTableBodyRowsEqual(\n previous: DataTableBodyRowProps,\n next: DataTableBodyRowProps,\n) {\n return (\n previous.row.id === next.row.id &&\n previous.row.original === next.row.original &&\n previous.rowIndex === next.rowIndex &&\n previous.isSelected === next.isSelected &&\n previous.isInitialLoadingRow === next.isInitialLoadingRow &&\n previous.isEditing === next.isEditing &&\n previous.isExpanded === next.isExpanded &&\n previous.isDraggable === next.isDraggable &&\n sameLoadingState(previous.loadingState, next.loadingState) &&\n sameVisibleCells(previous.visibleCells, next.visibleCells) &&\n previous.components === next.components &&\n sameColumnLayouts(\n previous.columnLayouts,\n next.columnLayouts,\n next.visibleCells,\n ) &&\n previous.currentDensity === next.currentDensity &&\n previous.renderExpandedRow === next.renderExpandedRow &&\n previous.onRowClick === next.onRowClick &&\n previous.dragAndDrop === next.dragAndDrop &&\n previous.getRowClassName === next.getRowClassName &&\n previous.stripedRows === next.stripedRows &&\n previous.uiClassNames === next.uiClassNames &&\n previous.explicitCustomCellColumnIds === next.explicitCustomCellColumnIds &&\n (!previous.isEditing || previous.draftValues === next.draftValues)\n );\n}\n\nfunction sameLoadingState(\n previous: DataTableRowLoadingState | undefined,\n next: DataTableRowLoadingState | undefined,\n) {\n return (\n previous?.isLoading === next?.isLoading &&\n previous?.skeleton === next?.skeleton\n );\n}\n\nfunction sameVisibleCells(\n previous: Array>,\n next: Array>,\n) {\n return (\n previous.length === next.length &&\n previous.every((cell, index) => {\n const nextCell = next[index];\n return nextCell?.id === cell.id && nextCell.column.id === cell.column.id;\n })\n );\n}\n\nfunction sameColumnLayouts(\n previous: ReadonlyMap,\n next: ReadonlyMap,\n cells: Array>,\n) {\n return cells.every((cell) => {\n const previousLayout = previous.get(cell.column.id);\n const nextLayout = next.get(cell.column.id);\n\n return (\n previousLayout?.fixedSide === nextLayout?.fixedSide &&\n previousLayout?.isActionsColumn === nextLayout?.isActionsColumn &&\n previousLayout?.isExpansionColumn === nextLayout?.isExpansionColumn &&\n previousLayout?.isSelectionColumn === nextLayout?.isSelectionColumn &&\n previousLayout?.isSpacerColumn === nextLayout?.isSpacerColumn &&\n previousLayout?.isUtilityColumn === nextLayout?.isUtilityColumn &&\n previousLayout?.pinnedClassName === nextLayout?.pinnedClassName &&\n previousLayout?.utilityClassName === nextLayout?.utilityClassName &&\n sameCellStyle(previousLayout?.cellStyle, nextLayout?.cellStyle)\n );\n });\n}\n\nfunction sameCellStyle(\n previous: React.CSSProperties | undefined,\n next: React.CSSProperties | undefined,\n) {\n return (\n previous?.width === next?.width &&\n previous?.minWidth === next?.minWidth &&\n previous?.maxWidth === next?.maxWidth &&\n previous?.left === next?.left &&\n previous?.right === next?.right\n );\n}\n\nexport const DataTableBodyRow = React.memo(\n DataTableBodyRowInner,\n areDataTableBodyRowsEqual,\n) as typeof DataTableBodyRowInner;\n","import * as React from \"react\";\nimport { flexRender } from \"@tanstack/react-table\";\nimport { IconChevronDown, IconSelector } from \"../icons\";\nimport type { Header, SortingState } from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableDensity,\n DataTableProps,\n} from \"../types\";\nimport type { DataTableUiClassNames, DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport type { DataTableColumnLayout } from \"./use-column-layout\";\nimport {\n getDensityHeaderClassName,\n isUtilityColumnId,\n} from \"./data-table-utils\";\nimport { headerAlignClassName, hideOnClassName } from \"../types\";\n\ntype DataTableHeaderCellProps = {\n currentDensity: DataTableDensity;\n currentSorting: SortingState;\n dir: NonNullable[\"dir\"]>;\n draggedColumnIdRef: React.MutableRefObject;\n enableColumnReordering: boolean;\n enableColumnResizing: boolean;\n header: Header;\n headerGroupHeaders: Array>;\n layout: DataTableColumnLayout;\n primeColumnForResize: (columnId: string, currentSize: number) => void;\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n resizeColumnLabel: string;\n resetColumnSize: (columnId: string) => void;\n // Rendered through flexRender inside the header def; carried as a prop so\n // the memo comparator re-renders the selection header when it changes.\n selectionState?: boolean | \"indeterminate\";\n TableHead: DataTableUiKit[\"TableHead\"];\n uiClassNames: DataTableUiClassNames;\n};\n\nfunction DataTableHeaderCellInner({\n currentDensity,\n currentSorting,\n dir,\n draggedColumnIdRef,\n enableColumnReordering,\n enableColumnResizing,\n header,\n headerGroupHeaders,\n layout,\n primeColumnForResize,\n reorderColumn,\n resizeColumnLabel,\n resetColumnSize,\n TableHead,\n uiClassNames,\n}: DataTableHeaderCellProps) {\n const meta = (header.column.columnDef as DataTableColumnDef)\n .meta;\n const headerContentId = React.useId();\n const isColumnGroup =\n !header.isPlaceholder && header.subHeaders.length > 0;\n const canSort = header.column.getCanSort();\n const sortingState = header.column.getIsSorted();\n const sortingIndex = currentSorting.findIndex(\n (sort) => sort.id === header.column.id,\n );\n const canReorderColumn =\n enableColumnReordering &&\n !header.isPlaceholder &&\n !isColumnGroup &&\n !layout.isUtilityColumn &&\n !layout.isSpacerColumn;\n const hideClassName = hideOnClassName(meta?.hideOn);\n\n return (\n ) => {\n draggedColumnIdRef.current = header.column.id;\n event.dataTransfer.effectAllowed = \"move\";\n }\n : undefined\n }\n onDragOver={\n canReorderColumn\n ? (event: React.DragEvent) => {\n event.preventDefault();\n event.dataTransfer.dropEffect = \"move\";\n }\n : undefined\n }\n onDrop={\n canReorderColumn\n ? (event: React.DragEvent) => {\n event.preventDefault();\n const sourceColumnId = draggedColumnIdRef.current;\n draggedColumnIdRef.current = null;\n if (sourceColumnId) {\n reorderColumn(sourceColumnId, header.column.id);\n }\n }\n : undefined\n }\n onKeyDown={\n canReorderColumn\n ? (event: React.KeyboardEvent) => {\n if (\n !event.altKey ||\n (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\")\n ) {\n return;\n }\n\n event.preventDefault();\n const headers = headerGroupHeaders.filter(\n (item) =>\n !isUtilityColumnId(item.column.id) &&\n item.column.id !== \"__spacer__\",\n );\n const currentIndex = headers.findIndex(\n (item) => item.column.id === header.column.id,\n );\n const target =\n headers[\n (event.key === \"ArrowLeft\") !== (dir === \"rtl\")\n ? currentIndex - 1\n : currentIndex + 1\n ];\n if (target) {\n reorderColumn(header.column.id, target.column.id);\n }\n }\n : undefined\n }\n >\n {header.isPlaceholder ? null : canSort ? (\n \n \n {flexRender(header.column.columnDef.header, header.getContext())}\n \n {sortingState ? (\n <>\n \n {currentSorting.length > 1 && sortingIndex >= 0 ? (\n \n {sortingIndex + 1}\n \n ) : null}\n \n ) : (\n \n )}\n \n ) : (\n layout.isUtilityColumn || layout.isSpacerColumn ? (\n flexRender(header.column.columnDef.header, header.getContext())\n ) : (\n \n {flexRender(header.column.columnDef.header, header.getContext())}\n \n )\n )}\n\n {enableColumnResizing &&\n !header.isPlaceholder &&\n header.column.getCanResize() ? (\n {\n for (const leafHeader of getResizableLeafHeaders(header)) {\n resetColumnSize(leafHeader.column.id);\n }\n }}\n onMouseDown={(event) => {\n for (const leafHeader of getResizableLeafHeaders(header)) {\n primeColumnForResize(\n leafHeader.column.id,\n leafHeader.getSize(),\n );\n }\n header.getResizeHandler()(event);\n }}\n onTouchStart={(event) => {\n for (const leafHeader of getResizableLeafHeaders(header)) {\n primeColumnForResize(\n leafHeader.column.id,\n leafHeader.getSize(),\n );\n }\n header.getResizeHandler()(event);\n }}\n onKeyDown={(event) => {\n if (event.altKey) {\n return;\n }\n if (event.key === \"Home\") {\n event.preventDefault();\n for (const leafHeader of getResizableLeafHeaders(header)) {\n resetColumnSize(leafHeader.column.id);\n }\n return;\n }\n if (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\") {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n const grows =\n (event.key === \"ArrowRight\") !== (dir === \"rtl\");\n resizeHeaderBy(\n header,\n (grows ? 1 : -1) * (event.shiftKey ? 25 : 10),\n );\n }}\n className={cn(\n \"absolute inset-y-0 z-50 h-full w-3 cursor-col-resize touch-none select-none ltr:right-0 ltr:translate-x-1/2 rtl:left-0 rtl:-translate-x-1/2 after:absolute after:top-0 after:left-1/2 after:h-full after:w-px after:-translate-x-1/2\",\n uiClassNames.resizeHandle ??\n \"after:bg-current after:opacity-20 hover:after:opacity-70\",\n header.column.getIsResizing() &&\n (uiClassNames.resizeHandleActive ?? \"after:opacity-100\"),\n )}\n />\n ) : null}\n
    \n );\n}\n\nfunction areDataTableHeaderCellsEqual(\n previous: DataTableHeaderCellProps,\n next: DataTableHeaderCellProps,\n) {\n return (\n previous.header.id === next.header.id &&\n previous.header.column.id === next.header.column.id &&\n previous.header.column.columnDef === next.header.column.columnDef &&\n previous.header.colSpan === next.header.colSpan &&\n previous.header.isPlaceholder === next.header.isPlaceholder &&\n sameSubHeaders(previous.header, next.header) &&\n previous.currentDensity === next.currentDensity &&\n previous.dir === next.dir &&\n previous.enableColumnReordering === next.enableColumnReordering &&\n previous.enableColumnResizing === next.enableColumnResizing &&\n previous.TableHead === next.TableHead &&\n previous.uiClassNames === next.uiClassNames &&\n previous.draggedColumnIdRef === next.draggedColumnIdRef &&\n previous.primeColumnForResize === next.primeColumnForResize &&\n previous.reorderColumn === next.reorderColumn &&\n previous.resizeColumnLabel === next.resizeColumnLabel &&\n previous.resetColumnSize === next.resetColumnSize &&\n previous.selectionState === next.selectionState &&\n sameSorting(previous.currentSorting, next.currentSorting) &&\n sameHeaderGroupHeaders(\n previous.headerGroupHeaders,\n next.headerGroupHeaders,\n ) &&\n sameHeaderLayout(previous.layout, next.layout)\n );\n}\n\nfunction getResizableLeafHeaders(header: Header) {\n if (!header.subHeaders.length) {\n return [header];\n }\n\n return header\n .getLeafHeaders()\n .filter((leafHeader) => !leafHeader.subHeaders.length);\n}\n\nfunction getHeaderMinimumSize(header: Header) {\n return getResizableLeafHeaders(header).reduce(\n (total, leafHeader) =>\n total + (leafHeader.column.columnDef.minSize ?? 20),\n 0,\n );\n}\n\nfunction getHeaderMaximumSize(header: Header) {\n return getResizableLeafHeaders(header).reduce(\n (total, leafHeader) =>\n total + (leafHeader.column.columnDef.maxSize ?? Number.MAX_SAFE_INTEGER),\n 0,\n );\n}\n\nfunction resizeHeaderBy(\n header: Header,\n delta: number,\n) {\n const leafHeaders = getResizableLeafHeaders(header);\n const deltaPerLeaf = delta / leafHeaders.length;\n header.getContext().table.setColumnSizing((current) => {\n const next = { ...current };\n\n for (const leafHeader of leafHeaders) {\n const column = leafHeader.column;\n const minimum = column.columnDef.minSize ?? 20;\n const maximum =\n column.columnDef.maxSize ?? Number.MAX_SAFE_INTEGER;\n next[column.id] = Math.min(\n maximum,\n Math.max(minimum, column.getSize() + deltaPerLeaf),\n );\n }\n\n return next;\n });\n}\n\nfunction sameSubHeaders(\n previous: Header,\n next: Header,\n) {\n return (\n previous.subHeaders.length === next.subHeaders.length &&\n previous.subHeaders.every(\n (header, index) => next.subHeaders[index]?.id === header.id,\n )\n );\n}\n\nfunction sameSorting(previous: SortingState, next: SortingState) {\n return (\n previous.length === next.length &&\n previous.every((sort, index) => {\n const nextSort = next[index];\n return nextSort?.id === sort.id && nextSort.desc === sort.desc;\n })\n );\n}\n\nfunction sameHeaderGroupHeaders(\n previous: Array>,\n next: Array>,\n) {\n return (\n previous.length === next.length &&\n previous.every((header, index) => next[index]?.id === header.id)\n );\n}\n\nfunction sameHeaderLayout(\n previous: DataTableColumnLayout,\n next: DataTableColumnLayout,\n) {\n return (\n previous.fixedSide === next.fixedSide &&\n previous.isSpacerColumn === next.isSpacerColumn &&\n previous.isUtilityColumn === next.isUtilityColumn &&\n previous.pinnedClassName === next.pinnedClassName &&\n previous.utilityClassName === next.utilityClassName &&\n previous.headerStyle?.width === next.headerStyle?.width &&\n previous.headerStyle?.minWidth === next.headerStyle?.minWidth &&\n previous.headerStyle?.maxWidth === next.headerStyle?.maxWidth &&\n previous.headerStyle?.left === next.headerStyle?.left &&\n previous.headerStyle?.right === next.headerStyle?.right\n );\n}\n\nexport const DataTableHeaderCell = React.memo(\n DataTableHeaderCellInner,\n areDataTableHeaderCellsEqual,\n) as typeof DataTableHeaderCellInner;\n","import * as React from \"react\";\nimport type {\n Column,\n Header,\n Row,\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableDensity,\n DataTableProps,\n DataTableRowLoadingState,\n} from \"../types\";\nimport type { DataTableUiClassNames, DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { DataTableBodyRow } from \"./data-table-body-row\";\nimport { DataTableHeaderCell } from \"./data-table-header-cell\";\nimport type { DataTableColumnLayout } from \"./use-column-layout\";\nimport { isDataTableLoadingRow } from \"./data-table-utils\";\nimport type { DataTableLabels } from \"../types\";\n\nexport type DataTableTablePanelProps = {\n ariaDescribedBy: string | undefined;\n ariaLabelledBy: string | undefined;\n bodyRowComponents: Pick<\n DataTableUiKit,\n \"Checkbox\" | \"Input\" | \"Skeleton\" | \"TableCell\" | \"TableRow\"\n >;\n columnLayouts: ReadonlyMap;\n currentDensity: DataTableDensity;\n currentSorting: DataTableProps[\"sorting\"];\n dir: NonNullable[\"dir\"]>;\n DataTableEmptyState: React.ElementType;\n dragAndDrop: DataTableProps[\"dragAndDrop\"];\n draggedColumnIdRef: React.RefObject;\n draftValues: Record;\n editingRowId: string | null;\n emptyNode: React.ReactNode;\n enableColumnReordering: boolean;\n enableColumnResizing: boolean;\n explicitCustomCellColumnIds: ReadonlySet;\n fillMinWidth: number;\n flexGrow: boolean;\n getColumnLayout: (columnId: string) => DataTableColumnLayout;\n getRowClassName: DataTableProps[\"getRowClassName\"];\n getRowLoadingState: DataTableProps[\"getRowLoadingState\"];\n infiniteScroll: DataTableProps[\"infiniteScroll\"];\n layoutMode: \"fill\" | \"fit\";\n localSearchValue: string;\n onRowClick: DataTableProps[\"onRowClick\"];\n primeColumnForResize: (columnId: string, currentSize: number) => void;\n renderedRows: Array>;\n renderExpandedRow: DataTableProps[\"renderExpandedRow\"];\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n resetColumnSize: (columnId: string) => void;\n resolvedLabels: DataTableLabels;\n rowsToRender: Array<{ row: Row; rowIndex: number }>;\n ScrollArea: DataTableUiKit[\"ScrollArea\"];\n ScrollBar: DataTableUiKit[\"ScrollBar\"];\n sentinelRef: React.RefObject;\n setDraftValues: React.Dispatch>>;\n shouldRenderInitialLoading: boolean;\n stickyHeader: boolean;\n stripedRows: boolean;\n summaryRows: NonNullable[\"summaryRows\"]>;\n table: TanStackTable;\n tableClassName: string | undefined;\n tableContainerClassName: string | undefined;\n Table: DataTableUiKit[\"Table\"];\n TableBody: DataTableUiKit[\"TableBody\"];\n TableCell: DataTableUiKit[\"TableCell\"];\n TableFooter: DataTableUiKit[\"TableFooter\"];\n TableHead: DataTableUiKit[\"TableHead\"];\n TableHeader: DataTableUiKit[\"TableHeader\"];\n TableRow: DataTableUiKit[\"TableRow\"];\n tableScrollContainerRef: React.RefObject;\n tableScrollElement?: HTMLElement | null;\n uiClassNames: DataTableUiClassNames;\n viewportHeight?: number;\n virtualization?: DataTableProps[\"virtualization\"];\n virtualPaddingBottom: number;\n virtualPaddingTop: number;\n visibleLeafColumnCount: number;\n visibleLeafColumns: Array>;\n};\n\nexport function DataTableTablePanel({\n ariaDescribedBy,\n ariaLabelledBy,\n bodyRowComponents,\n columnLayouts,\n currentDensity,\n currentSorting = [],\n dir,\n DataTableEmptyState,\n dragAndDrop,\n draggedColumnIdRef,\n draftValues,\n editingRowId,\n emptyNode,\n enableColumnReordering,\n enableColumnResizing,\n explicitCustomCellColumnIds,\n fillMinWidth,\n flexGrow,\n getColumnLayout,\n getRowClassName,\n getRowLoadingState,\n infiniteScroll,\n layoutMode,\n localSearchValue,\n onRowClick,\n primeColumnForResize,\n renderedRows,\n renderExpandedRow,\n reorderColumn,\n resetColumnSize,\n resolvedLabels,\n rowsToRender,\n ScrollArea,\n ScrollBar,\n sentinelRef,\n setDraftValues,\n shouldRenderInitialLoading,\n stickyHeader,\n stripedRows,\n summaryRows,\n table,\n tableClassName,\n tableContainerClassName,\n Table,\n TableBody,\n TableCell,\n TableFooter = \"tfoot\",\n TableHead,\n TableHeader,\n TableRow,\n tableScrollContainerRef,\n uiClassNames,\n virtualPaddingBottom,\n virtualPaddingTop,\n visibleLeafColumnCount,\n visibleLeafColumns,\n}: DataTableTablePanelProps) {\n const selectionState: boolean | \"indeterminate\" =\n table.getIsAllPageRowsSelected()\n ? true\n : table.getIsSomePageRowsSelected()\n ? \"indeterminate\"\n : false;\n const filteredRows = table.getFilteredRowModel().rows;\n const summarySourceRows = React.useMemo(\n () =>\n summaryRows.length\n ? filteredRows.map((row) => row.original)\n : [],\n [filteredRows, summaryRows.length],\n );\n\n return (\n \n \n \n
    \n \n \n {table.getVisibleLeafColumns().map((column) => {\n const layout = getColumnLayout(column.id);\n return ;\n })}\n \n \n {table.getHeaderGroups().map((headerGroup) => (\n \n {headerGroup.headers.map((header) => (\n \n ))}\n \n ))}\n \n \n {renderedRows.length ? (\n <>\n {virtualPaddingTop > 0 ? (\n \n \n \n ) : null}\n {rowsToRender.map(({ row, rowIndex }) => {\n const originalRow = row.original;\n const isInitialLoadingRow =\n isDataTableLoadingRow(originalRow);\n const loadingState = isInitialLoadingRow\n ? { isLoading: true }\n : getRowLoadingState?.(originalRow, rowIndex);\n const resolvedLoadingState: DataTableRowLoadingState | undefined =\n typeof loadingState === \"boolean\"\n ? { isLoading: loadingState }\n : loadingState;\n const isDraggable = isInitialLoadingRow\n ? false\n : (dragAndDrop?.getRowDraggable?.(originalRow) ?? false);\n\n return (\n \n );\n })}\n {virtualPaddingBottom > 0 ? (\n \n \n \n ) : null}\n \n ) : (\n \n \n
    \n {emptyNode ?? (\n \n )}\n
    \n \n
    \n )}\n
    \n {summaryRows.length ? (\n \n {summaryRows.map((summaryRow) => (\n \n {visibleLeafColumns.map((column, index) => {\n const content =\n summaryRow.cells[column.id] ??\n (index === 0 ? summaryRow.label : null);\n return (\n \n {typeof content === \"function\"\n ? content({\n rows: summarySourceRows,\n columnId: column.id,\n })\n : content}\n \n );\n })}\n \n ))}\n \n ) : null}\n \n
    \n\n {infiniteScroll?.enabled &&\n renderedRows.length &&\n !shouldRenderInitialLoading ? (\n
    \n
    \n
    \n ) : null}\n \n \n
    \n \n );\n}\n\nfunction getHeaderLayout(\n header: Header,\n getColumnLayout: (columnId: string) => DataTableColumnLayout,\n) {\n const columnLayout = getColumnLayout(header.column.id);\n if (header.isPlaceholder || !header.subHeaders.length) {\n return columnLayout;\n }\n\n const leafLayouts = header\n .getLeafHeaders()\n .filter((leafHeader) => !leafHeader.subHeaders.length)\n .map((leafHeader) => getColumnLayout(leafHeader.column.id));\n const fixedSide = leafLayouts[0]?.fixedSide;\n\n if (\n !fixedSide ||\n !leafLayouts.every((layout) => layout.fixedSide === fixedSide)\n ) {\n return columnLayout;\n }\n\n const edgeLayout =\n fixedSide === \"left\" ? leafLayouts[0] : leafLayouts.at(-1);\n\n return {\n ...columnLayout,\n fixedSide,\n headerStyle: edgeLayout?.headerStyle\n ? {\n left: edgeLayout.headerStyle.left,\n right: edgeLayout.headerStyle.right,\n }\n : undefined,\n pinnedClassName: edgeLayout?.pinnedClassName,\n };\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-54H6DRO6.js b/dist/chunk-54H6DRO6.js deleted file mode 100644 index cbf57aa..0000000 --- a/dist/chunk-54H6DRO6.js +++ /dev/null @@ -1,2 +0,0 @@ -import {a as a$1,b}from'./chunk-M77BQPKU.js';import {w,u,c,z,A,G,K,D,L,F,v as v$1,x,y,I,J,N,E,Q,o,t,j as j$1,l,r,a as a$2,q,p,H,M,B,C,k,i}from'./chunk-ZGXFBFNQ.js';import {a,j,c as c$1,e,f,d}from'./chunk-PFB5LOU7.js';import*as v from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {useReactTable,getPaginationRowModel,getExpandedRowModel,getSortedRowModel,getFilteredRowModel,getCoreRowModel}from'@tanstack/react-table';import {flushSync}from'react-dom';function Mt({cardClassName:e,cardGridClassName:a$1,cardSizing:n,cardRenderer:t,currentRowSelection:o,DataTableCardView:d,DataTableEmptyState:l,dragAndDrop:u,editableRows:g,editingRowId:f,emptyNode:P,enableRowSelection:x,flexGrow:S,getRowClassName:R,hasCardTitle:k,infiniteScroll:E,localSearchValue:O,onRowClick:T,renderedRows:m,renderExpandedRow:c,resolvedLabels:h,resolvedLoadingRowCount:b,rowActions:r=[],ScrollArea:C,sentinelRef:D,setCurrentRowSelection:z,setEditingRowId:N,shouldRenderInitialLoading:U,tableContainerClassName:F,uiClassNames:I}){let w=U||m.length>0,j=v.useRef(null),K=(ae,oe)=>jsx(d,{rows:ae,cardRenderer:t,cardGridClassName:a$1,cardClassName:e,cardSizing:n,rowActions:r,editableRows:g,renderExpandedRow:c,hasCardTitle:k,rowSelection:o,onRowSelectionChange:z,enableRowSelection:x,editingRowId:f,onEditingRowIdChange:N,getRowClassName:R,onRowClick:T,getRowDraggable:u?.getRowDraggable,onRowDragStart:u?.onRowDragStart,onRowDragEnd:u?.onRowDragEnd,isLoading:oe?.isLoading,loadingRowCount:oe?.loadingRowCount,labels:h});return jsx("div",{ref:j,"data-dtp-slot":"data-table-card-shell",className:a("box-border border-2 border-transparent transition-colors",S?"flex min-h-0 flex-1 flex-col":"h-full",u?.isDragging&&(I.dragActive??"rounded-md border-dashed")),children:jsx(C,{className:a(S?"min-h-0 flex-1":"h-full",I.cardScrollArea,F),children:jsxs("div",{"data-dtp-slot":"data-table-card-viewport",className:a("flex min-h-full min-w-0 flex-col",S&&"min-h-0 flex-1",I.cardViewport),children:[w?U?K([],{isLoading:true,loadingRowCount:b}):K(m):jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center p-4",children:P??jsx(l,{title:O?h.noMatchingRowsTitle:h.noRowsTitle,description:O?h.noMatchingRowsDescription:h.noRowsDescription})}),E?.enabled&&!U?jsx("div",{className:"shrink-0 px-4 pb-4",children:jsx("div",{ref:D,className:"h-4 w-full"})}):null]})})})}var pr=v.lazy(async()=>({default:(await import('./data-table-virtual-card-panel-HHZCRLEB.js')).DataTableVirtualCardPanel}));function Jn(e){return (typeof e.virtualization=="object"?e.virtualization.card:void 0)?.enabled!==true?jsx(Mt,{...e}):jsx(v.Suspense,{fallback:jsx(Mt,{...e}),children:jsx(pr,{...e})})}function qn({children:e,currentPagination:a,DataTableFooter:n,effectivePageCount:t,footerTotalRowCount:o,handleFooterPageIndexChange:d,handleFooterPageSizeChange:l,labels:u,pageCountKnown:g=true,rowsPerPageOptions:f,showFooter:P}){return !P&&!e?null:jsxs("div",{"data-dtp-slot":"data-table-footer",className:"shrink-0",children:[P?jsx(n,{pageIndex:a.pageIndex,pageCount:t,pageCountKnown:g,pageSize:a.pageSize,totalRowCount:o,rowsPerPageOptions:f,onPageIndexChange:d,onPageSizeChange:l,labels:u}):null,e]})}function Yn({allRows:e,columnFilters:a,columnVisibilityOptions:n,compactToolbar:t,customToolbar:o,DataTableToolbar:d,description:l,effectiveToolbarActions:u,enableColumnPinning:g,enableDensityToggle:f,enableViewToggle:P,hiddenRowsLabel:x,labels:S,onClearColumnFilters:R,onColumnFilterChange:k,onColumnPinningChange:E,onDensityChange:O,onShowHiddenRowsChange:T,onToolbarQueryValueChange:m,onViewModeChange:c,openFileDialog:h,selectedRows:b,selectionActions:r,showHiddenRows:C,table:D,title:z,toolbarQueryPlaceholder:N,toolbarQueryValue:U,toolbarVisibility:F,density:I,viewMode:w}){return jsx("div",{"data-dtp-slot":"data-table-toolbar",className:"shrink-0",children:jsx(d,{title:z,description:l,toolbarQueryValue:U,toolbarQueryPlaceholder:N,onToolbarQueryValueChange:m,customToolbar:o,compactToolbar:t,viewMode:w,onViewModeChange:c,enableViewToggle:P,toolbarActions:u,selectionActions:r,selectedRows:b,showHiddenRows:C,hiddenRowsLabel:x,onShowHiddenRowsChange:T,allRows:e,columnVisibilityOptions:n,onColumnVisibilityChange:(j,K)=>{D.getColumn(j)?.toggleVisibility(K);},enableColumnPinning:g,onColumnPinningChange:E,columnFilters:a,onColumnFilterChange:k,onClearColumnFilters:R,density:I,onDensityChange:O,enableDensityToggle:f,labels:S,toolbarVisibility:F,openFileDialog:h})})}var de={searchPlaceholder:"Search rows...",searchTable:"Search table",clearSearch:"Clear search",noRowsTitle:"No rows yet",noRowsDescription:"Create a record or refresh this view once data exists.",noMatchingRowsTitle:"No matching rows",noMatchingRowsDescription:"Try a different search term or clear filters.",tableOptions:"Show table options",columns:"Columns",filters:"Filters",clearFilters:"Clear filters",selectedRows:e=>`${e} record${e===1?"":"s"} selected`,showHiddenRows:e=>`Show ${e}`,recordsPerPage:"Records per page",totalRecords:e=>`Total records: ${e}`,pageStatus:(e,a)=>`Page ${e+1} of ${a}`,pageStatusUnknown:e=>`Page ${e+1}`,pagination:"Pagination",morePages:"More pages",firstPage:"First page",previousPage:"Previous page",nextPage:"Next page",lastPage:"Last page",selectAllVisibleRows:"Select all visible rows",selectRow:"Select row",selectCardRow:e=>`Select row ${e}`,switchToTableView:"Switch to table view",switchToCardView:"Switch to card view",tableView:"Table view",cardView:"Card view",allFilterOptions:"All",actions:"Actions",rowActions:"Row actions",editRow:"Edit row",saveEdit:"Save",cancelEdit:"Cancel editing",expandRow:"Expand row",collapseRow:"Collapse row",exportCsv:"Export CSV",density:"Density",compactDensity:"Compact",comfortableDensity:"Comfortable",spaciousDensity:"Spacious",pinLeft:"Pin left",pinRight:"Pin right",unpin:"Unpin"};function Zn(e){return {...de,...e}}function eo({Button:e,Checkbox:a$1,DataTableRowActions:n,Tooltip:t,TooltipContent:o,TooltipTrigger:d,cancelEditing:l,columns:u$1,editableRows:g,editingRowId:f,enableRowSelection:P,getRowCanExpand:x,isSavingEdit:S,labels:R,lastSelectedRowIdRef:k,renderExpandedRow:E,rowActions:O,saveEdit:T,startEditingRow:m,tableRef:c$1}){let h=v.useCallback((b,r)=>{let C=c$1.current;if(!C||!k.current)return;let D=C.getRowModel().rows.filter(I=>!w(I.original)),z=D.findIndex(I=>I.id===k.current),N=D.findIndex(I=>I.id===b);if(z<0||N<0)return;let U=Math.min(z,N),F=Math.max(z,N);C.setRowSelection(I=>{let w={...I};for(let j of D.slice(U,F+1))r?w[j.id]=true:delete w[j.id];return w});},[k,c$1]);return v.useMemo(()=>{let b=[];return E&&b.push({id:"__expand__",enableResizing:false,enableSorting:false,enableHiding:false,size:u,minSize:u,maxSize:u,header:()=>jsx("span",{className:"sr-only",children:R.expandRow}),cell:({row:r})=>{if(!(x?.(r.original)??!!E))return null;let D=r.getIsExpanded();return jsx("div",{className:"flex items-center justify-center",children:jsx(e,{type:"button",variant:"ghost",size:"icon-sm","aria-label":D?R.collapseRow:R.expandRow,"aria-expanded":D,onClick:()=>r.toggleExpanded(),children:jsx(c,{className:a("transition-transform",D?"rotate-0":"-rotate-90")})})})}}),P&&b.push({id:"__select__",enableResizing:false,enableSorting:false,enableHiding:false,size:u,minSize:u,maxSize:u,header:({table:r})=>jsx("div",{className:"flex items-center justify-center",children:jsx(a$1,{className:"my-0.5",checked:r.getIsAllPageRowsSelected(),onCheckedChange:C=>{r.toggleAllPageRowsSelected(C===true);},"aria-label":R.selectAllVisibleRows??de.selectAllVisibleRows})}),cell:({row:r})=>jsx("div",{className:"flex items-center justify-center",children:jsx(a$1,{className:"my-0.5",checked:r.getIsSelected(),onClick:C=>{if(!C.shiftKey||!k.current){k.current=r.id;return}C.preventDefault(),C.stopPropagation(),h(r.id,!r.getIsSelected()),k.current=r.id;},onCheckedChange:C=>{k.current=r.id,r.toggleSelected(C===true);},"aria-label":R.selectRow??de.selectRow})})}),b.push(...u$1.map(r=>z(r))),(O.length||g)&&b.push({id:"__actions__",enableSorting:false,enableResizing:false,enableHiding:false,size:u,minSize:u,maxSize:u,header:()=>jsx("span",{className:"sr-only",children:R.actions}),cell:({row:r})=>{let C=r.id;return f===C?jsxs("div",{className:"flex w-full items-center justify-end gap-2",children:[jsx(e,{type:"button",size:"sm",disabled:S,onClick:()=>{T(r.original);},children:R.saveEdit}),jsxs(t,{children:[jsx(d,{asChild:true,children:jsxs(e,{type:"button",size:"icon-sm",variant:"ghost",onClick:l,children:[jsx(c,{className:"rotate-45"}),jsx("span",{className:"sr-only",children:R.cancelEdit})]})}),jsx(o,{children:R.cancelEdit})]})]}):jsx("div",{className:"flex w-full items-center justify-center",children:jsx(n,{row:r.original,rowActions:O,editableRows:g,isEditing:false,onStartEditing:()=>{m(r.original,r.id);},onCancelEditing:()=>{},labels:R})})}}),b},[e,a$1,n,t,o,d,l,u$1,g,f,P,x,S,R,k,E,O,T,h,m])}function ao({enabled:e,hasMore:a,isLoadingMore:n,onLoadMore:t,onError:o}){let d=v.useRef(null),l=v.useRef(false),u=v.useEffectEvent(t),g=v.useEffectEvent(f=>{o?.(f);});return v.useEffect(()=>{if(!e||!a||n)return;let f=d.current;if(!f)return;let P=new IntersectionObserver(x=>{if(x[0].isIntersecting&&!l.current){l.current=true;let R;try{R=u();}catch(k){l.current=false,g(k);return}Promise.resolve(R).catch(k=>{g(k);}).finally(()=>{l.current=false;});}},{rootMargin:"200px 0px 200px 0px"});return P.observe(f),()=>{P.disconnect();}},[e,a,n]),d}function no({enabled:e,maxPageIndex:a,onPageIndexChange:n,pageIndex:t,setLocalPageIndex:o}){v.useEffect(()=>{if(!e||t>=0&&t<=a)return;let d=Math.min(Math.max(t,0),a);o(d),n?.(d);},[e,a,n,t,o]);}function oo({autoResetPageIndex:e,columnResizeMode:a,currentColumnFilters:n,currentColumnOrder:t,currentColumnPinning:o,currentColumnSizing:d,currentExpanded:l,currentPagination:u,currentRowSelection:g,currentSorting:f,defaultColumn:P,effectiveColumnVisibility:x,enableColumnResizing:S,enableRowSelection:R,getRowCanExpand:k,globalFilterFn:E,globalFilterValue:O,hasNextPage:T,handleColumnFiltersChange:m,handleColumnOrderChange:c,handleColumnPinningChange:h,handleColumnVisibilityChange:b,handleExpandedChange:r,infiniteScroll:C,manualFiltering:D$1,manualPagination:z,manualSorting:N,onActionError:U,onPageIndexChange:F,onPageSizeChange:I,pageCount:w,pageIndex:j,pageSize:K$1,renderExpandedRow:ae,setCurrentRowSelection:oe,setCurrentSorting:A$1,setLocalColumnSizing:G$1,setLocalPagination:W,shouldRenderInitialLoading:De,tableColumns:be,tableData:ge,tableGetRowId:Ve,tableRef:Oe,totalRowCount:ve}){let J=v.useMemo(()=>A(be).map(({column:y,index:V})=>G(y,V)),[be]),Pe=v.useMemo(()=>{let y=J,V=y.filter(q=>!K(q)&&q!=="__spacer__"),me=new Set(V),Re=t.filter(q=>me.has(q)),X=V.filter(q=>!Re.includes(q));return [...y.filter(q=>q==="__expand__"||q==="__select__"),...Re,...X,...y.filter(q=>q==="__spacer__"),...y.filter(q=>q==="__actions__")]},[t,J]),we=v.useMemo(()=>{let y=new Set(J),V=new Set(J.filter(X=>!K(X)&&X!=="__spacer__")),me=(o.left??[]).filter(X=>V.has(X)),Re=(o.right??[]).filter(X=>V.has(X));return {left:[...["__expand__","__select__"].filter(X=>y.has(X)),...me],right:[...Re,...["__actions__"].filter(X=>y.has(X))]}},[o,J]),M=v.useMemo(()=>({sorting:f,pagination:u,rowSelection:g,columnVisibility:x,columnFilters:n,globalFilter:O,expanded:l,columnOrder:Pe,columnPinning:we,columnSizing:d}),[n,d,l,u,g,f,x,Pe,we,O]),ie=v.useCallback(y=>{let V=typeof y=="function"?y(u):y;(j===void 0||K$1===void 0)&&W(me=>({pageIndex:j===void 0?V.pageIndex:me.pageIndex,pageSize:K$1===void 0?V.pageSize:me.pageSize})),V.pageIndex!==u.pageIndex&&F?.(V.pageIndex),V.pageSize!==u.pageSize&&I?.(V.pageSize);},[u,F,I,j,K$1,W]),Je=v.useCallback(y=>{G$1(y);},[G$1]),ue=useReactTable({data:ge,columns:be,getCoreRowModel:getCoreRowModel(),getFilteredRowModel:D$1?void 0:getFilteredRowModel(),getSortedRowModel:N?void 0:getSortedRowModel(),getExpandedRowModel:ae?getExpandedRowModel():void 0,getPaginationRowModel:z||C?.enabled?void 0:getPaginationRowModel(),enableRowSelection:R,enableMultiRowSelection:R,enableColumnResizing:S,columnResizeMode:a,getRowId:Ve,getRowCanExpand:ae?y=>k?.(y.original)??true:void 0,globalFilterFn:E??D,getColumnCanGlobalFilter:y=>y.columnDef.enableGlobalFilter!==false&&typeof y.accessorFn=="function",manualSorting:N,manualFiltering:D$1,manualPagination:z||!!C?.enabled,defaultColumn:P,autoResetPageIndex:e,state:M,onSortingChange:A$1,onPaginationChange:ie,onRowSelectionChange:oe,onColumnVisibilityChange:b,onColumnFiltersChange:m,onExpandedChange:r,onColumnOrderChange:c,onColumnPinningChange:h,onColumnSizingChange:Je});Oe.current=ue;let pe=ue.getVisibleLeafColumns(),ia=v.useCallback((y,V)=>{if(y===V)return;let me=ue.getAllLeafColumns().map(X=>X.id).filter(X=>!K(X)),Re=L(t.length?t:me,y,V);c(Re);},[t,c,ue]),ee=ue.getRowModel().rows,_e=ee.map((y,V)=>({row:y,rowIndex:V})),he=z||!!C?.enabled,He=he?void 0:ue.getFilteredRowModel().rows.length,xe=ve??He,Be=!he||w!==void 0||ve!==void 0,$e=xe,Ue=De?1:w??(xe!==void 0?Math.max(1,Math.ceil(xe/u.pageSize)):he?u.pageIndex+(T?2:1):ue.getPageCount()),Ke=Math.max(0,Ue-1),ye=v.useCallback(y=>{j===void 0&&W(V=>V.pageIndex===y?V:{...V,pageIndex:y});},[j,W]);no({enabled:!De&&!C?.enabled&&Be,maxPageIndex:Ke,onPageIndexChange:F,pageIndex:u.pageIndex,setLocalPageIndex:ye});let je=v.useCallback(y=>{y!==u.pageIndex&&(F?.(y),j===void 0&&W(V=>V.pageIndex===y?V:{...V,pageIndex:y}));},[u.pageIndex,F,j,W]),ra=v.useCallback(y=>{u.pageIndex!==0&&F?.(0),y!==u.pageSize&&I?.(y),K$1===void 0&&W({pageIndex:0,pageSize:y});},[u.pageIndex,u.pageSize,F,I,K$1,W]),qe=ao({enabled:!!C?.enabled,hasMore:!!C?.hasMore,isLoadingMore:C?.isLoadingMore,onLoadMore:()=>C?.onLoadMore(),onError:y=>{U?.({error:y,source:"infiniteScroll"});}});return {effectivePageCount:Ue,footerTotalRowCount:$e,handleFooterPageIndexChange:je,handleFooterPageSizeChange:ra,isPageCountKnown:Be,renderedRows:ee,reorderColumn:ia,rowsToRender:_e,sentinelRef:qe,table:ue,virtualPaddingBottom:0,virtualPaddingTop:0,visibleLeafColumns:pe}}function Me({defaultValue:e,onChange:a,value:n}){let[t,o]=v.useState(e),d=n??t,l=v.useRef(d);v.useEffect(()=>{l.current=d;},[d]);let u=v.useCallback(g=>{let f=typeof g=="function"?g(l.current):g;l.current=f,a?.(f),n===void 0&&o(f);},[a,n]);return [d,u]}var hr="data-table-pro:column-prefs:",ro=1,io=["visibility","sizing","order","pinning","density"];function lo(e){let a=Ft(e);if(!a)return {};let n=It(a);if(!n)return {};let t=zt(a.key),o;try{o=n.getItem(t);}catch(g){return a.onError?.({error:g,operation:"read"}),{}}if(!o)return {};let d;try{d=(a.deserialize??JSON.parse)(o);}catch(g){return a.onError?.({error:g,operation:"deserialize"}),{}}let l=a.version??ro,u;if(yr(d))if(d.version===l)u=d.state;else if(a.migrate)try{u=a.migrate({version:d.version,state:d.state},l);}catch(g){return a.onError?.({error:g,operation:"migrate"}),{}}else return {};else u=d;return uo(Rr(u),a.slices)}function so(e){let a=Ft(e);if(!a)return false;let n=It(a);if(!n)return false;try{return n.removeItem(zt(a.key)),!0}catch(t){return a.onError?.({error:t,operation:"remove"}),false}}function co({key:e,persistence:a,prefs:n}){let t=a??Ft(e),o=t?It(t):void 0,d=t?zt(t.key):void 0,l=t?.version??ro,u=Math.max(0,t?.debounceMs??100),g=uo(n,t?.slices),f=v.useMemo(()=>{if(!t)return {value:void 0};try{let x={version:l,state:g};return {value:(t.serialize??JSON.stringify)(x)}}catch(x){return {error:x,value:void 0}}},[t,g,l]),P=v.useEffectEvent((x,S)=>{t?.onError?.({error:x,operation:S});});v.useEffect(()=>{f.error!==void 0&&P(f.error,"serialize");},[f.error]),v.useEffect(()=>{if(!o||!d||f.value===void 0)return;let x=()=>{try{if(o.getItem(d)===f.value)return;o.setItem(d,f.value);}catch(R){P(R,"write");}};if(u===0){x();return}let S=globalThis.setTimeout(x,u);return ()=>{globalThis.clearTimeout(S);}},[u,f.value,o,d]);}function Ft(e){if(e)return typeof e=="string"?{key:e}:e}function It(e){if(e.storage)return e.storage;if(!(typeof window>"u"))try{return window.localStorage}catch(a){e.onError?.({error:a,operation:"read"});return}}function zt(e){return `${hr}${e}`}function yr(e){return za(e)&&Object.prototype.hasOwnProperty.call(e,"version")&&Object.prototype.hasOwnProperty.call(e,"state")}function uo(e,a){let n=new Set(a??io),t={};for(let o of io)n.has(o)&&e[o]!==void 0&&Object.assign(t,{[o]:e[o]});return t}function Rr(e){if(!za(e))return {};let a={},n=Sr(e.visibility);n&&(a.visibility=n);let t=vr(e.sizing);t&&(a.sizing=t);let o=Vt(e.order);if(o&&(a.order=o),za(e.pinning)){let d=Vt(e.pinning.left)??[],l=Vt(e.pinning.right)??[];a.pinning={left:d,right:l};}return Pr(e.density)&&(a.density=e.density),a}function Sr(e){if(za(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="boolean"))}function vr(e){if(za(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="number"&&Number.isFinite(a[1])&&a[1]>=0))}function Vt(e){if(Array.isArray(e))return e.filter(a=>typeof a=="string")}function Pr(e){return e==="compact"||e==="comfortable"||e==="spacious"}function za(e){return !!e&&typeof e=="object"&&!Array.isArray(e)}function po({columnFilters:e,columnOrder:a,columnPinning:n,columnSizing:t,columnPrefsKey:o,persistence:d,columnVisibility:l,columns:u,data:g,density:f,enableRowSelection:P,enableToolbarQueryFiltering:x$1,expanded:S,getRowId:R,hiddenRows:k,initialState:E,isLoading:O,loadingRowCount:T,manualFiltering:m,onColumnFiltersChange:c,onColumnOrderChange:h,onColumnPinningChange:b,onColumnSizingChange:r,onColumnVisibilityChange:C,onDensityChange:D,onExpandedChange:z,onPageIndexChange:N,onRowSelectionChange:U,onShowHiddenRowsChange:F$1,onSortingChange:I,onToolbarQueryValueChange:w$1,onViewModeChange:j$1,pageIndex:K,pageSize:ae,resolvedLabels:oe,rowSelection:A$1,rowsPerPageOptions:G$1,selectionActions:W,showHiddenRows:De,sorting:be,toolbarQueryDebounceMs:ge,toolbarQueryPlaceholder:Ve,toolbarQueryValue:Oe,viewMode:ve,containerRef:J}){let Pe=v.useMemo(()=>d??(o?{key:o}:void 0),[o,d]),we=v.useMemo(()=>lo(Pe),[Pe]),[M,ie]=v.useState({pageIndex:E?.pagination?.pageIndex??0,pageSize:E?.pagination?.pageSize??G$1[0]??20}),[Je,ue]=Me({value:be,onChange:I,defaultValue:()=>E?.sorting??[]}),[pe,ia]=Me({value:A$1,onChange:U,defaultValue:()=>E?.rowSelection??{}}),[ee,_e]=Me({value:l,onChange:C,defaultValue:()=>E?.columnVisibility??we.visibility??{}}),[he,He]=Me({value:e,onChange:c,defaultValue:()=>E?.columnFilters??[]}),[xe,Be]=Me({value:S,onChange:z,defaultValue:()=>E?.expanded??{}}),[$e,Ue]=Me({value:a,onChange:h,defaultValue:()=>E?.columnOrder??we.order??[]}),[Ke,ye]=Me({value:n,onChange:b,defaultValue:()=>E?.columnPinning??we.pinning??F(u)}),[je,ra]=Me({value:t,onChange:r,defaultValue:()=>E?.columnSizing??we.sizing??{}}),[qe,y]=Me({value:ve,onChange:j$1,defaultValue:()=>E?.viewMode??"table"}),[V,me]=Me({value:De,onChange:F$1,defaultValue:()=>E?.showHiddenRows??false}),[Re,X]=Me({value:f,onChange:D,defaultValue:()=>E?.density??we.density??"comfortable"}),q=Oe??E?.globalFilter??"",Ra=Ve??oe.searchPlaceholder,i=ge??250,[$,fe]=v.useState(q),ua=a$1(J),Sa=!!w$1,va=v.useRef(q),st=v.useEffectEvent(_=>{va.current=_,w$1?.(_);});v.useEffect(()=>{va.current=q,fe(q);},[q]),v.useEffect(()=>{if(!Sa||$===q||$===va.current)return;let _=window.setTimeout(()=>{st($);},i);return ()=>{window.clearTimeout(_);}},[Sa,$,i,q]);let pa=v.useMemo(()=>({pageIndex:K??M.pageIndex,pageSize:ae??M.pageSize}),[M.pageIndex,M.pageSize,K,ae]),la=Math.max(1,T??Math.min(5,pa.pageSize)),re=x$1?$:"",Y=v.useCallback(_=>{y(_);},[y]),le=v.useCallback(_=>{me(_);},[me]),ne=v.useCallback(_=>{X(_);},[X]),La=v.useCallback(()=>{N?.(0),K===void 0&&ie(_=>_.pageIndex===0?_:{..._,pageIndex:0});},[N,K]),Xe=v.useMemo(()=>JSON.stringify({globalFilterValue:re,columnFilters:he}),[he,re]),Pa=v.useRef(Xe);v.useEffect(()=>{if(m){Pa.current=Xe;return}Pa.current!==Xe&&(Pa.current=Xe,La());},[Xe,m,La]),co({persistence:Pe,prefs:{visibility:l?void 0:ee,sizing:t===void 0?je:void 0,order:a?void 0:$e,pinning:n?void 0:Ke,density:f?void 0:Re}});let ma=v.useMemo(()=>A(u).reduce((_,{column:Ie,index:Ba})=>{let mt=G(Ie,Ba);return j(Ie.meta?.hideOn,ua)&&(_[mt]=false),_},{}),[u,ua]),dt=v.useMemo(()=>({...ee,...ma}),[ee,ma]),Ye=v.useMemo(()=>g.filter(_=>c$1(_,k,V)),[V,g,k]),Oa=O&&Ye.length===0,_a=v.useMemo(()=>v$1(la),[la]),ct=Oa?_a:Ye,ut=v.useCallback((_,Ie)=>w(_)?x(Ie):R(_,Ie),[R]),Ze=P||(W?.length??0)>0||Object.values(pe).some(Boolean),Ha=v.useMemo(()=>Ze?new Map(Ye.map((_,Ie)=>[R(_,Ie),_])):new Map,[R,Ze,Ye]),pt=v.useMemo(()=>Ze?Object.entries(pe).filter(([,_])=>_).map(([_])=>Ha.get(_)).filter(_=>!!_):[],[pe,Ha,Ze]);return {currentColumnFilters:he,currentColumnOrder:$e,currentColumnPinning:Ke,currentColumnSizing:je,currentColumnVisibility:ee,currentDensity:Re,currentExpanded:xe,currentPagination:pa,currentRowSelection:pe,currentShowHiddenRows:V,currentSorting:Je,currentViewMode:qe,effectiveColumnVisibility:dt,globalFilterValue:re,handleDensityChange:ne,handleShowHiddenRowsChange:le,handleViewModeChange:Y,localSearchValue:$,resolvedLoadingRowCount:la,resolvedToolbarQueryPlaceholder:Ra,selectedRows:pt,setCurrentColumnFilters:He,setCurrentColumnOrder:Ue,setCurrentColumnPinning:ye,setCurrentColumnVisibility:_e,setCurrentExpanded:Be,setCurrentRowSelection:ia,setCurrentSorting:ue,setLocalColumnSizing:ra,setLocalPagination:ie,setLocalSearchValue:fe,shouldRenderInitialLoading:Oa,tableData:ct,tableGetRowId:ut,toolbarFilteredData:Ye,visibleData:Ye}}var xr={cellStyle:void 0,colStyle:void 0,fixedSide:void 0,headerStyle:void 0,isActionsColumn:false,isExpansionColumn:false,isSelectionColumn:false,isSpacerColumn:false,isUtilityColumn:false,pinnedClassName:void 0,utilityClassName:void 0};function bo({columns:e,columnSizing:a,editableRows:n,enableRowSelection:t,hasRowActions:o,hasRowExpansion:d,layoutMode:l,uiClassNames:u$1,visibleLeafColumns:g}){let f=v.useMemo(()=>{let T=new Set;for(let{column:m,index:c}of A(e))Object.prototype.hasOwnProperty.call(m,"size")&&T.add(G(m,c));return t&&T.add("__select__"),d&&T.add("__expand__"),(o||n)&&T.add("__actions__"),T},[e,n,t,o,d]),P=v.useMemo(()=>{let T=new Map;for(let{column:m,index:c}of A(e)){let h=y(m);h!==void 0&&T.set(G(m,c),h);}return T},[e]),x=v.useMemo(()=>{let T=new Map,m=new Map,c=0;for(let b of g)I(b)==="left"&&(T.set(b.id,c),c+=mo(b));let h=0;for(let b of [...g].reverse())I(b)==="right"&&(m.set(b.id,h),h+=mo(b));return {left:T,right:m}},[g]),S=v.useMemo(()=>{if(l!=="fill")return;let T=g.filter(c=>!K(c.id));return T.length&&T.every(c=>f.has(c.id)||Object.prototype.hasOwnProperty.call(a,c.id))?T[T.length-1]?.id:void 0},[a,f,l,g]),R=v.useMemo(()=>{let T=new Set([...f,...Object.keys(a)]);return S&&T.delete(S),T},[a,f,S]),k=v.useMemo(()=>{let T=new Map;for(let m of g){let c=m.id==="__select__",h=m.id==="__expand__",b=m.id==="__actions__",r=c||h||b,C=m.id==="__spacer__",D=P.get(m.id),z=m.id===S,N=D??(z?m.getSize():void 0),U=!C&&(l==="fit"||r||R.has(m.id)),F=U||N!==void 0?{width:U?r?u:m.getSize():void 0,minWidth:r?u:U?m.getSize():N,maxWidth:U?r?u:m.getSize():void 0}:void 0,I$1=I(m),w=I$1?{insetInlineStart:I$1==="left"?x.left.get(m.id):void 0,insetInlineEnd:I$1==="right"?x.right.get(m.id):void 0}:void 0,j=F||w?{...F,...w}:void 0;T.set(m.id,{cellStyle:j,colStyle:F,fixedSide:I$1,headerStyle:j,isActionsColumn:b,isExpansionColumn:h,isSelectionColumn:c,isSpacerColumn:C,isUtilityColumn:r,pinnedClassName:I$1?J(I$1,u$1,{isUtilityColumn:r}):void 0,utilityClassName:r?"w-[50px] max-w-[50px] min-w-[50px] px-0":void 0});}return T},[S,R,l,P,x,u$1,g]),E=v.useMemo(()=>g.reduce((T,m)=>{let c=k.get(m.id),h=P.get(m.id),b=m.id===S;return c?.isUtilityColumn?T+u:R.has(m.id)?T+m.getSize():T+(h??(b?m.getSize():0))},0),[k,S,R,P,g]),O=v.useCallback(T=>k.get(T)??xr,[k]);return {columnLayouts:k,explicitlySizedColumnIds:f,fillMinWidth:E,getColumnLayout:O}}function mo(e){return K(e.id)?u:e.getSize()}function fo(e,a$1){let n=e.classNames??{},{Card:t,CardContent:o,CardHeader:d,Checkbox:l,Skeleton:u}=e;return function({rows:f,cardRenderer:P,cardSizing:x="fixed",cardGridClassName:S,cardClassName:R,rowActions:k,editableRows:E,renderExpandedRow:O,hasCardTitle:T,rowSelection:m,onRowSelectionChange:c,enableRowSelection:h,editingRowId:b,onEditingRowIdChange:r,getRowClassName:C,onRowClick:D,getRowDraggable:z,onRowDragStart:N,onRowDragEnd:U,isLoading:F=false,loadingRowCount:I=5,labels:w}){let j=x??"fixed",K=S?a("grid",S):kr(j),ae=a("min-h-0 w-full gap-4 p-1",n.cardGrid,K),oe=A=>a("relative min-w-0 max-w-full gap-0 overflow-hidden bg-transparent p-0",Er(j),n.cardItem,R,A);return F?jsx("div",{role:"list","data-dtp-slot":"data-table-card-grid",className:ae,children:Array.from({length:Math.max(1,I)},(A,G)=>jsxs(t,{role:"listitem","aria-hidden":"true","data-dtp-slot":"data-table-card-item",className:oe("min-h-52"),children:[T?jsxs(d,{className:"px-4 pt-4 pb-3",children:[jsx(u,{className:"h-5 w-40 max-w-[70%]"}),jsx(u,{className:"h-4 w-24 max-w-[40%]"})]}):null,jsxs(o,{className:a("space-y-3 pb-4",T?"":"pt-4"),children:[jsx(u,{className:"h-4 w-full"}),jsx(u,{className:"h-4 w-[82%]"}),jsx(u,{className:"h-4 w-[68%]"}),jsx(u,{className:"h-24 w-full rounded-xl"})]})]},`loading-card-${G}`))}):jsx("div",{role:"list","data-dtp-slot":"data-table-card-grid",className:ae,children:f.map(A=>{let G=A.id,W=A.original,De=!!m[G],be=b===G,ge=k.length>0||!!E,Ve=h||ge||T,Oe=h||ge,ve=()=>{D&&D({row:W,rowId:G});};return jsxs(t,{role:"listitem","data-row-id":G,draggable:z?.(W)??false,"data-dtp-slot":"data-table-card-item","data-state":De?"selected":void 0,className:oe(a([C?.(W)].filter(Boolean).join(" "),"transition transition-colors hover:scale-101 data-[state=selected]:scale-101",n.card,De?n.cardSelected:n.cardUnselected)),onDragStart:J=>{N?.({row:W,rowId:G,event:J});},onDragEnd:J=>{U?.({row:W,rowId:G,event:J});},children:[Ve?jsx("div",{"aria-hidden":"true",className:a("pointer-events-none absolute inset-x-0 top-0 z-10 h-24 bg-linear-to-b opacity-0 transition-opacity group-hover/card:opacity-100",n.cardOverlay??"from-transparent via-transparent to-transparent")}):null,jsxs("div",{"data-dtp-slot":"data-table-card-renderer",role:D?"button":void 0,tabIndex:D?0:void 0,className:a("flex min-h-0 max-w-full min-w-0 overflow-hidden rounded-[inherit] [&>*]:min-w-0",Mr(j),D&&"cursor-pointer focus-visible:outline-none"),onClick:J=>{J.target?.closest("[data-row-click-ignore='true']")||ve();},onKeyDown:J=>{J.target?.closest("[data-row-click-ignore='true']")||(J.key==="Enter"||J.key===" ")&&(J.preventDefault(),ve());},children:[P({row:W,rowId:G,isSelected:De,onSelectedChange:J=>{c(go(m,G,J));},actions:k,isEditing:be,startEditing:()=>{r(G);},cancelEditing:()=>{r(null);}}),be||!O||!A.getIsExpanded()?null:O({row:W,rowId:G,tableRow:A})]}),Oe?jsxs(d,{className:"absolute inset-x-0 top-0 z-20 flex flex-row items-center gap-3 space-y-0 px-4 pt-4 pb-8",children:[h?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(l,{checked:De,"aria-label":(w.selectCardRow??de.selectCardRow)(G),onCheckedChange:J=>{c(go(m,G,J===true));}})}):null,jsx("div",{className:"pointer-events-none min-w-0 flex-1"}),ge?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(a$1,{row:W,rowActions:k,editableRows:E,isEditing:be,onStartEditing:()=>{r(G);},onCancelEditing:()=>{r(null);},labels:w})}):null]}):null]},G)})})}}function kr(e){switch(e){case "content":return "flex flex-wrap items-start justify-start";case "fluid":return "grid grid-cols-[repeat(auto-fit,minmax(min(18rem,100%),1fr))]";default:return "grid grid-cols-[repeat(auto-fill,minmax(min(18rem,100%),18rem))] justify-start"}}function Er(e){switch(e){case "content":return "w-fit";case "fluid":return "w-full";default:return}}function Mr(e){switch(e){case "content":return "w-fit";case "fluid":return "w-full flex-1 [&>*]:w-full";default:return "flex-1"}}function go(e,a,n){if(n)return {...e,[a]:true};if(!e[a])return e;let t={...e};return delete t[a],t}function Co(e){let a=e.classNames??{},{Empty:n,EmptyContent:t,EmptyDescription:o$1,EmptyHeader:d,EmptyMedia:l,EmptyTitle:u}=e;return function({title:f="No rows found",description:P="Adjust your filters or create a new record to populate this table."}){return jsxs(n,{className:`min-h-60 rounded-2xl ${a.emptyState??"border bg-transparent"}`,children:[jsxs(d,{children:[jsx(l,{variant:"icon",children:jsx(o,{})}),jsx(u,{children:f}),jsx(o$1,{children:P})]}),jsx(t,{})]})}}function Do(e){let a=e.classNames??{},{Pagination:n,PaginationContent:t,PaginationEllipsis:o,PaginationFirst:d,PaginationItem:l,PaginationLast:u,PaginationLink:g,PaginationNext:f,PaginationPrevious:P,Select:x,SelectContent:S,SelectGroup:R,SelectItem:k,SelectTrigger:E,SelectValue:O,Tooltip:T,TooltipContent:m,TooltipTrigger:c}=e;function h({pageIndex:r,pageCount:C,pageCountKnown:D,pageSize:z,totalRowCount:N,rowsPerPageOptions:U,onPageIndexChange:F,onPageSizeChange:I,labels:w}){let j=D?Ar(r,Math.max(1,C)):[],K=r>0,ae=r+1{I(Number(A));},children:[jsx(E,{"aria-label":w.recordsPerPage,className:`w-22 ${a.paginationSelectTrigger??""}`,children:jsx(O,{})}),jsx(S,{children:jsx(R,{children:U.map(A=>jsx(k,{value:String(A),children:A},A))})})]})]}),N!==void 0?jsx("div",{className:"flex shrink-0 items-center justify-center",children:jsxs("div",{className:`inline-flex items-center gap-2 px-2.5 py-1.5 text-sm ${a.paginationTotal??""}`,"aria-label":w.totalRecords(N),children:[jsx(i,{className:"size-4"}),jsx("span",{className:"@md/data-table:hidden",children:N}),jsx("span",{className:"hidden @md/data-table:inline",children:w.totalRecords(N)})]})}):null,jsxs("div",{className:"flex flex-1 items-center justify-end gap-4",children:[jsx("div",{className:`hidden text-sm @md/data-table:inline ${a.mutedText??"opacity-70"}`,children:D?w.pageStatus(r,Math.max(1,C)):(w.pageStatusUnknown??de.pageStatusUnknown)(r)}),jsx(n,{"aria-label":w.pagination??de.pagination,className:"mx-0 w-auto justify-end",children:jsxs(t,{children:[jsx(l,{className:"@md/data-table:hidden",children:jsxs(T,{children:[jsx(c,{asChild:true,children:jsx(d,{"aria-label":w.firstPage,href:"#",size:"icon-sm",showText:false,disabled:!K,onClick:A=>{A.preventDefault(),K&&F(0);},text:w.firstPage})}),jsx(m,{children:w.firstPage})]})}),jsx(l,{children:jsxs(T,{children:[jsx(c,{asChild:true,children:jsx(P,{"aria-label":w.previousPage,href:"#",size:"icon-sm",showText:false,disabled:!K,onClick:A=>{A.preventDefault(),K&&F(r-1);},text:w.previousPage})}),jsx(m,{children:w.previousPage})]})}),j.map((A,G)=>jsx(l,{className:"hidden @md/data-table:block",children:A==="ellipsis"?jsx(o,{text:w.morePages??de.morePages}):jsx(g,{href:"#",isActive:A===r+1,size:"icon-sm",onClick:W=>{W.preventDefault(),F(A-1);},children:A})},`${A}-${G}`)),jsx(l,{children:jsxs(T,{children:[jsx(c,{asChild:true,children:jsx(f,{"aria-label":w.nextPage,href:"#",size:"icon-sm",showText:false,disabled:!ae,onClick:A=>{A.preventDefault(),ae&&F(r+1);},text:w.nextPage})}),jsx(m,{children:w.nextPage})]})}),D?jsx(l,{className:"@md/data-table:hidden",children:jsxs(T,{children:[jsx(c,{asChild:true,children:jsx(u,{"aria-label":w.lastPage,href:"#",size:"icon-sm",showText:false,text:w.lastPage,disabled:!ae,onClick:A=>{A.preventDefault(),ae&&F(oe);}})}),jsx(m,{children:w.lastPage})]})}):null]})})]})]})}function b(r){return jsx("div",{className:`rounded-md border px-2 py-1 ${a.footer??""}`,children:jsx(h,{...r})})}return {DataTableFooter:b,DataTablePagination:h}}function Ar(e,a){let n=e+1,t=new Set([1,a]);for(let l=Math.max(1,n-2);l<=Math.min(a,n+2);l+=1)t.add(l);let o=Array.from(t).sort((l,u)=>l-u),d=[];for(let l=0;l1&&d.push("ellipsis"),d.push(u);}return d}function ho(e$1){let{Button:a,DropdownMenu:n,DropdownMenuContent:t$1,DropdownMenuGroup:o,DropdownMenuItem:d$1,DropdownMenuSeparator:l$1,DropdownMenuTrigger:u,Tooltip:g,TooltipContent:f$1,TooltipTrigger:P}=e$1;return function({row:S,rowActions:R,editableRows:k,isEditing:E,onStartEditing:O,onCancelEditing:T,labels:m}){let c=R.filter(r=>e(r,S)),h=v.useCallback(r=>{r.stopPropagation();},[]);if(E)return jsxs(g,{children:[jsx(P,{asChild:true,children:jsxs(a,{type:"button",variant:"ghost",size:"icon-sm",onPointerDown:h,onClick:T,children:[jsx(t,{}),jsx("span",{className:"sr-only",children:m.cancelEdit})]})}),jsx(f$1,{children:m.cancelEdit})]});let b=f(k,S);return !c.length&&!b?null:jsxs(n,{children:[jsxs(g,{children:[jsx(P,{asChild:true,children:jsx(u,{asChild:true,children:jsxs(a,{type:"button",variant:"ghost",size:"icon-sm",onPointerDown:h,onClick:h,children:[jsx(j$1,{}),jsx("span",{className:"sr-only",children:m.rowActions})]})})}),jsx(f$1,{children:m.rowActions})]}),jsxs(t$1,{align:"end",className:"w-52",children:[b?jsx(o,{children:jsxs(d$1,{onClick:r=>{r.stopPropagation(),O();},children:[jsx(l,{"data-icon":"inline-start"}),m.editRow]})}):null,b&&c.length?jsx(l$1,{}):null,c.length?jsx(o,{children:c.map(r=>{let C=r.icon;return jsxs(d$1,{disabled:r.disabled?.(S),variant:r.variant==="destructive"?"destructive":void 0,onClick:D=>{D.stopPropagation(),r.onClick(S);},children:[C?jsx(C,{"data-icon":"inline-start"}):null,d(r.label,S)]},r.key)})}):null]})]})}}function yo(e){let a=e.classNames??{},{Button:n,ButtonGroup:t$1,DropdownMenu:o,DropdownMenuCheckboxItem:d,DropdownMenuContent:l,DropdownMenuGroup:u,DropdownMenuItem:g,DropdownMenuLabel:f,DropdownMenuSeparator:P,DropdownMenuTrigger:x,InputGroup:S,InputGroupAddon:R,InputGroupInput:k,Tooltip:E,TooltipContent:O,TooltipTrigger:T}=e;return function({title:h,description:b,toolbarQueryValue:r$1,toolbarQueryPlaceholder:C,onToolbarQueryValueChange:D,customToolbar:z,compactToolbar:N,viewMode:U,onViewModeChange:F,enableViewToggle:I,toolbarActions:w,selectionActions:j,selectedRows:K,showHiddenRows:ae,hiddenRowsLabel:oe,onShowHiddenRowsChange:A,allRows:G,columnVisibilityOptions:W,onColumnVisibilityChange:De,enableColumnPinning:be,onColumnPinningChange:ge,columnFilters:Ve,onColumnFilterChange:Oe,onClearColumnFilters:ve,density:J,onDensityChange:Pe,enableDensityToggle:we,labels:M,toolbarVisibility:ie,openFileDialog:Je}){let ue=v.useRef(null),[pe,ia]=v.useState(false),ee=a.toolbarCompactIconButton??"",_e=w.filter(i=>(i.placement??"primary")==="primary"),he=w.filter(i=>i.placement==="trailing"),He=ie?.title??true,xe=ie?.search??true,Be=ie?.actions??true,$e=ie?.trailingActions??true,Ue=ie?.options??true,Ke=ie?.viewToggle??true,ye=ie?.customToolbar??true,je=He&&!!(h||b),ra=xe,qe=Be&&_e.length>0,y=K.length>0&&j.length>0,V=Ue&&(W.some(i=>i.canHide)||!!(A&&oe)||be||we),me=Ke&&I&&!!F,Re=$e&&he.length>0,X=ye&&!!z,q$1=ye&&!!(N??z),Ra=M.selectedRows(K.length);return v.useEffect(()=>{pe&&ue.current?.focus();},[pe]),!je&&!ra&&!qe&&!y&&!V&&!me&&!Re&&!X&&!q$1?null:jsxs("div",{className:"flex flex-col gap-4 pb-0",children:[He&&(h||b)?jsxs("div",{className:"flex flex-col gap-1",children:[h?jsx("h2",{className:"text-lg font-semibold tracking-tight",children:h}):null,b?jsx("p",{className:`max-w-3xl text-sm ${a.mutedText??"opacity-70"}`,children:b}):null]}):null,jsxs("div",{className:"flex flex-col gap-3",children:[jsxs("div",{"data-dtp-slot":"data-table-toolbar-controls",className:"flex items-center gap-2 overflow-x-auto px-1 @md/data-table:gap-3 @md/data-table:overflow-visible",children:[xe?jsxs(Fragment,{children:[jsx("div",{className:"hidden min-w-0 grow max-w-md @md/data-table:block",children:jsxs(S,{className:"min-w-0",children:[jsx(k,{value:r$1,onChange:i=>{D(i.target.value);},placeholder:C}),jsx(R,{align:"inline-start","aria-hidden":"true",children:jsx(r,{})}),r$1?jsx(R,{align:"inline-end",children:jsx("button",{type:"button",className:`inline-flex size-5 items-center justify-center rounded-md transition-colors focus-visible:outline-none ${a.toolbarIconButton??"opacity-70 hover:opacity-100"}`,onClick:()=>{D("");},"aria-label":M.clearSearch,title:M.clearSearch,children:jsx(t,{})})}):null]})}),jsxs(E,{children:[jsx(T,{asChild:true,children:jsxs(n,{type:"button",variant:pe||r$1?"secondary":"outline",size:"icon-sm","aria-label":M.searchTable,"aria-pressed":pe,className:`shrink-0 @md/data-table:hidden ${ee} ${a.toolbarInputButton??""}`,onClick:()=>{ia(i=>!i);},children:[jsx(r,{}),jsx("span",{className:"sr-only",children:M.searchTable})]})}),jsx(O,{children:M.searchTable})]})]}):null,Be?jsx("div",{className:"flex shrink-0 items-center gap-2",children:_e.map(i=>{let $=!i.iconOnly&&!!i.icon,fe=jsxs(n,{type:"button",className:$?`size-7 shrink-0 px-0 @md/data-table:h-8 @md/data-table:w-fit @md/data-table:px-2.5 ${ee}`:i.iconOnly?`size-7 shrink-0 @md/data-table:size-8 ${ee}`:"size-7 shrink-0 @md/data-table:h-8 @md/data-table:w-fit",variant:i.variant??"outline",size:i.iconOnly?"icon":"default",onClick:()=>{i.onClick({rows:G,openFileDialog:Je});},disabled:i.disabled,"aria-label":i.label,title:i.iconOnly?void 0:i.label,children:[i.icon?jsx(i.icon,{}):null,i.iconOnly?jsx("span",{className:"sr-only",children:i.label}):$?jsx("span",{className:"hidden @md/data-table:inline",children:i.label}):jsx("span",{children:i.label})]},i.key);return i.iconOnly?jsxs(E,{children:[jsx(T,{asChild:true,children:fe}),jsx(O,{children:i.label})]},i.key):fe})}):null,q$1?jsx("div",{"data-dtp-slot":"data-table-toolbar-compact-custom",className:"flex shrink-0 items-center gap-2 @lg/data-table:hidden",children:N??z}):null,jsx("div",{className:"grow","aria-hidden":"true"}),jsxs("div",{"data-dtp-slot":"data-table-toolbar-end-controls",className:"flex shrink-0 items-center gap-2",children:[K.length?jsx("div",{className:`hidden text-sm @md/data-table:block ${a.mutedText??"opacity-70"}`,children:Ra}):null,K.length?j.map(i=>{let $=i.icon,fe=typeof i.disabled=="function"?i.disabled(K):i.disabled;return jsxs(E,{children:[jsx(T,{asChild:true,children:jsxs(n,{type:"button",variant:i.variant??"secondary",size:"icon-sm",className:ee,disabled:fe,onClick:()=>{i.onClick({rows:K});},"aria-label":i.label,children:[$?jsx($,{}):null,jsx("span",{className:"sr-only",children:i.label})]})}),jsx(O,{children:i.label})]},i.key)}):null,V?jsxs(o,{children:[jsx(x,{asChild:true,children:jsxs(n,{type:"button",variant:"outline",size:"icon-sm","aria-label":M.tableOptions,className:`${ee} ${a.toolbarInputButton??""}`,title:M.tableOptions,children:[jsx(a$2,{}),jsx("span",{className:"sr-only",children:M.tableOptions})]})}),jsxs(l,{align:"end",className:"w-56",children:[jsx(f,{children:M.tableOptions}),jsx(u,{children:A&&oe?jsx(d,{checked:ae,onCheckedChange:i=>{A(i===true);},children:M.showHiddenRows(oe)}):null}),we?jsxs(Fragment,{children:[jsx(P,{}),jsx(f,{children:M.density}),jsx(u,{children:[["compact",M.compactDensity],["comfortable",M.comfortableDensity],["spacious",M.spaciousDensity]].map(([i,$])=>jsx(d,{checked:J===i,onCheckedChange:()=>{Pe(i);},children:$},i))})]}):null,W.some(i=>i.canHide)?jsxs(Fragment,{children:[jsx(P,{}),jsx(f,{children:M.columns}),jsx(u,{children:W.filter(i=>i.canHide).map(i=>jsx(d,{checked:i.visible,onCheckedChange:$=>{De?.(i.id,$===true);},children:i.label},i.id))})]}):null,be?jsxs(Fragment,{children:[jsx(P,{}),jsxs(f,{children:[M.pinLeft," / ",M.pinRight]}),jsx(u,{children:W.map(i=>jsxs(g,{onSelect:$=>{$.preventDefault();},children:[jsx("span",{className:"min-w-0 flex-1 truncate",children:i.label}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${M.pinLeft}: ${i.label}`,onClick:$=>{$.stopPropagation(),ge(i.id,"left");},children:"L"}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${M.pinRight}: ${i.label}`,onClick:$=>{$.stopPropagation(),ge(i.id,"right");},children:"R"}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${M.unpin}: ${i.label}`,onClick:$=>{$.stopPropagation(),ge(i.id,false);},children:"-"})]},`pin-${i.id}`))})]}):null]})]}):null,Ke&&I&&F?jsxs(t$1,{children:[jsxs(E,{children:[jsx(T,{asChild:true,children:jsxs(n,{type:"button",variant:U==="table"?"default":"outline","aria-pressed":U==="table",className:U==="table"?ee:`${ee} ${a.toolbarInputButton??""}`,size:"icon-sm",onClick:()=>{F("table");},children:[jsx(q,{}),jsx("span",{className:"sr-only",children:M.switchToTableView??de.switchToTableView})]})}),jsx(O,{children:M.tableView??de.tableView})]}),jsxs(E,{children:[jsx(T,{asChild:true,children:jsxs(n,{type:"button",variant:U==="card"?"default":"outline","aria-pressed":U==="card",className:U==="table"?`${ee} ${a.toolbarInputButton??""}`:ee,size:"icon-sm",onClick:()=>{F("card");},children:[jsx(p,{}),jsx("span",{className:"sr-only",children:M.switchToCardView??de.switchToCardView})]})}),jsx(O,{children:M.cardView??de.cardView})]})]}):null,$e?he.map(i=>{let $=!i.iconOnly&&!!i.icon,fe=jsxs(n,{type:"button",variant:i.variant??"outline",size:i.iconOnly?"icon-sm":"default",onClick:()=>{i.onClick({rows:G,openFileDialog:Je});},disabled:i.disabled,"aria-label":i.label,title:i.iconOnly?void 0:i.label,className:`size-7 shrink-0 ${i.iconOnly?"":`${$?"px-0 @md/data-table:px-2.5":""} @md/data-table:h-8 @md/data-table:w-fit`} ${i.iconOnly||$?ee:""} ${a.toolbarInputButton??""}`,children:[i.icon?jsx(i.icon,{"data-icon":i.iconOnly?void 0:"inline-start"}):null,i.iconOnly?jsx("span",{className:"sr-only",children:i.label}):$?jsx("span",{className:"hidden @md/data-table:inline",children:i.label}):jsx("span",{children:i.label})]},i.key);return i.iconOnly?jsxs(E,{children:[jsx(T,{asChild:true,children:fe}),jsx(O,{children:i.label})]},i.key):fe}):null]})]}),xe&&pe?jsx("div",{"data-dtp-slot":"data-table-toolbar-compact-search",className:"min-w-0 @md/data-table:hidden",children:jsxs(S,{children:[jsx(k,{ref:ue,value:r$1,onChange:i=>{D(i.target.value);},placeholder:C}),jsx(R,{align:"inline-start","aria-hidden":"true",children:jsx(r,{})}),r$1?jsx(R,{align:"inline-end",children:jsx("button",{type:"button",className:`inline-flex size-5 items-center justify-center rounded-md transition-colors focus-visible:outline-none ${a.toolbarIconButton??"opacity-70 hover:opacity-100"}`,onClick:()=>{D("");},"aria-label":M.clearSearch,title:M.clearSearch,children:jsx(t,{})})}):null]})}):null,Ve.length?jsxs("div",{"data-dtp-slot":"data-table-toolbar-filters",className:"flex min-w-0 flex-wrap items-center gap-2",children:[Ve.map(i=>jsx(m,{filter:i,labels:M,onColumnFilterChange:Oe},i.id)),Ve.some(i=>Vr(i.value))?jsx(n,{type:"button",variant:"ghost",size:"sm",onClick:ve,children:M.clearFilters}):null]}):null]}),ye&&z?jsx("div",{"data-dtp-slot":"data-table-toolbar-desktop-custom",className:"hidden flex-row items-center gap-3 @lg/data-table:flex",children:z}):null]})};function m({filter:c,labels:h,onColumnFilterChange:b}){if(c.type==="text")return jsxs(S,{className:"min-w-48 max-w-64",children:[jsx(k,{value:typeof c.value=="string"?c.value:"",onChange:D=>{b(c.id,D.target.value);},placeholder:c.placeholder??c.label,"aria-label":`${h.filters}: ${c.label}`}),jsx(R,{align:"inline-start","aria-hidden":"true",children:jsx(r,{})})]});let r$1=Array.isArray(c.value)?c.value.map(String):typeof c.value=="string"&&c.value?[c.value]:[],C=r$1.length===0?c.label:`${c.label}: ${r$1.length===1?c.options.find(D=>D.value===r$1[0])?.label??r$1[0]:r$1.length}`;return jsxs(o,{children:[jsx(x,{asChild:true,children:jsx(n,{type:"button",variant:"outline",size:"sm",children:C})}),jsxs(l,{align:"start",className:"w-56",children:[jsx(f,{children:c.label}),jsxs(u,{children:[c.type==="select"?jsx(g,{onClick:()=>{b(c.id,"");},children:h.allFilterOptions??de.allFilterOptions}):null,c.options.map(D=>jsx(d,{checked:r$1.includes(D.value),onCheckedChange:z=>{if(c.type==="select"){b(c.id,z===true?D.value:"");return}let N=new Set(r$1);z===true?N.add(D.value):N.delete(D.value),b(c.id,Array.from(N));},children:D.label},D.value))]})]})]})}}function Vr(e){return Array.isArray(e)?e.length>0:e!=null&&e!==""}var Fr=v.lazy(async()=>({default:(await import('./data-table-virtual-table-panel-7K3LOTBT.js')).DataTableVirtualTablePanel}));function Ro(e){let a=typeof e.virtualization=="object"?e.virtualization:void 0;return e.virtualization===true||a?.enabled===true?jsx(v.Suspense,{fallback:jsx(Q,{...e}),children:jsx(Fr,{...e})}):jsx(Q,{...e})}var Ir="data-table-pro:saved-views:";var vo=["sorting","columnVisibility","columnFilters","columnOrder","columnPinning","columnSizing","density","viewMode","showHiddenRows","globalFilter"],So=0;function ya(e){let a=Ht(e);if(!e||!a)return [];let n;try{n=a.getItem(Bt(e.key));}catch(l){return e.onError?.({error:l,operation:"read"}),[]}if(!n)return [];let t;try{t=(e.deserialize??JSON.parse)(n);}catch(l){return e.onError?.({error:l,operation:"deserialize"}),[]}if(!Fe(t)||!("version"in t)||!("views"in t))return [];let o=e.version??1,d=t.views;if(t.version!==o){if(!e.migrate)return [];try{d=e.migrate({version:t.version,views:t.views},o);}catch(l){return e.onError?.({error:l,operation:"migrate"}),[]}}return Array.isArray(d)?d.map(l=>Nr(l,e.slices)).filter(l=>!!l):[]}function Po(e,a,n){let t=a.trim();if(!e||!t)return;let o=new Date().toISOString(),d={id:Ur(),name:t,createdAt:o,updatedAt:o,state:zr(n,e.slices)},l=[...ya(e),d];return Ot(e,l,"create")?_t(d):void 0}function xo(e,a,n){let t=n.trim();if(!e||!t)return;let o,d=ya(e).map(l=>l.id!==a?l:(o={...l,name:t,updatedAt:new Date().toISOString()},o));if(o)return Ot(e,d,"rename")?_t(o):void 0}function ko(e,a){if(!e)return false;let n=ya(e),t=n.filter(o=>o.id!==a);return t.length!==n.length&&Ot(e,t,"delete")}function Eo(e){let a=Ht(e);if(!e||!a)return false;try{a.removeItem(Bt(e.key));}catch(n){return e.onError?.({error:n,operation:"remove"}),false}return e.onChange?.([],"clear"),true}function Ot(e,a,n){let t=Ht(e);if(!t)return false;let o;try{let l={version:e.version??1,views:a};o=(e.serialize??JSON.stringify)(l);}catch(l){return e.onError?.({error:l,operation:"serialize"}),false}try{t.setItem(Bt(e.key),o);}catch(l){return e.onError?.({error:l,operation:"write"}),false}let d=a.map(_t);return e.onChange?.(d,n),true}function zr(e,a){let n=new Set(a??vo),t={};for(let o of Object.keys(e))n.has(o)&&Object.assign(t,{[o]:Lr(o,e[o])});return t}function Nr(e,a){if(!(!Fe(e)||typeof e.id!="string"||!e.id||typeof e.name!="string"||!e.name.trim()||typeof e.createdAt!="string"||typeof e.updatedAt!="string"))return {id:e.id,name:e.name.trim(),createdAt:e.createdAt,updatedAt:e.updatedAt,state:Mo(e.state,a)}}function Mo(e,a){if(!Fe(e))return {};let n=new Set(a??vo),t={},o=Or(e.sorting);n.has("sorting")&&o&&(t.sorting=o);let d=_r(e.pagination);n.has("pagination")&&d&&(t.pagination=d);let l=Nt(e.rowSelection);n.has("rowSelection")&&l&&(t.rowSelection=l);let u=Nt(e.columnVisibility);n.has("columnVisibility")&&u&&(t.columnVisibility=u);let g=Hr(e.columnFilters);n.has("columnFilters")&&g&&(t.columnFilters=g);let f=e.expanded===true?true:Nt(e.expanded);n.has("expanded")&&f!==void 0&&(t.expanded=f);let P=Lt(e.columnOrder);n.has("columnOrder")&&P&&(t.columnOrder=P);let x=Br(e.columnPinning);n.has("columnPinning")&&x&&(t.columnPinning=x);let S=$r(e.columnSizing);return n.has("columnSizing")&&S&&(t.columnSizing=S),n.has("density")&&(e.density==="compact"||e.density==="comfortable"||e.density==="spacious")&&(t.density=e.density),n.has("viewMode")&&(e.viewMode==="table"||e.viewMode==="card")&&(t.viewMode=e.viewMode),n.has("showHiddenRows")&&typeof e.showHiddenRows=="boolean"&&(t.showHiddenRows=e.showHiddenRows),n.has("globalFilter")&&typeof e.globalFilter=="string"&&(t.globalFilter=e.globalFilter),t}function _t(e){return {...e,state:Mo(e.state,Object.keys(e.state))}}function Lr(e,a){return Array.isArray(a)?a.map(n=>Fe(n)?{...n}:n):Fe(a)?e==="columnPinning"?{left:Array.isArray(a.left)?[...a.left]:void 0,right:Array.isArray(a.right)?[...a.right]:void 0}:{...a}:a}function Or(e){if(Array.isArray(e))return e.filter(a=>Fe(a)&&typeof a.id=="string").map(a=>({id:a.id,desc:!!a.desc}))}function _r(e){if(!(!Fe(e)||!Number.isInteger(e.pageIndex)||e.pageIndex<0||!Number.isInteger(e.pageSize)||e.pageSize<1))return {pageIndex:e.pageIndex,pageSize:e.pageSize}}function Hr(e){if(Array.isArray(e))return e.filter(a=>Fe(a)&&typeof a.id=="string"&&Object.prototype.hasOwnProperty.call(a,"value")).map(a=>({id:a.id,value:a.value}))}function Br(e){if(Fe(e))return {left:Lt(e.left)??[],right:Lt(e.right)??[]}}function Nt(e){if(Fe(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="boolean"))}function $r(e){if(Fe(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="number"&&Number.isFinite(a[1])&&a[1]>=0))}function Lt(e){if(Array.isArray(e))return e.filter(a=>typeof a=="string")}function Ht(e){if(e){if(e.storage)return e.storage;if(!(typeof window>"u"))try{return window.localStorage}catch(a){e.onError?.({error:a,operation:"read"});return}}}function Ur(){return typeof globalThis.crypto?.randomUUID=="function"?globalThis.crypto.randomUUID():(So+=1,`view-${Date.now().toString(36)}-${So.toString(36)}`)}function Bt(e){return `${Ir}${e}`}function Fe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ao({columns:e,currentColumnFilters:a,currentColumnPinning:n,effectiveColumnVisibility:t,enableColumnFilters:o,handleColumnFiltersChange:d,handleColumnPinningChange:l,labels:u,table:g,toolbarActions:f,visibleData:P,csvExport:x}){let S=v.useMemo(()=>A(e).map(({column:c,index:h})=>{let b=G(c,h),r=c.header,C=H(c),D=typeof r=="string"?r:C?M(C):M(b),z=n.left?.includes(b)===true?"left":n.right?.includes(b)===true?"right":false;return {id:b,label:D,visible:t[b]!==false,canHide:c.enableHiding!==false,pinned:z}}),[e,n,t]),R=v.useMemo(()=>o===false?[]:A(e).flatMap(({column:c,index:h})=>{let b=c.meta?.filter;if(!b)return [];let r=G(c,h),C=c.header,D=H(c),z=b.label??(typeof C=="string"?C:D?M(D):M(r)),N=a.find(F=>F.id===r),U=typeof b.options=="function"?b.options({rows:P}):b.options??[];return [{id:r,label:z,type:b.type,value:N?.value,placeholder:b.placeholder,options:B(U)}]}),[e,a,o,P]),k$1=v.useCallback((c,h)=>{d(b=>{let r=b.filter(C=>C.id!==c);return C(h)&&r.push({id:c,value:h}),r});},[d]),E$1=v.useCallback(()=>{d([]);},[d]),O=v.useCallback((c,h)=>{l(b=>{let r=(b.left??[]).filter(D=>D!==c),C=(b.right??[]).filter(D=>D!==c);return h==="left"&&r.push(c),h==="right"&&C.push(c),{left:r,right:C}});},[l]),T=v.useCallback(()=>{if(x)return E({csvExport:x,table:g,labels:u})},[x,u,g]),m=v.useMemo(()=>x?[...f??[],{key:"__csv_export__",label:u.exportCsv,icon:k,placement:"trailing",onClick:T}]:f??[],[x,T,u.exportCsv,f]);return {columnVisibilityOptions:S,effectiveToolbarActions:m,handleClearColumnFilters:E$1,handleToolbarColumnFilterChange:k$1,handleToolbarColumnPinningChange:O,toolbarColumnFilters:R}}function ks(e){return jr(e)}function jr(e,a$1={}){let n=a$1.CardPanel??Jn,t=a$1.TablePanel??Ro,o=e.classNames??{},{rootClassName:d,Button:l,Checkbox:u,Input:g,ScrollArea:f,ScrollBar:P,Skeleton:x,Table:S,TableBody:R,TableCell:k,TableFooter:E$1="tfoot",TableHead:O,TableHeader:T,TableRow:m,Tooltip:c,TooltipContent:h,TooltipProvider:b$1=v.Fragment,TooltipTrigger:r}=e,C=Co(e),D=ho(e),{DataTableFooter:z}=Do(e),N$1=yo(e),U=fo(e,D),F$1={minSize:80,size:180,maxSize:720};return function({columns:w,data:j,getRowId:K,children:ae,title:oe,description:A$1,toolbarQueryValue:G$1,onToolbarQueryValueChange:W,toolbarQueryPlaceholder:De,toolbarQueryDebounceMs:be,manualFiltering:ge=false,enableToolbarQueryFiltering:Ve=true,globalFilterFn:Oe,columnFilters:ve,onColumnFiltersChange:J,enableColumnFilters:Pe,customToolbar:we,compactToolbar:M,rowsPerPageOptions:ie=[10,20,50,100],totalRowCount:Je,hasNextPage:ue,sorting:pe,onSortingChange:ia,manualSorting:ee=false,pageIndex:_e,pageSize:he,onPageIndexChange:He,onPageSizeChange:xe,pageCount:Be,manualPagination:$e=false,rowSelection:Ue,onRowSelectionChange:Ke,enableRowSelection:ye=false,expanded:je,onExpandedChange:ra,getRowCanExpand:qe,renderExpandedRow:y,columnOrder:V,onColumnOrderChange:me,enableColumnReordering:Re=false,columnPinning:X,onColumnPinningChange:q,enableColumnPinning:Ra=false,toolbarActions:i=[],selectionActions:$=[],rowActions:fe=[],csvExport:ua,density:Sa,onDensityChange:va,enableDensityToggle:st=false,columnPrefsKey:pa,persistence:la,savedViews:re,initialState:Y,state:le,onStateChange:ne,apiRef:La,labels:Xe,summaryRows:Pa=[],cardRenderer:ma,cardSizing:dt,cardGridClassName:Ye,cardClassName:Oa,viewMode:_a,onViewModeChange:ct,enableViewToggle:ut=false,emptyState:Ze,isLoading:Ha=false,loadingRowCount:pt,getRowLoadingState:_,hiddenRows:Ie,showHiddenRows:Ba,onShowHiddenRowsChange:mt,infiniteScroll:$a,editableRows:Ua,columnVisibility:$t,onColumnVisibilityChange:Io,columnSizing:Ut,onColumnSizingChange:zo,enableColumnResizing:Kt=false,columnResizeMode:No="onChange",layoutMode:jt="fill",stickyHeader:Lo=true,showFooter:Oo=true,showToolbar:_o=true,dir:Ho="ltr",flexGrow:ba=true,toolbarVisibility:Bo,className:$o,tableClassName:Uo,tableContainerClassName:Gt,getRowClassName:Qt,onRowClick:bt,onActionError:xa,dragAndDrop:ga,fileUpload:Ge,virtualization:gt}){let ka=v.useRef(null),Wt=v.useRef(null),Jt=v.useRef(null),Ko=v.useRef(null),ft=v.useRef(null),jo=v.useRef(null),Qe=v.useMemo(()=>Zn(Xe),[Xe]),Go=G$1??le?.globalFilter,Qo=pe??le?.sorting,Ka=_e??le?.pagination?.pageIndex,ja=he??le?.pagination?.pageSize,Wo=Ue??le?.rowSelection,Jo=$t??le?.columnVisibility,qo=ve??le?.columnFilters,Xo=je??le?.expanded,Yo=V??le?.columnOrder,Zo=X??le?.columnPinning,ei=Ut??le?.columnSizing,ai=Sa??le?.density,ti=_a??le?.viewMode,ni=Ba??le?.showHiddenRows;Qr(le,{columnFilters:ve!==void 0,columnOrder:V!==void 0,columnPinning:X!==void 0,columnSizing:Ut!==void 0,columnVisibility:$t!==void 0,density:Sa!==void 0,expanded:je!==void 0,globalFilter:G$1!==void 0,pagination:_e!==void 0||he!==void 0,rowSelection:Ue!==void 0,showHiddenRows:Ba!==void 0,sorting:pe!==void 0,viewMode:_a!==void 0});let oi=Ae("globalFilter",W,ne),ii=Ae("sorting",ia,ne),ri=Ae("rowSelection",Ke,ne),li=Ae("columnVisibility",Io,ne),si=Ae("columnFilters",J,ne),di=Ae("expanded",ra,ne),ci=Ae("columnOrder",me,ne),ui=Ae("columnPinning",q,ne),pi=Ae("columnSizing",zo,ne),mi=Ae("density",va,ne),bi=Ae("viewMode",ct,ne),gi=Ae("showHiddenRows",mt,ne),qt=v.useCallback(s=>{He?.(s),ne?.(H=>({...H,pagination:{pageIndex:s,pageSize:ja??H.pagination.pageSize}}));},[He,ne,ja]),fi=v.useCallback(s=>{xe?.(s),ne?.(H=>({...H,pagination:{pageIndex:Ka??H.pagination.pageIndex,pageSize:s}}));},[xe,ne,Ka]),ze=v.useCallback((s,H)=>{Gr(H,s,xa);},[xa]),Xt=v.useMemo(()=>fe.map(s=>({...s,onClick:H=>{ze({actionKey:s.key,row:H,source:"rowAction"},()=>s.onClick(H));}})),[fe,ze]),Yt=v.useMemo(()=>bt?s=>{ze({row:s.row,source:"rowClick"},()=>bt(s));}:void 0,[bt,ze]),Ti=v.useCallback((s,H)=>{xa?.({error:s,row:H,source:"edit"});},[xa]),{currentColumnFilters:Ga,currentColumnOrder:Tt,currentColumnPinning:Qa,currentColumnSizing:Wa,currentColumnVisibility:Zt,currentDensity:Ea,currentExpanded:Ct,currentPagination:Ja,currentRowSelection:qa,currentShowHiddenRows:Dt,currentSorting:Xa,currentViewMode:fa,effectiveColumnVisibility:en,globalFilterValue:Ci,handleDensityChange:wt,handleShowHiddenRowsChange:ht,handleViewModeChange:yt,localSearchValue:Ta,resolvedLoadingRowCount:Di,resolvedToolbarQueryPlaceholder:wi,selectedRows:hi,setCurrentColumnFilters:an,setCurrentColumnOrder:yi,setCurrentColumnPinning:tn,setCurrentColumnVisibility:Ri,setCurrentExpanded:Si,setCurrentRowSelection:nn,setCurrentSorting:vi,setLocalColumnSizing:Pi,setLocalPagination:xi,setLocalSearchValue:Rt,shouldRenderInitialLoading:St,tableData:ki,tableGetRowId:Ei,visibleData:Mi}=po({columnFilters:qo,columnOrder:Yo,columnPinning:Zo,columnSizing:ei,columnPrefsKey:pa,persistence:la,columnVisibility:Jo,columns:w,containerRef:ka,data:j,density:ai,enableRowSelection:ye,enableToolbarQueryFiltering:Ve,expanded:Xo,getRowId:K,hiddenRows:Ie,isLoading:Ha,loadingRowCount:pt,manualFiltering:ge,initialState:Y,onColumnFiltersChange:si,onColumnOrderChange:ci,onColumnPinningChange:ui,onColumnSizingChange:pi,onColumnVisibilityChange:li,onDensityChange:mi,onExpandedChange:di,onPageIndexChange:qt,onRowSelectionChange:ri,onShowHiddenRowsChange:gi,onSortingChange:ii,onToolbarQueryValueChange:oi,onViewModeChange:bi,pageIndex:Ka,pageSize:ja,resolvedLabels:Qe,rowSelection:Wo,rowsPerPageOptions:ie,selectionActions:$,showHiddenRows:ni,sorting:Qo,toolbarQueryDebounceMs:be,toolbarQueryPlaceholder:De,toolbarQueryValue:Go,viewMode:ti}),{cancelEditing:Ai,draftValues:Vi,editingRowId:vt,isSavingEdit:Fi,saveEdit:Ii,setDraftValues:zi,setEditingRowId:Ni,startEditingRow:Li}=N({columns:w,editableRows:Ua,onError:Ti}),{viewportElement:on,viewportHeight:rn}=b(Jt,fa),Oi=v.useCallback(()=>{Ge?.disabled||Wt.current?.click();},[Ge?.disabled]),_i=v.useCallback(s=>{ze({source:"fileUpload"},()=>Ge?.onFilesSelected(s));},[Ge,ze]),Hi=eo({Button:l,Checkbox:u,DataTableRowActions:D,Tooltip:c,TooltipContent:h,TooltipTrigger:r,cancelEditing:Ai,columns:w,editableRows:Ua,editingRowId:vt,enableRowSelection:ye,getRowCanExpand:qe,isSavingEdit:Fi,labels:Qe,lastSelectedRowIdRef:jo,renderExpandedRow:y,rowActions:Xt,saveEdit:Ii,startEditingRow:Li,tableRef:ft}),{effectivePageCount:Bi,footerTotalRowCount:$i,handleFooterPageIndexChange:Ui,handleFooterPageSizeChange:Ki,isPageCountKnown:ji,renderedRows:ln,reorderColumn:Gi,rowsToRender:Qi,sentinelRef:sn,table:Z,virtualPaddingBottom:Wi,virtualPaddingTop:Ji,visibleLeafColumns:Pt}=oo({autoResetPageIndex:false,columnResizeMode:No,currentColumnFilters:Ga,currentColumnOrder:Tt,currentColumnPinning:Qa,currentColumnSizing:Wa,currentExpanded:Ct,currentPagination:Ja,currentRowSelection:qa,currentSorting:Xa,defaultColumn:F$1,effectiveColumnVisibility:en,enableColumnResizing:Kt,enableRowSelection:ye,getRowCanExpand:qe,globalFilterFn:Oe,globalFilterValue:Ci,hasNextPage:ue,handleColumnFiltersChange:an,handleColumnOrderChange:yi,handleColumnPinningChange:tn,handleColumnVisibilityChange:Ri,handleExpandedChange:Si,infiniteScroll:$a,manualFiltering:ge,manualPagination:$e,manualSorting:ee,onActionError:xa,onPageIndexChange:qt,onPageSizeChange:fi,pageCount:Be,pageIndex:Ka,pageSize:ja,renderExpandedRow:y,setCurrentRowSelection:nn,setCurrentSorting:vi,setLocalColumnSizing:Pi,setLocalPagination:xi,shouldRenderInitialLoading:St,tableColumns:Hi,tableData:ki,tableGetRowId:Ei,tableRef:ft,totalRowCount:Je}),dn=bo({columns:w,columnSizing:Wa,editableRows:!!Ua,enableRowSelection:ye,hasRowActions:fe.length>0,hasRowExpansion:!!y,layoutMode:jt,uiClassNames:o,visibleLeafColumns:Pt}),{explicitlySizedColumnIds:Ya,fillMinWidth:qi,getColumnLayout:Xi}=dn,Yi=v.useMemo(()=>new Set(A(w).flatMap(({column:s,index:H})=>Object.prototype.hasOwnProperty.call(s,"cell")&&typeof s.cell=="function"?[G(s,H)]:[])),[w]),Zi=Pt.length,er=v.useMemo(()=>({Checkbox:u,Input:g,Skeleton:x,TableCell:k,TableRow:m}),[]),ar=v.useMemo(()=>A(w).some(({column:s})=>s.meta?.cardTitle),[w]),tr=v.useCallback((s,H)=>{Ya.has(s)||Object.prototype.hasOwnProperty.call(Z.getState().columnSizing,s)||flushSync(()=>{Z.setColumnSizing(Da=>({...Da,[s]:H}));});},[Ya,Z]),nr=v.useCallback(s=>{if(Ya.has(s)){Z.getColumn(s)?.resetSize();return}Z.setColumnSizing(H=>{if(!Object.prototype.hasOwnProperty.call(H,s))return H;let Da={...H};return delete Da[s],Da});},[Ya,Z]),cn=Z.getFilteredRowModel().rows.map(s=>s.original),un=typeof Ze=="function"?Ze({rows:cn,toolbarQueryValue:Ta}):Ze,{columnVisibilityOptions:or,effectiveToolbarActions:pn,handleClearColumnFilters:ir,handleToolbarColumnFilterChange:rr,handleToolbarColumnPinningChange:lr,toolbarColumnFilters:sr}=Ao({columns:w,currentColumnFilters:Ga,currentColumnPinning:Qa,csvExport:ua,effectiveColumnVisibility:en,enableColumnFilters:Pe,handleColumnFiltersChange:an,handleColumnPinningChange:tn,labels:Qe,table:Z,toolbarActions:i,visibleData:Mi}),dr=v.useMemo(()=>pn.map(s=>({...s,onClick:H=>{ze({actionKey:s.key,source:"toolbarAction"},()=>s.onClick(H));}})),[pn,ze]),cr=v.useMemo(()=>$.map(s=>({...s,onClick:H=>{ze({actionKey:s.key,source:"selectionAction"},()=>s.onClick(H));}})),[ze,$]),mn=v.useMemo(()=>({sorting:Xa,pagination:Ja,rowSelection:qa,columnVisibility:Zt,columnFilters:Ga,expanded:Ct,columnOrder:Tt,columnPinning:Qa,columnSizing:Wa,density:Ea,viewMode:fa,showHiddenRows:Dt,globalFilter:Ta}),[Ga,Tt,Qa,Wa,Zt,Ea,Ct,Ja,qa,Dt,Xa,fa,Ta]),Ma=v.useCallback(()=>Jr(mn),[mn]),ea=v.useCallback(s=>{s.sorting!==void 0&&Z.setSorting(s.sorting),s.pagination!==void 0&&Z.setPagination(s.pagination),s.rowSelection!==void 0&&Z.setRowSelection(s.rowSelection),s.columnVisibility!==void 0&&Z.setColumnVisibility(s.columnVisibility),s.columnFilters!==void 0&&Z.setColumnFilters(s.columnFilters),s.expanded!==void 0&&Z.setExpanded(s.expanded),s.columnOrder!==void 0&&Z.setColumnOrder(s.columnOrder),s.columnPinning!==void 0&&Z.setColumnPinning(s.columnPinning),s.columnSizing!==void 0&&Z.setColumnSizing(s.columnSizing),s.density!==void 0&&wt(s.density),s.viewMode!==void 0&&yt(s.viewMode),s.showHiddenRows!==void 0&&ht(s.showHiddenRows),s.globalFilter!==void 0&&Rt(s.globalFilter);},[wt,ht,yt,Rt,Z]),Ca=v.useCallback(()=>so(la??pa),[pa,la]),bn=v.useCallback(s=>{s?.clearPersistence&&Ca(),ea({columnVisibility:Y?.columnVisibility??{},columnOrder:Y?.columnOrder??[],columnPinning:Y?.columnPinning??F(w),columnSizing:Y?.columnSizing??{}});},[Ca,w,Y,ea]),gn=v.useCallback(s=>{s?.clearPersistence&&Ca(),ea({sorting:Y?.sorting??[],pagination:Y?.pagination??{pageIndex:0,pageSize:ie[0]??20},rowSelection:Y?.rowSelection??{},columnVisibility:Y?.columnVisibility??{},columnFilters:Y?.columnFilters??[],expanded:Y?.expanded??{},columnOrder:Y?.columnOrder??[],columnPinning:Y?.columnPinning??F(w),columnSizing:Y?.columnSizing??{},density:Y?.density??"comfortable",viewMode:Y?.viewMode??"table",showHiddenRows:Y?.showHiddenRows??false,globalFilter:Y?.globalFilter??""});},[Ca,w,Y,ea,ie]),fn=v.useCallback(()=>ya(re),[re]),Tn=v.useCallback(s=>Po(re,s,Ma()),[Ma,re]),Cn=v.useCallback(s=>{let H=ya(re).find(Da=>Da.id===s);return H?(ea(H.state),re?.onApply?.(H),true):false},[ea,re]),Dn=v.useCallback((s,H)=>xo(re,s,H),[re]),wn=v.useCallback(s=>ko(re,s),[re]),hn=v.useCallback(()=>Eo(re),[re]),yn=v.useCallback(s=>E({csvExport:s??(ua||true),labels:Qe,table:Z}),[ua,Qe,Z]);return v.useImperativeHandle(La,()=>({getTable:()=>ft.current,getState:Ma,snapshot:Ma,restore:ea,resetColumnLayout:bn,resetState:gn,clearPersistedState:Ca,getSavedViews:fn,createSavedView:Tn,applySavedView:Cn,renameSavedView:Dn,deleteSavedView:wn,clearSavedViews:hn,focus:()=>{ka.current?.focus();},scrollToRow:s=>Vo(ka.current,"row",s),scrollToColumn:s=>Vo(ka.current,"column",s),exportCsv:yn}),[Cn,Ca,hn,Tn,wn,yn,fn,Ma,Dn,bn,gn,ea]),jsx(b$1,{children:jsxs("div",{ref:ka,"data-dtp-slot":"data-table-root","data-density":Ea,dir:Ho,tabIndex:-1,className:a("@container/data-table data-table-container-query flex flex-col",ba?"h-full min-h-0 flex-1":"grow",d),onDragEnter:ga?.onDragEnter,onDragOver:ga?.onDragOver,onDragLeave:ga?.onDragLeave,onDrop:ga?.onDrop,children:[Ge?jsx("input",{ref:Wt,className:"hidden",type:"file",accept:Ge.accept,multiple:Ge.multiple??true,disabled:Ge.disabled,onChange:s=>{let H=s.currentTarget.files;H?.length&&_i(H),s.currentTarget.value="";}}):null,jsx("div",{"data-dtp-slot":"data-table-layout",className:a("flex w-full flex-col",ba?"min-h-0 flex-1":"grow"),children:jsxs("div",{"data-dtp-slot":"data-table-main",className:a("flex w-full flex-col gap-4",ba?"min-h-0 flex-1":"grow",$o),children:[_o?jsx(Yn,{allRows:cn,columnFilters:sr,columnVisibilityOptions:or,compactToolbar:M,customToolbar:we,DataTableToolbar:N$1,density:Ea,description:A$1,effectiveToolbarActions:dr,enableColumnPinning:Ra,enableDensityToggle:st,enableViewToggle:ut&&!!ma,hiddenRowsLabel:Ie?.label,labels:Qe,onClearColumnFilters:ir,onColumnFilterChange:rr,onColumnPinningChange:lr,onDensityChange:wt,onShowHiddenRowsChange:ht,onToolbarQueryValueChange:Rt,onViewModeChange:yt,openFileDialog:Ge?Oi:void 0,selectedRows:hi,selectionActions:cr,showHiddenRows:Dt,table:Z,title:oe,toolbarQueryPlaceholder:wi,toolbarQueryValue:Ta,toolbarVisibility:Bo,viewMode:fa}):null,jsx("div",{"data-dtp-slot":"data-table-content",className:a(ba?"flex min-h-0 flex-1 flex-col":""),children:fa==="card"&&ma?jsx(n,{cardClassName:Oa,cardGridClassName:Ye,cardSizing:dt,cardRenderer:ma,currentRowSelection:qa,DataTableCardView:U,DataTableEmptyState:C,dragAndDrop:ga,editableRows:Ua,editingRowId:vt,emptyNode:un,enableRowSelection:ye,flexGrow:ba,getRowClassName:Qt,hasCardTitle:ar,infiniteScroll:$a,localSearchValue:Ta,onRowClick:Yt,renderedRows:ln,renderExpandedRow:y,resolvedLabels:Qe,resolvedLoadingRowCount:Di,rowActions:Xt,ScrollArea:f,sentinelRef:sn,setCurrentRowSelection:nn,setEditingRowId:Ni,shouldRenderInitialLoading:St,tableContainerClassName:Gt,uiClassNames:o,virtualization:gt}):jsx(t,{bodyRowComponents:er,columnLayouts:dn.columnLayouts,currentDensity:Ea,currentSorting:Xa,DataTableEmptyState:C,dragAndDrop:ga,draggedColumnIdRef:Ko,draftValues:Vi,editingRowId:vt,emptyNode:un,enableColumnReordering:Re,enableColumnResizing:Kt,explicitCustomCellColumnIds:Yi,fillMinWidth:qi,flexGrow:ba,getColumnLayout:Xi,getRowClassName:Qt,getRowLoadingState:_,infiniteScroll:$a,layoutMode:jt,localSearchValue:Ta,onRowClick:Yt,primeColumnForResize:tr,renderedRows:ln,renderExpandedRow:y,reorderColumn:Gi,resetColumnSize:nr,resolvedLabels:Qe,rowsToRender:Qi,ScrollArea:f,ScrollBar:P,sentinelRef:sn,setDraftValues:zi,shouldRenderInitialLoading:St,stickyHeader:Lo,summaryRows:Pa,table:Z,tableClassName:Uo,tableContainerClassName:Gt,Table:S,TableBody:R,TableCell:k,TableFooter:E$1,TableHead:O,TableHeader:T,TableRow:m,tableScrollContainerRef:Jt,tableScrollElement:on,uiClassNames:o,viewportHeight:rn,virtualization:gt,virtualPaddingBottom:Wi,virtualPaddingTop:Ji,visibleLeafColumnCount:Zi,visibleLeafColumns:Pt})}),jsx(qn,{currentPagination:Ja,DataTableFooter:z,effectivePageCount:Bi,footerTotalRowCount:$i,handleFooterPageIndexChange:Ui,handleFooterPageSizeChange:Ki,labels:Qe,pageCountKnown:ji,rowsPerPageOptions:ie,showFooter:Oo&&!$a?.enabled,children:ae})]})})]})})}}function Gr(e,a,n){let t;try{t=e();}catch(o){n?.({...a,error:o});return}Promise.resolve(t).catch(o=>{n?.({...a,error:o});});}function Ae(e,a,n){let t=v.useCallback(o=>{a?.(o),n?.(d=>({...d,[e]:o}));},[e,a,n]);return a||n?t:void 0}function Qr(e,a){let n=v.useRef(new Set);v.useEffect(()=>{if(!(!e||!Wr()))for(let t of Object.keys(a))e[t]===void 0||!a[t]||n.current.has(t)||(n.current.add(t),console.warn(`[data-table-pro] Both state.${t} and its legacy controlled prop were provided. The legacy prop takes precedence during the 4.x compatibility window.`));},[a,e]);}function Wr(){return globalThis.process?.env?.NODE_ENV!=="production"}function Jr(e){return {sorting:e.sorting.map(a=>({...a})),pagination:{...e.pagination},rowSelection:{...e.rowSelection},columnVisibility:{...e.columnVisibility},columnFilters:e.columnFilters.map(a=>({...a})),expanded:typeof e.expanded=="boolean"?e.expanded:{...e.expanded},columnOrder:[...e.columnOrder],columnPinning:{left:e.columnPinning.left?[...e.columnPinning.left]:void 0,right:e.columnPinning.right?[...e.columnPinning.right]:void 0},columnSizing:{...e.columnSizing},density:e.density,viewMode:e.viewMode,showHiddenRows:e.showHiddenRows,globalFilter:e.globalFilter}}function Vo(e,a,n){if(!e)return false;let t=a==="row"?"data-row-id":"data-column-id",o=Array.from(e.querySelectorAll(`[${t}]`)).find(d=>d.getAttribute(t)===n);return o?(o.scrollIntoView?.({block:"nearest",inline:"nearest"}),true):false}export{Jn as a,qn as b,Yn as c,eo as d,oo as e,Me as f,po as g,bo as h,ks as i,jr as j};//# sourceMappingURL=chunk-54H6DRO6.js.map -//# sourceMappingURL=chunk-54H6DRO6.js.map \ No newline at end of file diff --git a/dist/chunk-54H6DRO6.js.map b/dist/chunk-54H6DRO6.js.map deleted file mode 100644 index da28b2b..0000000 --- a/dist/chunk-54H6DRO6.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/core/data-table/data-table-base-card-panel.tsx","../src/core/data-table/data-table-card-panel.tsx","../src/core/data-table/data-table-footer-section.tsx","../src/core/data-table/data-table-toolbar-section.tsx","../src/core/data-table/data-table-labels.ts","../src/core/data-table/use-data-table-columns.tsx","../src/core/data-table/use-data-table-infinite-scroll.ts","../src/core/data-table/use-data-table-pagination-clamp.ts","../src/core/data-table/use-data-table-instance.ts","../src/core/data-table/use-controllable-state.ts","../src/core/data-table/use-data-table-column-prefs.ts","../src/core/data-table/use-data-table-state.ts","../src/core/data-table/use-column-layout.ts","../src/core/data-table/create-data-table-card-view.tsx","../src/core/data-table/create-data-table-empty-state.tsx","../src/core/data-table/create-data-table-pagination.tsx","../src/core/data-table/create-data-table-row-actions.tsx","../src/core/data-table/create-data-table-toolbar.tsx","../src/core/data-table/data-table-table-panel-router.tsx","../src/core/data-table/data-table-saved-views.ts","../src/core/data-table/use-data-table-toolbar-features.ts","../src/core/data-table/create-data-table.tsx"],"names":["DataTableBaseCardPanel","cardClassName","cardGridClassName","cardSizing","cardRenderer","currentRowSelection","DataTableCardView","DataTableEmptyState","dragAndDrop","editableRows","editingRowId","emptyNode","enableRowSelection","flexGrow","getRowClassName","hasCardTitle","infiniteScroll","localSearchValue","onRowClick","renderedRows","renderExpandedRow","resolvedLabels","resolvedLoadingRowCount","rowActions","ScrollArea","sentinelRef","setCurrentRowSelection","setEditingRowId","shouldRenderInitialLoading","tableContainerClassName","uiClassNames","shouldRenderCards","cardScrollContainerRef","Wn","renderCardView","rows","options","jsx","cn","jsxs","LazyDataTableVirtualCardPanel","nt","DataTableCardPanel","props","DataTableFooterSection","children","currentPagination","DataTableFooter","effectivePageCount","footerTotalRowCount","handleFooterPageIndexChange","handleFooterPageSizeChange","labels","pageCountKnown","rowsPerPageOptions","showFooter","DataTableToolbarSection","allRows","columnFilters","columnVisibilityOptions","compactToolbar","customToolbar","DataTableToolbar","description","effectiveToolbarActions","enableColumnPinning","enableDensityToggle","enableViewToggle","hiddenRowsLabel","onClearColumnFilters","onColumnFilterChange","onColumnPinningChange","onDensityChange","onShowHiddenRowsChange","onToolbarQueryValueChange","onViewModeChange","openFileDialog","selectedRows","selectionActions","showHiddenRows","table","title","toolbarQueryPlaceholder","toolbarQueryValue","toolbarVisibility","density","viewMode","columnId","visible","DATA_TABLE_DEFAULT_LABELS","count","label","pageIndex","pageCount","rowId","resolveDataTableLabels","useDataTableColumns","Button","Checkbox","DataTableRowActions","Tooltip","TooltipContent","TooltipTrigger","cancelEditing","columns","getRowCanExpand","isSavingEdit","lastSelectedRowIdRef","saveEdit","startEditingRow","tableRef","selectRowRange","ot","targetRowId","selected","tableInstance","row","isDataTableLoadingRow","startIndex","endIndex","from","to","current","next","defs","UTILITY_COLUMN_SIZE","isExpanded","IconChevronDown","checked","event","column","decorateFilterableColumn","useDataTableInfiniteScroll","enabled","hasMore","isLoadingMore","onLoadMore","onError","aa","isRequestInFlightRef","onLoadMoreEvent","onErrorEvent","error","target","observer","entries","result","useDataTablePaginationClamp","maxPageIndex","onPageIndexChange","setLocalPageIndex","nextPageIndex","useDataTableInstance","autoResetPageIndex","columnResizeMode","currentColumnFilters","currentColumnOrder","currentColumnPinning","currentColumnSizing","currentExpanded","currentSorting","defaultColumn","effectiveColumnVisibility","enableColumnResizing","globalFilterFn","globalFilterValue","hasNextPage","handleColumnFiltersChange","handleColumnOrderChange","handleColumnPinningChange","handleColumnVisibilityChange","handleExpandedChange","manualFiltering","manualPagination","manualSorting","onActionError","onPageSizeChange","pageSize","setCurrentSorting","setLocalColumnSizing","setLocalPagination","tableColumns","tableData","tableGetRowId","totalRowCount","generatedColumnIds","Ee","getDataTableLeafColumns","index","getColumnId","effectiveColumnOrder","columnIds","dataColumnIds","isUtilityColumnId","dataColumnIdSet","orderedDataColumnIds","unorderedDataColumnIds","effectiveColumnPinning","columnIdSet","dataLeft","dataRight","tableState","handlePaginationChange","updater","nextValue","handleColumnSizingChange","useReactTable","getCoreRowModel","getFilteredRowModel","getSortedRowModel","getExpandedRowModel","getPaginationRowModel","dataTableGlobalFilterFn","visibleLeafColumns","reorderColumn","sourceColumnId","targetColumnId","defaultOrder","nextOrder","moveColumnInOrder","rowsToRender","rowIndex","usesManualRows","derivedTotalRowCount","effectiveTotalRowCount","isPageCountKnown","nextPageSize","useControllableState","defaultValue","onChange","value","uncontrolledValue","setUncontrolledValue","ta","currentValue","currentValueRef","setValue","STORAGE_PREFIX","DEFAULT_VERSION","ALL_SLICES","readDataTableColumnPrefs","input","config","resolvePersistenceConfig","storage","resolveStorage","storageKey","getStorageKey","parsed","targetVersion","candidate","isPersistencePayload","selectPersistenceSlices","validateDataTableColumnPrefs","clearDataTableColumnPrefs","usePersistDataTableColumnPrefs","key","persistence","prefs","version","debounceMs","selectedState","serialized","ca","payload","operation","write","timeout","isRecord","slices","slice","visibility","validateBooleanRecord","sizing","validateSizingRecord","order","validateStringArray","left","right","isDataTableDensity","entry","item","useDataTableState","columnOrder","columnPinning","columnSizing","columnPrefsKey","columnVisibility","data","enableToolbarQueryFiltering","expanded","getRowId","hiddenRows","initialState","isLoading","loadingRowCount","onColumnFiltersChange","onColumnOrderChange","onColumnSizingChange","onColumnVisibilityChange","onExpandedChange","onRowSelectionChange","onSortingChange","rowSelection","sorting","toolbarQueryDebounceMs","containerRef","persistenceConfig","Q","persistedColumnPrefs","localPagination","currentColumnVisibility","setCurrentColumnVisibility","setCurrentColumnFilters","setCurrentExpanded","setCurrentColumnOrder","setCurrentColumnPinning","getInitialColumnPinning","setCurrentColumnSizing","currentViewMode","setCurrentViewMode","currentShowHiddenRows","setCurrentShowHiddenRows","currentDensity","setCurrentDensity","resolvedToolbarQueryValue","resolvedToolbarQueryPlaceholder","resolvedToolbarQueryDebounceMs","setLocalSearchValue","containerWidth","useDataTableContainerWidth","hasOnSearchValueChange","lastReportedSearchValueRef","onToolbarQueryValueChangeEvent","handleViewModeChange","nextViewMode","handleShowHiddenRowsChange","nextShowHiddenRows","handleDensityChange","nextDensity","resetPageIndexForFilterChange","filterResetSignature","lastFilterResetSignatureRef","responsiveColumnVisibility","isHiddenAtContainerWidth","visibleData","isRowVisible","loadingRows","createDataTableLoadingRows","getDataTableLoadingRowId","shouldResolveSelectedRows","rowById","EMPTY_COLUMN_LAYOUT","useColumnLayout","hasRowActions","hasRowExpansion","layoutMode","explicitlySizedColumnIds","Ne","ids","minimumColumnWidths","widths","configuredMinWidth","getConfiguredColumnMinWidth","pinnedColumns","leftOffset","getFixedSide","getColumnLayoutSize","rightOffset","fillColumnId","dataColumns","fixedWidthColumnIds","columnLayouts","layouts","isSelectionColumn","isExpansionColumn","isActionsColumn","isUtilityColumn","isSpacerColumn","isFlexibleFillColumn","columnMinWidth","shouldFixWidth","baseStyle","fixedSide","pinnedStyle","cellStyle","getPinnedColumnClassName","fillMinWidth","total","layout","getColumnLayout","createDataTableCardView","ui","Card","CardContent","CardHeader","Skeleton","onEditingRowIdChange","getRowDraggable","onRowDragStart","onRowDragEnd","resolvedCardSizing","resolvedCardGridClassName","getCardGridClassName","cardGridClasses","cardItemClasses","stateClassName","getCardItemClassName","_","originalRow","isSelected","isEditing","hasCardActions","showCardGradient","showCardOverlayControls","handleCardActivate","getCardRendererClassName","updateRowSelection","nextSelection","createDataTableEmptyState","Empty","EmptyContent","EmptyDescription","EmptyHeader","EmptyMedia","EmptyTitle","IconInbox","createDataTablePagination","Pagination","PaginationContent","PaginationEllipsis","PaginationFirst","PaginationItem","PaginationLast","PaginationLink","PaginationNext","PaginationPrevious","Select","SelectContent","SelectGroup","SelectItem","SelectTrigger","SelectValue","DataTablePagination","pages","getVisiblePages","canGoPrevious","canGoNext","lastPageIndex","option","IconDatabase","currentPageIndex","currentPage","page","orderedPages","items","previous","createDataTableRowActions","DropdownMenu","DropdownMenuContent","DropdownMenuGroup","DropdownMenuItem","DropdownMenuSeparator","DropdownMenuTrigger","onStartEditing","onCancelEditing","actions","action","canUseRowAction","stopRowClickPropagation","wo","IconX","allowEdit","canEditRow","IconDots","IconEdit","Icon","resolveRowActionLabel","createDataTableToolbar","ButtonGroup","DropdownMenuCheckboxItem","DropdownMenuLabel","InputGroup","InputGroupAddon","InputGroupInput","toolbarActions","compactSearchInputRef","ha","isCompactSearchVisible","setIsCompactSearchVisible","compactToolbarIconButtonClassName","primaryActions","trailingActions","showTitle","showSearch","showActions","showTrailingActions","showOptions","showViewToggle","showCustomToolbar","hasVisibleTitle","hasVisibleSearch","hasVisiblePrimaryActions","hasVisibleSelectionActions","hasVisibleOptions","hasVisibleViewToggle","hasVisibleTrailingActions","hasVisibleCustomToolbar","hasVisibleCompactToolbar","selectedRowCountLabel","Fragment","IconSearch","collapsesToIcon","button","disabled","IconAdjustmentsHorizontal","IconList","IconLayoutGrid","filter","ToolbarColumnFilterControl","hasColumnFilterValue","selectedValues","selectedLabel","nextValues","LazyDataTableVirtualTablePanel","lt","DataTableTablePanelRouter","DataTableTablePanel","DEFAULT_SLICES","fallbackId","readDataTableSavedViews","view","validateSavedView","createDataTableSavedView","name","state","normalizedName","now","createSavedViewId","selectSavedViewSlices","views","writeViews","cloneSavedView","renameDataTableSavedView","id","renamed","deleteDataTableSavedView","clearDataTableSavedViews","snapshots","snapshot","cloneStateSlice","validateState","validateSorting","pagination","validatePagination","filters","validateFilters","pinning","validatePinning","useDataTableToolbarFeatures","enableColumnFilters","csvExport","We","header","accessorKey","getAccessorKey","startCase","pinned","toolbarColumnFilters","rawOptions","normalizeColumnFilterOptions","handleToolbarColumnFilterChange","hasFilterValue","handleClearColumnFilters","handleToolbarColumnPinningChange","side","handleCsvExport","exportDataTableCsv","IconDownload","createDataTable","createDataTableWithPanels","rootClassName","Input","ScrollBar","Table","TableBody","TableCell","TableFooter","TableHead","TableHeader","TableRow","TooltipProvider","enableColumnReordering","savedViews","unifiedState","onStateChange","apiRef","summaryRows","emptyState","getRowLoadingState","stickyHeader","showToolbar","dir","className","tableClassName","fileUpload","virtualization","fileInputRef","tableScrollContainerRef","draggedColumnIdRef","resolvedSorting","resolvedPageIndex","resolvedPageSize","resolvedRowSelection","resolvedColumnVisibility","resolvedColumnFilters","resolvedExpanded","resolvedColumnOrder","resolvedColumnPinning","resolvedColumnSizing","resolvedDensity","resolvedViewMode","resolvedShowHiddenRows","useDataTableStateConflictWarnings","handleToolbarQueryValueChange","useDataTableStateSliceChange","handleSortingPropChange","handleRowSelectionPropChange","handleColumnVisibilityPropChange","handleColumnFiltersPropChange","handleExpandedPropChange","handleColumnOrderPropChange","handleColumnPinningPropChange","handleColumnSizingPropChange","handleDensityPropChange","handleViewModePropChange","handleShowHiddenRowsPropChange","handlePageIndexPropChange","handlePageSizePropChange","runAction","context","runDataTableAction","guardedRowActions","guardedOnRowClick","handleEditError","draftValues","setDraftValues","useRowEditing","tableScrollElement","viewportHeight","useDataTableScrollViewport","handleSelectedFiles","files","virtualPaddingBottom","virtualPaddingTop","columnLayout","explicitCustomCellColumnIds","visibleLeafColumnCount","bodyRowComponents","primeColumnForResize","currentSize","flushSync","resetColumnSize","filteredData","guardedToolbarActions","guardedSelectionActions","currentDataTableState","getCurrentState","cloneDataTableState","restoreState","nextState","clearPersistedState","resetColumnLayout","resetState","getSavedViews","createSavedView","applySavedView","renameSavedView","deleteSavedView","clearSavedViews","exportCsvFromApi","scrollDataTableElementIntoView","onLegacyChange","handleChange","legacySlices","warnedSlicesRef","isDevelopmentEnvironment","container","kind","attribute","element"],"mappings":"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","file":"chunk-54H6DRO6.js","sourcesContent":["import * as React from \"react\";\nimport type { Row } from \"@tanstack/react-table\";\nimport { cn } from \"../../lib/utils\";\nimport type { DataTableCardPanelProps } from \"./data-table-card-panel-types\";\n\nexport function DataTableBaseCardPanel({\n cardClassName,\n cardGridClassName,\n cardSizing,\n cardRenderer,\n currentRowSelection,\n DataTableCardView,\n DataTableEmptyState,\n dragAndDrop,\n editableRows,\n editingRowId,\n emptyNode,\n enableRowSelection,\n flexGrow,\n getRowClassName,\n hasCardTitle,\n infiniteScroll,\n localSearchValue,\n onRowClick,\n renderedRows,\n renderExpandedRow,\n resolvedLabels,\n resolvedLoadingRowCount,\n rowActions = [],\n ScrollArea,\n sentinelRef,\n setCurrentRowSelection,\n setEditingRowId,\n shouldRenderInitialLoading,\n tableContainerClassName,\n uiClassNames,\n}: DataTableCardPanelProps) {\n const shouldRenderCards =\n shouldRenderInitialLoading || renderedRows.length > 0;\n const cardScrollContainerRef = React.useRef(null);\n\n const renderCardView = (\n rows: Array>,\n options?: {\n isLoading?: boolean;\n loadingRowCount?: number;\n },\n ) => (\n \n );\n\n return (\n \n \n \n {shouldRenderCards ? (\n shouldRenderInitialLoading ? (\n renderCardView([], {\n isLoading: true,\n loadingRowCount: resolvedLoadingRowCount,\n })\n ) : (\n renderCardView(renderedRows)\n )\n ) : (\n
    \n {emptyNode ?? (\n \n )}\n
    \n )}\n\n {infiniteScroll?.enabled && !shouldRenderInitialLoading ? (\n
    \n
    \n
    \n ) : null}\n
    \n \n \n );\n}\n","import * as React from \"react\";\nimport { DataTableBaseCardPanel } from \"./data-table-base-card-panel\";\nimport type { DataTableCardPanelProps } from \"./data-table-card-panel-types\";\n\nconst LazyDataTableVirtualCardPanel = React.lazy(async () => {\n const module = await import(\"./data-table-virtual-card-panel\");\n return { default: module.DataTableVirtualCardPanel };\n}) as unknown as typeof DataTableBaseCardPanel;\n\nexport function DataTableCardPanel(\n props: DataTableCardPanelProps,\n) {\n const config =\n typeof props.virtualization === \"object\"\n ? props.virtualization.card\n : undefined;\n\n if (config?.enabled !== true) {\n return ;\n }\n\n return (\n }>\n \n \n );\n}\n\nexport type { DataTableCardPanelProps };\n","import * as React from \"react\";\nimport type { PaginationState } from \"@tanstack/react-table\";\nimport type { DataTableLabels } from \"../types\";\n\ntype DataTableFooterSectionProps = {\n children?: React.ReactNode;\n currentPagination: PaginationState;\n DataTableFooter: React.ElementType;\n effectivePageCount: number;\n footerTotalRowCount: number | undefined;\n handleFooterPageIndexChange: (pageIndex: number) => void;\n handleFooterPageSizeChange: (pageSize: number) => void;\n labels: DataTableLabels;\n pageCountKnown?: boolean;\n rowsPerPageOptions: Array;\n showFooter: boolean;\n};\n\nexport function DataTableFooterSection({\n children,\n currentPagination,\n DataTableFooter,\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n labels,\n pageCountKnown = true,\n rowsPerPageOptions,\n showFooter,\n}: DataTableFooterSectionProps) {\n if (!showFooter && !children) {\n return null;\n }\n\n return (\n
    \n {showFooter ? (\n \n ) : null}\n {children}\n
    \n );\n}\n","import * as React from \"react\";\nimport type { Table as TanStackTable } from \"@tanstack/react-table\";\nimport type { DataTableLabels, DataTableProps } from \"../types\";\n\ntype DataTableToolbarSectionProps = {\n allRows: Array;\n columnFilters: Array;\n columnVisibilityOptions: Array;\n compactToolbar: React.ReactNode;\n customToolbar: React.ReactNode;\n DataTableToolbar: React.ElementType;\n description: string | undefined;\n effectiveToolbarActions: Array;\n enableColumnPinning: boolean;\n enableDensityToggle: boolean;\n enableViewToggle: boolean;\n hiddenRowsLabel: string | undefined;\n labels: DataTableLabels;\n onClearColumnFilters: () => void;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n onColumnPinningChange: (columnId: string, side: \"left\" | \"right\" | false) => void;\n onDensityChange: (density: \"compact\" | \"comfortable\" | \"spacious\") => void;\n onShowHiddenRowsChange: (showHiddenRows: boolean) => void;\n onToolbarQueryValueChange: (value: string) => void;\n onViewModeChange: (viewMode: \"table\" | \"card\") => void;\n openFileDialog: (() => void) | undefined;\n selectedRows: Array;\n selectionActions: DataTableProps[\"selectionActions\"];\n showHiddenRows: boolean;\n table: TanStackTable;\n title: string | undefined;\n toolbarQueryPlaceholder: string;\n toolbarQueryValue: string;\n toolbarVisibility: DataTableProps[\"toolbarVisibility\"];\n density: \"compact\" | \"comfortable\" | \"spacious\";\n viewMode: \"table\" | \"card\";\n};\n\nexport function DataTableToolbarSection({\n allRows,\n columnFilters,\n columnVisibilityOptions,\n compactToolbar,\n customToolbar,\n DataTableToolbar,\n description,\n effectiveToolbarActions,\n enableColumnPinning,\n enableDensityToggle,\n enableViewToggle,\n hiddenRowsLabel,\n labels,\n onClearColumnFilters,\n onColumnFilterChange,\n onColumnPinningChange,\n onDensityChange,\n onShowHiddenRowsChange,\n onToolbarQueryValueChange,\n onViewModeChange,\n openFileDialog,\n selectedRows,\n selectionActions,\n showHiddenRows,\n table,\n title,\n toolbarQueryPlaceholder,\n toolbarQueryValue,\n toolbarVisibility,\n density,\n viewMode,\n}: DataTableToolbarSectionProps) {\n return (\n
    \n {\n table.getColumn(columnId)?.toggleVisibility(visible);\n }}\n enableColumnPinning={enableColumnPinning}\n onColumnPinningChange={onColumnPinningChange}\n columnFilters={columnFilters}\n onColumnFilterChange={onColumnFilterChange}\n onClearColumnFilters={onClearColumnFilters}\n density={density}\n onDensityChange={onDensityChange}\n enableDensityToggle={enableDensityToggle}\n labels={labels}\n toolbarVisibility={toolbarVisibility}\n openFileDialog={openFileDialog}\n />\n
    \n );\n}\n","import type { DataTableLabels } from \"../types\";\n\ntype ResolvedDataTableLabels = Required;\n\nexport const DATA_TABLE_DEFAULT_LABELS: ResolvedDataTableLabels = {\n searchPlaceholder: \"Search rows...\",\n searchTable: \"Search table\",\n clearSearch: \"Clear search\",\n noRowsTitle: \"No rows yet\",\n noRowsDescription: \"Create a record or refresh this view once data exists.\",\n noMatchingRowsTitle: \"No matching rows\",\n noMatchingRowsDescription: \"Try a different search term or clear filters.\",\n tableOptions: \"Show table options\",\n columns: \"Columns\",\n filters: \"Filters\",\n clearFilters: \"Clear filters\",\n selectedRows: (count) =>\n `${count} record${count === 1 ? \"\" : \"s\"} selected`,\n showHiddenRows: (label) => `Show ${label}`,\n recordsPerPage: \"Records per page\",\n totalRecords: (count) => `Total records: ${count}`,\n pageStatus: (pageIndex, pageCount) => `Page ${pageIndex + 1} of ${pageCount}`,\n pageStatusUnknown: (pageIndex) => `Page ${pageIndex + 1}`,\n pagination: \"Pagination\",\n morePages: \"More pages\",\n firstPage: \"First page\",\n previousPage: \"Previous page\",\n nextPage: \"Next page\",\n lastPage: \"Last page\",\n selectAllVisibleRows: \"Select all visible rows\",\n selectRow: \"Select row\",\n selectCardRow: (rowId) => `Select row ${rowId}`,\n switchToTableView: \"Switch to table view\",\n switchToCardView: \"Switch to card view\",\n tableView: \"Table view\",\n cardView: \"Card view\",\n allFilterOptions: \"All\",\n actions: \"Actions\",\n rowActions: \"Row actions\",\n editRow: \"Edit row\",\n saveEdit: \"Save\",\n cancelEdit: \"Cancel editing\",\n expandRow: \"Expand row\",\n collapseRow: \"Collapse row\",\n exportCsv: \"Export CSV\",\n density: \"Density\",\n compactDensity: \"Compact\",\n comfortableDensity: \"Comfortable\",\n spaciousDensity: \"Spacious\",\n pinLeft: \"Pin left\",\n pinRight: \"Pin right\",\n unpin: \"Unpin\",\n};\n\nexport function resolveDataTableLabels(\n labels?: Partial,\n): ResolvedDataTableLabels {\n return {\n ...DATA_TABLE_DEFAULT_LABELS,\n ...labels,\n } as ResolvedDataTableLabels;\n}\n","import * as React from \"react\";\nimport type { ColumnDef, Table as TanStackTable } from \"@tanstack/react-table\";\nimport { IconChevronDown } from \"../icons\";\nimport type {\n DataTableEditableRowsConfig,\n DataTableLabels,\n DataTableProps,\n DataTableRowAction,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport {\n UTILITY_COLUMN_SIZE,\n decorateFilterableColumn,\n isDataTableLoadingRow,\n} from \"./data-table-utils\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\ntype DataTableRowActionsComponentProps = {\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n labels: DataTableLabels;\n onCancelEditing: () => void;\n onStartEditing: () => void;\n row: TData;\n rowActions: Array>;\n};\n\nexport function useDataTableColumns({\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n editingRowId,\n enableRowSelection,\n getRowCanExpand,\n isSavingEdit,\n labels,\n lastSelectedRowIdRef,\n renderExpandedRow,\n rowActions,\n saveEdit,\n startEditingRow,\n tableRef,\n}: {\n Button: DataTableUiKit[\"Button\"];\n Checkbox: DataTableUiKit[\"Checkbox\"];\n DataTableRowActions: React.ComponentType<\n DataTableRowActionsComponentProps\n >;\n Tooltip: DataTableUiKit[\"Tooltip\"];\n TooltipContent: DataTableUiKit[\"TooltipContent\"];\n TooltipTrigger: DataTableUiKit[\"TooltipTrigger\"];\n cancelEditing: () => void;\n columns: DataTableProps[\"columns\"];\n editableRows: DataTableProps[\"editableRows\"];\n editingRowId: string | null;\n enableRowSelection: boolean;\n getRowCanExpand: DataTableProps[\"getRowCanExpand\"];\n isSavingEdit: boolean;\n labels: DataTableLabels;\n lastSelectedRowIdRef: React.MutableRefObject;\n renderExpandedRow: DataTableProps[\"renderExpandedRow\"];\n rowActions: Array>;\n saveEdit: (row: TData) => Promise;\n startEditingRow: (row: TData, rowId: string) => void;\n tableRef: React.RefObject | null>;\n}) {\n const selectRowRange = React.useCallback(\n (targetRowId: string, selected: boolean) => {\n const tableInstance = tableRef.current;\n if (!tableInstance || !lastSelectedRowIdRef.current) {\n return;\n }\n\n const rows = tableInstance\n .getRowModel()\n .rows.filter((row) => !isDataTableLoadingRow(row.original));\n const startIndex = rows.findIndex(\n (row) => row.id === lastSelectedRowIdRef.current,\n );\n const endIndex = rows.findIndex((row) => row.id === targetRowId);\n\n if (startIndex < 0 || endIndex < 0) {\n return;\n }\n\n const from = Math.min(startIndex, endIndex);\n const to = Math.max(startIndex, endIndex);\n tableInstance.setRowSelection((current) => {\n const next = { ...current };\n for (const row of rows.slice(from, to + 1)) {\n if (selected) {\n next[row.id] = true;\n } else {\n delete next[row.id];\n }\n }\n return next;\n });\n },\n [lastSelectedRowIdRef, tableRef],\n );\n\n return React.useMemo>>(() => {\n const defs: Array> = [];\n\n if (renderExpandedRow) {\n defs.push({\n id: \"__expand__\",\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n size: UTILITY_COLUMN_SIZE,\n minSize: UTILITY_COLUMN_SIZE,\n maxSize: UTILITY_COLUMN_SIZE,\n header: () => {labels.expandRow},\n cell: ({ row }) => {\n const canExpand =\n getRowCanExpand?.(row.original) ?? Boolean(renderExpandedRow);\n if (!canExpand) {\n return null;\n }\n\n const isExpanded = row.getIsExpanded();\n return (\n
    \n row.toggleExpanded()}\n >\n \n \n
    \n );\n },\n });\n }\n\n if (enableRowSelection) {\n defs.push({\n id: \"__select__\",\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n size: UTILITY_COLUMN_SIZE,\n minSize: UTILITY_COLUMN_SIZE,\n maxSize: UTILITY_COLUMN_SIZE,\n header: ({ table }) => (\n
    \n {\n table.toggleAllPageRowsSelected(checked === true);\n }}\n aria-label={\n labels.selectAllVisibleRows ??\n DATA_TABLE_DEFAULT_LABELS.selectAllVisibleRows\n }\n />\n
    \n ),\n cell: ({ row }) => (\n
    \n ) => {\n if (!event.shiftKey || !lastSelectedRowIdRef.current) {\n lastSelectedRowIdRef.current = row.id;\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n selectRowRange(row.id, !row.getIsSelected());\n lastSelectedRowIdRef.current = row.id;\n }}\n onCheckedChange={(checked: boolean | \"indeterminate\") => {\n lastSelectedRowIdRef.current = row.id;\n row.toggleSelected(checked === true);\n }}\n aria-label={\n labels.selectRow ?? DATA_TABLE_DEFAULT_LABELS.selectRow\n }\n />\n
    \n ),\n });\n }\n\n defs.push(...columns.map((column) => decorateFilterableColumn(column)));\n\n if (rowActions.length || editableRows) {\n defs.push({\n id: \"__actions__\",\n enableSorting: false,\n enableResizing: false,\n enableHiding: false,\n size: UTILITY_COLUMN_SIZE,\n minSize: UTILITY_COLUMN_SIZE,\n maxSize: UTILITY_COLUMN_SIZE,\n header: () => {labels.actions},\n cell: ({ row }) => {\n const rowId = row.id;\n const isEditing = editingRowId === rowId;\n\n if (isEditing) {\n return (\n
    \n {\n void saveEdit(row.original);\n }}\n >\n {labels.saveEdit}\n \n \n \n \n \n {labels.cancelEdit}\n \n \n {labels.cancelEdit}\n \n
    \n );\n }\n\n return (\n
    \n {\n startEditingRow(row.original, row.id);\n }}\n onCancelEditing={() => {}}\n labels={labels}\n />\n
    \n );\n },\n });\n }\n\n return defs;\n }, [\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n editingRowId,\n enableRowSelection,\n getRowCanExpand,\n isSavingEdit,\n labels,\n lastSelectedRowIdRef,\n renderExpandedRow,\n rowActions,\n saveEdit,\n selectRowRange,\n startEditingRow,\n ]);\n}\n","import * as React from \"react\";\n\nexport function useDataTableInfiniteScroll({\n enabled,\n hasMore,\n isLoadingMore,\n onLoadMore,\n onError,\n}: {\n enabled: boolean;\n hasMore: boolean;\n isLoadingMore?: boolean;\n onLoadMore: () => void | Promise;\n onError?: (error: unknown) => void;\n}) {\n const sentinelRef = React.useRef(null);\n const isRequestInFlightRef = React.useRef(false);\n const onLoadMoreEvent = React.useEffectEvent(onLoadMore);\n const onErrorEvent = React.useEffectEvent((error: unknown) => {\n onError?.(error);\n });\n\n React.useEffect(() => {\n if (!enabled || !hasMore || isLoadingMore) {\n return;\n }\n\n const target = sentinelRef.current;\n if (!target) {\n return;\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n const entry = entries[0];\n if (entry.isIntersecting && !isRequestInFlightRef.current) {\n isRequestInFlightRef.current = true;\n\n let result: void | Promise;\n try {\n result = onLoadMoreEvent();\n } catch (error) {\n isRequestInFlightRef.current = false;\n onErrorEvent(error);\n return;\n }\n\n void Promise.resolve(result)\n .catch((error: unknown) => {\n onErrorEvent(error);\n })\n .finally(() => {\n isRequestInFlightRef.current = false;\n });\n }\n },\n {\n rootMargin: \"200px 0px 200px 0px\",\n },\n );\n\n observer.observe(target);\n\n return () => {\n observer.disconnect();\n };\n }, [enabled, hasMore, isLoadingMore]);\n\n return sentinelRef;\n}\n","import * as React from \"react\";\n\nexport function useDataTablePaginationClamp({\n enabled,\n maxPageIndex,\n onPageIndexChange,\n pageIndex,\n setLocalPageIndex,\n}: {\n enabled: boolean;\n maxPageIndex: number;\n onPageIndexChange?: (pageIndex: number) => void;\n pageIndex: number;\n setLocalPageIndex: (pageIndex: number) => void;\n}) {\n React.useEffect(() => {\n if (!enabled) {\n return;\n }\n\n if (pageIndex >= 0 && pageIndex <= maxPageIndex) {\n return;\n }\n\n const nextPageIndex = Math.min(Math.max(pageIndex, 0), maxPageIndex);\n setLocalPageIndex(nextPageIndex);\n onPageIndexChange?.(nextPageIndex);\n }, [enabled, maxPageIndex, onPageIndexChange, pageIndex, setLocalPageIndex]);\n}\n","import * as React from \"react\";\nimport {\n getCoreRowModel,\n getExpandedRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\";\nimport type {\n ColumnDef,\n ColumnFiltersState,\n ColumnOrderState,\n ColumnPinningState,\n ColumnSizingState,\n ExpandedState,\n FilterFnOption,\n OnChangeFn,\n PaginationState,\n Row,\n SortingState,\n Table as TanStackTable,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport type { DataTableProps } from \"../types\";\nimport {\n dataTableGlobalFilterFn,\n getColumnId,\n getDataTableLeafColumns,\n isUtilityColumnId,\n moveColumnInOrder,\n} from \"./data-table-utils\";\nimport { useDataTableInfiniteScroll } from \"./use-data-table-infinite-scroll\";\nimport { useDataTablePaginationClamp } from \"./use-data-table-pagination-clamp\";\n\nexport function useDataTableInstance({\n autoResetPageIndex,\n columnResizeMode,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentColumnSizing,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentSorting,\n defaultColumn,\n effectiveColumnVisibility,\n enableColumnResizing,\n enableRowSelection,\n getRowCanExpand,\n globalFilterFn,\n globalFilterValue,\n hasNextPage,\n handleColumnFiltersChange,\n handleColumnOrderChange,\n handleColumnPinningChange,\n handleColumnVisibilityChange,\n handleExpandedChange,\n infiniteScroll,\n manualFiltering,\n manualPagination,\n manualSorting,\n onActionError,\n onPageIndexChange,\n onPageSizeChange,\n pageCount,\n pageIndex,\n pageSize,\n renderExpandedRow,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n shouldRenderInitialLoading,\n tableColumns,\n tableData,\n tableGetRowId,\n tableRef,\n totalRowCount,\n}: {\n autoResetPageIndex: boolean;\n columnResizeMode: DataTableProps[\"columnResizeMode\"];\n currentColumnFilters: ColumnFiltersState;\n currentColumnOrder: ColumnOrderState;\n currentColumnPinning: ColumnPinningState;\n currentColumnSizing: ColumnSizingState;\n currentExpanded: ExpandedState;\n currentPagination: PaginationState;\n currentRowSelection: Record;\n currentSorting: SortingState;\n currentViewMode: \"table\" | \"card\";\n defaultColumn: Partial>;\n effectiveColumnVisibility: VisibilityState;\n enableColumnResizing: boolean;\n enableRowSelection: boolean;\n getRowCanExpand: DataTableProps[\"getRowCanExpand\"];\n globalFilterFn: FilterFnOption | undefined;\n globalFilterValue: string;\n hasNextPage?: DataTableProps[\"hasNextPage\"];\n handleColumnFiltersChange: OnChangeFn;\n handleColumnOrderChange: OnChangeFn;\n handleColumnPinningChange: OnChangeFn;\n handleColumnVisibilityChange: OnChangeFn;\n handleExpandedChange: OnChangeFn;\n infiniteScroll: DataTableProps[\"infiniteScroll\"];\n manualFiltering: boolean;\n manualPagination: boolean;\n manualSorting: boolean;\n onActionError?: DataTableProps[\"onActionError\"];\n onPageIndexChange: DataTableProps[\"onPageIndexChange\"];\n onPageSizeChange: DataTableProps[\"onPageSizeChange\"];\n pageCount: DataTableProps[\"pageCount\"];\n pageIndex: DataTableProps[\"pageIndex\"];\n pageSize: DataTableProps[\"pageSize\"];\n renderExpandedRow: DataTableProps[\"renderExpandedRow\"];\n setCurrentRowSelection: OnChangeFn>;\n setCurrentSorting: OnChangeFn;\n setLocalColumnSizing: OnChangeFn;\n setLocalPagination: React.Dispatch>;\n shouldRenderInitialLoading: boolean;\n tableColumns: Array>;\n tableData: Array;\n tableGetRowId: DataTableProps[\"getRowId\"];\n tableRef: React.RefObject | null>;\n tableScrollElement: HTMLElement | null;\n /**\n * @deprecated Filtering now runs through TanStack Table. Retained so\n * advanced 4.x hook callers remain source-compatible.\n */\n toolbarFilteredData?: Array;\n totalRowCount: DataTableProps[\"totalRowCount\"];\n virtualization: DataTableProps[\"virtualization\"];\n viewportHeight: number;\n}) {\n const generatedColumnIds = React.useMemo(() => {\n return getDataTableLeafColumns(\n tableColumns as DataTableProps[\"columns\"],\n ).map(({ column, index }) => getColumnId(column, index));\n }, [tableColumns]);\n\n const effectiveColumnOrder = React.useMemo(() => {\n const columnIds = generatedColumnIds;\n const dataColumnIds = columnIds.filter(\n (columnId) =>\n !isUtilityColumnId(columnId) && columnId !== \"__spacer__\",\n );\n const dataColumnIdSet = new Set(dataColumnIds);\n const orderedDataColumnIds = currentColumnOrder.filter((columnId) =>\n dataColumnIdSet.has(columnId),\n );\n const unorderedDataColumnIds = dataColumnIds.filter(\n (columnId) => !orderedDataColumnIds.includes(columnId),\n );\n\n return [\n ...columnIds.filter(\n (columnId) => columnId === \"__expand__\" || columnId === \"__select__\",\n ),\n ...orderedDataColumnIds,\n ...unorderedDataColumnIds,\n ...columnIds.filter((columnId) => columnId === \"__spacer__\"),\n ...columnIds.filter((columnId) => columnId === \"__actions__\"),\n ];\n }, [currentColumnOrder, generatedColumnIds]);\n\n const effectiveColumnPinning = React.useMemo(() => {\n const columnIdSet = new Set(generatedColumnIds);\n const dataColumnIdSet = new Set(\n generatedColumnIds.filter(\n (columnId) =>\n !isUtilityColumnId(columnId) && columnId !== \"__spacer__\",\n ),\n );\n const dataLeft = (currentColumnPinning.left ?? []).filter((columnId) =>\n dataColumnIdSet.has(columnId),\n );\n const dataRight = (currentColumnPinning.right ?? []).filter((columnId) =>\n dataColumnIdSet.has(columnId),\n );\n\n return {\n left: [\n ...[\"__expand__\", \"__select__\"].filter((columnId) =>\n columnIdSet.has(columnId),\n ),\n ...dataLeft,\n ],\n right: [\n ...dataRight,\n ...[\"__actions__\"].filter((columnId) => columnIdSet.has(columnId)),\n ],\n };\n }, [currentColumnPinning, generatedColumnIds]);\n\n const tableState = React.useMemo(\n () => ({\n sorting: currentSorting,\n pagination: currentPagination,\n rowSelection: currentRowSelection,\n columnVisibility: effectiveColumnVisibility,\n columnFilters: currentColumnFilters,\n globalFilter: globalFilterValue,\n expanded: currentExpanded,\n columnOrder: effectiveColumnOrder,\n columnPinning: effectiveColumnPinning,\n columnSizing: currentColumnSizing,\n }),\n [\n currentColumnFilters,\n currentColumnSizing,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentSorting,\n effectiveColumnVisibility,\n effectiveColumnOrder,\n effectiveColumnPinning,\n globalFilterValue,\n ],\n );\n\n const handlePaginationChange = React.useCallback<\n OnChangeFn\n >(\n (updater) => {\n const nextValue =\n typeof updater === \"function\" ? updater(currentPagination) : updater;\n\n if (pageIndex === undefined || pageSize === undefined) {\n setLocalPagination((current) => ({\n pageIndex:\n pageIndex === undefined ? nextValue.pageIndex : current.pageIndex,\n pageSize:\n pageSize === undefined ? nextValue.pageSize : current.pageSize,\n }));\n }\n\n if (nextValue.pageIndex !== currentPagination.pageIndex) {\n onPageIndexChange?.(nextValue.pageIndex);\n }\n if (nextValue.pageSize !== currentPagination.pageSize) {\n onPageSizeChange?.(nextValue.pageSize);\n }\n },\n [\n currentPagination,\n onPageIndexChange,\n onPageSizeChange,\n pageIndex,\n pageSize,\n setLocalPagination,\n ],\n );\n\n const handleColumnSizingChange = React.useCallback<\n OnChangeFn\n >(\n (updater) => {\n setLocalColumnSizing(updater);\n },\n [setLocalColumnSizing],\n );\n\n // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Table owns its instance functions.\n const table = useReactTable({\n data: tableData,\n columns: tableColumns,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: manualFiltering ? undefined : getFilteredRowModel(),\n getSortedRowModel: manualSorting ? undefined : getSortedRowModel(),\n getExpandedRowModel: renderExpandedRow ? getExpandedRowModel() : undefined,\n getPaginationRowModel:\n manualPagination || infiniteScroll?.enabled\n ? undefined\n : getPaginationRowModel(),\n enableRowSelection,\n enableMultiRowSelection: enableRowSelection,\n enableColumnResizing,\n columnResizeMode,\n getRowId: tableGetRowId,\n getRowCanExpand: renderExpandedRow\n ? (row) => getRowCanExpand?.(row.original) ?? true\n : undefined,\n globalFilterFn: globalFilterFn ?? dataTableGlobalFilterFn,\n getColumnCanGlobalFilter: (column) =>\n column.columnDef.enableGlobalFilter !== false &&\n typeof column.accessorFn === \"function\",\n manualSorting,\n manualFiltering,\n manualPagination: manualPagination || Boolean(infiniteScroll?.enabled),\n defaultColumn,\n autoResetPageIndex,\n state: tableState,\n onSortingChange: setCurrentSorting,\n onPaginationChange: handlePaginationChange,\n onRowSelectionChange: setCurrentRowSelection,\n onColumnVisibilityChange: handleColumnVisibilityChange,\n onColumnFiltersChange: handleColumnFiltersChange,\n onExpandedChange: handleExpandedChange,\n onColumnOrderChange: handleColumnOrderChange,\n onColumnPinningChange: handleColumnPinningChange,\n onColumnSizingChange: handleColumnSizingChange,\n });\n tableRef.current = table;\n\n const visibleLeafColumns = table.getVisibleLeafColumns();\n const reorderColumn = React.useCallback(\n (sourceColumnId: string, targetColumnId: string) => {\n if (sourceColumnId === targetColumnId) {\n return;\n }\n\n const defaultOrder = table\n .getAllLeafColumns()\n .map((column) => column.id)\n .filter((columnId) => !isUtilityColumnId(columnId));\n const nextOrder = moveColumnInOrder(\n currentColumnOrder.length ? currentColumnOrder : defaultOrder,\n sourceColumnId,\n targetColumnId,\n );\n handleColumnOrderChange(nextOrder);\n },\n [currentColumnOrder, handleColumnOrderChange, table],\n );\n\n const renderedRows = table.getRowModel().rows;\n const rowsToRender = renderedRows.map((row, rowIndex) => ({\n row,\n rowIndex,\n }));\n\n const usesManualRows = manualPagination || Boolean(infiniteScroll?.enabled);\n const derivedTotalRowCount = usesManualRows\n ? undefined\n : table.getFilteredRowModel().rows.length;\n const effectiveTotalRowCount = totalRowCount ?? derivedTotalRowCount;\n const isPageCountKnown =\n !usesManualRows || pageCount !== undefined || totalRowCount !== undefined;\n const footerTotalRowCount = effectiveTotalRowCount;\n const effectivePageCount = shouldRenderInitialLoading\n ? 1\n : (pageCount ??\n (effectiveTotalRowCount !== undefined\n ? Math.max(\n 1,\n Math.ceil(effectiveTotalRowCount / currentPagination.pageSize),\n )\n : usesManualRows\n ? currentPagination.pageIndex + (hasNextPage ? 2 : 1)\n : table.getPageCount()));\n const maxPageIndex = Math.max(0, effectivePageCount - 1);\n\n const setLocalPageIndex = React.useCallback(\n (nextPageIndex: number) => {\n if (pageIndex !== undefined) {\n return;\n }\n\n setLocalPagination((current) =>\n current.pageIndex === nextPageIndex\n ? current\n : { ...current, pageIndex: nextPageIndex },\n );\n },\n [pageIndex, setLocalPagination],\n );\n useDataTablePaginationClamp({\n enabled:\n !shouldRenderInitialLoading &&\n !infiniteScroll?.enabled &&\n isPageCountKnown,\n maxPageIndex,\n onPageIndexChange,\n pageIndex: currentPagination.pageIndex,\n setLocalPageIndex,\n });\n\n const handleFooterPageIndexChange = React.useCallback(\n (nextPageIndex: number) => {\n if (nextPageIndex === currentPagination.pageIndex) {\n return;\n }\n\n onPageIndexChange?.(nextPageIndex);\n if (pageIndex === undefined) {\n setLocalPagination((current) =>\n current.pageIndex === nextPageIndex\n ? current\n : { ...current, pageIndex: nextPageIndex },\n );\n }\n },\n [\n currentPagination.pageIndex,\n onPageIndexChange,\n pageIndex,\n setLocalPagination,\n ],\n );\n const handleFooterPageSizeChange = React.useCallback(\n (nextPageSize: number) => {\n if (currentPagination.pageIndex !== 0) {\n onPageIndexChange?.(0);\n }\n if (nextPageSize !== currentPagination.pageSize) {\n onPageSizeChange?.(nextPageSize);\n }\n if (pageSize === undefined) {\n setLocalPagination({\n pageIndex: 0,\n pageSize: nextPageSize,\n });\n }\n },\n [\n currentPagination.pageIndex,\n currentPagination.pageSize,\n onPageIndexChange,\n onPageSizeChange,\n pageSize,\n setLocalPagination,\n ],\n );\n\n const sentinelRef = useDataTableInfiniteScroll({\n enabled: Boolean(infiniteScroll?.enabled),\n hasMore: Boolean(infiniteScroll?.hasMore),\n isLoadingMore: infiniteScroll?.isLoadingMore,\n onLoadMore: () => infiniteScroll?.onLoadMore(),\n onError: (error) => {\n onActionError?.({\n error,\n source: \"infiniteScroll\",\n });\n },\n });\n\n return {\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n isPageCountKnown,\n renderedRows,\n reorderColumn,\n rowsToRender,\n sentinelRef,\n table,\n virtualPaddingBottom: 0,\n virtualPaddingTop: 0,\n visibleLeafColumns,\n };\n}\n\nexport type DataTableRowsToRender = Array<{\n row: Row;\n rowIndex: number;\n}>;\n","import * as React from \"react\";\nimport type { Updater } from \"@tanstack/react-table\";\n\nexport function useControllableState({\n defaultValue,\n onChange,\n value,\n}: {\n defaultValue: T | (() => T);\n onChange?: (value: T) => void;\n value: T | undefined;\n}) {\n const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue);\n const currentValue = value ?? uncontrolledValue;\n const currentValueRef = React.useRef(currentValue);\n\n React.useEffect(() => {\n currentValueRef.current = currentValue;\n }, [currentValue]);\n\n const setValue = React.useCallback(\n (updater: Updater) => {\n const nextValue =\n typeof updater === \"function\"\n ? (updater as (current: T) => T)(currentValueRef.current)\n : updater;\n currentValueRef.current = nextValue;\n\n onChange?.(nextValue);\n\n if (value === undefined) {\n setUncontrolledValue(nextValue);\n }\n },\n [onChange, value],\n );\n\n return [currentValue, setValue] as const;\n}\n","import * as React from \"react\";\nimport type {\n DataTableColumnPrefs,\n DataTableDensity,\n DataTablePersistenceConfig,\n DataTablePersistencePayload,\n DataTablePersistenceSlice,\n DataTablePersistenceStorage,\n} from \"../types\";\n\nconst STORAGE_PREFIX = \"data-table-pro:column-prefs:\";\nconst DEFAULT_VERSION = 1;\nconst ALL_SLICES: Array = [\n \"visibility\",\n \"sizing\",\n \"order\",\n \"pinning\",\n \"density\",\n];\n\nexport function readDataTableColumnPrefs(\n input: string | DataTablePersistenceConfig | undefined,\n): DataTableColumnPrefs {\n const config = resolvePersistenceConfig(input);\n if (!config) {\n return {};\n }\n\n const storage = resolveStorage(config);\n if (!storage) {\n return {};\n }\n const storageKey = getStorageKey(config.key);\n\n let value: string | null;\n try {\n value = storage.getItem(storageKey);\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return {};\n }\n if (!value) {\n return {};\n }\n\n let parsed: unknown;\n try {\n parsed = (config.deserialize ?? JSON.parse)(value);\n } catch (error) {\n config.onError?.({ error, operation: \"deserialize\" });\n return {};\n }\n\n const targetVersion = config.version ?? DEFAULT_VERSION;\n let candidate: unknown;\n if (isPersistencePayload(parsed)) {\n if (parsed.version === targetVersion) {\n candidate = parsed.state;\n } else if (config.migrate) {\n try {\n candidate = config.migrate(\n {\n version: parsed.version,\n state: parsed.state,\n },\n targetVersion,\n );\n } catch (error) {\n config.onError?.({ error, operation: \"migrate\" });\n return {};\n }\n } else {\n return {};\n }\n } else {\n // Raw objects are the legacy columnPrefsKey format. They are validated and\n // upgraded to a versioned envelope on the next successful write.\n candidate = parsed;\n }\n\n return selectPersistenceSlices(\n validateDataTableColumnPrefs(candidate),\n config.slices,\n );\n}\n\nexport function clearDataTableColumnPrefs(\n input: string | DataTablePersistenceConfig | undefined,\n) {\n const config = resolvePersistenceConfig(input);\n if (!config) {\n return false;\n }\n\n const storage = resolveStorage(config);\n if (!storage) {\n return false;\n }\n\n try {\n storage.removeItem(getStorageKey(config.key));\n return true;\n } catch (error) {\n config.onError?.({ error, operation: \"remove\" });\n return false;\n }\n}\n\nexport function usePersistDataTableColumnPrefs({\n key,\n persistence,\n prefs,\n}: {\n key?: string;\n persistence?: DataTablePersistenceConfig;\n prefs: DataTableColumnPrefs;\n}) {\n const config = persistence ?? resolvePersistenceConfig(key);\n const storage = config ? resolveStorage(config) : undefined;\n const storageKey = config ? getStorageKey(config.key) : undefined;\n const version = config?.version ?? DEFAULT_VERSION;\n const debounceMs = Math.max(0, config?.debounceMs ?? 100);\n const selectedState = selectPersistenceSlices(prefs, config?.slices);\n const serialized = React.useMemo(() => {\n if (!config) {\n return { value: undefined };\n }\n\n try {\n const payload: DataTablePersistencePayload = {\n version,\n state: selectedState,\n };\n return {\n value: (config.serialize ?? JSON.stringify)(payload),\n };\n } catch (error) {\n return { error, value: undefined };\n }\n }, [config, selectedState, version]);\n const onErrorEvent = React.useEffectEvent(\n (\n error: unknown,\n operation: \"serialize\" | \"write\",\n ) => {\n config?.onError?.({ error, operation });\n },\n );\n\n React.useEffect(() => {\n if (serialized.error !== undefined) {\n onErrorEvent(serialized.error, \"serialize\");\n }\n }, [serialized.error]);\n\n React.useEffect(() => {\n if (!storage || !storageKey || serialized.value === undefined) {\n return;\n }\n\n const write = () => {\n try {\n if (storage.getItem(storageKey) === serialized.value) {\n return;\n }\n storage.setItem(storageKey, serialized.value);\n } catch (error) {\n onErrorEvent(error, \"write\");\n }\n };\n\n if (debounceMs === 0) {\n write();\n return;\n }\n\n const timeout = globalThis.setTimeout(write, debounceMs);\n return () => {\n globalThis.clearTimeout(timeout);\n };\n }, [debounceMs, serialized.value, storage, storageKey]);\n}\n\nfunction resolvePersistenceConfig(\n input: string | DataTablePersistenceConfig | undefined,\n): DataTablePersistenceConfig | undefined {\n if (!input) {\n return undefined;\n }\n\n return typeof input === \"string\" ? { key: input } : input;\n}\n\nfunction resolveStorage(\n config: DataTablePersistenceConfig,\n): DataTablePersistenceStorage | undefined {\n if (config.storage) {\n return config.storage;\n }\n\n if (typeof window === \"undefined\") {\n return undefined;\n }\n\n try {\n return window.localStorage;\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return undefined;\n }\n}\n\nfunction getStorageKey(key: string) {\n return `${STORAGE_PREFIX}${key}`;\n}\n\nfunction isPersistencePayload(\n value: unknown,\n): value is { version: unknown; state: unknown } {\n return (\n isRecord(value) &&\n Object.prototype.hasOwnProperty.call(value, \"version\") &&\n Object.prototype.hasOwnProperty.call(value, \"state\")\n );\n}\n\nfunction selectPersistenceSlices(\n prefs: DataTableColumnPrefs,\n slices: Array | undefined,\n) {\n const selected = new Set(slices ?? ALL_SLICES);\n const result: DataTableColumnPrefs = {};\n\n for (const slice of ALL_SLICES) {\n if (selected.has(slice) && prefs[slice] !== undefined) {\n Object.assign(result, { [slice]: prefs[slice] });\n }\n }\n\n return result;\n}\n\nfunction validateDataTableColumnPrefs(value: unknown): DataTableColumnPrefs {\n if (!isRecord(value)) {\n return {};\n }\n\n const prefs: DataTableColumnPrefs = {};\n const visibility = validateBooleanRecord(value.visibility);\n if (visibility) {\n prefs.visibility = visibility;\n }\n const sizing = validateSizingRecord(value.sizing);\n if (sizing) {\n prefs.sizing = sizing;\n }\n const order = validateStringArray(value.order);\n if (order) {\n prefs.order = order;\n }\n if (isRecord(value.pinning)) {\n const left = validateStringArray(value.pinning.left) ?? [];\n const right = validateStringArray(value.pinning.right) ?? [];\n prefs.pinning = { left, right };\n }\n if (isDataTableDensity(value.density)) {\n prefs.density = value.density;\n }\n\n return prefs;\n}\n\nfunction validateBooleanRecord(value: unknown) {\n if (!isRecord(value)) {\n return undefined;\n }\n\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, boolean] => typeof entry[1] === \"boolean\",\n ),\n );\n}\n\nfunction validateSizingRecord(value: unknown) {\n if (!isRecord(value)) {\n return undefined;\n }\n\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, number] =>\n typeof entry[1] === \"number\" &&\n Number.isFinite(entry[1]) &&\n entry[1] >= 0,\n ),\n );\n}\n\nfunction validateStringArray(value: unknown) {\n if (!Array.isArray(value)) {\n return undefined;\n }\n\n return value.filter((item): item is string => typeof item === \"string\");\n}\n\nfunction isDataTableDensity(value: unknown): value is DataTableDensity {\n return (\n value === \"compact\" ||\n value === \"comfortable\" ||\n value === \"spacious\"\n );\n}\n\nfunction isRecord(value: unknown): value is Record {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n","import * as React from \"react\";\nimport type {\n ColumnFiltersState,\n ColumnOrderState,\n ColumnPinningState,\n ColumnSizingState,\n ExpandedState,\n PaginationState,\n SortingState,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableDensity,\n DataTableLabels,\n DataTableProps,\n} from \"../types\";\nimport {\n createDataTableLoadingRows,\n getColumnId,\n getDataTableLeafColumns,\n getDataTableLoadingRowId,\n getInitialColumnPinning,\n isDataTableLoadingRow,\n} from \"./data-table-utils\";\nimport {\n readDataTableColumnPrefs,\n usePersistDataTableColumnPrefs,\n} from \"./use-data-table-column-prefs\";\nimport { useControllableState } from \"./use-controllable-state\";\nimport { useDataTableContainerWidth } from \"./use-data-table-container-width\";\nimport { isHiddenAtContainerWidth, isRowVisible } from \"../types\";\n\nexport function useDataTableState({\n columnFilters,\n columnOrder,\n columnPinning,\n columnSizing,\n columnPrefsKey,\n persistence,\n columnVisibility,\n columns,\n data,\n density,\n enableRowSelection,\n enableToolbarQueryFiltering,\n expanded,\n getRowId,\n hiddenRows,\n initialState,\n isLoading,\n loadingRowCount,\n manualFiltering,\n onColumnFiltersChange,\n onColumnOrderChange,\n onColumnPinningChange,\n onColumnSizingChange,\n onColumnVisibilityChange,\n onDensityChange,\n onExpandedChange,\n onPageIndexChange,\n onRowSelectionChange,\n onShowHiddenRowsChange,\n onSortingChange,\n onToolbarQueryValueChange,\n onViewModeChange,\n pageIndex,\n pageSize,\n resolvedLabels,\n rowSelection,\n rowsPerPageOptions,\n selectionActions,\n showHiddenRows,\n sorting,\n toolbarQueryDebounceMs,\n toolbarQueryPlaceholder,\n toolbarQueryValue,\n viewMode,\n containerRef,\n}: {\n columnFilters: DataTableProps[\"columnFilters\"];\n columnOrder: DataTableProps[\"columnOrder\"];\n columnPinning: DataTableProps[\"columnPinning\"];\n columnSizing?: DataTableProps[\"columnSizing\"];\n columnPrefsKey: DataTableProps[\"columnPrefsKey\"];\n persistence?: DataTableProps[\"persistence\"];\n columnVisibility: DataTableProps[\"columnVisibility\"];\n columns: DataTableProps[\"columns\"];\n data: DataTableProps[\"data\"];\n density: DataTableProps[\"density\"];\n enableRowSelection: boolean;\n enableToolbarQueryFiltering: boolean;\n expanded: DataTableProps[\"expanded\"];\n getRowId: DataTableProps[\"getRowId\"];\n hiddenRows: DataTableProps[\"hiddenRows\"];\n initialState?: DataTableProps[\"initialState\"];\n isLoading: boolean;\n loadingRowCount: DataTableProps[\"loadingRowCount\"];\n manualFiltering: boolean;\n onColumnFiltersChange: DataTableProps[\"onColumnFiltersChange\"];\n onColumnOrderChange: DataTableProps[\"onColumnOrderChange\"];\n onColumnPinningChange: DataTableProps[\"onColumnPinningChange\"];\n onColumnSizingChange?: DataTableProps[\"onColumnSizingChange\"];\n onColumnVisibilityChange: DataTableProps[\"onColumnVisibilityChange\"];\n onDensityChange: DataTableProps[\"onDensityChange\"];\n onExpandedChange: DataTableProps[\"onExpandedChange\"];\n onPageIndexChange: DataTableProps[\"onPageIndexChange\"];\n onRowSelectionChange: DataTableProps[\"onRowSelectionChange\"];\n onShowHiddenRowsChange: DataTableProps[\"onShowHiddenRowsChange\"];\n onSortingChange: DataTableProps[\"onSortingChange\"];\n onToolbarQueryValueChange: DataTableProps[\"onToolbarQueryValueChange\"];\n onViewModeChange: DataTableProps[\"onViewModeChange\"];\n pageIndex: DataTableProps[\"pageIndex\"];\n pageSize: DataTableProps[\"pageSize\"];\n resolvedLabels: DataTableLabels;\n rowSelection: DataTableProps[\"rowSelection\"];\n rowsPerPageOptions: Array;\n selectionActions: DataTableProps[\"selectionActions\"];\n showHiddenRows: DataTableProps[\"showHiddenRows\"];\n sorting: DataTableProps[\"sorting\"];\n toolbarQueryDebounceMs: DataTableProps[\"toolbarQueryDebounceMs\"];\n toolbarQueryPlaceholder: DataTableProps[\"toolbarQueryPlaceholder\"];\n toolbarQueryValue: DataTableProps[\"toolbarQueryValue\"];\n viewMode: DataTableProps[\"viewMode\"];\n containerRef: React.RefObject;\n}) {\n const persistenceConfig = React.useMemo(\n () => persistence ?? (columnPrefsKey ? { key: columnPrefsKey } : undefined),\n [columnPrefsKey, persistence],\n );\n const persistedColumnPrefs = React.useMemo(\n () => readDataTableColumnPrefs(persistenceConfig),\n [persistenceConfig],\n );\n const [localPagination, setLocalPagination] =\n React.useState({\n pageIndex: initialState?.pagination?.pageIndex ?? 0,\n pageSize:\n initialState?.pagination?.pageSize ??\n rowsPerPageOptions[0] ??\n 20,\n });\n const [currentSorting, setCurrentSorting] =\n useControllableState({\n value: sorting,\n onChange: onSortingChange,\n defaultValue: () => initialState?.sorting ?? [],\n });\n const [currentRowSelection, setCurrentRowSelection] = useControllableState<\n Record\n >({\n value: rowSelection,\n onChange: onRowSelectionChange,\n defaultValue: () => initialState?.rowSelection ?? {},\n });\n const [currentColumnVisibility, setCurrentColumnVisibility] =\n useControllableState({\n value: columnVisibility,\n onChange: onColumnVisibilityChange,\n defaultValue: () =>\n initialState?.columnVisibility ??\n persistedColumnPrefs.visibility ??\n {},\n });\n const [currentColumnFilters, setCurrentColumnFilters] =\n useControllableState({\n value: columnFilters,\n onChange: onColumnFiltersChange,\n defaultValue: () => initialState?.columnFilters ?? [],\n });\n const [currentExpanded, setCurrentExpanded] =\n useControllableState({\n value: expanded,\n onChange: onExpandedChange,\n defaultValue: () => initialState?.expanded ?? {},\n });\n const [currentColumnOrder, setCurrentColumnOrder] =\n useControllableState({\n value: columnOrder,\n onChange: onColumnOrderChange,\n defaultValue: () =>\n initialState?.columnOrder ?? persistedColumnPrefs.order ?? [],\n });\n const [currentColumnPinning, setCurrentColumnPinning] =\n useControllableState({\n value: columnPinning,\n onChange: onColumnPinningChange,\n defaultValue: () =>\n initialState?.columnPinning ??\n persistedColumnPrefs.pinning ??\n getInitialColumnPinning(columns),\n });\n const [currentColumnSizing, setCurrentColumnSizing] =\n useControllableState({\n value: columnSizing,\n onChange: onColumnSizingChange,\n defaultValue: () =>\n initialState?.columnSizing ?? persistedColumnPrefs.sizing ?? {},\n });\n const [currentViewMode, setCurrentViewMode] = useControllableState<\n \"table\" | \"card\"\n >({\n value: viewMode,\n onChange: onViewModeChange,\n defaultValue: () => initialState?.viewMode ?? \"table\",\n });\n const [currentShowHiddenRows, setCurrentShowHiddenRows] =\n useControllableState({\n value: showHiddenRows,\n onChange: onShowHiddenRowsChange,\n defaultValue: () => initialState?.showHiddenRows ?? false,\n });\n const [currentDensity, setCurrentDensity] =\n useControllableState({\n value: density,\n onChange: onDensityChange,\n defaultValue: () =>\n initialState?.density ??\n persistedColumnPrefs.density ??\n \"comfortable\",\n });\n const resolvedToolbarQueryValue =\n toolbarQueryValue ?? initialState?.globalFilter ?? \"\";\n const resolvedToolbarQueryPlaceholder =\n toolbarQueryPlaceholder ?? resolvedLabels.searchPlaceholder;\n const resolvedToolbarQueryDebounceMs = toolbarQueryDebounceMs ?? 250;\n const [localSearchValue, setLocalSearchValue] = React.useState(\n resolvedToolbarQueryValue,\n );\n const containerWidth = useDataTableContainerWidth(containerRef);\n const hasOnSearchValueChange = Boolean(onToolbarQueryValueChange);\n const lastReportedSearchValueRef = React.useRef(resolvedToolbarQueryValue);\n const onToolbarQueryValueChangeEvent = React.useEffectEvent(\n (value: string) => {\n lastReportedSearchValueRef.current = value;\n onToolbarQueryValueChange?.(value);\n },\n );\n\n React.useEffect(() => {\n lastReportedSearchValueRef.current = resolvedToolbarQueryValue;\n // A controlled query change must replace any pending debounced draft.\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setLocalSearchValue(resolvedToolbarQueryValue);\n }, [resolvedToolbarQueryValue]);\n\n React.useEffect(() => {\n if (!hasOnSearchValueChange) {\n return;\n }\n\n if (localSearchValue === resolvedToolbarQueryValue) {\n return;\n }\n\n if (localSearchValue === lastReportedSearchValueRef.current) {\n return;\n }\n\n const timeout = window.setTimeout(() => {\n onToolbarQueryValueChangeEvent(localSearchValue);\n }, resolvedToolbarQueryDebounceMs);\n\n return () => {\n window.clearTimeout(timeout);\n };\n }, [\n hasOnSearchValueChange,\n localSearchValue,\n resolvedToolbarQueryDebounceMs,\n resolvedToolbarQueryValue,\n ]);\n\n const currentPagination = React.useMemo(\n () => ({\n pageIndex: pageIndex ?? localPagination.pageIndex,\n pageSize: pageSize ?? localPagination.pageSize,\n }),\n [\n localPagination.pageIndex,\n localPagination.pageSize,\n pageIndex,\n pageSize,\n ],\n );\n const resolvedLoadingRowCount = Math.max(\n 1,\n loadingRowCount ?? Math.min(5, currentPagination.pageSize),\n );\n const globalFilterValue = enableToolbarQueryFiltering\n ? localSearchValue\n : \"\";\n const handleViewModeChange = React.useCallback(\n (nextViewMode: \"table\" | \"card\") => {\n setCurrentViewMode(nextViewMode);\n },\n [setCurrentViewMode],\n );\n const handleShowHiddenRowsChange = React.useCallback(\n (nextShowHiddenRows: boolean) => {\n setCurrentShowHiddenRows(nextShowHiddenRows);\n },\n [setCurrentShowHiddenRows],\n );\n const handleDensityChange = React.useCallback(\n (nextDensity: DataTableDensity) => {\n setCurrentDensity(nextDensity);\n },\n [setCurrentDensity],\n );\n const resetPageIndexForFilterChange = React.useCallback(() => {\n onPageIndexChange?.(0);\n if (pageIndex === undefined) {\n setLocalPagination((current) =>\n current.pageIndex === 0 ? current : { ...current, pageIndex: 0 },\n );\n }\n }, [onPageIndexChange, pageIndex]);\n const filterResetSignature = React.useMemo(\n () =>\n JSON.stringify({\n globalFilterValue,\n columnFilters: currentColumnFilters,\n }),\n [currentColumnFilters, globalFilterValue],\n );\n const lastFilterResetSignatureRef = React.useRef(filterResetSignature);\n\n React.useEffect(() => {\n if (manualFiltering) {\n lastFilterResetSignatureRef.current = filterResetSignature;\n return;\n }\n\n if (lastFilterResetSignatureRef.current === filterResetSignature) {\n return;\n }\n\n lastFilterResetSignatureRef.current = filterResetSignature;\n resetPageIndexForFilterChange();\n }, [filterResetSignature, manualFiltering, resetPageIndexForFilterChange]);\n\n usePersistDataTableColumnPrefs({\n persistence: persistenceConfig,\n prefs: {\n visibility: columnVisibility ? undefined : currentColumnVisibility,\n sizing:\n columnSizing === undefined ? currentColumnSizing : undefined,\n order: columnOrder ? undefined : currentColumnOrder,\n pinning: columnPinning ? undefined : currentColumnPinning,\n density: density ? undefined : currentDensity,\n },\n });\n const responsiveColumnVisibility = React.useMemo(() => {\n return getDataTableLeafColumns(columns).reduce(\n (visibility, { column, index }) => {\n const columnId = getColumnId(column, index);\n if (isHiddenAtContainerWidth(column.meta?.hideOn, containerWidth)) {\n visibility[columnId] = false;\n }\n return visibility;\n },\n {},\n );\n }, [columns, containerWidth]);\n const effectiveColumnVisibility = React.useMemo(() => {\n return {\n ...currentColumnVisibility,\n ...responsiveColumnVisibility,\n };\n }, [currentColumnVisibility, responsiveColumnVisibility]);\n const visibleData = React.useMemo(\n () =>\n data.filter((row) =>\n isRowVisible(row, hiddenRows, currentShowHiddenRows),\n ),\n [currentShowHiddenRows, data, hiddenRows],\n );\n const shouldRenderInitialLoading = isLoading && visibleData.length === 0;\n const loadingRows = React.useMemo(\n () => createDataTableLoadingRows(resolvedLoadingRowCount),\n [resolvedLoadingRowCount],\n );\n const tableData = shouldRenderInitialLoading\n ? loadingRows\n : visibleData;\n const tableGetRowId = React.useCallback(\n (row: TData, index: number) => {\n if (isDataTableLoadingRow(row)) {\n return getDataTableLoadingRowId(index);\n }\n\n return getRowId(row, index);\n },\n [getRowId],\n );\n const shouldResolveSelectedRows =\n enableRowSelection ||\n (selectionActions?.length ?? 0) > 0 ||\n Object.values(currentRowSelection).some(Boolean);\n const rowById = React.useMemo(() => {\n if (!shouldResolveSelectedRows) {\n return new Map();\n }\n\n return new Map(\n visibleData.map((row, index) => [getRowId(row, index), row]),\n );\n }, [getRowId, shouldResolveSelectedRows, visibleData]);\n const selectedRows = React.useMemo(() => {\n if (!shouldResolveSelectedRows) {\n return [];\n }\n\n return Object.entries(currentRowSelection)\n .filter(([, selected]) => selected)\n .map(([rowId]) => rowById.get(rowId))\n .filter((row): row is TData => Boolean(row));\n }, [currentRowSelection, rowById, shouldResolveSelectedRows]);\n\n return {\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n effectiveColumnVisibility,\n globalFilterValue,\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n localSearchValue,\n resolvedLoadingRowCount,\n resolvedToolbarQueryPlaceholder,\n selectedRows,\n setCurrentColumnFilters,\n setCurrentColumnOrder,\n setCurrentColumnPinning,\n setCurrentColumnVisibility,\n setCurrentExpanded,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing: setCurrentColumnSizing,\n setLocalPagination,\n setLocalSearchValue,\n shouldRenderInitialLoading,\n tableData,\n tableGetRowId,\n /**\n * @deprecated Read the filtered TanStack row model from the table\n * instance. This alias remains for advanced 4.x callers.\n */\n toolbarFilteredData: visibleData,\n visibleData,\n };\n}\n","import * as React from \"react\";\nimport type { Column, ColumnSizingState } from \"@tanstack/react-table\";\nimport type { DataTableColumnDef } from \"../types\";\nimport type { DataTableUiClassNames } from \"../ui-kit\";\nimport {\n UTILITY_COLUMN_SIZE,\n getColumnId,\n getConfiguredColumnMinWidth,\n getDataTableLeafColumns,\n getFixedSide,\n getPinnedColumnClassName,\n isUtilityColumnId,\n} from \"./data-table-utils\";\n\ntype ColumnLayoutMode = \"fill\" | \"fit\";\n\nexport type DataTableColumnLayout = {\n cellStyle: React.CSSProperties | undefined;\n colStyle: React.CSSProperties | undefined;\n fixedSide: \"left\" | \"right\" | false | undefined;\n headerStyle: React.CSSProperties | undefined;\n isActionsColumn: boolean;\n isExpansionColumn: boolean;\n isSelectionColumn: boolean;\n isSpacerColumn: boolean;\n isUtilityColumn: boolean;\n pinnedClassName: string | undefined;\n utilityClassName: string | undefined;\n};\n\nconst EMPTY_COLUMN_LAYOUT: DataTableColumnLayout = {\n cellStyle: undefined,\n colStyle: undefined,\n fixedSide: undefined,\n headerStyle: undefined,\n isActionsColumn: false,\n isExpansionColumn: false,\n isSelectionColumn: false,\n isSpacerColumn: false,\n isUtilityColumn: false,\n pinnedClassName: undefined,\n utilityClassName: undefined,\n};\n\nexport function useColumnLayout({\n columns,\n columnSizing,\n editableRows,\n enableRowSelection,\n hasRowActions,\n hasRowExpansion,\n layoutMode,\n uiClassNames,\n visibleLeafColumns,\n}: {\n columns: Array>;\n columnSizing: ColumnSizingState;\n editableRows: boolean;\n enableRowSelection: boolean;\n hasRowActions: boolean;\n hasRowExpansion: boolean;\n layoutMode: ColumnLayoutMode;\n uiClassNames: DataTableUiClassNames;\n visibleLeafColumns: Array>;\n}) {\n const explicitlySizedColumnIds = React.useMemo(() => {\n const ids = new Set();\n\n for (const { column, index } of getDataTableLeafColumns(columns)) {\n if (Object.prototype.hasOwnProperty.call(column, \"size\")) {\n ids.add(getColumnId(column, index));\n }\n }\n\n if (enableRowSelection) {\n ids.add(\"__select__\");\n }\n\n if (hasRowExpansion) {\n ids.add(\"__expand__\");\n }\n\n if (hasRowActions || editableRows) {\n ids.add(\"__actions__\");\n }\n\n return ids;\n }, [\n columns,\n editableRows,\n enableRowSelection,\n hasRowActions,\n hasRowExpansion,\n ]);\n\n const minimumColumnWidths = React.useMemo(() => {\n const widths = new Map();\n\n for (const { column, index } of getDataTableLeafColumns(columns)) {\n const configuredMinWidth = getConfiguredColumnMinWidth(column);\n\n if (configuredMinWidth !== undefined) {\n widths.set(getColumnId(column, index), configuredMinWidth);\n }\n }\n\n return widths;\n }, [columns]);\n\n const pinnedColumns = React.useMemo(() => {\n const left = new Map();\n const right = new Map();\n\n let leftOffset = 0;\n for (const column of visibleLeafColumns) {\n if (getFixedSide(column) === \"left\") {\n left.set(column.id, leftOffset);\n leftOffset += getColumnLayoutSize(column);\n }\n }\n\n let rightOffset = 0;\n for (const column of [...visibleLeafColumns].reverse()) {\n if (getFixedSide(column) === \"right\") {\n right.set(column.id, rightOffset);\n rightOffset += getColumnLayoutSize(column);\n }\n }\n\n return { left, right };\n }, [visibleLeafColumns]);\n\n const fillColumnId = React.useMemo(() => {\n if (layoutMode !== \"fill\") {\n return undefined;\n }\n\n const dataColumns = visibleLeafColumns.filter(\n (column) => !isUtilityColumnId(column.id),\n );\n\n if (!dataColumns.length) {\n return undefined;\n }\n\n const allDataColumnsAreFixed = dataColumns.every(\n (column) =>\n explicitlySizedColumnIds.has(column.id) ||\n Object.prototype.hasOwnProperty.call(columnSizing, column.id),\n );\n\n return allDataColumnsAreFixed\n ? dataColumns[dataColumns.length - 1]?.id\n : undefined;\n }, [\n columnSizing,\n explicitlySizedColumnIds,\n layoutMode,\n visibleLeafColumns,\n ]);\n\n const fixedWidthColumnIds = React.useMemo(() => {\n const ids = new Set([\n ...explicitlySizedColumnIds,\n ...Object.keys(columnSizing),\n ]);\n\n if (fillColumnId) {\n ids.delete(fillColumnId);\n }\n\n return ids;\n }, [columnSizing, explicitlySizedColumnIds, fillColumnId]);\n\n const columnLayouts = React.useMemo(() => {\n const layouts = new Map();\n\n for (const column of visibleLeafColumns) {\n const isSelectionColumn = column.id === \"__select__\";\n const isExpansionColumn = column.id === \"__expand__\";\n const isActionsColumn = column.id === \"__actions__\";\n const isUtilityColumn =\n isSelectionColumn || isExpansionColumn || isActionsColumn;\n const isSpacerColumn = column.id === \"__spacer__\";\n const configuredMinWidth = minimumColumnWidths.get(column.id);\n const isFlexibleFillColumn = column.id === fillColumnId;\n const columnMinWidth =\n configuredMinWidth ??\n (isFlexibleFillColumn ? column.getSize() : undefined);\n const shouldFixWidth =\n !isSpacerColumn &&\n (layoutMode === \"fit\" ||\n isUtilityColumn ||\n fixedWidthColumnIds.has(column.id));\n const baseStyle =\n shouldFixWidth || columnMinWidth !== undefined\n ? {\n width: shouldFixWidth\n ? isUtilityColumn\n ? UTILITY_COLUMN_SIZE\n : column.getSize()\n : undefined,\n minWidth: isUtilityColumn\n ? UTILITY_COLUMN_SIZE\n : shouldFixWidth\n ? column.getSize()\n : columnMinWidth,\n maxWidth: shouldFixWidth\n ? isUtilityColumn\n ? UTILITY_COLUMN_SIZE\n : column.getSize()\n : undefined,\n }\n : undefined;\n const fixedSide = getFixedSide(column);\n const pinnedStyle = fixedSide\n ? {\n insetInlineStart:\n fixedSide === \"left\" ? pinnedColumns.left.get(column.id) : undefined,\n insetInlineEnd:\n fixedSide === \"right\"\n ? pinnedColumns.right.get(column.id)\n : undefined,\n }\n : undefined;\n const cellStyle =\n baseStyle || pinnedStyle ? { ...baseStyle, ...pinnedStyle } : undefined;\n\n layouts.set(column.id, {\n cellStyle,\n colStyle: baseStyle,\n fixedSide,\n headerStyle: cellStyle,\n isActionsColumn,\n isExpansionColumn,\n isSelectionColumn,\n isSpacerColumn,\n isUtilityColumn,\n pinnedClassName: fixedSide\n ? getPinnedColumnClassName(fixedSide, uiClassNames, {\n isUtilityColumn,\n })\n : undefined,\n utilityClassName: isUtilityColumn\n ? \"w-[50px] max-w-[50px] min-w-[50px] px-0\"\n : undefined,\n });\n }\n\n return layouts;\n }, [\n fillColumnId,\n fixedWidthColumnIds,\n layoutMode,\n minimumColumnWidths,\n pinnedColumns,\n uiClassNames,\n visibleLeafColumns,\n ]);\n\n const fillMinWidth = React.useMemo(() => {\n return visibleLeafColumns.reduce((total, column) => {\n const layout = columnLayouts.get(column.id);\n const configuredMinWidth = minimumColumnWidths.get(column.id);\n const isFlexibleFillColumn = column.id === fillColumnId;\n\n if (layout?.isUtilityColumn) {\n return total + UTILITY_COLUMN_SIZE;\n }\n\n if (fixedWidthColumnIds.has(column.id)) {\n return total + column.getSize();\n }\n\n return (\n total +\n (configuredMinWidth ?? (isFlexibleFillColumn ? column.getSize() : 0))\n );\n }, 0);\n }, [\n columnLayouts,\n fillColumnId,\n fixedWidthColumnIds,\n minimumColumnWidths,\n visibleLeafColumns,\n ]);\n\n const getColumnLayout = React.useCallback(\n (columnId: string) => columnLayouts.get(columnId) ?? EMPTY_COLUMN_LAYOUT,\n [columnLayouts],\n );\n\n return {\n columnLayouts,\n explicitlySizedColumnIds,\n fillMinWidth,\n getColumnLayout,\n };\n}\n\nfunction getColumnLayoutSize(column: Column) {\n return isUtilityColumnId(column.id) ? UTILITY_COLUMN_SIZE : column.getSize();\n}\n","import * as React from \"react\";\nimport type { Row } from \"@tanstack/react-table\";\nimport type {\n DataTableCardRendererProps,\n DataTableCardSizing,\n DataTableEditableRowsConfig,\n DataTableExpandedRowProps,\n DataTableLabels,\n DataTableRowAction,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\ntype DataTableCardViewProps = {\n rows: Array>;\n cardRenderer: (props: DataTableCardRendererProps) => React.ReactNode;\n cardSizing?: DataTableCardSizing;\n cardGridClassName?: string;\n cardClassName?: string;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n renderExpandedRow?: (\n props: DataTableExpandedRowProps,\n ) => React.ReactNode;\n hasCardTitle: boolean;\n rowSelection: Record;\n onRowSelectionChange: (rowSelection: Record) => void;\n enableRowSelection: boolean;\n editingRowId: string | null;\n onEditingRowIdChange: (rowId: string | null) => void;\n getRowClassName?: (row: TData) => string | undefined;\n onRowClick?: (context: { row: TData; rowId: string }) => void | Promise;\n getRowDraggable?: (row: TData) => boolean;\n onRowDragStart?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n onRowDragEnd?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n isLoading?: boolean;\n loadingRowCount?: number;\n labels: DataTableLabels;\n};\n\ntype DataTableRowActionsComponent = (props: {\n row: TData;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n onStartEditing: () => void;\n onCancelEditing: () => void;\n labels: DataTableLabels;\n}) => React.ReactElement | null;\n\nexport function createDataTableCardView(\n ui: DataTableUiKit,\n DataTableRowActions: DataTableRowActionsComponent,\n) {\n const uiClassNames = ui.classNames ?? {};\n const { Card, CardContent, CardHeader, Checkbox, Skeleton } = ui;\n\n return function DataTableCardView({\n rows,\n cardRenderer,\n cardSizing = \"fixed\",\n cardGridClassName,\n cardClassName,\n rowActions,\n editableRows,\n renderExpandedRow,\n hasCardTitle,\n rowSelection,\n onRowSelectionChange,\n enableRowSelection,\n editingRowId,\n onEditingRowIdChange,\n getRowClassName,\n onRowClick,\n getRowDraggable,\n onRowDragStart,\n onRowDragEnd,\n isLoading = false,\n loadingRowCount = 5,\n labels,\n }: DataTableCardViewProps) {\n const resolvedCardSizing = cardSizing ?? \"fixed\";\n const resolvedCardGridClassName =\n cardGridClassName\n ? cn(\"grid\", cardGridClassName)\n : getCardGridClassName(resolvedCardSizing);\n const cardGridClasses = cn(\n \"min-h-0 w-full gap-4 p-1\",\n uiClassNames.cardGrid,\n resolvedCardGridClassName,\n );\n const cardItemClasses = (stateClassName?: string) =>\n cn(\n \"relative min-w-0 max-w-full gap-0 overflow-hidden bg-transparent p-0\",\n getCardItemClassName(resolvedCardSizing),\n uiClassNames.cardItem,\n cardClassName,\n stateClassName,\n );\n\n if (isLoading) {\n return (\n \n {Array.from({ length: Math.max(1, loadingRowCount) }, (_, index) => (\n \n {hasCardTitle ? (\n \n \n \n \n ) : null}\n \n \n \n \n \n \n \n ))}\n \n );\n }\n\n return (\n \n {rows.map((row) => {\n const rowId = row.id;\n const originalRow = row.original;\n const isSelected = Boolean(rowSelection[rowId]);\n const isEditing = editingRowId === rowId;\n const hasCardActions = rowActions.length > 0 || Boolean(editableRows);\n const showCardGradient =\n enableRowSelection || hasCardActions || hasCardTitle;\n const showCardOverlayControls = enableRowSelection || hasCardActions;\n const handleCardActivate = () => {\n if (!onRowClick) {\n return;\n }\n\n void onRowClick({ row: originalRow, rowId });\n };\n\n return (\n ) => {\n onRowDragStart?.({ row: originalRow, rowId, event });\n }}\n onDragEnd={(event: React.DragEvent) => {\n onRowDragEnd?.({ row: originalRow, rowId, event });\n }}\n >\n {showCardGradient ? (\n \n ) : null}\n *]:min-w-0\",\n getCardRendererClassName(resolvedCardSizing),\n onRowClick && \"cursor-pointer focus-visible:outline-none\",\n )}\n onClick={(event: React.MouseEvent) => {\n const target = event.target as HTMLElement | null;\n if (target?.closest(\"[data-row-click-ignore='true']\")) {\n return;\n }\n\n handleCardActivate();\n }}\n onKeyDown={(event: React.KeyboardEvent) => {\n const target = event.target as HTMLElement | null;\n if (target?.closest(\"[data-row-click-ignore='true']\")) {\n return;\n }\n\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n handleCardActivate();\n }\n }}\n >\n {cardRenderer({\n row: originalRow,\n rowId,\n isSelected,\n onSelectedChange: (nextValue) => {\n onRowSelectionChange(\n updateRowSelection(rowSelection, rowId, nextValue),\n );\n },\n actions: rowActions,\n isEditing,\n startEditing: () => {\n onEditingRowIdChange(rowId);\n },\n cancelEditing: () => {\n onEditingRowIdChange(null);\n },\n })}\n {isEditing || !renderExpandedRow || !row.getIsExpanded()\n ? null\n : renderExpandedRow({\n row: originalRow,\n rowId,\n tableRow: row,\n })}\n \n {showCardOverlayControls ? (\n \n {enableRowSelection ? (\n \n {\n onRowSelectionChange(\n updateRowSelection(\n rowSelection,\n rowId,\n checked === true,\n ),\n );\n }}\n />\n \n ) : null}\n
    \n {hasCardActions ? (\n \n {\n onEditingRowIdChange(rowId);\n }}\n onCancelEditing={() => {\n onEditingRowIdChange(null);\n }}\n labels={labels}\n />\n
    \n ) : null}\n
    \n ) : null}\n \n );\n })}\n \n );\n };\n}\n\nfunction getCardGridClassName(cardSizing: DataTableCardSizing) {\n switch (cardSizing) {\n case \"content\":\n return \"flex flex-wrap items-start justify-start\";\n case \"fluid\":\n return \"grid grid-cols-[repeat(auto-fit,minmax(min(18rem,100%),1fr))]\";\n case \"fixed\":\n default:\n return \"grid grid-cols-[repeat(auto-fill,minmax(min(18rem,100%),18rem))] justify-start\";\n }\n}\n\nfunction getCardItemClassName(cardSizing: DataTableCardSizing) {\n switch (cardSizing) {\n case \"content\":\n return \"w-fit\";\n case \"fluid\":\n return \"w-full\";\n case \"fixed\":\n default:\n return undefined;\n }\n}\n\nfunction getCardRendererClassName(cardSizing: DataTableCardSizing) {\n switch (cardSizing) {\n case \"content\":\n return \"w-fit\";\n case \"fluid\":\n return \"w-full flex-1 [&>*]:w-full\";\n case \"fixed\":\n default:\n return \"flex-1\";\n }\n}\n\nfunction updateRowSelection(\n rowSelection: Record,\n rowId: string,\n isSelected: boolean,\n) {\n if (isSelected) {\n return {\n ...rowSelection,\n [rowId]: true,\n };\n }\n\n if (!rowSelection[rowId]) {\n return rowSelection;\n }\n\n const nextSelection = { ...rowSelection };\n delete nextSelection[rowId];\n return nextSelection;\n}\n","import { IconInbox } from \"../icons\";\nimport type { DataTableUiKit } from \"../ui-kit\";\n\nexport function createDataTableEmptyState(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n } = ui;\n\n return function DataTableEmptyState({\n title = \"No rows found\",\n description = \"Adjust your filters or create a new record to populate this table.\",\n }: {\n title?: string;\n description?: string;\n }) {\n return (\n \n \n \n \n \n {title}\n {description}\n \n \n \n );\n };\n}\n","import * as React from \"react\";\nimport { IconDatabase } from \"../icons\";\nimport type { DataTableLabels } from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\ntype DataTablePaginationProps = {\n pageIndex: number;\n pageCount: number;\n pageCountKnown: boolean;\n pageSize: number;\n totalRowCount?: number;\n rowsPerPageOptions: Array;\n onPageIndexChange: (pageIndex: number) => void;\n onPageSizeChange: (pageSize: number) => void;\n labels: DataTableLabels;\n};\n\nexport function createDataTablePagination(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectTrigger,\n SelectValue,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n function DataTablePagination({\n pageIndex,\n pageCount,\n pageCountKnown,\n pageSize,\n totalRowCount,\n rowsPerPageOptions,\n onPageIndexChange,\n onPageSizeChange,\n labels,\n }: DataTablePaginationProps) {\n const pages = pageCountKnown\n ? getVisiblePages(pageIndex, Math.max(1, pageCount))\n : [];\n const canGoPrevious = pageIndex > 0;\n const canGoNext = pageIndex + 1 < pageCount;\n const lastPageIndex = Math.max(0, pageCount - 1);\n\n return (\n
    \n \n \n {labels.recordsPerPage}\n \n {\n onPageSizeChange(Number(value));\n }}\n >\n \n \n \n \n \n {rowsPerPageOptions.map((option) => (\n \n {option}\n \n ))}\n \n \n \n
    \n\n {totalRowCount !== undefined ? (\n
    \n \n \n {totalRowCount}\n \n {labels.totalRecords(totalRowCount)}\n \n
    \n \n ) : null}\n\n
    \n \n {pageCountKnown\n ? labels.pageStatus(pageIndex, Math.max(1, pageCount))\n : (\n labels.pageStatusUnknown ??\n DATA_TABLE_DEFAULT_LABELS.pageStatusUnknown\n )(pageIndex)}\n
    \n \n \n \n \n \n ) => {\n event.preventDefault();\n if (canGoPrevious) {\n onPageIndexChange(0);\n }\n }}\n text={labels.firstPage}\n />\n \n {labels.firstPage}\n \n \n \n \n \n ) => {\n event.preventDefault();\n if (canGoPrevious) {\n onPageIndexChange(pageIndex - 1);\n }\n }}\n text={labels.previousPage}\n />\n \n {labels.previousPage}\n \n \n {pages.map((item, index) => (\n \n {item === \"ellipsis\" ? (\n \n ) : (\n ) => {\n event.preventDefault();\n onPageIndexChange(item - 1);\n }}\n >\n {item}\n \n )}\n \n ))}\n \n \n \n ) => {\n event.preventDefault();\n if (canGoNext) {\n onPageIndexChange(pageIndex + 1);\n }\n }}\n text={labels.nextPage}\n />\n \n {labels.nextPage}\n \n \n {pageCountKnown ? (\n \n \n \n ,\n ) => {\n event.preventDefault();\n if (canGoNext) {\n onPageIndexChange(lastPageIndex);\n }\n }}\n />\n \n {labels.lastPage}\n \n \n ) : null}\n \n \n \n \n );\n }\n\n function DataTableFooter(props: DataTablePaginationProps) {\n return (\n \n \n \n );\n }\n\n return {\n DataTableFooter,\n DataTablePagination,\n };\n}\n\nfunction getVisiblePages(currentPageIndex: number, pageCount: number) {\n const currentPage = currentPageIndex + 1;\n const pages = new Set([1, pageCount]);\n\n for (\n let page = Math.max(1, currentPage - 2);\n page <= Math.min(pageCount, currentPage + 2);\n page += 1\n ) {\n pages.add(page);\n }\n\n const orderedPages = Array.from(pages).sort((left, right) => left - right);\n const items: Array = [];\n\n for (let index = 0; index < orderedPages.length; index += 1) {\n const page = orderedPages[index];\n const previous = orderedPages[index - 1];\n\n if (previous && page - previous > 1) {\n items.push(\"ellipsis\");\n }\n\n items.push(page);\n }\n\n return items;\n}\n","import * as React from \"react\";\nimport { IconDots, IconEdit, IconX } from \"../icons\";\nimport type {\n DataTableEditableRowsConfig,\n DataTableLabels,\n DataTableRowAction,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { canEditRow, canUseRowAction, resolveRowActionLabel } from \"../types\";\n\ntype DataTableRowActionsProps = {\n row: TData;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n onStartEditing: () => void;\n onCancelEditing: () => void;\n labels: DataTableLabels;\n};\n\nexport function createDataTableRowActions(ui: DataTableUiKit) {\n const {\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n return function DataTableRowActions({\n row,\n rowActions,\n editableRows,\n isEditing,\n onStartEditing,\n onCancelEditing,\n labels,\n }: DataTableRowActionsProps) {\n const actions = rowActions.filter((action) => canUseRowAction(action, row));\n const stopRowClickPropagation = React.useCallback(\n (event: React.SyntheticEvent) => {\n event.stopPropagation();\n },\n [],\n );\n\n if (isEditing) {\n return (\n \n \n \n \n {labels.cancelEdit}\n \n \n {labels.cancelEdit}\n \n );\n }\n\n const allowEdit = canEditRow(editableRows, row);\n if (!actions.length && !allowEdit) {\n return null;\n }\n\n return (\n \n \n \n \n \n \n {labels.rowActions}\n \n \n \n {labels.rowActions}\n \n \n {allowEdit ? (\n \n ) => {\n event.stopPropagation();\n onStartEditing();\n }}\n >\n \n {labels.editRow}\n \n \n ) : null}\n {allowEdit && actions.length ? : null}\n {actions.length ? (\n \n {actions.map((action) => {\n const Icon = action.icon;\n return (\n ) => {\n event.stopPropagation();\n void action.onClick(row);\n }}\n >\n {Icon ? : null}\n {resolveRowActionLabel(action.label, row)}\n \n );\n })}\n \n ) : null}\n \n \n );\n };\n}\n","import * as React from \"react\";\nimport {\n IconAdjustmentsHorizontal,\n IconLayoutGrid,\n IconList,\n IconSearch,\n IconX,\n} from \"../icons\";\nimport type {\n DataTableColumnFilterType,\n DataTableColumnFixed,\n DataTableColumnVisibilityOption,\n DataTableDensity,\n DataTableLabels,\n DataTableSelectionAction,\n DataTableToolbarAction,\n DataTableToolbarVisibility,\n DataTableViewMode,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\nexport type DataTableToolbarColumnFilter = {\n id: string;\n label: string;\n type: DataTableColumnFilterType;\n value: unknown;\n placeholder?: string;\n options: Array<{ label: string; value: string }>;\n};\n\ntype DataTableToolbarProps = {\n title?: string;\n description?: string;\n toolbarQueryValue: string;\n toolbarQueryPlaceholder: string;\n onToolbarQueryValueChange: (value: string) => void;\n customToolbar?: React.ReactNode;\n compactToolbar?: React.ReactNode;\n viewMode: DataTableViewMode;\n onViewModeChange?: (viewMode: DataTableViewMode) => void;\n enableViewToggle: boolean;\n toolbarActions: Array>;\n selectionActions: Array>;\n selectedRows: Array;\n showHiddenRows: boolean;\n hiddenRowsLabel?: string;\n onShowHiddenRowsChange?: (showHiddenRows: boolean) => void;\n allRows: Array;\n columnVisibilityOptions: Array;\n onColumnVisibilityChange?: (columnId: string, visible: boolean) => void;\n enableColumnPinning: boolean;\n onColumnPinningChange: (columnId: string, side: DataTableColumnFixed | false) => void;\n columnFilters: Array;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n onClearColumnFilters: () => void;\n density: DataTableDensity;\n onDensityChange: (density: DataTableDensity) => void;\n enableDensityToggle: boolean;\n labels: DataTableLabels;\n toolbarVisibility?: DataTableToolbarVisibility;\n openFileDialog?: () => void;\n};\n\nexport function createDataTableToolbar(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Button,\n ButtonGroup,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n return function DataTableToolbar({\n title,\n description,\n toolbarQueryValue,\n toolbarQueryPlaceholder,\n onToolbarQueryValueChange,\n customToolbar,\n compactToolbar,\n viewMode,\n onViewModeChange,\n enableViewToggle,\n toolbarActions,\n selectionActions,\n selectedRows,\n showHiddenRows,\n hiddenRowsLabel,\n onShowHiddenRowsChange,\n allRows,\n columnVisibilityOptions,\n onColumnVisibilityChange,\n enableColumnPinning,\n onColumnPinningChange,\n columnFilters,\n onColumnFilterChange,\n onClearColumnFilters,\n density,\n onDensityChange,\n enableDensityToggle,\n labels,\n toolbarVisibility,\n openFileDialog,\n }: DataTableToolbarProps) {\n const compactSearchInputRef = React.useRef(null);\n const [isCompactSearchVisible, setIsCompactSearchVisible] =\n React.useState(false);\n const compactToolbarIconButtonClassName =\n uiClassNames.toolbarCompactIconButton ?? \"\";\n const primaryActions = toolbarActions.filter(\n (action) => (action.placement ?? \"primary\") === \"primary\",\n );\n const trailingActions = toolbarActions.filter(\n (action) => action.placement === \"trailing\",\n );\n const showTitle = toolbarVisibility?.title ?? true;\n const showSearch = toolbarVisibility?.search ?? true;\n const showActions = toolbarVisibility?.actions ?? true;\n const showTrailingActions = toolbarVisibility?.trailingActions ?? true;\n const showOptions = toolbarVisibility?.options ?? true;\n const showViewToggle = toolbarVisibility?.viewToggle ?? true;\n const showCustomToolbar = toolbarVisibility?.customToolbar ?? true;\n const hasVisibleTitle = showTitle && Boolean(title || description);\n const hasVisibleSearch = showSearch;\n const hasVisiblePrimaryActions = showActions && primaryActions.length > 0;\n const hasVisibleSelectionActions =\n selectedRows.length > 0 && selectionActions.length > 0;\n const hasVisibleOptions =\n showOptions &&\n (columnVisibilityOptions.some((column) => column.canHide) ||\n Boolean(onShowHiddenRowsChange && hiddenRowsLabel) ||\n enableColumnPinning ||\n enableDensityToggle);\n const hasVisibleViewToggle =\n showViewToggle && enableViewToggle && Boolean(onViewModeChange);\n const hasVisibleTrailingActions =\n showTrailingActions && trailingActions.length > 0;\n const hasVisibleCustomToolbar = showCustomToolbar && Boolean(customToolbar);\n const hasVisibleCompactToolbar =\n showCustomToolbar && Boolean(compactToolbar ?? customToolbar);\n const selectedRowCountLabel = labels.selectedRows(selectedRows.length);\n\n React.useEffect(() => {\n if (!isCompactSearchVisible) {\n return;\n }\n\n compactSearchInputRef.current?.focus();\n }, [isCompactSearchVisible]);\n\n if (\n !hasVisibleTitle &&\n !hasVisibleSearch &&\n !hasVisiblePrimaryActions &&\n !hasVisibleSelectionActions &&\n !hasVisibleOptions &&\n !hasVisibleViewToggle &&\n !hasVisibleTrailingActions &&\n !hasVisibleCustomToolbar &&\n !hasVisibleCompactToolbar\n ) {\n return null;\n }\n\n return (\n
    \n {showTitle && (title || description) ? (\n
    \n {title ? (\n

    {title}

    \n ) : null}\n {description ? (\n \n {description}\n

    \n ) : null}\n
    \n ) : null}\n\n
    \n \n {showSearch ? (\n <>\n
    \n \n ) => {\n onToolbarQueryValueChange(event.target.value);\n }}\n placeholder={toolbarQueryPlaceholder}\n />\n \n \n \n {toolbarQueryValue ? (\n \n {\n onToolbarQueryValueChange(\"\");\n }}\n aria-label={labels.clearSearch}\n title={labels.clearSearch}\n >\n \n \n \n ) : null}\n \n
    \n \n \n {\n setIsCompactSearchVisible((current) => !current);\n }}\n >\n \n {labels.searchTable}\n \n \n {labels.searchTable}\n \n \n ) : null}\n\n {showActions ? (\n
    \n {primaryActions.map((action) => {\n const collapsesToIcon =\n !action.iconOnly && Boolean(action.icon);\n const button = (\n {\n void action.onClick({\n rows: allRows,\n openFileDialog,\n });\n }}\n disabled={action.disabled}\n aria-label={action.label}\n title={action.iconOnly ? undefined : action.label}\n >\n {action.icon ? : null}\n {action.iconOnly ? (\n {action.label}\n ) : collapsesToIcon ? (\n \n {action.label}\n \n ) : (\n {action.label}\n )}\n \n );\n\n return action.iconOnly ? (\n \n {button}\n {action.label}\n \n ) : (\n button\n );\n })}\n
    \n ) : null}\n\n {hasVisibleCompactToolbar ? (\n \n {compactToolbar ?? customToolbar}\n
    \n ) : null}\n\n
    \n\n \n {selectedRows.length ? (\n \n {selectedRowCountLabel}\n
    \n ) : null}\n {selectedRows.length\n ? selectionActions.map((action) => {\n const Icon = action.icon;\n const disabled =\n typeof action.disabled === \"function\"\n ? action.disabled(selectedRows)\n : action.disabled;\n\n return (\n \n \n {\n void action.onClick({ rows: selectedRows });\n }}\n aria-label={action.label}\n >\n {Icon ? : null}\n {action.label}\n \n \n {action.label}\n \n );\n })\n : null}\n\n {hasVisibleOptions ? (\n \n \n \n \n {labels.tableOptions}\n \n \n \n {labels.tableOptions}\n \n {onShowHiddenRowsChange && hiddenRowsLabel ? (\n {\n onShowHiddenRowsChange(checked === true);\n }}\n >\n {labels.showHiddenRows(hiddenRowsLabel)}\n \n ) : null}\n \n {enableDensityToggle ? (\n <>\n \n {labels.density}\n \n {(\n [\n [\"compact\", labels.compactDensity],\n [\"comfortable\", labels.comfortableDensity],\n [\"spacious\", labels.spaciousDensity],\n ] as const\n ).map(([nextDensity, label]) => (\n {\n onDensityChange(nextDensity);\n }}\n >\n {label}\n \n ))}\n \n \n ) : null}\n {columnVisibilityOptions.some((column) => column.canHide) ? (\n <>\n \n {labels.columns}\n \n {columnVisibilityOptions\n .filter((column) => column.canHide)\n .map((column) => (\n {\n onColumnVisibilityChange?.(\n column.id,\n checked === true,\n );\n }}\n >\n {column.label}\n \n ))}\n \n \n ) : null}\n {enableColumnPinning ? (\n <>\n \n \n {labels.pinLeft} / {labels.pinRight}\n \n \n {columnVisibilityOptions.map((column) => (\n {\n event.preventDefault();\n }}\n >\n \n {column.label}\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, \"left\");\n }}\n >\n L\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, \"right\");\n }}\n >\n R\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, false);\n }}\n >\n -\n \n \n ))}\n \n \n ) : null}\n \n \n ) : null}\n\n {showViewToggle && enableViewToggle && onViewModeChange ? (\n \n \n \n {\n onViewModeChange(\"table\");\n }}\n >\n \n \n {labels.switchToTableView ??\n DATA_TABLE_DEFAULT_LABELS.switchToTableView}\n \n \n \n \n {labels.tableView ??\n DATA_TABLE_DEFAULT_LABELS.tableView}\n \n \n \n \n {\n onViewModeChange(\"card\");\n }}\n >\n \n \n {labels.switchToCardView ??\n DATA_TABLE_DEFAULT_LABELS.switchToCardView}\n \n \n \n \n {labels.cardView ??\n DATA_TABLE_DEFAULT_LABELS.cardView}\n \n \n \n ) : null}\n\n {showTrailingActions\n ? trailingActions.map((action) => {\n const collapsesToIcon =\n !action.iconOnly && Boolean(action.icon);\n const button = (\n {\n void action.onClick({\n rows: allRows,\n openFileDialog,\n });\n }}\n disabled={action.disabled}\n aria-label={action.label}\n title={action.iconOnly ? undefined : action.label}\n className={`size-7 shrink-0 ${action.iconOnly ? \"\" : `${collapsesToIcon ? \"px-0 @md/data-table:px-2.5\" : \"\"} @md/data-table:h-8 @md/data-table:w-fit`} ${action.iconOnly || collapsesToIcon ? compactToolbarIconButtonClassName : \"\"} ${uiClassNames.toolbarInputButton ?? \"\"}`}\n >\n {action.icon ? (\n \n ) : null}\n {action.iconOnly ? (\n {action.label}\n ) : collapsesToIcon ? (\n \n {action.label}\n \n ) : (\n {action.label}\n )}\n \n );\n\n return action.iconOnly ? (\n \n {button}\n {action.label}\n \n ) : (\n button\n );\n })\n : null}\n
    \n \n\n {showSearch && isCompactSearchVisible ? (\n \n \n ) => {\n onToolbarQueryValueChange(event.target.value);\n }}\n placeholder={toolbarQueryPlaceholder}\n />\n \n \n \n {toolbarQueryValue ? (\n \n {\n onToolbarQueryValueChange(\"\");\n }}\n aria-label={labels.clearSearch}\n title={labels.clearSearch}\n >\n \n \n \n ) : null}\n \n \n ) : null}\n\n {columnFilters.length ? (\n \n {columnFilters.map((filter) => (\n \n ))}\n {columnFilters.some((filter) =>\n hasColumnFilterValue(filter.value),\n ) ? (\n \n {labels.clearFilters}\n \n ) : null}\n \n ) : null}\n\n \n\n {showCustomToolbar && customToolbar ? (\n \n {customToolbar}\n \n ) : null}\n \n );\n };\n\n function ToolbarColumnFilterControl({\n filter,\n labels,\n onColumnFilterChange,\n }: {\n filter: DataTableToolbarColumnFilter;\n labels: DataTableLabels;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n }) {\n if (filter.type === \"text\") {\n return (\n \n ) => {\n onColumnFilterChange(filter.id, event.target.value);\n }}\n placeholder={filter.placeholder ?? filter.label}\n aria-label={`${labels.filters}: ${filter.label}`}\n />\n \n \n \n \n );\n }\n\n const selectedValues = Array.isArray(filter.value)\n ? filter.value.map(String)\n : typeof filter.value === \"string\" && filter.value\n ? [filter.value]\n : [];\n const selectedLabel =\n selectedValues.length === 0\n ? filter.label\n : `${filter.label}: ${\n selectedValues.length === 1\n ? (filter.options.find(\n (option) => option.value === selectedValues[0],\n )?.label ?? selectedValues[0])\n : selectedValues.length\n }`;\n\n return (\n \n \n \n \n \n {filter.label}\n \n {filter.type === \"select\" ? (\n {\n onColumnFilterChange(filter.id, \"\");\n }}\n >\n {labels.allFilterOptions ??\n DATA_TABLE_DEFAULT_LABELS.allFilterOptions}\n \n ) : null}\n {filter.options.map((option) => (\n {\n if (filter.type === \"select\") {\n onColumnFilterChange(\n filter.id,\n checked === true ? option.value : \"\",\n );\n return;\n }\n\n const nextValues = new Set(selectedValues);\n if (checked === true) {\n nextValues.add(option.value);\n } else {\n nextValues.delete(option.value);\n }\n onColumnFilterChange(filter.id, Array.from(nextValues));\n }}\n >\n {option.label}\n \n ))}\n \n \n \n );\n }\n}\n\nfunction hasColumnFilterValue(value: unknown) {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n\n return value !== undefined && value !== null && value !== \"\";\n}\n","import * as React from \"react\";\nimport { DataTableTablePanel } from \"./data-table-table-panel\";\nimport type { DataTableTablePanelProps } from \"./data-table-table-panel\";\n\nconst LazyDataTableVirtualTablePanel = React.lazy(async () => {\n const module = await import(\"./data-table-virtual-table-panel\");\n return { default: module.DataTableVirtualTablePanel };\n}) as unknown as typeof DataTableTablePanel;\n\nexport function DataTableTablePanelRouter(\n props: DataTableTablePanelProps,\n) {\n const config =\n typeof props.virtualization === \"object\"\n ? props.virtualization\n : undefined;\n const enabled =\n props.virtualization === true || config?.enabled === true;\n\n if (!enabled) {\n return ;\n }\n\n return (\n }>\n \n \n );\n}\n","import type {\n DataTableSavedView,\n DataTableSavedViewSlice,\n DataTableSavedViewsChangeOperation,\n DataTableSavedViewsConfig,\n DataTableSavedViewsPayload,\n DataTableState,\n} from \"../types\";\n\nconst STORAGE_PREFIX = \"data-table-pro:saved-views:\";\nconst DEFAULT_VERSION = 1;\nconst DEFAULT_SLICES: Array = [\n \"sorting\",\n \"columnVisibility\",\n \"columnFilters\",\n \"columnOrder\",\n \"columnPinning\",\n \"columnSizing\",\n \"density\",\n \"viewMode\",\n \"showHiddenRows\",\n \"globalFilter\",\n];\nlet fallbackId = 0;\n\nexport function readDataTableSavedViews(\n config: DataTableSavedViewsConfig | undefined,\n): Array {\n const storage = resolveStorage(config);\n if (!config || !storage) {\n return [];\n }\n\n let serialized: string | null;\n try {\n serialized = storage.getItem(getStorageKey(config.key));\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return [];\n }\n if (!serialized) {\n return [];\n }\n\n let parsed: unknown;\n try {\n parsed = (config.deserialize ?? JSON.parse)(serialized);\n } catch (error) {\n config.onError?.({ error, operation: \"deserialize\" });\n return [];\n }\n\n if (!isRecord(parsed) || !(\"version\" in parsed) || !(\"views\" in parsed)) {\n return [];\n }\n\n const targetVersion = config.version ?? DEFAULT_VERSION;\n let candidate: unknown = parsed.views;\n if (parsed.version !== targetVersion) {\n if (!config.migrate) {\n return [];\n }\n try {\n candidate = config.migrate(\n { version: parsed.version, views: parsed.views },\n targetVersion,\n );\n } catch (error) {\n config.onError?.({ error, operation: \"migrate\" });\n return [];\n }\n }\n\n if (!Array.isArray(candidate)) {\n return [];\n }\n\n return candidate\n .map((view) => validateSavedView(view, config.slices))\n .filter((view): view is DataTableSavedView => Boolean(view));\n}\n\nexport function createDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n name: string,\n state: DataTableState,\n) {\n const normalizedName = name.trim();\n if (!config || !normalizedName) {\n return undefined;\n }\n\n const now = new Date().toISOString();\n const view: DataTableSavedView = {\n id: createSavedViewId(),\n name: normalizedName,\n createdAt: now,\n updatedAt: now,\n state: selectSavedViewSlices(state, config.slices),\n };\n const views = [...readDataTableSavedViews(config), view];\n return writeViews(config, views, \"create\") ? cloneSavedView(view) : undefined;\n}\n\nexport function renameDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n id: string,\n name: string,\n) {\n const normalizedName = name.trim();\n if (!config || !normalizedName) {\n return undefined;\n }\n\n let renamed: DataTableSavedView | undefined;\n const views = readDataTableSavedViews(config).map((view) => {\n if (view.id !== id) {\n return view;\n }\n renamed = {\n ...view,\n name: normalizedName,\n updatedAt: new Date().toISOString(),\n };\n return renamed;\n });\n if (!renamed) {\n return undefined;\n }\n\n return writeViews(config, views, \"rename\")\n ? cloneSavedView(renamed)\n : undefined;\n}\n\nexport function deleteDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n id: string,\n) {\n if (!config) {\n return false;\n }\n\n const current = readDataTableSavedViews(config);\n const views = current.filter((view) => view.id !== id);\n return views.length !== current.length && writeViews(config, views, \"delete\");\n}\n\nexport function clearDataTableSavedViews(\n config: DataTableSavedViewsConfig | undefined,\n) {\n const storage = resolveStorage(config);\n if (!config || !storage) {\n return false;\n }\n\n try {\n storage.removeItem(getStorageKey(config.key));\n } catch (error) {\n config.onError?.({ error, operation: \"remove\" });\n return false;\n }\n config.onChange?.([], \"clear\");\n return true;\n}\n\nfunction writeViews(\n config: DataTableSavedViewsConfig,\n views: Array,\n operation: DataTableSavedViewsChangeOperation,\n) {\n const storage = resolveStorage(config);\n if (!storage) {\n return false;\n }\n\n let serialized: string;\n try {\n const payload: DataTableSavedViewsPayload = {\n version: config.version ?? DEFAULT_VERSION,\n views,\n };\n serialized = (config.serialize ?? JSON.stringify)(payload);\n } catch (error) {\n config.onError?.({ error, operation: \"serialize\" });\n return false;\n }\n\n try {\n storage.setItem(getStorageKey(config.key), serialized);\n } catch (error) {\n config.onError?.({ error, operation: \"write\" });\n return false;\n }\n const snapshots = views.map(cloneSavedView);\n config.onChange?.(snapshots, operation);\n return true;\n}\n\nfunction selectSavedViewSlices(\n state: DataTableState,\n slices: Array | undefined,\n) {\n const selected = new Set(slices ?? DEFAULT_SLICES);\n const snapshot: Partial = {};\n for (const slice of Object.keys(state) as Array) {\n if (selected.has(slice)) {\n Object.assign(snapshot, {\n [slice]: cloneStateSlice(slice, state[slice]),\n });\n }\n }\n return snapshot;\n}\n\nfunction validateSavedView(\n value: unknown,\n slices: Array | undefined,\n): DataTableSavedView | undefined {\n if (\n !isRecord(value) ||\n typeof value.id !== \"string\" ||\n !value.id ||\n typeof value.name !== \"string\" ||\n !value.name.trim() ||\n typeof value.createdAt !== \"string\" ||\n typeof value.updatedAt !== \"string\"\n ) {\n return undefined;\n }\n\n return {\n id: value.id,\n name: value.name.trim(),\n createdAt: value.createdAt,\n updatedAt: value.updatedAt,\n state: validateState(value.state, slices),\n };\n}\n\nfunction validateState(\n value: unknown,\n slices: Array | undefined,\n) {\n if (!isRecord(value)) {\n return {};\n }\n\n const selected = new Set(slices ?? DEFAULT_SLICES);\n const state: Partial = {};\n const sorting = validateSorting(value.sorting);\n if (selected.has(\"sorting\") && sorting) state.sorting = sorting;\n const pagination = validatePagination(value.pagination);\n if (selected.has(\"pagination\") && pagination) state.pagination = pagination;\n const rowSelection = validateBooleanRecord(value.rowSelection);\n if (selected.has(\"rowSelection\") && rowSelection) {\n state.rowSelection = rowSelection;\n }\n const visibility = validateBooleanRecord(value.columnVisibility);\n if (selected.has(\"columnVisibility\") && visibility) {\n state.columnVisibility = visibility;\n }\n const filters = validateFilters(value.columnFilters);\n if (selected.has(\"columnFilters\") && filters) state.columnFilters = filters;\n const expanded =\n value.expanded === true\n ? true\n : validateBooleanRecord(value.expanded);\n if (selected.has(\"expanded\") && expanded !== undefined) {\n state.expanded = expanded;\n }\n const order = validateStringArray(value.columnOrder);\n if (selected.has(\"columnOrder\") && order) state.columnOrder = order;\n const pinning = validatePinning(value.columnPinning);\n if (selected.has(\"columnPinning\") && pinning) {\n state.columnPinning = pinning;\n }\n const sizing = validateSizingRecord(value.columnSizing);\n if (selected.has(\"columnSizing\") && sizing) state.columnSizing = sizing;\n if (\n selected.has(\"density\") &&\n (value.density === \"compact\" ||\n value.density === \"comfortable\" ||\n value.density === \"spacious\")\n ) {\n state.density = value.density;\n }\n if (\n selected.has(\"viewMode\") &&\n (value.viewMode === \"table\" || value.viewMode === \"card\")\n ) {\n state.viewMode = value.viewMode;\n }\n if (selected.has(\"showHiddenRows\") && typeof value.showHiddenRows === \"boolean\") {\n state.showHiddenRows = value.showHiddenRows;\n }\n if (selected.has(\"globalFilter\") && typeof value.globalFilter === \"string\") {\n state.globalFilter = value.globalFilter;\n }\n return state;\n}\n\nfunction cloneSavedView(view: DataTableSavedView): DataTableSavedView {\n return {\n ...view,\n state: validateState(view.state, Object.keys(view.state) as Array),\n };\n}\n\nfunction cloneStateSlice(\n slice: DataTableSavedViewSlice,\n value: unknown,\n) {\n if (Array.isArray(value)) {\n return (value as Array).map((item) =>\n isRecord(item) ? { ...item } : item,\n );\n }\n if (isRecord(value)) {\n if (slice === \"columnPinning\") {\n return {\n left: Array.isArray(value.left)\n ? [...(value.left as Array)]\n : undefined,\n right: Array.isArray(value.right)\n ? [...(value.right as Array)]\n : undefined,\n };\n }\n return { ...value };\n }\n return value;\n}\n\nfunction validateSorting(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value\n .filter(\n (item): item is { id: string; desc?: boolean } =>\n isRecord(item) && typeof item.id === \"string\",\n )\n .map((item) => ({ id: item.id, desc: Boolean(item.desc) }));\n}\n\nfunction validatePagination(value: unknown) {\n if (\n !isRecord(value) ||\n !Number.isInteger(value.pageIndex) ||\n (value.pageIndex as number) < 0 ||\n !Number.isInteger(value.pageSize) ||\n (value.pageSize as number) < 1\n ) {\n return undefined;\n }\n return {\n pageIndex: value.pageIndex as number,\n pageSize: value.pageSize as number,\n };\n}\n\nfunction validateFilters(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value\n .filter(\n (item): item is { id: string; value: unknown } =>\n isRecord(item) &&\n typeof item.id === \"string\" &&\n Object.prototype.hasOwnProperty.call(item, \"value\"),\n )\n .map((item) => ({ id: item.id, value: item.value }));\n}\n\nfunction validatePinning(value: unknown) {\n if (!isRecord(value)) return undefined;\n return {\n left: validateStringArray(value.left) ?? [],\n right: validateStringArray(value.right) ?? [],\n };\n}\n\nfunction validateBooleanRecord(value: unknown) {\n if (!isRecord(value)) return undefined;\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, boolean] => typeof entry[1] === \"boolean\",\n ),\n );\n}\n\nfunction validateSizingRecord(value: unknown) {\n if (!isRecord(value)) return undefined;\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, number] =>\n typeof entry[1] === \"number\" &&\n Number.isFinite(entry[1]) &&\n entry[1] >= 0,\n ),\n );\n}\n\nfunction validateStringArray(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value.filter((item): item is string => typeof item === \"string\");\n}\n\nfunction resolveStorage(config: DataTableSavedViewsConfig | undefined) {\n if (!config) {\n return undefined;\n }\n if (config.storage) {\n return config.storage;\n }\n if (typeof window === \"undefined\") {\n return undefined;\n }\n try {\n return window.localStorage;\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return undefined;\n }\n}\n\nfunction createSavedViewId() {\n if (typeof globalThis.crypto?.randomUUID === \"function\") {\n return globalThis.crypto.randomUUID();\n }\n fallbackId += 1;\n return `view-${Date.now().toString(36)}-${fallbackId.toString(36)}`;\n}\n\nfunction getStorageKey(key: string) {\n return `${STORAGE_PREFIX}${key}`;\n}\n\nfunction isRecord(value: unknown): value is Record {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n","import * as React from \"react\";\nimport { IconDownload } from \"../icons\";\nimport type {\n ColumnFiltersState,\n ColumnPinningState,\n OnChangeFn,\n Table as TanStackTable,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableColumnFixed,\n DataTableLabels,\n DataTableProps,\n} from \"../types\";\nimport {\n exportDataTableCsv,\n getAccessorKey,\n getColumnId,\n getDataTableLeafColumns,\n hasFilterValue,\n normalizeColumnFilterOptions,\n startCase,\n} from \"./data-table-utils\";\n\nexport function useDataTableToolbarFeatures({\n columns,\n currentColumnFilters,\n currentColumnPinning,\n effectiveColumnVisibility,\n enableColumnFilters,\n handleColumnFiltersChange,\n handleColumnPinningChange,\n labels,\n table,\n toolbarActions,\n visibleData,\n csvExport,\n}: {\n columns: DataTableProps[\"columns\"];\n currentColumnFilters: ColumnFiltersState;\n currentColumnPinning: ColumnPinningState;\n effectiveColumnVisibility: VisibilityState;\n enableColumnFilters: boolean | undefined;\n handleColumnFiltersChange: OnChangeFn;\n handleColumnPinningChange: OnChangeFn;\n labels: DataTableLabels;\n table: TanStackTable;\n toolbarActions: DataTableProps[\"toolbarActions\"];\n visibleData: Array;\n csvExport: DataTableProps[\"csvExport\"];\n}) {\n const columnVisibilityOptions = React.useMemo(() => {\n return getDataTableLeafColumns(columns).map(({ column, index }) => {\n const id = getColumnId(column, index);\n const header = column.header;\n const accessorKey = getAccessorKey(column);\n const label =\n typeof header === \"string\"\n ? header\n : accessorKey\n ? startCase(accessorKey)\n : startCase(id);\n\n const pinned: false | DataTableColumnFixed =\n currentColumnPinning.left?.includes(id) === true\n ? \"left\"\n : currentColumnPinning.right?.includes(id) === true\n ? \"right\"\n : false;\n\n return {\n id,\n label,\n visible: effectiveColumnVisibility[id] !== false,\n canHide: column.enableHiding !== false,\n pinned,\n };\n });\n }, [columns, currentColumnPinning, effectiveColumnVisibility]);\n\n const toolbarColumnFilters = React.useMemo(() => {\n if (enableColumnFilters === false) {\n return [];\n }\n\n return getDataTableLeafColumns(columns).flatMap(({ column, index }) => {\n const filter = column.meta?.filter;\n if (!filter) {\n return [];\n }\n\n const id = getColumnId(column, index);\n const header = column.header;\n const accessorKey = getAccessorKey(column);\n const label =\n filter.label ??\n (typeof header === \"string\"\n ? header\n : accessorKey\n ? startCase(accessorKey)\n : startCase(id));\n const state = currentColumnFilters.find((item) => item.id === id);\n const rawOptions =\n typeof filter.options === \"function\"\n ? filter.options({ rows: visibleData })\n : (filter.options ?? []);\n\n return [\n {\n id,\n label,\n type: filter.type,\n value: state?.value,\n placeholder: filter.placeholder,\n options: normalizeColumnFilterOptions(rawOptions),\n },\n ];\n });\n }, [columns, currentColumnFilters, enableColumnFilters, visibleData]);\n\n const handleToolbarColumnFilterChange = React.useCallback(\n (columnId: string, value: unknown) => {\n handleColumnFiltersChange((current) => {\n const next = current.filter((filter) => filter.id !== columnId);\n if (hasFilterValue(value)) {\n next.push({ id: columnId, value });\n }\n return next;\n });\n },\n [handleColumnFiltersChange],\n );\n\n const handleClearColumnFilters = React.useCallback(() => {\n handleColumnFiltersChange([]);\n }, [handleColumnFiltersChange]);\n\n const handleToolbarColumnPinningChange = React.useCallback(\n (columnId: string, side: DataTableColumnFixed | false) => {\n handleColumnPinningChange((current) => {\n const left = (current.left ?? []).filter((id) => id !== columnId);\n const right = (current.right ?? []).filter((id) => id !== columnId);\n\n if (side === \"left\") {\n left.push(columnId);\n }\n if (side === \"right\") {\n right.push(columnId);\n }\n\n return { left, right };\n });\n },\n [handleColumnPinningChange],\n );\n\n const handleCsvExport = React.useCallback(() => {\n if (!csvExport) {\n return;\n }\n\n return exportDataTableCsv({\n csvExport,\n table,\n labels,\n });\n }, [csvExport, labels, table]);\n\n const effectiveToolbarActions = React.useMemo(() => {\n if (!csvExport) {\n return toolbarActions ?? [];\n }\n\n return [\n ...(toolbarActions ?? []),\n {\n key: \"__csv_export__\",\n label: labels.exportCsv,\n icon: IconDownload,\n placement: \"trailing\" as const,\n onClick: handleCsvExport,\n },\n ];\n }, [csvExport, handleCsvExport, labels.exportCsv, toolbarActions]);\n\n return {\n columnVisibilityOptions,\n effectiveToolbarActions,\n handleClearColumnFilters,\n handleToolbarColumnFilterChange,\n handleToolbarColumnPinningChange,\n toolbarColumnFilters,\n };\n}\n","import * as React from \"react\";\nimport { flushSync } from \"react-dom\";\nimport type {\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableActionErrorContext,\n DataTableApi,\n DataTableProps,\n DataTableState,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { createDataTableCardView } from \"./create-data-table-card-view\";\nimport { createDataTableEmptyState } from \"./create-data-table-empty-state\";\nimport { createDataTablePagination } from \"./create-data-table-pagination\";\nimport { createDataTableRowActions } from \"./create-data-table-row-actions\";\nimport { createDataTableToolbar } from \"./create-data-table-toolbar\";\nimport { DataTableCardPanel as DefaultDataTableCardPanel } from \"./data-table-card-panel\";\nimport { DataTableFooterSection } from \"./data-table-footer-section\";\nimport { DataTableTablePanelRouter as DefaultDataTableTablePanel } from \"./data-table-table-panel-router\";\nimport { DataTableToolbarSection } from \"./data-table-toolbar-section\";\nimport {\n clearDataTableSavedViews,\n createDataTableSavedView,\n deleteDataTableSavedView,\n readDataTableSavedViews,\n renameDataTableSavedView,\n} from \"./data-table-saved-views\";\nimport { resolveDataTableLabels } from \"./data-table-labels\";\nimport { useDataTableColumns } from \"./use-data-table-columns\";\nimport { useDataTableInstance } from \"./use-data-table-instance\";\nimport { useDataTableScrollViewport } from \"./use-data-table-scroll-viewport\";\nimport {\n exportDataTableCsv,\n getColumnId,\n getDataTableLeafColumns,\n getInitialColumnPinning,\n} from \"./data-table-utils\";\nimport { useDataTableState } from \"./use-data-table-state\";\nimport { clearDataTableColumnPrefs } from \"./use-data-table-column-prefs\";\nimport { useDataTableToolbarFeatures } from \"./use-data-table-toolbar-features\";\nimport { useColumnLayout } from \"./use-column-layout\";\nimport { useRowEditing } from \"./use-row-editing\";\n\ntype CreateDataTableOptions = {\n CardPanel?: typeof DefaultDataTableCardPanel;\n TablePanel?: typeof DefaultDataTableTablePanel;\n};\n\nexport function createDataTable(ui: DataTableUiKit) {\n return createDataTableWithPanels(ui);\n}\n\nexport function createDataTableWithPanels(\n ui: DataTableUiKit,\n options: CreateDataTableOptions = {},\n) {\n const DataTableCardPanel =\n options.CardPanel ?? DefaultDataTableCardPanel;\n const DataTableTablePanel =\n options.TablePanel ?? DefaultDataTableTablePanel;\n const uiClassNames = ui.classNames ?? {};\n const {\n rootClassName,\n Button,\n Checkbox,\n Input,\n ScrollArea,\n ScrollBar,\n Skeleton,\n Table,\n TableBody,\n TableCell,\n TableFooter = \"tfoot\",\n TableHead,\n TableHeader,\n TableRow,\n Tooltip,\n TooltipContent,\n TooltipProvider = React.Fragment,\n TooltipTrigger,\n } = ui;\n const DataTableEmptyState = createDataTableEmptyState(ui);\n const DataTableRowActions = createDataTableRowActions(ui);\n const { DataTableFooter } = createDataTablePagination(ui);\n const DataTableToolbar = createDataTableToolbar(ui);\n const DataTableCardView = createDataTableCardView(ui, DataTableRowActions);\n const defaultColumn = {\n minSize: 80,\n size: 180,\n maxSize: 720,\n };\n\n return function DataTable({\n columns,\n data,\n getRowId,\n children,\n title,\n description,\n toolbarQueryValue,\n onToolbarQueryValueChange,\n toolbarQueryPlaceholder,\n toolbarQueryDebounceMs,\n manualFiltering = false,\n enableToolbarQueryFiltering = true,\n globalFilterFn,\n columnFilters,\n onColumnFiltersChange,\n enableColumnFilters,\n customToolbar,\n compactToolbar,\n rowsPerPageOptions = [10, 20, 50, 100],\n totalRowCount,\n hasNextPage,\n sorting,\n onSortingChange,\n manualSorting = false,\n pageIndex,\n pageSize,\n onPageIndexChange,\n onPageSizeChange,\n pageCount,\n manualPagination = false,\n rowSelection,\n onRowSelectionChange,\n enableRowSelection = false,\n expanded,\n onExpandedChange,\n getRowCanExpand,\n renderExpandedRow,\n columnOrder,\n onColumnOrderChange,\n enableColumnReordering = false,\n columnPinning,\n onColumnPinningChange,\n enableColumnPinning = false,\n toolbarActions = [],\n selectionActions = [],\n rowActions = [],\n csvExport,\n density,\n onDensityChange,\n enableDensityToggle = false,\n columnPrefsKey,\n persistence,\n savedViews,\n initialState,\n state: unifiedState,\n onStateChange,\n apiRef,\n labels,\n summaryRows = [],\n cardRenderer,\n cardSizing,\n cardGridClassName,\n cardClassName,\n viewMode,\n onViewModeChange,\n enableViewToggle = false,\n emptyState,\n isLoading = false,\n loadingRowCount,\n getRowLoadingState,\n hiddenRows,\n showHiddenRows,\n onShowHiddenRowsChange,\n infiniteScroll,\n editableRows,\n columnVisibility,\n onColumnVisibilityChange,\n columnSizing,\n onColumnSizingChange,\n enableColumnResizing = false,\n columnResizeMode = \"onChange\",\n layoutMode = \"fill\",\n stickyHeader = true,\n showFooter = true,\n showToolbar = true,\n dir = \"ltr\",\n flexGrow = true,\n toolbarVisibility,\n className,\n tableClassName,\n tableContainerClassName,\n getRowClassName,\n onRowClick,\n onActionError,\n dragAndDrop,\n fileUpload,\n virtualization,\n }: DataTableProps) {\n const containerRef = React.useRef(null);\n const fileInputRef = React.useRef(null);\n const tableScrollContainerRef = React.useRef(null);\n const draggedColumnIdRef = React.useRef(null);\n const tableRef = React.useRef | null>(null);\n const lastSelectedRowIdRef = React.useRef(null);\n const resolvedLabels = React.useMemo(\n () => resolveDataTableLabels(labels),\n [labels],\n );\n const resolvedToolbarQueryValue =\n toolbarQueryValue ?? unifiedState?.globalFilter;\n const resolvedSorting = sorting ?? unifiedState?.sorting;\n const resolvedPageIndex =\n pageIndex ?? unifiedState?.pagination?.pageIndex;\n const resolvedPageSize = pageSize ?? unifiedState?.pagination?.pageSize;\n const resolvedRowSelection =\n rowSelection ?? unifiedState?.rowSelection;\n const resolvedColumnVisibility =\n columnVisibility ?? unifiedState?.columnVisibility;\n const resolvedColumnFilters =\n columnFilters ?? unifiedState?.columnFilters;\n const resolvedExpanded = expanded ?? unifiedState?.expanded;\n const resolvedColumnOrder =\n columnOrder ?? unifiedState?.columnOrder;\n const resolvedColumnPinning =\n columnPinning ?? unifiedState?.columnPinning;\n const resolvedColumnSizing =\n columnSizing ?? unifiedState?.columnSizing;\n const resolvedDensity = density ?? unifiedState?.density;\n const resolvedViewMode = viewMode ?? unifiedState?.viewMode;\n const resolvedShowHiddenRows =\n showHiddenRows ?? unifiedState?.showHiddenRows;\n useDataTableStateConflictWarnings(unifiedState, {\n columnFilters: columnFilters !== undefined,\n columnOrder: columnOrder !== undefined,\n columnPinning: columnPinning !== undefined,\n columnSizing: columnSizing !== undefined,\n columnVisibility: columnVisibility !== undefined,\n density: density !== undefined,\n expanded: expanded !== undefined,\n globalFilter: toolbarQueryValue !== undefined,\n pagination: pageIndex !== undefined || pageSize !== undefined,\n rowSelection: rowSelection !== undefined,\n showHiddenRows: showHiddenRows !== undefined,\n sorting: sorting !== undefined,\n viewMode: viewMode !== undefined,\n });\n const handleToolbarQueryValueChange = useDataTableStateSliceChange(\n \"globalFilter\",\n onToolbarQueryValueChange,\n onStateChange,\n );\n const handleSortingPropChange = useDataTableStateSliceChange(\n \"sorting\",\n onSortingChange,\n onStateChange,\n );\n const handleRowSelectionPropChange = useDataTableStateSliceChange(\n \"rowSelection\",\n onRowSelectionChange,\n onStateChange,\n );\n const handleColumnVisibilityPropChange = useDataTableStateSliceChange(\n \"columnVisibility\",\n onColumnVisibilityChange,\n onStateChange,\n );\n const handleColumnFiltersPropChange = useDataTableStateSliceChange(\n \"columnFilters\",\n onColumnFiltersChange,\n onStateChange,\n );\n const handleExpandedPropChange = useDataTableStateSliceChange(\n \"expanded\",\n onExpandedChange,\n onStateChange,\n );\n const handleColumnOrderPropChange = useDataTableStateSliceChange(\n \"columnOrder\",\n onColumnOrderChange,\n onStateChange,\n );\n const handleColumnPinningPropChange = useDataTableStateSliceChange(\n \"columnPinning\",\n onColumnPinningChange,\n onStateChange,\n );\n const handleColumnSizingPropChange = useDataTableStateSliceChange(\n \"columnSizing\",\n onColumnSizingChange,\n onStateChange,\n );\n const handleDensityPropChange = useDataTableStateSliceChange(\n \"density\",\n onDensityChange,\n onStateChange,\n );\n const handleViewModePropChange = useDataTableStateSliceChange(\n \"viewMode\",\n onViewModeChange,\n onStateChange,\n );\n const handleShowHiddenRowsPropChange = useDataTableStateSliceChange(\n \"showHiddenRows\",\n onShowHiddenRowsChange,\n onStateChange,\n );\n const handlePageIndexPropChange = React.useCallback(\n (nextPageIndex: number) => {\n onPageIndexChange?.(nextPageIndex);\n onStateChange?.((current) => ({\n ...current,\n pagination: {\n pageIndex: nextPageIndex,\n pageSize:\n resolvedPageSize ?? current.pagination.pageSize,\n },\n }));\n },\n [onPageIndexChange, onStateChange, resolvedPageSize],\n );\n const handlePageSizePropChange = React.useCallback(\n (nextPageSize: number) => {\n onPageSizeChange?.(nextPageSize);\n onStateChange?.((current) => ({\n ...current,\n pagination: {\n pageIndex:\n resolvedPageIndex ?? current.pagination.pageIndex,\n pageSize: nextPageSize,\n },\n }));\n },\n [onPageSizeChange, onStateChange, resolvedPageIndex],\n );\n const runAction = React.useCallback(\n (\n context: Omit, \"error\">,\n action: () => void | Promise,\n ) => {\n runDataTableAction(action, context, onActionError);\n },\n [onActionError],\n );\n const guardedRowActions = React.useMemo(\n () =>\n rowActions.map((action) => ({\n ...action,\n onClick: (row: TData) => {\n runAction(\n {\n actionKey: action.key,\n row,\n source: \"rowAction\",\n },\n () => action.onClick(row),\n );\n },\n })),\n [rowActions, runAction],\n );\n const guardedOnRowClick = React.useMemo<\n DataTableProps[\"onRowClick\"]\n >(\n () =>\n onRowClick\n ? (context) => {\n runAction(\n {\n row: context.row,\n source: \"rowClick\",\n },\n () => onRowClick(context),\n );\n }\n : undefined,\n [onRowClick, runAction],\n );\n const handleEditError = React.useCallback(\n (error: unknown, row: TData) => {\n onActionError?.({\n error,\n row,\n source: \"edit\",\n });\n },\n [onActionError],\n );\n const {\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n effectiveColumnVisibility,\n globalFilterValue,\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n localSearchValue,\n resolvedLoadingRowCount,\n resolvedToolbarQueryPlaceholder,\n selectedRows,\n setCurrentColumnFilters,\n setCurrentColumnOrder,\n setCurrentColumnPinning,\n setCurrentColumnVisibility,\n setCurrentExpanded,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n setLocalSearchValue,\n shouldRenderInitialLoading,\n tableData,\n tableGetRowId,\n visibleData,\n } = useDataTableState({\n columnFilters: resolvedColumnFilters,\n columnOrder: resolvedColumnOrder,\n columnPinning: resolvedColumnPinning,\n columnSizing: resolvedColumnSizing,\n columnPrefsKey,\n persistence,\n columnVisibility: resolvedColumnVisibility,\n columns,\n containerRef,\n data,\n density: resolvedDensity,\n enableRowSelection,\n enableToolbarQueryFiltering,\n expanded: resolvedExpanded,\n getRowId,\n hiddenRows,\n isLoading,\n loadingRowCount,\n manualFiltering,\n initialState,\n onColumnFiltersChange: handleColumnFiltersPropChange,\n onColumnOrderChange: handleColumnOrderPropChange,\n onColumnPinningChange: handleColumnPinningPropChange,\n onColumnSizingChange: handleColumnSizingPropChange,\n onColumnVisibilityChange: handleColumnVisibilityPropChange,\n onDensityChange: handleDensityPropChange,\n onExpandedChange: handleExpandedPropChange,\n onPageIndexChange: handlePageIndexPropChange,\n onRowSelectionChange: handleRowSelectionPropChange,\n onShowHiddenRowsChange: handleShowHiddenRowsPropChange,\n onSortingChange: handleSortingPropChange,\n onToolbarQueryValueChange: handleToolbarQueryValueChange,\n onViewModeChange: handleViewModePropChange,\n pageIndex: resolvedPageIndex,\n pageSize: resolvedPageSize,\n resolvedLabels,\n rowSelection: resolvedRowSelection,\n rowsPerPageOptions,\n selectionActions,\n showHiddenRows: resolvedShowHiddenRows,\n sorting: resolvedSorting,\n toolbarQueryDebounceMs,\n toolbarQueryPlaceholder,\n toolbarQueryValue: resolvedToolbarQueryValue,\n viewMode: resolvedViewMode,\n });\n const {\n cancelEditing,\n draftValues,\n editingRowId,\n isSavingEdit,\n saveEdit,\n setDraftValues,\n setEditingRowId,\n startEditingRow,\n } = useRowEditing({\n columns,\n editableRows,\n onError: handleEditError,\n });\n const { viewportElement: tableScrollElement, viewportHeight } =\n useDataTableScrollViewport(tableScrollContainerRef, currentViewMode);\n const openFileDialog = React.useCallback(() => {\n if (fileUpload?.disabled) {\n return;\n }\n\n fileInputRef.current?.click();\n }, [fileUpload?.disabled]);\n const handleSelectedFiles = React.useCallback(\n (files: FileList | Array) => {\n runAction(\n {\n source: \"fileUpload\",\n },\n () => fileUpload?.onFilesSelected(files),\n );\n },\n [fileUpload, runAction],\n );\n\n const tableColumns = useDataTableColumns({\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n editingRowId,\n enableRowSelection,\n getRowCanExpand,\n isSavingEdit,\n labels: resolvedLabels,\n lastSelectedRowIdRef,\n renderExpandedRow,\n rowActions: guardedRowActions,\n saveEdit,\n startEditingRow,\n tableRef,\n });\n\n const {\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n isPageCountKnown,\n renderedRows,\n reorderColumn,\n rowsToRender,\n sentinelRef,\n table,\n virtualPaddingBottom,\n virtualPaddingTop,\n visibleLeafColumns,\n } = useDataTableInstance({\n autoResetPageIndex: false,\n columnResizeMode,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentColumnSizing,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentSorting,\n currentViewMode,\n defaultColumn,\n effectiveColumnVisibility,\n enableColumnResizing,\n enableRowSelection,\n getRowCanExpand,\n globalFilterFn,\n globalFilterValue,\n hasNextPage,\n handleColumnFiltersChange: setCurrentColumnFilters,\n handleColumnOrderChange: setCurrentColumnOrder,\n handleColumnPinningChange: setCurrentColumnPinning,\n handleColumnVisibilityChange: setCurrentColumnVisibility,\n handleExpandedChange: setCurrentExpanded,\n infiniteScroll,\n manualFiltering,\n manualPagination,\n manualSorting,\n onActionError,\n onPageIndexChange: handlePageIndexPropChange,\n onPageSizeChange: handlePageSizePropChange,\n pageCount,\n pageIndex: resolvedPageIndex,\n pageSize: resolvedPageSize,\n renderExpandedRow,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n shouldRenderInitialLoading,\n tableColumns,\n tableData,\n tableGetRowId,\n tableRef,\n tableScrollElement,\n totalRowCount,\n virtualization,\n viewportHeight,\n });\n const columnLayout = useColumnLayout({\n columns,\n columnSizing: currentColumnSizing,\n editableRows: Boolean(editableRows),\n enableRowSelection,\n hasRowActions: rowActions.length > 0,\n hasRowExpansion: Boolean(renderExpandedRow),\n layoutMode,\n uiClassNames,\n visibleLeafColumns,\n });\n const { explicitlySizedColumnIds, fillMinWidth, getColumnLayout } =\n columnLayout;\n const explicitCustomCellColumnIds = React.useMemo(() => {\n return new Set(\n getDataTableLeafColumns(columns).flatMap(({ column, index }) => {\n return Object.prototype.hasOwnProperty.call(column, \"cell\") &&\n typeof column.cell === \"function\"\n ? [getColumnId(column, index)]\n : [];\n }),\n );\n }, [columns]);\n const visibleLeafColumnCount = visibleLeafColumns.length;\n const bodyRowComponents = React.useMemo(\n () => ({\n Checkbox,\n Input,\n Skeleton,\n TableCell,\n TableRow,\n }),\n [],\n );\n const hasCardTitle = React.useMemo(\n () =>\n getDataTableLeafColumns(columns).some(\n ({ column }) => column.meta?.cardTitle,\n ),\n [columns],\n );\n const primeColumnForResize = React.useCallback(\n (columnId: string, currentSize: number) => {\n if (\n explicitlySizedColumnIds.has(columnId) ||\n Object.prototype.hasOwnProperty.call(\n table.getState().columnSizing,\n columnId,\n )\n ) {\n return;\n }\n\n flushSync(() => {\n table.setColumnSizing((current) => ({\n ...current,\n [columnId]: currentSize,\n }));\n });\n },\n [explicitlySizedColumnIds, table],\n );\n const resetColumnSize = React.useCallback(\n (columnId: string) => {\n if (explicitlySizedColumnIds.has(columnId)) {\n table.getColumn(columnId)?.resetSize();\n return;\n }\n\n table.setColumnSizing((current) => {\n if (!Object.prototype.hasOwnProperty.call(current, columnId)) {\n return current;\n }\n\n const next = { ...current };\n delete next[columnId];\n return next;\n });\n },\n [explicitlySizedColumnIds, table],\n );\n\n const filteredData = table\n .getFilteredRowModel()\n .rows.map((row) => row.original);\n const emptyNode =\n typeof emptyState === \"function\"\n ? emptyState({\n rows: filteredData,\n toolbarQueryValue: localSearchValue,\n })\n : emptyState;\n const {\n columnVisibilityOptions,\n effectiveToolbarActions,\n handleClearColumnFilters,\n handleToolbarColumnFilterChange,\n handleToolbarColumnPinningChange,\n toolbarColumnFilters,\n } = useDataTableToolbarFeatures({\n columns,\n currentColumnFilters,\n currentColumnPinning,\n csvExport,\n effectiveColumnVisibility,\n enableColumnFilters,\n handleColumnFiltersChange: setCurrentColumnFilters,\n handleColumnPinningChange: setCurrentColumnPinning,\n labels: resolvedLabels,\n table,\n toolbarActions,\n visibleData,\n });\n const guardedToolbarActions = React.useMemo(\n () =>\n effectiveToolbarActions.map((action) => ({\n ...action,\n onClick: (context: {\n rows: Array;\n openFileDialog?: () => void;\n }) => {\n runAction(\n {\n actionKey: action.key,\n source: \"toolbarAction\",\n },\n () => action.onClick(context),\n );\n },\n })),\n [effectiveToolbarActions, runAction],\n );\n const guardedSelectionActions = React.useMemo(\n () =>\n selectionActions.map((action) => ({\n ...action,\n onClick: (context: Parameters[0]) => {\n runAction(\n {\n actionKey: action.key,\n source: \"selectionAction\",\n },\n () => action.onClick(context),\n );\n },\n })),\n [runAction, selectionActions],\n );\n const currentDataTableState = React.useMemo(\n () => ({\n sorting: currentSorting,\n pagination: currentPagination,\n rowSelection: currentRowSelection,\n columnVisibility: currentColumnVisibility,\n columnFilters: currentColumnFilters,\n expanded: currentExpanded,\n columnOrder: currentColumnOrder,\n columnPinning: currentColumnPinning,\n columnSizing: currentColumnSizing,\n density: currentDensity,\n viewMode: currentViewMode,\n showHiddenRows: currentShowHiddenRows,\n globalFilter: localSearchValue,\n }),\n [\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n localSearchValue,\n ],\n );\n const getCurrentState = React.useCallback(\n () => cloneDataTableState(currentDataTableState),\n [currentDataTableState],\n );\n const restoreState = React.useCallback(\n (nextState: Partial) => {\n if (nextState.sorting !== undefined) {\n table.setSorting(nextState.sorting);\n }\n if (nextState.pagination !== undefined) {\n table.setPagination(nextState.pagination);\n }\n if (nextState.rowSelection !== undefined) {\n table.setRowSelection(nextState.rowSelection);\n }\n if (nextState.columnVisibility !== undefined) {\n table.setColumnVisibility(nextState.columnVisibility);\n }\n if (nextState.columnFilters !== undefined) {\n table.setColumnFilters(nextState.columnFilters);\n }\n if (nextState.expanded !== undefined) {\n table.setExpanded(nextState.expanded);\n }\n if (nextState.columnOrder !== undefined) {\n table.setColumnOrder(nextState.columnOrder);\n }\n if (nextState.columnPinning !== undefined) {\n table.setColumnPinning(nextState.columnPinning);\n }\n if (nextState.columnSizing !== undefined) {\n table.setColumnSizing(nextState.columnSizing);\n }\n if (nextState.density !== undefined) {\n handleDensityChange(nextState.density);\n }\n if (nextState.viewMode !== undefined) {\n handleViewModeChange(nextState.viewMode);\n }\n if (nextState.showHiddenRows !== undefined) {\n handleShowHiddenRowsChange(nextState.showHiddenRows);\n }\n if (nextState.globalFilter !== undefined) {\n setLocalSearchValue(nextState.globalFilter);\n }\n },\n [\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n setLocalSearchValue,\n table,\n ],\n );\n const clearPersistedState = React.useCallback(\n () => clearDataTableColumnPrefs(persistence ?? columnPrefsKey),\n [columnPrefsKey, persistence],\n );\n const resetColumnLayout = React.useCallback<\n DataTableApi[\"resetColumnLayout\"]\n >(\n (options) => {\n if (options?.clearPersistence) {\n clearPersistedState();\n }\n restoreState({\n columnVisibility: initialState?.columnVisibility ?? {},\n columnOrder: initialState?.columnOrder ?? [],\n columnPinning:\n initialState?.columnPinning ?? getInitialColumnPinning(columns),\n columnSizing: initialState?.columnSizing ?? {},\n });\n },\n [\n clearPersistedState,\n columns,\n initialState,\n restoreState,\n ],\n );\n const resetState = React.useCallback[\"resetState\"]>(\n (options) => {\n if (options?.clearPersistence) {\n clearPersistedState();\n }\n restoreState({\n sorting: initialState?.sorting ?? [],\n pagination: initialState?.pagination ?? {\n pageIndex: 0,\n pageSize: rowsPerPageOptions[0] ?? 20,\n },\n rowSelection: initialState?.rowSelection ?? {},\n columnVisibility: initialState?.columnVisibility ?? {},\n columnFilters: initialState?.columnFilters ?? [],\n expanded: initialState?.expanded ?? {},\n columnOrder: initialState?.columnOrder ?? [],\n columnPinning:\n initialState?.columnPinning ?? getInitialColumnPinning(columns),\n columnSizing: initialState?.columnSizing ?? {},\n density: initialState?.density ?? \"comfortable\",\n viewMode: initialState?.viewMode ?? \"table\",\n showHiddenRows: initialState?.showHiddenRows ?? false,\n globalFilter: initialState?.globalFilter ?? \"\",\n });\n },\n [\n clearPersistedState,\n columns,\n initialState,\n restoreState,\n rowsPerPageOptions,\n ],\n );\n const getSavedViews = React.useCallback(\n () => readDataTableSavedViews(savedViews),\n [savedViews],\n );\n const createSavedView = React.useCallback<\n DataTableApi[\"createSavedView\"]\n >(\n (name) =>\n createDataTableSavedView(savedViews, name, getCurrentState()),\n [getCurrentState, savedViews],\n );\n const applySavedView = React.useCallback<\n DataTableApi[\"applySavedView\"]\n >(\n (id) => {\n const view = readDataTableSavedViews(savedViews).find(\n (candidate) => candidate.id === id,\n );\n if (!view) {\n return false;\n }\n restoreState(view.state);\n savedViews?.onApply?.(view);\n return true;\n },\n [restoreState, savedViews],\n );\n const renameSavedView = React.useCallback<\n DataTableApi[\"renameSavedView\"]\n >(\n (id, name) => renameDataTableSavedView(savedViews, id, name),\n [savedViews],\n );\n const deleteSavedView = React.useCallback<\n DataTableApi[\"deleteSavedView\"]\n >(\n (id) => deleteDataTableSavedView(savedViews, id),\n [savedViews],\n );\n const clearSavedViews = React.useCallback(\n () => clearDataTableSavedViews(savedViews),\n [savedViews],\n );\n const exportCsvFromApi = React.useCallback<\n DataTableApi[\"exportCsv\"]\n >(\n (options) =>\n exportDataTableCsv({\n csvExport: options ?? (csvExport || true),\n labels: resolvedLabels,\n table,\n }),\n [csvExport, resolvedLabels, table],\n );\n React.useImperativeHandle(\n apiRef,\n () => ({\n getTable: () => tableRef.current,\n getState: getCurrentState,\n snapshot: getCurrentState,\n restore: restoreState,\n resetColumnLayout,\n resetState,\n clearPersistedState,\n getSavedViews,\n createSavedView,\n applySavedView,\n renameSavedView,\n deleteSavedView,\n clearSavedViews,\n focus: () => {\n containerRef.current?.focus();\n },\n scrollToRow: (rowId) =>\n scrollDataTableElementIntoView(containerRef.current, \"row\", rowId),\n scrollToColumn: (columnId) =>\n scrollDataTableElementIntoView(\n containerRef.current,\n \"column\",\n columnId,\n ),\n exportCsv: exportCsvFromApi,\n }),\n [\n applySavedView,\n clearPersistedState,\n clearSavedViews,\n createSavedView,\n deleteSavedView,\n exportCsvFromApi,\n getSavedViews,\n getCurrentState,\n renameSavedView,\n resetColumnLayout,\n resetState,\n restoreState,\n ],\n );\n\n return (\n \n \n {fileUpload ? (\n {\n const files = event.currentTarget.files;\n if (files?.length) {\n handleSelectedFiles(files);\n }\n event.currentTarget.value = \"\";\n }}\n />\n ) : null}\n \n \n {showToolbar ? (\n \n ) : null}\n\n \n {currentViewMode === \"card\" && cardRenderer ? (\n \n ) : (\n \n )}\n \n \n {children}\n \n \n \n \n \n );\n };\n}\n\nfunction runDataTableAction(\n action: () => void | Promise,\n context: Omit, \"error\">,\n onActionError: DataTableProps[\"onActionError\"],\n) {\n let result: void | Promise;\n try {\n result = action();\n } catch (error) {\n onActionError?.({ ...context, error });\n return;\n }\n\n void Promise.resolve(result).catch((error: unknown) => {\n onActionError?.({ ...context, error });\n });\n}\n\nfunction useDataTableStateSliceChange(\n key: K,\n onLegacyChange: ((value: DataTableState[K]) => void) | undefined,\n onStateChange: DataTableProps[\"onStateChange\"],\n) {\n const handleChange = React.useCallback(\n (value: DataTableState[K]) => {\n onLegacyChange?.(value);\n onStateChange?.((current) => ({\n ...current,\n [key]: value,\n }));\n },\n [key, onLegacyChange, onStateChange],\n );\n\n return onLegacyChange || onStateChange ? handleChange : undefined;\n}\n\nfunction useDataTableStateConflictWarnings(\n state: Partial | undefined,\n legacySlices: Record,\n) {\n const warnedSlicesRef = React.useRef(new Set());\n\n React.useEffect(() => {\n if (!state || !isDevelopmentEnvironment()) {\n return;\n }\n\n for (const key of Object.keys(legacySlices) as Array<\n keyof DataTableState\n >) {\n if (\n state[key] === undefined ||\n !legacySlices[key] ||\n warnedSlicesRef.current.has(key)\n ) {\n continue;\n }\n\n warnedSlicesRef.current.add(key);\n console.warn(\n `[data-table-pro] Both state.${key} and its legacy controlled prop were provided. The legacy prop takes precedence during the 4.x compatibility window.`,\n );\n }\n }, [legacySlices, state]);\n}\n\nfunction isDevelopmentEnvironment() {\n const nodeEnvironment = (\n globalThis as {\n process?: { env?: { NODE_ENV?: string } };\n }\n ).process?.env?.NODE_ENV;\n\n return nodeEnvironment !== \"production\";\n}\n\nfunction cloneDataTableState(state: DataTableState): DataTableState {\n return {\n sorting: state.sorting.map((item) => ({ ...item })),\n pagination: { ...state.pagination },\n rowSelection: { ...state.rowSelection },\n columnVisibility: { ...state.columnVisibility },\n columnFilters: state.columnFilters.map((item) => ({ ...item })),\n expanded:\n typeof state.expanded === \"boolean\"\n ? state.expanded\n : { ...state.expanded },\n columnOrder: [...state.columnOrder],\n columnPinning: {\n left: state.columnPinning.left\n ? [...state.columnPinning.left]\n : undefined,\n right: state.columnPinning.right\n ? [...state.columnPinning.right]\n : undefined,\n },\n columnSizing: { ...state.columnSizing },\n density: state.density,\n viewMode: state.viewMode,\n showHiddenRows: state.showHiddenRows,\n globalFilter: state.globalFilter,\n };\n}\n\nfunction scrollDataTableElementIntoView(\n container: HTMLDivElement | null,\n kind: \"row\" | \"column\",\n value: string,\n) {\n if (!container) {\n return false;\n }\n\n const attribute = kind === \"row\" ? \"data-row-id\" : \"data-column-id\";\n const element = Array.from(\n container.querySelectorAll(`[${attribute}]`),\n ).find((candidate) => candidate.getAttribute(attribute) === value);\n if (!element) {\n return false;\n }\n\n element.scrollIntoView?.({ block: \"nearest\", inline: \"nearest\" });\n return true;\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-A2VV3NIL.js b/dist/chunk-5QNEI6BL.js similarity index 96% rename from dist/chunk-A2VV3NIL.js rename to dist/chunk-5QNEI6BL.js index 37f9d4f..de434d4 100644 --- a/dist/chunk-A2VV3NIL.js +++ b/dist/chunk-5QNEI6BL.js @@ -1,2 +1,2 @@ -import {X as X$1,a as a$1,c,d,f,h,i,j,k,l,m,n,p,o,z,w,y,x,A,B,D,C,E,F,G,H,I,J,L,b,N,O,P,Q,R,T,S,U,W,q,r,s,t,u,v}from'./chunk-7EXRF7VC.js';import {a}from'./chunk-PFB5LOU7.js';import'react';import {jsx}from'react/jsx-runtime';function e(j,q){return function({className:J,...Q}){return jsx(j,{className:a(q,J),...Q})}}var X=e(a$1,"rounded-field border-field-border shadow-field data-[variant=default]:bg-accent data-[variant=default]:text-accent-foreground data-[variant=outline]:border-field-border data-[variant=outline]:bg-field data-[variant=outline]:hover:bg-field-hover data-[variant=secondary]:bg-default data-[variant=secondary]:text-default-foreground data-[variant=ghost]:hover:bg-default data-[variant=destructive]:bg-danger-soft data-[variant=destructive]:text-danger"),Y=e(c,"rounded-2xl border border-separator bg-surface text-surface-foreground shadow-surface ring-0"),Z=e(d,"px-5 pt-5 pb-3"),ee=e(f,"px-5 pb-5"),re=e(h,"rounded-field border-field-border bg-field ring-focus/40 data-checked:bg-accent data-checked:text-accent-foreground data-checked:ring-focus"),te=e(i,"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden **:data-[slot$=-item]:focus:bg-default **:data-[slot$=-item]:data-highlighted:bg-default **:data-[slot$=-separator]:bg-separator **:data-[slot$=-trigger]:focus:bg-default"),oe=e(j,"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground data-[variant=destructive]:text-danger data-[variant=destructive]:focus:bg-danger-soft"),ae=e(k,"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground"),ne=e(l,"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground"),de=e(m,"text-muted"),ie=e(n,"bg-separator"),le=e(p,"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden"),se=e(o,"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground data-open:bg-default data-open:text-overlay-foreground"),ue=e(z,"rounded-field border-field-border bg-field text-field-foreground shadow-field placeholder:text-field-placeholder"),ce=e(w,"rounded-field border-field-border bg-field text-field-foreground shadow-field"),be=e(y,"text-muted"),ge=e(x,"bg-transparent"),pe=e(A,"justify-end"),fe=e(B,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover data-[active=true]:bg-accent data-[active=true]:text-accent-foreground"),me=e(D,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover"),ve=e(C,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover"),xe=e(E,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover"),Pe=e(F,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover"),He=e(G,"rounded-2xl"),ye=e(H,"[&>[data-slot=scroll-area-thumb]]:bg-default-500"),he=e(I,"rounded-field border-field-border bg-field text-field-foreground shadow-field"),Ce=e(J,"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden"),Te=e(L,"rounded-xl focus:bg-default"),we=e(b,"bg-separator"),Se=e(N,"rounded-xl bg-default"),Ie=e(O,"rounded-2xl text-foreground"),De=e(P,"[&_tr]:border-separator"),Me=e(Q,""),Ee=e(R,"border-separator bg-surface-secondary"),ke=e(T,"h-11 border-separator text-muted font-semibold"),Be=e(S,"border-separator hover:bg-default data-[state=selected]:bg-accent-soft"),Ge=e(U,"py-2.5"),Ae=e(W,"rounded-xl bg-overlay text-overlay-foreground ring-1 ring-separator shadow-overlay [&>svg]:bg-overlay [&>svg]:fill-overlay"),Le=e(q,"rounded-2xl border-separator bg-surface shadow-surface"),Re=e(r,""),Ne=e(s,"[&[data-variant=icon]]:rounded-2xl [&[data-variant=icon]]:bg-accent-soft [&[data-variant=icon]]:text-accent-soft-foreground"),Fe=e(t,"text-foreground"),Ue=e(u,"text-muted"),ze=e(v,""),We={...X$1,rootClassName:"dtp-heroui",classNames:{card:"hover:bg-default data-[state=selected]:bg-accent-soft",cardGrid:"bg-transparent",cardItem:"min-w-0",cardOverlay:"from-surface/95 via-surface/85 to-transparent",cardScrollArea:"bg-transparent",cardSelected:"bg-accent-soft ring-accent",cardUnselected:"border-separator",cardViewport:"bg-transparent",cellBorder:"border-separator/70",columnGroupHeader:"bg-default/50 font-semibold",dragActive:"rounded-2xl border-dashed border-accent",emptyState:"border-separator bg-surface",footer:"border-separator bg-surface text-surface-foreground",headerSortIcon:"text-muted",mutedText:"text-muted",paginationSelectTrigger:"border-field-border bg-field",paginationTotal:"text-muted",pinnedColumn:"border-separator",pinnedUtilityColumn:"bg-surface",resizeHandle:"after:bg-separator hover:after:bg-accent",resizeHandleActive:"after:bg-accent",row:"hover:bg-default data-[state=selected]:!bg-accent-soft",rowSelected:"!bg-accent-soft",tableContainer:"border-separator bg-surface text-surface-foreground",tableScrollArea:"bg-surface",tableStickyHeader:"sticky top-0 z-30 bg-surface/95 backdrop-blur [&_th]:border-separator [&_th]:bg-surface/95",toolbarCompactIconButton:"size-7",toolbarIconButton:"text-muted hover:text-foreground",toolbarInputButton:"bg-field"},Button:X,Card:Y,CardContent:ee,CardHeader:Z,Checkbox:re,DropdownMenuCheckboxItem:ae,DropdownMenuContent:te,DropdownMenuItem:oe,DropdownMenuLabel:de,DropdownMenuRadioItem:ne,DropdownMenuSeparator:ie,DropdownMenuSubContent:le,DropdownMenuSubTrigger:se,Empty:Le,EmptyContent:ze,EmptyDescription:Ue,EmptyHeader:Re,EmptyMedia:Ne,EmptyTitle:Fe,Input:ue,InputGroup:ce,InputGroupAddon:be,InputGroupInput:ge,Pagination:pe,PaginationFirst:me,PaginationLast:Pe,PaginationLink:fe,PaginationNext:xe,PaginationPrevious:ve,ScrollArea:He,ScrollBar:ye,SelectContent:Ce,SelectItem:Te,SelectTrigger:he,Separator:we,Skeleton:Se,Table:Ie,TableBody:Me,TableCell:Ge,TableFooter:Ee,TableHead:ke,TableHeader:De,TableRow:Be,TooltipContent:Ae};export{We as a};//# sourceMappingURL=chunk-A2VV3NIL.js.map -//# sourceMappingURL=chunk-A2VV3NIL.js.map \ No newline at end of file +import {X as X$1,a as a$1,c,d,f,h,i,j,k,l,m,n,p,o,z,w,y,x,A,B,D,C,E,F,G,H,I,J,L,b,N,O,P,Q,R,T,S,U,W,q,r,s,t,u,v}from'./chunk-ERWHHOBD.js';import {a}from'./chunk-674VSOYY.js';import'react';import {jsx}from'react/jsx-runtime';function e(j,q){return function({className:J,...Q}){return jsx(j,{className:a(q,J),...Q})}}var X=e(a$1,"rounded-field border-field-border shadow-field data-[variant=default]:bg-accent data-[variant=default]:text-accent-foreground data-[variant=outline]:border-field-border data-[variant=outline]:bg-field data-[variant=outline]:hover:bg-field-hover data-[variant=secondary]:bg-default data-[variant=secondary]:text-default-foreground data-[variant=ghost]:hover:bg-default data-[variant=destructive]:bg-danger-soft data-[variant=destructive]:text-danger"),Y=e(c,"rounded-2xl border border-separator bg-surface text-surface-foreground shadow-surface ring-0"),Z=e(d,"px-5 pt-5 pb-3"),ee=e(f,"px-5 pb-5"),re=e(h,"rounded-field border-field-border bg-field ring-focus/40 data-checked:bg-accent data-checked:text-accent-foreground data-checked:ring-focus"),te=e(i,"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden **:data-[slot$=-item]:focus:bg-default **:data-[slot$=-item]:data-highlighted:bg-default **:data-[slot$=-separator]:bg-separator **:data-[slot$=-trigger]:focus:bg-default"),oe=e(j,"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground data-[variant=destructive]:text-danger data-[variant=destructive]:focus:bg-danger-soft"),ae=e(k,"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground"),ne=e(l,"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground"),de=e(m,"text-muted"),ie=e(n,"bg-separator"),le=e(p,"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden"),se=e(o,"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground data-open:bg-default data-open:text-overlay-foreground"),ue=e(z,"rounded-field border-field-border bg-field text-field-foreground shadow-field placeholder:text-field-placeholder"),ce=e(w,"rounded-field border-field-border bg-field text-field-foreground shadow-field"),be=e(y,"text-muted"),ge=e(x,"bg-transparent"),pe=e(A,"justify-end"),fe=e(B,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover data-[active=true]:bg-accent data-[active=true]:text-accent-foreground"),me=e(D,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover"),ve=e(C,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover"),xe=e(E,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover"),Pe=e(F,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover"),He=e(G,"rounded-2xl"),ye=e(H,"[&>[data-slot=scroll-area-thumb]]:bg-default-500"),he=e(I,"rounded-field border-field-border bg-field text-field-foreground shadow-field"),Ce=e(J,"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden"),Te=e(L,"rounded-xl focus:bg-default"),we=e(b,"bg-separator"),Se=e(N,"rounded-xl bg-default"),Ie=e(O,"rounded-2xl text-foreground"),De=e(P,"[&_tr]:border-separator"),Me=e(Q,""),Ee=e(R,"border-separator bg-surface-secondary"),ke=e(T,"h-11 border-separator text-muted font-semibold"),Be=e(S,"border-separator hover:bg-default data-[state=selected]:bg-accent-soft"),Ge=e(U,"py-2.5"),Ae=e(W,"rounded-xl bg-overlay text-overlay-foreground ring-1 ring-separator shadow-overlay [&>svg]:bg-overlay [&>svg]:fill-overlay"),Le=e(q,"rounded-2xl border-separator bg-surface shadow-surface"),Re=e(r,""),Ne=e(s,"[&[data-variant=icon]]:rounded-2xl [&[data-variant=icon]]:bg-accent-soft [&[data-variant=icon]]:text-accent-soft-foreground"),Fe=e(t,"text-foreground"),Ue=e(u,"text-muted"),ze=e(v,""),We={...X$1,rootClassName:"dtp-heroui",classNames:{card:"hover:bg-default data-[state=selected]:bg-accent-soft",cardGrid:"bg-transparent",cardItem:"min-w-0",cardOverlay:"from-surface/95 via-surface/85 to-transparent",cardScrollArea:"bg-transparent",cardSelected:"bg-accent-soft ring-accent",cardUnselected:"border-separator",cardViewport:"bg-transparent",cellBorder:"border-separator/70",columnGroupHeader:"bg-default/50 font-semibold",dragActive:"rounded-2xl border-dashed border-accent",emptyState:"border-separator bg-surface",footer:"border-separator bg-surface text-surface-foreground",headerSortIcon:"text-muted",mutedText:"text-muted",paginationSelectTrigger:"border-field-border bg-field",paginationTotal:"text-muted",pinnedColumn:"border-separator",pinnedUtilityColumn:"bg-surface",resizeHandle:"after:bg-separator hover:after:bg-accent",resizeHandleActive:"after:bg-accent",row:"hover:bg-default data-[state=selected]:!bg-accent-soft",rowSelected:"!bg-accent-soft",tableContainer:"border-separator bg-surface text-surface-foreground",tableScrollArea:"bg-surface",tableStickyHeader:"sticky top-0 z-30 bg-surface/95 backdrop-blur [&_th]:border-separator [&_th]:bg-surface/95",toolbarCompactIconButton:"size-7",toolbarIconButton:"text-muted hover:text-foreground",toolbarInputButton:"bg-field"},Button:X,Card:Y,CardContent:ee,CardHeader:Z,Checkbox:re,DropdownMenuCheckboxItem:ae,DropdownMenuContent:te,DropdownMenuItem:oe,DropdownMenuLabel:de,DropdownMenuRadioItem:ne,DropdownMenuSeparator:ie,DropdownMenuSubContent:le,DropdownMenuSubTrigger:se,Empty:Le,EmptyContent:ze,EmptyDescription:Ue,EmptyHeader:Re,EmptyMedia:Ne,EmptyTitle:Fe,Input:ue,InputGroup:ce,InputGroupAddon:be,InputGroupInput:ge,Pagination:pe,PaginationFirst:me,PaginationLast:Pe,PaginationLink:fe,PaginationNext:xe,PaginationPrevious:ve,ScrollArea:He,ScrollBar:ye,SelectContent:Ce,SelectItem:Te,SelectTrigger:he,Separator:we,Skeleton:Se,Table:Ie,TableBody:Me,TableCell:Ge,TableFooter:Ee,TableHead:ke,TableHeader:De,TableRow:Be,TooltipContent:Ae};export{We as a};//# sourceMappingURL=chunk-5QNEI6BL.js.map +//# sourceMappingURL=chunk-5QNEI6BL.js.map \ No newline at end of file diff --git a/dist/chunk-A2VV3NIL.js.map b/dist/chunk-5QNEI6BL.js.map similarity index 99% rename from dist/chunk-A2VV3NIL.js.map rename to dist/chunk-5QNEI6BL.js.map index 7b1d30d..b886c1c 100644 --- a/dist/chunk-A2VV3NIL.js.map +++ b/dist/chunk-5QNEI6BL.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/adapters/heroui/index.tsx"],"names":["withClassName","Component","defaultClassName","className","props","jsx","cn","HeroButton","Button","HeroCard","Card","HeroCardHeader","CardHeader","HeroCardContent","CardContent","HeroCheckbox","Checkbox","HeroDropdownMenuContent","DropdownMenuContent","HeroDropdownMenuItem","DropdownMenuItem","HeroDropdownMenuCheckboxItem","DropdownMenuCheckboxItem","HeroDropdownMenuRadioItem","DropdownMenuRadioItem","HeroDropdownMenuLabel","DropdownMenuLabel","HeroDropdownMenuSeparator","DropdownMenuSeparator","HeroDropdownMenuSubContent","DropdownMenuSubContent","HeroDropdownMenuSubTrigger","DropdownMenuSubTrigger","HeroInput","Input","HeroInputGroup","InputGroup","HeroInputGroupAddon","InputGroupAddon","HeroInputGroupInput","InputGroupInput","HeroPagination","Pagination","HeroPaginationLink","PaginationLink","HeroPaginationFirst","PaginationFirst","HeroPaginationPrevious","PaginationPrevious","HeroPaginationNext","PaginationNext","HeroPaginationLast","PaginationLast","HeroScrollArea","ScrollArea","HeroScrollBar","ScrollBar","HeroSelectTrigger","SelectTrigger","HeroSelectContent","SelectContent","HeroSelectItem","SelectItem","HeroSeparator","Separator","HeroSkeleton","Skeleton","HeroTable","Table","HeroTableHeader","TableHeader","HeroTableBody","TableBody","HeroTableFooter","TableFooter","HeroTableHead","TableHead","HeroTableRow","TableRow","HeroTableCell","TableCell","HeroTooltipContent","TooltipContent","HeroEmpty","Empty","HeroEmptyHeader","EmptyHeader","HeroEmptyMedia","EmptyMedia","HeroEmptyTitle","EmptyTitle","HeroEmptyDescription","EmptyDescription","HeroEmptyContent","EmptyContent","heroUiKit","primitiveUiKit"],"mappings":"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","file":"chunk-A2VV3NIL.js","sourcesContent":["import * as React from \"react\";\nimport type { DataTableUiKit } from \"../../core/ui-kit\";\nimport {\n Button as PrimitiveButton,\n Card as PrimitiveCard,\n CardContent as PrimitiveCardContent,\n CardHeader as PrimitiveCardHeader,\n Checkbox as PrimitiveCheckbox,\n DropdownMenuCheckboxItem as PrimitiveDropdownMenuCheckboxItem,\n DropdownMenuContent as PrimitiveDropdownMenuContent,\n DropdownMenuItem as PrimitiveDropdownMenuItem,\n DropdownMenuLabel as PrimitiveDropdownMenuLabel,\n DropdownMenuRadioItem as PrimitiveDropdownMenuRadioItem,\n DropdownMenuSeparator as PrimitiveDropdownMenuSeparator,\n DropdownMenuSubContent as PrimitiveDropdownMenuSubContent,\n DropdownMenuSubTrigger as PrimitiveDropdownMenuSubTrigger,\n Empty as PrimitiveEmpty,\n EmptyContent as PrimitiveEmptyContent,\n EmptyDescription as PrimitiveEmptyDescription,\n EmptyHeader as PrimitiveEmptyHeader,\n EmptyMedia as PrimitiveEmptyMedia,\n EmptyTitle as PrimitiveEmptyTitle,\n Input as PrimitiveInput,\n InputGroup as PrimitiveInputGroup,\n InputGroupAddon as PrimitiveInputGroupAddon,\n InputGroupInput as PrimitiveInputGroupInput,\n Pagination as PrimitivePagination,\n PaginationFirst as PrimitivePaginationFirst,\n PaginationLast as PrimitivePaginationLast,\n PaginationLink as PrimitivePaginationLink,\n PaginationNext as PrimitivePaginationNext,\n PaginationPrevious as PrimitivePaginationPrevious,\n ScrollArea as PrimitiveScrollArea,\n ScrollBar as PrimitiveScrollBar,\n SelectContent as PrimitiveSelectContent,\n SelectItem as PrimitiveSelectItem,\n SelectTrigger as PrimitiveSelectTrigger,\n Separator as PrimitiveSeparator,\n Skeleton as PrimitiveSkeleton,\n Table as PrimitiveTable,\n TableBody as PrimitiveTableBody,\n TableCell as PrimitiveTableCell,\n TableFooter as PrimitiveTableFooter,\n TableHead as PrimitiveTableHead,\n TableHeader as PrimitiveTableHeader,\n TableRow as PrimitiveTableRow,\n TooltipContent as PrimitiveTooltipContent,\n primitiveUiKit,\n} from \"../../core/primitive-ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nfunction withClassName(\n Component: React.ComponentType,\n defaultClassName: string,\n) {\n return function Wrapped({ className, ...props }: TProps) {\n return (\n \n );\n };\n}\n\nconst HeroButton = withClassName(\n PrimitiveButton,\n \"rounded-field border-field-border shadow-field data-[variant=default]:bg-accent data-[variant=default]:text-accent-foreground data-[variant=outline]:border-field-border data-[variant=outline]:bg-field data-[variant=outline]:hover:bg-field-hover data-[variant=secondary]:bg-default data-[variant=secondary]:text-default-foreground data-[variant=ghost]:hover:bg-default data-[variant=destructive]:bg-danger-soft data-[variant=destructive]:text-danger\",\n);\nconst HeroCard = withClassName(\n PrimitiveCard,\n \"rounded-2xl border border-separator bg-surface text-surface-foreground shadow-surface ring-0\",\n);\nconst HeroCardHeader = withClassName(PrimitiveCardHeader, \"px-5 pt-5 pb-3\");\nconst HeroCardContent = withClassName(PrimitiveCardContent, \"px-5 pb-5\");\nconst HeroCheckbox = withClassName(\n PrimitiveCheckbox,\n \"rounded-field border-field-border bg-field ring-focus/40 data-checked:bg-accent data-checked:text-accent-foreground data-checked:ring-focus\",\n);\nconst HeroDropdownMenuContent = withClassName(\n PrimitiveDropdownMenuContent,\n \"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden **:data-[slot$=-item]:focus:bg-default **:data-[slot$=-item]:data-highlighted:bg-default **:data-[slot$=-separator]:bg-separator **:data-[slot$=-trigger]:focus:bg-default\",\n);\nconst HeroDropdownMenuItem = withClassName(\n PrimitiveDropdownMenuItem,\n \"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground data-[variant=destructive]:text-danger data-[variant=destructive]:focus:bg-danger-soft\",\n);\nconst HeroDropdownMenuCheckboxItem = withClassName(\n PrimitiveDropdownMenuCheckboxItem,\n \"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground\",\n);\nconst HeroDropdownMenuRadioItem = withClassName(\n PrimitiveDropdownMenuRadioItem,\n \"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground\",\n);\nconst HeroDropdownMenuLabel = withClassName(\n PrimitiveDropdownMenuLabel,\n \"text-muted\",\n);\nconst HeroDropdownMenuSeparator = withClassName(\n PrimitiveDropdownMenuSeparator,\n \"bg-separator\",\n);\nconst HeroDropdownMenuSubContent = withClassName(\n PrimitiveDropdownMenuSubContent,\n \"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden\",\n);\nconst HeroDropdownMenuSubTrigger = withClassName(\n PrimitiveDropdownMenuSubTrigger,\n \"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground data-open:bg-default data-open:text-overlay-foreground\",\n);\nconst HeroInput = withClassName(\n PrimitiveInput,\n \"rounded-field border-field-border bg-field text-field-foreground shadow-field placeholder:text-field-placeholder\",\n);\nconst HeroInputGroup = withClassName(\n PrimitiveInputGroup,\n \"rounded-field border-field-border bg-field text-field-foreground shadow-field\",\n);\nconst HeroInputGroupAddon = withClassName(\n PrimitiveInputGroupAddon,\n \"text-muted\",\n);\nconst HeroInputGroupInput = withClassName(PrimitiveInputGroupInput, \"bg-transparent\");\nconst HeroPagination = withClassName(PrimitivePagination, \"justify-end\");\nconst HeroPaginationLink = withClassName(\n PrimitivePaginationLink,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover data-[active=true]:bg-accent data-[active=true]:text-accent-foreground\",\n);\nconst HeroPaginationFirst = withClassName(\n PrimitivePaginationFirst,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover\",\n);\nconst HeroPaginationPrevious = withClassName(\n PrimitivePaginationPrevious,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover\",\n);\nconst HeroPaginationNext = withClassName(\n PrimitivePaginationNext,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover\",\n);\nconst HeroPaginationLast = withClassName(\n PrimitivePaginationLast,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover\",\n);\nconst HeroScrollArea = withClassName(PrimitiveScrollArea, \"rounded-2xl\");\nconst HeroScrollBar = withClassName(\n PrimitiveScrollBar,\n \"[&>[data-slot=scroll-area-thumb]]:bg-default-500\",\n);\nconst HeroSelectTrigger = withClassName(\n PrimitiveSelectTrigger,\n \"rounded-field border-field-border bg-field text-field-foreground shadow-field\",\n);\nconst HeroSelectContent = withClassName(\n PrimitiveSelectContent,\n \"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden\",\n);\nconst HeroSelectItem = withClassName(\n PrimitiveSelectItem,\n \"rounded-xl focus:bg-default\",\n);\nconst HeroSeparator = withClassName(PrimitiveSeparator, \"bg-separator\");\nconst HeroSkeleton = withClassName(\n PrimitiveSkeleton,\n \"rounded-xl bg-default\",\n);\nconst HeroTable = withClassName(PrimitiveTable, \"rounded-2xl text-foreground\");\nconst HeroTableHeader = withClassName(\n PrimitiveTableHeader,\n \"[&_tr]:border-separator\",\n);\nconst HeroTableBody = withClassName(PrimitiveTableBody, \"\");\nconst HeroTableFooter = withClassName(\n PrimitiveTableFooter,\n \"border-separator bg-surface-secondary\",\n);\nconst HeroTableHead = withClassName(\n PrimitiveTableHead,\n \"h-11 border-separator text-muted font-semibold\",\n);\nconst HeroTableRow = withClassName(\n PrimitiveTableRow,\n \"border-separator hover:bg-default data-[state=selected]:bg-accent-soft\",\n);\nconst HeroTableCell = withClassName(PrimitiveTableCell, \"py-2.5\");\nconst HeroTooltipContent = withClassName(\n PrimitiveTooltipContent,\n \"rounded-xl bg-overlay text-overlay-foreground ring-1 ring-separator shadow-overlay [&>svg]:bg-overlay [&>svg]:fill-overlay\",\n);\nconst HeroEmpty = withClassName(\n PrimitiveEmpty,\n \"rounded-2xl border-separator bg-surface shadow-surface\",\n);\nconst HeroEmptyHeader = withClassName(PrimitiveEmptyHeader, \"\");\nconst HeroEmptyMedia = withClassName(\n PrimitiveEmptyMedia,\n \"[&[data-variant=icon]]:rounded-2xl [&[data-variant=icon]]:bg-accent-soft [&[data-variant=icon]]:text-accent-soft-foreground\",\n);\nconst HeroEmptyTitle = withClassName(PrimitiveEmptyTitle, \"text-foreground\");\nconst HeroEmptyDescription = withClassName(\n PrimitiveEmptyDescription,\n \"text-muted\",\n);\nconst HeroEmptyContent = withClassName(PrimitiveEmptyContent, \"\");\n\nexport const heroUiKit: DataTableUiKit = {\n ...primitiveUiKit,\n rootClassName: \"dtp-heroui\",\n classNames: {\n card: \"hover:bg-default data-[state=selected]:bg-accent-soft\",\n cardGrid: \"bg-transparent\",\n cardItem: \"min-w-0\",\n cardOverlay: \"from-surface/95 via-surface/85 to-transparent\",\n cardScrollArea: \"bg-transparent\",\n cardSelected: \"bg-accent-soft ring-accent\",\n cardUnselected: \"border-separator\",\n cardViewport: \"bg-transparent\",\n cellBorder: \"border-separator/70\",\n columnGroupHeader: \"bg-default/50 font-semibold\",\n dragActive: \"rounded-2xl border-dashed border-accent\",\n emptyState: \"border-separator bg-surface\",\n footer: \"border-separator bg-surface text-surface-foreground\",\n headerSortIcon: \"text-muted\",\n mutedText: \"text-muted\",\n paginationSelectTrigger: \"border-field-border bg-field\",\n paginationTotal: \"text-muted\",\n pinnedColumn: \"border-separator\",\n pinnedUtilityColumn: \"bg-surface\",\n resizeHandle: \"after:bg-separator hover:after:bg-accent\",\n resizeHandleActive: \"after:bg-accent\",\n row: \"hover:bg-default data-[state=selected]:!bg-accent-soft\",\n rowSelected: \"!bg-accent-soft\",\n tableContainer: \"border-separator bg-surface text-surface-foreground\",\n tableScrollArea: \"bg-surface\",\n tableStickyHeader:\n \"sticky top-0 z-30 bg-surface/95 backdrop-blur [&_th]:border-separator [&_th]:bg-surface/95\",\n toolbarCompactIconButton: \"size-7\",\n toolbarIconButton: \"text-muted hover:text-foreground\",\n toolbarInputButton: \"bg-field\",\n },\n Button: HeroButton,\n Card: HeroCard,\n CardContent: HeroCardContent,\n CardHeader: HeroCardHeader,\n Checkbox: HeroCheckbox,\n DropdownMenuCheckboxItem: HeroDropdownMenuCheckboxItem,\n DropdownMenuContent: HeroDropdownMenuContent,\n DropdownMenuItem: HeroDropdownMenuItem,\n DropdownMenuLabel: HeroDropdownMenuLabel,\n DropdownMenuRadioItem: HeroDropdownMenuRadioItem,\n DropdownMenuSeparator: HeroDropdownMenuSeparator,\n DropdownMenuSubContent: HeroDropdownMenuSubContent,\n DropdownMenuSubTrigger: HeroDropdownMenuSubTrigger,\n Empty: HeroEmpty,\n EmptyContent: HeroEmptyContent,\n EmptyDescription: HeroEmptyDescription,\n EmptyHeader: HeroEmptyHeader,\n EmptyMedia: HeroEmptyMedia,\n EmptyTitle: HeroEmptyTitle,\n Input: HeroInput,\n InputGroup: HeroInputGroup,\n InputGroupAddon: HeroInputGroupAddon,\n InputGroupInput: HeroInputGroupInput,\n Pagination: HeroPagination,\n PaginationFirst: HeroPaginationFirst,\n PaginationLast: HeroPaginationLast,\n PaginationLink: HeroPaginationLink,\n PaginationNext: HeroPaginationNext,\n PaginationPrevious: HeroPaginationPrevious,\n ScrollArea: HeroScrollArea,\n ScrollBar: HeroScrollBar,\n SelectContent: HeroSelectContent,\n SelectItem: HeroSelectItem,\n SelectTrigger: HeroSelectTrigger,\n Separator: HeroSeparator,\n Skeleton: HeroSkeleton,\n Table: HeroTable,\n TableBody: HeroTableBody,\n TableCell: HeroTableCell,\n TableFooter: HeroTableFooter,\n TableHead: HeroTableHead,\n TableHeader: HeroTableHeader,\n TableRow: HeroTableRow,\n TooltipContent: HeroTooltipContent,\n};\n"]} \ No newline at end of file +{"version":3,"sources":["../src/adapters/heroui/index.tsx"],"names":["withClassName","Component","defaultClassName","className","props","jsx","cn","HeroButton","Button","HeroCard","Card","HeroCardHeader","CardHeader","HeroCardContent","CardContent","HeroCheckbox","Checkbox","HeroDropdownMenuContent","DropdownMenuContent","HeroDropdownMenuItem","DropdownMenuItem","HeroDropdownMenuCheckboxItem","DropdownMenuCheckboxItem","HeroDropdownMenuRadioItem","DropdownMenuRadioItem","HeroDropdownMenuLabel","DropdownMenuLabel","HeroDropdownMenuSeparator","DropdownMenuSeparator","HeroDropdownMenuSubContent","DropdownMenuSubContent","HeroDropdownMenuSubTrigger","DropdownMenuSubTrigger","HeroInput","Input","HeroInputGroup","InputGroup","HeroInputGroupAddon","InputGroupAddon","HeroInputGroupInput","InputGroupInput","HeroPagination","Pagination","HeroPaginationLink","PaginationLink","HeroPaginationFirst","PaginationFirst","HeroPaginationPrevious","PaginationPrevious","HeroPaginationNext","PaginationNext","HeroPaginationLast","PaginationLast","HeroScrollArea","ScrollArea","HeroScrollBar","ScrollBar","HeroSelectTrigger","SelectTrigger","HeroSelectContent","SelectContent","HeroSelectItem","SelectItem","HeroSeparator","Separator","HeroSkeleton","Skeleton","HeroTable","Table","HeroTableHeader","TableHeader","HeroTableBody","TableBody","HeroTableFooter","TableFooter","HeroTableHead","TableHead","HeroTableRow","TableRow","HeroTableCell","TableCell","HeroTooltipContent","TooltipContent","HeroEmpty","Empty","HeroEmptyHeader","EmptyHeader","HeroEmptyMedia","EmptyMedia","HeroEmptyTitle","EmptyTitle","HeroEmptyDescription","EmptyDescription","HeroEmptyContent","EmptyContent","heroUiKit","primitiveUiKit"],"mappings":"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","file":"chunk-5QNEI6BL.js","sourcesContent":["import * as React from \"react\";\nimport type { DataTableUiKit } from \"../../core/ui-kit\";\nimport {\n Button as PrimitiveButton,\n Card as PrimitiveCard,\n CardContent as PrimitiveCardContent,\n CardHeader as PrimitiveCardHeader,\n Checkbox as PrimitiveCheckbox,\n DropdownMenuCheckboxItem as PrimitiveDropdownMenuCheckboxItem,\n DropdownMenuContent as PrimitiveDropdownMenuContent,\n DropdownMenuItem as PrimitiveDropdownMenuItem,\n DropdownMenuLabel as PrimitiveDropdownMenuLabel,\n DropdownMenuRadioItem as PrimitiveDropdownMenuRadioItem,\n DropdownMenuSeparator as PrimitiveDropdownMenuSeparator,\n DropdownMenuSubContent as PrimitiveDropdownMenuSubContent,\n DropdownMenuSubTrigger as PrimitiveDropdownMenuSubTrigger,\n Empty as PrimitiveEmpty,\n EmptyContent as PrimitiveEmptyContent,\n EmptyDescription as PrimitiveEmptyDescription,\n EmptyHeader as PrimitiveEmptyHeader,\n EmptyMedia as PrimitiveEmptyMedia,\n EmptyTitle as PrimitiveEmptyTitle,\n Input as PrimitiveInput,\n InputGroup as PrimitiveInputGroup,\n InputGroupAddon as PrimitiveInputGroupAddon,\n InputGroupInput as PrimitiveInputGroupInput,\n Pagination as PrimitivePagination,\n PaginationFirst as PrimitivePaginationFirst,\n PaginationLast as PrimitivePaginationLast,\n PaginationLink as PrimitivePaginationLink,\n PaginationNext as PrimitivePaginationNext,\n PaginationPrevious as PrimitivePaginationPrevious,\n ScrollArea as PrimitiveScrollArea,\n ScrollBar as PrimitiveScrollBar,\n SelectContent as PrimitiveSelectContent,\n SelectItem as PrimitiveSelectItem,\n SelectTrigger as PrimitiveSelectTrigger,\n Separator as PrimitiveSeparator,\n Skeleton as PrimitiveSkeleton,\n Table as PrimitiveTable,\n TableBody as PrimitiveTableBody,\n TableCell as PrimitiveTableCell,\n TableFooter as PrimitiveTableFooter,\n TableHead as PrimitiveTableHead,\n TableHeader as PrimitiveTableHeader,\n TableRow as PrimitiveTableRow,\n TooltipContent as PrimitiveTooltipContent,\n primitiveUiKit,\n} from \"../../core/primitive-ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nfunction withClassName(\n Component: React.ComponentType,\n defaultClassName: string,\n) {\n return function Wrapped({ className, ...props }: TProps) {\n return (\n \n );\n };\n}\n\nconst HeroButton = withClassName(\n PrimitiveButton,\n \"rounded-field border-field-border shadow-field data-[variant=default]:bg-accent data-[variant=default]:text-accent-foreground data-[variant=outline]:border-field-border data-[variant=outline]:bg-field data-[variant=outline]:hover:bg-field-hover data-[variant=secondary]:bg-default data-[variant=secondary]:text-default-foreground data-[variant=ghost]:hover:bg-default data-[variant=destructive]:bg-danger-soft data-[variant=destructive]:text-danger\",\n);\nconst HeroCard = withClassName(\n PrimitiveCard,\n \"rounded-2xl border border-separator bg-surface text-surface-foreground shadow-surface ring-0\",\n);\nconst HeroCardHeader = withClassName(PrimitiveCardHeader, \"px-5 pt-5 pb-3\");\nconst HeroCardContent = withClassName(PrimitiveCardContent, \"px-5 pb-5\");\nconst HeroCheckbox = withClassName(\n PrimitiveCheckbox,\n \"rounded-field border-field-border bg-field ring-focus/40 data-checked:bg-accent data-checked:text-accent-foreground data-checked:ring-focus\",\n);\nconst HeroDropdownMenuContent = withClassName(\n PrimitiveDropdownMenuContent,\n \"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden **:data-[slot$=-item]:focus:bg-default **:data-[slot$=-item]:data-highlighted:bg-default **:data-[slot$=-separator]:bg-separator **:data-[slot$=-trigger]:focus:bg-default\",\n);\nconst HeroDropdownMenuItem = withClassName(\n PrimitiveDropdownMenuItem,\n \"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground data-[variant=destructive]:text-danger data-[variant=destructive]:focus:bg-danger-soft\",\n);\nconst HeroDropdownMenuCheckboxItem = withClassName(\n PrimitiveDropdownMenuCheckboxItem,\n \"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground\",\n);\nconst HeroDropdownMenuRadioItem = withClassName(\n PrimitiveDropdownMenuRadioItem,\n \"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground\",\n);\nconst HeroDropdownMenuLabel = withClassName(\n PrimitiveDropdownMenuLabel,\n \"text-muted\",\n);\nconst HeroDropdownMenuSeparator = withClassName(\n PrimitiveDropdownMenuSeparator,\n \"bg-separator\",\n);\nconst HeroDropdownMenuSubContent = withClassName(\n PrimitiveDropdownMenuSubContent,\n \"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden\",\n);\nconst HeroDropdownMenuSubTrigger = withClassName(\n PrimitiveDropdownMenuSubTrigger,\n \"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground data-open:bg-default data-open:text-overlay-foreground\",\n);\nconst HeroInput = withClassName(\n PrimitiveInput,\n \"rounded-field border-field-border bg-field text-field-foreground shadow-field placeholder:text-field-placeholder\",\n);\nconst HeroInputGroup = withClassName(\n PrimitiveInputGroup,\n \"rounded-field border-field-border bg-field text-field-foreground shadow-field\",\n);\nconst HeroInputGroupAddon = withClassName(\n PrimitiveInputGroupAddon,\n \"text-muted\",\n);\nconst HeroInputGroupInput = withClassName(PrimitiveInputGroupInput, \"bg-transparent\");\nconst HeroPagination = withClassName(PrimitivePagination, \"justify-end\");\nconst HeroPaginationLink = withClassName(\n PrimitivePaginationLink,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover data-[active=true]:bg-accent data-[active=true]:text-accent-foreground\",\n);\nconst HeroPaginationFirst = withClassName(\n PrimitivePaginationFirst,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover\",\n);\nconst HeroPaginationPrevious = withClassName(\n PrimitivePaginationPrevious,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover\",\n);\nconst HeroPaginationNext = withClassName(\n PrimitivePaginationNext,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover\",\n);\nconst HeroPaginationLast = withClassName(\n PrimitivePaginationLast,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover\",\n);\nconst HeroScrollArea = withClassName(PrimitiveScrollArea, \"rounded-2xl\");\nconst HeroScrollBar = withClassName(\n PrimitiveScrollBar,\n \"[&>[data-slot=scroll-area-thumb]]:bg-default-500\",\n);\nconst HeroSelectTrigger = withClassName(\n PrimitiveSelectTrigger,\n \"rounded-field border-field-border bg-field text-field-foreground shadow-field\",\n);\nconst HeroSelectContent = withClassName(\n PrimitiveSelectContent,\n \"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden\",\n);\nconst HeroSelectItem = withClassName(\n PrimitiveSelectItem,\n \"rounded-xl focus:bg-default\",\n);\nconst HeroSeparator = withClassName(PrimitiveSeparator, \"bg-separator\");\nconst HeroSkeleton = withClassName(\n PrimitiveSkeleton,\n \"rounded-xl bg-default\",\n);\nconst HeroTable = withClassName(PrimitiveTable, \"rounded-2xl text-foreground\");\nconst HeroTableHeader = withClassName(\n PrimitiveTableHeader,\n \"[&_tr]:border-separator\",\n);\nconst HeroTableBody = withClassName(PrimitiveTableBody, \"\");\nconst HeroTableFooter = withClassName(\n PrimitiveTableFooter,\n \"border-separator bg-surface-secondary\",\n);\nconst HeroTableHead = withClassName(\n PrimitiveTableHead,\n \"h-11 border-separator text-muted font-semibold\",\n);\nconst HeroTableRow = withClassName(\n PrimitiveTableRow,\n \"border-separator hover:bg-default data-[state=selected]:bg-accent-soft\",\n);\nconst HeroTableCell = withClassName(PrimitiveTableCell, \"py-2.5\");\nconst HeroTooltipContent = withClassName(\n PrimitiveTooltipContent,\n \"rounded-xl bg-overlay text-overlay-foreground ring-1 ring-separator shadow-overlay [&>svg]:bg-overlay [&>svg]:fill-overlay\",\n);\nconst HeroEmpty = withClassName(\n PrimitiveEmpty,\n \"rounded-2xl border-separator bg-surface shadow-surface\",\n);\nconst HeroEmptyHeader = withClassName(PrimitiveEmptyHeader, \"\");\nconst HeroEmptyMedia = withClassName(\n PrimitiveEmptyMedia,\n \"[&[data-variant=icon]]:rounded-2xl [&[data-variant=icon]]:bg-accent-soft [&[data-variant=icon]]:text-accent-soft-foreground\",\n);\nconst HeroEmptyTitle = withClassName(PrimitiveEmptyTitle, \"text-foreground\");\nconst HeroEmptyDescription = withClassName(\n PrimitiveEmptyDescription,\n \"text-muted\",\n);\nconst HeroEmptyContent = withClassName(PrimitiveEmptyContent, \"\");\n\nexport const heroUiKit: DataTableUiKit = {\n ...primitiveUiKit,\n rootClassName: \"dtp-heroui\",\n classNames: {\n card: \"hover:bg-default data-[state=selected]:bg-accent-soft\",\n cardGrid: \"bg-transparent\",\n cardItem: \"min-w-0\",\n cardOverlay: \"from-surface/95 via-surface/85 to-transparent\",\n cardScrollArea: \"bg-transparent\",\n cardSelected: \"bg-accent-soft ring-accent\",\n cardUnselected: \"border-separator\",\n cardViewport: \"bg-transparent\",\n cellBorder: \"border-separator/70\",\n columnGroupHeader: \"bg-default/50 font-semibold\",\n dragActive: \"rounded-2xl border-dashed border-accent\",\n emptyState: \"border-separator bg-surface\",\n footer: \"border-separator bg-surface text-surface-foreground\",\n headerSortIcon: \"text-muted\",\n mutedText: \"text-muted\",\n paginationSelectTrigger: \"border-field-border bg-field\",\n paginationTotal: \"text-muted\",\n pinnedColumn: \"border-separator\",\n pinnedUtilityColumn: \"bg-surface\",\n resizeHandle: \"after:bg-separator hover:after:bg-accent\",\n resizeHandleActive: \"after:bg-accent\",\n row: \"hover:bg-default data-[state=selected]:!bg-accent-soft\",\n rowSelected: \"!bg-accent-soft\",\n tableContainer: \"border-separator bg-surface text-surface-foreground\",\n tableScrollArea: \"bg-surface\",\n tableStickyHeader:\n \"sticky top-0 z-30 bg-surface/95 backdrop-blur [&_th]:border-separator [&_th]:bg-surface/95\",\n toolbarCompactIconButton: \"size-7\",\n toolbarIconButton: \"text-muted hover:text-foreground\",\n toolbarInputButton: \"bg-field\",\n },\n Button: HeroButton,\n Card: HeroCard,\n CardContent: HeroCardContent,\n CardHeader: HeroCardHeader,\n Checkbox: HeroCheckbox,\n DropdownMenuCheckboxItem: HeroDropdownMenuCheckboxItem,\n DropdownMenuContent: HeroDropdownMenuContent,\n DropdownMenuItem: HeroDropdownMenuItem,\n DropdownMenuLabel: HeroDropdownMenuLabel,\n DropdownMenuRadioItem: HeroDropdownMenuRadioItem,\n DropdownMenuSeparator: HeroDropdownMenuSeparator,\n DropdownMenuSubContent: HeroDropdownMenuSubContent,\n DropdownMenuSubTrigger: HeroDropdownMenuSubTrigger,\n Empty: HeroEmpty,\n EmptyContent: HeroEmptyContent,\n EmptyDescription: HeroEmptyDescription,\n EmptyHeader: HeroEmptyHeader,\n EmptyMedia: HeroEmptyMedia,\n EmptyTitle: HeroEmptyTitle,\n Input: HeroInput,\n InputGroup: HeroInputGroup,\n InputGroupAddon: HeroInputGroupAddon,\n InputGroupInput: HeroInputGroupInput,\n Pagination: HeroPagination,\n PaginationFirst: HeroPaginationFirst,\n PaginationLast: HeroPaginationLast,\n PaginationLink: HeroPaginationLink,\n PaginationNext: HeroPaginationNext,\n PaginationPrevious: HeroPaginationPrevious,\n ScrollArea: HeroScrollArea,\n ScrollBar: HeroScrollBar,\n SelectContent: HeroSelectContent,\n SelectItem: HeroSelectItem,\n SelectTrigger: HeroSelectTrigger,\n Separator: HeroSeparator,\n Skeleton: HeroSkeleton,\n Table: HeroTable,\n TableBody: HeroTableBody,\n TableCell: HeroTableCell,\n TableFooter: HeroTableFooter,\n TableHead: HeroTableHead,\n TableHeader: HeroTableHeader,\n TableRow: HeroTableRow,\n TooltipContent: HeroTooltipContent,\n};\n"]} \ No newline at end of file diff --git a/dist/chunk-PFB5LOU7.js b/dist/chunk-674VSOYY.js similarity index 89% rename from dist/chunk-PFB5LOU7.js rename to dist/chunk-674VSOYY.js index 3b04780..3e6f8bc 100644 --- a/dist/chunk-PFB5LOU7.js +++ b/dist/chunk-674VSOYY.js @@ -1,2 +1,2 @@ -import {clsx}from'clsx';import {twMerge}from'tailwind-merge';function g(...e){return twMerge(clsx(e))}var s={sm:640,md:768,lg:1024,xl:1280,"2xl":1536};function u(e,a,t){return !a||t?true:!a.getIsHidden(e)}function D(e,a){return typeof e=="function"?e(a):e}function c(e,a){return !e.hidden?.(a)}function p(e,a){return e?.canEditRow?e.canEditRow(a):!!e}function n(e){switch(e){case "center":return "text-center";case "end":return "text-right";default:return "text-left"}}function o(e,a){return e||(a==="numeric"?"end":"start")}function m(e){let a=e.column.columnDef.meta;return n(o(a?.align,a?.type))}function w(e){let a=e.column.columnDef.meta;return n(o(a?.align,a?.type))}function C(e){return e?(Array.isArray(e)?e:[e]).map(t=>`dt-hide-on-${t}`).join(" "):void 0}function y(e,a){return !e||a<=0?false:(Array.isArray(e)?e:[e]).some(i=>a`dt-hide-on-${t}`).join(" "):void 0}function y(e,a){return !e||a<=0?false:(Array.isArray(e)?e:[e]).some(i=>a = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n \"2xl\": 1536,\n};\n\nexport type DataTableRowLoadingState = {\n isLoading: boolean;\n skeleton?: React.ReactNode;\n};\n\nexport type DataTableLoadingState = {\n isLoading: boolean;\n loadingRowCount?: number;\n};\n\nexport type DataTableCellEditRenderProps = {\n cell: CellContext;\n row: TData;\n value: TValue | undefined;\n draftValue: unknown;\n setDraftValue: (value: unknown) => void;\n};\n\nexport type DataTableColumnFilterOption = {\n label: string;\n value: string;\n};\n\nexport type DataTableColumnFilterConfig = {\n type: DataTableColumnFilterType;\n label?: string;\n placeholder?: string;\n options?:\n | Array\n | ((context: { rows: Array }) => Array);\n getOptionValue?: (value: TValue | undefined, row: TData) => string;\n};\n\nexport type DataTableColumnMeta = {\n type?: DataTableColumnType;\n fixed?: DataTableColumnFixed;\n cardTitle?: boolean;\n hideOn?: DataTableContainerBreakpoint | Array;\n minWidth?: number;\n align?: DataTableAlign;\n overflow?:\n | DataTableCellOverflow\n | ((args: {\n row: TData;\n value: TValue | undefined;\n }) => DataTableCellOverflow | undefined);\n headerClassName?: string;\n headerStyle?: React.CSSProperties;\n cellClassName?:\n | string\n | ((args: { row: TData; value: TValue | undefined }) => string | undefined);\n responsiveClassName?: string;\n skeleton?: (context: CellContext) => React.ReactNode;\n filter?: DataTableColumnFilterConfig;\n parseEditValue?: (value: unknown, context: CellContext) => unknown;\n formatEditValue?: (\n value: unknown,\n context: CellContext,\n ) => string;\n renderEditCell?: (\n props: DataTableCellEditRenderProps,\n ) => React.ReactNode;\n};\n\nexport type DataTableColumnDef = ColumnDef<\n TData,\n TValue\n> & {\n meta?: DataTableColumnMeta;\n columns?: Array>;\n};\n\nexport type DataTableColumnGroupDef = DataTableColumnDef<\n TData,\n unknown\n> & {\n id: string;\n columns: Array>;\n};\n\nexport type DataTableToolbarAction = {\n key: string;\n label: string;\n icon?: React.ComponentType<{ className?: string }>;\n iconOnly?: boolean;\n placement?: \"primary\" | \"trailing\";\n onClick: (context: {\n rows: Array;\n openFileDialog?: () => void;\n }) => void | Promise;\n variant?: \"default\" | \"secondary\" | \"outline\" | \"ghost\" | \"destructive\";\n disabled?: boolean;\n};\n\nexport type DataTableSelectionAction = {\n key: string;\n label: string;\n icon?: React.ComponentType<{ className?: string }>;\n iconOnly?: boolean;\n onClick: (context: { rows: Array }) => void | Promise;\n variant?: \"default\" | \"secondary\" | \"outline\" | \"ghost\" | \"destructive\";\n disabled?: boolean | ((rows: Array) => boolean);\n};\n\nexport type DataTableRowAction = {\n key: string;\n label: string | ((row: TData) => string);\n icon?: React.ComponentType<{ className?: string }>;\n onClick: (row: TData) => void | Promise;\n variant?: \"default\" | \"secondary\" | \"destructive\";\n hidden?: (row: TData) => boolean;\n disabled?: (row: TData) => boolean;\n};\n\nexport type DataTableColumnVisibilityOption = {\n id: string;\n label: string;\n visible: boolean;\n canHide: boolean;\n pinned?: false | DataTableColumnFixed;\n};\n\nexport type DataTableToolbarVisibility = {\n title?: boolean;\n search?: boolean;\n actions?: boolean;\n trailingActions?: boolean;\n options?: boolean;\n viewToggle?: boolean;\n customToolbar?: boolean;\n};\n\nexport type DataTableCardRendererProps = {\n row: TData;\n rowId: string;\n isSelected: boolean;\n onSelectedChange: (nextValue: boolean) => void;\n actions: Array>;\n isEditing: boolean;\n startEditing: () => void;\n cancelEditing: () => void;\n};\n\nexport type DataTableEditableRowsConfig = {\n canEditRow?: (row: TData) => boolean;\n getInitialValues?: (row: TData) => Record;\n onSaveRow: (\n row: TData,\n draftValues: Record,\n ) => void | Promise;\n};\n\nexport type DataTableInfiniteScroll = {\n enabled: boolean;\n hasMore: boolean;\n isLoadingMore?: boolean;\n onLoadMore: () => void | Promise;\n};\n\nexport type DataTableHiddenRowsConfig = {\n getIsHidden: (row: TData) => boolean;\n label?: string;\n};\n\nexport type DataTableEmptyStateContext = {\n rows: Array;\n toolbarQueryValue: string;\n};\n\nexport type DataTableDragAndDropConfig = {\n isDragging?: boolean;\n onDragEnter?: React.DragEventHandler;\n onDragOver?: React.DragEventHandler;\n onDragLeave?: React.DragEventHandler;\n onDrop?: React.DragEventHandler;\n getRowDraggable?: (row: TData) => boolean;\n onRowDragStart?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n onRowDragEnd?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n};\n\nexport type DataTableFileUploadConfig = {\n accept?: string;\n disabled?: boolean;\n multiple?: boolean;\n onFilesSelected: (files: FileList | Array) => void | Promise;\n};\n\nexport type DataTableVirtualizationConfig = {\n enabled?: boolean;\n estimateRowHeight?: number;\n fallbackRowCount?: number;\n overscan?: number;\n card?: DataTableCardVirtualizationConfig;\n};\n\nexport type DataTableCardVirtualizationConfig = {\n enabled?: boolean;\n estimateCardHeight?: number;\n fallbackCardCount?: number;\n overscan?: number;\n lanes?: number | \"auto\";\n};\n\nexport type DataTableExpandedRowProps = {\n row: TData;\n rowId: string;\n tableRow: Row;\n};\n\nexport type DataTableCsvExportOptions = {\n filename?: string;\n includeHeaders?: boolean;\n columns?: Array;\n scope?: DataTableCsvExportScope;\n escapeFormulaValues?: boolean;\n lineEnding?: \"\\n\" | \"\\r\\n\";\n getCellValue?: (context: {\n row: TData;\n rowId: string;\n columnId: string;\n value: unknown;\n }) => unknown;\n onExport?: (context: {\n csv: string;\n filename: string;\n rows: Array;\n scope: DataTableCsvExportScope;\n }) => void | Promise;\n};\n\nexport type DataTableActionErrorContext = {\n source: DataTableActionErrorSource;\n error: unknown;\n actionKey?: string;\n row?: TData;\n};\n\nexport type DataTableColumnPrefs = {\n visibility?: VisibilityState;\n sizing?: Record;\n order?: ColumnOrderState;\n pinning?: ColumnPinningState;\n density?: DataTableDensity;\n};\n\nexport type DataTablePersistenceSlice = keyof DataTableColumnPrefs;\n\nexport type DataTablePersistenceStorage = Pick<\n Storage,\n \"getItem\" | \"setItem\" | \"removeItem\"\n>;\n\nexport type DataTablePersistenceOperation =\n | \"read\"\n | \"write\"\n | \"remove\"\n | \"serialize\"\n | \"deserialize\"\n | \"migrate\";\n\nexport type DataTablePersistencePayload = {\n version: string | number;\n state: DataTableColumnPrefs;\n};\n\nexport type DataTablePersistenceConfig = {\n key: string;\n version?: string | number;\n slices?: Array;\n storage?: DataTablePersistenceStorage;\n serialize?: (payload: DataTablePersistencePayload) => string;\n deserialize?: (value: string) => unknown;\n migrate?: (\n payload: { version: unknown; state: unknown },\n targetVersion: string | number,\n ) => DataTableColumnPrefs | undefined;\n debounceMs?: number;\n onError?: (context: {\n error: unknown;\n operation: DataTablePersistenceOperation;\n }) => void;\n};\n\nexport type DataTableState = {\n sorting: SortingState;\n pagination: PaginationState;\n rowSelection: Record;\n columnVisibility: VisibilityState;\n columnFilters: ColumnFiltersState;\n expanded: ExpandedState;\n columnOrder: ColumnOrderState;\n columnPinning: ColumnPinningState;\n columnSizing: ColumnSizingState;\n density: DataTableDensity;\n viewMode: DataTableViewMode;\n showHiddenRows: boolean;\n globalFilter: string;\n};\n\nexport type DataTableInitialState = Partial;\n\nexport type DataTableSavedViewSlice = keyof DataTableState;\n\nexport type DataTableSavedView = {\n id: string;\n name: string;\n createdAt: string;\n updatedAt: string;\n state: Partial;\n};\n\nexport type DataTableSavedViewsPayload = {\n version: string | number;\n views: Array;\n};\n\nexport type DataTableSavedViewsChangeOperation =\n | \"create\"\n | \"rename\"\n | \"delete\"\n | \"clear\";\n\nexport type DataTableSavedViewsConfig = {\n key: string;\n version?: string | number;\n slices?: Array;\n storage?: DataTablePersistenceStorage;\n serialize?: (payload: DataTableSavedViewsPayload) => string;\n deserialize?: (value: string) => unknown;\n migrate?: (\n payload: { version: unknown; views: unknown },\n targetVersion: string | number,\n ) => Array | undefined;\n onChange?: (\n views: Array,\n operation: DataTableSavedViewsChangeOperation,\n ) => void;\n onApply?: (view: DataTableSavedView) => void;\n onError?: (context: {\n error: unknown;\n operation: DataTablePersistenceOperation;\n }) => void;\n};\n\nexport type DataTableResetOptions = {\n clearPersistence?: boolean;\n};\n\nexport type DataTableApi = {\n getTable: () => TanStackTable | null;\n getState: () => DataTableState;\n snapshot: () => DataTableState;\n restore: (state: Partial) => void;\n resetColumnLayout: (options?: DataTableResetOptions) => void;\n resetState: (options?: DataTableResetOptions) => void;\n clearPersistedState: () => boolean;\n getSavedViews: () => Array;\n createSavedView: (name: string) => DataTableSavedView | undefined;\n applySavedView: (id: string) => boolean;\n renameSavedView: (\n id: string,\n name: string,\n ) => DataTableSavedView | undefined;\n deleteSavedView: (id: string) => boolean;\n clearSavedViews: () => boolean;\n focus: () => void;\n scrollToRow: (rowId: string) => boolean;\n scrollToColumn: (columnId: string) => boolean;\n exportCsv: (\n options?: boolean | DataTableCsvExportOptions,\n ) => Promise;\n};\n\nexport type DataTableLabels = {\n searchPlaceholder: string;\n searchTable: string;\n clearSearch: string;\n noRowsTitle: string;\n noRowsDescription: string;\n noMatchingRowsTitle: string;\n noMatchingRowsDescription: string;\n tableOptions: string;\n columns: string;\n filters: string;\n clearFilters: string;\n selectedRows: (count: number) => string;\n showHiddenRows: (label: string) => string;\n recordsPerPage: string;\n totalRecords: (count: number) => string;\n pageStatus: (pageIndex: number, pageCount: number) => string;\n pageStatusUnknown?: (pageIndex: number) => string;\n pagination?: string;\n morePages?: string;\n firstPage: string;\n previousPage: string;\n nextPage: string;\n lastPage: string;\n selectAllVisibleRows?: string;\n selectRow?: string;\n selectCardRow?: (rowId: string) => string;\n switchToTableView?: string;\n switchToCardView?: string;\n tableView?: string;\n cardView?: string;\n allFilterOptions?: string;\n actions: string;\n rowActions: string;\n editRow: string;\n saveEdit: string;\n cancelEdit: string;\n expandRow: string;\n collapseRow: string;\n exportCsv: string;\n density: string;\n compactDensity: string;\n comfortableDensity: string;\n spaciousDensity: string;\n pinLeft: string;\n pinRight: string;\n unpin: string;\n resizeColumn: (columnLabel: string) => string;\n};\n\nexport type DataTableSummaryRow = {\n key: string;\n label?: React.ReactNode;\n cells: Record<\n string,\n React.ReactNode | ((context: { rows: Array; columnId: string }) => React.ReactNode)\n >;\n};\n\nexport type DataTableRowClassNameContext = {\n row: TData;\n rowId: string;\n rowIndex: number;\n isEditing: boolean;\n isExpanded: boolean;\n isLoading: boolean;\n isSelected: boolean;\n};\n\nexport type DataTableProps = {\n columns: Array>;\n data: Array;\n getRowId: (row: TData, index: number) => string;\n children?: React.ReactNode;\n title?: string;\n description?: string;\n toolbarQueryValue?: string;\n onToolbarQueryValueChange?: (value: string) => void;\n toolbarQueryPlaceholder?: string;\n toolbarQueryDebounceMs?: number;\n manualFiltering?: boolean;\n enableToolbarQueryFiltering?: boolean;\n globalFilterFn?: FilterFnOption;\n columnFilters?: ColumnFiltersState;\n onColumnFiltersChange?: (filters: ColumnFiltersState) => void;\n enableColumnFilters?: boolean;\n customToolbar?: React.ReactNode;\n compactToolbar?: React.ReactNode;\n rowsPerPageOptions?: Array;\n totalRowCount?: number;\n hasNextPage?: boolean;\n sorting?: SortingState;\n onSortingChange?: (sorting: SortingState) => void;\n manualSorting?: boolean;\n pageIndex?: number;\n pageSize?: number;\n onPageIndexChange?: (pageIndex: number) => void;\n onPageSizeChange?: (pageSize: number) => void;\n pageCount?: number;\n manualPagination?: boolean;\n rowSelection?: Record;\n onRowSelectionChange?: (rowSelection: Record) => void;\n enableRowSelection?: boolean;\n expanded?: ExpandedState;\n onExpandedChange?: (expanded: ExpandedState) => void;\n getRowCanExpand?: (row: TData) => boolean;\n renderExpandedRow?: (\n props: DataTableExpandedRowProps,\n ) => React.ReactNode;\n columnOrder?: ColumnOrderState;\n onColumnOrderChange?: (columnOrder: ColumnOrderState) => void;\n enableColumnReordering?: boolean;\n columnPinning?: ColumnPinningState;\n onColumnPinningChange?: (columnPinning: ColumnPinningState) => void;\n enableColumnPinning?: boolean;\n toolbarActions?: Array>;\n selectionActions?: Array>;\n rowActions?: Array>;\n csvExport?: boolean | DataTableCsvExportOptions;\n density?: DataTableDensity;\n onDensityChange?: (density: DataTableDensity) => void;\n enableDensityToggle?: boolean;\n columnPrefsKey?: string;\n persistence?: DataTablePersistenceConfig;\n savedViews?: DataTableSavedViewsConfig;\n initialState?: DataTableInitialState;\n state?: Partial;\n onStateChange?: (updater: Updater) => void;\n apiRef?: React.Ref>;\n labels?: Partial;\n summaryRows?: Array>;\n cardRenderer?: (props: DataTableCardRendererProps) => React.ReactNode;\n cardSizing?: DataTableCardSizing;\n cardGridClassName?: string;\n cardClassName?: string;\n viewMode?: DataTableViewMode;\n onViewModeChange?: (viewMode: DataTableViewMode) => void;\n enableViewToggle?: boolean;\n emptyState?:\n | React.ReactNode\n | ((context: DataTableEmptyStateContext) => React.ReactNode);\n isLoading?: boolean;\n loadingRowCount?: number;\n getRowLoadingState?: (\n row: TData,\n index: number,\n ) => boolean | DataTableRowLoadingState;\n hiddenRows?: DataTableHiddenRowsConfig;\n showHiddenRows?: boolean;\n onShowHiddenRowsChange?: (showHiddenRows: boolean) => void;\n infiniteScroll?: DataTableInfiniteScroll;\n editableRows?: DataTableEditableRowsConfig;\n columnVisibility?: VisibilityState;\n onColumnVisibilityChange?: (visibility: VisibilityState) => void;\n columnSizing?: ColumnSizingState;\n onColumnSizingChange?: (sizing: ColumnSizingState) => void;\n enableColumnResizing?: boolean;\n columnResizeMode?: \"onChange\" | \"onEnd\";\n layoutMode?: \"fill\" | \"fit\";\n stickyHeader?: boolean;\n showFooter?: boolean;\n showToolbar?: boolean;\n dir?: \"ltr\" | \"rtl\";\n flexGrow?: boolean;\n toolbarVisibility?: DataTableToolbarVisibility;\n className?: string;\n tableClassName?: string;\n tableContainerClassName?: string;\n stripedRows?: boolean;\n getRowClassName?: (\n row: TData,\n context: DataTableRowClassNameContext,\n ) => string | undefined;\n onRowClick?: (context: { row: TData; rowId: string }) => void | Promise;\n onActionError?: (context: DataTableActionErrorContext) => void;\n dragAndDrop?: DataTableDragAndDropConfig;\n fileUpload?: DataTableFileUploadConfig;\n virtualization?: boolean | DataTableVirtualizationConfig;\n};\n\nexport function isRowVisible(\n row: TData,\n hiddenRows: DataTableHiddenRowsConfig | undefined,\n showHiddenRows: boolean,\n) {\n if (!hiddenRows) {\n return true;\n }\n\n if (showHiddenRows) {\n return true;\n }\n\n return !hiddenRows.getIsHidden(row);\n}\n\nexport function resolveRowActionLabel(\n label: DataTableRowAction[\"label\"],\n row: TData,\n) {\n return typeof label === \"function\" ? label(row) : label;\n}\n\nexport function canUseRowAction(\n action: DataTableRowAction,\n row: TData,\n) {\n return !action.hidden?.(row);\n}\n\nexport function canEditRow(\n editableRows: DataTableEditableRowsConfig | undefined,\n row: TData,\n) {\n return editableRows?.canEditRow\n ? editableRows.canEditRow(row)\n : Boolean(editableRows);\n}\n\nexport function alignClassName(align: DataTableAlign | undefined) {\n switch (align) {\n case \"center\":\n return \"text-center\";\n case \"end\":\n return \"text-right\";\n default:\n return \"text-left\";\n }\n}\n\nexport function resolveColumnAlign(\n align: DataTableAlign | undefined,\n type: DataTableColumnType | undefined,\n) {\n if (align) {\n return align;\n }\n\n if (type === \"numeric\") {\n return \"end\";\n }\n\n return \"start\";\n}\n\nexport function headerAlignClassName(\n context: HeaderContext,\n) {\n const meta = (context.column.columnDef as DataTableColumnDef)\n .meta;\n return alignClassName(resolveColumnAlign(meta?.align, meta?.type));\n}\n\nexport function cellAlignClassName(\n context: CellContext,\n) {\n const meta = (context.column.columnDef as DataTableColumnDef)\n .meta;\n return alignClassName(resolveColumnAlign(meta?.align, meta?.type));\n}\n\nexport function hideOnClassName(\n hideOn:\n | DataTableContainerBreakpoint\n | Array\n | undefined,\n) {\n if (!hideOn) {\n return undefined;\n }\n\n const values = Array.isArray(hideOn) ? hideOn : [hideOn];\n return values.map((value) => `dt-hide-on-${value}`).join(\" \");\n}\n\nexport function isHiddenAtContainerWidth(\n hideOn:\n | DataTableContainerBreakpoint\n | Array\n | undefined,\n containerWidth: number,\n) {\n if (!hideOn || containerWidth <= 0) {\n return false;\n }\n\n const values = Array.isArray(hideOn) ? hideOn : [hideOn];\n return values.some(\n (value) => containerWidth < DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS[value],\n );\n}\n\nexport function rowSelectionStateFromRows(rows: Array>) {\n return rows.map((row) => row.original);\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-BTA3VDTU.js b/dist/chunk-ARW55TNZ.js similarity index 97% rename from dist/chunk-BTA3VDTU.js rename to dist/chunk-ARW55TNZ.js index f64f990..96b0213 100644 --- a/dist/chunk-BTA3VDTU.js +++ b/dist/chunk-ARW55TNZ.js @@ -1,2 +1,2 @@ -import {X as X$1,a as a$1,c,e,g,h,i,j as j$1,k,l,m,n,p,o,q as q$1,u,s,z as z$1,w,y,x,H,I,J as J$1,L,K as K$1,M,b,N as N$1,R,T,W as W$1}from'./chunk-7EXRF7VC.js';import {a}from'./chunk-PFB5LOU7.js';import'react';import {jsx}from'react/jsx-runtime';function r(H,L){return function({className:A,...R}){return jsx(H,{className:a(L,A),...R})}}var U=r(a$1,"rounded-md text-foreground data-[variant=default]:border-primary data-[variant=default]:bg-primary data-[variant=default]:text-primary-foreground data-[variant=outline]:border-input data-[variant=outline]:bg-card data-[variant=outline]:hover:bg-accent data-[variant=outline]:hover:text-accent-foreground data-[variant=secondary]:border-secondary data-[variant=secondary]:bg-secondary data-[variant=secondary]:text-secondary-foreground data-[variant=ghost]:border-transparent data-[variant=ghost]:bg-transparent data-[variant=ghost]:hover:bg-accent data-[variant=ghost]:hover:text-accent-foreground data-[variant=destructive]:border-destructive data-[variant=destructive]:bg-destructive data-[variant=destructive]:text-destructive-foreground data-[variant=link]:border-transparent data-[variant=link]:bg-transparent"),N=r(c,"rounded-xl border-border bg-card text-card-foreground shadow-sm ring-0"),z=r(e,"text-muted-foreground"),K=r(g,"border-t border-border/60 bg-muted/50"),_=r(h,"border-input bg-card ring-ring/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground data-checked:ring-primary"),O=r(i,"border-border bg-popover text-popover-foreground shadow-md"),V=r(j$1,"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10"),W=r(k,"focus:bg-accent focus:text-accent-foreground"),q=r(l,"focus:bg-accent focus:text-accent-foreground"),J=r(m,"text-muted-foreground"),Q=r(n,"bg-border"),X=r(p,"border-border bg-popover text-popover-foreground shadow-md"),Y=r(o,"focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground"),Z=r(q$1,"rounded-2xl border-border/60 bg-background/70"),$=r(u,"text-muted-foreground"),j=r(s,"[&[data-variant=icon]]:bg-muted [&[data-variant=icon]]:text-foreground"),rr=r(z$1,"rounded-md border-input bg-card text-foreground placeholder:text-muted-foreground"),er=r(w,"rounded-md border-input bg-card text-foreground"),tr=r(y,"text-muted-foreground"),or=r(x,"bg-transparent"),ar=r(H,"[&>[data-slot=scroll-area-thumb]]:bg-border"),nr=r(I,"rounded-md border-input bg-card text-foreground"),dr=r(J$1,"border-border bg-popover text-popover-foreground shadow-md"),ir=r(L,"focus:bg-accent focus:text-accent-foreground"),cr=r(K$1,"text-muted-foreground"),ur=r(M,"bg-border"),pr=r(b,"bg-border"),br=r(N$1,"bg-muted"),sr=r(R,"border-border bg-muted/50"),gr=r(T,"text-foreground"),mr=r(W$1,"bg-foreground text-background ring-1 ring-foreground/10 [&>svg]:bg-foreground [&>svg]:fill-foreground"),xr={...X$1,rootClassName:"dtp-shadcn",classNames:{card:"hover:bg-muted/50 data-[state=selected]:bg-primary/10",cardGrid:"bg-transparent",cardItem:"min-w-0",cardOverlay:"from-background/95 via-background/85 to-transparent",cardScrollArea:"bg-transparent",cardSelected:"bg-primary/10 ring-primary",cardUnselected:"border-border",cardViewport:"bg-transparent",cellBorder:"border-border/40",columnGroupHeader:"bg-muted/50 font-semibold",dragActive:"rounded-md border-dashed border-primary",emptyState:"border-border/60 bg-background/70",footer:"border-border bg-card",headerSortIcon:"text-muted-foreground",mutedText:"text-muted-foreground",paginationSelectTrigger:"border-input bg-card",paginationTotal:"text-muted-foreground",pinnedColumn:"border-border",pinnedUtilityColumn:"bg-card",resizeHandle:"after:bg-border hover:after:bg-primary",resizeHandleActive:"after:bg-primary",row:"hover:bg-muted/50 data-[state=selected]:!bg-primary/10",rowSelected:"!bg-primary/10",tableContainer:"border-border bg-card text-card-foreground",tableStickyHeader:"sticky top-0 z-30 bg-card/95 backdrop-blur [&_th]:border-border [&_th]:bg-card/95",toolbarCompactIconButton:"size-7",toolbarIconButton:"text-muted-foreground hover:text-foreground",toolbarInputButton:"border-input bg-card"},Button:U,Card:N,CardDescription:z,CardFooter:K,Checkbox:_,DropdownMenuCheckboxItem:W,DropdownMenuContent:O,DropdownMenuItem:V,DropdownMenuLabel:J,DropdownMenuRadioItem:q,DropdownMenuSeparator:Q,DropdownMenuSubContent:X,DropdownMenuSubTrigger:Y,Empty:Z,EmptyDescription:$,EmptyMedia:j,Input:rr,InputGroup:er,InputGroupAddon:tr,InputGroupInput:or,ScrollBar:ar,SelectContent:dr,SelectItem:ir,SelectLabel:cr,SelectSeparator:ur,SelectTrigger:nr,Separator:pr,Skeleton:br,TableFooter:sr,TableHead:gr,TooltipContent:mr};export{xr as a};//# sourceMappingURL=chunk-BTA3VDTU.js.map -//# sourceMappingURL=chunk-BTA3VDTU.js.map \ No newline at end of file +import {X as X$1,a as a$1,c,e,g,h,i,j as j$1,k,l,m,n,p,o,q as q$1,u,s,z as z$1,w,y,x,H,I,J as J$1,L,K as K$1,M,b,N as N$1,R,T,W as W$1}from'./chunk-ERWHHOBD.js';import {a}from'./chunk-674VSOYY.js';import'react';import {jsx}from'react/jsx-runtime';function r(H,L){return function({className:A,...R}){return jsx(H,{className:a(L,A),...R})}}var U=r(a$1,"rounded-md text-foreground data-[variant=default]:border-primary data-[variant=default]:bg-primary data-[variant=default]:text-primary-foreground data-[variant=outline]:border-input data-[variant=outline]:bg-card data-[variant=outline]:hover:bg-accent data-[variant=outline]:hover:text-accent-foreground data-[variant=secondary]:border-secondary data-[variant=secondary]:bg-secondary data-[variant=secondary]:text-secondary-foreground data-[variant=ghost]:border-transparent data-[variant=ghost]:bg-transparent data-[variant=ghost]:hover:bg-accent data-[variant=ghost]:hover:text-accent-foreground data-[variant=destructive]:border-destructive data-[variant=destructive]:bg-destructive data-[variant=destructive]:text-destructive-foreground data-[variant=link]:border-transparent data-[variant=link]:bg-transparent"),N=r(c,"rounded-xl border-border bg-card text-card-foreground shadow-sm ring-0"),z=r(e,"text-muted-foreground"),K=r(g,"border-t border-border/60 bg-muted/50"),_=r(h,"border-input bg-card ring-ring/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground data-checked:ring-primary"),O=r(i,"border-border bg-popover text-popover-foreground shadow-md"),V=r(j$1,"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10"),W=r(k,"focus:bg-accent focus:text-accent-foreground"),q=r(l,"focus:bg-accent focus:text-accent-foreground"),J=r(m,"text-muted-foreground"),Q=r(n,"bg-border"),X=r(p,"border-border bg-popover text-popover-foreground shadow-md"),Y=r(o,"focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground"),Z=r(q$1,"rounded-2xl border-border/60 bg-background/70"),$=r(u,"text-muted-foreground"),j=r(s,"[&[data-variant=icon]]:bg-muted [&[data-variant=icon]]:text-foreground"),rr=r(z$1,"rounded-md border-input bg-card text-foreground placeholder:text-muted-foreground"),er=r(w,"rounded-md border-input bg-card text-foreground"),tr=r(y,"text-muted-foreground"),or=r(x,"bg-transparent"),ar=r(H,"[&>[data-slot=scroll-area-thumb]]:bg-border"),nr=r(I,"rounded-md border-input bg-card text-foreground"),dr=r(J$1,"border-border bg-popover text-popover-foreground shadow-md"),ir=r(L,"focus:bg-accent focus:text-accent-foreground"),cr=r(K$1,"text-muted-foreground"),ur=r(M,"bg-border"),pr=r(b,"bg-border"),br=r(N$1,"bg-muted"),sr=r(R,"border-border bg-muted/50"),gr=r(T,"text-foreground"),mr=r(W$1,"bg-foreground text-background ring-1 ring-foreground/10 [&>svg]:bg-foreground [&>svg]:fill-foreground"),xr={...X$1,rootClassName:"dtp-shadcn",classNames:{card:"hover:bg-muted/50 data-[state=selected]:bg-primary/10",cardGrid:"bg-transparent",cardItem:"min-w-0",cardOverlay:"from-background/95 via-background/85 to-transparent",cardScrollArea:"bg-transparent",cardSelected:"bg-primary/10 ring-primary",cardUnselected:"border-border",cardViewport:"bg-transparent",cellBorder:"border-border/40",columnGroupHeader:"bg-muted/50 font-semibold",dragActive:"rounded-md border-dashed border-primary",emptyState:"border-border/60 bg-background/70",footer:"border-border bg-card",headerSortIcon:"text-muted-foreground",mutedText:"text-muted-foreground",paginationSelectTrigger:"border-input bg-card",paginationTotal:"text-muted-foreground",pinnedColumn:"border-border",pinnedUtilityColumn:"bg-card",resizeHandle:"after:bg-border hover:after:bg-primary",resizeHandleActive:"after:bg-primary",row:"hover:bg-muted/50 data-[state=selected]:!bg-primary/10",rowSelected:"!bg-primary/10",tableContainer:"border-border bg-card text-card-foreground",tableStickyHeader:"sticky top-0 z-30 bg-card/95 backdrop-blur [&_th]:border-border [&_th]:bg-card/95",toolbarCompactIconButton:"size-7",toolbarIconButton:"text-muted-foreground hover:text-foreground",toolbarInputButton:"border-input bg-card"},Button:U,Card:N,CardDescription:z,CardFooter:K,Checkbox:_,DropdownMenuCheckboxItem:W,DropdownMenuContent:O,DropdownMenuItem:V,DropdownMenuLabel:J,DropdownMenuRadioItem:q,DropdownMenuSeparator:Q,DropdownMenuSubContent:X,DropdownMenuSubTrigger:Y,Empty:Z,EmptyDescription:$,EmptyMedia:j,Input:rr,InputGroup:er,InputGroupAddon:tr,InputGroupInput:or,ScrollBar:ar,SelectContent:dr,SelectItem:ir,SelectLabel:cr,SelectSeparator:ur,SelectTrigger:nr,Separator:pr,Skeleton:br,TableFooter:sr,TableHead:gr,TooltipContent:mr};export{xr as a};//# sourceMappingURL=chunk-ARW55TNZ.js.map +//# sourceMappingURL=chunk-ARW55TNZ.js.map \ No newline at end of file diff --git a/dist/chunk-BTA3VDTU.js.map b/dist/chunk-ARW55TNZ.js.map similarity index 99% rename from dist/chunk-BTA3VDTU.js.map rename to dist/chunk-ARW55TNZ.js.map index 4d62371..36fad75 100644 --- a/dist/chunk-BTA3VDTU.js.map +++ b/dist/chunk-ARW55TNZ.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/adapters/shadcn/index.tsx"],"names":["withClassName","Component","defaultClassName","className","props","jsx","cn","ShadcnButton","Button","ShadcnCard","Card","ShadcnCardDescription","CardDescription","ShadcnCardFooter","CardFooter","ShadcnCheckbox","Checkbox","ShadcnDropdownMenuContent","DropdownMenuContent","ShadcnDropdownMenuItem","DropdownMenuItem","ShadcnDropdownMenuCheckboxItem","DropdownMenuCheckboxItem","ShadcnDropdownMenuRadioItem","DropdownMenuRadioItem","ShadcnDropdownMenuLabel","DropdownMenuLabel","ShadcnDropdownMenuSeparator","DropdownMenuSeparator","ShadcnDropdownMenuSubContent","DropdownMenuSubContent","ShadcnDropdownMenuSubTrigger","DropdownMenuSubTrigger","ShadcnEmpty","Empty","ShadcnEmptyDescription","EmptyDescription","ShadcnEmptyMedia","EmptyMedia","ShadcnInput","Input","ShadcnInputGroup","InputGroup","ShadcnInputGroupAddon","InputGroupAddon","ShadcnInputGroupInput","InputGroupInput","ShadcnScrollBar","ScrollBar","ShadcnSelectTrigger","SelectTrigger","ShadcnSelectContent","SelectContent","ShadcnSelectItem","SelectItem","ShadcnSelectLabel","SelectLabel","ShadcnSelectSeparator","SelectSeparator","ShadcnSeparator","Separator","ShadcnSkeleton","Skeleton","ShadcnTableFooter","TableFooter","ShadcnTableHead","TableHead","ShadcnTooltipContent","TooltipContent","shadcnUiKit","primitiveUiKit"],"mappings":"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","file":"chunk-BTA3VDTU.js","sourcesContent":["import * as React from \"react\";\nimport type { DataTableUiKit } from \"../../core/ui-kit\";\nimport {\n Button as PrimitiveButton,\n Card as PrimitiveCard,\n CardDescription as PrimitiveCardDescription,\n CardFooter as PrimitiveCardFooter,\n Checkbox as PrimitiveCheckbox,\n DropdownMenuCheckboxItem as PrimitiveDropdownMenuCheckboxItem,\n DropdownMenuContent as PrimitiveDropdownMenuContent,\n DropdownMenuItem as PrimitiveDropdownMenuItem,\n DropdownMenuLabel as PrimitiveDropdownMenuLabel,\n DropdownMenuRadioItem as PrimitiveDropdownMenuRadioItem,\n DropdownMenuSeparator as PrimitiveDropdownMenuSeparator,\n DropdownMenuSubContent as PrimitiveDropdownMenuSubContent,\n DropdownMenuSubTrigger as PrimitiveDropdownMenuSubTrigger,\n Empty as PrimitiveEmpty,\n EmptyDescription as PrimitiveEmptyDescription,\n EmptyMedia as PrimitiveEmptyMedia,\n Input as PrimitiveInput,\n InputGroup as PrimitiveInputGroup,\n InputGroupAddon as PrimitiveInputGroupAddon,\n InputGroupInput as PrimitiveInputGroupInput,\n ScrollBar as PrimitiveScrollBar,\n SelectContent as PrimitiveSelectContent,\n SelectItem as PrimitiveSelectItem,\n SelectLabel as PrimitiveSelectLabel,\n SelectSeparator as PrimitiveSelectSeparator,\n SelectTrigger as PrimitiveSelectTrigger,\n Separator as PrimitiveSeparator,\n Skeleton as PrimitiveSkeleton,\n TableFooter as PrimitiveTableFooter,\n TableHead as PrimitiveTableHead,\n TooltipContent as PrimitiveTooltipContent,\n primitiveUiKit,\n} from \"../../core/primitive-ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nfunction withClassName(\n Component: React.ComponentType,\n defaultClassName: string,\n) {\n return function Wrapped({ className, ...props }: TProps) {\n return (\n \n );\n };\n}\n\nconst ShadcnButton = withClassName(\n PrimitiveButton,\n \"rounded-md text-foreground data-[variant=default]:border-primary data-[variant=default]:bg-primary data-[variant=default]:text-primary-foreground data-[variant=outline]:border-input data-[variant=outline]:bg-card data-[variant=outline]:hover:bg-accent data-[variant=outline]:hover:text-accent-foreground data-[variant=secondary]:border-secondary data-[variant=secondary]:bg-secondary data-[variant=secondary]:text-secondary-foreground data-[variant=ghost]:border-transparent data-[variant=ghost]:bg-transparent data-[variant=ghost]:hover:bg-accent data-[variant=ghost]:hover:text-accent-foreground data-[variant=destructive]:border-destructive data-[variant=destructive]:bg-destructive data-[variant=destructive]:text-destructive-foreground data-[variant=link]:border-transparent data-[variant=link]:bg-transparent\",\n);\nconst ShadcnCard = withClassName(\n PrimitiveCard,\n \"rounded-xl border-border bg-card text-card-foreground shadow-sm ring-0\",\n);\nconst ShadcnCardDescription = withClassName(\n PrimitiveCardDescription,\n \"text-muted-foreground\",\n);\nconst ShadcnCardFooter = withClassName(\n PrimitiveCardFooter,\n \"border-t border-border/60 bg-muted/50\",\n);\nconst ShadcnCheckbox = withClassName(\n PrimitiveCheckbox,\n \"border-input bg-card ring-ring/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground data-checked:ring-primary\",\n);\nconst ShadcnDropdownMenuContent = withClassName(\n PrimitiveDropdownMenuContent,\n \"border-border bg-popover text-popover-foreground shadow-md\",\n);\nconst ShadcnDropdownMenuItem = withClassName(\n PrimitiveDropdownMenuItem,\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10\",\n);\nconst ShadcnDropdownMenuCheckboxItem = withClassName(\n PrimitiveDropdownMenuCheckboxItem,\n \"focus:bg-accent focus:text-accent-foreground\",\n);\nconst ShadcnDropdownMenuRadioItem = withClassName(\n PrimitiveDropdownMenuRadioItem,\n \"focus:bg-accent focus:text-accent-foreground\",\n);\nconst ShadcnDropdownMenuLabel = withClassName(\n PrimitiveDropdownMenuLabel,\n \"text-muted-foreground\",\n);\nconst ShadcnDropdownMenuSeparator = withClassName(\n PrimitiveDropdownMenuSeparator,\n \"bg-border\",\n);\nconst ShadcnDropdownMenuSubContent = withClassName(\n PrimitiveDropdownMenuSubContent,\n \"border-border bg-popover text-popover-foreground shadow-md\",\n);\nconst ShadcnDropdownMenuSubTrigger = withClassName(\n PrimitiveDropdownMenuSubTrigger,\n \"focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground\",\n);\nconst ShadcnEmpty = withClassName(\n PrimitiveEmpty,\n \"rounded-2xl border-border/60 bg-background/70\",\n);\nconst ShadcnEmptyDescription = withClassName(\n PrimitiveEmptyDescription,\n \"text-muted-foreground\",\n);\nconst ShadcnEmptyMedia = withClassName(\n PrimitiveEmptyMedia,\n \"[&[data-variant=icon]]:bg-muted [&[data-variant=icon]]:text-foreground\",\n);\nconst ShadcnInput = withClassName(\n PrimitiveInput,\n \"rounded-md border-input bg-card text-foreground placeholder:text-muted-foreground\",\n);\nconst ShadcnInputGroup = withClassName(\n PrimitiveInputGroup,\n \"rounded-md border-input bg-card text-foreground\",\n);\nconst ShadcnInputGroupAddon = withClassName(\n PrimitiveInputGroupAddon,\n \"text-muted-foreground\",\n);\nconst ShadcnInputGroupInput = withClassName(\n PrimitiveInputGroupInput,\n \"bg-transparent\",\n);\nconst ShadcnScrollBar = withClassName(\n PrimitiveScrollBar,\n \"[&>[data-slot=scroll-area-thumb]]:bg-border\",\n);\nconst ShadcnSelectTrigger = withClassName(\n PrimitiveSelectTrigger,\n \"rounded-md border-input bg-card text-foreground\",\n);\nconst ShadcnSelectContent = withClassName(\n PrimitiveSelectContent,\n \"border-border bg-popover text-popover-foreground shadow-md\",\n);\nconst ShadcnSelectItem = withClassName(\n PrimitiveSelectItem,\n \"focus:bg-accent focus:text-accent-foreground\",\n);\nconst ShadcnSelectLabel = withClassName(\n PrimitiveSelectLabel,\n \"text-muted-foreground\",\n);\nconst ShadcnSelectSeparator = withClassName(\n PrimitiveSelectSeparator,\n \"bg-border\",\n);\nconst ShadcnSeparator = withClassName(PrimitiveSeparator, \"bg-border\");\nconst ShadcnSkeleton = withClassName(PrimitiveSkeleton, \"bg-muted\");\nconst ShadcnTableFooter = withClassName(\n PrimitiveTableFooter,\n \"border-border bg-muted/50\",\n);\nconst ShadcnTableHead = withClassName(\n PrimitiveTableHead,\n \"text-foreground\",\n);\nconst ShadcnTooltipContent = withClassName(\n PrimitiveTooltipContent,\n \"bg-foreground text-background ring-1 ring-foreground/10 [&>svg]:bg-foreground [&>svg]:fill-foreground\",\n);\n\nexport const shadcnUiKit: DataTableUiKit = {\n ...primitiveUiKit,\n rootClassName: \"dtp-shadcn\",\n classNames: {\n card: \"hover:bg-muted/50 data-[state=selected]:bg-primary/10\",\n cardGrid: \"bg-transparent\",\n cardItem: \"min-w-0\",\n cardOverlay: \"from-background/95 via-background/85 to-transparent\",\n cardScrollArea: \"bg-transparent\",\n cardSelected: \"bg-primary/10 ring-primary\",\n cardUnselected: \"border-border\",\n cardViewport: \"bg-transparent\",\n cellBorder: \"border-border/40\",\n columnGroupHeader: \"bg-muted/50 font-semibold\",\n dragActive: \"rounded-md border-dashed border-primary\",\n emptyState: \"border-border/60 bg-background/70\",\n footer: \"border-border bg-card\",\n headerSortIcon: \"text-muted-foreground\",\n mutedText: \"text-muted-foreground\",\n paginationSelectTrigger: \"border-input bg-card\",\n paginationTotal: \"text-muted-foreground\",\n pinnedColumn: \"border-border\",\n pinnedUtilityColumn: \"bg-card\",\n resizeHandle: \"after:bg-border hover:after:bg-primary\",\n resizeHandleActive: \"after:bg-primary\",\n row: \"hover:bg-muted/50 data-[state=selected]:!bg-primary/10\",\n rowSelected: \"!bg-primary/10\",\n tableContainer: \"border-border bg-card text-card-foreground\",\n tableStickyHeader:\n \"sticky top-0 z-30 bg-card/95 backdrop-blur [&_th]:border-border [&_th]:bg-card/95\",\n toolbarCompactIconButton: \"size-7\",\n toolbarIconButton: \"text-muted-foreground hover:text-foreground\",\n toolbarInputButton: \"border-input bg-card\",\n },\n Button: ShadcnButton,\n Card: ShadcnCard,\n CardDescription: ShadcnCardDescription,\n CardFooter: ShadcnCardFooter,\n Checkbox: ShadcnCheckbox,\n DropdownMenuCheckboxItem: ShadcnDropdownMenuCheckboxItem,\n DropdownMenuContent: ShadcnDropdownMenuContent,\n DropdownMenuItem: ShadcnDropdownMenuItem,\n DropdownMenuLabel: ShadcnDropdownMenuLabel,\n DropdownMenuRadioItem: ShadcnDropdownMenuRadioItem,\n DropdownMenuSeparator: ShadcnDropdownMenuSeparator,\n DropdownMenuSubContent: ShadcnDropdownMenuSubContent,\n DropdownMenuSubTrigger: ShadcnDropdownMenuSubTrigger,\n Empty: ShadcnEmpty,\n EmptyDescription: ShadcnEmptyDescription,\n EmptyMedia: ShadcnEmptyMedia,\n Input: ShadcnInput,\n InputGroup: ShadcnInputGroup,\n InputGroupAddon: ShadcnInputGroupAddon,\n InputGroupInput: ShadcnInputGroupInput,\n ScrollBar: ShadcnScrollBar,\n SelectContent: ShadcnSelectContent,\n SelectItem: ShadcnSelectItem,\n SelectLabel: ShadcnSelectLabel,\n SelectSeparator: ShadcnSelectSeparator,\n SelectTrigger: ShadcnSelectTrigger,\n Separator: ShadcnSeparator,\n Skeleton: ShadcnSkeleton,\n TableFooter: ShadcnTableFooter,\n TableHead: ShadcnTableHead,\n TooltipContent: ShadcnTooltipContent,\n};\n"]} \ No newline at end of file +{"version":3,"sources":["../src/adapters/shadcn/index.tsx"],"names":["withClassName","Component","defaultClassName","className","props","jsx","cn","ShadcnButton","Button","ShadcnCard","Card","ShadcnCardDescription","CardDescription","ShadcnCardFooter","CardFooter","ShadcnCheckbox","Checkbox","ShadcnDropdownMenuContent","DropdownMenuContent","ShadcnDropdownMenuItem","DropdownMenuItem","ShadcnDropdownMenuCheckboxItem","DropdownMenuCheckboxItem","ShadcnDropdownMenuRadioItem","DropdownMenuRadioItem","ShadcnDropdownMenuLabel","DropdownMenuLabel","ShadcnDropdownMenuSeparator","DropdownMenuSeparator","ShadcnDropdownMenuSubContent","DropdownMenuSubContent","ShadcnDropdownMenuSubTrigger","DropdownMenuSubTrigger","ShadcnEmpty","Empty","ShadcnEmptyDescription","EmptyDescription","ShadcnEmptyMedia","EmptyMedia","ShadcnInput","Input","ShadcnInputGroup","InputGroup","ShadcnInputGroupAddon","InputGroupAddon","ShadcnInputGroupInput","InputGroupInput","ShadcnScrollBar","ScrollBar","ShadcnSelectTrigger","SelectTrigger","ShadcnSelectContent","SelectContent","ShadcnSelectItem","SelectItem","ShadcnSelectLabel","SelectLabel","ShadcnSelectSeparator","SelectSeparator","ShadcnSeparator","Separator","ShadcnSkeleton","Skeleton","ShadcnTableFooter","TableFooter","ShadcnTableHead","TableHead","ShadcnTooltipContent","TooltipContent","shadcnUiKit","primitiveUiKit"],"mappings":"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","file":"chunk-ARW55TNZ.js","sourcesContent":["import * as React from \"react\";\nimport type { DataTableUiKit } from \"../../core/ui-kit\";\nimport {\n Button as PrimitiveButton,\n Card as PrimitiveCard,\n CardDescription as PrimitiveCardDescription,\n CardFooter as PrimitiveCardFooter,\n Checkbox as PrimitiveCheckbox,\n DropdownMenuCheckboxItem as PrimitiveDropdownMenuCheckboxItem,\n DropdownMenuContent as PrimitiveDropdownMenuContent,\n DropdownMenuItem as PrimitiveDropdownMenuItem,\n DropdownMenuLabel as PrimitiveDropdownMenuLabel,\n DropdownMenuRadioItem as PrimitiveDropdownMenuRadioItem,\n DropdownMenuSeparator as PrimitiveDropdownMenuSeparator,\n DropdownMenuSubContent as PrimitiveDropdownMenuSubContent,\n DropdownMenuSubTrigger as PrimitiveDropdownMenuSubTrigger,\n Empty as PrimitiveEmpty,\n EmptyDescription as PrimitiveEmptyDescription,\n EmptyMedia as PrimitiveEmptyMedia,\n Input as PrimitiveInput,\n InputGroup as PrimitiveInputGroup,\n InputGroupAddon as PrimitiveInputGroupAddon,\n InputGroupInput as PrimitiveInputGroupInput,\n ScrollBar as PrimitiveScrollBar,\n SelectContent as PrimitiveSelectContent,\n SelectItem as PrimitiveSelectItem,\n SelectLabel as PrimitiveSelectLabel,\n SelectSeparator as PrimitiveSelectSeparator,\n SelectTrigger as PrimitiveSelectTrigger,\n Separator as PrimitiveSeparator,\n Skeleton as PrimitiveSkeleton,\n TableFooter as PrimitiveTableFooter,\n TableHead as PrimitiveTableHead,\n TooltipContent as PrimitiveTooltipContent,\n primitiveUiKit,\n} from \"../../core/primitive-ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nfunction withClassName(\n Component: React.ComponentType,\n defaultClassName: string,\n) {\n return function Wrapped({ className, ...props }: TProps) {\n return (\n \n );\n };\n}\n\nconst ShadcnButton = withClassName(\n PrimitiveButton,\n \"rounded-md text-foreground data-[variant=default]:border-primary data-[variant=default]:bg-primary data-[variant=default]:text-primary-foreground data-[variant=outline]:border-input data-[variant=outline]:bg-card data-[variant=outline]:hover:bg-accent data-[variant=outline]:hover:text-accent-foreground data-[variant=secondary]:border-secondary data-[variant=secondary]:bg-secondary data-[variant=secondary]:text-secondary-foreground data-[variant=ghost]:border-transparent data-[variant=ghost]:bg-transparent data-[variant=ghost]:hover:bg-accent data-[variant=ghost]:hover:text-accent-foreground data-[variant=destructive]:border-destructive data-[variant=destructive]:bg-destructive data-[variant=destructive]:text-destructive-foreground data-[variant=link]:border-transparent data-[variant=link]:bg-transparent\",\n);\nconst ShadcnCard = withClassName(\n PrimitiveCard,\n \"rounded-xl border-border bg-card text-card-foreground shadow-sm ring-0\",\n);\nconst ShadcnCardDescription = withClassName(\n PrimitiveCardDescription,\n \"text-muted-foreground\",\n);\nconst ShadcnCardFooter = withClassName(\n PrimitiveCardFooter,\n \"border-t border-border/60 bg-muted/50\",\n);\nconst ShadcnCheckbox = withClassName(\n PrimitiveCheckbox,\n \"border-input bg-card ring-ring/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground data-checked:ring-primary\",\n);\nconst ShadcnDropdownMenuContent = withClassName(\n PrimitiveDropdownMenuContent,\n \"border-border bg-popover text-popover-foreground shadow-md\",\n);\nconst ShadcnDropdownMenuItem = withClassName(\n PrimitiveDropdownMenuItem,\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10\",\n);\nconst ShadcnDropdownMenuCheckboxItem = withClassName(\n PrimitiveDropdownMenuCheckboxItem,\n \"focus:bg-accent focus:text-accent-foreground\",\n);\nconst ShadcnDropdownMenuRadioItem = withClassName(\n PrimitiveDropdownMenuRadioItem,\n \"focus:bg-accent focus:text-accent-foreground\",\n);\nconst ShadcnDropdownMenuLabel = withClassName(\n PrimitiveDropdownMenuLabel,\n \"text-muted-foreground\",\n);\nconst ShadcnDropdownMenuSeparator = withClassName(\n PrimitiveDropdownMenuSeparator,\n \"bg-border\",\n);\nconst ShadcnDropdownMenuSubContent = withClassName(\n PrimitiveDropdownMenuSubContent,\n \"border-border bg-popover text-popover-foreground shadow-md\",\n);\nconst ShadcnDropdownMenuSubTrigger = withClassName(\n PrimitiveDropdownMenuSubTrigger,\n \"focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground\",\n);\nconst ShadcnEmpty = withClassName(\n PrimitiveEmpty,\n \"rounded-2xl border-border/60 bg-background/70\",\n);\nconst ShadcnEmptyDescription = withClassName(\n PrimitiveEmptyDescription,\n \"text-muted-foreground\",\n);\nconst ShadcnEmptyMedia = withClassName(\n PrimitiveEmptyMedia,\n \"[&[data-variant=icon]]:bg-muted [&[data-variant=icon]]:text-foreground\",\n);\nconst ShadcnInput = withClassName(\n PrimitiveInput,\n \"rounded-md border-input bg-card text-foreground placeholder:text-muted-foreground\",\n);\nconst ShadcnInputGroup = withClassName(\n PrimitiveInputGroup,\n \"rounded-md border-input bg-card text-foreground\",\n);\nconst ShadcnInputGroupAddon = withClassName(\n PrimitiveInputGroupAddon,\n \"text-muted-foreground\",\n);\nconst ShadcnInputGroupInput = withClassName(\n PrimitiveInputGroupInput,\n \"bg-transparent\",\n);\nconst ShadcnScrollBar = withClassName(\n PrimitiveScrollBar,\n \"[&>[data-slot=scroll-area-thumb]]:bg-border\",\n);\nconst ShadcnSelectTrigger = withClassName(\n PrimitiveSelectTrigger,\n \"rounded-md border-input bg-card text-foreground\",\n);\nconst ShadcnSelectContent = withClassName(\n PrimitiveSelectContent,\n \"border-border bg-popover text-popover-foreground shadow-md\",\n);\nconst ShadcnSelectItem = withClassName(\n PrimitiveSelectItem,\n \"focus:bg-accent focus:text-accent-foreground\",\n);\nconst ShadcnSelectLabel = withClassName(\n PrimitiveSelectLabel,\n \"text-muted-foreground\",\n);\nconst ShadcnSelectSeparator = withClassName(\n PrimitiveSelectSeparator,\n \"bg-border\",\n);\nconst ShadcnSeparator = withClassName(PrimitiveSeparator, \"bg-border\");\nconst ShadcnSkeleton = withClassName(PrimitiveSkeleton, \"bg-muted\");\nconst ShadcnTableFooter = withClassName(\n PrimitiveTableFooter,\n \"border-border bg-muted/50\",\n);\nconst ShadcnTableHead = withClassName(\n PrimitiveTableHead,\n \"text-foreground\",\n);\nconst ShadcnTooltipContent = withClassName(\n PrimitiveTooltipContent,\n \"bg-foreground text-background ring-1 ring-foreground/10 [&>svg]:bg-foreground [&>svg]:fill-foreground\",\n);\n\nexport const shadcnUiKit: DataTableUiKit = {\n ...primitiveUiKit,\n rootClassName: \"dtp-shadcn\",\n classNames: {\n card: \"hover:bg-muted/50 data-[state=selected]:bg-primary/10\",\n cardGrid: \"bg-transparent\",\n cardItem: \"min-w-0\",\n cardOverlay: \"from-background/95 via-background/85 to-transparent\",\n cardScrollArea: \"bg-transparent\",\n cardSelected: \"bg-primary/10 ring-primary\",\n cardUnselected: \"border-border\",\n cardViewport: \"bg-transparent\",\n cellBorder: \"border-border/40\",\n columnGroupHeader: \"bg-muted/50 font-semibold\",\n dragActive: \"rounded-md border-dashed border-primary\",\n emptyState: \"border-border/60 bg-background/70\",\n footer: \"border-border bg-card\",\n headerSortIcon: \"text-muted-foreground\",\n mutedText: \"text-muted-foreground\",\n paginationSelectTrigger: \"border-input bg-card\",\n paginationTotal: \"text-muted-foreground\",\n pinnedColumn: \"border-border\",\n pinnedUtilityColumn: \"bg-card\",\n resizeHandle: \"after:bg-border hover:after:bg-primary\",\n resizeHandleActive: \"after:bg-primary\",\n row: \"hover:bg-muted/50 data-[state=selected]:!bg-primary/10\",\n rowSelected: \"!bg-primary/10\",\n tableContainer: \"border-border bg-card text-card-foreground\",\n tableStickyHeader:\n \"sticky top-0 z-30 bg-card/95 backdrop-blur [&_th]:border-border [&_th]:bg-card/95\",\n toolbarCompactIconButton: \"size-7\",\n toolbarIconButton: \"text-muted-foreground hover:text-foreground\",\n toolbarInputButton: \"border-input bg-card\",\n },\n Button: ShadcnButton,\n Card: ShadcnCard,\n CardDescription: ShadcnCardDescription,\n CardFooter: ShadcnCardFooter,\n Checkbox: ShadcnCheckbox,\n DropdownMenuCheckboxItem: ShadcnDropdownMenuCheckboxItem,\n DropdownMenuContent: ShadcnDropdownMenuContent,\n DropdownMenuItem: ShadcnDropdownMenuItem,\n DropdownMenuLabel: ShadcnDropdownMenuLabel,\n DropdownMenuRadioItem: ShadcnDropdownMenuRadioItem,\n DropdownMenuSeparator: ShadcnDropdownMenuSeparator,\n DropdownMenuSubContent: ShadcnDropdownMenuSubContent,\n DropdownMenuSubTrigger: ShadcnDropdownMenuSubTrigger,\n Empty: ShadcnEmpty,\n EmptyDescription: ShadcnEmptyDescription,\n EmptyMedia: ShadcnEmptyMedia,\n Input: ShadcnInput,\n InputGroup: ShadcnInputGroup,\n InputGroupAddon: ShadcnInputGroupAddon,\n InputGroupInput: ShadcnInputGroupInput,\n ScrollBar: ShadcnScrollBar,\n SelectContent: ShadcnSelectContent,\n SelectItem: ShadcnSelectItem,\n SelectLabel: ShadcnSelectLabel,\n SelectSeparator: ShadcnSelectSeparator,\n SelectTrigger: ShadcnSelectTrigger,\n Separator: ShadcnSeparator,\n Skeleton: ShadcnSkeleton,\n TableFooter: ShadcnTableFooter,\n TableHead: ShadcnTableHead,\n TooltipContent: ShadcnTooltipContent,\n};\n"]} \ No newline at end of file diff --git a/dist/chunk-EJHT5JBZ.js b/dist/chunk-EJHT5JBZ.js new file mode 100644 index 0000000..4304cfc --- /dev/null +++ b/dist/chunk-EJHT5JBZ.js @@ -0,0 +1,2 @@ +import*as t from'react';function f(r,c){let[s,m]=t.useState(null),[w,l]=t.useState(0);return t.useEffect(()=>{let n=r.current?.querySelector("[data-slot='scroll-area-viewport']")??null;if(m(n),!n){l(0);return}let e=null,o=()=>{l(u=>{let a=n.clientHeight;return u===a?u:a});};if(o(),typeof ResizeObserver>"u")return;let i=new ResizeObserver(()=>{e!==null&&window.cancelAnimationFrame(e),e=window.requestAnimationFrame(()=>{e=null,o();});});return i.observe(n),()=>{e!==null&&window.cancelAnimationFrame(e),i.disconnect();}},[r,c]),{viewportElement:s,viewportHeight:w}}export{f as a};//# sourceMappingURL=chunk-EJHT5JBZ.js.map +//# sourceMappingURL=chunk-EJHT5JBZ.js.map \ No newline at end of file diff --git a/dist/chunk-EJHT5JBZ.js.map b/dist/chunk-EJHT5JBZ.js.map new file mode 100644 index 0000000..e1ecbf8 --- /dev/null +++ b/dist/chunk-EJHT5JBZ.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/core/data-table/use-data-table-scroll-viewport.ts"],"names":["useDataTableScrollViewport","containerRef","refreshKey","viewportElement","setViewportElement","viewportHeight","setViewportHeight","element","frameId","updateHeight","currentHeight","nextHeight","observer"],"mappings":"wBAEO,SAASA,CAAAA,CACdC,CAAAA,CACAC,CAAAA,CACA,CACA,GAAM,CAACC,CAAAA,CAAiBC,CAAkB,CAAA,CAClC,CAAA,CAAA,QAAA,CAA6B,IAAI,CAAA,CACnC,CAACC,CAAAA,CAAgBC,CAAiB,CAAA,CAAU,CAAA,CAAA,QAAA,CAAS,CAAC,CAAA,CAE5D,OAAM,CAAA,CAAA,SAAA,CAAU,IAAM,CACpB,IAAMC,CAAAA,CACJN,CAAAA,CAAa,OAAA,EAAS,aAAA,CACpB,oCACF,CAAA,EAAK,IAAA,CAGP,GADAG,CAAAA,CAAmBG,CAAO,CAAA,CACtB,CAACA,CAAAA,CAAS,CACZD,CAAAA,CAAkB,CAAC,CAAA,CACnB,MACF,CAEA,IAAIE,CAAAA,CAAyB,IAAA,CACvBC,CAAAA,CAAe,IAAM,CACzBH,CAAAA,CAAmBI,CAAAA,EAAkB,CACnC,IAAMC,CAAAA,CAAaJ,CAAAA,CAAQ,YAAA,CAC3B,OAAOG,IAAkBC,CAAAA,CAAaD,CAAAA,CAAgBC,CACxD,CAAC,EACH,CAAA,CAIA,GAFAF,CAAAA,EAAa,CAET,OAAO,cAAA,CAAmB,GAAA,CAC5B,OAGF,IAAMG,CAAAA,CAAW,IAAI,cAAA,CAAe,IAAM,CACpCJ,CAAAA,GAAY,IAAA,EACd,MAAA,CAAO,oBAAA,CAAqBA,CAAO,CAAA,CAGrCA,CAAAA,CAAU,MAAA,CAAO,qBAAA,CAAsB,IAAM,CAC3CA,CAAAA,CAAU,IAAA,CACVC,IACF,CAAC,EACH,CAAC,CAAA,CAED,OAAAG,CAAAA,CAAS,OAAA,CAAQL,CAAO,CAAA,CAEjB,IAAM,CACPC,CAAAA,GAAY,IAAA,EACd,MAAA,CAAO,oBAAA,CAAqBA,CAAO,CAAA,CAErCI,CAAAA,CAAS,UAAA,GACX,CACF,CAAA,CAAG,CAACX,CAAAA,CAAcC,CAAU,CAAC,CAAA,CAEtB,CAAE,eAAA,CAAAC,CAAAA,CAAiB,cAAA,CAAAE,CAAe,CAC3C","file":"chunk-EJHT5JBZ.js","sourcesContent":["import * as React from \"react\";\n\nexport function useDataTableScrollViewport(\n containerRef: React.RefObject,\n refreshKey: unknown,\n) {\n const [viewportElement, setViewportElement] =\n React.useState(null);\n const [viewportHeight, setViewportHeight] = React.useState(0);\n\n React.useEffect(() => {\n const element =\n containerRef.current?.querySelector(\n \"[data-slot='scroll-area-viewport']\",\n ) ?? null;\n\n setViewportElement(element);\n if (!element) {\n setViewportHeight(0);\n return;\n }\n\n let frameId: number | null = null;\n const updateHeight = () => {\n setViewportHeight((currentHeight) => {\n const nextHeight = element.clientHeight;\n return currentHeight === nextHeight ? currentHeight : nextHeight;\n });\n };\n\n updateHeight();\n\n if (typeof ResizeObserver === \"undefined\") {\n return;\n }\n\n const observer = new ResizeObserver(() => {\n if (frameId !== null) {\n window.cancelAnimationFrame(frameId);\n }\n\n frameId = window.requestAnimationFrame(() => {\n frameId = null;\n updateHeight();\n });\n });\n\n observer.observe(element);\n\n return () => {\n if (frameId !== null) {\n window.cancelAnimationFrame(frameId);\n }\n observer.disconnect();\n };\n }, [containerRef, refreshKey]);\n\n return { viewportElement, viewportHeight };\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-7EXRF7VC.js b/dist/chunk-ERWHHOBD.js similarity index 99% rename from dist/chunk-7EXRF7VC.js rename to dist/chunk-ERWHHOBD.js index 42ca2bc..e1abf0b 100644 --- a/dist/chunk-7EXRF7VC.js +++ b/dist/chunk-ERWHHOBD.js @@ -1,2 +1,2 @@ -import {n,m,b,e,d,g as g$1,h as h$1,j,s,f,c}from'./chunk-ZGXFBFNQ.js';import {a}from'./chunk-PFB5LOU7.js';import*as M from'react';import {cva}from'class-variance-authority';import {Slot,Separator,Checkbox,DropdownMenu,ScrollArea,Select,Tooltip}from'radix-ui';import {jsx,jsxs}from'react/jsx-runtime';var ce=cva("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:outline-none active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"",outline:"",secondary:"",ghost:"",destructive:"",link:"underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function g({className:t,variant:e="default",size:n="default",asChild:a$1=false,...s}){let d=a$1?Slot.Root:"button";return jsx(d,{"data-slot":"button","data-variant":e,"data-size":n,className:a(ce({variant:e,size:n,className:t})),...s})}function N({className:t,orientation:e="horizontal",decorative:n=true,...a$1}){return jsx(Separator.Root,{"data-slot":"separator",decorative:n,orientation:e,className:a("shrink-0 data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",t),...a$1})}var ve=cva("flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1",{variants:{orientation:{horizontal:"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg!",vertical:"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg!"}},defaultVariants:{orientation:"horizontal"}});function Y({className:t,orientation:e,...n}){return jsx("div",{role:"group","data-slot":"button-group","data-orientation":e,className:a(ve({orientation:e}),t),...n})}function Z({className:t,asChild:e=false,...n}){let a$1=e?Slot.Root:"div";return jsx(a$1,{className:a("flex items-center gap-2 rounded-lg border px-2.5 text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",t),...n})}function $({className:t,orientation:e="vertical",...n}){return jsx(N,{"data-slot":"button-group-separator",orientation:e,className:a("relative self-stretch data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto",t),...n})}function tt({className:t,size:e="default",...n}){return jsx("div",{"data-slot":"card","data-size":e,className:a("group/card flex flex-col gap-4 overflow-hidden rounded-xl border py-4 text-sm ring-1 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",t),...n})}function et({className:t,...e}){return jsx("div",{"data-slot":"card-header",className:a("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3",t),...e})}function ot({className:t,...e}){return jsx("div",{"data-slot":"card-title",className:a("font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",t),...e})}function nt({className:t,...e}){return jsx("div",{"data-slot":"card-description",className:a("text-sm opacity-80",t),...e})}function at({className:t,...e}){return jsx("div",{"data-slot":"card-action",className:a("col-start-2 row-span-2 row-start-1 self-start justify-self-end",t),...e})}function rt({className:t,...e}){return jsx("div",{"data-slot":"card-content",className:a("px-4 group-data-[size=sm]/card:px-3",t),...e})}function it({className:t,...e}){return jsx("div",{"data-slot":"card-footer",className:a("flex items-center rounded-b-xl border-t p-4 group-data-[size=sm]/card:p-3",t),...e})}function lt({className:t,...e}){return jsx(Checkbox.Root,{"data-slot":"checkbox",className:a("peer relative flex size-4 shrink-0 items-center justify-center rounded-[4px] border ring-2 transition-colors outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 data-checked:ring-2",t),...e,children:jsx(Checkbox.Indicator,{"data-slot":"checkbox-indicator",className:"grid place-content-center text-current transition-none [&>svg]:size-3.5",children:jsx(b,{})})})}function dt({...t}){return jsx(DropdownMenu.Root,{"data-slot":"dropdown-menu",...t})}function pt({...t}){return jsx(DropdownMenu.Portal,{"data-slot":"dropdown-menu-portal",...t})}function ct({...t}){return jsx(DropdownMenu.Trigger,{"data-slot":"dropdown-menu-trigger",...t})}function ut({className:t,align:e="start",sideOffset:n=4,...a$1}){return jsx(DropdownMenu.Portal,{children:jsx(DropdownMenu.Content,{"data-slot":"dropdown-menu-content",sideOffset:n,align:e,className:a("relative z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) animate-none! overflow-x-hidden overflow-y-auto rounded-lg border p-1 shadow-md duration-100 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] 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 data-[state=closed]:overflow-hidden data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",t),...a$1})})}function mt({...t}){return jsx(DropdownMenu.Group,{"data-slot":"dropdown-menu-group",...t})}function ft({className:t,inset:e,variant:n="default",...a$1}){return jsx(DropdownMenu.Item,{"data-slot":"dropdown-menu-item","data-inset":e,"data-variant":n,className:a("group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:outline-none data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a$1})}function gt({className:t,children:e,checked:n,inset:a$1,...s}){return jsxs(DropdownMenu.CheckboxItem,{"data-slot":"dropdown-menu-checkbox-item","data-inset":a$1,className:a("relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:outline-none data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),checked:n,...s,children:[jsx("span",{className:"pointer-events-none absolute right-2 flex items-center justify-center","data-slot":"dropdown-menu-checkbox-item-indicator",children:jsx(DropdownMenu.ItemIndicator,{children:jsx(b,{})})}),e]})}function bt({...t}){return jsx(DropdownMenu.RadioGroup,{"data-slot":"dropdown-menu-radio-group",...t})}function vt({className:t,children:e,inset:n,...a$1}){return jsxs(DropdownMenu.RadioItem,{"data-slot":"dropdown-menu-radio-item","data-inset":n,className:a("relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:outline-none data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a$1,children:[jsx("span",{className:"pointer-events-none absolute right-2 flex items-center justify-center","data-slot":"dropdown-menu-radio-item-indicator",children:jsx(DropdownMenu.ItemIndicator,{children:jsx(b,{})})}),e]})}function ht({className:t,inset:e,...n}){return jsx(DropdownMenu.Label,{"data-slot":"dropdown-menu-label","data-inset":e,className:a("px-1.5 py-1 text-xs font-medium opacity-80 data-inset:pl-7",t),...n})}function Pt({className:t,...e}){return jsx(DropdownMenu.Separator,{"data-slot":"dropdown-menu-separator",className:a("-mx-1 my-1 h-px",t),...e})}function xt({className:t,...e}){return jsx("span",{"data-slot":"dropdown-menu-shortcut",className:a("ml-auto text-xs tracking-widest opacity-75",t),...e})}function wt({...t}){return jsx(DropdownMenu.Sub,{"data-slot":"dropdown-menu-sub",...t})}function yt({className:t,inset:e$1,children:n,...a$1}){return jsxs(DropdownMenu.SubTrigger,{"data-slot":"dropdown-menu-sub-trigger","data-inset":e$1,className:a("flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:outline-none data-inset:pl-7 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a$1,children:[n,jsx(e,{className:"ml-auto"})]})}function Ct({className:t,...e}){return jsx(DropdownMenu.SubContent,{"data-slot":"dropdown-menu-sub-content",className:a("relative z-50 min-w-[96px] origin-(--radix-dropdown-menu-content-transform-origin) animate-none! overflow-hidden rounded-lg border p-1 shadow-lg duration-100 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] 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 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",t),...e})}function Rt({className:t,...e}){return jsx("div",{"data-slot":"empty",className:a("flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-xl border-dashed p-6 text-center text-balance",t),...e})}function St({className:t,...e}){return jsx("div",{"data-slot":"empty-header",className:a("flex max-w-sm flex-col items-center gap-2",t),...e})}var Pe=cva("mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0",{variants:{variant:{default:"bg-transparent",icon:"flex size-8 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-4"}},defaultVariants:{variant:"default"}});function zt({className:t,variant:e="default",...n}){return jsx("div",{"data-slot":"empty-icon","data-variant":e,className:a(Pe({variant:e,className:t})),...n})}function Nt({className:t,...e}){return jsx("div",{"data-slot":"empty-title",className:a("font-heading text-sm font-medium tracking-tight",t),...e})}function It({className:t,...e}){return jsx("div",{"data-slot":"empty-description",className:a("text-sm/relaxed opacity-80 [&>a]:underline [&>a]:underline-offset-4",t),...e})}function kt({className:t,...e}){return jsx("div",{"data-slot":"empty-content",className:a("flex w-full max-w-sm min-w-0 flex-col items-center gap-2.5 text-sm text-balance",t),...e})}var I="h-8 w-full min-w-0 rounded-lg border px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:opacity-70 focus-visible:outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm";function k({className:t,...e}){return jsx("div",{role:"group","data-slot":"input-group",className:a("group/input-group flex w-full min-w-0 items-stretch rounded-lg border transition-colors outline-none focus-within:outline-none has-[>[data-slot=input-group-addon][data-align=block-start]]:flex-col has-[>[data-slot=input-group-addon][data-align=block-end]]:flex-col has-[>[data-slot=input-group-control]:disabled]:cursor-not-allowed has-[>[data-slot=input-group-control]:disabled]:opacity-50",t),...e})}var x=M.forwardRef(function({className:e,...n},a$1){return jsx("input",{ref:a$1,"data-slot":"input-group-control",type:n.type,className:a(I,"flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:border-0 focus-visible:ring-0",e),...n})});function T({align:t="inline-start",className:e,...n}){return jsx("div",{"data-slot":"input-group-addon","data-align":t,className:a("flex shrink-0 items-center gap-1.5 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",t==="inline-start"&&"order-first pl-2.5 pr-1",t==="inline-end"&&"order-last pl-1 pr-2.5",t==="block-start"&&"order-first w-full justify-between border-b px-2.5 py-1.5 text-sm",t==="block-end"&&"order-last w-full justify-between border-t px-2.5 py-1.5 text-sm",e),...n})}function Dt({className:t,...e}){return jsx("span",{"data-slot":"input-group-text",className:a("whitespace-nowrap text-sm",t),...e})}x.displayName="InputGroupInput";var A=M.forwardRef(function({className:e,passwordToggle:n$1=false,type:a$1,...s},d){let[S,le]=M.useState(false);return n$1&&a$1==="password"?jsxs(k,{className:e,children:[jsx(x,{ref:d,type:S?"text":"password","data-slot":"input-group-control",className:"pr-0",...s}),jsx(T,{align:"inline-end",children:jsx(g,{type:"button",variant:"ghost",size:"icon-xs","aria-label":S?"Hide password":"Show password","aria-pressed":S,className:"hover:bg-transparent",onMouseDown:G=>G.preventDefault(),onClick:()=>le(G=>!G),children:S?jsx(n,{"data-icon":"inline-start"}):jsx(m,{"data-icon":"inline-start"})})})]}):jsx("input",{ref:d,type:a$1,"data-slot":"input",className:a(I,e),...s})});A.displayName="Input";function Mt({className:t,...e}){return jsx("nav",{role:"navigation","aria-label":"pagination","data-slot":"pagination",className:a("mx-auto flex w-full justify-center",t),...e})}function Gt({className:t,...e}){return jsx("ul",{"data-slot":"pagination-content",className:a("flex items-center gap-1",t),...e})}function _t({...t}){return jsx("li",{"data-slot":"pagination-item",...t})}function h({className:t,isActive:e,disabled:n=false,variant:a$1,size:s="icon",...d}){return jsx(g,{asChild:true,variant:a$1??(e?"outline":"ghost"),size:s,className:a(n&&"pointer-events-none opacity-50",t),children:jsx("a",{"aria-current":e?"page":void 0,"aria-disabled":n?true:void 0,"data-slot":"pagination-link","data-active":e,tabIndex:n?-1:d.tabIndex,...d})})}function Bt({className:t,disabled:e,showText:n=true,size:a$1="default",text:s="Previous",...d$1}){return jsxs(h,{"aria-label":"Go to previous page",disabled:e,size:a$1,variant:"outline",className:a("pl-1.5!",t),...d$1,children:[jsx(d,{"data-icon":"inline-start"}),n?jsx("span",{className:"hidden sm:block",children:s}):null]})}function Lt({className:t,disabled:e,showText:n=true,size:a$1="default",text:s="First",...d}){return jsxs(h,{"aria-label":"Go to first page",disabled:e,size:a$1,variant:"outline",className:a("pl-1.5!",t),...d,children:[jsx(g$1,{"data-icon":"inline-start"}),n?jsx("span",{className:"hidden sm:block",children:s}):null]})}function At({className:t,disabled:e$1,showText:n=true,size:a$1="default",text:s="Next",...d}){return jsxs(h,{"aria-label":"Go to next page",disabled:e$1,size:a$1,variant:"outline",className:a("pr-1.5!",t),...d,children:[n?jsx("span",{className:"hidden sm:block",children:s}):null,jsx(e,{"data-icon":"inline-end"})]})}function Vt({className:t,disabled:e,showText:n=true,size:a$1="default",text:s="Last",...d}){return jsxs(h,{"aria-label":"Go to last page",disabled:e,size:a$1,variant:"outline",className:a("pr-1.5!",t),...d,children:[n?jsx("span",{className:"hidden sm:block",children:s}):null,jsx(h$1,{"data-icon":"inline-end"})]})}function Et({className:t,text:e="More pages",...n}){return jsxs("span",{"aria-hidden":true,"data-slot":"pagination-ellipsis",className:a("flex size-8 items-center justify-center [&_svg:not([class*='size-'])]:size-4",t),...n,children:[jsx(j,{}),jsx("span",{className:"sr-only",children:e})]})}function Ht({className:t,children:e,...n}){return jsxs(ScrollArea.Root,{"data-slot":"scroll-area",className:a("relative",t),...n,children:[jsx(ScrollArea.Viewport,{"data-slot":"scroll-area-viewport",className:"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:outline-none",children:e}),jsx(V,{className:"z-100"}),jsx(ScrollArea.Corner,{})]})}function V({className:t,orientation:e="vertical",...n}){return jsx(ScrollArea.ScrollAreaScrollbar,{"data-slot":"scroll-area-scrollbar","data-orientation":e,orientation:e,className:a("flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent",t),...n,children:jsx(ScrollArea.ScrollAreaThumb,{"data-slot":"scroll-area-thumb",className:"relative flex-1 rounded-full"})})}function Ut({...t}){return jsx(Select.Root,{"data-slot":"select",...t})}function Ft({className:t,...e}){return jsx(Select.Group,{"data-slot":"select-group",className:a("scroll-my-1 p-1",t),...e})}function Kt({...t}){return jsx(Select.Value,{"data-slot":"select-value",...t})}function Ot({className:t,size:e="default",children:n,...a$1}){return jsxs(Select.Trigger,{"data-slot":"select-trigger","data-size":e,className:a("flex w-fit items-center justify-between gap-1.5 rounded-lg border bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a$1,children:[n,jsx(Select.Icon,{asChild:true,children:jsx(s,{className:"pointer-events-none size-4"})})]})}function jt({className:t,children:e,position:n="item-aligned",align:a$1="center",...s}){return jsx(Select.Portal,{children:jsxs(Select.Content,{"data-slot":"select-content","data-align-trigger":n==="item-aligned",className:a("relative z-50 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) animate-none! overflow-x-hidden overflow-y-auto rounded-lg border shadow-md duration-100 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] data-[align-trigger=true]:animate-none 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 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",n==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",t),position:n,align:a$1,...s,children:[jsx(E,{}),jsx(Select.Viewport,{"data-position":n,className:a("data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)",n==="popper"&&""),children:e}),jsx(H,{})]})})}function qt({className:t,...e}){return jsx(Select.Label,{"data-slot":"select-label",className:a("px-1.5 py-1 text-xs opacity-80",t),...e})}function Jt({className:t,children:e,...n}){return jsxs(Select.Item,{"data-slot":"select-item",className:a("relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:outline-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",t),...n,children:[jsx("span",{className:"pointer-events-none absolute right-2 flex size-4 items-center justify-center",children:jsx(Select.ItemIndicator,{children:jsx(b,{className:"pointer-events-none"})})}),jsx(Select.ItemText,{children:e})]})}function Qt({className:t,...e}){return jsx(Select.Separator,{"data-slot":"select-separator",className:a("pointer-events-none -mx-1 my-1 h-px",t),...e})}function E({className:t,...e}){return jsx(Select.ScrollUpButton,{"data-slot":"select-scroll-up-button",className:a("z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4",t),...e,children:jsx(f,{})})}function H({className:t,...e}){return jsx(Select.ScrollDownButton,{"data-slot":"select-scroll-down-button",className:a("z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4",t),...e,children:jsx(c,{})})}function Wt({className:t,...e}){return jsx("div",{"data-slot":"skeleton",className:a("animate-pulse rounded-md",t),...e})}function Xt({className:t,...e}){return jsx("table",{"data-slot":"table",className:a("w-full border-collapse caption-bottom text-sm",t),...e})}function Yt({className:t,...e}){return jsx("thead",{"data-slot":"table-header",className:a("[&_tr]:border-b",t),...e})}function Zt({className:t,...e}){return jsx("tbody",{"data-slot":"table-body",className:a("[&_tr:last-child]:border-0",t),...e})}function $t({className:t,...e}){return jsx("tfoot",{"data-slot":"table-footer",className:a("border-t font-medium [&>tr]:last:border-b-0",t),...e})}function te({className:t,...e}){return jsx("tr",{"data-slot":"table-row",className:a("border-b transition-colors",t),...e})}function ee({className:t,...e}){return jsx("th",{"data-slot":"table-head",className:a("h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0",t),...e})}function oe({className:t,...e}){return jsx("td",{"data-slot":"table-cell",className:a("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0",t),...e})}function ne({className:t,...e}){return jsx("caption",{"data-slot":"table-caption",className:a("mt-4 text-sm opacity-80",t),...e})}function ae({delayDuration:t=0,...e}){return jsx(Tooltip.Provider,{"data-slot":"tooltip-provider",delayDuration:t,...e})}function re({...t}){return jsx(Tooltip.Root,{"data-slot":"tooltip",...t})}function ie({...t}){return jsx(Tooltip.Trigger,{"data-slot":"tooltip-trigger",...t})}function se({className:t,sideOffset:e=0,children:n,...a$1}){return jsx(Tooltip.Portal,{children:jsxs(Tooltip.Content,{"data-slot":"tooltip-content",sideOffset:e,className:a("z-50 inline-flex w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) items-center gap-1.5 rounded-md border px-3 py-1.5 text-xs has-data-[slot=kbd]:pr-1.5 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 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",t),...a$1,children:[n,jsx(Tooltip.Arrow,{className:"z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]"})]})})}var un={Button:g,ButtonGroup:Y,ButtonGroupSeparator:$,ButtonGroupText:Z,Card:tt,CardAction:at,CardContent:rt,CardDescription:nt,CardFooter:it,CardHeader:et,CardTitle:ot,Checkbox:lt,DropdownMenu:dt,DropdownMenuCheckboxItem:gt,DropdownMenuContent:ut,DropdownMenuGroup:mt,DropdownMenuItem:ft,DropdownMenuLabel:ht,DropdownMenuPortal:pt,DropdownMenuRadioGroup:bt,DropdownMenuRadioItem:vt,DropdownMenuSeparator:Pt,DropdownMenuShortcut:xt,DropdownMenuSub:wt,DropdownMenuSubContent:Ct,DropdownMenuSubTrigger:yt,DropdownMenuTrigger:ct,Empty:Rt,EmptyContent:kt,EmptyDescription:It,EmptyHeader:St,EmptyMedia:zt,EmptyTitle:Nt,Input:A,InputGroup:k,InputGroupAddon:T,InputGroupInput:x,InputGroupText:Dt,Pagination:Mt,PaginationContent:Gt,PaginationEllipsis:Et,PaginationFirst:Lt,PaginationItem:_t,PaginationLast:Vt,PaginationLink:h,PaginationNext:At,PaginationPrevious:Bt,ScrollArea:Ht,ScrollBar:V,Select:Ut,SelectContent:jt,SelectGroup:Ft,SelectItem:Jt,SelectLabel:qt,SelectScrollDownButton:H,SelectScrollUpButton:E,SelectSeparator:Qt,SelectTrigger:Ot,SelectValue:Kt,Separator:N,Skeleton:Wt,Table:Xt,TableBody:Zt,TableCaption:ne,TableCell:oe,TableFooter:$t,TableHead:ee,TableHeader:Yt,TableRow:te,Tooltip:re,TooltipContent:se,TooltipProvider:ae,TooltipTrigger:ie};export{Mt as A,h as B,Bt as C,Lt as D,At as E,Vt as F,Ht as G,V as H,Ot as I,jt as J,qt as K,Jt as L,Qt as M,Wt as N,Xt as O,Yt as P,Zt as Q,$t as R,te as S,ee as T,oe as U,ne as V,se as W,un as X,g as a,N as b,tt as c,et as d,nt as e,rt as f,it as g,lt as h,ut as i,ft as j,gt as k,vt as l,ht as m,Pt as n,yt as o,Ct as p,Rt as q,St as r,zt as s,Nt as t,It as u,kt as v,k as w,x,T as y,A as z};//# sourceMappingURL=chunk-7EXRF7VC.js.map -//# sourceMappingURL=chunk-7EXRF7VC.js.map \ No newline at end of file +import {n,m,b,e,d,g as g$1,h as h$1,j,s,f,c}from'./chunk-32UNH3MQ.js';import {a}from'./chunk-674VSOYY.js';import*as M from'react';import {cva}from'class-variance-authority';import {Slot,Separator,Checkbox,DropdownMenu,ScrollArea,Select,Tooltip}from'radix-ui';import {jsx,jsxs}from'react/jsx-runtime';var ce=cva("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:outline-none active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"",outline:"",secondary:"",ghost:"",destructive:"",link:"underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function g({className:t,variant:e="default",size:n="default",asChild:a$1=false,...s}){let d=a$1?Slot.Root:"button";return jsx(d,{"data-slot":"button","data-variant":e,"data-size":n,className:a(ce({variant:e,size:n,className:t})),...s})}function N({className:t,orientation:e="horizontal",decorative:n=true,...a$1}){return jsx(Separator.Root,{"data-slot":"separator",decorative:n,orientation:e,className:a("shrink-0 data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",t),...a$1})}var ve=cva("flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1",{variants:{orientation:{horizontal:"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg!",vertical:"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg!"}},defaultVariants:{orientation:"horizontal"}});function Y({className:t,orientation:e,...n}){return jsx("div",{role:"group","data-slot":"button-group","data-orientation":e,className:a(ve({orientation:e}),t),...n})}function Z({className:t,asChild:e=false,...n}){let a$1=e?Slot.Root:"div";return jsx(a$1,{className:a("flex items-center gap-2 rounded-lg border px-2.5 text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",t),...n})}function $({className:t,orientation:e="vertical",...n}){return jsx(N,{"data-slot":"button-group-separator",orientation:e,className:a("relative self-stretch data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto",t),...n})}function tt({className:t,size:e="default",...n}){return jsx("div",{"data-slot":"card","data-size":e,className:a("group/card flex flex-col gap-4 overflow-hidden rounded-xl border py-4 text-sm ring-1 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",t),...n})}function et({className:t,...e}){return jsx("div",{"data-slot":"card-header",className:a("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3",t),...e})}function ot({className:t,...e}){return jsx("div",{"data-slot":"card-title",className:a("font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",t),...e})}function nt({className:t,...e}){return jsx("div",{"data-slot":"card-description",className:a("text-sm opacity-80",t),...e})}function at({className:t,...e}){return jsx("div",{"data-slot":"card-action",className:a("col-start-2 row-span-2 row-start-1 self-start justify-self-end",t),...e})}function rt({className:t,...e}){return jsx("div",{"data-slot":"card-content",className:a("px-4 group-data-[size=sm]/card:px-3",t),...e})}function it({className:t,...e}){return jsx("div",{"data-slot":"card-footer",className:a("flex items-center rounded-b-xl border-t p-4 group-data-[size=sm]/card:p-3",t),...e})}function lt({className:t,...e}){return jsx(Checkbox.Root,{"data-slot":"checkbox",className:a("peer relative flex size-4 shrink-0 items-center justify-center rounded-[4px] border ring-2 transition-colors outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 data-checked:ring-2",t),...e,children:jsx(Checkbox.Indicator,{"data-slot":"checkbox-indicator",className:"grid place-content-center text-current transition-none [&>svg]:size-3.5",children:jsx(b,{})})})}function dt({...t}){return jsx(DropdownMenu.Root,{"data-slot":"dropdown-menu",...t})}function pt({...t}){return jsx(DropdownMenu.Portal,{"data-slot":"dropdown-menu-portal",...t})}function ct({...t}){return jsx(DropdownMenu.Trigger,{"data-slot":"dropdown-menu-trigger",...t})}function ut({className:t,align:e="start",sideOffset:n=4,...a$1}){return jsx(DropdownMenu.Portal,{children:jsx(DropdownMenu.Content,{"data-slot":"dropdown-menu-content",sideOffset:n,align:e,className:a("relative z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) animate-none! overflow-x-hidden overflow-y-auto rounded-lg border p-1 shadow-md duration-100 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] 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 data-[state=closed]:overflow-hidden data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",t),...a$1})})}function mt({...t}){return jsx(DropdownMenu.Group,{"data-slot":"dropdown-menu-group",...t})}function ft({className:t,inset:e,variant:n="default",...a$1}){return jsx(DropdownMenu.Item,{"data-slot":"dropdown-menu-item","data-inset":e,"data-variant":n,className:a("group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:outline-none data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a$1})}function gt({className:t,children:e,checked:n,inset:a$1,...s}){return jsxs(DropdownMenu.CheckboxItem,{"data-slot":"dropdown-menu-checkbox-item","data-inset":a$1,className:a("relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:outline-none data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),checked:n,...s,children:[jsx("span",{className:"pointer-events-none absolute right-2 flex items-center justify-center","data-slot":"dropdown-menu-checkbox-item-indicator",children:jsx(DropdownMenu.ItemIndicator,{children:jsx(b,{})})}),e]})}function bt({...t}){return jsx(DropdownMenu.RadioGroup,{"data-slot":"dropdown-menu-radio-group",...t})}function vt({className:t,children:e,inset:n,...a$1}){return jsxs(DropdownMenu.RadioItem,{"data-slot":"dropdown-menu-radio-item","data-inset":n,className:a("relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:outline-none data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a$1,children:[jsx("span",{className:"pointer-events-none absolute right-2 flex items-center justify-center","data-slot":"dropdown-menu-radio-item-indicator",children:jsx(DropdownMenu.ItemIndicator,{children:jsx(b,{})})}),e]})}function ht({className:t,inset:e,...n}){return jsx(DropdownMenu.Label,{"data-slot":"dropdown-menu-label","data-inset":e,className:a("px-1.5 py-1 text-xs font-medium opacity-80 data-inset:pl-7",t),...n})}function Pt({className:t,...e}){return jsx(DropdownMenu.Separator,{"data-slot":"dropdown-menu-separator",className:a("-mx-1 my-1 h-px",t),...e})}function xt({className:t,...e}){return jsx("span",{"data-slot":"dropdown-menu-shortcut",className:a("ml-auto text-xs tracking-widest opacity-75",t),...e})}function wt({...t}){return jsx(DropdownMenu.Sub,{"data-slot":"dropdown-menu-sub",...t})}function yt({className:t,inset:e$1,children:n,...a$1}){return jsxs(DropdownMenu.SubTrigger,{"data-slot":"dropdown-menu-sub-trigger","data-inset":e$1,className:a("flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:outline-none data-inset:pl-7 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a$1,children:[n,jsx(e,{className:"ml-auto"})]})}function Ct({className:t,...e}){return jsx(DropdownMenu.SubContent,{"data-slot":"dropdown-menu-sub-content",className:a("relative z-50 min-w-[96px] origin-(--radix-dropdown-menu-content-transform-origin) animate-none! overflow-hidden rounded-lg border p-1 shadow-lg duration-100 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] 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 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",t),...e})}function Rt({className:t,...e}){return jsx("div",{"data-slot":"empty",className:a("flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-xl border-dashed p-6 text-center text-balance",t),...e})}function St({className:t,...e}){return jsx("div",{"data-slot":"empty-header",className:a("flex max-w-sm flex-col items-center gap-2",t),...e})}var Pe=cva("mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0",{variants:{variant:{default:"bg-transparent",icon:"flex size-8 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-4"}},defaultVariants:{variant:"default"}});function zt({className:t,variant:e="default",...n}){return jsx("div",{"data-slot":"empty-icon","data-variant":e,className:a(Pe({variant:e,className:t})),...n})}function Nt({className:t,...e}){return jsx("div",{"data-slot":"empty-title",className:a("font-heading text-sm font-medium tracking-tight",t),...e})}function It({className:t,...e}){return jsx("div",{"data-slot":"empty-description",className:a("text-sm/relaxed opacity-80 [&>a]:underline [&>a]:underline-offset-4",t),...e})}function kt({className:t,...e}){return jsx("div",{"data-slot":"empty-content",className:a("flex w-full max-w-sm min-w-0 flex-col items-center gap-2.5 text-sm text-balance",t),...e})}var I="h-8 w-full min-w-0 rounded-lg border px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:opacity-70 focus-visible:outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm";function k({className:t,...e}){return jsx("div",{role:"group","data-slot":"input-group",className:a("group/input-group flex w-full min-w-0 items-stretch rounded-lg border transition-colors outline-none focus-within:outline-none has-[>[data-slot=input-group-addon][data-align=block-start]]:flex-col has-[>[data-slot=input-group-addon][data-align=block-end]]:flex-col has-[>[data-slot=input-group-control]:disabled]:cursor-not-allowed has-[>[data-slot=input-group-control]:disabled]:opacity-50",t),...e})}var x=M.forwardRef(function({className:e,...n},a$1){return jsx("input",{ref:a$1,"data-slot":"input-group-control",type:n.type,className:a(I,"flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:border-0 focus-visible:ring-0",e),...n})});function T({align:t="inline-start",className:e,...n}){return jsx("div",{"data-slot":"input-group-addon","data-align":t,className:a("flex shrink-0 items-center gap-1.5 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",t==="inline-start"&&"order-first pl-2.5 pr-1",t==="inline-end"&&"order-last pl-1 pr-2.5",t==="block-start"&&"order-first w-full justify-between border-b px-2.5 py-1.5 text-sm",t==="block-end"&&"order-last w-full justify-between border-t px-2.5 py-1.5 text-sm",e),...n})}function Dt({className:t,...e}){return jsx("span",{"data-slot":"input-group-text",className:a("whitespace-nowrap text-sm",t),...e})}x.displayName="InputGroupInput";var A=M.forwardRef(function({className:e,passwordToggle:n$1=false,type:a$1,...s},d){let[S,le]=M.useState(false);return n$1&&a$1==="password"?jsxs(k,{className:e,children:[jsx(x,{ref:d,type:S?"text":"password","data-slot":"input-group-control",className:"pr-0",...s}),jsx(T,{align:"inline-end",children:jsx(g,{type:"button",variant:"ghost",size:"icon-xs","aria-label":S?"Hide password":"Show password","aria-pressed":S,className:"hover:bg-transparent",onMouseDown:G=>G.preventDefault(),onClick:()=>le(G=>!G),children:S?jsx(n,{"data-icon":"inline-start"}):jsx(m,{"data-icon":"inline-start"})})})]}):jsx("input",{ref:d,type:a$1,"data-slot":"input",className:a(I,e),...s})});A.displayName="Input";function Mt({className:t,...e}){return jsx("nav",{role:"navigation","aria-label":"pagination","data-slot":"pagination",className:a("mx-auto flex w-full justify-center",t),...e})}function Gt({className:t,...e}){return jsx("ul",{"data-slot":"pagination-content",className:a("flex items-center gap-1",t),...e})}function _t({...t}){return jsx("li",{"data-slot":"pagination-item",...t})}function h({className:t,isActive:e,disabled:n=false,variant:a$1,size:s="icon",...d}){return jsx(g,{asChild:true,variant:a$1??(e?"outline":"ghost"),size:s,className:a(n&&"pointer-events-none opacity-50",t),children:jsx("a",{"aria-current":e?"page":void 0,"aria-disabled":n?true:void 0,"data-slot":"pagination-link","data-active":e,tabIndex:n?-1:d.tabIndex,...d})})}function Bt({className:t,disabled:e,showText:n=true,size:a$1="default",text:s="Previous",...d$1}){return jsxs(h,{"aria-label":"Go to previous page",disabled:e,size:a$1,variant:"outline",className:a("pl-1.5!",t),...d$1,children:[jsx(d,{"data-icon":"inline-start"}),n?jsx("span",{className:"hidden sm:block",children:s}):null]})}function Lt({className:t,disabled:e,showText:n=true,size:a$1="default",text:s="First",...d}){return jsxs(h,{"aria-label":"Go to first page",disabled:e,size:a$1,variant:"outline",className:a("pl-1.5!",t),...d,children:[jsx(g$1,{"data-icon":"inline-start"}),n?jsx("span",{className:"hidden sm:block",children:s}):null]})}function At({className:t,disabled:e$1,showText:n=true,size:a$1="default",text:s="Next",...d}){return jsxs(h,{"aria-label":"Go to next page",disabled:e$1,size:a$1,variant:"outline",className:a("pr-1.5!",t),...d,children:[n?jsx("span",{className:"hidden sm:block",children:s}):null,jsx(e,{"data-icon":"inline-end"})]})}function Vt({className:t,disabled:e,showText:n=true,size:a$1="default",text:s="Last",...d}){return jsxs(h,{"aria-label":"Go to last page",disabled:e,size:a$1,variant:"outline",className:a("pr-1.5!",t),...d,children:[n?jsx("span",{className:"hidden sm:block",children:s}):null,jsx(h$1,{"data-icon":"inline-end"})]})}function Et({className:t,text:e="More pages",...n}){return jsxs("span",{"aria-hidden":true,"data-slot":"pagination-ellipsis",className:a("flex size-8 items-center justify-center [&_svg:not([class*='size-'])]:size-4",t),...n,children:[jsx(j,{}),jsx("span",{className:"sr-only",children:e})]})}function Ht({className:t,children:e,...n}){return jsxs(ScrollArea.Root,{"data-slot":"scroll-area",className:a("relative",t),...n,children:[jsx(ScrollArea.Viewport,{"data-slot":"scroll-area-viewport",className:"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:outline-none",children:e}),jsx(V,{className:"z-100"}),jsx(ScrollArea.Corner,{})]})}function V({className:t,orientation:e="vertical",...n}){return jsx(ScrollArea.ScrollAreaScrollbar,{"data-slot":"scroll-area-scrollbar","data-orientation":e,orientation:e,className:a("flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent",t),...n,children:jsx(ScrollArea.ScrollAreaThumb,{"data-slot":"scroll-area-thumb",className:"relative flex-1 rounded-full"})})}function Ut({...t}){return jsx(Select.Root,{"data-slot":"select",...t})}function Ft({className:t,...e}){return jsx(Select.Group,{"data-slot":"select-group",className:a("scroll-my-1 p-1",t),...e})}function Kt({...t}){return jsx(Select.Value,{"data-slot":"select-value",...t})}function Ot({className:t,size:e="default",children:n,...a$1}){return jsxs(Select.Trigger,{"data-slot":"select-trigger","data-size":e,className:a("flex w-fit items-center justify-between gap-1.5 rounded-lg border bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a$1,children:[n,jsx(Select.Icon,{asChild:true,children:jsx(s,{className:"pointer-events-none size-4"})})]})}function jt({className:t,children:e,position:n="item-aligned",align:a$1="center",...s}){return jsx(Select.Portal,{children:jsxs(Select.Content,{"data-slot":"select-content","data-align-trigger":n==="item-aligned",className:a("relative z-50 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) animate-none! overflow-x-hidden overflow-y-auto rounded-lg border shadow-md duration-100 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] data-[align-trigger=true]:animate-none 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 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",n==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",t),position:n,align:a$1,...s,children:[jsx(E,{}),jsx(Select.Viewport,{"data-position":n,className:a("data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)",n==="popper"&&""),children:e}),jsx(H,{})]})})}function qt({className:t,...e}){return jsx(Select.Label,{"data-slot":"select-label",className:a("px-1.5 py-1 text-xs opacity-80",t),...e})}function Jt({className:t,children:e,...n}){return jsxs(Select.Item,{"data-slot":"select-item",className:a("relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:outline-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",t),...n,children:[jsx("span",{className:"pointer-events-none absolute right-2 flex size-4 items-center justify-center",children:jsx(Select.ItemIndicator,{children:jsx(b,{className:"pointer-events-none"})})}),jsx(Select.ItemText,{children:e})]})}function Qt({className:t,...e}){return jsx(Select.Separator,{"data-slot":"select-separator",className:a("pointer-events-none -mx-1 my-1 h-px",t),...e})}function E({className:t,...e}){return jsx(Select.ScrollUpButton,{"data-slot":"select-scroll-up-button",className:a("z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4",t),...e,children:jsx(f,{})})}function H({className:t,...e}){return jsx(Select.ScrollDownButton,{"data-slot":"select-scroll-down-button",className:a("z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4",t),...e,children:jsx(c,{})})}function Wt({className:t,...e}){return jsx("div",{"data-slot":"skeleton",className:a("animate-pulse rounded-md",t),...e})}function Xt({className:t,...e}){return jsx("table",{"data-slot":"table",className:a("w-full border-collapse caption-bottom text-sm",t),...e})}function Yt({className:t,...e}){return jsx("thead",{"data-slot":"table-header",className:a("[&_tr]:border-b",t),...e})}function Zt({className:t,...e}){return jsx("tbody",{"data-slot":"table-body",className:a("[&_tr:last-child]:border-0",t),...e})}function $t({className:t,...e}){return jsx("tfoot",{"data-slot":"table-footer",className:a("border-t font-medium [&>tr]:last:border-b-0",t),...e})}function te({className:t,...e}){return jsx("tr",{"data-slot":"table-row",className:a("border-b transition-colors",t),...e})}function ee({className:t,...e}){return jsx("th",{"data-slot":"table-head",className:a("h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0",t),...e})}function oe({className:t,...e}){return jsx("td",{"data-slot":"table-cell",className:a("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0",t),...e})}function ne({className:t,...e}){return jsx("caption",{"data-slot":"table-caption",className:a("mt-4 text-sm opacity-80",t),...e})}function ae({delayDuration:t=0,...e}){return jsx(Tooltip.Provider,{"data-slot":"tooltip-provider",delayDuration:t,...e})}function re({...t}){return jsx(Tooltip.Root,{"data-slot":"tooltip",...t})}function ie({...t}){return jsx(Tooltip.Trigger,{"data-slot":"tooltip-trigger",...t})}function se({className:t,sideOffset:e=0,children:n,...a$1}){return jsx(Tooltip.Portal,{children:jsxs(Tooltip.Content,{"data-slot":"tooltip-content",sideOffset:e,className:a("z-50 inline-flex w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) items-center gap-1.5 rounded-md border px-3 py-1.5 text-xs has-data-[slot=kbd]:pr-1.5 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 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",t),...a$1,children:[n,jsx(Tooltip.Arrow,{className:"z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]"})]})})}var un={Button:g,ButtonGroup:Y,ButtonGroupSeparator:$,ButtonGroupText:Z,Card:tt,CardAction:at,CardContent:rt,CardDescription:nt,CardFooter:it,CardHeader:et,CardTitle:ot,Checkbox:lt,DropdownMenu:dt,DropdownMenuCheckboxItem:gt,DropdownMenuContent:ut,DropdownMenuGroup:mt,DropdownMenuItem:ft,DropdownMenuLabel:ht,DropdownMenuPortal:pt,DropdownMenuRadioGroup:bt,DropdownMenuRadioItem:vt,DropdownMenuSeparator:Pt,DropdownMenuShortcut:xt,DropdownMenuSub:wt,DropdownMenuSubContent:Ct,DropdownMenuSubTrigger:yt,DropdownMenuTrigger:ct,Empty:Rt,EmptyContent:kt,EmptyDescription:It,EmptyHeader:St,EmptyMedia:zt,EmptyTitle:Nt,Input:A,InputGroup:k,InputGroupAddon:T,InputGroupInput:x,InputGroupText:Dt,Pagination:Mt,PaginationContent:Gt,PaginationEllipsis:Et,PaginationFirst:Lt,PaginationItem:_t,PaginationLast:Vt,PaginationLink:h,PaginationNext:At,PaginationPrevious:Bt,ScrollArea:Ht,ScrollBar:V,Select:Ut,SelectContent:jt,SelectGroup:Ft,SelectItem:Jt,SelectLabel:qt,SelectScrollDownButton:H,SelectScrollUpButton:E,SelectSeparator:Qt,SelectTrigger:Ot,SelectValue:Kt,Separator:N,Skeleton:Wt,Table:Xt,TableBody:Zt,TableCaption:ne,TableCell:oe,TableFooter:$t,TableHead:ee,TableHeader:Yt,TableRow:te,Tooltip:re,TooltipContent:se,TooltipProvider:ae,TooltipTrigger:ie};export{Mt as A,h as B,Bt as C,Lt as D,At as E,Vt as F,Ht as G,V as H,Ot as I,jt as J,qt as K,Jt as L,Qt as M,Wt as N,Xt as O,Yt as P,Zt as Q,$t as R,te as S,ee as T,oe as U,ne as V,se as W,un as X,g as a,N as b,tt as c,et as d,nt as e,rt as f,it as g,lt as h,ut as i,ft as j,gt as k,vt as l,ht as m,Pt as n,yt as o,Ct as p,Rt as q,St as r,zt as s,Nt as t,It as u,kt as v,k as w,x,T as y,A as z};//# sourceMappingURL=chunk-ERWHHOBD.js.map +//# sourceMappingURL=chunk-ERWHHOBD.js.map \ No newline at end of file diff --git a/dist/chunk-7EXRF7VC.js.map b/dist/chunk-ERWHHOBD.js.map similarity index 99% rename from dist/chunk-7EXRF7VC.js.map rename to dist/chunk-ERWHHOBD.js.map index 340a7cc..c76325a 100644 --- a/dist/chunk-7EXRF7VC.js.map +++ b/dist/chunk-ERWHHOBD.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/components/ui/button.tsx","../src/components/ui/separator.tsx","../src/components/ui/button-group.tsx","../src/components/ui/card.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/empty.tsx","../src/components/ui/input-base.ts","../src/components/ui/input-group.tsx","../src/components/ui/input.tsx","../src/components/ui/pagination.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/select.tsx","../src/components/ui/skeleton.tsx","../src/components/ui/table.tsx","../src/components/ui/tooltip.tsx","../src/core/primitive-ui-kit.ts"],"names":["buttonVariants","cva","Button","className","variant","size","asChild","props","Comp","Slot","jsx","cn","Separator","orientation","decorative","SeparatorPrimitive","buttonGroupVariants","ButtonGroup","ButtonGroupText","ButtonGroupSeparator","Card","CardHeader","CardTitle","CardDescription","CardAction","CardContent","CardFooter","Checkbox","CheckboxPrimitive","IconCheck","DropdownMenu","DropdownMenuPrimitive","DropdownMenuPortal","DropdownMenuTrigger","DropdownMenuContent","align","sideOffset","DropdownMenuGroup","DropdownMenuItem","inset","DropdownMenuCheckboxItem","children","checked","jsxs","DropdownMenuRadioGroup","DropdownMenuRadioItem","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuShortcut","DropdownMenuSub","DropdownMenuSubTrigger","IconChevronRight","DropdownMenuSubContent","Empty","EmptyHeader","emptyMediaVariants","EmptyMedia","EmptyTitle","EmptyDescription","EmptyContent","inputClassName","InputGroup","InputGroupInput","Tt","ref","InputGroupAddon","InputGroupText","Input","passwordToggle","type","showPassword","setShowPassword","event","current","IconEyeOff","IconEye","Pagination","PaginationContent","PaginationItem","PaginationLink","isActive","disabled","PaginationPrevious","showText","text","IconChevronLeft","PaginationFirst","IconChevronsLeft","PaginationNext","PaginationLast","IconChevronsRight","PaginationEllipsis","IconDots","ScrollArea","ScrollAreaPrimitive","ScrollBar","Select","SelectPrimitive","SelectGroup","SelectValue","SelectTrigger","IconSelector","SelectContent","position","SelectScrollUpButton","SelectScrollDownButton","SelectLabel","SelectItem","SelectSeparator","IconChevronUp","IconChevronDown","Skeleton","Table","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","TooltipProvider","delayDuration","TooltipPrimitive","Tooltip","TooltipTrigger","TooltipContent","primitiveUiKit"],"mappings":"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","file":"chunk-7EXRF7VC.js","sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:outline-none active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"\",\n outline: \"\",\n secondary: \"\",\n ghost: \"\",\n destructive: \"\",\n link: \"underline-offset-4 hover:underline\",\n },\n size: {\n default:\n \"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n xs: \"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n icon: \"size-8\",\n \"icon-xs\":\n \"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\":\n \"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg\",\n \"icon-lg\": \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps & {\n asChild?: boolean;\n }) {\n const Comp = asChild ? Slot.Root : \"button\";\n\n return (\n \n );\n}\n\nexport { Button, buttonVariants };\n","import * as React from \"react\";\nimport { Separator as SeparatorPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nexport { Separator };\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Separator } from \"./separator\";\n\nconst buttonGroupVariants = cva(\n \"flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal:\n \"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg!\",\n vertical:\n \"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg!\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n },\n);\n\nfunction ButtonGroup({\n className,\n orientation,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps) {\n return (\n \n );\n}\n\nfunction ButtonGroupText({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n asChild?: boolean;\n}) {\n const Comp = asChild ? Slot.Root : \"div\";\n\n return (\n \n );\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nexport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n buttonGroupVariants,\n};\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n};\n","import * as React from \"react\";\nimport { Checkbox as CheckboxPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\nimport { IconCheck } from \"../../core/icons\";\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n svg]:size-3.5\"\n >\n \n \n \n );\n}\n\nexport { Checkbox };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\nimport { IconCheck, IconChevronRight } from \"../../core/icons\";\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuContent({\n className,\n align = \"start\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n );\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n \n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n inset,\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n}) {\n return (\n \n \n \n \n \n \n {children}\n \n );\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n inset,\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n}) {\n return (\n \n \n \n \n \n \n {children}\n \n );\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n}) {\n return (\n \n );\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n \n );\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n}) {\n return (\n \n {children}\n \n \n );\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n};\n","import { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Empty({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nconst emptyMediaVariants = cva(\n \"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"flex size-8 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction EmptyMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps) {\n return (\n \n );\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n a]:underline [&>a]:underline-offset-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nexport {\n Empty,\n EmptyHeader,\n EmptyTitle,\n EmptyDescription,\n EmptyContent,\n EmptyMedia,\n};\n","export const inputClassName =\n \"h-8 w-full min-w-0 rounded-lg border px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:opacity-70 focus-visible:outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\";\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { inputClassName } from \"./input-base\";\n\ntype InputGroupAddonAlign =\n | \"inline-start\"\n | \"inline-end\"\n | \"block-start\"\n | \"block-end\";\n\nfunction InputGroup({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n [data-slot=input-group-addon][data-align=block-start]]:flex-col has-[>[data-slot=input-group-addon][data-align=block-end]]:flex-col has-[>[data-slot=input-group-control]:disabled]:cursor-not-allowed has-[>[data-slot=input-group-control]:disabled]:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nconst InputGroupInput = React.forwardRef<\n HTMLInputElement,\n React.ComponentProps<\"input\">\n>(function InputGroupInput({ className, ...props }, ref) {\n return (\n \n );\n});\n\ntype InputGroupAddonProps = React.ComponentProps<\"div\"> & {\n align?: InputGroupAddonAlign;\n};\n\nfunction InputGroupAddon({\n align = \"inline-start\",\n className,\n ...props\n}: InputGroupAddonProps) {\n return (\n \n );\n}\n\nfunction InputGroupText({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n \n );\n}\n\nInputGroupInput.displayName = \"InputGroupInput\";\n\nexport { InputGroup, InputGroupAddon, InputGroupInput, InputGroupText };\n","import * as React from \"react\";\nimport { IconEye, IconEyeOff } from \"../../core/icons\";\n\nimport { Button } from \"./button\";\nimport { inputClassName } from \"./input-base\";\nimport { InputGroup, InputGroupAddon, InputGroupInput } from \"./input-group\";\nimport { cn } from \"../../lib/utils\";\n\ntype InputProps = React.ComponentProps<\"input\"> & {\n passwordToggle?: boolean;\n};\n\nconst Input = React.forwardRef(function Input(\n { className, passwordToggle = false, type, ...props },\n ref,\n) {\n const [showPassword, setShowPassword] = React.useState(false);\n const canTogglePassword = passwordToggle && type === \"password\";\n\n if (!canTogglePassword) {\n return (\n \n );\n }\n\n return (\n \n \n \n event.preventDefault()}\n onClick={() => setShowPassword((current) => !current)}\n >\n {showPassword ? (\n \n ) : (\n \n )}\n \n \n \n );\n});\n\nInput.displayName = \"Input\";\n\nexport { Input };\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"./button\";\nimport {\n IconChevronsLeft,\n IconChevronsRight,\n IconChevronLeft,\n IconChevronRight,\n IconDots,\n} from \"../../core/icons\";\n\nfunction Pagination({ className, ...props }: React.ComponentProps<\"nav\">) {\n return (\n \n );\n}\n\nfunction PaginationContent({\n className,\n ...props\n}: React.ComponentProps<\"ul\">) {\n return (\n \n );\n}\n\nfunction PaginationItem({ ...props }: React.ComponentProps<\"li\">) {\n return
  • ;\n}\n\ntype PaginationLinkProps = {\n isActive?: boolean;\n disabled?: boolean;\n variant?: React.ComponentProps[\"variant\"];\n} & Pick, \"size\"> &\n React.ComponentProps<\"a\">;\n\nfunction PaginationLink({\n className,\n isActive,\n disabled = false,\n variant,\n size = \"icon\",\n ...props\n}: PaginationLinkProps) {\n return (\n \n \n \n );\n}\n\nfunction PaginationPrevious({\n className,\n disabled,\n showText = true,\n size = \"default\",\n text = \"Previous\",\n ...props\n}: React.ComponentProps & {\n showText?: boolean;\n text?: string;\n}) {\n return (\n \n \n {showText ? {text} : null}\n \n );\n}\n\nfunction PaginationFirst({\n className,\n disabled,\n showText = true,\n size = \"default\",\n text = \"First\",\n ...props\n}: React.ComponentProps & {\n showText?: boolean;\n text?: string;\n}) {\n return (\n \n \n {showText ? {text} : null}\n \n );\n}\n\nfunction PaginationNext({\n className,\n disabled,\n showText = true,\n size = \"default\",\n text = \"Next\",\n ...props\n}: React.ComponentProps & {\n showText?: boolean;\n text?: string;\n}) {\n return (\n \n {showText ? {text} : null}\n \n \n );\n}\n\nfunction PaginationLast({\n className,\n disabled,\n showText = true,\n size = \"default\",\n text = \"Last\",\n ...props\n}: React.ComponentProps & {\n showText?: boolean;\n text?: string;\n}) {\n return (\n \n {showText ? {text} : null}\n \n \n );\n}\n\nfunction PaginationEllipsis({\n className,\n text = \"More pages\",\n ...props\n}: React.ComponentProps<\"span\"> & { text?: string }) {\n return (\n \n \n {text}\n \n );\n}\n\nexport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n};\n","import * as React from \"react\";\nimport { ScrollArea as ScrollAreaPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n {children}\n \n \n \n \n );\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n );\n}\n\nexport { ScrollArea, ScrollBar };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Select as SelectPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\nimport {\n IconSelector,\n IconCheck,\n IconChevronUp,\n IconChevronDown,\n} from \"../../core/icons\";\n\nfunction Select({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction SelectGroup({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n \n {children}\n \n \n \n \n );\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"item-aligned\",\n align = \"center\",\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n \n {children}\n \n \n \n \n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n \n \n \n {children}\n \n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n","import { cn } from \"../../lib/utils\";\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nexport { Skeleton };\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n \n );\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n \n );\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n \n );\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n tr]:last:border-b-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n \n );\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n \n );\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n \n );\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n \n );\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Tooltip as TooltipPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n {children}\n \n \n \n );\n}\n\nexport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };\n","import type { DataTableUiKit } from \"./ui-kit\";\nimport { Button } from \"../components/ui/button\";\nimport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n} from \"../components/ui/button-group\";\nimport {\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"../components/ui/card\";\nimport { Checkbox } from \"../components/ui/checkbox\";\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from \"../components/ui/dropdown-menu\";\nimport {\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n} from \"../components/ui/empty\";\nimport { Input } from \"../components/ui/input\";\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n InputGroupText,\n} from \"../components/ui/input-group\";\nimport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n} from \"../components/ui/pagination\";\nimport { ScrollArea, ScrollBar } from \"../components/ui/scroll-area\";\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n} from \"../components/ui/select\";\nimport { Separator } from \"../components/ui/separator\";\nimport { Skeleton } from \"../components/ui/skeleton\";\nimport {\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n} from \"../components/ui/table\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../components/ui/tooltip\";\n\nexport const primitiveUiKit: DataTableUiKit = {\n Button,\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n Checkbox,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n Input,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n InputGroupText,\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n ScrollArea,\n ScrollBar,\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n Separator,\n Skeleton,\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n};\n\nexport {\n Button,\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n Checkbox,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n Input,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n InputGroupText,\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n ScrollArea,\n ScrollBar,\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n Separator,\n Skeleton,\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n};\n"]} \ No newline at end of file +{"version":3,"sources":["../src/components/ui/button.tsx","../src/components/ui/separator.tsx","../src/components/ui/button-group.tsx","../src/components/ui/card.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/empty.tsx","../src/components/ui/input-base.ts","../src/components/ui/input-group.tsx","../src/components/ui/input.tsx","../src/components/ui/pagination.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/select.tsx","../src/components/ui/skeleton.tsx","../src/components/ui/table.tsx","../src/components/ui/tooltip.tsx","../src/core/primitive-ui-kit.ts"],"names":["buttonVariants","cva","Button","className","variant","size","asChild","props","Comp","Slot","jsx","cn","Separator","orientation","decorative","SeparatorPrimitive","buttonGroupVariants","ButtonGroup","ButtonGroupText","ButtonGroupSeparator","Card","CardHeader","CardTitle","CardDescription","CardAction","CardContent","CardFooter","Checkbox","CheckboxPrimitive","IconCheck","DropdownMenu","DropdownMenuPrimitive","DropdownMenuPortal","DropdownMenuTrigger","DropdownMenuContent","align","sideOffset","DropdownMenuGroup","DropdownMenuItem","inset","DropdownMenuCheckboxItem","children","checked","jsxs","DropdownMenuRadioGroup","DropdownMenuRadioItem","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuShortcut","DropdownMenuSub","DropdownMenuSubTrigger","IconChevronRight","DropdownMenuSubContent","Empty","EmptyHeader","emptyMediaVariants","EmptyMedia","EmptyTitle","EmptyDescription","EmptyContent","inputClassName","InputGroup","InputGroupInput","Tt","ref","InputGroupAddon","InputGroupText","Input","passwordToggle","type","showPassword","setShowPassword","event","current","IconEyeOff","IconEye","Pagination","PaginationContent","PaginationItem","PaginationLink","isActive","disabled","PaginationPrevious","showText","text","IconChevronLeft","PaginationFirst","IconChevronsLeft","PaginationNext","PaginationLast","IconChevronsRight","PaginationEllipsis","IconDots","ScrollArea","ScrollAreaPrimitive","ScrollBar","Select","SelectPrimitive","SelectGroup","SelectValue","SelectTrigger","IconSelector","SelectContent","position","SelectScrollUpButton","SelectScrollDownButton","SelectLabel","SelectItem","SelectSeparator","IconChevronUp","IconChevronDown","Skeleton","Table","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","TooltipProvider","delayDuration","TooltipPrimitive","Tooltip","TooltipTrigger","TooltipContent","primitiveUiKit"],"mappings":"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","file":"chunk-ERWHHOBD.js","sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:outline-none active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"\",\n outline: \"\",\n secondary: \"\",\n ghost: \"\",\n destructive: \"\",\n link: \"underline-offset-4 hover:underline\",\n },\n size: {\n default:\n \"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n xs: \"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n icon: \"size-8\",\n \"icon-xs\":\n \"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\":\n \"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg\",\n \"icon-lg\": \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps & {\n asChild?: boolean;\n }) {\n const Comp = asChild ? Slot.Root : \"button\";\n\n return (\n \n );\n}\n\nexport { Button, buttonVariants };\n","import * as React from \"react\";\nimport { Separator as SeparatorPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nexport { Separator };\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Separator } from \"./separator\";\n\nconst buttonGroupVariants = cva(\n \"flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal:\n \"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg!\",\n vertical:\n \"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg!\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n },\n);\n\nfunction ButtonGroup({\n className,\n orientation,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps) {\n return (\n \n );\n}\n\nfunction ButtonGroupText({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n asChild?: boolean;\n}) {\n const Comp = asChild ? Slot.Root : \"div\";\n\n return (\n \n );\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nexport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n buttonGroupVariants,\n};\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n};\n","import * as React from \"react\";\nimport { Checkbox as CheckboxPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\nimport { IconCheck } from \"../../core/icons\";\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n svg]:size-3.5\"\n >\n \n \n \n );\n}\n\nexport { Checkbox };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\nimport { IconCheck, IconChevronRight } from \"../../core/icons\";\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuContent({\n className,\n align = \"start\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n );\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n \n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n inset,\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n}) {\n return (\n \n \n \n \n \n \n {children}\n \n );\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n inset,\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n}) {\n return (\n \n \n \n \n \n \n {children}\n \n );\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n}) {\n return (\n \n );\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n \n );\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n}) {\n return (\n \n {children}\n \n \n );\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n};\n","import { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Empty({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nconst emptyMediaVariants = cva(\n \"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"flex size-8 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction EmptyMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps) {\n return (\n \n );\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n a]:underline [&>a]:underline-offset-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nexport {\n Empty,\n EmptyHeader,\n EmptyTitle,\n EmptyDescription,\n EmptyContent,\n EmptyMedia,\n};\n","export const inputClassName =\n \"h-8 w-full min-w-0 rounded-lg border px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:opacity-70 focus-visible:outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\";\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { inputClassName } from \"./input-base\";\n\ntype InputGroupAddonAlign =\n | \"inline-start\"\n | \"inline-end\"\n | \"block-start\"\n | \"block-end\";\n\nfunction InputGroup({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n [data-slot=input-group-addon][data-align=block-start]]:flex-col has-[>[data-slot=input-group-addon][data-align=block-end]]:flex-col has-[>[data-slot=input-group-control]:disabled]:cursor-not-allowed has-[>[data-slot=input-group-control]:disabled]:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nconst InputGroupInput = React.forwardRef<\n HTMLInputElement,\n React.ComponentProps<\"input\">\n>(function InputGroupInput({ className, ...props }, ref) {\n return (\n \n );\n});\n\ntype InputGroupAddonProps = React.ComponentProps<\"div\"> & {\n align?: InputGroupAddonAlign;\n};\n\nfunction InputGroupAddon({\n align = \"inline-start\",\n className,\n ...props\n}: InputGroupAddonProps) {\n return (\n \n );\n}\n\nfunction InputGroupText({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n \n );\n}\n\nInputGroupInput.displayName = \"InputGroupInput\";\n\nexport { InputGroup, InputGroupAddon, InputGroupInput, InputGroupText };\n","import * as React from \"react\";\nimport { IconEye, IconEyeOff } from \"../../core/icons\";\n\nimport { Button } from \"./button\";\nimport { inputClassName } from \"./input-base\";\nimport { InputGroup, InputGroupAddon, InputGroupInput } from \"./input-group\";\nimport { cn } from \"../../lib/utils\";\n\ntype InputProps = React.ComponentProps<\"input\"> & {\n passwordToggle?: boolean;\n};\n\nconst Input = React.forwardRef(function Input(\n { className, passwordToggle = false, type, ...props },\n ref,\n) {\n const [showPassword, setShowPassword] = React.useState(false);\n const canTogglePassword = passwordToggle && type === \"password\";\n\n if (!canTogglePassword) {\n return (\n \n );\n }\n\n return (\n \n \n \n event.preventDefault()}\n onClick={() => setShowPassword((current) => !current)}\n >\n {showPassword ? (\n \n ) : (\n \n )}\n \n \n \n );\n});\n\nInput.displayName = \"Input\";\n\nexport { Input };\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"./button\";\nimport {\n IconChevronsLeft,\n IconChevronsRight,\n IconChevronLeft,\n IconChevronRight,\n IconDots,\n} from \"../../core/icons\";\n\nfunction Pagination({ className, ...props }: React.ComponentProps<\"nav\">) {\n return (\n \n );\n}\n\nfunction PaginationContent({\n className,\n ...props\n}: React.ComponentProps<\"ul\">) {\n return (\n \n );\n}\n\nfunction PaginationItem({ ...props }: React.ComponentProps<\"li\">) {\n return
  • ;\n}\n\ntype PaginationLinkProps = {\n isActive?: boolean;\n disabled?: boolean;\n variant?: React.ComponentProps[\"variant\"];\n} & Pick, \"size\"> &\n React.ComponentProps<\"a\">;\n\nfunction PaginationLink({\n className,\n isActive,\n disabled = false,\n variant,\n size = \"icon\",\n ...props\n}: PaginationLinkProps) {\n return (\n \n \n \n );\n}\n\nfunction PaginationPrevious({\n className,\n disabled,\n showText = true,\n size = \"default\",\n text = \"Previous\",\n ...props\n}: React.ComponentProps & {\n showText?: boolean;\n text?: string;\n}) {\n return (\n \n \n {showText ? {text} : null}\n \n );\n}\n\nfunction PaginationFirst({\n className,\n disabled,\n showText = true,\n size = \"default\",\n text = \"First\",\n ...props\n}: React.ComponentProps & {\n showText?: boolean;\n text?: string;\n}) {\n return (\n \n \n {showText ? {text} : null}\n \n );\n}\n\nfunction PaginationNext({\n className,\n disabled,\n showText = true,\n size = \"default\",\n text = \"Next\",\n ...props\n}: React.ComponentProps & {\n showText?: boolean;\n text?: string;\n}) {\n return (\n \n {showText ? {text} : null}\n \n \n );\n}\n\nfunction PaginationLast({\n className,\n disabled,\n showText = true,\n size = \"default\",\n text = \"Last\",\n ...props\n}: React.ComponentProps & {\n showText?: boolean;\n text?: string;\n}) {\n return (\n \n {showText ? {text} : null}\n \n \n );\n}\n\nfunction PaginationEllipsis({\n className,\n text = \"More pages\",\n ...props\n}: React.ComponentProps<\"span\"> & { text?: string }) {\n return (\n \n \n {text}\n \n );\n}\n\nexport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n};\n","import * as React from \"react\";\nimport { ScrollArea as ScrollAreaPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n {children}\n \n \n \n \n );\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n );\n}\n\nexport { ScrollArea, ScrollBar };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Select as SelectPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\nimport {\n IconSelector,\n IconCheck,\n IconChevronUp,\n IconChevronDown,\n} from \"../../core/icons\";\n\nfunction Select({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction SelectGroup({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n \n {children}\n \n \n \n \n );\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"item-aligned\",\n align = \"center\",\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n \n {children}\n \n \n \n \n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n \n \n \n {children}\n \n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n","import { cn } from \"../../lib/utils\";\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nexport { Skeleton };\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n \n );\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n \n );\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n \n );\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n tr]:last:border-b-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n \n );\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n \n );\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n \n );\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n \n );\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Tooltip as TooltipPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n {children}\n \n \n \n );\n}\n\nexport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };\n","import type { DataTableUiKit } from \"./ui-kit\";\nimport { Button } from \"../components/ui/button\";\nimport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n} from \"../components/ui/button-group\";\nimport {\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"../components/ui/card\";\nimport { Checkbox } from \"../components/ui/checkbox\";\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from \"../components/ui/dropdown-menu\";\nimport {\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n} from \"../components/ui/empty\";\nimport { Input } from \"../components/ui/input\";\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n InputGroupText,\n} from \"../components/ui/input-group\";\nimport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n} from \"../components/ui/pagination\";\nimport { ScrollArea, ScrollBar } from \"../components/ui/scroll-area\";\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n} from \"../components/ui/select\";\nimport { Separator } from \"../components/ui/separator\";\nimport { Skeleton } from \"../components/ui/skeleton\";\nimport {\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n} from \"../components/ui/table\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../components/ui/tooltip\";\n\nexport const primitiveUiKit: DataTableUiKit = {\n Button,\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n Checkbox,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n Input,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n InputGroupText,\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n ScrollArea,\n ScrollBar,\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n Separator,\n Skeleton,\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n};\n\nexport {\n Button,\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n Checkbox,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n Input,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n InputGroupText,\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n ScrollArea,\n ScrollBar,\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n Separator,\n Skeleton,\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n};\n"]} \ No newline at end of file diff --git a/dist/chunk-FXX3TZ63.js b/dist/chunk-FXX3TZ63.js new file mode 100644 index 0000000..7f25f54 --- /dev/null +++ b/dist/chunk-FXX3TZ63.js @@ -0,0 +1,2 @@ +import {a}from'./chunk-EJHT5JBZ.js';import {a as a$1,b}from'./chunk-674VSOYY.js';import*as f from'react';import {useVirtualizer}from'@tanstack/react-virtual';import {jsx,jsxs}from'react/jsx-runtime';function lt({cardClassName:r,cardGridClassName:o,cardSizing:y,cardRenderer:E,containerWidth:N,currentRowSelection:V,DataTableCardView:z,DataTableEmptyState:M,dragAndDrop:d,editableRows:k,editingRowId:A,emptyNode:P,enableRowSelection:I,flexGrow:g,getRowClassName:H,hasCardTitle:_,infiniteScroll:B,localSearchValue:h,onRowClick:K,renderedRows:e,renderExpandedRow:O,resolvedLabels:n,resolvedLoadingRowCount:j,rowActions:U=[],ScrollArea:Y,sentinelRef:$,setCurrentRowSelection:q,setEditingRowId:F,shouldRenderInitialLoading:m,tableContainerClassName:J,uiClassNames:p,virtualization:R}){let v=m||e.length>0,x=f.useRef(null),{viewportElement:T,viewportHeight:Q}=a(x,v),l=typeof R=="object"?R.card:void 0,D=!m&&e.length>0&&l?.enabled===true,i=tt(l?.lanes,N),X=Math.ceil(e.length/i),b=D&&!!T&&Q>0,Z=f.useCallback(t=>e[t*i]?.id??t,[i,e]),w=useVirtualizer({count:D?X:0,enabled:b,estimateSize:()=>l?.estimateCardHeight??280,getItemKey:Z,getScrollElement:()=>T,overscan:l?.overscan??4}),G=b?w.getVirtualItems():[],C=(t,s)=>jsx(z,{rows:t,cardRenderer:E,cardGridClassName:o,cardClassName:r,cardSizing:y,rowActions:U,editableRows:k,renderExpandedRow:O,hasCardTitle:_,rowSelection:V,onRowSelectionChange:q,enableRowSelection:I,editingRowId:A,onEditingRowIdChange:F,getRowClassName:H,onRowClick:K,getRowDraggable:d?.getRowDraggable,onRowDragStart:d?.onRowDragStart,onRowDragEnd:d?.onRowDragEnd,isLoading:s?.isLoading,loadingRowCount:s?.loadingRowCount,labels:n});return jsx("div",{ref:x,"data-dtp-slot":"data-table-card-shell",className:a$1("box-border border-2 border-transparent transition-colors",g?"flex min-h-0 flex-1 flex-col":"h-full",d?.isDragging&&(p.dragActive??"rounded-md border-dashed")),children:jsx(Y,{className:a$1(g?"min-h-0 flex-1":"h-full",p.cardScrollArea,J),children:jsxs("div",{"data-dtp-slot":"data-table-card-viewport",className:a$1("flex min-h-full min-w-0 flex-col",g&&"min-h-0 flex-1",p.cardViewport),children:[v?m?C([],{isLoading:true,loadingRowCount:j}):b?jsx("div",{"data-dtp-slot":"data-table-card-virtualizer",style:{height:w.getTotalSize(),position:"relative",width:"100%"},children:G.map(t=>{let s=t.index*i,L=e.slice(s,s+i);return jsx("div",{"data-index":t.index,ref:w.measureElement,style:{left:0,position:"absolute",top:0,transform:`translateY(${t.start}px)`,width:"100%"},children:C(L)},t.key)})}):C(e.slice(0,Math.max(1,Math.floor(l?.fallbackCardCount??12)))):jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center p-4",children:P??jsx(M,{title:h?n.noMatchingRowsTitle:n.noRowsTitle,description:h?n.noMatchingRowsDescription:n.noRowsDescription})}),B?.enabled&&!m?jsx("div",{className:"shrink-0 px-4 pb-4",children:jsx("div",{ref:$,className:"h-4 w-full"})}):null]})})})}function tt(r,o){return typeof r=="number"?Math.max(1,Math.floor(r)):r!=="auto"?1:o>=b["2xl"]?5:o>=b.xl?4:o>=b.lg?3:o>=b.sm?2:1}export{lt as a};//# sourceMappingURL=chunk-FXX3TZ63.js.map +//# sourceMappingURL=chunk-FXX3TZ63.js.map \ No newline at end of file diff --git a/dist/chunk-FXX3TZ63.js.map b/dist/chunk-FXX3TZ63.js.map new file mode 100644 index 0000000..67c143a --- /dev/null +++ b/dist/chunk-FXX3TZ63.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/core/data-table/data-table-virtual-card-panel.tsx"],"names":["DataTableVirtualCardPanel","cardClassName","cardGridClassName","cardSizing","cardRenderer","containerWidth","currentRowSelection","DataTableCardView","DataTableEmptyState","dragAndDrop","editableRows","editingRowId","emptyNode","enableRowSelection","flexGrow","getRowClassName","hasCardTitle","infiniteScroll","localSearchValue","onRowClick","renderedRows","renderExpandedRow","resolvedLabels","resolvedLoadingRowCount","rowActions","ScrollArea","sentinelRef","setCurrentRowSelection","setEditingRowId","shouldRenderInitialLoading","tableContainerClassName","uiClassNames","virtualization","shouldRenderCards","cardScrollContainerRef","viewportElement","viewportHeight","useDataTableScrollViewport","virtualizationConfig","enableCardVirtualization","lanes","resolveCardVirtualizationLanes","virtualRowCount","shouldUseVirtualCardRows","getItemKey","index","cardVirtualizer","useVirtualizer","virtualCardRows","renderCardView","rows","options","jsx","cn","jsxs","virtualRow","startIndex","configuredLanes","DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS"],"mappings":"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","file":"chunk-FXX3TZ63.js","sourcesContent":["import * as React from \"react\";\nimport type { Row } from \"@tanstack/react-table\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { cn } from \"../../lib/utils\";\nimport { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS } from \"../types\";\nimport type { DataTableCardPanelProps } from \"./data-table-card-panel-types\";\nimport { useDataTableScrollViewport } from \"./use-data-table-scroll-viewport\";\n\nexport function DataTableVirtualCardPanel({\n cardClassName,\n cardGridClassName,\n cardSizing,\n cardRenderer,\n containerWidth,\n currentRowSelection,\n DataTableCardView,\n DataTableEmptyState,\n dragAndDrop,\n editableRows,\n editingRowId,\n emptyNode,\n enableRowSelection,\n flexGrow,\n getRowClassName,\n hasCardTitle,\n infiniteScroll,\n localSearchValue,\n onRowClick,\n renderedRows,\n renderExpandedRow,\n resolvedLabels,\n resolvedLoadingRowCount,\n rowActions = [],\n ScrollArea,\n sentinelRef,\n setCurrentRowSelection,\n setEditingRowId,\n shouldRenderInitialLoading,\n tableContainerClassName,\n uiClassNames,\n virtualization,\n}: DataTableCardPanelProps) {\n const shouldRenderCards = shouldRenderInitialLoading || renderedRows.length > 0;\n const cardScrollContainerRef = React.useRef(null);\n const { viewportElement, viewportHeight } = useDataTableScrollViewport(\n cardScrollContainerRef,\n shouldRenderCards,\n );\n const virtualizationConfig =\n typeof virtualization === \"object\" ? virtualization.card : undefined;\n const enableCardVirtualization =\n !shouldRenderInitialLoading &&\n renderedRows.length > 0 &&\n virtualizationConfig?.enabled === true;\n const lanes = resolveCardVirtualizationLanes(\n virtualizationConfig?.lanes,\n containerWidth,\n );\n const virtualRowCount = Math.ceil(renderedRows.length / lanes);\n const shouldUseVirtualCardRows =\n enableCardVirtualization && Boolean(viewportElement) && viewportHeight > 0;\n const getItemKey = React.useCallback(\n (index: number) => renderedRows[index * lanes]?.id ?? index,\n [lanes, renderedRows],\n );\n // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Virtual owns its instance functions.\n const cardVirtualizer = useVirtualizer({\n count: enableCardVirtualization ? virtualRowCount : 0,\n enabled: shouldUseVirtualCardRows,\n estimateSize: () => virtualizationConfig?.estimateCardHeight ?? 280,\n getItemKey,\n getScrollElement: () => viewportElement,\n overscan: virtualizationConfig?.overscan ?? 4,\n });\n const virtualCardRows = shouldUseVirtualCardRows\n ? cardVirtualizer.getVirtualItems()\n : [];\n\n const renderCardView = (\n rows: Array>,\n options?: {\n isLoading?: boolean;\n loadingRowCount?: number;\n },\n ) => (\n \n );\n\n return (\n \n \n \n {shouldRenderCards ? (\n shouldRenderInitialLoading ? (\n renderCardView([], {\n isLoading: true,\n loadingRowCount: resolvedLoadingRowCount,\n })\n ) : shouldUseVirtualCardRows ? (\n \n {virtualCardRows.map((virtualRow) => {\n const startIndex = virtualRow.index * lanes;\n const rows = renderedRows.slice(\n startIndex,\n startIndex + lanes,\n );\n\n return (\n \n {renderCardView(rows)}\n \n );\n })}\n \n ) : (\n renderCardView(\n renderedRows.slice(\n 0,\n Math.max(\n 1,\n Math.floor(\n virtualizationConfig?.fallbackCardCount ?? 12,\n ),\n ),\n ),\n )\n )\n ) : (\n
    \n {emptyNode ?? (\n \n )}\n
    \n )}\n\n {infiniteScroll?.enabled && !shouldRenderInitialLoading ? (\n
    \n
    \n
    \n ) : null}\n
    \n \n \n );\n}\n\nfunction resolveCardVirtualizationLanes(\n configuredLanes: number | \"auto\" | undefined,\n containerWidth: number,\n) {\n if (typeof configuredLanes === \"number\") {\n return Math.max(1, Math.floor(configuredLanes));\n }\n\n if (configuredLanes !== \"auto\") {\n return 1;\n }\n\n if (containerWidth >= DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS[\"2xl\"]) {\n return 5;\n }\n if (containerWidth >= DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS.xl) {\n return 4;\n }\n if (containerWidth >= DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS.lg) {\n return 3;\n }\n if (containerWidth >= DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS.sm) {\n return 2;\n }\n return 1;\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-ICUCANNA.js b/dist/chunk-ICUCANNA.js new file mode 100644 index 0000000..067a889 --- /dev/null +++ b/dist/chunk-ICUCANNA.js @@ -0,0 +1,2 @@ +import {a as a$1}from'./chunk-EJHT5JBZ.js';import {w,u,c,z,A,G,L,D,N,F,v,x,y as y$1,J,K,H,P,E,S,o,t,j as j$1,l,r,a as a$2,q,p,M,I,O,B,C,k,i}from'./chunk-32UNH3MQ.js';import {b,a,j,c as c$1,e,f,d}from'./chunk-674VSOYY.js';import*as y from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {useReactTable,getPaginationRowModel,getExpandedRowModel,getSortedRowModel,getFilteredRowModel,getCoreRowModel}from'@tanstack/react-table';import {flushSync}from'react-dom';function Vt({cardClassName:e,cardGridClassName:a$1,cardSizing:t,cardRenderer:n,currentRowSelection:i,DataTableCardView:s,DataTableEmptyState:l,dragAndDrop:b,editableRows:u,editingRowId:D,emptyNode:v,enableRowSelection:E,flexGrow:R,getRowClassName:S,hasCardTitle:x,infiniteScroll:M,localSearchValue:H,onRowClick:T,renderedRows:m,renderExpandedRow:c,resolvedLabels:w,resolvedLoadingRowCount:f,rowActions:r=[],ScrollArea:h,sentinelRef:g,setCurrentRowSelection:$,setEditingRowId:I,shouldRenderInitialLoading:B,tableContainerClassName:K,uiClassNames:A}){let C=B||m.length>0,Q=y.useRef(null),j=(q,X)=>jsx(s,{rows:q,cardRenderer:n,cardGridClassName:a$1,cardClassName:e,cardSizing:t,rowActions:r,editableRows:u,renderExpandedRow:c,hasCardTitle:x,rowSelection:i,onRowSelectionChange:$,enableRowSelection:E,editingRowId:D,onEditingRowIdChange:I,getRowClassName:S,onRowClick:T,getRowDraggable:b?.getRowDraggable,onRowDragStart:b?.onRowDragStart,onRowDragEnd:b?.onRowDragEnd,isLoading:X?.isLoading,loadingRowCount:X?.loadingRowCount,labels:w});return jsx("div",{ref:Q,"data-dtp-slot":"data-table-card-shell",className:a("box-border border-2 border-transparent transition-colors",R?"flex min-h-0 flex-1 flex-col":"h-full",b?.isDragging&&(A.dragActive??"rounded-md border-dashed")),children:jsx(h,{className:a(R?"min-h-0 flex-1":"h-full",A.cardScrollArea,K),children:jsxs("div",{"data-dtp-slot":"data-table-card-viewport",className:a("flex min-h-full min-w-0 flex-col",R&&"min-h-0 flex-1",A.cardViewport),children:[C?B?j([],{isLoading:true,loadingRowCount:f}):j(m):jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center p-4",children:v??jsx(l,{title:H?w.noMatchingRowsTitle:w.noRowsTitle,description:H?w.noMatchingRowsDescription:w.noRowsDescription})}),M?.enabled&&!B?jsx("div",{className:"shrink-0 px-4 pb-4",children:jsx("div",{ref:g,className:"h-4 w-full"})}):null]})})})}var Rr=y.lazy(async()=>({default:(await import('./data-table-virtual-card-panel-4LELMUIN.js')).DataTableVirtualCardPanel}));function oo(e){let a=typeof e.virtualization=="object"?e.virtualization.card:void 0;return a?.enabled!==true?jsx(Vt,{...e}):jsx(y.Suspense,{fallback:jsx(Vt,{...e,renderedRows:e.renderedRows.slice(0,Math.max(1,Math.floor(a.fallbackCardCount??12)))}),children:jsx(Rr,{...e})})}function io({children:e,currentPagination:a,DataTableFooter:t,effectivePageCount:n,footerTotalRowCount:i,handleFooterPageIndexChange:s,handleFooterPageSizeChange:l,labels:b,pageCountKnown:u=true,rowsPerPageOptions:D,showFooter:v}){return !v&&!e?null:jsxs("div",{"data-dtp-slot":"data-table-footer",className:"shrink-0",children:[v?jsx(t,{pageIndex:a.pageIndex,pageCount:n,pageCountKnown:u,pageSize:a.pageSize,totalRowCount:i,rowsPerPageOptions:D,onPageIndexChange:s,onPageSizeChange:l,labels:b}):null,e]})}function lo({allRows:e,columnFilters:a,columnVisibilityOptions:t,compactToolbar:n,customToolbar:i,DataTableToolbar:s,description:l,descriptionId:b,effectiveToolbarActions:u,enableColumnPinning:D,enableDensityToggle:v,enableViewToggle:E,hiddenRowsLabel:R,labels:S,onClearColumnFilters:x,onColumnFilterChange:M,onColumnPinningChange:H,onDensityChange:T,onShowHiddenRowsChange:m,onToolbarQueryValueChange:c,onViewModeChange:w,openFileDialog:f,selectedRows:r,selectionActions:h,showHiddenRows:g,table:$,title:I,titleId:B,toolbarQueryPlaceholder:K,toolbarQueryValue:A,toolbarVisibility:C,density:Q,viewMode:j}){return jsx("div",{"data-dtp-slot":"data-table-toolbar",className:"shrink-0",children:jsx(s,{title:I,titleId:B,description:l,descriptionId:b,toolbarQueryValue:A,toolbarQueryPlaceholder:K,onToolbarQueryValueChange:c,customToolbar:i,compactToolbar:n,viewMode:j,onViewModeChange:w,enableViewToggle:E,toolbarActions:u,selectionActions:h,selectedRows:r,showHiddenRows:g,hiddenRowsLabel:R,onShowHiddenRowsChange:m,allRows:e,columnVisibilityOptions:t,onColumnVisibilityChange:(q,X)=>{$.getColumn(q)?.toggleVisibility(X);},enableColumnPinning:D,onColumnPinningChange:H,columnFilters:a,onColumnFilterChange:M,onClearColumnFilters:x,density:Q,onDensityChange:T,enableDensityToggle:v,labels:S,toolbarVisibility:C,openFileDialog:f})})}var ce={searchPlaceholder:"Search rows...",searchTable:"Search table",clearSearch:"Clear search",noRowsTitle:"No rows yet",noRowsDescription:"Create a record or refresh this view once data exists.",noMatchingRowsTitle:"No matching rows",noMatchingRowsDescription:"Try a different search term or clear filters.",tableOptions:"Show table options",columns:"Columns",filters:"Filters",clearFilters:"Clear filters",selectedRows:e=>`${e} record${e===1?"":"s"} selected`,showHiddenRows:e=>`Show ${e}`,recordsPerPage:"Records per page",totalRecords:e=>`Total records: ${e}`,pageStatus:(e,a)=>`Page ${e+1} of ${a}`,pageStatusUnknown:e=>`Page ${e+1}`,pagination:"Pagination",morePages:"More pages",firstPage:"First page",previousPage:"Previous page",nextPage:"Next page",lastPage:"Last page",selectAllVisibleRows:"Select all visible rows",selectRow:"Select row",selectCardRow:e=>`Select row ${e}`,switchToTableView:"Switch to table view",switchToCardView:"Switch to card view",tableView:"Table view",cardView:"Card view",allFilterOptions:"All",actions:"Actions",rowActions:"Row actions",editRow:"Edit row",saveEdit:"Save",cancelEdit:"Cancel editing",expandRow:"Expand row",collapseRow:"Collapse row",exportCsv:"Export CSV",density:"Density",compactDensity:"Compact",comfortableDensity:"Comfortable",spaciousDensity:"Spacious",pinLeft:"Pin left",pinRight:"Pin right",unpin:"Unpin",resizeColumn:e=>`Resize ${e}`};function so(e){return {...ce,...e}}function co({Button:e,Checkbox:a$1,DataTableRowActions:t,Tooltip:n,TooltipContent:i,TooltipTrigger:s,cancelEditing:l,columns:b,editableRows:u$1,editingRowId:D,enableRowSelection:v,getRowCanExpand:E,isSavingEdit:R,labels:S,lastSelectedRowIdRef:x,renderExpandedRow:M,rowActions:H,saveEdit:T,startEditingRow:m,tableRef:c$1}){let w$1=y.useCallback((f,r)=>{let h=c$1.current;if(!h||!x.current)return;let g=h.getRowModel().rows.filter(A=>!w(A.original)),$=g.findIndex(A=>A.id===x.current),I=g.findIndex(A=>A.id===f);if($<0||I<0)return;let B=Math.min($,I),K=Math.max($,I);h.setRowSelection(A=>{let C={...A};for(let Q of g.slice(B,K+1))r?C[Q.id]=true:delete C[Q.id];return C});},[x,c$1]);return y.useMemo(()=>{let f=[];return M&&f.push({id:"__expand__",enableResizing:false,enableSorting:false,enableHiding:false,size:u,minSize:u,maxSize:u,header:()=>jsx("span",{className:"sr-only",children:S.expandRow}),cell:({row:r})=>{if(!(E?.(r.original)??!!M))return null;let g=r.getIsExpanded();return jsx("div",{className:"flex items-center justify-center",children:jsx(e,{type:"button",variant:"ghost",size:"icon-sm","aria-label":g?S.collapseRow:S.expandRow,"aria-expanded":g,onClick:()=>r.toggleExpanded(),children:jsx(c,{className:a("transition-transform",g?"rotate-0":"-rotate-90")})})})}}),v&&f.push({id:"__select__",enableResizing:false,enableSorting:false,enableHiding:false,size:u,minSize:u,maxSize:u,header:({table:r})=>jsx("div",{className:"flex items-center justify-center",children:jsx(a$1,{className:"my-0.5",checked:r.getIsAllPageRowsSelected(),onCheckedChange:h=>{r.toggleAllPageRowsSelected(h===true);},"aria-label":S.selectAllVisibleRows??ce.selectAllVisibleRows})}),cell:({row:r})=>jsx("div",{className:"flex items-center justify-center",children:jsx(a$1,{className:"my-0.5",checked:r.getIsSelected(),onClick:h=>{if(!h.shiftKey||!x.current){x.current=r.id;return}h.preventDefault(),h.stopPropagation(),w$1(r.id,!r.getIsSelected()),x.current=r.id;},onCheckedChange:h=>{x.current=r.id,r.toggleSelected(h===true);},"aria-label":S.selectRow??ce.selectRow})})}),f.push(...b.map(r=>z(r))),(H.length||u$1)&&f.push({id:"__actions__",enableSorting:false,enableResizing:false,enableHiding:false,size:u,minSize:u,maxSize:u,header:()=>jsx("span",{className:"sr-only",children:S.actions}),cell:({row:r})=>{let h=r.id;return D===h?jsxs("div",{className:"flex w-full items-center justify-end gap-2",children:[jsx(e,{type:"button",size:"sm",disabled:R,onClick:()=>{T(r.original);},children:S.saveEdit}),jsxs(n,{children:[jsx(s,{asChild:true,children:jsxs(e,{type:"button",size:"icon-sm",variant:"ghost",onClick:l,children:[jsx(c,{className:"rotate-45"}),jsx("span",{className:"sr-only",children:S.cancelEdit})]})}),jsx(i,{children:S.cancelEdit})]})]}):jsx("div",{className:"flex w-full items-center justify-center",children:jsx(t,{row:r.original,rowActions:H,editableRows:u$1,isEditing:false,onStartEditing:()=>{m(r.original,r.id);},onCancelEditing:()=>{},labels:S})})}}),f},[e,a$1,t,n,i,s,l,b,u$1,D,v,E,R,S,x,M,H,T,w$1,m])}function uo({enabled:e,hasMore:a,isLoadingMore:t,onLoadMore:n,onError:i}){let s=y.useRef(null),l=y.useRef(false),b=y.useEffectEvent(n),u=y.useEffectEvent(D=>{i?.(D);});return y.useEffect(()=>{if(!e||!a||t)return;let D=s.current;if(!D)return;let v=new IntersectionObserver(E=>{if(E[0].isIntersecting&&!l.current){l.current=true;let S;try{S=b();}catch(x){l.current=false,u(x);return}Promise.resolve(S).catch(x=>{u(x);}).finally(()=>{l.current=false;});}},{rootMargin:"200px 0px 200px 0px"});return v.observe(D),()=>{v.disconnect();}},[e,a,t]),s}function bo({enabled:e,maxPageIndex:a,onPageIndexChange:t,pageIndex:n,setLocalPageIndex:i}){y.useEffect(()=>{if(!e||n>=0&&n<=a)return;let s=Math.min(Math.max(n,0),a);i(s),t?.(s);},[e,a,t,n,i]);}function mo({autoResetPageIndex:e,columnResizeMode:a,dir:t,currentColumnFilters:n,currentColumnOrder:i,currentColumnPinning:s,currentColumnSizing:l,currentExpanded:b,currentPagination:u,currentRowSelection:D$1,currentSorting:v,defaultColumn:E,effectiveColumnVisibility:R,enableColumnResizing:S,enableRowSelection:x,getRowCanExpand:M,globalFilterFn:H,globalFilterValue:T,hasNextPage:m,handleColumnFiltersChange:c,handleColumnOrderChange:w,handleColumnPinningChange:f,handleColumnVisibilityChange:r,handleExpandedChange:h,infiniteScroll:g,manualFiltering:$,manualPagination:I,manualSorting:B,onActionError:K,onPageIndexChange:A$1,onPageSizeChange:C,pageCount:Q,pageIndex:j,pageSize:q,renderExpandedRow:X,setCurrentRowSelection:V,setCurrentSorting:U,setLocalColumnSizing:Z,setLocalPagination:te,shouldRenderInitialLoading:se,tableColumns:me,tableData:Le,tableGetRowId:Me,tableRef:Ce,totalRowCount:J,virtualization:Ae}){let pe=y.useMemo(()=>A(me).map(({column:k,index:N})=>G(k,N)),[me]),Ve=y.useMemo(()=>{let k=pe,N=k.filter(W=>!L(W)&&W!=="__spacer__"),ne=new Set(N),o=i.filter(W=>ne.has(W)),P=N.filter(W=>!o.includes(W));return [...k.filter(W=>W==="__expand__"||W==="__select__"),...o,...P,...k.filter(W=>W==="__spacer__"),...k.filter(W=>W==="__actions__")]},[i,pe]),De=y.useMemo(()=>{let k=new Set(pe),N=new Set(pe.filter(P=>!L(P)&&P!=="__spacer__")),ne=(s.left??[]).filter(P=>N.has(P)),o=(s.right??[]).filter(P=>N.has(P));return {left:[...["__expand__","__select__"].filter(P=>k.has(P)),...ne],right:[...o,...["__actions__"].filter(P=>k.has(P))]}},[s,pe]),F=y.useMemo(()=>({sorting:v,pagination:u,rowSelection:D$1,columnVisibility:R,columnFilters:n,globalFilter:T,expanded:b,columnOrder:Ve,columnPinning:De,columnSizing:l}),[n,l,b,u,D$1,v,R,Ve,De,T]),we=y.useCallback(k=>{let N=typeof k=="function"?k(u):k;(j===void 0||q===void 0)&&te(ne=>({pageIndex:j===void 0?N.pageIndex:ne.pageIndex,pageSize:q===void 0?N.pageSize:ne.pageSize})),N.pageIndex!==u.pageIndex&&A$1?.(N.pageIndex),N.pageSize!==u.pageSize&&C?.(N.pageSize);},[u,A$1,C,j,q,te]),Se=y.useCallback(k=>{Z(k);},[Z]),be=useReactTable({data:Le,columns:me,getCoreRowModel:getCoreRowModel(),getFilteredRowModel:$?void 0:getFilteredRowModel(),getSortedRowModel:B?void 0:getSortedRowModel(),getExpandedRowModel:X?getExpandedRowModel():void 0,getPaginationRowModel:I||g?.enabled?void 0:getPaginationRowModel(),enableRowSelection:x,enableMultiRowSelection:x,enableColumnResizing:S,columnResizeMode:a,columnResizeDirection:t,getRowId:Me,getRowCanExpand:X?k=>M?.(k.original)??true:void 0,globalFilterFn:H??D,getColumnCanGlobalFilter:k=>k.columnDef.enableGlobalFilter!==false&&typeof k.accessorFn=="function",manualSorting:B,manualFiltering:$,manualPagination:I||!!g?.enabled,defaultColumn:E,autoResetPageIndex:e,state:F,onSortingChange:U,onPaginationChange:we,onRowSelectionChange:V,onColumnVisibilityChange:r,onColumnFiltersChange:c,onExpandedChange:h,onColumnOrderChange:w,onColumnPinningChange:f,onColumnSizingChange:Se});Ce.current=be;let ge=be.getVisibleLeafColumns(),Ye=y.useCallback((k,N$1)=>{if(k===N$1)return;let ne=be.getAllLeafColumns().map(P=>P.id).filter(P=>!L(P)),o=N(i.length?i:ne,k,N$1);w(o);},[i,w,be]),Y=be.getRowModel().rows,Oe=typeof Ae=="object"?Ae:void 0,je=Ae===true||Oe?.enabled===true,Ze=Math.max(1,Math.floor(Oe?.fallbackRowCount??20)),Ge=(je?Y.slice(0,Ze):Y).map((k,N)=>({row:k,rowIndex:N})),Ie=I||!!g?.enabled,ze=Ie?void 0:be.getFilteredRowModel().rows.length,ve=J??ze,_e=!Ie||Q!==void 0||J!==void 0,ea=ve,he=se?1:Q??(ve!==void 0?Math.max(1,Math.ceil(ve/u.pageSize)):Ie?u.pageIndex+(m?2:1):be.getPageCount()),He=Math.max(0,he-1),aa=y.useCallback(k=>{j===void 0&&te(N=>N.pageIndex===k?N:{...N,pageIndex:k});},[j,te]);bo({enabled:!se&&!g?.enabled&&_e,maxPageIndex:He,onPageIndexChange:A$1,pageIndex:u.pageIndex,setLocalPageIndex:aa});let We=y.useCallback(k=>{k!==u.pageIndex&&(A$1?.(k),j===void 0&&te(N=>N.pageIndex===k?N:{...N,pageIndex:k}));},[u.pageIndex,A$1,j,te]),Qe=y.useCallback(k=>{u.pageIndex!==0&&A$1?.(0),k!==u.pageSize&&C?.(k),q===void 0&&te({pageIndex:0,pageSize:k});},[u.pageIndex,u.pageSize,A$1,C,q,te]),ye=uo({enabled:!!g?.enabled,hasMore:!!g?.hasMore,isLoadingMore:g?.isLoadingMore,onLoadMore:()=>g?.onLoadMore(),onError:k=>{K?.({error:k,source:"infiniteScroll"});}});return {effectivePageCount:he,footerTotalRowCount:ea,handleFooterPageIndexChange:We,handleFooterPageSizeChange:Qe,isPageCountKnown:_e,renderedRows:Y,reorderColumn:Ye,rowsToRender:Ge,sentinelRef:ye,table:be,virtualPaddingBottom:0,virtualPaddingTop:0,visibleLeafColumns:ge}}function ke({defaultValue:e,onChange:a,value:t}){let[n,i]=y.useState(e),s=t??n,l=y.useRef(s);y.useEffect(()=>{l.current=s;},[s]);let b=y.useCallback(u=>{let D=typeof u=="function"?u(l.current):u;l.current=D,a?.(D),t===void 0&&i(D);},[a,t]);return [s,b]}var Vr="data-table-pro:column-prefs:",fo=1,go=["visibility","sizing","order","pinning","density"];function To(e){let a=Ft(e);if(!a)return {};let t=Nt(a);if(!t)return {};let n=Lt(a.key),i;try{i=t.getItem(n);}catch(u){return a.onError?.({error:u,operation:"read"}),{}}if(!i)return {};let s;try{s=(a.deserialize??JSON.parse)(i);}catch(u){return a.onError?.({error:u,operation:"deserialize"}),{}}let l=a.version??fo,b;if(Ir(s))if(s.version===l)b=s.state;else if(a.migrate)try{b=a.migrate({version:s.version,state:s.state},l);}catch(u){return a.onError?.({error:u,operation:"migrate"}),{}}else return {};else b=s;return wo(zr(b),a.slices)}function Co(e){let a=Ft(e);if(!a)return false;let t=Nt(a);if(!t)return false;try{return t.removeItem(Lt(a.key)),!0}catch(n){return a.onError?.({error:n,operation:"remove"}),false}}function Do({key:e,persistence:a,prefs:t}){let n=a??Ft(e),i=n?Nt(n):void 0,s=n?Lt(n.key):void 0,l=n?.version??fo,b=Math.max(0,n?.debounceMs??100),u=wo(t,n?.slices),D=y.useMemo(()=>{if(!n)return {value:void 0};try{let E={version:l,state:u};return {value:(n.serialize??JSON.stringify)(E)}}catch(E){return {error:E,value:void 0}}},[n,u,l]),v=y.useEffectEvent((E,R)=>{n?.onError?.({error:E,operation:R});});y.useEffect(()=>{D.error!==void 0&&v(D.error,"serialize");},[D.error]),y.useEffect(()=>{if(!i||!s||D.value===void 0)return;let E=()=>{try{if(i.getItem(s)===D.value)return;i.setItem(s,D.value);}catch(S){v(S,"write");}};if(b===0){E();return}let R=globalThis.setTimeout(E,b);return ()=>{globalThis.clearTimeout(R);}},[b,D.value,i,s]);}function Ft(e){if(e)return typeof e=="string"?{key:e}:e}function Nt(e){if(e.storage)return e.storage;if(!(typeof window>"u"))try{return window.localStorage}catch(a){e.onError?.({error:a,operation:"read"});return}}function Lt(e){return `${Vr}${e}`}function Ir(e){return La(e)&&Object.prototype.hasOwnProperty.call(e,"version")&&Object.prototype.hasOwnProperty.call(e,"state")}function wo(e,a){let t=new Set(a??go),n={};for(let i of go)t.has(i)&&e[i]!==void 0&&Object.assign(n,{[i]:e[i]});return n}function zr(e){if(!La(e))return {};let a={},t=Fr(e.visibility);t&&(a.visibility=t);let n=Nr(e.sizing);n&&(a.sizing=n);let i=zt(e.order);if(i&&(a.order=i),La(e.pinning)){let s=zt(e.pinning.left)??[],l=zt(e.pinning.right)??[];a.pinning={left:s,right:l};}return Lr(e.density)&&(a.density=e.density),a}function Fr(e){if(La(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="boolean"))}function Nr(e){if(La(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="number"&&Number.isFinite(a[1])&&a[1]>=0))}function zt(e){if(Array.isArray(e))return e.filter(a=>typeof a=="string")}function Lr(e){return e==="compact"||e==="comfortable"||e==="spacious"}function La(e){return !!e&&typeof e=="object"&&!Array.isArray(e)}var Or=Object.values(b).slice().sort((e,a)=>e-a);function ho(e){let a=y.useRef(0),[t,n]=y.useState(0);return y.useEffect(()=>{let i=e.current;if(!i)return;let s=(b=i.clientWidth)=>{let u=_r(b);u!==a.current&&(a.current=u,n(u));};if(s(),typeof ResizeObserver>"u")return;let l=new ResizeObserver(b=>{let u=b[0];s(u?Hr(u):void 0);});return l.observe(i),()=>{l.disconnect();}},[e]),t}function _r(e){if(e<=0)return 0;let a=1;for(let t of Or){if(es??(i?{key:i}:void 0),[i,s]),pe=y.useMemo(()=>To(Ae),[Ae]),[Ve,De]=y.useState({pageIndex:M?.pagination?.pageIndex??0,pageSize:M?.pagination?.pageSize??U[0]??20}),[F$1,we]=ke({value:se,onChange:A$1,defaultValue:()=>M?.sorting??[]}),[Se,be]=ke({value:V,onChange:B,defaultValue:()=>M?.rowSelection??{}}),[ge,Ye]=ke({value:l,onChange:h,defaultValue:()=>M?.columnVisibility??pe.visibility??{}}),[Y,Oe]=ke({value:e,onChange:c,defaultValue:()=>M?.columnFilters??[]}),[je,Ze]=ke({value:R,onChange:$,defaultValue:()=>M?.expanded??{}}),[Ke,Ge]=ke({value:a,onChange:w$1,defaultValue:()=>M?.columnOrder??pe.order??[]}),[Ie,ze]=ke({value:t,onChange:f,defaultValue:()=>M?.columnPinning??pe.pinning??F(b)}),[ve,_e]=ke({value:n,onChange:r,defaultValue:()=>M?.columnSizing??pe.sizing??{}}),[ea,he]=ke({value:Ce,onChange:Q,defaultValue:()=>M?.viewMode??"table"}),[He,aa]=ke({value:te,onChange:K,defaultValue:()=>M?.showHiddenRows??false}),[We,Qe]=ke({value:D,onChange:g,defaultValue:()=>M?.density??pe.density??"comfortable"}),ye=Me??M?.globalFilter??"",k=Le??X.searchPlaceholder,N=me??250,[ne,o]=y.useState(ye),P=ho(J),W=!!C,Pa=y.useRef(ye),ut=y.useEffectEvent(z=>{Pa.current=z,C?.(z);});y.useEffect(()=>{Pa.current=ye,o(ye);},[ye]),y.useEffect(()=>{if(!W||ne===ye||ne===Pa.current)return;let z=window.setTimeout(()=>{ut(ne);},N);return ()=>{window.clearTimeout(z);}},[W,ne,N,ye]);let pa=y.useMemo(()=>({pageIndex:j$1??Ve.pageIndex,pageSize:q??Ve.pageSize}),[Ve.pageIndex,Ve.pageSize,j$1,q]),sa=Math.max(1,T??Math.min(5,pa.pageSize)),oe=E?ne:"",ee=y.useCallback(z=>{he(z);},[he]),le=y.useCallback(z=>{aa(z);},[aa]),re=y.useCallback(z=>{Qe(z);},[Qe]),_a=y.useCallback(()=>{I?.(0),j$1===void 0&&De(z=>z.pageIndex===0?z:{...z,pageIndex:0});},[I,j$1]),xa=y.useRef({columnFilters:Y,globalFilterValue:oe});y.useEffect(()=>{let z=xa.current,Fe=z.columnFilters!==Y,ga=z.globalFilterValue!==oe;xa.current={columnFilters:Y,globalFilterValue:oe},!m&&(!Fe&&!ga||_a());},[Y,oe,m,_a]),Do({persistence:Ae,prefs:{visibility:l?void 0:ge,sizing:n===void 0?ve:void 0,order:a?void 0:Ke,pinning:t?void 0:Ie,density:D?void 0:We}});let Ha=y.useMemo(()=>A(b).reduce((z,{column:Fe,index:ga})=>{let ja=G(Fe,ga);return j(Fe.meta?.hideOn,P)&&(z[ja]=false),z},{}),[b,P]),ka=y.useMemo(()=>({...ge,...Ha}),[ge,Ha]),ta=y.useMemo(()=>u.filter(z=>c$1(z,x$1,He)),[He,u,x$1]),Ba=H&&ta.length===0,pt=y.useMemo(()=>v(sa),[sa]),$a=Ba?pt:ta,bt=y.useCallback((z,Fe)=>w(z)?x(Fe):S(z,Fe),[S]),ba=v$1||(Z?.length??0)>0||Object.values(Se).some(Boolean),ma=y.useMemo(()=>ba?new Map(ta.map((z,Fe)=>[S(z,Fe),z])):new Map,[S,ba,ta]),Ua=y.useMemo(()=>ba?Object.entries(Se).filter(([,z])=>z).map(([z])=>ma.get(z)).filter(z=>!!z):[],[Se,ma,ba]);return {containerWidth:P,currentColumnFilters:Y,currentColumnOrder:Ke,currentColumnPinning:Ie,currentColumnSizing:ve,currentColumnVisibility:ge,currentDensity:We,currentExpanded:je,currentPagination:pa,currentRowSelection:Se,currentShowHiddenRows:He,currentSorting:F$1,currentViewMode:ea,effectiveColumnVisibility:ka,globalFilterValue:oe,handleDensityChange:re,handleShowHiddenRowsChange:le,handleViewModeChange:ee,localSearchValue:ne,resolvedLoadingRowCount:sa,resolvedToolbarQueryPlaceholder:k,selectedRows:Ua,setCurrentColumnFilters:Oe,setCurrentColumnOrder:Ge,setCurrentColumnPinning:ze,setCurrentColumnVisibility:Ye,setCurrentExpanded:Ze,setCurrentRowSelection:be,setCurrentSorting:we,setLocalColumnSizing:_e,setLocalPagination:De,setLocalSearchValue:o,shouldRenderInitialLoading:Ba,tableData:$a,tableGetRowId:bt,toolbarFilteredData:ta,visibleData:ta}}var $r={cellStyle:void 0,colStyle:void 0,fixedSide:void 0,headerStyle:void 0,isActionsColumn:false,isExpansionColumn:false,isSelectionColumn:false,isSpacerColumn:false,isUtilityColumn:false,pinnedClassName:void 0,utilityClassName:void 0};function So({columns:e,columnSizing:a,editableRows:t,enableRowSelection:n,hasRowActions:i,hasRowExpansion:s,layoutMode:l,uiClassNames:b,visibleLeafColumns:u$1}){let D=y.useMemo(()=>{let T=new Set;for(let{column:m,index:c}of A(e))Object.prototype.hasOwnProperty.call(m,"size")&&T.add(G(m,c));return n&&T.add("__select__"),s&&T.add("__expand__"),(i||t)&&T.add("__actions__"),T},[e,t,n,i,s]),v=y.useMemo(()=>{let T=new Map;for(let{column:m,index:c}of A(e)){let w=y$1(m);w!==void 0&&T.set(G(m,c),w);}return T},[e]),E=y.useMemo(()=>{let T=new Map,m=new Map,c=0;for(let f of u$1)J(f)==="left"&&(T.set(f.id,c),c+=Ro(f));let w=0;for(let f of [...u$1].reverse())J(f)==="right"&&(m.set(f.id,w),w+=Ro(f));return {left:T,right:m}},[u$1]),R=y.useMemo(()=>{if(l!=="fill")return;let T=u$1.filter(c=>!L(c.id));return T.length&&T.every(c=>D.has(c.id)||Object.prototype.hasOwnProperty.call(a,c.id))?T[T.length-1]?.id:void 0},[a,D,l,u$1]),S=y.useMemo(()=>{let T=new Set([...D,...Object.keys(a)]);return R&&T.delete(R),T},[a,D,R]),x=y.useMemo(()=>{let T=new Map;for(let m of u$1){let c=m.id==="__select__",w=m.id==="__expand__",f=m.id==="__actions__",r=c||w||f,h=m.id==="__spacer__",g=v.get(m.id),$=m.id===R,I=g??($?m.getSize():void 0),B=!h&&(l==="fit"||r||S.has(m.id)),K$1=B||I!==void 0?{width:B?r?u:m.getSize():void 0,minWidth:r?u:B?m.getSize():I,maxWidth:B?r?u:m.getSize():void 0}:void 0,A=J(m),C=A?{left:A==="left"?E.left.get(m.id):void 0,right:A==="right"?E.right.get(m.id):void 0}:void 0,Q=K$1||C?{...K$1,...C}:void 0;T.set(m.id,{cellStyle:Q,colStyle:K$1,fixedSide:A,headerStyle:Q,isActionsColumn:f,isExpansionColumn:w,isSelectionColumn:c,isSpacerColumn:h,isUtilityColumn:r,pinnedClassName:A?K(A,b,{isUtilityColumn:r}):void 0,utilityClassName:r?"w-[50px] max-w-[50px] min-w-[50px] px-0":void 0});}return T},[R,S,l,v,E,b,u$1]),M=y.useMemo(()=>u$1.reduce((T,m)=>{let c=x.get(m.id),w=v.get(m.id),f=m.id===R;return c?.isUtilityColumn?T+u:S.has(m.id)?T+m.getSize():T+(w??(f?m.getSize():0))},0),[x,R,S,v,u$1]),H=y.useCallback(T=>x.get(T)??$r,[x]);return {columnLayouts:x,explicitlySizedColumnIds:D,fillMinWidth:M,getColumnLayout:H}}function Ro(e){return L(e.id)?u:e.getSize()}function Po(e,a$1){let t=e.classNames??{},{Card:n,CardContent:i,CardHeader:s,Checkbox:l,Skeleton:b}=e;return function({rows:D,cardRenderer:v,cardSizing:E="fixed",cardGridClassName:R,cardClassName:S,rowActions:x,editableRows:M$1,renderExpandedRow:H,hasCardTitle:T,rowSelection:m,onRowSelectionChange:c,enableRowSelection:w,editingRowId:f,onEditingRowIdChange:r,getRowClassName:h,onRowClick:g,getRowDraggable:$,onRowDragStart:I,onRowDragEnd:B,isLoading:K=false,loadingRowCount:A=5,labels:C}){let Q=E??"fixed",j=R?a("grid",R):Ur(Q),q=a("min-h-0 w-full gap-4 p-1",t.cardGrid,j),X=V=>a("relative min-w-0 max-w-full gap-0 overflow-hidden bg-transparent p-0",jr(Q),t.cardItem,S,V);return K?jsx("div",{role:"list","data-dtp-slot":"data-table-card-grid",className:q,children:Array.from({length:Math.max(1,A)},(V,U)=>jsxs(n,{role:"listitem","aria-hidden":"true","data-dtp-slot":"data-table-card-item",className:X("min-h-52"),children:[T?jsxs(s,{className:"px-4 pt-4 pb-3",children:[jsx(b,{className:"h-5 w-40 max-w-[70%]"}),jsx(b,{className:"h-4 w-24 max-w-[40%]"})]}):null,jsxs(i,{className:a("space-y-3 pb-4",T?"":"pt-4"),children:[jsx(b,{className:"h-4 w-full"}),jsx(b,{className:"h-4 w-[82%]"}),jsx(b,{className:"h-4 w-[68%]"}),jsx(b,{className:"h-24 w-full rounded-xl"})]})]},`loading-card-${U}`))}):jsx("div",{role:"list","data-dtp-slot":"data-table-card-grid",className:q,children:D.map(V=>{let U=V.id,Z=V.original,te=!!m[U],se=f===U,me=x.length>0||!!M$1,Le=w||me||T,Me=w||me,Ce=()=>{g&&g({row:Z,rowId:U});};return jsxs(n,{role:"listitem","data-row-id":U,draggable:$?.(Z)??false,"data-dtp-slot":"data-table-card-item","data-state":te?"selected":void 0,className:X(a([h?.(Z,{row:Z,rowId:U,rowIndex:V.index,isEditing:se,isExpanded:V.getIsExpanded(),isLoading:false,isSelected:te})].filter(Boolean).join(" "),"transition transition-colors hover:scale-101 data-[state=selected]:scale-101",t.card,te?t.cardSelected:t.cardUnselected)),onDragStart:J=>{I?.({row:Z,rowId:U,event:J});},onDragEnd:J=>{B?.({row:Z,rowId:U,event:J});},children:[Le?jsx("div",{"aria-hidden":"true",className:a("pointer-events-none absolute inset-x-0 top-0 z-10 h-24 bg-linear-to-b opacity-0 transition-opacity group-hover/card:opacity-100",t.cardOverlay??"from-transparent via-transparent to-transparent")}):null,jsxs("div",{"data-dtp-slot":"data-table-card-renderer",role:g?"button":void 0,tabIndex:g?0:void 0,className:a("flex min-h-0 max-w-full min-w-0 overflow-hidden rounded-[inherit] [&>*]:min-w-0",Kr(Q),g&&"cursor-pointer focus-visible:outline-none"),onClick:J=>{M(J.target,J.currentTarget)||Ce();},onKeyDown:J=>{M(J.target,J.currentTarget)||(J.key==="Enter"||J.key===" ")&&(J.preventDefault(),Ce());},children:[v({row:Z,rowId:U,isSelected:te,onSelectedChange:J=>{c(vo(m,U,J));},actions:x,isEditing:se,startEditing:()=>{r(U);},cancelEditing:()=>{r(null);}}),se||!H||!V.getIsExpanded()?null:H({row:Z,rowId:U,tableRow:V})]}),Me?jsxs(s,{className:"absolute inset-x-0 top-0 z-20 flex flex-row items-center gap-3 space-y-0 px-4 pt-4 pb-8",children:[w?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(l,{checked:te,"aria-label":(C.selectCardRow??ce.selectCardRow)(U),onCheckedChange:J=>{c(vo(m,U,J===true));}})}):null,jsx("div",{className:"pointer-events-none min-w-0 flex-1"}),me?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(a$1,{row:Z,rowActions:x,editableRows:M$1,isEditing:se,onStartEditing:()=>{r(U);},onCancelEditing:()=>{r(null);},labels:C})}):null]}):null]},U)})})}}function Ur(e){switch(e){case "content":return "flex flex-wrap items-start justify-start";case "fluid":return "grid grid-cols-[repeat(auto-fit,minmax(min(18rem,100%),1fr))]";default:return "grid grid-cols-[repeat(auto-fill,minmax(min(18rem,100%),18rem))] justify-start"}}function jr(e){switch(e){case "content":return "w-fit";case "fluid":return "w-full";default:return}}function Kr(e){switch(e){case "content":return "w-fit";case "fluid":return "w-full flex-1 [&>*]:w-full";default:return "flex-1"}}function vo(e,a,t){if(t)return {...e,[a]:true};if(!e[a])return e;let n={...e};return delete n[a],n}function ko(e){let a=e.classNames??{},{Empty:t,EmptyContent:n,EmptyDescription:i,EmptyHeader:s,EmptyMedia:l,EmptyTitle:b}=e;return function({title:D="No rows found",description:v="Adjust your filters or create a new record to populate this table."}){return jsxs(t,{className:`min-h-60 rounded-2xl ${a.emptyState??"border bg-transparent"}`,children:[jsxs(s,{children:[jsx(l,{variant:"icon",children:jsx(o,{})}),jsx(b,{children:D}),jsx(i,{children:v})]}),jsx(n,{})]})}}function Eo(e){let a=e.classNames??{},{Pagination:t,PaginationContent:n,PaginationEllipsis:i$1,PaginationFirst:s,PaginationItem:l,PaginationLast:b,PaginationLink:u,PaginationNext:D,PaginationPrevious:v,Select:E,SelectContent:R,SelectGroup:S,SelectItem:x,SelectTrigger:M,SelectValue:H,Tooltip:T,TooltipContent:m,TooltipTrigger:c}=e;function w({pageIndex:r,pageCount:h,pageCountKnown:g,pageSize:$,totalRowCount:I,rowsPerPageOptions:B,onPageIndexChange:K,onPageSizeChange:A,labels:C}){let Q=g?Gr(r,Math.max(1,h)):[],j=r>0,q=r+1{A(Number(V));},children:[jsx(M,{"aria-label":C.recordsPerPage,className:`w-22 ${a.paginationSelectTrigger??""}`,children:jsx(H,{})}),jsx(R,{children:jsx(S,{children:B.map(V=>jsx(x,{value:String(V),children:V},V))})})]})]}),I!==void 0?jsx("div",{className:"flex shrink-0 items-center justify-center",children:jsxs("div",{className:`inline-flex items-center gap-2 px-2.5 py-1.5 text-sm ${a.paginationTotal??""}`,"aria-label":C.totalRecords(I),children:[jsx(i,{className:"size-4"}),jsx("span",{className:"@min-[768px]/data-table:hidden",children:I}),jsx("span",{className:"hidden @min-[768px]/data-table:inline",children:C.totalRecords(I)})]})}):null,jsxs("div",{className:"flex flex-1 items-center justify-end gap-4",children:[jsx("div",{className:`hidden text-sm @min-[768px]/data-table:inline ${a.mutedText??"opacity-70"}`,children:g?C.pageStatus(r,Math.max(1,h)):(C.pageStatusUnknown??ce.pageStatusUnknown)(r)}),jsx(t,{"aria-label":C.pagination??ce.pagination,className:"mx-0 w-auto justify-end",children:jsxs(n,{children:[jsx(l,{className:"@min-[768px]/data-table:hidden",children:jsxs(T,{children:[jsx(c,{asChild:true,children:jsx(s,{"aria-label":C.firstPage,href:"#",size:"icon-sm",showText:false,disabled:!j,onClick:V=>{V.preventDefault(),j&&K(0);},text:C.firstPage})}),jsx(m,{children:C.firstPage})]})}),jsx(l,{children:jsxs(T,{children:[jsx(c,{asChild:true,children:jsx(v,{"aria-label":C.previousPage,href:"#",size:"icon-sm",showText:false,disabled:!j,onClick:V=>{V.preventDefault(),j&&K(r-1);},text:C.previousPage})}),jsx(m,{children:C.previousPage})]})}),Q.map((V,U)=>jsx(l,{className:"hidden @min-[768px]/data-table:block",children:V==="ellipsis"?jsx(i$1,{text:C.morePages??ce.morePages}):jsx(u,{href:"#",isActive:V===r+1,size:"icon-sm",onClick:Z=>{Z.preventDefault(),K(V-1);},children:V})},`${V}-${U}`)),jsx(l,{children:jsxs(T,{children:[jsx(c,{asChild:true,children:jsx(D,{"aria-label":C.nextPage,href:"#",size:"icon-sm",showText:false,disabled:!q,onClick:V=>{V.preventDefault(),q&&K(r+1);},text:C.nextPage})}),jsx(m,{children:C.nextPage})]})}),g?jsx(l,{className:"@min-[768px]/data-table:hidden",children:jsxs(T,{children:[jsx(c,{asChild:true,children:jsx(b,{"aria-label":C.lastPage,href:"#",size:"icon-sm",showText:false,text:C.lastPage,disabled:!q,onClick:V=>{V.preventDefault(),q&&K(X);}})}),jsx(m,{children:C.lastPage})]})}):null]})})]})]})}function f(r){return jsx("div",{className:`rounded-md border px-2 py-1 ${a.footer??""}`,children:jsx(w,{...r})})}return {DataTableFooter:f,DataTablePagination:w}}function Gr(e,a){let t=e+1,n=new Set([1,a]);for(let l=Math.max(1,t-2);l<=Math.min(a,t+2);l+=1)n.add(l);let i=Array.from(n).sort((l,b)=>l-b),s=[];for(let l=0;l1&&s.push("ellipsis"),s.push(b);}return s}function Ao(e$1){let{Button:a,DropdownMenu:t$1,DropdownMenuContent:n,DropdownMenuGroup:i,DropdownMenuItem:s,DropdownMenuSeparator:l$1,DropdownMenuTrigger:b,Tooltip:u,TooltipContent:D,TooltipTrigger:v}=e$1;return function({row:R,rowActions:S,editableRows:x,isEditing:M,onStartEditing:H,onCancelEditing:T,labels:m}){let c=S.filter(r=>e(r,R)),w=y.useCallback(r=>{r.stopPropagation();},[]);if(M)return jsxs(u,{children:[jsx(v,{asChild:true,children:jsxs(a,{type:"button",variant:"ghost",size:"icon-sm",onPointerDown:w,onClick:T,children:[jsx(t,{}),jsx("span",{className:"sr-only",children:m.cancelEdit})]})}),jsx(D,{children:m.cancelEdit})]});let f$1=f(x,R);return !c.length&&!f$1?null:jsxs(t$1,{children:[jsxs(u,{children:[jsx(v,{asChild:true,children:jsx(b,{asChild:true,children:jsxs(a,{type:"button",variant:"ghost",size:"icon-sm",onPointerDown:w,onClick:w,children:[jsx(j$1,{}),jsx("span",{className:"sr-only",children:m.rowActions})]})})}),jsx(D,{children:m.rowActions})]}),jsxs(n,{align:"end",className:"w-52",children:[f$1?jsx(i,{children:jsxs(s,{onClick:r=>{r.stopPropagation(),H();},children:[jsx(l,{"data-icon":"inline-start"}),m.editRow]})}):null,f$1&&c.length?jsx(l$1,{}):null,c.length?jsx(i,{children:c.map(r=>{let h=r.icon;return jsxs(s,{disabled:r.disabled?.(R),variant:r.variant==="destructive"?"destructive":void 0,onClick:g=>{g.stopPropagation(),r.onClick(R);},children:[h?jsx(h,{"data-icon":"inline-start"}):null,d(r.label,R)]},r.key)})}):null]})]})}}function Vo(e){let a=e.classNames??{},{Button:t$1,ButtonGroup:n,DropdownMenu:i,DropdownMenuCheckboxItem:s,DropdownMenuContent:l,DropdownMenuGroup:b,DropdownMenuItem:u,DropdownMenuLabel:D,DropdownMenuSeparator:v,DropdownMenuTrigger:E,InputGroup:R,InputGroupAddon:S,InputGroupInput:x,Tooltip:M,TooltipContent:H,TooltipTrigger:T}=e;return function({title:w,titleId:f,description:r$1,descriptionId:h,toolbarQueryValue:g,toolbarQueryPlaceholder:$,onToolbarQueryValueChange:I,customToolbar:B,compactToolbar:K,viewMode:A,onViewModeChange:C,enableViewToggle:Q,toolbarActions:j,selectionActions:q$1,selectedRows:X,showHiddenRows:V,hiddenRowsLabel:U,onShowHiddenRowsChange:Z,allRows:te,columnVisibilityOptions:se,onColumnVisibilityChange:me,enableColumnPinning:Le,onColumnPinningChange:Me,columnFilters:Ce,onColumnFilterChange:J,onClearColumnFilters:Ae,density:pe,onDensityChange:Ve,enableDensityToggle:De,labels:F,toolbarVisibility:we,openFileDialog:Se}){let be=y.useRef(null),[ge,Ye]=y.useState(false),Y=a.toolbarCompactIconButton??"",Oe=j.filter(o=>(o.placement??"primary")==="primary"),je=j.filter(o=>o.placement==="trailing"),Ze=we?.title??true,Ke=we?.search??true,Ge=we?.actions??true,Ie=we?.trailingActions??true,ze=we?.options??true,ve=we?.viewToggle??true,_e=we?.customToolbar??true,ea=Ze&&!!(w||r$1),he=Ke,He=Ge&&Oe.length>0,aa=X.length>0&&q$1.length>0,We=ze&&(se.some(o=>o.canHide)||!!(Z&&U)||Le||De),Qe=ve&&Q&&!!C,ye=Ie&&je.length>0,k=_e&&!!B,N=_e&&!!(K??B),ne=F.selectedRows(X.length);return y.useEffect(()=>{ge&&be.current?.focus();},[ge]),!ea&&!he&&!He&&!aa&&!We&&!Qe&&!ye&&!k&&!N?null:jsxs("div",{className:"flex flex-col gap-4 pb-0",children:[Ze&&(w||r$1)?jsxs("div",{className:"flex flex-col gap-1",children:[w?jsx("h2",{id:f,className:"text-lg font-semibold tracking-tight",children:w}):null,r$1?jsx("p",{id:h,className:`max-w-3xl text-sm ${a.mutedText??"opacity-70"}`,children:r$1}):null]}):null,jsxs("div",{className:"flex flex-col gap-3",children:[jsxs("div",{"data-dtp-slot":"data-table-toolbar-controls",className:"flex items-center gap-2 overflow-x-auto px-1 @min-[768px]/data-table:gap-3 @min-[768px]/data-table:overflow-visible",children:[Ke?jsxs(Fragment,{children:[jsx("div",{className:"hidden min-w-0 grow max-w-md @min-[768px]/data-table:block",children:jsxs(R,{className:"min-w-0",children:[jsx(x,{value:g,onChange:o=>{I(o.target.value);},placeholder:$}),jsx(S,{align:"inline-start","aria-hidden":"true",children:jsx(r,{})}),g?jsx(S,{align:"inline-end",children:jsx("button",{type:"button",className:`inline-flex size-5 items-center justify-center rounded-md transition-colors focus-visible:outline-none ${a.toolbarIconButton??"opacity-70 hover:opacity-100"}`,onClick:()=>{I("");},"aria-label":F.clearSearch,title:F.clearSearch,children:jsx(t,{})})}):null]})}),jsxs(M,{children:[jsx(T,{asChild:true,children:jsxs(t$1,{type:"button",variant:ge||g?"secondary":"outline",size:"icon-sm","aria-label":F.searchTable,"aria-pressed":ge,className:`shrink-0 @min-[768px]/data-table:hidden ${Y} ${a.toolbarInputButton??""}`,onClick:()=>{Ye(o=>!o);},children:[jsx(r,{}),jsx("span",{className:"sr-only",children:F.searchTable})]})}),jsx(H,{children:F.searchTable})]})]}):null,Ge?jsx("div",{className:"flex shrink-0 items-center gap-2",children:Oe.map(o=>{let P=!o.iconOnly&&!!o.icon,W=jsxs(t$1,{type:"button",className:P?`size-7 shrink-0 px-0 @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit @min-[768px]/data-table:px-2.5 ${Y}`:o.iconOnly?`size-7 shrink-0 @min-[768px]/data-table:size-8 ${Y}`:"size-7 shrink-0 @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit",variant:o.variant??"outline",size:o.iconOnly?"icon":"default",onClick:()=>{o.onClick({rows:te,openFileDialog:Se});},disabled:o.disabled,"aria-label":o.label,title:o.iconOnly?void 0:o.label,children:[o.icon?jsx(o.icon,{}):null,o.iconOnly?jsx("span",{className:"sr-only",children:o.label}):P?jsx("span",{className:"hidden @min-[768px]/data-table:inline",children:o.label}):jsx("span",{children:o.label})]},o.key);return o.iconOnly?jsxs(M,{children:[jsx(T,{asChild:true,children:W}),jsx(H,{children:o.label})]},o.key):W})}):null,N?jsx("div",{"data-dtp-slot":"data-table-toolbar-compact-custom",className:"flex shrink-0 items-center gap-2 @min-[1024px]/data-table:hidden",children:K??B}):null,jsx("div",{className:"grow","aria-hidden":"true"}),jsxs("div",{"data-dtp-slot":"data-table-toolbar-end-controls",className:"flex shrink-0 items-center gap-2",children:[X.length?jsx("div",{className:`hidden text-sm @min-[768px]/data-table:block ${a.mutedText??"opacity-70"}`,children:ne}):null,X.length?q$1.map(o=>{let P=o.icon,W=typeof o.disabled=="function"?o.disabled(X):o.disabled;return jsxs(M,{children:[jsx(T,{asChild:true,children:jsxs(t$1,{type:"button",variant:o.variant??"secondary",size:"icon-sm",className:Y,disabled:W,onClick:()=>{o.onClick({rows:X});},"aria-label":o.label,children:[P?jsx(P,{}):null,jsx("span",{className:"sr-only",children:o.label})]})}),jsx(H,{children:o.label})]},o.key)}):null,We?jsxs(i,{children:[jsx(E,{asChild:true,children:jsxs(t$1,{type:"button",variant:"outline",size:"icon-sm","aria-label":F.tableOptions,className:`${Y} ${a.toolbarInputButton??""}`,title:F.tableOptions,children:[jsx(a$2,{}),jsx("span",{className:"sr-only",children:F.tableOptions})]})}),jsxs(l,{align:"end",className:"w-56",children:[jsx(D,{children:F.tableOptions}),jsx(b,{children:Z&&U?jsx(s,{checked:V,onCheckedChange:o=>{Z(o===true);},children:F.showHiddenRows(U)}):null}),De?jsxs(Fragment,{children:[jsx(v,{}),jsx(D,{children:F.density}),jsx(b,{children:[["compact",F.compactDensity],["comfortable",F.comfortableDensity],["spacious",F.spaciousDensity]].map(([o,P])=>jsx(s,{checked:pe===o,onCheckedChange:()=>{Ve(o);},children:P},o))})]}):null,se.some(o=>o.canHide)?jsxs(Fragment,{children:[jsx(v,{}),jsx(D,{children:F.columns}),jsx(b,{children:se.filter(o=>o.canHide).map(o=>jsx(s,{checked:o.visible,onCheckedChange:P=>{me?.(o.id,P===true);},children:o.label},o.id))})]}):null,Le?jsxs(Fragment,{children:[jsx(v,{}),jsxs(D,{children:[F.pinLeft," / ",F.pinRight]}),jsx(b,{children:se.map(o=>jsxs(u,{onSelect:P=>{P.preventDefault();},children:[jsx("span",{className:"min-w-0 flex-1 truncate",children:o.label}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${F.pinLeft}: ${o.label}`,onClick:P=>{P.stopPropagation(),Me(o.id,"left");},children:"L"}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${F.pinRight}: ${o.label}`,onClick:P=>{P.stopPropagation(),Me(o.id,"right");},children:"R"}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${F.unpin}: ${o.label}`,onClick:P=>{P.stopPropagation(),Me(o.id,false);},children:"-"})]},`pin-${o.id}`))})]}):null]})]}):null,ve&&Q&&C?jsxs(n,{children:[jsxs(M,{children:[jsx(T,{asChild:true,children:jsxs(t$1,{type:"button",variant:A==="table"?"default":"outline","aria-pressed":A==="table",className:A==="table"?Y:`${Y} ${a.toolbarInputButton??""}`,size:"icon-sm",onClick:()=>{C("table");},children:[jsx(q,{}),jsx("span",{className:"sr-only",children:F.switchToTableView??ce.switchToTableView})]})}),jsx(H,{children:F.tableView??ce.tableView})]}),jsxs(M,{children:[jsx(T,{asChild:true,children:jsxs(t$1,{type:"button",variant:A==="card"?"default":"outline","aria-pressed":A==="card",className:A==="table"?`${Y} ${a.toolbarInputButton??""}`:Y,size:"icon-sm",onClick:()=>{C("card");},children:[jsx(p,{}),jsx("span",{className:"sr-only",children:F.switchToCardView??ce.switchToCardView})]})}),jsx(H,{children:F.cardView??ce.cardView})]})]}):null,Ie?je.map(o=>{let P=!o.iconOnly&&!!o.icon,W=jsxs(t$1,{type:"button",variant:o.variant??"outline",size:o.iconOnly?"icon-sm":"default",onClick:()=>{o.onClick({rows:te,openFileDialog:Se});},disabled:o.disabled,"aria-label":o.label,title:o.iconOnly?void 0:o.label,className:`size-7 shrink-0 ${o.iconOnly?"":`${P?"px-0 @min-[768px]/data-table:px-2.5":""} @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit`} ${o.iconOnly||P?Y:""} ${a.toolbarInputButton??""}`,children:[o.icon?jsx(o.icon,{"data-icon":o.iconOnly?void 0:"inline-start"}):null,o.iconOnly?jsx("span",{className:"sr-only",children:o.label}):P?jsx("span",{className:"hidden @min-[768px]/data-table:inline",children:o.label}):jsx("span",{children:o.label})]},o.key);return o.iconOnly?jsxs(M,{children:[jsx(T,{asChild:true,children:W}),jsx(H,{children:o.label})]},o.key):W}):null]})]}),Ke&&ge?jsx("div",{"data-dtp-slot":"data-table-toolbar-compact-search",className:"min-w-0 @min-[768px]/data-table:hidden",children:jsxs(R,{children:[jsx(x,{ref:be,value:g,onChange:o=>{I(o.target.value);},placeholder:$}),jsx(S,{align:"inline-start","aria-hidden":"true",children:jsx(r,{})}),g?jsx(S,{align:"inline-end",children:jsx("button",{type:"button",className:`inline-flex size-5 items-center justify-center rounded-md transition-colors focus-visible:outline-none ${a.toolbarIconButton??"opacity-70 hover:opacity-100"}`,onClick:()=>{I("");},"aria-label":F.clearSearch,title:F.clearSearch,children:jsx(t,{})})}):null]})}):null,Ce.length?jsxs("div",{"data-dtp-slot":"data-table-toolbar-filters",className:"flex min-w-0 flex-wrap items-center gap-2",children:[Ce.map(o=>jsx(m,{filter:o,labels:F,onColumnFilterChange:J},o.id)),Ce.some(o=>Wr(o.value))?jsx(t$1,{type:"button",variant:"ghost",size:"sm",onClick:Ae,children:F.clearFilters}):null]}):null]}),_e&&B?jsx("div",{"data-dtp-slot":"data-table-toolbar-desktop-custom",className:"hidden flex-row items-center gap-3 @min-[1024px]/data-table:flex",children:B}):null]})};function m({filter:c,labels:w,onColumnFilterChange:f}){if(c.type==="text")return jsxs(R,{className:"min-w-48 max-w-64",children:[jsx(x,{value:typeof c.value=="string"?c.value:"",onChange:g=>{f(c.id,g.target.value);},placeholder:c.placeholder??c.label,"aria-label":`${w.filters}: ${c.label}`}),jsx(S,{align:"inline-start","aria-hidden":"true",children:jsx(r,{})})]});let r$1=Array.isArray(c.value)?c.value.map(String):typeof c.value=="string"&&c.value?[c.value]:[],h=r$1.length===0?c.label:`${c.label}: ${r$1.length===1?c.options.find(g=>g.value===r$1[0])?.label??r$1[0]:r$1.length}`;return jsxs(i,{children:[jsx(E,{asChild:true,children:jsx(t$1,{type:"button",variant:"outline",size:"sm",children:h})}),jsxs(l,{align:"start",className:"w-56",children:[jsx(D,{children:c.label}),jsxs(b,{children:[c.type==="select"?jsx(u,{onClick:()=>{f(c.id,"");},children:w.allFilterOptions??ce.allFilterOptions}):null,c.options.map(g=>jsx(s,{checked:r$1.includes(g.value),onCheckedChange:$=>{if(c.type==="select"){f(c.id,$===true?g.value:"");return}let I=new Set(r$1);$===true?I.add(g.value):I.delete(g.value),f(c.id,Array.from(I));},children:g.label},g.value))]})]})]})}}function Wr(e){return Array.isArray(e)?e.length>0:e!=null&&e!==""}var Qr=y.lazy(async()=>({default:(await import('./data-table-virtual-table-panel-H3MFN25G.js')).DataTableVirtualTablePanel}));function Io(e){let a=typeof e.virtualization=="object"?e.virtualization:void 0;return e.virtualization===true||a?.enabled===true?jsx(y.Suspense,{fallback:jsx(S,{...e,rowsToRender:e.rowsToRender.slice(0,Math.max(1,Math.floor(a?.fallbackRowCount??20)))}),children:jsx(Qr,{...e})}):jsx(S,{...e})}var qr="data-table-pro:saved-views:";var Fo=["sorting","columnVisibility","columnFilters","columnOrder","columnPinning","columnSizing","density","viewMode","showHiddenRows","globalFilter"],zo=0;function va(e){let a=$t(e);if(!e||!a)return [];let t;try{t=a.getItem(Ut(e.key));}catch(l){return e.onError?.({error:l,operation:"read"}),[]}if(!t)return [];let n;try{n=(e.deserialize??JSON.parse)(t);}catch(l){return e.onError?.({error:l,operation:"deserialize"}),[]}if(!Ne(n)||!("version"in n)||!("views"in n))return [];let i=e.version??1,s=n.views;if(n.version!==i){if(!e.migrate)return [];try{s=e.migrate({version:n.version,views:n.views},i);}catch(l){return e.onError?.({error:l,operation:"migrate"}),[]}}return Array.isArray(s)?s.map(l=>Xr(l,e.slices)).filter(l=>!!l):[]}function No(e,a,t){let n=a.trim();if(!e||!n)return;let i=new Date().toISOString(),s={id:ol(),name:n,createdAt:i,updatedAt:i,state:Jr(t,e.slices)},l=[...va(e),s];return Ht(e,l,"create")?Bt(s):void 0}function Lo(e,a,t){let n=t.trim();if(!e||!n)return;let i,s=va(e).map(l=>l.id!==a?l:(i={...l,name:n,updatedAt:new Date().toISOString()},i));if(i)return Ht(e,s,"rename")?Bt(i):void 0}function Oo(e,a){if(!e)return false;let t=va(e),n=t.filter(i=>i.id!==a);return n.length!==t.length&&Ht(e,n,"delete")}function _o(e){let a=$t(e);if(!e||!a)return false;try{a.removeItem(Ut(e.key));}catch(t){return e.onError?.({error:t,operation:"remove"}),false}return e.onChange?.([],"clear"),true}function Ht(e,a,t){let n=$t(e);if(!n)return false;let i;try{let l={version:e.version??1,views:a};i=(e.serialize??JSON.stringify)(l);}catch(l){return e.onError?.({error:l,operation:"serialize"}),false}try{n.setItem(Ut(e.key),i);}catch(l){return e.onError?.({error:l,operation:"write"}),false}let s=a.map(Bt);return e.onChange?.(s,t),true}function Jr(e,a){let t=new Set(a??Fo),n={};for(let i of Object.keys(e))t.has(i)&&Object.assign(n,{[i]:Yr(i,e[i])});return n}function Xr(e,a){if(!(!Ne(e)||typeof e.id!="string"||!e.id||typeof e.name!="string"||!e.name.trim()||typeof e.createdAt!="string"||typeof e.updatedAt!="string"))return {id:e.id,name:e.name.trim(),createdAt:e.createdAt,updatedAt:e.updatedAt,state:Ho(e.state,a)}}function Ho(e,a){if(!Ne(e))return {};let t=new Set(a??Fo),n={},i=Zr(e.sorting);t.has("sorting")&&i&&(n.sorting=i);let s=el(e.pagination);t.has("pagination")&&s&&(n.pagination=s);let l=Ot(e.rowSelection);t.has("rowSelection")&&l&&(n.rowSelection=l);let b=Ot(e.columnVisibility);t.has("columnVisibility")&&b&&(n.columnVisibility=b);let u=al(e.columnFilters);t.has("columnFilters")&&u&&(n.columnFilters=u);let D=e.expanded===true?true:Ot(e.expanded);t.has("expanded")&&D!==void 0&&(n.expanded=D);let v=_t(e.columnOrder);t.has("columnOrder")&&v&&(n.columnOrder=v);let E=tl(e.columnPinning);t.has("columnPinning")&&E&&(n.columnPinning=E);let R=nl(e.columnSizing);return t.has("columnSizing")&&R&&(n.columnSizing=R),t.has("density")&&(e.density==="compact"||e.density==="comfortable"||e.density==="spacious")&&(n.density=e.density),t.has("viewMode")&&(e.viewMode==="table"||e.viewMode==="card")&&(n.viewMode=e.viewMode),t.has("showHiddenRows")&&typeof e.showHiddenRows=="boolean"&&(n.showHiddenRows=e.showHiddenRows),t.has("globalFilter")&&typeof e.globalFilter=="string"&&(n.globalFilter=e.globalFilter),n}function Bt(e){return {...e,state:Ho(e.state,Object.keys(e.state))}}function Yr(e,a){return Array.isArray(a)?a.map(t=>Ne(t)?{...t}:t):Ne(a)?e==="columnPinning"?{left:Array.isArray(a.left)?[...a.left]:void 0,right:Array.isArray(a.right)?[...a.right]:void 0}:{...a}:a}function Zr(e){if(Array.isArray(e))return e.filter(a=>Ne(a)&&typeof a.id=="string").map(a=>({id:a.id,desc:!!a.desc}))}function el(e){if(!(!Ne(e)||!Number.isInteger(e.pageIndex)||e.pageIndex<0||!Number.isInteger(e.pageSize)||e.pageSize<1))return {pageIndex:e.pageIndex,pageSize:e.pageSize}}function al(e){if(Array.isArray(e))return e.filter(a=>Ne(a)&&typeof a.id=="string"&&Object.prototype.hasOwnProperty.call(a,"value")).map(a=>({id:a.id,value:a.value}))}function tl(e){if(Ne(e))return {left:_t(e.left)??[],right:_t(e.right)??[]}}function Ot(e){if(Ne(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="boolean"))}function nl(e){if(Ne(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="number"&&Number.isFinite(a[1])&&a[1]>=0))}function _t(e){if(Array.isArray(e))return e.filter(a=>typeof a=="string")}function $t(e){if(e){if(e.storage)return e.storage;if(!(typeof window>"u"))try{return window.localStorage}catch(a){e.onError?.({error:a,operation:"read"});return}}}function ol(){return typeof globalThis.crypto?.randomUUID=="function"?globalThis.crypto.randomUUID():(zo+=1,`view-${Date.now().toString(36)}-${zo.toString(36)}`)}function Ut(e){return `${qr}${e}`}function Ne(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Bo({columns:e,currentColumnFilters:a,currentColumnPinning:t,effectiveColumnVisibility:n,enableColumnFilters:i,handleColumnFiltersChange:s,handleColumnPinningChange:l,labels:b,table:u,toolbarActions:D,visibleData:v,csvExport:E$1}){let R=y.useMemo(()=>A(e).map(({column:c,index:w})=>{let f=G(c,w),r=c.header,h=I(c),g=typeof r=="string"?r:h?O(h):O(f),$=t.left?.includes(f)===true?"left":t.right?.includes(f)===true?"right":false;return {id:f,label:g,visible:n[f]!==false,canHide:c.enableHiding!==false,pinned:$}}),[e,t,n]),S=y.useMemo(()=>i===false?[]:A(e).flatMap(({column:c,index:w})=>{let f=c.meta?.filter;if(!f)return [];let r=G(c,w),h=c.header,g=I(c),$=f.label??(typeof h=="string"?h:g?O(g):O(r)),I$1=a.find(K=>K.id===r),B$1=typeof f.options=="function"?f.options({rows:v}):f.options??[];return [{id:r,label:$,type:f.type,value:I$1?.value,placeholder:f.placeholder,options:B(B$1)}]}),[e,a,i,v]),x=y.useCallback((c,w)=>{s(f=>{let r=f.filter(h=>h.id!==c);return C(w)&&r.push({id:c,value:w}),r});},[s]),M=y.useCallback(()=>{s([]);},[s]),H=y.useCallback((c,w)=>{l(f=>{let r=(f.left??[]).filter(g=>g!==c),h=(f.right??[]).filter(g=>g!==c);return w==="left"&&r.push(c),w==="right"&&h.push(c),{left:r,right:h}});},[l]),T=y.useCallback(()=>{if(E$1)return E({csvExport:E$1,table:u,labels:b})},[E$1,b,u]),m=y.useMemo(()=>E$1?[...D??[],{key:"__csv_export__",label:b.exportCsv,icon:k,placement:"trailing",onClick:T}]:D??[],[E$1,T,b.exportCsv,D]);return {columnVisibilityOptions:R,effectiveToolbarActions:m,handleClearColumnFilters:M,handleToolbarColumnFilterChange:x,handleToolbarColumnPinningChange:H,toolbarColumnFilters:S}}function Gs(e){return rl(e)}function rl(e,a$2={}){let t=a$2.CardPanel??oo,n=a$2.TablePanel??Io,i=e.classNames??{},{rootClassName:s,Button:l,Checkbox:b,Input:u,ScrollArea:D,ScrollBar:v,Skeleton:E$1,Table:R,TableBody:S,TableCell:x,TableFooter:M="tfoot",TableHead:H$1,TableHeader:T,TableRow:m,Tooltip:c,TooltipContent:w,TooltipProvider:f=y.Fragment,TooltipTrigger:r}=e,h=ko(e),g=Ao(e),{DataTableFooter:$}=Eo(e),I=Vo(e),B=Po(e,g),K={minSize:80,size:180,maxSize:720};return function({columns:C,data:Q,getRowId:j,children:q,title:X,description:V,toolbarQueryValue:U,onToolbarQueryValueChange:Z,toolbarQueryPlaceholder:te,toolbarQueryDebounceMs:se,manualFiltering:me=false,enableToolbarQueryFiltering:Le=true,globalFilterFn:Me,columnFilters:Ce,onColumnFiltersChange:J,enableColumnFilters:Ae,customToolbar:pe,compactToolbar:Ve,rowsPerPageOptions:De=[10,20,50,100],totalRowCount:F$1,hasNextPage:we,sorting:Se,onSortingChange:be,manualSorting:ge=false,pageIndex:Ye,pageSize:Y,onPageIndexChange:Oe,onPageSizeChange:je,pageCount:Ze,manualPagination:Ke=false,rowSelection:Ge,onRowSelectionChange:Ie,enableRowSelection:ze=false,expanded:ve,onExpandedChange:_e,getRowCanExpand:ea,renderExpandedRow:he,columnOrder:He,onColumnOrderChange:aa,enableColumnReordering:We=false,columnPinning:Qe,onColumnPinningChange:ye,enableColumnPinning:k=false,toolbarActions:N=[],selectionActions:ne=[],rowActions:o=[],csvExport:P$1,density:W,onDensityChange:Pa,enableDensityToggle:ut=false,columnPrefsKey:pa,persistence:sa,savedViews:oe,initialState:ee,state:le,onStateChange:re,apiRef:_a,labels:xa,summaryRows:Ha=[],cardRenderer:ka,cardSizing:ta,cardGridClassName:Ba,cardClassName:pt,viewMode:$a,onViewModeChange:bt,enableViewToggle:ba=false,emptyState:ma,isLoading:Ua=false,loadingRowCount:z,getRowLoadingState:Fe,hiddenRows:ga,showHiddenRows:ja,onShowHiddenRowsChange:jo,infiniteScroll:Ka,editableRows:Ga,columnVisibility:jt,onColumnVisibilityChange:Ko,columnSizing:Kt,onColumnSizingChange:Go,enableColumnResizing:Gt=false,columnResizeMode:Wo="onEnd",layoutMode:Wt="fill",stickyHeader:Qo=true,showFooter:qo=true,showToolbar:Qt=true,dir:mt="ltr",flexGrow:fa=true,toolbarVisibility:qt,className:Jo,tableClassName:Xo,tableContainerClassName:Jt,stripedRows:Xt=false,getRowClassName:Yt,onRowClick:gt,onActionError:Ea,dragAndDrop:Ta,fileUpload:qe,virtualization:ft}){let Ma=y.useRef(null),Zt=y.useRef(null),en=y.useRef(null),Yo=y.useRef(null),Tt=y.useRef(null),Zo=y.useRef(null),ei=y.useId(),ai=y.useId();y.useMemo(()=>H(C),[C]);let Je=y.useMemo(()=>so(xa),[xa]),ti=U??le?.globalFilter,ni=Se??le?.sorting,Wa=Ye??le?.pagination?.pageIndex,Qa=Y??le?.pagination?.pageSize,oi=Ge??le?.rowSelection,ii=jt??le?.columnVisibility,ri=Ce??le?.columnFilters,li=ve??le?.expanded,si=He??le?.columnOrder,di=Qe??le?.columnPinning,ci=Kt??le?.columnSizing,ui=W??le?.density,pi=$a??le?.viewMode,bi=ja??le?.showHiddenRows,an=Qt&&(qt?.title??true),tn=an&&X?ei:void 0,nn=an&&V?ai:void 0;sl(le,{columnFilters:Ce!==void 0,columnOrder:He!==void 0,columnPinning:Qe!==void 0,columnSizing:Kt!==void 0,columnVisibility:jt!==void 0,density:W!==void 0,expanded:ve!==void 0,globalFilter:U!==void 0,pagination:Ye!==void 0||Y!==void 0,rowSelection:Ge!==void 0,showHiddenRows:ja!==void 0,sorting:Se!==void 0,viewMode:$a!==void 0});let mi=Ee("globalFilter",Z,re),gi=Ee("sorting",be,re),fi=Ee("rowSelection",Ie,re),Ti=Ee("columnVisibility",Ko,re),Ci=Ee("columnFilters",J,re),Di=Ee("expanded",_e,re),wi=Ee("columnOrder",aa,re),hi=Ee("columnPinning",ye,re),yi=Ee("columnSizing",Go,re),Ri=Ee("density",Pa,re),Si=Ee("viewMode",bt,re),vi=Ee("showHiddenRows",jo,re),on=y.useCallback(d=>{Oe?.(d),re?.(O=>({...O,pagination:{pageIndex:d,pageSize:Qa??O.pagination.pageSize}}));},[Oe,re,Qa]),Pi=y.useCallback(d=>{je?.(d),re?.(O=>({...O,pagination:{pageIndex:Wa??O.pagination.pageIndex,pageSize:d}}));},[je,re,Wa]),Be=y.useCallback((d,O)=>{ll(O,d,Ea);},[Ea]),rn=y.useMemo(()=>o.map(d=>({...d,onClick:O=>{Be({actionKey:d.key,row:O,source:"rowAction"},()=>d.onClick(O));}})),[o,Be]),ln=y.useMemo(()=>gt?d=>{Be({row:d.row,source:"rowClick"},()=>gt(d));}:void 0,[gt,Be]),xi=y.useCallback((d,O)=>{Ea?.({error:d,row:O,source:"edit"});},[Ea]),{containerWidth:ki,currentColumnFilters:qa,currentColumnOrder:Ct,currentColumnPinning:Ja,currentColumnSizing:Xa,currentColumnVisibility:sn,currentDensity:Aa,currentExpanded:Dt,currentPagination:Ya,currentRowSelection:Za,currentShowHiddenRows:wt,currentSorting:et,currentViewMode:Ca,effectiveColumnVisibility:dn,globalFilterValue:Ei,handleDensityChange:ht,handleShowHiddenRowsChange:yt,handleViewModeChange:Rt,localSearchValue:Da,resolvedLoadingRowCount:Mi,resolvedToolbarQueryPlaceholder:Ai,selectedRows:Vi,setCurrentColumnFilters:cn,setCurrentColumnOrder:Ii,setCurrentColumnPinning:un,setCurrentColumnVisibility:zi,setCurrentExpanded:Fi,setCurrentRowSelection:pn,setCurrentSorting:Ni,setLocalColumnSizing:Li,setLocalPagination:Oi,setLocalSearchValue:St,shouldRenderInitialLoading:vt,tableData:_i,tableGetRowId:Hi,visibleData:Bi}=yo({columnFilters:ri,columnOrder:si,columnPinning:di,columnSizing:ci,columnPrefsKey:pa,persistence:sa,columnVisibility:ii,columns:C,containerRef:Ma,data:Q,density:ui,enableRowSelection:ze,enableToolbarQueryFiltering:Le,expanded:li,getRowId:j,hiddenRows:ga,isLoading:Ua,loadingRowCount:z,manualFiltering:me,initialState:ee,onColumnFiltersChange:Ci,onColumnOrderChange:wi,onColumnPinningChange:hi,onColumnSizingChange:yi,onColumnVisibilityChange:Ti,onDensityChange:Ri,onExpandedChange:Di,onPageIndexChange:on,onRowSelectionChange:fi,onShowHiddenRowsChange:vi,onSortingChange:gi,onToolbarQueryValueChange:mi,onViewModeChange:Si,pageIndex:Wa,pageSize:Qa,resolvedLabels:Je,rowSelection:oi,rowsPerPageOptions:De,selectionActions:ne,showHiddenRows:bi,sorting:ni,toolbarQueryDebounceMs:se,toolbarQueryPlaceholder:te,toolbarQueryValue:ti,viewMode:pi}),{cancelEditing:$i,draftValues:Ui,editingRowId:Pt,isSavingEdit:ji,saveEdit:Ki,setDraftValues:Gi,setEditingRowId:Wi,startEditingRow:Qi}=P({columns:C,editableRows:Ga,onError:xi}),{viewportElement:bn,viewportHeight:mn}=a$1(en,Ca),qi=y.useCallback(()=>{qe?.disabled||Zt.current?.click();},[qe?.disabled]),Ji=y.useCallback(d=>{Be({source:"fileUpload"},()=>qe?.onFilesSelected(d));},[qe,Be]),Xi=co({Button:l,Checkbox:b,DataTableRowActions:g,Tooltip:c,TooltipContent:w,TooltipTrigger:r,cancelEditing:$i,columns:C,editableRows:Ga,editingRowId:Pt,enableRowSelection:ze,getRowCanExpand:ea,isSavingEdit:ji,labels:Je,lastSelectedRowIdRef:Zo,renderExpandedRow:he,rowActions:rn,saveEdit:Ki,startEditingRow:Qi,tableRef:Tt}),{effectivePageCount:Yi,footerTotalRowCount:Zi,handleFooterPageIndexChange:er,handleFooterPageSizeChange:ar,isPageCountKnown:tr,renderedRows:gn,reorderColumn:nr,rowsToRender:or,sentinelRef:fn,table:ae,virtualPaddingBottom:ir,virtualPaddingTop:rr,visibleLeafColumns:xt}=mo({autoResetPageIndex:false,columnResizeMode:Wo,dir:mt,currentColumnFilters:qa,currentColumnOrder:Ct,currentColumnPinning:Ja,currentColumnSizing:Xa,currentExpanded:Dt,currentPagination:Ya,currentRowSelection:Za,currentSorting:et,defaultColumn:K,effectiveColumnVisibility:dn,enableColumnResizing:Gt,enableRowSelection:ze,getRowCanExpand:ea,globalFilterFn:Me,globalFilterValue:Ei,hasNextPage:we,handleColumnFiltersChange:cn,handleColumnOrderChange:Ii,handleColumnPinningChange:un,handleColumnVisibilityChange:zi,handleExpandedChange:Fi,infiniteScroll:Ka,manualFiltering:me,manualPagination:Ke,manualSorting:ge,onActionError:Ea,onPageIndexChange:on,onPageSizeChange:Pi,pageCount:Ze,pageIndex:Wa,pageSize:Qa,renderExpandedRow:he,setCurrentRowSelection:pn,setCurrentSorting:Ni,setLocalColumnSizing:Li,setLocalPagination:Oi,shouldRenderInitialLoading:vt,tableColumns:Xi,tableData:_i,tableGetRowId:Hi,tableRef:Tt,totalRowCount:F$1,virtualization:ft}),Tn=So({columns:C,columnSizing:Xa,editableRows:!!Ga,enableRowSelection:ze,hasRowActions:o.length>0,hasRowExpansion:!!he,layoutMode:Wt,uiClassNames:i,visibleLeafColumns:xt}),{explicitlySizedColumnIds:at,fillMinWidth:lr,getColumnLayout:sr}=Tn,dr=y.useMemo(()=>new Set(A(C).flatMap(({column:d,index:O})=>Object.prototype.hasOwnProperty.call(d,"cell")&&typeof d.cell=="function"?[G(d,O)]:[])),[C]),cr=xt.length,ur=y.useMemo(()=>({Checkbox:b,Input:u,Skeleton:E$1,TableCell:x,TableRow:m}),[]),pr=y.useMemo(()=>A(C).some(({column:d})=>d.meta?.cardTitle),[C]),br=y.useCallback((d,O)=>{at.has(d)||Object.prototype.hasOwnProperty.call(ae.getState().columnSizing,d)||flushSync(()=>{ae.setColumnSizing(ha=>({...ha,[d]:O}));});},[at,ae]),mr=y.useCallback(d=>{if(at.has(d)){ae.getColumn(d)?.resetSize();return}ae.setColumnSizing(O=>{if(!Object.prototype.hasOwnProperty.call(O,d))return O;let ha={...O};return delete ha[d],ha});},[at,ae]),Cn=ae.getFilteredRowModel().rows.map(d=>d.original),Dn=typeof ma=="function"?ma({rows:Cn,toolbarQueryValue:Da}):ma,{columnVisibilityOptions:gr,effectiveToolbarActions:wn,handleClearColumnFilters:fr,handleToolbarColumnFilterChange:Tr,handleToolbarColumnPinningChange:Cr,toolbarColumnFilters:Dr}=Bo({columns:C,currentColumnFilters:qa,currentColumnPinning:Ja,csvExport:P$1,effectiveColumnVisibility:dn,enableColumnFilters:Ae,handleColumnFiltersChange:cn,handleColumnPinningChange:un,labels:Je,table:ae,toolbarActions:N,visibleData:Bi}),wr=y.useMemo(()=>wn.map(d=>({...d,onClick:O=>{Be({actionKey:d.key,source:"toolbarAction"},()=>d.onClick(O));}})),[wn,Be]),hr=y.useMemo(()=>ne.map(d=>({...d,onClick:O=>{Be({actionKey:d.key,source:"selectionAction"},()=>d.onClick(O));}})),[Be,ne]),hn=y.useMemo(()=>({sorting:et,pagination:Ya,rowSelection:Za,columnVisibility:sn,columnFilters:qa,expanded:Dt,columnOrder:Ct,columnPinning:Ja,columnSizing:Xa,density:Aa,viewMode:Ca,showHiddenRows:wt,globalFilter:Da}),[qa,Ct,Ja,Xa,sn,Aa,Dt,Ya,Za,wt,et,Ca,Da]),Va=y.useCallback(()=>cl(hn),[hn]),na=y.useCallback(d=>{d.sorting!==void 0&&ae.setSorting(d.sorting),d.pagination!==void 0&&ae.setPagination(d.pagination),d.rowSelection!==void 0&&ae.setRowSelection(d.rowSelection),d.columnVisibility!==void 0&&ae.setColumnVisibility(d.columnVisibility),d.columnFilters!==void 0&&ae.setColumnFilters(d.columnFilters),d.expanded!==void 0&&ae.setExpanded(d.expanded),d.columnOrder!==void 0&&ae.setColumnOrder(d.columnOrder),d.columnPinning!==void 0&&ae.setColumnPinning(d.columnPinning),d.columnSizing!==void 0&&ae.setColumnSizing(d.columnSizing),d.density!==void 0&&ht(d.density),d.viewMode!==void 0&&Rt(d.viewMode),d.showHiddenRows!==void 0&&yt(d.showHiddenRows),d.globalFilter!==void 0&&St(d.globalFilter);},[ht,yt,Rt,St,ae]),wa=y.useCallback(()=>Co(sa??pa),[pa,sa]),yn=y.useCallback(d=>{d?.clearPersistence&&wa(),na({columnVisibility:ee?.columnVisibility??{},columnOrder:ee?.columnOrder??[],columnPinning:ee?.columnPinning??F(C),columnSizing:ee?.columnSizing??{}});},[wa,C,ee,na]),Rn=y.useCallback(d=>{d?.clearPersistence&&wa(),na({sorting:ee?.sorting??[],pagination:ee?.pagination??{pageIndex:0,pageSize:De[0]??20},rowSelection:ee?.rowSelection??{},columnVisibility:ee?.columnVisibility??{},columnFilters:ee?.columnFilters??[],expanded:ee?.expanded??{},columnOrder:ee?.columnOrder??[],columnPinning:ee?.columnPinning??F(C),columnSizing:ee?.columnSizing??{},density:ee?.density??"comfortable",viewMode:ee?.viewMode??"table",showHiddenRows:ee?.showHiddenRows??false,globalFilter:ee?.globalFilter??""});},[wa,C,ee,na,De]),Sn=y.useCallback(()=>va(oe),[oe]),vn=y.useCallback(d=>No(oe,d,Va()),[Va,oe]),Pn=y.useCallback(d=>{let O=va(oe).find(ha=>ha.id===d);return O?(na(O.state),oe?.onApply?.(O),true):false},[na,oe]),xn=y.useCallback((d,O)=>Lo(oe,d,O),[oe]),kn=y.useCallback(d=>Oo(oe,d),[oe]),En=y.useCallback(()=>_o(oe),[oe]),Mn=y.useCallback(d=>E({csvExport:d??(P$1||true),labels:Je,table:ae}),[P$1,Je,ae]);return y.useImperativeHandle(_a,()=>({getTable:()=>Tt.current,getState:Va,snapshot:Va,restore:na,resetColumnLayout:yn,resetState:Rn,clearPersistedState:wa,getSavedViews:Sn,createSavedView:vn,applySavedView:Pn,renameSavedView:xn,deleteSavedView:kn,clearSavedViews:En,focus:()=>{Ma.current?.focus();},scrollToRow:d=>$o(Ma.current,"row",d),scrollToColumn:d=>$o(Ma.current,"column",d),exportCsv:Mn}),[Pn,wa,En,vn,kn,Mn,Sn,Va,xn,yn,Rn,na]),jsx(f,{children:jsxs("div",{ref:Ma,"data-dtp-slot":"data-table-root","data-density":Aa,"data-dtp-striped-rows":Xt||void 0,"aria-busy":Ua||void 0,dir:mt,tabIndex:-1,className:a("@container/data-table data-table-container-query flex w-full min-w-0 flex-col",fa?"h-full min-h-0 flex-1":"grow",s),onDragEnter:Ta?.onDragEnter,onDragOver:Ta?.onDragOver,onDragLeave:Ta?.onDragLeave,onDrop:Ta?.onDrop,children:[qe?jsx("input",{ref:Zt,className:"hidden",type:"file",accept:qe.accept,multiple:qe.multiple??true,disabled:qe.disabled,onChange:d=>{let O=d.currentTarget.files;O?.length&&Ji(O),d.currentTarget.value="";}}):null,jsx("div",{"data-dtp-slot":"data-table-layout",className:a("flex w-full flex-col",fa?"min-h-0 flex-1":"grow"),children:jsxs("div",{"data-dtp-slot":"data-table-main",className:a("flex w-full flex-col gap-4",fa?"min-h-0 flex-1":"grow",Jo),children:[Qt?jsx(lo,{allRows:Cn,columnFilters:Dr,columnVisibilityOptions:gr,compactToolbar:Ve,customToolbar:pe,DataTableToolbar:I,density:Aa,description:V,descriptionId:nn,effectiveToolbarActions:wr,enableColumnPinning:k,enableDensityToggle:ut,enableViewToggle:ba&&!!ka,hiddenRowsLabel:ga?.label,labels:Je,onClearColumnFilters:fr,onColumnFilterChange:Tr,onColumnPinningChange:Cr,onDensityChange:ht,onShowHiddenRowsChange:yt,onToolbarQueryValueChange:St,onViewModeChange:Rt,openFileDialog:qe?qi:void 0,selectedRows:Vi,selectionActions:hr,showHiddenRows:wt,table:ae,title:X,titleId:tn,toolbarQueryPlaceholder:Ai,toolbarQueryValue:Da,toolbarVisibility:qt,viewMode:Ca}):null,jsx("div",{"data-dtp-slot":"data-table-content",className:a(fa?"flex min-h-0 flex-1 flex-col":""),children:Ca==="card"&&ka?jsx(t,{cardClassName:pt,cardGridClassName:Ba,cardSizing:ta,cardRenderer:ka,containerWidth:ki,currentRowSelection:Za,DataTableCardView:B,DataTableEmptyState:h,dragAndDrop:Ta,editableRows:Ga,editingRowId:Pt,emptyNode:Dn,enableRowSelection:ze,flexGrow:fa,getRowClassName:Yt,hasCardTitle:pr,infiniteScroll:Ka,localSearchValue:Da,onRowClick:ln,renderedRows:gn,renderExpandedRow:he,resolvedLabels:Je,resolvedLoadingRowCount:Mi,rowActions:rn,ScrollArea:D,sentinelRef:fn,setCurrentRowSelection:pn,setEditingRowId:Wi,shouldRenderInitialLoading:vt,tableContainerClassName:Jt,uiClassNames:i,virtualization:ft}):jsx(n,{ariaDescribedBy:nn,ariaLabelledBy:tn,bodyRowComponents:ur,columnLayouts:Tn.columnLayouts,currentDensity:Aa,currentSorting:et,dir:mt,DataTableEmptyState:h,dragAndDrop:Ta,draggedColumnIdRef:Yo,draftValues:Ui,editingRowId:Pt,emptyNode:Dn,enableColumnReordering:We,enableColumnResizing:Gt,explicitCustomCellColumnIds:dr,fillMinWidth:lr,flexGrow:fa,getColumnLayout:sr,getRowClassName:Yt,getRowLoadingState:Fe,infiniteScroll:Ka,layoutMode:Wt,localSearchValue:Da,onRowClick:ln,primeColumnForResize:br,renderedRows:gn,renderExpandedRow:he,reorderColumn:nr,resetColumnSize:mr,resolvedLabels:Je,rowsToRender:or,ScrollArea:D,ScrollBar:v,sentinelRef:fn,setDraftValues:Gi,shouldRenderInitialLoading:vt,stickyHeader:Qo,stripedRows:Xt,summaryRows:Ha,table:ae,tableClassName:Xo,tableContainerClassName:Jt,Table:R,TableBody:S,TableCell:x,TableFooter:M,TableHead:H$1,TableHeader:T,TableRow:m,tableScrollContainerRef:en,tableScrollElement:bn,uiClassNames:i,viewportHeight:mn,virtualization:ft,virtualPaddingBottom:ir,virtualPaddingTop:rr,visibleLeafColumnCount:cr,visibleLeafColumns:xt})}),jsx(io,{currentPagination:Ya,DataTableFooter:$,effectivePageCount:Yi,footerTotalRowCount:Zi,handleFooterPageIndexChange:er,handleFooterPageSizeChange:ar,labels:Je,pageCountKnown:tr,rowsPerPageOptions:De,showFooter:qo&&!Ka?.enabled,children:q})]})})]})})}}function ll(e,a,t){let n;try{n=e();}catch(i){t?.({...a,error:i});return}Promise.resolve(n).catch(i=>{t?.({...a,error:i});});}function Ee(e,a,t){let n=y.useCallback(i=>{a?.(i),t?.(s=>({...s,[e]:i}));},[e,a,t]);return a||t?n:void 0}function sl(e,a){let t=y.useRef(new Set);y.useEffect(()=>{if(!(!e||!dl()))for(let n of Object.keys(a))e[n]===void 0||!a[n]||t.current.has(n)||(t.current.add(n),console.warn(`[data-table-pro] Both state.${n} and its legacy controlled prop were provided. The legacy prop takes precedence during the 4.x compatibility window.`));},[a,e]);}function dl(){return globalThis.process?.env?.NODE_ENV!=="production"}function cl(e){return {sorting:e.sorting.map(a=>({...a})),pagination:{...e.pagination},rowSelection:{...e.rowSelection},columnVisibility:{...e.columnVisibility},columnFilters:e.columnFilters.map(a=>({...a})),expanded:typeof e.expanded=="boolean"?e.expanded:{...e.expanded},columnOrder:[...e.columnOrder],columnPinning:{left:e.columnPinning.left?[...e.columnPinning.left]:void 0,right:e.columnPinning.right?[...e.columnPinning.right]:void 0},columnSizing:{...e.columnSizing},density:e.density,viewMode:e.viewMode,showHiddenRows:e.showHiddenRows,globalFilter:e.globalFilter}}function $o(e,a,t){if(!e)return false;let n=a==="row"?"data-row-id":"data-column-id",i=Array.from(e.querySelectorAll(`[${n}]`)).find(s=>s.getAttribute(n)===t);return i?(i.scrollIntoView?.({block:"nearest",inline:"nearest"}),true):false}export{oo as a,io as b,lo as c,co as d,mo as e,ke as f,yo as g,So as h,Gs as i,rl as j};//# sourceMappingURL=chunk-ICUCANNA.js.map +//# sourceMappingURL=chunk-ICUCANNA.js.map \ No newline at end of file diff --git a/dist/chunk-ICUCANNA.js.map b/dist/chunk-ICUCANNA.js.map new file mode 100644 index 0000000..8ac4463 --- /dev/null +++ b/dist/chunk-ICUCANNA.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/core/data-table/data-table-base-card-panel.tsx","../src/core/data-table/data-table-card-panel.tsx","../src/core/data-table/data-table-footer-section.tsx","../src/core/data-table/data-table-toolbar-section.tsx","../src/core/data-table/data-table-labels.ts","../src/core/data-table/use-data-table-columns.tsx","../src/core/data-table/use-data-table-infinite-scroll.ts","../src/core/data-table/use-data-table-pagination-clamp.ts","../src/core/data-table/use-data-table-instance.ts","../src/core/data-table/use-controllable-state.ts","../src/core/data-table/use-data-table-column-prefs.ts","../src/core/data-table/use-data-table-container-width.ts","../src/core/data-table/use-data-table-state.ts","../src/core/data-table/use-column-layout.ts","../src/core/data-table/create-data-table-card-view.tsx","../src/core/data-table/create-data-table-empty-state.tsx","../src/core/data-table/create-data-table-pagination.tsx","../src/core/data-table/create-data-table-row-actions.tsx","../src/core/data-table/create-data-table-toolbar.tsx","../src/core/data-table/data-table-table-panel-router.tsx","../src/core/data-table/data-table-saved-views.ts","../src/core/data-table/use-data-table-toolbar-features.ts","../src/core/data-table/create-data-table.tsx"],"names":["DataTableBaseCardPanel","cardClassName","cardGridClassName","cardSizing","cardRenderer","currentRowSelection","DataTableCardView","DataTableEmptyState","dragAndDrop","editableRows","editingRowId","emptyNode","enableRowSelection","flexGrow","getRowClassName","hasCardTitle","infiniteScroll","localSearchValue","onRowClick","renderedRows","renderExpandedRow","resolvedLabels","resolvedLoadingRowCount","rowActions","ScrollArea","sentinelRef","setCurrentRowSelection","setEditingRowId","shouldRenderInitialLoading","tableContainerClassName","uiClassNames","shouldRenderCards","cardScrollContainerRef","no","renderCardView","rows","options","jsx","cn","jsxs","LazyDataTableVirtualCardPanel","rt","DataTableCardPanel","props","config","DataTableFooterSection","children","currentPagination","DataTableFooter","effectivePageCount","footerTotalRowCount","handleFooterPageIndexChange","handleFooterPageSizeChange","labels","pageCountKnown","rowsPerPageOptions","showFooter","DataTableToolbarSection","allRows","columnFilters","columnVisibilityOptions","compactToolbar","customToolbar","DataTableToolbar","description","descriptionId","effectiveToolbarActions","enableColumnPinning","enableDensityToggle","enableViewToggle","hiddenRowsLabel","onClearColumnFilters","onColumnFilterChange","onColumnPinningChange","onDensityChange","onShowHiddenRowsChange","onToolbarQueryValueChange","onViewModeChange","openFileDialog","selectedRows","selectionActions","showHiddenRows","table","title","titleId","toolbarQueryPlaceholder","toolbarQueryValue","toolbarVisibility","density","viewMode","columnId","visible","DATA_TABLE_DEFAULT_LABELS","count","label","pageIndex","pageCount","rowId","columnLabel","resolveDataTableLabels","useDataTableColumns","Button","Checkbox","DataTableRowActions","Tooltip","TooltipContent","TooltipTrigger","cancelEditing","columns","getRowCanExpand","isSavingEdit","lastSelectedRowIdRef","saveEdit","startEditingRow","tableRef","selectRowRange","lt","targetRowId","selected","tableInstance","row","isDataTableLoadingRow","startIndex","endIndex","from","to","current","next","defs","UTILITY_COLUMN_SIZE","isExpanded","IconChevronDown","checked","event","column","decorateFilterableColumn","useDataTableInfiniteScroll","enabled","hasMore","isLoadingMore","onLoadMore","onError","oa","isRequestInFlightRef","onLoadMoreEvent","onErrorEvent","error","target","observer","entries","result","useDataTablePaginationClamp","maxPageIndex","onPageIndexChange","setLocalPageIndex","po","nextPageIndex","useDataTableInstance","autoResetPageIndex","columnResizeMode","dir","currentColumnFilters","currentColumnOrder","currentColumnPinning","currentColumnSizing","currentExpanded","currentSorting","defaultColumn","effectiveColumnVisibility","enableColumnResizing","globalFilterFn","globalFilterValue","hasNextPage","handleColumnFiltersChange","handleColumnOrderChange","handleColumnPinningChange","handleColumnVisibilityChange","handleExpandedChange","manualFiltering","manualPagination","manualSorting","onActionError","onPageSizeChange","pageSize","setCurrentSorting","setLocalColumnSizing","setLocalPagination","tableColumns","tableData","tableGetRowId","totalRowCount","virtualization","generatedColumnIds","xe","getDataTableLeafColumns","index","getColumnId","effectiveColumnOrder","columnIds","dataColumnIds","isUtilityColumnId","dataColumnIdSet","orderedDataColumnIds","unorderedDataColumnIds","effectiveColumnPinning","columnIdSet","dataLeft","dataRight","tableState","handlePaginationChange","updater","nextValue","handleColumnSizingChange","useReactTable","getCoreRowModel","getFilteredRowModel","getSortedRowModel","getExpandedRowModel","getPaginationRowModel","dataTableGlobalFilterFn","visibleLeafColumns","reorderColumn","sourceColumnId","targetColumnId","defaultOrder","nextOrder","moveColumnInOrder","virtualizationConfig","virtualRowsEnabled","fallbackRowCount","rowsToRender","rowIndex","usesManualRows","derivedTotalRowCount","effectiveTotalRowCount","isPageCountKnown","nextPageSize","useControllableState","defaultValue","onChange","value","uncontrolledValue","setUncontrolledValue","ia","currentValue","currentValueRef","setValue","STORAGE_PREFIX","DEFAULT_VERSION","ALL_SLICES","readDataTableColumnPrefs","input","resolvePersistenceConfig","storage","resolveStorage","storageKey","getStorageKey","parsed","targetVersion","candidate","isPersistencePayload","selectPersistenceSlices","validateDataTableColumnPrefs","clearDataTableColumnPrefs","usePersistDataTableColumnPrefs","key","persistence","prefs","version","debounceMs","selectedState","serialized","ua","payload","operation","write","timeout","isRecord","slices","slice","visibility","validateBooleanRecord","sizing","validateSizingRecord","order","validateStringArray","left","right","isDataTableDensity","entry","item","BREAKPOINT_WIDTHS","DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS","first","second","useDataTableContainerWidth","containerRef","widthRef","ya","width","setWidth","element","updateWidth","inlineSize","nextWidth","quantizeDataTableContainerWidth","getResizeObserverInlineSize","bucket","breakpointWidth","contentBoxSize","size","getInlineSize","useDataTableState","columnOrder","columnPinning","columnSizing","columnPrefsKey","columnVisibility","data","enableToolbarQueryFiltering","expanded","getRowId","hiddenRows","initialState","isLoading","loadingRowCount","onColumnFiltersChange","onColumnOrderChange","onColumnSizingChange","onColumnVisibilityChange","onExpandedChange","onRowSelectionChange","onSortingChange","rowSelection","sorting","toolbarQueryDebounceMs","persistenceConfig","G","persistedColumnPrefs","localPagination","currentColumnVisibility","setCurrentColumnVisibility","setCurrentColumnFilters","setCurrentExpanded","setCurrentColumnOrder","setCurrentColumnPinning","getInitialColumnPinning","setCurrentColumnSizing","currentViewMode","setCurrentViewMode","currentShowHiddenRows","setCurrentShowHiddenRows","currentDensity","setCurrentDensity","resolvedToolbarQueryValue","resolvedToolbarQueryPlaceholder","resolvedToolbarQueryDebounceMs","setLocalSearchValue","containerWidth","hasOnSearchValueChange","lastReportedSearchValueRef","onToolbarQueryValueChangeEvent","handleViewModeChange","nextViewMode","handleShowHiddenRowsChange","nextShowHiddenRows","handleDensityChange","nextDensity","resetPageIndexForFilterChange","lastFilterStateRef","previous","filtersChanged","globalFilterChanged","responsiveColumnVisibility","isHiddenAtContainerWidth","visibleData","isRowVisible","loadingRows","createDataTableLoadingRows","getDataTableLoadingRowId","shouldResolveSelectedRows","rowById","EMPTY_COLUMN_LAYOUT","useColumnLayout","hasRowActions","hasRowExpansion","layoutMode","explicitlySizedColumnIds","$e","ids","minimumColumnWidths","widths","configuredMinWidth","getConfiguredColumnMinWidth","pinnedColumns","leftOffset","getFixedSide","getColumnLayoutSize","rightOffset","fillColumnId","dataColumns","fixedWidthColumnIds","columnLayouts","layouts","isSelectionColumn","isExpansionColumn","isActionsColumn","isUtilityColumn","isSpacerColumn","isFlexibleFillColumn","columnMinWidth","shouldFixWidth","baseStyle","fixedSide","pinnedStyle","cellStyle","getPinnedColumnClassName","fillMinWidth","total","layout","getColumnLayout","createDataTableCardView","ui","Card","CardContent","CardHeader","Skeleton","onEditingRowIdChange","getRowDraggable","onRowDragStart","onRowDragEnd","resolvedCardSizing","resolvedCardGridClassName","getCardGridClassName","cardGridClasses","cardItemClasses","stateClassName","getCardItemClassName","_","originalRow","isSelected","isEditing","hasCardActions","showCardGradient","showCardOverlayControls","handleCardActivate","getCardRendererClassName","isDataTableInteractiveTarget","updateRowSelection","nextSelection","createDataTableEmptyState","Empty","EmptyContent","EmptyDescription","EmptyHeader","EmptyMedia","EmptyTitle","IconInbox","createDataTablePagination","Pagination","PaginationContent","PaginationEllipsis","PaginationFirst","PaginationItem","PaginationLast","PaginationLink","PaginationNext","PaginationPrevious","Select","SelectContent","SelectGroup","SelectItem","SelectTrigger","SelectValue","DataTablePagination","pages","getVisiblePages","canGoPrevious","canGoNext","lastPageIndex","option","IconDatabase","currentPageIndex","currentPage","page","orderedPages","items","createDataTableRowActions","DropdownMenu","DropdownMenuContent","DropdownMenuGroup","DropdownMenuItem","DropdownMenuSeparator","DropdownMenuTrigger","onStartEditing","onCancelEditing","actions","action","canUseRowAction","stopRowClickPropagation","Mo","IconX","allowEdit","canEditRow","IconDots","IconEdit","Icon","resolveRowActionLabel","createDataTableToolbar","ButtonGroup","DropdownMenuCheckboxItem","DropdownMenuLabel","InputGroup","InputGroupAddon","InputGroupInput","toolbarActions","compactSearchInputRef","Sa","isCompactSearchVisible","setIsCompactSearchVisible","compactToolbarIconButtonClassName","primaryActions","trailingActions","showTitle","showSearch","showActions","showTrailingActions","showOptions","showViewToggle","showCustomToolbar","hasVisibleTitle","hasVisibleSearch","hasVisiblePrimaryActions","hasVisibleSelectionActions","hasVisibleOptions","hasVisibleViewToggle","hasVisibleTrailingActions","hasVisibleCustomToolbar","hasVisibleCompactToolbar","selectedRowCountLabel","Fragment","IconSearch","collapsesToIcon","button","disabled","IconAdjustmentsHorizontal","IconList","IconLayoutGrid","filter","ToolbarColumnFilterControl","hasColumnFilterValue","selectedValues","selectedLabel","nextValues","LazyDataTableVirtualTablePanel","ct","DataTableTablePanelRouter","DataTableTablePanel","DEFAULT_SLICES","fallbackId","readDataTableSavedViews","view","validateSavedView","createDataTableSavedView","name","state","normalizedName","now","createSavedViewId","selectSavedViewSlices","views","writeViews","cloneSavedView","renameDataTableSavedView","id","renamed","deleteDataTableSavedView","clearDataTableSavedViews","snapshots","snapshot","cloneStateSlice","validateState","validateSorting","pagination","validatePagination","filters","validateFilters","pinning","validatePinning","useDataTableToolbarFeatures","enableColumnFilters","csvExport","Xe","header","accessorKey","getAccessorKey","startCase","pinned","toolbarColumnFilters","rawOptions","normalizeColumnFilterOptions","handleToolbarColumnFilterChange","hasFilterValue","handleClearColumnFilters","handleToolbarColumnPinningChange","side","handleCsvExport","exportDataTableCsv","IconDownload","createDataTable","createDataTableWithPanels","rootClassName","Input","ScrollBar","Table","TableBody","TableCell","TableFooter","TableHead","TableHeader","TableRow","TooltipProvider","enableColumnReordering","savedViews","unifiedState","onStateChange","apiRef","summaryRows","emptyState","getRowLoadingState","stickyHeader","showToolbar","className","tableClassName","stripedRows","fileUpload","fileInputRef","tableScrollContainerRef","draggedColumnIdRef","generatedTitleId","generatedDescriptionId","validateDataTableColumnIds","resolvedSorting","resolvedPageIndex","resolvedPageSize","resolvedRowSelection","resolvedColumnVisibility","resolvedColumnFilters","resolvedExpanded","resolvedColumnOrder","resolvedColumnPinning","resolvedColumnSizing","resolvedDensity","resolvedViewMode","resolvedShowHiddenRows","showTableHeading","useDataTableStateConflictWarnings","handleToolbarQueryValueChange","useDataTableStateSliceChange","handleSortingPropChange","handleRowSelectionPropChange","handleColumnVisibilityPropChange","handleColumnFiltersPropChange","handleExpandedPropChange","handleColumnOrderPropChange","handleColumnPinningPropChange","handleColumnSizingPropChange","handleDensityPropChange","handleViewModePropChange","handleShowHiddenRowsPropChange","handlePageIndexPropChange","handlePageSizePropChange","runAction","context","runDataTableAction","guardedRowActions","guardedOnRowClick","handleEditError","draftValues","setDraftValues","useRowEditing","tableScrollElement","viewportHeight","useDataTableScrollViewport","handleSelectedFiles","files","virtualPaddingBottom","virtualPaddingTop","columnLayout","explicitCustomCellColumnIds","visibleLeafColumnCount","bodyRowComponents","primeColumnForResize","currentSize","flushSync","resetColumnSize","filteredData","guardedToolbarActions","guardedSelectionActions","currentDataTableState","getCurrentState","cloneDataTableState","restoreState","nextState","clearPersistedState","resetColumnLayout","resetState","getSavedViews","createSavedView","applySavedView","renameSavedView","deleteSavedView","clearSavedViews","exportCsvFromApi","scrollDataTableElementIntoView","onLegacyChange","handleChange","legacySlices","warnedSlicesRef","isDevelopmentEnvironment","container","kind","attribute"],"mappings":"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","file":"chunk-ICUCANNA.js","sourcesContent":["import * as React from \"react\";\nimport type { Row } from \"@tanstack/react-table\";\nimport { cn } from \"../../lib/utils\";\nimport type { DataTableCardPanelProps } from \"./data-table-card-panel-types\";\n\nexport function DataTableBaseCardPanel({\n cardClassName,\n cardGridClassName,\n cardSizing,\n cardRenderer,\n currentRowSelection,\n DataTableCardView,\n DataTableEmptyState,\n dragAndDrop,\n editableRows,\n editingRowId,\n emptyNode,\n enableRowSelection,\n flexGrow,\n getRowClassName,\n hasCardTitle,\n infiniteScroll,\n localSearchValue,\n onRowClick,\n renderedRows,\n renderExpandedRow,\n resolvedLabels,\n resolvedLoadingRowCount,\n rowActions = [],\n ScrollArea,\n sentinelRef,\n setCurrentRowSelection,\n setEditingRowId,\n shouldRenderInitialLoading,\n tableContainerClassName,\n uiClassNames,\n}: DataTableCardPanelProps) {\n const shouldRenderCards =\n shouldRenderInitialLoading || renderedRows.length > 0;\n const cardScrollContainerRef = React.useRef(null);\n\n const renderCardView = (\n rows: Array>,\n options?: {\n isLoading?: boolean;\n loadingRowCount?: number;\n },\n ) => (\n \n );\n\n return (\n \n \n \n {shouldRenderCards ? (\n shouldRenderInitialLoading ? (\n renderCardView([], {\n isLoading: true,\n loadingRowCount: resolvedLoadingRowCount,\n })\n ) : (\n renderCardView(renderedRows)\n )\n ) : (\n
    \n {emptyNode ?? (\n \n )}\n
    \n )}\n\n {infiniteScroll?.enabled && !shouldRenderInitialLoading ? (\n
    \n
    \n
    \n ) : null}\n
    \n \n \n );\n}\n","import * as React from \"react\";\nimport { DataTableBaseCardPanel } from \"./data-table-base-card-panel\";\nimport type { DataTableCardPanelProps } from \"./data-table-card-panel-types\";\n\nconst LazyDataTableVirtualCardPanel = React.lazy(async () => {\n const module = await import(\"./data-table-virtual-card-panel\");\n return { default: module.DataTableVirtualCardPanel };\n}) as unknown as typeof DataTableBaseCardPanel;\n\nexport function DataTableCardPanel(\n props: DataTableCardPanelProps,\n) {\n const config =\n typeof props.virtualization === \"object\"\n ? props.virtualization.card\n : undefined;\n\n if (config?.enabled !== true) {\n return ;\n }\n\n return (\n \n }\n >\n \n \n );\n}\n\nexport type { DataTableCardPanelProps };\n","import * as React from \"react\";\nimport type { PaginationState } from \"@tanstack/react-table\";\nimport type { DataTableLabels } from \"../types\";\n\ntype DataTableFooterSectionProps = {\n children?: React.ReactNode;\n currentPagination: PaginationState;\n DataTableFooter: React.ElementType;\n effectivePageCount: number;\n footerTotalRowCount: number | undefined;\n handleFooterPageIndexChange: (pageIndex: number) => void;\n handleFooterPageSizeChange: (pageSize: number) => void;\n labels: DataTableLabels;\n pageCountKnown?: boolean;\n rowsPerPageOptions: Array;\n showFooter: boolean;\n};\n\nexport function DataTableFooterSection({\n children,\n currentPagination,\n DataTableFooter,\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n labels,\n pageCountKnown = true,\n rowsPerPageOptions,\n showFooter,\n}: DataTableFooterSectionProps) {\n if (!showFooter && !children) {\n return null;\n }\n\n return (\n
    \n {showFooter ? (\n \n ) : null}\n {children}\n
    \n );\n}\n","import * as React from \"react\";\nimport type { Table as TanStackTable } from \"@tanstack/react-table\";\nimport type { DataTableLabels, DataTableProps } from \"../types\";\n\ntype DataTableToolbarSectionProps = {\n allRows: Array;\n columnFilters: Array;\n columnVisibilityOptions: Array;\n compactToolbar: React.ReactNode;\n customToolbar: React.ReactNode;\n DataTableToolbar: React.ElementType;\n description: string | undefined;\n descriptionId: string | undefined;\n effectiveToolbarActions: Array;\n enableColumnPinning: boolean;\n enableDensityToggle: boolean;\n enableViewToggle: boolean;\n hiddenRowsLabel: string | undefined;\n labels: DataTableLabels;\n onClearColumnFilters: () => void;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n onColumnPinningChange: (columnId: string, side: \"left\" | \"right\" | false) => void;\n onDensityChange: (density: \"compact\" | \"comfortable\" | \"spacious\") => void;\n onShowHiddenRowsChange: (showHiddenRows: boolean) => void;\n onToolbarQueryValueChange: (value: string) => void;\n onViewModeChange: (viewMode: \"table\" | \"card\") => void;\n openFileDialog: (() => void) | undefined;\n selectedRows: Array;\n selectionActions: DataTableProps[\"selectionActions\"];\n showHiddenRows: boolean;\n table: TanStackTable;\n title: string | undefined;\n titleId: string | undefined;\n toolbarQueryPlaceholder: string;\n toolbarQueryValue: string;\n toolbarVisibility: DataTableProps[\"toolbarVisibility\"];\n density: \"compact\" | \"comfortable\" | \"spacious\";\n viewMode: \"table\" | \"card\";\n};\n\nexport function DataTableToolbarSection({\n allRows,\n columnFilters,\n columnVisibilityOptions,\n compactToolbar,\n customToolbar,\n DataTableToolbar,\n description,\n descriptionId,\n effectiveToolbarActions,\n enableColumnPinning,\n enableDensityToggle,\n enableViewToggle,\n hiddenRowsLabel,\n labels,\n onClearColumnFilters,\n onColumnFilterChange,\n onColumnPinningChange,\n onDensityChange,\n onShowHiddenRowsChange,\n onToolbarQueryValueChange,\n onViewModeChange,\n openFileDialog,\n selectedRows,\n selectionActions,\n showHiddenRows,\n table,\n title,\n titleId,\n toolbarQueryPlaceholder,\n toolbarQueryValue,\n toolbarVisibility,\n density,\n viewMode,\n}: DataTableToolbarSectionProps) {\n return (\n
    \n {\n table.getColumn(columnId)?.toggleVisibility(visible);\n }}\n enableColumnPinning={enableColumnPinning}\n onColumnPinningChange={onColumnPinningChange}\n columnFilters={columnFilters}\n onColumnFilterChange={onColumnFilterChange}\n onClearColumnFilters={onClearColumnFilters}\n density={density}\n onDensityChange={onDensityChange}\n enableDensityToggle={enableDensityToggle}\n labels={labels}\n toolbarVisibility={toolbarVisibility}\n openFileDialog={openFileDialog}\n />\n
    \n );\n}\n","import type { DataTableLabels } from \"../types\";\n\ntype ResolvedDataTableLabels = Required;\n\nexport const DATA_TABLE_DEFAULT_LABELS: ResolvedDataTableLabels = {\n searchPlaceholder: \"Search rows...\",\n searchTable: \"Search table\",\n clearSearch: \"Clear search\",\n noRowsTitle: \"No rows yet\",\n noRowsDescription: \"Create a record or refresh this view once data exists.\",\n noMatchingRowsTitle: \"No matching rows\",\n noMatchingRowsDescription: \"Try a different search term or clear filters.\",\n tableOptions: \"Show table options\",\n columns: \"Columns\",\n filters: \"Filters\",\n clearFilters: \"Clear filters\",\n selectedRows: (count) =>\n `${count} record${count === 1 ? \"\" : \"s\"} selected`,\n showHiddenRows: (label) => `Show ${label}`,\n recordsPerPage: \"Records per page\",\n totalRecords: (count) => `Total records: ${count}`,\n pageStatus: (pageIndex, pageCount) => `Page ${pageIndex + 1} of ${pageCount}`,\n pageStatusUnknown: (pageIndex) => `Page ${pageIndex + 1}`,\n pagination: \"Pagination\",\n morePages: \"More pages\",\n firstPage: \"First page\",\n previousPage: \"Previous page\",\n nextPage: \"Next page\",\n lastPage: \"Last page\",\n selectAllVisibleRows: \"Select all visible rows\",\n selectRow: \"Select row\",\n selectCardRow: (rowId) => `Select row ${rowId}`,\n switchToTableView: \"Switch to table view\",\n switchToCardView: \"Switch to card view\",\n tableView: \"Table view\",\n cardView: \"Card view\",\n allFilterOptions: \"All\",\n actions: \"Actions\",\n rowActions: \"Row actions\",\n editRow: \"Edit row\",\n saveEdit: \"Save\",\n cancelEdit: \"Cancel editing\",\n expandRow: \"Expand row\",\n collapseRow: \"Collapse row\",\n exportCsv: \"Export CSV\",\n density: \"Density\",\n compactDensity: \"Compact\",\n comfortableDensity: \"Comfortable\",\n spaciousDensity: \"Spacious\",\n pinLeft: \"Pin left\",\n pinRight: \"Pin right\",\n unpin: \"Unpin\",\n resizeColumn: (columnLabel) => `Resize ${columnLabel}`,\n};\n\nexport function resolveDataTableLabels(\n labels?: Partial,\n): ResolvedDataTableLabels {\n return {\n ...DATA_TABLE_DEFAULT_LABELS,\n ...labels,\n } as ResolvedDataTableLabels;\n}\n","import * as React from \"react\";\nimport type { ColumnDef, Table as TanStackTable } from \"@tanstack/react-table\";\nimport { IconChevronDown } from \"../icons\";\nimport type {\n DataTableEditableRowsConfig,\n DataTableLabels,\n DataTableProps,\n DataTableRowAction,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport {\n UTILITY_COLUMN_SIZE,\n decorateFilterableColumn,\n isDataTableLoadingRow,\n} from \"./data-table-utils\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\ntype DataTableRowActionsComponentProps = {\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n labels: DataTableLabels;\n onCancelEditing: () => void;\n onStartEditing: () => void;\n row: TData;\n rowActions: Array>;\n};\n\nexport function useDataTableColumns({\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n editingRowId,\n enableRowSelection,\n getRowCanExpand,\n isSavingEdit,\n labels,\n lastSelectedRowIdRef,\n renderExpandedRow,\n rowActions,\n saveEdit,\n startEditingRow,\n tableRef,\n}: {\n Button: DataTableUiKit[\"Button\"];\n Checkbox: DataTableUiKit[\"Checkbox\"];\n DataTableRowActions: React.ComponentType<\n DataTableRowActionsComponentProps\n >;\n Tooltip: DataTableUiKit[\"Tooltip\"];\n TooltipContent: DataTableUiKit[\"TooltipContent\"];\n TooltipTrigger: DataTableUiKit[\"TooltipTrigger\"];\n cancelEditing: () => void;\n columns: DataTableProps[\"columns\"];\n editableRows: DataTableProps[\"editableRows\"];\n editingRowId: string | null;\n enableRowSelection: boolean;\n getRowCanExpand: DataTableProps[\"getRowCanExpand\"];\n isSavingEdit: boolean;\n labels: DataTableLabels;\n lastSelectedRowIdRef: React.MutableRefObject;\n renderExpandedRow: DataTableProps[\"renderExpandedRow\"];\n rowActions: Array>;\n saveEdit: (row: TData) => Promise;\n startEditingRow: (row: TData, rowId: string) => void;\n tableRef: React.RefObject | null>;\n}) {\n const selectRowRange = React.useCallback(\n (targetRowId: string, selected: boolean) => {\n const tableInstance = tableRef.current;\n if (!tableInstance || !lastSelectedRowIdRef.current) {\n return;\n }\n\n const rows = tableInstance\n .getRowModel()\n .rows.filter((row) => !isDataTableLoadingRow(row.original));\n const startIndex = rows.findIndex(\n (row) => row.id === lastSelectedRowIdRef.current,\n );\n const endIndex = rows.findIndex((row) => row.id === targetRowId);\n\n if (startIndex < 0 || endIndex < 0) {\n return;\n }\n\n const from = Math.min(startIndex, endIndex);\n const to = Math.max(startIndex, endIndex);\n tableInstance.setRowSelection((current) => {\n const next = { ...current };\n for (const row of rows.slice(from, to + 1)) {\n if (selected) {\n next[row.id] = true;\n } else {\n delete next[row.id];\n }\n }\n return next;\n });\n },\n [lastSelectedRowIdRef, tableRef],\n );\n\n return React.useMemo>>(() => {\n const defs: Array> = [];\n\n if (renderExpandedRow) {\n defs.push({\n id: \"__expand__\",\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n size: UTILITY_COLUMN_SIZE,\n minSize: UTILITY_COLUMN_SIZE,\n maxSize: UTILITY_COLUMN_SIZE,\n header: () => {labels.expandRow},\n cell: ({ row }) => {\n const canExpand =\n getRowCanExpand?.(row.original) ?? Boolean(renderExpandedRow);\n if (!canExpand) {\n return null;\n }\n\n const isExpanded = row.getIsExpanded();\n return (\n
    \n row.toggleExpanded()}\n >\n \n \n
    \n );\n },\n });\n }\n\n if (enableRowSelection) {\n defs.push({\n id: \"__select__\",\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n size: UTILITY_COLUMN_SIZE,\n minSize: UTILITY_COLUMN_SIZE,\n maxSize: UTILITY_COLUMN_SIZE,\n header: ({ table }) => (\n
    \n {\n table.toggleAllPageRowsSelected(checked === true);\n }}\n aria-label={\n labels.selectAllVisibleRows ??\n DATA_TABLE_DEFAULT_LABELS.selectAllVisibleRows\n }\n />\n
    \n ),\n cell: ({ row }) => (\n
    \n ) => {\n if (!event.shiftKey || !lastSelectedRowIdRef.current) {\n lastSelectedRowIdRef.current = row.id;\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n selectRowRange(row.id, !row.getIsSelected());\n lastSelectedRowIdRef.current = row.id;\n }}\n onCheckedChange={(checked: boolean | \"indeterminate\") => {\n lastSelectedRowIdRef.current = row.id;\n row.toggleSelected(checked === true);\n }}\n aria-label={\n labels.selectRow ?? DATA_TABLE_DEFAULT_LABELS.selectRow\n }\n />\n
    \n ),\n });\n }\n\n defs.push(...columns.map((column) => decorateFilterableColumn(column)));\n\n if (rowActions.length || editableRows) {\n defs.push({\n id: \"__actions__\",\n enableSorting: false,\n enableResizing: false,\n enableHiding: false,\n size: UTILITY_COLUMN_SIZE,\n minSize: UTILITY_COLUMN_SIZE,\n maxSize: UTILITY_COLUMN_SIZE,\n header: () => {labels.actions},\n cell: ({ row }) => {\n const rowId = row.id;\n const isEditing = editingRowId === rowId;\n\n if (isEditing) {\n return (\n
    \n {\n void saveEdit(row.original);\n }}\n >\n {labels.saveEdit}\n \n \n \n \n \n {labels.cancelEdit}\n \n \n {labels.cancelEdit}\n \n
    \n );\n }\n\n return (\n
    \n {\n startEditingRow(row.original, row.id);\n }}\n onCancelEditing={() => {}}\n labels={labels}\n />\n
    \n );\n },\n });\n }\n\n return defs;\n }, [\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n editingRowId,\n enableRowSelection,\n getRowCanExpand,\n isSavingEdit,\n labels,\n lastSelectedRowIdRef,\n renderExpandedRow,\n rowActions,\n saveEdit,\n selectRowRange,\n startEditingRow,\n ]);\n}\n","import * as React from \"react\";\n\nexport function useDataTableInfiniteScroll({\n enabled,\n hasMore,\n isLoadingMore,\n onLoadMore,\n onError,\n}: {\n enabled: boolean;\n hasMore: boolean;\n isLoadingMore?: boolean;\n onLoadMore: () => void | Promise;\n onError?: (error: unknown) => void;\n}) {\n const sentinelRef = React.useRef(null);\n const isRequestInFlightRef = React.useRef(false);\n const onLoadMoreEvent = React.useEffectEvent(onLoadMore);\n const onErrorEvent = React.useEffectEvent((error: unknown) => {\n onError?.(error);\n });\n\n React.useEffect(() => {\n if (!enabled || !hasMore || isLoadingMore) {\n return;\n }\n\n const target = sentinelRef.current;\n if (!target) {\n return;\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n const entry = entries[0];\n if (entry.isIntersecting && !isRequestInFlightRef.current) {\n isRequestInFlightRef.current = true;\n\n let result: void | Promise;\n try {\n result = onLoadMoreEvent();\n } catch (error) {\n isRequestInFlightRef.current = false;\n onErrorEvent(error);\n return;\n }\n\n void Promise.resolve(result)\n .catch((error: unknown) => {\n onErrorEvent(error);\n })\n .finally(() => {\n isRequestInFlightRef.current = false;\n });\n }\n },\n {\n rootMargin: \"200px 0px 200px 0px\",\n },\n );\n\n observer.observe(target);\n\n return () => {\n observer.disconnect();\n };\n }, [enabled, hasMore, isLoadingMore]);\n\n return sentinelRef;\n}\n","import * as React from \"react\";\n\nexport function useDataTablePaginationClamp({\n enabled,\n maxPageIndex,\n onPageIndexChange,\n pageIndex,\n setLocalPageIndex,\n}: {\n enabled: boolean;\n maxPageIndex: number;\n onPageIndexChange?: (pageIndex: number) => void;\n pageIndex: number;\n setLocalPageIndex: (pageIndex: number) => void;\n}) {\n React.useEffect(() => {\n if (!enabled) {\n return;\n }\n\n if (pageIndex >= 0 && pageIndex <= maxPageIndex) {\n return;\n }\n\n const nextPageIndex = Math.min(Math.max(pageIndex, 0), maxPageIndex);\n setLocalPageIndex(nextPageIndex);\n onPageIndexChange?.(nextPageIndex);\n }, [enabled, maxPageIndex, onPageIndexChange, pageIndex, setLocalPageIndex]);\n}\n","import * as React from \"react\";\nimport {\n getCoreRowModel,\n getExpandedRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\";\nimport type {\n ColumnDef,\n ColumnFiltersState,\n ColumnOrderState,\n ColumnPinningState,\n ColumnSizingState,\n ExpandedState,\n FilterFnOption,\n OnChangeFn,\n PaginationState,\n Row,\n SortingState,\n Table as TanStackTable,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport type { DataTableProps } from \"../types\";\nimport {\n dataTableGlobalFilterFn,\n getColumnId,\n getDataTableLeafColumns,\n isUtilityColumnId,\n moveColumnInOrder,\n} from \"./data-table-utils\";\nimport { useDataTableInfiniteScroll } from \"./use-data-table-infinite-scroll\";\nimport { useDataTablePaginationClamp } from \"./use-data-table-pagination-clamp\";\n\nexport function useDataTableInstance({\n autoResetPageIndex,\n columnResizeMode,\n dir,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentColumnSizing,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentSorting,\n defaultColumn,\n effectiveColumnVisibility,\n enableColumnResizing,\n enableRowSelection,\n getRowCanExpand,\n globalFilterFn,\n globalFilterValue,\n hasNextPage,\n handleColumnFiltersChange,\n handleColumnOrderChange,\n handleColumnPinningChange,\n handleColumnVisibilityChange,\n handleExpandedChange,\n infiniteScroll,\n manualFiltering,\n manualPagination,\n manualSorting,\n onActionError,\n onPageIndexChange,\n onPageSizeChange,\n pageCount,\n pageIndex,\n pageSize,\n renderExpandedRow,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n shouldRenderInitialLoading,\n tableColumns,\n tableData,\n tableGetRowId,\n tableRef,\n totalRowCount,\n virtualization,\n}: {\n autoResetPageIndex: boolean;\n columnResizeMode: DataTableProps[\"columnResizeMode\"];\n dir: NonNullable[\"dir\"]>;\n currentColumnFilters: ColumnFiltersState;\n currentColumnOrder: ColumnOrderState;\n currentColumnPinning: ColumnPinningState;\n currentColumnSizing: ColumnSizingState;\n currentExpanded: ExpandedState;\n currentPagination: PaginationState;\n currentRowSelection: Record;\n currentSorting: SortingState;\n currentViewMode: \"table\" | \"card\";\n defaultColumn: Partial>;\n effectiveColumnVisibility: VisibilityState;\n enableColumnResizing: boolean;\n enableRowSelection: boolean;\n getRowCanExpand: DataTableProps[\"getRowCanExpand\"];\n globalFilterFn: FilterFnOption | undefined;\n globalFilterValue: string;\n hasNextPage?: DataTableProps[\"hasNextPage\"];\n handleColumnFiltersChange: OnChangeFn;\n handleColumnOrderChange: OnChangeFn;\n handleColumnPinningChange: OnChangeFn;\n handleColumnVisibilityChange: OnChangeFn;\n handleExpandedChange: OnChangeFn;\n infiniteScroll: DataTableProps[\"infiniteScroll\"];\n manualFiltering: boolean;\n manualPagination: boolean;\n manualSorting: boolean;\n onActionError?: DataTableProps[\"onActionError\"];\n onPageIndexChange: DataTableProps[\"onPageIndexChange\"];\n onPageSizeChange: DataTableProps[\"onPageSizeChange\"];\n pageCount: DataTableProps[\"pageCount\"];\n pageIndex: DataTableProps[\"pageIndex\"];\n pageSize: DataTableProps[\"pageSize\"];\n renderExpandedRow: DataTableProps[\"renderExpandedRow\"];\n setCurrentRowSelection: OnChangeFn>;\n setCurrentSorting: OnChangeFn;\n setLocalColumnSizing: OnChangeFn;\n setLocalPagination: React.Dispatch>;\n shouldRenderInitialLoading: boolean;\n tableColumns: Array>;\n tableData: Array;\n tableGetRowId: DataTableProps[\"getRowId\"];\n tableRef: React.RefObject | null>;\n tableScrollElement: HTMLElement | null;\n /**\n * @deprecated Filtering now runs through TanStack Table. Retained so\n * advanced 4.x hook callers remain source-compatible.\n */\n toolbarFilteredData?: Array;\n totalRowCount: DataTableProps[\"totalRowCount\"];\n virtualization: DataTableProps[\"virtualization\"];\n viewportHeight: number;\n}) {\n const generatedColumnIds = React.useMemo(() => {\n return getDataTableLeafColumns(\n tableColumns as DataTableProps[\"columns\"],\n ).map(({ column, index }) => getColumnId(column, index));\n }, [tableColumns]);\n\n const effectiveColumnOrder = React.useMemo(() => {\n const columnIds = generatedColumnIds;\n const dataColumnIds = columnIds.filter(\n (columnId) =>\n !isUtilityColumnId(columnId) && columnId !== \"__spacer__\",\n );\n const dataColumnIdSet = new Set(dataColumnIds);\n const orderedDataColumnIds = currentColumnOrder.filter((columnId) =>\n dataColumnIdSet.has(columnId),\n );\n const unorderedDataColumnIds = dataColumnIds.filter(\n (columnId) => !orderedDataColumnIds.includes(columnId),\n );\n\n return [\n ...columnIds.filter(\n (columnId) => columnId === \"__expand__\" || columnId === \"__select__\",\n ),\n ...orderedDataColumnIds,\n ...unorderedDataColumnIds,\n ...columnIds.filter((columnId) => columnId === \"__spacer__\"),\n ...columnIds.filter((columnId) => columnId === \"__actions__\"),\n ];\n }, [currentColumnOrder, generatedColumnIds]);\n\n const effectiveColumnPinning = React.useMemo(() => {\n const columnIdSet = new Set(generatedColumnIds);\n const dataColumnIdSet = new Set(\n generatedColumnIds.filter(\n (columnId) =>\n !isUtilityColumnId(columnId) && columnId !== \"__spacer__\",\n ),\n );\n const dataLeft = (currentColumnPinning.left ?? []).filter((columnId) =>\n dataColumnIdSet.has(columnId),\n );\n const dataRight = (currentColumnPinning.right ?? []).filter((columnId) =>\n dataColumnIdSet.has(columnId),\n );\n\n return {\n left: [\n ...[\"__expand__\", \"__select__\"].filter((columnId) =>\n columnIdSet.has(columnId),\n ),\n ...dataLeft,\n ],\n right: [\n ...dataRight,\n ...[\"__actions__\"].filter((columnId) => columnIdSet.has(columnId)),\n ],\n };\n }, [currentColumnPinning, generatedColumnIds]);\n\n const tableState = React.useMemo(\n () => ({\n sorting: currentSorting,\n pagination: currentPagination,\n rowSelection: currentRowSelection,\n columnVisibility: effectiveColumnVisibility,\n columnFilters: currentColumnFilters,\n globalFilter: globalFilterValue,\n expanded: currentExpanded,\n columnOrder: effectiveColumnOrder,\n columnPinning: effectiveColumnPinning,\n columnSizing: currentColumnSizing,\n }),\n [\n currentColumnFilters,\n currentColumnSizing,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentSorting,\n effectiveColumnVisibility,\n effectiveColumnOrder,\n effectiveColumnPinning,\n globalFilterValue,\n ],\n );\n\n const handlePaginationChange = React.useCallback<\n OnChangeFn\n >(\n (updater) => {\n const nextValue =\n typeof updater === \"function\" ? updater(currentPagination) : updater;\n\n if (pageIndex === undefined || pageSize === undefined) {\n setLocalPagination((current) => ({\n pageIndex:\n pageIndex === undefined ? nextValue.pageIndex : current.pageIndex,\n pageSize:\n pageSize === undefined ? nextValue.pageSize : current.pageSize,\n }));\n }\n\n if (nextValue.pageIndex !== currentPagination.pageIndex) {\n onPageIndexChange?.(nextValue.pageIndex);\n }\n if (nextValue.pageSize !== currentPagination.pageSize) {\n onPageSizeChange?.(nextValue.pageSize);\n }\n },\n [\n currentPagination,\n onPageIndexChange,\n onPageSizeChange,\n pageIndex,\n pageSize,\n setLocalPagination,\n ],\n );\n\n const handleColumnSizingChange = React.useCallback<\n OnChangeFn\n >(\n (updater) => {\n setLocalColumnSizing(updater);\n },\n [setLocalColumnSizing],\n );\n\n // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Table owns its instance functions.\n const table = useReactTable({\n data: tableData,\n columns: tableColumns,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: manualFiltering ? undefined : getFilteredRowModel(),\n getSortedRowModel: manualSorting ? undefined : getSortedRowModel(),\n getExpandedRowModel: renderExpandedRow ? getExpandedRowModel() : undefined,\n getPaginationRowModel:\n manualPagination || infiniteScroll?.enabled\n ? undefined\n : getPaginationRowModel(),\n enableRowSelection,\n enableMultiRowSelection: enableRowSelection,\n enableColumnResizing,\n columnResizeMode,\n columnResizeDirection: dir,\n getRowId: tableGetRowId,\n getRowCanExpand: renderExpandedRow\n ? (row) => getRowCanExpand?.(row.original) ?? true\n : undefined,\n globalFilterFn: globalFilterFn ?? dataTableGlobalFilterFn,\n getColumnCanGlobalFilter: (column) =>\n column.columnDef.enableGlobalFilter !== false &&\n typeof column.accessorFn === \"function\",\n manualSorting,\n manualFiltering,\n manualPagination: manualPagination || Boolean(infiniteScroll?.enabled),\n defaultColumn,\n autoResetPageIndex,\n state: tableState,\n onSortingChange: setCurrentSorting,\n onPaginationChange: handlePaginationChange,\n onRowSelectionChange: setCurrentRowSelection,\n onColumnVisibilityChange: handleColumnVisibilityChange,\n onColumnFiltersChange: handleColumnFiltersChange,\n onExpandedChange: handleExpandedChange,\n onColumnOrderChange: handleColumnOrderChange,\n onColumnPinningChange: handleColumnPinningChange,\n onColumnSizingChange: handleColumnSizingChange,\n });\n tableRef.current = table;\n\n const visibleLeafColumns = table.getVisibleLeafColumns();\n const reorderColumn = React.useCallback(\n (sourceColumnId: string, targetColumnId: string) => {\n if (sourceColumnId === targetColumnId) {\n return;\n }\n\n const defaultOrder = table\n .getAllLeafColumns()\n .map((column) => column.id)\n .filter((columnId) => !isUtilityColumnId(columnId));\n const nextOrder = moveColumnInOrder(\n currentColumnOrder.length ? currentColumnOrder : defaultOrder,\n sourceColumnId,\n targetColumnId,\n );\n handleColumnOrderChange(nextOrder);\n },\n [currentColumnOrder, handleColumnOrderChange, table],\n );\n\n const renderedRows = table.getRowModel().rows;\n const virtualizationConfig =\n typeof virtualization === \"object\" ? virtualization : undefined;\n const virtualRowsEnabled =\n virtualization === true || virtualizationConfig?.enabled === true;\n const fallbackRowCount = Math.max(\n 1,\n Math.floor(virtualizationConfig?.fallbackRowCount ?? 20),\n );\n const initialRowsToRender = virtualRowsEnabled\n ? renderedRows.slice(0, fallbackRowCount)\n : renderedRows;\n const rowsToRender = initialRowsToRender.map((row, rowIndex) => ({\n row,\n rowIndex,\n }));\n\n const usesManualRows = manualPagination || Boolean(infiniteScroll?.enabled);\n const derivedTotalRowCount = usesManualRows\n ? undefined\n : table.getFilteredRowModel().rows.length;\n const effectiveTotalRowCount = totalRowCount ?? derivedTotalRowCount;\n const isPageCountKnown =\n !usesManualRows || pageCount !== undefined || totalRowCount !== undefined;\n const footerTotalRowCount = effectiveTotalRowCount;\n const effectivePageCount = shouldRenderInitialLoading\n ? 1\n : (pageCount ??\n (effectiveTotalRowCount !== undefined\n ? Math.max(\n 1,\n Math.ceil(effectiveTotalRowCount / currentPagination.pageSize),\n )\n : usesManualRows\n ? currentPagination.pageIndex + (hasNextPage ? 2 : 1)\n : table.getPageCount()));\n const maxPageIndex = Math.max(0, effectivePageCount - 1);\n\n const setLocalPageIndex = React.useCallback(\n (nextPageIndex: number) => {\n if (pageIndex !== undefined) {\n return;\n }\n\n setLocalPagination((current) =>\n current.pageIndex === nextPageIndex\n ? current\n : { ...current, pageIndex: nextPageIndex },\n );\n },\n [pageIndex, setLocalPagination],\n );\n useDataTablePaginationClamp({\n enabled:\n !shouldRenderInitialLoading &&\n !infiniteScroll?.enabled &&\n isPageCountKnown,\n maxPageIndex,\n onPageIndexChange,\n pageIndex: currentPagination.pageIndex,\n setLocalPageIndex,\n });\n\n const handleFooterPageIndexChange = React.useCallback(\n (nextPageIndex: number) => {\n if (nextPageIndex === currentPagination.pageIndex) {\n return;\n }\n\n onPageIndexChange?.(nextPageIndex);\n if (pageIndex === undefined) {\n setLocalPagination((current) =>\n current.pageIndex === nextPageIndex\n ? current\n : { ...current, pageIndex: nextPageIndex },\n );\n }\n },\n [\n currentPagination.pageIndex,\n onPageIndexChange,\n pageIndex,\n setLocalPagination,\n ],\n );\n const handleFooterPageSizeChange = React.useCallback(\n (nextPageSize: number) => {\n if (currentPagination.pageIndex !== 0) {\n onPageIndexChange?.(0);\n }\n if (nextPageSize !== currentPagination.pageSize) {\n onPageSizeChange?.(nextPageSize);\n }\n if (pageSize === undefined) {\n setLocalPagination({\n pageIndex: 0,\n pageSize: nextPageSize,\n });\n }\n },\n [\n currentPagination.pageIndex,\n currentPagination.pageSize,\n onPageIndexChange,\n onPageSizeChange,\n pageSize,\n setLocalPagination,\n ],\n );\n\n const sentinelRef = useDataTableInfiniteScroll({\n enabled: Boolean(infiniteScroll?.enabled),\n hasMore: Boolean(infiniteScroll?.hasMore),\n isLoadingMore: infiniteScroll?.isLoadingMore,\n onLoadMore: () => infiniteScroll?.onLoadMore(),\n onError: (error) => {\n onActionError?.({\n error,\n source: \"infiniteScroll\",\n });\n },\n });\n\n return {\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n isPageCountKnown,\n renderedRows,\n reorderColumn,\n rowsToRender,\n sentinelRef,\n table,\n virtualPaddingBottom: 0,\n virtualPaddingTop: 0,\n visibleLeafColumns,\n };\n}\n\nexport type DataTableRowsToRender = Array<{\n row: Row;\n rowIndex: number;\n}>;\n","import * as React from \"react\";\nimport type { Updater } from \"@tanstack/react-table\";\n\nexport function useControllableState({\n defaultValue,\n onChange,\n value,\n}: {\n defaultValue: T | (() => T);\n onChange?: (value: T) => void;\n value: T | undefined;\n}) {\n const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue);\n const currentValue = value ?? uncontrolledValue;\n const currentValueRef = React.useRef(currentValue);\n\n React.useEffect(() => {\n currentValueRef.current = currentValue;\n }, [currentValue]);\n\n const setValue = React.useCallback(\n (updater: Updater) => {\n const nextValue =\n typeof updater === \"function\"\n ? (updater as (current: T) => T)(currentValueRef.current)\n : updater;\n currentValueRef.current = nextValue;\n\n onChange?.(nextValue);\n\n if (value === undefined) {\n setUncontrolledValue(nextValue);\n }\n },\n [onChange, value],\n );\n\n return [currentValue, setValue] as const;\n}\n","import * as React from \"react\";\nimport type {\n DataTableColumnPrefs,\n DataTableDensity,\n DataTablePersistenceConfig,\n DataTablePersistencePayload,\n DataTablePersistenceSlice,\n DataTablePersistenceStorage,\n} from \"../types\";\n\nconst STORAGE_PREFIX = \"data-table-pro:column-prefs:\";\nconst DEFAULT_VERSION = 1;\nconst ALL_SLICES: Array = [\n \"visibility\",\n \"sizing\",\n \"order\",\n \"pinning\",\n \"density\",\n];\n\nexport function readDataTableColumnPrefs(\n input: string | DataTablePersistenceConfig | undefined,\n): DataTableColumnPrefs {\n const config = resolvePersistenceConfig(input);\n if (!config) {\n return {};\n }\n\n const storage = resolveStorage(config);\n if (!storage) {\n return {};\n }\n const storageKey = getStorageKey(config.key);\n\n let value: string | null;\n try {\n value = storage.getItem(storageKey);\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return {};\n }\n if (!value) {\n return {};\n }\n\n let parsed: unknown;\n try {\n parsed = (config.deserialize ?? JSON.parse)(value);\n } catch (error) {\n config.onError?.({ error, operation: \"deserialize\" });\n return {};\n }\n\n const targetVersion = config.version ?? DEFAULT_VERSION;\n let candidate: unknown;\n if (isPersistencePayload(parsed)) {\n if (parsed.version === targetVersion) {\n candidate = parsed.state;\n } else if (config.migrate) {\n try {\n candidate = config.migrate(\n {\n version: parsed.version,\n state: parsed.state,\n },\n targetVersion,\n );\n } catch (error) {\n config.onError?.({ error, operation: \"migrate\" });\n return {};\n }\n } else {\n return {};\n }\n } else {\n // Raw objects are the legacy columnPrefsKey format. They are validated and\n // upgraded to a versioned envelope on the next successful write.\n candidate = parsed;\n }\n\n return selectPersistenceSlices(\n validateDataTableColumnPrefs(candidate),\n config.slices,\n );\n}\n\nexport function clearDataTableColumnPrefs(\n input: string | DataTablePersistenceConfig | undefined,\n) {\n const config = resolvePersistenceConfig(input);\n if (!config) {\n return false;\n }\n\n const storage = resolveStorage(config);\n if (!storage) {\n return false;\n }\n\n try {\n storage.removeItem(getStorageKey(config.key));\n return true;\n } catch (error) {\n config.onError?.({ error, operation: \"remove\" });\n return false;\n }\n}\n\nexport function usePersistDataTableColumnPrefs({\n key,\n persistence,\n prefs,\n}: {\n key?: string;\n persistence?: DataTablePersistenceConfig;\n prefs: DataTableColumnPrefs;\n}) {\n const config = persistence ?? resolvePersistenceConfig(key);\n const storage = config ? resolveStorage(config) : undefined;\n const storageKey = config ? getStorageKey(config.key) : undefined;\n const version = config?.version ?? DEFAULT_VERSION;\n const debounceMs = Math.max(0, config?.debounceMs ?? 100);\n const selectedState = selectPersistenceSlices(prefs, config?.slices);\n const serialized = React.useMemo(() => {\n if (!config) {\n return { value: undefined };\n }\n\n try {\n const payload: DataTablePersistencePayload = {\n version,\n state: selectedState,\n };\n return {\n value: (config.serialize ?? JSON.stringify)(payload),\n };\n } catch (error) {\n return { error, value: undefined };\n }\n }, [config, selectedState, version]);\n const onErrorEvent = React.useEffectEvent(\n (\n error: unknown,\n operation: \"serialize\" | \"write\",\n ) => {\n config?.onError?.({ error, operation });\n },\n );\n\n React.useEffect(() => {\n if (serialized.error !== undefined) {\n onErrorEvent(serialized.error, \"serialize\");\n }\n }, [serialized.error]);\n\n React.useEffect(() => {\n if (!storage || !storageKey || serialized.value === undefined) {\n return;\n }\n\n const write = () => {\n try {\n if (storage.getItem(storageKey) === serialized.value) {\n return;\n }\n storage.setItem(storageKey, serialized.value);\n } catch (error) {\n onErrorEvent(error, \"write\");\n }\n };\n\n if (debounceMs === 0) {\n write();\n return;\n }\n\n const timeout = globalThis.setTimeout(write, debounceMs);\n return () => {\n globalThis.clearTimeout(timeout);\n };\n }, [debounceMs, serialized.value, storage, storageKey]);\n}\n\nfunction resolvePersistenceConfig(\n input: string | DataTablePersistenceConfig | undefined,\n): DataTablePersistenceConfig | undefined {\n if (!input) {\n return undefined;\n }\n\n return typeof input === \"string\" ? { key: input } : input;\n}\n\nfunction resolveStorage(\n config: DataTablePersistenceConfig,\n): DataTablePersistenceStorage | undefined {\n if (config.storage) {\n return config.storage;\n }\n\n if (typeof window === \"undefined\") {\n return undefined;\n }\n\n try {\n return window.localStorage;\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return undefined;\n }\n}\n\nfunction getStorageKey(key: string) {\n return `${STORAGE_PREFIX}${key}`;\n}\n\nfunction isPersistencePayload(\n value: unknown,\n): value is { version: unknown; state: unknown } {\n return (\n isRecord(value) &&\n Object.prototype.hasOwnProperty.call(value, \"version\") &&\n Object.prototype.hasOwnProperty.call(value, \"state\")\n );\n}\n\nfunction selectPersistenceSlices(\n prefs: DataTableColumnPrefs,\n slices: Array | undefined,\n) {\n const selected = new Set(slices ?? ALL_SLICES);\n const result: DataTableColumnPrefs = {};\n\n for (const slice of ALL_SLICES) {\n if (selected.has(slice) && prefs[slice] !== undefined) {\n Object.assign(result, { [slice]: prefs[slice] });\n }\n }\n\n return result;\n}\n\nfunction validateDataTableColumnPrefs(value: unknown): DataTableColumnPrefs {\n if (!isRecord(value)) {\n return {};\n }\n\n const prefs: DataTableColumnPrefs = {};\n const visibility = validateBooleanRecord(value.visibility);\n if (visibility) {\n prefs.visibility = visibility;\n }\n const sizing = validateSizingRecord(value.sizing);\n if (sizing) {\n prefs.sizing = sizing;\n }\n const order = validateStringArray(value.order);\n if (order) {\n prefs.order = order;\n }\n if (isRecord(value.pinning)) {\n const left = validateStringArray(value.pinning.left) ?? [];\n const right = validateStringArray(value.pinning.right) ?? [];\n prefs.pinning = { left, right };\n }\n if (isDataTableDensity(value.density)) {\n prefs.density = value.density;\n }\n\n return prefs;\n}\n\nfunction validateBooleanRecord(value: unknown) {\n if (!isRecord(value)) {\n return undefined;\n }\n\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, boolean] => typeof entry[1] === \"boolean\",\n ),\n );\n}\n\nfunction validateSizingRecord(value: unknown) {\n if (!isRecord(value)) {\n return undefined;\n }\n\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, number] =>\n typeof entry[1] === \"number\" &&\n Number.isFinite(entry[1]) &&\n entry[1] >= 0,\n ),\n );\n}\n\nfunction validateStringArray(value: unknown) {\n if (!Array.isArray(value)) {\n return undefined;\n }\n\n return value.filter((item): item is string => typeof item === \"string\");\n}\n\nfunction isDataTableDensity(value: unknown): value is DataTableDensity {\n return (\n value === \"compact\" ||\n value === \"comfortable\" ||\n value === \"spacious\"\n );\n}\n\nfunction isRecord(value: unknown): value is Record {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n","import * as React from \"react\";\nimport { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS } from \"../types\";\n\nconst BREAKPOINT_WIDTHS = Object.values(DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS)\n .slice()\n .sort((first, second) => first - second);\n\nexport function useDataTableContainerWidth(\n containerRef: React.RefObject,\n) {\n const widthRef = React.useRef(0);\n const [width, setWidth] = React.useState(0);\n\n React.useEffect(() => {\n const element = containerRef.current;\n if (!element) {\n return;\n }\n\n const updateWidth = (inlineSize = element.clientWidth) => {\n const nextWidth = quantizeDataTableContainerWidth(inlineSize);\n if (nextWidth === widthRef.current) {\n return;\n }\n\n widthRef.current = nextWidth;\n setWidth(nextWidth);\n };\n\n updateWidth();\n\n if (typeof ResizeObserver === \"undefined\") {\n return;\n }\n\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n updateWidth(entry ? getResizeObserverInlineSize(entry) : undefined);\n });\n\n observer.observe(element);\n\n return () => {\n observer.disconnect();\n };\n }, [containerRef]);\n\n return width;\n}\n\nexport function quantizeDataTableContainerWidth(width: number) {\n if (width <= 0) {\n return 0;\n }\n\n let bucket = 1;\n for (const breakpointWidth of BREAKPOINT_WIDTHS) {\n if (width < breakpointWidth) {\n break;\n }\n bucket = breakpointWidth;\n }\n\n return bucket;\n}\n\nfunction getResizeObserverInlineSize(entry: ResizeObserverEntry) {\n const contentBoxSize: unknown = entry.contentBoxSize;\n const size: unknown = Array.isArray(contentBoxSize)\n ? contentBoxSize[0]\n : contentBoxSize;\n const inlineSize = getInlineSize(size);\n\n return inlineSize ?? entry.contentRect.width;\n}\n\nfunction getInlineSize(value: unknown) {\n if (typeof value !== \"object\" || value === null) {\n return undefined;\n }\n\n const inlineSize = (value as { inlineSize?: unknown }).inlineSize;\n return typeof inlineSize === \"number\" ? inlineSize : undefined;\n}\n","import * as React from \"react\";\nimport type {\n ColumnFiltersState,\n ColumnOrderState,\n ColumnPinningState,\n ColumnSizingState,\n ExpandedState,\n PaginationState,\n SortingState,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableDensity,\n DataTableLabels,\n DataTableProps,\n} from \"../types\";\nimport {\n createDataTableLoadingRows,\n getColumnId,\n getDataTableLeafColumns,\n getDataTableLoadingRowId,\n getInitialColumnPinning,\n isDataTableLoadingRow,\n} from \"./data-table-utils\";\nimport {\n readDataTableColumnPrefs,\n usePersistDataTableColumnPrefs,\n} from \"./use-data-table-column-prefs\";\nimport { useControllableState } from \"./use-controllable-state\";\nimport { useDataTableContainerWidth } from \"./use-data-table-container-width\";\nimport { isHiddenAtContainerWidth, isRowVisible } from \"../types\";\n\nexport function useDataTableState({\n columnFilters,\n columnOrder,\n columnPinning,\n columnSizing,\n columnPrefsKey,\n persistence,\n columnVisibility,\n columns,\n data,\n density,\n enableRowSelection,\n enableToolbarQueryFiltering,\n expanded,\n getRowId,\n hiddenRows,\n initialState,\n isLoading,\n loadingRowCount,\n manualFiltering,\n onColumnFiltersChange,\n onColumnOrderChange,\n onColumnPinningChange,\n onColumnSizingChange,\n onColumnVisibilityChange,\n onDensityChange,\n onExpandedChange,\n onPageIndexChange,\n onRowSelectionChange,\n onShowHiddenRowsChange,\n onSortingChange,\n onToolbarQueryValueChange,\n onViewModeChange,\n pageIndex,\n pageSize,\n resolvedLabels,\n rowSelection,\n rowsPerPageOptions,\n selectionActions,\n showHiddenRows,\n sorting,\n toolbarQueryDebounceMs,\n toolbarQueryPlaceholder,\n toolbarQueryValue,\n viewMode,\n containerRef,\n}: {\n columnFilters: DataTableProps[\"columnFilters\"];\n columnOrder: DataTableProps[\"columnOrder\"];\n columnPinning: DataTableProps[\"columnPinning\"];\n columnSizing?: DataTableProps[\"columnSizing\"];\n columnPrefsKey: DataTableProps[\"columnPrefsKey\"];\n persistence?: DataTableProps[\"persistence\"];\n columnVisibility: DataTableProps[\"columnVisibility\"];\n columns: DataTableProps[\"columns\"];\n data: DataTableProps[\"data\"];\n density: DataTableProps[\"density\"];\n enableRowSelection: boolean;\n enableToolbarQueryFiltering: boolean;\n expanded: DataTableProps[\"expanded\"];\n getRowId: DataTableProps[\"getRowId\"];\n hiddenRows: DataTableProps[\"hiddenRows\"];\n initialState?: DataTableProps[\"initialState\"];\n isLoading: boolean;\n loadingRowCount: DataTableProps[\"loadingRowCount\"];\n manualFiltering: boolean;\n onColumnFiltersChange: DataTableProps[\"onColumnFiltersChange\"];\n onColumnOrderChange: DataTableProps[\"onColumnOrderChange\"];\n onColumnPinningChange: DataTableProps[\"onColumnPinningChange\"];\n onColumnSizingChange?: DataTableProps[\"onColumnSizingChange\"];\n onColumnVisibilityChange: DataTableProps[\"onColumnVisibilityChange\"];\n onDensityChange: DataTableProps[\"onDensityChange\"];\n onExpandedChange: DataTableProps[\"onExpandedChange\"];\n onPageIndexChange: DataTableProps[\"onPageIndexChange\"];\n onRowSelectionChange: DataTableProps[\"onRowSelectionChange\"];\n onShowHiddenRowsChange: DataTableProps[\"onShowHiddenRowsChange\"];\n onSortingChange: DataTableProps[\"onSortingChange\"];\n onToolbarQueryValueChange: DataTableProps[\"onToolbarQueryValueChange\"];\n onViewModeChange: DataTableProps[\"onViewModeChange\"];\n pageIndex: DataTableProps[\"pageIndex\"];\n pageSize: DataTableProps[\"pageSize\"];\n resolvedLabels: DataTableLabels;\n rowSelection: DataTableProps[\"rowSelection\"];\n rowsPerPageOptions: Array;\n selectionActions: DataTableProps[\"selectionActions\"];\n showHiddenRows: DataTableProps[\"showHiddenRows\"];\n sorting: DataTableProps[\"sorting\"];\n toolbarQueryDebounceMs: DataTableProps[\"toolbarQueryDebounceMs\"];\n toolbarQueryPlaceholder: DataTableProps[\"toolbarQueryPlaceholder\"];\n toolbarQueryValue: DataTableProps[\"toolbarQueryValue\"];\n viewMode: DataTableProps[\"viewMode\"];\n containerRef: React.RefObject;\n}) {\n const persistenceConfig = React.useMemo(\n () => persistence ?? (columnPrefsKey ? { key: columnPrefsKey } : undefined),\n [columnPrefsKey, persistence],\n );\n const persistedColumnPrefs = React.useMemo(\n () => readDataTableColumnPrefs(persistenceConfig),\n [persistenceConfig],\n );\n const [localPagination, setLocalPagination] =\n React.useState({\n pageIndex: initialState?.pagination?.pageIndex ?? 0,\n pageSize:\n initialState?.pagination?.pageSize ??\n rowsPerPageOptions[0] ??\n 20,\n });\n const [currentSorting, setCurrentSorting] =\n useControllableState({\n value: sorting,\n onChange: onSortingChange,\n defaultValue: () => initialState?.sorting ?? [],\n });\n const [currentRowSelection, setCurrentRowSelection] = useControllableState<\n Record\n >({\n value: rowSelection,\n onChange: onRowSelectionChange,\n defaultValue: () => initialState?.rowSelection ?? {},\n });\n const [currentColumnVisibility, setCurrentColumnVisibility] =\n useControllableState({\n value: columnVisibility,\n onChange: onColumnVisibilityChange,\n defaultValue: () =>\n initialState?.columnVisibility ??\n persistedColumnPrefs.visibility ??\n {},\n });\n const [currentColumnFilters, setCurrentColumnFilters] =\n useControllableState({\n value: columnFilters,\n onChange: onColumnFiltersChange,\n defaultValue: () => initialState?.columnFilters ?? [],\n });\n const [currentExpanded, setCurrentExpanded] =\n useControllableState({\n value: expanded,\n onChange: onExpandedChange,\n defaultValue: () => initialState?.expanded ?? {},\n });\n const [currentColumnOrder, setCurrentColumnOrder] =\n useControllableState({\n value: columnOrder,\n onChange: onColumnOrderChange,\n defaultValue: () =>\n initialState?.columnOrder ?? persistedColumnPrefs.order ?? [],\n });\n const [currentColumnPinning, setCurrentColumnPinning] =\n useControllableState({\n value: columnPinning,\n onChange: onColumnPinningChange,\n defaultValue: () =>\n initialState?.columnPinning ??\n persistedColumnPrefs.pinning ??\n getInitialColumnPinning(columns),\n });\n const [currentColumnSizing, setCurrentColumnSizing] =\n useControllableState({\n value: columnSizing,\n onChange: onColumnSizingChange,\n defaultValue: () =>\n initialState?.columnSizing ?? persistedColumnPrefs.sizing ?? {},\n });\n const [currentViewMode, setCurrentViewMode] = useControllableState<\n \"table\" | \"card\"\n >({\n value: viewMode,\n onChange: onViewModeChange,\n defaultValue: () => initialState?.viewMode ?? \"table\",\n });\n const [currentShowHiddenRows, setCurrentShowHiddenRows] =\n useControllableState({\n value: showHiddenRows,\n onChange: onShowHiddenRowsChange,\n defaultValue: () => initialState?.showHiddenRows ?? false,\n });\n const [currentDensity, setCurrentDensity] =\n useControllableState({\n value: density,\n onChange: onDensityChange,\n defaultValue: () =>\n initialState?.density ??\n persistedColumnPrefs.density ??\n \"comfortable\",\n });\n const resolvedToolbarQueryValue =\n toolbarQueryValue ?? initialState?.globalFilter ?? \"\";\n const resolvedToolbarQueryPlaceholder =\n toolbarQueryPlaceholder ?? resolvedLabels.searchPlaceholder;\n const resolvedToolbarQueryDebounceMs = toolbarQueryDebounceMs ?? 250;\n const [localSearchValue, setLocalSearchValue] = React.useState(\n resolvedToolbarQueryValue,\n );\n const containerWidth = useDataTableContainerWidth(containerRef);\n const hasOnSearchValueChange = Boolean(onToolbarQueryValueChange);\n const lastReportedSearchValueRef = React.useRef(resolvedToolbarQueryValue);\n const onToolbarQueryValueChangeEvent = React.useEffectEvent(\n (value: string) => {\n lastReportedSearchValueRef.current = value;\n onToolbarQueryValueChange?.(value);\n },\n );\n\n React.useEffect(() => {\n lastReportedSearchValueRef.current = resolvedToolbarQueryValue;\n // A controlled query change must replace any pending debounced draft.\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setLocalSearchValue(resolvedToolbarQueryValue);\n }, [resolvedToolbarQueryValue]);\n\n React.useEffect(() => {\n if (!hasOnSearchValueChange) {\n return;\n }\n\n if (localSearchValue === resolvedToolbarQueryValue) {\n return;\n }\n\n if (localSearchValue === lastReportedSearchValueRef.current) {\n return;\n }\n\n const timeout = window.setTimeout(() => {\n onToolbarQueryValueChangeEvent(localSearchValue);\n }, resolvedToolbarQueryDebounceMs);\n\n return () => {\n window.clearTimeout(timeout);\n };\n }, [\n hasOnSearchValueChange,\n localSearchValue,\n resolvedToolbarQueryDebounceMs,\n resolvedToolbarQueryValue,\n ]);\n\n const currentPagination = React.useMemo(\n () => ({\n pageIndex: pageIndex ?? localPagination.pageIndex,\n pageSize: pageSize ?? localPagination.pageSize,\n }),\n [\n localPagination.pageIndex,\n localPagination.pageSize,\n pageIndex,\n pageSize,\n ],\n );\n const resolvedLoadingRowCount = Math.max(\n 1,\n loadingRowCount ?? Math.min(5, currentPagination.pageSize),\n );\n const globalFilterValue = enableToolbarQueryFiltering\n ? localSearchValue\n : \"\";\n const handleViewModeChange = React.useCallback(\n (nextViewMode: \"table\" | \"card\") => {\n setCurrentViewMode(nextViewMode);\n },\n [setCurrentViewMode],\n );\n const handleShowHiddenRowsChange = React.useCallback(\n (nextShowHiddenRows: boolean) => {\n setCurrentShowHiddenRows(nextShowHiddenRows);\n },\n [setCurrentShowHiddenRows],\n );\n const handleDensityChange = React.useCallback(\n (nextDensity: DataTableDensity) => {\n setCurrentDensity(nextDensity);\n },\n [setCurrentDensity],\n );\n const resetPageIndexForFilterChange = React.useCallback(() => {\n onPageIndexChange?.(0);\n if (pageIndex === undefined) {\n setLocalPagination((current) =>\n current.pageIndex === 0 ? current : { ...current, pageIndex: 0 },\n );\n }\n }, [onPageIndexChange, pageIndex]);\n const lastFilterStateRef = React.useRef({\n columnFilters: currentColumnFilters,\n globalFilterValue,\n });\n\n React.useEffect(() => {\n const previous = lastFilterStateRef.current;\n const filtersChanged = previous.columnFilters !== currentColumnFilters;\n const globalFilterChanged =\n previous.globalFilterValue !== globalFilterValue;\n lastFilterStateRef.current = {\n columnFilters: currentColumnFilters,\n globalFilterValue,\n };\n\n if (manualFiltering) {\n return;\n }\n\n if (!filtersChanged && !globalFilterChanged) {\n return;\n }\n\n resetPageIndexForFilterChange();\n }, [\n currentColumnFilters,\n globalFilterValue,\n manualFiltering,\n resetPageIndexForFilterChange,\n ]);\n\n usePersistDataTableColumnPrefs({\n persistence: persistenceConfig,\n prefs: {\n visibility: columnVisibility ? undefined : currentColumnVisibility,\n sizing:\n columnSizing === undefined ? currentColumnSizing : undefined,\n order: columnOrder ? undefined : currentColumnOrder,\n pinning: columnPinning ? undefined : currentColumnPinning,\n density: density ? undefined : currentDensity,\n },\n });\n const responsiveColumnVisibility = React.useMemo(() => {\n return getDataTableLeafColumns(columns).reduce(\n (visibility, { column, index }) => {\n const columnId = getColumnId(column, index);\n if (isHiddenAtContainerWidth(column.meta?.hideOn, containerWidth)) {\n visibility[columnId] = false;\n }\n return visibility;\n },\n {},\n );\n }, [columns, containerWidth]);\n const effectiveColumnVisibility = React.useMemo(() => {\n return {\n ...currentColumnVisibility,\n ...responsiveColumnVisibility,\n };\n }, [currentColumnVisibility, responsiveColumnVisibility]);\n const visibleData = React.useMemo(\n () =>\n data.filter((row) =>\n isRowVisible(row, hiddenRows, currentShowHiddenRows),\n ),\n [currentShowHiddenRows, data, hiddenRows],\n );\n const shouldRenderInitialLoading = isLoading && visibleData.length === 0;\n const loadingRows = React.useMemo(\n () => createDataTableLoadingRows(resolvedLoadingRowCount),\n [resolvedLoadingRowCount],\n );\n const tableData = shouldRenderInitialLoading\n ? loadingRows\n : visibleData;\n const tableGetRowId = React.useCallback(\n (row: TData, index: number) => {\n if (isDataTableLoadingRow(row)) {\n return getDataTableLoadingRowId(index);\n }\n\n return getRowId(row, index);\n },\n [getRowId],\n );\n const shouldResolveSelectedRows =\n enableRowSelection ||\n (selectionActions?.length ?? 0) > 0 ||\n Object.values(currentRowSelection).some(Boolean);\n const rowById = React.useMemo(() => {\n if (!shouldResolveSelectedRows) {\n return new Map();\n }\n\n return new Map(\n visibleData.map((row, index) => [getRowId(row, index), row]),\n );\n }, [getRowId, shouldResolveSelectedRows, visibleData]);\n const selectedRows = React.useMemo(() => {\n if (!shouldResolveSelectedRows) {\n return [];\n }\n\n return Object.entries(currentRowSelection)\n .filter(([, selected]) => selected)\n .map(([rowId]) => rowById.get(rowId))\n .filter((row): row is TData => Boolean(row));\n }, [currentRowSelection, rowById, shouldResolveSelectedRows]);\n\n return {\n containerWidth,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n effectiveColumnVisibility,\n globalFilterValue,\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n localSearchValue,\n resolvedLoadingRowCount,\n resolvedToolbarQueryPlaceholder,\n selectedRows,\n setCurrentColumnFilters,\n setCurrentColumnOrder,\n setCurrentColumnPinning,\n setCurrentColumnVisibility,\n setCurrentExpanded,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing: setCurrentColumnSizing,\n setLocalPagination,\n setLocalSearchValue,\n shouldRenderInitialLoading,\n tableData,\n tableGetRowId,\n /**\n * @deprecated Read the filtered TanStack row model from the table\n * instance. This alias remains for advanced 4.x callers.\n */\n toolbarFilteredData: visibleData,\n visibleData,\n };\n}\n","import * as React from \"react\";\nimport type { Column, ColumnSizingState } from \"@tanstack/react-table\";\nimport type { DataTableColumnDef } from \"../types\";\nimport type { DataTableUiClassNames } from \"../ui-kit\";\nimport {\n UTILITY_COLUMN_SIZE,\n getColumnId,\n getConfiguredColumnMinWidth,\n getDataTableLeafColumns,\n getFixedSide,\n getPinnedColumnClassName,\n isUtilityColumnId,\n} from \"./data-table-utils\";\n\ntype ColumnLayoutMode = \"fill\" | \"fit\";\n\nexport type DataTableColumnLayout = {\n cellStyle: React.CSSProperties | undefined;\n colStyle: React.CSSProperties | undefined;\n fixedSide: \"left\" | \"right\" | false | undefined;\n headerStyle: React.CSSProperties | undefined;\n isActionsColumn: boolean;\n isExpansionColumn: boolean;\n isSelectionColumn: boolean;\n isSpacerColumn: boolean;\n isUtilityColumn: boolean;\n pinnedClassName: string | undefined;\n utilityClassName: string | undefined;\n};\n\nconst EMPTY_COLUMN_LAYOUT: DataTableColumnLayout = {\n cellStyle: undefined,\n colStyle: undefined,\n fixedSide: undefined,\n headerStyle: undefined,\n isActionsColumn: false,\n isExpansionColumn: false,\n isSelectionColumn: false,\n isSpacerColumn: false,\n isUtilityColumn: false,\n pinnedClassName: undefined,\n utilityClassName: undefined,\n};\n\nexport function useColumnLayout({\n columns,\n columnSizing,\n editableRows,\n enableRowSelection,\n hasRowActions,\n hasRowExpansion,\n layoutMode,\n uiClassNames,\n visibleLeafColumns,\n}: {\n columns: Array>;\n columnSizing: ColumnSizingState;\n editableRows: boolean;\n enableRowSelection: boolean;\n hasRowActions: boolean;\n hasRowExpansion: boolean;\n layoutMode: ColumnLayoutMode;\n uiClassNames: DataTableUiClassNames;\n visibleLeafColumns: Array>;\n}) {\n const explicitlySizedColumnIds = React.useMemo(() => {\n const ids = new Set();\n\n for (const { column, index } of getDataTableLeafColumns(columns)) {\n if (Object.prototype.hasOwnProperty.call(column, \"size\")) {\n ids.add(getColumnId(column, index));\n }\n }\n\n if (enableRowSelection) {\n ids.add(\"__select__\");\n }\n\n if (hasRowExpansion) {\n ids.add(\"__expand__\");\n }\n\n if (hasRowActions || editableRows) {\n ids.add(\"__actions__\");\n }\n\n return ids;\n }, [\n columns,\n editableRows,\n enableRowSelection,\n hasRowActions,\n hasRowExpansion,\n ]);\n\n const minimumColumnWidths = React.useMemo(() => {\n const widths = new Map();\n\n for (const { column, index } of getDataTableLeafColumns(columns)) {\n const configuredMinWidth = getConfiguredColumnMinWidth(column);\n\n if (configuredMinWidth !== undefined) {\n widths.set(getColumnId(column, index), configuredMinWidth);\n }\n }\n\n return widths;\n }, [columns]);\n\n const pinnedColumns = React.useMemo(() => {\n const left = new Map();\n const right = new Map();\n\n let leftOffset = 0;\n for (const column of visibleLeafColumns) {\n if (getFixedSide(column) === \"left\") {\n left.set(column.id, leftOffset);\n leftOffset += getColumnLayoutSize(column);\n }\n }\n\n let rightOffset = 0;\n for (const column of [...visibleLeafColumns].reverse()) {\n if (getFixedSide(column) === \"right\") {\n right.set(column.id, rightOffset);\n rightOffset += getColumnLayoutSize(column);\n }\n }\n\n return { left, right };\n }, [visibleLeafColumns]);\n\n const fillColumnId = React.useMemo(() => {\n if (layoutMode !== \"fill\") {\n return undefined;\n }\n\n const dataColumns = visibleLeafColumns.filter(\n (column) => !isUtilityColumnId(column.id),\n );\n\n if (!dataColumns.length) {\n return undefined;\n }\n\n const allDataColumnsAreFixed = dataColumns.every(\n (column) =>\n explicitlySizedColumnIds.has(column.id) ||\n Object.prototype.hasOwnProperty.call(columnSizing, column.id),\n );\n\n return allDataColumnsAreFixed\n ? dataColumns[dataColumns.length - 1]?.id\n : undefined;\n }, [\n columnSizing,\n explicitlySizedColumnIds,\n layoutMode,\n visibleLeafColumns,\n ]);\n\n const fixedWidthColumnIds = React.useMemo(() => {\n const ids = new Set([\n ...explicitlySizedColumnIds,\n ...Object.keys(columnSizing),\n ]);\n\n if (fillColumnId) {\n ids.delete(fillColumnId);\n }\n\n return ids;\n }, [columnSizing, explicitlySizedColumnIds, fillColumnId]);\n\n const columnLayouts = React.useMemo(() => {\n const layouts = new Map();\n\n for (const column of visibleLeafColumns) {\n const isSelectionColumn = column.id === \"__select__\";\n const isExpansionColumn = column.id === \"__expand__\";\n const isActionsColumn = column.id === \"__actions__\";\n const isUtilityColumn =\n isSelectionColumn || isExpansionColumn || isActionsColumn;\n const isSpacerColumn = column.id === \"__spacer__\";\n const configuredMinWidth = minimumColumnWidths.get(column.id);\n const isFlexibleFillColumn = column.id === fillColumnId;\n const columnMinWidth =\n configuredMinWidth ??\n (isFlexibleFillColumn ? column.getSize() : undefined);\n const shouldFixWidth =\n !isSpacerColumn &&\n (layoutMode === \"fit\" ||\n isUtilityColumn ||\n fixedWidthColumnIds.has(column.id));\n const baseStyle =\n shouldFixWidth || columnMinWidth !== undefined\n ? {\n width: shouldFixWidth\n ? isUtilityColumn\n ? UTILITY_COLUMN_SIZE\n : column.getSize()\n : undefined,\n minWidth: isUtilityColumn\n ? UTILITY_COLUMN_SIZE\n : shouldFixWidth\n ? column.getSize()\n : columnMinWidth,\n maxWidth: shouldFixWidth\n ? isUtilityColumn\n ? UTILITY_COLUMN_SIZE\n : column.getSize()\n : undefined,\n }\n : undefined;\n const fixedSide = getFixedSide(column);\n const pinnedStyle = fixedSide\n ? {\n left:\n fixedSide === \"left\" ? pinnedColumns.left.get(column.id) : undefined,\n right:\n fixedSide === \"right\"\n ? pinnedColumns.right.get(column.id)\n : undefined,\n }\n : undefined;\n const cellStyle =\n baseStyle || pinnedStyle ? { ...baseStyle, ...pinnedStyle } : undefined;\n\n layouts.set(column.id, {\n cellStyle,\n colStyle: baseStyle,\n fixedSide,\n headerStyle: cellStyle,\n isActionsColumn,\n isExpansionColumn,\n isSelectionColumn,\n isSpacerColumn,\n isUtilityColumn,\n pinnedClassName: fixedSide\n ? getPinnedColumnClassName(fixedSide, uiClassNames, {\n isUtilityColumn,\n })\n : undefined,\n utilityClassName: isUtilityColumn\n ? \"w-[50px] max-w-[50px] min-w-[50px] px-0\"\n : undefined,\n });\n }\n\n return layouts;\n }, [\n fillColumnId,\n fixedWidthColumnIds,\n layoutMode,\n minimumColumnWidths,\n pinnedColumns,\n uiClassNames,\n visibleLeafColumns,\n ]);\n\n const fillMinWidth = React.useMemo(() => {\n return visibleLeafColumns.reduce((total, column) => {\n const layout = columnLayouts.get(column.id);\n const configuredMinWidth = minimumColumnWidths.get(column.id);\n const isFlexibleFillColumn = column.id === fillColumnId;\n\n if (layout?.isUtilityColumn) {\n return total + UTILITY_COLUMN_SIZE;\n }\n\n if (fixedWidthColumnIds.has(column.id)) {\n return total + column.getSize();\n }\n\n return (\n total +\n (configuredMinWidth ?? (isFlexibleFillColumn ? column.getSize() : 0))\n );\n }, 0);\n }, [\n columnLayouts,\n fillColumnId,\n fixedWidthColumnIds,\n minimumColumnWidths,\n visibleLeafColumns,\n ]);\n\n const getColumnLayout = React.useCallback(\n (columnId: string) => columnLayouts.get(columnId) ?? EMPTY_COLUMN_LAYOUT,\n [columnLayouts],\n );\n\n return {\n columnLayouts,\n explicitlySizedColumnIds,\n fillMinWidth,\n getColumnLayout,\n };\n}\n\nfunction getColumnLayoutSize(column: Column) {\n return isUtilityColumnId(column.id) ? UTILITY_COLUMN_SIZE : column.getSize();\n}\n","import * as React from \"react\";\nimport type { Row } from \"@tanstack/react-table\";\nimport type {\n DataTableCardRendererProps,\n DataTableCardSizing,\n DataTableEditableRowsConfig,\n DataTableExpandedRowProps,\n DataTableLabels,\n DataTableProps,\n DataTableRowAction,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\nimport { isDataTableInteractiveTarget } from \"./data-table-utils\";\n\ntype DataTableCardViewProps = {\n rows: Array>;\n cardRenderer: (props: DataTableCardRendererProps) => React.ReactNode;\n cardSizing?: DataTableCardSizing;\n cardGridClassName?: string;\n cardClassName?: string;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n renderExpandedRow?: (\n props: DataTableExpandedRowProps,\n ) => React.ReactNode;\n hasCardTitle: boolean;\n rowSelection: Record;\n onRowSelectionChange: (rowSelection: Record) => void;\n enableRowSelection: boolean;\n editingRowId: string | null;\n onEditingRowIdChange: (rowId: string | null) => void;\n getRowClassName?: DataTableProps[\"getRowClassName\"];\n onRowClick?: (context: { row: TData; rowId: string }) => void | Promise;\n getRowDraggable?: (row: TData) => boolean;\n onRowDragStart?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n onRowDragEnd?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n isLoading?: boolean;\n loadingRowCount?: number;\n labels: DataTableLabels;\n};\n\ntype DataTableRowActionsComponent = (props: {\n row: TData;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n onStartEditing: () => void;\n onCancelEditing: () => void;\n labels: DataTableLabels;\n}) => React.ReactElement | null;\n\nexport function createDataTableCardView(\n ui: DataTableUiKit,\n DataTableRowActions: DataTableRowActionsComponent,\n) {\n const uiClassNames = ui.classNames ?? {};\n const { Card, CardContent, CardHeader, Checkbox, Skeleton } = ui;\n\n return function DataTableCardView({\n rows,\n cardRenderer,\n cardSizing = \"fixed\",\n cardGridClassName,\n cardClassName,\n rowActions,\n editableRows,\n renderExpandedRow,\n hasCardTitle,\n rowSelection,\n onRowSelectionChange,\n enableRowSelection,\n editingRowId,\n onEditingRowIdChange,\n getRowClassName,\n onRowClick,\n getRowDraggable,\n onRowDragStart,\n onRowDragEnd,\n isLoading = false,\n loadingRowCount = 5,\n labels,\n }: DataTableCardViewProps) {\n const resolvedCardSizing = cardSizing ?? \"fixed\";\n const resolvedCardGridClassName =\n cardGridClassName\n ? cn(\"grid\", cardGridClassName)\n : getCardGridClassName(resolvedCardSizing);\n const cardGridClasses = cn(\n \"min-h-0 w-full gap-4 p-1\",\n uiClassNames.cardGrid,\n resolvedCardGridClassName,\n );\n const cardItemClasses = (stateClassName?: string) =>\n cn(\n \"relative min-w-0 max-w-full gap-0 overflow-hidden bg-transparent p-0\",\n getCardItemClassName(resolvedCardSizing),\n uiClassNames.cardItem,\n cardClassName,\n stateClassName,\n );\n\n if (isLoading) {\n return (\n \n {Array.from({ length: Math.max(1, loadingRowCount) }, (_, index) => (\n \n {hasCardTitle ? (\n \n \n \n \n ) : null}\n \n \n \n \n \n \n \n ))}\n \n );\n }\n\n return (\n \n {rows.map((row) => {\n const rowId = row.id;\n const originalRow = row.original;\n const isSelected = Boolean(rowSelection[rowId]);\n const isEditing = editingRowId === rowId;\n const hasCardActions = rowActions.length > 0 || Boolean(editableRows);\n const showCardGradient =\n enableRowSelection || hasCardActions || hasCardTitle;\n const showCardOverlayControls = enableRowSelection || hasCardActions;\n const handleCardActivate = () => {\n if (!onRowClick) {\n return;\n }\n\n void onRowClick({ row: originalRow, rowId });\n };\n\n return (\n ) => {\n onRowDragStart?.({ row: originalRow, rowId, event });\n }}\n onDragEnd={(event: React.DragEvent) => {\n onRowDragEnd?.({ row: originalRow, rowId, event });\n }}\n >\n {showCardGradient ? (\n \n ) : null}\n *]:min-w-0\",\n getCardRendererClassName(resolvedCardSizing),\n onRowClick && \"cursor-pointer focus-visible:outline-none\",\n )}\n onClick={(event: React.MouseEvent) => {\n if (\n isDataTableInteractiveTarget(\n event.target,\n event.currentTarget,\n )\n ) {\n return;\n }\n\n handleCardActivate();\n }}\n onKeyDown={(event: React.KeyboardEvent) => {\n if (\n isDataTableInteractiveTarget(\n event.target,\n event.currentTarget,\n )\n ) {\n return;\n }\n\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n handleCardActivate();\n }\n }}\n >\n {cardRenderer({\n row: originalRow,\n rowId,\n isSelected,\n onSelectedChange: (nextValue) => {\n onRowSelectionChange(\n updateRowSelection(rowSelection, rowId, nextValue),\n );\n },\n actions: rowActions,\n isEditing,\n startEditing: () => {\n onEditingRowIdChange(rowId);\n },\n cancelEditing: () => {\n onEditingRowIdChange(null);\n },\n })}\n {isEditing || !renderExpandedRow || !row.getIsExpanded()\n ? null\n : renderExpandedRow({\n row: originalRow,\n rowId,\n tableRow: row,\n })}\n \n {showCardOverlayControls ? (\n \n {enableRowSelection ? (\n \n {\n onRowSelectionChange(\n updateRowSelection(\n rowSelection,\n rowId,\n checked === true,\n ),\n );\n }}\n />\n \n ) : null}\n
    \n {hasCardActions ? (\n \n {\n onEditingRowIdChange(rowId);\n }}\n onCancelEditing={() => {\n onEditingRowIdChange(null);\n }}\n labels={labels}\n />\n
    \n ) : null}\n
    \n ) : null}\n \n );\n })}\n \n );\n };\n}\n\nfunction getCardGridClassName(cardSizing: DataTableCardSizing) {\n switch (cardSizing) {\n case \"content\":\n return \"flex flex-wrap items-start justify-start\";\n case \"fluid\":\n return \"grid grid-cols-[repeat(auto-fit,minmax(min(18rem,100%),1fr))]\";\n case \"fixed\":\n default:\n return \"grid grid-cols-[repeat(auto-fill,minmax(min(18rem,100%),18rem))] justify-start\";\n }\n}\n\nfunction getCardItemClassName(cardSizing: DataTableCardSizing) {\n switch (cardSizing) {\n case \"content\":\n return \"w-fit\";\n case \"fluid\":\n return \"w-full\";\n case \"fixed\":\n default:\n return undefined;\n }\n}\n\nfunction getCardRendererClassName(cardSizing: DataTableCardSizing) {\n switch (cardSizing) {\n case \"content\":\n return \"w-fit\";\n case \"fluid\":\n return \"w-full flex-1 [&>*]:w-full\";\n case \"fixed\":\n default:\n return \"flex-1\";\n }\n}\n\nfunction updateRowSelection(\n rowSelection: Record,\n rowId: string,\n isSelected: boolean,\n) {\n if (isSelected) {\n return {\n ...rowSelection,\n [rowId]: true,\n };\n }\n\n if (!rowSelection[rowId]) {\n return rowSelection;\n }\n\n const nextSelection = { ...rowSelection };\n delete nextSelection[rowId];\n return nextSelection;\n}\n","import { IconInbox } from \"../icons\";\nimport type { DataTableUiKit } from \"../ui-kit\";\n\nexport function createDataTableEmptyState(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n } = ui;\n\n return function DataTableEmptyState({\n title = \"No rows found\",\n description = \"Adjust your filters or create a new record to populate this table.\",\n }: {\n title?: string;\n description?: string;\n }) {\n return (\n \n \n \n \n \n {title}\n {description}\n \n \n \n );\n };\n}\n","import * as React from \"react\";\nimport { IconDatabase } from \"../icons\";\nimport type { DataTableLabels } from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\ntype DataTablePaginationProps = {\n pageIndex: number;\n pageCount: number;\n pageCountKnown: boolean;\n pageSize: number;\n totalRowCount?: number;\n rowsPerPageOptions: Array;\n onPageIndexChange: (pageIndex: number) => void;\n onPageSizeChange: (pageSize: number) => void;\n labels: DataTableLabels;\n};\n\nexport function createDataTablePagination(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectTrigger,\n SelectValue,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n function DataTablePagination({\n pageIndex,\n pageCount,\n pageCountKnown,\n pageSize,\n totalRowCount,\n rowsPerPageOptions,\n onPageIndexChange,\n onPageSizeChange,\n labels,\n }: DataTablePaginationProps) {\n const pages = pageCountKnown\n ? getVisiblePages(pageIndex, Math.max(1, pageCount))\n : [];\n const canGoPrevious = pageIndex > 0;\n const canGoNext = pageIndex + 1 < pageCount;\n const lastPageIndex = Math.max(0, pageCount - 1);\n\n return (\n
    \n \n \n {labels.recordsPerPage}\n \n {\n onPageSizeChange(Number(value));\n }}\n >\n \n \n \n \n \n {rowsPerPageOptions.map((option) => (\n \n {option}\n \n ))}\n \n \n \n
    \n\n {totalRowCount !== undefined ? (\n
    \n \n \n {totalRowCount}\n \n {labels.totalRecords(totalRowCount)}\n \n
    \n \n ) : null}\n\n
    \n \n {pageCountKnown\n ? labels.pageStatus(pageIndex, Math.max(1, pageCount))\n : (\n labels.pageStatusUnknown ??\n DATA_TABLE_DEFAULT_LABELS.pageStatusUnknown\n )(pageIndex)}\n
    \n \n \n \n \n \n ) => {\n event.preventDefault();\n if (canGoPrevious) {\n onPageIndexChange(0);\n }\n }}\n text={labels.firstPage}\n />\n \n {labels.firstPage}\n \n \n \n \n \n ) => {\n event.preventDefault();\n if (canGoPrevious) {\n onPageIndexChange(pageIndex - 1);\n }\n }}\n text={labels.previousPage}\n />\n \n {labels.previousPage}\n \n \n {pages.map((item, index) => (\n \n {item === \"ellipsis\" ? (\n \n ) : (\n ) => {\n event.preventDefault();\n onPageIndexChange(item - 1);\n }}\n >\n {item}\n \n )}\n \n ))}\n \n \n \n ) => {\n event.preventDefault();\n if (canGoNext) {\n onPageIndexChange(pageIndex + 1);\n }\n }}\n text={labels.nextPage}\n />\n \n {labels.nextPage}\n \n \n {pageCountKnown ? (\n \n \n \n ,\n ) => {\n event.preventDefault();\n if (canGoNext) {\n onPageIndexChange(lastPageIndex);\n }\n }}\n />\n \n {labels.lastPage}\n \n \n ) : null}\n \n \n \n \n );\n }\n\n function DataTableFooter(props: DataTablePaginationProps) {\n return (\n \n \n \n );\n }\n\n return {\n DataTableFooter,\n DataTablePagination,\n };\n}\n\nfunction getVisiblePages(currentPageIndex: number, pageCount: number) {\n const currentPage = currentPageIndex + 1;\n const pages = new Set([1, pageCount]);\n\n for (\n let page = Math.max(1, currentPage - 2);\n page <= Math.min(pageCount, currentPage + 2);\n page += 1\n ) {\n pages.add(page);\n }\n\n const orderedPages = Array.from(pages).sort((left, right) => left - right);\n const items: Array = [];\n\n for (let index = 0; index < orderedPages.length; index += 1) {\n const page = orderedPages[index];\n const previous = orderedPages[index - 1];\n\n if (previous && page - previous > 1) {\n items.push(\"ellipsis\");\n }\n\n items.push(page);\n }\n\n return items;\n}\n","import * as React from \"react\";\nimport { IconDots, IconEdit, IconX } from \"../icons\";\nimport type {\n DataTableEditableRowsConfig,\n DataTableLabels,\n DataTableRowAction,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { canEditRow, canUseRowAction, resolveRowActionLabel } from \"../types\";\n\ntype DataTableRowActionsProps = {\n row: TData;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n onStartEditing: () => void;\n onCancelEditing: () => void;\n labels: DataTableLabels;\n};\n\nexport function createDataTableRowActions(ui: DataTableUiKit) {\n const {\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n return function DataTableRowActions({\n row,\n rowActions,\n editableRows,\n isEditing,\n onStartEditing,\n onCancelEditing,\n labels,\n }: DataTableRowActionsProps) {\n const actions = rowActions.filter((action) => canUseRowAction(action, row));\n const stopRowClickPropagation = React.useCallback(\n (event: React.SyntheticEvent) => {\n event.stopPropagation();\n },\n [],\n );\n\n if (isEditing) {\n return (\n \n \n \n \n {labels.cancelEdit}\n \n \n {labels.cancelEdit}\n \n );\n }\n\n const allowEdit = canEditRow(editableRows, row);\n if (!actions.length && !allowEdit) {\n return null;\n }\n\n return (\n \n \n \n \n \n \n {labels.rowActions}\n \n \n \n {labels.rowActions}\n \n \n {allowEdit ? (\n \n ) => {\n event.stopPropagation();\n onStartEditing();\n }}\n >\n \n {labels.editRow}\n \n \n ) : null}\n {allowEdit && actions.length ? : null}\n {actions.length ? (\n \n {actions.map((action) => {\n const Icon = action.icon;\n return (\n ) => {\n event.stopPropagation();\n void action.onClick(row);\n }}\n >\n {Icon ? : null}\n {resolveRowActionLabel(action.label, row)}\n \n );\n })}\n \n ) : null}\n \n \n );\n };\n}\n","import * as React from \"react\";\nimport {\n IconAdjustmentsHorizontal,\n IconLayoutGrid,\n IconList,\n IconSearch,\n IconX,\n} from \"../icons\";\nimport type {\n DataTableColumnFilterType,\n DataTableColumnFixed,\n DataTableColumnVisibilityOption,\n DataTableDensity,\n DataTableLabels,\n DataTableSelectionAction,\n DataTableToolbarAction,\n DataTableToolbarVisibility,\n DataTableViewMode,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\nexport type DataTableToolbarColumnFilter = {\n id: string;\n label: string;\n type: DataTableColumnFilterType;\n value: unknown;\n placeholder?: string;\n options: Array<{ label: string; value: string }>;\n};\n\ntype DataTableToolbarProps = {\n title?: string;\n titleId?: string;\n description?: string;\n descriptionId?: string;\n toolbarQueryValue: string;\n toolbarQueryPlaceholder: string;\n onToolbarQueryValueChange: (value: string) => void;\n customToolbar?: React.ReactNode;\n compactToolbar?: React.ReactNode;\n viewMode: DataTableViewMode;\n onViewModeChange?: (viewMode: DataTableViewMode) => void;\n enableViewToggle: boolean;\n toolbarActions: Array>;\n selectionActions: Array>;\n selectedRows: Array;\n showHiddenRows: boolean;\n hiddenRowsLabel?: string;\n onShowHiddenRowsChange?: (showHiddenRows: boolean) => void;\n allRows: Array;\n columnVisibilityOptions: Array;\n onColumnVisibilityChange?: (columnId: string, visible: boolean) => void;\n enableColumnPinning: boolean;\n onColumnPinningChange: (columnId: string, side: DataTableColumnFixed | false) => void;\n columnFilters: Array;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n onClearColumnFilters: () => void;\n density: DataTableDensity;\n onDensityChange: (density: DataTableDensity) => void;\n enableDensityToggle: boolean;\n labels: DataTableLabels;\n toolbarVisibility?: DataTableToolbarVisibility;\n openFileDialog?: () => void;\n};\n\nexport function createDataTableToolbar(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Button,\n ButtonGroup,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n return function DataTableToolbar({\n title,\n titleId,\n description,\n descriptionId,\n toolbarQueryValue,\n toolbarQueryPlaceholder,\n onToolbarQueryValueChange,\n customToolbar,\n compactToolbar,\n viewMode,\n onViewModeChange,\n enableViewToggle,\n toolbarActions,\n selectionActions,\n selectedRows,\n showHiddenRows,\n hiddenRowsLabel,\n onShowHiddenRowsChange,\n allRows,\n columnVisibilityOptions,\n onColumnVisibilityChange,\n enableColumnPinning,\n onColumnPinningChange,\n columnFilters,\n onColumnFilterChange,\n onClearColumnFilters,\n density,\n onDensityChange,\n enableDensityToggle,\n labels,\n toolbarVisibility,\n openFileDialog,\n }: DataTableToolbarProps) {\n const compactSearchInputRef = React.useRef(null);\n const [isCompactSearchVisible, setIsCompactSearchVisible] =\n React.useState(false);\n const compactToolbarIconButtonClassName =\n uiClassNames.toolbarCompactIconButton ?? \"\";\n const primaryActions = toolbarActions.filter(\n (action) => (action.placement ?? \"primary\") === \"primary\",\n );\n const trailingActions = toolbarActions.filter(\n (action) => action.placement === \"trailing\",\n );\n const showTitle = toolbarVisibility?.title ?? true;\n const showSearch = toolbarVisibility?.search ?? true;\n const showActions = toolbarVisibility?.actions ?? true;\n const showTrailingActions = toolbarVisibility?.trailingActions ?? true;\n const showOptions = toolbarVisibility?.options ?? true;\n const showViewToggle = toolbarVisibility?.viewToggle ?? true;\n const showCustomToolbar = toolbarVisibility?.customToolbar ?? true;\n const hasVisibleTitle = showTitle && Boolean(title || description);\n const hasVisibleSearch = showSearch;\n const hasVisiblePrimaryActions = showActions && primaryActions.length > 0;\n const hasVisibleSelectionActions =\n selectedRows.length > 0 && selectionActions.length > 0;\n const hasVisibleOptions =\n showOptions &&\n (columnVisibilityOptions.some((column) => column.canHide) ||\n Boolean(onShowHiddenRowsChange && hiddenRowsLabel) ||\n enableColumnPinning ||\n enableDensityToggle);\n const hasVisibleViewToggle =\n showViewToggle && enableViewToggle && Boolean(onViewModeChange);\n const hasVisibleTrailingActions =\n showTrailingActions && trailingActions.length > 0;\n const hasVisibleCustomToolbar = showCustomToolbar && Boolean(customToolbar);\n const hasVisibleCompactToolbar =\n showCustomToolbar && Boolean(compactToolbar ?? customToolbar);\n const selectedRowCountLabel = labels.selectedRows(selectedRows.length);\n\n React.useEffect(() => {\n if (!isCompactSearchVisible) {\n return;\n }\n\n compactSearchInputRef.current?.focus();\n }, [isCompactSearchVisible]);\n\n if (\n !hasVisibleTitle &&\n !hasVisibleSearch &&\n !hasVisiblePrimaryActions &&\n !hasVisibleSelectionActions &&\n !hasVisibleOptions &&\n !hasVisibleViewToggle &&\n !hasVisibleTrailingActions &&\n !hasVisibleCustomToolbar &&\n !hasVisibleCompactToolbar\n ) {\n return null;\n }\n\n return (\n
    \n {showTitle && (title || description) ? (\n
    \n {title ? (\n \n {title}\n \n ) : null}\n {description ? (\n \n {description}\n

    \n ) : null}\n
    \n ) : null}\n\n
    \n \n {showSearch ? (\n <>\n
    \n \n ) => {\n onToolbarQueryValueChange(event.target.value);\n }}\n placeholder={toolbarQueryPlaceholder}\n />\n \n \n \n {toolbarQueryValue ? (\n \n {\n onToolbarQueryValueChange(\"\");\n }}\n aria-label={labels.clearSearch}\n title={labels.clearSearch}\n >\n \n \n \n ) : null}\n \n
    \n \n \n {\n setIsCompactSearchVisible((current) => !current);\n }}\n >\n \n {labels.searchTable}\n \n \n {labels.searchTable}\n \n \n ) : null}\n\n {showActions ? (\n
    \n {primaryActions.map((action) => {\n const collapsesToIcon =\n !action.iconOnly && Boolean(action.icon);\n const button = (\n {\n void action.onClick({\n rows: allRows,\n openFileDialog,\n });\n }}\n disabled={action.disabled}\n aria-label={action.label}\n title={action.iconOnly ? undefined : action.label}\n >\n {action.icon ? : null}\n {action.iconOnly ? (\n {action.label}\n ) : collapsesToIcon ? (\n \n {action.label}\n \n ) : (\n {action.label}\n )}\n \n );\n\n return action.iconOnly ? (\n \n {button}\n {action.label}\n \n ) : (\n button\n );\n })}\n
    \n ) : null}\n\n {hasVisibleCompactToolbar ? (\n \n {compactToolbar ?? customToolbar}\n
    \n ) : null}\n\n
    \n\n \n {selectedRows.length ? (\n \n {selectedRowCountLabel}\n
    \n ) : null}\n {selectedRows.length\n ? selectionActions.map((action) => {\n const Icon = action.icon;\n const disabled =\n typeof action.disabled === \"function\"\n ? action.disabled(selectedRows)\n : action.disabled;\n\n return (\n \n \n {\n void action.onClick({ rows: selectedRows });\n }}\n aria-label={action.label}\n >\n {Icon ? : null}\n {action.label}\n \n \n {action.label}\n \n );\n })\n : null}\n\n {hasVisibleOptions ? (\n \n \n \n \n {labels.tableOptions}\n \n \n \n {labels.tableOptions}\n \n {onShowHiddenRowsChange && hiddenRowsLabel ? (\n {\n onShowHiddenRowsChange(checked === true);\n }}\n >\n {labels.showHiddenRows(hiddenRowsLabel)}\n \n ) : null}\n \n {enableDensityToggle ? (\n <>\n \n {labels.density}\n \n {(\n [\n [\"compact\", labels.compactDensity],\n [\"comfortable\", labels.comfortableDensity],\n [\"spacious\", labels.spaciousDensity],\n ] as const\n ).map(([nextDensity, label]) => (\n {\n onDensityChange(nextDensity);\n }}\n >\n {label}\n \n ))}\n \n \n ) : null}\n {columnVisibilityOptions.some((column) => column.canHide) ? (\n <>\n \n {labels.columns}\n \n {columnVisibilityOptions\n .filter((column) => column.canHide)\n .map((column) => (\n {\n onColumnVisibilityChange?.(\n column.id,\n checked === true,\n );\n }}\n >\n {column.label}\n \n ))}\n \n \n ) : null}\n {enableColumnPinning ? (\n <>\n \n \n {labels.pinLeft} / {labels.pinRight}\n \n \n {columnVisibilityOptions.map((column) => (\n {\n event.preventDefault();\n }}\n >\n \n {column.label}\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, \"left\");\n }}\n >\n L\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, \"right\");\n }}\n >\n R\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, false);\n }}\n >\n -\n \n \n ))}\n \n \n ) : null}\n \n \n ) : null}\n\n {showViewToggle && enableViewToggle && onViewModeChange ? (\n \n \n \n {\n onViewModeChange(\"table\");\n }}\n >\n \n \n {labels.switchToTableView ??\n DATA_TABLE_DEFAULT_LABELS.switchToTableView}\n \n \n \n \n {labels.tableView ??\n DATA_TABLE_DEFAULT_LABELS.tableView}\n \n \n \n \n {\n onViewModeChange(\"card\");\n }}\n >\n \n \n {labels.switchToCardView ??\n DATA_TABLE_DEFAULT_LABELS.switchToCardView}\n \n \n \n \n {labels.cardView ??\n DATA_TABLE_DEFAULT_LABELS.cardView}\n \n \n \n ) : null}\n\n {showTrailingActions\n ? trailingActions.map((action) => {\n const collapsesToIcon =\n !action.iconOnly && Boolean(action.icon);\n const button = (\n {\n void action.onClick({\n rows: allRows,\n openFileDialog,\n });\n }}\n disabled={action.disabled}\n aria-label={action.label}\n title={action.iconOnly ? undefined : action.label}\n className={`size-7 shrink-0 ${action.iconOnly ? \"\" : `${collapsesToIcon ? \"px-0 @min-[768px]/data-table:px-2.5\" : \"\"} @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit`} ${action.iconOnly || collapsesToIcon ? compactToolbarIconButtonClassName : \"\"} ${uiClassNames.toolbarInputButton ?? \"\"}`}\n >\n {action.icon ? (\n \n ) : null}\n {action.iconOnly ? (\n {action.label}\n ) : collapsesToIcon ? (\n \n {action.label}\n \n ) : (\n {action.label}\n )}\n \n );\n\n return action.iconOnly ? (\n \n {button}\n {action.label}\n \n ) : (\n button\n );\n })\n : null}\n
    \n \n\n {showSearch && isCompactSearchVisible ? (\n \n \n ) => {\n onToolbarQueryValueChange(event.target.value);\n }}\n placeholder={toolbarQueryPlaceholder}\n />\n \n \n \n {toolbarQueryValue ? (\n \n {\n onToolbarQueryValueChange(\"\");\n }}\n aria-label={labels.clearSearch}\n title={labels.clearSearch}\n >\n \n \n \n ) : null}\n \n \n ) : null}\n\n {columnFilters.length ? (\n \n {columnFilters.map((filter) => (\n \n ))}\n {columnFilters.some((filter) =>\n hasColumnFilterValue(filter.value),\n ) ? (\n \n {labels.clearFilters}\n \n ) : null}\n \n ) : null}\n\n \n\n {showCustomToolbar && customToolbar ? (\n \n {customToolbar}\n \n ) : null}\n \n );\n };\n\n function ToolbarColumnFilterControl({\n filter,\n labels,\n onColumnFilterChange,\n }: {\n filter: DataTableToolbarColumnFilter;\n labels: DataTableLabels;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n }) {\n if (filter.type === \"text\") {\n return (\n \n ) => {\n onColumnFilterChange(filter.id, event.target.value);\n }}\n placeholder={filter.placeholder ?? filter.label}\n aria-label={`${labels.filters}: ${filter.label}`}\n />\n \n \n \n \n );\n }\n\n const selectedValues = Array.isArray(filter.value)\n ? filter.value.map(String)\n : typeof filter.value === \"string\" && filter.value\n ? [filter.value]\n : [];\n const selectedLabel =\n selectedValues.length === 0\n ? filter.label\n : `${filter.label}: ${\n selectedValues.length === 1\n ? (filter.options.find(\n (option) => option.value === selectedValues[0],\n )?.label ?? selectedValues[0])\n : selectedValues.length\n }`;\n\n return (\n \n \n \n \n \n {filter.label}\n \n {filter.type === \"select\" ? (\n {\n onColumnFilterChange(filter.id, \"\");\n }}\n >\n {labels.allFilterOptions ??\n DATA_TABLE_DEFAULT_LABELS.allFilterOptions}\n \n ) : null}\n {filter.options.map((option) => (\n {\n if (filter.type === \"select\") {\n onColumnFilterChange(\n filter.id,\n checked === true ? option.value : \"\",\n );\n return;\n }\n\n const nextValues = new Set(selectedValues);\n if (checked === true) {\n nextValues.add(option.value);\n } else {\n nextValues.delete(option.value);\n }\n onColumnFilterChange(filter.id, Array.from(nextValues));\n }}\n >\n {option.label}\n \n ))}\n \n \n \n );\n }\n}\n\nfunction hasColumnFilterValue(value: unknown) {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n\n return value !== undefined && value !== null && value !== \"\";\n}\n","import * as React from \"react\";\nimport { DataTableTablePanel } from \"./data-table-table-panel\";\nimport type { DataTableTablePanelProps } from \"./data-table-table-panel\";\n\nconst LazyDataTableVirtualTablePanel = React.lazy(async () => {\n const module = await import(\"./data-table-virtual-table-panel\");\n return { default: module.DataTableVirtualTablePanel };\n}) as unknown as typeof DataTableTablePanel;\n\nexport function DataTableTablePanelRouter(\n props: DataTableTablePanelProps,\n) {\n const config =\n typeof props.virtualization === \"object\"\n ? props.virtualization\n : undefined;\n const enabled =\n props.virtualization === true || config?.enabled === true;\n\n if (!enabled) {\n return ;\n }\n\n return (\n \n }\n >\n \n \n );\n}\n","import type {\n DataTableSavedView,\n DataTableSavedViewSlice,\n DataTableSavedViewsChangeOperation,\n DataTableSavedViewsConfig,\n DataTableSavedViewsPayload,\n DataTableState,\n} from \"../types\";\n\nconst STORAGE_PREFIX = \"data-table-pro:saved-views:\";\nconst DEFAULT_VERSION = 1;\nconst DEFAULT_SLICES: Array = [\n \"sorting\",\n \"columnVisibility\",\n \"columnFilters\",\n \"columnOrder\",\n \"columnPinning\",\n \"columnSizing\",\n \"density\",\n \"viewMode\",\n \"showHiddenRows\",\n \"globalFilter\",\n];\nlet fallbackId = 0;\n\nexport function readDataTableSavedViews(\n config: DataTableSavedViewsConfig | undefined,\n): Array {\n const storage = resolveStorage(config);\n if (!config || !storage) {\n return [];\n }\n\n let serialized: string | null;\n try {\n serialized = storage.getItem(getStorageKey(config.key));\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return [];\n }\n if (!serialized) {\n return [];\n }\n\n let parsed: unknown;\n try {\n parsed = (config.deserialize ?? JSON.parse)(serialized);\n } catch (error) {\n config.onError?.({ error, operation: \"deserialize\" });\n return [];\n }\n\n if (!isRecord(parsed) || !(\"version\" in parsed) || !(\"views\" in parsed)) {\n return [];\n }\n\n const targetVersion = config.version ?? DEFAULT_VERSION;\n let candidate: unknown = parsed.views;\n if (parsed.version !== targetVersion) {\n if (!config.migrate) {\n return [];\n }\n try {\n candidate = config.migrate(\n { version: parsed.version, views: parsed.views },\n targetVersion,\n );\n } catch (error) {\n config.onError?.({ error, operation: \"migrate\" });\n return [];\n }\n }\n\n if (!Array.isArray(candidate)) {\n return [];\n }\n\n return candidate\n .map((view) => validateSavedView(view, config.slices))\n .filter((view): view is DataTableSavedView => Boolean(view));\n}\n\nexport function createDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n name: string,\n state: DataTableState,\n) {\n const normalizedName = name.trim();\n if (!config || !normalizedName) {\n return undefined;\n }\n\n const now = new Date().toISOString();\n const view: DataTableSavedView = {\n id: createSavedViewId(),\n name: normalizedName,\n createdAt: now,\n updatedAt: now,\n state: selectSavedViewSlices(state, config.slices),\n };\n const views = [...readDataTableSavedViews(config), view];\n return writeViews(config, views, \"create\") ? cloneSavedView(view) : undefined;\n}\n\nexport function renameDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n id: string,\n name: string,\n) {\n const normalizedName = name.trim();\n if (!config || !normalizedName) {\n return undefined;\n }\n\n let renamed: DataTableSavedView | undefined;\n const views = readDataTableSavedViews(config).map((view) => {\n if (view.id !== id) {\n return view;\n }\n renamed = {\n ...view,\n name: normalizedName,\n updatedAt: new Date().toISOString(),\n };\n return renamed;\n });\n if (!renamed) {\n return undefined;\n }\n\n return writeViews(config, views, \"rename\")\n ? cloneSavedView(renamed)\n : undefined;\n}\n\nexport function deleteDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n id: string,\n) {\n if (!config) {\n return false;\n }\n\n const current = readDataTableSavedViews(config);\n const views = current.filter((view) => view.id !== id);\n return views.length !== current.length && writeViews(config, views, \"delete\");\n}\n\nexport function clearDataTableSavedViews(\n config: DataTableSavedViewsConfig | undefined,\n) {\n const storage = resolveStorage(config);\n if (!config || !storage) {\n return false;\n }\n\n try {\n storage.removeItem(getStorageKey(config.key));\n } catch (error) {\n config.onError?.({ error, operation: \"remove\" });\n return false;\n }\n config.onChange?.([], \"clear\");\n return true;\n}\n\nfunction writeViews(\n config: DataTableSavedViewsConfig,\n views: Array,\n operation: DataTableSavedViewsChangeOperation,\n) {\n const storage = resolveStorage(config);\n if (!storage) {\n return false;\n }\n\n let serialized: string;\n try {\n const payload: DataTableSavedViewsPayload = {\n version: config.version ?? DEFAULT_VERSION,\n views,\n };\n serialized = (config.serialize ?? JSON.stringify)(payload);\n } catch (error) {\n config.onError?.({ error, operation: \"serialize\" });\n return false;\n }\n\n try {\n storage.setItem(getStorageKey(config.key), serialized);\n } catch (error) {\n config.onError?.({ error, operation: \"write\" });\n return false;\n }\n const snapshots = views.map(cloneSavedView);\n config.onChange?.(snapshots, operation);\n return true;\n}\n\nfunction selectSavedViewSlices(\n state: DataTableState,\n slices: Array | undefined,\n) {\n const selected = new Set(slices ?? DEFAULT_SLICES);\n const snapshot: Partial = {};\n for (const slice of Object.keys(state) as Array) {\n if (selected.has(slice)) {\n Object.assign(snapshot, {\n [slice]: cloneStateSlice(slice, state[slice]),\n });\n }\n }\n return snapshot;\n}\n\nfunction validateSavedView(\n value: unknown,\n slices: Array | undefined,\n): DataTableSavedView | undefined {\n if (\n !isRecord(value) ||\n typeof value.id !== \"string\" ||\n !value.id ||\n typeof value.name !== \"string\" ||\n !value.name.trim() ||\n typeof value.createdAt !== \"string\" ||\n typeof value.updatedAt !== \"string\"\n ) {\n return undefined;\n }\n\n return {\n id: value.id,\n name: value.name.trim(),\n createdAt: value.createdAt,\n updatedAt: value.updatedAt,\n state: validateState(value.state, slices),\n };\n}\n\nfunction validateState(\n value: unknown,\n slices: Array | undefined,\n) {\n if (!isRecord(value)) {\n return {};\n }\n\n const selected = new Set(slices ?? DEFAULT_SLICES);\n const state: Partial = {};\n const sorting = validateSorting(value.sorting);\n if (selected.has(\"sorting\") && sorting) state.sorting = sorting;\n const pagination = validatePagination(value.pagination);\n if (selected.has(\"pagination\") && pagination) state.pagination = pagination;\n const rowSelection = validateBooleanRecord(value.rowSelection);\n if (selected.has(\"rowSelection\") && rowSelection) {\n state.rowSelection = rowSelection;\n }\n const visibility = validateBooleanRecord(value.columnVisibility);\n if (selected.has(\"columnVisibility\") && visibility) {\n state.columnVisibility = visibility;\n }\n const filters = validateFilters(value.columnFilters);\n if (selected.has(\"columnFilters\") && filters) state.columnFilters = filters;\n const expanded =\n value.expanded === true\n ? true\n : validateBooleanRecord(value.expanded);\n if (selected.has(\"expanded\") && expanded !== undefined) {\n state.expanded = expanded;\n }\n const order = validateStringArray(value.columnOrder);\n if (selected.has(\"columnOrder\") && order) state.columnOrder = order;\n const pinning = validatePinning(value.columnPinning);\n if (selected.has(\"columnPinning\") && pinning) {\n state.columnPinning = pinning;\n }\n const sizing = validateSizingRecord(value.columnSizing);\n if (selected.has(\"columnSizing\") && sizing) state.columnSizing = sizing;\n if (\n selected.has(\"density\") &&\n (value.density === \"compact\" ||\n value.density === \"comfortable\" ||\n value.density === \"spacious\")\n ) {\n state.density = value.density;\n }\n if (\n selected.has(\"viewMode\") &&\n (value.viewMode === \"table\" || value.viewMode === \"card\")\n ) {\n state.viewMode = value.viewMode;\n }\n if (selected.has(\"showHiddenRows\") && typeof value.showHiddenRows === \"boolean\") {\n state.showHiddenRows = value.showHiddenRows;\n }\n if (selected.has(\"globalFilter\") && typeof value.globalFilter === \"string\") {\n state.globalFilter = value.globalFilter;\n }\n return state;\n}\n\nfunction cloneSavedView(view: DataTableSavedView): DataTableSavedView {\n return {\n ...view,\n state: validateState(view.state, Object.keys(view.state) as Array),\n };\n}\n\nfunction cloneStateSlice(\n slice: DataTableSavedViewSlice,\n value: unknown,\n) {\n if (Array.isArray(value)) {\n return (value as Array).map((item) =>\n isRecord(item) ? { ...item } : item,\n );\n }\n if (isRecord(value)) {\n if (slice === \"columnPinning\") {\n return {\n left: Array.isArray(value.left)\n ? [...(value.left as Array)]\n : undefined,\n right: Array.isArray(value.right)\n ? [...(value.right as Array)]\n : undefined,\n };\n }\n return { ...value };\n }\n return value;\n}\n\nfunction validateSorting(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value\n .filter(\n (item): item is { id: string; desc?: boolean } =>\n isRecord(item) && typeof item.id === \"string\",\n )\n .map((item) => ({ id: item.id, desc: Boolean(item.desc) }));\n}\n\nfunction validatePagination(value: unknown) {\n if (\n !isRecord(value) ||\n !Number.isInteger(value.pageIndex) ||\n (value.pageIndex as number) < 0 ||\n !Number.isInteger(value.pageSize) ||\n (value.pageSize as number) < 1\n ) {\n return undefined;\n }\n return {\n pageIndex: value.pageIndex as number,\n pageSize: value.pageSize as number,\n };\n}\n\nfunction validateFilters(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value\n .filter(\n (item): item is { id: string; value: unknown } =>\n isRecord(item) &&\n typeof item.id === \"string\" &&\n Object.prototype.hasOwnProperty.call(item, \"value\"),\n )\n .map((item) => ({ id: item.id, value: item.value }));\n}\n\nfunction validatePinning(value: unknown) {\n if (!isRecord(value)) return undefined;\n return {\n left: validateStringArray(value.left) ?? [],\n right: validateStringArray(value.right) ?? [],\n };\n}\n\nfunction validateBooleanRecord(value: unknown) {\n if (!isRecord(value)) return undefined;\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, boolean] => typeof entry[1] === \"boolean\",\n ),\n );\n}\n\nfunction validateSizingRecord(value: unknown) {\n if (!isRecord(value)) return undefined;\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, number] =>\n typeof entry[1] === \"number\" &&\n Number.isFinite(entry[1]) &&\n entry[1] >= 0,\n ),\n );\n}\n\nfunction validateStringArray(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value.filter((item): item is string => typeof item === \"string\");\n}\n\nfunction resolveStorage(config: DataTableSavedViewsConfig | undefined) {\n if (!config) {\n return undefined;\n }\n if (config.storage) {\n return config.storage;\n }\n if (typeof window === \"undefined\") {\n return undefined;\n }\n try {\n return window.localStorage;\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return undefined;\n }\n}\n\nfunction createSavedViewId() {\n if (typeof globalThis.crypto?.randomUUID === \"function\") {\n return globalThis.crypto.randomUUID();\n }\n fallbackId += 1;\n return `view-${Date.now().toString(36)}-${fallbackId.toString(36)}`;\n}\n\nfunction getStorageKey(key: string) {\n return `${STORAGE_PREFIX}${key}`;\n}\n\nfunction isRecord(value: unknown): value is Record {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n","import * as React from \"react\";\nimport { IconDownload } from \"../icons\";\nimport type {\n ColumnFiltersState,\n ColumnPinningState,\n OnChangeFn,\n Table as TanStackTable,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableColumnFixed,\n DataTableLabels,\n DataTableProps,\n} from \"../types\";\nimport {\n exportDataTableCsv,\n getAccessorKey,\n getColumnId,\n getDataTableLeafColumns,\n hasFilterValue,\n normalizeColumnFilterOptions,\n startCase,\n} from \"./data-table-utils\";\n\nexport function useDataTableToolbarFeatures({\n columns,\n currentColumnFilters,\n currentColumnPinning,\n effectiveColumnVisibility,\n enableColumnFilters,\n handleColumnFiltersChange,\n handleColumnPinningChange,\n labels,\n table,\n toolbarActions,\n visibleData,\n csvExport,\n}: {\n columns: DataTableProps[\"columns\"];\n currentColumnFilters: ColumnFiltersState;\n currentColumnPinning: ColumnPinningState;\n effectiveColumnVisibility: VisibilityState;\n enableColumnFilters: boolean | undefined;\n handleColumnFiltersChange: OnChangeFn;\n handleColumnPinningChange: OnChangeFn;\n labels: DataTableLabels;\n table: TanStackTable;\n toolbarActions: DataTableProps[\"toolbarActions\"];\n visibleData: Array;\n csvExport: DataTableProps[\"csvExport\"];\n}) {\n const columnVisibilityOptions = React.useMemo(() => {\n return getDataTableLeafColumns(columns).map(({ column, index }) => {\n const id = getColumnId(column, index);\n const header = column.header;\n const accessorKey = getAccessorKey(column);\n const label =\n typeof header === \"string\"\n ? header\n : accessorKey\n ? startCase(accessorKey)\n : startCase(id);\n\n const pinned: false | DataTableColumnFixed =\n currentColumnPinning.left?.includes(id) === true\n ? \"left\"\n : currentColumnPinning.right?.includes(id) === true\n ? \"right\"\n : false;\n\n return {\n id,\n label,\n visible: effectiveColumnVisibility[id] !== false,\n canHide: column.enableHiding !== false,\n pinned,\n };\n });\n }, [columns, currentColumnPinning, effectiveColumnVisibility]);\n\n const toolbarColumnFilters = React.useMemo(() => {\n if (enableColumnFilters === false) {\n return [];\n }\n\n return getDataTableLeafColumns(columns).flatMap(({ column, index }) => {\n const filter = column.meta?.filter;\n if (!filter) {\n return [];\n }\n\n const id = getColumnId(column, index);\n const header = column.header;\n const accessorKey = getAccessorKey(column);\n const label =\n filter.label ??\n (typeof header === \"string\"\n ? header\n : accessorKey\n ? startCase(accessorKey)\n : startCase(id));\n const state = currentColumnFilters.find((item) => item.id === id);\n const rawOptions =\n typeof filter.options === \"function\"\n ? filter.options({ rows: visibleData })\n : (filter.options ?? []);\n\n return [\n {\n id,\n label,\n type: filter.type,\n value: state?.value,\n placeholder: filter.placeholder,\n options: normalizeColumnFilterOptions(rawOptions),\n },\n ];\n });\n }, [columns, currentColumnFilters, enableColumnFilters, visibleData]);\n\n const handleToolbarColumnFilterChange = React.useCallback(\n (columnId: string, value: unknown) => {\n handleColumnFiltersChange((current) => {\n const next = current.filter((filter) => filter.id !== columnId);\n if (hasFilterValue(value)) {\n next.push({ id: columnId, value });\n }\n return next;\n });\n },\n [handleColumnFiltersChange],\n );\n\n const handleClearColumnFilters = React.useCallback(() => {\n handleColumnFiltersChange([]);\n }, [handleColumnFiltersChange]);\n\n const handleToolbarColumnPinningChange = React.useCallback(\n (columnId: string, side: DataTableColumnFixed | false) => {\n handleColumnPinningChange((current) => {\n const left = (current.left ?? []).filter((id) => id !== columnId);\n const right = (current.right ?? []).filter((id) => id !== columnId);\n\n if (side === \"left\") {\n left.push(columnId);\n }\n if (side === \"right\") {\n right.push(columnId);\n }\n\n return { left, right };\n });\n },\n [handleColumnPinningChange],\n );\n\n const handleCsvExport = React.useCallback(() => {\n if (!csvExport) {\n return;\n }\n\n return exportDataTableCsv({\n csvExport,\n table,\n labels,\n });\n }, [csvExport, labels, table]);\n\n const effectiveToolbarActions = React.useMemo(() => {\n if (!csvExport) {\n return toolbarActions ?? [];\n }\n\n return [\n ...(toolbarActions ?? []),\n {\n key: \"__csv_export__\",\n label: labels.exportCsv,\n icon: IconDownload,\n placement: \"trailing\" as const,\n onClick: handleCsvExport,\n },\n ];\n }, [csvExport, handleCsvExport, labels.exportCsv, toolbarActions]);\n\n return {\n columnVisibilityOptions,\n effectiveToolbarActions,\n handleClearColumnFilters,\n handleToolbarColumnFilterChange,\n handleToolbarColumnPinningChange,\n toolbarColumnFilters,\n };\n}\n","import * as React from \"react\";\nimport { flushSync } from \"react-dom\";\nimport type {\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableActionErrorContext,\n DataTableApi,\n DataTableProps,\n DataTableState,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { createDataTableCardView } from \"./create-data-table-card-view\";\nimport { createDataTableEmptyState } from \"./create-data-table-empty-state\";\nimport { createDataTablePagination } from \"./create-data-table-pagination\";\nimport { createDataTableRowActions } from \"./create-data-table-row-actions\";\nimport { createDataTableToolbar } from \"./create-data-table-toolbar\";\nimport { DataTableCardPanel as DefaultDataTableCardPanel } from \"./data-table-card-panel\";\nimport { DataTableFooterSection } from \"./data-table-footer-section\";\nimport { DataTableTablePanelRouter as DefaultDataTableTablePanel } from \"./data-table-table-panel-router\";\nimport { DataTableToolbarSection } from \"./data-table-toolbar-section\";\nimport {\n clearDataTableSavedViews,\n createDataTableSavedView,\n deleteDataTableSavedView,\n readDataTableSavedViews,\n renameDataTableSavedView,\n} from \"./data-table-saved-views\";\nimport { resolveDataTableLabels } from \"./data-table-labels\";\nimport { useDataTableColumns } from \"./use-data-table-columns\";\nimport { useDataTableInstance } from \"./use-data-table-instance\";\nimport { useDataTableScrollViewport } from \"./use-data-table-scroll-viewport\";\nimport {\n exportDataTableCsv,\n getColumnId,\n getDataTableLeafColumns,\n getInitialColumnPinning,\n validateDataTableColumnIds,\n} from \"./data-table-utils\";\nimport { useDataTableState } from \"./use-data-table-state\";\nimport { clearDataTableColumnPrefs } from \"./use-data-table-column-prefs\";\nimport { useDataTableToolbarFeatures } from \"./use-data-table-toolbar-features\";\nimport { useColumnLayout } from \"./use-column-layout\";\nimport { useRowEditing } from \"./use-row-editing\";\n\ntype CreateDataTableOptions = {\n CardPanel?: typeof DefaultDataTableCardPanel;\n TablePanel?: typeof DefaultDataTableTablePanel;\n};\n\nexport function createDataTable(ui: DataTableUiKit) {\n return createDataTableWithPanels(ui);\n}\n\nexport function createDataTableWithPanels(\n ui: DataTableUiKit,\n options: CreateDataTableOptions = {},\n) {\n const DataTableCardPanel =\n options.CardPanel ?? DefaultDataTableCardPanel;\n const DataTableTablePanel =\n options.TablePanel ?? DefaultDataTableTablePanel;\n const uiClassNames = ui.classNames ?? {};\n const {\n rootClassName,\n Button,\n Checkbox,\n Input,\n ScrollArea,\n ScrollBar,\n Skeleton,\n Table,\n TableBody,\n TableCell,\n TableFooter = \"tfoot\",\n TableHead,\n TableHeader,\n TableRow,\n Tooltip,\n TooltipContent,\n TooltipProvider = React.Fragment,\n TooltipTrigger,\n } = ui;\n const DataTableEmptyState = createDataTableEmptyState(ui);\n const DataTableRowActions = createDataTableRowActions(ui);\n const { DataTableFooter } = createDataTablePagination(ui);\n const DataTableToolbar = createDataTableToolbar(ui);\n const DataTableCardView = createDataTableCardView(ui, DataTableRowActions);\n const defaultColumn = {\n minSize: 80,\n size: 180,\n maxSize: 720,\n };\n\n return function DataTable({\n columns,\n data,\n getRowId,\n children,\n title,\n description,\n toolbarQueryValue,\n onToolbarQueryValueChange,\n toolbarQueryPlaceholder,\n toolbarQueryDebounceMs,\n manualFiltering = false,\n enableToolbarQueryFiltering = true,\n globalFilterFn,\n columnFilters,\n onColumnFiltersChange,\n enableColumnFilters,\n customToolbar,\n compactToolbar,\n rowsPerPageOptions = [10, 20, 50, 100],\n totalRowCount,\n hasNextPage,\n sorting,\n onSortingChange,\n manualSorting = false,\n pageIndex,\n pageSize,\n onPageIndexChange,\n onPageSizeChange,\n pageCount,\n manualPagination = false,\n rowSelection,\n onRowSelectionChange,\n enableRowSelection = false,\n expanded,\n onExpandedChange,\n getRowCanExpand,\n renderExpandedRow,\n columnOrder,\n onColumnOrderChange,\n enableColumnReordering = false,\n columnPinning,\n onColumnPinningChange,\n enableColumnPinning = false,\n toolbarActions = [],\n selectionActions = [],\n rowActions = [],\n csvExport,\n density,\n onDensityChange,\n enableDensityToggle = false,\n columnPrefsKey,\n persistence,\n savedViews,\n initialState,\n state: unifiedState,\n onStateChange,\n apiRef,\n labels,\n summaryRows = [],\n cardRenderer,\n cardSizing,\n cardGridClassName,\n cardClassName,\n viewMode,\n onViewModeChange,\n enableViewToggle = false,\n emptyState,\n isLoading = false,\n loadingRowCount,\n getRowLoadingState,\n hiddenRows,\n showHiddenRows,\n onShowHiddenRowsChange,\n infiniteScroll,\n editableRows,\n columnVisibility,\n onColumnVisibilityChange,\n columnSizing,\n onColumnSizingChange,\n enableColumnResizing = false,\n columnResizeMode = \"onEnd\",\n layoutMode = \"fill\",\n stickyHeader = true,\n showFooter = true,\n showToolbar = true,\n dir = \"ltr\",\n flexGrow = true,\n toolbarVisibility,\n className,\n tableClassName,\n tableContainerClassName,\n stripedRows = false,\n getRowClassName,\n onRowClick,\n onActionError,\n dragAndDrop,\n fileUpload,\n virtualization,\n }: DataTableProps) {\n const containerRef = React.useRef(null);\n const fileInputRef = React.useRef(null);\n const tableScrollContainerRef = React.useRef(null);\n const draggedColumnIdRef = React.useRef(null);\n const tableRef = React.useRef | null>(null);\n const lastSelectedRowIdRef = React.useRef(null);\n const generatedTitleId = React.useId();\n const generatedDescriptionId = React.useId();\n React.useMemo(() => validateDataTableColumnIds(columns), [columns]);\n const resolvedLabels = React.useMemo(\n () => resolveDataTableLabels(labels),\n [labels],\n );\n const resolvedToolbarQueryValue =\n toolbarQueryValue ?? unifiedState?.globalFilter;\n const resolvedSorting = sorting ?? unifiedState?.sorting;\n const resolvedPageIndex =\n pageIndex ?? unifiedState?.pagination?.pageIndex;\n const resolvedPageSize = pageSize ?? unifiedState?.pagination?.pageSize;\n const resolvedRowSelection =\n rowSelection ?? unifiedState?.rowSelection;\n const resolvedColumnVisibility =\n columnVisibility ?? unifiedState?.columnVisibility;\n const resolvedColumnFilters =\n columnFilters ?? unifiedState?.columnFilters;\n const resolvedExpanded = expanded ?? unifiedState?.expanded;\n const resolvedColumnOrder =\n columnOrder ?? unifiedState?.columnOrder;\n const resolvedColumnPinning =\n columnPinning ?? unifiedState?.columnPinning;\n const resolvedColumnSizing =\n columnSizing ?? unifiedState?.columnSizing;\n const resolvedDensity = density ?? unifiedState?.density;\n const resolvedViewMode = viewMode ?? unifiedState?.viewMode;\n const resolvedShowHiddenRows =\n showHiddenRows ?? unifiedState?.showHiddenRows;\n const showTableHeading =\n showToolbar && (toolbarVisibility?.title ?? true);\n const titleId = showTableHeading && title ? generatedTitleId : undefined;\n const descriptionId =\n showTableHeading && description ? generatedDescriptionId : undefined;\n useDataTableStateConflictWarnings(unifiedState, {\n columnFilters: columnFilters !== undefined,\n columnOrder: columnOrder !== undefined,\n columnPinning: columnPinning !== undefined,\n columnSizing: columnSizing !== undefined,\n columnVisibility: columnVisibility !== undefined,\n density: density !== undefined,\n expanded: expanded !== undefined,\n globalFilter: toolbarQueryValue !== undefined,\n pagination: pageIndex !== undefined || pageSize !== undefined,\n rowSelection: rowSelection !== undefined,\n showHiddenRows: showHiddenRows !== undefined,\n sorting: sorting !== undefined,\n viewMode: viewMode !== undefined,\n });\n const handleToolbarQueryValueChange = useDataTableStateSliceChange(\n \"globalFilter\",\n onToolbarQueryValueChange,\n onStateChange,\n );\n const handleSortingPropChange = useDataTableStateSliceChange(\n \"sorting\",\n onSortingChange,\n onStateChange,\n );\n const handleRowSelectionPropChange = useDataTableStateSliceChange(\n \"rowSelection\",\n onRowSelectionChange,\n onStateChange,\n );\n const handleColumnVisibilityPropChange = useDataTableStateSliceChange(\n \"columnVisibility\",\n onColumnVisibilityChange,\n onStateChange,\n );\n const handleColumnFiltersPropChange = useDataTableStateSliceChange(\n \"columnFilters\",\n onColumnFiltersChange,\n onStateChange,\n );\n const handleExpandedPropChange = useDataTableStateSliceChange(\n \"expanded\",\n onExpandedChange,\n onStateChange,\n );\n const handleColumnOrderPropChange = useDataTableStateSliceChange(\n \"columnOrder\",\n onColumnOrderChange,\n onStateChange,\n );\n const handleColumnPinningPropChange = useDataTableStateSliceChange(\n \"columnPinning\",\n onColumnPinningChange,\n onStateChange,\n );\n const handleColumnSizingPropChange = useDataTableStateSliceChange(\n \"columnSizing\",\n onColumnSizingChange,\n onStateChange,\n );\n const handleDensityPropChange = useDataTableStateSliceChange(\n \"density\",\n onDensityChange,\n onStateChange,\n );\n const handleViewModePropChange = useDataTableStateSliceChange(\n \"viewMode\",\n onViewModeChange,\n onStateChange,\n );\n const handleShowHiddenRowsPropChange = useDataTableStateSliceChange(\n \"showHiddenRows\",\n onShowHiddenRowsChange,\n onStateChange,\n );\n const handlePageIndexPropChange = React.useCallback(\n (nextPageIndex: number) => {\n onPageIndexChange?.(nextPageIndex);\n onStateChange?.((current) => ({\n ...current,\n pagination: {\n pageIndex: nextPageIndex,\n pageSize:\n resolvedPageSize ?? current.pagination.pageSize,\n },\n }));\n },\n [onPageIndexChange, onStateChange, resolvedPageSize],\n );\n const handlePageSizePropChange = React.useCallback(\n (nextPageSize: number) => {\n onPageSizeChange?.(nextPageSize);\n onStateChange?.((current) => ({\n ...current,\n pagination: {\n pageIndex:\n resolvedPageIndex ?? current.pagination.pageIndex,\n pageSize: nextPageSize,\n },\n }));\n },\n [onPageSizeChange, onStateChange, resolvedPageIndex],\n );\n const runAction = React.useCallback(\n (\n context: Omit, \"error\">,\n action: () => void | Promise,\n ) => {\n runDataTableAction(action, context, onActionError);\n },\n [onActionError],\n );\n const guardedRowActions = React.useMemo(\n () =>\n rowActions.map((action) => ({\n ...action,\n onClick: (row: TData) => {\n runAction(\n {\n actionKey: action.key,\n row,\n source: \"rowAction\",\n },\n () => action.onClick(row),\n );\n },\n })),\n [rowActions, runAction],\n );\n const guardedOnRowClick = React.useMemo<\n DataTableProps[\"onRowClick\"]\n >(\n () =>\n onRowClick\n ? (context) => {\n runAction(\n {\n row: context.row,\n source: \"rowClick\",\n },\n () => onRowClick(context),\n );\n }\n : undefined,\n [onRowClick, runAction],\n );\n const handleEditError = React.useCallback(\n (error: unknown, row: TData) => {\n onActionError?.({\n error,\n row,\n source: \"edit\",\n });\n },\n [onActionError],\n );\n const {\n containerWidth,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n effectiveColumnVisibility,\n globalFilterValue,\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n localSearchValue,\n resolvedLoadingRowCount,\n resolvedToolbarQueryPlaceholder,\n selectedRows,\n setCurrentColumnFilters,\n setCurrentColumnOrder,\n setCurrentColumnPinning,\n setCurrentColumnVisibility,\n setCurrentExpanded,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n setLocalSearchValue,\n shouldRenderInitialLoading,\n tableData,\n tableGetRowId,\n visibleData,\n } = useDataTableState({\n columnFilters: resolvedColumnFilters,\n columnOrder: resolvedColumnOrder,\n columnPinning: resolvedColumnPinning,\n columnSizing: resolvedColumnSizing,\n columnPrefsKey,\n persistence,\n columnVisibility: resolvedColumnVisibility,\n columns,\n containerRef,\n data,\n density: resolvedDensity,\n enableRowSelection,\n enableToolbarQueryFiltering,\n expanded: resolvedExpanded,\n getRowId,\n hiddenRows,\n isLoading,\n loadingRowCount,\n manualFiltering,\n initialState,\n onColumnFiltersChange: handleColumnFiltersPropChange,\n onColumnOrderChange: handleColumnOrderPropChange,\n onColumnPinningChange: handleColumnPinningPropChange,\n onColumnSizingChange: handleColumnSizingPropChange,\n onColumnVisibilityChange: handleColumnVisibilityPropChange,\n onDensityChange: handleDensityPropChange,\n onExpandedChange: handleExpandedPropChange,\n onPageIndexChange: handlePageIndexPropChange,\n onRowSelectionChange: handleRowSelectionPropChange,\n onShowHiddenRowsChange: handleShowHiddenRowsPropChange,\n onSortingChange: handleSortingPropChange,\n onToolbarQueryValueChange: handleToolbarQueryValueChange,\n onViewModeChange: handleViewModePropChange,\n pageIndex: resolvedPageIndex,\n pageSize: resolvedPageSize,\n resolvedLabels,\n rowSelection: resolvedRowSelection,\n rowsPerPageOptions,\n selectionActions,\n showHiddenRows: resolvedShowHiddenRows,\n sorting: resolvedSorting,\n toolbarQueryDebounceMs,\n toolbarQueryPlaceholder,\n toolbarQueryValue: resolvedToolbarQueryValue,\n viewMode: resolvedViewMode,\n });\n const {\n cancelEditing,\n draftValues,\n editingRowId,\n isSavingEdit,\n saveEdit,\n setDraftValues,\n setEditingRowId,\n startEditingRow,\n } = useRowEditing({\n columns,\n editableRows,\n onError: handleEditError,\n });\n const { viewportElement: tableScrollElement, viewportHeight } =\n useDataTableScrollViewport(tableScrollContainerRef, currentViewMode);\n const openFileDialog = React.useCallback(() => {\n if (fileUpload?.disabled) {\n return;\n }\n\n fileInputRef.current?.click();\n }, [fileUpload?.disabled]);\n const handleSelectedFiles = React.useCallback(\n (files: FileList | Array) => {\n runAction(\n {\n source: \"fileUpload\",\n },\n () => fileUpload?.onFilesSelected(files),\n );\n },\n [fileUpload, runAction],\n );\n\n const tableColumns = useDataTableColumns({\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n editingRowId,\n enableRowSelection,\n getRowCanExpand,\n isSavingEdit,\n labels: resolvedLabels,\n lastSelectedRowIdRef,\n renderExpandedRow,\n rowActions: guardedRowActions,\n saveEdit,\n startEditingRow,\n tableRef,\n });\n\n const {\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n isPageCountKnown,\n renderedRows,\n reorderColumn,\n rowsToRender,\n sentinelRef,\n table,\n virtualPaddingBottom,\n virtualPaddingTop,\n visibleLeafColumns,\n } = useDataTableInstance({\n autoResetPageIndex: false,\n columnResizeMode,\n dir,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentColumnSizing,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentSorting,\n currentViewMode,\n defaultColumn,\n effectiveColumnVisibility,\n enableColumnResizing,\n enableRowSelection,\n getRowCanExpand,\n globalFilterFn,\n globalFilterValue,\n hasNextPage,\n handleColumnFiltersChange: setCurrentColumnFilters,\n handleColumnOrderChange: setCurrentColumnOrder,\n handleColumnPinningChange: setCurrentColumnPinning,\n handleColumnVisibilityChange: setCurrentColumnVisibility,\n handleExpandedChange: setCurrentExpanded,\n infiniteScroll,\n manualFiltering,\n manualPagination,\n manualSorting,\n onActionError,\n onPageIndexChange: handlePageIndexPropChange,\n onPageSizeChange: handlePageSizePropChange,\n pageCount,\n pageIndex: resolvedPageIndex,\n pageSize: resolvedPageSize,\n renderExpandedRow,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n shouldRenderInitialLoading,\n tableColumns,\n tableData,\n tableGetRowId,\n tableRef,\n tableScrollElement,\n totalRowCount,\n virtualization,\n viewportHeight,\n });\n const columnLayout = useColumnLayout({\n columns,\n columnSizing: currentColumnSizing,\n editableRows: Boolean(editableRows),\n enableRowSelection,\n hasRowActions: rowActions.length > 0,\n hasRowExpansion: Boolean(renderExpandedRow),\n layoutMode,\n uiClassNames,\n visibleLeafColumns,\n });\n const { explicitlySizedColumnIds, fillMinWidth, getColumnLayout } =\n columnLayout;\n const explicitCustomCellColumnIds = React.useMemo(() => {\n return new Set(\n getDataTableLeafColumns(columns).flatMap(({ column, index }) => {\n return Object.prototype.hasOwnProperty.call(column, \"cell\") &&\n typeof column.cell === \"function\"\n ? [getColumnId(column, index)]\n : [];\n }),\n );\n }, [columns]);\n const visibleLeafColumnCount = visibleLeafColumns.length;\n const bodyRowComponents = React.useMemo(\n () => ({\n Checkbox,\n Input,\n Skeleton,\n TableCell,\n TableRow,\n }),\n [],\n );\n const hasCardTitle = React.useMemo(\n () =>\n getDataTableLeafColumns(columns).some(\n ({ column }) => column.meta?.cardTitle,\n ),\n [columns],\n );\n const primeColumnForResize = React.useCallback(\n (columnId: string, currentSize: number) => {\n if (\n explicitlySizedColumnIds.has(columnId) ||\n Object.prototype.hasOwnProperty.call(\n table.getState().columnSizing,\n columnId,\n )\n ) {\n return;\n }\n\n flushSync(() => {\n table.setColumnSizing((current) => ({\n ...current,\n [columnId]: currentSize,\n }));\n });\n },\n [explicitlySizedColumnIds, table],\n );\n const resetColumnSize = React.useCallback(\n (columnId: string) => {\n if (explicitlySizedColumnIds.has(columnId)) {\n table.getColumn(columnId)?.resetSize();\n return;\n }\n\n table.setColumnSizing((current) => {\n if (!Object.prototype.hasOwnProperty.call(current, columnId)) {\n return current;\n }\n\n const next = { ...current };\n delete next[columnId];\n return next;\n });\n },\n [explicitlySizedColumnIds, table],\n );\n\n const filteredData = table\n .getFilteredRowModel()\n .rows.map((row) => row.original);\n const emptyNode =\n typeof emptyState === \"function\"\n ? emptyState({\n rows: filteredData,\n toolbarQueryValue: localSearchValue,\n })\n : emptyState;\n const {\n columnVisibilityOptions,\n effectiveToolbarActions,\n handleClearColumnFilters,\n handleToolbarColumnFilterChange,\n handleToolbarColumnPinningChange,\n toolbarColumnFilters,\n } = useDataTableToolbarFeatures({\n columns,\n currentColumnFilters,\n currentColumnPinning,\n csvExport,\n effectiveColumnVisibility,\n enableColumnFilters,\n handleColumnFiltersChange: setCurrentColumnFilters,\n handleColumnPinningChange: setCurrentColumnPinning,\n labels: resolvedLabels,\n table,\n toolbarActions,\n visibleData,\n });\n const guardedToolbarActions = React.useMemo(\n () =>\n effectiveToolbarActions.map((action) => ({\n ...action,\n onClick: (context: {\n rows: Array;\n openFileDialog?: () => void;\n }) => {\n runAction(\n {\n actionKey: action.key,\n source: \"toolbarAction\",\n },\n () => action.onClick(context),\n );\n },\n })),\n [effectiveToolbarActions, runAction],\n );\n const guardedSelectionActions = React.useMemo(\n () =>\n selectionActions.map((action) => ({\n ...action,\n onClick: (context: Parameters[0]) => {\n runAction(\n {\n actionKey: action.key,\n source: \"selectionAction\",\n },\n () => action.onClick(context),\n );\n },\n })),\n [runAction, selectionActions],\n );\n const currentDataTableState = React.useMemo(\n () => ({\n sorting: currentSorting,\n pagination: currentPagination,\n rowSelection: currentRowSelection,\n columnVisibility: currentColumnVisibility,\n columnFilters: currentColumnFilters,\n expanded: currentExpanded,\n columnOrder: currentColumnOrder,\n columnPinning: currentColumnPinning,\n columnSizing: currentColumnSizing,\n density: currentDensity,\n viewMode: currentViewMode,\n showHiddenRows: currentShowHiddenRows,\n globalFilter: localSearchValue,\n }),\n [\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n localSearchValue,\n ],\n );\n const getCurrentState = React.useCallback(\n () => cloneDataTableState(currentDataTableState),\n [currentDataTableState],\n );\n const restoreState = React.useCallback(\n (nextState: Partial) => {\n if (nextState.sorting !== undefined) {\n table.setSorting(nextState.sorting);\n }\n if (nextState.pagination !== undefined) {\n table.setPagination(nextState.pagination);\n }\n if (nextState.rowSelection !== undefined) {\n table.setRowSelection(nextState.rowSelection);\n }\n if (nextState.columnVisibility !== undefined) {\n table.setColumnVisibility(nextState.columnVisibility);\n }\n if (nextState.columnFilters !== undefined) {\n table.setColumnFilters(nextState.columnFilters);\n }\n if (nextState.expanded !== undefined) {\n table.setExpanded(nextState.expanded);\n }\n if (nextState.columnOrder !== undefined) {\n table.setColumnOrder(nextState.columnOrder);\n }\n if (nextState.columnPinning !== undefined) {\n table.setColumnPinning(nextState.columnPinning);\n }\n if (nextState.columnSizing !== undefined) {\n table.setColumnSizing(nextState.columnSizing);\n }\n if (nextState.density !== undefined) {\n handleDensityChange(nextState.density);\n }\n if (nextState.viewMode !== undefined) {\n handleViewModeChange(nextState.viewMode);\n }\n if (nextState.showHiddenRows !== undefined) {\n handleShowHiddenRowsChange(nextState.showHiddenRows);\n }\n if (nextState.globalFilter !== undefined) {\n setLocalSearchValue(nextState.globalFilter);\n }\n },\n [\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n setLocalSearchValue,\n table,\n ],\n );\n const clearPersistedState = React.useCallback(\n () => clearDataTableColumnPrefs(persistence ?? columnPrefsKey),\n [columnPrefsKey, persistence],\n );\n const resetColumnLayout = React.useCallback<\n DataTableApi[\"resetColumnLayout\"]\n >(\n (options) => {\n if (options?.clearPersistence) {\n clearPersistedState();\n }\n restoreState({\n columnVisibility: initialState?.columnVisibility ?? {},\n columnOrder: initialState?.columnOrder ?? [],\n columnPinning:\n initialState?.columnPinning ?? getInitialColumnPinning(columns),\n columnSizing: initialState?.columnSizing ?? {},\n });\n },\n [\n clearPersistedState,\n columns,\n initialState,\n restoreState,\n ],\n );\n const resetState = React.useCallback[\"resetState\"]>(\n (options) => {\n if (options?.clearPersistence) {\n clearPersistedState();\n }\n restoreState({\n sorting: initialState?.sorting ?? [],\n pagination: initialState?.pagination ?? {\n pageIndex: 0,\n pageSize: rowsPerPageOptions[0] ?? 20,\n },\n rowSelection: initialState?.rowSelection ?? {},\n columnVisibility: initialState?.columnVisibility ?? {},\n columnFilters: initialState?.columnFilters ?? [],\n expanded: initialState?.expanded ?? {},\n columnOrder: initialState?.columnOrder ?? [],\n columnPinning:\n initialState?.columnPinning ?? getInitialColumnPinning(columns),\n columnSizing: initialState?.columnSizing ?? {},\n density: initialState?.density ?? \"comfortable\",\n viewMode: initialState?.viewMode ?? \"table\",\n showHiddenRows: initialState?.showHiddenRows ?? false,\n globalFilter: initialState?.globalFilter ?? \"\",\n });\n },\n [\n clearPersistedState,\n columns,\n initialState,\n restoreState,\n rowsPerPageOptions,\n ],\n );\n const getSavedViews = React.useCallback(\n () => readDataTableSavedViews(savedViews),\n [savedViews],\n );\n const createSavedView = React.useCallback<\n DataTableApi[\"createSavedView\"]\n >(\n (name) =>\n createDataTableSavedView(savedViews, name, getCurrentState()),\n [getCurrentState, savedViews],\n );\n const applySavedView = React.useCallback<\n DataTableApi[\"applySavedView\"]\n >(\n (id) => {\n const view = readDataTableSavedViews(savedViews).find(\n (candidate) => candidate.id === id,\n );\n if (!view) {\n return false;\n }\n restoreState(view.state);\n savedViews?.onApply?.(view);\n return true;\n },\n [restoreState, savedViews],\n );\n const renameSavedView = React.useCallback<\n DataTableApi[\"renameSavedView\"]\n >(\n (id, name) => renameDataTableSavedView(savedViews, id, name),\n [savedViews],\n );\n const deleteSavedView = React.useCallback<\n DataTableApi[\"deleteSavedView\"]\n >(\n (id) => deleteDataTableSavedView(savedViews, id),\n [savedViews],\n );\n const clearSavedViews = React.useCallback(\n () => clearDataTableSavedViews(savedViews),\n [savedViews],\n );\n const exportCsvFromApi = React.useCallback<\n DataTableApi[\"exportCsv\"]\n >(\n (options) =>\n exportDataTableCsv({\n csvExport: options ?? (csvExport || true),\n labels: resolvedLabels,\n table,\n }),\n [csvExport, resolvedLabels, table],\n );\n React.useImperativeHandle(\n apiRef,\n () => ({\n getTable: () => tableRef.current,\n getState: getCurrentState,\n snapshot: getCurrentState,\n restore: restoreState,\n resetColumnLayout,\n resetState,\n clearPersistedState,\n getSavedViews,\n createSavedView,\n applySavedView,\n renameSavedView,\n deleteSavedView,\n clearSavedViews,\n focus: () => {\n containerRef.current?.focus();\n },\n scrollToRow: (rowId) =>\n scrollDataTableElementIntoView(containerRef.current, \"row\", rowId),\n scrollToColumn: (columnId) =>\n scrollDataTableElementIntoView(\n containerRef.current,\n \"column\",\n columnId,\n ),\n exportCsv: exportCsvFromApi,\n }),\n [\n applySavedView,\n clearPersistedState,\n clearSavedViews,\n createSavedView,\n deleteSavedView,\n exportCsvFromApi,\n getSavedViews,\n getCurrentState,\n renameSavedView,\n resetColumnLayout,\n resetState,\n restoreState,\n ],\n );\n\n return (\n \n \n {fileUpload ? (\n {\n const files = event.currentTarget.files;\n if (files?.length) {\n handleSelectedFiles(files);\n }\n event.currentTarget.value = \"\";\n }}\n />\n ) : null}\n \n \n {showToolbar ? (\n \n ) : null}\n\n \n {currentViewMode === \"card\" && cardRenderer ? (\n \n ) : (\n \n )}\n \n \n {children}\n \n \n \n \n \n );\n };\n}\n\nfunction runDataTableAction(\n action: () => void | Promise,\n context: Omit, \"error\">,\n onActionError: DataTableProps[\"onActionError\"],\n) {\n let result: void | Promise;\n try {\n result = action();\n } catch (error) {\n onActionError?.({ ...context, error });\n return;\n }\n\n void Promise.resolve(result).catch((error: unknown) => {\n onActionError?.({ ...context, error });\n });\n}\n\nfunction useDataTableStateSliceChange(\n key: K,\n onLegacyChange: ((value: DataTableState[K]) => void) | undefined,\n onStateChange: DataTableProps[\"onStateChange\"],\n) {\n const handleChange = React.useCallback(\n (value: DataTableState[K]) => {\n onLegacyChange?.(value);\n onStateChange?.((current) => ({\n ...current,\n [key]: value,\n }));\n },\n [key, onLegacyChange, onStateChange],\n );\n\n return onLegacyChange || onStateChange ? handleChange : undefined;\n}\n\nfunction useDataTableStateConflictWarnings(\n state: Partial | undefined,\n legacySlices: Record,\n) {\n const warnedSlicesRef = React.useRef(new Set());\n\n React.useEffect(() => {\n if (!state || !isDevelopmentEnvironment()) {\n return;\n }\n\n for (const key of Object.keys(legacySlices) as Array<\n keyof DataTableState\n >) {\n if (\n state[key] === undefined ||\n !legacySlices[key] ||\n warnedSlicesRef.current.has(key)\n ) {\n continue;\n }\n\n warnedSlicesRef.current.add(key);\n console.warn(\n `[data-table-pro] Both state.${key} and its legacy controlled prop were provided. The legacy prop takes precedence during the 4.x compatibility window.`,\n );\n }\n }, [legacySlices, state]);\n}\n\nfunction isDevelopmentEnvironment() {\n const nodeEnvironment = (\n globalThis as {\n process?: { env?: { NODE_ENV?: string } };\n }\n ).process?.env?.NODE_ENV;\n\n return nodeEnvironment !== \"production\";\n}\n\nfunction cloneDataTableState(state: DataTableState): DataTableState {\n return {\n sorting: state.sorting.map((item) => ({ ...item })),\n pagination: { ...state.pagination },\n rowSelection: { ...state.rowSelection },\n columnVisibility: { ...state.columnVisibility },\n columnFilters: state.columnFilters.map((item) => ({ ...item })),\n expanded:\n typeof state.expanded === \"boolean\"\n ? state.expanded\n : { ...state.expanded },\n columnOrder: [...state.columnOrder],\n columnPinning: {\n left: state.columnPinning.left\n ? [...state.columnPinning.left]\n : undefined,\n right: state.columnPinning.right\n ? [...state.columnPinning.right]\n : undefined,\n },\n columnSizing: { ...state.columnSizing },\n density: state.density,\n viewMode: state.viewMode,\n showHiddenRows: state.showHiddenRows,\n globalFilter: state.globalFilter,\n };\n}\n\nfunction scrollDataTableElementIntoView(\n container: HTMLDivElement | null,\n kind: \"row\" | \"column\",\n value: string,\n) {\n if (!container) {\n return false;\n }\n\n const attribute = kind === \"row\" ? \"data-row-id\" : \"data-column-id\";\n const element = Array.from(\n container.querySelectorAll(`[${attribute}]`),\n ).find((candidate) => candidate.getAttribute(attribute) === value);\n if (!element) {\n return false;\n }\n\n element.scrollIntoView?.({ block: \"nearest\", inline: \"nearest\" });\n return true;\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-ICUHQJ2O.js b/dist/chunk-ICUHQJ2O.js new file mode 100644 index 0000000..5509360 --- /dev/null +++ b/dist/chunk-ICUHQJ2O.js @@ -0,0 +1,2 @@ +import {a as a$1}from'./chunk-FXX3TZ63.js';import {a}from'./chunk-TUHIU4D7.js';import {j}from'./chunk-ICUCANNA.js';function b(r){return j(r,{CardPanel:a$1,TablePanel:a})}export{b as a};//# sourceMappingURL=chunk-ICUHQJ2O.js.map +//# sourceMappingURL=chunk-ICUHQJ2O.js.map \ No newline at end of file diff --git a/dist/chunk-Y2VSRDR3.js.map b/dist/chunk-ICUHQJ2O.js.map similarity index 92% rename from dist/chunk-Y2VSRDR3.js.map rename to dist/chunk-ICUHQJ2O.js.map index 72261f4..7fbd4fd 100644 --- a/dist/chunk-Y2VSRDR3.js.map +++ b/dist/chunk-ICUHQJ2O.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/core/data-table/create-virtual-data-table.ts"],"names":["createVirtualDataTable","ui","createDataTableWithPanels","DataTableVirtualCardPanel","DataTableVirtualTablePanel"],"mappings":"mHAKO,SAASA,CAAAA,CAAuBC,CAAAA,CAAoB,CACzD,OAAOC,CAAAA,CAA0BD,CAAAA,CAAI,CACnC,SAAA,CAAWE,GAAAA,CACX,UAAA,CAAYC,CACd,CAAC,CACH","file":"chunk-Y2VSRDR3.js","sourcesContent":["import type { DataTableUiKit } from \"../ui-kit\";\nimport { createDataTableWithPanels } from \"./create-data-table\";\nimport { DataTableVirtualCardPanel } from \"./data-table-virtual-card-panel\";\nimport { DataTableVirtualTablePanel } from \"./data-table-virtual-table-panel\";\n\nexport function createVirtualDataTable(ui: DataTableUiKit) {\n return createDataTableWithPanels(ui, {\n CardPanel: DataTableVirtualCardPanel,\n TablePanel: DataTableVirtualTablePanel,\n });\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../src/core/data-table/create-virtual-data-table.ts"],"names":["createVirtualDataTable","ui","createDataTableWithPanels","DataTableVirtualCardPanel","DataTableVirtualTablePanel"],"mappings":"mHAKO,SAASA,CAAAA,CAAuBC,CAAAA,CAAoB,CACzD,OAAOC,CAAAA,CAA0BD,CAAAA,CAAI,CACnC,SAAA,CAAWE,GAAAA,CACX,UAAA,CAAYC,CACd,CAAC,CACH","file":"chunk-ICUHQJ2O.js","sourcesContent":["import type { DataTableUiKit } from \"../ui-kit\";\nimport { createDataTableWithPanels } from \"./create-data-table\";\nimport { DataTableVirtualCardPanel } from \"./data-table-virtual-card-panel\";\nimport { DataTableVirtualTablePanel } from \"./data-table-virtual-table-panel\";\n\nexport function createVirtualDataTable(ui: DataTableUiKit) {\n return createDataTableWithPanels(ui, {\n CardPanel: DataTableVirtualCardPanel,\n TablePanel: DataTableVirtualTablePanel,\n });\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-JYNJ2FDX.js b/dist/chunk-JYNJ2FDX.js deleted file mode 100644 index ce06600..0000000 --- a/dist/chunk-JYNJ2FDX.js +++ /dev/null @@ -1,2 +0,0 @@ -import {Q}from'./chunk-ZGXFBFNQ.js';import {useVirtualizer}from'@tanstack/react-virtual';import {jsx}from'react/jsx-runtime';function z(i){let{renderedRows:o,shouldRenderInitialLoading:T,tableScrollElement:d,viewportHeight:m=0,virtualization:n}=i,l=typeof n=="object"?n:void 0,s=!T&&(n===true||l?.enabled===true),t=s&&!!d&&m>0,u=useVirtualizer({count:s?o.length:0,enabled:t,estimateSize:()=>l?.estimateRowHeight??48,getScrollElement:()=>d??null,overscan:l?.overscan??8}),r=t?u.getVirtualItems():[],g=t?r.flatMap(e=>{let a=o[e.index];return a?[{row:a,rowIndex:e.index}]:[]}):o.map((e,a)=>({row:e,rowIndex:a})),c=t?r[0]?.start??0:0,p=t?Math.max(0,u.getTotalSize()-(r.at(-1)?.end??c)):0;return jsx(Q,{...i,rowsToRender:g,virtualPaddingBottom:p,virtualPaddingTop:c})}export{z as a};//# sourceMappingURL=chunk-JYNJ2FDX.js.map -//# sourceMappingURL=chunk-JYNJ2FDX.js.map \ No newline at end of file diff --git a/dist/chunk-JYNJ2FDX.js.map b/dist/chunk-JYNJ2FDX.js.map deleted file mode 100644 index 0a5d56b..0000000 --- a/dist/chunk-JYNJ2FDX.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/core/data-table/data-table-virtual-table-panel.tsx"],"names":["DataTableVirtualTablePanel","props","renderedRows","shouldRenderInitialLoading","tableScrollElement","viewportHeight","virtualization","virtualizationConfig","enableVirtualization","shouldUseVirtualRows","rowVirtualizer","useVirtualizer","virtualItems","rowsToRender","virtualItem","row","rowIndex","virtualPaddingTop","virtualPaddingBottom","jsx","DataTableTablePanel"],"mappings":"6HAIO,SAASA,CAAAA,CACdC,CAAAA,CACA,CACA,GAAM,CACJ,YAAA,CAAAC,CAAAA,CACA,2BAAAC,CAAAA,CACA,kBAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,EAAiB,CAAA,CACjB,cAAA,CAAAC,CACF,CAAA,CAAIL,EACEM,CAAAA,CACJ,OAAOD,CAAAA,EAAmB,QAAA,CAAWA,EAAiB,MAAA,CAClDE,CAAAA,CACJ,CAACL,CAAAA,GACAG,IAAmB,IAAA,EAAQC,CAAAA,EAAsB,OAAA,GAAY,IAAA,CAAA,CAC1DE,CAAAA,CACJD,CAAAA,EAAwB,CAAA,CAAQJ,CAAAA,EAAuBC,EAAiB,CAAA,CAGpEK,CAAAA,CAAiBC,cAAAA,CAAe,CACpC,MAAOH,CAAAA,CAAuBN,CAAAA,CAAa,MAAA,CAAS,CAAA,CACpD,QAASO,CAAAA,CACT,YAAA,CAAc,IAAMF,CAAAA,EAAsB,mBAAqB,EAAA,CAC/D,gBAAA,CAAkB,IAAMH,CAAAA,EAAsB,KAC9C,QAAA,CAAUG,CAAAA,EAAsB,QAAA,EAAY,CAC9C,CAAC,CAAA,CACKK,CAAAA,CAAeH,CAAAA,CACjBC,CAAAA,CAAe,iBAAgB,CAC/B,EAAC,CACCG,CAAAA,CAAeJ,CAAAA,CACjBG,CAAAA,CAAa,OAAA,CAASE,CAAAA,EAAgB,CACpC,IAAMC,CAAAA,CAAMb,CAAAA,CAAaY,CAAAA,CAAY,KAAK,CAAA,CAC1C,OAAOC,CAAAA,CAAM,CAAC,CAAE,GAAA,CAAAA,CAAAA,CAAK,QAAA,CAAUD,CAAAA,CAAY,KAAM,CAAC,CAAA,CAAI,EACxD,CAAC,CAAA,CACDZ,CAAAA,CAAa,GAAA,CAAI,CAACa,EAAKC,CAAAA,IAAc,CAAE,GAAA,CAAAD,CAAAA,CAAK,SAAAC,CAAS,CAAA,CAAE,CAAA,CACrDC,CAAAA,CAAoBR,CAAAA,CACrBG,CAAAA,CAAa,CAAC,CAAA,EAAG,OAAS,CAAA,CAC3B,CAAA,CACEM,CAAAA,CAAuBT,CAAAA,CACzB,KAAK,GAAA,CACH,CAAA,CACAC,CAAAA,CAAe,YAAA,IACZE,CAAAA,CAAa,EAAA,CAAG,EAAE,CAAA,EAAG,KAAOK,CAAAA,CACjC,CAAA,CACA,CAAA,CAEJ,OACEE,IAACC,CAAAA,CAAA,CACE,GAAGnB,CAAAA,CACJ,aAAcY,CAAAA,CACd,oBAAA,CAAsBK,CAAAA,CACtB,iBAAA,CAAmBD,EACrB,CAEJ","file":"chunk-JYNJ2FDX.js","sourcesContent":["import { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { DataTableTablePanel } from \"./data-table-table-panel\";\nimport type { DataTableTablePanelProps } from \"./data-table-table-panel\";\n\nexport function DataTableVirtualTablePanel(\n props: DataTableTablePanelProps,\n) {\n const {\n renderedRows,\n shouldRenderInitialLoading,\n tableScrollElement,\n viewportHeight = 0,\n virtualization,\n } = props;\n const virtualizationConfig =\n typeof virtualization === \"object\" ? virtualization : undefined;\n const enableVirtualization =\n !shouldRenderInitialLoading &&\n (virtualization === true || virtualizationConfig?.enabled === true);\n const shouldUseVirtualRows =\n enableVirtualization && Boolean(tableScrollElement) && viewportHeight > 0;\n\n // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Virtual owns its instance functions.\n const rowVirtualizer = useVirtualizer({\n count: enableVirtualization ? renderedRows.length : 0,\n enabled: shouldUseVirtualRows,\n estimateSize: () => virtualizationConfig?.estimateRowHeight ?? 48,\n getScrollElement: () => tableScrollElement ?? null,\n overscan: virtualizationConfig?.overscan ?? 8,\n });\n const virtualItems = shouldUseVirtualRows\n ? rowVirtualizer.getVirtualItems()\n : [];\n const rowsToRender = shouldUseVirtualRows\n ? virtualItems.flatMap((virtualItem) => {\n const row = renderedRows[virtualItem.index];\n return row ? [{ row, rowIndex: virtualItem.index }] : [];\n })\n : renderedRows.map((row, rowIndex) => ({ row, rowIndex }));\n const virtualPaddingTop = shouldUseVirtualRows\n ? (virtualItems[0]?.start ?? 0)\n : 0;\n const virtualPaddingBottom = shouldUseVirtualRows\n ? Math.max(\n 0,\n rowVirtualizer.getTotalSize() -\n (virtualItems.at(-1)?.end ?? virtualPaddingTop),\n )\n : 0;\n\n return (\n \n );\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-M77BQPKU.js b/dist/chunk-M77BQPKU.js deleted file mode 100644 index 79dfa2f..0000000 --- a/dist/chunk-M77BQPKU.js +++ /dev/null @@ -1,2 +0,0 @@ -import {b as b$1}from'./chunk-PFB5LOU7.js';import*as u from'react';var b=Object.values(b$1).slice().sort((e,t)=>e-t);function T(e){let t=u.useRef(0),[o,s]=u.useState(0);return u.useEffect(()=>{let c=e.current;if(!c)return;let n=null,i=()=>{let l=R(c.clientWidth);l!==t.current&&(t.current=l,s(l));};if(i(),typeof ResizeObserver>"u")return;let r=new ResizeObserver(()=>{n!==null&&window.cancelAnimationFrame(n),n=window.requestAnimationFrame(()=>{n=null,i();});});return r.observe(c),()=>{n!==null&&window.cancelAnimationFrame(n),r.disconnect();}},[e]),o}function R(e){if(e<=0)return 0;let t=1;for(let o of b){if(e{let i=e.current?.querySelector("[data-slot='scroll-area-viewport']")??null;if(s(i),!i){n(0);return}let r=null,l=()=>{n(m=>{let d=i.clientHeight;return m===d?m:d});};if(l(),typeof ResizeObserver>"u")return;let f=new ResizeObserver(()=>{r!==null&&window.cancelAnimationFrame(r),r=window.requestAnimationFrame(()=>{r=null,l();});});return f.observe(i),()=>{r!==null&&window.cancelAnimationFrame(r),f.disconnect();}},[e,t]),{viewportElement:o,viewportHeight:c}}export{T as a,v as b};//# sourceMappingURL=chunk-M77BQPKU.js.map -//# sourceMappingURL=chunk-M77BQPKU.js.map \ No newline at end of file diff --git a/dist/chunk-M77BQPKU.js.map b/dist/chunk-M77BQPKU.js.map deleted file mode 100644 index f7fada9..0000000 --- a/dist/chunk-M77BQPKU.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/core/data-table/use-data-table-container-width.ts","../src/core/data-table/use-data-table-scroll-viewport.ts"],"names":["BREAKPOINT_WIDTHS","DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS","first","second","useDataTableContainerWidth","containerRef","widthRef","width","setWidth","element","frameId","updateWidth","nextWidth","quantizeContainerWidth","observer","bucket","breakpointWidth","useDataTableScrollViewport","refreshKey","viewportElement","setViewportElement","a","viewportHeight","setViewportHeight","updateHeight","currentHeight","nextHeight"],"mappings":"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","file":"chunk-M77BQPKU.js","sourcesContent":["import * as React from \"react\";\nimport { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS } from \"../types\";\n\nconst BREAKPOINT_WIDTHS = Object.values(DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS)\n .slice()\n .sort((first, second) => first - second);\n\nexport function useDataTableContainerWidth(\n containerRef: React.RefObject,\n) {\n const widthRef = React.useRef(0);\n const [width, setWidth] = React.useState(0);\n\n React.useEffect(() => {\n const element = containerRef.current;\n if (!element) {\n return;\n }\n\n let frameId: number | null = null;\n const updateWidth = () => {\n const nextWidth = quantizeContainerWidth(element.clientWidth);\n if (nextWidth === widthRef.current) {\n return;\n }\n\n widthRef.current = nextWidth;\n setWidth(nextWidth);\n };\n\n updateWidth();\n\n if (typeof ResizeObserver === \"undefined\") {\n return;\n }\n\n const observer = new ResizeObserver(() => {\n if (frameId !== null) {\n window.cancelAnimationFrame(frameId);\n }\n\n frameId = window.requestAnimationFrame(() => {\n frameId = null;\n updateWidth();\n });\n });\n\n observer.observe(element);\n\n return () => {\n if (frameId !== null) {\n window.cancelAnimationFrame(frameId);\n }\n observer.disconnect();\n };\n }, [containerRef]);\n\n return width;\n}\n\nfunction quantizeContainerWidth(width: number) {\n if (width <= 0) {\n return 0;\n }\n\n let bucket = 1;\n for (const breakpointWidth of BREAKPOINT_WIDTHS) {\n if (width < breakpointWidth) {\n break;\n }\n bucket = breakpointWidth;\n }\n\n return bucket;\n}\n","import * as React from \"react\";\n\nexport function useDataTableScrollViewport(\n containerRef: React.RefObject,\n refreshKey: unknown,\n) {\n const [viewportElement, setViewportElement] =\n React.useState(null);\n const [viewportHeight, setViewportHeight] = React.useState(0);\n\n React.useEffect(() => {\n const element =\n containerRef.current?.querySelector(\n \"[data-slot='scroll-area-viewport']\",\n ) ?? null;\n\n setViewportElement(element);\n if (!element) {\n setViewportHeight(0);\n return;\n }\n\n let frameId: number | null = null;\n const updateHeight = () => {\n setViewportHeight((currentHeight) => {\n const nextHeight = element.clientHeight;\n return currentHeight === nextHeight ? currentHeight : nextHeight;\n });\n };\n\n updateHeight();\n\n if (typeof ResizeObserver === \"undefined\") {\n return;\n }\n\n const observer = new ResizeObserver(() => {\n if (frameId !== null) {\n window.cancelAnimationFrame(frameId);\n }\n\n frameId = window.requestAnimationFrame(() => {\n frameId = null;\n updateHeight();\n });\n });\n\n observer.observe(element);\n\n return () => {\n if (frameId !== null) {\n window.cancelAnimationFrame(frameId);\n }\n observer.disconnect();\n };\n }, [containerRef, refreshKey]);\n\n return { viewportElement, viewportHeight };\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-PFB5LOU7.js.map b/dist/chunk-PFB5LOU7.js.map deleted file mode 100644 index df52e6d..0000000 --- a/dist/chunk-PFB5LOU7.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/lib/utils.ts","../src/core/types.ts"],"names":["cn","inputs","twMerge","clsx","DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS","isRowVisible","row","hiddenRows","showHiddenRows","resolveRowActionLabel","label","canUseRowAction","action","canEditRow","editableRows","alignClassName","align","resolveColumnAlign","type","headerAlignClassName","context","meta","cellAlignClassName","hideOnClassName","hideOn","value","isHiddenAtContainerWidth","containerWidth"],"mappings":"6DAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,KC0CaG,CAAAA,CAGT,CACF,EAAA,CAAI,GAAA,CACJ,EAAA,CAAI,GAAA,CACJ,GAAI,IAAA,CACJ,EAAA,CAAI,KACJ,KAAA,CAAO,IACT,EAkiBO,SAASC,CAAAA,CACdC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACA,CAKA,OAJI,CAACD,CAAAA,EAIDC,CAAAA,CACK,IAAA,CAGF,CAACD,CAAAA,CAAW,YAAYD,CAAG,CACpC,CAEO,SAASG,CAAAA,CACdC,CAAAA,CACAJ,EACA,CACA,OAAO,OAAOI,CAAAA,EAAU,UAAA,CAAaA,EAAMJ,CAAG,CAAA,CAAII,CACpD,CAEO,SAASC,CAAAA,CACdC,EACAN,CAAAA,CACA,CACA,OAAO,CAACM,CAAAA,CAAO,MAAA,GAASN,CAAG,CAC7B,CAEO,SAASO,CAAAA,CACdC,CAAAA,CACAR,CAAAA,CACA,CACA,OAAOQ,CAAAA,EAAc,WACjBA,CAAAA,CAAa,UAAA,CAAWR,CAAG,CAAA,CAC3B,CAAA,CAAQQ,CACd,CAEO,SAASC,CAAAA,CAAeC,EAAmC,CAChE,OAAQA,CAAAA,EACN,KAAK,QAAA,CACH,OAAO,aAAA,CACT,KAAK,KAAA,CACH,OAAO,YAAA,CACT,QACE,OAAO,WACX,CACF,CAEO,SAASC,CAAAA,CACdD,EACAE,CAAAA,CACA,CACA,OAAIF,CAAAA,GAIAE,CAAAA,GAAS,SAAA,CACJ,MAGF,OAAA,CACT,CAEO,SAASC,CAAAA,CACdC,CAAAA,CACA,CACA,IAAMC,CAAAA,CAAQD,CAAAA,CAAQ,MAAA,CAAO,SAAA,CAC1B,IAAA,CACH,OAAOL,EAAeE,CAAAA,CAAmBI,CAAAA,EAAM,MAAOA,CAAAA,EAAM,IAAI,CAAC,CACnE,CAEO,SAASC,CAAAA,CACdF,CAAAA,CACA,CACA,IAAMC,CAAAA,CAAQD,CAAAA,CAAQ,MAAA,CAAO,SAAA,CAC1B,IAAA,CACH,OAAOL,EAAeE,CAAAA,CAAmBI,CAAAA,EAAM,KAAA,CAAOA,CAAAA,EAAM,IAAI,CAAC,CACnE,CAEO,SAASE,EACdC,CAAAA,CAIA,CACA,OAAKA,CAAAA,CAAAA,CAIU,KAAA,CAAM,OAAA,CAAQA,CAAM,CAAA,CAAIA,CAAAA,CAAS,CAACA,CAAM,CAAA,EACzC,GAAA,CAAKC,CAAAA,EAAU,CAAA,WAAA,EAAcA,CAAK,EAAE,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,CAJ1D,MAKJ,CAEO,SAASC,CAAAA,CACdF,CAAAA,CAIAG,EACA,CACA,OAAI,CAACH,CAAAA,EAAUG,CAAAA,EAAkB,CAAA,CACxB,KAAA,CAAA,CAGM,KAAA,CAAM,OAAA,CAAQH,CAAM,CAAA,CAAIA,CAAAA,CAAS,CAACA,CAAM,CAAA,EACzC,IAAA,CACXC,GAAUE,CAAAA,CAAiBvB,CAAAA,CAAuCqB,CAAK,CAC1E,CACF","file":"chunk-PFB5LOU7.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import type * as React from \"react\";\nimport type {\n CellContext,\n ColumnFiltersState,\n ColumnDef,\n ColumnOrderState,\n ColumnPinningState,\n ColumnSizingState,\n ExpandedState,\n FilterFnOption,\n HeaderContext,\n PaginationState,\n Row,\n SortingState,\n Table as TanStackTable,\n Updater,\n VisibilityState,\n} from \"@tanstack/react-table\";\n\nexport type DataTableViewMode = \"table\" | \"card\";\n\nexport type DataTableAlign = \"start\" | \"center\" | \"end\";\nexport type DataTableColumnType = \"text\" | \"numeric\" | \"date\";\nexport type DataTableColumnFixed = \"left\" | \"right\";\nexport type DataTableContainerBreakpoint = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\nexport type DataTableDensity = \"compact\" | \"comfortable\" | \"spacious\";\nexport type DataTableCardSizing = \"fixed\" | \"content\" | \"fluid\";\nexport type DataTableCellOverflow =\n | \"truncate\"\n | \"clip\"\n | \"wrap\"\n | \"visible\";\nexport type DataTableColumnFilterType = \"text\" | \"select\" | \"multi\";\nexport type DataTableCsvExportScope =\n | \"filtered\"\n | \"page\"\n | \"selected\"\n | \"all\";\nexport type DataTableActionErrorSource =\n | \"toolbarAction\"\n | \"selectionAction\"\n | \"rowAction\"\n | \"rowClick\"\n | \"edit\"\n | \"fileUpload\"\n | \"infiniteScroll\";\n\nexport const DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS: Record<\n DataTableContainerBreakpoint,\n number\n> = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n \"2xl\": 1536,\n};\n\nexport type DataTableRowLoadingState = {\n isLoading: boolean;\n skeleton?: React.ReactNode;\n};\n\nexport type DataTableLoadingState = {\n isLoading: boolean;\n loadingRowCount?: number;\n};\n\nexport type DataTableCellEditRenderProps = {\n cell: CellContext;\n row: TData;\n value: TValue | undefined;\n draftValue: unknown;\n setDraftValue: (value: unknown) => void;\n};\n\nexport type DataTableColumnFilterOption = {\n label: string;\n value: string;\n};\n\nexport type DataTableColumnFilterConfig = {\n type: DataTableColumnFilterType;\n label?: string;\n placeholder?: string;\n options?:\n | Array\n | ((context: { rows: Array }) => Array);\n getOptionValue?: (value: TValue | undefined, row: TData) => string;\n};\n\nexport type DataTableColumnMeta = {\n type?: DataTableColumnType;\n fixed?: DataTableColumnFixed;\n cardTitle?: boolean;\n hideOn?: DataTableContainerBreakpoint | Array;\n minWidth?: number;\n align?: DataTableAlign;\n overflow?:\n | DataTableCellOverflow\n | ((args: {\n row: TData;\n value: TValue | undefined;\n }) => DataTableCellOverflow | undefined);\n headerClassName?: string;\n headerStyle?: React.CSSProperties;\n cellClassName?:\n | string\n | ((args: { row: TData; value: TValue | undefined }) => string | undefined);\n responsiveClassName?: string;\n skeleton?: (context: CellContext) => React.ReactNode;\n filter?: DataTableColumnFilterConfig;\n parseEditValue?: (value: unknown, context: CellContext) => unknown;\n formatEditValue?: (\n value: unknown,\n context: CellContext,\n ) => string;\n renderEditCell?: (\n props: DataTableCellEditRenderProps,\n ) => React.ReactNode;\n};\n\nexport type DataTableColumnDef = ColumnDef<\n TData,\n TValue\n> & {\n meta?: DataTableColumnMeta;\n columns?: Array>;\n};\n\nexport type DataTableColumnGroupDef = DataTableColumnDef<\n TData,\n unknown\n> & {\n id: string;\n columns: Array>;\n};\n\nexport type DataTableToolbarAction = {\n key: string;\n label: string;\n icon?: React.ComponentType<{ className?: string }>;\n iconOnly?: boolean;\n placement?: \"primary\" | \"trailing\";\n onClick: (context: {\n rows: Array;\n openFileDialog?: () => void;\n }) => void | Promise;\n variant?: \"default\" | \"secondary\" | \"outline\" | \"ghost\" | \"destructive\";\n disabled?: boolean;\n};\n\nexport type DataTableSelectionAction = {\n key: string;\n label: string;\n icon?: React.ComponentType<{ className?: string }>;\n iconOnly?: boolean;\n onClick: (context: { rows: Array }) => void | Promise;\n variant?: \"default\" | \"secondary\" | \"outline\" | \"ghost\" | \"destructive\";\n disabled?: boolean | ((rows: Array) => boolean);\n};\n\nexport type DataTableRowAction = {\n key: string;\n label: string | ((row: TData) => string);\n icon?: React.ComponentType<{ className?: string }>;\n onClick: (row: TData) => void | Promise;\n variant?: \"default\" | \"secondary\" | \"destructive\";\n hidden?: (row: TData) => boolean;\n disabled?: (row: TData) => boolean;\n};\n\nexport type DataTableColumnVisibilityOption = {\n id: string;\n label: string;\n visible: boolean;\n canHide: boolean;\n pinned?: false | DataTableColumnFixed;\n};\n\nexport type DataTableToolbarVisibility = {\n title?: boolean;\n search?: boolean;\n actions?: boolean;\n trailingActions?: boolean;\n options?: boolean;\n viewToggle?: boolean;\n customToolbar?: boolean;\n};\n\nexport type DataTableCardRendererProps = {\n row: TData;\n rowId: string;\n isSelected: boolean;\n onSelectedChange: (nextValue: boolean) => void;\n actions: Array>;\n isEditing: boolean;\n startEditing: () => void;\n cancelEditing: () => void;\n};\n\nexport type DataTableEditableRowsConfig = {\n canEditRow?: (row: TData) => boolean;\n getInitialValues?: (row: TData) => Record;\n onSaveRow: (\n row: TData,\n draftValues: Record,\n ) => void | Promise;\n};\n\nexport type DataTableInfiniteScroll = {\n enabled: boolean;\n hasMore: boolean;\n isLoadingMore?: boolean;\n onLoadMore: () => void | Promise;\n};\n\nexport type DataTableHiddenRowsConfig = {\n getIsHidden: (row: TData) => boolean;\n label?: string;\n};\n\nexport type DataTableEmptyStateContext = {\n rows: Array;\n toolbarQueryValue: string;\n};\n\nexport type DataTableDragAndDropConfig = {\n isDragging?: boolean;\n onDragEnter?: React.DragEventHandler;\n onDragOver?: React.DragEventHandler;\n onDragLeave?: React.DragEventHandler;\n onDrop?: React.DragEventHandler;\n getRowDraggable?: (row: TData) => boolean;\n onRowDragStart?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n onRowDragEnd?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n};\n\nexport type DataTableFileUploadConfig = {\n accept?: string;\n disabled?: boolean;\n multiple?: boolean;\n onFilesSelected: (files: FileList | Array) => void | Promise;\n};\n\nexport type DataTableVirtualizationConfig = {\n enabled?: boolean;\n estimateRowHeight?: number;\n overscan?: number;\n card?: DataTableCardVirtualizationConfig;\n};\n\nexport type DataTableCardVirtualizationConfig = {\n enabled?: boolean;\n estimateCardHeight?: number;\n overscan?: number;\n lanes?: number | \"auto\";\n};\n\nexport type DataTableExpandedRowProps = {\n row: TData;\n rowId: string;\n tableRow: Row;\n};\n\nexport type DataTableCsvExportOptions = {\n filename?: string;\n includeHeaders?: boolean;\n columns?: Array;\n scope?: DataTableCsvExportScope;\n escapeFormulaValues?: boolean;\n lineEnding?: \"\\n\" | \"\\r\\n\";\n getCellValue?: (context: {\n row: TData;\n rowId: string;\n columnId: string;\n value: unknown;\n }) => unknown;\n onExport?: (context: {\n csv: string;\n filename: string;\n rows: Array;\n scope: DataTableCsvExportScope;\n }) => void | Promise;\n};\n\nexport type DataTableActionErrorContext = {\n source: DataTableActionErrorSource;\n error: unknown;\n actionKey?: string;\n row?: TData;\n};\n\nexport type DataTableColumnPrefs = {\n visibility?: VisibilityState;\n sizing?: Record;\n order?: ColumnOrderState;\n pinning?: ColumnPinningState;\n density?: DataTableDensity;\n};\n\nexport type DataTablePersistenceSlice = keyof DataTableColumnPrefs;\n\nexport type DataTablePersistenceStorage = Pick<\n Storage,\n \"getItem\" | \"setItem\" | \"removeItem\"\n>;\n\nexport type DataTablePersistenceOperation =\n | \"read\"\n | \"write\"\n | \"remove\"\n | \"serialize\"\n | \"deserialize\"\n | \"migrate\";\n\nexport type DataTablePersistencePayload = {\n version: string | number;\n state: DataTableColumnPrefs;\n};\n\nexport type DataTablePersistenceConfig = {\n key: string;\n version?: string | number;\n slices?: Array;\n storage?: DataTablePersistenceStorage;\n serialize?: (payload: DataTablePersistencePayload) => string;\n deserialize?: (value: string) => unknown;\n migrate?: (\n payload: { version: unknown; state: unknown },\n targetVersion: string | number,\n ) => DataTableColumnPrefs | undefined;\n debounceMs?: number;\n onError?: (context: {\n error: unknown;\n operation: DataTablePersistenceOperation;\n }) => void;\n};\n\nexport type DataTableState = {\n sorting: SortingState;\n pagination: PaginationState;\n rowSelection: Record;\n columnVisibility: VisibilityState;\n columnFilters: ColumnFiltersState;\n expanded: ExpandedState;\n columnOrder: ColumnOrderState;\n columnPinning: ColumnPinningState;\n columnSizing: ColumnSizingState;\n density: DataTableDensity;\n viewMode: DataTableViewMode;\n showHiddenRows: boolean;\n globalFilter: string;\n};\n\nexport type DataTableInitialState = Partial;\n\nexport type DataTableSavedViewSlice = keyof DataTableState;\n\nexport type DataTableSavedView = {\n id: string;\n name: string;\n createdAt: string;\n updatedAt: string;\n state: Partial;\n};\n\nexport type DataTableSavedViewsPayload = {\n version: string | number;\n views: Array;\n};\n\nexport type DataTableSavedViewsChangeOperation =\n | \"create\"\n | \"rename\"\n | \"delete\"\n | \"clear\";\n\nexport type DataTableSavedViewsConfig = {\n key: string;\n version?: string | number;\n slices?: Array;\n storage?: DataTablePersistenceStorage;\n serialize?: (payload: DataTableSavedViewsPayload) => string;\n deserialize?: (value: string) => unknown;\n migrate?: (\n payload: { version: unknown; views: unknown },\n targetVersion: string | number,\n ) => Array | undefined;\n onChange?: (\n views: Array,\n operation: DataTableSavedViewsChangeOperation,\n ) => void;\n onApply?: (view: DataTableSavedView) => void;\n onError?: (context: {\n error: unknown;\n operation: DataTablePersistenceOperation;\n }) => void;\n};\n\nexport type DataTableResetOptions = {\n clearPersistence?: boolean;\n};\n\nexport type DataTableApi = {\n getTable: () => TanStackTable | null;\n getState: () => DataTableState;\n snapshot: () => DataTableState;\n restore: (state: Partial) => void;\n resetColumnLayout: (options?: DataTableResetOptions) => void;\n resetState: (options?: DataTableResetOptions) => void;\n clearPersistedState: () => boolean;\n getSavedViews: () => Array;\n createSavedView: (name: string) => DataTableSavedView | undefined;\n applySavedView: (id: string) => boolean;\n renameSavedView: (\n id: string,\n name: string,\n ) => DataTableSavedView | undefined;\n deleteSavedView: (id: string) => boolean;\n clearSavedViews: () => boolean;\n focus: () => void;\n scrollToRow: (rowId: string) => boolean;\n scrollToColumn: (columnId: string) => boolean;\n exportCsv: (\n options?: boolean | DataTableCsvExportOptions,\n ) => Promise;\n};\n\nexport type DataTableLabels = {\n searchPlaceholder: string;\n searchTable: string;\n clearSearch: string;\n noRowsTitle: string;\n noRowsDescription: string;\n noMatchingRowsTitle: string;\n noMatchingRowsDescription: string;\n tableOptions: string;\n columns: string;\n filters: string;\n clearFilters: string;\n selectedRows: (count: number) => string;\n showHiddenRows: (label: string) => string;\n recordsPerPage: string;\n totalRecords: (count: number) => string;\n pageStatus: (pageIndex: number, pageCount: number) => string;\n pageStatusUnknown?: (pageIndex: number) => string;\n pagination?: string;\n morePages?: string;\n firstPage: string;\n previousPage: string;\n nextPage: string;\n lastPage: string;\n selectAllVisibleRows?: string;\n selectRow?: string;\n selectCardRow?: (rowId: string) => string;\n switchToTableView?: string;\n switchToCardView?: string;\n tableView?: string;\n cardView?: string;\n allFilterOptions?: string;\n actions: string;\n rowActions: string;\n editRow: string;\n saveEdit: string;\n cancelEdit: string;\n expandRow: string;\n collapseRow: string;\n exportCsv: string;\n density: string;\n compactDensity: string;\n comfortableDensity: string;\n spaciousDensity: string;\n pinLeft: string;\n pinRight: string;\n unpin: string;\n};\n\nexport type DataTableSummaryRow = {\n key: string;\n label?: React.ReactNode;\n cells: Record<\n string,\n React.ReactNode | ((context: { rows: Array; columnId: string }) => React.ReactNode)\n >;\n};\n\nexport type DataTableProps = {\n columns: Array>;\n data: Array;\n getRowId: (row: TData, index: number) => string;\n children?: React.ReactNode;\n title?: string;\n description?: string;\n toolbarQueryValue?: string;\n onToolbarQueryValueChange?: (value: string) => void;\n toolbarQueryPlaceholder?: string;\n toolbarQueryDebounceMs?: number;\n manualFiltering?: boolean;\n enableToolbarQueryFiltering?: boolean;\n globalFilterFn?: FilterFnOption;\n columnFilters?: ColumnFiltersState;\n onColumnFiltersChange?: (filters: ColumnFiltersState) => void;\n enableColumnFilters?: boolean;\n customToolbar?: React.ReactNode;\n compactToolbar?: React.ReactNode;\n rowsPerPageOptions?: Array;\n totalRowCount?: number;\n hasNextPage?: boolean;\n sorting?: SortingState;\n onSortingChange?: (sorting: SortingState) => void;\n manualSorting?: boolean;\n pageIndex?: number;\n pageSize?: number;\n onPageIndexChange?: (pageIndex: number) => void;\n onPageSizeChange?: (pageSize: number) => void;\n pageCount?: number;\n manualPagination?: boolean;\n rowSelection?: Record;\n onRowSelectionChange?: (rowSelection: Record) => void;\n enableRowSelection?: boolean;\n expanded?: ExpandedState;\n onExpandedChange?: (expanded: ExpandedState) => void;\n getRowCanExpand?: (row: TData) => boolean;\n renderExpandedRow?: (\n props: DataTableExpandedRowProps,\n ) => React.ReactNode;\n columnOrder?: ColumnOrderState;\n onColumnOrderChange?: (columnOrder: ColumnOrderState) => void;\n enableColumnReordering?: boolean;\n columnPinning?: ColumnPinningState;\n onColumnPinningChange?: (columnPinning: ColumnPinningState) => void;\n enableColumnPinning?: boolean;\n toolbarActions?: Array>;\n selectionActions?: Array>;\n rowActions?: Array>;\n csvExport?: boolean | DataTableCsvExportOptions;\n density?: DataTableDensity;\n onDensityChange?: (density: DataTableDensity) => void;\n enableDensityToggle?: boolean;\n columnPrefsKey?: string;\n persistence?: DataTablePersistenceConfig;\n savedViews?: DataTableSavedViewsConfig;\n initialState?: DataTableInitialState;\n state?: Partial;\n onStateChange?: (updater: Updater) => void;\n apiRef?: React.Ref>;\n labels?: Partial;\n summaryRows?: Array>;\n cardRenderer?: (props: DataTableCardRendererProps) => React.ReactNode;\n cardSizing?: DataTableCardSizing;\n cardGridClassName?: string;\n cardClassName?: string;\n viewMode?: DataTableViewMode;\n onViewModeChange?: (viewMode: DataTableViewMode) => void;\n enableViewToggle?: boolean;\n emptyState?:\n | React.ReactNode\n | ((context: DataTableEmptyStateContext) => React.ReactNode);\n isLoading?: boolean;\n loadingRowCount?: number;\n getRowLoadingState?: (\n row: TData,\n index: number,\n ) => boolean | DataTableRowLoadingState;\n hiddenRows?: DataTableHiddenRowsConfig;\n showHiddenRows?: boolean;\n onShowHiddenRowsChange?: (showHiddenRows: boolean) => void;\n infiniteScroll?: DataTableInfiniteScroll;\n editableRows?: DataTableEditableRowsConfig;\n columnVisibility?: VisibilityState;\n onColumnVisibilityChange?: (visibility: VisibilityState) => void;\n columnSizing?: ColumnSizingState;\n onColumnSizingChange?: (sizing: ColumnSizingState) => void;\n enableColumnResizing?: boolean;\n columnResizeMode?: \"onChange\" | \"onEnd\";\n layoutMode?: \"fill\" | \"fit\";\n stickyHeader?: boolean;\n showFooter?: boolean;\n showToolbar?: boolean;\n dir?: \"ltr\" | \"rtl\";\n flexGrow?: boolean;\n toolbarVisibility?: DataTableToolbarVisibility;\n className?: string;\n tableClassName?: string;\n tableContainerClassName?: string;\n getRowClassName?: (row: TData) => string | undefined;\n onRowClick?: (context: { row: TData; rowId: string }) => void | Promise;\n onActionError?: (context: DataTableActionErrorContext) => void;\n dragAndDrop?: DataTableDragAndDropConfig;\n fileUpload?: DataTableFileUploadConfig;\n virtualization?: boolean | DataTableVirtualizationConfig;\n};\n\nexport function isRowVisible(\n row: TData,\n hiddenRows: DataTableHiddenRowsConfig | undefined,\n showHiddenRows: boolean,\n) {\n if (!hiddenRows) {\n return true;\n }\n\n if (showHiddenRows) {\n return true;\n }\n\n return !hiddenRows.getIsHidden(row);\n}\n\nexport function resolveRowActionLabel(\n label: DataTableRowAction[\"label\"],\n row: TData,\n) {\n return typeof label === \"function\" ? label(row) : label;\n}\n\nexport function canUseRowAction(\n action: DataTableRowAction,\n row: TData,\n) {\n return !action.hidden?.(row);\n}\n\nexport function canEditRow(\n editableRows: DataTableEditableRowsConfig | undefined,\n row: TData,\n) {\n return editableRows?.canEditRow\n ? editableRows.canEditRow(row)\n : Boolean(editableRows);\n}\n\nexport function alignClassName(align: DataTableAlign | undefined) {\n switch (align) {\n case \"center\":\n return \"text-center\";\n case \"end\":\n return \"text-right\";\n default:\n return \"text-left\";\n }\n}\n\nexport function resolveColumnAlign(\n align: DataTableAlign | undefined,\n type: DataTableColumnType | undefined,\n) {\n if (align) {\n return align;\n }\n\n if (type === \"numeric\") {\n return \"end\";\n }\n\n return \"start\";\n}\n\nexport function headerAlignClassName(\n context: HeaderContext,\n) {\n const meta = (context.column.columnDef as DataTableColumnDef)\n .meta;\n return alignClassName(resolveColumnAlign(meta?.align, meta?.type));\n}\n\nexport function cellAlignClassName(\n context: CellContext,\n) {\n const meta = (context.column.columnDef as DataTableColumnDef)\n .meta;\n return alignClassName(resolveColumnAlign(meta?.align, meta?.type));\n}\n\nexport function hideOnClassName(\n hideOn:\n | DataTableContainerBreakpoint\n | Array\n | undefined,\n) {\n if (!hideOn) {\n return undefined;\n }\n\n const values = Array.isArray(hideOn) ? hideOn : [hideOn];\n return values.map((value) => `dt-hide-on-${value}`).join(\" \");\n}\n\nexport function isHiddenAtContainerWidth(\n hideOn:\n | DataTableContainerBreakpoint\n | Array\n | undefined,\n containerWidth: number,\n) {\n if (!hideOn || containerWidth <= 0) {\n return false;\n }\n\n const values = Array.isArray(hideOn) ? hideOn : [hideOn];\n return values.some(\n (value) => containerWidth < DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS[value],\n );\n}\n\nexport function rowSelectionStateFromRows(rows: Array>) {\n return rows.map((row) => row.original);\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-NC2TEQVN.js b/dist/chunk-TER4YPQI.js similarity index 97% rename from dist/chunk-NC2TEQVN.js rename to dist/chunk-TER4YPQI.js index f143e2d..d8c0fce 100644 --- a/dist/chunk-NC2TEQVN.js +++ b/dist/chunk-TER4YPQI.js @@ -1,2 +1,2 @@ -import {X as X$1,a as a$1,c,d,f,h,i,j as j$1,k,l,m,n,p,o,q as q$1,s,t,u,z,w,B,G,H,I,J as J$1,L,b,N,O as O$1,P,Q as Q$1,R,T,S,U,V as V$1,W as W$1}from'./chunk-7EXRF7VC.js';import {a}from'./chunk-PFB5LOU7.js';import'react';import {jsx}from'react/jsx-runtime';function e(N,z){return function({className:F,...K}){return jsx(N,{className:a(z,F),...K})}}var $=e(a$1,"rounded-md border border-cyan-400/45 bg-black/75 font-mono text-[0.8rem] tracking-[0.045em] text-cyan-50 uppercase shadow-[0_0_0_1px_rgba(34,211,238,0.12),0_0_18px_rgba(34,211,238,0.1)] data-[variant=default]:bg-cyan-300 data-[variant=default]:text-slate-950 data-[variant=outline]:bg-black/55 data-[variant=ghost]:border-transparent data-[variant=ghost]:bg-transparent data-[variant=ghost]:hover:bg-cyan-400/10 data-[variant=secondary]:bg-cyan-400/12 data-[variant=destructive]:border-rose-400/50 data-[variant=destructive]:bg-rose-500/15 data-[variant=destructive]:text-rose-200"),O=e(c,"rounded-md border border-cyan-400/35 bg-[linear-gradient(180deg,rgba(0,229,255,0.055),transparent_58%),rgba(1,8,11,0.9)] font-mono text-cyan-50 shadow-[inset_0_1px_0_rgba(125,211,252,0.08),0_0_0_1px_rgba(34,211,238,0.12),0_0_28px_rgba(34,211,238,0.08)] ring-0"),V=e(d,"px-5 pt-5 pb-3"),W=e(f,"px-5 pb-5"),q=e(h,"rounded-sm border-cyan-400/55 bg-black/65 ring-cyan-300/70 data-checked:bg-cyan-300 data-checked:text-slate-950 data-checked:ring-cyan-300"),J=e(i,"rounded-md border border-cyan-400/35 bg-black/92 font-mono text-cyan-50 shadow-[0_0_26px_rgba(34,211,238,0.16)] ring-0 before:hidden **:data-[slot$=-item]:focus:bg-cyan-400/12 **:data-[slot$=-item]:data-highlighted:bg-cyan-400/12 **:data-[slot$=-separator]:bg-cyan-400/18 **:data-[slot$=-trigger]:focus:bg-cyan-400/12"),Q=e(j$1,"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50 data-[variant=destructive]:text-rose-200 data-[variant=destructive]:focus:bg-rose-500/15"),X=e(k,"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50"),Y=e(l,"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50"),Z=e(m,"font-mono text-[0.68rem] tracking-[0.16em] text-cyan-200/70 uppercase"),j=e(n,"bg-cyan-400/20"),ee=e(p,"rounded-md border border-cyan-400/35 bg-black/92 font-mono text-cyan-50 shadow-[0_0_26px_rgba(34,211,238,0.16)] ring-0 before:hidden"),te=e(o,"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50 data-open:bg-cyan-400/12 data-open:text-cyan-50"),ae=e(q$1,"rounded-md border-cyan-400/35 bg-black/80 font-mono text-cyan-50"),re=e(s,"[&[data-variant=icon]]:rounded-xl [&[data-variant=icon]]:bg-cyan-400/12 [&[data-variant=icon]]:text-cyan-200"),ne=e(t,"text-cyan-50"),oe=e(u,"text-cyan-100/70"),de=e(z,"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 placeholder:text-cyan-100/45 focus-visible:ring-cyan-300/70"),ie=e(w,"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 shadow-[0_0_18px_rgba(34,211,238,0.06)]"),ce=e(B,"rounded-md border-cyan-400/35 bg-black/55 font-mono text-cyan-50 hover:bg-cyan-400/12 data-[active=true]:bg-cyan-300 data-[active=true]:text-slate-950"),be=e(G,"rounded-md border border-cyan-400/35 bg-black/72 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_26px_rgba(34,211,238,0.08)]"),se=e(H,"[&>[data-slot=scroll-area-thumb]]:bg-cyan-300/65"),le=e(I,"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 focus-visible:ring-cyan-300/70"),pe=e(J$1,"rounded-md border border-cyan-400/35 bg-black/95 font-mono text-cyan-50 ring-0 shadow-[0_0_26px_rgba(34,211,238,0.16)] before:hidden"),me=e(L,"rounded-sm focus:bg-cyan-400/12 focus:text-cyan-50"),ge=e(b,"bg-cyan-400/20"),ye=e(N,"rounded-md bg-cyan-400/12"),ue=e(O$1,"border-separate border-spacing-0 border border-cyan-400/45 bg-black/72 font-mono text-[0.84rem] text-cyan-50 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_24px_rgba(34,211,238,0.08)]"),xe=e(P,"[&_tr]:border-cyan-400/45"),ve=e(Q$1,"[&_tr:last-child]:border-b"),_e=e(R,"border-cyan-400/40 bg-cyan-400/10 font-mono"),Te=e(T,"h-12 border-b border-cyan-400/45 bg-cyan-950/20 px-3 font-mono text-[0.68rem] font-bold tracking-[0.18em] text-cyan-300 uppercase"),Ce=e(S,"border-cyan-400/25 hover:bg-cyan-400/10 data-[state=selected]:bg-cyan-400/15"),fe=e(U,"border-b border-cyan-400/16 px-3 py-3 font-mono text-cyan-50"),ke=e(V$1,"font-mono text-cyan-100/65"),we=e(W$1,"rounded-md bg-black text-cyan-50 ring-1 ring-cyan-400/35 shadow-[0_0_22px_rgba(34,211,238,0.18)] [&>svg]:bg-black [&>svg]:fill-black"),Me={...X$1,rootClassName:"dtp-thegridcn",classNames:{card:"hover:bg-cyan-400/10 data-[state=selected]:bg-cyan-400/15",cardGrid:"bg-transparent",cardItem:"min-w-0",cardOverlay:"from-black/95 via-black/75 to-transparent",cardScrollArea:"bg-transparent",cardSelected:"bg-cyan-400/15 ring-cyan-300/70",cardUnselected:"border-cyan-400/35",cardViewport:"bg-transparent",cellBorder:"border-cyan-400/16",columnGroupHeader:"bg-cyan-400/10 text-cyan-200",dragActive:"rounded-md border-dashed border-cyan-300",emptyState:"border-cyan-400/35 bg-black/80",footer:"border-cyan-400/40 bg-black/80 text-cyan-50",headerSortIcon:"text-cyan-100/65",mutedText:"text-cyan-100/70",paginationSelectTrigger:"border-cyan-400/45 bg-black/70 text-cyan-50",paginationTotal:"text-cyan-100/70",pinnedColumn:"border-cyan-400/25",pinnedUtilityColumn:"bg-black/80",resizeHandle:"after:bg-cyan-400/20 hover:after:bg-cyan-300",resizeHandleActive:"after:bg-cyan-300",row:"hover:bg-cyan-400/10 data-[state=selected]:!bg-cyan-400/15",rowSelected:"!bg-cyan-400/15",tableContainer:"border-cyan-400/35 bg-black/72 text-cyan-50 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_26px_rgba(34,211,238,0.08)]",tableScrollArea:"bg-black/72",tableStickyHeader:"sticky top-0 z-30 bg-black/90 backdrop-blur [&_th]:border-cyan-400/45 [&_th]:bg-black/90",toolbarCompactIconButton:"size-7",toolbarIconButton:"text-cyan-100/70 hover:text-cyan-50",toolbarInputButton:"border-cyan-400/45 bg-black/70 text-cyan-50"},Button:$,Card:O,CardContent:W,CardHeader:V,Checkbox:q,DropdownMenuCheckboxItem:X,DropdownMenuContent:J,DropdownMenuItem:Q,DropdownMenuLabel:Z,DropdownMenuRadioItem:Y,DropdownMenuSeparator:j,DropdownMenuSubContent:ee,DropdownMenuSubTrigger:te,Empty:ae,EmptyDescription:oe,EmptyMedia:re,EmptyTitle:ne,Input:de,InputGroup:ie,PaginationLink:ce,ScrollArea:be,ScrollBar:se,SelectContent:pe,SelectItem:me,SelectTrigger:le,Separator:ge,Skeleton:ye,Table:ue,TableBody:ve,TableCaption:ke,TableCell:fe,TableFooter:_e,TableHead:Te,TableHeader:xe,TableRow:Ce,TooltipContent:we};export{Me as a};//# sourceMappingURL=chunk-NC2TEQVN.js.map -//# sourceMappingURL=chunk-NC2TEQVN.js.map \ No newline at end of file +import {X as X$1,a as a$1,c,d,f,h,i,j as j$1,k,l,m,n,p,o,q as q$1,s,t,u,z,w,B,G,H,I,J as J$1,L,b,N,O as O$1,P,Q as Q$1,R,T,S,U,V as V$1,W as W$1}from'./chunk-ERWHHOBD.js';import {a}from'./chunk-674VSOYY.js';import'react';import {jsx}from'react/jsx-runtime';function e(N,z){return function({className:F,...K}){return jsx(N,{className:a(z,F),...K})}}var $=e(a$1,"rounded-md border border-cyan-400/45 bg-black/75 font-mono text-[0.8rem] tracking-[0.045em] text-cyan-50 uppercase shadow-[0_0_0_1px_rgba(34,211,238,0.12),0_0_18px_rgba(34,211,238,0.1)] data-[variant=default]:bg-cyan-300 data-[variant=default]:text-slate-950 data-[variant=outline]:bg-black/55 data-[variant=ghost]:border-transparent data-[variant=ghost]:bg-transparent data-[variant=ghost]:hover:bg-cyan-400/10 data-[variant=secondary]:bg-cyan-400/12 data-[variant=destructive]:border-rose-400/50 data-[variant=destructive]:bg-rose-500/15 data-[variant=destructive]:text-rose-200"),O=e(c,"rounded-md border border-cyan-400/35 bg-[linear-gradient(180deg,rgba(0,229,255,0.055),transparent_58%),rgba(1,8,11,0.9)] font-mono text-cyan-50 shadow-[inset_0_1px_0_rgba(125,211,252,0.08),0_0_0_1px_rgba(34,211,238,0.12),0_0_28px_rgba(34,211,238,0.08)] ring-0"),V=e(d,"px-5 pt-5 pb-3"),W=e(f,"px-5 pb-5"),q=e(h,"rounded-sm border-cyan-400/55 bg-black/65 ring-cyan-300/70 data-checked:bg-cyan-300 data-checked:text-slate-950 data-checked:ring-cyan-300"),J=e(i,"rounded-md border border-cyan-400/35 bg-black/92 font-mono text-cyan-50 shadow-[0_0_26px_rgba(34,211,238,0.16)] ring-0 before:hidden **:data-[slot$=-item]:focus:bg-cyan-400/12 **:data-[slot$=-item]:data-highlighted:bg-cyan-400/12 **:data-[slot$=-separator]:bg-cyan-400/18 **:data-[slot$=-trigger]:focus:bg-cyan-400/12"),Q=e(j$1,"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50 data-[variant=destructive]:text-rose-200 data-[variant=destructive]:focus:bg-rose-500/15"),X=e(k,"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50"),Y=e(l,"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50"),Z=e(m,"font-mono text-[0.68rem] tracking-[0.16em] text-cyan-200/70 uppercase"),j=e(n,"bg-cyan-400/20"),ee=e(p,"rounded-md border border-cyan-400/35 bg-black/92 font-mono text-cyan-50 shadow-[0_0_26px_rgba(34,211,238,0.16)] ring-0 before:hidden"),te=e(o,"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50 data-open:bg-cyan-400/12 data-open:text-cyan-50"),ae=e(q$1,"rounded-md border-cyan-400/35 bg-black/80 font-mono text-cyan-50"),re=e(s,"[&[data-variant=icon]]:rounded-xl [&[data-variant=icon]]:bg-cyan-400/12 [&[data-variant=icon]]:text-cyan-200"),ne=e(t,"text-cyan-50"),oe=e(u,"text-cyan-100/70"),de=e(z,"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 placeholder:text-cyan-100/45 focus-visible:ring-cyan-300/70"),ie=e(w,"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 shadow-[0_0_18px_rgba(34,211,238,0.06)]"),ce=e(B,"rounded-md border-cyan-400/35 bg-black/55 font-mono text-cyan-50 hover:bg-cyan-400/12 data-[active=true]:bg-cyan-300 data-[active=true]:text-slate-950"),be=e(G,"rounded-md border border-cyan-400/35 bg-black/72 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_26px_rgba(34,211,238,0.08)]"),se=e(H,"[&>[data-slot=scroll-area-thumb]]:bg-cyan-300/65"),le=e(I,"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 focus-visible:ring-cyan-300/70"),pe=e(J$1,"rounded-md border border-cyan-400/35 bg-black/95 font-mono text-cyan-50 ring-0 shadow-[0_0_26px_rgba(34,211,238,0.16)] before:hidden"),me=e(L,"rounded-sm focus:bg-cyan-400/12 focus:text-cyan-50"),ge=e(b,"bg-cyan-400/20"),ye=e(N,"rounded-md bg-cyan-400/12"),ue=e(O$1,"border-separate border-spacing-0 border border-cyan-400/45 bg-black/72 font-mono text-[0.84rem] text-cyan-50 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_24px_rgba(34,211,238,0.08)]"),xe=e(P,"[&_tr]:border-cyan-400/45"),ve=e(Q$1,"[&_tr:last-child]:border-b"),_e=e(R,"border-cyan-400/40 bg-cyan-400/10 font-mono"),Te=e(T,"h-12 border-b border-cyan-400/45 bg-cyan-950/20 px-3 font-mono text-[0.68rem] font-bold tracking-[0.18em] text-cyan-300 uppercase"),Ce=e(S,"border-cyan-400/25 hover:bg-cyan-400/10 data-[state=selected]:bg-cyan-400/15"),fe=e(U,"border-b border-cyan-400/16 px-3 py-3 font-mono text-cyan-50"),ke=e(V$1,"font-mono text-cyan-100/65"),we=e(W$1,"rounded-md bg-black text-cyan-50 ring-1 ring-cyan-400/35 shadow-[0_0_22px_rgba(34,211,238,0.18)] [&>svg]:bg-black [&>svg]:fill-black"),Me={...X$1,rootClassName:"dtp-thegridcn",classNames:{card:"hover:bg-cyan-400/10 data-[state=selected]:bg-cyan-400/15",cardGrid:"bg-transparent",cardItem:"min-w-0",cardOverlay:"from-black/95 via-black/75 to-transparent",cardScrollArea:"bg-transparent",cardSelected:"bg-cyan-400/15 ring-cyan-300/70",cardUnselected:"border-cyan-400/35",cardViewport:"bg-transparent",cellBorder:"border-cyan-400/16",columnGroupHeader:"bg-cyan-400/10 text-cyan-200",dragActive:"rounded-md border-dashed border-cyan-300",emptyState:"border-cyan-400/35 bg-black/80",footer:"border-cyan-400/40 bg-black/80 text-cyan-50",headerSortIcon:"text-cyan-100/65",mutedText:"text-cyan-100/70",paginationSelectTrigger:"border-cyan-400/45 bg-black/70 text-cyan-50",paginationTotal:"text-cyan-100/70",pinnedColumn:"border-cyan-400/25",pinnedUtilityColumn:"bg-black/80",resizeHandle:"after:bg-cyan-400/20 hover:after:bg-cyan-300",resizeHandleActive:"after:bg-cyan-300",row:"hover:bg-cyan-400/10 data-[state=selected]:!bg-cyan-400/15",rowSelected:"!bg-cyan-400/15",tableContainer:"border-cyan-400/35 bg-black/72 text-cyan-50 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_26px_rgba(34,211,238,0.08)]",tableScrollArea:"bg-black/72",tableStickyHeader:"sticky top-0 z-30 bg-black/90 backdrop-blur [&_th]:border-cyan-400/45 [&_th]:bg-black/90",toolbarCompactIconButton:"size-7",toolbarIconButton:"text-cyan-100/70 hover:text-cyan-50",toolbarInputButton:"border-cyan-400/45 bg-black/70 text-cyan-50"},Button:$,Card:O,CardContent:W,CardHeader:V,Checkbox:q,DropdownMenuCheckboxItem:X,DropdownMenuContent:J,DropdownMenuItem:Q,DropdownMenuLabel:Z,DropdownMenuRadioItem:Y,DropdownMenuSeparator:j,DropdownMenuSubContent:ee,DropdownMenuSubTrigger:te,Empty:ae,EmptyDescription:oe,EmptyMedia:re,EmptyTitle:ne,Input:de,InputGroup:ie,PaginationLink:ce,ScrollArea:be,ScrollBar:se,SelectContent:pe,SelectItem:me,SelectTrigger:le,Separator:ge,Skeleton:ye,Table:ue,TableBody:ve,TableCaption:ke,TableCell:fe,TableFooter:_e,TableHead:Te,TableHeader:xe,TableRow:Ce,TooltipContent:we};export{Me as a};//# sourceMappingURL=chunk-TER4YPQI.js.map +//# sourceMappingURL=chunk-TER4YPQI.js.map \ No newline at end of file diff --git a/dist/chunk-NC2TEQVN.js.map b/dist/chunk-TER4YPQI.js.map similarity index 99% rename from dist/chunk-NC2TEQVN.js.map rename to dist/chunk-TER4YPQI.js.map index f6d8708..026d4c5 100644 --- a/dist/chunk-NC2TEQVN.js.map +++ b/dist/chunk-TER4YPQI.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/adapters/thegridcn/index.tsx"],"names":["withClassName","Component","defaultClassName","className","props","jsx","cn","GridButton","Button","GridCard","Card","GridCardHeader","CardHeader","GridCardContent","CardContent","GridCheckbox","Checkbox","GridDropdownMenuContent","DropdownMenuContent","GridDropdownMenuItem","DropdownMenuItem","GridDropdownMenuCheckboxItem","DropdownMenuCheckboxItem","GridDropdownMenuRadioItem","DropdownMenuRadioItem","GridDropdownMenuLabel","DropdownMenuLabel","GridDropdownMenuSeparator","DropdownMenuSeparator","GridDropdownMenuSubContent","DropdownMenuSubContent","GridDropdownMenuSubTrigger","DropdownMenuSubTrigger","GridEmpty","Empty","GridEmptyMedia","EmptyMedia","GridEmptyTitle","EmptyTitle","GridEmptyDescription","EmptyDescription","GridInput","Input","GridInputGroup","InputGroup","GridPaginationLink","PaginationLink","GridScrollArea","ScrollArea","GridScrollBar","ScrollBar","GridSelectTrigger","SelectTrigger","GridSelectContent","SelectContent","GridSelectItem","SelectItem","GridSeparator","Separator","GridSkeleton","Skeleton","GridTable","Table","GridTableHeader","TableHeader","GridTableBody","TableBody","GridTableFooter","TableFooter","GridTableHead","TableHead","GridTableRow","TableRow","GridTableCell","TableCell","GridTableCaption","TableCaption","GridTooltipContent","TooltipContent","theGridcnUiKit","primitiveUiKit"],"mappings":"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","file":"chunk-NC2TEQVN.js","sourcesContent":["import * as React from \"react\";\nimport type { DataTableUiKit } from \"../../core/ui-kit\";\nimport {\n Button as PrimitiveButton,\n Card as PrimitiveCard,\n CardContent as PrimitiveCardContent,\n CardHeader as PrimitiveCardHeader,\n Checkbox as PrimitiveCheckbox,\n DropdownMenuCheckboxItem as PrimitiveDropdownMenuCheckboxItem,\n DropdownMenuContent as PrimitiveDropdownMenuContent,\n DropdownMenuItem as PrimitiveDropdownMenuItem,\n DropdownMenuLabel as PrimitiveDropdownMenuLabel,\n DropdownMenuRadioItem as PrimitiveDropdownMenuRadioItem,\n DropdownMenuSeparator as PrimitiveDropdownMenuSeparator,\n DropdownMenuSubContent as PrimitiveDropdownMenuSubContent,\n DropdownMenuSubTrigger as PrimitiveDropdownMenuSubTrigger,\n Empty as PrimitiveEmpty,\n EmptyDescription as PrimitiveEmptyDescription,\n EmptyMedia as PrimitiveEmptyMedia,\n EmptyTitle as PrimitiveEmptyTitle,\n Input as PrimitiveInput,\n InputGroup as PrimitiveInputGroup,\n PaginationLink as PrimitivePaginationLink,\n ScrollArea as PrimitiveScrollArea,\n ScrollBar as PrimitiveScrollBar,\n SelectContent as PrimitiveSelectContent,\n SelectItem as PrimitiveSelectItem,\n SelectTrigger as PrimitiveSelectTrigger,\n Separator as PrimitiveSeparator,\n Skeleton as PrimitiveSkeleton,\n Table as PrimitiveTable,\n TableBody as PrimitiveTableBody,\n TableCaption as PrimitiveTableCaption,\n TableCell as PrimitiveTableCell,\n TableFooter as PrimitiveTableFooter,\n TableHead as PrimitiveTableHead,\n TableHeader as PrimitiveTableHeader,\n TableRow as PrimitiveTableRow,\n TooltipContent as PrimitiveTooltipContent,\n primitiveUiKit,\n} from \"../../core/primitive-ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nfunction withClassName(\n Component: React.ComponentType,\n defaultClassName: string,\n) {\n return function Wrapped({ className, ...props }: TProps) {\n return (\n \n );\n };\n}\n\nconst GridButton = withClassName(\n PrimitiveButton,\n \"rounded-md border border-cyan-400/45 bg-black/75 font-mono text-[0.8rem] tracking-[0.045em] text-cyan-50 uppercase shadow-[0_0_0_1px_rgba(34,211,238,0.12),0_0_18px_rgba(34,211,238,0.1)] data-[variant=default]:bg-cyan-300 data-[variant=default]:text-slate-950 data-[variant=outline]:bg-black/55 data-[variant=ghost]:border-transparent data-[variant=ghost]:bg-transparent data-[variant=ghost]:hover:bg-cyan-400/10 data-[variant=secondary]:bg-cyan-400/12 data-[variant=destructive]:border-rose-400/50 data-[variant=destructive]:bg-rose-500/15 data-[variant=destructive]:text-rose-200\",\n);\nconst GridCard = withClassName(\n PrimitiveCard,\n \"rounded-md border border-cyan-400/35 bg-[linear-gradient(180deg,rgba(0,229,255,0.055),transparent_58%),rgba(1,8,11,0.9)] font-mono text-cyan-50 shadow-[inset_0_1px_0_rgba(125,211,252,0.08),0_0_0_1px_rgba(34,211,238,0.12),0_0_28px_rgba(34,211,238,0.08)] ring-0\",\n);\nconst GridCardHeader = withClassName(PrimitiveCardHeader, \"px-5 pt-5 pb-3\");\nconst GridCardContent = withClassName(PrimitiveCardContent, \"px-5 pb-5\");\nconst GridCheckbox = withClassName(\n PrimitiveCheckbox,\n \"rounded-sm border-cyan-400/55 bg-black/65 ring-cyan-300/70 data-checked:bg-cyan-300 data-checked:text-slate-950 data-checked:ring-cyan-300\",\n);\nconst GridDropdownMenuContent = withClassName(\n PrimitiveDropdownMenuContent,\n \"rounded-md border border-cyan-400/35 bg-black/92 font-mono text-cyan-50 shadow-[0_0_26px_rgba(34,211,238,0.16)] ring-0 before:hidden **:data-[slot$=-item]:focus:bg-cyan-400/12 **:data-[slot$=-item]:data-highlighted:bg-cyan-400/12 **:data-[slot$=-separator]:bg-cyan-400/18 **:data-[slot$=-trigger]:focus:bg-cyan-400/12\",\n);\nconst GridDropdownMenuItem = withClassName(\n PrimitiveDropdownMenuItem,\n \"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50 data-[variant=destructive]:text-rose-200 data-[variant=destructive]:focus:bg-rose-500/15\",\n);\nconst GridDropdownMenuCheckboxItem = withClassName(\n PrimitiveDropdownMenuCheckboxItem,\n \"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50\",\n);\nconst GridDropdownMenuRadioItem = withClassName(\n PrimitiveDropdownMenuRadioItem,\n \"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50\",\n);\nconst GridDropdownMenuLabel = withClassName(\n PrimitiveDropdownMenuLabel,\n \"font-mono text-[0.68rem] tracking-[0.16em] text-cyan-200/70 uppercase\",\n);\nconst GridDropdownMenuSeparator = withClassName(\n PrimitiveDropdownMenuSeparator,\n \"bg-cyan-400/20\",\n);\nconst GridDropdownMenuSubContent = withClassName(\n PrimitiveDropdownMenuSubContent,\n \"rounded-md border border-cyan-400/35 bg-black/92 font-mono text-cyan-50 shadow-[0_0_26px_rgba(34,211,238,0.16)] ring-0 before:hidden\",\n);\nconst GridDropdownMenuSubTrigger = withClassName(\n PrimitiveDropdownMenuSubTrigger,\n \"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50 data-open:bg-cyan-400/12 data-open:text-cyan-50\",\n);\nconst GridEmpty = withClassName(\n PrimitiveEmpty,\n \"rounded-md border-cyan-400/35 bg-black/80 font-mono text-cyan-50\",\n);\nconst GridEmptyMedia = withClassName(\n PrimitiveEmptyMedia,\n \"[&[data-variant=icon]]:rounded-xl [&[data-variant=icon]]:bg-cyan-400/12 [&[data-variant=icon]]:text-cyan-200\",\n);\nconst GridEmptyTitle = withClassName(PrimitiveEmptyTitle, \"text-cyan-50\");\nconst GridEmptyDescription = withClassName(\n PrimitiveEmptyDescription,\n \"text-cyan-100/70\",\n);\nconst GridInput = withClassName(\n PrimitiveInput,\n \"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 placeholder:text-cyan-100/45 focus-visible:ring-cyan-300/70\",\n);\nconst GridInputGroup = withClassName(\n PrimitiveInputGroup,\n \"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 shadow-[0_0_18px_rgba(34,211,238,0.06)]\",\n);\nconst GridPaginationLink = withClassName(\n PrimitivePaginationLink,\n \"rounded-md border-cyan-400/35 bg-black/55 font-mono text-cyan-50 hover:bg-cyan-400/12 data-[active=true]:bg-cyan-300 data-[active=true]:text-slate-950\",\n);\nconst GridScrollArea = withClassName(\n PrimitiveScrollArea,\n \"rounded-md border border-cyan-400/35 bg-black/72 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_26px_rgba(34,211,238,0.08)]\",\n);\nconst GridScrollBar = withClassName(\n PrimitiveScrollBar,\n \"[&>[data-slot=scroll-area-thumb]]:bg-cyan-300/65\",\n);\nconst GridSelectTrigger = withClassName(\n PrimitiveSelectTrigger,\n \"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 focus-visible:ring-cyan-300/70\",\n);\nconst GridSelectContent = withClassName(\n PrimitiveSelectContent,\n \"rounded-md border border-cyan-400/35 bg-black/95 font-mono text-cyan-50 ring-0 shadow-[0_0_26px_rgba(34,211,238,0.16)] before:hidden\",\n);\nconst GridSelectItem = withClassName(\n PrimitiveSelectItem,\n \"rounded-sm focus:bg-cyan-400/12 focus:text-cyan-50\",\n);\nconst GridSeparator = withClassName(PrimitiveSeparator, \"bg-cyan-400/20\");\nconst GridSkeleton = withClassName(\n PrimitiveSkeleton,\n \"rounded-md bg-cyan-400/12\",\n);\nconst GridTable = withClassName(\n PrimitiveTable,\n \"border-separate border-spacing-0 border border-cyan-400/45 bg-black/72 font-mono text-[0.84rem] text-cyan-50 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_24px_rgba(34,211,238,0.08)]\",\n);\nconst GridTableHeader = withClassName(\n PrimitiveTableHeader,\n \"[&_tr]:border-cyan-400/45\",\n);\nconst GridTableBody = withClassName(\n PrimitiveTableBody,\n \"[&_tr:last-child]:border-b\",\n);\nconst GridTableFooter = withClassName(\n PrimitiveTableFooter,\n \"border-cyan-400/40 bg-cyan-400/10 font-mono\",\n);\nconst GridTableHead = withClassName(\n PrimitiveTableHead,\n \"h-12 border-b border-cyan-400/45 bg-cyan-950/20 px-3 font-mono text-[0.68rem] font-bold tracking-[0.18em] text-cyan-300 uppercase\",\n);\nconst GridTableRow = withClassName(\n PrimitiveTableRow,\n \"border-cyan-400/25 hover:bg-cyan-400/10 data-[state=selected]:bg-cyan-400/15\",\n);\nconst GridTableCell = withClassName(\n PrimitiveTableCell,\n \"border-b border-cyan-400/16 px-3 py-3 font-mono text-cyan-50\",\n);\nconst GridTableCaption = withClassName(\n PrimitiveTableCaption,\n \"font-mono text-cyan-100/65\",\n);\nconst GridTooltipContent = withClassName(\n PrimitiveTooltipContent,\n \"rounded-md bg-black text-cyan-50 ring-1 ring-cyan-400/35 shadow-[0_0_22px_rgba(34,211,238,0.18)] [&>svg]:bg-black [&>svg]:fill-black\",\n);\n\nexport const theGridcnUiKit: DataTableUiKit = {\n ...primitiveUiKit,\n rootClassName: \"dtp-thegridcn\",\n classNames: {\n card: \"hover:bg-cyan-400/10 data-[state=selected]:bg-cyan-400/15\",\n cardGrid: \"bg-transparent\",\n cardItem: \"min-w-0\",\n cardOverlay: \"from-black/95 via-black/75 to-transparent\",\n cardScrollArea: \"bg-transparent\",\n cardSelected: \"bg-cyan-400/15 ring-cyan-300/70\",\n cardUnselected: \"border-cyan-400/35\",\n cardViewport: \"bg-transparent\",\n cellBorder: \"border-cyan-400/16\",\n columnGroupHeader: \"bg-cyan-400/10 text-cyan-200\",\n dragActive: \"rounded-md border-dashed border-cyan-300\",\n emptyState: \"border-cyan-400/35 bg-black/80\",\n footer: \"border-cyan-400/40 bg-black/80 text-cyan-50\",\n headerSortIcon: \"text-cyan-100/65\",\n mutedText: \"text-cyan-100/70\",\n paginationSelectTrigger: \"border-cyan-400/45 bg-black/70 text-cyan-50\",\n paginationTotal: \"text-cyan-100/70\",\n pinnedColumn: \"border-cyan-400/25\",\n pinnedUtilityColumn: \"bg-black/80\",\n resizeHandle: \"after:bg-cyan-400/20 hover:after:bg-cyan-300\",\n resizeHandleActive: \"after:bg-cyan-300\",\n row: \"hover:bg-cyan-400/10 data-[state=selected]:!bg-cyan-400/15\",\n rowSelected: \"!bg-cyan-400/15\",\n tableContainer:\n \"border-cyan-400/35 bg-black/72 text-cyan-50 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_26px_rgba(34,211,238,0.08)]\",\n tableScrollArea: \"bg-black/72\",\n tableStickyHeader:\n \"sticky top-0 z-30 bg-black/90 backdrop-blur [&_th]:border-cyan-400/45 [&_th]:bg-black/90\",\n toolbarCompactIconButton: \"size-7\",\n toolbarIconButton: \"text-cyan-100/70 hover:text-cyan-50\",\n toolbarInputButton: \"border-cyan-400/45 bg-black/70 text-cyan-50\",\n },\n Button: GridButton,\n Card: GridCard,\n CardContent: GridCardContent,\n CardHeader: GridCardHeader,\n Checkbox: GridCheckbox,\n DropdownMenuCheckboxItem: GridDropdownMenuCheckboxItem,\n DropdownMenuContent: GridDropdownMenuContent,\n DropdownMenuItem: GridDropdownMenuItem,\n DropdownMenuLabel: GridDropdownMenuLabel,\n DropdownMenuRadioItem: GridDropdownMenuRadioItem,\n DropdownMenuSeparator: GridDropdownMenuSeparator,\n DropdownMenuSubContent: GridDropdownMenuSubContent,\n DropdownMenuSubTrigger: GridDropdownMenuSubTrigger,\n Empty: GridEmpty,\n EmptyDescription: GridEmptyDescription,\n EmptyMedia: GridEmptyMedia,\n EmptyTitle: GridEmptyTitle,\n Input: GridInput,\n InputGroup: GridInputGroup,\n PaginationLink: GridPaginationLink,\n ScrollArea: GridScrollArea,\n ScrollBar: GridScrollBar,\n SelectContent: GridSelectContent,\n SelectItem: GridSelectItem,\n SelectTrigger: GridSelectTrigger,\n Separator: GridSeparator,\n Skeleton: GridSkeleton,\n Table: GridTable,\n TableBody: GridTableBody,\n TableCaption: GridTableCaption,\n TableCell: GridTableCell,\n TableFooter: GridTableFooter,\n TableHead: GridTableHead,\n TableHeader: GridTableHeader,\n TableRow: GridTableRow,\n TooltipContent: GridTooltipContent,\n};\n"]} \ No newline at end of file +{"version":3,"sources":["../src/adapters/thegridcn/index.tsx"],"names":["withClassName","Component","defaultClassName","className","props","jsx","cn","GridButton","Button","GridCard","Card","GridCardHeader","CardHeader","GridCardContent","CardContent","GridCheckbox","Checkbox","GridDropdownMenuContent","DropdownMenuContent","GridDropdownMenuItem","DropdownMenuItem","GridDropdownMenuCheckboxItem","DropdownMenuCheckboxItem","GridDropdownMenuRadioItem","DropdownMenuRadioItem","GridDropdownMenuLabel","DropdownMenuLabel","GridDropdownMenuSeparator","DropdownMenuSeparator","GridDropdownMenuSubContent","DropdownMenuSubContent","GridDropdownMenuSubTrigger","DropdownMenuSubTrigger","GridEmpty","Empty","GridEmptyMedia","EmptyMedia","GridEmptyTitle","EmptyTitle","GridEmptyDescription","EmptyDescription","GridInput","Input","GridInputGroup","InputGroup","GridPaginationLink","PaginationLink","GridScrollArea","ScrollArea","GridScrollBar","ScrollBar","GridSelectTrigger","SelectTrigger","GridSelectContent","SelectContent","GridSelectItem","SelectItem","GridSeparator","Separator","GridSkeleton","Skeleton","GridTable","Table","GridTableHeader","TableHeader","GridTableBody","TableBody","GridTableFooter","TableFooter","GridTableHead","TableHead","GridTableRow","TableRow","GridTableCell","TableCell","GridTableCaption","TableCaption","GridTooltipContent","TooltipContent","theGridcnUiKit","primitiveUiKit"],"mappings":"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","file":"chunk-TER4YPQI.js","sourcesContent":["import * as React from \"react\";\nimport type { DataTableUiKit } from \"../../core/ui-kit\";\nimport {\n Button as PrimitiveButton,\n Card as PrimitiveCard,\n CardContent as PrimitiveCardContent,\n CardHeader as PrimitiveCardHeader,\n Checkbox as PrimitiveCheckbox,\n DropdownMenuCheckboxItem as PrimitiveDropdownMenuCheckboxItem,\n DropdownMenuContent as PrimitiveDropdownMenuContent,\n DropdownMenuItem as PrimitiveDropdownMenuItem,\n DropdownMenuLabel as PrimitiveDropdownMenuLabel,\n DropdownMenuRadioItem as PrimitiveDropdownMenuRadioItem,\n DropdownMenuSeparator as PrimitiveDropdownMenuSeparator,\n DropdownMenuSubContent as PrimitiveDropdownMenuSubContent,\n DropdownMenuSubTrigger as PrimitiveDropdownMenuSubTrigger,\n Empty as PrimitiveEmpty,\n EmptyDescription as PrimitiveEmptyDescription,\n EmptyMedia as PrimitiveEmptyMedia,\n EmptyTitle as PrimitiveEmptyTitle,\n Input as PrimitiveInput,\n InputGroup as PrimitiveInputGroup,\n PaginationLink as PrimitivePaginationLink,\n ScrollArea as PrimitiveScrollArea,\n ScrollBar as PrimitiveScrollBar,\n SelectContent as PrimitiveSelectContent,\n SelectItem as PrimitiveSelectItem,\n SelectTrigger as PrimitiveSelectTrigger,\n Separator as PrimitiveSeparator,\n Skeleton as PrimitiveSkeleton,\n Table as PrimitiveTable,\n TableBody as PrimitiveTableBody,\n TableCaption as PrimitiveTableCaption,\n TableCell as PrimitiveTableCell,\n TableFooter as PrimitiveTableFooter,\n TableHead as PrimitiveTableHead,\n TableHeader as PrimitiveTableHeader,\n TableRow as PrimitiveTableRow,\n TooltipContent as PrimitiveTooltipContent,\n primitiveUiKit,\n} from \"../../core/primitive-ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nfunction withClassName(\n Component: React.ComponentType,\n defaultClassName: string,\n) {\n return function Wrapped({ className, ...props }: TProps) {\n return (\n \n );\n };\n}\n\nconst GridButton = withClassName(\n PrimitiveButton,\n \"rounded-md border border-cyan-400/45 bg-black/75 font-mono text-[0.8rem] tracking-[0.045em] text-cyan-50 uppercase shadow-[0_0_0_1px_rgba(34,211,238,0.12),0_0_18px_rgba(34,211,238,0.1)] data-[variant=default]:bg-cyan-300 data-[variant=default]:text-slate-950 data-[variant=outline]:bg-black/55 data-[variant=ghost]:border-transparent data-[variant=ghost]:bg-transparent data-[variant=ghost]:hover:bg-cyan-400/10 data-[variant=secondary]:bg-cyan-400/12 data-[variant=destructive]:border-rose-400/50 data-[variant=destructive]:bg-rose-500/15 data-[variant=destructive]:text-rose-200\",\n);\nconst GridCard = withClassName(\n PrimitiveCard,\n \"rounded-md border border-cyan-400/35 bg-[linear-gradient(180deg,rgba(0,229,255,0.055),transparent_58%),rgba(1,8,11,0.9)] font-mono text-cyan-50 shadow-[inset_0_1px_0_rgba(125,211,252,0.08),0_0_0_1px_rgba(34,211,238,0.12),0_0_28px_rgba(34,211,238,0.08)] ring-0\",\n);\nconst GridCardHeader = withClassName(PrimitiveCardHeader, \"px-5 pt-5 pb-3\");\nconst GridCardContent = withClassName(PrimitiveCardContent, \"px-5 pb-5\");\nconst GridCheckbox = withClassName(\n PrimitiveCheckbox,\n \"rounded-sm border-cyan-400/55 bg-black/65 ring-cyan-300/70 data-checked:bg-cyan-300 data-checked:text-slate-950 data-checked:ring-cyan-300\",\n);\nconst GridDropdownMenuContent = withClassName(\n PrimitiveDropdownMenuContent,\n \"rounded-md border border-cyan-400/35 bg-black/92 font-mono text-cyan-50 shadow-[0_0_26px_rgba(34,211,238,0.16)] ring-0 before:hidden **:data-[slot$=-item]:focus:bg-cyan-400/12 **:data-[slot$=-item]:data-highlighted:bg-cyan-400/12 **:data-[slot$=-separator]:bg-cyan-400/18 **:data-[slot$=-trigger]:focus:bg-cyan-400/12\",\n);\nconst GridDropdownMenuItem = withClassName(\n PrimitiveDropdownMenuItem,\n \"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50 data-[variant=destructive]:text-rose-200 data-[variant=destructive]:focus:bg-rose-500/15\",\n);\nconst GridDropdownMenuCheckboxItem = withClassName(\n PrimitiveDropdownMenuCheckboxItem,\n \"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50\",\n);\nconst GridDropdownMenuRadioItem = withClassName(\n PrimitiveDropdownMenuRadioItem,\n \"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50\",\n);\nconst GridDropdownMenuLabel = withClassName(\n PrimitiveDropdownMenuLabel,\n \"font-mono text-[0.68rem] tracking-[0.16em] text-cyan-200/70 uppercase\",\n);\nconst GridDropdownMenuSeparator = withClassName(\n PrimitiveDropdownMenuSeparator,\n \"bg-cyan-400/20\",\n);\nconst GridDropdownMenuSubContent = withClassName(\n PrimitiveDropdownMenuSubContent,\n \"rounded-md border border-cyan-400/35 bg-black/92 font-mono text-cyan-50 shadow-[0_0_26px_rgba(34,211,238,0.16)] ring-0 before:hidden\",\n);\nconst GridDropdownMenuSubTrigger = withClassName(\n PrimitiveDropdownMenuSubTrigger,\n \"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50 data-open:bg-cyan-400/12 data-open:text-cyan-50\",\n);\nconst GridEmpty = withClassName(\n PrimitiveEmpty,\n \"rounded-md border-cyan-400/35 bg-black/80 font-mono text-cyan-50\",\n);\nconst GridEmptyMedia = withClassName(\n PrimitiveEmptyMedia,\n \"[&[data-variant=icon]]:rounded-xl [&[data-variant=icon]]:bg-cyan-400/12 [&[data-variant=icon]]:text-cyan-200\",\n);\nconst GridEmptyTitle = withClassName(PrimitiveEmptyTitle, \"text-cyan-50\");\nconst GridEmptyDescription = withClassName(\n PrimitiveEmptyDescription,\n \"text-cyan-100/70\",\n);\nconst GridInput = withClassName(\n PrimitiveInput,\n \"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 placeholder:text-cyan-100/45 focus-visible:ring-cyan-300/70\",\n);\nconst GridInputGroup = withClassName(\n PrimitiveInputGroup,\n \"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 shadow-[0_0_18px_rgba(34,211,238,0.06)]\",\n);\nconst GridPaginationLink = withClassName(\n PrimitivePaginationLink,\n \"rounded-md border-cyan-400/35 bg-black/55 font-mono text-cyan-50 hover:bg-cyan-400/12 data-[active=true]:bg-cyan-300 data-[active=true]:text-slate-950\",\n);\nconst GridScrollArea = withClassName(\n PrimitiveScrollArea,\n \"rounded-md border border-cyan-400/35 bg-black/72 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_26px_rgba(34,211,238,0.08)]\",\n);\nconst GridScrollBar = withClassName(\n PrimitiveScrollBar,\n \"[&>[data-slot=scroll-area-thumb]]:bg-cyan-300/65\",\n);\nconst GridSelectTrigger = withClassName(\n PrimitiveSelectTrigger,\n \"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 focus-visible:ring-cyan-300/70\",\n);\nconst GridSelectContent = withClassName(\n PrimitiveSelectContent,\n \"rounded-md border border-cyan-400/35 bg-black/95 font-mono text-cyan-50 ring-0 shadow-[0_0_26px_rgba(34,211,238,0.16)] before:hidden\",\n);\nconst GridSelectItem = withClassName(\n PrimitiveSelectItem,\n \"rounded-sm focus:bg-cyan-400/12 focus:text-cyan-50\",\n);\nconst GridSeparator = withClassName(PrimitiveSeparator, \"bg-cyan-400/20\");\nconst GridSkeleton = withClassName(\n PrimitiveSkeleton,\n \"rounded-md bg-cyan-400/12\",\n);\nconst GridTable = withClassName(\n PrimitiveTable,\n \"border-separate border-spacing-0 border border-cyan-400/45 bg-black/72 font-mono text-[0.84rem] text-cyan-50 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_24px_rgba(34,211,238,0.08)]\",\n);\nconst GridTableHeader = withClassName(\n PrimitiveTableHeader,\n \"[&_tr]:border-cyan-400/45\",\n);\nconst GridTableBody = withClassName(\n PrimitiveTableBody,\n \"[&_tr:last-child]:border-b\",\n);\nconst GridTableFooter = withClassName(\n PrimitiveTableFooter,\n \"border-cyan-400/40 bg-cyan-400/10 font-mono\",\n);\nconst GridTableHead = withClassName(\n PrimitiveTableHead,\n \"h-12 border-b border-cyan-400/45 bg-cyan-950/20 px-3 font-mono text-[0.68rem] font-bold tracking-[0.18em] text-cyan-300 uppercase\",\n);\nconst GridTableRow = withClassName(\n PrimitiveTableRow,\n \"border-cyan-400/25 hover:bg-cyan-400/10 data-[state=selected]:bg-cyan-400/15\",\n);\nconst GridTableCell = withClassName(\n PrimitiveTableCell,\n \"border-b border-cyan-400/16 px-3 py-3 font-mono text-cyan-50\",\n);\nconst GridTableCaption = withClassName(\n PrimitiveTableCaption,\n \"font-mono text-cyan-100/65\",\n);\nconst GridTooltipContent = withClassName(\n PrimitiveTooltipContent,\n \"rounded-md bg-black text-cyan-50 ring-1 ring-cyan-400/35 shadow-[0_0_22px_rgba(34,211,238,0.18)] [&>svg]:bg-black [&>svg]:fill-black\",\n);\n\nexport const theGridcnUiKit: DataTableUiKit = {\n ...primitiveUiKit,\n rootClassName: \"dtp-thegridcn\",\n classNames: {\n card: \"hover:bg-cyan-400/10 data-[state=selected]:bg-cyan-400/15\",\n cardGrid: \"bg-transparent\",\n cardItem: \"min-w-0\",\n cardOverlay: \"from-black/95 via-black/75 to-transparent\",\n cardScrollArea: \"bg-transparent\",\n cardSelected: \"bg-cyan-400/15 ring-cyan-300/70\",\n cardUnselected: \"border-cyan-400/35\",\n cardViewport: \"bg-transparent\",\n cellBorder: \"border-cyan-400/16\",\n columnGroupHeader: \"bg-cyan-400/10 text-cyan-200\",\n dragActive: \"rounded-md border-dashed border-cyan-300\",\n emptyState: \"border-cyan-400/35 bg-black/80\",\n footer: \"border-cyan-400/40 bg-black/80 text-cyan-50\",\n headerSortIcon: \"text-cyan-100/65\",\n mutedText: \"text-cyan-100/70\",\n paginationSelectTrigger: \"border-cyan-400/45 bg-black/70 text-cyan-50\",\n paginationTotal: \"text-cyan-100/70\",\n pinnedColumn: \"border-cyan-400/25\",\n pinnedUtilityColumn: \"bg-black/80\",\n resizeHandle: \"after:bg-cyan-400/20 hover:after:bg-cyan-300\",\n resizeHandleActive: \"after:bg-cyan-300\",\n row: \"hover:bg-cyan-400/10 data-[state=selected]:!bg-cyan-400/15\",\n rowSelected: \"!bg-cyan-400/15\",\n tableContainer:\n \"border-cyan-400/35 bg-black/72 text-cyan-50 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_26px_rgba(34,211,238,0.08)]\",\n tableScrollArea: \"bg-black/72\",\n tableStickyHeader:\n \"sticky top-0 z-30 bg-black/90 backdrop-blur [&_th]:border-cyan-400/45 [&_th]:bg-black/90\",\n toolbarCompactIconButton: \"size-7\",\n toolbarIconButton: \"text-cyan-100/70 hover:text-cyan-50\",\n toolbarInputButton: \"border-cyan-400/45 bg-black/70 text-cyan-50\",\n },\n Button: GridButton,\n Card: GridCard,\n CardContent: GridCardContent,\n CardHeader: GridCardHeader,\n Checkbox: GridCheckbox,\n DropdownMenuCheckboxItem: GridDropdownMenuCheckboxItem,\n DropdownMenuContent: GridDropdownMenuContent,\n DropdownMenuItem: GridDropdownMenuItem,\n DropdownMenuLabel: GridDropdownMenuLabel,\n DropdownMenuRadioItem: GridDropdownMenuRadioItem,\n DropdownMenuSeparator: GridDropdownMenuSeparator,\n DropdownMenuSubContent: GridDropdownMenuSubContent,\n DropdownMenuSubTrigger: GridDropdownMenuSubTrigger,\n Empty: GridEmpty,\n EmptyDescription: GridEmptyDescription,\n EmptyMedia: GridEmptyMedia,\n EmptyTitle: GridEmptyTitle,\n Input: GridInput,\n InputGroup: GridInputGroup,\n PaginationLink: GridPaginationLink,\n ScrollArea: GridScrollArea,\n ScrollBar: GridScrollBar,\n SelectContent: GridSelectContent,\n SelectItem: GridSelectItem,\n SelectTrigger: GridSelectTrigger,\n Separator: GridSeparator,\n Skeleton: GridSkeleton,\n Table: GridTable,\n TableBody: GridTableBody,\n TableCaption: GridTableCaption,\n TableCell: GridTableCell,\n TableFooter: GridTableFooter,\n TableHead: GridTableHead,\n TableHeader: GridTableHeader,\n TableRow: GridTableRow,\n TooltipContent: GridTooltipContent,\n};\n"]} \ No newline at end of file diff --git a/dist/chunk-TUHIU4D7.js b/dist/chunk-TUHIU4D7.js new file mode 100644 index 0000000..71d2270 --- /dev/null +++ b/dist/chunk-TUHIU4D7.js @@ -0,0 +1,2 @@ +import {S}from'./chunk-32UNH3MQ.js';import*as b from'react';import {useVirtualizer}from'@tanstack/react-virtual';import {jsx}from'react/jsx-runtime';function z(i){let{renderedRows:a,shouldRenderInitialLoading:T,tableScrollElement:s,viewportHeight:g=0,virtualization:n}=i,o=typeof n=="object"?n:void 0,d=!T&&(n===true||o?.enabled===true),e=d&&!!s&&g>0,p=b.useCallback(t=>a[t]?.id??t,[a]),u=useVirtualizer({count:d?a.length:0,enabled:e,estimateSize:()=>o?.estimateRowHeight??48,getItemKey:p,getScrollElement:()=>s??null,overscan:o?.overscan??8}),r=e?u.getVirtualItems():[],f=e?r.flatMap(t=>{let l=a[t.index];return l?[{row:l,rowIndex:t.index}]:[]}):a.slice(0,Math.max(1,Math.floor(o?.fallbackRowCount??20))).map((t,l)=>({row:t,rowIndex:l})),c=e?r[0]?.start??0:0,w=e?Math.max(0,u.getTotalSize()-(r.at(-1)?.end??c)):0;return jsx(S,{...i,rowsToRender:f,virtualPaddingBottom:w,virtualPaddingTop:c})}export{z as a};//# sourceMappingURL=chunk-TUHIU4D7.js.map +//# sourceMappingURL=chunk-TUHIU4D7.js.map \ No newline at end of file diff --git a/dist/chunk-TUHIU4D7.js.map b/dist/chunk-TUHIU4D7.js.map new file mode 100644 index 0000000..7553f9b --- /dev/null +++ b/dist/chunk-TUHIU4D7.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/core/data-table/data-table-virtual-table-panel.tsx"],"names":["DataTableVirtualTablePanel","props","renderedRows","shouldRenderInitialLoading","tableScrollElement","viewportHeight","virtualization","virtualizationConfig","enableVirtualization","shouldUseVirtualRows","getItemKey","index","rowVirtualizer","useVirtualizer","virtualItems","rowsToRender","virtualItem","row","rowIndex","virtualPaddingTop","virtualPaddingBottom","jsx","DataTableTablePanel"],"mappings":"qJAKO,SAASA,CAAAA,CACdC,CAAAA,CACA,CACA,GAAM,CACJ,aAAAC,CAAAA,CACA,0BAAA,CAAAC,EACA,kBAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CAAiB,EACjB,cAAA,CAAAC,CACF,EAAIL,CAAAA,CACEM,CAAAA,CACJ,OAAOD,CAAAA,EAAmB,QAAA,CAAWA,EAAiB,MAAA,CAClDE,CAAAA,CACJ,CAACL,CAAAA,GACAG,CAAAA,GAAmB,MAAQC,CAAAA,EAAsB,OAAA,GAAY,MAC1DE,CAAAA,CACJD,CAAAA,EAAwB,CAAA,CAAQJ,CAAAA,EAAuBC,EAAiB,CAAA,CACpEK,CAAAA,CAAmB,cACtBC,CAAAA,EAAkBT,CAAAA,CAAaS,CAAK,CAAA,EAAG,EAAA,EAAMA,EAC9C,CAACT,CAAY,CACf,CAAA,CAGMU,CAAAA,CAAiBC,eAAe,CACpC,KAAA,CAAOL,EAAuBN,CAAAA,CAAa,MAAA,CAAS,EACpD,OAAA,CAASO,CAAAA,CACT,aAAc,IAAMF,CAAAA,EAAsB,mBAAqB,EAAA,CAC/D,UAAA,CAAAG,EACA,gBAAA,CAAkB,IAAMN,GAAsB,IAAA,CAC9C,QAAA,CAAUG,GAAsB,QAAA,EAAY,CAC9C,CAAC,CAAA,CACKO,CAAAA,CAAeL,EACjBG,CAAAA,CAAe,eAAA,EAAgB,CAC/B,GACEG,CAAAA,CAAeN,CAAAA,CACjBK,EAAa,OAAA,CAASE,CAAAA,EAAgB,CACpC,IAAMC,CAAAA,CAAMf,EAAac,CAAAA,CAAY,KAAK,EAC1C,OAAOC,CAAAA,CAAM,CAAC,CAAE,GAAA,CAAAA,EAAK,QAAA,CAAUD,CAAAA,CAAY,KAAM,CAAC,EAAI,EACxD,CAAC,CAAA,CACDd,CAAAA,CACG,MACC,CAAA,CACA,IAAA,CAAK,IACH,CAAA,CACA,IAAA,CAAK,MAAMK,CAAAA,EAAsB,gBAAA,EAAoB,EAAE,CACzD,CACF,EACC,GAAA,CAAI,CAACU,CAAAA,CAAKC,CAAAA,IAAc,CAAE,GAAA,CAAAD,CAAAA,CAAK,SAAAC,CAAS,CAAA,CAAE,EAC3CC,CAAAA,CAAoBV,CAAAA,CACrBK,EAAa,CAAC,CAAA,EAAG,OAAS,CAAA,CAC3B,CAAA,CACEM,EAAuBX,CAAAA,CACzB,IAAA,CAAK,IACH,CAAA,CACAG,CAAAA,CAAe,cAAa,EACzBE,CAAAA,CAAa,GAAG,EAAE,CAAA,EAAG,KAAOK,CAAAA,CACjC,CAAA,CACA,EAEJ,OACEE,GAAAA,CAACC,EAAA,CACE,GAAGrB,EACJ,YAAA,CAAcc,CAAAA,CACd,qBAAsBK,CAAAA,CACtB,iBAAA,CAAmBD,EACrB,CAEJ","file":"chunk-TUHIU4D7.js","sourcesContent":["import * as React from \"react\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { DataTableTablePanel } from \"./data-table-table-panel\";\nimport type { DataTableTablePanelProps } from \"./data-table-table-panel\";\n\nexport function DataTableVirtualTablePanel(\n props: DataTableTablePanelProps,\n) {\n const {\n renderedRows,\n shouldRenderInitialLoading,\n tableScrollElement,\n viewportHeight = 0,\n virtualization,\n } = props;\n const virtualizationConfig =\n typeof virtualization === \"object\" ? virtualization : undefined;\n const enableVirtualization =\n !shouldRenderInitialLoading &&\n (virtualization === true || virtualizationConfig?.enabled === true);\n const shouldUseVirtualRows =\n enableVirtualization && Boolean(tableScrollElement) && viewportHeight > 0;\n const getItemKey = React.useCallback(\n (index: number) => renderedRows[index]?.id ?? index,\n [renderedRows],\n );\n\n // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Virtual owns its instance functions.\n const rowVirtualizer = useVirtualizer({\n count: enableVirtualization ? renderedRows.length : 0,\n enabled: shouldUseVirtualRows,\n estimateSize: () => virtualizationConfig?.estimateRowHeight ?? 48,\n getItemKey,\n getScrollElement: () => tableScrollElement ?? null,\n overscan: virtualizationConfig?.overscan ?? 8,\n });\n const virtualItems = shouldUseVirtualRows\n ? rowVirtualizer.getVirtualItems()\n : [];\n const rowsToRender = shouldUseVirtualRows\n ? virtualItems.flatMap((virtualItem) => {\n const row = renderedRows[virtualItem.index];\n return row ? [{ row, rowIndex: virtualItem.index }] : [];\n })\n : renderedRows\n .slice(\n 0,\n Math.max(\n 1,\n Math.floor(virtualizationConfig?.fallbackRowCount ?? 20),\n ),\n )\n .map((row, rowIndex) => ({ row, rowIndex }));\n const virtualPaddingTop = shouldUseVirtualRows\n ? (virtualItems[0]?.start ?? 0)\n : 0;\n const virtualPaddingBottom = shouldUseVirtualRows\n ? Math.max(\n 0,\n rowVirtualizer.getTotalSize() -\n (virtualItems.at(-1)?.end ?? virtualPaddingTop),\n )\n : 0;\n\n return (\n \n );\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-U5TIDLB3.js b/dist/chunk-U5TIDLB3.js deleted file mode 100644 index 13aeae6..0000000 --- a/dist/chunk-U5TIDLB3.js +++ /dev/null @@ -1,2 +0,0 @@ -import {b,a}from'./chunk-M77BQPKU.js';import {a as a$1}from'./chunk-PFB5LOU7.js';import*as S from'react';import {useVirtualizer}from'@tanstack/react-virtual';import {jsx,jsxs}from'react/jsx-runtime';function nt({cardClassName:o,cardGridClassName:e,cardSizing:y,cardRenderer:V,currentRowSelection:z,DataTableCardView:E,DataTableEmptyState:N,dragAndDrop:l,editableRows:M,editingRowId:k,emptyNode:P,enableRowSelection:H,flexGrow:m,getRowClassName:A,hasCardTitle:j,infiniteScroll:B,localSearchValue:h,onRowClick:I,renderedRows:r,renderExpandedRow:U,resolvedLabels:n,resolvedLoadingRowCount:Y,rowActions:$=[],ScrollArea:q,sentinelRef:F,setCurrentRowSelection:J,setEditingRowId:K,shouldRenderInitialLoading:s,tableContainerClassName:O,uiClassNames:u,virtualization:C}){let R=s||r.length>0,f=S.useRef(null),{viewportElement:v,viewportHeight:Q}=b(f,R),X=a(f),d=typeof C=="object"?C.card:void 0,x=!s&&r.length>0&&d?.enabled===true,p=L(d?.lanes,X),Z=Math.ceil(r.length/p),g=x&&!!v&&Q>0,w=useVirtualizer({count:x?Z:0,enabled:g,estimateSize:()=>d?.estimateCardHeight??280,getScrollElement:()=>v,overscan:d?.overscan??4}),_=g?w.getVirtualItems():[],b$1=(a,i)=>jsx(E,{rows:a,cardRenderer:V,cardGridClassName:e,cardClassName:o,cardSizing:y,rowActions:$,editableRows:M,renderExpandedRow:U,hasCardTitle:j,rowSelection:z,onRowSelectionChange:J,enableRowSelection:H,editingRowId:k,onEditingRowIdChange:K,getRowClassName:A,onRowClick:I,getRowDraggable:l?.getRowDraggable,onRowDragStart:l?.onRowDragStart,onRowDragEnd:l?.onRowDragEnd,isLoading:i?.isLoading,loadingRowCount:i?.loadingRowCount,labels:n});return jsx("div",{ref:f,"data-dtp-slot":"data-table-card-shell",className:a$1("box-border border-2 border-transparent transition-colors",m?"flex min-h-0 flex-1 flex-col":"h-full",l?.isDragging&&(u.dragActive??"rounded-md border-dashed")),children:jsx(q,{className:a$1(m?"min-h-0 flex-1":"h-full",u.cardScrollArea,O),children:jsxs("div",{"data-dtp-slot":"data-table-card-viewport",className:a$1("flex min-h-full min-w-0 flex-col",m&&"min-h-0 flex-1",u.cardViewport),children:[R?s?b$1([],{isLoading:true,loadingRowCount:Y}):g?jsx("div",{"data-dtp-slot":"data-table-card-virtualizer",style:{height:w.getTotalSize(),position:"relative",width:"100%"},children:_.map(a=>{let i=a.index*p,G=r.slice(i,i+p);return jsx("div",{"data-index":a.index,ref:w.measureElement,style:{left:0,position:"absolute",top:0,transform:`translateY(${a.start}px)`,width:"100%"},children:b$1(G)},a.key)})}):b$1(r):jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center p-4",children:P??jsx(N,{title:h?n.noMatchingRowsTitle:n.noRowsTitle,description:h?n.noMatchingRowsDescription:n.noRowsDescription})}),B?.enabled&&!s?jsx("div",{className:"shrink-0 px-4 pb-4",children:jsx("div",{ref:F,className:"h-4 w-full"})}):null]})})})}function L(o,e){return typeof o=="number"?Math.max(1,Math.floor(o)):o!=="auto"?1:e>=1536?5:e>=1280?4:e>=1024?3:e>=640?2:1}export{nt as a};//# sourceMappingURL=chunk-U5TIDLB3.js.map -//# sourceMappingURL=chunk-U5TIDLB3.js.map \ No newline at end of file diff --git a/dist/chunk-U5TIDLB3.js.map b/dist/chunk-U5TIDLB3.js.map deleted file mode 100644 index 0fd7f77..0000000 --- a/dist/chunk-U5TIDLB3.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/core/data-table/data-table-virtual-card-panel.tsx"],"names":["DataTableVirtualCardPanel","cardClassName","cardGridClassName","cardSizing","cardRenderer","currentRowSelection","DataTableCardView","DataTableEmptyState","dragAndDrop","editableRows","editingRowId","emptyNode","enableRowSelection","flexGrow","getRowClassName","hasCardTitle","infiniteScroll","localSearchValue","onRowClick","renderedRows","renderExpandedRow","resolvedLabels","resolvedLoadingRowCount","rowActions","ScrollArea","sentinelRef","setCurrentRowSelection","setEditingRowId","shouldRenderInitialLoading","tableContainerClassName","uiClassNames","virtualization","shouldRenderCards","cardScrollContainerRef","viewportElement","viewportHeight","useDataTableScrollViewport","containerWidth","useDataTableContainerWidth","virtualizationConfig","enableCardVirtualization","lanes","resolveCardVirtualizationLanes","virtualRowCount","shouldUseVirtualCardRows","cardVirtualizer","useVirtualizer","virtualCardRows","renderCardView","rows","options","jsx","cn","jsxs","virtualRow","startIndex","configuredLanes"],"mappings":"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","file":"chunk-U5TIDLB3.js","sourcesContent":["import * as React from \"react\";\nimport type { Row } from \"@tanstack/react-table\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { cn } from \"../../lib/utils\";\nimport type { DataTableCardPanelProps } from \"./data-table-card-panel-types\";\nimport { useDataTableContainerWidth } from \"./use-data-table-container-width\";\nimport { useDataTableScrollViewport } from \"./use-data-table-scroll-viewport\";\n\nexport function DataTableVirtualCardPanel({\n cardClassName,\n cardGridClassName,\n cardSizing,\n cardRenderer,\n currentRowSelection,\n DataTableCardView,\n DataTableEmptyState,\n dragAndDrop,\n editableRows,\n editingRowId,\n emptyNode,\n enableRowSelection,\n flexGrow,\n getRowClassName,\n hasCardTitle,\n infiniteScroll,\n localSearchValue,\n onRowClick,\n renderedRows,\n renderExpandedRow,\n resolvedLabels,\n resolvedLoadingRowCount,\n rowActions = [],\n ScrollArea,\n sentinelRef,\n setCurrentRowSelection,\n setEditingRowId,\n shouldRenderInitialLoading,\n tableContainerClassName,\n uiClassNames,\n virtualization,\n}: DataTableCardPanelProps) {\n const shouldRenderCards = shouldRenderInitialLoading || renderedRows.length > 0;\n const cardScrollContainerRef = React.useRef(null);\n const { viewportElement, viewportHeight } = useDataTableScrollViewport(\n cardScrollContainerRef,\n shouldRenderCards,\n );\n const containerWidth = useDataTableContainerWidth(cardScrollContainerRef);\n const virtualizationConfig =\n typeof virtualization === \"object\" ? virtualization.card : undefined;\n const enableCardVirtualization =\n !shouldRenderInitialLoading &&\n renderedRows.length > 0 &&\n virtualizationConfig?.enabled === true;\n const lanes = resolveCardVirtualizationLanes(\n virtualizationConfig?.lanes,\n containerWidth,\n );\n const virtualRowCount = Math.ceil(renderedRows.length / lanes);\n const shouldUseVirtualCardRows =\n enableCardVirtualization && Boolean(viewportElement) && viewportHeight > 0;\n // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Virtual owns its instance functions.\n const cardVirtualizer = useVirtualizer({\n count: enableCardVirtualization ? virtualRowCount : 0,\n enabled: shouldUseVirtualCardRows,\n estimateSize: () => virtualizationConfig?.estimateCardHeight ?? 280,\n getScrollElement: () => viewportElement,\n overscan: virtualizationConfig?.overscan ?? 4,\n });\n const virtualCardRows = shouldUseVirtualCardRows\n ? cardVirtualizer.getVirtualItems()\n : [];\n\n const renderCardView = (\n rows: Array>,\n options?: {\n isLoading?: boolean;\n loadingRowCount?: number;\n },\n ) => (\n \n );\n\n return (\n \n \n \n {shouldRenderCards ? (\n shouldRenderInitialLoading ? (\n renderCardView([], {\n isLoading: true,\n loadingRowCount: resolvedLoadingRowCount,\n })\n ) : shouldUseVirtualCardRows ? (\n \n {virtualCardRows.map((virtualRow) => {\n const startIndex = virtualRow.index * lanes;\n const rows = renderedRows.slice(\n startIndex,\n startIndex + lanes,\n );\n\n return (\n \n {renderCardView(rows)}\n \n );\n })}\n \n ) : (\n renderCardView(renderedRows)\n )\n ) : (\n
    \n {emptyNode ?? (\n \n )}\n
    \n )}\n\n {infiniteScroll?.enabled && !shouldRenderInitialLoading ? (\n
    \n
    \n
    \n ) : null}\n
    \n \n \n );\n}\n\nfunction resolveCardVirtualizationLanes(\n configuredLanes: number | \"auto\" | undefined,\n containerWidth: number,\n) {\n if (typeof configuredLanes === \"number\") {\n return Math.max(1, Math.floor(configuredLanes));\n }\n\n if (configuredLanes !== \"auto\") {\n return 1;\n }\n\n if (containerWidth >= 1536) {\n return 5;\n }\n if (containerWidth >= 1280) {\n return 4;\n }\n if (containerWidth >= 1024) {\n return 3;\n }\n if (containerWidth >= 640) {\n return 2;\n }\n return 1;\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-Y2VSRDR3.js b/dist/chunk-Y2VSRDR3.js deleted file mode 100644 index b6b33d1..0000000 --- a/dist/chunk-Y2VSRDR3.js +++ /dev/null @@ -1,2 +0,0 @@ -import {a as a$1}from'./chunk-U5TIDLB3.js';import {a}from'./chunk-JYNJ2FDX.js';import {j}from'./chunk-54H6DRO6.js';function b(r){return j(r,{CardPanel:a$1,TablePanel:a})}export{b as a};//# sourceMappingURL=chunk-Y2VSRDR3.js.map -//# sourceMappingURL=chunk-Y2VSRDR3.js.map \ No newline at end of file diff --git a/dist/chunk-ZGXFBFNQ.js b/dist/chunk-ZGXFBFNQ.js deleted file mode 100644 index 2f05f43..0000000 --- a/dist/chunk-ZGXFBFNQ.js +++ /dev/null @@ -1,3 +0,0 @@ -import {i,a,h,g}from'./chunk-PFB5LOU7.js';import*as L from'react';import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {flexRender}from'@tanstack/react-table';var be=Symbol("data-table-loading-row"),ht=50;function wt(e){return Array.from({length:e},(t,a)=>({[be]:true,index:a}))}function te(e){return !!(e&&typeof e=="object"&&be in e)}function St(e){return `__loading__${e}`}function Rt(e){if(typeof e.meta?.minWidth=="number")return e.meta.minWidth;if(Object.prototype.hasOwnProperty.call(e,"minSize")){let t=e.minSize;if(typeof t=="number")return t}}function Be(e){if("columns"in e&&Array.isArray(e.columns))return {...e,columns:e.columns.map(a=>Be(a))};let t=e.meta?.filter;return !t||e.filterFn?e:{...e,filterFn:(a,o,r)=>{if(!Fe(r))return true;let n=a.getValue(o),i=t.getOptionValue?.(n,a.original)??$(n);return t.type==="multi"?Array.isArray(r)?r.map(String).includes(i):true:t.type==="select"?i===String(r):$(n).toLowerCase().includes(String(r).toLowerCase())}}}function le(e){let t=[],a=o=>{o.forEach((r,n)=>{if("columns"in r&&r.columns?.length){a(r.columns);return}t.push({column:r,index:n});});};return a(e),t}function It(e){return e.map(t=>typeof t=="string"?{label:ge(t),value:t}:t)}function $(e){if(e==null)return "";if(e instanceof Date)return e.toISOString();if(typeof e=="object")try{return JSON.stringify(e)}catch{return ""}return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint"||typeof e=="symbol"?String(e):""}function Fe(e){return Array.isArray(e)?e.length>0:e!=null&&e!==""}function kt(e,t,a){let o=$(a).trim().toLowerCase();return o?$(e.getValue(t)).toLowerCase().includes(o):true}async function xt({csvExport:e,table:t}){if(e===false)return;let a=e===true?{}:e,o=a.filename??"data-table.csv",r=a.scope??"filtered",n=a.columns?new Set(a.columns):void 0,i=t.getVisibleLeafColumns().filter(m=>!ie(m.id)&&m.id!=="__spacer__"&&(!n||n.has(m.id))),s=We(t,r),w=[];(a.includeHeaders??true)&&w.push(i.map(m=>typeof m.columnDef.header=="string"?m.columnDef.header:ge(m.id)));for(let m of s)w.push(i.map(y=>{let H=m.getValue(y.id);return a.getCellValue?a.getCellValue({row:m.original,rowId:m.id,columnId:y.id,value:H}):H}));let p=a.lineEnding??`\r -`,c=a.escapeFormulaValues??true,R=w.map(m=>m.map(y=>Ge(y,c)).join(",")).join(p);if(a.onExport){await a.onExport({csv:R,filename:o,rows:s.map(m=>m.original),scope:r});return}if(typeof window>"u")return;let C=new Blob([R],{type:"text/csv;charset=utf-8"}),u=window.URL.createObjectURL(C),d=window.document.createElement("a");d.href=u,d.download=o,d.click(),window.URL.revokeObjectURL(u);}function We(e,t){switch(t){case "page":return e.getRowModel().rows;case "selected":return e.getPrePaginationRowModel().rows.filter(a=>a.getIsSelected());case "all":return e.getCoreRowModel().rows;default:return e.getPrePaginationRowModel().rows}}function Ge(e,t){let a=$(e);return t&&typeof e=="string"&&/^[\t\r ]*[=+\-@]/.test(e)&&(a=`'${a}`),/[",\n\r]/.test(a)?`"${a.replace(/"/g,'""')}"`:a}function Lt(e){let t=[],a=[];for(let{column:o,index:r}of le(e)){let n=je(o,r);o.meta?.fixed==="left"&&t.push(n),o.meta?.fixed==="right"&&a.push(n);}return {left:t,right:a}}function je(e,t){if(e.id)return e.id;let a=$e(e);return a||`column-${t}`}function $e(e){if("accessorKey"in e&&typeof e.accessorKey=="string")return e.accessorKey}function Mt(e){let t=e.getIsPinned();return t||(e.id==="__select__"||e.id==="__expand__"?"left":e.id==="__actions__"?"right":e.columnDef.meta?.fixed)}function Et(e,t,a$1){let o=a$1?.isUtilityColumn??false;return a("sticky backdrop-blur box-border",t.pinnedColumn,!o&&"border-dotted",o?t.pinnedUtilityColumn:void 0,e==="left"?"border-r-1":"border-l")}function ie(e){return e==="__select__"||e==="__expand__"||e==="__actions__"}function De(e){switch(e){case "compact":return "h-8 py-1";case "spacious":return "h-14 py-4";default:return}}function se(e){switch(e){case "compact":return "py-1.5";case "spacious":return "py-4";default:return}}function Ht(e,t,a){let o=e.includes(t)?e.slice():[...e,t],r=o.indexOf(t),n=o.indexOf(a);if(r<0||n<0||r===n)return o;let[i]=o.splice(r,1);return o.splice(n,0,i),o}function ge(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,t=>t.toUpperCase())}function At({columns:e,editableRows:t,onError:a}){let[o,r]=L.useState(null),[n,i]=L.useState({}),s=L.useRef(n),[w,p]=L.useState(false);L.useEffect(()=>{s.current=n;},[n]);let c=L.useCallback(()=>{r(null),i({});},[]),R=L.useCallback((u,d)=>{let m=t?.getInitialValues?.(u)??qe(u,e);i(m),r(d);},[e,t]),C=L.useCallback(async u=>{if(t){p(true);try{await t.onSaveRow(u,s.current),L.startTransition(c);}catch(d){a?.(d,u);}finally{p(false);}}},[c,t,a]);return {cancelEditing:c,draftValues:n,editingRowId:o,isSavingEdit:w,saveEdit:C,setDraftValues:i,setEditingRowId:r,startEditingRow:R}}function qe(e,t){return le(t).reduce((a,{column:o})=>("accessorKey"in o&&typeof o.accessorKey=="string"&&(a[o.accessorKey]=e[o.accessorKey]),a),{})}function Ce(e,t,a,o){let{Checkbox:r,Input:n}=o,i=e.column.columnDef,s=i.meta,w="accessorKey"in i&&typeof i.accessorKey=="string"?i.accessorKey:e.column.id,p=t[w],c=C=>{a(u=>({...u,[w]:C}));};if(s?.renderEditCell)return s.renderEditCell({cell:e,row:e.row.original,value:e.getValue(),draftValue:p,setDraftValue:c});let R=Je(s?.type,p);return typeof p=="boolean"?jsx(r,{checked:p,onCheckedChange:C=>{c(C===true);}}):jsx(n,{type:R,value:s?.formatEditValue?s.formatEditValue(p,e):Ze(p,R),onChange:C=>{let u=C.target.value,d=s?.parseEditValue?s.parseEditValue(u,e):Qe(u,R,p);c(d);}})}function Je(e,t){return e==="numeric"||typeof t=="number"?"number":e==="date"||t instanceof Date?"datetime-local":"text"}function Ze(e,t="text"){return e==null?"":e instanceof Date?t==="datetime-local"?e.toISOString().slice(0,16):e.toISOString():typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint"?String(e):""}function Qe(e,t,a){return t==="number"?e===""?null:Number(e):t==="datetime-local"?e?a instanceof Date?new Date(e):e:null:e}function T({children:e,viewBox:t="0 0 24 24",...a}){return jsx("svg",{"aria-hidden":"true",focusable:"false",width:"1em",height:"1em",viewBox:t,fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",...a,children:e})}function Ut(e){return jsxs(T,{...e,children:[jsx("path",{d:"M4 7h4"}),jsx("path",{d:"M14 7h6"}),jsx("path",{d:"M10 5v4"}),jsx("path",{d:"M4 17h10"}),jsx("path",{d:"M18 17h2"}),jsx("path",{d:"M16 15v4"})]})}function Vt(e){return jsx(T,{...e,children:jsx("path",{d:"M5 12l4 4L19 6"})})}function ye(e){return jsx(T,{...e,children:jsx("path",{d:"M6 9l6 6 6-6"})})}function Ot(e){return jsx(T,{...e,children:jsx("path",{d:"M15 6l-6 6 6 6"})})}function Kt(e){return jsx(T,{...e,children:jsx("path",{d:"M9 6l6 6-6 6"})})}function Bt(e){return jsx(T,{...e,children:jsx("path",{d:"M6 15l6-6 6 6"})})}function Ft(e){return jsxs(T,{...e,children:[jsx("path",{d:"M11 6l-6 6 6 6"}),jsx("path",{d:"M19 6l-6 6 6 6"})]})}function Wt(e){return jsxs(T,{...e,children:[jsx("path",{d:"M5 6l6 6-6 6"}),jsx("path",{d:"M13 6l6 6-6 6"})]})}function he(e){return jsxs(T,{...e,children:[jsx("circle",{cx:"12",cy:"12",r:"9"}),jsx("path",{d:"M12 7v5l3 2"})]})}function Gt(e){return jsxs(T,{...e,children:[jsx("ellipse",{cx:"12",cy:"5",rx:"7",ry:"3"}),jsx("path",{d:"M5 5v6c0 1.7 3.1 3 7 3s7-1.3 7-3V5"}),jsx("path",{d:"M5 11v6c0 1.7 3.1 3 7 3s7-1.3 7-3v-6"})]})}function jt(e){return jsxs(T,{...e,children:[jsx("path",{d:"M5 12h.01"}),jsx("path",{d:"M12 12h.01"}),jsx("path",{d:"M19 12h.01"})]})}function $t(e){return jsxs(T,{...e,children:[jsx("path",{d:"M12 3v12"}),jsx("path",{d:"M7 10l5 5 5-5"}),jsx("path",{d:"M5 21h14"})]})}function qt(e){return jsxs(T,{...e,children:[jsx("path",{d:"M4 20h4l11-11-4-4L4 16v4z"}),jsx("path",{d:"M13 7l4 4"})]})}function Jt(e){return jsxs(T,{...e,children:[jsx("path",{d:"M2 12s4-7 10-7 10 7 10 7-4 7-10 7S2 12 2 12z"}),jsx("circle",{cx:"12",cy:"12",r:"3"})]})}function Zt(e){return jsxs(T,{...e,children:[jsx("path",{d:"M3 3l18 18"}),jsx("path",{d:"M10.6 10.6a2 2 0 0 0 2.8 2.8"}),jsx("path",{d:"M9.9 5.3A10.5 10.5 0 0 1 12 5c6 0 10 7 10 7a18 18 0 0 1-3.2 4"}),jsx("path",{d:"M6.6 6.6C3.8 8.4 2 12 2 12s4 7 10 7a10.6 10.6 0 0 0 4.1-.8"})]})}function Qt(e){return jsxs(T,{...e,children:[jsx("path",{d:"M4 13l2-8h12l2 8"}),jsx("path",{d:"M4 13h5l2 3h2l2-3h5v6H4z"})]})}function Xt(e){return jsxs(T,{...e,children:[jsx("path",{d:"M4 4h6v6H4z"}),jsx("path",{d:"M14 4h6v6h-6z"}),jsx("path",{d:"M4 14h6v6H4z"}),jsx("path",{d:"M14 14h6v6h-6z"})]})}function Yt(e){return jsxs(T,{...e,children:[jsx("path",{d:"M8 6h13"}),jsx("path",{d:"M8 12h13"}),jsx("path",{d:"M8 18h13"}),jsx("path",{d:"M3 6h.01"}),jsx("path",{d:"M3 12h.01"}),jsx("path",{d:"M3 18h.01"})]})}function ea(e){return jsxs(T,{...e,children:[jsx("circle",{cx:"11",cy:"11",r:"7"}),jsx("path",{d:"M16 16l5 5"})]})}function we(e){return jsxs(T,{...e,children:[jsx("path",{d:"M8 9l4-4 4 4"}),jsx("path",{d:"M16 15l-4 4-4-4"})]})}function ta(e){return jsxs(T,{...e,children:[jsx("path",{d:"M18 6L6 18"}),jsx("path",{d:"M6 6l12 12"})]})}function Ie(e,t,a$1){let o=e.column.columnDef,r=o.meta,n=e.getValue(),i=a$1?.hasCustomCell??false,s=i&&o.cell?flexRender(o.cell,e):void 0,w=et(s),p=Ye({context:e,useCustomOverflowDefaults:a$1?.useCustomOverflowDefaults??false,value:n});if(r?.type==="date"&&!i)return jsxs("div",{"data-dtp-slot":"data-table-cell-content","data-dtp-overflow":p,className:a(Se(p),"flex w-full min-w-0 items-center justify-end gap-2"),children:[jsx(he,{className:a("shrink-0",t?.mutedText??"opacity-70")}),jsx("span",{className:"min-w-0 truncate",children:tt(n)})]});let c=s!=null&&s!==""?s:n==null||n===""?jsx("span",{className:t?.mutedText??"opacity-70",children:"-"}):at(n);return jsx("div",{"data-dtp-slot":"data-table-cell-content","data-dtp-overflow":p,className:a(Se(p),"w-full min-w-0 max-w-full",w&&"[&>*]:max-w-full [&>*]:min-w-0"),children:c})}function Ye({context:e,useCustomOverflowDefaults:t,value:a}){let o=e.column.columnDef,r=typeof o.meta?.overflow=="function"?o.meta.overflow({row:e.row.original,value:a}):o.meta?.overflow;return r||(t?"clip":"truncate")}function Se(e){switch(e){case "clip":return "block overflow-hidden whitespace-nowrap";case "wrap":return "block overflow-hidden whitespace-normal break-words";case "visible":return "block overflow-visible whitespace-normal";default:return "block overflow-hidden text-ellipsis whitespace-nowrap"}}function et(e){return e==null?false:L.isValidElement(e)||Array.isArray(e)||typeof e=="object"}function tt(e){return typeof e=="number"?new Date(e*1e3).toLocaleString():typeof e=="string"&&e?e:"-"}function at(e){if(e instanceof Date)return e.toLocaleString();if(typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint")return String(e);try{return JSON.stringify(e)}catch{return "-"}}function ot({columnLayouts:e,components:t,currentDensity:a$1,draftValues:o,dragAndDrop:r,explicitCustomCellColumnIds:n,getRowClassName:i$1,isDraggable:s,isEditing:w,isExpanded:p,isInitialLoadingRow:c,isSelected:R,loadingState:C,onRowClick:u,originalRow:d,renderExpandedRow:m,row:y,setDraftValues:H,uiClassNames:x,visibleCells:v,visibleLeafColumnCount:f}){let{Checkbox:I,Input:U,Skeleton:A,TableCell:N,TableRow:J}=t;return jsxs(L.Fragment,{children:[jsx(J,{"data-row-id":y.id,draggable:c?false:s,"data-loading":C?.isLoading||void 0,"data-state":c?void 0:R?"selected":void 0,tabIndex:u&&!c?0:void 0,className:a(!c&&i$1?.(d),x.row,R&&!c&&x.rowSelected,u&&!c&&"cursor-pointer",c&&"pointer-events-none"),onClick:g=>{c||g.target?.closest("[data-row-click-ignore='true']")||u?.({row:d,rowId:y.id});},onKeyDown:g=>{c||!u||g.key!=="Enter"&&g.key!==" "||g.target?.closest("[data-row-click-ignore='true']")||(g.preventDefault(),u({row:d,rowId:y.id}));},onDragStart:g=>{c||r?.onRowDragStart?.({row:d,rowId:y.id,event:g});},onDragEnd:g=>{c||r?.onRowDragEnd?.({row:d,rowId:y.id,event:g});},children:v.map(g=>{let k=g.column.columnDef.meta,V=g.getContext(),oe=g.getValue(),E=e.get(g.column.id),B=E?.isSelectionColumn??false,F=E?.isExpansionColumn??false,W=E?.isActionsColumn??false,Z=E?.isSpacerColumn??false,Q=i(k?.hideOn),P=c||te(d)?void 0:typeof k?.cellClassName=="function"?k.cellClassName({row:d,value:oe}):k?.cellClassName;return jsx(N,{className:a("border-b",se(a$1),x.cellBorder,E?.utilityClassName,E?.isSpacerColumn&&"border-b-0 bg-transparent p-0",E?.pinnedClassName,Q,h(V),k?.responsiveClassName,P),style:E?.cellStyle,children:jsx("div",{"data-row-click-ignore":B||F||W?"true":void 0,className:"min-w-0 max-w-full",children:C?.isLoading?k?.skeleton?.(V)??C.skeleton??jsx(A,{className:a("h-4 rounded",k?.type==="numeric"?"ml-auto w-16":k?.type==="date"?"ml-auto w-28":"w-full")}):w&&g.column.id!=="__select__"&&g.column.id!=="__expand__"&&g.column.id!=="__actions__"?Ce(V,o,H,{Checkbox:I,Input:U}):Ie(V,x,{hasCustomCell:n.has(g.column.id)||B||F||W||Z,useCustomOverflowDefaults:n.has(g.column.id)||B||F||W||Z})})},g.id)})}),!c&&m&&p?jsx(J,{children:jsx(N,{colSpan:Math.max(1,f),className:a("border-b",se(a$1),x.cellBorder),children:m({row:d,rowId:y.id,tableRow:y})})}):null]})}function rt(e,t){return e.row.id===t.row.id&&e.row.original===t.row.original&&e.rowIndex===t.rowIndex&&e.isSelected===t.isSelected&&e.isInitialLoadingRow===t.isInitialLoadingRow&&e.isEditing===t.isEditing&&e.isExpanded===t.isExpanded&&e.isDraggable===t.isDraggable&<(e.loadingState,t.loadingState)&&it(e.visibleCells,t.visibleCells)&&e.components===t.components&&st(e.columnLayouts,t.columnLayouts,t.visibleCells)&&e.currentDensity===t.currentDensity&&e.renderExpandedRow===t.renderExpandedRow&&e.onRowClick===t.onRowClick&&e.dragAndDrop===t.dragAndDrop&&e.getRowClassName===t.getRowClassName&&e.uiClassNames===t.uiClassNames&&e.explicitCustomCellColumnIds===t.explicitCustomCellColumnIds&&(!e.isEditing||e.draftValues===t.draftValues)}function lt(e,t){return e?.isLoading===t?.isLoading&&e?.skeleton===t?.skeleton}function it(e,t){return e.length===t.length&&e.every((a,o)=>{let r=t[o];return r?.id===a.id&&r.column.id===a.column.id})}function st(e,t,a){return a.every(o=>{let r=e.get(o.column.id),n=t.get(o.column.id);return r?.fixedSide===n?.fixedSide&&r?.isActionsColumn===n?.isActionsColumn&&r?.isExpansionColumn===n?.isExpansionColumn&&r?.isSelectionColumn===n?.isSelectionColumn&&r?.isSpacerColumn===n?.isSpacerColumn&&r?.isUtilityColumn===n?.isUtilityColumn&&r?.pinnedClassName===n?.pinnedClassName&&r?.utilityClassName===n?.utilityClassName&&ct(r?.cellStyle,n?.cellStyle)})}function ct(e,t){return e?.width===t?.width&&e?.minWidth===t?.minWidth&&e?.maxWidth===t?.maxWidth&&e?.insetInlineStart===t?.insetInlineStart&&e?.insetInlineEnd===t?.insetInlineEnd}var ke=L.memo(ot,rt);function ut({currentDensity:e,currentSorting:t,draggedColumnIdRef:a$1,enableColumnReordering:o,enableColumnResizing:r,header:n,headerGroupHeaders:i$1,layout:s,primeColumnForResize:w,reorderColumn:p,resetColumnSize:c,TableHead:R,uiClassNames:C}){let u=n.column.columnDef.meta,d=!n.isPlaceholder&&n.subHeaders.length>0,m=n.column.getCanSort(),y=n.column.getIsSorted(),H=t.findIndex(f=>f.id===n.column.id),x=o&&!n.isPlaceholder&&!d&&!s.isUtilityColumn&&!s.isSpacerColumn,v=i(u?.hideOn);return jsxs(R,{colSpan:n.colSpan,scope:n.isPlaceholder?void 0:d?"colgroup":"col","aria-hidden":n.isPlaceholder||void 0,"data-column-id":n.column.id,"data-header-depth":n.depth,"data-dtp-slot":d?"data-table-column-group-header":"data-table-column-header",className:a("relative border-b",De(e),d&&C.columnGroupHeader,s.utilityClassName,s.isSpacerColumn&&"border-b-1 bg-transparent p-0",s.pinnedClassName,v,g(n.getContext()),u?.headerClassName,u?.responsiveClassName),style:{...u?.headerStyle,...s.headerStyle},"aria-sort":y==="asc"?"ascending":y==="desc"?"descending":m?"none":void 0,draggable:x,tabIndex:x?0:void 0,onDragStart:x?f=>{a$1.current=n.column.id,f.dataTransfer.effectAllowed="move";}:void 0,onDragOver:x?f=>{f.preventDefault(),f.dataTransfer.dropEffect="move";}:void 0,onDrop:x?f=>{f.preventDefault();let I=a$1.current;a$1.current=null,I&&p(I,n.column.id);}:void 0,onKeyDown:x?f=>{if(!f.altKey||f.key!=="ArrowLeft"&&f.key!=="ArrowRight")return;f.preventDefault();let I=i$1.filter(N=>!ie(N.column.id)&&N.column.id!=="__spacer__"),U=I.findIndex(N=>N.column.id===n.column.id),A=I[f.key==="ArrowLeft"?U-1:U+1];A&&p(n.column.id,A.column.id);}:void 0,children:[n.isPlaceholder?null:m?jsxs("button",{type:"button",className:a("flex w-full items-center gap-2 font-medium",g(n.getContext())),onClick:n.column.getToggleSortingHandler(),children:[jsx("span",{className:"truncate",children:flexRender(n.column.columnDef.header,n.getContext())}),y?jsxs(Fragment,{children:[jsx(ye,{className:a("size-4 shrink-0 transition-transform",y==="desc"?"rotate-0":"rotate-180")}),t.length>1&&H>=0?jsx("span",{className:"inline-flex size-4 shrink-0 items-center justify-center rounded-full text-[10px] leading-none",children:H+1}):null]}):jsx(we,{className:a("size-4 shrink-0",C.headerSortIcon??"opacity-70")})]}):flexRender(n.column.columnDef.header,n.getContext()),r&&!n.isPlaceholder&&n.column.getCanResize()?jsx("div",{onDoubleClick:()=>{for(let f of ce(n))c(f.column.id);},onMouseDown:f=>{for(let I of ce(n))w(I.column.id,I.getSize());n.getResizeHandler()(f);},onTouchStart:f=>{for(let I of ce(n))w(I.column.id,I.getSize());n.getResizeHandler()(f);},className:a("absolute inset-y-0 right-0 z-50 h-full w-3 translate-x-1/2 cursor-col-resize touch-none select-none after:absolute after:top-0 after:left-1/2 after:h-full after:w-px after:-translate-x-1/2",C.resizeHandle??"after:bg-current after:opacity-20 hover:after:opacity-70",n.column.getIsResizing()&&(C.resizeHandleActive??"after:opacity-100"))}):null]},n.id)}function mt(e,t){return e.header.id===t.header.id&&e.header.column.id===t.header.column.id&&e.header.column.columnDef===t.header.column.columnDef&&e.header.colSpan===t.header.colSpan&&e.header.isPlaceholder===t.header.isPlaceholder&&ft(e.header,t.header)&&e.currentDensity===t.currentDensity&&e.enableColumnReordering===t.enableColumnReordering&&e.enableColumnResizing===t.enableColumnResizing&&e.TableHead===t.TableHead&&e.uiClassNames===t.uiClassNames&&e.draggedColumnIdRef===t.draggedColumnIdRef&&e.primeColumnForResize===t.primeColumnForResize&&e.reorderColumn===t.reorderColumn&&e.resetColumnSize===t.resetColumnSize&&e.selectionState===t.selectionState&&pt(e.currentSorting,t.currentSorting)&&bt(e.headerGroupHeaders,t.headerGroupHeaders)&&Dt(e.layout,t.layout)}function ce(e){return e.subHeaders.length?e.getLeafHeaders().filter(t=>!t.subHeaders.length):[e]}function ft(e,t){return e.subHeaders.length===t.subHeaders.length&&e.subHeaders.every((a,o)=>t.subHeaders[o]?.id===a.id)}function pt(e,t){return e.length===t.length&&e.every((a,o)=>{let r=t[o];return r?.id===a.id&&r.desc===a.desc})}function bt(e,t){return e.length===t.length&&e.every((a,o)=>t[o]?.id===a.id)}function Dt(e,t){return e.fixedSide===t.fixedSide&&e.isSpacerColumn===t.isSpacerColumn&&e.isUtilityColumn===t.isUtilityColumn&&e.pinnedClassName===t.pinnedClassName&&e.utilityClassName===t.utilityClassName&&e.headerStyle?.width===t.headerStyle?.width&&e.headerStyle?.minWidth===t.headerStyle?.minWidth&&e.headerStyle?.maxWidth===t.headerStyle?.maxWidth&&e.headerStyle?.insetInlineStart===t.headerStyle?.insetInlineStart&&e.headerStyle?.insetInlineEnd===t.headerStyle?.insetInlineEnd}var Me=L.memo(ut,mt);function La({bodyRowComponents:e,columnLayouts:t,currentDensity:a$1,currentSorting:o=[],DataTableEmptyState:r,dragAndDrop:n,draggedColumnIdRef:i,draftValues:s,editingRowId:w,emptyNode:p,enableColumnReordering:c,enableColumnResizing:R,explicitCustomCellColumnIds:C,fillMinWidth:u,flexGrow:d,getColumnLayout:m,getRowClassName:y,getRowLoadingState:H,infiniteScroll:x,layoutMode:v,localSearchValue:f,onRowClick:I,primeColumnForResize:U,renderedRows:A,renderExpandedRow:N,reorderColumn:J,resetColumnSize:g,resolvedLabels:k,rowsToRender:V,ScrollArea:oe,ScrollBar:E,sentinelRef:B,setDraftValues:F,shouldRenderInitialLoading:W,stickyHeader:Z,summaryRows:Q,table:P,tableClassName:Ee,tableContainerClassName:He,Table:Ne,TableBody:Pe,TableCell:X,TableFooter:Ae="tfoot",TableHead:_e,TableHeader:ze,TableRow:G,tableScrollContainerRef:ve,uiClassNames:_,virtualPaddingBottom:me,virtualPaddingTop:fe,visibleLeafColumnCount:Y,visibleLeafColumns:Ue}){let Ve=P.getIsAllPageRowsSelected()?true:P.getIsSomePageRowsSelected()?"indeterminate":false;return jsx("div",{"data-dtp-slot":"data-table-table-shell",className:a("box-border border-2 border-transparent transition-colors",d?"flex min-h-0 flex-1 flex-col":"h-full",n?.isDragging&&(_.dragActive??"rounded-md border-dashed")),children:jsx("div",{ref:ve,className:a(d?"flex min-h-0 flex-1 flex-col":"h-full"),children:jsxs(oe,{className:a("rounded-md border",d?"min-h-0 flex-1":"h-full",_.tableContainer,_.tableScrollArea,He),children:[jsx("div",{className:"min-h-full",children:jsxs(Ne,{className:a("w-full table-fixed border-separate border-spacing-0",Ee),style:{minWidth:v==="fill"&&u||void 0,width:v==="fit"?P.getTotalSize():"100%"},children:[jsx("colgroup",{children:P.getVisibleLeafColumns().map(h=>{let M=m(h.id);return jsx("col",{style:M.colStyle},h.id)})}),jsx(ze,{className:a(Z?_.tableStickyHeader??"sticky top-0 z-30 backdrop-blur":void 0),children:P.getHeaderGroups().map(h=>jsx(G,{children:h.headers.map(M=>jsx(Me,{currentDensity:a$1,currentSorting:o,draggedColumnIdRef:i,enableColumnReordering:c,enableColumnResizing:R,header:M,headerGroupHeaders:h.headers,layout:Tt(M,m),primeColumnForResize:U,reorderColumn:J,resetColumnSize:g,selectionState:M.column.id==="__select__"?Ve:void 0,TableHead:_e,uiClassNames:_},M.id))},h.id))}),jsx(Pe,{children:A.length?jsxs(Fragment,{children:[fe>0?jsx(G,{"aria-hidden":"true",children:jsx(X,{colSpan:Math.max(1,Y),className:"border-b-0 p-0",style:{height:fe}})}):null,V.map(({row:h,rowIndex:M})=>{let O=h.original,z=te(O),j=z?{isLoading:true}:H?.(O,M),Oe=typeof j=="boolean"?{isLoading:j}:j,Ke=z?false:n?.getRowDraggable?.(O)??false;return jsx(ke,{columnLayouts:t,components:e,currentDensity:a$1,draftValues:s,dragAndDrop:n,explicitCustomCellColumnIds:C,getRowClassName:y,isDraggable:Ke,isEditing:w===h.id,isExpanded:h.getIsExpanded(),isInitialLoadingRow:z,isSelected:h.getIsSelected(),loadingState:Oe,onRowClick:I,originalRow:O,renderExpandedRow:N,row:h,rowIndex:M,setDraftValues:F,uiClassNames:_,visibleCells:h.getVisibleCells(),visibleLeafColumnCount:Y},h.id)}),me>0?jsx(G,{"aria-hidden":"true",children:jsx(X,{colSpan:Math.max(1,Y),className:"border-b-0 p-0",style:{height:me}})}):null]}):jsx(G,{children:jsx(X,{colSpan:Math.max(1,Y),className:"h-full grow",children:jsx("div",{className:"flex h-full min-h-full w-full grow items-center justify-center",children:p??jsx(r,{title:f?k.noMatchingRowsTitle:k.noRowsTitle,description:f?k.noMatchingRowsDescription:k.noRowsDescription})})})})}),Q.length?jsx(Ae,{children:Q.map(h=>jsx(G,{children:Ue.map((M,O)=>{let z=h.cells[M.id]??(O===0?h.label:null);return jsx(X,{className:a("border-b font-medium",_.cellBorder),children:typeof z=="function"?z({rows:P.getFilteredRowModel().rows.map(j=>j.original),columnId:M.id}):z},`${h.key}-${M.id}`)})},h.key))}):null]})}),x?.enabled&&A.length&&!W?jsx("div",{className:"px-4 pb-4",children:jsx("div",{ref:B,className:"h-4 w-full"})}):null,jsx(E,{orientation:"horizontal"})]})})})}function Tt(e,t){let a=t(e.column.id);if(e.isPlaceholder||!e.subHeaders.length)return a;let o=e.getLeafHeaders().filter(i=>!i.subHeaders.length).map(i=>t(i.column.id)),r=o[0]?.fixedSide;if(!r||!o.every(i=>i.fixedSide===r))return a;let n=r==="left"?o[0]:o.at(-1);return {...a,fixedSide:r,headerStyle:n?.headerStyle?{insetInlineStart:n.headerStyle.insetInlineStart,insetInlineEnd:n.headerStyle.insetInlineEnd}:void 0,pinnedClassName:n?.pinnedClassName}}export{le as A,It as B,Fe as C,kt as D,xt as E,Lt as F,je as G,$e as H,Mt as I,Et as J,ie as K,Ht as L,ge as M,At as N,ke as O,Me as P,La as Q,Ut as a,Vt as b,ye as c,Ot as d,Kt as e,Bt as f,Ft as g,Wt as h,Gt as i,jt as j,$t as k,qt as l,Jt as m,Zt as n,Qt as o,Xt as p,Yt as q,ea as r,we as s,ta as t,ht as u,wt as v,te as w,St as x,Rt as y,Be as z};//# sourceMappingURL=chunk-ZGXFBFNQ.js.map -//# sourceMappingURL=chunk-ZGXFBFNQ.js.map \ No newline at end of file diff --git a/dist/chunk-ZGXFBFNQ.js.map b/dist/chunk-ZGXFBFNQ.js.map deleted file mode 100644 index b2b0b25..0000000 --- a/dist/chunk-ZGXFBFNQ.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/core/data-table/data-table-utils.ts","../src/core/data-table/use-row-editing.tsx","../src/core/icons.tsx","../src/core/data-table/data-table-cell-content.tsx","../src/core/data-table/data-table-body-row.tsx","../src/core/data-table/data-table-header-cell.tsx","../src/core/data-table/data-table-table-panel.tsx"],"names":["DATA_TABLE_LOADING_ROW","UTILITY_COLUMN_SIZE","createDataTableLoadingRows","count","_","index","isDataTableLoadingRow","row","getDataTableLoadingRowId","getConfiguredColumnMinWidth","column","minSize","decorateFilterableColumn","childColumn","filter","columnId","filterValue","hasFilterValue","value","optionValue","normalizeFilterValue","getDataTableLeafColumns","columns","leaves","visit","currentColumns","normalizeColumnFilterOptions","options","option","startCase","dataTableGlobalFilterFn","normalizedQuery","exportDataTableCsv","csvExport","table","filename","scope","exportColumnIds","isUtilityColumnId","rows","getCsvExportRows","csvRows","lineEnding","escapeFormulaValues","csv","escapeCsvCell","blob","url","anchor","text","getInitialColumnPinning","left","right","getColumnId","accessorKey","getAccessorKey","getFixedSide","pinnedSide","getPinnedColumnClassName","side","uiClassNames","isUtilityColumn","cn","getDensityHeaderClassName","density","getDensityCellClassName","moveColumnInOrder","currentOrder","sourceColumnId","targetColumnId","order","sourceIndex","targetIndex","source","character","useRowEditing","editableRows","onError","editingRowId","setEditingRowId","draftValues","setDraftValues","draftValuesRef","isSavingEdit","setIsSavingEdit","cancelEditing","startEditingRow","rowId","initialValues","defaultDraftValues","saveEdit","error","draft","renderEditableCell","context","components","Checkbox","Input","meta","draftValue","setDraftValue","current","inputType","getEditableInputType","jsx","checked","getEditableInputValue","event","rawValue","parsedValue","parseEditableInputValue","type","previousValue","Icon","children","viewBox","props","IconAdjustmentsHorizontal","jsxs","IconCheck","IconChevronDown","IconChevronLeft","IconChevronRight","IconChevronUp","IconChevronsLeft","IconChevronsRight","IconClock","IconDatabase","IconDots","IconDownload","IconEdit","IconEye","IconEyeOff","IconInbox","IconLayoutGrid","IconList","IconSearch","IconSelector","IconX","renderDataTableCellContent","classNames","hasCustomCell","renderedCellContent","flexRender","hasComplexRenderedContent","isComplexRenderedCellContent","resolvedOverflow","resolveDataTableCellOverflow","getCellOverflowClassName","formatDateValue","content","formatCellValue","useCustomOverflowDefaults","overflow","Re","DataTableBodyRowInner","columnLayouts","currentDensity","dragAndDrop","explicitCustomCellColumnIds","getRowClassName","isDraggable","isEditing","isExpanded","isInitialLoadingRow","isSelected","loadingState","onRowClick","originalRow","renderExpandedRow","visibleCells","visibleLeafColumnCount","Skeleton","TableCell","TableRow","ne","cell","cellContext","layout","isSelectionColumn","isExpansionColumn","isActionsColumn","isSpacerColumn","hideClassName","hideOnClassName","cellClassName","cellAlignClassName","areDataTableBodyRowsEqual","previous","next","sameLoadingState","sameVisibleCells","sameColumnLayouts","nextCell","cells","previousLayout","nextLayout","sameCellStyle","DataTableBodyRow","DataTableHeaderCellInner","currentSorting","draggedColumnIdRef","enableColumnReordering","enableColumnResizing","header","headerGroupHeaders","primeColumnForResize","reorderColumn","resetColumnSize","TableHead","isColumnGroup","canSort","sortingState","sortingIndex","sort","canReorderColumn","headerAlignClassName","headers","item","currentIndex","target","Fragment","leafHeader","getResizableLeafHeaders","areDataTableHeaderCellsEqual","sameSubHeaders","sameSorting","sameHeaderGroupHeaders","sameHeaderLayout","nextSort","DataTableHeaderCell","Le","DataTableTablePanel","bodyRowComponents","DataTableEmptyState","emptyNode","fillMinWidth","flexGrow","getColumnLayout","getRowLoadingState","infiniteScroll","layoutMode","localSearchValue","renderedRows","resolvedLabels","rowsToRender","ScrollArea","ScrollBar","sentinelRef","shouldRenderInitialLoading","stickyHeader","summaryRows","tableClassName","tableContainerClassName","Table","TableBody","TableFooter","TableHeader","tableScrollContainerRef","virtualPaddingBottom","virtualPaddingTop","visibleLeafColumns","selectionState","headerGroup","getHeaderLayout","rowIndex","resolvedLoadingState","summaryRow","columnLayout","leafLayouts","fixedSide","edgeLayout"],"mappings":"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","file":"chunk-ZGXFBFNQ.js","sourcesContent":["import type {\n Column,\n ColumnDef,\n ColumnPinningState,\n Row,\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableColumnFilterOption,\n DataTableCsvExportOptions,\n DataTableCsvExportScope,\n DataTableDensity,\n DataTableLabels,\n} from \"../types\";\nimport type { DataTableUiClassNames } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nconst DATA_TABLE_LOADING_ROW = Symbol(\"data-table-loading-row\");\n\nexport const UTILITY_COLUMN_SIZE = 50;\n\ntype DataTableLoadingRow = {\n [DATA_TABLE_LOADING_ROW]: true;\n index: number;\n};\n\nexport function createDataTableLoadingRows(count: number) {\n return Array.from({ length: count }, (_, index) => {\n return {\n [DATA_TABLE_LOADING_ROW]: true,\n index,\n } as DataTableLoadingRow as TData;\n });\n}\n\nexport function isDataTableLoadingRow(\n row: unknown,\n): row is DataTableLoadingRow {\n return Boolean(\n row &&\n typeof row === \"object\" &&\n DATA_TABLE_LOADING_ROW in (row as Record),\n );\n}\n\nexport function getDataTableLoadingRowId(index: number) {\n return `__loading__${index}`;\n}\n\nexport function getConfiguredColumnMinWidth(\n column: DataTableColumnDef,\n) {\n if (typeof column.meta?.minWidth === \"number\") {\n return column.meta.minWidth;\n }\n\n if (Object.prototype.hasOwnProperty.call(column, \"minSize\")) {\n const minSize = (column as { minSize?: unknown }).minSize;\n\n if (typeof minSize === \"number\") {\n return minSize;\n }\n }\n\n return undefined;\n}\n\nexport function decorateFilterableColumn(\n column: DataTableColumnDef,\n): ColumnDef {\n if (\"columns\" in column && Array.isArray(column.columns)) {\n return {\n ...column,\n columns: column.columns.map((childColumn) =>\n decorateFilterableColumn(\n childColumn as DataTableColumnDef,\n ),\n ),\n };\n }\n\n const filter = column.meta?.filter;\n if (!filter || column.filterFn) {\n return column;\n }\n\n return {\n ...column,\n filterFn: (row, columnId, filterValue) => {\n if (!hasFilterValue(filterValue)) {\n return true;\n }\n\n const value = row.getValue(columnId);\n const optionValue =\n filter.getOptionValue?.(value, row.original) ??\n normalizeFilterValue(value);\n\n if (filter.type === \"multi\") {\n return Array.isArray(filterValue)\n ? filterValue.map(String).includes(optionValue)\n : true;\n }\n\n if (filter.type === \"select\") {\n return optionValue === String(filterValue);\n }\n\n return normalizeFilterValue(value)\n .toLowerCase()\n .includes(String(filterValue).toLowerCase());\n },\n };\n}\n\nexport type DataTableLeafColumn = {\n column: DataTableColumnDef;\n index: number;\n};\n\nexport function getDataTableLeafColumns(\n columns: Array>,\n) {\n const leaves: Array> = [];\n\n const visit = (currentColumns: Array>) => {\n currentColumns.forEach((column, index) => {\n if (\"columns\" in column && column.columns?.length) {\n visit(column.columns);\n return;\n }\n\n leaves.push({ column, index });\n });\n };\n\n visit(columns);\n return leaves;\n}\n\nexport function normalizeColumnFilterOptions(\n options: Array,\n) {\n return options.map((option) =>\n typeof option === \"string\"\n ? { label: startCase(option), value: option }\n : option,\n );\n}\n\nexport function normalizeFilterValue(value: unknown) {\n if (value == null) {\n return \"\";\n }\n\n if (value instanceof Date) {\n return value.toISOString();\n }\n\n if (typeof value === \"object\") {\n try {\n return JSON.stringify(value);\n } catch {\n return \"\";\n }\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n typeof value === \"bigint\" ||\n typeof value === \"symbol\"\n ) {\n return String(value);\n }\n\n return \"\";\n}\n\nexport function hasFilterValue(value: unknown) {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n\n return value !== undefined && value !== null && value !== \"\";\n}\n\nexport function dataTableGlobalFilterFn(\n row: Row,\n columnId: string,\n filterValue: unknown,\n) {\n const normalizedQuery = normalizeFilterValue(filterValue)\n .trim()\n .toLowerCase();\n\n if (!normalizedQuery) {\n return true;\n }\n\n return normalizeFilterValue(row.getValue(columnId))\n .toLowerCase()\n .includes(normalizedQuery);\n}\n\nexport async function exportDataTableCsv({\n csvExport,\n table,\n}: {\n csvExport: boolean | DataTableCsvExportOptions;\n table: TanStackTable;\n labels: DataTableLabels;\n}) {\n if (csvExport === false) {\n return;\n }\n\n const options: DataTableCsvExportOptions =\n csvExport === true ? {} : csvExport;\n const filename = options.filename ?? \"data-table.csv\";\n const scope = options.scope ?? \"filtered\";\n const exportColumnIds = options.columns\n ? new Set(options.columns)\n : undefined;\n const columns = table\n .getVisibleLeafColumns()\n .filter(\n (column) =>\n !isUtilityColumnId(column.id) &&\n column.id !== \"__spacer__\" &&\n (!exportColumnIds || exportColumnIds.has(column.id)),\n );\n const rows = getCsvExportRows(table, scope);\n const csvRows: Array> = [];\n\n if (options.includeHeaders ?? true) {\n csvRows.push(\n columns.map((column) =>\n typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : startCase(column.id),\n ),\n );\n }\n\n for (const row of rows) {\n csvRows.push(\n columns.map((column) => {\n const value = row.getValue(column.id);\n return options.getCellValue\n ? options.getCellValue({\n row: row.original,\n rowId: row.id,\n columnId: column.id,\n value,\n })\n : value;\n }),\n );\n }\n\n const lineEnding = options.lineEnding ?? \"\\r\\n\";\n const escapeFormulaValues = options.escapeFormulaValues ?? true;\n const csv = csvRows\n .map((row) =>\n row\n .map((value) => escapeCsvCell(value, escapeFormulaValues))\n .join(\",\"),\n )\n .join(lineEnding);\n\n if (options.onExport) {\n await options.onExport({\n csv,\n filename,\n rows: rows.map((row) => row.original),\n scope,\n });\n return;\n }\n\n if (typeof window === \"undefined\") {\n return;\n }\n\n const blob = new Blob([csv], { type: \"text/csv;charset=utf-8\" });\n const url = window.URL.createObjectURL(blob);\n const anchor = window.document.createElement(\"a\");\n anchor.href = url;\n anchor.download = filename;\n anchor.click();\n window.URL.revokeObjectURL(url);\n}\n\nfunction getCsvExportRows(\n table: TanStackTable,\n scope: DataTableCsvExportScope,\n) {\n switch (scope) {\n case \"page\":\n return table.getRowModel().rows;\n case \"selected\":\n return table\n .getPrePaginationRowModel()\n .rows.filter((row) => row.getIsSelected());\n case \"all\":\n return table.getCoreRowModel().rows;\n default:\n return table.getPrePaginationRowModel().rows;\n }\n}\n\nfunction escapeCsvCell(value: unknown, escapeFormulaValues: boolean) {\n let text = normalizeFilterValue(value);\n if (\n escapeFormulaValues &&\n typeof value === \"string\" &&\n /^[\\t\\r ]*[=+\\-@]/.test(value)\n ) {\n text = `'${text}`;\n }\n if (/[\",\\n\\r]/.test(text)) {\n return `\"${text.replace(/\"/g, '\"\"')}\"`;\n }\n return text;\n}\n\nexport function getInitialColumnPinning(\n columns: Array>,\n): ColumnPinningState {\n const left: Array = [];\n const right: Array = [];\n\n for (const { column, index } of getDataTableLeafColumns(columns)) {\n const columnId = getColumnId(column, index);\n if (column.meta?.fixed === \"left\") {\n left.push(columnId);\n }\n if (column.meta?.fixed === \"right\") {\n right.push(columnId);\n }\n }\n\n return { left, right };\n}\n\nexport function getColumnId(\n column: DataTableColumnDef,\n index: number,\n) {\n if (column.id) {\n return column.id;\n }\n\n const accessorKey = getAccessorKey(column);\n if (accessorKey) {\n return accessorKey;\n }\n\n return `column-${index}`;\n}\n\nexport function getAccessorKey(\n column: DataTableColumnDef,\n) {\n if (\"accessorKey\" in column && typeof column.accessorKey === \"string\") {\n return column.accessorKey;\n }\n\n return undefined;\n}\n\nexport function getFixedSide(column: Column) {\n const pinnedSide = column.getIsPinned();\n if (pinnedSide) {\n return pinnedSide;\n }\n\n if (column.id === \"__select__\") {\n return \"left\" as const;\n }\n\n if (column.id === \"__expand__\") {\n return \"left\" as const;\n }\n\n if (column.id === \"__actions__\") {\n return \"right\" as const;\n }\n\n const meta = (column.columnDef as DataTableColumnDef).meta;\n return meta?.fixed;\n}\n\nexport function getPinnedColumnClassName(\n side: \"left\" | \"right\",\n uiClassNames: DataTableUiClassNames,\n options?: { isUtilityColumn?: boolean },\n) {\n const isUtilityColumn = options?.isUtilityColumn ?? false;\n return cn(\n \"sticky backdrop-blur box-border\",\n uiClassNames.pinnedColumn,\n !isUtilityColumn && \"border-dotted\",\n isUtilityColumn ? uiClassNames.pinnedUtilityColumn : undefined,\n side === \"left\" ? \"border-r-1\" : \"border-l\",\n );\n}\n\nexport function isUtilityColumnId(columnId: string) {\n return (\n columnId === \"__select__\" ||\n columnId === \"__expand__\" ||\n columnId === \"__actions__\"\n );\n}\n\nexport function getDensityHeaderClassName(density: DataTableDensity) {\n switch (density) {\n case \"compact\":\n return \"h-8 py-1\";\n case \"spacious\":\n return \"h-14 py-4\";\n case \"comfortable\":\n default:\n return undefined;\n }\n}\n\nexport function getDensityCellClassName(density: DataTableDensity) {\n switch (density) {\n case \"compact\":\n return \"py-1.5\";\n case \"spacious\":\n return \"py-4\";\n case \"comfortable\":\n default:\n return undefined;\n }\n}\n\nexport function moveColumnInOrder(\n currentOrder: Array,\n sourceColumnId: string,\n targetColumnId: string,\n) {\n const order = currentOrder.includes(sourceColumnId)\n ? currentOrder.slice()\n : [...currentOrder, sourceColumnId];\n const sourceIndex = order.indexOf(sourceColumnId);\n const targetIndex = order.indexOf(targetColumnId);\n\n if (sourceIndex < 0 || targetIndex < 0 || sourceIndex === targetIndex) {\n return order;\n }\n\n const [source] = order.splice(sourceIndex, 1);\n order.splice(targetIndex, 0, source);\n return order;\n}\n\nexport function startCase(value: string) {\n return value\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .replace(/[_-]+/g, \" \")\n .replace(/\\s+/g, \" \")\n .trim()\n .replace(/\\b\\w/g, (character) => character.toUpperCase());\n}\n","import * as React from \"react\";\nimport type { CellContext } from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableColumnType,\n DataTableEditableRowsConfig,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { getDataTableLeafColumns } from \"./data-table-utils\";\n\nexport function useRowEditing({\n columns,\n editableRows,\n onError,\n}: {\n columns: Array>;\n editableRows: DataTableEditableRowsConfig | undefined;\n onError?: (error: unknown, row: TData) => void;\n}) {\n const [editingRowId, setEditingRowId] = React.useState(null);\n const [draftValues, setDraftValues] = React.useState<\n Record\n >({});\n const draftValuesRef = React.useRef(draftValues);\n const [isSavingEdit, setIsSavingEdit] = React.useState(false);\n\n React.useEffect(() => {\n draftValuesRef.current = draftValues;\n }, [draftValues]);\n\n const cancelEditing = React.useCallback(() => {\n setEditingRowId(null);\n setDraftValues({});\n }, []);\n\n const startEditingRow = React.useCallback(\n (row: TData, rowId: string) => {\n const initialValues =\n editableRows?.getInitialValues?.(row) ??\n defaultDraftValues(row, columns);\n setDraftValues(initialValues);\n setEditingRowId(rowId);\n },\n [columns, editableRows],\n );\n\n const saveEdit = React.useCallback(\n async (row: TData) => {\n if (!editableRows) {\n return;\n }\n\n setIsSavingEdit(true);\n try {\n await editableRows.onSaveRow(row, draftValuesRef.current);\n React.startTransition(cancelEditing);\n } catch (error) {\n onError?.(error, row);\n } finally {\n setIsSavingEdit(false);\n }\n },\n [cancelEditing, editableRows, onError],\n );\n\n return {\n cancelEditing,\n draftValues,\n editingRowId,\n isSavingEdit,\n saveEdit,\n setDraftValues,\n setEditingRowId,\n startEditingRow,\n };\n}\n\nfunction defaultDraftValues(\n row: TData,\n columns: Array>,\n) {\n return getDataTableLeafColumns(columns).reduce>(\n (draft, { column }) => {\n if (\"accessorKey\" in column && typeof column.accessorKey === \"string\") {\n draft[column.accessorKey] = (row as Record)[\n column.accessorKey\n ];\n }\n return draft;\n },\n {},\n );\n}\n\nexport function renderEditableCell(\n context: CellContext,\n draftValues: Record,\n setDraftValues: React.Dispatch>>,\n components: Pick,\n) {\n const { Checkbox, Input } = components;\n const column = context.column.columnDef as DataTableColumnDef;\n const meta = column.meta;\n const accessorKey =\n \"accessorKey\" in column && typeof column.accessorKey === \"string\"\n ? column.accessorKey\n : context.column.id;\n const draftValue = draftValues[accessorKey];\n const setDraftValue = (value: unknown) => {\n setDraftValues((current) => ({\n ...current,\n [accessorKey]: value,\n }));\n };\n\n if (meta?.renderEditCell) {\n return meta.renderEditCell({\n cell: context,\n row: context.row.original,\n value: context.getValue(),\n draftValue,\n setDraftValue,\n });\n }\n\n const inputType = getEditableInputType(meta?.type, draftValue);\n\n if (typeof draftValue === \"boolean\") {\n return (\n {\n setDraftValue(checked === true);\n }}\n />\n );\n }\n\n return (\n ) => {\n const rawValue = event.target.value;\n const parsedValue = meta?.parseEditValue\n ? meta.parseEditValue(rawValue, context)\n : parseEditableInputValue(rawValue, inputType, draftValue);\n setDraftValue(parsedValue);\n }}\n />\n );\n}\n\nfunction getEditableInputType(\n type: DataTableColumnType | undefined,\n value: unknown,\n) {\n if (type === \"numeric\" || typeof value === \"number\") {\n return \"number\";\n }\n\n if (type === \"date\" || value instanceof Date) {\n return \"datetime-local\";\n }\n\n return \"text\";\n}\n\nfunction getEditableInputValue(value: unknown, inputType = \"text\") {\n if (value == null) {\n return \"\";\n }\n\n if (value instanceof Date) {\n return inputType === \"datetime-local\"\n ? value.toISOString().slice(0, 16)\n : value.toISOString();\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n typeof value === \"bigint\"\n ) {\n return String(value);\n }\n\n return \"\";\n}\n\nfunction parseEditableInputValue(\n value: string,\n inputType: string,\n previousValue: unknown,\n) {\n if (inputType === \"number\") {\n return value === \"\" ? null : Number(value);\n }\n\n if (inputType === \"datetime-local\") {\n if (!value) {\n return null;\n }\n return previousValue instanceof Date ? new Date(value) : value;\n }\n\n return value;\n}\n","import * as React from \"react\";\n\ntype IconProps = React.SVGProps;\n\nfunction Icon({\n children,\n viewBox = \"0 0 24 24\",\n ...props\n}: IconProps & { children: React.ReactNode }) {\n return (\n \n {children}\n \n );\n}\n\nexport function IconAdjustmentsHorizontal(props: IconProps) {\n return (\n \n \n \n \n \n \n \n \n );\n}\n\nexport function IconArchive(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconBell(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconBriefcase(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconCheck(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronDown(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronLeft(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronRight(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronUp(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronsLeft(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconChevronsRight(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconClock(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconDatabase(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconDots(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconDownload(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconEdit(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconEye(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconEyeOff(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconFileUpload(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconInbox(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconLayoutGrid(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconList(props: IconProps) {\n return (\n \n \n \n \n \n \n \n \n );\n}\n\nexport function IconRefresh(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconSearch(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconSelector(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconSparkles(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconStar(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconUserCheck(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconX(props: IconProps) {\n return (\n \n \n \n \n );\n}\n","import * as React from \"react\";\nimport { flexRender, type CellContext } from \"@tanstack/react-table\";\nimport { IconClock } from \"../icons\";\nimport type {\n DataTableCellOverflow,\n DataTableColumnDef,\n} from \"../types\";\nimport type { DataTableUiClassNames } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nexport function renderDataTableCellContent(\n context: CellContext,\n classNames?: DataTableUiClassNames,\n options?: {\n hasCustomCell?: boolean;\n useCustomOverflowDefaults?: boolean;\n },\n) {\n const column = context.column.columnDef as DataTableColumnDef;\n const meta = column.meta;\n const value = context.getValue();\n const hasCustomCell = options?.hasCustomCell ?? false;\n const renderedCellContent = hasCustomCell && column.cell\n ? flexRender(column.cell, context)\n : undefined;\n const hasComplexRenderedContent = isComplexRenderedCellContent(\n renderedCellContent,\n );\n const resolvedOverflow = resolveDataTableCellOverflow({\n context,\n useCustomOverflowDefaults: options?.useCustomOverflowDefaults ?? false,\n value,\n });\n\n if (meta?.type === \"date\" && !hasCustomCell) {\n return (\n \n \n {formatDateValue(value)}\n \n );\n }\n\n const content =\n renderedCellContent !== undefined &&\n renderedCellContent !== null &&\n renderedCellContent !== \"\"\n ? renderedCellContent\n : value == null || value === \"\"\n ? -\n : formatCellValue(value);\n\n return (\n *]:max-w-full [&>*]:min-w-0\",\n )}\n >\n {content}\n \n );\n}\n\nfunction resolveDataTableCellOverflow({\n context,\n useCustomOverflowDefaults,\n value,\n}: {\n context: CellContext;\n useCustomOverflowDefaults: boolean;\n value: unknown;\n}): DataTableCellOverflow {\n const column = context.column.columnDef as DataTableColumnDef;\n const resolvedOverflow =\n typeof column.meta?.overflow === \"function\"\n ? column.meta.overflow({\n row: context.row.original,\n value,\n })\n : column.meta?.overflow;\n\n if (resolvedOverflow) {\n return resolvedOverflow;\n }\n\n return useCustomOverflowDefaults ? \"clip\" : \"truncate\";\n}\n\nfunction getCellOverflowClassName(overflow: DataTableCellOverflow) {\n switch (overflow) {\n case \"clip\":\n return \"block overflow-hidden whitespace-nowrap\";\n case \"wrap\":\n return \"block overflow-hidden whitespace-normal break-words\";\n case \"visible\":\n return \"block overflow-visible whitespace-normal\";\n case \"truncate\":\n default:\n return \"block overflow-hidden text-ellipsis whitespace-nowrap\";\n }\n}\n\nfunction isComplexRenderedCellContent(content: React.ReactNode) {\n if (content == null) {\n return false;\n }\n\n return (\n React.isValidElement(content) ||\n Array.isArray(content) ||\n typeof content === \"object\"\n );\n}\n\nfunction formatDateValue(value: unknown) {\n if (typeof value === \"number\") {\n return new Date(value * 1000).toLocaleString();\n }\n\n if (typeof value === \"string\" && value) {\n return value;\n }\n\n return \"-\";\n}\n\nfunction formatCellValue(value: unknown) {\n if (value instanceof Date) {\n return value.toLocaleString();\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n typeof value === \"bigint\"\n ) {\n return String(value);\n }\n\n try {\n return JSON.stringify(value);\n } catch {\n return \"-\";\n }\n}\n","import * as React from \"react\";\nimport type { Cell, Row } from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableDensity,\n DataTableProps,\n DataTableRowLoadingState,\n} from \"../types\";\nimport type { DataTableUiClassNames, DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { renderDataTableCellContent } from \"./data-table-cell-content\";\nimport type { DataTableColumnLayout } from \"./use-column-layout\";\nimport {\n getDensityCellClassName,\n isDataTableLoadingRow,\n} from \"./data-table-utils\";\nimport { renderEditableCell } from \"./use-row-editing\";\nimport { cellAlignClassName, hideOnClassName } from \"../types\";\n\ntype DataTableBodyRowProps = {\n columnLayouts: ReadonlyMap;\n components: Pick<\n DataTableUiKit,\n \"Checkbox\" | \"Input\" | \"Skeleton\" | \"TableCell\" | \"TableRow\"\n >;\n currentDensity: DataTableDensity;\n draftValues: Record;\n dragAndDrop: DataTableProps[\"dragAndDrop\"];\n explicitCustomCellColumnIds: ReadonlySet;\n getRowClassName: DataTableProps[\"getRowClassName\"];\n isDraggable: boolean;\n isEditing: boolean;\n isExpanded: boolean;\n isInitialLoadingRow: boolean;\n isSelected: boolean;\n loadingState: DataTableRowLoadingState | undefined;\n onRowClick: DataTableProps[\"onRowClick\"];\n originalRow: TData;\n renderExpandedRow: DataTableProps[\"renderExpandedRow\"];\n row: Row;\n rowIndex: number;\n setDraftValues: React.Dispatch>>;\n uiClassNames: DataTableUiClassNames;\n visibleCells: Array>;\n visibleLeafColumnCount: number;\n};\n\nfunction DataTableBodyRowInner({\n columnLayouts,\n components,\n currentDensity,\n draftValues,\n dragAndDrop,\n explicitCustomCellColumnIds,\n getRowClassName,\n isDraggable,\n isEditing,\n isExpanded,\n isInitialLoadingRow,\n isSelected,\n loadingState,\n onRowClick,\n originalRow,\n renderExpandedRow,\n row,\n setDraftValues,\n uiClassNames,\n visibleCells,\n visibleLeafColumnCount,\n}: DataTableBodyRowProps) {\n const { Checkbox, Input, Skeleton, TableCell, TableRow } = components;\n\n return (\n \n ) => {\n if (isInitialLoadingRow) {\n return;\n }\n\n const target = event.target as HTMLElement | null;\n if (target?.closest(\"[data-row-click-ignore='true']\")) {\n return;\n }\n\n void onRowClick?.({ row: originalRow, rowId: row.id });\n }}\n onKeyDown={(event: React.KeyboardEvent) => {\n if (\n isInitialLoadingRow ||\n !onRowClick ||\n (event.key !== \"Enter\" && event.key !== \" \")\n ) {\n return;\n }\n\n const target = event.target as HTMLElement | null;\n if (target?.closest(\"[data-row-click-ignore='true']\")) {\n return;\n }\n\n event.preventDefault();\n void onRowClick({ row: originalRow, rowId: row.id });\n }}\n onDragStart={(event: React.DragEvent) => {\n if (isInitialLoadingRow) {\n return;\n }\n\n dragAndDrop?.onRowDragStart?.({\n row: originalRow,\n rowId: row.id,\n event,\n });\n }}\n onDragEnd={(event: React.DragEvent) => {\n if (isInitialLoadingRow) {\n return;\n }\n\n dragAndDrop?.onRowDragEnd?.({\n row: originalRow,\n rowId: row.id,\n event,\n });\n }}\n >\n {visibleCells.map((cell) => {\n const meta = (\n cell.column.columnDef as DataTableColumnDef\n ).meta;\n const cellContext = cell.getContext();\n const value = cell.getValue();\n const layout = columnLayouts.get(cell.column.id);\n const isSelectionColumn = layout?.isSelectionColumn ?? false;\n const isExpansionColumn = layout?.isExpansionColumn ?? false;\n const isActionsColumn = layout?.isActionsColumn ?? false;\n const isSpacerColumn = layout?.isSpacerColumn ?? false;\n const hideClassName = hideOnClassName(meta?.hideOn);\n const cellClassName =\n isInitialLoadingRow || isDataTableLoadingRow(originalRow)\n ? undefined\n : typeof meta?.cellClassName === \"function\"\n ? meta.cellClassName({\n row: originalRow,\n value,\n })\n : meta?.cellClassName;\n\n return (\n \n \n {loadingState?.isLoading ? (\n (meta?.skeleton?.(cellContext) ??\n loadingState.skeleton ?? (\n \n ))\n ) : isEditing &&\n cell.column.id !== \"__select__\" &&\n cell.column.id !== \"__expand__\" &&\n cell.column.id !== \"__actions__\" ? (\n renderEditableCell(cellContext, draftValues, setDraftValues, {\n Checkbox,\n Input,\n })\n ) : (\n renderDataTableCellContent(cellContext, uiClassNames, {\n hasCustomCell:\n explicitCustomCellColumnIds.has(cell.column.id) ||\n isSelectionColumn ||\n isExpansionColumn ||\n isActionsColumn ||\n isSpacerColumn,\n useCustomOverflowDefaults:\n explicitCustomCellColumnIds.has(cell.column.id) ||\n isSelectionColumn ||\n isExpansionColumn ||\n isActionsColumn ||\n isSpacerColumn,\n })\n )}\n \n \n );\n })}\n \n {!isInitialLoadingRow && renderExpandedRow && isExpanded ? (\n \n \n {renderExpandedRow({\n row: originalRow,\n rowId: row.id,\n tableRow: row,\n })}\n \n \n ) : null}\n \n );\n}\n\nfunction areDataTableBodyRowsEqual(\n previous: DataTableBodyRowProps,\n next: DataTableBodyRowProps,\n) {\n return (\n previous.row.id === next.row.id &&\n previous.row.original === next.row.original &&\n previous.rowIndex === next.rowIndex &&\n previous.isSelected === next.isSelected &&\n previous.isInitialLoadingRow === next.isInitialLoadingRow &&\n previous.isEditing === next.isEditing &&\n previous.isExpanded === next.isExpanded &&\n previous.isDraggable === next.isDraggable &&\n sameLoadingState(previous.loadingState, next.loadingState) &&\n sameVisibleCells(previous.visibleCells, next.visibleCells) &&\n previous.components === next.components &&\n sameColumnLayouts(\n previous.columnLayouts,\n next.columnLayouts,\n next.visibleCells,\n ) &&\n previous.currentDensity === next.currentDensity &&\n previous.renderExpandedRow === next.renderExpandedRow &&\n previous.onRowClick === next.onRowClick &&\n previous.dragAndDrop === next.dragAndDrop &&\n previous.getRowClassName === next.getRowClassName &&\n previous.uiClassNames === next.uiClassNames &&\n previous.explicitCustomCellColumnIds === next.explicitCustomCellColumnIds &&\n (!previous.isEditing || previous.draftValues === next.draftValues)\n );\n}\n\nfunction sameLoadingState(\n previous: DataTableRowLoadingState | undefined,\n next: DataTableRowLoadingState | undefined,\n) {\n return (\n previous?.isLoading === next?.isLoading &&\n previous?.skeleton === next?.skeleton\n );\n}\n\nfunction sameVisibleCells(\n previous: Array>,\n next: Array>,\n) {\n return (\n previous.length === next.length &&\n previous.every((cell, index) => {\n const nextCell = next[index];\n return nextCell?.id === cell.id && nextCell.column.id === cell.column.id;\n })\n );\n}\n\nfunction sameColumnLayouts(\n previous: ReadonlyMap,\n next: ReadonlyMap,\n cells: Array>,\n) {\n return cells.every((cell) => {\n const previousLayout = previous.get(cell.column.id);\n const nextLayout = next.get(cell.column.id);\n\n return (\n previousLayout?.fixedSide === nextLayout?.fixedSide &&\n previousLayout?.isActionsColumn === nextLayout?.isActionsColumn &&\n previousLayout?.isExpansionColumn === nextLayout?.isExpansionColumn &&\n previousLayout?.isSelectionColumn === nextLayout?.isSelectionColumn &&\n previousLayout?.isSpacerColumn === nextLayout?.isSpacerColumn &&\n previousLayout?.isUtilityColumn === nextLayout?.isUtilityColumn &&\n previousLayout?.pinnedClassName === nextLayout?.pinnedClassName &&\n previousLayout?.utilityClassName === nextLayout?.utilityClassName &&\n sameCellStyle(previousLayout?.cellStyle, nextLayout?.cellStyle)\n );\n });\n}\n\nfunction sameCellStyle(\n previous: React.CSSProperties | undefined,\n next: React.CSSProperties | undefined,\n) {\n return (\n previous?.width === next?.width &&\n previous?.minWidth === next?.minWidth &&\n previous?.maxWidth === next?.maxWidth &&\n previous?.insetInlineStart === next?.insetInlineStart &&\n previous?.insetInlineEnd === next?.insetInlineEnd\n );\n}\n\nexport const DataTableBodyRow = React.memo(\n DataTableBodyRowInner,\n areDataTableBodyRowsEqual,\n) as typeof DataTableBodyRowInner;\n","import * as React from \"react\";\nimport { flexRender } from \"@tanstack/react-table\";\nimport { IconChevronDown, IconSelector } from \"../icons\";\nimport type { Header, SortingState } from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableDensity,\n} from \"../types\";\nimport type { DataTableUiClassNames, DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport type { DataTableColumnLayout } from \"./use-column-layout\";\nimport {\n getDensityHeaderClassName,\n isUtilityColumnId,\n} from \"./data-table-utils\";\nimport { headerAlignClassName, hideOnClassName } from \"../types\";\n\ntype DataTableHeaderCellProps = {\n currentDensity: DataTableDensity;\n currentSorting: SortingState;\n draggedColumnIdRef: React.MutableRefObject;\n enableColumnReordering: boolean;\n enableColumnResizing: boolean;\n header: Header;\n headerGroupHeaders: Array>;\n layout: DataTableColumnLayout;\n primeColumnForResize: (columnId: string, currentSize: number) => void;\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n resetColumnSize: (columnId: string) => void;\n // Rendered through flexRender inside the header def; carried as a prop so\n // the memo comparator re-renders the selection header when it changes.\n selectionState?: boolean | \"indeterminate\";\n TableHead: DataTableUiKit[\"TableHead\"];\n uiClassNames: DataTableUiClassNames;\n};\n\nfunction DataTableHeaderCellInner({\n currentDensity,\n currentSorting,\n draggedColumnIdRef,\n enableColumnReordering,\n enableColumnResizing,\n header,\n headerGroupHeaders,\n layout,\n primeColumnForResize,\n reorderColumn,\n resetColumnSize,\n TableHead,\n uiClassNames,\n}: DataTableHeaderCellProps) {\n const meta = (header.column.columnDef as DataTableColumnDef)\n .meta;\n const isColumnGroup =\n !header.isPlaceholder && header.subHeaders.length > 0;\n const canSort = header.column.getCanSort();\n const sortingState = header.column.getIsSorted();\n const sortingIndex = currentSorting.findIndex(\n (sort) => sort.id === header.column.id,\n );\n const canReorderColumn =\n enableColumnReordering &&\n !header.isPlaceholder &&\n !isColumnGroup &&\n !layout.isUtilityColumn &&\n !layout.isSpacerColumn;\n const hideClassName = hideOnClassName(meta?.hideOn);\n\n return (\n ) => {\n draggedColumnIdRef.current = header.column.id;\n event.dataTransfer.effectAllowed = \"move\";\n }\n : undefined\n }\n onDragOver={\n canReorderColumn\n ? (event: React.DragEvent) => {\n event.preventDefault();\n event.dataTransfer.dropEffect = \"move\";\n }\n : undefined\n }\n onDrop={\n canReorderColumn\n ? (event: React.DragEvent) => {\n event.preventDefault();\n const sourceColumnId = draggedColumnIdRef.current;\n draggedColumnIdRef.current = null;\n if (sourceColumnId) {\n reorderColumn(sourceColumnId, header.column.id);\n }\n }\n : undefined\n }\n onKeyDown={\n canReorderColumn\n ? (event: React.KeyboardEvent) => {\n if (\n !event.altKey ||\n (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\")\n ) {\n return;\n }\n\n event.preventDefault();\n const headers = headerGroupHeaders.filter(\n (item) =>\n !isUtilityColumnId(item.column.id) &&\n item.column.id !== \"__spacer__\",\n );\n const currentIndex = headers.findIndex(\n (item) => item.column.id === header.column.id,\n );\n const target =\n headers[\n event.key === \"ArrowLeft\"\n ? currentIndex - 1\n : currentIndex + 1\n ];\n if (target) {\n reorderColumn(header.column.id, target.column.id);\n }\n }\n : undefined\n }\n >\n {header.isPlaceholder ? null : canSort ? (\n \n \n {flexRender(header.column.columnDef.header, header.getContext())}\n \n {sortingState ? (\n <>\n \n {currentSorting.length > 1 && sortingIndex >= 0 ? (\n \n {sortingIndex + 1}\n \n ) : null}\n \n ) : (\n \n )}\n \n ) : (\n flexRender(header.column.columnDef.header, header.getContext())\n )}\n\n {enableColumnResizing &&\n !header.isPlaceholder &&\n header.column.getCanResize() ? (\n {\n for (const leafHeader of getResizableLeafHeaders(header)) {\n resetColumnSize(leafHeader.column.id);\n }\n }}\n onMouseDown={(event) => {\n for (const leafHeader of getResizableLeafHeaders(header)) {\n primeColumnForResize(\n leafHeader.column.id,\n leafHeader.getSize(),\n );\n }\n header.getResizeHandler()(event);\n }}\n onTouchStart={(event) => {\n for (const leafHeader of getResizableLeafHeaders(header)) {\n primeColumnForResize(\n leafHeader.column.id,\n leafHeader.getSize(),\n );\n }\n header.getResizeHandler()(event);\n }}\n className={cn(\n \"absolute inset-y-0 right-0 z-50 h-full w-3 translate-x-1/2 cursor-col-resize touch-none select-none after:absolute after:top-0 after:left-1/2 after:h-full after:w-px after:-translate-x-1/2\",\n uiClassNames.resizeHandle ??\n \"after:bg-current after:opacity-20 hover:after:opacity-70\",\n header.column.getIsResizing() &&\n (uiClassNames.resizeHandleActive ?? \"after:opacity-100\"),\n )}\n />\n ) : null}\n \n );\n}\n\nfunction areDataTableHeaderCellsEqual(\n previous: DataTableHeaderCellProps,\n next: DataTableHeaderCellProps,\n) {\n return (\n previous.header.id === next.header.id &&\n previous.header.column.id === next.header.column.id &&\n previous.header.column.columnDef === next.header.column.columnDef &&\n previous.header.colSpan === next.header.colSpan &&\n previous.header.isPlaceholder === next.header.isPlaceholder &&\n sameSubHeaders(previous.header, next.header) &&\n previous.currentDensity === next.currentDensity &&\n previous.enableColumnReordering === next.enableColumnReordering &&\n previous.enableColumnResizing === next.enableColumnResizing &&\n previous.TableHead === next.TableHead &&\n previous.uiClassNames === next.uiClassNames &&\n previous.draggedColumnIdRef === next.draggedColumnIdRef &&\n previous.primeColumnForResize === next.primeColumnForResize &&\n previous.reorderColumn === next.reorderColumn &&\n previous.resetColumnSize === next.resetColumnSize &&\n previous.selectionState === next.selectionState &&\n sameSorting(previous.currentSorting, next.currentSorting) &&\n sameHeaderGroupHeaders(\n previous.headerGroupHeaders,\n next.headerGroupHeaders,\n ) &&\n sameHeaderLayout(previous.layout, next.layout)\n );\n}\n\nfunction getResizableLeafHeaders(header: Header) {\n if (!header.subHeaders.length) {\n return [header];\n }\n\n return header\n .getLeafHeaders()\n .filter((leafHeader) => !leafHeader.subHeaders.length);\n}\n\nfunction sameSubHeaders(\n previous: Header,\n next: Header,\n) {\n return (\n previous.subHeaders.length === next.subHeaders.length &&\n previous.subHeaders.every(\n (header, index) => next.subHeaders[index]?.id === header.id,\n )\n );\n}\n\nfunction sameSorting(previous: SortingState, next: SortingState) {\n return (\n previous.length === next.length &&\n previous.every((sort, index) => {\n const nextSort = next[index];\n return nextSort?.id === sort.id && nextSort.desc === sort.desc;\n })\n );\n}\n\nfunction sameHeaderGroupHeaders(\n previous: Array>,\n next: Array>,\n) {\n return (\n previous.length === next.length &&\n previous.every((header, index) => next[index]?.id === header.id)\n );\n}\n\nfunction sameHeaderLayout(\n previous: DataTableColumnLayout,\n next: DataTableColumnLayout,\n) {\n return (\n previous.fixedSide === next.fixedSide &&\n previous.isSpacerColumn === next.isSpacerColumn &&\n previous.isUtilityColumn === next.isUtilityColumn &&\n previous.pinnedClassName === next.pinnedClassName &&\n previous.utilityClassName === next.utilityClassName &&\n previous.headerStyle?.width === next.headerStyle?.width &&\n previous.headerStyle?.minWidth === next.headerStyle?.minWidth &&\n previous.headerStyle?.maxWidth === next.headerStyle?.maxWidth &&\n previous.headerStyle?.insetInlineStart ===\n next.headerStyle?.insetInlineStart &&\n previous.headerStyle?.insetInlineEnd === next.headerStyle?.insetInlineEnd\n );\n}\n\nexport const DataTableHeaderCell = React.memo(\n DataTableHeaderCellInner,\n areDataTableHeaderCellsEqual,\n) as typeof DataTableHeaderCellInner;\n","import * as React from \"react\";\nimport type {\n Column,\n Header,\n Row,\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableDensity,\n DataTableProps,\n DataTableRowLoadingState,\n} from \"../types\";\nimport type { DataTableUiClassNames, DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { DataTableBodyRow } from \"./data-table-body-row\";\nimport { DataTableHeaderCell } from \"./data-table-header-cell\";\nimport type { DataTableColumnLayout } from \"./use-column-layout\";\nimport { isDataTableLoadingRow } from \"./data-table-utils\";\nimport type { DataTableLabels } from \"../types\";\n\nexport type DataTableTablePanelProps = {\n bodyRowComponents: Pick<\n DataTableUiKit,\n \"Checkbox\" | \"Input\" | \"Skeleton\" | \"TableCell\" | \"TableRow\"\n >;\n columnLayouts: ReadonlyMap;\n currentDensity: DataTableDensity;\n currentSorting: DataTableProps[\"sorting\"];\n DataTableEmptyState: React.ElementType;\n dragAndDrop: DataTableProps[\"dragAndDrop\"];\n draggedColumnIdRef: React.RefObject;\n draftValues: Record;\n editingRowId: string | null;\n emptyNode: React.ReactNode;\n enableColumnReordering: boolean;\n enableColumnResizing: boolean;\n explicitCustomCellColumnIds: ReadonlySet;\n fillMinWidth: number;\n flexGrow: boolean;\n getColumnLayout: (columnId: string) => DataTableColumnLayout;\n getRowClassName: DataTableProps[\"getRowClassName\"];\n getRowLoadingState: DataTableProps[\"getRowLoadingState\"];\n infiniteScroll: DataTableProps[\"infiniteScroll\"];\n layoutMode: \"fill\" | \"fit\";\n localSearchValue: string;\n onRowClick: DataTableProps[\"onRowClick\"];\n primeColumnForResize: (columnId: string, currentSize: number) => void;\n renderedRows: Array>;\n renderExpandedRow: DataTableProps[\"renderExpandedRow\"];\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n resetColumnSize: (columnId: string) => void;\n resolvedLabels: DataTableLabels;\n rowsToRender: Array<{ row: Row; rowIndex: number }>;\n ScrollArea: DataTableUiKit[\"ScrollArea\"];\n ScrollBar: DataTableUiKit[\"ScrollBar\"];\n sentinelRef: React.RefObject;\n setDraftValues: React.Dispatch>>;\n shouldRenderInitialLoading: boolean;\n stickyHeader: boolean;\n summaryRows: NonNullable[\"summaryRows\"]>;\n table: TanStackTable;\n tableClassName: string | undefined;\n tableContainerClassName: string | undefined;\n Table: DataTableUiKit[\"Table\"];\n TableBody: DataTableUiKit[\"TableBody\"];\n TableCell: DataTableUiKit[\"TableCell\"];\n TableFooter: DataTableUiKit[\"TableFooter\"];\n TableHead: DataTableUiKit[\"TableHead\"];\n TableHeader: DataTableUiKit[\"TableHeader\"];\n TableRow: DataTableUiKit[\"TableRow\"];\n tableScrollContainerRef: React.RefObject;\n tableScrollElement?: HTMLElement | null;\n uiClassNames: DataTableUiClassNames;\n viewportHeight?: number;\n virtualization?: DataTableProps[\"virtualization\"];\n virtualPaddingBottom: number;\n virtualPaddingTop: number;\n visibleLeafColumnCount: number;\n visibleLeafColumns: Array>;\n};\n\nexport function DataTableTablePanel({\n bodyRowComponents,\n columnLayouts,\n currentDensity,\n currentSorting = [],\n DataTableEmptyState,\n dragAndDrop,\n draggedColumnIdRef,\n draftValues,\n editingRowId,\n emptyNode,\n enableColumnReordering,\n enableColumnResizing,\n explicitCustomCellColumnIds,\n fillMinWidth,\n flexGrow,\n getColumnLayout,\n getRowClassName,\n getRowLoadingState,\n infiniteScroll,\n layoutMode,\n localSearchValue,\n onRowClick,\n primeColumnForResize,\n renderedRows,\n renderExpandedRow,\n reorderColumn,\n resetColumnSize,\n resolvedLabels,\n rowsToRender,\n ScrollArea,\n ScrollBar,\n sentinelRef,\n setDraftValues,\n shouldRenderInitialLoading,\n stickyHeader,\n summaryRows,\n table,\n tableClassName,\n tableContainerClassName,\n Table,\n TableBody,\n TableCell,\n TableFooter = \"tfoot\",\n TableHead,\n TableHeader,\n TableRow,\n tableScrollContainerRef,\n uiClassNames,\n virtualPaddingBottom,\n virtualPaddingTop,\n visibleLeafColumnCount,\n visibleLeafColumns,\n}: DataTableTablePanelProps) {\n const selectionState: boolean | \"indeterminate\" =\n table.getIsAllPageRowsSelected()\n ? true\n : table.getIsSomePageRowsSelected()\n ? \"indeterminate\"\n : false;\n\n return (\n \n \n \n
    \n \n \n {table.getVisibleLeafColumns().map((column) => {\n const layout = getColumnLayout(column.id);\n return ;\n })}\n \n \n {table.getHeaderGroups().map((headerGroup) => (\n \n {headerGroup.headers.map((header) => (\n \n ))}\n \n ))}\n \n \n {renderedRows.length ? (\n <>\n {virtualPaddingTop > 0 ? (\n \n \n \n ) : null}\n {rowsToRender.map(({ row, rowIndex }) => {\n const originalRow = row.original;\n const isInitialLoadingRow =\n isDataTableLoadingRow(originalRow);\n const loadingState = isInitialLoadingRow\n ? { isLoading: true }\n : getRowLoadingState?.(originalRow, rowIndex);\n const resolvedLoadingState: DataTableRowLoadingState | undefined =\n typeof loadingState === \"boolean\"\n ? { isLoading: loadingState }\n : loadingState;\n const isDraggable = isInitialLoadingRow\n ? false\n : (dragAndDrop?.getRowDraggable?.(originalRow) ?? false);\n\n return (\n \n );\n })}\n {virtualPaddingBottom > 0 ? (\n \n \n \n ) : null}\n \n ) : (\n \n \n
    \n {emptyNode ?? (\n \n )}\n
    \n \n
    \n )}\n
    \n {summaryRows.length ? (\n \n {summaryRows.map((summaryRow) => (\n \n {visibleLeafColumns.map((column, index) => {\n const content =\n summaryRow.cells[column.id] ??\n (index === 0 ? summaryRow.label : null);\n return (\n \n {typeof content === \"function\"\n ? content({\n rows: table\n .getFilteredRowModel()\n .rows.map((row) => row.original),\n columnId: column.id,\n })\n : content}\n \n );\n })}\n \n ))}\n \n ) : null}\n \n
    \n\n {infiniteScroll?.enabled &&\n renderedRows.length &&\n !shouldRenderInitialLoading ? (\n
    \n
    \n
    \n ) : null}\n \n \n
    \n \n );\n}\n\nfunction getHeaderLayout(\n header: Header,\n getColumnLayout: (columnId: string) => DataTableColumnLayout,\n) {\n const columnLayout = getColumnLayout(header.column.id);\n if (header.isPlaceholder || !header.subHeaders.length) {\n return columnLayout;\n }\n\n const leafLayouts = header\n .getLeafHeaders()\n .filter((leafHeader) => !leafHeader.subHeaders.length)\n .map((leafHeader) => getColumnLayout(leafHeader.column.id));\n const fixedSide = leafLayouts[0]?.fixedSide;\n\n if (\n !fixedSide ||\n !leafLayouts.every((layout) => layout.fixedSide === fixedSide)\n ) {\n return columnLayout;\n }\n\n const edgeLayout =\n fixedSide === \"left\" ? leafLayouts[0] : leafLayouts.at(-1);\n\n return {\n ...columnLayout,\n fixedSide,\n headerStyle: edgeLayout?.headerStyle\n ? {\n insetInlineStart: edgeLayout.headerStyle.insetInlineStart,\n insetInlineEnd: edgeLayout.headerStyle.insetInlineEnd,\n }\n : undefined,\n pinnedClassName: edgeLayout?.pinnedClassName,\n };\n}\n"]} \ No newline at end of file diff --git a/dist/data-table-virtual-card-panel-4LELMUIN.js b/dist/data-table-virtual-card-panel-4LELMUIN.js new file mode 100644 index 0000000..8284f1b --- /dev/null +++ b/dist/data-table-virtual-card-panel-4LELMUIN.js @@ -0,0 +1,2 @@ +export{a as DataTableVirtualCardPanel}from'./chunk-FXX3TZ63.js';import'./chunk-EJHT5JBZ.js';import'./chunk-674VSOYY.js';//# sourceMappingURL=data-table-virtual-card-panel-4LELMUIN.js.map +//# sourceMappingURL=data-table-virtual-card-panel-4LELMUIN.js.map \ No newline at end of file diff --git a/dist/data-table-virtual-card-panel-HHZCRLEB.js.map b/dist/data-table-virtual-card-panel-4LELMUIN.js.map similarity index 62% rename from dist/data-table-virtual-card-panel-HHZCRLEB.js.map rename to dist/data-table-virtual-card-panel-4LELMUIN.js.map index b27fdea..5ffb435 100644 --- a/dist/data-table-virtual-card-panel-HHZCRLEB.js.map +++ b/dist/data-table-virtual-card-panel-4LELMUIN.js.map @@ -1 +1 @@ -{"version":3,"sources":[],"names":[],"mappings":"","file":"data-table-virtual-card-panel-HHZCRLEB.js"} \ No newline at end of file +{"version":3,"sources":[],"names":[],"mappings":"","file":"data-table-virtual-card-panel-4LELMUIN.js"} \ No newline at end of file diff --git a/dist/data-table-virtual-card-panel-HHZCRLEB.js b/dist/data-table-virtual-card-panel-HHZCRLEB.js deleted file mode 100644 index d9ed1e2..0000000 --- a/dist/data-table-virtual-card-panel-HHZCRLEB.js +++ /dev/null @@ -1,2 +0,0 @@ -export{a as DataTableVirtualCardPanel}from'./chunk-U5TIDLB3.js';import'./chunk-M77BQPKU.js';import'./chunk-PFB5LOU7.js';//# sourceMappingURL=data-table-virtual-card-panel-HHZCRLEB.js.map -//# sourceMappingURL=data-table-virtual-card-panel-HHZCRLEB.js.map \ No newline at end of file diff --git a/dist/data-table-virtual-table-panel-7K3LOTBT.js b/dist/data-table-virtual-table-panel-7K3LOTBT.js deleted file mode 100644 index 0c9236c..0000000 --- a/dist/data-table-virtual-table-panel-7K3LOTBT.js +++ /dev/null @@ -1,2 +0,0 @@ -export{a as DataTableVirtualTablePanel}from'./chunk-JYNJ2FDX.js';import'./chunk-ZGXFBFNQ.js';import'./chunk-PFB5LOU7.js';//# sourceMappingURL=data-table-virtual-table-panel-7K3LOTBT.js.map -//# sourceMappingURL=data-table-virtual-table-panel-7K3LOTBT.js.map \ No newline at end of file diff --git a/dist/data-table-virtual-table-panel-H3MFN25G.js b/dist/data-table-virtual-table-panel-H3MFN25G.js new file mode 100644 index 0000000..089f137 --- /dev/null +++ b/dist/data-table-virtual-table-panel-H3MFN25G.js @@ -0,0 +1,2 @@ +export{a as DataTableVirtualTablePanel}from'./chunk-TUHIU4D7.js';import'./chunk-32UNH3MQ.js';import'./chunk-674VSOYY.js';//# sourceMappingURL=data-table-virtual-table-panel-H3MFN25G.js.map +//# sourceMappingURL=data-table-virtual-table-panel-H3MFN25G.js.map \ No newline at end of file diff --git a/dist/data-table-virtual-table-panel-7K3LOTBT.js.map b/dist/data-table-virtual-table-panel-H3MFN25G.js.map similarity index 62% rename from dist/data-table-virtual-table-panel-7K3LOTBT.js.map rename to dist/data-table-virtual-table-panel-H3MFN25G.js.map index 89c26f6..22ef789 100644 --- a/dist/data-table-virtual-table-panel-7K3LOTBT.js.map +++ b/dist/data-table-virtual-table-panel-H3MFN25G.js.map @@ -1 +1 @@ -{"version":3,"sources":[],"names":[],"mappings":"","file":"data-table-virtual-table-panel-7K3LOTBT.js"} \ No newline at end of file +{"version":3,"sources":[],"names":[],"mappings":"","file":"data-table-virtual-table-panel-H3MFN25G.js"} \ No newline at end of file diff --git a/dist/heroui-virtual.d.ts b/dist/heroui-virtual.d.ts index f57af3e..6b2edb0 100644 --- a/dist/heroui-virtual.d.ts +++ b/dist/heroui-virtual.d.ts @@ -1,8 +1,8 @@ import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; -declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; export { DataTable, DataTableProps }; diff --git a/dist/heroui-virtual.js b/dist/heroui-virtual.js index ed8f849..2a0c99b 100644 --- a/dist/heroui-virtual.js +++ b/dist/heroui-virtual.js @@ -1,2 +1,2 @@ -import {a as a$2}from'./chunk-A2VV3NIL.js';import {a as a$1}from'./chunk-Y2VSRDR3.js';import'./chunk-U5TIDLB3.js';import'./chunk-JYNJ2FDX.js';import'./chunk-7EXRF7VC.js';import'./chunk-54H6DRO6.js';import'./chunk-M77BQPKU.js';import'./chunk-ZGXFBFNQ.js';import'./chunk-PFB5LOU7.js';var a=a$1(a$2);export{a as DataTable};//# sourceMappingURL=heroui-virtual.js.map +import {a as a$2}from'./chunk-5QNEI6BL.js';import {a as a$1}from'./chunk-ICUHQJ2O.js';import'./chunk-FXX3TZ63.js';import'./chunk-TUHIU4D7.js';import'./chunk-ERWHHOBD.js';import'./chunk-ICUCANNA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-32UNH3MQ.js';import'./chunk-674VSOYY.js';var a=a$1(a$2);export{a as DataTable};//# sourceMappingURL=heroui-virtual.js.map //# sourceMappingURL=heroui-virtual.js.map \ No newline at end of file diff --git a/dist/heroui.d.ts b/dist/heroui.d.ts index f57af3e..6b2edb0 100644 --- a/dist/heroui.d.ts +++ b/dist/heroui.d.ts @@ -1,8 +1,8 @@ import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; -declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; export { DataTable, DataTableProps }; diff --git a/dist/heroui.js b/dist/heroui.js index 4c7d0cf..faa4027 100644 --- a/dist/heroui.js +++ b/dist/heroui.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-A2VV3NIL.js';import'./chunk-7EXRF7VC.js';import {i}from'./chunk-54H6DRO6.js';import'./chunk-M77BQPKU.js';import'./chunk-ZGXFBFNQ.js';import'./chunk-PFB5LOU7.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=heroui.js.map +import {a as a$1}from'./chunk-5QNEI6BL.js';import'./chunk-ERWHHOBD.js';import {i}from'./chunk-ICUCANNA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-32UNH3MQ.js';import'./chunk-674VSOYY.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=heroui.js.map //# sourceMappingURL=heroui.js.map \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts index f57af3e..6b2edb0 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -1,8 +1,8 @@ import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; -declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; export { DataTable, DataTableProps }; diff --git a/dist/index.js b/dist/index.js index 24f81f6..ce299c2 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-BTA3VDTU.js';import'./chunk-7EXRF7VC.js';import {i}from'./chunk-54H6DRO6.js';import'./chunk-M77BQPKU.js';import'./chunk-ZGXFBFNQ.js';import'./chunk-PFB5LOU7.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=index.js.map +import {a as a$1}from'./chunk-ARW55TNZ.js';import'./chunk-ERWHHOBD.js';import {i}from'./chunk-ICUCANNA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-32UNH3MQ.js';import'./chunk-674VSOYY.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=index.js.map //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/thegridcn-virtual.d.ts b/dist/thegridcn-virtual.d.ts index f57af3e..6b2edb0 100644 --- a/dist/thegridcn-virtual.d.ts +++ b/dist/thegridcn-virtual.d.ts @@ -1,8 +1,8 @@ import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; -declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; export { DataTable, DataTableProps }; diff --git a/dist/thegridcn-virtual.js b/dist/thegridcn-virtual.js index ebe8678..5bb0c84 100644 --- a/dist/thegridcn-virtual.js +++ b/dist/thegridcn-virtual.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-Y2VSRDR3.js';import'./chunk-U5TIDLB3.js';import'./chunk-JYNJ2FDX.js';import {a as a$2}from'./chunk-NC2TEQVN.js';import'./chunk-7EXRF7VC.js';import'./chunk-54H6DRO6.js';import'./chunk-M77BQPKU.js';import'./chunk-ZGXFBFNQ.js';import'./chunk-PFB5LOU7.js';var a=a$1(a$2);export{a as DataTable};//# sourceMappingURL=thegridcn-virtual.js.map +import {a as a$1}from'./chunk-ICUHQJ2O.js';import'./chunk-FXX3TZ63.js';import'./chunk-TUHIU4D7.js';import {a as a$2}from'./chunk-TER4YPQI.js';import'./chunk-ERWHHOBD.js';import'./chunk-ICUCANNA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-32UNH3MQ.js';import'./chunk-674VSOYY.js';var a=a$1(a$2);export{a as DataTable};//# sourceMappingURL=thegridcn-virtual.js.map //# sourceMappingURL=thegridcn-virtual.js.map \ No newline at end of file diff --git a/dist/thegridcn.d.ts b/dist/thegridcn.d.ts index f57af3e..6b2edb0 100644 --- a/dist/thegridcn.d.ts +++ b/dist/thegridcn.d.ts @@ -1,8 +1,8 @@ import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; -declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; export { DataTable, DataTableProps }; diff --git a/dist/thegridcn.js b/dist/thegridcn.js index ce04470..dfbbdf4 100644 --- a/dist/thegridcn.js +++ b/dist/thegridcn.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-NC2TEQVN.js';import'./chunk-7EXRF7VC.js';import {i}from'./chunk-54H6DRO6.js';import'./chunk-M77BQPKU.js';import'./chunk-ZGXFBFNQ.js';import'./chunk-PFB5LOU7.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=thegridcn.js.map +import {a as a$1}from'./chunk-TER4YPQI.js';import'./chunk-ERWHHOBD.js';import {i}from'./chunk-ICUCANNA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-32UNH3MQ.js';import'./chunk-674VSOYY.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=thegridcn.js.map //# sourceMappingURL=thegridcn.js.map \ No newline at end of file diff --git a/dist/types.d.ts b/dist/types.d.ts index 18aca79..931f0e6 100644 --- a/dist/types.d.ts +++ b/dist/types.d.ts @@ -184,12 +184,14 @@ type DataTableFileUploadConfig = { type DataTableVirtualizationConfig = { enabled?: boolean; estimateRowHeight?: number; + fallbackRowCount?: number; overscan?: number; card?: DataTableCardVirtualizationConfig; }; type DataTableCardVirtualizationConfig = { enabled?: boolean; estimateCardHeight?: number; + fallbackCardCount?: number; overscan?: number; lanes?: number | "auto"; }; @@ -371,6 +373,7 @@ type DataTableLabels = { pinLeft: string; pinRight: string; unpin: string; + resizeColumn: (columnLabel: string) => string; }; type DataTableSummaryRow = { key: string; @@ -380,6 +383,15 @@ type DataTableSummaryRow = { columnId: string; }) => React.ReactNode)>; }; +type DataTableRowClassNameContext = { + row: TData; + rowId: string; + rowIndex: number; + isEditing: boolean; + isExpanded: boolean; + isLoading: boolean; + isSelected: boolean; +}; type DataTableProps = { columns: Array>; data: Array; @@ -472,7 +484,8 @@ type DataTableProps = { className?: string; tableClassName?: string; tableContainerClassName?: string; - getRowClassName?: (row: TData) => string | undefined; + stripedRows?: boolean; + getRowClassName?: (row: TData, context: DataTableRowClassNameContext) => string | undefined; onRowClick?: (context: { row: TData; rowId: string; @@ -494,4 +507,4 @@ declare function hideOnClassName(hideOn: DataTableContainerBreakpoint | Array | undefined, containerWidth: number): boolean; declare function rowSelectionStateFromRows(rows: Array>): TData[]; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, type DataTableActionErrorContext, type DataTableActionErrorSource, type DataTableAlign, type DataTableApi, type DataTableCardRendererProps, type DataTableCardSizing, type DataTableCardVirtualizationConfig, type DataTableCellEditRenderProps, type DataTableCellOverflow, type DataTableColumnDef, type DataTableColumnFilterConfig, type DataTableColumnFilterOption, type DataTableColumnFilterType, type DataTableColumnFixed, type DataTableColumnGroupDef, type DataTableColumnMeta, type DataTableColumnPrefs, type DataTableColumnType, type DataTableColumnVisibilityOption, type DataTableContainerBreakpoint, type DataTableCsvExportOptions, type DataTableCsvExportScope, type DataTableDensity, type DataTableDragAndDropConfig, type DataTableEditableRowsConfig, type DataTableEmptyStateContext, type DataTableExpandedRowProps, type DataTableFileUploadConfig, type DataTableHiddenRowsConfig, type DataTableInfiniteScroll, type DataTableInitialState, type DataTableLabels, type DataTableLoadingState, type DataTablePersistenceConfig, type DataTablePersistenceOperation, type DataTablePersistencePayload, type DataTablePersistenceSlice, type DataTablePersistenceStorage, type DataTableProps, type DataTableResetOptions, type DataTableRowAction, type DataTableRowLoadingState, type DataTableSavedView, type DataTableSavedViewSlice, type DataTableSavedViewsChangeOperation, type DataTableSavedViewsConfig, type DataTableSavedViewsPayload, type DataTableSelectionAction, type DataTableState, type DataTableSummaryRow, type DataTableToolbarAction, type DataTableToolbarVisibility, type DataTableViewMode, type DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows }; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, type DataTableActionErrorContext, type DataTableActionErrorSource, type DataTableAlign, type DataTableApi, type DataTableCardRendererProps, type DataTableCardSizing, type DataTableCardVirtualizationConfig, type DataTableCellEditRenderProps, type DataTableCellOverflow, type DataTableColumnDef, type DataTableColumnFilterConfig, type DataTableColumnFilterOption, type DataTableColumnFilterType, type DataTableColumnFixed, type DataTableColumnGroupDef, type DataTableColumnMeta, type DataTableColumnPrefs, type DataTableColumnType, type DataTableColumnVisibilityOption, type DataTableContainerBreakpoint, type DataTableCsvExportOptions, type DataTableCsvExportScope, type DataTableDensity, type DataTableDragAndDropConfig, type DataTableEditableRowsConfig, type DataTableEmptyStateContext, type DataTableExpandedRowProps, type DataTableFileUploadConfig, type DataTableHiddenRowsConfig, type DataTableInfiniteScroll, type DataTableInitialState, type DataTableLabels, type DataTableLoadingState, type DataTablePersistenceConfig, type DataTablePersistenceOperation, type DataTablePersistencePayload, type DataTablePersistenceSlice, type DataTablePersistenceStorage, type DataTableProps, type DataTableResetOptions, type DataTableRowAction, type DataTableRowClassNameContext, type DataTableRowLoadingState, type DataTableSavedView, type DataTableSavedViewSlice, type DataTableSavedViewsChangeOperation, type DataTableSavedViewsConfig, type DataTableSavedViewsPayload, type DataTableSelectionAction, type DataTableState, type DataTableSummaryRow, type DataTableToolbarAction, type DataTableToolbarVisibility, type DataTableViewMode, type DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows }; diff --git a/dist/ui-kit-B3pF-Pxw.d.ts b/dist/ui-kit-D2knVOJ4.d.ts similarity index 98% rename from dist/ui-kit-B3pF-Pxw.d.ts rename to dist/ui-kit-D2knVOJ4.d.ts index 9b76bca..eca2dea 100644 --- a/dist/ui-kit-B3pF-Pxw.d.ts +++ b/dist/ui-kit-D2knVOJ4.d.ts @@ -24,6 +24,8 @@ type DataTableUiClassNames = { resizeHandle?: string; resizeHandleActive?: string; row?: string; + rowEven?: string; + rowOdd?: string; rowSelected?: string; tableContainer?: string; tableScrollArea?: string; diff --git a/dist/virtual.d.ts b/dist/virtual.d.ts index f57af3e..6b2edb0 100644 --- a/dist/virtual.d.ts +++ b/dist/virtual.d.ts @@ -1,8 +1,8 @@ import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; -declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; export { DataTable, DataTableProps }; diff --git a/dist/virtual.js b/dist/virtual.js index 60008ca..595da02 100644 --- a/dist/virtual.js +++ b/dist/virtual.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-BTA3VDTU.js';import {a}from'./chunk-Y2VSRDR3.js';import'./chunk-U5TIDLB3.js';import'./chunk-JYNJ2FDX.js';import'./chunk-7EXRF7VC.js';import'./chunk-54H6DRO6.js';import'./chunk-M77BQPKU.js';import'./chunk-ZGXFBFNQ.js';import'./chunk-PFB5LOU7.js';var o=a(a$1);export{o as DataTable};//# sourceMappingURL=virtual.js.map +import {a as a$1}from'./chunk-ARW55TNZ.js';import {a}from'./chunk-ICUHQJ2O.js';import'./chunk-FXX3TZ63.js';import'./chunk-TUHIU4D7.js';import'./chunk-ERWHHOBD.js';import'./chunk-ICUCANNA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-32UNH3MQ.js';import'./chunk-674VSOYY.js';var o=a(a$1);export{o as DataTable};//# sourceMappingURL=virtual.js.map //# sourceMappingURL=virtual.js.map \ No newline at end of file diff --git a/docs/API.md b/docs/API.md index 85482a2..7ed3cf1 100644 --- a/docs/API.md +++ b/docs/API.md @@ -91,31 +91,31 @@ Container helpers included by the package: container-name: data-table; } -@container data-table (width < 40rem) { +@container data-table (width < 640px) { .dt-hide-on-sm { display: none; } } -@container data-table (width < 48rem) { +@container data-table (width < 768px) { .dt-hide-on-md { display: none; } } -@container data-table (width < 64rem) { +@container data-table (width < 1024px) { .dt-hide-on-lg { display: none; } } -@container data-table (width < 80rem) { +@container data-table (width < 1280px) { .dt-hide-on-xl { display: none; } } -@container data-table (width < 96rem) { +@container data-table (width < 1536px) { .dt-hide-on-2xl { display: none; } @@ -450,8 +450,8 @@ Built-in toolbar controls automatically compact in narrow container widths: `compactToolbar` behavior: -- it renders inline inside the main toolbar control row until the container reaches the large (`@lg`) breakpoint -- `customToolbar` renders as the separate desktop toolbar row only from the large (`@lg`) breakpoint upward +- it renders inline inside the main toolbar control row until the container reaches the package large breakpoint (1024px) +- `customToolbar` renders as the separate desktop toolbar row only from the package large breakpoint (1024px) upward - if `compactToolbar` is omitted but `customToolbar` is provided, the package reuses `customToolbar` in the compact row as a fallback - the intended use is icon-only or very compact controls; the package does not automatically convert arbitrary desktop JSX into mobile icon buttons @@ -539,7 +539,8 @@ Removed in `2.0.1`: | `rowActions` | `Array>` | `[]` | Per-row dropdown actions. | | `onRowClick` | `(context: { row: TData; rowId: string }) => void \| Promise` | `undefined` | Row click handler for table and card modes. | | `onActionError` | `(context: DataTableActionErrorContext) => void` | `undefined` | Receives rejected or thrown built-in action callbacks with their source, optional action key, and optional row. | -| `getRowClassName` | `(row: TData) => string \| undefined` | `undefined` | Row-level styling hook. | +| `stripedRows` | `boolean` | `false` | Applies virtualization-safe alternate shading to displayed table rows. | +| `getRowClassName` | `(row: TData, context: DataTableRowClassNameContext) => string \| undefined` | `undefined` | Row-level styling hook with displayed index and selection/editing/loading state. Existing one-argument callbacks remain compatible. | When `onRowClick` is present, table rows are focusable and activate on Enter or Space. They retain native ``/row semantics rather than using @@ -597,10 +598,12 @@ interaction semantics. type DataTableVirtualizationConfig = { enabled?: boolean; estimateRowHeight?: number; + fallbackRowCount?: number; overscan?: number; card?: { enabled?: boolean; estimateCardHeight?: number; + fallbackCardCount?: number; overscan?: number; lanes?: number | "auto"; }; @@ -610,13 +613,15 @@ type DataTableVirtualizationConfig = { `virtualization={true}` enables table-row virtualization with a 48px estimate and overscan of 8. Card virtualization is opt-in through `virtualization.card.enabled`; its defaults are a 280px estimate, overscan of -4, and automatic lanes. Until a measurable viewport exists, the complete row -or card set is rendered so SSR and first paint do not produce an empty table. +4, and automatic lanes. Until a measurable viewport exists, rendering is +capped at 20 table rows or 12 cards so SSR and first paint remain useful +without mounting the complete dataset. Override those caps with +`fallbackRowCount` and `fallbackCardCount`. Import behavior: - a base adapter dynamically loads the virtual panels only after - virtualization is enabled; its fallback is the complete non-virtual view + virtualization is enabled; its fallback uses the same bounded initial rows - a `/virtual` adapter includes TanStack Virtual in its static graph and avoids the first-use async boundary - switching between the fallback and loaded panel does not remount the parent @@ -651,7 +656,7 @@ checkboxes by default. | `persistence` | `DataTablePersistenceConfig` | `undefined` | Versioned persistence configuration. Takes precedence over `columnPrefsKey` and supports selected slices, custom storage/serialization, migration, debouncing, and error reporting. | | `savedViews` | `DataTableSavedViewsConfig` | `undefined` | Versioned storage and lifecycle callbacks for named state snapshots managed through `apiRef`. | | `enableColumnResizing` | `boolean` | `false` | Enables resize handles on resizable columns. | -| `columnResizeMode` | `"onChange" \| "onEnd"` | `"onChange"` | TanStack Table resize mode. | +| `columnResizeMode` | `"onChange" \| "onEnd"` | `"onEnd"` | TanStack Table resize mode. `onEnd` avoids rebuilding every visible row on each pointer movement. | | `columnSizing` | `ColumnSizingState` | internal state | Controlled column sizing state. | | `onColumnSizingChange` | `(sizing: ColumnSizingState) => void` | `undefined` | Controlled sizing callback. | | `layoutMode` | `"fill" \| "fit"` | `"fill"` | `fill` stretches the table to the container; `fit` sizes to content width. | diff --git a/docs/Migration.md b/docs/Migration.md index efc66a1..622f8b2 100644 --- a/docs/Migration.md +++ b/docs/Migration.md @@ -22,9 +22,10 @@ import { DataTable } from "data-table-pro/virtual"; Equivalent eager entrypoints are `data-table-pro/heroui/virtual` and `data-table-pro/thegridcn/virtual`. Props, types, styling, state, and adapter -behavior are unchanged. During on-demand loading, the base entry renders the -complete non-virtual rows/cards as its Suspense fallback, so table state stays -in the parent component. +behavior are unchanged. During on-demand loading, the base entry keeps table +state in the parent component and renders a bounded initial fallback (20 rows +or 12 cards by default). Use `fallbackRowCount` or `fallbackCardCount` when a +different first-paint cap is appropriate. Adapter authors can move from the broad compatibility surface to: diff --git a/package.json b/package.json index edbe613..e55a77e 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,9 @@ "url": "https://github.com/Dastari/data-table-pro/issues" }, "packageManager": "pnpm@11.17.0", + "engines": { + "node": ">=20.19" + }, "sideEffects": [ "./styles.css" ], diff --git a/scripts/check-bundle-size.mjs b/scripts/check-bundle-size.mjs index 1d81e3e..b1078ab 100644 --- a/scripts/check-bundle-size.mjs +++ b/scripts/check-bundle-size.mjs @@ -10,10 +10,12 @@ const rootDir = path.resolve( const distDir = path.join(rootDir, "dist"); const kib = 1024; const budgets = { - base: 35 * kib, + base: 36 * kib, adapterDelta: 6 * kib, urlState: 5 * kib, demoInitial: 100 * kib, + demoLoadedAdapter: 190 * kib, + demoCss: 20 * kib, }; const packageGraphs = new Map(); @@ -36,7 +38,7 @@ const baseSize = gzipGraph(baseGraph); const heroSize = gzipGraph(packageGraphs.get("heroui.js")); const gridSize = gzipGraph(packageGraphs.get("thegridcn.js")); const urlStateSize = gzipGraph(packageGraphs.get("url-state.js")); -const demoSize = await readDemoInitialSize(); +const demoSizes = await readDemoBuildSizes(); assertBudget("base shadcn static runtime", baseSize, budgets.base); assertBudget( @@ -50,7 +52,17 @@ assertBudget( budgets.adapterDelta, ); assertBudget("URL-state entry", urlStateSize, budgets.urlState); -assertBudget("demo initial JavaScript", demoSize, budgets.demoInitial); +assertBudget( + "demo initial JavaScript", + demoSizes.initialJavaScript, + budgets.demoInitial, +); +assertBudget( + "demo loaded adapter JavaScript", + demoSizes.loadedAdapterJavaScript, + budgets.demoLoadedAdapter, +); +assertBudget("demo CSS", demoSizes.css, budgets.demoCss); assertDoesNotContainVirtual( "base shadcn", @@ -92,7 +104,9 @@ process.stdout.write( ` HeroUI delta: ${formatSize(Math.max(0, heroSize - baseSize))} / ${formatSize(budgets.adapterDelta)}`, ` The Gridcn delta: ${formatSize(Math.max(0, gridSize - baseSize))} / ${formatSize(budgets.adapterDelta)}`, ` URL state: ${formatSize(urlStateSize)} / ${formatSize(budgets.urlState)}`, - ` demo initial: ${formatSize(demoSize)} / ${formatSize(budgets.demoInitial)}`, + ` demo initial: ${formatSize(demoSizes.initialJavaScript)} / ${formatSize(budgets.demoInitial)}`, + ` demo loaded adapter: ${formatSize(demoSizes.loadedAdapterJavaScript)} / ${formatSize(budgets.demoLoadedAdapter)}`, + ` demo CSS: ${formatSize(demoSizes.css)} / ${formatSize(budgets.demoCss)}`, ].join("\n") + "\n", ); @@ -129,7 +143,7 @@ function gzipGraph(graph) { return gzipSync(Array.from(graph.values()).join("\n")).length; } -async function readDemoInitialSize() { +async function readDemoBuildSizes() { const demoDist = path.join(rootDir, "demo", "dist"); const manifest = JSON.parse( await readFile( @@ -141,19 +155,40 @@ async function readDemoInitialSize() { if (!entry?.file) { throw new Error("The demo manifest does not contain its index entry"); } - const files = new Set(); + const initialFiles = new Set(); - function visit(chunk) { + function visit(chunk, files) { if (!chunk || files.has(chunk.file)) { return; } files.add(chunk.file); for (const importedKey of chunk.imports ?? []) { - visit(manifest[importedKey]); + visit(manifest[importedKey], files); } } - visit(entry); + visit(entry, initialFiles); + const initialJavaScript = await gzipDemoFiles(demoDist, initialFiles); + const loadedAdapterSizes = await Promise.all( + (entry.dynamicImports ?? []).map(async (dynamicImportKey) => { + const files = new Set(initialFiles); + visit(manifest[dynamicImportKey], files); + return gzipDemoFiles(demoDist, files); + }), + ); + const css = await gzipDemoFiles(demoDist, new Set(entry.css ?? [])); + + return { + initialJavaScript, + loadedAdapterJavaScript: Math.max( + initialJavaScript, + ...loadedAdapterSizes, + ), + css, + }; +} + +async function gzipDemoFiles(demoDist, files) { const contents = await Promise.all( Array.from(files, (filename) => readFile(path.join(demoDist, filename), "utf8"), diff --git a/src/core/data-table/create-data-table-card-view.tsx b/src/core/data-table/create-data-table-card-view.tsx index fc8c117..3d93e9f 100644 --- a/src/core/data-table/create-data-table-card-view.tsx +++ b/src/core/data-table/create-data-table-card-view.tsx @@ -6,11 +6,13 @@ import type { DataTableEditableRowsConfig, DataTableExpandedRowProps, DataTableLabels, + DataTableProps, DataTableRowAction, } from "../types"; import type { DataTableUiKit } from "../ui-kit"; import { cn } from "../../lib/utils"; import { DATA_TABLE_DEFAULT_LABELS } from "./data-table-labels"; +import { isDataTableInteractiveTarget } from "./data-table-utils"; type DataTableCardViewProps = { rows: Array>; @@ -29,7 +31,7 @@ type DataTableCardViewProps = { enableRowSelection: boolean; editingRowId: string | null; onEditingRowIdChange: (rowId: string | null) => void; - getRowClassName?: (row: TData) => string | undefined; + getRowClassName?: DataTableProps["getRowClassName"]; onRowClick?: (context: { row: TData; rowId: string }) => void | Promise; getRowDraggable?: (row: TData) => boolean; onRowDragStart?: (context: { @@ -175,7 +177,19 @@ export function createDataTableCardView( data-state={isSelected ? "selected" : undefined} className={cardItemClasses( cn( - [getRowClassName?.(originalRow)].filter(Boolean).join(" "), + [ + getRowClassName?.(originalRow, { + row: originalRow, + rowId, + rowIndex: row.index, + isEditing, + isExpanded: row.getIsExpanded(), + isLoading: false, + isSelected, + }), + ] + .filter(Boolean) + .join(" "), "transition transition-colors hover:scale-101 data-[state=selected]:scale-101", uiClassNames.card, isSelected @@ -210,16 +224,24 @@ export function createDataTableCardView( onRowClick && "cursor-pointer focus-visible:outline-none", )} onClick={(event: React.MouseEvent) => { - const target = event.target as HTMLElement | null; - if (target?.closest("[data-row-click-ignore='true']")) { + if ( + isDataTableInteractiveTarget( + event.target, + event.currentTarget, + ) + ) { return; } handleCardActivate(); }} onKeyDown={(event: React.KeyboardEvent) => { - const target = event.target as HTMLElement | null; - if (target?.closest("[data-row-click-ignore='true']")) { + if ( + isDataTableInteractiveTarget( + event.target, + event.currentTarget, + ) + ) { return; } diff --git a/src/core/data-table/create-data-table-pagination.tsx b/src/core/data-table/create-data-table-pagination.tsx index f2efe63..27a2a2a 100644 --- a/src/core/data-table/create-data-table-pagination.tsx +++ b/src/core/data-table/create-data-table-pagination.tsx @@ -62,7 +62,7 @@ export function createDataTablePagination(ui: DataTableUiKit) {
    - + {labels.recordsPerPage} \n
    \n\n {totalRowCount !== undefined ? (\n
    \n \n \n {totalRowCount}\n \n {labels.totalRecords(totalRowCount)}\n \n
    \n \n ) : null}\n\n
    \n \n {pageCountKnown\n ? labels.pageStatus(pageIndex, Math.max(1, pageCount))\n : (\n labels.pageStatusUnknown ??\n DATA_TABLE_DEFAULT_LABELS.pageStatusUnknown\n )(pageIndex)}\n
    \n \n \n \n \n \n ) => {\n event.preventDefault();\n if (canGoPrevious) {\n onPageIndexChange(0);\n }\n }}\n text={labels.firstPage}\n />\n \n {labels.firstPage}\n \n \n \n \n \n ) => {\n event.preventDefault();\n if (canGoPrevious) {\n onPageIndexChange(pageIndex - 1);\n }\n }}\n text={labels.previousPage}\n />\n \n {labels.previousPage}\n \n \n {pages.map((item, index) => (\n \n {item === \"ellipsis\" ? (\n \n ) : (\n ) => {\n event.preventDefault();\n onPageIndexChange(item - 1);\n }}\n >\n {item}\n \n )}\n \n ))}\n \n \n \n ) => {\n event.preventDefault();\n if (canGoNext) {\n onPageIndexChange(pageIndex + 1);\n }\n }}\n text={labels.nextPage}\n />\n \n {labels.nextPage}\n \n \n {pageCountKnown ? (\n \n \n \n ,\n ) => {\n event.preventDefault();\n if (canGoNext) {\n onPageIndexChange(lastPageIndex);\n }\n }}\n />\n \n {labels.lastPage}\n \n \n ) : null}\n \n \n \n \n );\n }\n\n function DataTableFooter(props: DataTablePaginationProps) {\n return (\n \n \n \n );\n }\n\n return {\n DataTableFooter,\n DataTablePagination,\n };\n}\n\nfunction getVisiblePages(currentPageIndex: number, pageCount: number) {\n const currentPage = currentPageIndex + 1;\n const pages = new Set([1, pageCount]);\n\n for (\n let page = Math.max(1, currentPage - 2);\n page <= Math.min(pageCount, currentPage + 2);\n page += 1\n ) {\n pages.add(page);\n }\n\n const orderedPages = Array.from(pages).sort((left, right) => left - right);\n const items: Array = [];\n\n for (let index = 0; index < orderedPages.length; index += 1) {\n const page = orderedPages[index];\n const previous = orderedPages[index - 1];\n\n if (previous && page - previous > 1) {\n items.push(\"ellipsis\");\n }\n\n items.push(page);\n }\n\n return items;\n}\n","import * as React from \"react\";\nimport { IconDots, IconEdit, IconX } from \"../icons\";\nimport type {\n DataTableEditableRowsConfig,\n DataTableLabels,\n DataTableRowAction,\n} from \"../types\";\nimport type { RowPinningPosition } from \"@tanstack/react-table\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { canEditRow, canUseRowAction, resolveRowActionLabel } from \"../types\";\n\ntype DataTableRowActionsProps = {\n row: TData;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n onStartEditing: () => void;\n onCancelEditing: () => void;\n labels: DataTableLabels;\n rowPinning?: {\n canPin: boolean;\n position: RowPinningPosition;\n pin: (position: RowPinningPosition) => void;\n };\n};\n\nexport function createDataTableRowActions(ui: DataTableUiKit) {\n const {\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n return function DataTableRowActions({\n row,\n rowActions,\n editableRows,\n isEditing,\n onStartEditing,\n onCancelEditing,\n labels,\n rowPinning,\n }: DataTableRowActionsProps) {\n const actions = rowActions.filter((action) => canUseRowAction(action, row));\n const stopRowClickPropagation = React.useCallback(\n (event: React.SyntheticEvent) => {\n event.stopPropagation();\n },\n [],\n );\n\n if (isEditing) {\n return (\n \n \n \n \n {labels.cancelEdit}\n \n \n {labels.cancelEdit}\n \n );\n }\n\n const allowEdit = canEditRow(editableRows, row);\n const canPin = rowPinning?.canPin ?? false;\n if (!actions.length && !allowEdit && !canPin) {\n return null;\n }\n\n return (\n \n \n \n \n \n \n {labels.rowActions}\n \n \n \n {labels.rowActions}\n \n \n {allowEdit ? (\n \n ) => {\n event.stopPropagation();\n onStartEditing();\n }}\n >\n \n {labels.editRow}\n \n \n ) : null}\n {allowEdit && (actions.length || canPin) ? : null}\n {canPin ? (\n \n {rowPinning?.position ? (\n ) => {\n event.stopPropagation();\n rowPinning.pin(false);\n }}\n >\n {labels.unpinRow}\n \n ) : (\n <>\n ) => {\n event.stopPropagation();\n rowPinning?.pin(\"top\");\n }}\n >\n {labels.pinRowToTop}\n \n ) => {\n event.stopPropagation();\n rowPinning?.pin(\"bottom\");\n }}\n >\n {labels.pinRowToBottom}\n \n \n )}\n \n ) : null}\n {canPin && actions.length ? : null}\n {actions.length ? (\n \n {actions.map((action) => {\n const Icon = action.icon;\n return (\n ) => {\n event.stopPropagation();\n void action.onClick(row);\n }}\n >\n {Icon ? : null}\n {resolveRowActionLabel(action.label, row)}\n \n );\n })}\n \n ) : null}\n \n \n );\n };\n}\n","import * as React from \"react\";\nimport {\n IconAdjustmentsHorizontal,\n IconLayoutGrid,\n IconList,\n IconSearch,\n IconX,\n} from \"../icons\";\nimport type {\n DataTableColumnFilterType,\n DataTableColumnFixed,\n DataTableColumnVisibilityOption,\n DataTableDensity,\n DataTableLabels,\n DataTableSelectionAction,\n DataTableToolbarAction,\n DataTableToolbarVisibility,\n DataTableViewMode,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\nexport type DataTableToolbarColumnFilter = {\n id: string;\n label: string;\n type: DataTableColumnFilterType;\n value: unknown;\n placeholder?: string;\n options: Array<{ label: string; value: string }>;\n trueLabel?: string;\n falseLabel?: string;\n min?: number | string;\n max?: number | string;\n step?: number;\n};\n\ntype DataTableToolbarProps = {\n title?: string;\n titleId?: string;\n description?: string;\n descriptionId?: string;\n toolbarQueryValue: string;\n toolbarQueryPlaceholder: string;\n onToolbarQueryValueChange: (value: string) => void;\n customToolbar?: React.ReactNode;\n compactToolbar?: React.ReactNode;\n viewMode: DataTableViewMode;\n onViewModeChange?: (viewMode: DataTableViewMode) => void;\n enableViewToggle: boolean;\n toolbarActions: Array>;\n selectionActions: Array>;\n selectedRows: Array;\n selectedRowIds: Array;\n showHiddenRows: boolean;\n hiddenRowsLabel?: string;\n onShowHiddenRowsChange?: (showHiddenRows: boolean) => void;\n allRows: Array;\n columnVisibilityOptions: Array;\n onColumnVisibilityChange?: (columnId: string, visible: boolean) => void;\n enableColumnPinning: boolean;\n onColumnPinningChange: (columnId: string, side: DataTableColumnFixed | false) => void;\n columnFilters: Array;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n onClearColumnFilters: () => void;\n density: DataTableDensity;\n onDensityChange: (density: DataTableDensity) => void;\n enableDensityToggle: boolean;\n labels: DataTableLabels;\n toolbarVisibility?: DataTableToolbarVisibility;\n openFileDialog?: () => void;\n};\n\nexport function createDataTableToolbar(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Button,\n ButtonGroup,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n return function DataTableToolbar({\n title,\n titleId,\n description,\n descriptionId,\n toolbarQueryValue,\n toolbarQueryPlaceholder,\n onToolbarQueryValueChange,\n customToolbar,\n compactToolbar,\n viewMode,\n onViewModeChange,\n enableViewToggle,\n toolbarActions,\n selectionActions,\n selectedRows,\n selectedRowIds,\n showHiddenRows,\n hiddenRowsLabel,\n onShowHiddenRowsChange,\n allRows,\n columnVisibilityOptions,\n onColumnVisibilityChange,\n enableColumnPinning,\n onColumnPinningChange,\n columnFilters,\n onColumnFilterChange,\n onClearColumnFilters,\n density,\n onDensityChange,\n enableDensityToggle,\n labels,\n toolbarVisibility,\n openFileDialog,\n }: DataTableToolbarProps) {\n const compactSearchInputRef = React.useRef(null);\n const [isCompactSearchVisible, setIsCompactSearchVisible] =\n React.useState(false);\n const compactToolbarIconButtonClassName =\n uiClassNames.toolbarCompactIconButton ?? \"\";\n const primaryActions = toolbarActions.filter(\n (action) => (action.placement ?? \"primary\") === \"primary\",\n );\n const trailingActions = toolbarActions.filter(\n (action) => action.placement === \"trailing\",\n );\n const showTitle = toolbarVisibility?.title ?? true;\n const showSearch = toolbarVisibility?.search ?? true;\n const showActions = toolbarVisibility?.actions ?? true;\n const showTrailingActions = toolbarVisibility?.trailingActions ?? true;\n const showOptions = toolbarVisibility?.options ?? true;\n const showViewToggle = toolbarVisibility?.viewToggle ?? true;\n const showCustomToolbar = toolbarVisibility?.customToolbar ?? true;\n const hasVisibleTitle = showTitle && Boolean(title || description);\n const hasVisibleSearch = showSearch;\n const hasVisiblePrimaryActions = showActions && primaryActions.length > 0;\n const hasVisibleSelectionActions =\n selectedRowIds.length > 0 && selectionActions.length > 0;\n const hasVisibleOptions =\n showOptions &&\n (columnVisibilityOptions.some((column) => column.canHide) ||\n Boolean(onShowHiddenRowsChange && hiddenRowsLabel) ||\n enableColumnPinning ||\n enableDensityToggle);\n const hasVisibleViewToggle =\n showViewToggle && enableViewToggle && Boolean(onViewModeChange);\n const hasVisibleTrailingActions =\n showTrailingActions && trailingActions.length > 0;\n const hasVisibleCustomToolbar = showCustomToolbar && Boolean(customToolbar);\n const hasVisibleCompactToolbar =\n showCustomToolbar && Boolean(compactToolbar ?? customToolbar);\n const selectedRowCountLabel = labels.selectedRows(selectedRowIds.length);\n\n React.useEffect(() => {\n if (!isCompactSearchVisible) {\n return;\n }\n\n compactSearchInputRef.current?.focus();\n }, [isCompactSearchVisible]);\n\n if (\n !hasVisibleTitle &&\n !hasVisibleSearch &&\n !hasVisiblePrimaryActions &&\n !hasVisibleSelectionActions &&\n !hasVisibleOptions &&\n !hasVisibleViewToggle &&\n !hasVisibleTrailingActions &&\n !hasVisibleCustomToolbar &&\n !hasVisibleCompactToolbar\n ) {\n return null;\n }\n\n return (\n
    \n {showTitle && (title || description) ? (\n
    \n {title ? (\n \n {title}\n \n ) : null}\n {description ? (\n \n {description}\n

    \n ) : null}\n
    \n ) : null}\n\n
    \n \n {showSearch ? (\n <>\n
    \n \n ) => {\n onToolbarQueryValueChange(event.target.value);\n }}\n placeholder={toolbarQueryPlaceholder}\n />\n \n \n \n {toolbarQueryValue ? (\n \n {\n onToolbarQueryValueChange(\"\");\n }}\n aria-label={labels.clearSearch}\n title={labels.clearSearch}\n >\n \n \n \n ) : null}\n \n
    \n \n \n {\n setIsCompactSearchVisible((current) => !current);\n }}\n >\n \n {labels.searchTable}\n \n \n {labels.searchTable}\n \n \n ) : null}\n\n {showActions ? (\n
    \n {primaryActions.map((action) => {\n const collapsesToIcon =\n !action.iconOnly && Boolean(action.icon);\n const button = (\n {\n void action.onClick({\n rows: allRows,\n openFileDialog,\n });\n }}\n disabled={action.disabled}\n aria-label={action.label}\n title={action.iconOnly ? undefined : action.label}\n >\n {action.icon ? : null}\n {action.iconOnly ? (\n {action.label}\n ) : collapsesToIcon ? (\n \n {action.label}\n \n ) : (\n {action.label}\n )}\n \n );\n\n return action.iconOnly ? (\n \n {button}\n {action.label}\n \n ) : (\n button\n );\n })}\n
    \n ) : null}\n\n {hasVisibleCompactToolbar ? (\n \n {compactToolbar ?? customToolbar}\n
    \n ) : null}\n\n
    \n\n \n {selectedRowIds.length ? (\n \n {selectedRowCountLabel}\n
    \n ) : null}\n {selectedRowIds.length\n ? selectionActions.map((action) => {\n const Icon = action.icon;\n const context = {\n rows: selectedRows,\n rowIds: selectedRowIds,\n };\n const disabled =\n typeof action.disabled === \"function\"\n ? action.disabled(selectedRows, context)\n : action.disabled;\n\n return (\n \n \n {\n void action.onClick(context);\n }}\n aria-label={action.label}\n >\n {Icon ? : null}\n {action.label}\n \n \n {action.label}\n \n );\n })\n : null}\n\n {hasVisibleOptions ? (\n \n \n \n \n {labels.tableOptions}\n \n \n \n {labels.tableOptions}\n \n {onShowHiddenRowsChange && hiddenRowsLabel ? (\n {\n onShowHiddenRowsChange(checked === true);\n }}\n >\n {labels.showHiddenRows(hiddenRowsLabel)}\n \n ) : null}\n \n {enableDensityToggle ? (\n <>\n \n {labels.density}\n \n {(\n [\n [\"compact\", labels.compactDensity],\n [\"comfortable\", labels.comfortableDensity],\n [\"spacious\", labels.spaciousDensity],\n ] as const\n ).map(([nextDensity, label]) => (\n {\n onDensityChange(nextDensity);\n }}\n >\n {label}\n \n ))}\n \n \n ) : null}\n {columnVisibilityOptions.some((column) => column.canHide) ? (\n <>\n \n {labels.columns}\n \n {columnVisibilityOptions\n .filter((column) => column.canHide)\n .map((column) => (\n {\n onColumnVisibilityChange?.(\n column.id,\n checked === true,\n );\n }}\n >\n {column.label}\n \n ))}\n \n \n ) : null}\n {enableColumnPinning ? (\n <>\n \n \n {labels.pinLeft} / {labels.pinRight}\n \n \n {columnVisibilityOptions.map((column) => (\n {\n event.preventDefault();\n }}\n >\n \n {column.label}\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, \"left\");\n }}\n >\n L\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, \"right\");\n }}\n >\n R\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, false);\n }}\n >\n -\n \n \n ))}\n \n \n ) : null}\n \n \n ) : null}\n\n {showViewToggle && enableViewToggle && onViewModeChange ? (\n \n \n \n {\n onViewModeChange(\"table\");\n }}\n >\n \n \n {labels.switchToTableView ??\n DATA_TABLE_DEFAULT_LABELS.switchToTableView}\n \n \n \n \n {labels.tableView ??\n DATA_TABLE_DEFAULT_LABELS.tableView}\n \n \n \n \n {\n onViewModeChange(\"card\");\n }}\n >\n \n \n {labels.switchToCardView ??\n DATA_TABLE_DEFAULT_LABELS.switchToCardView}\n \n \n \n \n {labels.cardView ??\n DATA_TABLE_DEFAULT_LABELS.cardView}\n \n \n \n ) : null}\n\n {showTrailingActions\n ? trailingActions.map((action) => {\n const collapsesToIcon =\n !action.iconOnly && Boolean(action.icon);\n const button = (\n {\n void action.onClick({\n rows: allRows,\n openFileDialog,\n });\n }}\n disabled={action.disabled}\n aria-label={action.label}\n title={action.iconOnly ? undefined : action.label}\n className={`size-7 shrink-0 ${action.iconOnly ? \"\" : `${collapsesToIcon ? \"px-0 @min-[768px]/data-table:px-2.5\" : \"\"} @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit`} ${action.iconOnly || collapsesToIcon ? compactToolbarIconButtonClassName : \"\"} ${uiClassNames.toolbarInputButton ?? \"\"}`}\n >\n {action.icon ? (\n \n ) : null}\n {action.iconOnly ? (\n {action.label}\n ) : collapsesToIcon ? (\n \n {action.label}\n \n ) : (\n {action.label}\n )}\n \n );\n\n return action.iconOnly ? (\n \n {button}\n {action.label}\n \n ) : (\n button\n );\n })\n : null}\n
    \n \n\n {showSearch && isCompactSearchVisible ? (\n \n \n ) => {\n onToolbarQueryValueChange(event.target.value);\n }}\n placeholder={toolbarQueryPlaceholder}\n />\n \n \n \n {toolbarQueryValue ? (\n \n {\n onToolbarQueryValueChange(\"\");\n }}\n aria-label={labels.clearSearch}\n title={labels.clearSearch}\n >\n \n \n \n ) : null}\n \n \n ) : null}\n\n {columnFilters.length ? (\n \n {columnFilters.map((filter) => (\n \n ))}\n {columnFilters.some((filter) =>\n hasColumnFilterValue(filter.value),\n ) ? (\n \n {labels.clearFilters}\n \n ) : null}\n \n ) : null}\n\n \n\n {showCustomToolbar && customToolbar ? (\n \n {customToolbar}\n \n ) : null}\n \n );\n };\n\n function ToolbarColumnFilterControl({\n filter,\n labels,\n onColumnFilterChange,\n }: {\n filter: DataTableToolbarColumnFilter;\n labels: DataTableLabels;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n }) {\n if (filter.type === \"text\") {\n return (\n \n ) => {\n onColumnFilterChange(filter.id, event.target.value);\n }}\n placeholder={filter.placeholder ?? filter.label}\n aria-label={`${labels.filters}: ${filter.label}`}\n />\n \n \n \n \n );\n }\n\n if (filter.type === \"numberRange\" || filter.type === \"dateRange\") {\n const range = normalizeToolbarRangeValue(filter.value);\n const inputType = filter.type === \"numberRange\" ? \"number\" : \"date\";\n const fromLabel =\n labels.filterFrom ?? DATA_TABLE_DEFAULT_LABELS.filterFrom;\n const toLabel = labels.filterTo ?? DATA_TABLE_DEFAULT_LABELS.filterTo;\n\n return (\n \n \n ) => {\n onColumnFilterChange(filter.id, {\n ...range,\n from: parseRangeInputValue(event.target.value, inputType),\n });\n }}\n aria-label={`${filter.label}: ${fromLabel}`}\n />\n {fromLabel}\n \n \n ) => {\n onColumnFilterChange(filter.id, {\n ...range,\n to: parseRangeInputValue(event.target.value, inputType),\n });\n }}\n aria-label={`${filter.label}: ${toLabel}`}\n />\n {toLabel}\n \n \n );\n }\n\n const isBoolean = filter.type === \"boolean\";\n const booleanOptions = [\n {\n label:\n filter.trueLabel ??\n labels.filterTrue ??\n DATA_TABLE_DEFAULT_LABELS.filterTrue,\n value: \"true\",\n },\n {\n label:\n filter.falseLabel ??\n labels.filterFalse ??\n DATA_TABLE_DEFAULT_LABELS.filterFalse,\n value: \"false\",\n },\n ];\n const options = isBoolean ? booleanOptions : filter.options;\n const selectedValue =\n typeof filter.value === \"string\" || typeof filter.value === \"boolean\"\n ? String(filter.value)\n : \"\";\n const selectedValues = Array.isArray(filter.value)\n ? filter.value.map(String)\n : selectedValue\n ? [selectedValue]\n : [];\n const selectedLabel =\n selectedValues.length === 0\n ? filter.label\n : `${filter.label}: ${\n selectedValues.length === 1\n ? (options.find(\n (option) => option.value === String(selectedValues[0]),\n )?.label ?? selectedValues[0])\n : selectedValues.length\n }`;\n\n return (\n \n \n \n \n \n {filter.label}\n \n {filter.type === \"select\" || isBoolean ? (\n {\n onColumnFilterChange(filter.id, \"\");\n }}\n >\n {labels.allFilterOptions ??\n DATA_TABLE_DEFAULT_LABELS.allFilterOptions}\n \n ) : null}\n {options.map((option) => (\n {\n if (filter.type === \"select\" || isBoolean) {\n onColumnFilterChange(\n filter.id,\n checked === true ? option.value : \"\",\n );\n return;\n }\n\n const nextValues = new Set(selectedValues);\n if (checked === true) {\n nextValues.add(option.value);\n } else {\n nextValues.delete(option.value);\n }\n onColumnFilterChange(filter.id, Array.from(nextValues));\n }}\n >\n {option.label}\n \n ))}\n \n \n \n );\n }\n}\n\nfunction hasColumnFilterValue(value: unknown) {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n\n if (value && typeof value === \"object\") {\n if (\"from\" in value || \"to\" in value) {\n return Object.values(value).some(hasColumnFilterValue);\n }\n\n return true;\n }\n\n return value !== undefined && value !== null && value !== \"\";\n}\n\nfunction normalizeToolbarRangeValue(value: unknown): {\n from?: number | string;\n to?: number | string;\n} {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return {};\n }\n\n const range = value as { from?: unknown; to?: unknown };\n return {\n ...(typeof range.from === \"number\" || typeof range.from === \"string\"\n ? { from: range.from }\n : {}),\n ...(typeof range.to === \"number\" || typeof range.to === \"string\"\n ? { to: range.to }\n : {}),\n };\n}\n\nfunction parseRangeInputValue(value: string, inputType: \"number\" | \"date\") {\n if (!value) {\n return undefined;\n }\n\n return inputType === \"number\" ? Number(value) : value;\n}\n","import * as React from \"react\";\nimport { DataTableTablePanel } from \"./data-table-table-panel\";\nimport type { DataTableTablePanelProps } from \"./data-table-table-panel\";\n\nconst LazyDataTableVirtualTablePanel = React.lazy(async () => {\n const module = await import(\"./data-table-virtual-table-panel\");\n return { default: module.DataTableVirtualTablePanel };\n}) as unknown as typeof DataTableTablePanel;\n\nexport function DataTableTablePanelRouter(\n props: DataTableTablePanelProps,\n) {\n const config =\n typeof props.virtualization === \"object\"\n ? props.virtualization\n : undefined;\n const enabled =\n props.virtualization === true || config?.enabled === true;\n\n if (!enabled) {\n return ;\n }\n\n return (\n \n }\n >\n \n \n );\n}\n","import type {\n DataTableSavedView,\n DataTableSavedViewSlice,\n DataTableSavedViewsChangeOperation,\n DataTableSavedViewsConfig,\n DataTableSavedViewsPayload,\n DataTableState,\n} from \"../types\";\n\nconst STORAGE_PREFIX = \"data-table-pro:saved-views:\";\nconst DEFAULT_VERSION = 1;\nconst DEFAULT_SLICES: Array = [\n \"sorting\",\n \"columnVisibility\",\n \"columnFilters\",\n \"columnOrder\",\n \"columnPinning\",\n \"rowPinning\",\n \"columnSizing\",\n \"density\",\n \"viewMode\",\n \"showHiddenRows\",\n \"globalFilter\",\n];\nlet fallbackId = 0;\n\nexport function readDataTableSavedViews(\n config: DataTableSavedViewsConfig | undefined,\n): Array {\n const storage = resolveStorage(config);\n if (!config || !storage) {\n return [];\n }\n\n let serialized: string | null;\n try {\n serialized = storage.getItem(getStorageKey(config.key));\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return [];\n }\n if (!serialized) {\n return [];\n }\n\n let parsed: unknown;\n try {\n parsed = (config.deserialize ?? JSON.parse)(serialized);\n } catch (error) {\n config.onError?.({ error, operation: \"deserialize\" });\n return [];\n }\n\n if (!isRecord(parsed) || !(\"version\" in parsed) || !(\"views\" in parsed)) {\n return [];\n }\n\n const targetVersion = config.version ?? DEFAULT_VERSION;\n let candidate: unknown = parsed.views;\n if (parsed.version !== targetVersion) {\n if (!config.migrate) {\n return [];\n }\n try {\n candidate = config.migrate(\n { version: parsed.version, views: parsed.views },\n targetVersion,\n );\n } catch (error) {\n config.onError?.({ error, operation: \"migrate\" });\n return [];\n }\n }\n\n if (!Array.isArray(candidate)) {\n return [];\n }\n\n return candidate\n .map((view) => validateSavedView(view, config.slices))\n .filter((view): view is DataTableSavedView => Boolean(view));\n}\n\nexport function createDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n name: string,\n state: DataTableState,\n) {\n const normalizedName = name.trim();\n if (!config || !normalizedName) {\n return undefined;\n }\n\n const now = new Date().toISOString();\n const view: DataTableSavedView = {\n id: createSavedViewId(),\n name: normalizedName,\n createdAt: now,\n updatedAt: now,\n state: selectSavedViewSlices(state, config.slices),\n };\n const views = [...readDataTableSavedViews(config), view];\n return writeViews(config, views, \"create\") ? cloneSavedView(view) : undefined;\n}\n\nexport function renameDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n id: string,\n name: string,\n) {\n const normalizedName = name.trim();\n if (!config || !normalizedName) {\n return undefined;\n }\n\n let renamed: DataTableSavedView | undefined;\n const views = readDataTableSavedViews(config).map((view) => {\n if (view.id !== id) {\n return view;\n }\n renamed = {\n ...view,\n name: normalizedName,\n updatedAt: new Date().toISOString(),\n };\n return renamed;\n });\n if (!renamed) {\n return undefined;\n }\n\n return writeViews(config, views, \"rename\")\n ? cloneSavedView(renamed)\n : undefined;\n}\n\nexport function deleteDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n id: string,\n) {\n if (!config) {\n return false;\n }\n\n const current = readDataTableSavedViews(config);\n const views = current.filter((view) => view.id !== id);\n return views.length !== current.length && writeViews(config, views, \"delete\");\n}\n\nexport function clearDataTableSavedViews(\n config: DataTableSavedViewsConfig | undefined,\n) {\n const storage = resolveStorage(config);\n if (!config || !storage) {\n return false;\n }\n\n try {\n storage.removeItem(getStorageKey(config.key));\n } catch (error) {\n config.onError?.({ error, operation: \"remove\" });\n return false;\n }\n config.onChange?.([], \"clear\");\n return true;\n}\n\nfunction writeViews(\n config: DataTableSavedViewsConfig,\n views: Array,\n operation: DataTableSavedViewsChangeOperation,\n) {\n const storage = resolveStorage(config);\n if (!storage) {\n return false;\n }\n\n let serialized: string;\n try {\n const payload: DataTableSavedViewsPayload = {\n version: config.version ?? DEFAULT_VERSION,\n views,\n };\n serialized = (config.serialize ?? JSON.stringify)(payload);\n } catch (error) {\n config.onError?.({ error, operation: \"serialize\" });\n return false;\n }\n\n try {\n storage.setItem(getStorageKey(config.key), serialized);\n } catch (error) {\n config.onError?.({ error, operation: \"write\" });\n return false;\n }\n const snapshots = views.map(cloneSavedView);\n config.onChange?.(snapshots, operation);\n return true;\n}\n\nfunction selectSavedViewSlices(\n state: DataTableState,\n slices: Array | undefined,\n) {\n const selected = new Set(slices ?? DEFAULT_SLICES);\n const snapshot: Partial = {};\n for (const slice of Object.keys(state) as Array) {\n if (selected.has(slice)) {\n Object.assign(snapshot, {\n [slice]: cloneStateSlice(slice, state[slice]),\n });\n }\n }\n return snapshot;\n}\n\nfunction validateSavedView(\n value: unknown,\n slices: Array | undefined,\n): DataTableSavedView | undefined {\n if (\n !isRecord(value) ||\n typeof value.id !== \"string\" ||\n !value.id ||\n typeof value.name !== \"string\" ||\n !value.name.trim() ||\n typeof value.createdAt !== \"string\" ||\n typeof value.updatedAt !== \"string\"\n ) {\n return undefined;\n }\n\n return {\n id: value.id,\n name: value.name.trim(),\n createdAt: value.createdAt,\n updatedAt: value.updatedAt,\n state: validateState(value.state, slices),\n };\n}\n\nfunction validateState(\n value: unknown,\n slices: Array | undefined,\n) {\n if (!isRecord(value)) {\n return {};\n }\n\n const selected = new Set(slices ?? DEFAULT_SLICES);\n const state: Partial = {};\n const sorting = validateSorting(value.sorting);\n if (selected.has(\"sorting\") && sorting) state.sorting = sorting;\n const pagination = validatePagination(value.pagination);\n if (selected.has(\"pagination\") && pagination) state.pagination = pagination;\n const rowSelection = validateBooleanRecord(value.rowSelection);\n if (selected.has(\"rowSelection\") && rowSelection) {\n state.rowSelection = rowSelection;\n }\n const visibility = validateBooleanRecord(value.columnVisibility);\n if (selected.has(\"columnVisibility\") && visibility) {\n state.columnVisibility = visibility;\n }\n const filters = validateFilters(value.columnFilters);\n if (selected.has(\"columnFilters\") && filters) state.columnFilters = filters;\n const expanded =\n value.expanded === true\n ? true\n : validateBooleanRecord(value.expanded);\n if (selected.has(\"expanded\") && expanded !== undefined) {\n state.expanded = expanded;\n }\n const order = validateStringArray(value.columnOrder);\n if (selected.has(\"columnOrder\") && order) state.columnOrder = order;\n const pinning = validatePinning(value.columnPinning);\n if (selected.has(\"columnPinning\") && pinning) {\n state.columnPinning = pinning;\n }\n const rowPinning = validateRowPinning(value.rowPinning);\n if (selected.has(\"rowPinning\") && rowPinning) {\n state.rowPinning = rowPinning;\n }\n const sizing = validateSizingRecord(value.columnSizing);\n if (selected.has(\"columnSizing\") && sizing) state.columnSizing = sizing;\n if (\n selected.has(\"density\") &&\n (value.density === \"compact\" ||\n value.density === \"comfortable\" ||\n value.density === \"spacious\")\n ) {\n state.density = value.density;\n }\n if (\n selected.has(\"viewMode\") &&\n (value.viewMode === \"table\" || value.viewMode === \"card\")\n ) {\n state.viewMode = value.viewMode;\n }\n if (selected.has(\"showHiddenRows\") && typeof value.showHiddenRows === \"boolean\") {\n state.showHiddenRows = value.showHiddenRows;\n }\n if (selected.has(\"globalFilter\") && typeof value.globalFilter === \"string\") {\n state.globalFilter = value.globalFilter;\n }\n return state;\n}\n\nfunction cloneSavedView(view: DataTableSavedView): DataTableSavedView {\n return {\n ...view,\n state: validateState(view.state, Object.keys(view.state) as Array),\n };\n}\n\nfunction cloneStateSlice(\n slice: DataTableSavedViewSlice,\n value: unknown,\n) {\n if (Array.isArray(value)) {\n return (value as Array).map((item) =>\n isRecord(item) ? { ...item } : item,\n );\n }\n if (isRecord(value)) {\n if (slice === \"columnPinning\" || slice === \"rowPinning\") {\n return {\n ...(slice === \"columnPinning\"\n ? {\n left: Array.isArray(value.left)\n ? [...(value.left as Array)]\n : undefined,\n right: Array.isArray(value.right)\n ? [...(value.right as Array)]\n : undefined,\n }\n : {\n top: Array.isArray(value.top)\n ? [...(value.top as Array)]\n : undefined,\n bottom: Array.isArray(value.bottom)\n ? [...(value.bottom as Array)]\n : undefined,\n }),\n };\n }\n return { ...value };\n }\n return value;\n}\n\nfunction validateSorting(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value\n .filter(\n (item): item is { id: string; desc?: boolean } =>\n isRecord(item) && typeof item.id === \"string\",\n )\n .map((item) => ({ id: item.id, desc: Boolean(item.desc) }));\n}\n\nfunction validatePagination(value: unknown) {\n if (\n !isRecord(value) ||\n !Number.isInteger(value.pageIndex) ||\n (value.pageIndex as number) < 0 ||\n !Number.isInteger(value.pageSize) ||\n (value.pageSize as number) < 1\n ) {\n return undefined;\n }\n return {\n pageIndex: value.pageIndex as number,\n pageSize: value.pageSize as number,\n };\n}\n\nfunction validateFilters(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value\n .filter(\n (item): item is { id: string; value: unknown } =>\n isRecord(item) &&\n typeof item.id === \"string\" &&\n Object.prototype.hasOwnProperty.call(item, \"value\"),\n )\n .map((item) => ({ id: item.id, value: item.value }));\n}\n\nfunction validatePinning(value: unknown) {\n if (!isRecord(value)) return undefined;\n return {\n left: validateStringArray(value.left) ?? [],\n right: validateStringArray(value.right) ?? [],\n };\n}\n\nfunction validateRowPinning(value: unknown) {\n if (!isRecord(value)) return undefined;\n return {\n top: validateStringArray(value.top) ?? [],\n bottom: validateStringArray(value.bottom) ?? [],\n };\n}\n\nfunction validateBooleanRecord(value: unknown) {\n if (!isRecord(value)) return undefined;\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, boolean] => typeof entry[1] === \"boolean\",\n ),\n );\n}\n\nfunction validateSizingRecord(value: unknown) {\n if (!isRecord(value)) return undefined;\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, number] =>\n typeof entry[1] === \"number\" &&\n Number.isFinite(entry[1]) &&\n entry[1] >= 0,\n ),\n );\n}\n\nfunction validateStringArray(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value.filter((item): item is string => typeof item === \"string\");\n}\n\nfunction resolveStorage(config: DataTableSavedViewsConfig | undefined) {\n if (!config) {\n return undefined;\n }\n if (config.storage) {\n return config.storage;\n }\n if (typeof window === \"undefined\") {\n return undefined;\n }\n try {\n return window.localStorage;\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return undefined;\n }\n}\n\nfunction createSavedViewId() {\n if (typeof globalThis.crypto?.randomUUID === \"function\") {\n return globalThis.crypto.randomUUID();\n }\n fallbackId += 1;\n return `view-${Date.now().toString(36)}-${fallbackId.toString(36)}`;\n}\n\nfunction getStorageKey(key: string) {\n return `${STORAGE_PREFIX}${key}`;\n}\n\nfunction isRecord(value: unknown): value is Record {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n","import * as React from \"react\";\nimport { IconDownload } from \"../icons\";\nimport type {\n ColumnFiltersState,\n ColumnPinningState,\n OnChangeFn,\n Table as TanStackTable,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableColumnFixed,\n DataTableLabels,\n DataTableProps,\n} from \"../types\";\nimport {\n exportDataTableCsv,\n getAccessorKey,\n getColumnId,\n getDataTableLeafColumns,\n hasFilterValue,\n normalizeColumnFilterOptions,\n startCase,\n} from \"./data-table-utils\";\n\nexport function useDataTableToolbarFeatures({\n columns,\n currentColumnFilters,\n currentColumnPinning,\n effectiveColumnVisibility,\n enableColumnFilters,\n handleColumnFiltersChange,\n handleColumnPinningChange,\n labels,\n table,\n toolbarActions,\n visibleData,\n csvExport,\n}: {\n columns: DataTableProps[\"columns\"];\n currentColumnFilters: ColumnFiltersState;\n currentColumnPinning: ColumnPinningState;\n effectiveColumnVisibility: VisibilityState;\n enableColumnFilters: boolean | undefined;\n handleColumnFiltersChange: OnChangeFn;\n handleColumnPinningChange: OnChangeFn;\n labels: DataTableLabels;\n table: TanStackTable;\n toolbarActions: DataTableProps[\"toolbarActions\"];\n visibleData: Array;\n csvExport: DataTableProps[\"csvExport\"];\n}) {\n const columnVisibilityOptions = React.useMemo(() => {\n return getDataTableLeafColumns(columns).map(({ column, index }) => {\n const id = getColumnId(column, index);\n const header = column.header;\n const accessorKey = getAccessorKey(column);\n const label =\n typeof header === \"string\"\n ? header\n : accessorKey\n ? startCase(accessorKey)\n : startCase(id);\n\n const pinned: false | DataTableColumnFixed =\n currentColumnPinning.left?.includes(id) === true\n ? \"left\"\n : currentColumnPinning.right?.includes(id) === true\n ? \"right\"\n : false;\n\n return {\n id,\n label,\n visible: effectiveColumnVisibility[id] !== false,\n canHide: column.enableHiding !== false,\n pinned,\n };\n });\n }, [columns, currentColumnPinning, effectiveColumnVisibility]);\n\n const toolbarColumnFilters = React.useMemo(() => {\n if (enableColumnFilters === false) {\n return [];\n }\n\n return getDataTableLeafColumns(columns).flatMap(({ column, index }) => {\n const filter = column.meta?.filter;\n if (!filter) {\n return [];\n }\n\n const id = getColumnId(column, index);\n const header = column.header;\n const accessorKey = getAccessorKey(column);\n const label =\n filter.label ??\n (typeof header === \"string\"\n ? header\n : accessorKey\n ? startCase(accessorKey)\n : startCase(id));\n const state = currentColumnFilters.find((item) => item.id === id);\n const rawOptions =\n typeof filter.options === \"function\"\n ? filter.options({ rows: visibleData })\n : (filter.options ?? []);\n\n return [\n {\n id,\n label,\n type: filter.type,\n value: state?.value,\n placeholder: filter.placeholder,\n options: normalizeColumnFilterOptions(rawOptions),\n trueLabel: filter.trueLabel,\n falseLabel: filter.falseLabel,\n min: filter.min,\n max: filter.max,\n step: filter.step,\n },\n ];\n });\n }, [columns, currentColumnFilters, enableColumnFilters, visibleData]);\n\n const handleToolbarColumnFilterChange = React.useCallback(\n (columnId: string, value: unknown) => {\n handleColumnFiltersChange((current) => {\n const next = current.filter((filter) => filter.id !== columnId);\n if (hasFilterValue(value)) {\n next.push({ id: columnId, value });\n }\n return next;\n });\n },\n [handleColumnFiltersChange],\n );\n\n const handleClearColumnFilters = React.useCallback(() => {\n handleColumnFiltersChange([]);\n }, [handleColumnFiltersChange]);\n\n const handleToolbarColumnPinningChange = React.useCallback(\n (columnId: string, side: DataTableColumnFixed | false) => {\n handleColumnPinningChange((current) => {\n const left = (current.left ?? []).filter((id) => id !== columnId);\n const right = (current.right ?? []).filter((id) => id !== columnId);\n\n if (side === \"left\") {\n left.push(columnId);\n }\n if (side === \"right\") {\n right.push(columnId);\n }\n\n return { left, right };\n });\n },\n [handleColumnPinningChange],\n );\n\n const handleCsvExport = React.useCallback(() => {\n if (!csvExport) {\n return;\n }\n\n return exportDataTableCsv({\n csvExport,\n table,\n labels,\n });\n }, [csvExport, labels, table]);\n\n const effectiveToolbarActions = React.useMemo(() => {\n if (!csvExport) {\n return toolbarActions ?? [];\n }\n\n return [\n ...(toolbarActions ?? []),\n {\n key: \"__csv_export__\",\n label: labels.exportCsv,\n icon: IconDownload,\n placement: \"trailing\" as const,\n onClick: handleCsvExport,\n },\n ];\n }, [csvExport, handleCsvExport, labels.exportCsv, toolbarActions]);\n\n return {\n columnVisibilityOptions,\n effectiveToolbarActions,\n handleClearColumnFilters,\n handleToolbarColumnFilterChange,\n handleToolbarColumnPinningChange,\n toolbarColumnFilters,\n };\n}\n","import * as React from \"react\";\nimport { flushSync } from \"react-dom\";\nimport type {\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableActionErrorContext,\n DataTableApi,\n DataTableProps,\n DataTableState,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { createDataTableCardView } from \"./create-data-table-card-view\";\nimport { createDataTableEmptyState } from \"./create-data-table-empty-state\";\nimport { createDataTablePagination } from \"./create-data-table-pagination\";\nimport { createDataTableRowActions } from \"./create-data-table-row-actions\";\nimport { createDataTableToolbar } from \"./create-data-table-toolbar\";\nimport { DataTableCardPanel as DefaultDataTableCardPanel } from \"./data-table-card-panel\";\nimport { DataTableFooterSection } from \"./data-table-footer-section\";\nimport { DataTableTablePanelRouter as DefaultDataTableTablePanel } from \"./data-table-table-panel-router\";\nimport { DataTableToolbarSection } from \"./data-table-toolbar-section\";\nimport {\n clearDataTableSavedViews,\n createDataTableSavedView,\n deleteDataTableSavedView,\n readDataTableSavedViews,\n renameDataTableSavedView,\n} from \"./data-table-saved-views\";\nimport { resolveDataTableLabels } from \"./data-table-labels\";\nimport { useDataTableColumns } from \"./use-data-table-columns\";\nimport { useControllableState } from \"./use-controllable-state\";\nimport { useDataTableInstance } from \"./use-data-table-instance\";\nimport { useDataTableScrollViewport } from \"./use-data-table-scroll-viewport\";\nimport {\n exportDataTableCsv,\n getColumnId,\n getDataTableColumnGroupPaths,\n getDataTableLeafColumns,\n getInitialColumnPinning,\n validateDataTableColumnIds,\n} from \"./data-table-utils\";\nimport { useDataTableState } from \"./use-data-table-state\";\nimport { clearDataTableColumnPrefs } from \"./use-data-table-column-prefs\";\nimport { useDataTableToolbarFeatures } from \"./use-data-table-toolbar-features\";\nimport { useColumnLayout } from \"./use-column-layout\";\nimport { useRowEditing } from \"./use-row-editing\";\n\ntype CreateDataTableOptions = {\n CardPanel?: typeof DefaultDataTableCardPanel;\n TablePanel?: typeof DefaultDataTableTablePanel;\n};\n\nexport function createDataTable(ui: DataTableUiKit) {\n return createDataTableWithPanels(ui);\n}\n\nexport function createDataTableWithPanels(\n ui: DataTableUiKit,\n options: CreateDataTableOptions = {},\n) {\n const DataTableCardPanel =\n options.CardPanel ?? DefaultDataTableCardPanel;\n const DataTableTablePanel =\n options.TablePanel ?? DefaultDataTableTablePanel;\n const uiClassNames = ui.classNames ?? {};\n const {\n rootClassName,\n Button,\n Checkbox,\n Input,\n ScrollArea,\n ScrollBar,\n Skeleton,\n Table,\n TableBody,\n TableCell,\n TableFooter = \"tfoot\",\n TableHead,\n TableHeader,\n TableRow,\n Tooltip,\n TooltipContent,\n TooltipProvider = React.Fragment,\n TooltipTrigger,\n } = ui;\n const DataTableEmptyState = createDataTableEmptyState(ui);\n const DataTableRowActions = createDataTableRowActions(ui);\n const { DataTableFooter } = createDataTablePagination(ui);\n const DataTableToolbar = createDataTableToolbar(ui);\n const DataTableCardView = createDataTableCardView(ui, DataTableRowActions);\n const defaultColumn = {\n minSize: 80,\n size: 180,\n maxSize: 720,\n };\n\n return function DataTable({\n columns,\n data,\n getRowId,\n children,\n title,\n description,\n toolbarQueryValue,\n onToolbarQueryValueChange,\n toolbarQueryPlaceholder,\n toolbarQueryDebounceMs,\n manualFiltering = false,\n enableToolbarQueryFiltering = true,\n globalFilterFn,\n columnFilters,\n onColumnFiltersChange,\n enableColumnFilters,\n customToolbar,\n compactToolbar,\n rowsPerPageOptions = [10, 20, 50, 100],\n totalRowCount,\n hasNextPage,\n sorting,\n onSortingChange,\n manualSorting = false,\n pageIndex,\n pageSize,\n onPageIndexChange,\n onPageSizeChange,\n pageCount,\n manualPagination = false,\n rowSelection,\n onRowSelectionChange,\n enableRowSelection = false,\n enableMultiRowSelection = true,\n enableSubRowSelection = true,\n getRowCanSelect,\n rowSelectionSelectAllScope = \"page\",\n expanded,\n onExpandedChange,\n getSubRows,\n manualExpanding = false,\n paginateExpandedRows,\n filterFromLeafRows,\n maxLeafRowFilterDepth,\n detailPanel,\n getRowCanExpand,\n renderExpandedRow,\n columnOrder,\n onColumnOrderChange,\n enableColumnReordering = false,\n columnGroupHeaderHeight,\n columnPinning,\n onColumnPinningChange,\n enableColumnPinning = false,\n rowPinning,\n onRowPinningChange,\n enableRowPinning = false,\n keepPinnedRows = true,\n toolbarActions = [],\n selectionActions = [],\n rowActions = [],\n csvExport,\n density,\n onDensityChange,\n enableDensityToggle = false,\n columnPrefsKey,\n persistence,\n savedViews,\n initialState,\n state: unifiedState,\n onStateChange,\n apiRef,\n labels,\n summaryRows = [],\n cardRenderer,\n cardSizing,\n cardGridClassName,\n cardClassName,\n viewMode,\n onViewModeChange,\n enableViewToggle = false,\n emptyState,\n isLoading = false,\n loadingRowCount,\n getRowLoadingState,\n hiddenRows,\n showHiddenRows,\n onShowHiddenRowsChange,\n infiniteScroll,\n editableRows,\n columnVisibility,\n onColumnVisibilityChange,\n columnSizing,\n onColumnSizingChange,\n enableColumnResizing = false,\n columnResizeMode = \"onEnd\",\n layoutMode = \"fill\",\n stickyHeader = true,\n showFooter = true,\n showToolbar = true,\n dir = \"ltr\",\n flexGrow = true,\n toolbarVisibility,\n className,\n tableClassName,\n tableContainerClassName,\n stripedRows = false,\n getRowClassName,\n onRowClick,\n onActionError,\n dragAndDrop,\n fileUpload,\n virtualization,\n }: DataTableProps) {\n const containerRef = React.useRef(null);\n const fileInputRef = React.useRef(null);\n const tableScrollContainerRef = React.useRef(null);\n const draggedColumnIdRef = React.useRef(null);\n const tableRef = React.useRef | null>(null);\n const lastSelectedRowIdRef = React.useRef(null);\n const generatedTitleId = React.useId();\n const generatedDescriptionId = React.useId();\n React.useMemo(() => validateDataTableColumnIds(columns), [columns]);\n const resolvedLabels = React.useMemo(\n () => resolveDataTableLabels(labels),\n [labels],\n );\n const resolvedToolbarQueryValue =\n toolbarQueryValue ?? unifiedState?.globalFilter;\n const resolvedSorting = sorting ?? unifiedState?.sorting;\n const resolvedPageIndex =\n pageIndex ?? unifiedState?.pagination?.pageIndex;\n const resolvedPageSize = pageSize ?? unifiedState?.pagination?.pageSize;\n const resolvedRowSelection =\n rowSelection ?? unifiedState?.rowSelection;\n const resolvedColumnVisibility =\n columnVisibility ?? unifiedState?.columnVisibility;\n const resolvedColumnFilters =\n columnFilters ?? unifiedState?.columnFilters;\n const resolvedExpanded = expanded ?? unifiedState?.expanded;\n const resolvedColumnOrder =\n columnOrder ?? unifiedState?.columnOrder;\n const resolvedColumnPinning =\n columnPinning ?? unifiedState?.columnPinning;\n const resolvedRowPinning = rowPinning ?? unifiedState?.rowPinning;\n const resolvedColumnSizing =\n columnSizing ?? unifiedState?.columnSizing;\n const resolvedDensity = density ?? unifiedState?.density;\n const resolvedViewMode = viewMode ?? unifiedState?.viewMode;\n const resolvedShowHiddenRows =\n showHiddenRows ?? unifiedState?.showHiddenRows;\n const showTableHeading =\n showToolbar && (toolbarVisibility?.title ?? true);\n const titleId = showTableHeading && title ? generatedTitleId : undefined;\n const descriptionId =\n showTableHeading && description ? generatedDescriptionId : undefined;\n useDataTableStateConflictWarnings(unifiedState, {\n columnFilters: columnFilters !== undefined,\n columnOrder: columnOrder !== undefined,\n columnPinning: columnPinning !== undefined,\n rowPinning: rowPinning !== undefined,\n columnSizing: columnSizing !== undefined,\n columnVisibility: columnVisibility !== undefined,\n density: density !== undefined,\n expanded: expanded !== undefined,\n globalFilter: toolbarQueryValue !== undefined,\n pagination: pageIndex !== undefined || pageSize !== undefined,\n rowSelection: rowSelection !== undefined,\n showHiddenRows: showHiddenRows !== undefined,\n sorting: sorting !== undefined,\n viewMode: viewMode !== undefined,\n });\n const handleToolbarQueryValueChange = useDataTableStateSliceChange(\n \"globalFilter\",\n onToolbarQueryValueChange,\n onStateChange,\n );\n const handleSortingPropChange = useDataTableStateSliceChange(\n \"sorting\",\n onSortingChange,\n onStateChange,\n );\n const handleRowSelectionPropChange = useDataTableStateSliceChange(\n \"rowSelection\",\n onRowSelectionChange,\n onStateChange,\n );\n const handleColumnVisibilityPropChange = useDataTableStateSliceChange(\n \"columnVisibility\",\n onColumnVisibilityChange,\n onStateChange,\n );\n const handleColumnFiltersPropChange = useDataTableStateSliceChange(\n \"columnFilters\",\n onColumnFiltersChange,\n onStateChange,\n );\n const handleExpandedPropChange = useDataTableStateSliceChange(\n \"expanded\",\n onExpandedChange,\n onStateChange,\n );\n const handleColumnOrderPropChange = useDataTableStateSliceChange(\n \"columnOrder\",\n onColumnOrderChange,\n onStateChange,\n );\n const handleColumnPinningPropChange = useDataTableStateSliceChange(\n \"columnPinning\",\n onColumnPinningChange,\n onStateChange,\n );\n const handleRowPinningPropChange = useDataTableStateSliceChange(\n \"rowPinning\",\n onRowPinningChange,\n onStateChange,\n );\n const handleColumnSizingPropChange = useDataTableStateSliceChange(\n \"columnSizing\",\n onColumnSizingChange,\n onStateChange,\n );\n const handleDensityPropChange = useDataTableStateSliceChange(\n \"density\",\n onDensityChange,\n onStateChange,\n );\n const handleViewModePropChange = useDataTableStateSliceChange(\n \"viewMode\",\n onViewModeChange,\n onStateChange,\n );\n const handleShowHiddenRowsPropChange = useDataTableStateSliceChange(\n \"showHiddenRows\",\n onShowHiddenRowsChange,\n onStateChange,\n );\n const handlePageIndexPropChange = React.useCallback(\n (nextPageIndex: number) => {\n onPageIndexChange?.(nextPageIndex);\n onStateChange?.((current) => ({\n ...current,\n pagination: {\n pageIndex: nextPageIndex,\n pageSize:\n resolvedPageSize ?? current.pagination.pageSize,\n },\n }));\n },\n [onPageIndexChange, onStateChange, resolvedPageSize],\n );\n const handlePageSizePropChange = React.useCallback(\n (nextPageSize: number) => {\n onPageSizeChange?.(nextPageSize);\n onStateChange?.((current) => ({\n ...current,\n pagination: {\n pageIndex:\n resolvedPageIndex ?? current.pagination.pageIndex,\n pageSize: nextPageSize,\n },\n }));\n },\n [onPageSizeChange, onStateChange, resolvedPageIndex],\n );\n const runAction = React.useCallback(\n (\n context: Omit, \"error\">,\n action: () => void | Promise,\n ) => {\n runDataTableAction(action, context, onActionError);\n },\n [onActionError],\n );\n const guardedRowActions = React.useMemo(\n () =>\n rowActions.map((action) => ({\n ...action,\n onClick: (row: TData) => {\n runAction(\n {\n actionKey: action.key,\n row,\n source: \"rowAction\",\n },\n () => action.onClick(row),\n );\n },\n })),\n [rowActions, runAction],\n );\n const guardedOnRowClick = React.useMemo<\n DataTableProps[\"onRowClick\"]\n >(\n () =>\n onRowClick\n ? (context) => {\n runAction(\n {\n row: context.row,\n source: \"rowClick\",\n },\n () => onRowClick(context),\n );\n }\n : undefined,\n [onRowClick, runAction],\n );\n const handleEditError = React.useCallback(\n (error: unknown, row: TData) => {\n onActionError?.({\n error,\n row,\n source: \"edit\",\n });\n },\n [onActionError],\n );\n const {\n containerWidth,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentRowPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n effectiveColumnVisibility,\n globalFilterValue,\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n localSearchValue,\n resolvedLoadingRowCount,\n resolvedToolbarQueryPlaceholder,\n selectedRowIds,\n selectedRows,\n setCurrentColumnFilters,\n setCurrentColumnOrder,\n setCurrentColumnPinning,\n setCurrentRowPinning,\n setCurrentColumnVisibility,\n setCurrentExpanded,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n setLocalSearchValue,\n shouldRenderInitialLoading,\n tableData,\n tableGetRowId,\n visibleData,\n } = useDataTableState({\n columnFilters: resolvedColumnFilters,\n columnOrder: resolvedColumnOrder,\n columnPinning: resolvedColumnPinning,\n rowPinning: resolvedRowPinning,\n columnSizing: resolvedColumnSizing,\n columnPrefsKey,\n persistence,\n columnVisibility: resolvedColumnVisibility,\n columns,\n containerRef,\n data,\n density: resolvedDensity,\n enableRowSelection,\n enableToolbarQueryFiltering,\n expanded: resolvedExpanded,\n getSubRows,\n getRowId,\n hiddenRows,\n isLoading,\n loadingRowCount,\n manualFiltering,\n initialState,\n onColumnFiltersChange: handleColumnFiltersPropChange,\n onColumnOrderChange: handleColumnOrderPropChange,\n onColumnPinningChange: handleColumnPinningPropChange,\n onRowPinningChange: handleRowPinningPropChange,\n onColumnSizingChange: handleColumnSizingPropChange,\n onColumnVisibilityChange: handleColumnVisibilityPropChange,\n onDensityChange: handleDensityPropChange,\n onExpandedChange: handleExpandedPropChange,\n onPageIndexChange: handlePageIndexPropChange,\n onRowSelectionChange: handleRowSelectionPropChange,\n onShowHiddenRowsChange: handleShowHiddenRowsPropChange,\n onSortingChange: handleSortingPropChange,\n onToolbarQueryValueChange: handleToolbarQueryValueChange,\n onViewModeChange: handleViewModePropChange,\n pageIndex: resolvedPageIndex,\n pageSize: resolvedPageSize,\n resolvedLabels,\n rowSelection: resolvedRowSelection,\n rowsPerPageOptions,\n selectionActions,\n showHiddenRows: resolvedShowHiddenRows,\n sorting: resolvedSorting,\n toolbarQueryDebounceMs,\n toolbarQueryPlaceholder,\n toolbarQueryValue: resolvedToolbarQueryValue,\n viewMode: resolvedViewMode,\n });\n const usesLegacyDetailPanelState = Boolean(\n renderExpandedRow && !detailPanel && !getSubRows,\n );\n const resolvedDetailPanel =\n detailPanel ??\n (renderExpandedRow\n ? {\n getRowCanExpand: getSubRows ? undefined : getRowCanExpand,\n render: renderExpandedRow,\n }\n : undefined);\n const [currentDetailExpanded, setCurrentDetailExpanded] =\n useControllableState({\n defaultValue: () =>\n usesLegacyDetailPanelState ? (initialState?.expanded ?? {}) : {},\n onChange: usesLegacyDetailPanelState\n ? setCurrentExpanded\n : resolvedDetailPanel?.onExpandedChange,\n value: usesLegacyDetailPanelState\n ? currentExpanded\n : resolvedDetailPanel?.expanded,\n });\n const {\n cancelEditing,\n draftValues,\n editingRowId,\n isSavingEdit,\n saveEdit,\n setDraftValues,\n setEditingRowId,\n startEditingRow,\n } = useRowEditing({\n columns,\n editableRows,\n onError: handleEditError,\n });\n const { viewportElement: tableScrollElement, viewportHeight } =\n useDataTableScrollViewport(tableScrollContainerRef, currentViewMode);\n const openFileDialog = React.useCallback(() => {\n if (fileUpload?.disabled) {\n return;\n }\n\n fileInputRef.current?.click();\n }, [fileUpload?.disabled]);\n const handleSelectedFiles = React.useCallback(\n (files: FileList | Array) => {\n runAction(\n {\n source: \"fileUpload\",\n },\n () => fileUpload?.onFilesSelected(files),\n );\n },\n [fileUpload, runAction],\n );\n\n const tableColumns = useDataTableColumns({\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n editingRowId,\n enableRowSelection,\n enableRowPinning,\n hasTreeExpansion: Boolean(getSubRows),\n isSavingEdit,\n labels: resolvedLabels,\n lastSelectedRowIdRef,\n detailPanel: resolvedDetailPanel,\n detailExpanded: currentDetailExpanded,\n onDetailExpandedChange: setCurrentDetailExpanded,\n rowSelectionSelectAllScope,\n rowActions: guardedRowActions,\n saveEdit,\n startEditingRow,\n tableRef,\n });\n const columnGroupPaths = React.useMemo(\n () => getDataTableColumnGroupPaths(columns),\n [columns],\n );\n\n const {\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n isPageCountKnown,\n renderedRows,\n topPinnedRows,\n bottomPinnedRows,\n reorderColumn,\n rowsToRender,\n sentinelRef,\n table,\n virtualPaddingBottom,\n virtualPaddingTop,\n visibleLeafColumns,\n } = useDataTableInstance({\n autoResetPageIndex: false,\n columnGroupPaths,\n columnResizeMode,\n dir,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentRowPinning,\n currentColumnSizing,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentSorting,\n currentViewMode,\n defaultColumn,\n effectiveColumnVisibility,\n enableColumnResizing,\n enableRowPinning,\n enableRowSelection,\n enableMultiRowSelection,\n enableSubRowSelection,\n getRowCanSelect,\n getRowCanExpand,\n getSubRows,\n globalFilterFn,\n globalFilterValue,\n hasNextPage,\n handleColumnFiltersChange: setCurrentColumnFilters,\n handleColumnOrderChange: setCurrentColumnOrder,\n handleColumnPinningChange: setCurrentColumnPinning,\n handleRowPinningChange: setCurrentRowPinning,\n handleColumnVisibilityChange: setCurrentColumnVisibility,\n handleExpandedChange: setCurrentExpanded,\n infiniteScroll,\n keepPinnedRows,\n manualFiltering,\n manualExpanding,\n manualPagination,\n manualSorting,\n onActionError,\n onPageIndexChange: handlePageIndexPropChange,\n onPageSizeChange: handlePageSizePropChange,\n pageCount,\n pageIndex: resolvedPageIndex,\n pageSize: resolvedPageSize,\n paginateExpandedRows,\n filterFromLeafRows,\n maxLeafRowFilterDepth,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n shouldRenderInitialLoading,\n tableColumns,\n tableData,\n tableGetRowId,\n tableRef,\n tableScrollElement,\n totalRowCount,\n virtualization,\n viewportHeight,\n });\n const columnLayout = useColumnLayout({\n columns,\n columnSizing: currentColumnSizing,\n editableRows: Boolean(editableRows),\n enableRowSelection,\n hasRowActions: rowActions.length > 0,\n hasRowExpansion: Boolean(getSubRows || resolvedDetailPanel),\n layoutMode,\n uiClassNames,\n visibleLeafColumns,\n });\n const { explicitlySizedColumnIds, fillMinWidth, getColumnLayout } =\n columnLayout;\n const explicitCustomCellColumnIds = React.useMemo(() => {\n return new Set(\n getDataTableLeafColumns(columns).flatMap(({ column, index }) => {\n return Object.prototype.hasOwnProperty.call(column, \"cell\") &&\n typeof column.cell === \"function\"\n ? [getColumnId(column, index)]\n : [];\n }),\n );\n }, [columns]);\n const visibleLeafColumnCount = visibleLeafColumns.length;\n const bodyRowComponents = React.useMemo(\n () => ({\n Checkbox,\n Input,\n Skeleton,\n TableCell,\n TableRow,\n }),\n [],\n );\n const hasCardTitle = React.useMemo(\n () =>\n getDataTableLeafColumns(columns).some(\n ({ column }) => column.meta?.cardTitle,\n ),\n [columns],\n );\n const primeColumnForResize = React.useCallback(\n (columnId: string, currentSize: number) => {\n if (\n explicitlySizedColumnIds.has(columnId) ||\n Object.prototype.hasOwnProperty.call(\n table.getState().columnSizing,\n columnId,\n )\n ) {\n return;\n }\n\n flushSync(() => {\n table.setColumnSizing((current) => ({\n ...current,\n [columnId]: currentSize,\n }));\n });\n },\n [explicitlySizedColumnIds, table],\n );\n const resetColumnSize = React.useCallback(\n (columnId: string) => {\n if (explicitlySizedColumnIds.has(columnId)) {\n table.getColumn(columnId)?.resetSize();\n return;\n }\n\n table.setColumnSizing((current) => {\n if (!Object.prototype.hasOwnProperty.call(current, columnId)) {\n return current;\n }\n\n const next = { ...current };\n delete next[columnId];\n return next;\n });\n },\n [explicitlySizedColumnIds, table],\n );\n\n const filteredData = table\n .getFilteredRowModel()\n .rows.map((row) => row.original);\n const emptyNode =\n typeof emptyState === \"function\"\n ? emptyState({\n rows: filteredData,\n toolbarQueryValue: localSearchValue,\n })\n : emptyState;\n const {\n columnVisibilityOptions,\n effectiveToolbarActions,\n handleClearColumnFilters,\n handleToolbarColumnFilterChange,\n handleToolbarColumnPinningChange,\n toolbarColumnFilters,\n } = useDataTableToolbarFeatures({\n columns,\n currentColumnFilters,\n currentColumnPinning,\n csvExport,\n effectiveColumnVisibility,\n enableColumnFilters,\n handleColumnFiltersChange: setCurrentColumnFilters,\n handleColumnPinningChange: setCurrentColumnPinning,\n labels: resolvedLabels,\n table,\n toolbarActions,\n visibleData,\n });\n const guardedToolbarActions = React.useMemo(\n () =>\n effectiveToolbarActions.map((action) => ({\n ...action,\n onClick: (context: {\n rows: Array;\n openFileDialog?: () => void;\n }) => {\n runAction(\n {\n actionKey: action.key,\n source: \"toolbarAction\",\n },\n () => action.onClick(context),\n );\n },\n })),\n [effectiveToolbarActions, runAction],\n );\n const guardedSelectionActions = React.useMemo(\n () =>\n selectionActions.map((action) => ({\n ...action,\n onClick: (context: Parameters[0]) => {\n runAction(\n {\n actionKey: action.key,\n source: \"selectionAction\",\n },\n () => action.onClick(context),\n );\n },\n })),\n [runAction, selectionActions],\n );\n const currentDataTableState = React.useMemo(\n () => ({\n sorting: currentSorting,\n pagination: currentPagination,\n rowSelection: currentRowSelection,\n columnVisibility: currentColumnVisibility,\n columnFilters: currentColumnFilters,\n expanded: currentExpanded,\n columnOrder: currentColumnOrder,\n columnPinning: currentColumnPinning,\n rowPinning: currentRowPinning,\n columnSizing: currentColumnSizing,\n density: currentDensity,\n viewMode: currentViewMode,\n showHiddenRows: currentShowHiddenRows,\n globalFilter: localSearchValue,\n }),\n [\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentRowPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n localSearchValue,\n ],\n );\n const getCurrentState = React.useCallback(\n () => cloneDataTableState(currentDataTableState),\n [currentDataTableState],\n );\n const restoreState = React.useCallback(\n (nextState: Partial) => {\n if (nextState.sorting !== undefined) {\n table.setSorting(nextState.sorting);\n }\n if (nextState.pagination !== undefined) {\n table.setPagination(nextState.pagination);\n }\n if (nextState.rowSelection !== undefined) {\n table.setRowSelection(nextState.rowSelection);\n }\n if (nextState.columnVisibility !== undefined) {\n table.setColumnVisibility(nextState.columnVisibility);\n }\n if (nextState.columnFilters !== undefined) {\n table.setColumnFilters(nextState.columnFilters);\n }\n if (nextState.expanded !== undefined) {\n table.setExpanded(nextState.expanded);\n }\n if (nextState.columnOrder !== undefined) {\n table.setColumnOrder(nextState.columnOrder);\n }\n if (nextState.columnPinning !== undefined) {\n table.setColumnPinning(nextState.columnPinning);\n }\n if (nextState.rowPinning !== undefined) {\n table.setRowPinning(nextState.rowPinning);\n }\n if (nextState.columnSizing !== undefined) {\n table.setColumnSizing(nextState.columnSizing);\n }\n if (nextState.density !== undefined) {\n handleDensityChange(nextState.density);\n }\n if (nextState.viewMode !== undefined) {\n handleViewModeChange(nextState.viewMode);\n }\n if (nextState.showHiddenRows !== undefined) {\n handleShowHiddenRowsChange(nextState.showHiddenRows);\n }\n if (nextState.globalFilter !== undefined) {\n setLocalSearchValue(nextState.globalFilter);\n }\n },\n [\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n setLocalSearchValue,\n table,\n ],\n );\n const clearPersistedState = React.useCallback(\n () => clearDataTableColumnPrefs(persistence ?? columnPrefsKey),\n [columnPrefsKey, persistence],\n );\n const resetColumnLayout = React.useCallback<\n DataTableApi[\"resetColumnLayout\"]\n >(\n (options) => {\n if (options?.clearPersistence) {\n clearPersistedState();\n }\n restoreState({\n columnVisibility: initialState?.columnVisibility ?? {},\n columnOrder: initialState?.columnOrder ?? [],\n columnPinning:\n initialState?.columnPinning ?? getInitialColumnPinning(columns),\n rowPinning: initialState?.rowPinning ?? { top: [], bottom: [] },\n columnSizing: initialState?.columnSizing ?? {},\n });\n },\n [\n clearPersistedState,\n columns,\n initialState,\n restoreState,\n ],\n );\n const resetState = React.useCallback[\"resetState\"]>(\n (options) => {\n if (options?.clearPersistence) {\n clearPersistedState();\n }\n restoreState({\n sorting: initialState?.sorting ?? [],\n pagination: initialState?.pagination ?? {\n pageIndex: 0,\n pageSize: rowsPerPageOptions[0] ?? 20,\n },\n rowSelection: initialState?.rowSelection ?? {},\n columnVisibility: initialState?.columnVisibility ?? {},\n columnFilters: initialState?.columnFilters ?? [],\n expanded: initialState?.expanded ?? {},\n columnOrder: initialState?.columnOrder ?? [],\n columnPinning:\n initialState?.columnPinning ?? getInitialColumnPinning(columns),\n rowPinning: initialState?.rowPinning ?? { top: [], bottom: [] },\n columnSizing: initialState?.columnSizing ?? {},\n density: initialState?.density ?? \"comfortable\",\n viewMode: initialState?.viewMode ?? \"table\",\n showHiddenRows: initialState?.showHiddenRows ?? false,\n globalFilter: initialState?.globalFilter ?? \"\",\n });\n },\n [\n clearPersistedState,\n columns,\n initialState,\n restoreState,\n rowsPerPageOptions,\n ],\n );\n const getSavedViews = React.useCallback(\n () => readDataTableSavedViews(savedViews),\n [savedViews],\n );\n const createSavedView = React.useCallback<\n DataTableApi[\"createSavedView\"]\n >(\n (name) =>\n createDataTableSavedView(savedViews, name, getCurrentState()),\n [getCurrentState, savedViews],\n );\n const applySavedView = React.useCallback<\n DataTableApi[\"applySavedView\"]\n >(\n (id) => {\n const view = readDataTableSavedViews(savedViews).find(\n (candidate) => candidate.id === id,\n );\n if (!view) {\n return false;\n }\n restoreState(view.state);\n savedViews?.onApply?.(view);\n return true;\n },\n [restoreState, savedViews],\n );\n const renameSavedView = React.useCallback<\n DataTableApi[\"renameSavedView\"]\n >(\n (id, name) => renameDataTableSavedView(savedViews, id, name),\n [savedViews],\n );\n const deleteSavedView = React.useCallback<\n DataTableApi[\"deleteSavedView\"]\n >(\n (id) => deleteDataTableSavedView(savedViews, id),\n [savedViews],\n );\n const clearSavedViews = React.useCallback(\n () => clearDataTableSavedViews(savedViews),\n [savedViews],\n );\n const exportCsvFromApi = React.useCallback<\n DataTableApi[\"exportCsv\"]\n >(\n (options) =>\n exportDataTableCsv({\n csvExport: options ?? (csvExport || true),\n labels: resolvedLabels,\n table,\n }),\n [csvExport, resolvedLabels, table],\n );\n const pinRow = React.useCallback[\"pinRow\"]>(\n (rowId, position = \"top\") => {\n try {\n const row = table.getRow(rowId, true);\n if (!row.getCanPin()) {\n return false;\n }\n row.pin(position);\n return true;\n } catch {\n return false;\n }\n },\n [table],\n );\n const unpinRow = React.useCallback[\"unpinRow\"]>(\n (rowId) => {\n try {\n const row = table.getRow(rowId, true);\n if (!row.getCanPin()) {\n return false;\n }\n row.pin(false);\n return true;\n } catch {\n return false;\n }\n },\n [table],\n );\n React.useImperativeHandle(\n apiRef,\n () => ({\n getTable: () => tableRef.current,\n getState: getCurrentState,\n snapshot: getCurrentState,\n restore: restoreState,\n resetColumnLayout,\n resetState,\n clearPersistedState,\n getSavedViews,\n createSavedView,\n applySavedView,\n renameSavedView,\n deleteSavedView,\n clearSavedViews,\n pinRow,\n unpinRow,\n focus: () => {\n containerRef.current?.focus();\n },\n scrollToRow: (rowId) =>\n scrollDataTableElementIntoView(containerRef.current, \"row\", rowId),\n scrollToColumn: (columnId) =>\n scrollDataTableElementIntoView(\n containerRef.current,\n \"column\",\n columnId,\n ),\n exportCsv: exportCsvFromApi,\n }),\n [\n applySavedView,\n clearPersistedState,\n clearSavedViews,\n createSavedView,\n deleteSavedView,\n exportCsvFromApi,\n getSavedViews,\n getCurrentState,\n renameSavedView,\n resetColumnLayout,\n resetState,\n restoreState,\n pinRow,\n unpinRow,\n ],\n );\n\n return (\n \n \n {fileUpload ? (\n {\n const files = event.currentTarget.files;\n if (files?.length) {\n handleSelectedFiles(files);\n }\n event.currentTarget.value = \"\";\n }}\n />\n ) : null}\n \n \n {showToolbar ? (\n \n ) : null}\n\n \n {currentViewMode === \"card\" && cardRenderer ? (\n \n ) : (\n \n )}\n \n \n {children}\n \n \n \n \n \n );\n };\n}\n\nfunction runDataTableAction(\n action: () => void | Promise,\n context: Omit, \"error\">,\n onActionError: DataTableProps[\"onActionError\"],\n) {\n let result: void | Promise;\n try {\n result = action();\n } catch (error) {\n onActionError?.({ ...context, error });\n return;\n }\n\n void Promise.resolve(result).catch((error: unknown) => {\n onActionError?.({ ...context, error });\n });\n}\n\nfunction useDataTableStateSliceChange(\n key: K,\n onLegacyChange: ((value: DataTableState[K]) => void) | undefined,\n onStateChange: DataTableProps[\"onStateChange\"],\n) {\n const handleChange = React.useCallback(\n (value: DataTableState[K]) => {\n onLegacyChange?.(value);\n onStateChange?.((current) => ({\n ...current,\n [key]: value,\n }));\n },\n [key, onLegacyChange, onStateChange],\n );\n\n return onLegacyChange || onStateChange ? handleChange : undefined;\n}\n\nfunction useDataTableStateConflictWarnings(\n state: Partial | undefined,\n legacySlices: Record,\n) {\n const warnedSlicesRef = React.useRef(new Set());\n\n React.useEffect(() => {\n if (!state || !isDevelopmentEnvironment()) {\n return;\n }\n\n for (const key of Object.keys(legacySlices) as Array<\n keyof DataTableState\n >) {\n if (\n state[key] === undefined ||\n !legacySlices[key] ||\n warnedSlicesRef.current.has(key)\n ) {\n continue;\n }\n\n warnedSlicesRef.current.add(key);\n console.warn(\n `[data-table-pro] Both state.${key} and its legacy controlled prop were provided. The legacy prop takes precedence during the 4.x compatibility window.`,\n );\n }\n }, [legacySlices, state]);\n}\n\nfunction isDevelopmentEnvironment() {\n const nodeEnvironment = (\n globalThis as {\n process?: { env?: { NODE_ENV?: string } };\n }\n ).process?.env?.NODE_ENV;\n\n return nodeEnvironment !== \"production\";\n}\n\nfunction cloneDataTableState(state: DataTableState): DataTableState {\n return {\n sorting: state.sorting.map((item) => ({ ...item })),\n pagination: { ...state.pagination },\n rowSelection: { ...state.rowSelection },\n columnVisibility: { ...state.columnVisibility },\n columnFilters: state.columnFilters.map((item) => ({ ...item })),\n expanded:\n typeof state.expanded === \"boolean\"\n ? state.expanded\n : { ...state.expanded },\n columnOrder: [...state.columnOrder],\n columnPinning: {\n left: state.columnPinning.left\n ? [...state.columnPinning.left]\n : undefined,\n right: state.columnPinning.right\n ? [...state.columnPinning.right]\n : undefined,\n },\n rowPinning: {\n top: state.rowPinning.top ? [...state.rowPinning.top] : undefined,\n bottom: state.rowPinning.bottom ? [...state.rowPinning.bottom] : undefined,\n },\n columnSizing: { ...state.columnSizing },\n density: state.density,\n viewMode: state.viewMode,\n showHiddenRows: state.showHiddenRows,\n globalFilter: state.globalFilter,\n };\n}\n\nfunction scrollDataTableElementIntoView(\n container: HTMLDivElement | null,\n kind: \"row\" | \"column\",\n value: string,\n) {\n if (!container) {\n return false;\n }\n\n const attribute = kind === \"row\" ? \"data-row-id\" : \"data-column-id\";\n const element = Array.from(\n container.querySelectorAll(`[${attribute}]`),\n ).find((candidate) => candidate.getAttribute(attribute) === value);\n if (!element) {\n return false;\n }\n\n element.scrollIntoView?.({ block: \"nearest\", inline: \"nearest\" });\n return true;\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-5QNEI6BL.js b/dist/chunk-6PPFYQ6Q.js similarity index 96% rename from dist/chunk-5QNEI6BL.js rename to dist/chunk-6PPFYQ6Q.js index de434d4..4d5dc2a 100644 --- a/dist/chunk-5QNEI6BL.js +++ b/dist/chunk-6PPFYQ6Q.js @@ -1,2 +1,2 @@ -import {X as X$1,a as a$1,c,d,f,h,i,j,k,l,m,n,p,o,z,w,y,x,A,B,D,C,E,F,G,H,I,J,L,b,N,O,P,Q,R,T,S,U,W,q,r,s,t,u,v}from'./chunk-ERWHHOBD.js';import {a}from'./chunk-674VSOYY.js';import'react';import {jsx}from'react/jsx-runtime';function e(j,q){return function({className:J,...Q}){return jsx(j,{className:a(q,J),...Q})}}var X=e(a$1,"rounded-field border-field-border shadow-field data-[variant=default]:bg-accent data-[variant=default]:text-accent-foreground data-[variant=outline]:border-field-border data-[variant=outline]:bg-field data-[variant=outline]:hover:bg-field-hover data-[variant=secondary]:bg-default data-[variant=secondary]:text-default-foreground data-[variant=ghost]:hover:bg-default data-[variant=destructive]:bg-danger-soft data-[variant=destructive]:text-danger"),Y=e(c,"rounded-2xl border border-separator bg-surface text-surface-foreground shadow-surface ring-0"),Z=e(d,"px-5 pt-5 pb-3"),ee=e(f,"px-5 pb-5"),re=e(h,"rounded-field border-field-border bg-field ring-focus/40 data-checked:bg-accent data-checked:text-accent-foreground data-checked:ring-focus"),te=e(i,"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden **:data-[slot$=-item]:focus:bg-default **:data-[slot$=-item]:data-highlighted:bg-default **:data-[slot$=-separator]:bg-separator **:data-[slot$=-trigger]:focus:bg-default"),oe=e(j,"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground data-[variant=destructive]:text-danger data-[variant=destructive]:focus:bg-danger-soft"),ae=e(k,"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground"),ne=e(l,"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground"),de=e(m,"text-muted"),ie=e(n,"bg-separator"),le=e(p,"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden"),se=e(o,"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground data-open:bg-default data-open:text-overlay-foreground"),ue=e(z,"rounded-field border-field-border bg-field text-field-foreground shadow-field placeholder:text-field-placeholder"),ce=e(w,"rounded-field border-field-border bg-field text-field-foreground shadow-field"),be=e(y,"text-muted"),ge=e(x,"bg-transparent"),pe=e(A,"justify-end"),fe=e(B,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover data-[active=true]:bg-accent data-[active=true]:text-accent-foreground"),me=e(D,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover"),ve=e(C,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover"),xe=e(E,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover"),Pe=e(F,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover"),He=e(G,"rounded-2xl"),ye=e(H,"[&>[data-slot=scroll-area-thumb]]:bg-default-500"),he=e(I,"rounded-field border-field-border bg-field text-field-foreground shadow-field"),Ce=e(J,"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden"),Te=e(L,"rounded-xl focus:bg-default"),we=e(b,"bg-separator"),Se=e(N,"rounded-xl bg-default"),Ie=e(O,"rounded-2xl text-foreground"),De=e(P,"[&_tr]:border-separator"),Me=e(Q,""),Ee=e(R,"border-separator bg-surface-secondary"),ke=e(T,"h-11 border-separator text-muted font-semibold"),Be=e(S,"border-separator hover:bg-default data-[state=selected]:bg-accent-soft"),Ge=e(U,"py-2.5"),Ae=e(W,"rounded-xl bg-overlay text-overlay-foreground ring-1 ring-separator shadow-overlay [&>svg]:bg-overlay [&>svg]:fill-overlay"),Le=e(q,"rounded-2xl border-separator bg-surface shadow-surface"),Re=e(r,""),Ne=e(s,"[&[data-variant=icon]]:rounded-2xl [&[data-variant=icon]]:bg-accent-soft [&[data-variant=icon]]:text-accent-soft-foreground"),Fe=e(t,"text-foreground"),Ue=e(u,"text-muted"),ze=e(v,""),We={...X$1,rootClassName:"dtp-heroui",classNames:{card:"hover:bg-default data-[state=selected]:bg-accent-soft",cardGrid:"bg-transparent",cardItem:"min-w-0",cardOverlay:"from-surface/95 via-surface/85 to-transparent",cardScrollArea:"bg-transparent",cardSelected:"bg-accent-soft ring-accent",cardUnselected:"border-separator",cardViewport:"bg-transparent",cellBorder:"border-separator/70",columnGroupHeader:"bg-default/50 font-semibold",dragActive:"rounded-2xl border-dashed border-accent",emptyState:"border-separator bg-surface",footer:"border-separator bg-surface text-surface-foreground",headerSortIcon:"text-muted",mutedText:"text-muted",paginationSelectTrigger:"border-field-border bg-field",paginationTotal:"text-muted",pinnedColumn:"border-separator",pinnedUtilityColumn:"bg-surface",resizeHandle:"after:bg-separator hover:after:bg-accent",resizeHandleActive:"after:bg-accent",row:"hover:bg-default data-[state=selected]:!bg-accent-soft",rowSelected:"!bg-accent-soft",tableContainer:"border-separator bg-surface text-surface-foreground",tableScrollArea:"bg-surface",tableStickyHeader:"sticky top-0 z-30 bg-surface/95 backdrop-blur [&_th]:border-separator [&_th]:bg-surface/95",toolbarCompactIconButton:"size-7",toolbarIconButton:"text-muted hover:text-foreground",toolbarInputButton:"bg-field"},Button:X,Card:Y,CardContent:ee,CardHeader:Z,Checkbox:re,DropdownMenuCheckboxItem:ae,DropdownMenuContent:te,DropdownMenuItem:oe,DropdownMenuLabel:de,DropdownMenuRadioItem:ne,DropdownMenuSeparator:ie,DropdownMenuSubContent:le,DropdownMenuSubTrigger:se,Empty:Le,EmptyContent:ze,EmptyDescription:Ue,EmptyHeader:Re,EmptyMedia:Ne,EmptyTitle:Fe,Input:ue,InputGroup:ce,InputGroupAddon:be,InputGroupInput:ge,Pagination:pe,PaginationFirst:me,PaginationLast:Pe,PaginationLink:fe,PaginationNext:xe,PaginationPrevious:ve,ScrollArea:He,ScrollBar:ye,SelectContent:Ce,SelectItem:Te,SelectTrigger:he,Separator:we,Skeleton:Se,Table:Ie,TableBody:Me,TableCell:Ge,TableFooter:Ee,TableHead:ke,TableHeader:De,TableRow:Be,TooltipContent:Ae};export{We as a};//# sourceMappingURL=chunk-5QNEI6BL.js.map -//# sourceMappingURL=chunk-5QNEI6BL.js.map \ No newline at end of file +import {X as X$1,a as a$1,c,d,f,h,i,j,k,l,m,n,p,o,z,w,y,x,A,B,D,C,E,F,G,H,I,J,L,b,N,O,P,Q,R,T,S,U,W,q,r,s,t,u,v}from'./chunk-LDAX7PX5.js';import {a}from'./chunk-GSCYQ624.js';import'react';import {jsx}from'react/jsx-runtime';function e(j,q){return function({className:J,...Q}){return jsx(j,{className:a(q,J),...Q})}}var X=e(a$1,"rounded-field border-field-border shadow-field data-[variant=default]:bg-accent data-[variant=default]:text-accent-foreground data-[variant=outline]:border-field-border data-[variant=outline]:bg-field data-[variant=outline]:hover:bg-field-hover data-[variant=secondary]:bg-default data-[variant=secondary]:text-default-foreground data-[variant=ghost]:hover:bg-default data-[variant=destructive]:bg-danger-soft data-[variant=destructive]:text-danger"),Y=e(c,"rounded-2xl border border-separator bg-surface text-surface-foreground shadow-surface ring-0"),Z=e(d,"px-5 pt-5 pb-3"),ee=e(f,"px-5 pb-5"),re=e(h,"rounded-field border-field-border bg-field ring-focus/40 data-checked:bg-accent data-checked:text-accent-foreground data-checked:ring-focus"),te=e(i,"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden **:data-[slot$=-item]:focus:bg-default **:data-[slot$=-item]:data-highlighted:bg-default **:data-[slot$=-separator]:bg-separator **:data-[slot$=-trigger]:focus:bg-default"),oe=e(j,"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground data-[variant=destructive]:text-danger data-[variant=destructive]:focus:bg-danger-soft"),ae=e(k,"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground"),ne=e(l,"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground"),de=e(m,"text-muted"),ie=e(n,"bg-separator"),le=e(p,"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden"),se=e(o,"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground data-open:bg-default data-open:text-overlay-foreground"),ue=e(z,"rounded-field border-field-border bg-field text-field-foreground shadow-field placeholder:text-field-placeholder"),ce=e(w,"rounded-field border-field-border bg-field text-field-foreground shadow-field"),be=e(y,"text-muted"),ge=e(x,"bg-transparent"),pe=e(A,"justify-end"),fe=e(B,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover data-[active=true]:bg-accent data-[active=true]:text-accent-foreground"),me=e(D,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover"),ve=e(C,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover"),xe=e(E,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover"),Pe=e(F,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover"),He=e(G,"rounded-2xl"),ye=e(H,"[&>[data-slot=scroll-area-thumb]]:bg-default-500"),he=e(I,"rounded-field border-field-border bg-field text-field-foreground shadow-field"),Ce=e(J,"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden"),Te=e(L,"rounded-xl focus:bg-default"),we=e(b,"bg-separator"),Se=e(N,"rounded-xl bg-default"),Ie=e(O,"rounded-2xl text-foreground"),De=e(P,"[&_tr]:border-separator"),Me=e(Q,""),Ee=e(R,"border-separator bg-surface-secondary"),ke=e(T,"h-11 border-separator text-muted font-semibold"),Be=e(S,"border-separator hover:bg-default data-[state=selected]:bg-accent-soft"),Ge=e(U,"py-2.5"),Ae=e(W,"rounded-xl bg-overlay text-overlay-foreground ring-1 ring-separator shadow-overlay [&>svg]:bg-overlay [&>svg]:fill-overlay"),Le=e(q,"rounded-2xl border-separator bg-surface shadow-surface"),Re=e(r,""),Ne=e(s,"[&[data-variant=icon]]:rounded-2xl [&[data-variant=icon]]:bg-accent-soft [&[data-variant=icon]]:text-accent-soft-foreground"),Fe=e(t,"text-foreground"),Ue=e(u,"text-muted"),ze=e(v,""),We={...X$1,rootClassName:"dtp-heroui",classNames:{card:"hover:bg-default data-[state=selected]:bg-accent-soft",cardGrid:"bg-transparent",cardItem:"min-w-0",cardOverlay:"from-surface/95 via-surface/85 to-transparent",cardScrollArea:"bg-transparent",cardSelected:"bg-accent-soft ring-accent",cardUnselected:"border-separator",cardViewport:"bg-transparent",cellBorder:"border-separator/70",columnGroupHeader:"bg-default/50 font-semibold",dragActive:"rounded-2xl border-dashed border-accent",emptyState:"border-separator bg-surface",footer:"border-separator bg-surface text-surface-foreground",headerSortIcon:"text-muted",mutedText:"text-muted",paginationSelectTrigger:"border-field-border bg-field",paginationTotal:"text-muted",pinnedColumn:"border-separator",pinnedUtilityColumn:"bg-surface",resizeHandle:"after:bg-separator hover:after:bg-accent",resizeHandleActive:"after:bg-accent",row:"hover:bg-default data-[state=selected]:!bg-accent-soft",rowSelected:"!bg-accent-soft",tableContainer:"border-separator bg-surface text-surface-foreground",tableScrollArea:"bg-surface",tableStickyHeader:"sticky top-0 z-30 bg-surface/95 backdrop-blur [&_th]:border-separator [&_th]:bg-surface/95",toolbarCompactIconButton:"size-7",toolbarIconButton:"text-muted hover:text-foreground",toolbarInputButton:"bg-field"},Button:X,Card:Y,CardContent:ee,CardHeader:Z,Checkbox:re,DropdownMenuCheckboxItem:ae,DropdownMenuContent:te,DropdownMenuItem:oe,DropdownMenuLabel:de,DropdownMenuRadioItem:ne,DropdownMenuSeparator:ie,DropdownMenuSubContent:le,DropdownMenuSubTrigger:se,Empty:Le,EmptyContent:ze,EmptyDescription:Ue,EmptyHeader:Re,EmptyMedia:Ne,EmptyTitle:Fe,Input:ue,InputGroup:ce,InputGroupAddon:be,InputGroupInput:ge,Pagination:pe,PaginationFirst:me,PaginationLast:Pe,PaginationLink:fe,PaginationNext:xe,PaginationPrevious:ve,ScrollArea:He,ScrollBar:ye,SelectContent:Ce,SelectItem:Te,SelectTrigger:he,Separator:we,Skeleton:Se,Table:Ie,TableBody:Me,TableCell:Ge,TableFooter:Ee,TableHead:ke,TableHeader:De,TableRow:Be,TooltipContent:Ae};export{We as a};//# sourceMappingURL=chunk-6PPFYQ6Q.js.map +//# sourceMappingURL=chunk-6PPFYQ6Q.js.map \ No newline at end of file diff --git a/dist/chunk-5QNEI6BL.js.map b/dist/chunk-6PPFYQ6Q.js.map similarity index 99% rename from dist/chunk-5QNEI6BL.js.map rename to dist/chunk-6PPFYQ6Q.js.map index b886c1c..8ef8990 100644 --- a/dist/chunk-5QNEI6BL.js.map +++ b/dist/chunk-6PPFYQ6Q.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/adapters/heroui/index.tsx"],"names":["withClassName","Component","defaultClassName","className","props","jsx","cn","HeroButton","Button","HeroCard","Card","HeroCardHeader","CardHeader","HeroCardContent","CardContent","HeroCheckbox","Checkbox","HeroDropdownMenuContent","DropdownMenuContent","HeroDropdownMenuItem","DropdownMenuItem","HeroDropdownMenuCheckboxItem","DropdownMenuCheckboxItem","HeroDropdownMenuRadioItem","DropdownMenuRadioItem","HeroDropdownMenuLabel","DropdownMenuLabel","HeroDropdownMenuSeparator","DropdownMenuSeparator","HeroDropdownMenuSubContent","DropdownMenuSubContent","HeroDropdownMenuSubTrigger","DropdownMenuSubTrigger","HeroInput","Input","HeroInputGroup","InputGroup","HeroInputGroupAddon","InputGroupAddon","HeroInputGroupInput","InputGroupInput","HeroPagination","Pagination","HeroPaginationLink","PaginationLink","HeroPaginationFirst","PaginationFirst","HeroPaginationPrevious","PaginationPrevious","HeroPaginationNext","PaginationNext","HeroPaginationLast","PaginationLast","HeroScrollArea","ScrollArea","HeroScrollBar","ScrollBar","HeroSelectTrigger","SelectTrigger","HeroSelectContent","SelectContent","HeroSelectItem","SelectItem","HeroSeparator","Separator","HeroSkeleton","Skeleton","HeroTable","Table","HeroTableHeader","TableHeader","HeroTableBody","TableBody","HeroTableFooter","TableFooter","HeroTableHead","TableHead","HeroTableRow","TableRow","HeroTableCell","TableCell","HeroTooltipContent","TooltipContent","HeroEmpty","Empty","HeroEmptyHeader","EmptyHeader","HeroEmptyMedia","EmptyMedia","HeroEmptyTitle","EmptyTitle","HeroEmptyDescription","EmptyDescription","HeroEmptyContent","EmptyContent","heroUiKit","primitiveUiKit"],"mappings":"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","file":"chunk-5QNEI6BL.js","sourcesContent":["import * as React from \"react\";\nimport type { DataTableUiKit } from \"../../core/ui-kit\";\nimport {\n Button as PrimitiveButton,\n Card as PrimitiveCard,\n CardContent as PrimitiveCardContent,\n CardHeader as PrimitiveCardHeader,\n Checkbox as PrimitiveCheckbox,\n DropdownMenuCheckboxItem as PrimitiveDropdownMenuCheckboxItem,\n DropdownMenuContent as PrimitiveDropdownMenuContent,\n DropdownMenuItem as PrimitiveDropdownMenuItem,\n DropdownMenuLabel as PrimitiveDropdownMenuLabel,\n DropdownMenuRadioItem as PrimitiveDropdownMenuRadioItem,\n DropdownMenuSeparator as PrimitiveDropdownMenuSeparator,\n DropdownMenuSubContent as PrimitiveDropdownMenuSubContent,\n DropdownMenuSubTrigger as PrimitiveDropdownMenuSubTrigger,\n Empty as PrimitiveEmpty,\n EmptyContent as PrimitiveEmptyContent,\n EmptyDescription as PrimitiveEmptyDescription,\n EmptyHeader as PrimitiveEmptyHeader,\n EmptyMedia as PrimitiveEmptyMedia,\n EmptyTitle as PrimitiveEmptyTitle,\n Input as PrimitiveInput,\n InputGroup as PrimitiveInputGroup,\n InputGroupAddon as PrimitiveInputGroupAddon,\n InputGroupInput as PrimitiveInputGroupInput,\n Pagination as PrimitivePagination,\n PaginationFirst as PrimitivePaginationFirst,\n PaginationLast as PrimitivePaginationLast,\n PaginationLink as PrimitivePaginationLink,\n PaginationNext as PrimitivePaginationNext,\n PaginationPrevious as PrimitivePaginationPrevious,\n ScrollArea as PrimitiveScrollArea,\n ScrollBar as PrimitiveScrollBar,\n SelectContent as PrimitiveSelectContent,\n SelectItem as PrimitiveSelectItem,\n SelectTrigger as PrimitiveSelectTrigger,\n Separator as PrimitiveSeparator,\n Skeleton as PrimitiveSkeleton,\n Table as PrimitiveTable,\n TableBody as PrimitiveTableBody,\n TableCell as PrimitiveTableCell,\n TableFooter as PrimitiveTableFooter,\n TableHead as PrimitiveTableHead,\n TableHeader as PrimitiveTableHeader,\n TableRow as PrimitiveTableRow,\n TooltipContent as PrimitiveTooltipContent,\n primitiveUiKit,\n} from \"../../core/primitive-ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nfunction withClassName(\n Component: React.ComponentType,\n defaultClassName: string,\n) {\n return function Wrapped({ className, ...props }: TProps) {\n return (\n \n );\n };\n}\n\nconst HeroButton = withClassName(\n PrimitiveButton,\n \"rounded-field border-field-border shadow-field data-[variant=default]:bg-accent data-[variant=default]:text-accent-foreground data-[variant=outline]:border-field-border data-[variant=outline]:bg-field data-[variant=outline]:hover:bg-field-hover data-[variant=secondary]:bg-default data-[variant=secondary]:text-default-foreground data-[variant=ghost]:hover:bg-default data-[variant=destructive]:bg-danger-soft data-[variant=destructive]:text-danger\",\n);\nconst HeroCard = withClassName(\n PrimitiveCard,\n \"rounded-2xl border border-separator bg-surface text-surface-foreground shadow-surface ring-0\",\n);\nconst HeroCardHeader = withClassName(PrimitiveCardHeader, \"px-5 pt-5 pb-3\");\nconst HeroCardContent = withClassName(PrimitiveCardContent, \"px-5 pb-5\");\nconst HeroCheckbox = withClassName(\n PrimitiveCheckbox,\n \"rounded-field border-field-border bg-field ring-focus/40 data-checked:bg-accent data-checked:text-accent-foreground data-checked:ring-focus\",\n);\nconst HeroDropdownMenuContent = withClassName(\n PrimitiveDropdownMenuContent,\n \"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden **:data-[slot$=-item]:focus:bg-default **:data-[slot$=-item]:data-highlighted:bg-default **:data-[slot$=-separator]:bg-separator **:data-[slot$=-trigger]:focus:bg-default\",\n);\nconst HeroDropdownMenuItem = withClassName(\n PrimitiveDropdownMenuItem,\n \"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground data-[variant=destructive]:text-danger data-[variant=destructive]:focus:bg-danger-soft\",\n);\nconst HeroDropdownMenuCheckboxItem = withClassName(\n PrimitiveDropdownMenuCheckboxItem,\n \"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground\",\n);\nconst HeroDropdownMenuRadioItem = withClassName(\n PrimitiveDropdownMenuRadioItem,\n \"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground\",\n);\nconst HeroDropdownMenuLabel = withClassName(\n PrimitiveDropdownMenuLabel,\n \"text-muted\",\n);\nconst HeroDropdownMenuSeparator = withClassName(\n PrimitiveDropdownMenuSeparator,\n \"bg-separator\",\n);\nconst HeroDropdownMenuSubContent = withClassName(\n PrimitiveDropdownMenuSubContent,\n \"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden\",\n);\nconst HeroDropdownMenuSubTrigger = withClassName(\n PrimitiveDropdownMenuSubTrigger,\n \"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground data-open:bg-default data-open:text-overlay-foreground\",\n);\nconst HeroInput = withClassName(\n PrimitiveInput,\n \"rounded-field border-field-border bg-field text-field-foreground shadow-field placeholder:text-field-placeholder\",\n);\nconst HeroInputGroup = withClassName(\n PrimitiveInputGroup,\n \"rounded-field border-field-border bg-field text-field-foreground shadow-field\",\n);\nconst HeroInputGroupAddon = withClassName(\n PrimitiveInputGroupAddon,\n \"text-muted\",\n);\nconst HeroInputGroupInput = withClassName(PrimitiveInputGroupInput, \"bg-transparent\");\nconst HeroPagination = withClassName(PrimitivePagination, \"justify-end\");\nconst HeroPaginationLink = withClassName(\n PrimitivePaginationLink,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover data-[active=true]:bg-accent data-[active=true]:text-accent-foreground\",\n);\nconst HeroPaginationFirst = withClassName(\n PrimitivePaginationFirst,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover\",\n);\nconst HeroPaginationPrevious = withClassName(\n PrimitivePaginationPrevious,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover\",\n);\nconst HeroPaginationNext = withClassName(\n PrimitivePaginationNext,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover\",\n);\nconst HeroPaginationLast = withClassName(\n PrimitivePaginationLast,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover\",\n);\nconst HeroScrollArea = withClassName(PrimitiveScrollArea, \"rounded-2xl\");\nconst HeroScrollBar = withClassName(\n PrimitiveScrollBar,\n \"[&>[data-slot=scroll-area-thumb]]:bg-default-500\",\n);\nconst HeroSelectTrigger = withClassName(\n PrimitiveSelectTrigger,\n \"rounded-field border-field-border bg-field text-field-foreground shadow-field\",\n);\nconst HeroSelectContent = withClassName(\n PrimitiveSelectContent,\n \"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden\",\n);\nconst HeroSelectItem = withClassName(\n PrimitiveSelectItem,\n \"rounded-xl focus:bg-default\",\n);\nconst HeroSeparator = withClassName(PrimitiveSeparator, \"bg-separator\");\nconst HeroSkeleton = withClassName(\n PrimitiveSkeleton,\n \"rounded-xl bg-default\",\n);\nconst HeroTable = withClassName(PrimitiveTable, \"rounded-2xl text-foreground\");\nconst HeroTableHeader = withClassName(\n PrimitiveTableHeader,\n \"[&_tr]:border-separator\",\n);\nconst HeroTableBody = withClassName(PrimitiveTableBody, \"\");\nconst HeroTableFooter = withClassName(\n PrimitiveTableFooter,\n \"border-separator bg-surface-secondary\",\n);\nconst HeroTableHead = withClassName(\n PrimitiveTableHead,\n \"h-11 border-separator text-muted font-semibold\",\n);\nconst HeroTableRow = withClassName(\n PrimitiveTableRow,\n \"border-separator hover:bg-default data-[state=selected]:bg-accent-soft\",\n);\nconst HeroTableCell = withClassName(PrimitiveTableCell, \"py-2.5\");\nconst HeroTooltipContent = withClassName(\n PrimitiveTooltipContent,\n \"rounded-xl bg-overlay text-overlay-foreground ring-1 ring-separator shadow-overlay [&>svg]:bg-overlay [&>svg]:fill-overlay\",\n);\nconst HeroEmpty = withClassName(\n PrimitiveEmpty,\n \"rounded-2xl border-separator bg-surface shadow-surface\",\n);\nconst HeroEmptyHeader = withClassName(PrimitiveEmptyHeader, \"\");\nconst HeroEmptyMedia = withClassName(\n PrimitiveEmptyMedia,\n \"[&[data-variant=icon]]:rounded-2xl [&[data-variant=icon]]:bg-accent-soft [&[data-variant=icon]]:text-accent-soft-foreground\",\n);\nconst HeroEmptyTitle = withClassName(PrimitiveEmptyTitle, \"text-foreground\");\nconst HeroEmptyDescription = withClassName(\n PrimitiveEmptyDescription,\n \"text-muted\",\n);\nconst HeroEmptyContent = withClassName(PrimitiveEmptyContent, \"\");\n\nexport const heroUiKit: DataTableUiKit = {\n ...primitiveUiKit,\n rootClassName: \"dtp-heroui\",\n classNames: {\n card: \"hover:bg-default data-[state=selected]:bg-accent-soft\",\n cardGrid: \"bg-transparent\",\n cardItem: \"min-w-0\",\n cardOverlay: \"from-surface/95 via-surface/85 to-transparent\",\n cardScrollArea: \"bg-transparent\",\n cardSelected: \"bg-accent-soft ring-accent\",\n cardUnselected: \"border-separator\",\n cardViewport: \"bg-transparent\",\n cellBorder: \"border-separator/70\",\n columnGroupHeader: \"bg-default/50 font-semibold\",\n dragActive: \"rounded-2xl border-dashed border-accent\",\n emptyState: \"border-separator bg-surface\",\n footer: \"border-separator bg-surface text-surface-foreground\",\n headerSortIcon: \"text-muted\",\n mutedText: \"text-muted\",\n paginationSelectTrigger: \"border-field-border bg-field\",\n paginationTotal: \"text-muted\",\n pinnedColumn: \"border-separator\",\n pinnedUtilityColumn: \"bg-surface\",\n resizeHandle: \"after:bg-separator hover:after:bg-accent\",\n resizeHandleActive: \"after:bg-accent\",\n row: \"hover:bg-default data-[state=selected]:!bg-accent-soft\",\n rowSelected: \"!bg-accent-soft\",\n tableContainer: \"border-separator bg-surface text-surface-foreground\",\n tableScrollArea: \"bg-surface\",\n tableStickyHeader:\n \"sticky top-0 z-30 bg-surface/95 backdrop-blur [&_th]:border-separator [&_th]:bg-surface/95\",\n toolbarCompactIconButton: \"size-7\",\n toolbarIconButton: \"text-muted hover:text-foreground\",\n toolbarInputButton: \"bg-field\",\n },\n Button: HeroButton,\n Card: HeroCard,\n CardContent: HeroCardContent,\n CardHeader: HeroCardHeader,\n Checkbox: HeroCheckbox,\n DropdownMenuCheckboxItem: HeroDropdownMenuCheckboxItem,\n DropdownMenuContent: HeroDropdownMenuContent,\n DropdownMenuItem: HeroDropdownMenuItem,\n DropdownMenuLabel: HeroDropdownMenuLabel,\n DropdownMenuRadioItem: HeroDropdownMenuRadioItem,\n DropdownMenuSeparator: HeroDropdownMenuSeparator,\n DropdownMenuSubContent: HeroDropdownMenuSubContent,\n DropdownMenuSubTrigger: HeroDropdownMenuSubTrigger,\n Empty: HeroEmpty,\n EmptyContent: HeroEmptyContent,\n EmptyDescription: HeroEmptyDescription,\n EmptyHeader: HeroEmptyHeader,\n EmptyMedia: HeroEmptyMedia,\n EmptyTitle: HeroEmptyTitle,\n Input: HeroInput,\n InputGroup: HeroInputGroup,\n InputGroupAddon: HeroInputGroupAddon,\n InputGroupInput: HeroInputGroupInput,\n Pagination: HeroPagination,\n PaginationFirst: HeroPaginationFirst,\n PaginationLast: HeroPaginationLast,\n PaginationLink: HeroPaginationLink,\n PaginationNext: HeroPaginationNext,\n PaginationPrevious: HeroPaginationPrevious,\n ScrollArea: HeroScrollArea,\n ScrollBar: HeroScrollBar,\n SelectContent: HeroSelectContent,\n SelectItem: HeroSelectItem,\n SelectTrigger: HeroSelectTrigger,\n Separator: HeroSeparator,\n Skeleton: HeroSkeleton,\n Table: HeroTable,\n TableBody: HeroTableBody,\n TableCell: HeroTableCell,\n TableFooter: HeroTableFooter,\n TableHead: HeroTableHead,\n TableHeader: HeroTableHeader,\n TableRow: HeroTableRow,\n TooltipContent: HeroTooltipContent,\n};\n"]} \ No newline at end of file +{"version":3,"sources":["../src/adapters/heroui/index.tsx"],"names":["withClassName","Component","defaultClassName","className","props","jsx","cn","HeroButton","Button","HeroCard","Card","HeroCardHeader","CardHeader","HeroCardContent","CardContent","HeroCheckbox","Checkbox","HeroDropdownMenuContent","DropdownMenuContent","HeroDropdownMenuItem","DropdownMenuItem","HeroDropdownMenuCheckboxItem","DropdownMenuCheckboxItem","HeroDropdownMenuRadioItem","DropdownMenuRadioItem","HeroDropdownMenuLabel","DropdownMenuLabel","HeroDropdownMenuSeparator","DropdownMenuSeparator","HeroDropdownMenuSubContent","DropdownMenuSubContent","HeroDropdownMenuSubTrigger","DropdownMenuSubTrigger","HeroInput","Input","HeroInputGroup","InputGroup","HeroInputGroupAddon","InputGroupAddon","HeroInputGroupInput","InputGroupInput","HeroPagination","Pagination","HeroPaginationLink","PaginationLink","HeroPaginationFirst","PaginationFirst","HeroPaginationPrevious","PaginationPrevious","HeroPaginationNext","PaginationNext","HeroPaginationLast","PaginationLast","HeroScrollArea","ScrollArea","HeroScrollBar","ScrollBar","HeroSelectTrigger","SelectTrigger","HeroSelectContent","SelectContent","HeroSelectItem","SelectItem","HeroSeparator","Separator","HeroSkeleton","Skeleton","HeroTable","Table","HeroTableHeader","TableHeader","HeroTableBody","TableBody","HeroTableFooter","TableFooter","HeroTableHead","TableHead","HeroTableRow","TableRow","HeroTableCell","TableCell","HeroTooltipContent","TooltipContent","HeroEmpty","Empty","HeroEmptyHeader","EmptyHeader","HeroEmptyMedia","EmptyMedia","HeroEmptyTitle","EmptyTitle","HeroEmptyDescription","EmptyDescription","HeroEmptyContent","EmptyContent","heroUiKit","primitiveUiKit"],"mappings":"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","file":"chunk-6PPFYQ6Q.js","sourcesContent":["import * as React from \"react\";\nimport type { DataTableUiKit } from \"../../core/ui-kit\";\nimport {\n Button as PrimitiveButton,\n Card as PrimitiveCard,\n CardContent as PrimitiveCardContent,\n CardHeader as PrimitiveCardHeader,\n Checkbox as PrimitiveCheckbox,\n DropdownMenuCheckboxItem as PrimitiveDropdownMenuCheckboxItem,\n DropdownMenuContent as PrimitiveDropdownMenuContent,\n DropdownMenuItem as PrimitiveDropdownMenuItem,\n DropdownMenuLabel as PrimitiveDropdownMenuLabel,\n DropdownMenuRadioItem as PrimitiveDropdownMenuRadioItem,\n DropdownMenuSeparator as PrimitiveDropdownMenuSeparator,\n DropdownMenuSubContent as PrimitiveDropdownMenuSubContent,\n DropdownMenuSubTrigger as PrimitiveDropdownMenuSubTrigger,\n Empty as PrimitiveEmpty,\n EmptyContent as PrimitiveEmptyContent,\n EmptyDescription as PrimitiveEmptyDescription,\n EmptyHeader as PrimitiveEmptyHeader,\n EmptyMedia as PrimitiveEmptyMedia,\n EmptyTitle as PrimitiveEmptyTitle,\n Input as PrimitiveInput,\n InputGroup as PrimitiveInputGroup,\n InputGroupAddon as PrimitiveInputGroupAddon,\n InputGroupInput as PrimitiveInputGroupInput,\n Pagination as PrimitivePagination,\n PaginationFirst as PrimitivePaginationFirst,\n PaginationLast as PrimitivePaginationLast,\n PaginationLink as PrimitivePaginationLink,\n PaginationNext as PrimitivePaginationNext,\n PaginationPrevious as PrimitivePaginationPrevious,\n ScrollArea as PrimitiveScrollArea,\n ScrollBar as PrimitiveScrollBar,\n SelectContent as PrimitiveSelectContent,\n SelectItem as PrimitiveSelectItem,\n SelectTrigger as PrimitiveSelectTrigger,\n Separator as PrimitiveSeparator,\n Skeleton as PrimitiveSkeleton,\n Table as PrimitiveTable,\n TableBody as PrimitiveTableBody,\n TableCell as PrimitiveTableCell,\n TableFooter as PrimitiveTableFooter,\n TableHead as PrimitiveTableHead,\n TableHeader as PrimitiveTableHeader,\n TableRow as PrimitiveTableRow,\n TooltipContent as PrimitiveTooltipContent,\n primitiveUiKit,\n} from \"../../core/primitive-ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nfunction withClassName(\n Component: React.ComponentType,\n defaultClassName: string,\n) {\n return function Wrapped({ className, ...props }: TProps) {\n return (\n \n );\n };\n}\n\nconst HeroButton = withClassName(\n PrimitiveButton,\n \"rounded-field border-field-border shadow-field data-[variant=default]:bg-accent data-[variant=default]:text-accent-foreground data-[variant=outline]:border-field-border data-[variant=outline]:bg-field data-[variant=outline]:hover:bg-field-hover data-[variant=secondary]:bg-default data-[variant=secondary]:text-default-foreground data-[variant=ghost]:hover:bg-default data-[variant=destructive]:bg-danger-soft data-[variant=destructive]:text-danger\",\n);\nconst HeroCard = withClassName(\n PrimitiveCard,\n \"rounded-2xl border border-separator bg-surface text-surface-foreground shadow-surface ring-0\",\n);\nconst HeroCardHeader = withClassName(PrimitiveCardHeader, \"px-5 pt-5 pb-3\");\nconst HeroCardContent = withClassName(PrimitiveCardContent, \"px-5 pb-5\");\nconst HeroCheckbox = withClassName(\n PrimitiveCheckbox,\n \"rounded-field border-field-border bg-field ring-focus/40 data-checked:bg-accent data-checked:text-accent-foreground data-checked:ring-focus\",\n);\nconst HeroDropdownMenuContent = withClassName(\n PrimitiveDropdownMenuContent,\n \"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden **:data-[slot$=-item]:focus:bg-default **:data-[slot$=-item]:data-highlighted:bg-default **:data-[slot$=-separator]:bg-separator **:data-[slot$=-trigger]:focus:bg-default\",\n);\nconst HeroDropdownMenuItem = withClassName(\n PrimitiveDropdownMenuItem,\n \"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground data-[variant=destructive]:text-danger data-[variant=destructive]:focus:bg-danger-soft\",\n);\nconst HeroDropdownMenuCheckboxItem = withClassName(\n PrimitiveDropdownMenuCheckboxItem,\n \"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground\",\n);\nconst HeroDropdownMenuRadioItem = withClassName(\n PrimitiveDropdownMenuRadioItem,\n \"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground\",\n);\nconst HeroDropdownMenuLabel = withClassName(\n PrimitiveDropdownMenuLabel,\n \"text-muted\",\n);\nconst HeroDropdownMenuSeparator = withClassName(\n PrimitiveDropdownMenuSeparator,\n \"bg-separator\",\n);\nconst HeroDropdownMenuSubContent = withClassName(\n PrimitiveDropdownMenuSubContent,\n \"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden\",\n);\nconst HeroDropdownMenuSubTrigger = withClassName(\n PrimitiveDropdownMenuSubTrigger,\n \"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground data-open:bg-default data-open:text-overlay-foreground\",\n);\nconst HeroInput = withClassName(\n PrimitiveInput,\n \"rounded-field border-field-border bg-field text-field-foreground shadow-field placeholder:text-field-placeholder\",\n);\nconst HeroInputGroup = withClassName(\n PrimitiveInputGroup,\n \"rounded-field border-field-border bg-field text-field-foreground shadow-field\",\n);\nconst HeroInputGroupAddon = withClassName(\n PrimitiveInputGroupAddon,\n \"text-muted\",\n);\nconst HeroInputGroupInput = withClassName(PrimitiveInputGroupInput, \"bg-transparent\");\nconst HeroPagination = withClassName(PrimitivePagination, \"justify-end\");\nconst HeroPaginationLink = withClassName(\n PrimitivePaginationLink,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover data-[active=true]:bg-accent data-[active=true]:text-accent-foreground\",\n);\nconst HeroPaginationFirst = withClassName(\n PrimitivePaginationFirst,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover\",\n);\nconst HeroPaginationPrevious = withClassName(\n PrimitivePaginationPrevious,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover\",\n);\nconst HeroPaginationNext = withClassName(\n PrimitivePaginationNext,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover\",\n);\nconst HeroPaginationLast = withClassName(\n PrimitivePaginationLast,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover\",\n);\nconst HeroScrollArea = withClassName(PrimitiveScrollArea, \"rounded-2xl\");\nconst HeroScrollBar = withClassName(\n PrimitiveScrollBar,\n \"[&>[data-slot=scroll-area-thumb]]:bg-default-500\",\n);\nconst HeroSelectTrigger = withClassName(\n PrimitiveSelectTrigger,\n \"rounded-field border-field-border bg-field text-field-foreground shadow-field\",\n);\nconst HeroSelectContent = withClassName(\n PrimitiveSelectContent,\n \"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden\",\n);\nconst HeroSelectItem = withClassName(\n PrimitiveSelectItem,\n \"rounded-xl focus:bg-default\",\n);\nconst HeroSeparator = withClassName(PrimitiveSeparator, \"bg-separator\");\nconst HeroSkeleton = withClassName(\n PrimitiveSkeleton,\n \"rounded-xl bg-default\",\n);\nconst HeroTable = withClassName(PrimitiveTable, \"rounded-2xl text-foreground\");\nconst HeroTableHeader = withClassName(\n PrimitiveTableHeader,\n \"[&_tr]:border-separator\",\n);\nconst HeroTableBody = withClassName(PrimitiveTableBody, \"\");\nconst HeroTableFooter = withClassName(\n PrimitiveTableFooter,\n \"border-separator bg-surface-secondary\",\n);\nconst HeroTableHead = withClassName(\n PrimitiveTableHead,\n \"h-11 border-separator text-muted font-semibold\",\n);\nconst HeroTableRow = withClassName(\n PrimitiveTableRow,\n \"border-separator hover:bg-default data-[state=selected]:bg-accent-soft\",\n);\nconst HeroTableCell = withClassName(PrimitiveTableCell, \"py-2.5\");\nconst HeroTooltipContent = withClassName(\n PrimitiveTooltipContent,\n \"rounded-xl bg-overlay text-overlay-foreground ring-1 ring-separator shadow-overlay [&>svg]:bg-overlay [&>svg]:fill-overlay\",\n);\nconst HeroEmpty = withClassName(\n PrimitiveEmpty,\n \"rounded-2xl border-separator bg-surface shadow-surface\",\n);\nconst HeroEmptyHeader = withClassName(PrimitiveEmptyHeader, \"\");\nconst HeroEmptyMedia = withClassName(\n PrimitiveEmptyMedia,\n \"[&[data-variant=icon]]:rounded-2xl [&[data-variant=icon]]:bg-accent-soft [&[data-variant=icon]]:text-accent-soft-foreground\",\n);\nconst HeroEmptyTitle = withClassName(PrimitiveEmptyTitle, \"text-foreground\");\nconst HeroEmptyDescription = withClassName(\n PrimitiveEmptyDescription,\n \"text-muted\",\n);\nconst HeroEmptyContent = withClassName(PrimitiveEmptyContent, \"\");\n\nexport const heroUiKit: DataTableUiKit = {\n ...primitiveUiKit,\n rootClassName: \"dtp-heroui\",\n classNames: {\n card: \"hover:bg-default data-[state=selected]:bg-accent-soft\",\n cardGrid: \"bg-transparent\",\n cardItem: \"min-w-0\",\n cardOverlay: \"from-surface/95 via-surface/85 to-transparent\",\n cardScrollArea: \"bg-transparent\",\n cardSelected: \"bg-accent-soft ring-accent\",\n cardUnselected: \"border-separator\",\n cardViewport: \"bg-transparent\",\n cellBorder: \"border-separator/70\",\n columnGroupHeader: \"bg-default/50 font-semibold\",\n dragActive: \"rounded-2xl border-dashed border-accent\",\n emptyState: \"border-separator bg-surface\",\n footer: \"border-separator bg-surface text-surface-foreground\",\n headerSortIcon: \"text-muted\",\n mutedText: \"text-muted\",\n paginationSelectTrigger: \"border-field-border bg-field\",\n paginationTotal: \"text-muted\",\n pinnedColumn: \"border-separator\",\n pinnedUtilityColumn: \"bg-surface\",\n resizeHandle: \"after:bg-separator hover:after:bg-accent\",\n resizeHandleActive: \"after:bg-accent\",\n row: \"hover:bg-default data-[state=selected]:!bg-accent-soft\",\n rowSelected: \"!bg-accent-soft\",\n tableContainer: \"border-separator bg-surface text-surface-foreground\",\n tableScrollArea: \"bg-surface\",\n tableStickyHeader:\n \"sticky top-0 z-30 bg-surface/95 backdrop-blur [&_th]:border-separator [&_th]:bg-surface/95\",\n toolbarCompactIconButton: \"size-7\",\n toolbarIconButton: \"text-muted hover:text-foreground\",\n toolbarInputButton: \"bg-field\",\n },\n Button: HeroButton,\n Card: HeroCard,\n CardContent: HeroCardContent,\n CardHeader: HeroCardHeader,\n Checkbox: HeroCheckbox,\n DropdownMenuCheckboxItem: HeroDropdownMenuCheckboxItem,\n DropdownMenuContent: HeroDropdownMenuContent,\n DropdownMenuItem: HeroDropdownMenuItem,\n DropdownMenuLabel: HeroDropdownMenuLabel,\n DropdownMenuRadioItem: HeroDropdownMenuRadioItem,\n DropdownMenuSeparator: HeroDropdownMenuSeparator,\n DropdownMenuSubContent: HeroDropdownMenuSubContent,\n DropdownMenuSubTrigger: HeroDropdownMenuSubTrigger,\n Empty: HeroEmpty,\n EmptyContent: HeroEmptyContent,\n EmptyDescription: HeroEmptyDescription,\n EmptyHeader: HeroEmptyHeader,\n EmptyMedia: HeroEmptyMedia,\n EmptyTitle: HeroEmptyTitle,\n Input: HeroInput,\n InputGroup: HeroInputGroup,\n InputGroupAddon: HeroInputGroupAddon,\n InputGroupInput: HeroInputGroupInput,\n Pagination: HeroPagination,\n PaginationFirst: HeroPaginationFirst,\n PaginationLast: HeroPaginationLast,\n PaginationLink: HeroPaginationLink,\n PaginationNext: HeroPaginationNext,\n PaginationPrevious: HeroPaginationPrevious,\n ScrollArea: HeroScrollArea,\n ScrollBar: HeroScrollBar,\n SelectContent: HeroSelectContent,\n SelectItem: HeroSelectItem,\n SelectTrigger: HeroSelectTrigger,\n Separator: HeroSeparator,\n Skeleton: HeroSkeleton,\n Table: HeroTable,\n TableBody: HeroTableBody,\n TableCell: HeroTableCell,\n TableFooter: HeroTableFooter,\n TableHead: HeroTableHead,\n TableHeader: HeroTableHeader,\n TableRow: HeroTableRow,\n TooltipContent: HeroTooltipContent,\n};\n"]} \ No newline at end of file diff --git a/dist/chunk-BYTOUBQ7.js b/dist/chunk-BYTOUBQ7.js new file mode 100644 index 0000000..938688c --- /dev/null +++ b/dist/chunk-BYTOUBQ7.js @@ -0,0 +1,3 @@ +import {i,a,h,g}from'./chunk-GSCYQ624.js';import*as M from'react';import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {flexRender}from'@tanstack/react-table';var Me=Symbol("data-table-loading-row"),Bt=50;function Gt(e,t,a){if(e===true)return Object.fromEntries(a.flatMap(n=>n===t?[]:[[n,true]]));let r={...e};return r[t]?delete r[t]:r[t]=true,r}function Ft(e){return Array.from({length:e},(t,a)=>({[Me]:true,index:a}))}function se(e){return !!(e&&typeof e=="object"&&Me in e)}function Wt(e){return `__loading__${e}`}function jt(e){if(typeof e.meta?.minWidth=="number")return e.meta.minWidth;if(Object.prototype.hasOwnProperty.call(e,"minSize")){let t=e.minSize;if(typeof t=="number")return t}}function rt(e){if("columns"in e&&Array.isArray(e.columns))return {...e,columns:e.columns.map(a=>rt(a))};let t=e.meta?.filter;return !t||e.filterFn?e:{...e,filterFn:(a,r,n)=>{if(!Pe(n))return true;let l=a.getValue(r),s=t.getOptionValue?.(l,a.original)??ee(l);if(t.type==="multi")return Array.isArray(n)?n.map(String).includes(s):true;if(t.type==="select"||t.type==="boolean")return s===String(n);if(t.type==="numberRange"){let d=Le(n),p=Number(s),c=d.from===""?void 0:Number(d.from),w=d.to===""?void 0:Number(d.to);return Number.isNaN(p)?false:(c===void 0||Number.isNaN(c)||p>=c)&&(w===void 0||Number.isNaN(w)||p<=w)}if(t.type==="dateRange"){let d=Le(n),p=lt(s);return p?(!d.from||p>=String(d.from))&&(!d.to||p<=String(d.to)):false}let o=s.toLowerCase(),C=String(n).toLowerCase();switch(t.operator??"contains"){case "equals":return o===C;case "startsWith":return o.startsWith(C);case "endsWith":return o.endsWith(C);default:return o.includes(C)}}}}function $t(e){let t=new Map,a=(r,n)=>{r.forEach((l,s)=>{if("columns"in l&&l.columns?.length){let o=l;a(l.columns,[...n,{id:ie(l),freeReordering:o.freeReordering===true}]);return}t.set(ie(l),n);});};return a(e,[]),t}function qt(e,t,a){let r=a.get(e)??[],n=a.get(t)??[],l=0;for(;ls.freeReordering)}function Te(e){let t=[],a=r=>{r.forEach((n,l)=>{if("columns"in n&&n.columns?.length){a(n.columns);return}t.push({column:n,index:l});});};return a(e),t}function Xt(e){return e.map(t=>typeof t=="string"?{label:He(t),value:t}:t)}function ee(e){if(e==null)return "";if(e instanceof Date)return e.toISOString();if(typeof e=="object")try{return JSON.stringify(e)}catch{return ""}return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint"||typeof e=="symbol"?String(e):""}function Pe(e){return Array.isArray(e)?e.length>0:e&&typeof e=="object"?"from"in e||"to"in e?Object.values(e).some(Pe):true:e!=null&&e!==""}function Le(e){if(!e||typeof e!="object"||Array.isArray(e))return {};let t=e;return {...typeof t.from=="string"||typeof t.from=="number"?{from:t.from}:{},...typeof t.to=="string"||typeof t.to=="number"?{to:t.to}:{}}}function lt(e){if(e instanceof Date&&!Number.isNaN(e.getTime()))return e.toISOString().slice(0,10);let t=ee(e);if(/^\d{4}-\d{2}-\d{2}/.test(t))return t.slice(0,10);let a=Date.parse(t);return Number.isNaN(a)?"":new Date(a).toISOString().slice(0,10)}function Jt(e,t,a){let r=ee(a).trim().toLowerCase();return r?ee(e.getValue(t)).toLowerCase().includes(r):true}async function Qt({csvExport:e,table:t}){if(e===false)return;let a=e===true?{}:e,r=a.filename??"data-table.csv",n=a.scope??"filtered",l=a.columns?new Set(a.columns):void 0,s=t.getVisibleLeafColumns().filter(m=>!Ce(m.id)&&m.id!=="__spacer__"&&(!l||l.has(m.id))),o=it(t,n),C=[];(a.includeHeaders??true)&&C.push(s.map(m=>typeof m.columnDef.header=="string"?m.columnDef.header:He(m.id)));for(let m of o)C.push(s.map(S=>{let P=m.getValue(S.id);return a.getCellValue?a.getCellValue({row:m.original,rowId:m.id,columnId:S.id,value:P}):P}));let d=a.lineEnding??`\r +`,p=a.escapeFormulaValues??true,c=C.map(m=>m.map(S=>st(S,p)).join(",")).join(d);if(a.onExport){await a.onExport({csv:c,filename:r,rows:o.map(m=>m.original),scope:n});return}if(typeof window>"u")return;let w=new Blob([c],{type:"text/csv;charset=utf-8"}),y=window.URL.createObjectURL(w),I=window.document.createElement("a");I.href=y,I.download=r,I.click(),window.URL.revokeObjectURL(y);}function it(e,t){switch(t){case "page":return e.getRowModel().rows;case "selected":return e.getPrePaginationRowModel().rows.filter(a=>a.getIsSelected());case "all":return e.getCoreRowModel().rows;default:return e.getPrePaginationRowModel().rows}}function st(e,t){let a=ee(e);return t&&typeof e=="string"&&/^[\t\r ]*[=+\-@]/.test(e)&&(a=`'${a}`),/[",\n\r]/.test(a)?`"${a.replace(/"/g,'""')}"`:a}function Zt(e){let t=[],a=[];for(let{column:r,index:n}of Te(e)){let l=ie(r);r.meta?.fixed==="left"&&t.push(l),r.meta?.fixed==="right"&&a.push(l);}return {left:t,right:a}}function ie(e,t){if(e.id)return e.id;let a=ct(e);if(a)return a.replace(/\./g,"_");if(typeof e.header=="string")return e.header;throw new Error("Data table columns using an accessor function or non-string header must define a unique id.")}var dt=new Set(["__select__","__expand__","__actions__","__spacer__"]);function Yt(e){let t=new Set,a=r=>{r.forEach((n,l)=>{let s=ie(n);if(dt.has(s))throw new Error(`Data table column id "${s}" is reserved for an internal column.`);if(t.has(s))throw new Error(`Duplicate data table column id "${s}".`);t.add(s),"columns"in n&&n.columns?.length&&a(n.columns);});};a(e);}function ct(e){if("accessorKey"in e&&typeof e.accessorKey=="string")return e.accessorKey}function ea(e){let t=e.getIsPinned();return t||(e.id==="__select__"||e.id==="__expand__"?"left":e.id==="__actions__"?"right":e.columnDef.meta?.fixed)}function ta(e,t,a$1){let r=a$1?.isUtilityColumn??false;return a("sticky backdrop-blur box-border",t.pinnedColumn,!r&&"border-dotted",r?t.pinnedUtilityColumn:void 0,e==="left"?"border-r-1":"border-l")}function Ce(e){return e==="__select__"||e==="__expand__"||e==="__actions__"}var ut=["[data-row-click-ignore='true']","a[href]","button","input","select","summary","textarea","[contenteditable='true']","[role='button']","[role='link']"].join(",");function ye(e,t){if(!(e instanceof Element))return false;let a=e.closest(ut);return !!(a&&a!==t&&t.contains(a))}function Ne(e){switch(e){case "compact":return "h-8 py-1";case "spacious":return "h-14 py-4";default:return}}function he(e){switch(e){case "compact":return "py-1.5";case "spacious":return "py-4";default:return}}function aa(e,t,a){let r=e.includes(t)?e.slice():[...e,t],n=r.indexOf(t),l=r.indexOf(a);if(n<0||l<0||n===l)return r;let[s]=r.splice(n,1);return r.splice(l,0,s),r}function He(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,t=>t.toUpperCase())}function ra({columns:e,editableRows:t,onError:a}){let[r,n]=M.useState(null),[l,s]=M.useState({}),o=M.useRef(l),[C,d]=M.useState(false);M.useEffect(()=>{o.current=l;},[l]);let p=M.useCallback(()=>{n(null),s({});},[]),c=M.useCallback((y,I)=>{let m=t?.getInitialValues?.(y)??mt(y,e);s(m),n(I);},[e,t]),w=M.useCallback(async y=>{if(t){d(true);try{await t.onSaveRow(y,o.current),M.startTransition(p);}catch(I){a?.(I,y);}finally{d(false);}}},[p,t,a]);return {cancelEditing:p,draftValues:l,editingRowId:r,isSavingEdit:C,saveEdit:w,setDraftValues:s,setEditingRowId:n,startEditingRow:c}}function mt(e,t){return Te(t).reduce((a,{column:r})=>("accessorKey"in r&&typeof r.accessorKey=="string"&&(a[r.accessorKey]=e[r.accessorKey]),a),{})}function _e(e,t,a,r){let{Checkbox:n,Input:l}=r,s=e.column.columnDef,o=s.meta,C="accessorKey"in s&&typeof s.accessorKey=="string"?s.accessorKey:e.column.id,d=t[C],p=w=>{a(y=>({...y,[C]:w}));};if(o?.renderEditCell)return o.renderEditCell({cell:e,row:e.row.original,value:e.getValue(),draftValue:d,setDraftValue:p});let c=ft(o?.type,d);return typeof d=="boolean"?jsx(n,{checked:d,onCheckedChange:w=>{p(w===true);}}):jsx(l,{type:c,value:o?.formatEditValue?o.formatEditValue(d,e):pt(d,c),onChange:w=>{let y=w.target.value,I=o?.parseEditValue?o.parseEditValue(y,e):bt(y,c,d);p(I);}})}function ft(e,t){return e==="numeric"||typeof t=="number"?"number":e==="date"||t instanceof Date?"datetime-local":"text"}function pt(e,t="text"){return e==null?"":e instanceof Date?t==="datetime-local"?e.toISOString().slice(0,16):e.toISOString():typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint"?String(e):""}function bt(e,t,a){return t==="number"?e===""?null:Number(e):t==="datetime-local"?e?a instanceof Date?new Date(e):e:null:e}function R({children:e,viewBox:t="0 0 24 24",...a}){return jsx("svg",{"aria-hidden":"true",focusable:"false",width:"1em",height:"1em",viewBox:t,fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",...a,children:e})}function da(e){return jsxs(R,{...e,children:[jsx("path",{d:"M4 7h4"}),jsx("path",{d:"M14 7h6"}),jsx("path",{d:"M10 5v4"}),jsx("path",{d:"M4 17h10"}),jsx("path",{d:"M18 17h2"}),jsx("path",{d:"M16 15v4"})]})}function ca(e){return jsx(R,{...e,children:jsx("path",{d:"M5 12l4 4L19 6"})})}function ze(e){return jsx(R,{...e,children:jsx("path",{d:"M6 9l6 6 6-6"})})}function ua(e){return jsx(R,{...e,children:jsx("path",{d:"M15 6l-6 6 6 6"})})}function ma(e){return jsx(R,{...e,children:jsx("path",{d:"M9 6l6 6-6 6"})})}function fa(e){return jsx(R,{...e,children:jsx("path",{d:"M6 15l6-6 6 6"})})}function pa(e){return jsxs(R,{...e,children:[jsx("path",{d:"M11 6l-6 6 6 6"}),jsx("path",{d:"M19 6l-6 6 6 6"})]})}function ba(e){return jsxs(R,{...e,children:[jsx("path",{d:"M5 6l6 6-6 6"}),jsx("path",{d:"M13 6l6 6-6 6"})]})}function Ue(e){return jsxs(R,{...e,children:[jsx("circle",{cx:"12",cy:"12",r:"9"}),jsx("path",{d:"M12 7v5l3 2"})]})}function Da(e){return jsxs(R,{...e,children:[jsx("ellipse",{cx:"12",cy:"5",rx:"7",ry:"3"}),jsx("path",{d:"M5 5v6c0 1.7 3.1 3 7 3s7-1.3 7-3V5"}),jsx("path",{d:"M5 11v6c0 1.7 3.1 3 7 3s7-1.3 7-3v-6"})]})}function ga(e){return jsxs(R,{...e,children:[jsx("path",{d:"M5 12h.01"}),jsx("path",{d:"M12 12h.01"}),jsx("path",{d:"M19 12h.01"})]})}function Ta(e){return jsxs(R,{...e,children:[jsx("path",{d:"M12 3v12"}),jsx("path",{d:"M7 10l5 5 5-5"}),jsx("path",{d:"M5 21h14"})]})}function Ca(e){return jsxs(R,{...e,children:[jsx("path",{d:"M4 20h4l11-11-4-4L4 16v4z"}),jsx("path",{d:"M13 7l4 4"})]})}function ya(e){return jsxs(R,{...e,children:[jsx("path",{d:"M2 12s4-7 10-7 10 7 10 7-4 7-10 7S2 12 2 12z"}),jsx("circle",{cx:"12",cy:"12",r:"3"})]})}function ha(e){return jsxs(R,{...e,children:[jsx("path",{d:"M3 3l18 18"}),jsx("path",{d:"M10.6 10.6a2 2 0 0 0 2.8 2.8"}),jsx("path",{d:"M9.9 5.3A10.5 10.5 0 0 1 12 5c6 0 10 7 10 7a18 18 0 0 1-3.2 4"}),jsx("path",{d:"M6.6 6.6C3.8 8.4 2 12 2 12s4 7 10 7a10.6 10.6 0 0 0 4.1-.8"})]})}function wa(e){return jsxs(R,{...e,children:[jsx("path",{d:"M4 13l2-8h12l2 8"}),jsx("path",{d:"M4 13h5l2 3h2l2-3h5v6H4z"})]})}function Sa(e){return jsxs(R,{...e,children:[jsx("path",{d:"M4 4h6v6H4z"}),jsx("path",{d:"M14 4h6v6h-6z"}),jsx("path",{d:"M4 14h6v6H4z"}),jsx("path",{d:"M14 14h6v6h-6z"})]})}function Ra(e){return jsxs(R,{...e,children:[jsx("path",{d:"M8 6h13"}),jsx("path",{d:"M8 12h13"}),jsx("path",{d:"M8 18h13"}),jsx("path",{d:"M3 6h.01"}),jsx("path",{d:"M3 12h.01"}),jsx("path",{d:"M3 18h.01"})]})}function Ia(e){return jsxs(R,{...e,children:[jsx("circle",{cx:"11",cy:"11",r:"7"}),jsx("path",{d:"M16 16l5 5"})]})}function Ve(e){return jsxs(R,{...e,children:[jsx("path",{d:"M8 9l4-4 4 4"}),jsx("path",{d:"M16 15l-4 4-4-4"})]})}function ka(e){return jsxs(R,{...e,children:[jsx("path",{d:"M18 6L6 18"}),jsx("path",{d:"M6 6l12 12"})]})}function Ke(e,t,a$1){let r=e.column.columnDef,n=r.meta,l=e.getValue(),s=a$1?.hasCustomCell??false,o=s&&r.cell?flexRender(r.cell,e):void 0,C=Tt(o),d=gt({context:e,useCustomOverflowDefaults:a$1?.useCustomOverflowDefaults??false,value:l});if(n?.type==="date"&&!s)return jsxs("div",{"data-dtp-slot":"data-table-cell-content","data-dtp-overflow":d,className:a(Oe(d),"flex w-full min-w-0 items-center justify-end gap-2"),children:[jsx(Ue,{className:a("shrink-0",t?.mutedText??"opacity-70")}),jsx("span",{className:"min-w-0 truncate",children:Ct(l)})]});let p=o!=null&&o!==""?o:l==null||l===""?jsx("span",{className:t?.mutedText??"opacity-70",children:"-"}):yt(l);return jsx("div",{"data-dtp-slot":"data-table-cell-content","data-dtp-overflow":d,className:a(Oe(d),"w-full min-w-0 max-w-full",C&&"[&>*]:max-w-full [&>*]:min-w-0"),children:p})}function gt({context:e,useCustomOverflowDefaults:t,value:a}){let r=e.column.columnDef,n=typeof r.meta?.overflow=="function"?r.meta.overflow({row:e.row.original,value:a}):r.meta?.overflow;return n||(t?"clip":"truncate")}function Oe(e){switch(e){case "clip":return "block overflow-hidden whitespace-nowrap";case "wrap":return "block overflow-hidden whitespace-normal break-words";case "visible":return "block overflow-visible whitespace-normal";default:return "block overflow-hidden text-ellipsis whitespace-nowrap"}}function Tt(e){return e==null?false:M.isValidElement(e)||Array.isArray(e)||typeof e=="object"}function Ct(e){return typeof e=="number"?new Date(e*1e3).toLocaleString():typeof e=="string"&&e?e:"-"}function yt(e){if(e instanceof Date)return e.toLocaleString();if(typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint")return String(e);try{return JSON.stringify(e)}catch{return "-"}}function wt({columnLayouts:e,components:t,currentDensity:a$1,draftValues:r,dragAndDrop:n,explicitCustomCellColumnIds:l,getRowClassName:s,isDraggable:o,isDetailExpanded:C,isEditing:d,isExpanded:p,isInitialLoadingRow:c,isSelected:w,loadingState:y,onRowClick:I,pinnedPosition:m,originalRow:S,detailPanel:P,row:D,rowIndex:x,setDraftValues:V,stripedRows:_,uiClassNames:L,visibleCells:N,visibleLeafColumnCount:F}){let{Checkbox:u,Input:k,Skeleton:O,TableCell:z,TableRow:U}=t,W=N.find(f=>!e.get(f.column.id)?.isUtilityColumn)?.column.id;return jsxs(M.Fragment,{children:[jsx(U,{"data-row-id":D.id,"data-tree-depth":!c&&D.depth>0?D.depth:void 0,"data-dtp-slot":m?"data-table-pinned-row":"data-table-row","data-row-pinned":m,draggable:c?false:o,"data-loading":y?.isLoading||void 0,"data-row-index":c?void 0:x,"data-row-parity":_&&!c?x%2===0?"odd":"even":void 0,"data-state":c?void 0:w?"selected":void 0,tabIndex:I&&!c?0:void 0,className:a(!c&&s?.(S,{row:S,rowId:D.id,rowIndex:x,isEditing:d,isExpanded:p,isLoading:!!y?.isLoading,isSelected:w,pinnedPosition:m??false}),L.row,m==="top"&&a("border-b-2",L.rowPinnedTop),m==="bottom"&&a("border-t-2",L.rowPinnedBottom),_&&!c&&(x%2===0?L.rowOdd:L.rowEven),w&&!c&&L.rowSelected,I&&!c&&"cursor-pointer",c&&"pointer-events-none"),onClick:f=>{c||ye(f.target,f.currentTarget)||I?.({row:S,rowId:D.id});},onKeyDown:f=>{c||!I||f.key!=="Enter"&&f.key!==" "||ye(f.target,f.currentTarget)||(f.preventDefault(),I({row:S,rowId:D.id}));},onDragStart:f=>{c||n?.onRowDragStart?.({row:S,rowId:D.id,event:f});},onDragEnd:f=>{c||n?.onRowDragEnd?.({row:S,rowId:D.id,event:f});},children:N.map(f=>{let H=f.column.columnDef.meta,j=f.getContext(),K=f.getValue(),A=e.get(f.column.id),J=A?.isSelectionColumn??false,Q=A?.isExpansionColumn??false,Z=A?.isActionsColumn??false,te=A?.isSpacerColumn??false,me=i(H?.hideOn),fe=c||se(S)?void 0:typeof H?.cellClassName=="function"?H.cellClassName({row:S,value:K}):H?.cellClassName;return jsx(z,{className:a("border-b",he(a$1),L.cellBorder,A?.utilityClassName,A?.isSpacerColumn&&"border-b-0 bg-transparent p-0",A?.pinnedClassName,me,h(j),H?.responsiveClassName,fe),style:A?.cellStyle,children:jsx("div",{"data-row-click-ignore":J||Q||Z?"true":void 0,className:"min-w-0 max-w-full",style:D.depth>0&&f.column.id===W?{paddingInlineStart:`${D.depth}rem`}:void 0,children:y?.isLoading?H?.skeleton?.(j)??y.skeleton??jsx(O,{className:a("h-4 rounded",H?.type==="numeric"?"ml-auto w-16":H?.type==="date"?"ml-auto w-28":"w-full")}):d&&f.column.id!=="__select__"&&f.column.id!=="__expand__"&&f.column.id!=="__actions__"?_e(j,r,V,{Checkbox:u,Input:k}):Ke(j,L,{hasCustomCell:l.has(f.column.id)||J||Q||Z||te,useCustomOverflowDefaults:l.has(f.column.id)||J||Q||Z||te})})},f.id)})}),!c&&P&&C?jsx(U,{"data-dtp-slot":"data-table-detail-panel-row","data-row-pinned":m,children:jsx(z,{colSpan:Math.max(1,F),className:a("border-b",he(a$1),L.cellBorder),children:P.render({row:S,rowId:D.id,tableRow:D})})}):null]})}function St(e,t){return e.row.id===t.row.id&&e.row.original===t.row.original&&e.rowIndex===t.rowIndex&&e.isSelected===t.isSelected&&e.isInitialLoadingRow===t.isInitialLoadingRow&&e.isEditing===t.isEditing&&e.isExpanded===t.isExpanded&&e.isDraggable===t.isDraggable&&Rt(e.loadingState,t.loadingState)&&It(e.visibleCells,t.visibleCells)&&e.components===t.components&&kt(e.columnLayouts,t.columnLayouts,t.visibleCells)&&e.currentDensity===t.currentDensity&&e.detailPanel===t.detailPanel&&e.isDetailExpanded===t.isDetailExpanded&&e.pinnedPosition===t.pinnedPosition&&e.onRowClick===t.onRowClick&&e.dragAndDrop===t.dragAndDrop&&e.getRowClassName===t.getRowClassName&&e.stripedRows===t.stripedRows&&e.uiClassNames===t.uiClassNames&&e.explicitCustomCellColumnIds===t.explicitCustomCellColumnIds&&(!e.isEditing||e.draftValues===t.draftValues)}function Rt(e,t){return e?.isLoading===t?.isLoading&&e?.skeleton===t?.skeleton}function It(e,t){return e.length===t.length&&e.every((a,r)=>{let n=t[r];return n?.id===a.id&&n.column.id===a.column.id})}function kt(e,t,a){return a.every(r=>{let n=e.get(r.column.id),l=t.get(r.column.id);return n?.fixedSide===l?.fixedSide&&n?.isActionsColumn===l?.isActionsColumn&&n?.isExpansionColumn===l?.isExpansionColumn&&n?.isSelectionColumn===l?.isSelectionColumn&&n?.isSpacerColumn===l?.isSpacerColumn&&n?.isUtilityColumn===l?.isUtilityColumn&&n?.pinnedClassName===l?.pinnedClassName&&n?.utilityClassName===l?.utilityClassName&&xt(n?.cellStyle,l?.cellStyle)})}function xt(e,t){return e?.width===t?.width&&e?.minWidth===t?.minWidth&&e?.maxWidth===t?.maxWidth&&e?.left===t?.left&&e?.right===t?.right}var Be=M.memo(wt,St);function Lt({columnGroupHeaderHeight:e,currentDensity:t,currentSorting:a$1,dir:r,draggedColumnIdRef:n,enableColumnReordering:l,enableColumnResizing:s,header:o,headerGroupHeaders:C,layout:d,primeColumnForResize:p,reorderColumn:c,resizeColumnLabel:w,resetColumnSize:y,TableHead:I,uiClassNames:m}){let S=o.column.columnDef.meta,P=M.useId(),D=!o.isPlaceholder&&o.subHeaders.length>0,x=D?o.column.columnDef:void 0,V=o.column.getCanSort(),_=o.column.getIsSorted(),L=a$1.findIndex(u=>u.id===o.column.id),N=l&&!o.isPlaceholder&&!D&&!d.isUtilityColumn&&!d.isSpacerColumn,F=i(S?.hideOn);return jsxs(I,{colSpan:o.colSpan,scope:o.isPlaceholder?void 0:D?"colgroup":"col","aria-hidden":o.isPlaceholder||void 0,"aria-description":D?x?.description:void 0,"aria-labelledby":!o.isPlaceholder&&!d.isUtilityColumn&&!d.isSpacerColumn?P:void 0,"data-column-id":o.column.id,"data-column-group-id":D?x?.id:void 0,"data-header-depth":o.depth,"data-dtp-slot":D?"data-table-column-group-header":"data-table-column-header",className:a("relative border-b",Ne(t),D&&m.columnGroupHeader,d.utilityClassName,d.isSpacerColumn&&"border-b-1 bg-transparent p-0",d.pinnedClassName,F,g(o.getContext()),S?.headerClassName,D&&x?.headerClassName,S?.responsiveClassName),style:{...S?.headerStyle,...D?x?.headerStyle:void 0,...D&&(x?.headerHeight??e)!==void 0?{height:x?.headerHeight??e}:void 0,...d.headerStyle},title:D?x?.description:void 0,"aria-sort":_==="asc"?"ascending":_==="desc"?"descending":V?"none":void 0,draggable:N,tabIndex:N&&!V&&!(s&&o.column.getCanResize())?0:void 0,onDragStart:N?u=>{n.current=o.column.id,u.dataTransfer.effectAllowed="move";}:void 0,onDragOver:N?u=>{u.preventDefault(),u.dataTransfer.dropEffect="move";}:void 0,onDrop:N?u=>{u.preventDefault();let k=n.current;n.current=null,k&&c(k,o.column.id);}:void 0,onKeyDown:N?u=>{if(!u.altKey||u.key!=="ArrowLeft"&&u.key!=="ArrowRight")return;u.preventDefault();let k=C.filter(U=>!Ce(U.column.id)&&U.column.id!=="__spacer__"),O=k.findIndex(U=>U.column.id===o.column.id),z=k[u.key==="ArrowLeft"!=(r==="rtl")?O-1:O+1];z&&c(o.column.id,z.column.id);}:void 0,children:[o.isPlaceholder?null:V?jsxs("button",{type:"button",className:a("flex w-full items-center gap-2 font-medium",g(o.getContext())),onClick:o.column.getToggleSortingHandler(),children:[jsx("span",{id:P,className:"truncate",children:flexRender(o.column.columnDef.header,o.getContext())}),_?jsxs(Fragment,{children:[jsx(ze,{className:a("size-4 shrink-0 transition-transform",_==="desc"?"rotate-0":"rotate-180")}),a$1.length>1&&L>=0?jsx("span",{className:"inline-flex size-4 shrink-0 items-center justify-center rounded-full text-[10px] leading-none",children:L+1}):null]}):jsx(Ve,{className:a("size-4 shrink-0",m.headerSortIcon??"opacity-70")})]}):d.isUtilityColumn||d.isSpacerColumn?flexRender(o.column.columnDef.header,o.getContext()):jsx("span",{id:P,children:flexRender(o.column.columnDef.header,o.getContext())}),s&&!o.isPlaceholder&&o.column.getCanResize()?jsx("div",{"aria-label":w,"aria-orientation":"vertical","aria-valuemax":Nt(o),"aria-valuemin":Pt(o),"aria-valuenow":Math.round(o.getSize()),role:"separator",tabIndex:0,onDoubleClick:()=>{for(let u of G(o))y(u.column.id);},onMouseDown:u=>{for(let k of G(o))p(k.column.id,k.getSize());o.getResizeHandler()(u);},onTouchStart:u=>{for(let k of G(o))p(k.column.id,k.getSize());o.getResizeHandler()(u);},onKeyDown:u=>{if(u.altKey)return;if(u.key==="Home"){u.preventDefault();for(let O of G(o))y(O.column.id);return}if(u.key!=="ArrowLeft"&&u.key!=="ArrowRight")return;u.preventDefault(),u.stopPropagation();let k=u.key==="ArrowRight"!=(r==="rtl");Ht(o,(k?1:-1)*(u.shiftKey?25:10));},className:a("absolute inset-y-0 z-50 h-full w-3 cursor-col-resize touch-none select-none ltr:right-0 ltr:translate-x-1/2 rtl:left-0 rtl:-translate-x-1/2 after:absolute after:top-0 after:left-1/2 after:h-full after:w-px after:-translate-x-1/2",m.resizeHandle??"after:bg-current after:opacity-20 hover:after:opacity-70",o.column.getIsResizing()&&(m.resizeHandleActive??"after:opacity-100"))}):null]},o.id)}function Mt(e,t){return e.header.id===t.header.id&&e.header.column.id===t.header.column.id&&e.header.column.columnDef===t.header.column.columnDef&&e.header.colSpan===t.header.colSpan&&e.header.isPlaceholder===t.header.isPlaceholder&&At(e.header,t.header)&&e.currentDensity===t.currentDensity&&e.columnGroupHeaderHeight===t.columnGroupHeaderHeight&&e.dir===t.dir&&e.enableColumnReordering===t.enableColumnReordering&&e.enableColumnResizing===t.enableColumnResizing&&e.TableHead===t.TableHead&&e.uiClassNames===t.uiClassNames&&e.draggedColumnIdRef===t.draggedColumnIdRef&&e.primeColumnForResize===t.primeColumnForResize&&e.reorderColumn===t.reorderColumn&&e.resizeColumnLabel===t.resizeColumnLabel&&e.resetColumnSize===t.resetColumnSize&&e.selectionState===t.selectionState&&_t(e.currentSorting,t.currentSorting)&&zt(e.headerGroupHeaders,t.headerGroupHeaders)&&Ut(e.layout,t.layout)}function G(e){return e.subHeaders.length?e.getLeafHeaders().filter(t=>!t.subHeaders.length):[e]}function Pt(e){return G(e).reduce((t,a)=>t+(a.column.columnDef.minSize??20),0)}function Nt(e){return G(e).reduce((t,a)=>t+(a.column.columnDef.maxSize??Number.MAX_SAFE_INTEGER),0)}function Ht(e,t){let a=G(e),r=t/a.length;e.getContext().table.setColumnSizing(n=>{let l={...n};for(let s of a){let o=s.column,C=o.columnDef.minSize??20,d=o.columnDef.maxSize??Number.MAX_SAFE_INTEGER;l[o.id]=Math.min(d,Math.max(C,o.getSize()+r));}return l});}function At(e,t){return e.subHeaders.length===t.subHeaders.length&&e.subHeaders.every((a,r)=>t.subHeaders[r]?.id===a.id)}function _t(e,t){return e.length===t.length&&e.every((a,r)=>{let n=t[r];return n?.id===a.id&&n.desc===a.desc})}function zt(e,t){return e.length===t.length&&e.every((a,r)=>t[r]?.id===a.id)}function Ut(e,t){return e.fixedSide===t.fixedSide&&e.isSpacerColumn===t.isSpacerColumn&&e.isUtilityColumn===t.isUtilityColumn&&e.pinnedClassName===t.pinnedClassName&&e.utilityClassName===t.utilityClassName&&e.headerStyle?.width===t.headerStyle?.width&&e.headerStyle?.minWidth===t.headerStyle?.minWidth&&e.headerStyle?.maxWidth===t.headerStyle?.maxWidth&&e.headerStyle?.left===t.headerStyle?.left&&e.headerStyle?.right===t.headerStyle?.right}var Ge=M.memo(Lt,Mt);function Za({ariaDescribedBy:e,ariaLabelledBy:t,bodyRowComponents:a$1,columnLayouts:r,columnGroupHeaderHeight:n,currentDensity:l,currentDetailExpanded:s,currentSorting:o=[],dir:C,DataTableEmptyState:d,dragAndDrop:p,draggedColumnIdRef:c,draftValues:w,editingRowId:y,emptyNode:I,enableColumnReordering:m,enableColumnResizing:S,explicitCustomCellColumnIds:P,fillMinWidth:D,flexGrow:x,getColumnLayout:V,getRowClassName:_,getRowLoadingState:L,infiniteScroll:N,layoutMode:F,localSearchValue:u,onRowClick:k,primeColumnForResize:O,renderedRows:z,detailPanel:U,topPinnedRows:W,bottomPinnedRows:f,reorderColumn:H,resetColumnSize:j,resolvedLabels:K,rowsToRender:A,ScrollArea:J,ScrollBar:Q,sentinelRef:Z,setDraftValues:te,shouldRenderInitialLoading:me,stickyHeader:fe,stripedRows:We,summaryRows:ae,table:$,tableClassName:je,tableContainerClassName:$e,Table:qe,TableBody:Xe,TableCell:ne,TableFooter:Je="tfoot",TableHead:Qe,TableHeader:Ze,TableRow:Y,tableScrollContainerRef:Ye,uiClassNames:B,virtualPaddingBottom:Ie,virtualPaddingTop:ke,visibleLeafColumnCount:oe,visibleLeafColumns:et}){let tt=$.getIsAllPageRowsSelected()?true:$.getIsSomePageRowsSelected()?"indeterminate":false,xe=$.getFilteredRowModel().rows,at=M.useMemo(()=>ae.length?xe.map(b=>b.original):[],[xe,ae.length]),pe=(b,h,re)=>{let v=b.original,be=se(v),De=be?{isLoading:true}:L?.(v,h),nt=typeof De=="boolean"?{isLoading:De}:De,ot=be?false:p?.getRowDraggable?.(v)??false;return jsx(Be,{columnLayouts:r,components:a$1,currentDensity:l,draftValues:w,dragAndDrop:p,explicitCustomCellColumnIds:P,getRowClassName:_,isDraggable:ot,isDetailExpanded:s===true||!!s[b.id],isEditing:y===b.id,isExpanded:b.getIsExpanded(),isInitialLoadingRow:be,isSelected:b.getIsSelected(),loadingState:nt,onRowClick:k,originalRow:v,pinnedPosition:re,detailPanel:U,row:b,rowIndex:h,setDraftValues:te,stripedRows:We,uiClassNames:B,visibleCells:b.getVisibleCells(),visibleLeafColumnCount:oe},`${re??"center"}-${b.id}`)};return jsx("div",{"data-dtp-slot":"data-table-table-shell",className:a("box-border border-2 border-transparent transition-colors",x?"flex min-h-0 flex-1 flex-col":"h-full",p?.isDragging&&(B.dragActive??"rounded-md border-dashed")),children:jsx("div",{ref:Ye,className:a(x?"flex min-h-0 flex-1 flex-col":"h-full"),children:jsxs(J,{className:a("rounded-md border",x?"min-h-0 flex-1":"h-full",B.tableContainer,B.tableScrollArea,$e),children:[jsx("div",{className:"min-h-full",children:jsxs(qe,{"aria-describedby":e,"aria-labelledby":t,className:a("w-full table-fixed border-separate border-spacing-0",je),style:{minWidth:F==="fill"&&D||void 0,width:F==="fit"?$.getTotalSize():"100%"},children:[jsx("colgroup",{children:$.getVisibleLeafColumns().map(b=>{let h=V(b.id);return jsx("col",{style:h.colStyle},b.id)})}),jsx(Ze,{className:a(fe?B.tableStickyHeader??"sticky top-0 z-30 backdrop-blur":void 0),children:$.getHeaderGroups().map(b=>jsx(Y,{children:b.headers.map(h=>jsx(Ge,{columnGroupHeaderHeight:n,currentDensity:l,currentSorting:o,dir:C,draggedColumnIdRef:c,enableColumnReordering:m,enableColumnResizing:S,header:h,headerGroupHeaders:b.headers,layout:Ot(h,V),primeColumnForResize:O,reorderColumn:H,resizeColumnLabel:K.resizeColumn(typeof h.column.columnDef.header=="string"?h.column.columnDef.header:h.column.id),resetColumnSize:j,selectionState:h.column.id==="__select__"?tt:void 0,TableHead:Qe,uiClassNames:B},h.id))},b.id))}),jsx(Xe,{children:W.length||z.length||f.length?jsxs(Fragment,{children:[W.map((b,h)=>pe(b,h,"top")),ke>0?jsx(Y,{"aria-hidden":"true",children:jsx(ne,{colSpan:Math.max(1,oe),className:"border-b-0 p-0",style:{height:ke}})}):null,A.map(({row:b,rowIndex:h})=>pe(b,h+W.length)),Ie>0?jsx(Y,{"aria-hidden":"true",children:jsx(ne,{colSpan:Math.max(1,oe),className:"border-b-0 p-0",style:{height:Ie}})}):null,f.map((b,h)=>pe(b,W.length+z.length+h,"bottom"))]}):jsx(Y,{children:jsx(ne,{colSpan:Math.max(1,oe),className:"h-full grow",children:jsx("div",{className:"flex h-full min-h-full w-full grow items-center justify-center",children:I??jsx(d,{title:u?K.noMatchingRowsTitle:K.noRowsTitle,description:u?K.noMatchingRowsDescription:K.noRowsDescription})})})})}),ae.length?jsx(Je,{children:ae.map(b=>jsx(Y,{children:et.map((h,re)=>{let v=b.cells[h.id]??(re===0?b.label:null);return jsx(ne,{className:a("border-b font-medium",B.cellBorder),children:typeof v=="function"?v({rows:at,columnId:h.id}):v},`${b.key}-${h.id}`)})},b.key))}):null]})}),N?.enabled&&z.length&&!me?jsx("div",{className:"px-4 pb-4",children:jsx("div",{ref:Z,className:"h-4 w-full"})}):null,jsx(Q,{orientation:"horizontal"})]})})})}function Ot(e,t){let a=t(e.column.id);if(e.isPlaceholder||!e.subHeaders.length)return a;let r=e.getLeafHeaders().filter(s=>!s.subHeaders.length).map(s=>t(s.column.id)),n=r[0]?.fixedSide;if(!n||!r.every(s=>s.fixedSide===n))return a;let l=n==="left"?r[0]:r.at(-1);return {...a,fixedSide:n,headerStyle:l?.headerStyle?{left:l.headerStyle.left,right:l.headerStyle.right}:void 0,pinnedClassName:l?.pinnedClassName}}export{rt as A,$t as B,qt as C,Te as D,Xt as E,Pe as F,Jt as G,Qt as H,Zt as I,ie as J,Yt as K,ct as L,ea as M,ta as N,Ce as O,ye as P,aa as Q,He as R,ra as S,Be as T,Ge as U,Za as V,da as a,ca as b,ze as c,ua as d,ma as e,fa as f,pa as g,ba as h,Da as i,ga as j,Ta as k,Ca as l,ya as m,ha as n,wa as o,Sa as p,Ra as q,Ia as r,Ve as s,ka as t,Bt as u,Gt as v,Ft as w,se as x,Wt as y,jt as z};//# sourceMappingURL=chunk-BYTOUBQ7.js.map +//# sourceMappingURL=chunk-BYTOUBQ7.js.map \ No newline at end of file diff --git a/dist/chunk-BYTOUBQ7.js.map b/dist/chunk-BYTOUBQ7.js.map new file mode 100644 index 0000000..abb0f47 --- /dev/null +++ b/dist/chunk-BYTOUBQ7.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/core/data-table/data-table-utils.ts","../src/core/data-table/use-row-editing.tsx","../src/core/icons.tsx","../src/core/data-table/data-table-cell-content.tsx","../src/core/data-table/data-table-body-row.tsx","../src/core/data-table/data-table-header-cell.tsx","../src/core/data-table/data-table-table-panel.tsx"],"names":["DATA_TABLE_LOADING_ROW","UTILITY_COLUMN_SIZE","toggleDataTableExpandedState","current","rowId","loadedRowIds","loadedRowId","next","createDataTableLoadingRows","count","_","index","isDataTableLoadingRow","row","getDataTableLoadingRowId","getConfiguredColumnMinWidth","column","minSize","decorateFilterableColumn","childColumn","filter","columnId","filterValue","hasFilterValue","value","optionValue","normalizeFilterValue","range","normalizeRangeFilterValue","numericValue","from","to","dateValue","normalizeDateFilterValue","normalizedValue","normalizedQuery","getDataTableColumnGroupPaths","columns","paths","visit","currentColumns","parentPath","group","getColumnId","canReorderDataTableColumn","sourceColumnId","targetColumnId","groupPaths","sourcePath","targetPath","commonLength","getDataTableLeafColumns","leaves","normalizeColumnFilterOptions","options","option","startCase","normalized","timestamp","dataTableGlobalFilterFn","exportDataTableCsv","csvExport","table","filename","scope","exportColumnIds","isUtilityColumnId","rows","getCsvExportRows","csvRows","lineEnding","escapeFormulaValues","csv","escapeCsvCell","blob","url","anchor","text","getInitialColumnPinning","left","right","_index","accessorKey","getAccessorKey","RESERVED_DATA_TABLE_COLUMN_IDS","validateDataTableColumnIds","ids","id","getFixedSide","pinnedSide","getPinnedColumnClassName","side","uiClassNames","isUtilityColumn","cn","DATA_TABLE_INTERACTIVE_TARGET_SELECTOR","isDataTableInteractiveTarget","target","boundary","interactiveTarget","getDensityHeaderClassName","density","getDensityCellClassName","moveColumnInOrder","currentOrder","order","sourceIndex","targetIndex","source","character","useRowEditing","editableRows","onError","editingRowId","setEditingRowId","draftValues","setDraftValues","draftValuesRef","isSavingEdit","setIsSavingEdit","cancelEditing","startEditingRow","initialValues","defaultDraftValues","saveEdit","error","draft","renderEditableCell","context","components","Checkbox","Input","meta","draftValue","setDraftValue","inputType","getEditableInputType","jsx","checked","getEditableInputValue","event","rawValue","parsedValue","parseEditableInputValue","type","previousValue","Icon","children","viewBox","props","IconAdjustmentsHorizontal","jsxs","IconCheck","IconChevronDown","IconChevronLeft","IconChevronRight","IconChevronUp","IconChevronsLeft","IconChevronsRight","IconClock","IconDatabase","IconDots","IconDownload","IconEdit","IconEye","IconEyeOff","IconInbox","IconLayoutGrid","IconList","IconSearch","IconSelector","IconX","renderDataTableCellContent","classNames","hasCustomCell","renderedCellContent","flexRender","hasComplexRenderedContent","isComplexRenderedCellContent","resolvedOverflow","resolveDataTableCellOverflow","getCellOverflowClassName","formatDateValue","content","formatCellValue","useCustomOverflowDefaults","overflow","ve","DataTableBodyRowInner","columnLayouts","currentDensity","dragAndDrop","explicitCustomCellColumnIds","getRowClassName","isDraggable","isDetailExpanded","isEditing","isExpanded","isInitialLoadingRow","isSelected","loadingState","onRowClick","pinnedPosition","originalRow","detailPanel","rowIndex","stripedRows","visibleCells","visibleLeafColumnCount","Skeleton","TableCell","TableRow","firstDataColumnId","cell","ce","cellContext","layout","isSelectionColumn","isExpansionColumn","isActionsColumn","isSpacerColumn","hideClassName","hideOnClassName","cellClassName","cellAlignClassName","areDataTableBodyRowsEqual","previous","sameLoadingState","sameVisibleCells","sameColumnLayouts","nextCell","cells","previousLayout","nextLayout","sameCellStyle","DataTableBodyRow","DataTableHeaderCellInner","columnGroupHeaderHeight","currentSorting","dir","draggedColumnIdRef","enableColumnReordering","enableColumnResizing","header","headerGroupHeaders","primeColumnForResize","reorderColumn","resizeColumnLabel","resetColumnSize","TableHead","headerContentId","ue","isColumnGroup","groupDefinition","canSort","sortingState","sortingIndex","sort","canReorderColumn","headerAlignClassName","headers","item","currentIndex","Fragment","getHeaderMaximumSize","getHeaderMinimumSize","leafHeader","getResizableLeafHeaders","grows","resizeHeaderBy","areDataTableHeaderCellsEqual","sameSubHeaders","sameSorting","sameHeaderGroupHeaders","sameHeaderLayout","total","delta","leafHeaders","deltaPerLeaf","minimum","maximum","nextSort","DataTableHeaderCell","DataTableTablePanel","ariaDescribedBy","ariaLabelledBy","bodyRowComponents","currentDetailExpanded","DataTableEmptyState","emptyNode","fillMinWidth","flexGrow","getColumnLayout","getRowLoadingState","infiniteScroll","layoutMode","localSearchValue","renderedRows","topPinnedRows","bottomPinnedRows","resolvedLabels","rowsToRender","ScrollArea","ScrollBar","sentinelRef","shouldRenderInitialLoading","stickyHeader","summaryRows","tableClassName","tableContainerClassName","Table","TableBody","TableFooter","TableHeader","tableScrollContainerRef","virtualPaddingBottom","virtualPaddingTop","visibleLeafColumns","selectionState","filteredRows","summarySourceRows","Fe","renderBodyRow","resolvedLoadingState","headerGroup","getHeaderLayout","summaryRow","columnLayout","leafLayouts","fixedSide","edgeLayout"],"mappings":"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","file":"chunk-BYTOUBQ7.js","sourcesContent":["import type {\n Column,\n ColumnDef,\n ColumnPinningState,\n ExpandedState,\n Row,\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableColumnFilterOption,\n DataTableCsvExportOptions,\n DataTableCsvExportScope,\n DataTableDensity,\n DataTableLabels,\n} from \"../types\";\nimport type { DataTableUiClassNames } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nconst DATA_TABLE_LOADING_ROW = Symbol(\"data-table-loading-row\");\n\nexport const UTILITY_COLUMN_SIZE = 50;\n\nexport function toggleDataTableExpandedState(\n current: ExpandedState,\n rowId: string,\n loadedRowIds: Array,\n): ExpandedState {\n if (current === true) {\n return Object.fromEntries(\n loadedRowIds.flatMap((loadedRowId) =>\n loadedRowId === rowId ? [] : [[loadedRowId, true]],\n ),\n );\n }\n\n const next = { ...current };\n if (next[rowId]) {\n delete next[rowId];\n } else {\n next[rowId] = true;\n }\n return next;\n}\n\ntype DataTableLoadingRow = {\n [DATA_TABLE_LOADING_ROW]: true;\n index: number;\n};\n\nexport function createDataTableLoadingRows(count: number) {\n return Array.from({ length: count }, (_, index) => {\n return {\n [DATA_TABLE_LOADING_ROW]: true,\n index,\n } as DataTableLoadingRow as TData;\n });\n}\n\nexport function isDataTableLoadingRow(\n row: unknown,\n): row is DataTableLoadingRow {\n return Boolean(\n row &&\n typeof row === \"object\" &&\n DATA_TABLE_LOADING_ROW in (row as Record),\n );\n}\n\nexport function getDataTableLoadingRowId(index: number) {\n return `__loading__${index}`;\n}\n\nexport function getConfiguredColumnMinWidth(\n column: DataTableColumnDef,\n) {\n if (typeof column.meta?.minWidth === \"number\") {\n return column.meta.minWidth;\n }\n\n if (Object.prototype.hasOwnProperty.call(column, \"minSize\")) {\n const minSize = (column as { minSize?: unknown }).minSize;\n\n if (typeof minSize === \"number\") {\n return minSize;\n }\n }\n\n return undefined;\n}\n\nexport function decorateFilterableColumn(\n column: DataTableColumnDef,\n): ColumnDef {\n if (\"columns\" in column && Array.isArray(column.columns)) {\n return {\n ...column,\n columns: column.columns.map((childColumn) =>\n decorateFilterableColumn(\n childColumn as DataTableColumnDef,\n ),\n ),\n };\n }\n\n const filter = column.meta?.filter;\n if (!filter || column.filterFn) {\n return column;\n }\n\n return {\n ...column,\n filterFn: (row, columnId, filterValue) => {\n if (!hasFilterValue(filterValue)) {\n return true;\n }\n\n const value = row.getValue(columnId);\n const optionValue =\n filter.getOptionValue?.(value, row.original) ??\n normalizeFilterValue(value);\n\n if (filter.type === \"multi\") {\n return Array.isArray(filterValue)\n ? filterValue.map(String).includes(optionValue)\n : true;\n }\n\n if (filter.type === \"select\") {\n return optionValue === String(filterValue);\n }\n\n if (filter.type === \"boolean\") {\n return optionValue === String(filterValue);\n }\n\n if (filter.type === \"numberRange\") {\n const range = normalizeRangeFilterValue(filterValue);\n const numericValue = Number(optionValue);\n const from = range.from === \"\" ? undefined : Number(range.from);\n const to = range.to === \"\" ? undefined : Number(range.to);\n\n if (Number.isNaN(numericValue)) {\n return false;\n }\n\n return (\n (from === undefined || Number.isNaN(from) || numericValue >= from) &&\n (to === undefined || Number.isNaN(to) || numericValue <= to)\n );\n }\n\n if (filter.type === \"dateRange\") {\n const range = normalizeRangeFilterValue(filterValue);\n const dateValue = normalizeDateFilterValue(optionValue);\n\n if (!dateValue) {\n return false;\n }\n\n return (\n (!range.from || dateValue >= String(range.from)) &&\n (!range.to || dateValue <= String(range.to))\n );\n }\n\n const normalizedValue = optionValue.toLowerCase();\n const normalizedQuery = String(filterValue).toLowerCase();\n\n switch (filter.operator ?? \"contains\") {\n case \"equals\":\n return normalizedValue === normalizedQuery;\n case \"startsWith\":\n return normalizedValue.startsWith(normalizedQuery);\n case \"endsWith\":\n return normalizedValue.endsWith(normalizedQuery);\n default:\n return normalizedValue.includes(normalizedQuery);\n }\n },\n };\n}\n\nexport type DataTableLeafColumn = {\n column: DataTableColumnDef;\n index: number;\n};\n\nexport type DataTableColumnGroupPathSegment = {\n id: string;\n freeReordering: boolean;\n};\n\nexport type DataTableColumnGroupPaths = ReadonlyMap<\n string,\n ReadonlyArray\n>;\n\n/**\n * Returns the nested shared-header path for every leaf. The path deliberately\n * uses stable column ids rather than header text so it also works with custom\n * header render functions.\n */\nexport function getDataTableColumnGroupPaths(\n columns: Array>,\n): DataTableColumnGroupPaths {\n const paths = new Map<\n string,\n ReadonlyArray\n >();\n\n const visit = (\n currentColumns: Array>,\n parentPath: ReadonlyArray,\n ) => {\n currentColumns.forEach((column, index) => {\n if (\"columns\" in column && column.columns?.length) {\n const group = column as DataTableColumnDef & {\n freeReordering?: boolean;\n };\n visit(column.columns, [\n ...parentPath,\n {\n id: getColumnId(column, index),\n freeReordering: group.freeReordering === true,\n },\n ]);\n return;\n }\n\n paths.set(getColumnId(column, index), parentPath);\n });\n };\n\n visit(columns, []);\n return paths;\n}\n\n/**\n * Locked groups preserve their shared heading by default. Reordering within a\n * common group path is always allowed; leaving or entering a group requires\n * each crossed group to explicitly opt into `freeReordering`.\n */\nexport function canReorderDataTableColumn(\n sourceColumnId: string,\n targetColumnId: string,\n groupPaths: DataTableColumnGroupPaths,\n) {\n const sourcePath = groupPaths.get(sourceColumnId) ?? [];\n const targetPath = groupPaths.get(targetColumnId) ?? [];\n let commonLength = 0;\n\n while (\n commonLength < sourcePath.length &&\n commonLength < targetPath.length &&\n sourcePath[commonLength]?.id === targetPath[commonLength]?.id\n ) {\n commonLength += 1;\n }\n\n return [\n ...sourcePath.slice(commonLength),\n ...targetPath.slice(commonLength),\n ].every((group) => group.freeReordering);\n}\n\nexport function getDataTableLeafColumns(\n columns: Array>,\n) {\n const leaves: Array> = [];\n\n const visit = (currentColumns: Array>) => {\n currentColumns.forEach((column, index) => {\n if (\"columns\" in column && column.columns?.length) {\n visit(column.columns);\n return;\n }\n\n leaves.push({ column, index });\n });\n };\n\n visit(columns);\n return leaves;\n}\n\nexport function normalizeColumnFilterOptions(\n options: Array,\n) {\n return options.map((option) =>\n typeof option === \"string\"\n ? { label: startCase(option), value: option }\n : option,\n );\n}\n\nexport function normalizeFilterValue(value: unknown) {\n if (value == null) {\n return \"\";\n }\n\n if (value instanceof Date) {\n return value.toISOString();\n }\n\n if (typeof value === \"object\") {\n try {\n return JSON.stringify(value);\n } catch {\n return \"\";\n }\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n typeof value === \"bigint\" ||\n typeof value === \"symbol\"\n ) {\n return String(value);\n }\n\n return \"\";\n}\n\nexport function hasFilterValue(value: unknown) {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n\n if (value && typeof value === \"object\") {\n if (\"from\" in value || \"to\" in value) {\n return Object.values(value).some(hasFilterValue);\n }\n\n return true;\n }\n\n return value !== undefined && value !== null && value !== \"\";\n}\n\nfunction normalizeRangeFilterValue(value: unknown): {\n from?: string | number;\n to?: string | number;\n} {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return {};\n }\n\n const range = value as { from?: unknown; to?: unknown };\n return {\n ...(typeof range.from === \"string\" || typeof range.from === \"number\"\n ? { from: range.from }\n : {}),\n ...(typeof range.to === \"string\" || typeof range.to === \"number\"\n ? { to: range.to }\n : {}),\n };\n}\n\nfunction normalizeDateFilterValue(value: unknown) {\n if (value instanceof Date && !Number.isNaN(value.getTime())) {\n return value.toISOString().slice(0, 10);\n }\n\n const normalized = normalizeFilterValue(value);\n if (/^\\d{4}-\\d{2}-\\d{2}/.test(normalized)) {\n return normalized.slice(0, 10);\n }\n\n const timestamp = Date.parse(normalized);\n return Number.isNaN(timestamp)\n ? \"\"\n : new Date(timestamp).toISOString().slice(0, 10);\n}\n\nexport function dataTableGlobalFilterFn(\n row: Row,\n columnId: string,\n filterValue: unknown,\n) {\n const normalizedQuery = normalizeFilterValue(filterValue)\n .trim()\n .toLowerCase();\n\n if (!normalizedQuery) {\n return true;\n }\n\n return normalizeFilterValue(row.getValue(columnId))\n .toLowerCase()\n .includes(normalizedQuery);\n}\n\nexport async function exportDataTableCsv({\n csvExport,\n table,\n}: {\n csvExport: boolean | DataTableCsvExportOptions;\n table: TanStackTable;\n labels: DataTableLabels;\n}) {\n if (csvExport === false) {\n return;\n }\n\n const options: DataTableCsvExportOptions =\n csvExport === true ? {} : csvExport;\n const filename = options.filename ?? \"data-table.csv\";\n const scope = options.scope ?? \"filtered\";\n const exportColumnIds = options.columns\n ? new Set(options.columns)\n : undefined;\n const columns = table\n .getVisibleLeafColumns()\n .filter(\n (column) =>\n !isUtilityColumnId(column.id) &&\n column.id !== \"__spacer__\" &&\n (!exportColumnIds || exportColumnIds.has(column.id)),\n );\n const rows = getCsvExportRows(table, scope);\n const csvRows: Array> = [];\n\n if (options.includeHeaders ?? true) {\n csvRows.push(\n columns.map((column) =>\n typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : startCase(column.id),\n ),\n );\n }\n\n for (const row of rows) {\n csvRows.push(\n columns.map((column) => {\n const value = row.getValue(column.id);\n return options.getCellValue\n ? options.getCellValue({\n row: row.original,\n rowId: row.id,\n columnId: column.id,\n value,\n })\n : value;\n }),\n );\n }\n\n const lineEnding = options.lineEnding ?? \"\\r\\n\";\n const escapeFormulaValues = options.escapeFormulaValues ?? true;\n const csv = csvRows\n .map((row) =>\n row\n .map((value) => escapeCsvCell(value, escapeFormulaValues))\n .join(\",\"),\n )\n .join(lineEnding);\n\n if (options.onExport) {\n await options.onExport({\n csv,\n filename,\n rows: rows.map((row) => row.original),\n scope,\n });\n return;\n }\n\n if (typeof window === \"undefined\") {\n return;\n }\n\n const blob = new Blob([csv], { type: \"text/csv;charset=utf-8\" });\n const url = window.URL.createObjectURL(blob);\n const anchor = window.document.createElement(\"a\");\n anchor.href = url;\n anchor.download = filename;\n anchor.click();\n window.URL.revokeObjectURL(url);\n}\n\nfunction getCsvExportRows(\n table: TanStackTable,\n scope: DataTableCsvExportScope,\n) {\n switch (scope) {\n case \"page\":\n return table.getRowModel().rows;\n case \"selected\":\n return table\n .getPrePaginationRowModel()\n .rows.filter((row) => row.getIsSelected());\n case \"all\":\n return table.getCoreRowModel().rows;\n default:\n return table.getPrePaginationRowModel().rows;\n }\n}\n\nfunction escapeCsvCell(value: unknown, escapeFormulaValues: boolean) {\n let text = normalizeFilterValue(value);\n if (\n escapeFormulaValues &&\n typeof value === \"string\" &&\n /^[\\t\\r ]*[=+\\-@]/.test(value)\n ) {\n text = `'${text}`;\n }\n if (/[\",\\n\\r]/.test(text)) {\n return `\"${text.replace(/\"/g, '\"\"')}\"`;\n }\n return text;\n}\n\nexport function getInitialColumnPinning(\n columns: Array>,\n): ColumnPinningState {\n const left: Array = [];\n const right: Array = [];\n\n for (const { column, index } of getDataTableLeafColumns(columns)) {\n const columnId = getColumnId(column, index);\n if (column.meta?.fixed === \"left\") {\n left.push(columnId);\n }\n if (column.meta?.fixed === \"right\") {\n right.push(columnId);\n }\n }\n\n return { left, right };\n}\n\nexport function getColumnId(\n column: DataTableColumnDef,\n _index?: number,\n) {\n if (column.id) {\n return column.id;\n }\n\n const accessorKey = getAccessorKey(column);\n if (accessorKey) {\n return accessorKey.replace(/\\./g, \"_\");\n }\n\n if (typeof column.header === \"string\") {\n return column.header;\n }\n\n throw new Error(\n \"Data table columns using an accessor function or non-string header must define a unique id.\",\n );\n}\n\nconst RESERVED_DATA_TABLE_COLUMN_IDS = new Set([\n \"__select__\",\n \"__expand__\",\n \"__actions__\",\n \"__spacer__\",\n]);\n\nexport function validateDataTableColumnIds(\n columns: Array>,\n) {\n const ids = new Set();\n\n const visit = (currentColumns: Array>) => {\n currentColumns.forEach((column, index) => {\n const id = getColumnId(column, index);\n if (RESERVED_DATA_TABLE_COLUMN_IDS.has(id)) {\n throw new Error(\n `Data table column id \"${id}\" is reserved for an internal column.`,\n );\n }\n if (ids.has(id)) {\n throw new Error(`Duplicate data table column id \"${id}\".`);\n }\n ids.add(id);\n\n if (\"columns\" in column && column.columns?.length) {\n visit(column.columns);\n }\n });\n };\n\n visit(columns);\n}\n\nexport function getAccessorKey(\n column: DataTableColumnDef,\n) {\n if (\"accessorKey\" in column && typeof column.accessorKey === \"string\") {\n return column.accessorKey;\n }\n\n return undefined;\n}\n\nexport function getFixedSide(column: Column) {\n const pinnedSide = column.getIsPinned();\n if (pinnedSide) {\n return pinnedSide;\n }\n\n if (column.id === \"__select__\") {\n return \"left\" as const;\n }\n\n if (column.id === \"__expand__\") {\n return \"left\" as const;\n }\n\n if (column.id === \"__actions__\") {\n return \"right\" as const;\n }\n\n const meta = (column.columnDef as DataTableColumnDef).meta;\n return meta?.fixed;\n}\n\nexport function getPinnedColumnClassName(\n side: \"left\" | \"right\",\n uiClassNames: DataTableUiClassNames,\n options?: { isUtilityColumn?: boolean },\n) {\n const isUtilityColumn = options?.isUtilityColumn ?? false;\n return cn(\n \"sticky backdrop-blur box-border\",\n uiClassNames.pinnedColumn,\n !isUtilityColumn && \"border-dotted\",\n isUtilityColumn ? uiClassNames.pinnedUtilityColumn : undefined,\n side === \"left\" ? \"border-r-1\" : \"border-l\",\n );\n}\n\nexport function isUtilityColumnId(columnId: string) {\n return (\n columnId === \"__select__\" ||\n columnId === \"__expand__\" ||\n columnId === \"__actions__\"\n );\n}\n\nconst DATA_TABLE_INTERACTIVE_TARGET_SELECTOR = [\n \"[data-row-click-ignore='true']\",\n \"a[href]\",\n \"button\",\n \"input\",\n \"select\",\n \"summary\",\n \"textarea\",\n \"[contenteditable='true']\",\n \"[role='button']\",\n \"[role='link']\",\n].join(\",\");\n\nexport function isDataTableInteractiveTarget(\n target: EventTarget | null,\n boundary: Element,\n) {\n if (!(target instanceof Element)) {\n return false;\n }\n\n const interactiveTarget = target.closest(\n DATA_TABLE_INTERACTIVE_TARGET_SELECTOR,\n );\n return Boolean(\n interactiveTarget &&\n interactiveTarget !== boundary &&\n boundary.contains(interactiveTarget),\n );\n}\n\nexport function getDensityHeaderClassName(density: DataTableDensity) {\n switch (density) {\n case \"compact\":\n return \"h-8 py-1\";\n case \"spacious\":\n return \"h-14 py-4\";\n case \"comfortable\":\n default:\n return undefined;\n }\n}\n\nexport function getDensityCellClassName(density: DataTableDensity) {\n switch (density) {\n case \"compact\":\n return \"py-1.5\";\n case \"spacious\":\n return \"py-4\";\n case \"comfortable\":\n default:\n return undefined;\n }\n}\n\nexport function moveColumnInOrder(\n currentOrder: Array,\n sourceColumnId: string,\n targetColumnId: string,\n) {\n const order = currentOrder.includes(sourceColumnId)\n ? currentOrder.slice()\n : [...currentOrder, sourceColumnId];\n const sourceIndex = order.indexOf(sourceColumnId);\n const targetIndex = order.indexOf(targetColumnId);\n\n if (sourceIndex < 0 || targetIndex < 0 || sourceIndex === targetIndex) {\n return order;\n }\n\n const [source] = order.splice(sourceIndex, 1);\n order.splice(targetIndex, 0, source);\n return order;\n}\n\nexport function startCase(value: string) {\n return value\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .replace(/[_-]+/g, \" \")\n .replace(/\\s+/g, \" \")\n .trim()\n .replace(/\\b\\w/g, (character) => character.toUpperCase());\n}\n","import * as React from \"react\";\nimport type { CellContext } from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableColumnType,\n DataTableEditableRowsConfig,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { getDataTableLeafColumns } from \"./data-table-utils\";\n\nexport function useRowEditing({\n columns,\n editableRows,\n onError,\n}: {\n columns: Array>;\n editableRows: DataTableEditableRowsConfig | undefined;\n onError?: (error: unknown, row: TData) => void;\n}) {\n const [editingRowId, setEditingRowId] = React.useState(null);\n const [draftValues, setDraftValues] = React.useState<\n Record\n >({});\n const draftValuesRef = React.useRef(draftValues);\n const [isSavingEdit, setIsSavingEdit] = React.useState(false);\n\n React.useEffect(() => {\n draftValuesRef.current = draftValues;\n }, [draftValues]);\n\n const cancelEditing = React.useCallback(() => {\n setEditingRowId(null);\n setDraftValues({});\n }, []);\n\n const startEditingRow = React.useCallback(\n (row: TData, rowId: string) => {\n const initialValues =\n editableRows?.getInitialValues?.(row) ??\n defaultDraftValues(row, columns);\n setDraftValues(initialValues);\n setEditingRowId(rowId);\n },\n [columns, editableRows],\n );\n\n const saveEdit = React.useCallback(\n async (row: TData) => {\n if (!editableRows) {\n return;\n }\n\n setIsSavingEdit(true);\n try {\n await editableRows.onSaveRow(row, draftValuesRef.current);\n React.startTransition(cancelEditing);\n } catch (error) {\n onError?.(error, row);\n } finally {\n setIsSavingEdit(false);\n }\n },\n [cancelEditing, editableRows, onError],\n );\n\n return {\n cancelEditing,\n draftValues,\n editingRowId,\n isSavingEdit,\n saveEdit,\n setDraftValues,\n setEditingRowId,\n startEditingRow,\n };\n}\n\nfunction defaultDraftValues(\n row: TData,\n columns: Array>,\n) {\n return getDataTableLeafColumns(columns).reduce>(\n (draft, { column }) => {\n if (\"accessorKey\" in column && typeof column.accessorKey === \"string\") {\n draft[column.accessorKey] = (row as Record)[\n column.accessorKey\n ];\n }\n return draft;\n },\n {},\n );\n}\n\nexport function renderEditableCell(\n context: CellContext,\n draftValues: Record,\n setDraftValues: React.Dispatch>>,\n components: Pick,\n) {\n const { Checkbox, Input } = components;\n const column = context.column.columnDef as DataTableColumnDef;\n const meta = column.meta;\n const accessorKey =\n \"accessorKey\" in column && typeof column.accessorKey === \"string\"\n ? column.accessorKey\n : context.column.id;\n const draftValue = draftValues[accessorKey];\n const setDraftValue = (value: unknown) => {\n setDraftValues((current) => ({\n ...current,\n [accessorKey]: value,\n }));\n };\n\n if (meta?.renderEditCell) {\n return meta.renderEditCell({\n cell: context,\n row: context.row.original,\n value: context.getValue(),\n draftValue,\n setDraftValue,\n });\n }\n\n const inputType = getEditableInputType(meta?.type, draftValue);\n\n if (typeof draftValue === \"boolean\") {\n return (\n {\n setDraftValue(checked === true);\n }}\n />\n );\n }\n\n return (\n ) => {\n const rawValue = event.target.value;\n const parsedValue = meta?.parseEditValue\n ? meta.parseEditValue(rawValue, context)\n : parseEditableInputValue(rawValue, inputType, draftValue);\n setDraftValue(parsedValue);\n }}\n />\n );\n}\n\nfunction getEditableInputType(\n type: DataTableColumnType | undefined,\n value: unknown,\n) {\n if (type === \"numeric\" || typeof value === \"number\") {\n return \"number\";\n }\n\n if (type === \"date\" || value instanceof Date) {\n return \"datetime-local\";\n }\n\n return \"text\";\n}\n\nfunction getEditableInputValue(value: unknown, inputType = \"text\") {\n if (value == null) {\n return \"\";\n }\n\n if (value instanceof Date) {\n return inputType === \"datetime-local\"\n ? value.toISOString().slice(0, 16)\n : value.toISOString();\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n typeof value === \"bigint\"\n ) {\n return String(value);\n }\n\n return \"\";\n}\n\nfunction parseEditableInputValue(\n value: string,\n inputType: string,\n previousValue: unknown,\n) {\n if (inputType === \"number\") {\n return value === \"\" ? null : Number(value);\n }\n\n if (inputType === \"datetime-local\") {\n if (!value) {\n return null;\n }\n return previousValue instanceof Date ? new Date(value) : value;\n }\n\n return value;\n}\n","import * as React from \"react\";\n\ntype IconProps = React.SVGProps;\n\nfunction Icon({\n children,\n viewBox = \"0 0 24 24\",\n ...props\n}: IconProps & { children: React.ReactNode }) {\n return (\n \n {children}\n \n );\n}\n\nexport function IconAdjustmentsHorizontal(props: IconProps) {\n return (\n \n \n \n \n \n \n \n \n );\n}\n\nexport function IconArchive(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconBell(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconBriefcase(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconCheck(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronDown(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronLeft(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronRight(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronUp(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronsLeft(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconChevronsRight(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconClock(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconDatabase(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconDots(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconDownload(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconEdit(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconEye(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconEyeOff(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconFileUpload(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconInbox(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconLayoutGrid(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconList(props: IconProps) {\n return (\n \n \n \n \n \n \n \n \n );\n}\n\nexport function IconRefresh(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconSearch(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconSelector(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconSparkles(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconStar(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconUserCheck(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconX(props: IconProps) {\n return (\n \n \n \n \n );\n}\n","import * as React from \"react\";\nimport { flexRender, type CellContext } from \"@tanstack/react-table\";\nimport { IconClock } from \"../icons\";\nimport type {\n DataTableCellOverflow,\n DataTableColumnDef,\n} from \"../types\";\nimport type { DataTableUiClassNames } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nexport function renderDataTableCellContent(\n context: CellContext,\n classNames?: DataTableUiClassNames,\n options?: {\n hasCustomCell?: boolean;\n useCustomOverflowDefaults?: boolean;\n },\n) {\n const column = context.column.columnDef as DataTableColumnDef;\n const meta = column.meta;\n const value = context.getValue();\n const hasCustomCell = options?.hasCustomCell ?? false;\n const renderedCellContent = hasCustomCell && column.cell\n ? flexRender(column.cell, context)\n : undefined;\n const hasComplexRenderedContent = isComplexRenderedCellContent(\n renderedCellContent,\n );\n const resolvedOverflow = resolveDataTableCellOverflow({\n context,\n useCustomOverflowDefaults: options?.useCustomOverflowDefaults ?? false,\n value,\n });\n\n if (meta?.type === \"date\" && !hasCustomCell) {\n return (\n \n \n {formatDateValue(value)}\n \n );\n }\n\n const content =\n renderedCellContent !== undefined &&\n renderedCellContent !== null &&\n renderedCellContent !== \"\"\n ? renderedCellContent\n : value == null || value === \"\"\n ? -\n : formatCellValue(value);\n\n return (\n *]:max-w-full [&>*]:min-w-0\",\n )}\n >\n {content}\n \n );\n}\n\nfunction resolveDataTableCellOverflow({\n context,\n useCustomOverflowDefaults,\n value,\n}: {\n context: CellContext;\n useCustomOverflowDefaults: boolean;\n value: unknown;\n}): DataTableCellOverflow {\n const column = context.column.columnDef as DataTableColumnDef;\n const resolvedOverflow =\n typeof column.meta?.overflow === \"function\"\n ? column.meta.overflow({\n row: context.row.original,\n value,\n })\n : column.meta?.overflow;\n\n if (resolvedOverflow) {\n return resolvedOverflow;\n }\n\n return useCustomOverflowDefaults ? \"clip\" : \"truncate\";\n}\n\nfunction getCellOverflowClassName(overflow: DataTableCellOverflow) {\n switch (overflow) {\n case \"clip\":\n return \"block overflow-hidden whitespace-nowrap\";\n case \"wrap\":\n return \"block overflow-hidden whitespace-normal break-words\";\n case \"visible\":\n return \"block overflow-visible whitespace-normal\";\n case \"truncate\":\n default:\n return \"block overflow-hidden text-ellipsis whitespace-nowrap\";\n }\n}\n\nfunction isComplexRenderedCellContent(content: React.ReactNode) {\n if (content == null) {\n return false;\n }\n\n return (\n React.isValidElement(content) ||\n Array.isArray(content) ||\n typeof content === \"object\"\n );\n}\n\nfunction formatDateValue(value: unknown) {\n if (typeof value === \"number\") {\n return new Date(value * 1000).toLocaleString();\n }\n\n if (typeof value === \"string\" && value) {\n return value;\n }\n\n return \"-\";\n}\n\nfunction formatCellValue(value: unknown) {\n if (value instanceof Date) {\n return value.toLocaleString();\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n typeof value === \"bigint\"\n ) {\n return String(value);\n }\n\n try {\n return JSON.stringify(value);\n } catch {\n return \"-\";\n }\n}\n","import * as React from \"react\";\nimport type { Cell, Row } from \"@tanstack/react-table\";\nimport type { RowPinningPosition } from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableDensity,\n DataTableProps,\n DataTableRowLoadingState,\n} from \"../types\";\nimport type { DataTableUiClassNames, DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { renderDataTableCellContent } from \"./data-table-cell-content\";\nimport type { DataTableColumnLayout } from \"./use-column-layout\";\nimport {\n getDensityCellClassName,\n isDataTableInteractiveTarget,\n isDataTableLoadingRow,\n} from \"./data-table-utils\";\nimport { renderEditableCell } from \"./use-row-editing\";\nimport { cellAlignClassName, hideOnClassName } from \"../types\";\n\ntype DataTableBodyRowProps = {\n columnLayouts: ReadonlyMap;\n components: Pick<\n DataTableUiKit,\n \"Checkbox\" | \"Input\" | \"Skeleton\" | \"TableCell\" | \"TableRow\"\n >;\n currentDensity: DataTableDensity;\n draftValues: Record;\n dragAndDrop: DataTableProps[\"dragAndDrop\"];\n explicitCustomCellColumnIds: ReadonlySet;\n getRowClassName: DataTableProps[\"getRowClassName\"];\n isDraggable: boolean;\n isDetailExpanded: boolean;\n isEditing: boolean;\n isExpanded: boolean;\n isInitialLoadingRow: boolean;\n isSelected: boolean;\n loadingState: DataTableRowLoadingState | undefined;\n onRowClick: DataTableProps[\"onRowClick\"];\n pinnedPosition?: Exclude;\n originalRow: TData;\n detailPanel: DataTableProps[\"detailPanel\"];\n row: Row;\n rowIndex: number;\n setDraftValues: React.Dispatch>>;\n stripedRows: boolean;\n uiClassNames: DataTableUiClassNames;\n visibleCells: Array>;\n visibleLeafColumnCount: number;\n};\n\nfunction DataTableBodyRowInner({\n columnLayouts,\n components,\n currentDensity,\n draftValues,\n dragAndDrop,\n explicitCustomCellColumnIds,\n getRowClassName,\n isDraggable,\n isDetailExpanded,\n isEditing,\n isExpanded,\n isInitialLoadingRow,\n isSelected,\n loadingState,\n onRowClick,\n pinnedPosition,\n originalRow,\n detailPanel,\n row,\n rowIndex,\n setDraftValues,\n stripedRows,\n uiClassNames,\n visibleCells,\n visibleLeafColumnCount,\n}: DataTableBodyRowProps) {\n const { Checkbox, Input, Skeleton, TableCell, TableRow } = components;\n const firstDataColumnId = visibleCells.find(\n (cell) => !columnLayouts.get(cell.column.id)?.isUtilityColumn,\n )?.column.id;\n\n return (\n \n 0 ? row.depth : undefined\n }\n data-dtp-slot={\n pinnedPosition ? \"data-table-pinned-row\" : \"data-table-row\"\n }\n data-row-pinned={pinnedPosition}\n draggable={isInitialLoadingRow ? false : isDraggable}\n data-loading={loadingState?.isLoading || undefined}\n data-row-index={isInitialLoadingRow ? undefined : rowIndex}\n data-row-parity={\n stripedRows && !isInitialLoadingRow\n ? rowIndex % 2 === 0\n ? \"odd\"\n : \"even\"\n : undefined\n }\n data-state={\n isInitialLoadingRow ? undefined : isSelected ? \"selected\" : undefined\n }\n tabIndex={onRowClick && !isInitialLoadingRow ? 0 : undefined}\n className={cn(\n !isInitialLoadingRow &&\n getRowClassName?.(originalRow, {\n row: originalRow,\n rowId: row.id,\n rowIndex,\n isEditing,\n isExpanded,\n isLoading: Boolean(loadingState?.isLoading),\n isSelected,\n pinnedPosition: pinnedPosition ?? false,\n }),\n uiClassNames.row,\n pinnedPosition === \"top\" &&\n cn(\"border-b-2\", uiClassNames.rowPinnedTop),\n pinnedPosition === \"bottom\" &&\n cn(\"border-t-2\", uiClassNames.rowPinnedBottom),\n stripedRows &&\n !isInitialLoadingRow &&\n (rowIndex % 2 === 0\n ? uiClassNames.rowOdd\n : uiClassNames.rowEven),\n isSelected && !isInitialLoadingRow && uiClassNames.rowSelected,\n onRowClick && !isInitialLoadingRow && \"cursor-pointer\",\n isInitialLoadingRow && \"pointer-events-none\",\n )}\n onClick={(event: React.MouseEvent) => {\n if (isInitialLoadingRow) {\n return;\n }\n\n if (isDataTableInteractiveTarget(event.target, event.currentTarget)) {\n return;\n }\n\n void onRowClick?.({ row: originalRow, rowId: row.id });\n }}\n onKeyDown={(event: React.KeyboardEvent) => {\n if (\n isInitialLoadingRow ||\n !onRowClick ||\n (event.key !== \"Enter\" && event.key !== \" \")\n ) {\n return;\n }\n\n if (isDataTableInteractiveTarget(event.target, event.currentTarget)) {\n return;\n }\n\n event.preventDefault();\n void onRowClick({ row: originalRow, rowId: row.id });\n }}\n onDragStart={(event: React.DragEvent) => {\n if (isInitialLoadingRow) {\n return;\n }\n\n dragAndDrop?.onRowDragStart?.({\n row: originalRow,\n rowId: row.id,\n event,\n });\n }}\n onDragEnd={(event: React.DragEvent) => {\n if (isInitialLoadingRow) {\n return;\n }\n\n dragAndDrop?.onRowDragEnd?.({\n row: originalRow,\n rowId: row.id,\n event,\n });\n }}\n >\n {visibleCells.map((cell) => {\n const meta = (\n cell.column.columnDef as DataTableColumnDef\n ).meta;\n const cellContext = cell.getContext();\n const value = cell.getValue();\n const layout = columnLayouts.get(cell.column.id);\n const isSelectionColumn = layout?.isSelectionColumn ?? false;\n const isExpansionColumn = layout?.isExpansionColumn ?? false;\n const isActionsColumn = layout?.isActionsColumn ?? false;\n const isSpacerColumn = layout?.isSpacerColumn ?? false;\n const hideClassName = hideOnClassName(meta?.hideOn);\n const cellClassName =\n isInitialLoadingRow || isDataTableLoadingRow(originalRow)\n ? undefined\n : typeof meta?.cellClassName === \"function\"\n ? meta.cellClassName({\n row: originalRow,\n value,\n })\n : meta?.cellClassName;\n\n return (\n \n 0 && cell.column.id === firstDataColumnId\n ? { paddingInlineStart: `${row.depth}rem` }\n : undefined\n }\n >\n {loadingState?.isLoading ? (\n (meta?.skeleton?.(cellContext) ??\n loadingState.skeleton ?? (\n \n ))\n ) : isEditing &&\n cell.column.id !== \"__select__\" &&\n cell.column.id !== \"__expand__\" &&\n cell.column.id !== \"__actions__\" ? (\n renderEditableCell(cellContext, draftValues, setDraftValues, {\n Checkbox,\n Input,\n })\n ) : (\n renderDataTableCellContent(cellContext, uiClassNames, {\n hasCustomCell:\n explicitCustomCellColumnIds.has(cell.column.id) ||\n isSelectionColumn ||\n isExpansionColumn ||\n isActionsColumn ||\n isSpacerColumn,\n useCustomOverflowDefaults:\n explicitCustomCellColumnIds.has(cell.column.id) ||\n isSelectionColumn ||\n isExpansionColumn ||\n isActionsColumn ||\n isSpacerColumn,\n })\n )}\n \n \n );\n })}\n \n {!isInitialLoadingRow && detailPanel && isDetailExpanded ? (\n \n \n {detailPanel.render({\n row: originalRow,\n rowId: row.id,\n tableRow: row,\n })}\n \n \n ) : null}\n \n );\n}\n\nfunction areDataTableBodyRowsEqual(\n previous: DataTableBodyRowProps,\n next: DataTableBodyRowProps,\n) {\n return (\n previous.row.id === next.row.id &&\n previous.row.original === next.row.original &&\n previous.rowIndex === next.rowIndex &&\n previous.isSelected === next.isSelected &&\n previous.isInitialLoadingRow === next.isInitialLoadingRow &&\n previous.isEditing === next.isEditing &&\n previous.isExpanded === next.isExpanded &&\n previous.isDraggable === next.isDraggable &&\n sameLoadingState(previous.loadingState, next.loadingState) &&\n sameVisibleCells(previous.visibleCells, next.visibleCells) &&\n previous.components === next.components &&\n sameColumnLayouts(\n previous.columnLayouts,\n next.columnLayouts,\n next.visibleCells,\n ) &&\n previous.currentDensity === next.currentDensity &&\n previous.detailPanel === next.detailPanel &&\n previous.isDetailExpanded === next.isDetailExpanded &&\n previous.pinnedPosition === next.pinnedPosition &&\n previous.onRowClick === next.onRowClick &&\n previous.dragAndDrop === next.dragAndDrop &&\n previous.getRowClassName === next.getRowClassName &&\n previous.stripedRows === next.stripedRows &&\n previous.uiClassNames === next.uiClassNames &&\n previous.explicitCustomCellColumnIds === next.explicitCustomCellColumnIds &&\n (!previous.isEditing || previous.draftValues === next.draftValues)\n );\n}\n\nfunction sameLoadingState(\n previous: DataTableRowLoadingState | undefined,\n next: DataTableRowLoadingState | undefined,\n) {\n return (\n previous?.isLoading === next?.isLoading &&\n previous?.skeleton === next?.skeleton\n );\n}\n\nfunction sameVisibleCells(\n previous: Array>,\n next: Array>,\n) {\n return (\n previous.length === next.length &&\n previous.every((cell, index) => {\n const nextCell = next[index];\n return nextCell?.id === cell.id && nextCell.column.id === cell.column.id;\n })\n );\n}\n\nfunction sameColumnLayouts(\n previous: ReadonlyMap,\n next: ReadonlyMap,\n cells: Array>,\n) {\n return cells.every((cell) => {\n const previousLayout = previous.get(cell.column.id);\n const nextLayout = next.get(cell.column.id);\n\n return (\n previousLayout?.fixedSide === nextLayout?.fixedSide &&\n previousLayout?.isActionsColumn === nextLayout?.isActionsColumn &&\n previousLayout?.isExpansionColumn === nextLayout?.isExpansionColumn &&\n previousLayout?.isSelectionColumn === nextLayout?.isSelectionColumn &&\n previousLayout?.isSpacerColumn === nextLayout?.isSpacerColumn &&\n previousLayout?.isUtilityColumn === nextLayout?.isUtilityColumn &&\n previousLayout?.pinnedClassName === nextLayout?.pinnedClassName &&\n previousLayout?.utilityClassName === nextLayout?.utilityClassName &&\n sameCellStyle(previousLayout?.cellStyle, nextLayout?.cellStyle)\n );\n });\n}\n\nfunction sameCellStyle(\n previous: React.CSSProperties | undefined,\n next: React.CSSProperties | undefined,\n) {\n return (\n previous?.width === next?.width &&\n previous?.minWidth === next?.minWidth &&\n previous?.maxWidth === next?.maxWidth &&\n previous?.left === next?.left &&\n previous?.right === next?.right\n );\n}\n\nexport const DataTableBodyRow = React.memo(\n DataTableBodyRowInner,\n areDataTableBodyRowsEqual,\n) as typeof DataTableBodyRowInner;\n","import * as React from \"react\";\nimport { flexRender } from \"@tanstack/react-table\";\nimport { IconChevronDown, IconSelector } from \"../icons\";\nimport type { Header, SortingState } from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableColumnGroupDef,\n DataTableDensity,\n DataTableProps,\n} from \"../types\";\nimport type { DataTableUiClassNames, DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport type { DataTableColumnLayout } from \"./use-column-layout\";\nimport {\n getDensityHeaderClassName,\n isUtilityColumnId,\n} from \"./data-table-utils\";\nimport { headerAlignClassName, hideOnClassName } from \"../types\";\n\ntype DataTableHeaderCellProps = {\n columnGroupHeaderHeight: DataTableProps[\"columnGroupHeaderHeight\"];\n currentDensity: DataTableDensity;\n currentSorting: SortingState;\n dir: NonNullable[\"dir\"]>;\n draggedColumnIdRef: React.MutableRefObject;\n enableColumnReordering: boolean;\n enableColumnResizing: boolean;\n header: Header;\n headerGroupHeaders: Array>;\n layout: DataTableColumnLayout;\n primeColumnForResize: (columnId: string, currentSize: number) => void;\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n resizeColumnLabel: string;\n resetColumnSize: (columnId: string) => void;\n // Rendered through flexRender inside the header def; carried as a prop so\n // the memo comparator re-renders the selection header when it changes.\n selectionState?: boolean | \"indeterminate\";\n TableHead: DataTableUiKit[\"TableHead\"];\n uiClassNames: DataTableUiClassNames;\n};\n\nfunction DataTableHeaderCellInner({\n columnGroupHeaderHeight,\n currentDensity,\n currentSorting,\n dir,\n draggedColumnIdRef,\n enableColumnReordering,\n enableColumnResizing,\n header,\n headerGroupHeaders,\n layout,\n primeColumnForResize,\n reorderColumn,\n resizeColumnLabel,\n resetColumnSize,\n TableHead,\n uiClassNames,\n}: DataTableHeaderCellProps) {\n const meta = (header.column.columnDef as DataTableColumnDef)\n .meta;\n const headerContentId = React.useId();\n const isColumnGroup =\n !header.isPlaceholder && header.subHeaders.length > 0;\n const groupDefinition = isColumnGroup\n ? (header.column.columnDef as DataTableColumnGroupDef)\n : undefined;\n const canSort = header.column.getCanSort();\n const sortingState = header.column.getIsSorted();\n const sortingIndex = currentSorting.findIndex(\n (sort) => sort.id === header.column.id,\n );\n const canReorderColumn =\n enableColumnReordering &&\n !header.isPlaceholder &&\n !isColumnGroup &&\n !layout.isUtilityColumn &&\n !layout.isSpacerColumn;\n const hideClassName = hideOnClassName(meta?.hideOn);\n\n return (\n ) => {\n draggedColumnIdRef.current = header.column.id;\n event.dataTransfer.effectAllowed = \"move\";\n }\n : undefined\n }\n onDragOver={\n canReorderColumn\n ? (event: React.DragEvent) => {\n event.preventDefault();\n event.dataTransfer.dropEffect = \"move\";\n }\n : undefined\n }\n onDrop={\n canReorderColumn\n ? (event: React.DragEvent) => {\n event.preventDefault();\n const sourceColumnId = draggedColumnIdRef.current;\n draggedColumnIdRef.current = null;\n if (sourceColumnId) {\n reorderColumn(sourceColumnId, header.column.id);\n }\n }\n : undefined\n }\n onKeyDown={\n canReorderColumn\n ? (event: React.KeyboardEvent) => {\n if (\n !event.altKey ||\n (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\")\n ) {\n return;\n }\n\n event.preventDefault();\n const headers = headerGroupHeaders.filter(\n (item) =>\n !isUtilityColumnId(item.column.id) &&\n item.column.id !== \"__spacer__\",\n );\n const currentIndex = headers.findIndex(\n (item) => item.column.id === header.column.id,\n );\n const target =\n headers[\n (event.key === \"ArrowLeft\") !== (dir === \"rtl\")\n ? currentIndex - 1\n : currentIndex + 1\n ];\n if (target) {\n reorderColumn(header.column.id, target.column.id);\n }\n }\n : undefined\n }\n >\n {header.isPlaceholder ? null : canSort ? (\n \n \n {flexRender(header.column.columnDef.header, header.getContext())}\n \n {sortingState ? (\n <>\n \n {currentSorting.length > 1 && sortingIndex >= 0 ? (\n \n {sortingIndex + 1}\n \n ) : null}\n \n ) : (\n \n )}\n \n ) : (\n layout.isUtilityColumn || layout.isSpacerColumn ? (\n flexRender(header.column.columnDef.header, header.getContext())\n ) : (\n \n {flexRender(header.column.columnDef.header, header.getContext())}\n \n )\n )}\n\n {enableColumnResizing &&\n !header.isPlaceholder &&\n header.column.getCanResize() ? (\n {\n for (const leafHeader of getResizableLeafHeaders(header)) {\n resetColumnSize(leafHeader.column.id);\n }\n }}\n onMouseDown={(event) => {\n for (const leafHeader of getResizableLeafHeaders(header)) {\n primeColumnForResize(\n leafHeader.column.id,\n leafHeader.getSize(),\n );\n }\n header.getResizeHandler()(event);\n }}\n onTouchStart={(event) => {\n for (const leafHeader of getResizableLeafHeaders(header)) {\n primeColumnForResize(\n leafHeader.column.id,\n leafHeader.getSize(),\n );\n }\n header.getResizeHandler()(event);\n }}\n onKeyDown={(event) => {\n if (event.altKey) {\n return;\n }\n if (event.key === \"Home\") {\n event.preventDefault();\n for (const leafHeader of getResizableLeafHeaders(header)) {\n resetColumnSize(leafHeader.column.id);\n }\n return;\n }\n if (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\") {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n const grows =\n (event.key === \"ArrowRight\") !== (dir === \"rtl\");\n resizeHeaderBy(\n header,\n (grows ? 1 : -1) * (event.shiftKey ? 25 : 10),\n );\n }}\n className={cn(\n \"absolute inset-y-0 z-50 h-full w-3 cursor-col-resize touch-none select-none ltr:right-0 ltr:translate-x-1/2 rtl:left-0 rtl:-translate-x-1/2 after:absolute after:top-0 after:left-1/2 after:h-full after:w-px after:-translate-x-1/2\",\n uiClassNames.resizeHandle ??\n \"after:bg-current after:opacity-20 hover:after:opacity-70\",\n header.column.getIsResizing() &&\n (uiClassNames.resizeHandleActive ?? \"after:opacity-100\"),\n )}\n />\n ) : null}\n \n );\n}\n\nfunction areDataTableHeaderCellsEqual(\n previous: DataTableHeaderCellProps,\n next: DataTableHeaderCellProps,\n) {\n return (\n previous.header.id === next.header.id &&\n previous.header.column.id === next.header.column.id &&\n previous.header.column.columnDef === next.header.column.columnDef &&\n previous.header.colSpan === next.header.colSpan &&\n previous.header.isPlaceholder === next.header.isPlaceholder &&\n sameSubHeaders(previous.header, next.header) &&\n previous.currentDensity === next.currentDensity &&\n previous.columnGroupHeaderHeight === next.columnGroupHeaderHeight &&\n previous.dir === next.dir &&\n previous.enableColumnReordering === next.enableColumnReordering &&\n previous.enableColumnResizing === next.enableColumnResizing &&\n previous.TableHead === next.TableHead &&\n previous.uiClassNames === next.uiClassNames &&\n previous.draggedColumnIdRef === next.draggedColumnIdRef &&\n previous.primeColumnForResize === next.primeColumnForResize &&\n previous.reorderColumn === next.reorderColumn &&\n previous.resizeColumnLabel === next.resizeColumnLabel &&\n previous.resetColumnSize === next.resetColumnSize &&\n previous.selectionState === next.selectionState &&\n sameSorting(previous.currentSorting, next.currentSorting) &&\n sameHeaderGroupHeaders(\n previous.headerGroupHeaders,\n next.headerGroupHeaders,\n ) &&\n sameHeaderLayout(previous.layout, next.layout)\n );\n}\n\nfunction getResizableLeafHeaders(header: Header) {\n if (!header.subHeaders.length) {\n return [header];\n }\n\n return header\n .getLeafHeaders()\n .filter((leafHeader) => !leafHeader.subHeaders.length);\n}\n\nfunction getHeaderMinimumSize(header: Header) {\n return getResizableLeafHeaders(header).reduce(\n (total, leafHeader) =>\n total + (leafHeader.column.columnDef.minSize ?? 20),\n 0,\n );\n}\n\nfunction getHeaderMaximumSize(header: Header) {\n return getResizableLeafHeaders(header).reduce(\n (total, leafHeader) =>\n total + (leafHeader.column.columnDef.maxSize ?? Number.MAX_SAFE_INTEGER),\n 0,\n );\n}\n\nfunction resizeHeaderBy(\n header: Header,\n delta: number,\n) {\n const leafHeaders = getResizableLeafHeaders(header);\n const deltaPerLeaf = delta / leafHeaders.length;\n header.getContext().table.setColumnSizing((current) => {\n const next = { ...current };\n\n for (const leafHeader of leafHeaders) {\n const column = leafHeader.column;\n const minimum = column.columnDef.minSize ?? 20;\n const maximum =\n column.columnDef.maxSize ?? Number.MAX_SAFE_INTEGER;\n next[column.id] = Math.min(\n maximum,\n Math.max(minimum, column.getSize() + deltaPerLeaf),\n );\n }\n\n return next;\n });\n}\n\nfunction sameSubHeaders(\n previous: Header,\n next: Header,\n) {\n return (\n previous.subHeaders.length === next.subHeaders.length &&\n previous.subHeaders.every(\n (header, index) => next.subHeaders[index]?.id === header.id,\n )\n );\n}\n\nfunction sameSorting(previous: SortingState, next: SortingState) {\n return (\n previous.length === next.length &&\n previous.every((sort, index) => {\n const nextSort = next[index];\n return nextSort?.id === sort.id && nextSort.desc === sort.desc;\n })\n );\n}\n\nfunction sameHeaderGroupHeaders(\n previous: Array>,\n next: Array>,\n) {\n return (\n previous.length === next.length &&\n previous.every((header, index) => next[index]?.id === header.id)\n );\n}\n\nfunction sameHeaderLayout(\n previous: DataTableColumnLayout,\n next: DataTableColumnLayout,\n) {\n return (\n previous.fixedSide === next.fixedSide &&\n previous.isSpacerColumn === next.isSpacerColumn &&\n previous.isUtilityColumn === next.isUtilityColumn &&\n previous.pinnedClassName === next.pinnedClassName &&\n previous.utilityClassName === next.utilityClassName &&\n previous.headerStyle?.width === next.headerStyle?.width &&\n previous.headerStyle?.minWidth === next.headerStyle?.minWidth &&\n previous.headerStyle?.maxWidth === next.headerStyle?.maxWidth &&\n previous.headerStyle?.left === next.headerStyle?.left &&\n previous.headerStyle?.right === next.headerStyle?.right\n );\n}\n\nexport const DataTableHeaderCell = React.memo(\n DataTableHeaderCellInner,\n areDataTableHeaderCellsEqual,\n) as typeof DataTableHeaderCellInner;\n","import * as React from \"react\";\nimport type {\n Column,\n ExpandedState,\n Header,\n RowPinningPosition,\n Row,\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableDensity,\n DataTableProps,\n DataTableRowLoadingState,\n} from \"../types\";\nimport type { DataTableUiClassNames, DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { DataTableBodyRow } from \"./data-table-body-row\";\nimport { DataTableHeaderCell } from \"./data-table-header-cell\";\nimport type { DataTableColumnLayout } from \"./use-column-layout\";\nimport { isDataTableLoadingRow } from \"./data-table-utils\";\nimport type { DataTableLabels } from \"../types\";\n\nexport type DataTableTablePanelProps = {\n ariaDescribedBy: string | undefined;\n ariaLabelledBy: string | undefined;\n bodyRowComponents: Pick<\n DataTableUiKit,\n \"Checkbox\" | \"Input\" | \"Skeleton\" | \"TableCell\" | \"TableRow\"\n >;\n columnLayouts: ReadonlyMap;\n columnGroupHeaderHeight: DataTableProps[\"columnGroupHeaderHeight\"];\n currentDensity: DataTableDensity;\n currentDetailExpanded: ExpandedState;\n currentSorting: DataTableProps[\"sorting\"];\n dir: NonNullable[\"dir\"]>;\n DataTableEmptyState: React.ElementType;\n dragAndDrop: DataTableProps[\"dragAndDrop\"];\n draggedColumnIdRef: React.RefObject;\n draftValues: Record;\n editingRowId: string | null;\n emptyNode: React.ReactNode;\n enableColumnReordering: boolean;\n enableColumnResizing: boolean;\n explicitCustomCellColumnIds: ReadonlySet;\n fillMinWidth: number;\n flexGrow: boolean;\n getColumnLayout: (columnId: string) => DataTableColumnLayout;\n getRowClassName: DataTableProps[\"getRowClassName\"];\n getRowLoadingState: DataTableProps[\"getRowLoadingState\"];\n infiniteScroll: DataTableProps[\"infiniteScroll\"];\n layoutMode: \"fill\" | \"fit\";\n localSearchValue: string;\n onRowClick: DataTableProps[\"onRowClick\"];\n primeColumnForResize: (columnId: string, currentSize: number) => void;\n renderedRows: Array>;\n detailPanel: DataTableProps[\"detailPanel\"];\n topPinnedRows: Array>;\n bottomPinnedRows: Array>;\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n resetColumnSize: (columnId: string) => void;\n resolvedLabels: DataTableLabels;\n rowsToRender: Array<{ row: Row; rowIndex: number }>;\n ScrollArea: DataTableUiKit[\"ScrollArea\"];\n ScrollBar: DataTableUiKit[\"ScrollBar\"];\n sentinelRef: React.RefObject;\n setDraftValues: React.Dispatch>>;\n shouldRenderInitialLoading: boolean;\n stickyHeader: boolean;\n stripedRows: boolean;\n summaryRows: NonNullable[\"summaryRows\"]>;\n table: TanStackTable;\n tableClassName: string | undefined;\n tableContainerClassName: string | undefined;\n Table: DataTableUiKit[\"Table\"];\n TableBody: DataTableUiKit[\"TableBody\"];\n TableCell: DataTableUiKit[\"TableCell\"];\n TableFooter: DataTableUiKit[\"TableFooter\"];\n TableHead: DataTableUiKit[\"TableHead\"];\n TableHeader: DataTableUiKit[\"TableHeader\"];\n TableRow: DataTableUiKit[\"TableRow\"];\n tableScrollContainerRef: React.RefObject;\n tableScrollElement?: HTMLElement | null;\n uiClassNames: DataTableUiClassNames;\n viewportHeight?: number;\n virtualization?: DataTableProps[\"virtualization\"];\n virtualPaddingBottom: number;\n virtualPaddingTop: number;\n visibleLeafColumnCount: number;\n visibleLeafColumns: Array>;\n};\n\nexport function DataTableTablePanel({\n ariaDescribedBy,\n ariaLabelledBy,\n bodyRowComponents,\n columnLayouts,\n columnGroupHeaderHeight,\n currentDensity,\n currentDetailExpanded,\n currentSorting = [],\n dir,\n DataTableEmptyState,\n dragAndDrop,\n draggedColumnIdRef,\n draftValues,\n editingRowId,\n emptyNode,\n enableColumnReordering,\n enableColumnResizing,\n explicitCustomCellColumnIds,\n fillMinWidth,\n flexGrow,\n getColumnLayout,\n getRowClassName,\n getRowLoadingState,\n infiniteScroll,\n layoutMode,\n localSearchValue,\n onRowClick,\n primeColumnForResize,\n renderedRows,\n detailPanel,\n topPinnedRows,\n bottomPinnedRows,\n reorderColumn,\n resetColumnSize,\n resolvedLabels,\n rowsToRender,\n ScrollArea,\n ScrollBar,\n sentinelRef,\n setDraftValues,\n shouldRenderInitialLoading,\n stickyHeader,\n stripedRows,\n summaryRows,\n table,\n tableClassName,\n tableContainerClassName,\n Table,\n TableBody,\n TableCell,\n TableFooter = \"tfoot\",\n TableHead,\n TableHeader,\n TableRow,\n tableScrollContainerRef,\n uiClassNames,\n virtualPaddingBottom,\n virtualPaddingTop,\n visibleLeafColumnCount,\n visibleLeafColumns,\n}: DataTableTablePanelProps) {\n const selectionState: boolean | \"indeterminate\" =\n table.getIsAllPageRowsSelected()\n ? true\n : table.getIsSomePageRowsSelected()\n ? \"indeterminate\"\n : false;\n const filteredRows = table.getFilteredRowModel().rows;\n const summarySourceRows = React.useMemo(\n () =>\n summaryRows.length\n ? filteredRows.map((row) => row.original)\n : [],\n [filteredRows, summaryRows.length],\n );\n const renderBodyRow = (\n row: Row,\n rowIndex: number,\n pinnedPosition?: Exclude,\n ) => {\n const originalRow = row.original;\n const isInitialLoadingRow = isDataTableLoadingRow(originalRow);\n const loadingState = isInitialLoadingRow\n ? { isLoading: true }\n : getRowLoadingState?.(originalRow, rowIndex);\n const resolvedLoadingState: DataTableRowLoadingState | undefined =\n typeof loadingState === \"boolean\"\n ? { isLoading: loadingState }\n : loadingState;\n const isDraggable = isInitialLoadingRow\n ? false\n : (dragAndDrop?.getRowDraggable?.(originalRow) ?? false);\n\n return (\n \n );\n };\n\n return (\n \n \n \n
    \n \n \n {table.getVisibleLeafColumns().map((column) => {\n const layout = getColumnLayout(column.id);\n return ;\n })}\n \n \n {table.getHeaderGroups().map((headerGroup) => (\n \n {headerGroup.headers.map((header) => (\n \n ))}\n \n ))}\n \n \n {topPinnedRows.length || renderedRows.length || bottomPinnedRows.length ? (\n <>\n {topPinnedRows.map((row, index) =>\n renderBodyRow(row, index, \"top\"),\n )}\n {virtualPaddingTop > 0 ? (\n \n \n \n ) : null}\n {rowsToRender.map(({ row, rowIndex }) =>\n renderBodyRow(row, rowIndex + topPinnedRows.length),\n )}\n {virtualPaddingBottom > 0 ? (\n \n \n \n ) : null}\n {bottomPinnedRows.map((row, index) =>\n renderBodyRow(\n row,\n topPinnedRows.length + renderedRows.length + index,\n \"bottom\",\n ),\n )}\n \n ) : (\n \n \n
    \n {emptyNode ?? (\n \n )}\n
    \n \n
    \n )}\n
    \n {summaryRows.length ? (\n \n {summaryRows.map((summaryRow) => (\n \n {visibleLeafColumns.map((column, index) => {\n const content =\n summaryRow.cells[column.id] ??\n (index === 0 ? summaryRow.label : null);\n return (\n \n {typeof content === \"function\"\n ? content({\n rows: summarySourceRows,\n columnId: column.id,\n })\n : content}\n \n );\n })}\n \n ))}\n \n ) : null}\n \n
    \n\n {infiniteScroll?.enabled &&\n renderedRows.length &&\n !shouldRenderInitialLoading ? (\n
    \n
    \n
    \n ) : null}\n \n \n
    \n \n );\n}\n\nfunction getHeaderLayout(\n header: Header,\n getColumnLayout: (columnId: string) => DataTableColumnLayout,\n) {\n const columnLayout = getColumnLayout(header.column.id);\n if (header.isPlaceholder || !header.subHeaders.length) {\n return columnLayout;\n }\n\n const leafLayouts = header\n .getLeafHeaders()\n .filter((leafHeader) => !leafHeader.subHeaders.length)\n .map((leafHeader) => getColumnLayout(leafHeader.column.id));\n const fixedSide = leafLayouts[0]?.fixedSide;\n\n if (\n !fixedSide ||\n !leafLayouts.every((layout) => layout.fixedSide === fixedSide)\n ) {\n return columnLayout;\n }\n\n const edgeLayout =\n fixedSide === \"left\" ? leafLayouts[0] : leafLayouts.at(-1);\n\n return {\n ...columnLayout,\n fixedSide,\n headerStyle: edgeLayout?.headerStyle\n ? {\n left: edgeLayout.headerStyle.left,\n right: edgeLayout.headerStyle.right,\n }\n : undefined,\n pinnedClassName: edgeLayout?.pinnedClassName,\n };\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-TER4YPQI.js b/dist/chunk-DV3HO2TR.js similarity index 97% rename from dist/chunk-TER4YPQI.js rename to dist/chunk-DV3HO2TR.js index d8c0fce..368430d 100644 --- a/dist/chunk-TER4YPQI.js +++ b/dist/chunk-DV3HO2TR.js @@ -1,2 +1,2 @@ -import {X as X$1,a as a$1,c,d,f,h,i,j as j$1,k,l,m,n,p,o,q as q$1,s,t,u,z,w,B,G,H,I,J as J$1,L,b,N,O as O$1,P,Q as Q$1,R,T,S,U,V as V$1,W as W$1}from'./chunk-ERWHHOBD.js';import {a}from'./chunk-674VSOYY.js';import'react';import {jsx}from'react/jsx-runtime';function e(N,z){return function({className:F,...K}){return jsx(N,{className:a(z,F),...K})}}var $=e(a$1,"rounded-md border border-cyan-400/45 bg-black/75 font-mono text-[0.8rem] tracking-[0.045em] text-cyan-50 uppercase shadow-[0_0_0_1px_rgba(34,211,238,0.12),0_0_18px_rgba(34,211,238,0.1)] data-[variant=default]:bg-cyan-300 data-[variant=default]:text-slate-950 data-[variant=outline]:bg-black/55 data-[variant=ghost]:border-transparent data-[variant=ghost]:bg-transparent data-[variant=ghost]:hover:bg-cyan-400/10 data-[variant=secondary]:bg-cyan-400/12 data-[variant=destructive]:border-rose-400/50 data-[variant=destructive]:bg-rose-500/15 data-[variant=destructive]:text-rose-200"),O=e(c,"rounded-md border border-cyan-400/35 bg-[linear-gradient(180deg,rgba(0,229,255,0.055),transparent_58%),rgba(1,8,11,0.9)] font-mono text-cyan-50 shadow-[inset_0_1px_0_rgba(125,211,252,0.08),0_0_0_1px_rgba(34,211,238,0.12),0_0_28px_rgba(34,211,238,0.08)] ring-0"),V=e(d,"px-5 pt-5 pb-3"),W=e(f,"px-5 pb-5"),q=e(h,"rounded-sm border-cyan-400/55 bg-black/65 ring-cyan-300/70 data-checked:bg-cyan-300 data-checked:text-slate-950 data-checked:ring-cyan-300"),J=e(i,"rounded-md border border-cyan-400/35 bg-black/92 font-mono text-cyan-50 shadow-[0_0_26px_rgba(34,211,238,0.16)] ring-0 before:hidden **:data-[slot$=-item]:focus:bg-cyan-400/12 **:data-[slot$=-item]:data-highlighted:bg-cyan-400/12 **:data-[slot$=-separator]:bg-cyan-400/18 **:data-[slot$=-trigger]:focus:bg-cyan-400/12"),Q=e(j$1,"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50 data-[variant=destructive]:text-rose-200 data-[variant=destructive]:focus:bg-rose-500/15"),X=e(k,"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50"),Y=e(l,"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50"),Z=e(m,"font-mono text-[0.68rem] tracking-[0.16em] text-cyan-200/70 uppercase"),j=e(n,"bg-cyan-400/20"),ee=e(p,"rounded-md border border-cyan-400/35 bg-black/92 font-mono text-cyan-50 shadow-[0_0_26px_rgba(34,211,238,0.16)] ring-0 before:hidden"),te=e(o,"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50 data-open:bg-cyan-400/12 data-open:text-cyan-50"),ae=e(q$1,"rounded-md border-cyan-400/35 bg-black/80 font-mono text-cyan-50"),re=e(s,"[&[data-variant=icon]]:rounded-xl [&[data-variant=icon]]:bg-cyan-400/12 [&[data-variant=icon]]:text-cyan-200"),ne=e(t,"text-cyan-50"),oe=e(u,"text-cyan-100/70"),de=e(z,"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 placeholder:text-cyan-100/45 focus-visible:ring-cyan-300/70"),ie=e(w,"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 shadow-[0_0_18px_rgba(34,211,238,0.06)]"),ce=e(B,"rounded-md border-cyan-400/35 bg-black/55 font-mono text-cyan-50 hover:bg-cyan-400/12 data-[active=true]:bg-cyan-300 data-[active=true]:text-slate-950"),be=e(G,"rounded-md border border-cyan-400/35 bg-black/72 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_26px_rgba(34,211,238,0.08)]"),se=e(H,"[&>[data-slot=scroll-area-thumb]]:bg-cyan-300/65"),le=e(I,"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 focus-visible:ring-cyan-300/70"),pe=e(J$1,"rounded-md border border-cyan-400/35 bg-black/95 font-mono text-cyan-50 ring-0 shadow-[0_0_26px_rgba(34,211,238,0.16)] before:hidden"),me=e(L,"rounded-sm focus:bg-cyan-400/12 focus:text-cyan-50"),ge=e(b,"bg-cyan-400/20"),ye=e(N,"rounded-md bg-cyan-400/12"),ue=e(O$1,"border-separate border-spacing-0 border border-cyan-400/45 bg-black/72 font-mono text-[0.84rem] text-cyan-50 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_24px_rgba(34,211,238,0.08)]"),xe=e(P,"[&_tr]:border-cyan-400/45"),ve=e(Q$1,"[&_tr:last-child]:border-b"),_e=e(R,"border-cyan-400/40 bg-cyan-400/10 font-mono"),Te=e(T,"h-12 border-b border-cyan-400/45 bg-cyan-950/20 px-3 font-mono text-[0.68rem] font-bold tracking-[0.18em] text-cyan-300 uppercase"),Ce=e(S,"border-cyan-400/25 hover:bg-cyan-400/10 data-[state=selected]:bg-cyan-400/15"),fe=e(U,"border-b border-cyan-400/16 px-3 py-3 font-mono text-cyan-50"),ke=e(V$1,"font-mono text-cyan-100/65"),we=e(W$1,"rounded-md bg-black text-cyan-50 ring-1 ring-cyan-400/35 shadow-[0_0_22px_rgba(34,211,238,0.18)] [&>svg]:bg-black [&>svg]:fill-black"),Me={...X$1,rootClassName:"dtp-thegridcn",classNames:{card:"hover:bg-cyan-400/10 data-[state=selected]:bg-cyan-400/15",cardGrid:"bg-transparent",cardItem:"min-w-0",cardOverlay:"from-black/95 via-black/75 to-transparent",cardScrollArea:"bg-transparent",cardSelected:"bg-cyan-400/15 ring-cyan-300/70",cardUnselected:"border-cyan-400/35",cardViewport:"bg-transparent",cellBorder:"border-cyan-400/16",columnGroupHeader:"bg-cyan-400/10 text-cyan-200",dragActive:"rounded-md border-dashed border-cyan-300",emptyState:"border-cyan-400/35 bg-black/80",footer:"border-cyan-400/40 bg-black/80 text-cyan-50",headerSortIcon:"text-cyan-100/65",mutedText:"text-cyan-100/70",paginationSelectTrigger:"border-cyan-400/45 bg-black/70 text-cyan-50",paginationTotal:"text-cyan-100/70",pinnedColumn:"border-cyan-400/25",pinnedUtilityColumn:"bg-black/80",resizeHandle:"after:bg-cyan-400/20 hover:after:bg-cyan-300",resizeHandleActive:"after:bg-cyan-300",row:"hover:bg-cyan-400/10 data-[state=selected]:!bg-cyan-400/15",rowSelected:"!bg-cyan-400/15",tableContainer:"border-cyan-400/35 bg-black/72 text-cyan-50 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_26px_rgba(34,211,238,0.08)]",tableScrollArea:"bg-black/72",tableStickyHeader:"sticky top-0 z-30 bg-black/90 backdrop-blur [&_th]:border-cyan-400/45 [&_th]:bg-black/90",toolbarCompactIconButton:"size-7",toolbarIconButton:"text-cyan-100/70 hover:text-cyan-50",toolbarInputButton:"border-cyan-400/45 bg-black/70 text-cyan-50"},Button:$,Card:O,CardContent:W,CardHeader:V,Checkbox:q,DropdownMenuCheckboxItem:X,DropdownMenuContent:J,DropdownMenuItem:Q,DropdownMenuLabel:Z,DropdownMenuRadioItem:Y,DropdownMenuSeparator:j,DropdownMenuSubContent:ee,DropdownMenuSubTrigger:te,Empty:ae,EmptyDescription:oe,EmptyMedia:re,EmptyTitle:ne,Input:de,InputGroup:ie,PaginationLink:ce,ScrollArea:be,ScrollBar:se,SelectContent:pe,SelectItem:me,SelectTrigger:le,Separator:ge,Skeleton:ye,Table:ue,TableBody:ve,TableCaption:ke,TableCell:fe,TableFooter:_e,TableHead:Te,TableHeader:xe,TableRow:Ce,TooltipContent:we};export{Me as a};//# sourceMappingURL=chunk-TER4YPQI.js.map -//# sourceMappingURL=chunk-TER4YPQI.js.map \ No newline at end of file +import {X as X$1,a as a$1,c,d,f,h,i,j as j$1,k,l,m,n,p,o,q as q$1,s,t,u,z,w,B,G,H,I,J as J$1,L,b,N,O as O$1,P,Q as Q$1,R,T,S,U,V as V$1,W as W$1}from'./chunk-LDAX7PX5.js';import {a}from'./chunk-GSCYQ624.js';import'react';import {jsx}from'react/jsx-runtime';function e(N,z){return function({className:F,...K}){return jsx(N,{className:a(z,F),...K})}}var $=e(a$1,"rounded-md border border-cyan-400/45 bg-black/75 font-mono text-[0.8rem] tracking-[0.045em] text-cyan-50 uppercase shadow-[0_0_0_1px_rgba(34,211,238,0.12),0_0_18px_rgba(34,211,238,0.1)] data-[variant=default]:bg-cyan-300 data-[variant=default]:text-slate-950 data-[variant=outline]:bg-black/55 data-[variant=ghost]:border-transparent data-[variant=ghost]:bg-transparent data-[variant=ghost]:hover:bg-cyan-400/10 data-[variant=secondary]:bg-cyan-400/12 data-[variant=destructive]:border-rose-400/50 data-[variant=destructive]:bg-rose-500/15 data-[variant=destructive]:text-rose-200"),O=e(c,"rounded-md border border-cyan-400/35 bg-[linear-gradient(180deg,rgba(0,229,255,0.055),transparent_58%),rgba(1,8,11,0.9)] font-mono text-cyan-50 shadow-[inset_0_1px_0_rgba(125,211,252,0.08),0_0_0_1px_rgba(34,211,238,0.12),0_0_28px_rgba(34,211,238,0.08)] ring-0"),V=e(d,"px-5 pt-5 pb-3"),W=e(f,"px-5 pb-5"),q=e(h,"rounded-sm border-cyan-400/55 bg-black/65 ring-cyan-300/70 data-checked:bg-cyan-300 data-checked:text-slate-950 data-checked:ring-cyan-300"),J=e(i,"rounded-md border border-cyan-400/35 bg-black/92 font-mono text-cyan-50 shadow-[0_0_26px_rgba(34,211,238,0.16)] ring-0 before:hidden **:data-[slot$=-item]:focus:bg-cyan-400/12 **:data-[slot$=-item]:data-highlighted:bg-cyan-400/12 **:data-[slot$=-separator]:bg-cyan-400/18 **:data-[slot$=-trigger]:focus:bg-cyan-400/12"),Q=e(j$1,"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50 data-[variant=destructive]:text-rose-200 data-[variant=destructive]:focus:bg-rose-500/15"),X=e(k,"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50"),Y=e(l,"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50"),Z=e(m,"font-mono text-[0.68rem] tracking-[0.16em] text-cyan-200/70 uppercase"),j=e(n,"bg-cyan-400/20"),ee=e(p,"rounded-md border border-cyan-400/35 bg-black/92 font-mono text-cyan-50 shadow-[0_0_26px_rgba(34,211,238,0.16)] ring-0 before:hidden"),te=e(o,"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50 data-open:bg-cyan-400/12 data-open:text-cyan-50"),ae=e(q$1,"rounded-md border-cyan-400/35 bg-black/80 font-mono text-cyan-50"),re=e(s,"[&[data-variant=icon]]:rounded-xl [&[data-variant=icon]]:bg-cyan-400/12 [&[data-variant=icon]]:text-cyan-200"),ne=e(t,"text-cyan-50"),oe=e(u,"text-cyan-100/70"),de=e(z,"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 placeholder:text-cyan-100/45 focus-visible:ring-cyan-300/70"),ie=e(w,"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 shadow-[0_0_18px_rgba(34,211,238,0.06)]"),ce=e(B,"rounded-md border-cyan-400/35 bg-black/55 font-mono text-cyan-50 hover:bg-cyan-400/12 data-[active=true]:bg-cyan-300 data-[active=true]:text-slate-950"),be=e(G,"rounded-md border border-cyan-400/35 bg-black/72 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_26px_rgba(34,211,238,0.08)]"),se=e(H,"[&>[data-slot=scroll-area-thumb]]:bg-cyan-300/65"),le=e(I,"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 focus-visible:ring-cyan-300/70"),pe=e(J$1,"rounded-md border border-cyan-400/35 bg-black/95 font-mono text-cyan-50 ring-0 shadow-[0_0_26px_rgba(34,211,238,0.16)] before:hidden"),me=e(L,"rounded-sm focus:bg-cyan-400/12 focus:text-cyan-50"),ge=e(b,"bg-cyan-400/20"),ye=e(N,"rounded-md bg-cyan-400/12"),ue=e(O$1,"border-separate border-spacing-0 border border-cyan-400/45 bg-black/72 font-mono text-[0.84rem] text-cyan-50 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_24px_rgba(34,211,238,0.08)]"),xe=e(P,"[&_tr]:border-cyan-400/45"),ve=e(Q$1,"[&_tr:last-child]:border-b"),_e=e(R,"border-cyan-400/40 bg-cyan-400/10 font-mono"),Te=e(T,"h-12 border-b border-cyan-400/45 bg-cyan-950/20 px-3 font-mono text-[0.68rem] font-bold tracking-[0.18em] text-cyan-300 uppercase"),Ce=e(S,"border-cyan-400/25 hover:bg-cyan-400/10 data-[state=selected]:bg-cyan-400/15"),fe=e(U,"border-b border-cyan-400/16 px-3 py-3 font-mono text-cyan-50"),ke=e(V$1,"font-mono text-cyan-100/65"),we=e(W$1,"rounded-md bg-black text-cyan-50 ring-1 ring-cyan-400/35 shadow-[0_0_22px_rgba(34,211,238,0.18)] [&>svg]:bg-black [&>svg]:fill-black"),Me={...X$1,rootClassName:"dtp-thegridcn",classNames:{card:"hover:bg-cyan-400/10 data-[state=selected]:bg-cyan-400/15",cardGrid:"bg-transparent",cardItem:"min-w-0",cardOverlay:"from-black/95 via-black/75 to-transparent",cardScrollArea:"bg-transparent",cardSelected:"bg-cyan-400/15 ring-cyan-300/70",cardUnselected:"border-cyan-400/35",cardViewport:"bg-transparent",cellBorder:"border-cyan-400/16",columnGroupHeader:"bg-cyan-400/10 text-cyan-200",dragActive:"rounded-md border-dashed border-cyan-300",emptyState:"border-cyan-400/35 bg-black/80",footer:"border-cyan-400/40 bg-black/80 text-cyan-50",headerSortIcon:"text-cyan-100/65",mutedText:"text-cyan-100/70",paginationSelectTrigger:"border-cyan-400/45 bg-black/70 text-cyan-50",paginationTotal:"text-cyan-100/70",pinnedColumn:"border-cyan-400/25",pinnedUtilityColumn:"bg-black/80",resizeHandle:"after:bg-cyan-400/20 hover:after:bg-cyan-300",resizeHandleActive:"after:bg-cyan-300",row:"hover:bg-cyan-400/10 data-[state=selected]:!bg-cyan-400/15",rowSelected:"!bg-cyan-400/15",tableContainer:"border-cyan-400/35 bg-black/72 text-cyan-50 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_26px_rgba(34,211,238,0.08)]",tableScrollArea:"bg-black/72",tableStickyHeader:"sticky top-0 z-30 bg-black/90 backdrop-blur [&_th]:border-cyan-400/45 [&_th]:bg-black/90",toolbarCompactIconButton:"size-7",toolbarIconButton:"text-cyan-100/70 hover:text-cyan-50",toolbarInputButton:"border-cyan-400/45 bg-black/70 text-cyan-50"},Button:$,Card:O,CardContent:W,CardHeader:V,Checkbox:q,DropdownMenuCheckboxItem:X,DropdownMenuContent:J,DropdownMenuItem:Q,DropdownMenuLabel:Z,DropdownMenuRadioItem:Y,DropdownMenuSeparator:j,DropdownMenuSubContent:ee,DropdownMenuSubTrigger:te,Empty:ae,EmptyDescription:oe,EmptyMedia:re,EmptyTitle:ne,Input:de,InputGroup:ie,PaginationLink:ce,ScrollArea:be,ScrollBar:se,SelectContent:pe,SelectItem:me,SelectTrigger:le,Separator:ge,Skeleton:ye,Table:ue,TableBody:ve,TableCaption:ke,TableCell:fe,TableFooter:_e,TableHead:Te,TableHeader:xe,TableRow:Ce,TooltipContent:we};export{Me as a};//# sourceMappingURL=chunk-DV3HO2TR.js.map +//# sourceMappingURL=chunk-DV3HO2TR.js.map \ No newline at end of file diff --git a/dist/chunk-TER4YPQI.js.map b/dist/chunk-DV3HO2TR.js.map similarity index 99% rename from dist/chunk-TER4YPQI.js.map rename to dist/chunk-DV3HO2TR.js.map index 026d4c5..1f5e867 100644 --- a/dist/chunk-TER4YPQI.js.map +++ b/dist/chunk-DV3HO2TR.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/adapters/thegridcn/index.tsx"],"names":["withClassName","Component","defaultClassName","className","props","jsx","cn","GridButton","Button","GridCard","Card","GridCardHeader","CardHeader","GridCardContent","CardContent","GridCheckbox","Checkbox","GridDropdownMenuContent","DropdownMenuContent","GridDropdownMenuItem","DropdownMenuItem","GridDropdownMenuCheckboxItem","DropdownMenuCheckboxItem","GridDropdownMenuRadioItem","DropdownMenuRadioItem","GridDropdownMenuLabel","DropdownMenuLabel","GridDropdownMenuSeparator","DropdownMenuSeparator","GridDropdownMenuSubContent","DropdownMenuSubContent","GridDropdownMenuSubTrigger","DropdownMenuSubTrigger","GridEmpty","Empty","GridEmptyMedia","EmptyMedia","GridEmptyTitle","EmptyTitle","GridEmptyDescription","EmptyDescription","GridInput","Input","GridInputGroup","InputGroup","GridPaginationLink","PaginationLink","GridScrollArea","ScrollArea","GridScrollBar","ScrollBar","GridSelectTrigger","SelectTrigger","GridSelectContent","SelectContent","GridSelectItem","SelectItem","GridSeparator","Separator","GridSkeleton","Skeleton","GridTable","Table","GridTableHeader","TableHeader","GridTableBody","TableBody","GridTableFooter","TableFooter","GridTableHead","TableHead","GridTableRow","TableRow","GridTableCell","TableCell","GridTableCaption","TableCaption","GridTooltipContent","TooltipContent","theGridcnUiKit","primitiveUiKit"],"mappings":"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","file":"chunk-TER4YPQI.js","sourcesContent":["import * as React from \"react\";\nimport type { DataTableUiKit } from \"../../core/ui-kit\";\nimport {\n Button as PrimitiveButton,\n Card as PrimitiveCard,\n CardContent as PrimitiveCardContent,\n CardHeader as PrimitiveCardHeader,\n Checkbox as PrimitiveCheckbox,\n DropdownMenuCheckboxItem as PrimitiveDropdownMenuCheckboxItem,\n DropdownMenuContent as PrimitiveDropdownMenuContent,\n DropdownMenuItem as PrimitiveDropdownMenuItem,\n DropdownMenuLabel as PrimitiveDropdownMenuLabel,\n DropdownMenuRadioItem as PrimitiveDropdownMenuRadioItem,\n DropdownMenuSeparator as PrimitiveDropdownMenuSeparator,\n DropdownMenuSubContent as PrimitiveDropdownMenuSubContent,\n DropdownMenuSubTrigger as PrimitiveDropdownMenuSubTrigger,\n Empty as PrimitiveEmpty,\n EmptyDescription as PrimitiveEmptyDescription,\n EmptyMedia as PrimitiveEmptyMedia,\n EmptyTitle as PrimitiveEmptyTitle,\n Input as PrimitiveInput,\n InputGroup as PrimitiveInputGroup,\n PaginationLink as PrimitivePaginationLink,\n ScrollArea as PrimitiveScrollArea,\n ScrollBar as PrimitiveScrollBar,\n SelectContent as PrimitiveSelectContent,\n SelectItem as PrimitiveSelectItem,\n SelectTrigger as PrimitiveSelectTrigger,\n Separator as PrimitiveSeparator,\n Skeleton as PrimitiveSkeleton,\n Table as PrimitiveTable,\n TableBody as PrimitiveTableBody,\n TableCaption as PrimitiveTableCaption,\n TableCell as PrimitiveTableCell,\n TableFooter as PrimitiveTableFooter,\n TableHead as PrimitiveTableHead,\n TableHeader as PrimitiveTableHeader,\n TableRow as PrimitiveTableRow,\n TooltipContent as PrimitiveTooltipContent,\n primitiveUiKit,\n} from \"../../core/primitive-ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nfunction withClassName(\n Component: React.ComponentType,\n defaultClassName: string,\n) {\n return function Wrapped({ className, ...props }: TProps) {\n return (\n \n );\n };\n}\n\nconst GridButton = withClassName(\n PrimitiveButton,\n \"rounded-md border border-cyan-400/45 bg-black/75 font-mono text-[0.8rem] tracking-[0.045em] text-cyan-50 uppercase shadow-[0_0_0_1px_rgba(34,211,238,0.12),0_0_18px_rgba(34,211,238,0.1)] data-[variant=default]:bg-cyan-300 data-[variant=default]:text-slate-950 data-[variant=outline]:bg-black/55 data-[variant=ghost]:border-transparent data-[variant=ghost]:bg-transparent data-[variant=ghost]:hover:bg-cyan-400/10 data-[variant=secondary]:bg-cyan-400/12 data-[variant=destructive]:border-rose-400/50 data-[variant=destructive]:bg-rose-500/15 data-[variant=destructive]:text-rose-200\",\n);\nconst GridCard = withClassName(\n PrimitiveCard,\n \"rounded-md border border-cyan-400/35 bg-[linear-gradient(180deg,rgba(0,229,255,0.055),transparent_58%),rgba(1,8,11,0.9)] font-mono text-cyan-50 shadow-[inset_0_1px_0_rgba(125,211,252,0.08),0_0_0_1px_rgba(34,211,238,0.12),0_0_28px_rgba(34,211,238,0.08)] ring-0\",\n);\nconst GridCardHeader = withClassName(PrimitiveCardHeader, \"px-5 pt-5 pb-3\");\nconst GridCardContent = withClassName(PrimitiveCardContent, \"px-5 pb-5\");\nconst GridCheckbox = withClassName(\n PrimitiveCheckbox,\n \"rounded-sm border-cyan-400/55 bg-black/65 ring-cyan-300/70 data-checked:bg-cyan-300 data-checked:text-slate-950 data-checked:ring-cyan-300\",\n);\nconst GridDropdownMenuContent = withClassName(\n PrimitiveDropdownMenuContent,\n \"rounded-md border border-cyan-400/35 bg-black/92 font-mono text-cyan-50 shadow-[0_0_26px_rgba(34,211,238,0.16)] ring-0 before:hidden **:data-[slot$=-item]:focus:bg-cyan-400/12 **:data-[slot$=-item]:data-highlighted:bg-cyan-400/12 **:data-[slot$=-separator]:bg-cyan-400/18 **:data-[slot$=-trigger]:focus:bg-cyan-400/12\",\n);\nconst GridDropdownMenuItem = withClassName(\n PrimitiveDropdownMenuItem,\n \"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50 data-[variant=destructive]:text-rose-200 data-[variant=destructive]:focus:bg-rose-500/15\",\n);\nconst GridDropdownMenuCheckboxItem = withClassName(\n PrimitiveDropdownMenuCheckboxItem,\n \"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50\",\n);\nconst GridDropdownMenuRadioItem = withClassName(\n PrimitiveDropdownMenuRadioItem,\n \"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50\",\n);\nconst GridDropdownMenuLabel = withClassName(\n PrimitiveDropdownMenuLabel,\n \"font-mono text-[0.68rem] tracking-[0.16em] text-cyan-200/70 uppercase\",\n);\nconst GridDropdownMenuSeparator = withClassName(\n PrimitiveDropdownMenuSeparator,\n \"bg-cyan-400/20\",\n);\nconst GridDropdownMenuSubContent = withClassName(\n PrimitiveDropdownMenuSubContent,\n \"rounded-md border border-cyan-400/35 bg-black/92 font-mono text-cyan-50 shadow-[0_0_26px_rgba(34,211,238,0.16)] ring-0 before:hidden\",\n);\nconst GridDropdownMenuSubTrigger = withClassName(\n PrimitiveDropdownMenuSubTrigger,\n \"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50 data-open:bg-cyan-400/12 data-open:text-cyan-50\",\n);\nconst GridEmpty = withClassName(\n PrimitiveEmpty,\n \"rounded-md border-cyan-400/35 bg-black/80 font-mono text-cyan-50\",\n);\nconst GridEmptyMedia = withClassName(\n PrimitiveEmptyMedia,\n \"[&[data-variant=icon]]:rounded-xl [&[data-variant=icon]]:bg-cyan-400/12 [&[data-variant=icon]]:text-cyan-200\",\n);\nconst GridEmptyTitle = withClassName(PrimitiveEmptyTitle, \"text-cyan-50\");\nconst GridEmptyDescription = withClassName(\n PrimitiveEmptyDescription,\n \"text-cyan-100/70\",\n);\nconst GridInput = withClassName(\n PrimitiveInput,\n \"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 placeholder:text-cyan-100/45 focus-visible:ring-cyan-300/70\",\n);\nconst GridInputGroup = withClassName(\n PrimitiveInputGroup,\n \"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 shadow-[0_0_18px_rgba(34,211,238,0.06)]\",\n);\nconst GridPaginationLink = withClassName(\n PrimitivePaginationLink,\n \"rounded-md border-cyan-400/35 bg-black/55 font-mono text-cyan-50 hover:bg-cyan-400/12 data-[active=true]:bg-cyan-300 data-[active=true]:text-slate-950\",\n);\nconst GridScrollArea = withClassName(\n PrimitiveScrollArea,\n \"rounded-md border border-cyan-400/35 bg-black/72 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_26px_rgba(34,211,238,0.08)]\",\n);\nconst GridScrollBar = withClassName(\n PrimitiveScrollBar,\n \"[&>[data-slot=scroll-area-thumb]]:bg-cyan-300/65\",\n);\nconst GridSelectTrigger = withClassName(\n PrimitiveSelectTrigger,\n \"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 focus-visible:ring-cyan-300/70\",\n);\nconst GridSelectContent = withClassName(\n PrimitiveSelectContent,\n \"rounded-md border border-cyan-400/35 bg-black/95 font-mono text-cyan-50 ring-0 shadow-[0_0_26px_rgba(34,211,238,0.16)] before:hidden\",\n);\nconst GridSelectItem = withClassName(\n PrimitiveSelectItem,\n \"rounded-sm focus:bg-cyan-400/12 focus:text-cyan-50\",\n);\nconst GridSeparator = withClassName(PrimitiveSeparator, \"bg-cyan-400/20\");\nconst GridSkeleton = withClassName(\n PrimitiveSkeleton,\n \"rounded-md bg-cyan-400/12\",\n);\nconst GridTable = withClassName(\n PrimitiveTable,\n \"border-separate border-spacing-0 border border-cyan-400/45 bg-black/72 font-mono text-[0.84rem] text-cyan-50 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_24px_rgba(34,211,238,0.08)]\",\n);\nconst GridTableHeader = withClassName(\n PrimitiveTableHeader,\n \"[&_tr]:border-cyan-400/45\",\n);\nconst GridTableBody = withClassName(\n PrimitiveTableBody,\n \"[&_tr:last-child]:border-b\",\n);\nconst GridTableFooter = withClassName(\n PrimitiveTableFooter,\n \"border-cyan-400/40 bg-cyan-400/10 font-mono\",\n);\nconst GridTableHead = withClassName(\n PrimitiveTableHead,\n \"h-12 border-b border-cyan-400/45 bg-cyan-950/20 px-3 font-mono text-[0.68rem] font-bold tracking-[0.18em] text-cyan-300 uppercase\",\n);\nconst GridTableRow = withClassName(\n PrimitiveTableRow,\n \"border-cyan-400/25 hover:bg-cyan-400/10 data-[state=selected]:bg-cyan-400/15\",\n);\nconst GridTableCell = withClassName(\n PrimitiveTableCell,\n \"border-b border-cyan-400/16 px-3 py-3 font-mono text-cyan-50\",\n);\nconst GridTableCaption = withClassName(\n PrimitiveTableCaption,\n \"font-mono text-cyan-100/65\",\n);\nconst GridTooltipContent = withClassName(\n PrimitiveTooltipContent,\n \"rounded-md bg-black text-cyan-50 ring-1 ring-cyan-400/35 shadow-[0_0_22px_rgba(34,211,238,0.18)] [&>svg]:bg-black [&>svg]:fill-black\",\n);\n\nexport const theGridcnUiKit: DataTableUiKit = {\n ...primitiveUiKit,\n rootClassName: \"dtp-thegridcn\",\n classNames: {\n card: \"hover:bg-cyan-400/10 data-[state=selected]:bg-cyan-400/15\",\n cardGrid: \"bg-transparent\",\n cardItem: \"min-w-0\",\n cardOverlay: \"from-black/95 via-black/75 to-transparent\",\n cardScrollArea: \"bg-transparent\",\n cardSelected: \"bg-cyan-400/15 ring-cyan-300/70\",\n cardUnselected: \"border-cyan-400/35\",\n cardViewport: \"bg-transparent\",\n cellBorder: \"border-cyan-400/16\",\n columnGroupHeader: \"bg-cyan-400/10 text-cyan-200\",\n dragActive: \"rounded-md border-dashed border-cyan-300\",\n emptyState: \"border-cyan-400/35 bg-black/80\",\n footer: \"border-cyan-400/40 bg-black/80 text-cyan-50\",\n headerSortIcon: \"text-cyan-100/65\",\n mutedText: \"text-cyan-100/70\",\n paginationSelectTrigger: \"border-cyan-400/45 bg-black/70 text-cyan-50\",\n paginationTotal: \"text-cyan-100/70\",\n pinnedColumn: \"border-cyan-400/25\",\n pinnedUtilityColumn: \"bg-black/80\",\n resizeHandle: \"after:bg-cyan-400/20 hover:after:bg-cyan-300\",\n resizeHandleActive: \"after:bg-cyan-300\",\n row: \"hover:bg-cyan-400/10 data-[state=selected]:!bg-cyan-400/15\",\n rowSelected: \"!bg-cyan-400/15\",\n tableContainer:\n \"border-cyan-400/35 bg-black/72 text-cyan-50 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_26px_rgba(34,211,238,0.08)]\",\n tableScrollArea: \"bg-black/72\",\n tableStickyHeader:\n \"sticky top-0 z-30 bg-black/90 backdrop-blur [&_th]:border-cyan-400/45 [&_th]:bg-black/90\",\n toolbarCompactIconButton: \"size-7\",\n toolbarIconButton: \"text-cyan-100/70 hover:text-cyan-50\",\n toolbarInputButton: \"border-cyan-400/45 bg-black/70 text-cyan-50\",\n },\n Button: GridButton,\n Card: GridCard,\n CardContent: GridCardContent,\n CardHeader: GridCardHeader,\n Checkbox: GridCheckbox,\n DropdownMenuCheckboxItem: GridDropdownMenuCheckboxItem,\n DropdownMenuContent: GridDropdownMenuContent,\n DropdownMenuItem: GridDropdownMenuItem,\n DropdownMenuLabel: GridDropdownMenuLabel,\n DropdownMenuRadioItem: GridDropdownMenuRadioItem,\n DropdownMenuSeparator: GridDropdownMenuSeparator,\n DropdownMenuSubContent: GridDropdownMenuSubContent,\n DropdownMenuSubTrigger: GridDropdownMenuSubTrigger,\n Empty: GridEmpty,\n EmptyDescription: GridEmptyDescription,\n EmptyMedia: GridEmptyMedia,\n EmptyTitle: GridEmptyTitle,\n Input: GridInput,\n InputGroup: GridInputGroup,\n PaginationLink: GridPaginationLink,\n ScrollArea: GridScrollArea,\n ScrollBar: GridScrollBar,\n SelectContent: GridSelectContent,\n SelectItem: GridSelectItem,\n SelectTrigger: GridSelectTrigger,\n Separator: GridSeparator,\n Skeleton: GridSkeleton,\n Table: GridTable,\n TableBody: GridTableBody,\n TableCaption: GridTableCaption,\n TableCell: GridTableCell,\n TableFooter: GridTableFooter,\n TableHead: GridTableHead,\n TableHeader: GridTableHeader,\n TableRow: GridTableRow,\n TooltipContent: GridTooltipContent,\n};\n"]} \ No newline at end of file +{"version":3,"sources":["../src/adapters/thegridcn/index.tsx"],"names":["withClassName","Component","defaultClassName","className","props","jsx","cn","GridButton","Button","GridCard","Card","GridCardHeader","CardHeader","GridCardContent","CardContent","GridCheckbox","Checkbox","GridDropdownMenuContent","DropdownMenuContent","GridDropdownMenuItem","DropdownMenuItem","GridDropdownMenuCheckboxItem","DropdownMenuCheckboxItem","GridDropdownMenuRadioItem","DropdownMenuRadioItem","GridDropdownMenuLabel","DropdownMenuLabel","GridDropdownMenuSeparator","DropdownMenuSeparator","GridDropdownMenuSubContent","DropdownMenuSubContent","GridDropdownMenuSubTrigger","DropdownMenuSubTrigger","GridEmpty","Empty","GridEmptyMedia","EmptyMedia","GridEmptyTitle","EmptyTitle","GridEmptyDescription","EmptyDescription","GridInput","Input","GridInputGroup","InputGroup","GridPaginationLink","PaginationLink","GridScrollArea","ScrollArea","GridScrollBar","ScrollBar","GridSelectTrigger","SelectTrigger","GridSelectContent","SelectContent","GridSelectItem","SelectItem","GridSeparator","Separator","GridSkeleton","Skeleton","GridTable","Table","GridTableHeader","TableHeader","GridTableBody","TableBody","GridTableFooter","TableFooter","GridTableHead","TableHead","GridTableRow","TableRow","GridTableCell","TableCell","GridTableCaption","TableCaption","GridTooltipContent","TooltipContent","theGridcnUiKit","primitiveUiKit"],"mappings":"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","file":"chunk-DV3HO2TR.js","sourcesContent":["import * as React from \"react\";\nimport type { DataTableUiKit } from \"../../core/ui-kit\";\nimport {\n Button as PrimitiveButton,\n Card as PrimitiveCard,\n CardContent as PrimitiveCardContent,\n CardHeader as PrimitiveCardHeader,\n Checkbox as PrimitiveCheckbox,\n DropdownMenuCheckboxItem as PrimitiveDropdownMenuCheckboxItem,\n DropdownMenuContent as PrimitiveDropdownMenuContent,\n DropdownMenuItem as PrimitiveDropdownMenuItem,\n DropdownMenuLabel as PrimitiveDropdownMenuLabel,\n DropdownMenuRadioItem as PrimitiveDropdownMenuRadioItem,\n DropdownMenuSeparator as PrimitiveDropdownMenuSeparator,\n DropdownMenuSubContent as PrimitiveDropdownMenuSubContent,\n DropdownMenuSubTrigger as PrimitiveDropdownMenuSubTrigger,\n Empty as PrimitiveEmpty,\n EmptyDescription as PrimitiveEmptyDescription,\n EmptyMedia as PrimitiveEmptyMedia,\n EmptyTitle as PrimitiveEmptyTitle,\n Input as PrimitiveInput,\n InputGroup as PrimitiveInputGroup,\n PaginationLink as PrimitivePaginationLink,\n ScrollArea as PrimitiveScrollArea,\n ScrollBar as PrimitiveScrollBar,\n SelectContent as PrimitiveSelectContent,\n SelectItem as PrimitiveSelectItem,\n SelectTrigger as PrimitiveSelectTrigger,\n Separator as PrimitiveSeparator,\n Skeleton as PrimitiveSkeleton,\n Table as PrimitiveTable,\n TableBody as PrimitiveTableBody,\n TableCaption as PrimitiveTableCaption,\n TableCell as PrimitiveTableCell,\n TableFooter as PrimitiveTableFooter,\n TableHead as PrimitiveTableHead,\n TableHeader as PrimitiveTableHeader,\n TableRow as PrimitiveTableRow,\n TooltipContent as PrimitiveTooltipContent,\n primitiveUiKit,\n} from \"../../core/primitive-ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nfunction withClassName(\n Component: React.ComponentType,\n defaultClassName: string,\n) {\n return function Wrapped({ className, ...props }: TProps) {\n return (\n \n );\n };\n}\n\nconst GridButton = withClassName(\n PrimitiveButton,\n \"rounded-md border border-cyan-400/45 bg-black/75 font-mono text-[0.8rem] tracking-[0.045em] text-cyan-50 uppercase shadow-[0_0_0_1px_rgba(34,211,238,0.12),0_0_18px_rgba(34,211,238,0.1)] data-[variant=default]:bg-cyan-300 data-[variant=default]:text-slate-950 data-[variant=outline]:bg-black/55 data-[variant=ghost]:border-transparent data-[variant=ghost]:bg-transparent data-[variant=ghost]:hover:bg-cyan-400/10 data-[variant=secondary]:bg-cyan-400/12 data-[variant=destructive]:border-rose-400/50 data-[variant=destructive]:bg-rose-500/15 data-[variant=destructive]:text-rose-200\",\n);\nconst GridCard = withClassName(\n PrimitiveCard,\n \"rounded-md border border-cyan-400/35 bg-[linear-gradient(180deg,rgba(0,229,255,0.055),transparent_58%),rgba(1,8,11,0.9)] font-mono text-cyan-50 shadow-[inset_0_1px_0_rgba(125,211,252,0.08),0_0_0_1px_rgba(34,211,238,0.12),0_0_28px_rgba(34,211,238,0.08)] ring-0\",\n);\nconst GridCardHeader = withClassName(PrimitiveCardHeader, \"px-5 pt-5 pb-3\");\nconst GridCardContent = withClassName(PrimitiveCardContent, \"px-5 pb-5\");\nconst GridCheckbox = withClassName(\n PrimitiveCheckbox,\n \"rounded-sm border-cyan-400/55 bg-black/65 ring-cyan-300/70 data-checked:bg-cyan-300 data-checked:text-slate-950 data-checked:ring-cyan-300\",\n);\nconst GridDropdownMenuContent = withClassName(\n PrimitiveDropdownMenuContent,\n \"rounded-md border border-cyan-400/35 bg-black/92 font-mono text-cyan-50 shadow-[0_0_26px_rgba(34,211,238,0.16)] ring-0 before:hidden **:data-[slot$=-item]:focus:bg-cyan-400/12 **:data-[slot$=-item]:data-highlighted:bg-cyan-400/12 **:data-[slot$=-separator]:bg-cyan-400/18 **:data-[slot$=-trigger]:focus:bg-cyan-400/12\",\n);\nconst GridDropdownMenuItem = withClassName(\n PrimitiveDropdownMenuItem,\n \"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50 data-[variant=destructive]:text-rose-200 data-[variant=destructive]:focus:bg-rose-500/15\",\n);\nconst GridDropdownMenuCheckboxItem = withClassName(\n PrimitiveDropdownMenuCheckboxItem,\n \"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50\",\n);\nconst GridDropdownMenuRadioItem = withClassName(\n PrimitiveDropdownMenuRadioItem,\n \"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50\",\n);\nconst GridDropdownMenuLabel = withClassName(\n PrimitiveDropdownMenuLabel,\n \"font-mono text-[0.68rem] tracking-[0.16em] text-cyan-200/70 uppercase\",\n);\nconst GridDropdownMenuSeparator = withClassName(\n PrimitiveDropdownMenuSeparator,\n \"bg-cyan-400/20\",\n);\nconst GridDropdownMenuSubContent = withClassName(\n PrimitiveDropdownMenuSubContent,\n \"rounded-md border border-cyan-400/35 bg-black/92 font-mono text-cyan-50 shadow-[0_0_26px_rgba(34,211,238,0.16)] ring-0 before:hidden\",\n);\nconst GridDropdownMenuSubTrigger = withClassName(\n PrimitiveDropdownMenuSubTrigger,\n \"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50 data-open:bg-cyan-400/12 data-open:text-cyan-50\",\n);\nconst GridEmpty = withClassName(\n PrimitiveEmpty,\n \"rounded-md border-cyan-400/35 bg-black/80 font-mono text-cyan-50\",\n);\nconst GridEmptyMedia = withClassName(\n PrimitiveEmptyMedia,\n \"[&[data-variant=icon]]:rounded-xl [&[data-variant=icon]]:bg-cyan-400/12 [&[data-variant=icon]]:text-cyan-200\",\n);\nconst GridEmptyTitle = withClassName(PrimitiveEmptyTitle, \"text-cyan-50\");\nconst GridEmptyDescription = withClassName(\n PrimitiveEmptyDescription,\n \"text-cyan-100/70\",\n);\nconst GridInput = withClassName(\n PrimitiveInput,\n \"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 placeholder:text-cyan-100/45 focus-visible:ring-cyan-300/70\",\n);\nconst GridInputGroup = withClassName(\n PrimitiveInputGroup,\n \"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 shadow-[0_0_18px_rgba(34,211,238,0.06)]\",\n);\nconst GridPaginationLink = withClassName(\n PrimitivePaginationLink,\n \"rounded-md border-cyan-400/35 bg-black/55 font-mono text-cyan-50 hover:bg-cyan-400/12 data-[active=true]:bg-cyan-300 data-[active=true]:text-slate-950\",\n);\nconst GridScrollArea = withClassName(\n PrimitiveScrollArea,\n \"rounded-md border border-cyan-400/35 bg-black/72 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_26px_rgba(34,211,238,0.08)]\",\n);\nconst GridScrollBar = withClassName(\n PrimitiveScrollBar,\n \"[&>[data-slot=scroll-area-thumb]]:bg-cyan-300/65\",\n);\nconst GridSelectTrigger = withClassName(\n PrimitiveSelectTrigger,\n \"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 focus-visible:ring-cyan-300/70\",\n);\nconst GridSelectContent = withClassName(\n PrimitiveSelectContent,\n \"rounded-md border border-cyan-400/35 bg-black/95 font-mono text-cyan-50 ring-0 shadow-[0_0_26px_rgba(34,211,238,0.16)] before:hidden\",\n);\nconst GridSelectItem = withClassName(\n PrimitiveSelectItem,\n \"rounded-sm focus:bg-cyan-400/12 focus:text-cyan-50\",\n);\nconst GridSeparator = withClassName(PrimitiveSeparator, \"bg-cyan-400/20\");\nconst GridSkeleton = withClassName(\n PrimitiveSkeleton,\n \"rounded-md bg-cyan-400/12\",\n);\nconst GridTable = withClassName(\n PrimitiveTable,\n \"border-separate border-spacing-0 border border-cyan-400/45 bg-black/72 font-mono text-[0.84rem] text-cyan-50 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_24px_rgba(34,211,238,0.08)]\",\n);\nconst GridTableHeader = withClassName(\n PrimitiveTableHeader,\n \"[&_tr]:border-cyan-400/45\",\n);\nconst GridTableBody = withClassName(\n PrimitiveTableBody,\n \"[&_tr:last-child]:border-b\",\n);\nconst GridTableFooter = withClassName(\n PrimitiveTableFooter,\n \"border-cyan-400/40 bg-cyan-400/10 font-mono\",\n);\nconst GridTableHead = withClassName(\n PrimitiveTableHead,\n \"h-12 border-b border-cyan-400/45 bg-cyan-950/20 px-3 font-mono text-[0.68rem] font-bold tracking-[0.18em] text-cyan-300 uppercase\",\n);\nconst GridTableRow = withClassName(\n PrimitiveTableRow,\n \"border-cyan-400/25 hover:bg-cyan-400/10 data-[state=selected]:bg-cyan-400/15\",\n);\nconst GridTableCell = withClassName(\n PrimitiveTableCell,\n \"border-b border-cyan-400/16 px-3 py-3 font-mono text-cyan-50\",\n);\nconst GridTableCaption = withClassName(\n PrimitiveTableCaption,\n \"font-mono text-cyan-100/65\",\n);\nconst GridTooltipContent = withClassName(\n PrimitiveTooltipContent,\n \"rounded-md bg-black text-cyan-50 ring-1 ring-cyan-400/35 shadow-[0_0_22px_rgba(34,211,238,0.18)] [&>svg]:bg-black [&>svg]:fill-black\",\n);\n\nexport const theGridcnUiKit: DataTableUiKit = {\n ...primitiveUiKit,\n rootClassName: \"dtp-thegridcn\",\n classNames: {\n card: \"hover:bg-cyan-400/10 data-[state=selected]:bg-cyan-400/15\",\n cardGrid: \"bg-transparent\",\n cardItem: \"min-w-0\",\n cardOverlay: \"from-black/95 via-black/75 to-transparent\",\n cardScrollArea: \"bg-transparent\",\n cardSelected: \"bg-cyan-400/15 ring-cyan-300/70\",\n cardUnselected: \"border-cyan-400/35\",\n cardViewport: \"bg-transparent\",\n cellBorder: \"border-cyan-400/16\",\n columnGroupHeader: \"bg-cyan-400/10 text-cyan-200\",\n dragActive: \"rounded-md border-dashed border-cyan-300\",\n emptyState: \"border-cyan-400/35 bg-black/80\",\n footer: \"border-cyan-400/40 bg-black/80 text-cyan-50\",\n headerSortIcon: \"text-cyan-100/65\",\n mutedText: \"text-cyan-100/70\",\n paginationSelectTrigger: \"border-cyan-400/45 bg-black/70 text-cyan-50\",\n paginationTotal: \"text-cyan-100/70\",\n pinnedColumn: \"border-cyan-400/25\",\n pinnedUtilityColumn: \"bg-black/80\",\n resizeHandle: \"after:bg-cyan-400/20 hover:after:bg-cyan-300\",\n resizeHandleActive: \"after:bg-cyan-300\",\n row: \"hover:bg-cyan-400/10 data-[state=selected]:!bg-cyan-400/15\",\n rowSelected: \"!bg-cyan-400/15\",\n tableContainer:\n \"border-cyan-400/35 bg-black/72 text-cyan-50 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_26px_rgba(34,211,238,0.08)]\",\n tableScrollArea: \"bg-black/72\",\n tableStickyHeader:\n \"sticky top-0 z-30 bg-black/90 backdrop-blur [&_th]:border-cyan-400/45 [&_th]:bg-black/90\",\n toolbarCompactIconButton: \"size-7\",\n toolbarIconButton: \"text-cyan-100/70 hover:text-cyan-50\",\n toolbarInputButton: \"border-cyan-400/45 bg-black/70 text-cyan-50\",\n },\n Button: GridButton,\n Card: GridCard,\n CardContent: GridCardContent,\n CardHeader: GridCardHeader,\n Checkbox: GridCheckbox,\n DropdownMenuCheckboxItem: GridDropdownMenuCheckboxItem,\n DropdownMenuContent: GridDropdownMenuContent,\n DropdownMenuItem: GridDropdownMenuItem,\n DropdownMenuLabel: GridDropdownMenuLabel,\n DropdownMenuRadioItem: GridDropdownMenuRadioItem,\n DropdownMenuSeparator: GridDropdownMenuSeparator,\n DropdownMenuSubContent: GridDropdownMenuSubContent,\n DropdownMenuSubTrigger: GridDropdownMenuSubTrigger,\n Empty: GridEmpty,\n EmptyDescription: GridEmptyDescription,\n EmptyMedia: GridEmptyMedia,\n EmptyTitle: GridEmptyTitle,\n Input: GridInput,\n InputGroup: GridInputGroup,\n PaginationLink: GridPaginationLink,\n ScrollArea: GridScrollArea,\n ScrollBar: GridScrollBar,\n SelectContent: GridSelectContent,\n SelectItem: GridSelectItem,\n SelectTrigger: GridSelectTrigger,\n Separator: GridSeparator,\n Skeleton: GridSkeleton,\n Table: GridTable,\n TableBody: GridTableBody,\n TableCaption: GridTableCaption,\n TableCell: GridTableCell,\n TableFooter: GridTableFooter,\n TableHead: GridTableHead,\n TableHeader: GridTableHeader,\n TableRow: GridTableRow,\n TooltipContent: GridTooltipContent,\n};\n"]} \ No newline at end of file diff --git a/dist/chunk-ERWHHOBD.js b/dist/chunk-ERWHHOBD.js deleted file mode 100644 index e1abf0b..0000000 --- a/dist/chunk-ERWHHOBD.js +++ /dev/null @@ -1,2 +0,0 @@ -import {n,m,b,e,d,g as g$1,h as h$1,j,s,f,c}from'./chunk-32UNH3MQ.js';import {a}from'./chunk-674VSOYY.js';import*as M from'react';import {cva}from'class-variance-authority';import {Slot,Separator,Checkbox,DropdownMenu,ScrollArea,Select,Tooltip}from'radix-ui';import {jsx,jsxs}from'react/jsx-runtime';var ce=cva("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:outline-none active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"",outline:"",secondary:"",ghost:"",destructive:"",link:"underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function g({className:t,variant:e="default",size:n="default",asChild:a$1=false,...s}){let d=a$1?Slot.Root:"button";return jsx(d,{"data-slot":"button","data-variant":e,"data-size":n,className:a(ce({variant:e,size:n,className:t})),...s})}function N({className:t,orientation:e="horizontal",decorative:n=true,...a$1}){return jsx(Separator.Root,{"data-slot":"separator",decorative:n,orientation:e,className:a("shrink-0 data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",t),...a$1})}var ve=cva("flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1",{variants:{orientation:{horizontal:"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg!",vertical:"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg!"}},defaultVariants:{orientation:"horizontal"}});function Y({className:t,orientation:e,...n}){return jsx("div",{role:"group","data-slot":"button-group","data-orientation":e,className:a(ve({orientation:e}),t),...n})}function Z({className:t,asChild:e=false,...n}){let a$1=e?Slot.Root:"div";return jsx(a$1,{className:a("flex items-center gap-2 rounded-lg border px-2.5 text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",t),...n})}function $({className:t,orientation:e="vertical",...n}){return jsx(N,{"data-slot":"button-group-separator",orientation:e,className:a("relative self-stretch data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto",t),...n})}function tt({className:t,size:e="default",...n}){return jsx("div",{"data-slot":"card","data-size":e,className:a("group/card flex flex-col gap-4 overflow-hidden rounded-xl border py-4 text-sm ring-1 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",t),...n})}function et({className:t,...e}){return jsx("div",{"data-slot":"card-header",className:a("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3",t),...e})}function ot({className:t,...e}){return jsx("div",{"data-slot":"card-title",className:a("font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",t),...e})}function nt({className:t,...e}){return jsx("div",{"data-slot":"card-description",className:a("text-sm opacity-80",t),...e})}function at({className:t,...e}){return jsx("div",{"data-slot":"card-action",className:a("col-start-2 row-span-2 row-start-1 self-start justify-self-end",t),...e})}function rt({className:t,...e}){return jsx("div",{"data-slot":"card-content",className:a("px-4 group-data-[size=sm]/card:px-3",t),...e})}function it({className:t,...e}){return jsx("div",{"data-slot":"card-footer",className:a("flex items-center rounded-b-xl border-t p-4 group-data-[size=sm]/card:p-3",t),...e})}function lt({className:t,...e}){return jsx(Checkbox.Root,{"data-slot":"checkbox",className:a("peer relative flex size-4 shrink-0 items-center justify-center rounded-[4px] border ring-2 transition-colors outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 data-checked:ring-2",t),...e,children:jsx(Checkbox.Indicator,{"data-slot":"checkbox-indicator",className:"grid place-content-center text-current transition-none [&>svg]:size-3.5",children:jsx(b,{})})})}function dt({...t}){return jsx(DropdownMenu.Root,{"data-slot":"dropdown-menu",...t})}function pt({...t}){return jsx(DropdownMenu.Portal,{"data-slot":"dropdown-menu-portal",...t})}function ct({...t}){return jsx(DropdownMenu.Trigger,{"data-slot":"dropdown-menu-trigger",...t})}function ut({className:t,align:e="start",sideOffset:n=4,...a$1}){return jsx(DropdownMenu.Portal,{children:jsx(DropdownMenu.Content,{"data-slot":"dropdown-menu-content",sideOffset:n,align:e,className:a("relative z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) animate-none! overflow-x-hidden overflow-y-auto rounded-lg border p-1 shadow-md duration-100 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] 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 data-[state=closed]:overflow-hidden data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",t),...a$1})})}function mt({...t}){return jsx(DropdownMenu.Group,{"data-slot":"dropdown-menu-group",...t})}function ft({className:t,inset:e,variant:n="default",...a$1}){return jsx(DropdownMenu.Item,{"data-slot":"dropdown-menu-item","data-inset":e,"data-variant":n,className:a("group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:outline-none data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a$1})}function gt({className:t,children:e,checked:n,inset:a$1,...s}){return jsxs(DropdownMenu.CheckboxItem,{"data-slot":"dropdown-menu-checkbox-item","data-inset":a$1,className:a("relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:outline-none data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),checked:n,...s,children:[jsx("span",{className:"pointer-events-none absolute right-2 flex items-center justify-center","data-slot":"dropdown-menu-checkbox-item-indicator",children:jsx(DropdownMenu.ItemIndicator,{children:jsx(b,{})})}),e]})}function bt({...t}){return jsx(DropdownMenu.RadioGroup,{"data-slot":"dropdown-menu-radio-group",...t})}function vt({className:t,children:e,inset:n,...a$1}){return jsxs(DropdownMenu.RadioItem,{"data-slot":"dropdown-menu-radio-item","data-inset":n,className:a("relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:outline-none data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a$1,children:[jsx("span",{className:"pointer-events-none absolute right-2 flex items-center justify-center","data-slot":"dropdown-menu-radio-item-indicator",children:jsx(DropdownMenu.ItemIndicator,{children:jsx(b,{})})}),e]})}function ht({className:t,inset:e,...n}){return jsx(DropdownMenu.Label,{"data-slot":"dropdown-menu-label","data-inset":e,className:a("px-1.5 py-1 text-xs font-medium opacity-80 data-inset:pl-7",t),...n})}function Pt({className:t,...e}){return jsx(DropdownMenu.Separator,{"data-slot":"dropdown-menu-separator",className:a("-mx-1 my-1 h-px",t),...e})}function xt({className:t,...e}){return jsx("span",{"data-slot":"dropdown-menu-shortcut",className:a("ml-auto text-xs tracking-widest opacity-75",t),...e})}function wt({...t}){return jsx(DropdownMenu.Sub,{"data-slot":"dropdown-menu-sub",...t})}function yt({className:t,inset:e$1,children:n,...a$1}){return jsxs(DropdownMenu.SubTrigger,{"data-slot":"dropdown-menu-sub-trigger","data-inset":e$1,className:a("flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:outline-none data-inset:pl-7 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a$1,children:[n,jsx(e,{className:"ml-auto"})]})}function Ct({className:t,...e}){return jsx(DropdownMenu.SubContent,{"data-slot":"dropdown-menu-sub-content",className:a("relative z-50 min-w-[96px] origin-(--radix-dropdown-menu-content-transform-origin) animate-none! overflow-hidden rounded-lg border p-1 shadow-lg duration-100 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] 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 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",t),...e})}function Rt({className:t,...e}){return jsx("div",{"data-slot":"empty",className:a("flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-xl border-dashed p-6 text-center text-balance",t),...e})}function St({className:t,...e}){return jsx("div",{"data-slot":"empty-header",className:a("flex max-w-sm flex-col items-center gap-2",t),...e})}var Pe=cva("mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0",{variants:{variant:{default:"bg-transparent",icon:"flex size-8 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-4"}},defaultVariants:{variant:"default"}});function zt({className:t,variant:e="default",...n}){return jsx("div",{"data-slot":"empty-icon","data-variant":e,className:a(Pe({variant:e,className:t})),...n})}function Nt({className:t,...e}){return jsx("div",{"data-slot":"empty-title",className:a("font-heading text-sm font-medium tracking-tight",t),...e})}function It({className:t,...e}){return jsx("div",{"data-slot":"empty-description",className:a("text-sm/relaxed opacity-80 [&>a]:underline [&>a]:underline-offset-4",t),...e})}function kt({className:t,...e}){return jsx("div",{"data-slot":"empty-content",className:a("flex w-full max-w-sm min-w-0 flex-col items-center gap-2.5 text-sm text-balance",t),...e})}var I="h-8 w-full min-w-0 rounded-lg border px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:opacity-70 focus-visible:outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm";function k({className:t,...e}){return jsx("div",{role:"group","data-slot":"input-group",className:a("group/input-group flex w-full min-w-0 items-stretch rounded-lg border transition-colors outline-none focus-within:outline-none has-[>[data-slot=input-group-addon][data-align=block-start]]:flex-col has-[>[data-slot=input-group-addon][data-align=block-end]]:flex-col has-[>[data-slot=input-group-control]:disabled]:cursor-not-allowed has-[>[data-slot=input-group-control]:disabled]:opacity-50",t),...e})}var x=M.forwardRef(function({className:e,...n},a$1){return jsx("input",{ref:a$1,"data-slot":"input-group-control",type:n.type,className:a(I,"flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:border-0 focus-visible:ring-0",e),...n})});function T({align:t="inline-start",className:e,...n}){return jsx("div",{"data-slot":"input-group-addon","data-align":t,className:a("flex shrink-0 items-center gap-1.5 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",t==="inline-start"&&"order-first pl-2.5 pr-1",t==="inline-end"&&"order-last pl-1 pr-2.5",t==="block-start"&&"order-first w-full justify-between border-b px-2.5 py-1.5 text-sm",t==="block-end"&&"order-last w-full justify-between border-t px-2.5 py-1.5 text-sm",e),...n})}function Dt({className:t,...e}){return jsx("span",{"data-slot":"input-group-text",className:a("whitespace-nowrap text-sm",t),...e})}x.displayName="InputGroupInput";var A=M.forwardRef(function({className:e,passwordToggle:n$1=false,type:a$1,...s},d){let[S,le]=M.useState(false);return n$1&&a$1==="password"?jsxs(k,{className:e,children:[jsx(x,{ref:d,type:S?"text":"password","data-slot":"input-group-control",className:"pr-0",...s}),jsx(T,{align:"inline-end",children:jsx(g,{type:"button",variant:"ghost",size:"icon-xs","aria-label":S?"Hide password":"Show password","aria-pressed":S,className:"hover:bg-transparent",onMouseDown:G=>G.preventDefault(),onClick:()=>le(G=>!G),children:S?jsx(n,{"data-icon":"inline-start"}):jsx(m,{"data-icon":"inline-start"})})})]}):jsx("input",{ref:d,type:a$1,"data-slot":"input",className:a(I,e),...s})});A.displayName="Input";function Mt({className:t,...e}){return jsx("nav",{role:"navigation","aria-label":"pagination","data-slot":"pagination",className:a("mx-auto flex w-full justify-center",t),...e})}function Gt({className:t,...e}){return jsx("ul",{"data-slot":"pagination-content",className:a("flex items-center gap-1",t),...e})}function _t({...t}){return jsx("li",{"data-slot":"pagination-item",...t})}function h({className:t,isActive:e,disabled:n=false,variant:a$1,size:s="icon",...d}){return jsx(g,{asChild:true,variant:a$1??(e?"outline":"ghost"),size:s,className:a(n&&"pointer-events-none opacity-50",t),children:jsx("a",{"aria-current":e?"page":void 0,"aria-disabled":n?true:void 0,"data-slot":"pagination-link","data-active":e,tabIndex:n?-1:d.tabIndex,...d})})}function Bt({className:t,disabled:e,showText:n=true,size:a$1="default",text:s="Previous",...d$1}){return jsxs(h,{"aria-label":"Go to previous page",disabled:e,size:a$1,variant:"outline",className:a("pl-1.5!",t),...d$1,children:[jsx(d,{"data-icon":"inline-start"}),n?jsx("span",{className:"hidden sm:block",children:s}):null]})}function Lt({className:t,disabled:e,showText:n=true,size:a$1="default",text:s="First",...d}){return jsxs(h,{"aria-label":"Go to first page",disabled:e,size:a$1,variant:"outline",className:a("pl-1.5!",t),...d,children:[jsx(g$1,{"data-icon":"inline-start"}),n?jsx("span",{className:"hidden sm:block",children:s}):null]})}function At({className:t,disabled:e$1,showText:n=true,size:a$1="default",text:s="Next",...d}){return jsxs(h,{"aria-label":"Go to next page",disabled:e$1,size:a$1,variant:"outline",className:a("pr-1.5!",t),...d,children:[n?jsx("span",{className:"hidden sm:block",children:s}):null,jsx(e,{"data-icon":"inline-end"})]})}function Vt({className:t,disabled:e,showText:n=true,size:a$1="default",text:s="Last",...d}){return jsxs(h,{"aria-label":"Go to last page",disabled:e,size:a$1,variant:"outline",className:a("pr-1.5!",t),...d,children:[n?jsx("span",{className:"hidden sm:block",children:s}):null,jsx(h$1,{"data-icon":"inline-end"})]})}function Et({className:t,text:e="More pages",...n}){return jsxs("span",{"aria-hidden":true,"data-slot":"pagination-ellipsis",className:a("flex size-8 items-center justify-center [&_svg:not([class*='size-'])]:size-4",t),...n,children:[jsx(j,{}),jsx("span",{className:"sr-only",children:e})]})}function Ht({className:t,children:e,...n}){return jsxs(ScrollArea.Root,{"data-slot":"scroll-area",className:a("relative",t),...n,children:[jsx(ScrollArea.Viewport,{"data-slot":"scroll-area-viewport",className:"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:outline-none",children:e}),jsx(V,{className:"z-100"}),jsx(ScrollArea.Corner,{})]})}function V({className:t,orientation:e="vertical",...n}){return jsx(ScrollArea.ScrollAreaScrollbar,{"data-slot":"scroll-area-scrollbar","data-orientation":e,orientation:e,className:a("flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent",t),...n,children:jsx(ScrollArea.ScrollAreaThumb,{"data-slot":"scroll-area-thumb",className:"relative flex-1 rounded-full"})})}function Ut({...t}){return jsx(Select.Root,{"data-slot":"select",...t})}function Ft({className:t,...e}){return jsx(Select.Group,{"data-slot":"select-group",className:a("scroll-my-1 p-1",t),...e})}function Kt({...t}){return jsx(Select.Value,{"data-slot":"select-value",...t})}function Ot({className:t,size:e="default",children:n,...a$1}){return jsxs(Select.Trigger,{"data-slot":"select-trigger","data-size":e,className:a("flex w-fit items-center justify-between gap-1.5 rounded-lg border bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a$1,children:[n,jsx(Select.Icon,{asChild:true,children:jsx(s,{className:"pointer-events-none size-4"})})]})}function jt({className:t,children:e,position:n="item-aligned",align:a$1="center",...s}){return jsx(Select.Portal,{children:jsxs(Select.Content,{"data-slot":"select-content","data-align-trigger":n==="item-aligned",className:a("relative z-50 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) animate-none! overflow-x-hidden overflow-y-auto rounded-lg border shadow-md duration-100 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] data-[align-trigger=true]:animate-none 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 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",n==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",t),position:n,align:a$1,...s,children:[jsx(E,{}),jsx(Select.Viewport,{"data-position":n,className:a("data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)",n==="popper"&&""),children:e}),jsx(H,{})]})})}function qt({className:t,...e}){return jsx(Select.Label,{"data-slot":"select-label",className:a("px-1.5 py-1 text-xs opacity-80",t),...e})}function Jt({className:t,children:e,...n}){return jsxs(Select.Item,{"data-slot":"select-item",className:a("relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:outline-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",t),...n,children:[jsx("span",{className:"pointer-events-none absolute right-2 flex size-4 items-center justify-center",children:jsx(Select.ItemIndicator,{children:jsx(b,{className:"pointer-events-none"})})}),jsx(Select.ItemText,{children:e})]})}function Qt({className:t,...e}){return jsx(Select.Separator,{"data-slot":"select-separator",className:a("pointer-events-none -mx-1 my-1 h-px",t),...e})}function E({className:t,...e}){return jsx(Select.ScrollUpButton,{"data-slot":"select-scroll-up-button",className:a("z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4",t),...e,children:jsx(f,{})})}function H({className:t,...e}){return jsx(Select.ScrollDownButton,{"data-slot":"select-scroll-down-button",className:a("z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4",t),...e,children:jsx(c,{})})}function Wt({className:t,...e}){return jsx("div",{"data-slot":"skeleton",className:a("animate-pulse rounded-md",t),...e})}function Xt({className:t,...e}){return jsx("table",{"data-slot":"table",className:a("w-full border-collapse caption-bottom text-sm",t),...e})}function Yt({className:t,...e}){return jsx("thead",{"data-slot":"table-header",className:a("[&_tr]:border-b",t),...e})}function Zt({className:t,...e}){return jsx("tbody",{"data-slot":"table-body",className:a("[&_tr:last-child]:border-0",t),...e})}function $t({className:t,...e}){return jsx("tfoot",{"data-slot":"table-footer",className:a("border-t font-medium [&>tr]:last:border-b-0",t),...e})}function te({className:t,...e}){return jsx("tr",{"data-slot":"table-row",className:a("border-b transition-colors",t),...e})}function ee({className:t,...e}){return jsx("th",{"data-slot":"table-head",className:a("h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0",t),...e})}function oe({className:t,...e}){return jsx("td",{"data-slot":"table-cell",className:a("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0",t),...e})}function ne({className:t,...e}){return jsx("caption",{"data-slot":"table-caption",className:a("mt-4 text-sm opacity-80",t),...e})}function ae({delayDuration:t=0,...e}){return jsx(Tooltip.Provider,{"data-slot":"tooltip-provider",delayDuration:t,...e})}function re({...t}){return jsx(Tooltip.Root,{"data-slot":"tooltip",...t})}function ie({...t}){return jsx(Tooltip.Trigger,{"data-slot":"tooltip-trigger",...t})}function se({className:t,sideOffset:e=0,children:n,...a$1}){return jsx(Tooltip.Portal,{children:jsxs(Tooltip.Content,{"data-slot":"tooltip-content",sideOffset:e,className:a("z-50 inline-flex w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) items-center gap-1.5 rounded-md border px-3 py-1.5 text-xs has-data-[slot=kbd]:pr-1.5 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 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",t),...a$1,children:[n,jsx(Tooltip.Arrow,{className:"z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]"})]})})}var un={Button:g,ButtonGroup:Y,ButtonGroupSeparator:$,ButtonGroupText:Z,Card:tt,CardAction:at,CardContent:rt,CardDescription:nt,CardFooter:it,CardHeader:et,CardTitle:ot,Checkbox:lt,DropdownMenu:dt,DropdownMenuCheckboxItem:gt,DropdownMenuContent:ut,DropdownMenuGroup:mt,DropdownMenuItem:ft,DropdownMenuLabel:ht,DropdownMenuPortal:pt,DropdownMenuRadioGroup:bt,DropdownMenuRadioItem:vt,DropdownMenuSeparator:Pt,DropdownMenuShortcut:xt,DropdownMenuSub:wt,DropdownMenuSubContent:Ct,DropdownMenuSubTrigger:yt,DropdownMenuTrigger:ct,Empty:Rt,EmptyContent:kt,EmptyDescription:It,EmptyHeader:St,EmptyMedia:zt,EmptyTitle:Nt,Input:A,InputGroup:k,InputGroupAddon:T,InputGroupInput:x,InputGroupText:Dt,Pagination:Mt,PaginationContent:Gt,PaginationEllipsis:Et,PaginationFirst:Lt,PaginationItem:_t,PaginationLast:Vt,PaginationLink:h,PaginationNext:At,PaginationPrevious:Bt,ScrollArea:Ht,ScrollBar:V,Select:Ut,SelectContent:jt,SelectGroup:Ft,SelectItem:Jt,SelectLabel:qt,SelectScrollDownButton:H,SelectScrollUpButton:E,SelectSeparator:Qt,SelectTrigger:Ot,SelectValue:Kt,Separator:N,Skeleton:Wt,Table:Xt,TableBody:Zt,TableCaption:ne,TableCell:oe,TableFooter:$t,TableHead:ee,TableHeader:Yt,TableRow:te,Tooltip:re,TooltipContent:se,TooltipProvider:ae,TooltipTrigger:ie};export{Mt as A,h as B,Bt as C,Lt as D,At as E,Vt as F,Ht as G,V as H,Ot as I,jt as J,qt as K,Jt as L,Qt as M,Wt as N,Xt as O,Yt as P,Zt as Q,$t as R,te as S,ee as T,oe as U,ne as V,se as W,un as X,g as a,N as b,tt as c,et as d,nt as e,rt as f,it as g,lt as h,ut as i,ft as j,gt as k,vt as l,ht as m,Pt as n,yt as o,Ct as p,Rt as q,St as r,zt as s,Nt as t,It as u,kt as v,k as w,x,T as y,A as z};//# sourceMappingURL=chunk-ERWHHOBD.js.map -//# sourceMappingURL=chunk-ERWHHOBD.js.map \ No newline at end of file diff --git a/dist/chunk-FXX3TZ63.js b/dist/chunk-FXX3TZ63.js deleted file mode 100644 index 7f25f54..0000000 --- a/dist/chunk-FXX3TZ63.js +++ /dev/null @@ -1,2 +0,0 @@ -import {a}from'./chunk-EJHT5JBZ.js';import {a as a$1,b}from'./chunk-674VSOYY.js';import*as f from'react';import {useVirtualizer}from'@tanstack/react-virtual';import {jsx,jsxs}from'react/jsx-runtime';function lt({cardClassName:r,cardGridClassName:o,cardSizing:y,cardRenderer:E,containerWidth:N,currentRowSelection:V,DataTableCardView:z,DataTableEmptyState:M,dragAndDrop:d,editableRows:k,editingRowId:A,emptyNode:P,enableRowSelection:I,flexGrow:g,getRowClassName:H,hasCardTitle:_,infiniteScroll:B,localSearchValue:h,onRowClick:K,renderedRows:e,renderExpandedRow:O,resolvedLabels:n,resolvedLoadingRowCount:j,rowActions:U=[],ScrollArea:Y,sentinelRef:$,setCurrentRowSelection:q,setEditingRowId:F,shouldRenderInitialLoading:m,tableContainerClassName:J,uiClassNames:p,virtualization:R}){let v=m||e.length>0,x=f.useRef(null),{viewportElement:T,viewportHeight:Q}=a(x,v),l=typeof R=="object"?R.card:void 0,D=!m&&e.length>0&&l?.enabled===true,i=tt(l?.lanes,N),X=Math.ceil(e.length/i),b=D&&!!T&&Q>0,Z=f.useCallback(t=>e[t*i]?.id??t,[i,e]),w=useVirtualizer({count:D?X:0,enabled:b,estimateSize:()=>l?.estimateCardHeight??280,getItemKey:Z,getScrollElement:()=>T,overscan:l?.overscan??4}),G=b?w.getVirtualItems():[],C=(t,s)=>jsx(z,{rows:t,cardRenderer:E,cardGridClassName:o,cardClassName:r,cardSizing:y,rowActions:U,editableRows:k,renderExpandedRow:O,hasCardTitle:_,rowSelection:V,onRowSelectionChange:q,enableRowSelection:I,editingRowId:A,onEditingRowIdChange:F,getRowClassName:H,onRowClick:K,getRowDraggable:d?.getRowDraggable,onRowDragStart:d?.onRowDragStart,onRowDragEnd:d?.onRowDragEnd,isLoading:s?.isLoading,loadingRowCount:s?.loadingRowCount,labels:n});return jsx("div",{ref:x,"data-dtp-slot":"data-table-card-shell",className:a$1("box-border border-2 border-transparent transition-colors",g?"flex min-h-0 flex-1 flex-col":"h-full",d?.isDragging&&(p.dragActive??"rounded-md border-dashed")),children:jsx(Y,{className:a$1(g?"min-h-0 flex-1":"h-full",p.cardScrollArea,J),children:jsxs("div",{"data-dtp-slot":"data-table-card-viewport",className:a$1("flex min-h-full min-w-0 flex-col",g&&"min-h-0 flex-1",p.cardViewport),children:[v?m?C([],{isLoading:true,loadingRowCount:j}):b?jsx("div",{"data-dtp-slot":"data-table-card-virtualizer",style:{height:w.getTotalSize(),position:"relative",width:"100%"},children:G.map(t=>{let s=t.index*i,L=e.slice(s,s+i);return jsx("div",{"data-index":t.index,ref:w.measureElement,style:{left:0,position:"absolute",top:0,transform:`translateY(${t.start}px)`,width:"100%"},children:C(L)},t.key)})}):C(e.slice(0,Math.max(1,Math.floor(l?.fallbackCardCount??12)))):jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center p-4",children:P??jsx(M,{title:h?n.noMatchingRowsTitle:n.noRowsTitle,description:h?n.noMatchingRowsDescription:n.noRowsDescription})}),B?.enabled&&!m?jsx("div",{className:"shrink-0 px-4 pb-4",children:jsx("div",{ref:$,className:"h-4 w-full"})}):null]})})})}function tt(r,o){return typeof r=="number"?Math.max(1,Math.floor(r)):r!=="auto"?1:o>=b["2xl"]?5:o>=b.xl?4:o>=b.lg?3:o>=b.sm?2:1}export{lt as a};//# sourceMappingURL=chunk-FXX3TZ63.js.map -//# sourceMappingURL=chunk-FXX3TZ63.js.map \ No newline at end of file diff --git a/dist/chunk-FXX3TZ63.js.map b/dist/chunk-FXX3TZ63.js.map deleted file mode 100644 index 67c143a..0000000 --- a/dist/chunk-FXX3TZ63.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/core/data-table/data-table-virtual-card-panel.tsx"],"names":["DataTableVirtualCardPanel","cardClassName","cardGridClassName","cardSizing","cardRenderer","containerWidth","currentRowSelection","DataTableCardView","DataTableEmptyState","dragAndDrop","editableRows","editingRowId","emptyNode","enableRowSelection","flexGrow","getRowClassName","hasCardTitle","infiniteScroll","localSearchValue","onRowClick","renderedRows","renderExpandedRow","resolvedLabels","resolvedLoadingRowCount","rowActions","ScrollArea","sentinelRef","setCurrentRowSelection","setEditingRowId","shouldRenderInitialLoading","tableContainerClassName","uiClassNames","virtualization","shouldRenderCards","cardScrollContainerRef","viewportElement","viewportHeight","useDataTableScrollViewport","virtualizationConfig","enableCardVirtualization","lanes","resolveCardVirtualizationLanes","virtualRowCount","shouldUseVirtualCardRows","getItemKey","index","cardVirtualizer","useVirtualizer","virtualCardRows","renderCardView","rows","options","jsx","cn","jsxs","virtualRow","startIndex","configuredLanes","DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS"],"mappings":"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","file":"chunk-FXX3TZ63.js","sourcesContent":["import * as React from \"react\";\nimport type { Row } from \"@tanstack/react-table\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { cn } from \"../../lib/utils\";\nimport { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS } from \"../types\";\nimport type { DataTableCardPanelProps } from \"./data-table-card-panel-types\";\nimport { useDataTableScrollViewport } from \"./use-data-table-scroll-viewport\";\n\nexport function DataTableVirtualCardPanel({\n cardClassName,\n cardGridClassName,\n cardSizing,\n cardRenderer,\n containerWidth,\n currentRowSelection,\n DataTableCardView,\n DataTableEmptyState,\n dragAndDrop,\n editableRows,\n editingRowId,\n emptyNode,\n enableRowSelection,\n flexGrow,\n getRowClassName,\n hasCardTitle,\n infiniteScroll,\n localSearchValue,\n onRowClick,\n renderedRows,\n renderExpandedRow,\n resolvedLabels,\n resolvedLoadingRowCount,\n rowActions = [],\n ScrollArea,\n sentinelRef,\n setCurrentRowSelection,\n setEditingRowId,\n shouldRenderInitialLoading,\n tableContainerClassName,\n uiClassNames,\n virtualization,\n}: DataTableCardPanelProps) {\n const shouldRenderCards = shouldRenderInitialLoading || renderedRows.length > 0;\n const cardScrollContainerRef = React.useRef(null);\n const { viewportElement, viewportHeight } = useDataTableScrollViewport(\n cardScrollContainerRef,\n shouldRenderCards,\n );\n const virtualizationConfig =\n typeof virtualization === \"object\" ? virtualization.card : undefined;\n const enableCardVirtualization =\n !shouldRenderInitialLoading &&\n renderedRows.length > 0 &&\n virtualizationConfig?.enabled === true;\n const lanes = resolveCardVirtualizationLanes(\n virtualizationConfig?.lanes,\n containerWidth,\n );\n const virtualRowCount = Math.ceil(renderedRows.length / lanes);\n const shouldUseVirtualCardRows =\n enableCardVirtualization && Boolean(viewportElement) && viewportHeight > 0;\n const getItemKey = React.useCallback(\n (index: number) => renderedRows[index * lanes]?.id ?? index,\n [lanes, renderedRows],\n );\n // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Virtual owns its instance functions.\n const cardVirtualizer = useVirtualizer({\n count: enableCardVirtualization ? virtualRowCount : 0,\n enabled: shouldUseVirtualCardRows,\n estimateSize: () => virtualizationConfig?.estimateCardHeight ?? 280,\n getItemKey,\n getScrollElement: () => viewportElement,\n overscan: virtualizationConfig?.overscan ?? 4,\n });\n const virtualCardRows = shouldUseVirtualCardRows\n ? cardVirtualizer.getVirtualItems()\n : [];\n\n const renderCardView = (\n rows: Array>,\n options?: {\n isLoading?: boolean;\n loadingRowCount?: number;\n },\n ) => (\n \n );\n\n return (\n \n \n \n {shouldRenderCards ? (\n shouldRenderInitialLoading ? (\n renderCardView([], {\n isLoading: true,\n loadingRowCount: resolvedLoadingRowCount,\n })\n ) : shouldUseVirtualCardRows ? (\n \n {virtualCardRows.map((virtualRow) => {\n const startIndex = virtualRow.index * lanes;\n const rows = renderedRows.slice(\n startIndex,\n startIndex + lanes,\n );\n\n return (\n \n {renderCardView(rows)}\n \n );\n })}\n \n ) : (\n renderCardView(\n renderedRows.slice(\n 0,\n Math.max(\n 1,\n Math.floor(\n virtualizationConfig?.fallbackCardCount ?? 12,\n ),\n ),\n ),\n )\n )\n ) : (\n
    \n {emptyNode ?? (\n \n )}\n
    \n )}\n\n {infiniteScroll?.enabled && !shouldRenderInitialLoading ? (\n
    \n
    \n
    \n ) : null}\n
    \n \n \n );\n}\n\nfunction resolveCardVirtualizationLanes(\n configuredLanes: number | \"auto\" | undefined,\n containerWidth: number,\n) {\n if (typeof configuredLanes === \"number\") {\n return Math.max(1, Math.floor(configuredLanes));\n }\n\n if (configuredLanes !== \"auto\") {\n return 1;\n }\n\n if (containerWidth >= DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS[\"2xl\"]) {\n return 5;\n }\n if (containerWidth >= DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS.xl) {\n return 4;\n }\n if (containerWidth >= DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS.lg) {\n return 3;\n }\n if (containerWidth >= DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS.sm) {\n return 2;\n }\n return 1;\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-674VSOYY.js b/dist/chunk-GSCYQ624.js similarity index 70% rename from dist/chunk-674VSOYY.js rename to dist/chunk-GSCYQ624.js index 3e6f8bc..f9b8a9c 100644 --- a/dist/chunk-674VSOYY.js +++ b/dist/chunk-GSCYQ624.js @@ -1,2 +1,2 @@ -import {clsx}from'clsx';import {twMerge}from'tailwind-merge';function g(...e){return twMerge(clsx(e))}var s={sm:640,md:768,lg:1024,xl:1280,"2xl":1536};function u(e,a,t){return !a||t?true:!a.getIsHidden(e)}function D(e,a){return typeof e=="function"?e(a):e}function c(e,a){return !e.hidden?.(a)}function p(e,a){return e?.canEditRow?e.canEditRow(a):!!e}function n(e){switch(e){case "center":return "text-center";case "end":return "text-right";default:return "text-left"}}function o(e,a){return e||(a==="numeric"?"end":"start")}function m(e){let a=e.column.columnDef.meta;return n(o(a?.align,a?.type))}function w(e){let a=e.column.columnDef.meta;return n(o(a?.align,a?.type))}function C(e){return e?(Array.isArray(e)?e:[e]).map(t=>`dt-hide-on-${t}`).join(" "):void 0}function y(e,a){return !e||a<=0?false:(Array.isArray(e)?e:[e]).some(i=>a`dt-hide-on-${t}`).join(" "):void 0}function y(e,a){return !e||a<=0?false:(Array.isArray(e)?e:[e]).some(i=>a = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n \"2xl\": 1536,\n};\n\nexport type DataTableRowLoadingState = {\n isLoading: boolean;\n skeleton?: React.ReactNode;\n};\n\nexport type DataTableLoadingState = {\n isLoading: boolean;\n loadingRowCount?: number;\n};\n\nexport type DataTableCellEditRenderProps = {\n cell: CellContext;\n row: TData;\n value: TValue | undefined;\n draftValue: unknown;\n setDraftValue: (value: unknown) => void;\n};\n\nexport type DataTableColumnFilterOption = {\n label: string;\n value: string;\n};\n\nexport type DataTableColumnFilterRangeValue = {\n from?: TValue;\n to?: TValue;\n};\n\nexport type DataTableColumnFilterConfig = {\n type: DataTableColumnFilterType;\n label?: string;\n placeholder?: string;\n options?:\n | Array\n | ((context: { rows: Array }) => Array);\n getOptionValue?: (value: TValue | undefined, row: TData) => string;\n operator?: DataTableColumnFilterOperator;\n trueLabel?: string;\n falseLabel?: string;\n min?: number | string;\n max?: number | string;\n step?: number;\n};\n\nexport type DataTableColumnMeta = {\n type?: DataTableColumnType;\n fixed?: DataTableColumnFixed;\n cardTitle?: boolean;\n hideOn?: DataTableContainerBreakpoint | Array;\n minWidth?: number;\n align?: DataTableAlign;\n overflow?:\n | DataTableCellOverflow\n | ((args: {\n row: TData;\n value: TValue | undefined;\n }) => DataTableCellOverflow | undefined);\n headerClassName?: string;\n headerStyle?: React.CSSProperties;\n cellClassName?:\n | string\n | ((args: { row: TData; value: TValue | undefined }) => string | undefined);\n responsiveClassName?: string;\n skeleton?: (context: CellContext) => React.ReactNode;\n filter?: DataTableColumnFilterConfig;\n parseEditValue?: (value: unknown, context: CellContext) => unknown;\n formatEditValue?: (\n value: unknown,\n context: CellContext,\n ) => string;\n renderEditCell?: (\n props: DataTableCellEditRenderProps,\n ) => React.ReactNode;\n};\n\nexport type DataTableColumnDef = ColumnDef<\n TData,\n TValue\n> & {\n meta?: DataTableColumnMeta;\n columns?: Array>;\n};\n\nexport type DataTableColumnGroupDef = DataTableColumnDef<\n TData,\n unknown\n> & {\n id: string;\n columns: Array>;\n /**\n * A concise explanation of the columns in this group. It is exposed as an\n * accessible description and native tooltip on the shared header.\n */\n description?: string;\n /**\n * Allows leaves to cross this group's boundary during column reordering.\n * Groups are locked by default so a shared heading remains intact.\n */\n freeReordering?: boolean;\n /** Additional class name for this shared group header. */\n headerClassName?: string;\n /** Additional inline styles for this shared group header. */\n headerStyle?: React.CSSProperties;\n /** Height for this shared group header, overriding `columnGroupHeaderHeight`. */\n headerHeight?: React.CSSProperties[\"height\"];\n};\n\nexport type DataTableToolbarAction = {\n key: string;\n label: string;\n icon?: React.ComponentType<{ className?: string }>;\n iconOnly?: boolean;\n placement?: \"primary\" | \"trailing\";\n onClick: (context: {\n rows: Array;\n openFileDialog?: () => void;\n }) => void | Promise;\n variant?: \"default\" | \"secondary\" | \"outline\" | \"ghost\" | \"destructive\";\n disabled?: boolean;\n};\n\nexport type DataTableSelectionActionContext = {\n /** Selected row objects that are present in the currently loaded data. */\n rows: Array;\n /** Every selected row id, including ids retained across server pages. */\n rowIds: Array;\n};\n\nexport type DataTableSelectionAction = {\n key: string;\n label: string;\n icon?: React.ComponentType<{ className?: string }>;\n iconOnly?: boolean;\n onClick: (context: DataTableSelectionActionContext) => void | Promise;\n variant?: \"default\" | \"secondary\" | \"outline\" | \"ghost\" | \"destructive\";\n disabled?:\n | boolean\n | ((\n rows: Array,\n context: DataTableSelectionActionContext,\n ) => boolean);\n};\n\nexport type DataTableRowAction = {\n key: string;\n label: string | ((row: TData) => string);\n icon?: React.ComponentType<{ className?: string }>;\n onClick: (row: TData) => void | Promise;\n variant?: \"default\" | \"secondary\" | \"destructive\";\n hidden?: (row: TData) => boolean;\n disabled?: (row: TData) => boolean;\n};\n\nexport type DataTableColumnVisibilityOption = {\n id: string;\n label: string;\n visible: boolean;\n canHide: boolean;\n pinned?: false | DataTableColumnFixed;\n};\n\nexport type DataTableToolbarVisibility = {\n title?: boolean;\n search?: boolean;\n actions?: boolean;\n trailingActions?: boolean;\n options?: boolean;\n viewToggle?: boolean;\n customToolbar?: boolean;\n};\n\nexport type DataTableCardRendererProps = {\n row: TData;\n rowId: string;\n depth: number;\n canExpandSubRows: boolean;\n isSubRowsExpanded: boolean;\n toggleSubRowsExpanded: () => void;\n isSelected: boolean;\n onSelectedChange: (nextValue: boolean) => void;\n actions: Array>;\n isEditing: boolean;\n startEditing: () => void;\n cancelEditing: () => void;\n};\n\nexport type DataTableEditableRowsConfig = {\n canEditRow?: (row: TData) => boolean;\n getInitialValues?: (row: TData) => Record;\n onSaveRow: (\n row: TData,\n draftValues: Record,\n ) => void | Promise;\n};\n\nexport type DataTableInfiniteScroll = {\n enabled: boolean;\n hasMore: boolean;\n isLoadingMore?: boolean;\n onLoadMore: () => void | Promise;\n};\n\nexport type DataTableHiddenRowsConfig = {\n getIsHidden: (row: TData) => boolean;\n label?: string;\n};\n\nexport type DataTableEmptyStateContext = {\n rows: Array;\n toolbarQueryValue: string;\n};\n\nexport type DataTableDragAndDropConfig = {\n isDragging?: boolean;\n onDragEnter?: React.DragEventHandler;\n onDragOver?: React.DragEventHandler;\n onDragLeave?: React.DragEventHandler;\n onDrop?: React.DragEventHandler;\n getRowDraggable?: (row: TData) => boolean;\n onRowDragStart?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n onRowDragEnd?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n};\n\nexport type DataTableFileUploadConfig = {\n accept?: string;\n disabled?: boolean;\n multiple?: boolean;\n onFilesSelected: (files: FileList | Array) => void | Promise;\n};\n\nexport type DataTableVirtualizationConfig = {\n enabled?: boolean;\n estimateRowHeight?: number;\n fallbackRowCount?: number;\n overscan?: number;\n card?: DataTableCardVirtualizationConfig;\n};\n\nexport type DataTableCardVirtualizationConfig = {\n enabled?: boolean;\n estimateCardHeight?: number;\n fallbackCardCount?: number;\n overscan?: number;\n lanes?: number | \"auto\";\n};\n\nexport type DataTableExpandedRowProps = {\n row: TData;\n rowId: string;\n tableRow: Row;\n};\n\n/** A separately controlled application detail panel rendered beneath a row. */\nexport type DataTableDetailPanel = {\n expanded?: ExpandedState;\n onExpandedChange?: (expanded: ExpandedState) => void;\n getRowCanExpand?: (row: TData) => boolean;\n render: (props: DataTableExpandedRowProps) => React.ReactNode;\n};\n\nexport type DataTableCsvExportOptions = {\n filename?: string;\n includeHeaders?: boolean;\n columns?: Array;\n scope?: DataTableCsvExportScope;\n escapeFormulaValues?: boolean;\n lineEnding?: \"\\n\" | \"\\r\\n\";\n getCellValue?: (context: {\n row: TData;\n rowId: string;\n columnId: string;\n value: unknown;\n }) => unknown;\n onExport?: (context: {\n csv: string;\n filename: string;\n rows: Array;\n scope: DataTableCsvExportScope;\n }) => void | Promise;\n};\n\nexport type DataTableActionErrorContext = {\n source: DataTableActionErrorSource;\n error: unknown;\n actionKey?: string;\n row?: TData;\n};\n\nexport type DataTableColumnPrefs = {\n visibility?: VisibilityState;\n sizing?: Record;\n order?: ColumnOrderState;\n pinning?: ColumnPinningState;\n rowPinning?: RowPinningState;\n density?: DataTableDensity;\n};\n\nexport type DataTablePersistenceSlice = keyof DataTableColumnPrefs;\n\nexport type DataTablePersistenceStorage = Pick<\n Storage,\n \"getItem\" | \"setItem\" | \"removeItem\"\n>;\n\nexport type DataTablePersistenceOperation =\n | \"read\"\n | \"write\"\n | \"remove\"\n | \"serialize\"\n | \"deserialize\"\n | \"migrate\";\n\nexport type DataTablePersistencePayload = {\n version: string | number;\n state: DataTableColumnPrefs;\n};\n\nexport type DataTablePersistenceConfig = {\n key: string;\n version?: string | number;\n slices?: Array;\n storage?: DataTablePersistenceStorage;\n serialize?: (payload: DataTablePersistencePayload) => string;\n deserialize?: (value: string) => unknown;\n migrate?: (\n payload: { version: unknown; state: unknown },\n targetVersion: string | number,\n ) => DataTableColumnPrefs | undefined;\n debounceMs?: number;\n onError?: (context: {\n error: unknown;\n operation: DataTablePersistenceOperation;\n }) => void;\n};\n\nexport type DataTableState = {\n sorting: SortingState;\n pagination: PaginationState;\n rowSelection: Record;\n columnVisibility: VisibilityState;\n columnFilters: ColumnFiltersState;\n expanded: ExpandedState;\n columnOrder: ColumnOrderState;\n columnPinning: ColumnPinningState;\n rowPinning: RowPinningState;\n columnSizing: ColumnSizingState;\n density: DataTableDensity;\n viewMode: DataTableViewMode;\n showHiddenRows: boolean;\n globalFilter: string;\n};\n\nexport type DataTableInitialState = Partial;\n\nexport type DataTableSavedViewSlice = keyof DataTableState;\n\nexport type DataTableSavedView = {\n id: string;\n name: string;\n createdAt: string;\n updatedAt: string;\n state: Partial;\n};\n\nexport type DataTableSavedViewsPayload = {\n version: string | number;\n views: Array;\n};\n\nexport type DataTableSavedViewsChangeOperation =\n | \"create\"\n | \"rename\"\n | \"delete\"\n | \"clear\";\n\nexport type DataTableSavedViewsConfig = {\n key: string;\n version?: string | number;\n slices?: Array;\n storage?: DataTablePersistenceStorage;\n serialize?: (payload: DataTableSavedViewsPayload) => string;\n deserialize?: (value: string) => unknown;\n migrate?: (\n payload: { version: unknown; views: unknown },\n targetVersion: string | number,\n ) => Array | undefined;\n onChange?: (\n views: Array,\n operation: DataTableSavedViewsChangeOperation,\n ) => void;\n onApply?: (view: DataTableSavedView) => void;\n onError?: (context: {\n error: unknown;\n operation: DataTablePersistenceOperation;\n }) => void;\n};\n\nexport type DataTableResetOptions = {\n clearPersistence?: boolean;\n};\n\nexport type DataTableApi = {\n getTable: () => TanStackTable | null;\n getState: () => DataTableState;\n snapshot: () => DataTableState;\n restore: (state: Partial) => void;\n resetColumnLayout: (options?: DataTableResetOptions) => void;\n resetState: (options?: DataTableResetOptions) => void;\n clearPersistedState: () => boolean;\n getSavedViews: () => Array;\n createSavedView: (name: string) => DataTableSavedView | undefined;\n applySavedView: (id: string) => boolean;\n renameSavedView: (\n id: string,\n name: string,\n ) => DataTableSavedView | undefined;\n deleteSavedView: (id: string) => boolean;\n clearSavedViews: () => boolean;\n pinRow: (rowId: string, position?: \"top\" | \"bottom\") => boolean;\n unpinRow: (rowId: string) => boolean;\n focus: () => void;\n scrollToRow: (rowId: string) => boolean;\n scrollToColumn: (columnId: string) => boolean;\n exportCsv: (\n options?: boolean | DataTableCsvExportOptions,\n ) => Promise;\n};\n\nexport type DataTableLabels = {\n searchPlaceholder: string;\n searchTable: string;\n clearSearch: string;\n noRowsTitle: string;\n noRowsDescription: string;\n noMatchingRowsTitle: string;\n noMatchingRowsDescription: string;\n tableOptions: string;\n columns: string;\n filters: string;\n clearFilters: string;\n filterFrom?: string;\n filterTo?: string;\n filterTrue?: string;\n filterFalse?: string;\n selectedRows: (count: number) => string;\n showHiddenRows: (label: string) => string;\n recordsPerPage: string;\n totalRecords: (count: number) => string;\n pageStatus: (pageIndex: number, pageCount: number) => string;\n pageStatusUnknown?: (pageIndex: number) => string;\n pagination?: string;\n morePages?: string;\n firstPage: string;\n previousPage: string;\n nextPage: string;\n lastPage: string;\n selectAllVisibleRows?: string;\n selectAllFilteredRows?: string;\n selectRow?: string;\n selectCardRow?: (rowId: string) => string;\n switchToTableView?: string;\n switchToCardView?: string;\n tableView?: string;\n cardView?: string;\n allFilterOptions?: string;\n actions: string;\n rowActions: string;\n editRow: string;\n saveEdit: string;\n cancelEdit: string;\n expandRow: string;\n collapseRow: string;\n expandRowDetails?: string;\n collapseRowDetails?: string;\n exportCsv: string;\n density: string;\n compactDensity: string;\n comfortableDensity: string;\n spaciousDensity: string;\n pinLeft: string;\n pinRight: string;\n unpin: string;\n pinRowToTop: string;\n pinRowToBottom: string;\n unpinRow: string;\n resizeColumn: (columnLabel: string) => string;\n};\n\nexport type DataTableSummaryRow = {\n key: string;\n label?: React.ReactNode;\n cells: Record<\n string,\n React.ReactNode | ((context: { rows: Array; columnId: string }) => React.ReactNode)\n >;\n};\n\nexport type DataTableRowClassNameContext = {\n row: TData;\n rowId: string;\n rowIndex: number;\n isEditing: boolean;\n isExpanded: boolean;\n isLoading: boolean;\n isSelected: boolean;\n pinnedPosition: false | \"top\" | \"bottom\";\n};\n\nexport type DataTableProps = {\n columns: Array>;\n data: Array;\n getRowId: (row: TData, index: number) => string;\n children?: React.ReactNode;\n title?: string;\n description?: string;\n toolbarQueryValue?: string;\n onToolbarQueryValueChange?: (value: string) => void;\n toolbarQueryPlaceholder?: string;\n toolbarQueryDebounceMs?: number;\n manualFiltering?: boolean;\n enableToolbarQueryFiltering?: boolean;\n globalFilterFn?: FilterFnOption;\n columnFilters?: ColumnFiltersState;\n onColumnFiltersChange?: (filters: ColumnFiltersState) => void;\n enableColumnFilters?: boolean;\n customToolbar?: React.ReactNode;\n compactToolbar?: React.ReactNode;\n rowsPerPageOptions?: Array;\n totalRowCount?: number;\n hasNextPage?: boolean;\n sorting?: SortingState;\n onSortingChange?: (sorting: SortingState) => void;\n manualSorting?: boolean;\n pageIndex?: number;\n pageSize?: number;\n onPageIndexChange?: (pageIndex: number) => void;\n onPageSizeChange?: (pageSize: number) => void;\n pageCount?: number;\n manualPagination?: boolean;\n rowSelection?: Record;\n onRowSelectionChange?: (rowSelection: Record) => void;\n enableRowSelection?: boolean;\n /** Allows multiple selected rows globally or per row. Defaults to true. */\n enableMultiRowSelection?: boolean | ((row: TData) => boolean);\n /** Cascades parent selection to sub-rows globally or per row. Defaults to true. */\n enableSubRowSelection?: boolean | ((row: TData) => boolean);\n /** Prevents individual rows from being selected. */\n getRowCanSelect?: (row: TData) => boolean;\n /** Select-all affects the current page or all loaded filtered rows. */\n rowSelectionSelectAllScope?: \"page\" | \"filtered\";\n expanded?: ExpandedState;\n onExpandedChange?: (expanded: ExpandedState) => void;\n /** Resolve nested records for tree expansion. */\n getSubRows?: (row: TData, index: number) => Array | undefined;\n /** Keep expansion state controlled by the host; useful for server-loaded children. */\n manualExpanding?: boolean;\n /** Keep child rows with their parent when paginating. Defaults to TanStack's behavior. */\n paginateExpandedRows?: boolean;\n /** Include parents when a descendant matches a filter. */\n filterFromLeafRows?: boolean;\n /** Limit descendant traversal while filtering. */\n maxLeafRowFilterDepth?: number;\n /** New, independently controlled detail-panel contract. */\n detailPanel?: DataTableDetailPanel;\n getRowCanExpand?: (row: TData) => boolean;\n /** @deprecated Use `detailPanel={{ render }}`. Kept as a detail-panel bridge. */\n renderExpandedRow?: (\n props: DataTableExpandedRowProps,\n ) => React.ReactNode;\n columnOrder?: ColumnOrderState;\n onColumnOrderChange?: (columnOrder: ColumnOrderState) => void;\n enableColumnReordering?: boolean;\n /** Default height for shared column-group header cells. */\n columnGroupHeaderHeight?: React.CSSProperties[\"height\"];\n columnPinning?: ColumnPinningState;\n onColumnPinningChange?: (columnPinning: ColumnPinningState) => void;\n enableColumnPinning?: boolean;\n rowPinning?: RowPinningState;\n onRowPinningChange?: (rowPinning: RowPinningState) => void;\n /** Enables row actions that pin a row to the top or bottom of the table. */\n enableRowPinning?: boolean | ((row: TData) => boolean);\n /** Keep pinned rows visible when filtering or paginating them out. */\n keepPinnedRows?: boolean;\n toolbarActions?: Array>;\n selectionActions?: Array>;\n rowActions?: Array>;\n csvExport?: boolean | DataTableCsvExportOptions;\n density?: DataTableDensity;\n onDensityChange?: (density: DataTableDensity) => void;\n enableDensityToggle?: boolean;\n columnPrefsKey?: string;\n persistence?: DataTablePersistenceConfig;\n savedViews?: DataTableSavedViewsConfig;\n initialState?: DataTableInitialState;\n state?: Partial;\n onStateChange?: (updater: Updater) => void;\n apiRef?: React.Ref>;\n labels?: Partial;\n summaryRows?: Array>;\n cardRenderer?: (props: DataTableCardRendererProps) => React.ReactNode;\n cardSizing?: DataTableCardSizing;\n cardGridClassName?: string;\n cardClassName?: string;\n viewMode?: DataTableViewMode;\n onViewModeChange?: (viewMode: DataTableViewMode) => void;\n enableViewToggle?: boolean;\n emptyState?:\n | React.ReactNode\n | ((context: DataTableEmptyStateContext) => React.ReactNode);\n isLoading?: boolean;\n loadingRowCount?: number;\n getRowLoadingState?: (\n row: TData,\n index: number,\n ) => boolean | DataTableRowLoadingState;\n hiddenRows?: DataTableHiddenRowsConfig;\n showHiddenRows?: boolean;\n onShowHiddenRowsChange?: (showHiddenRows: boolean) => void;\n infiniteScroll?: DataTableInfiniteScroll;\n editableRows?: DataTableEditableRowsConfig;\n columnVisibility?: VisibilityState;\n onColumnVisibilityChange?: (visibility: VisibilityState) => void;\n columnSizing?: ColumnSizingState;\n onColumnSizingChange?: (sizing: ColumnSizingState) => void;\n enableColumnResizing?: boolean;\n columnResizeMode?: \"onChange\" | \"onEnd\";\n layoutMode?: \"fill\" | \"fit\";\n stickyHeader?: boolean;\n showFooter?: boolean;\n showToolbar?: boolean;\n dir?: \"ltr\" | \"rtl\";\n flexGrow?: boolean;\n toolbarVisibility?: DataTableToolbarVisibility;\n className?: string;\n tableClassName?: string;\n tableContainerClassName?: string;\n stripedRows?: boolean;\n getRowClassName?: (\n row: TData,\n context: DataTableRowClassNameContext,\n ) => string | undefined;\n onRowClick?: (context: { row: TData; rowId: string }) => void | Promise;\n onActionError?: (context: DataTableActionErrorContext) => void;\n dragAndDrop?: DataTableDragAndDropConfig;\n fileUpload?: DataTableFileUploadConfig;\n virtualization?: boolean | DataTableVirtualizationConfig;\n};\n\nexport function isRowVisible(\n row: TData,\n hiddenRows: DataTableHiddenRowsConfig | undefined,\n showHiddenRows: boolean,\n) {\n if (!hiddenRows) {\n return true;\n }\n\n if (showHiddenRows) {\n return true;\n }\n\n return !hiddenRows.getIsHidden(row);\n}\n\nexport function resolveRowActionLabel(\n label: DataTableRowAction[\"label\"],\n row: TData,\n) {\n return typeof label === \"function\" ? label(row) : label;\n}\n\nexport function canUseRowAction(\n action: DataTableRowAction,\n row: TData,\n) {\n return !action.hidden?.(row);\n}\n\nexport function canEditRow(\n editableRows: DataTableEditableRowsConfig | undefined,\n row: TData,\n) {\n return editableRows?.canEditRow\n ? editableRows.canEditRow(row)\n : Boolean(editableRows);\n}\n\nexport function alignClassName(align: DataTableAlign | undefined) {\n switch (align) {\n case \"center\":\n return \"text-center\";\n case \"end\":\n return \"text-right\";\n default:\n return \"text-left\";\n }\n}\n\nexport function resolveColumnAlign(\n align: DataTableAlign | undefined,\n type: DataTableColumnType | undefined,\n) {\n if (align) {\n return align;\n }\n\n if (type === \"numeric\") {\n return \"end\";\n }\n\n return \"start\";\n}\n\nexport function headerAlignClassName(\n context: HeaderContext,\n) {\n const meta = (context.column.columnDef as DataTableColumnDef)\n .meta;\n return alignClassName(resolveColumnAlign(meta?.align, meta?.type));\n}\n\nexport function cellAlignClassName(\n context: CellContext,\n) {\n const meta = (context.column.columnDef as DataTableColumnDef)\n .meta;\n return alignClassName(resolveColumnAlign(meta?.align, meta?.type));\n}\n\nexport function hideOnClassName(\n hideOn:\n | DataTableContainerBreakpoint\n | Array\n | undefined,\n) {\n if (!hideOn) {\n return undefined;\n }\n\n const values = Array.isArray(hideOn) ? hideOn : [hideOn];\n return values.map((value) => `dt-hide-on-${value}`).join(\" \");\n}\n\nexport function isHiddenAtContainerWidth(\n hideOn:\n | DataTableContainerBreakpoint\n | Array\n | undefined,\n containerWidth: number,\n) {\n if (!hideOn || containerWidth <= 0) {\n return false;\n }\n\n const values = Array.isArray(hideOn) ? hideOn : [hideOn];\n return values.some(\n (value) => containerWidth < DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS[value],\n );\n}\n\nexport function rowSelectionStateFromRows(rows: Array>) {\n return rows.map((row) => row.original);\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-HHUJMI3H.js b/dist/chunk-HHUJMI3H.js new file mode 100644 index 0000000..0e163c3 --- /dev/null +++ b/dist/chunk-HHUJMI3H.js @@ -0,0 +1,2 @@ +import {a as a$1}from'./chunk-ZA7LQ2JH.js';import {a}from'./chunk-UKIIMIBW.js';import {j}from'./chunk-67Y57KCA.js';function b(r){return j(r,{CardPanel:a$1,TablePanel:a})}export{b as a};//# sourceMappingURL=chunk-HHUJMI3H.js.map +//# sourceMappingURL=chunk-HHUJMI3H.js.map \ No newline at end of file diff --git a/dist/chunk-ICUHQJ2O.js.map b/dist/chunk-HHUJMI3H.js.map similarity index 92% rename from dist/chunk-ICUHQJ2O.js.map rename to dist/chunk-HHUJMI3H.js.map index 7fbd4fd..575b6e3 100644 --- a/dist/chunk-ICUHQJ2O.js.map +++ b/dist/chunk-HHUJMI3H.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/core/data-table/create-virtual-data-table.ts"],"names":["createVirtualDataTable","ui","createDataTableWithPanels","DataTableVirtualCardPanel","DataTableVirtualTablePanel"],"mappings":"mHAKO,SAASA,CAAAA,CAAuBC,CAAAA,CAAoB,CACzD,OAAOC,CAAAA,CAA0BD,CAAAA,CAAI,CACnC,SAAA,CAAWE,GAAAA,CACX,UAAA,CAAYC,CACd,CAAC,CACH","file":"chunk-ICUHQJ2O.js","sourcesContent":["import type { DataTableUiKit } from \"../ui-kit\";\nimport { createDataTableWithPanels } from \"./create-data-table\";\nimport { DataTableVirtualCardPanel } from \"./data-table-virtual-card-panel\";\nimport { DataTableVirtualTablePanel } from \"./data-table-virtual-table-panel\";\n\nexport function createVirtualDataTable(ui: DataTableUiKit) {\n return createDataTableWithPanels(ui, {\n CardPanel: DataTableVirtualCardPanel,\n TablePanel: DataTableVirtualTablePanel,\n });\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../src/core/data-table/create-virtual-data-table.ts"],"names":["createVirtualDataTable","ui","createDataTableWithPanels","DataTableVirtualCardPanel","DataTableVirtualTablePanel"],"mappings":"mHAKO,SAASA,CAAAA,CAAuBC,CAAAA,CAAoB,CACzD,OAAOC,CAAAA,CAA0BD,CAAAA,CAAI,CACnC,SAAA,CAAWE,GAAAA,CACX,UAAA,CAAYC,CACd,CAAC,CACH","file":"chunk-HHUJMI3H.js","sourcesContent":["import type { DataTableUiKit } from \"../ui-kit\";\nimport { createDataTableWithPanels } from \"./create-data-table\";\nimport { DataTableVirtualCardPanel } from \"./data-table-virtual-card-panel\";\nimport { DataTableVirtualTablePanel } from \"./data-table-virtual-table-panel\";\n\nexport function createVirtualDataTable(ui: DataTableUiKit) {\n return createDataTableWithPanels(ui, {\n CardPanel: DataTableVirtualCardPanel,\n TablePanel: DataTableVirtualTablePanel,\n });\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-ICUCANNA.js b/dist/chunk-ICUCANNA.js deleted file mode 100644 index 067a889..0000000 --- a/dist/chunk-ICUCANNA.js +++ /dev/null @@ -1,2 +0,0 @@ -import {a as a$1}from'./chunk-EJHT5JBZ.js';import {w,u,c,z,A,G,L,D,N,F,v,x,y as y$1,J,K,H,P,E,S,o,t,j as j$1,l,r,a as a$2,q,p,M,I,O,B,C,k,i}from'./chunk-32UNH3MQ.js';import {b,a,j,c as c$1,e,f,d}from'./chunk-674VSOYY.js';import*as y from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {useReactTable,getPaginationRowModel,getExpandedRowModel,getSortedRowModel,getFilteredRowModel,getCoreRowModel}from'@tanstack/react-table';import {flushSync}from'react-dom';function Vt({cardClassName:e,cardGridClassName:a$1,cardSizing:t,cardRenderer:n,currentRowSelection:i,DataTableCardView:s,DataTableEmptyState:l,dragAndDrop:b,editableRows:u,editingRowId:D,emptyNode:v,enableRowSelection:E,flexGrow:R,getRowClassName:S,hasCardTitle:x,infiniteScroll:M,localSearchValue:H,onRowClick:T,renderedRows:m,renderExpandedRow:c,resolvedLabels:w,resolvedLoadingRowCount:f,rowActions:r=[],ScrollArea:h,sentinelRef:g,setCurrentRowSelection:$,setEditingRowId:I,shouldRenderInitialLoading:B,tableContainerClassName:K,uiClassNames:A}){let C=B||m.length>0,Q=y.useRef(null),j=(q,X)=>jsx(s,{rows:q,cardRenderer:n,cardGridClassName:a$1,cardClassName:e,cardSizing:t,rowActions:r,editableRows:u,renderExpandedRow:c,hasCardTitle:x,rowSelection:i,onRowSelectionChange:$,enableRowSelection:E,editingRowId:D,onEditingRowIdChange:I,getRowClassName:S,onRowClick:T,getRowDraggable:b?.getRowDraggable,onRowDragStart:b?.onRowDragStart,onRowDragEnd:b?.onRowDragEnd,isLoading:X?.isLoading,loadingRowCount:X?.loadingRowCount,labels:w});return jsx("div",{ref:Q,"data-dtp-slot":"data-table-card-shell",className:a("box-border border-2 border-transparent transition-colors",R?"flex min-h-0 flex-1 flex-col":"h-full",b?.isDragging&&(A.dragActive??"rounded-md border-dashed")),children:jsx(h,{className:a(R?"min-h-0 flex-1":"h-full",A.cardScrollArea,K),children:jsxs("div",{"data-dtp-slot":"data-table-card-viewport",className:a("flex min-h-full min-w-0 flex-col",R&&"min-h-0 flex-1",A.cardViewport),children:[C?B?j([],{isLoading:true,loadingRowCount:f}):j(m):jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center p-4",children:v??jsx(l,{title:H?w.noMatchingRowsTitle:w.noRowsTitle,description:H?w.noMatchingRowsDescription:w.noRowsDescription})}),M?.enabled&&!B?jsx("div",{className:"shrink-0 px-4 pb-4",children:jsx("div",{ref:g,className:"h-4 w-full"})}):null]})})})}var Rr=y.lazy(async()=>({default:(await import('./data-table-virtual-card-panel-4LELMUIN.js')).DataTableVirtualCardPanel}));function oo(e){let a=typeof e.virtualization=="object"?e.virtualization.card:void 0;return a?.enabled!==true?jsx(Vt,{...e}):jsx(y.Suspense,{fallback:jsx(Vt,{...e,renderedRows:e.renderedRows.slice(0,Math.max(1,Math.floor(a.fallbackCardCount??12)))}),children:jsx(Rr,{...e})})}function io({children:e,currentPagination:a,DataTableFooter:t,effectivePageCount:n,footerTotalRowCount:i,handleFooterPageIndexChange:s,handleFooterPageSizeChange:l,labels:b,pageCountKnown:u=true,rowsPerPageOptions:D,showFooter:v}){return !v&&!e?null:jsxs("div",{"data-dtp-slot":"data-table-footer",className:"shrink-0",children:[v?jsx(t,{pageIndex:a.pageIndex,pageCount:n,pageCountKnown:u,pageSize:a.pageSize,totalRowCount:i,rowsPerPageOptions:D,onPageIndexChange:s,onPageSizeChange:l,labels:b}):null,e]})}function lo({allRows:e,columnFilters:a,columnVisibilityOptions:t,compactToolbar:n,customToolbar:i,DataTableToolbar:s,description:l,descriptionId:b,effectiveToolbarActions:u,enableColumnPinning:D,enableDensityToggle:v,enableViewToggle:E,hiddenRowsLabel:R,labels:S,onClearColumnFilters:x,onColumnFilterChange:M,onColumnPinningChange:H,onDensityChange:T,onShowHiddenRowsChange:m,onToolbarQueryValueChange:c,onViewModeChange:w,openFileDialog:f,selectedRows:r,selectionActions:h,showHiddenRows:g,table:$,title:I,titleId:B,toolbarQueryPlaceholder:K,toolbarQueryValue:A,toolbarVisibility:C,density:Q,viewMode:j}){return jsx("div",{"data-dtp-slot":"data-table-toolbar",className:"shrink-0",children:jsx(s,{title:I,titleId:B,description:l,descriptionId:b,toolbarQueryValue:A,toolbarQueryPlaceholder:K,onToolbarQueryValueChange:c,customToolbar:i,compactToolbar:n,viewMode:j,onViewModeChange:w,enableViewToggle:E,toolbarActions:u,selectionActions:h,selectedRows:r,showHiddenRows:g,hiddenRowsLabel:R,onShowHiddenRowsChange:m,allRows:e,columnVisibilityOptions:t,onColumnVisibilityChange:(q,X)=>{$.getColumn(q)?.toggleVisibility(X);},enableColumnPinning:D,onColumnPinningChange:H,columnFilters:a,onColumnFilterChange:M,onClearColumnFilters:x,density:Q,onDensityChange:T,enableDensityToggle:v,labels:S,toolbarVisibility:C,openFileDialog:f})})}var ce={searchPlaceholder:"Search rows...",searchTable:"Search table",clearSearch:"Clear search",noRowsTitle:"No rows yet",noRowsDescription:"Create a record or refresh this view once data exists.",noMatchingRowsTitle:"No matching rows",noMatchingRowsDescription:"Try a different search term or clear filters.",tableOptions:"Show table options",columns:"Columns",filters:"Filters",clearFilters:"Clear filters",selectedRows:e=>`${e} record${e===1?"":"s"} selected`,showHiddenRows:e=>`Show ${e}`,recordsPerPage:"Records per page",totalRecords:e=>`Total records: ${e}`,pageStatus:(e,a)=>`Page ${e+1} of ${a}`,pageStatusUnknown:e=>`Page ${e+1}`,pagination:"Pagination",morePages:"More pages",firstPage:"First page",previousPage:"Previous page",nextPage:"Next page",lastPage:"Last page",selectAllVisibleRows:"Select all visible rows",selectRow:"Select row",selectCardRow:e=>`Select row ${e}`,switchToTableView:"Switch to table view",switchToCardView:"Switch to card view",tableView:"Table view",cardView:"Card view",allFilterOptions:"All",actions:"Actions",rowActions:"Row actions",editRow:"Edit row",saveEdit:"Save",cancelEdit:"Cancel editing",expandRow:"Expand row",collapseRow:"Collapse row",exportCsv:"Export CSV",density:"Density",compactDensity:"Compact",comfortableDensity:"Comfortable",spaciousDensity:"Spacious",pinLeft:"Pin left",pinRight:"Pin right",unpin:"Unpin",resizeColumn:e=>`Resize ${e}`};function so(e){return {...ce,...e}}function co({Button:e,Checkbox:a$1,DataTableRowActions:t,Tooltip:n,TooltipContent:i,TooltipTrigger:s,cancelEditing:l,columns:b,editableRows:u$1,editingRowId:D,enableRowSelection:v,getRowCanExpand:E,isSavingEdit:R,labels:S,lastSelectedRowIdRef:x,renderExpandedRow:M,rowActions:H,saveEdit:T,startEditingRow:m,tableRef:c$1}){let w$1=y.useCallback((f,r)=>{let h=c$1.current;if(!h||!x.current)return;let g=h.getRowModel().rows.filter(A=>!w(A.original)),$=g.findIndex(A=>A.id===x.current),I=g.findIndex(A=>A.id===f);if($<0||I<0)return;let B=Math.min($,I),K=Math.max($,I);h.setRowSelection(A=>{let C={...A};for(let Q of g.slice(B,K+1))r?C[Q.id]=true:delete C[Q.id];return C});},[x,c$1]);return y.useMemo(()=>{let f=[];return M&&f.push({id:"__expand__",enableResizing:false,enableSorting:false,enableHiding:false,size:u,minSize:u,maxSize:u,header:()=>jsx("span",{className:"sr-only",children:S.expandRow}),cell:({row:r})=>{if(!(E?.(r.original)??!!M))return null;let g=r.getIsExpanded();return jsx("div",{className:"flex items-center justify-center",children:jsx(e,{type:"button",variant:"ghost",size:"icon-sm","aria-label":g?S.collapseRow:S.expandRow,"aria-expanded":g,onClick:()=>r.toggleExpanded(),children:jsx(c,{className:a("transition-transform",g?"rotate-0":"-rotate-90")})})})}}),v&&f.push({id:"__select__",enableResizing:false,enableSorting:false,enableHiding:false,size:u,minSize:u,maxSize:u,header:({table:r})=>jsx("div",{className:"flex items-center justify-center",children:jsx(a$1,{className:"my-0.5",checked:r.getIsAllPageRowsSelected(),onCheckedChange:h=>{r.toggleAllPageRowsSelected(h===true);},"aria-label":S.selectAllVisibleRows??ce.selectAllVisibleRows})}),cell:({row:r})=>jsx("div",{className:"flex items-center justify-center",children:jsx(a$1,{className:"my-0.5",checked:r.getIsSelected(),onClick:h=>{if(!h.shiftKey||!x.current){x.current=r.id;return}h.preventDefault(),h.stopPropagation(),w$1(r.id,!r.getIsSelected()),x.current=r.id;},onCheckedChange:h=>{x.current=r.id,r.toggleSelected(h===true);},"aria-label":S.selectRow??ce.selectRow})})}),f.push(...b.map(r=>z(r))),(H.length||u$1)&&f.push({id:"__actions__",enableSorting:false,enableResizing:false,enableHiding:false,size:u,minSize:u,maxSize:u,header:()=>jsx("span",{className:"sr-only",children:S.actions}),cell:({row:r})=>{let h=r.id;return D===h?jsxs("div",{className:"flex w-full items-center justify-end gap-2",children:[jsx(e,{type:"button",size:"sm",disabled:R,onClick:()=>{T(r.original);},children:S.saveEdit}),jsxs(n,{children:[jsx(s,{asChild:true,children:jsxs(e,{type:"button",size:"icon-sm",variant:"ghost",onClick:l,children:[jsx(c,{className:"rotate-45"}),jsx("span",{className:"sr-only",children:S.cancelEdit})]})}),jsx(i,{children:S.cancelEdit})]})]}):jsx("div",{className:"flex w-full items-center justify-center",children:jsx(t,{row:r.original,rowActions:H,editableRows:u$1,isEditing:false,onStartEditing:()=>{m(r.original,r.id);},onCancelEditing:()=>{},labels:S})})}}),f},[e,a$1,t,n,i,s,l,b,u$1,D,v,E,R,S,x,M,H,T,w$1,m])}function uo({enabled:e,hasMore:a,isLoadingMore:t,onLoadMore:n,onError:i}){let s=y.useRef(null),l=y.useRef(false),b=y.useEffectEvent(n),u=y.useEffectEvent(D=>{i?.(D);});return y.useEffect(()=>{if(!e||!a||t)return;let D=s.current;if(!D)return;let v=new IntersectionObserver(E=>{if(E[0].isIntersecting&&!l.current){l.current=true;let S;try{S=b();}catch(x){l.current=false,u(x);return}Promise.resolve(S).catch(x=>{u(x);}).finally(()=>{l.current=false;});}},{rootMargin:"200px 0px 200px 0px"});return v.observe(D),()=>{v.disconnect();}},[e,a,t]),s}function bo({enabled:e,maxPageIndex:a,onPageIndexChange:t,pageIndex:n,setLocalPageIndex:i}){y.useEffect(()=>{if(!e||n>=0&&n<=a)return;let s=Math.min(Math.max(n,0),a);i(s),t?.(s);},[e,a,t,n,i]);}function mo({autoResetPageIndex:e,columnResizeMode:a,dir:t,currentColumnFilters:n,currentColumnOrder:i,currentColumnPinning:s,currentColumnSizing:l,currentExpanded:b,currentPagination:u,currentRowSelection:D$1,currentSorting:v,defaultColumn:E,effectiveColumnVisibility:R,enableColumnResizing:S,enableRowSelection:x,getRowCanExpand:M,globalFilterFn:H,globalFilterValue:T,hasNextPage:m,handleColumnFiltersChange:c,handleColumnOrderChange:w,handleColumnPinningChange:f,handleColumnVisibilityChange:r,handleExpandedChange:h,infiniteScroll:g,manualFiltering:$,manualPagination:I,manualSorting:B,onActionError:K,onPageIndexChange:A$1,onPageSizeChange:C,pageCount:Q,pageIndex:j,pageSize:q,renderExpandedRow:X,setCurrentRowSelection:V,setCurrentSorting:U,setLocalColumnSizing:Z,setLocalPagination:te,shouldRenderInitialLoading:se,tableColumns:me,tableData:Le,tableGetRowId:Me,tableRef:Ce,totalRowCount:J,virtualization:Ae}){let pe=y.useMemo(()=>A(me).map(({column:k,index:N})=>G(k,N)),[me]),Ve=y.useMemo(()=>{let k=pe,N=k.filter(W=>!L(W)&&W!=="__spacer__"),ne=new Set(N),o=i.filter(W=>ne.has(W)),P=N.filter(W=>!o.includes(W));return [...k.filter(W=>W==="__expand__"||W==="__select__"),...o,...P,...k.filter(W=>W==="__spacer__"),...k.filter(W=>W==="__actions__")]},[i,pe]),De=y.useMemo(()=>{let k=new Set(pe),N=new Set(pe.filter(P=>!L(P)&&P!=="__spacer__")),ne=(s.left??[]).filter(P=>N.has(P)),o=(s.right??[]).filter(P=>N.has(P));return {left:[...["__expand__","__select__"].filter(P=>k.has(P)),...ne],right:[...o,...["__actions__"].filter(P=>k.has(P))]}},[s,pe]),F=y.useMemo(()=>({sorting:v,pagination:u,rowSelection:D$1,columnVisibility:R,columnFilters:n,globalFilter:T,expanded:b,columnOrder:Ve,columnPinning:De,columnSizing:l}),[n,l,b,u,D$1,v,R,Ve,De,T]),we=y.useCallback(k=>{let N=typeof k=="function"?k(u):k;(j===void 0||q===void 0)&&te(ne=>({pageIndex:j===void 0?N.pageIndex:ne.pageIndex,pageSize:q===void 0?N.pageSize:ne.pageSize})),N.pageIndex!==u.pageIndex&&A$1?.(N.pageIndex),N.pageSize!==u.pageSize&&C?.(N.pageSize);},[u,A$1,C,j,q,te]),Se=y.useCallback(k=>{Z(k);},[Z]),be=useReactTable({data:Le,columns:me,getCoreRowModel:getCoreRowModel(),getFilteredRowModel:$?void 0:getFilteredRowModel(),getSortedRowModel:B?void 0:getSortedRowModel(),getExpandedRowModel:X?getExpandedRowModel():void 0,getPaginationRowModel:I||g?.enabled?void 0:getPaginationRowModel(),enableRowSelection:x,enableMultiRowSelection:x,enableColumnResizing:S,columnResizeMode:a,columnResizeDirection:t,getRowId:Me,getRowCanExpand:X?k=>M?.(k.original)??true:void 0,globalFilterFn:H??D,getColumnCanGlobalFilter:k=>k.columnDef.enableGlobalFilter!==false&&typeof k.accessorFn=="function",manualSorting:B,manualFiltering:$,manualPagination:I||!!g?.enabled,defaultColumn:E,autoResetPageIndex:e,state:F,onSortingChange:U,onPaginationChange:we,onRowSelectionChange:V,onColumnVisibilityChange:r,onColumnFiltersChange:c,onExpandedChange:h,onColumnOrderChange:w,onColumnPinningChange:f,onColumnSizingChange:Se});Ce.current=be;let ge=be.getVisibleLeafColumns(),Ye=y.useCallback((k,N$1)=>{if(k===N$1)return;let ne=be.getAllLeafColumns().map(P=>P.id).filter(P=>!L(P)),o=N(i.length?i:ne,k,N$1);w(o);},[i,w,be]),Y=be.getRowModel().rows,Oe=typeof Ae=="object"?Ae:void 0,je=Ae===true||Oe?.enabled===true,Ze=Math.max(1,Math.floor(Oe?.fallbackRowCount??20)),Ge=(je?Y.slice(0,Ze):Y).map((k,N)=>({row:k,rowIndex:N})),Ie=I||!!g?.enabled,ze=Ie?void 0:be.getFilteredRowModel().rows.length,ve=J??ze,_e=!Ie||Q!==void 0||J!==void 0,ea=ve,he=se?1:Q??(ve!==void 0?Math.max(1,Math.ceil(ve/u.pageSize)):Ie?u.pageIndex+(m?2:1):be.getPageCount()),He=Math.max(0,he-1),aa=y.useCallback(k=>{j===void 0&&te(N=>N.pageIndex===k?N:{...N,pageIndex:k});},[j,te]);bo({enabled:!se&&!g?.enabled&&_e,maxPageIndex:He,onPageIndexChange:A$1,pageIndex:u.pageIndex,setLocalPageIndex:aa});let We=y.useCallback(k=>{k!==u.pageIndex&&(A$1?.(k),j===void 0&&te(N=>N.pageIndex===k?N:{...N,pageIndex:k}));},[u.pageIndex,A$1,j,te]),Qe=y.useCallback(k=>{u.pageIndex!==0&&A$1?.(0),k!==u.pageSize&&C?.(k),q===void 0&&te({pageIndex:0,pageSize:k});},[u.pageIndex,u.pageSize,A$1,C,q,te]),ye=uo({enabled:!!g?.enabled,hasMore:!!g?.hasMore,isLoadingMore:g?.isLoadingMore,onLoadMore:()=>g?.onLoadMore(),onError:k=>{K?.({error:k,source:"infiniteScroll"});}});return {effectivePageCount:he,footerTotalRowCount:ea,handleFooterPageIndexChange:We,handleFooterPageSizeChange:Qe,isPageCountKnown:_e,renderedRows:Y,reorderColumn:Ye,rowsToRender:Ge,sentinelRef:ye,table:be,virtualPaddingBottom:0,virtualPaddingTop:0,visibleLeafColumns:ge}}function ke({defaultValue:e,onChange:a,value:t}){let[n,i]=y.useState(e),s=t??n,l=y.useRef(s);y.useEffect(()=>{l.current=s;},[s]);let b=y.useCallback(u=>{let D=typeof u=="function"?u(l.current):u;l.current=D,a?.(D),t===void 0&&i(D);},[a,t]);return [s,b]}var Vr="data-table-pro:column-prefs:",fo=1,go=["visibility","sizing","order","pinning","density"];function To(e){let a=Ft(e);if(!a)return {};let t=Nt(a);if(!t)return {};let n=Lt(a.key),i;try{i=t.getItem(n);}catch(u){return a.onError?.({error:u,operation:"read"}),{}}if(!i)return {};let s;try{s=(a.deserialize??JSON.parse)(i);}catch(u){return a.onError?.({error:u,operation:"deserialize"}),{}}let l=a.version??fo,b;if(Ir(s))if(s.version===l)b=s.state;else if(a.migrate)try{b=a.migrate({version:s.version,state:s.state},l);}catch(u){return a.onError?.({error:u,operation:"migrate"}),{}}else return {};else b=s;return wo(zr(b),a.slices)}function Co(e){let a=Ft(e);if(!a)return false;let t=Nt(a);if(!t)return false;try{return t.removeItem(Lt(a.key)),!0}catch(n){return a.onError?.({error:n,operation:"remove"}),false}}function Do({key:e,persistence:a,prefs:t}){let n=a??Ft(e),i=n?Nt(n):void 0,s=n?Lt(n.key):void 0,l=n?.version??fo,b=Math.max(0,n?.debounceMs??100),u=wo(t,n?.slices),D=y.useMemo(()=>{if(!n)return {value:void 0};try{let E={version:l,state:u};return {value:(n.serialize??JSON.stringify)(E)}}catch(E){return {error:E,value:void 0}}},[n,u,l]),v=y.useEffectEvent((E,R)=>{n?.onError?.({error:E,operation:R});});y.useEffect(()=>{D.error!==void 0&&v(D.error,"serialize");},[D.error]),y.useEffect(()=>{if(!i||!s||D.value===void 0)return;let E=()=>{try{if(i.getItem(s)===D.value)return;i.setItem(s,D.value);}catch(S){v(S,"write");}};if(b===0){E();return}let R=globalThis.setTimeout(E,b);return ()=>{globalThis.clearTimeout(R);}},[b,D.value,i,s]);}function Ft(e){if(e)return typeof e=="string"?{key:e}:e}function Nt(e){if(e.storage)return e.storage;if(!(typeof window>"u"))try{return window.localStorage}catch(a){e.onError?.({error:a,operation:"read"});return}}function Lt(e){return `${Vr}${e}`}function Ir(e){return La(e)&&Object.prototype.hasOwnProperty.call(e,"version")&&Object.prototype.hasOwnProperty.call(e,"state")}function wo(e,a){let t=new Set(a??go),n={};for(let i of go)t.has(i)&&e[i]!==void 0&&Object.assign(n,{[i]:e[i]});return n}function zr(e){if(!La(e))return {};let a={},t=Fr(e.visibility);t&&(a.visibility=t);let n=Nr(e.sizing);n&&(a.sizing=n);let i=zt(e.order);if(i&&(a.order=i),La(e.pinning)){let s=zt(e.pinning.left)??[],l=zt(e.pinning.right)??[];a.pinning={left:s,right:l};}return Lr(e.density)&&(a.density=e.density),a}function Fr(e){if(La(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="boolean"))}function Nr(e){if(La(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="number"&&Number.isFinite(a[1])&&a[1]>=0))}function zt(e){if(Array.isArray(e))return e.filter(a=>typeof a=="string")}function Lr(e){return e==="compact"||e==="comfortable"||e==="spacious"}function La(e){return !!e&&typeof e=="object"&&!Array.isArray(e)}var Or=Object.values(b).slice().sort((e,a)=>e-a);function ho(e){let a=y.useRef(0),[t,n]=y.useState(0);return y.useEffect(()=>{let i=e.current;if(!i)return;let s=(b=i.clientWidth)=>{let u=_r(b);u!==a.current&&(a.current=u,n(u));};if(s(),typeof ResizeObserver>"u")return;let l=new ResizeObserver(b=>{let u=b[0];s(u?Hr(u):void 0);});return l.observe(i),()=>{l.disconnect();}},[e]),t}function _r(e){if(e<=0)return 0;let a=1;for(let t of Or){if(es??(i?{key:i}:void 0),[i,s]),pe=y.useMemo(()=>To(Ae),[Ae]),[Ve,De]=y.useState({pageIndex:M?.pagination?.pageIndex??0,pageSize:M?.pagination?.pageSize??U[0]??20}),[F$1,we]=ke({value:se,onChange:A$1,defaultValue:()=>M?.sorting??[]}),[Se,be]=ke({value:V,onChange:B,defaultValue:()=>M?.rowSelection??{}}),[ge,Ye]=ke({value:l,onChange:h,defaultValue:()=>M?.columnVisibility??pe.visibility??{}}),[Y,Oe]=ke({value:e,onChange:c,defaultValue:()=>M?.columnFilters??[]}),[je,Ze]=ke({value:R,onChange:$,defaultValue:()=>M?.expanded??{}}),[Ke,Ge]=ke({value:a,onChange:w$1,defaultValue:()=>M?.columnOrder??pe.order??[]}),[Ie,ze]=ke({value:t,onChange:f,defaultValue:()=>M?.columnPinning??pe.pinning??F(b)}),[ve,_e]=ke({value:n,onChange:r,defaultValue:()=>M?.columnSizing??pe.sizing??{}}),[ea,he]=ke({value:Ce,onChange:Q,defaultValue:()=>M?.viewMode??"table"}),[He,aa]=ke({value:te,onChange:K,defaultValue:()=>M?.showHiddenRows??false}),[We,Qe]=ke({value:D,onChange:g,defaultValue:()=>M?.density??pe.density??"comfortable"}),ye=Me??M?.globalFilter??"",k=Le??X.searchPlaceholder,N=me??250,[ne,o]=y.useState(ye),P=ho(J),W=!!C,Pa=y.useRef(ye),ut=y.useEffectEvent(z=>{Pa.current=z,C?.(z);});y.useEffect(()=>{Pa.current=ye,o(ye);},[ye]),y.useEffect(()=>{if(!W||ne===ye||ne===Pa.current)return;let z=window.setTimeout(()=>{ut(ne);},N);return ()=>{window.clearTimeout(z);}},[W,ne,N,ye]);let pa=y.useMemo(()=>({pageIndex:j$1??Ve.pageIndex,pageSize:q??Ve.pageSize}),[Ve.pageIndex,Ve.pageSize,j$1,q]),sa=Math.max(1,T??Math.min(5,pa.pageSize)),oe=E?ne:"",ee=y.useCallback(z=>{he(z);},[he]),le=y.useCallback(z=>{aa(z);},[aa]),re=y.useCallback(z=>{Qe(z);},[Qe]),_a=y.useCallback(()=>{I?.(0),j$1===void 0&&De(z=>z.pageIndex===0?z:{...z,pageIndex:0});},[I,j$1]),xa=y.useRef({columnFilters:Y,globalFilterValue:oe});y.useEffect(()=>{let z=xa.current,Fe=z.columnFilters!==Y,ga=z.globalFilterValue!==oe;xa.current={columnFilters:Y,globalFilterValue:oe},!m&&(!Fe&&!ga||_a());},[Y,oe,m,_a]),Do({persistence:Ae,prefs:{visibility:l?void 0:ge,sizing:n===void 0?ve:void 0,order:a?void 0:Ke,pinning:t?void 0:Ie,density:D?void 0:We}});let Ha=y.useMemo(()=>A(b).reduce((z,{column:Fe,index:ga})=>{let ja=G(Fe,ga);return j(Fe.meta?.hideOn,P)&&(z[ja]=false),z},{}),[b,P]),ka=y.useMemo(()=>({...ge,...Ha}),[ge,Ha]),ta=y.useMemo(()=>u.filter(z=>c$1(z,x$1,He)),[He,u,x$1]),Ba=H&&ta.length===0,pt=y.useMemo(()=>v(sa),[sa]),$a=Ba?pt:ta,bt=y.useCallback((z,Fe)=>w(z)?x(Fe):S(z,Fe),[S]),ba=v$1||(Z?.length??0)>0||Object.values(Se).some(Boolean),ma=y.useMemo(()=>ba?new Map(ta.map((z,Fe)=>[S(z,Fe),z])):new Map,[S,ba,ta]),Ua=y.useMemo(()=>ba?Object.entries(Se).filter(([,z])=>z).map(([z])=>ma.get(z)).filter(z=>!!z):[],[Se,ma,ba]);return {containerWidth:P,currentColumnFilters:Y,currentColumnOrder:Ke,currentColumnPinning:Ie,currentColumnSizing:ve,currentColumnVisibility:ge,currentDensity:We,currentExpanded:je,currentPagination:pa,currentRowSelection:Se,currentShowHiddenRows:He,currentSorting:F$1,currentViewMode:ea,effectiveColumnVisibility:ka,globalFilterValue:oe,handleDensityChange:re,handleShowHiddenRowsChange:le,handleViewModeChange:ee,localSearchValue:ne,resolvedLoadingRowCount:sa,resolvedToolbarQueryPlaceholder:k,selectedRows:Ua,setCurrentColumnFilters:Oe,setCurrentColumnOrder:Ge,setCurrentColumnPinning:ze,setCurrentColumnVisibility:Ye,setCurrentExpanded:Ze,setCurrentRowSelection:be,setCurrentSorting:we,setLocalColumnSizing:_e,setLocalPagination:De,setLocalSearchValue:o,shouldRenderInitialLoading:Ba,tableData:$a,tableGetRowId:bt,toolbarFilteredData:ta,visibleData:ta}}var $r={cellStyle:void 0,colStyle:void 0,fixedSide:void 0,headerStyle:void 0,isActionsColumn:false,isExpansionColumn:false,isSelectionColumn:false,isSpacerColumn:false,isUtilityColumn:false,pinnedClassName:void 0,utilityClassName:void 0};function So({columns:e,columnSizing:a,editableRows:t,enableRowSelection:n,hasRowActions:i,hasRowExpansion:s,layoutMode:l,uiClassNames:b,visibleLeafColumns:u$1}){let D=y.useMemo(()=>{let T=new Set;for(let{column:m,index:c}of A(e))Object.prototype.hasOwnProperty.call(m,"size")&&T.add(G(m,c));return n&&T.add("__select__"),s&&T.add("__expand__"),(i||t)&&T.add("__actions__"),T},[e,t,n,i,s]),v=y.useMemo(()=>{let T=new Map;for(let{column:m,index:c}of A(e)){let w=y$1(m);w!==void 0&&T.set(G(m,c),w);}return T},[e]),E=y.useMemo(()=>{let T=new Map,m=new Map,c=0;for(let f of u$1)J(f)==="left"&&(T.set(f.id,c),c+=Ro(f));let w=0;for(let f of [...u$1].reverse())J(f)==="right"&&(m.set(f.id,w),w+=Ro(f));return {left:T,right:m}},[u$1]),R=y.useMemo(()=>{if(l!=="fill")return;let T=u$1.filter(c=>!L(c.id));return T.length&&T.every(c=>D.has(c.id)||Object.prototype.hasOwnProperty.call(a,c.id))?T[T.length-1]?.id:void 0},[a,D,l,u$1]),S=y.useMemo(()=>{let T=new Set([...D,...Object.keys(a)]);return R&&T.delete(R),T},[a,D,R]),x=y.useMemo(()=>{let T=new Map;for(let m of u$1){let c=m.id==="__select__",w=m.id==="__expand__",f=m.id==="__actions__",r=c||w||f,h=m.id==="__spacer__",g=v.get(m.id),$=m.id===R,I=g??($?m.getSize():void 0),B=!h&&(l==="fit"||r||S.has(m.id)),K$1=B||I!==void 0?{width:B?r?u:m.getSize():void 0,minWidth:r?u:B?m.getSize():I,maxWidth:B?r?u:m.getSize():void 0}:void 0,A=J(m),C=A?{left:A==="left"?E.left.get(m.id):void 0,right:A==="right"?E.right.get(m.id):void 0}:void 0,Q=K$1||C?{...K$1,...C}:void 0;T.set(m.id,{cellStyle:Q,colStyle:K$1,fixedSide:A,headerStyle:Q,isActionsColumn:f,isExpansionColumn:w,isSelectionColumn:c,isSpacerColumn:h,isUtilityColumn:r,pinnedClassName:A?K(A,b,{isUtilityColumn:r}):void 0,utilityClassName:r?"w-[50px] max-w-[50px] min-w-[50px] px-0":void 0});}return T},[R,S,l,v,E,b,u$1]),M=y.useMemo(()=>u$1.reduce((T,m)=>{let c=x.get(m.id),w=v.get(m.id),f=m.id===R;return c?.isUtilityColumn?T+u:S.has(m.id)?T+m.getSize():T+(w??(f?m.getSize():0))},0),[x,R,S,v,u$1]),H=y.useCallback(T=>x.get(T)??$r,[x]);return {columnLayouts:x,explicitlySizedColumnIds:D,fillMinWidth:M,getColumnLayout:H}}function Ro(e){return L(e.id)?u:e.getSize()}function Po(e,a$1){let t=e.classNames??{},{Card:n,CardContent:i,CardHeader:s,Checkbox:l,Skeleton:b}=e;return function({rows:D,cardRenderer:v,cardSizing:E="fixed",cardGridClassName:R,cardClassName:S,rowActions:x,editableRows:M$1,renderExpandedRow:H,hasCardTitle:T,rowSelection:m,onRowSelectionChange:c,enableRowSelection:w,editingRowId:f,onEditingRowIdChange:r,getRowClassName:h,onRowClick:g,getRowDraggable:$,onRowDragStart:I,onRowDragEnd:B,isLoading:K=false,loadingRowCount:A=5,labels:C}){let Q=E??"fixed",j=R?a("grid",R):Ur(Q),q=a("min-h-0 w-full gap-4 p-1",t.cardGrid,j),X=V=>a("relative min-w-0 max-w-full gap-0 overflow-hidden bg-transparent p-0",jr(Q),t.cardItem,S,V);return K?jsx("div",{role:"list","data-dtp-slot":"data-table-card-grid",className:q,children:Array.from({length:Math.max(1,A)},(V,U)=>jsxs(n,{role:"listitem","aria-hidden":"true","data-dtp-slot":"data-table-card-item",className:X("min-h-52"),children:[T?jsxs(s,{className:"px-4 pt-4 pb-3",children:[jsx(b,{className:"h-5 w-40 max-w-[70%]"}),jsx(b,{className:"h-4 w-24 max-w-[40%]"})]}):null,jsxs(i,{className:a("space-y-3 pb-4",T?"":"pt-4"),children:[jsx(b,{className:"h-4 w-full"}),jsx(b,{className:"h-4 w-[82%]"}),jsx(b,{className:"h-4 w-[68%]"}),jsx(b,{className:"h-24 w-full rounded-xl"})]})]},`loading-card-${U}`))}):jsx("div",{role:"list","data-dtp-slot":"data-table-card-grid",className:q,children:D.map(V=>{let U=V.id,Z=V.original,te=!!m[U],se=f===U,me=x.length>0||!!M$1,Le=w||me||T,Me=w||me,Ce=()=>{g&&g({row:Z,rowId:U});};return jsxs(n,{role:"listitem","data-row-id":U,draggable:$?.(Z)??false,"data-dtp-slot":"data-table-card-item","data-state":te?"selected":void 0,className:X(a([h?.(Z,{row:Z,rowId:U,rowIndex:V.index,isEditing:se,isExpanded:V.getIsExpanded(),isLoading:false,isSelected:te})].filter(Boolean).join(" "),"transition transition-colors hover:scale-101 data-[state=selected]:scale-101",t.card,te?t.cardSelected:t.cardUnselected)),onDragStart:J=>{I?.({row:Z,rowId:U,event:J});},onDragEnd:J=>{B?.({row:Z,rowId:U,event:J});},children:[Le?jsx("div",{"aria-hidden":"true",className:a("pointer-events-none absolute inset-x-0 top-0 z-10 h-24 bg-linear-to-b opacity-0 transition-opacity group-hover/card:opacity-100",t.cardOverlay??"from-transparent via-transparent to-transparent")}):null,jsxs("div",{"data-dtp-slot":"data-table-card-renderer",role:g?"button":void 0,tabIndex:g?0:void 0,className:a("flex min-h-0 max-w-full min-w-0 overflow-hidden rounded-[inherit] [&>*]:min-w-0",Kr(Q),g&&"cursor-pointer focus-visible:outline-none"),onClick:J=>{M(J.target,J.currentTarget)||Ce();},onKeyDown:J=>{M(J.target,J.currentTarget)||(J.key==="Enter"||J.key===" ")&&(J.preventDefault(),Ce());},children:[v({row:Z,rowId:U,isSelected:te,onSelectedChange:J=>{c(vo(m,U,J));},actions:x,isEditing:se,startEditing:()=>{r(U);},cancelEditing:()=>{r(null);}}),se||!H||!V.getIsExpanded()?null:H({row:Z,rowId:U,tableRow:V})]}),Me?jsxs(s,{className:"absolute inset-x-0 top-0 z-20 flex flex-row items-center gap-3 space-y-0 px-4 pt-4 pb-8",children:[w?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(l,{checked:te,"aria-label":(C.selectCardRow??ce.selectCardRow)(U),onCheckedChange:J=>{c(vo(m,U,J===true));}})}):null,jsx("div",{className:"pointer-events-none min-w-0 flex-1"}),me?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(a$1,{row:Z,rowActions:x,editableRows:M$1,isEditing:se,onStartEditing:()=>{r(U);},onCancelEditing:()=>{r(null);},labels:C})}):null]}):null]},U)})})}}function Ur(e){switch(e){case "content":return "flex flex-wrap items-start justify-start";case "fluid":return "grid grid-cols-[repeat(auto-fit,minmax(min(18rem,100%),1fr))]";default:return "grid grid-cols-[repeat(auto-fill,minmax(min(18rem,100%),18rem))] justify-start"}}function jr(e){switch(e){case "content":return "w-fit";case "fluid":return "w-full";default:return}}function Kr(e){switch(e){case "content":return "w-fit";case "fluid":return "w-full flex-1 [&>*]:w-full";default:return "flex-1"}}function vo(e,a,t){if(t)return {...e,[a]:true};if(!e[a])return e;let n={...e};return delete n[a],n}function ko(e){let a=e.classNames??{},{Empty:t,EmptyContent:n,EmptyDescription:i,EmptyHeader:s,EmptyMedia:l,EmptyTitle:b}=e;return function({title:D="No rows found",description:v="Adjust your filters or create a new record to populate this table."}){return jsxs(t,{className:`min-h-60 rounded-2xl ${a.emptyState??"border bg-transparent"}`,children:[jsxs(s,{children:[jsx(l,{variant:"icon",children:jsx(o,{})}),jsx(b,{children:D}),jsx(i,{children:v})]}),jsx(n,{})]})}}function Eo(e){let a=e.classNames??{},{Pagination:t,PaginationContent:n,PaginationEllipsis:i$1,PaginationFirst:s,PaginationItem:l,PaginationLast:b,PaginationLink:u,PaginationNext:D,PaginationPrevious:v,Select:E,SelectContent:R,SelectGroup:S,SelectItem:x,SelectTrigger:M,SelectValue:H,Tooltip:T,TooltipContent:m,TooltipTrigger:c}=e;function w({pageIndex:r,pageCount:h,pageCountKnown:g,pageSize:$,totalRowCount:I,rowsPerPageOptions:B,onPageIndexChange:K,onPageSizeChange:A,labels:C}){let Q=g?Gr(r,Math.max(1,h)):[],j=r>0,q=r+1{A(Number(V));},children:[jsx(M,{"aria-label":C.recordsPerPage,className:`w-22 ${a.paginationSelectTrigger??""}`,children:jsx(H,{})}),jsx(R,{children:jsx(S,{children:B.map(V=>jsx(x,{value:String(V),children:V},V))})})]})]}),I!==void 0?jsx("div",{className:"flex shrink-0 items-center justify-center",children:jsxs("div",{className:`inline-flex items-center gap-2 px-2.5 py-1.5 text-sm ${a.paginationTotal??""}`,"aria-label":C.totalRecords(I),children:[jsx(i,{className:"size-4"}),jsx("span",{className:"@min-[768px]/data-table:hidden",children:I}),jsx("span",{className:"hidden @min-[768px]/data-table:inline",children:C.totalRecords(I)})]})}):null,jsxs("div",{className:"flex flex-1 items-center justify-end gap-4",children:[jsx("div",{className:`hidden text-sm @min-[768px]/data-table:inline ${a.mutedText??"opacity-70"}`,children:g?C.pageStatus(r,Math.max(1,h)):(C.pageStatusUnknown??ce.pageStatusUnknown)(r)}),jsx(t,{"aria-label":C.pagination??ce.pagination,className:"mx-0 w-auto justify-end",children:jsxs(n,{children:[jsx(l,{className:"@min-[768px]/data-table:hidden",children:jsxs(T,{children:[jsx(c,{asChild:true,children:jsx(s,{"aria-label":C.firstPage,href:"#",size:"icon-sm",showText:false,disabled:!j,onClick:V=>{V.preventDefault(),j&&K(0);},text:C.firstPage})}),jsx(m,{children:C.firstPage})]})}),jsx(l,{children:jsxs(T,{children:[jsx(c,{asChild:true,children:jsx(v,{"aria-label":C.previousPage,href:"#",size:"icon-sm",showText:false,disabled:!j,onClick:V=>{V.preventDefault(),j&&K(r-1);},text:C.previousPage})}),jsx(m,{children:C.previousPage})]})}),Q.map((V,U)=>jsx(l,{className:"hidden @min-[768px]/data-table:block",children:V==="ellipsis"?jsx(i$1,{text:C.morePages??ce.morePages}):jsx(u,{href:"#",isActive:V===r+1,size:"icon-sm",onClick:Z=>{Z.preventDefault(),K(V-1);},children:V})},`${V}-${U}`)),jsx(l,{children:jsxs(T,{children:[jsx(c,{asChild:true,children:jsx(D,{"aria-label":C.nextPage,href:"#",size:"icon-sm",showText:false,disabled:!q,onClick:V=>{V.preventDefault(),q&&K(r+1);},text:C.nextPage})}),jsx(m,{children:C.nextPage})]})}),g?jsx(l,{className:"@min-[768px]/data-table:hidden",children:jsxs(T,{children:[jsx(c,{asChild:true,children:jsx(b,{"aria-label":C.lastPage,href:"#",size:"icon-sm",showText:false,text:C.lastPage,disabled:!q,onClick:V=>{V.preventDefault(),q&&K(X);}})}),jsx(m,{children:C.lastPage})]})}):null]})})]})]})}function f(r){return jsx("div",{className:`rounded-md border px-2 py-1 ${a.footer??""}`,children:jsx(w,{...r})})}return {DataTableFooter:f,DataTablePagination:w}}function Gr(e,a){let t=e+1,n=new Set([1,a]);for(let l=Math.max(1,t-2);l<=Math.min(a,t+2);l+=1)n.add(l);let i=Array.from(n).sort((l,b)=>l-b),s=[];for(let l=0;l1&&s.push("ellipsis"),s.push(b);}return s}function Ao(e$1){let{Button:a,DropdownMenu:t$1,DropdownMenuContent:n,DropdownMenuGroup:i,DropdownMenuItem:s,DropdownMenuSeparator:l$1,DropdownMenuTrigger:b,Tooltip:u,TooltipContent:D,TooltipTrigger:v}=e$1;return function({row:R,rowActions:S,editableRows:x,isEditing:M,onStartEditing:H,onCancelEditing:T,labels:m}){let c=S.filter(r=>e(r,R)),w=y.useCallback(r=>{r.stopPropagation();},[]);if(M)return jsxs(u,{children:[jsx(v,{asChild:true,children:jsxs(a,{type:"button",variant:"ghost",size:"icon-sm",onPointerDown:w,onClick:T,children:[jsx(t,{}),jsx("span",{className:"sr-only",children:m.cancelEdit})]})}),jsx(D,{children:m.cancelEdit})]});let f$1=f(x,R);return !c.length&&!f$1?null:jsxs(t$1,{children:[jsxs(u,{children:[jsx(v,{asChild:true,children:jsx(b,{asChild:true,children:jsxs(a,{type:"button",variant:"ghost",size:"icon-sm",onPointerDown:w,onClick:w,children:[jsx(j$1,{}),jsx("span",{className:"sr-only",children:m.rowActions})]})})}),jsx(D,{children:m.rowActions})]}),jsxs(n,{align:"end",className:"w-52",children:[f$1?jsx(i,{children:jsxs(s,{onClick:r=>{r.stopPropagation(),H();},children:[jsx(l,{"data-icon":"inline-start"}),m.editRow]})}):null,f$1&&c.length?jsx(l$1,{}):null,c.length?jsx(i,{children:c.map(r=>{let h=r.icon;return jsxs(s,{disabled:r.disabled?.(R),variant:r.variant==="destructive"?"destructive":void 0,onClick:g=>{g.stopPropagation(),r.onClick(R);},children:[h?jsx(h,{"data-icon":"inline-start"}):null,d(r.label,R)]},r.key)})}):null]})]})}}function Vo(e){let a=e.classNames??{},{Button:t$1,ButtonGroup:n,DropdownMenu:i,DropdownMenuCheckboxItem:s,DropdownMenuContent:l,DropdownMenuGroup:b,DropdownMenuItem:u,DropdownMenuLabel:D,DropdownMenuSeparator:v,DropdownMenuTrigger:E,InputGroup:R,InputGroupAddon:S,InputGroupInput:x,Tooltip:M,TooltipContent:H,TooltipTrigger:T}=e;return function({title:w,titleId:f,description:r$1,descriptionId:h,toolbarQueryValue:g,toolbarQueryPlaceholder:$,onToolbarQueryValueChange:I,customToolbar:B,compactToolbar:K,viewMode:A,onViewModeChange:C,enableViewToggle:Q,toolbarActions:j,selectionActions:q$1,selectedRows:X,showHiddenRows:V,hiddenRowsLabel:U,onShowHiddenRowsChange:Z,allRows:te,columnVisibilityOptions:se,onColumnVisibilityChange:me,enableColumnPinning:Le,onColumnPinningChange:Me,columnFilters:Ce,onColumnFilterChange:J,onClearColumnFilters:Ae,density:pe,onDensityChange:Ve,enableDensityToggle:De,labels:F,toolbarVisibility:we,openFileDialog:Se}){let be=y.useRef(null),[ge,Ye]=y.useState(false),Y=a.toolbarCompactIconButton??"",Oe=j.filter(o=>(o.placement??"primary")==="primary"),je=j.filter(o=>o.placement==="trailing"),Ze=we?.title??true,Ke=we?.search??true,Ge=we?.actions??true,Ie=we?.trailingActions??true,ze=we?.options??true,ve=we?.viewToggle??true,_e=we?.customToolbar??true,ea=Ze&&!!(w||r$1),he=Ke,He=Ge&&Oe.length>0,aa=X.length>0&&q$1.length>0,We=ze&&(se.some(o=>o.canHide)||!!(Z&&U)||Le||De),Qe=ve&&Q&&!!C,ye=Ie&&je.length>0,k=_e&&!!B,N=_e&&!!(K??B),ne=F.selectedRows(X.length);return y.useEffect(()=>{ge&&be.current?.focus();},[ge]),!ea&&!he&&!He&&!aa&&!We&&!Qe&&!ye&&!k&&!N?null:jsxs("div",{className:"flex flex-col gap-4 pb-0",children:[Ze&&(w||r$1)?jsxs("div",{className:"flex flex-col gap-1",children:[w?jsx("h2",{id:f,className:"text-lg font-semibold tracking-tight",children:w}):null,r$1?jsx("p",{id:h,className:`max-w-3xl text-sm ${a.mutedText??"opacity-70"}`,children:r$1}):null]}):null,jsxs("div",{className:"flex flex-col gap-3",children:[jsxs("div",{"data-dtp-slot":"data-table-toolbar-controls",className:"flex items-center gap-2 overflow-x-auto px-1 @min-[768px]/data-table:gap-3 @min-[768px]/data-table:overflow-visible",children:[Ke?jsxs(Fragment,{children:[jsx("div",{className:"hidden min-w-0 grow max-w-md @min-[768px]/data-table:block",children:jsxs(R,{className:"min-w-0",children:[jsx(x,{value:g,onChange:o=>{I(o.target.value);},placeholder:$}),jsx(S,{align:"inline-start","aria-hidden":"true",children:jsx(r,{})}),g?jsx(S,{align:"inline-end",children:jsx("button",{type:"button",className:`inline-flex size-5 items-center justify-center rounded-md transition-colors focus-visible:outline-none ${a.toolbarIconButton??"opacity-70 hover:opacity-100"}`,onClick:()=>{I("");},"aria-label":F.clearSearch,title:F.clearSearch,children:jsx(t,{})})}):null]})}),jsxs(M,{children:[jsx(T,{asChild:true,children:jsxs(t$1,{type:"button",variant:ge||g?"secondary":"outline",size:"icon-sm","aria-label":F.searchTable,"aria-pressed":ge,className:`shrink-0 @min-[768px]/data-table:hidden ${Y} ${a.toolbarInputButton??""}`,onClick:()=>{Ye(o=>!o);},children:[jsx(r,{}),jsx("span",{className:"sr-only",children:F.searchTable})]})}),jsx(H,{children:F.searchTable})]})]}):null,Ge?jsx("div",{className:"flex shrink-0 items-center gap-2",children:Oe.map(o=>{let P=!o.iconOnly&&!!o.icon,W=jsxs(t$1,{type:"button",className:P?`size-7 shrink-0 px-0 @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit @min-[768px]/data-table:px-2.5 ${Y}`:o.iconOnly?`size-7 shrink-0 @min-[768px]/data-table:size-8 ${Y}`:"size-7 shrink-0 @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit",variant:o.variant??"outline",size:o.iconOnly?"icon":"default",onClick:()=>{o.onClick({rows:te,openFileDialog:Se});},disabled:o.disabled,"aria-label":o.label,title:o.iconOnly?void 0:o.label,children:[o.icon?jsx(o.icon,{}):null,o.iconOnly?jsx("span",{className:"sr-only",children:o.label}):P?jsx("span",{className:"hidden @min-[768px]/data-table:inline",children:o.label}):jsx("span",{children:o.label})]},o.key);return o.iconOnly?jsxs(M,{children:[jsx(T,{asChild:true,children:W}),jsx(H,{children:o.label})]},o.key):W})}):null,N?jsx("div",{"data-dtp-slot":"data-table-toolbar-compact-custom",className:"flex shrink-0 items-center gap-2 @min-[1024px]/data-table:hidden",children:K??B}):null,jsx("div",{className:"grow","aria-hidden":"true"}),jsxs("div",{"data-dtp-slot":"data-table-toolbar-end-controls",className:"flex shrink-0 items-center gap-2",children:[X.length?jsx("div",{className:`hidden text-sm @min-[768px]/data-table:block ${a.mutedText??"opacity-70"}`,children:ne}):null,X.length?q$1.map(o=>{let P=o.icon,W=typeof o.disabled=="function"?o.disabled(X):o.disabled;return jsxs(M,{children:[jsx(T,{asChild:true,children:jsxs(t$1,{type:"button",variant:o.variant??"secondary",size:"icon-sm",className:Y,disabled:W,onClick:()=>{o.onClick({rows:X});},"aria-label":o.label,children:[P?jsx(P,{}):null,jsx("span",{className:"sr-only",children:o.label})]})}),jsx(H,{children:o.label})]},o.key)}):null,We?jsxs(i,{children:[jsx(E,{asChild:true,children:jsxs(t$1,{type:"button",variant:"outline",size:"icon-sm","aria-label":F.tableOptions,className:`${Y} ${a.toolbarInputButton??""}`,title:F.tableOptions,children:[jsx(a$2,{}),jsx("span",{className:"sr-only",children:F.tableOptions})]})}),jsxs(l,{align:"end",className:"w-56",children:[jsx(D,{children:F.tableOptions}),jsx(b,{children:Z&&U?jsx(s,{checked:V,onCheckedChange:o=>{Z(o===true);},children:F.showHiddenRows(U)}):null}),De?jsxs(Fragment,{children:[jsx(v,{}),jsx(D,{children:F.density}),jsx(b,{children:[["compact",F.compactDensity],["comfortable",F.comfortableDensity],["spacious",F.spaciousDensity]].map(([o,P])=>jsx(s,{checked:pe===o,onCheckedChange:()=>{Ve(o);},children:P},o))})]}):null,se.some(o=>o.canHide)?jsxs(Fragment,{children:[jsx(v,{}),jsx(D,{children:F.columns}),jsx(b,{children:se.filter(o=>o.canHide).map(o=>jsx(s,{checked:o.visible,onCheckedChange:P=>{me?.(o.id,P===true);},children:o.label},o.id))})]}):null,Le?jsxs(Fragment,{children:[jsx(v,{}),jsxs(D,{children:[F.pinLeft," / ",F.pinRight]}),jsx(b,{children:se.map(o=>jsxs(u,{onSelect:P=>{P.preventDefault();},children:[jsx("span",{className:"min-w-0 flex-1 truncate",children:o.label}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${F.pinLeft}: ${o.label}`,onClick:P=>{P.stopPropagation(),Me(o.id,"left");},children:"L"}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${F.pinRight}: ${o.label}`,onClick:P=>{P.stopPropagation(),Me(o.id,"right");},children:"R"}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${F.unpin}: ${o.label}`,onClick:P=>{P.stopPropagation(),Me(o.id,false);},children:"-"})]},`pin-${o.id}`))})]}):null]})]}):null,ve&&Q&&C?jsxs(n,{children:[jsxs(M,{children:[jsx(T,{asChild:true,children:jsxs(t$1,{type:"button",variant:A==="table"?"default":"outline","aria-pressed":A==="table",className:A==="table"?Y:`${Y} ${a.toolbarInputButton??""}`,size:"icon-sm",onClick:()=>{C("table");},children:[jsx(q,{}),jsx("span",{className:"sr-only",children:F.switchToTableView??ce.switchToTableView})]})}),jsx(H,{children:F.tableView??ce.tableView})]}),jsxs(M,{children:[jsx(T,{asChild:true,children:jsxs(t$1,{type:"button",variant:A==="card"?"default":"outline","aria-pressed":A==="card",className:A==="table"?`${Y} ${a.toolbarInputButton??""}`:Y,size:"icon-sm",onClick:()=>{C("card");},children:[jsx(p,{}),jsx("span",{className:"sr-only",children:F.switchToCardView??ce.switchToCardView})]})}),jsx(H,{children:F.cardView??ce.cardView})]})]}):null,Ie?je.map(o=>{let P=!o.iconOnly&&!!o.icon,W=jsxs(t$1,{type:"button",variant:o.variant??"outline",size:o.iconOnly?"icon-sm":"default",onClick:()=>{o.onClick({rows:te,openFileDialog:Se});},disabled:o.disabled,"aria-label":o.label,title:o.iconOnly?void 0:o.label,className:`size-7 shrink-0 ${o.iconOnly?"":`${P?"px-0 @min-[768px]/data-table:px-2.5":""} @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit`} ${o.iconOnly||P?Y:""} ${a.toolbarInputButton??""}`,children:[o.icon?jsx(o.icon,{"data-icon":o.iconOnly?void 0:"inline-start"}):null,o.iconOnly?jsx("span",{className:"sr-only",children:o.label}):P?jsx("span",{className:"hidden @min-[768px]/data-table:inline",children:o.label}):jsx("span",{children:o.label})]},o.key);return o.iconOnly?jsxs(M,{children:[jsx(T,{asChild:true,children:W}),jsx(H,{children:o.label})]},o.key):W}):null]})]}),Ke&&ge?jsx("div",{"data-dtp-slot":"data-table-toolbar-compact-search",className:"min-w-0 @min-[768px]/data-table:hidden",children:jsxs(R,{children:[jsx(x,{ref:be,value:g,onChange:o=>{I(o.target.value);},placeholder:$}),jsx(S,{align:"inline-start","aria-hidden":"true",children:jsx(r,{})}),g?jsx(S,{align:"inline-end",children:jsx("button",{type:"button",className:`inline-flex size-5 items-center justify-center rounded-md transition-colors focus-visible:outline-none ${a.toolbarIconButton??"opacity-70 hover:opacity-100"}`,onClick:()=>{I("");},"aria-label":F.clearSearch,title:F.clearSearch,children:jsx(t,{})})}):null]})}):null,Ce.length?jsxs("div",{"data-dtp-slot":"data-table-toolbar-filters",className:"flex min-w-0 flex-wrap items-center gap-2",children:[Ce.map(o=>jsx(m,{filter:o,labels:F,onColumnFilterChange:J},o.id)),Ce.some(o=>Wr(o.value))?jsx(t$1,{type:"button",variant:"ghost",size:"sm",onClick:Ae,children:F.clearFilters}):null]}):null]}),_e&&B?jsx("div",{"data-dtp-slot":"data-table-toolbar-desktop-custom",className:"hidden flex-row items-center gap-3 @min-[1024px]/data-table:flex",children:B}):null]})};function m({filter:c,labels:w,onColumnFilterChange:f}){if(c.type==="text")return jsxs(R,{className:"min-w-48 max-w-64",children:[jsx(x,{value:typeof c.value=="string"?c.value:"",onChange:g=>{f(c.id,g.target.value);},placeholder:c.placeholder??c.label,"aria-label":`${w.filters}: ${c.label}`}),jsx(S,{align:"inline-start","aria-hidden":"true",children:jsx(r,{})})]});let r$1=Array.isArray(c.value)?c.value.map(String):typeof c.value=="string"&&c.value?[c.value]:[],h=r$1.length===0?c.label:`${c.label}: ${r$1.length===1?c.options.find(g=>g.value===r$1[0])?.label??r$1[0]:r$1.length}`;return jsxs(i,{children:[jsx(E,{asChild:true,children:jsx(t$1,{type:"button",variant:"outline",size:"sm",children:h})}),jsxs(l,{align:"start",className:"w-56",children:[jsx(D,{children:c.label}),jsxs(b,{children:[c.type==="select"?jsx(u,{onClick:()=>{f(c.id,"");},children:w.allFilterOptions??ce.allFilterOptions}):null,c.options.map(g=>jsx(s,{checked:r$1.includes(g.value),onCheckedChange:$=>{if(c.type==="select"){f(c.id,$===true?g.value:"");return}let I=new Set(r$1);$===true?I.add(g.value):I.delete(g.value),f(c.id,Array.from(I));},children:g.label},g.value))]})]})]})}}function Wr(e){return Array.isArray(e)?e.length>0:e!=null&&e!==""}var Qr=y.lazy(async()=>({default:(await import('./data-table-virtual-table-panel-H3MFN25G.js')).DataTableVirtualTablePanel}));function Io(e){let a=typeof e.virtualization=="object"?e.virtualization:void 0;return e.virtualization===true||a?.enabled===true?jsx(y.Suspense,{fallback:jsx(S,{...e,rowsToRender:e.rowsToRender.slice(0,Math.max(1,Math.floor(a?.fallbackRowCount??20)))}),children:jsx(Qr,{...e})}):jsx(S,{...e})}var qr="data-table-pro:saved-views:";var Fo=["sorting","columnVisibility","columnFilters","columnOrder","columnPinning","columnSizing","density","viewMode","showHiddenRows","globalFilter"],zo=0;function va(e){let a=$t(e);if(!e||!a)return [];let t;try{t=a.getItem(Ut(e.key));}catch(l){return e.onError?.({error:l,operation:"read"}),[]}if(!t)return [];let n;try{n=(e.deserialize??JSON.parse)(t);}catch(l){return e.onError?.({error:l,operation:"deserialize"}),[]}if(!Ne(n)||!("version"in n)||!("views"in n))return [];let i=e.version??1,s=n.views;if(n.version!==i){if(!e.migrate)return [];try{s=e.migrate({version:n.version,views:n.views},i);}catch(l){return e.onError?.({error:l,operation:"migrate"}),[]}}return Array.isArray(s)?s.map(l=>Xr(l,e.slices)).filter(l=>!!l):[]}function No(e,a,t){let n=a.trim();if(!e||!n)return;let i=new Date().toISOString(),s={id:ol(),name:n,createdAt:i,updatedAt:i,state:Jr(t,e.slices)},l=[...va(e),s];return Ht(e,l,"create")?Bt(s):void 0}function Lo(e,a,t){let n=t.trim();if(!e||!n)return;let i,s=va(e).map(l=>l.id!==a?l:(i={...l,name:n,updatedAt:new Date().toISOString()},i));if(i)return Ht(e,s,"rename")?Bt(i):void 0}function Oo(e,a){if(!e)return false;let t=va(e),n=t.filter(i=>i.id!==a);return n.length!==t.length&&Ht(e,n,"delete")}function _o(e){let a=$t(e);if(!e||!a)return false;try{a.removeItem(Ut(e.key));}catch(t){return e.onError?.({error:t,operation:"remove"}),false}return e.onChange?.([],"clear"),true}function Ht(e,a,t){let n=$t(e);if(!n)return false;let i;try{let l={version:e.version??1,views:a};i=(e.serialize??JSON.stringify)(l);}catch(l){return e.onError?.({error:l,operation:"serialize"}),false}try{n.setItem(Ut(e.key),i);}catch(l){return e.onError?.({error:l,operation:"write"}),false}let s=a.map(Bt);return e.onChange?.(s,t),true}function Jr(e,a){let t=new Set(a??Fo),n={};for(let i of Object.keys(e))t.has(i)&&Object.assign(n,{[i]:Yr(i,e[i])});return n}function Xr(e,a){if(!(!Ne(e)||typeof e.id!="string"||!e.id||typeof e.name!="string"||!e.name.trim()||typeof e.createdAt!="string"||typeof e.updatedAt!="string"))return {id:e.id,name:e.name.trim(),createdAt:e.createdAt,updatedAt:e.updatedAt,state:Ho(e.state,a)}}function Ho(e,a){if(!Ne(e))return {};let t=new Set(a??Fo),n={},i=Zr(e.sorting);t.has("sorting")&&i&&(n.sorting=i);let s=el(e.pagination);t.has("pagination")&&s&&(n.pagination=s);let l=Ot(e.rowSelection);t.has("rowSelection")&&l&&(n.rowSelection=l);let b=Ot(e.columnVisibility);t.has("columnVisibility")&&b&&(n.columnVisibility=b);let u=al(e.columnFilters);t.has("columnFilters")&&u&&(n.columnFilters=u);let D=e.expanded===true?true:Ot(e.expanded);t.has("expanded")&&D!==void 0&&(n.expanded=D);let v=_t(e.columnOrder);t.has("columnOrder")&&v&&(n.columnOrder=v);let E=tl(e.columnPinning);t.has("columnPinning")&&E&&(n.columnPinning=E);let R=nl(e.columnSizing);return t.has("columnSizing")&&R&&(n.columnSizing=R),t.has("density")&&(e.density==="compact"||e.density==="comfortable"||e.density==="spacious")&&(n.density=e.density),t.has("viewMode")&&(e.viewMode==="table"||e.viewMode==="card")&&(n.viewMode=e.viewMode),t.has("showHiddenRows")&&typeof e.showHiddenRows=="boolean"&&(n.showHiddenRows=e.showHiddenRows),t.has("globalFilter")&&typeof e.globalFilter=="string"&&(n.globalFilter=e.globalFilter),n}function Bt(e){return {...e,state:Ho(e.state,Object.keys(e.state))}}function Yr(e,a){return Array.isArray(a)?a.map(t=>Ne(t)?{...t}:t):Ne(a)?e==="columnPinning"?{left:Array.isArray(a.left)?[...a.left]:void 0,right:Array.isArray(a.right)?[...a.right]:void 0}:{...a}:a}function Zr(e){if(Array.isArray(e))return e.filter(a=>Ne(a)&&typeof a.id=="string").map(a=>({id:a.id,desc:!!a.desc}))}function el(e){if(!(!Ne(e)||!Number.isInteger(e.pageIndex)||e.pageIndex<0||!Number.isInteger(e.pageSize)||e.pageSize<1))return {pageIndex:e.pageIndex,pageSize:e.pageSize}}function al(e){if(Array.isArray(e))return e.filter(a=>Ne(a)&&typeof a.id=="string"&&Object.prototype.hasOwnProperty.call(a,"value")).map(a=>({id:a.id,value:a.value}))}function tl(e){if(Ne(e))return {left:_t(e.left)??[],right:_t(e.right)??[]}}function Ot(e){if(Ne(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="boolean"))}function nl(e){if(Ne(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="number"&&Number.isFinite(a[1])&&a[1]>=0))}function _t(e){if(Array.isArray(e))return e.filter(a=>typeof a=="string")}function $t(e){if(e){if(e.storage)return e.storage;if(!(typeof window>"u"))try{return window.localStorage}catch(a){e.onError?.({error:a,operation:"read"});return}}}function ol(){return typeof globalThis.crypto?.randomUUID=="function"?globalThis.crypto.randomUUID():(zo+=1,`view-${Date.now().toString(36)}-${zo.toString(36)}`)}function Ut(e){return `${qr}${e}`}function Ne(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Bo({columns:e,currentColumnFilters:a,currentColumnPinning:t,effectiveColumnVisibility:n,enableColumnFilters:i,handleColumnFiltersChange:s,handleColumnPinningChange:l,labels:b,table:u,toolbarActions:D,visibleData:v,csvExport:E$1}){let R=y.useMemo(()=>A(e).map(({column:c,index:w})=>{let f=G(c,w),r=c.header,h=I(c),g=typeof r=="string"?r:h?O(h):O(f),$=t.left?.includes(f)===true?"left":t.right?.includes(f)===true?"right":false;return {id:f,label:g,visible:n[f]!==false,canHide:c.enableHiding!==false,pinned:$}}),[e,t,n]),S=y.useMemo(()=>i===false?[]:A(e).flatMap(({column:c,index:w})=>{let f=c.meta?.filter;if(!f)return [];let r=G(c,w),h=c.header,g=I(c),$=f.label??(typeof h=="string"?h:g?O(g):O(r)),I$1=a.find(K=>K.id===r),B$1=typeof f.options=="function"?f.options({rows:v}):f.options??[];return [{id:r,label:$,type:f.type,value:I$1?.value,placeholder:f.placeholder,options:B(B$1)}]}),[e,a,i,v]),x=y.useCallback((c,w)=>{s(f=>{let r=f.filter(h=>h.id!==c);return C(w)&&r.push({id:c,value:w}),r});},[s]),M=y.useCallback(()=>{s([]);},[s]),H=y.useCallback((c,w)=>{l(f=>{let r=(f.left??[]).filter(g=>g!==c),h=(f.right??[]).filter(g=>g!==c);return w==="left"&&r.push(c),w==="right"&&h.push(c),{left:r,right:h}});},[l]),T=y.useCallback(()=>{if(E$1)return E({csvExport:E$1,table:u,labels:b})},[E$1,b,u]),m=y.useMemo(()=>E$1?[...D??[],{key:"__csv_export__",label:b.exportCsv,icon:k,placement:"trailing",onClick:T}]:D??[],[E$1,T,b.exportCsv,D]);return {columnVisibilityOptions:R,effectiveToolbarActions:m,handleClearColumnFilters:M,handleToolbarColumnFilterChange:x,handleToolbarColumnPinningChange:H,toolbarColumnFilters:S}}function Gs(e){return rl(e)}function rl(e,a$2={}){let t=a$2.CardPanel??oo,n=a$2.TablePanel??Io,i=e.classNames??{},{rootClassName:s,Button:l,Checkbox:b,Input:u,ScrollArea:D,ScrollBar:v,Skeleton:E$1,Table:R,TableBody:S,TableCell:x,TableFooter:M="tfoot",TableHead:H$1,TableHeader:T,TableRow:m,Tooltip:c,TooltipContent:w,TooltipProvider:f=y.Fragment,TooltipTrigger:r}=e,h=ko(e),g=Ao(e),{DataTableFooter:$}=Eo(e),I=Vo(e),B=Po(e,g),K={minSize:80,size:180,maxSize:720};return function({columns:C,data:Q,getRowId:j,children:q,title:X,description:V,toolbarQueryValue:U,onToolbarQueryValueChange:Z,toolbarQueryPlaceholder:te,toolbarQueryDebounceMs:se,manualFiltering:me=false,enableToolbarQueryFiltering:Le=true,globalFilterFn:Me,columnFilters:Ce,onColumnFiltersChange:J,enableColumnFilters:Ae,customToolbar:pe,compactToolbar:Ve,rowsPerPageOptions:De=[10,20,50,100],totalRowCount:F$1,hasNextPage:we,sorting:Se,onSortingChange:be,manualSorting:ge=false,pageIndex:Ye,pageSize:Y,onPageIndexChange:Oe,onPageSizeChange:je,pageCount:Ze,manualPagination:Ke=false,rowSelection:Ge,onRowSelectionChange:Ie,enableRowSelection:ze=false,expanded:ve,onExpandedChange:_e,getRowCanExpand:ea,renderExpandedRow:he,columnOrder:He,onColumnOrderChange:aa,enableColumnReordering:We=false,columnPinning:Qe,onColumnPinningChange:ye,enableColumnPinning:k=false,toolbarActions:N=[],selectionActions:ne=[],rowActions:o=[],csvExport:P$1,density:W,onDensityChange:Pa,enableDensityToggle:ut=false,columnPrefsKey:pa,persistence:sa,savedViews:oe,initialState:ee,state:le,onStateChange:re,apiRef:_a,labels:xa,summaryRows:Ha=[],cardRenderer:ka,cardSizing:ta,cardGridClassName:Ba,cardClassName:pt,viewMode:$a,onViewModeChange:bt,enableViewToggle:ba=false,emptyState:ma,isLoading:Ua=false,loadingRowCount:z,getRowLoadingState:Fe,hiddenRows:ga,showHiddenRows:ja,onShowHiddenRowsChange:jo,infiniteScroll:Ka,editableRows:Ga,columnVisibility:jt,onColumnVisibilityChange:Ko,columnSizing:Kt,onColumnSizingChange:Go,enableColumnResizing:Gt=false,columnResizeMode:Wo="onEnd",layoutMode:Wt="fill",stickyHeader:Qo=true,showFooter:qo=true,showToolbar:Qt=true,dir:mt="ltr",flexGrow:fa=true,toolbarVisibility:qt,className:Jo,tableClassName:Xo,tableContainerClassName:Jt,stripedRows:Xt=false,getRowClassName:Yt,onRowClick:gt,onActionError:Ea,dragAndDrop:Ta,fileUpload:qe,virtualization:ft}){let Ma=y.useRef(null),Zt=y.useRef(null),en=y.useRef(null),Yo=y.useRef(null),Tt=y.useRef(null),Zo=y.useRef(null),ei=y.useId(),ai=y.useId();y.useMemo(()=>H(C),[C]);let Je=y.useMemo(()=>so(xa),[xa]),ti=U??le?.globalFilter,ni=Se??le?.sorting,Wa=Ye??le?.pagination?.pageIndex,Qa=Y??le?.pagination?.pageSize,oi=Ge??le?.rowSelection,ii=jt??le?.columnVisibility,ri=Ce??le?.columnFilters,li=ve??le?.expanded,si=He??le?.columnOrder,di=Qe??le?.columnPinning,ci=Kt??le?.columnSizing,ui=W??le?.density,pi=$a??le?.viewMode,bi=ja??le?.showHiddenRows,an=Qt&&(qt?.title??true),tn=an&&X?ei:void 0,nn=an&&V?ai:void 0;sl(le,{columnFilters:Ce!==void 0,columnOrder:He!==void 0,columnPinning:Qe!==void 0,columnSizing:Kt!==void 0,columnVisibility:jt!==void 0,density:W!==void 0,expanded:ve!==void 0,globalFilter:U!==void 0,pagination:Ye!==void 0||Y!==void 0,rowSelection:Ge!==void 0,showHiddenRows:ja!==void 0,sorting:Se!==void 0,viewMode:$a!==void 0});let mi=Ee("globalFilter",Z,re),gi=Ee("sorting",be,re),fi=Ee("rowSelection",Ie,re),Ti=Ee("columnVisibility",Ko,re),Ci=Ee("columnFilters",J,re),Di=Ee("expanded",_e,re),wi=Ee("columnOrder",aa,re),hi=Ee("columnPinning",ye,re),yi=Ee("columnSizing",Go,re),Ri=Ee("density",Pa,re),Si=Ee("viewMode",bt,re),vi=Ee("showHiddenRows",jo,re),on=y.useCallback(d=>{Oe?.(d),re?.(O=>({...O,pagination:{pageIndex:d,pageSize:Qa??O.pagination.pageSize}}));},[Oe,re,Qa]),Pi=y.useCallback(d=>{je?.(d),re?.(O=>({...O,pagination:{pageIndex:Wa??O.pagination.pageIndex,pageSize:d}}));},[je,re,Wa]),Be=y.useCallback((d,O)=>{ll(O,d,Ea);},[Ea]),rn=y.useMemo(()=>o.map(d=>({...d,onClick:O=>{Be({actionKey:d.key,row:O,source:"rowAction"},()=>d.onClick(O));}})),[o,Be]),ln=y.useMemo(()=>gt?d=>{Be({row:d.row,source:"rowClick"},()=>gt(d));}:void 0,[gt,Be]),xi=y.useCallback((d,O)=>{Ea?.({error:d,row:O,source:"edit"});},[Ea]),{containerWidth:ki,currentColumnFilters:qa,currentColumnOrder:Ct,currentColumnPinning:Ja,currentColumnSizing:Xa,currentColumnVisibility:sn,currentDensity:Aa,currentExpanded:Dt,currentPagination:Ya,currentRowSelection:Za,currentShowHiddenRows:wt,currentSorting:et,currentViewMode:Ca,effectiveColumnVisibility:dn,globalFilterValue:Ei,handleDensityChange:ht,handleShowHiddenRowsChange:yt,handleViewModeChange:Rt,localSearchValue:Da,resolvedLoadingRowCount:Mi,resolvedToolbarQueryPlaceholder:Ai,selectedRows:Vi,setCurrentColumnFilters:cn,setCurrentColumnOrder:Ii,setCurrentColumnPinning:un,setCurrentColumnVisibility:zi,setCurrentExpanded:Fi,setCurrentRowSelection:pn,setCurrentSorting:Ni,setLocalColumnSizing:Li,setLocalPagination:Oi,setLocalSearchValue:St,shouldRenderInitialLoading:vt,tableData:_i,tableGetRowId:Hi,visibleData:Bi}=yo({columnFilters:ri,columnOrder:si,columnPinning:di,columnSizing:ci,columnPrefsKey:pa,persistence:sa,columnVisibility:ii,columns:C,containerRef:Ma,data:Q,density:ui,enableRowSelection:ze,enableToolbarQueryFiltering:Le,expanded:li,getRowId:j,hiddenRows:ga,isLoading:Ua,loadingRowCount:z,manualFiltering:me,initialState:ee,onColumnFiltersChange:Ci,onColumnOrderChange:wi,onColumnPinningChange:hi,onColumnSizingChange:yi,onColumnVisibilityChange:Ti,onDensityChange:Ri,onExpandedChange:Di,onPageIndexChange:on,onRowSelectionChange:fi,onShowHiddenRowsChange:vi,onSortingChange:gi,onToolbarQueryValueChange:mi,onViewModeChange:Si,pageIndex:Wa,pageSize:Qa,resolvedLabels:Je,rowSelection:oi,rowsPerPageOptions:De,selectionActions:ne,showHiddenRows:bi,sorting:ni,toolbarQueryDebounceMs:se,toolbarQueryPlaceholder:te,toolbarQueryValue:ti,viewMode:pi}),{cancelEditing:$i,draftValues:Ui,editingRowId:Pt,isSavingEdit:ji,saveEdit:Ki,setDraftValues:Gi,setEditingRowId:Wi,startEditingRow:Qi}=P({columns:C,editableRows:Ga,onError:xi}),{viewportElement:bn,viewportHeight:mn}=a$1(en,Ca),qi=y.useCallback(()=>{qe?.disabled||Zt.current?.click();},[qe?.disabled]),Ji=y.useCallback(d=>{Be({source:"fileUpload"},()=>qe?.onFilesSelected(d));},[qe,Be]),Xi=co({Button:l,Checkbox:b,DataTableRowActions:g,Tooltip:c,TooltipContent:w,TooltipTrigger:r,cancelEditing:$i,columns:C,editableRows:Ga,editingRowId:Pt,enableRowSelection:ze,getRowCanExpand:ea,isSavingEdit:ji,labels:Je,lastSelectedRowIdRef:Zo,renderExpandedRow:he,rowActions:rn,saveEdit:Ki,startEditingRow:Qi,tableRef:Tt}),{effectivePageCount:Yi,footerTotalRowCount:Zi,handleFooterPageIndexChange:er,handleFooterPageSizeChange:ar,isPageCountKnown:tr,renderedRows:gn,reorderColumn:nr,rowsToRender:or,sentinelRef:fn,table:ae,virtualPaddingBottom:ir,virtualPaddingTop:rr,visibleLeafColumns:xt}=mo({autoResetPageIndex:false,columnResizeMode:Wo,dir:mt,currentColumnFilters:qa,currentColumnOrder:Ct,currentColumnPinning:Ja,currentColumnSizing:Xa,currentExpanded:Dt,currentPagination:Ya,currentRowSelection:Za,currentSorting:et,defaultColumn:K,effectiveColumnVisibility:dn,enableColumnResizing:Gt,enableRowSelection:ze,getRowCanExpand:ea,globalFilterFn:Me,globalFilterValue:Ei,hasNextPage:we,handleColumnFiltersChange:cn,handleColumnOrderChange:Ii,handleColumnPinningChange:un,handleColumnVisibilityChange:zi,handleExpandedChange:Fi,infiniteScroll:Ka,manualFiltering:me,manualPagination:Ke,manualSorting:ge,onActionError:Ea,onPageIndexChange:on,onPageSizeChange:Pi,pageCount:Ze,pageIndex:Wa,pageSize:Qa,renderExpandedRow:he,setCurrentRowSelection:pn,setCurrentSorting:Ni,setLocalColumnSizing:Li,setLocalPagination:Oi,shouldRenderInitialLoading:vt,tableColumns:Xi,tableData:_i,tableGetRowId:Hi,tableRef:Tt,totalRowCount:F$1,virtualization:ft}),Tn=So({columns:C,columnSizing:Xa,editableRows:!!Ga,enableRowSelection:ze,hasRowActions:o.length>0,hasRowExpansion:!!he,layoutMode:Wt,uiClassNames:i,visibleLeafColumns:xt}),{explicitlySizedColumnIds:at,fillMinWidth:lr,getColumnLayout:sr}=Tn,dr=y.useMemo(()=>new Set(A(C).flatMap(({column:d,index:O})=>Object.prototype.hasOwnProperty.call(d,"cell")&&typeof d.cell=="function"?[G(d,O)]:[])),[C]),cr=xt.length,ur=y.useMemo(()=>({Checkbox:b,Input:u,Skeleton:E$1,TableCell:x,TableRow:m}),[]),pr=y.useMemo(()=>A(C).some(({column:d})=>d.meta?.cardTitle),[C]),br=y.useCallback((d,O)=>{at.has(d)||Object.prototype.hasOwnProperty.call(ae.getState().columnSizing,d)||flushSync(()=>{ae.setColumnSizing(ha=>({...ha,[d]:O}));});},[at,ae]),mr=y.useCallback(d=>{if(at.has(d)){ae.getColumn(d)?.resetSize();return}ae.setColumnSizing(O=>{if(!Object.prototype.hasOwnProperty.call(O,d))return O;let ha={...O};return delete ha[d],ha});},[at,ae]),Cn=ae.getFilteredRowModel().rows.map(d=>d.original),Dn=typeof ma=="function"?ma({rows:Cn,toolbarQueryValue:Da}):ma,{columnVisibilityOptions:gr,effectiveToolbarActions:wn,handleClearColumnFilters:fr,handleToolbarColumnFilterChange:Tr,handleToolbarColumnPinningChange:Cr,toolbarColumnFilters:Dr}=Bo({columns:C,currentColumnFilters:qa,currentColumnPinning:Ja,csvExport:P$1,effectiveColumnVisibility:dn,enableColumnFilters:Ae,handleColumnFiltersChange:cn,handleColumnPinningChange:un,labels:Je,table:ae,toolbarActions:N,visibleData:Bi}),wr=y.useMemo(()=>wn.map(d=>({...d,onClick:O=>{Be({actionKey:d.key,source:"toolbarAction"},()=>d.onClick(O));}})),[wn,Be]),hr=y.useMemo(()=>ne.map(d=>({...d,onClick:O=>{Be({actionKey:d.key,source:"selectionAction"},()=>d.onClick(O));}})),[Be,ne]),hn=y.useMemo(()=>({sorting:et,pagination:Ya,rowSelection:Za,columnVisibility:sn,columnFilters:qa,expanded:Dt,columnOrder:Ct,columnPinning:Ja,columnSizing:Xa,density:Aa,viewMode:Ca,showHiddenRows:wt,globalFilter:Da}),[qa,Ct,Ja,Xa,sn,Aa,Dt,Ya,Za,wt,et,Ca,Da]),Va=y.useCallback(()=>cl(hn),[hn]),na=y.useCallback(d=>{d.sorting!==void 0&&ae.setSorting(d.sorting),d.pagination!==void 0&&ae.setPagination(d.pagination),d.rowSelection!==void 0&&ae.setRowSelection(d.rowSelection),d.columnVisibility!==void 0&&ae.setColumnVisibility(d.columnVisibility),d.columnFilters!==void 0&&ae.setColumnFilters(d.columnFilters),d.expanded!==void 0&&ae.setExpanded(d.expanded),d.columnOrder!==void 0&&ae.setColumnOrder(d.columnOrder),d.columnPinning!==void 0&&ae.setColumnPinning(d.columnPinning),d.columnSizing!==void 0&&ae.setColumnSizing(d.columnSizing),d.density!==void 0&&ht(d.density),d.viewMode!==void 0&&Rt(d.viewMode),d.showHiddenRows!==void 0&&yt(d.showHiddenRows),d.globalFilter!==void 0&&St(d.globalFilter);},[ht,yt,Rt,St,ae]),wa=y.useCallback(()=>Co(sa??pa),[pa,sa]),yn=y.useCallback(d=>{d?.clearPersistence&&wa(),na({columnVisibility:ee?.columnVisibility??{},columnOrder:ee?.columnOrder??[],columnPinning:ee?.columnPinning??F(C),columnSizing:ee?.columnSizing??{}});},[wa,C,ee,na]),Rn=y.useCallback(d=>{d?.clearPersistence&&wa(),na({sorting:ee?.sorting??[],pagination:ee?.pagination??{pageIndex:0,pageSize:De[0]??20},rowSelection:ee?.rowSelection??{},columnVisibility:ee?.columnVisibility??{},columnFilters:ee?.columnFilters??[],expanded:ee?.expanded??{},columnOrder:ee?.columnOrder??[],columnPinning:ee?.columnPinning??F(C),columnSizing:ee?.columnSizing??{},density:ee?.density??"comfortable",viewMode:ee?.viewMode??"table",showHiddenRows:ee?.showHiddenRows??false,globalFilter:ee?.globalFilter??""});},[wa,C,ee,na,De]),Sn=y.useCallback(()=>va(oe),[oe]),vn=y.useCallback(d=>No(oe,d,Va()),[Va,oe]),Pn=y.useCallback(d=>{let O=va(oe).find(ha=>ha.id===d);return O?(na(O.state),oe?.onApply?.(O),true):false},[na,oe]),xn=y.useCallback((d,O)=>Lo(oe,d,O),[oe]),kn=y.useCallback(d=>Oo(oe,d),[oe]),En=y.useCallback(()=>_o(oe),[oe]),Mn=y.useCallback(d=>E({csvExport:d??(P$1||true),labels:Je,table:ae}),[P$1,Je,ae]);return y.useImperativeHandle(_a,()=>({getTable:()=>Tt.current,getState:Va,snapshot:Va,restore:na,resetColumnLayout:yn,resetState:Rn,clearPersistedState:wa,getSavedViews:Sn,createSavedView:vn,applySavedView:Pn,renameSavedView:xn,deleteSavedView:kn,clearSavedViews:En,focus:()=>{Ma.current?.focus();},scrollToRow:d=>$o(Ma.current,"row",d),scrollToColumn:d=>$o(Ma.current,"column",d),exportCsv:Mn}),[Pn,wa,En,vn,kn,Mn,Sn,Va,xn,yn,Rn,na]),jsx(f,{children:jsxs("div",{ref:Ma,"data-dtp-slot":"data-table-root","data-density":Aa,"data-dtp-striped-rows":Xt||void 0,"aria-busy":Ua||void 0,dir:mt,tabIndex:-1,className:a("@container/data-table data-table-container-query flex w-full min-w-0 flex-col",fa?"h-full min-h-0 flex-1":"grow",s),onDragEnter:Ta?.onDragEnter,onDragOver:Ta?.onDragOver,onDragLeave:Ta?.onDragLeave,onDrop:Ta?.onDrop,children:[qe?jsx("input",{ref:Zt,className:"hidden",type:"file",accept:qe.accept,multiple:qe.multiple??true,disabled:qe.disabled,onChange:d=>{let O=d.currentTarget.files;O?.length&&Ji(O),d.currentTarget.value="";}}):null,jsx("div",{"data-dtp-slot":"data-table-layout",className:a("flex w-full flex-col",fa?"min-h-0 flex-1":"grow"),children:jsxs("div",{"data-dtp-slot":"data-table-main",className:a("flex w-full flex-col gap-4",fa?"min-h-0 flex-1":"grow",Jo),children:[Qt?jsx(lo,{allRows:Cn,columnFilters:Dr,columnVisibilityOptions:gr,compactToolbar:Ve,customToolbar:pe,DataTableToolbar:I,density:Aa,description:V,descriptionId:nn,effectiveToolbarActions:wr,enableColumnPinning:k,enableDensityToggle:ut,enableViewToggle:ba&&!!ka,hiddenRowsLabel:ga?.label,labels:Je,onClearColumnFilters:fr,onColumnFilterChange:Tr,onColumnPinningChange:Cr,onDensityChange:ht,onShowHiddenRowsChange:yt,onToolbarQueryValueChange:St,onViewModeChange:Rt,openFileDialog:qe?qi:void 0,selectedRows:Vi,selectionActions:hr,showHiddenRows:wt,table:ae,title:X,titleId:tn,toolbarQueryPlaceholder:Ai,toolbarQueryValue:Da,toolbarVisibility:qt,viewMode:Ca}):null,jsx("div",{"data-dtp-slot":"data-table-content",className:a(fa?"flex min-h-0 flex-1 flex-col":""),children:Ca==="card"&&ka?jsx(t,{cardClassName:pt,cardGridClassName:Ba,cardSizing:ta,cardRenderer:ka,containerWidth:ki,currentRowSelection:Za,DataTableCardView:B,DataTableEmptyState:h,dragAndDrop:Ta,editableRows:Ga,editingRowId:Pt,emptyNode:Dn,enableRowSelection:ze,flexGrow:fa,getRowClassName:Yt,hasCardTitle:pr,infiniteScroll:Ka,localSearchValue:Da,onRowClick:ln,renderedRows:gn,renderExpandedRow:he,resolvedLabels:Je,resolvedLoadingRowCount:Mi,rowActions:rn,ScrollArea:D,sentinelRef:fn,setCurrentRowSelection:pn,setEditingRowId:Wi,shouldRenderInitialLoading:vt,tableContainerClassName:Jt,uiClassNames:i,virtualization:ft}):jsx(n,{ariaDescribedBy:nn,ariaLabelledBy:tn,bodyRowComponents:ur,columnLayouts:Tn.columnLayouts,currentDensity:Aa,currentSorting:et,dir:mt,DataTableEmptyState:h,dragAndDrop:Ta,draggedColumnIdRef:Yo,draftValues:Ui,editingRowId:Pt,emptyNode:Dn,enableColumnReordering:We,enableColumnResizing:Gt,explicitCustomCellColumnIds:dr,fillMinWidth:lr,flexGrow:fa,getColumnLayout:sr,getRowClassName:Yt,getRowLoadingState:Fe,infiniteScroll:Ka,layoutMode:Wt,localSearchValue:Da,onRowClick:ln,primeColumnForResize:br,renderedRows:gn,renderExpandedRow:he,reorderColumn:nr,resetColumnSize:mr,resolvedLabels:Je,rowsToRender:or,ScrollArea:D,ScrollBar:v,sentinelRef:fn,setDraftValues:Gi,shouldRenderInitialLoading:vt,stickyHeader:Qo,stripedRows:Xt,summaryRows:Ha,table:ae,tableClassName:Xo,tableContainerClassName:Jt,Table:R,TableBody:S,TableCell:x,TableFooter:M,TableHead:H$1,TableHeader:T,TableRow:m,tableScrollContainerRef:en,tableScrollElement:bn,uiClassNames:i,viewportHeight:mn,virtualization:ft,virtualPaddingBottom:ir,virtualPaddingTop:rr,visibleLeafColumnCount:cr,visibleLeafColumns:xt})}),jsx(io,{currentPagination:Ya,DataTableFooter:$,effectivePageCount:Yi,footerTotalRowCount:Zi,handleFooterPageIndexChange:er,handleFooterPageSizeChange:ar,labels:Je,pageCountKnown:tr,rowsPerPageOptions:De,showFooter:qo&&!Ka?.enabled,children:q})]})})]})})}}function ll(e,a,t){let n;try{n=e();}catch(i){t?.({...a,error:i});return}Promise.resolve(n).catch(i=>{t?.({...a,error:i});});}function Ee(e,a,t){let n=y.useCallback(i=>{a?.(i),t?.(s=>({...s,[e]:i}));},[e,a,t]);return a||t?n:void 0}function sl(e,a){let t=y.useRef(new Set);y.useEffect(()=>{if(!(!e||!dl()))for(let n of Object.keys(a))e[n]===void 0||!a[n]||t.current.has(n)||(t.current.add(n),console.warn(`[data-table-pro] Both state.${n} and its legacy controlled prop were provided. The legacy prop takes precedence during the 4.x compatibility window.`));},[a,e]);}function dl(){return globalThis.process?.env?.NODE_ENV!=="production"}function cl(e){return {sorting:e.sorting.map(a=>({...a})),pagination:{...e.pagination},rowSelection:{...e.rowSelection},columnVisibility:{...e.columnVisibility},columnFilters:e.columnFilters.map(a=>({...a})),expanded:typeof e.expanded=="boolean"?e.expanded:{...e.expanded},columnOrder:[...e.columnOrder],columnPinning:{left:e.columnPinning.left?[...e.columnPinning.left]:void 0,right:e.columnPinning.right?[...e.columnPinning.right]:void 0},columnSizing:{...e.columnSizing},density:e.density,viewMode:e.viewMode,showHiddenRows:e.showHiddenRows,globalFilter:e.globalFilter}}function $o(e,a,t){if(!e)return false;let n=a==="row"?"data-row-id":"data-column-id",i=Array.from(e.querySelectorAll(`[${n}]`)).find(s=>s.getAttribute(n)===t);return i?(i.scrollIntoView?.({block:"nearest",inline:"nearest"}),true):false}export{oo as a,io as b,lo as c,co as d,mo as e,ke as f,yo as g,So as h,Gs as i,rl as j};//# sourceMappingURL=chunk-ICUCANNA.js.map -//# sourceMappingURL=chunk-ICUCANNA.js.map \ No newline at end of file diff --git a/dist/chunk-ICUCANNA.js.map b/dist/chunk-ICUCANNA.js.map deleted file mode 100644 index 8ac4463..0000000 --- a/dist/chunk-ICUCANNA.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/core/data-table/data-table-base-card-panel.tsx","../src/core/data-table/data-table-card-panel.tsx","../src/core/data-table/data-table-footer-section.tsx","../src/core/data-table/data-table-toolbar-section.tsx","../src/core/data-table/data-table-labels.ts","../src/core/data-table/use-data-table-columns.tsx","../src/core/data-table/use-data-table-infinite-scroll.ts","../src/core/data-table/use-data-table-pagination-clamp.ts","../src/core/data-table/use-data-table-instance.ts","../src/core/data-table/use-controllable-state.ts","../src/core/data-table/use-data-table-column-prefs.ts","../src/core/data-table/use-data-table-container-width.ts","../src/core/data-table/use-data-table-state.ts","../src/core/data-table/use-column-layout.ts","../src/core/data-table/create-data-table-card-view.tsx","../src/core/data-table/create-data-table-empty-state.tsx","../src/core/data-table/create-data-table-pagination.tsx","../src/core/data-table/create-data-table-row-actions.tsx","../src/core/data-table/create-data-table-toolbar.tsx","../src/core/data-table/data-table-table-panel-router.tsx","../src/core/data-table/data-table-saved-views.ts","../src/core/data-table/use-data-table-toolbar-features.ts","../src/core/data-table/create-data-table.tsx"],"names":["DataTableBaseCardPanel","cardClassName","cardGridClassName","cardSizing","cardRenderer","currentRowSelection","DataTableCardView","DataTableEmptyState","dragAndDrop","editableRows","editingRowId","emptyNode","enableRowSelection","flexGrow","getRowClassName","hasCardTitle","infiniteScroll","localSearchValue","onRowClick","renderedRows","renderExpandedRow","resolvedLabels","resolvedLoadingRowCount","rowActions","ScrollArea","sentinelRef","setCurrentRowSelection","setEditingRowId","shouldRenderInitialLoading","tableContainerClassName","uiClassNames","shouldRenderCards","cardScrollContainerRef","no","renderCardView","rows","options","jsx","cn","jsxs","LazyDataTableVirtualCardPanel","rt","DataTableCardPanel","props","config","DataTableFooterSection","children","currentPagination","DataTableFooter","effectivePageCount","footerTotalRowCount","handleFooterPageIndexChange","handleFooterPageSizeChange","labels","pageCountKnown","rowsPerPageOptions","showFooter","DataTableToolbarSection","allRows","columnFilters","columnVisibilityOptions","compactToolbar","customToolbar","DataTableToolbar","description","descriptionId","effectiveToolbarActions","enableColumnPinning","enableDensityToggle","enableViewToggle","hiddenRowsLabel","onClearColumnFilters","onColumnFilterChange","onColumnPinningChange","onDensityChange","onShowHiddenRowsChange","onToolbarQueryValueChange","onViewModeChange","openFileDialog","selectedRows","selectionActions","showHiddenRows","table","title","titleId","toolbarQueryPlaceholder","toolbarQueryValue","toolbarVisibility","density","viewMode","columnId","visible","DATA_TABLE_DEFAULT_LABELS","count","label","pageIndex","pageCount","rowId","columnLabel","resolveDataTableLabels","useDataTableColumns","Button","Checkbox","DataTableRowActions","Tooltip","TooltipContent","TooltipTrigger","cancelEditing","columns","getRowCanExpand","isSavingEdit","lastSelectedRowIdRef","saveEdit","startEditingRow","tableRef","selectRowRange","lt","targetRowId","selected","tableInstance","row","isDataTableLoadingRow","startIndex","endIndex","from","to","current","next","defs","UTILITY_COLUMN_SIZE","isExpanded","IconChevronDown","checked","event","column","decorateFilterableColumn","useDataTableInfiniteScroll","enabled","hasMore","isLoadingMore","onLoadMore","onError","oa","isRequestInFlightRef","onLoadMoreEvent","onErrorEvent","error","target","observer","entries","result","useDataTablePaginationClamp","maxPageIndex","onPageIndexChange","setLocalPageIndex","po","nextPageIndex","useDataTableInstance","autoResetPageIndex","columnResizeMode","dir","currentColumnFilters","currentColumnOrder","currentColumnPinning","currentColumnSizing","currentExpanded","currentSorting","defaultColumn","effectiveColumnVisibility","enableColumnResizing","globalFilterFn","globalFilterValue","hasNextPage","handleColumnFiltersChange","handleColumnOrderChange","handleColumnPinningChange","handleColumnVisibilityChange","handleExpandedChange","manualFiltering","manualPagination","manualSorting","onActionError","onPageSizeChange","pageSize","setCurrentSorting","setLocalColumnSizing","setLocalPagination","tableColumns","tableData","tableGetRowId","totalRowCount","virtualization","generatedColumnIds","xe","getDataTableLeafColumns","index","getColumnId","effectiveColumnOrder","columnIds","dataColumnIds","isUtilityColumnId","dataColumnIdSet","orderedDataColumnIds","unorderedDataColumnIds","effectiveColumnPinning","columnIdSet","dataLeft","dataRight","tableState","handlePaginationChange","updater","nextValue","handleColumnSizingChange","useReactTable","getCoreRowModel","getFilteredRowModel","getSortedRowModel","getExpandedRowModel","getPaginationRowModel","dataTableGlobalFilterFn","visibleLeafColumns","reorderColumn","sourceColumnId","targetColumnId","defaultOrder","nextOrder","moveColumnInOrder","virtualizationConfig","virtualRowsEnabled","fallbackRowCount","rowsToRender","rowIndex","usesManualRows","derivedTotalRowCount","effectiveTotalRowCount","isPageCountKnown","nextPageSize","useControllableState","defaultValue","onChange","value","uncontrolledValue","setUncontrolledValue","ia","currentValue","currentValueRef","setValue","STORAGE_PREFIX","DEFAULT_VERSION","ALL_SLICES","readDataTableColumnPrefs","input","resolvePersistenceConfig","storage","resolveStorage","storageKey","getStorageKey","parsed","targetVersion","candidate","isPersistencePayload","selectPersistenceSlices","validateDataTableColumnPrefs","clearDataTableColumnPrefs","usePersistDataTableColumnPrefs","key","persistence","prefs","version","debounceMs","selectedState","serialized","ua","payload","operation","write","timeout","isRecord","slices","slice","visibility","validateBooleanRecord","sizing","validateSizingRecord","order","validateStringArray","left","right","isDataTableDensity","entry","item","BREAKPOINT_WIDTHS","DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS","first","second","useDataTableContainerWidth","containerRef","widthRef","ya","width","setWidth","element","updateWidth","inlineSize","nextWidth","quantizeDataTableContainerWidth","getResizeObserverInlineSize","bucket","breakpointWidth","contentBoxSize","size","getInlineSize","useDataTableState","columnOrder","columnPinning","columnSizing","columnPrefsKey","columnVisibility","data","enableToolbarQueryFiltering","expanded","getRowId","hiddenRows","initialState","isLoading","loadingRowCount","onColumnFiltersChange","onColumnOrderChange","onColumnSizingChange","onColumnVisibilityChange","onExpandedChange","onRowSelectionChange","onSortingChange","rowSelection","sorting","toolbarQueryDebounceMs","persistenceConfig","G","persistedColumnPrefs","localPagination","currentColumnVisibility","setCurrentColumnVisibility","setCurrentColumnFilters","setCurrentExpanded","setCurrentColumnOrder","setCurrentColumnPinning","getInitialColumnPinning","setCurrentColumnSizing","currentViewMode","setCurrentViewMode","currentShowHiddenRows","setCurrentShowHiddenRows","currentDensity","setCurrentDensity","resolvedToolbarQueryValue","resolvedToolbarQueryPlaceholder","resolvedToolbarQueryDebounceMs","setLocalSearchValue","containerWidth","hasOnSearchValueChange","lastReportedSearchValueRef","onToolbarQueryValueChangeEvent","handleViewModeChange","nextViewMode","handleShowHiddenRowsChange","nextShowHiddenRows","handleDensityChange","nextDensity","resetPageIndexForFilterChange","lastFilterStateRef","previous","filtersChanged","globalFilterChanged","responsiveColumnVisibility","isHiddenAtContainerWidth","visibleData","isRowVisible","loadingRows","createDataTableLoadingRows","getDataTableLoadingRowId","shouldResolveSelectedRows","rowById","EMPTY_COLUMN_LAYOUT","useColumnLayout","hasRowActions","hasRowExpansion","layoutMode","explicitlySizedColumnIds","$e","ids","minimumColumnWidths","widths","configuredMinWidth","getConfiguredColumnMinWidth","pinnedColumns","leftOffset","getFixedSide","getColumnLayoutSize","rightOffset","fillColumnId","dataColumns","fixedWidthColumnIds","columnLayouts","layouts","isSelectionColumn","isExpansionColumn","isActionsColumn","isUtilityColumn","isSpacerColumn","isFlexibleFillColumn","columnMinWidth","shouldFixWidth","baseStyle","fixedSide","pinnedStyle","cellStyle","getPinnedColumnClassName","fillMinWidth","total","layout","getColumnLayout","createDataTableCardView","ui","Card","CardContent","CardHeader","Skeleton","onEditingRowIdChange","getRowDraggable","onRowDragStart","onRowDragEnd","resolvedCardSizing","resolvedCardGridClassName","getCardGridClassName","cardGridClasses","cardItemClasses","stateClassName","getCardItemClassName","_","originalRow","isSelected","isEditing","hasCardActions","showCardGradient","showCardOverlayControls","handleCardActivate","getCardRendererClassName","isDataTableInteractiveTarget","updateRowSelection","nextSelection","createDataTableEmptyState","Empty","EmptyContent","EmptyDescription","EmptyHeader","EmptyMedia","EmptyTitle","IconInbox","createDataTablePagination","Pagination","PaginationContent","PaginationEllipsis","PaginationFirst","PaginationItem","PaginationLast","PaginationLink","PaginationNext","PaginationPrevious","Select","SelectContent","SelectGroup","SelectItem","SelectTrigger","SelectValue","DataTablePagination","pages","getVisiblePages","canGoPrevious","canGoNext","lastPageIndex","option","IconDatabase","currentPageIndex","currentPage","page","orderedPages","items","createDataTableRowActions","DropdownMenu","DropdownMenuContent","DropdownMenuGroup","DropdownMenuItem","DropdownMenuSeparator","DropdownMenuTrigger","onStartEditing","onCancelEditing","actions","action","canUseRowAction","stopRowClickPropagation","Mo","IconX","allowEdit","canEditRow","IconDots","IconEdit","Icon","resolveRowActionLabel","createDataTableToolbar","ButtonGroup","DropdownMenuCheckboxItem","DropdownMenuLabel","InputGroup","InputGroupAddon","InputGroupInput","toolbarActions","compactSearchInputRef","Sa","isCompactSearchVisible","setIsCompactSearchVisible","compactToolbarIconButtonClassName","primaryActions","trailingActions","showTitle","showSearch","showActions","showTrailingActions","showOptions","showViewToggle","showCustomToolbar","hasVisibleTitle","hasVisibleSearch","hasVisiblePrimaryActions","hasVisibleSelectionActions","hasVisibleOptions","hasVisibleViewToggle","hasVisibleTrailingActions","hasVisibleCustomToolbar","hasVisibleCompactToolbar","selectedRowCountLabel","Fragment","IconSearch","collapsesToIcon","button","disabled","IconAdjustmentsHorizontal","IconList","IconLayoutGrid","filter","ToolbarColumnFilterControl","hasColumnFilterValue","selectedValues","selectedLabel","nextValues","LazyDataTableVirtualTablePanel","ct","DataTableTablePanelRouter","DataTableTablePanel","DEFAULT_SLICES","fallbackId","readDataTableSavedViews","view","validateSavedView","createDataTableSavedView","name","state","normalizedName","now","createSavedViewId","selectSavedViewSlices","views","writeViews","cloneSavedView","renameDataTableSavedView","id","renamed","deleteDataTableSavedView","clearDataTableSavedViews","snapshots","snapshot","cloneStateSlice","validateState","validateSorting","pagination","validatePagination","filters","validateFilters","pinning","validatePinning","useDataTableToolbarFeatures","enableColumnFilters","csvExport","Xe","header","accessorKey","getAccessorKey","startCase","pinned","toolbarColumnFilters","rawOptions","normalizeColumnFilterOptions","handleToolbarColumnFilterChange","hasFilterValue","handleClearColumnFilters","handleToolbarColumnPinningChange","side","handleCsvExport","exportDataTableCsv","IconDownload","createDataTable","createDataTableWithPanels","rootClassName","Input","ScrollBar","Table","TableBody","TableCell","TableFooter","TableHead","TableHeader","TableRow","TooltipProvider","enableColumnReordering","savedViews","unifiedState","onStateChange","apiRef","summaryRows","emptyState","getRowLoadingState","stickyHeader","showToolbar","className","tableClassName","stripedRows","fileUpload","fileInputRef","tableScrollContainerRef","draggedColumnIdRef","generatedTitleId","generatedDescriptionId","validateDataTableColumnIds","resolvedSorting","resolvedPageIndex","resolvedPageSize","resolvedRowSelection","resolvedColumnVisibility","resolvedColumnFilters","resolvedExpanded","resolvedColumnOrder","resolvedColumnPinning","resolvedColumnSizing","resolvedDensity","resolvedViewMode","resolvedShowHiddenRows","showTableHeading","useDataTableStateConflictWarnings","handleToolbarQueryValueChange","useDataTableStateSliceChange","handleSortingPropChange","handleRowSelectionPropChange","handleColumnVisibilityPropChange","handleColumnFiltersPropChange","handleExpandedPropChange","handleColumnOrderPropChange","handleColumnPinningPropChange","handleColumnSizingPropChange","handleDensityPropChange","handleViewModePropChange","handleShowHiddenRowsPropChange","handlePageIndexPropChange","handlePageSizePropChange","runAction","context","runDataTableAction","guardedRowActions","guardedOnRowClick","handleEditError","draftValues","setDraftValues","useRowEditing","tableScrollElement","viewportHeight","useDataTableScrollViewport","handleSelectedFiles","files","virtualPaddingBottom","virtualPaddingTop","columnLayout","explicitCustomCellColumnIds","visibleLeafColumnCount","bodyRowComponents","primeColumnForResize","currentSize","flushSync","resetColumnSize","filteredData","guardedToolbarActions","guardedSelectionActions","currentDataTableState","getCurrentState","cloneDataTableState","restoreState","nextState","clearPersistedState","resetColumnLayout","resetState","getSavedViews","createSavedView","applySavedView","renameSavedView","deleteSavedView","clearSavedViews","exportCsvFromApi","scrollDataTableElementIntoView","onLegacyChange","handleChange","legacySlices","warnedSlicesRef","isDevelopmentEnvironment","container","kind","attribute"],"mappings":"2dAKO,SAASA,EAAAA,CAA8B,CAC5C,cAAAC,CAAAA,CACA,iBAAA,CAAAC,IACA,UAAA,CAAAC,CAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,mBAAA,CAAAC,CAAAA,CACA,kBAAAC,CAAAA,CACA,mBAAA,CAAAC,EACA,WAAA,CAAAC,CAAAA,CACA,aAAAC,CAAAA,CACA,YAAA,CAAAC,EACA,SAAA,CAAAC,CAAAA,CACA,mBAAAC,CAAAA,CACA,QAAA,CAAAC,EACA,eAAA,CAAAC,CAAAA,CACA,aAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,UAAA,CAAAC,EACA,YAAA,CAAAC,CAAAA,CACA,kBAAAC,CAAAA,CACA,cAAA,CAAAC,EACA,uBAAA,CAAAC,CAAAA,CACA,WAAAC,CAAAA,CAAa,GACb,UAAA,CAAAC,CAAAA,CACA,YAAAC,CAAAA,CACA,sBAAA,CAAAC,EACA,eAAA,CAAAC,CAAAA,CACA,0BAAA,CAAAC,CAAAA,CACA,uBAAA,CAAAC,CAAAA,CACA,aAAAC,CACF,CAAA,CAAmC,CACjC,IAAMC,CAAAA,CACJH,GAA8BT,CAAAA,CAAa,MAAA,CAAS,EAChDa,CAAAA,CAA+BC,CAAA,CAAA,MAAA,CAA8B,IAAI,CAAA,CAEjEC,CAAAA,CAAiB,CACrBC,CAAAA,CACAC,CAAAA,GAKAC,IAAC/B,CAAAA,CAAA,CACC,IAAA,CAAM6B,CAAAA,CACN,YAAA,CAAc/B,CAAAA,CACd,kBAAmBF,GAAAA,CACnB,aAAA,CAAeD,EACf,UAAA,CAAYE,CAAAA,CACZ,WAAYoB,CAAAA,CACZ,YAAA,CAAcd,EACd,iBAAA,CAAmBW,CAAAA,CACnB,aAAcL,CAAAA,CACd,YAAA,CAAcV,EACd,oBAAA,CAAsBqB,CAAAA,CACtB,mBAAoBd,CAAAA,CACpB,YAAA,CAAcF,CAAAA,CACd,oBAAA,CAAsBiB,CAAAA,CACtB,eAAA,CAAiBb,EACjB,UAAA,CAAYI,CAAAA,CACZ,gBAAiBV,CAAAA,EAAa,eAAA,CAC9B,eAAgBA,CAAAA,EAAa,cAAA,CAC7B,aAAcA,CAAAA,EAAa,YAAA,CAC3B,UAAW4B,CAAAA,EAAS,SAAA,CACpB,gBAAiBA,CAAAA,EAAS,eAAA,CAC1B,OAAQf,CAAAA,CACV,CAAA,CAGF,OACEgB,GAAAA,CAAC,KAAA,CAAA,CACC,GAAA,CAAKL,EACL,eAAA,CAAc,uBAAA,CACd,UAAWM,CAAAA,CACT,0DAAA,CACAzB,EAAW,8BAAA,CAAiC,QAAA,CAC5CL,GAAa,UAAA,GACVsB,CAAAA,CAAa,YAAc,0BAAA,CAChC,CAAA,CAEA,SAAAO,GAAAA,CAACb,CAAAA,CAAA,CACC,SAAA,CAAWc,CAAAA,CACTzB,CAAAA,CAAW,gBAAA,CAAmB,QAAA,CAC9BiB,CAAAA,CAAa,eACbD,CACF,CAAA,CAEA,SAAAU,IAAAA,CAAC,KAAA,CAAA,CACC,gBAAc,0BAAA,CACd,SAAA,CAAWD,EACT,kCAAA,CACAzB,CAAAA,EAAY,iBACZiB,CAAAA,CAAa,YACf,EAEC,QAAA,CAAA,CAAAC,CAAAA,CACCH,EACEM,CAAAA,CAAe,EAAC,CAAG,CACjB,SAAA,CAAW,IAAA,CACX,gBAAiBZ,CACnB,CAAC,EAEDY,CAAAA,CAAef,CAAY,EAG7BkB,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,qDAAA,CACZ,QAAA,CAAA1B,GACC0B,GAAAA,CAAC9B,CAAAA,CAAA,CACC,KAAA,CACEU,CAAAA,CACII,EAAe,mBAAA,CACfA,CAAAA,CAAe,WAAA,CAErB,WAAA,CACEJ,CAAAA,CACII,CAAAA,CAAe,0BACfA,CAAAA,CAAe,iBAAA,CAEvB,EAEJ,CAAA,CAGDL,CAAAA,EAAgB,SAAW,CAACY,CAAAA,CAC3BS,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,qBACb,QAAA,CAAAA,GAAAA,CAAC,OAAI,GAAA,CAAKZ,CAAAA,CAAa,UAAU,YAAA,CAAa,CAAA,CAChD,CAAA,CACE,IAAA,CAAA,CACN,CAAA,CACF,CAAA,CACF,CAEJ,CCrIA,IAAMe,GAAsCC,CAAA,CAAA,IAAA,CAAK,UAExC,CAAE,OAAA,CAAA,CADM,aAAa,6CAAiC,CAAA,EACpC,yBAA0B,CAAA,CACpD,CAAA,CAEM,SAASC,EAAAA,CACdC,CAAAA,CACA,CACA,IAAMC,CAAAA,CACJ,OAAOD,EAAM,cAAA,EAAmB,QAAA,CAC5BA,EAAM,cAAA,CAAe,IAAA,CACrB,OAEN,OAAIC,CAAAA,EAAQ,UAAY,IAAA,CACfP,GAAAA,CAACrC,GAAA,CAAwB,GAAG2C,EAAO,CAAA,CAI1CN,GAAAA,CAAOI,WAAN,CACC,QAAA,CACEJ,GAAAA,CAACrC,EAAAA,CAAA,CACE,GAAG2C,EACJ,YAAA,CAAcA,CAAAA,CAAM,aAAa,KAAA,CAC/B,CAAA,CACA,KAAK,GAAA,CAAI,CAAA,CAAG,KAAK,KAAA,CAAMC,CAAAA,CAAO,mBAAqB,EAAE,CAAC,CACxD,CAAA,CACF,CAAA,CAGF,SAAAP,GAAAA,CAACG,EAAAA,CAAA,CAA+B,GAAGG,CAAAA,CAAO,CAAA,CAC5C,CAEJ,CClBO,SAASE,EAAAA,CAAuB,CACrC,QAAA,CAAAC,CAAAA,CACA,kBAAAC,CAAAA,CACA,eAAA,CAAAC,EACA,kBAAA,CAAAC,CAAAA,CACA,mBAAA,CAAAC,CAAAA,CACA,2BAAA,CAAAC,CAAAA,CACA,2BAAAC,CAAAA,CACA,MAAA,CAAAC,EACA,cAAA,CAAAC,CAAAA,CAAiB,KACjB,kBAAA,CAAAC,CAAAA,CACA,WAAAC,CACF,CAAA,CAAgC,CAC9B,OAAI,CAACA,GAAc,CAACV,CAAAA,CACX,KAIPP,IAAAA,CAAC,KAAA,CAAA,CAAI,eAAA,CAAc,mBAAA,CAAoB,SAAA,CAAU,UAAA,CAC9C,UAAAiB,CAAAA,CACCnB,GAAAA,CAACW,EAAA,CACC,SAAA,CAAWD,EAAkB,SAAA,CAC7B,SAAA,CAAWE,CAAAA,CACX,cAAA,CAAgBK,CAAAA,CAChB,QAAA,CAAUP,EAAkB,QAAA,CAC5B,aAAA,CAAeG,EACf,kBAAA,CAAoBK,CAAAA,CACpB,kBAAmBJ,CAAAA,CACnB,gBAAA,CAAkBC,CAAAA,CAClB,MAAA,CAAQC,CAAAA,CACV,CAAA,CACE,KACHP,CAAAA,CAAAA,CACH,CAEJ,CCbO,SAASW,EAAAA,CAA+B,CAC7C,QAAAC,CAAAA,CACA,aAAA,CAAAC,EACA,uBAAA,CAAAC,CAAAA,CACA,eAAAC,CAAAA,CACA,aAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,WAAA,CAAAC,EACA,aAAA,CAAAC,CAAAA,CACA,wBAAAC,CAAAA,CACA,mBAAA,CAAAC,EACA,mBAAA,CAAAC,CAAAA,CACA,iBAAAC,CAAAA,CACA,eAAA,CAAAC,EACA,MAAA,CAAAjB,CAAAA,CACA,qBAAAkB,CAAAA,CACA,oBAAA,CAAAC,EACA,qBAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CAAAA,CACA,sBAAA,CAAAC,CAAAA,CACA,0BAAAC,CAAAA,CACA,gBAAA,CAAAC,EACA,cAAA,CAAAC,CAAAA,CACA,aAAAC,CAAAA,CACA,gBAAA,CAAAC,EACA,cAAA,CAAAC,CAAAA,CACA,MAAAC,CAAAA,CACA,KAAA,CAAAC,EACA,OAAA,CAAAC,CAAAA,CACA,wBAAAC,CAAAA,CACA,iBAAA,CAAAC,CAAAA,CACA,iBAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,EACA,QAAA,CAAAC,CACF,EAAwC,CACtC,OACEpD,IAAC,KAAA,CAAA,CAAI,eAAA,CAAc,qBAAqB,SAAA,CAAU,UAAA,CAChD,SAAAA,GAAAA,CAAC0B,CAAAA,CAAA,CACC,KAAA,CAAOoB,CAAAA,CACP,QAASC,CAAAA,CACT,WAAA,CAAapB,CAAAA,CACb,aAAA,CAAeC,CAAAA,CACf,iBAAA,CAAmBqB,EACnB,uBAAA,CAAyBD,CAAAA,CACzB,0BAA2BT,CAAAA,CAC3B,aAAA,CAAed,EACf,cAAA,CAAgBD,CAAAA,CAChB,SAAU4B,CAAAA,CACV,gBAAA,CAAkBZ,EAClB,gBAAA,CAAkBR,CAAAA,CAClB,eAAgBH,CAAAA,CAChB,gBAAA,CAAkBc,EAClB,YAAA,CAAcD,CAAAA,CACd,cAAA,CAAgBE,CAAAA,CAChB,eAAA,CAAiBX,CAAAA,CACjB,uBAAwBK,CAAAA,CACxB,OAAA,CAASjB,EACT,uBAAA,CAAyBE,CAAAA,CACzB,yBAA0B,CAAC8B,CAAAA,CAAkBC,IAAqB,CAChET,CAAAA,CAAM,UAAUQ,CAAQ,CAAA,EAAG,iBAAiBC,CAAO,EACrD,EACA,mBAAA,CAAqBxB,CAAAA,CACrB,qBAAA,CAAuBM,CAAAA,CACvB,aAAA,CAAed,CAAAA,CACf,qBAAsBa,CAAAA,CACtB,oBAAA,CAAsBD,EACtB,OAAA,CAASiB,CAAAA,CACT,gBAAiBd,CAAAA,CACjB,mBAAA,CAAqBN,EACrB,MAAA,CAAQf,CAAAA,CACR,kBAAmBkC,CAAAA,CACnB,cAAA,CAAgBT,EAClB,CAAA,CACF,CAEJ,CC/GO,IAAMc,EAAAA,CAAqD,CAChE,kBAAmB,gBAAA,CACnB,WAAA,CAAa,eACb,WAAA,CAAa,cAAA,CACb,YAAa,aAAA,CACb,iBAAA,CAAmB,wDAAA,CACnB,mBAAA,CAAqB,kBAAA,CACrB,yBAAA,CAA2B,gDAC3B,YAAA,CAAc,oBAAA,CACd,QAAS,SAAA,CACT,OAAA,CAAS,UACT,YAAA,CAAc,eAAA,CACd,YAAA,CAAeC,CAAAA,EACb,CAAA,EAAGA,CAAK,UAAUA,CAAAA,GAAU,CAAA,CAAI,GAAK,GAAG,CAAA,SAAA,CAAA,CAC1C,eAAiBC,CAAAA,EAAU,CAAA,KAAA,EAAQA,CAAK,CAAA,CAAA,CACxC,cAAA,CAAgB,mBAChB,YAAA,CAAeD,CAAAA,EAAU,kBAAkBA,CAAK,CAAA,CAAA,CAChD,WAAY,CAACE,CAAAA,CAAWC,CAAAA,GAAc,CAAA,KAAA,EAAQD,CAAAA,CAAY,CAAC,OAAOC,CAAS,CAAA,CAAA,CAC3E,kBAAoBD,CAAAA,EAAc,CAAA,KAAA,EAAQA,EAAY,CAAC,CAAA,CAAA,CACvD,WAAY,YAAA,CACZ,SAAA,CAAW,aACX,SAAA,CAAW,YAAA,CACX,aAAc,eAAA,CACd,QAAA,CAAU,YACV,QAAA,CAAU,WAAA,CACV,oBAAA,CAAsB,yBAAA,CACtB,SAAA,CAAW,YAAA,CACX,cAAgBE,CAAAA,EAAU,CAAA,WAAA,EAAcA,CAAK,CAAA,CAAA,CAC7C,iBAAA,CAAmB,uBACnB,gBAAA,CAAkB,qBAAA,CAClB,UAAW,YAAA,CACX,QAAA,CAAU,YACV,gBAAA,CAAkB,KAAA,CAClB,QAAS,SAAA,CACT,UAAA,CAAY,cACZ,OAAA,CAAS,UAAA,CACT,QAAA,CAAU,MAAA,CACV,UAAA,CAAY,gBAAA,CACZ,UAAW,YAAA,CACX,WAAA,CAAa,eACb,SAAA,CAAW,YAAA,CACX,QAAS,SAAA,CACT,cAAA,CAAgB,UAChB,kBAAA,CAAoB,aAAA,CACpB,gBAAiB,UAAA,CACjB,OAAA,CAAS,WACT,QAAA,CAAU,WAAA,CACV,MAAO,OAAA,CACP,YAAA,CAAeC,CAAAA,EAAgB,CAAA,OAAA,EAAUA,CAAW,CAAA,CACtD,EAEO,SAASC,EAAAA,CACd9C,EACyB,CACzB,OAAO,CACL,GAAGuC,EAAAA,CACH,GAAGvC,CACL,CACF,CClCO,SAAS+C,EAAAA,CAA2B,CACzC,MAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,GAAAA,CACA,oBAAAC,CAAAA,CACA,OAAA,CAAAC,EACA,cAAA,CAAAC,CAAAA,CACA,eAAAC,CAAAA,CACA,aAAA,CAAAC,EACA,OAAA,CAAAC,CAAAA,CACA,aAAAnG,GAAAA,CACA,YAAA,CAAAC,EACA,kBAAA,CAAAE,CAAAA,CACA,gBAAAiG,CAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,MAAA,CAAAzD,CAAAA,CACA,oBAAA,CAAA0D,EACA,iBAAA,CAAA3F,CAAAA,CACA,WAAAG,CAAAA,CACA,QAAA,CAAAyF,EACA,eAAA,CAAAC,CAAAA,CACA,SAAAC,GACF,CAAA,CAuBG,CACD,IAAMC,GAAAA,CAAuBC,cAC3B,CAACC,CAAAA,CAAqBC,IAAsB,CAC1C,IAAMC,CAAAA,CAAgBL,GAAAA,CAAS,OAAA,CAC/B,GAAI,CAACK,CAAAA,EAAiB,CAACR,EAAqB,OAAA,CAC1C,OAGF,IAAM5E,CAAAA,CAAOoF,CAAAA,CACV,WAAA,EAAY,CACZ,IAAA,CAAK,MAAA,CAAQC,GAAQ,CAACC,CAAAA,CAAsBD,EAAI,QAAQ,CAAC,EACtDE,CAAAA,CAAavF,CAAAA,CAAK,SAAA,CACrBqF,CAAAA,EAAQA,CAAAA,CAAI,EAAA,GAAOT,EAAqB,OAC3C,CAAA,CACMY,EAAWxF,CAAAA,CAAK,SAAA,CAAWqF,GAAQA,CAAAA,CAAI,EAAA,GAAOH,CAAW,CAAA,CAE/D,GAAIK,EAAa,CAAA,EAAKC,CAAAA,CAAW,EAC/B,OAGF,IAAMC,EAAO,IAAA,CAAK,GAAA,CAAIF,CAAAA,CAAYC,CAAQ,CAAA,CACpCE,CAAAA,CAAK,KAAK,GAAA,CAAIH,CAAAA,CAAYC,CAAQ,CAAA,CACxCJ,CAAAA,CAAc,gBAAiBO,CAAAA,EAAY,CACzC,IAAMC,CAAAA,CAAO,CAAE,GAAGD,CAAQ,CAAA,CAC1B,QAAWN,CAAAA,IAAOrF,CAAAA,CAAK,MAAMyF,CAAAA,CAAMC,CAAAA,CAAK,CAAC,CAAA,CACnCP,CAAAA,CACFS,CAAAA,CAAKP,EAAI,EAAE,CAAA,CAAI,KAEf,OAAOO,CAAAA,CAAKP,EAAI,EAAE,CAAA,CAGtB,OAAOO,CACT,CAAC,EACH,CAAA,CACA,CAAChB,EAAsBG,GAAQ,CACjC,EAEA,OAAaE,CAAA,CAAA,OAAA,CAA0C,IAAM,CAC3D,IAAMY,CAAAA,CAAyC,EAAC,CAEhD,OAAI5G,GACF4G,CAAAA,CAAK,IAAA,CAAK,CACR,EAAA,CAAI,YAAA,CACJ,eAAgB,KAAA,CAChB,aAAA,CAAe,MACf,YAAA,CAAc,KAAA,CACd,KAAMC,CAAAA,CACN,OAAA,CAASA,EACT,OAAA,CAASA,CAAAA,CACT,MAAA,CAAQ,IAAM5F,GAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,SAAA,CAAW,QAAA,CAAAgB,EAAO,SAAA,CAAU,CAAA,CAC1D,KAAM,CAAC,CAAE,IAAAmE,CAAI,CAAA,GAAM,CAGjB,GAAI,EADFX,IAAkBW,CAAAA,CAAI,QAAQ,GAAK,CAAA,CAAQpG,CAAAA,CAAAA,CAE3C,OAAO,IAAA,CAGT,IAAM8G,CAAAA,CAAaV,EAAI,aAAA,EAAc,CACrC,OACEnF,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,kCAAA,CACb,QAAA,CAAAA,IAACgE,CAAAA,CAAA,CACC,KAAK,QAAA,CACL,OAAA,CAAQ,QACR,IAAA,CAAK,SAAA,CACL,aACE6B,CAAAA,CAAa7E,CAAAA,CAAO,WAAA,CAAcA,CAAAA,CAAO,SAAA,CAE3C,eAAA,CAAe6E,EACf,OAAA,CAAS,IAAMV,EAAI,cAAA,EAAe,CAElC,SAAAnF,GAAAA,CAAC8F,CAAAA,CAAA,CACC,SAAA,CAAW7F,CAAAA,CACT,uBACA4F,CAAAA,CAAa,UAAA,CAAa,YAC5B,CAAA,CACF,CAAA,CACF,EACF,CAEJ,CACF,CAAC,CAAA,CAGCtH,CAAAA,EACFoH,CAAAA,CAAK,KAAK,CACR,EAAA,CAAI,aACJ,cAAA,CAAgB,KAAA,CAChB,cAAe,KAAA,CACf,YAAA,CAAc,MACd,IAAA,CAAMC,CAAAA,CACN,QAASA,CAAAA,CACT,OAAA,CAASA,EACT,MAAA,CAAQ,CAAC,CAAE,KAAA,CAAA/C,CAAM,CAAA,GACf7C,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,mCACb,QAAA,CAAAA,GAAAA,CAACiE,IAAA,CACC,SAAA,CAAU,SACV,OAAA,CAASpB,CAAAA,CAAM,0BAAyB,CACxC,eAAA,CAAkBkD,GAAuC,CACvDlD,CAAAA,CAAM,0BAA0BkD,CAAAA,GAAY,IAAI,EAClD,CAAA,CACA,YAAA,CACE/E,CAAAA,CAAO,oBAAA,EACPuC,EAAAA,CAA0B,oBAAA,CAE9B,EACF,CAAA,CAEF,IAAA,CAAM,CAAC,CAAE,GAAA,CAAA4B,CAAI,CAAA,GACXnF,GAAAA,CAAC,OAAI,SAAA,CAAU,kCAAA,CACb,SAAAA,GAAAA,CAACiE,GAAAA,CAAA,CACC,SAAA,CAAU,QAAA,CACV,QAASkB,CAAAA,CAAI,aAAA,EAAc,CAC3B,OAAA,CAAUa,CAAAA,EAA+C,CACvD,GAAI,CAACA,CAAAA,CAAM,UAAY,CAACtB,CAAAA,CAAqB,QAAS,CACpDA,CAAAA,CAAqB,QAAUS,CAAAA,CAAI,EAAA,CACnC,MACF,CAEAa,CAAAA,CAAM,gBAAe,CACrBA,CAAAA,CAAM,iBAAgB,CACtBlB,GAAAA,CAAeK,CAAAA,CAAI,EAAA,CAAI,CAACA,CAAAA,CAAI,eAAe,CAAA,CAC3CT,EAAqB,OAAA,CAAUS,CAAAA,CAAI,GACrC,CAAA,CACA,eAAA,CAAkBY,GAAuC,CACvDrB,CAAAA,CAAqB,QAAUS,CAAAA,CAAI,EAAA,CACnCA,EAAI,cAAA,CAAeY,CAAAA,GAAY,IAAI,EACrC,CAAA,CACA,YAAA,CACE/E,CAAAA,CAAO,SAAA,EAAauC,EAAAA,CAA0B,UAElD,CAAA,CACF,CAEJ,CAAC,CAAA,CAGHoC,CAAAA,CAAK,KAAK,GAAGpB,CAAAA,CAAQ,IAAK0B,CAAAA,EAAWC,CAAAA,CAAyBD,CAAM,CAAC,CAAC,GAElE/G,CAAAA,CAAW,MAAA,EAAUd,MACvBuH,CAAAA,CAAK,IAAA,CAAK,CACR,EAAA,CAAI,aAAA,CACJ,aAAA,CAAe,MACf,cAAA,CAAgB,KAAA,CAChB,aAAc,KAAA,CACd,IAAA,CAAMC,EACN,OAAA,CAASA,CAAAA,CACT,QAASA,CAAAA,CACT,MAAA,CAAQ,IAAM5F,GAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,SAAA,CAAW,QAAA,CAAAgB,EAAO,OAAA,CAAQ,CAAA,CACxD,IAAA,CAAM,CAAC,CAAE,GAAA,CAAAmE,CAAI,CAAA,GAAM,CACjB,IAAMvB,CAAAA,CAAQuB,CAAAA,CAAI,GAGlB,OAFkB9G,CAAAA,GAAiBuF,EAI/B1D,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,4CAAA,CACb,QAAA,CAAA,CAAAF,IAACgE,CAAAA,CAAA,CACC,KAAK,QAAA,CACL,IAAA,CAAK,IAAA,CACL,QAAA,CAAUS,CAAAA,CACV,OAAA,CAAS,IAAM,CACRE,CAAAA,CAASQ,EAAI,QAAQ,EAC5B,EAEC,QAAA,CAAAnE,CAAAA,CAAO,QAAA,CACV,CAAA,CACAd,IAAAA,CAACiE,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAnE,GAAAA,CAACqE,EAAA,CAAe,OAAA,CAAO,KACrB,QAAA,CAAAnE,IAAAA,CAAC8D,CAAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,KAAK,SAAA,CACL,OAAA,CAAQ,QACR,OAAA,CAASM,CAAAA,CAET,UAAAtE,GAAAA,CAAC8F,CAAAA,CAAA,CAAgB,SAAA,CAAU,WAAA,CAAY,EACvC9F,GAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,SAAA,CAAW,QAAA,CAAAgB,EAAO,UAAA,CAAW,CAAA,CAAA,CAC/C,CAAA,CACF,CAAA,CACAhB,GAAAA,CAACoE,CAAAA,CAAA,CAAgB,QAAA,CAAApD,CAAAA,CAAO,WAAW,CAAA,CAAA,CACrC,CAAA,CAAA,CACF,EAKFhB,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,yCAAA,CACb,QAAA,CAAAA,IAACkE,CAAAA,CAAA,CACC,IAAKiB,CAAAA,CAAI,QAAA,CACT,WAAYjG,CAAAA,CACZ,YAAA,CAAcd,GAAAA,CACd,SAAA,CAAW,KAAA,CACX,cAAA,CAAgB,IAAM,CACpBwG,CAAAA,CAAgBO,EAAI,QAAA,CAAUA,CAAAA,CAAI,EAAE,EACtC,CAAA,CACA,gBAAiB,IAAM,CAAC,EACxB,MAAA,CAAQnE,CAAAA,CACV,EACF,CAEJ,CACF,CAAC,CAAA,CAGI2E,CACT,CAAA,CAAG,CACD3B,CAAAA,CACAC,GAAAA,CACAC,EACAC,CAAAA,CACAC,CAAAA,CACAC,EACAC,CAAAA,CACAC,CAAAA,CACAnG,IACAC,CAAAA,CACAE,CAAAA,CACAiG,EACAC,CAAAA,CACAzD,CAAAA,CACA0D,EACA3F,CAAAA,CACAG,CAAAA,CACAyF,EACAG,GAAAA,CACAF,CACF,CAAC,CACH,CCvSO,SAASuB,EAAAA,CAA2B,CACzC,OAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,aAAA,CAAAC,CAAAA,CACA,WAAAC,CAAAA,CACA,OAAA,CAAAC,CACF,CAAA,CAMG,CACD,IAAMpH,CAAAA,CAAoBqH,CAAA,CAAA,MAAA,CAA8B,IAAI,CAAA,CACtDC,CAAAA,CAA6BD,SAAO,KAAK,CAAA,CACzCE,EAAwBF,CAAA,CAAA,cAAA,CAAeF,CAAU,EACjDK,CAAAA,CAAqBH,CAAA,CAAA,cAAA,CAAgBI,CAAAA,EAAmB,CAC5DL,CAAAA,GAAUK,CAAK,EACjB,CAAC,CAAA,CAED,OAAMJ,CAAA,CAAA,SAAA,CAAU,IAAM,CACpB,GAAI,CAACL,GAAW,CAACC,CAAAA,EAAWC,EAC1B,OAGF,IAAMQ,EAAS1H,CAAAA,CAAY,OAAA,CAC3B,GAAI,CAAC0H,CAAAA,CACH,OAGF,IAAMC,CAAAA,CAAW,IAAI,qBAClBC,CAAAA,EAAY,CAEX,GADcA,CAAAA,CAAQ,CAAC,EACb,cAAA,EAAkB,CAACN,CAAAA,CAAqB,OAAA,CAAS,CACzDA,CAAAA,CAAqB,QAAU,IAAA,CAE/B,IAAIO,EACJ,GAAI,CACFA,EAASN,CAAAA,GACX,CAAA,MAASE,CAAAA,CAAO,CACdH,CAAAA,CAAqB,QAAU,KAAA,CAC/BE,CAAAA,CAAaC,CAAK,CAAA,CAClB,MACF,CAEK,OAAA,CAAQ,OAAA,CAAQI,CAAM,CAAA,CACxB,KAAA,CAAOJ,GAAmB,CACzBD,CAAAA,CAAaC,CAAK,EACpB,CAAC,EACA,OAAA,CAAQ,IAAM,CACbH,CAAAA,CAAqB,OAAA,CAAU,MACjC,CAAC,EACL,CACF,EACA,CACE,UAAA,CAAY,qBACd,CACF,CAAA,CAEA,OAAAK,CAAAA,CAAS,OAAA,CAAQD,CAAM,CAAA,CAEhB,IAAM,CACXC,CAAAA,CAAS,UAAA,GACX,CACF,CAAA,CAAG,CAACX,CAAAA,CAASC,CAAAA,CAASC,CAAa,CAAC,CAAA,CAE7BlH,CACT,CCnEO,SAAS8H,EAAAA,CAA4B,CAC1C,OAAA,CAAAd,CAAAA,CACA,aAAAe,CAAAA,CACA,iBAAA,CAAAC,EACA,SAAA,CAAA1D,CAAAA,CACA,kBAAA2D,CACF,CAAA,CAMG,CACKC,CAAA,CAAA,SAAA,CAAU,IAAM,CAKpB,GAJI,CAAClB,CAAAA,EAID1C,GAAa,CAAA,EAAKA,CAAAA,EAAayD,EACjC,OAGF,IAAMI,EAAgB,IAAA,CAAK,GAAA,CAAI,KAAK,GAAA,CAAI7D,CAAAA,CAAW,CAAC,CAAA,CAAGyD,CAAY,EACnEE,CAAAA,CAAkBE,CAAa,CAAA,CAC/BH,CAAAA,GAAoBG,CAAa,EACnC,EAAG,CAACnB,CAAAA,CAASe,EAAcC,CAAAA,CAAmB1D,CAAAA,CAAW2D,CAAiB,CAAC,EAC7E,CCOO,SAASG,EAAAA,CAA4B,CAC1C,kBAAA,CAAAC,CAAAA,CACA,iBAAAC,CAAAA,CACA,GAAA,CAAAC,EACA,oBAAA,CAAAC,CAAAA,CACA,kBAAA,CAAAC,CAAAA,CACA,oBAAA,CAAAC,CAAAA,CACA,oBAAAC,CAAAA,CACA,eAAA,CAAAC,EACA,iBAAA,CAAAtH,CAAAA,CACA,oBAAA1C,GAAAA,CACA,cAAA,CAAAiK,EACA,aAAA,CAAAC,CAAAA,CACA,0BAAAC,CAAAA,CACA,oBAAA,CAAAC,EACA,kBAAA,CAAA7J,CAAAA,CACA,gBAAAiG,CAAAA,CACA,cAAA,CAAA6D,CAAAA,CACA,iBAAA,CAAAC,CAAAA,CACA,WAAA,CAAAC,EACA,yBAAA,CAAAC,CAAAA,CACA,wBAAAC,CAAAA,CACA,yBAAA,CAAAC,EACA,4BAAA,CAAAC,CAAAA,CACA,qBAAAC,CAAAA,CACA,cAAA,CAAAjK,EACA,eAAA,CAAAkK,CAAAA,CACA,iBAAAC,CAAAA,CACA,aAAA,CAAAC,EACA,aAAA,CAAAC,CAAAA,CACA,iBAAA,CAAA5B,GAAAA,CACA,gBAAA,CAAA6B,CAAAA,CACA,UAAAtF,CAAAA,CACA,SAAA,CAAAD,EACA,QAAA,CAAAwF,CAAAA,CACA,kBAAAnK,CAAAA,CACA,sBAAA,CAAAM,CAAAA,CACA,iBAAA,CAAA8J,CAAAA,CACA,oBAAA,CAAAC,EACA,kBAAA,CAAAC,EAAAA,CACA,2BAAA9J,EAAAA,CACA,YAAA,CAAA+J,GACA,SAAA,CAAAC,EAAAA,CACA,aAAA,CAAAC,EAAAA,CACA,QAAA,CAAA3E,EAAAA,CACA,cAAA4E,CAAAA,CACA,cAAA,CAAAC,EACF,CAAA,CAuDG,CACD,IAAMC,EAAAA,CAA2BC,CAAA,CAAA,OAAA,CAAQ,IAChCC,CAAAA,CACLP,EACF,EAAE,GAAA,CAAI,CAAC,CAAE,MAAA,CAAArD,CAAAA,CAAQ,MAAA6D,CAAM,CAAA,GAAMC,CAAAA,CAAY9D,CAAAA,CAAQ6D,CAAK,CAAC,EACtD,CAACR,EAAY,CAAC,CAAA,CAEXU,EAAAA,CAA6BJ,UAA0B,IAAM,CACjE,IAAMK,CAAAA,CAAYN,EAAAA,CACZO,EAAgBD,CAAAA,CAAU,MAAA,CAC7B5G,GACC,CAAC8G,CAAAA,CAAkB9G,CAAQ,CAAA,EAAKA,CAAAA,GAAa,YACjD,CAAA,CACM+G,EAAAA,CAAkB,IAAI,IAAIF,CAAa,CAAA,CACvCG,EAAuBxC,CAAAA,CAAmB,MAAA,CAAQxE,GACtD+G,EAAAA,CAAgB,GAAA,CAAI/G,CAAQ,CAC9B,CAAA,CACMiH,EAAyBJ,CAAAA,CAAc,MAAA,CAC1C7G,GAAa,CAACgH,CAAAA,CAAqB,SAAShH,CAAQ,CACvD,CAAA,CAEA,OAAO,CACL,GAAG4G,EAAU,MAAA,CACV5G,CAAAA,EAAaA,IAAa,YAAA,EAAgBA,CAAAA,GAAa,YAC1D,CAAA,CACA,GAAGgH,EACH,GAAGC,CAAAA,CACH,GAAGL,CAAAA,CAAU,MAAA,CAAQ5G,GAAaA,CAAAA,GAAa,YAAY,EAC3D,GAAG4G,CAAAA,CAAU,MAAA,CAAQ5G,CAAAA,EAAaA,CAAAA,GAAa,aAAa,CAC9D,CACF,CAAA,CAAG,CAACwE,CAAAA,CAAoB8B,EAAkB,CAAC,CAAA,CAErCY,EAAAA,CAA+BX,UAA4B,IAAM,CACrE,IAAMY,CAAAA,CAAc,IAAI,IAAIb,EAAkB,CAAA,CACxCS,EAAkB,IAAI,GAAA,CAC1BT,EAAAA,CAAmB,MAAA,CAChBtG,CAAAA,EACC,CAAC8G,EAAkB9G,CAAQ,CAAA,EAAKA,IAAa,YACjD,CACF,EACMoH,EAAAA,CAAAA,CAAY3C,CAAAA,CAAqB,MAAQ,EAAC,EAAG,OAAQzE,CAAAA,EACzD+G,CAAAA,CAAgB,IAAI/G,CAAQ,CAC9B,EACMqH,CAAAA,CAAAA,CAAa5C,CAAAA,CAAqB,KAAA,EAAS,EAAC,EAAG,MAAA,CAAQzE,GAC3D+G,CAAAA,CAAgB,GAAA,CAAI/G,CAAQ,CAC9B,CAAA,CAEA,OAAO,CACL,IAAA,CAAM,CACJ,GAAG,CAAC,aAAc,YAAY,CAAA,CAAE,OAAQA,CAAAA,EACtCmH,CAAAA,CAAY,IAAInH,CAAQ,CAC1B,CAAA,CACA,GAAGoH,EACL,CAAA,CACA,MAAO,CACL,GAAGC,EACH,GAAG,CAAC,aAAa,CAAA,CAAE,MAAA,CAAQrH,GAAamH,CAAAA,CAAY,GAAA,CAAInH,CAAQ,CAAC,CACnE,CACF,CACF,CAAA,CAAG,CAACyE,CAAAA,CAAsB6B,EAAkB,CAAC,CAAA,CAEvCgB,CAAAA,CAAmBf,CAAA,CAAA,OAAA,CACvB,KAAO,CACL,OAAA,CAAS3B,EACT,UAAA,CAAYvH,CAAAA,CACZ,aAAc1C,GAAAA,CACd,gBAAA,CAAkBmK,EAClB,aAAA,CAAeP,CAAAA,CACf,aAAcU,CAAAA,CACd,QAAA,CAAUN,EACV,WAAA,CAAagC,EAAAA,CACb,cAAeO,EAAAA,CACf,YAAA,CAAcxC,CAChB,CAAA,CAAA,CACA,CACEH,CAAAA,CACAG,EACAC,CAAAA,CACAtH,CAAAA,CACA1C,IACAiK,CAAAA,CACAE,CAAAA,CACA6B,GACAO,EAAAA,CACAjC,CACF,CACF,CAAA,CAEMsC,EAAAA,CAA+BhB,cAGlCiB,CAAAA,EAAY,CACX,IAAMC,CAAAA,CACJ,OAAOD,GAAY,UAAA,CAAaA,CAAAA,CAAQnK,CAAiB,CAAA,CAAImK,CAAAA,CAAAA,CAE3DnH,CAAAA,GAAc,QAAawF,CAAAA,GAAa,MAAA,GAC1CG,GAAoB5D,EAAAA,GAAa,CAC/B,UACE/B,CAAAA,GAAc,MAAA,CAAYoH,EAAU,SAAA,CAAYrF,EAAAA,CAAQ,UAC1D,QAAA,CACEyD,CAAAA,GAAa,OAAY4B,CAAAA,CAAU,QAAA,CAAWrF,GAAQ,QAC1D,CAAA,CAAE,CAAA,CAGAqF,CAAAA,CAAU,SAAA,GAAcpK,CAAAA,CAAkB,WAC5C0G,GAAAA,GAAoB0D,CAAAA,CAAU,SAAS,CAAA,CAErCA,CAAAA,CAAU,WAAapK,CAAAA,CAAkB,QAAA,EAC3CuI,IAAmB6B,CAAAA,CAAU,QAAQ,EAEzC,CAAA,CACA,CACEpK,EACA0G,GAAAA,CACA6B,CAAAA,CACAvF,EACAwF,CAAAA,CACAG,EACF,CACF,CAAA,CAEM0B,EAAAA,CAAiCnB,CAAA,CAAA,WAAA,CAGpCiB,GAAY,CACXzB,CAAAA,CAAqByB,CAAO,EAC9B,CAAA,CACA,CAACzB,CAAoB,CACvB,EAGMvG,EAAAA,CAAQmI,aAAAA,CAAc,CAC1B,IAAA,CAAMzB,EAAAA,CACN,QAASD,EAAAA,CACT,eAAA,CAAiB2B,iBAAgB,CACjC,mBAAA,CAAqBpC,CAAAA,CAAkB,MAAA,CAAYqC,mBAAAA,EAAoB,CACvE,kBAAmBnC,CAAAA,CAAgB,MAAA,CAAYoC,mBAAkB,CACjE,mBAAA,CAAqBpM,EAAoBqM,mBAAAA,EAAoB,CAAI,OACjE,qBAAA,CACEtC,CAAAA,EAAoBnK,GAAgB,OAAA,CAChC,MAAA,CACA0M,uBAAsB,CAC5B,kBAAA,CAAA9M,EACA,uBAAA,CAAyBA,CAAAA,CACzB,oBAAA,CAAA6J,CAAAA,CACA,gBAAA,CAAAV,CAAAA,CACA,sBAAuBC,CAAAA,CACvB,QAAA,CAAU6B,GACV,eAAA,CAAiBzK,CAAAA,CACZoG,GAAQX,CAAAA,GAAkBW,CAAAA,CAAI,QAAQ,CAAA,EAAK,IAAA,CAC5C,OACJ,cAAA,CAAgBkD,CAAAA,EAAkBiD,EAClC,wBAAA,CAA2BrF,CAAAA,EACzBA,EAAO,SAAA,CAAU,kBAAA,GAAuB,KAAA,EACxC,OAAOA,CAAAA,CAAO,UAAA,EAAe,WAC/B,aAAA,CAAA8C,CAAAA,CACA,gBAAAF,CAAAA,CACA,gBAAA,CAAkBC,GAAoB,CAAA,CAAQnK,CAAAA,EAAgB,OAAA,CAC9D,aAAA,CAAAuJ,CAAAA,CACA,kBAAA,CAAAT,EACA,KAAA,CAAOkD,CAAAA,CACP,gBAAiBxB,CAAAA,CACjB,kBAAA,CAAoByB,GACpB,oBAAA,CAAsBvL,CAAAA,CACtB,wBAAA,CAA0BsJ,CAAAA,CAC1B,qBAAA,CAAuBH,CAAAA,CACvB,iBAAkBI,CAAAA,CAClB,mBAAA,CAAqBH,EACrB,qBAAA,CAAuBC,CAAAA,CACvB,qBAAsBqC,EACxB,CAAC,EACDlG,EAAAA,CAAS,OAAA,CAAUhC,GAEnB,IAAM0I,EAAAA,CAAqB1I,GAAM,qBAAA,EAAsB,CACjD2I,GAAsB5B,CAAA,CAAA,WAAA,CAC1B,CAAC6B,CAAAA,CAAwBC,GAAAA,GAA2B,CAClD,GAAID,IAAmBC,GAAAA,CACrB,OAGF,IAAMC,EAAAA,CAAe9I,EAAAA,CAClB,mBAAkB,CAClB,GAAA,CAAKoD,GAAWA,CAAAA,CAAO,EAAE,EACzB,MAAA,CAAQ5C,CAAAA,EAAa,CAAC8G,CAAAA,CAAkB9G,CAAQ,CAAC,CAAA,CAC9CuI,CAAAA,CAAYC,CAAAA,CAChBhE,CAAAA,CAAmB,MAAA,CAASA,CAAAA,CAAqB8D,GACjDF,CAAAA,CACAC,GACF,EACAjD,CAAAA,CAAwBmD,CAAS,EACnC,CAAA,CACA,CAAC/D,EAAoBY,CAAAA,CAAyB5F,EAAK,CACrD,CAAA,CAEM/D,CAAAA,CAAe+D,GAAM,WAAA,EAAY,CAAE,KACnCiJ,EAAAA,CACJ,OAAOpC,EAAAA,EAAmB,QAAA,CAAWA,EAAAA,CAAiB,MAAA,CAClDqC,GACJrC,EAAAA,GAAmB,IAAA,EAAQoC,IAAsB,OAAA,GAAY,IAAA,CACzDE,GAAmB,IAAA,CAAK,GAAA,CAC5B,EACA,IAAA,CAAK,KAAA,CAAMF,IAAsB,gBAAA,EAAoB,EAAE,CACzD,CAAA,CAIMG,EAAAA,CAAAA,CAHsBF,GACxBjN,CAAAA,CAAa,KAAA,CAAM,CAAA,CAAGkN,EAAgB,CAAA,CACtClN,CAAAA,EACqC,IAAI,CAACqG,CAAAA,CAAK+G,KAAc,CAC/D,GAAA,CAAA/G,EACA,QAAA,CAAA+G,CACF,EAAE,CAAA,CAEIC,EAAAA,CAAiBrD,GAAoB,CAAA,CAAQnK,CAAAA,EAAgB,QAC7DyN,EAAAA,CAAuBD,EAAAA,CACzB,OACAtJ,EAAAA,CAAM,mBAAA,EAAoB,CAAE,IAAA,CAAK,MAAA,CAC/BwJ,EAAAA,CAAyB5C,GAAiB2C,EAAAA,CAC1CE,EAAAA,CACJ,CAACH,EAAAA,EAAkBxI,CAAAA,GAAc,QAAa8F,CAAAA,GAAkB,MAAA,CAC5D5I,GAAsBwL,EAAAA,CACtBzL,EAAAA,CAAqBrB,GACvB,CAAA,CACCoE,CAAAA,GACA0I,KAA2B,MAAA,CACxB,IAAA,CAAK,IACH,CAAA,CACA,IAAA,CAAK,IAAA,CAAKA,EAAAA,CAAyB3L,CAAAA,CAAkB,QAAQ,CAC/D,CAAA,CACAyL,EAAAA,CACEzL,EAAkB,SAAA,EAAa6H,CAAAA,CAAc,EAAI,CAAA,CAAA,CACjD1F,EAAAA,CAAM,cAAa,CAAA,CACvBsE,EAAAA,CAAe,KAAK,GAAA,CAAI,CAAA,CAAGvG,GAAqB,CAAC,CAAA,CAEjDyG,GAA0BuC,CAAA,CAAA,WAAA,CAC7BrC,CAAAA,EAA0B,CACrB7D,CAAAA,GAAc,MAAA,EAIlB2F,EAAAA,CAAoB5D,GAClBA,CAAAA,CAAQ,SAAA,GAAc8B,EAClB9B,CAAAA,CACA,CAAE,GAAGA,CAAAA,CAAS,SAAA,CAAW8B,CAAc,CAC7C,EACF,CAAA,CACA,CAAC7D,CAAAA,CAAW2F,EAAkB,CAChC,CAAA,CACAnC,EAAAA,CAA4B,CAC1B,OAAA,CACE,CAAC3H,EAAAA,EACD,CAACZ,CAAAA,EAAgB,OAAA,EACjB2N,GACF,YAAA,CAAAnF,EAAAA,CACA,kBAAAC,GAAAA,CACA,SAAA,CAAW1G,EAAkB,SAAA,CAC7B,iBAAA,CAAA2G,EACF,CAAC,CAAA,CAED,IAAMvG,EAAAA,CAAoC8I,CAAA,CAAA,WAAA,CACvCrC,GAA0B,CACrBA,CAAAA,GAAkB7G,EAAkB,SAAA,GAIxC0G,GAAAA,GAAoBG,CAAa,CAAA,CAC7B7D,CAAAA,GAAc,MAAA,EAChB2F,GAAoB5D,CAAAA,EAClBA,CAAAA,CAAQ,YAAc8B,CAAAA,CAClB9B,CAAAA,CACA,CAAE,GAAGA,CAAAA,CAAS,UAAW8B,CAAc,CAC7C,GAEJ,CAAA,CACA,CACE7G,EAAkB,SAAA,CAClB0G,GAAAA,CACA1D,EACA2F,EACF,CACF,CAAA,CACMtI,EAAAA,CAAmC6I,CAAA,CAAA,WAAA,CACtC2C,CAAAA,EAAyB,CACpB7L,CAAAA,CAAkB,SAAA,GAAc,GAClC0G,GAAAA,GAAoB,CAAC,EAEnBmF,CAAAA,GAAiB7L,CAAAA,CAAkB,UACrCuI,CAAAA,GAAmBsD,CAAY,EAE7BrD,CAAAA,GAAa,MAAA,EACfG,GAAmB,CACjB,SAAA,CAAW,EACX,QAAA,CAAUkD,CACZ,CAAC,EAEL,CAAA,CACA,CACE7L,EAAkB,SAAA,CAClBA,CAAAA,CAAkB,SAClB0G,GAAAA,CACA6B,CAAAA,CACAC,EACAG,EACF,CACF,EAEMjK,EAAAA,CAAc+G,EAAAA,CAA2B,CAC7C,OAAA,CAAS,CAAA,CAAQxH,GAAgB,OAAA,CACjC,OAAA,CAAS,EAAQA,CAAAA,EAAgB,OAAA,CACjC,aAAA,CAAeA,CAAAA,EAAgB,aAAA,CAC/B,UAAA,CAAY,IAAMA,CAAAA,EAAgB,UAAA,GAClC,OAAA,CAAUkI,CAAAA,EAAU,CAClBmC,CAAAA,GAAgB,CACd,MAAAnC,CAAAA,CACA,MAAA,CAAQ,gBACV,CAAC,EACH,CACF,CAAC,CAAA,CAED,OAAO,CACL,kBAAA,CAAAjG,EAAAA,CACA,mBAAA,CAAAC,EAAAA,CACA,2BAAA,CAAAC,GACA,0BAAA,CAAAC,EAAAA,CACA,iBAAAuL,EAAAA,CACA,YAAA,CAAAxN,EACA,aAAA,CAAA0M,EAAAA,CACA,aAAAS,EAAAA,CACA,WAAA,CAAA7M,GACA,KAAA,CAAAyD,EAAAA,CACA,qBAAsB,CAAA,CACtB,iBAAA,CAAmB,EACnB,kBAAA,CAAA0I,EACF,CACF,CCldO,SAASiB,EAAAA,CAAwB,CACtC,YAAA,CAAAC,CAAAA,CACA,SAAAC,CAAAA,CACA,KAAA,CAAAC,CACF,CAAA,CAIG,CACD,GAAM,CAACC,CAAAA,CAAmBC,CAAoB,CAAA,CAAUC,CAAA,CAAA,QAAA,CAASL,CAAY,CAAA,CACvEM,CAAAA,CAAeJ,CAAAA,EAASC,CAAAA,CACxBI,CAAAA,CAAwBF,CAAA,CAAA,MAAA,CAAOC,CAAY,CAAA,CAE3CD,CAAA,CAAA,SAAA,CAAU,IAAM,CACpBE,CAAAA,CAAgB,QAAUD,EAC5B,CAAA,CAAG,CAACA,CAAY,CAAC,CAAA,CAEjB,IAAME,CAAAA,CAAiBH,CAAA,CAAA,WAAA,CACpBjC,GAAwB,CACvB,IAAMC,EACJ,OAAOD,CAAAA,EAAY,UAAA,CACdA,CAAAA,CAA8BmC,CAAAA,CAAgB,OAAO,EACtDnC,CAAAA,CACNmC,CAAAA,CAAgB,QAAUlC,CAAAA,CAE1B4B,CAAAA,GAAW5B,CAAS,CAAA,CAEhB6B,CAAAA,GAAU,QACZE,CAAAA,CAAqB/B,CAAS,EAElC,CAAA,CACA,CAAC4B,EAAUC,CAAK,CAClB,EAEA,OAAO,CAACI,CAAAA,CAAcE,CAAQ,CAChC,CC5BA,IAAMC,EAAAA,CAAiB,8BAAA,CACjBC,GAAkB,CAAA,CAClBC,EAAAA,CAA+C,CACnD,YAAA,CACA,QAAA,CACA,QACA,SAAA,CACA,SACF,EAEO,SAASC,EAAAA,CACdC,CAAAA,CACsB,CACtB,IAAM/M,CAAAA,CAASgN,GAAyBD,CAAK,CAAA,CAC7C,GAAI,CAAC/M,CAAAA,CACH,OAAO,EAAC,CAGV,IAAMiN,CAAAA,CAAUC,EAAAA,CAAelN,CAAM,CAAA,CACrC,GAAI,CAACiN,CAAAA,CACH,OAAO,EAAC,CAEV,IAAME,CAAAA,CAAaC,EAAAA,CAAcpN,CAAAA,CAAO,GAAG,EAEvCoM,CAAAA,CACJ,GAAI,CACFA,CAAAA,CAAQa,CAAAA,CAAQ,QAAQE,CAAU,EACpC,OAAS7G,CAAAA,CAAO,CACd,OAAAtG,CAAAA,CAAO,OAAA,GAAU,CAAE,KAAA,CAAAsG,CAAAA,CAAO,UAAW,MAAO,CAAC,CAAA,CACtC,EACT,CACA,GAAI,CAAC8F,CAAAA,CACH,OAAO,EAAC,CAGV,IAAIiB,CAAAA,CACJ,GAAI,CACFA,CAAAA,CAAAA,CAAUrN,CAAAA,CAAO,aAAe,IAAA,CAAK,KAAA,EAAOoM,CAAK,EACnD,CAAA,MAAS9F,EAAO,CACd,OAAAtG,CAAAA,CAAO,OAAA,GAAU,CAAE,KAAA,CAAAsG,EAAO,SAAA,CAAW,aAAc,CAAC,CAAA,CAC7C,EACT,CAEA,IAAMgH,EAAgBtN,CAAAA,CAAO,OAAA,EAAW4M,GACpCW,CAAAA,CACJ,GAAIC,GAAqBH,CAAM,CAAA,CAC7B,GAAIA,CAAAA,CAAO,OAAA,GAAYC,CAAAA,CACrBC,CAAAA,CAAYF,CAAAA,CAAO,KAAA,CAAA,KAAA,GACVrN,EAAO,OAAA,CAChB,GAAI,CACFuN,CAAAA,CAAYvN,CAAAA,CAAO,QACjB,CACE,OAAA,CAASqN,EAAO,OAAA,CAChB,KAAA,CAAOA,EAAO,KAChB,CAAA,CACAC,CACF,EACF,CAAA,MAAShH,EAAO,CACd,OAAAtG,CAAAA,CAAO,OAAA,GAAU,CAAE,KAAA,CAAAsG,EAAO,SAAA,CAAW,SAAU,CAAC,CAAA,CACzC,EACT,CAAA,KAEA,OAAO,EAAC,CAAA,KAKViH,CAAAA,CAAYF,CAAAA,CAGd,OAAOI,EAAAA,CACLC,EAAAA,CAA6BH,CAAS,CAAA,CACtCvN,CAAAA,CAAO,MACT,CACF,CAEO,SAAS2N,EAAAA,CACdZ,CAAAA,CACA,CACA,IAAM/M,CAAAA,CAASgN,EAAAA,CAAyBD,CAAK,CAAA,CAC7C,GAAI,CAAC/M,CAAAA,CACH,OAAO,OAGT,IAAMiN,CAAAA,CAAUC,GAAelN,CAAM,CAAA,CACrC,GAAI,CAACiN,CAAAA,CACH,OAAO,MAAA,CAGT,GAAI,CACF,OAAAA,CAAAA,CAAQ,UAAA,CAAWG,GAAcpN,CAAAA,CAAO,GAAG,CAAC,CAAA,CACrC,CAAA,CACT,OAASsG,CAAAA,CAAO,CACd,OAAAtG,CAAAA,CAAO,OAAA,GAAU,CAAE,KAAA,CAAAsG,CAAAA,CAAO,UAAW,QAAS,CAAC,EACxC,KACT,CACF,CAEO,SAASsH,EAAAA,CAA+B,CAC7C,IAAAC,CAAAA,CACA,WAAA,CAAAC,EACA,KAAA,CAAAC,CACF,EAIG,CACD,IAAM/N,EAAS8N,CAAAA,EAAed,EAAAA,CAAyBa,CAAG,CAAA,CACpDZ,CAAAA,CAAUjN,EAASkN,EAAAA,CAAelN,CAAM,EAAI,MAAA,CAC5CmN,CAAAA,CAAanN,CAAAA,CAASoN,EAAAA,CAAcpN,CAAAA,CAAO,GAAG,EAAI,MAAA,CAClDgO,CAAAA,CAAUhO,GAAQ,OAAA,EAAW4M,EAAAA,CAC7BqB,EAAa,IAAA,CAAK,GAAA,CAAI,EAAGjO,CAAAA,EAAQ,UAAA,EAAc,GAAG,CAAA,CAClDkO,CAAAA,CAAgBT,GAAwBM,CAAAA,CAAO/N,CAAAA,EAAQ,MAAM,CAAA,CAC7DmO,CAAAA,CAAmBC,CAAA,CAAA,OAAA,CAAQ,IAAM,CACrC,GAAI,CAACpO,CAAAA,CACH,OAAO,CAAE,KAAA,CAAO,MAAU,EAG5B,GAAI,CACF,IAAMqO,CAAAA,CAAuC,CAC3C,QAAAL,CAAAA,CACA,KAAA,CAAOE,CACT,CAAA,CACA,OAAO,CACL,KAAA,CAAA,CAAQlO,CAAAA,CAAO,SAAA,EAAa,IAAA,CAAK,SAAA,EAAWqO,CAAO,CACrD,CACF,CAAA,MAAS/H,EAAO,CACd,OAAO,CAAE,KAAA,CAAAA,CAAAA,CAAO,MAAO,MAAU,CACnC,CACF,CAAA,CAAG,CAACtG,EAAQkO,CAAAA,CAAeF,CAAO,CAAC,CAAA,CAC7B3H,CAAAA,CAAqB+H,CAAA,CAAA,cAAA,CACzB,CACE9H,CAAAA,CACAgI,CAAAA,GACG,CACHtO,CAAAA,EAAQ,OAAA,GAAU,CAAE,KAAA,CAAAsG,CAAAA,CAAO,UAAAgI,CAAU,CAAC,EACxC,CACF,CAAA,CAEMF,YAAU,IAAM,CAChBD,EAAW,KAAA,GAAU,MAAA,EACvB9H,EAAa8H,CAAAA,CAAW,KAAA,CAAO,WAAW,EAE9C,CAAA,CAAG,CAACA,EAAW,KAAK,CAAC,EAEfC,CAAA,CAAA,SAAA,CAAU,IAAM,CACpB,GAAI,CAACnB,CAAAA,EAAW,CAACE,CAAAA,EAAcgB,CAAAA,CAAW,QAAU,MAAA,CAClD,OAGF,IAAMI,CAAAA,CAAQ,IAAM,CAClB,GAAI,CACF,GAAItB,CAAAA,CAAQ,OAAA,CAAQE,CAAU,IAAMgB,CAAAA,CAAW,KAAA,CAC7C,OAEFlB,CAAAA,CAAQ,OAAA,CAAQE,EAAYgB,CAAAA,CAAW,KAAK,EAC9C,CAAA,MAAS7H,CAAAA,CAAO,CACdD,CAAAA,CAAaC,CAAAA,CAAO,OAAO,EAC7B,CACF,EAEA,GAAI2H,CAAAA,GAAe,CAAA,CAAG,CACpBM,CAAAA,EAAM,CACN,MACF,CAEA,IAAMC,EAAU,UAAA,CAAW,UAAA,CAAWD,EAAON,CAAU,CAAA,CACvD,OAAO,IAAM,CACX,WAAW,YAAA,CAAaO,CAAO,EACjC,CACF,CAAA,CAAG,CAACP,CAAAA,CAAYE,CAAAA,CAAW,KAAA,CAAOlB,CAAAA,CAASE,CAAU,CAAC,EACxD,CAEA,SAASH,GACPD,CAAAA,CACwC,CACxC,GAAKA,CAAAA,CAIL,OAAO,OAAOA,CAAAA,EAAU,QAAA,CAAW,CAAE,GAAA,CAAKA,CAAM,EAAIA,CACtD,CAEA,SAASG,EAAAA,CACPlN,CAAAA,CACyC,CACzC,GAAIA,CAAAA,CAAO,OAAA,CACT,OAAOA,CAAAA,CAAO,OAAA,CAGhB,GAAI,EAAA,OAAO,MAAA,CAAW,KAItB,GAAI,CACF,OAAO,MAAA,CAAO,YAChB,OAASsG,CAAAA,CAAO,CACdtG,EAAO,OAAA,GAAU,CAAE,MAAAsG,CAAAA,CAAO,SAAA,CAAW,MAAO,CAAC,CAAA,CAC7C,MACF,CACF,CAEA,SAAS8G,GAAcS,CAAAA,CAAa,CAClC,OAAO,CAAA,EAAGlB,EAAc,GAAGkB,CAAG,CAAA,CAChC,CAEA,SAASL,EAAAA,CACPpB,EAC+C,CAC/C,OACEqC,GAASrC,CAAK,CAAA,EACd,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAKA,EAAO,SAAS,CAAA,EACrD,OAAO,SAAA,CAAU,cAAA,CAAe,KAAKA,CAAAA,CAAO,OAAO,CAEvD,CAEA,SAASqB,GACPM,CAAAA,CACAW,CAAAA,CACA,CACA,IAAMhK,CAAAA,CAAW,IAAI,GAAA,CAAIgK,CAAAA,EAAU7B,EAAU,CAAA,CACvCnG,CAAAA,CAA+B,GAErC,IAAA,IAAWiI,CAAAA,IAAS9B,GACdnI,CAAAA,CAAS,GAAA,CAAIiK,CAAK,CAAA,EAAKZ,CAAAA,CAAMY,CAAK,CAAA,GAAM,MAAA,EAC1C,OAAO,MAAA,CAAOjI,CAAAA,CAAQ,CAAE,CAACiI,CAAK,EAAGZ,CAAAA,CAAMY,CAAK,CAAE,CAAC,CAAA,CAInD,OAAOjI,CACT,CAEA,SAASgH,GAA6BtB,CAAAA,CAAsC,CAC1E,GAAI,CAACqC,EAAAA,CAASrC,CAAK,CAAA,CACjB,OAAO,GAGT,IAAM2B,CAAAA,CAA8B,EAAC,CAC/Ba,CAAAA,CAAaC,GAAsBzC,CAAAA,CAAM,UAAU,CAAA,CACrDwC,CAAAA,GACFb,CAAAA,CAAM,UAAA,CAAaa,GAErB,IAAME,CAAAA,CAASC,GAAqB3C,CAAAA,CAAM,MAAM,EAC5C0C,CAAAA,GACFf,CAAAA,CAAM,OAASe,CAAAA,CAAAA,CAEjB,IAAME,EAAQC,EAAAA,CAAoB7C,CAAAA,CAAM,KAAK,CAAA,CAI7C,GAHI4C,IACFjB,CAAAA,CAAM,KAAA,CAAQiB,CAAAA,CAAAA,CAEZP,EAAAA,CAASrC,CAAAA,CAAM,OAAO,EAAG,CAC3B,IAAM8C,EAAOD,EAAAA,CAAoB7C,CAAAA,CAAM,QAAQ,IAAI,CAAA,EAAK,EAAC,CACnD+C,CAAAA,CAAQF,GAAoB7C,CAAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAK,GAC1D2B,CAAAA,CAAM,OAAA,CAAU,CAAE,IAAA,CAAAmB,CAAAA,CAAM,KAAA,CAAAC,CAAM,EAChC,CACA,OAAIC,EAAAA,CAAmBhD,CAAAA,CAAM,OAAO,CAAA,GAClC2B,CAAAA,CAAM,QAAU3B,CAAAA,CAAM,OAAA,CAAA,CAGjB2B,CACT,CAEA,SAASc,GAAsBzC,CAAAA,CAAgB,CAC7C,GAAKqC,EAAAA,CAASrC,CAAK,CAAA,CAInB,OAAO,MAAA,CAAO,WAAA,CACZ,OAAO,OAAA,CAAQA,CAAK,EAAE,MAAA,CACnBiD,CAAAA,EAAsC,OAAOA,CAAAA,CAAM,CAAC,GAAM,SAC7D,CACF,CACF,CAEA,SAASN,GAAqB3C,CAAAA,CAAgB,CAC5C,GAAKqC,EAAAA,CAASrC,CAAK,CAAA,CAInB,OAAO,MAAA,CAAO,WAAA,CACZ,OAAO,OAAA,CAAQA,CAAK,EAAE,MAAA,CACnBiD,CAAAA,EACC,OAAOA,CAAAA,CAAM,CAAC,GAAM,QAAA,EACpB,MAAA,CAAO,SAASA,CAAAA,CAAM,CAAC,CAAC,CAAA,EACxBA,CAAAA,CAAM,CAAC,CAAA,EAAK,CAChB,CACF,CACF,CAEA,SAASJ,GAAoB7C,CAAAA,CAAgB,CAC3C,GAAK,KAAA,CAAM,OAAA,CAAQA,CAAK,CAAA,CAIxB,OAAOA,EAAM,MAAA,CAAQkD,CAAAA,EAAyB,OAAOA,CAAAA,EAAS,QAAQ,CACxE,CAEA,SAASF,GAAmBhD,CAAAA,CAA2C,CACrE,OACEA,CAAAA,GAAU,SAAA,EACVA,CAAAA,GAAU,eACVA,CAAAA,GAAU,UAEd,CAEA,SAASqC,EAAAA,CAASrC,EAAkD,CAClE,OAAO,EAAQA,CAAAA,EAAU,OAAOA,GAAU,QAAA,EAAY,CAAC,MAAM,OAAA,CAAQA,CAAK,CAC5E,CC1TA,IAAMmD,EAAAA,CAAoB,OAAO,MAAA,CAAOC,CAAsC,EAC3E,KAAA,EAAM,CACN,KAAK,CAACC,CAAAA,CAAOC,CAAAA,GAAWD,CAAAA,CAAQC,CAAM,CAAA,CAElC,SAASC,EAAAA,CACdC,CAAAA,CACA,CACA,IAAMC,CAAAA,CAAiBC,SAAO,CAAC,CAAA,CACzB,CAACC,CAAAA,CAAOC,CAAQ,CAAA,CAAUF,WAAS,CAAC,CAAA,CAE1C,OAAMA,CAAA,CAAA,SAAA,CAAU,IAAM,CACpB,IAAMG,CAAAA,CAAUL,EAAa,OAAA,CAC7B,GAAI,CAACK,CAAAA,CACH,OAGF,IAAMC,CAAAA,CAAc,CAACC,EAAaF,CAAAA,CAAQ,WAAA,GAAgB,CACxD,IAAMG,CAAAA,CAAYC,EAAAA,CAAgCF,CAAU,CAAA,CACxDC,CAAAA,GAAcP,EAAS,OAAA,GAI3BA,CAAAA,CAAS,QAAUO,CAAAA,CACnBJ,CAAAA,CAASI,CAAS,CAAA,EACpB,CAAA,CAIA,GAFAF,CAAAA,EAAY,CAER,OAAO,cAAA,CAAmB,GAAA,CAC5B,OAGF,IAAM1J,CAAAA,CAAW,IAAI,cAAA,CAAgBC,CAAAA,EAAY,CAC/C,IAAM4I,CAAAA,CAAQ5I,CAAAA,CAAQ,CAAC,CAAA,CACvByJ,CAAAA,CAAYb,EAAQiB,EAAAA,CAA4BjB,CAAK,EAAI,MAAS,EACpE,CAAC,CAAA,CAED,OAAA7I,EAAS,OAAA,CAAQyJ,CAAO,EAEjB,IAAM,CACXzJ,CAAAA,CAAS,UAAA,GACX,CACF,EAAG,CAACoJ,CAAY,CAAC,CAAA,CAEVG,CACT,CAEO,SAASM,EAAAA,CAAgCN,EAAe,CAC7D,GAAIA,GAAS,CAAA,CACX,SAGF,IAAIQ,CAAAA,CAAS,EACb,IAAA,IAAWC,CAAAA,IAAmBjB,EAAAA,CAAmB,CAC/C,GAAIQ,CAAAA,CAAQS,EACV,MAEFD,CAAAA,CAASC,EACX,CAEA,OAAOD,CACT,CAEA,SAASD,GAA4BjB,CAAAA,CAA4B,CAC/D,IAAMoB,CAAAA,CAA0BpB,CAAAA,CAAM,eAChCqB,CAAAA,CAAgB,KAAA,CAAM,QAAQD,CAAc,CAAA,CAC9CA,CAAAA,CAAe,CAAC,CAAA,CAChBA,CAAAA,CAGJ,OAFmBE,EAAAA,CAAcD,CAAI,GAEhBrB,CAAAA,CAAM,WAAA,CAAY,KACzC,CAEA,SAASsB,GAAcvE,CAAAA,CAAgB,CACrC,GAAI,OAAOA,CAAAA,EAAU,UAAYA,CAAAA,GAAU,IAAA,CACzC,OAGF,IAAM+D,CAAAA,CAAc/D,CAAAA,CAAmC,UAAA,CACvD,OAAO,OAAO+D,GAAe,QAAA,CAAWA,CAAAA,CAAa,MACvD,CCnDO,SAASS,GAAyB,CACvC,aAAA,CAAA7P,EACA,WAAA,CAAA8P,CAAAA,CACA,cAAAC,CAAAA,CACA,YAAA,CAAAC,EACA,cAAA,CAAAC,CAAAA,CACA,YAAAlD,CAAAA,CACA,gBAAA,CAAAmD,CAAAA,CACA,OAAA,CAAAjN,CAAAA,CACA,IAAA,CAAAkN,EACA,OAAA,CAAAtO,CAAAA,CACA,mBAAA5E,GAAAA,CACA,2BAAA,CAAAmT,EACA,QAAA,CAAAC,CAAAA,CACA,SAAAC,CAAAA,CACA,UAAA,CAAAC,IACA,YAAA,CAAAC,CAAAA,CACA,UAAAC,CAAAA,CACA,eAAA,CAAAC,EACA,eAAA,CAAAnJ,CAAAA,CACA,qBAAA,CAAAoJ,CAAAA,CACA,mBAAA,CAAAC,GAAAA,CACA,sBAAA9P,CAAAA,CACA,oBAAA,CAAA+P,EACA,wBAAA,CAAAC,CAAAA,CACA,gBAAA/P,CAAAA,CACA,gBAAA,CAAAgQ,EACA,iBAAA,CAAAjL,CAAAA,CACA,qBAAAkL,CAAAA,CACA,sBAAA,CAAAhQ,EACA,eAAA,CAAAiQ,GAAAA,CACA,0BAAAhQ,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,SAAA,CAAAkB,GAAAA,CACA,QAAA,CAAAwF,EACA,cAAA,CAAAlK,CAAAA,CACA,aAAAwT,CAAAA,CACA,kBAAA,CAAAtR,EACA,gBAAA,CAAAyB,CAAAA,CACA,eAAAC,EAAAA,CACA,OAAA,CAAA6P,GACA,sBAAA,CAAAC,EAAAA,CACA,wBAAA1P,EAAAA,CACA,iBAAA,CAAAC,GACA,QAAA,CAAAG,EAAAA,CACA,YAAA,CAAA+M,CACF,CAAA,CA8CG,CACD,IAAMwC,EAAAA,CAA0BC,CAAA,CAAA,OAAA,CAC9B,IAAMvE,CAAAA,GAAgBkD,CAAAA,CAAiB,CAAE,GAAA,CAAKA,CAAe,EAAI,MAAA,CAAA,CACjE,CAACA,EAAgBlD,CAAW,CAC9B,EACMwE,EAAAA,CAA6BD,CAAA,CAAA,OAAA,CACjC,IAAMvF,EAAAA,CAAyBsF,EAAiB,CAAA,CAChD,CAACA,EAAiB,CACpB,EACM,CAACG,EAAAA,CAAiBzJ,EAAkB,CAAA,CAClCuJ,CAAA,CAAA,QAAA,CAA0B,CAC9B,SAAA,CAAWd,CAAAA,EAAc,YAAY,SAAA,EAAa,CAAA,CAClD,SACEA,CAAAA,EAAc,UAAA,EAAY,UAC1B5Q,CAAAA,CAAmB,CAAC,GACpB,EACJ,CAAC,CAAA,CACG,CAAC+G,GAAAA,CAAgBkB,EAAiB,EACtCqD,EAAAA,CAAmC,CACjC,MAAOiG,EAAAA,CACP,QAAA,CAAUF,IACV,YAAA,CAAc,IAAMT,GAAc,OAAA,EAAW,EAC/C,CAAC,CAAA,CACG,CAAC9T,EAAAA,CAAqBqB,EAAsB,EAAImN,EAAAA,CAEpD,CACE,KAAA,CAAOgG,CAAAA,CACP,QAAA,CAAUF,CAAAA,CACV,aAAc,IAAMR,CAAAA,EAAc,cAAgB,EACtD,CAAC,CAAA,CACK,CAACiB,GAAyBC,EAA0B,CAAA,CACxDxG,GAAsC,CACpC,KAAA,CAAOgF,EACP,QAAA,CAAUY,CAAAA,CACV,aAAc,IACZN,CAAAA,EAAc,gBAAA,EACde,EAAAA,CAAqB,UAAA,EACrB,EACJ,CAAC,CAAA,CACG,CAACjL,CAAAA,CAAsBqL,EAAuB,EAClDzG,EAAAA,CAAyC,CACvC,MAAOlL,CAAAA,CACP,QAAA,CAAU2Q,EACV,YAAA,CAAc,IAAMH,GAAc,aAAA,EAAiB,EACrD,CAAC,CAAA,CACG,CAAC9J,EAAAA,CAAiBkL,EAAkB,CAAA,CACxC1G,GAAoC,CAClC,KAAA,CAAOmF,EACP,QAAA,CAAUU,CAAAA,CACV,aAAc,IAAMP,CAAAA,EAAc,QAAA,EAAY,EAChD,CAAC,EACG,CAACjK,EAAAA,CAAoBsL,EAAqB,CAAA,CAC9C3G,EAAAA,CAAuC,CACrC,KAAA,CAAO4E,CAAAA,CACP,QAAA,CAAUc,GAAAA,CACV,YAAA,CAAc,IACZJ,GAAc,WAAA,EAAee,EAAAA,CAAqB,OAAS,EAC/D,CAAC,CAAA,CACG,CAAC/K,GAAsBsL,EAAuB,CAAA,CAClD5G,GAAyC,CACvC,KAAA,CAAO6E,EACP,QAAA,CAAUjP,CAAAA,CACV,aAAc,IACZ0P,CAAAA,EAAc,aAAA,EACde,EAAAA,CAAqB,OAAA,EACrBQ,CAAAA,CAAwB9O,CAAO,CACnC,CAAC,EACG,CAACwD,EAAAA,CAAqBuL,EAAsB,CAAA,CAChD9G,EAAAA,CAAwC,CACtC,KAAA,CAAO8E,CAAAA,CACP,SAAUa,CAAAA,CACV,YAAA,CAAc,IACZL,CAAAA,EAAc,YAAA,EAAgBe,GAAqB,MAAA,EAAU,EACjE,CAAC,CAAA,CACG,CAACU,GAAiBC,EAAkB,CAAA,CAAIhH,GAE5C,CACA,KAAA,CAAOpJ,GACP,QAAA,CAAUZ,CAAAA,CACV,aAAc,IAAMsP,CAAAA,EAAc,UAAY,OAChD,CAAC,EACK,CAAC2B,EAAAA,CAAuBC,EAAwB,CAAA,CACpDlH,EAAAA,CAA8B,CAC5B,KAAA,CAAO5J,EAAAA,CACP,QAAA,CAAUN,EACV,YAAA,CAAc,IAAMwP,GAAc,cAAA,EAAkB,KACtD,CAAC,CAAA,CACG,CAAC6B,GAAgBC,EAAiB,CAAA,CACtCpH,GAAuC,CACrC,KAAA,CAAOrJ,EACP,QAAA,CAAUd,CAAAA,CACV,aAAc,IACZyP,CAAAA,EAAc,OAAA,EACde,EAAAA,CAAqB,OAAA,EACrB,aACJ,CAAC,CAAA,CACGgB,EAAAA,CACJ5Q,IAAqB6O,CAAAA,EAAc,YAAA,EAAgB,GAC/CgC,CAAAA,CACJ9Q,EAAAA,EAA2BhE,EAAe,iBAAA,CACtC+U,CAAAA,CAAiCrB,IAA0B,GAAA,CAC3D,CAAC9T,GAAkBoV,CAAmB,CAAA,CAAUpB,WACpDiB,EACF,CAAA,CACMI,CAAAA,CAAiB/D,EAAAA,CAA2BC,CAAY,CAAA,CACxD+D,EAAyB,CAAA,CAAQ3R,CAAAA,CACjC4R,GAAmCvB,CAAA,CAAA,MAAA,CAAOiB,EAAyB,EACnEO,EAAAA,CAAuCxB,CAAA,CAAA,cAAA,CAC1CjG,GAAkB,CACjBwH,EAAAA,CAA2B,QAAUxH,CAAAA,CACrCpK,CAAAA,GAA4BoK,CAAK,EACnC,CACF,EAEMiG,CAAA,CAAA,SAAA,CAAU,IAAM,CACpBuB,EAAAA,CAA2B,OAAA,CAAUN,EAAAA,CAGrCG,EAAoBH,EAAyB,EAC/C,EAAG,CAACA,EAAyB,CAAC,CAAA,CAExBjB,CAAA,CAAA,SAAA,CAAU,IAAM,CASpB,GARI,CAACsB,CAAAA,EAIDtV,EAAAA,GAAqBiV,IAIrBjV,EAAAA,GAAqBuV,EAAAA,CAA2B,QAClD,OAGF,IAAMpF,CAAAA,CAAU,MAAA,CAAO,UAAA,CAAW,IAAM,CACtCqF,EAAAA,CAA+BxV,EAAgB,EACjD,CAAA,CAAGmV,CAA8B,EAEjC,OAAO,IAAM,CACX,MAAA,CAAO,YAAA,CAAahF,CAAO,EAC7B,CACF,CAAA,CAAG,CACDmF,CAAAA,CACAtV,EAAAA,CACAmV,EACAF,EACF,CAAC,CAAA,CAED,IAAMnT,EAAAA,CAA0BkS,CAAA,CAAA,OAAA,CAC9B,KAAO,CACL,SAAA,CAAWlP,KAAaoP,EAAAA,CAAgB,SAAA,CACxC,SAAU5J,CAAAA,EAAY4J,EAAAA,CAAgB,QACxC,CAAA,CAAA,CACA,CACEA,GAAgB,SAAA,CAChBA,EAAAA,CAAgB,SAChBpP,GAAAA,CACAwF,CACF,CACF,CAAA,CACMjK,EAAAA,CAA0B,IAAA,CAAK,GAAA,CACnC,CAAA,CACA+S,CAAAA,EAAmB,KAAK,GAAA,CAAI,CAAA,CAAGtR,GAAkB,QAAQ,CAC3D,EACM4H,EAAAA,CAAoBoJ,CAAAA,CACtB9S,GACA,EAAA,CACEyV,EAAAA,CAA6BzB,cAChC0B,CAAAA,EAAmC,CAClCd,GAAmBc,CAAY,EACjC,EACA,CAACd,EAAkB,CACrB,CAAA,CACMe,EAAAA,CAAmC3B,CAAA,CAAA,WAAA,CACtC4B,GAAgC,CAC/Bd,EAAAA,CAAyBc,CAAkB,EAC7C,CAAA,CACA,CAACd,EAAwB,CAC3B,EACMe,EAAAA,CAA4B7B,CAAA,CAAA,WAAA,CAC/B8B,GAAkC,CACjCd,EAAAA,CAAkBc,CAAW,EAC/B,CAAA,CACA,CAACd,EAAiB,CACpB,CAAA,CACMe,EAAAA,CAAsC/B,CAAA,CAAA,WAAA,CAAY,IAAM,CAC5DxL,CAAAA,GAAoB,CAAC,EACjB1D,GAAAA,GAAc,MAAA,EAChB2F,GAAoB5D,CAAAA,EAClBA,CAAAA,CAAQ,YAAc,CAAA,CAAIA,CAAAA,CAAU,CAAE,GAAGA,CAAAA,CAAS,UAAW,CAAE,CACjE,EAEJ,CAAA,CAAG,CAAC2B,CAAAA,CAAmB1D,GAAS,CAAC,CAAA,CAC3BkR,GAA2BhC,CAAA,CAAA,MAAA,CAAO,CACtC,cAAehL,CAAAA,CACf,iBAAA,CAAAU,EACF,CAAC,CAAA,CAEKsK,YAAU,IAAM,CACpB,IAAMiC,CAAAA,CAAWD,EAAAA,CAAmB,QAC9BE,EAAAA,CAAiBD,CAAAA,CAAS,gBAAkBjN,CAAAA,CAC5CmN,EAAAA,CACJF,CAAAA,CAAS,iBAAA,GAAsBvM,EAAAA,CACjCsM,EAAAA,CAAmB,QAAU,CAC3B,aAAA,CAAehN,EACf,iBAAA,CAAAU,EACF,EAEI,CAAAO,CAAAA,GAIA,CAACiM,EAAAA,EAAkB,CAACC,IAIxBJ,EAAAA,EAA8B,EAChC,EAAG,CACD/M,CAAAA,CACAU,GACAO,CAAAA,CACA8L,EACF,CAAC,CAAA,CAEDxG,EAAAA,CAA+B,CAC7B,YAAawE,EAAAA,CACb,KAAA,CAAO,CACL,UAAA,CAAYnB,CAAAA,CAAmB,OAAYuB,EAAAA,CAC3C,MAAA,CACEzB,IAAiB,MAAA,CAAYvJ,EAAAA,CAAsB,OACrD,KAAA,CAAOqJ,CAAAA,CAAc,OAAYvJ,EAAAA,CACjC,OAAA,CAASwJ,EAAgB,MAAA,CAAYvJ,EAAAA,CACrC,OAAA,CAAS3E,CAAAA,CAAU,MAAA,CAAYwQ,EACjC,CACF,CAAC,CAAA,CACD,IAAMqB,EAAAA,CAAmCpC,CAAA,CAAA,OAAA,CAAyB,IACzD/I,CAAAA,CAAwBtF,CAAO,CAAA,CAAE,MAAA,CACtC,CAAC4K,CAAAA,CAAY,CAAE,MAAA,CAAAlJ,EAAAA,CAAQ,MAAA6D,EAAM,CAAA,GAAM,CACjC,IAAMzG,EAAAA,CAAW0G,CAAAA,CAAY9D,EAAAA,CAAQ6D,EAAK,CAAA,CAC1C,OAAImL,CAAAA,CAAyBhP,EAAAA,CAAO,MAAM,MAAA,CAAQgO,CAAc,IAC9D9E,CAAAA,CAAW9L,EAAQ,EAAI,KAAA,CAAA,CAElB8L,CACT,EACA,EACF,EACC,CAAC5K,CAAAA,CAAS0P,CAAc,CAAC,CAAA,CACtB9L,EAAAA,CAAkCyK,CAAA,CAAA,OAAA,CAAyB,KACxD,CACL,GAAGG,EAAAA,CACH,GAAGiC,EACL,CAAA,CAAA,CACC,CAACjC,GAAyBiC,EAA0B,CAAC,EAClDE,EAAAA,CAAoBtC,CAAA,CAAA,OAAA,CACxB,IACEnB,CAAAA,CAAK,MAAA,CAAQtM,GACXgQ,GAAAA,CAAahQ,CAAAA,CAAK0M,IAAY4B,EAAqB,CACrD,CAAA,CACF,CAACA,EAAAA,CAAuBhC,CAAAA,CAAMI,GAAU,CAC1C,CAAA,CACMtS,GAA6BwS,CAAAA,EAAamD,EAAAA,CAAY,SAAW,CAAA,CACjEE,EAAAA,CAAoBxC,UACxB,IAAMyC,CAAAA,CAAkCpW,EAAuB,CAAA,CAC/D,CAACA,EAAuB,CAC1B,CAAA,CACMsK,GAAYhK,EAAAA,CACd6V,EAAAA,CACAF,EAAAA,CACE1L,EAAAA,CAAsBoJ,CAAA,CAAA,WAAA,CAC1B,CAACzN,EAAY2E,EAAAA,GACP1E,CAAAA,CAAsBD,CAAG,CAAA,CACpBmQ,CAAAA,CAAyBxL,EAAK,CAAA,CAGhC8H,CAAAA,CAASzM,EAAK2E,EAAK,CAAA,CAE5B,CAAC8H,CAAQ,CACX,EACM2D,EAAAA,CACJhX,GAAAA,EAAAA,CACCoE,GAAkB,MAAA,EAAU,CAAA,EAAK,CAAA,EAClC,MAAA,CAAO,MAAA,CAAO3E,EAAmB,EAAE,IAAA,CAAK,OAAO,EAC3CwX,EAAAA,CAAgB5C,CAAA,CAAA,OAAA,CAAQ,IACvB2C,EAAAA,CAIE,IAAI,IACTL,EAAAA,CAAY,GAAA,CAAI,CAAC/P,CAAAA,CAAK2E,EAAAA,GAAU,CAAC8H,CAAAA,CAASzM,CAAAA,CAAK2E,EAAK,CAAA,CAAG3E,CAAG,CAAC,CAC7D,CAAA,CALS,IAAI,IAMZ,CAACyM,CAAAA,CAAU2D,GAA2BL,EAAW,CAAC,EAC/CxS,EAAAA,CAAqBkQ,CAAA,CAAA,OAAA,CAAQ,IAC5B2C,EAAAA,CAIE,MAAA,CAAO,QAAQvX,EAAmB,CAAA,CACtC,OAAO,CAAC,EAAGiH,CAAQ,CAAA,GAAMA,CAAQ,CAAA,CACjC,GAAA,CAAI,CAAC,CAACrB,CAAK,CAAA,GAAM4R,GAAQ,GAAA,CAAI5R,CAAK,CAAC,CAAA,CACnC,MAAA,CAAQuB,GAAsB,CAAA,CAAQA,CAAI,EANpC,EAAC,CAOT,CAACnH,EAAAA,CAAqBwX,EAAAA,CAASD,EAAyB,CAAC,CAAA,CAE5D,OAAO,CACL,cAAA,CAAAtB,CAAAA,CACA,qBAAArM,CAAAA,CACA,kBAAA,CAAAC,GACA,oBAAA,CAAAC,EAAAA,CACA,oBAAAC,EAAAA,CACA,uBAAA,CAAAgL,EAAAA,CACA,cAAA,CAAAY,EAAAA,CACA,eAAA,CAAA3L,GACA,iBAAA,CAAAtH,EAAAA,CACA,oBAAA1C,EAAAA,CACA,qBAAA,CAAAyV,GACA,cAAA,CAAAxL,GAAAA,CACA,eAAA,CAAAsL,EAAAA,CACA,yBAAA,CAAApL,EAAAA,CACA,kBAAAG,EAAAA,CACA,mBAAA,CAAAmM,GACA,0BAAA,CAAAF,EAAAA,CACA,qBAAAF,EAAAA,CACA,gBAAA,CAAAzV,GACA,uBAAA,CAAAK,EAAAA,CACA,gCAAA6U,CAAAA,CACA,YAAA,CAAApR,GACA,uBAAA,CAAAuQ,EAAAA,CACA,sBAAAE,EAAAA,CACA,uBAAA,CAAAC,EAAAA,CACA,0BAAA,CAAAJ,EAAAA,CACA,kBAAA,CAAAE,GACA,sBAAA,CAAA7T,EAAAA,CACA,kBAAA8J,EAAAA,CACA,oBAAA,CAAsBmK,GACtB,kBAAA,CAAAjK,EAAAA,CACA,oBAAA2K,CAAAA,CACA,0BAAA,CAAAzU,GACA,SAAA,CAAAgK,EAAAA,CACA,cAAAC,EAAAA,CAKA,mBAAA,CAAqB0L,GACrB,WAAA,CAAAA,EACF,CACF,CCvbA,IAAMO,EAAAA,CAA6C,CACjD,SAAA,CAAW,MAAA,CACX,SAAU,MAAA,CACV,SAAA,CAAW,OACX,WAAA,CAAa,MAAA,CACb,gBAAiB,KAAA,CACjB,iBAAA,CAAmB,MACnB,iBAAA,CAAmB,KAAA,CACnB,eAAgB,KAAA,CAChB,eAAA,CAAiB,KAAA,CACjB,eAAA,CAAiB,MAAA,CACjB,gBAAA,CAAkB,MACpB,CAAA,CAEO,SAASC,GAAuB,CACrC,OAAA,CAAAnR,EACA,YAAA,CAAA+M,CAAAA,CACA,aAAAlT,CAAAA,CACA,kBAAA,CAAAG,EACA,aAAA,CAAAoX,CAAAA,CACA,gBAAAC,CAAAA,CACA,UAAA,CAAAC,EACA,YAAA,CAAApW,CAAAA,CACA,kBAAA,CAAA8L,GACF,CAAA,CAUG,CACD,IAAMuK,CAAAA,CAAiCC,CAAA,CAAA,OAAA,CAAQ,IAAM,CACnD,IAAMC,EAAM,IAAI,GAAA,CAEhB,OAAW,CAAE,MAAA,CAAA/P,EAAQ,KAAA,CAAA6D,CAAM,IAAKD,CAAAA,CAAwBtF,CAAO,EACzD,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK0B,CAAAA,CAAQ,MAAM,GACrD+P,CAAAA,CAAI,GAAA,CAAIjM,EAAY9D,CAAAA,CAAQ6D,CAAK,CAAC,CAAA,CAItC,OAAIvL,GACFyX,CAAAA,CAAI,GAAA,CAAI,YAAY,CAAA,CAGlBJ,CAAAA,EACFI,EAAI,GAAA,CAAI,YAAY,GAGlBL,CAAAA,EAAiBvX,CAAAA,GACnB4X,CAAAA,CAAI,GAAA,CAAI,aAAa,CAAA,CAGhBA,CACT,CAAA,CAAG,CACDzR,EACAnG,CAAAA,CACAG,CAAAA,CACAoX,EACAC,CACF,CAAC,EAEKK,CAAAA,CAA4BF,CAAA,CAAA,OAAA,CAAQ,IAAM,CAC9C,IAAMG,EAAS,IAAI,GAAA,CAEnB,OAAW,CAAE,MAAA,CAAAjQ,CAAAA,CAAQ,KAAA,CAAA6D,CAAM,CAAA,GAAKD,EAAwBtF,CAAO,CAAA,CAAG,CAChE,IAAM4R,CAAAA,CAAqBC,IAA4BnQ,CAAM,CAAA,CAEzDkQ,CAAAA,GAAuB,MAAA,EACzBD,CAAAA,CAAO,GAAA,CAAInM,EAAY9D,CAAAA,CAAQ6D,CAAK,EAAGqM,CAAkB,EAE7D,CAEA,OAAOD,CACT,CAAA,CAAG,CAAC3R,CAAO,CAAC,EAEN8R,CAAAA,CAAsBN,CAAA,CAAA,OAAA,CAAQ,IAAM,CACxC,IAAMtG,EAAO,IAAI,GAAA,CACXC,EAAQ,IAAI,GAAA,CAEd4G,EAAa,CAAA,CACjB,IAAA,IAAWrQ,KAAUsF,GAAAA,CACfgL,CAAAA,CAAatQ,CAAM,CAAA,GAAM,MAAA,GAC3BwJ,CAAAA,CAAK,GAAA,CAAIxJ,CAAAA,CAAO,EAAA,CAAIqQ,CAAU,CAAA,CAC9BA,CAAAA,EAAcE,GAAoBvQ,CAAM,CAAA,CAAA,CAI5C,IAAIwQ,CAAAA,CAAc,CAAA,CAClB,QAAWxQ,CAAAA,IAAU,CAAC,GAAGsF,GAAkB,CAAA,CAAE,SAAQ,CAC/CgL,CAAAA,CAAatQ,CAAM,CAAA,GAAM,OAAA,GAC3ByJ,CAAAA,CAAM,GAAA,CAAIzJ,CAAAA,CAAO,EAAA,CAAIwQ,CAAW,CAAA,CAChCA,CAAAA,EAAeD,GAAoBvQ,CAAM,CAAA,CAAA,CAI7C,OAAO,CAAE,IAAA,CAAAwJ,EAAM,KAAA,CAAAC,CAAM,CACvB,CAAA,CAAG,CAACnE,GAAkB,CAAC,CAAA,CAEjBmL,EAAqBX,CAAA,CAAA,OAAA,CAAQ,IAAM,CACvC,GAAIF,CAAAA,GAAe,MAAA,CACjB,OAGF,IAAMc,CAAAA,CAAcpL,IAAmB,MAAA,CACpCtF,CAAAA,EAAW,CAACkE,CAAAA,CAAkBlE,CAAAA,CAAO,EAAE,CAC1C,CAAA,CAEA,OAAK0Q,CAAAA,CAAY,MAAA,EAIcA,EAAY,KAAA,CACxC1Q,CAAAA,EACC6P,EAAyB,GAAA,CAAI7P,CAAAA,CAAO,EAAE,CAAA,EACtC,MAAA,CAAO,SAAA,CAAU,eAAe,IAAA,CAAKqL,CAAAA,CAAcrL,EAAO,EAAE,CAChE,EAGI0Q,CAAAA,CAAYA,CAAAA,CAAY,OAAS,CAAC,CAAA,EAAG,GAVvC,MAYJ,CAAA,CAAG,CACDrF,CAAAA,CACAwE,CAAAA,CACAD,EACAtK,GACF,CAAC,CAAA,CAEKqL,CAAAA,CAA4Bb,CAAA,CAAA,OAAA,CAAQ,IAAM,CAC9C,IAAMC,CAAAA,CAAM,IAAI,GAAA,CAAI,CAClB,GAAGF,CAAAA,CACH,GAAG,OAAO,IAAA,CAAKxE,CAAY,CAC7B,CAAC,CAAA,CAED,OAAIoF,CAAAA,EACFV,CAAAA,CAAI,OAAOU,CAAY,CAAA,CAGlBV,CACT,CAAA,CAAG,CAAC1E,CAAAA,CAAcwE,EAA0BY,CAAY,CAAC,EAEnDG,CAAAA,CAAsBd,CAAA,CAAA,OAAA,CAAQ,IAAM,CACxC,IAAMe,EAAU,IAAI,GAAA,CAEpB,QAAW7Q,CAAAA,IAAUsF,GAAAA,CAAoB,CACvC,IAAMwL,CAAAA,CAAoB9Q,EAAO,EAAA,GAAO,YAAA,CAClC+Q,CAAAA,CAAoB/Q,CAAAA,CAAO,EAAA,GAAO,YAAA,CAClCgR,EAAkBhR,CAAAA,CAAO,EAAA,GAAO,cAChCiR,CAAAA,CACJH,CAAAA,EAAqBC,GAAqBC,CAAAA,CACtCE,CAAAA,CAAiBlR,CAAAA,CAAO,EAAA,GAAO,YAAA,CAC/BkQ,CAAAA,CAAqBF,EAAoB,GAAA,CAAIhQ,CAAAA,CAAO,EAAE,CAAA,CACtDmR,CAAAA,CAAuBnR,EAAO,EAAA,GAAOyQ,CAAAA,CACrCW,CAAAA,CACJlB,CAAAA,GACCiB,CAAAA,CAAuBnR,CAAAA,CAAO,SAAQ,CAAI,MAAA,CAAA,CACvCqR,EACJ,CAACH,CAAAA,GACAtB,IAAe,KAAA,EACdqB,CAAAA,EACAN,EAAoB,GAAA,CAAI3Q,CAAAA,CAAO,EAAE,CAAA,CAAA,CAC/BsR,GAAAA,CACJD,GAAkBD,CAAAA,GAAmB,MAAA,CACjC,CACE,KAAA,CAAOC,CAAAA,CACHJ,CAAAA,CACEtR,CAAAA,CACAK,CAAAA,CAAO,OAAA,GACT,MAAA,CACJ,QAAA,CAAUiR,EACNtR,CAAAA,CACA0R,CAAAA,CACErR,EAAO,OAAA,EAAQ,CACfoR,EACN,QAAA,CAAUC,CAAAA,CACNJ,EACEtR,CAAAA,CACAK,CAAAA,CAAO,SAAQ,CACjB,MACN,EACA,MAAA,CACAuR,CAAAA,CAAYjB,CAAAA,CAAatQ,CAAM,CAAA,CAC/BwR,CAAAA,CAAcD,EAChB,CACE,IAAA,CACEA,IAAc,MAAA,CAASnB,CAAAA,CAAc,KAAK,GAAA,CAAIpQ,CAAAA,CAAO,EAAE,CAAA,CAAI,MAAA,CAC7D,MACEuR,CAAAA,GAAc,OAAA,CACVnB,EAAc,KAAA,CAAM,GAAA,CAAIpQ,EAAO,EAAE,CAAA,CACjC,MACR,CAAA,CACA,MAAA,CACEyR,CAAAA,CACJH,KAAaE,CAAAA,CAAc,CAAE,GAAGF,GAAAA,CAAW,GAAGE,CAAY,CAAA,CAAI,MAAA,CAEhEX,EAAQ,GAAA,CAAI7Q,CAAAA,CAAO,GAAI,CACrB,SAAA,CAAAyR,EACA,QAAA,CAAUH,GAAAA,CACV,UAAAC,CAAAA,CACA,WAAA,CAAaE,CAAAA,CACb,eAAA,CAAAT,CAAAA,CACA,iBAAA,CAAAD,EACA,iBAAA,CAAAD,CAAAA,CACA,eAAAI,CAAAA,CACA,eAAA,CAAAD,EACA,eAAA,CAAiBM,CAAAA,CACbG,EAAyBH,CAAAA,CAAW/X,CAAAA,CAAc,CAChD,eAAA,CAAAyX,CACF,CAAC,CAAA,CACD,MAAA,CACJ,iBAAkBA,CAAAA,CACd,yCAAA,CACA,MACN,CAAC,EACH,CAEA,OAAOJ,CACT,CAAA,CAAG,CACDJ,CAAAA,CACAE,CAAAA,CACAf,EACAI,CAAAA,CACAI,CAAAA,CACA5W,EACA8L,GACF,CAAC,EAEKqM,CAAAA,CAAqB7B,CAAA,CAAA,OAAA,CAAQ,IAC1BxK,GAAAA,CAAmB,MAAA,CAAO,CAACsM,CAAAA,CAAO5R,CAAAA,GAAW,CAClD,IAAM6R,CAAAA,CAASjB,CAAAA,CAAc,IAAI5Q,CAAAA,CAAO,EAAE,EACpCkQ,CAAAA,CAAqBF,CAAAA,CAAoB,IAAIhQ,CAAAA,CAAO,EAAE,EACtDmR,CAAAA,CAAuBnR,CAAAA,CAAO,KAAOyQ,CAAAA,CAE3C,OAAIoB,GAAQ,eAAA,CACHD,CAAAA,CAAQjS,EAGbgR,CAAAA,CAAoB,GAAA,CAAI3Q,CAAAA,CAAO,EAAE,CAAA,CAC5B4R,CAAAA,CAAQ5R,EAAO,OAAA,EAAQ,CAI9B4R,GACC1B,CAAAA,GAAuBiB,CAAAA,CAAuBnR,EAAO,OAAA,EAAQ,CAAI,CAAA,CAAA,CAEtE,CAAA,CAAG,CAAC,CAAA,CACH,CACD4Q,CAAAA,CACAH,CAAAA,CACAE,EACAX,CAAAA,CACA1K,GACF,CAAC,CAAA,CAEKwM,CAAAA,CAAwBhC,CAAA,CAAA,WAAA,CAC3B1S,CAAAA,EAAqBwT,CAAAA,CAAc,GAAA,CAAIxT,CAAQ,CAAA,EAAKoS,EAAAA,CACrD,CAACoB,CAAa,CAChB,EAEA,OAAO,CACL,cAAAA,CAAAA,CACA,wBAAA,CAAAf,EACA,YAAA,CAAA8B,CAAAA,CACA,gBAAAG,CACF,CACF,CAEA,SAASvB,EAAAA,CAA2BvQ,CAAAA,CAAuB,CACzD,OAAOkE,CAAAA,CAAkBlE,EAAO,EAAE,CAAA,CAAIL,EAAsBK,CAAAA,CAAO,OAAA,EACrE,CCjPO,SAAS+R,EAAAA,CACdC,EACA/T,GAAAA,CACA,CACA,IAAMzE,CAAAA,CAAewY,CAAAA,CAAG,YAAc,EAAC,CACjC,CAAE,IAAA,CAAAC,CAAAA,CAAM,YAAAC,CAAAA,CAAa,UAAA,CAAAC,EAAY,QAAA,CAAAnU,CAAAA,CAAU,SAAAoU,CAAS,CAAA,CAAIJ,CAAAA,CAE9D,OAAO,SAAkC,CACvC,KAAAnY,CAAAA,CACA,YAAA,CAAA/B,EACA,UAAA,CAAAD,CAAAA,CAAa,QACb,iBAAA,CAAAD,CAAAA,CACA,cAAAD,CAAAA,CACA,UAAA,CAAAsB,EACA,YAAA,CAAAd,GAAAA,CACA,kBAAAW,CAAAA,CACA,YAAA,CAAAL,EACA,YAAA,CAAA8T,CAAAA,CACA,oBAAA,CAAAF,CAAAA,CACA,kBAAA,CAAA/T,CAAAA,CACA,aAAAF,CAAAA,CACA,oBAAA,CAAAia,EACA,eAAA,CAAA7Z,CAAAA,CACA,WAAAI,CAAAA,CACA,eAAA,CAAA0Z,EACA,cAAA,CAAAC,CAAAA,CACA,aAAAC,CAAAA,CACA,SAAA,CAAA1G,EAAY,KAAA,CACZ,eAAA,CAAAC,EAAkB,CAAA,CAClB,MAAA,CAAAhR,CACF,CAAA,CAAkC,CAChC,IAAM0X,EAAqB5a,CAAAA,EAAc,OAAA,CACnC6a,EACJ9a,CAAAA,CACIoC,CAAAA,CAAG,OAAQpC,CAAiB,CAAA,CAC5B+a,GAAqBF,CAAkB,CAAA,CACvCG,EAAkB5Y,CAAAA,CACtB,0BAAA,CACAR,EAAa,QAAA,CACbkZ,CACF,EACMG,CAAAA,CAAmBC,CAAAA,EACvB9Y,CAAAA,CACE,sEAAA,CACA+Y,EAAAA,CAAqBN,CAAkB,EACvCjZ,CAAAA,CAAa,QAAA,CACb7B,EACAmb,CACF,CAAA,CAEF,OAAIhH,CAAAA,CAEA/R,GAAAA,CAAC,OACC,IAAA,CAAK,MAAA,CACL,gBAAc,sBAAA,CACd,SAAA,CAAW6Y,EAEV,QAAA,CAAA,KAAA,CAAM,IAAA,CAAK,CAAE,MAAA,CAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,CAAG7G,CAAe,CAAE,EAAG,CAACiH,CAAAA,CAAGnP,IACxD5J,IAAAA,CAACgY,CAAAA,CAAA,CAEC,IAAA,CAAK,UAAA,CACL,cAAY,MAAA,CACZ,eAAA,CAAc,uBACd,SAAA,CAAWY,CAAAA,CAAgB,UAAU,CAAA,CAEpC,QAAA,CAAA,CAAApa,EACCwB,IAAAA,CAACkY,CAAAA,CAAA,CAAW,SAAA,CAAU,gBAAA,CACpB,QAAA,CAAA,CAAApY,IAACqY,CAAAA,CAAA,CAAS,UAAU,sBAAA,CAAuB,CAAA,CAC3CrY,IAACqY,CAAAA,CAAA,CAAS,UAAU,sBAAA,CAAuB,CAAA,CAAA,CAC7C,EACE,IAAA,CACJnY,IAAAA,CAACiY,EAAA,CACC,SAAA,CAAWlY,EAAG,gBAAA,CAAkBvB,CAAAA,CAAe,EAAA,CAAK,MAAM,CAAA,CAE1D,QAAA,CAAA,CAAAsB,IAACqY,CAAAA,CAAA,CAAS,UAAU,YAAA,CAAa,CAAA,CACjCrY,IAACqY,CAAAA,CAAA,CAAS,UAAU,aAAA,CAAc,CAAA,CAClCrY,IAACqY,CAAAA,CAAA,CAAS,UAAU,aAAA,CAAc,CAAA,CAClCrY,IAACqY,CAAAA,CAAA,CAAS,SAAA,CAAU,wBAAA,CAAyB,CAAA,CAAA,CAC/C,CAAA,CAAA,CAAA,CAnBK,gBAAgBvO,CAAK,CAAA,CAoB5B,CACD,CAAA,CACH,CAAA,CAKF9J,IAAC,KAAA,CAAA,CACC,IAAA,CAAK,OACL,eAAA,CAAc,sBAAA,CACd,UAAW6Y,CAAAA,CAEV,QAAA,CAAA/Y,EAAK,GAAA,CAAKqF,CAAAA,EAAQ,CACjB,IAAMvB,CAAAA,CAAQuB,CAAAA,CAAI,EAAA,CACZ+T,CAAAA,CAAc/T,CAAAA,CAAI,SAClBgU,EAAAA,CAAa,CAAA,CAAQ3G,EAAa5O,CAAK,CAAA,CACvCwV,GAAY/a,CAAAA,GAAiBuF,CAAAA,CAC7ByV,GAAiBna,CAAAA,CAAW,MAAA,CAAS,GAAK,CAAA,CAAQd,GAAAA,CAClDkb,GACJ/a,CAAAA,EAAsB8a,EAAAA,EAAkB3a,EACpC6a,EAAAA,CAA0Bhb,CAAAA,EAAsB8a,EAAAA,CAChDG,EAAAA,CAAqB,IAAM,CAC1B3a,GAIAA,CAAAA,CAAW,CAAE,IAAKqa,CAAAA,CAAa,KAAA,CAAAtV,CAAM,CAAC,EAC7C,EAEA,OACE1D,IAAAA,CAACgY,EAAA,CAEC,IAAA,CAAK,WACL,aAAA,CAAatU,CAAAA,CACb,UAAW2U,CAAAA,GAAkBW,CAAW,CAAA,EAAK,KAAA,CAC7C,eAAA,CAAc,sBAAA,CACd,aAAYC,EAAAA,CAAa,UAAA,CAAa,OACtC,SAAA,CAAWL,CAAAA,CACT7Y,EACE,CACExB,CAAAA,GAAkBya,EAAa,CAC7B,GAAA,CAAKA,EACL,KAAA,CAAAtV,CAAAA,CACA,SAAUuB,CAAAA,CAAI,KAAA,CACd,UAAAiU,EAAAA,CACA,UAAA,CAAYjU,CAAAA,CAAI,aAAA,EAAc,CAC9B,SAAA,CAAW,MACX,UAAA,CAAAgU,EACF,CAAC,CACH,CAAA,CACG,OAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA,CACX,+EACA1Z,CAAAA,CAAa,IAAA,CACb0Z,GACI1Z,CAAAA,CAAa,YAAA,CACbA,EAAa,cACnB,CACF,CAAA,CACA,WAAA,CAAcuG,CAAAA,EAAwC,CACpDwS,IAAiB,CAAE,GAAA,CAAKU,EAAa,KAAA,CAAAtV,CAAAA,CAAO,MAAAoC,CAAM,CAAC,EACrD,CAAA,CACA,SAAA,CAAYA,CAAAA,EAAwC,CAClDyS,CAAAA,GAAe,CAAE,IAAKS,CAAAA,CAAa,KAAA,CAAAtV,EAAO,KAAA,CAAAoC,CAAM,CAAC,EACnD,CAAA,CAEC,QAAA,CAAA,CAAAsT,GACCtZ,GAAAA,CAAC,KAAA,CAAA,CACC,cAAY,MAAA,CACZ,SAAA,CAAWC,EACT,iIAAA,CACAR,CAAAA,CAAa,aACX,iDACJ,CAAA,CACF,EACE,IAAA,CACJS,IAAAA,CAAC,OACC,eAAA,CAAc,0BAAA,CACd,KAAMrB,CAAAA,CAAa,QAAA,CAAW,MAAA,CAC9B,QAAA,CAAUA,CAAAA,CAAa,CAAA,CAAI,OAC3B,SAAA,CAAWoB,CAAAA,CACT,kFACAwZ,EAAAA,CAAyBf,CAAkB,EAC3C7Z,CAAAA,EAAc,2CAChB,EACA,OAAA,CAAUmH,CAAAA,EAA4C,CAElD0T,CAAAA,CACE1T,CAAAA,CAAM,OACNA,CAAAA,CAAM,aACR,GAKFwT,EAAAA,GACF,CAAA,CACA,SAAA,CAAYxT,CAAAA,EAA+C,CAEvD0T,EACE1T,CAAAA,CAAM,MAAA,CACNA,EAAM,aACR,CAAA,EAAA,CAKEA,EAAM,GAAA,GAAQ,OAAA,EAAWA,EAAM,GAAA,GAAQ,GAAA,IACzCA,EAAM,cAAA,EAAe,CACrBwT,IAAmB,EAEvB,CAAA,CAEC,UAAAzb,CAAAA,CAAa,CACZ,GAAA,CAAKmb,CAAAA,CACL,KAAA,CAAAtV,CAAAA,CACA,WAAAuV,EAAAA,CACA,gBAAA,CAAmBrO,GAAc,CAC/BwH,CAAAA,CACEqH,GAAmBnH,CAAAA,CAAc5O,CAAAA,CAAOkH,CAAS,CACnD,EACF,EACA,OAAA,CAAS5L,CAAAA,CACT,UAAAka,EAAAA,CACA,YAAA,CAAc,IAAM,CAClBd,CAAAA,CAAqB1U,CAAK,EAC5B,CAAA,CACA,aAAA,CAAe,IAAM,CACnB0U,CAAAA,CAAqB,IAAI,EAC3B,CACF,CAAC,CAAA,CACAc,EAAAA,EAAa,CAACra,CAAAA,EAAqB,CAACoG,EAAI,aAAA,EAAc,CACnD,KACApG,CAAAA,CAAkB,CAChB,IAAKma,CAAAA,CACL,KAAA,CAAAtV,CAAAA,CACA,QAAA,CAAUuB,CACZ,CAAC,GACP,CAAA,CACCoU,EAAAA,CACCrZ,KAACkY,CAAAA,CAAA,CAAW,UAAU,yFAAA,CACnB,QAAA,CAAA,CAAA7Z,EACCyB,GAAAA,CAAC,KAAA,CAAA,CACC,wBAAsB,MAAA,CACtB,SAAA,CAAU,sBAEV,QAAA,CAAAA,GAAAA,CAACiE,EAAA,CACC,OAAA,CAASkV,EAAAA,CACT,YAAA,CAAA,CACEnY,CAAAA,CAAO,aAAA,EACPuC,GAA0B,aAAA,EAC1BK,CAAK,EACP,eAAA,CAAkBmC,CAAAA,EAAuC,CACvDuM,CAAAA,CACEqH,EAAAA,CACEnH,EACA5O,CAAAA,CACAmC,CAAAA,GAAY,IACd,CACF,EACF,EACF,CAAA,CACF,CAAA,CACE,KACJ/F,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,oCAAA,CAAqC,CAAA,CACnDqZ,EAAAA,CACCrZ,IAAC,KAAA,CAAA,CACC,uBAAA,CAAsB,OACtB,SAAA,CAAU,qBAAA,CAEV,SAAAA,GAAAA,CAACkE,GAAAA,CAAA,CACC,GAAA,CAAKgV,CAAAA,CACL,UAAA,CAAYha,EACZ,YAAA,CAAcd,GAAAA,CACd,UAAWgb,EAAAA,CACX,cAAA,CAAgB,IAAM,CACpBd,CAAAA,CAAqB1U,CAAK,EAC5B,CAAA,CACA,eAAA,CAAiB,IAAM,CACrB0U,CAAAA,CAAqB,IAAI,EAC3B,CAAA,CACA,OAAQtX,CAAAA,CACV,CAAA,CACF,EACE,IAAA,CAAA,CACN,CAAA,CACE,OA3JC4C,CA4JP,CAEJ,CAAC,CAAA,CACH,CAEJ,CACF,CAEA,SAASgV,EAAAA,CAAqB9a,CAAAA,CAAiC,CAC7D,OAAQA,GACN,KAAK,UACH,OAAO,0CAAA,CACT,KAAK,OAAA,CACH,OAAO,gEAET,QACE,OAAO,gFACX,CACF,CAEA,SAASkb,EAAAA,CAAqBlb,CAAAA,CAAiC,CAC7D,OAAQA,CAAAA,EACN,KAAK,SAAA,CACH,OAAO,QACT,KAAK,OAAA,CACH,OAAO,QAAA,CAET,QACE,MACJ,CACF,CAEA,SAAS2b,EAAAA,CAAyB3b,CAAAA,CAAiC,CACjE,OAAQA,CAAAA,EACN,KAAK,SAAA,CACH,OAAO,OAAA,CACT,KAAK,OAAA,CACH,OAAO,4BAAA,CAET,QACE,OAAO,QACX,CACF,CAEA,SAAS6b,EAAAA,CACPnH,EACA5O,CAAAA,CACAuV,CAAAA,CACA,CACA,GAAIA,CAAAA,CACF,OAAO,CACL,GAAG3G,EACH,CAAC5O,CAAK,EAAG,IACX,CAAA,CAGF,GAAI,CAAC4O,CAAAA,CAAa5O,CAAK,EACrB,OAAO4O,CAAAA,CAGT,IAAMoH,CAAAA,CAAgB,CAAE,GAAGpH,CAAa,CAAA,CACxC,cAAOoH,CAAAA,CAAchW,CAAK,EACnBgW,CACT,CCnYO,SAASC,EAAAA,CAA0B5B,CAAAA,CAAoB,CAC5D,IAAMxY,CAAAA,CAAewY,CAAAA,CAAG,YAAc,EAAC,CACjC,CACJ,KAAA,CAAA6B,CAAAA,CACA,aAAAC,CAAAA,CACA,gBAAA,CAAAC,EACA,WAAA,CAAAC,CAAAA,CACA,WAAAC,CAAAA,CACA,UAAA,CAAAC,CACF,CAAA,CAAIlC,CAAAA,CAEJ,OAAO,SAA6B,CAClC,KAAA,CAAAnV,EAAQ,eAAA,CACR,WAAA,CAAAnB,EAAc,oEAChB,CAAA,CAGG,CACD,OACEzB,IAAAA,CAAC4Z,EAAA,CACC,SAAA,CAAW,wBAAwBra,CAAAA,CAAa,UAAA,EAAc,uBAAuB,CAAA,CAAA,CAErF,QAAA,CAAA,CAAAS,KAAC+Z,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAja,GAAAA,CAACka,CAAAA,CAAA,CAAW,QAAQ,MAAA,CAClB,QAAA,CAAAla,IAACoa,CAAAA,CAAA,EAAU,EACb,CAAA,CACApa,GAAAA,CAACma,CAAAA,CAAA,CAAY,QAAA,CAAArX,CAAAA,CAAM,EACnB9C,GAAAA,CAACga,CAAAA,CAAA,CAAkB,QAAA,CAAArY,CAAAA,CAAY,GACjC,CAAA,CACA3B,GAAAA,CAAC+Z,CAAAA,CAAA,EAAa,CAAA,CAAA,CAChB,CAEJ,CACF,CClBO,SAASM,EAAAA,CAA0BpC,CAAAA,CAAoB,CAC5D,IAAMxY,CAAAA,CAAewY,EAAG,UAAA,EAAc,GAChC,CACJ,UAAA,CAAAqC,CAAAA,CACA,iBAAA,CAAAC,CAAAA,CACA,kBAAA,CAAAC,IACA,eAAA,CAAAC,CAAAA,CACA,eAAAC,CAAAA,CACA,cAAA,CAAAC,EACA,cAAA,CAAAC,CAAAA,CACA,eAAAC,CAAAA,CACA,kBAAA,CAAAC,EACA,MAAA,CAAAC,CAAAA,CACA,cAAAC,CAAAA,CACA,WAAA,CAAAC,EACA,UAAA,CAAAC,CAAAA,CACA,aAAA,CAAAC,CAAAA,CACA,WAAA,CAAAC,CAAAA,CACA,QAAAjX,CAAAA,CACA,cAAA,CAAAC,EACA,cAAA,CAAAC,CACF,EAAI4T,CAAAA,CAEJ,SAASoD,EAAoB,CAC3B,SAAA,CAAA3X,EACA,SAAA,CAAAC,CAAAA,CACA,eAAA1C,CAAAA,CACA,QAAA,CAAAiI,EACA,aAAA,CAAAO,CAAAA,CACA,kBAAA,CAAAvI,CAAAA,CACA,iBAAA,CAAAkG,CAAAA,CACA,iBAAA6B,CAAAA,CACA,MAAA,CAAAjI,CACF,CAAA,CAA6B,CAC3B,IAAMsa,CAAAA,CAAQra,CAAAA,CACVsa,GAAgB7X,CAAAA,CAAW,IAAA,CAAK,IAAI,CAAA,CAAGC,CAAS,CAAC,CAAA,CACjD,GACE6X,CAAAA,CAAgB9X,CAAAA,CAAY,CAAA,CAC5B+X,CAAAA,CAAY/X,CAAAA,CAAY,CAAA,CAAIC,EAC5B+X,CAAAA,CAAgB,IAAA,CAAK,IAAI,CAAA,CAAG/X,CAAAA,CAAY,CAAC,CAAA,CAE/C,OACEzD,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,mDACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,OACC,SAAA,CAAW,CAAA,uCAAA,EAA0CT,EAAa,SAAA,EAAa,YAAY,CAAA,CAAA,CAE3F,QAAA,CAAA,CAAAO,GAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,uCAAA,CACb,QAAA,CAAAgB,EAAO,cAAA,CACV,CAAA,CACAd,KAAC6a,CAAAA,CAAA,CACC,MAAO,MAAA,CAAO7R,CAAQ,EACtB,aAAA,CAAgByD,CAAAA,EAAkB,CAChC1D,CAAAA,CAAiB,MAAA,CAAO0D,CAAK,CAAC,EAChC,CAAA,CAEA,QAAA,CAAA,CAAA3M,GAAAA,CAACmb,CAAAA,CAAA,CACC,YAAA,CAAYna,CAAAA,CAAO,eACnB,SAAA,CAAW,CAAA,KAAA,EAAQvB,EAAa,uBAAA,EAA2B,EAAE,GAE7D,QAAA,CAAAO,GAAAA,CAACob,EAAA,EAAY,CAAA,CACf,EACApb,GAAAA,CAACgb,CAAAA,CAAA,CACC,QAAA,CAAAhb,GAAAA,CAACib,CAAAA,CAAA,CACE,QAAA,CAAA/Z,CAAAA,CAAmB,IAAKya,CAAAA,EACvB3b,GAAAA,CAACkb,EAAA,CAAwB,KAAA,CAAO,OAAOS,CAAM,CAAA,CAC1C,QAAA,CAAAA,CAAAA,CAAAA,CADcA,CAEjB,CACD,EACH,CAAA,CACF,CAAA,CAAA,CACF,GACF,CAAA,CAEClS,CAAAA,GAAkB,OACjBzJ,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,2CAAA,CACb,QAAA,CAAAE,IAAAA,CAAC,OACC,SAAA,CAAW,CAAA,qDAAA,EAAwDT,EAAa,eAAA,EAAmB,EAAE,GACrG,YAAA,CAAYuB,CAAAA,CAAO,aAAayI,CAAa,CAAA,CAE7C,UAAAzJ,GAAAA,CAAC4b,CAAAA,CAAA,CAAa,SAAA,CAAU,QAAA,CAAS,EACjC5b,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,gCAAA,CAAkC,QAAA,CAAAyJ,CAAAA,CAAc,EAChEzJ,GAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,uCAAA,CACb,QAAA,CAAAgB,EAAO,YAAA,CAAayI,CAAa,EACpC,CAAA,CAAA,CACF,CAAA,CACF,EACE,IAAA,CAEJvJ,IAAAA,CAAC,OAAI,SAAA,CAAU,4CAAA,CACb,UAAAF,GAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAW,CAAA,8CAAA,EAAiDP,CAAAA,CAAa,SAAA,EAAa,YAAY,CAAA,CAAA,CAEjG,QAAA,CAAAwB,EACGD,CAAAA,CAAO,UAAA,CAAW0C,EAAW,IAAA,CAAK,GAAA,CAAI,EAAGC,CAAS,CAAC,GAEjD3C,CAAAA,CAAO,iBAAA,EACPuC,GAA0B,iBAAA,EAC1BG,CAAS,EACjB,CAAA,CACA1D,GAAAA,CAACsa,CAAAA,CAAA,CACC,YAAA,CACEtZ,CAAAA,CAAO,YAAcuC,EAAAA,CAA0B,UAAA,CAEjD,UAAU,yBAAA,CAEV,QAAA,CAAArD,KAACqa,CAAAA,CAAA,CACC,UAAAva,GAAAA,CAAC0a,CAAAA,CAAA,CAAe,SAAA,CAAU,gCAAA,CACxB,SAAAxa,IAAAA,CAACiE,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAnE,GAAAA,CAACqE,CAAAA,CAAA,CAAe,OAAA,CAAO,IAAA,CACrB,SAAArE,GAAAA,CAACya,CAAAA,CAAA,CACC,YAAA,CAAYzZ,CAAAA,CAAO,UACnB,IAAA,CAAK,GAAA,CACL,KAAK,SAAA,CACL,QAAA,CAAU,MACV,QAAA,CAAU,CAACwa,EACX,OAAA,CAAUxV,CAAAA,EAA+C,CACvDA,CAAAA,CAAM,cAAA,EAAe,CACjBwV,CAAAA,EACFpU,CAAAA,CAAkB,CAAC,EAEvB,CAAA,CACA,IAAA,CAAMpG,EAAO,SAAA,CACf,CAAA,CACF,EACAhB,GAAAA,CAACoE,CAAAA,CAAA,CAAgB,QAAA,CAAApD,CAAAA,CAAO,UAAU,CAAA,CAAA,CACpC,CAAA,CACF,EACAhB,GAAAA,CAAC0a,CAAAA,CAAA,CACC,QAAA,CAAAxa,IAAAA,CAACiE,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAnE,GAAAA,CAACqE,EAAA,CAAe,OAAA,CAAO,KACrB,QAAA,CAAArE,GAAAA,CAAC8a,EAAA,CACC,YAAA,CAAY9Z,EAAO,YAAA,CACnB,IAAA,CAAK,IACL,IAAA,CAAK,SAAA,CACL,SAAU,KAAA,CACV,QAAA,CAAU,CAACwa,CAAAA,CACX,OAAA,CAAUxV,CAAAA,EAA+C,CACvDA,CAAAA,CAAM,cAAA,GACFwV,CAAAA,EACFpU,CAAAA,CAAkB1D,EAAY,CAAC,EAEnC,EACA,IAAA,CAAM1C,CAAAA,CAAO,YAAA,CACf,CAAA,CACF,CAAA,CACAhB,GAAAA,CAACoE,EAAA,CAAgB,QAAA,CAAApD,EAAO,YAAA,CAAa,CAAA,CAAA,CACvC,EACF,CAAA,CACCsa,CAAAA,CAAM,GAAA,CAAI,CAACzL,CAAAA,CAAM/F,CAAAA,GAChB9J,IAAC0a,CAAAA,CAAA,CAEC,UAAU,sCAAA,CAET,QAAA,CAAA7K,IAAS,UAAA,CACR7P,GAAAA,CAACwa,IAAA,CACC,IAAA,CACExZ,EAAO,SAAA,EACPuC,EAAAA,CAA0B,UAE9B,CAAA,CAEAvD,GAAAA,CAAC4a,EAAA,CACC,IAAA,CAAK,GAAA,CACL,QAAA,CAAU/K,CAAAA,GAASnM,CAAAA,CAAY,EAC/B,IAAA,CAAK,SAAA,CACL,QAAUsC,CAAAA,EAA+C,CACvDA,EAAM,cAAA,EAAe,CACrBoB,EAAkByI,CAAAA,CAAO,CAAC,EAC5B,CAAA,CAEC,QAAA,CAAAA,EACH,CAAA,CAAA,CArBG,CAAA,EAAGA,CAAI,CAAA,CAAA,EAAI/F,CAAK,CAAA,CAuBvB,CACD,CAAA,CACD9J,GAAAA,CAAC0a,EAAA,CACC,QAAA,CAAAxa,KAACiE,CAAAA,CAAA,CACC,UAAAnE,GAAAA,CAACqE,CAAAA,CAAA,CAAe,OAAA,CAAO,IAAA,CACrB,SAAArE,GAAAA,CAAC6a,CAAAA,CAAA,CACC,YAAA,CAAY7Z,CAAAA,CAAO,SACnB,IAAA,CAAK,GAAA,CACL,IAAA,CAAK,SAAA,CACL,QAAA,CAAU,KAAA,CACV,SAAU,CAACya,CAAAA,CACX,QAAUzV,CAAAA,EAA+C,CACvDA,EAAM,cAAA,EAAe,CACjByV,GACFrU,CAAAA,CAAkB1D,CAAAA,CAAY,CAAC,EAEnC,CAAA,CACA,KAAM1C,CAAAA,CAAO,QAAA,CACf,EACF,CAAA,CACAhB,GAAAA,CAACoE,CAAAA,CAAA,CAAgB,QAAA,CAAApD,CAAAA,CAAO,SAAS,CAAA,CAAA,CACnC,CAAA,CACF,EACCC,CAAAA,CACCjB,GAAAA,CAAC0a,EAAA,CAAe,SAAA,CAAU,iCACxB,QAAA,CAAAxa,IAAAA,CAACiE,EAAA,CACC,QAAA,CAAA,CAAAnE,IAACqE,CAAAA,CAAA,CAAe,QAAO,IAAA,CACrB,QAAA,CAAArE,GAAAA,CAAC2a,CAAAA,CAAA,CACC,YAAA,CAAY3Z,EAAO,QAAA,CACnB,IAAA,CAAK,IACL,IAAA,CAAK,SAAA,CACL,SAAU,KAAA,CACV,IAAA,CAAMA,EAAO,QAAA,CACb,QAAA,CAAU,CAACya,CAAAA,CACX,OAAA,CACEzV,GACG,CACHA,CAAAA,CAAM,gBAAe,CACjByV,CAAAA,EACFrU,CAAAA,CAAkBsU,CAAa,EAEnC,CAAA,CACF,EACF,CAAA,CACA1b,GAAAA,CAACoE,EAAA,CAAgB,QAAA,CAAApD,EAAO,QAAA,CAAS,CAAA,CAAA,CACnC,EACF,CAAA,CACE,IAAA,CAAA,CACN,EACF,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAEJ,CAEA,SAASL,EAAgBL,CAAAA,CAAiC,CACxD,OACEN,GAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAW,+BAA+BP,CAAAA,CAAa,MAAA,EAAU,EAAE,CAAA,CAAA,CAEnE,QAAA,CAAAO,IAACqb,CAAAA,CAAA,CAAqB,GAAG/a,CAAAA,CAAO,CAAA,CAClC,CAEJ,CAEA,OAAO,CACL,gBAAAK,CAAAA,CACA,mBAAA,CAAA0a,CACF,CACF,CAEA,SAASE,EAAAA,CAAgBM,CAAAA,CAA0BlY,CAAAA,CAAmB,CACpE,IAAMmY,CAAAA,CAAcD,EAAmB,CAAA,CACjCP,CAAAA,CAAQ,IAAI,GAAA,CAAY,CAAC,EAAG3X,CAAS,CAAC,EAE5C,IAAA,IACMoY,CAAAA,CAAO,KAAK,GAAA,CAAI,CAAA,CAAGD,EAAc,CAAC,CAAA,CACtCC,CAAAA,EAAQ,IAAA,CAAK,GAAA,CAAIpY,CAAAA,CAAWmY,EAAc,CAAC,CAAA,CAC3CC,GAAQ,CAAA,CAERT,CAAAA,CAAM,IAAIS,CAAI,CAAA,CAGhB,IAAMC,CAAAA,CAAe,KAAA,CAAM,KAAKV,CAAK,CAAA,CAAE,KAAK,CAAC7L,CAAAA,CAAMC,IAAUD,CAAAA,CAAOC,CAAK,CAAA,CACnEuM,CAAAA,CAAoC,EAAC,CAE3C,QAASnS,CAAAA,CAAQ,CAAA,CAAGA,EAAQkS,CAAAA,CAAa,MAAA,CAAQlS,GAAS,CAAA,CAAG,CAC3D,IAAMiS,CAAAA,CAAOC,CAAAA,CAAalS,CAAK,CAAA,CACzB+K,CAAAA,CAAWmH,EAAalS,CAAAA,CAAQ,CAAC,EAEnC+K,CAAAA,EAAYkH,CAAAA,CAAOlH,CAAAA,CAAW,CAAA,EAChCoH,CAAAA,CAAM,IAAA,CAAK,UAAU,CAAA,CAGvBA,CAAAA,CAAM,KAAKF,CAAI,EACjB,CAEA,OAAOE,CACT,CC7QO,SAASC,EAAAA,CAA0BjE,GAAAA,CAAoB,CAC5D,GAAM,CACJ,OAAAjU,CAAAA,CACA,YAAA,CAAAmY,IACA,mBAAA,CAAAC,CAAAA,CACA,kBAAAC,CAAAA,CACA,gBAAA,CAAAC,EACA,qBAAA,CAAAC,GAAAA,CACA,oBAAAC,CAAAA,CACA,OAAA,CAAArY,EACA,cAAA,CAAAC,CAAAA,CACA,eAAAC,CACF,CAAA,CAAI4T,GAAAA,CAEJ,OAAO,SAAoC,CACzC,IAAA9S,CAAAA,CACA,UAAA,CAAAjG,EACA,YAAA,CAAAd,CAAAA,CACA,UAAAgb,CAAAA,CACA,cAAA,CAAAqD,EACA,eAAA,CAAAC,CAAAA,CACA,OAAA1b,CACF,CAAA,CAAoC,CAClC,IAAM2b,CAAAA,CAAUzd,EAAW,MAAA,CAAQ0d,CAAAA,EAAWC,CAAAA,CAAgBD,CAAAA,CAAQzX,CAAG,CAAC,EACpE2X,CAAAA,CAAgCC,CAAA,CAAA,WAAA,CACnC/W,GAAgC,CAC/BA,CAAAA,CAAM,kBACR,CAAA,CACA,EACF,CAAA,CAEA,GAAIoT,CAAAA,CACF,OACElZ,KAACiE,CAAAA,CAAA,CACC,UAAAnE,GAAAA,CAACqE,CAAAA,CAAA,CAAe,OAAA,CAAO,IAAA,CACrB,QAAA,CAAAnE,KAAC8D,CAAAA,CAAA,CACC,KAAK,QAAA,CACL,OAAA,CAAQ,QACR,IAAA,CAAK,SAAA,CACL,aAAA,CAAe8Y,CAAAA,CACf,OAAA,CAASJ,CAAAA,CAET,UAAA1c,GAAAA,CAACgd,CAAAA,CAAA,EAAM,CAAA,CACPhd,GAAAA,CAAC,QAAK,SAAA,CAAU,SAAA,CAAW,QAAA,CAAAgB,CAAAA,CAAO,UAAA,CAAW,CAAA,CAAA,CAC/C,EACF,CAAA,CACAhB,GAAAA,CAACoE,EAAA,CAAgB,QAAA,CAAApD,EAAO,UAAA,CAAW,CAAA,CAAA,CACrC,EAIJ,IAAMic,GAAAA,CAAYC,EAAW9e,CAAAA,CAAc+G,CAAG,EAC9C,OAAI,CAACwX,EAAQ,MAAA,EAAU,CAACM,GAAAA,CACf,IAAA,CAIP/c,IAAAA,CAACic,GAAAA,CAAA,CACC,QAAA,CAAA,CAAAjc,IAAAA,CAACiE,EAAA,CACC,QAAA,CAAA,CAAAnE,IAACqE,CAAAA,CAAA,CAAe,QAAO,IAAA,CACrB,QAAA,CAAArE,IAACwc,CAAAA,CAAA,CAAoB,QAAO,IAAA,CAC1B,QAAA,CAAAtc,KAAC8D,CAAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,OAAA,CAAQ,OAAA,CACR,KAAK,SAAA,CACL,aAAA,CAAe8Y,EACf,OAAA,CAASA,CAAAA,CAET,UAAA9c,GAAAA,CAACmd,GAAAA,CAAA,EAAS,CAAA,CACVnd,GAAAA,CAAC,QAAK,SAAA,CAAU,SAAA,CAAW,SAAAgB,CAAAA,CAAO,UAAA,CAAW,GAC/C,CAAA,CACF,CAAA,CACF,CAAA,CACAhB,GAAAA,CAACoE,CAAAA,CAAA,CAAgB,SAAApD,CAAAA,CAAO,UAAA,CAAW,GACrC,CAAA,CACAd,IAAAA,CAACkc,EAAA,CAAoB,KAAA,CAAM,MAAM,SAAA,CAAU,MAAA,CACxC,UAAAa,GAAAA,CACCjd,GAAAA,CAACqc,EAAA,CACC,QAAA,CAAAnc,KAACoc,CAAAA,CAAA,CACC,OAAA,CAAUtW,CAAAA,EAAyC,CACjDA,CAAAA,CAAM,iBAAgB,CACtByW,CAAAA,GACF,CAAA,CAEA,QAAA,CAAA,CAAAzc,IAACod,CAAAA,CAAA,CAAS,YAAU,cAAA,CAAe,CAAA,CAClCpc,EAAO,OAAA,CAAA,CACV,CAAA,CACF,EACE,IAAA,CACHic,GAAAA,EAAaN,EAAQ,MAAA,CAAS3c,GAAAA,CAACuc,GAAAA,CAAA,EAAsB,CAAA,CAAK,IAAA,CAC1DI,EAAQ,MAAA,CACP3c,GAAAA,CAACqc,EAAA,CACE,QAAA,CAAAM,EAAQ,GAAA,CAAKC,CAAAA,EAAW,CACvB,IAAMS,CAAAA,CAAOT,EAAO,IAAA,CACpB,OACE1c,KAACoc,CAAAA,CAAA,CAEC,SAAUM,CAAAA,CAAO,QAAA,GAAWzX,CAAG,CAAA,CAC/B,OAAA,CAASyX,CAAAA,CAAO,UAAY,aAAA,CAAgB,aAAA,CAAgB,OAC5D,OAAA,CAAU5W,CAAAA,EAAyC,CACjDA,CAAAA,CAAM,eAAA,GACD4W,CAAAA,CAAO,OAAA,CAAQzX,CAAG,EACzB,CAAA,CAEC,UAAAkY,CAAAA,CAAOrd,GAAAA,CAACqd,EAAA,CAAK,WAAA,CAAU,cAAA,CAAe,CAAA,CAAK,IAAA,CAC3CC,CAAAA,CAAsBV,EAAO,KAAA,CAAOzX,CAAG,IATnCyX,CAAAA,CAAO,GAUd,CAEJ,CAAC,CAAA,CACH,EACE,IAAA,CAAA,CACN,CAAA,CAAA,CACF,CAEJ,CACF,CCrEO,SAASW,EAAAA,CAAuBtF,EAAoB,CACzD,IAAMxY,EAAewY,CAAAA,CAAG,UAAA,EAAc,EAAC,CACjC,CACJ,OAAAjU,GAAAA,CACA,WAAA,CAAAwZ,EACA,YAAA,CAAArB,CAAAA,CACA,yBAAAsB,CAAAA,CACA,mBAAA,CAAArB,CAAAA,CACA,iBAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,EACA,iBAAA,CAAAoB,CAAAA,CACA,sBAAAnB,CAAAA,CACA,mBAAA,CAAAC,EACA,UAAA,CAAAmB,CAAAA,CACA,gBAAAC,CAAAA,CACA,eAAA,CAAAC,EACA,OAAA,CAAA1Z,CAAAA,CACA,eAAAC,CAAAA,CACA,cAAA,CAAAC,CACF,CAAA,CAAI4T,CAAAA,CAEJ,OAAO,SAAiC,CACtC,KAAA,CAAAnV,EACA,OAAA,CAAAC,CAAAA,CACA,YAAApB,GAAAA,CACA,aAAA,CAAAC,EACA,iBAAA,CAAAqB,CAAAA,CACA,wBAAAD,CAAAA,CACA,yBAAA,CAAAT,EACA,aAAA,CAAAd,CAAAA,CACA,eAAAD,CAAAA,CACA,QAAA,CAAA4B,EACA,gBAAA,CAAAZ,CAAAA,CACA,gBAAA,CAAAR,CAAAA,CACA,cAAA,CAAA8b,CAAAA,CACA,iBAAAnb,GAAAA,CACA,YAAA,CAAAD,EACA,cAAA,CAAAE,CAAAA,CACA,gBAAAX,CAAAA,CACA,sBAAA,CAAAK,EACA,OAAA,CAAAjB,EAAAA,CACA,wBAAAE,EAAAA,CACA,wBAAA,CAAA6Q,GACA,mBAAA,CAAAtQ,EAAAA,CACA,sBAAAM,EAAAA,CACA,aAAA,CAAAd,EAAAA,CACA,oBAAA,CAAAa,CAAAA,CACA,oBAAA,CAAAD,GACA,OAAA,CAAAiB,EAAAA,CACA,gBAAAd,EAAAA,CACA,mBAAA,CAAAN,GACA,MAAA,CAAAf,CAAAA,CACA,kBAAAkC,EAAAA,CACA,cAAA,CAAAT,EACF,CAAA,CAAiC,CAC/B,IAAMsb,EAAAA,CAA8BC,CAAA,CAAA,MAAA,CAAgC,IAAI,CAAA,CAClE,CAACC,EAAAA,CAAwBC,EAAyB,CAAA,CAChDF,CAAA,CAAA,QAAA,CAAS,KAAK,CAAA,CAChBG,CAAAA,CACJ1e,EAAa,wBAAA,EAA4B,EAAA,CACrC2e,GAAiBN,CAAAA,CAAe,MAAA,CACnClB,IAAYA,CAAAA,CAAO,SAAA,EAAa,aAAe,SAClD,CAAA,CACMyB,GAAkBP,CAAAA,CAAe,MAAA,CACpClB,GAAWA,CAAAA,CAAO,SAAA,GAAc,UACnC,CAAA,CACM0B,EAAAA,CAAYpb,EAAAA,EAAmB,OAAS,IAAA,CACxCqb,EAAAA,CAAarb,IAAmB,MAAA,EAAU,IAAA,CAC1Csb,GAActb,EAAAA,EAAmB,OAAA,EAAW,KAC5Cub,EAAAA,CAAsBvb,EAAAA,EAAmB,iBAAmB,IAAA,CAC5Dwb,EAAAA,CAAcxb,IAAmB,OAAA,EAAW,IAAA,CAC5Cyb,GAAiBzb,EAAAA,EAAmB,UAAA,EAAc,IAAA,CAClD0b,EAAAA,CAAoB1b,EAAAA,EAAmB,aAAA,EAAiB,KACxD2b,EAAAA,CAAkBP,EAAAA,EAAa,GAAQxb,CAAAA,EAASnB,GAAAA,CAAAA,CAChDmd,GAAmBP,EAAAA,CACnBQ,EAAAA,CAA2BP,EAAAA,EAAeJ,EAAAA,CAAe,MAAA,CAAS,CAAA,CAClEY,GACJtc,CAAAA,CAAa,MAAA,CAAS,GAAKC,GAAAA,CAAiB,MAAA,CAAS,EACjDsc,EAAAA,CACJP,EAAAA,GACCnd,EAAAA,CAAwB,IAAA,CAAM0E,CAAAA,EAAWA,CAAAA,CAAO,OAAO,CAAA,EACtD,CAAA,EAAQ3D,GAA0BL,CAAAA,CAAAA,EAClCH,EAAAA,EACAC,IACEmd,EAAAA,CACJP,EAAAA,EAAkB3c,GAAoB,CAAA,CAAQQ,CAAAA,CAC1C2c,GACJV,EAAAA,EAAuBJ,EAAAA,CAAgB,OAAS,CAAA,CAC5Ce,CAAAA,CAA0BR,IAAqB,CAAA,CAAQnd,CAAAA,CACvD4d,CAAAA,CACJT,EAAAA,EAAqB,CAAA,EAAQpd,CAAAA,EAAkBC,GAC3C6d,EAAAA,CAAwBte,CAAAA,CAAO,aAAa0B,CAAAA,CAAa,MAAM,EAUrE,OARMsb,CAAA,CAAA,SAAA,CAAU,IAAM,CACfC,EAAAA,EAILF,GAAsB,OAAA,EAAS,KAAA,GACjC,CAAA,CAAG,CAACE,EAAsB,CAAC,CAAA,CAGzB,CAACY,EAAAA,EACD,CAACC,EAAAA,EACD,CAACC,EAAAA,EACD,CAACC,IACD,CAACC,EAAAA,EACD,CAACC,EAAAA,EACD,CAACC,IACD,CAACC,CAAAA,EACD,CAACC,CAAAA,CAEM,IAAA,CAIPnf,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,2BACZ,QAAA,CAAA,CAAAoe,EAAAA,GAAcxb,CAAAA,EAASnB,GAAAA,CAAAA,CACtBzB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,qBAAA,CACZ,QAAA,CAAA,CAAA4C,EACC9C,GAAAA,CAAC,IAAA,CAAA,CACC,GAAI+C,CAAAA,CACJ,SAAA,CAAU,uCAET,QAAA,CAAAD,CAAAA,CACH,EACE,IAAA,CACHnB,GAAAA,CACC3B,IAAC,GAAA,CAAA,CACC,EAAA,CAAI4B,EACJ,SAAA,CAAW,CAAA,kBAAA,EAAqBnC,CAAAA,CAAa,SAAA,EAAa,YAAY,CAAA,CAAA,CAErE,SAAAkC,GAAAA,CACH,CAAA,CACE,MACN,CAAA,CACE,IAAA,CAEJzB,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,sBACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,OACC,eAAA,CAAc,6BAAA,CACd,UAAU,qHAAA,CAET,QAAA,CAAA,CAAAqe,GACCre,IAAAA,CAAAqf,QAAAA,CAAA,CACE,QAAA,CAAA,CAAAvf,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,4DAAA,CACb,QAAA,CAAAE,KAACyd,CAAAA,CAAA,CAAW,UAAU,SAAA,CACpB,QAAA,CAAA,CAAA3d,IAAC6d,CAAAA,CAAA,CACC,MAAO5a,CAAAA,CACP,QAAA,CAAW+C,GAA+C,CACxDzD,CAAAA,CAA0ByD,EAAM,MAAA,CAAO,KAAK,EAC9C,CAAA,CACA,WAAA,CAAahD,CAAAA,CACf,EACAhD,GAAAA,CAAC4d,CAAAA,CAAA,CAAgB,KAAA,CAAM,cAAA,CAAe,cAAY,MAAA,CAChD,QAAA,CAAA5d,IAACwf,CAAAA,CAAA,EAAW,EACd,CAAA,CACCvc,CAAAA,CACCjD,IAAC4d,CAAAA,CAAA,CAAgB,MAAM,YAAA,CACrB,QAAA,CAAA5d,GAAAA,CAAC,QAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,UAAW,CAAA,uGAAA,EAA0GP,CAAAA,CAAa,mBAAqB,8BAA8B,CAAA,CAAA,CACrL,QAAS,IAAM,CACb8C,CAAAA,CAA0B,EAAE,EAC9B,CAAA,CACA,aAAYvB,CAAAA,CAAO,WAAA,CACnB,MAAOA,CAAAA,CAAO,WAAA,CAEd,SAAAhB,GAAAA,CAACgd,CAAAA,CAAA,EAAM,CAAA,CACT,CAAA,CACF,CAAA,CACE,MACN,CAAA,CACF,CAAA,CACA9c,KAACiE,CAAAA,CAAA,CACC,UAAAnE,GAAAA,CAACqE,CAAAA,CAAA,CAAe,OAAA,CAAO,IAAA,CACrB,SAAAnE,IAAAA,CAAC8D,GAAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,QACEia,EAAAA,EAA0Bhb,CAAAA,CACtB,WAAA,CACA,SAAA,CAEN,IAAA,CAAK,SAAA,CACL,aAAYjC,CAAAA,CAAO,WAAA,CACnB,eAAcid,EAAAA,CACd,SAAA,CAAW,2CAA2CE,CAAiC,CAAA,CAAA,EAAI1e,EAAa,kBAAA,EAAsB,EAAE,GAChI,OAAA,CAAS,IAAM,CACbye,EAAAA,CAA2BzY,CAAAA,EAAY,CAACA,CAAO,EACjD,CAAA,CAEA,QAAA,CAAA,CAAAzF,GAAAA,CAACwf,CAAAA,CAAA,EAAW,CAAA,CACZxf,GAAAA,CAAC,QAAK,SAAA,CAAU,SAAA,CAAW,SAAAgB,CAAAA,CAAO,WAAA,CAAY,GAChD,CAAA,CACF,CAAA,CACAhB,IAACoE,CAAAA,CAAA,CAAgB,SAAApD,CAAAA,CAAO,WAAA,CAAY,GACtC,CAAA,CAAA,CACF,CAAA,CACE,IAAA,CAEHwd,EAAAA,CACCxe,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,kCAAA,CACZ,QAAA,CAAAoe,GAAe,GAAA,CAAKxB,CAAAA,EAAW,CAC9B,IAAM6C,CAAAA,CACJ,CAAC7C,CAAAA,CAAO,QAAA,EAAY,EAAQA,CAAAA,CAAO,IAAA,CAC/B8C,EACJxf,IAAAA,CAAC8D,GAAAA,CAAA,CAEC,IAAA,CAAK,QAAA,CACL,SAAA,CACEyb,CAAAA,CACI,CAAA,8GAAA,EAAiHtB,CAAiC,GAClJvB,CAAAA,CAAO,QAAA,CACL,kDAAkDuB,CAAiC,CAAA,CAAA,CACnF,4EAER,OAAA,CAASvB,CAAAA,CAAO,SAAW,SAAA,CAC3B,IAAA,CAAMA,EAAO,QAAA,CAAW,MAAA,CAAS,UACjC,OAAA,CAAS,IAAM,CACRA,CAAAA,CAAO,OAAA,CAAQ,CAClB,IAAA,CAAMvb,EAAAA,CACN,cAAA,CAAAoB,EACF,CAAC,EACH,EACA,QAAA,CAAUma,CAAAA,CAAO,SACjB,YAAA,CAAYA,CAAAA,CAAO,MACnB,KAAA,CAAOA,CAAAA,CAAO,SAAW,MAAA,CAAYA,CAAAA,CAAO,MAE3C,QAAA,CAAA,CAAAA,CAAAA,CAAO,KAAO5c,GAAAA,CAAC4c,CAAAA,CAAO,IAAA,CAAP,EAAY,CAAA,CAAK,IAAA,CAChCA,EAAO,QAAA,CACN5c,GAAAA,CAAC,QAAK,SAAA,CAAU,SAAA,CAAW,SAAA4c,CAAAA,CAAO,KAAA,CAAM,EACtC6C,CAAAA,CACFzf,GAAAA,CAAC,QAAK,SAAA,CAAU,uCAAA,CACb,SAAA4c,CAAAA,CAAO,KAAA,CACV,EAEA5c,GAAAA,CAAC,MAAA,CAAA,CAAM,QAAA,CAAA4c,CAAAA,CAAO,KAAA,CAAM,CAAA,CAAA,CAAA,CA7BjBA,EAAO,GA+Bd,CAAA,CAGF,OAAOA,CAAAA,CAAO,QAAA,CACZ1c,KAACiE,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAnE,GAAAA,CAACqE,CAAAA,CAAA,CAAe,QAAO,IAAA,CAAE,QAAA,CAAAqb,EAAO,CAAA,CAChC1f,GAAAA,CAACoE,EAAA,CAAgB,QAAA,CAAAwY,CAAAA,CAAO,KAAA,CAAM,CAAA,CAAA,CAAA,CAFlBA,CAAAA,CAAO,GAGrB,CAAA,CAEA8C,CAEJ,CAAC,CAAA,CACH,CAAA,CACE,KAEHL,CAAAA,CACCrf,GAAAA,CAAC,OACC,eAAA,CAAc,mCAAA,CACd,UAAU,kEAAA,CAET,QAAA,CAAAwB,GAAkBC,CAAAA,CACrB,CAAA,CACE,KAEJzB,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,MAAA,CAAO,aAAA,CAAY,MAAA,CAAO,EAEzCE,IAAAA,CAAC,KAAA,CAAA,CACC,gBAAc,iCAAA,CACd,SAAA,CAAU,mCAET,QAAA,CAAA,CAAAwC,CAAAA,CAAa,OACZ1C,GAAAA,CAAC,KAAA,CAAA,CACC,UAAW,CAAA,6CAAA,EAAgDP,CAAAA,CAAa,WAAa,YAAY,CAAA,CAAA,CAEhG,SAAA6f,EAAAA,CACH,CAAA,CACE,IAAA,CACH5c,CAAAA,CAAa,MAAA,CACVC,GAAAA,CAAiB,IAAKia,CAAAA,EAAW,CAC/B,IAAMS,CAAAA,CAAOT,CAAAA,CAAO,KACd+C,CAAAA,CACJ,OAAO/C,EAAO,QAAA,EAAa,UAAA,CACvBA,EAAO,QAAA,CAASla,CAAY,EAC5Bka,CAAAA,CAAO,QAAA,CAEb,OACE1c,IAAAA,CAACiE,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAnE,GAAAA,CAACqE,CAAAA,CAAA,CAAe,OAAA,CAAO,IAAA,CACrB,SAAAnE,IAAAA,CAAC8D,GAAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,QAAS4Y,CAAAA,CAAO,OAAA,EAAW,YAC3B,IAAA,CAAK,SAAA,CACL,UAAWuB,CAAAA,CACX,QAAA,CAAUwB,EACV,OAAA,CAAS,IAAM,CACR/C,CAAAA,CAAO,OAAA,CAAQ,CAAE,KAAMla,CAAa,CAAC,EAC5C,CAAA,CACA,YAAA,CAAYka,EAAO,KAAA,CAElB,QAAA,CAAA,CAAAS,EAAOrd,GAAAA,CAACqd,CAAAA,CAAA,EAAK,CAAA,CAAK,IAAA,CACnBrd,IAAC,MAAA,CAAA,CAAK,SAAA,CAAU,UAAW,QAAA,CAAA4c,CAAAA,CAAO,KAAA,CAAM,CAAA,CAAA,CAC1C,CAAA,CACF,CAAA,CACA5c,IAACoE,CAAAA,CAAA,CAAgB,SAAAwY,CAAAA,CAAO,KAAA,CAAM,IAjBlBA,CAAAA,CAAO,GAkBrB,CAEJ,CAAC,CAAA,CACD,KAEHqC,EAAAA,CACC/e,IAAAA,CAACic,EAAA,CACC,QAAA,CAAA,CAAAnc,IAACwc,CAAAA,CAAA,CAAoB,OAAA,CAAO,IAAA,CAC1B,QAAA,CAAAtc,IAAAA,CAAC8D,IAAA,CACC,IAAA,CAAK,SACL,OAAA,CAAQ,SAAA,CACR,KAAK,SAAA,CACL,YAAA,CAAYhD,EAAO,YAAA,CACnB,SAAA,CAAW,GAAGmd,CAAiC,CAAA,CAAA,EAAI1e,EAAa,kBAAA,EAAsB,EAAE,GACxF,KAAA,CAAOuB,CAAAA,CAAO,YAAA,CAEd,QAAA,CAAA,CAAAhB,GAAAA,CAAC4f,GAAAA,CAAA,EAA0B,CAAA,CAC3B5f,GAAAA,CAAC,QAAK,SAAA,CAAU,SAAA,CAAW,SAAAgB,CAAAA,CAAO,YAAA,CAAa,CAAA,CAAA,CACjD,CAAA,CACF,CAAA,CACAd,IAAAA,CAACkc,EAAA,CAAoB,KAAA,CAAM,MAAM,SAAA,CAAU,MAAA,CACzC,UAAApc,GAAAA,CAAC0d,CAAAA,CAAA,CAAmB,QAAA,CAAA1c,CAAAA,CAAO,YAAA,CAAa,EACxChB,GAAAA,CAACqc,CAAAA,CAAA,CACE,QAAA,CAAA/Z,CAAAA,EAA0BL,EACzBjC,GAAAA,CAACyd,CAAAA,CAAA,CACC,OAAA,CAAS7a,CAAAA,CACT,gBACEmD,CAAAA,EACG,CACHzD,EAAuByD,CAAAA,GAAY,IAAI,EACzC,CAAA,CAEC,QAAA,CAAA/E,CAAAA,CAAO,cAAA,CAAeiB,CAAe,CAAA,CACxC,EACE,IAAA,CACN,CAAA,CACCF,GACC7B,IAAAA,CAAAqf,QAAAA,CAAA,CACE,QAAA,CAAA,CAAAvf,GAAAA,CAACuc,EAAA,EAAsB,CAAA,CACvBvc,IAAC0d,CAAAA,CAAA,CAAmB,SAAA1c,CAAAA,CAAO,OAAA,CAAQ,EACnChB,GAAAA,CAACqc,CAAAA,CAAA,CAEG,QAAA,CAAA,CACE,CAAC,SAAA,CAAWrb,EAAO,cAAc,CAAA,CACjC,CAAC,aAAA,CAAeA,CAAAA,CAAO,kBAAkB,CAAA,CACzC,CAAC,WAAYA,CAAAA,CAAO,eAAe,CACrC,CAAA,CACA,GAAA,CAAI,CAAC,CAAC0T,CAAAA,CAAajR,CAAK,CAAA,GACxBzD,GAAAA,CAACyd,CAAAA,CAAA,CAEC,OAAA,CAASta,EAAAA,GAAYuR,EACrB,eAAA,CAAiB,IAAM,CACrBrS,EAAAA,CAAgBqS,CAAW,EAC7B,CAAA,CAEC,QAAA,CAAAjR,GANIiR,CAOP,CACD,EACH,CAAA,CAAA,CACF,CAAA,CACE,KACHnT,EAAAA,CAAwB,IAAA,CAAM0E,GAAWA,CAAAA,CAAO,OAAO,CAAA,CACtD/F,IAAAA,CAAAqf,QAAAA,CAAA,CACE,UAAAvf,GAAAA,CAACuc,CAAAA,CAAA,EAAsB,CAAA,CACvBvc,GAAAA,CAAC0d,EAAA,CAAmB,QAAA,CAAA1c,EAAO,OAAA,CAAQ,CAAA,CACnChB,IAACqc,CAAAA,CAAA,CACE,SAAA9a,EAAAA,CACE,MAAA,CAAQ0E,GAAWA,CAAAA,CAAO,OAAO,CAAA,CACjC,GAAA,CAAKA,CAAAA,EACJjG,GAAAA,CAACyd,EAAA,CAEC,OAAA,CAASxX,EAAO,OAAA,CAChB,eAAA,CACEF,GACG,CACHqM,EAAAA,GACEnM,EAAO,EAAA,CACPF,CAAAA,GAAY,IACd,EACF,CAAA,CAEC,SAAAE,CAAAA,CAAO,KAAA,CAAA,CAXHA,EAAO,EAYd,CACD,CAAA,CACL,CAAA,CAAA,CACF,CAAA,CACE,IAAA,CACHnE,GACC5B,IAAAA,CAAAqf,QAAAA,CAAA,CACE,QAAA,CAAA,CAAAvf,GAAAA,CAACuc,EAAA,EAAsB,CAAA,CACvBrc,KAACwd,CAAAA,CAAA,CACE,UAAA1c,CAAAA,CAAO,OAAA,CAAQ,MAAIA,CAAAA,CAAO,QAAA,CAAA,CAC7B,EACAhB,GAAAA,CAACqc,CAAAA,CAAA,CACE,QAAA,CAAA9a,EAAAA,CAAwB,GAAA,CAAK0E,GAC5B/F,IAAAA,CAACoc,CAAAA,CAAA,CAEC,QAAA,CAAWtW,CAAAA,EAAiB,CAC1BA,CAAAA,CAAM,cAAA,GACR,CAAA,CAEA,QAAA,CAAA,CAAAhG,GAAAA,CAAC,QAAK,SAAA,CAAU,yBAAA,CACb,SAAAiG,CAAAA,CAAO,KAAA,CACV,EACAjG,GAAAA,CAAC,QAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,SAAA,CAAU,cAAA,CACV,aAAY,CAAA,EAAGgB,CAAAA,CAAO,OAAO,CAAA,EAAA,EAAKiF,CAAAA,CAAO,KAAK,CAAA,CAAA,CAC9C,OAAA,CAAUD,GAAU,CAClBA,CAAAA,CAAM,iBAAgB,CACtB5D,EAAAA,CAAsB6D,EAAO,EAAA,CAAI,MAAM,EACzC,CAAA,CACD,QAAA,CAAA,GAAA,CAED,CAAA,CACAjG,GAAAA,CAAC,QAAA,CAAA,CACC,IAAA,CAAK,SACL,SAAA,CAAU,cAAA,CACV,aAAY,CAAA,EAAGgB,CAAAA,CAAO,QAAQ,CAAA,EAAA,EAAKiF,CAAAA,CAAO,KAAK,CAAA,CAAA,CAC/C,OAAA,CAAUD,GAAU,CAClBA,CAAAA,CAAM,iBAAgB,CACtB5D,EAAAA,CAAsB6D,EAAO,EAAA,CAAI,OAAO,EAC1C,CAAA,CACD,QAAA,CAAA,GAAA,CAED,CAAA,CACAjG,IAAC,QAAA,CAAA,CACC,IAAA,CAAK,SACL,SAAA,CAAU,cAAA,CACV,aAAY,CAAA,EAAGgB,CAAAA,CAAO,KAAK,CAAA,EAAA,EAAKiF,CAAAA,CAAO,KAAK,CAAA,CAAA,CAC5C,OAAA,CAAUD,GAAU,CAClBA,CAAAA,CAAM,iBAAgB,CACtB5D,EAAAA,CAAsB6D,CAAAA,CAAO,EAAA,CAAI,KAAK,EACxC,EACD,QAAA,CAAA,GAAA,CAED,CAAA,CAAA,CAAA,CAxCK,OAAOA,CAAAA,CAAO,EAAE,EAyCvB,CACD,CAAA,CACH,GACF,CAAA,CACE,IAAA,CAAA,CACN,GACF,CAAA,CACE,IAAA,CAEH0Y,IAAkB3c,CAAAA,EAAoBQ,CAAAA,CACrCtC,KAACsd,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAtd,IAAAA,CAACiE,CAAAA,CAAA,CACC,UAAAnE,GAAAA,CAACqE,CAAAA,CAAA,CAAe,OAAA,CAAO,IAAA,CACrB,SAAAnE,IAAAA,CAAC8D,GAAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,QAASZ,CAAAA,GAAa,OAAA,CAAU,UAAY,SAAA,CAC5C,cAAA,CAAcA,IAAa,OAAA,CAC3B,SAAA,CACEA,CAAAA,GAAa,OAAA,CACT+a,CAAAA,CACA,CAAA,EAAGA,CAAiC,CAAA,CAAA,EAAI1e,CAAAA,CAAa,oBAAsB,EAAE,CAAA,CAAA,CAEnF,KAAK,SAAA,CACL,OAAA,CAAS,IAAM,CACb+C,CAAAA,CAAiB,OAAO,EAC1B,CAAA,CAEA,UAAAxC,GAAAA,CAAC6f,CAAAA,CAAA,EAAS,CAAA,CACV7f,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,SAAA,CACb,QAAA,CAAAgB,EAAO,iBAAA,EACNuC,EAAAA,CAA0B,kBAC9B,CAAA,CAAA,CACF,CAAA,CACF,EACAvD,GAAAA,CAACoE,CAAAA,CAAA,CACE,QAAA,CAAApD,CAAAA,CAAO,WACNuC,EAAAA,CAA0B,SAAA,CAC9B,GACF,CAAA,CACArD,IAAAA,CAACiE,EAAA,CACC,QAAA,CAAA,CAAAnE,GAAAA,CAACqE,CAAAA,CAAA,CAAe,OAAA,CAAO,KACrB,QAAA,CAAAnE,IAAAA,CAAC8D,IAAA,CACC,IAAA,CAAK,SACL,OAAA,CAASZ,CAAAA,GAAa,MAAA,CAAS,SAAA,CAAY,SAAA,CAC3C,cAAA,CAAcA,IAAa,MAAA,CAC3B,SAAA,CACEA,IAAa,OAAA,CACT,CAAA,EAAG+a,CAAiC,CAAA,CAAA,EAAI1e,CAAAA,CAAa,kBAAA,EAAsB,EAAE,CAAA,CAAA,CAC7E0e,CAAAA,CAEN,KAAK,SAAA,CACL,OAAA,CAAS,IAAM,CACb3b,CAAAA,CAAiB,MAAM,EACzB,CAAA,CAEA,UAAAxC,GAAAA,CAAC8f,CAAAA,CAAA,EAAe,CAAA,CAChB9f,GAAAA,CAAC,QAAK,SAAA,CAAU,SAAA,CACb,SAAAgB,CAAAA,CAAO,gBAAA,EACNuC,EAAAA,CAA0B,gBAAA,CAC9B,CAAA,CAAA,CACF,CAAA,CACF,EACAvD,GAAAA,CAACoE,CAAAA,CAAA,CACE,QAAA,CAAApD,CAAAA,CAAO,UACNuC,EAAAA,CAA0B,QAAA,CAC9B,GACF,CAAA,CAAA,CACF,CAAA,CACE,KAEHkb,EAAAA,CACGJ,EAAAA,CAAgB,IAAKzB,CAAAA,EAAW,CAC9B,IAAM6C,CAAAA,CACJ,CAAC7C,CAAAA,CAAO,QAAA,EAAY,CAAA,CAAQA,CAAAA,CAAO,KAC/B8C,CAAAA,CACJxf,IAAAA,CAAC8D,IAAA,CAEC,IAAA,CAAK,SACL,OAAA,CAAS4Y,CAAAA,CAAO,SAAW,SAAA,CAC3B,IAAA,CAAMA,EAAO,QAAA,CAAW,SAAA,CAAY,UACpC,OAAA,CAAS,IAAM,CACRA,CAAAA,CAAO,OAAA,CAAQ,CAClB,IAAA,CAAMvb,EAAAA,CACN,cAAA,CAAAoB,EACF,CAAC,EACH,EACA,QAAA,CAAUma,CAAAA,CAAO,SACjB,YAAA,CAAYA,CAAAA,CAAO,MACnB,KAAA,CAAOA,CAAAA,CAAO,SAAW,MAAA,CAAYA,CAAAA,CAAO,MAC5C,SAAA,CAAW,CAAA,gBAAA,EAAmBA,EAAO,QAAA,CAAW,EAAA,CAAK,CAAA,EAAG6C,CAAAA,CAAkB,qCAAA,CAAwC,EAAE,4DAA4D,CAAA,CAAA,EAAI7C,CAAAA,CAAO,UAAY6C,CAAAA,CAAkBtB,CAAAA,CAAoC,EAAE,CAAA,CAAA,EAAI1e,CAAAA,CAAa,oBAAsB,EAAE,CAAA,CAAA,CAEvS,UAAAmd,CAAAA,CAAO,IAAA,CACN5c,IAAC4c,CAAAA,CAAO,IAAA,CAAP,CACC,WAAA,CACEA,CAAAA,CAAO,QAAA,CAAW,MAAA,CAAY,cAAA,CAElC,CAAA,CACE,KACHA,CAAAA,CAAO,QAAA,CACN5c,IAAC,MAAA,CAAA,CAAK,SAAA,CAAU,UAAW,QAAA,CAAA4c,CAAAA,CAAO,MAAM,CAAA,CACtC6C,CAAAA,CACFzf,IAAC,MAAA,CAAA,CAAK,SAAA,CAAU,wCACb,QAAA,CAAA4c,CAAAA,CAAO,MACV,CAAA,CAEA5c,GAAAA,CAAC,MAAA,CAAA,CAAM,QAAA,CAAA4c,CAAAA,CAAO,KAAA,CAAM,IA7BjBA,CAAAA,CAAO,GA+Bd,EAGF,OAAOA,CAAAA,CAAO,SACZ1c,IAAAA,CAACiE,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAnE,GAAAA,CAACqE,EAAA,CAAe,OAAA,CAAO,KAAE,QAAA,CAAAqb,CAAAA,CAAO,EAChC1f,GAAAA,CAACoE,CAAAA,CAAA,CAAgB,QAAA,CAAAwY,CAAAA,CAAO,KAAA,CAAM,IAFlBA,CAAAA,CAAO,GAGrB,EAEA8C,CAEJ,CAAC,EACD,IAAA,CAAA,CACN,CAAA,CAAA,CACF,CAAA,CAECnB,EAAAA,EAAcN,EAAAA,CACbje,GAAAA,CAAC,OACC,eAAA,CAAc,mCAAA,CACd,UAAU,wCAAA,CAEV,QAAA,CAAAE,KAACyd,CAAAA,CAAA,CACC,QAAA,CAAA,CAAA3d,GAAAA,CAAC6d,CAAAA,CAAA,CACC,IAAKE,EAAAA,CACL,KAAA,CAAO9a,EACP,QAAA,CAAW+C,CAAAA,EAA+C,CACxDzD,CAAAA,CAA0ByD,CAAAA,CAAM,OAAO,KAAK,EAC9C,EACA,WAAA,CAAahD,CAAAA,CACf,EACAhD,GAAAA,CAAC4d,CAAAA,CAAA,CAAgB,KAAA,CAAM,cAAA,CAAe,aAAA,CAAY,MAAA,CAChD,QAAA,CAAA5d,GAAAA,CAACwf,EAAA,EAAW,CAAA,CACd,EACCvc,CAAAA,CACCjD,GAAAA,CAAC4d,EAAA,CAAgB,KAAA,CAAM,aACrB,QAAA,CAAA5d,GAAAA,CAAC,UACC,IAAA,CAAK,QAAA,CACL,UAAW,CAAA,uGAAA,EAA0GP,CAAAA,CAAa,mBAAqB,8BAA8B,CAAA,CAAA,CACrL,OAAA,CAAS,IAAM,CACb8C,CAAAA,CAA0B,EAAE,EAC9B,CAAA,CACA,aAAYvB,CAAAA,CAAO,WAAA,CACnB,MAAOA,CAAAA,CAAO,WAAA,CAEd,SAAAhB,GAAAA,CAACgd,CAAAA,CAAA,EAAM,CAAA,CACT,CAAA,CACF,EACE,IAAA,CAAA,CACN,CAAA,CACF,EACE,IAAA,CAEH1b,EAAAA,CAAc,MAAA,CACbpB,IAAAA,CAAC,KAAA,CAAA,CACC,eAAA,CAAc,6BACd,SAAA,CAAU,2CAAA,CAET,UAAAoB,EAAAA,CAAc,GAAA,CAAKye,GAClB/f,GAAAA,CAACggB,CAAAA,CAAA,CAEC,MAAA,CAAQD,CAAAA,CACR,OAAQ/e,CAAAA,CACR,oBAAA,CAAsBmB,GAHjB4d,CAAAA,CAAO,EAId,CACD,CAAA,CACAze,EAAAA,CAAc,IAAA,CAAMye,CAAAA,EACnBE,EAAAA,CAAqBF,CAAAA,CAAO,KAAK,CACnC,CAAA,CACE/f,IAACgE,GAAAA,CAAA,CACC,KAAK,QAAA,CACL,OAAA,CAAQ,QACR,IAAA,CAAK,IAAA,CACL,QAAS9B,EAAAA,CAER,QAAA,CAAAlB,EAAO,YAAA,CACV,CAAA,CACE,MACN,CAAA,CACE,IAAA,CAAA,CAEN,CAAA,CAEC4d,EAAAA,EAAqBnd,CAAAA,CACpBzB,GAAAA,CAAC,OACC,eAAA,CAAc,mCAAA,CACd,UAAU,kEAAA,CAET,QAAA,CAAAyB,EACH,CAAA,CACE,IAAA,CAAA,CACN,CAEJ,CAAA,CAEA,SAASue,EAA2B,CAClC,MAAA,CAAAD,EACA,MAAA,CAAA/e,CAAAA,CACA,qBAAAmB,CACF,CAAA,CAIG,CACD,GAAI4d,CAAAA,CAAO,IAAA,GAAS,OAClB,OACE7f,IAAAA,CAACyd,EAAA,CAAW,SAAA,CAAU,oBACpB,QAAA,CAAA,CAAA3d,GAAAA,CAAC6d,EAAA,CACC,KAAA,CAAO,OAAOkC,CAAAA,CAAO,KAAA,EAAU,SAAWA,CAAAA,CAAO,KAAA,CAAQ,GACzD,QAAA,CAAW/Z,CAAAA,EAA+C,CACxD7D,CAAAA,CAAqB4d,CAAAA,CAAO,EAAA,CAAI/Z,EAAM,MAAA,CAAO,KAAK,EACpD,CAAA,CACA,WAAA,CAAa+Z,EAAO,WAAA,EAAeA,CAAAA,CAAO,MAC1C,YAAA,CAAY,CAAA,EAAG/e,EAAO,OAAO,CAAA,EAAA,EAAK+e,EAAO,KAAK,CAAA,CAAA,CAChD,EACA/f,GAAAA,CAAC4d,CAAAA,CAAA,CAAgB,KAAA,CAAM,cAAA,CAAe,aAAA,CAAY,OAChD,QAAA,CAAA5d,GAAAA,CAACwf,EAAA,EAAW,CAAA,CACd,GACF,CAAA,CAIJ,IAAMU,IAAiB,KAAA,CAAM,OAAA,CAAQH,EAAO,KAAK,CAAA,CAC7CA,EAAO,KAAA,CAAM,GAAA,CAAI,MAAM,CAAA,CACvB,OAAOA,CAAAA,CAAO,KAAA,EAAU,QAAA,EAAYA,CAAAA,CAAO,MACzC,CAACA,CAAAA,CAAO,KAAK,CAAA,CACb,GACAI,CAAAA,CACJD,GAAAA,CAAe,SAAW,CAAA,CACtBH,CAAAA,CAAO,MACP,CAAA,EAAGA,CAAAA,CAAO,KAAK,CAAA,EAAA,EACbG,GAAAA,CAAe,SAAW,CAAA,CACrBH,CAAAA,CAAO,OAAA,CAAQ,IAAA,CACbpE,CAAAA,EAAWA,CAAAA,CAAO,QAAUuE,GAAAA,CAAe,CAAC,CAC/C,CAAA,EAAG,KAAA,EAASA,IAAe,CAAC,CAAA,CAC5BA,IAAe,MACrB,CAAA,CAAA,CAEN,OACEhgB,IAAAA,CAACic,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAnc,GAAAA,CAACwc,EAAA,CAAoB,OAAA,CAAO,IAAA,CAC1B,QAAA,CAAAxc,GAAAA,CAACgE,GAAAA,CAAA,CAAO,IAAA,CAAK,QAAA,CAAS,QAAQ,SAAA,CAAU,IAAA,CAAK,KAC1C,QAAA,CAAAmc,CAAAA,CACH,EACF,CAAA,CACAjgB,IAAAA,CAACkc,EAAA,CAAoB,KAAA,CAAM,QAAQ,SAAA,CAAU,MAAA,CAC3C,UAAApc,GAAAA,CAAC0d,CAAAA,CAAA,CAAmB,QAAA,CAAAqC,CAAAA,CAAO,KAAA,CAAM,EACjC7f,IAAAA,CAACmc,CAAAA,CAAA,CACE,QAAA,CAAA,CAAA0D,CAAAA,CAAO,OAAS,QAAA,CACf/f,GAAAA,CAACsc,EAAA,CACC,OAAA,CAAS,IAAM,CACbna,CAAAA,CAAqB4d,EAAO,EAAA,CAAI,EAAE,EACpC,CAAA,CAEC,QAAA,CAAA/e,CAAAA,CAAO,gBAAA,EACNuC,EAAAA,CAA0B,gBAAA,CAC9B,EACE,IAAA,CACHwc,CAAAA,CAAO,QAAQ,GAAA,CAAKpE,CAAAA,EACnB3b,IAACyd,CAAAA,CAAA,CAEC,QAASyC,GAAAA,CAAe,QAAA,CAASvE,EAAO,KAAK,CAAA,CAC7C,gBAAkB5V,CAAAA,EAAuC,CACvD,GAAIga,CAAAA,CAAO,IAAA,GAAS,QAAA,CAAU,CAC5B5d,CAAAA,CACE4d,CAAAA,CAAO,GACPha,CAAAA,GAAY,IAAA,CAAO4V,EAAO,KAAA,CAAQ,EACpC,EACA,MACF,CAEA,IAAMyE,CAAAA,CAAa,IAAI,IAAIF,GAAc,CAAA,CACrCna,IAAY,IAAA,CACdqa,CAAAA,CAAW,IAAIzE,CAAAA,CAAO,KAAK,CAAA,CAE3ByE,CAAAA,CAAW,MAAA,CAAOzE,CAAAA,CAAO,KAAK,CAAA,CAEhCxZ,CAAAA,CAAqB4d,EAAO,EAAA,CAAI,KAAA,CAAM,KAAKK,CAAU,CAAC,EACxD,CAAA,CAEC,QAAA,CAAAzE,CAAAA,CAAO,OApBHA,CAAAA,CAAO,KAqBd,CACD,CAAA,CAAA,CACH,CAAA,CAAA,CACF,GACF,CAEJ,CACF,CAEA,SAASsE,EAAAA,CAAqBtT,CAAAA,CAAgB,CAC5C,OAAI,KAAA,CAAM,QAAQA,CAAK,CAAA,CACdA,EAAM,MAAA,CAAS,CAAA,CAGMA,GAAU,IAAA,EAAQA,CAAAA,GAAU,EAC5D,CCnyBA,IAAM0T,EAAAA,CAAuCC,CAAA,CAAA,IAAA,CAAK,UAEzC,CAAE,SADM,MAAM,OAAO,8CAAkC,CAAA,EACrC,0BAA2B,EACrD,CAAA,CAEM,SAASC,GACdjgB,CAAAA,CACA,CACA,IAAMC,CAAAA,CACJ,OAAOD,EAAM,cAAA,EAAmB,QAAA,CAC5BA,EAAM,cAAA,CACN,MAAA,CAIN,OAFEA,CAAAA,CAAM,cAAA,GAAmB,IAAA,EAAQC,GAAQ,OAAA,GAAY,IAAA,CAOrDP,IAAOsgB,CAAA,CAAA,QAAA,CAAN,CACC,SACEtgB,GAAAA,CAACwgB,CAAAA,CAAA,CACE,GAAGlgB,CAAAA,CACJ,aAAcA,CAAAA,CAAM,YAAA,CAAa,MAC/B,CAAA,CACA,IAAA,CAAK,IAAI,CAAA,CAAG,IAAA,CAAK,KAAA,CAAMC,CAAAA,EAAQ,gBAAA,EAAoB,EAAE,CAAC,CACxD,CAAA,CACF,EAGF,QAAA,CAAAP,GAAAA,CAACqgB,GAAA,CAAgC,GAAG/f,EAAO,CAAA,CAC7C,CAAA,CAhBON,IAACwgB,CAAAA,CAAA,CAAqB,GAAGlgB,CAAAA,CAAO,CAkB3C,CC7BA,IAAM4M,EAAAA,CAAiB,6BAAA,CAEvB,IAAMuT,EAAAA,CAAiD,CACrD,UACA,kBAAA,CACA,eAAA,CACA,cACA,eAAA,CACA,cAAA,CACA,UACA,UAAA,CACA,gBAAA,CACA,cACF,CAAA,CACIC,EAAAA,CAAa,EAEV,SAASC,EAAAA,CACdpgB,EAC2B,CAC3B,IAAMiN,EAAUC,EAAAA,CAAelN,CAAM,CAAA,CACrC,GAAI,CAACA,CAAAA,EAAU,CAACiN,CAAAA,CACd,OAAO,EAAC,CAGV,IAAIkB,EACJ,GAAI,CACFA,EAAalB,CAAAA,CAAQ,OAAA,CAAQG,GAAcpN,CAAAA,CAAO,GAAG,CAAC,EACxD,CAAA,MAASsG,EAAO,CACd,OAAAtG,CAAAA,CAAO,OAAA,GAAU,CAAE,KAAA,CAAAsG,EAAO,SAAA,CAAW,MAAO,CAAC,CAAA,CACtC,EACT,CACA,GAAI,CAAC6H,CAAAA,CACH,OAAO,EAAC,CAGV,IAAId,EACJ,GAAI,CACFA,GAAUrN,CAAAA,CAAO,WAAA,EAAe,IAAA,CAAK,KAAA,EAAOmO,CAAU,EACxD,OAAS7H,CAAAA,CAAO,CACd,OAAAtG,CAAAA,CAAO,OAAA,GAAU,CAAE,KAAA,CAAAsG,CAAAA,CAAO,SAAA,CAAW,aAAc,CAAC,CAAA,CAC7C,EACT,CAEA,GAAI,CAACmI,EAAAA,CAASpB,CAAM,CAAA,EAAK,EAAE,SAAA,GAAaA,CAAAA,CAAAA,EAAW,EAAE,OAAA,GAAWA,GAC9D,OAAO,GAGT,IAAMC,CAAAA,CAAgBtN,EAAO,OAAA,EAAW,CAAA,CACpCuN,EAAqBF,CAAAA,CAAO,KAAA,CAChC,GAAIA,CAAAA,CAAO,OAAA,GAAYC,EAAe,CACpC,GAAI,CAACtN,CAAAA,CAAO,OAAA,CACV,OAAO,EAAC,CAEV,GAAI,CACFuN,CAAAA,CAAYvN,CAAAA,CAAO,QACjB,CAAE,OAAA,CAASqN,EAAO,OAAA,CAAS,KAAA,CAAOA,EAAO,KAAM,CAAA,CAC/CC,CACF,EACF,CAAA,MAAShH,EAAO,CACd,OAAAtG,EAAO,OAAA,GAAU,CAAE,KAAA,CAAAsG,CAAAA,CAAO,SAAA,CAAW,SAAU,CAAC,CAAA,CACzC,EACT,CACF,CAEA,OAAK,KAAA,CAAM,OAAA,CAAQiH,CAAS,CAAA,CAIrBA,CAAAA,CACJ,IAAK8S,CAAAA,EAASC,EAAAA,CAAkBD,EAAMrgB,CAAAA,CAAO,MAAM,CAAC,CAAA,CACpD,MAAA,CAAQqgB,CAAAA,EAAqC,CAAA,CAAQA,CAAK,CAAA,CALpD,EAMX,CAEO,SAASE,EAAAA,CACdvgB,CAAAA,CACAwgB,EACAC,CAAAA,CACA,CACA,IAAMC,CAAAA,CAAiBF,CAAAA,CAAK,MAAK,CACjC,GAAI,CAACxgB,CAAAA,EAAU,CAAC0gB,EACd,OAGF,IAAMC,CAAAA,CAAM,IAAI,IAAA,EAAK,CAAE,aAAY,CAC7BN,CAAAA,CAA2B,CAC/B,EAAA,CAAIO,EAAAA,GACJ,IAAA,CAAMF,CAAAA,CACN,UAAWC,CAAAA,CACX,SAAA,CAAWA,EACX,KAAA,CAAOE,EAAAA,CAAsBJ,EAAOzgB,CAAAA,CAAO,MAAM,CACnD,CAAA,CACM8gB,CAAAA,CAAQ,CAAC,GAAGV,EAAAA,CAAwBpgB,CAAM,EAAGqgB,CAAI,CAAA,CACvD,OAAOU,EAAAA,CAAW/gB,CAAAA,CAAQ8gB,EAAO,QAAQ,CAAA,CAAIE,GAAeX,CAAI,CAAA,CAAI,MACtE,CAEO,SAASY,GACdjhB,CAAAA,CACAkhB,CAAAA,CACAV,EACA,CACA,IAAME,CAAAA,CAAiBF,CAAAA,CAAK,IAAA,EAAK,CACjC,GAAI,CAACxgB,CAAAA,EAAU,CAAC0gB,CAAAA,CACd,OAGF,IAAIS,CAAAA,CACEL,CAAAA,CAAQV,GAAwBpgB,CAAM,CAAA,CAAE,IAAKqgB,CAAAA,EAC7CA,CAAAA,CAAK,KAAOa,CAAAA,CACPb,CAAAA,EAETc,EAAU,CACR,GAAGd,CAAAA,CACH,IAAA,CAAMK,CAAAA,CACN,SAAA,CAAW,IAAI,IAAA,EAAK,CAAE,aACxB,CAAA,CACOS,EACR,CAAA,CACD,GAAKA,CAAAA,CAIL,OAAOJ,EAAAA,CAAW/gB,CAAAA,CAAQ8gB,EAAO,QAAQ,CAAA,CACrCE,GAAeG,CAAO,CAAA,CACtB,MACN,CAEO,SAASC,EAAAA,CACdphB,CAAAA,CACAkhB,CAAAA,CACA,CACA,GAAI,CAAClhB,CAAAA,CACH,OAAO,MAAA,CAGT,IAAMkF,EAAUkb,EAAAA,CAAwBpgB,CAAM,EACxC8gB,CAAAA,CAAQ5b,CAAAA,CAAQ,OAAQmb,CAAAA,EAASA,CAAAA,CAAK,KAAOa,CAAE,CAAA,CACrD,OAAOJ,CAAAA,CAAM,MAAA,GAAW5b,CAAAA,CAAQ,MAAA,EAAU6b,EAAAA,CAAW/gB,CAAAA,CAAQ8gB,EAAO,QAAQ,CAC9E,CAEO,SAASO,EAAAA,CACdrhB,EACA,CACA,IAAMiN,EAAUC,EAAAA,CAAelN,CAAM,EACrC,GAAI,CAACA,GAAU,CAACiN,CAAAA,CACd,OAAO,MAAA,CAGT,GAAI,CACFA,CAAAA,CAAQ,UAAA,CAAWG,EAAAA,CAAcpN,EAAO,GAAG,CAAC,EAC9C,CAAA,MAASsG,CAAAA,CAAO,CACd,OAAAtG,CAAAA,CAAO,UAAU,CAAE,KAAA,CAAAsG,EAAO,SAAA,CAAW,QAAS,CAAC,CAAA,CACxC,KACT,CACA,OAAAtG,CAAAA,CAAO,QAAA,GAAW,EAAC,CAAG,OAAO,EACtB,IACT,CAEA,SAAS+gB,EAAAA,CACP/gB,CAAAA,CACA8gB,EACAxS,CAAAA,CACA,CACA,IAAMrB,CAAAA,CAAUC,EAAAA,CAAelN,CAAM,CAAA,CACrC,GAAI,CAACiN,CAAAA,CACH,OAAO,OAGT,IAAIkB,CAAAA,CACJ,GAAI,CACF,IAAME,CAAAA,CAAsC,CAC1C,OAAA,CAASrO,CAAAA,CAAO,SAAW,CAAA,CAC3B,KAAA,CAAA8gB,CACF,CAAA,CACA3S,CAAAA,CAAAA,CAAcnO,EAAO,SAAA,EAAa,IAAA,CAAK,WAAWqO,CAAO,EAC3D,OAAS/H,CAAAA,CAAO,CACd,OAAAtG,CAAAA,CAAO,OAAA,GAAU,CAAE,KAAA,CAAAsG,CAAAA,CAAO,SAAA,CAAW,WAAY,CAAC,CAAA,CAC3C,KACT,CAEA,GAAI,CACF2G,CAAAA,CAAQ,OAAA,CAAQG,GAAcpN,CAAAA,CAAO,GAAG,EAAGmO,CAAU,EACvD,OAAS7H,CAAAA,CAAO,CACd,OAAAtG,CAAAA,CAAO,OAAA,GAAU,CAAE,KAAA,CAAAsG,CAAAA,CAAO,SAAA,CAAW,OAAQ,CAAC,CAAA,CACvC,KACT,CACA,IAAMgb,EAAYR,CAAAA,CAAM,GAAA,CAAIE,EAAc,CAAA,CAC1C,OAAAhhB,EAAO,QAAA,GAAWshB,CAAAA,CAAWhT,CAAS,CAAA,CAC/B,IACT,CAEA,SAASuS,EAAAA,CACPJ,CAAAA,CACA/R,CAAAA,CACA,CACA,IAAMhK,EAAW,IAAI,GAAA,CAAIgK,GAAUwR,EAAc,CAAA,CAC3CqB,EAAoC,EAAC,CAC3C,IAAA,IAAW5S,CAAAA,IAAS,MAAA,CAAO,IAAA,CAAK8R,CAAK,CAAA,CAC/B/b,CAAAA,CAAS,IAAIiK,CAAK,CAAA,EACpB,OAAO,MAAA,CAAO4S,CAAAA,CAAU,CACtB,CAAC5S,CAAK,EAAG6S,GAAgB7S,CAAAA,CAAO8R,CAAAA,CAAM9R,CAAK,CAAC,CAC9C,CAAC,CAAA,CAGL,OAAO4S,CACT,CAEA,SAASjB,GACPlU,CAAAA,CACAsC,CAAAA,CACgC,CAChC,GACE,EAAA,CAACD,GAASrC,CAAK,CAAA,EACf,OAAOA,CAAAA,CAAM,EAAA,EAAO,QAAA,EACpB,CAACA,CAAAA,CAAM,EAAA,EACP,OAAOA,CAAAA,CAAM,IAAA,EAAS,UACtB,CAACA,CAAAA,CAAM,KAAK,IAAA,EAAK,EACjB,OAAOA,CAAAA,CAAM,SAAA,EAAc,UAC3B,OAAOA,CAAAA,CAAM,WAAc,QAAA,CAAA,CAK7B,OAAO,CACL,EAAA,CAAIA,CAAAA,CAAM,EAAA,CACV,KAAMA,CAAAA,CAAM,IAAA,CAAK,MAAK,CACtB,SAAA,CAAWA,EAAM,SAAA,CACjB,SAAA,CAAWA,EAAM,SAAA,CACjB,KAAA,CAAOqV,GAAcrV,CAAAA,CAAM,KAAA,CAAOsC,CAAM,CAC1C,CACF,CAEA,SAAS+S,EAAAA,CACPrV,CAAAA,CACAsC,CAAAA,CACA,CACA,GAAI,CAACD,EAAAA,CAASrC,CAAK,EACjB,OAAO,GAGT,IAAM1H,CAAAA,CAAW,IAAI,GAAA,CAAIgK,CAAAA,EAAUwR,EAAc,CAAA,CAC3CO,CAAAA,CAAiC,EAAC,CAClCvO,CAAAA,CAAUwP,GAAgBtV,CAAAA,CAAM,OAAO,CAAA,CACzC1H,CAAAA,CAAS,GAAA,CAAI,SAAS,GAAKwN,CAAAA,GAASuO,CAAAA,CAAM,QAAUvO,CAAAA,CAAAA,CACxD,IAAMyP,EAAaC,EAAAA,CAAmBxV,CAAAA,CAAM,UAAU,CAAA,CAClD1H,CAAAA,CAAS,IAAI,YAAY,CAAA,EAAKid,IAAYlB,CAAAA,CAAM,UAAA,CAAakB,GACjE,IAAM1P,CAAAA,CAAepD,EAAAA,CAAsBzC,CAAAA,CAAM,YAAY,CAAA,CACzD1H,EAAS,GAAA,CAAI,cAAc,GAAKuN,CAAAA,GAClCwO,CAAAA,CAAM,aAAexO,CAAAA,CAAAA,CAEvB,IAAMrD,EAAaC,EAAAA,CAAsBzC,CAAAA,CAAM,gBAAgB,CAAA,CAC3D1H,CAAAA,CAAS,IAAI,kBAAkB,CAAA,EAAKkK,IACtC6R,CAAAA,CAAM,gBAAA,CAAmB7R,CAAAA,CAAAA,CAE3B,IAAMiT,CAAAA,CAAUC,EAAAA,CAAgB1V,EAAM,aAAa,CAAA,CAC/C1H,EAAS,GAAA,CAAI,eAAe,GAAKmd,CAAAA,GAASpB,CAAAA,CAAM,cAAgBoB,CAAAA,CAAAA,CACpE,IAAMzQ,EACJhF,CAAAA,CAAM,QAAA,GAAa,KACf,IAAA,CACAyC,EAAAA,CAAsBzC,EAAM,QAAQ,CAAA,CACtC1H,CAAAA,CAAS,GAAA,CAAI,UAAU,CAAA,EAAK0M,IAAa,MAAA,GAC3CqP,CAAAA,CAAM,SAAWrP,CAAAA,CAAAA,CAEnB,IAAMpC,EAAQC,EAAAA,CAAoB7C,CAAAA,CAAM,WAAW,CAAA,CAC/C1H,CAAAA,CAAS,GAAA,CAAI,aAAa,CAAA,EAAKsK,CAAAA,GAAOyR,EAAM,WAAA,CAAczR,CAAAA,CAAAA,CAC9D,IAAM+S,CAAAA,CAAUC,EAAAA,CAAgB5V,CAAAA,CAAM,aAAa,CAAA,CAC/C1H,CAAAA,CAAS,IAAI,eAAe,CAAA,EAAKqd,IACnCtB,CAAAA,CAAM,aAAA,CAAgBsB,GAExB,IAAMjT,CAAAA,CAASC,GAAqB3C,CAAAA,CAAM,YAAY,EACtD,OAAI1H,CAAAA,CAAS,IAAI,cAAc,CAAA,EAAKoK,IAAQ2R,CAAAA,CAAM,YAAA,CAAe3R,CAAAA,CAAAA,CAE/DpK,CAAAA,CAAS,GAAA,CAAI,SAAS,IACrB0H,CAAAA,CAAM,OAAA,GAAY,WACjBA,CAAAA,CAAM,OAAA,GAAY,eAClBA,CAAAA,CAAM,OAAA,GAAY,cAEpBqU,CAAAA,CAAM,OAAA,CAAUrU,EAAM,OAAA,CAAA,CAGtB1H,CAAAA,CAAS,IAAI,UAAU,CAAA,GACtB0H,EAAM,QAAA,GAAa,OAAA,EAAWA,CAAAA,CAAM,QAAA,GAAa,MAAA,CAAA,GAElDqU,CAAAA,CAAM,SAAWrU,CAAAA,CAAM,QAAA,CAAA,CAErB1H,EAAS,GAAA,CAAI,gBAAgB,GAAK,OAAO0H,CAAAA,CAAM,gBAAmB,SAAA,GACpEqU,CAAAA,CAAM,eAAiBrU,CAAAA,CAAM,cAAA,CAAA,CAE3B1H,EAAS,GAAA,CAAI,cAAc,GAAK,OAAO0H,CAAAA,CAAM,YAAA,EAAiB,QAAA,GAChEqU,CAAAA,CAAM,YAAA,CAAerU,EAAM,YAAA,CAAA,CAEtBqU,CACT,CAEA,SAASO,EAAAA,CAAeX,EAA8C,CACpE,OAAO,CACL,GAAGA,CAAAA,CACH,MAAOoB,EAAAA,CAAcpB,CAAAA,CAAK,MAAO,MAAA,CAAO,IAAA,CAAKA,EAAK,KAAK,CAAmC,CAC5F,CACF,CAEA,SAASmB,GACP7S,CAAAA,CACAvC,CAAAA,CACA,CACA,OAAI,KAAA,CAAM,QAAQA,CAAK,CAAA,CACbA,EAAyB,GAAA,CAAKkD,CAAAA,EACpCb,GAASa,CAAI,CAAA,CAAI,CAAE,GAAGA,CAAK,EAAIA,CACjC,CAAA,CAEEb,EAAAA,CAASrC,CAAK,CAAA,CACZuC,CAAAA,GAAU,gBACL,CACL,IAAA,CAAM,MAAM,OAAA,CAAQvC,CAAAA,CAAM,IAAI,CAAA,CAC1B,CAAC,GAAIA,CAAAA,CAAM,IAAuB,EAClC,MAAA,CACJ,KAAA,CAAO,MAAM,OAAA,CAAQA,CAAAA,CAAM,KAAK,CAAA,CAC5B,CAAC,GAAIA,CAAAA,CAAM,KAAwB,CAAA,CACnC,MACN,CAAA,CAEK,CAAE,GAAGA,CAAM,CAAA,CAEbA,CACT,CAEA,SAASsV,GAAgBtV,CAAAA,CAAgB,CACvC,GAAK,KAAA,CAAM,OAAA,CAAQA,CAAK,CAAA,CACxB,OAAOA,EACJ,MAAA,CACEkD,CAAAA,EACCb,EAAAA,CAASa,CAAI,CAAA,EAAK,OAAOA,EAAK,EAAA,EAAO,QACzC,EACC,GAAA,CAAKA,CAAAA,GAAU,CAAE,EAAA,CAAIA,CAAAA,CAAK,EAAA,CAAI,IAAA,CAAM,CAAA,CAAQA,CAAAA,CAAK,IAAM,CAAA,CAAE,CAC9D,CAEA,SAASsS,EAAAA,CAAmBxV,EAAgB,CAC1C,GACE,EAAA,CAACqC,EAAAA,CAASrC,CAAK,CAAA,EACf,CAAC,MAAA,CAAO,SAAA,CAAUA,EAAM,SAAS,CAAA,EAChCA,EAAM,SAAA,CAAuB,CAAA,EAC9B,CAAC,MAAA,CAAO,SAAA,CAAUA,EAAM,QAAQ,CAAA,EAC/BA,EAAM,QAAA,CAAsB,CAAA,CAAA,CAI/B,OAAO,CACL,SAAA,CAAWA,CAAAA,CAAM,SAAA,CACjB,QAAA,CAAUA,CAAAA,CAAM,QAClB,CACF,CAEA,SAAS0V,EAAAA,CAAgB1V,CAAAA,CAAgB,CACvC,GAAK,KAAA,CAAM,QAAQA,CAAK,CAAA,CACxB,OAAOA,CAAAA,CACJ,MAAA,CACEkD,GACCb,EAAAA,CAASa,CAAI,GACb,OAAOA,CAAAA,CAAK,EAAA,EAAO,QAAA,EACnB,MAAA,CAAO,SAAA,CAAU,eAAe,IAAA,CAAKA,CAAAA,CAAM,OAAO,CACtD,CAAA,CACC,IAAKA,CAAAA,GAAU,CAAE,GAAIA,CAAAA,CAAK,EAAA,CAAI,MAAOA,CAAAA,CAAK,KAAM,EAAE,CACvD,CAEA,SAAS0S,EAAAA,CAAgB5V,CAAAA,CAAgB,CACvC,GAAKqC,EAAAA,CAASrC,CAAK,EACnB,OAAO,CACL,KAAM6C,EAAAA,CAAoB7C,CAAAA,CAAM,IAAI,CAAA,EAAK,GACzC,KAAA,CAAO6C,EAAAA,CAAoB7C,EAAM,KAAK,CAAA,EAAK,EAC7C,CACF,CAEA,SAASyC,EAAAA,CAAsBzC,CAAAA,CAAgB,CAC7C,GAAKqC,EAAAA,CAASrC,CAAK,CAAA,CACnB,OAAO,OAAO,WAAA,CACZ,MAAA,CAAO,QAAQA,CAAK,CAAA,CAAE,OACnBiD,CAAAA,EAAsC,OAAOA,EAAM,CAAC,CAAA,EAAM,SAC7D,CACF,CACF,CAEA,SAASN,EAAAA,CAAqB3C,CAAAA,CAAgB,CAC5C,GAAKqC,EAAAA,CAASrC,CAAK,CAAA,CACnB,OAAO,OAAO,WAAA,CACZ,MAAA,CAAO,QAAQA,CAAK,CAAA,CAAE,OACnBiD,CAAAA,EACC,OAAOA,EAAM,CAAC,CAAA,EAAM,UACpB,MAAA,CAAO,QAAA,CAASA,EAAM,CAAC,CAAC,CAAA,EACxBA,CAAAA,CAAM,CAAC,CAAA,EAAK,CAChB,CACF,CACF,CAEA,SAASJ,EAAAA,CAAoB7C,EAAgB,CAC3C,GAAK,MAAM,OAAA,CAAQA,CAAK,EACxB,OAAOA,CAAAA,CAAM,OAAQkD,CAAAA,EAAyB,OAAOA,GAAS,QAAQ,CACxE,CAEA,SAASpC,EAAAA,CAAelN,CAAAA,CAA+C,CACrE,GAAKA,CAAAA,CAGL,IAAIA,CAAAA,CAAO,OAAA,CACT,OAAOA,CAAAA,CAAO,OAAA,CAEhB,GAAI,EAAA,OAAO,MAAA,CAAW,GAAA,CAAA,CAGtB,GAAI,CACF,OAAO,OAAO,YAChB,CAAA,MAASsG,EAAO,CACdtG,CAAAA,CAAO,OAAA,GAAU,CAAE,KAAA,CAAAsG,CAAAA,CAAO,UAAW,MAAO,CAAC,EAC7C,MACF,CAAA,CACF,CAEA,SAASsa,EAAAA,EAAoB,CAC3B,OAAI,OAAO,WAAW,MAAA,EAAQ,UAAA,EAAe,WACpC,UAAA,CAAW,MAAA,CAAO,YAAW,EAEtCT,EAAAA,EAAc,CAAA,CACP,CAAA,KAAA,EAAQ,IAAA,CAAK,GAAA,GAAM,QAAA,CAAS,EAAE,CAAC,CAAA,CAAA,EAAIA,EAAAA,CAAW,SAAS,EAAE,CAAC,GACnE,CAEA,SAAS/S,GAAcS,CAAAA,CAAa,CAClC,OAAO,CAAA,EAAGlB,EAAc,GAAGkB,CAAG,CAAA,CAChC,CAEA,SAASY,EAAAA,CAASrC,CAAAA,CAAkD,CAClE,OAAO,OAAOA,GAAU,QAAA,EAAYA,CAAAA,GAAU,MAAQ,CAAC,KAAA,CAAM,QAAQA,CAAK,CAC5E,CC9ZO,SAAS6V,EAAAA,CAAmC,CACjD,OAAA,CAAAje,CAAAA,CACA,oBAAA,CAAAqD,CAAAA,CACA,oBAAA,CAAAE,CAAAA,CACA,0BAAAK,CAAAA,CACA,mBAAA,CAAAsa,EACA,yBAAA,CAAAja,CAAAA,CACA,0BAAAE,CAAAA,CACA,MAAA,CAAA1H,EACA,KAAA,CAAA6B,CAAAA,CACA,eAAAib,CAAAA,CACA,WAAA,CAAA5I,EACA,SAAA,CAAAwN,GACF,EAaG,CACD,IAAMnhB,CAAAA,CAAgCohB,CAAA,CAAA,OAAA,CAAQ,IACrC9Y,CAAAA,CAAwBtF,CAAO,CAAA,CAAE,GAAA,CAAI,CAAC,CAAE,MAAA,CAAA0B,EAAQ,KAAA,CAAA6D,CAAM,IAAM,CACjE,IAAM2X,EAAK1X,CAAAA,CAAY9D,CAAAA,CAAQ6D,CAAK,CAAA,CAC9B8Y,CAAAA,CAAS3c,EAAO,MAAA,CAChB4c,CAAAA,CAAcC,CAAAA,CAAe7c,CAAM,CAAA,CACnCxC,CAAAA,CACJ,OAAOmf,CAAAA,EAAW,QAAA,CACdA,EACAC,CAAAA,CACEE,CAAAA,CAAUF,CAAW,CAAA,CACrBE,CAAAA,CAAUtB,CAAE,CAAA,CAEduB,CAAAA,CACJlb,EAAqB,IAAA,EAAM,QAAA,CAAS2Z,CAAE,CAAA,GAAM,IAAA,CACxC,OACA3Z,CAAAA,CAAqB,KAAA,EAAO,QAAA,CAAS2Z,CAAE,CAAA,GAAM,IAAA,CAC3C,QACA,KAAA,CAER,OAAO,CACL,EAAA,CAAAA,CAAAA,CACA,MAAAhe,CAAAA,CACA,OAAA,CAAS0E,EAA0BsZ,CAAE,CAAA,GAAM,MAC3C,OAAA,CAASxb,CAAAA,CAAO,eAAiB,KAAA,CACjC,MAAA,CAAA+c,CACF,CACF,CAAC,CAAA,CACA,CAACze,CAAAA,CAASuD,CAAAA,CAAsBK,CAAyB,CAAC,CAAA,CAEvD8a,EAA6BN,CAAA,CAAA,OAAA,CAAQ,IACrCF,IAAwB,KAAA,CACnB,GAGF5Y,CAAAA,CAAwBtF,CAAO,EAAE,OAAA,CAAQ,CAAC,CAAE,MAAA,CAAA0B,CAAAA,CAAQ,MAAA6D,CAAM,CAAA,GAAM,CACrE,IAAMiW,CAAAA,CAAS9Z,CAAAA,CAAO,MAAM,MAAA,CAC5B,GAAI,CAAC8Z,CAAAA,CACH,OAAO,EAAC,CAGV,IAAM0B,EAAK1X,CAAAA,CAAY9D,CAAAA,CAAQ6D,CAAK,CAAA,CAC9B8Y,CAAAA,CAAS3c,EAAO,MAAA,CAChB4c,CAAAA,CAAcC,EAAe7c,CAAM,CAAA,CACnCxC,CAAAA,CACJsc,CAAAA,CAAO,KAAA,GACN,OAAO6C,GAAW,QAAA,CACfA,CAAAA,CACAC,EACEE,CAAAA,CAAUF,CAAW,EACrBE,CAAAA,CAAUtB,CAAE,GACdT,GAAAA,CAAQpZ,CAAAA,CAAqB,KAAMiI,CAAAA,EAASA,CAAAA,CAAK,KAAO4R,CAAE,CAAA,CAC1DyB,IACJ,OAAOnD,CAAAA,CAAO,OAAA,EAAY,UAAA,CACtBA,CAAAA,CAAO,OAAA,CAAQ,CAAE,IAAA,CAAM7K,CAAY,CAAC,CAAA,CACnC6K,CAAAA,CAAO,SAAW,EAAC,CAE1B,OAAO,CACL,CACE,GAAA0B,CAAAA,CACA,KAAA,CAAAhe,EACA,IAAA,CAAMsc,CAAAA,CAAO,KACb,KAAA,CAAOiB,GAAAA,EAAO,KAAA,CACd,WAAA,CAAajB,CAAAA,CAAO,WAAA,CACpB,QAASoD,CAAAA,CAA6BD,GAAU,CAClD,CACF,CACF,CAAC,CAAA,CACA,CAAC3e,EAASqD,CAAAA,CAAsB6a,CAAAA,CAAqBvN,CAAW,CAAC,CAAA,CAE9DkO,EAAwCT,CAAA,CAAA,WAAA,CAC5C,CAACtf,EAAkBsJ,CAAAA,GAAmB,CACpCnE,CAAAA,CAA2B/C,CAAAA,EAAY,CACrC,IAAMC,EAAOD,CAAAA,CAAQ,MAAA,CAAQsa,GAAWA,CAAAA,CAAO,EAAA,GAAO1c,CAAQ,CAAA,CAC9D,OAAIggB,EAAe1W,CAAK,CAAA,EACtBjH,EAAK,IAAA,CAAK,CAAE,GAAIrC,CAAAA,CAAU,KAAA,CAAAsJ,CAAM,CAAC,CAAA,CAE5BjH,CACT,CAAC,EACH,CAAA,CACA,CAAC8C,CAAyB,CAC5B,EAEM8a,CAAAA,CAAiCX,CAAA,CAAA,WAAA,CAAY,IAAM,CACvDna,CAAAA,CAA0B,EAAE,EAC9B,EAAG,CAACA,CAAyB,CAAC,CAAA,CAExB+a,CAAAA,CAAyCZ,cAC7C,CAACtf,CAAAA,CAAkBmgB,CAAAA,GAAuC,CACxD9a,CAAAA,CAA2BjD,CAAAA,EAAY,CACrC,IAAMgK,CAAAA,CAAAA,CAAQhK,EAAQ,IAAA,EAAQ,IAAI,MAAA,CAAQgc,CAAAA,EAAOA,IAAOpe,CAAQ,CAAA,CAC1DqM,GAASjK,CAAAA,CAAQ,KAAA,EAAS,EAAC,EAAG,MAAA,CAAQgc,GAAOA,CAAAA,GAAOpe,CAAQ,CAAA,CAElE,OAAImgB,CAAAA,GAAS,MAAA,EACX/T,EAAK,IAAA,CAAKpM,CAAQ,EAEhBmgB,CAAAA,GAAS,OAAA,EACX9T,EAAM,IAAA,CAAKrM,CAAQ,CAAA,CAGd,CAAE,IAAA,CAAAoM,CAAAA,CAAM,MAAAC,CAAM,CACvB,CAAC,EACH,CAAA,CACA,CAAChH,CAAyB,CAC5B,CAAA,CAEM+a,CAAAA,CAAwBd,CAAA,CAAA,WAAA,CAAY,IAAM,CAC9C,GAAKD,GAAAA,CAIL,OAAOgB,CAAAA,CAAmB,CACxB,UAAAhB,GAAAA,CACA,KAAA,CAAA7f,EACA,MAAA,CAAA7B,CACF,CAAC,CACH,CAAA,CAAG,CAAC0hB,GAAAA,CAAW1hB,CAAAA,CAAQ6B,CAAK,CAAC,CAAA,CAEvBhB,CAAAA,CAAgC8gB,CAAA,CAAA,OAAA,CAAQ,IACvCD,GAAAA,CAIE,CACL,GAAI5E,CAAAA,EAAkB,EAAC,CACvB,CACE,IAAK,gBAAA,CACL,KAAA,CAAO9c,EAAO,SAAA,CACd,IAAA,CAAM2iB,EACN,SAAA,CAAW,UAAA,CACX,QAASF,CACX,CACF,EAZS3F,CAAAA,EAAkB,EAAC,CAa3B,CAAC4E,GAAAA,CAAWe,CAAAA,CAAiBziB,EAAO,SAAA,CAAW8c,CAAc,CAAC,CAAA,CAEjE,OAAO,CACL,uBAAA,CAAAvc,CAAAA,CACA,wBAAAM,CAAAA,CACA,wBAAA,CAAAyhB,EACA,+BAAA,CAAAF,CAAAA,CACA,iCAAAG,CAAAA,CACA,oBAAA,CAAAN,CACF,CACF,CC9IO,SAASW,EAAAA,CAAgB3L,EAAoB,CAClD,OAAO4L,GAA0B5L,CAAE,CACrC,CAEO,SAAS4L,EAAAA,CACd5L,EACAlY,GAAAA,CAAkC,GAClC,CACA,IAAMM,EACJN,GAAAA,CAAQ,SAAA,EAAaM,EAAAA,CACjBmgB,CAAAA,CACJzgB,GAAAA,CAAQ,UAAA,EAAcwgB,GAClB9gB,CAAAA,CAAewY,CAAAA,CAAG,YAAc,EAAC,CACjC,CACJ,aAAA,CAAA6L,CAAAA,CACA,OAAA9f,CAAAA,CACA,QAAA,CAAAC,EACA,KAAA,CAAA8f,CAAAA,CACA,WAAA5kB,CAAAA,CACA,SAAA,CAAA6kB,EACA,QAAA,CAAA3L,GAAAA,CACA,KAAA,CAAA4L,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,UAAAC,CAAAA,CACA,WAAA,CAAAC,EAAc,OAAA,CACd,SAAA,CAAAC,IACA,WAAA,CAAAC,CAAAA,CACA,SAAAC,CAAAA,CACA,OAAA,CAAApgB,EACA,cAAA,CAAAC,CAAAA,CACA,gBAAAogB,CAAAA,CAAwB,CAAA,CAAA,QAAA,CACxB,eAAAngB,CACF,CAAA,CAAI4T,CAAAA,CACE/Z,CAAAA,CAAsB2b,EAAAA,CAA0B5B,CAAE,EAClD/T,CAAAA,CAAsBgY,EAAAA,CAA0BjE,CAAE,CAAA,CAClD,CAAE,gBAAAtX,CAAgB,CAAA,CAAI0Z,GAA0BpC,CAAE,CAAA,CAClDvW,EAAmB6b,EAAAA,CAAuBtF,CAAE,EAC5Cha,CAAAA,CAAoB+Z,EAAAA,CAAwBC,EAAI/T,CAAmB,CAAA,CACnEgE,CAAAA,CAAgB,CACpB,OAAA,CAAS,EAAA,CACT,KAAM,GAAA,CACN,OAAA,CAAS,GACX,CAAA,CAEA,OAAO,SAA0B,CAC/B,OAAA,CAAA3D,CAAAA,CACA,IAAA,CAAAkN,CAAAA,CACA,QAAA,CAAAG,EACA,QAAA,CAAAnR,CAAAA,CACA,MAAAqC,CAAAA,CACA,WAAA,CAAAnB,EACA,iBAAA,CAAAsB,CAAAA,CACA,yBAAA,CAAAV,CAAAA,CACA,uBAAA,CAAAS,EAAAA,CACA,uBAAA0P,EAAAA,CACA,eAAA,CAAA7J,GAAkB,KAAA,CAClB,2BAAA,CAAA6I,GAA8B,IAAA,CAC9B,cAAA,CAAArJ,GACA,aAAA,CAAA/G,EAAAA,CACA,sBAAA2Q,CAAAA,CACA,mBAAA,CAAAwQ,GACA,aAAA,CAAAhhB,EAAAA,CACA,eAAAD,EAAAA,CACA,kBAAA,CAAAN,EAAAA,CAAqB,CAAC,EAAA,CAAI,EAAA,CAAI,GAAI,GAAG,CAAA,CACrC,cAAAuI,GAAAA,CACA,WAAA,CAAAlB,GACA,OAAA,CAAAkK,EAAAA,CACA,gBAAAF,EAAAA,CACA,aAAA,CAAAxJ,GAAgB,KAAA,CAChB,SAAA,CAAArF,GACA,QAAA,CAAAwF,CAAAA,CACA,kBAAA9B,EAAAA,CACA,gBAAA,CAAA6B,EAAAA,CACA,SAAA,CAAAtF,EAAAA,CACA,gBAAA,CAAAmF,GAAmB,KAAA,CACnB,YAAA,CAAA0J,GACA,oBAAA,CAAAF,EAAAA,CACA,mBAAA/T,EAAAA,CAAqB,KAAA,CACrB,SAAAoT,EAAAA,CACA,gBAAA,CAAAU,GACA,eAAA,CAAA7N,EAAAA,CACA,kBAAAzF,EAAAA,CACA,WAAA,CAAAqS,GACA,mBAAA,CAAAc,EAAAA,CACA,sBAAA,CAAAuS,EAAAA,CAAyB,KAAA,CACzB,aAAA,CAAApT,GACA,qBAAA,CAAAjP,EAAAA,CACA,oBAAAN,CAAAA,CAAsB,KAAA,CACtB,eAAAgc,CAAAA,CAAiB,GACjB,gBAAA,CAAAnb,EAAAA,CAAmB,EAAC,CACpB,UAAA,CAAAzD,EAAa,EAAC,CACd,UAAAwjB,GAAAA,CACA,OAAA,CAAAvf,CAAAA,CACA,eAAA,CAAAd,EAAAA,CACA,mBAAA,CAAAN,GAAsB,KAAA,CACtB,cAAA,CAAAwP,GACA,WAAA,CAAAlD,EAAAA,CACA,WAAAqW,EAAAA,CACA,YAAA,CAAA5S,GACA,KAAA,CAAO6S,EAAAA,CACP,cAAAC,EAAAA,CACA,MAAA,CAAAC,GACA,MAAA,CAAA7jB,EAAAA,CACA,YAAA8jB,EAAAA,CAAc,EAAC,CACf,YAAA,CAAA/mB,EAAAA,CACA,UAAA,CAAAD,GACA,iBAAA,CAAAD,EAAAA,CACA,cAAAD,EAAAA,CACA,QAAA,CAAAwF,GACA,gBAAA,CAAAZ,EAAAA,CACA,iBAAAR,EAAAA,CAAmB,KAAA,CACnB,WAAA+iB,EAAAA,CACA,SAAA,CAAAhT,GAAY,KAAA,CACZ,eAAA,CAAAC,EACA,kBAAA,CAAAgT,EAAAA,CACA,UAAA,CAAAnT,EAAAA,CACA,cAAA,CAAAjP,EAAAA,CACA,uBAAAN,EAAAA,CACA,cAAA,CAAA3D,GACA,YAAA,CAAAP,EAAAA,CACA,iBAAAoT,EAAAA,CACA,wBAAA,CAAAY,GACA,YAAA,CAAAd,EAAAA,CACA,qBAAAa,EAAAA,CACA,oBAAA,CAAA/J,GAAuB,KAAA,CACvB,gBAAA,CAAAV,GAAmB,OAAA,CACnB,UAAA,CAAAmO,EAAAA,CAAa,MAAA,CACb,YAAA,CAAAoP,EAAAA,CAAe,KACf,UAAA,CAAA9jB,EAAAA,CAAa,KACb,WAAA,CAAA+jB,EAAAA,CAAc,KACd,GAAA,CAAAvd,EAAAA,CAAM,KAAA,CACN,QAAA,CAAAnJ,EAAAA,CAAW,IAAA,CACX,kBAAA0E,EAAAA,CACA,SAAA,CAAAiiB,GACA,cAAA,CAAAC,EAAAA,CACA,wBAAA5lB,EAAAA,CACA,WAAA,CAAA6lB,EAAAA,CAAc,KAAA,CACd,eAAA,CAAA5mB,EAAAA,CACA,WAAAI,EAAAA,CACA,aAAA,CAAAmK,GACA,WAAA,CAAA7K,EAAAA,CACA,WAAAmnB,EAAAA,CACA,cAAA,CAAA5b,EACF,CAAA,CAA0B,CACxB,IAAMyG,EAAAA,CAAqB,CAAA,CAAA,MAAA,CAA8B,IAAI,CAAA,CACvDoV,EAAAA,CAAqB,SAAgC,IAAI,CAAA,CACzDC,EAAAA,CAAgC,CAAA,CAAA,MAAA,CAA8B,IAAI,CAAA,CAClEC,GAA2B,CAAA,CAAA,MAAA,CAAsB,IAAI,EACrD5gB,EAAAA,CAAiB,CAAA,CAAA,MAAA,CAAoC,IAAI,CAAA,CACzDH,EAAAA,CAA6B,SAAsB,IAAI,CAAA,CACvDghB,GAAyB,CAAA,CAAA,KAAA,EAAM,CAC/BC,GAA+B,CAAA,CAAA,KAAA,EAAM,CACrC,UAAQ,IAAMC,CAAAA,CAA2BrhB,CAAO,CAAA,CAAG,CAACA,CAAO,CAAC,CAAA,CAClE,IAAMvF,GAAuB,CAAA,CAAA,OAAA,CAC3B,IAAM8E,GAAuB9C,EAAM,CAAA,CACnC,CAACA,EAAM,CACT,EACM6S,EAAAA,CACJ5Q,CAAAA,EAAqB0hB,IAAc,YAAA,CAC/BkB,EAAAA,CAAkBpT,IAAWkS,EAAAA,EAAc,OAAA,CAC3CmB,EAAAA,CACJpiB,EAAAA,EAAaihB,EAAAA,EAAc,UAAA,EAAY,UACnCoB,EAAAA,CAAmB7c,CAAAA,EAAYyb,IAAc,UAAA,EAAY,QAAA,CACzDqB,GACJxT,EAAAA,EAAgBmS,EAAAA,EAAc,aAC1BsB,EAAAA,CACJzU,EAAAA,EAAoBmT,IAAc,gBAAA,CAC9BuB,EAAAA,CACJ5kB,IAAiBqjB,EAAAA,EAAc,aAAA,CAC3BwB,GAAmBxU,EAAAA,EAAYgT,EAAAA,EAAc,QAAA,CAC7CyB,EAAAA,CACJhV,EAAAA,EAAeuT,EAAAA,EAAc,YACzB0B,EAAAA,CACJhV,EAAAA,EAAiBsT,IAAc,aAAA,CAC3B2B,EAAAA,CACJhV,IAAgBqT,EAAAA,EAAc,YAAA,CAC1B4B,GAAkBpjB,CAAAA,EAAWwhB,EAAAA,EAAc,QAC3C6B,EAAAA,CAAmBpjB,EAAAA,EAAYuhB,IAAc,QAAA,CAC7C8B,EAAAA,CACJ7jB,IAAkB+hB,EAAAA,EAAc,cAAA,CAC5B+B,EAAAA,CACJxB,EAAAA,GAAgBhiB,EAAAA,EAAmB,KAAA,EAAS,MACxCH,EAAAA,CAAU2jB,EAAAA,EAAoB5jB,EAAQ4iB,EAAAA,CAAmB,MAAA,CACzD9jB,GACJ8kB,EAAAA,EAAoB/kB,CAAAA,CAAcgkB,GAAyB,MAAA,CAC7DgB,EAAAA,CAAkChC,GAAc,CAC9C,aAAA,CAAerjB,KAAkB,MAAA,CACjC,WAAA,CAAa8P,KAAgB,MAAA,CAC7B,aAAA,CAAeC,EAAAA,GAAkB,MAAA,CACjC,YAAA,CAAcC,EAAAA,GAAiB,OAC/B,gBAAA,CAAkBE,EAAAA,GAAqB,OACvC,OAAA,CAASrO,CAAAA,GAAY,OACrB,QAAA,CAAUwO,EAAAA,GAAa,OACvB,YAAA,CAAc1O,CAAAA,GAAsB,OACpC,UAAA,CAAYS,EAAAA,GAAc,QAAawF,CAAAA,GAAa,MAAA,CACpD,aAAcsJ,EAAAA,GAAiB,MAAA,CAC/B,cAAA,CAAgB5P,EAAAA,GAAmB,MAAA,CACnC,OAAA,CAAS6P,KAAY,MAAA,CACrB,QAAA,CAAUrP,KAAa,MACzB,CAAC,EACD,IAAMwjB,EAAAA,CAAgCC,EAAAA,CACpC,cAAA,CACAtkB,CAAAA,CACAqiB,EACF,EACMkC,EAAAA,CAA0BD,EAAAA,CAC9B,UACAtU,EAAAA,CACAqS,EACF,EACMmC,EAAAA,CAA+BF,EAAAA,CACnC,cAAA,CACAvU,EAAAA,CACAsS,EACF,CAAA,CACMoC,GAAmCH,EAAAA,CACvC,kBAAA,CACAzU,GACAwS,EACF,CAAA,CACMqC,GAAgCJ,EAAAA,CACpC,eAAA,CACA5U,EACA2S,EACF,CAAA,CACMsC,GAA2BL,EAAAA,CAC/B,UAAA,CACAxU,GACAuS,EACF,CAAA,CACMuC,GAA8BN,EAAAA,CAClC,aAAA,CACA3U,EAAAA,CACA0S,EACF,CAAA,CACMwC,EAAAA,CAAgCP,GACpC,eAAA,CACAzkB,EAAAA,CACAwiB,EACF,CAAA,CACMyC,EAAAA,CAA+BR,GACnC,cAAA,CACA1U,EAAAA,CACAyS,EACF,CAAA,CACM0C,EAAAA,CAA0BT,GAC9B,SAAA,CACAxkB,EAAAA,CACAuiB,EACF,CAAA,CACM2C,EAAAA,CAA2BV,GAC/B,UAAA,CACArkB,EAAAA,CACAoiB,EACF,CAAA,CACM4C,EAAAA,CAAiCX,EAAAA,CACrC,iBACAvkB,EAAAA,CACAsiB,EACF,EACM6C,EAAAA,CAAkC,CAAA,CAAA,WAAA,CACrClgB,GAA0B,CACzBH,EAAAA,GAAoBG,CAAa,CAAA,CACjCqd,EAAAA,GAAiBnf,IAAa,CAC5B,GAAGA,EACH,UAAA,CAAY,CACV,UAAW8B,CAAAA,CACX,QAAA,CACEwe,EAAAA,EAAoBtgB,CAAAA,CAAQ,UAAA,CAAW,QAC3C,CACF,CAAA,CAAE,EACJ,EACA,CAAC2B,EAAAA,CAAmBwd,GAAemB,EAAgB,CACrD,EACM2B,EAAAA,CAAiC,CAAA,CAAA,WAAA,CACpCnb,GAAyB,CACxBtD,EAAAA,GAAmBsD,CAAY,CAAA,CAC/BqY,EAAAA,GAAiBnf,IAAa,CAC5B,GAAGA,CAAAA,CACH,UAAA,CAAY,CACV,SAAA,CACEqgB,IAAqBrgB,CAAAA,CAAQ,UAAA,CAAW,UAC1C,QAAA,CAAU8G,CACZ,CACF,CAAA,CAAE,EACJ,EACA,CAACtD,EAAAA,CAAkB2b,GAAekB,EAAiB,CACrD,EACM6B,EAAAA,CAAkB,CAAA,CAAA,WAAA,CACtB,CACEC,CAAAA,CACAhL,CAAAA,GACG,CACHiL,EAAAA,CAAmBjL,CAAAA,CAAQgL,CAAAA,CAAS5e,EAAa,EACnD,CAAA,CACA,CAACA,EAAa,CAChB,EACM8e,EAAAA,CAA0B,CAAA,CAAA,OAAA,CAC9B,IACE5oB,CAAAA,CAAW,GAAA,CAAK0d,IAAY,CAC1B,GAAGA,EACH,OAAA,CAAUzX,CAAAA,EAAe,CACvBwiB,EAAAA,CACE,CACE,SAAA,CAAW/K,CAAAA,CAAO,GAAA,CAClB,GAAA,CAAAzX,EACA,MAAA,CAAQ,WACV,EACA,IAAMyX,CAAAA,CAAO,QAAQzX,CAAG,CAC1B,EACF,CACF,CAAA,CAAE,EACJ,CAACjG,CAAAA,CAAYyoB,EAAS,CACxB,CAAA,CACMI,GAA0B,CAAA,CAAA,OAAA,CAG9B,IACElpB,EAAAA,CACK+oB,CAAAA,EAAY,CACXD,EAAAA,CACE,CACE,GAAA,CAAKC,CAAAA,CAAQ,IACb,MAAA,CAAQ,UACV,EACA,IAAM/oB,EAAAA,CAAW+oB,CAAO,CAC1B,EACF,CAAA,CACA,OACN,CAAC/oB,EAAAA,CAAY8oB,EAAS,CACxB,CAAA,CACMK,GAAwB,CAAA,CAAA,WAAA,CAC5B,CAACnhB,CAAAA,CAAgB1B,CAAAA,GAAe,CAC9B6D,EAAAA,GAAgB,CACd,KAAA,CAAAnC,CAAAA,CACA,IAAA1B,CAAAA,CACA,MAAA,CAAQ,MACV,CAAC,EACH,EACA,CAAC6D,EAAa,CAChB,CAAA,CACM,CACJ,eAAAiL,EAAAA,CACA,oBAAA,CAAArM,GACA,kBAAA,CAAAC,EAAAA,CACA,oBAAA,CAAAC,EAAAA,CACA,mBAAA,CAAAC,EAAAA,CACA,wBAAAgL,EAAAA,CACA,cAAA,CAAAY,GACA,eAAA,CAAA3L,EAAAA,CACA,kBAAAtH,EAAAA,CACA,mBAAA,CAAA1C,GACA,qBAAA,CAAAyV,EAAAA,CACA,eAAAxL,EAAAA,CACA,eAAA,CAAAsL,GACA,yBAAA,CAAApL,EAAAA,CACA,kBAAAG,EAAAA,CACA,mBAAA,CAAAmM,EAAAA,CACA,0BAAA,CAAAF,EAAAA,CACA,oBAAA,CAAAF,GACA,gBAAA,CAAAzV,EAAAA,CACA,wBAAAK,EAAAA,CACA,+BAAA,CAAA6U,GACA,YAAA,CAAApR,EAAAA,CACA,wBAAAuQ,EAAAA,CACA,qBAAA,CAAAE,GACA,uBAAA,CAAAC,EAAAA,CACA,2BAAAJ,EAAAA,CACA,kBAAA,CAAAE,GACA,sBAAA,CAAA7T,EAAAA,CACA,iBAAA,CAAA8J,EAAAA,CACA,oBAAA,CAAAC,EAAAA,CACA,mBAAAC,EAAAA,CACA,mBAAA,CAAA2K,GACA,0BAAA,CAAAzU,EAAAA,CACA,UAAAgK,EAAAA,CACA,aAAA,CAAAC,GACA,WAAA,CAAA0L,EACF,EAAI/D,EAAAA,CAAkB,CACpB,cAAe+U,EAAAA,CACf,WAAA,CAAaE,GACb,aAAA,CAAeC,EAAAA,CACf,YAAA,CAAcC,EAAAA,CACd,cAAA,CAAA/U,EAAAA,CACA,YAAAlD,EAAAA,CACA,gBAAA,CAAkB4X,GAClB,OAAA,CAAA1hB,CAAAA,CACA,aAAA4L,EAAAA,CACA,IAAA,CAAAsB,EACA,OAAA,CAAS8U,EAAAA,CACT,mBAAAhoB,EAAAA,CACA,2BAAA,CAAAmT,GACA,QAAA,CAAUyU,EAAAA,CACV,SAAAvU,CAAAA,CACA,UAAA,CAAAC,EAAAA,CACA,SAAA,CAAAE,EAAAA,CACA,eAAA,CAAAC,EACA,eAAA,CAAAnJ,EAAAA,CACA,aAAAiJ,EAAAA,CACA,qBAAA,CAAuBmV,GACvB,mBAAA,CAAqBE,EAAAA,CACrB,sBAAuBC,EAAAA,CACvB,oBAAA,CAAsBC,GACtB,wBAAA,CAA0BL,EAAAA,CAC1B,gBAAiBM,EAAAA,CACjB,gBAAA,CAAkBJ,GAClB,iBAAA,CAAmBO,EAAAA,CACnB,oBAAA,CAAsBV,EAAAA,CACtB,sBAAA,CAAwBS,EAAAA,CACxB,gBAAiBV,EAAAA,CACjB,yBAAA,CAA2BF,GAC3B,gBAAA,CAAkBW,EAAAA,CAClB,UAAWzB,EAAAA,CACX,QAAA,CAAUC,GACV,cAAA,CAAA/mB,EAAAA,CACA,aAAcgnB,EAAAA,CACd,kBAAA,CAAA9kB,GACA,gBAAA,CAAAyB,EAAAA,CACA,eAAgB8jB,EAAAA,CAChB,OAAA,CAASZ,EAAAA,CACT,sBAAA,CAAAnT,EAAAA,CACA,uBAAA,CAAA1P,GACA,iBAAA,CAAmB6Q,EAAAA,CACnB,SAAU2S,EACZ,CAAC,EACK,CACJ,aAAA,CAAAliB,EAAAA,CACA,WAAA,CAAA2jB,EAAAA,CACA,YAAA,CAAA5pB,GACA,YAAA,CAAAoG,EAAAA,CACA,SAAAE,EAAAA,CACA,cAAA,CAAAujB,GACA,eAAA,CAAA5oB,EAAAA,CACA,eAAA,CAAAsF,EACF,CAAA,CAAIujB,CAAAA,CAAc,CAChB,OAAA,CAAA5jB,CAAAA,CACA,aAAAnG,EAAAA,CACA,OAAA,CAAS4pB,EACX,CAAC,CAAA,CACK,CAAE,eAAA,CAAiBI,EAAAA,CAAoB,eAAAC,EAAe,CAAA,CAC1DC,IAA2B9C,EAAAA,CAAyBjS,EAAe,EAC/D9Q,EAAAA,CAAuB,CAAA,CAAA,WAAA,CAAY,IAAM,CACzC6iB,EAAAA,EAAY,QAAA,EAIhBC,GAAa,OAAA,EAAS,KAAA,GACxB,CAAA,CAAG,CAACD,IAAY,QAAQ,CAAC,EACnBiD,EAAAA,CAA4B,CAAA,CAAA,WAAA,CAC/BC,GAAkC,CACjCb,EAAAA,CACE,CACE,MAAA,CAAQ,YACV,EACA,IAAMrC,EAAAA,EAAY,eAAA,CAAgBkD,CAAK,CACzC,EACF,EACA,CAAClD,EAAAA,CAAYqC,EAAS,CACxB,CAAA,CAEMre,GAAevF,EAAAA,CAA2B,CAC9C,OAAAC,CAAAA,CACA,QAAA,CAAAC,EACA,mBAAA,CAAAC,CAAAA,CACA,QAAAC,CAAAA,CACA,cAAA,CAAAC,EACA,cAAA,CAAAC,CAAAA,CACA,aAAA,CAAAC,EAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,aAAAnG,EAAAA,CACA,YAAA,CAAAC,GACA,kBAAA,CAAAE,EAAAA,CACA,gBAAAiG,EAAAA,CACA,YAAA,CAAAC,GACA,MAAA,CAAQzF,EAAAA,CACR,qBAAA0F,EAAAA,CACA,iBAAA,CAAA3F,GACA,UAAA,CAAY+oB,EAAAA,CACZ,SAAAnjB,EAAAA,CACA,eAAA,CAAAC,EAAAA,CACA,QAAA,CAAAC,EACF,CAAC,EAEK,CACJ,kBAAA,CAAAjE,GACA,mBAAA,CAAAC,EAAAA,CACA,4BAAAC,EAAAA,CACA,0BAAA,CAAAC,GACA,gBAAA,CAAAuL,EAAAA,CACA,aAAAxN,EAAAA,CACA,aAAA,CAAA0M,GACA,YAAA,CAAAS,EAAAA,CACA,YAAA7M,EAAAA,CACA,KAAA,CAAAyD,EAAAA,CACA,oBAAA,CAAA4lB,EAAAA,CACA,iBAAA,CAAAC,GACA,kBAAA,CAAAnd,EACF,EAAI/D,EAAAA,CAAqB,CACvB,mBAAoB,KAAA,CACpB,gBAAA,CAAAE,GACA,GAAA,CAAAC,EAAAA,CACA,qBAAAC,EAAAA,CACA,kBAAA,CAAAC,GACA,oBAAA,CAAAC,EAAAA,CACA,oBAAAC,EAAAA,CACA,eAAA,CAAAC,EAAAA,CACA,iBAAA,CAAAtH,EAAAA,CACA,mBAAA,CAAA1C,GACA,cAAA,CAAAiK,EAAAA,CAEA,aAAA,CAAAC,EACA,yBAAA,CAAAC,EAAAA,CACA,qBAAAC,EAAAA,CACA,kBAAA,CAAA7J,GACA,eAAA,CAAAiG,EAAAA,CACA,eAAA6D,EAAAA,CACA,iBAAA,CAAAC,GACA,WAAA,CAAAC,EAAAA,CACA,yBAAA,CAA2B0K,EAAAA,CAC3B,uBAAA,CAAyBE,EAAAA,CACzB,0BAA2BC,EAAAA,CAC3B,4BAAA,CAA8BJ,GAC9B,oBAAA,CAAsBE,EAAAA,CACtB,eAAAvU,EAAAA,CACA,eAAA,CAAAkK,EAAAA,CACA,gBAAA,CAAAC,EAAAA,CACA,aAAA,CAAAC,GACA,aAAA,CAAAC,EAAAA,CACA,kBAAmBye,EAAAA,CACnB,gBAAA,CAAkBC,GAClB,SAAA,CAAA/jB,EAAAA,CACA,SAAA,CAAWmiB,EAAAA,CACX,QAAA,CAAUC,EAAAA,CACV,kBAAAhnB,EAAAA,CACA,sBAAA,CAAAM,GACA,iBAAA,CAAA8J,EAAAA,CACA,qBAAAC,EAAAA,CACA,kBAAA,CAAAC,GACA,0BAAA,CAAA9J,EAAAA,CACA,aAAA+J,EAAAA,CACA,SAAA,CAAAC,GACA,aAAA,CAAAC,EAAAA,CACA,SAAA3E,EAAAA,CAEA,aAAA,CAAA4E,GAAAA,CACA,cAAA,CAAAC,EAEF,CAAC,CAAA,CACKif,EAAAA,CAAejT,GAAgB,CACnC,OAAA,CAAAnR,EACA,YAAA,CAAcwD,EAAAA,CACd,aAAc,CAAA,CAAQ3J,EAAAA,CACtB,mBAAAG,EAAAA,CACA,aAAA,CAAeW,EAAW,MAAA,CAAS,CAAA,CACnC,eAAA,CAAiB,CAAA,CAAQH,EAAAA,CACzB,UAAA,CAAA8W,GACA,YAAA,CAAApW,CAAAA,CACA,mBAAA8L,EACF,CAAC,EACK,CAAE,wBAAA,CAAAuK,GAA0B,YAAA,CAAA8B,EAAAA,CAAc,gBAAAG,EAAgB,CAAA,CAC9D4Q,GACIC,EAAAA,CAAoC,CAAA,CAAA,OAAA,CAAQ,IACzC,IAAI,GAAA,CACT/e,CAAAA,CAAwBtF,CAAO,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAE,MAAA,CAAA0B,EAAQ,KAAA,CAAA6D,CAAM,IACjD,MAAA,CAAO,SAAA,CAAU,eAAe,IAAA,CAAK7D,CAAAA,CAAQ,MAAM,CAAA,EACxD,OAAOA,EAAO,IAAA,EAAS,UAAA,CACrB,CAAC8D,CAAAA,CAAY9D,CAAAA,CAAQ6D,CAAK,CAAC,CAAA,CAC3B,EACL,CACH,CAAA,CACC,CAACvF,CAAO,CAAC,EACNskB,EAAAA,CAAyBtd,EAAAA,CAAmB,OAC5Cud,EAAAA,CAA0B,CAAA,CAAA,OAAA,CAC9B,KAAO,CACL,QAAA,CAAA7kB,EACA,KAAA,CAAA8f,CAAAA,CACA,SAAA1L,GAAAA,CACA,SAAA,CAAA8L,CAAAA,CACA,QAAA,CAAAI,CACF,CAAA,CAAA,CACA,EACF,CAAA,CACM7lB,GAAqB,CAAA,CAAA,OAAA,CACzB,IACEmL,EAAwBtF,CAAO,CAAA,CAAE,KAC/B,CAAC,CAAE,OAAA0B,CAAO,CAAA,GAAMA,EAAO,IAAA,EAAM,SAC/B,EACF,CAAC1B,CAAO,CACV,CAAA,CACMwkB,EAAAA,CAA6B,CAAA,CAAA,WAAA,CACjC,CAAC1lB,CAAAA,CAAkB2lB,CAAAA,GAAwB,CAEvClT,EAAAA,CAAyB,GAAA,CAAIzS,CAAQ,CAAA,EACrC,MAAA,CAAO,UAAU,cAAA,CAAe,IAAA,CAC9BR,GAAM,QAAA,EAAS,CAAE,aACjBQ,CACF,CAAA,EAKF4lB,UAAU,IAAM,CACdpmB,EAAAA,CAAM,eAAA,CAAiB4C,EAAAA,GAAa,CAClC,GAAGA,EAAAA,CACH,CAACpC,CAAQ,EAAG2lB,CACd,EAAE,EACJ,CAAC,EACH,CAAA,CACA,CAAClT,GAA0BjT,EAAK,CAClC,EACMqmB,EAAAA,CAAwB,CAAA,CAAA,WAAA,CAC3B7lB,GAAqB,CACpB,GAAIyS,EAAAA,CAAyB,GAAA,CAAIzS,CAAQ,CAAA,CAAG,CAC1CR,EAAAA,CAAM,SAAA,CAAUQ,CAAQ,CAAA,EAAG,SAAA,GAC3B,MACF,CAEAR,GAAM,eAAA,CAAiB4C,CAAAA,EAAY,CACjC,GAAI,CAAC,OAAO,SAAA,CAAU,cAAA,CAAe,KAAKA,CAAAA,CAASpC,CAAQ,CAAA,CACzD,OAAOoC,CAAAA,CAGT,IAAMC,GAAO,CAAE,GAAGD,CAAQ,CAAA,CAC1B,OAAA,OAAOC,GAAKrC,CAAQ,CAAA,CACbqC,EACT,CAAC,EACH,EACA,CAACoQ,EAAAA,CAA0BjT,EAAK,CAClC,CAAA,CAEMsmB,GAAetmB,EAAAA,CAClB,mBAAA,EAAoB,CACpB,IAAA,CAAK,GAAA,CAAKsC,CAAAA,EAAQA,EAAI,QAAQ,CAAA,CAC3B7G,GACJ,OAAOymB,EAAAA,EAAe,WACpBA,EAAAA,CAAW,CACT,KAAMoE,EAAAA,CACN,iBAAA,CAAmBvqB,EACrB,CAAC,CAAA,CACCmmB,GACA,CACJ,uBAAA,CAAAxjB,GACA,uBAAA,CAAAM,EAAAA,CACA,wBAAA,CAAAyhB,EAAAA,CACA,+BAAA,CAAAF,EAAAA,CACA,iCAAAG,EAAAA,CACA,oBAAA,CAAAN,EACF,CAAA,CAAIT,EAAAA,CAA4B,CAC9B,OAAA,CAAAje,CAAAA,CACA,qBAAAqD,EAAAA,CACA,oBAAA,CAAAE,GACA,SAAA,CAAA4a,GAAAA,CACA,0BAAAva,EAAAA,CACA,mBAAA,CAAAsa,GACA,yBAAA,CAA2BxP,EAAAA,CAC3B,yBAAA,CAA2BG,EAAAA,CAC3B,MAAA,CAAQpU,EAAAA,CACR,MAAA6D,EAAAA,CACA,cAAA,CAAAib,EACA,WAAA,CAAA5I,EACF,CAAC,CAAA,CACKkU,EAAAA,CAA8B,UAClC,IACEvnB,EAAAA,CAAwB,IAAK+a,CAAAA,GAAY,CACvC,GAAGA,CAAAA,CACH,OAAA,CAAUgL,GAGJ,CACJD,EAAAA,CACE,CACE,SAAA,CAAW/K,CAAAA,CAAO,GAAA,CAClB,OAAQ,eACV,CAAA,CACA,IAAMA,CAAAA,CAAO,OAAA,CAAQgL,CAAO,CAC9B,EACF,CACF,CAAA,CAAE,CAAA,CACJ,CAAC/lB,EAAAA,CAAyB8lB,EAAS,CACrC,CAAA,CACM0B,EAAAA,CAAgC,UACpC,IACE1mB,EAAAA,CAAiB,GAAA,CAAKia,CAAAA,GAAY,CAChC,GAAGA,EACH,OAAA,CAAUgL,CAAAA,EAAkD,CAC1DD,EAAAA,CACE,CACE,UAAW/K,CAAAA,CAAO,GAAA,CAClB,OAAQ,iBACV,CAAA,CACA,IAAMA,CAAAA,CAAO,OAAA,CAAQgL,CAAO,CAC9B,EACF,CACF,CAAA,CAAE,CAAA,CACJ,CAACD,EAAAA,CAAWhlB,EAAgB,CAC9B,EACM2mB,EAAAA,CAA8B,CAAA,CAAA,OAAA,CAClC,KAAO,CACL,OAAA,CAASrhB,GACT,UAAA,CAAYvH,EAAAA,CACZ,YAAA,CAAc1C,EAAAA,CACd,gBAAA,CAAkB+U,EAAAA,CAClB,cAAenL,EAAAA,CACf,QAAA,CAAUI,GACV,WAAA,CAAaH,EAAAA,CACb,cAAeC,EAAAA,CACf,YAAA,CAAcC,EAAAA,CACd,OAAA,CAAS4L,EAAAA,CACT,QAAA,CAAUJ,GACV,cAAA,CAAgBE,EAAAA,CAChB,aAAc7U,EAChB,CAAA,CAAA,CACA,CACEgJ,EAAAA,CACAC,EAAAA,CACAC,GACAC,EAAAA,CACAgL,EAAAA,CACAY,GACA3L,EAAAA,CACAtH,EAAAA,CACA1C,GACAyV,EAAAA,CACAxL,EAAAA,CACAsL,GACA3U,EACF,CACF,CAAA,CACM2qB,EAAAA,CAAwB,CAAA,CAAA,WAAA,CAC5B,IAAMC,GAAoBF,EAAqB,CAAA,CAC/C,CAACA,EAAqB,CACxB,EACMG,EAAAA,CAAqB,CAAA,CAAA,WAAA,CACxBC,GAAuC,CAClCA,CAAAA,CAAU,UAAY,MAAA,EACxB7mB,EAAAA,CAAM,WAAW6mB,CAAAA,CAAU,OAAO,EAEhCA,CAAAA,CAAU,UAAA,GAAe,MAAA,EAC3B7mB,EAAAA,CAAM,aAAA,CAAc6mB,CAAAA,CAAU,UAAU,CAAA,CAEtCA,CAAAA,CAAU,eAAiB,MAAA,EAC7B7mB,EAAAA,CAAM,gBAAgB6mB,CAAAA,CAAU,YAAY,EAE1CA,CAAAA,CAAU,gBAAA,GAAqB,QACjC7mB,EAAAA,CAAM,mBAAA,CAAoB6mB,EAAU,gBAAgB,CAAA,CAElDA,EAAU,aAAA,GAAkB,MAAA,EAC9B7mB,EAAAA,CAAM,gBAAA,CAAiB6mB,CAAAA,CAAU,aAAa,EAE5CA,CAAAA,CAAU,QAAA,GAAa,QACzB7mB,EAAAA,CAAM,WAAA,CAAY6mB,EAAU,QAAQ,CAAA,CAElCA,EAAU,WAAA,GAAgB,MAAA,EAC5B7mB,GAAM,cAAA,CAAe6mB,CAAAA,CAAU,WAAW,CAAA,CAExCA,CAAAA,CAAU,gBAAkB,MAAA,EAC9B7mB,EAAAA,CAAM,gBAAA,CAAiB6mB,CAAAA,CAAU,aAAa,CAAA,CAE5CA,EAAU,YAAA,GAAiB,MAAA,EAC7B7mB,GAAM,eAAA,CAAgB6mB,CAAAA,CAAU,YAAY,CAAA,CAE1CA,CAAAA,CAAU,UAAY,MAAA,EACxBjV,EAAAA,CAAoBiV,EAAU,OAAO,CAAA,CAEnCA,EAAU,QAAA,GAAa,MAAA,EACzBrV,GAAqBqV,CAAAA,CAAU,QAAQ,CAAA,CAErCA,CAAAA,CAAU,cAAA,GAAmB,MAAA,EAC/BnV,GAA2BmV,CAAAA,CAAU,cAAc,EAEjDA,CAAAA,CAAU,YAAA,GAAiB,QAC7B1V,EAAAA,CAAoB0V,CAAAA,CAAU,YAAY,EAE9C,CAAA,CACA,CACEjV,EAAAA,CACAF,EAAAA,CACAF,GACAL,EAAAA,CACAnR,EACF,CACF,CAAA,CACM8mB,EAAAA,CAA4B,CAAA,CAAA,WAAA,CAChC,IAAMzb,EAAAA,CAA0BG,EAAAA,EAAekD,EAAc,CAAA,CAC7D,CAACA,GAAgBlD,EAAW,CAC9B,EACMub,EAAAA,CAA0B,CAAA,CAAA,WAAA,CAG7B7pB,GAAY,CACPA,CAAAA,EAAS,kBACX4pB,EAAAA,EAAoB,CAEtBF,GAAa,CACX,gBAAA,CAAkB3X,IAAc,gBAAA,EAAoB,EAAC,CACrD,WAAA,CAAaA,EAAAA,EAAc,WAAA,EAAe,EAAC,CAC3C,aAAA,CACEA,IAAc,aAAA,EAAiBuB,CAAAA,CAAwB9O,CAAO,CAAA,CAChE,YAAA,CAAcuN,EAAAA,EAAc,YAAA,EAAgB,EAC9C,CAAC,EACH,CAAA,CACA,CACE6X,EAAAA,CACAplB,CAAAA,CACAuN,GACA2X,EACF,CACF,CAAA,CACMI,EAAAA,CAAmB,CAAA,CAAA,WAAA,CACtB9pB,CAAAA,EAAY,CACPA,CAAAA,EAAS,gBAAA,EACX4pB,IAAoB,CAEtBF,EAAAA,CAAa,CACX,OAAA,CAAS3X,EAAAA,EAAc,SAAW,EAAC,CACnC,WAAYA,EAAAA,EAAc,UAAA,EAAc,CACtC,SAAA,CAAW,CAAA,CACX,SAAU5Q,EAAAA,CAAmB,CAAC,CAAA,EAAK,EACrC,CAAA,CACA,YAAA,CAAc4Q,IAAc,YAAA,EAAgB,GAC5C,gBAAA,CAAkBA,EAAAA,EAAc,kBAAoB,EAAC,CACrD,cAAeA,EAAAA,EAAc,aAAA,EAAiB,EAAC,CAC/C,QAAA,CAAUA,IAAc,QAAA,EAAY,GACpC,WAAA,CAAaA,EAAAA,EAAc,WAAA,EAAe,EAAC,CAC3C,aAAA,CACEA,IAAc,aAAA,EAAiBuB,CAAAA,CAAwB9O,CAAO,CAAA,CAChE,YAAA,CAAcuN,IAAc,YAAA,EAAgB,GAC5C,OAAA,CAASA,EAAAA,EAAc,SAAW,aAAA,CAClC,QAAA,CAAUA,IAAc,QAAA,EAAY,OAAA,CACpC,eAAgBA,EAAAA,EAAc,cAAA,EAAkB,KAAA,CAChD,YAAA,CAAcA,EAAAA,EAAc,YAAA,EAAgB,EAC9C,CAAC,EACH,EACA,CACE6X,EAAAA,CACAplB,EACAuN,EAAAA,CACA2X,EAAAA,CACAvoB,EACF,CACF,CAAA,CACM4oB,GAAsB,CAAA,CAAA,WAAA,CAC1B,IAAMnJ,GAAwB+D,EAAU,CAAA,CACxC,CAACA,EAAU,CACb,CAAA,CACMqF,EAAAA,CAAwB,CAAA,CAAA,WAAA,CAG3BhJ,CAAAA,EACCD,GAAyB4D,EAAAA,CAAY3D,CAAAA,CAAMwI,IAAiB,CAAA,CAC9D,CAACA,EAAAA,CAAiB7E,EAAU,CAC9B,CAAA,CACMsF,EAAAA,CAAuB,cAG1BvI,CAAAA,EAAO,CACN,IAAMb,CAAAA,CAAOD,EAAAA,CAAwB+D,EAAU,CAAA,CAAE,IAAA,CAC9C5W,EAAAA,EAAcA,EAAAA,CAAU,EAAA,GAAO2T,CAClC,EACA,OAAKb,CAAAA,EAGL6I,GAAa7I,CAAAA,CAAK,KAAK,EACvB8D,EAAAA,EAAY,OAAA,GAAU9D,CAAI,CAAA,CACnB,IAAA,EAJE,KAKX,CAAA,CACA,CAAC6I,GAAc/E,EAAU,CAC3B,EACMuF,EAAAA,CAAwB,CAAA,CAAA,WAAA,CAG5B,CAACxI,CAAAA,CAAIV,CAAAA,GAASS,EAAAA,CAAyBkD,GAAYjD,CAAAA,CAAIV,CAAI,EAC3D,CAAC2D,EAAU,CACb,CAAA,CACMwF,EAAAA,CAAwB,cAG3BzI,CAAAA,EAAOE,EAAAA,CAAyB+C,GAAYjD,CAAE,CAAA,CAC/C,CAACiD,EAAU,CACb,EACMyF,EAAAA,CAAwB,CAAA,CAAA,WAAA,CAC5B,IAAMvI,EAAAA,CAAyB8C,EAAU,CAAA,CACzC,CAACA,EAAU,CACb,EACM0F,EAAAA,CAAyB,CAAA,CAAA,WAAA,CAG5BrqB,GACC2jB,CAAAA,CAAmB,CACjB,SAAA,CAAW3jB,CAAAA,GAAY2iB,GAAAA,EAAa,IAAA,CAAA,CACpC,OAAQ1jB,EAAAA,CACR,KAAA,CAAA6D,EACF,CAAC,CAAA,CACH,CAAC6f,GAAAA,CAAW1jB,EAAAA,CAAgB6D,EAAK,CACnC,CAAA,CACA,OAAM,sBACJgiB,EAAAA,CACA,KAAO,CACL,QAAA,CAAU,IAAMhgB,GAAS,OAAA,CACzB,QAAA,CAAU0kB,GACV,QAAA,CAAUA,EAAAA,CACV,QAASE,EAAAA,CACT,iBAAA,CAAAG,GACA,UAAA,CAAAC,EAAAA,CACA,oBAAAF,EAAAA,CACA,aAAA,CAAAG,EAAAA,CACA,eAAA,CAAAC,EAAAA,CACA,cAAA,CAAAC,GACA,eAAA,CAAAC,EAAAA,CACA,gBAAAC,EAAAA,CACA,eAAA,CAAAC,GACA,KAAA,CAAO,IAAM,CACXha,EAAAA,CAAa,OAAA,EAAS,QACxB,CAAA,CACA,YAAcvM,CAAAA,EACZymB,EAAAA,CAA+Bla,GAAa,OAAA,CAAS,KAAA,CAAOvM,CAAK,CAAA,CACnE,cAAA,CAAiBP,CAAAA,EACfgnB,GACEla,EAAAA,CAAa,OAAA,CACb,SACA9M,CACF,CAAA,CACF,UAAW+mB,EACb,CAAA,CAAA,CACA,CACEJ,EAAAA,CACAL,EAAAA,CACAQ,GACAJ,EAAAA,CACAG,EAAAA,CACAE,GACAN,EAAAA,CACAP,EAAAA,CACAU,GACAL,EAAAA,CACAC,EAAAA,CACAJ,EACF,CACF,CAAA,CAGEzpB,GAAAA,CAACwkB,EAAA,CACC,QAAA,CAAAtkB,KAAC,KAAA,CAAA,CACC,GAAA,CAAKiQ,GACL,eAAA,CAAc,iBAAA,CACd,eAAcwD,EAAAA,CACd,uBAAA,CAAuB0R,IAAe,MAAA,CACtC,WAAA,CAAWtT,IAAa,MAAA,CACxB,GAAA,CAAKpK,GACL,QAAA,CAAU,EAAA,CACV,SAAA,CAAW1H,CAAAA,CACT,+EAAA,CACAzB,EAAAA,CAAW,wBAA0B,MAAA,CACrCslB,CACF,EACA,WAAA,CAAa3lB,EAAAA,EAAa,YAC1B,UAAA,CAAYA,EAAAA,EAAa,WACzB,WAAA,CAAaA,EAAAA,EAAa,YAC1B,MAAA,CAAQA,EAAAA,EAAa,OAEpB,QAAA,CAAA,CAAAmnB,EAAAA,CACCtlB,IAAC,OAAA,CAAA,CACC,GAAA,CAAKulB,EAAAA,CACL,SAAA,CAAU,QAAA,CACV,IAAA,CAAK,OACL,MAAA,CAAQD,EAAAA,CAAW,OACnB,QAAA,CAAUA,EAAAA,CAAW,UAAY,IAAA,CACjC,QAAA,CAAUA,GAAW,QAAA,CACrB,QAAA,CAAWtf,GAAU,CACnB,IAAMwiB,EAAQxiB,CAAAA,CAAM,aAAA,CAAc,MAC9BwiB,CAAAA,EAAO,MAAA,EACTD,EAAAA,CAAoBC,CAAK,CAAA,CAE3BxiB,CAAAA,CAAM,cAAc,KAAA,CAAQ,GAC9B,EACF,CAAA,CACE,IAAA,CACJhG,IAAC,KAAA,CAAA,CACC,eAAA,CAAc,oBACd,SAAA,CAAWC,CAAAA,CACT,uBACAzB,EAAAA,CAAW,gBAAA,CAAmB,MAChC,CAAA,CAEA,QAAA,CAAA0B,KAAC,KAAA,CAAA,CACC,eAAA,CAAc,iBAAA,CACd,SAAA,CAAWD,CAAAA,CACT,4BAAA,CACAzB,GAAW,gBAAA,CAAmB,MAAA,CAC9B2mB,EACF,CAAA,CAEC,QAAA,CAAA,CAAAD,GACCllB,GAAAA,CAACoB,EAAAA,CAAA,CACC,OAAA,CAAS+nB,EAAAA,CACT,aAAA,CAAelG,GACf,uBAAA,CAAyB1hB,EAAAA,CACzB,eAAgBC,EAAAA,CAChB,aAAA,CAAeC,GACf,gBAAA,CAAkBC,CAAAA,CAClB,OAAA,CAASiS,EAAAA,CACT,WAAA,CAAahS,CAAAA,CACb,cAAeC,EAAAA,CACf,uBAAA,CAAyBwnB,GACzB,mBAAA,CAAqBtnB,CAAAA,CACrB,oBAAqBC,EAAAA,CACrB,gBAAA,CAAkBC,IAAoB,CAAA,CAAQjE,EAAAA,CAC9C,gBAAiB8T,EAAAA,EAAY,KAAA,CAC7B,OAAQ7S,EAAAA,CACR,oBAAA,CAAsBskB,GACtB,oBAAA,CAAsBF,EAAAA,CACtB,qBAAA,CAAuBG,EAAAA,CACvB,eAAA,CAAiB9O,EAAAA,CACjB,uBAAwBF,EAAAA,CACxB,yBAAA,CAA2BP,GAC3B,gBAAA,CAAkBK,EAAAA,CAClB,eAAgBiR,EAAAA,CAAa7iB,EAAAA,CAAiB,OAC9C,YAAA,CAAcC,EAAAA,CACd,iBAAkB2mB,EAAAA,CAClB,cAAA,CAAgB5V,GAChB,KAAA,CAAO5Q,EAAAA,CACP,MAAOC,CAAAA,CACP,OAAA,CAASC,EAAAA,CACT,uBAAA,CAAyB+Q,EAAAA,CACzB,iBAAA,CAAmBlV,GACnB,iBAAA,CAAmBsE,EAAAA,CACnB,SAAUqQ,EAAAA,CACZ,CAAA,CACE,KAENvT,GAAAA,CAAC,KAAA,CAAA,CACC,gBAAc,oBAAA,CACd,SAAA,CAAWC,EAAGzB,EAAAA,CAAW,8BAAA,CAAiC,EAAE,CAAA,CAE3D,QAAA,CAAA+U,KAAoB,MAAA,EAAUxV,EAAAA,CAC7BiC,GAAAA,CAACK,CAAAA,CAAA,CACC,aAAA,CAAezC,GACf,iBAAA,CAAmBC,EAAAA,CACnB,WAAYC,EAAAA,CACZ,YAAA,CAAcC,GACd,cAAA,CAAgBkW,EAAAA,CAChB,oBAAqBjW,EAAAA,CACrB,iBAAA,CAAmBC,EACnB,mBAAA,CAAqBC,CAAAA,CACrB,YAAaC,EAAAA,CACb,YAAA,CAAcC,GACd,YAAA,CAAcC,EAAAA,CACd,SAAA,CAAWC,EAAAA,CACX,kBAAA,CAAoBC,EAAAA,CACpB,SAAUC,EAAAA,CACV,eAAA,CAAiBC,GACjB,YAAA,CAAcC,EAAAA,CACd,eAAgBC,EAAAA,CAChB,gBAAA,CAAkBC,GAClB,UAAA,CAAYmpB,EAAAA,CACZ,aAAcjpB,EAAAA,CACd,iBAAA,CAAmBC,GACnB,cAAA,CAAgBC,EAAAA,CAChB,wBAAyBC,EAAAA,CACzB,UAAA,CAAY6oB,EAAAA,CACZ,UAAA,CAAY3oB,CAAAA,CACZ,WAAA,CAAaC,GACb,sBAAA,CAAwBC,EAAAA,CACxB,gBAAiBC,EAAAA,CACjB,0BAAA,CAA4BC,GAC5B,uBAAA,CAAyBC,EAAAA,CACzB,aAAcC,CAAAA,CACd,cAAA,CAAgBiK,GAClB,CAAA,CAEA1J,GAAAA,CAACwgB,EAAA,CACC,eAAA,CAAiB5e,GACjB,cAAA,CAAgBmB,EAAAA,CAChB,iBAAA,CAAmB+lB,EAAAA,CACnB,aAAA,CAAeH,EAAAA,CAAa,cAC5B,cAAA,CAAgBhV,EAAAA,CAChB,eAAgB1L,EAAAA,CAChB,GAAA,CAAKN,GACL,mBAAA,CAAqBzJ,CAAAA,CACrB,YAAaC,EAAAA,CACb,kBAAA,CAAoBsnB,GACpB,WAAA,CAAawC,EAAAA,CACb,aAAc5pB,EAAAA,CACd,SAAA,CAAWC,GACX,sBAAA,CAAwBmmB,EAAAA,CACxB,oBAAA,CAAsBrc,EAAAA,CACtB,2BAAA,CAA6BwgB,EAAAA,CAC7B,aAAchR,EAAAA,CACd,QAAA,CAAUpZ,GACV,eAAA,CAAiBuZ,EAAAA,CACjB,gBAAiBtZ,EAAAA,CACjB,kBAAA,CAAoBumB,EAAAA,CACpB,cAAA,CAAgBrmB,EAAAA,CAChB,UAAA,CAAYkX,GACZ,gBAAA,CAAkBjX,EAAAA,CAClB,WAAYmpB,EAAAA,CACZ,oBAAA,CAAsBgB,GACtB,YAAA,CAAcjqB,EAAAA,CACd,iBAAA,CAAmBC,EAAAA,CACnB,aAAA,CAAeyM,EAAAA,CACf,gBAAiB0d,EAAAA,CACjB,cAAA,CAAgBlqB,GAChB,YAAA,CAAciN,EAAAA,CACd,WAAY9M,CAAAA,CACZ,SAAA,CAAW6kB,EACX,WAAA,CAAa5kB,EAAAA,CACb,eAAgB8oB,EAAAA,CAChB,0BAAA,CAA4B3oB,GAC5B,YAAA,CAAc0lB,EAAAA,CACd,YAAaI,EAAAA,CACb,WAAA,CAAaP,EAAAA,CACb,KAAA,CAAOjiB,EAAAA,CACP,cAAA,CAAgBuiB,GAChB,uBAAA,CAAyB5lB,EAAAA,CACzB,MAAOykB,CAAAA,CACP,SAAA,CAAWC,EACX,SAAA,CAAWC,CAAAA,CACX,YAAaC,CAAAA,CACb,SAAA,CAAWC,IACX,WAAA,CAAaC,CAAAA,CACb,SAAUC,CAAAA,CACV,uBAAA,CAAyBiB,GACzB,kBAAA,CAAoB4C,EAAAA,CACpB,YAAA,CAAc3oB,CAAAA,CACd,cAAA,CAAgB4oB,EAAAA,CAChB,eAAgB3e,EAAAA,CAChB,oBAAA,CAAsB+e,GACtB,iBAAA,CAAmBC,EAAAA,CACnB,uBAAwBG,EAAAA,CACxB,kBAAA,CAAoBtd,GACtB,CAAA,CAEJ,CAAA,CACAvL,IAACQ,EAAAA,CAAA,CACC,kBAAmBE,EAAAA,CACnB,eAAA,CAAiBC,EACjB,kBAAA,CAAoBC,EAAAA,CACpB,mBAAA,CAAqBC,EAAAA,CACrB,2BAAA,CAA6BC,EAAAA,CAC7B,2BAA4BC,EAAAA,CAC5B,MAAA,CAAQ/B,GACR,cAAA,CAAgBsN,EAAAA,CAChB,mBAAoBpL,EAAAA,CACpB,UAAA,CAAYC,IAAc,CAACxC,EAAAA,EAAgB,QAE1C,QAAA,CAAA8B,CAAAA,CACH,GACF,CAAA,CACF,CAAA,CAAA,CACA,EACF,CAEJ,CACF,CAEA,SAASonB,EAAAA,CACPjL,CAAAA,CACAgL,EACA5e,CAAAA,CACA,CACA,IAAI/B,CAAAA,CACJ,GAAI,CACFA,CAAAA,CAAS2V,CAAAA,GACX,CAAA,MAAS/V,CAAAA,CAAO,CACdmC,CAAAA,GAAgB,CAAE,GAAG4e,CAAAA,CAAS,KAAA,CAAA/gB,CAAM,CAAC,CAAA,CACrC,MACF,CAEK,OAAA,CAAQ,OAAA,CAAQI,CAAM,CAAA,CAAE,KAAA,CAAOJ,GAAmB,CACrDmC,CAAAA,GAAgB,CAAE,GAAG4e,CAAAA,CAAS,MAAA/gB,CAAM,CAAC,EACvC,CAAC,EACH,CAEA,SAASggB,EAAAA,CACPzY,EACAkc,CAAAA,CACA1F,CAAAA,CACA,CACA,IAAM2F,CAAAA,CAAqB,CAAA,CAAA,WAAA,CACxB5d,GAA6B,CAC5B2d,CAAAA,GAAiB3d,CAAK,CAAA,CACtBiY,CAAAA,GAAiBnf,IAAa,CAC5B,GAAGA,EACH,CAAC2I,CAAG,EAAGzB,CACT,CAAA,CAAE,EACJ,CAAA,CACA,CAACyB,EAAKkc,CAAAA,CAAgB1F,CAAa,CACrC,CAAA,CAEA,OAAO0F,CAAAA,EAAkB1F,EAAgB2F,CAAAA,CAAe,MAC1D,CAEA,SAAS5D,EAAAA,CACP3F,EACAwJ,CAAAA,CACA,CACA,IAAMC,CAAAA,CAAwB,CAAA,CAAA,MAAA,CAAO,IAAI,GAA2B,CAAA,CAE9D,CAAA,CAAA,SAAA,CAAU,IAAM,CACpB,GAAI,GAACzJ,CAAAA,EAAS,CAAC0J,EAAAA,EAAyB,CAAA,CAIxC,IAAA,IAAWtc,CAAAA,IAAO,OAAO,IAAA,CAAKoc,CAAY,EAItCxJ,CAAAA,CAAM5S,CAAG,IAAM,MAAA,EACf,CAACoc,EAAapc,CAAG,CAAA,EACjBqc,EAAgB,OAAA,CAAQ,GAAA,CAAIrc,CAAG,CAAA,GAKjCqc,CAAAA,CAAgB,QAAQ,GAAA,CAAIrc,CAAG,CAAA,CAC/B,OAAA,CAAQ,IAAA,CACN,CAAA,4BAAA,EAA+BA,CAAG,CAAA,oHAAA,CACpC,CAAA,EAEJ,EAAG,CAACoc,CAAAA,CAAcxJ,CAAK,CAAC,EAC1B,CAEA,SAAS0J,EAAAA,EAA2B,CAOlC,OALE,UAAA,CAGA,SAAS,GAAA,EAAK,QAAA,GAEW,YAC7B,CAEA,SAASlB,EAAAA,CAAoBxI,CAAAA,CAAuC,CAClE,OAAO,CACL,OAAA,CAASA,CAAAA,CAAM,QAAQ,GAAA,CAAKnR,CAAAA,GAAU,CAAE,GAAGA,CAAK,EAAE,CAAA,CAClD,UAAA,CAAY,CAAE,GAAGmR,CAAAA,CAAM,UAAW,CAAA,CAClC,YAAA,CAAc,CAAE,GAAGA,CAAAA,CAAM,YAAa,CAAA,CACtC,gBAAA,CAAkB,CAAE,GAAGA,CAAAA,CAAM,gBAAiB,EAC9C,aAAA,CAAeA,CAAAA,CAAM,cAAc,GAAA,CAAKnR,CAAAA,GAAU,CAAE,GAAGA,CAAK,EAAE,CAAA,CAC9D,QAAA,CACE,OAAOmR,CAAAA,CAAM,QAAA,EAAa,UACtBA,CAAAA,CAAM,QAAA,CACN,CAAE,GAAGA,CAAAA,CAAM,QAAS,EAC1B,WAAA,CAAa,CAAC,GAAGA,CAAAA,CAAM,WAAW,EAClC,aAAA,CAAe,CACb,KAAMA,CAAAA,CAAM,aAAA,CAAc,KACtB,CAAC,GAAGA,EAAM,aAAA,CAAc,IAAI,EAC5B,MAAA,CACJ,KAAA,CAAOA,CAAAA,CAAM,aAAA,CAAc,KAAA,CACvB,CAAC,GAAGA,CAAAA,CAAM,aAAA,CAAc,KAAK,CAAA,CAC7B,MACN,EACA,YAAA,CAAc,CAAE,GAAGA,CAAAA,CAAM,YAAa,EACtC,OAAA,CAASA,CAAAA,CAAM,QACf,QAAA,CAAUA,CAAAA,CAAM,SAChB,cAAA,CAAgBA,CAAAA,CAAM,cAAA,CACtB,YAAA,CAAcA,CAAAA,CAAM,YACtB,CACF,CAEA,SAASqJ,GACPM,CAAAA,CACAC,CAAAA,CACAje,EACA,CACA,GAAI,CAACge,CAAAA,CACH,OAAO,OAGT,IAAME,CAAAA,CAAYD,IAAS,KAAA,CAAQ,aAAA,CAAgB,iBAC7Cpa,CAAAA,CAAU,KAAA,CAAM,IAAA,CACpBma,CAAAA,CAAU,gBAAA,CAA8B,CAAA,CAAA,EAAIE,CAAS,CAAA,CAAA,CAAG,CAC1D,EAAE,IAAA,CAAM/c,CAAAA,EAAcA,EAAU,YAAA,CAAa+c,CAAS,CAAA,GAAMle,CAAK,CAAA,CACjE,OAAK6D,GAILA,CAAAA,CAAQ,cAAA,GAAiB,CAAE,KAAA,CAAO,SAAA,CAAW,OAAQ,SAAU,CAAC,CAAA,CACzD,IAAA,EAJE,KAKX","file":"chunk-ICUCANNA.js","sourcesContent":["import * as React from \"react\";\nimport type { Row } from \"@tanstack/react-table\";\nimport { cn } from \"../../lib/utils\";\nimport type { DataTableCardPanelProps } from \"./data-table-card-panel-types\";\n\nexport function DataTableBaseCardPanel({\n cardClassName,\n cardGridClassName,\n cardSizing,\n cardRenderer,\n currentRowSelection,\n DataTableCardView,\n DataTableEmptyState,\n dragAndDrop,\n editableRows,\n editingRowId,\n emptyNode,\n enableRowSelection,\n flexGrow,\n getRowClassName,\n hasCardTitle,\n infiniteScroll,\n localSearchValue,\n onRowClick,\n renderedRows,\n renderExpandedRow,\n resolvedLabels,\n resolvedLoadingRowCount,\n rowActions = [],\n ScrollArea,\n sentinelRef,\n setCurrentRowSelection,\n setEditingRowId,\n shouldRenderInitialLoading,\n tableContainerClassName,\n uiClassNames,\n}: DataTableCardPanelProps) {\n const shouldRenderCards =\n shouldRenderInitialLoading || renderedRows.length > 0;\n const cardScrollContainerRef = React.useRef(null);\n\n const renderCardView = (\n rows: Array>,\n options?: {\n isLoading?: boolean;\n loadingRowCount?: number;\n },\n ) => (\n \n );\n\n return (\n \n \n \n {shouldRenderCards ? (\n shouldRenderInitialLoading ? (\n renderCardView([], {\n isLoading: true,\n loadingRowCount: resolvedLoadingRowCount,\n })\n ) : (\n renderCardView(renderedRows)\n )\n ) : (\n
    \n {emptyNode ?? (\n \n )}\n
    \n )}\n\n {infiniteScroll?.enabled && !shouldRenderInitialLoading ? (\n
    \n
    \n
    \n ) : null}\n
    \n \n \n );\n}\n","import * as React from \"react\";\nimport { DataTableBaseCardPanel } from \"./data-table-base-card-panel\";\nimport type { DataTableCardPanelProps } from \"./data-table-card-panel-types\";\n\nconst LazyDataTableVirtualCardPanel = React.lazy(async () => {\n const module = await import(\"./data-table-virtual-card-panel\");\n return { default: module.DataTableVirtualCardPanel };\n}) as unknown as typeof DataTableBaseCardPanel;\n\nexport function DataTableCardPanel(\n props: DataTableCardPanelProps,\n) {\n const config =\n typeof props.virtualization === \"object\"\n ? props.virtualization.card\n : undefined;\n\n if (config?.enabled !== true) {\n return ;\n }\n\n return (\n \n }\n >\n \n \n );\n}\n\nexport type { DataTableCardPanelProps };\n","import * as React from \"react\";\nimport type { PaginationState } from \"@tanstack/react-table\";\nimport type { DataTableLabels } from \"../types\";\n\ntype DataTableFooterSectionProps = {\n children?: React.ReactNode;\n currentPagination: PaginationState;\n DataTableFooter: React.ElementType;\n effectivePageCount: number;\n footerTotalRowCount: number | undefined;\n handleFooterPageIndexChange: (pageIndex: number) => void;\n handleFooterPageSizeChange: (pageSize: number) => void;\n labels: DataTableLabels;\n pageCountKnown?: boolean;\n rowsPerPageOptions: Array;\n showFooter: boolean;\n};\n\nexport function DataTableFooterSection({\n children,\n currentPagination,\n DataTableFooter,\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n labels,\n pageCountKnown = true,\n rowsPerPageOptions,\n showFooter,\n}: DataTableFooterSectionProps) {\n if (!showFooter && !children) {\n return null;\n }\n\n return (\n
    \n {showFooter ? (\n \n ) : null}\n {children}\n
    \n );\n}\n","import * as React from \"react\";\nimport type { Table as TanStackTable } from \"@tanstack/react-table\";\nimport type { DataTableLabels, DataTableProps } from \"../types\";\n\ntype DataTableToolbarSectionProps = {\n allRows: Array;\n columnFilters: Array;\n columnVisibilityOptions: Array;\n compactToolbar: React.ReactNode;\n customToolbar: React.ReactNode;\n DataTableToolbar: React.ElementType;\n description: string | undefined;\n descriptionId: string | undefined;\n effectiveToolbarActions: Array;\n enableColumnPinning: boolean;\n enableDensityToggle: boolean;\n enableViewToggle: boolean;\n hiddenRowsLabel: string | undefined;\n labels: DataTableLabels;\n onClearColumnFilters: () => void;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n onColumnPinningChange: (columnId: string, side: \"left\" | \"right\" | false) => void;\n onDensityChange: (density: \"compact\" | \"comfortable\" | \"spacious\") => void;\n onShowHiddenRowsChange: (showHiddenRows: boolean) => void;\n onToolbarQueryValueChange: (value: string) => void;\n onViewModeChange: (viewMode: \"table\" | \"card\") => void;\n openFileDialog: (() => void) | undefined;\n selectedRows: Array;\n selectionActions: DataTableProps[\"selectionActions\"];\n showHiddenRows: boolean;\n table: TanStackTable;\n title: string | undefined;\n titleId: string | undefined;\n toolbarQueryPlaceholder: string;\n toolbarQueryValue: string;\n toolbarVisibility: DataTableProps[\"toolbarVisibility\"];\n density: \"compact\" | \"comfortable\" | \"spacious\";\n viewMode: \"table\" | \"card\";\n};\n\nexport function DataTableToolbarSection({\n allRows,\n columnFilters,\n columnVisibilityOptions,\n compactToolbar,\n customToolbar,\n DataTableToolbar,\n description,\n descriptionId,\n effectiveToolbarActions,\n enableColumnPinning,\n enableDensityToggle,\n enableViewToggle,\n hiddenRowsLabel,\n labels,\n onClearColumnFilters,\n onColumnFilterChange,\n onColumnPinningChange,\n onDensityChange,\n onShowHiddenRowsChange,\n onToolbarQueryValueChange,\n onViewModeChange,\n openFileDialog,\n selectedRows,\n selectionActions,\n showHiddenRows,\n table,\n title,\n titleId,\n toolbarQueryPlaceholder,\n toolbarQueryValue,\n toolbarVisibility,\n density,\n viewMode,\n}: DataTableToolbarSectionProps) {\n return (\n
    \n {\n table.getColumn(columnId)?.toggleVisibility(visible);\n }}\n enableColumnPinning={enableColumnPinning}\n onColumnPinningChange={onColumnPinningChange}\n columnFilters={columnFilters}\n onColumnFilterChange={onColumnFilterChange}\n onClearColumnFilters={onClearColumnFilters}\n density={density}\n onDensityChange={onDensityChange}\n enableDensityToggle={enableDensityToggle}\n labels={labels}\n toolbarVisibility={toolbarVisibility}\n openFileDialog={openFileDialog}\n />\n
    \n );\n}\n","import type { DataTableLabels } from \"../types\";\n\ntype ResolvedDataTableLabels = Required;\n\nexport const DATA_TABLE_DEFAULT_LABELS: ResolvedDataTableLabels = {\n searchPlaceholder: \"Search rows...\",\n searchTable: \"Search table\",\n clearSearch: \"Clear search\",\n noRowsTitle: \"No rows yet\",\n noRowsDescription: \"Create a record or refresh this view once data exists.\",\n noMatchingRowsTitle: \"No matching rows\",\n noMatchingRowsDescription: \"Try a different search term or clear filters.\",\n tableOptions: \"Show table options\",\n columns: \"Columns\",\n filters: \"Filters\",\n clearFilters: \"Clear filters\",\n selectedRows: (count) =>\n `${count} record${count === 1 ? \"\" : \"s\"} selected`,\n showHiddenRows: (label) => `Show ${label}`,\n recordsPerPage: \"Records per page\",\n totalRecords: (count) => `Total records: ${count}`,\n pageStatus: (pageIndex, pageCount) => `Page ${pageIndex + 1} of ${pageCount}`,\n pageStatusUnknown: (pageIndex) => `Page ${pageIndex + 1}`,\n pagination: \"Pagination\",\n morePages: \"More pages\",\n firstPage: \"First page\",\n previousPage: \"Previous page\",\n nextPage: \"Next page\",\n lastPage: \"Last page\",\n selectAllVisibleRows: \"Select all visible rows\",\n selectRow: \"Select row\",\n selectCardRow: (rowId) => `Select row ${rowId}`,\n switchToTableView: \"Switch to table view\",\n switchToCardView: \"Switch to card view\",\n tableView: \"Table view\",\n cardView: \"Card view\",\n allFilterOptions: \"All\",\n actions: \"Actions\",\n rowActions: \"Row actions\",\n editRow: \"Edit row\",\n saveEdit: \"Save\",\n cancelEdit: \"Cancel editing\",\n expandRow: \"Expand row\",\n collapseRow: \"Collapse row\",\n exportCsv: \"Export CSV\",\n density: \"Density\",\n compactDensity: \"Compact\",\n comfortableDensity: \"Comfortable\",\n spaciousDensity: \"Spacious\",\n pinLeft: \"Pin left\",\n pinRight: \"Pin right\",\n unpin: \"Unpin\",\n resizeColumn: (columnLabel) => `Resize ${columnLabel}`,\n};\n\nexport function resolveDataTableLabels(\n labels?: Partial,\n): ResolvedDataTableLabels {\n return {\n ...DATA_TABLE_DEFAULT_LABELS,\n ...labels,\n } as ResolvedDataTableLabels;\n}\n","import * as React from \"react\";\nimport type { ColumnDef, Table as TanStackTable } from \"@tanstack/react-table\";\nimport { IconChevronDown } from \"../icons\";\nimport type {\n DataTableEditableRowsConfig,\n DataTableLabels,\n DataTableProps,\n DataTableRowAction,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport {\n UTILITY_COLUMN_SIZE,\n decorateFilterableColumn,\n isDataTableLoadingRow,\n} from \"./data-table-utils\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\ntype DataTableRowActionsComponentProps = {\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n labels: DataTableLabels;\n onCancelEditing: () => void;\n onStartEditing: () => void;\n row: TData;\n rowActions: Array>;\n};\n\nexport function useDataTableColumns({\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n editingRowId,\n enableRowSelection,\n getRowCanExpand,\n isSavingEdit,\n labels,\n lastSelectedRowIdRef,\n renderExpandedRow,\n rowActions,\n saveEdit,\n startEditingRow,\n tableRef,\n}: {\n Button: DataTableUiKit[\"Button\"];\n Checkbox: DataTableUiKit[\"Checkbox\"];\n DataTableRowActions: React.ComponentType<\n DataTableRowActionsComponentProps\n >;\n Tooltip: DataTableUiKit[\"Tooltip\"];\n TooltipContent: DataTableUiKit[\"TooltipContent\"];\n TooltipTrigger: DataTableUiKit[\"TooltipTrigger\"];\n cancelEditing: () => void;\n columns: DataTableProps[\"columns\"];\n editableRows: DataTableProps[\"editableRows\"];\n editingRowId: string | null;\n enableRowSelection: boolean;\n getRowCanExpand: DataTableProps[\"getRowCanExpand\"];\n isSavingEdit: boolean;\n labels: DataTableLabels;\n lastSelectedRowIdRef: React.MutableRefObject;\n renderExpandedRow: DataTableProps[\"renderExpandedRow\"];\n rowActions: Array>;\n saveEdit: (row: TData) => Promise;\n startEditingRow: (row: TData, rowId: string) => void;\n tableRef: React.RefObject | null>;\n}) {\n const selectRowRange = React.useCallback(\n (targetRowId: string, selected: boolean) => {\n const tableInstance = tableRef.current;\n if (!tableInstance || !lastSelectedRowIdRef.current) {\n return;\n }\n\n const rows = tableInstance\n .getRowModel()\n .rows.filter((row) => !isDataTableLoadingRow(row.original));\n const startIndex = rows.findIndex(\n (row) => row.id === lastSelectedRowIdRef.current,\n );\n const endIndex = rows.findIndex((row) => row.id === targetRowId);\n\n if (startIndex < 0 || endIndex < 0) {\n return;\n }\n\n const from = Math.min(startIndex, endIndex);\n const to = Math.max(startIndex, endIndex);\n tableInstance.setRowSelection((current) => {\n const next = { ...current };\n for (const row of rows.slice(from, to + 1)) {\n if (selected) {\n next[row.id] = true;\n } else {\n delete next[row.id];\n }\n }\n return next;\n });\n },\n [lastSelectedRowIdRef, tableRef],\n );\n\n return React.useMemo>>(() => {\n const defs: Array> = [];\n\n if (renderExpandedRow) {\n defs.push({\n id: \"__expand__\",\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n size: UTILITY_COLUMN_SIZE,\n minSize: UTILITY_COLUMN_SIZE,\n maxSize: UTILITY_COLUMN_SIZE,\n header: () => {labels.expandRow},\n cell: ({ row }) => {\n const canExpand =\n getRowCanExpand?.(row.original) ?? Boolean(renderExpandedRow);\n if (!canExpand) {\n return null;\n }\n\n const isExpanded = row.getIsExpanded();\n return (\n
    \n row.toggleExpanded()}\n >\n \n \n
    \n );\n },\n });\n }\n\n if (enableRowSelection) {\n defs.push({\n id: \"__select__\",\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n size: UTILITY_COLUMN_SIZE,\n minSize: UTILITY_COLUMN_SIZE,\n maxSize: UTILITY_COLUMN_SIZE,\n header: ({ table }) => (\n
    \n {\n table.toggleAllPageRowsSelected(checked === true);\n }}\n aria-label={\n labels.selectAllVisibleRows ??\n DATA_TABLE_DEFAULT_LABELS.selectAllVisibleRows\n }\n />\n
    \n ),\n cell: ({ row }) => (\n
    \n ) => {\n if (!event.shiftKey || !lastSelectedRowIdRef.current) {\n lastSelectedRowIdRef.current = row.id;\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n selectRowRange(row.id, !row.getIsSelected());\n lastSelectedRowIdRef.current = row.id;\n }}\n onCheckedChange={(checked: boolean | \"indeterminate\") => {\n lastSelectedRowIdRef.current = row.id;\n row.toggleSelected(checked === true);\n }}\n aria-label={\n labels.selectRow ?? DATA_TABLE_DEFAULT_LABELS.selectRow\n }\n />\n
    \n ),\n });\n }\n\n defs.push(...columns.map((column) => decorateFilterableColumn(column)));\n\n if (rowActions.length || editableRows) {\n defs.push({\n id: \"__actions__\",\n enableSorting: false,\n enableResizing: false,\n enableHiding: false,\n size: UTILITY_COLUMN_SIZE,\n minSize: UTILITY_COLUMN_SIZE,\n maxSize: UTILITY_COLUMN_SIZE,\n header: () => {labels.actions},\n cell: ({ row }) => {\n const rowId = row.id;\n const isEditing = editingRowId === rowId;\n\n if (isEditing) {\n return (\n
    \n {\n void saveEdit(row.original);\n }}\n >\n {labels.saveEdit}\n \n \n \n \n \n {labels.cancelEdit}\n \n \n {labels.cancelEdit}\n \n
    \n );\n }\n\n return (\n
    \n {\n startEditingRow(row.original, row.id);\n }}\n onCancelEditing={() => {}}\n labels={labels}\n />\n
    \n );\n },\n });\n }\n\n return defs;\n }, [\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n editingRowId,\n enableRowSelection,\n getRowCanExpand,\n isSavingEdit,\n labels,\n lastSelectedRowIdRef,\n renderExpandedRow,\n rowActions,\n saveEdit,\n selectRowRange,\n startEditingRow,\n ]);\n}\n","import * as React from \"react\";\n\nexport function useDataTableInfiniteScroll({\n enabled,\n hasMore,\n isLoadingMore,\n onLoadMore,\n onError,\n}: {\n enabled: boolean;\n hasMore: boolean;\n isLoadingMore?: boolean;\n onLoadMore: () => void | Promise;\n onError?: (error: unknown) => void;\n}) {\n const sentinelRef = React.useRef(null);\n const isRequestInFlightRef = React.useRef(false);\n const onLoadMoreEvent = React.useEffectEvent(onLoadMore);\n const onErrorEvent = React.useEffectEvent((error: unknown) => {\n onError?.(error);\n });\n\n React.useEffect(() => {\n if (!enabled || !hasMore || isLoadingMore) {\n return;\n }\n\n const target = sentinelRef.current;\n if (!target) {\n return;\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n const entry = entries[0];\n if (entry.isIntersecting && !isRequestInFlightRef.current) {\n isRequestInFlightRef.current = true;\n\n let result: void | Promise;\n try {\n result = onLoadMoreEvent();\n } catch (error) {\n isRequestInFlightRef.current = false;\n onErrorEvent(error);\n return;\n }\n\n void Promise.resolve(result)\n .catch((error: unknown) => {\n onErrorEvent(error);\n })\n .finally(() => {\n isRequestInFlightRef.current = false;\n });\n }\n },\n {\n rootMargin: \"200px 0px 200px 0px\",\n },\n );\n\n observer.observe(target);\n\n return () => {\n observer.disconnect();\n };\n }, [enabled, hasMore, isLoadingMore]);\n\n return sentinelRef;\n}\n","import * as React from \"react\";\n\nexport function useDataTablePaginationClamp({\n enabled,\n maxPageIndex,\n onPageIndexChange,\n pageIndex,\n setLocalPageIndex,\n}: {\n enabled: boolean;\n maxPageIndex: number;\n onPageIndexChange?: (pageIndex: number) => void;\n pageIndex: number;\n setLocalPageIndex: (pageIndex: number) => void;\n}) {\n React.useEffect(() => {\n if (!enabled) {\n return;\n }\n\n if (pageIndex >= 0 && pageIndex <= maxPageIndex) {\n return;\n }\n\n const nextPageIndex = Math.min(Math.max(pageIndex, 0), maxPageIndex);\n setLocalPageIndex(nextPageIndex);\n onPageIndexChange?.(nextPageIndex);\n }, [enabled, maxPageIndex, onPageIndexChange, pageIndex, setLocalPageIndex]);\n}\n","import * as React from \"react\";\nimport {\n getCoreRowModel,\n getExpandedRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\";\nimport type {\n ColumnDef,\n ColumnFiltersState,\n ColumnOrderState,\n ColumnPinningState,\n ColumnSizingState,\n ExpandedState,\n FilterFnOption,\n OnChangeFn,\n PaginationState,\n Row,\n SortingState,\n Table as TanStackTable,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport type { DataTableProps } from \"../types\";\nimport {\n dataTableGlobalFilterFn,\n getColumnId,\n getDataTableLeafColumns,\n isUtilityColumnId,\n moveColumnInOrder,\n} from \"./data-table-utils\";\nimport { useDataTableInfiniteScroll } from \"./use-data-table-infinite-scroll\";\nimport { useDataTablePaginationClamp } from \"./use-data-table-pagination-clamp\";\n\nexport function useDataTableInstance({\n autoResetPageIndex,\n columnResizeMode,\n dir,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentColumnSizing,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentSorting,\n defaultColumn,\n effectiveColumnVisibility,\n enableColumnResizing,\n enableRowSelection,\n getRowCanExpand,\n globalFilterFn,\n globalFilterValue,\n hasNextPage,\n handleColumnFiltersChange,\n handleColumnOrderChange,\n handleColumnPinningChange,\n handleColumnVisibilityChange,\n handleExpandedChange,\n infiniteScroll,\n manualFiltering,\n manualPagination,\n manualSorting,\n onActionError,\n onPageIndexChange,\n onPageSizeChange,\n pageCount,\n pageIndex,\n pageSize,\n renderExpandedRow,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n shouldRenderInitialLoading,\n tableColumns,\n tableData,\n tableGetRowId,\n tableRef,\n totalRowCount,\n virtualization,\n}: {\n autoResetPageIndex: boolean;\n columnResizeMode: DataTableProps[\"columnResizeMode\"];\n dir: NonNullable[\"dir\"]>;\n currentColumnFilters: ColumnFiltersState;\n currentColumnOrder: ColumnOrderState;\n currentColumnPinning: ColumnPinningState;\n currentColumnSizing: ColumnSizingState;\n currentExpanded: ExpandedState;\n currentPagination: PaginationState;\n currentRowSelection: Record;\n currentSorting: SortingState;\n currentViewMode: \"table\" | \"card\";\n defaultColumn: Partial>;\n effectiveColumnVisibility: VisibilityState;\n enableColumnResizing: boolean;\n enableRowSelection: boolean;\n getRowCanExpand: DataTableProps[\"getRowCanExpand\"];\n globalFilterFn: FilterFnOption | undefined;\n globalFilterValue: string;\n hasNextPage?: DataTableProps[\"hasNextPage\"];\n handleColumnFiltersChange: OnChangeFn;\n handleColumnOrderChange: OnChangeFn;\n handleColumnPinningChange: OnChangeFn;\n handleColumnVisibilityChange: OnChangeFn;\n handleExpandedChange: OnChangeFn;\n infiniteScroll: DataTableProps[\"infiniteScroll\"];\n manualFiltering: boolean;\n manualPagination: boolean;\n manualSorting: boolean;\n onActionError?: DataTableProps[\"onActionError\"];\n onPageIndexChange: DataTableProps[\"onPageIndexChange\"];\n onPageSizeChange: DataTableProps[\"onPageSizeChange\"];\n pageCount: DataTableProps[\"pageCount\"];\n pageIndex: DataTableProps[\"pageIndex\"];\n pageSize: DataTableProps[\"pageSize\"];\n renderExpandedRow: DataTableProps[\"renderExpandedRow\"];\n setCurrentRowSelection: OnChangeFn>;\n setCurrentSorting: OnChangeFn;\n setLocalColumnSizing: OnChangeFn;\n setLocalPagination: React.Dispatch>;\n shouldRenderInitialLoading: boolean;\n tableColumns: Array>;\n tableData: Array;\n tableGetRowId: DataTableProps[\"getRowId\"];\n tableRef: React.RefObject | null>;\n tableScrollElement: HTMLElement | null;\n /**\n * @deprecated Filtering now runs through TanStack Table. Retained so\n * advanced 4.x hook callers remain source-compatible.\n */\n toolbarFilteredData?: Array;\n totalRowCount: DataTableProps[\"totalRowCount\"];\n virtualization: DataTableProps[\"virtualization\"];\n viewportHeight: number;\n}) {\n const generatedColumnIds = React.useMemo(() => {\n return getDataTableLeafColumns(\n tableColumns as DataTableProps[\"columns\"],\n ).map(({ column, index }) => getColumnId(column, index));\n }, [tableColumns]);\n\n const effectiveColumnOrder = React.useMemo(() => {\n const columnIds = generatedColumnIds;\n const dataColumnIds = columnIds.filter(\n (columnId) =>\n !isUtilityColumnId(columnId) && columnId !== \"__spacer__\",\n );\n const dataColumnIdSet = new Set(dataColumnIds);\n const orderedDataColumnIds = currentColumnOrder.filter((columnId) =>\n dataColumnIdSet.has(columnId),\n );\n const unorderedDataColumnIds = dataColumnIds.filter(\n (columnId) => !orderedDataColumnIds.includes(columnId),\n );\n\n return [\n ...columnIds.filter(\n (columnId) => columnId === \"__expand__\" || columnId === \"__select__\",\n ),\n ...orderedDataColumnIds,\n ...unorderedDataColumnIds,\n ...columnIds.filter((columnId) => columnId === \"__spacer__\"),\n ...columnIds.filter((columnId) => columnId === \"__actions__\"),\n ];\n }, [currentColumnOrder, generatedColumnIds]);\n\n const effectiveColumnPinning = React.useMemo(() => {\n const columnIdSet = new Set(generatedColumnIds);\n const dataColumnIdSet = new Set(\n generatedColumnIds.filter(\n (columnId) =>\n !isUtilityColumnId(columnId) && columnId !== \"__spacer__\",\n ),\n );\n const dataLeft = (currentColumnPinning.left ?? []).filter((columnId) =>\n dataColumnIdSet.has(columnId),\n );\n const dataRight = (currentColumnPinning.right ?? []).filter((columnId) =>\n dataColumnIdSet.has(columnId),\n );\n\n return {\n left: [\n ...[\"__expand__\", \"__select__\"].filter((columnId) =>\n columnIdSet.has(columnId),\n ),\n ...dataLeft,\n ],\n right: [\n ...dataRight,\n ...[\"__actions__\"].filter((columnId) => columnIdSet.has(columnId)),\n ],\n };\n }, [currentColumnPinning, generatedColumnIds]);\n\n const tableState = React.useMemo(\n () => ({\n sorting: currentSorting,\n pagination: currentPagination,\n rowSelection: currentRowSelection,\n columnVisibility: effectiveColumnVisibility,\n columnFilters: currentColumnFilters,\n globalFilter: globalFilterValue,\n expanded: currentExpanded,\n columnOrder: effectiveColumnOrder,\n columnPinning: effectiveColumnPinning,\n columnSizing: currentColumnSizing,\n }),\n [\n currentColumnFilters,\n currentColumnSizing,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentSorting,\n effectiveColumnVisibility,\n effectiveColumnOrder,\n effectiveColumnPinning,\n globalFilterValue,\n ],\n );\n\n const handlePaginationChange = React.useCallback<\n OnChangeFn\n >(\n (updater) => {\n const nextValue =\n typeof updater === \"function\" ? updater(currentPagination) : updater;\n\n if (pageIndex === undefined || pageSize === undefined) {\n setLocalPagination((current) => ({\n pageIndex:\n pageIndex === undefined ? nextValue.pageIndex : current.pageIndex,\n pageSize:\n pageSize === undefined ? nextValue.pageSize : current.pageSize,\n }));\n }\n\n if (nextValue.pageIndex !== currentPagination.pageIndex) {\n onPageIndexChange?.(nextValue.pageIndex);\n }\n if (nextValue.pageSize !== currentPagination.pageSize) {\n onPageSizeChange?.(nextValue.pageSize);\n }\n },\n [\n currentPagination,\n onPageIndexChange,\n onPageSizeChange,\n pageIndex,\n pageSize,\n setLocalPagination,\n ],\n );\n\n const handleColumnSizingChange = React.useCallback<\n OnChangeFn\n >(\n (updater) => {\n setLocalColumnSizing(updater);\n },\n [setLocalColumnSizing],\n );\n\n // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Table owns its instance functions.\n const table = useReactTable({\n data: tableData,\n columns: tableColumns,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: manualFiltering ? undefined : getFilteredRowModel(),\n getSortedRowModel: manualSorting ? undefined : getSortedRowModel(),\n getExpandedRowModel: renderExpandedRow ? getExpandedRowModel() : undefined,\n getPaginationRowModel:\n manualPagination || infiniteScroll?.enabled\n ? undefined\n : getPaginationRowModel(),\n enableRowSelection,\n enableMultiRowSelection: enableRowSelection,\n enableColumnResizing,\n columnResizeMode,\n columnResizeDirection: dir,\n getRowId: tableGetRowId,\n getRowCanExpand: renderExpandedRow\n ? (row) => getRowCanExpand?.(row.original) ?? true\n : undefined,\n globalFilterFn: globalFilterFn ?? dataTableGlobalFilterFn,\n getColumnCanGlobalFilter: (column) =>\n column.columnDef.enableGlobalFilter !== false &&\n typeof column.accessorFn === \"function\",\n manualSorting,\n manualFiltering,\n manualPagination: manualPagination || Boolean(infiniteScroll?.enabled),\n defaultColumn,\n autoResetPageIndex,\n state: tableState,\n onSortingChange: setCurrentSorting,\n onPaginationChange: handlePaginationChange,\n onRowSelectionChange: setCurrentRowSelection,\n onColumnVisibilityChange: handleColumnVisibilityChange,\n onColumnFiltersChange: handleColumnFiltersChange,\n onExpandedChange: handleExpandedChange,\n onColumnOrderChange: handleColumnOrderChange,\n onColumnPinningChange: handleColumnPinningChange,\n onColumnSizingChange: handleColumnSizingChange,\n });\n tableRef.current = table;\n\n const visibleLeafColumns = table.getVisibleLeafColumns();\n const reorderColumn = React.useCallback(\n (sourceColumnId: string, targetColumnId: string) => {\n if (sourceColumnId === targetColumnId) {\n return;\n }\n\n const defaultOrder = table\n .getAllLeafColumns()\n .map((column) => column.id)\n .filter((columnId) => !isUtilityColumnId(columnId));\n const nextOrder = moveColumnInOrder(\n currentColumnOrder.length ? currentColumnOrder : defaultOrder,\n sourceColumnId,\n targetColumnId,\n );\n handleColumnOrderChange(nextOrder);\n },\n [currentColumnOrder, handleColumnOrderChange, table],\n );\n\n const renderedRows = table.getRowModel().rows;\n const virtualizationConfig =\n typeof virtualization === \"object\" ? virtualization : undefined;\n const virtualRowsEnabled =\n virtualization === true || virtualizationConfig?.enabled === true;\n const fallbackRowCount = Math.max(\n 1,\n Math.floor(virtualizationConfig?.fallbackRowCount ?? 20),\n );\n const initialRowsToRender = virtualRowsEnabled\n ? renderedRows.slice(0, fallbackRowCount)\n : renderedRows;\n const rowsToRender = initialRowsToRender.map((row, rowIndex) => ({\n row,\n rowIndex,\n }));\n\n const usesManualRows = manualPagination || Boolean(infiniteScroll?.enabled);\n const derivedTotalRowCount = usesManualRows\n ? undefined\n : table.getFilteredRowModel().rows.length;\n const effectiveTotalRowCount = totalRowCount ?? derivedTotalRowCount;\n const isPageCountKnown =\n !usesManualRows || pageCount !== undefined || totalRowCount !== undefined;\n const footerTotalRowCount = effectiveTotalRowCount;\n const effectivePageCount = shouldRenderInitialLoading\n ? 1\n : (pageCount ??\n (effectiveTotalRowCount !== undefined\n ? Math.max(\n 1,\n Math.ceil(effectiveTotalRowCount / currentPagination.pageSize),\n )\n : usesManualRows\n ? currentPagination.pageIndex + (hasNextPage ? 2 : 1)\n : table.getPageCount()));\n const maxPageIndex = Math.max(0, effectivePageCount - 1);\n\n const setLocalPageIndex = React.useCallback(\n (nextPageIndex: number) => {\n if (pageIndex !== undefined) {\n return;\n }\n\n setLocalPagination((current) =>\n current.pageIndex === nextPageIndex\n ? current\n : { ...current, pageIndex: nextPageIndex },\n );\n },\n [pageIndex, setLocalPagination],\n );\n useDataTablePaginationClamp({\n enabled:\n !shouldRenderInitialLoading &&\n !infiniteScroll?.enabled &&\n isPageCountKnown,\n maxPageIndex,\n onPageIndexChange,\n pageIndex: currentPagination.pageIndex,\n setLocalPageIndex,\n });\n\n const handleFooterPageIndexChange = React.useCallback(\n (nextPageIndex: number) => {\n if (nextPageIndex === currentPagination.pageIndex) {\n return;\n }\n\n onPageIndexChange?.(nextPageIndex);\n if (pageIndex === undefined) {\n setLocalPagination((current) =>\n current.pageIndex === nextPageIndex\n ? current\n : { ...current, pageIndex: nextPageIndex },\n );\n }\n },\n [\n currentPagination.pageIndex,\n onPageIndexChange,\n pageIndex,\n setLocalPagination,\n ],\n );\n const handleFooterPageSizeChange = React.useCallback(\n (nextPageSize: number) => {\n if (currentPagination.pageIndex !== 0) {\n onPageIndexChange?.(0);\n }\n if (nextPageSize !== currentPagination.pageSize) {\n onPageSizeChange?.(nextPageSize);\n }\n if (pageSize === undefined) {\n setLocalPagination({\n pageIndex: 0,\n pageSize: nextPageSize,\n });\n }\n },\n [\n currentPagination.pageIndex,\n currentPagination.pageSize,\n onPageIndexChange,\n onPageSizeChange,\n pageSize,\n setLocalPagination,\n ],\n );\n\n const sentinelRef = useDataTableInfiniteScroll({\n enabled: Boolean(infiniteScroll?.enabled),\n hasMore: Boolean(infiniteScroll?.hasMore),\n isLoadingMore: infiniteScroll?.isLoadingMore,\n onLoadMore: () => infiniteScroll?.onLoadMore(),\n onError: (error) => {\n onActionError?.({\n error,\n source: \"infiniteScroll\",\n });\n },\n });\n\n return {\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n isPageCountKnown,\n renderedRows,\n reorderColumn,\n rowsToRender,\n sentinelRef,\n table,\n virtualPaddingBottom: 0,\n virtualPaddingTop: 0,\n visibleLeafColumns,\n };\n}\n\nexport type DataTableRowsToRender = Array<{\n row: Row;\n rowIndex: number;\n}>;\n","import * as React from \"react\";\nimport type { Updater } from \"@tanstack/react-table\";\n\nexport function useControllableState({\n defaultValue,\n onChange,\n value,\n}: {\n defaultValue: T | (() => T);\n onChange?: (value: T) => void;\n value: T | undefined;\n}) {\n const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue);\n const currentValue = value ?? uncontrolledValue;\n const currentValueRef = React.useRef(currentValue);\n\n React.useEffect(() => {\n currentValueRef.current = currentValue;\n }, [currentValue]);\n\n const setValue = React.useCallback(\n (updater: Updater) => {\n const nextValue =\n typeof updater === \"function\"\n ? (updater as (current: T) => T)(currentValueRef.current)\n : updater;\n currentValueRef.current = nextValue;\n\n onChange?.(nextValue);\n\n if (value === undefined) {\n setUncontrolledValue(nextValue);\n }\n },\n [onChange, value],\n );\n\n return [currentValue, setValue] as const;\n}\n","import * as React from \"react\";\nimport type {\n DataTableColumnPrefs,\n DataTableDensity,\n DataTablePersistenceConfig,\n DataTablePersistencePayload,\n DataTablePersistenceSlice,\n DataTablePersistenceStorage,\n} from \"../types\";\n\nconst STORAGE_PREFIX = \"data-table-pro:column-prefs:\";\nconst DEFAULT_VERSION = 1;\nconst ALL_SLICES: Array = [\n \"visibility\",\n \"sizing\",\n \"order\",\n \"pinning\",\n \"density\",\n];\n\nexport function readDataTableColumnPrefs(\n input: string | DataTablePersistenceConfig | undefined,\n): DataTableColumnPrefs {\n const config = resolvePersistenceConfig(input);\n if (!config) {\n return {};\n }\n\n const storage = resolveStorage(config);\n if (!storage) {\n return {};\n }\n const storageKey = getStorageKey(config.key);\n\n let value: string | null;\n try {\n value = storage.getItem(storageKey);\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return {};\n }\n if (!value) {\n return {};\n }\n\n let parsed: unknown;\n try {\n parsed = (config.deserialize ?? JSON.parse)(value);\n } catch (error) {\n config.onError?.({ error, operation: \"deserialize\" });\n return {};\n }\n\n const targetVersion = config.version ?? DEFAULT_VERSION;\n let candidate: unknown;\n if (isPersistencePayload(parsed)) {\n if (parsed.version === targetVersion) {\n candidate = parsed.state;\n } else if (config.migrate) {\n try {\n candidate = config.migrate(\n {\n version: parsed.version,\n state: parsed.state,\n },\n targetVersion,\n );\n } catch (error) {\n config.onError?.({ error, operation: \"migrate\" });\n return {};\n }\n } else {\n return {};\n }\n } else {\n // Raw objects are the legacy columnPrefsKey format. They are validated and\n // upgraded to a versioned envelope on the next successful write.\n candidate = parsed;\n }\n\n return selectPersistenceSlices(\n validateDataTableColumnPrefs(candidate),\n config.slices,\n );\n}\n\nexport function clearDataTableColumnPrefs(\n input: string | DataTablePersistenceConfig | undefined,\n) {\n const config = resolvePersistenceConfig(input);\n if (!config) {\n return false;\n }\n\n const storage = resolveStorage(config);\n if (!storage) {\n return false;\n }\n\n try {\n storage.removeItem(getStorageKey(config.key));\n return true;\n } catch (error) {\n config.onError?.({ error, operation: \"remove\" });\n return false;\n }\n}\n\nexport function usePersistDataTableColumnPrefs({\n key,\n persistence,\n prefs,\n}: {\n key?: string;\n persistence?: DataTablePersistenceConfig;\n prefs: DataTableColumnPrefs;\n}) {\n const config = persistence ?? resolvePersistenceConfig(key);\n const storage = config ? resolveStorage(config) : undefined;\n const storageKey = config ? getStorageKey(config.key) : undefined;\n const version = config?.version ?? DEFAULT_VERSION;\n const debounceMs = Math.max(0, config?.debounceMs ?? 100);\n const selectedState = selectPersistenceSlices(prefs, config?.slices);\n const serialized = React.useMemo(() => {\n if (!config) {\n return { value: undefined };\n }\n\n try {\n const payload: DataTablePersistencePayload = {\n version,\n state: selectedState,\n };\n return {\n value: (config.serialize ?? JSON.stringify)(payload),\n };\n } catch (error) {\n return { error, value: undefined };\n }\n }, [config, selectedState, version]);\n const onErrorEvent = React.useEffectEvent(\n (\n error: unknown,\n operation: \"serialize\" | \"write\",\n ) => {\n config?.onError?.({ error, operation });\n },\n );\n\n React.useEffect(() => {\n if (serialized.error !== undefined) {\n onErrorEvent(serialized.error, \"serialize\");\n }\n }, [serialized.error]);\n\n React.useEffect(() => {\n if (!storage || !storageKey || serialized.value === undefined) {\n return;\n }\n\n const write = () => {\n try {\n if (storage.getItem(storageKey) === serialized.value) {\n return;\n }\n storage.setItem(storageKey, serialized.value);\n } catch (error) {\n onErrorEvent(error, \"write\");\n }\n };\n\n if (debounceMs === 0) {\n write();\n return;\n }\n\n const timeout = globalThis.setTimeout(write, debounceMs);\n return () => {\n globalThis.clearTimeout(timeout);\n };\n }, [debounceMs, serialized.value, storage, storageKey]);\n}\n\nfunction resolvePersistenceConfig(\n input: string | DataTablePersistenceConfig | undefined,\n): DataTablePersistenceConfig | undefined {\n if (!input) {\n return undefined;\n }\n\n return typeof input === \"string\" ? { key: input } : input;\n}\n\nfunction resolveStorage(\n config: DataTablePersistenceConfig,\n): DataTablePersistenceStorage | undefined {\n if (config.storage) {\n return config.storage;\n }\n\n if (typeof window === \"undefined\") {\n return undefined;\n }\n\n try {\n return window.localStorage;\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return undefined;\n }\n}\n\nfunction getStorageKey(key: string) {\n return `${STORAGE_PREFIX}${key}`;\n}\n\nfunction isPersistencePayload(\n value: unknown,\n): value is { version: unknown; state: unknown } {\n return (\n isRecord(value) &&\n Object.prototype.hasOwnProperty.call(value, \"version\") &&\n Object.prototype.hasOwnProperty.call(value, \"state\")\n );\n}\n\nfunction selectPersistenceSlices(\n prefs: DataTableColumnPrefs,\n slices: Array | undefined,\n) {\n const selected = new Set(slices ?? ALL_SLICES);\n const result: DataTableColumnPrefs = {};\n\n for (const slice of ALL_SLICES) {\n if (selected.has(slice) && prefs[slice] !== undefined) {\n Object.assign(result, { [slice]: prefs[slice] });\n }\n }\n\n return result;\n}\n\nfunction validateDataTableColumnPrefs(value: unknown): DataTableColumnPrefs {\n if (!isRecord(value)) {\n return {};\n }\n\n const prefs: DataTableColumnPrefs = {};\n const visibility = validateBooleanRecord(value.visibility);\n if (visibility) {\n prefs.visibility = visibility;\n }\n const sizing = validateSizingRecord(value.sizing);\n if (sizing) {\n prefs.sizing = sizing;\n }\n const order = validateStringArray(value.order);\n if (order) {\n prefs.order = order;\n }\n if (isRecord(value.pinning)) {\n const left = validateStringArray(value.pinning.left) ?? [];\n const right = validateStringArray(value.pinning.right) ?? [];\n prefs.pinning = { left, right };\n }\n if (isDataTableDensity(value.density)) {\n prefs.density = value.density;\n }\n\n return prefs;\n}\n\nfunction validateBooleanRecord(value: unknown) {\n if (!isRecord(value)) {\n return undefined;\n }\n\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, boolean] => typeof entry[1] === \"boolean\",\n ),\n );\n}\n\nfunction validateSizingRecord(value: unknown) {\n if (!isRecord(value)) {\n return undefined;\n }\n\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, number] =>\n typeof entry[1] === \"number\" &&\n Number.isFinite(entry[1]) &&\n entry[1] >= 0,\n ),\n );\n}\n\nfunction validateStringArray(value: unknown) {\n if (!Array.isArray(value)) {\n return undefined;\n }\n\n return value.filter((item): item is string => typeof item === \"string\");\n}\n\nfunction isDataTableDensity(value: unknown): value is DataTableDensity {\n return (\n value === \"compact\" ||\n value === \"comfortable\" ||\n value === \"spacious\"\n );\n}\n\nfunction isRecord(value: unknown): value is Record {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n","import * as React from \"react\";\nimport { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS } from \"../types\";\n\nconst BREAKPOINT_WIDTHS = Object.values(DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS)\n .slice()\n .sort((first, second) => first - second);\n\nexport function useDataTableContainerWidth(\n containerRef: React.RefObject,\n) {\n const widthRef = React.useRef(0);\n const [width, setWidth] = React.useState(0);\n\n React.useEffect(() => {\n const element = containerRef.current;\n if (!element) {\n return;\n }\n\n const updateWidth = (inlineSize = element.clientWidth) => {\n const nextWidth = quantizeDataTableContainerWidth(inlineSize);\n if (nextWidth === widthRef.current) {\n return;\n }\n\n widthRef.current = nextWidth;\n setWidth(nextWidth);\n };\n\n updateWidth();\n\n if (typeof ResizeObserver === \"undefined\") {\n return;\n }\n\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n updateWidth(entry ? getResizeObserverInlineSize(entry) : undefined);\n });\n\n observer.observe(element);\n\n return () => {\n observer.disconnect();\n };\n }, [containerRef]);\n\n return width;\n}\n\nexport function quantizeDataTableContainerWidth(width: number) {\n if (width <= 0) {\n return 0;\n }\n\n let bucket = 1;\n for (const breakpointWidth of BREAKPOINT_WIDTHS) {\n if (width < breakpointWidth) {\n break;\n }\n bucket = breakpointWidth;\n }\n\n return bucket;\n}\n\nfunction getResizeObserverInlineSize(entry: ResizeObserverEntry) {\n const contentBoxSize: unknown = entry.contentBoxSize;\n const size: unknown = Array.isArray(contentBoxSize)\n ? contentBoxSize[0]\n : contentBoxSize;\n const inlineSize = getInlineSize(size);\n\n return inlineSize ?? entry.contentRect.width;\n}\n\nfunction getInlineSize(value: unknown) {\n if (typeof value !== \"object\" || value === null) {\n return undefined;\n }\n\n const inlineSize = (value as { inlineSize?: unknown }).inlineSize;\n return typeof inlineSize === \"number\" ? inlineSize : undefined;\n}\n","import * as React from \"react\";\nimport type {\n ColumnFiltersState,\n ColumnOrderState,\n ColumnPinningState,\n ColumnSizingState,\n ExpandedState,\n PaginationState,\n SortingState,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableDensity,\n DataTableLabels,\n DataTableProps,\n} from \"../types\";\nimport {\n createDataTableLoadingRows,\n getColumnId,\n getDataTableLeafColumns,\n getDataTableLoadingRowId,\n getInitialColumnPinning,\n isDataTableLoadingRow,\n} from \"./data-table-utils\";\nimport {\n readDataTableColumnPrefs,\n usePersistDataTableColumnPrefs,\n} from \"./use-data-table-column-prefs\";\nimport { useControllableState } from \"./use-controllable-state\";\nimport { useDataTableContainerWidth } from \"./use-data-table-container-width\";\nimport { isHiddenAtContainerWidth, isRowVisible } from \"../types\";\n\nexport function useDataTableState({\n columnFilters,\n columnOrder,\n columnPinning,\n columnSizing,\n columnPrefsKey,\n persistence,\n columnVisibility,\n columns,\n data,\n density,\n enableRowSelection,\n enableToolbarQueryFiltering,\n expanded,\n getRowId,\n hiddenRows,\n initialState,\n isLoading,\n loadingRowCount,\n manualFiltering,\n onColumnFiltersChange,\n onColumnOrderChange,\n onColumnPinningChange,\n onColumnSizingChange,\n onColumnVisibilityChange,\n onDensityChange,\n onExpandedChange,\n onPageIndexChange,\n onRowSelectionChange,\n onShowHiddenRowsChange,\n onSortingChange,\n onToolbarQueryValueChange,\n onViewModeChange,\n pageIndex,\n pageSize,\n resolvedLabels,\n rowSelection,\n rowsPerPageOptions,\n selectionActions,\n showHiddenRows,\n sorting,\n toolbarQueryDebounceMs,\n toolbarQueryPlaceholder,\n toolbarQueryValue,\n viewMode,\n containerRef,\n}: {\n columnFilters: DataTableProps[\"columnFilters\"];\n columnOrder: DataTableProps[\"columnOrder\"];\n columnPinning: DataTableProps[\"columnPinning\"];\n columnSizing?: DataTableProps[\"columnSizing\"];\n columnPrefsKey: DataTableProps[\"columnPrefsKey\"];\n persistence?: DataTableProps[\"persistence\"];\n columnVisibility: DataTableProps[\"columnVisibility\"];\n columns: DataTableProps[\"columns\"];\n data: DataTableProps[\"data\"];\n density: DataTableProps[\"density\"];\n enableRowSelection: boolean;\n enableToolbarQueryFiltering: boolean;\n expanded: DataTableProps[\"expanded\"];\n getRowId: DataTableProps[\"getRowId\"];\n hiddenRows: DataTableProps[\"hiddenRows\"];\n initialState?: DataTableProps[\"initialState\"];\n isLoading: boolean;\n loadingRowCount: DataTableProps[\"loadingRowCount\"];\n manualFiltering: boolean;\n onColumnFiltersChange: DataTableProps[\"onColumnFiltersChange\"];\n onColumnOrderChange: DataTableProps[\"onColumnOrderChange\"];\n onColumnPinningChange: DataTableProps[\"onColumnPinningChange\"];\n onColumnSizingChange?: DataTableProps[\"onColumnSizingChange\"];\n onColumnVisibilityChange: DataTableProps[\"onColumnVisibilityChange\"];\n onDensityChange: DataTableProps[\"onDensityChange\"];\n onExpandedChange: DataTableProps[\"onExpandedChange\"];\n onPageIndexChange: DataTableProps[\"onPageIndexChange\"];\n onRowSelectionChange: DataTableProps[\"onRowSelectionChange\"];\n onShowHiddenRowsChange: DataTableProps[\"onShowHiddenRowsChange\"];\n onSortingChange: DataTableProps[\"onSortingChange\"];\n onToolbarQueryValueChange: DataTableProps[\"onToolbarQueryValueChange\"];\n onViewModeChange: DataTableProps[\"onViewModeChange\"];\n pageIndex: DataTableProps[\"pageIndex\"];\n pageSize: DataTableProps[\"pageSize\"];\n resolvedLabels: DataTableLabels;\n rowSelection: DataTableProps[\"rowSelection\"];\n rowsPerPageOptions: Array;\n selectionActions: DataTableProps[\"selectionActions\"];\n showHiddenRows: DataTableProps[\"showHiddenRows\"];\n sorting: DataTableProps[\"sorting\"];\n toolbarQueryDebounceMs: DataTableProps[\"toolbarQueryDebounceMs\"];\n toolbarQueryPlaceholder: DataTableProps[\"toolbarQueryPlaceholder\"];\n toolbarQueryValue: DataTableProps[\"toolbarQueryValue\"];\n viewMode: DataTableProps[\"viewMode\"];\n containerRef: React.RefObject;\n}) {\n const persistenceConfig = React.useMemo(\n () => persistence ?? (columnPrefsKey ? { key: columnPrefsKey } : undefined),\n [columnPrefsKey, persistence],\n );\n const persistedColumnPrefs = React.useMemo(\n () => readDataTableColumnPrefs(persistenceConfig),\n [persistenceConfig],\n );\n const [localPagination, setLocalPagination] =\n React.useState({\n pageIndex: initialState?.pagination?.pageIndex ?? 0,\n pageSize:\n initialState?.pagination?.pageSize ??\n rowsPerPageOptions[0] ??\n 20,\n });\n const [currentSorting, setCurrentSorting] =\n useControllableState({\n value: sorting,\n onChange: onSortingChange,\n defaultValue: () => initialState?.sorting ?? [],\n });\n const [currentRowSelection, setCurrentRowSelection] = useControllableState<\n Record\n >({\n value: rowSelection,\n onChange: onRowSelectionChange,\n defaultValue: () => initialState?.rowSelection ?? {},\n });\n const [currentColumnVisibility, setCurrentColumnVisibility] =\n useControllableState({\n value: columnVisibility,\n onChange: onColumnVisibilityChange,\n defaultValue: () =>\n initialState?.columnVisibility ??\n persistedColumnPrefs.visibility ??\n {},\n });\n const [currentColumnFilters, setCurrentColumnFilters] =\n useControllableState({\n value: columnFilters,\n onChange: onColumnFiltersChange,\n defaultValue: () => initialState?.columnFilters ?? [],\n });\n const [currentExpanded, setCurrentExpanded] =\n useControllableState({\n value: expanded,\n onChange: onExpandedChange,\n defaultValue: () => initialState?.expanded ?? {},\n });\n const [currentColumnOrder, setCurrentColumnOrder] =\n useControllableState({\n value: columnOrder,\n onChange: onColumnOrderChange,\n defaultValue: () =>\n initialState?.columnOrder ?? persistedColumnPrefs.order ?? [],\n });\n const [currentColumnPinning, setCurrentColumnPinning] =\n useControllableState({\n value: columnPinning,\n onChange: onColumnPinningChange,\n defaultValue: () =>\n initialState?.columnPinning ??\n persistedColumnPrefs.pinning ??\n getInitialColumnPinning(columns),\n });\n const [currentColumnSizing, setCurrentColumnSizing] =\n useControllableState({\n value: columnSizing,\n onChange: onColumnSizingChange,\n defaultValue: () =>\n initialState?.columnSizing ?? persistedColumnPrefs.sizing ?? {},\n });\n const [currentViewMode, setCurrentViewMode] = useControllableState<\n \"table\" | \"card\"\n >({\n value: viewMode,\n onChange: onViewModeChange,\n defaultValue: () => initialState?.viewMode ?? \"table\",\n });\n const [currentShowHiddenRows, setCurrentShowHiddenRows] =\n useControllableState({\n value: showHiddenRows,\n onChange: onShowHiddenRowsChange,\n defaultValue: () => initialState?.showHiddenRows ?? false,\n });\n const [currentDensity, setCurrentDensity] =\n useControllableState({\n value: density,\n onChange: onDensityChange,\n defaultValue: () =>\n initialState?.density ??\n persistedColumnPrefs.density ??\n \"comfortable\",\n });\n const resolvedToolbarQueryValue =\n toolbarQueryValue ?? initialState?.globalFilter ?? \"\";\n const resolvedToolbarQueryPlaceholder =\n toolbarQueryPlaceholder ?? resolvedLabels.searchPlaceholder;\n const resolvedToolbarQueryDebounceMs = toolbarQueryDebounceMs ?? 250;\n const [localSearchValue, setLocalSearchValue] = React.useState(\n resolvedToolbarQueryValue,\n );\n const containerWidth = useDataTableContainerWidth(containerRef);\n const hasOnSearchValueChange = Boolean(onToolbarQueryValueChange);\n const lastReportedSearchValueRef = React.useRef(resolvedToolbarQueryValue);\n const onToolbarQueryValueChangeEvent = React.useEffectEvent(\n (value: string) => {\n lastReportedSearchValueRef.current = value;\n onToolbarQueryValueChange?.(value);\n },\n );\n\n React.useEffect(() => {\n lastReportedSearchValueRef.current = resolvedToolbarQueryValue;\n // A controlled query change must replace any pending debounced draft.\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setLocalSearchValue(resolvedToolbarQueryValue);\n }, [resolvedToolbarQueryValue]);\n\n React.useEffect(() => {\n if (!hasOnSearchValueChange) {\n return;\n }\n\n if (localSearchValue === resolvedToolbarQueryValue) {\n return;\n }\n\n if (localSearchValue === lastReportedSearchValueRef.current) {\n return;\n }\n\n const timeout = window.setTimeout(() => {\n onToolbarQueryValueChangeEvent(localSearchValue);\n }, resolvedToolbarQueryDebounceMs);\n\n return () => {\n window.clearTimeout(timeout);\n };\n }, [\n hasOnSearchValueChange,\n localSearchValue,\n resolvedToolbarQueryDebounceMs,\n resolvedToolbarQueryValue,\n ]);\n\n const currentPagination = React.useMemo(\n () => ({\n pageIndex: pageIndex ?? localPagination.pageIndex,\n pageSize: pageSize ?? localPagination.pageSize,\n }),\n [\n localPagination.pageIndex,\n localPagination.pageSize,\n pageIndex,\n pageSize,\n ],\n );\n const resolvedLoadingRowCount = Math.max(\n 1,\n loadingRowCount ?? Math.min(5, currentPagination.pageSize),\n );\n const globalFilterValue = enableToolbarQueryFiltering\n ? localSearchValue\n : \"\";\n const handleViewModeChange = React.useCallback(\n (nextViewMode: \"table\" | \"card\") => {\n setCurrentViewMode(nextViewMode);\n },\n [setCurrentViewMode],\n );\n const handleShowHiddenRowsChange = React.useCallback(\n (nextShowHiddenRows: boolean) => {\n setCurrentShowHiddenRows(nextShowHiddenRows);\n },\n [setCurrentShowHiddenRows],\n );\n const handleDensityChange = React.useCallback(\n (nextDensity: DataTableDensity) => {\n setCurrentDensity(nextDensity);\n },\n [setCurrentDensity],\n );\n const resetPageIndexForFilterChange = React.useCallback(() => {\n onPageIndexChange?.(0);\n if (pageIndex === undefined) {\n setLocalPagination((current) =>\n current.pageIndex === 0 ? current : { ...current, pageIndex: 0 },\n );\n }\n }, [onPageIndexChange, pageIndex]);\n const lastFilterStateRef = React.useRef({\n columnFilters: currentColumnFilters,\n globalFilterValue,\n });\n\n React.useEffect(() => {\n const previous = lastFilterStateRef.current;\n const filtersChanged = previous.columnFilters !== currentColumnFilters;\n const globalFilterChanged =\n previous.globalFilterValue !== globalFilterValue;\n lastFilterStateRef.current = {\n columnFilters: currentColumnFilters,\n globalFilterValue,\n };\n\n if (manualFiltering) {\n return;\n }\n\n if (!filtersChanged && !globalFilterChanged) {\n return;\n }\n\n resetPageIndexForFilterChange();\n }, [\n currentColumnFilters,\n globalFilterValue,\n manualFiltering,\n resetPageIndexForFilterChange,\n ]);\n\n usePersistDataTableColumnPrefs({\n persistence: persistenceConfig,\n prefs: {\n visibility: columnVisibility ? undefined : currentColumnVisibility,\n sizing:\n columnSizing === undefined ? currentColumnSizing : undefined,\n order: columnOrder ? undefined : currentColumnOrder,\n pinning: columnPinning ? undefined : currentColumnPinning,\n density: density ? undefined : currentDensity,\n },\n });\n const responsiveColumnVisibility = React.useMemo(() => {\n return getDataTableLeafColumns(columns).reduce(\n (visibility, { column, index }) => {\n const columnId = getColumnId(column, index);\n if (isHiddenAtContainerWidth(column.meta?.hideOn, containerWidth)) {\n visibility[columnId] = false;\n }\n return visibility;\n },\n {},\n );\n }, [columns, containerWidth]);\n const effectiveColumnVisibility = React.useMemo(() => {\n return {\n ...currentColumnVisibility,\n ...responsiveColumnVisibility,\n };\n }, [currentColumnVisibility, responsiveColumnVisibility]);\n const visibleData = React.useMemo(\n () =>\n data.filter((row) =>\n isRowVisible(row, hiddenRows, currentShowHiddenRows),\n ),\n [currentShowHiddenRows, data, hiddenRows],\n );\n const shouldRenderInitialLoading = isLoading && visibleData.length === 0;\n const loadingRows = React.useMemo(\n () => createDataTableLoadingRows(resolvedLoadingRowCount),\n [resolvedLoadingRowCount],\n );\n const tableData = shouldRenderInitialLoading\n ? loadingRows\n : visibleData;\n const tableGetRowId = React.useCallback(\n (row: TData, index: number) => {\n if (isDataTableLoadingRow(row)) {\n return getDataTableLoadingRowId(index);\n }\n\n return getRowId(row, index);\n },\n [getRowId],\n );\n const shouldResolveSelectedRows =\n enableRowSelection ||\n (selectionActions?.length ?? 0) > 0 ||\n Object.values(currentRowSelection).some(Boolean);\n const rowById = React.useMemo(() => {\n if (!shouldResolveSelectedRows) {\n return new Map();\n }\n\n return new Map(\n visibleData.map((row, index) => [getRowId(row, index), row]),\n );\n }, [getRowId, shouldResolveSelectedRows, visibleData]);\n const selectedRows = React.useMemo(() => {\n if (!shouldResolveSelectedRows) {\n return [];\n }\n\n return Object.entries(currentRowSelection)\n .filter(([, selected]) => selected)\n .map(([rowId]) => rowById.get(rowId))\n .filter((row): row is TData => Boolean(row));\n }, [currentRowSelection, rowById, shouldResolveSelectedRows]);\n\n return {\n containerWidth,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n effectiveColumnVisibility,\n globalFilterValue,\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n localSearchValue,\n resolvedLoadingRowCount,\n resolvedToolbarQueryPlaceholder,\n selectedRows,\n setCurrentColumnFilters,\n setCurrentColumnOrder,\n setCurrentColumnPinning,\n setCurrentColumnVisibility,\n setCurrentExpanded,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing: setCurrentColumnSizing,\n setLocalPagination,\n setLocalSearchValue,\n shouldRenderInitialLoading,\n tableData,\n tableGetRowId,\n /**\n * @deprecated Read the filtered TanStack row model from the table\n * instance. This alias remains for advanced 4.x callers.\n */\n toolbarFilteredData: visibleData,\n visibleData,\n };\n}\n","import * as React from \"react\";\nimport type { Column, ColumnSizingState } from \"@tanstack/react-table\";\nimport type { DataTableColumnDef } from \"../types\";\nimport type { DataTableUiClassNames } from \"../ui-kit\";\nimport {\n UTILITY_COLUMN_SIZE,\n getColumnId,\n getConfiguredColumnMinWidth,\n getDataTableLeafColumns,\n getFixedSide,\n getPinnedColumnClassName,\n isUtilityColumnId,\n} from \"./data-table-utils\";\n\ntype ColumnLayoutMode = \"fill\" | \"fit\";\n\nexport type DataTableColumnLayout = {\n cellStyle: React.CSSProperties | undefined;\n colStyle: React.CSSProperties | undefined;\n fixedSide: \"left\" | \"right\" | false | undefined;\n headerStyle: React.CSSProperties | undefined;\n isActionsColumn: boolean;\n isExpansionColumn: boolean;\n isSelectionColumn: boolean;\n isSpacerColumn: boolean;\n isUtilityColumn: boolean;\n pinnedClassName: string | undefined;\n utilityClassName: string | undefined;\n};\n\nconst EMPTY_COLUMN_LAYOUT: DataTableColumnLayout = {\n cellStyle: undefined,\n colStyle: undefined,\n fixedSide: undefined,\n headerStyle: undefined,\n isActionsColumn: false,\n isExpansionColumn: false,\n isSelectionColumn: false,\n isSpacerColumn: false,\n isUtilityColumn: false,\n pinnedClassName: undefined,\n utilityClassName: undefined,\n};\n\nexport function useColumnLayout({\n columns,\n columnSizing,\n editableRows,\n enableRowSelection,\n hasRowActions,\n hasRowExpansion,\n layoutMode,\n uiClassNames,\n visibleLeafColumns,\n}: {\n columns: Array>;\n columnSizing: ColumnSizingState;\n editableRows: boolean;\n enableRowSelection: boolean;\n hasRowActions: boolean;\n hasRowExpansion: boolean;\n layoutMode: ColumnLayoutMode;\n uiClassNames: DataTableUiClassNames;\n visibleLeafColumns: Array>;\n}) {\n const explicitlySizedColumnIds = React.useMemo(() => {\n const ids = new Set();\n\n for (const { column, index } of getDataTableLeafColumns(columns)) {\n if (Object.prototype.hasOwnProperty.call(column, \"size\")) {\n ids.add(getColumnId(column, index));\n }\n }\n\n if (enableRowSelection) {\n ids.add(\"__select__\");\n }\n\n if (hasRowExpansion) {\n ids.add(\"__expand__\");\n }\n\n if (hasRowActions || editableRows) {\n ids.add(\"__actions__\");\n }\n\n return ids;\n }, [\n columns,\n editableRows,\n enableRowSelection,\n hasRowActions,\n hasRowExpansion,\n ]);\n\n const minimumColumnWidths = React.useMemo(() => {\n const widths = new Map();\n\n for (const { column, index } of getDataTableLeafColumns(columns)) {\n const configuredMinWidth = getConfiguredColumnMinWidth(column);\n\n if (configuredMinWidth !== undefined) {\n widths.set(getColumnId(column, index), configuredMinWidth);\n }\n }\n\n return widths;\n }, [columns]);\n\n const pinnedColumns = React.useMemo(() => {\n const left = new Map();\n const right = new Map();\n\n let leftOffset = 0;\n for (const column of visibleLeafColumns) {\n if (getFixedSide(column) === \"left\") {\n left.set(column.id, leftOffset);\n leftOffset += getColumnLayoutSize(column);\n }\n }\n\n let rightOffset = 0;\n for (const column of [...visibleLeafColumns].reverse()) {\n if (getFixedSide(column) === \"right\") {\n right.set(column.id, rightOffset);\n rightOffset += getColumnLayoutSize(column);\n }\n }\n\n return { left, right };\n }, [visibleLeafColumns]);\n\n const fillColumnId = React.useMemo(() => {\n if (layoutMode !== \"fill\") {\n return undefined;\n }\n\n const dataColumns = visibleLeafColumns.filter(\n (column) => !isUtilityColumnId(column.id),\n );\n\n if (!dataColumns.length) {\n return undefined;\n }\n\n const allDataColumnsAreFixed = dataColumns.every(\n (column) =>\n explicitlySizedColumnIds.has(column.id) ||\n Object.prototype.hasOwnProperty.call(columnSizing, column.id),\n );\n\n return allDataColumnsAreFixed\n ? dataColumns[dataColumns.length - 1]?.id\n : undefined;\n }, [\n columnSizing,\n explicitlySizedColumnIds,\n layoutMode,\n visibleLeafColumns,\n ]);\n\n const fixedWidthColumnIds = React.useMemo(() => {\n const ids = new Set([\n ...explicitlySizedColumnIds,\n ...Object.keys(columnSizing),\n ]);\n\n if (fillColumnId) {\n ids.delete(fillColumnId);\n }\n\n return ids;\n }, [columnSizing, explicitlySizedColumnIds, fillColumnId]);\n\n const columnLayouts = React.useMemo(() => {\n const layouts = new Map();\n\n for (const column of visibleLeafColumns) {\n const isSelectionColumn = column.id === \"__select__\";\n const isExpansionColumn = column.id === \"__expand__\";\n const isActionsColumn = column.id === \"__actions__\";\n const isUtilityColumn =\n isSelectionColumn || isExpansionColumn || isActionsColumn;\n const isSpacerColumn = column.id === \"__spacer__\";\n const configuredMinWidth = minimumColumnWidths.get(column.id);\n const isFlexibleFillColumn = column.id === fillColumnId;\n const columnMinWidth =\n configuredMinWidth ??\n (isFlexibleFillColumn ? column.getSize() : undefined);\n const shouldFixWidth =\n !isSpacerColumn &&\n (layoutMode === \"fit\" ||\n isUtilityColumn ||\n fixedWidthColumnIds.has(column.id));\n const baseStyle =\n shouldFixWidth || columnMinWidth !== undefined\n ? {\n width: shouldFixWidth\n ? isUtilityColumn\n ? UTILITY_COLUMN_SIZE\n : column.getSize()\n : undefined,\n minWidth: isUtilityColumn\n ? UTILITY_COLUMN_SIZE\n : shouldFixWidth\n ? column.getSize()\n : columnMinWidth,\n maxWidth: shouldFixWidth\n ? isUtilityColumn\n ? UTILITY_COLUMN_SIZE\n : column.getSize()\n : undefined,\n }\n : undefined;\n const fixedSide = getFixedSide(column);\n const pinnedStyle = fixedSide\n ? {\n left:\n fixedSide === \"left\" ? pinnedColumns.left.get(column.id) : undefined,\n right:\n fixedSide === \"right\"\n ? pinnedColumns.right.get(column.id)\n : undefined,\n }\n : undefined;\n const cellStyle =\n baseStyle || pinnedStyle ? { ...baseStyle, ...pinnedStyle } : undefined;\n\n layouts.set(column.id, {\n cellStyle,\n colStyle: baseStyle,\n fixedSide,\n headerStyle: cellStyle,\n isActionsColumn,\n isExpansionColumn,\n isSelectionColumn,\n isSpacerColumn,\n isUtilityColumn,\n pinnedClassName: fixedSide\n ? getPinnedColumnClassName(fixedSide, uiClassNames, {\n isUtilityColumn,\n })\n : undefined,\n utilityClassName: isUtilityColumn\n ? \"w-[50px] max-w-[50px] min-w-[50px] px-0\"\n : undefined,\n });\n }\n\n return layouts;\n }, [\n fillColumnId,\n fixedWidthColumnIds,\n layoutMode,\n minimumColumnWidths,\n pinnedColumns,\n uiClassNames,\n visibleLeafColumns,\n ]);\n\n const fillMinWidth = React.useMemo(() => {\n return visibleLeafColumns.reduce((total, column) => {\n const layout = columnLayouts.get(column.id);\n const configuredMinWidth = minimumColumnWidths.get(column.id);\n const isFlexibleFillColumn = column.id === fillColumnId;\n\n if (layout?.isUtilityColumn) {\n return total + UTILITY_COLUMN_SIZE;\n }\n\n if (fixedWidthColumnIds.has(column.id)) {\n return total + column.getSize();\n }\n\n return (\n total +\n (configuredMinWidth ?? (isFlexibleFillColumn ? column.getSize() : 0))\n );\n }, 0);\n }, [\n columnLayouts,\n fillColumnId,\n fixedWidthColumnIds,\n minimumColumnWidths,\n visibleLeafColumns,\n ]);\n\n const getColumnLayout = React.useCallback(\n (columnId: string) => columnLayouts.get(columnId) ?? EMPTY_COLUMN_LAYOUT,\n [columnLayouts],\n );\n\n return {\n columnLayouts,\n explicitlySizedColumnIds,\n fillMinWidth,\n getColumnLayout,\n };\n}\n\nfunction getColumnLayoutSize(column: Column) {\n return isUtilityColumnId(column.id) ? UTILITY_COLUMN_SIZE : column.getSize();\n}\n","import * as React from \"react\";\nimport type { Row } from \"@tanstack/react-table\";\nimport type {\n DataTableCardRendererProps,\n DataTableCardSizing,\n DataTableEditableRowsConfig,\n DataTableExpandedRowProps,\n DataTableLabels,\n DataTableProps,\n DataTableRowAction,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\nimport { isDataTableInteractiveTarget } from \"./data-table-utils\";\n\ntype DataTableCardViewProps = {\n rows: Array>;\n cardRenderer: (props: DataTableCardRendererProps) => React.ReactNode;\n cardSizing?: DataTableCardSizing;\n cardGridClassName?: string;\n cardClassName?: string;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n renderExpandedRow?: (\n props: DataTableExpandedRowProps,\n ) => React.ReactNode;\n hasCardTitle: boolean;\n rowSelection: Record;\n onRowSelectionChange: (rowSelection: Record) => void;\n enableRowSelection: boolean;\n editingRowId: string | null;\n onEditingRowIdChange: (rowId: string | null) => void;\n getRowClassName?: DataTableProps[\"getRowClassName\"];\n onRowClick?: (context: { row: TData; rowId: string }) => void | Promise;\n getRowDraggable?: (row: TData) => boolean;\n onRowDragStart?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n onRowDragEnd?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n isLoading?: boolean;\n loadingRowCount?: number;\n labels: DataTableLabels;\n};\n\ntype DataTableRowActionsComponent = (props: {\n row: TData;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n onStartEditing: () => void;\n onCancelEditing: () => void;\n labels: DataTableLabels;\n}) => React.ReactElement | null;\n\nexport function createDataTableCardView(\n ui: DataTableUiKit,\n DataTableRowActions: DataTableRowActionsComponent,\n) {\n const uiClassNames = ui.classNames ?? {};\n const { Card, CardContent, CardHeader, Checkbox, Skeleton } = ui;\n\n return function DataTableCardView({\n rows,\n cardRenderer,\n cardSizing = \"fixed\",\n cardGridClassName,\n cardClassName,\n rowActions,\n editableRows,\n renderExpandedRow,\n hasCardTitle,\n rowSelection,\n onRowSelectionChange,\n enableRowSelection,\n editingRowId,\n onEditingRowIdChange,\n getRowClassName,\n onRowClick,\n getRowDraggable,\n onRowDragStart,\n onRowDragEnd,\n isLoading = false,\n loadingRowCount = 5,\n labels,\n }: DataTableCardViewProps) {\n const resolvedCardSizing = cardSizing ?? \"fixed\";\n const resolvedCardGridClassName =\n cardGridClassName\n ? cn(\"grid\", cardGridClassName)\n : getCardGridClassName(resolvedCardSizing);\n const cardGridClasses = cn(\n \"min-h-0 w-full gap-4 p-1\",\n uiClassNames.cardGrid,\n resolvedCardGridClassName,\n );\n const cardItemClasses = (stateClassName?: string) =>\n cn(\n \"relative min-w-0 max-w-full gap-0 overflow-hidden bg-transparent p-0\",\n getCardItemClassName(resolvedCardSizing),\n uiClassNames.cardItem,\n cardClassName,\n stateClassName,\n );\n\n if (isLoading) {\n return (\n \n {Array.from({ length: Math.max(1, loadingRowCount) }, (_, index) => (\n \n {hasCardTitle ? (\n \n \n \n \n ) : null}\n \n \n \n \n \n \n \n ))}\n \n );\n }\n\n return (\n \n {rows.map((row) => {\n const rowId = row.id;\n const originalRow = row.original;\n const isSelected = Boolean(rowSelection[rowId]);\n const isEditing = editingRowId === rowId;\n const hasCardActions = rowActions.length > 0 || Boolean(editableRows);\n const showCardGradient =\n enableRowSelection || hasCardActions || hasCardTitle;\n const showCardOverlayControls = enableRowSelection || hasCardActions;\n const handleCardActivate = () => {\n if (!onRowClick) {\n return;\n }\n\n void onRowClick({ row: originalRow, rowId });\n };\n\n return (\n ) => {\n onRowDragStart?.({ row: originalRow, rowId, event });\n }}\n onDragEnd={(event: React.DragEvent) => {\n onRowDragEnd?.({ row: originalRow, rowId, event });\n }}\n >\n {showCardGradient ? (\n \n ) : null}\n *]:min-w-0\",\n getCardRendererClassName(resolvedCardSizing),\n onRowClick && \"cursor-pointer focus-visible:outline-none\",\n )}\n onClick={(event: React.MouseEvent) => {\n if (\n isDataTableInteractiveTarget(\n event.target,\n event.currentTarget,\n )\n ) {\n return;\n }\n\n handleCardActivate();\n }}\n onKeyDown={(event: React.KeyboardEvent) => {\n if (\n isDataTableInteractiveTarget(\n event.target,\n event.currentTarget,\n )\n ) {\n return;\n }\n\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n handleCardActivate();\n }\n }}\n >\n {cardRenderer({\n row: originalRow,\n rowId,\n isSelected,\n onSelectedChange: (nextValue) => {\n onRowSelectionChange(\n updateRowSelection(rowSelection, rowId, nextValue),\n );\n },\n actions: rowActions,\n isEditing,\n startEditing: () => {\n onEditingRowIdChange(rowId);\n },\n cancelEditing: () => {\n onEditingRowIdChange(null);\n },\n })}\n {isEditing || !renderExpandedRow || !row.getIsExpanded()\n ? null\n : renderExpandedRow({\n row: originalRow,\n rowId,\n tableRow: row,\n })}\n \n {showCardOverlayControls ? (\n \n {enableRowSelection ? (\n \n {\n onRowSelectionChange(\n updateRowSelection(\n rowSelection,\n rowId,\n checked === true,\n ),\n );\n }}\n />\n \n ) : null}\n
    \n {hasCardActions ? (\n \n {\n onEditingRowIdChange(rowId);\n }}\n onCancelEditing={() => {\n onEditingRowIdChange(null);\n }}\n labels={labels}\n />\n
    \n ) : null}\n
    \n ) : null}\n \n );\n })}\n \n );\n };\n}\n\nfunction getCardGridClassName(cardSizing: DataTableCardSizing) {\n switch (cardSizing) {\n case \"content\":\n return \"flex flex-wrap items-start justify-start\";\n case \"fluid\":\n return \"grid grid-cols-[repeat(auto-fit,minmax(min(18rem,100%),1fr))]\";\n case \"fixed\":\n default:\n return \"grid grid-cols-[repeat(auto-fill,minmax(min(18rem,100%),18rem))] justify-start\";\n }\n}\n\nfunction getCardItemClassName(cardSizing: DataTableCardSizing) {\n switch (cardSizing) {\n case \"content\":\n return \"w-fit\";\n case \"fluid\":\n return \"w-full\";\n case \"fixed\":\n default:\n return undefined;\n }\n}\n\nfunction getCardRendererClassName(cardSizing: DataTableCardSizing) {\n switch (cardSizing) {\n case \"content\":\n return \"w-fit\";\n case \"fluid\":\n return \"w-full flex-1 [&>*]:w-full\";\n case \"fixed\":\n default:\n return \"flex-1\";\n }\n}\n\nfunction updateRowSelection(\n rowSelection: Record,\n rowId: string,\n isSelected: boolean,\n) {\n if (isSelected) {\n return {\n ...rowSelection,\n [rowId]: true,\n };\n }\n\n if (!rowSelection[rowId]) {\n return rowSelection;\n }\n\n const nextSelection = { ...rowSelection };\n delete nextSelection[rowId];\n return nextSelection;\n}\n","import { IconInbox } from \"../icons\";\nimport type { DataTableUiKit } from \"../ui-kit\";\n\nexport function createDataTableEmptyState(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n } = ui;\n\n return function DataTableEmptyState({\n title = \"No rows found\",\n description = \"Adjust your filters or create a new record to populate this table.\",\n }: {\n title?: string;\n description?: string;\n }) {\n return (\n \n \n \n \n \n {title}\n {description}\n \n \n \n );\n };\n}\n","import * as React from \"react\";\nimport { IconDatabase } from \"../icons\";\nimport type { DataTableLabels } from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\ntype DataTablePaginationProps = {\n pageIndex: number;\n pageCount: number;\n pageCountKnown: boolean;\n pageSize: number;\n totalRowCount?: number;\n rowsPerPageOptions: Array;\n onPageIndexChange: (pageIndex: number) => void;\n onPageSizeChange: (pageSize: number) => void;\n labels: DataTableLabels;\n};\n\nexport function createDataTablePagination(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectTrigger,\n SelectValue,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n function DataTablePagination({\n pageIndex,\n pageCount,\n pageCountKnown,\n pageSize,\n totalRowCount,\n rowsPerPageOptions,\n onPageIndexChange,\n onPageSizeChange,\n labels,\n }: DataTablePaginationProps) {\n const pages = pageCountKnown\n ? getVisiblePages(pageIndex, Math.max(1, pageCount))\n : [];\n const canGoPrevious = pageIndex > 0;\n const canGoNext = pageIndex + 1 < pageCount;\n const lastPageIndex = Math.max(0, pageCount - 1);\n\n return (\n
    \n \n \n {labels.recordsPerPage}\n \n {\n onPageSizeChange(Number(value));\n }}\n >\n \n \n \n \n \n {rowsPerPageOptions.map((option) => (\n \n {option}\n \n ))}\n \n \n \n
    \n\n {totalRowCount !== undefined ? (\n
    \n \n \n {totalRowCount}\n \n {labels.totalRecords(totalRowCount)}\n \n
    \n \n ) : null}\n\n
    \n \n {pageCountKnown\n ? labels.pageStatus(pageIndex, Math.max(1, pageCount))\n : (\n labels.pageStatusUnknown ??\n DATA_TABLE_DEFAULT_LABELS.pageStatusUnknown\n )(pageIndex)}\n
    \n \n \n \n \n \n ) => {\n event.preventDefault();\n if (canGoPrevious) {\n onPageIndexChange(0);\n }\n }}\n text={labels.firstPage}\n />\n \n {labels.firstPage}\n \n \n \n \n \n ) => {\n event.preventDefault();\n if (canGoPrevious) {\n onPageIndexChange(pageIndex - 1);\n }\n }}\n text={labels.previousPage}\n />\n \n {labels.previousPage}\n \n \n {pages.map((item, index) => (\n \n {item === \"ellipsis\" ? (\n \n ) : (\n ) => {\n event.preventDefault();\n onPageIndexChange(item - 1);\n }}\n >\n {item}\n \n )}\n \n ))}\n \n \n \n ) => {\n event.preventDefault();\n if (canGoNext) {\n onPageIndexChange(pageIndex + 1);\n }\n }}\n text={labels.nextPage}\n />\n \n {labels.nextPage}\n \n \n {pageCountKnown ? (\n \n \n \n ,\n ) => {\n event.preventDefault();\n if (canGoNext) {\n onPageIndexChange(lastPageIndex);\n }\n }}\n />\n \n {labels.lastPage}\n \n \n ) : null}\n \n \n \n \n );\n }\n\n function DataTableFooter(props: DataTablePaginationProps) {\n return (\n \n \n \n );\n }\n\n return {\n DataTableFooter,\n DataTablePagination,\n };\n}\n\nfunction getVisiblePages(currentPageIndex: number, pageCount: number) {\n const currentPage = currentPageIndex + 1;\n const pages = new Set([1, pageCount]);\n\n for (\n let page = Math.max(1, currentPage - 2);\n page <= Math.min(pageCount, currentPage + 2);\n page += 1\n ) {\n pages.add(page);\n }\n\n const orderedPages = Array.from(pages).sort((left, right) => left - right);\n const items: Array = [];\n\n for (let index = 0; index < orderedPages.length; index += 1) {\n const page = orderedPages[index];\n const previous = orderedPages[index - 1];\n\n if (previous && page - previous > 1) {\n items.push(\"ellipsis\");\n }\n\n items.push(page);\n }\n\n return items;\n}\n","import * as React from \"react\";\nimport { IconDots, IconEdit, IconX } from \"../icons\";\nimport type {\n DataTableEditableRowsConfig,\n DataTableLabels,\n DataTableRowAction,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { canEditRow, canUseRowAction, resolveRowActionLabel } from \"../types\";\n\ntype DataTableRowActionsProps = {\n row: TData;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n onStartEditing: () => void;\n onCancelEditing: () => void;\n labels: DataTableLabels;\n};\n\nexport function createDataTableRowActions(ui: DataTableUiKit) {\n const {\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n return function DataTableRowActions({\n row,\n rowActions,\n editableRows,\n isEditing,\n onStartEditing,\n onCancelEditing,\n labels,\n }: DataTableRowActionsProps) {\n const actions = rowActions.filter((action) => canUseRowAction(action, row));\n const stopRowClickPropagation = React.useCallback(\n (event: React.SyntheticEvent) => {\n event.stopPropagation();\n },\n [],\n );\n\n if (isEditing) {\n return (\n \n \n \n \n {labels.cancelEdit}\n \n \n {labels.cancelEdit}\n \n );\n }\n\n const allowEdit = canEditRow(editableRows, row);\n if (!actions.length && !allowEdit) {\n return null;\n }\n\n return (\n \n \n \n \n \n \n {labels.rowActions}\n \n \n \n {labels.rowActions}\n \n \n {allowEdit ? (\n \n ) => {\n event.stopPropagation();\n onStartEditing();\n }}\n >\n \n {labels.editRow}\n \n \n ) : null}\n {allowEdit && actions.length ? : null}\n {actions.length ? (\n \n {actions.map((action) => {\n const Icon = action.icon;\n return (\n ) => {\n event.stopPropagation();\n void action.onClick(row);\n }}\n >\n {Icon ? : null}\n {resolveRowActionLabel(action.label, row)}\n \n );\n })}\n \n ) : null}\n \n \n );\n };\n}\n","import * as React from \"react\";\nimport {\n IconAdjustmentsHorizontal,\n IconLayoutGrid,\n IconList,\n IconSearch,\n IconX,\n} from \"../icons\";\nimport type {\n DataTableColumnFilterType,\n DataTableColumnFixed,\n DataTableColumnVisibilityOption,\n DataTableDensity,\n DataTableLabels,\n DataTableSelectionAction,\n DataTableToolbarAction,\n DataTableToolbarVisibility,\n DataTableViewMode,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\nexport type DataTableToolbarColumnFilter = {\n id: string;\n label: string;\n type: DataTableColumnFilterType;\n value: unknown;\n placeholder?: string;\n options: Array<{ label: string; value: string }>;\n};\n\ntype DataTableToolbarProps = {\n title?: string;\n titleId?: string;\n description?: string;\n descriptionId?: string;\n toolbarQueryValue: string;\n toolbarQueryPlaceholder: string;\n onToolbarQueryValueChange: (value: string) => void;\n customToolbar?: React.ReactNode;\n compactToolbar?: React.ReactNode;\n viewMode: DataTableViewMode;\n onViewModeChange?: (viewMode: DataTableViewMode) => void;\n enableViewToggle: boolean;\n toolbarActions: Array>;\n selectionActions: Array>;\n selectedRows: Array;\n showHiddenRows: boolean;\n hiddenRowsLabel?: string;\n onShowHiddenRowsChange?: (showHiddenRows: boolean) => void;\n allRows: Array;\n columnVisibilityOptions: Array;\n onColumnVisibilityChange?: (columnId: string, visible: boolean) => void;\n enableColumnPinning: boolean;\n onColumnPinningChange: (columnId: string, side: DataTableColumnFixed | false) => void;\n columnFilters: Array;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n onClearColumnFilters: () => void;\n density: DataTableDensity;\n onDensityChange: (density: DataTableDensity) => void;\n enableDensityToggle: boolean;\n labels: DataTableLabels;\n toolbarVisibility?: DataTableToolbarVisibility;\n openFileDialog?: () => void;\n};\n\nexport function createDataTableToolbar(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Button,\n ButtonGroup,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n return function DataTableToolbar({\n title,\n titleId,\n description,\n descriptionId,\n toolbarQueryValue,\n toolbarQueryPlaceholder,\n onToolbarQueryValueChange,\n customToolbar,\n compactToolbar,\n viewMode,\n onViewModeChange,\n enableViewToggle,\n toolbarActions,\n selectionActions,\n selectedRows,\n showHiddenRows,\n hiddenRowsLabel,\n onShowHiddenRowsChange,\n allRows,\n columnVisibilityOptions,\n onColumnVisibilityChange,\n enableColumnPinning,\n onColumnPinningChange,\n columnFilters,\n onColumnFilterChange,\n onClearColumnFilters,\n density,\n onDensityChange,\n enableDensityToggle,\n labels,\n toolbarVisibility,\n openFileDialog,\n }: DataTableToolbarProps) {\n const compactSearchInputRef = React.useRef(null);\n const [isCompactSearchVisible, setIsCompactSearchVisible] =\n React.useState(false);\n const compactToolbarIconButtonClassName =\n uiClassNames.toolbarCompactIconButton ?? \"\";\n const primaryActions = toolbarActions.filter(\n (action) => (action.placement ?? \"primary\") === \"primary\",\n );\n const trailingActions = toolbarActions.filter(\n (action) => action.placement === \"trailing\",\n );\n const showTitle = toolbarVisibility?.title ?? true;\n const showSearch = toolbarVisibility?.search ?? true;\n const showActions = toolbarVisibility?.actions ?? true;\n const showTrailingActions = toolbarVisibility?.trailingActions ?? true;\n const showOptions = toolbarVisibility?.options ?? true;\n const showViewToggle = toolbarVisibility?.viewToggle ?? true;\n const showCustomToolbar = toolbarVisibility?.customToolbar ?? true;\n const hasVisibleTitle = showTitle && Boolean(title || description);\n const hasVisibleSearch = showSearch;\n const hasVisiblePrimaryActions = showActions && primaryActions.length > 0;\n const hasVisibleSelectionActions =\n selectedRows.length > 0 && selectionActions.length > 0;\n const hasVisibleOptions =\n showOptions &&\n (columnVisibilityOptions.some((column) => column.canHide) ||\n Boolean(onShowHiddenRowsChange && hiddenRowsLabel) ||\n enableColumnPinning ||\n enableDensityToggle);\n const hasVisibleViewToggle =\n showViewToggle && enableViewToggle && Boolean(onViewModeChange);\n const hasVisibleTrailingActions =\n showTrailingActions && trailingActions.length > 0;\n const hasVisibleCustomToolbar = showCustomToolbar && Boolean(customToolbar);\n const hasVisibleCompactToolbar =\n showCustomToolbar && Boolean(compactToolbar ?? customToolbar);\n const selectedRowCountLabel = labels.selectedRows(selectedRows.length);\n\n React.useEffect(() => {\n if (!isCompactSearchVisible) {\n return;\n }\n\n compactSearchInputRef.current?.focus();\n }, [isCompactSearchVisible]);\n\n if (\n !hasVisibleTitle &&\n !hasVisibleSearch &&\n !hasVisiblePrimaryActions &&\n !hasVisibleSelectionActions &&\n !hasVisibleOptions &&\n !hasVisibleViewToggle &&\n !hasVisibleTrailingActions &&\n !hasVisibleCustomToolbar &&\n !hasVisibleCompactToolbar\n ) {\n return null;\n }\n\n return (\n
    \n {showTitle && (title || description) ? (\n
    \n {title ? (\n \n {title}\n \n ) : null}\n {description ? (\n \n {description}\n

    \n ) : null}\n
    \n ) : null}\n\n
    \n \n {showSearch ? (\n <>\n
    \n \n ) => {\n onToolbarQueryValueChange(event.target.value);\n }}\n placeholder={toolbarQueryPlaceholder}\n />\n \n \n \n {toolbarQueryValue ? (\n \n {\n onToolbarQueryValueChange(\"\");\n }}\n aria-label={labels.clearSearch}\n title={labels.clearSearch}\n >\n \n \n \n ) : null}\n \n
    \n \n \n {\n setIsCompactSearchVisible((current) => !current);\n }}\n >\n \n {labels.searchTable}\n \n \n {labels.searchTable}\n \n \n ) : null}\n\n {showActions ? (\n
    \n {primaryActions.map((action) => {\n const collapsesToIcon =\n !action.iconOnly && Boolean(action.icon);\n const button = (\n {\n void action.onClick({\n rows: allRows,\n openFileDialog,\n });\n }}\n disabled={action.disabled}\n aria-label={action.label}\n title={action.iconOnly ? undefined : action.label}\n >\n {action.icon ? : null}\n {action.iconOnly ? (\n {action.label}\n ) : collapsesToIcon ? (\n \n {action.label}\n \n ) : (\n {action.label}\n )}\n \n );\n\n return action.iconOnly ? (\n \n {button}\n {action.label}\n \n ) : (\n button\n );\n })}\n
    \n ) : null}\n\n {hasVisibleCompactToolbar ? (\n \n {compactToolbar ?? customToolbar}\n
    \n ) : null}\n\n
    \n\n \n {selectedRows.length ? (\n \n {selectedRowCountLabel}\n
    \n ) : null}\n {selectedRows.length\n ? selectionActions.map((action) => {\n const Icon = action.icon;\n const disabled =\n typeof action.disabled === \"function\"\n ? action.disabled(selectedRows)\n : action.disabled;\n\n return (\n \n \n {\n void action.onClick({ rows: selectedRows });\n }}\n aria-label={action.label}\n >\n {Icon ? : null}\n {action.label}\n \n \n {action.label}\n \n );\n })\n : null}\n\n {hasVisibleOptions ? (\n \n \n \n \n {labels.tableOptions}\n \n \n \n {labels.tableOptions}\n \n {onShowHiddenRowsChange && hiddenRowsLabel ? (\n {\n onShowHiddenRowsChange(checked === true);\n }}\n >\n {labels.showHiddenRows(hiddenRowsLabel)}\n \n ) : null}\n \n {enableDensityToggle ? (\n <>\n \n {labels.density}\n \n {(\n [\n [\"compact\", labels.compactDensity],\n [\"comfortable\", labels.comfortableDensity],\n [\"spacious\", labels.spaciousDensity],\n ] as const\n ).map(([nextDensity, label]) => (\n {\n onDensityChange(nextDensity);\n }}\n >\n {label}\n \n ))}\n \n \n ) : null}\n {columnVisibilityOptions.some((column) => column.canHide) ? (\n <>\n \n {labels.columns}\n \n {columnVisibilityOptions\n .filter((column) => column.canHide)\n .map((column) => (\n {\n onColumnVisibilityChange?.(\n column.id,\n checked === true,\n );\n }}\n >\n {column.label}\n \n ))}\n \n \n ) : null}\n {enableColumnPinning ? (\n <>\n \n \n {labels.pinLeft} / {labels.pinRight}\n \n \n {columnVisibilityOptions.map((column) => (\n {\n event.preventDefault();\n }}\n >\n \n {column.label}\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, \"left\");\n }}\n >\n L\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, \"right\");\n }}\n >\n R\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, false);\n }}\n >\n -\n \n \n ))}\n \n \n ) : null}\n \n \n ) : null}\n\n {showViewToggle && enableViewToggle && onViewModeChange ? (\n \n \n \n {\n onViewModeChange(\"table\");\n }}\n >\n \n \n {labels.switchToTableView ??\n DATA_TABLE_DEFAULT_LABELS.switchToTableView}\n \n \n \n \n {labels.tableView ??\n DATA_TABLE_DEFAULT_LABELS.tableView}\n \n \n \n \n {\n onViewModeChange(\"card\");\n }}\n >\n \n \n {labels.switchToCardView ??\n DATA_TABLE_DEFAULT_LABELS.switchToCardView}\n \n \n \n \n {labels.cardView ??\n DATA_TABLE_DEFAULT_LABELS.cardView}\n \n \n \n ) : null}\n\n {showTrailingActions\n ? trailingActions.map((action) => {\n const collapsesToIcon =\n !action.iconOnly && Boolean(action.icon);\n const button = (\n {\n void action.onClick({\n rows: allRows,\n openFileDialog,\n });\n }}\n disabled={action.disabled}\n aria-label={action.label}\n title={action.iconOnly ? undefined : action.label}\n className={`size-7 shrink-0 ${action.iconOnly ? \"\" : `${collapsesToIcon ? \"px-0 @min-[768px]/data-table:px-2.5\" : \"\"} @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit`} ${action.iconOnly || collapsesToIcon ? compactToolbarIconButtonClassName : \"\"} ${uiClassNames.toolbarInputButton ?? \"\"}`}\n >\n {action.icon ? (\n \n ) : null}\n {action.iconOnly ? (\n {action.label}\n ) : collapsesToIcon ? (\n \n {action.label}\n \n ) : (\n {action.label}\n )}\n \n );\n\n return action.iconOnly ? (\n \n {button}\n {action.label}\n \n ) : (\n button\n );\n })\n : null}\n
    \n \n\n {showSearch && isCompactSearchVisible ? (\n \n \n ) => {\n onToolbarQueryValueChange(event.target.value);\n }}\n placeholder={toolbarQueryPlaceholder}\n />\n \n \n \n {toolbarQueryValue ? (\n \n {\n onToolbarQueryValueChange(\"\");\n }}\n aria-label={labels.clearSearch}\n title={labels.clearSearch}\n >\n \n \n \n ) : null}\n \n \n ) : null}\n\n {columnFilters.length ? (\n \n {columnFilters.map((filter) => (\n \n ))}\n {columnFilters.some((filter) =>\n hasColumnFilterValue(filter.value),\n ) ? (\n \n {labels.clearFilters}\n \n ) : null}\n \n ) : null}\n\n \n\n {showCustomToolbar && customToolbar ? (\n \n {customToolbar}\n \n ) : null}\n \n );\n };\n\n function ToolbarColumnFilterControl({\n filter,\n labels,\n onColumnFilterChange,\n }: {\n filter: DataTableToolbarColumnFilter;\n labels: DataTableLabels;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n }) {\n if (filter.type === \"text\") {\n return (\n \n ) => {\n onColumnFilterChange(filter.id, event.target.value);\n }}\n placeholder={filter.placeholder ?? filter.label}\n aria-label={`${labels.filters}: ${filter.label}`}\n />\n \n \n \n \n );\n }\n\n const selectedValues = Array.isArray(filter.value)\n ? filter.value.map(String)\n : typeof filter.value === \"string\" && filter.value\n ? [filter.value]\n : [];\n const selectedLabel =\n selectedValues.length === 0\n ? filter.label\n : `${filter.label}: ${\n selectedValues.length === 1\n ? (filter.options.find(\n (option) => option.value === selectedValues[0],\n )?.label ?? selectedValues[0])\n : selectedValues.length\n }`;\n\n return (\n \n \n \n \n \n {filter.label}\n \n {filter.type === \"select\" ? (\n {\n onColumnFilterChange(filter.id, \"\");\n }}\n >\n {labels.allFilterOptions ??\n DATA_TABLE_DEFAULT_LABELS.allFilterOptions}\n \n ) : null}\n {filter.options.map((option) => (\n {\n if (filter.type === \"select\") {\n onColumnFilterChange(\n filter.id,\n checked === true ? option.value : \"\",\n );\n return;\n }\n\n const nextValues = new Set(selectedValues);\n if (checked === true) {\n nextValues.add(option.value);\n } else {\n nextValues.delete(option.value);\n }\n onColumnFilterChange(filter.id, Array.from(nextValues));\n }}\n >\n {option.label}\n \n ))}\n \n \n \n );\n }\n}\n\nfunction hasColumnFilterValue(value: unknown) {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n\n return value !== undefined && value !== null && value !== \"\";\n}\n","import * as React from \"react\";\nimport { DataTableTablePanel } from \"./data-table-table-panel\";\nimport type { DataTableTablePanelProps } from \"./data-table-table-panel\";\n\nconst LazyDataTableVirtualTablePanel = React.lazy(async () => {\n const module = await import(\"./data-table-virtual-table-panel\");\n return { default: module.DataTableVirtualTablePanel };\n}) as unknown as typeof DataTableTablePanel;\n\nexport function DataTableTablePanelRouter(\n props: DataTableTablePanelProps,\n) {\n const config =\n typeof props.virtualization === \"object\"\n ? props.virtualization\n : undefined;\n const enabled =\n props.virtualization === true || config?.enabled === true;\n\n if (!enabled) {\n return ;\n }\n\n return (\n \n }\n >\n \n \n );\n}\n","import type {\n DataTableSavedView,\n DataTableSavedViewSlice,\n DataTableSavedViewsChangeOperation,\n DataTableSavedViewsConfig,\n DataTableSavedViewsPayload,\n DataTableState,\n} from \"../types\";\n\nconst STORAGE_PREFIX = \"data-table-pro:saved-views:\";\nconst DEFAULT_VERSION = 1;\nconst DEFAULT_SLICES: Array = [\n \"sorting\",\n \"columnVisibility\",\n \"columnFilters\",\n \"columnOrder\",\n \"columnPinning\",\n \"columnSizing\",\n \"density\",\n \"viewMode\",\n \"showHiddenRows\",\n \"globalFilter\",\n];\nlet fallbackId = 0;\n\nexport function readDataTableSavedViews(\n config: DataTableSavedViewsConfig | undefined,\n): Array {\n const storage = resolveStorage(config);\n if (!config || !storage) {\n return [];\n }\n\n let serialized: string | null;\n try {\n serialized = storage.getItem(getStorageKey(config.key));\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return [];\n }\n if (!serialized) {\n return [];\n }\n\n let parsed: unknown;\n try {\n parsed = (config.deserialize ?? JSON.parse)(serialized);\n } catch (error) {\n config.onError?.({ error, operation: \"deserialize\" });\n return [];\n }\n\n if (!isRecord(parsed) || !(\"version\" in parsed) || !(\"views\" in parsed)) {\n return [];\n }\n\n const targetVersion = config.version ?? DEFAULT_VERSION;\n let candidate: unknown = parsed.views;\n if (parsed.version !== targetVersion) {\n if (!config.migrate) {\n return [];\n }\n try {\n candidate = config.migrate(\n { version: parsed.version, views: parsed.views },\n targetVersion,\n );\n } catch (error) {\n config.onError?.({ error, operation: \"migrate\" });\n return [];\n }\n }\n\n if (!Array.isArray(candidate)) {\n return [];\n }\n\n return candidate\n .map((view) => validateSavedView(view, config.slices))\n .filter((view): view is DataTableSavedView => Boolean(view));\n}\n\nexport function createDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n name: string,\n state: DataTableState,\n) {\n const normalizedName = name.trim();\n if (!config || !normalizedName) {\n return undefined;\n }\n\n const now = new Date().toISOString();\n const view: DataTableSavedView = {\n id: createSavedViewId(),\n name: normalizedName,\n createdAt: now,\n updatedAt: now,\n state: selectSavedViewSlices(state, config.slices),\n };\n const views = [...readDataTableSavedViews(config), view];\n return writeViews(config, views, \"create\") ? cloneSavedView(view) : undefined;\n}\n\nexport function renameDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n id: string,\n name: string,\n) {\n const normalizedName = name.trim();\n if (!config || !normalizedName) {\n return undefined;\n }\n\n let renamed: DataTableSavedView | undefined;\n const views = readDataTableSavedViews(config).map((view) => {\n if (view.id !== id) {\n return view;\n }\n renamed = {\n ...view,\n name: normalizedName,\n updatedAt: new Date().toISOString(),\n };\n return renamed;\n });\n if (!renamed) {\n return undefined;\n }\n\n return writeViews(config, views, \"rename\")\n ? cloneSavedView(renamed)\n : undefined;\n}\n\nexport function deleteDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n id: string,\n) {\n if (!config) {\n return false;\n }\n\n const current = readDataTableSavedViews(config);\n const views = current.filter((view) => view.id !== id);\n return views.length !== current.length && writeViews(config, views, \"delete\");\n}\n\nexport function clearDataTableSavedViews(\n config: DataTableSavedViewsConfig | undefined,\n) {\n const storage = resolveStorage(config);\n if (!config || !storage) {\n return false;\n }\n\n try {\n storage.removeItem(getStorageKey(config.key));\n } catch (error) {\n config.onError?.({ error, operation: \"remove\" });\n return false;\n }\n config.onChange?.([], \"clear\");\n return true;\n}\n\nfunction writeViews(\n config: DataTableSavedViewsConfig,\n views: Array,\n operation: DataTableSavedViewsChangeOperation,\n) {\n const storage = resolveStorage(config);\n if (!storage) {\n return false;\n }\n\n let serialized: string;\n try {\n const payload: DataTableSavedViewsPayload = {\n version: config.version ?? DEFAULT_VERSION,\n views,\n };\n serialized = (config.serialize ?? JSON.stringify)(payload);\n } catch (error) {\n config.onError?.({ error, operation: \"serialize\" });\n return false;\n }\n\n try {\n storage.setItem(getStorageKey(config.key), serialized);\n } catch (error) {\n config.onError?.({ error, operation: \"write\" });\n return false;\n }\n const snapshots = views.map(cloneSavedView);\n config.onChange?.(snapshots, operation);\n return true;\n}\n\nfunction selectSavedViewSlices(\n state: DataTableState,\n slices: Array | undefined,\n) {\n const selected = new Set(slices ?? DEFAULT_SLICES);\n const snapshot: Partial = {};\n for (const slice of Object.keys(state) as Array) {\n if (selected.has(slice)) {\n Object.assign(snapshot, {\n [slice]: cloneStateSlice(slice, state[slice]),\n });\n }\n }\n return snapshot;\n}\n\nfunction validateSavedView(\n value: unknown,\n slices: Array | undefined,\n): DataTableSavedView | undefined {\n if (\n !isRecord(value) ||\n typeof value.id !== \"string\" ||\n !value.id ||\n typeof value.name !== \"string\" ||\n !value.name.trim() ||\n typeof value.createdAt !== \"string\" ||\n typeof value.updatedAt !== \"string\"\n ) {\n return undefined;\n }\n\n return {\n id: value.id,\n name: value.name.trim(),\n createdAt: value.createdAt,\n updatedAt: value.updatedAt,\n state: validateState(value.state, slices),\n };\n}\n\nfunction validateState(\n value: unknown,\n slices: Array | undefined,\n) {\n if (!isRecord(value)) {\n return {};\n }\n\n const selected = new Set(slices ?? DEFAULT_SLICES);\n const state: Partial = {};\n const sorting = validateSorting(value.sorting);\n if (selected.has(\"sorting\") && sorting) state.sorting = sorting;\n const pagination = validatePagination(value.pagination);\n if (selected.has(\"pagination\") && pagination) state.pagination = pagination;\n const rowSelection = validateBooleanRecord(value.rowSelection);\n if (selected.has(\"rowSelection\") && rowSelection) {\n state.rowSelection = rowSelection;\n }\n const visibility = validateBooleanRecord(value.columnVisibility);\n if (selected.has(\"columnVisibility\") && visibility) {\n state.columnVisibility = visibility;\n }\n const filters = validateFilters(value.columnFilters);\n if (selected.has(\"columnFilters\") && filters) state.columnFilters = filters;\n const expanded =\n value.expanded === true\n ? true\n : validateBooleanRecord(value.expanded);\n if (selected.has(\"expanded\") && expanded !== undefined) {\n state.expanded = expanded;\n }\n const order = validateStringArray(value.columnOrder);\n if (selected.has(\"columnOrder\") && order) state.columnOrder = order;\n const pinning = validatePinning(value.columnPinning);\n if (selected.has(\"columnPinning\") && pinning) {\n state.columnPinning = pinning;\n }\n const sizing = validateSizingRecord(value.columnSizing);\n if (selected.has(\"columnSizing\") && sizing) state.columnSizing = sizing;\n if (\n selected.has(\"density\") &&\n (value.density === \"compact\" ||\n value.density === \"comfortable\" ||\n value.density === \"spacious\")\n ) {\n state.density = value.density;\n }\n if (\n selected.has(\"viewMode\") &&\n (value.viewMode === \"table\" || value.viewMode === \"card\")\n ) {\n state.viewMode = value.viewMode;\n }\n if (selected.has(\"showHiddenRows\") && typeof value.showHiddenRows === \"boolean\") {\n state.showHiddenRows = value.showHiddenRows;\n }\n if (selected.has(\"globalFilter\") && typeof value.globalFilter === \"string\") {\n state.globalFilter = value.globalFilter;\n }\n return state;\n}\n\nfunction cloneSavedView(view: DataTableSavedView): DataTableSavedView {\n return {\n ...view,\n state: validateState(view.state, Object.keys(view.state) as Array),\n };\n}\n\nfunction cloneStateSlice(\n slice: DataTableSavedViewSlice,\n value: unknown,\n) {\n if (Array.isArray(value)) {\n return (value as Array).map((item) =>\n isRecord(item) ? { ...item } : item,\n );\n }\n if (isRecord(value)) {\n if (slice === \"columnPinning\") {\n return {\n left: Array.isArray(value.left)\n ? [...(value.left as Array)]\n : undefined,\n right: Array.isArray(value.right)\n ? [...(value.right as Array)]\n : undefined,\n };\n }\n return { ...value };\n }\n return value;\n}\n\nfunction validateSorting(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value\n .filter(\n (item): item is { id: string; desc?: boolean } =>\n isRecord(item) && typeof item.id === \"string\",\n )\n .map((item) => ({ id: item.id, desc: Boolean(item.desc) }));\n}\n\nfunction validatePagination(value: unknown) {\n if (\n !isRecord(value) ||\n !Number.isInteger(value.pageIndex) ||\n (value.pageIndex as number) < 0 ||\n !Number.isInteger(value.pageSize) ||\n (value.pageSize as number) < 1\n ) {\n return undefined;\n }\n return {\n pageIndex: value.pageIndex as number,\n pageSize: value.pageSize as number,\n };\n}\n\nfunction validateFilters(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value\n .filter(\n (item): item is { id: string; value: unknown } =>\n isRecord(item) &&\n typeof item.id === \"string\" &&\n Object.prototype.hasOwnProperty.call(item, \"value\"),\n )\n .map((item) => ({ id: item.id, value: item.value }));\n}\n\nfunction validatePinning(value: unknown) {\n if (!isRecord(value)) return undefined;\n return {\n left: validateStringArray(value.left) ?? [],\n right: validateStringArray(value.right) ?? [],\n };\n}\n\nfunction validateBooleanRecord(value: unknown) {\n if (!isRecord(value)) return undefined;\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, boolean] => typeof entry[1] === \"boolean\",\n ),\n );\n}\n\nfunction validateSizingRecord(value: unknown) {\n if (!isRecord(value)) return undefined;\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, number] =>\n typeof entry[1] === \"number\" &&\n Number.isFinite(entry[1]) &&\n entry[1] >= 0,\n ),\n );\n}\n\nfunction validateStringArray(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value.filter((item): item is string => typeof item === \"string\");\n}\n\nfunction resolveStorage(config: DataTableSavedViewsConfig | undefined) {\n if (!config) {\n return undefined;\n }\n if (config.storage) {\n return config.storage;\n }\n if (typeof window === \"undefined\") {\n return undefined;\n }\n try {\n return window.localStorage;\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return undefined;\n }\n}\n\nfunction createSavedViewId() {\n if (typeof globalThis.crypto?.randomUUID === \"function\") {\n return globalThis.crypto.randomUUID();\n }\n fallbackId += 1;\n return `view-${Date.now().toString(36)}-${fallbackId.toString(36)}`;\n}\n\nfunction getStorageKey(key: string) {\n return `${STORAGE_PREFIX}${key}`;\n}\n\nfunction isRecord(value: unknown): value is Record {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n","import * as React from \"react\";\nimport { IconDownload } from \"../icons\";\nimport type {\n ColumnFiltersState,\n ColumnPinningState,\n OnChangeFn,\n Table as TanStackTable,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableColumnFixed,\n DataTableLabels,\n DataTableProps,\n} from \"../types\";\nimport {\n exportDataTableCsv,\n getAccessorKey,\n getColumnId,\n getDataTableLeafColumns,\n hasFilterValue,\n normalizeColumnFilterOptions,\n startCase,\n} from \"./data-table-utils\";\n\nexport function useDataTableToolbarFeatures({\n columns,\n currentColumnFilters,\n currentColumnPinning,\n effectiveColumnVisibility,\n enableColumnFilters,\n handleColumnFiltersChange,\n handleColumnPinningChange,\n labels,\n table,\n toolbarActions,\n visibleData,\n csvExport,\n}: {\n columns: DataTableProps[\"columns\"];\n currentColumnFilters: ColumnFiltersState;\n currentColumnPinning: ColumnPinningState;\n effectiveColumnVisibility: VisibilityState;\n enableColumnFilters: boolean | undefined;\n handleColumnFiltersChange: OnChangeFn;\n handleColumnPinningChange: OnChangeFn;\n labels: DataTableLabels;\n table: TanStackTable;\n toolbarActions: DataTableProps[\"toolbarActions\"];\n visibleData: Array;\n csvExport: DataTableProps[\"csvExport\"];\n}) {\n const columnVisibilityOptions = React.useMemo(() => {\n return getDataTableLeafColumns(columns).map(({ column, index }) => {\n const id = getColumnId(column, index);\n const header = column.header;\n const accessorKey = getAccessorKey(column);\n const label =\n typeof header === \"string\"\n ? header\n : accessorKey\n ? startCase(accessorKey)\n : startCase(id);\n\n const pinned: false | DataTableColumnFixed =\n currentColumnPinning.left?.includes(id) === true\n ? \"left\"\n : currentColumnPinning.right?.includes(id) === true\n ? \"right\"\n : false;\n\n return {\n id,\n label,\n visible: effectiveColumnVisibility[id] !== false,\n canHide: column.enableHiding !== false,\n pinned,\n };\n });\n }, [columns, currentColumnPinning, effectiveColumnVisibility]);\n\n const toolbarColumnFilters = React.useMemo(() => {\n if (enableColumnFilters === false) {\n return [];\n }\n\n return getDataTableLeafColumns(columns).flatMap(({ column, index }) => {\n const filter = column.meta?.filter;\n if (!filter) {\n return [];\n }\n\n const id = getColumnId(column, index);\n const header = column.header;\n const accessorKey = getAccessorKey(column);\n const label =\n filter.label ??\n (typeof header === \"string\"\n ? header\n : accessorKey\n ? startCase(accessorKey)\n : startCase(id));\n const state = currentColumnFilters.find((item) => item.id === id);\n const rawOptions =\n typeof filter.options === \"function\"\n ? filter.options({ rows: visibleData })\n : (filter.options ?? []);\n\n return [\n {\n id,\n label,\n type: filter.type,\n value: state?.value,\n placeholder: filter.placeholder,\n options: normalizeColumnFilterOptions(rawOptions),\n },\n ];\n });\n }, [columns, currentColumnFilters, enableColumnFilters, visibleData]);\n\n const handleToolbarColumnFilterChange = React.useCallback(\n (columnId: string, value: unknown) => {\n handleColumnFiltersChange((current) => {\n const next = current.filter((filter) => filter.id !== columnId);\n if (hasFilterValue(value)) {\n next.push({ id: columnId, value });\n }\n return next;\n });\n },\n [handleColumnFiltersChange],\n );\n\n const handleClearColumnFilters = React.useCallback(() => {\n handleColumnFiltersChange([]);\n }, [handleColumnFiltersChange]);\n\n const handleToolbarColumnPinningChange = React.useCallback(\n (columnId: string, side: DataTableColumnFixed | false) => {\n handleColumnPinningChange((current) => {\n const left = (current.left ?? []).filter((id) => id !== columnId);\n const right = (current.right ?? []).filter((id) => id !== columnId);\n\n if (side === \"left\") {\n left.push(columnId);\n }\n if (side === \"right\") {\n right.push(columnId);\n }\n\n return { left, right };\n });\n },\n [handleColumnPinningChange],\n );\n\n const handleCsvExport = React.useCallback(() => {\n if (!csvExport) {\n return;\n }\n\n return exportDataTableCsv({\n csvExport,\n table,\n labels,\n });\n }, [csvExport, labels, table]);\n\n const effectiveToolbarActions = React.useMemo(() => {\n if (!csvExport) {\n return toolbarActions ?? [];\n }\n\n return [\n ...(toolbarActions ?? []),\n {\n key: \"__csv_export__\",\n label: labels.exportCsv,\n icon: IconDownload,\n placement: \"trailing\" as const,\n onClick: handleCsvExport,\n },\n ];\n }, [csvExport, handleCsvExport, labels.exportCsv, toolbarActions]);\n\n return {\n columnVisibilityOptions,\n effectiveToolbarActions,\n handleClearColumnFilters,\n handleToolbarColumnFilterChange,\n handleToolbarColumnPinningChange,\n toolbarColumnFilters,\n };\n}\n","import * as React from \"react\";\nimport { flushSync } from \"react-dom\";\nimport type {\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableActionErrorContext,\n DataTableApi,\n DataTableProps,\n DataTableState,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { createDataTableCardView } from \"./create-data-table-card-view\";\nimport { createDataTableEmptyState } from \"./create-data-table-empty-state\";\nimport { createDataTablePagination } from \"./create-data-table-pagination\";\nimport { createDataTableRowActions } from \"./create-data-table-row-actions\";\nimport { createDataTableToolbar } from \"./create-data-table-toolbar\";\nimport { DataTableCardPanel as DefaultDataTableCardPanel } from \"./data-table-card-panel\";\nimport { DataTableFooterSection } from \"./data-table-footer-section\";\nimport { DataTableTablePanelRouter as DefaultDataTableTablePanel } from \"./data-table-table-panel-router\";\nimport { DataTableToolbarSection } from \"./data-table-toolbar-section\";\nimport {\n clearDataTableSavedViews,\n createDataTableSavedView,\n deleteDataTableSavedView,\n readDataTableSavedViews,\n renameDataTableSavedView,\n} from \"./data-table-saved-views\";\nimport { resolveDataTableLabels } from \"./data-table-labels\";\nimport { useDataTableColumns } from \"./use-data-table-columns\";\nimport { useDataTableInstance } from \"./use-data-table-instance\";\nimport { useDataTableScrollViewport } from \"./use-data-table-scroll-viewport\";\nimport {\n exportDataTableCsv,\n getColumnId,\n getDataTableLeafColumns,\n getInitialColumnPinning,\n validateDataTableColumnIds,\n} from \"./data-table-utils\";\nimport { useDataTableState } from \"./use-data-table-state\";\nimport { clearDataTableColumnPrefs } from \"./use-data-table-column-prefs\";\nimport { useDataTableToolbarFeatures } from \"./use-data-table-toolbar-features\";\nimport { useColumnLayout } from \"./use-column-layout\";\nimport { useRowEditing } from \"./use-row-editing\";\n\ntype CreateDataTableOptions = {\n CardPanel?: typeof DefaultDataTableCardPanel;\n TablePanel?: typeof DefaultDataTableTablePanel;\n};\n\nexport function createDataTable(ui: DataTableUiKit) {\n return createDataTableWithPanels(ui);\n}\n\nexport function createDataTableWithPanels(\n ui: DataTableUiKit,\n options: CreateDataTableOptions = {},\n) {\n const DataTableCardPanel =\n options.CardPanel ?? DefaultDataTableCardPanel;\n const DataTableTablePanel =\n options.TablePanel ?? DefaultDataTableTablePanel;\n const uiClassNames = ui.classNames ?? {};\n const {\n rootClassName,\n Button,\n Checkbox,\n Input,\n ScrollArea,\n ScrollBar,\n Skeleton,\n Table,\n TableBody,\n TableCell,\n TableFooter = \"tfoot\",\n TableHead,\n TableHeader,\n TableRow,\n Tooltip,\n TooltipContent,\n TooltipProvider = React.Fragment,\n TooltipTrigger,\n } = ui;\n const DataTableEmptyState = createDataTableEmptyState(ui);\n const DataTableRowActions = createDataTableRowActions(ui);\n const { DataTableFooter } = createDataTablePagination(ui);\n const DataTableToolbar = createDataTableToolbar(ui);\n const DataTableCardView = createDataTableCardView(ui, DataTableRowActions);\n const defaultColumn = {\n minSize: 80,\n size: 180,\n maxSize: 720,\n };\n\n return function DataTable({\n columns,\n data,\n getRowId,\n children,\n title,\n description,\n toolbarQueryValue,\n onToolbarQueryValueChange,\n toolbarQueryPlaceholder,\n toolbarQueryDebounceMs,\n manualFiltering = false,\n enableToolbarQueryFiltering = true,\n globalFilterFn,\n columnFilters,\n onColumnFiltersChange,\n enableColumnFilters,\n customToolbar,\n compactToolbar,\n rowsPerPageOptions = [10, 20, 50, 100],\n totalRowCount,\n hasNextPage,\n sorting,\n onSortingChange,\n manualSorting = false,\n pageIndex,\n pageSize,\n onPageIndexChange,\n onPageSizeChange,\n pageCount,\n manualPagination = false,\n rowSelection,\n onRowSelectionChange,\n enableRowSelection = false,\n expanded,\n onExpandedChange,\n getRowCanExpand,\n renderExpandedRow,\n columnOrder,\n onColumnOrderChange,\n enableColumnReordering = false,\n columnPinning,\n onColumnPinningChange,\n enableColumnPinning = false,\n toolbarActions = [],\n selectionActions = [],\n rowActions = [],\n csvExport,\n density,\n onDensityChange,\n enableDensityToggle = false,\n columnPrefsKey,\n persistence,\n savedViews,\n initialState,\n state: unifiedState,\n onStateChange,\n apiRef,\n labels,\n summaryRows = [],\n cardRenderer,\n cardSizing,\n cardGridClassName,\n cardClassName,\n viewMode,\n onViewModeChange,\n enableViewToggle = false,\n emptyState,\n isLoading = false,\n loadingRowCount,\n getRowLoadingState,\n hiddenRows,\n showHiddenRows,\n onShowHiddenRowsChange,\n infiniteScroll,\n editableRows,\n columnVisibility,\n onColumnVisibilityChange,\n columnSizing,\n onColumnSizingChange,\n enableColumnResizing = false,\n columnResizeMode = \"onEnd\",\n layoutMode = \"fill\",\n stickyHeader = true,\n showFooter = true,\n showToolbar = true,\n dir = \"ltr\",\n flexGrow = true,\n toolbarVisibility,\n className,\n tableClassName,\n tableContainerClassName,\n stripedRows = false,\n getRowClassName,\n onRowClick,\n onActionError,\n dragAndDrop,\n fileUpload,\n virtualization,\n }: DataTableProps) {\n const containerRef = React.useRef(null);\n const fileInputRef = React.useRef(null);\n const tableScrollContainerRef = React.useRef(null);\n const draggedColumnIdRef = React.useRef(null);\n const tableRef = React.useRef | null>(null);\n const lastSelectedRowIdRef = React.useRef(null);\n const generatedTitleId = React.useId();\n const generatedDescriptionId = React.useId();\n React.useMemo(() => validateDataTableColumnIds(columns), [columns]);\n const resolvedLabels = React.useMemo(\n () => resolveDataTableLabels(labels),\n [labels],\n );\n const resolvedToolbarQueryValue =\n toolbarQueryValue ?? unifiedState?.globalFilter;\n const resolvedSorting = sorting ?? unifiedState?.sorting;\n const resolvedPageIndex =\n pageIndex ?? unifiedState?.pagination?.pageIndex;\n const resolvedPageSize = pageSize ?? unifiedState?.pagination?.pageSize;\n const resolvedRowSelection =\n rowSelection ?? unifiedState?.rowSelection;\n const resolvedColumnVisibility =\n columnVisibility ?? unifiedState?.columnVisibility;\n const resolvedColumnFilters =\n columnFilters ?? unifiedState?.columnFilters;\n const resolvedExpanded = expanded ?? unifiedState?.expanded;\n const resolvedColumnOrder =\n columnOrder ?? unifiedState?.columnOrder;\n const resolvedColumnPinning =\n columnPinning ?? unifiedState?.columnPinning;\n const resolvedColumnSizing =\n columnSizing ?? unifiedState?.columnSizing;\n const resolvedDensity = density ?? unifiedState?.density;\n const resolvedViewMode = viewMode ?? unifiedState?.viewMode;\n const resolvedShowHiddenRows =\n showHiddenRows ?? unifiedState?.showHiddenRows;\n const showTableHeading =\n showToolbar && (toolbarVisibility?.title ?? true);\n const titleId = showTableHeading && title ? generatedTitleId : undefined;\n const descriptionId =\n showTableHeading && description ? generatedDescriptionId : undefined;\n useDataTableStateConflictWarnings(unifiedState, {\n columnFilters: columnFilters !== undefined,\n columnOrder: columnOrder !== undefined,\n columnPinning: columnPinning !== undefined,\n columnSizing: columnSizing !== undefined,\n columnVisibility: columnVisibility !== undefined,\n density: density !== undefined,\n expanded: expanded !== undefined,\n globalFilter: toolbarQueryValue !== undefined,\n pagination: pageIndex !== undefined || pageSize !== undefined,\n rowSelection: rowSelection !== undefined,\n showHiddenRows: showHiddenRows !== undefined,\n sorting: sorting !== undefined,\n viewMode: viewMode !== undefined,\n });\n const handleToolbarQueryValueChange = useDataTableStateSliceChange(\n \"globalFilter\",\n onToolbarQueryValueChange,\n onStateChange,\n );\n const handleSortingPropChange = useDataTableStateSliceChange(\n \"sorting\",\n onSortingChange,\n onStateChange,\n );\n const handleRowSelectionPropChange = useDataTableStateSliceChange(\n \"rowSelection\",\n onRowSelectionChange,\n onStateChange,\n );\n const handleColumnVisibilityPropChange = useDataTableStateSliceChange(\n \"columnVisibility\",\n onColumnVisibilityChange,\n onStateChange,\n );\n const handleColumnFiltersPropChange = useDataTableStateSliceChange(\n \"columnFilters\",\n onColumnFiltersChange,\n onStateChange,\n );\n const handleExpandedPropChange = useDataTableStateSliceChange(\n \"expanded\",\n onExpandedChange,\n onStateChange,\n );\n const handleColumnOrderPropChange = useDataTableStateSliceChange(\n \"columnOrder\",\n onColumnOrderChange,\n onStateChange,\n );\n const handleColumnPinningPropChange = useDataTableStateSliceChange(\n \"columnPinning\",\n onColumnPinningChange,\n onStateChange,\n );\n const handleColumnSizingPropChange = useDataTableStateSliceChange(\n \"columnSizing\",\n onColumnSizingChange,\n onStateChange,\n );\n const handleDensityPropChange = useDataTableStateSliceChange(\n \"density\",\n onDensityChange,\n onStateChange,\n );\n const handleViewModePropChange = useDataTableStateSliceChange(\n \"viewMode\",\n onViewModeChange,\n onStateChange,\n );\n const handleShowHiddenRowsPropChange = useDataTableStateSliceChange(\n \"showHiddenRows\",\n onShowHiddenRowsChange,\n onStateChange,\n );\n const handlePageIndexPropChange = React.useCallback(\n (nextPageIndex: number) => {\n onPageIndexChange?.(nextPageIndex);\n onStateChange?.((current) => ({\n ...current,\n pagination: {\n pageIndex: nextPageIndex,\n pageSize:\n resolvedPageSize ?? current.pagination.pageSize,\n },\n }));\n },\n [onPageIndexChange, onStateChange, resolvedPageSize],\n );\n const handlePageSizePropChange = React.useCallback(\n (nextPageSize: number) => {\n onPageSizeChange?.(nextPageSize);\n onStateChange?.((current) => ({\n ...current,\n pagination: {\n pageIndex:\n resolvedPageIndex ?? current.pagination.pageIndex,\n pageSize: nextPageSize,\n },\n }));\n },\n [onPageSizeChange, onStateChange, resolvedPageIndex],\n );\n const runAction = React.useCallback(\n (\n context: Omit, \"error\">,\n action: () => void | Promise,\n ) => {\n runDataTableAction(action, context, onActionError);\n },\n [onActionError],\n );\n const guardedRowActions = React.useMemo(\n () =>\n rowActions.map((action) => ({\n ...action,\n onClick: (row: TData) => {\n runAction(\n {\n actionKey: action.key,\n row,\n source: \"rowAction\",\n },\n () => action.onClick(row),\n );\n },\n })),\n [rowActions, runAction],\n );\n const guardedOnRowClick = React.useMemo<\n DataTableProps[\"onRowClick\"]\n >(\n () =>\n onRowClick\n ? (context) => {\n runAction(\n {\n row: context.row,\n source: \"rowClick\",\n },\n () => onRowClick(context),\n );\n }\n : undefined,\n [onRowClick, runAction],\n );\n const handleEditError = React.useCallback(\n (error: unknown, row: TData) => {\n onActionError?.({\n error,\n row,\n source: \"edit\",\n });\n },\n [onActionError],\n );\n const {\n containerWidth,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n effectiveColumnVisibility,\n globalFilterValue,\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n localSearchValue,\n resolvedLoadingRowCount,\n resolvedToolbarQueryPlaceholder,\n selectedRows,\n setCurrentColumnFilters,\n setCurrentColumnOrder,\n setCurrentColumnPinning,\n setCurrentColumnVisibility,\n setCurrentExpanded,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n setLocalSearchValue,\n shouldRenderInitialLoading,\n tableData,\n tableGetRowId,\n visibleData,\n } = useDataTableState({\n columnFilters: resolvedColumnFilters,\n columnOrder: resolvedColumnOrder,\n columnPinning: resolvedColumnPinning,\n columnSizing: resolvedColumnSizing,\n columnPrefsKey,\n persistence,\n columnVisibility: resolvedColumnVisibility,\n columns,\n containerRef,\n data,\n density: resolvedDensity,\n enableRowSelection,\n enableToolbarQueryFiltering,\n expanded: resolvedExpanded,\n getRowId,\n hiddenRows,\n isLoading,\n loadingRowCount,\n manualFiltering,\n initialState,\n onColumnFiltersChange: handleColumnFiltersPropChange,\n onColumnOrderChange: handleColumnOrderPropChange,\n onColumnPinningChange: handleColumnPinningPropChange,\n onColumnSizingChange: handleColumnSizingPropChange,\n onColumnVisibilityChange: handleColumnVisibilityPropChange,\n onDensityChange: handleDensityPropChange,\n onExpandedChange: handleExpandedPropChange,\n onPageIndexChange: handlePageIndexPropChange,\n onRowSelectionChange: handleRowSelectionPropChange,\n onShowHiddenRowsChange: handleShowHiddenRowsPropChange,\n onSortingChange: handleSortingPropChange,\n onToolbarQueryValueChange: handleToolbarQueryValueChange,\n onViewModeChange: handleViewModePropChange,\n pageIndex: resolvedPageIndex,\n pageSize: resolvedPageSize,\n resolvedLabels,\n rowSelection: resolvedRowSelection,\n rowsPerPageOptions,\n selectionActions,\n showHiddenRows: resolvedShowHiddenRows,\n sorting: resolvedSorting,\n toolbarQueryDebounceMs,\n toolbarQueryPlaceholder,\n toolbarQueryValue: resolvedToolbarQueryValue,\n viewMode: resolvedViewMode,\n });\n const {\n cancelEditing,\n draftValues,\n editingRowId,\n isSavingEdit,\n saveEdit,\n setDraftValues,\n setEditingRowId,\n startEditingRow,\n } = useRowEditing({\n columns,\n editableRows,\n onError: handleEditError,\n });\n const { viewportElement: tableScrollElement, viewportHeight } =\n useDataTableScrollViewport(tableScrollContainerRef, currentViewMode);\n const openFileDialog = React.useCallback(() => {\n if (fileUpload?.disabled) {\n return;\n }\n\n fileInputRef.current?.click();\n }, [fileUpload?.disabled]);\n const handleSelectedFiles = React.useCallback(\n (files: FileList | Array) => {\n runAction(\n {\n source: \"fileUpload\",\n },\n () => fileUpload?.onFilesSelected(files),\n );\n },\n [fileUpload, runAction],\n );\n\n const tableColumns = useDataTableColumns({\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n editingRowId,\n enableRowSelection,\n getRowCanExpand,\n isSavingEdit,\n labels: resolvedLabels,\n lastSelectedRowIdRef,\n renderExpandedRow,\n rowActions: guardedRowActions,\n saveEdit,\n startEditingRow,\n tableRef,\n });\n\n const {\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n isPageCountKnown,\n renderedRows,\n reorderColumn,\n rowsToRender,\n sentinelRef,\n table,\n virtualPaddingBottom,\n virtualPaddingTop,\n visibleLeafColumns,\n } = useDataTableInstance({\n autoResetPageIndex: false,\n columnResizeMode,\n dir,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentColumnSizing,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentSorting,\n currentViewMode,\n defaultColumn,\n effectiveColumnVisibility,\n enableColumnResizing,\n enableRowSelection,\n getRowCanExpand,\n globalFilterFn,\n globalFilterValue,\n hasNextPage,\n handleColumnFiltersChange: setCurrentColumnFilters,\n handleColumnOrderChange: setCurrentColumnOrder,\n handleColumnPinningChange: setCurrentColumnPinning,\n handleColumnVisibilityChange: setCurrentColumnVisibility,\n handleExpandedChange: setCurrentExpanded,\n infiniteScroll,\n manualFiltering,\n manualPagination,\n manualSorting,\n onActionError,\n onPageIndexChange: handlePageIndexPropChange,\n onPageSizeChange: handlePageSizePropChange,\n pageCount,\n pageIndex: resolvedPageIndex,\n pageSize: resolvedPageSize,\n renderExpandedRow,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n shouldRenderInitialLoading,\n tableColumns,\n tableData,\n tableGetRowId,\n tableRef,\n tableScrollElement,\n totalRowCount,\n virtualization,\n viewportHeight,\n });\n const columnLayout = useColumnLayout({\n columns,\n columnSizing: currentColumnSizing,\n editableRows: Boolean(editableRows),\n enableRowSelection,\n hasRowActions: rowActions.length > 0,\n hasRowExpansion: Boolean(renderExpandedRow),\n layoutMode,\n uiClassNames,\n visibleLeafColumns,\n });\n const { explicitlySizedColumnIds, fillMinWidth, getColumnLayout } =\n columnLayout;\n const explicitCustomCellColumnIds = React.useMemo(() => {\n return new Set(\n getDataTableLeafColumns(columns).flatMap(({ column, index }) => {\n return Object.prototype.hasOwnProperty.call(column, \"cell\") &&\n typeof column.cell === \"function\"\n ? [getColumnId(column, index)]\n : [];\n }),\n );\n }, [columns]);\n const visibleLeafColumnCount = visibleLeafColumns.length;\n const bodyRowComponents = React.useMemo(\n () => ({\n Checkbox,\n Input,\n Skeleton,\n TableCell,\n TableRow,\n }),\n [],\n );\n const hasCardTitle = React.useMemo(\n () =>\n getDataTableLeafColumns(columns).some(\n ({ column }) => column.meta?.cardTitle,\n ),\n [columns],\n );\n const primeColumnForResize = React.useCallback(\n (columnId: string, currentSize: number) => {\n if (\n explicitlySizedColumnIds.has(columnId) ||\n Object.prototype.hasOwnProperty.call(\n table.getState().columnSizing,\n columnId,\n )\n ) {\n return;\n }\n\n flushSync(() => {\n table.setColumnSizing((current) => ({\n ...current,\n [columnId]: currentSize,\n }));\n });\n },\n [explicitlySizedColumnIds, table],\n );\n const resetColumnSize = React.useCallback(\n (columnId: string) => {\n if (explicitlySizedColumnIds.has(columnId)) {\n table.getColumn(columnId)?.resetSize();\n return;\n }\n\n table.setColumnSizing((current) => {\n if (!Object.prototype.hasOwnProperty.call(current, columnId)) {\n return current;\n }\n\n const next = { ...current };\n delete next[columnId];\n return next;\n });\n },\n [explicitlySizedColumnIds, table],\n );\n\n const filteredData = table\n .getFilteredRowModel()\n .rows.map((row) => row.original);\n const emptyNode =\n typeof emptyState === \"function\"\n ? emptyState({\n rows: filteredData,\n toolbarQueryValue: localSearchValue,\n })\n : emptyState;\n const {\n columnVisibilityOptions,\n effectiveToolbarActions,\n handleClearColumnFilters,\n handleToolbarColumnFilterChange,\n handleToolbarColumnPinningChange,\n toolbarColumnFilters,\n } = useDataTableToolbarFeatures({\n columns,\n currentColumnFilters,\n currentColumnPinning,\n csvExport,\n effectiveColumnVisibility,\n enableColumnFilters,\n handleColumnFiltersChange: setCurrentColumnFilters,\n handleColumnPinningChange: setCurrentColumnPinning,\n labels: resolvedLabels,\n table,\n toolbarActions,\n visibleData,\n });\n const guardedToolbarActions = React.useMemo(\n () =>\n effectiveToolbarActions.map((action) => ({\n ...action,\n onClick: (context: {\n rows: Array;\n openFileDialog?: () => void;\n }) => {\n runAction(\n {\n actionKey: action.key,\n source: \"toolbarAction\",\n },\n () => action.onClick(context),\n );\n },\n })),\n [effectiveToolbarActions, runAction],\n );\n const guardedSelectionActions = React.useMemo(\n () =>\n selectionActions.map((action) => ({\n ...action,\n onClick: (context: Parameters[0]) => {\n runAction(\n {\n actionKey: action.key,\n source: \"selectionAction\",\n },\n () => action.onClick(context),\n );\n },\n })),\n [runAction, selectionActions],\n );\n const currentDataTableState = React.useMemo(\n () => ({\n sorting: currentSorting,\n pagination: currentPagination,\n rowSelection: currentRowSelection,\n columnVisibility: currentColumnVisibility,\n columnFilters: currentColumnFilters,\n expanded: currentExpanded,\n columnOrder: currentColumnOrder,\n columnPinning: currentColumnPinning,\n columnSizing: currentColumnSizing,\n density: currentDensity,\n viewMode: currentViewMode,\n showHiddenRows: currentShowHiddenRows,\n globalFilter: localSearchValue,\n }),\n [\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n localSearchValue,\n ],\n );\n const getCurrentState = React.useCallback(\n () => cloneDataTableState(currentDataTableState),\n [currentDataTableState],\n );\n const restoreState = React.useCallback(\n (nextState: Partial) => {\n if (nextState.sorting !== undefined) {\n table.setSorting(nextState.sorting);\n }\n if (nextState.pagination !== undefined) {\n table.setPagination(nextState.pagination);\n }\n if (nextState.rowSelection !== undefined) {\n table.setRowSelection(nextState.rowSelection);\n }\n if (nextState.columnVisibility !== undefined) {\n table.setColumnVisibility(nextState.columnVisibility);\n }\n if (nextState.columnFilters !== undefined) {\n table.setColumnFilters(nextState.columnFilters);\n }\n if (nextState.expanded !== undefined) {\n table.setExpanded(nextState.expanded);\n }\n if (nextState.columnOrder !== undefined) {\n table.setColumnOrder(nextState.columnOrder);\n }\n if (nextState.columnPinning !== undefined) {\n table.setColumnPinning(nextState.columnPinning);\n }\n if (nextState.columnSizing !== undefined) {\n table.setColumnSizing(nextState.columnSizing);\n }\n if (nextState.density !== undefined) {\n handleDensityChange(nextState.density);\n }\n if (nextState.viewMode !== undefined) {\n handleViewModeChange(nextState.viewMode);\n }\n if (nextState.showHiddenRows !== undefined) {\n handleShowHiddenRowsChange(nextState.showHiddenRows);\n }\n if (nextState.globalFilter !== undefined) {\n setLocalSearchValue(nextState.globalFilter);\n }\n },\n [\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n setLocalSearchValue,\n table,\n ],\n );\n const clearPersistedState = React.useCallback(\n () => clearDataTableColumnPrefs(persistence ?? columnPrefsKey),\n [columnPrefsKey, persistence],\n );\n const resetColumnLayout = React.useCallback<\n DataTableApi[\"resetColumnLayout\"]\n >(\n (options) => {\n if (options?.clearPersistence) {\n clearPersistedState();\n }\n restoreState({\n columnVisibility: initialState?.columnVisibility ?? {},\n columnOrder: initialState?.columnOrder ?? [],\n columnPinning:\n initialState?.columnPinning ?? getInitialColumnPinning(columns),\n columnSizing: initialState?.columnSizing ?? {},\n });\n },\n [\n clearPersistedState,\n columns,\n initialState,\n restoreState,\n ],\n );\n const resetState = React.useCallback[\"resetState\"]>(\n (options) => {\n if (options?.clearPersistence) {\n clearPersistedState();\n }\n restoreState({\n sorting: initialState?.sorting ?? [],\n pagination: initialState?.pagination ?? {\n pageIndex: 0,\n pageSize: rowsPerPageOptions[0] ?? 20,\n },\n rowSelection: initialState?.rowSelection ?? {},\n columnVisibility: initialState?.columnVisibility ?? {},\n columnFilters: initialState?.columnFilters ?? [],\n expanded: initialState?.expanded ?? {},\n columnOrder: initialState?.columnOrder ?? [],\n columnPinning:\n initialState?.columnPinning ?? getInitialColumnPinning(columns),\n columnSizing: initialState?.columnSizing ?? {},\n density: initialState?.density ?? \"comfortable\",\n viewMode: initialState?.viewMode ?? \"table\",\n showHiddenRows: initialState?.showHiddenRows ?? false,\n globalFilter: initialState?.globalFilter ?? \"\",\n });\n },\n [\n clearPersistedState,\n columns,\n initialState,\n restoreState,\n rowsPerPageOptions,\n ],\n );\n const getSavedViews = React.useCallback(\n () => readDataTableSavedViews(savedViews),\n [savedViews],\n );\n const createSavedView = React.useCallback<\n DataTableApi[\"createSavedView\"]\n >(\n (name) =>\n createDataTableSavedView(savedViews, name, getCurrentState()),\n [getCurrentState, savedViews],\n );\n const applySavedView = React.useCallback<\n DataTableApi[\"applySavedView\"]\n >(\n (id) => {\n const view = readDataTableSavedViews(savedViews).find(\n (candidate) => candidate.id === id,\n );\n if (!view) {\n return false;\n }\n restoreState(view.state);\n savedViews?.onApply?.(view);\n return true;\n },\n [restoreState, savedViews],\n );\n const renameSavedView = React.useCallback<\n DataTableApi[\"renameSavedView\"]\n >(\n (id, name) => renameDataTableSavedView(savedViews, id, name),\n [savedViews],\n );\n const deleteSavedView = React.useCallback<\n DataTableApi[\"deleteSavedView\"]\n >(\n (id) => deleteDataTableSavedView(savedViews, id),\n [savedViews],\n );\n const clearSavedViews = React.useCallback(\n () => clearDataTableSavedViews(savedViews),\n [savedViews],\n );\n const exportCsvFromApi = React.useCallback<\n DataTableApi[\"exportCsv\"]\n >(\n (options) =>\n exportDataTableCsv({\n csvExport: options ?? (csvExport || true),\n labels: resolvedLabels,\n table,\n }),\n [csvExport, resolvedLabels, table],\n );\n React.useImperativeHandle(\n apiRef,\n () => ({\n getTable: () => tableRef.current,\n getState: getCurrentState,\n snapshot: getCurrentState,\n restore: restoreState,\n resetColumnLayout,\n resetState,\n clearPersistedState,\n getSavedViews,\n createSavedView,\n applySavedView,\n renameSavedView,\n deleteSavedView,\n clearSavedViews,\n focus: () => {\n containerRef.current?.focus();\n },\n scrollToRow: (rowId) =>\n scrollDataTableElementIntoView(containerRef.current, \"row\", rowId),\n scrollToColumn: (columnId) =>\n scrollDataTableElementIntoView(\n containerRef.current,\n \"column\",\n columnId,\n ),\n exportCsv: exportCsvFromApi,\n }),\n [\n applySavedView,\n clearPersistedState,\n clearSavedViews,\n createSavedView,\n deleteSavedView,\n exportCsvFromApi,\n getSavedViews,\n getCurrentState,\n renameSavedView,\n resetColumnLayout,\n resetState,\n restoreState,\n ],\n );\n\n return (\n \n \n {fileUpload ? (\n {\n const files = event.currentTarget.files;\n if (files?.length) {\n handleSelectedFiles(files);\n }\n event.currentTarget.value = \"\";\n }}\n />\n ) : null}\n \n \n {showToolbar ? (\n \n ) : null}\n\n \n {currentViewMode === \"card\" && cardRenderer ? (\n \n ) : (\n \n )}\n \n \n {children}\n \n \n \n \n \n );\n };\n}\n\nfunction runDataTableAction(\n action: () => void | Promise,\n context: Omit, \"error\">,\n onActionError: DataTableProps[\"onActionError\"],\n) {\n let result: void | Promise;\n try {\n result = action();\n } catch (error) {\n onActionError?.({ ...context, error });\n return;\n }\n\n void Promise.resolve(result).catch((error: unknown) => {\n onActionError?.({ ...context, error });\n });\n}\n\nfunction useDataTableStateSliceChange(\n key: K,\n onLegacyChange: ((value: DataTableState[K]) => void) | undefined,\n onStateChange: DataTableProps[\"onStateChange\"],\n) {\n const handleChange = React.useCallback(\n (value: DataTableState[K]) => {\n onLegacyChange?.(value);\n onStateChange?.((current) => ({\n ...current,\n [key]: value,\n }));\n },\n [key, onLegacyChange, onStateChange],\n );\n\n return onLegacyChange || onStateChange ? handleChange : undefined;\n}\n\nfunction useDataTableStateConflictWarnings(\n state: Partial | undefined,\n legacySlices: Record,\n) {\n const warnedSlicesRef = React.useRef(new Set());\n\n React.useEffect(() => {\n if (!state || !isDevelopmentEnvironment()) {\n return;\n }\n\n for (const key of Object.keys(legacySlices) as Array<\n keyof DataTableState\n >) {\n if (\n state[key] === undefined ||\n !legacySlices[key] ||\n warnedSlicesRef.current.has(key)\n ) {\n continue;\n }\n\n warnedSlicesRef.current.add(key);\n console.warn(\n `[data-table-pro] Both state.${key} and its legacy controlled prop were provided. The legacy prop takes precedence during the 4.x compatibility window.`,\n );\n }\n }, [legacySlices, state]);\n}\n\nfunction isDevelopmentEnvironment() {\n const nodeEnvironment = (\n globalThis as {\n process?: { env?: { NODE_ENV?: string } };\n }\n ).process?.env?.NODE_ENV;\n\n return nodeEnvironment !== \"production\";\n}\n\nfunction cloneDataTableState(state: DataTableState): DataTableState {\n return {\n sorting: state.sorting.map((item) => ({ ...item })),\n pagination: { ...state.pagination },\n rowSelection: { ...state.rowSelection },\n columnVisibility: { ...state.columnVisibility },\n columnFilters: state.columnFilters.map((item) => ({ ...item })),\n expanded:\n typeof state.expanded === \"boolean\"\n ? state.expanded\n : { ...state.expanded },\n columnOrder: [...state.columnOrder],\n columnPinning: {\n left: state.columnPinning.left\n ? [...state.columnPinning.left]\n : undefined,\n right: state.columnPinning.right\n ? [...state.columnPinning.right]\n : undefined,\n },\n columnSizing: { ...state.columnSizing },\n density: state.density,\n viewMode: state.viewMode,\n showHiddenRows: state.showHiddenRows,\n globalFilter: state.globalFilter,\n };\n}\n\nfunction scrollDataTableElementIntoView(\n container: HTMLDivElement | null,\n kind: \"row\" | \"column\",\n value: string,\n) {\n if (!container) {\n return false;\n }\n\n const attribute = kind === \"row\" ? \"data-row-id\" : \"data-column-id\";\n const element = Array.from(\n container.querySelectorAll(`[${attribute}]`),\n ).find((candidate) => candidate.getAttribute(attribute) === value);\n if (!element) {\n return false;\n }\n\n element.scrollIntoView?.({ block: \"nearest\", inline: \"nearest\" });\n return true;\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-ICUHQJ2O.js b/dist/chunk-ICUHQJ2O.js deleted file mode 100644 index 5509360..0000000 --- a/dist/chunk-ICUHQJ2O.js +++ /dev/null @@ -1,2 +0,0 @@ -import {a as a$1}from'./chunk-FXX3TZ63.js';import {a}from'./chunk-TUHIU4D7.js';import {j}from'./chunk-ICUCANNA.js';function b(r){return j(r,{CardPanel:a$1,TablePanel:a})}export{b as a};//# sourceMappingURL=chunk-ICUHQJ2O.js.map -//# sourceMappingURL=chunk-ICUHQJ2O.js.map \ No newline at end of file diff --git a/dist/chunk-LDAX7PX5.js b/dist/chunk-LDAX7PX5.js new file mode 100644 index 0000000..bbf1992 --- /dev/null +++ b/dist/chunk-LDAX7PX5.js @@ -0,0 +1,2 @@ +import {n,m,b,e,d,g as g$1,h as h$1,j,s,f,c}from'./chunk-BYTOUBQ7.js';import {a}from'./chunk-GSCYQ624.js';import*as M from'react';import {cva}from'class-variance-authority';import {Slot,Separator,Checkbox,DropdownMenu,ScrollArea,Select,Tooltip}from'radix-ui';import {jsx,jsxs}from'react/jsx-runtime';var ce=cva("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:outline-none active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"",outline:"",secondary:"",ghost:"",destructive:"",link:"underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function g({className:t,variant:e="default",size:n="default",asChild:a$1=false,...s}){let d=a$1?Slot.Root:"button";return jsx(d,{"data-slot":"button","data-variant":e,"data-size":n,className:a(ce({variant:e,size:n,className:t})),...s})}function N({className:t,orientation:e="horizontal",decorative:n=true,...a$1}){return jsx(Separator.Root,{"data-slot":"separator",decorative:n,orientation:e,className:a("shrink-0 data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",t),...a$1})}var ve=cva("flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1",{variants:{orientation:{horizontal:"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg!",vertical:"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg!"}},defaultVariants:{orientation:"horizontal"}});function Y({className:t,orientation:e,...n}){return jsx("div",{role:"group","data-slot":"button-group","data-orientation":e,className:a(ve({orientation:e}),t),...n})}function Z({className:t,asChild:e=false,...n}){let a$1=e?Slot.Root:"div";return jsx(a$1,{className:a("flex items-center gap-2 rounded-lg border px-2.5 text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",t),...n})}function $({className:t,orientation:e="vertical",...n}){return jsx(N,{"data-slot":"button-group-separator",orientation:e,className:a("relative self-stretch data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto",t),...n})}function tt({className:t,size:e="default",...n}){return jsx("div",{"data-slot":"card","data-size":e,className:a("group/card flex flex-col gap-4 overflow-hidden rounded-xl border py-4 text-sm ring-1 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",t),...n})}function et({className:t,...e}){return jsx("div",{"data-slot":"card-header",className:a("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3",t),...e})}function ot({className:t,...e}){return jsx("div",{"data-slot":"card-title",className:a("font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",t),...e})}function nt({className:t,...e}){return jsx("div",{"data-slot":"card-description",className:a("text-sm opacity-80",t),...e})}function at({className:t,...e}){return jsx("div",{"data-slot":"card-action",className:a("col-start-2 row-span-2 row-start-1 self-start justify-self-end",t),...e})}function rt({className:t,...e}){return jsx("div",{"data-slot":"card-content",className:a("px-4 group-data-[size=sm]/card:px-3",t),...e})}function it({className:t,...e}){return jsx("div",{"data-slot":"card-footer",className:a("flex items-center rounded-b-xl border-t p-4 group-data-[size=sm]/card:p-3",t),...e})}function lt({className:t,...e}){return jsx(Checkbox.Root,{"data-slot":"checkbox",className:a("peer relative flex size-4 shrink-0 items-center justify-center rounded-[4px] border ring-2 transition-colors outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 data-checked:ring-2",t),...e,children:jsx(Checkbox.Indicator,{"data-slot":"checkbox-indicator",className:"grid place-content-center text-current transition-none [&>svg]:size-3.5",children:jsx(b,{})})})}function dt({...t}){return jsx(DropdownMenu.Root,{"data-slot":"dropdown-menu",...t})}function pt({...t}){return jsx(DropdownMenu.Portal,{"data-slot":"dropdown-menu-portal",...t})}function ct({...t}){return jsx(DropdownMenu.Trigger,{"data-slot":"dropdown-menu-trigger",...t})}function ut({className:t,align:e="start",sideOffset:n=4,...a$1}){return jsx(DropdownMenu.Portal,{children:jsx(DropdownMenu.Content,{"data-slot":"dropdown-menu-content",sideOffset:n,align:e,className:a("relative z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) animate-none! overflow-x-hidden overflow-y-auto rounded-lg border p-1 shadow-md duration-100 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] 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 data-[state=closed]:overflow-hidden data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",t),...a$1})})}function mt({...t}){return jsx(DropdownMenu.Group,{"data-slot":"dropdown-menu-group",...t})}function ft({className:t,inset:e,variant:n="default",...a$1}){return jsx(DropdownMenu.Item,{"data-slot":"dropdown-menu-item","data-inset":e,"data-variant":n,className:a("group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:outline-none data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a$1})}function gt({className:t,children:e,checked:n,inset:a$1,...s}){return jsxs(DropdownMenu.CheckboxItem,{"data-slot":"dropdown-menu-checkbox-item","data-inset":a$1,className:a("relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:outline-none data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),checked:n,...s,children:[jsx("span",{className:"pointer-events-none absolute right-2 flex items-center justify-center","data-slot":"dropdown-menu-checkbox-item-indicator",children:jsx(DropdownMenu.ItemIndicator,{children:jsx(b,{})})}),e]})}function bt({...t}){return jsx(DropdownMenu.RadioGroup,{"data-slot":"dropdown-menu-radio-group",...t})}function vt({className:t,children:e,inset:n,...a$1}){return jsxs(DropdownMenu.RadioItem,{"data-slot":"dropdown-menu-radio-item","data-inset":n,className:a("relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:outline-none data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a$1,children:[jsx("span",{className:"pointer-events-none absolute right-2 flex items-center justify-center","data-slot":"dropdown-menu-radio-item-indicator",children:jsx(DropdownMenu.ItemIndicator,{children:jsx(b,{})})}),e]})}function ht({className:t,inset:e,...n}){return jsx(DropdownMenu.Label,{"data-slot":"dropdown-menu-label","data-inset":e,className:a("px-1.5 py-1 text-xs font-medium opacity-80 data-inset:pl-7",t),...n})}function xt({className:t,...e}){return jsx(DropdownMenu.Separator,{"data-slot":"dropdown-menu-separator",className:a("-mx-1 my-1 h-px",t),...e})}function Pt({className:t,...e}){return jsx("span",{"data-slot":"dropdown-menu-shortcut",className:a("ml-auto text-xs tracking-widest opacity-75",t),...e})}function wt({...t}){return jsx(DropdownMenu.Sub,{"data-slot":"dropdown-menu-sub",...t})}function yt({className:t,inset:e$1,children:n,...a$1}){return jsxs(DropdownMenu.SubTrigger,{"data-slot":"dropdown-menu-sub-trigger","data-inset":e$1,className:a("flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:outline-none data-inset:pl-7 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a$1,children:[n,jsx(e,{className:"ml-auto"})]})}function Ct({className:t,...e}){return jsx(DropdownMenu.SubContent,{"data-slot":"dropdown-menu-sub-content",className:a("relative z-50 min-w-[96px] origin-(--radix-dropdown-menu-content-transform-origin) animate-none! overflow-hidden rounded-lg border p-1 shadow-lg duration-100 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] 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 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",t),...e})}function Rt({className:t,...e}){return jsx("div",{"data-slot":"empty",className:a("flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-xl border-dashed p-6 text-center text-balance",t),...e})}function St({className:t,...e}){return jsx("div",{"data-slot":"empty-header",className:a("flex max-w-sm flex-col items-center gap-2",t),...e})}var xe=cva("mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0",{variants:{variant:{default:"bg-transparent",icon:"flex size-8 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-4"}},defaultVariants:{variant:"default"}});function zt({className:t,variant:e="default",...n}){return jsx("div",{"data-slot":"empty-icon","data-variant":e,className:a(xe({variant:e,className:t})),...n})}function Nt({className:t,...e}){return jsx("div",{"data-slot":"empty-title",className:a("font-heading text-sm font-medium tracking-tight",t),...e})}function It({className:t,...e}){return jsx("div",{"data-slot":"empty-description",className:a("text-sm/relaxed opacity-80 [&>a]:underline [&>a]:underline-offset-4",t),...e})}function kt({className:t,...e}){return jsx("div",{"data-slot":"empty-content",className:a("flex w-full max-w-sm min-w-0 flex-col items-center gap-2.5 text-sm text-balance",t),...e})}var I="h-8 w-full min-w-0 rounded-lg border px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:opacity-70 focus-visible:outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 @min-[768px]/data-table:text-sm";function k({className:t,...e}){return jsx("div",{role:"group","data-slot":"input-group",className:a("group/input-group flex w-full min-w-0 items-stretch rounded-lg border transition-colors outline-none focus-within:outline-none has-[>[data-slot=input-group-addon][data-align=block-start]]:flex-col has-[>[data-slot=input-group-addon][data-align=block-end]]:flex-col has-[>[data-slot=input-group-control]:disabled]:cursor-not-allowed has-[>[data-slot=input-group-control]:disabled]:opacity-50",t),...e})}var P=M.forwardRef(function({className:e,...n},a$1){return jsx("input",{ref:a$1,"data-slot":"input-group-control",type:n.type,className:a(I,"flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:border-0 focus-visible:ring-0",e),...n})});function T({align:t="inline-start",className:e,...n}){return jsx("div",{"data-slot":"input-group-addon","data-align":t,className:a("flex shrink-0 items-center gap-1.5 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",t==="inline-start"&&"order-first pl-2.5 pr-1",t==="inline-end"&&"order-last pl-1 pr-2.5",t==="block-start"&&"order-first w-full justify-between border-b px-2.5 py-1.5 text-sm",t==="block-end"&&"order-last w-full justify-between border-t px-2.5 py-1.5 text-sm",e),...n})}function Dt({className:t,...e}){return jsx("span",{"data-slot":"input-group-text",className:a("whitespace-nowrap text-sm",t),...e})}P.displayName="InputGroupInput";var A=M.forwardRef(function({className:e,passwordToggle:n$1=false,type:a$1,...s},d){let[S,le]=M.useState(false);return n$1&&a$1==="password"?jsxs(k,{className:e,children:[jsx(P,{ref:d,type:S?"text":"password","data-slot":"input-group-control",className:"pr-0",...s}),jsx(T,{align:"inline-end",children:jsx(g,{type:"button",variant:"ghost",size:"icon-xs","aria-label":S?"Hide password":"Show password","aria-pressed":S,className:"hover:bg-transparent",onMouseDown:G=>G.preventDefault(),onClick:()=>le(G=>!G),children:S?jsx(n,{"data-icon":"inline-start"}):jsx(m,{"data-icon":"inline-start"})})})]}):jsx("input",{ref:d,type:a$1,"data-slot":"input",className:a(I,e),...s})});A.displayName="Input";function Mt({className:t,...e}){return jsx("nav",{role:"navigation","aria-label":"pagination","data-slot":"pagination",className:a("mx-auto flex w-full justify-center",t),...e})}function Gt({className:t,...e}){return jsx("ul",{"data-slot":"pagination-content",className:a("flex items-center gap-1",t),...e})}function _t({...t}){return jsx("li",{"data-slot":"pagination-item",...t})}function h({className:t,isActive:e,disabled:n=false,variant:a$1,size:s="icon",...d}){return jsx(g,{asChild:true,variant:a$1??(e?"outline":"ghost"),size:s,className:a(n&&"pointer-events-none opacity-50",t),children:jsx("a",{"aria-current":e?"page":void 0,"aria-disabled":n?true:void 0,"data-slot":"pagination-link","data-active":e,tabIndex:n?-1:d.tabIndex,...d})})}function Bt({className:t,disabled:e,showText:n=true,size:a$1="default",text:s="Previous",...d$1}){return jsxs(h,{"aria-label":"Go to previous page",disabled:e,size:a$1,variant:"outline",className:a("pl-1.5!",t),...d$1,children:[jsx(d,{"data-icon":"inline-start"}),n?jsx("span",{className:"hidden @min-[640px]/data-table:block",children:s}):null]})}function Lt({className:t,disabled:e,showText:n=true,size:a$1="default",text:s="First",...d}){return jsxs(h,{"aria-label":"Go to first page",disabled:e,size:a$1,variant:"outline",className:a("pl-1.5!",t),...d,children:[jsx(g$1,{"data-icon":"inline-start"}),n?jsx("span",{className:"hidden @min-[640px]/data-table:block",children:s}):null]})}function At({className:t,disabled:e$1,showText:n=true,size:a$1="default",text:s="Next",...d}){return jsxs(h,{"aria-label":"Go to next page",disabled:e$1,size:a$1,variant:"outline",className:a("pr-1.5!",t),...d,children:[n?jsx("span",{className:"hidden @min-[640px]/data-table:block",children:s}):null,jsx(e,{"data-icon":"inline-end"})]})}function Vt({className:t,disabled:e,showText:n=true,size:a$1="default",text:s="Last",...d}){return jsxs(h,{"aria-label":"Go to last page",disabled:e,size:a$1,variant:"outline",className:a("pr-1.5!",t),...d,children:[n?jsx("span",{className:"hidden @min-[640px]/data-table:block",children:s}):null,jsx(h$1,{"data-icon":"inline-end"})]})}function Et({className:t,text:e="More pages",...n}){return jsxs("span",{"aria-hidden":true,"data-slot":"pagination-ellipsis",className:a("flex size-8 items-center justify-center [&_svg:not([class*='size-'])]:size-4",t),...n,children:[jsx(j,{}),jsx("span",{className:"sr-only",children:e})]})}function Ht({className:t,children:e,...n}){return jsxs(ScrollArea.Root,{"data-slot":"scroll-area",className:a("relative",t),...n,children:[jsx(ScrollArea.Viewport,{"data-slot":"scroll-area-viewport",className:"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:outline-none",children:e}),jsx(V,{className:"z-100"}),jsx(ScrollArea.Corner,{})]})}function V({className:t,orientation:e="vertical",...n}){return jsx(ScrollArea.ScrollAreaScrollbar,{"data-slot":"scroll-area-scrollbar","data-orientation":e,orientation:e,className:a("flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent",t),...n,children:jsx(ScrollArea.ScrollAreaThumb,{"data-slot":"scroll-area-thumb",className:"relative flex-1 rounded-full"})})}function Ut({...t}){return jsx(Select.Root,{"data-slot":"select",...t})}function Ft({className:t,...e}){return jsx(Select.Group,{"data-slot":"select-group",className:a("scroll-my-1 p-1",t),...e})}function Kt({...t}){return jsx(Select.Value,{"data-slot":"select-value",...t})}function Ot({className:t,size:e="default",children:n,...a$1}){return jsxs(Select.Trigger,{"data-slot":"select-trigger","data-size":e,className:a("flex w-fit items-center justify-between gap-1.5 rounded-lg border bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a$1,children:[n,jsx(Select.Icon,{asChild:true,children:jsx(s,{className:"pointer-events-none size-4"})})]})}function jt({className:t,children:e,position:n="item-aligned",align:a$1="center",...s}){return jsx(Select.Portal,{children:jsxs(Select.Content,{"data-slot":"select-content","data-align-trigger":n==="item-aligned",className:a("relative z-50 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) animate-none! overflow-x-hidden overflow-y-auto rounded-lg border shadow-md duration-100 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] data-[align-trigger=true]:animate-none 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 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",n==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",t),position:n,align:a$1,...s,children:[jsx(E,{}),jsx(Select.Viewport,{"data-position":n,className:a("data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)",n==="popper"&&""),children:e}),jsx(H,{})]})})}function qt({className:t,...e}){return jsx(Select.Label,{"data-slot":"select-label",className:a("px-1.5 py-1 text-xs opacity-80",t),...e})}function Jt({className:t,children:e,...n}){return jsxs(Select.Item,{"data-slot":"select-item",className:a("relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:outline-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",t),...n,children:[jsx("span",{className:"pointer-events-none absolute right-2 flex size-4 items-center justify-center",children:jsx(Select.ItemIndicator,{children:jsx(b,{className:"pointer-events-none"})})}),jsx(Select.ItemText,{children:e})]})}function Qt({className:t,...e}){return jsx(Select.Separator,{"data-slot":"select-separator",className:a("pointer-events-none -mx-1 my-1 h-px",t),...e})}function E({className:t,...e}){return jsx(Select.ScrollUpButton,{"data-slot":"select-scroll-up-button",className:a("z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4",t),...e,children:jsx(f,{})})}function H({className:t,...e}){return jsx(Select.ScrollDownButton,{"data-slot":"select-scroll-down-button",className:a("z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4",t),...e,children:jsx(c,{})})}function Wt({className:t,...e}){return jsx("div",{"data-slot":"skeleton",className:a("animate-pulse rounded-md",t),...e})}function Xt({className:t,...e}){return jsx("table",{"data-slot":"table",className:a("w-full border-collapse caption-bottom text-sm",t),...e})}function Yt({className:t,...e}){return jsx("thead",{"data-slot":"table-header",className:a("[&_tr]:border-b",t),...e})}function Zt({className:t,...e}){return jsx("tbody",{"data-slot":"table-body",className:a("[&_tr:last-child]:border-0",t),...e})}function $t({className:t,...e}){return jsx("tfoot",{"data-slot":"table-footer",className:a("border-t font-medium [&>tr]:last:border-b-0",t),...e})}function te({className:t,...e}){return jsx("tr",{"data-slot":"table-row",className:a("border-b transition-colors",t),...e})}function ee({className:t,...e}){return jsx("th",{"data-slot":"table-head",className:a("h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0",t),...e})}function oe({className:t,...e}){return jsx("td",{"data-slot":"table-cell",className:a("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0",t),...e})}function ne({className:t,...e}){return jsx("caption",{"data-slot":"table-caption",className:a("mt-4 text-sm opacity-80",t),...e})}function ae({delayDuration:t=0,...e}){return jsx(Tooltip.Provider,{"data-slot":"tooltip-provider",delayDuration:t,...e})}function re({...t}){return jsx(Tooltip.Root,{"data-slot":"tooltip",...t})}function ie({...t}){return jsx(Tooltip.Trigger,{"data-slot":"tooltip-trigger",...t})}function se({className:t,sideOffset:e=0,children:n,...a$1}){return jsx(Tooltip.Portal,{children:jsxs(Tooltip.Content,{"data-slot":"tooltip-content",sideOffset:e,className:a("z-50 inline-flex w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) items-center gap-1.5 rounded-md border px-3 py-1.5 text-xs has-data-[slot=kbd]:pr-1.5 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 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",t),...a$1,children:[n,jsx(Tooltip.Arrow,{className:"z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]"})]})})}var un={Button:g,ButtonGroup:Y,ButtonGroupSeparator:$,ButtonGroupText:Z,Card:tt,CardAction:at,CardContent:rt,CardDescription:nt,CardFooter:it,CardHeader:et,CardTitle:ot,Checkbox:lt,DropdownMenu:dt,DropdownMenuCheckboxItem:gt,DropdownMenuContent:ut,DropdownMenuGroup:mt,DropdownMenuItem:ft,DropdownMenuLabel:ht,DropdownMenuPortal:pt,DropdownMenuRadioGroup:bt,DropdownMenuRadioItem:vt,DropdownMenuSeparator:xt,DropdownMenuShortcut:Pt,DropdownMenuSub:wt,DropdownMenuSubContent:Ct,DropdownMenuSubTrigger:yt,DropdownMenuTrigger:ct,Empty:Rt,EmptyContent:kt,EmptyDescription:It,EmptyHeader:St,EmptyMedia:zt,EmptyTitle:Nt,Input:A,InputGroup:k,InputGroupAddon:T,InputGroupInput:P,InputGroupText:Dt,Pagination:Mt,PaginationContent:Gt,PaginationEllipsis:Et,PaginationFirst:Lt,PaginationItem:_t,PaginationLast:Vt,PaginationLink:h,PaginationNext:At,PaginationPrevious:Bt,ScrollArea:Ht,ScrollBar:V,Select:Ut,SelectContent:jt,SelectGroup:Ft,SelectItem:Jt,SelectLabel:qt,SelectScrollDownButton:H,SelectScrollUpButton:E,SelectSeparator:Qt,SelectTrigger:Ot,SelectValue:Kt,Separator:N,Skeleton:Wt,Table:Xt,TableBody:Zt,TableCaption:ne,TableCell:oe,TableFooter:$t,TableHead:ee,TableHeader:Yt,TableRow:te,Tooltip:re,TooltipContent:se,TooltipProvider:ae,TooltipTrigger:ie};export{Mt as A,h as B,Bt as C,Lt as D,At as E,Vt as F,Ht as G,V as H,Ot as I,jt as J,qt as K,Jt as L,Qt as M,Wt as N,Xt as O,Yt as P,Zt as Q,$t as R,te as S,ee as T,oe as U,ne as V,se as W,un as X,g as a,N as b,tt as c,et as d,nt as e,rt as f,it as g,lt as h,ut as i,ft as j,gt as k,vt as l,ht as m,xt as n,yt as o,Ct as p,Rt as q,St as r,zt as s,Nt as t,It as u,kt as v,k as w,P as x,T as y,A as z};//# sourceMappingURL=chunk-LDAX7PX5.js.map +//# sourceMappingURL=chunk-LDAX7PX5.js.map \ No newline at end of file diff --git a/dist/chunk-ERWHHOBD.js.map b/dist/chunk-LDAX7PX5.js.map similarity index 61% rename from dist/chunk-ERWHHOBD.js.map rename to dist/chunk-LDAX7PX5.js.map index c76325a..8f18291 100644 --- a/dist/chunk-ERWHHOBD.js.map +++ b/dist/chunk-LDAX7PX5.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/components/ui/button.tsx","../src/components/ui/separator.tsx","../src/components/ui/button-group.tsx","../src/components/ui/card.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/empty.tsx","../src/components/ui/input-base.ts","../src/components/ui/input-group.tsx","../src/components/ui/input.tsx","../src/components/ui/pagination.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/select.tsx","../src/components/ui/skeleton.tsx","../src/components/ui/table.tsx","../src/components/ui/tooltip.tsx","../src/core/primitive-ui-kit.ts"],"names":["buttonVariants","cva","Button","className","variant","size","asChild","props","Comp","Slot","jsx","cn","Separator","orientation","decorative","SeparatorPrimitive","buttonGroupVariants","ButtonGroup","ButtonGroupText","ButtonGroupSeparator","Card","CardHeader","CardTitle","CardDescription","CardAction","CardContent","CardFooter","Checkbox","CheckboxPrimitive","IconCheck","DropdownMenu","DropdownMenuPrimitive","DropdownMenuPortal","DropdownMenuTrigger","DropdownMenuContent","align","sideOffset","DropdownMenuGroup","DropdownMenuItem","inset","DropdownMenuCheckboxItem","children","checked","jsxs","DropdownMenuRadioGroup","DropdownMenuRadioItem","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuShortcut","DropdownMenuSub","DropdownMenuSubTrigger","IconChevronRight","DropdownMenuSubContent","Empty","EmptyHeader","emptyMediaVariants","EmptyMedia","EmptyTitle","EmptyDescription","EmptyContent","inputClassName","InputGroup","InputGroupInput","Tt","ref","InputGroupAddon","InputGroupText","Input","passwordToggle","type","showPassword","setShowPassword","event","current","IconEyeOff","IconEye","Pagination","PaginationContent","PaginationItem","PaginationLink","isActive","disabled","PaginationPrevious","showText","text","IconChevronLeft","PaginationFirst","IconChevronsLeft","PaginationNext","PaginationLast","IconChevronsRight","PaginationEllipsis","IconDots","ScrollArea","ScrollAreaPrimitive","ScrollBar","Select","SelectPrimitive","SelectGroup","SelectValue","SelectTrigger","IconSelector","SelectContent","position","SelectScrollUpButton","SelectScrollDownButton","SelectLabel","SelectItem","SelectSeparator","IconChevronUp","IconChevronDown","Skeleton","Table","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","TooltipProvider","delayDuration","TooltipPrimitive","Tooltip","TooltipTrigger","TooltipContent","primitiveUiKit"],"mappings":"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","file":"chunk-ERWHHOBD.js","sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:outline-none active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"\",\n outline: \"\",\n secondary: \"\",\n ghost: \"\",\n destructive: \"\",\n link: \"underline-offset-4 hover:underline\",\n },\n size: {\n default:\n \"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n xs: \"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n icon: \"size-8\",\n \"icon-xs\":\n \"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\":\n \"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg\",\n \"icon-lg\": \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps & {\n asChild?: boolean;\n }) {\n const Comp = asChild ? Slot.Root : \"button\";\n\n return (\n \n );\n}\n\nexport { Button, buttonVariants };\n","import * as React from \"react\";\nimport { Separator as SeparatorPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nexport { Separator };\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Separator } from \"./separator\";\n\nconst buttonGroupVariants = cva(\n \"flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal:\n \"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg!\",\n vertical:\n \"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg!\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n },\n);\n\nfunction ButtonGroup({\n className,\n orientation,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps) {\n return (\n \n );\n}\n\nfunction ButtonGroupText({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n asChild?: boolean;\n}) {\n const Comp = asChild ? Slot.Root : \"div\";\n\n return (\n \n );\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nexport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n buttonGroupVariants,\n};\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n};\n","import * as React from \"react\";\nimport { Checkbox as CheckboxPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\nimport { IconCheck } from \"../../core/icons\";\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n svg]:size-3.5\"\n >\n \n \n \n );\n}\n\nexport { Checkbox };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\nimport { IconCheck, IconChevronRight } from \"../../core/icons\";\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuContent({\n className,\n align = \"start\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n );\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n \n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n inset,\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n}) {\n return (\n \n \n \n \n \n \n {children}\n \n );\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n inset,\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n}) {\n return (\n \n \n \n \n \n \n {children}\n \n );\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n}) {\n return (\n \n );\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n \n );\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n}) {\n return (\n \n {children}\n \n \n );\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n};\n","import { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Empty({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nconst emptyMediaVariants = cva(\n \"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"flex size-8 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction EmptyMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps) {\n return (\n \n );\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n a]:underline [&>a]:underline-offset-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nexport {\n Empty,\n EmptyHeader,\n EmptyTitle,\n EmptyDescription,\n EmptyContent,\n EmptyMedia,\n};\n","export const inputClassName =\n \"h-8 w-full min-w-0 rounded-lg border px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:opacity-70 focus-visible:outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\";\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { inputClassName } from \"./input-base\";\n\ntype InputGroupAddonAlign =\n | \"inline-start\"\n | \"inline-end\"\n | \"block-start\"\n | \"block-end\";\n\nfunction InputGroup({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n [data-slot=input-group-addon][data-align=block-start]]:flex-col has-[>[data-slot=input-group-addon][data-align=block-end]]:flex-col has-[>[data-slot=input-group-control]:disabled]:cursor-not-allowed has-[>[data-slot=input-group-control]:disabled]:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nconst InputGroupInput = React.forwardRef<\n HTMLInputElement,\n React.ComponentProps<\"input\">\n>(function InputGroupInput({ className, ...props }, ref) {\n return (\n \n );\n});\n\ntype InputGroupAddonProps = React.ComponentProps<\"div\"> & {\n align?: InputGroupAddonAlign;\n};\n\nfunction InputGroupAddon({\n align = \"inline-start\",\n className,\n ...props\n}: InputGroupAddonProps) {\n return (\n \n );\n}\n\nfunction InputGroupText({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n \n );\n}\n\nInputGroupInput.displayName = \"InputGroupInput\";\n\nexport { InputGroup, InputGroupAddon, InputGroupInput, InputGroupText };\n","import * as React from \"react\";\nimport { IconEye, IconEyeOff } from \"../../core/icons\";\n\nimport { Button } from \"./button\";\nimport { inputClassName } from \"./input-base\";\nimport { InputGroup, InputGroupAddon, InputGroupInput } from \"./input-group\";\nimport { cn } from \"../../lib/utils\";\n\ntype InputProps = React.ComponentProps<\"input\"> & {\n passwordToggle?: boolean;\n};\n\nconst Input = React.forwardRef(function Input(\n { className, passwordToggle = false, type, ...props },\n ref,\n) {\n const [showPassword, setShowPassword] = React.useState(false);\n const canTogglePassword = passwordToggle && type === \"password\";\n\n if (!canTogglePassword) {\n return (\n \n );\n }\n\n return (\n \n \n \n event.preventDefault()}\n onClick={() => setShowPassword((current) => !current)}\n >\n {showPassword ? (\n \n ) : (\n \n )}\n \n \n \n );\n});\n\nInput.displayName = \"Input\";\n\nexport { Input };\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"./button\";\nimport {\n IconChevronsLeft,\n IconChevronsRight,\n IconChevronLeft,\n IconChevronRight,\n IconDots,\n} from \"../../core/icons\";\n\nfunction Pagination({ className, ...props }: React.ComponentProps<\"nav\">) {\n return (\n \n );\n}\n\nfunction PaginationContent({\n className,\n ...props\n}: React.ComponentProps<\"ul\">) {\n return (\n \n );\n}\n\nfunction PaginationItem({ ...props }: React.ComponentProps<\"li\">) {\n return
  • ;\n}\n\ntype PaginationLinkProps = {\n isActive?: boolean;\n disabled?: boolean;\n variant?: React.ComponentProps[\"variant\"];\n} & Pick, \"size\"> &\n React.ComponentProps<\"a\">;\n\nfunction PaginationLink({\n className,\n isActive,\n disabled = false,\n variant,\n size = \"icon\",\n ...props\n}: PaginationLinkProps) {\n return (\n \n \n \n );\n}\n\nfunction PaginationPrevious({\n className,\n disabled,\n showText = true,\n size = \"default\",\n text = \"Previous\",\n ...props\n}: React.ComponentProps & {\n showText?: boolean;\n text?: string;\n}) {\n return (\n \n \n {showText ? {text} : null}\n \n );\n}\n\nfunction PaginationFirst({\n className,\n disabled,\n showText = true,\n size = \"default\",\n text = \"First\",\n ...props\n}: React.ComponentProps & {\n showText?: boolean;\n text?: string;\n}) {\n return (\n \n \n {showText ? {text} : null}\n \n );\n}\n\nfunction PaginationNext({\n className,\n disabled,\n showText = true,\n size = \"default\",\n text = \"Next\",\n ...props\n}: React.ComponentProps & {\n showText?: boolean;\n text?: string;\n}) {\n return (\n \n {showText ? {text} : null}\n \n \n );\n}\n\nfunction PaginationLast({\n className,\n disabled,\n showText = true,\n size = \"default\",\n text = \"Last\",\n ...props\n}: React.ComponentProps & {\n showText?: boolean;\n text?: string;\n}) {\n return (\n \n {showText ? {text} : null}\n \n \n );\n}\n\nfunction PaginationEllipsis({\n className,\n text = \"More pages\",\n ...props\n}: React.ComponentProps<\"span\"> & { text?: string }) {\n return (\n \n \n {text}\n \n );\n}\n\nexport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n};\n","import * as React from \"react\";\nimport { ScrollArea as ScrollAreaPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n {children}\n \n \n \n \n );\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n );\n}\n\nexport { ScrollArea, ScrollBar };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Select as SelectPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\nimport {\n IconSelector,\n IconCheck,\n IconChevronUp,\n IconChevronDown,\n} from \"../../core/icons\";\n\nfunction Select({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction SelectGroup({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n \n {children}\n \n \n \n \n );\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"item-aligned\",\n align = \"center\",\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n \n {children}\n \n \n \n \n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n \n \n \n {children}\n \n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n","import { cn } from \"../../lib/utils\";\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nexport { Skeleton };\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n \n );\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n \n );\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n \n );\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n tr]:last:border-b-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n \n );\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n \n );\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n \n );\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n \n );\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Tooltip as TooltipPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n {children}\n \n \n \n );\n}\n\nexport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };\n","import type { DataTableUiKit } from \"./ui-kit\";\nimport { Button } from \"../components/ui/button\";\nimport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n} from \"../components/ui/button-group\";\nimport {\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"../components/ui/card\";\nimport { Checkbox } from \"../components/ui/checkbox\";\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from \"../components/ui/dropdown-menu\";\nimport {\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n} from \"../components/ui/empty\";\nimport { Input } from \"../components/ui/input\";\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n InputGroupText,\n} from \"../components/ui/input-group\";\nimport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n} from \"../components/ui/pagination\";\nimport { ScrollArea, ScrollBar } from \"../components/ui/scroll-area\";\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n} from \"../components/ui/select\";\nimport { Separator } from \"../components/ui/separator\";\nimport { Skeleton } from \"../components/ui/skeleton\";\nimport {\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n} from \"../components/ui/table\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../components/ui/tooltip\";\n\nexport const primitiveUiKit: DataTableUiKit = {\n Button,\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n Checkbox,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n Input,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n InputGroupText,\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n ScrollArea,\n ScrollBar,\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n Separator,\n Skeleton,\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n};\n\nexport {\n Button,\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n Checkbox,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n Input,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n InputGroupText,\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n ScrollArea,\n ScrollBar,\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n Separator,\n Skeleton,\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n};\n"]} \ No newline at end of file +{"version":3,"sources":["../src/components/ui/button.tsx","../src/components/ui/separator.tsx","../src/components/ui/button-group.tsx","../src/components/ui/card.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/empty.tsx","../src/components/ui/input-base.ts","../src/components/ui/input-group.tsx","../src/components/ui/input.tsx","../src/components/ui/pagination.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/select.tsx","../src/components/ui/skeleton.tsx","../src/components/ui/table.tsx","../src/components/ui/tooltip.tsx","../src/core/primitive-ui-kit.ts"],"names":["buttonVariants","cva","Button","className","variant","size","asChild","props","Comp","Slot","jsx","cn","Separator","orientation","decorative","SeparatorPrimitive","buttonGroupVariants","ButtonGroup","ButtonGroupText","ButtonGroupSeparator","Card","CardHeader","CardTitle","CardDescription","CardAction","CardContent","CardFooter","Checkbox","CheckboxPrimitive","IconCheck","DropdownMenu","DropdownMenuPrimitive","DropdownMenuPortal","DropdownMenuTrigger","DropdownMenuContent","align","sideOffset","DropdownMenuGroup","DropdownMenuItem","inset","DropdownMenuCheckboxItem","children","checked","jsxs","DropdownMenuRadioGroup","DropdownMenuRadioItem","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuShortcut","DropdownMenuSub","DropdownMenuSubTrigger","IconChevronRight","DropdownMenuSubContent","Empty","EmptyHeader","emptyMediaVariants","EmptyMedia","EmptyTitle","EmptyDescription","EmptyContent","inputClassName","InputGroup","InputGroupInput","Tt","ref","InputGroupAddon","InputGroupText","Input","passwordToggle","type","showPassword","setShowPassword","event","current","IconEyeOff","IconEye","Pagination","PaginationContent","PaginationItem","PaginationLink","isActive","disabled","PaginationPrevious","showText","text","IconChevronLeft","PaginationFirst","IconChevronsLeft","PaginationNext","PaginationLast","IconChevronsRight","PaginationEllipsis","IconDots","ScrollArea","ScrollAreaPrimitive","ScrollBar","Select","SelectPrimitive","SelectGroup","SelectValue","SelectTrigger","IconSelector","SelectContent","position","SelectScrollUpButton","SelectScrollDownButton","SelectLabel","SelectItem","SelectSeparator","IconChevronUp","IconChevronDown","Skeleton","Table","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","TooltipProvider","delayDuration","TooltipPrimitive","Tooltip","TooltipTrigger","TooltipContent","primitiveUiKit"],"mappings":"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","file":"chunk-LDAX7PX5.js","sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:outline-none active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"\",\n outline: \"\",\n secondary: \"\",\n ghost: \"\",\n destructive: \"\",\n link: \"underline-offset-4 hover:underline\",\n },\n size: {\n default:\n \"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n xs: \"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n icon: \"size-8\",\n \"icon-xs\":\n \"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\":\n \"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg\",\n \"icon-lg\": \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps & {\n asChild?: boolean;\n }) {\n const Comp = asChild ? Slot.Root : \"button\";\n\n return (\n \n );\n}\n\nexport { Button, buttonVariants };\n","import * as React from \"react\";\nimport { Separator as SeparatorPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nexport { Separator };\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Separator } from \"./separator\";\n\nconst buttonGroupVariants = cva(\n \"flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal:\n \"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg!\",\n vertical:\n \"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg!\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n },\n);\n\nfunction ButtonGroup({\n className,\n orientation,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps) {\n return (\n \n );\n}\n\nfunction ButtonGroupText({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n asChild?: boolean;\n}) {\n const Comp = asChild ? Slot.Root : \"div\";\n\n return (\n \n );\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nexport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n buttonGroupVariants,\n};\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n};\n","import * as React from \"react\";\nimport { Checkbox as CheckboxPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\nimport { IconCheck } from \"../../core/icons\";\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n svg]:size-3.5\"\n >\n \n \n \n );\n}\n\nexport { Checkbox };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\nimport { IconCheck, IconChevronRight } from \"../../core/icons\";\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuContent({\n className,\n align = \"start\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n );\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n \n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n inset,\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n}) {\n return (\n \n \n \n \n \n \n {children}\n \n );\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n inset,\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n}) {\n return (\n \n \n \n \n \n \n {children}\n \n );\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n}) {\n return (\n \n );\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n \n );\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n}) {\n return (\n \n {children}\n \n \n );\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n};\n","import { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Empty({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nconst emptyMediaVariants = cva(\n \"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"flex size-8 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction EmptyMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps) {\n return (\n \n );\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n a]:underline [&>a]:underline-offset-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nexport {\n Empty,\n EmptyHeader,\n EmptyTitle,\n EmptyDescription,\n EmptyContent,\n EmptyMedia,\n};\n","export const inputClassName =\n \"h-8 w-full min-w-0 rounded-lg border px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:opacity-70 focus-visible:outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 @min-[768px]/data-table:text-sm\";\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { inputClassName } from \"./input-base\";\n\ntype InputGroupAddonAlign =\n | \"inline-start\"\n | \"inline-end\"\n | \"block-start\"\n | \"block-end\";\n\nfunction InputGroup({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n [data-slot=input-group-addon][data-align=block-start]]:flex-col has-[>[data-slot=input-group-addon][data-align=block-end]]:flex-col has-[>[data-slot=input-group-control]:disabled]:cursor-not-allowed has-[>[data-slot=input-group-control]:disabled]:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nconst InputGroupInput = React.forwardRef<\n HTMLInputElement,\n React.ComponentProps<\"input\">\n>(function InputGroupInput({ className, ...props }, ref) {\n return (\n \n );\n});\n\ntype InputGroupAddonProps = React.ComponentProps<\"div\"> & {\n align?: InputGroupAddonAlign;\n};\n\nfunction InputGroupAddon({\n align = \"inline-start\",\n className,\n ...props\n}: InputGroupAddonProps) {\n return (\n \n );\n}\n\nfunction InputGroupText({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n \n );\n}\n\nInputGroupInput.displayName = \"InputGroupInput\";\n\nexport { InputGroup, InputGroupAddon, InputGroupInput, InputGroupText };\n","import * as React from \"react\";\nimport { IconEye, IconEyeOff } from \"../../core/icons\";\n\nimport { Button } from \"./button\";\nimport { inputClassName } from \"./input-base\";\nimport { InputGroup, InputGroupAddon, InputGroupInput } from \"./input-group\";\nimport { cn } from \"../../lib/utils\";\n\ntype InputProps = React.ComponentProps<\"input\"> & {\n passwordToggle?: boolean;\n};\n\nconst Input = React.forwardRef(function Input(\n { className, passwordToggle = false, type, ...props },\n ref,\n) {\n const [showPassword, setShowPassword] = React.useState(false);\n const canTogglePassword = passwordToggle && type === \"password\";\n\n if (!canTogglePassword) {\n return (\n \n );\n }\n\n return (\n \n \n \n event.preventDefault()}\n onClick={() => setShowPassword((current) => !current)}\n >\n {showPassword ? (\n \n ) : (\n \n )}\n \n \n \n );\n});\n\nInput.displayName = \"Input\";\n\nexport { Input };\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"./button\";\nimport {\n IconChevronsLeft,\n IconChevronsRight,\n IconChevronLeft,\n IconChevronRight,\n IconDots,\n} from \"../../core/icons\";\n\nfunction Pagination({ className, ...props }: React.ComponentProps<\"nav\">) {\n return (\n \n );\n}\n\nfunction PaginationContent({\n className,\n ...props\n}: React.ComponentProps<\"ul\">) {\n return (\n \n );\n}\n\nfunction PaginationItem({ ...props }: React.ComponentProps<\"li\">) {\n return
  • ;\n}\n\ntype PaginationLinkProps = {\n isActive?: boolean;\n disabled?: boolean;\n variant?: React.ComponentProps[\"variant\"];\n} & Pick, \"size\"> &\n React.ComponentProps<\"a\">;\n\nfunction PaginationLink({\n className,\n isActive,\n disabled = false,\n variant,\n size = \"icon\",\n ...props\n}: PaginationLinkProps) {\n return (\n \n \n \n );\n}\n\nfunction PaginationPrevious({\n className,\n disabled,\n showText = true,\n size = \"default\",\n text = \"Previous\",\n ...props\n}: React.ComponentProps & {\n showText?: boolean;\n text?: string;\n}) {\n return (\n \n \n {showText ? (\n {text}\n ) : null}\n \n );\n}\n\nfunction PaginationFirst({\n className,\n disabled,\n showText = true,\n size = \"default\",\n text = \"First\",\n ...props\n}: React.ComponentProps & {\n showText?: boolean;\n text?: string;\n}) {\n return (\n \n \n {showText ? (\n {text}\n ) : null}\n \n );\n}\n\nfunction PaginationNext({\n className,\n disabled,\n showText = true,\n size = \"default\",\n text = \"Next\",\n ...props\n}: React.ComponentProps & {\n showText?: boolean;\n text?: string;\n}) {\n return (\n \n {showText ? (\n {text}\n ) : null}\n \n \n );\n}\n\nfunction PaginationLast({\n className,\n disabled,\n showText = true,\n size = \"default\",\n text = \"Last\",\n ...props\n}: React.ComponentProps & {\n showText?: boolean;\n text?: string;\n}) {\n return (\n \n {showText ? (\n {text}\n ) : null}\n \n \n );\n}\n\nfunction PaginationEllipsis({\n className,\n text = \"More pages\",\n ...props\n}: React.ComponentProps<\"span\"> & { text?: string }) {\n return (\n \n \n {text}\n \n );\n}\n\nexport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n};\n","import * as React from \"react\";\nimport { ScrollArea as ScrollAreaPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n {children}\n \n \n \n \n );\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n );\n}\n\nexport { ScrollArea, ScrollBar };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Select as SelectPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\nimport {\n IconSelector,\n IconCheck,\n IconChevronUp,\n IconChevronDown,\n} from \"../../core/icons\";\n\nfunction Select({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction SelectGroup({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n \n {children}\n \n \n \n \n );\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"item-aligned\",\n align = \"center\",\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n \n {children}\n \n \n \n \n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n \n \n \n {children}\n \n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n","import { cn } from \"../../lib/utils\";\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nexport { Skeleton };\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n \n );\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n \n );\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n \n );\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n tr]:last:border-b-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n \n );\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n \n );\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n \n );\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n \n );\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Tooltip as TooltipPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n {children}\n \n \n \n );\n}\n\nexport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };\n","import type { DataTableUiKit } from \"./ui-kit\";\nimport { Button } from \"../components/ui/button\";\nimport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n} from \"../components/ui/button-group\";\nimport {\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"../components/ui/card\";\nimport { Checkbox } from \"../components/ui/checkbox\";\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from \"../components/ui/dropdown-menu\";\nimport {\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n} from \"../components/ui/empty\";\nimport { Input } from \"../components/ui/input\";\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n InputGroupText,\n} from \"../components/ui/input-group\";\nimport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n} from \"../components/ui/pagination\";\nimport { ScrollArea, ScrollBar } from \"../components/ui/scroll-area\";\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n} from \"../components/ui/select\";\nimport { Separator } from \"../components/ui/separator\";\nimport { Skeleton } from \"../components/ui/skeleton\";\nimport {\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n} from \"../components/ui/table\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../components/ui/tooltip\";\n\nexport const primitiveUiKit: DataTableUiKit = {\n Button,\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n Checkbox,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n Input,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n InputGroupText,\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n ScrollArea,\n ScrollBar,\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n Separator,\n Skeleton,\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n};\n\nexport {\n Button,\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n Checkbox,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n Input,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n InputGroupText,\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n ScrollArea,\n ScrollBar,\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n Separator,\n Skeleton,\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n};\n"]} \ No newline at end of file diff --git a/dist/chunk-ARW55TNZ.js b/dist/chunk-MYQZYDHU.js similarity index 97% rename from dist/chunk-ARW55TNZ.js rename to dist/chunk-MYQZYDHU.js index 96b0213..426afdb 100644 --- a/dist/chunk-ARW55TNZ.js +++ b/dist/chunk-MYQZYDHU.js @@ -1,2 +1,2 @@ -import {X as X$1,a as a$1,c,e,g,h,i,j as j$1,k,l,m,n,p,o,q as q$1,u,s,z as z$1,w,y,x,H,I,J as J$1,L,K as K$1,M,b,N as N$1,R,T,W as W$1}from'./chunk-ERWHHOBD.js';import {a}from'./chunk-674VSOYY.js';import'react';import {jsx}from'react/jsx-runtime';function r(H,L){return function({className:A,...R}){return jsx(H,{className:a(L,A),...R})}}var U=r(a$1,"rounded-md text-foreground data-[variant=default]:border-primary data-[variant=default]:bg-primary data-[variant=default]:text-primary-foreground data-[variant=outline]:border-input data-[variant=outline]:bg-card data-[variant=outline]:hover:bg-accent data-[variant=outline]:hover:text-accent-foreground data-[variant=secondary]:border-secondary data-[variant=secondary]:bg-secondary data-[variant=secondary]:text-secondary-foreground data-[variant=ghost]:border-transparent data-[variant=ghost]:bg-transparent data-[variant=ghost]:hover:bg-accent data-[variant=ghost]:hover:text-accent-foreground data-[variant=destructive]:border-destructive data-[variant=destructive]:bg-destructive data-[variant=destructive]:text-destructive-foreground data-[variant=link]:border-transparent data-[variant=link]:bg-transparent"),N=r(c,"rounded-xl border-border bg-card text-card-foreground shadow-sm ring-0"),z=r(e,"text-muted-foreground"),K=r(g,"border-t border-border/60 bg-muted/50"),_=r(h,"border-input bg-card ring-ring/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground data-checked:ring-primary"),O=r(i,"border-border bg-popover text-popover-foreground shadow-md"),V=r(j$1,"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10"),W=r(k,"focus:bg-accent focus:text-accent-foreground"),q=r(l,"focus:bg-accent focus:text-accent-foreground"),J=r(m,"text-muted-foreground"),Q=r(n,"bg-border"),X=r(p,"border-border bg-popover text-popover-foreground shadow-md"),Y=r(o,"focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground"),Z=r(q$1,"rounded-2xl border-border/60 bg-background/70"),$=r(u,"text-muted-foreground"),j=r(s,"[&[data-variant=icon]]:bg-muted [&[data-variant=icon]]:text-foreground"),rr=r(z$1,"rounded-md border-input bg-card text-foreground placeholder:text-muted-foreground"),er=r(w,"rounded-md border-input bg-card text-foreground"),tr=r(y,"text-muted-foreground"),or=r(x,"bg-transparent"),ar=r(H,"[&>[data-slot=scroll-area-thumb]]:bg-border"),nr=r(I,"rounded-md border-input bg-card text-foreground"),dr=r(J$1,"border-border bg-popover text-popover-foreground shadow-md"),ir=r(L,"focus:bg-accent focus:text-accent-foreground"),cr=r(K$1,"text-muted-foreground"),ur=r(M,"bg-border"),pr=r(b,"bg-border"),br=r(N$1,"bg-muted"),sr=r(R,"border-border bg-muted/50"),gr=r(T,"text-foreground"),mr=r(W$1,"bg-foreground text-background ring-1 ring-foreground/10 [&>svg]:bg-foreground [&>svg]:fill-foreground"),xr={...X$1,rootClassName:"dtp-shadcn",classNames:{card:"hover:bg-muted/50 data-[state=selected]:bg-primary/10",cardGrid:"bg-transparent",cardItem:"min-w-0",cardOverlay:"from-background/95 via-background/85 to-transparent",cardScrollArea:"bg-transparent",cardSelected:"bg-primary/10 ring-primary",cardUnselected:"border-border",cardViewport:"bg-transparent",cellBorder:"border-border/40",columnGroupHeader:"bg-muted/50 font-semibold",dragActive:"rounded-md border-dashed border-primary",emptyState:"border-border/60 bg-background/70",footer:"border-border bg-card",headerSortIcon:"text-muted-foreground",mutedText:"text-muted-foreground",paginationSelectTrigger:"border-input bg-card",paginationTotal:"text-muted-foreground",pinnedColumn:"border-border",pinnedUtilityColumn:"bg-card",resizeHandle:"after:bg-border hover:after:bg-primary",resizeHandleActive:"after:bg-primary",row:"hover:bg-muted/50 data-[state=selected]:!bg-primary/10",rowSelected:"!bg-primary/10",tableContainer:"border-border bg-card text-card-foreground",tableStickyHeader:"sticky top-0 z-30 bg-card/95 backdrop-blur [&_th]:border-border [&_th]:bg-card/95",toolbarCompactIconButton:"size-7",toolbarIconButton:"text-muted-foreground hover:text-foreground",toolbarInputButton:"border-input bg-card"},Button:U,Card:N,CardDescription:z,CardFooter:K,Checkbox:_,DropdownMenuCheckboxItem:W,DropdownMenuContent:O,DropdownMenuItem:V,DropdownMenuLabel:J,DropdownMenuRadioItem:q,DropdownMenuSeparator:Q,DropdownMenuSubContent:X,DropdownMenuSubTrigger:Y,Empty:Z,EmptyDescription:$,EmptyMedia:j,Input:rr,InputGroup:er,InputGroupAddon:tr,InputGroupInput:or,ScrollBar:ar,SelectContent:dr,SelectItem:ir,SelectLabel:cr,SelectSeparator:ur,SelectTrigger:nr,Separator:pr,Skeleton:br,TableFooter:sr,TableHead:gr,TooltipContent:mr};export{xr as a};//# sourceMappingURL=chunk-ARW55TNZ.js.map -//# sourceMappingURL=chunk-ARW55TNZ.js.map \ No newline at end of file +import {X as X$1,a as a$1,c,e,g,h,i,j as j$1,k,l,m,n,p,o,q as q$1,u,s,z as z$1,w,y,x,H,I,J as J$1,L,K as K$1,M,b,N as N$1,R,T,W as W$1}from'./chunk-LDAX7PX5.js';import {a}from'./chunk-GSCYQ624.js';import'react';import {jsx}from'react/jsx-runtime';function r(H,L){return function({className:A,...R}){return jsx(H,{className:a(L,A),...R})}}var U=r(a$1,"rounded-md text-foreground data-[variant=default]:border-primary data-[variant=default]:bg-primary data-[variant=default]:text-primary-foreground data-[variant=outline]:border-input data-[variant=outline]:bg-card data-[variant=outline]:hover:bg-accent data-[variant=outline]:hover:text-accent-foreground data-[variant=secondary]:border-secondary data-[variant=secondary]:bg-secondary data-[variant=secondary]:text-secondary-foreground data-[variant=ghost]:border-transparent data-[variant=ghost]:bg-transparent data-[variant=ghost]:hover:bg-accent data-[variant=ghost]:hover:text-accent-foreground data-[variant=destructive]:border-destructive data-[variant=destructive]:bg-destructive data-[variant=destructive]:text-destructive-foreground data-[variant=link]:border-transparent data-[variant=link]:bg-transparent"),N=r(c,"rounded-xl border-border bg-card text-card-foreground shadow-sm ring-0"),z=r(e,"text-muted-foreground"),K=r(g,"border-t border-border/60 bg-muted/50"),_=r(h,"border-input bg-card ring-ring/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground data-checked:ring-primary"),O=r(i,"border-border bg-popover text-popover-foreground shadow-md"),V=r(j$1,"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10"),W=r(k,"focus:bg-accent focus:text-accent-foreground"),q=r(l,"focus:bg-accent focus:text-accent-foreground"),J=r(m,"text-muted-foreground"),Q=r(n,"bg-border"),X=r(p,"border-border bg-popover text-popover-foreground shadow-md"),Y=r(o,"focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground"),Z=r(q$1,"rounded-2xl border-border/60 bg-background/70"),$=r(u,"text-muted-foreground"),j=r(s,"[&[data-variant=icon]]:bg-muted [&[data-variant=icon]]:text-foreground"),rr=r(z$1,"rounded-md border-input bg-card text-foreground placeholder:text-muted-foreground"),er=r(w,"rounded-md border-input bg-card text-foreground"),tr=r(y,"text-muted-foreground"),or=r(x,"bg-transparent"),ar=r(H,"[&>[data-slot=scroll-area-thumb]]:bg-border"),nr=r(I,"rounded-md border-input bg-card text-foreground"),dr=r(J$1,"border-border bg-popover text-popover-foreground shadow-md"),ir=r(L,"focus:bg-accent focus:text-accent-foreground"),cr=r(K$1,"text-muted-foreground"),ur=r(M,"bg-border"),pr=r(b,"bg-border"),br=r(N$1,"bg-muted"),sr=r(R,"border-border bg-muted/50"),gr=r(T,"text-foreground"),mr=r(W$1,"bg-foreground text-background ring-1 ring-foreground/10 [&>svg]:bg-foreground [&>svg]:fill-foreground"),xr={...X$1,rootClassName:"dtp-shadcn",classNames:{card:"hover:bg-muted/50 data-[state=selected]:bg-primary/10",cardGrid:"bg-transparent",cardItem:"min-w-0",cardOverlay:"from-background/95 via-background/85 to-transparent",cardScrollArea:"bg-transparent",cardSelected:"bg-primary/10 ring-primary",cardUnselected:"border-border",cardViewport:"bg-transparent",cellBorder:"border-border/40",columnGroupHeader:"bg-muted/50 font-semibold",dragActive:"rounded-md border-dashed border-primary",emptyState:"border-border/60 bg-background/70",footer:"border-border bg-card",headerSortIcon:"text-muted-foreground",mutedText:"text-muted-foreground",paginationSelectTrigger:"border-input bg-card",paginationTotal:"text-muted-foreground",pinnedColumn:"border-border",pinnedUtilityColumn:"bg-card",resizeHandle:"after:bg-border hover:after:bg-primary",resizeHandleActive:"after:bg-primary",row:"hover:bg-muted/50 data-[state=selected]:!bg-primary/10",rowSelected:"!bg-primary/10",tableContainer:"border-border bg-card text-card-foreground",tableStickyHeader:"sticky top-0 z-30 bg-card/95 backdrop-blur [&_th]:border-border [&_th]:bg-card/95",toolbarCompactIconButton:"size-7",toolbarIconButton:"text-muted-foreground hover:text-foreground",toolbarInputButton:"border-input bg-card"},Button:U,Card:N,CardDescription:z,CardFooter:K,Checkbox:_,DropdownMenuCheckboxItem:W,DropdownMenuContent:O,DropdownMenuItem:V,DropdownMenuLabel:J,DropdownMenuRadioItem:q,DropdownMenuSeparator:Q,DropdownMenuSubContent:X,DropdownMenuSubTrigger:Y,Empty:Z,EmptyDescription:$,EmptyMedia:j,Input:rr,InputGroup:er,InputGroupAddon:tr,InputGroupInput:or,ScrollBar:ar,SelectContent:dr,SelectItem:ir,SelectLabel:cr,SelectSeparator:ur,SelectTrigger:nr,Separator:pr,Skeleton:br,TableFooter:sr,TableHead:gr,TooltipContent:mr};export{xr as a};//# sourceMappingURL=chunk-MYQZYDHU.js.map +//# sourceMappingURL=chunk-MYQZYDHU.js.map \ No newline at end of file diff --git a/dist/chunk-ARW55TNZ.js.map b/dist/chunk-MYQZYDHU.js.map similarity index 99% rename from dist/chunk-ARW55TNZ.js.map rename to dist/chunk-MYQZYDHU.js.map index 36fad75..1d13b71 100644 --- a/dist/chunk-ARW55TNZ.js.map +++ b/dist/chunk-MYQZYDHU.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/adapters/shadcn/index.tsx"],"names":["withClassName","Component","defaultClassName","className","props","jsx","cn","ShadcnButton","Button","ShadcnCard","Card","ShadcnCardDescription","CardDescription","ShadcnCardFooter","CardFooter","ShadcnCheckbox","Checkbox","ShadcnDropdownMenuContent","DropdownMenuContent","ShadcnDropdownMenuItem","DropdownMenuItem","ShadcnDropdownMenuCheckboxItem","DropdownMenuCheckboxItem","ShadcnDropdownMenuRadioItem","DropdownMenuRadioItem","ShadcnDropdownMenuLabel","DropdownMenuLabel","ShadcnDropdownMenuSeparator","DropdownMenuSeparator","ShadcnDropdownMenuSubContent","DropdownMenuSubContent","ShadcnDropdownMenuSubTrigger","DropdownMenuSubTrigger","ShadcnEmpty","Empty","ShadcnEmptyDescription","EmptyDescription","ShadcnEmptyMedia","EmptyMedia","ShadcnInput","Input","ShadcnInputGroup","InputGroup","ShadcnInputGroupAddon","InputGroupAddon","ShadcnInputGroupInput","InputGroupInput","ShadcnScrollBar","ScrollBar","ShadcnSelectTrigger","SelectTrigger","ShadcnSelectContent","SelectContent","ShadcnSelectItem","SelectItem","ShadcnSelectLabel","SelectLabel","ShadcnSelectSeparator","SelectSeparator","ShadcnSeparator","Separator","ShadcnSkeleton","Skeleton","ShadcnTableFooter","TableFooter","ShadcnTableHead","TableHead","ShadcnTooltipContent","TooltipContent","shadcnUiKit","primitiveUiKit"],"mappings":"uPAsCA,SAASA,CAAAA,CACPC,CAAAA,CACAC,CAAAA,CACA,CACA,OAAO,SAAiB,CAAE,SAAA,CAAAC,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAW,CACvD,OACEC,IAACJ,CAAAA,CAAA,CACC,SAAA,CAAWK,CAAAA,CAAGJ,EAAkBC,CAAS,CAAA,CACxC,GAAIC,CAAAA,CACP,CAEJ,CACF,CAEA,IAAMG,CAAAA,CAAeP,EACnBQ,GAAAA,CACA,gzBACF,CAAA,CACMC,CAAAA,CAAaT,EACjBU,CAAAA,CACA,wEACF,CAAA,CACMC,CAAAA,CAAwBX,EAC5BY,CAAAA,CACA,uBACF,CAAA,CACMC,CAAAA,CAAmBb,EACvBc,CAAAA,CACA,uCACF,CAAA,CACMC,CAAAA,CAAiBf,EACrBgB,CAAAA,CACA,sJACF,CAAA,CACMC,CAAAA,CAA4BjB,EAChCkB,CAAAA,CACA,4DACF,CAAA,CACMC,CAAAA,CAAyBnB,EAC7BoB,GAAAA,CACA,6IACF,CAAA,CACMC,CAAAA,CAAiCrB,EACrCsB,CAAAA,CACA,8CACF,CAAA,CACMC,CAAAA,CAA8BvB,EAClCwB,CAAAA,CACA,8CACF,CAAA,CACMC,CAAAA,CAA0BzB,EAC9B0B,CAAAA,CACA,uBACF,CAAA,CACMC,CAAAA,CAA8B3B,EAClC4B,CAAAA,CACA,WACF,CAAA,CACMC,CAAAA,CAA+B7B,EACnC8B,CAAAA,CACA,4DACF,CAAA,CACMC,CAAAA,CAA+B/B,EACnCgC,CAAAA,CACA,mGACF,CAAA,CACMC,CAAAA,CAAcjC,EAClBkC,GAAAA,CACA,+CACF,CAAA,CACMC,CAAAA,CAAyBnC,EAC7BoC,CAAAA,CACA,uBACF,CAAA,CACMC,CAAAA,CAAmBrC,EACvBsC,CAAAA,CACA,wEACF,CAAA,CACMC,EAAAA,CAAcvC,EAClBwC,GAAAA,CACA,mFACF,CAAA,CACMC,EAAAA,CAAmBzC,EACvB0C,CAAAA,CACA,iDACF,CAAA,CACMC,EAAAA,CAAwB3C,EAC5B4C,CAAAA,CACA,uBACF,CAAA,CACMC,EAAAA,CAAwB7C,EAC5B8C,CAAAA,CACA,gBACF,CAAA,CACMC,EAAAA,CAAkB/C,EACtBgD,CAAAA,CACA,6CACF,CAAA,CACMC,EAAAA,CAAsBjD,EAC1BkD,CAAAA,CACA,iDACF,CAAA,CACMC,EAAAA,CAAsBnD,EAC1BoD,GAAAA,CACA,4DACF,CAAA,CACMC,EAAAA,CAAmBrD,EACvBsD,CAAAA,CACA,8CACF,CAAA,CACMC,EAAAA,CAAoBvD,EACxBwD,GAAAA,CACA,uBACF,CAAA,CACMC,EAAAA,CAAwBzD,CAAAA,CAC5B0D,CAAAA,CACA,WACF,CAAA,CACMC,GAAkB3D,CAAAA,CAAc4D,CAAAA,CAAoB,WAAW,CAAA,CAC/DC,GAAiB7D,CAAAA,CAAc8D,GAAAA,CAAmB,UAAU,CAAA,CAC5DC,GAAoB/D,CAAAA,CACxBgE,CAAAA,CACA,2BACF,CAAA,CACMC,GAAkBjE,CAAAA,CACtBkE,CAAAA,CACA,iBACF,CAAA,CACMC,GAAuBnE,CAAAA,CAC3BoE,GAAAA,CACA,uGACF,CAAA,CAEaC,GAA8B,CACzC,GAAGC,GAAAA,CACH,aAAA,CAAe,aACf,UAAA,CAAY,CACV,IAAA,CAAM,uDAAA,CACN,SAAU,gBAAA,CACV,QAAA,CAAU,SAAA,CACV,WAAA,CAAa,sDACb,cAAA,CAAgB,gBAAA,CAChB,YAAA,CAAc,4BAAA,CACd,eAAgB,eAAA,CAChB,YAAA,CAAc,gBAAA,CACd,UAAA,CAAY,mBACZ,iBAAA,CAAmB,2BAAA,CACnB,UAAA,CAAY,yCAAA,CACZ,WAAY,mCAAA,CACZ,MAAA,CAAQ,uBAAA,CACR,cAAA,CAAgB,wBAChB,SAAA,CAAW,uBAAA,CACX,uBAAA,CAAyB,sBAAA,CACzB,gBAAiB,uBAAA,CACjB,YAAA,CAAc,eAAA,CACd,mBAAA,CAAqB,UACrB,YAAA,CAAc,wCAAA,CACd,kBAAA,CAAoB,kBAAA,CACpB,IAAK,wDAAA,CACL,WAAA,CAAa,gBAAA,CACb,cAAA,CAAgB,6CAChB,iBAAA,CACE,mFAAA,CACF,wBAAA,CAA0B,QAAA,CAC1B,kBAAmB,6CAAA,CACnB,kBAAA,CAAoB,sBACtB,CAAA,CACA,OAAQ/D,CAAAA,CACR,IAAA,CAAME,CAAAA,CACN,eAAA,CAAiBE,EACjB,UAAA,CAAYE,CAAAA,CACZ,QAAA,CAAUE,CAAAA,CACV,yBAA0BM,CAAAA,CAC1B,mBAAA,CAAqBJ,CAAAA,CACrB,gBAAA,CAAkBE,EAClB,iBAAA,CAAmBM,CAAAA,CACnB,qBAAA,CAAuBF,CAAAA,CACvB,sBAAuBI,CAAAA,CACvB,sBAAA,CAAwBE,CAAAA,CACxB,sBAAA,CAAwBE,EACxB,KAAA,CAAOE,CAAAA,CACP,gBAAA,CAAkBE,CAAAA,CAClB,WAAYE,CAAAA,CACZ,KAAA,CAAOE,EAAAA,CACP,UAAA,CAAYE,GACZ,eAAA,CAAiBE,EAAAA,CACjB,eAAA,CAAiBE,EAAAA,CACjB,UAAWE,EAAAA,CACX,aAAA,CAAeI,EAAAA,CACf,UAAA,CAAYE,GACZ,WAAA,CAAaE,EAAAA,CACb,eAAA,CAAiBE,EAAAA,CACjB,cAAeR,EAAAA,CACf,SAAA,CAAWU,EAAAA,CACX,QAAA,CAAUE,GACV,WAAA,CAAaE,EAAAA,CACb,SAAA,CAAWE,EAAAA,CACX,eAAgBE,EAClB","file":"chunk-ARW55TNZ.js","sourcesContent":["import * as React from \"react\";\nimport type { DataTableUiKit } from \"../../core/ui-kit\";\nimport {\n Button as PrimitiveButton,\n Card as PrimitiveCard,\n CardDescription as PrimitiveCardDescription,\n CardFooter as PrimitiveCardFooter,\n Checkbox as PrimitiveCheckbox,\n DropdownMenuCheckboxItem as PrimitiveDropdownMenuCheckboxItem,\n DropdownMenuContent as PrimitiveDropdownMenuContent,\n DropdownMenuItem as PrimitiveDropdownMenuItem,\n DropdownMenuLabel as PrimitiveDropdownMenuLabel,\n DropdownMenuRadioItem as PrimitiveDropdownMenuRadioItem,\n DropdownMenuSeparator as PrimitiveDropdownMenuSeparator,\n DropdownMenuSubContent as PrimitiveDropdownMenuSubContent,\n DropdownMenuSubTrigger as PrimitiveDropdownMenuSubTrigger,\n Empty as PrimitiveEmpty,\n EmptyDescription as PrimitiveEmptyDescription,\n EmptyMedia as PrimitiveEmptyMedia,\n Input as PrimitiveInput,\n InputGroup as PrimitiveInputGroup,\n InputGroupAddon as PrimitiveInputGroupAddon,\n InputGroupInput as PrimitiveInputGroupInput,\n ScrollBar as PrimitiveScrollBar,\n SelectContent as PrimitiveSelectContent,\n SelectItem as PrimitiveSelectItem,\n SelectLabel as PrimitiveSelectLabel,\n SelectSeparator as PrimitiveSelectSeparator,\n SelectTrigger as PrimitiveSelectTrigger,\n Separator as PrimitiveSeparator,\n Skeleton as PrimitiveSkeleton,\n TableFooter as PrimitiveTableFooter,\n TableHead as PrimitiveTableHead,\n TooltipContent as PrimitiveTooltipContent,\n primitiveUiKit,\n} from \"../../core/primitive-ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nfunction withClassName(\n Component: React.ComponentType,\n defaultClassName: string,\n) {\n return function Wrapped({ className, ...props }: TProps) {\n return (\n \n );\n };\n}\n\nconst ShadcnButton = withClassName(\n PrimitiveButton,\n \"rounded-md text-foreground data-[variant=default]:border-primary data-[variant=default]:bg-primary data-[variant=default]:text-primary-foreground data-[variant=outline]:border-input data-[variant=outline]:bg-card data-[variant=outline]:hover:bg-accent data-[variant=outline]:hover:text-accent-foreground data-[variant=secondary]:border-secondary data-[variant=secondary]:bg-secondary data-[variant=secondary]:text-secondary-foreground data-[variant=ghost]:border-transparent data-[variant=ghost]:bg-transparent data-[variant=ghost]:hover:bg-accent data-[variant=ghost]:hover:text-accent-foreground data-[variant=destructive]:border-destructive data-[variant=destructive]:bg-destructive data-[variant=destructive]:text-destructive-foreground data-[variant=link]:border-transparent data-[variant=link]:bg-transparent\",\n);\nconst ShadcnCard = withClassName(\n PrimitiveCard,\n \"rounded-xl border-border bg-card text-card-foreground shadow-sm ring-0\",\n);\nconst ShadcnCardDescription = withClassName(\n PrimitiveCardDescription,\n \"text-muted-foreground\",\n);\nconst ShadcnCardFooter = withClassName(\n PrimitiveCardFooter,\n \"border-t border-border/60 bg-muted/50\",\n);\nconst ShadcnCheckbox = withClassName(\n PrimitiveCheckbox,\n \"border-input bg-card ring-ring/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground data-checked:ring-primary\",\n);\nconst ShadcnDropdownMenuContent = withClassName(\n PrimitiveDropdownMenuContent,\n \"border-border bg-popover text-popover-foreground shadow-md\",\n);\nconst ShadcnDropdownMenuItem = withClassName(\n PrimitiveDropdownMenuItem,\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10\",\n);\nconst ShadcnDropdownMenuCheckboxItem = withClassName(\n PrimitiveDropdownMenuCheckboxItem,\n \"focus:bg-accent focus:text-accent-foreground\",\n);\nconst ShadcnDropdownMenuRadioItem = withClassName(\n PrimitiveDropdownMenuRadioItem,\n \"focus:bg-accent focus:text-accent-foreground\",\n);\nconst ShadcnDropdownMenuLabel = withClassName(\n PrimitiveDropdownMenuLabel,\n \"text-muted-foreground\",\n);\nconst ShadcnDropdownMenuSeparator = withClassName(\n PrimitiveDropdownMenuSeparator,\n \"bg-border\",\n);\nconst ShadcnDropdownMenuSubContent = withClassName(\n PrimitiveDropdownMenuSubContent,\n \"border-border bg-popover text-popover-foreground shadow-md\",\n);\nconst ShadcnDropdownMenuSubTrigger = withClassName(\n PrimitiveDropdownMenuSubTrigger,\n \"focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground\",\n);\nconst ShadcnEmpty = withClassName(\n PrimitiveEmpty,\n \"rounded-2xl border-border/60 bg-background/70\",\n);\nconst ShadcnEmptyDescription = withClassName(\n PrimitiveEmptyDescription,\n \"text-muted-foreground\",\n);\nconst ShadcnEmptyMedia = withClassName(\n PrimitiveEmptyMedia,\n \"[&[data-variant=icon]]:bg-muted [&[data-variant=icon]]:text-foreground\",\n);\nconst ShadcnInput = withClassName(\n PrimitiveInput,\n \"rounded-md border-input bg-card text-foreground placeholder:text-muted-foreground\",\n);\nconst ShadcnInputGroup = withClassName(\n PrimitiveInputGroup,\n \"rounded-md border-input bg-card text-foreground\",\n);\nconst ShadcnInputGroupAddon = withClassName(\n PrimitiveInputGroupAddon,\n \"text-muted-foreground\",\n);\nconst ShadcnInputGroupInput = withClassName(\n PrimitiveInputGroupInput,\n \"bg-transparent\",\n);\nconst ShadcnScrollBar = withClassName(\n PrimitiveScrollBar,\n \"[&>[data-slot=scroll-area-thumb]]:bg-border\",\n);\nconst ShadcnSelectTrigger = withClassName(\n PrimitiveSelectTrigger,\n \"rounded-md border-input bg-card text-foreground\",\n);\nconst ShadcnSelectContent = withClassName(\n PrimitiveSelectContent,\n \"border-border bg-popover text-popover-foreground shadow-md\",\n);\nconst ShadcnSelectItem = withClassName(\n PrimitiveSelectItem,\n \"focus:bg-accent focus:text-accent-foreground\",\n);\nconst ShadcnSelectLabel = withClassName(\n PrimitiveSelectLabel,\n \"text-muted-foreground\",\n);\nconst ShadcnSelectSeparator = withClassName(\n PrimitiveSelectSeparator,\n \"bg-border\",\n);\nconst ShadcnSeparator = withClassName(PrimitiveSeparator, \"bg-border\");\nconst ShadcnSkeleton = withClassName(PrimitiveSkeleton, \"bg-muted\");\nconst ShadcnTableFooter = withClassName(\n PrimitiveTableFooter,\n \"border-border bg-muted/50\",\n);\nconst ShadcnTableHead = withClassName(\n PrimitiveTableHead,\n \"text-foreground\",\n);\nconst ShadcnTooltipContent = withClassName(\n PrimitiveTooltipContent,\n \"bg-foreground text-background ring-1 ring-foreground/10 [&>svg]:bg-foreground [&>svg]:fill-foreground\",\n);\n\nexport const shadcnUiKit: DataTableUiKit = {\n ...primitiveUiKit,\n rootClassName: \"dtp-shadcn\",\n classNames: {\n card: \"hover:bg-muted/50 data-[state=selected]:bg-primary/10\",\n cardGrid: \"bg-transparent\",\n cardItem: \"min-w-0\",\n cardOverlay: \"from-background/95 via-background/85 to-transparent\",\n cardScrollArea: \"bg-transparent\",\n cardSelected: \"bg-primary/10 ring-primary\",\n cardUnselected: \"border-border\",\n cardViewport: \"bg-transparent\",\n cellBorder: \"border-border/40\",\n columnGroupHeader: \"bg-muted/50 font-semibold\",\n dragActive: \"rounded-md border-dashed border-primary\",\n emptyState: \"border-border/60 bg-background/70\",\n footer: \"border-border bg-card\",\n headerSortIcon: \"text-muted-foreground\",\n mutedText: \"text-muted-foreground\",\n paginationSelectTrigger: \"border-input bg-card\",\n paginationTotal: \"text-muted-foreground\",\n pinnedColumn: \"border-border\",\n pinnedUtilityColumn: \"bg-card\",\n resizeHandle: \"after:bg-border hover:after:bg-primary\",\n resizeHandleActive: \"after:bg-primary\",\n row: \"hover:bg-muted/50 data-[state=selected]:!bg-primary/10\",\n rowSelected: \"!bg-primary/10\",\n tableContainer: \"border-border bg-card text-card-foreground\",\n tableStickyHeader:\n \"sticky top-0 z-30 bg-card/95 backdrop-blur [&_th]:border-border [&_th]:bg-card/95\",\n toolbarCompactIconButton: \"size-7\",\n toolbarIconButton: \"text-muted-foreground hover:text-foreground\",\n toolbarInputButton: \"border-input bg-card\",\n },\n Button: ShadcnButton,\n Card: ShadcnCard,\n CardDescription: ShadcnCardDescription,\n CardFooter: ShadcnCardFooter,\n Checkbox: ShadcnCheckbox,\n DropdownMenuCheckboxItem: ShadcnDropdownMenuCheckboxItem,\n DropdownMenuContent: ShadcnDropdownMenuContent,\n DropdownMenuItem: ShadcnDropdownMenuItem,\n DropdownMenuLabel: ShadcnDropdownMenuLabel,\n DropdownMenuRadioItem: ShadcnDropdownMenuRadioItem,\n DropdownMenuSeparator: ShadcnDropdownMenuSeparator,\n DropdownMenuSubContent: ShadcnDropdownMenuSubContent,\n DropdownMenuSubTrigger: ShadcnDropdownMenuSubTrigger,\n Empty: ShadcnEmpty,\n EmptyDescription: ShadcnEmptyDescription,\n EmptyMedia: ShadcnEmptyMedia,\n Input: ShadcnInput,\n InputGroup: ShadcnInputGroup,\n InputGroupAddon: ShadcnInputGroupAddon,\n InputGroupInput: ShadcnInputGroupInput,\n ScrollBar: ShadcnScrollBar,\n SelectContent: ShadcnSelectContent,\n SelectItem: ShadcnSelectItem,\n SelectLabel: ShadcnSelectLabel,\n SelectSeparator: ShadcnSelectSeparator,\n SelectTrigger: ShadcnSelectTrigger,\n Separator: ShadcnSeparator,\n Skeleton: ShadcnSkeleton,\n TableFooter: ShadcnTableFooter,\n TableHead: ShadcnTableHead,\n TooltipContent: ShadcnTooltipContent,\n};\n"]} \ No newline at end of file +{"version":3,"sources":["../src/adapters/shadcn/index.tsx"],"names":["withClassName","Component","defaultClassName","className","props","jsx","cn","ShadcnButton","Button","ShadcnCard","Card","ShadcnCardDescription","CardDescription","ShadcnCardFooter","CardFooter","ShadcnCheckbox","Checkbox","ShadcnDropdownMenuContent","DropdownMenuContent","ShadcnDropdownMenuItem","DropdownMenuItem","ShadcnDropdownMenuCheckboxItem","DropdownMenuCheckboxItem","ShadcnDropdownMenuRadioItem","DropdownMenuRadioItem","ShadcnDropdownMenuLabel","DropdownMenuLabel","ShadcnDropdownMenuSeparator","DropdownMenuSeparator","ShadcnDropdownMenuSubContent","DropdownMenuSubContent","ShadcnDropdownMenuSubTrigger","DropdownMenuSubTrigger","ShadcnEmpty","Empty","ShadcnEmptyDescription","EmptyDescription","ShadcnEmptyMedia","EmptyMedia","ShadcnInput","Input","ShadcnInputGroup","InputGroup","ShadcnInputGroupAddon","InputGroupAddon","ShadcnInputGroupInput","InputGroupInput","ShadcnScrollBar","ScrollBar","ShadcnSelectTrigger","SelectTrigger","ShadcnSelectContent","SelectContent","ShadcnSelectItem","SelectItem","ShadcnSelectLabel","SelectLabel","ShadcnSelectSeparator","SelectSeparator","ShadcnSeparator","Separator","ShadcnSkeleton","Skeleton","ShadcnTableFooter","TableFooter","ShadcnTableHead","TableHead","ShadcnTooltipContent","TooltipContent","shadcnUiKit","primitiveUiKit"],"mappings":"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","file":"chunk-MYQZYDHU.js","sourcesContent":["import * as React from \"react\";\nimport type { DataTableUiKit } from \"../../core/ui-kit\";\nimport {\n Button as PrimitiveButton,\n Card as PrimitiveCard,\n CardDescription as PrimitiveCardDescription,\n CardFooter as PrimitiveCardFooter,\n Checkbox as PrimitiveCheckbox,\n DropdownMenuCheckboxItem as PrimitiveDropdownMenuCheckboxItem,\n DropdownMenuContent as PrimitiveDropdownMenuContent,\n DropdownMenuItem as PrimitiveDropdownMenuItem,\n DropdownMenuLabel as PrimitiveDropdownMenuLabel,\n DropdownMenuRadioItem as PrimitiveDropdownMenuRadioItem,\n DropdownMenuSeparator as PrimitiveDropdownMenuSeparator,\n DropdownMenuSubContent as PrimitiveDropdownMenuSubContent,\n DropdownMenuSubTrigger as PrimitiveDropdownMenuSubTrigger,\n Empty as PrimitiveEmpty,\n EmptyDescription as PrimitiveEmptyDescription,\n EmptyMedia as PrimitiveEmptyMedia,\n Input as PrimitiveInput,\n InputGroup as PrimitiveInputGroup,\n InputGroupAddon as PrimitiveInputGroupAddon,\n InputGroupInput as PrimitiveInputGroupInput,\n ScrollBar as PrimitiveScrollBar,\n SelectContent as PrimitiveSelectContent,\n SelectItem as PrimitiveSelectItem,\n SelectLabel as PrimitiveSelectLabel,\n SelectSeparator as PrimitiveSelectSeparator,\n SelectTrigger as PrimitiveSelectTrigger,\n Separator as PrimitiveSeparator,\n Skeleton as PrimitiveSkeleton,\n TableFooter as PrimitiveTableFooter,\n TableHead as PrimitiveTableHead,\n TooltipContent as PrimitiveTooltipContent,\n primitiveUiKit,\n} from \"../../core/primitive-ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nfunction withClassName(\n Component: React.ComponentType,\n defaultClassName: string,\n) {\n return function Wrapped({ className, ...props }: TProps) {\n return (\n \n );\n };\n}\n\nconst ShadcnButton = withClassName(\n PrimitiveButton,\n \"rounded-md text-foreground data-[variant=default]:border-primary data-[variant=default]:bg-primary data-[variant=default]:text-primary-foreground data-[variant=outline]:border-input data-[variant=outline]:bg-card data-[variant=outline]:hover:bg-accent data-[variant=outline]:hover:text-accent-foreground data-[variant=secondary]:border-secondary data-[variant=secondary]:bg-secondary data-[variant=secondary]:text-secondary-foreground data-[variant=ghost]:border-transparent data-[variant=ghost]:bg-transparent data-[variant=ghost]:hover:bg-accent data-[variant=ghost]:hover:text-accent-foreground data-[variant=destructive]:border-destructive data-[variant=destructive]:bg-destructive data-[variant=destructive]:text-destructive-foreground data-[variant=link]:border-transparent data-[variant=link]:bg-transparent\",\n);\nconst ShadcnCard = withClassName(\n PrimitiveCard,\n \"rounded-xl border-border bg-card text-card-foreground shadow-sm ring-0\",\n);\nconst ShadcnCardDescription = withClassName(\n PrimitiveCardDescription,\n \"text-muted-foreground\",\n);\nconst ShadcnCardFooter = withClassName(\n PrimitiveCardFooter,\n \"border-t border-border/60 bg-muted/50\",\n);\nconst ShadcnCheckbox = withClassName(\n PrimitiveCheckbox,\n \"border-input bg-card ring-ring/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground data-checked:ring-primary\",\n);\nconst ShadcnDropdownMenuContent = withClassName(\n PrimitiveDropdownMenuContent,\n \"border-border bg-popover text-popover-foreground shadow-md\",\n);\nconst ShadcnDropdownMenuItem = withClassName(\n PrimitiveDropdownMenuItem,\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10\",\n);\nconst ShadcnDropdownMenuCheckboxItem = withClassName(\n PrimitiveDropdownMenuCheckboxItem,\n \"focus:bg-accent focus:text-accent-foreground\",\n);\nconst ShadcnDropdownMenuRadioItem = withClassName(\n PrimitiveDropdownMenuRadioItem,\n \"focus:bg-accent focus:text-accent-foreground\",\n);\nconst ShadcnDropdownMenuLabel = withClassName(\n PrimitiveDropdownMenuLabel,\n \"text-muted-foreground\",\n);\nconst ShadcnDropdownMenuSeparator = withClassName(\n PrimitiveDropdownMenuSeparator,\n \"bg-border\",\n);\nconst ShadcnDropdownMenuSubContent = withClassName(\n PrimitiveDropdownMenuSubContent,\n \"border-border bg-popover text-popover-foreground shadow-md\",\n);\nconst ShadcnDropdownMenuSubTrigger = withClassName(\n PrimitiveDropdownMenuSubTrigger,\n \"focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground\",\n);\nconst ShadcnEmpty = withClassName(\n PrimitiveEmpty,\n \"rounded-2xl border-border/60 bg-background/70\",\n);\nconst ShadcnEmptyDescription = withClassName(\n PrimitiveEmptyDescription,\n \"text-muted-foreground\",\n);\nconst ShadcnEmptyMedia = withClassName(\n PrimitiveEmptyMedia,\n \"[&[data-variant=icon]]:bg-muted [&[data-variant=icon]]:text-foreground\",\n);\nconst ShadcnInput = withClassName(\n PrimitiveInput,\n \"rounded-md border-input bg-card text-foreground placeholder:text-muted-foreground\",\n);\nconst ShadcnInputGroup = withClassName(\n PrimitiveInputGroup,\n \"rounded-md border-input bg-card text-foreground\",\n);\nconst ShadcnInputGroupAddon = withClassName(\n PrimitiveInputGroupAddon,\n \"text-muted-foreground\",\n);\nconst ShadcnInputGroupInput = withClassName(\n PrimitiveInputGroupInput,\n \"bg-transparent\",\n);\nconst ShadcnScrollBar = withClassName(\n PrimitiveScrollBar,\n \"[&>[data-slot=scroll-area-thumb]]:bg-border\",\n);\nconst ShadcnSelectTrigger = withClassName(\n PrimitiveSelectTrigger,\n \"rounded-md border-input bg-card text-foreground\",\n);\nconst ShadcnSelectContent = withClassName(\n PrimitiveSelectContent,\n \"border-border bg-popover text-popover-foreground shadow-md\",\n);\nconst ShadcnSelectItem = withClassName(\n PrimitiveSelectItem,\n \"focus:bg-accent focus:text-accent-foreground\",\n);\nconst ShadcnSelectLabel = withClassName(\n PrimitiveSelectLabel,\n \"text-muted-foreground\",\n);\nconst ShadcnSelectSeparator = withClassName(\n PrimitiveSelectSeparator,\n \"bg-border\",\n);\nconst ShadcnSeparator = withClassName(PrimitiveSeparator, \"bg-border\");\nconst ShadcnSkeleton = withClassName(PrimitiveSkeleton, \"bg-muted\");\nconst ShadcnTableFooter = withClassName(\n PrimitiveTableFooter,\n \"border-border bg-muted/50\",\n);\nconst ShadcnTableHead = withClassName(\n PrimitiveTableHead,\n \"text-foreground\",\n);\nconst ShadcnTooltipContent = withClassName(\n PrimitiveTooltipContent,\n \"bg-foreground text-background ring-1 ring-foreground/10 [&>svg]:bg-foreground [&>svg]:fill-foreground\",\n);\n\nexport const shadcnUiKit: DataTableUiKit = {\n ...primitiveUiKit,\n rootClassName: \"dtp-shadcn\",\n classNames: {\n card: \"hover:bg-muted/50 data-[state=selected]:bg-primary/10\",\n cardGrid: \"bg-transparent\",\n cardItem: \"min-w-0\",\n cardOverlay: \"from-background/95 via-background/85 to-transparent\",\n cardScrollArea: \"bg-transparent\",\n cardSelected: \"bg-primary/10 ring-primary\",\n cardUnselected: \"border-border\",\n cardViewport: \"bg-transparent\",\n cellBorder: \"border-border/40\",\n columnGroupHeader: \"bg-muted/50 font-semibold\",\n dragActive: \"rounded-md border-dashed border-primary\",\n emptyState: \"border-border/60 bg-background/70\",\n footer: \"border-border bg-card\",\n headerSortIcon: \"text-muted-foreground\",\n mutedText: \"text-muted-foreground\",\n paginationSelectTrigger: \"border-input bg-card\",\n paginationTotal: \"text-muted-foreground\",\n pinnedColumn: \"border-border\",\n pinnedUtilityColumn: \"bg-card\",\n resizeHandle: \"after:bg-border hover:after:bg-primary\",\n resizeHandleActive: \"after:bg-primary\",\n row: \"hover:bg-muted/50 data-[state=selected]:!bg-primary/10\",\n rowSelected: \"!bg-primary/10\",\n tableContainer: \"border-border bg-card text-card-foreground\",\n tableStickyHeader:\n \"sticky top-0 z-30 bg-card/95 backdrop-blur [&_th]:border-border [&_th]:bg-card/95\",\n toolbarCompactIconButton: \"size-7\",\n toolbarIconButton: \"text-muted-foreground hover:text-foreground\",\n toolbarInputButton: \"border-input bg-card\",\n },\n Button: ShadcnButton,\n Card: ShadcnCard,\n CardDescription: ShadcnCardDescription,\n CardFooter: ShadcnCardFooter,\n Checkbox: ShadcnCheckbox,\n DropdownMenuCheckboxItem: ShadcnDropdownMenuCheckboxItem,\n DropdownMenuContent: ShadcnDropdownMenuContent,\n DropdownMenuItem: ShadcnDropdownMenuItem,\n DropdownMenuLabel: ShadcnDropdownMenuLabel,\n DropdownMenuRadioItem: ShadcnDropdownMenuRadioItem,\n DropdownMenuSeparator: ShadcnDropdownMenuSeparator,\n DropdownMenuSubContent: ShadcnDropdownMenuSubContent,\n DropdownMenuSubTrigger: ShadcnDropdownMenuSubTrigger,\n Empty: ShadcnEmpty,\n EmptyDescription: ShadcnEmptyDescription,\n EmptyMedia: ShadcnEmptyMedia,\n Input: ShadcnInput,\n InputGroup: ShadcnInputGroup,\n InputGroupAddon: ShadcnInputGroupAddon,\n InputGroupInput: ShadcnInputGroupInput,\n ScrollBar: ShadcnScrollBar,\n SelectContent: ShadcnSelectContent,\n SelectItem: ShadcnSelectItem,\n SelectLabel: ShadcnSelectLabel,\n SelectSeparator: ShadcnSelectSeparator,\n SelectTrigger: ShadcnSelectTrigger,\n Separator: ShadcnSeparator,\n Skeleton: ShadcnSkeleton,\n TableFooter: ShadcnTableFooter,\n TableHead: ShadcnTableHead,\n TooltipContent: ShadcnTooltipContent,\n};\n"]} \ No newline at end of file diff --git a/dist/chunk-TUHIU4D7.js b/dist/chunk-UKIIMIBW.js similarity index 77% rename from dist/chunk-TUHIU4D7.js rename to dist/chunk-UKIIMIBW.js index 71d2270..7d9cd07 100644 --- a/dist/chunk-TUHIU4D7.js +++ b/dist/chunk-UKIIMIBW.js @@ -1,2 +1,2 @@ -import {S}from'./chunk-32UNH3MQ.js';import*as b from'react';import {useVirtualizer}from'@tanstack/react-virtual';import {jsx}from'react/jsx-runtime';function z(i){let{renderedRows:a,shouldRenderInitialLoading:T,tableScrollElement:s,viewportHeight:g=0,virtualization:n}=i,o=typeof n=="object"?n:void 0,d=!T&&(n===true||o?.enabled===true),e=d&&!!s&&g>0,p=b.useCallback(t=>a[t]?.id??t,[a]),u=useVirtualizer({count:d?a.length:0,enabled:e,estimateSize:()=>o?.estimateRowHeight??48,getItemKey:p,getScrollElement:()=>s??null,overscan:o?.overscan??8}),r=e?u.getVirtualItems():[],f=e?r.flatMap(t=>{let l=a[t.index];return l?[{row:l,rowIndex:t.index}]:[]}):a.slice(0,Math.max(1,Math.floor(o?.fallbackRowCount??20))).map((t,l)=>({row:t,rowIndex:l})),c=e?r[0]?.start??0:0,w=e?Math.max(0,u.getTotalSize()-(r.at(-1)?.end??c)):0;return jsx(S,{...i,rowsToRender:f,virtualPaddingBottom:w,virtualPaddingTop:c})}export{z as a};//# sourceMappingURL=chunk-TUHIU4D7.js.map -//# sourceMappingURL=chunk-TUHIU4D7.js.map \ No newline at end of file +import {V}from'./chunk-BYTOUBQ7.js';import*as b from'react';import {useVirtualizer}from'@tanstack/react-virtual';import {jsx}from'react/jsx-runtime';function z(i){let{renderedRows:a,shouldRenderInitialLoading:T,tableScrollElement:s,viewportHeight:g=0,virtualization:n}=i,o=typeof n=="object"?n:void 0,d=!T&&(n===true||o?.enabled===true),e=d&&!!s&&g>0,p=b.useCallback(t=>a[t]?.id??t,[a]),u=useVirtualizer({count:d?a.length:0,enabled:e,estimateSize:()=>o?.estimateRowHeight??48,getItemKey:p,getScrollElement:()=>s??null,overscan:o?.overscan??8}),r=e?u.getVirtualItems():[],f=e?r.flatMap(t=>{let l=a[t.index];return l?[{row:l,rowIndex:t.index}]:[]}):a.slice(0,Math.max(1,Math.floor(o?.fallbackRowCount??20))).map((t,l)=>({row:t,rowIndex:l})),c=e?r[0]?.start??0:0,w=e?Math.max(0,u.getTotalSize()-(r.at(-1)?.end??c)):0;return jsx(V,{...i,rowsToRender:f,virtualPaddingBottom:w,virtualPaddingTop:c})}export{z as a};//# sourceMappingURL=chunk-UKIIMIBW.js.map +//# sourceMappingURL=chunk-UKIIMIBW.js.map \ No newline at end of file diff --git a/dist/chunk-TUHIU4D7.js.map b/dist/chunk-UKIIMIBW.js.map similarity index 98% rename from dist/chunk-TUHIU4D7.js.map rename to dist/chunk-UKIIMIBW.js.map index 7553f9b..4bcf572 100644 --- a/dist/chunk-TUHIU4D7.js.map +++ b/dist/chunk-UKIIMIBW.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/core/data-table/data-table-virtual-table-panel.tsx"],"names":["DataTableVirtualTablePanel","props","renderedRows","shouldRenderInitialLoading","tableScrollElement","viewportHeight","virtualization","virtualizationConfig","enableVirtualization","shouldUseVirtualRows","getItemKey","index","rowVirtualizer","useVirtualizer","virtualItems","rowsToRender","virtualItem","row","rowIndex","virtualPaddingTop","virtualPaddingBottom","jsx","DataTableTablePanel"],"mappings":"qJAKO,SAASA,CAAAA,CACdC,CAAAA,CACA,CACA,GAAM,CACJ,aAAAC,CAAAA,CACA,0BAAA,CAAAC,EACA,kBAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CAAiB,EACjB,cAAA,CAAAC,CACF,EAAIL,CAAAA,CACEM,CAAAA,CACJ,OAAOD,CAAAA,EAAmB,QAAA,CAAWA,EAAiB,MAAA,CAClDE,CAAAA,CACJ,CAACL,CAAAA,GACAG,CAAAA,GAAmB,MAAQC,CAAAA,EAAsB,OAAA,GAAY,MAC1DE,CAAAA,CACJD,CAAAA,EAAwB,CAAA,CAAQJ,CAAAA,EAAuBC,EAAiB,CAAA,CACpEK,CAAAA,CAAmB,cACtBC,CAAAA,EAAkBT,CAAAA,CAAaS,CAAK,CAAA,EAAG,EAAA,EAAMA,EAC9C,CAACT,CAAY,CACf,CAAA,CAGMU,CAAAA,CAAiBC,eAAe,CACpC,KAAA,CAAOL,EAAuBN,CAAAA,CAAa,MAAA,CAAS,EACpD,OAAA,CAASO,CAAAA,CACT,aAAc,IAAMF,CAAAA,EAAsB,mBAAqB,EAAA,CAC/D,UAAA,CAAAG,EACA,gBAAA,CAAkB,IAAMN,GAAsB,IAAA,CAC9C,QAAA,CAAUG,GAAsB,QAAA,EAAY,CAC9C,CAAC,CAAA,CACKO,CAAAA,CAAeL,EACjBG,CAAAA,CAAe,eAAA,EAAgB,CAC/B,GACEG,CAAAA,CAAeN,CAAAA,CACjBK,EAAa,OAAA,CAASE,CAAAA,EAAgB,CACpC,IAAMC,CAAAA,CAAMf,EAAac,CAAAA,CAAY,KAAK,EAC1C,OAAOC,CAAAA,CAAM,CAAC,CAAE,GAAA,CAAAA,EAAK,QAAA,CAAUD,CAAAA,CAAY,KAAM,CAAC,EAAI,EACxD,CAAC,CAAA,CACDd,CAAAA,CACG,MACC,CAAA,CACA,IAAA,CAAK,IACH,CAAA,CACA,IAAA,CAAK,MAAMK,CAAAA,EAAsB,gBAAA,EAAoB,EAAE,CACzD,CACF,EACC,GAAA,CAAI,CAACU,CAAAA,CAAKC,CAAAA,IAAc,CAAE,GAAA,CAAAD,CAAAA,CAAK,SAAAC,CAAS,CAAA,CAAE,EAC3CC,CAAAA,CAAoBV,CAAAA,CACrBK,EAAa,CAAC,CAAA,EAAG,OAAS,CAAA,CAC3B,CAAA,CACEM,EAAuBX,CAAAA,CACzB,IAAA,CAAK,IACH,CAAA,CACAG,CAAAA,CAAe,cAAa,EACzBE,CAAAA,CAAa,GAAG,EAAE,CAAA,EAAG,KAAOK,CAAAA,CACjC,CAAA,CACA,EAEJ,OACEE,GAAAA,CAACC,EAAA,CACE,GAAGrB,EACJ,YAAA,CAAcc,CAAAA,CACd,qBAAsBK,CAAAA,CACtB,iBAAA,CAAmBD,EACrB,CAEJ","file":"chunk-TUHIU4D7.js","sourcesContent":["import * as React from \"react\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { DataTableTablePanel } from \"./data-table-table-panel\";\nimport type { DataTableTablePanelProps } from \"./data-table-table-panel\";\n\nexport function DataTableVirtualTablePanel(\n props: DataTableTablePanelProps,\n) {\n const {\n renderedRows,\n shouldRenderInitialLoading,\n tableScrollElement,\n viewportHeight = 0,\n virtualization,\n } = props;\n const virtualizationConfig =\n typeof virtualization === \"object\" ? virtualization : undefined;\n const enableVirtualization =\n !shouldRenderInitialLoading &&\n (virtualization === true || virtualizationConfig?.enabled === true);\n const shouldUseVirtualRows =\n enableVirtualization && Boolean(tableScrollElement) && viewportHeight > 0;\n const getItemKey = React.useCallback(\n (index: number) => renderedRows[index]?.id ?? index,\n [renderedRows],\n );\n\n // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Virtual owns its instance functions.\n const rowVirtualizer = useVirtualizer({\n count: enableVirtualization ? renderedRows.length : 0,\n enabled: shouldUseVirtualRows,\n estimateSize: () => virtualizationConfig?.estimateRowHeight ?? 48,\n getItemKey,\n getScrollElement: () => tableScrollElement ?? null,\n overscan: virtualizationConfig?.overscan ?? 8,\n });\n const virtualItems = shouldUseVirtualRows\n ? rowVirtualizer.getVirtualItems()\n : [];\n const rowsToRender = shouldUseVirtualRows\n ? virtualItems.flatMap((virtualItem) => {\n const row = renderedRows[virtualItem.index];\n return row ? [{ row, rowIndex: virtualItem.index }] : [];\n })\n : renderedRows\n .slice(\n 0,\n Math.max(\n 1,\n Math.floor(virtualizationConfig?.fallbackRowCount ?? 20),\n ),\n )\n .map((row, rowIndex) => ({ row, rowIndex }));\n const virtualPaddingTop = shouldUseVirtualRows\n ? (virtualItems[0]?.start ?? 0)\n : 0;\n const virtualPaddingBottom = shouldUseVirtualRows\n ? Math.max(\n 0,\n rowVirtualizer.getTotalSize() -\n (virtualItems.at(-1)?.end ?? virtualPaddingTop),\n )\n : 0;\n\n return (\n \n );\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../src/core/data-table/data-table-virtual-table-panel.tsx"],"names":["DataTableVirtualTablePanel","props","renderedRows","shouldRenderInitialLoading","tableScrollElement","viewportHeight","virtualization","virtualizationConfig","enableVirtualization","shouldUseVirtualRows","getItemKey","index","rowVirtualizer","useVirtualizer","virtualItems","rowsToRender","virtualItem","row","rowIndex","virtualPaddingTop","virtualPaddingBottom","jsx","DataTableTablePanel"],"mappings":"qJAKO,SAASA,CAAAA,CACdC,CAAAA,CACA,CACA,GAAM,CACJ,aAAAC,CAAAA,CACA,0BAAA,CAAAC,EACA,kBAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CAAiB,EACjB,cAAA,CAAAC,CACF,EAAIL,CAAAA,CACEM,CAAAA,CACJ,OAAOD,CAAAA,EAAmB,QAAA,CAAWA,EAAiB,MAAA,CAClDE,CAAAA,CACJ,CAACL,CAAAA,GACAG,CAAAA,GAAmB,MAAQC,CAAAA,EAAsB,OAAA,GAAY,MAC1DE,CAAAA,CACJD,CAAAA,EAAwB,CAAA,CAAQJ,CAAAA,EAAuBC,EAAiB,CAAA,CACpEK,CAAAA,CAAmB,cACtBC,CAAAA,EAAkBT,CAAAA,CAAaS,CAAK,CAAA,EAAG,EAAA,EAAMA,EAC9C,CAACT,CAAY,CACf,CAAA,CAGMU,CAAAA,CAAiBC,eAAe,CACpC,KAAA,CAAOL,EAAuBN,CAAAA,CAAa,MAAA,CAAS,EACpD,OAAA,CAASO,CAAAA,CACT,aAAc,IAAMF,CAAAA,EAAsB,mBAAqB,EAAA,CAC/D,UAAA,CAAAG,EACA,gBAAA,CAAkB,IAAMN,GAAsB,IAAA,CAC9C,QAAA,CAAUG,GAAsB,QAAA,EAAY,CAC9C,CAAC,CAAA,CACKO,CAAAA,CAAeL,EACjBG,CAAAA,CAAe,eAAA,EAAgB,CAC/B,GACEG,CAAAA,CAAeN,CAAAA,CACjBK,EAAa,OAAA,CAASE,CAAAA,EAAgB,CACpC,IAAMC,CAAAA,CAAMf,EAAac,CAAAA,CAAY,KAAK,EAC1C,OAAOC,CAAAA,CAAM,CAAC,CAAE,GAAA,CAAAA,EAAK,QAAA,CAAUD,CAAAA,CAAY,KAAM,CAAC,EAAI,EACxD,CAAC,CAAA,CACDd,CAAAA,CACG,MACC,CAAA,CACA,IAAA,CAAK,IACH,CAAA,CACA,IAAA,CAAK,MAAMK,CAAAA,EAAsB,gBAAA,EAAoB,EAAE,CACzD,CACF,EACC,GAAA,CAAI,CAACU,CAAAA,CAAKC,CAAAA,IAAc,CAAE,GAAA,CAAAD,CAAAA,CAAK,SAAAC,CAAS,CAAA,CAAE,EAC3CC,CAAAA,CAAoBV,CAAAA,CACrBK,EAAa,CAAC,CAAA,EAAG,OAAS,CAAA,CAC3B,CAAA,CACEM,EAAuBX,CAAAA,CACzB,IAAA,CAAK,IACH,CAAA,CACAG,CAAAA,CAAe,cAAa,EACzBE,CAAAA,CAAa,GAAG,EAAE,CAAA,EAAG,KAAOK,CAAAA,CACjC,CAAA,CACA,EAEJ,OACEE,GAAAA,CAACC,EAAA,CACE,GAAGrB,EACJ,YAAA,CAAcc,CAAAA,CACd,qBAAsBK,CAAAA,CACtB,iBAAA,CAAmBD,EACrB,CAEJ","file":"chunk-UKIIMIBW.js","sourcesContent":["import * as React from \"react\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { DataTableTablePanel } from \"./data-table-table-panel\";\nimport type { DataTableTablePanelProps } from \"./data-table-table-panel\";\n\nexport function DataTableVirtualTablePanel(\n props: DataTableTablePanelProps,\n) {\n const {\n renderedRows,\n shouldRenderInitialLoading,\n tableScrollElement,\n viewportHeight = 0,\n virtualization,\n } = props;\n const virtualizationConfig =\n typeof virtualization === \"object\" ? virtualization : undefined;\n const enableVirtualization =\n !shouldRenderInitialLoading &&\n (virtualization === true || virtualizationConfig?.enabled === true);\n const shouldUseVirtualRows =\n enableVirtualization && Boolean(tableScrollElement) && viewportHeight > 0;\n const getItemKey = React.useCallback(\n (index: number) => renderedRows[index]?.id ?? index,\n [renderedRows],\n );\n\n // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Virtual owns its instance functions.\n const rowVirtualizer = useVirtualizer({\n count: enableVirtualization ? renderedRows.length : 0,\n enabled: shouldUseVirtualRows,\n estimateSize: () => virtualizationConfig?.estimateRowHeight ?? 48,\n getItemKey,\n getScrollElement: () => tableScrollElement ?? null,\n overscan: virtualizationConfig?.overscan ?? 8,\n });\n const virtualItems = shouldUseVirtualRows\n ? rowVirtualizer.getVirtualItems()\n : [];\n const rowsToRender = shouldUseVirtualRows\n ? virtualItems.flatMap((virtualItem) => {\n const row = renderedRows[virtualItem.index];\n return row ? [{ row, rowIndex: virtualItem.index }] : [];\n })\n : renderedRows\n .slice(\n 0,\n Math.max(\n 1,\n Math.floor(virtualizationConfig?.fallbackRowCount ?? 20),\n ),\n )\n .map((row, rowIndex) => ({ row, rowIndex }));\n const virtualPaddingTop = shouldUseVirtualRows\n ? (virtualItems[0]?.start ?? 0)\n : 0;\n const virtualPaddingBottom = shouldUseVirtualRows\n ? Math.max(\n 0,\n rowVirtualizer.getTotalSize() -\n (virtualItems.at(-1)?.end ?? virtualPaddingTop),\n )\n : 0;\n\n return (\n \n );\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-ZA7LQ2JH.js b/dist/chunk-ZA7LQ2JH.js new file mode 100644 index 0000000..1a5ba45 --- /dev/null +++ b/dist/chunk-ZA7LQ2JH.js @@ -0,0 +1,2 @@ +import {a}from'./chunk-EJHT5JBZ.js';import {a as a$1,b}from'./chunk-GSCYQ624.js';import*as f from'react';import {useVirtualizer}from'@tanstack/react-virtual';import {jsx,jsxs}from'react/jsx-runtime';function st({cardClassName:r,cardGridClassName:o,cardSizing:y,cardRenderer:E,containerWidth:N,currentRowSelection:V,currentDetailExpanded:z,DataTableCardView:M,DataTableEmptyState:k,dragAndDrop:c,editableRows:A,editingRowId:P,emptyNode:I,enableRowSelection:H,flexGrow:g,getRowClassName:_,hasCardTitle:B,infiniteScroll:K,localSearchValue:h,onRowClick:O,renderedRows:e,detailPanel:j,resolvedLabels:n,resolvedLoadingRowCount:U,rowActions:Y=[],ScrollArea:$,sentinelRef:q,setCurrentDetailExpanded:F,setCurrentRowSelection:J,setEditingRowId:Q,shouldRenderInitialLoading:m,tableContainerClassName:X,uiClassNames:p,virtualization:R}){let x=m||e.length>0,v=f.useRef(null),{viewportElement:D,viewportHeight:Z}=a(v,x),l=typeof R=="object"?R.card:void 0,T=!m&&e.length>0&&l?.enabled===true,i=et(l?.lanes,N),G=Math.ceil(e.length/i),b=T&&!!D&&Z>0,L=f.useCallback(t=>e[t*i]?.id??t,[i,e]),w=useVirtualizer({count:T?G:0,enabled:b,estimateSize:()=>l?.estimateCardHeight??280,getItemKey:L,getScrollElement:()=>D,overscan:l?.overscan??4}),W=b?w.getVirtualItems():[],C=(t,s)=>jsx(M,{rows:t,cardRenderer:E,cardGridClassName:o,cardClassName:r,cardSizing:y,rowActions:Y,editableRows:A,detailPanel:j,detailExpanded:z,onDetailExpandedChange:F,hasCardTitle:B,rowSelection:V,onRowSelectionChange:J,enableRowSelection:H,editingRowId:P,onEditingRowIdChange:Q,getRowClassName:_,onRowClick:O,getRowDraggable:c?.getRowDraggable,onRowDragStart:c?.onRowDragStart,onRowDragEnd:c?.onRowDragEnd,isLoading:s?.isLoading,loadingRowCount:s?.loadingRowCount,labels:n});return jsx("div",{ref:v,"data-dtp-slot":"data-table-card-shell",className:a$1("box-border border-2 border-transparent transition-colors",g?"flex min-h-0 flex-1 flex-col":"h-full",c?.isDragging&&(p.dragActive??"rounded-md border-dashed")),children:jsx($,{className:a$1(g?"min-h-0 flex-1":"h-full",p.cardScrollArea,X),children:jsxs("div",{"data-dtp-slot":"data-table-card-viewport",className:a$1("flex min-h-full min-w-0 flex-col",g&&"min-h-0 flex-1",p.cardViewport),children:[x?m?C([],{isLoading:true,loadingRowCount:U}):b?jsx("div",{"data-dtp-slot":"data-table-card-virtualizer",style:{height:w.getTotalSize(),position:"relative",width:"100%"},children:W.map(t=>{let s=t.index*i,tt=e.slice(s,s+i);return jsx("div",{"data-index":t.index,ref:w.measureElement,style:{left:0,position:"absolute",top:0,transform:`translateY(${t.start}px)`,width:"100%"},children:C(tt)},t.key)})}):C(e.slice(0,Math.max(1,Math.floor(l?.fallbackCardCount??12)))):jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center p-4",children:I??jsx(k,{title:h?n.noMatchingRowsTitle:n.noRowsTitle,description:h?n.noMatchingRowsDescription:n.noRowsDescription})}),K?.enabled&&!m?jsx("div",{className:"shrink-0 px-4 pb-4",children:jsx("div",{ref:q,className:"h-4 w-full"})}):null]})})})}function et(r,o){return typeof r=="number"?Math.max(1,Math.floor(r)):r!=="auto"?1:o>=b["2xl"]?5:o>=b.xl?4:o>=b.lg?3:o>=b.sm?2:1}export{st as a};//# sourceMappingURL=chunk-ZA7LQ2JH.js.map +//# sourceMappingURL=chunk-ZA7LQ2JH.js.map \ No newline at end of file diff --git a/dist/chunk-ZA7LQ2JH.js.map b/dist/chunk-ZA7LQ2JH.js.map new file mode 100644 index 0000000..1b66f80 --- /dev/null +++ b/dist/chunk-ZA7LQ2JH.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/core/data-table/data-table-virtual-card-panel.tsx"],"names":["DataTableVirtualCardPanel","cardClassName","cardGridClassName","cardSizing","cardRenderer","containerWidth","currentRowSelection","currentDetailExpanded","DataTableCardView","DataTableEmptyState","dragAndDrop","editableRows","editingRowId","emptyNode","enableRowSelection","flexGrow","getRowClassName","hasCardTitle","infiniteScroll","localSearchValue","onRowClick","renderedRows","detailPanel","resolvedLabels","resolvedLoadingRowCount","rowActions","ScrollArea","sentinelRef","setCurrentDetailExpanded","setCurrentRowSelection","setEditingRowId","shouldRenderInitialLoading","tableContainerClassName","uiClassNames","virtualization","shouldRenderCards","cardScrollContainerRef","viewportElement","viewportHeight","useDataTableScrollViewport","virtualizationConfig","enableCardVirtualization","lanes","resolveCardVirtualizationLanes","virtualRowCount","shouldUseVirtualCardRows","getItemKey","index","cardVirtualizer","useVirtualizer","virtualCardRows","renderCardView","rows","options","jsx","cn","jsxs","virtualRow","startIndex","configuredLanes","DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS"],"mappings":"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","file":"chunk-ZA7LQ2JH.js","sourcesContent":["import * as React from \"react\";\nimport type { Row } from \"@tanstack/react-table\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { cn } from \"../../lib/utils\";\nimport { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS } from \"../types\";\nimport type { DataTableCardPanelProps } from \"./data-table-card-panel-types\";\nimport { useDataTableScrollViewport } from \"./use-data-table-scroll-viewport\";\n\nexport function DataTableVirtualCardPanel({\n cardClassName,\n cardGridClassName,\n cardSizing,\n cardRenderer,\n containerWidth,\n currentRowSelection,\n currentDetailExpanded,\n DataTableCardView,\n DataTableEmptyState,\n dragAndDrop,\n editableRows,\n editingRowId,\n emptyNode,\n enableRowSelection,\n flexGrow,\n getRowClassName,\n hasCardTitle,\n infiniteScroll,\n localSearchValue,\n onRowClick,\n renderedRows,\n detailPanel,\n resolvedLabels,\n resolvedLoadingRowCount,\n rowActions = [],\n ScrollArea,\n sentinelRef,\n setCurrentDetailExpanded,\n setCurrentRowSelection,\n setEditingRowId,\n shouldRenderInitialLoading,\n tableContainerClassName,\n uiClassNames,\n virtualization,\n}: DataTableCardPanelProps) {\n const shouldRenderCards = shouldRenderInitialLoading || renderedRows.length > 0;\n const cardScrollContainerRef = React.useRef(null);\n const { viewportElement, viewportHeight } = useDataTableScrollViewport(\n cardScrollContainerRef,\n shouldRenderCards,\n );\n const virtualizationConfig =\n typeof virtualization === \"object\" ? virtualization.card : undefined;\n const enableCardVirtualization =\n !shouldRenderInitialLoading &&\n renderedRows.length > 0 &&\n virtualizationConfig?.enabled === true;\n const lanes = resolveCardVirtualizationLanes(\n virtualizationConfig?.lanes,\n containerWidth,\n );\n const virtualRowCount = Math.ceil(renderedRows.length / lanes);\n const shouldUseVirtualCardRows =\n enableCardVirtualization && Boolean(viewportElement) && viewportHeight > 0;\n const getItemKey = React.useCallback(\n (index: number) => renderedRows[index * lanes]?.id ?? index,\n [lanes, renderedRows],\n );\n // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Virtual owns its instance functions.\n const cardVirtualizer = useVirtualizer({\n count: enableCardVirtualization ? virtualRowCount : 0,\n enabled: shouldUseVirtualCardRows,\n estimateSize: () => virtualizationConfig?.estimateCardHeight ?? 280,\n getItemKey,\n getScrollElement: () => viewportElement,\n overscan: virtualizationConfig?.overscan ?? 4,\n });\n const virtualCardRows = shouldUseVirtualCardRows\n ? cardVirtualizer.getVirtualItems()\n : [];\n\n const renderCardView = (\n rows: Array>,\n options?: {\n isLoading?: boolean;\n loadingRowCount?: number;\n },\n ) => (\n \n );\n\n return (\n \n \n \n {shouldRenderCards ? (\n shouldRenderInitialLoading ? (\n renderCardView([], {\n isLoading: true,\n loadingRowCount: resolvedLoadingRowCount,\n })\n ) : shouldUseVirtualCardRows ? (\n \n {virtualCardRows.map((virtualRow) => {\n const startIndex = virtualRow.index * lanes;\n const rows = renderedRows.slice(\n startIndex,\n startIndex + lanes,\n );\n\n return (\n \n {renderCardView(rows)}\n \n );\n })}\n \n ) : (\n renderCardView(\n renderedRows.slice(\n 0,\n Math.max(\n 1,\n Math.floor(\n virtualizationConfig?.fallbackCardCount ?? 12,\n ),\n ),\n ),\n )\n )\n ) : (\n
    \n {emptyNode ?? (\n \n )}\n
    \n )}\n\n {infiniteScroll?.enabled && !shouldRenderInitialLoading ? (\n
    \n
    \n
    \n ) : null}\n
    \n \n \n );\n}\n\nfunction resolveCardVirtualizationLanes(\n configuredLanes: number | \"auto\" | undefined,\n containerWidth: number,\n) {\n if (typeof configuredLanes === \"number\") {\n return Math.max(1, Math.floor(configuredLanes));\n }\n\n if (configuredLanes !== \"auto\") {\n return 1;\n }\n\n if (containerWidth >= DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS[\"2xl\"]) {\n return 5;\n }\n if (containerWidth >= DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS.xl) {\n return 4;\n }\n if (containerWidth >= DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS.lg) {\n return 3;\n }\n if (containerWidth >= DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS.sm) {\n return 2;\n }\n return 1;\n}\n"]} \ No newline at end of file diff --git a/dist/data-source.d.ts b/dist/data-source.d.ts new file mode 100644 index 0000000..9050b22 --- /dev/null +++ b/dist/data-source.d.ts @@ -0,0 +1,104 @@ +import { PaginationState, SortingState, ColumnFiltersState } from '@tanstack/react-table'; +import { DataTableProps } from './types.js'; +import 'react'; + +/** The supported server pagination strategies. */ +type DataTableDataSourceMode = "offset" | "cursor"; +/** + * The serializable portion of a request. It is also passed to `getRequestKey` + * so applications can define cache identity for domain-specific query values. + */ +type DataTableDataSourceQuery = { + mode: DataTableDataSourceMode; + pagination: PaginationState; + /** `pageIndex * pageSize`; useful for offset-based backends. */ + offset: number; + /** The requested number of rows. */ + limit: number; + /** The cursor for a cursor-based backend. `null` represents the first page. */ + cursor: TCursor | null; + sorting: SortingState; + columnFilters: ColumnFiltersState; + /** Application-owned request parameters, such as a tenant or parent ID. */ + query: TQuery | undefined; +}; +/** A server request with an AbortSignal that is cancelled when superseded. */ +type DataTableDataSourceRequest = DataTableDataSourceQuery & { + signal: AbortSignal; +}; +/** A normalized server result for offset and cursor pagination. */ +type DataTableDataSourceResponse = { + rows: Array; + /** Total matching rows, when the backend can provide it. */ + rowCount?: number; + /** The cursor to use for the following page. `null` means no following page. */ + nextCursor?: TCursor | null; + /** Backend-provided facet/count metadata for filter UIs. */ + facets?: TFacets; +}; +type DataTableDataSource = (request: DataTableDataSourceRequest) => DataTableDataSourceResponse | Promise>; +type DataTableDataSourceRetryOptions = number | { + /** Number of retries after the initial attempt. Defaults to 0. */ + attempts?: number; + /** Delay before every retry. Defaults to 250ms. */ + delay?: number | ((context: { + attempt: number; + error: unknown; + }) => number); + shouldRetry?: (context: { + attempt: number; + error: unknown; + }) => boolean; +}; +type DataTableDataSourceCacheOptions = false | number | { + /** Freshness lifetime in milliseconds. Defaults to 30 seconds. */ + staleTime?: number; + /** Maximum cached results per hook instance. Defaults to 50. */ + maxEntries?: number; +}; +type UseDataTableDataSourceOptions = Omit, "cursor" | "limit" | "offset" | "query"> & { + cursor?: TCursor | null; + query?: TQuery; + source: DataTableDataSource; + enabled?: boolean; + /** Retain the prior result while a changed query is loading. Defaults to true. */ + keepPreviousData?: boolean; + cache?: DataTableDataSourceCacheOptions; + retry?: DataTableDataSourceRetryOptions; + /** Override request/cache identity when `query` contains non-serializable values. */ + getRequestKey?: (query: DataTableDataSourceQuery) => string; + initialData?: Array; + onSuccess?: (response: DataTableDataSourceResponse, request: DataTableDataSourceRequest) => void; + onError?: (error: unknown, request: DataTableDataSourceRequest) => void; + onPageIndexChange?: (pageIndex: number) => void; + onPageSizeChange?: (pageSize: number) => void; + onSortingChange?: (sorting: SortingState) => void; + onColumnFiltersChange?: (filters: ColumnFiltersState) => void; +}; +type DataTableDataSourceTableProps = Pick, "columnFilters" | "data" | "hasNextPage" | "isLoading" | "manualFiltering" | "manualPagination" | "manualSorting" | "onColumnFiltersChange" | "onPageIndexChange" | "onPageSizeChange" | "onSortingChange" | "pageIndex" | "pageSize" | "sorting" | "totalRowCount">; +type UseDataTableDataSourceResult = { + data: Array; + error: unknown; + facets: TFacets | undefined; + isError: boolean; + /** True while the first result for the active query is loading. */ + isLoading: boolean; + /** True while any request for the active query is in flight. */ + isFetching: boolean; + isSuccess: boolean; + nextCursor: TCursor | null | undefined; + rowCount: number | undefined; + /** Starts a network request, bypassing a fresh cache entry. */ + refresh: () => Promise | undefined>; + /** Removes one cached request, or every cached request when omitted. */ + invalidate: (requestKey?: string) => void; + /** Spread these into `DataTable` for manual paging, sorting, and filtering. */ + tableProps: DataTableDataSourceTableProps; +}; +/** + * Fetches controlled, server-side table data with cancellation, retry, stale + * response protection, per-hook caching, and manual DataTable props. + */ +declare function useDataTableDataSource(options: UseDataTableDataSourceOptions): UseDataTableDataSourceResult; + +export { type DataTableDataSource, type DataTableDataSourceCacheOptions, type DataTableDataSourceMode, type DataTableDataSourceQuery, type DataTableDataSourceRequest, type DataTableDataSourceResponse, type DataTableDataSourceRetryOptions, type DataTableDataSourceTableProps, type UseDataTableDataSourceOptions, type UseDataTableDataSourceResult, useDataTableDataSource }; diff --git a/dist/data-source.js b/dist/data-source.js new file mode 100644 index 0000000..0290946 --- /dev/null +++ b/dist/data-source.js @@ -0,0 +1,2 @@ +import*as n from'react';var j=3e4,v=50;function X(e){let{columnFilters:a,cursor:c,enabled:t=true,getRequestKey:s,initialData:i=[],mode:w,pagination:l,query:P,sorting:D}=e,Q=n.useRef(e);n.useEffect(()=>{Q.current=e;},[e]);let C=n.useRef(new Map),T=n.useRef(void 0),M=n.useRef(0),f=n.useRef(true),[r,b]=n.useState(()=>({data:i,error:null,facets:void 0,isFetching:false,nextCursor:void 0,responseKey:null,rowCount:void 0,status:i.length>0?"success":"idle"})),q=n.useMemo(()=>({columnFilters:a,cursor:c??null,limit:l.pageSize,mode:w,offset:l.pageIndex*l.pageSize,pagination:{...l},query:P,sorting:D}),[a,c,w,l,P,D]),K=s?s(q):z(q),m=n.useCallback(p=>{let o=Q.current,F={columnFilters:o.columnFilters,cursor:o.cursor??null,limit:o.pagination.pageSize,mode:o.mode,offset:o.pagination.pageIndex*o.pagination.pageSize,pagination:{...o.pagination},query:o.query,sorting:o.sorting},d=o.getRequestKey?o.getRequestKey(F):z(F),y=T.current;if(y?.key===d)return y.promise;y&&(y.controller.abort(),T.current=void 0);let k=O(o.cache),g=C.current.get(d);if(!p&&g&&k&&N(g,k))return f.current&&b({data:g.response.rows,error:null,facets:g.response.facets,isFetching:false,nextCursor:g.response.nextCursor,responseKey:d,rowCount:g.response.rowCount,status:"success"}),Promise.resolve(g.response);let x=new AbortController,S=++M.current,R={...F,signal:x.signal};f.current&&b(u=>({...u,data:o.keepPreviousData===false?[]:u.data,error:null,isFetching:true,status:u.responseKey===d?u.status:"loading"}));let A=$(o.source,R,o.retry).then(u=>{if(T.current?.id!==S)return u;let h=O(o.cache);return h&&W(C.current,d,u,h),f.current&&b({data:u.rows,error:null,facets:u.facets,isFetching:false,nextCursor:u.nextCursor,responseKey:d,rowCount:u.rowCount,status:"success"}),o.onSuccess?.(u,R),u}).catch(u=>{I(u,x.signal)||T.current?.id!==S||(f.current&&b(h=>({...h,error:u,isFetching:false,status:"error"})),o.onError?.(u,R));}).finally(()=>{T.current?.id===S&&(T.current=void 0);});return T.current={controller:x,id:S,key:d,promise:A,request:R},A},[]);n.useEffect(()=>{if(f.current=true,!t){T.current?.controller.abort(),T.current=void 0;return}m(false);},[t,K,m]),n.useEffect(()=>()=>{f.current=false,T.current?.controller.abort(),T.current=void 0;},[]);let L=n.useCallback(()=>m(true),[m]),_=n.useCallback(p=>{if(p===void 0){C.current.clear();return}C.current.delete(p);},[]),E=r.nextCursor!==void 0?r.nextCursor!==null:r.rowCount===void 0?void 0:l.pageIndex+1({columnFilters:a,data:r.data,hasNextPage:E,isLoading:t&&r.status==="loading",manualFiltering:true,manualPagination:true,manualSorting:true,onColumnFiltersChange:e.onColumnFiltersChange,onPageIndexChange:e.onPageIndexChange,onPageSizeChange:e.onPageSizeChange,onSortingChange:e.onSortingChange,pageIndex:l.pageIndex,pageSize:l.pageSize,sorting:D,totalRowCount:r.rowCount}),[a,t,E,e.onColumnFiltersChange,e.onPageIndexChange,e.onPageSizeChange,e.onSortingChange,l.pageIndex,l.pageSize,D,r.data,r.rowCount,r.status]);return {data:r.data,error:r.error,facets:r.facets,invalidate:_,isError:r.status==="error",isFetching:t&&r.isFetching,isLoading:t&&r.status==="loading",isSuccess:r.status==="success",nextCursor:r.nextCursor,refresh:L,rowCount:r.rowCount,tableProps:U}}function O(e){if(e!==false)return typeof e=="number"?{maxEntries:v,staleTime:Math.max(0,e)}:{maxEntries:Math.max(1,e?.maxEntries??v),staleTime:Math.max(0,e?.staleTime??j)}}function N(e,a){return Date.now()-e.updatedAt<=a.staleTime}function W(e,a,c,t){for(e.delete(a),e.set(a,{response:c,updatedAt:Date.now()});e.size>t.maxEntries;){let s=e.keys().next().value;if(s===void 0)return;e.delete(s);}}async function $(e,a,c){let t=H(c);for(let s=0;;s+=1)try{return await e(a)}catch(i){if(I(i,a.signal)||s>=t.attempts||!t.shouldRetry({attempt:s+1,error:i}))throw i;await J(t.delay({attempt:s+1,error:i}),a.signal);}}function H(e){return typeof e=="number"?{attempts:Math.max(0,e),delay:()=>250,shouldRetry:()=>true}:{attempts:Math.max(0,e?.attempts??0),delay:a=>{let c=typeof e?.delay=="function"?e.delay(a):e?.delay??250;return Math.max(0,c)},shouldRetry:e?.shouldRetry??(()=>true)}}function J(e,a){return new Promise((c,t)=>{let s=globalThis.setTimeout(()=>{a.removeEventListener("abort",i),c();},e),i=()=>{globalThis.clearTimeout(s),t(new DOMException("Request aborted","AbortError"));};a.addEventListener("abort",i,{once:true});})}function I(e,a){return a.aborted||e instanceof DOMException&&e.name==="AbortError"||typeof e=="object"&&e!==null&&"name"in e&&e.name==="AbortError"}function z(e){let a=new WeakSet;return JSON.stringify(e,(c,t)=>typeof t=="bigint"?`bigint:${t.toString()}`:t instanceof Date?`date:${t.toISOString()}`:typeof t=="function"||typeof t=="symbol"?String(t):typeof t=="object"&&t!==null&&!Array.isArray(t)?a.has(t)?"[Circular]":(a.add(t),Object.fromEntries(Object.entries(t).sort(([s],[i])=>s.localeCompare(i)))):t)}export{X as useDataTableDataSource};//# sourceMappingURL=data-source.js.map +//# sourceMappingURL=data-source.js.map \ No newline at end of file diff --git a/dist/data-source.js.map b/dist/data-source.js.map new file mode 100644 index 0000000..5db25f6 --- /dev/null +++ b/dist/data-source.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/core/data-source/use-data-table-data-source.ts"],"names":["DEFAULT_STALE_TIME","DEFAULT_MAX_CACHE_ENTRIES","useDataTableDataSource","options","columnFilters","cursor","enabled","getRequestKey","initialData","mode","pagination","query","sorting","latestOptionsRef","cacheRef","activeRequestRef","requestIdRef","mountedRef","state","setState","requestQuery","requestKey","stableSerialize","runRequest","force","currentOptions","currentQuery","currentKey","activeRequest","cacheSettings","resolveCacheSettings","cached","isCacheFresh","controller","id","request","previous","promise","fetchWithRetry","response","resolvedCacheSettings","cacheResponse","error","isAbort","refresh","invalidate","key","hasNextPage","tableProps","cache","settings","oldestKey","source","retry","resolveRetrySettings","attempt","waitForRetry","context","value","delay","signal","resolve","reject","timeout","onAbort","seen","_key","nested","left","right"],"mappings":"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","file":"data-source.js","sourcesContent":["import * as React from \"react\";\nimport type {\n ColumnFiltersState,\n PaginationState,\n SortingState,\n} from \"@tanstack/react-table\";\nimport type { DataTableProps } from \"../types\";\n\n/** The supported server pagination strategies. */\nexport type DataTableDataSourceMode = \"offset\" | \"cursor\";\n\n/**\n * The serializable portion of a request. It is also passed to `getRequestKey`\n * so applications can define cache identity for domain-specific query values.\n */\nexport type DataTableDataSourceQuery = {\n mode: DataTableDataSourceMode;\n pagination: PaginationState;\n /** `pageIndex * pageSize`; useful for offset-based backends. */\n offset: number;\n /** The requested number of rows. */\n limit: number;\n /** The cursor for a cursor-based backend. `null` represents the first page. */\n cursor: TCursor | null;\n sorting: SortingState;\n columnFilters: ColumnFiltersState;\n /** Application-owned request parameters, such as a tenant or parent ID. */\n query: TQuery | undefined;\n};\n\n/** A server request with an AbortSignal that is cancelled when superseded. */\nexport type DataTableDataSourceRequest =\n DataTableDataSourceQuery & {\n signal: AbortSignal;\n };\n\n/** A normalized server result for offset and cursor pagination. */\nexport type DataTableDataSourceResponse<\n TData,\n TCursor = string,\n TFacets = unknown,\n> = {\n rows: Array;\n /** Total matching rows, when the backend can provide it. */\n rowCount?: number;\n /** The cursor to use for the following page. `null` means no following page. */\n nextCursor?: TCursor | null;\n /** Backend-provided facet/count metadata for filter UIs. */\n facets?: TFacets;\n};\n\nexport type DataTableDataSource<\n TData,\n TQuery = undefined,\n TCursor = string,\n TFacets = unknown,\n> = (\n request: DataTableDataSourceRequest,\n) =>\n | DataTableDataSourceResponse\n | Promise>;\n\nexport type DataTableDataSourceRetryOptions =\n | number\n | {\n /** Number of retries after the initial attempt. Defaults to 0. */\n attempts?: number;\n /** Delay before every retry. Defaults to 250ms. */\n delay?: number | ((context: { attempt: number; error: unknown }) => number);\n shouldRetry?: (context: { attempt: number; error: unknown }) => boolean;\n };\n\nexport type DataTableDataSourceCacheOptions =\n | false\n | number\n | {\n /** Freshness lifetime in milliseconds. Defaults to 30 seconds. */\n staleTime?: number;\n /** Maximum cached results per hook instance. Defaults to 50. */\n maxEntries?: number;\n };\n\nexport type UseDataTableDataSourceOptions<\n TData,\n TQuery = undefined,\n TCursor = string,\n TFacets = unknown,\n> = Omit<\n DataTableDataSourceQuery,\n \"cursor\" | \"limit\" | \"offset\" | \"query\"\n> & {\n cursor?: TCursor | null;\n query?: TQuery;\n source: DataTableDataSource;\n enabled?: boolean;\n /** Retain the prior result while a changed query is loading. Defaults to true. */\n keepPreviousData?: boolean;\n cache?: DataTableDataSourceCacheOptions;\n retry?: DataTableDataSourceRetryOptions;\n /** Override request/cache identity when `query` contains non-serializable values. */\n getRequestKey?: (query: DataTableDataSourceQuery) => string;\n initialData?: Array;\n onSuccess?: (\n response: DataTableDataSourceResponse,\n request: DataTableDataSourceRequest,\n ) => void;\n onError?: (\n error: unknown,\n request: DataTableDataSourceRequest,\n ) => void;\n onPageIndexChange?: (pageIndex: number) => void;\n onPageSizeChange?: (pageSize: number) => void;\n onSortingChange?: (sorting: SortingState) => void;\n onColumnFiltersChange?: (filters: ColumnFiltersState) => void;\n};\n\nexport type DataTableDataSourceTableProps = Pick<\n DataTableProps,\n | \"columnFilters\"\n | \"data\"\n | \"hasNextPage\"\n | \"isLoading\"\n | \"manualFiltering\"\n | \"manualPagination\"\n | \"manualSorting\"\n | \"onColumnFiltersChange\"\n | \"onPageIndexChange\"\n | \"onPageSizeChange\"\n | \"onSortingChange\"\n | \"pageIndex\"\n | \"pageSize\"\n | \"sorting\"\n | \"totalRowCount\"\n>;\n\nexport type UseDataTableDataSourceResult = {\n data: Array;\n error: unknown;\n facets: TFacets | undefined;\n isError: boolean;\n /** True while the first result for the active query is loading. */\n isLoading: boolean;\n /** True while any request for the active query is in flight. */\n isFetching: boolean;\n isSuccess: boolean;\n nextCursor: TCursor | null | undefined;\n rowCount: number | undefined;\n /** Starts a network request, bypassing a fresh cache entry. */\n refresh: () => Promise | undefined>;\n /** Removes one cached request, or every cached request when omitted. */\n invalidate: (requestKey?: string) => void;\n /** Spread these into `DataTable` for manual paging, sorting, and filtering. */\n tableProps: DataTableDataSourceTableProps;\n};\n\ntype CachedResponse = {\n response: DataTableDataSourceResponse;\n updatedAt: number;\n};\n\ntype ActiveRequest = {\n controller: AbortController;\n id: number;\n key: string;\n promise: Promise | undefined>;\n request: DataTableDataSourceRequest;\n};\n\ntype SourceState = {\n data: Array;\n error: unknown;\n facets: TFacets | undefined;\n isFetching: boolean;\n nextCursor: TCursor | null | undefined;\n responseKey: string | null;\n rowCount: number | undefined;\n status: \"idle\" | \"loading\" | \"success\" | \"error\";\n};\n\nconst DEFAULT_STALE_TIME = 30_000;\nconst DEFAULT_MAX_CACHE_ENTRIES = 50;\n\n/**\n * Fetches controlled, server-side table data with cancellation, retry, stale\n * response protection, per-hook caching, and manual DataTable props.\n */\nexport function useDataTableDataSource<\n TData,\n TQuery = undefined,\n TCursor = string,\n TFacets = unknown,\n>(\n options: UseDataTableDataSourceOptions,\n): UseDataTableDataSourceResult {\n const {\n columnFilters,\n cursor,\n enabled = true,\n getRequestKey,\n initialData = [],\n mode,\n pagination,\n query,\n sorting,\n } = options;\n const latestOptionsRef = React.useRef(options);\n React.useEffect(() => {\n latestOptionsRef.current = options;\n }, [options]);\n const cacheRef = React.useRef(\n new Map>(),\n );\n const activeRequestRef = React.useRef<\n ActiveRequest | undefined\n >(undefined);\n const requestIdRef = React.useRef(0);\n const mountedRef = React.useRef(true);\n const [state, setState] = React.useState>(\n () => ({\n data: initialData,\n error: null,\n facets: undefined,\n isFetching: false,\n nextCursor: undefined,\n responseKey: null,\n rowCount: undefined,\n status: initialData.length > 0 ? \"success\" : \"idle\",\n }),\n );\n\n const requestQuery = React.useMemo>(\n () => ({\n columnFilters,\n cursor: cursor ?? null,\n limit: pagination.pageSize,\n mode,\n offset: pagination.pageIndex * pagination.pageSize,\n pagination: { ...pagination },\n query,\n sorting,\n }),\n [columnFilters, cursor, mode, pagination, query, sorting],\n );\n const requestKey = getRequestKey\n ? getRequestKey(requestQuery)\n : stableSerialize(requestQuery);\n\n const runRequest = React.useCallback(\n (\n force: boolean,\n ): Promise | undefined> => {\n const currentOptions = latestOptionsRef.current;\n const currentQuery: DataTableDataSourceQuery = {\n columnFilters: currentOptions.columnFilters,\n cursor: currentOptions.cursor ?? null,\n limit: currentOptions.pagination.pageSize,\n mode: currentOptions.mode,\n offset:\n currentOptions.pagination.pageIndex * currentOptions.pagination.pageSize,\n pagination: { ...currentOptions.pagination },\n query: currentOptions.query,\n sorting: currentOptions.sorting,\n };\n const currentKey = currentOptions.getRequestKey\n ? currentOptions.getRequestKey(currentQuery)\n : stableSerialize(currentQuery);\n const activeRequest = activeRequestRef.current;\n\n if (activeRequest?.key === currentKey) {\n return activeRequest.promise;\n }\n if (activeRequest) {\n activeRequest.controller.abort();\n activeRequestRef.current = undefined;\n }\n\n const cacheSettings = resolveCacheSettings(currentOptions.cache);\n const cached = cacheRef.current.get(currentKey);\n if (!force && cached && cacheSettings && isCacheFresh(cached, cacheSettings)) {\n if (mountedRef.current) {\n setState({\n data: cached.response.rows,\n error: null,\n facets: cached.response.facets,\n isFetching: false,\n nextCursor: cached.response.nextCursor,\n responseKey: currentKey,\n rowCount: cached.response.rowCount,\n status: \"success\",\n });\n }\n return Promise.resolve(cached.response);\n }\n\n const controller = new AbortController();\n const id = ++requestIdRef.current;\n const request: DataTableDataSourceRequest = {\n ...currentQuery,\n signal: controller.signal,\n };\n if (mountedRef.current) {\n setState((previous) => ({\n ...previous,\n data: currentOptions.keepPreviousData === false ? [] : previous.data,\n error: null,\n isFetching: true,\n status: previous.responseKey === currentKey ? previous.status : \"loading\",\n }));\n }\n\n const promise = fetchWithRetry(\n currentOptions.source,\n request,\n currentOptions.retry,\n )\n .then((response) => {\n if (activeRequestRef.current?.id !== id) {\n return response;\n }\n const resolvedCacheSettings = resolveCacheSettings(currentOptions.cache);\n if (resolvedCacheSettings) {\n cacheResponse(cacheRef.current, currentKey, response, resolvedCacheSettings);\n }\n if (mountedRef.current) {\n setState({\n data: response.rows,\n error: null,\n facets: response.facets,\n isFetching: false,\n nextCursor: response.nextCursor,\n responseKey: currentKey,\n rowCount: response.rowCount,\n status: \"success\",\n });\n }\n currentOptions.onSuccess?.(response, request);\n return response;\n })\n .catch((error: unknown) => {\n if (isAbort(error, controller.signal) || activeRequestRef.current?.id !== id) {\n return undefined;\n }\n if (mountedRef.current) {\n setState((previous) => ({\n ...previous,\n error,\n isFetching: false,\n status: \"error\",\n }));\n }\n currentOptions.onError?.(error, request);\n return undefined;\n })\n .finally(() => {\n if (activeRequestRef.current?.id === id) {\n activeRequestRef.current = undefined;\n }\n });\n\n activeRequestRef.current = { controller, id, key: currentKey, promise, request };\n return promise;\n },\n [],\n );\n\n React.useEffect(() => {\n mountedRef.current = true;\n if (!enabled) {\n activeRequestRef.current?.controller.abort();\n activeRequestRef.current = undefined;\n return;\n }\n void runRequest(false);\n }, [enabled, requestKey, runRequest]);\n\n React.useEffect(\n () => () => {\n mountedRef.current = false;\n activeRequestRef.current?.controller.abort();\n activeRequestRef.current = undefined;\n },\n [],\n );\n\n const refresh = React.useCallback(() => runRequest(true), [runRequest]);\n const invalidate = React.useCallback((key?: string) => {\n if (key === undefined) {\n cacheRef.current.clear();\n return;\n }\n cacheRef.current.delete(key);\n }, []);\n\n const hasNextPage =\n state.nextCursor !== undefined\n ? state.nextCursor !== null\n : state.rowCount === undefined\n ? undefined\n : pagination.pageIndex + 1 < Math.ceil(state.rowCount / pagination.pageSize);\n const tableProps = React.useMemo>(\n () => ({\n columnFilters,\n data: state.data,\n hasNextPage,\n isLoading: enabled && state.status === \"loading\",\n manualFiltering: true,\n manualPagination: true,\n manualSorting: true,\n onColumnFiltersChange: options.onColumnFiltersChange,\n onPageIndexChange: options.onPageIndexChange,\n onPageSizeChange: options.onPageSizeChange,\n onSortingChange: options.onSortingChange,\n pageIndex: pagination.pageIndex,\n pageSize: pagination.pageSize,\n sorting,\n totalRowCount: state.rowCount,\n }),\n [\n columnFilters,\n enabled,\n hasNextPage,\n options.onColumnFiltersChange,\n options.onPageIndexChange,\n options.onPageSizeChange,\n options.onSortingChange,\n pagination.pageIndex,\n pagination.pageSize,\n sorting,\n state.data,\n state.rowCount,\n state.status,\n ],\n );\n\n return {\n data: state.data,\n error: state.error,\n facets: state.facets,\n invalidate,\n isError: state.status === \"error\",\n isFetching: enabled && state.isFetching,\n isLoading: enabled && state.status === \"loading\",\n isSuccess: state.status === \"success\",\n nextCursor: state.nextCursor,\n refresh,\n rowCount: state.rowCount,\n tableProps,\n };\n}\n\nfunction resolveCacheSettings(\n cache: DataTableDataSourceCacheOptions | undefined,\n): { staleTime: number; maxEntries: number } | undefined {\n if (cache === false) {\n return undefined;\n }\n if (typeof cache === \"number\") {\n return { maxEntries: DEFAULT_MAX_CACHE_ENTRIES, staleTime: Math.max(0, cache) };\n }\n return {\n maxEntries: Math.max(1, cache?.maxEntries ?? DEFAULT_MAX_CACHE_ENTRIES),\n staleTime: Math.max(0, cache?.staleTime ?? DEFAULT_STALE_TIME),\n };\n}\n\nfunction isCacheFresh(\n cached: CachedResponse,\n settings: { staleTime: number },\n) {\n return Date.now() - cached.updatedAt <= settings.staleTime;\n}\n\nfunction cacheResponse(\n cache: Map>,\n key: string,\n response: DataTableDataSourceResponse,\n settings: { maxEntries: number },\n) {\n cache.delete(key);\n cache.set(key, { response, updatedAt: Date.now() });\n while (cache.size > settings.maxEntries) {\n const oldestKey = cache.keys().next().value;\n if (oldestKey === undefined) {\n return;\n }\n cache.delete(oldestKey);\n }\n}\n\nasync function fetchWithRetry(\n source: DataTableDataSource,\n request: DataTableDataSourceRequest,\n retry: DataTableDataSourceRetryOptions | undefined,\n) {\n const settings = resolveRetrySettings(retry);\n for (let attempt = 0; ; attempt += 1) {\n try {\n return await source(request);\n } catch (error) {\n if (\n isAbort(error, request.signal) ||\n attempt >= settings.attempts ||\n !settings.shouldRetry({ attempt: attempt + 1, error })\n ) {\n throw error;\n }\n await waitForRetry(settings.delay({ attempt: attempt + 1, error }), request.signal);\n }\n }\n}\n\nfunction resolveRetrySettings(retry: DataTableDataSourceRetryOptions | undefined) {\n if (typeof retry === \"number\") {\n return {\n attempts: Math.max(0, retry),\n delay: () => 250,\n shouldRetry: () => true,\n };\n }\n return {\n attempts: Math.max(0, retry?.attempts ?? 0),\n delay: (context: { attempt: number; error: unknown }) => {\n const value = typeof retry?.delay === \"function\" ? retry.delay(context) : (retry?.delay ?? 250);\n return Math.max(0, value);\n },\n shouldRetry: retry?.shouldRetry ?? (() => true),\n };\n}\n\nfunction waitForRetry(delay: number, signal: AbortSignal) {\n return new Promise((resolve, reject) => {\n const timeout = globalThis.setTimeout(() => {\n signal.removeEventListener(\"abort\", onAbort);\n resolve();\n }, delay);\n const onAbort = () => {\n globalThis.clearTimeout(timeout);\n reject(new DOMException(\"Request aborted\", \"AbortError\"));\n };\n signal.addEventListener(\"abort\", onAbort, { once: true });\n });\n}\n\nfunction isAbort(error: unknown, signal: AbortSignal) {\n return (\n signal.aborted ||\n (error instanceof DOMException && error.name === \"AbortError\") ||\n (typeof error === \"object\" &&\n error !== null &&\n \"name\" in error &&\n error.name === \"AbortError\")\n );\n}\n\nfunction stableSerialize(value: unknown): string {\n const seen = new WeakSet();\n return JSON.stringify(value, (_key, nested: unknown) => {\n if (typeof nested === \"bigint\") {\n return `bigint:${nested.toString()}`;\n }\n if (nested instanceof Date) {\n return `date:${nested.toISOString()}`;\n }\n if (typeof nested === \"function\" || typeof nested === \"symbol\") {\n return String(nested);\n }\n if (typeof nested === \"object\" && nested !== null && !Array.isArray(nested)) {\n if (seen.has(nested)) {\n return \"[Circular]\";\n }\n seen.add(nested);\n return Object.fromEntries(\n Object.entries(nested).sort(([left], [right]) => left.localeCompare(right)),\n );\n }\n return nested;\n });\n}\n"]} \ No newline at end of file diff --git a/dist/data-table-virtual-card-panel-4LELMUIN.js b/dist/data-table-virtual-card-panel-4LELMUIN.js deleted file mode 100644 index 8284f1b..0000000 --- a/dist/data-table-virtual-card-panel-4LELMUIN.js +++ /dev/null @@ -1,2 +0,0 @@ -export{a as DataTableVirtualCardPanel}from'./chunk-FXX3TZ63.js';import'./chunk-EJHT5JBZ.js';import'./chunk-674VSOYY.js';//# sourceMappingURL=data-table-virtual-card-panel-4LELMUIN.js.map -//# sourceMappingURL=data-table-virtual-card-panel-4LELMUIN.js.map \ No newline at end of file diff --git a/dist/data-table-virtual-card-panel-TLC53T3T.js b/dist/data-table-virtual-card-panel-TLC53T3T.js new file mode 100644 index 0000000..ba6ca5a --- /dev/null +++ b/dist/data-table-virtual-card-panel-TLC53T3T.js @@ -0,0 +1,2 @@ +export{a as DataTableVirtualCardPanel}from'./chunk-ZA7LQ2JH.js';import'./chunk-EJHT5JBZ.js';import'./chunk-GSCYQ624.js';//# sourceMappingURL=data-table-virtual-card-panel-TLC53T3T.js.map +//# sourceMappingURL=data-table-virtual-card-panel-TLC53T3T.js.map \ No newline at end of file diff --git a/dist/data-table-virtual-card-panel-4LELMUIN.js.map b/dist/data-table-virtual-card-panel-TLC53T3T.js.map similarity index 62% rename from dist/data-table-virtual-card-panel-4LELMUIN.js.map rename to dist/data-table-virtual-card-panel-TLC53T3T.js.map index 5ffb435..f4d16a5 100644 --- a/dist/data-table-virtual-card-panel-4LELMUIN.js.map +++ b/dist/data-table-virtual-card-panel-TLC53T3T.js.map @@ -1 +1 @@ -{"version":3,"sources":[],"names":[],"mappings":"","file":"data-table-virtual-card-panel-4LELMUIN.js"} \ No newline at end of file +{"version":3,"sources":[],"names":[],"mappings":"","file":"data-table-virtual-card-panel-TLC53T3T.js"} \ No newline at end of file diff --git a/dist/data-table-virtual-table-panel-H3MFN25G.js b/dist/data-table-virtual-table-panel-H3MFN25G.js deleted file mode 100644 index 089f137..0000000 --- a/dist/data-table-virtual-table-panel-H3MFN25G.js +++ /dev/null @@ -1,2 +0,0 @@ -export{a as DataTableVirtualTablePanel}from'./chunk-TUHIU4D7.js';import'./chunk-32UNH3MQ.js';import'./chunk-674VSOYY.js';//# sourceMappingURL=data-table-virtual-table-panel-H3MFN25G.js.map -//# sourceMappingURL=data-table-virtual-table-panel-H3MFN25G.js.map \ No newline at end of file diff --git a/dist/data-table-virtual-table-panel-TTKFMOEY.js b/dist/data-table-virtual-table-panel-TTKFMOEY.js new file mode 100644 index 0000000..34f02ee --- /dev/null +++ b/dist/data-table-virtual-table-panel-TTKFMOEY.js @@ -0,0 +1,2 @@ +export{a as DataTableVirtualTablePanel}from'./chunk-UKIIMIBW.js';import'./chunk-BYTOUBQ7.js';import'./chunk-GSCYQ624.js';//# sourceMappingURL=data-table-virtual-table-panel-TTKFMOEY.js.map +//# sourceMappingURL=data-table-virtual-table-panel-TTKFMOEY.js.map \ No newline at end of file diff --git a/dist/data-table-virtual-table-panel-H3MFN25G.js.map b/dist/data-table-virtual-table-panel-TTKFMOEY.js.map similarity index 62% rename from dist/data-table-virtual-table-panel-H3MFN25G.js.map rename to dist/data-table-virtual-table-panel-TTKFMOEY.js.map index 22ef789..3ce7df8 100644 --- a/dist/data-table-virtual-table-panel-H3MFN25G.js.map +++ b/dist/data-table-virtual-table-panel-TTKFMOEY.js.map @@ -1 +1 @@ -{"version":3,"sources":[],"names":[],"mappings":"","file":"data-table-virtual-table-panel-H3MFN25G.js"} \ No newline at end of file +{"version":3,"sources":[],"names":[],"mappings":"","file":"data-table-virtual-table-panel-TTKFMOEY.js"} \ No newline at end of file diff --git a/dist/heroui-virtual.d.ts b/dist/heroui-virtual.d.ts index 6b2edb0..b10a5fe 100644 --- a/dist/heroui-virtual.d.ts +++ b/dist/heroui-virtual.d.ts @@ -1,8 +1,8 @@ import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; -declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; export { DataTable, DataTableProps }; diff --git a/dist/heroui-virtual.js b/dist/heroui-virtual.js index 2a0c99b..9c92236 100644 --- a/dist/heroui-virtual.js +++ b/dist/heroui-virtual.js @@ -1,2 +1,2 @@ -import {a as a$2}from'./chunk-5QNEI6BL.js';import {a as a$1}from'./chunk-ICUHQJ2O.js';import'./chunk-FXX3TZ63.js';import'./chunk-TUHIU4D7.js';import'./chunk-ERWHHOBD.js';import'./chunk-ICUCANNA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-32UNH3MQ.js';import'./chunk-674VSOYY.js';var a=a$1(a$2);export{a as DataTable};//# sourceMappingURL=heroui-virtual.js.map +import {a as a$2}from'./chunk-6PPFYQ6Q.js';import {a as a$1}from'./chunk-HHUJMI3H.js';import'./chunk-ZA7LQ2JH.js';import'./chunk-UKIIMIBW.js';import'./chunk-LDAX7PX5.js';import'./chunk-67Y57KCA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-BYTOUBQ7.js';import'./chunk-GSCYQ624.js';var a=a$1(a$2);export{a as DataTable};//# sourceMappingURL=heroui-virtual.js.map //# sourceMappingURL=heroui-virtual.js.map \ No newline at end of file diff --git a/dist/heroui.d.ts b/dist/heroui.d.ts index 6b2edb0..b10a5fe 100644 --- a/dist/heroui.d.ts +++ b/dist/heroui.d.ts @@ -1,8 +1,8 @@ import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; -declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; export { DataTable, DataTableProps }; diff --git a/dist/heroui.js b/dist/heroui.js index faa4027..b0c4fdd 100644 --- a/dist/heroui.js +++ b/dist/heroui.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-5QNEI6BL.js';import'./chunk-ERWHHOBD.js';import {i}from'./chunk-ICUCANNA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-32UNH3MQ.js';import'./chunk-674VSOYY.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=heroui.js.map +import {a as a$1}from'./chunk-6PPFYQ6Q.js';import'./chunk-LDAX7PX5.js';import {i}from'./chunk-67Y57KCA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-BYTOUBQ7.js';import'./chunk-GSCYQ624.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=heroui.js.map //# sourceMappingURL=heroui.js.map \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts index 6b2edb0..b10a5fe 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -1,8 +1,8 @@ import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; -declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; export { DataTable, DataTableProps }; diff --git a/dist/index.js b/dist/index.js index ce299c2..b1080f6 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-ARW55TNZ.js';import'./chunk-ERWHHOBD.js';import {i}from'./chunk-ICUCANNA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-32UNH3MQ.js';import'./chunk-674VSOYY.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=index.js.map +import {a as a$1}from'./chunk-MYQZYDHU.js';import'./chunk-LDAX7PX5.js';import {i}from'./chunk-67Y57KCA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-BYTOUBQ7.js';import'./chunk-GSCYQ624.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=index.js.map //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/thegridcn-virtual.d.ts b/dist/thegridcn-virtual.d.ts index 6b2edb0..b10a5fe 100644 --- a/dist/thegridcn-virtual.d.ts +++ b/dist/thegridcn-virtual.d.ts @@ -1,8 +1,8 @@ import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; -declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; export { DataTable, DataTableProps }; diff --git a/dist/thegridcn-virtual.js b/dist/thegridcn-virtual.js index 5bb0c84..4605f86 100644 --- a/dist/thegridcn-virtual.js +++ b/dist/thegridcn-virtual.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-ICUHQJ2O.js';import'./chunk-FXX3TZ63.js';import'./chunk-TUHIU4D7.js';import {a as a$2}from'./chunk-TER4YPQI.js';import'./chunk-ERWHHOBD.js';import'./chunk-ICUCANNA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-32UNH3MQ.js';import'./chunk-674VSOYY.js';var a=a$1(a$2);export{a as DataTable};//# sourceMappingURL=thegridcn-virtual.js.map +import {a as a$1}from'./chunk-HHUJMI3H.js';import'./chunk-ZA7LQ2JH.js';import'./chunk-UKIIMIBW.js';import {a as a$2}from'./chunk-DV3HO2TR.js';import'./chunk-LDAX7PX5.js';import'./chunk-67Y57KCA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-BYTOUBQ7.js';import'./chunk-GSCYQ624.js';var a=a$1(a$2);export{a as DataTable};//# sourceMappingURL=thegridcn-virtual.js.map //# sourceMappingURL=thegridcn-virtual.js.map \ No newline at end of file diff --git a/dist/thegridcn.d.ts b/dist/thegridcn.d.ts index 6b2edb0..b10a5fe 100644 --- a/dist/thegridcn.d.ts +++ b/dist/thegridcn.d.ts @@ -1,8 +1,8 @@ import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; -declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; export { DataTable, DataTableProps }; diff --git a/dist/thegridcn.js b/dist/thegridcn.js index dfbbdf4..1d863db 100644 --- a/dist/thegridcn.js +++ b/dist/thegridcn.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-TER4YPQI.js';import'./chunk-ERWHHOBD.js';import {i}from'./chunk-ICUCANNA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-32UNH3MQ.js';import'./chunk-674VSOYY.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=thegridcn.js.map +import {a as a$1}from'./chunk-DV3HO2TR.js';import'./chunk-LDAX7PX5.js';import {i}from'./chunk-67Y57KCA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-BYTOUBQ7.js';import'./chunk-GSCYQ624.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=thegridcn.js.map //# sourceMappingURL=thegridcn.js.map \ No newline at end of file diff --git a/dist/types.d.ts b/dist/types.d.ts index 931f0e6..ac16eae 100644 --- a/dist/types.d.ts +++ b/dist/types.d.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { ColumnDef, CellContext, FilterFnOption, ColumnFiltersState, SortingState, ExpandedState, Row, ColumnOrderState, ColumnPinningState, VisibilityState, PaginationState, ColumnSizingState, Updater, Table, HeaderContext } from '@tanstack/react-table'; +import { ColumnDef, CellContext, FilterFnOption, ColumnFiltersState, SortingState, ExpandedState, Row, ColumnOrderState, ColumnPinningState, RowPinningState, VisibilityState, PaginationState, ColumnSizingState, Updater, Table, HeaderContext } from '@tanstack/react-table'; type DataTableViewMode = "table" | "card"; type DataTableAlign = "start" | "center" | "end"; @@ -9,7 +9,8 @@ type DataTableContainerBreakpoint = "sm" | "md" | "lg" | "xl" | "2xl"; type DataTableDensity = "compact" | "comfortable" | "spacious"; type DataTableCardSizing = "fixed" | "content" | "fluid"; type DataTableCellOverflow = "truncate" | "clip" | "wrap" | "visible"; -type DataTableColumnFilterType = "text" | "select" | "multi"; +type DataTableColumnFilterType = "text" | "select" | "multi" | "boolean" | "numberRange" | "dateRange"; +type DataTableColumnFilterOperator = "contains" | "equals" | "startsWith" | "endsWith"; type DataTableCsvExportScope = "filtered" | "page" | "selected" | "all"; type DataTableActionErrorSource = "toolbarAction" | "selectionAction" | "rowAction" | "rowClick" | "edit" | "fileUpload" | "infiniteScroll"; declare const DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS: Record; @@ -32,6 +33,10 @@ type DataTableColumnFilterOption = { label: string; value: string; }; +type DataTableColumnFilterRangeValue = { + from?: TValue; + to?: TValue; +}; type DataTableColumnFilterConfig = { type: DataTableColumnFilterType; label?: string; @@ -40,6 +45,12 @@ type DataTableColumnFilterConfig = { rows: Array; }) => Array); getOptionValue?: (value: TValue | undefined, row: TData) => string; + operator?: DataTableColumnFilterOperator; + trueLabel?: string; + falseLabel?: string; + min?: number | string; + max?: number | string; + step?: number; }; type DataTableColumnMeta = { type?: DataTableColumnType; @@ -72,6 +83,22 @@ type DataTableColumnDef = ColumnDef & { type DataTableColumnGroupDef = DataTableColumnDef & { id: string; columns: Array>; + /** + * A concise explanation of the columns in this group. It is exposed as an + * accessible description and native tooltip on the shared header. + */ + description?: string; + /** + * Allows leaves to cross this group's boundary during column reordering. + * Groups are locked by default so a shared heading remains intact. + */ + freeReordering?: boolean; + /** Additional class name for this shared group header. */ + headerClassName?: string; + /** Additional inline styles for this shared group header. */ + headerStyle?: React.CSSProperties; + /** Height for this shared group header, overriding `columnGroupHeaderHeight`. */ + headerHeight?: React.CSSProperties["height"]; }; type DataTableToolbarAction = { key: string; @@ -88,6 +115,12 @@ type DataTableToolbarAction = { variant?: "default" | "secondary" | "outline" | "ghost" | "destructive"; disabled?: boolean; }; +type DataTableSelectionActionContext = { + /** Selected row objects that are present in the currently loaded data. */ + rows: Array; + /** Every selected row id, including ids retained across server pages. */ + rowIds: Array; +}; type DataTableSelectionAction = { key: string; label: string; @@ -95,11 +128,9 @@ type DataTableSelectionAction = { className?: string; }>; iconOnly?: boolean; - onClick: (context: { - rows: Array; - }) => void | Promise; + onClick: (context: DataTableSelectionActionContext) => void | Promise; variant?: "default" | "secondary" | "outline" | "ghost" | "destructive"; - disabled?: boolean | ((rows: Array) => boolean); + disabled?: boolean | ((rows: Array, context: DataTableSelectionActionContext) => boolean); }; type DataTableRowAction = { key: string; @@ -131,6 +162,10 @@ type DataTableToolbarVisibility = { type DataTableCardRendererProps = { row: TData; rowId: string; + depth: number; + canExpandSubRows: boolean; + isSubRowsExpanded: boolean; + toggleSubRowsExpanded: () => void; isSelected: boolean; onSelectedChange: (nextValue: boolean) => void; actions: Array>; @@ -200,6 +235,13 @@ type DataTableExpandedRowProps = { rowId: string; tableRow: Row; }; +/** A separately controlled application detail panel rendered beneath a row. */ +type DataTableDetailPanel = { + expanded?: ExpandedState; + onExpandedChange?: (expanded: ExpandedState) => void; + getRowCanExpand?: (row: TData) => boolean; + render: (props: DataTableExpandedRowProps) => React.ReactNode; +}; type DataTableCsvExportOptions = { filename?: string; includeHeaders?: boolean; @@ -231,6 +273,7 @@ type DataTableColumnPrefs = { sizing?: Record; order?: ColumnOrderState; pinning?: ColumnPinningState; + rowPinning?: RowPinningState; density?: DataTableDensity; }; type DataTablePersistenceSlice = keyof DataTableColumnPrefs; @@ -266,6 +309,7 @@ type DataTableState = { expanded: ExpandedState; columnOrder: ColumnOrderState; columnPinning: ColumnPinningState; + rowPinning: RowPinningState; columnSizing: ColumnSizingState; density: DataTableDensity; viewMode: DataTableViewMode; @@ -321,6 +365,8 @@ type DataTableApi = { renameSavedView: (id: string, name: string) => DataTableSavedView | undefined; deleteSavedView: (id: string) => boolean; clearSavedViews: () => boolean; + pinRow: (rowId: string, position?: "top" | "bottom") => boolean; + unpinRow: (rowId: string) => boolean; focus: () => void; scrollToRow: (rowId: string) => boolean; scrollToColumn: (columnId: string) => boolean; @@ -338,6 +384,10 @@ type DataTableLabels = { columns: string; filters: string; clearFilters: string; + filterFrom?: string; + filterTo?: string; + filterTrue?: string; + filterFalse?: string; selectedRows: (count: number) => string; showHiddenRows: (label: string) => string; recordsPerPage: string; @@ -351,6 +401,7 @@ type DataTableLabels = { nextPage: string; lastPage: string; selectAllVisibleRows?: string; + selectAllFilteredRows?: string; selectRow?: string; selectCardRow?: (rowId: string) => string; switchToTableView?: string; @@ -365,6 +416,8 @@ type DataTableLabels = { cancelEdit: string; expandRow: string; collapseRow: string; + expandRowDetails?: string; + collapseRowDetails?: string; exportCsv: string; density: string; compactDensity: string; @@ -373,6 +426,9 @@ type DataTableLabels = { pinLeft: string; pinRight: string; unpin: string; + pinRowToTop: string; + pinRowToBottom: string; + unpinRow: string; resizeColumn: (columnLabel: string) => string; }; type DataTableSummaryRow = { @@ -391,6 +447,7 @@ type DataTableRowClassNameContext = { isExpanded: boolean; isLoading: boolean; isSelected: boolean; + pinnedPosition: false | "top" | "bottom"; }; type DataTableProps = { columns: Array>; @@ -426,16 +483,45 @@ type DataTableProps = { rowSelection?: Record; onRowSelectionChange?: (rowSelection: Record) => void; enableRowSelection?: boolean; + /** Allows multiple selected rows globally or per row. Defaults to true. */ + enableMultiRowSelection?: boolean | ((row: TData) => boolean); + /** Cascades parent selection to sub-rows globally or per row. Defaults to true. */ + enableSubRowSelection?: boolean | ((row: TData) => boolean); + /** Prevents individual rows from being selected. */ + getRowCanSelect?: (row: TData) => boolean; + /** Select-all affects the current page or all loaded filtered rows. */ + rowSelectionSelectAllScope?: "page" | "filtered"; expanded?: ExpandedState; onExpandedChange?: (expanded: ExpandedState) => void; + /** Resolve nested records for tree expansion. */ + getSubRows?: (row: TData, index: number) => Array | undefined; + /** Keep expansion state controlled by the host; useful for server-loaded children. */ + manualExpanding?: boolean; + /** Keep child rows with their parent when paginating. Defaults to TanStack's behavior. */ + paginateExpandedRows?: boolean; + /** Include parents when a descendant matches a filter. */ + filterFromLeafRows?: boolean; + /** Limit descendant traversal while filtering. */ + maxLeafRowFilterDepth?: number; + /** New, independently controlled detail-panel contract. */ + detailPanel?: DataTableDetailPanel; getRowCanExpand?: (row: TData) => boolean; + /** @deprecated Use `detailPanel={{ render }}`. Kept as a detail-panel bridge. */ renderExpandedRow?: (props: DataTableExpandedRowProps) => React.ReactNode; columnOrder?: ColumnOrderState; onColumnOrderChange?: (columnOrder: ColumnOrderState) => void; enableColumnReordering?: boolean; + /** Default height for shared column-group header cells. */ + columnGroupHeaderHeight?: React.CSSProperties["height"]; columnPinning?: ColumnPinningState; onColumnPinningChange?: (columnPinning: ColumnPinningState) => void; enableColumnPinning?: boolean; + rowPinning?: RowPinningState; + onRowPinningChange?: (rowPinning: RowPinningState) => void; + /** Enables row actions that pin a row to the top or bottom of the table. */ + enableRowPinning?: boolean | ((row: TData) => boolean); + /** Keep pinned rows visible when filtering or paginating them out. */ + keepPinnedRows?: boolean; toolbarActions?: Array>; selectionActions?: Array>; rowActions?: Array>; @@ -507,4 +593,4 @@ declare function hideOnClassName(hideOn: DataTableContainerBreakpoint | Array | undefined, containerWidth: number): boolean; declare function rowSelectionStateFromRows(rows: Array>): TData[]; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, type DataTableActionErrorContext, type DataTableActionErrorSource, type DataTableAlign, type DataTableApi, type DataTableCardRendererProps, type DataTableCardSizing, type DataTableCardVirtualizationConfig, type DataTableCellEditRenderProps, type DataTableCellOverflow, type DataTableColumnDef, type DataTableColumnFilterConfig, type DataTableColumnFilterOption, type DataTableColumnFilterType, type DataTableColumnFixed, type DataTableColumnGroupDef, type DataTableColumnMeta, type DataTableColumnPrefs, type DataTableColumnType, type DataTableColumnVisibilityOption, type DataTableContainerBreakpoint, type DataTableCsvExportOptions, type DataTableCsvExportScope, type DataTableDensity, type DataTableDragAndDropConfig, type DataTableEditableRowsConfig, type DataTableEmptyStateContext, type DataTableExpandedRowProps, type DataTableFileUploadConfig, type DataTableHiddenRowsConfig, type DataTableInfiniteScroll, type DataTableInitialState, type DataTableLabels, type DataTableLoadingState, type DataTablePersistenceConfig, type DataTablePersistenceOperation, type DataTablePersistencePayload, type DataTablePersistenceSlice, type DataTablePersistenceStorage, type DataTableProps, type DataTableResetOptions, type DataTableRowAction, type DataTableRowClassNameContext, type DataTableRowLoadingState, type DataTableSavedView, type DataTableSavedViewSlice, type DataTableSavedViewsChangeOperation, type DataTableSavedViewsConfig, type DataTableSavedViewsPayload, type DataTableSelectionAction, type DataTableState, type DataTableSummaryRow, type DataTableToolbarAction, type DataTableToolbarVisibility, type DataTableViewMode, type DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows }; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, type DataTableActionErrorContext, type DataTableActionErrorSource, type DataTableAlign, type DataTableApi, type DataTableCardRendererProps, type DataTableCardSizing, type DataTableCardVirtualizationConfig, type DataTableCellEditRenderProps, type DataTableCellOverflow, type DataTableColumnDef, type DataTableColumnFilterConfig, type DataTableColumnFilterOperator, type DataTableColumnFilterOption, type DataTableColumnFilterRangeValue, type DataTableColumnFilterType, type DataTableColumnFixed, type DataTableColumnGroupDef, type DataTableColumnMeta, type DataTableColumnPrefs, type DataTableColumnType, type DataTableColumnVisibilityOption, type DataTableContainerBreakpoint, type DataTableCsvExportOptions, type DataTableCsvExportScope, type DataTableDensity, type DataTableDetailPanel, type DataTableDragAndDropConfig, type DataTableEditableRowsConfig, type DataTableEmptyStateContext, type DataTableExpandedRowProps, type DataTableFileUploadConfig, type DataTableHiddenRowsConfig, type DataTableInfiniteScroll, type DataTableInitialState, type DataTableLabels, type DataTableLoadingState, type DataTablePersistenceConfig, type DataTablePersistenceOperation, type DataTablePersistencePayload, type DataTablePersistenceSlice, type DataTablePersistenceStorage, type DataTableProps, type DataTableResetOptions, type DataTableRowAction, type DataTableRowClassNameContext, type DataTableRowLoadingState, type DataTableSavedView, type DataTableSavedViewSlice, type DataTableSavedViewsChangeOperation, type DataTableSavedViewsConfig, type DataTableSavedViewsPayload, type DataTableSelectionAction, type DataTableSelectionActionContext, type DataTableState, type DataTableSummaryRow, type DataTableToolbarAction, type DataTableToolbarVisibility, type DataTableViewMode, type DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows }; diff --git a/dist/ui-kit-D2knVOJ4.d.ts b/dist/ui-kit-HehdZfvO.d.ts similarity index 98% rename from dist/ui-kit-D2knVOJ4.d.ts rename to dist/ui-kit-HehdZfvO.d.ts index eca2dea..01420cd 100644 --- a/dist/ui-kit-D2knVOJ4.d.ts +++ b/dist/ui-kit-HehdZfvO.d.ts @@ -26,6 +26,8 @@ type DataTableUiClassNames = { row?: string; rowEven?: string; rowOdd?: string; + rowPinnedBottom?: string; + rowPinnedTop?: string; rowSelected?: string; tableContainer?: string; tableScrollArea?: string; diff --git a/dist/virtual.d.ts b/dist/virtual.d.ts index 6b2edb0..b10a5fe 100644 --- a/dist/virtual.d.ts +++ b/dist/virtual.d.ts @@ -1,8 +1,8 @@ import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOption, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; -declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, expanded, onExpandedChange, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnPinning, onColumnPinningChange, enableColumnPinning, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; export { DataTable, DataTableProps }; diff --git a/dist/virtual.js b/dist/virtual.js index 595da02..8cae07b 100644 --- a/dist/virtual.js +++ b/dist/virtual.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-ARW55TNZ.js';import {a}from'./chunk-ICUHQJ2O.js';import'./chunk-FXX3TZ63.js';import'./chunk-TUHIU4D7.js';import'./chunk-ERWHHOBD.js';import'./chunk-ICUCANNA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-32UNH3MQ.js';import'./chunk-674VSOYY.js';var o=a(a$1);export{o as DataTable};//# sourceMappingURL=virtual.js.map +import {a as a$1}from'./chunk-MYQZYDHU.js';import {a}from'./chunk-HHUJMI3H.js';import'./chunk-ZA7LQ2JH.js';import'./chunk-UKIIMIBW.js';import'./chunk-LDAX7PX5.js';import'./chunk-67Y57KCA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-BYTOUBQ7.js';import'./chunk-GSCYQ624.js';var o=a(a$1);export{o as DataTable};//# sourceMappingURL=virtual.js.map //# sourceMappingURL=virtual.js.map \ No newline at end of file diff --git a/docs/Migration.md b/docs/Migration.md index b7aefba..66582b7 100644 --- a/docs/Migration.md +++ b/docs/Migration.md @@ -1,5 +1,26 @@ # Migration Guide +## 4.3.0 additive feature release + +Version 4.3.0 removes no prop, type, or entrypoint. Existing flat-row tables, +detail panels based on `renderExpandedRow`, manual server data, and column +reordering continue to work. + +- New server integrations can import `useDataTableDataSource` from + `data-table-pro/data-source`; existing `data` plus manual flags remain + supported. +- `renderExpandedRow` remains a deprecated detail-panel bridge. Use + `detailPanel={{ render, getRowCanExpand }}` when adopting `getSubRows` so + application details and hierarchical expansion have independent state. +- Nested column groups are now locked during reordering by default. Add + `freeReordering: true` to every group boundary that intentionally permits a + leaf to cross it. +- Row pinning is opt-in through `enableRowPinning`. Add `rowPinning` to custom + persistence/saved-view slice lists if those lists override the defaults. +- Responsive presentation is owned by `data-table-pro/styles.css` container + queries. Consumers should not add viewport media-query copies of the table + breakpoints. + ## 4.0.0 code-splitting entrypoints No existing import or prop needs to change. The base adapter entrypoints still diff --git a/docs/Roadmap.md b/docs/Roadmap.md index 0a9ddad..2db6f8c 100644 --- a/docs/Roadmap.md +++ b/docs/Roadmap.md @@ -16,11 +16,11 @@ Audit baseline: Current implementation baseline: -- package version: 4.2.0 +- package version: 4.3.0 - React/React DOM peers: 19.2.8 - TanStack Table: 8.21.3 - TanStack Virtual: 3.14.8 -- validation: 211 unit/integration tests, enforced coverage and declaration +- validation: 281 unit/integration tests, enforced coverage and declaration snapshots, SSR/hydration tests, a packed-consumer build, and six adapter/theme Playwright screenshot and axe cases - toolchain: TypeScript 7 CLI with the official TypeScript 6 compiler-API @@ -222,6 +222,27 @@ Quality: ### Phase 2: TanStack feature parity (3.2) +Status: partially delivered in 4.3.0. Richer filters, tree/detail expansion, +row pinning, selection policies, and hardened column-group behavior are +complete; faceting and data grouping/aggregation remain. + +Delivered in 4.3.0: + +- Boolean, inclusive numeric-range, and inclusive date-range column filters, + including localized labels, serializable values, and client filter + functions. +- Independent tree expansion and application detail panels, with `getSubRows`, + manual expansion, leaf-first/depth-limited filtering, expanded-row + pagination policy, accessible indentation controls, and the deprecated + `renderExpandedRow` bridge. +- Controlled/uncontrolled top and bottom row pinning, per-row pin predicates, + visibility policy, row-menu actions, API commands, persistence, saved views, + and styling hooks. +- Single/multi/sub-row selection policies, per-row selectability, page versus + filtered select-all scope, and cross-page selected IDs for manual data. +- Locked nested group reordering by default, explicit cross-group opt-in, + descriptions, group-specific height, class, and style hooks. + Filtering and faceting: - Add `boolean`, `numberRange`, `dateRange`, and `faceted` filter definitions. @@ -320,20 +341,22 @@ Initial budgets: | Artifact | Budget | | --- | --- | -| Base shadcn package-owned runtime | <= 35 KiB gzip | +| Base shadcn package-owned runtime | <= 42 KiB gzip | | HeroUI/The Gridcn adapter delta | <= 6 KiB gzip each | | URL-state entry | <= 5 KiB gzip, excluding peer dependency | +| Data-source entry | <= 3 KiB gzip, excluding React peer dependency | | Base entry imports TanStack Virtual | No | | Demo initial JavaScript | <= 100 KiB gzip | Budgets may be adjusted once source-map-based attribution is in CI, but any increase must be explained in the changelog. -The first measured minified base graph is 33.7 KiB gzip. The provisional -30 KiB target was adjusted to 35 KiB after source attribution so CI has a -realistic but narrow regression margin; optional virtualization is excluded -from this graph. The adapter deltas are 0.2 KiB (HeroUI) and 0.5 KiB (The -Gridcn), URL state is 2.2 KiB, and demo initial JavaScript is 64.9 KiB gzip. +The 4.3.0 minified base graph is 39.3 KiB gzip after adding richer filters, +tree/detail expansion, selection policies, group behavior, and row pinning. +The CI ceiling is 42 KiB, retaining a narrow margin while optional +virtualization and the server data source remain separate. The adapter deltas +are measured independently, URL state remains below 5 KiB, the data-source +entry is 2.0 KiB, and demo initial JavaScript remains below 100 KiB gzip. ### Phase 4: modern-grid quality of life (3.4) @@ -371,6 +394,13 @@ Toolbar and data operations: Server data source: +Delivered in 4.3.0 as the independently importable +`data-table-pro/data-source` entrypoint for offset and cursor pagination, +sorting, global/column filters, caller-defined query context, abort signals, +known/unknown totals, facets, metadata, stale-request protection, request +deduplication, caching, retry, refresh, and invalidation. Grouping, +aggregation, and lazy tree-path requests remain. + - Add a typed request containing pagination/cursor, sorting, global/column filters, grouping, aggregation, expansion path, and abort signal. - Add a typed response containing rows, stable IDs, known/unknown totals, diff --git a/fixtures/packed-consumer/src/main.tsx b/fixtures/packed-consumer/src/main.tsx index 9aa7132..8f3fd10 100644 --- a/fixtures/packed-consumer/src/main.tsx +++ b/fixtures/packed-consumer/src/main.tsx @@ -23,6 +23,10 @@ import { useDataTableUrlState, type UseDataTableUrlStateOptions, } from "data-table-pro/url-state"; +import { + useDataTableDataSource, + type DataTableDataSource, +} from "data-table-pro/data-source"; import type { DataTableState } from "data-table-pro/types"; import "data-table-pro/styles.css"; import "./styles.css"; @@ -50,28 +54,43 @@ const urlOptions: UseDataTableUrlStateOptions = { keyPrefix: "people-", enabled: ["columnVisibility"], }; +const dataSource: DataTableDataSource = () => ({ + rows, + rowCount: rows.length, +}); function App() { const shadcnApi = React.useRef>(null); + const serverRows = useDataTableDataSource({ + columnFilters: [], + enabled: false, + initialData: rows, + mode: "offset", + pagination: { pageIndex: 0, pageSize: 10 }, + sorting: [], + source: dataSource, + }); React.useEffect(() => { if ( typeof useDataTableUrlState !== "function" || + typeof useDataTableDataSource !== "function" || + !serverRows.tableProps.manualPagination || !urlOptions.keyPrefix || !advancedUiKit.Button ) { throw new Error("A public package entrypoint was not packaged"); } - }, []); + }, [serverRows.tableProps.manualPagination]); return (
    row.id} initialState={initialState} + {...serverRows.tableProps} /> Date: Sun, 9 Aug 2026 02:02:15 +0000 Subject: [PATCH 12/31] feat: extend server data source contract --- .../use-data-table-data-source.test.tsx | 14 +++++ .../data-source/use-data-table-data-source.ts | 60 ++++++++++++++++++- 2 files changed, 73 insertions(+), 1 deletion(-) diff --git a/src/core/data-source/use-data-table-data-source.test.tsx b/src/core/data-source/use-data-table-data-source.test.tsx index 863cb23..fb55252 100644 --- a/src/core/data-source/use-data-table-data-source.test.tsx +++ b/src/core/data-source/use-data-table-data-source.test.tsx @@ -18,7 +18,10 @@ afterEach(() => { describe("useDataTableDataSource", () => { it("sends a typed offset request and returns manual table props", async () => { const source = vi.fn(() => ({ + aggregates: { salary: 120_000 }, + metadata: { revision: "users-v2" }, rows: [{ id: "ada" }], + rowIds: ["ada"], rowCount: 31, })); let result: UseDataTableDataSourceResult | undefined; @@ -26,6 +29,10 @@ describe("useDataTableDataSource", () => { function Harness() { result = useDataTableDataSource({ columnFilters: [{ id: "role", value: "admin" }], + globalFilter: "ada", + grouping: ["department"], + aggregations: { salary: "sum" }, + expansionPath: ["engineering"], mode: "offset", pagination: { pageIndex: 1, pageSize: 10 }, query: { organizationId: "org_1" }, @@ -41,6 +48,10 @@ describe("useDataTableDataSource", () => { expect(source).toHaveBeenCalledWith( expect.objectContaining({ columnFilters: [{ id: "role", value: "admin" }], + globalFilter: "ada", + grouping: ["department"], + aggregations: { salary: "sum" }, + expansionPath: ["engineering"], limit: 10, mode: "offset", offset: 10, @@ -58,6 +69,9 @@ describe("useDataTableDataSource", () => { totalRowCount: 31, }); expect(result?.tableProps.hasNextPage).toBe(true); + expect(result?.aggregates).toEqual({ salary: 120_000 }); + expect(result?.metadata).toEqual({ revision: "users-v2" }); + expect(result?.rowIds).toEqual(["ada"]); }); it("cancels superseded work and ignores a late response", async () => { diff --git a/src/core/data-source/use-data-table-data-source.ts b/src/core/data-source/use-data-table-data-source.ts index cb01908..df852f0 100644 --- a/src/core/data-source/use-data-table-data-source.ts +++ b/src/core/data-source/use-data-table-data-source.ts @@ -1,6 +1,7 @@ import * as React from "react"; import type { ColumnFiltersState, + GroupingState, PaginationState, SortingState, } from "@tanstack/react-table"; @@ -24,6 +25,14 @@ export type DataTableDataSourceQuery = { cursor: TCursor | null; sorting: SortingState; columnFilters: ColumnFiltersState; + /** Server-owned global filter value, normally the table toolbar query. */ + globalFilter?: string; + /** Server-owned row grouping state. */ + grouping?: GroupingState; + /** Requested aggregate functions keyed by result/column identifier. */ + aggregations?: Record; + /** Stable ancestor/group identifiers for lazy child or group loading. */ + expansionPath?: Array; /** Application-owned request parameters, such as a tenant or parent ID. */ query: TQuery | undefined; }; @@ -47,6 +56,12 @@ export type DataTableDataSourceResponse< nextCursor?: TCursor | null; /** Backend-provided facet/count metadata for filter UIs. */ facets?: TFacets; + /** Stable row identifiers in response order when IDs are server-projected. */ + rowIds?: Array; + /** Backend-provided aggregate values keyed by result/column identifier. */ + aggregates?: Record; + /** Application-owned response metadata such as revision or timing data. */ + metadata?: Record; }; export type DataTableDataSource< @@ -112,6 +127,8 @@ export type UseDataTableDataSourceOptions< onPageSizeChange?: (pageSize: number) => void; onSortingChange?: (sorting: SortingState) => void; onColumnFiltersChange?: (filters: ColumnFiltersState) => void; + onGlobalFilterChange?: (globalFilter: string) => void; + onGroupingChange?: (grouping: GroupingState) => void; }; export type DataTableDataSourceTableProps = Pick< @@ -134,6 +151,7 @@ export type DataTableDataSourceTableProps = Pick< >; export type UseDataTableDataSourceResult = { + aggregates: Record | undefined; data: Array; error: unknown; facets: TFacets | undefined; @@ -144,6 +162,8 @@ export type UseDataTableDataSourceResult | undefined; + rowIds: Array | undefined; rowCount: number | undefined; /** Starts a network request, bypassing a fresh cache entry. */ refresh: () => Promise | undefined>; @@ -167,13 +187,16 @@ type ActiveRequest = { }; type SourceState = { + aggregates: Record | undefined; data: Array; error: unknown; facets: TFacets | undefined; isFetching: boolean; + metadata: Record | undefined; nextCursor: TCursor | null | undefined; responseKey: string | null; rowCount: number | undefined; + rowIds: Array | undefined; status: "idle" | "loading" | "success" | "error"; }; @@ -193,10 +216,14 @@ export function useDataTableDataSource< options: UseDataTableDataSourceOptions, ): UseDataTableDataSourceResult { const { + aggregations, columnFilters, cursor, enabled = true, + expansionPath, getRequestKey, + globalFilter, + grouping, initialData = [], mode, pagination, @@ -217,21 +244,28 @@ export function useDataTableDataSource< const mountedRef = React.useRef(true); const [state, setState] = React.useState>( () => ({ + aggregates: undefined, data: initialData, error: null, facets: undefined, isFetching: false, + metadata: undefined, nextCursor: undefined, responseKey: null, rowCount: undefined, + rowIds: undefined, status: initialData.length > 0 ? "success" : "idle", }), ); const requestQuery = React.useMemo>( () => ({ + aggregations, columnFilters, cursor: cursor ?? null, + expansionPath, + globalFilter, + grouping, limit: pagination.pageSize, mode, offset: pagination.pageIndex * pagination.pageSize, @@ -239,7 +273,18 @@ export function useDataTableDataSource< query, sorting, }), - [columnFilters, cursor, mode, pagination, query, sorting], + [ + aggregations, + columnFilters, + cursor, + expansionPath, + globalFilter, + grouping, + mode, + pagination, + query, + sorting, + ], ); const requestKey = getRequestKey ? getRequestKey(requestQuery) @@ -251,8 +296,12 @@ export function useDataTableDataSource< ): Promise | undefined> => { const currentOptions = latestOptionsRef.current; const currentQuery: DataTableDataSourceQuery = { + aggregations: currentOptions.aggregations, columnFilters: currentOptions.columnFilters, cursor: currentOptions.cursor ?? null, + expansionPath: currentOptions.expansionPath, + globalFilter: currentOptions.globalFilter, + grouping: currentOptions.grouping, limit: currentOptions.pagination.pageSize, mode: currentOptions.mode, offset: @@ -279,13 +328,16 @@ export function useDataTableDataSource< if (!force && cached && cacheSettings && isCacheFresh(cached, cacheSettings)) { if (mountedRef.current) { setState({ + aggregates: cached.response.aggregates, data: cached.response.rows, error: null, facets: cached.response.facets, isFetching: false, + metadata: cached.response.metadata, nextCursor: cached.response.nextCursor, responseKey: currentKey, rowCount: cached.response.rowCount, + rowIds: cached.response.rowIds, status: "success", }); } @@ -323,13 +375,16 @@ export function useDataTableDataSource< } if (mountedRef.current) { setState({ + aggregates: response.aggregates, data: response.rows, error: null, facets: response.facets, isFetching: false, + metadata: response.metadata, nextCursor: response.nextCursor, responseKey: currentKey, rowCount: response.rowCount, + rowIds: response.rowIds, status: "success", }); } @@ -433,6 +488,7 @@ export function useDataTableDataSource< ); return { + aggregates: state.aggregates, data: state.data, error: state.error, facets: state.facets, @@ -441,9 +497,11 @@ export function useDataTableDataSource< isFetching: enabled && state.isFetching, isLoading: enabled && state.status === "loading", isSuccess: state.status === "success", + metadata: state.metadata, nextCursor: state.nextCursor, refresh, rowCount: state.rowCount, + rowIds: state.rowIds, tableProps, }; } From 1f775f359258131a1f6631e5649d8c81b809ad58 Mon Sep 17 00:00:00 2001 From: Toby Martin Date: Sun, 9 Aug 2026 02:08:07 +0000 Subject: [PATCH 13/31] feat: add opt-in interactive grid accessibility --- browser-tests/data-table.spec.ts | 21 +++ demo/src/DemoApp.tsx | 1 + docs/API.md | 28 ++++ src/core/data-table/create-data-table.tsx | 18 +++ src/core/data-table/data-table-body-row.tsx | 60 +++++++- .../data-table-grid-accessibility.test.tsx | 129 ++++++++++++++++ .../data-table/data-table-header-cell.tsx | 8 + .../data-table/data-table-table-panel.tsx | 139 +++++++++++++++++- .../data-table-virtual-table-panel.tsx | 11 ++ src/core/types.ts | 21 +++ 10 files changed, 427 insertions(+), 9 deletions(-) create mode 100644 src/core/data-table/data-table-grid-accessibility.test.tsx diff --git a/browser-tests/data-table.spec.ts b/browser-tests/data-table.spec.ts index f19243e..9266fd4 100644 --- a/browser-tests/data-table.spec.ts +++ b/browser-tests/data-table.spec.ts @@ -178,3 +178,24 @@ test("responsive behavior follows table container boundaries", async ({ await expect(header("role")).toBeVisible(); await expect(header("location")).toHaveCount(0); }); + +test("interactive grid navigation follows the rendered cell geometry", async ({ + page, +}) => { + await page.goto("/"); + const grid = page.getByRole("grid").first(); + await expect(grid).toHaveAttribute("aria-colcount", /[1-9]/); + await expect(grid).toHaveAttribute("aria-rowcount", /[1-9]/); + + const firstCell = grid.getByRole("gridcell").first(); + await firstCell.focus(); + await page.keyboard.press("ArrowRight"); + await expect(grid.getByRole("gridcell").nth(1)).toBeFocused(); + await page.keyboard.press("PageDown"); + const focused = await page.locator(':focus').evaluate((element) => ({ + row: element.getAttribute("data-grid-row-index"), + column: element.getAttribute("data-grid-column-index"), + })); + expect(focused.row).not.toBe("0"); + expect(focused.column).toBe("1"); +}); diff --git a/demo/src/DemoApp.tsx b/demo/src/DemoApp.tsx index d5d9006..b954dd8 100644 --- a/demo/src/DemoApp.tsx +++ b/demo/src/DemoApp.tsx @@ -403,6 +403,7 @@ export function DemoApp() { rowSelection={rowSelection} onRowSelectionChange={setRowSelection} enableRowSelection + interactiveGrid toolbarActions={[ { key: "refresh", diff --git a/docs/API.md b/docs/API.md index f59bf5b..d4864fd 100644 --- a/docs/API.md +++ b/docs/API.md @@ -592,6 +592,34 @@ Removed in `2.0.1`: | `onSortingChange` | `(sorting: SortingState) => void` | `undefined` | Sorting change callback. | | `manualSorting` | `boolean` | `false` | Disables client-side sorting row model. | +### Interactive grid accessibility + +The default table view uses native HTML table semantics and ordinary browser +tab order. Opt in when the table is a keyboard-navigable data workspace: + +```tsx + +``` + +| Prop | Type | Default | Description | +| --- | --- | --- | --- | +| `accessibility` | `DataTableAccessibilityOptions` | `undefined` | Use `{ mode: "grid" }` for ARIA grid semantics. `pageSize` supplies the PageUp/PageDown step when the viewport has no measurable layout. | +| `interactiveGrid` | `boolean \| DataTableInteractiveGridOptions` | `false` | Shorthand for grid mode; the object form accepts `pageSize`. | + +Grid mode applies `grid`, `rowgroup`, `row`, `columnheader`, and `gridcell` +roles while retaining the native table elements. It exposes `aria-rowcount` and +`aria-colcount`; a supplied `totalRowCount` is used for server-backed or +virtualized data. Mounted rows and cells receive their corresponding +`aria-rowindex` and `aria-colindex`, and exactly one cell has roving +`tabindex="0"`. Arrow keys, Home/End, +Ctrl/Cmd+Home/End, and PageUp/PageDown move that cell. Buttons, checkboxes, +links, and edit inputs keep their own keyboard behavior; Escape returns focus +from an interactive descendant to its grid cell. + ### Pagination props | Prop | Type | Default | Description | diff --git a/src/core/data-table/create-data-table.tsx b/src/core/data-table/create-data-table.tsx index b62d68a..c5f17fe 100644 --- a/src/core/data-table/create-data-table.tsx +++ b/src/core/data-table/create-data-table.tsx @@ -209,6 +209,8 @@ export function createDataTableWithPanels( dragAndDrop, fileUpload, virtualization, + accessibility, + interactiveGrid, }: DataTableProps) { const containerRef = React.useRef(null); const fileInputRef = React.useRef(null); @@ -1297,6 +1299,22 @@ export function createDataTableWithPanels( uiClassNames={uiClassNames} viewportHeight={viewportHeight} virtualization={virtualization} + gridMode={ + accessibility?.mode === "grid" || interactiveGrid === true || + typeof interactiveGrid === "object" + } + gridPageSize={ + accessibility?.pageSize ?? + (typeof interactiveGrid === "object" + ? interactiveGrid.pageSize + : undefined) + } + gridRowOffset={ + manualPagination + ? currentPagination.pageIndex * currentPagination.pageSize + : 0 + } + totalRowCount={totalRowCount} virtualPaddingBottom={virtualPaddingBottom} virtualPaddingTop={virtualPaddingTop} visibleLeafColumnCount={visibleLeafColumnCount} diff --git a/src/core/data-table/data-table-body-row.tsx b/src/core/data-table/data-table-body-row.tsx index 7546561..2357fc1 100644 --- a/src/core/data-table/data-table-body-row.tsx +++ b/src/core/data-table/data-table-body-row.tsx @@ -30,6 +30,16 @@ type DataTableBodyRowProps = { dragAndDrop: DataTableProps["dragAndDrop"]; explicitCustomCellColumnIds: ReadonlySet; getRowClassName: DataTableProps["getRowClassName"]; + gridMode: boolean; + gridRowAriaIndex: number; + gridRowIndex: number; + activeGridCell: { row: number; column: number }; + onGridCellFocus: (cell: { row: number; column: number }) => void; + onGridCellKeyDown: ( + event: React.KeyboardEvent, + row: number, + column: number, + ) => void; isDraggable: boolean; isDetailExpanded: boolean; isEditing: boolean; @@ -58,6 +68,12 @@ function DataTableBodyRowInner({ dragAndDrop, explicitCustomCellColumnIds, getRowClassName, + gridMode, + gridRowAriaIndex, + gridRowIndex, + activeGridCell, + onGridCellFocus, + onGridCellKeyDown, isDraggable, isDetailExpanded, isEditing, @@ -106,6 +122,8 @@ function DataTableBodyRowInner({ data-state={ isInitialLoadingRow ? undefined : isSelected ? "selected" : undefined } + role={gridMode ? "row" : undefined} + aria-rowindex={gridMode ? gridRowAriaIndex : undefined} tabIndex={onRowClick && !isInitialLoadingRow ? 0 : undefined} className={cn( !isInitialLoadingRow && @@ -183,7 +201,7 @@ function DataTableBodyRowInner({ }); }} > - {visibleCells.map((cell) => { + {visibleCells.map((cell, columnIndex) => { const meta = ( cell.column.columnDef as DataTableColumnDef ).meta; @@ -208,6 +226,39 @@ function DataTableBodyRowInner({ return ( onGridCellFocus({ row: gridRowIndex, column: columnIndex }) + : undefined + } + onKeyDown={ + gridMode + ? (event: React.KeyboardEvent) => { + if (event.target !== event.currentTarget) { + if (event.key === "Escape") { + event.preventDefault(); + event.currentTarget.focus(); + } + return; + } + onGridCellKeyDown(event, gridRowIndex, columnIndex); + } + : undefined + } className={cn( "border-b", getDensityCellClassName(currentDensity), @@ -331,6 +382,13 @@ function areDataTableBodyRowsEqual( previous.onRowClick === next.onRowClick && previous.dragAndDrop === next.dragAndDrop && previous.getRowClassName === next.getRowClassName && + previous.gridMode === next.gridMode && + previous.gridRowAriaIndex === next.gridRowAriaIndex && + previous.gridRowIndex === next.gridRowIndex && + previous.activeGridCell.row === next.activeGridCell.row && + previous.activeGridCell.column === next.activeGridCell.column && + previous.onGridCellFocus === next.onGridCellFocus && + previous.onGridCellKeyDown === next.onGridCellKeyDown && previous.stripedRows === next.stripedRows && previous.uiClassNames === next.uiClassNames && previous.explicitCustomCellColumnIds === next.explicitCustomCellColumnIds && diff --git a/src/core/data-table/data-table-grid-accessibility.test.tsx b/src/core/data-table/data-table-grid-accessibility.test.tsx new file mode 100644 index 0000000..d17b1ea --- /dev/null +++ b/src/core/data-table/data-table-grid-accessibility.test.tsx @@ -0,0 +1,129 @@ +import * as React from "react"; +import { afterEach, describe, expect, it } from "vitest"; +import { + cleanup, + createEvent, + fireEvent, + render, + screen, + waitFor, +} from "@testing-library/react"; +import { DataTable as ShadcnDataTable } from "../../index"; +import { DataTable as HeroDataTable } from "../../entries/heroui"; +import { DataTable as GridcnDataTable } from "../../entries/thegridcn"; +import type { DataTableColumnDef } from "../types"; + +type Person = { id: string; name: string; age: number }; + +const data: Array = [ + { id: "ada", name: "Ada", age: 36 }, + { id: "grace", name: "Grace", age: 37 }, + { id: "lin", name: "Lin", age: 38 }, +]; +const columns: Array> = [ + { accessorKey: "name", header: "Name" }, + { accessorKey: "age", header: "Age" }, +]; + +afterEach(cleanup); + +describe("interactive grid accessibility", () => { + it.each([ + ["shadcn", ShadcnDataTable], + ["heroui", HeroDataTable], + ["thegridcn", GridcnDataTable], + ] as const)("exposes valid grid metadata through the %s adapter", (_, DataTable) => { + render( + row.id} + interactiveGrid + totalRowCount={12} + />, + ); + + const grid = screen.getByRole("grid"); + expect(grid.getAttribute("aria-colcount")).toBe("2"); + // Header row + server-reported data rows. + expect(grid.getAttribute("aria-rowcount")).toBe("13"); + expect(screen.getByRole("columnheader", { name: "Name" }).getAttribute("aria-colindex")).toBe("1"); + const firstRow = screen.getByRole("row", { name: /Ada 36/ }); + expect(firstRow.getAttribute("aria-rowindex")).toBe("2"); + expect(screen.getAllByRole("gridcell")[0].getAttribute("aria-colindex")).toBe("1"); + }); + + it("keeps native table behavior unless grid mode is explicitly requested", () => { + const { container } = render( + row.id} />, + ); + expect(container.querySelector('[role="grid"]')).toBeNull(); + expect(container.querySelector('[role="gridcell"]')).toBeNull(); + }); + + it("keeps full server counts and absolute indexes when virtual rows are bounded", () => { + render( + row.id} + interactiveGrid + totalRowCount={200} + manualPagination + pageIndex={2} + pageSize={25} + virtualization={{ enabled: true, fallbackRowCount: 1 }} + />, + ); + + const grid = screen.getByRole("grid"); + expect(grid.getAttribute("aria-rowcount")).toBe("201"); + // Header row + the page offset (50) + the first mounted row. + expect(screen.getByRole("row", { name: /Ada 36/ }).getAttribute("aria-rowindex")).toBe("52"); + }); + + it("moves one roving tab stop with arrows, paging, and Home/End", async () => { + render( + row.id} + accessibility={{ mode: "grid", pageSize: 2 }} + />, + ); + + const cells = screen.getAllByRole("gridcell"); + expect(cells.filter((cell) => cell.getAttribute("tabindex") === "0")).toHaveLength(1); + cells[0].focus(); + fireEvent.keyDown(cells[0], { key: "ArrowRight" }); + await waitFor(() => expect(document.activeElement).toBe(screen.getAllByRole("gridcell")[1])); + fireEvent.keyDown(screen.getAllByRole("gridcell")[1], { key: "PageDown" }); + await waitFor(() => expect(document.activeElement).toBe(screen.getAllByRole("gridcell")[5])); + fireEvent.keyDown(screen.getAllByRole("gridcell")[5], { key: "Home" }); + await waitFor(() => expect(document.activeElement).toBe(screen.getAllByRole("gridcell")[4])); + fireEvent.keyDown(screen.getAllByRole("gridcell")[4], { key: "End", ctrlKey: true }); + await waitFor(() => expect(document.activeElement).toBe(screen.getAllByRole("gridcell")[5])); + }); + + it("does not consume keys from a selection checkbox or sort button", () => { + render( + row.id} + interactiveGrid + enableRowSelection + />, + ); + + const checkbox = screen.getAllByRole("checkbox")[1]; + checkbox.focus(); + const checkboxEvent = createEvent.keyDown(checkbox, { key: " " }); + fireEvent(checkbox, checkboxEvent); + expect(checkboxEvent.defaultPrevented).toBe(false); + const sort = screen.getByRole("button", { name: "Name" }); + const sortEvent = createEvent.keyDown(sort, { key: "Enter" }); + fireEvent(sort, sortEvent); + expect(sortEvent.defaultPrevented).toBe(false); + }); +}); diff --git a/src/core/data-table/data-table-header-cell.tsx b/src/core/data-table/data-table-header-cell.tsx index 00316af..cf33a05 100644 --- a/src/core/data-table/data-table-header-cell.tsx +++ b/src/core/data-table/data-table-header-cell.tsx @@ -25,6 +25,8 @@ type DataTableHeaderCellProps = { draggedColumnIdRef: React.MutableRefObject; enableColumnReordering: boolean; enableColumnResizing: boolean; + gridColumnIndex?: number; + gridMode: boolean; header: Header; headerGroupHeaders: Array>; layout: DataTableColumnLayout; @@ -47,6 +49,8 @@ function DataTableHeaderCellInner({ draggedColumnIdRef, enableColumnReordering, enableColumnResizing, + gridColumnIndex, + gridMode, header, headerGroupHeaders, layout, @@ -85,6 +89,8 @@ function DataTableHeaderCellInner({ scope={ header.isPlaceholder ? undefined : isColumnGroup ? "colgroup" : "col" } + role={gridMode ? "columnheader" : undefined} + aria-colindex={gridMode ? gridColumnIndex : undefined} aria-hidden={header.isPlaceholder || undefined} aria-description={isColumnGroup ? groupDefinition?.description : undefined} aria-labelledby={ @@ -337,6 +343,8 @@ function areDataTableHeaderCellsEqual( previous.dir === next.dir && previous.enableColumnReordering === next.enableColumnReordering && previous.enableColumnResizing === next.enableColumnResizing && + previous.gridMode === next.gridMode && + previous.gridColumnIndex === next.gridColumnIndex && previous.TableHead === next.TableHead && previous.uiClassNames === next.uiClassNames && previous.draggedColumnIdRef === next.draggedColumnIdRef && diff --git a/src/core/data-table/data-table-table-panel.tsx b/src/core/data-table/data-table-table-panel.tsx index b9a46bf..e7c9c35 100644 --- a/src/core/data-table/data-table-table-panel.tsx +++ b/src/core/data-table/data-table-table-panel.tsx @@ -44,6 +44,10 @@ export type DataTableTablePanelProps = { explicitCustomCellColumnIds: ReadonlySet; fillMinWidth: number; flexGrow: boolean; + gridMode: boolean; + gridPageSize?: number; + gridRowOffset: number; + onGridActiveRowIndexChange?: (rowIndex: number) => void; getColumnLayout: (columnId: string) => DataTableColumnLayout; getRowClassName: DataTableProps["getRowClassName"]; getRowLoadingState: DataTableProps["getRowLoadingState"]; @@ -80,6 +84,7 @@ export type DataTableTablePanelProps = { TableRow: DataTableUiKit["TableRow"]; tableScrollContainerRef: React.RefObject; tableScrollElement?: HTMLElement | null; + totalRowCount?: number; uiClassNames: DataTableUiClassNames; viewportHeight?: number; virtualization?: DataTableProps["virtualization"]; @@ -110,6 +115,10 @@ export function DataTableTablePanel({ explicitCustomCellColumnIds, fillMinWidth, flexGrow, + gridMode, + gridPageSize, + gridRowOffset, + onGridActiveRowIndexChange, getColumnLayout, getRowClassName, getRowLoadingState, @@ -145,6 +154,8 @@ export function DataTableTablePanel({ TableHeader, TableRow, tableScrollContainerRef, + tableScrollElement, + totalRowCount, uiClassNames, virtualPaddingBottom, virtualPaddingTop, @@ -165,6 +176,78 @@ export function DataTableTablePanel({ : [], [filteredRows, summaryRows.length], ); + const headerRowCount = table.getHeaderGroups().length; + const displayRowCount = + topPinnedRows.length + renderedRows.length + bottomPinnedRows.length; + const [activeCell, setActiveCell] = React.useState({ row: 0, column: 0 }); + const shouldRestoreGridFocusRef = React.useRef(false); + const handleGridCellFocus = React.useCallback( + (cell: { row: number; column: number }) => { + shouldRestoreGridFocusRef.current = true; + setActiveCell(cell); + }, + [], + ); + + // Keep focus on the roving cell after sorting, filtering, or a virtual row + // range changes. A missing target is normal while a virtualizer is rendering. + React.useEffect(() => { + if (!gridMode) return; + onGridActiveRowIndexChange?.(activeCell.row); + const frame = requestAnimationFrame(() => { + const cells = tableScrollContainerRef.current?.querySelectorAll( + '[data-dtp-grid-cell="true"]', + ); + const target = Array.from(cells ?? []).find( + (cell) => + Number(cell.dataset.gridRowIndex) === activeCell.row && + Number(cell.dataset.gridColumnIndex) === activeCell.column, + ); + if (target && shouldRestoreGridFocusRef.current) { + target.focus(); + } + }); + return () => cancelAnimationFrame(frame); + }, [activeCell, gridMode, onGridActiveRowIndexChange, tableScrollContainerRef]); + + const moveGridFocus = React.useCallback( + (event: React.KeyboardEvent, row: number, column: number) => { + if (event.defaultPrevented || event.target !== event.currentTarget) return; + const pageRows = Math.max( + 1, + gridPageSize ?? ( + Math.floor( + (tableScrollElement?.clientHeight || 0) / + Math.max(1, (tableScrollElement?.querySelector("tr") as HTMLElement | null)?.offsetHeight || 48), + ) || 10), + ); + const lastRow = Math.max(0, displayRowCount - 1); + const lastColumn = Math.max(0, visibleLeafColumnCount - 1); + let nextRow = row; + let nextColumn = column; + switch (event.key) { + case "ArrowUp": nextRow--; break; + case "ArrowDown": nextRow++; break; + case "ArrowLeft": nextColumn--; break; + case "ArrowRight": nextColumn++; break; + case "Home": + if (event.ctrlKey || event.metaKey) { nextRow = 0; nextColumn = 0; } else nextColumn = 0; + break; + case "End": + if (event.ctrlKey || event.metaKey) { nextRow = lastRow; nextColumn = lastColumn; } else nextColumn = lastColumn; + break; + case "PageUp": nextRow -= pageRows; break; + case "PageDown": nextRow += pageRows; break; + default: return; + } + event.preventDefault(); + setActiveCell({ + row: Math.min(lastRow, Math.max(0, nextRow)), + column: Math.min(lastColumn, Math.max(0, nextColumn)), + }); + }, + [displayRowCount, gridPageSize, tableScrollElement, visibleLeafColumnCount], + ); const renderBodyRow = ( row: Row, rowIndex: number, @@ -214,6 +297,12 @@ export function DataTableTablePanel({ uiClassNames={uiClassNames} visibleCells={row.getVisibleCells()} visibleLeafColumnCount={visibleLeafColumnCount} + gridMode={gridMode} + gridRowIndex={rowIndex} + gridRowAriaIndex={headerRowCount + gridRowOffset + rowIndex + 1} + activeGridCell={activeCell} + onGridCellFocus={handleGridCellFocus} + onGridCellKeyDown={moveGridFocus} /> ); }; @@ -245,6 +334,16 @@ export function DataTableTablePanel({ ({ })} ({ )} > {table.getHeaderGroups().map((headerGroup) => ( - + {headerGroup.headers.map((header) => ( ({ } TableHead={TableHead} uiClassNames={uiClassNames} + gridMode={gridMode} + gridColumnIndex={ + header.isPlaceholder || header.subHeaders.length + ? undefined + : table.getVisibleLeafColumns().findIndex( + (column) => column.id === header.column.id, + ) + 1 + } /> ))} ))} - + {topPinnedRows.length || renderedRows.length || bottomPinnedRows.length ? ( <> {topPinnedRows.map((row, index) => renderBodyRow(row, index, "top"), )} {virtualPaddingTop > 0 ? ( - {summaryRows.length ? ( - - {summaryRows.map((summaryRow) => ( - + + {summaryRows.map((summaryRow, summaryIndex) => ( + {visibleLeafColumns.map((column, index) => { const content = summaryRow.cells[column.id] ?? @@ -375,6 +496,8 @@ export function DataTableTablePanel({ return ( ( (virtualItems.at(-1)?.end ?? virtualPaddingTop), ) : 0; + const handleGridActiveRowIndexChange = React.useCallback( + (gridRowIndex: number) => { + if (!props.gridMode || !shouldUseVirtualRows) return; + rowVirtualizer.scrollToIndex( + Math.max(0, gridRowIndex - props.topPinnedRows.length), + { align: "auto" }, + ); + }, + [props.gridMode, props.topPinnedRows.length, rowVirtualizer, shouldUseVirtualRows], + ); return ( ( rowsToRender={rowsToRender} virtualPaddingBottom={virtualPaddingBottom} virtualPaddingTop={virtualPaddingTop} + onGridActiveRowIndexChange={handleGridActiveRowIndexChange} /> ); } diff --git a/src/core/types.ts b/src/core/types.ts index 8fda587..00b8586 100644 --- a/src/core/types.ts +++ b/src/core/types.ts @@ -20,6 +20,23 @@ import type { export type DataTableViewMode = "table" | "card"; +/** Accessibility behavior for the table view. Native table semantics remain the default. */ +export type DataTableAccessibilityOptions = { + /** + * `grid` enables spreadsheet-like roving focus and keyboard navigation. + * `native` (the default) retains ordinary HTML table keyboard behavior. + */ + mode?: "native" | "grid"; + /** Number of rows moved by PageUp/PageDown when layout cannot be measured. */ + pageSize?: number; +}; + +/** Shorthand configuration for the interactive ARIA grid mode. */ +export type DataTableInteractiveGridOptions = Omit< + DataTableAccessibilityOptions, + "mode" +>; + export type DataTableAlign = "start" | "center" | "end"; export type DataTableColumnType = "text" | "numeric" | "date"; export type DataTableColumnFixed = "left" | "right"; @@ -722,6 +739,10 @@ export type DataTableProps = { dragAndDrop?: DataTableDragAndDropConfig; fileUpload?: DataTableFileUploadConfig; virtualization?: boolean | DataTableVirtualizationConfig; + /** Opt in to ARIA grid semantics and roving keyboard navigation. */ + accessibility?: DataTableAccessibilityOptions; + /** Shorthand for `accessibility={{ mode: "grid" }}`. */ + interactiveGrid?: boolean | DataTableInteractiveGridOptions; }; export function isRowVisible( From 19f2e93297469e6f3591c8c341914e6cf8f98b3d Mon Sep 17 00:00:00 2001 From: Toby Martin Date: Sun, 9 Aug 2026 02:09:36 +0000 Subject: [PATCH 14/31] feat: add clipboard and resilient row editing --- src/core/data-table/create-data-table.tsx | 131 +++++++++++++ src/core/data-table/data-table-body-row.tsx | 39 +++- .../data-table/data-table-state-api.test.tsx | 103 +++++++++++ .../data-table/data-table-table-panel.tsx | 8 +- src/core/data-table/data-table-utils.ts | 161 +++++++++++++++- .../data-table/use-data-table-columns.tsx | 15 +- src/core/data-table/use-row-editing.tsx | 172 +++++++++++++++--- src/core/types.ts | 73 ++++++++ 8 files changed, 670 insertions(+), 32 deletions(-) diff --git a/src/core/data-table/create-data-table.tsx b/src/core/data-table/create-data-table.tsx index b62d68a..1049cff 100644 --- a/src/core/data-table/create-data-table.tsx +++ b/src/core/data-table/create-data-table.tsx @@ -33,11 +33,13 @@ import { useControllableState } from "./use-controllable-state"; import { useDataTableInstance } from "./use-data-table-instance"; import { useDataTableScrollViewport } from "./use-data-table-scroll-viewport"; import { + copyDataTableToClipboard, exportDataTableCsv, getColumnId, getDataTableColumnGroupPaths, getDataTableLeafColumns, getInitialColumnPinning, + parseDataTableClipboardText, validateDataTableColumnIds, } from "./data-table-utils"; import { useDataTableState } from "./use-data-table-state"; @@ -158,6 +160,7 @@ export function createDataTableWithPanels( selectionActions = [], rowActions = [], csvExport, + clipboard, density, onDensityChange, enableDensityToggle = false, @@ -528,8 +531,11 @@ export function createDataTableWithPanels( }); const { cancelEditing, + clearEditError, draftValues, + editErrors, editingRowId, + isEditDirty, isSavingEdit, saveEdit, setDraftValues, @@ -540,6 +546,30 @@ export function createDataTableWithPanels( editableRows, onError: handleEditError, }); + const rowEditingContext = React.useMemo( + () => ({ + cancel: cancelEditing, + cancelOnEscape: editableRows?.cancelOnEscape !== false, + clearError: clearEditError, + commit: (row: TData) => { + void saveEdit(row); + }, + commitOnEnter: editableRows?.commitOnEnter !== false, + errors: editErrors, + isDirty: isEditDirty, + isPending: isSavingEdit, + }), + [ + cancelEditing, + clearEditError, + editableRows?.cancelOnEscape, + editableRows?.commitOnEnter, + editErrors, + isEditDirty, + isSavingEdit, + saveEdit, + ], + ); const { viewportElement: tableScrollElement, viewportHeight } = useDataTableScrollViewport(tableScrollContainerRef, currentViewMode); const openFileDialog = React.useCallback(() => { @@ -571,11 +601,13 @@ export function createDataTableWithPanels( cancelEditing, columns, editableRows, + editErrors, editingRowId, enableRowSelection, enableRowPinning, hasTreeExpansion: Boolean(getSubRows), isSavingEdit, + isEditDirty, labels: resolvedLabels, lastSelectedRowIdRef, detailPanel: resolvedDetailPanel, @@ -1025,6 +1057,41 @@ export function createDataTableWithPanels( }), [csvExport, resolvedLabels, table], ); + const copyToClipboard = React.useCallback< + DataTableApi["copyToClipboard"] + >( + (options) => + copyDataTableToClipboard({ + clipboard: options ?? clipboard?.copy ?? true, + table, + }), + [clipboard?.copy, table], + ); + const print = React.useCallback(() => { + if (typeof window === "undefined" || typeof window.print !== "function") { + return false; + } + window.print(); + return true; + }, []); + const toggleFullscreen = React.useCallback(async () => { + const element = containerRef.current; + if (!element || typeof document === "undefined") { + return false; + } + if (document.fullscreenElement) { + if (typeof document.exitFullscreen !== "function") { + return false; + } + await document.exitFullscreen(); + return true; + } + if (typeof element.requestFullscreen !== "function") { + return false; + } + await element.requestFullscreen(); + return true; + }, []); const pinRow = React.useCallback["pinRow"]>( (rowId, position = "top") => { try { @@ -1085,11 +1152,15 @@ export function createDataTableWithPanels( columnId, ), exportCsv: exportCsvFromApi, + copyToClipboard, + print, + toggleFullscreen, }), [ applySavedView, clearPersistedState, clearSavedViews, + copyToClipboard, createSavedView, deleteSavedView, exportCsvFromApi, @@ -1100,7 +1171,9 @@ export function createDataTableWithPanels( resetState, restoreState, pinRow, + print, unpinRow, + toggleFullscreen, ], ); @@ -1123,6 +1196,51 @@ export function createDataTableWithPanels( onDragOver={dragAndDrop?.onDragOver} onDragLeave={dragAndDrop?.onDragLeave} onDrop={dragAndDrop?.onDrop} + onKeyDown={(event) => { + if ( + !clipboard?.copy || + !(event.ctrlKey || event.metaKey) || + event.key.toLowerCase() !== "c" || + isDataTableEditableClipboardTarget(event.target) + ) { + return; + } + event.preventDefault(); + runAction( + { source: "clipboardCopy" }, + async () => { + await copyToClipboard( + clipboard.copy === true ? undefined : clipboard.copy, + ); + }, + ); + }} + onPaste={(event) => { + const paste = clipboard?.paste; + if ( + !paste || + paste.enabled === false || + isDataTableEditableClipboardTarget(event.target) + ) { + return; + } + const text = event.clipboardData.getData("text/plain"); + if (!text) { + return; + } + if (paste.preventDefault ?? true) { + event.preventDefault(); + } + runAction( + { source: "clipboardPaste" }, + () => + paste.onPaste({ + table, + text, + values: parseDataTableClipboardText(text), + }), + ); + }} > {fileUpload ? ( = { + cancel: () => void; + clearError: (columnId: string) => void; + commit: (row: TData) => void; + errors: Record; + isDirty: boolean; + isPending: boolean; + cancelOnEscape: boolean; + commitOnEnter: boolean; +}; + type DataTableBodyRowProps = { columnLayouts: ReadonlyMap; components: Pick< @@ -27,6 +38,7 @@ type DataTableBodyRowProps = { >; currentDensity: DataTableDensity; draftValues: Record; + editingContext?: DataTableRowEditingContext; dragAndDrop: DataTableProps["dragAndDrop"]; explicitCustomCellColumnIds: ReadonlySet; getRowClassName: DataTableProps["getRowClassName"]; @@ -55,6 +67,7 @@ function DataTableBodyRowInner({ components, currentDensity, draftValues, + editingContext, dragAndDrop, explicitCustomCellColumnIds, getRowClassName, @@ -253,10 +266,27 @@ function DataTableBodyRowInner({ cell.column.id !== "__select__" && cell.column.id !== "__expand__" && cell.column.id !== "__actions__" ? ( - renderEditableCell(cellContext, draftValues, setDraftValues, { - Checkbox, - Input, - }) + renderEditableCell( + cellContext, + draftValues, + setDraftValues, + { + Checkbox, + Input, + }, + editingContext + ? { + cancel: editingContext.cancel, + cancelOnEscape: editingContext.cancelOnEscape, + commit: () => editingContext.commit(originalRow), + commitOnEnter: editingContext.commitOnEnter, + errors: editingContext.errors, + isDirty: editingContext.isDirty, + isPending: editingContext.isPending, + onValueChange: editingContext.clearError, + } + : undefined, + ) ) : ( renderDataTableCellContent(cellContext, uiClassNames, { hasCustomCell: @@ -314,6 +344,7 @@ function areDataTableBodyRowsEqual( previous.isSelected === next.isSelected && previous.isInitialLoadingRow === next.isInitialLoadingRow && previous.isEditing === next.isEditing && + (!previous.isEditing || previous.editingContext === next.editingContext) && previous.isExpanded === next.isExpanded && previous.isDraggable === next.isDraggable && sameLoadingState(previous.loadingState, next.loadingState) && diff --git a/src/core/data-table/data-table-state-api.test.tsx b/src/core/data-table/data-table-state-api.test.tsx index 096ad63..29840fd 100644 --- a/src/core/data-table/data-table-state-api.test.tsx +++ b/src/core/data-table/data-table-state-api.test.tsx @@ -5,6 +5,7 @@ import { fireEvent, render, screen, + waitFor, } from "@testing-library/react"; import { afterAll, @@ -354,6 +355,108 @@ describe("DataTable unified state API", () => { ).toBe("top"); }); + it("copies delimited rows, handles opt-in paste, print, and fullscreen APIs", async () => { + const apiRef = React.createRef>(); + const onCopy = vi.fn(); + const onPaste = vi.fn(); + const print = vi.spyOn(window, "print").mockImplementation(() => {}); + const { container } = render( + row.id} + clipboard={{ + copy: { onCopy, scope: "all" }, + paste: { onPaste }, + }} + />, + ); + const root = container.querySelector( + '[data-dtp-slot="data-table-root"]', + ); + expect(root).not.toBeNull(); + + fireEvent.keyDown(root!, { ctrlKey: true, key: "c" }); + await waitFor(() => expect(onCopy).toHaveBeenCalled()); + const copyContext = onCopy.mock.calls[0]?.[0] as { text: string }; + expect(copyContext.text).toBe("Name\nAda\nGrace"); + + fireEvent.paste(root!, { + clipboardData: { + getData: () => 'Ada\t"Admin\nOwner"', + }, + }); + expect(onPaste).toHaveBeenCalledWith( + expect.objectContaining({ + text: 'Ada\t"Admin\nOwner"', + values: [["Ada", "Admin\nOwner"]], + }), + ); + + expect(apiRef.current?.print()).toBe(true); + expect(print).toHaveBeenCalled(); + + const requestFullscreen = vi.fn().mockResolvedValue(undefined); + Object.defineProperty(root, "requestFullscreen", { + configurable: true, + value: requestFullscreen, + }); + await expect(apiRef.current?.toggleFullscreen()).resolves.toBe(true); + expect(requestFullscreen).toHaveBeenCalled(); + }); + + it("validates edits and rolls back failed optimistic saves", async () => { + const saveError = new Error("save failed"); + const rollback = vi.fn(); + const onSaveRow = vi.fn().mockRejectedValue(saveError); + const onSaveError = vi.fn(); + const onActionError = vi.fn(); + render( + row.id} + editableRows={{ + onOptimisticUpdate: () => rollback, + onSaveError, + onSaveRow, + validateRow: (_row, draft) => + draft.name ? undefined : { name: "Name is required" }, + }} + onActionError={onActionError} + />, + ); + + fireEvent.pointerDown( + screen.getAllByRole("button", { name: "Row actions" })[0], + ); + fireEvent.click(screen.getByText("Edit row")); + const input = screen.getByDisplayValue("Ada"); + + fireEvent.change(input, { target: { value: "" } }); + fireEvent.keyDown(input, { key: "Enter" }); + expect((await screen.findByRole("alert")).textContent).toContain( + "Name is required", + ); + expect(onSaveRow).not.toHaveBeenCalled(); + + fireEvent.change(input, { target: { value: "Ada Lovelace" } }); + expect(screen.queryByRole("alert")).toBeNull(); + fireEvent.keyDown(input, { key: "Enter" }); + + await waitFor(() => expect(onSaveError).toHaveBeenCalled()); + expect(onSaveError).toHaveBeenCalledWith( + saveError, + rows[0], + expect.objectContaining({ name: "Ada Lovelace" }), + ); + expect(rollback).toHaveBeenCalled(); + expect(onActionError).toHaveBeenCalledWith( + expect.objectContaining({ error: saveError, source: "edit" }), + ); + }); + it("configures resizing and keyboard reordering for RTL", () => { const apiRef = React.createRef>(); const onColumnOrderChange = vi.fn(); diff --git a/src/core/data-table/data-table-table-panel.tsx b/src/core/data-table/data-table-table-panel.tsx index b9a46bf..657ca0b 100644 --- a/src/core/data-table/data-table-table-panel.tsx +++ b/src/core/data-table/data-table-table-panel.tsx @@ -14,7 +14,10 @@ import type { } from "../types"; import type { DataTableUiClassNames, DataTableUiKit } from "../ui-kit"; import { cn } from "../../lib/utils"; -import { DataTableBodyRow } from "./data-table-body-row"; +import { + DataTableBodyRow, + type DataTableRowEditingContext, +} from "./data-table-body-row"; import { DataTableHeaderCell } from "./data-table-header-cell"; import type { DataTableColumnLayout } from "./use-column-layout"; import { isDataTableLoadingRow } from "./data-table-utils"; @@ -38,6 +41,7 @@ export type DataTableTablePanelProps = { draggedColumnIdRef: React.RefObject; draftValues: Record; editingRowId: string | null; + editingContext?: DataTableRowEditingContext; emptyNode: React.ReactNode; enableColumnReordering: boolean; enableColumnResizing: boolean; @@ -104,6 +108,7 @@ export function DataTableTablePanel({ draggedColumnIdRef, draftValues, editingRowId, + editingContext, emptyNode, enableColumnReordering, enableColumnResizing, @@ -190,6 +195,7 @@ export function DataTableTablePanel({ components={bodyRowComponents} currentDensity={currentDensity} draftValues={draftValues} + editingContext={editingContext} dragAndDrop={dragAndDrop} explicitCustomCellColumnIds={explicitCustomCellColumnIds} getRowClassName={getRowClassName} diff --git a/src/core/data-table/data-table-utils.ts b/src/core/data-table/data-table-utils.ts index 438c7be..e4456c2 100644 --- a/src/core/data-table/data-table-utils.ts +++ b/src/core/data-table/data-table-utils.ts @@ -7,6 +7,7 @@ import type { Table as TanStackTable, } from "@tanstack/react-table"; import type { + DataTableClipboardCopyOptions, DataTableColumnDef, DataTableColumnFilterOption, DataTableCsvExportOptions, @@ -420,7 +421,7 @@ export async function exportDataTableCsv({ column.id !== "__spacer__" && (!exportColumnIds || exportColumnIds.has(column.id)), ); - const rows = getCsvExportRows(table, scope); + const rows = getDataTableExportRows(table, scope); const csvRows: Array> = []; if (options.includeHeaders ?? true) { @@ -482,7 +483,139 @@ export async function exportDataTableCsv({ window.URL.revokeObjectURL(url); } -function getCsvExportRows( +export async function copyDataTableToClipboard({ + clipboard, + table, +}: { + clipboard: boolean | DataTableClipboardCopyOptions; + table: TanStackTable; +}) { + if (clipboard === false) { + return undefined; + } + + const options: DataTableClipboardCopyOptions = + clipboard === true ? {} : clipboard; + const scope = options.scope ?? "page"; + const requestedColumnIds = options.columns + ? new Set(options.columns) + : undefined; + const columns = table + .getVisibleLeafColumns() + .filter( + (column) => + !isUtilityColumnId(column.id) && + column.id !== "__spacer__" && + (!requestedColumnIds || requestedColumnIds.has(column.id)), + ); + const rows = getDataTableExportRows(table, scope); + const values: Array> = []; + + if (options.includeHeaders ?? true) { + values.push( + columns.map((column) => + typeof column.columnDef.header === "string" + ? column.columnDef.header + : startCase(column.id), + ), + ); + } + + for (const row of rows) { + values.push( + columns.map((column) => { + const value = row.getValue(column.id); + return options.getCellValue + ? options.getCellValue({ + columnId: column.id, + row: row.original, + rowId: row.id, + value, + }) + : value; + }), + ); + } + + const delimiter = options.delimiter ?? "\t"; + const text = values + .map((row) => + row + .map((value) => + escapeDelimitedCell( + value, + delimiter, + options.escapeFormulaValues ?? true, + ), + ) + .join(delimiter), + ) + .join("\n"); + + if (options.onCopy) { + await options.onCopy({ + rows: rows.map((row) => row.original), + scope, + text, + }); + } else if ( + typeof navigator !== "undefined" && + typeof navigator.clipboard?.writeText === "function" + ) { + await navigator.clipboard.writeText(text); + } + + return text; +} + +export function parseDataTableClipboardText( + text: string, + delimiter: "\t" | "," = "\t", +) { + const rows: Array> = []; + let row: Array = []; + let value = ""; + let quoted = false; + + for (let index = 0; index < text.length; index += 1) { + const character = text[index]; + const nextCharacter = text[index + 1]; + + if (character === '"') { + if (quoted && nextCharacter === '"') { + value += '"'; + index += 1; + } else { + quoted = !quoted; + } + continue; + } + if (!quoted && character === delimiter) { + row.push(value); + value = ""; + continue; + } + if (!quoted && (character === "\n" || character === "\r")) { + if (character === "\r" && nextCharacter === "\n") { + index += 1; + } + row.push(value); + rows.push(row); + row = []; + value = ""; + continue; + } + value += character; + } + + row.push(value); + if (row.length > 1 || row[0] || rows.length === 0) { + rows.push(row); + } + return rows; +} + +function getDataTableExportRows( table: TanStackTable, scope: DataTableCsvExportScope, ) { @@ -500,6 +633,30 @@ function getCsvExportRows( } } +function escapeDelimitedCell( + value: unknown, + delimiter: string, + escapeFormulaValues: boolean, +) { + let text = normalizeFilterValue(value); + if ( + escapeFormulaValues && + typeof value === "string" && + /^[\t\r ]*[=+\-@]/.test(value) + ) { + text = `'${text}`; + } + if ( + text.includes(delimiter) || + text.includes('"') || + text.includes("\n") || + text.includes("\r") + ) { + return `"${text.replace(/"/g, '""')}"`; + } + return text; +} + function escapeCsvCell(value: unknown, escapeFormulaValues: boolean) { let text = normalizeFilterValue(value); if ( diff --git a/src/core/data-table/use-data-table-columns.tsx b/src/core/data-table/use-data-table-columns.tsx index d9d90e1..e497b59 100644 --- a/src/core/data-table/use-data-table-columns.tsx +++ b/src/core/data-table/use-data-table-columns.tsx @@ -50,10 +50,12 @@ export function useDataTableColumns({ columns, editableRows, editingRowId, + editErrors, enableRowSelection, enableRowPinning, hasTreeExpansion, isSavingEdit, + isEditDirty, labels, lastSelectedRowIdRef, detailPanel, @@ -77,10 +79,12 @@ export function useDataTableColumns({ columns: DataTableProps["columns"]; editableRows: DataTableProps["editableRows"]; editingRowId: string | null; + editErrors: Record; enableRowSelection: boolean; enableRowPinning: DataTableProps["enableRowPinning"]; hasTreeExpansion: boolean; isSavingEdit: boolean; + isEditDirty: boolean; labels: DataTableLabels; lastSelectedRowIdRef: React.MutableRefObject; detailPanel: DataTableDetailPanel | undefined; @@ -90,7 +94,7 @@ export function useDataTableColumns({ DataTableProps["rowSelectionSelectAllScope"] >; rowActions: Array>; - saveEdit: (row: TData) => Promise; + saveEdit: (row: TData) => Promise; startEditingRow: (row: TData, rowId: string) => void; tableRef: React.RefObject | null>; }) { @@ -330,10 +334,15 @@ export function useDataTableColumns({ if (isEditing) { return (
    + {editErrors._row ? ( + + {editErrors._row} + + ) : null}
    ) : null} + {enableGrouping && groupedColumns.length ? ( +
    + {labels.grouping}: + {groupedColumns.map((column) => { + const columnLabel = + typeof column.columnDef.header === "string" + ? column.columnDef.header + : column.id; + return ( + + ); + })} +
    + ) : null} + {showCustomToolbar && customToolbar ? ( @@ -724,6 +799,7 @@ export function createDataTableToolbar(ui: DataTableUiKit) { labels: DataTableLabels; onColumnFilterChange: (columnId: string, value: unknown) => void; }) { + const [facetQuery, setFacetQuery] = React.useState(""); if (filter.type === "text") { return ( @@ -796,6 +872,7 @@ export function createDataTableToolbar(ui: DataTableUiKit) { } const isBoolean = filter.type === "boolean"; + const isFaceted = filter.type === "faceted"; const booleanOptions = [ { label: @@ -812,7 +889,15 @@ export function createDataTableToolbar(ui: DataTableUiKit) { value: "false", }, ]; - const options = isBoolean ? booleanOptions : filter.options; + const options: DataTableToolbarColumnFilter["options"] = isBoolean + ? booleanOptions + : filter.options; + const visibleOptions = + isFaceted && facetQuery + ? options.filter((option) => + option.label.toLocaleLowerCase().includes(facetQuery.toLocaleLowerCase()), + ) + : options; const selectedValue = typeof filter.value === "string" || typeof filter.value === "boolean" ? String(filter.value) @@ -842,8 +927,25 @@ export function createDataTableToolbar(ui: DataTableUiKit) { {filter.label} + {isFaceted && filter.searchable !== false ? ( +
    + + ) => { + setFacetQuery(event.target.value); + }} + placeholder={filter.searchPlaceholder ?? labels.facetSearch(filter.label)} + aria-label={labels.facetSearch(filter.label)} + /> + + +
    + ) : null} - {filter.type === "select" || isBoolean ? ( + {filter.type === "select" || isBoolean || isFaceted ? ( { onColumnFilterChange(filter.id, ""); @@ -853,10 +955,11 @@ export function createDataTableToolbar(ui: DataTableUiKit) { DATA_TABLE_DEFAULT_LABELS.allFilterOptions} ) : null} - {options.map((option) => ( + {visibleOptions.map((option) => ( { if (filter.type === "select" || isBoolean) { onColumnFilterChange( @@ -875,7 +978,10 @@ export function createDataTableToolbar(ui: DataTableUiKit) { onColumnFilterChange(filter.id, Array.from(nextValues)); }} > - {option.label} + {option.label} + {option.count !== undefined ? ( + {option.count} + ) : null} ))} diff --git a/src/core/data-table/create-data-table.tsx b/src/core/data-table/create-data-table.tsx index b62d68a..6dcee9b 100644 --- a/src/core/data-table/create-data-table.tsx +++ b/src/core/data-table/create-data-table.tsx @@ -120,6 +120,12 @@ export function createDataTableWithPanels( sorting, onSortingChange, manualSorting = false, + grouping, + onGroupingChange, + manualGrouping = false, + enableGrouping = false, + groupedColumnMode = "reorder", + aggregationFns, pageIndex, pageSize, onPageIndexChange, @@ -226,6 +232,7 @@ export function createDataTableWithPanels( const resolvedToolbarQueryValue = toolbarQueryValue ?? unifiedState?.globalFilter; const resolvedSorting = sorting ?? unifiedState?.sorting; + const resolvedGrouping = grouping ?? unifiedState?.grouping; const resolvedPageIndex = pageIndex ?? unifiedState?.pagination?.pageIndex; const resolvedPageSize = pageSize ?? unifiedState?.pagination?.pageSize; @@ -261,6 +268,7 @@ export function createDataTableWithPanels( columnVisibility: columnVisibility !== undefined, density: density !== undefined, expanded: expanded !== undefined, + grouping: grouping !== undefined, globalFilter: toolbarQueryValue !== undefined, pagination: pageIndex !== undefined || pageSize !== undefined, rowSelection: rowSelection !== undefined, @@ -278,6 +286,11 @@ export function createDataTableWithPanels( onSortingChange, onStateChange, ); + const handleGroupingPropChange = useDataTableStateSliceChange( + "grouping", + onGroupingChange, + onStateChange, + ); const handleRowSelectionPropChange = useDataTableStateSliceChange( "rowSelection", onRowSelectionChange, @@ -424,6 +437,7 @@ export function createDataTableWithPanels( currentColumnVisibility, currentDensity, currentExpanded, + currentGrouping, currentPagination, currentRowSelection, currentShowHiddenRows, @@ -445,6 +459,7 @@ export function createDataTableWithPanels( setCurrentRowPinning, setCurrentColumnVisibility, setCurrentExpanded, + setCurrentGrouping, setCurrentRowSelection, setCurrentSorting, setLocalColumnSizing, @@ -470,6 +485,7 @@ export function createDataTableWithPanels( enableRowSelection, enableToolbarQueryFiltering, expanded: resolvedExpanded, + grouping: resolvedGrouping, getSubRows, getRowId, hiddenRows, @@ -485,6 +501,7 @@ export function createDataTableWithPanels( onColumnVisibilityChange: handleColumnVisibilityPropChange, onDensityChange: handleDensityPropChange, onExpandedChange: handleExpandedPropChange, + onGroupingChange: handleGroupingPropChange, onPageIndexChange: handlePageIndexPropChange, onRowSelectionChange: handleRowSelectionPropChange, onShowHiddenRowsChange: handleShowHiddenRowsPropChange, @@ -619,6 +636,7 @@ export function createDataTableWithPanels( currentRowPinning, currentColumnSizing, currentExpanded, + currentGrouping, currentPagination, currentRowSelection, currentSorting, @@ -633,6 +651,8 @@ export function createDataTableWithPanels( getRowCanSelect, getRowCanExpand, getSubRows, + aggregationFns, + groupedColumnMode, globalFilterFn, globalFilterValue, hasNextPage, @@ -642,9 +662,11 @@ export function createDataTableWithPanels( handleRowPinningChange: setCurrentRowPinning, handleColumnVisibilityChange: setCurrentColumnVisibility, handleExpandedChange: setCurrentExpanded, + handleGroupingChange: setCurrentGrouping, infiniteScroll, keepPinnedRows, manualFiltering, + manualGrouping, manualExpanding, manualPagination, manualSorting, @@ -827,6 +849,7 @@ export function createDataTableWithPanels( columnVisibility: currentColumnVisibility, columnFilters: currentColumnFilters, expanded: currentExpanded, + grouping: currentGrouping, columnOrder: currentColumnOrder, columnPinning: currentColumnPinning, rowPinning: currentRowPinning, @@ -845,6 +868,7 @@ export function createDataTableWithPanels( currentColumnVisibility, currentDensity, currentExpanded, + currentGrouping, currentPagination, currentRowSelection, currentShowHiddenRows, @@ -877,6 +901,9 @@ export function createDataTableWithPanels( if (nextState.expanded !== undefined) { table.setExpanded(nextState.expanded); } + if (nextState.grouping !== undefined) { + table.setGrouping(nextState.grouping); + } if (nextState.columnOrder !== undefined) { table.setColumnOrder(nextState.columnOrder); } @@ -952,6 +979,7 @@ export function createDataTableWithPanels( columnVisibility: initialState?.columnVisibility ?? {}, columnFilters: initialState?.columnFilters ?? [], expanded: initialState?.expanded ?? {}, + grouping: initialState?.grouping ?? [], columnOrder: initialState?.columnOrder ?? [], columnPinning: initialState?.columnPinning ?? getInitialColumnPinning(columns), @@ -1169,6 +1197,7 @@ export function createDataTableWithPanels( descriptionId={descriptionId} effectiveToolbarActions={guardedToolbarActions} enableColumnPinning={enableColumnPinning} + enableGrouping={enableGrouping} enableDensityToggle={enableDensityToggle} enableViewToggle={enableViewToggle && Boolean(cardRenderer)} hiddenRowsLabel={hiddenRows?.label} @@ -1414,6 +1443,7 @@ function cloneDataTableState(state: DataTableState): DataTableState { typeof state.expanded === "boolean" ? state.expanded : { ...state.expanded }, + grouping: [...state.grouping], columnOrder: [...state.columnOrder], columnPinning: { left: state.columnPinning.left diff --git a/src/core/data-table/data-table-body-row.tsx b/src/core/data-table/data-table-body-row.tsx index 7546561..8c9eba0 100644 --- a/src/core/data-table/data-table-body-row.tsx +++ b/src/core/data-table/data-table-body-row.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import type { Cell, Row } from "@tanstack/react-table"; +import { flexRender, type Cell, type Row } from "@tanstack/react-table"; import type { RowPinningPosition } from "@tanstack/react-table"; import type { DataTableColumnDef, @@ -93,6 +93,7 @@ function DataTableBodyRowInner({ pinnedPosition ? "data-table-pinned-row" : "data-table-row" } data-row-pinned={pinnedPosition} + data-row-grouped={row.getIsGrouped() || undefined} draggable={isInitialLoadingRow ? false : isDraggable} data-loading={loadingState?.isLoading || undefined} data-row-index={isInitialLoadingRow ? undefined : rowIndex} @@ -257,6 +258,35 @@ function DataTableBodyRowInner({ Checkbox, Input, }) + ) : row.getIsGrouped() && cell.getIsPlaceholder() ? null : row.getIsGrouped() && cell.getIsGrouped() ? ( + + ) : row.getIsGrouped() && cell.getIsAggregated() ? ( + cell.column.columnDef.aggregatedCell + ? flexRender(cell.column.columnDef.aggregatedCell, cellContext) + : renderDataTableCellContent(cellContext, uiClassNames, { + hasCustomCell: false, + useCustomOverflowDefaults: false, + }) ) : ( renderDataTableCellContent(cellContext, uiClassNames, { hasCustomCell: diff --git a/src/core/data-table/data-table-grouping-faceting.test.tsx b/src/core/data-table/data-table-grouping-faceting.test.tsx new file mode 100644 index 0000000..6f8f263 --- /dev/null +++ b/src/core/data-table/data-table-grouping-faceting.test.tsx @@ -0,0 +1,98 @@ +import * as React from "react"; +import { act } from "react"; +import { render, screen } from "@testing-library/react"; +import { describe, expect, it } from "vitest"; +import type { DataTableApi, DataTableColumnDef } from "../types"; +import { DataTable } from "../../index"; + +type RowData = { + id: string; + team: string; + score: number; +}; + +const rows: Array = [ + { id: "1", team: "Design", score: 2 }, + { id: "2", team: "Design", score: 3 }, + { id: "3", team: "Engineering", score: 7 }, +]; + +const columns: Array> = [ + { + accessorKey: "team", + header: "Team", + enableGrouping: true, + meta: { filter: { type: "faceted" } }, + }, + { + accessorKey: "score", + header: "Score", + aggregationFn: "sum", + }, +]; + +describe("DataTable grouping and faceting", () => { + it("creates grouped rows, aggregates values, and preserves grouping in the API state", () => { + const apiRef = React.createRef>(); + + render( + row.id} + initialState={{ grouping: ["team"] }} + />, + ); + + expect(apiRef.current?.getState().grouping).toEqual(["team"]); + expect(apiRef.current?.getTable()?.getRowModel().rows).toHaveLength(2); + expect(screen.getByText("(2)")).toBeTruthy(); + expect(screen.getByText("5")).toBeTruthy(); + + act(() => { + apiRef.current?.restore({ grouping: [] }); + }); + expect(apiRef.current?.getTable()?.getRowModel().rows).toHaveLength(3); + }); + + it("uses local facet counts and lets server-provided options replace them", () => { + const localRef = React.createRef>(); + const { container, rerender } = render( + row.id} + />, + ); + + expect(localRef.current?.getTable()?.getColumn("team")?.getFacetedUniqueValues().get("Design")).toBe(2); + + rerender( + row.id} + />, + ); + + expect( + container.querySelector('[data-dtp-slot="data-table-toolbar-filters"]'), + ).toBeTruthy(); + }); +}); diff --git a/src/core/data-table/data-table-labels.ts b/src/core/data-table/data-table-labels.ts index 992a7bf..8adc470 100644 --- a/src/core/data-table/data-table-labels.ts +++ b/src/core/data-table/data-table-labels.ts @@ -61,6 +61,11 @@ export const DATA_TABLE_DEFAULT_LABELS: ResolvedDataTableLabels = { pinRowToBottom: "Pin row to bottom", unpinRow: "Unpin row", resizeColumn: (columnLabel) => `Resize ${columnLabel}`, + grouping: "Grouping", + groupBy: (columnLabel) => `Group by ${columnLabel}`, + ungroup: (columnLabel) => `Ungroup ${columnLabel}`, + removeGrouping: (columnLabel) => `Remove ${columnLabel} grouping`, + facetSearch: (columnLabel) => `Search ${columnLabel} options`, }; export function resolveDataTableLabels( diff --git a/src/core/data-table/data-table-state-api.test.tsx b/src/core/data-table/data-table-state-api.test.tsx index 096ad63..f62a25c 100644 --- a/src/core/data-table/data-table-state-api.test.tsx +++ b/src/core/data-table/data-table-state-api.test.tsx @@ -609,6 +609,7 @@ function createState(): DataTableState { columnVisibility: {}, columnFilters: [], expanded: {}, + grouping: [], columnOrder: [], columnPinning: {}, rowPinning: { top: [], bottom: [] }, diff --git a/src/core/data-table/data-table-toolbar-section.tsx b/src/core/data-table/data-table-toolbar-section.tsx index ea0d56d..6f12fd7 100644 --- a/src/core/data-table/data-table-toolbar-section.tsx +++ b/src/core/data-table/data-table-toolbar-section.tsx @@ -13,6 +13,7 @@ type DataTableToolbarSectionProps = { descriptionId: string | undefined; effectiveToolbarActions: Array; enableColumnPinning: boolean; + enableGrouping: boolean; enableDensityToggle: boolean; enableViewToggle: boolean; hiddenRowsLabel: string | undefined; @@ -50,6 +51,7 @@ export function DataTableToolbarSection({ descriptionId, effectiveToolbarActions, enableColumnPinning, + enableGrouping, enableDensityToggle, enableViewToggle, hiddenRowsLabel, @@ -103,6 +105,7 @@ export function DataTableToolbarSection({ table.getColumn(columnId)?.toggleVisibility(visible); }} enableColumnPinning={enableColumnPinning} + enableGrouping={enableGrouping} onColumnPinningChange={onColumnPinningChange} columnFilters={columnFilters} onColumnFilterChange={onColumnFilterChange} @@ -113,6 +116,7 @@ export function DataTableToolbarSection({ labels={labels} toolbarVisibility={toolbarVisibility} openFileDialog={openFileDialog} + table={table} /> ); diff --git a/src/core/data-table/data-table-utils.ts b/src/core/data-table/data-table-utils.ts index 438c7be..9a2f538 100644 --- a/src/core/data-table/data-table-utils.ts +++ b/src/core/data-table/data-table-utils.ts @@ -120,7 +120,7 @@ export function decorateFilterableColumn( filter.getOptionValue?.(value, row.original) ?? normalizeFilterValue(value); - if (filter.type === "multi") { + if (filter.type === "multi" || filter.type === "faceted") { return Array.isArray(filterValue) ? filterValue.map(String).includes(optionValue) : true; diff --git a/src/core/data-table/use-data-table-instance.ts b/src/core/data-table/use-data-table-instance.ts index 7d7d098..f385d70 100644 --- a/src/core/data-table/use-data-table-instance.ts +++ b/src/core/data-table/use-data-table-instance.ts @@ -2,7 +2,10 @@ import * as React from "react"; import { getCoreRowModel, getExpandedRowModel, + getFacetedRowModel, + getFacetedUniqueValues, getFilteredRowModel, + getGroupedRowModel, getPaginationRowModel, getSortedRowModel, useReactTable, @@ -14,6 +17,7 @@ import type { ColumnPinningState, ColumnSizingState, ExpandedState, + GroupingState, FilterFnOption, OnChangeFn, PaginationState, @@ -48,6 +52,7 @@ export function useDataTableInstance({ currentRowPinning, currentColumnSizing, currentExpanded, + currentGrouping, currentPagination, currentRowSelection, currentSorting, @@ -62,6 +67,8 @@ export function useDataTableInstance({ getRowCanSelect, getRowCanExpand, getSubRows, + aggregationFns, + groupedColumnMode, globalFilterFn, globalFilterValue, hasNextPage, @@ -71,9 +78,11 @@ export function useDataTableInstance({ handleRowPinningChange, handleColumnVisibilityChange, handleExpandedChange, + handleGroupingChange, infiniteScroll, keepPinnedRows, manualFiltering, + manualGrouping, manualExpanding, manualPagination, manualSorting, @@ -108,6 +117,7 @@ export function useDataTableInstance({ currentRowPinning: RowPinningState; currentColumnSizing: ColumnSizingState; currentExpanded: ExpandedState; + currentGrouping: GroupingState; currentPagination: PaginationState; currentRowSelection: Record; currentSorting: SortingState; @@ -126,6 +136,8 @@ export function useDataTableInstance({ getRowCanSelect: DataTableProps["getRowCanSelect"]; getRowCanExpand: DataTableProps["getRowCanExpand"]; getSubRows: DataTableProps["getSubRows"]; + aggregationFns: DataTableProps["aggregationFns"]; + groupedColumnMode: DataTableProps["groupedColumnMode"]; globalFilterFn: FilterFnOption | undefined; globalFilterValue: string; hasNextPage?: DataTableProps["hasNextPage"]; @@ -135,9 +147,11 @@ export function useDataTableInstance({ handleRowPinningChange: OnChangeFn; handleColumnVisibilityChange: OnChangeFn; handleExpandedChange: OnChangeFn; + handleGroupingChange: OnChangeFn; infiniteScroll: DataTableProps["infiniteScroll"]; keepPinnedRows: boolean; manualFiltering: boolean; + manualGrouping: boolean; manualExpanding: boolean; manualPagination: boolean; manualSorting: boolean; @@ -268,6 +282,7 @@ export function useDataTableInstance({ columnFilters: currentColumnFilters, globalFilter: globalFilterValue, expanded: currentExpanded, + grouping: currentGrouping, columnOrder: effectiveColumnOrder, columnPinning: effectiveColumnPinning, rowPinning: effectiveRowPinning, @@ -277,6 +292,7 @@ export function useDataTableInstance({ currentColumnFilters, currentColumnSizing, currentExpanded, + currentGrouping, currentPagination, currentRowSelection, currentSorting, @@ -330,15 +346,31 @@ export function useDataTableInstance({ [setLocalColumnSizing], ); + const needsFaceting = React.useMemo( + () => + getDataTableLeafColumns( + tableColumns as DataTableProps["columns"], + ).some(({ column }) => column.meta?.filter?.type === "faceted"), + [tableColumns], + ); + // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Table owns its instance functions. const table = useReactTable({ data: tableData, columns: tableColumns, getCoreRowModel: getCoreRowModel(), getFilteredRowModel: manualFiltering ? undefined : getFilteredRowModel(), + getFacetedRowModel: + needsFaceting && !manualFiltering ? getFacetedRowModel() : undefined, + getFacetedUniqueValues: + needsFaceting && !manualFiltering ? getFacetedUniqueValues() : undefined, + getGroupedRowModel: + currentGrouping.length && !manualGrouping ? getGroupedRowModel() : undefined, getSortedRowModel: manualSorting ? undefined : getSortedRowModel(), getExpandedRowModel: - getSubRows && !manualExpanding ? getExpandedRowModel() : undefined, + (getSubRows || currentGrouping.length) && !manualExpanding + ? getExpandedRowModel() + : undefined, getPaginationRowModel: manualPagination || infiniteScroll?.enabled ? undefined @@ -372,6 +404,7 @@ export function useDataTableInstance({ column.columnDef.enableGlobalFilter !== false && typeof column.accessorFn === "function", manualSorting, + manualGrouping, manualFiltering, manualExpanding, manualPagination: manualPagination || Boolean(infiniteScroll?.enabled), @@ -387,10 +420,13 @@ export function useDataTableInstance({ onColumnVisibilityChange: handleColumnVisibilityChange, onColumnFiltersChange: handleColumnFiltersChange, onExpandedChange: handleExpandedChange, + onGroupingChange: handleGroupingChange, onColumnOrderChange: handleColumnOrderChange, onColumnPinningChange: handleColumnPinningChange, onRowPinningChange: handleRowPinningChange, onColumnSizingChange: handleColumnSizingChange, + aggregationFns, + groupedColumnMode, }); tableRef.current = table; diff --git a/src/core/data-table/use-data-table-state.ts b/src/core/data-table/use-data-table-state.ts index 2b47260..a1191f7 100644 --- a/src/core/data-table/use-data-table-state.ts +++ b/src/core/data-table/use-data-table-state.ts @@ -5,6 +5,7 @@ import type { ColumnPinningState, ColumnSizingState, ExpandedState, + GroupingState, PaginationState, RowPinningState, SortingState, @@ -46,6 +47,7 @@ export function useDataTableState({ enableRowSelection, enableToolbarQueryFiltering, expanded, + grouping, getSubRows, getRowId, hiddenRows, @@ -61,6 +63,7 @@ export function useDataTableState({ onColumnVisibilityChange, onDensityChange, onExpandedChange, + onGroupingChange, onPageIndexChange, onRowSelectionChange, onShowHiddenRowsChange, @@ -95,6 +98,7 @@ export function useDataTableState({ enableRowSelection: boolean; enableToolbarQueryFiltering: boolean; expanded: DataTableProps["expanded"]; + grouping: DataTableProps["grouping"]; getSubRows: DataTableProps["getSubRows"]; getRowId: DataTableProps["getRowId"]; hiddenRows: DataTableProps["hiddenRows"]; @@ -110,6 +114,7 @@ export function useDataTableState({ onColumnVisibilityChange: DataTableProps["onColumnVisibilityChange"]; onDensityChange: DataTableProps["onDensityChange"]; onExpandedChange: DataTableProps["onExpandedChange"]; + onGroupingChange: DataTableProps["onGroupingChange"]; onPageIndexChange: DataTableProps["onPageIndexChange"]; onRowSelectionChange: DataTableProps["onRowSelectionChange"]; onShowHiddenRowsChange: DataTableProps["onShowHiddenRowsChange"]; @@ -220,6 +225,11 @@ export function useDataTableState({ onChange: onViewModeChange, defaultValue: () => initialState?.viewMode ?? "table", }); + const [currentGrouping, setCurrentGrouping] = useControllableState({ + value: grouping, + onChange: onGroupingChange, + defaultValue: () => initialState?.grouping ?? [], + }); const [currentShowHiddenRows, setCurrentShowHiddenRows] = useControllableState({ value: showHiddenRows, @@ -468,6 +478,7 @@ export function useDataTableState({ currentColumnVisibility, currentDensity, currentExpanded, + currentGrouping, currentPagination, currentRowSelection, currentShowHiddenRows, @@ -489,6 +500,7 @@ export function useDataTableState({ setCurrentRowPinning, setCurrentColumnVisibility, setCurrentExpanded, + setCurrentGrouping, setCurrentRowSelection, setCurrentSorting, setLocalColumnSizing: setCurrentColumnSizing, diff --git a/src/core/data-table/use-data-table-toolbar-features.ts b/src/core/data-table/use-data-table-toolbar-features.ts index a616d64..76c6154 100644 --- a/src/core/data-table/use-data-table-toolbar-features.ts +++ b/src/core/data-table/use-data-table-toolbar-features.ts @@ -100,10 +100,25 @@ export function useDataTableToolbarFeatures({ ? startCase(accessorKey) : startCase(id)); const state = currentColumnFilters.find((item) => item.id === id); + const configuredFacetOptions = filter.faceting?.options; const rawOptions = - typeof filter.options === "function" - ? filter.options({ rows: visibleData }) - : (filter.options ?? []); + filter.type === "faceted" && configuredFacetOptions + ? typeof configuredFacetOptions === "function" + ? configuredFacetOptions({ rows: visibleData }) + : configuredFacetOptions + : filter.type === "faceted" + ? Array.from(table.getColumn(id)?.getFacetedUniqueValues() ?? []).map( + ([value, count]) => ({ + label: + filter.faceting?.getOptionLabel?.(value as never) ?? + String(value), + value: String(value), + count, + }), + ) + : typeof filter.options === "function" + ? filter.options({ rows: visibleData }) + : (filter.options ?? []); return [ { @@ -113,6 +128,8 @@ export function useDataTableToolbarFeatures({ value: state?.value, placeholder: filter.placeholder, options: normalizeColumnFilterOptions(rawOptions), + searchable: filter.faceting?.searchable, + searchPlaceholder: filter.faceting?.searchPlaceholder, trueLabel: filter.trueLabel, falseLabel: filter.falseLabel, min: filter.min, @@ -121,7 +138,13 @@ export function useDataTableToolbarFeatures({ }, ]; }); - }, [columns, currentColumnFilters, enableColumnFilters, visibleData]); + }, [ + columns, + currentColumnFilters, + enableColumnFilters, + table, + visibleData, + ]); const handleToolbarColumnFilterChange = React.useCallback( (columnId: string, value: unknown) => { diff --git a/src/core/types.ts b/src/core/types.ts index 8fda587..173069f 100644 --- a/src/core/types.ts +++ b/src/core/types.ts @@ -1,5 +1,6 @@ import type * as React from "react"; import type { + AggregationFn, CellContext, ColumnFiltersState, ColumnDef, @@ -8,6 +9,7 @@ import type { ColumnSizingState, ExpandedState, FilterFnOption, + GroupingState, HeaderContext, PaginationState, Row, @@ -35,6 +37,7 @@ export type DataTableColumnFilterType = | "text" | "select" | "multi" + | "faceted" | "boolean" | "numberRange" | "dateRange"; @@ -89,6 +92,24 @@ export type DataTableCellEditRenderProps = { export type DataTableColumnFilterOption = { label: string; value: string; + /** Number of matching records. Omit when the count is not known. */ + count?: number; + disabled?: boolean; +}; + +export type DataTableFacetedFilterOptions = { + /** + * Server-provided facet values. When supplied, these take precedence over + * locally calculated unique values and their counts. + */ + options?: + | Array + | ((context: { rows: Array }) => Array); + /** Render a readable label for values discovered from the local row model. */ + getOptionLabel?: (value: TValue | undefined) => string; + /** Enables an in-menu search input. Defaults to true. */ + searchable?: boolean; + searchPlaceholder?: string; }; export type DataTableColumnFilterRangeValue = { @@ -104,6 +125,8 @@ export type DataTableColumnFilterConfig = { | Array | ((context: { rows: Array }) => Array); getOptionValue?: (value: TValue | undefined, row: TData) => string; + /** Settings for `type: "faceted"`, including server-provided facet data. */ + faceting?: DataTableFacetedFilterOptions; operator?: DataTableColumnFilterOperator; trueLabel?: string; falseLabel?: string; @@ -422,6 +445,7 @@ export type DataTableState = { columnPinning: ColumnPinningState; rowPinning: RowPinningState; columnSizing: ColumnSizingState; + grouping: GroupingState; density: DataTableDensity; viewMode: DataTableViewMode; showHiddenRows: boolean; @@ -562,6 +586,11 @@ export type DataTableLabels = { pinRowToBottom: string; unpinRow: string; resizeColumn: (columnLabel: string) => string; + grouping: string; + groupBy: (columnLabel: string) => string; + ungroup: (columnLabel: string) => string; + removeGrouping: (columnLabel: string) => string; + facetSearch: (columnLabel: string) => string; }; export type DataTableSummaryRow = { @@ -609,6 +638,16 @@ export type DataTableProps = { sorting?: SortingState; onSortingChange?: (sorting: SortingState) => void; manualSorting?: boolean; + grouping?: GroupingState; + onGroupingChange?: (grouping: GroupingState) => void; + /** Use rows already grouped by the server instead of TanStack's grouping model. */ + manualGrouping?: boolean; + /** Show group/ungroup controls in the table options menu and grouping bar. */ + enableGrouping?: boolean; + /** Controls whether grouped columns are reordered, removed, or left in place. */ + groupedColumnMode?: false | "reorder" | "remove"; + /** Named aggregation functions available to column `aggregationFn` definitions. */ + aggregationFns?: Record>; pageIndex?: number; pageSize?: number; onPageIndexChange?: (pageIndex: number) => void; From 712c9ef7f1a6a004254c946aa55818d7faf265db Mon Sep 17 00:00:00 2001 From: Toby Martin Date: Sun, 9 Aug 2026 02:10:21 +0000 Subject: [PATCH 16/31] perf: improve search and virtual row measurement --- README.md | 9 ++ benchmarks/README.md | 31 +++++++ benchmarks/fixtures.ts | 22 +++++ benchmarks/index.html | 12 +++ benchmarks/performance.spec.ts | 43 +++++++++ benchmarks/playwright.config.ts | 14 +++ benchmarks/src/main.tsx | 89 +++++++++++++++++++ benchmarks/vite.config.ts | 15 ++++ docs/API.md | 14 +++ docs/Roadmap.md | 15 ++-- package.json | 1 + src/core/data-table/create-data-table.tsx | 2 + src/core/data-table/data-table-body-row.tsx | 5 ++ .../data-table/data-table-phase-zero.test.tsx | 53 +++++++++++ src/core/data-table/data-table-utils.ts | 4 + .../data-table-virtual-row-measurement.tsx | 25 ++++++ .../data-table-virtual-table-panel.tsx | 25 ++++-- .../data-table/use-data-table-instance.ts | 5 +- .../use-data-table-performance-diagnostics.ts | 68 ++++++++++++++ .../data-table/use-data-table-search-index.ts | 46 ++++++++++ src/core/data-table/use-data-table-state.ts | 7 +- 21 files changed, 490 insertions(+), 15 deletions(-) create mode 100644 benchmarks/README.md create mode 100644 benchmarks/fixtures.ts create mode 100644 benchmarks/index.html create mode 100644 benchmarks/performance.spec.ts create mode 100644 benchmarks/playwright.config.ts create mode 100644 benchmarks/src/main.tsx create mode 100644 benchmarks/vite.config.ts create mode 100644 src/core/data-table/data-table-virtual-row-measurement.tsx create mode 100644 src/core/data-table/use-data-table-performance-diagnostics.ts create mode 100644 src/core/data-table/use-data-table-search-index.ts diff --git a/README.md b/README.md index 3e75b0c..41aba46 100644 --- a/README.md +++ b/README.md @@ -234,6 +234,15 @@ Card mode can virtualize large card sets: `virtualization.card.lanes` accepts a positive number or `"auto"`. `"auto"` derives lanes from the card viewport width. Before the scroll viewport is measurable, `fallbackCardCount` bounds first-paint work so large card collections do not mount in full. +Virtual rows are measured after mount, including variable-height wrapped table +cells and card lanes. Keep `getRowId`, row objects, and column definitions +stable and immutable: row ids are the virtual scroll keys and built-in search +indexes values by row/column identity. Development builds warn about duplicate +row ids and common identity churn. See [the benchmark harness](benchmarks/README.md) +for repeatable row- and column-scale measurements. Column virtualization is not +currently offered because it would compromise the native table's grouped-header, +pinned-column, resize, detail-row, and accessibility contracts. + ## Adapter Requirements ### `data-table-pro` diff --git a/benchmarks/README.md b/benchmarks/README.md new file mode 100644 index 0000000..b6e1836 --- /dev/null +++ b/benchmarks/README.md @@ -0,0 +1,31 @@ +# Performance benchmark harness + +Run the browser harness with `pnpm bench`. It starts the benchmark Vite page, +uses Playwright Chromium, and prints one JSON record per scenario. It is a +measurement tool, not a pass/fail CI performance threshold: hardware and +browser versions materially affect the numbers. + +The fixture covers these row/column scales: + +| Scenario | Rows | Columns | Interaction | +| --- | ---: | ---: | --- | +| `rows-1k` | 1,000 | 20 | client search and virtual scroll | +| `rows-10k` | 10,000 | 20 | client search and virtual scroll | +| `rows-50k` | 50,000 | 20 | client search and virtual scroll | +| `rows-100k` | 100,000 | 20 | client search and virtual scroll | +| `columns-20` | 1,000 | 20 | horizontal layout baseline | +| `columns-100` | 1,000 | 100 | horizontal layout stress | +| `columns-500` | 1,000 | 500 | wide-table constraint evidence | + +Each JSON record includes first-render time, search-settle time, DOM node +count, heap when Chromium exposes it, long-task count/duration, and a sampled +scroll-frame interval. Repeat each scenario several times and compare medians +on the same machine/browser. Use `?scenario=columns-500` in the benchmark page +to inspect a scenario manually. + +The harness intentionally measures full native table columns. Column +virtualization is not implemented because a body-only slice would violate this +package's grouped-header, pinning, resizing, detail-row, and accessibility +contracts. For very wide production datasets, prefer responsive column +visibility, server projection, or a narrower table view until a correct +two-axis design can be introduced. diff --git a/benchmarks/fixtures.ts b/benchmarks/fixtures.ts new file mode 100644 index 0000000..6b1c3a3 --- /dev/null +++ b/benchmarks/fixtures.ts @@ -0,0 +1,22 @@ +export const benchmarkScenarios = [ + { name: "rows-1k", rows: 1_000, columns: 20 }, + { name: "rows-10k", rows: 10_000, columns: 20 }, + { name: "rows-50k", rows: 50_000, columns: 20 }, + { name: "rows-100k", rows: 100_000, columns: 20 }, + { name: "columns-20", rows: 1_000, columns: 20 }, + { name: "columns-100", rows: 1_000, columns: 100 }, + { name: "columns-500", rows: 1_000, columns: 500 }, +] as const; + +export type BenchmarkScenario = (typeof benchmarkScenarios)[number]; + +export function makeBenchmarkRows(rowCount: number, columnCount: number) { + return Array.from({ length: rowCount }, (_, rowIndex) => { + const row: Record = { id: `row-${rowIndex}` }; + for (let columnIndex = 0; columnIndex < columnCount; columnIndex += 1) { + row[`column-${columnIndex}`] = + `Row ${rowIndex} column ${columnIndex} searchable ${rowIndex % 97}`; + } + return row; + }); +} diff --git a/benchmarks/index.html b/benchmarks/index.html new file mode 100644 index 0000000..71edcb7 --- /dev/null +++ b/benchmarks/index.html @@ -0,0 +1,12 @@ + + + + + + data-table-pro benchmark + + +
    + + + diff --git a/benchmarks/performance.spec.ts b/benchmarks/performance.spec.ts new file mode 100644 index 0000000..3a5dcf8 --- /dev/null +++ b/benchmarks/performance.spec.ts @@ -0,0 +1,43 @@ +import { expect, test } from "@playwright/test"; +import { benchmarkScenarios } from "./fixtures"; + +for (const scenario of benchmarkScenarios) { + test(`measures ${scenario.name}`, async ({ page }) => { + await page.goto(`/?scenario=${scenario.name}`); + await page.waitForFunction(() => Boolean(window.__DTP_BENCHMARK__)); + + const searchStartedAt = await page.evaluate(() => performance.now()); + await page.getByPlaceholder("Search rows...").fill("searchable 42"); + await page.waitForTimeout(50); + const searchSettleMs = await page.evaluate( + (startedAt) => performance.now() - startedAt, + searchStartedAt, + ); + const scrollFrameMs = await page.evaluate(async () => { + const viewport = document.querySelector( + '[data-radix-scroll-area-viewport]', + ); + const startedAt = performance.now(); + viewport?.scrollTo({ top: 12_000 }); + await new Promise(requestAnimationFrame); + return performance.now() - startedAt; + }); + const metrics = await page.evaluate(() => window.__DTP_BENCHMARK__!.readMetrics()); + const initialRenderMs = await page.evaluate( + () => window.__DTP_BENCHMARK__!.initialRenderMs, + ); + + expect(metrics.domNodes).toBeGreaterThan(0); + console.log( + JSON.stringify({ + scenario: scenario.name, + rows: scenario.rows, + columns: scenario.columns, + initialRenderMs, + searchSettleMs, + scrollFrameMs, + ...metrics, + }), + ); + }); +} diff --git a/benchmarks/playwright.config.ts b/benchmarks/playwright.config.ts new file mode 100644 index 0000000..45ef8e6 --- /dev/null +++ b/benchmarks/playwright.config.ts @@ -0,0 +1,14 @@ +import { defineConfig } from "@playwright/test"; + +export default defineConfig({ + testDir: ".", + testMatch: "performance.spec.ts", + reporter: "list", + use: { browserName: "chromium", headless: true }, + webServer: { + command: + "corepack pnpm exec vite --config vite.config.ts --host 127.0.0.1", + port: 4177, + reuseExistingServer: !process.env.CI, + }, +}); diff --git a/benchmarks/src/main.tsx b/benchmarks/src/main.tsx new file mode 100644 index 0000000..5868ec7 --- /dev/null +++ b/benchmarks/src/main.tsx @@ -0,0 +1,89 @@ +import * as React from "react"; +import { createRoot } from "react-dom/client"; +import type { DataTableColumnDef } from "../../src"; +import { DataTable } from "../../src"; +import "../../styles.css"; +import { + benchmarkScenarios, + makeBenchmarkRows, + type BenchmarkScenario, +} from "../fixtures"; + +declare global { + interface Window { + __DTP_BENCHMARK__?: { + initialRenderMs: number; + readMetrics: () => { + domNodes: number; + heapBytes: number | null; + longTaskCount: number; + longTaskMs: number; + }; + }; + } +} + +const scenario = resolveScenario(new URLSearchParams(location.search).get("scenario")); +const rows = makeBenchmarkRows(scenario.rows, scenario.columns); +const columns: Array, unknown>> = + Array.from({ length: scenario.columns }, (_, index) => ({ + accessorKey: `column-${index}`, + header: `Column ${index}`, + size: 160, + })); +const renderStartedAt = performance.now(); +let longTaskCount = 0; +let longTaskMs = 0; + +try { + new PerformanceObserver((entries) => { + for (const entry of entries.getEntries()) { + longTaskCount += 1; + longTaskMs += entry.duration; + } + }).observe({ type: "longtask", buffered: true }); +} catch { + // Long Task timing is not exposed by every browser or privacy mode. +} + +function Benchmark() { + React.useEffect(() => { + window.__DTP_BENCHMARK__ = { + initialRenderMs: performance.now() - renderStartedAt, + readMetrics: () => ({ + domNodes: document.querySelectorAll("*").length, + heapBytes: + "memory" in performance + ? (performance as Performance & { + memory?: { usedJSHeapSize?: number }; + }).memory?.usedJSHeapSize ?? null + : null, + longTaskCount, + longTaskMs, + }), + }; + }, []); + + return ( +
    +

    Benchmark: {scenario.name}

    + row.id} + pageSize={scenario.rows} + rowsPerPageOptions={[scenario.rows]} + virtualization={{ enabled: true, overscan: 8 }} + /> +
    + ); +} + +createRoot(document.getElementById("root")!).render(); + +function resolveScenario(name: string | null): BenchmarkScenario { + return ( + benchmarkScenarios.find((candidate) => candidate.name === name) ?? + benchmarkScenarios[0] + ); +} diff --git a/benchmarks/vite.config.ts b/benchmarks/vite.config.ts new file mode 100644 index 0000000..b3db4b4 --- /dev/null +++ b/benchmarks/vite.config.ts @@ -0,0 +1,15 @@ +import path from "node:path"; +import { fileURLToPath } from "node:url"; +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react"; + +const rootDir = path.resolve( + path.dirname(fileURLToPath(import.meta.url)), + "..", +); + +export default defineConfig({ + root: path.join(rootDir, "benchmarks"), + plugins: [react()], + server: { port: 4177, strictPort: true }, +}); diff --git a/docs/API.md b/docs/API.md index f59bf5b..3874b01 100644 --- a/docs/API.md +++ b/docs/API.md @@ -729,6 +729,20 @@ capped at 20 table rows or 12 cards so SSR and first paint remain useful without mounting the complete dataset. Override those caps with `fallbackRowCount` and `fallbackCardCount`. +Rendered virtual table rows and card lanes are measured after mount, so wrapped +cells and variable-height cards correct their estimates while scrolling. Stable, +unique `getRowId` values are required: they are virtual item keys and let the +virtualizer retain the scroll anchor when measurements change. Treat `data`, +row objects, column definitions, and `getRowId` as immutable/memoized inputs. +Development builds warn about common identity churn and duplicate row ids. + +Column virtualization is intentionally not available in 4.3. The table panel +preserves native table layout, grouped headers, pinned/resized columns, detail +rows, and accessibility semantics; slicing only body columns would break those +contracts. Use the included 20/100/500-column benchmark to establish whether +pagination, responsive visibility, or server projection is the appropriate +wide-table strategy for an application. + Import behavior: - a base adapter dynamically loads the virtual panels only after diff --git a/docs/Roadmap.md b/docs/Roadmap.md index 2db6f8c..6e1b70a 100644 --- a/docs/Roadmap.md +++ b/docs/Roadmap.md @@ -281,9 +281,9 @@ considered shipped. ### Phase 3: performance and package architecture (3.3) -Status: first code-splitting slice delivered on `main`; runtime benchmarks, -search indexing, measured variable-height virtualization, and two-axis -virtualization remain. +Status: code-splitting, benchmark fixtures, cached client search, deferred +client filtering, and measured variable-height row/card virtualization are +delivered. Two-axis/column virtualization remains intentionally deferred. Delivered in the first slice: @@ -301,7 +301,7 @@ Delivered in the first slice: - Added CI budgets for static package graphs, adapter deltas, URL state, demo initial JavaScript, and explicit TanStack Virtual import boundaries. -Measure first: +Measure first (delivered in `benchmarks/`): - Add reproducible React Profiler and browser benchmarks for 1k, 10k, 50k, and 100k rows; 20, 100, and 500 columns; client filtering/sorting/grouping; @@ -310,7 +310,7 @@ Measure first: dropped frames. - Publish benchmark fixtures and compare every performance PR to the baseline. -Runtime work: +Runtime work (delivered except where noted): - Cache searchable values by data/column identity and expose a custom indexing hook for expensive domain data. @@ -318,7 +318,10 @@ Runtime work: server callbacks. - Dynamically measure variable-height table/card rows and preserve scroll position across expansion, editing, and responsive changes. -- Add optional column virtualization and a two-axis virtual layout. +- Add optional column virtualization and a two-axis virtual layout. Deferred: + a correct native-table implementation must preserve grouped headers, pinned + and resized columns, detail rows, and screen-reader semantics together; the + wide-column benchmark is the executable evidence until that design exists. - Document immutable row/column identity requirements and warn in development for common unstable inputs. - Profile memo comparators and remove memoization whose comparison cost exceeds diff --git a/package.json b/package.json index cf46e49..3a5fcd5 100644 --- a/package.json +++ b/package.json @@ -84,6 +84,7 @@ }, "scripts": { "build": "tsup", + "bench": "playwright test --config benchmarks/playwright.config.ts", "bundle:check": "node scripts/check-bundle-size.mjs", "api:check": "node scripts/public-api-snapshot.mjs", "api:update": "node scripts/public-api-snapshot.mjs --update", diff --git a/src/core/data-table/create-data-table.tsx b/src/core/data-table/create-data-table.tsx index b62d68a..d26b1d5 100644 --- a/src/core/data-table/create-data-table.tsx +++ b/src/core/data-table/create-data-table.tsx @@ -45,6 +45,7 @@ import { clearDataTableColumnPrefs } from "./use-data-table-column-prefs"; import { useDataTableToolbarFeatures } from "./use-data-table-toolbar-features"; import { useColumnLayout } from "./use-column-layout"; import { useRowEditing } from "./use-row-editing"; +import { useDataTablePerformanceDiagnostics } from "./use-data-table-performance-diagnostics"; type CreateDataTableOptions = { CardPanel?: typeof DefaultDataTableCardPanel; @@ -218,6 +219,7 @@ export function createDataTableWithPanels( const lastSelectedRowIdRef = React.useRef(null); const generatedTitleId = React.useId(); const generatedDescriptionId = React.useId(); + useDataTablePerformanceDiagnostics({ columns, data, getRowId }); React.useMemo(() => validateDataTableColumnIds(columns), [columns]); const resolvedLabels = React.useMemo( () => resolveDataTableLabels(labels), diff --git a/src/core/data-table/data-table-body-row.tsx b/src/core/data-table/data-table-body-row.tsx index 7546561..28f5770 100644 --- a/src/core/data-table/data-table-body-row.tsx +++ b/src/core/data-table/data-table-body-row.tsx @@ -17,6 +17,7 @@ import { isDataTableLoadingRow, } from "./data-table-utils"; import { renderEditableCell } from "./use-row-editing"; +import { useDataTableVirtualRowMeasurement } from "./data-table-virtual-row-measurement"; import { cellAlignClassName, hideOnClassName } from "../types"; type DataTableBodyRowProps = { @@ -78,6 +79,8 @@ function DataTableBodyRowInner({ visibleLeafColumnCount, }: DataTableBodyRowProps) { const { Checkbox, Input, Skeleton, TableCell, TableRow } = components; + const virtualRowMeasurement = useDataTableVirtualRowMeasurement(); + const measureElement = pinnedPosition ? undefined : virtualRowMeasurement; const firstDataColumnId = visibleCells.find( (cell) => !columnLayouts.get(cell.column.id)?.isUtilityColumn, )?.column.id; @@ -85,7 +88,9 @@ function DataTableBodyRowInner({ return ( 0 ? row.depth : undefined } diff --git a/src/core/data-table/data-table-phase-zero.test.tsx b/src/core/data-table/data-table-phase-zero.test.tsx index af071e1..28d09d5 100644 --- a/src/core/data-table/data-table-phase-zero.test.tsx +++ b/src/core/data-table/data-table-phase-zero.test.tsx @@ -113,6 +113,59 @@ describe("DataTable phase-zero contracts", () => { expect(globalFilterFn).toHaveBeenCalled(); }); + it("caches normalized built-in search values across query changes", () => { + const getAccessorValue = vi.fn((row: TestRow) => row.name); + const searchColumns: Array> = [ + { + id: "name", + accessorFn: getAccessorValue, + header: "Name", + }, + ]; + + render( + row.id} + />, + ); + + fireEvent.change(screen.getByPlaceholderText("Search rows..."), { + target: { value: "ada" }, + }); + expect(screen.getByText("Ada")).not.toBeNull(); + expect(getAccessorValue).toHaveBeenCalledTimes(2); + + fireEvent.change(screen.getByPlaceholderText("Search rows..."), { + target: { value: "ad" }, + }); + expect(screen.getByText("Ada")).not.toBeNull(); + expect(getAccessorValue).toHaveBeenCalledTimes(2); + }); + + it("warns in development when row identity cannot safely anchor table state", () => { + const warning = vi.spyOn(console, "warn").mockImplementation(() => {}); + + render( + row.id} + />, + ); + + expect(warning).toHaveBeenCalledWith( + expect.stringContaining("Duplicate row id \"duplicate\""), + ); + }); + it("searches nested leaf columns with the real row index", () => { type NestedRow = { id: string; diff --git a/src/core/data-table/data-table-utils.ts b/src/core/data-table/data-table-utils.ts index 438c7be..f78a4cb 100644 --- a/src/core/data-table/data-table-utils.ts +++ b/src/core/data-table/data-table-utils.ts @@ -393,6 +393,10 @@ export function dataTableGlobalFilterFn( .includes(normalizedQuery); } +export function normalizeDataTableSearchText(value: unknown) { + return normalizeFilterValue(value).trim().toLowerCase(); +} + export async function exportDataTableCsv({ csvExport, table, diff --git a/src/core/data-table/data-table-virtual-row-measurement.tsx b/src/core/data-table/data-table-virtual-row-measurement.tsx new file mode 100644 index 0000000..5ea86a6 --- /dev/null +++ b/src/core/data-table/data-table-virtual-row-measurement.tsx @@ -0,0 +1,25 @@ +import * as React from "react"; + +const DataTableVirtualRowMeasurementContext = React.createContext< + ((element: HTMLTableRowElement | null) => void) | undefined +>(undefined); + +export function DataTableVirtualRowMeasurementProvider({ + children, + measureRow, +}: { + children: React.ReactNode; + measureRow: ((element: HTMLTableRowElement | null) => void) | undefined; +}) { + return ( + + {children} + + ); +} + +export function useDataTableVirtualRowMeasurement(): + | ((element: HTMLTableRowElement | null) => void) + | undefined { + return React.useContext(DataTableVirtualRowMeasurementContext); +} diff --git a/src/core/data-table/data-table-virtual-table-panel.tsx b/src/core/data-table/data-table-virtual-table-panel.tsx index d562ec7..022d34a 100644 --- a/src/core/data-table/data-table-virtual-table-panel.tsx +++ b/src/core/data-table/data-table-virtual-table-panel.tsx @@ -2,6 +2,7 @@ import * as React from "react"; import { useVirtualizer } from "@tanstack/react-virtual"; import { DataTableTablePanel } from "./data-table-table-panel"; import type { DataTableTablePanelProps } from "./data-table-table-panel"; +import { DataTableVirtualRowMeasurementProvider } from "./data-table-virtual-row-measurement"; export function DataTableVirtualTablePanel( props: DataTableTablePanelProps, @@ -61,13 +62,25 @@ export function DataTableVirtualTablePanel( (virtualItems.at(-1)?.end ?? virtualPaddingTop), ) : 0; + const measureRow = React.useCallback>( + (element) => { + if (element) { + rowVirtualizer.measureElement(element); + } + }, + [rowVirtualizer], + ); return ( - + + + ); } diff --git a/src/core/data-table/use-data-table-instance.ts b/src/core/data-table/use-data-table-instance.ts index 7d7d098..7b58884 100644 --- a/src/core/data-table/use-data-table-instance.ts +++ b/src/core/data-table/use-data-table-instance.ts @@ -26,7 +26,6 @@ import type { import type { DataTableProps } from "../types"; import { canReorderDataTableColumn, - dataTableGlobalFilterFn, getColumnId, getDataTableLeafColumns, isDataTableLoadingRow, @@ -36,6 +35,7 @@ import { import type { DataTableColumnGroupPaths } from "./data-table-utils"; import { useDataTableInfiniteScroll } from "./use-data-table-infinite-scroll"; import { useDataTablePaginationClamp } from "./use-data-table-pagination-clamp"; +import { useDataTableSearchIndex } from "./use-data-table-search-index"; export function useDataTableInstance({ autoResetPageIndex, @@ -169,6 +169,7 @@ export function useDataTableInstance({ virtualization: DataTableProps["virtualization"]; viewportHeight: number; }) { + const cachedGlobalFilterFn = useDataTableSearchIndex(); const generatedColumnIds = React.useMemo(() => { return getDataTableLeafColumns( tableColumns as DataTableProps["columns"], @@ -367,7 +368,7 @@ export function useDataTableInstance({ getRowCanExpand: getSubRows ? (row) => getRowCanExpand?.(row.original) ?? row.subRows.length > 0 : undefined, - globalFilterFn: globalFilterFn ?? dataTableGlobalFilterFn, + globalFilterFn: globalFilterFn ?? cachedGlobalFilterFn, getColumnCanGlobalFilter: (column) => column.columnDef.enableGlobalFilter !== false && typeof column.accessorFn === "function", diff --git a/src/core/data-table/use-data-table-performance-diagnostics.ts b/src/core/data-table/use-data-table-performance-diagnostics.ts new file mode 100644 index 0000000..26fbd08 --- /dev/null +++ b/src/core/data-table/use-data-table-performance-diagnostics.ts @@ -0,0 +1,68 @@ +import * as React from "react"; +import type { DataTableProps } from "../types"; + +/** Development-only guardrails for identities used by row models and caches. */ +export function useDataTablePerformanceDiagnostics({ + columns, + data, + getRowId, +}: Pick, "columns" | "data" | "getRowId">) { + const previous = React.useRef({ columns, data, getRowId }); + const warned = React.useRef(new Set()); + + React.useEffect(() => { + if (!isDevelopmentEnvironment()) { + return; + } + + const last = previous.current; + if (last.data !== data && !warned.current.has("data")) { + warn( + warned.current, + "data", + "The data array identity changed. Keep rows immutable and memoize unchanged data so filtering, row models, and virtual measurements can be reused.", + ); + } + if (last.columns !== columns && !warned.current.has("columns")) { + warn( + warned.current, + "columns", + "The columns array identity changed. Memoize stable column definitions so the search index and table column model can be reused.", + ); + } + if (last.getRowId !== getRowId && !warned.current.has("getRowId")) { + warn( + warned.current, + "getRowId", + "getRowId identity changed. Memoize it and return an immutable, unique id to preserve row state and virtual scroll anchoring.", + ); + } + + const ids = new Set(); + for (let index = 0; index < data.length; index += 1) { + const id = getRowId(data[index]!, index); + if (ids.has(id) && !warned.current.has("duplicate-row-id")) { + warn( + warned.current, + "duplicate-row-id", + `Duplicate row id "${id}" detected. Row ids must be unique and immutable.`, + ); + break; + } + ids.add(id); + } + previous.current = { columns, data, getRowId }; + }, [columns, data, getRowId]); +} + +function warn(warned: Set, key: string, message: string) { + warned.add(key); + console.warn(`[data-table-pro] ${message}`); +} + +function isDevelopmentEnvironment() { + return ( + (globalThis as { process?: { env?: { NODE_ENV?: string } } }).process?.env + ?.NODE_ENV !== "production" + ); +} diff --git a/src/core/data-table/use-data-table-search-index.ts b/src/core/data-table/use-data-table-search-index.ts new file mode 100644 index 0000000..4827e64 --- /dev/null +++ b/src/core/data-table/use-data-table-search-index.ts @@ -0,0 +1,46 @@ +import * as React from "react"; +import type { FilterFn, Row } from "@tanstack/react-table"; +import { normalizeDataTableSearchText } from "./data-table-utils"; + +/** + * Caches each searchable cell against the application-owned row object and + * stable column id. WeakMap entries disappear with immutable rows and never + * retain removed data. Mutable rows are deliberately unsupported because a + * cache cannot safely observe deep changes without defeating its purpose. + */ +export function useDataTableSearchIndex( +) { + // eslint-disable-next-line react-hooks/immutability -- This weak cache is deliberately populated by TanStack's filter pass, never read during React render. + return React.useMemo>(() => { + const valuesByRow = new WeakMap>(); + + return (row: Row, columnId: string, filterValue: unknown) => { + const query = normalizeDataTableSearchText(filterValue); + if (!query) { + return true; + } + + const original = row.original; + if (typeof original !== "object" || original === null) { + return normalizeDataTableSearchText(row.getValue(columnId)).includes( + query, + ); + } + + let valuesByColumn = valuesByRow.get(original); + if (!valuesByColumn) { + valuesByColumn = new Map(); + valuesByRow.set(original, valuesByColumn); + } + + let text = valuesByColumn.get(columnId); + if (text === undefined) { + const value = row.getValue(columnId); + text = normalizeDataTableSearchText(value); + valuesByColumn.set(columnId, text); + } + + return text.includes(query); + }; + }, []); +} diff --git a/src/core/data-table/use-data-table-state.ts b/src/core/data-table/use-data-table-state.ts index 2b47260..607d2d2 100644 --- a/src/core/data-table/use-data-table-state.ts +++ b/src/core/data-table/use-data-table-state.ts @@ -303,8 +303,13 @@ export function useDataTableState({ 1, loadingRowCount ?? Math.min(5, currentPagination.pageSize), ); + // Keep input/callback state eager. Only the client row-model input is + // deferred, so server/manual callbacks never wait behind a large filter. + const deferredSearchValue = React.useDeferredValue(localSearchValue); const globalFilterValue = enableToolbarQueryFiltering - ? localSearchValue + ? manualFiltering + ? localSearchValue + : deferredSearchValue : ""; const handleViewModeChange = React.useCallback( (nextViewMode: "table" | "card") => { From 8a44ead45ea1a33dfcab11ab3ae92f198ffca6f9 Mon Sep 17 00:00:00 2001 From: Toby Martin Date: Sun, 9 Aug 2026 02:10:39 +0000 Subject: [PATCH 17/31] fix: keep grid rows out of the tab order --- src/core/data-table/data-table-body-row.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/core/data-table/data-table-body-row.tsx b/src/core/data-table/data-table-body-row.tsx index 284a177..f26596b 100644 --- a/src/core/data-table/data-table-body-row.tsx +++ b/src/core/data-table/data-table-body-row.tsx @@ -137,7 +137,9 @@ function DataTableBodyRowInner({ } role={gridMode ? "row" : undefined} aria-rowindex={gridMode ? gridRowAriaIndex : undefined} - tabIndex={onRowClick && !isInitialLoadingRow ? 0 : undefined} + tabIndex={ + !gridMode && onRowClick && !isInitialLoadingRow ? 0 : undefined + } className={cn( !isInitialLoadingRow && getRowClassName?.(originalRow, { From 776d3cfe56d62f789bd84e111b6f98099fbcd640 Mon Sep 17 00:00:00 2001 From: Toby Martin Date: Sun, 9 Aug 2026 02:19:23 +0000 Subject: [PATCH 18/31] fix: narrow performance identity diagnostics --- .../data-table/data-table-phase-zero.test.tsx | 21 +++++++++++++++++++ .../use-data-table-performance-diagnostics.ts | 19 +++++++++++++++-- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/src/core/data-table/data-table-phase-zero.test.tsx b/src/core/data-table/data-table-phase-zero.test.tsx index f2bd7dc..8967a09 100644 --- a/src/core/data-table/data-table-phase-zero.test.tsx +++ b/src/core/data-table/data-table-phase-zero.test.tsx @@ -29,6 +29,7 @@ const columns: Array> = [ header: "Name", }, ]; +const getRowId = (row: TestRow) => row.id; class ResizeObserverMock { observe() {} @@ -166,6 +167,26 @@ describe("DataTable phase-zero contracts", () => { ); }); + it("does not mistake genuinely changed rows for array identity churn", () => { + const warning = vi.spyOn(console, "warn").mockImplementation(() => {}); + const firstRows = [{ id: "1", name: "Ada" }]; + const { rerender } = render( + , + ); + + rerender( + , + ); + + expect(warning).not.toHaveBeenCalledWith( + expect.stringContaining("data array identity changed"), + ); + }); + it("searches nested leaf columns with the real row index", () => { type NestedRow = { id: string; diff --git a/src/core/data-table/use-data-table-performance-diagnostics.ts b/src/core/data-table/use-data-table-performance-diagnostics.ts index 26fbd08..29b218e 100644 --- a/src/core/data-table/use-data-table-performance-diagnostics.ts +++ b/src/core/data-table/use-data-table-performance-diagnostics.ts @@ -16,14 +16,22 @@ export function useDataTablePerformanceDiagnostics({ } const last = previous.current; - if (last.data !== data && !warned.current.has("data")) { + if ( + last.data !== data && + haveSameItems(last.data, data) && + !warned.current.has("data") + ) { warn( warned.current, "data", "The data array identity changed. Keep rows immutable and memoize unchanged data so filtering, row models, and virtual measurements can be reused.", ); } - if (last.columns !== columns && !warned.current.has("columns")) { + if ( + last.columns !== columns && + haveSameItems(last.columns, columns) && + !warned.current.has("columns") + ) { warn( warned.current, "columns", @@ -55,6 +63,13 @@ export function useDataTablePerformanceDiagnostics({ }, [columns, data, getRowId]); } +function haveSameItems(previous: Array, next: Array) { + return ( + previous.length === next.length && + previous.every((item, index) => Object.is(item, next[index])) + ); +} + function warn(warned: Set, key: string, message: string) { warned.add(key); console.warn(`[data-table-pro] ${message}`); From a1bac6f2cae5d6700c700537f9e1f94901370f85 Mon Sep 17 00:00:00 2001 From: Toby Martin Date: Sun, 9 Aug 2026 02:25:25 +0000 Subject: [PATCH 19/31] feat: add grid cell range selection --- browser-tests/data-table.spec.ts | 17 +++ demo/src/DemoApp.tsx | 1 + docs/API.md | 40 +++++++ src/adapters/heroui/index.tsx | 1 + src/adapters/shadcn/index.tsx | 1 + src/adapters/thegridcn/index.tsx | 1 + src/core/data-table/create-data-table.tsx | 68 +++++++++-- src/core/data-table/data-table-body-row.tsx | 66 +++++++++-- .../data-table-grid-accessibility.test.tsx | 94 ++++++++++++++- .../data-table/data-table-table-panel.tsx | 108 +++++++++++++++++- src/core/data-table/data-table-utils.ts | 44 ++++++- src/core/types.ts | 44 ++++++- src/core/ui-kit.ts | 1 + 13 files changed, 462 insertions(+), 24 deletions(-) diff --git a/browser-tests/data-table.spec.ts b/browser-tests/data-table.spec.ts index 9266fd4..aaa9fb8 100644 --- a/browser-tests/data-table.spec.ts +++ b/browser-tests/data-table.spec.ts @@ -199,3 +199,20 @@ test("interactive grid navigation follows the rendered cell geometry", async ({ expect(focused.row).not.toBe("0"); expect(focused.column).toBe("1"); }); + +test("interactive grid selects a pointer-dragged cell range", async ({ page }) => { + await page.goto("/"); + const grid = page.getByRole("grid").first(); + const firstCell = grid.getByRole("gridcell").nth(0); + const fourthCell = grid.getByRole("gridcell").nth(3); + const start = await firstCell.boundingBox(); + const end = await fourthCell.boundingBox(); + expect(start).not.toBeNull(); + expect(end).not.toBeNull(); + await page.mouse.move(start!.x + 8, start!.y + 8); + await page.mouse.down(); + await page.mouse.move(end!.x + 8, end!.y + 8, { steps: 4 }); + await page.mouse.up(); + await expect(firstCell).toHaveAttribute("aria-selected", "true"); + await expect(fourthCell).toHaveAttribute("aria-selected", "true"); +}); diff --git a/demo/src/DemoApp.tsx b/demo/src/DemoApp.tsx index b954dd8..47891a0 100644 --- a/demo/src/DemoApp.tsx +++ b/demo/src/DemoApp.tsx @@ -404,6 +404,7 @@ export function DemoApp() { onRowSelectionChange={setRowSelection} enableRowSelection interactiveGrid + enableCellSelection toolbarActions={[ { key: "refresh", diff --git a/docs/API.md b/docs/API.md index 9788cce..c02fc2f 100644 --- a/docs/API.md +++ b/docs/API.md @@ -652,6 +652,46 @@ Ctrl/Cmd+Home/End, and PageUp/PageDown move that cell. Buttons, checkboxes, links, and edit inputs keep their own keyboard behavior; Escape returns focus from an interactive descendant to its grid cell. +### Grid cell and range selection + +Cell selection is independent from row-checkbox selection and only activates in +interactive grid mode. It stores stable row and column IDs rather than row +positions, so hosts can control it without handing application data to the +table. + +```tsx +const [cellSelection, setCellSelection] = React.useState(null); + + navigator.clipboard.writeText(text) } }} + gridCommands={{ + undo: ({ cellSelection }) => undoInMyStore(cellSelection), + redo: ({ cellSelection }) => redoInMyStore(cellSelection), + }} +/> +``` + +| Prop/API | Type | Description | +| --- | --- | --- | +| `enableCellSelection` | `boolean` | Enables pointer drag and Shift+keyboard rectangular range selection. | +| `cellSelection` / `defaultCellSelection` | `DataTableCellSelection \| null` | Controlled or initial `{ anchor, focus }` range, using `{ rowId, columnId }` corners. A controlled value also enables selection. | +| `onCellSelectionChange` | `(selection) => void` | Receives the complete next range; the host owns controlled state. | +| `gridCommands` | `DataTableGridCommands` | Receives Ctrl/Cmd+Z and Ctrl/Cmd+Shift+Z callbacks. The table does not retain an undo stack or application records. | +| `apiRef.current.getCellSelection()` | `() => DataTableCellSelection \| null` | Reads the current controlled or uncontrolled range. | +| `apiRef.current.setCellSelection()` / `clearCellSelection()` | command methods | Sets or clears the range without changing row selection. | + +Selected cells expose `aria-selected="true"`, `data-dtp-cell-selected`, and the +optional adapter `classNames.cellSelected` styling hook. With an active range, +Ctrl/Cmd+C uses the `"cellSelection"` clipboard scope by default and copies its +rectangular values as TSV (without headers). Set +`clipboard.copy.scope: "cellSelection"` to request that scope explicitly from +the imperative copy API; `includeHeaders: true` remains available. + ### Pagination props | Prop | Type | Default | Description | diff --git a/src/adapters/heroui/index.tsx b/src/adapters/heroui/index.tsx index 59235c1..037bc86 100644 --- a/src/adapters/heroui/index.tsx +++ b/src/adapters/heroui/index.tsx @@ -217,6 +217,7 @@ export const heroUiKit: DataTableUiKit = { cardUnselected: "border-separator", cardViewport: "bg-transparent", cellBorder: "border-separator/70", + cellSelected: "!bg-accent-soft ring-1 ring-inset ring-accent/50", columnGroupHeader: "bg-default/50 font-semibold", dragActive: "rounded-2xl border-dashed border-accent", emptyState: "border-separator bg-surface", diff --git a/src/adapters/shadcn/index.tsx b/src/adapters/shadcn/index.tsx index 9634769..49d23f9 100644 --- a/src/adapters/shadcn/index.tsx +++ b/src/adapters/shadcn/index.tsx @@ -182,6 +182,7 @@ export const shadcnUiKit: DataTableUiKit = { cardUnselected: "border-border", cardViewport: "bg-transparent", cellBorder: "border-border/40", + cellSelected: "!bg-primary/10 ring-1 ring-inset ring-primary/40", columnGroupHeader: "bg-muted/50 font-semibold", dragActive: "rounded-md border-dashed border-primary", emptyState: "border-border/60 bg-background/70", diff --git a/src/adapters/thegridcn/index.tsx b/src/adapters/thegridcn/index.tsx index 8a44bc1..5ad4a2c 100644 --- a/src/adapters/thegridcn/index.tsx +++ b/src/adapters/thegridcn/index.tsx @@ -201,6 +201,7 @@ export const theGridcnUiKit: DataTableUiKit = { cardUnselected: "border-cyan-400/35", cardViewport: "bg-transparent", cellBorder: "border-cyan-400/16", + cellSelected: "!bg-cyan-400/15 ring-1 ring-inset ring-cyan-300/60", columnGroupHeader: "bg-cyan-400/10 text-cyan-200", dragActive: "rounded-md border-dashed border-cyan-300", emptyState: "border-cyan-400/35 bg-black/80", diff --git a/src/core/data-table/create-data-table.tsx b/src/core/data-table/create-data-table.tsx index 00ebcf5..e42554b 100644 --- a/src/core/data-table/create-data-table.tsx +++ b/src/core/data-table/create-data-table.tsx @@ -6,6 +6,7 @@ import type { import type { DataTableActionErrorContext, DataTableApi, + DataTableCellSelection, DataTableProps, DataTableState, } from "../types"; @@ -168,6 +169,11 @@ export function createDataTableWithPanels( rowActions = [], csvExport, clipboard, + enableCellSelection = false, + cellSelection, + defaultCellSelection, + onCellSelectionChange, + gridCommands, density, onDensityChange, enableDensityToggle = false, @@ -236,6 +242,16 @@ export function createDataTableWithPanels( () => resolveDataTableLabels(labels), [labels], ); + const gridMode = + accessibility?.mode === "grid" || + interactiveGrid === true || + typeof interactiveGrid === "object"; + const [currentCellSelection, setCurrentCellSelection] = + useControllableState({ + defaultValue: defaultCellSelection ?? null, + onChange: onCellSelectionChange, + value: cellSelection, + }); const resolvedToolbarQueryValue = toolbarQueryValue ?? unifiedState?.globalFilter; const resolvedSorting = sorting ?? unifiedState?.sorting; @@ -1094,10 +1110,15 @@ export function createDataTableWithPanels( >( (options) => copyDataTableToClipboard({ - clipboard: options ?? clipboard?.copy ?? true, + clipboard: + options ?? + (currentCellSelection + ? { ...(clipboard?.copy === true ? {} : clipboard?.copy), scope: "cellSelection" } + : clipboard?.copy ?? true), + cellSelection: currentCellSelection, table, }), - [clipboard?.copy, table], + [clipboard?.copy, currentCellSelection, table], ); const print = React.useCallback(() => { if (typeof window === "undefined" || typeof window.print !== "function") { @@ -1185,6 +1206,9 @@ export function createDataTableWithPanels( ), exportCsv: exportCsvFromApi, copyToClipboard, + getCellSelection: () => currentCellSelection, + setCellSelection: setCurrentCellSelection, + clearCellSelection: () => setCurrentCellSelection(null), print, toggleFullscreen, }), @@ -1193,6 +1217,7 @@ export function createDataTableWithPanels( clearPersistedState, clearSavedViews, copyToClipboard, + currentCellSelection, createSavedView, deleteSavedView, exportCsvFromApi, @@ -1204,6 +1229,7 @@ export function createDataTableWithPanels( restoreState, pinRow, print, + setCurrentCellSelection, unpinRow, toggleFullscreen, ], @@ -1229,6 +1255,23 @@ export function createDataTableWithPanels( onDragLeave={dragAndDrop?.onDragLeave} onDrop={dragAndDrop?.onDrop} onKeyDown={(event) => { + if ( + gridMode && + gridCommands && + (event.ctrlKey || event.metaKey) && + event.key.toLowerCase() === "z" && + !isDataTableEditableClipboardTarget(event.target) + ) { + const command = event.shiftKey ? gridCommands.redo : gridCommands.undo; + if (command) { + event.preventDefault(); + runAction( + { source: event.shiftKey ? "redo" : "undo" }, + () => command({ cellSelection: currentCellSelection, table }), + ); + } + return; + } if ( !clipboard?.copy || !(event.ctrlKey || event.metaKey) || @@ -1242,7 +1285,13 @@ export function createDataTableWithPanels( { source: "clipboardCopy" }, async () => { await copyToClipboard( - clipboard.copy === true ? undefined : clipboard.copy, + clipboard.copy === true + ? undefined + : currentCellSelection && + typeof clipboard.copy === "object" && + !clipboard.copy.scope + ? { ...clipboard.copy, scope: "cellSelection" } + : clipboard.copy, ); }, ); @@ -1449,16 +1498,21 @@ export function createDataTableWithPanels( uiClassNames={uiClassNames} viewportHeight={viewportHeight} virtualization={virtualization} - gridMode={ - accessibility?.mode === "grid" || interactiveGrid === true || - typeof interactiveGrid === "object" - } + gridMode={gridMode} gridPageSize={ accessibility?.pageSize ?? (typeof interactiveGrid === "object" ? interactiveGrid.pageSize : undefined) } + cellSelectionEnabled={ + gridMode && + (enableCellSelection || + cellSelection !== undefined || + defaultCellSelection !== undefined) + } + cellSelection={currentCellSelection} + onCellSelectionChange={setCurrentCellSelection} gridRowOffset={ manualPagination ? currentPagination.pageIndex * currentPagination.pageSize diff --git a/src/core/data-table/data-table-body-row.tsx b/src/core/data-table/data-table-body-row.tsx index afc0035..48e2a06 100644 --- a/src/core/data-table/data-table-body-row.tsx +++ b/src/core/data-table/data-table-body-row.tsx @@ -48,12 +48,24 @@ type DataTableBodyRowProps = { gridRowAriaIndex: number; gridRowIndex: number; activeGridCell: { row: number; column: number }; + cellSelectionEnabled: boolean; + isGridCellSelected: (row: number, column: number) => boolean; onGridCellFocus: (cell: { row: number; column: number }) => void; onGridCellKeyDown: ( event: React.KeyboardEvent, row: number, column: number, ) => void; + onGridCellPointerDown: ( + event: React.PointerEvent, + row: number, + column: number, + ) => void; + onGridCellPointerEnter: ( + event: React.PointerEvent, + row: number, + column: number, + ) => void; isDraggable: boolean; isDetailExpanded: boolean; isEditing: boolean; @@ -88,8 +100,12 @@ function DataTableBodyRowInner({ gridRowAriaIndex, gridRowIndex, activeGridCell, + cellSelectionEnabled, + isGridCellSelected, onGridCellFocus, onGridCellKeyDown, + onGridCellPointerDown, + onGridCellPointerEnter, isDraggable, isDetailExpanded, isEditing, @@ -183,6 +199,8 @@ function DataTableBodyRowInner({ return; } + if (gridMode && cellSelectionEnabled) return; + void onRowClick?.({ row: originalRow, rowId: row.id }); }} onKeyDown={(event: React.KeyboardEvent) => { @@ -245,13 +263,24 @@ function DataTableBodyRowInner({ value, }) : meta?.cellClassName; + const isCellSelected = + gridMode && cellSelectionEnabled && + !isInitialLoadingRow && + isGridCellSelected(gridRowIndex, columnIndex); return ( ({ } : undefined } + onPointerDown={ + gridMode && cellSelectionEnabled + ? (event: React.PointerEvent) => { + if (isDataTableInteractiveTarget(event.target, event.currentTarget)) return; + event.currentTarget.focus(); + onGridCellPointerDown(event, gridRowIndex, columnIndex); + } + : undefined + } + onPointerEnter={ + gridMode && cellSelectionEnabled + ? (event: React.PointerEvent) => { + if (isDataTableInteractiveTarget(event.target, event.currentTarget)) return; + onGridCellPointerEnter(event, gridRowIndex, columnIndex); + } + : undefined + } className={cn( "border-b", getDensityCellClassName(currentDensity), uiClassNames.cellBorder, + isCellSelected && uiClassNames.cellSelected, layout?.utilityClassName, layout?.isSpacerColumn && "border-b-0 bg-transparent p-0", layout?.pinnedClassName, @@ -452,12 +499,17 @@ function areDataTableBodyRowsEqual( previous.getRowClassName === next.getRowClassName && previous.groupToggleLabel === next.groupToggleLabel && previous.gridMode === next.gridMode && - previous.gridRowAriaIndex === next.gridRowAriaIndex && - previous.gridRowIndex === next.gridRowIndex && - previous.activeGridCell.row === next.activeGridCell.row && - previous.activeGridCell.column === next.activeGridCell.column && - previous.onGridCellFocus === next.onGridCellFocus && - previous.onGridCellKeyDown === next.onGridCellKeyDown && + (!next.gridMode || + (previous.gridRowAriaIndex === next.gridRowAriaIndex && + previous.gridRowIndex === next.gridRowIndex && + previous.activeGridCell.row === next.activeGridCell.row && + previous.activeGridCell.column === next.activeGridCell.column && + previous.cellSelectionEnabled === next.cellSelectionEnabled && + previous.isGridCellSelected === next.isGridCellSelected && + previous.onGridCellFocus === next.onGridCellFocus && + previous.onGridCellKeyDown === next.onGridCellKeyDown && + previous.onGridCellPointerDown === next.onGridCellPointerDown && + previous.onGridCellPointerEnter === next.onGridCellPointerEnter)) && previous.stripedRows === next.stripedRows && previous.uiClassNames === next.uiClassNames && previous.explicitCustomCellColumnIds === next.explicitCustomCellColumnIds && diff --git a/src/core/data-table/data-table-grid-accessibility.test.tsx b/src/core/data-table/data-table-grid-accessibility.test.tsx index d17b1ea..bd5372b 100644 --- a/src/core/data-table/data-table-grid-accessibility.test.tsx +++ b/src/core/data-table/data-table-grid-accessibility.test.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import { afterEach, describe, expect, it } from "vitest"; +import { afterEach, describe, expect, it, vi } from "vitest"; import { cleanup, createEvent, @@ -11,7 +11,7 @@ import { import { DataTable as ShadcnDataTable } from "../../index"; import { DataTable as HeroDataTable } from "../../entries/heroui"; import { DataTable as GridcnDataTable } from "../../entries/thegridcn"; -import type { DataTableColumnDef } from "../types"; +import type { DataTableApi, DataTableColumnDef } from "../types"; type Person = { id: string; name: string; age: number }; @@ -126,4 +126,94 @@ describe("interactive grid accessibility", () => { fireEvent(sort, sortEvent); expect(sortEvent.defaultPrevented).toBe(false); }); + + it("selects a pointer-dragged rectangle and exposes ARIA styling hooks", () => { + const onCellSelectionChange = vi.fn(); + render( + row.id} + interactiveGrid + enableCellSelection + onCellSelectionChange={onCellSelectionChange} + />, + ); + + const cells = screen.getAllByRole("gridcell"); + fireEvent.pointerDown(cells[0], { button: 0 }); + fireEvent.pointerEnter(cells[3], { buttons: 1 }); + fireEvent.pointerUp(window); + expect(cells.slice(0, 4).every((cell) => cell.getAttribute("aria-selected") === "true")).toBe(true); + expect(cells[3].getAttribute("data-dtp-cell-selected")).toBe("true"); + expect(onCellSelectionChange).toHaveBeenLastCalledWith({ + anchor: { rowId: "ada", columnId: "name" }, + focus: { rowId: "grace", columnId: "age" }, + }); + }); + + it("extends a range with Shift+navigation and copies only its cells", async () => { + const onCopy = vi.fn(); + const apiRef = React.createRef>(); + const { container } = render( + row.id} + interactiveGrid + enableCellSelection + clipboard={{ copy: { onCopy } }} + />, + ); + const cells = screen.getAllByRole("gridcell"); + cells[0].focus(); + fireEvent.keyDown(cells[0], { key: "ArrowRight", shiftKey: true }); + await waitFor(() => expect(cells[0].getAttribute("aria-selected")).toBe("true")); + expect(cells[1].getAttribute("aria-selected")).toBe("true"); + expect(apiRef.current?.getCellSelection()).toEqual({ + anchor: { rowId: "ada", columnId: "name" }, + focus: { rowId: "ada", columnId: "age" }, + }); + const root = container.querySelector('[data-dtp-slot="data-table-root"]'); + fireEvent.keyDown(root!, { ctrlKey: true, key: "c" }); + await waitFor(() => expect(onCopy).toHaveBeenCalled()); + const copyContext = onCopy.mock.calls[0]?.[0] as { text: string }; + expect(copyContext.text).toBe("Ada\t36"); + apiRef.current?.clearCellSelection(); + await waitFor(() => expect(apiRef.current?.getCellSelection()).toBeNull()); + }); + + it("keeps controlled selection and delegates undo/redo to the application", () => { + const onCellSelectionChange = vi.fn(); + const undo = vi.fn(); + const redo = vi.fn(); + const selection = { + anchor: { rowId: "grace", columnId: "age" }, + focus: { rowId: "grace", columnId: "age" }, + }; + const { container } = render( + row.id} + interactiveGrid + cellSelection={selection} + onCellSelectionChange={onCellSelectionChange} + gridCommands={{ undo, redo }} + />, + ); + const cells = screen.getAllByRole("gridcell"); + expect(cells[3].getAttribute("aria-selected")).toBe("true"); + fireEvent.pointerDown(cells[0], { button: 0 }); + expect(onCellSelectionChange).toHaveBeenCalledWith({ + anchor: { rowId: "ada", columnId: "name" }, + focus: { rowId: "ada", columnId: "name" }, + }); + const root = container.querySelector('[data-dtp-slot="data-table-root"]'); + fireEvent.keyDown(root!, { ctrlKey: true, key: "z" }); + fireEvent.keyDown(root!, { ctrlKey: true, shiftKey: true, key: "z" }); + expect(undo).toHaveBeenCalledWith(expect.objectContaining({ cellSelection: selection })); + expect(redo).toHaveBeenCalledWith(expect.objectContaining({ cellSelection: selection })); + }); }); diff --git a/src/core/data-table/data-table-table-panel.tsx b/src/core/data-table/data-table-table-panel.tsx index 19abf95..149b8ab 100644 --- a/src/core/data-table/data-table-table-panel.tsx +++ b/src/core/data-table/data-table-table-panel.tsx @@ -9,6 +9,7 @@ import type { } from "@tanstack/react-table"; import type { DataTableDensity, + DataTableCellSelection, DataTableProps, DataTableRowLoadingState, } from "../types"; @@ -30,6 +31,8 @@ export type DataTableTablePanelProps = { DataTableUiKit, "Checkbox" | "Input" | "Skeleton" | "TableCell" | "TableRow" >; + cellSelection: DataTableCellSelection | null; + cellSelectionEnabled: boolean; columnLayouts: ReadonlyMap; columnGroupHeaderHeight: DataTableProps["columnGroupHeaderHeight"]; currentDensity: DataTableDensity; @@ -52,6 +55,7 @@ export type DataTableTablePanelProps = { gridPageSize?: number; gridRowOffset: number; onGridActiveRowIndexChange?: (rowIndex: number) => void; + onCellSelectionChange: (selection: DataTableCellSelection | null) => void; getColumnLayout: (columnId: string) => DataTableColumnLayout; getRowClassName: DataTableProps["getRowClassName"]; getRowLoadingState: DataTableProps["getRowLoadingState"]; @@ -102,6 +106,8 @@ export function DataTableTablePanel({ ariaDescribedBy, ariaLabelledBy, bodyRowComponents, + cellSelection, + cellSelectionEnabled, columnLayouts, columnGroupHeaderHeight, currentDensity, @@ -124,6 +130,7 @@ export function DataTableTablePanel({ gridPageSize, gridRowOffset, onGridActiveRowIndexChange, + onCellSelectionChange, getColumnLayout, getRowClassName, getRowLoadingState, @@ -186,6 +193,48 @@ export function DataTableTablePanel({ topPinnedRows.length + renderedRows.length + bottomPinnedRows.length; const [activeCell, setActiveCell] = React.useState({ row: 0, column: 0 }); const shouldRestoreGridFocusRef = React.useRef(false); + const pointerSelectingRef = React.useRef(false); + const gridRows = React.useMemo( + () => [...topPinnedRows, ...renderedRows, ...bottomPinnedRows], + [bottomPinnedRows, renderedRows, topPinnedRows], + ); + const getGridCoordinate = React.useCallback( + (rowIndex: number, columnIndex: number) => { + const row = gridRows[rowIndex]; + const column = visibleLeafColumns[columnIndex]; + return row && column ? { rowId: row.id, columnId: column.id } : undefined; + }, + [gridRows, visibleLeafColumns], + ); + const selectedBounds = React.useMemo(() => { + if (!cellSelection) return undefined; + const anchorRow = gridRows.findIndex((row) => row.id === cellSelection.anchor.rowId); + const focusRow = gridRows.findIndex((row) => row.id === cellSelection.focus.rowId); + const anchorColumn = visibleLeafColumns.findIndex( + (column) => column.id === cellSelection.anchor.columnId, + ); + const focusColumn = visibleLeafColumns.findIndex( + (column) => column.id === cellSelection.focus.columnId, + ); + if (anchorRow < 0 || focusRow < 0 || anchorColumn < 0 || focusColumn < 0) return undefined; + return { + firstRow: Math.min(anchorRow, focusRow), + lastRow: Math.max(anchorRow, focusRow), + firstColumn: Math.min(anchorColumn, focusColumn), + lastColumn: Math.max(anchorColumn, focusColumn), + }; + }, [cellSelection, gridRows, visibleLeafColumns]); + const isGridCellSelected = React.useCallback( + (rowIndex: number, columnIndex: number) => + Boolean( + selectedBounds && + rowIndex >= selectedBounds.firstRow && + rowIndex <= selectedBounds.lastRow && + columnIndex >= selectedBounds.firstColumn && + columnIndex <= selectedBounds.lastColumn, + ), + [selectedBounds], + ); const handleGridCellFocus = React.useCallback( (cell: { row: number; column: number }) => { shouldRestoreGridFocusRef.current = true; @@ -193,6 +242,39 @@ export function DataTableTablePanel({ }, [], ); + const selectGridCell = React.useCallback( + (rowIndex: number, columnIndex: number, extend: boolean) => { + if (!cellSelectionEnabled) return; + const focus = getGridCoordinate(rowIndex, columnIndex); + if (!focus) return; + const anchor = + extend && cellSelection?.anchor + ? cellSelection.anchor + : focus; + onCellSelectionChange({ anchor, focus }); + }, + [cellSelection, cellSelectionEnabled, getGridCoordinate, onCellSelectionChange], + ); + const handleGridCellPointerDown = React.useCallback( + (event: React.PointerEvent, rowIndex: number, columnIndex: number) => { + if (!cellSelectionEnabled || event.button !== 0) return; + pointerSelectingRef.current = true; + selectGridCell(rowIndex, columnIndex, event.shiftKey); + }, + [cellSelectionEnabled, selectGridCell], + ); + const handleGridCellPointerEnter = React.useCallback( + (event: React.PointerEvent, rowIndex: number, columnIndex: number) => { + if (!cellSelectionEnabled || !pointerSelectingRef.current || event.buttons !== 1) return; + selectGridCell(rowIndex, columnIndex, true); + }, + [cellSelectionEnabled, selectGridCell], + ); + React.useEffect(() => { + const stopSelecting = () => { pointerSelectingRef.current = false; }; + window.addEventListener("pointerup", stopSelecting); + return () => window.removeEventListener("pointerup", stopSelecting); + }, []); // Keep focus on the roving cell after sorting, filtering, or a virtual row // range changes. A missing target is normal while a virtualizer is rendering. @@ -246,12 +328,28 @@ export function DataTableTablePanel({ default: return; } event.preventDefault(); - setActiveCell({ + const nextCell = { row: Math.min(lastRow, Math.max(0, nextRow)), column: Math.min(lastColumn, Math.max(0, nextColumn)), - }); + }; + setActiveCell(nextCell); + if (event.shiftKey && cellSelectionEnabled) { + const focus = getGridCoordinate(nextCell.row, nextCell.column); + const anchor = + cellSelection?.anchor ?? getGridCoordinate(row, column) ?? focus; + if (anchor && focus) onCellSelectionChange({ anchor, focus }); + } }, - [displayRowCount, gridPageSize, tableScrollElement, visibleLeafColumnCount], + [ + cellSelection, + cellSelectionEnabled, + displayRowCount, + getGridCoordinate, + gridPageSize, + onCellSelectionChange, + tableScrollElement, + visibleLeafColumnCount, + ], ); const renderBodyRow = ( row: Row, @@ -312,8 +410,12 @@ export function DataTableTablePanel({ gridRowIndex={rowIndex} gridRowAriaIndex={headerRowCount + gridRowOffset + rowIndex + 1} activeGridCell={activeCell} + cellSelectionEnabled={cellSelectionEnabled} + isGridCellSelected={isGridCellSelected} onGridCellFocus={handleGridCellFocus} onGridCellKeyDown={moveGridFocus} + onGridCellPointerDown={handleGridCellPointerDown} + onGridCellPointerEnter={handleGridCellPointerEnter} /> ); }; diff --git a/src/core/data-table/data-table-utils.ts b/src/core/data-table/data-table-utils.ts index e8011c2..e187adf 100644 --- a/src/core/data-table/data-table-utils.ts +++ b/src/core/data-table/data-table-utils.ts @@ -8,6 +8,7 @@ import type { } from "@tanstack/react-table"; import type { DataTableClipboardCopyOptions, + DataTableCellSelection, DataTableColumnDef, DataTableColumnFilterOption, DataTableCsvExportOptions, @@ -489,9 +490,11 @@ export async function exportDataTableCsv({ export async function copyDataTableToClipboard({ clipboard, + cellSelection, table, }: { clipboard: boolean | DataTableClipboardCopyOptions; + cellSelection?: DataTableCellSelection | null; table: TanStackTable; }) { if (clipboard === false) { @@ -504,7 +507,7 @@ export async function copyDataTableToClipboard({ const requestedColumnIds = options.columns ? new Set(options.columns) : undefined; - const columns = table + const visibleColumns = table .getVisibleLeafColumns() .filter( (column) => @@ -512,10 +515,18 @@ export async function copyDataTableToClipboard({ column.id !== "__spacer__" && (!requestedColumnIds || requestedColumnIds.has(column.id)), ); - const rows = getDataTableExportRows(table, scope); + const selectedRange = + scope === "cellSelection" + ? getDataTableCellSelectionRange(table, visibleColumns, cellSelection) + : undefined; + const columns = selectedRange?.columns ?? visibleColumns; + const rows = + scope === "cellSelection" + ? (selectedRange?.rows ?? []) + : getDataTableExportRows(table, scope); const values: Array> = []; - if (options.includeHeaders ?? true) { + if (options.includeHeaders ?? scope !== "cellSelection") { values.push( columns.map((column) => typeof column.columnDef.header === "string" @@ -572,6 +583,33 @@ export async function copyDataTableToClipboard({ return text; } +function getDataTableCellSelectionRange( + table: TanStackTable, + columns: Array>, + selection: DataTableCellSelection | null | undefined, +) { + if (!selection) return undefined; + const rows = table.getRowModel().rows; + const anchorRow = rows.findIndex((row) => row.id === selection.anchor.rowId); + const focusRow = rows.findIndex((row) => row.id === selection.focus.rowId); + const anchorColumn = columns.findIndex( + (column) => column.id === selection.anchor.columnId, + ); + const focusColumn = columns.findIndex( + (column) => column.id === selection.focus.columnId, + ); + if (anchorRow < 0 || focusRow < 0 || anchorColumn < 0 || focusColumn < 0) { + return undefined; + } + return { + rows: rows.slice(Math.min(anchorRow, focusRow), Math.max(anchorRow, focusRow) + 1), + columns: columns.slice( + Math.min(anchorColumn, focusColumn), + Math.max(anchorColumn, focusColumn) + 1, + ), + }; +} + export function parseDataTableClipboardText( text: string, delimiter: "\t" | "," = "\t", diff --git a/src/core/types.ts b/src/core/types.ts index 9b81ead..e11e8b7 100644 --- a/src/core/types.ts +++ b/src/core/types.ts @@ -39,6 +39,29 @@ export type DataTableInteractiveGridOptions = Omit< "mode" >; +/** A stable grid coordinate used for cell and rectangular range selection. */ +export type DataTableCellCoordinate = { + rowId: string; + columnId: string; +}; + +/** The two corners of a cell selection. A single-cell selection has equal corners. */ +export type DataTableCellSelection = { + anchor: DataTableCellCoordinate; + focus: DataTableCellCoordinate; +}; + +export type DataTableGridCommandContext = { + table: TanStackTable; + cellSelection: DataTableCellSelection | null; +}; + +/** Commands are delegated to the application; the table never records app data. */ +export type DataTableGridCommands = { + undo?: (context: DataTableGridCommandContext) => void | Promise; + redo?: (context: DataTableGridCommandContext) => void | Promise; +}; + export type DataTableAlign = "start" | "center" | "end"; export type DataTableColumnType = "text" | "numeric" | "date"; export type DataTableColumnFixed = "left" | "right"; @@ -68,10 +91,13 @@ export type DataTableCsvExportScope = | "page" | "selected" | "all"; +export type DataTableClipboardCopyScope = + | DataTableCsvExportScope + | "cellSelection"; export type DataTableClipboardCopyOptions = { includeHeaders?: boolean; columns?: Array; - scope?: DataTableCsvExportScope; + scope?: DataTableClipboardCopyScope; /** Defaults to tab-separated text. */ delimiter?: "\t" | ","; escapeFormulaValues?: boolean; @@ -85,7 +111,7 @@ export type DataTableClipboardCopyOptions = { onCopy?: (context: { text: string; rows: Array; - scope: DataTableCsvExportScope; + scope: DataTableClipboardCopyScope; }) => void | Promise; }; export type DataTableClipboardPasteContext = { @@ -109,6 +135,8 @@ export type DataTableActionErrorSource = | "rowAction" | "rowClick" | "edit" + | "undo" + | "redo" | "clipboardCopy" | "clipboardPaste" | "fileUpload" @@ -612,6 +640,9 @@ export type DataTableApi = { copyToClipboard: ( options?: boolean | DataTableClipboardCopyOptions, ) => Promise; + getCellSelection: () => DataTableCellSelection | null; + setCellSelection: (selection: DataTableCellSelection | null) => void; + clearCellSelection: () => void; print: () => boolean; toggleFullscreen: () => Promise; }; @@ -794,6 +825,15 @@ export type DataTableProps = { csvExport?: boolean | DataTableCsvExportOptions; /** Opt-in TSV/CSV copy and application-owned paste handling. */ clipboard?: DataTableClipboardConfig; + /** Enables pointer and Shift+keyboard rectangular cell selection in grid mode. */ + enableCellSelection?: boolean; + /** Controlled cell/range selection. Supplying a value also enables it in grid mode. */ + cellSelection?: DataTableCellSelection | null; + /** Initial cell/range selection when uncontrolled. */ + defaultCellSelection?: DataTableCellSelection | null; + onCellSelectionChange?: (selection: DataTableCellSelection | null) => void; + /** Host-owned undo/redo commands invoked by Ctrl/Cmd+Z and Ctrl/Cmd+Shift+Z. */ + gridCommands?: DataTableGridCommands; density?: DataTableDensity; onDensityChange?: (density: DataTableDensity) => void; enableDensityToggle?: boolean; diff --git a/src/core/ui-kit.ts b/src/core/ui-kit.ts index 0d3d6de..784f2e6 100644 --- a/src/core/ui-kit.ts +++ b/src/core/ui-kit.ts @@ -12,6 +12,7 @@ export type DataTableUiClassNames = { cardUnselected?: string; cardViewport?: string; cellBorder?: string; + cellSelected?: string; columnGroupHeader?: string; dragActive?: string; emptyState?: string; From 90c6c671a8bdd6c7ed3026ecaca743ed9c2d7307 Mon Sep 17 00:00:00 2001 From: Toby Martin Date: Sun, 9 Aug 2026 02:24:55 +0000 Subject: [PATCH 20/31] feat: add toolbar data operations --- README.md | 13 +- docs/API.md | 13 +- .../data-table/create-data-table-toolbar.tsx | 358 +++++++++++++++++- src/core/data-table/create-data-table.tsx | 56 +++ src/core/data-table/data-table-labels.ts | 13 + .../data-table-toolbar-operations.test.tsx | 111 ++++++ .../data-table/data-table-toolbar-section.tsx | 39 +- src/core/types.ts | 25 ++ 8 files changed, 620 insertions(+), 8 deletions(-) create mode 100644 src/core/data-table/data-table-toolbar-operations.test.tsx diff --git a/README.md b/README.md index 24505b1..b38163a 100644 --- a/README.md +++ b/README.md @@ -499,7 +499,8 @@ const url = useDataTableUrlState({ Grouping and row selection are also available as URL slices, but selection is never written unless `"rowSelection"` is explicitly enabled. -Named saved views use versioned storage without imposing toolbar UI: +Named saved views use versioned storage. Applications can keep their own UI, +or opt into the built-in table-options controls: ```tsx setSavedViews(views), }} + toolbarDataOperations={{ + columnChooser: true, + resetLayout: true, + savedViews: true, + }} />; const saved = apiRef.current?.createSavedView("My view"); @@ -519,6 +525,11 @@ apiRef.current?.applySavedView(saved?.id ?? ""); apiRef.current?.resetState({ clearPersistence: true }); ``` +The enhanced column chooser is searchable and includes bulk show/hide, +keyboard-accessible move-earlier/move-later actions, and pin controls when +`enableColumnPinning` is enabled. Active search and column filters are also +shown as removable chips. + ### Column filters Declare toolbar filters on column meta: diff --git a/docs/API.md b/docs/API.md index 9788cce..7535108 100644 --- a/docs/API.md +++ b/docs/API.md @@ -885,9 +885,9 @@ selection, and expansion are intentionally transient unless included in `savedViews` supports `version`, `slices`, `storage`, `serialize`, `deserialize`, `migrate`, and `onError` equivalents. `onChange(views, operation)` receives `"create"`, `"rename"`, `"delete"`, or `"clear"`; -`onApply(view)` runs after the selected snapshot is restored. No saved-view UI -is imposed, so host projects can present these commands in their own toolbar, -menu, or command palette. +`onApply(view)` runs after the selected snapshot is restored. Host projects can +present these commands themselves, or opt into the compact built-in controls +with `toolbarDataOperations={{ savedViews: true }}`. ### Export, density, labels, and summary props @@ -897,6 +897,7 @@ menu, or command palette. | `density` | `"compact" \| "comfortable" \| "spacious"` | internal state | Controlled row density. | | `onDensityChange` | `(density: DataTableDensity) => void` | `undefined` | Density change callback. | | `enableDensityToggle` | `boolean` | `false` | Adds density controls to the table options menu. | +| `toolbarDataOperations` | `boolean \| DataTableToolbarDataOperations` | `false` | Opts into enhanced table-options controls. `true` enables searchable column management, reset layout, and saved-view UI; choose individual `columnChooser`, `resetLayout`, or `savedViews` flags to limit it. | | `labels` | `Partial` | English defaults | Overrides built-in UI labels. | | `summaryRows` | `Array>` | `[]` | Renders aggregate/footer rows aligned to visible columns. | | `dir` | `"ltr" \| "rtl"` | `"ltr"` | Direction used for logical pinned column offsets. | @@ -982,6 +983,12 @@ Notes: | --- | --- | --- | --- | | `toolbarVisibility` | `DataTableToolbarVisibility` | all enabled | Selectively hides parts of the toolbar. | +When `toolbarDataOperations.columnChooser` is enabled, the Columns section +adds search, bulk show/hide, accessible move-earlier/move-later controls, and +pin actions (when `enableColumnPinning` is also enabled). Active toolbar and +column filters are shown as removable chips with a count. `resetLayout` uses +the same initial layout as `apiRef.current.resetColumnLayout()`. + ### Drag-and-drop props | Prop | Type | Default | Description | diff --git a/src/core/data-table/create-data-table-toolbar.tsx b/src/core/data-table/create-data-table-toolbar.tsx index 5b2280b..998e096 100644 --- a/src/core/data-table/create-data-table-toolbar.tsx +++ b/src/core/data-table/create-data-table-toolbar.tsx @@ -13,6 +13,7 @@ import type { DataTableColumnVisibilityOption, DataTableDensity, DataTableLabels, + DataTableSavedView, DataTableSelectionAction, DataTableToolbarAction, DataTableToolbarVisibility, @@ -72,6 +73,17 @@ type DataTableToolbarProps = { toolbarVisibility?: DataTableToolbarVisibility; openFileDialog?: () => void; enableGrouping: boolean; + enableToolbarColumnChooser: boolean; + enableToolbarFilterChips: boolean; + enableToolbarResetLayout: boolean; + enableToolbarSavedViews: boolean; + savedViews: Array; + onResetColumnLayout: () => void; + onCreateSavedView: (name: string) => DataTableSavedView | undefined; + onApplySavedView: (id: string) => boolean; + onRenameSavedView: (id: string, name: string) => DataTableSavedView | undefined; + onDeleteSavedView: (id: string) => boolean; + reorderColumn: (sourceColumnId: string, targetColumnId: string) => void; table: TanStackTable; }; @@ -131,11 +143,28 @@ export function createDataTableToolbar(ui: DataTableUiKit) { toolbarVisibility, openFileDialog, enableGrouping, + enableToolbarColumnChooser, + enableToolbarFilterChips, + enableToolbarResetLayout, + enableToolbarSavedViews, + savedViews, + onResetColumnLayout, + onCreateSavedView, + onApplySavedView, + onRenameSavedView, + onDeleteSavedView, + reorderColumn, table, }: DataTableToolbarProps) { const compactSearchInputRef = React.useRef(null); const [isCompactSearchVisible, setIsCompactSearchVisible] = React.useState(false); + const [columnQuery, setColumnQuery] = React.useState(""); + const [newSavedViewName, setNewSavedViewName] = React.useState(""); + const [renamingSavedViewId, setRenamingSavedViewId] = + React.useState(null); + const [renamedSavedViewName, setRenamedSavedViewName] = + React.useState(""); const compactToolbarIconButtonClassName = uiClassNames.toolbarCompactIconButton ?? ""; const primaryActions = toolbarActions.filter( @@ -162,7 +191,23 @@ export function createDataTableToolbar(ui: DataTableUiKit) { Boolean(onShowHiddenRowsChange && hiddenRowsLabel) || enableColumnPinning || enableDensityToggle || - enableGrouping); + enableGrouping || + enableToolbarColumnChooser || + enableToolbarResetLayout || + enableToolbarSavedViews); + const filteredColumnVisibilityOptions = columnVisibilityOptions.filter( + (column) => + column.label.toLocaleLowerCase().includes(columnQuery.toLocaleLowerCase()), + ); + const activeColumnFilters = columnFilters.filter((filter) => + hasColumnFilterValue(filter.value), + ); + const activeFilterCount = activeColumnFilters.length + + (toolbarQueryValue ? 1 : 0); + const orderedDataColumnIds = table + .getAllLeafColumns() + .map((column) => column.id) + .filter((id) => !id.startsWith("__")); const groupableColumns = table .getAllLeafColumns() .filter( @@ -174,6 +219,35 @@ export function createDataTableToolbar(ui: DataTableUiKit) { const column = table.getColumn(id); return column ? [column] : []; }); + const moveColumn = React.useCallback( + (columnId: string, direction: -1 | 1) => { + const order = table + .getAllLeafColumns() + .map((column) => column.id) + .filter((id) => !id.startsWith("__")); + const index = order.indexOf(columnId); + const targetIndex = index + direction; + if (index < 0 || targetIndex < 0 || targetIndex >= order.length) { + return; + } + reorderColumn(columnId, order[targetIndex]!); + }, + [reorderColumn, table], + ); + const setAllColumnsVisible = React.useCallback( + (visible: boolean) => { + table.setColumnVisibility((current) => { + const next = { ...current }; + for (const column of table.getAllLeafColumns()) { + if (!column.id.startsWith("__") && column.getCanHide()) { + next[column.id] = visible; + } + } + return next; + }); + }, + [table], + ); const hasVisibleViewToggle = showViewToggle && enableViewToggle && Boolean(onViewModeChange); const hasVisibleTrailingActions = @@ -457,7 +531,115 @@ export function createDataTableToolbar(ui: DataTableUiKit) { ) : null} - {columnVisibilityOptions.some((column) => column.canHide) ? ( + {enableToolbarColumnChooser ? ( + <> + + {labels.columns} +
    + + ) => { + setColumnQuery(event.target.value); + }} + placeholder={labels.searchColumns} + aria-label={labels.searchColumns} + /> + + +
    + + { + event.preventDefault(); + setAllColumnsVisible(true); + }} + > + {labels.showAllColumns} + + { + event.preventDefault(); + setAllColumnsVisible(false); + }} + > + {labels.hideAllColumns} + + {filteredColumnVisibilityOptions.map((column) => { + const orderIndex = orderedDataColumnIds.indexOf(column.id); + return ( + + { + onColumnVisibilityChange?.( + column.id, + checked === true, + ); + }} + > + {column.label} + + { + event.preventDefault(); + moveColumn(column.id, -1); + }} + > + {labels.moveColumnEarlier(column.label)} + + { + event.preventDefault(); + moveColumn(column.id, 1); + }} + > + {labels.moveColumnLater(column.label)} + + {enableColumnPinning ? ( + <> + { + event.preventDefault(); + onColumnPinningChange(column.id, "left"); + }} + > + {labels.pinLeft}: {column.label} + + { + event.preventDefault(); + onColumnPinningChange(column.id, "right"); + }} + > + {labels.pinRight}: {column.label} + + { + event.preventDefault(); + onColumnPinningChange(column.id, false); + }} + > + {labels.unpin}: {column.label} + + + ) : null} + + ); + })} + + + ) : columnVisibilityOptions.some((column) => column.canHide) ? ( <> {labels.columns} @@ -483,7 +665,7 @@ export function createDataTableToolbar(ui: DataTableUiKit) { ) : null} - {enableColumnPinning ? ( + {enableColumnPinning && !enableToolbarColumnChooser ? ( <> @@ -538,6 +720,116 @@ export function createDataTableToolbar(ui: DataTableUiKit) { ) : null} + {enableToolbarResetLayout ? ( + <> + + { + event.preventDefault(); + onResetColumnLayout(); + }} + > + {labels.resetColumnLayout} + + + ) : null} + {enableToolbarSavedViews ? ( + <> + + {labels.savedViews} +
    + + ) => { + setNewSavedViewName(event.target.value); + }} + placeholder={labels.savedViewName} + aria-label={labels.savedViewName} + /> + +
    + { + event.preventDefault(); + if (onCreateSavedView(newSavedViewName.trim())) { + setNewSavedViewName(""); + } + }} + > + {labels.createSavedView} + + + {savedViews.map((view) => + renamingSavedViewId === view.id ? ( +
    + + ) => { + setRenamedSavedViewName(event.target.value); + }} + aria-label={labels.savedViewName} + /> + + { + event.preventDefault(); + if ( + renamedSavedViewName.trim() && + onRenameSavedView( + view.id, + renamedSavedViewName.trim(), + ) + ) { + setRenamingSavedViewId(null); + } + }} + > + {labels.saveSavedView} + +
    + ) : ( + + { + event.preventDefault(); + onApplySavedView(view.id); + }} + > + {view.name} + + { + event.preventDefault(); + setRenamingSavedViewId(view.id); + setRenamedSavedViewName(view.name); + }} + > + {labels.renameSavedView(view.name)} + + { + event.preventDefault(); + onDeleteSavedView(view.id); + }} + > + {labels.deleteSavedView(view.name)} + + + ), + )} +
    + + ) : null} {enableGrouping && groupableColumns.length ? ( <> @@ -748,6 +1040,53 @@ export function createDataTableToolbar(ui: DataTableUiKit) { ) : null} + {enableToolbarFilterChips && activeFilterCount ? ( +
    + + {labels.filters} ({activeFilterCount}) + + {toolbarQueryValue ? ( + + ) : null} + {activeColumnFilters.map((filter) => ( + + ))} + +
    + ) : null} + {enableGrouping && groupedColumns.length ? (
    (null); const tableRef = React.useRef | null>(null); const lastSelectedRowIdRef = React.useRef(null); + const [toolbarSavedViewsVersion, setToolbarSavedViewsVersion] = + React.useState(0); const generatedTitleId = React.useId(); const generatedDescriptionId = React.useId(); useDataTablePerformanceDiagnostics({ columns, data, getRowId }); @@ -236,6 +239,12 @@ export function createDataTableWithPanels( () => resolveDataTableLabels(labels), [labels], ); + const toolbarOperations = + toolbarDataOperations === true + ? { columnChooser: true, savedViews: true, resetLayout: true } + : toolbarDataOperations === false + ? {} + : (toolbarDataOperations ?? {}); const resolvedToolbarQueryValue = toolbarQueryValue ?? unifiedState?.globalFilter; const resolvedSorting = sorting ?? unifiedState?.sorting; @@ -1078,6 +1087,40 @@ export function createDataTableWithPanels( () => clearDataTableSavedViews(savedViews), [savedViews], ); + const toolbarSavedViews = React.useMemo(() => { + void toolbarSavedViewsVersion; + return readDataTableSavedViews(savedViews); + }, [savedViews, toolbarSavedViewsVersion]); + const handleToolbarCreateSavedView = React.useCallback( + (name: string) => { + const view = createSavedView(name); + if (view) { + setToolbarSavedViewsVersion((current) => current + 1); + } + return view; + }, + [createSavedView], + ); + const handleToolbarRenameSavedView = React.useCallback( + (id: string, name: string) => { + const view = renameSavedView(id, name); + if (view) { + setToolbarSavedViewsVersion((current) => current + 1); + } + return view; + }, + [renameSavedView], + ); + const handleToolbarDeleteSavedView = React.useCallback( + (id: string) => { + const deleted = deleteSavedView(id); + if (deleted) { + setToolbarSavedViewsVersion((current) => current + 1); + } + return deleted; + }, + [deleteSavedView], + ); const exportCsvFromApi = React.useCallback< DataTableApi["exportCsv"] >( @@ -1320,6 +1363,12 @@ export function createDataTableWithPanels( effectiveToolbarActions={guardedToolbarActions} enableColumnPinning={enableColumnPinning} enableGrouping={enableGrouping} + enableToolbarColumnChooser={toolbarOperations.columnChooser === true} + enableToolbarFilterChips={Boolean(toolbarDataOperations)} + enableToolbarResetLayout={toolbarOperations.resetLayout === true} + enableToolbarSavedViews={ + toolbarOperations.savedViews === true && Boolean(savedViews) + } enableDensityToggle={enableDensityToggle} enableViewToggle={enableViewToggle && Boolean(cardRenderer)} hiddenRowsLabel={hiddenRows?.label} @@ -1330,11 +1379,18 @@ export function createDataTableWithPanels( onDensityChange={handleDensityChange} onShowHiddenRowsChange={handleShowHiddenRowsChange} onToolbarQueryValueChange={setLocalSearchValue} + reorderColumn={reorderColumn} + onResetColumnLayout={resetColumnLayout} + onCreateSavedView={handleToolbarCreateSavedView} + onApplySavedView={applySavedView} + onRenameSavedView={handleToolbarRenameSavedView} + onDeleteSavedView={handleToolbarDeleteSavedView} onViewModeChange={handleViewModeChange} openFileDialog={fileUpload ? openFileDialog : undefined} selectedRowIds={selectedRowIds} selectedRows={selectedRows} selectionActions={guardedSelectionActions} + savedViews={toolbarSavedViews} showHiddenRows={currentShowHiddenRows} table={table} title={title} diff --git a/src/core/data-table/data-table-labels.ts b/src/core/data-table/data-table-labels.ts index 95d6637..eac8f72 100644 --- a/src/core/data-table/data-table-labels.ts +++ b/src/core/data-table/data-table-labels.ts @@ -68,6 +68,19 @@ export const DATA_TABLE_DEFAULT_LABELS: ResolvedDataTableLabels = { moveGroupingEarlier: (columnLabel) => `Move ${columnLabel} grouping earlier`, moveGroupingLater: (columnLabel) => `Move ${columnLabel} grouping later`, facetSearch: (columnLabel) => `Search ${columnLabel} options`, + searchColumns: "Search columns", + showAllColumns: "Show all columns", + hideAllColumns: "Hide all columns", + moveColumnEarlier: (columnLabel) => `Move ${columnLabel} earlier`, + moveColumnLater: (columnLabel) => `Move ${columnLabel} later`, + resetColumnLayout: "Reset column layout", + savedViews: "Saved views", + createSavedView: "Create saved view", + savedViewName: "View name", + applySavedView: (name) => `Apply saved view ${name}`, + renameSavedView: (name) => `Rename saved view ${name}`, + deleteSavedView: (name) => `Delete saved view ${name}`, + saveSavedView: "Save view", }; export function resolveDataTableLabels( diff --git a/src/core/data-table/data-table-toolbar-operations.test.tsx b/src/core/data-table/data-table-toolbar-operations.test.tsx new file mode 100644 index 0000000..05d024d --- /dev/null +++ b/src/core/data-table/data-table-toolbar-operations.test.tsx @@ -0,0 +1,111 @@ +import * as React from "react"; +import { fireEvent, render, screen } from "@testing-library/react"; +import { describe, expect, it, vi } from "vitest"; +import { DataTable } from "../../index"; +import type { DataTableColumnDef } from "../types"; + +type RowData = { id: string; name: string; role: string }; + +const columns: Array> = [ + { accessorKey: "name", header: "Name" }, + { accessorKey: "role", header: "Role" }, +]; + +const rows: Array = [ + { id: "1", name: "Ada", role: "Admin" }, + { id: "2", name: "Grace", role: "Editor" }, +]; + +function openTableOptions() { + fireEvent.pointerDown(screen.getByRole("button", { name: "Show table options" })); +} + +describe("DataTable toolbar data operations", () => { + it("renders the enhanced searchable column chooser and layout controls only when opted in", () => { + const onColumnOrderChange = vi.fn(); + render( + row.id} + enableColumnPinning + onColumnOrderChange={onColumnOrderChange} + toolbarDataOperations={{ columnChooser: true, resetLayout: true }} + />, + ); + + openTableOptions(); + expect(screen.getByLabelText("Search columns")).toBeTruthy(); + expect(screen.getByText("Show all columns")).toBeTruthy(); + expect(screen.getByText("Hide all columns")).toBeTruthy(); + expect(screen.getByText("Reset column layout")).toBeTruthy(); + + fireEvent.change(screen.getByLabelText("Search columns"), { + target: { value: "Role" }, + }); + expect(screen.getByRole("menuitem", { name: "Move Role earlier" })).toBeTruthy(); + expect(screen.queryByRole("menuitem", { name: "Move Name earlier" })).toBeNull(); + fireEvent.click(screen.getByRole("menuitem", { name: "Move Role earlier" })); + expect(onColumnOrderChange).toHaveBeenCalledWith(["role", "name"]); + }); + + it("creates, applies, renames, and deletes saved views from the opted-in menu", () => { + const values = new Map(); + const storage = { + getItem: (key: string) => values.get(key) ?? null, + setItem: (key: string, value: string) => values.set(key, value), + removeItem: (key: string) => values.delete(key), + }; + const onApply = vi.fn(); + render( + row.id} + savedViews={{ key: "toolbar-views", storage, onApply }} + toolbarDataOperations={{ savedViews: true }} + />, + ); + + openTableOptions(); + fireEvent.change(screen.getByLabelText("View name"), { + target: { value: "Operations" }, + }); + fireEvent.click(screen.getByRole("menuitem", { name: "Create saved view" })); + expect(screen.getByRole("menuitem", { name: "Operations" })).toBeTruthy(); + + fireEvent.click(screen.getByRole("menuitem", { name: "Operations" })); + expect(onApply).toHaveBeenCalled(); + fireEvent.click(screen.getByRole("menuitem", { name: "Rename saved view Operations" })); + const inputs = screen.getAllByLabelText("View name"); + fireEvent.change(inputs.at(-1)!, { target: { value: "Ops" } }); + fireEvent.click(screen.getByRole("menuitem", { name: "Save view" })); + expect(screen.getByRole("menuitem", { name: "Delete saved view Ops" })).toBeTruthy(); + fireEvent.click(screen.getByRole("menuitem", { name: "Delete saved view Ops" })); + expect(screen.queryByRole("menuitem", { name: "Ops" })).toBeNull(); + }); + + it("shows removable active filter chips only with toolbar operations enabled", () => { + const onColumnFiltersChange = vi.fn(); + render( + row.id} + columnFilters={[{ id: "role", value: "Admin" }]} + onColumnFiltersChange={onColumnFiltersChange} + toolbarDataOperations + />, + ); + + expect(screen.getByLabelText("Filters: 1")).toBeTruthy(); + fireEvent.click(screen.getByLabelText("Clear filters: Role")); + expect(onColumnFiltersChange).toHaveBeenCalledWith([]); + }); +}); diff --git a/src/core/data-table/data-table-toolbar-section.tsx b/src/core/data-table/data-table-toolbar-section.tsx index 6f12fd7..e4de588 100644 --- a/src/core/data-table/data-table-toolbar-section.tsx +++ b/src/core/data-table/data-table-toolbar-section.tsx @@ -1,6 +1,10 @@ import * as React from "react"; import type { Table as TanStackTable } from "@tanstack/react-table"; -import type { DataTableLabels, DataTableProps } from "../types"; +import type { + DataTableLabels, + DataTableProps, + DataTableSavedView, +} from "../types"; type DataTableToolbarSectionProps = { allRows: Array; @@ -14,6 +18,10 @@ type DataTableToolbarSectionProps = { effectiveToolbarActions: Array; enableColumnPinning: boolean; enableGrouping: boolean; + enableToolbarColumnChooser: boolean; + enableToolbarFilterChips: boolean; + enableToolbarResetLayout: boolean; + enableToolbarSavedViews: boolean; enableDensityToggle: boolean; enableViewToggle: boolean; hiddenRowsLabel: string | undefined; @@ -24,11 +32,18 @@ type DataTableToolbarSectionProps = { onDensityChange: (density: "compact" | "comfortable" | "spacious") => void; onShowHiddenRowsChange: (showHiddenRows: boolean) => void; onToolbarQueryValueChange: (value: string) => void; + reorderColumn: (sourceColumnId: string, targetColumnId: string) => void; + onResetColumnLayout: () => void; + onCreateSavedView: (name: string) => DataTableSavedView | undefined; + onApplySavedView: (id: string) => boolean; + onRenameSavedView: (id: string, name: string) => DataTableSavedView | undefined; + onDeleteSavedView: (id: string) => boolean; onViewModeChange: (viewMode: "table" | "card") => void; openFileDialog: (() => void) | undefined; selectedRowIds: Array; selectedRows: Array; selectionActions: DataTableProps["selectionActions"]; + savedViews: Array; showHiddenRows: boolean; table: TanStackTable; title: string | undefined; @@ -52,6 +67,10 @@ export function DataTableToolbarSection({ effectiveToolbarActions, enableColumnPinning, enableGrouping, + enableToolbarColumnChooser, + enableToolbarFilterChips, + enableToolbarResetLayout, + enableToolbarSavedViews, enableDensityToggle, enableViewToggle, hiddenRowsLabel, @@ -62,11 +81,18 @@ export function DataTableToolbarSection({ onDensityChange, onShowHiddenRowsChange, onToolbarQueryValueChange, + reorderColumn, + onResetColumnLayout, + onCreateSavedView, + onApplySavedView, + onRenameSavedView, + onDeleteSavedView, onViewModeChange, openFileDialog, selectedRowIds, selectedRows, selectionActions, + savedViews, showHiddenRows, table, title, @@ -87,6 +113,7 @@ export function DataTableToolbarSection({ toolbarQueryValue={toolbarQueryValue} toolbarQueryPlaceholder={toolbarQueryPlaceholder} onToolbarQueryValueChange={onToolbarQueryValueChange} + reorderColumn={reorderColumn} customToolbar={customToolbar} compactToolbar={compactToolbar} viewMode={viewMode} @@ -106,16 +133,26 @@ export function DataTableToolbarSection({ }} enableColumnPinning={enableColumnPinning} enableGrouping={enableGrouping} + enableToolbarColumnChooser={enableToolbarColumnChooser} + enableToolbarFilterChips={enableToolbarFilterChips} + enableToolbarResetLayout={enableToolbarResetLayout} + enableToolbarSavedViews={enableToolbarSavedViews} onColumnPinningChange={onColumnPinningChange} columnFilters={columnFilters} onColumnFilterChange={onColumnFilterChange} onClearColumnFilters={onClearColumnFilters} + onResetColumnLayout={onResetColumnLayout} + onCreateSavedView={onCreateSavedView} + onApplySavedView={onApplySavedView} + onRenameSavedView={onRenameSavedView} + onDeleteSavedView={onDeleteSavedView} density={density} onDensityChange={onDensityChange} enableDensityToggle={enableDensityToggle} labels={labels} toolbarVisibility={toolbarVisibility} openFileDialog={openFileDialog} + savedViews={savedViews} table={table} />
    diff --git a/src/core/types.ts b/src/core/types.ts index 9b81ead..e967ce0 100644 --- a/src/core/types.ts +++ b/src/core/types.ts @@ -319,6 +319,16 @@ export type DataTableToolbarVisibility = { customToolbar?: boolean; }; +/** Optional toolbar controls for working with the current table layout and views. */ +export type DataTableToolbarDataOperations = { + /** Search, bulk show/hide, pin, and keyboard-accessible column move controls. */ + columnChooser?: boolean; + /** Create, apply, rename, and delete saved views when `savedViews` is configured. */ + savedViews?: boolean; + /** Adds a reset-layout action using the table's initial layout. */ + resetLayout?: boolean; +}; + export type DataTableCardRendererProps = { row: TData; rowId: string; @@ -681,6 +691,19 @@ export type DataTableLabels = { moveGroupingEarlier?: (columnLabel: string) => string; moveGroupingLater?: (columnLabel: string) => string; facetSearch?: (columnLabel: string) => string; + searchColumns?: string; + showAllColumns?: string; + hideAllColumns?: string; + moveColumnEarlier?: (columnLabel: string) => string; + moveColumnLater?: (columnLabel: string) => string; + resetColumnLayout?: string; + savedViews?: string; + createSavedView?: string; + savedViewName?: string; + applySavedView?: (name: string) => string; + renameSavedView?: (name: string) => string; + deleteSavedView?: (name: string) => string; + saveSavedView?: string; }; export type DataTableSummaryRow = { @@ -840,6 +863,8 @@ export type DataTableProps = { dir?: "ltr" | "rtl"; flexGrow?: boolean; toolbarVisibility?: DataTableToolbarVisibility; + /** Opts into enhanced layout and saved-view toolbar controls. */ + toolbarDataOperations?: boolean | DataTableToolbarDataOperations; className?: string; tableClassName?: string; tableContainerClassName?: string; From f937ae556828a14267e91acbce757f4fe83114b7 Mon Sep 17 00:00:00 2001 From: Toby Martin Date: Sun, 9 Aug 2026 02:27:47 +0000 Subject: [PATCH 21/31] fix: harden grid range clipboard selection --- src/core/data-table/create-data-table.tsx | 11 ++- src/core/data-table/data-table-body-row.tsx | 10 ++- .../data-table-grid-accessibility.test.tsx | 88 +++++++++++++++++++ .../data-table/data-table-table-panel.tsx | 9 +- src/core/data-table/data-table-utils.ts | 23 +++-- 5 files changed, 126 insertions(+), 15 deletions(-) diff --git a/src/core/data-table/create-data-table.tsx b/src/core/data-table/create-data-table.tsx index e42554b..b5e1ff8 100644 --- a/src/core/data-table/create-data-table.tsx +++ b/src/core/data-table/create-data-table.tsx @@ -1112,9 +1112,14 @@ export function createDataTableWithPanels( copyDataTableToClipboard({ clipboard: options ?? - (currentCellSelection - ? { ...(clipboard?.copy === true ? {} : clipboard?.copy), scope: "cellSelection" } - : clipboard?.copy ?? true), + (clipboard?.copy === false + ? false + : currentCellSelection + ? { + ...(clipboard?.copy === true ? {} : clipboard?.copy), + scope: "cellSelection", + } + : clipboard?.copy ?? true), cellSelection: currentCellSelection, table, }), diff --git a/src/core/data-table/data-table-body-row.tsx b/src/core/data-table/data-table-body-row.tsx index 48e2a06..d7d9a59 100644 --- a/src/core/data-table/data-table-body-row.tsx +++ b/src/core/data-table/data-table-body-row.tsx @@ -312,7 +312,10 @@ function DataTableBodyRowInner({ : undefined } onPointerDown={ - gridMode && cellSelectionEnabled + gridMode && + cellSelectionEnabled && + !layout?.isUtilityColumn && + !isSpacerColumn ? (event: React.PointerEvent) => { if (isDataTableInteractiveTarget(event.target, event.currentTarget)) return; event.currentTarget.focus(); @@ -321,7 +324,10 @@ function DataTableBodyRowInner({ : undefined } onPointerEnter={ - gridMode && cellSelectionEnabled + gridMode && + cellSelectionEnabled && + !layout?.isUtilityColumn && + !isSpacerColumn ? (event: React.PointerEvent) => { if (isDataTableInteractiveTarget(event.target, event.currentTarget)) return; onGridCellPointerEnter(event, gridRowIndex, columnIndex); diff --git a/src/core/data-table/data-table-grid-accessibility.test.tsx b/src/core/data-table/data-table-grid-accessibility.test.tsx index bd5372b..433535a 100644 --- a/src/core/data-table/data-table-grid-accessibility.test.tsx +++ b/src/core/data-table/data-table-grid-accessibility.test.tsx @@ -216,4 +216,92 @@ describe("interactive grid accessibility", () => { expect(undo).toHaveBeenCalledWith(expect.objectContaining({ cellSelection: selection })); expect(redo).toHaveBeenCalledWith(expect.objectContaining({ cellSelection: selection })); }); + + it("keeps imperative copy disabled when clipboard.copy is false", async () => { + const apiRef = React.createRef>(); + render( + row.id} + interactiveGrid + cellSelection={{ + anchor: { rowId: "ada", columnId: "name" }, + focus: { rowId: "ada", columnId: "name" }, + }} + clipboard={{ copy: false }} + />, + ); + await expect(apiRef.current?.copyToClipboard()).resolves.toBeUndefined(); + }); + + it("copies an expanded tree range in displayed parent-to-child order", async () => { + type TreePerson = Person & { children?: Array }; + const treeColumns: Array> = [ + { accessorKey: "name", header: "Name" }, + ]; + const treeData: Array = [ + { + id: "parent", + name: "Parent", + age: 1, + children: [{ id: "child", name: "Child", age: 2 }], + }, + ]; + const apiRef = React.createRef>(); + const onCopy = vi.fn(); + render( + row.id} + getSubRows={(row) => row.children} + initialState={{ expanded: { parent: true } }} + interactiveGrid + cellSelection={{ + anchor: { rowId: "parent", columnId: "name" }, + focus: { rowId: "child", columnId: "name" }, + }} + />, + ); + await apiRef.current?.copyToClipboard({ scope: "cellSelection", onCopy }); + const copyContext = onCopy.mock.calls[0]?.[0] as { text: string }; + expect(copyContext.text).toBe("Parent\nChild"); + }); + + it("ignores utility-cell pointers and filters utility bounds from range copy", async () => { + const onCellSelectionChange = vi.fn(); + const onCopy = vi.fn(); + const apiRef = React.createRef>(); + render( + row.id} + interactiveGrid + enableCellSelection + enableRowSelection + onCellSelectionChange={onCellSelectionChange} + />, + ); + const cells = screen.getAllByRole("gridcell"); + fireEvent.pointerDown(cells[0], { button: 0 }); + expect(onCellSelectionChange).not.toHaveBeenCalled(); + apiRef.current?.setCellSelection({ + anchor: { rowId: "ada", columnId: "__select__" }, + focus: { rowId: "ada", columnId: "name" }, + }); + await waitFor(() => + expect(apiRef.current?.getCellSelection()).toEqual({ + anchor: { rowId: "ada", columnId: "__select__" }, + focus: { rowId: "ada", columnId: "name" }, + }), + ); + await apiRef.current?.copyToClipboard({ scope: "cellSelection", onCopy }); + const copyContext = onCopy.mock.calls[0]?.[0] as { text: string }; + expect(copyContext.text).toBe("Ada"); + }); }); diff --git a/src/core/data-table/data-table-table-panel.tsx b/src/core/data-table/data-table-table-panel.tsx index 149b8ab..d228bb6 100644 --- a/src/core/data-table/data-table-table-panel.tsx +++ b/src/core/data-table/data-table-table-panel.tsx @@ -21,7 +21,7 @@ import { } from "./data-table-body-row"; import { DataTableHeaderCell } from "./data-table-header-cell"; import type { DataTableColumnLayout } from "./use-column-layout"; -import { isDataTableLoadingRow } from "./data-table-utils"; +import { isDataTableLoadingRow, isUtilityColumnId } from "./data-table-utils"; import type { DataTableLabels } from "../types"; export type DataTableTablePanelProps = { @@ -202,7 +202,12 @@ export function DataTableTablePanel({ (rowIndex: number, columnIndex: number) => { const row = gridRows[rowIndex]; const column = visibleLeafColumns[columnIndex]; - return row && column ? { rowId: row.id, columnId: column.id } : undefined; + return row && + column && + !isUtilityColumnId(column.id) && + column.id !== "__spacer__" + ? { rowId: row.id, columnId: column.id } + : undefined; }, [gridRows, visibleLeafColumns], ); diff --git a/src/core/data-table/data-table-utils.ts b/src/core/data-table/data-table-utils.ts index e187adf..914d018 100644 --- a/src/core/data-table/data-table-utils.ts +++ b/src/core/data-table/data-table-utils.ts @@ -507,8 +507,8 @@ export async function copyDataTableToClipboard({ const requestedColumnIds = options.columns ? new Set(options.columns) : undefined; - const visibleColumns = table - .getVisibleLeafColumns() + const allVisibleColumns = table.getVisibleLeafColumns(); + const visibleColumns = allVisibleColumns .filter( (column) => !isUtilityColumnId(column.id) && @@ -517,7 +517,7 @@ export async function copyDataTableToClipboard({ ); const selectedRange = scope === "cellSelection" - ? getDataTableCellSelectionRange(table, visibleColumns, cellSelection) + ? getDataTableCellSelectionRange(table, allVisibleColumns, cellSelection) : undefined; const columns = selectedRange?.columns ?? visibleColumns; const rows = @@ -589,7 +589,9 @@ function getDataTableCellSelectionRange( selection: DataTableCellSelection | null | undefined, ) { if (!selection) return undefined; - const rows = table.getRowModel().rows; + // flatRows preserves expanded tree/group display order, whereas `rows` only + // contains top-level entries and would omit selected descendants. + const rows = table.getRowModel().flatRows; const anchorRow = rows.findIndex((row) => row.id === selection.anchor.rowId); const focusRow = rows.findIndex((row) => row.id === selection.focus.rowId); const anchorColumn = columns.findIndex( @@ -603,10 +605,15 @@ function getDataTableCellSelectionRange( } return { rows: rows.slice(Math.min(anchorRow, focusRow), Math.max(anchorRow, focusRow) + 1), - columns: columns.slice( - Math.min(anchorColumn, focusColumn), - Math.max(anchorColumn, focusColumn) + 1, - ), + columns: columns + .slice( + Math.min(anchorColumn, focusColumn), + Math.max(anchorColumn, focusColumn) + 1, + ) + .filter( + (column) => + !isUtilityColumnId(column.id) && column.id !== "__spacer__", + ), }; } From 57f39c2b78bc9ba4f3c8fab29664d8111055ed65 Mon Sep 17 00:00:00 2001 From: Toby Martin Date: Sun, 9 Aug 2026 02:28:11 +0000 Subject: [PATCH 22/31] feat: add adaptive table layout controls --- demo/src/DemoApp.tsx | 2 + docs/API.md | 10 ++ src/core/data-table/create-data-table.tsx | 169 ++++++++++++++---- .../data-table/data-table-base-card-panel.tsx | 4 +- .../data-table/data-table-card-panel-types.ts | 1 + src/core/data-table/data-table-labels.ts | 6 + .../data-table/data-table-state-api.test.tsx | 140 +++++++++++++++ .../data-table/data-table-state-overlay.tsx | 64 +++++++ .../data-table/data-table-table-panel.tsx | 5 +- .../data-table-virtual-card-panel.tsx | 4 +- .../use-data-table-auto-page-size.ts | 113 ++++++++++++ src/core/types.ts | 41 ++++- 12 files changed, 525 insertions(+), 34 deletions(-) create mode 100644 src/core/data-table/data-table-state-overlay.tsx create mode 100644 src/core/data-table/use-data-table-auto-page-size.ts diff --git a/demo/src/DemoApp.tsx b/demo/src/DemoApp.tsx index b954dd8..c16b1fa 100644 --- a/demo/src/DemoApp.tsx +++ b/demo/src/DemoApp.tsx @@ -404,6 +404,8 @@ export function DemoApp() { onRowSelectionChange={setRowSelection} enableRowSelection interactiveGrid + enablePrint + enableFullscreen toolbarActions={[ { key: "refresh", diff --git a/docs/API.md b/docs/API.md index 9788cce..a55f125 100644 --- a/docs/API.md +++ b/docs/API.md @@ -661,11 +661,18 @@ from an interactive descendant to its grid cell. | `hasNextPage` | `boolean` | `false` | Enables the next-page control when manual pagination has no known `totalRowCount` or `pageCount`. | | `pageIndex` | `number` | internal state | Controlled zero-based page index. | | `pageSize` | `number` | internal state | Controlled page size. | +| `autoPageSize` | `boolean \| DataTableAutoPageSizeConfig` | `false` | Opt-in viewport-driven page size. It measures the scroll viewport/row height and resets to page 1 before reporting a size change. | | `onPageIndexChange` | `(pageIndex: number) => void` | `undefined` | Page-change callback. | | `onPageSizeChange` | `(pageSize: number) => void` | `undefined` | Page-size callback. | | `pageCount` | `number` | derived for client data | Known total page count in manual mode. Omit with `totalRowCount` to use unknown-total pagination. | | `manualPagination` | `boolean` | `false` | Disables client-side pagination row model. | +`autoPageSize` is disabled by default and is safe with controlled pagination: +when a measurement changes the size it calls `onPageIndexChange(0)` first (if +needed), then `onPageSizeChange(nextSize)`. The parent remains responsible for +feeding controlled values back. It uses `ResizeObserver` only after mount and +falls back to a one-time estimate when the observer is unavailable. + ### Selection props | Prop | Type | Default | Description | @@ -741,6 +748,9 @@ discarded. | Prop | Type | Default | Description | | --- | --- | --- | --- | | `emptyState` | `React.ReactNode \| ((context: DataTableEmptyStateContext) => React.ReactNode)` | built-in empty state | Custom empty state for both table and card modes. | +| `stateOverlay` | `DataTableStateOverlay` | `undefined` | Explicit empty/error/retry contract. `empty` supersedes `emptyState`; `error` overlays the current table/card, and `onRetry` is routed through `onActionError`. | +| `enablePrint` | `boolean` | `false` | Adds a trailing toolbar control for `apiRef.current.print()`. | +| `enableFullscreen` | `boolean` | `false` | Adds a trailing toolbar control for `apiRef.current.toggleFullscreen()`. | | `isLoading` | `boolean` | `false` | Renders initial skeleton rows or cards when `data` is empty and loading. | | `loadingRowCount` | `number` | `min(5, pageSize)` | Number of synthetic skeleton rows or cards to render for initial loading. | | `getRowLoadingState` | `(row: TData, index: number) => boolean \| DataTableRowLoadingState` | `undefined` | Per-row loading and skeleton override hook for real rows that already exist. | diff --git a/src/core/data-table/create-data-table.tsx b/src/core/data-table/create-data-table.tsx index 00ebcf5..84d1c3e 100644 --- a/src/core/data-table/create-data-table.tsx +++ b/src/core/data-table/create-data-table.tsx @@ -47,7 +47,9 @@ import { clearDataTableColumnPrefs } from "./use-data-table-column-prefs"; import { useDataTableToolbarFeatures } from "./use-data-table-toolbar-features"; import { useColumnLayout } from "./use-column-layout"; import { useRowEditing } from "./use-row-editing"; +import { useDataTableAutoPageSize } from "./use-data-table-auto-page-size"; import { useDataTablePerformanceDiagnostics } from "./use-data-table-performance-diagnostics"; +import { createDataTableStateOverlay } from "./data-table-state-overlay"; type CreateDataTableOptions = { CardPanel?: typeof DefaultDataTableCardPanel; @@ -92,6 +94,7 @@ export function createDataTableWithPanels( const { DataTableFooter } = createDataTablePagination(ui); const DataTableToolbar = createDataTableToolbar(ui); const DataTableCardView = createDataTableCardView(ui, DataTableRowActions); + const DataTableStateOverlay = createDataTableStateOverlay(ui); const defaultColumn = { minSize: 80, size: 180, @@ -131,6 +134,7 @@ export function createDataTableWithPanels( aggregationFns, pageIndex, pageSize, + autoPageSize = false, onPageIndexChange, onPageSizeChange, pageCount, @@ -187,7 +191,10 @@ export function createDataTableWithPanels( viewMode, onViewModeChange, enableViewToggle = false, + enablePrint = false, + enableFullscreen = false, emptyState, + stateOverlay, isLoading = false, loadingRowCount, getRowLoadingState, @@ -593,6 +600,69 @@ export function createDataTableWithPanels( ); const { viewportElement: tableScrollElement, viewportHeight } = useDataTableScrollViewport(tableScrollContainerRef, currentViewMode); + const autoPageSizeConfig = + typeof autoPageSize === "object" ? autoPageSize : undefined; + const handleAutoPageSizeChange = React.useCallback( + (nextPageSize: number) => { + if (nextPageSize === currentPagination.pageSize) { + return; + } + if (currentPagination.pageIndex !== 0) { + handlePageIndexPropChange(0); + } + handlePageSizePropChange(nextPageSize); + if (resolvedPageSize === undefined) { + setLocalPagination({ pageIndex: 0, pageSize: nextPageSize }); + } + }, + [ + currentPagination.pageIndex, + currentPagination.pageSize, + handlePageIndexPropChange, + handlePageSizePropChange, + resolvedPageSize, + setLocalPagination, + ], + ); + useDataTableAutoPageSize({ + config: autoPageSizeConfig, + currentPageSize: currentPagination.pageSize, + enabled: autoPageSize === true || autoPageSizeConfig !== undefined, + onPageSizeChange: handleAutoPageSizeChange, + viewportElement: tableScrollElement, + viewportHeight, + }); + const print = React.useCallback(() => { + if (typeof window === "undefined" || typeof window.print !== "function") { + return false; + } + window.print(); + return true; + }, []); + const toggleFullscreen = React.useCallback(async () => { + const element = containerRef.current; + if (!element || typeof document === "undefined") { + return false; + } + if (document.fullscreenElement) { + if (typeof document.exitFullscreen !== "function") return false; + await document.exitFullscreen(); + return true; + } + if (typeof element.requestFullscreen !== "function") return false; + await element.requestFullscreen(); + return true; + }, []); + const [isFullscreen, setIsFullscreen] = React.useState(false); + React.useEffect(() => { + if (!enableFullscreen || typeof document === "undefined") return; + const update = () => { + setIsFullscreen(document.fullscreenElement === containerRef.current); + }; + update(); + document.addEventListener("fullscreenchange", update); + return () => document.removeEventListener("fullscreenchange", update); + }, [enableFullscreen]); const openFileDialog = React.useCallback(() => { if (fileUpload?.disabled) { return; @@ -814,13 +884,38 @@ export function createDataTableWithPanels( const filteredData = table .getFilteredRowModel() .rows.map((row) => row.original); + const configuredEmptyState = stateOverlay?.empty ?? emptyState; const emptyNode = - typeof emptyState === "function" - ? emptyState({ + typeof configuredEmptyState === "function" + ? configuredEmptyState({ rows: filteredData, toolbarQueryValue: localSearchValue, }) - : emptyState; + : configuredEmptyState; + const guardedStateOverlay = React.useMemo( + () => + stateOverlay + ? { + ...stateOverlay, + onRetry: stateOverlay.onRetry + ? () => + runAction( + { source: "retry" }, + stateOverlay.onRetry!, + ) + : undefined, + } + : undefined, + [runAction, stateOverlay], + ); + const stateOverlayNode = guardedStateOverlay ? ( + + ) : undefined; const { columnVisibilityOptions, effectiveToolbarActions, @@ -844,7 +939,33 @@ export function createDataTableWithPanels( }); const guardedToolbarActions = React.useMemo( () => - effectiveToolbarActions.map((action) => ({ + [ + ...effectiveToolbarActions, + ...(enablePrint + ? [ + { + key: "__print__", + label: resolvedLabels.print, + placement: "trailing" as const, + onClick: () => { + print(); + }, + }, + ] + : []), + ...(enableFullscreen + ? [ + { + key: "__fullscreen__", + label: isFullscreen + ? resolvedLabels.exitFullscreen + : resolvedLabels.enterFullscreen, + placement: "trailing" as const, + onClick: () => toggleFullscreen(), + }, + ] + : []), + ].map((action) => ({ ...action, onClick: (context: { rows: Array; @@ -859,7 +980,18 @@ export function createDataTableWithPanels( ); }, })), - [effectiveToolbarActions, runAction], + [ + effectiveToolbarActions, + enableFullscreen, + enablePrint, + isFullscreen, + print, + resolvedLabels.enterFullscreen, + resolvedLabels.exitFullscreen, + resolvedLabels.print, + runAction, + toggleFullscreen, + ], ); const guardedSelectionActions = React.useMemo( () => @@ -1099,31 +1231,6 @@ export function createDataTableWithPanels( }), [clipboard?.copy, table], ); - const print = React.useCallback(() => { - if (typeof window === "undefined" || typeof window.print !== "function") { - return false; - } - window.print(); - return true; - }, []); - const toggleFullscreen = React.useCallback(async () => { - const element = containerRef.current; - if (!element || typeof document === "undefined") { - return false; - } - if (document.fullscreenElement) { - if (typeof document.exitFullscreen !== "function") { - return false; - } - await document.exitFullscreen(); - return true; - } - if (typeof element.requestFullscreen !== "function") { - return false; - } - await element.requestFullscreen(); - return true; - }, []); const pinRow = React.useCallback["pinRow"]>( (rowId, position = "top") => { try { @@ -1365,6 +1472,7 @@ export function createDataTableWithPanels( editableRows={editableRows} editingRowId={editingRowId} emptyNode={emptyNode} + stateOverlayNode={stateOverlayNode} enableRowSelection={enableRowSelection} flexGrow={flexGrow} getRowClassName={getRowClassName} @@ -1405,6 +1513,7 @@ export function createDataTableWithPanels( editingRowId={editingRowId} editingContext={rowEditingContext} emptyNode={emptyNode} + stateOverlayNode={stateOverlayNode} enableColumnReordering={enableColumnReordering} enableColumnResizing={enableColumnResizing} explicitCustomCellColumnIds={explicitCustomCellColumnIds} diff --git a/src/core/data-table/data-table-base-card-panel.tsx b/src/core/data-table/data-table-base-card-panel.tsx index 5e46043..8d4a77e 100644 --- a/src/core/data-table/data-table-base-card-panel.tsx +++ b/src/core/data-table/data-table-base-card-panel.tsx @@ -34,6 +34,7 @@ export function DataTableBaseCardPanel({ setCurrentRowSelection, setEditingRowId, shouldRenderInitialLoading, + stateOverlayNode, tableContainerClassName, uiClassNames, }: DataTableCardPanelProps) { @@ -81,7 +82,7 @@ export function DataTableBaseCardPanel({ ref={cardScrollContainerRef} data-dtp-slot="data-table-card-shell" className={cn( - "box-border border-2 border-transparent transition-colors", + "relative box-border border-2 border-transparent transition-colors", flexGrow ? "flex min-h-0 flex-1 flex-col" : "h-full", dragAndDrop?.isDragging && (uiClassNames.dragActive ?? "rounded-md border-dashed"), @@ -137,6 +138,7 @@ export function DataTableBaseCardPanel({ ) : null} + {stateOverlayNode} ); } diff --git a/src/core/data-table/data-table-card-panel-types.ts b/src/core/data-table/data-table-card-panel-types.ts index cc24b36..401cc1e 100644 --- a/src/core/data-table/data-table-card-panel-types.ts +++ b/src/core/data-table/data-table-card-panel-types.ts @@ -35,6 +35,7 @@ export type DataTableCardPanelProps = { setCurrentDetailExpanded: OnChangeFn; setEditingRowId: React.Dispatch>; shouldRenderInitialLoading: boolean; + stateOverlayNode?: React.ReactNode; tableContainerClassName: string | undefined; uiClassNames: DataTableUiClassNames; virtualization: DataTableProps["virtualization"]; diff --git a/src/core/data-table/data-table-labels.ts b/src/core/data-table/data-table-labels.ts index 95d6637..7a6aeab 100644 --- a/src/core/data-table/data-table-labels.ts +++ b/src/core/data-table/data-table-labels.ts @@ -50,6 +50,12 @@ export const DATA_TABLE_DEFAULT_LABELS: ResolvedDataTableLabels = { expandRowDetails: "Expand row details", collapseRowDetails: "Collapse row details", exportCsv: "Export CSV", + print: "Print table", + enterFullscreen: "Enter fullscreen", + exitFullscreen: "Exit fullscreen", + errorTitle: "Unable to load this table", + errorDescription: "Try again or check your connection.", + retry: "Retry", density: "Density", compactDensity: "Compact", comfortableDensity: "Comfortable", diff --git a/src/core/data-table/data-table-state-api.test.tsx b/src/core/data-table/data-table-state-api.test.tsx index 6c0c380..4906cc6 100644 --- a/src/core/data-table/data-table-state-api.test.tsx +++ b/src/core/data-table/data-table-state-api.test.tsx @@ -24,6 +24,7 @@ import { type DataTablePersistenceStorage, type DataTableState, } from "../../index"; +import { useDataTableAutoPageSize } from "./use-data-table-auto-page-size"; type TestRow = { id: string; @@ -117,6 +118,99 @@ describe("DataTable unified state API", () => { expect(screen.getByText("Grace")).not.toBeNull(); }); + it("derives an opt-in controlled page size from the scroll viewport", () => { + const clientHeight = Object.getOwnPropertyDescriptor( + HTMLElement.prototype, + "clientHeight", + ); + const frame = vi + .spyOn(window, "requestAnimationFrame") + .mockImplementation((callback) => { + callback(0); + return 1; + }); + Object.defineProperty(HTMLElement.prototype, "clientHeight", { + configurable: true, + get: function getClientHeight(this: HTMLElement) { + return this.getAttribute("data-slot") === "scroll-area-viewport" + ? 100 + : 0; + }, + }); + const onPageIndexChange = vi.fn(); + const onPageSizeChange = vi.fn(); + + try { + render( + row.id} + onPageIndexChange={onPageIndexChange} + onPageSizeChange={onPageSizeChange} + pageIndex={1} + pageSize={10} + />, + ); + + expect(onPageIndexChange).toHaveBeenCalledWith(0); + expect(onPageSizeChange).toHaveBeenCalledWith(5); + } finally { + frame.mockRestore(); + if (clientHeight) { + Object.defineProperty(HTMLElement.prototype, "clientHeight", clientHeight); + } else { + delete (HTMLElement.prototype as { clientHeight?: number }).clientHeight; + } + } + }); + + it("does not recursively grow a content-sized auto page", () => { + const onPageSizeChange = vi.fn(); + const frame = vi + .spyOn(window, "requestAnimationFrame") + .mockImplementation((callback) => { + callback(0); + return 1; + }); + + function Harness() { + const [element, setElement] = React.useState(null); + const [pageSize, setPageSize] = React.useState(1); + const [height, setHeight] = React.useState(100); + const setViewport = React.useCallback((node: HTMLDivElement | null) => { + if (!node) return; + Object.defineProperty(node, "clientHeight", { + configurable: true, + get: () => height, + }); + setElement(node); + }, [height]); + useDataTableAutoPageSize({ + config: { estimateRowHeight: 20 }, + currentPageSize: pageSize, + enabled: true, + onPageSizeChange: (nextPageSize) => { + onPageSizeChange(nextPageSize); + setPageSize(nextPageSize); + setHeight(200); + }, + viewportElement: element, + viewportHeight: height, + }); + return
    ; + } + + try { + render(); + expect(onPageSizeChange).toHaveBeenCalledTimes(1); + expect(onPageSizeChange).toHaveBeenCalledWith(5); + } finally { + frame.mockRestore(); + } + }); + it("supports unified controlled state with legacy-prop precedence", () => { const warning = vi.spyOn(console, "warn").mockImplementation(() => {}); const state: Partial = { @@ -406,6 +500,52 @@ describe("DataTable unified state API", () => { expect(requestFullscreen).toHaveBeenCalled(); }); + it("renders opt-in print/fullscreen toolbar controls and an error retry overlay", async () => { + const print = vi.spyOn(window, "print").mockImplementation(() => {}); + const requestFullscreen = vi.fn().mockResolvedValue(undefined); + const retry = vi.fn(); + Object.defineProperty(HTMLElement.prototype, "requestFullscreen", { + configurable: true, + value: requestFullscreen, + }); + + render( + row.id} + enablePrint + enableFullscreen + stateOverlay={{ error: new Error("Offline"), onRetry: retry }} + />, + ); + + fireEvent.click(screen.getByRole("button", { name: "Print table" })); + expect(print).toHaveBeenCalled(); + + fireEvent.click( + screen.getByRole("button", { name: "Enter fullscreen" }), + ); + await waitFor(() => expect(requestFullscreen).toHaveBeenCalled()); + + expect(screen.getByRole("alert")).not.toBeNull(); + fireEvent.click(screen.getByRole("button", { name: "Retry" })); + expect(retry).toHaveBeenCalled(); + }); + + it("does not render an error overlay for a null data-source error", () => { + render( + row.id} + stateOverlay={{ error: null }} + />, + ); + + expect(screen.queryByRole("alert")).toBeNull(); + }); + it("validates edits and rolls back failed optimistic saves", async () => { const saveError = new Error("save failed"); const rollback = vi.fn(); diff --git a/src/core/data-table/data-table-state-overlay.tsx b/src/core/data-table/data-table-state-overlay.tsx new file mode 100644 index 0000000..e04b438 --- /dev/null +++ b/src/core/data-table/data-table-state-overlay.tsx @@ -0,0 +1,64 @@ +import * as React from "react"; +import type { + DataTableLabels, + DataTableStateOverlay, + DataTableStateOverlayContext, +} from "../types"; +import type { DataTableUiKit } from "../ui-kit"; + +export function createDataTableStateOverlay(ui: DataTableUiKit) { + const { Button } = ui; + + return function DataTableStateOverlay({ + labels, + overlay, + rows, + toolbarQueryValue, + }: { + labels: DataTableLabels; + overlay: DataTableStateOverlay; + rows: Array; + toolbarQueryValue: string; + }) { + if (overlay.error == null) { + return null; + } + const context: DataTableStateOverlayContext = { + rows, + toolbarQueryValue, + error: overlay.error, + isRetrying: overlay.isRetrying ?? false, + retry: overlay.onRetry, + }; + + return ( +
    + {overlay.renderError ? ( + overlay.renderError(context) + ) : ( +
    +
    {labels.errorTitle}
    +

    + {labels.errorDescription} +

    + {overlay.onRetry ? ( + + ) : null} +
    + )} +
    + ); + }; +} diff --git a/src/core/data-table/data-table-table-panel.tsx b/src/core/data-table/data-table-table-panel.tsx index 19abf95..2e169de 100644 --- a/src/core/data-table/data-table-table-panel.tsx +++ b/src/core/data-table/data-table-table-panel.tsx @@ -73,6 +73,7 @@ export type DataTableTablePanelProps = { sentinelRef: React.RefObject; setDraftValues: React.Dispatch>>; shouldRenderInitialLoading: boolean; + stateOverlayNode?: React.ReactNode; stickyHeader: boolean; stripedRows: boolean; summaryRows: NonNullable["summaryRows"]>; @@ -145,6 +146,7 @@ export function DataTableTablePanel({ sentinelRef, setDraftValues, shouldRenderInitialLoading, + stateOverlayNode, stickyHeader, stripedRows, summaryRows, @@ -322,7 +324,7 @@ export function DataTableTablePanel({
    ({
    + {stateOverlayNode}
    ); } diff --git a/src/core/data-table/data-table-virtual-card-panel.tsx b/src/core/data-table/data-table-virtual-card-panel.tsx index 9983df8..1916bc3 100644 --- a/src/core/data-table/data-table-virtual-card-panel.tsx +++ b/src/core/data-table/data-table-virtual-card-panel.tsx @@ -38,6 +38,7 @@ export function DataTableVirtualCardPanel({ setCurrentRowSelection, setEditingRowId, shouldRenderInitialLoading, + stateOverlayNode, tableContainerClassName, uiClassNames, virtualization, @@ -118,7 +119,7 @@ export function DataTableVirtualCardPanel({ ref={cardScrollContainerRef} data-dtp-slot="data-table-card-shell" className={cn( - "box-border border-2 border-transparent transition-colors", + "relative box-border border-2 border-transparent transition-colors", flexGrow ? "flex min-h-0 flex-1 flex-col" : "h-full", dragAndDrop?.isDragging && (uiClassNames.dragActive ?? "rounded-md border-dashed"), @@ -218,6 +219,7 @@ export function DataTableVirtualCardPanel({ ) : null} + {stateOverlayNode} ); } diff --git a/src/core/data-table/use-data-table-auto-page-size.ts b/src/core/data-table/use-data-table-auto-page-size.ts new file mode 100644 index 0000000..72a9d09 --- /dev/null +++ b/src/core/data-table/use-data-table-auto-page-size.ts @@ -0,0 +1,113 @@ +import * as React from "react"; +import type { DataTableAutoPageSizeConfig } from "../types"; + +export function useDataTableAutoPageSize({ + config, + currentPageSize, + enabled, + onPageSizeChange, + viewportElement, + viewportHeight, +}: { + config: DataTableAutoPageSizeConfig | undefined; + currentPageSize: number; + enabled: boolean; + onPageSizeChange: (pageSize: number) => void; + viewportElement: HTMLElement | null; + viewportHeight: number; +}) { + const lastRequestedPageSize = React.useRef(null); + const feedbackGuard = React.useRef<{ + pageSize: number; + viewportHeight: number; + } | null>(null); + + React.useEffect(() => { + if (!enabled || !viewportElement || viewportHeight <= 0) { + lastRequestedPageSize.current = null; + return; + } + + let frameId: number | null = null; + const update = () => { + frameId = null; + const row = viewportElement.querySelector( + '[data-dtp-slot="data-table-row"]', + ); + const rowHeight = Math.max( + 1, + row?.getBoundingClientRect().height || config?.estimateRowHeight || 48, + ); + const minRows = Math.max(1, Math.floor(config?.minRows ?? 1)); + const maxRows = Math.max(minRows, Math.floor(config?.maxRows ?? 100)); + const table = viewportElement.querySelector("table"); + const occupiedHeight = table + ? Array.from(table.querySelectorAll("thead, tfoot")).reduce( + (total, element) => total + element.getBoundingClientRect().height, + 0, + ) + : 0; + const bodyHeight = Math.max(0, viewportElement.clientHeight - occupiedHeight); + const nextPageSize = Math.min( + maxRows, + Math.max(minRows, Math.floor(bodyHeight / rowHeight)), + ); + + const previousRequest = feedbackGuard.current; + if ( + previousRequest?.pageSize === currentPageSize && + viewportElement.clientHeight > previousRequest.viewportHeight && + nextPageSize > currentPageSize + ) { + // A content-sized viewport can grow in response to the rows we just + // added. Do not recursively turn that growth into another request. + feedbackGuard.current = null; + return; + } + + if ( + nextPageSize === currentPageSize || + nextPageSize === lastRequestedPageSize.current + ) { + return; + } + lastRequestedPageSize.current = nextPageSize; + feedbackGuard.current = { + pageSize: nextPageSize, + viewportHeight: viewportElement.clientHeight, + }; + onPageSizeChange(nextPageSize); + }; + const scheduleUpdate = () => { + if (frameId === null) { + frameId = window.requestAnimationFrame(update); + } + }; + + scheduleUpdate(); + if (typeof ResizeObserver === "undefined") { + return () => { + if (frameId !== null) window.cancelAnimationFrame(frameId); + }; + } + + const observer = new ResizeObserver(scheduleUpdate); + observer.observe(viewportElement); + const row = viewportElement.querySelector( + '[data-dtp-slot="data-table-row"]', + ); + if (row) observer.observe(row); + + return () => { + if (frameId !== null) window.cancelAnimationFrame(frameId); + observer.disconnect(); + }; + }, [ + config, + currentPageSize, + enabled, + onPageSizeChange, + viewportElement, + viewportHeight, + ]); +} diff --git a/src/core/types.ts b/src/core/types.ts index 9b81ead..69bcb94 100644 --- a/src/core/types.ts +++ b/src/core/types.ts @@ -112,7 +112,8 @@ export type DataTableActionErrorSource = | "clipboardCopy" | "clipboardPaste" | "fileUpload" - | "infiniteScroll"; + | "infiniteScroll" + | "retry"; export const DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS: Record< DataTableContainerBreakpoint, @@ -135,6 +136,32 @@ export type DataTableLoadingState = { loadingRowCount?: number; }; +export type DataTableAutoPageSizeConfig = { + minRows?: number; + maxRows?: number; + estimateRowHeight?: number; +}; + +export type DataTableStateOverlayContext = { + rows: Array; + toolbarQueryValue: string; + error: unknown; + isRetrying: boolean; + retry: (() => void | Promise) | undefined; +}; + +export type DataTableStateOverlay = { + empty?: + | React.ReactNode + | ((context: DataTableEmptyStateContext) => React.ReactNode); + error?: unknown; + isRetrying?: boolean; + onRetry?: () => void | Promise; + renderError?: ( + context: DataTableStateOverlayContext, + ) => React.ReactNode; +}; + export type DataTableCellEditRenderProps = { cell: CellContext; row: TData; @@ -663,6 +690,12 @@ export type DataTableLabels = { expandRowDetails?: string; collapseRowDetails?: string; exportCsv: string; + print?: string; + enterFullscreen?: string; + exitFullscreen?: string; + errorTitle?: string; + errorDescription?: string; + retry?: string; density: string; compactDensity: string; comfortableDensity: string; @@ -740,6 +773,8 @@ export type DataTableProps = { aggregationFns?: Record>; pageIndex?: number; pageSize?: number; + /** Sizes an opt-in page from the measurable table scroll viewport. */ + autoPageSize?: boolean | DataTableAutoPageSizeConfig; onPageIndexChange?: (pageIndex: number) => void; onPageSizeChange?: (pageSize: number) => void; pageCount?: number; @@ -813,9 +848,13 @@ export type DataTableProps = { viewMode?: DataTableViewMode; onViewModeChange?: (viewMode: DataTableViewMode) => void; enableViewToggle?: boolean; + enablePrint?: boolean; + enableFullscreen?: boolean; emptyState?: | React.ReactNode | ((context: DataTableEmptyStateContext) => React.ReactNode); + /** Explicit empty/error/retry rendering contract. */ + stateOverlay?: DataTableStateOverlay; isLoading?: boolean; loadingRowCount?: number; getRowLoadingState?: ( From 731c6ef4aac221060832dd370bee6781c69de704 Mon Sep 17 00:00:00 2001 From: Toby Martin Date: Sun, 9 Aug 2026 02:34:08 +0000 Subject: [PATCH 23/31] perf: lazy-load clipboard operations --- src/core/data-table/create-data-table.tsx | 22 +- src/core/data-table/data-table-clipboard.ts | 204 ++++++++++++++++++ .../data-table/data-table-state-api.test.tsx | 14 +- src/core/data-table/data-table-utils.ts | 204 +----------------- 4 files changed, 227 insertions(+), 217 deletions(-) create mode 100644 src/core/data-table/data-table-clipboard.ts diff --git a/src/core/data-table/create-data-table.tsx b/src/core/data-table/create-data-table.tsx index e6cf678..ca6e377 100644 --- a/src/core/data-table/create-data-table.tsx +++ b/src/core/data-table/create-data-table.tsx @@ -34,13 +34,11 @@ import { useControllableState } from "./use-controllable-state"; import { useDataTableInstance } from "./use-data-table-instance"; import { useDataTableScrollViewport } from "./use-data-table-scroll-viewport"; import { - copyDataTableToClipboard, exportDataTableCsv, getColumnId, getDataTableColumnGroupPaths, getDataTableLeafColumns, getInitialColumnPinning, - parseDataTableClipboardText, validateDataTableColumnIds, } from "./data-table-utils"; import { useDataTableState } from "./use-data-table-state"; @@ -1283,8 +1281,11 @@ export function createDataTableWithPanels( const copyToClipboard = React.useCallback< DataTableApi["copyToClipboard"] >( - (options) => - copyDataTableToClipboard({ + async (options) => { + const { copyDataTableToClipboard } = await import( + "./data-table-clipboard" + ); + return copyDataTableToClipboard({ clipboard: options ?? (clipboard?.copy === false @@ -1297,7 +1298,8 @@ export function createDataTableWithPanels( : clipboard?.copy ?? true), cellSelection: currentCellSelection, table, - }), + }); + }, [clipboard?.copy, currentCellSelection, table], ); const pinRow = React.useCallback["pinRow"]>( @@ -1469,12 +1471,16 @@ export function createDataTableWithPanels( } runAction( { source: "clipboardPaste" }, - () => - paste.onPaste({ + async () => { + const { parseDataTableClipboardText } = await import( + "./data-table-clipboard" + ); + return paste.onPaste({ table, text, values: parseDataTableClipboardText(text), - }), + }); + }, ); }} > diff --git a/src/core/data-table/data-table-clipboard.ts b/src/core/data-table/data-table-clipboard.ts new file mode 100644 index 0000000..bbe4811 --- /dev/null +++ b/src/core/data-table/data-table-clipboard.ts @@ -0,0 +1,204 @@ +import type { Column, Table as TanStackTable } from "@tanstack/react-table"; +import type { + DataTableCellSelection, + DataTableClipboardCopyOptions, +} from "../types"; +import { + getDataTableExportRows, + isUtilityColumnId, + normalizeFilterValue, + startCase, +} from "./data-table-utils"; + +export async function copyDataTableToClipboard({ + clipboard, + cellSelection, + table, +}: { + clipboard: boolean | DataTableClipboardCopyOptions; + cellSelection?: DataTableCellSelection | null; + table: TanStackTable; +}) { + if (clipboard === false) return undefined; + + const options: DataTableClipboardCopyOptions = + clipboard === true ? {} : clipboard; + const scope = options.scope ?? "page"; + const requestedColumnIds = options.columns + ? new Set(options.columns) + : undefined; + const allVisibleColumns = table.getVisibleLeafColumns(); + const visibleColumns = allVisibleColumns.filter( + (column) => + !isUtilityColumnId(column.id) && + column.id !== "__spacer__" && + (!requestedColumnIds || requestedColumnIds.has(column.id)), + ); + const selectedRange = + scope === "cellSelection" + ? getDataTableCellSelectionRange(table, allVisibleColumns, cellSelection) + : undefined; + const columns = selectedRange?.columns ?? visibleColumns; + const rows = + scope === "cellSelection" + ? (selectedRange?.rows ?? []) + : getDataTableExportRows(table, scope); + const values: Array> = []; + + if (options.includeHeaders ?? scope !== "cellSelection") { + values.push( + columns.map((column) => + typeof column.columnDef.header === "string" + ? column.columnDef.header + : startCase(column.id), + ), + ); + } + + for (const row of rows) { + values.push( + columns.map((column) => { + const value = row.getValue(column.id); + return options.getCellValue + ? options.getCellValue({ + columnId: column.id, + row: row.original, + rowId: row.id, + value, + }) + : value; + }), + ); + } + + const delimiter = options.delimiter ?? "\t"; + const text = values + .map((row) => + row + .map((value) => + escapeDelimitedCell( + value, + delimiter, + options.escapeFormulaValues ?? true, + ), + ) + .join(delimiter), + ) + .join("\n"); + + if (options.onCopy) { + await options.onCopy({ + rows: rows.map((row) => row.original), + scope, + text, + }); + } else if ( + typeof navigator !== "undefined" && + typeof navigator.clipboard?.writeText === "function" + ) { + await navigator.clipboard.writeText(text); + } + + return text; +} + +function getDataTableCellSelectionRange( + table: TanStackTable, + columns: Array>, + selection: DataTableCellSelection | null | undefined, +) { + if (!selection) return undefined; + const rows = table.getRowModel().flatRows; + const anchorRow = rows.findIndex((row) => row.id === selection.anchor.rowId); + const focusRow = rows.findIndex((row) => row.id === selection.focus.rowId); + const anchorColumn = columns.findIndex( + (column) => column.id === selection.anchor.columnId, + ); + const focusColumn = columns.findIndex( + (column) => column.id === selection.focus.columnId, + ); + if (anchorRow < 0 || focusRow < 0 || anchorColumn < 0 || focusColumn < 0) { + return undefined; + } + return { + rows: rows.slice( + Math.min(anchorRow, focusRow), + Math.max(anchorRow, focusRow) + 1, + ), + columns: columns + .slice( + Math.min(anchorColumn, focusColumn), + Math.max(anchorColumn, focusColumn) + 1, + ) + .filter( + (column) => + !isUtilityColumnId(column.id) && column.id !== "__spacer__", + ), + }; +} + +export function parseDataTableClipboardText( + text: string, + delimiter: "\t" | "," = "\t", +) { + const rows: Array> = []; + let row: Array = []; + let value = ""; + let quoted = false; + + for (let index = 0; index < text.length; index += 1) { + const character = text[index]; + const nextCharacter = text[index + 1]; + if (character === '"') { + if (quoted && nextCharacter === '"') { + value += '"'; + index += 1; + } else { + quoted = !quoted; + } + continue; + } + if (!quoted && character === delimiter) { + row.push(value); + value = ""; + continue; + } + if (!quoted && (character === "\n" || character === "\r")) { + if (character === "\r" && nextCharacter === "\n") index += 1; + row.push(value); + rows.push(row); + row = []; + value = ""; + continue; + } + value += character; + } + + row.push(value); + if (row.length > 1 || row[0] || rows.length === 0) rows.push(row); + return rows; +} + +function escapeDelimitedCell( + value: unknown, + delimiter: string, + escapeFormulaValues: boolean, +) { + let text = normalizeFilterValue(value); + if ( + escapeFormulaValues && + typeof value === "string" && + /^[\t\r ]*[=+\-@]/.test(value) + ) { + text = `'${text}`; + } + if ( + text.includes(delimiter) || + text.includes('"') || + text.includes("\n") || + text.includes("\r") + ) { + return `"${text.replace(/"/g, '""')}"`; + } + return text; +} diff --git a/src/core/data-table/data-table-state-api.test.tsx b/src/core/data-table/data-table-state-api.test.tsx index 4906cc6..b5447ad 100644 --- a/src/core/data-table/data-table-state-api.test.tsx +++ b/src/core/data-table/data-table-state-api.test.tsx @@ -481,12 +481,14 @@ describe("DataTable unified state API", () => { getData: () => 'Ada\t"Admin\nOwner"', }, }); - expect(onPaste).toHaveBeenCalledWith( - expect.objectContaining({ - text: 'Ada\t"Admin\nOwner"', - values: [["Ada", "Admin\nOwner"]], - }), - ); + await waitFor(() => { + expect(onPaste).toHaveBeenCalledWith( + expect.objectContaining({ + text: 'Ada\t"Admin\nOwner"', + values: [["Ada", "Admin\nOwner"]], + }), + ); + }); expect(apiRef.current?.print()).toBe(true); expect(print).toHaveBeenCalled(); diff --git a/src/core/data-table/data-table-utils.ts b/src/core/data-table/data-table-utils.ts index 914d018..c03050b 100644 --- a/src/core/data-table/data-table-utils.ts +++ b/src/core/data-table/data-table-utils.ts @@ -7,8 +7,6 @@ import type { Table as TanStackTable, } from "@tanstack/react-table"; import type { - DataTableClipboardCopyOptions, - DataTableCellSelection, DataTableColumnDef, DataTableColumnFilterOption, DataTableCsvExportOptions, @@ -488,183 +486,7 @@ export async function exportDataTableCsv({ window.URL.revokeObjectURL(url); } -export async function copyDataTableToClipboard({ - clipboard, - cellSelection, - table, -}: { - clipboard: boolean | DataTableClipboardCopyOptions; - cellSelection?: DataTableCellSelection | null; - table: TanStackTable; -}) { - if (clipboard === false) { - return undefined; - } - - const options: DataTableClipboardCopyOptions = - clipboard === true ? {} : clipboard; - const scope = options.scope ?? "page"; - const requestedColumnIds = options.columns - ? new Set(options.columns) - : undefined; - const allVisibleColumns = table.getVisibleLeafColumns(); - const visibleColumns = allVisibleColumns - .filter( - (column) => - !isUtilityColumnId(column.id) && - column.id !== "__spacer__" && - (!requestedColumnIds || requestedColumnIds.has(column.id)), - ); - const selectedRange = - scope === "cellSelection" - ? getDataTableCellSelectionRange(table, allVisibleColumns, cellSelection) - : undefined; - const columns = selectedRange?.columns ?? visibleColumns; - const rows = - scope === "cellSelection" - ? (selectedRange?.rows ?? []) - : getDataTableExportRows(table, scope); - const values: Array> = []; - - if (options.includeHeaders ?? scope !== "cellSelection") { - values.push( - columns.map((column) => - typeof column.columnDef.header === "string" - ? column.columnDef.header - : startCase(column.id), - ), - ); - } - - for (const row of rows) { - values.push( - columns.map((column) => { - const value = row.getValue(column.id); - return options.getCellValue - ? options.getCellValue({ - columnId: column.id, - row: row.original, - rowId: row.id, - value, - }) - : value; - }), - ); - } - - const delimiter = options.delimiter ?? "\t"; - const text = values - .map((row) => - row - .map((value) => - escapeDelimitedCell( - value, - delimiter, - options.escapeFormulaValues ?? true, - ), - ) - .join(delimiter), - ) - .join("\n"); - - if (options.onCopy) { - await options.onCopy({ - rows: rows.map((row) => row.original), - scope, - text, - }); - } else if ( - typeof navigator !== "undefined" && - typeof navigator.clipboard?.writeText === "function" - ) { - await navigator.clipboard.writeText(text); - } - - return text; -} - -function getDataTableCellSelectionRange( - table: TanStackTable, - columns: Array>, - selection: DataTableCellSelection | null | undefined, -) { - if (!selection) return undefined; - // flatRows preserves expanded tree/group display order, whereas `rows` only - // contains top-level entries and would omit selected descendants. - const rows = table.getRowModel().flatRows; - const anchorRow = rows.findIndex((row) => row.id === selection.anchor.rowId); - const focusRow = rows.findIndex((row) => row.id === selection.focus.rowId); - const anchorColumn = columns.findIndex( - (column) => column.id === selection.anchor.columnId, - ); - const focusColumn = columns.findIndex( - (column) => column.id === selection.focus.columnId, - ); - if (anchorRow < 0 || focusRow < 0 || anchorColumn < 0 || focusColumn < 0) { - return undefined; - } - return { - rows: rows.slice(Math.min(anchorRow, focusRow), Math.max(anchorRow, focusRow) + 1), - columns: columns - .slice( - Math.min(anchorColumn, focusColumn), - Math.max(anchorColumn, focusColumn) + 1, - ) - .filter( - (column) => - !isUtilityColumnId(column.id) && column.id !== "__spacer__", - ), - }; -} - -export function parseDataTableClipboardText( - text: string, - delimiter: "\t" | "," = "\t", -) { - const rows: Array> = []; - let row: Array = []; - let value = ""; - let quoted = false; - - for (let index = 0; index < text.length; index += 1) { - const character = text[index]; - const nextCharacter = text[index + 1]; - - if (character === '"') { - if (quoted && nextCharacter === '"') { - value += '"'; - index += 1; - } else { - quoted = !quoted; - } - continue; - } - if (!quoted && character === delimiter) { - row.push(value); - value = ""; - continue; - } - if (!quoted && (character === "\n" || character === "\r")) { - if (character === "\r" && nextCharacter === "\n") { - index += 1; - } - row.push(value); - rows.push(row); - row = []; - value = ""; - continue; - } - value += character; - } - - row.push(value); - if (row.length > 1 || row[0] || rows.length === 0) { - rows.push(row); - } - return rows; -} - -function getDataTableExportRows( +export function getDataTableExportRows( table: TanStackTable, scope: DataTableCsvExportScope, ) { @@ -682,30 +504,6 @@ function getDataTableExportRows( } } -function escapeDelimitedCell( - value: unknown, - delimiter: string, - escapeFormulaValues: boolean, -) { - let text = normalizeFilterValue(value); - if ( - escapeFormulaValues && - typeof value === "string" && - /^[\t\r ]*[=+\-@]/.test(value) - ) { - text = `'${text}`; - } - if ( - text.includes(delimiter) || - text.includes('"') || - text.includes("\n") || - text.includes("\r") - ) { - return `"${text.replace(/"/g, '""')}"`; - } - return text; -} - function escapeCsvCell(value: unknown, escapeFormulaValues: boolean) { let text = normalizeFilterValue(value); if ( From f5b389ae50f64d6e4ceb3721d3367641d95e471f Mon Sep 17 00:00:00 2001 From: Toby Martin Date: Sun, 9 Aug 2026 02:35:28 +0000 Subject: [PATCH 24/31] fix: keep grouping state source compatible --- src/core/data-table/create-data-table.tsx | 8 +++++--- src/core/types.ts | 3 ++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/core/data-table/create-data-table.tsx b/src/core/data-table/create-data-table.tsx index ca6e377..039ba2e 100644 --- a/src/core/data-table/create-data-table.tsx +++ b/src/core/data-table/create-data-table.tsx @@ -1744,11 +1744,13 @@ function runDataTableAction( function useDataTableStateSliceChange( key: K, - onLegacyChange: ((value: DataTableState[K]) => void) | undefined, + onLegacyChange: + | ((value: Exclude) => void) + | undefined, onStateChange: DataTableProps["onStateChange"], ) { const handleChange = React.useCallback( - (value: DataTableState[K]) => { + (value: Exclude) => { onLegacyChange?.(value); onStateChange?.((current) => ({ ...current, @@ -1812,7 +1814,7 @@ function cloneDataTableState(state: DataTableState): DataTableState { typeof state.expanded === "boolean" ? state.expanded : { ...state.expanded }, - grouping: [...state.grouping], + grouping: [...(state.grouping ?? [])], columnOrder: [...state.columnOrder], columnPinning: { left: state.columnPinning.left diff --git a/src/core/types.ts b/src/core/types.ts index 6b8f201..aec7450 100644 --- a/src/core/types.ts +++ b/src/core/types.ts @@ -593,7 +593,8 @@ export type DataTableState = { columnPinning: ColumnPinningState; rowPinning: RowPinningState; columnSizing: ColumnSizingState; - grouping: GroupingState; + /** Present in snapshots produced by 4.4+; optional for 4.x object-literal compatibility. */ + grouping?: GroupingState; density: DataTableDensity; viewMode: DataTableViewMode; showHiddenRows: boolean; From 459c666f680ec8cd3d38b498645b4c44e5e1a263 Mon Sep 17 00:00:00 2001 From: Toby Martin Date: Sun, 9 Aug 2026 02:40:45 +0000 Subject: [PATCH 25/31] perf: lazy-load optional state tools --- src/core/data-table/create-data-table.tsx | 58 +++++++++++++------ .../data-table/data-table-auto-page-size.tsx | 8 +++ .../data-table/data-table-state-api.test.tsx | 12 ++-- 3 files changed, 55 insertions(+), 23 deletions(-) create mode 100644 src/core/data-table/data-table-auto-page-size.tsx diff --git a/src/core/data-table/create-data-table.tsx b/src/core/data-table/create-data-table.tsx index 039ba2e..179e60d 100644 --- a/src/core/data-table/create-data-table.tsx +++ b/src/core/data-table/create-data-table.tsx @@ -7,8 +7,10 @@ import type { DataTableActionErrorContext, DataTableApi, DataTableCellSelection, + DataTableLabels, DataTableProps, DataTableState, + DataTableStateOverlay as DataTableStateOverlayConfig, } from "../types"; import type { DataTableUiKit } from "../ui-kit"; import { cn } from "../../lib/utils"; @@ -46,9 +48,11 @@ import { clearDataTableColumnPrefs } from "./use-data-table-column-prefs"; import { useDataTableToolbarFeatures } from "./use-data-table-toolbar-features"; import { useColumnLayout } from "./use-column-layout"; import { useRowEditing } from "./use-row-editing"; -import { useDataTableAutoPageSize } from "./use-data-table-auto-page-size"; import { useDataTablePerformanceDiagnostics } from "./use-data-table-performance-diagnostics"; -import { createDataTableStateOverlay } from "./data-table-state-overlay"; + +const DataTableAutoPageSize = React.lazy( + () => import("./data-table-auto-page-size"), +); type CreateDataTableOptions = { CardPanel?: typeof DefaultDataTableCardPanel; @@ -93,7 +97,17 @@ export function createDataTableWithPanels( const { DataTableFooter } = createDataTablePagination(ui); const DataTableToolbar = createDataTableToolbar(ui); const DataTableCardView = createDataTableCardView(ui, DataTableRowActions); - const DataTableStateOverlay = createDataTableStateOverlay(ui); + const DataTableStateOverlay = React.lazy(async () => { + const { createDataTableStateOverlay } = await import( + "./data-table-state-overlay" + ); + return { default: createDataTableStateOverlay(ui) }; + }) as unknown as (props: { + labels: DataTableLabels; + overlay: DataTableStateOverlayConfig; + rows: Array; + toolbarQueryValue: string; + }) => React.ReactElement | null; const defaultColumn = { minSize: 80, size: 180, @@ -647,14 +661,8 @@ export function createDataTableWithPanels( setLocalPagination, ], ); - useDataTableAutoPageSize({ - config: autoPageSizeConfig, - currentPageSize: currentPagination.pageSize, - enabled: autoPageSize === true || autoPageSizeConfig !== undefined, - onPageSizeChange: handleAutoPageSizeChange, - viewportElement: tableScrollElement, - viewportHeight, - }); + const autoPageSizeEnabled = + autoPageSize === true || autoPageSizeConfig !== undefined; const print = React.useCallback(() => { if (typeof window === "undefined" || typeof window.print !== "function") { return false; @@ -931,13 +939,15 @@ export function createDataTableWithPanels( : undefined, [runAction, stateOverlay], ); - const stateOverlayNode = guardedStateOverlay ? ( - + const stateOverlayNode = guardedStateOverlay?.error != null ? ( + + + ) : undefined; const { columnVisibilityOptions, @@ -1484,6 +1494,18 @@ export function createDataTableWithPanels( ); }} > + {autoPageSizeEnabled ? ( + + + + ) : null} {fileUpload ? ( [0], +) { + useDataTableAutoPageSize(props); + return null; +} diff --git a/src/core/data-table/data-table-state-api.test.tsx b/src/core/data-table/data-table-state-api.test.tsx index b5447ad..ab3b1e4 100644 --- a/src/core/data-table/data-table-state-api.test.tsx +++ b/src/core/data-table/data-table-state-api.test.tsx @@ -118,7 +118,7 @@ describe("DataTable unified state API", () => { expect(screen.getByText("Grace")).not.toBeNull(); }); - it("derives an opt-in controlled page size from the scroll viewport", () => { + it("derives an opt-in controlled page size from the scroll viewport", async () => { const clientHeight = Object.getOwnPropertyDescriptor( HTMLElement.prototype, "clientHeight", @@ -154,8 +154,10 @@ describe("DataTable unified state API", () => { />, ); - expect(onPageIndexChange).toHaveBeenCalledWith(0); - expect(onPageSizeChange).toHaveBeenCalledWith(5); + await waitFor(() => { + expect(onPageIndexChange).toHaveBeenCalledWith(0); + expect(onPageSizeChange).toHaveBeenCalledWith(5); + }); } finally { frame.mockRestore(); if (clientHeight) { @@ -530,8 +532,8 @@ describe("DataTable unified state API", () => { ); await waitFor(() => expect(requestFullscreen).toHaveBeenCalled()); - expect(screen.getByRole("alert")).not.toBeNull(); - fireEvent.click(screen.getByRole("button", { name: "Retry" })); + expect(await screen.findByRole("alert")).not.toBeNull(); + fireEvent.click(await screen.findByRole("button", { name: "Retry" })); expect(retry).toHaveBeenCalled(); }); From b79f5e97f480a3f1b9e8cd90a0d4bc9c89b8d677 Mon Sep 17 00:00:00 2001 From: Toby Martin Date: Sun, 9 Aug 2026 02:41:18 +0000 Subject: [PATCH 26/31] perf: lazy load toolbar data operations --- .../data-table/create-data-table-toolbar.tsx | 380 +++--------------- .../data-table-toolbar-operations.test.tsx | 12 +- .../data-table-toolbar-operations.tsx | 144 +++++++ 3 files changed, 207 insertions(+), 329 deletions(-) create mode 100644 src/core/data-table/data-table-toolbar-operations.tsx diff --git a/src/core/data-table/create-data-table-toolbar.tsx b/src/core/data-table/create-data-table-toolbar.tsx index 998e096..8175cba 100644 --- a/src/core/data-table/create-data-table-toolbar.tsx +++ b/src/core/data-table/create-data-table-toolbar.tsx @@ -22,6 +22,10 @@ import type { import type { DataTableUiKit } from "../ui-kit"; import { DATA_TABLE_DEFAULT_LABELS } from "./data-table-labels"; +const LazyToolbarDataOperations = React.lazy( + () => import("./data-table-toolbar-operations"), +); + export type DataTableToolbarColumnFilter = { id: string; label: string; @@ -159,12 +163,6 @@ export function createDataTableToolbar(ui: DataTableUiKit) { const compactSearchInputRef = React.useRef(null); const [isCompactSearchVisible, setIsCompactSearchVisible] = React.useState(false); - const [columnQuery, setColumnQuery] = React.useState(""); - const [newSavedViewName, setNewSavedViewName] = React.useState(""); - const [renamingSavedViewId, setRenamingSavedViewId] = - React.useState(null); - const [renamedSavedViewName, setRenamedSavedViewName] = - React.useState(""); const compactToolbarIconButtonClassName = uiClassNames.toolbarCompactIconButton ?? ""; const primaryActions = toolbarActions.filter( @@ -195,19 +193,54 @@ export function createDataTableToolbar(ui: DataTableUiKit) { enableToolbarColumnChooser || enableToolbarResetLayout || enableToolbarSavedViews); - const filteredColumnVisibilityOptions = columnVisibilityOptions.filter( - (column) => - column.label.toLocaleLowerCase().includes(columnQuery.toLocaleLowerCase()), - ); + const hasToolbarOperationsMenu = + enableToolbarColumnChooser || + enableToolbarResetLayout || + enableToolbarSavedViews; const activeColumnFilters = columnFilters.filter((filter) => hasColumnFilterValue(filter.value), ); - const activeFilterCount = activeColumnFilters.length + - (toolbarQueryValue ? 1 : 0); - const orderedDataColumnIds = table - .getAllLeafColumns() - .map((column) => column.id) - .filter((id) => !id.startsWith("__")); + const toolbarOperationsUi = { + Button, + DropdownMenuCheckboxItem, + DropdownMenuGroup, + DropdownMenuItem, + DropdownMenuLabel, + DropdownMenuSeparator, + InputGroup, + InputGroupAddon, + InputGroupInput, + }; + const renderToolbarDataOperations = (placement: "menu" | "chips") => ( + + } + onResetColumnLayout={onResetColumnLayout} + savedViews={savedViews} + onCreateSavedView={onCreateSavedView} + onApplySavedView={onApplySavedView} + onRenameSavedView={onRenameSavedView} + onDeleteSavedView={onDeleteSavedView} + toolbarQueryValue={toolbarQueryValue} + onToolbarQueryValueChange={onToolbarQueryValueChange} + activeColumnFilters={activeColumnFilters} + onColumnFilterChange={onColumnFilterChange} + onClearColumnFilters={onClearColumnFilters} + /> + + ); const groupableColumns = table .getAllLeafColumns() .filter( @@ -219,35 +252,6 @@ export function createDataTableToolbar(ui: DataTableUiKit) { const column = table.getColumn(id); return column ? [column] : []; }); - const moveColumn = React.useCallback( - (columnId: string, direction: -1 | 1) => { - const order = table - .getAllLeafColumns() - .map((column) => column.id) - .filter((id) => !id.startsWith("__")); - const index = order.indexOf(columnId); - const targetIndex = index + direction; - if (index < 0 || targetIndex < 0 || targetIndex >= order.length) { - return; - } - reorderColumn(columnId, order[targetIndex]!); - }, - [reorderColumn, table], - ); - const setAllColumnsVisible = React.useCallback( - (visible: boolean) => { - table.setColumnVisibility((current) => { - const next = { ...current }; - for (const column of table.getAllLeafColumns()) { - if (!column.id.startsWith("__") && column.getCanHide()) { - next[column.id] = visible; - } - } - return next; - }); - }, - [table], - ); const hasVisibleViewToggle = showViewToggle && enableViewToggle && Boolean(onViewModeChange); const hasVisibleTrailingActions = @@ -531,115 +535,11 @@ export function createDataTableToolbar(ui: DataTableUiKit) { ) : null} - {enableToolbarColumnChooser ? ( - <> - - {labels.columns} -
    - - ) => { - setColumnQuery(event.target.value); - }} - placeholder={labels.searchColumns} - aria-label={labels.searchColumns} - /> - - -
    - - { - event.preventDefault(); - setAllColumnsVisible(true); - }} - > - {labels.showAllColumns} - - { - event.preventDefault(); - setAllColumnsVisible(false); - }} - > - {labels.hideAllColumns} - - {filteredColumnVisibilityOptions.map((column) => { - const orderIndex = orderedDataColumnIds.indexOf(column.id); - return ( - - { - onColumnVisibilityChange?.( - column.id, - checked === true, - ); - }} - > - {column.label} - - { - event.preventDefault(); - moveColumn(column.id, -1); - }} - > - {labels.moveColumnEarlier(column.label)} - - { - event.preventDefault(); - moveColumn(column.id, 1); - }} - > - {labels.moveColumnLater(column.label)} - - {enableColumnPinning ? ( - <> - { - event.preventDefault(); - onColumnPinningChange(column.id, "left"); - }} - > - {labels.pinLeft}: {column.label} - - { - event.preventDefault(); - onColumnPinningChange(column.id, "right"); - }} - > - {labels.pinRight}: {column.label} - - { - event.preventDefault(); - onColumnPinningChange(column.id, false); - }} - > - {labels.unpin}: {column.label} - - - ) : null} - - ); - })} - - - ) : columnVisibilityOptions.some((column) => column.canHide) ? ( + {hasToolbarOperationsMenu + ? renderToolbarDataOperations("menu") + : null} + {!enableToolbarColumnChooser && + columnVisibilityOptions.some((column) => column.canHide) ? ( <> {labels.columns} @@ -720,116 +620,6 @@ export function createDataTableToolbar(ui: DataTableUiKit) { ) : null} - {enableToolbarResetLayout ? ( - <> - - { - event.preventDefault(); - onResetColumnLayout(); - }} - > - {labels.resetColumnLayout} - - - ) : null} - {enableToolbarSavedViews ? ( - <> - - {labels.savedViews} -
    - - ) => { - setNewSavedViewName(event.target.value); - }} - placeholder={labels.savedViewName} - aria-label={labels.savedViewName} - /> - -
    - { - event.preventDefault(); - if (onCreateSavedView(newSavedViewName.trim())) { - setNewSavedViewName(""); - } - }} - > - {labels.createSavedView} - - - {savedViews.map((view) => - renamingSavedViewId === view.id ? ( -
    - - ) => { - setRenamedSavedViewName(event.target.value); - }} - aria-label={labels.savedViewName} - /> - - { - event.preventDefault(); - if ( - renamedSavedViewName.trim() && - onRenameSavedView( - view.id, - renamedSavedViewName.trim(), - ) - ) { - setRenamingSavedViewId(null); - } - }} - > - {labels.saveSavedView} - -
    - ) : ( - - { - event.preventDefault(); - onApplySavedView(view.id); - }} - > - {view.name} - - { - event.preventDefault(); - setRenamingSavedViewId(view.id); - setRenamedSavedViewName(view.name); - }} - > - {labels.renameSavedView(view.name)} - - { - event.preventDefault(); - onDeleteSavedView(view.id); - }} - > - {labels.deleteSavedView(view.name)} - - - ), - )} -
    - - ) : null} {enableGrouping && groupableColumns.length ? ( <> @@ -1040,52 +830,9 @@ export function createDataTableToolbar(ui: DataTableUiKit) { ) : null} - {enableToolbarFilterChips && activeFilterCount ? ( -
    - - {labels.filters} ({activeFilterCount}) - - {toolbarQueryValue ? ( - - ) : null} - {activeColumnFilters.map((filter) => ( - - ))} - -
    - ) : null} + {enableToolbarFilterChips + ? renderToolbarDataOperations("chips") + : null} {enableGrouping && groupedColumns.length ? (
    { - it("renders the enhanced searchable column chooser and layout controls only when opted in", () => { + it("renders the enhanced searchable column chooser and layout controls only when opted in", async () => { const onColumnOrderChange = vi.fn(); render( { ); openTableOptions(); - expect(screen.getByLabelText("Search columns")).toBeTruthy(); + expect(await screen.findByLabelText("Search columns")).toBeTruthy(); expect(screen.getByText("Show all columns")).toBeTruthy(); expect(screen.getByText("Hide all columns")).toBeTruthy(); expect(screen.getByText("Reset column layout")).toBeTruthy(); @@ -49,7 +49,7 @@ describe("DataTable toolbar data operations", () => { expect(onColumnOrderChange).toHaveBeenCalledWith(["role", "name"]); }); - it("creates, applies, renames, and deletes saved views from the opted-in menu", () => { + it("creates, applies, renames, and deletes saved views from the opted-in menu", async () => { const values = new Map(); const storage = { getItem: (key: string) => values.get(key) ?? null, @@ -68,7 +68,7 @@ describe("DataTable toolbar data operations", () => { ); openTableOptions(); - fireEvent.change(screen.getByLabelText("View name"), { + fireEvent.change(await screen.findByLabelText("View name"), { target: { value: "Operations" }, }); fireEvent.click(screen.getByRole("menuitem", { name: "Create saved view" })); @@ -85,7 +85,7 @@ describe("DataTable toolbar data operations", () => { expect(screen.queryByRole("menuitem", { name: "Ops" })).toBeNull(); }); - it("shows removable active filter chips only with toolbar operations enabled", () => { + it("shows removable active filter chips only with toolbar operations enabled", async () => { const onColumnFiltersChange = vi.fn(); render( { />, ); - expect(screen.getByLabelText("Filters: 1")).toBeTruthy(); + expect(await screen.findByLabelText("Filters: 1")).toBeTruthy(); fireEvent.click(screen.getByLabelText("Clear filters: Role")); expect(onColumnFiltersChange).toHaveBeenCalledWith([]); }); diff --git a/src/core/data-table/data-table-toolbar-operations.tsx b/src/core/data-table/data-table-toolbar-operations.tsx new file mode 100644 index 0000000..f8155e5 --- /dev/null +++ b/src/core/data-table/data-table-toolbar-operations.tsx @@ -0,0 +1,144 @@ +import * as React from "react"; +import type { Table } from "@tanstack/react-table"; +import { IconSearch } from "../icons"; +import type { + DataTableColumnFixed, + DataTableColumnVisibilityOption, + DataTableLabels, + DataTableSavedView, +} from "../types"; +import type { DataTableUiKit } from "../ui-kit"; + +type ToolbarUi = Pick< + DataTableUiKit, + | "Button" + | "DropdownMenuCheckboxItem" + | "DropdownMenuGroup" + | "DropdownMenuItem" + | "DropdownMenuLabel" + | "DropdownMenuSeparator" + | "InputGroup" + | "InputGroupAddon" + | "InputGroupInput" +>; + +type ActiveFilter = { id: string; label: string; value: unknown }; + +type ToolbarDataOperationsProps = { + placement: "menu" | "chips"; + ui: ToolbarUi; + labels: Required; + enableColumnChooser: boolean; + enableFilterChips: boolean; + enableResetLayout: boolean; + enableSavedViews: boolean; + enableColumnPinning: boolean; + columnVisibilityOptions: Array; + onColumnVisibilityChange?: (columnId: string, visible: boolean) => void; + onColumnPinningChange: (columnId: string, side: DataTableColumnFixed | false) => void; + reorderColumn: (sourceColumnId: string, targetColumnId: string) => void; + table: Table; + onResetColumnLayout: () => void; + savedViews: Array; + onCreateSavedView: (name: string) => DataTableSavedView | undefined; + onApplySavedView: (id: string) => boolean; + onRenameSavedView: (id: string, name: string) => DataTableSavedView | undefined; + onDeleteSavedView: (id: string) => boolean; + toolbarQueryValue: string; + onToolbarQueryValueChange: (value: string) => void; + activeColumnFilters: Array; + onColumnFilterChange: (columnId: string, value: unknown) => void; + onClearColumnFilters: () => void; +}; + +export default function ToolbarDataOperations({ + placement, + ui, + labels, + enableColumnChooser, + enableFilterChips, + enableResetLayout, + enableSavedViews, + enableColumnPinning, + columnVisibilityOptions, + onColumnVisibilityChange, + onColumnPinningChange, + reorderColumn, + table, + onResetColumnLayout, + savedViews, + onCreateSavedView, + onApplySavedView, + onRenameSavedView, + onDeleteSavedView, + toolbarQueryValue, + onToolbarQueryValueChange, + activeColumnFilters, + onColumnFilterChange, + onClearColumnFilters, +}: ToolbarDataOperationsProps) { + const [columnQuery, setColumnQuery] = React.useState(""); + const [newSavedViewName, setNewSavedViewName] = React.useState(""); + const [renamingSavedViewId, setRenamingSavedViewId] = React.useState(null); + const [renamedSavedViewName, setRenamedSavedViewName] = React.useState(""); + const { Button, DropdownMenuCheckboxItem, DropdownMenuGroup, DropdownMenuItem, + DropdownMenuLabel, DropdownMenuSeparator, InputGroup, InputGroupAddon, InputGroupInput } = ui; + const orderedIds = table.getAllLeafColumns().map((column) => column.id).filter((id) => !id.startsWith("__")); + const columns = columnVisibilityOptions.filter((column) => + column.label.toLocaleLowerCase().includes(columnQuery.toLocaleLowerCase()), + ); + const activeCount = activeColumnFilters.length + (toolbarQueryValue ? 1 : 0); + + if (placement === "chips") { + if (!enableFilterChips || !activeCount) return null; + return
    + {labels.filters} ({activeCount}) + {toolbarQueryValue ? : null} + {activeColumnFilters.map((filter) => )} + +
    ; + } + + if (!enableColumnChooser && !enableResetLayout && !enableSavedViews) return null; + const setVisibility = (visible: boolean) => table.setColumnVisibility((current) => { + const next = { ...current }; + for (const column of table.getAllLeafColumns()) if (!column.id.startsWith("__") && column.getCanHide()) next[column.id] = visible; + return next; + }); + const move = (id: string, direction: -1 | 1) => { + const index = orderedIds.indexOf(id); + const target = orderedIds[index + direction]; + if (index >= 0 && target) reorderColumn(id, target); + }; + return <> + {enableColumnChooser ? <> + {labels.columns} +
    ) => setColumnQuery(event.target.value)} placeholder={labels.searchColumns} aria-label={labels.searchColumns} />
    + + { event.preventDefault(); setVisibility(true); }}>{labels.showAllColumns} + { event.preventDefault(); setVisibility(false); }}>{labels.hideAllColumns} + {columns.map((column) => { const index = orderedIds.indexOf(column.id); return + onColumnVisibilityChange?.(column.id, checked === true)}>{column.label} + { event.preventDefault(); move(column.id, -1); }}>{labels.moveColumnEarlier(column.label)} + { event.preventDefault(); move(column.id, 1); }}>{labels.moveColumnLater(column.label)} + {enableColumnPinning ? <> { event.preventDefault(); onColumnPinningChange(column.id, "left"); }}>{labels.pinLeft}: {column.label} { event.preventDefault(); onColumnPinningChange(column.id, "right"); }}>{labels.pinRight}: {column.label} { event.preventDefault(); onColumnPinningChange(column.id, false); }}>{labels.unpin}: {column.label} : null} + ; })} + + : null} + {enableResetLayout ? <> { event.preventDefault(); onResetColumnLayout(); }}>{labels.resetColumnLayout} : null} + {enableSavedViews ? <>{labels.savedViews} +
    ) => setNewSavedViewName(event.target.value)} placeholder={labels.savedViewName} aria-label={labels.savedViewName} />
    + { event.preventDefault(); if (onCreateSavedView(newSavedViewName.trim())) setNewSavedViewName(""); }}>{labels.createSavedView} + {savedViews.map((view) => renamingSavedViewId === view.id ?
    ) => setRenamedSavedViewName(event.target.value)} aria-label={labels.savedViewName} /> { event.preventDefault(); if (renamedSavedViewName.trim() && onRenameSavedView(view.id, renamedSavedViewName.trim())) setRenamingSavedViewId(null); }}>{labels.saveSavedView}
    : { event.preventDefault(); onApplySavedView(view.id); }}>{view.name} { event.preventDefault(); setRenamingSavedViewId(view.id); setRenamedSavedViewName(view.name); }}>{labels.renameSavedView(view.name)} { event.preventDefault(); onDeleteSavedView(view.id); }}>{labels.deleteSavedView(view.name)})}
    + : null} + ; +} + +function formatValue(value: unknown) { + if (Array.isArray(value)) return value.map(String).join(", "); + if (value && typeof value === "object") { + const range = value as { from?: unknown; to?: unknown }; + if ("from" in range || "to" in range) return [range.from, range.to].filter(Boolean).map(String).join("–"); + } + return String(value); +} From 228aabb6a5f1ceb39c8f76936fb1e8023789744c Mon Sep 17 00:00:00 2001 From: Toby Martin Date: Sun, 9 Aug 2026 02:44:14 +0000 Subject: [PATCH 27/31] fix: preserve toolbar operations accessibility --- .../data-table-toolbar-operations.tsx | 360 +++++++++++++++--- 1 file changed, 316 insertions(+), 44 deletions(-) diff --git a/src/core/data-table/data-table-toolbar-operations.tsx b/src/core/data-table/data-table-toolbar-operations.tsx index f8155e5..c5d38a5 100644 --- a/src/core/data-table/data-table-toolbar-operations.tsx +++ b/src/core/data-table/data-table-toolbar-operations.tsx @@ -35,14 +35,20 @@ type ToolbarDataOperationsProps = { enableColumnPinning: boolean; columnVisibilityOptions: Array; onColumnVisibilityChange?: (columnId: string, visible: boolean) => void; - onColumnPinningChange: (columnId: string, side: DataTableColumnFixed | false) => void; + onColumnPinningChange: ( + columnId: string, + side: DataTableColumnFixed | false, + ) => void; reorderColumn: (sourceColumnId: string, targetColumnId: string) => void; table: Table; onResetColumnLayout: () => void; savedViews: Array; onCreateSavedView: (name: string) => DataTableSavedView | undefined; onApplySavedView: (id: string) => boolean; - onRenameSavedView: (id: string, name: string) => DataTableSavedView | undefined; + onRenameSavedView: ( + id: string, + name: string, + ) => DataTableSavedView | undefined; onDeleteSavedView: (id: string) => boolean; toolbarQueryValue: string; onToolbarQueryValueChange: (value: string) => void; @@ -79,66 +85,332 @@ export default function ToolbarDataOperations({ }: ToolbarDataOperationsProps) { const [columnQuery, setColumnQuery] = React.useState(""); const [newSavedViewName, setNewSavedViewName] = React.useState(""); - const [renamingSavedViewId, setRenamingSavedViewId] = React.useState(null); + const [renamingSavedViewId, setRenamingSavedViewId] = React.useState< + string | null + >(null); const [renamedSavedViewName, setRenamedSavedViewName] = React.useState(""); - const { Button, DropdownMenuCheckboxItem, DropdownMenuGroup, DropdownMenuItem, - DropdownMenuLabel, DropdownMenuSeparator, InputGroup, InputGroupAddon, InputGroupInput } = ui; - const orderedIds = table.getAllLeafColumns().map((column) => column.id).filter((id) => !id.startsWith("__")); + const { + Button, + DropdownMenuCheckboxItem, + DropdownMenuGroup, + DropdownMenuItem, + DropdownMenuLabel, + DropdownMenuSeparator, + InputGroup, + InputGroupAddon, + InputGroupInput, + } = ui; + const orderedIds = table + .getAllLeafColumns() + .map((column) => column.id) + .filter((id) => !id.startsWith("__")); const columns = columnVisibilityOptions.filter((column) => column.label.toLocaleLowerCase().includes(columnQuery.toLocaleLowerCase()), ); const activeCount = activeColumnFilters.length + (toolbarQueryValue ? 1 : 0); if (placement === "chips") { - if (!enableFilterChips || !activeCount) return null; - return
    - {labels.filters} ({activeCount}) - {toolbarQueryValue ? : null} - {activeColumnFilters.map((filter) => )} - -
    ; + if (!enableFilterChips || !activeCount) { + return null; + } + return ( +
    + + {labels.filters} ({activeCount}) + + {toolbarQueryValue ? ( + + ) : null} + {activeColumnFilters.map((filter) => ( + + ))} + +
    + ); } - if (!enableColumnChooser && !enableResetLayout && !enableSavedViews) return null; - const setVisibility = (visible: boolean) => table.setColumnVisibility((current) => { - const next = { ...current }; - for (const column of table.getAllLeafColumns()) if (!column.id.startsWith("__") && column.getCanHide()) next[column.id] = visible; - return next; - }); + if (!enableColumnChooser && !enableResetLayout && !enableSavedViews) { + return null; + } + const setVisibility = (visible: boolean) => + table.setColumnVisibility((current) => { + const next = { ...current }; + for (const column of table.getAllLeafColumns()) { + if (!column.id.startsWith("__") && column.getCanHide()) { + next[column.id] = visible; + } + } + return next; + }); const move = (id: string, direction: -1 | 1) => { const index = orderedIds.indexOf(id); const target = orderedIds[index + direction]; - if (index >= 0 && target) reorderColumn(id, target); + if (index >= 0 && target) { + reorderColumn(id, target); + } }; - return <> - {enableColumnChooser ? <> - {labels.columns} -
    ) => setColumnQuery(event.target.value)} placeholder={labels.searchColumns} aria-label={labels.searchColumns} />
    - - { event.preventDefault(); setVisibility(true); }}>{labels.showAllColumns} - { event.preventDefault(); setVisibility(false); }}>{labels.hideAllColumns} - {columns.map((column) => { const index = orderedIds.indexOf(column.id); return - onColumnVisibilityChange?.(column.id, checked === true)}>{column.label} - { event.preventDefault(); move(column.id, -1); }}>{labels.moveColumnEarlier(column.label)} - { event.preventDefault(); move(column.id, 1); }}>{labels.moveColumnLater(column.label)} - {enableColumnPinning ? <> { event.preventDefault(); onColumnPinningChange(column.id, "left"); }}>{labels.pinLeft}: {column.label} { event.preventDefault(); onColumnPinningChange(column.id, "right"); }}>{labels.pinRight}: {column.label} { event.preventDefault(); onColumnPinningChange(column.id, false); }}>{labels.unpin}: {column.label} : null} - ; })} - - : null} - {enableResetLayout ? <> { event.preventDefault(); onResetColumnLayout(); }}>{labels.resetColumnLayout} : null} - {enableSavedViews ? <>{labels.savedViews} -
    ) => setNewSavedViewName(event.target.value)} placeholder={labels.savedViewName} aria-label={labels.savedViewName} />
    - { event.preventDefault(); if (onCreateSavedView(newSavedViewName.trim())) setNewSavedViewName(""); }}>{labels.createSavedView} - {savedViews.map((view) => renamingSavedViewId === view.id ?
    ) => setRenamedSavedViewName(event.target.value)} aria-label={labels.savedViewName} /> { event.preventDefault(); if (renamedSavedViewName.trim() && onRenameSavedView(view.id, renamedSavedViewName.trim())) setRenamingSavedViewId(null); }}>{labels.saveSavedView}
    : { event.preventDefault(); onApplySavedView(view.id); }}>{view.name} { event.preventDefault(); setRenamingSavedViewId(view.id); setRenamedSavedViewName(view.name); }}>{labels.renameSavedView(view.name)} { event.preventDefault(); onDeleteSavedView(view.id); }}>{labels.deleteSavedView(view.name)})}
    - : null} - ; + return ( + <> + {enableColumnChooser ? ( + <> + + {labels.columns} +
    + + ) => + setColumnQuery(event.target.value) + } + placeholder={labels.searchColumns} + aria-label={labels.searchColumns} + /> + + +
    + + { + event.preventDefault(); + setVisibility(true); + }} + > + {labels.showAllColumns} + + { + event.preventDefault(); + setVisibility(false); + }} + > + {labels.hideAllColumns} + + {columns.map((column) => { + const index = orderedIds.indexOf(column.id); + return ( + + + onColumnVisibilityChange?.( + column.id, + checked === true, + ) + } + > + {column.label} + + { + event.preventDefault(); + move(column.id, -1); + }} + > + {labels.moveColumnEarlier(column.label)} + + { + event.preventDefault(); + move(column.id, 1); + }} + > + {labels.moveColumnLater(column.label)} + + {enableColumnPinning ? ( + <> + { + event.preventDefault(); + onColumnPinningChange(column.id, "left"); + }} + > + {labels.pinLeft}: {column.label} + + { + event.preventDefault(); + onColumnPinningChange(column.id, "right"); + }} + > + {labels.pinRight}: {column.label} + + { + event.preventDefault(); + onColumnPinningChange(column.id, false); + }} + > + {labels.unpin}: {column.label} + + + ) : null} + + ); + })} + + + ) : null} + {enableResetLayout ? ( + <> + + { + event.preventDefault(); + onResetColumnLayout(); + }} + > + {labels.resetColumnLayout} + + + ) : null} + {enableSavedViews ? ( + <> + + {labels.savedViews} +
    + + ) => + setNewSavedViewName(event.target.value) + } + placeholder={labels.savedViewName} + aria-label={labels.savedViewName} + /> + +
    + { + event.preventDefault(); + if (onCreateSavedView(newSavedViewName.trim())) { + setNewSavedViewName(""); + } + }} + > + {labels.createSavedView} + + + {savedViews.map((view) => + renamingSavedViewId === view.id ? ( +
    + + , + ) => setRenamedSavedViewName(event.target.value)} + aria-label={labels.savedViewName} + /> + + { + event.preventDefault(); + if ( + renamedSavedViewName.trim() && + onRenameSavedView( + view.id, + renamedSavedViewName.trim(), + ) + ) { + setRenamingSavedViewId(null); + } + }} + > + {labels.saveSavedView} + +
    + ) : ( + + { + event.preventDefault(); + onApplySavedView(view.id); + }} + > + {view.name} + + { + event.preventDefault(); + setRenamingSavedViewId(view.id); + setRenamedSavedViewName(view.name); + }} + > + {labels.renameSavedView(view.name)} + + { + event.preventDefault(); + onDeleteSavedView(view.id); + }} + > + {labels.deleteSavedView(view.name)} + + + ), + )} +
    + + ) : null} + + ); } function formatValue(value: unknown) { - if (Array.isArray(value)) return value.map(String).join(", "); + if (Array.isArray(value)) { + return value.map(String).join(", "); + } if (value && typeof value === "object") { const range = value as { from?: unknown; to?: unknown }; - if ("from" in range || "to" in range) return [range.from, range.to].filter(Boolean).map(String).join("–"); + if ("from" in range || "to" in range) { + return [range.from, range.to] + .filter(Boolean) + .map(String) + .join("–"); + } } return String(value); } From df20fd2b24ff23ce7652aeae382c8ebbf43ae135 Mon Sep 17 00:00:00 2001 From: Toby Martin Date: Sun, 9 Aug 2026 02:47:02 +0000 Subject: [PATCH 28/31] feat: derive numeric facet bounds --- .../data-table-grouping-faceting.test.tsx | 27 +++++++++++++++++ .../data-table/use-data-table-instance.ts | 29 +++++++++++++++---- .../use-data-table-toolbar-features.ts | 8 +++-- 3 files changed, 56 insertions(+), 8 deletions(-) diff --git a/src/core/data-table/data-table-grouping-faceting.test.tsx b/src/core/data-table/data-table-grouping-faceting.test.tsx index d149528..1e6893f 100644 --- a/src/core/data-table/data-table-grouping-faceting.test.tsx +++ b/src/core/data-table/data-table-grouping-faceting.test.tsx @@ -107,6 +107,33 @@ describe("DataTable grouping and faceting", () => { expect(screen.queryByText("Remote")).toBeNull(); }); + it("derives local numeric facet bounds when range bounds are not configured", () => { + const apiRef = React.createRef>(); + render( + row.id} + />, + ); + + expect( + apiRef.current + ?.getTable() + ?.getColumn("score") + ?.getFacetedMinMaxValues(), + ).toEqual([2, 7]); + expect(screen.getByLabelText("Score: From").getAttribute("min")).toBe("2"); + expect(screen.getByLabelText("Score: To").getAttribute("max")).toBe("7"); + }); + it("reorders grouped columns from the accessible grouping bar", () => { const apiRef = React.createRef>(); render( diff --git a/src/core/data-table/use-data-table-instance.ts b/src/core/data-table/use-data-table-instance.ts index 173a543..b01cb86 100644 --- a/src/core/data-table/use-data-table-instance.ts +++ b/src/core/data-table/use-data-table-instance.ts @@ -2,6 +2,7 @@ import * as React from "react"; import { getCoreRowModel, getExpandedRowModel, + getFacetedMinMaxValues, getFacetedRowModel, getFacetedUniqueValues, getFilteredRowModel, @@ -347,11 +348,18 @@ export function useDataTableInstance({ [setLocalColumnSizing], ); - const needsFaceting = React.useMemo( - () => - getDataTableLeafColumns( + const facetingNeeds = React.useMemo( + () => { + let uniqueValues = false; + let minMaxValues = false; + for (const { column } of getDataTableLeafColumns( tableColumns as DataTableProps["columns"], - ).some(({ column }) => column.meta?.filter?.type === "faceted"), + )) { + uniqueValues ||= column.meta?.filter?.type === "faceted"; + minMaxValues ||= column.meta?.filter?.type === "numberRange"; + } + return { minMaxValues, uniqueValues }; + }, [tableColumns], ); @@ -362,9 +370,18 @@ export function useDataTableInstance({ getCoreRowModel: getCoreRowModel(), getFilteredRowModel: manualFiltering ? undefined : getFilteredRowModel(), getFacetedRowModel: - needsFaceting && !manualFiltering ? getFacetedRowModel() : undefined, + (facetingNeeds.uniqueValues || facetingNeeds.minMaxValues) && + !manualFiltering + ? getFacetedRowModel() + : undefined, getFacetedUniqueValues: - needsFaceting && !manualFiltering ? getFacetedUniqueValues() : undefined, + facetingNeeds.uniqueValues && !manualFiltering + ? getFacetedUniqueValues() + : undefined, + getFacetedMinMaxValues: + facetingNeeds.minMaxValues && !manualFiltering + ? getFacetedMinMaxValues() + : undefined, getGroupedRowModel: currentGrouping.length && !manualGrouping ? getGroupedRowModel() : undefined, getSortedRowModel: manualSorting ? undefined : getSortedRowModel(), diff --git a/src/core/data-table/use-data-table-toolbar-features.ts b/src/core/data-table/use-data-table-toolbar-features.ts index 76c6154..a77dc8b 100644 --- a/src/core/data-table/use-data-table-toolbar-features.ts +++ b/src/core/data-table/use-data-table-toolbar-features.ts @@ -101,6 +101,10 @@ export function useDataTableToolbarFeatures({ : startCase(id)); const state = currentColumnFilters.find((item) => item.id === id); const configuredFacetOptions = filter.faceting?.options; + const facetedMinMax = + filter.type === "numberRange" + ? table.getColumn(id)?.getFacetedMinMaxValues() + : undefined; const rawOptions = filter.type === "faceted" && configuredFacetOptions ? typeof configuredFacetOptions === "function" @@ -132,8 +136,8 @@ export function useDataTableToolbarFeatures({ searchPlaceholder: filter.faceting?.searchPlaceholder, trueLabel: filter.trueLabel, falseLabel: filter.falseLabel, - min: filter.min, - max: filter.max, + min: filter.min ?? facetedMinMax?.[0], + max: filter.max ?? facetedMinMax?.[1], step: filter.step, }, ]; From 1e5188f6bd667afb3566b0531c826344eb0f4b1e Mon Sep 17 00:00:00 2001 From: Toby Martin Date: Sun, 9 Aug 2026 02:54:04 +0000 Subject: [PATCH 29/31] feat: include grouping in saved views --- src/core/data-table/data-table-saved-views.ts | 3 +++ src/core/data-table/data-table-state-api.test.tsx | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/src/core/data-table/data-table-saved-views.ts b/src/core/data-table/data-table-saved-views.ts index 2e31d5f..03abb9d 100644 --- a/src/core/data-table/data-table-saved-views.ts +++ b/src/core/data-table/data-table-saved-views.ts @@ -13,6 +13,7 @@ const DEFAULT_SLICES: Array = [ "sorting", "columnVisibility", "columnFilters", + "grouping", "columnOrder", "columnPinning", "rowPinning", @@ -263,6 +264,8 @@ function validateState( } const filters = validateFilters(value.columnFilters); if (selected.has("columnFilters") && filters) state.columnFilters = filters; + const grouping = validateStringArray(value.grouping); + if (selected.has("grouping") && grouping) state.grouping = grouping; const expanded = value.expanded === true ? true diff --git a/src/core/data-table/data-table-state-api.test.tsx b/src/core/data-table/data-table-state-api.test.tsx index ab3b1e4..903b8ab 100644 --- a/src/core/data-table/data-table-state-api.test.tsx +++ b/src/core/data-table/data-table-state-api.test.tsx @@ -744,6 +744,7 @@ describe("DataTable unified state API", () => { act(() => { apiRef.current?.restore({ sorting: [{ id: "name", desc: true }], + grouping: ["name"], columnVisibility: { name: false }, pagination: { pageIndex: 1, pageSize: 1 }, rowSelection: { "1": true }, @@ -758,6 +759,7 @@ describe("DataTable unified state API", () => { expect(savedView?.name).toBe("My view"); expect(savedView?.state.sorting).toEqual([{ id: "name", desc: true }]); + expect(savedView?.state.grouping).toEqual(["name"]); expect(savedView?.state.columnVisibility).toEqual({ name: false }); expect(savedView?.state.pagination).toBeUndefined(); expect(savedView?.state.rowSelection).toBeUndefined(); @@ -771,6 +773,7 @@ describe("DataTable unified state API", () => { act(() => { apiRef.current?.restore({ sorting: [], + grouping: [], columnVisibility: {}, }); }); @@ -780,6 +783,7 @@ describe("DataTable unified state API", () => { expect(apiRef.current?.getState().sorting).toEqual([ { id: "name", desc: true }, ]); + expect(apiRef.current?.getState().grouping).toEqual(["name"]); expect(onApply).toHaveBeenCalledWith( expect.objectContaining({ id: savedView?.id }), ); From bca78a38652384067777b2d9bdff7a6304fe210a Mon Sep 17 00:00:00 2001 From: Toby Martin Date: Sun, 9 Aug 2026 03:00:04 +0000 Subject: [PATCH 30/31] release: prepare v4.4.0 --- CHANGELOG.md | 87 ++++ README.md | 59 ++- api-snapshots/public-api.md | 388 +++++++++++++++--- dist/adapter-virtual.d.ts | 6 +- dist/adapter-virtual.js | 2 +- dist/adapter.d.ts | 6 +- dist/adapter.js | 2 +- dist/advanced.d.ts | 153 +++++-- dist/advanced.js | 2 +- dist/advanced.js.map | 2 +- dist/{chunk-MYQZYDHU.js => chunk-2NQXDLBI.js} | 4 +- dist/chunk-2NQXDLBI.js.map | 1 + dist/chunk-4P45F2OY.js | 3 + dist/chunk-4P45F2OY.js.map | 1 + dist/chunk-4UITEBLL.js | 2 + dist/chunk-4UITEBLL.js.map | 1 + dist/chunk-67Y57KCA.js | 2 - dist/chunk-67Y57KCA.js.map | 1 - dist/chunk-6PPFYQ6Q.js.map | 1 - dist/chunk-7FUCHMMB.js | 2 + ...-LDAX7PX5.js.map => chunk-7FUCHMMB.js.map} | 2 +- dist/chunk-BQSRJQTY.js | 2 + ...-HHUJMI3H.js.map => chunk-BQSRJQTY.js.map} | 2 +- dist/chunk-BYTOUBQ7.js | 3 - dist/chunk-BYTOUBQ7.js.map | 1 - dist/chunk-CVR2ZXHQ.js | 2 + dist/chunk-CVR2ZXHQ.js.map | 1 + dist/chunk-DV3HO2TR.js.map | 1 - dist/chunk-GSCYQ624.js | 2 - dist/chunk-GSCYQ624.js.map | 1 - dist/chunk-HHUJMI3H.js | 2 - dist/chunk-K7SNDVV2.js | 2 + dist/chunk-K7SNDVV2.js.map | 1 + dist/{chunk-6PPFYQ6Q.js => chunk-KA26IREG.js} | 4 +- dist/chunk-KA26IREG.js.map | 1 + dist/chunk-KDHJA6AH.js | 2 + dist/chunk-KDHJA6AH.js.map | 1 + dist/chunk-LDAX7PX5.js | 2 - dist/chunk-MYQZYDHU.js.map | 1 - dist/chunk-NLQJKISS.js | 2 + dist/chunk-NLQJKISS.js.map | 1 + dist/{chunk-DV3HO2TR.js => chunk-S4J2MG4T.js} | 4 +- dist/chunk-S4J2MG4T.js.map | 1 + dist/chunk-UKIIMIBW.js | 2 - dist/chunk-UKIIMIBW.js.map | 1 - dist/chunk-V5A4DWYZ.js | 2 + dist/chunk-V5A4DWYZ.js.map | 1 + dist/chunk-XTVBESM5.js | 2 + dist/chunk-XTVBESM5.js.map | 1 + dist/chunk-ZA7LQ2JH.js | 2 - dist/chunk-ZA7LQ2JH.js.map | 1 - dist/data-source.d.ts | 23 +- dist/data-source.js | 2 +- dist/data-source.js.map | 2 +- dist/data-table-auto-page-size-EICVZJQ5.js | 2 + .../data-table-auto-page-size-EICVZJQ5.js.map | 1 + dist/data-table-clipboard-SFXQFZS3.js | 6 + dist/data-table-clipboard-SFXQFZS3.js.map | 1 + dist/data-table-state-overlay-AQ7VU6EM.js | 2 + dist/data-table-state-overlay-AQ7VU6EM.js.map | 1 + .../data-table-toolbar-operations-IDEGCKBK.js | 2 + ...a-table-toolbar-operations-IDEGCKBK.js.map | 1 + .../data-table-virtual-card-panel-KF2P5D3K.js | 2 + ...-table-virtual-card-panel-KF2P5D3K.js.map} | 2 +- .../data-table-virtual-card-panel-TLC53T3T.js | 2 - ...data-table-virtual-table-panel-LEQ3RGTM.js | 2 + ...table-virtual-table-panel-LEQ3RGTM.js.map} | 2 +- ...data-table-virtual-table-panel-TTKFMOEY.js | 2 - dist/heroui-virtual.d.ts | 4 +- dist/heroui-virtual.js | 2 +- dist/heroui-virtual.js.map | 2 +- dist/heroui.d.ts | 4 +- dist/heroui.js | 2 +- dist/heroui.js.map | 2 +- dist/index.d.ts | 4 +- dist/index.js | 2 +- dist/index.js.map | 2 +- dist/thegridcn-virtual.d.ts | 4 +- dist/thegridcn-virtual.js | 2 +- dist/thegridcn-virtual.js.map | 2 +- dist/thegridcn.d.ts | 4 +- dist/thegridcn.js | 2 +- dist/thegridcn.js.map | 2 +- dist/types.d.ts | 199 ++++++++- ...kit-HehdZfvO.d.ts => ui-kit-C6Z8X6oi.d.ts} | 1 + dist/virtual.d.ts | 4 +- dist/virtual.js | 2 +- dist/virtual.js.map | 2 +- docs/API.md | 46 ++- docs/Migration.md | 40 ++ docs/Roadmap.md | 93 +++-- package.json | 2 +- pnpm-lock.yaml | 53 +-- pnpm-workspace.yaml | 5 + scripts/check-bundle-size.mjs | 2 +- 95 files changed, 1069 insertions(+), 253 deletions(-) rename dist/{chunk-MYQZYDHU.js => chunk-2NQXDLBI.js} (94%) create mode 100644 dist/chunk-2NQXDLBI.js.map create mode 100644 dist/chunk-4P45F2OY.js create mode 100644 dist/chunk-4P45F2OY.js.map create mode 100644 dist/chunk-4UITEBLL.js create mode 100644 dist/chunk-4UITEBLL.js.map delete mode 100644 dist/chunk-67Y57KCA.js delete mode 100644 dist/chunk-67Y57KCA.js.map delete mode 100644 dist/chunk-6PPFYQ6Q.js.map create mode 100644 dist/chunk-7FUCHMMB.js rename dist/{chunk-LDAX7PX5.js.map => chunk-7FUCHMMB.js.map} (99%) create mode 100644 dist/chunk-BQSRJQTY.js rename dist/{chunk-HHUJMI3H.js.map => chunk-BQSRJQTY.js.map} (92%) delete mode 100644 dist/chunk-BYTOUBQ7.js delete mode 100644 dist/chunk-BYTOUBQ7.js.map create mode 100644 dist/chunk-CVR2ZXHQ.js create mode 100644 dist/chunk-CVR2ZXHQ.js.map delete mode 100644 dist/chunk-DV3HO2TR.js.map delete mode 100644 dist/chunk-GSCYQ624.js delete mode 100644 dist/chunk-GSCYQ624.js.map delete mode 100644 dist/chunk-HHUJMI3H.js create mode 100644 dist/chunk-K7SNDVV2.js create mode 100644 dist/chunk-K7SNDVV2.js.map rename dist/{chunk-6PPFYQ6Q.js => chunk-KA26IREG.js} (94%) create mode 100644 dist/chunk-KA26IREG.js.map create mode 100644 dist/chunk-KDHJA6AH.js create mode 100644 dist/chunk-KDHJA6AH.js.map delete mode 100644 dist/chunk-LDAX7PX5.js delete mode 100644 dist/chunk-MYQZYDHU.js.map create mode 100644 dist/chunk-NLQJKISS.js create mode 100644 dist/chunk-NLQJKISS.js.map rename dist/{chunk-DV3HO2TR.js => chunk-S4J2MG4T.js} (69%) create mode 100644 dist/chunk-S4J2MG4T.js.map delete mode 100644 dist/chunk-UKIIMIBW.js delete mode 100644 dist/chunk-UKIIMIBW.js.map create mode 100644 dist/chunk-V5A4DWYZ.js create mode 100644 dist/chunk-V5A4DWYZ.js.map create mode 100644 dist/chunk-XTVBESM5.js create mode 100644 dist/chunk-XTVBESM5.js.map delete mode 100644 dist/chunk-ZA7LQ2JH.js delete mode 100644 dist/chunk-ZA7LQ2JH.js.map create mode 100644 dist/data-table-auto-page-size-EICVZJQ5.js create mode 100644 dist/data-table-auto-page-size-EICVZJQ5.js.map create mode 100644 dist/data-table-clipboard-SFXQFZS3.js create mode 100644 dist/data-table-clipboard-SFXQFZS3.js.map create mode 100644 dist/data-table-state-overlay-AQ7VU6EM.js create mode 100644 dist/data-table-state-overlay-AQ7VU6EM.js.map create mode 100644 dist/data-table-toolbar-operations-IDEGCKBK.js create mode 100644 dist/data-table-toolbar-operations-IDEGCKBK.js.map create mode 100644 dist/data-table-virtual-card-panel-KF2P5D3K.js rename dist/{data-table-virtual-card-panel-TLC53T3T.js.map => data-table-virtual-card-panel-KF2P5D3K.js.map} (62%) delete mode 100644 dist/data-table-virtual-card-panel-TLC53T3T.js create mode 100644 dist/data-table-virtual-table-panel-LEQ3RGTM.js rename dist/{data-table-virtual-table-panel-TTKFMOEY.js.map => data-table-virtual-table-panel-LEQ3RGTM.js.map} (62%) delete mode 100644 dist/data-table-virtual-table-panel-TTKFMOEY.js rename dist/{ui-kit-HehdZfvO.d.ts => ui-kit-C6Z8X6oi.d.ts} (99%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 42d0171..ea4bb7e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,93 @@ No changes yet. +## 4.4.0 - 2026-08-09 + +Version 4.4.0 completes the core Phase 2–4 modernization work with additive, +opt-in APIs. It removes no public prop, type, or package entrypoint. + +### Features + +- Added local faceted option counts, searchable faceted multi-select filters, + server-supplied facet options, and automatically derived numeric facet + bounds when range limits are not configured. +- Added controlled and manual grouping, grouped-column modes, built-in and + custom aggregation functions, grouped/aggregated/placeholder rendering, + accessible group/ungroup controls, and a reorderable grouping bar. +- Expanded `data-table-pro/data-source` requests with global filtering, + grouping, aggregation, and expansion paths, and results with stable row IDs, + aggregates, facets, and metadata. The generated `tableProps` now wires the + corresponding manual table contracts. +- Added opt-in ARIA grid semantics with one roving cell tab stop, complete + arrow/Home/End/Page navigation, virtual/server row and column metadata, and + focus restoration from interactive descendants. +- Added controlled or uncontrolled rectangular cell-range selection through + pointer drag and Shift+keyboard navigation, selection styling/ARIA state, + imperative selection commands, and app-owned undo/redo command hooks. +- Added formula-safe TSV/CSV clipboard copy, selected-range copy, opt-in parsed + paste callbacks, and flattened expanded-row ordering. +- Added asynchronous row validation, field/general errors, dirty and pending + states, Enter/Escape commit policy, optimistic updates, rollback, and save + lifecycle callbacks to row editing. +- Added opt-in toolbar data operations: a searchable column chooser, bulk + visibility, group-safe reordering, pinning, layout reset, active-filter + chips/counts, and create/apply/rename/delete controls for named saved views. +- Added opt-in viewport-driven automatic page sizing, explicit + empty/error/retry state handling, and print/fullscreen toolbar controls and + API commands. + +### Performance and accessibility + +- Cached normalized search values by immutable row/column identity and + deferred only client-owned filtering, leaving controlled server callbacks + immediate. +- Dynamically measured variable-height virtual table rows and retained stable + row keys and scroll anchors. +- Added development diagnostics for actual array-wrapper identity churn and a + reproducible 1k–100k row / 20–500 column benchmark matrix. +- Moved clipboard handling, enhanced toolbar operations, automatic page-size + observation, and error overlays behind first-use chunks. Default tables do + not request those opt-in implementations. +- Added real-browser interactive-grid navigation and pointer range-selection + coverage alongside the existing adapter/theme screenshots and axe audits. +- Pinned patched transitive releases of brace-expansion, fast-uri, Hono, + js-yaml, and nanoid after newly published advisories; `pnpm audit` reports no + known vulnerabilities. + +### Compatibility + +- No public prop, type, package entrypoint, default semantic mode, or default + toolbar behavior was removed or changed. +- `DataTableState.grouping` is optional so existing complete state object + literals remain source-compatible. All new behaviors are disabled unless + their corresponding prop or controlled state is supplied. +- `DataTableApi.copyToClipboard()` already returned a promise; loading its + implementation asynchronously does not change that contract. +- Column virtualization remains intentionally deferred. A partial body-only + implementation would break native grouped headers, pinned/resized columns, + detail rows, and screen-reader geometry; the wide-column benchmark remains + the supported decision tool for responsive visibility/server projection. +- A standalone per-cell commit model, built-in runtime filter-operator builder, + and XLSX plugin remain optional future work. Existing row editing exposes + per-cell editors and app-owned validation/commit hooks. + +### Validation + +- 310 unit/integration tests with enforced coverage +- lint and package/demo typechecks +- deterministic package build and public API snapshot +- packed-consumer and demo production builds +- clean `pnpm audit` +- base, adapter, URL-state, data-source, demo JavaScript, and CSS budgets +- browser keyboard/range tests plus six adapter/theme screenshot and axe cases +- The measured base static graph is 46.1 KiB gzip. The ceiling moves from + 42 KiB to 48 KiB to cover the grouping, grid-navigation, range-selection, + editing, and state coordination that must remain in the shared runtime while + retaining 1.9 KiB of regression headroom. Clipboard (2.04 KB minified), + toolbar operations (4.60 KB), auto sizing (1.34 KB), error overlays + (1.01 KB), virtualization, and the data source remain separately loaded or + independently importable. + ## 4.3.0 - 2026-08-09 ### Features diff --git a/README.md b/README.md index b38163a..03e444d 100644 --- a/README.md +++ b/README.md @@ -28,14 +28,15 @@ Dedicated subpath exports are also available: - `data-table-pro/types`: public TypeScript types The current feature set includes client/manual filtering with local or -server-provided facets, grouping and aggregation, sorting and -pagination, unknown-total pagination, selection, detail panels, table/card -views, row/card virtualization, nested column groups, column +server-provided facets, grouping and aggregation, sorting and pagination, +unknown-total and automatic page sizing, row and cell-range selection, +interactive-grid keyboard navigation, detail panels, table/card views, +row/card virtualization, nested column groups, column sizing/order/pinning/visibility, versioned persistence, named saved views, -versioned URL state, CSV export, inline row editing, density controls, -loading/empty states, summary rows, alternate row shading, infinite loading, -typed server data sources, and host-owned -drag/upload integrations. See +versioned URL state, CSV and clipboard export, inline row editing, density +controls, loading/empty/error states, summary rows, alternate row shading, +infinite loading, typed server data sources, and host-owned drag/upload +integrations. See [`docs/API.md`](./docs/API.md) for the complete contract. ## Breaking Changes In 3.0.0 @@ -53,14 +54,22 @@ compatibility-first major that releases the accumulated state, persistence, quality, dependency, accessibility, and package-splitting work after 3.0.9. The previously planned API cleanup is deferred to a future 5.0 release. +## 4.4.0 Compatibility + +Version 4.4.0 is an additive minor release. Native table semantics and the +existing toolbar remain the defaults; grouping, interactive-grid navigation, +cell ranges, clipboard/paste, enhanced data operations, auto page sizing, +print/fullscreen controls, and error overlays are individually opt-in. No +public prop, type, or entrypoint was removed. + ## Installation ```bash -pnpm add github:Dastari/data-table-pro#v4.3.0 +pnpm add github:Dastari/data-table-pro#v4.4.0 ``` This package is installed from GitHub refs. It is not published to npm. -Release tags such as `v4.3.0` include committed `dist/` output, so consumers +Release tags such as `v4.4.0` include committed `dist/` output, so consumers do not need to allow package build scripts during install. Peer dependencies: @@ -581,6 +590,38 @@ const columns: Array> = [ />; ``` +### Interactive grid, ranges, and data operations + +Keep the default native table for reading/browsing. Opt into grid mode for a +keyboard-operated data workspace, then enable rectangular selection and +clipboard handling independently: + +```tsx + row.id} + interactiveGrid + enableCellSelection + clipboard={{ + copy: true, + paste: { + onPaste: ({ values }) => applyPastedValues(values), + }, + }} + toolbarDataOperations + autoPageSize + enablePrint + enableFullscreen + stateOverlay={{ error, onRetry: reload }} +/> +``` + +Grid mode provides roving cell focus and arrow/Home/End/Page navigation. Shift +extends the cell range, Ctrl/Cmd+C copies the range as formula-safe TSV, and +optional undo/redo callbacks remain application-owned. Enhanced toolbar, +clipboard, auto-size, and error-overlay implementations are first-use chunks. + ## Demo App Run the bundled demo workbench: diff --git a/api-snapshots/public-api.md b/api-snapshots/public-api.md index 822b22d..229dc93 100644 --- a/api-snapshots/public-api.md +++ b/api-snapshots/public-api.md @@ -68,10 +68,10 @@ This file is generated by `pnpm api:update`. Review changes to it as public API ```ts import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableAccessibilityOptions, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableAutoPageSizeConfig, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellCoordinate, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableCellSelection, DataTableClipboardConfig, DataTableClipboardCopyOptions, DataTableClipboardCopyScope, DataTableClipboardPasteContext, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFacetedFilterOptions, DataTableFileUploadConfig, DataTableGridCommandContext, DataTableGridCommands, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableInteractiveGridOptions, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableStateOverlay, DataTableStateOverlayContext, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarDataOperations, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; -declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, grouping, onGroupingChange, manualGrouping, enableGrouping, groupedColumnMode, aggregationFns, pageIndex, pageSize, autoPageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, clipboard, enableCellSelection, cellSelection, defaultCellSelection, onCellSelectionChange, gridCommands, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, toolbarDataOperations, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, enablePrint, enableFullscreen, emptyState, stateOverlay, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; export { DataTable, DataTableProps }; ``` @@ -81,10 +81,10 @@ export { DataTable, DataTableProps }; ```ts import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableAccessibilityOptions, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableAutoPageSizeConfig, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellCoordinate, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableCellSelection, DataTableClipboardConfig, DataTableClipboardCopyOptions, DataTableClipboardCopyScope, DataTableClipboardPasteContext, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFacetedFilterOptions, DataTableFileUploadConfig, DataTableGridCommandContext, DataTableGridCommands, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableInteractiveGridOptions, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableStateOverlay, DataTableStateOverlayContext, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarDataOperations, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; -declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, grouping, onGroupingChange, manualGrouping, enableGrouping, groupedColumnMode, aggregationFns, pageIndex, pageSize, autoPageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, clipboard, enableCellSelection, cellSelection, defaultCellSelection, onCellSelectionChange, gridCommands, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, toolbarDataOperations, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, enablePrint, enableFullscreen, emptyState, stateOverlay, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; export { DataTable, DataTableProps }; ``` @@ -94,10 +94,10 @@ export { DataTable, DataTableProps }; ```ts import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableAccessibilityOptions, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableAutoPageSizeConfig, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellCoordinate, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableCellSelection, DataTableClipboardConfig, DataTableClipboardCopyOptions, DataTableClipboardCopyScope, DataTableClipboardPasteContext, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFacetedFilterOptions, DataTableFileUploadConfig, DataTableGridCommandContext, DataTableGridCommands, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableInteractiveGridOptions, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableStateOverlay, DataTableStateOverlayContext, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarDataOperations, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; -declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, grouping, onGroupingChange, manualGrouping, enableGrouping, groupedColumnMode, aggregationFns, pageIndex, pageSize, autoPageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, clipboard, enableCellSelection, cellSelection, defaultCellSelection, onCellSelectionChange, gridCommands, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, toolbarDataOperations, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, enablePrint, enableFullscreen, emptyState, stateOverlay, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; export { DataTable, DataTableProps }; ``` @@ -107,10 +107,10 @@ export { DataTable, DataTableProps }; ```ts import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableAccessibilityOptions, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableAutoPageSizeConfig, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellCoordinate, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableCellSelection, DataTableClipboardConfig, DataTableClipboardCopyOptions, DataTableClipboardCopyScope, DataTableClipboardPasteContext, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFacetedFilterOptions, DataTableFileUploadConfig, DataTableGridCommandContext, DataTableGridCommands, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableInteractiveGridOptions, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableStateOverlay, DataTableStateOverlayContext, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarDataOperations, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; -declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, grouping, onGroupingChange, manualGrouping, enableGrouping, groupedColumnMode, aggregationFns, pageIndex, pageSize, autoPageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, clipboard, enableCellSelection, cellSelection, defaultCellSelection, onCellSelectionChange, gridCommands, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, toolbarDataOperations, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, enablePrint, enableFullscreen, emptyState, stateOverlay, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; export { DataTable, DataTableProps }; ``` @@ -120,10 +120,10 @@ export { DataTable, DataTableProps }; ```ts import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableAccessibilityOptions, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableAutoPageSizeConfig, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellCoordinate, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableCellSelection, DataTableClipboardConfig, DataTableClipboardCopyOptions, DataTableClipboardCopyScope, DataTableClipboardPasteContext, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFacetedFilterOptions, DataTableFileUploadConfig, DataTableGridCommandContext, DataTableGridCommands, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableInteractiveGridOptions, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableStateOverlay, DataTableStateOverlayContext, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarDataOperations, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; -declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, grouping, onGroupingChange, manualGrouping, enableGrouping, groupedColumnMode, aggregationFns, pageIndex, pageSize, autoPageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, clipboard, enableCellSelection, cellSelection, defaultCellSelection, onCellSelectionChange, gridCommands, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, toolbarDataOperations, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, enablePrint, enableFullscreen, emptyState, stateOverlay, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; export { DataTable, DataTableProps }; ``` @@ -133,10 +133,10 @@ export { DataTable, DataTableProps }; ```ts import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableAccessibilityOptions, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableAutoPageSizeConfig, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellCoordinate, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableCellSelection, DataTableClipboardConfig, DataTableClipboardCopyOptions, DataTableClipboardCopyScope, DataTableClipboardPasteContext, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFacetedFilterOptions, DataTableFileUploadConfig, DataTableGridCommandContext, DataTableGridCommands, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableInteractiveGridOptions, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableStateOverlay, DataTableStateOverlayContext, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarDataOperations, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; -declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, grouping, onGroupingChange, manualGrouping, enableGrouping, groupedColumnMode, aggregationFns, pageIndex, pageSize, autoPageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, clipboard, enableCellSelection, cellSelection, defaultCellSelection, onCellSelectionChange, gridCommands, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, toolbarDataOperations, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, enablePrint, enableFullscreen, emptyState, stateOverlay, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; export { DataTable, DataTableProps }; ``` @@ -220,10 +220,10 @@ export { type DataTableUrlEnhancedState, type DataTableUrlStateMigrationPayload, export { createDataTable, primitiveUiKit } from './adapter.js'; import * as React from 'react'; import * as _tanstack_react_table from '@tanstack/react-table'; -import { ExpandedState, Row, OnChangeFn, ColumnSizingState, Column, Table, RowPinningPosition, Cell, PaginationState, SortingState, Header, Updater, ColumnDef, ColumnFiltersState, ColumnOrderState, ColumnPinningState, RowPinningState, VisibilityState, FilterFnOption } from '@tanstack/react-table'; -import { DataTableProps, DataTableLabels, DataTableColumnDef, DataTableDensity, DataTableRowLoadingState, DataTableEditableRowsConfig, DataTableRowAction, DataTableDetailPanel } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDragAndDropConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowClassNameContext, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; -import { D as DataTableUiKit, a as DataTableUiClassNames } from './ui-kit-HehdZfvO.js'; +import { ExpandedState, Row, OnChangeFn, ColumnSizingState, Column, RowPinningPosition, Cell, Table, PaginationState, SortingState, Header, Updater, ColumnDef, ColumnFiltersState, ColumnOrderState, ColumnPinningState, RowPinningState, GroupingState, VisibilityState, FilterFnOption } from '@tanstack/react-table'; +import { DataTableProps, DataTableLabels, DataTableColumnDef, DataTableDensity, DataTableRowLoadingState, DataTableCellSelection, DataTableSavedView, DataTableEditableRowsConfig, DataTableRowAction, DataTableDetailPanel } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableAccessibilityOptions, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableAutoPageSizeConfig, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellCoordinate, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableClipboardConfig, DataTableClipboardCopyOptions, DataTableClipboardCopyScope, DataTableClipboardPasteContext, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDragAndDropConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFacetedFilterOptions, DataTableFileUploadConfig, DataTableGridCommandContext, DataTableGridCommands, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableInteractiveGridOptions, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowClassNameContext, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableStateOverlay, DataTableStateOverlayContext, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarDataOperations, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +import { D as DataTableUiKit, a as DataTableUiClassNames } from './ui-kit-C6Z8X6oi.js'; type DataTableCardPanelProps = { cardClassName: string | undefined; @@ -257,6 +257,7 @@ type DataTableCardPanelProps = { setCurrentDetailExpanded: OnChangeFn; setEditingRowId: React.Dispatch>; shouldRenderInitialLoading: boolean; + stateOverlayNode?: React.ReactNode; tableContainerClassName: string | undefined; uiClassNames: DataTableUiClassNames; virtualization: DataTableProps["virtualization"]; @@ -295,10 +296,70 @@ declare function useColumnLayout({ columns, columnSizing, editableRows, e getColumnLayout: (columnId: string) => DataTableColumnLayout; }; +type DataTableRowEditingContext = { + cancel: () => void; + clearError: (columnId: string) => void; + commit: (row: TData) => void; + errors: Record; + isDirty: boolean; + isPending: boolean; + cancelOnEscape: boolean; + commitOnEnter: boolean; +}; +type DataTableBodyRowProps = { + columnLayouts: ReadonlyMap; + components: Pick; + currentDensity: DataTableDensity; + draftValues: Record; + editingContext?: DataTableRowEditingContext; + dragAndDrop: DataTableProps["dragAndDrop"]; + explicitCustomCellColumnIds: ReadonlySet; + getRowClassName: DataTableProps["getRowClassName"]; + groupToggleLabel: string; + gridMode: boolean; + gridRowAriaIndex: number; + gridRowIndex: number; + activeGridCell: { + row: number; + column: number; + }; + cellSelectionEnabled: boolean; + isGridCellSelected: (row: number, column: number) => boolean; + onGridCellFocus: (cell: { + row: number; + column: number; + }) => void; + onGridCellKeyDown: (event: React.KeyboardEvent, row: number, column: number) => void; + onGridCellPointerDown: (event: React.PointerEvent, row: number, column: number) => void; + onGridCellPointerEnter: (event: React.PointerEvent, row: number, column: number) => void; + isDraggable: boolean; + isDetailExpanded: boolean; + isEditing: boolean; + isExpanded: boolean; + isInitialLoadingRow: boolean; + isSelected: boolean; + loadingState: DataTableRowLoadingState | undefined; + onRowClick: DataTableProps["onRowClick"]; + pinnedPosition?: Exclude; + originalRow: TData; + detailPanel: DataTableProps["detailPanel"]; + row: Row; + rowIndex: number; + setDraftValues: React.Dispatch>>; + stripedRows: boolean; + uiClassNames: DataTableUiClassNames; + visibleCells: Array>; + visibleLeafColumnCount: number; +}; +declare function DataTableBodyRowInner({ columnLayouts, components, currentDensity, draftValues, editingContext, dragAndDrop, explicitCustomCellColumnIds, getRowClassName, groupToggleLabel, gridMode, gridRowAriaIndex, gridRowIndex, activeGridCell, cellSelectionEnabled, isGridCellSelected, onGridCellFocus, onGridCellKeyDown, onGridCellPointerDown, onGridCellPointerEnter, isDraggable, isDetailExpanded, isEditing, isExpanded, isInitialLoadingRow, isSelected, loadingState, onRowClick, pinnedPosition, originalRow, detailPanel, row, rowIndex, setDraftValues, stripedRows, uiClassNames, visibleCells, visibleLeafColumnCount, }: DataTableBodyRowProps): React.JSX.Element; +declare const DataTableBodyRow: typeof DataTableBodyRowInner; + type DataTableTablePanelProps = { ariaDescribedBy: string | undefined; ariaLabelledBy: string | undefined; bodyRowComponents: Pick; + cellSelection: DataTableCellSelection | null; + cellSelectionEnabled: boolean; columnLayouts: ReadonlyMap; columnGroupHeaderHeight: DataTableProps["columnGroupHeaderHeight"]; currentDensity: DataTableDensity; @@ -310,12 +371,18 @@ type DataTableTablePanelProps = { draggedColumnIdRef: React.RefObject; draftValues: Record; editingRowId: string | null; + editingContext?: DataTableRowEditingContext; emptyNode: React.ReactNode; enableColumnReordering: boolean; enableColumnResizing: boolean; explicitCustomCellColumnIds: ReadonlySet; fillMinWidth: number; flexGrow: boolean; + gridMode: boolean; + gridPageSize?: number; + gridRowOffset: number; + onGridActiveRowIndexChange?: (rowIndex: number) => void; + onCellSelectionChange: (selection: DataTableCellSelection | null) => void; getColumnLayout: (columnId: string) => DataTableColumnLayout; getRowClassName: DataTableProps["getRowClassName"]; getRowLoadingState: DataTableProps["getRowLoadingState"]; @@ -340,6 +407,7 @@ type DataTableTablePanelProps = { sentinelRef: React.RefObject; setDraftValues: React.Dispatch>>; shouldRenderInitialLoading: boolean; + stateOverlayNode?: React.ReactNode; stickyHeader: boolean; stripedRows: boolean; summaryRows: NonNullable["summaryRows"]>; @@ -355,6 +423,7 @@ type DataTableTablePanelProps = { TableRow: DataTableUiKit["TableRow"]; tableScrollContainerRef: React.RefObject; tableScrollElement?: HTMLElement | null; + totalRowCount?: number; uiClassNames: DataTableUiClassNames; viewportHeight?: number; virtualization?: DataTableProps["virtualization"]; @@ -363,37 +432,7 @@ type DataTableTablePanelProps = { visibleLeafColumnCount: number; visibleLeafColumns: Array>; }; -declare function DataTableTablePanel({ ariaDescribedBy, ariaLabelledBy, bodyRowComponents, columnLayouts, columnGroupHeaderHeight, currentDensity, currentDetailExpanded, currentSorting, dir, DataTableEmptyState, dragAndDrop, draggedColumnIdRef, draftValues, editingRowId, emptyNode, enableColumnReordering, enableColumnResizing, explicitCustomCellColumnIds, fillMinWidth, flexGrow, getColumnLayout, getRowClassName, getRowLoadingState, infiniteScroll, layoutMode, localSearchValue, onRowClick, primeColumnForResize, renderedRows, detailPanel, topPinnedRows, bottomPinnedRows, reorderColumn, resetColumnSize, resolvedLabels, rowsToRender, ScrollArea, ScrollBar, sentinelRef, setDraftValues, shouldRenderInitialLoading, stickyHeader, stripedRows, summaryRows, table, tableClassName, tableContainerClassName, Table, TableBody, TableCell, TableFooter, TableHead, TableHeader, TableRow, tableScrollContainerRef, uiClassNames, virtualPaddingBottom, virtualPaddingTop, visibleLeafColumnCount, visibleLeafColumns, }: DataTableTablePanelProps): React.JSX.Element; - -type DataTableBodyRowProps = { - columnLayouts: ReadonlyMap; - components: Pick; - currentDensity: DataTableDensity; - draftValues: Record; - dragAndDrop: DataTableProps["dragAndDrop"]; - explicitCustomCellColumnIds: ReadonlySet; - getRowClassName: DataTableProps["getRowClassName"]; - isDraggable: boolean; - isDetailExpanded: boolean; - isEditing: boolean; - isExpanded: boolean; - isInitialLoadingRow: boolean; - isSelected: boolean; - loadingState: DataTableRowLoadingState | undefined; - onRowClick: DataTableProps["onRowClick"]; - pinnedPosition?: Exclude; - originalRow: TData; - detailPanel: DataTableProps["detailPanel"]; - row: Row; - rowIndex: number; - setDraftValues: React.Dispatch>>; - stripedRows: boolean; - uiClassNames: DataTableUiClassNames; - visibleCells: Array>; - visibleLeafColumnCount: number; -}; -declare function DataTableBodyRowInner({ columnLayouts, components, currentDensity, draftValues, dragAndDrop, explicitCustomCellColumnIds, getRowClassName, isDraggable, isDetailExpanded, isEditing, isExpanded, isInitialLoadingRow, isSelected, loadingState, onRowClick, pinnedPosition, originalRow, detailPanel, row, rowIndex, setDraftValues, stripedRows, uiClassNames, visibleCells, visibleLeafColumnCount, }: DataTableBodyRowProps): React.JSX.Element; -declare const DataTableBodyRow: typeof DataTableBodyRowInner; +declare function DataTableTablePanel({ ariaDescribedBy, ariaLabelledBy, bodyRowComponents, cellSelection, cellSelectionEnabled, columnLayouts, columnGroupHeaderHeight, currentDensity, currentDetailExpanded, currentSorting, dir, DataTableEmptyState, dragAndDrop, draggedColumnIdRef, draftValues, editingRowId, editingContext, emptyNode, enableColumnReordering, enableColumnResizing, explicitCustomCellColumnIds, fillMinWidth, flexGrow, gridMode, gridPageSize, gridRowOffset, onGridActiveRowIndexChange, onCellSelectionChange, getColumnLayout, getRowClassName, getRowLoadingState, infiniteScroll, layoutMode, localSearchValue, onRowClick, primeColumnForResize, renderedRows, detailPanel, topPinnedRows, bottomPinnedRows, reorderColumn, resetColumnSize, resolvedLabels, rowsToRender, ScrollArea, ScrollBar, sentinelRef, setDraftValues, shouldRenderInitialLoading, stateOverlayNode, stickyHeader, stripedRows, summaryRows, table, tableClassName, tableContainerClassName, Table, TableBody, TableCell, TableFooter, TableHead, TableHeader, TableRow, tableScrollContainerRef, tableScrollElement, totalRowCount, uiClassNames, virtualPaddingBottom, virtualPaddingTop, visibleLeafColumnCount, visibleLeafColumns, }: DataTableTablePanelProps): React.JSX.Element; type DataTableFooterSectionProps = { children?: React.ReactNode; @@ -418,6 +457,8 @@ type DataTableHeaderCellProps = { draggedColumnIdRef: React.MutableRefObject; enableColumnReordering: boolean; enableColumnResizing: boolean; + gridColumnIndex?: number; + gridMode: boolean; header: Header; headerGroupHeaders: Array>; layout: DataTableColumnLayout; @@ -429,7 +470,7 @@ type DataTableHeaderCellProps = { TableHead: DataTableUiKit["TableHead"]; uiClassNames: DataTableUiClassNames; }; -declare function DataTableHeaderCellInner({ columnGroupHeaderHeight, currentDensity, currentSorting, dir, draggedColumnIdRef, enableColumnReordering, enableColumnResizing, header, headerGroupHeaders, layout, primeColumnForResize, reorderColumn, resizeColumnLabel, resetColumnSize, TableHead, uiClassNames, }: DataTableHeaderCellProps): React.JSX.Element; +declare function DataTableHeaderCellInner({ columnGroupHeaderHeight, currentDensity, currentSorting, dir, draggedColumnIdRef, enableColumnReordering, enableColumnResizing, gridColumnIndex, gridMode, header, headerGroupHeaders, layout, primeColumnForResize, reorderColumn, resizeColumnLabel, resetColumnSize, TableHead, uiClassNames, }: DataTableHeaderCellProps): React.JSX.Element; declare const DataTableHeaderCell: typeof DataTableHeaderCellInner; type DataTableToolbarSectionProps = { @@ -443,6 +484,11 @@ type DataTableToolbarSectionProps = { descriptionId: string | undefined; effectiveToolbarActions: Array; enableColumnPinning: boolean; + enableGrouping: boolean; + enableToolbarColumnChooser: boolean; + enableToolbarFilterChips: boolean; + enableToolbarResetLayout: boolean; + enableToolbarSavedViews: boolean; enableDensityToggle: boolean; enableViewToggle: boolean; hiddenRowsLabel: string | undefined; @@ -453,11 +499,18 @@ type DataTableToolbarSectionProps = { onDensityChange: (density: "compact" | "comfortable" | "spacious") => void; onShowHiddenRowsChange: (showHiddenRows: boolean) => void; onToolbarQueryValueChange: (value: string) => void; + reorderColumn: (sourceColumnId: string, targetColumnId: string) => void; + onResetColumnLayout: () => void; + onCreateSavedView: (name: string) => DataTableSavedView | undefined; + onApplySavedView: (id: string) => boolean; + onRenameSavedView: (id: string, name: string) => DataTableSavedView | undefined; + onDeleteSavedView: (id: string) => boolean; onViewModeChange: (viewMode: "table" | "card") => void; openFileDialog: (() => void) | undefined; selectedRowIds: Array; selectedRows: Array; selectionActions: DataTableProps["selectionActions"]; + savedViews: Array; showHiddenRows: boolean; table: Table; title: string | undefined; @@ -468,7 +521,7 @@ type DataTableToolbarSectionProps = { density: "compact" | "comfortable" | "spacious"; viewMode: "table" | "card"; }; -declare function DataTableToolbarSection({ allRows, columnFilters, columnVisibilityOptions, compactToolbar, customToolbar, DataTableToolbar, description, descriptionId, effectiveToolbarActions, enableColumnPinning, enableDensityToggle, enableViewToggle, hiddenRowsLabel, labels, onClearColumnFilters, onColumnFilterChange, onColumnPinningChange, onDensityChange, onShowHiddenRowsChange, onToolbarQueryValueChange, onViewModeChange, openFileDialog, selectedRowIds, selectedRows, selectionActions, showHiddenRows, table, title, titleId, toolbarQueryPlaceholder, toolbarQueryValue, toolbarVisibility, density, viewMode, }: DataTableToolbarSectionProps): React.JSX.Element; +declare function DataTableToolbarSection({ allRows, columnFilters, columnVisibilityOptions, compactToolbar, customToolbar, DataTableToolbar, description, descriptionId, effectiveToolbarActions, enableColumnPinning, enableGrouping, enableToolbarColumnChooser, enableToolbarFilterChips, enableToolbarResetLayout, enableToolbarSavedViews, enableDensityToggle, enableViewToggle, hiddenRowsLabel, labels, onClearColumnFilters, onColumnFilterChange, onColumnPinningChange, onDensityChange, onShowHiddenRowsChange, onToolbarQueryValueChange, reorderColumn, onResetColumnLayout, onCreateSavedView, onApplySavedView, onRenameSavedView, onDeleteSavedView, onViewModeChange, openFileDialog, selectedRowIds, selectedRows, selectionActions, savedViews, showHiddenRows, table, title, titleId, toolbarQueryPlaceholder, toolbarQueryValue, toolbarVisibility, density, viewMode, }: DataTableToolbarSectionProps): React.JSX.Element; declare function useControllableState({ defaultValue, onChange, value, }: { defaultValue: T | (() => T); @@ -490,7 +543,7 @@ type DataTableRowActionsComponentProps = { pin: (position: RowPinningPosition) => void; }; }; -declare function useDataTableColumns({ Button, Checkbox, DataTableRowActions, Tooltip, TooltipContent, TooltipTrigger, cancelEditing, columns, editableRows, editingRowId, enableRowSelection, enableRowPinning, hasTreeExpansion, isSavingEdit, labels, lastSelectedRowIdRef, detailPanel, detailExpanded, onDetailExpandedChange, rowSelectionSelectAllScope, rowActions, saveEdit, startEditingRow, tableRef, }: { +declare function useDataTableColumns({ Button, Checkbox, DataTableRowActions, Tooltip, TooltipContent, TooltipTrigger, cancelEditing, columns, editableRows, editingRowId, editErrors, enableRowSelection, enableRowPinning, hasTreeExpansion, isSavingEdit, isEditDirty, labels, lastSelectedRowIdRef, detailPanel, detailExpanded, onDetailExpandedChange, rowSelectionSelectAllScope, rowActions, saveEdit, startEditingRow, tableRef, }: { Button: DataTableUiKit["Button"]; Checkbox: DataTableUiKit["Checkbox"]; DataTableRowActions: React.ComponentType>; @@ -501,10 +554,12 @@ declare function useDataTableColumns({ Button, Checkbox, DataTableRowActi columns: DataTableProps["columns"]; editableRows: DataTableProps["editableRows"]; editingRowId: string | null; + editErrors: Record; enableRowSelection: boolean; enableRowPinning: DataTableProps["enableRowPinning"]; hasTreeExpansion: boolean; isSavingEdit: boolean; + isEditDirty: boolean; labels: DataTableLabels; lastSelectedRowIdRef: React.MutableRefObject; detailPanel: DataTableDetailPanel | undefined; @@ -512,7 +567,7 @@ declare function useDataTableColumns({ Button, Checkbox, DataTableRowActi onDetailExpandedChange: OnChangeFn; rowSelectionSelectAllScope: NonNullable["rowSelectionSelectAllScope"]>; rowActions: Array>; - saveEdit: (row: TData) => Promise; + saveEdit: (row: TData) => Promise; startEditingRow: (row: TData, rowId: string) => void; tableRef: React.RefObject | null>; }): ColumnDef[]; @@ -523,7 +578,7 @@ type DataTableColumnGroupPathSegment = { }; type DataTableColumnGroupPaths = ReadonlyMap>; -declare function useDataTableInstance({ autoResetPageIndex, columnGroupPaths, columnResizeMode, dir, currentColumnFilters, currentColumnOrder, currentColumnPinning, currentRowPinning, currentColumnSizing, currentExpanded, currentPagination, currentRowSelection, currentSorting, currentViewMode, defaultColumn, effectiveColumnVisibility, enableColumnResizing, enableMultiRowSelection, enableRowPinning, enableRowSelection, enableSubRowSelection, getRowCanSelect, getRowCanExpand, getSubRows, globalFilterFn, globalFilterValue, hasNextPage, handleColumnFiltersChange, handleColumnOrderChange, handleColumnPinningChange, handleRowPinningChange, handleColumnVisibilityChange, handleExpandedChange, infiniteScroll, keepPinnedRows, manualFiltering, manualExpanding, manualPagination, manualSorting, onActionError, onPageIndexChange, onPageSizeChange, pageCount, pageIndex, pageSize, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, setCurrentRowSelection, setCurrentSorting, setLocalColumnSizing, setLocalPagination, shouldRenderInitialLoading, tableColumns, tableData, tableGetRowId, tableRef, totalRowCount, virtualization, }: { +declare function useDataTableInstance({ autoResetPageIndex, columnGroupPaths, columnResizeMode, dir, currentColumnFilters, currentColumnOrder, currentColumnPinning, currentRowPinning, currentColumnSizing, currentExpanded, currentGrouping, currentPagination, currentRowSelection, currentSorting, currentViewMode, defaultColumn, effectiveColumnVisibility, enableColumnResizing, enableMultiRowSelection, enableRowPinning, enableRowSelection, enableSubRowSelection, getRowCanSelect, getRowCanExpand, getSubRows, aggregationFns, groupedColumnMode, globalFilterFn, globalFilterValue, hasNextPage, handleColumnFiltersChange, handleColumnOrderChange, handleColumnPinningChange, handleRowPinningChange, handleColumnVisibilityChange, handleExpandedChange, handleGroupingChange, infiniteScroll, keepPinnedRows, manualFiltering, manualGrouping, manualExpanding, manualPagination, manualSorting, onActionError, onPageIndexChange, onPageSizeChange, pageCount, pageIndex, pageSize, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, setCurrentRowSelection, setCurrentSorting, setLocalColumnSizing, setLocalPagination, shouldRenderInitialLoading, tableColumns, tableData, tableGetRowId, tableRef, totalRowCount, virtualization, }: { autoResetPageIndex: boolean; columnGroupPaths: DataTableColumnGroupPaths; columnResizeMode: DataTableProps["columnResizeMode"]; @@ -534,6 +589,7 @@ declare function useDataTableInstance({ autoResetPageIndex, columnGroupPa currentRowPinning: RowPinningState; currentColumnSizing: ColumnSizingState; currentExpanded: ExpandedState; + currentGrouping: GroupingState; currentPagination: PaginationState; currentRowSelection: Record; currentSorting: SortingState; @@ -548,6 +604,8 @@ declare function useDataTableInstance({ autoResetPageIndex, columnGroupPa getRowCanSelect: DataTableProps["getRowCanSelect"]; getRowCanExpand: DataTableProps["getRowCanExpand"]; getSubRows: DataTableProps["getSubRows"]; + aggregationFns: DataTableProps["aggregationFns"]; + groupedColumnMode: DataTableProps["groupedColumnMode"]; globalFilterFn: FilterFnOption | undefined; globalFilterValue: string; hasNextPage?: DataTableProps["hasNextPage"]; @@ -557,9 +615,11 @@ declare function useDataTableInstance({ autoResetPageIndex, columnGroupPa handleRowPinningChange: OnChangeFn; handleColumnVisibilityChange: OnChangeFn; handleExpandedChange: OnChangeFn; + handleGroupingChange: OnChangeFn; infiniteScroll: DataTableProps["infiniteScroll"]; keepPinnedRows: boolean; manualFiltering: boolean; + manualGrouping: boolean; manualExpanding: boolean; manualPagination: boolean; manualSorting: boolean; @@ -615,7 +675,7 @@ type DataTableRowsToRender = Array<{ rowIndex: number; }>; -declare function useDataTableState({ columnFilters, columnOrder, columnPinning, rowPinning, columnSizing, columnPrefsKey, persistence, columnVisibility, columns, data, density, enableRowSelection, enableToolbarQueryFiltering, expanded, getSubRows, getRowId, hiddenRows, initialState, isLoading, loadingRowCount, manualFiltering, onColumnFiltersChange, onColumnOrderChange, onColumnPinningChange, onRowPinningChange, onColumnSizingChange, onColumnVisibilityChange, onDensityChange, onExpandedChange, onPageIndexChange, onRowSelectionChange, onShowHiddenRowsChange, onSortingChange, onToolbarQueryValueChange, onViewModeChange, pageIndex, pageSize, resolvedLabels, rowSelection, rowsPerPageOptions, selectionActions, showHiddenRows, sorting, toolbarQueryDebounceMs, toolbarQueryPlaceholder, toolbarQueryValue, viewMode, containerRef, }: { +declare function useDataTableState({ columnFilters, columnOrder, columnPinning, rowPinning, columnSizing, columnPrefsKey, persistence, columnVisibility, columns, data, density, enableRowSelection, enableToolbarQueryFiltering, expanded, grouping, getSubRows, getRowId, hiddenRows, initialState, isLoading, loadingRowCount, manualFiltering, onColumnFiltersChange, onColumnOrderChange, onColumnPinningChange, onRowPinningChange, onColumnSizingChange, onColumnVisibilityChange, onDensityChange, onExpandedChange, onGroupingChange, onPageIndexChange, onRowSelectionChange, onShowHiddenRowsChange, onSortingChange, onToolbarQueryValueChange, onViewModeChange, pageIndex, pageSize, resolvedLabels, rowSelection, rowsPerPageOptions, selectionActions, showHiddenRows, sorting, toolbarQueryDebounceMs, toolbarQueryPlaceholder, toolbarQueryValue, viewMode, containerRef, }: { columnFilters: DataTableProps["columnFilters"]; columnOrder: DataTableProps["columnOrder"]; columnPinning: DataTableProps["columnPinning"]; @@ -630,6 +690,7 @@ declare function useDataTableState({ columnFilters, columnOrder, columnPi enableRowSelection: boolean; enableToolbarQueryFiltering: boolean; expanded: DataTableProps["expanded"]; + grouping: DataTableProps["grouping"]; getSubRows: DataTableProps["getSubRows"]; getRowId: DataTableProps["getRowId"]; hiddenRows: DataTableProps["hiddenRows"]; @@ -645,6 +706,7 @@ declare function useDataTableState({ columnFilters, columnOrder, columnPi onColumnVisibilityChange: DataTableProps["onColumnVisibilityChange"]; onDensityChange: DataTableProps["onDensityChange"]; onExpandedChange: DataTableProps["onExpandedChange"]; + onGroupingChange: DataTableProps["onGroupingChange"]; onPageIndexChange: DataTableProps["onPageIndexChange"]; onRowSelectionChange: DataTableProps["onRowSelectionChange"]; onShowHiddenRowsChange: DataTableProps["onShowHiddenRowsChange"]; @@ -674,6 +736,7 @@ declare function useDataTableState({ columnFilters, columnOrder, columnPi currentColumnVisibility: VisibilityState; currentDensity: DataTableDensity; currentExpanded: ExpandedState; + currentGrouping: GroupingState; currentPagination: PaginationState; currentRowSelection: Record; currentShowHiddenRows: boolean; @@ -695,6 +758,7 @@ declare function useDataTableState({ columnFilters, columnOrder, columnPi setCurrentRowPinning: (updater: _tanstack_react_table.Updater) => void; setCurrentColumnVisibility: (updater: _tanstack_react_table.Updater) => void; setCurrentExpanded: (updater: _tanstack_react_table.Updater) => void; + setCurrentGrouping: (updater: _tanstack_react_table.Updater) => void; setCurrentRowSelection: (updater: _tanstack_react_table.Updater>) => void; setCurrentSorting: (updater: _tanstack_react_table.Updater) => void; setLocalColumnSizing: (updater: _tanstack_react_table.Updater) => void; @@ -717,10 +781,13 @@ declare function useRowEditing({ columns, editableRows, onError, }: { onError?: (error: unknown, row: TData) => void; }): { cancelEditing: () => void; + clearEditError: (columnId: string) => void; draftValues: Record; + editErrors: Record; editingRowId: string | null; + isEditDirty: boolean; isSavingEdit: boolean; - saveEdit: (row: TData) => Promise; + saveEdit: (row: TData) => Promise; setDraftValues: React.Dispatch>>; setEditingRowId: React.Dispatch>; startEditingRow: (row: TData, rowId: string) => void; @@ -728,7 +795,7 @@ declare function useRowEditing({ columns, editableRows, onError, }: { declare function useStableCallback, TResult>(callback: ((...args: TArgs) => TResult) | undefined): (...args: TArgs) => TResult | undefined; -export { DataTableBodyRow, DataTableCardPanel, DataTableColumnDef, type DataTableColumnLayout, DataTableDensity, DataTableDetailPanel, DataTableEditableRowsConfig, DataTableFooterSection, DataTableHeaderCell, DataTableLabels, DataTableProps, DataTableRowAction, DataTableRowLoadingState, type DataTableRowsToRender, DataTableTablePanel, DataTableToolbarSection, DataTableUiClassNames, DataTableUiKit, useColumnLayout, useControllableState, useDataTableColumns, useDataTableInstance, useDataTableState, useRowEditing, useStableCallback }; +export { DataTableBodyRow, DataTableCardPanel, DataTableCellSelection, DataTableColumnDef, type DataTableColumnLayout, DataTableDensity, DataTableDetailPanel, DataTableEditableRowsConfig, DataTableFooterSection, DataTableHeaderCell, DataTableLabels, DataTableProps, DataTableRowAction, DataTableRowLoadingState, type DataTableRowsToRender, DataTableSavedView, DataTableTablePanel, DataTableToolbarSection, DataTableUiClassNames, DataTableUiKit, useColumnLayout, useControllableState, useDataTableColumns, useDataTableInstance, useDataTableState, useRowEditing, useStableCallback }; ``` ## adapter.d.ts @@ -736,11 +803,11 @@ export { DataTableBodyRow, DataTableCardPanel, DataTableColumnDef, type DataTabl ```ts import * as React from 'react'; import { DataTableProps } from './types.js'; -import { D as DataTableUiKit } from './ui-kit-HehdZfvO.js'; -export { a as DataTableUiClassNames } from './ui-kit-HehdZfvO.js'; +import { D as DataTableUiKit } from './ui-kit-C6Z8X6oi.js'; +export { a as DataTableUiClassNames } from './ui-kit-C6Z8X6oi.js'; import '@tanstack/react-table'; -declare function createDataTable(ui: DataTableUiKit): ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare function createDataTable(ui: DataTableUiKit): ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, grouping, onGroupingChange, manualGrouping, enableGrouping, groupedColumnMode, aggregationFns, pageIndex, pageSize, autoPageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, clipboard, enableCellSelection, cellSelection, defaultCellSelection, onCellSelectionChange, gridCommands, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, toolbarDataOperations, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, enablePrint, enableFullscreen, emptyState, stateOverlay, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; declare const primitiveUiKit: DataTableUiKit; @@ -752,11 +819,11 @@ export { DataTableUiKit, createDataTable, primitiveUiKit }; ```ts import * as React from 'react'; import { DataTableProps } from './types.js'; -import { D as DataTableUiKit } from './ui-kit-HehdZfvO.js'; -export { a as DataTableUiClassNames } from './ui-kit-HehdZfvO.js'; +import { D as DataTableUiKit } from './ui-kit-C6Z8X6oi.js'; +export { a as DataTableUiClassNames } from './ui-kit-C6Z8X6oi.js'; import '@tanstack/react-table'; -declare function createVirtualDataTable(ui: DataTableUiKit): ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare function createVirtualDataTable(ui: DataTableUiKit): ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, grouping, onGroupingChange, manualGrouping, enableGrouping, groupedColumnMode, aggregationFns, pageIndex, pageSize, autoPageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, clipboard, enableCellSelection, cellSelection, defaultCellSelection, onCellSelectionChange, gridCommands, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, toolbarDataOperations, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, enablePrint, enableFullscreen, emptyState, stateOverlay, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; export { DataTableUiKit, createVirtualDataTable }; ``` @@ -765,9 +832,40 @@ export { DataTableUiKit, createVirtualDataTable }; ```ts import * as React from 'react'; -import { ColumnDef, CellContext, FilterFnOption, ColumnFiltersState, SortingState, ExpandedState, Row, ColumnOrderState, ColumnPinningState, RowPinningState, VisibilityState, PaginationState, ColumnSizingState, Updater, Table, HeaderContext } from '@tanstack/react-table'; +import { ColumnDef, CellContext, FilterFnOption, ColumnFiltersState, SortingState, GroupingState, AggregationFn, ExpandedState, Row, ColumnOrderState, ColumnPinningState, RowPinningState, Table, VisibilityState, PaginationState, ColumnSizingState, Updater, HeaderContext } from '@tanstack/react-table'; type DataTableViewMode = "table" | "card"; +/** Accessibility behavior for the table view. Native table semantics remain the default. */ +type DataTableAccessibilityOptions = { + /** + * `grid` enables spreadsheet-like roving focus and keyboard navigation. + * `native` (the default) retains ordinary HTML table keyboard behavior. + */ + mode?: "native" | "grid"; + /** Number of rows moved by PageUp/PageDown when layout cannot be measured. */ + pageSize?: number; +}; +/** Shorthand configuration for the interactive ARIA grid mode. */ +type DataTableInteractiveGridOptions = Omit; +/** A stable grid coordinate used for cell and rectangular range selection. */ +type DataTableCellCoordinate = { + rowId: string; + columnId: string; +}; +/** The two corners of a cell selection. A single-cell selection has equal corners. */ +type DataTableCellSelection = { + anchor: DataTableCellCoordinate; + focus: DataTableCellCoordinate; +}; +type DataTableGridCommandContext = { + table: Table; + cellSelection: DataTableCellSelection | null; +}; +/** Commands are delegated to the application; the table never records app data. */ +type DataTableGridCommands = { + undo?: (context: DataTableGridCommandContext) => void | Promise; + redo?: (context: DataTableGridCommandContext) => void | Promise; +}; type DataTableAlign = "start" | "center" | "end"; type DataTableColumnType = "text" | "numeric" | "date"; type DataTableColumnFixed = "left" | "right"; @@ -775,10 +873,44 @@ type DataTableContainerBreakpoint = "sm" | "md" | "lg" | "xl" | "2xl"; type DataTableDensity = "compact" | "comfortable" | "spacious"; type DataTableCardSizing = "fixed" | "content" | "fluid"; type DataTableCellOverflow = "truncate" | "clip" | "wrap" | "visible"; -type DataTableColumnFilterType = "text" | "select" | "multi" | "boolean" | "numberRange" | "dateRange"; +type DataTableColumnFilterType = "text" | "select" | "multi" | "faceted" | "boolean" | "numberRange" | "dateRange"; type DataTableColumnFilterOperator = "contains" | "equals" | "startsWith" | "endsWith"; type DataTableCsvExportScope = "filtered" | "page" | "selected" | "all"; -type DataTableActionErrorSource = "toolbarAction" | "selectionAction" | "rowAction" | "rowClick" | "edit" | "fileUpload" | "infiniteScroll"; +type DataTableClipboardCopyScope = DataTableCsvExportScope | "cellSelection"; +type DataTableClipboardCopyOptions = { + includeHeaders?: boolean; + columns?: Array; + scope?: DataTableClipboardCopyScope; + /** Defaults to tab-separated text. */ + delimiter?: "\t" | ","; + escapeFormulaValues?: boolean; + getCellValue?: (context: { + row: TData; + rowId: string; + columnId: string; + value: unknown; + }) => unknown; + /** Host-owned clipboard delivery for non-browser or permission-managed apps. */ + onCopy?: (context: { + text: string; + rows: Array; + scope: DataTableClipboardCopyScope; + }) => void | Promise; +}; +type DataTableClipboardPasteContext = { + text: string; + values: Array>; + table: Table; +}; +type DataTableClipboardConfig = { + copy?: boolean | DataTableClipboardCopyOptions; + paste?: { + enabled?: boolean; + preventDefault?: boolean; + onPaste: (context: DataTableClipboardPasteContext) => void | Promise; + }; +}; +type DataTableActionErrorSource = "toolbarAction" | "selectionAction" | "rowAction" | "rowClick" | "edit" | "undo" | "redo" | "clipboardCopy" | "clipboardPaste" | "fileUpload" | "infiniteScroll" | "retry"; declare const DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS: Record; type DataTableRowLoadingState = { isLoading: boolean; @@ -788,16 +920,55 @@ type DataTableLoadingState = { isLoading: boolean; loadingRowCount?: number; }; +type DataTableAutoPageSizeConfig = { + minRows?: number; + maxRows?: number; + estimateRowHeight?: number; +}; +type DataTableStateOverlayContext = { + rows: Array; + toolbarQueryValue: string; + error: unknown; + isRetrying: boolean; + retry: (() => void | Promise) | undefined; +}; +type DataTableStateOverlay = { + empty?: React.ReactNode | ((context: DataTableEmptyStateContext) => React.ReactNode); + error?: unknown; + isRetrying?: boolean; + onRetry?: () => void | Promise; + renderError?: (context: DataTableStateOverlayContext) => React.ReactNode; +}; type DataTableCellEditRenderProps = { cell: CellContext; row: TData; value: TValue | undefined; draftValue: unknown; setDraftValue: (value: unknown) => void; + error?: string; + isDirty: boolean; + isPending: boolean; }; type DataTableColumnFilterOption = { label: string; value: string; + /** Number of matching records. Omit when the count is not known. */ + count?: number; + disabled?: boolean; +}; +type DataTableFacetedFilterOptions = { + /** + * Server-provided facet values. When supplied, these take precedence over + * locally calculated unique values and their counts. + */ + options?: Array | ((context: { + rows: Array; + }) => Array); + /** Render a readable label for values discovered from the local row model. */ + getOptionLabel?: (value: TValue | undefined) => string; + /** Enables an in-menu search input. Defaults to true. */ + searchable?: boolean; + searchPlaceholder?: string; }; type DataTableColumnFilterRangeValue = { from?: TValue; @@ -811,6 +982,8 @@ type DataTableColumnFilterConfig = { rows: Array; }) => Array); getOptionValue?: (value: TValue | undefined, row: TData) => string; + /** Settings for `type: "faceted"`, including server-provided facet data. */ + faceting?: DataTableFacetedFilterOptions; operator?: DataTableColumnFilterOperator; trueLabel?: string; falseLabel?: string; @@ -925,6 +1098,15 @@ type DataTableToolbarVisibility = { viewToggle?: boolean; customToolbar?: boolean; }; +/** Optional toolbar controls for working with the current table layout and views. */ +type DataTableToolbarDataOperations = { + /** Search, bulk show/hide, pin, and keyboard-accessible column move controls. */ + columnChooser?: boolean; + /** Create, apply, rename, and delete saved views when `savedViews` is configured. */ + savedViews?: boolean; + /** Adds a reset-layout action using the table's initial layout. */ + resetLayout?: boolean; +}; type DataTableCardRendererProps = { row: TData; rowId: string; @@ -942,7 +1124,16 @@ type DataTableCardRendererProps = { type DataTableEditableRowsConfig = { canEditRow?: (row: TData) => boolean; getInitialValues?: (row: TData) => Record; + validateRow?: (row: TData, draftValues: Record) => void | string | Record | Promise>; + /** Apply an optimistic host update and optionally return a rollback callback. */ + onOptimisticUpdate?: (row: TData, draftValues: Record) => void | (() => void); onSaveRow: (row: TData, draftValues: Record) => void | Promise; + onSaveSuccess?: (row: TData, draftValues: Record) => void; + onSaveError?: (error: unknown, row: TData, draftValues: Record) => void; + /** Defaults to true for inputs owned by the table. */ + commitOnEnter?: boolean; + /** Defaults to true for inputs owned by the table. */ + cancelOnEscape?: boolean; }; type DataTableInfiniteScroll = { enabled: boolean; @@ -1077,6 +1268,8 @@ type DataTableState = { columnPinning: ColumnPinningState; rowPinning: RowPinningState; columnSizing: ColumnSizingState; + /** Present in snapshots produced by 4.4+; optional for 4.x object-literal compatibility. */ + grouping?: GroupingState; density: DataTableDensity; viewMode: DataTableViewMode; showHiddenRows: boolean; @@ -1137,6 +1330,12 @@ type DataTableApi = { scrollToRow: (rowId: string) => boolean; scrollToColumn: (columnId: string) => boolean; exportCsv: (options?: boolean | DataTableCsvExportOptions) => Promise; + copyToClipboard: (options?: boolean | DataTableClipboardCopyOptions) => Promise; + getCellSelection: () => DataTableCellSelection | null; + setCellSelection: (selection: DataTableCellSelection | null) => void; + clearCellSelection: () => void; + print: () => boolean; + toggleFullscreen: () => Promise; }; type DataTableLabels = { searchPlaceholder: string; @@ -1185,6 +1384,12 @@ type DataTableLabels = { expandRowDetails?: string; collapseRowDetails?: string; exportCsv: string; + print?: string; + enterFullscreen?: string; + exitFullscreen?: string; + errorTitle?: string; + errorDescription?: string; + retry?: string; density: string; compactDensity: string; comfortableDensity: string; @@ -1196,6 +1401,26 @@ type DataTableLabels = { pinRowToBottom: string; unpinRow: string; resizeColumn: (columnLabel: string) => string; + grouping?: string; + groupBy?: (columnLabel: string) => string; + ungroup?: (columnLabel: string) => string; + removeGrouping?: (columnLabel: string) => string; + moveGroupingEarlier?: (columnLabel: string) => string; + moveGroupingLater?: (columnLabel: string) => string; + facetSearch?: (columnLabel: string) => string; + searchColumns?: string; + showAllColumns?: string; + hideAllColumns?: string; + moveColumnEarlier?: (columnLabel: string) => string; + moveColumnLater?: (columnLabel: string) => string; + resetColumnLayout?: string; + savedViews?: string; + createSavedView?: string; + savedViewName?: string; + applySavedView?: (name: string) => string; + renameSavedView?: (name: string) => string; + deleteSavedView?: (name: string) => string; + saveSavedView?: string; }; type DataTableSummaryRow = { key: string; @@ -1240,8 +1465,20 @@ type DataTableProps = { sorting?: SortingState; onSortingChange?: (sorting: SortingState) => void; manualSorting?: boolean; + grouping?: GroupingState; + onGroupingChange?: (grouping: GroupingState) => void; + /** Use rows already grouped by the server instead of TanStack's grouping model. */ + manualGrouping?: boolean; + /** Show group/ungroup controls in the table options menu and grouping bar. */ + enableGrouping?: boolean; + /** Controls whether grouped columns are reordered, removed, or left in place. */ + groupedColumnMode?: false | "reorder" | "remove"; + /** Named aggregation functions available to column `aggregationFn` definitions. */ + aggregationFns?: Record>; pageIndex?: number; pageSize?: number; + /** Sizes an opt-in page from the measurable table scroll viewport. */ + autoPageSize?: boolean | DataTableAutoPageSizeConfig; onPageIndexChange?: (pageIndex: number) => void; onPageSizeChange?: (pageSize: number) => void; pageCount?: number; @@ -1292,6 +1529,17 @@ type DataTableProps = { selectionActions?: Array>; rowActions?: Array>; csvExport?: boolean | DataTableCsvExportOptions; + /** Opt-in TSV/CSV copy and application-owned paste handling. */ + clipboard?: DataTableClipboardConfig; + /** Enables pointer and Shift+keyboard rectangular cell selection in grid mode. */ + enableCellSelection?: boolean; + /** Controlled cell/range selection. Supplying a value also enables it in grid mode. */ + cellSelection?: DataTableCellSelection | null; + /** Initial cell/range selection when uncontrolled. */ + defaultCellSelection?: DataTableCellSelection | null; + onCellSelectionChange?: (selection: DataTableCellSelection | null) => void; + /** Host-owned undo/redo commands invoked by Ctrl/Cmd+Z and Ctrl/Cmd+Shift+Z. */ + gridCommands?: DataTableGridCommands; density?: DataTableDensity; onDensityChange?: (density: DataTableDensity) => void; enableDensityToggle?: boolean; @@ -1311,7 +1559,11 @@ type DataTableProps = { viewMode?: DataTableViewMode; onViewModeChange?: (viewMode: DataTableViewMode) => void; enableViewToggle?: boolean; + enablePrint?: boolean; + enableFullscreen?: boolean; emptyState?: React.ReactNode | ((context: DataTableEmptyStateContext) => React.ReactNode); + /** Explicit empty/error/retry rendering contract. */ + stateOverlay?: DataTableStateOverlay; isLoading?: boolean; loadingRowCount?: number; getRowLoadingState?: (row: TData, index: number) => boolean | DataTableRowLoadingState; @@ -1333,6 +1585,8 @@ type DataTableProps = { dir?: "ltr" | "rtl"; flexGrow?: boolean; toolbarVisibility?: DataTableToolbarVisibility; + /** Opts into enhanced layout and saved-view toolbar controls. */ + toolbarDataOperations?: boolean | DataTableToolbarDataOperations; className?: string; tableClassName?: string; tableContainerClassName?: string; @@ -1346,6 +1600,10 @@ type DataTableProps = { dragAndDrop?: DataTableDragAndDropConfig; fileUpload?: DataTableFileUploadConfig; virtualization?: boolean | DataTableVirtualizationConfig; + /** Opt in to ARIA grid semantics and roving keyboard navigation. */ + accessibility?: DataTableAccessibilityOptions; + /** Shorthand for `accessibility={{ mode: "grid" }}`. */ + interactiveGrid?: boolean | DataTableInteractiveGridOptions; }; declare function isRowVisible(row: TData, hiddenRows: DataTableHiddenRowsConfig | undefined, showHiddenRows: boolean): boolean; declare function resolveRowActionLabel(label: DataTableRowAction["label"], row: TData): string; @@ -1359,5 +1617,5 @@ declare function hideOnClassName(hideOn: DataTableContainerBreakpoint | Array | undefined, containerWidth: number): boolean; declare function rowSelectionStateFromRows(rows: Array>): TData[]; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, type DataTableActionErrorContext, type DataTableActionErrorSource, type DataTableAlign, type DataTableApi, type DataTableCardRendererProps, type DataTableCardSizing, type DataTableCardVirtualizationConfig, type DataTableCellEditRenderProps, type DataTableCellOverflow, type DataTableColumnDef, type DataTableColumnFilterConfig, type DataTableColumnFilterOperator, type DataTableColumnFilterOption, type DataTableColumnFilterRangeValue, type DataTableColumnFilterType, type DataTableColumnFixed, type DataTableColumnGroupDef, type DataTableColumnMeta, type DataTableColumnPrefs, type DataTableColumnType, type DataTableColumnVisibilityOption, type DataTableContainerBreakpoint, type DataTableCsvExportOptions, type DataTableCsvExportScope, type DataTableDensity, type DataTableDetailPanel, type DataTableDragAndDropConfig, type DataTableEditableRowsConfig, type DataTableEmptyStateContext, type DataTableExpandedRowProps, type DataTableFileUploadConfig, type DataTableHiddenRowsConfig, type DataTableInfiniteScroll, type DataTableInitialState, type DataTableLabels, type DataTableLoadingState, type DataTablePersistenceConfig, type DataTablePersistenceOperation, type DataTablePersistencePayload, type DataTablePersistenceSlice, type DataTablePersistenceStorage, type DataTableProps, type DataTableResetOptions, type DataTableRowAction, type DataTableRowClassNameContext, type DataTableRowLoadingState, type DataTableSavedView, type DataTableSavedViewSlice, type DataTableSavedViewsChangeOperation, type DataTableSavedViewsConfig, type DataTableSavedViewsPayload, type DataTableSelectionAction, type DataTableSelectionActionContext, type DataTableState, type DataTableSummaryRow, type DataTableToolbarAction, type DataTableToolbarVisibility, type DataTableViewMode, type DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows }; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, type DataTableAccessibilityOptions, type DataTableActionErrorContext, type DataTableActionErrorSource, type DataTableAlign, type DataTableApi, type DataTableAutoPageSizeConfig, type DataTableCardRendererProps, type DataTableCardSizing, type DataTableCardVirtualizationConfig, type DataTableCellCoordinate, type DataTableCellEditRenderProps, type DataTableCellOverflow, type DataTableCellSelection, type DataTableClipboardConfig, type DataTableClipboardCopyOptions, type DataTableClipboardCopyScope, type DataTableClipboardPasteContext, type DataTableColumnDef, type DataTableColumnFilterConfig, type DataTableColumnFilterOperator, type DataTableColumnFilterOption, type DataTableColumnFilterRangeValue, type DataTableColumnFilterType, type DataTableColumnFixed, type DataTableColumnGroupDef, type DataTableColumnMeta, type DataTableColumnPrefs, type DataTableColumnType, type DataTableColumnVisibilityOption, type DataTableContainerBreakpoint, type DataTableCsvExportOptions, type DataTableCsvExportScope, type DataTableDensity, type DataTableDetailPanel, type DataTableDragAndDropConfig, type DataTableEditableRowsConfig, type DataTableEmptyStateContext, type DataTableExpandedRowProps, type DataTableFacetedFilterOptions, type DataTableFileUploadConfig, type DataTableGridCommandContext, type DataTableGridCommands, type DataTableHiddenRowsConfig, type DataTableInfiniteScroll, type DataTableInitialState, type DataTableInteractiveGridOptions, type DataTableLabels, type DataTableLoadingState, type DataTablePersistenceConfig, type DataTablePersistenceOperation, type DataTablePersistencePayload, type DataTablePersistenceSlice, type DataTablePersistenceStorage, type DataTableProps, type DataTableResetOptions, type DataTableRowAction, type DataTableRowClassNameContext, type DataTableRowLoadingState, type DataTableSavedView, type DataTableSavedViewSlice, type DataTableSavedViewsChangeOperation, type DataTableSavedViewsConfig, type DataTableSavedViewsPayload, type DataTableSelectionAction, type DataTableSelectionActionContext, type DataTableState, type DataTableStateOverlay, type DataTableStateOverlayContext, type DataTableSummaryRow, type DataTableToolbarAction, type DataTableToolbarDataOperations, type DataTableToolbarVisibility, type DataTableViewMode, type DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows }; ``` diff --git a/dist/adapter-virtual.d.ts b/dist/adapter-virtual.d.ts index 66c8b5f..bef68b8 100644 --- a/dist/adapter-virtual.d.ts +++ b/dist/adapter-virtual.d.ts @@ -1,9 +1,9 @@ import * as React from 'react'; import { DataTableProps } from './types.js'; -import { D as DataTableUiKit } from './ui-kit-HehdZfvO.js'; -export { a as DataTableUiClassNames } from './ui-kit-HehdZfvO.js'; +import { D as DataTableUiKit } from './ui-kit-C6Z8X6oi.js'; +export { a as DataTableUiClassNames } from './ui-kit-C6Z8X6oi.js'; import '@tanstack/react-table'; -declare function createVirtualDataTable(ui: DataTableUiKit): ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare function createVirtualDataTable(ui: DataTableUiKit): ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, grouping, onGroupingChange, manualGrouping, enableGrouping, groupedColumnMode, aggregationFns, pageIndex, pageSize, autoPageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, clipboard, enableCellSelection, cellSelection, defaultCellSelection, onCellSelectionChange, gridCommands, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, toolbarDataOperations, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, enablePrint, enableFullscreen, emptyState, stateOverlay, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; export { DataTableUiKit, createVirtualDataTable }; diff --git a/dist/adapter-virtual.js b/dist/adapter-virtual.js index 80b249e..c0e2d00 100644 --- a/dist/adapter-virtual.js +++ b/dist/adapter-virtual.js @@ -1,2 +1,2 @@ -export{a as createVirtualDataTable}from'./chunk-HHUJMI3H.js';import'./chunk-ZA7LQ2JH.js';import'./chunk-UKIIMIBW.js';import'./chunk-67Y57KCA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-BYTOUBQ7.js';import'./chunk-GSCYQ624.js';//# sourceMappingURL=adapter-virtual.js.map +export{a as createVirtualDataTable}from'./chunk-BQSRJQTY.js';import'./chunk-K7SNDVV2.js';import'./chunk-V5A4DWYZ.js';import'./chunk-4UITEBLL.js';import'./chunk-EJHT5JBZ.js';import'./chunk-NLQJKISS.js';import'./chunk-4P45F2OY.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-KDHJA6AH.js';import'./chunk-XTVBESM5.js';//# sourceMappingURL=adapter-virtual.js.map //# sourceMappingURL=adapter-virtual.js.map \ No newline at end of file diff --git a/dist/adapter.d.ts b/dist/adapter.d.ts index a7d232d..3dc49bd 100644 --- a/dist/adapter.d.ts +++ b/dist/adapter.d.ts @@ -1,10 +1,10 @@ import * as React from 'react'; import { DataTableProps } from './types.js'; -import { D as DataTableUiKit } from './ui-kit-HehdZfvO.js'; -export { a as DataTableUiClassNames } from './ui-kit-HehdZfvO.js'; +import { D as DataTableUiKit } from './ui-kit-C6Z8X6oi.js'; +export { a as DataTableUiClassNames } from './ui-kit-C6Z8X6oi.js'; import '@tanstack/react-table'; -declare function createDataTable(ui: DataTableUiKit): ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare function createDataTable(ui: DataTableUiKit): ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, grouping, onGroupingChange, manualGrouping, enableGrouping, groupedColumnMode, aggregationFns, pageIndex, pageSize, autoPageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, clipboard, enableCellSelection, cellSelection, defaultCellSelection, onCellSelectionChange, gridCommands, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, toolbarDataOperations, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, enablePrint, enableFullscreen, emptyState, stateOverlay, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; declare const primitiveUiKit: DataTableUiKit; diff --git a/dist/adapter.js b/dist/adapter.js index 3dcc26e..f7d2761 100644 --- a/dist/adapter.js +++ b/dist/adapter.js @@ -1,2 +1,2 @@ -export{X as primitiveUiKit}from'./chunk-LDAX7PX5.js';export{i as createDataTable}from'./chunk-67Y57KCA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-BYTOUBQ7.js';import'./chunk-GSCYQ624.js';//# sourceMappingURL=adapter.js.map +export{X as primitiveUiKit}from'./chunk-7FUCHMMB.js';export{i as createDataTable}from'./chunk-4UITEBLL.js';import'./chunk-EJHT5JBZ.js';import'./chunk-NLQJKISS.js';import'./chunk-4P45F2OY.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-KDHJA6AH.js';import'./chunk-XTVBESM5.js';//# sourceMappingURL=adapter.js.map //# sourceMappingURL=adapter.js.map \ No newline at end of file diff --git a/dist/advanced.d.ts b/dist/advanced.d.ts index 52b512d..1bc5f8e 100644 --- a/dist/advanced.d.ts +++ b/dist/advanced.d.ts @@ -1,10 +1,10 @@ export { createDataTable, primitiveUiKit } from './adapter.js'; import * as React from 'react'; import * as _tanstack_react_table from '@tanstack/react-table'; -import { ExpandedState, Row, OnChangeFn, ColumnSizingState, Column, Table, RowPinningPosition, Cell, PaginationState, SortingState, Header, Updater, ColumnDef, ColumnFiltersState, ColumnOrderState, ColumnPinningState, RowPinningState, VisibilityState, FilterFnOption } from '@tanstack/react-table'; -import { DataTableProps, DataTableLabels, DataTableColumnDef, DataTableDensity, DataTableRowLoadingState, DataTableEditableRowsConfig, DataTableRowAction, DataTableDetailPanel } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDragAndDropConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowClassNameContext, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; -import { D as DataTableUiKit, a as DataTableUiClassNames } from './ui-kit-HehdZfvO.js'; +import { ExpandedState, Row, OnChangeFn, ColumnSizingState, Column, RowPinningPosition, Cell, Table, PaginationState, SortingState, Header, Updater, ColumnDef, ColumnFiltersState, ColumnOrderState, ColumnPinningState, RowPinningState, GroupingState, VisibilityState, FilterFnOption } from '@tanstack/react-table'; +import { DataTableProps, DataTableLabels, DataTableColumnDef, DataTableDensity, DataTableRowLoadingState, DataTableCellSelection, DataTableSavedView, DataTableEditableRowsConfig, DataTableRowAction, DataTableDetailPanel } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableAccessibilityOptions, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableAutoPageSizeConfig, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellCoordinate, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableClipboardConfig, DataTableClipboardCopyOptions, DataTableClipboardCopyScope, DataTableClipboardPasteContext, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDragAndDropConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFacetedFilterOptions, DataTableFileUploadConfig, DataTableGridCommandContext, DataTableGridCommands, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableInteractiveGridOptions, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowClassNameContext, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableStateOverlay, DataTableStateOverlayContext, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarDataOperations, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +import { D as DataTableUiKit, a as DataTableUiClassNames } from './ui-kit-C6Z8X6oi.js'; type DataTableCardPanelProps = { cardClassName: string | undefined; @@ -38,6 +38,7 @@ type DataTableCardPanelProps = { setCurrentDetailExpanded: OnChangeFn; setEditingRowId: React.Dispatch>; shouldRenderInitialLoading: boolean; + stateOverlayNode?: React.ReactNode; tableContainerClassName: string | undefined; uiClassNames: DataTableUiClassNames; virtualization: DataTableProps["virtualization"]; @@ -76,10 +77,70 @@ declare function useColumnLayout({ columns, columnSizing, editableRows, e getColumnLayout: (columnId: string) => DataTableColumnLayout; }; +type DataTableRowEditingContext = { + cancel: () => void; + clearError: (columnId: string) => void; + commit: (row: TData) => void; + errors: Record; + isDirty: boolean; + isPending: boolean; + cancelOnEscape: boolean; + commitOnEnter: boolean; +}; +type DataTableBodyRowProps = { + columnLayouts: ReadonlyMap; + components: Pick; + currentDensity: DataTableDensity; + draftValues: Record; + editingContext?: DataTableRowEditingContext; + dragAndDrop: DataTableProps["dragAndDrop"]; + explicitCustomCellColumnIds: ReadonlySet; + getRowClassName: DataTableProps["getRowClassName"]; + groupToggleLabel: string; + gridMode: boolean; + gridRowAriaIndex: number; + gridRowIndex: number; + activeGridCell: { + row: number; + column: number; + }; + cellSelectionEnabled: boolean; + isGridCellSelected: (row: number, column: number) => boolean; + onGridCellFocus: (cell: { + row: number; + column: number; + }) => void; + onGridCellKeyDown: (event: React.KeyboardEvent, row: number, column: number) => void; + onGridCellPointerDown: (event: React.PointerEvent, row: number, column: number) => void; + onGridCellPointerEnter: (event: React.PointerEvent, row: number, column: number) => void; + isDraggable: boolean; + isDetailExpanded: boolean; + isEditing: boolean; + isExpanded: boolean; + isInitialLoadingRow: boolean; + isSelected: boolean; + loadingState: DataTableRowLoadingState | undefined; + onRowClick: DataTableProps["onRowClick"]; + pinnedPosition?: Exclude; + originalRow: TData; + detailPanel: DataTableProps["detailPanel"]; + row: Row; + rowIndex: number; + setDraftValues: React.Dispatch>>; + stripedRows: boolean; + uiClassNames: DataTableUiClassNames; + visibleCells: Array>; + visibleLeafColumnCount: number; +}; +declare function DataTableBodyRowInner({ columnLayouts, components, currentDensity, draftValues, editingContext, dragAndDrop, explicitCustomCellColumnIds, getRowClassName, groupToggleLabel, gridMode, gridRowAriaIndex, gridRowIndex, activeGridCell, cellSelectionEnabled, isGridCellSelected, onGridCellFocus, onGridCellKeyDown, onGridCellPointerDown, onGridCellPointerEnter, isDraggable, isDetailExpanded, isEditing, isExpanded, isInitialLoadingRow, isSelected, loadingState, onRowClick, pinnedPosition, originalRow, detailPanel, row, rowIndex, setDraftValues, stripedRows, uiClassNames, visibleCells, visibleLeafColumnCount, }: DataTableBodyRowProps): React.JSX.Element; +declare const DataTableBodyRow: typeof DataTableBodyRowInner; + type DataTableTablePanelProps = { ariaDescribedBy: string | undefined; ariaLabelledBy: string | undefined; bodyRowComponents: Pick; + cellSelection: DataTableCellSelection | null; + cellSelectionEnabled: boolean; columnLayouts: ReadonlyMap; columnGroupHeaderHeight: DataTableProps["columnGroupHeaderHeight"]; currentDensity: DataTableDensity; @@ -91,12 +152,18 @@ type DataTableTablePanelProps = { draggedColumnIdRef: React.RefObject; draftValues: Record; editingRowId: string | null; + editingContext?: DataTableRowEditingContext; emptyNode: React.ReactNode; enableColumnReordering: boolean; enableColumnResizing: boolean; explicitCustomCellColumnIds: ReadonlySet; fillMinWidth: number; flexGrow: boolean; + gridMode: boolean; + gridPageSize?: number; + gridRowOffset: number; + onGridActiveRowIndexChange?: (rowIndex: number) => void; + onCellSelectionChange: (selection: DataTableCellSelection | null) => void; getColumnLayout: (columnId: string) => DataTableColumnLayout; getRowClassName: DataTableProps["getRowClassName"]; getRowLoadingState: DataTableProps["getRowLoadingState"]; @@ -121,6 +188,7 @@ type DataTableTablePanelProps = { sentinelRef: React.RefObject; setDraftValues: React.Dispatch>>; shouldRenderInitialLoading: boolean; + stateOverlayNode?: React.ReactNode; stickyHeader: boolean; stripedRows: boolean; summaryRows: NonNullable["summaryRows"]>; @@ -136,6 +204,7 @@ type DataTableTablePanelProps = { TableRow: DataTableUiKit["TableRow"]; tableScrollContainerRef: React.RefObject; tableScrollElement?: HTMLElement | null; + totalRowCount?: number; uiClassNames: DataTableUiClassNames; viewportHeight?: number; virtualization?: DataTableProps["virtualization"]; @@ -144,37 +213,7 @@ type DataTableTablePanelProps = { visibleLeafColumnCount: number; visibleLeafColumns: Array>; }; -declare function DataTableTablePanel({ ariaDescribedBy, ariaLabelledBy, bodyRowComponents, columnLayouts, columnGroupHeaderHeight, currentDensity, currentDetailExpanded, currentSorting, dir, DataTableEmptyState, dragAndDrop, draggedColumnIdRef, draftValues, editingRowId, emptyNode, enableColumnReordering, enableColumnResizing, explicitCustomCellColumnIds, fillMinWidth, flexGrow, getColumnLayout, getRowClassName, getRowLoadingState, infiniteScroll, layoutMode, localSearchValue, onRowClick, primeColumnForResize, renderedRows, detailPanel, topPinnedRows, bottomPinnedRows, reorderColumn, resetColumnSize, resolvedLabels, rowsToRender, ScrollArea, ScrollBar, sentinelRef, setDraftValues, shouldRenderInitialLoading, stickyHeader, stripedRows, summaryRows, table, tableClassName, tableContainerClassName, Table, TableBody, TableCell, TableFooter, TableHead, TableHeader, TableRow, tableScrollContainerRef, uiClassNames, virtualPaddingBottom, virtualPaddingTop, visibleLeafColumnCount, visibleLeafColumns, }: DataTableTablePanelProps): React.JSX.Element; - -type DataTableBodyRowProps = { - columnLayouts: ReadonlyMap; - components: Pick; - currentDensity: DataTableDensity; - draftValues: Record; - dragAndDrop: DataTableProps["dragAndDrop"]; - explicitCustomCellColumnIds: ReadonlySet; - getRowClassName: DataTableProps["getRowClassName"]; - isDraggable: boolean; - isDetailExpanded: boolean; - isEditing: boolean; - isExpanded: boolean; - isInitialLoadingRow: boolean; - isSelected: boolean; - loadingState: DataTableRowLoadingState | undefined; - onRowClick: DataTableProps["onRowClick"]; - pinnedPosition?: Exclude; - originalRow: TData; - detailPanel: DataTableProps["detailPanel"]; - row: Row; - rowIndex: number; - setDraftValues: React.Dispatch>>; - stripedRows: boolean; - uiClassNames: DataTableUiClassNames; - visibleCells: Array>; - visibleLeafColumnCount: number; -}; -declare function DataTableBodyRowInner({ columnLayouts, components, currentDensity, draftValues, dragAndDrop, explicitCustomCellColumnIds, getRowClassName, isDraggable, isDetailExpanded, isEditing, isExpanded, isInitialLoadingRow, isSelected, loadingState, onRowClick, pinnedPosition, originalRow, detailPanel, row, rowIndex, setDraftValues, stripedRows, uiClassNames, visibleCells, visibleLeafColumnCount, }: DataTableBodyRowProps): React.JSX.Element; -declare const DataTableBodyRow: typeof DataTableBodyRowInner; +declare function DataTableTablePanel({ ariaDescribedBy, ariaLabelledBy, bodyRowComponents, cellSelection, cellSelectionEnabled, columnLayouts, columnGroupHeaderHeight, currentDensity, currentDetailExpanded, currentSorting, dir, DataTableEmptyState, dragAndDrop, draggedColumnIdRef, draftValues, editingRowId, editingContext, emptyNode, enableColumnReordering, enableColumnResizing, explicitCustomCellColumnIds, fillMinWidth, flexGrow, gridMode, gridPageSize, gridRowOffset, onGridActiveRowIndexChange, onCellSelectionChange, getColumnLayout, getRowClassName, getRowLoadingState, infiniteScroll, layoutMode, localSearchValue, onRowClick, primeColumnForResize, renderedRows, detailPanel, topPinnedRows, bottomPinnedRows, reorderColumn, resetColumnSize, resolvedLabels, rowsToRender, ScrollArea, ScrollBar, sentinelRef, setDraftValues, shouldRenderInitialLoading, stateOverlayNode, stickyHeader, stripedRows, summaryRows, table, tableClassName, tableContainerClassName, Table, TableBody, TableCell, TableFooter, TableHead, TableHeader, TableRow, tableScrollContainerRef, tableScrollElement, totalRowCount, uiClassNames, virtualPaddingBottom, virtualPaddingTop, visibleLeafColumnCount, visibleLeafColumns, }: DataTableTablePanelProps): React.JSX.Element; type DataTableFooterSectionProps = { children?: React.ReactNode; @@ -199,6 +238,8 @@ type DataTableHeaderCellProps = { draggedColumnIdRef: React.MutableRefObject; enableColumnReordering: boolean; enableColumnResizing: boolean; + gridColumnIndex?: number; + gridMode: boolean; header: Header; headerGroupHeaders: Array>; layout: DataTableColumnLayout; @@ -210,7 +251,7 @@ type DataTableHeaderCellProps = { TableHead: DataTableUiKit["TableHead"]; uiClassNames: DataTableUiClassNames; }; -declare function DataTableHeaderCellInner({ columnGroupHeaderHeight, currentDensity, currentSorting, dir, draggedColumnIdRef, enableColumnReordering, enableColumnResizing, header, headerGroupHeaders, layout, primeColumnForResize, reorderColumn, resizeColumnLabel, resetColumnSize, TableHead, uiClassNames, }: DataTableHeaderCellProps): React.JSX.Element; +declare function DataTableHeaderCellInner({ columnGroupHeaderHeight, currentDensity, currentSorting, dir, draggedColumnIdRef, enableColumnReordering, enableColumnResizing, gridColumnIndex, gridMode, header, headerGroupHeaders, layout, primeColumnForResize, reorderColumn, resizeColumnLabel, resetColumnSize, TableHead, uiClassNames, }: DataTableHeaderCellProps): React.JSX.Element; declare const DataTableHeaderCell: typeof DataTableHeaderCellInner; type DataTableToolbarSectionProps = { @@ -224,6 +265,11 @@ type DataTableToolbarSectionProps = { descriptionId: string | undefined; effectiveToolbarActions: Array; enableColumnPinning: boolean; + enableGrouping: boolean; + enableToolbarColumnChooser: boolean; + enableToolbarFilterChips: boolean; + enableToolbarResetLayout: boolean; + enableToolbarSavedViews: boolean; enableDensityToggle: boolean; enableViewToggle: boolean; hiddenRowsLabel: string | undefined; @@ -234,11 +280,18 @@ type DataTableToolbarSectionProps = { onDensityChange: (density: "compact" | "comfortable" | "spacious") => void; onShowHiddenRowsChange: (showHiddenRows: boolean) => void; onToolbarQueryValueChange: (value: string) => void; + reorderColumn: (sourceColumnId: string, targetColumnId: string) => void; + onResetColumnLayout: () => void; + onCreateSavedView: (name: string) => DataTableSavedView | undefined; + onApplySavedView: (id: string) => boolean; + onRenameSavedView: (id: string, name: string) => DataTableSavedView | undefined; + onDeleteSavedView: (id: string) => boolean; onViewModeChange: (viewMode: "table" | "card") => void; openFileDialog: (() => void) | undefined; selectedRowIds: Array; selectedRows: Array; selectionActions: DataTableProps["selectionActions"]; + savedViews: Array; showHiddenRows: boolean; table: Table; title: string | undefined; @@ -249,7 +302,7 @@ type DataTableToolbarSectionProps = { density: "compact" | "comfortable" | "spacious"; viewMode: "table" | "card"; }; -declare function DataTableToolbarSection({ allRows, columnFilters, columnVisibilityOptions, compactToolbar, customToolbar, DataTableToolbar, description, descriptionId, effectiveToolbarActions, enableColumnPinning, enableDensityToggle, enableViewToggle, hiddenRowsLabel, labels, onClearColumnFilters, onColumnFilterChange, onColumnPinningChange, onDensityChange, onShowHiddenRowsChange, onToolbarQueryValueChange, onViewModeChange, openFileDialog, selectedRowIds, selectedRows, selectionActions, showHiddenRows, table, title, titleId, toolbarQueryPlaceholder, toolbarQueryValue, toolbarVisibility, density, viewMode, }: DataTableToolbarSectionProps): React.JSX.Element; +declare function DataTableToolbarSection({ allRows, columnFilters, columnVisibilityOptions, compactToolbar, customToolbar, DataTableToolbar, description, descriptionId, effectiveToolbarActions, enableColumnPinning, enableGrouping, enableToolbarColumnChooser, enableToolbarFilterChips, enableToolbarResetLayout, enableToolbarSavedViews, enableDensityToggle, enableViewToggle, hiddenRowsLabel, labels, onClearColumnFilters, onColumnFilterChange, onColumnPinningChange, onDensityChange, onShowHiddenRowsChange, onToolbarQueryValueChange, reorderColumn, onResetColumnLayout, onCreateSavedView, onApplySavedView, onRenameSavedView, onDeleteSavedView, onViewModeChange, openFileDialog, selectedRowIds, selectedRows, selectionActions, savedViews, showHiddenRows, table, title, titleId, toolbarQueryPlaceholder, toolbarQueryValue, toolbarVisibility, density, viewMode, }: DataTableToolbarSectionProps): React.JSX.Element; declare function useControllableState({ defaultValue, onChange, value, }: { defaultValue: T | (() => T); @@ -271,7 +324,7 @@ type DataTableRowActionsComponentProps = { pin: (position: RowPinningPosition) => void; }; }; -declare function useDataTableColumns({ Button, Checkbox, DataTableRowActions, Tooltip, TooltipContent, TooltipTrigger, cancelEditing, columns, editableRows, editingRowId, enableRowSelection, enableRowPinning, hasTreeExpansion, isSavingEdit, labels, lastSelectedRowIdRef, detailPanel, detailExpanded, onDetailExpandedChange, rowSelectionSelectAllScope, rowActions, saveEdit, startEditingRow, tableRef, }: { +declare function useDataTableColumns({ Button, Checkbox, DataTableRowActions, Tooltip, TooltipContent, TooltipTrigger, cancelEditing, columns, editableRows, editingRowId, editErrors, enableRowSelection, enableRowPinning, hasTreeExpansion, isSavingEdit, isEditDirty, labels, lastSelectedRowIdRef, detailPanel, detailExpanded, onDetailExpandedChange, rowSelectionSelectAllScope, rowActions, saveEdit, startEditingRow, tableRef, }: { Button: DataTableUiKit["Button"]; Checkbox: DataTableUiKit["Checkbox"]; DataTableRowActions: React.ComponentType>; @@ -282,10 +335,12 @@ declare function useDataTableColumns({ Button, Checkbox, DataTableRowActi columns: DataTableProps["columns"]; editableRows: DataTableProps["editableRows"]; editingRowId: string | null; + editErrors: Record; enableRowSelection: boolean; enableRowPinning: DataTableProps["enableRowPinning"]; hasTreeExpansion: boolean; isSavingEdit: boolean; + isEditDirty: boolean; labels: DataTableLabels; lastSelectedRowIdRef: React.MutableRefObject; detailPanel: DataTableDetailPanel | undefined; @@ -293,7 +348,7 @@ declare function useDataTableColumns({ Button, Checkbox, DataTableRowActi onDetailExpandedChange: OnChangeFn; rowSelectionSelectAllScope: NonNullable["rowSelectionSelectAllScope"]>; rowActions: Array>; - saveEdit: (row: TData) => Promise; + saveEdit: (row: TData) => Promise; startEditingRow: (row: TData, rowId: string) => void; tableRef: React.RefObject | null>; }): ColumnDef[]; @@ -304,7 +359,7 @@ type DataTableColumnGroupPathSegment = { }; type DataTableColumnGroupPaths = ReadonlyMap>; -declare function useDataTableInstance({ autoResetPageIndex, columnGroupPaths, columnResizeMode, dir, currentColumnFilters, currentColumnOrder, currentColumnPinning, currentRowPinning, currentColumnSizing, currentExpanded, currentPagination, currentRowSelection, currentSorting, currentViewMode, defaultColumn, effectiveColumnVisibility, enableColumnResizing, enableMultiRowSelection, enableRowPinning, enableRowSelection, enableSubRowSelection, getRowCanSelect, getRowCanExpand, getSubRows, globalFilterFn, globalFilterValue, hasNextPage, handleColumnFiltersChange, handleColumnOrderChange, handleColumnPinningChange, handleRowPinningChange, handleColumnVisibilityChange, handleExpandedChange, infiniteScroll, keepPinnedRows, manualFiltering, manualExpanding, manualPagination, manualSorting, onActionError, onPageIndexChange, onPageSizeChange, pageCount, pageIndex, pageSize, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, setCurrentRowSelection, setCurrentSorting, setLocalColumnSizing, setLocalPagination, shouldRenderInitialLoading, tableColumns, tableData, tableGetRowId, tableRef, totalRowCount, virtualization, }: { +declare function useDataTableInstance({ autoResetPageIndex, columnGroupPaths, columnResizeMode, dir, currentColumnFilters, currentColumnOrder, currentColumnPinning, currentRowPinning, currentColumnSizing, currentExpanded, currentGrouping, currentPagination, currentRowSelection, currentSorting, currentViewMode, defaultColumn, effectiveColumnVisibility, enableColumnResizing, enableMultiRowSelection, enableRowPinning, enableRowSelection, enableSubRowSelection, getRowCanSelect, getRowCanExpand, getSubRows, aggregationFns, groupedColumnMode, globalFilterFn, globalFilterValue, hasNextPage, handleColumnFiltersChange, handleColumnOrderChange, handleColumnPinningChange, handleRowPinningChange, handleColumnVisibilityChange, handleExpandedChange, handleGroupingChange, infiniteScroll, keepPinnedRows, manualFiltering, manualGrouping, manualExpanding, manualPagination, manualSorting, onActionError, onPageIndexChange, onPageSizeChange, pageCount, pageIndex, pageSize, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, setCurrentRowSelection, setCurrentSorting, setLocalColumnSizing, setLocalPagination, shouldRenderInitialLoading, tableColumns, tableData, tableGetRowId, tableRef, totalRowCount, virtualization, }: { autoResetPageIndex: boolean; columnGroupPaths: DataTableColumnGroupPaths; columnResizeMode: DataTableProps["columnResizeMode"]; @@ -315,6 +370,7 @@ declare function useDataTableInstance({ autoResetPageIndex, columnGroupPa currentRowPinning: RowPinningState; currentColumnSizing: ColumnSizingState; currentExpanded: ExpandedState; + currentGrouping: GroupingState; currentPagination: PaginationState; currentRowSelection: Record; currentSorting: SortingState; @@ -329,6 +385,8 @@ declare function useDataTableInstance({ autoResetPageIndex, columnGroupPa getRowCanSelect: DataTableProps["getRowCanSelect"]; getRowCanExpand: DataTableProps["getRowCanExpand"]; getSubRows: DataTableProps["getSubRows"]; + aggregationFns: DataTableProps["aggregationFns"]; + groupedColumnMode: DataTableProps["groupedColumnMode"]; globalFilterFn: FilterFnOption | undefined; globalFilterValue: string; hasNextPage?: DataTableProps["hasNextPage"]; @@ -338,9 +396,11 @@ declare function useDataTableInstance({ autoResetPageIndex, columnGroupPa handleRowPinningChange: OnChangeFn; handleColumnVisibilityChange: OnChangeFn; handleExpandedChange: OnChangeFn; + handleGroupingChange: OnChangeFn; infiniteScroll: DataTableProps["infiniteScroll"]; keepPinnedRows: boolean; manualFiltering: boolean; + manualGrouping: boolean; manualExpanding: boolean; manualPagination: boolean; manualSorting: boolean; @@ -396,7 +456,7 @@ type DataTableRowsToRender = Array<{ rowIndex: number; }>; -declare function useDataTableState({ columnFilters, columnOrder, columnPinning, rowPinning, columnSizing, columnPrefsKey, persistence, columnVisibility, columns, data, density, enableRowSelection, enableToolbarQueryFiltering, expanded, getSubRows, getRowId, hiddenRows, initialState, isLoading, loadingRowCount, manualFiltering, onColumnFiltersChange, onColumnOrderChange, onColumnPinningChange, onRowPinningChange, onColumnSizingChange, onColumnVisibilityChange, onDensityChange, onExpandedChange, onPageIndexChange, onRowSelectionChange, onShowHiddenRowsChange, onSortingChange, onToolbarQueryValueChange, onViewModeChange, pageIndex, pageSize, resolvedLabels, rowSelection, rowsPerPageOptions, selectionActions, showHiddenRows, sorting, toolbarQueryDebounceMs, toolbarQueryPlaceholder, toolbarQueryValue, viewMode, containerRef, }: { +declare function useDataTableState({ columnFilters, columnOrder, columnPinning, rowPinning, columnSizing, columnPrefsKey, persistence, columnVisibility, columns, data, density, enableRowSelection, enableToolbarQueryFiltering, expanded, grouping, getSubRows, getRowId, hiddenRows, initialState, isLoading, loadingRowCount, manualFiltering, onColumnFiltersChange, onColumnOrderChange, onColumnPinningChange, onRowPinningChange, onColumnSizingChange, onColumnVisibilityChange, onDensityChange, onExpandedChange, onGroupingChange, onPageIndexChange, onRowSelectionChange, onShowHiddenRowsChange, onSortingChange, onToolbarQueryValueChange, onViewModeChange, pageIndex, pageSize, resolvedLabels, rowSelection, rowsPerPageOptions, selectionActions, showHiddenRows, sorting, toolbarQueryDebounceMs, toolbarQueryPlaceholder, toolbarQueryValue, viewMode, containerRef, }: { columnFilters: DataTableProps["columnFilters"]; columnOrder: DataTableProps["columnOrder"]; columnPinning: DataTableProps["columnPinning"]; @@ -411,6 +471,7 @@ declare function useDataTableState({ columnFilters, columnOrder, columnPi enableRowSelection: boolean; enableToolbarQueryFiltering: boolean; expanded: DataTableProps["expanded"]; + grouping: DataTableProps["grouping"]; getSubRows: DataTableProps["getSubRows"]; getRowId: DataTableProps["getRowId"]; hiddenRows: DataTableProps["hiddenRows"]; @@ -426,6 +487,7 @@ declare function useDataTableState({ columnFilters, columnOrder, columnPi onColumnVisibilityChange: DataTableProps["onColumnVisibilityChange"]; onDensityChange: DataTableProps["onDensityChange"]; onExpandedChange: DataTableProps["onExpandedChange"]; + onGroupingChange: DataTableProps["onGroupingChange"]; onPageIndexChange: DataTableProps["onPageIndexChange"]; onRowSelectionChange: DataTableProps["onRowSelectionChange"]; onShowHiddenRowsChange: DataTableProps["onShowHiddenRowsChange"]; @@ -455,6 +517,7 @@ declare function useDataTableState({ columnFilters, columnOrder, columnPi currentColumnVisibility: VisibilityState; currentDensity: DataTableDensity; currentExpanded: ExpandedState; + currentGrouping: GroupingState; currentPagination: PaginationState; currentRowSelection: Record; currentShowHiddenRows: boolean; @@ -476,6 +539,7 @@ declare function useDataTableState({ columnFilters, columnOrder, columnPi setCurrentRowPinning: (updater: _tanstack_react_table.Updater) => void; setCurrentColumnVisibility: (updater: _tanstack_react_table.Updater) => void; setCurrentExpanded: (updater: _tanstack_react_table.Updater) => void; + setCurrentGrouping: (updater: _tanstack_react_table.Updater) => void; setCurrentRowSelection: (updater: _tanstack_react_table.Updater>) => void; setCurrentSorting: (updater: _tanstack_react_table.Updater) => void; setLocalColumnSizing: (updater: _tanstack_react_table.Updater) => void; @@ -498,10 +562,13 @@ declare function useRowEditing({ columns, editableRows, onError, }: { onError?: (error: unknown, row: TData) => void; }): { cancelEditing: () => void; + clearEditError: (columnId: string) => void; draftValues: Record; + editErrors: Record; editingRowId: string | null; + isEditDirty: boolean; isSavingEdit: boolean; - saveEdit: (row: TData) => Promise; + saveEdit: (row: TData) => Promise; setDraftValues: React.Dispatch>>; setEditingRowId: React.Dispatch>; startEditingRow: (row: TData, rowId: string) => void; @@ -509,4 +576,4 @@ declare function useRowEditing({ columns, editableRows, onError, }: { declare function useStableCallback, TResult>(callback: ((...args: TArgs) => TResult) | undefined): (...args: TArgs) => TResult | undefined; -export { DataTableBodyRow, DataTableCardPanel, DataTableColumnDef, type DataTableColumnLayout, DataTableDensity, DataTableDetailPanel, DataTableEditableRowsConfig, DataTableFooterSection, DataTableHeaderCell, DataTableLabels, DataTableProps, DataTableRowAction, DataTableRowLoadingState, type DataTableRowsToRender, DataTableTablePanel, DataTableToolbarSection, DataTableUiClassNames, DataTableUiKit, useColumnLayout, useControllableState, useDataTableColumns, useDataTableInstance, useDataTableState, useRowEditing, useStableCallback }; +export { DataTableBodyRow, DataTableCardPanel, DataTableCellSelection, DataTableColumnDef, type DataTableColumnLayout, DataTableDensity, DataTableDetailPanel, DataTableEditableRowsConfig, DataTableFooterSection, DataTableHeaderCell, DataTableLabels, DataTableProps, DataTableRowAction, DataTableRowLoadingState, type DataTableRowsToRender, DataTableSavedView, DataTableTablePanel, DataTableToolbarSection, DataTableUiClassNames, DataTableUiKit, useColumnLayout, useControllableState, useDataTableColumns, useDataTableInstance, useDataTableState, useRowEditing, useStableCallback }; diff --git a/dist/advanced.js b/dist/advanced.js index ebc2ace..81648b7 100644 --- a/dist/advanced.js +++ b/dist/advanced.js @@ -1,2 +1,2 @@ -export{X as primitiveUiKit}from'./chunk-LDAX7PX5.js';export{a as DataTableCardPanel,b as DataTableFooterSection,c as DataTableToolbarSection,i as createDataTable,h as useColumnLayout,e as useControllableState,d as useDataTableColumns,f as useDataTableInstance,g as useDataTableState}from'./chunk-67Y57KCA.js';import'./chunk-EJHT5JBZ.js';export{T as DataTableBodyRow,U as DataTableHeaderCell,V as DataTableTablePanel,S as useRowEditing}from'./chunk-BYTOUBQ7.js';import'./chunk-GSCYQ624.js';import*as e from'react';function R(a){let t=e.useRef(a);return e.useLayoutEffect(()=>{t.current=a;}),e.useCallback((...o)=>t.current?.(...o),[])}export{R as useStableCallback};//# sourceMappingURL=advanced.js.map +export{X as primitiveUiKit}from'./chunk-7FUCHMMB.js';export{a as DataTableCardPanel,b as DataTableFooterSection,c as DataTableToolbarSection,i as createDataTable,h as useColumnLayout,e as useControllableState,d as useDataTableColumns,f as useDataTableInstance,g as useDataTableState}from'./chunk-4UITEBLL.js';import'./chunk-EJHT5JBZ.js';export{c as DataTableBodyRow,d as DataTableHeaderCell,e as DataTableTablePanel,a as useRowEditing}from'./chunk-NLQJKISS.js';import'./chunk-4P45F2OY.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-KDHJA6AH.js';import'./chunk-XTVBESM5.js';import*as e from'react';function R(a){let t=e.useRef(a);return e.useLayoutEffect(()=>{t.current=a;}),e.useCallback((...o)=>t.current?.(...o),[])}export{R as useStableCallback};//# sourceMappingURL=advanced.js.map //# sourceMappingURL=advanced.js.map \ No newline at end of file diff --git a/dist/advanced.js.map b/dist/advanced.js.map index 856bc8f..1afd1af 100644 --- a/dist/advanced.js.map +++ b/dist/advanced.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/core/data-table/use-stable-callback.ts"],"names":["useStableCallback","callback","callbackRef","args"],"mappings":"igBAEO,SAASA,CAAAA,CACdC,CAAAA,CACA,CACA,IAAMC,CAAAA,CAAoB,CAAA,CAAA,MAAA,CAAOD,CAAQ,CAAA,CAEzC,OAAM,kBAAgB,IAAM,CAC1BC,CAAAA,CAAY,OAAA,CAAUD,EACxB,CAAC,CAAA,CAEY,CAAA,CAAA,WAAA,CAAY,CAAA,GAAIE,CAAAA,GACpBD,CAAAA,CAAY,OAAA,GAAU,GAAGC,CAAI,CAAA,CACnC,EAAE,CACP","file":"advanced.js","sourcesContent":["import * as React from \"react\";\n\nexport function useStableCallback, TResult>(\n callback: ((...args: TArgs) => TResult) | undefined,\n) {\n const callbackRef = React.useRef(callback);\n\n React.useLayoutEffect(() => {\n callbackRef.current = callback;\n });\n\n return React.useCallback((...args: TArgs) => {\n return callbackRef.current?.(...args);\n }, []);\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../src/core/data-table/use-stable-callback.ts"],"names":["useStableCallback","callback","callbackRef","args"],"mappings":"qlBAEO,SAASA,CAAAA,CACdC,CAAAA,CACA,CACA,IAAMC,CAAAA,CAAoB,CAAA,CAAA,MAAA,CAAOD,CAAQ,CAAA,CAEzC,OAAM,kBAAgB,IAAM,CAC1BC,CAAAA,CAAY,OAAA,CAAUD,EACxB,CAAC,CAAA,CAEY,CAAA,CAAA,WAAA,CAAY,CAAA,GAAIE,CAAAA,GACpBD,CAAAA,CAAY,OAAA,GAAU,GAAGC,CAAI,CAAA,CACnC,EAAE,CACP","file":"advanced.js","sourcesContent":["import * as React from \"react\";\n\nexport function useStableCallback, TResult>(\n callback: ((...args: TArgs) => TResult) | undefined,\n) {\n const callbackRef = React.useRef(callback);\n\n React.useLayoutEffect(() => {\n callbackRef.current = callback;\n });\n\n return React.useCallback((...args: TArgs) => {\n return callbackRef.current?.(...args);\n }, []);\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-MYQZYDHU.js b/dist/chunk-2NQXDLBI.js similarity index 94% rename from dist/chunk-MYQZYDHU.js rename to dist/chunk-2NQXDLBI.js index 426afdb..e5a46e8 100644 --- a/dist/chunk-MYQZYDHU.js +++ b/dist/chunk-2NQXDLBI.js @@ -1,2 +1,2 @@ -import {X as X$1,a as a$1,c,e,g,h,i,j as j$1,k,l,m,n,p,o,q as q$1,u,s,z as z$1,w,y,x,H,I,J as J$1,L,K as K$1,M,b,N as N$1,R,T,W as W$1}from'./chunk-LDAX7PX5.js';import {a}from'./chunk-GSCYQ624.js';import'react';import {jsx}from'react/jsx-runtime';function r(H,L){return function({className:A,...R}){return jsx(H,{className:a(L,A),...R})}}var U=r(a$1,"rounded-md text-foreground data-[variant=default]:border-primary data-[variant=default]:bg-primary data-[variant=default]:text-primary-foreground data-[variant=outline]:border-input data-[variant=outline]:bg-card data-[variant=outline]:hover:bg-accent data-[variant=outline]:hover:text-accent-foreground data-[variant=secondary]:border-secondary data-[variant=secondary]:bg-secondary data-[variant=secondary]:text-secondary-foreground data-[variant=ghost]:border-transparent data-[variant=ghost]:bg-transparent data-[variant=ghost]:hover:bg-accent data-[variant=ghost]:hover:text-accent-foreground data-[variant=destructive]:border-destructive data-[variant=destructive]:bg-destructive data-[variant=destructive]:text-destructive-foreground data-[variant=link]:border-transparent data-[variant=link]:bg-transparent"),N=r(c,"rounded-xl border-border bg-card text-card-foreground shadow-sm ring-0"),z=r(e,"text-muted-foreground"),K=r(g,"border-t border-border/60 bg-muted/50"),_=r(h,"border-input bg-card ring-ring/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground data-checked:ring-primary"),O=r(i,"border-border bg-popover text-popover-foreground shadow-md"),V=r(j$1,"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10"),W=r(k,"focus:bg-accent focus:text-accent-foreground"),q=r(l,"focus:bg-accent focus:text-accent-foreground"),J=r(m,"text-muted-foreground"),Q=r(n,"bg-border"),X=r(p,"border-border bg-popover text-popover-foreground shadow-md"),Y=r(o,"focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground"),Z=r(q$1,"rounded-2xl border-border/60 bg-background/70"),$=r(u,"text-muted-foreground"),j=r(s,"[&[data-variant=icon]]:bg-muted [&[data-variant=icon]]:text-foreground"),rr=r(z$1,"rounded-md border-input bg-card text-foreground placeholder:text-muted-foreground"),er=r(w,"rounded-md border-input bg-card text-foreground"),tr=r(y,"text-muted-foreground"),or=r(x,"bg-transparent"),ar=r(H,"[&>[data-slot=scroll-area-thumb]]:bg-border"),nr=r(I,"rounded-md border-input bg-card text-foreground"),dr=r(J$1,"border-border bg-popover text-popover-foreground shadow-md"),ir=r(L,"focus:bg-accent focus:text-accent-foreground"),cr=r(K$1,"text-muted-foreground"),ur=r(M,"bg-border"),pr=r(b,"bg-border"),br=r(N$1,"bg-muted"),sr=r(R,"border-border bg-muted/50"),gr=r(T,"text-foreground"),mr=r(W$1,"bg-foreground text-background ring-1 ring-foreground/10 [&>svg]:bg-foreground [&>svg]:fill-foreground"),xr={...X$1,rootClassName:"dtp-shadcn",classNames:{card:"hover:bg-muted/50 data-[state=selected]:bg-primary/10",cardGrid:"bg-transparent",cardItem:"min-w-0",cardOverlay:"from-background/95 via-background/85 to-transparent",cardScrollArea:"bg-transparent",cardSelected:"bg-primary/10 ring-primary",cardUnselected:"border-border",cardViewport:"bg-transparent",cellBorder:"border-border/40",columnGroupHeader:"bg-muted/50 font-semibold",dragActive:"rounded-md border-dashed border-primary",emptyState:"border-border/60 bg-background/70",footer:"border-border bg-card",headerSortIcon:"text-muted-foreground",mutedText:"text-muted-foreground",paginationSelectTrigger:"border-input bg-card",paginationTotal:"text-muted-foreground",pinnedColumn:"border-border",pinnedUtilityColumn:"bg-card",resizeHandle:"after:bg-border hover:after:bg-primary",resizeHandleActive:"after:bg-primary",row:"hover:bg-muted/50 data-[state=selected]:!bg-primary/10",rowSelected:"!bg-primary/10",tableContainer:"border-border bg-card text-card-foreground",tableStickyHeader:"sticky top-0 z-30 bg-card/95 backdrop-blur [&_th]:border-border [&_th]:bg-card/95",toolbarCompactIconButton:"size-7",toolbarIconButton:"text-muted-foreground hover:text-foreground",toolbarInputButton:"border-input bg-card"},Button:U,Card:N,CardDescription:z,CardFooter:K,Checkbox:_,DropdownMenuCheckboxItem:W,DropdownMenuContent:O,DropdownMenuItem:V,DropdownMenuLabel:J,DropdownMenuRadioItem:q,DropdownMenuSeparator:Q,DropdownMenuSubContent:X,DropdownMenuSubTrigger:Y,Empty:Z,EmptyDescription:$,EmptyMedia:j,Input:rr,InputGroup:er,InputGroupAddon:tr,InputGroupInput:or,ScrollBar:ar,SelectContent:dr,SelectItem:ir,SelectLabel:cr,SelectSeparator:ur,SelectTrigger:nr,Separator:pr,Skeleton:br,TableFooter:sr,TableHead:gr,TooltipContent:mr};export{xr as a};//# sourceMappingURL=chunk-MYQZYDHU.js.map -//# sourceMappingURL=chunk-MYQZYDHU.js.map \ No newline at end of file +import {X as X$1,a as a$1,c,e,g,h,i,j as j$1,k,l,m,n,p,o,q as q$1,u,s,z as z$1,w,y,x,H,I,J as J$1,L,K as K$1,M,b,N as N$1,R,T,W as W$1}from'./chunk-7FUCHMMB.js';import {a}from'./chunk-XTVBESM5.js';import'react';import {jsx}from'react/jsx-runtime';function r(H,L){return function({className:A,...R}){return jsx(H,{className:a(L,A),...R})}}var U=r(a$1,"rounded-md text-foreground data-[variant=default]:border-primary data-[variant=default]:bg-primary data-[variant=default]:text-primary-foreground data-[variant=outline]:border-input data-[variant=outline]:bg-card data-[variant=outline]:hover:bg-accent data-[variant=outline]:hover:text-accent-foreground data-[variant=secondary]:border-secondary data-[variant=secondary]:bg-secondary data-[variant=secondary]:text-secondary-foreground data-[variant=ghost]:border-transparent data-[variant=ghost]:bg-transparent data-[variant=ghost]:hover:bg-accent data-[variant=ghost]:hover:text-accent-foreground data-[variant=destructive]:border-destructive data-[variant=destructive]:bg-destructive data-[variant=destructive]:text-destructive-foreground data-[variant=link]:border-transparent data-[variant=link]:bg-transparent"),N=r(c,"rounded-xl border-border bg-card text-card-foreground shadow-sm ring-0"),z=r(e,"text-muted-foreground"),K=r(g,"border-t border-border/60 bg-muted/50"),_=r(h,"border-input bg-card ring-ring/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground data-checked:ring-primary"),O=r(i,"border-border bg-popover text-popover-foreground shadow-md"),V=r(j$1,"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10"),W=r(k,"focus:bg-accent focus:text-accent-foreground"),q=r(l,"focus:bg-accent focus:text-accent-foreground"),J=r(m,"text-muted-foreground"),Q=r(n,"bg-border"),X=r(p,"border-border bg-popover text-popover-foreground shadow-md"),Y=r(o,"focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground"),Z=r(q$1,"rounded-2xl border-border/60 bg-background/70"),$=r(u,"text-muted-foreground"),j=r(s,"[&[data-variant=icon]]:bg-muted [&[data-variant=icon]]:text-foreground"),rr=r(z$1,"rounded-md border-input bg-card text-foreground placeholder:text-muted-foreground"),er=r(w,"rounded-md border-input bg-card text-foreground"),tr=r(y,"text-muted-foreground"),or=r(x,"bg-transparent"),ar=r(H,"[&>[data-slot=scroll-area-thumb]]:bg-border"),nr=r(I,"rounded-md border-input bg-card text-foreground"),dr=r(J$1,"border-border bg-popover text-popover-foreground shadow-md"),ir=r(L,"focus:bg-accent focus:text-accent-foreground"),cr=r(K$1,"text-muted-foreground"),ur=r(M,"bg-border"),pr=r(b,"bg-border"),br=r(N$1,"bg-muted"),sr=r(R,"border-border bg-muted/50"),gr=r(T,"text-foreground"),mr=r(W$1,"bg-foreground text-background ring-1 ring-foreground/10 [&>svg]:bg-foreground [&>svg]:fill-foreground"),xr={...X$1,rootClassName:"dtp-shadcn",classNames:{card:"hover:bg-muted/50 data-[state=selected]:bg-primary/10",cardGrid:"bg-transparent",cardItem:"min-w-0",cardOverlay:"from-background/95 via-background/85 to-transparent",cardScrollArea:"bg-transparent",cardSelected:"bg-primary/10 ring-primary",cardUnselected:"border-border",cardViewport:"bg-transparent",cellBorder:"border-border/40",cellSelected:"!bg-primary/10 ring-1 ring-inset ring-primary/40",columnGroupHeader:"bg-muted/50 font-semibold",dragActive:"rounded-md border-dashed border-primary",emptyState:"border-border/60 bg-background/70",footer:"border-border bg-card",headerSortIcon:"text-muted-foreground",mutedText:"text-muted-foreground",paginationSelectTrigger:"border-input bg-card",paginationTotal:"text-muted-foreground",pinnedColumn:"border-border",pinnedUtilityColumn:"bg-card",resizeHandle:"after:bg-border hover:after:bg-primary",resizeHandleActive:"after:bg-primary",row:"hover:bg-muted/50 data-[state=selected]:!bg-primary/10",rowSelected:"!bg-primary/10",tableContainer:"border-border bg-card text-card-foreground",tableStickyHeader:"sticky top-0 z-30 bg-card/95 backdrop-blur [&_th]:border-border [&_th]:bg-card/95",toolbarCompactIconButton:"size-7",toolbarIconButton:"text-muted-foreground hover:text-foreground",toolbarInputButton:"border-input bg-card"},Button:U,Card:N,CardDescription:z,CardFooter:K,Checkbox:_,DropdownMenuCheckboxItem:W,DropdownMenuContent:O,DropdownMenuItem:V,DropdownMenuLabel:J,DropdownMenuRadioItem:q,DropdownMenuSeparator:Q,DropdownMenuSubContent:X,DropdownMenuSubTrigger:Y,Empty:Z,EmptyDescription:$,EmptyMedia:j,Input:rr,InputGroup:er,InputGroupAddon:tr,InputGroupInput:or,ScrollBar:ar,SelectContent:dr,SelectItem:ir,SelectLabel:cr,SelectSeparator:ur,SelectTrigger:nr,Separator:pr,Skeleton:br,TableFooter:sr,TableHead:gr,TooltipContent:mr};export{xr as a};//# sourceMappingURL=chunk-2NQXDLBI.js.map +//# sourceMappingURL=chunk-2NQXDLBI.js.map \ No newline at end of file diff --git a/dist/chunk-2NQXDLBI.js.map b/dist/chunk-2NQXDLBI.js.map new file mode 100644 index 0000000..620b6be --- /dev/null +++ b/dist/chunk-2NQXDLBI.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/adapters/shadcn/index.tsx"],"names":["withClassName","Component","defaultClassName","className","props","jsx","cn","ShadcnButton","Button","ShadcnCard","Card","ShadcnCardDescription","CardDescription","ShadcnCardFooter","CardFooter","ShadcnCheckbox","Checkbox","ShadcnDropdownMenuContent","DropdownMenuContent","ShadcnDropdownMenuItem","DropdownMenuItem","ShadcnDropdownMenuCheckboxItem","DropdownMenuCheckboxItem","ShadcnDropdownMenuRadioItem","DropdownMenuRadioItem","ShadcnDropdownMenuLabel","DropdownMenuLabel","ShadcnDropdownMenuSeparator","DropdownMenuSeparator","ShadcnDropdownMenuSubContent","DropdownMenuSubContent","ShadcnDropdownMenuSubTrigger","DropdownMenuSubTrigger","ShadcnEmpty","Empty","ShadcnEmptyDescription","EmptyDescription","ShadcnEmptyMedia","EmptyMedia","ShadcnInput","Input","ShadcnInputGroup","InputGroup","ShadcnInputGroupAddon","InputGroupAddon","ShadcnInputGroupInput","InputGroupInput","ShadcnScrollBar","ScrollBar","ShadcnSelectTrigger","SelectTrigger","ShadcnSelectContent","SelectContent","ShadcnSelectItem","SelectItem","ShadcnSelectLabel","SelectLabel","ShadcnSelectSeparator","SelectSeparator","ShadcnSeparator","Separator","ShadcnSkeleton","Skeleton","ShadcnTableFooter","TableFooter","ShadcnTableHead","TableHead","ShadcnTooltipContent","TooltipContent","shadcnUiKit","primitiveUiKit"],"mappings":"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","file":"chunk-2NQXDLBI.js","sourcesContent":["import * as React from \"react\";\nimport type { DataTableUiKit } from \"../../core/ui-kit\";\nimport {\n Button as PrimitiveButton,\n Card as PrimitiveCard,\n CardDescription as PrimitiveCardDescription,\n CardFooter as PrimitiveCardFooter,\n Checkbox as PrimitiveCheckbox,\n DropdownMenuCheckboxItem as PrimitiveDropdownMenuCheckboxItem,\n DropdownMenuContent as PrimitiveDropdownMenuContent,\n DropdownMenuItem as PrimitiveDropdownMenuItem,\n DropdownMenuLabel as PrimitiveDropdownMenuLabel,\n DropdownMenuRadioItem as PrimitiveDropdownMenuRadioItem,\n DropdownMenuSeparator as PrimitiveDropdownMenuSeparator,\n DropdownMenuSubContent as PrimitiveDropdownMenuSubContent,\n DropdownMenuSubTrigger as PrimitiveDropdownMenuSubTrigger,\n Empty as PrimitiveEmpty,\n EmptyDescription as PrimitiveEmptyDescription,\n EmptyMedia as PrimitiveEmptyMedia,\n Input as PrimitiveInput,\n InputGroup as PrimitiveInputGroup,\n InputGroupAddon as PrimitiveInputGroupAddon,\n InputGroupInput as PrimitiveInputGroupInput,\n ScrollBar as PrimitiveScrollBar,\n SelectContent as PrimitiveSelectContent,\n SelectItem as PrimitiveSelectItem,\n SelectLabel as PrimitiveSelectLabel,\n SelectSeparator as PrimitiveSelectSeparator,\n SelectTrigger as PrimitiveSelectTrigger,\n Separator as PrimitiveSeparator,\n Skeleton as PrimitiveSkeleton,\n TableFooter as PrimitiveTableFooter,\n TableHead as PrimitiveTableHead,\n TooltipContent as PrimitiveTooltipContent,\n primitiveUiKit,\n} from \"../../core/primitive-ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nfunction withClassName(\n Component: React.ComponentType,\n defaultClassName: string,\n) {\n return function Wrapped({ className, ...props }: TProps) {\n return (\n \n );\n };\n}\n\nconst ShadcnButton = withClassName(\n PrimitiveButton,\n \"rounded-md text-foreground data-[variant=default]:border-primary data-[variant=default]:bg-primary data-[variant=default]:text-primary-foreground data-[variant=outline]:border-input data-[variant=outline]:bg-card data-[variant=outline]:hover:bg-accent data-[variant=outline]:hover:text-accent-foreground data-[variant=secondary]:border-secondary data-[variant=secondary]:bg-secondary data-[variant=secondary]:text-secondary-foreground data-[variant=ghost]:border-transparent data-[variant=ghost]:bg-transparent data-[variant=ghost]:hover:bg-accent data-[variant=ghost]:hover:text-accent-foreground data-[variant=destructive]:border-destructive data-[variant=destructive]:bg-destructive data-[variant=destructive]:text-destructive-foreground data-[variant=link]:border-transparent data-[variant=link]:bg-transparent\",\n);\nconst ShadcnCard = withClassName(\n PrimitiveCard,\n \"rounded-xl border-border bg-card text-card-foreground shadow-sm ring-0\",\n);\nconst ShadcnCardDescription = withClassName(\n PrimitiveCardDescription,\n \"text-muted-foreground\",\n);\nconst ShadcnCardFooter = withClassName(\n PrimitiveCardFooter,\n \"border-t border-border/60 bg-muted/50\",\n);\nconst ShadcnCheckbox = withClassName(\n PrimitiveCheckbox,\n \"border-input bg-card ring-ring/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground data-checked:ring-primary\",\n);\nconst ShadcnDropdownMenuContent = withClassName(\n PrimitiveDropdownMenuContent,\n \"border-border bg-popover text-popover-foreground shadow-md\",\n);\nconst ShadcnDropdownMenuItem = withClassName(\n PrimitiveDropdownMenuItem,\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10\",\n);\nconst ShadcnDropdownMenuCheckboxItem = withClassName(\n PrimitiveDropdownMenuCheckboxItem,\n \"focus:bg-accent focus:text-accent-foreground\",\n);\nconst ShadcnDropdownMenuRadioItem = withClassName(\n PrimitiveDropdownMenuRadioItem,\n \"focus:bg-accent focus:text-accent-foreground\",\n);\nconst ShadcnDropdownMenuLabel = withClassName(\n PrimitiveDropdownMenuLabel,\n \"text-muted-foreground\",\n);\nconst ShadcnDropdownMenuSeparator = withClassName(\n PrimitiveDropdownMenuSeparator,\n \"bg-border\",\n);\nconst ShadcnDropdownMenuSubContent = withClassName(\n PrimitiveDropdownMenuSubContent,\n \"border-border bg-popover text-popover-foreground shadow-md\",\n);\nconst ShadcnDropdownMenuSubTrigger = withClassName(\n PrimitiveDropdownMenuSubTrigger,\n \"focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground\",\n);\nconst ShadcnEmpty = withClassName(\n PrimitiveEmpty,\n \"rounded-2xl border-border/60 bg-background/70\",\n);\nconst ShadcnEmptyDescription = withClassName(\n PrimitiveEmptyDescription,\n \"text-muted-foreground\",\n);\nconst ShadcnEmptyMedia = withClassName(\n PrimitiveEmptyMedia,\n \"[&[data-variant=icon]]:bg-muted [&[data-variant=icon]]:text-foreground\",\n);\nconst ShadcnInput = withClassName(\n PrimitiveInput,\n \"rounded-md border-input bg-card text-foreground placeholder:text-muted-foreground\",\n);\nconst ShadcnInputGroup = withClassName(\n PrimitiveInputGroup,\n \"rounded-md border-input bg-card text-foreground\",\n);\nconst ShadcnInputGroupAddon = withClassName(\n PrimitiveInputGroupAddon,\n \"text-muted-foreground\",\n);\nconst ShadcnInputGroupInput = withClassName(\n PrimitiveInputGroupInput,\n \"bg-transparent\",\n);\nconst ShadcnScrollBar = withClassName(\n PrimitiveScrollBar,\n \"[&>[data-slot=scroll-area-thumb]]:bg-border\",\n);\nconst ShadcnSelectTrigger = withClassName(\n PrimitiveSelectTrigger,\n \"rounded-md border-input bg-card text-foreground\",\n);\nconst ShadcnSelectContent = withClassName(\n PrimitiveSelectContent,\n \"border-border bg-popover text-popover-foreground shadow-md\",\n);\nconst ShadcnSelectItem = withClassName(\n PrimitiveSelectItem,\n \"focus:bg-accent focus:text-accent-foreground\",\n);\nconst ShadcnSelectLabel = withClassName(\n PrimitiveSelectLabel,\n \"text-muted-foreground\",\n);\nconst ShadcnSelectSeparator = withClassName(\n PrimitiveSelectSeparator,\n \"bg-border\",\n);\nconst ShadcnSeparator = withClassName(PrimitiveSeparator, \"bg-border\");\nconst ShadcnSkeleton = withClassName(PrimitiveSkeleton, \"bg-muted\");\nconst ShadcnTableFooter = withClassName(\n PrimitiveTableFooter,\n \"border-border bg-muted/50\",\n);\nconst ShadcnTableHead = withClassName(\n PrimitiveTableHead,\n \"text-foreground\",\n);\nconst ShadcnTooltipContent = withClassName(\n PrimitiveTooltipContent,\n \"bg-foreground text-background ring-1 ring-foreground/10 [&>svg]:bg-foreground [&>svg]:fill-foreground\",\n);\n\nexport const shadcnUiKit: DataTableUiKit = {\n ...primitiveUiKit,\n rootClassName: \"dtp-shadcn\",\n classNames: {\n card: \"hover:bg-muted/50 data-[state=selected]:bg-primary/10\",\n cardGrid: \"bg-transparent\",\n cardItem: \"min-w-0\",\n cardOverlay: \"from-background/95 via-background/85 to-transparent\",\n cardScrollArea: \"bg-transparent\",\n cardSelected: \"bg-primary/10 ring-primary\",\n cardUnselected: \"border-border\",\n cardViewport: \"bg-transparent\",\n cellBorder: \"border-border/40\",\n cellSelected: \"!bg-primary/10 ring-1 ring-inset ring-primary/40\",\n columnGroupHeader: \"bg-muted/50 font-semibold\",\n dragActive: \"rounded-md border-dashed border-primary\",\n emptyState: \"border-border/60 bg-background/70\",\n footer: \"border-border bg-card\",\n headerSortIcon: \"text-muted-foreground\",\n mutedText: \"text-muted-foreground\",\n paginationSelectTrigger: \"border-input bg-card\",\n paginationTotal: \"text-muted-foreground\",\n pinnedColumn: \"border-border\",\n pinnedUtilityColumn: \"bg-card\",\n resizeHandle: \"after:bg-border hover:after:bg-primary\",\n resizeHandleActive: \"after:bg-primary\",\n row: \"hover:bg-muted/50 data-[state=selected]:!bg-primary/10\",\n rowSelected: \"!bg-primary/10\",\n tableContainer: \"border-border bg-card text-card-foreground\",\n tableStickyHeader:\n \"sticky top-0 z-30 bg-card/95 backdrop-blur [&_th]:border-border [&_th]:bg-card/95\",\n toolbarCompactIconButton: \"size-7\",\n toolbarIconButton: \"text-muted-foreground hover:text-foreground\",\n toolbarInputButton: \"border-input bg-card\",\n },\n Button: ShadcnButton,\n Card: ShadcnCard,\n CardDescription: ShadcnCardDescription,\n CardFooter: ShadcnCardFooter,\n Checkbox: ShadcnCheckbox,\n DropdownMenuCheckboxItem: ShadcnDropdownMenuCheckboxItem,\n DropdownMenuContent: ShadcnDropdownMenuContent,\n DropdownMenuItem: ShadcnDropdownMenuItem,\n DropdownMenuLabel: ShadcnDropdownMenuLabel,\n DropdownMenuRadioItem: ShadcnDropdownMenuRadioItem,\n DropdownMenuSeparator: ShadcnDropdownMenuSeparator,\n DropdownMenuSubContent: ShadcnDropdownMenuSubContent,\n DropdownMenuSubTrigger: ShadcnDropdownMenuSubTrigger,\n Empty: ShadcnEmpty,\n EmptyDescription: ShadcnEmptyDescription,\n EmptyMedia: ShadcnEmptyMedia,\n Input: ShadcnInput,\n InputGroup: ShadcnInputGroup,\n InputGroupAddon: ShadcnInputGroupAddon,\n InputGroupInput: ShadcnInputGroupInput,\n ScrollBar: ShadcnScrollBar,\n SelectContent: ShadcnSelectContent,\n SelectItem: ShadcnSelectItem,\n SelectLabel: ShadcnSelectLabel,\n SelectSeparator: ShadcnSelectSeparator,\n SelectTrigger: ShadcnSelectTrigger,\n Separator: ShadcnSeparator,\n Skeleton: ShadcnSkeleton,\n TableFooter: ShadcnTableFooter,\n TableHead: ShadcnTableHead,\n TooltipContent: ShadcnTooltipContent,\n};\n"]} \ No newline at end of file diff --git a/dist/chunk-4P45F2OY.js b/dist/chunk-4P45F2OY.js new file mode 100644 index 0000000..47dba7a --- /dev/null +++ b/dist/chunk-4P45F2OY.js @@ -0,0 +1,3 @@ +import {a}from'./chunk-XTVBESM5.js';var _=Symbol("data-table-loading-row"),F=50;function U(e,t,n){if(e===true)return Object.fromEntries(n.flatMap(a=>a===t?[]:[[a,true]]));let r={...e};return r[t]?delete r[t]:r[t]=true,r}function z(e){return Array.from({length:e},(t,n)=>({[_]:true,index:n}))}function j(e){return !!(e&&typeof e=="object"&&_ in e)}function G(e){return `__loading__${e}`}function V(e){if(typeof e.meta?.minWidth=="number")return e.meta.minWidth;if(Object.prototype.hasOwnProperty.call(e,"minSize")){let t=e.minSize;if(typeof t=="number")return t}}function A(e){if("columns"in e&&Array.isArray(e.columns))return {...e,columns:e.columns.map(n=>A(n))};let t=e.meta?.filter;return !t||e.filterFn?e:{...e,filterFn:(n,r,a)=>{if(!x(a))return true;let o=n.getValue(r),i=t.getOptionValue?.(o,n.original)??g(o);if(t.type==="multi"||t.type==="faceted")return Array.isArray(a)?a.map(String).includes(i):true;if(t.type==="select"||t.type==="boolean")return i===String(a);if(t.type==="numberRange"){let u=C(a),c=Number(i),p=u.from===""?void 0:Number(u.from),d=u.to===""?void 0:Number(u.to);return Number.isNaN(c)?false:(p===void 0||Number.isNaN(p)||c>=p)&&(d===void 0||Number.isNaN(d)||c<=d)}if(t.type==="dateRange"){let u=C(a),c=k(i);return c?(!u.from||c>=String(u.from))&&(!u.to||c<=String(u.to)):false}let l=i.toLowerCase(),f=String(a).toLowerCase();switch(t.operator??"contains"){case "equals":return l===f;case "startsWith":return l.startsWith(f);case "endsWith":return l.endsWith(f);default:return l.includes(f)}}}}function M(e){let t=new Map,n=(r,a)=>{r.forEach((o,i)=>{if("columns"in o&&o.columns?.length){let l=o;n(o.columns,[...a,{id:D(o),freeReordering:l.freeReordering===true}]);return}t.set(D(o),a);});};return n(e,[]),t}function W(e,t,n){let r=n.get(e)??[],a=n.get(t)??[],o=0;for(;oi.freeReordering)}function S(e){let t=[],n=r=>{r.forEach((a,o)=>{if("columns"in a&&a.columns?.length){n(a.columns);return}t.push({column:a,index:o});});};return n(e),t}function B(e){return e.map(t=>typeof t=="string"?{label:h(t),value:t}:t)}function g(e){if(e==null)return "";if(e instanceof Date)return e.toISOString();if(typeof e=="object")try{return JSON.stringify(e)}catch{return ""}return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint"||typeof e=="symbol"?String(e):""}function x(e){return Array.isArray(e)?e.length>0:e&&typeof e=="object"?"from"in e||"to"in e?Object.values(e).some(x):true:e!=null&&e!==""}function C(e){if(!e||typeof e!="object"||Array.isArray(e))return {};let t=e;return {...typeof t.from=="string"||typeof t.from=="number"?{from:t.from}:{},...typeof t.to=="string"||typeof t.to=="number"?{to:t.to}:{}}}function k(e){if(e instanceof Date&&!Number.isNaN(e.getTime()))return e.toISOString().slice(0,10);let t=g(e);if(/^\d{4}-\d{2}-\d{2}/.test(t))return t.slice(0,10);let n=Date.parse(t);return Number.isNaN(n)?"":new Date(n).toISOString().slice(0,10)}function $(e){return g(e).trim().toLowerCase()}async function K({csvExport:e,table:t}){if(e===false)return;let n=e===true?{}:e,r=n.filename??"data-table.csv",a=n.scope??"filtered",o=n.columns?new Set(n.columns):void 0,i=t.getVisibleLeafColumns().filter(s=>!O(s.id)&&s.id!=="__spacer__"&&(!o||o.has(s.id))),l=R(t,a),f=[];(n.includeHeaders??true)&&f.push(i.map(s=>typeof s.columnDef.header=="string"?s.columnDef.header:h(s.id)));for(let s of l)f.push(i.map(m=>{let y=s.getValue(m.id);return n.getCellValue?n.getCellValue({row:s.original,rowId:s.id,columnId:m.id,value:y}):y}));let u=n.lineEnding??`\r +`,c=n.escapeFormulaValues??true,p=f.map(s=>s.map(m=>E(m,c)).join(",")).join(u);if(n.onExport){await n.onExport({csv:p,filename:r,rows:l.map(s=>s.original),scope:a});return}if(typeof window>"u")return;let d=new Blob([p],{type:"text/csv;charset=utf-8"}),T=window.URL.createObjectURL(d),b=window.document.createElement("a");b.href=T,b.download=r,b.click(),window.URL.revokeObjectURL(T);}function R(e,t){switch(t){case "page":return e.getRowModel().rows;case "selected":return e.getPrePaginationRowModel().rows.filter(n=>n.getIsSelected());case "all":return e.getCoreRowModel().rows;default:return e.getPrePaginationRowModel().rows}}function E(e,t){let n=g(e);return t&&typeof e=="string"&&/^[\t\r ]*[=+\-@]/.test(e)&&(n=`'${n}`),/[",\n\r]/.test(n)?`"${n.replace(/"/g,'""')}"`:n}function q(e){let t=[],n=[];for(let{column:r,index:a}of S(e)){let o=D(r);r.meta?.fixed==="left"&&t.push(o),r.meta?.fixed==="right"&&n.push(o);}return {left:t,right:n}}function D(e,t){if(e.id)return e.id;let n=N(e);if(n)return n.replace(/\./g,"_");if(typeof e.header=="string")return e.header;throw new Error("Data table columns using an accessor function or non-string header must define a unique id.")}var L=new Set(["__select__","__expand__","__actions__","__spacer__"]);function H(e){let t=new Set,n=r=>{r.forEach((a,o)=>{let i=D(a);if(L.has(i))throw new Error(`Data table column id "${i}" is reserved for an internal column.`);if(t.has(i))throw new Error(`Duplicate data table column id "${i}".`);t.add(i),"columns"in a&&a.columns?.length&&n(a.columns);});};n(e);}function N(e){if("accessorKey"in e&&typeof e.accessorKey=="string")return e.accessorKey}function Q(e){let t=e.getIsPinned();return t||(e.id==="__select__"||e.id==="__expand__"?"left":e.id==="__actions__"?"right":e.columnDef.meta?.fixed)}function Z(e,t,n){let r=n?.isUtilityColumn??false;return a("sticky backdrop-blur box-border",t.pinnedColumn,!r&&"border-dotted",r?t.pinnedUtilityColumn:void 0,e==="left"?"border-r-1":"border-l")}function O(e){return e==="__select__"||e==="__expand__"||e==="__actions__"}var P=["[data-row-click-ignore='true']","a[href]","button","input","select","summary","textarea","[contenteditable='true']","[role='button']","[role='link']"].join(",");function J(e,t){if(!(e instanceof Element))return false;let n=e.closest(P);return !!(n&&n!==t&&t.contains(n))}function Y(e){switch(e){case "compact":return "h-8 py-1";case "spacious":return "h-14 py-4";default:return}}function X(e){switch(e){case "compact":return "py-1.5";case "spacious":return "py-4";default:return}}function v(e,t,n){let r=e.includes(t)?e.slice():[...e,t],a=r.indexOf(t),o=r.indexOf(n);if(a<0||o<0||a===o)return r;let[i]=r.splice(a,1);return r.splice(o,0,i),r}function h(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,t=>t.toUpperCase())}export{v as A,h as B,F as a,U as b,z as c,j as d,G as e,V as f,A as g,M as h,W as i,S as j,B as k,g as l,x as m,$ as n,K as o,R as p,q,D as r,H as s,N as t,Q as u,Z as v,O as w,J as x,Y as y,X as z};//# sourceMappingURL=chunk-4P45F2OY.js.map +//# sourceMappingURL=chunk-4P45F2OY.js.map \ No newline at end of file diff --git a/dist/chunk-4P45F2OY.js.map b/dist/chunk-4P45F2OY.js.map new file mode 100644 index 0000000..8f9bc06 --- /dev/null +++ b/dist/chunk-4P45F2OY.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/core/data-table/data-table-utils.ts"],"names":["DATA_TABLE_LOADING_ROW","UTILITY_COLUMN_SIZE","toggleDataTableExpandedState","current","rowId","loadedRowIds","loadedRowId","next","createDataTableLoadingRows","count","_","index","isDataTableLoadingRow","row","getDataTableLoadingRowId","getConfiguredColumnMinWidth","column","minSize","decorateFilterableColumn","childColumn","filter","columnId","filterValue","hasFilterValue","value","optionValue","normalizeFilterValue","range","normalizeRangeFilterValue","numericValue","from","to","dateValue","normalizeDateFilterValue","normalizedValue","normalizedQuery","getDataTableColumnGroupPaths","columns","paths","visit","currentColumns","parentPath","group","getColumnId","canReorderDataTableColumn","sourceColumnId","targetColumnId","groupPaths","sourcePath","targetPath","commonLength","getDataTableLeafColumns","leaves","normalizeColumnFilterOptions","options","option","startCase","normalized","timestamp","normalizeDataTableSearchText","exportDataTableCsv","csvExport","table","filename","scope","exportColumnIds","isUtilityColumnId","rows","getDataTableExportRows","csvRows","lineEnding","escapeFormulaValues","csv","escapeCsvCell","blob","url","anchor","text","getInitialColumnPinning","left","right","_index","accessorKey","getAccessorKey","RESERVED_DATA_TABLE_COLUMN_IDS","validateDataTableColumnIds","ids","id","getFixedSide","pinnedSide","getPinnedColumnClassName","side","uiClassNames","isUtilityColumn","cn","DATA_TABLE_INTERACTIVE_TARGET_SELECTOR","isDataTableInteractiveTarget","target","boundary","interactiveTarget","getDensityHeaderClassName","density","getDensityCellClassName","moveColumnInOrder","currentOrder","order","sourceIndex","targetIndex","source","character"],"mappings":"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","file":"chunk-4P45F2OY.js","sourcesContent":["import type {\n Column,\n ColumnDef,\n ColumnPinningState,\n ExpandedState,\n Row,\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableColumnFilterOption,\n DataTableCsvExportOptions,\n DataTableCsvExportScope,\n DataTableDensity,\n DataTableLabels,\n} from \"../types\";\nimport type { DataTableUiClassNames } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nconst DATA_TABLE_LOADING_ROW = Symbol(\"data-table-loading-row\");\n\nexport const UTILITY_COLUMN_SIZE = 50;\n\nexport function toggleDataTableExpandedState(\n current: ExpandedState,\n rowId: string,\n loadedRowIds: Array,\n): ExpandedState {\n if (current === true) {\n return Object.fromEntries(\n loadedRowIds.flatMap((loadedRowId) =>\n loadedRowId === rowId ? [] : [[loadedRowId, true]],\n ),\n );\n }\n\n const next = { ...current };\n if (next[rowId]) {\n delete next[rowId];\n } else {\n next[rowId] = true;\n }\n return next;\n}\n\ntype DataTableLoadingRow = {\n [DATA_TABLE_LOADING_ROW]: true;\n index: number;\n};\n\nexport function createDataTableLoadingRows(count: number) {\n return Array.from({ length: count }, (_, index) => {\n return {\n [DATA_TABLE_LOADING_ROW]: true,\n index,\n } as DataTableLoadingRow as TData;\n });\n}\n\nexport function isDataTableLoadingRow(\n row: unknown,\n): row is DataTableLoadingRow {\n return Boolean(\n row &&\n typeof row === \"object\" &&\n DATA_TABLE_LOADING_ROW in (row as Record),\n );\n}\n\nexport function getDataTableLoadingRowId(index: number) {\n return `__loading__${index}`;\n}\n\nexport function getConfiguredColumnMinWidth(\n column: DataTableColumnDef,\n) {\n if (typeof column.meta?.minWidth === \"number\") {\n return column.meta.minWidth;\n }\n\n if (Object.prototype.hasOwnProperty.call(column, \"minSize\")) {\n const minSize = (column as { minSize?: unknown }).minSize;\n\n if (typeof minSize === \"number\") {\n return minSize;\n }\n }\n\n return undefined;\n}\n\nexport function decorateFilterableColumn(\n column: DataTableColumnDef,\n): ColumnDef {\n if (\"columns\" in column && Array.isArray(column.columns)) {\n return {\n ...column,\n columns: column.columns.map((childColumn) =>\n decorateFilterableColumn(\n childColumn as DataTableColumnDef,\n ),\n ),\n };\n }\n\n const filter = column.meta?.filter;\n if (!filter || column.filterFn) {\n return column;\n }\n\n return {\n ...column,\n filterFn: (row, columnId, filterValue) => {\n if (!hasFilterValue(filterValue)) {\n return true;\n }\n\n const value = row.getValue(columnId);\n const optionValue =\n filter.getOptionValue?.(value, row.original) ??\n normalizeFilterValue(value);\n\n if (filter.type === \"multi\" || filter.type === \"faceted\") {\n return Array.isArray(filterValue)\n ? filterValue.map(String).includes(optionValue)\n : true;\n }\n\n if (filter.type === \"select\") {\n return optionValue === String(filterValue);\n }\n\n if (filter.type === \"boolean\") {\n return optionValue === String(filterValue);\n }\n\n if (filter.type === \"numberRange\") {\n const range = normalizeRangeFilterValue(filterValue);\n const numericValue = Number(optionValue);\n const from = range.from === \"\" ? undefined : Number(range.from);\n const to = range.to === \"\" ? undefined : Number(range.to);\n\n if (Number.isNaN(numericValue)) {\n return false;\n }\n\n return (\n (from === undefined || Number.isNaN(from) || numericValue >= from) &&\n (to === undefined || Number.isNaN(to) || numericValue <= to)\n );\n }\n\n if (filter.type === \"dateRange\") {\n const range = normalizeRangeFilterValue(filterValue);\n const dateValue = normalizeDateFilterValue(optionValue);\n\n if (!dateValue) {\n return false;\n }\n\n return (\n (!range.from || dateValue >= String(range.from)) &&\n (!range.to || dateValue <= String(range.to))\n );\n }\n\n const normalizedValue = optionValue.toLowerCase();\n const normalizedQuery = String(filterValue).toLowerCase();\n\n switch (filter.operator ?? \"contains\") {\n case \"equals\":\n return normalizedValue === normalizedQuery;\n case \"startsWith\":\n return normalizedValue.startsWith(normalizedQuery);\n case \"endsWith\":\n return normalizedValue.endsWith(normalizedQuery);\n default:\n return normalizedValue.includes(normalizedQuery);\n }\n },\n };\n}\n\nexport type DataTableLeafColumn = {\n column: DataTableColumnDef;\n index: number;\n};\n\nexport type DataTableColumnGroupPathSegment = {\n id: string;\n freeReordering: boolean;\n};\n\nexport type DataTableColumnGroupPaths = ReadonlyMap<\n string,\n ReadonlyArray\n>;\n\n/**\n * Returns the nested shared-header path for every leaf. The path deliberately\n * uses stable column ids rather than header text so it also works with custom\n * header render functions.\n */\nexport function getDataTableColumnGroupPaths(\n columns: Array>,\n): DataTableColumnGroupPaths {\n const paths = new Map<\n string,\n ReadonlyArray\n >();\n\n const visit = (\n currentColumns: Array>,\n parentPath: ReadonlyArray,\n ) => {\n currentColumns.forEach((column, index) => {\n if (\"columns\" in column && column.columns?.length) {\n const group = column as DataTableColumnDef & {\n freeReordering?: boolean;\n };\n visit(column.columns, [\n ...parentPath,\n {\n id: getColumnId(column, index),\n freeReordering: group.freeReordering === true,\n },\n ]);\n return;\n }\n\n paths.set(getColumnId(column, index), parentPath);\n });\n };\n\n visit(columns, []);\n return paths;\n}\n\n/**\n * Locked groups preserve their shared heading by default. Reordering within a\n * common group path is always allowed; leaving or entering a group requires\n * each crossed group to explicitly opt into `freeReordering`.\n */\nexport function canReorderDataTableColumn(\n sourceColumnId: string,\n targetColumnId: string,\n groupPaths: DataTableColumnGroupPaths,\n) {\n const sourcePath = groupPaths.get(sourceColumnId) ?? [];\n const targetPath = groupPaths.get(targetColumnId) ?? [];\n let commonLength = 0;\n\n while (\n commonLength < sourcePath.length &&\n commonLength < targetPath.length &&\n sourcePath[commonLength]?.id === targetPath[commonLength]?.id\n ) {\n commonLength += 1;\n }\n\n return [\n ...sourcePath.slice(commonLength),\n ...targetPath.slice(commonLength),\n ].every((group) => group.freeReordering);\n}\n\nexport function getDataTableLeafColumns(\n columns: Array>,\n) {\n const leaves: Array> = [];\n\n const visit = (currentColumns: Array>) => {\n currentColumns.forEach((column, index) => {\n if (\"columns\" in column && column.columns?.length) {\n visit(column.columns);\n return;\n }\n\n leaves.push({ column, index });\n });\n };\n\n visit(columns);\n return leaves;\n}\n\nexport function normalizeColumnFilterOptions(\n options: Array,\n) {\n return options.map((option) =>\n typeof option === \"string\"\n ? { label: startCase(option), value: option }\n : option,\n );\n}\n\nexport function normalizeFilterValue(value: unknown) {\n if (value == null) {\n return \"\";\n }\n\n if (value instanceof Date) {\n return value.toISOString();\n }\n\n if (typeof value === \"object\") {\n try {\n return JSON.stringify(value);\n } catch {\n return \"\";\n }\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n typeof value === \"bigint\" ||\n typeof value === \"symbol\"\n ) {\n return String(value);\n }\n\n return \"\";\n}\n\nexport function hasFilterValue(value: unknown) {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n\n if (value && typeof value === \"object\") {\n if (\"from\" in value || \"to\" in value) {\n return Object.values(value).some(hasFilterValue);\n }\n\n return true;\n }\n\n return value !== undefined && value !== null && value !== \"\";\n}\n\nfunction normalizeRangeFilterValue(value: unknown): {\n from?: string | number;\n to?: string | number;\n} {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return {};\n }\n\n const range = value as { from?: unknown; to?: unknown };\n return {\n ...(typeof range.from === \"string\" || typeof range.from === \"number\"\n ? { from: range.from }\n : {}),\n ...(typeof range.to === \"string\" || typeof range.to === \"number\"\n ? { to: range.to }\n : {}),\n };\n}\n\nfunction normalizeDateFilterValue(value: unknown) {\n if (value instanceof Date && !Number.isNaN(value.getTime())) {\n return value.toISOString().slice(0, 10);\n }\n\n const normalized = normalizeFilterValue(value);\n if (/^\\d{4}-\\d{2}-\\d{2}/.test(normalized)) {\n return normalized.slice(0, 10);\n }\n\n const timestamp = Date.parse(normalized);\n return Number.isNaN(timestamp)\n ? \"\"\n : new Date(timestamp).toISOString().slice(0, 10);\n}\n\nexport function dataTableGlobalFilterFn(\n row: Row,\n columnId: string,\n filterValue: unknown,\n) {\n const normalizedQuery = normalizeFilterValue(filterValue)\n .trim()\n .toLowerCase();\n\n if (!normalizedQuery) {\n return true;\n }\n\n return normalizeFilterValue(row.getValue(columnId))\n .toLowerCase()\n .includes(normalizedQuery);\n}\n\nexport function normalizeDataTableSearchText(value: unknown) {\n return normalizeFilterValue(value).trim().toLowerCase();\n}\n\nexport async function exportDataTableCsv({\n csvExport,\n table,\n}: {\n csvExport: boolean | DataTableCsvExportOptions;\n table: TanStackTable;\n labels: DataTableLabels;\n}) {\n if (csvExport === false) {\n return;\n }\n\n const options: DataTableCsvExportOptions =\n csvExport === true ? {} : csvExport;\n const filename = options.filename ?? \"data-table.csv\";\n const scope = options.scope ?? \"filtered\";\n const exportColumnIds = options.columns\n ? new Set(options.columns)\n : undefined;\n const columns = table\n .getVisibleLeafColumns()\n .filter(\n (column) =>\n !isUtilityColumnId(column.id) &&\n column.id !== \"__spacer__\" &&\n (!exportColumnIds || exportColumnIds.has(column.id)),\n );\n const rows = getDataTableExportRows(table, scope);\n const csvRows: Array> = [];\n\n if (options.includeHeaders ?? true) {\n csvRows.push(\n columns.map((column) =>\n typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : startCase(column.id),\n ),\n );\n }\n\n for (const row of rows) {\n csvRows.push(\n columns.map((column) => {\n const value = row.getValue(column.id);\n return options.getCellValue\n ? options.getCellValue({\n row: row.original,\n rowId: row.id,\n columnId: column.id,\n value,\n })\n : value;\n }),\n );\n }\n\n const lineEnding = options.lineEnding ?? \"\\r\\n\";\n const escapeFormulaValues = options.escapeFormulaValues ?? true;\n const csv = csvRows\n .map((row) =>\n row\n .map((value) => escapeCsvCell(value, escapeFormulaValues))\n .join(\",\"),\n )\n .join(lineEnding);\n\n if (options.onExport) {\n await options.onExport({\n csv,\n filename,\n rows: rows.map((row) => row.original),\n scope,\n });\n return;\n }\n\n if (typeof window === \"undefined\") {\n return;\n }\n\n const blob = new Blob([csv], { type: \"text/csv;charset=utf-8\" });\n const url = window.URL.createObjectURL(blob);\n const anchor = window.document.createElement(\"a\");\n anchor.href = url;\n anchor.download = filename;\n anchor.click();\n window.URL.revokeObjectURL(url);\n}\n\nexport function getDataTableExportRows(\n table: TanStackTable,\n scope: DataTableCsvExportScope,\n) {\n switch (scope) {\n case \"page\":\n return table.getRowModel().rows;\n case \"selected\":\n return table\n .getPrePaginationRowModel()\n .rows.filter((row) => row.getIsSelected());\n case \"all\":\n return table.getCoreRowModel().rows;\n default:\n return table.getPrePaginationRowModel().rows;\n }\n}\n\nfunction escapeCsvCell(value: unknown, escapeFormulaValues: boolean) {\n let text = normalizeFilterValue(value);\n if (\n escapeFormulaValues &&\n typeof value === \"string\" &&\n /^[\\t\\r ]*[=+\\-@]/.test(value)\n ) {\n text = `'${text}`;\n }\n if (/[\",\\n\\r]/.test(text)) {\n return `\"${text.replace(/\"/g, '\"\"')}\"`;\n }\n return text;\n}\n\nexport function getInitialColumnPinning(\n columns: Array>,\n): ColumnPinningState {\n const left: Array = [];\n const right: Array = [];\n\n for (const { column, index } of getDataTableLeafColumns(columns)) {\n const columnId = getColumnId(column, index);\n if (column.meta?.fixed === \"left\") {\n left.push(columnId);\n }\n if (column.meta?.fixed === \"right\") {\n right.push(columnId);\n }\n }\n\n return { left, right };\n}\n\nexport function getColumnId(\n column: DataTableColumnDef,\n _index?: number,\n) {\n if (column.id) {\n return column.id;\n }\n\n const accessorKey = getAccessorKey(column);\n if (accessorKey) {\n return accessorKey.replace(/\\./g, \"_\");\n }\n\n if (typeof column.header === \"string\") {\n return column.header;\n }\n\n throw new Error(\n \"Data table columns using an accessor function or non-string header must define a unique id.\",\n );\n}\n\nconst RESERVED_DATA_TABLE_COLUMN_IDS = new Set([\n \"__select__\",\n \"__expand__\",\n \"__actions__\",\n \"__spacer__\",\n]);\n\nexport function validateDataTableColumnIds(\n columns: Array>,\n) {\n const ids = new Set();\n\n const visit = (currentColumns: Array>) => {\n currentColumns.forEach((column, index) => {\n const id = getColumnId(column, index);\n if (RESERVED_DATA_TABLE_COLUMN_IDS.has(id)) {\n throw new Error(\n `Data table column id \"${id}\" is reserved for an internal column.`,\n );\n }\n if (ids.has(id)) {\n throw new Error(`Duplicate data table column id \"${id}\".`);\n }\n ids.add(id);\n\n if (\"columns\" in column && column.columns?.length) {\n visit(column.columns);\n }\n });\n };\n\n visit(columns);\n}\n\nexport function getAccessorKey(\n column: DataTableColumnDef,\n) {\n if (\"accessorKey\" in column && typeof column.accessorKey === \"string\") {\n return column.accessorKey;\n }\n\n return undefined;\n}\n\nexport function getFixedSide(column: Column) {\n const pinnedSide = column.getIsPinned();\n if (pinnedSide) {\n return pinnedSide;\n }\n\n if (column.id === \"__select__\") {\n return \"left\" as const;\n }\n\n if (column.id === \"__expand__\") {\n return \"left\" as const;\n }\n\n if (column.id === \"__actions__\") {\n return \"right\" as const;\n }\n\n const meta = (column.columnDef as DataTableColumnDef).meta;\n return meta?.fixed;\n}\n\nexport function getPinnedColumnClassName(\n side: \"left\" | \"right\",\n uiClassNames: DataTableUiClassNames,\n options?: { isUtilityColumn?: boolean },\n) {\n const isUtilityColumn = options?.isUtilityColumn ?? false;\n return cn(\n \"sticky backdrop-blur box-border\",\n uiClassNames.pinnedColumn,\n !isUtilityColumn && \"border-dotted\",\n isUtilityColumn ? uiClassNames.pinnedUtilityColumn : undefined,\n side === \"left\" ? \"border-r-1\" : \"border-l\",\n );\n}\n\nexport function isUtilityColumnId(columnId: string) {\n return (\n columnId === \"__select__\" ||\n columnId === \"__expand__\" ||\n columnId === \"__actions__\"\n );\n}\n\nconst DATA_TABLE_INTERACTIVE_TARGET_SELECTOR = [\n \"[data-row-click-ignore='true']\",\n \"a[href]\",\n \"button\",\n \"input\",\n \"select\",\n \"summary\",\n \"textarea\",\n \"[contenteditable='true']\",\n \"[role='button']\",\n \"[role='link']\",\n].join(\",\");\n\nexport function isDataTableInteractiveTarget(\n target: EventTarget | null,\n boundary: Element,\n) {\n if (!(target instanceof Element)) {\n return false;\n }\n\n const interactiveTarget = target.closest(\n DATA_TABLE_INTERACTIVE_TARGET_SELECTOR,\n );\n return Boolean(\n interactiveTarget &&\n interactiveTarget !== boundary &&\n boundary.contains(interactiveTarget),\n );\n}\n\nexport function getDensityHeaderClassName(density: DataTableDensity) {\n switch (density) {\n case \"compact\":\n return \"h-8 py-1\";\n case \"spacious\":\n return \"h-14 py-4\";\n case \"comfortable\":\n default:\n return undefined;\n }\n}\n\nexport function getDensityCellClassName(density: DataTableDensity) {\n switch (density) {\n case \"compact\":\n return \"py-1.5\";\n case \"spacious\":\n return \"py-4\";\n case \"comfortable\":\n default:\n return undefined;\n }\n}\n\nexport function moveColumnInOrder(\n currentOrder: Array,\n sourceColumnId: string,\n targetColumnId: string,\n) {\n const order = currentOrder.includes(sourceColumnId)\n ? currentOrder.slice()\n : [...currentOrder, sourceColumnId];\n const sourceIndex = order.indexOf(sourceColumnId);\n const targetIndex = order.indexOf(targetColumnId);\n\n if (sourceIndex < 0 || targetIndex < 0 || sourceIndex === targetIndex) {\n return order;\n }\n\n const [source] = order.splice(sourceIndex, 1);\n order.splice(targetIndex, 0, source);\n return order;\n}\n\nexport function startCase(value: string) {\n return value\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .replace(/[_-]+/g, \" \")\n .replace(/\\s+/g, \" \")\n .trim()\n .replace(/\\b\\w/g, (character) => character.toUpperCase());\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-4UITEBLL.js b/dist/chunk-4UITEBLL.js new file mode 100644 index 0000000..c103179 --- /dev/null +++ b/dist/chunk-4UITEBLL.js @@ -0,0 +1,2 @@ +import {a as a$4}from'./chunk-EJHT5JBZ.js';import {a as a$3,e as e$1}from'./chunk-NLQJKISS.js';import {d,a as a$1,b,g,j,r,w,i,A,q,c as c$1,e,f as f$1,u,v,s,h,o,n,x,t,B,k as k$1,m as m$1}from'./chunk-4P45F2OY.js';import {c,p,u as u$1,k,m,s as s$1,a as a$5,r as r$1,q as q$1,l,j as j$1}from'./chunk-CVR2ZXHQ.js';import {a,i as i$1,b as b$1,d as d$1,e as e$2,c as c$2}from'./chunk-KDHJA6AH.js';import {a as a$2}from'./chunk-XTVBESM5.js';import*as f from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {useReactTable,getPaginationRowModel,getExpandedRowModel,getSortedRowModel,getGroupedRowModel,getFacetedMinMaxValues,getFacetedUniqueValues,getFacetedRowModel,getFilteredRowModel,getCoreRowModel}from'@tanstack/react-table';import {flushSync}from'react-dom';function zn({cardClassName:e,cardGridClassName:t,cardSizing:n,cardRenderer:i,currentRowSelection:r,currentDetailExpanded:l,DataTableCardView:d,DataTableEmptyState:m,dragAndDrop:p,editableRows:h,editingRowId:E,emptyNode:S,enableRowSelection:A,flexGrow:V,getRowClassName:B,hasCardTitle:q,infiniteScroll:F,localSearchValue:T,onRowClick:u,renderedRows:s,detailPanel:y,resolvedLabels:g,resolvedLoadingRowCount:C,rowActions:N=[],ScrollArea:D,sentinelRef:K,setCurrentDetailExpanded:W,setCurrentRowSelection:O,setEditingRowId:R,shouldRenderInitialLoading:v,stateOverlayNode:w,tableContainerClassName:k,uiClassNames:M}){let I=v||s.length>0,G=f.useRef(null),x=(Z,j)=>jsx(d,{rows:Z,cardRenderer:i,cardGridClassName:t,cardClassName:e,cardSizing:n,rowActions:N,editableRows:h,detailPanel:y,detailExpanded:l,onDetailExpandedChange:W,hasCardTitle:q,rowSelection:r,onRowSelectionChange:O,enableRowSelection:A,editingRowId:E,onEditingRowIdChange:R,getRowClassName:B,onRowClick:u,getRowDraggable:p?.getRowDraggable,onRowDragStart:p?.onRowDragStart,onRowDragEnd:p?.onRowDragEnd,isLoading:j?.isLoading,loadingRowCount:j?.loadingRowCount,labels:g});return jsxs("div",{ref:G,"data-dtp-slot":"data-table-card-shell",className:a$2("relative box-border border-2 border-transparent transition-colors",V?"flex min-h-0 flex-1 flex-col":"h-full",p?.isDragging&&(M.dragActive??"rounded-md border-dashed")),children:[jsx(D,{className:a$2(V?"min-h-0 flex-1":"h-full",M.cardScrollArea,k),children:jsxs("div",{"data-dtp-slot":"data-table-card-viewport",className:a$2("flex min-h-full min-w-0 flex-col",V&&"min-h-0 flex-1",M.cardViewport),children:[I?v?x([],{isLoading:true,loadingRowCount:C}):x(s):jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center p-4",children:S??jsx(m,{title:T?g.noMatchingRowsTitle:g.noRowsTitle,description:T?g.noMatchingRowsDescription:g.noRowsDescription})}),F?.enabled&&!v?jsx("div",{className:"shrink-0 px-4 pb-4",children:jsx("div",{ref:K,className:"h-4 w-full"})}):null]})}),w]})}var rs=f.lazy(async()=>({default:(await import('./data-table-virtual-card-panel-KF2P5D3K.js')).DataTableVirtualCardPanel}));function Ti(e){let t=typeof e.virtualization=="object"?e.virtualization.card:void 0;return t?.enabled!==true?jsx(zn,{...e}):jsx(f.Suspense,{fallback:jsx(zn,{...e,renderedRows:e.renderedRows.slice(0,Math.max(1,Math.floor(t.fallbackCardCount??12)))}),children:jsx(rs,{...e})})}function wi({children:e,currentPagination:t,DataTableFooter:n,effectivePageCount:i,footerTotalRowCount:r,handleFooterPageIndexChange:l,handleFooterPageSizeChange:d,labels:m,pageCountKnown:p=true,rowsPerPageOptions:h,showFooter:E}){return !E&&!e?null:jsxs("div",{"data-dtp-slot":"data-table-footer",className:"shrink-0",children:[E?jsx(n,{pageIndex:t.pageIndex,pageCount:i,pageCountKnown:p,pageSize:t.pageSize,totalRowCount:r,rowsPerPageOptions:h,onPageIndexChange:l,onPageSizeChange:d,labels:m}):null,e]})}function Di({allRows:e,columnFilters:t,columnVisibilityOptions:n,compactToolbar:i,customToolbar:r,DataTableToolbar:l,description:d,descriptionId:m,effectiveToolbarActions:p,enableColumnPinning:h,enableGrouping:E,enableToolbarColumnChooser:S,enableToolbarFilterChips:A,enableToolbarResetLayout:V,enableToolbarSavedViews:B,enableDensityToggle:q,enableViewToggle:F,hiddenRowsLabel:T,labels:u,onClearColumnFilters:s,onColumnFilterChange:y,onColumnPinningChange:g,onDensityChange:C,onShowHiddenRowsChange:N,onToolbarQueryValueChange:D,reorderColumn:K,onResetColumnLayout:W,onCreateSavedView:O,onApplySavedView:R,onRenameSavedView:v,onDeleteSavedView:w,onViewModeChange:k,openFileDialog:M,selectedRowIds:I,selectedRows:G,selectionActions:x,savedViews:Z,showHiddenRows:j,table:z,title:Y,titleId:ne,toolbarQueryPlaceholder:be,toolbarQueryValue:fe,toolbarVisibility:De,density:Se,viewMode:Te}){return jsx("div",{"data-dtp-slot":"data-table-toolbar",className:"shrink-0",children:jsx(l,{title:Y,titleId:ne,description:d,descriptionId:m,toolbarQueryValue:fe,toolbarQueryPlaceholder:be,onToolbarQueryValueChange:D,reorderColumn:K,customToolbar:r,compactToolbar:i,viewMode:Te,onViewModeChange:k,enableViewToggle:F,toolbarActions:p,selectionActions:x,selectedRowIds:I,selectedRows:G,showHiddenRows:j,hiddenRowsLabel:T,onShowHiddenRowsChange:N,allRows:e,columnVisibilityOptions:n,onColumnVisibilityChange:(Ee,Ne)=>{z.getColumn(Ee)?.toggleVisibility(Ne);},enableColumnPinning:h,enableGrouping:E,enableToolbarColumnChooser:S,enableToolbarFilterChips:A,enableToolbarResetLayout:V,enableToolbarSavedViews:B,onColumnPinningChange:g,columnFilters:t,onColumnFilterChange:y,onClearColumnFilters:s,onResetColumnLayout:W,onCreateSavedView:O,onApplySavedView:R,onRenameSavedView:v,onDeleteSavedView:w,density:Se,onDensityChange:C,enableDensityToggle:q,labels:u,toolbarVisibility:De,openFileDialog:M,savedViews:Z,table:z})})}var oe={searchPlaceholder:"Search rows...",searchTable:"Search table",clearSearch:"Clear search",noRowsTitle:"No rows yet",noRowsDescription:"Create a record or refresh this view once data exists.",noMatchingRowsTitle:"No matching rows",noMatchingRowsDescription:"Try a different search term or clear filters.",tableOptions:"Show table options",columns:"Columns",filters:"Filters",clearFilters:"Clear filters",filterFrom:"From",filterTo:"To",filterTrue:"Yes",filterFalse:"No",selectedRows:e=>`${e} record${e===1?"":"s"} selected`,showHiddenRows:e=>`Show ${e}`,recordsPerPage:"Records per page",totalRecords:e=>`Total records: ${e}`,pageStatus:(e,t)=>`Page ${e+1} of ${t}`,pageStatusUnknown:e=>`Page ${e+1}`,pagination:"Pagination",morePages:"More pages",firstPage:"First page",previousPage:"Previous page",nextPage:"Next page",lastPage:"Last page",selectAllVisibleRows:"Select all visible rows",selectAllFilteredRows:"Select all filtered rows",selectRow:"Select row",selectCardRow:e=>`Select row ${e}`,switchToTableView:"Switch to table view",switchToCardView:"Switch to card view",tableView:"Table view",cardView:"Card view",allFilterOptions:"All",actions:"Actions",rowActions:"Row actions",editRow:"Edit row",saveEdit:"Save",cancelEdit:"Cancel editing",expandRow:"Expand row",collapseRow:"Collapse row",expandRowDetails:"Expand row details",collapseRowDetails:"Collapse row details",exportCsv:"Export CSV",print:"Print table",enterFullscreen:"Enter fullscreen",exitFullscreen:"Exit fullscreen",errorTitle:"Unable to load this table",errorDescription:"Try again or check your connection.",retry:"Retry",density:"Density",compactDensity:"Compact",comfortableDensity:"Comfortable",spaciousDensity:"Spacious",pinLeft:"Pin left",pinRight:"Pin right",unpin:"Unpin",pinRowToTop:"Pin row to top",pinRowToBottom:"Pin row to bottom",unpinRow:"Unpin row",resizeColumn:e=>`Resize ${e}`,grouping:"Grouping",groupBy:e=>`Group by ${e}`,ungroup:e=>`Ungroup ${e}`,removeGrouping:e=>`Remove ${e} grouping`,moveGroupingEarlier:e=>`Move ${e} grouping earlier`,moveGroupingLater:e=>`Move ${e} grouping later`,facetSearch:e=>`Search ${e} options`,searchColumns:"Search columns",showAllColumns:"Show all columns",hideAllColumns:"Hide all columns",moveColumnEarlier:e=>`Move ${e} earlier`,moveColumnLater:e=>`Move ${e} later`,resetColumnLayout:"Reset column layout",savedViews:"Saved views",createSavedView:"Create saved view",savedViewName:"View name",applySavedView:e=>`Apply saved view ${e}`,renameSavedView:e=>`Rename saved view ${e}`,deleteSavedView:e=>`Delete saved view ${e}`,saveSavedView:"Save view"};function hi(e){return {...oe,...e}}function yi({Button:e,Checkbox:t,DataTableRowActions:n,Tooltip:i,TooltipContent:r,TooltipTrigger:l,cancelEditing:d$1,columns:m,editableRows:p,editingRowId:h,editErrors:E,enableRowSelection:S,enableRowPinning:A,hasTreeExpansion:V,isSavingEdit:B,isEditDirty:q,labels:F,lastSelectedRowIdRef:T,detailPanel:u,detailExpanded:s,onDetailExpandedChange:y,rowSelectionSelectAllScope:g$1,rowActions:C,saveEdit:N,startEditingRow:D,tableRef:K}){let W=f.useCallback((O,R)=>{let v=K.current;if(!v||!T.current)return;let w=v.getRowModel().rows.filter(x=>!d(x.original)),k=w.findIndex(x=>x.id===T.current),M=w.findIndex(x=>x.id===O);if(k<0||M<0)return;let I=Math.min(k,M),G=Math.max(k,M);v.setRowSelection(x=>{let Z={...x};for(let j of w.slice(I,G+1).filter(z=>z.getCanSelect()&&z.getCanMultiSelect()))R?Z[j.id]=true:delete Z[j.id];return Z});},[T,K]);return f.useMemo(()=>{let O=[];if(V||u){let R=V&&u?80:a$1;O.push({id:"__expand__",enableResizing:false,enableSorting:false,enableHiding:false,size:R,minSize:R,maxSize:R,header:()=>jsx("span",{className:"sr-only",children:F.expandRow}),cell:({row:v,table:w})=>{let k=V&&v.getCanExpand(),M=!!(u&&(u.getRowCanExpand?.(v.original)??true));if(!k&&!M)return null;let I=v.getIsExpanded(),G=s===true||!!s[v.id];return jsxs("div",{className:"flex items-center justify-center gap-1",children:[k?jsx(e,{type:"button",variant:"ghost",size:"icon-sm","aria-label":I?F.collapseRow:F.expandRow,"aria-expanded":I,"data-tree-toggle":"true",onClick:()=>v.toggleExpanded(),children:jsx(c,{className:a$2("transition-transform",I?"rotate-0":"-rotate-90")})}):null,M?jsx(e,{type:"button",variant:"ghost",size:"icon-sm","aria-label":G?V?F.collapseRowDetails??oe.collapseRowDetails:F.collapseRow:V?F.expandRowDetails??oe.expandRowDetails:F.expandRow,"aria-expanded":G,"data-detail-toggle":"true",onClick:()=>{y(x=>b(x,v.id,w.getCoreRowModel().flatRows.map(Z=>Z.id)));},children:jsx(c,{className:a$2("transition-transform",G?"rotate-0":"-rotate-90")})}):null]})}});}return S&&O.push({id:"__select__",enableResizing:false,enableSorting:false,enableHiding:false,size:a$1,minSize:a$1,maxSize:a$1,header:({table:R})=>{let v=g$1==="filtered",w=(v?R.getFilteredRowModel().flatRows:R.getRowModel().flatRows).filter(G=>G.getCanSelect()&&G.getCanMultiSelect()),k=w.length>0&&w.every(G=>G.getIsSelected()),M=w.some(G=>G.getIsSelected()),I=v?F.selectAllFilteredRows??oe.selectAllFilteredRows:F.selectAllVisibleRows??oe.selectAllVisibleRows;return w.length===0?jsx("span",{className:"sr-only",children:I}):jsx("div",{className:"flex items-center justify-center",children:jsx(t,{className:"my-0.5",checked:k?true:M?"indeterminate":false,onCheckedChange:G=>{R.setRowSelection(x=>{let Z={...x};for(let j of w)G===true?Z[j.id]=true:delete Z[j.id];return Z});},"aria-label":I})})},cell:({row:R})=>jsx("div",{className:"flex items-center justify-center",children:jsx(t,{className:"my-0.5",checked:R.getIsSelected(),disabled:!R.getCanSelect(),onClick:v=>{if(!v.shiftKey||!T.current||!R.getCanMultiSelect()){T.current=R.id;return}v.preventDefault(),v.stopPropagation(),W(R.id,!R.getIsSelected()),T.current=R.id;},onCheckedChange:v=>{T.current=R.id,R.toggleSelected(v===true);},"aria-label":F.selectRow??oe.selectRow})})}),O.push(...m.map(R=>g(R))),(C.length||p||A)&&O.push({id:"__actions__",enableSorting:false,enableResizing:false,enableHiding:false,size:a$1,minSize:a$1,maxSize:a$1,header:()=>jsx("span",{className:"sr-only",children:F.actions}),cell:({row:R})=>{let v=R.id;return h===v?jsxs("div",{className:"flex w-full items-center justify-end gap-2",children:[E._row?jsx("span",{className:"sr-only",role:"alert",children:E._row}):null,jsx(e,{type:"button",size:"sm",disabled:B||!q,onClick:()=>{N(R.original);},children:F.saveEdit}),jsxs(i,{children:[jsx(l,{asChild:true,children:jsxs(e,{type:"button",size:"icon-sm",variant:"ghost",onClick:d$1,children:[jsx(c,{className:"rotate-45"}),jsx("span",{className:"sr-only",children:F.cancelEdit})]})}),jsx(r,{children:F.cancelEdit})]})]}):jsx("div",{className:"flex w-full items-center justify-center",children:jsx(n,{row:R.original,rowActions:C,editableRows:p,isEditing:false,onStartEditing:()=>{D(R.original,R.id);},onCancelEditing:()=>{},labels:F,rowPinning:A?{canPin:R.getCanPin(),position:R.getIsPinned(),pin:k=>R.pin(k)}:void 0})})}}),O},[e,t,n,i,r,l,d$1,m,p,s,u,E,h,S,A,V,B,q,F,T,y,g$1,C,N,W,D])}function Re({defaultValue:e,onChange:t,value:n}){let[i,r]=f.useState(e),l=n??i,d=f.useRef(l);f.useEffect(()=>{d.current=l;},[l]);let m=f.useCallback(p=>{let h=typeof p=="function"?p(d.current):p;d.current=h,t?.(h),n===void 0&&r(h);},[t,n]);return [l,m]}function Ri({enabled:e,hasMore:t,isLoadingMore:n,onLoadMore:i,onError:r}){let l=f.useRef(null),d=f.useRef(false),m=f.useEffectEvent(i),p=f.useEffectEvent(h=>{r?.(h);});return f.useEffect(()=>{if(!e||!t||n)return;let h=l.current;if(!h)return;let E=new IntersectionObserver(S=>{if(S[0].isIntersecting&&!d.current){d.current=true;let V;try{V=m();}catch(B){d.current=false,p(B);return}Promise.resolve(V).catch(B=>{p(B);}).finally(()=>{d.current=false;});}},{rootMargin:"200px 0px 200px 0px"});return E.observe(h),()=>{E.disconnect();}},[e,t,n]),l}function vi({enabled:e,maxPageIndex:t,onPageIndexChange:n,pageIndex:i,setLocalPageIndex:r}){f.useEffect(()=>{if(!e||i>=0&&i<=t)return;let l=Math.min(Math.max(i,0),t);r(l),n?.(l);},[e,t,n,i,r]);}function xi(){return f.useMemo(()=>{let e=new WeakMap;return (t,n$1,i)=>{let r=n(i);if(!r)return true;let l=t.original;if(typeof l!="object"||l===null)return n(t.getValue(n$1)).includes(r);let d=e.get(l);d||(d=new Map,e.set(l,d));let m=d.get(n$1);if(m===void 0){let p=t.getValue(n$1);m=n(p),d.set(n$1,m);}return m.includes(r)}},[])}function Ei({autoResetPageIndex:e,columnGroupPaths:t,columnResizeMode:n,dir:i$1,currentColumnFilters:r$1,currentColumnOrder:l,currentColumnPinning:d$1,currentRowPinning:m,currentColumnSizing:p,currentExpanded:h,currentGrouping:E,currentPagination:S,currentRowSelection:A$1,currentSorting:V,currentViewMode:B,defaultColumn:q,effectiveColumnVisibility:F,enableColumnResizing:T,enableMultiRowSelection:u,enableRowPinning:s,enableRowSelection:y,enableSubRowSelection:g,getRowCanSelect:C,getRowCanExpand:N,getSubRows:D,aggregationFns:K,groupedColumnMode:W,globalFilterFn:O,globalFilterValue:R,hasNextPage:v,handleColumnFiltersChange:w$1,handleColumnOrderChange:k,handleColumnPinningChange:M,handleRowPinningChange:I,handleColumnVisibilityChange:G,handleExpandedChange:x,handleGroupingChange:Z,infiniteScroll:j$1,keepPinnedRows:z,manualFiltering:Y,manualGrouping:ne,manualExpanding:be,manualPagination:fe,manualSorting:De,onActionError:Se,onPageIndexChange:Te,onPageSizeChange:Ee,pageCount:Ne,pageIndex:J,pageSize:he,paginateExpandedRows:L,filterFromLeafRows:we,maxLeafRowFilterDepth:Ge,setCurrentRowSelection:nt,setCurrentSorting:Ye,setLocalColumnSizing:ot,setLocalPagination:se,shouldRenderInitialLoading:it,tableColumns:Ve,tableData:gt,tableGetRowId:Oe,tableRef:Rt,totalRowCount:mt,virtualization:Je}){let bt=xi(),ye=f.useMemo(()=>j(Ve).map(({column:a,index:b})=>r(a,b)),[Ve]),rt=f.useMemo(()=>{let a=ye,b=a.filter(_=>!w(_)&&_!=="__spacer__"),U=new Set(b),ce=l.filter(_=>U.has(_)),ae=b.filter(_=>!ce.includes(_));return [...a.filter(_=>_==="__expand__"||_==="__select__"),...ce,...ae,...a.filter(_=>_==="__spacer__"),...a.filter(_=>_==="__actions__")]},[l,ye]),_e=f.useMemo(()=>{let a=new Set(ye),b=new Set(ye.filter(ae=>!w(ae)&&ae!=="__spacer__")),U=(d$1.left??[]).filter(ae=>b.has(ae)),ce=(d$1.right??[]).filter(ae=>b.has(ae));return {left:[...["__expand__","__select__"].filter(ae=>a.has(ae)),...U],right:[...ce,...["__actions__"].filter(ae=>a.has(ae))]}},[d$1,ye]),lt=f.useMemo(()=>{let a=new Set,b=_=>{_.forEach((et,Ot)=>{if(a.add(Oe(et,Ot)),!d(et)){let _t=D?.(et,Ot);_t?.length&&b(_t);}});};b(gt);let U=(m.top??[]).filter(_=>a.has(_)),ce=new Set(U),ae=(m.bottom??[]).filter(_=>a.has(_)&&!ce.has(_));return {top:U,bottom:ae}},[m.bottom,m.top,D,gt,Oe]),ve=f.useMemo(()=>({sorting:V,pagination:S,rowSelection:A$1,columnVisibility:F,columnFilters:r$1,globalFilter:R,expanded:h,grouping:E,columnOrder:rt,columnPinning:_e,rowPinning:lt,columnSizing:p}),[r$1,p,h,E,S,A$1,V,F,rt,_e,lt,R]),He=f.useCallback(a=>{let b=typeof a=="function"?a(S):a;(J===void 0||he===void 0)&&se(U=>({pageIndex:J===void 0?b.pageIndex:U.pageIndex,pageSize:he===void 0?b.pageSize:U.pageSize})),b.pageIndex!==S.pageIndex&&Te?.(b.pageIndex),b.pageSize!==S.pageSize&&Ee?.(b.pageSize);},[S,Te,Ee,J,he,se]),St=f.useCallback(a=>{ot(a);},[ot]),Xe=f.useMemo(()=>{let a=false,b=false;for(let{column:U}of j(Ve))a||=U.meta?.filter?.type==="faceted",b||=U.meta?.filter?.type==="numberRange";return {minMaxValues:b,uniqueValues:a}},[Ve]),de=useReactTable({data:gt,columns:Ve,getCoreRowModel:getCoreRowModel(),getFilteredRowModel:Y?void 0:getFilteredRowModel(),getFacetedRowModel:(Xe.uniqueValues||Xe.minMaxValues)&&!Y?getFacetedRowModel():void 0,getFacetedUniqueValues:Xe.uniqueValues&&!Y?getFacetedUniqueValues():void 0,getFacetedMinMaxValues:Xe.minMaxValues&&!Y?getFacetedMinMaxValues():void 0,getGroupedRowModel:E.length&&!ne?getGroupedRowModel():void 0,getSortedRowModel:De?void 0:getSortedRowModel(),getExpandedRowModel:(D||E.length)&&!be?getExpandedRowModel():void 0,getPaginationRowModel:fe||j$1?.enabled?void 0:getPaginationRowModel(),enableRowSelection:C?a=>y&&C(a.original):y,enableRowPinning:typeof s=="function"?a=>s(a.original):s,keepPinnedRows:z,enableMultiRowSelection:typeof u=="function"?a=>u(a.original):u,enableSubRowSelection:typeof g=="function"?a=>g(a.original):g,enableColumnResizing:T,columnResizeMode:n,columnResizeDirection:i$1,getRowId:Oe,getSubRows:D,getRowCanExpand:D?a=>N?.(a.original)??a.subRows.length>0:void 0,globalFilterFn:O??bt,getColumnCanGlobalFilter:a=>a.columnDef.enableGlobalFilter!==false&&typeof a.accessorFn=="function",manualSorting:De,manualGrouping:ne,manualFiltering:Y,manualExpanding:be,manualPagination:fe||!!j$1?.enabled,paginateExpandedRows:L,filterFromLeafRows:we,maxLeafRowFilterDepth:Ge,defaultColumn:q,autoResetPageIndex:e,state:ve,onSortingChange:Ye,onPaginationChange:He,onRowSelectionChange:nt,onColumnVisibilityChange:G,onColumnFiltersChange:w$1,onExpandedChange:x,onGroupingChange:Z,onColumnOrderChange:k,onColumnPinningChange:M,onRowPinningChange:I,onColumnSizingChange:St,aggregationFns:K,groupedColumnMode:W});Rt.current=de;let vt=de.getVisibleLeafColumns(),ft=f.useCallback((a,b)=>{if(a===b||!i(a,b,t))return;let U=de.getAllLeafColumns().map(ae=>ae.id).filter(ae=>!w(ae)),ce=A(l.length?l:U,a,b);k(ce);},[t,l,k,de]),Tt=de.getTopRows(),Ae=de.getBottomRows(),$e=B==="table"?de.getCenterRows():de.getRowModel().rows,wt=typeof Je=="object"?Je:void 0,Be=Je===true||wt?.enabled===true,Lt=Math.max(1,Math.floor(wt?.fallbackRowCount??20)),ke=(Be?$e.slice(0,Lt):$e).map((a,b)=>({row:a,rowIndex:b})),Ue=fe||!!j$1?.enabled,st=Ue?void 0:de.getFilteredRowModel().rows.length,dt=mt??st,Ze=!Ue||Ne!==void 0||mt!==void 0,xt=dt,je=it?1:Ne??(dt!==void 0?Math.max(1,Math.ceil(dt/S.pageSize)):Ue?S.pageIndex+(v?2:1):de.getPageCount()),Ct=Math.max(0,je-1),Nt=f.useCallback(a=>{J===void 0&&se(b=>b.pageIndex===a?b:{...b,pageIndex:a});},[J,se]);vi({enabled:!it&&!j$1?.enabled&&Ze,maxPageIndex:Ct,onPageIndexChange:Te,pageIndex:S.pageIndex,setLocalPageIndex:Nt});let Ke=f.useCallback(a=>{a!==S.pageIndex&&(Te?.(a),J===void 0&&se(b=>b.pageIndex===a?b:{...b,pageIndex:a}));},[S.pageIndex,Te,J,se]),Et=f.useCallback(a=>{S.pageIndex!==0&&Te?.(0),a!==S.pageSize&&Ee?.(a),he===void 0&&se({pageIndex:0,pageSize:a});},[S.pageIndex,S.pageSize,Te,Ee,he,se]),kt=Ri({enabled:!!j$1?.enabled,hasMore:!!j$1?.hasMore,isLoadingMore:j$1?.isLoadingMore,onLoadMore:()=>j$1?.onLoadMore(),onError:a=>{Se?.({error:a,source:"infiniteScroll"});}});return {effectivePageCount:je,footerTotalRowCount:xt,handleFooterPageIndexChange:Ke,handleFooterPageSizeChange:Et,isPageCountKnown:Ze,renderedRows:$e,topPinnedRows:Tt,bottomPinnedRows:Ae,reorderColumn:ft,rowsToRender:ke,sentinelRef:kt,table:de,virtualPaddingBottom:0,virtualPaddingTop:0,visibleLeafColumns:vt}}var Cs="data-table-pro:column-prefs:",Mi=1,ki=["visibility","sizing","order","pinning","rowPinning","density"];function Vi(e){let t=Ln(e);if(!t)return {};let n=Nn(t);if(!n)return {};let i=On(t.key),r;try{r=n.getItem(i);}catch(p){return t.onError?.({error:p,operation:"read"}),{}}if(!r)return {};let l;try{l=(t.deserialize??JSON.parse)(r);}catch(p){return t.onError?.({error:p,operation:"deserialize"}),{}}let d=t.version??Mi,m;if(Ds(l))if(l.version===d)m=l.state;else if(t.migrate)try{m=t.migrate({version:l.version,state:l.state},d);}catch(p){return t.onError?.({error:p,operation:"migrate"}),{}}else return {};else m=l;return Ii(hs(m),t.slices)}function Ai(e){let t=Ln(e);if(!t)return false;let n=Nn(t);if(!n)return false;try{return n.removeItem(On(t.key)),!0}catch(i){return t.onError?.({error:i,operation:"remove"}),false}}function Fi({key:e,persistence:t,prefs:n}){let i=t??Ln(e),r=i?Nn(i):void 0,l=i?On(i.key):void 0,d=i?.version??Mi,m=Math.max(0,i?.debounceMs??100),p=Ii(n,i?.slices),h=f.useMemo(()=>{if(!i)return {value:void 0};try{let S={version:d,state:p};return {value:(i.serialize??JSON.stringify)(S)}}catch(S){return {error:S,value:void 0}}},[i,p,d]),E=f.useEffectEvent((S,A)=>{i?.onError?.({error:S,operation:A});});f.useEffect(()=>{h.error!==void 0&&E(h.error,"serialize");},[h.error]),f.useEffect(()=>{if(!r||!l||h.value===void 0)return;let S=()=>{try{if(r.getItem(l)===h.value)return;r.setItem(l,h.value);}catch(V){E(V,"write");}};if(m===0){S();return}let A=globalThis.setTimeout(S,m);return ()=>{globalThis.clearTimeout(A);}},[m,h.value,r,l]);}function Ln(e){if(e)return typeof e=="string"?{key:e}:e}function Nn(e){if(e.storage)return e.storage;if(!(typeof window>"u"))try{return window.localStorage}catch(t){e.onError?.({error:t,operation:"read"});return}}function On(e){return `${Cs}${e}`}function Ds(e){return aa(e)&&Object.prototype.hasOwnProperty.call(e,"version")&&Object.prototype.hasOwnProperty.call(e,"state")}function Ii(e,t){let n=new Set(t??ki),i={};for(let r of ki)n.has(r)&&e[r]!==void 0&&Object.assign(i,{[r]:e[r]});return i}function hs(e){if(!aa(e))return {};let t={},n=ys(e.visibility);n&&(t.visibility=n);let i=Rs(e.sizing);i&&(t.sizing=i);let r=pa(e.order);if(r&&(t.order=r),aa(e.pinning)){let d=pa(e.pinning.left)??[],m=pa(e.pinning.right)??[];t.pinning={left:d,right:m};}let l=Ss(e.rowPinning);return l&&(t.rowPinning=l),vs(e.density)&&(t.density=e.density),t}function ys(e){if(aa(e))return Object.fromEntries(Object.entries(e).filter(t=>typeof t[1]=="boolean"))}function Rs(e){if(aa(e))return Object.fromEntries(Object.entries(e).filter(t=>typeof t[1]=="number"&&Number.isFinite(t[1])&&t[1]>=0))}function pa(e){if(Array.isArray(e))return e.filter(t=>typeof t=="string")}function Ss(e){if(aa(e))return {top:pa(e.top)??[],bottom:pa(e.bottom)??[]}}function vs(e){return e==="compact"||e==="comfortable"||e==="spacious"}function aa(e){return !!e&&typeof e=="object"&&!Array.isArray(e)}var Ps=Object.values(a).slice().sort((e,t)=>e-t);function zi(e){let t=f.useRef(0),[n,i]=f.useState(0);return f.useEffect(()=>{let r=e.current;if(!r)return;let l=(m=r.clientWidth)=>{let p=xs(m);p!==t.current&&(t.current=p,i(p));};if(l(),typeof ResizeObserver>"u")return;let d=new ResizeObserver(m=>{let p=m[0];l(p?Es(p):void 0);});return d.observe(r),()=>{d.disconnect();}},[e]),n}function xs(e){if(e<=0)return 0;let t=1;for(let n of Ps){if(ed$1??(l?{key:l}:void 0),[l,d$1]),we=f.useMemo(()=>Vi(L),[L]),[Ge,nt]=f.useState({pageIndex:u?.pagination?.pageIndex??0,pageSize:u?.pagination?.pageSize??be[0]??20}),[Ye,ot]=Re({value:Se,onChange:G,defaultValue:()=>u?.sorting??[]}),[se,it]=Re({value:ne,onChange:M,defaultValue:()=>u?.rowSelection??{}}),[Ve,gt]=Re({value:m,onChange:O,defaultValue:()=>u?.columnVisibility??we.visibility??{}}),[Oe,Rt]=Re({value:e$1,onChange:C,defaultValue:()=>u?.columnFilters??[]}),[mt,Je]=Re({value:V,onChange:v,defaultValue:()=>u?.expanded??{}}),[bt,ye]=Re({value:t,onChange:N,defaultValue:()=>u?.columnOrder??we.order??[]}),[rt,_e]=Re({value:n,onChange:D,defaultValue:()=>u?.columnPinning??we.pinning??q(p)}),[lt,ve]=Re({value:i,onChange:K,defaultValue:()=>u?.rowPinning??we.rowPinning??{top:[],bottom:[]}}),[He,St]=Re({value:r$1,onChange:W,defaultValue:()=>u?.columnSizing??we.sizing??{}}),[Xe,de]=Re({value:J,onChange:Z,defaultValue:()=>u?.viewMode??"table"}),[vt,ft]=Re({value:B,onChange:w,defaultValue:()=>u?.grouping??[]}),[Tt,Ae]=Re({value:De,onChange:I,defaultValue:()=>u?.showHiddenRows??false}),[$e,wt]=Re({value:E,onChange:R,defaultValue:()=>u?.density??we.density??"comfortable"}),Be=Ne??u?.globalFilter??"",Lt=Ee??Y.searchPlaceholder,Pt=Te??250,[ke,Ue]=f.useState(Be),st=zi(he),dt=!!x,Ze=f.useRef(Be),xt=f.useEffectEvent($=>{Ze.current=$,x?.($);});f.useEffect(()=>{Ze.current=Be,Ue(Be);},[Be]),f.useEffect(()=>{if(!dt||ke===Be||ke===Ze.current)return;let $=window.setTimeout(()=>{xt(ke);},Pt);return ()=>{window.clearTimeout($);}},[dt,ke,Pt,Be]);let je=f.useMemo(()=>({pageIndex:j$1??Ge.pageIndex,pageSize:z??Ge.pageSize}),[Ge.pageIndex,Ge.pageSize,j$1,z]),Ct=Math.max(1,y??Math.min(5,je.pageSize)),Nt=f.useDeferredValue(ke),Ke=A?g?ke:Nt:"",Et=f.useCallback($=>{de($);},[de]),kt=f.useCallback($=>{Ae($);},[Ae]),a=f.useCallback($=>{wt($);},[wt]),b=f.useCallback(()=>{k?.(0),j$1===void 0&&nt($=>$.pageIndex===0?$:{...$,pageIndex:0});},[k,j$1]),U=f.useRef({columnFilters:Oe,globalFilterValue:Ke});f.useEffect(()=>{let $=U.current,Pe=$.columnFilters!==Oe,ie=$.globalFilterValue!==Ke;U.current={columnFilters:Oe,globalFilterValue:Ke},!g&&(!Pe&&!ie||b());},[Oe,Ke,g,b]),Fi({persistence:L,prefs:{visibility:m?void 0:Ve,sizing:r$1===void 0?He:void 0,order:t?void 0:bt,pinning:n?void 0:rt,rowPinning:i===void 0?lt:void 0,density:E?void 0:$e}});let ce=f.useMemo(()=>j(p).reduce(($,{column:Pe,index:ie})=>{let ct=r(Pe,ie);return i$1(Pe.meta?.hideOn,st)&&($[ct]=false),$},{}),[p,st]),ae=f.useMemo(()=>({...Ve,...ce}),[Ve,ce]),_=f.useMemo(()=>h.filter($=>b$1($,T,Tt)),[Tt,h,T]),et=s&&_.length===0,Ot=f.useMemo(()=>c$1(Ct),[Ct]),_t=et?Ot:_,Ka=f.useCallback(($,Pe)=>d($)?e(Pe):F($,Pe),[F]),Mt=S||(fe?.length??0)>0||Object.values(se).some(Boolean),ia=f.useMemo(()=>{if(!Mt)return new Map;let $=new Map,Pe=ie=>{ie.forEach((ct,te)=>{$.set(F(ct,te),ct);let ue=q$1?.(ct,te);ue?.length&&Pe(ue);});};return Pe(_),$},[F,q$1,Mt,_]),Wa=f.useMemo(()=>Mt?Object.entries(se).filter(([,$])=>$).map(([$])=>ia.get($)).filter($=>!!$):[],[se,ia,Mt]),Qa=f.useMemo(()=>Object.entries(se).flatMap(([$,Pe])=>Pe?[$]:[]),[se]);return {containerWidth:st,currentColumnFilters:Oe,currentColumnOrder:bt,currentColumnPinning:rt,currentRowPinning:lt,currentColumnSizing:He,currentColumnVisibility:Ve,currentDensity:$e,currentExpanded:mt,currentGrouping:vt,currentPagination:je,currentRowSelection:se,currentShowHiddenRows:Tt,currentSorting:Ye,currentViewMode:Xe,effectiveColumnVisibility:ae,globalFilterValue:Ke,handleDensityChange:a,handleShowHiddenRowsChange:kt,handleViewModeChange:Et,localSearchValue:ke,resolvedLoadingRowCount:Ct,resolvedToolbarQueryPlaceholder:Lt,selectedRowIds:Qa,selectedRows:Wa,setCurrentColumnFilters:Rt,setCurrentColumnOrder:ye,setCurrentColumnPinning:_e,setCurrentRowPinning:ve,setCurrentColumnVisibility:gt,setCurrentExpanded:Je,setCurrentGrouping:ft,setCurrentRowSelection:it,setCurrentSorting:ot,setLocalColumnSizing:St,setLocalPagination:nt,setLocalSearchValue:Ue,shouldRenderInitialLoading:et,tableData:_t,tableGetRowId:Ka,toolbarFilteredData:_,visibleData:_}}var Ms={cellStyle:void 0,colStyle:void 0,fixedSide:void 0,headerStyle:void 0,isActionsColumn:false,isExpansionColumn:false,isSelectionColumn:false,isSpacerColumn:false,isUtilityColumn:false,pinnedClassName:void 0,utilityClassName:void 0};function Oi({columns:e,columnSizing:t,editableRows:n,enableRowSelection:i,hasRowActions:r$1,hasRowExpansion:l,layoutMode:d,uiClassNames:m,visibleLeafColumns:p}){let h=f.useMemo(()=>{let T=new Set;for(let{column:u,index:s}of j(e))Object.prototype.hasOwnProperty.call(u,"size")&&T.add(r(u,s));return i&&T.add("__select__"),l&&T.add("__expand__"),(r$1||n)&&T.add("__actions__"),T},[e,n,i,r$1,l]),E=f.useMemo(()=>{let T=new Map;for(let{column:u,index:s}of j(e)){let y=f$1(u);y!==void 0&&T.set(r(u,s),y);}return T},[e]),S=f.useMemo(()=>{let T=new Map,u$1=new Map,s=0;for(let g of p)u(g)==="left"&&(T.set(g.id,s),s+=Ni(g));let y=0;for(let g of [...p].reverse())u(g)==="right"&&(u$1.set(g.id,y),y+=Ni(g));return {left:T,right:u$1}},[p]),A=f.useMemo(()=>{if(d!=="fill")return;let T=p.filter(s=>!w(s.id));return T.length&&T.every(s=>h.has(s.id)||Object.prototype.hasOwnProperty.call(t,s.id))?T[T.length-1]?.id:void 0},[t,h,d,p]),V=f.useMemo(()=>{let T=new Set([...h,...Object.keys(t)]);return A&&T.delete(A),T},[t,h,A]),B=f.useMemo(()=>{let T=new Map;for(let u$1 of p){let s=u$1.id==="__select__",y=u$1.id==="__expand__",g=u$1.id==="__actions__",C=s||y||g,N=u$1.id==="__spacer__",D=E.get(u$1.id),K=u$1.id===A,W=D??(K?u$1.getSize():void 0),O=!N&&(d==="fit"||C||V.has(u$1.id)),R=O||W!==void 0?{width:O?C?a$1:u$1.getSize():void 0,minWidth:C?a$1:O?u$1.getSize():W,maxWidth:O?C?a$1:u$1.getSize():void 0}:void 0,v$1=u(u$1),w=v$1?{left:v$1==="left"?S.left.get(u$1.id):void 0,right:v$1==="right"?S.right.get(u$1.id):void 0}:void 0,k=R||w?{...R,...w}:void 0;T.set(u$1.id,{cellStyle:k,colStyle:R,fixedSide:v$1,headerStyle:k,isActionsColumn:g,isExpansionColumn:y,isSelectionColumn:s,isSpacerColumn:N,isUtilityColumn:C,pinnedClassName:v$1?v(v$1,m,{isUtilityColumn:C}):void 0,utilityClassName:C?"w-[50px] max-w-[50px] min-w-[50px] px-0":void 0});}return T},[A,V,d,E,S,m,p]),q=f.useMemo(()=>p.reduce((T,u)=>{let s=B.get(u.id),y=E.get(u.id),g=u.id===A;return s?.isUtilityColumn?T+a$1:V.has(u.id)?T+u.getSize():T+(y??(g?u.getSize():0))},0),[B,A,V,E,p]),F=f.useCallback(T=>B.get(T)??Ms,[B]);return {columnLayouts:B,explicitlySizedColumnIds:h,fillMinWidth:q,getColumnLayout:F}}function Ni(e){return w(e.id)?a$1:e.getSize()}function Hi(e,t){let n=e.classNames??{},{Button:i,Card:r,CardContent:l,CardHeader:d,Checkbox:m,Skeleton:p}=e;return function({rows:E,cardRenderer:S,cardSizing:A="fixed",cardGridClassName:V,cardClassName:B,rowActions:q,editableRows:F,detailPanel:T,detailExpanded:u,onDetailExpandedChange:s,hasCardTitle:y,rowSelection:g,onRowSelectionChange:C,enableRowSelection:N,editingRowId:D,onEditingRowIdChange:K,getRowClassName:W,onRowClick:O,getRowDraggable:R,onRowDragStart:v,onRowDragEnd:w,isLoading:k=false,loadingRowCount:M=5,labels:I}){let G=A??"fixed",x$1=V?a$2("grid",V):Vs(G),Z=a$2("min-h-0 w-full gap-4 p-1",n.cardGrid,x$1),j=z=>a$2("relative min-w-0 max-w-full gap-0 overflow-hidden bg-transparent p-0",As(G),n.cardItem,B,z);return k?jsx("div",{role:"list","data-dtp-slot":"data-table-card-grid",className:Z,children:Array.from({length:Math.max(1,M)},(z,Y)=>jsxs(r,{role:"listitem","aria-hidden":"true","data-dtp-slot":"data-table-card-item",className:j("min-h-52"),children:[y?jsxs(d,{className:"px-4 pt-4 pb-3",children:[jsx(p,{className:"h-5 w-40 max-w-[70%]"}),jsx(p,{className:"h-4 w-24 max-w-[40%]"})]}):null,jsxs(l,{className:a$2("space-y-3 pb-4",y?"":"pt-4"),children:[jsx(p,{className:"h-4 w-full"}),jsx(p,{className:"h-4 w-[82%]"}),jsx(p,{className:"h-4 w-[68%]"}),jsx(p,{className:"h-24 w-full rounded-xl"})]})]},`loading-card-${Y}`))}):jsx("div",{role:"list","data-dtp-slot":"data-table-card-grid",className:Z,children:E.map(z=>{let Y=z.id,ne=z.original,be=!!g[Y],fe=D===Y,De=q.length>0||!!F,Se=!!(T&&(T.getRowCanExpand?.(ne)??true)),Te=N||De||y,Ee=N||De||z.getCanExpand()||Se,Ne=()=>{O&&O({row:ne,rowId:Y});};return jsxs(r,{role:"listitem","data-row-id":Y,"data-tree-depth":z.depth,draggable:R?.(ne)??false,"data-dtp-slot":"data-table-card-item","data-state":be?"selected":void 0,className:j(a$2([W?.(ne,{row:ne,rowId:Y,rowIndex:z.index,isEditing:fe,isExpanded:z.getIsExpanded(),isLoading:false,isSelected:be,pinnedPosition:false})].filter(Boolean).join(" "),"transition transition-colors hover:scale-101 data-[state=selected]:scale-101",n.card,be?n.cardSelected:n.cardUnselected)),onDragStart:J=>{v?.({row:ne,rowId:Y,event:J});},onDragEnd:J=>{w?.({row:ne,rowId:Y,event:J});},children:[Te?jsx("div",{"aria-hidden":"true",className:a$2("pointer-events-none absolute inset-x-0 top-0 z-10 h-24 bg-linear-to-b opacity-0 transition-opacity group-hover/card:opacity-100",n.cardOverlay??"from-transparent via-transparent to-transparent")}):null,jsx("div",{"data-dtp-slot":"data-table-card-renderer",role:O?"button":void 0,tabIndex:O?0:void 0,className:a$2("flex min-h-0 max-w-full min-w-0 overflow-hidden rounded-[inherit] [&>*]:min-w-0",Fs(G),O&&"cursor-pointer focus-visible:outline-none"),onClick:J=>{x(J.target,J.currentTarget)||Ne();},onKeyDown:J=>{x(J.target,J.currentTarget)||(J.key==="Enter"||J.key===" ")&&(J.preventDefault(),Ne());},children:S({row:ne,rowId:Y,depth:z.depth,canExpandSubRows:z.getCanExpand(),isSubRowsExpanded:z.getIsExpanded(),toggleSubRowsExpanded:()=>z.toggleExpanded(),isSelected:be,onSelectedChange:J=>{C(_i(g,Y,J,z.getCanSelect(),z.getCanMultiSelect()));},actions:q,isEditing:fe,startEditing:()=>{K(Y);},cancelEditing:()=>{K(null);}})}),fe||!T||!(u===true||u[z.id])?null:jsx("div",{"data-dtp-slot":"data-table-card-detail-panel",className:"relative z-20 min-w-0",children:T.render({row:ne,rowId:Y,tableRow:z})}),Ee?jsxs(d,{className:"absolute inset-x-0 top-0 z-20 flex flex-row items-center gap-3 space-y-0 px-4 pt-4 pb-8",children:[N?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(m,{checked:be,disabled:!z.getCanSelect(),"aria-label":(I.selectCardRow??oe.selectCardRow)(Y),onCheckedChange:J=>{C(_i(g,Y,J===true,z.getCanSelect(),z.getCanMultiSelect()));}})}):null,z.getCanExpand()?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(i,{type:"button",size:"icon-sm",variant:"ghost","aria-label":z.getIsExpanded()?I.collapseRow:I.expandRow,"aria-expanded":z.getIsExpanded(),onClick:()=>z.toggleExpanded(),children:jsx(c,{className:a$2("transition-transform",z.getIsExpanded()?"rotate-0":"-rotate-90")})})}):null,Se?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(i,{type:"button",size:"icon-sm",variant:"ghost","aria-label":u===true||u[z.id]?z.getCanExpand()?I.collapseRowDetails??oe.collapseRowDetails:I.collapseRow:z.getCanExpand()?I.expandRowDetails??oe.expandRowDetails:I.expandRow,"aria-expanded":u===true||!!u[z.id],"data-detail-toggle":"true",onClick:()=>{s(J=>b(J,z.id,E.map(he=>he.id)));},children:jsx(c,{className:a$2("transition-transform",u===true||u[z.id]?"rotate-0":"-rotate-90")})})}):null,jsx("div",{className:"pointer-events-none min-w-0 flex-1"}),De?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(t,{row:ne,rowActions:q,editableRows:F,isEditing:fe,onStartEditing:()=>{K(Y);},onCancelEditing:()=>{K(null);},labels:I})}):null]}):null]},Y)})})}}function Vs(e){switch(e){case "content":return "flex flex-wrap items-start justify-start";case "fluid":return "grid grid-cols-[repeat(auto-fit,minmax(min(18rem,100%),1fr))]";default:return "grid grid-cols-[repeat(auto-fill,minmax(min(18rem,100%),18rem))] justify-start"}}function As(e){switch(e){case "content":return "w-fit";case "fluid":return "w-full";default:return}}function Fs(e){switch(e){case "content":return "w-fit";case "fluid":return "w-full flex-1 [&>*]:w-full";default:return "flex-1"}}function _i(e,t,n,i,r){if(!i)return e;if(n)return r?{...e,[t]:true}:{[t]:true};if(!e[t])return e;let l={...e};return delete l[t],l}function Gi(e){let t=e.classNames??{},{Empty:n,EmptyContent:i,EmptyDescription:r,EmptyHeader:l,EmptyMedia:d,EmptyTitle:m}=e;return function({title:h="No rows found",description:E="Adjust your filters or create a new record to populate this table."}){return jsxs(n,{className:`min-h-60 rounded-2xl ${t.emptyState??"border bg-transparent"}`,children:[jsxs(l,{children:[jsx(d,{variant:"icon",children:jsx(p,{})}),jsx(m,{children:h}),jsx(r,{children:E})]}),jsx(i,{})]})}}function $i(e){let t=e.classNames??{},{Pagination:n,PaginationContent:i,PaginationEllipsis:r,PaginationFirst:l,PaginationItem:d,PaginationLast:m,PaginationLink:p,PaginationNext:h,PaginationPrevious:E,Select:S,SelectContent:A,SelectGroup:V,SelectItem:B,SelectTrigger:q,SelectValue:F,Tooltip:T,TooltipContent:u,TooltipTrigger:s}=e;function y({pageIndex:C,pageCount:N,pageCountKnown:D,pageSize:K,totalRowCount:W,rowsPerPageOptions:O,onPageIndexChange:R,onPageSizeChange:v,labels:w}){let k=D?Is(C,Math.max(1,N)):[],M=C>0,I=C+1{v(Number(x));},children:[jsx(q,{"aria-label":w.recordsPerPage,className:`w-22 ${t.paginationSelectTrigger??""}`,children:jsx(F,{})}),jsx(A,{children:jsx(V,{children:O.map(x=>jsx(B,{value:String(x),children:x},x))})})]})]}),W!==void 0?jsx("div",{className:"flex shrink-0 items-center justify-center",children:jsxs("div",{className:`inline-flex items-center gap-2 px-2.5 py-1.5 text-sm ${t.paginationTotal??""}`,"aria-label":w.totalRecords(W),children:[jsx(j$1,{className:"size-4"}),jsx("span",{className:"@min-[768px]/data-table:hidden",children:W}),jsx("span",{className:"hidden @min-[768px]/data-table:inline",children:w.totalRecords(W)})]})}):null,jsxs("div",{className:"flex flex-1 items-center justify-end gap-4",children:[jsx("div",{className:`hidden text-sm @min-[768px]/data-table:inline ${t.mutedText??"opacity-70"}`,children:D?w.pageStatus(C,Math.max(1,N)):(w.pageStatusUnknown??oe.pageStatusUnknown)(C)}),jsx(n,{"aria-label":w.pagination??oe.pagination,className:"mx-0 w-auto justify-end",children:jsxs(i,{children:[jsx(d,{className:"@min-[768px]/data-table:hidden",children:jsxs(T,{children:[jsx(s,{asChild:true,children:jsx(l,{"aria-label":w.firstPage,href:"#",size:"icon-sm",showText:false,disabled:!M,onClick:x=>{x.preventDefault(),M&&R(0);},text:w.firstPage})}),jsx(u,{children:w.firstPage})]})}),jsx(d,{children:jsxs(T,{children:[jsx(s,{asChild:true,children:jsx(E,{"aria-label":w.previousPage,href:"#",size:"icon-sm",showText:false,disabled:!M,onClick:x=>{x.preventDefault(),M&&R(C-1);},text:w.previousPage})}),jsx(u,{children:w.previousPage})]})}),k.map((x,Z)=>jsx(d,{className:"hidden @min-[768px]/data-table:block",children:x==="ellipsis"?jsx(r,{text:w.morePages??oe.morePages}):jsx(p,{href:"#",isActive:x===C+1,size:"icon-sm",onClick:j=>{j.preventDefault(),R(x-1);},children:x})},`${x}-${Z}`)),jsx(d,{children:jsxs(T,{children:[jsx(s,{asChild:true,children:jsx(h,{"aria-label":w.nextPage,href:"#",size:"icon-sm",showText:false,disabled:!I,onClick:x=>{x.preventDefault(),I&&R(C+1);},text:w.nextPage})}),jsx(u,{children:w.nextPage})]})}),D?jsx(d,{className:"@min-[768px]/data-table:hidden",children:jsxs(T,{children:[jsx(s,{asChild:true,children:jsx(m,{"aria-label":w.lastPage,href:"#",size:"icon-sm",showText:false,text:w.lastPage,disabled:!I,onClick:x=>{x.preventDefault(),I&&R(G);}})}),jsx(u,{children:w.lastPage})]})}):null]})})]})]})}function g(C){return jsx("div",{className:`rounded-md border px-2 py-1 ${t.footer??""}`,children:jsx(y,{...C})})}return {DataTableFooter:g,DataTablePagination:y}}function Is(e,t){let n=e+1,i=new Set([1,t]);for(let d=Math.max(1,n-2);d<=Math.min(t,n+2);d+=1)i.add(d);let r=Array.from(i).sort((d,m)=>d-m),l=[];for(let d=0;d1&&l.push("ellipsis"),l.push(m);}return l}function ji(e){let{Button:t,DropdownMenu:n,DropdownMenuContent:i,DropdownMenuGroup:r,DropdownMenuItem:l,DropdownMenuSeparator:d,DropdownMenuTrigger:m$1,Tooltip:p,TooltipContent:h,TooltipTrigger:E}=e;return function({row:A,rowActions:V,editableRows:B,isEditing:q,onStartEditing:F,onCancelEditing:T,labels:u,rowPinning:s}){let y=V.filter(D=>d$1(D,A)),g=f.useCallback(D=>{D.stopPropagation();},[]);if(q)return jsxs(p,{children:[jsx(E,{asChild:true,children:jsxs(t,{type:"button",variant:"ghost",size:"icon-sm",onPointerDown:g,onClick:T,children:[jsx(u$1,{}),jsx("span",{className:"sr-only",children:u.cancelEdit})]})}),jsx(h,{children:u.cancelEdit})]});let C=e$2(B,A),N=s?.canPin??false;return !y.length&&!C&&!N?null:jsxs(n,{children:[jsxs(p,{children:[jsx(E,{asChild:true,children:jsx(m$1,{asChild:true,children:jsxs(t,{type:"button",variant:"ghost",size:"icon-sm",onPointerDown:g,onClick:g,children:[jsx(k,{}),jsx("span",{className:"sr-only",children:u.rowActions})]})})}),jsx(h,{children:u.rowActions})]}),jsxs(i,{align:"end",className:"w-52",children:[C?jsx(r,{children:jsxs(l,{onClick:D=>{D.stopPropagation(),F();},children:[jsx(m,{"data-icon":"inline-start"}),u.editRow]})}):null,C&&(y.length||N)?jsx(d,{}):null,N?jsx(r,{children:s?.position?jsx(l,{onClick:D=>{D.stopPropagation(),s.pin(false);},children:u.unpinRow}):jsxs(Fragment,{children:[jsx(l,{onClick:D=>{D.stopPropagation(),s?.pin("top");},children:u.pinRowToTop}),jsx(l,{onClick:D=>{D.stopPropagation(),s?.pin("bottom");},children:u.pinRowToBottom})]})}):null,N&&y.length?jsx(d,{}):null,y.length?jsx(r,{children:y.map(D=>{let K=D.icon;return jsxs(l,{disabled:D.disabled?.(A),variant:D.variant==="destructive"?"destructive":void 0,onClick:W=>{W.stopPropagation(),D.onClick(A);},children:[K?jsx(K,{"data-icon":"inline-start"}):null,c$2(D.label,A)]},D.key)})}):null]})]})}}var Ls=f.lazy(()=>import('./data-table-toolbar-operations-IDEGCKBK.js'));function Wi(e){let t=e.classNames??{},{Button:n,ButtonGroup:i,DropdownMenu:r,DropdownMenuCheckboxItem:l,DropdownMenuContent:d,DropdownMenuGroup:m,DropdownMenuItem:p,DropdownMenuLabel:h,DropdownMenuSeparator:E,DropdownMenuTrigger:S,InputGroup:A,InputGroupAddon:V,InputGroupInput:B,Tooltip:q,TooltipContent:F,TooltipTrigger:T}=e;return function({title:y,titleId:g,description:C,descriptionId:N,toolbarQueryValue:D,toolbarQueryPlaceholder:K,onToolbarQueryValueChange:W,customToolbar:O,compactToolbar:R,viewMode:v,onViewModeChange:w,enableViewToggle:k,toolbarActions:M,selectionActions:I,selectedRows:G,selectedRowIds:x,showHiddenRows:Z,hiddenRowsLabel:j,onShowHiddenRowsChange:z,allRows:Y,columnVisibilityOptions:ne,onColumnVisibilityChange:be,enableColumnPinning:fe,onColumnPinningChange:De,columnFilters:Se,onColumnFilterChange:Te,onClearColumnFilters:Ee,density:Ne,onDensityChange:J,enableDensityToggle:he,labels:L,toolbarVisibility:we,openFileDialog:Ge,enableGrouping:nt,enableToolbarColumnChooser:Ye,enableToolbarFilterChips:ot,enableToolbarResetLayout:se,enableToolbarSavedViews:it,savedViews:Ve,onResetColumnLayout:gt,onCreateSavedView:Oe,onApplySavedView:Rt,onRenameSavedView:mt,onDeleteSavedView:Je,reorderColumn:bt,table:ye}){let rt=f.useRef(null),[_e,lt]=f.useState(false),ve=t.toolbarCompactIconButton??"",He=M.filter(a=>(a.placement??"primary")==="primary"),St=M.filter(a=>a.placement==="trailing"),Xe=we?.title??true,de=we?.search??true,vt=we?.actions??true,ft=we?.trailingActions??true,Tt=we?.options??true,Ae=we?.viewToggle??true,$e=we?.customToolbar??true,wt=Xe&&!!(y||C),Be=de,Lt=vt&&He.length>0,Pt=x.length>0&&I.length>0,ke=Tt&&(ne.some(a=>a.canHide)||!!(z&&j)||fe||he||nt||Ye||se||it),Ue=Ye||se||it,st=Se.filter(a=>_n(a.value)),dt={Button:n,DropdownMenuCheckboxItem:l,DropdownMenuGroup:m,DropdownMenuItem:p,DropdownMenuLabel:h,DropdownMenuSeparator:E,InputGroup:A,InputGroupAddon:V,InputGroupInput:B},Ze=a=>jsx(f.Suspense,{fallback:null,children:jsx(Ls,{placement:a,ui:dt,labels:L,enableColumnChooser:Ye,enableFilterChips:ot,enableResetLayout:se,enableSavedViews:it,enableColumnPinning:fe,columnVisibilityOptions:ne,onColumnVisibilityChange:be,onColumnPinningChange:De,reorderColumn:bt,table:ye,onResetColumnLayout:gt,savedViews:Ve,onCreateSavedView:Oe,onApplySavedView:Rt,onRenameSavedView:mt,onDeleteSavedView:Je,toolbarQueryValue:D,onToolbarQueryValueChange:W,activeColumnFilters:st,onColumnFilterChange:Te,onClearColumnFilters:Ee})}),xt=ye.getAllLeafColumns().filter(a=>!a.id.startsWith("__")&&a.getCanGroup()),je=ye.getState().grouping.flatMap(a=>{let b=ye.getColumn(a);return b?[b]:[]}),Ct=Ae&&k&&!!w,Nt=ft&&St.length>0,Ke=$e&&!!O,Et=$e&&!!(R??O),kt=L.selectedRows(x.length);return f.useEffect(()=>{_e&&rt.current?.focus();},[_e]),!wt&&!Be&&!Lt&&!Pt&&!ke&&!Ct&&!Nt&&!Ke&&!Et?null:jsxs("div",{className:"flex flex-col gap-4 pb-0",children:[Xe&&(y||C)?jsxs("div",{className:"flex flex-col gap-1",children:[y?jsx("h2",{id:g,className:"text-lg font-semibold tracking-tight",children:y}):null,C?jsx("p",{id:N,className:`max-w-3xl text-sm ${t.mutedText??"opacity-70"}`,children:C}):null]}):null,jsxs("div",{className:"flex flex-col gap-3",children:[jsxs("div",{"data-dtp-slot":"data-table-toolbar-controls",className:"flex items-center gap-2 overflow-x-auto px-1 @min-[768px]/data-table:gap-3 @min-[768px]/data-table:overflow-visible",children:[de?jsxs(Fragment,{children:[jsx("div",{className:"hidden min-w-0 grow max-w-md @min-[768px]/data-table:block",children:jsxs(A,{className:"min-w-0",children:[jsx(B,{value:D,onChange:a=>{W(a.target.value);},placeholder:K}),jsx(V,{align:"inline-start","aria-hidden":"true",children:jsx(s$1,{})}),D?jsx(V,{align:"inline-end",children:jsx("button",{type:"button",className:`inline-flex size-5 items-center justify-center rounded-md transition-colors focus-visible:outline-none ${t.toolbarIconButton??"opacity-70 hover:opacity-100"}`,onClick:()=>{W("");},"aria-label":L.clearSearch,title:L.clearSearch,children:jsx(u$1,{})})}):null]})}),jsxs(q,{children:[jsx(T,{asChild:true,children:jsxs(n,{type:"button",variant:_e||D?"secondary":"outline",size:"icon-sm","aria-label":L.searchTable,"aria-pressed":_e,className:`shrink-0 @min-[768px]/data-table:hidden ${ve} ${t.toolbarInputButton??""}`,onClick:()=>{lt(a=>!a);},children:[jsx(s$1,{}),jsx("span",{className:"sr-only",children:L.searchTable})]})}),jsx(F,{children:L.searchTable})]})]}):null,vt?jsx("div",{className:"flex shrink-0 items-center gap-2",children:He.map(a=>{let b=!a.iconOnly&&!!a.icon,U=jsxs(n,{type:"button",className:b?`size-7 shrink-0 px-0 @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit @min-[768px]/data-table:px-2.5 ${ve}`:a.iconOnly?`size-7 shrink-0 @min-[768px]/data-table:size-8 ${ve}`:"size-7 shrink-0 @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit",variant:a.variant??"outline",size:a.iconOnly?"icon":"default",onClick:()=>{a.onClick({rows:Y,openFileDialog:Ge});},disabled:a.disabled,"aria-label":a.label,title:a.iconOnly?void 0:a.label,children:[a.icon?jsx(a.icon,{}):null,a.iconOnly?jsx("span",{className:"sr-only",children:a.label}):b?jsx("span",{className:"hidden @min-[768px]/data-table:inline",children:a.label}):jsx("span",{children:a.label})]},a.key);return a.iconOnly?jsxs(q,{children:[jsx(T,{asChild:true,children:U}),jsx(F,{children:a.label})]},a.key):U})}):null,Et?jsx("div",{"data-dtp-slot":"data-table-toolbar-compact-custom",className:"flex shrink-0 items-center gap-2 @min-[1024px]/data-table:hidden",children:R??O}):null,jsx("div",{className:"grow","aria-hidden":"true"}),jsxs("div",{"data-dtp-slot":"data-table-toolbar-end-controls",className:"flex shrink-0 items-center gap-2",children:[x.length?jsx("div",{className:`hidden text-sm @min-[768px]/data-table:block ${t.mutedText??"opacity-70"}`,children:kt}):null,x.length?I.map(a=>{let b=a.icon,U={rows:G,rowIds:x},ce=typeof a.disabled=="function"?a.disabled(G,U):a.disabled;return jsxs(q,{children:[jsx(T,{asChild:true,children:jsxs(n,{type:"button",variant:a.variant??"secondary",size:"icon-sm",className:ve,disabled:ce,onClick:()=>{a.onClick(U);},"aria-label":a.label,children:[b?jsx(b,{}):null,jsx("span",{className:"sr-only",children:a.label})]})}),jsx(F,{children:a.label})]},a.key)}):null,ke?jsxs(r,{children:[jsx(S,{asChild:true,children:jsxs(n,{type:"button",variant:"outline",size:"icon-sm","aria-label":L.tableOptions,className:`${ve} ${t.toolbarInputButton??""}`,title:L.tableOptions,children:[jsx(a$5,{}),jsx("span",{className:"sr-only",children:L.tableOptions})]})}),jsxs(d,{align:"end",className:"w-56",children:[jsx(h,{children:L.tableOptions}),jsx(m,{children:z&&j?jsx(l,{checked:Z,onCheckedChange:a=>{z(a===true);},children:L.showHiddenRows(j)}):null}),he?jsxs(Fragment,{children:[jsx(E,{}),jsx(h,{children:L.density}),jsx(m,{children:[["compact",L.compactDensity],["comfortable",L.comfortableDensity],["spacious",L.spaciousDensity]].map(([a,b])=>jsx(l,{checked:Ne===a,onCheckedChange:()=>{J(a);},children:b},a))})]}):null,Ue?Ze("menu"):null,!Ye&&ne.some(a=>a.canHide)?jsxs(Fragment,{children:[jsx(E,{}),jsx(h,{children:L.columns}),jsx(m,{children:ne.filter(a=>a.canHide).map(a=>jsx(l,{checked:a.visible,onCheckedChange:b=>{be?.(a.id,b===true);},children:a.label},a.id))})]}):null,fe&&!Ye?jsxs(Fragment,{children:[jsx(E,{}),jsxs(h,{children:[L.pinLeft," / ",L.pinRight]}),jsx(m,{children:ne.map(a=>jsxs(p,{onSelect:b=>{b.preventDefault();},children:[jsx("span",{className:"min-w-0 flex-1 truncate",children:a.label}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${L.pinLeft}: ${a.label}`,onClick:b=>{b.stopPropagation(),De(a.id,"left");},children:"L"}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${L.pinRight}: ${a.label}`,onClick:b=>{b.stopPropagation(),De(a.id,"right");},children:"R"}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${L.unpin}: ${a.label}`,onClick:b=>{b.stopPropagation(),De(a.id,false);},children:"-"})]},`pin-${a.id}`))})]}):null,nt&&xt.length?jsxs(Fragment,{children:[jsx(E,{}),jsx(h,{children:L.grouping}),jsx(m,{children:xt.map(a=>{let b=typeof a.columnDef.header=="string"?a.columnDef.header:a.id,U=a.getIsGrouped();return jsx(l,{checked:U,onCheckedChange:()=>{a.toggleGrouping();},children:U?L.ungroup(b):L.groupBy(b)},`group-${a.id}`)})})]}):null]})]}):null,Ae&&k&&w?jsxs(i,{children:[jsxs(q,{children:[jsx(T,{asChild:true,children:jsxs(n,{type:"button",variant:v==="table"?"default":"outline","aria-pressed":v==="table",className:v==="table"?ve:`${ve} ${t.toolbarInputButton??""}`,size:"icon-sm",onClick:()=>{w("table");},children:[jsx(r$1,{}),jsx("span",{className:"sr-only",children:L.switchToTableView??oe.switchToTableView})]})}),jsx(F,{children:L.tableView??oe.tableView})]}),jsxs(q,{children:[jsx(T,{asChild:true,children:jsxs(n,{type:"button",variant:v==="card"?"default":"outline","aria-pressed":v==="card",className:v==="table"?`${ve} ${t.toolbarInputButton??""}`:ve,size:"icon-sm",onClick:()=>{w("card");},children:[jsx(q$1,{}),jsx("span",{className:"sr-only",children:L.switchToCardView??oe.switchToCardView})]})}),jsx(F,{children:L.cardView??oe.cardView})]})]}):null,ft?St.map(a=>{let b=!a.iconOnly&&!!a.icon,U=jsxs(n,{type:"button",variant:a.variant??"outline",size:a.iconOnly?"icon-sm":"default",onClick:()=>{a.onClick({rows:Y,openFileDialog:Ge});},disabled:a.disabled,"aria-label":a.label,title:a.iconOnly?void 0:a.label,className:`size-7 shrink-0 ${a.iconOnly?"":`${b?"px-0 @min-[768px]/data-table:px-2.5":""} @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit`} ${a.iconOnly||b?ve:""} ${t.toolbarInputButton??""}`,children:[a.icon?jsx(a.icon,{"data-icon":a.iconOnly?void 0:"inline-start"}):null,a.iconOnly?jsx("span",{className:"sr-only",children:a.label}):b?jsx("span",{className:"hidden @min-[768px]/data-table:inline",children:a.label}):jsx("span",{children:a.label})]},a.key);return a.iconOnly?jsxs(q,{children:[jsx(T,{asChild:true,children:U}),jsx(F,{children:a.label})]},a.key):U}):null]})]}),de&&_e?jsx("div",{"data-dtp-slot":"data-table-toolbar-compact-search",className:"min-w-0 @min-[768px]/data-table:hidden",children:jsxs(A,{children:[jsx(B,{ref:rt,value:D,onChange:a=>{W(a.target.value);},placeholder:K}),jsx(V,{align:"inline-start","aria-hidden":"true",children:jsx(s$1,{})}),D?jsx(V,{align:"inline-end",children:jsx("button",{type:"button",className:`inline-flex size-5 items-center justify-center rounded-md transition-colors focus-visible:outline-none ${t.toolbarIconButton??"opacity-70 hover:opacity-100"}`,onClick:()=>{W("");},"aria-label":L.clearSearch,title:L.clearSearch,children:jsx(u$1,{})})}):null]})}):null,Se.length?jsxs("div",{"data-dtp-slot":"data-table-toolbar-filters",className:"flex min-w-0 flex-wrap items-center gap-2",children:[Se.map(a=>jsx(u,{filter:a,labels:L,onColumnFilterChange:Te},a.id)),Se.some(a=>_n(a.value))?jsx(n,{type:"button",variant:"ghost",size:"sm",onClick:Ee,children:L.clearFilters}):null]}):null,ot?Ze("chips"):null,nt&&je.length?jsxs("div",{"data-dtp-slot":"data-table-grouping-bar","aria-label":L.grouping,className:"flex flex-wrap items-center gap-2",children:[jsxs("span",{className:"text-sm opacity-70",children:[L.grouping,":"]}),je.map((a,b)=>{let U=typeof a.columnDef.header=="string"?a.columnDef.header:a.id,ce=ae=>{let _=[...ye.getState().grouping],[et]=_.splice(b,1);et!==void 0&&(_.splice(ae,0,et),ye.setGrouping(_));};return jsxs("div",{className:"inline-flex items-center rounded-md border",children:[jsx(n,{type:"button",variant:"ghost",size:"sm",disabled:b===0,onClick:()=>ce(b-1),"aria-label":L.moveGroupingEarlier(U),children:jsx("span",{"aria-hidden":"true",children:"\u2190"})}),jsxs(n,{type:"button",variant:"secondary",size:"sm",onClick:()=>a.toggleGrouping(),"aria-label":L.removeGrouping(U),children:[U," ",jsx("span",{"aria-hidden":"true",children:"\xD7"})]}),jsx(n,{type:"button",variant:"ghost",size:"sm",disabled:b===je.length-1,onClick:()=>ce(b+1),"aria-label":L.moveGroupingLater(U),children:jsx("span",{"aria-hidden":"true",children:"\u2192"})})]},`grouping-bar-${a.id}`)})]}):null]}),$e&&O?jsx("div",{"data-dtp-slot":"data-table-toolbar-desktop-custom",className:"hidden flex-row items-center gap-3 @min-[1024px]/data-table:flex",children:O}):null]})};function u({filter:s,labels:y,onColumnFilterChange:g}){let[C,N]=f.useState("");if(s.type==="text")return jsxs(A,{className:"min-w-48 max-w-64",children:[jsx(B,{value:typeof s.value=="string"?s.value:"",onChange:M=>{g(s.id,M.target.value);},placeholder:s.placeholder??s.label,"aria-label":`${y.filters}: ${s.label}`}),jsx(V,{align:"inline-start","aria-hidden":"true",children:jsx(s$1,{})})]});if(s.type==="numberRange"||s.type==="dateRange"){let M=Ns(s.value),I=s.type==="numberRange"?"number":"date",G=y.filterFrom??oe.filterFrom,x=y.filterTo??oe.filterTo;return jsxs("div",{role:"group","aria-label":`${y.filters}: ${s.label}`,className:"flex min-w-0 items-center gap-1.5",children:[jsxs(A,{className:"min-w-32 max-w-44",children:[jsx(B,{type:I,inputMode:I==="number"?"decimal":void 0,value:M.from??"",min:s.min,max:s.max,step:I==="number"?s.step:void 0,onChange:Z=>{g(s.id,{...M,from:Ki(Z.target.value,I)});},"aria-label":`${s.label}: ${G}`}),jsx(V,{align:"inline-start",children:G})]}),jsxs(A,{className:"min-w-32 max-w-44",children:[jsx(B,{type:I,inputMode:I==="number"?"decimal":void 0,value:M.to??"",min:s.min,max:s.max,step:I==="number"?s.step:void 0,onChange:Z=>{g(s.id,{...M,to:Ki(Z.target.value,I)});},"aria-label":`${s.label}: ${x}`}),jsx(V,{align:"inline-start",children:x})]})]})}let D=s.type==="boolean",K=s.type==="faceted",W=[{label:s.trueLabel??y.filterTrue??oe.filterTrue,value:"true"},{label:s.falseLabel??y.filterFalse??oe.filterFalse,value:"false"}],O=D?W:s.options,R=K&&C?O.filter(M=>M.label.toLocaleLowerCase().includes(C.toLocaleLowerCase())):O,v=typeof s.value=="string"||typeof s.value=="boolean"?String(s.value):"",w=Array.isArray(s.value)?s.value.map(String):v?[v]:[],k=w.length===0?s.label:`${s.label}: ${w.length===1?O.find(M=>M.value===String(w[0]))?.label??w[0]:w.length}`;return jsxs(r,{children:[jsx(S,{asChild:true,children:jsx(n,{type:"button",variant:"outline",size:"sm",children:k})}),jsxs(d,{align:"start",className:"w-56",children:[jsx(h,{children:s.label}),K&&s.searchable!==false?jsx("div",{className:"px-2 pb-2",children:jsxs(A,{children:[jsx(B,{value:C,onChange:M=>{N(M.target.value);},placeholder:s.searchPlaceholder??y.facetSearch(s.label),"aria-label":y.facetSearch(s.label)}),jsx(V,{align:"inline-start","aria-hidden":"true",children:jsx(s$1,{})})]})}):null,jsxs(m,{children:[s.type==="select"||D||K?jsx(p,{onClick:()=>{g(s.id,"");},children:y.allFilterOptions??oe.allFilterOptions}):null,R.map(M=>jsxs(l,{checked:w.includes(M.value),disabled:M.disabled,onCheckedChange:I=>{if(s.type==="select"||D){g(s.id,I===true?M.value:"");return}let G=new Set(w);I===true?G.add(M.value):G.delete(M.value),g(s.id,Array.from(G));},children:[jsx("span",{className:"min-w-0 flex-1 truncate",children:M.label}),M.count!==void 0?jsx("span",{className:"ml-3 tabular-nums opacity-70",children:M.count}):null]},M.value))]})]})]})}}function _n(e){return Array.isArray(e)?e.length>0:e&&typeof e=="object"?"from"in e||"to"in e?Object.values(e).some(_n):true:e!=null&&e!==""}function Ns(e){if(!e||typeof e!="object"||Array.isArray(e))return {};let t=e;return {...typeof t.from=="number"||typeof t.from=="string"?{from:t.from}:{},...typeof t.to=="number"||typeof t.to=="string"?{to:t.to}:{}}}function Ki(e,t){if(e)return t==="number"?Number(e):e}var Os=f.lazy(async()=>({default:(await import('./data-table-virtual-table-panel-LEQ3RGTM.js')).DataTableVirtualTablePanel}));function Qi(e){let t=typeof e.virtualization=="object"?e.virtualization:void 0;return e.virtualization===true||t?.enabled===true?jsx(f.Suspense,{fallback:jsx(e$1,{...e,rowsToRender:e.rowsToRender.slice(0,Math.max(1,Math.floor(t?.fallbackRowCount??20)))}),children:jsx(Os,{...e})}):jsx(e$1,{...e})}var _s="data-table-pro:saved-views:";var Yi=["sorting","columnVisibility","columnFilters","grouping","columnOrder","columnPinning","rowPinning","columnSizing","density","viewMode","showHiddenRows","globalFilter"],qi=0;function jt(e){let t=$n(e);if(!e||!t)return [];let n;try{n=t.getItem(Un(e.key));}catch(d){return e.onError?.({error:d,operation:"read"}),[]}if(!n)return [];let i;try{i=(e.deserialize??JSON.parse)(n);}catch(d){return e.onError?.({error:d,operation:"deserialize"}),[]}if(!Qe(i)||!("version"in i)||!("views"in i))return [];let r=e.version??1,l=i.views;if(i.version!==r){if(!e.migrate)return [];try{l=e.migrate({version:i.version,views:i.views},r);}catch(d){return e.onError?.({error:d,operation:"migrate"}),[]}}return Array.isArray(l)?l.map(d=>Bs(d,e.slices)).filter(d=>!!d):[]}function Ji(e,t,n){let i=t.trim();if(!e||!i)return;let r=new Date().toISOString(),l={id:qs(),name:i,createdAt:r,updatedAt:r,state:Hs(n,e.slices)},d=[...jt(e),l];return Bn(e,d,"create")?Gn(l):void 0}function Xi(e,t,n){let i=n.trim();if(!e||!i)return;let r,l=jt(e).map(d=>d.id!==t?d:(r={...d,name:i,updatedAt:new Date().toISOString()},r));if(r)return Bn(e,l,"rename")?Gn(r):void 0}function Zi(e,t){if(!e)return false;let n=jt(e),i=n.filter(r=>r.id!==t);return i.length!==n.length&&Bn(e,i,"delete")}function er(e){let t=$n(e);if(!e||!t)return false;try{t.removeItem(Un(e.key));}catch(n){return e.onError?.({error:n,operation:"remove"}),false}return e.onChange?.([],"clear"),true}function Bn(e,t,n){let i=$n(e);if(!i)return false;let r;try{let d={version:e.version??1,views:t};r=(e.serialize??JSON.stringify)(d);}catch(d){return e.onError?.({error:d,operation:"serialize"}),false}try{i.setItem(Un(e.key),r);}catch(d){return e.onError?.({error:d,operation:"write"}),false}let l=t.map(Gn);return e.onChange?.(l,n),true}function Hs(e,t){let n=new Set(t??Yi),i={};for(let r of Object.keys(e))n.has(r)&&Object.assign(i,{[r]:Gs(r,e[r])});return i}function Bs(e,t){if(!(!Qe(e)||typeof e.id!="string"||!e.id||typeof e.name!="string"||!e.name.trim()||typeof e.createdAt!="string"||typeof e.updatedAt!="string"))return {id:e.id,name:e.name.trim(),createdAt:e.createdAt,updatedAt:e.updatedAt,state:tr(e.state,t)}}function tr(e,t){if(!Qe(e))return {};let n=new Set(t??Yi),i={},r=$s(e.sorting);n.has("sorting")&&r&&(i.sorting=r);let l=Us(e.pagination);n.has("pagination")&&l&&(i.pagination=l);let d=Hn(e.rowSelection);n.has("rowSelection")&&d&&(i.rowSelection=d);let m=Hn(e.columnVisibility);n.has("columnVisibility")&&m&&(i.columnVisibility=m);let p=js(e.columnFilters);n.has("columnFilters")&&p&&(i.columnFilters=p);let h=oa(e.grouping);n.has("grouping")&&h&&(i.grouping=h);let E=e.expanded===true?true:Hn(e.expanded);n.has("expanded")&&E!==void 0&&(i.expanded=E);let S=oa(e.columnOrder);n.has("columnOrder")&&S&&(i.columnOrder=S);let A=Ks(e.columnPinning);n.has("columnPinning")&&A&&(i.columnPinning=A);let V=Ws(e.rowPinning);n.has("rowPinning")&&V&&(i.rowPinning=V);let B=Qs(e.columnSizing);return n.has("columnSizing")&&B&&(i.columnSizing=B),n.has("density")&&(e.density==="compact"||e.density==="comfortable"||e.density==="spacious")&&(i.density=e.density),n.has("viewMode")&&(e.viewMode==="table"||e.viewMode==="card")&&(i.viewMode=e.viewMode),n.has("showHiddenRows")&&typeof e.showHiddenRows=="boolean"&&(i.showHiddenRows=e.showHiddenRows),n.has("globalFilter")&&typeof e.globalFilter=="string"&&(i.globalFilter=e.globalFilter),i}function Gn(e){return {...e,state:tr(e.state,Object.keys(e.state))}}function Gs(e,t){return Array.isArray(t)?t.map(n=>Qe(n)?{...n}:n):Qe(t)?e==="columnPinning"||e==="rowPinning"?{...e==="columnPinning"?{left:Array.isArray(t.left)?[...t.left]:void 0,right:Array.isArray(t.right)?[...t.right]:void 0}:{top:Array.isArray(t.top)?[...t.top]:void 0,bottom:Array.isArray(t.bottom)?[...t.bottom]:void 0}}:{...t}:t}function $s(e){if(Array.isArray(e))return e.filter(t=>Qe(t)&&typeof t.id=="string").map(t=>({id:t.id,desc:!!t.desc}))}function Us(e){if(!(!Qe(e)||!Number.isInteger(e.pageIndex)||e.pageIndex<0||!Number.isInteger(e.pageSize)||e.pageSize<1))return {pageIndex:e.pageIndex,pageSize:e.pageSize}}function js(e){if(Array.isArray(e))return e.filter(t=>Qe(t)&&typeof t.id=="string"&&Object.prototype.hasOwnProperty.call(t,"value")).map(t=>({id:t.id,value:t.value}))}function Ks(e){if(Qe(e))return {left:oa(e.left)??[],right:oa(e.right)??[]}}function Ws(e){if(Qe(e))return {top:oa(e.top)??[],bottom:oa(e.bottom)??[]}}function Hn(e){if(Qe(e))return Object.fromEntries(Object.entries(e).filter(t=>typeof t[1]=="boolean"))}function Qs(e){if(Qe(e))return Object.fromEntries(Object.entries(e).filter(t=>typeof t[1]=="number"&&Number.isFinite(t[1])&&t[1]>=0))}function oa(e){if(Array.isArray(e))return e.filter(t=>typeof t=="string")}function $n(e){if(e){if(e.storage)return e.storage;if(!(typeof window>"u"))try{return window.localStorage}catch(t){e.onError?.({error:t,operation:"read"});return}}}function qs(){return typeof globalThis.crypto?.randomUUID=="function"?globalThis.crypto.randomUUID():(qi+=1,`view-${Date.now().toString(36)}-${qi.toString(36)}`)}function Un(e){return `${_s}${e}`}function Qe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ar({columns:e,currentColumnFilters:t$1,currentColumnPinning:n,effectiveColumnVisibility:i,enableColumnFilters:r$1,handleColumnFiltersChange:l$1,handleColumnPinningChange:d,labels:m,table:p,toolbarActions:h,visibleData:E,csvExport:S}){let A=f.useMemo(()=>j(e).map(({column:s,index:y})=>{let g=r(s,y),C=s.header,N=t(s),D=typeof C=="string"?C:N?B(N):B(g),K=n.left?.includes(g)===true?"left":n.right?.includes(g)===true?"right":false;return {id:g,label:D,visible:i[g]!==false,canHide:s.enableHiding!==false,pinned:K}}),[e,n,i]),V=f.useMemo(()=>r$1===false?[]:j(e).flatMap(({column:s,index:y})=>{let g=s.meta?.filter;if(!g)return [];let C=r(s,y),N=s.header,D=t(s),K=g.label??(typeof N=="string"?N:D?B(D):B(C)),W=t$1.find(w=>w.id===C),O=g.faceting?.options,R=g.type==="numberRange"?p.getColumn(C)?.getFacetedMinMaxValues():void 0,v=g.type==="faceted"&&O?typeof O=="function"?O({rows:E}):O:g.type==="faceted"?Array.from(p.getColumn(C)?.getFacetedUniqueValues()??[]).map(([w,k])=>({label:g.faceting?.getOptionLabel?.(w)??String(w),value:String(w),count:k})):typeof g.options=="function"?g.options({rows:E}):g.options??[];return [{id:C,label:K,type:g.type,value:W?.value,placeholder:g.placeholder,options:k$1(v),searchable:g.faceting?.searchable,searchPlaceholder:g.faceting?.searchPlaceholder,trueLabel:g.trueLabel,falseLabel:g.falseLabel,min:g.min??R?.[0],max:g.max??R?.[1],step:g.step}]}),[e,t$1,r$1,p,E]),B$1=f.useCallback((s,y)=>{l$1(g=>{let C=g.filter(N=>N.id!==s);return m$1(y)&&C.push({id:s,value:y}),C});},[l$1]),q=f.useCallback(()=>{l$1([]);},[l$1]),F=f.useCallback((s,y)=>{d(g=>{let C=(g.left??[]).filter(D=>D!==s),N=(g.right??[]).filter(D=>D!==s);return y==="left"&&C.push(s),y==="right"&&N.push(s),{left:C,right:N}});},[d]),T=f.useCallback(()=>{if(S)return o({csvExport:S,table:p,labels:m})},[S,m,p]),u=f.useMemo(()=>S?[...h??[],{key:"__csv_export__",label:m.exportCsv,icon:l,placement:"trailing",onClick:T}]:h??[],[S,T,m.exportCsv,h]);return {columnVisibilityOptions:A,effectiveToolbarActions:u,handleClearColumnFilters:q,handleToolbarColumnFilterChange:B$1,handleToolbarColumnPinningChange:F,toolbarColumnFilters:V}}function or({columns:e,data:t,getRowId:n}){let i=f.useRef({columns:e,data:t,getRowId:n}),r=f.useRef(new Set);f.useEffect(()=>{if(!Ys())return;let l=i.current;l.data!==t&&nr(l.data,t)&&!r.current.has("data")&&ja(r.current,"data","The data array identity changed. Keep rows immutable and memoize unchanged data so filtering, row models, and virtual measurements can be reused."),l.columns!==e&&nr(l.columns,e)&&!r.current.has("columns")&&ja(r.current,"columns","The columns array identity changed. Memoize stable column definitions so the search index and table column model can be reused."),l.getRowId!==n&&!r.current.has("getRowId")&&ja(r.current,"getRowId","getRowId identity changed. Memoize it and return an immutable, unique id to preserve row state and virtual scroll anchoring.");let d=new Set;for(let m=0;mObject.is(n,t[i]))}function ja(e,t,n){e.add(t),console.warn(`[data-table-pro] ${n}`);}function Ys(){return globalThis.process?.env?.NODE_ENV!=="production"}var Xs=f.lazy(()=>import('./data-table-auto-page-size-EICVZJQ5.js'));function Kc(e){return Zs(e)}function Zs(e,t={}){let n=t.CardPanel??Ti,i=t.TablePanel??Qi,r$1=e.classNames??{},{rootClassName:l,Button:d,Checkbox:m,Input:p,ScrollArea:h$1,ScrollBar:E,Skeleton:S,Table:A,TableBody:V,TableCell:B,TableFooter:q$1="tfoot",TableHead:F,TableHeader:T,TableRow:u,Tooltip:s$1,TooltipContent:y,TooltipProvider:g=f.Fragment,TooltipTrigger:C}=e,N=Gi(e),D=ji(e),{DataTableFooter:K}=$i(e),W=Wi(e),O=Hi(e,D),R=f.lazy(async()=>{let{createDataTableStateOverlay:w}=await import('./data-table-state-overlay-AQ7VU6EM.js');return {default:w(e)}}),v={minSize:80,size:180,maxSize:720};return function({columns:k,data:M,getRowId:I,children:G,title:x,description:Z,toolbarQueryValue:j$1,onToolbarQueryValueChange:z,toolbarQueryPlaceholder:Y,toolbarQueryDebounceMs:ne,manualFiltering:be=false,enableToolbarQueryFiltering:fe=true,globalFilterFn:De,columnFilters:Se,onColumnFiltersChange:Te,enableColumnFilters:Ee,customToolbar:Ne,compactToolbar:J,rowsPerPageOptions:he=[10,20,50,100],totalRowCount:L,hasNextPage:we,sorting:Ge,onSortingChange:nt,manualSorting:Ye=false,grouping:ot,onGroupingChange:se,manualGrouping:it=false,enableGrouping:Ve=false,groupedColumnMode:gt="reorder",aggregationFns:Oe,pageIndex:Rt,pageSize:mt,autoPageSize:Je=false,onPageIndexChange:bt,onPageSizeChange:ye,pageCount:rt,manualPagination:_e=false,rowSelection:lt,onRowSelectionChange:ve,enableRowSelection:He=false,enableMultiRowSelection:St=true,enableSubRowSelection:Xe=true,getRowCanSelect:de,rowSelectionSelectAllScope:vt="page",expanded:ft,onExpandedChange:Tt,getSubRows:Ae,manualExpanding:$e=false,paginateExpandedRows:wt,filterFromLeafRows:Be,maxLeafRowFilterDepth:Lt,detailPanel:Pt,getRowCanExpand:ke,renderExpandedRow:Ue,columnOrder:st,onColumnOrderChange:dt,enableColumnReordering:Ze=false,columnGroupHeaderHeight:xt,columnPinning:je,onColumnPinningChange:Ct,enableColumnPinning:Nt=false,rowPinning:Ke,onRowPinningChange:Et,enableRowPinning:kt=false,keepPinnedRows:a=true,toolbarActions:b=[],selectionActions:U=[],rowActions:ce=[],csvExport:ae,clipboard:_,enableCellSelection:et=false,cellSelection:Ot,defaultCellSelection:_t,onCellSelectionChange:Ka,gridCommands:Mt,density:ia,onDensityChange:Wa,enableDensityToggle:Qa=false,columnPrefsKey:$,persistence:Pe,savedViews:ie,toolbarDataOperations:ct,initialState:te,state:ue,onStateChange:Ce,apiRef:lr,labels:Kn,summaryRows:sr=[],cardRenderer:qa,cardSizing:dr,cardGridClassName:cr,cardClassName:ur,viewMode:Wn,onViewModeChange:pr,enableViewToggle:gr=false,enablePrint:Qn=false,enableFullscreen:Ta=false,emptyState:mr,stateOverlay:Kt,isLoading:qn=false,loadingRowCount:br,getRowLoadingState:fr,hiddenRows:Yn,showHiddenRows:Jn,onShowHiddenRowsChange:Tr,infiniteScroll:wa,editableRows:Vt,columnVisibility:Xn,onColumnVisibilityChange:wr,columnSizing:Zn,onColumnSizingChange:Cr,enableColumnResizing:eo=false,columnResizeMode:Dr="onEnd",layoutMode:to="fill",stickyHeader:hr=true,showFooter:yr=true,showToolbar:ao=true,dir:Ya="ltr",flexGrow:Wt=true,toolbarVisibility:no,className:Rr,tableClassName:Sr,tableContainerClassName:oo,stripedRows:io=false,getRowClassName:ro,onRowClick:Ja,onActionError:ra,dragAndDrop:Qt,fileUpload:Dt,virtualization:Xa,accessibility:lo,interactiveGrid:Ca}){let Ht=f.useRef(null),so=f.useRef(null),co=f.useRef(null),vr=f.useRef(null),Za=f.useRef(null),Pr=f.useRef(null),[uo,en]=f.useState(0),xr=f.useId(),Er=f.useId();or({columns:k,data:M,getRowId:I}),f.useMemo(()=>s(k),[k]);let xe=f.useMemo(()=>hi(Kn),[Kn]),tn=ct===true?{columnChooser:true,savedViews:true,resetLayout:true}:ct===false?{}:ct??{},an=lo?.mode==="grid"||Ca===true||typeof Ca=="object",[At,Da]=Re({defaultValue:_t??null,onChange:Ka,value:Ot}),kr=j$1??ue?.globalFilter,Mr=Ge??ue?.sorting,Vr=ot??ue?.grouping,ha=Rt??ue?.pagination?.pageIndex,qt=mt??ue?.pagination?.pageSize,Ar=lt??ue?.rowSelection,Fr=Xn??ue?.columnVisibility,Ir=Se??ue?.columnFilters,zr=ft??ue?.expanded,Lr=st??ue?.columnOrder,Nr=je??ue?.columnPinning,Or=Ke??ue?.rowPinning,_r=Zn??ue?.columnSizing,Hr=ia??ue?.density,Br=Wn??ue?.viewMode,Gr=Jn??ue?.showHiddenRows,po=ao&&(no?.title??true),go=po&&x?xr:void 0,mo=po&&Z?Er:void 0;td(ue,{columnFilters:Se!==void 0,columnOrder:st!==void 0,columnPinning:je!==void 0,rowPinning:Ke!==void 0,columnSizing:Zn!==void 0,columnVisibility:Xn!==void 0,density:ia!==void 0,expanded:ft!==void 0,grouping:ot!==void 0,globalFilter:j$1!==void 0,pagination:Rt!==void 0||mt!==void 0,rowSelection:lt!==void 0,showHiddenRows:Jn!==void 0,sorting:Ge!==void 0,viewMode:Wn!==void 0});let $r=Le("globalFilter",z,Ce),Ur=Le("sorting",nt,Ce),jr=Le("grouping",se,Ce),Kr=Le("rowSelection",ve,Ce),Wr=Le("columnVisibility",wr,Ce),Qr=Le("columnFilters",Te,Ce),qr=Le("expanded",Tt,Ce),Yr=Le("columnOrder",dt,Ce),Jr=Le("columnPinning",Ct,Ce),Xr=Le("rowPinning",Et,Ce),Zr=Le("columnSizing",Cr,Ce),el=Le("density",Wa,Ce),tl=Le("viewMode",pr,Ce),al=Le("showHiddenRows",Tr,Ce),ya=f.useCallback(o=>{bt?.(o),Ce?.(P=>({...P,pagination:{pageIndex:o,pageSize:qt??P.pagination.pageSize}}));},[bt,Ce,qt]),nn=f.useCallback(o=>{ye?.(o),Ce?.(P=>({...P,pagination:{pageIndex:ha??P.pagination.pageIndex,pageSize:o}}));},[ye,Ce,ha]),Me=f.useCallback((o,P)=>{ed(P,o,ra);},[ra]),bo=f.useMemo(()=>ce.map(o=>({...o,onClick:P=>{Me({actionKey:o.key,row:P,source:"rowAction"},()=>o.onClick(P));}})),[ce,Me]),fo=f.useMemo(()=>Ja?o=>{Me({row:o.row,source:"rowClick"},()=>Ja(o));}:void 0,[Ja,Me]),nl=f.useCallback((o,P)=>{ra?.({error:o,row:P,source:"edit"});},[ra]),{containerWidth:ol,currentColumnFilters:Ra,currentColumnOrder:on,currentColumnPinning:Sa,currentRowPinning:rn,currentColumnSizing:va,currentColumnVisibility:To,currentDensity:la,currentExpanded:Pa,currentGrouping:ln,currentPagination:tt,currentRowSelection:xa,currentShowHiddenRows:sn,currentSorting:Ea,currentViewMode:Yt,effectiveColumnVisibility:wo,globalFilterValue:il,handleDensityChange:dn,handleShowHiddenRowsChange:cn,handleViewModeChange:un,localSearchValue:Bt,resolvedLoadingRowCount:rl,resolvedToolbarQueryPlaceholder:ll,selectedRowIds:sl,selectedRows:dl,setCurrentColumnFilters:Co,setCurrentColumnOrder:cl,setCurrentColumnPinning:Do,setCurrentRowPinning:ul,setCurrentColumnVisibility:pl,setCurrentExpanded:ho,setCurrentGrouping:gl,setCurrentRowSelection:yo,setCurrentSorting:ml,setLocalColumnSizing:bl,setLocalPagination:pn,setLocalSearchValue:gn,shouldRenderInitialLoading:mn,tableData:fl,tableGetRowId:Tl,visibleData:wl}=Li({columnFilters:Ir,columnOrder:Lr,columnPinning:Nr,rowPinning:Or,columnSizing:_r,columnPrefsKey:$,persistence:Pe,columnVisibility:Fr,columns:k,containerRef:Ht,data:M,density:Hr,enableRowSelection:He,enableToolbarQueryFiltering:fe,expanded:zr,grouping:Vr,getSubRows:Ae,getRowId:I,hiddenRows:Yn,isLoading:qn,loadingRowCount:br,manualFiltering:be,initialState:te,onColumnFiltersChange:Qr,onColumnOrderChange:Yr,onColumnPinningChange:Jr,onRowPinningChange:Xr,onColumnSizingChange:Zr,onColumnVisibilityChange:Wr,onDensityChange:el,onExpandedChange:qr,onGroupingChange:jr,onPageIndexChange:ya,onRowSelectionChange:Kr,onShowHiddenRowsChange:al,onSortingChange:Ur,onToolbarQueryValueChange:$r,onViewModeChange:tl,pageIndex:ha,pageSize:qt,resolvedLabels:xe,rowSelection:Ar,rowsPerPageOptions:he,selectionActions:U,showHiddenRows:Gr,sorting:Mr,toolbarQueryDebounceMs:ne,toolbarQueryPlaceholder:Y,toolbarQueryValue:kr,viewMode:Br}),bn=!!(Ue&&!Pt&&!Ae),Jt=Pt??(Ue?{getRowCanExpand:Ae?void 0:ke,render:Ue}:void 0),[fn,Ro]=Re({defaultValue:()=>bn?te?.expanded??{}:{},onChange:bn?ho:Jt?.onExpandedChange,value:bn?Pa:Jt?.expanded}),{cancelEditing:Tn,clearEditError:So,draftValues:Cl,editErrors:wn,editingRowId:Cn,isEditDirty:Dn,isSavingEdit:hn,saveEdit:yn,setDraftValues:Dl,setEditingRowId:hl,startEditingRow:yl}=a$3({columns:k,editableRows:Vt,onError:nl}),Rl=f.useMemo(()=>({cancel:Tn,cancelOnEscape:Vt?.cancelOnEscape!==false,clearError:So,commit:o=>{yn(o);},commitOnEnter:Vt?.commitOnEnter!==false,errors:wn,isDirty:Dn,isPending:hn}),[Tn,So,Vt?.cancelOnEscape,Vt?.commitOnEnter,wn,Dn,hn,yn]),{viewportElement:Rn,viewportHeight:Sn}=a$4(co,Yt),vo=typeof Je=="object"?Je:void 0,Sl=f.useCallback(o=>{o!==tt.pageSize&&(tt.pageIndex!==0&&ya(0),nn(o),qt===void 0&&pn({pageIndex:0,pageSize:o}));},[tt.pageIndex,tt.pageSize,ya,nn,qt,pn]),vl=Je===true||vo!==void 0,ka=f.useCallback(()=>typeof window>"u"||typeof window.print!="function"?false:(window.print(),true),[]),Ma=f.useCallback(async()=>{let o=Ht.current;return !o||typeof document>"u"?false:document.fullscreenElement?typeof document.exitFullscreen!="function"?false:(await document.exitFullscreen(),true):typeof o.requestFullscreen!="function"?false:(await o.requestFullscreen(),true)},[]),[Po,Pl]=f.useState(false);f.useEffect(()=>{if(!Ta||typeof document>"u")return;let o=()=>{Pl(document.fullscreenElement===Ht.current);};return o(),document.addEventListener("fullscreenchange",o),()=>document.removeEventListener("fullscreenchange",o)},[Ta]);let xl=f.useCallback(()=>{Dt?.disabled||so.current?.click();},[Dt?.disabled]),El=f.useCallback(o=>{Me({source:"fileUpload"},()=>Dt?.onFilesSelected(o));},[Dt,Me]),kl=yi({Button:d,Checkbox:m,DataTableRowActions:D,Tooltip:s$1,TooltipContent:y,TooltipTrigger:C,cancelEditing:Tn,columns:k,editableRows:Vt,editErrors:wn,editingRowId:Cn,enableRowSelection:He,enableRowPinning:kt,hasTreeExpansion:!!Ae,isSavingEdit:hn,isEditDirty:Dn,labels:xe,lastSelectedRowIdRef:Pr,detailPanel:Jt,detailExpanded:fn,onDetailExpandedChange:Ro,rowSelectionSelectAllScope:vt,rowActions:bo,saveEdit:yn,startEditingRow:yl,tableRef:Za}),Ml=f.useMemo(()=>h(k),[k]),{effectivePageCount:Vl,footerTotalRowCount:Al,handleFooterPageIndexChange:Fl,handleFooterPageSizeChange:Il,isPageCountKnown:zl,renderedRows:xo,topPinnedRows:Ll,bottomPinnedRows:Nl,reorderColumn:Eo,rowsToRender:Ol,sentinelRef:ko,table:X,virtualPaddingBottom:_l,virtualPaddingTop:Hl,visibleLeafColumns:vn}=Ei({autoResetPageIndex:false,columnGroupPaths:Ml,columnResizeMode:Dr,dir:Ya,currentColumnFilters:Ra,currentColumnOrder:on,currentColumnPinning:Sa,currentRowPinning:rn,currentColumnSizing:va,currentExpanded:Pa,currentGrouping:ln,currentPagination:tt,currentRowSelection:xa,currentSorting:Ea,currentViewMode:Yt,defaultColumn:v,effectiveColumnVisibility:wo,enableColumnResizing:eo,enableRowPinning:kt,enableRowSelection:He,enableMultiRowSelection:St,enableSubRowSelection:Xe,getRowCanSelect:de,getRowCanExpand:ke,getSubRows:Ae,aggregationFns:Oe,groupedColumnMode:gt,globalFilterFn:De,globalFilterValue:il,hasNextPage:we,handleColumnFiltersChange:Co,handleColumnOrderChange:cl,handleColumnPinningChange:Do,handleRowPinningChange:ul,handleColumnVisibilityChange:pl,handleExpandedChange:ho,handleGroupingChange:gl,infiniteScroll:wa,keepPinnedRows:a,manualFiltering:be,manualGrouping:it,manualExpanding:$e,manualPagination:_e,manualSorting:Ye,onActionError:ra,onPageIndexChange:ya,onPageSizeChange:nn,pageCount:rt,pageIndex:ha,pageSize:qt,paginateExpandedRows:wt,filterFromLeafRows:Be,maxLeafRowFilterDepth:Lt,setCurrentRowSelection:yo,setCurrentSorting:ml,setLocalColumnSizing:bl,setLocalPagination:pn,shouldRenderInitialLoading:mn,tableColumns:kl,tableData:fl,tableGetRowId:Tl,tableRef:Za,totalRowCount:L,virtualization:Xa}),Mo=Oi({columns:k,columnSizing:va,editableRows:!!Vt,enableRowSelection:He,hasRowActions:ce.length>0,hasRowExpansion:!!(Ae||Jt),layoutMode:to,uiClassNames:r$1,visibleLeafColumns:vn}),{explicitlySizedColumnIds:Va,fillMinWidth:Bl,getColumnLayout:Gl}=Mo,$l=f.useMemo(()=>new Set(j(k).flatMap(({column:o,index:P})=>Object.prototype.hasOwnProperty.call(o,"cell")&&typeof o.cell=="function"?[r(o,P)]:[])),[k]),Ul=vn.length,jl=f.useMemo(()=>({Checkbox:m,Input:p,Skeleton:S,TableCell:B,TableRow:u}),[]),Kl=f.useMemo(()=>j(k).some(({column:o})=>o.meta?.cardTitle),[k]),Wl=f.useCallback((o,P)=>{Va.has(o)||Object.prototype.hasOwnProperty.call(X.getState().columnSizing,o)||flushSync(()=>{X.setColumnSizing(pe=>({...pe,[o]:P}));});},[Va,X]),Ql=f.useCallback(o=>{if(Va.has(o)){X.getColumn(o)?.resetSize();return}X.setColumnSizing(P=>{if(!Object.prototype.hasOwnProperty.call(P,o))return P;let pe={...P};return delete pe[o],pe});},[Va,X]),Pn=X.getFilteredRowModel().rows.map(o=>o.original),xn=Kt?.empty??mr,Vo=typeof xn=="function"?xn({rows:Pn,toolbarQueryValue:Bt}):xn,Ao=f.useMemo(()=>Kt?{...Kt,onRetry:Kt.onRetry?()=>Me({source:"retry"},Kt.onRetry):void 0}:void 0,[Me,Kt]),Fo=Ao?.error!=null?jsx(f.Suspense,{fallback:null,children:jsx(R,{labels:xe,overlay:Ao,rows:Pn,toolbarQueryValue:Bt})}):void 0,{columnVisibilityOptions:ql,effectiveToolbarActions:Io,handleClearColumnFilters:Yl,handleToolbarColumnFilterChange:Jl,handleToolbarColumnPinningChange:Xl,toolbarColumnFilters:Zl}=ar({columns:k,currentColumnFilters:Ra,currentColumnPinning:Sa,csvExport:ae,effectiveColumnVisibility:wo,enableColumnFilters:Ee,handleColumnFiltersChange:Co,handleColumnPinningChange:Do,labels:xe,table:X,toolbarActions:b,visibleData:wl}),es=f.useMemo(()=>[...Io,...Qn?[{key:"__print__",label:xe.print,placement:"trailing",onClick:()=>{ka();}}]:[],...Ta?[{key:"__fullscreen__",label:Po?xe.exitFullscreen:xe.enterFullscreen,placement:"trailing",onClick:()=>Ma()}]:[]].map(o=>({...o,onClick:P=>{Me({actionKey:o.key,source:"toolbarAction"},()=>o.onClick(P));}})),[Io,Ta,Qn,Po,ka,xe.enterFullscreen,xe.exitFullscreen,xe.print,Me,Ma]),ts=f.useMemo(()=>U.map(o=>({...o,onClick:P=>{Me({actionKey:o.key,source:"selectionAction"},()=>o.onClick(P));}})),[Me,U]),zo=f.useMemo(()=>({sorting:Ea,pagination:tt,rowSelection:xa,columnVisibility:To,columnFilters:Ra,expanded:Pa,grouping:ln,columnOrder:on,columnPinning:Sa,rowPinning:rn,columnSizing:va,density:la,viewMode:Yt,showHiddenRows:sn,globalFilter:Bt}),[Ra,on,Sa,rn,va,To,la,Pa,ln,tt,xa,sn,Ea,Yt,Bt]),sa=f.useCallback(()=>nd(zo),[zo]),Ft=f.useCallback(o=>{o.sorting!==void 0&&X.setSorting(o.sorting),o.pagination!==void 0&&X.setPagination(o.pagination),o.rowSelection!==void 0&&X.setRowSelection(o.rowSelection),o.columnVisibility!==void 0&&X.setColumnVisibility(o.columnVisibility),o.columnFilters!==void 0&&X.setColumnFilters(o.columnFilters),o.expanded!==void 0&&X.setExpanded(o.expanded),o.grouping!==void 0&&X.setGrouping(o.grouping),o.columnOrder!==void 0&&X.setColumnOrder(o.columnOrder),o.columnPinning!==void 0&&X.setColumnPinning(o.columnPinning),o.rowPinning!==void 0&&X.setRowPinning(o.rowPinning),o.columnSizing!==void 0&&X.setColumnSizing(o.columnSizing),o.density!==void 0&&dn(o.density),o.viewMode!==void 0&&un(o.viewMode),o.showHiddenRows!==void 0&&cn(o.showHiddenRows),o.globalFilter!==void 0&&gn(o.globalFilter);},[dn,cn,un,gn,X]),Xt=f.useCallback(()=>Ai(Pe??$),[$,Pe]),En=f.useCallback(o=>{o?.clearPersistence&&Xt(),Ft({columnVisibility:te?.columnVisibility??{},columnOrder:te?.columnOrder??[],columnPinning:te?.columnPinning??q(k),rowPinning:te?.rowPinning??{top:[],bottom:[]},columnSizing:te?.columnSizing??{}});},[Xt,k,te,Ft]),Lo=f.useCallback(o=>{o?.clearPersistence&&Xt(),Ft({sorting:te?.sorting??[],pagination:te?.pagination??{pageIndex:0,pageSize:he[0]??20},rowSelection:te?.rowSelection??{},columnVisibility:te?.columnVisibility??{},columnFilters:te?.columnFilters??[],expanded:te?.expanded??{},grouping:te?.grouping??[],columnOrder:te?.columnOrder??[],columnPinning:te?.columnPinning??q(k),rowPinning:te?.rowPinning??{top:[],bottom:[]},columnSizing:te?.columnSizing??{},density:te?.density??"comfortable",viewMode:te?.viewMode??"table",showHiddenRows:te?.showHiddenRows??false,globalFilter:te?.globalFilter??""});},[Xt,k,te,Ft,he]),No=f.useCallback(()=>jt(ie),[ie]),Aa=f.useCallback(o=>Ji(ie,o,sa()),[sa,ie]),kn=f.useCallback(o=>{let P=jt(ie).find(pe=>pe.id===o);return P?(Ft(P.state),ie?.onApply?.(P),true):false},[Ft,ie]),Fa=f.useCallback((o,P)=>Xi(ie,o,P),[ie]),Ia=f.useCallback(o=>Zi(ie,o),[ie]),Oo=f.useCallback(()=>er(ie),[ie]),as=f.useMemo(()=>jt(ie),[ie,uo]),ns=f.useCallback(o=>{let P=Aa(o);return P&&en(pe=>pe+1),P},[Aa]),os=f.useCallback((o,P)=>{let pe=Fa(o,P);return pe&&en(Vn=>Vn+1),pe},[Fa]),is=f.useCallback(o=>{let P=Ia(o);return P&&en(pe=>pe+1),P},[Ia]),_o=f.useCallback(o$1=>o({csvExport:o$1??(ae||true),labels:xe,table:X}),[ae,xe,X]),Mn=f.useCallback(async o=>{let{copyDataTableToClipboard:P}=await import('./data-table-clipboard-SFXQFZS3.js');return P({clipboard:o??(_?.copy===false?false:At?{..._?.copy===true?{}:_?.copy,scope:"cellSelection"}:_?.copy??true),cellSelection:At,table:X})},[_?.copy,At,X]),Ho=f.useCallback((o,P="top")=>{try{let pe=X.getRow(o,!0);return pe.getCanPin()?(pe.pin(P),!0):!1}catch{return false}},[X]),Bo=f.useCallback(o=>{try{let P=X.getRow(o,!0);return P.getCanPin()?(P.pin(!1),!0):!1}catch{return false}},[X]);return f.useImperativeHandle(lr,()=>({getTable:()=>Za.current,getState:sa,snapshot:sa,restore:Ft,resetColumnLayout:En,resetState:Lo,clearPersistedState:Xt,getSavedViews:No,createSavedView:Aa,applySavedView:kn,renameSavedView:Fa,deleteSavedView:Ia,clearSavedViews:Oo,pinRow:Ho,unpinRow:Bo,focus:()=>{Ht.current?.focus();},scrollToRow:o=>ir(Ht.current,"row",o),scrollToColumn:o=>ir(Ht.current,"column",o),exportCsv:_o,copyToClipboard:Mn,getCellSelection:()=>At,setCellSelection:Da,clearCellSelection:()=>Da(null),print:ka,toggleFullscreen:Ma}),[kn,Xt,Oo,Mn,At,Aa,Ia,_o,No,sa,Fa,En,Lo,Ft,Ho,ka,Da,Bo,Ma]),jsx(g,{children:jsxs("div",{ref:Ht,"data-dtp-slot":"data-table-root","data-density":la,"data-dtp-striped-rows":io||void 0,"aria-busy":qn||void 0,dir:Ya,tabIndex:-1,className:a$2("@container/data-table data-table-container-query flex w-full min-w-0 flex-col",Wt?"h-full min-h-0 flex-1":"grow",l),onDragEnter:Qt?.onDragEnter,onDragOver:Qt?.onDragOver,onDragLeave:Qt?.onDragLeave,onDrop:Qt?.onDrop,onKeyDown:o=>{if(an&&Mt&&(o.ctrlKey||o.metaKey)&&o.key.toLowerCase()==="z"&&!jn(o.target)){let P=o.shiftKey?Mt.redo:Mt.undo;P&&(o.preventDefault(),Me({source:o.shiftKey?"redo":"undo"},()=>P({cellSelection:At,table:X})));return}!_?.copy||!(o.ctrlKey||o.metaKey)||o.key.toLowerCase()!=="c"||jn(o.target)||(o.preventDefault(),Me({source:"clipboardCopy"},async()=>{await Mn(_.copy===true?void 0:At&&typeof _.copy=="object"&&!_.copy.scope?{..._.copy,scope:"cellSelection"}:_.copy);}));},onPaste:o=>{let P=_?.paste;if(!P||P.enabled===false||jn(o.target))return;let pe=o.clipboardData.getData("text/plain");pe&&((P.preventDefault??true)&&o.preventDefault(),Me({source:"clipboardPaste"},async()=>{let{parseDataTableClipboardText:Vn}=await import('./data-table-clipboard-SFXQFZS3.js');return P.onPaste({table:X,text:pe,values:Vn(pe)})}));},children:[vl?jsx(f.Suspense,{fallback:null,children:jsx(Xs,{config:vo,currentPageSize:tt.pageSize,enabled:true,onPageSizeChange:Sl,viewportElement:Rn,viewportHeight:Sn})}):null,Dt?jsx("input",{ref:so,className:"hidden",type:"file",accept:Dt.accept,multiple:Dt.multiple??true,disabled:Dt.disabled,onChange:o=>{let P=o.currentTarget.files;P?.length&&El(P),o.currentTarget.value="";}}):null,jsx("div",{"data-dtp-slot":"data-table-layout",className:a$2("flex w-full flex-col",Wt?"min-h-0 flex-1":"grow"),children:jsxs("div",{"data-dtp-slot":"data-table-main",className:a$2("flex w-full flex-col gap-4",Wt?"min-h-0 flex-1":"grow",Rr),children:[ao?jsx(Di,{allRows:Pn,columnFilters:Zl,columnVisibilityOptions:ql,compactToolbar:J,customToolbar:Ne,DataTableToolbar:W,density:la,description:Z,descriptionId:mo,effectiveToolbarActions:es,enableColumnPinning:Nt,enableGrouping:Ve,enableToolbarColumnChooser:tn.columnChooser===true,enableToolbarFilterChips:!!ct,enableToolbarResetLayout:tn.resetLayout===true,enableToolbarSavedViews:tn.savedViews===true&&!!ie,enableDensityToggle:Qa,enableViewToggle:gr&&!!qa,hiddenRowsLabel:Yn?.label,labels:xe,onClearColumnFilters:Yl,onColumnFilterChange:Jl,onColumnPinningChange:Xl,onDensityChange:dn,onShowHiddenRowsChange:cn,onToolbarQueryValueChange:gn,reorderColumn:Eo,onResetColumnLayout:En,onCreateSavedView:ns,onApplySavedView:kn,onRenameSavedView:os,onDeleteSavedView:is,onViewModeChange:un,openFileDialog:Dt?xl:void 0,selectedRowIds:sl,selectedRows:dl,selectionActions:ts,savedViews:as,showHiddenRows:sn,table:X,title:x,titleId:go,toolbarQueryPlaceholder:ll,toolbarQueryValue:Bt,toolbarVisibility:no,viewMode:Yt}):null,jsx("div",{"data-dtp-slot":"data-table-content",className:a$2(Wt?"flex min-h-0 flex-1 flex-col":""),children:Yt==="card"&&qa?jsx(n,{cardClassName:ur,cardGridClassName:cr,cardSizing:dr,cardRenderer:qa,containerWidth:ol,currentDetailExpanded:fn,currentRowSelection:xa,DataTableCardView:O,DataTableEmptyState:N,dragAndDrop:Qt,editableRows:Vt,editingRowId:Cn,emptyNode:Vo,stateOverlayNode:Fo,enableRowSelection:He,flexGrow:Wt,getRowClassName:ro,hasCardTitle:Kl,infiniteScroll:wa,localSearchValue:Bt,onRowClick:fo,renderedRows:xo,detailPanel:Jt,resolvedLabels:xe,resolvedLoadingRowCount:rl,rowActions:bo,ScrollArea:h$1,sentinelRef:ko,setCurrentDetailExpanded:Ro,setCurrentRowSelection:yo,setEditingRowId:hl,shouldRenderInitialLoading:mn,tableContainerClassName:oo,uiClassNames:r$1,virtualization:Xa}):jsx(i,{ariaDescribedBy:mo,ariaLabelledBy:go,bodyRowComponents:jl,columnLayouts:Mo.columnLayouts,currentDensity:la,columnGroupHeaderHeight:xt,currentDetailExpanded:fn,currentSorting:Ea,dir:Ya,DataTableEmptyState:N,dragAndDrop:Qt,draggedColumnIdRef:vr,draftValues:Cl,editingRowId:Cn,editingContext:Rl,emptyNode:Vo,stateOverlayNode:Fo,enableColumnReordering:Ze,enableColumnResizing:eo,explicitCustomCellColumnIds:$l,fillMinWidth:Bl,flexGrow:Wt,getColumnLayout:Gl,getRowClassName:ro,getRowLoadingState:fr,infiniteScroll:wa,layoutMode:to,localSearchValue:Bt,onRowClick:fo,primeColumnForResize:Wl,renderedRows:xo,detailPanel:Jt,topPinnedRows:Ll,bottomPinnedRows:Nl,reorderColumn:Eo,resetColumnSize:Ql,resolvedLabels:xe,rowsToRender:Ol,ScrollArea:h$1,ScrollBar:E,sentinelRef:ko,setDraftValues:Dl,shouldRenderInitialLoading:mn,stickyHeader:hr,stripedRows:io,summaryRows:sr,table:X,tableClassName:Sr,tableContainerClassName:oo,Table:A,TableBody:V,TableCell:B,TableFooter:q$1,TableHead:F,TableHeader:T,TableRow:u,tableScrollContainerRef:co,tableScrollElement:Rn,uiClassNames:r$1,viewportHeight:Sn,virtualization:Xa,gridMode:an,gridPageSize:lo?.pageSize??(typeof Ca=="object"?Ca.pageSize:void 0),cellSelectionEnabled:an&&(et||Ot!==void 0||_t!==void 0),cellSelection:At,onCellSelectionChange:Da,gridRowOffset:_e?tt.pageIndex*tt.pageSize:0,totalRowCount:L,virtualPaddingBottom:_l,virtualPaddingTop:Hl,visibleLeafColumnCount:Ul,visibleLeafColumns:vn})}),jsx(wi,{currentPagination:tt,DataTableFooter:K,effectivePageCount:Vl,footerTotalRowCount:Al,handleFooterPageIndexChange:Fl,handleFooterPageSizeChange:Il,labels:xe,pageCountKnown:zl,rowsPerPageOptions:he,showFooter:yr&&!wa?.enabled,children:G})]})})]})})}}function ed(e,t,n){let i;try{i=e();}catch(r){n?.({...t,error:r});return}Promise.resolve(i).catch(r=>{n?.({...t,error:r});});}function Le(e,t,n){let i=f.useCallback(r=>{t?.(r),n?.(l=>({...l,[e]:r}));},[e,t,n]);return t||n?i:void 0}function td(e,t){let n=f.useRef(new Set);f.useEffect(()=>{if(!(!e||!ad()))for(let i of Object.keys(t))e[i]===void 0||!t[i]||n.current.has(i)||(n.current.add(i),console.warn(`[data-table-pro] Both state.${i} and its legacy controlled prop were provided. The legacy prop takes precedence during the 4.x compatibility window.`));},[t,e]);}function ad(){return globalThis.process?.env?.NODE_ENV!=="production"}function nd(e){return {sorting:e.sorting.map(t=>({...t})),pagination:{...e.pagination},rowSelection:{...e.rowSelection},columnVisibility:{...e.columnVisibility},columnFilters:e.columnFilters.map(t=>({...t})),expanded:typeof e.expanded=="boolean"?e.expanded:{...e.expanded},grouping:[...e.grouping??[]],columnOrder:[...e.columnOrder],columnPinning:{left:e.columnPinning.left?[...e.columnPinning.left]:void 0,right:e.columnPinning.right?[...e.columnPinning.right]:void 0},rowPinning:{top:e.rowPinning.top?[...e.rowPinning.top]:void 0,bottom:e.rowPinning.bottom?[...e.rowPinning.bottom]:void 0},columnSizing:{...e.columnSizing},density:e.density,viewMode:e.viewMode,showHiddenRows:e.showHiddenRows,globalFilter:e.globalFilter}}function ir(e,t,n){if(!e)return false;let i=t==="row"?"data-row-id":"data-column-id",r=Array.from(e.querySelectorAll(`[${i}]`)).find(l=>l.getAttribute(i)===n);return r?(r.scrollIntoView?.({block:"nearest",inline:"nearest"}),true):false}function jn(e){return e instanceof HTMLElement?e.isContentEditable||e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement:false}export{Ti as a,wi as b,Di as c,yi as d,Re as e,Ei as f,Li as g,Oi as h,Kc as i,Zs as j};//# sourceMappingURL=chunk-4UITEBLL.js.map +//# sourceMappingURL=chunk-4UITEBLL.js.map \ No newline at end of file diff --git a/dist/chunk-4UITEBLL.js.map b/dist/chunk-4UITEBLL.js.map new file mode 100644 index 0000000..f07ccaa --- /dev/null +++ b/dist/chunk-4UITEBLL.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/core/data-table/data-table-base-card-panel.tsx","../src/core/data-table/data-table-card-panel.tsx","../src/core/data-table/data-table-footer-section.tsx","../src/core/data-table/data-table-toolbar-section.tsx","../src/core/data-table/data-table-labels.ts","../src/core/data-table/use-data-table-columns.tsx","../src/core/data-table/use-controllable-state.ts","../src/core/data-table/use-data-table-infinite-scroll.ts","../src/core/data-table/use-data-table-pagination-clamp.ts","../src/core/data-table/use-data-table-search-index.ts","../src/core/data-table/use-data-table-instance.ts","../src/core/data-table/use-data-table-column-prefs.ts","../src/core/data-table/use-data-table-container-width.ts","../src/core/data-table/use-data-table-state.ts","../src/core/data-table/use-column-layout.ts","../src/core/data-table/create-data-table-card-view.tsx","../src/core/data-table/create-data-table-empty-state.tsx","../src/core/data-table/create-data-table-pagination.tsx","../src/core/data-table/create-data-table-row-actions.tsx","../src/core/data-table/create-data-table-toolbar.tsx","../src/core/data-table/data-table-table-panel-router.tsx","../src/core/data-table/data-table-saved-views.ts","../src/core/data-table/use-data-table-toolbar-features.ts","../src/core/data-table/use-data-table-performance-diagnostics.ts","../src/core/data-table/create-data-table.tsx"],"names":["DataTableBaseCardPanel","cardClassName","cardGridClassName","cardSizing","cardRenderer","currentRowSelection","currentDetailExpanded","DataTableCardView","DataTableEmptyState","dragAndDrop","editableRows","editingRowId","emptyNode","enableRowSelection","flexGrow","getRowClassName","hasCardTitle","infiniteScroll","localSearchValue","onRowClick","renderedRows","detailPanel","resolvedLabels","resolvedLoadingRowCount","rowActions","ScrollArea","sentinelRef","setCurrentDetailExpanded","setCurrentRowSelection","setEditingRowId","shouldRenderInitialLoading","stateOverlayNode","tableContainerClassName","uiClassNames","shouldRenderCards","cardScrollContainerRef","fi","renderCardView","rows","options","jsx","jsxs","cn","LazyDataTableVirtualCardPanel","Ha","DataTableCardPanel","props","config","DataTableFooterSection","children","currentPagination","DataTableFooter","effectivePageCount","footerTotalRowCount","handleFooterPageIndexChange","handleFooterPageSizeChange","labels","pageCountKnown","rowsPerPageOptions","showFooter","DataTableToolbarSection","allRows","columnFilters","columnVisibilityOptions","compactToolbar","customToolbar","DataTableToolbar","description","descriptionId","effectiveToolbarActions","enableColumnPinning","enableGrouping","enableToolbarColumnChooser","enableToolbarFilterChips","enableToolbarResetLayout","enableToolbarSavedViews","enableDensityToggle","enableViewToggle","hiddenRowsLabel","onClearColumnFilters","onColumnFilterChange","onColumnPinningChange","onDensityChange","onShowHiddenRowsChange","onToolbarQueryValueChange","reorderColumn","onResetColumnLayout","onCreateSavedView","onApplySavedView","onRenameSavedView","onDeleteSavedView","onViewModeChange","openFileDialog","selectedRowIds","selectedRows","selectionActions","savedViews","showHiddenRows","table","title","titleId","toolbarQueryPlaceholder","toolbarQueryValue","toolbarVisibility","density","viewMode","columnId","visible","DATA_TABLE_DEFAULT_LABELS","count","label","pageIndex","pageCount","rowId","columnLabel","name","resolveDataTableLabels","useDataTableColumns","Button","Checkbox","DataTableRowActions","Tooltip","TooltipContent","TooltipTrigger","cancelEditing","columns","editErrors","enableRowPinning","hasTreeExpansion","isSavingEdit","isEditDirty","lastSelectedRowIdRef","detailExpanded","onDetailExpandedChange","rowSelectionSelectAllScope","saveEdit","startEditingRow","tableRef","selectRowRange","Ga","targetRowId","selected","tableInstance","row","isDataTableLoadingRow","startIndex","endIndex","from","to","current","next","item","defs","expansionColumnSize","UTILITY_COLUMN_SIZE","canExpandTree","canExpandDetail","isTreeExpanded","isDetailExpanded","IconChevronDown","toggleDataTableExpandedState","selectsFilteredRows","selectableRows","allSelected","someSelected","checked","event","column","decorateFilterableColumn","position","useControllableState","defaultValue","onChange","value","uncontrolledValue","setUncontrolledValue","It","currentValue","currentValueRef","setValue","updater","nextValue","useDataTableInfiniteScroll","enabled","hasMore","isLoadingMore","onLoadMore","onError","zt","isRequestInFlightRef","onLoadMoreEvent","onErrorEvent","error","target","observer","entries","result","useDataTablePaginationClamp","maxPageIndex","onPageIndexChange","setLocalPageIndex","Si","nextPageIndex","useDataTableSearchIndex","Pi","valuesByRow","filterValue","query","normalizeDataTableSearchText","original","valuesByColumn","text","useDataTableInstance","autoResetPageIndex","columnGroupPaths","columnResizeMode","dir","currentColumnFilters","currentColumnOrder","currentColumnPinning","currentRowPinning","currentColumnSizing","currentExpanded","currentGrouping","currentSorting","currentViewMode","defaultColumn","effectiveColumnVisibility","enableColumnResizing","enableMultiRowSelection","enableSubRowSelection","getRowCanSelect","getRowCanExpand","getSubRows","aggregationFns","groupedColumnMode","globalFilterFn","globalFilterValue","hasNextPage","handleColumnFiltersChange","handleColumnOrderChange","handleColumnPinningChange","handleRowPinningChange","handleColumnVisibilityChange","handleExpandedChange","handleGroupingChange","keepPinnedRows","manualFiltering","manualGrouping","manualExpanding","manualPagination","manualSorting","onActionError","onPageSizeChange","pageSize","paginateExpandedRows","filterFromLeafRows","maxLeafRowFilterDepth","setCurrentSorting","setLocalColumnSizing","setLocalPagination","tableColumns","tableData","tableGetRowId","totalRowCount","virtualization","cachedGlobalFilterFn","generatedColumnIds","ze","getDataTableLeafColumns","index","getColumnId","effectiveColumnOrder","columnIds","dataColumnIds","isUtilityColumnId","dataColumnIdSet","orderedDataColumnIds","unorderedDataColumnIds","effectiveColumnPinning","columnIdSet","dataLeft","dataRight","effectiveRowPinning","availableRowIds","visitRows","subRows","top","topIds","bottom","tableState","handlePaginationChange","handleColumnSizingChange","facetingNeeds","uniqueValues","minMaxValues","useReactTable","getCoreRowModel","getFilteredRowModel","getFacetedRowModel","getFacetedUniqueValues","getFacetedMinMaxValues","getGroupedRowModel","getSortedRowModel","getExpandedRowModel","getPaginationRowModel","visibleLeafColumns","sourceColumnId","targetColumnId","canReorderDataTableColumn","defaultOrder","nextOrder","moveColumnInOrder","topPinnedRows","bottomPinnedRows","virtualizationConfig","virtualRowsEnabled","fallbackRowCount","rowsToRender","rowIndex","usesManualRows","derivedTotalRowCount","effectiveTotalRowCount","isPageCountKnown","nextPageSize","STORAGE_PREFIX","DEFAULT_VERSION","ALL_SLICES","readDataTableColumnPrefs","input","resolvePersistenceConfig","storage","resolveStorage","storageKey","getStorageKey","parsed","targetVersion","candidate","isPersistencePayload","selectPersistenceSlices","validateDataTableColumnPrefs","clearDataTableColumnPrefs","usePersistDataTableColumnPrefs","key","persistence","prefs","version","debounceMs","selectedState","serialized","Ut","payload","operation","write","timeout","isRecord","slices","slice","visibility","validateBooleanRecord","sizing","validateSizingRecord","order","validateStringArray","left","right","rowPinning","validateRowPinning","isDataTableDensity","entry","BREAKPOINT_WIDTHS","DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS","first","second","useDataTableContainerWidth","containerRef","widthRef","na","width","setWidth","element","updateWidth","inlineSize","nextWidth","quantizeDataTableContainerWidth","getResizeObserverInlineSize","bucket","breakpointWidth","contentBoxSize","size","getInlineSize","useDataTableState","columnOrder","columnPinning","columnSizing","columnPrefsKey","columnVisibility","data","enableToolbarQueryFiltering","expanded","grouping","getRowId","hiddenRows","initialState","isLoading","loadingRowCount","onColumnFiltersChange","onColumnOrderChange","onRowPinningChange","onColumnSizingChange","onColumnVisibilityChange","onExpandedChange","onGroupingChange","onRowSelectionChange","onSortingChange","rowSelection","sorting","toolbarQueryDebounceMs","persistenceConfig","ee","persistedColumnPrefs","localPagination","currentColumnVisibility","setCurrentColumnVisibility","setCurrentColumnFilters","setCurrentExpanded","setCurrentColumnOrder","setCurrentColumnPinning","getInitialColumnPinning","setCurrentRowPinning","setCurrentColumnSizing","setCurrentViewMode","setCurrentGrouping","currentShowHiddenRows","setCurrentShowHiddenRows","currentDensity","setCurrentDensity","resolvedToolbarQueryValue","resolvedToolbarQueryPlaceholder","resolvedToolbarQueryDebounceMs","setLocalSearchValue","containerWidth","hasOnSearchValueChange","lastReportedSearchValueRef","onToolbarQueryValueChangeEvent","deferredSearchValue","handleViewModeChange","nextViewMode","handleShowHiddenRowsChange","nextShowHiddenRows","handleDensityChange","nextDensity","resetPageIndexForFilterChange","lastFilterStateRef","previous","filtersChanged","globalFilterChanged","responsiveColumnVisibility","isHiddenAtContainerWidth","visibleData","isRowVisible","loadingRows","createDataTableLoadingRows","getDataTableLoadingRowId","shouldResolveSelectedRows","rowById","currentRows","EMPTY_COLUMN_LAYOUT","useColumnLayout","hasRowActions","hasRowExpansion","layoutMode","explicitlySizedColumnIds","ut","ids","minimumColumnWidths","widths","configuredMinWidth","getConfiguredColumnMinWidth","pinnedColumns","leftOffset","getFixedSide","getColumnLayoutSize","rightOffset","fillColumnId","dataColumns","fixedWidthColumnIds","columnLayouts","layouts","isSelectionColumn","isExpansionColumn","isActionsColumn","isUtilityColumn","isSpacerColumn","isFlexibleFillColumn","columnMinWidth","shouldFixWidth","baseStyle","fixedSide","pinnedStyle","cellStyle","getPinnedColumnClassName","fillMinWidth","total","layout","getColumnLayout","createDataTableCardView","ui","Card","CardContent","CardHeader","Skeleton","onEditingRowIdChange","getRowDraggable","onRowDragStart","onRowDragEnd","resolvedCardSizing","resolvedCardGridClassName","getCardGridClassName","cardGridClasses","cardItemClasses","stateClassName","getCardItemClassName","_","originalRow","isSelected","isEditing","hasCardActions","showCardGradient","showCardOverlayControls","handleCardActivate","getCardRendererClassName","isDataTableInteractiveTarget","updateRowSelection","canSelect","canMultiSelect","nextSelection","createDataTableEmptyState","Empty","EmptyContent","EmptyDescription","EmptyHeader","EmptyMedia","EmptyTitle","IconInbox","createDataTablePagination","Pagination","PaginationContent","PaginationEllipsis","PaginationFirst","PaginationItem","PaginationLast","PaginationLink","PaginationNext","PaginationPrevious","Select","SelectContent","SelectGroup","SelectItem","SelectTrigger","SelectValue","DataTablePagination","pages","getVisiblePages","canGoPrevious","canGoNext","lastPageIndex","option","IconDatabase","currentPageIndex","currentPage","page","orderedPages","items","createDataTableRowActions","DropdownMenu","DropdownMenuContent","DropdownMenuGroup","DropdownMenuItem","DropdownMenuSeparator","DropdownMenuTrigger","onStartEditing","onCancelEditing","actions","action","canUseRowAction","stopRowClickPropagation","Ui","IconX","allowEdit","canEditRow","canPin","IconDots","IconEdit","Fragment","Icon","resolveRowActionLabel","LazyToolbarDataOperations","at","createDataTableToolbar","ButtonGroup","DropdownMenuCheckboxItem","DropdownMenuLabel","InputGroup","InputGroupAddon","InputGroupInput","toolbarActions","compactSearchInputRef","isCompactSearchVisible","setIsCompactSearchVisible","compactToolbarIconButtonClassName","primaryActions","trailingActions","showTitle","showSearch","showActions","showTrailingActions","showOptions","showViewToggle","showCustomToolbar","hasVisibleTitle","hasVisibleSearch","hasVisiblePrimaryActions","hasVisibleSelectionActions","hasVisibleOptions","hasToolbarOperationsMenu","activeColumnFilters","filter","hasColumnFilterValue","toolbarOperationsUi","renderToolbarDataOperations","placement","groupableColumns","groupedColumns","id","hasVisibleViewToggle","hasVisibleTrailingActions","hasVisibleCustomToolbar","hasVisibleCompactToolbar","selectedRowCountLabel","IconSearch","collapsesToIcon","button","context","disabled","IconAdjustmentsHorizontal","isGrouped","IconList","IconLayoutGrid","ToolbarColumnFilterControl","groupingIndex","moveGrouping","nextIndex","nextGrouping","groupingId","facetQuery","setFacetQuery","range","normalizeToolbarRangeValue","inputType","fromLabel","toLabel","parseRangeInputValue","isBoolean","isFaceted","booleanOptions","visibleOptions","selectedValue","selectedValues","selectedLabel","nextValues","LazyDataTableVirtualTablePanel","Ua","DataTableTablePanelRouter","DataTableTablePanel","DEFAULT_SLICES","fallbackId","readDataTableSavedViews","view","validateSavedView","createDataTableSavedView","state","normalizedName","now","createSavedViewId","selectSavedViewSlices","views","writeViews","cloneSavedView","renameDataTableSavedView","renamed","deleteDataTableSavedView","clearDataTableSavedViews","snapshots","snapshot","cloneStateSlice","validateState","validateSorting","pagination","validatePagination","filters","validateFilters","pinning","validatePinning","useDataTableToolbarFeatures","enableColumnFilters","csvExport","yt","header","accessorKey","getAccessorKey","startCase","pinned","toolbarColumnFilters","configuredFacetOptions","facetedMinMax","rawOptions","normalizeColumnFilterOptions","handleToolbarColumnFilterChange","hasFilterValue","handleClearColumnFilters","handleToolbarColumnPinningChange","side","handleCsvExport","exportDataTableCsv","IconDownload","useDataTablePerformanceDiagnostics","fa","warned","isDevelopmentEnvironment","last","haveSameItems","warn","message","DataTableAutoPageSize","createDataTable","createDataTableWithPanels","rootClassName","Input","ScrollBar","Table","TableBody","TableCell","TableFooter","TableHead","TableHeader","TableRow","TooltipProvider","DataTableStateOverlay","createDataTableStateOverlay","autoPageSize","renderExpandedRow","enableColumnReordering","columnGroupHeaderHeight","clipboard","enableCellSelection","cellSelection","defaultCellSelection","onCellSelectionChange","gridCommands","toolbarDataOperations","unifiedState","onStateChange","apiRef","summaryRows","enablePrint","enableFullscreen","emptyState","stateOverlay","getRowLoadingState","stickyHeader","showToolbar","className","tableClassName","stripedRows","fileUpload","accessibility","interactiveGrid","fileInputRef","tableScrollContainerRef","draggedColumnIdRef","toolbarSavedViewsVersion","setToolbarSavedViewsVersion","generatedTitleId","generatedDescriptionId","validateDataTableColumnIds","toolbarOperations","gridMode","currentCellSelection","setCurrentCellSelection","resolvedSorting","resolvedGrouping","resolvedPageIndex","resolvedPageSize","resolvedRowSelection","resolvedColumnVisibility","resolvedColumnFilters","resolvedExpanded","resolvedColumnOrder","resolvedColumnPinning","resolvedRowPinning","resolvedColumnSizing","resolvedDensity","resolvedViewMode","resolvedShowHiddenRows","showTableHeading","useDataTableStateConflictWarnings","handleToolbarQueryValueChange","useDataTableStateSliceChange","handleSortingPropChange","handleGroupingPropChange","handleRowSelectionPropChange","handleColumnVisibilityPropChange","handleColumnFiltersPropChange","handleExpandedPropChange","handleColumnOrderPropChange","handleColumnPinningPropChange","handleRowPinningPropChange","handleColumnSizingPropChange","handleDensityPropChange","handleViewModePropChange","handleShowHiddenRowsPropChange","handlePageIndexPropChange","handlePageSizePropChange","runAction","runDataTableAction","guardedRowActions","guardedOnRowClick","handleEditError","usesLegacyDetailPanelState","resolvedDetailPanel","clearEditError","draftValues","setDraftValues","useRowEditing","rowEditingContext","tableScrollElement","viewportHeight","useDataTableScrollViewport","autoPageSizeConfig","handleAutoPageSizeChange","autoPageSizeEnabled","print","toggleFullscreen","isFullscreen","setIsFullscreen","update","handleSelectedFiles","files","getDataTableColumnGroupPaths","virtualPaddingBottom","virtualPaddingTop","columnLayout","explicitCustomCellColumnIds","visibleLeafColumnCount","bodyRowComponents","primeColumnForResize","currentSize","flushSync","resetColumnSize","filteredData","configuredEmptyState","guardedStateOverlay","guardedToolbarActions","guardedSelectionActions","currentDataTableState","getCurrentState","cloneDataTableState","restoreState","nextState","clearPersistedState","resetColumnLayout","resetState","getSavedViews","createSavedView","applySavedView","renameSavedView","deleteSavedView","clearSavedViews","toolbarSavedViews","handleToolbarCreateSavedView","handleToolbarRenameSavedView","handleToolbarDeleteSavedView","deleted","exportCsvFromApi","copyToClipboard","copyDataTableToClipboard","pinRow","unpinRow","scrollDataTableElementIntoView","isDataTableEditableClipboardTarget","command","paste","parseDataTableClipboardText","onLegacyChange","handleChange","legacySlices","warnedSlicesRef","container","kind","attribute"],"mappings":"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","file":"chunk-4UITEBLL.js","sourcesContent":["import * as React from \"react\";\nimport type { Row } from \"@tanstack/react-table\";\nimport { cn } from \"../../lib/utils\";\nimport type { DataTableCardPanelProps } from \"./data-table-card-panel-types\";\n\nexport function DataTableBaseCardPanel({\n cardClassName,\n cardGridClassName,\n cardSizing,\n cardRenderer,\n currentRowSelection,\n currentDetailExpanded,\n DataTableCardView,\n DataTableEmptyState,\n dragAndDrop,\n editableRows,\n editingRowId,\n emptyNode,\n enableRowSelection,\n flexGrow,\n getRowClassName,\n hasCardTitle,\n infiniteScroll,\n localSearchValue,\n onRowClick,\n renderedRows,\n detailPanel,\n resolvedLabels,\n resolvedLoadingRowCount,\n rowActions = [],\n ScrollArea,\n sentinelRef,\n setCurrentDetailExpanded,\n setCurrentRowSelection,\n setEditingRowId,\n shouldRenderInitialLoading,\n stateOverlayNode,\n tableContainerClassName,\n uiClassNames,\n}: DataTableCardPanelProps) {\n const shouldRenderCards =\n shouldRenderInitialLoading || renderedRows.length > 0;\n const cardScrollContainerRef = React.useRef(null);\n\n const renderCardView = (\n rows: Array>,\n options?: {\n isLoading?: boolean;\n loadingRowCount?: number;\n },\n ) => (\n \n );\n\n return (\n \n \n \n {shouldRenderCards ? (\n shouldRenderInitialLoading ? (\n renderCardView([], {\n isLoading: true,\n loadingRowCount: resolvedLoadingRowCount,\n })\n ) : (\n renderCardView(renderedRows)\n )\n ) : (\n
    \n {emptyNode ?? (\n \n )}\n
    \n )}\n\n {infiniteScroll?.enabled && !shouldRenderInitialLoading ? (\n
    \n
    \n
    \n ) : null}\n
    \n \n {stateOverlayNode}\n
    \n );\n}\n","import * as React from \"react\";\nimport { DataTableBaseCardPanel } from \"./data-table-base-card-panel\";\nimport type { DataTableCardPanelProps } from \"./data-table-card-panel-types\";\n\nconst LazyDataTableVirtualCardPanel = React.lazy(async () => {\n const module = await import(\"./data-table-virtual-card-panel\");\n return { default: module.DataTableVirtualCardPanel };\n}) as unknown as typeof DataTableBaseCardPanel;\n\nexport function DataTableCardPanel(\n props: DataTableCardPanelProps,\n) {\n const config =\n typeof props.virtualization === \"object\"\n ? props.virtualization.card\n : undefined;\n\n if (config?.enabled !== true) {\n return ;\n }\n\n return (\n \n }\n >\n \n \n );\n}\n\nexport type { DataTableCardPanelProps };\n","import * as React from \"react\";\nimport type { PaginationState } from \"@tanstack/react-table\";\nimport type { DataTableLabels } from \"../types\";\n\ntype DataTableFooterSectionProps = {\n children?: React.ReactNode;\n currentPagination: PaginationState;\n DataTableFooter: React.ElementType;\n effectivePageCount: number;\n footerTotalRowCount: number | undefined;\n handleFooterPageIndexChange: (pageIndex: number) => void;\n handleFooterPageSizeChange: (pageSize: number) => void;\n labels: DataTableLabels;\n pageCountKnown?: boolean;\n rowsPerPageOptions: Array;\n showFooter: boolean;\n};\n\nexport function DataTableFooterSection({\n children,\n currentPagination,\n DataTableFooter,\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n labels,\n pageCountKnown = true,\n rowsPerPageOptions,\n showFooter,\n}: DataTableFooterSectionProps) {\n if (!showFooter && !children) {\n return null;\n }\n\n return (\n
    \n {showFooter ? (\n \n ) : null}\n {children}\n
    \n );\n}\n","import * as React from \"react\";\nimport type { Table as TanStackTable } from \"@tanstack/react-table\";\nimport type {\n DataTableLabels,\n DataTableProps,\n DataTableSavedView,\n} from \"../types\";\n\ntype DataTableToolbarSectionProps = {\n allRows: Array;\n columnFilters: Array;\n columnVisibilityOptions: Array;\n compactToolbar: React.ReactNode;\n customToolbar: React.ReactNode;\n DataTableToolbar: React.ElementType;\n description: string | undefined;\n descriptionId: string | undefined;\n effectiveToolbarActions: Array;\n enableColumnPinning: boolean;\n enableGrouping: boolean;\n enableToolbarColumnChooser: boolean;\n enableToolbarFilterChips: boolean;\n enableToolbarResetLayout: boolean;\n enableToolbarSavedViews: boolean;\n enableDensityToggle: boolean;\n enableViewToggle: boolean;\n hiddenRowsLabel: string | undefined;\n labels: DataTableLabels;\n onClearColumnFilters: () => void;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n onColumnPinningChange: (columnId: string, side: \"left\" | \"right\" | false) => void;\n onDensityChange: (density: \"compact\" | \"comfortable\" | \"spacious\") => void;\n onShowHiddenRowsChange: (showHiddenRows: boolean) => void;\n onToolbarQueryValueChange: (value: string) => void;\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n onResetColumnLayout: () => void;\n onCreateSavedView: (name: string) => DataTableSavedView | undefined;\n onApplySavedView: (id: string) => boolean;\n onRenameSavedView: (id: string, name: string) => DataTableSavedView | undefined;\n onDeleteSavedView: (id: string) => boolean;\n onViewModeChange: (viewMode: \"table\" | \"card\") => void;\n openFileDialog: (() => void) | undefined;\n selectedRowIds: Array;\n selectedRows: Array;\n selectionActions: DataTableProps[\"selectionActions\"];\n savedViews: Array;\n showHiddenRows: boolean;\n table: TanStackTable;\n title: string | undefined;\n titleId: string | undefined;\n toolbarQueryPlaceholder: string;\n toolbarQueryValue: string;\n toolbarVisibility: DataTableProps[\"toolbarVisibility\"];\n density: \"compact\" | \"comfortable\" | \"spacious\";\n viewMode: \"table\" | \"card\";\n};\n\nexport function DataTableToolbarSection({\n allRows,\n columnFilters,\n columnVisibilityOptions,\n compactToolbar,\n customToolbar,\n DataTableToolbar,\n description,\n descriptionId,\n effectiveToolbarActions,\n enableColumnPinning,\n enableGrouping,\n enableToolbarColumnChooser,\n enableToolbarFilterChips,\n enableToolbarResetLayout,\n enableToolbarSavedViews,\n enableDensityToggle,\n enableViewToggle,\n hiddenRowsLabel,\n labels,\n onClearColumnFilters,\n onColumnFilterChange,\n onColumnPinningChange,\n onDensityChange,\n onShowHiddenRowsChange,\n onToolbarQueryValueChange,\n reorderColumn,\n onResetColumnLayout,\n onCreateSavedView,\n onApplySavedView,\n onRenameSavedView,\n onDeleteSavedView,\n onViewModeChange,\n openFileDialog,\n selectedRowIds,\n selectedRows,\n selectionActions,\n savedViews,\n showHiddenRows,\n table,\n title,\n titleId,\n toolbarQueryPlaceholder,\n toolbarQueryValue,\n toolbarVisibility,\n density,\n viewMode,\n}: DataTableToolbarSectionProps) {\n return (\n
    \n {\n table.getColumn(columnId)?.toggleVisibility(visible);\n }}\n enableColumnPinning={enableColumnPinning}\n enableGrouping={enableGrouping}\n enableToolbarColumnChooser={enableToolbarColumnChooser}\n enableToolbarFilterChips={enableToolbarFilterChips}\n enableToolbarResetLayout={enableToolbarResetLayout}\n enableToolbarSavedViews={enableToolbarSavedViews}\n onColumnPinningChange={onColumnPinningChange}\n columnFilters={columnFilters}\n onColumnFilterChange={onColumnFilterChange}\n onClearColumnFilters={onClearColumnFilters}\n onResetColumnLayout={onResetColumnLayout}\n onCreateSavedView={onCreateSavedView}\n onApplySavedView={onApplySavedView}\n onRenameSavedView={onRenameSavedView}\n onDeleteSavedView={onDeleteSavedView}\n density={density}\n onDensityChange={onDensityChange}\n enableDensityToggle={enableDensityToggle}\n labels={labels}\n toolbarVisibility={toolbarVisibility}\n openFileDialog={openFileDialog}\n savedViews={savedViews}\n table={table}\n />\n
    \n );\n}\n","import type { DataTableLabels } from \"../types\";\n\ntype ResolvedDataTableLabels = Required;\n\nexport const DATA_TABLE_DEFAULT_LABELS: ResolvedDataTableLabels = {\n searchPlaceholder: \"Search rows...\",\n searchTable: \"Search table\",\n clearSearch: \"Clear search\",\n noRowsTitle: \"No rows yet\",\n noRowsDescription: \"Create a record or refresh this view once data exists.\",\n noMatchingRowsTitle: \"No matching rows\",\n noMatchingRowsDescription: \"Try a different search term or clear filters.\",\n tableOptions: \"Show table options\",\n columns: \"Columns\",\n filters: \"Filters\",\n clearFilters: \"Clear filters\",\n filterFrom: \"From\",\n filterTo: \"To\",\n filterTrue: \"Yes\",\n filterFalse: \"No\",\n selectedRows: (count) =>\n `${count} record${count === 1 ? \"\" : \"s\"} selected`,\n showHiddenRows: (label) => `Show ${label}`,\n recordsPerPage: \"Records per page\",\n totalRecords: (count) => `Total records: ${count}`,\n pageStatus: (pageIndex, pageCount) => `Page ${pageIndex + 1} of ${pageCount}`,\n pageStatusUnknown: (pageIndex) => `Page ${pageIndex + 1}`,\n pagination: \"Pagination\",\n morePages: \"More pages\",\n firstPage: \"First page\",\n previousPage: \"Previous page\",\n nextPage: \"Next page\",\n lastPage: \"Last page\",\n selectAllVisibleRows: \"Select all visible rows\",\n selectAllFilteredRows: \"Select all filtered rows\",\n selectRow: \"Select row\",\n selectCardRow: (rowId) => `Select row ${rowId}`,\n switchToTableView: \"Switch to table view\",\n switchToCardView: \"Switch to card view\",\n tableView: \"Table view\",\n cardView: \"Card view\",\n allFilterOptions: \"All\",\n actions: \"Actions\",\n rowActions: \"Row actions\",\n editRow: \"Edit row\",\n saveEdit: \"Save\",\n cancelEdit: \"Cancel editing\",\n expandRow: \"Expand row\",\n collapseRow: \"Collapse row\",\n expandRowDetails: \"Expand row details\",\n collapseRowDetails: \"Collapse row details\",\n exportCsv: \"Export CSV\",\n print: \"Print table\",\n enterFullscreen: \"Enter fullscreen\",\n exitFullscreen: \"Exit fullscreen\",\n errorTitle: \"Unable to load this table\",\n errorDescription: \"Try again or check your connection.\",\n retry: \"Retry\",\n density: \"Density\",\n compactDensity: \"Compact\",\n comfortableDensity: \"Comfortable\",\n spaciousDensity: \"Spacious\",\n pinLeft: \"Pin left\",\n pinRight: \"Pin right\",\n unpin: \"Unpin\",\n pinRowToTop: \"Pin row to top\",\n pinRowToBottom: \"Pin row to bottom\",\n unpinRow: \"Unpin row\",\n resizeColumn: (columnLabel) => `Resize ${columnLabel}`,\n grouping: \"Grouping\",\n groupBy: (columnLabel) => `Group by ${columnLabel}`,\n ungroup: (columnLabel) => `Ungroup ${columnLabel}`,\n removeGrouping: (columnLabel) => `Remove ${columnLabel} grouping`,\n moveGroupingEarlier: (columnLabel) => `Move ${columnLabel} grouping earlier`,\n moveGroupingLater: (columnLabel) => `Move ${columnLabel} grouping later`,\n facetSearch: (columnLabel) => `Search ${columnLabel} options`,\n searchColumns: \"Search columns\",\n showAllColumns: \"Show all columns\",\n hideAllColumns: \"Hide all columns\",\n moveColumnEarlier: (columnLabel) => `Move ${columnLabel} earlier`,\n moveColumnLater: (columnLabel) => `Move ${columnLabel} later`,\n resetColumnLayout: \"Reset column layout\",\n savedViews: \"Saved views\",\n createSavedView: \"Create saved view\",\n savedViewName: \"View name\",\n applySavedView: (name) => `Apply saved view ${name}`,\n renameSavedView: (name) => `Rename saved view ${name}`,\n deleteSavedView: (name) => `Delete saved view ${name}`,\n saveSavedView: \"Save view\",\n};\n\nexport function resolveDataTableLabels(\n labels?: Partial,\n): ResolvedDataTableLabels {\n return {\n ...DATA_TABLE_DEFAULT_LABELS,\n ...labels,\n } as ResolvedDataTableLabels;\n}\n","import * as React from \"react\";\nimport type {\n ColumnDef,\n ExpandedState,\n OnChangeFn,\n RowPinningPosition,\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport { IconChevronDown } from \"../icons\";\nimport type {\n DataTableEditableRowsConfig,\n DataTableDetailPanel,\n DataTableLabels,\n DataTableProps,\n DataTableRowAction,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport {\n UTILITY_COLUMN_SIZE,\n decorateFilterableColumn,\n isDataTableLoadingRow,\n toggleDataTableExpandedState,\n} from \"./data-table-utils\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\ntype DataTableRowActionsComponentProps = {\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n labels: DataTableLabels;\n onCancelEditing: () => void;\n onStartEditing: () => void;\n row: TData;\n rowActions: Array>;\n rowPinning?: {\n canPin: boolean;\n position: RowPinningPosition;\n pin: (position: RowPinningPosition) => void;\n };\n};\n\nexport function useDataTableColumns({\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n editingRowId,\n editErrors,\n enableRowSelection,\n enableRowPinning,\n hasTreeExpansion,\n isSavingEdit,\n isEditDirty,\n labels,\n lastSelectedRowIdRef,\n detailPanel,\n detailExpanded,\n onDetailExpandedChange,\n rowSelectionSelectAllScope,\n rowActions,\n saveEdit,\n startEditingRow,\n tableRef,\n}: {\n Button: DataTableUiKit[\"Button\"];\n Checkbox: DataTableUiKit[\"Checkbox\"];\n DataTableRowActions: React.ComponentType<\n DataTableRowActionsComponentProps\n >;\n Tooltip: DataTableUiKit[\"Tooltip\"];\n TooltipContent: DataTableUiKit[\"TooltipContent\"];\n TooltipTrigger: DataTableUiKit[\"TooltipTrigger\"];\n cancelEditing: () => void;\n columns: DataTableProps[\"columns\"];\n editableRows: DataTableProps[\"editableRows\"];\n editingRowId: string | null;\n editErrors: Record;\n enableRowSelection: boolean;\n enableRowPinning: DataTableProps[\"enableRowPinning\"];\n hasTreeExpansion: boolean;\n isSavingEdit: boolean;\n isEditDirty: boolean;\n labels: DataTableLabels;\n lastSelectedRowIdRef: React.MutableRefObject;\n detailPanel: DataTableDetailPanel | undefined;\n detailExpanded: ExpandedState;\n onDetailExpandedChange: OnChangeFn;\n rowSelectionSelectAllScope: NonNullable<\n DataTableProps[\"rowSelectionSelectAllScope\"]\n >;\n rowActions: Array>;\n saveEdit: (row: TData) => Promise;\n startEditingRow: (row: TData, rowId: string) => void;\n tableRef: React.RefObject | null>;\n}) {\n const selectRowRange = React.useCallback(\n (targetRowId: string, selected: boolean) => {\n const tableInstance = tableRef.current;\n if (!tableInstance || !lastSelectedRowIdRef.current) {\n return;\n }\n\n const rows = tableInstance\n .getRowModel()\n .rows.filter((row) => !isDataTableLoadingRow(row.original));\n const startIndex = rows.findIndex(\n (row) => row.id === lastSelectedRowIdRef.current,\n );\n const endIndex = rows.findIndex((row) => row.id === targetRowId);\n\n if (startIndex < 0 || endIndex < 0) {\n return;\n }\n\n const from = Math.min(startIndex, endIndex);\n const to = Math.max(startIndex, endIndex);\n tableInstance.setRowSelection((current) => {\n const next = { ...current };\n for (const row of rows\n .slice(from, to + 1)\n .filter(\n (item) => item.getCanSelect() && item.getCanMultiSelect(),\n )) {\n if (selected) {\n next[row.id] = true;\n } else {\n delete next[row.id];\n }\n }\n return next;\n });\n },\n [lastSelectedRowIdRef, tableRef],\n );\n\n return React.useMemo>>(() => {\n const defs: Array> = [];\n\n if (hasTreeExpansion || detailPanel) {\n const expansionColumnSize =\n hasTreeExpansion && detailPanel ? 80 : UTILITY_COLUMN_SIZE;\n defs.push({\n id: \"__expand__\",\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n size: expansionColumnSize,\n minSize: expansionColumnSize,\n maxSize: expansionColumnSize,\n header: () => {labels.expandRow},\n cell: ({ row, table }) => {\n const canExpandTree = hasTreeExpansion && row.getCanExpand();\n const canExpandDetail = Boolean(\n detailPanel && (detailPanel.getRowCanExpand?.(row.original) ?? true),\n );\n if (!canExpandTree && !canExpandDetail) {\n return null;\n }\n\n const isTreeExpanded = row.getIsExpanded();\n const isDetailExpanded =\n detailExpanded === true || Boolean(detailExpanded[row.id]);\n return (\n
    \n {canExpandTree ? (\n row.toggleExpanded()}\n >\n \n \n ) : null}\n {canExpandDetail ? (\n {\n onDetailExpandedChange((current) =>\n toggleDataTableExpandedState(\n current,\n row.id,\n table.getCoreRowModel().flatRows.map((item) => item.id),\n ),\n );\n }}\n >\n \n \n ) : null}\n
    \n );\n },\n });\n }\n\n if (enableRowSelection) {\n defs.push({\n id: \"__select__\",\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n size: UTILITY_COLUMN_SIZE,\n minSize: UTILITY_COLUMN_SIZE,\n maxSize: UTILITY_COLUMN_SIZE,\n header: ({ table }) => {\n const selectsFilteredRows = rowSelectionSelectAllScope === \"filtered\";\n const selectableRows = (selectsFilteredRows\n ? table.getFilteredRowModel().flatRows\n : table.getRowModel().flatRows\n ).filter((row) => row.getCanSelect() && row.getCanMultiSelect());\n const allSelected =\n selectableRows.length > 0 &&\n selectableRows.every((row) => row.getIsSelected());\n const someSelected = selectableRows.some((row) => row.getIsSelected());\n const label = selectsFilteredRows\n ? (labels.selectAllFilteredRows ??\n DATA_TABLE_DEFAULT_LABELS.selectAllFilteredRows)\n : (labels.selectAllVisibleRows ??\n DATA_TABLE_DEFAULT_LABELS.selectAllVisibleRows);\n\n if (selectableRows.length === 0) {\n return {label};\n }\n\n return (\n
    \n {\n table.setRowSelection((current) => {\n const next = { ...current };\n for (const row of selectableRows) {\n if (checked === true) {\n next[row.id] = true;\n } else {\n delete next[row.id];\n }\n }\n return next;\n });\n }}\n aria-label={label}\n />\n
    \n );\n },\n cell: ({ row }) => (\n
    \n ) => {\n if (\n !event.shiftKey ||\n !lastSelectedRowIdRef.current ||\n !row.getCanMultiSelect()\n ) {\n lastSelectedRowIdRef.current = row.id;\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n selectRowRange(row.id, !row.getIsSelected());\n lastSelectedRowIdRef.current = row.id;\n }}\n onCheckedChange={(checked: boolean | \"indeterminate\") => {\n lastSelectedRowIdRef.current = row.id;\n row.toggleSelected(checked === true);\n }}\n aria-label={\n labels.selectRow ?? DATA_TABLE_DEFAULT_LABELS.selectRow\n }\n />\n
    \n ),\n });\n }\n\n defs.push(...columns.map((column) => decorateFilterableColumn(column)));\n\n if (rowActions.length || editableRows || enableRowPinning) {\n defs.push({\n id: \"__actions__\",\n enableSorting: false,\n enableResizing: false,\n enableHiding: false,\n size: UTILITY_COLUMN_SIZE,\n minSize: UTILITY_COLUMN_SIZE,\n maxSize: UTILITY_COLUMN_SIZE,\n header: () => {labels.actions},\n cell: ({ row }) => {\n const rowId = row.id;\n const isEditing = editingRowId === rowId;\n\n if (isEditing) {\n return (\n
    \n {editErrors._row ? (\n \n {editErrors._row}\n \n ) : null}\n {\n void saveEdit(row.original);\n }}\n >\n {labels.saveEdit}\n \n \n \n \n \n {labels.cancelEdit}\n \n \n {labels.cancelEdit}\n \n
    \n );\n }\n\n return (\n
    \n {\n startEditingRow(row.original, row.id);\n }}\n onCancelEditing={() => {}}\n labels={labels}\n rowPinning={\n enableRowPinning\n ? {\n canPin: row.getCanPin(),\n position: row.getIsPinned(),\n pin: (position) => row.pin(position),\n }\n : undefined\n }\n />\n
    \n );\n },\n });\n }\n\n return defs;\n }, [\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n detailExpanded,\n detailPanel,\n editErrors,\n editingRowId,\n enableRowSelection,\n enableRowPinning,\n hasTreeExpansion,\n isSavingEdit,\n isEditDirty,\n labels,\n lastSelectedRowIdRef,\n onDetailExpandedChange,\n rowSelectionSelectAllScope,\n rowActions,\n saveEdit,\n selectRowRange,\n startEditingRow,\n ]);\n}\n","import * as React from \"react\";\nimport type { Updater } from \"@tanstack/react-table\";\n\nexport function useControllableState({\n defaultValue,\n onChange,\n value,\n}: {\n defaultValue: T | (() => T);\n onChange?: (value: T) => void;\n value: T | undefined;\n}) {\n const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue);\n const currentValue = value ?? uncontrolledValue;\n const currentValueRef = React.useRef(currentValue);\n\n React.useEffect(() => {\n currentValueRef.current = currentValue;\n }, [currentValue]);\n\n const setValue = React.useCallback(\n (updater: Updater) => {\n const nextValue =\n typeof updater === \"function\"\n ? (updater as (current: T) => T)(currentValueRef.current)\n : updater;\n currentValueRef.current = nextValue;\n\n onChange?.(nextValue);\n\n if (value === undefined) {\n setUncontrolledValue(nextValue);\n }\n },\n [onChange, value],\n );\n\n return [currentValue, setValue] as const;\n}\n","import * as React from \"react\";\n\nexport function useDataTableInfiniteScroll({\n enabled,\n hasMore,\n isLoadingMore,\n onLoadMore,\n onError,\n}: {\n enabled: boolean;\n hasMore: boolean;\n isLoadingMore?: boolean;\n onLoadMore: () => void | Promise;\n onError?: (error: unknown) => void;\n}) {\n const sentinelRef = React.useRef(null);\n const isRequestInFlightRef = React.useRef(false);\n const onLoadMoreEvent = React.useEffectEvent(onLoadMore);\n const onErrorEvent = React.useEffectEvent((error: unknown) => {\n onError?.(error);\n });\n\n React.useEffect(() => {\n if (!enabled || !hasMore || isLoadingMore) {\n return;\n }\n\n const target = sentinelRef.current;\n if (!target) {\n return;\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n const entry = entries[0];\n if (entry.isIntersecting && !isRequestInFlightRef.current) {\n isRequestInFlightRef.current = true;\n\n let result: void | Promise;\n try {\n result = onLoadMoreEvent();\n } catch (error) {\n isRequestInFlightRef.current = false;\n onErrorEvent(error);\n return;\n }\n\n void Promise.resolve(result)\n .catch((error: unknown) => {\n onErrorEvent(error);\n })\n .finally(() => {\n isRequestInFlightRef.current = false;\n });\n }\n },\n {\n rootMargin: \"200px 0px 200px 0px\",\n },\n );\n\n observer.observe(target);\n\n return () => {\n observer.disconnect();\n };\n }, [enabled, hasMore, isLoadingMore]);\n\n return sentinelRef;\n}\n","import * as React from \"react\";\n\nexport function useDataTablePaginationClamp({\n enabled,\n maxPageIndex,\n onPageIndexChange,\n pageIndex,\n setLocalPageIndex,\n}: {\n enabled: boolean;\n maxPageIndex: number;\n onPageIndexChange?: (pageIndex: number) => void;\n pageIndex: number;\n setLocalPageIndex: (pageIndex: number) => void;\n}) {\n React.useEffect(() => {\n if (!enabled) {\n return;\n }\n\n if (pageIndex >= 0 && pageIndex <= maxPageIndex) {\n return;\n }\n\n const nextPageIndex = Math.min(Math.max(pageIndex, 0), maxPageIndex);\n setLocalPageIndex(nextPageIndex);\n onPageIndexChange?.(nextPageIndex);\n }, [enabled, maxPageIndex, onPageIndexChange, pageIndex, setLocalPageIndex]);\n}\n","import * as React from \"react\";\nimport type { FilterFn, Row } from \"@tanstack/react-table\";\nimport { normalizeDataTableSearchText } from \"./data-table-utils\";\n\n/**\n * Caches each searchable cell against the application-owned row object and\n * stable column id. WeakMap entries disappear with immutable rows and never\n * retain removed data. Mutable rows are deliberately unsupported because a\n * cache cannot safely observe deep changes without defeating its purpose.\n */\nexport function useDataTableSearchIndex(\n) {\n // eslint-disable-next-line react-hooks/immutability -- This weak cache is deliberately populated by TanStack's filter pass, never read during React render.\n return React.useMemo>(() => {\n const valuesByRow = new WeakMap>();\n\n return (row: Row, columnId: string, filterValue: unknown) => {\n const query = normalizeDataTableSearchText(filterValue);\n if (!query) {\n return true;\n }\n\n const original = row.original;\n if (typeof original !== \"object\" || original === null) {\n return normalizeDataTableSearchText(row.getValue(columnId)).includes(\n query,\n );\n }\n\n let valuesByColumn = valuesByRow.get(original);\n if (!valuesByColumn) {\n valuesByColumn = new Map();\n valuesByRow.set(original, valuesByColumn);\n }\n\n let text = valuesByColumn.get(columnId);\n if (text === undefined) {\n const value = row.getValue(columnId);\n text = normalizeDataTableSearchText(value);\n valuesByColumn.set(columnId, text);\n }\n\n return text.includes(query);\n };\n }, []);\n}\n","import * as React from \"react\";\nimport {\n getCoreRowModel,\n getExpandedRowModel,\n getFacetedMinMaxValues,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getGroupedRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\";\nimport type {\n ColumnDef,\n ColumnFiltersState,\n ColumnOrderState,\n ColumnPinningState,\n ColumnSizingState,\n ExpandedState,\n GroupingState,\n FilterFnOption,\n OnChangeFn,\n PaginationState,\n RowPinningState,\n Row,\n SortingState,\n Table as TanStackTable,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport type { DataTableProps } from \"../types\";\nimport {\n canReorderDataTableColumn,\n getColumnId,\n getDataTableLeafColumns,\n isDataTableLoadingRow,\n isUtilityColumnId,\n moveColumnInOrder,\n} from \"./data-table-utils\";\nimport type { DataTableColumnGroupPaths } from \"./data-table-utils\";\nimport { useDataTableInfiniteScroll } from \"./use-data-table-infinite-scroll\";\nimport { useDataTablePaginationClamp } from \"./use-data-table-pagination-clamp\";\nimport { useDataTableSearchIndex } from \"./use-data-table-search-index\";\n\nexport function useDataTableInstance({\n autoResetPageIndex,\n columnGroupPaths,\n columnResizeMode,\n dir,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentRowPinning,\n currentColumnSizing,\n currentExpanded,\n currentGrouping,\n currentPagination,\n currentRowSelection,\n currentSorting,\n currentViewMode,\n defaultColumn,\n effectiveColumnVisibility,\n enableColumnResizing,\n enableMultiRowSelection,\n enableRowPinning,\n enableRowSelection,\n enableSubRowSelection,\n getRowCanSelect,\n getRowCanExpand,\n getSubRows,\n aggregationFns,\n groupedColumnMode,\n globalFilterFn,\n globalFilterValue,\n hasNextPage,\n handleColumnFiltersChange,\n handleColumnOrderChange,\n handleColumnPinningChange,\n handleRowPinningChange,\n handleColumnVisibilityChange,\n handleExpandedChange,\n handleGroupingChange,\n infiniteScroll,\n keepPinnedRows,\n manualFiltering,\n manualGrouping,\n manualExpanding,\n manualPagination,\n manualSorting,\n onActionError,\n onPageIndexChange,\n onPageSizeChange,\n pageCount,\n pageIndex,\n pageSize,\n paginateExpandedRows,\n filterFromLeafRows,\n maxLeafRowFilterDepth,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n shouldRenderInitialLoading,\n tableColumns,\n tableData,\n tableGetRowId,\n tableRef,\n totalRowCount,\n virtualization,\n}: {\n autoResetPageIndex: boolean;\n columnGroupPaths: DataTableColumnGroupPaths;\n columnResizeMode: DataTableProps[\"columnResizeMode\"];\n dir: NonNullable[\"dir\"]>;\n currentColumnFilters: ColumnFiltersState;\n currentColumnOrder: ColumnOrderState;\n currentColumnPinning: ColumnPinningState;\n currentRowPinning: RowPinningState;\n currentColumnSizing: ColumnSizingState;\n currentExpanded: ExpandedState;\n currentGrouping: GroupingState;\n currentPagination: PaginationState;\n currentRowSelection: Record;\n currentSorting: SortingState;\n currentViewMode: \"table\" | \"card\";\n defaultColumn: Partial>;\n effectiveColumnVisibility: VisibilityState;\n enableColumnResizing: boolean;\n enableMultiRowSelection: NonNullable<\n DataTableProps[\"enableMultiRowSelection\"]\n >;\n enableRowPinning: DataTableProps[\"enableRowPinning\"];\n enableRowSelection: boolean;\n enableSubRowSelection: NonNullable<\n DataTableProps[\"enableSubRowSelection\"]\n >;\n getRowCanSelect: DataTableProps[\"getRowCanSelect\"];\n getRowCanExpand: DataTableProps[\"getRowCanExpand\"];\n getSubRows: DataTableProps[\"getSubRows\"];\n aggregationFns: DataTableProps[\"aggregationFns\"];\n groupedColumnMode: DataTableProps[\"groupedColumnMode\"];\n globalFilterFn: FilterFnOption | undefined;\n globalFilterValue: string;\n hasNextPage?: DataTableProps[\"hasNextPage\"];\n handleColumnFiltersChange: OnChangeFn;\n handleColumnOrderChange: OnChangeFn;\n handleColumnPinningChange: OnChangeFn;\n handleRowPinningChange: OnChangeFn;\n handleColumnVisibilityChange: OnChangeFn;\n handleExpandedChange: OnChangeFn;\n handleGroupingChange: OnChangeFn;\n infiniteScroll: DataTableProps[\"infiniteScroll\"];\n keepPinnedRows: boolean;\n manualFiltering: boolean;\n manualGrouping: boolean;\n manualExpanding: boolean;\n manualPagination: boolean;\n manualSorting: boolean;\n onActionError?: DataTableProps[\"onActionError\"];\n onPageIndexChange: DataTableProps[\"onPageIndexChange\"];\n onPageSizeChange: DataTableProps[\"onPageSizeChange\"];\n pageCount: DataTableProps[\"pageCount\"];\n pageIndex: DataTableProps[\"pageIndex\"];\n pageSize: DataTableProps[\"pageSize\"];\n paginateExpandedRows: DataTableProps[\"paginateExpandedRows\"];\n filterFromLeafRows: DataTableProps[\"filterFromLeafRows\"];\n maxLeafRowFilterDepth: DataTableProps[\"maxLeafRowFilterDepth\"];\n setCurrentRowSelection: OnChangeFn>;\n setCurrentSorting: OnChangeFn;\n setLocalColumnSizing: OnChangeFn;\n setLocalPagination: React.Dispatch>;\n shouldRenderInitialLoading: boolean;\n tableColumns: Array>;\n tableData: Array;\n tableGetRowId: DataTableProps[\"getRowId\"];\n tableRef: React.RefObject | null>;\n tableScrollElement: HTMLElement | null;\n /**\n * @deprecated Filtering now runs through TanStack Table. Retained so\n * advanced 4.x hook callers remain source-compatible.\n */\n toolbarFilteredData?: Array;\n totalRowCount: DataTableProps[\"totalRowCount\"];\n virtualization: DataTableProps[\"virtualization\"];\n viewportHeight: number;\n}) {\n const cachedGlobalFilterFn = useDataTableSearchIndex();\n const generatedColumnIds = React.useMemo(() => {\n return getDataTableLeafColumns(\n tableColumns as DataTableProps[\"columns\"],\n ).map(({ column, index }) => getColumnId(column, index));\n }, [tableColumns]);\n\n const effectiveColumnOrder = React.useMemo(() => {\n const columnIds = generatedColumnIds;\n const dataColumnIds = columnIds.filter(\n (columnId) =>\n !isUtilityColumnId(columnId) && columnId !== \"__spacer__\",\n );\n const dataColumnIdSet = new Set(dataColumnIds);\n const orderedDataColumnIds = currentColumnOrder.filter((columnId) =>\n dataColumnIdSet.has(columnId),\n );\n const unorderedDataColumnIds = dataColumnIds.filter(\n (columnId) => !orderedDataColumnIds.includes(columnId),\n );\n\n return [\n ...columnIds.filter(\n (columnId) => columnId === \"__expand__\" || columnId === \"__select__\",\n ),\n ...orderedDataColumnIds,\n ...unorderedDataColumnIds,\n ...columnIds.filter((columnId) => columnId === \"__spacer__\"),\n ...columnIds.filter((columnId) => columnId === \"__actions__\"),\n ];\n }, [currentColumnOrder, generatedColumnIds]);\n\n const effectiveColumnPinning = React.useMemo(() => {\n const columnIdSet = new Set(generatedColumnIds);\n const dataColumnIdSet = new Set(\n generatedColumnIds.filter(\n (columnId) =>\n !isUtilityColumnId(columnId) && columnId !== \"__spacer__\",\n ),\n );\n const dataLeft = (currentColumnPinning.left ?? []).filter((columnId) =>\n dataColumnIdSet.has(columnId),\n );\n const dataRight = (currentColumnPinning.right ?? []).filter((columnId) =>\n dataColumnIdSet.has(columnId),\n );\n\n return {\n left: [\n ...[\"__expand__\", \"__select__\"].filter((columnId) =>\n columnIdSet.has(columnId),\n ),\n ...dataLeft,\n ],\n right: [\n ...dataRight,\n ...[\"__actions__\"].filter((columnId) => columnIdSet.has(columnId)),\n ],\n };\n }, [currentColumnPinning, generatedColumnIds]);\n\n const effectiveRowPinning = React.useMemo(() => {\n const availableRowIds = new Set();\n const visitRows = (rows: Array) => {\n rows.forEach((row, index) => {\n availableRowIds.add(tableGetRowId(row, index));\n if (!isDataTableLoadingRow(row)) {\n const subRows = getSubRows?.(row, index);\n if (subRows?.length) {\n visitRows(subRows);\n }\n }\n });\n };\n visitRows(tableData);\n const top = (currentRowPinning.top ?? []).filter((rowId) =>\n availableRowIds.has(rowId),\n );\n const topIds = new Set(top);\n const bottom = (currentRowPinning.bottom ?? []).filter(\n (rowId) => availableRowIds.has(rowId) && !topIds.has(rowId),\n );\n return { top, bottom };\n }, [\n currentRowPinning.bottom,\n currentRowPinning.top,\n getSubRows,\n tableData,\n tableGetRowId,\n ]);\n\n const tableState = React.useMemo(\n () => ({\n sorting: currentSorting,\n pagination: currentPagination,\n rowSelection: currentRowSelection,\n columnVisibility: effectiveColumnVisibility,\n columnFilters: currentColumnFilters,\n globalFilter: globalFilterValue,\n expanded: currentExpanded,\n grouping: currentGrouping,\n columnOrder: effectiveColumnOrder,\n columnPinning: effectiveColumnPinning,\n rowPinning: effectiveRowPinning,\n columnSizing: currentColumnSizing,\n }),\n [\n currentColumnFilters,\n currentColumnSizing,\n currentExpanded,\n currentGrouping,\n currentPagination,\n currentRowSelection,\n currentSorting,\n effectiveColumnVisibility,\n effectiveColumnOrder,\n effectiveColumnPinning,\n effectiveRowPinning,\n globalFilterValue,\n ],\n );\n\n const handlePaginationChange = React.useCallback<\n OnChangeFn\n >(\n (updater) => {\n const nextValue =\n typeof updater === \"function\" ? updater(currentPagination) : updater;\n\n if (pageIndex === undefined || pageSize === undefined) {\n setLocalPagination((current) => ({\n pageIndex:\n pageIndex === undefined ? nextValue.pageIndex : current.pageIndex,\n pageSize:\n pageSize === undefined ? nextValue.pageSize : current.pageSize,\n }));\n }\n\n if (nextValue.pageIndex !== currentPagination.pageIndex) {\n onPageIndexChange?.(nextValue.pageIndex);\n }\n if (nextValue.pageSize !== currentPagination.pageSize) {\n onPageSizeChange?.(nextValue.pageSize);\n }\n },\n [\n currentPagination,\n onPageIndexChange,\n onPageSizeChange,\n pageIndex,\n pageSize,\n setLocalPagination,\n ],\n );\n\n const handleColumnSizingChange = React.useCallback<\n OnChangeFn\n >(\n (updater) => {\n setLocalColumnSizing(updater);\n },\n [setLocalColumnSizing],\n );\n\n const facetingNeeds = React.useMemo(\n () => {\n let uniqueValues = false;\n let minMaxValues = false;\n for (const { column } of getDataTableLeafColumns(\n tableColumns as DataTableProps[\"columns\"],\n )) {\n uniqueValues ||= column.meta?.filter?.type === \"faceted\";\n minMaxValues ||= column.meta?.filter?.type === \"numberRange\";\n }\n return { minMaxValues, uniqueValues };\n },\n [tableColumns],\n );\n\n // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Table owns its instance functions.\n const table = useReactTable({\n data: tableData,\n columns: tableColumns,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: manualFiltering ? undefined : getFilteredRowModel(),\n getFacetedRowModel:\n (facetingNeeds.uniqueValues || facetingNeeds.minMaxValues) &&\n !manualFiltering\n ? getFacetedRowModel()\n : undefined,\n getFacetedUniqueValues:\n facetingNeeds.uniqueValues && !manualFiltering\n ? getFacetedUniqueValues()\n : undefined,\n getFacetedMinMaxValues:\n facetingNeeds.minMaxValues && !manualFiltering\n ? getFacetedMinMaxValues()\n : undefined,\n getGroupedRowModel:\n currentGrouping.length && !manualGrouping ? getGroupedRowModel() : undefined,\n getSortedRowModel: manualSorting ? undefined : getSortedRowModel(),\n getExpandedRowModel:\n (getSubRows || currentGrouping.length) && !manualExpanding\n ? getExpandedRowModel()\n : undefined,\n getPaginationRowModel:\n manualPagination || infiniteScroll?.enabled\n ? undefined\n : getPaginationRowModel(),\n enableRowSelection: getRowCanSelect\n ? (row) => enableRowSelection && getRowCanSelect(row.original)\n : enableRowSelection,\n enableRowPinning:\n typeof enableRowPinning === \"function\"\n ? (row) => enableRowPinning(row.original)\n : enableRowPinning,\n keepPinnedRows,\n enableMultiRowSelection:\n typeof enableMultiRowSelection === \"function\"\n ? (row) => enableMultiRowSelection(row.original)\n : enableMultiRowSelection,\n enableSubRowSelection:\n typeof enableSubRowSelection === \"function\"\n ? (row) => enableSubRowSelection(row.original)\n : enableSubRowSelection,\n enableColumnResizing,\n columnResizeMode,\n columnResizeDirection: dir,\n getRowId: tableGetRowId,\n getSubRows,\n getRowCanExpand: getSubRows\n ? (row) => getRowCanExpand?.(row.original) ?? row.subRows.length > 0\n : undefined,\n globalFilterFn: globalFilterFn ?? cachedGlobalFilterFn,\n getColumnCanGlobalFilter: (column) =>\n column.columnDef.enableGlobalFilter !== false &&\n typeof column.accessorFn === \"function\",\n manualSorting,\n manualGrouping,\n manualFiltering,\n manualExpanding,\n manualPagination: manualPagination || Boolean(infiniteScroll?.enabled),\n paginateExpandedRows,\n filterFromLeafRows,\n maxLeafRowFilterDepth,\n defaultColumn,\n autoResetPageIndex,\n state: tableState,\n onSortingChange: setCurrentSorting,\n onPaginationChange: handlePaginationChange,\n onRowSelectionChange: setCurrentRowSelection,\n onColumnVisibilityChange: handleColumnVisibilityChange,\n onColumnFiltersChange: handleColumnFiltersChange,\n onExpandedChange: handleExpandedChange,\n onGroupingChange: handleGroupingChange,\n onColumnOrderChange: handleColumnOrderChange,\n onColumnPinningChange: handleColumnPinningChange,\n onRowPinningChange: handleRowPinningChange,\n onColumnSizingChange: handleColumnSizingChange,\n aggregationFns,\n groupedColumnMode,\n });\n tableRef.current = table;\n\n const visibleLeafColumns = table.getVisibleLeafColumns();\n const reorderColumn = React.useCallback(\n (sourceColumnId: string, targetColumnId: string) => {\n if (sourceColumnId === targetColumnId) {\n return;\n }\n\n if (\n !canReorderDataTableColumn(\n sourceColumnId,\n targetColumnId,\n columnGroupPaths,\n )\n ) {\n return;\n }\n\n const defaultOrder = table\n .getAllLeafColumns()\n .map((column) => column.id)\n .filter((columnId) => !isUtilityColumnId(columnId));\n const nextOrder = moveColumnInOrder(\n currentColumnOrder.length ? currentColumnOrder : defaultOrder,\n sourceColumnId,\n targetColumnId,\n );\n handleColumnOrderChange(nextOrder);\n },\n [columnGroupPaths, currentColumnOrder, handleColumnOrderChange, table],\n );\n\n const topPinnedRows = table.getTopRows();\n const bottomPinnedRows = table.getBottomRows();\n // Card rendering has no top/bottom table regions. Keep its original row\n // model intact rather than silently dropping pinned records.\n const renderedRows =\n currentViewMode === \"table\"\n ? table.getCenterRows()\n : table.getRowModel().rows;\n const virtualizationConfig =\n typeof virtualization === \"object\" ? virtualization : undefined;\n const virtualRowsEnabled =\n virtualization === true || virtualizationConfig?.enabled === true;\n const fallbackRowCount = Math.max(\n 1,\n Math.floor(virtualizationConfig?.fallbackRowCount ?? 20),\n );\n const initialRowsToRender = virtualRowsEnabled\n ? renderedRows.slice(0, fallbackRowCount)\n : renderedRows;\n const rowsToRender = initialRowsToRender.map((row, rowIndex) => ({\n row,\n rowIndex,\n }));\n\n const usesManualRows = manualPagination || Boolean(infiniteScroll?.enabled);\n const derivedTotalRowCount = usesManualRows\n ? undefined\n : table.getFilteredRowModel().rows.length;\n const effectiveTotalRowCount = totalRowCount ?? derivedTotalRowCount;\n const isPageCountKnown =\n !usesManualRows || pageCount !== undefined || totalRowCount !== undefined;\n const footerTotalRowCount = effectiveTotalRowCount;\n const effectivePageCount = shouldRenderInitialLoading\n ? 1\n : (pageCount ??\n (effectiveTotalRowCount !== undefined\n ? Math.max(\n 1,\n Math.ceil(effectiveTotalRowCount / currentPagination.pageSize),\n )\n : usesManualRows\n ? currentPagination.pageIndex + (hasNextPage ? 2 : 1)\n : table.getPageCount()));\n const maxPageIndex = Math.max(0, effectivePageCount - 1);\n\n const setLocalPageIndex = React.useCallback(\n (nextPageIndex: number) => {\n if (pageIndex !== undefined) {\n return;\n }\n\n setLocalPagination((current) =>\n current.pageIndex === nextPageIndex\n ? current\n : { ...current, pageIndex: nextPageIndex },\n );\n },\n [pageIndex, setLocalPagination],\n );\n useDataTablePaginationClamp({\n enabled:\n !shouldRenderInitialLoading &&\n !infiniteScroll?.enabled &&\n isPageCountKnown,\n maxPageIndex,\n onPageIndexChange,\n pageIndex: currentPagination.pageIndex,\n setLocalPageIndex,\n });\n\n const handleFooterPageIndexChange = React.useCallback(\n (nextPageIndex: number) => {\n if (nextPageIndex === currentPagination.pageIndex) {\n return;\n }\n\n onPageIndexChange?.(nextPageIndex);\n if (pageIndex === undefined) {\n setLocalPagination((current) =>\n current.pageIndex === nextPageIndex\n ? current\n : { ...current, pageIndex: nextPageIndex },\n );\n }\n },\n [\n currentPagination.pageIndex,\n onPageIndexChange,\n pageIndex,\n setLocalPagination,\n ],\n );\n const handleFooterPageSizeChange = React.useCallback(\n (nextPageSize: number) => {\n if (currentPagination.pageIndex !== 0) {\n onPageIndexChange?.(0);\n }\n if (nextPageSize !== currentPagination.pageSize) {\n onPageSizeChange?.(nextPageSize);\n }\n if (pageSize === undefined) {\n setLocalPagination({\n pageIndex: 0,\n pageSize: nextPageSize,\n });\n }\n },\n [\n currentPagination.pageIndex,\n currentPagination.pageSize,\n onPageIndexChange,\n onPageSizeChange,\n pageSize,\n setLocalPagination,\n ],\n );\n\n const sentinelRef = useDataTableInfiniteScroll({\n enabled: Boolean(infiniteScroll?.enabled),\n hasMore: Boolean(infiniteScroll?.hasMore),\n isLoadingMore: infiniteScroll?.isLoadingMore,\n onLoadMore: () => infiniteScroll?.onLoadMore(),\n onError: (error) => {\n onActionError?.({\n error,\n source: \"infiniteScroll\",\n });\n },\n });\n\n return {\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n isPageCountKnown,\n renderedRows,\n topPinnedRows,\n bottomPinnedRows,\n reorderColumn,\n rowsToRender,\n sentinelRef,\n table,\n virtualPaddingBottom: 0,\n virtualPaddingTop: 0,\n visibleLeafColumns,\n };\n}\n\nexport type DataTableRowsToRender = Array<{\n row: Row;\n rowIndex: number;\n}>;\n","import * as React from \"react\";\nimport type {\n DataTableColumnPrefs,\n DataTableDensity,\n DataTablePersistenceConfig,\n DataTablePersistencePayload,\n DataTablePersistenceSlice,\n DataTablePersistenceStorage,\n} from \"../types\";\nimport type { RowPinningState } from \"@tanstack/react-table\";\n\nconst STORAGE_PREFIX = \"data-table-pro:column-prefs:\";\nconst DEFAULT_VERSION = 1;\nconst ALL_SLICES: Array = [\n \"visibility\",\n \"sizing\",\n \"order\",\n \"pinning\",\n \"rowPinning\",\n \"density\",\n];\n\nexport function readDataTableColumnPrefs(\n input: string | DataTablePersistenceConfig | undefined,\n): DataTableColumnPrefs {\n const config = resolvePersistenceConfig(input);\n if (!config) {\n return {};\n }\n\n const storage = resolveStorage(config);\n if (!storage) {\n return {};\n }\n const storageKey = getStorageKey(config.key);\n\n let value: string | null;\n try {\n value = storage.getItem(storageKey);\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return {};\n }\n if (!value) {\n return {};\n }\n\n let parsed: unknown;\n try {\n parsed = (config.deserialize ?? JSON.parse)(value);\n } catch (error) {\n config.onError?.({ error, operation: \"deserialize\" });\n return {};\n }\n\n const targetVersion = config.version ?? DEFAULT_VERSION;\n let candidate: unknown;\n if (isPersistencePayload(parsed)) {\n if (parsed.version === targetVersion) {\n candidate = parsed.state;\n } else if (config.migrate) {\n try {\n candidate = config.migrate(\n {\n version: parsed.version,\n state: parsed.state,\n },\n targetVersion,\n );\n } catch (error) {\n config.onError?.({ error, operation: \"migrate\" });\n return {};\n }\n } else {\n return {};\n }\n } else {\n // Raw objects are the legacy columnPrefsKey format. They are validated and\n // upgraded to a versioned envelope on the next successful write.\n candidate = parsed;\n }\n\n return selectPersistenceSlices(\n validateDataTableColumnPrefs(candidate),\n config.slices,\n );\n}\n\nexport function clearDataTableColumnPrefs(\n input: string | DataTablePersistenceConfig | undefined,\n) {\n const config = resolvePersistenceConfig(input);\n if (!config) {\n return false;\n }\n\n const storage = resolveStorage(config);\n if (!storage) {\n return false;\n }\n\n try {\n storage.removeItem(getStorageKey(config.key));\n return true;\n } catch (error) {\n config.onError?.({ error, operation: \"remove\" });\n return false;\n }\n}\n\nexport function usePersistDataTableColumnPrefs({\n key,\n persistence,\n prefs,\n}: {\n key?: string;\n persistence?: DataTablePersistenceConfig;\n prefs: DataTableColumnPrefs;\n}) {\n const config = persistence ?? resolvePersistenceConfig(key);\n const storage = config ? resolveStorage(config) : undefined;\n const storageKey = config ? getStorageKey(config.key) : undefined;\n const version = config?.version ?? DEFAULT_VERSION;\n const debounceMs = Math.max(0, config?.debounceMs ?? 100);\n const selectedState = selectPersistenceSlices(prefs, config?.slices);\n const serialized = React.useMemo(() => {\n if (!config) {\n return { value: undefined };\n }\n\n try {\n const payload: DataTablePersistencePayload = {\n version,\n state: selectedState,\n };\n return {\n value: (config.serialize ?? JSON.stringify)(payload),\n };\n } catch (error) {\n return { error, value: undefined };\n }\n }, [config, selectedState, version]);\n const onErrorEvent = React.useEffectEvent(\n (\n error: unknown,\n operation: \"serialize\" | \"write\",\n ) => {\n config?.onError?.({ error, operation });\n },\n );\n\n React.useEffect(() => {\n if (serialized.error !== undefined) {\n onErrorEvent(serialized.error, \"serialize\");\n }\n }, [serialized.error]);\n\n React.useEffect(() => {\n if (!storage || !storageKey || serialized.value === undefined) {\n return;\n }\n\n const write = () => {\n try {\n if (storage.getItem(storageKey) === serialized.value) {\n return;\n }\n storage.setItem(storageKey, serialized.value);\n } catch (error) {\n onErrorEvent(error, \"write\");\n }\n };\n\n if (debounceMs === 0) {\n write();\n return;\n }\n\n const timeout = globalThis.setTimeout(write, debounceMs);\n return () => {\n globalThis.clearTimeout(timeout);\n };\n }, [debounceMs, serialized.value, storage, storageKey]);\n}\n\nfunction resolvePersistenceConfig(\n input: string | DataTablePersistenceConfig | undefined,\n): DataTablePersistenceConfig | undefined {\n if (!input) {\n return undefined;\n }\n\n return typeof input === \"string\" ? { key: input } : input;\n}\n\nfunction resolveStorage(\n config: DataTablePersistenceConfig,\n): DataTablePersistenceStorage | undefined {\n if (config.storage) {\n return config.storage;\n }\n\n if (typeof window === \"undefined\") {\n return undefined;\n }\n\n try {\n return window.localStorage;\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return undefined;\n }\n}\n\nfunction getStorageKey(key: string) {\n return `${STORAGE_PREFIX}${key}`;\n}\n\nfunction isPersistencePayload(\n value: unknown,\n): value is { version: unknown; state: unknown } {\n return (\n isRecord(value) &&\n Object.prototype.hasOwnProperty.call(value, \"version\") &&\n Object.prototype.hasOwnProperty.call(value, \"state\")\n );\n}\n\nfunction selectPersistenceSlices(\n prefs: DataTableColumnPrefs,\n slices: Array | undefined,\n) {\n const selected = new Set(slices ?? ALL_SLICES);\n const result: DataTableColumnPrefs = {};\n\n for (const slice of ALL_SLICES) {\n if (selected.has(slice) && prefs[slice] !== undefined) {\n Object.assign(result, { [slice]: prefs[slice] });\n }\n }\n\n return result;\n}\n\nfunction validateDataTableColumnPrefs(value: unknown): DataTableColumnPrefs {\n if (!isRecord(value)) {\n return {};\n }\n\n const prefs: DataTableColumnPrefs = {};\n const visibility = validateBooleanRecord(value.visibility);\n if (visibility) {\n prefs.visibility = visibility;\n }\n const sizing = validateSizingRecord(value.sizing);\n if (sizing) {\n prefs.sizing = sizing;\n }\n const order = validateStringArray(value.order);\n if (order) {\n prefs.order = order;\n }\n if (isRecord(value.pinning)) {\n const left = validateStringArray(value.pinning.left) ?? [];\n const right = validateStringArray(value.pinning.right) ?? [];\n prefs.pinning = { left, right };\n }\n const rowPinning = validateRowPinning(value.rowPinning);\n if (rowPinning) {\n prefs.rowPinning = rowPinning;\n }\n if (isDataTableDensity(value.density)) {\n prefs.density = value.density;\n }\n\n return prefs;\n}\n\nfunction validateBooleanRecord(value: unknown) {\n if (!isRecord(value)) {\n return undefined;\n }\n\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, boolean] => typeof entry[1] === \"boolean\",\n ),\n );\n}\n\nfunction validateSizingRecord(value: unknown) {\n if (!isRecord(value)) {\n return undefined;\n }\n\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, number] =>\n typeof entry[1] === \"number\" &&\n Number.isFinite(entry[1]) &&\n entry[1] >= 0,\n ),\n );\n}\n\nfunction validateStringArray(value: unknown) {\n if (!Array.isArray(value)) {\n return undefined;\n }\n\n return value.filter((item): item is string => typeof item === \"string\");\n}\n\nfunction validateRowPinning(value: unknown): RowPinningState | undefined {\n if (!isRecord(value)) {\n return undefined;\n }\n\n return {\n top: validateStringArray(value.top) ?? [],\n bottom: validateStringArray(value.bottom) ?? [],\n };\n}\n\nfunction isDataTableDensity(value: unknown): value is DataTableDensity {\n return (\n value === \"compact\" ||\n value === \"comfortable\" ||\n value === \"spacious\"\n );\n}\n\nfunction isRecord(value: unknown): value is Record {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n","import * as React from \"react\";\nimport { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS } from \"../types\";\n\nconst BREAKPOINT_WIDTHS = Object.values(DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS)\n .slice()\n .sort((first, second) => first - second);\n\nexport function useDataTableContainerWidth(\n containerRef: React.RefObject,\n) {\n const widthRef = React.useRef(0);\n const [width, setWidth] = React.useState(0);\n\n React.useEffect(() => {\n const element = containerRef.current;\n if (!element) {\n return;\n }\n\n const updateWidth = (inlineSize = element.clientWidth) => {\n const nextWidth = quantizeDataTableContainerWidth(inlineSize);\n if (nextWidth === widthRef.current) {\n return;\n }\n\n widthRef.current = nextWidth;\n setWidth(nextWidth);\n };\n\n updateWidth();\n\n if (typeof ResizeObserver === \"undefined\") {\n return;\n }\n\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n updateWidth(entry ? getResizeObserverInlineSize(entry) : undefined);\n });\n\n observer.observe(element);\n\n return () => {\n observer.disconnect();\n };\n }, [containerRef]);\n\n return width;\n}\n\nexport function quantizeDataTableContainerWidth(width: number) {\n if (width <= 0) {\n return 0;\n }\n\n let bucket = 1;\n for (const breakpointWidth of BREAKPOINT_WIDTHS) {\n if (width < breakpointWidth) {\n break;\n }\n bucket = breakpointWidth;\n }\n\n return bucket;\n}\n\nfunction getResizeObserverInlineSize(entry: ResizeObserverEntry) {\n const contentBoxSize: unknown = entry.contentBoxSize;\n const size: unknown = Array.isArray(contentBoxSize)\n ? contentBoxSize[0]\n : contentBoxSize;\n const inlineSize = getInlineSize(size);\n\n return inlineSize ?? entry.contentRect.width;\n}\n\nfunction getInlineSize(value: unknown) {\n if (typeof value !== \"object\" || value === null) {\n return undefined;\n }\n\n const inlineSize = (value as { inlineSize?: unknown }).inlineSize;\n return typeof inlineSize === \"number\" ? inlineSize : undefined;\n}\n","import * as React from \"react\";\nimport type {\n ColumnFiltersState,\n ColumnOrderState,\n ColumnPinningState,\n ColumnSizingState,\n ExpandedState,\n GroupingState,\n PaginationState,\n RowPinningState,\n SortingState,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableDensity,\n DataTableLabels,\n DataTableProps,\n} from \"../types\";\nimport {\n createDataTableLoadingRows,\n getColumnId,\n getDataTableLeafColumns,\n getDataTableLoadingRowId,\n getInitialColumnPinning,\n isDataTableLoadingRow,\n} from \"./data-table-utils\";\nimport {\n readDataTableColumnPrefs,\n usePersistDataTableColumnPrefs,\n} from \"./use-data-table-column-prefs\";\nimport { useControllableState } from \"./use-controllable-state\";\nimport { useDataTableContainerWidth } from \"./use-data-table-container-width\";\nimport { isHiddenAtContainerWidth, isRowVisible } from \"../types\";\n\nexport function useDataTableState({\n columnFilters,\n columnOrder,\n columnPinning,\n rowPinning,\n columnSizing,\n columnPrefsKey,\n persistence,\n columnVisibility,\n columns,\n data,\n density,\n enableRowSelection,\n enableToolbarQueryFiltering,\n expanded,\n grouping,\n getSubRows,\n getRowId,\n hiddenRows,\n initialState,\n isLoading,\n loadingRowCount,\n manualFiltering,\n onColumnFiltersChange,\n onColumnOrderChange,\n onColumnPinningChange,\n onRowPinningChange,\n onColumnSizingChange,\n onColumnVisibilityChange,\n onDensityChange,\n onExpandedChange,\n onGroupingChange,\n onPageIndexChange,\n onRowSelectionChange,\n onShowHiddenRowsChange,\n onSortingChange,\n onToolbarQueryValueChange,\n onViewModeChange,\n pageIndex,\n pageSize,\n resolvedLabels,\n rowSelection,\n rowsPerPageOptions,\n selectionActions,\n showHiddenRows,\n sorting,\n toolbarQueryDebounceMs,\n toolbarQueryPlaceholder,\n toolbarQueryValue,\n viewMode,\n containerRef,\n}: {\n columnFilters: DataTableProps[\"columnFilters\"];\n columnOrder: DataTableProps[\"columnOrder\"];\n columnPinning: DataTableProps[\"columnPinning\"];\n rowPinning: DataTableProps[\"rowPinning\"];\n columnSizing?: DataTableProps[\"columnSizing\"];\n columnPrefsKey: DataTableProps[\"columnPrefsKey\"];\n persistence?: DataTableProps[\"persistence\"];\n columnVisibility: DataTableProps[\"columnVisibility\"];\n columns: DataTableProps[\"columns\"];\n data: DataTableProps[\"data\"];\n density: DataTableProps[\"density\"];\n enableRowSelection: boolean;\n enableToolbarQueryFiltering: boolean;\n expanded: DataTableProps[\"expanded\"];\n grouping: DataTableProps[\"grouping\"];\n getSubRows: DataTableProps[\"getSubRows\"];\n getRowId: DataTableProps[\"getRowId\"];\n hiddenRows: DataTableProps[\"hiddenRows\"];\n initialState?: DataTableProps[\"initialState\"];\n isLoading: boolean;\n loadingRowCount: DataTableProps[\"loadingRowCount\"];\n manualFiltering: boolean;\n onColumnFiltersChange: DataTableProps[\"onColumnFiltersChange\"];\n onColumnOrderChange: DataTableProps[\"onColumnOrderChange\"];\n onColumnPinningChange: DataTableProps[\"onColumnPinningChange\"];\n onRowPinningChange: DataTableProps[\"onRowPinningChange\"];\n onColumnSizingChange?: DataTableProps[\"onColumnSizingChange\"];\n onColumnVisibilityChange: DataTableProps[\"onColumnVisibilityChange\"];\n onDensityChange: DataTableProps[\"onDensityChange\"];\n onExpandedChange: DataTableProps[\"onExpandedChange\"];\n onGroupingChange: DataTableProps[\"onGroupingChange\"];\n onPageIndexChange: DataTableProps[\"onPageIndexChange\"];\n onRowSelectionChange: DataTableProps[\"onRowSelectionChange\"];\n onShowHiddenRowsChange: DataTableProps[\"onShowHiddenRowsChange\"];\n onSortingChange: DataTableProps[\"onSortingChange\"];\n onToolbarQueryValueChange: DataTableProps[\"onToolbarQueryValueChange\"];\n onViewModeChange: DataTableProps[\"onViewModeChange\"];\n pageIndex: DataTableProps[\"pageIndex\"];\n pageSize: DataTableProps[\"pageSize\"];\n resolvedLabels: DataTableLabels;\n rowSelection: DataTableProps[\"rowSelection\"];\n rowsPerPageOptions: Array;\n selectionActions: DataTableProps[\"selectionActions\"];\n showHiddenRows: DataTableProps[\"showHiddenRows\"];\n sorting: DataTableProps[\"sorting\"];\n toolbarQueryDebounceMs: DataTableProps[\"toolbarQueryDebounceMs\"];\n toolbarQueryPlaceholder: DataTableProps[\"toolbarQueryPlaceholder\"];\n toolbarQueryValue: DataTableProps[\"toolbarQueryValue\"];\n viewMode: DataTableProps[\"viewMode\"];\n containerRef: React.RefObject;\n}) {\n const persistenceConfig = React.useMemo(\n () => persistence ?? (columnPrefsKey ? { key: columnPrefsKey } : undefined),\n [columnPrefsKey, persistence],\n );\n const persistedColumnPrefs = React.useMemo(\n () => readDataTableColumnPrefs(persistenceConfig),\n [persistenceConfig],\n );\n const [localPagination, setLocalPagination] =\n React.useState({\n pageIndex: initialState?.pagination?.pageIndex ?? 0,\n pageSize:\n initialState?.pagination?.pageSize ??\n rowsPerPageOptions[0] ??\n 20,\n });\n const [currentSorting, setCurrentSorting] =\n useControllableState({\n value: sorting,\n onChange: onSortingChange,\n defaultValue: () => initialState?.sorting ?? [],\n });\n const [currentRowSelection, setCurrentRowSelection] = useControllableState<\n Record\n >({\n value: rowSelection,\n onChange: onRowSelectionChange,\n defaultValue: () => initialState?.rowSelection ?? {},\n });\n const [currentColumnVisibility, setCurrentColumnVisibility] =\n useControllableState({\n value: columnVisibility,\n onChange: onColumnVisibilityChange,\n defaultValue: () =>\n initialState?.columnVisibility ??\n persistedColumnPrefs.visibility ??\n {},\n });\n const [currentColumnFilters, setCurrentColumnFilters] =\n useControllableState({\n value: columnFilters,\n onChange: onColumnFiltersChange,\n defaultValue: () => initialState?.columnFilters ?? [],\n });\n const [currentExpanded, setCurrentExpanded] =\n useControllableState({\n value: expanded,\n onChange: onExpandedChange,\n defaultValue: () => initialState?.expanded ?? {},\n });\n const [currentColumnOrder, setCurrentColumnOrder] =\n useControllableState({\n value: columnOrder,\n onChange: onColumnOrderChange,\n defaultValue: () =>\n initialState?.columnOrder ?? persistedColumnPrefs.order ?? [],\n });\n const [currentColumnPinning, setCurrentColumnPinning] =\n useControllableState({\n value: columnPinning,\n onChange: onColumnPinningChange,\n defaultValue: () =>\n initialState?.columnPinning ??\n persistedColumnPrefs.pinning ??\n getInitialColumnPinning(columns),\n });\n const [currentRowPinning, setCurrentRowPinning] =\n useControllableState({\n value: rowPinning,\n onChange: onRowPinningChange,\n defaultValue: () =>\n initialState?.rowPinning ?? persistedColumnPrefs.rowPinning ?? {\n top: [],\n bottom: [],\n },\n });\n const [currentColumnSizing, setCurrentColumnSizing] =\n useControllableState({\n value: columnSizing,\n onChange: onColumnSizingChange,\n defaultValue: () =>\n initialState?.columnSizing ?? persistedColumnPrefs.sizing ?? {},\n });\n const [currentViewMode, setCurrentViewMode] = useControllableState<\n \"table\" | \"card\"\n >({\n value: viewMode,\n onChange: onViewModeChange,\n defaultValue: () => initialState?.viewMode ?? \"table\",\n });\n const [currentGrouping, setCurrentGrouping] = useControllableState({\n value: grouping,\n onChange: onGroupingChange,\n defaultValue: () => initialState?.grouping ?? [],\n });\n const [currentShowHiddenRows, setCurrentShowHiddenRows] =\n useControllableState({\n value: showHiddenRows,\n onChange: onShowHiddenRowsChange,\n defaultValue: () => initialState?.showHiddenRows ?? false,\n });\n const [currentDensity, setCurrentDensity] =\n useControllableState({\n value: density,\n onChange: onDensityChange,\n defaultValue: () =>\n initialState?.density ??\n persistedColumnPrefs.density ??\n \"comfortable\",\n });\n const resolvedToolbarQueryValue =\n toolbarQueryValue ?? initialState?.globalFilter ?? \"\";\n const resolvedToolbarQueryPlaceholder =\n toolbarQueryPlaceholder ?? resolvedLabels.searchPlaceholder;\n const resolvedToolbarQueryDebounceMs = toolbarQueryDebounceMs ?? 250;\n const [localSearchValue, setLocalSearchValue] = React.useState(\n resolvedToolbarQueryValue,\n );\n const containerWidth = useDataTableContainerWidth(containerRef);\n const hasOnSearchValueChange = Boolean(onToolbarQueryValueChange);\n const lastReportedSearchValueRef = React.useRef(resolvedToolbarQueryValue);\n const onToolbarQueryValueChangeEvent = React.useEffectEvent(\n (value: string) => {\n lastReportedSearchValueRef.current = value;\n onToolbarQueryValueChange?.(value);\n },\n );\n\n React.useEffect(() => {\n lastReportedSearchValueRef.current = resolvedToolbarQueryValue;\n // A controlled query change must replace any pending debounced draft.\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setLocalSearchValue(resolvedToolbarQueryValue);\n }, [resolvedToolbarQueryValue]);\n\n React.useEffect(() => {\n if (!hasOnSearchValueChange) {\n return;\n }\n\n if (localSearchValue === resolvedToolbarQueryValue) {\n return;\n }\n\n if (localSearchValue === lastReportedSearchValueRef.current) {\n return;\n }\n\n const timeout = window.setTimeout(() => {\n onToolbarQueryValueChangeEvent(localSearchValue);\n }, resolvedToolbarQueryDebounceMs);\n\n return () => {\n window.clearTimeout(timeout);\n };\n }, [\n hasOnSearchValueChange,\n localSearchValue,\n resolvedToolbarQueryDebounceMs,\n resolvedToolbarQueryValue,\n ]);\n\n const currentPagination = React.useMemo(\n () => ({\n pageIndex: pageIndex ?? localPagination.pageIndex,\n pageSize: pageSize ?? localPagination.pageSize,\n }),\n [\n localPagination.pageIndex,\n localPagination.pageSize,\n pageIndex,\n pageSize,\n ],\n );\n const resolvedLoadingRowCount = Math.max(\n 1,\n loadingRowCount ?? Math.min(5, currentPagination.pageSize),\n );\n // Keep input/callback state eager. Only the client row-model input is\n // deferred, so server/manual callbacks never wait behind a large filter.\n const deferredSearchValue = React.useDeferredValue(localSearchValue);\n const globalFilterValue = enableToolbarQueryFiltering\n ? manualFiltering\n ? localSearchValue\n : deferredSearchValue\n : \"\";\n const handleViewModeChange = React.useCallback(\n (nextViewMode: \"table\" | \"card\") => {\n setCurrentViewMode(nextViewMode);\n },\n [setCurrentViewMode],\n );\n const handleShowHiddenRowsChange = React.useCallback(\n (nextShowHiddenRows: boolean) => {\n setCurrentShowHiddenRows(nextShowHiddenRows);\n },\n [setCurrentShowHiddenRows],\n );\n const handleDensityChange = React.useCallback(\n (nextDensity: DataTableDensity) => {\n setCurrentDensity(nextDensity);\n },\n [setCurrentDensity],\n );\n const resetPageIndexForFilterChange = React.useCallback(() => {\n onPageIndexChange?.(0);\n if (pageIndex === undefined) {\n setLocalPagination((current) =>\n current.pageIndex === 0 ? current : { ...current, pageIndex: 0 },\n );\n }\n }, [onPageIndexChange, pageIndex]);\n const lastFilterStateRef = React.useRef({\n columnFilters: currentColumnFilters,\n globalFilterValue,\n });\n\n React.useEffect(() => {\n const previous = lastFilterStateRef.current;\n const filtersChanged = previous.columnFilters !== currentColumnFilters;\n const globalFilterChanged =\n previous.globalFilterValue !== globalFilterValue;\n lastFilterStateRef.current = {\n columnFilters: currentColumnFilters,\n globalFilterValue,\n };\n\n if (manualFiltering) {\n return;\n }\n\n if (!filtersChanged && !globalFilterChanged) {\n return;\n }\n\n resetPageIndexForFilterChange();\n }, [\n currentColumnFilters,\n globalFilterValue,\n manualFiltering,\n resetPageIndexForFilterChange,\n ]);\n\n usePersistDataTableColumnPrefs({\n persistence: persistenceConfig,\n prefs: {\n visibility: columnVisibility ? undefined : currentColumnVisibility,\n sizing:\n columnSizing === undefined ? currentColumnSizing : undefined,\n order: columnOrder ? undefined : currentColumnOrder,\n pinning: columnPinning ? undefined : currentColumnPinning,\n rowPinning: rowPinning === undefined ? currentRowPinning : undefined,\n density: density ? undefined : currentDensity,\n },\n });\n const responsiveColumnVisibility = React.useMemo(() => {\n return getDataTableLeafColumns(columns).reduce(\n (visibility, { column, index }) => {\n const columnId = getColumnId(column, index);\n if (isHiddenAtContainerWidth(column.meta?.hideOn, containerWidth)) {\n visibility[columnId] = false;\n }\n return visibility;\n },\n {},\n );\n }, [columns, containerWidth]);\n const effectiveColumnVisibility = React.useMemo(() => {\n return {\n ...currentColumnVisibility,\n ...responsiveColumnVisibility,\n };\n }, [currentColumnVisibility, responsiveColumnVisibility]);\n const visibleData = React.useMemo(\n () =>\n data.filter((row) =>\n isRowVisible(row, hiddenRows, currentShowHiddenRows),\n ),\n [currentShowHiddenRows, data, hiddenRows],\n );\n const shouldRenderInitialLoading = isLoading && visibleData.length === 0;\n const loadingRows = React.useMemo(\n () => createDataTableLoadingRows(resolvedLoadingRowCount),\n [resolvedLoadingRowCount],\n );\n const tableData = shouldRenderInitialLoading\n ? loadingRows\n : visibleData;\n const tableGetRowId = React.useCallback(\n (row: TData, index: number) => {\n if (isDataTableLoadingRow(row)) {\n return getDataTableLoadingRowId(index);\n }\n\n return getRowId(row, index);\n },\n [getRowId],\n );\n const shouldResolveSelectedRows =\n enableRowSelection ||\n (selectionActions?.length ?? 0) > 0 ||\n Object.values(currentRowSelection).some(Boolean);\n const rowById = React.useMemo(() => {\n if (!shouldResolveSelectedRows) {\n return new Map();\n }\n\n const rows = new Map();\n const visitRows = (currentRows: Array) => {\n currentRows.forEach((row, index) => {\n rows.set(getRowId(row, index), row);\n const subRows = getSubRows?.(row, index);\n if (subRows?.length) {\n visitRows(subRows);\n }\n });\n };\n visitRows(visibleData);\n return rows;\n }, [getRowId, getSubRows, shouldResolveSelectedRows, visibleData]);\n const selectedRows = React.useMemo(() => {\n if (!shouldResolveSelectedRows) {\n return [];\n }\n\n return Object.entries(currentRowSelection)\n .filter(([, selected]) => selected)\n .map(([rowId]) => rowById.get(rowId))\n .filter((row): row is TData => Boolean(row));\n }, [currentRowSelection, rowById, shouldResolveSelectedRows]);\n const selectedRowIds = React.useMemo(\n () =>\n Object.entries(currentRowSelection).flatMap(([rowId, selected]) =>\n selected ? [rowId] : [],\n ),\n [currentRowSelection],\n );\n\n return {\n containerWidth,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentRowPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentGrouping,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n effectiveColumnVisibility,\n globalFilterValue,\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n localSearchValue,\n resolvedLoadingRowCount,\n resolvedToolbarQueryPlaceholder,\n selectedRowIds,\n selectedRows,\n setCurrentColumnFilters,\n setCurrentColumnOrder,\n setCurrentColumnPinning,\n setCurrentRowPinning,\n setCurrentColumnVisibility,\n setCurrentExpanded,\n setCurrentGrouping,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing: setCurrentColumnSizing,\n setLocalPagination,\n setLocalSearchValue,\n shouldRenderInitialLoading,\n tableData,\n tableGetRowId,\n /**\n * @deprecated Read the filtered TanStack row model from the table\n * instance. This alias remains for advanced 4.x callers.\n */\n toolbarFilteredData: visibleData,\n visibleData,\n };\n}\n","import * as React from \"react\";\nimport type { Column, ColumnSizingState } from \"@tanstack/react-table\";\nimport type { DataTableColumnDef } from \"../types\";\nimport type { DataTableUiClassNames } from \"../ui-kit\";\nimport {\n UTILITY_COLUMN_SIZE,\n getColumnId,\n getConfiguredColumnMinWidth,\n getDataTableLeafColumns,\n getFixedSide,\n getPinnedColumnClassName,\n isUtilityColumnId,\n} from \"./data-table-utils\";\n\ntype ColumnLayoutMode = \"fill\" | \"fit\";\n\nexport type DataTableColumnLayout = {\n cellStyle: React.CSSProperties | undefined;\n colStyle: React.CSSProperties | undefined;\n fixedSide: \"left\" | \"right\" | false | undefined;\n headerStyle: React.CSSProperties | undefined;\n isActionsColumn: boolean;\n isExpansionColumn: boolean;\n isSelectionColumn: boolean;\n isSpacerColumn: boolean;\n isUtilityColumn: boolean;\n pinnedClassName: string | undefined;\n utilityClassName: string | undefined;\n};\n\nconst EMPTY_COLUMN_LAYOUT: DataTableColumnLayout = {\n cellStyle: undefined,\n colStyle: undefined,\n fixedSide: undefined,\n headerStyle: undefined,\n isActionsColumn: false,\n isExpansionColumn: false,\n isSelectionColumn: false,\n isSpacerColumn: false,\n isUtilityColumn: false,\n pinnedClassName: undefined,\n utilityClassName: undefined,\n};\n\nexport function useColumnLayout({\n columns,\n columnSizing,\n editableRows,\n enableRowSelection,\n hasRowActions,\n hasRowExpansion,\n layoutMode,\n uiClassNames,\n visibleLeafColumns,\n}: {\n columns: Array>;\n columnSizing: ColumnSizingState;\n editableRows: boolean;\n enableRowSelection: boolean;\n hasRowActions: boolean;\n hasRowExpansion: boolean;\n layoutMode: ColumnLayoutMode;\n uiClassNames: DataTableUiClassNames;\n visibleLeafColumns: Array>;\n}) {\n const explicitlySizedColumnIds = React.useMemo(() => {\n const ids = new Set();\n\n for (const { column, index } of getDataTableLeafColumns(columns)) {\n if (Object.prototype.hasOwnProperty.call(column, \"size\")) {\n ids.add(getColumnId(column, index));\n }\n }\n\n if (enableRowSelection) {\n ids.add(\"__select__\");\n }\n\n if (hasRowExpansion) {\n ids.add(\"__expand__\");\n }\n\n if (hasRowActions || editableRows) {\n ids.add(\"__actions__\");\n }\n\n return ids;\n }, [\n columns,\n editableRows,\n enableRowSelection,\n hasRowActions,\n hasRowExpansion,\n ]);\n\n const minimumColumnWidths = React.useMemo(() => {\n const widths = new Map();\n\n for (const { column, index } of getDataTableLeafColumns(columns)) {\n const configuredMinWidth = getConfiguredColumnMinWidth(column);\n\n if (configuredMinWidth !== undefined) {\n widths.set(getColumnId(column, index), configuredMinWidth);\n }\n }\n\n return widths;\n }, [columns]);\n\n const pinnedColumns = React.useMemo(() => {\n const left = new Map();\n const right = new Map();\n\n let leftOffset = 0;\n for (const column of visibleLeafColumns) {\n if (getFixedSide(column) === \"left\") {\n left.set(column.id, leftOffset);\n leftOffset += getColumnLayoutSize(column);\n }\n }\n\n let rightOffset = 0;\n for (const column of [...visibleLeafColumns].reverse()) {\n if (getFixedSide(column) === \"right\") {\n right.set(column.id, rightOffset);\n rightOffset += getColumnLayoutSize(column);\n }\n }\n\n return { left, right };\n }, [visibleLeafColumns]);\n\n const fillColumnId = React.useMemo(() => {\n if (layoutMode !== \"fill\") {\n return undefined;\n }\n\n const dataColumns = visibleLeafColumns.filter(\n (column) => !isUtilityColumnId(column.id),\n );\n\n if (!dataColumns.length) {\n return undefined;\n }\n\n const allDataColumnsAreFixed = dataColumns.every(\n (column) =>\n explicitlySizedColumnIds.has(column.id) ||\n Object.prototype.hasOwnProperty.call(columnSizing, column.id),\n );\n\n return allDataColumnsAreFixed\n ? dataColumns[dataColumns.length - 1]?.id\n : undefined;\n }, [\n columnSizing,\n explicitlySizedColumnIds,\n layoutMode,\n visibleLeafColumns,\n ]);\n\n const fixedWidthColumnIds = React.useMemo(() => {\n const ids = new Set([\n ...explicitlySizedColumnIds,\n ...Object.keys(columnSizing),\n ]);\n\n if (fillColumnId) {\n ids.delete(fillColumnId);\n }\n\n return ids;\n }, [columnSizing, explicitlySizedColumnIds, fillColumnId]);\n\n const columnLayouts = React.useMemo(() => {\n const layouts = new Map();\n\n for (const column of visibleLeafColumns) {\n const isSelectionColumn = column.id === \"__select__\";\n const isExpansionColumn = column.id === \"__expand__\";\n const isActionsColumn = column.id === \"__actions__\";\n const isUtilityColumn =\n isSelectionColumn || isExpansionColumn || isActionsColumn;\n const isSpacerColumn = column.id === \"__spacer__\";\n const configuredMinWidth = minimumColumnWidths.get(column.id);\n const isFlexibleFillColumn = column.id === fillColumnId;\n const columnMinWidth =\n configuredMinWidth ??\n (isFlexibleFillColumn ? column.getSize() : undefined);\n const shouldFixWidth =\n !isSpacerColumn &&\n (layoutMode === \"fit\" ||\n isUtilityColumn ||\n fixedWidthColumnIds.has(column.id));\n const baseStyle =\n shouldFixWidth || columnMinWidth !== undefined\n ? {\n width: shouldFixWidth\n ? isUtilityColumn\n ? UTILITY_COLUMN_SIZE\n : column.getSize()\n : undefined,\n minWidth: isUtilityColumn\n ? UTILITY_COLUMN_SIZE\n : shouldFixWidth\n ? column.getSize()\n : columnMinWidth,\n maxWidth: shouldFixWidth\n ? isUtilityColumn\n ? UTILITY_COLUMN_SIZE\n : column.getSize()\n : undefined,\n }\n : undefined;\n const fixedSide = getFixedSide(column);\n const pinnedStyle = fixedSide\n ? {\n left:\n fixedSide === \"left\" ? pinnedColumns.left.get(column.id) : undefined,\n right:\n fixedSide === \"right\"\n ? pinnedColumns.right.get(column.id)\n : undefined,\n }\n : undefined;\n const cellStyle =\n baseStyle || pinnedStyle ? { ...baseStyle, ...pinnedStyle } : undefined;\n\n layouts.set(column.id, {\n cellStyle,\n colStyle: baseStyle,\n fixedSide,\n headerStyle: cellStyle,\n isActionsColumn,\n isExpansionColumn,\n isSelectionColumn,\n isSpacerColumn,\n isUtilityColumn,\n pinnedClassName: fixedSide\n ? getPinnedColumnClassName(fixedSide, uiClassNames, {\n isUtilityColumn,\n })\n : undefined,\n utilityClassName: isUtilityColumn\n ? \"w-[50px] max-w-[50px] min-w-[50px] px-0\"\n : undefined,\n });\n }\n\n return layouts;\n }, [\n fillColumnId,\n fixedWidthColumnIds,\n layoutMode,\n minimumColumnWidths,\n pinnedColumns,\n uiClassNames,\n visibleLeafColumns,\n ]);\n\n const fillMinWidth = React.useMemo(() => {\n return visibleLeafColumns.reduce((total, column) => {\n const layout = columnLayouts.get(column.id);\n const configuredMinWidth = minimumColumnWidths.get(column.id);\n const isFlexibleFillColumn = column.id === fillColumnId;\n\n if (layout?.isUtilityColumn) {\n return total + UTILITY_COLUMN_SIZE;\n }\n\n if (fixedWidthColumnIds.has(column.id)) {\n return total + column.getSize();\n }\n\n return (\n total +\n (configuredMinWidth ?? (isFlexibleFillColumn ? column.getSize() : 0))\n );\n }, 0);\n }, [\n columnLayouts,\n fillColumnId,\n fixedWidthColumnIds,\n minimumColumnWidths,\n visibleLeafColumns,\n ]);\n\n const getColumnLayout = React.useCallback(\n (columnId: string) => columnLayouts.get(columnId) ?? EMPTY_COLUMN_LAYOUT,\n [columnLayouts],\n );\n\n return {\n columnLayouts,\n explicitlySizedColumnIds,\n fillMinWidth,\n getColumnLayout,\n };\n}\n\nfunction getColumnLayoutSize(column: Column) {\n return isUtilityColumnId(column.id) ? UTILITY_COLUMN_SIZE : column.getSize();\n}\n","import * as React from \"react\";\nimport type { ExpandedState, OnChangeFn, Row } from \"@tanstack/react-table\";\nimport { IconChevronDown } from \"../icons\";\nimport type {\n DataTableCardRendererProps,\n DataTableCardSizing,\n DataTableEditableRowsConfig,\n DataTableDetailPanel,\n DataTableLabels,\n DataTableProps,\n DataTableRowAction,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\nimport {\n isDataTableInteractiveTarget,\n toggleDataTableExpandedState,\n} from \"./data-table-utils\";\n\ntype DataTableCardViewProps = {\n rows: Array>;\n cardRenderer: (props: DataTableCardRendererProps) => React.ReactNode;\n cardSizing?: DataTableCardSizing;\n cardGridClassName?: string;\n cardClassName?: string;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n detailPanel?: DataTableDetailPanel;\n detailExpanded: ExpandedState;\n onDetailExpandedChange: OnChangeFn;\n hasCardTitle: boolean;\n rowSelection: Record;\n onRowSelectionChange: (rowSelection: Record) => void;\n enableRowSelection: boolean;\n editingRowId: string | null;\n onEditingRowIdChange: (rowId: string | null) => void;\n getRowClassName?: DataTableProps[\"getRowClassName\"];\n onRowClick?: (context: { row: TData; rowId: string }) => void | Promise;\n getRowDraggable?: (row: TData) => boolean;\n onRowDragStart?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n onRowDragEnd?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n isLoading?: boolean;\n loadingRowCount?: number;\n labels: DataTableLabels;\n};\n\ntype DataTableRowActionsComponent = (props: {\n row: TData;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n onStartEditing: () => void;\n onCancelEditing: () => void;\n labels: DataTableLabels;\n}) => React.ReactElement | null;\n\nexport function createDataTableCardView(\n ui: DataTableUiKit,\n DataTableRowActions: DataTableRowActionsComponent,\n) {\n const uiClassNames = ui.classNames ?? {};\n const { Button, Card, CardContent, CardHeader, Checkbox, Skeleton } = ui;\n\n return function DataTableCardView({\n rows,\n cardRenderer,\n cardSizing = \"fixed\",\n cardGridClassName,\n cardClassName,\n rowActions,\n editableRows,\n detailPanel,\n detailExpanded,\n onDetailExpandedChange,\n hasCardTitle,\n rowSelection,\n onRowSelectionChange,\n enableRowSelection,\n editingRowId,\n onEditingRowIdChange,\n getRowClassName,\n onRowClick,\n getRowDraggable,\n onRowDragStart,\n onRowDragEnd,\n isLoading = false,\n loadingRowCount = 5,\n labels,\n }: DataTableCardViewProps) {\n const resolvedCardSizing = cardSizing ?? \"fixed\";\n const resolvedCardGridClassName =\n cardGridClassName\n ? cn(\"grid\", cardGridClassName)\n : getCardGridClassName(resolvedCardSizing);\n const cardGridClasses = cn(\n \"min-h-0 w-full gap-4 p-1\",\n uiClassNames.cardGrid,\n resolvedCardGridClassName,\n );\n const cardItemClasses = (stateClassName?: string) =>\n cn(\n \"relative min-w-0 max-w-full gap-0 overflow-hidden bg-transparent p-0\",\n getCardItemClassName(resolvedCardSizing),\n uiClassNames.cardItem,\n cardClassName,\n stateClassName,\n );\n\n if (isLoading) {\n return (\n \n {Array.from({ length: Math.max(1, loadingRowCount) }, (_, index) => (\n \n {hasCardTitle ? (\n \n \n \n \n ) : null}\n \n \n \n \n \n \n \n ))}\n \n );\n }\n\n return (\n \n {rows.map((row) => {\n const rowId = row.id;\n const originalRow = row.original;\n const isSelected = Boolean(rowSelection[rowId]);\n const isEditing = editingRowId === rowId;\n const hasCardActions = rowActions.length > 0 || Boolean(editableRows);\n const canExpandDetail = Boolean(\n detailPanel && (detailPanel.getRowCanExpand?.(originalRow) ?? true),\n );\n const showCardGradient =\n enableRowSelection || hasCardActions || hasCardTitle;\n const showCardOverlayControls =\n enableRowSelection ||\n hasCardActions ||\n row.getCanExpand() ||\n canExpandDetail;\n const handleCardActivate = () => {\n if (!onRowClick) {\n return;\n }\n\n void onRowClick({ row: originalRow, rowId });\n };\n\n return (\n ) => {\n onRowDragStart?.({ row: originalRow, rowId, event });\n }}\n onDragEnd={(event: React.DragEvent) => {\n onRowDragEnd?.({ row: originalRow, rowId, event });\n }}\n >\n {showCardGradient ? (\n \n ) : null}\n *]:min-w-0\",\n getCardRendererClassName(resolvedCardSizing),\n onRowClick && \"cursor-pointer focus-visible:outline-none\",\n )}\n onClick={(event: React.MouseEvent) => {\n if (\n isDataTableInteractiveTarget(\n event.target,\n event.currentTarget,\n )\n ) {\n return;\n }\n\n handleCardActivate();\n }}\n onKeyDown={(event: React.KeyboardEvent) => {\n if (\n isDataTableInteractiveTarget(\n event.target,\n event.currentTarget,\n )\n ) {\n return;\n }\n\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n handleCardActivate();\n }\n }}\n >\n {cardRenderer({\n row: originalRow,\n rowId,\n depth: row.depth,\n canExpandSubRows: row.getCanExpand(),\n isSubRowsExpanded: row.getIsExpanded(),\n toggleSubRowsExpanded: () => row.toggleExpanded(),\n isSelected,\n onSelectedChange: (nextValue) => {\n onRowSelectionChange(\n updateRowSelection(\n rowSelection,\n rowId,\n nextValue,\n row.getCanSelect(),\n row.getCanMultiSelect(),\n ),\n );\n },\n actions: rowActions,\n isEditing,\n startEditing: () => {\n onEditingRowIdChange(rowId);\n },\n cancelEditing: () => {\n onEditingRowIdChange(null);\n },\n })}\n \n {isEditing ||\n !detailPanel ||\n !(detailExpanded === true || Boolean(detailExpanded[row.id]))\n ? null\n : (\n \n {detailPanel.render({\n row: originalRow,\n rowId,\n tableRow: row,\n })}\n \n )}\n {showCardOverlayControls ? (\n \n {enableRowSelection ? (\n \n {\n onRowSelectionChange(\n updateRowSelection(\n rowSelection,\n rowId,\n checked === true,\n row.getCanSelect(),\n row.getCanMultiSelect(),\n ),\n );\n }}\n />\n \n ) : null}\n {row.getCanExpand() ? (\n
    \n row.toggleExpanded()}\n >\n \n \n
    \n ) : null}\n {canExpandDetail ? (\n \n {\n onDetailExpandedChange((current) =>\n toggleDataTableExpandedState(\n current,\n row.id,\n rows.map((item) => item.id),\n ),\n );\n }}\n >\n \n \n \n ) : null}\n
    \n {hasCardActions ? (\n \n {\n onEditingRowIdChange(rowId);\n }}\n onCancelEditing={() => {\n onEditingRowIdChange(null);\n }}\n labels={labels}\n />\n
    \n ) : null}\n
    \n ) : null}\n \n );\n })}\n \n );\n };\n}\n\nfunction getCardGridClassName(cardSizing: DataTableCardSizing) {\n switch (cardSizing) {\n case \"content\":\n return \"flex flex-wrap items-start justify-start\";\n case \"fluid\":\n return \"grid grid-cols-[repeat(auto-fit,minmax(min(18rem,100%),1fr))]\";\n case \"fixed\":\n default:\n return \"grid grid-cols-[repeat(auto-fill,minmax(min(18rem,100%),18rem))] justify-start\";\n }\n}\n\nfunction getCardItemClassName(cardSizing: DataTableCardSizing) {\n switch (cardSizing) {\n case \"content\":\n return \"w-fit\";\n case \"fluid\":\n return \"w-full\";\n case \"fixed\":\n default:\n return undefined;\n }\n}\n\nfunction getCardRendererClassName(cardSizing: DataTableCardSizing) {\n switch (cardSizing) {\n case \"content\":\n return \"w-fit\";\n case \"fluid\":\n return \"w-full flex-1 [&>*]:w-full\";\n case \"fixed\":\n default:\n return \"flex-1\";\n }\n}\n\nfunction updateRowSelection(\n rowSelection: Record,\n rowId: string,\n isSelected: boolean,\n canSelect: boolean,\n canMultiSelect: boolean,\n) {\n if (!canSelect) {\n return rowSelection;\n }\n\n if (isSelected) {\n return canMultiSelect\n ? {\n ...rowSelection,\n [rowId]: true,\n }\n : { [rowId]: true };\n }\n\n if (!rowSelection[rowId]) {\n return rowSelection;\n }\n\n const nextSelection = { ...rowSelection };\n delete nextSelection[rowId];\n return nextSelection;\n}\n","import { IconInbox } from \"../icons\";\nimport type { DataTableUiKit } from \"../ui-kit\";\n\nexport function createDataTableEmptyState(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n } = ui;\n\n return function DataTableEmptyState({\n title = \"No rows found\",\n description = \"Adjust your filters or create a new record to populate this table.\",\n }: {\n title?: string;\n description?: string;\n }) {\n return (\n \n \n \n \n \n {title}\n {description}\n \n \n \n );\n };\n}\n","import * as React from \"react\";\nimport { IconDatabase } from \"../icons\";\nimport type { DataTableLabels } from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\ntype DataTablePaginationProps = {\n pageIndex: number;\n pageCount: number;\n pageCountKnown: boolean;\n pageSize: number;\n totalRowCount?: number;\n rowsPerPageOptions: Array;\n onPageIndexChange: (pageIndex: number) => void;\n onPageSizeChange: (pageSize: number) => void;\n labels: DataTableLabels;\n};\n\nexport function createDataTablePagination(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectTrigger,\n SelectValue,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n function DataTablePagination({\n pageIndex,\n pageCount,\n pageCountKnown,\n pageSize,\n totalRowCount,\n rowsPerPageOptions,\n onPageIndexChange,\n onPageSizeChange,\n labels,\n }: DataTablePaginationProps) {\n const pages = pageCountKnown\n ? getVisiblePages(pageIndex, Math.max(1, pageCount))\n : [];\n const canGoPrevious = pageIndex > 0;\n const canGoNext = pageIndex + 1 < pageCount;\n const lastPageIndex = Math.max(0, pageCount - 1);\n\n return (\n
    \n \n \n {labels.recordsPerPage}\n \n {\n onPageSizeChange(Number(value));\n }}\n >\n \n \n \n \n \n {rowsPerPageOptions.map((option) => (\n \n {option}\n \n ))}\n \n \n \n
    \n\n {totalRowCount !== undefined ? (\n
    \n \n \n {totalRowCount}\n \n {labels.totalRecords(totalRowCount)}\n \n
    \n \n ) : null}\n\n
    \n \n {pageCountKnown\n ? labels.pageStatus(pageIndex, Math.max(1, pageCount))\n : (\n labels.pageStatusUnknown ??\n DATA_TABLE_DEFAULT_LABELS.pageStatusUnknown\n )(pageIndex)}\n
    \n \n \n \n \n \n ) => {\n event.preventDefault();\n if (canGoPrevious) {\n onPageIndexChange(0);\n }\n }}\n text={labels.firstPage}\n />\n \n {labels.firstPage}\n \n \n \n \n \n ) => {\n event.preventDefault();\n if (canGoPrevious) {\n onPageIndexChange(pageIndex - 1);\n }\n }}\n text={labels.previousPage}\n />\n \n {labels.previousPage}\n \n \n {pages.map((item, index) => (\n \n {item === \"ellipsis\" ? (\n \n ) : (\n ) => {\n event.preventDefault();\n onPageIndexChange(item - 1);\n }}\n >\n {item}\n \n )}\n \n ))}\n \n \n \n ) => {\n event.preventDefault();\n if (canGoNext) {\n onPageIndexChange(pageIndex + 1);\n }\n }}\n text={labels.nextPage}\n />\n \n {labels.nextPage}\n \n \n {pageCountKnown ? (\n \n \n \n ,\n ) => {\n event.preventDefault();\n if (canGoNext) {\n onPageIndexChange(lastPageIndex);\n }\n }}\n />\n \n {labels.lastPage}\n \n \n ) : null}\n \n \n \n \n );\n }\n\n function DataTableFooter(props: DataTablePaginationProps) {\n return (\n \n \n \n );\n }\n\n return {\n DataTableFooter,\n DataTablePagination,\n };\n}\n\nfunction getVisiblePages(currentPageIndex: number, pageCount: number) {\n const currentPage = currentPageIndex + 1;\n const pages = new Set([1, pageCount]);\n\n for (\n let page = Math.max(1, currentPage - 2);\n page <= Math.min(pageCount, currentPage + 2);\n page += 1\n ) {\n pages.add(page);\n }\n\n const orderedPages = Array.from(pages).sort((left, right) => left - right);\n const items: Array = [];\n\n for (let index = 0; index < orderedPages.length; index += 1) {\n const page = orderedPages[index];\n const previous = orderedPages[index - 1];\n\n if (previous && page - previous > 1) {\n items.push(\"ellipsis\");\n }\n\n items.push(page);\n }\n\n return items;\n}\n","import * as React from \"react\";\nimport { IconDots, IconEdit, IconX } from \"../icons\";\nimport type {\n DataTableEditableRowsConfig,\n DataTableLabels,\n DataTableRowAction,\n} from \"../types\";\nimport type { RowPinningPosition } from \"@tanstack/react-table\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { canEditRow, canUseRowAction, resolveRowActionLabel } from \"../types\";\n\ntype DataTableRowActionsProps = {\n row: TData;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n onStartEditing: () => void;\n onCancelEditing: () => void;\n labels: DataTableLabels;\n rowPinning?: {\n canPin: boolean;\n position: RowPinningPosition;\n pin: (position: RowPinningPosition) => void;\n };\n};\n\nexport function createDataTableRowActions(ui: DataTableUiKit) {\n const {\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n return function DataTableRowActions({\n row,\n rowActions,\n editableRows,\n isEditing,\n onStartEditing,\n onCancelEditing,\n labels,\n rowPinning,\n }: DataTableRowActionsProps) {\n const actions = rowActions.filter((action) => canUseRowAction(action, row));\n const stopRowClickPropagation = React.useCallback(\n (event: React.SyntheticEvent) => {\n event.stopPropagation();\n },\n [],\n );\n\n if (isEditing) {\n return (\n \n \n \n \n {labels.cancelEdit}\n \n \n {labels.cancelEdit}\n \n );\n }\n\n const allowEdit = canEditRow(editableRows, row);\n const canPin = rowPinning?.canPin ?? false;\n if (!actions.length && !allowEdit && !canPin) {\n return null;\n }\n\n return (\n \n \n \n \n \n \n {labels.rowActions}\n \n \n \n {labels.rowActions}\n \n \n {allowEdit ? (\n \n ) => {\n event.stopPropagation();\n onStartEditing();\n }}\n >\n \n {labels.editRow}\n \n \n ) : null}\n {allowEdit && (actions.length || canPin) ? : null}\n {canPin ? (\n \n {rowPinning?.position ? (\n ) => {\n event.stopPropagation();\n rowPinning.pin(false);\n }}\n >\n {labels.unpinRow}\n \n ) : (\n <>\n ) => {\n event.stopPropagation();\n rowPinning?.pin(\"top\");\n }}\n >\n {labels.pinRowToTop}\n \n ) => {\n event.stopPropagation();\n rowPinning?.pin(\"bottom\");\n }}\n >\n {labels.pinRowToBottom}\n \n \n )}\n \n ) : null}\n {canPin && actions.length ? : null}\n {actions.length ? (\n \n {actions.map((action) => {\n const Icon = action.icon;\n return (\n ) => {\n event.stopPropagation();\n void action.onClick(row);\n }}\n >\n {Icon ? : null}\n {resolveRowActionLabel(action.label, row)}\n \n );\n })}\n \n ) : null}\n \n \n );\n };\n}\n","import * as React from \"react\";\nimport type { Table as TanStackTable } from \"@tanstack/react-table\";\nimport {\n IconAdjustmentsHorizontal,\n IconLayoutGrid,\n IconList,\n IconSearch,\n IconX,\n} from \"../icons\";\nimport type {\n DataTableColumnFilterType,\n DataTableColumnFixed,\n DataTableColumnVisibilityOption,\n DataTableDensity,\n DataTableLabels,\n DataTableSavedView,\n DataTableSelectionAction,\n DataTableToolbarAction,\n DataTableToolbarVisibility,\n DataTableViewMode,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\nconst LazyToolbarDataOperations = React.lazy(\n () => import(\"./data-table-toolbar-operations\"),\n);\n\nexport type DataTableToolbarColumnFilter = {\n id: string;\n label: string;\n type: DataTableColumnFilterType;\n value: unknown;\n placeholder?: string;\n options: Array<{ label: string; value: string; count?: number; disabled?: boolean }>;\n searchable?: boolean;\n searchPlaceholder?: string;\n trueLabel?: string;\n falseLabel?: string;\n min?: number | string;\n max?: number | string;\n step?: number;\n};\n\ntype DataTableToolbarProps = {\n title?: string;\n titleId?: string;\n description?: string;\n descriptionId?: string;\n toolbarQueryValue: string;\n toolbarQueryPlaceholder: string;\n onToolbarQueryValueChange: (value: string) => void;\n customToolbar?: React.ReactNode;\n compactToolbar?: React.ReactNode;\n viewMode: DataTableViewMode;\n onViewModeChange?: (viewMode: DataTableViewMode) => void;\n enableViewToggle: boolean;\n toolbarActions: Array>;\n selectionActions: Array>;\n selectedRows: Array;\n selectedRowIds: Array;\n showHiddenRows: boolean;\n hiddenRowsLabel?: string;\n onShowHiddenRowsChange?: (showHiddenRows: boolean) => void;\n allRows: Array;\n columnVisibilityOptions: Array;\n onColumnVisibilityChange?: (columnId: string, visible: boolean) => void;\n enableColumnPinning: boolean;\n onColumnPinningChange: (columnId: string, side: DataTableColumnFixed | false) => void;\n columnFilters: Array;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n onClearColumnFilters: () => void;\n density: DataTableDensity;\n onDensityChange: (density: DataTableDensity) => void;\n enableDensityToggle: boolean;\n labels: Required;\n toolbarVisibility?: DataTableToolbarVisibility;\n openFileDialog?: () => void;\n enableGrouping: boolean;\n enableToolbarColumnChooser: boolean;\n enableToolbarFilterChips: boolean;\n enableToolbarResetLayout: boolean;\n enableToolbarSavedViews: boolean;\n savedViews: Array;\n onResetColumnLayout: () => void;\n onCreateSavedView: (name: string) => DataTableSavedView | undefined;\n onApplySavedView: (id: string) => boolean;\n onRenameSavedView: (id: string, name: string) => DataTableSavedView | undefined;\n onDeleteSavedView: (id: string) => boolean;\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n table: TanStackTable;\n};\n\nexport function createDataTableToolbar(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Button,\n ButtonGroup,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n return function DataTableToolbar({\n title,\n titleId,\n description,\n descriptionId,\n toolbarQueryValue,\n toolbarQueryPlaceholder,\n onToolbarQueryValueChange,\n customToolbar,\n compactToolbar,\n viewMode,\n onViewModeChange,\n enableViewToggle,\n toolbarActions,\n selectionActions,\n selectedRows,\n selectedRowIds,\n showHiddenRows,\n hiddenRowsLabel,\n onShowHiddenRowsChange,\n allRows,\n columnVisibilityOptions,\n onColumnVisibilityChange,\n enableColumnPinning,\n onColumnPinningChange,\n columnFilters,\n onColumnFilterChange,\n onClearColumnFilters,\n density,\n onDensityChange,\n enableDensityToggle,\n labels,\n toolbarVisibility,\n openFileDialog,\n enableGrouping,\n enableToolbarColumnChooser,\n enableToolbarFilterChips,\n enableToolbarResetLayout,\n enableToolbarSavedViews,\n savedViews,\n onResetColumnLayout,\n onCreateSavedView,\n onApplySavedView,\n onRenameSavedView,\n onDeleteSavedView,\n reorderColumn,\n table,\n }: DataTableToolbarProps) {\n const compactSearchInputRef = React.useRef(null);\n const [isCompactSearchVisible, setIsCompactSearchVisible] =\n React.useState(false);\n const compactToolbarIconButtonClassName =\n uiClassNames.toolbarCompactIconButton ?? \"\";\n const primaryActions = toolbarActions.filter(\n (action) => (action.placement ?? \"primary\") === \"primary\",\n );\n const trailingActions = toolbarActions.filter(\n (action) => action.placement === \"trailing\",\n );\n const showTitle = toolbarVisibility?.title ?? true;\n const showSearch = toolbarVisibility?.search ?? true;\n const showActions = toolbarVisibility?.actions ?? true;\n const showTrailingActions = toolbarVisibility?.trailingActions ?? true;\n const showOptions = toolbarVisibility?.options ?? true;\n const showViewToggle = toolbarVisibility?.viewToggle ?? true;\n const showCustomToolbar = toolbarVisibility?.customToolbar ?? true;\n const hasVisibleTitle = showTitle && Boolean(title || description);\n const hasVisibleSearch = showSearch;\n const hasVisiblePrimaryActions = showActions && primaryActions.length > 0;\n const hasVisibleSelectionActions =\n selectedRowIds.length > 0 && selectionActions.length > 0;\n const hasVisibleOptions =\n showOptions &&\n (columnVisibilityOptions.some((column) => column.canHide) ||\n Boolean(onShowHiddenRowsChange && hiddenRowsLabel) ||\n enableColumnPinning ||\n enableDensityToggle ||\n enableGrouping ||\n enableToolbarColumnChooser ||\n enableToolbarResetLayout ||\n enableToolbarSavedViews);\n const hasToolbarOperationsMenu =\n enableToolbarColumnChooser ||\n enableToolbarResetLayout ||\n enableToolbarSavedViews;\n const activeColumnFilters = columnFilters.filter((filter) =>\n hasColumnFilterValue(filter.value),\n );\n const toolbarOperationsUi = {\n Button,\n DropdownMenuCheckboxItem,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n };\n const renderToolbarDataOperations = (placement: \"menu\" | \"chips\") => (\n \n }\n onResetColumnLayout={onResetColumnLayout}\n savedViews={savedViews}\n onCreateSavedView={onCreateSavedView}\n onApplySavedView={onApplySavedView}\n onRenameSavedView={onRenameSavedView}\n onDeleteSavedView={onDeleteSavedView}\n toolbarQueryValue={toolbarQueryValue}\n onToolbarQueryValueChange={onToolbarQueryValueChange}\n activeColumnFilters={activeColumnFilters}\n onColumnFilterChange={onColumnFilterChange}\n onClearColumnFilters={onClearColumnFilters}\n />\n \n );\n const groupableColumns = table\n .getAllLeafColumns()\n .filter(\n (column) =>\n !column.id.startsWith(\"__\") &&\n column.getCanGroup(),\n );\n const groupedColumns = table.getState().grouping.flatMap((id) => {\n const column = table.getColumn(id);\n return column ? [column] : [];\n });\n const hasVisibleViewToggle =\n showViewToggle && enableViewToggle && Boolean(onViewModeChange);\n const hasVisibleTrailingActions =\n showTrailingActions && trailingActions.length > 0;\n const hasVisibleCustomToolbar = showCustomToolbar && Boolean(customToolbar);\n const hasVisibleCompactToolbar =\n showCustomToolbar && Boolean(compactToolbar ?? customToolbar);\n const selectedRowCountLabel = labels.selectedRows(selectedRowIds.length);\n\n React.useEffect(() => {\n if (!isCompactSearchVisible) {\n return;\n }\n\n compactSearchInputRef.current?.focus();\n }, [isCompactSearchVisible]);\n\n if (\n !hasVisibleTitle &&\n !hasVisibleSearch &&\n !hasVisiblePrimaryActions &&\n !hasVisibleSelectionActions &&\n !hasVisibleOptions &&\n !hasVisibleViewToggle &&\n !hasVisibleTrailingActions &&\n !hasVisibleCustomToolbar &&\n !hasVisibleCompactToolbar\n ) {\n return null;\n }\n\n return (\n
    \n {showTitle && (title || description) ? (\n
    \n {title ? (\n \n {title}\n \n ) : null}\n {description ? (\n \n {description}\n

    \n ) : null}\n
    \n ) : null}\n\n
    \n \n {showSearch ? (\n <>\n
    \n \n ) => {\n onToolbarQueryValueChange(event.target.value);\n }}\n placeholder={toolbarQueryPlaceholder}\n />\n \n \n \n {toolbarQueryValue ? (\n \n {\n onToolbarQueryValueChange(\"\");\n }}\n aria-label={labels.clearSearch}\n title={labels.clearSearch}\n >\n \n \n \n ) : null}\n \n
    \n \n \n {\n setIsCompactSearchVisible((current) => !current);\n }}\n >\n \n {labels.searchTable}\n \n \n {labels.searchTable}\n \n \n ) : null}\n\n {showActions ? (\n
    \n {primaryActions.map((action) => {\n const collapsesToIcon =\n !action.iconOnly && Boolean(action.icon);\n const button = (\n {\n void action.onClick({\n rows: allRows,\n openFileDialog,\n });\n }}\n disabled={action.disabled}\n aria-label={action.label}\n title={action.iconOnly ? undefined : action.label}\n >\n {action.icon ? : null}\n {action.iconOnly ? (\n {action.label}\n ) : collapsesToIcon ? (\n \n {action.label}\n \n ) : (\n {action.label}\n )}\n \n );\n\n return action.iconOnly ? (\n \n {button}\n {action.label}\n \n ) : (\n button\n );\n })}\n
    \n ) : null}\n\n {hasVisibleCompactToolbar ? (\n \n {compactToolbar ?? customToolbar}\n
    \n ) : null}\n\n
    \n\n \n {selectedRowIds.length ? (\n \n {selectedRowCountLabel}\n
    \n ) : null}\n {selectedRowIds.length\n ? selectionActions.map((action) => {\n const Icon = action.icon;\n const context = {\n rows: selectedRows,\n rowIds: selectedRowIds,\n };\n const disabled =\n typeof action.disabled === \"function\"\n ? action.disabled(selectedRows, context)\n : action.disabled;\n\n return (\n \n \n {\n void action.onClick(context);\n }}\n aria-label={action.label}\n >\n {Icon ? : null}\n {action.label}\n \n \n {action.label}\n \n );\n })\n : null}\n\n {hasVisibleOptions ? (\n \n \n \n \n {labels.tableOptions}\n \n \n \n {labels.tableOptions}\n \n {onShowHiddenRowsChange && hiddenRowsLabel ? (\n {\n onShowHiddenRowsChange(checked === true);\n }}\n >\n {labels.showHiddenRows(hiddenRowsLabel)}\n \n ) : null}\n \n {enableDensityToggle ? (\n <>\n \n {labels.density}\n \n {(\n [\n [\"compact\", labels.compactDensity],\n [\"comfortable\", labels.comfortableDensity],\n [\"spacious\", labels.spaciousDensity],\n ] as const\n ).map(([nextDensity, label]) => (\n {\n onDensityChange(nextDensity);\n }}\n >\n {label}\n \n ))}\n \n \n ) : null}\n {hasToolbarOperationsMenu\n ? renderToolbarDataOperations(\"menu\")\n : null}\n {!enableToolbarColumnChooser &&\n columnVisibilityOptions.some((column) => column.canHide) ? (\n <>\n \n {labels.columns}\n \n {columnVisibilityOptions\n .filter((column) => column.canHide)\n .map((column) => (\n {\n onColumnVisibilityChange?.(\n column.id,\n checked === true,\n );\n }}\n >\n {column.label}\n \n ))}\n \n \n ) : null}\n {enableColumnPinning && !enableToolbarColumnChooser ? (\n <>\n \n \n {labels.pinLeft} / {labels.pinRight}\n \n \n {columnVisibilityOptions.map((column) => (\n {\n event.preventDefault();\n }}\n >\n \n {column.label}\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, \"left\");\n }}\n >\n L\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, \"right\");\n }}\n >\n R\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, false);\n }}\n >\n -\n \n \n ))}\n \n \n ) : null}\n {enableGrouping && groupableColumns.length ? (\n <>\n \n {labels.grouping}\n \n {groupableColumns.map((column) => {\n const columnLabel =\n typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : column.id;\n const isGrouped = column.getIsGrouped();\n return (\n {\n column.toggleGrouping();\n }}\n >\n {isGrouped\n ? labels.ungroup(columnLabel)\n : labels.groupBy(columnLabel)}\n \n );\n })}\n \n \n ) : null}\n \n \n ) : null}\n\n {showViewToggle && enableViewToggle && onViewModeChange ? (\n \n \n \n {\n onViewModeChange(\"table\");\n }}\n >\n \n \n {labels.switchToTableView ??\n DATA_TABLE_DEFAULT_LABELS.switchToTableView}\n \n \n \n \n {labels.tableView ??\n DATA_TABLE_DEFAULT_LABELS.tableView}\n \n \n \n \n {\n onViewModeChange(\"card\");\n }}\n >\n \n \n {labels.switchToCardView ??\n DATA_TABLE_DEFAULT_LABELS.switchToCardView}\n \n \n \n \n {labels.cardView ??\n DATA_TABLE_DEFAULT_LABELS.cardView}\n \n \n \n ) : null}\n\n {showTrailingActions\n ? trailingActions.map((action) => {\n const collapsesToIcon =\n !action.iconOnly && Boolean(action.icon);\n const button = (\n {\n void action.onClick({\n rows: allRows,\n openFileDialog,\n });\n }}\n disabled={action.disabled}\n aria-label={action.label}\n title={action.iconOnly ? undefined : action.label}\n className={`size-7 shrink-0 ${action.iconOnly ? \"\" : `${collapsesToIcon ? \"px-0 @min-[768px]/data-table:px-2.5\" : \"\"} @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit`} ${action.iconOnly || collapsesToIcon ? compactToolbarIconButtonClassName : \"\"} ${uiClassNames.toolbarInputButton ?? \"\"}`}\n >\n {action.icon ? (\n \n ) : null}\n {action.iconOnly ? (\n {action.label}\n ) : collapsesToIcon ? (\n \n {action.label}\n \n ) : (\n {action.label}\n )}\n \n );\n\n return action.iconOnly ? (\n \n {button}\n {action.label}\n \n ) : (\n button\n );\n })\n : null}\n
    \n \n\n {showSearch && isCompactSearchVisible ? (\n \n \n ) => {\n onToolbarQueryValueChange(event.target.value);\n }}\n placeholder={toolbarQueryPlaceholder}\n />\n \n \n \n {toolbarQueryValue ? (\n \n {\n onToolbarQueryValueChange(\"\");\n }}\n aria-label={labels.clearSearch}\n title={labels.clearSearch}\n >\n \n \n \n ) : null}\n \n \n ) : null}\n\n {columnFilters.length ? (\n \n {columnFilters.map((filter) => (\n \n ))}\n {columnFilters.some((filter) =>\n hasColumnFilterValue(filter.value),\n ) ? (\n \n {labels.clearFilters}\n \n ) : null}\n \n ) : null}\n\n {enableToolbarFilterChips\n ? renderToolbarDataOperations(\"chips\")\n : null}\n\n {enableGrouping && groupedColumns.length ? (\n \n {labels.grouping}:\n {groupedColumns.map((column, groupingIndex) => {\n const columnLabel =\n typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : column.id;\n const moveGrouping = (nextIndex: number) => {\n const nextGrouping = [...table.getState().grouping];\n const [groupingId] = nextGrouping.splice(groupingIndex, 1);\n if (groupingId === undefined) return;\n nextGrouping.splice(nextIndex, 0, groupingId);\n table.setGrouping(nextGrouping);\n };\n return (\n \n moveGrouping(groupingIndex - 1)}\n aria-label={labels.moveGroupingEarlier(columnLabel)}\n >\n \n \n column.toggleGrouping()}\n aria-label={labels.removeGrouping(columnLabel)}\n >\n {columnLabel} ×\n \n moveGrouping(groupingIndex + 1)}\n aria-label={labels.moveGroupingLater(columnLabel)}\n >\n \n \n \n );\n })}\n \n ) : null}\n\n \n\n {showCustomToolbar && customToolbar ? (\n \n {customToolbar}\n \n ) : null}\n \n );\n };\n\n function ToolbarColumnFilterControl({\n filter,\n labels,\n onColumnFilterChange,\n }: {\n filter: DataTableToolbarColumnFilter;\n labels: Required;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n }) {\n const [facetQuery, setFacetQuery] = React.useState(\"\");\n if (filter.type === \"text\") {\n return (\n \n ) => {\n onColumnFilterChange(filter.id, event.target.value);\n }}\n placeholder={filter.placeholder ?? filter.label}\n aria-label={`${labels.filters}: ${filter.label}`}\n />\n \n \n \n \n );\n }\n\n if (filter.type === \"numberRange\" || filter.type === \"dateRange\") {\n const range = normalizeToolbarRangeValue(filter.value);\n const inputType = filter.type === \"numberRange\" ? \"number\" : \"date\";\n const fromLabel =\n labels.filterFrom ?? DATA_TABLE_DEFAULT_LABELS.filterFrom;\n const toLabel = labels.filterTo ?? DATA_TABLE_DEFAULT_LABELS.filterTo;\n\n return (\n \n \n ) => {\n onColumnFilterChange(filter.id, {\n ...range,\n from: parseRangeInputValue(event.target.value, inputType),\n });\n }}\n aria-label={`${filter.label}: ${fromLabel}`}\n />\n {fromLabel}\n \n \n ) => {\n onColumnFilterChange(filter.id, {\n ...range,\n to: parseRangeInputValue(event.target.value, inputType),\n });\n }}\n aria-label={`${filter.label}: ${toLabel}`}\n />\n {toLabel}\n \n \n );\n }\n\n const isBoolean = filter.type === \"boolean\";\n const isFaceted = filter.type === \"faceted\";\n const booleanOptions = [\n {\n label:\n filter.trueLabel ??\n labels.filterTrue ??\n DATA_TABLE_DEFAULT_LABELS.filterTrue,\n value: \"true\",\n },\n {\n label:\n filter.falseLabel ??\n labels.filterFalse ??\n DATA_TABLE_DEFAULT_LABELS.filterFalse,\n value: \"false\",\n },\n ];\n const options: DataTableToolbarColumnFilter[\"options\"] = isBoolean\n ? booleanOptions\n : filter.options;\n const visibleOptions =\n isFaceted && facetQuery\n ? options.filter((option) =>\n option.label.toLocaleLowerCase().includes(facetQuery.toLocaleLowerCase()),\n )\n : options;\n const selectedValue =\n typeof filter.value === \"string\" || typeof filter.value === \"boolean\"\n ? String(filter.value)\n : \"\";\n const selectedValues = Array.isArray(filter.value)\n ? filter.value.map(String)\n : selectedValue\n ? [selectedValue]\n : [];\n const selectedLabel =\n selectedValues.length === 0\n ? filter.label\n : `${filter.label}: ${\n selectedValues.length === 1\n ? (options.find(\n (option) => option.value === String(selectedValues[0]),\n )?.label ?? selectedValues[0])\n : selectedValues.length\n }`;\n\n return (\n \n \n \n \n \n {filter.label}\n {isFaceted && filter.searchable !== false ? (\n
    \n \n ) => {\n setFacetQuery(event.target.value);\n }}\n placeholder={filter.searchPlaceholder ?? labels.facetSearch(filter.label)}\n aria-label={labels.facetSearch(filter.label)}\n />\n \n \n \n \n
    \n ) : null}\n \n {filter.type === \"select\" || isBoolean || isFaceted ? (\n {\n onColumnFilterChange(filter.id, \"\");\n }}\n >\n {labels.allFilterOptions ??\n DATA_TABLE_DEFAULT_LABELS.allFilterOptions}\n \n ) : null}\n {visibleOptions.map((option) => (\n {\n if (filter.type === \"select\" || isBoolean) {\n onColumnFilterChange(\n filter.id,\n checked === true ? option.value : \"\",\n );\n return;\n }\n\n const nextValues = new Set(selectedValues);\n if (checked === true) {\n nextValues.add(option.value);\n } else {\n nextValues.delete(option.value);\n }\n onColumnFilterChange(filter.id, Array.from(nextValues));\n }}\n >\n {option.label}\n {option.count !== undefined ? (\n {option.count}\n ) : null}\n \n ))}\n \n
    \n
    \n );\n }\n}\n\nfunction hasColumnFilterValue(value: unknown) {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n\n if (value && typeof value === \"object\") {\n if (\"from\" in value || \"to\" in value) {\n return Object.values(value).some(hasColumnFilterValue);\n }\n\n return true;\n }\n\n return value !== undefined && value !== null && value !== \"\";\n}\n\nfunction normalizeToolbarRangeValue(value: unknown): {\n from?: number | string;\n to?: number | string;\n} {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return {};\n }\n\n const range = value as { from?: unknown; to?: unknown };\n return {\n ...(typeof range.from === \"number\" || typeof range.from === \"string\"\n ? { from: range.from }\n : {}),\n ...(typeof range.to === \"number\" || typeof range.to === \"string\"\n ? { to: range.to }\n : {}),\n };\n}\n\nfunction parseRangeInputValue(value: string, inputType: \"number\" | \"date\") {\n if (!value) {\n return undefined;\n }\n\n return inputType === \"number\" ? Number(value) : value;\n}\n","import * as React from \"react\";\nimport { DataTableTablePanel } from \"./data-table-table-panel\";\nimport type { DataTableTablePanelProps } from \"./data-table-table-panel\";\n\nconst LazyDataTableVirtualTablePanel = React.lazy(async () => {\n const module = await import(\"./data-table-virtual-table-panel\");\n return { default: module.DataTableVirtualTablePanel };\n}) as unknown as typeof DataTableTablePanel;\n\nexport function DataTableTablePanelRouter(\n props: DataTableTablePanelProps,\n) {\n const config =\n typeof props.virtualization === \"object\"\n ? props.virtualization\n : undefined;\n const enabled =\n props.virtualization === true || config?.enabled === true;\n\n if (!enabled) {\n return ;\n }\n\n return (\n \n }\n >\n \n \n );\n}\n","import type {\n DataTableSavedView,\n DataTableSavedViewSlice,\n DataTableSavedViewsChangeOperation,\n DataTableSavedViewsConfig,\n DataTableSavedViewsPayload,\n DataTableState,\n} from \"../types\";\n\nconst STORAGE_PREFIX = \"data-table-pro:saved-views:\";\nconst DEFAULT_VERSION = 1;\nconst DEFAULT_SLICES: Array = [\n \"sorting\",\n \"columnVisibility\",\n \"columnFilters\",\n \"grouping\",\n \"columnOrder\",\n \"columnPinning\",\n \"rowPinning\",\n \"columnSizing\",\n \"density\",\n \"viewMode\",\n \"showHiddenRows\",\n \"globalFilter\",\n];\nlet fallbackId = 0;\n\nexport function readDataTableSavedViews(\n config: DataTableSavedViewsConfig | undefined,\n): Array {\n const storage = resolveStorage(config);\n if (!config || !storage) {\n return [];\n }\n\n let serialized: string | null;\n try {\n serialized = storage.getItem(getStorageKey(config.key));\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return [];\n }\n if (!serialized) {\n return [];\n }\n\n let parsed: unknown;\n try {\n parsed = (config.deserialize ?? JSON.parse)(serialized);\n } catch (error) {\n config.onError?.({ error, operation: \"deserialize\" });\n return [];\n }\n\n if (!isRecord(parsed) || !(\"version\" in parsed) || !(\"views\" in parsed)) {\n return [];\n }\n\n const targetVersion = config.version ?? DEFAULT_VERSION;\n let candidate: unknown = parsed.views;\n if (parsed.version !== targetVersion) {\n if (!config.migrate) {\n return [];\n }\n try {\n candidate = config.migrate(\n { version: parsed.version, views: parsed.views },\n targetVersion,\n );\n } catch (error) {\n config.onError?.({ error, operation: \"migrate\" });\n return [];\n }\n }\n\n if (!Array.isArray(candidate)) {\n return [];\n }\n\n return candidate\n .map((view) => validateSavedView(view, config.slices))\n .filter((view): view is DataTableSavedView => Boolean(view));\n}\n\nexport function createDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n name: string,\n state: DataTableState,\n) {\n const normalizedName = name.trim();\n if (!config || !normalizedName) {\n return undefined;\n }\n\n const now = new Date().toISOString();\n const view: DataTableSavedView = {\n id: createSavedViewId(),\n name: normalizedName,\n createdAt: now,\n updatedAt: now,\n state: selectSavedViewSlices(state, config.slices),\n };\n const views = [...readDataTableSavedViews(config), view];\n return writeViews(config, views, \"create\") ? cloneSavedView(view) : undefined;\n}\n\nexport function renameDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n id: string,\n name: string,\n) {\n const normalizedName = name.trim();\n if (!config || !normalizedName) {\n return undefined;\n }\n\n let renamed: DataTableSavedView | undefined;\n const views = readDataTableSavedViews(config).map((view) => {\n if (view.id !== id) {\n return view;\n }\n renamed = {\n ...view,\n name: normalizedName,\n updatedAt: new Date().toISOString(),\n };\n return renamed;\n });\n if (!renamed) {\n return undefined;\n }\n\n return writeViews(config, views, \"rename\")\n ? cloneSavedView(renamed)\n : undefined;\n}\n\nexport function deleteDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n id: string,\n) {\n if (!config) {\n return false;\n }\n\n const current = readDataTableSavedViews(config);\n const views = current.filter((view) => view.id !== id);\n return views.length !== current.length && writeViews(config, views, \"delete\");\n}\n\nexport function clearDataTableSavedViews(\n config: DataTableSavedViewsConfig | undefined,\n) {\n const storage = resolveStorage(config);\n if (!config || !storage) {\n return false;\n }\n\n try {\n storage.removeItem(getStorageKey(config.key));\n } catch (error) {\n config.onError?.({ error, operation: \"remove\" });\n return false;\n }\n config.onChange?.([], \"clear\");\n return true;\n}\n\nfunction writeViews(\n config: DataTableSavedViewsConfig,\n views: Array,\n operation: DataTableSavedViewsChangeOperation,\n) {\n const storage = resolveStorage(config);\n if (!storage) {\n return false;\n }\n\n let serialized: string;\n try {\n const payload: DataTableSavedViewsPayload = {\n version: config.version ?? DEFAULT_VERSION,\n views,\n };\n serialized = (config.serialize ?? JSON.stringify)(payload);\n } catch (error) {\n config.onError?.({ error, operation: \"serialize\" });\n return false;\n }\n\n try {\n storage.setItem(getStorageKey(config.key), serialized);\n } catch (error) {\n config.onError?.({ error, operation: \"write\" });\n return false;\n }\n const snapshots = views.map(cloneSavedView);\n config.onChange?.(snapshots, operation);\n return true;\n}\n\nfunction selectSavedViewSlices(\n state: DataTableState,\n slices: Array | undefined,\n) {\n const selected = new Set(slices ?? DEFAULT_SLICES);\n const snapshot: Partial = {};\n for (const slice of Object.keys(state) as Array) {\n if (selected.has(slice)) {\n Object.assign(snapshot, {\n [slice]: cloneStateSlice(slice, state[slice]),\n });\n }\n }\n return snapshot;\n}\n\nfunction validateSavedView(\n value: unknown,\n slices: Array | undefined,\n): DataTableSavedView | undefined {\n if (\n !isRecord(value) ||\n typeof value.id !== \"string\" ||\n !value.id ||\n typeof value.name !== \"string\" ||\n !value.name.trim() ||\n typeof value.createdAt !== \"string\" ||\n typeof value.updatedAt !== \"string\"\n ) {\n return undefined;\n }\n\n return {\n id: value.id,\n name: value.name.trim(),\n createdAt: value.createdAt,\n updatedAt: value.updatedAt,\n state: validateState(value.state, slices),\n };\n}\n\nfunction validateState(\n value: unknown,\n slices: Array | undefined,\n) {\n if (!isRecord(value)) {\n return {};\n }\n\n const selected = new Set(slices ?? DEFAULT_SLICES);\n const state: Partial = {};\n const sorting = validateSorting(value.sorting);\n if (selected.has(\"sorting\") && sorting) state.sorting = sorting;\n const pagination = validatePagination(value.pagination);\n if (selected.has(\"pagination\") && pagination) state.pagination = pagination;\n const rowSelection = validateBooleanRecord(value.rowSelection);\n if (selected.has(\"rowSelection\") && rowSelection) {\n state.rowSelection = rowSelection;\n }\n const visibility = validateBooleanRecord(value.columnVisibility);\n if (selected.has(\"columnVisibility\") && visibility) {\n state.columnVisibility = visibility;\n }\n const filters = validateFilters(value.columnFilters);\n if (selected.has(\"columnFilters\") && filters) state.columnFilters = filters;\n const grouping = validateStringArray(value.grouping);\n if (selected.has(\"grouping\") && grouping) state.grouping = grouping;\n const expanded =\n value.expanded === true\n ? true\n : validateBooleanRecord(value.expanded);\n if (selected.has(\"expanded\") && expanded !== undefined) {\n state.expanded = expanded;\n }\n const order = validateStringArray(value.columnOrder);\n if (selected.has(\"columnOrder\") && order) state.columnOrder = order;\n const pinning = validatePinning(value.columnPinning);\n if (selected.has(\"columnPinning\") && pinning) {\n state.columnPinning = pinning;\n }\n const rowPinning = validateRowPinning(value.rowPinning);\n if (selected.has(\"rowPinning\") && rowPinning) {\n state.rowPinning = rowPinning;\n }\n const sizing = validateSizingRecord(value.columnSizing);\n if (selected.has(\"columnSizing\") && sizing) state.columnSizing = sizing;\n if (\n selected.has(\"density\") &&\n (value.density === \"compact\" ||\n value.density === \"comfortable\" ||\n value.density === \"spacious\")\n ) {\n state.density = value.density;\n }\n if (\n selected.has(\"viewMode\") &&\n (value.viewMode === \"table\" || value.viewMode === \"card\")\n ) {\n state.viewMode = value.viewMode;\n }\n if (selected.has(\"showHiddenRows\") && typeof value.showHiddenRows === \"boolean\") {\n state.showHiddenRows = value.showHiddenRows;\n }\n if (selected.has(\"globalFilter\") && typeof value.globalFilter === \"string\") {\n state.globalFilter = value.globalFilter;\n }\n return state;\n}\n\nfunction cloneSavedView(view: DataTableSavedView): DataTableSavedView {\n return {\n ...view,\n state: validateState(view.state, Object.keys(view.state) as Array),\n };\n}\n\nfunction cloneStateSlice(\n slice: DataTableSavedViewSlice,\n value: unknown,\n) {\n if (Array.isArray(value)) {\n return (value as Array).map((item) =>\n isRecord(item) ? { ...item } : item,\n );\n }\n if (isRecord(value)) {\n if (slice === \"columnPinning\" || slice === \"rowPinning\") {\n return {\n ...(slice === \"columnPinning\"\n ? {\n left: Array.isArray(value.left)\n ? [...(value.left as Array)]\n : undefined,\n right: Array.isArray(value.right)\n ? [...(value.right as Array)]\n : undefined,\n }\n : {\n top: Array.isArray(value.top)\n ? [...(value.top as Array)]\n : undefined,\n bottom: Array.isArray(value.bottom)\n ? [...(value.bottom as Array)]\n : undefined,\n }),\n };\n }\n return { ...value };\n }\n return value;\n}\n\nfunction validateSorting(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value\n .filter(\n (item): item is { id: string; desc?: boolean } =>\n isRecord(item) && typeof item.id === \"string\",\n )\n .map((item) => ({ id: item.id, desc: Boolean(item.desc) }));\n}\n\nfunction validatePagination(value: unknown) {\n if (\n !isRecord(value) ||\n !Number.isInteger(value.pageIndex) ||\n (value.pageIndex as number) < 0 ||\n !Number.isInteger(value.pageSize) ||\n (value.pageSize as number) < 1\n ) {\n return undefined;\n }\n return {\n pageIndex: value.pageIndex as number,\n pageSize: value.pageSize as number,\n };\n}\n\nfunction validateFilters(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value\n .filter(\n (item): item is { id: string; value: unknown } =>\n isRecord(item) &&\n typeof item.id === \"string\" &&\n Object.prototype.hasOwnProperty.call(item, \"value\"),\n )\n .map((item) => ({ id: item.id, value: item.value }));\n}\n\nfunction validatePinning(value: unknown) {\n if (!isRecord(value)) return undefined;\n return {\n left: validateStringArray(value.left) ?? [],\n right: validateStringArray(value.right) ?? [],\n };\n}\n\nfunction validateRowPinning(value: unknown) {\n if (!isRecord(value)) return undefined;\n return {\n top: validateStringArray(value.top) ?? [],\n bottom: validateStringArray(value.bottom) ?? [],\n };\n}\n\nfunction validateBooleanRecord(value: unknown) {\n if (!isRecord(value)) return undefined;\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, boolean] => typeof entry[1] === \"boolean\",\n ),\n );\n}\n\nfunction validateSizingRecord(value: unknown) {\n if (!isRecord(value)) return undefined;\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, number] =>\n typeof entry[1] === \"number\" &&\n Number.isFinite(entry[1]) &&\n entry[1] >= 0,\n ),\n );\n}\n\nfunction validateStringArray(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value.filter((item): item is string => typeof item === \"string\");\n}\n\nfunction resolveStorage(config: DataTableSavedViewsConfig | undefined) {\n if (!config) {\n return undefined;\n }\n if (config.storage) {\n return config.storage;\n }\n if (typeof window === \"undefined\") {\n return undefined;\n }\n try {\n return window.localStorage;\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return undefined;\n }\n}\n\nfunction createSavedViewId() {\n if (typeof globalThis.crypto?.randomUUID === \"function\") {\n return globalThis.crypto.randomUUID();\n }\n fallbackId += 1;\n return `view-${Date.now().toString(36)}-${fallbackId.toString(36)}`;\n}\n\nfunction getStorageKey(key: string) {\n return `${STORAGE_PREFIX}${key}`;\n}\n\nfunction isRecord(value: unknown): value is Record {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n","import * as React from \"react\";\nimport { IconDownload } from \"../icons\";\nimport type {\n ColumnFiltersState,\n ColumnPinningState,\n OnChangeFn,\n Table as TanStackTable,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableColumnFixed,\n DataTableLabels,\n DataTableProps,\n} from \"../types\";\nimport {\n exportDataTableCsv,\n getAccessorKey,\n getColumnId,\n getDataTableLeafColumns,\n hasFilterValue,\n normalizeColumnFilterOptions,\n startCase,\n} from \"./data-table-utils\";\n\nexport function useDataTableToolbarFeatures({\n columns,\n currentColumnFilters,\n currentColumnPinning,\n effectiveColumnVisibility,\n enableColumnFilters,\n handleColumnFiltersChange,\n handleColumnPinningChange,\n labels,\n table,\n toolbarActions,\n visibleData,\n csvExport,\n}: {\n columns: DataTableProps[\"columns\"];\n currentColumnFilters: ColumnFiltersState;\n currentColumnPinning: ColumnPinningState;\n effectiveColumnVisibility: VisibilityState;\n enableColumnFilters: boolean | undefined;\n handleColumnFiltersChange: OnChangeFn;\n handleColumnPinningChange: OnChangeFn;\n labels: DataTableLabels;\n table: TanStackTable;\n toolbarActions: DataTableProps[\"toolbarActions\"];\n visibleData: Array;\n csvExport: DataTableProps[\"csvExport\"];\n}) {\n const columnVisibilityOptions = React.useMemo(() => {\n return getDataTableLeafColumns(columns).map(({ column, index }) => {\n const id = getColumnId(column, index);\n const header = column.header;\n const accessorKey = getAccessorKey(column);\n const label =\n typeof header === \"string\"\n ? header\n : accessorKey\n ? startCase(accessorKey)\n : startCase(id);\n\n const pinned: false | DataTableColumnFixed =\n currentColumnPinning.left?.includes(id) === true\n ? \"left\"\n : currentColumnPinning.right?.includes(id) === true\n ? \"right\"\n : false;\n\n return {\n id,\n label,\n visible: effectiveColumnVisibility[id] !== false,\n canHide: column.enableHiding !== false,\n pinned,\n };\n });\n }, [columns, currentColumnPinning, effectiveColumnVisibility]);\n\n const toolbarColumnFilters = React.useMemo(() => {\n if (enableColumnFilters === false) {\n return [];\n }\n\n return getDataTableLeafColumns(columns).flatMap(({ column, index }) => {\n const filter = column.meta?.filter;\n if (!filter) {\n return [];\n }\n\n const id = getColumnId(column, index);\n const header = column.header;\n const accessorKey = getAccessorKey(column);\n const label =\n filter.label ??\n (typeof header === \"string\"\n ? header\n : accessorKey\n ? startCase(accessorKey)\n : startCase(id));\n const state = currentColumnFilters.find((item) => item.id === id);\n const configuredFacetOptions = filter.faceting?.options;\n const facetedMinMax =\n filter.type === \"numberRange\"\n ? table.getColumn(id)?.getFacetedMinMaxValues()\n : undefined;\n const rawOptions =\n filter.type === \"faceted\" && configuredFacetOptions\n ? typeof configuredFacetOptions === \"function\"\n ? configuredFacetOptions({ rows: visibleData })\n : configuredFacetOptions\n : filter.type === \"faceted\"\n ? Array.from(table.getColumn(id)?.getFacetedUniqueValues() ?? []).map(\n ([value, count]) => ({\n label:\n filter.faceting?.getOptionLabel?.(value as never) ??\n String(value),\n value: String(value),\n count,\n }),\n )\n : typeof filter.options === \"function\"\n ? filter.options({ rows: visibleData })\n : (filter.options ?? []);\n\n return [\n {\n id,\n label,\n type: filter.type,\n value: state?.value,\n placeholder: filter.placeholder,\n options: normalizeColumnFilterOptions(rawOptions),\n searchable: filter.faceting?.searchable,\n searchPlaceholder: filter.faceting?.searchPlaceholder,\n trueLabel: filter.trueLabel,\n falseLabel: filter.falseLabel,\n min: filter.min ?? facetedMinMax?.[0],\n max: filter.max ?? facetedMinMax?.[1],\n step: filter.step,\n },\n ];\n });\n }, [\n columns,\n currentColumnFilters,\n enableColumnFilters,\n table,\n visibleData,\n ]);\n\n const handleToolbarColumnFilterChange = React.useCallback(\n (columnId: string, value: unknown) => {\n handleColumnFiltersChange((current) => {\n const next = current.filter((filter) => filter.id !== columnId);\n if (hasFilterValue(value)) {\n next.push({ id: columnId, value });\n }\n return next;\n });\n },\n [handleColumnFiltersChange],\n );\n\n const handleClearColumnFilters = React.useCallback(() => {\n handleColumnFiltersChange([]);\n }, [handleColumnFiltersChange]);\n\n const handleToolbarColumnPinningChange = React.useCallback(\n (columnId: string, side: DataTableColumnFixed | false) => {\n handleColumnPinningChange((current) => {\n const left = (current.left ?? []).filter((id) => id !== columnId);\n const right = (current.right ?? []).filter((id) => id !== columnId);\n\n if (side === \"left\") {\n left.push(columnId);\n }\n if (side === \"right\") {\n right.push(columnId);\n }\n\n return { left, right };\n });\n },\n [handleColumnPinningChange],\n );\n\n const handleCsvExport = React.useCallback(() => {\n if (!csvExport) {\n return;\n }\n\n return exportDataTableCsv({\n csvExport,\n table,\n labels,\n });\n }, [csvExport, labels, table]);\n\n const effectiveToolbarActions = React.useMemo(() => {\n if (!csvExport) {\n return toolbarActions ?? [];\n }\n\n return [\n ...(toolbarActions ?? []),\n {\n key: \"__csv_export__\",\n label: labels.exportCsv,\n icon: IconDownload,\n placement: \"trailing\" as const,\n onClick: handleCsvExport,\n },\n ];\n }, [csvExport, handleCsvExport, labels.exportCsv, toolbarActions]);\n\n return {\n columnVisibilityOptions,\n effectiveToolbarActions,\n handleClearColumnFilters,\n handleToolbarColumnFilterChange,\n handleToolbarColumnPinningChange,\n toolbarColumnFilters,\n };\n}\n","import * as React from \"react\";\nimport type { DataTableProps } from \"../types\";\n\n/** Development-only guardrails for identities used by row models and caches. */\nexport function useDataTablePerformanceDiagnostics({\n columns,\n data,\n getRowId,\n}: Pick, \"columns\" | \"data\" | \"getRowId\">) {\n const previous = React.useRef({ columns, data, getRowId });\n const warned = React.useRef(new Set());\n\n React.useEffect(() => {\n if (!isDevelopmentEnvironment()) {\n return;\n }\n\n const last = previous.current;\n if (\n last.data !== data &&\n haveSameItems(last.data, data) &&\n !warned.current.has(\"data\")\n ) {\n warn(\n warned.current,\n \"data\",\n \"The data array identity changed. Keep rows immutable and memoize unchanged data so filtering, row models, and virtual measurements can be reused.\",\n );\n }\n if (\n last.columns !== columns &&\n haveSameItems(last.columns, columns) &&\n !warned.current.has(\"columns\")\n ) {\n warn(\n warned.current,\n \"columns\",\n \"The columns array identity changed. Memoize stable column definitions so the search index and table column model can be reused.\",\n );\n }\n if (last.getRowId !== getRowId && !warned.current.has(\"getRowId\")) {\n warn(\n warned.current,\n \"getRowId\",\n \"getRowId identity changed. Memoize it and return an immutable, unique id to preserve row state and virtual scroll anchoring.\",\n );\n }\n\n const ids = new Set();\n for (let index = 0; index < data.length; index += 1) {\n const id = getRowId(data[index]!, index);\n if (ids.has(id) && !warned.current.has(\"duplicate-row-id\")) {\n warn(\n warned.current,\n \"duplicate-row-id\",\n `Duplicate row id \"${id}\" detected. Row ids must be unique and immutable.`,\n );\n break;\n }\n ids.add(id);\n }\n previous.current = { columns, data, getRowId };\n }, [columns, data, getRowId]);\n}\n\nfunction haveSameItems(previous: Array, next: Array) {\n return (\n previous.length === next.length &&\n previous.every((item, index) => Object.is(item, next[index]))\n );\n}\n\nfunction warn(warned: Set, key: string, message: string) {\n warned.add(key);\n console.warn(`[data-table-pro] ${message}`);\n}\n\nfunction isDevelopmentEnvironment() {\n return (\n (globalThis as { process?: { env?: { NODE_ENV?: string } } }).process?.env\n ?.NODE_ENV !== \"production\"\n );\n}\n","import * as React from \"react\";\nimport { flushSync } from \"react-dom\";\nimport type {\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableActionErrorContext,\n DataTableApi,\n DataTableCellSelection,\n DataTableLabels,\n DataTableProps,\n DataTableState,\n DataTableStateOverlay as DataTableStateOverlayConfig,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { createDataTableCardView } from \"./create-data-table-card-view\";\nimport { createDataTableEmptyState } from \"./create-data-table-empty-state\";\nimport { createDataTablePagination } from \"./create-data-table-pagination\";\nimport { createDataTableRowActions } from \"./create-data-table-row-actions\";\nimport { createDataTableToolbar } from \"./create-data-table-toolbar\";\nimport { DataTableCardPanel as DefaultDataTableCardPanel } from \"./data-table-card-panel\";\nimport { DataTableFooterSection } from \"./data-table-footer-section\";\nimport { DataTableTablePanelRouter as DefaultDataTableTablePanel } from \"./data-table-table-panel-router\";\nimport { DataTableToolbarSection } from \"./data-table-toolbar-section\";\nimport {\n clearDataTableSavedViews,\n createDataTableSavedView,\n deleteDataTableSavedView,\n readDataTableSavedViews,\n renameDataTableSavedView,\n} from \"./data-table-saved-views\";\nimport { resolveDataTableLabels } from \"./data-table-labels\";\nimport { useDataTableColumns } from \"./use-data-table-columns\";\nimport { useControllableState } from \"./use-controllable-state\";\nimport { useDataTableInstance } from \"./use-data-table-instance\";\nimport { useDataTableScrollViewport } from \"./use-data-table-scroll-viewport\";\nimport {\n exportDataTableCsv,\n getColumnId,\n getDataTableColumnGroupPaths,\n getDataTableLeafColumns,\n getInitialColumnPinning,\n validateDataTableColumnIds,\n} from \"./data-table-utils\";\nimport { useDataTableState } from \"./use-data-table-state\";\nimport { clearDataTableColumnPrefs } from \"./use-data-table-column-prefs\";\nimport { useDataTableToolbarFeatures } from \"./use-data-table-toolbar-features\";\nimport { useColumnLayout } from \"./use-column-layout\";\nimport { useRowEditing } from \"./use-row-editing\";\nimport { useDataTablePerformanceDiagnostics } from \"./use-data-table-performance-diagnostics\";\n\nconst DataTableAutoPageSize = React.lazy(\n () => import(\"./data-table-auto-page-size\"),\n);\n\ntype CreateDataTableOptions = {\n CardPanel?: typeof DefaultDataTableCardPanel;\n TablePanel?: typeof DefaultDataTableTablePanel;\n};\n\nexport function createDataTable(ui: DataTableUiKit) {\n return createDataTableWithPanels(ui);\n}\n\nexport function createDataTableWithPanels(\n ui: DataTableUiKit,\n options: CreateDataTableOptions = {},\n) {\n const DataTableCardPanel =\n options.CardPanel ?? DefaultDataTableCardPanel;\n const DataTableTablePanel =\n options.TablePanel ?? DefaultDataTableTablePanel;\n const uiClassNames = ui.classNames ?? {};\n const {\n rootClassName,\n Button,\n Checkbox,\n Input,\n ScrollArea,\n ScrollBar,\n Skeleton,\n Table,\n TableBody,\n TableCell,\n TableFooter = \"tfoot\",\n TableHead,\n TableHeader,\n TableRow,\n Tooltip,\n TooltipContent,\n TooltipProvider = React.Fragment,\n TooltipTrigger,\n } = ui;\n const DataTableEmptyState = createDataTableEmptyState(ui);\n const DataTableRowActions = createDataTableRowActions(ui);\n const { DataTableFooter } = createDataTablePagination(ui);\n const DataTableToolbar = createDataTableToolbar(ui);\n const DataTableCardView = createDataTableCardView(ui, DataTableRowActions);\n const DataTableStateOverlay = React.lazy(async () => {\n const { createDataTableStateOverlay } = await import(\n \"./data-table-state-overlay\"\n );\n return { default: createDataTableStateOverlay(ui) };\n }) as unknown as (props: {\n labels: DataTableLabels;\n overlay: DataTableStateOverlayConfig;\n rows: Array;\n toolbarQueryValue: string;\n }) => React.ReactElement | null;\n const defaultColumn = {\n minSize: 80,\n size: 180,\n maxSize: 720,\n };\n\n return function DataTable({\n columns,\n data,\n getRowId,\n children,\n title,\n description,\n toolbarQueryValue,\n onToolbarQueryValueChange,\n toolbarQueryPlaceholder,\n toolbarQueryDebounceMs,\n manualFiltering = false,\n enableToolbarQueryFiltering = true,\n globalFilterFn,\n columnFilters,\n onColumnFiltersChange,\n enableColumnFilters,\n customToolbar,\n compactToolbar,\n rowsPerPageOptions = [10, 20, 50, 100],\n totalRowCount,\n hasNextPage,\n sorting,\n onSortingChange,\n manualSorting = false,\n grouping,\n onGroupingChange,\n manualGrouping = false,\n enableGrouping = false,\n groupedColumnMode = \"reorder\",\n aggregationFns,\n pageIndex,\n pageSize,\n autoPageSize = false,\n onPageIndexChange,\n onPageSizeChange,\n pageCount,\n manualPagination = false,\n rowSelection,\n onRowSelectionChange,\n enableRowSelection = false,\n enableMultiRowSelection = true,\n enableSubRowSelection = true,\n getRowCanSelect,\n rowSelectionSelectAllScope = \"page\",\n expanded,\n onExpandedChange,\n getSubRows,\n manualExpanding = false,\n paginateExpandedRows,\n filterFromLeafRows,\n maxLeafRowFilterDepth,\n detailPanel,\n getRowCanExpand,\n renderExpandedRow,\n columnOrder,\n onColumnOrderChange,\n enableColumnReordering = false,\n columnGroupHeaderHeight,\n columnPinning,\n onColumnPinningChange,\n enableColumnPinning = false,\n rowPinning,\n onRowPinningChange,\n enableRowPinning = false,\n keepPinnedRows = true,\n toolbarActions = [],\n selectionActions = [],\n rowActions = [],\n csvExport,\n clipboard,\n enableCellSelection = false,\n cellSelection,\n defaultCellSelection,\n onCellSelectionChange,\n gridCommands,\n density,\n onDensityChange,\n enableDensityToggle = false,\n columnPrefsKey,\n persistence,\n savedViews,\n toolbarDataOperations,\n initialState,\n state: unifiedState,\n onStateChange,\n apiRef,\n labels,\n summaryRows = [],\n cardRenderer,\n cardSizing,\n cardGridClassName,\n cardClassName,\n viewMode,\n onViewModeChange,\n enableViewToggle = false,\n enablePrint = false,\n enableFullscreen = false,\n emptyState,\n stateOverlay,\n isLoading = false,\n loadingRowCount,\n getRowLoadingState,\n hiddenRows,\n showHiddenRows,\n onShowHiddenRowsChange,\n infiniteScroll,\n editableRows,\n columnVisibility,\n onColumnVisibilityChange,\n columnSizing,\n onColumnSizingChange,\n enableColumnResizing = false,\n columnResizeMode = \"onEnd\",\n layoutMode = \"fill\",\n stickyHeader = true,\n showFooter = true,\n showToolbar = true,\n dir = \"ltr\",\n flexGrow = true,\n toolbarVisibility,\n className,\n tableClassName,\n tableContainerClassName,\n stripedRows = false,\n getRowClassName,\n onRowClick,\n onActionError,\n dragAndDrop,\n fileUpload,\n virtualization,\n accessibility,\n interactiveGrid,\n }: DataTableProps) {\n const containerRef = React.useRef(null);\n const fileInputRef = React.useRef(null);\n const tableScrollContainerRef = React.useRef(null);\n const draggedColumnIdRef = React.useRef(null);\n const tableRef = React.useRef | null>(null);\n const lastSelectedRowIdRef = React.useRef(null);\n const [toolbarSavedViewsVersion, setToolbarSavedViewsVersion] =\n React.useState(0);\n const generatedTitleId = React.useId();\n const generatedDescriptionId = React.useId();\n useDataTablePerformanceDiagnostics({ columns, data, getRowId });\n React.useMemo(() => validateDataTableColumnIds(columns), [columns]);\n const resolvedLabels = React.useMemo(\n () => resolveDataTableLabels(labels),\n [labels],\n );\n const toolbarOperations =\n toolbarDataOperations === true\n ? { columnChooser: true, savedViews: true, resetLayout: true }\n : toolbarDataOperations === false\n ? {}\n : (toolbarDataOperations ?? {});\n const gridMode =\n accessibility?.mode === \"grid\" ||\n interactiveGrid === true ||\n typeof interactiveGrid === \"object\";\n const [currentCellSelection, setCurrentCellSelection] =\n useControllableState({\n defaultValue: defaultCellSelection ?? null,\n onChange: onCellSelectionChange,\n value: cellSelection,\n });\n const resolvedToolbarQueryValue =\n toolbarQueryValue ?? unifiedState?.globalFilter;\n const resolvedSorting = sorting ?? unifiedState?.sorting;\n const resolvedGrouping = grouping ?? unifiedState?.grouping;\n const resolvedPageIndex =\n pageIndex ?? unifiedState?.pagination?.pageIndex;\n const resolvedPageSize = pageSize ?? unifiedState?.pagination?.pageSize;\n const resolvedRowSelection =\n rowSelection ?? unifiedState?.rowSelection;\n const resolvedColumnVisibility =\n columnVisibility ?? unifiedState?.columnVisibility;\n const resolvedColumnFilters =\n columnFilters ?? unifiedState?.columnFilters;\n const resolvedExpanded = expanded ?? unifiedState?.expanded;\n const resolvedColumnOrder =\n columnOrder ?? unifiedState?.columnOrder;\n const resolvedColumnPinning =\n columnPinning ?? unifiedState?.columnPinning;\n const resolvedRowPinning = rowPinning ?? unifiedState?.rowPinning;\n const resolvedColumnSizing =\n columnSizing ?? unifiedState?.columnSizing;\n const resolvedDensity = density ?? unifiedState?.density;\n const resolvedViewMode = viewMode ?? unifiedState?.viewMode;\n const resolvedShowHiddenRows =\n showHiddenRows ?? unifiedState?.showHiddenRows;\n const showTableHeading =\n showToolbar && (toolbarVisibility?.title ?? true);\n const titleId = showTableHeading && title ? generatedTitleId : undefined;\n const descriptionId =\n showTableHeading && description ? generatedDescriptionId : undefined;\n useDataTableStateConflictWarnings(unifiedState, {\n columnFilters: columnFilters !== undefined,\n columnOrder: columnOrder !== undefined,\n columnPinning: columnPinning !== undefined,\n rowPinning: rowPinning !== undefined,\n columnSizing: columnSizing !== undefined,\n columnVisibility: columnVisibility !== undefined,\n density: density !== undefined,\n expanded: expanded !== undefined,\n grouping: grouping !== undefined,\n globalFilter: toolbarQueryValue !== undefined,\n pagination: pageIndex !== undefined || pageSize !== undefined,\n rowSelection: rowSelection !== undefined,\n showHiddenRows: showHiddenRows !== undefined,\n sorting: sorting !== undefined,\n viewMode: viewMode !== undefined,\n });\n const handleToolbarQueryValueChange = useDataTableStateSliceChange(\n \"globalFilter\",\n onToolbarQueryValueChange,\n onStateChange,\n );\n const handleSortingPropChange = useDataTableStateSliceChange(\n \"sorting\",\n onSortingChange,\n onStateChange,\n );\n const handleGroupingPropChange = useDataTableStateSliceChange(\n \"grouping\",\n onGroupingChange,\n onStateChange,\n );\n const handleRowSelectionPropChange = useDataTableStateSliceChange(\n \"rowSelection\",\n onRowSelectionChange,\n onStateChange,\n );\n const handleColumnVisibilityPropChange = useDataTableStateSliceChange(\n \"columnVisibility\",\n onColumnVisibilityChange,\n onStateChange,\n );\n const handleColumnFiltersPropChange = useDataTableStateSliceChange(\n \"columnFilters\",\n onColumnFiltersChange,\n onStateChange,\n );\n const handleExpandedPropChange = useDataTableStateSliceChange(\n \"expanded\",\n onExpandedChange,\n onStateChange,\n );\n const handleColumnOrderPropChange = useDataTableStateSliceChange(\n \"columnOrder\",\n onColumnOrderChange,\n onStateChange,\n );\n const handleColumnPinningPropChange = useDataTableStateSliceChange(\n \"columnPinning\",\n onColumnPinningChange,\n onStateChange,\n );\n const handleRowPinningPropChange = useDataTableStateSliceChange(\n \"rowPinning\",\n onRowPinningChange,\n onStateChange,\n );\n const handleColumnSizingPropChange = useDataTableStateSliceChange(\n \"columnSizing\",\n onColumnSizingChange,\n onStateChange,\n );\n const handleDensityPropChange = useDataTableStateSliceChange(\n \"density\",\n onDensityChange,\n onStateChange,\n );\n const handleViewModePropChange = useDataTableStateSliceChange(\n \"viewMode\",\n onViewModeChange,\n onStateChange,\n );\n const handleShowHiddenRowsPropChange = useDataTableStateSliceChange(\n \"showHiddenRows\",\n onShowHiddenRowsChange,\n onStateChange,\n );\n const handlePageIndexPropChange = React.useCallback(\n (nextPageIndex: number) => {\n onPageIndexChange?.(nextPageIndex);\n onStateChange?.((current) => ({\n ...current,\n pagination: {\n pageIndex: nextPageIndex,\n pageSize:\n resolvedPageSize ?? current.pagination.pageSize,\n },\n }));\n },\n [onPageIndexChange, onStateChange, resolvedPageSize],\n );\n const handlePageSizePropChange = React.useCallback(\n (nextPageSize: number) => {\n onPageSizeChange?.(nextPageSize);\n onStateChange?.((current) => ({\n ...current,\n pagination: {\n pageIndex:\n resolvedPageIndex ?? current.pagination.pageIndex,\n pageSize: nextPageSize,\n },\n }));\n },\n [onPageSizeChange, onStateChange, resolvedPageIndex],\n );\n const runAction = React.useCallback(\n (\n context: Omit, \"error\">,\n action: () => void | Promise,\n ) => {\n runDataTableAction(action, context, onActionError);\n },\n [onActionError],\n );\n const guardedRowActions = React.useMemo(\n () =>\n rowActions.map((action) => ({\n ...action,\n onClick: (row: TData) => {\n runAction(\n {\n actionKey: action.key,\n row,\n source: \"rowAction\",\n },\n () => action.onClick(row),\n );\n },\n })),\n [rowActions, runAction],\n );\n const guardedOnRowClick = React.useMemo<\n DataTableProps[\"onRowClick\"]\n >(\n () =>\n onRowClick\n ? (context) => {\n runAction(\n {\n row: context.row,\n source: \"rowClick\",\n },\n () => onRowClick(context),\n );\n }\n : undefined,\n [onRowClick, runAction],\n );\n const handleEditError = React.useCallback(\n (error: unknown, row: TData) => {\n onActionError?.({\n error,\n row,\n source: \"edit\",\n });\n },\n [onActionError],\n );\n const {\n containerWidth,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentRowPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentGrouping,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n effectiveColumnVisibility,\n globalFilterValue,\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n localSearchValue,\n resolvedLoadingRowCount,\n resolvedToolbarQueryPlaceholder,\n selectedRowIds,\n selectedRows,\n setCurrentColumnFilters,\n setCurrentColumnOrder,\n setCurrentColumnPinning,\n setCurrentRowPinning,\n setCurrentColumnVisibility,\n setCurrentExpanded,\n setCurrentGrouping,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n setLocalSearchValue,\n shouldRenderInitialLoading,\n tableData,\n tableGetRowId,\n visibleData,\n } = useDataTableState({\n columnFilters: resolvedColumnFilters,\n columnOrder: resolvedColumnOrder,\n columnPinning: resolvedColumnPinning,\n rowPinning: resolvedRowPinning,\n columnSizing: resolvedColumnSizing,\n columnPrefsKey,\n persistence,\n columnVisibility: resolvedColumnVisibility,\n columns,\n containerRef,\n data,\n density: resolvedDensity,\n enableRowSelection,\n enableToolbarQueryFiltering,\n expanded: resolvedExpanded,\n grouping: resolvedGrouping,\n getSubRows,\n getRowId,\n hiddenRows,\n isLoading,\n loadingRowCount,\n manualFiltering,\n initialState,\n onColumnFiltersChange: handleColumnFiltersPropChange,\n onColumnOrderChange: handleColumnOrderPropChange,\n onColumnPinningChange: handleColumnPinningPropChange,\n onRowPinningChange: handleRowPinningPropChange,\n onColumnSizingChange: handleColumnSizingPropChange,\n onColumnVisibilityChange: handleColumnVisibilityPropChange,\n onDensityChange: handleDensityPropChange,\n onExpandedChange: handleExpandedPropChange,\n onGroupingChange: handleGroupingPropChange,\n onPageIndexChange: handlePageIndexPropChange,\n onRowSelectionChange: handleRowSelectionPropChange,\n onShowHiddenRowsChange: handleShowHiddenRowsPropChange,\n onSortingChange: handleSortingPropChange,\n onToolbarQueryValueChange: handleToolbarQueryValueChange,\n onViewModeChange: handleViewModePropChange,\n pageIndex: resolvedPageIndex,\n pageSize: resolvedPageSize,\n resolvedLabels,\n rowSelection: resolvedRowSelection,\n rowsPerPageOptions,\n selectionActions,\n showHiddenRows: resolvedShowHiddenRows,\n sorting: resolvedSorting,\n toolbarQueryDebounceMs,\n toolbarQueryPlaceholder,\n toolbarQueryValue: resolvedToolbarQueryValue,\n viewMode: resolvedViewMode,\n });\n const usesLegacyDetailPanelState = Boolean(\n renderExpandedRow && !detailPanel && !getSubRows,\n );\n const resolvedDetailPanel =\n detailPanel ??\n (renderExpandedRow\n ? {\n getRowCanExpand: getSubRows ? undefined : getRowCanExpand,\n render: renderExpandedRow,\n }\n : undefined);\n const [currentDetailExpanded, setCurrentDetailExpanded] =\n useControllableState({\n defaultValue: () =>\n usesLegacyDetailPanelState ? (initialState?.expanded ?? {}) : {},\n onChange: usesLegacyDetailPanelState\n ? setCurrentExpanded\n : resolvedDetailPanel?.onExpandedChange,\n value: usesLegacyDetailPanelState\n ? currentExpanded\n : resolvedDetailPanel?.expanded,\n });\n const {\n cancelEditing,\n clearEditError,\n draftValues,\n editErrors,\n editingRowId,\n isEditDirty,\n isSavingEdit,\n saveEdit,\n setDraftValues,\n setEditingRowId,\n startEditingRow,\n } = useRowEditing({\n columns,\n editableRows,\n onError: handleEditError,\n });\n const rowEditingContext = React.useMemo(\n () => ({\n cancel: cancelEditing,\n cancelOnEscape: editableRows?.cancelOnEscape !== false,\n clearError: clearEditError,\n commit: (row: TData) => {\n void saveEdit(row);\n },\n commitOnEnter: editableRows?.commitOnEnter !== false,\n errors: editErrors,\n isDirty: isEditDirty,\n isPending: isSavingEdit,\n }),\n [\n cancelEditing,\n clearEditError,\n editableRows?.cancelOnEscape,\n editableRows?.commitOnEnter,\n editErrors,\n isEditDirty,\n isSavingEdit,\n saveEdit,\n ],\n );\n const { viewportElement: tableScrollElement, viewportHeight } =\n useDataTableScrollViewport(tableScrollContainerRef, currentViewMode);\n const autoPageSizeConfig =\n typeof autoPageSize === \"object\" ? autoPageSize : undefined;\n const handleAutoPageSizeChange = React.useCallback(\n (nextPageSize: number) => {\n if (nextPageSize === currentPagination.pageSize) {\n return;\n }\n if (currentPagination.pageIndex !== 0) {\n handlePageIndexPropChange(0);\n }\n handlePageSizePropChange(nextPageSize);\n if (resolvedPageSize === undefined) {\n setLocalPagination({ pageIndex: 0, pageSize: nextPageSize });\n }\n },\n [\n currentPagination.pageIndex,\n currentPagination.pageSize,\n handlePageIndexPropChange,\n handlePageSizePropChange,\n resolvedPageSize,\n setLocalPagination,\n ],\n );\n const autoPageSizeEnabled =\n autoPageSize === true || autoPageSizeConfig !== undefined;\n const print = React.useCallback(() => {\n if (typeof window === \"undefined\" || typeof window.print !== \"function\") {\n return false;\n }\n window.print();\n return true;\n }, []);\n const toggleFullscreen = React.useCallback(async () => {\n const element = containerRef.current;\n if (!element || typeof document === \"undefined\") {\n return false;\n }\n if (document.fullscreenElement) {\n if (typeof document.exitFullscreen !== \"function\") return false;\n await document.exitFullscreen();\n return true;\n }\n if (typeof element.requestFullscreen !== \"function\") return false;\n await element.requestFullscreen();\n return true;\n }, []);\n const [isFullscreen, setIsFullscreen] = React.useState(false);\n React.useEffect(() => {\n if (!enableFullscreen || typeof document === \"undefined\") return;\n const update = () => {\n setIsFullscreen(document.fullscreenElement === containerRef.current);\n };\n update();\n document.addEventListener(\"fullscreenchange\", update);\n return () => document.removeEventListener(\"fullscreenchange\", update);\n }, [enableFullscreen]);\n const openFileDialog = React.useCallback(() => {\n if (fileUpload?.disabled) {\n return;\n }\n\n fileInputRef.current?.click();\n }, [fileUpload?.disabled]);\n const handleSelectedFiles = React.useCallback(\n (files: FileList | Array) => {\n runAction(\n {\n source: \"fileUpload\",\n },\n () => fileUpload?.onFilesSelected(files),\n );\n },\n [fileUpload, runAction],\n );\n\n const tableColumns = useDataTableColumns({\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n editErrors,\n editingRowId,\n enableRowSelection,\n enableRowPinning,\n hasTreeExpansion: Boolean(getSubRows),\n isSavingEdit,\n isEditDirty,\n labels: resolvedLabels,\n lastSelectedRowIdRef,\n detailPanel: resolvedDetailPanel,\n detailExpanded: currentDetailExpanded,\n onDetailExpandedChange: setCurrentDetailExpanded,\n rowSelectionSelectAllScope,\n rowActions: guardedRowActions,\n saveEdit,\n startEditingRow,\n tableRef,\n });\n const columnGroupPaths = React.useMemo(\n () => getDataTableColumnGroupPaths(columns),\n [columns],\n );\n\n const {\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n isPageCountKnown,\n renderedRows,\n topPinnedRows,\n bottomPinnedRows,\n reorderColumn,\n rowsToRender,\n sentinelRef,\n table,\n virtualPaddingBottom,\n virtualPaddingTop,\n visibleLeafColumns,\n } = useDataTableInstance({\n autoResetPageIndex: false,\n columnGroupPaths,\n columnResizeMode,\n dir,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentRowPinning,\n currentColumnSizing,\n currentExpanded,\n currentGrouping,\n currentPagination,\n currentRowSelection,\n currentSorting,\n currentViewMode,\n defaultColumn,\n effectiveColumnVisibility,\n enableColumnResizing,\n enableRowPinning,\n enableRowSelection,\n enableMultiRowSelection,\n enableSubRowSelection,\n getRowCanSelect,\n getRowCanExpand,\n getSubRows,\n aggregationFns,\n groupedColumnMode,\n globalFilterFn,\n globalFilterValue,\n hasNextPage,\n handleColumnFiltersChange: setCurrentColumnFilters,\n handleColumnOrderChange: setCurrentColumnOrder,\n handleColumnPinningChange: setCurrentColumnPinning,\n handleRowPinningChange: setCurrentRowPinning,\n handleColumnVisibilityChange: setCurrentColumnVisibility,\n handleExpandedChange: setCurrentExpanded,\n handleGroupingChange: setCurrentGrouping,\n infiniteScroll,\n keepPinnedRows,\n manualFiltering,\n manualGrouping,\n manualExpanding,\n manualPagination,\n manualSorting,\n onActionError,\n onPageIndexChange: handlePageIndexPropChange,\n onPageSizeChange: handlePageSizePropChange,\n pageCount,\n pageIndex: resolvedPageIndex,\n pageSize: resolvedPageSize,\n paginateExpandedRows,\n filterFromLeafRows,\n maxLeafRowFilterDepth,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n shouldRenderInitialLoading,\n tableColumns,\n tableData,\n tableGetRowId,\n tableRef,\n tableScrollElement,\n totalRowCount,\n virtualization,\n viewportHeight,\n });\n const columnLayout = useColumnLayout({\n columns,\n columnSizing: currentColumnSizing,\n editableRows: Boolean(editableRows),\n enableRowSelection,\n hasRowActions: rowActions.length > 0,\n hasRowExpansion: Boolean(getSubRows || resolvedDetailPanel),\n layoutMode,\n uiClassNames,\n visibleLeafColumns,\n });\n const { explicitlySizedColumnIds, fillMinWidth, getColumnLayout } =\n columnLayout;\n const explicitCustomCellColumnIds = React.useMemo(() => {\n return new Set(\n getDataTableLeafColumns(columns).flatMap(({ column, index }) => {\n return Object.prototype.hasOwnProperty.call(column, \"cell\") &&\n typeof column.cell === \"function\"\n ? [getColumnId(column, index)]\n : [];\n }),\n );\n }, [columns]);\n const visibleLeafColumnCount = visibleLeafColumns.length;\n const bodyRowComponents = React.useMemo(\n () => ({\n Checkbox,\n Input,\n Skeleton,\n TableCell,\n TableRow,\n }),\n [],\n );\n const hasCardTitle = React.useMemo(\n () =>\n getDataTableLeafColumns(columns).some(\n ({ column }) => column.meta?.cardTitle,\n ),\n [columns],\n );\n const primeColumnForResize = React.useCallback(\n (columnId: string, currentSize: number) => {\n if (\n explicitlySizedColumnIds.has(columnId) ||\n Object.prototype.hasOwnProperty.call(\n table.getState().columnSizing,\n columnId,\n )\n ) {\n return;\n }\n\n flushSync(() => {\n table.setColumnSizing((current) => ({\n ...current,\n [columnId]: currentSize,\n }));\n });\n },\n [explicitlySizedColumnIds, table],\n );\n const resetColumnSize = React.useCallback(\n (columnId: string) => {\n if (explicitlySizedColumnIds.has(columnId)) {\n table.getColumn(columnId)?.resetSize();\n return;\n }\n\n table.setColumnSizing((current) => {\n if (!Object.prototype.hasOwnProperty.call(current, columnId)) {\n return current;\n }\n\n const next = { ...current };\n delete next[columnId];\n return next;\n });\n },\n [explicitlySizedColumnIds, table],\n );\n\n const filteredData = table\n .getFilteredRowModel()\n .rows.map((row) => row.original);\n const configuredEmptyState = stateOverlay?.empty ?? emptyState;\n const emptyNode =\n typeof configuredEmptyState === \"function\"\n ? configuredEmptyState({\n rows: filteredData,\n toolbarQueryValue: localSearchValue,\n })\n : configuredEmptyState;\n const guardedStateOverlay = React.useMemo(\n () =>\n stateOverlay\n ? {\n ...stateOverlay,\n onRetry: stateOverlay.onRetry\n ? () =>\n runAction(\n { source: \"retry\" },\n stateOverlay.onRetry!,\n )\n : undefined,\n }\n : undefined,\n [runAction, stateOverlay],\n );\n const stateOverlayNode = guardedStateOverlay?.error != null ? (\n \n \n \n ) : undefined;\n const {\n columnVisibilityOptions,\n effectiveToolbarActions,\n handleClearColumnFilters,\n handleToolbarColumnFilterChange,\n handleToolbarColumnPinningChange,\n toolbarColumnFilters,\n } = useDataTableToolbarFeatures({\n columns,\n currentColumnFilters,\n currentColumnPinning,\n csvExport,\n effectiveColumnVisibility,\n enableColumnFilters,\n handleColumnFiltersChange: setCurrentColumnFilters,\n handleColumnPinningChange: setCurrentColumnPinning,\n labels: resolvedLabels,\n table,\n toolbarActions,\n visibleData,\n });\n const guardedToolbarActions = React.useMemo(\n () =>\n [\n ...effectiveToolbarActions,\n ...(enablePrint\n ? [\n {\n key: \"__print__\",\n label: resolvedLabels.print,\n placement: \"trailing\" as const,\n onClick: () => {\n print();\n },\n },\n ]\n : []),\n ...(enableFullscreen\n ? [\n {\n key: \"__fullscreen__\",\n label: isFullscreen\n ? resolvedLabels.exitFullscreen\n : resolvedLabels.enterFullscreen,\n placement: \"trailing\" as const,\n onClick: () => toggleFullscreen(),\n },\n ]\n : []),\n ].map((action) => ({\n ...action,\n onClick: (context: {\n rows: Array;\n openFileDialog?: () => void;\n }) => {\n runAction(\n {\n actionKey: action.key,\n source: \"toolbarAction\",\n },\n () => action.onClick(context),\n );\n },\n })),\n [\n effectiveToolbarActions,\n enableFullscreen,\n enablePrint,\n isFullscreen,\n print,\n resolvedLabels.enterFullscreen,\n resolvedLabels.exitFullscreen,\n resolvedLabels.print,\n runAction,\n toggleFullscreen,\n ],\n );\n const guardedSelectionActions = React.useMemo(\n () =>\n selectionActions.map((action) => ({\n ...action,\n onClick: (context: Parameters[0]) => {\n runAction(\n {\n actionKey: action.key,\n source: \"selectionAction\",\n },\n () => action.onClick(context),\n );\n },\n })),\n [runAction, selectionActions],\n );\n const currentDataTableState = React.useMemo(\n () => ({\n sorting: currentSorting,\n pagination: currentPagination,\n rowSelection: currentRowSelection,\n columnVisibility: currentColumnVisibility,\n columnFilters: currentColumnFilters,\n expanded: currentExpanded,\n grouping: currentGrouping,\n columnOrder: currentColumnOrder,\n columnPinning: currentColumnPinning,\n rowPinning: currentRowPinning,\n columnSizing: currentColumnSizing,\n density: currentDensity,\n viewMode: currentViewMode,\n showHiddenRows: currentShowHiddenRows,\n globalFilter: localSearchValue,\n }),\n [\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentRowPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentGrouping,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n localSearchValue,\n ],\n );\n const getCurrentState = React.useCallback(\n () => cloneDataTableState(currentDataTableState),\n [currentDataTableState],\n );\n const restoreState = React.useCallback(\n (nextState: Partial) => {\n if (nextState.sorting !== undefined) {\n table.setSorting(nextState.sorting);\n }\n if (nextState.pagination !== undefined) {\n table.setPagination(nextState.pagination);\n }\n if (nextState.rowSelection !== undefined) {\n table.setRowSelection(nextState.rowSelection);\n }\n if (nextState.columnVisibility !== undefined) {\n table.setColumnVisibility(nextState.columnVisibility);\n }\n if (nextState.columnFilters !== undefined) {\n table.setColumnFilters(nextState.columnFilters);\n }\n if (nextState.expanded !== undefined) {\n table.setExpanded(nextState.expanded);\n }\n if (nextState.grouping !== undefined) {\n table.setGrouping(nextState.grouping);\n }\n if (nextState.columnOrder !== undefined) {\n table.setColumnOrder(nextState.columnOrder);\n }\n if (nextState.columnPinning !== undefined) {\n table.setColumnPinning(nextState.columnPinning);\n }\n if (nextState.rowPinning !== undefined) {\n table.setRowPinning(nextState.rowPinning);\n }\n if (nextState.columnSizing !== undefined) {\n table.setColumnSizing(nextState.columnSizing);\n }\n if (nextState.density !== undefined) {\n handleDensityChange(nextState.density);\n }\n if (nextState.viewMode !== undefined) {\n handleViewModeChange(nextState.viewMode);\n }\n if (nextState.showHiddenRows !== undefined) {\n handleShowHiddenRowsChange(nextState.showHiddenRows);\n }\n if (nextState.globalFilter !== undefined) {\n setLocalSearchValue(nextState.globalFilter);\n }\n },\n [\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n setLocalSearchValue,\n table,\n ],\n );\n const clearPersistedState = React.useCallback(\n () => clearDataTableColumnPrefs(persistence ?? columnPrefsKey),\n [columnPrefsKey, persistence],\n );\n const resetColumnLayout = React.useCallback<\n DataTableApi[\"resetColumnLayout\"]\n >(\n (options) => {\n if (options?.clearPersistence) {\n clearPersistedState();\n }\n restoreState({\n columnVisibility: initialState?.columnVisibility ?? {},\n columnOrder: initialState?.columnOrder ?? [],\n columnPinning:\n initialState?.columnPinning ?? getInitialColumnPinning(columns),\n rowPinning: initialState?.rowPinning ?? { top: [], bottom: [] },\n columnSizing: initialState?.columnSizing ?? {},\n });\n },\n [\n clearPersistedState,\n columns,\n initialState,\n restoreState,\n ],\n );\n const resetState = React.useCallback[\"resetState\"]>(\n (options) => {\n if (options?.clearPersistence) {\n clearPersistedState();\n }\n restoreState({\n sorting: initialState?.sorting ?? [],\n pagination: initialState?.pagination ?? {\n pageIndex: 0,\n pageSize: rowsPerPageOptions[0] ?? 20,\n },\n rowSelection: initialState?.rowSelection ?? {},\n columnVisibility: initialState?.columnVisibility ?? {},\n columnFilters: initialState?.columnFilters ?? [],\n expanded: initialState?.expanded ?? {},\n grouping: initialState?.grouping ?? [],\n columnOrder: initialState?.columnOrder ?? [],\n columnPinning:\n initialState?.columnPinning ?? getInitialColumnPinning(columns),\n rowPinning: initialState?.rowPinning ?? { top: [], bottom: [] },\n columnSizing: initialState?.columnSizing ?? {},\n density: initialState?.density ?? \"comfortable\",\n viewMode: initialState?.viewMode ?? \"table\",\n showHiddenRows: initialState?.showHiddenRows ?? false,\n globalFilter: initialState?.globalFilter ?? \"\",\n });\n },\n [\n clearPersistedState,\n columns,\n initialState,\n restoreState,\n rowsPerPageOptions,\n ],\n );\n const getSavedViews = React.useCallback(\n () => readDataTableSavedViews(savedViews),\n [savedViews],\n );\n const createSavedView = React.useCallback<\n DataTableApi[\"createSavedView\"]\n >(\n (name) =>\n createDataTableSavedView(savedViews, name, getCurrentState()),\n [getCurrentState, savedViews],\n );\n const applySavedView = React.useCallback<\n DataTableApi[\"applySavedView\"]\n >(\n (id) => {\n const view = readDataTableSavedViews(savedViews).find(\n (candidate) => candidate.id === id,\n );\n if (!view) {\n return false;\n }\n restoreState(view.state);\n savedViews?.onApply?.(view);\n return true;\n },\n [restoreState, savedViews],\n );\n const renameSavedView = React.useCallback<\n DataTableApi[\"renameSavedView\"]\n >(\n (id, name) => renameDataTableSavedView(savedViews, id, name),\n [savedViews],\n );\n const deleteSavedView = React.useCallback<\n DataTableApi[\"deleteSavedView\"]\n >(\n (id) => deleteDataTableSavedView(savedViews, id),\n [savedViews],\n );\n const clearSavedViews = React.useCallback(\n () => clearDataTableSavedViews(savedViews),\n [savedViews],\n );\n const toolbarSavedViews = React.useMemo(() => {\n void toolbarSavedViewsVersion;\n return readDataTableSavedViews(savedViews);\n }, [savedViews, toolbarSavedViewsVersion]);\n const handleToolbarCreateSavedView = React.useCallback(\n (name: string) => {\n const view = createSavedView(name);\n if (view) {\n setToolbarSavedViewsVersion((current) => current + 1);\n }\n return view;\n },\n [createSavedView],\n );\n const handleToolbarRenameSavedView = React.useCallback(\n (id: string, name: string) => {\n const view = renameSavedView(id, name);\n if (view) {\n setToolbarSavedViewsVersion((current) => current + 1);\n }\n return view;\n },\n [renameSavedView],\n );\n const handleToolbarDeleteSavedView = React.useCallback(\n (id: string) => {\n const deleted = deleteSavedView(id);\n if (deleted) {\n setToolbarSavedViewsVersion((current) => current + 1);\n }\n return deleted;\n },\n [deleteSavedView],\n );\n const exportCsvFromApi = React.useCallback<\n DataTableApi[\"exportCsv\"]\n >(\n (options) =>\n exportDataTableCsv({\n csvExport: options ?? (csvExport || true),\n labels: resolvedLabels,\n table,\n }),\n [csvExport, resolvedLabels, table],\n );\n const copyToClipboard = React.useCallback<\n DataTableApi[\"copyToClipboard\"]\n >(\n async (options) => {\n const { copyDataTableToClipboard } = await import(\n \"./data-table-clipboard\"\n );\n return copyDataTableToClipboard({\n clipboard:\n options ??\n (clipboard?.copy === false\n ? false\n : currentCellSelection\n ? {\n ...(clipboard?.copy === true ? {} : clipboard?.copy),\n scope: \"cellSelection\",\n }\n : clipboard?.copy ?? true),\n cellSelection: currentCellSelection,\n table,\n });\n },\n [clipboard?.copy, currentCellSelection, table],\n );\n const pinRow = React.useCallback[\"pinRow\"]>(\n (rowId, position = \"top\") => {\n try {\n const row = table.getRow(rowId, true);\n if (!row.getCanPin()) {\n return false;\n }\n row.pin(position);\n return true;\n } catch {\n return false;\n }\n },\n [table],\n );\n const unpinRow = React.useCallback[\"unpinRow\"]>(\n (rowId) => {\n try {\n const row = table.getRow(rowId, true);\n if (!row.getCanPin()) {\n return false;\n }\n row.pin(false);\n return true;\n } catch {\n return false;\n }\n },\n [table],\n );\n React.useImperativeHandle(\n apiRef,\n () => ({\n getTable: () => tableRef.current,\n getState: getCurrentState,\n snapshot: getCurrentState,\n restore: restoreState,\n resetColumnLayout,\n resetState,\n clearPersistedState,\n getSavedViews,\n createSavedView,\n applySavedView,\n renameSavedView,\n deleteSavedView,\n clearSavedViews,\n pinRow,\n unpinRow,\n focus: () => {\n containerRef.current?.focus();\n },\n scrollToRow: (rowId) =>\n scrollDataTableElementIntoView(containerRef.current, \"row\", rowId),\n scrollToColumn: (columnId) =>\n scrollDataTableElementIntoView(\n containerRef.current,\n \"column\",\n columnId,\n ),\n exportCsv: exportCsvFromApi,\n copyToClipboard,\n getCellSelection: () => currentCellSelection,\n setCellSelection: setCurrentCellSelection,\n clearCellSelection: () => setCurrentCellSelection(null),\n print,\n toggleFullscreen,\n }),\n [\n applySavedView,\n clearPersistedState,\n clearSavedViews,\n copyToClipboard,\n currentCellSelection,\n createSavedView,\n deleteSavedView,\n exportCsvFromApi,\n getSavedViews,\n getCurrentState,\n renameSavedView,\n resetColumnLayout,\n resetState,\n restoreState,\n pinRow,\n print,\n setCurrentCellSelection,\n unpinRow,\n toggleFullscreen,\n ],\n );\n\n return (\n \n {\n if (\n gridMode &&\n gridCommands &&\n (event.ctrlKey || event.metaKey) &&\n event.key.toLowerCase() === \"z\" &&\n !isDataTableEditableClipboardTarget(event.target)\n ) {\n const command = event.shiftKey ? gridCommands.redo : gridCommands.undo;\n if (command) {\n event.preventDefault();\n runAction(\n { source: event.shiftKey ? \"redo\" : \"undo\" },\n () => command({ cellSelection: currentCellSelection, table }),\n );\n }\n return;\n }\n if (\n !clipboard?.copy ||\n !(event.ctrlKey || event.metaKey) ||\n event.key.toLowerCase() !== \"c\" ||\n isDataTableEditableClipboardTarget(event.target)\n ) {\n return;\n }\n event.preventDefault();\n runAction(\n { source: \"clipboardCopy\" },\n async () => {\n await copyToClipboard(\n clipboard.copy === true\n ? undefined\n : currentCellSelection &&\n typeof clipboard.copy === \"object\" &&\n !clipboard.copy.scope\n ? { ...clipboard.copy, scope: \"cellSelection\" }\n : clipboard.copy,\n );\n },\n );\n }}\n onPaste={(event) => {\n const paste = clipboard?.paste;\n if (\n !paste ||\n paste.enabled === false ||\n isDataTableEditableClipboardTarget(event.target)\n ) {\n return;\n }\n const text = event.clipboardData.getData(\"text/plain\");\n if (!text) {\n return;\n }\n if (paste.preventDefault ?? true) {\n event.preventDefault();\n }\n runAction(\n { source: \"clipboardPaste\" },\n async () => {\n const { parseDataTableClipboardText } = await import(\n \"./data-table-clipboard\"\n );\n return paste.onPaste({\n table,\n text,\n values: parseDataTableClipboardText(text),\n });\n },\n );\n }}\n >\n {autoPageSizeEnabled ? (\n \n \n \n ) : null}\n {fileUpload ? (\n {\n const files = event.currentTarget.files;\n if (files?.length) {\n handleSelectedFiles(files);\n }\n event.currentTarget.value = \"\";\n }}\n />\n ) : null}\n \n \n {showToolbar ? (\n \n ) : null}\n\n \n {currentViewMode === \"card\" && cardRenderer ? (\n \n ) : (\n \n )}\n \n \n {children}\n \n \n \n \n \n );\n };\n}\n\nfunction runDataTableAction(\n action: () => void | Promise,\n context: Omit, \"error\">,\n onActionError: DataTableProps[\"onActionError\"],\n) {\n let result: void | Promise;\n try {\n result = action();\n } catch (error) {\n onActionError?.({ ...context, error });\n return;\n }\n\n void Promise.resolve(result).catch((error: unknown) => {\n onActionError?.({ ...context, error });\n });\n}\n\nfunction useDataTableStateSliceChange(\n key: K,\n onLegacyChange:\n | ((value: Exclude) => void)\n | undefined,\n onStateChange: DataTableProps[\"onStateChange\"],\n) {\n const handleChange = React.useCallback(\n (value: Exclude) => {\n onLegacyChange?.(value);\n onStateChange?.((current) => ({\n ...current,\n [key]: value,\n }));\n },\n [key, onLegacyChange, onStateChange],\n );\n\n return onLegacyChange || onStateChange ? handleChange : undefined;\n}\n\nfunction useDataTableStateConflictWarnings(\n state: Partial | undefined,\n legacySlices: Record,\n) {\n const warnedSlicesRef = React.useRef(new Set());\n\n React.useEffect(() => {\n if (!state || !isDevelopmentEnvironment()) {\n return;\n }\n\n for (const key of Object.keys(legacySlices) as Array<\n keyof DataTableState\n >) {\n if (\n state[key] === undefined ||\n !legacySlices[key] ||\n warnedSlicesRef.current.has(key)\n ) {\n continue;\n }\n\n warnedSlicesRef.current.add(key);\n console.warn(\n `[data-table-pro] Both state.${key} and its legacy controlled prop were provided. The legacy prop takes precedence during the 4.x compatibility window.`,\n );\n }\n }, [legacySlices, state]);\n}\n\nfunction isDevelopmentEnvironment() {\n const nodeEnvironment = (\n globalThis as {\n process?: { env?: { NODE_ENV?: string } };\n }\n ).process?.env?.NODE_ENV;\n\n return nodeEnvironment !== \"production\";\n}\n\nfunction cloneDataTableState(state: DataTableState): DataTableState {\n return {\n sorting: state.sorting.map((item) => ({ ...item })),\n pagination: { ...state.pagination },\n rowSelection: { ...state.rowSelection },\n columnVisibility: { ...state.columnVisibility },\n columnFilters: state.columnFilters.map((item) => ({ ...item })),\n expanded:\n typeof state.expanded === \"boolean\"\n ? state.expanded\n : { ...state.expanded },\n grouping: [...(state.grouping ?? [])],\n columnOrder: [...state.columnOrder],\n columnPinning: {\n left: state.columnPinning.left\n ? [...state.columnPinning.left]\n : undefined,\n right: state.columnPinning.right\n ? [...state.columnPinning.right]\n : undefined,\n },\n rowPinning: {\n top: state.rowPinning.top ? [...state.rowPinning.top] : undefined,\n bottom: state.rowPinning.bottom ? [...state.rowPinning.bottom] : undefined,\n },\n columnSizing: { ...state.columnSizing },\n density: state.density,\n viewMode: state.viewMode,\n showHiddenRows: state.showHiddenRows,\n globalFilter: state.globalFilter,\n };\n}\n\nfunction scrollDataTableElementIntoView(\n container: HTMLDivElement | null,\n kind: \"row\" | \"column\",\n value: string,\n) {\n if (!container) {\n return false;\n }\n\n const attribute = kind === \"row\" ? \"data-row-id\" : \"data-column-id\";\n const element = Array.from(\n container.querySelectorAll(`[${attribute}]`),\n ).find((candidate) => candidate.getAttribute(attribute) === value);\n if (!element) {\n return false;\n }\n\n element.scrollIntoView?.({ block: \"nearest\", inline: \"nearest\" });\n return true;\n}\n\nfunction isDataTableEditableClipboardTarget(target: EventTarget | null) {\n if (!(target instanceof HTMLElement)) {\n return false;\n }\n return (\n target.isContentEditable ||\n target instanceof HTMLInputElement ||\n target instanceof HTMLTextAreaElement ||\n target instanceof HTMLSelectElement\n );\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-67Y57KCA.js b/dist/chunk-67Y57KCA.js deleted file mode 100644 index e9e6c24..0000000 --- a/dist/chunk-67Y57KCA.js +++ /dev/null @@ -1,2 +0,0 @@ -import {a as a$1}from'./chunk-EJHT5JBZ.js';import {x,u,c,v as v$1,A,D,J,O,G,C,Q,I,w,y,z,M,N,K,S,B,H,V,o,t,j as j$1,l,r,a as a$2,q,p,P,L,R,E,F,k,i}from'./chunk-BYTOUBQ7.js';import {b,a,j,c as c$1,e,f,d}from'./chunk-GSCYQ624.js';import*as v from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {useReactTable,getPaginationRowModel,getExpandedRowModel,getSortedRowModel,getFilteredRowModel,getCoreRowModel}from'@tanstack/react-table';import {flushSync}from'react-dom';function qa({cardClassName:e,cardGridClassName:t,cardSizing:a$1,cardRenderer:n,currentRowSelection:i,currentDetailExpanded:l,DataTableCardView:s,DataTableEmptyState:f,dragAndDrop:p,editableRows:w,editingRowId:D,emptyNode:I,enableRowSelection:k,flexGrow:F,getRowClassName:x,hasCardTitle:N,infiniteScroll:j,localSearchValue:u,onRowClick:m,renderedRows:r,detailPanel:C,resolvedLabels:b,resolvedLoadingRowCount:h,rowActions:M=[],ScrollArea:y,sentinelRef:L,setCurrentDetailExpanded:T,setCurrentRowSelection:P,setEditingRowId:R,shouldRenderInitialLoading:E,tableContainerClassName:g,uiClassNames:G}){let H=E||r.length>0,V=v.useRef(null),Q=(A,se)=>jsx(s,{rows:A,cardRenderer:n,cardGridClassName:t,cardClassName:e,cardSizing:a$1,rowActions:M,editableRows:w,detailPanel:C,detailExpanded:l,onDetailExpandedChange:T,hasCardTitle:N,rowSelection:i,onRowSelectionChange:P,enableRowSelection:k,editingRowId:D,onEditingRowIdChange:R,getRowClassName:x,onRowClick:m,getRowDraggable:p?.getRowDraggable,onRowDragStart:p?.onRowDragStart,onRowDragEnd:p?.onRowDragEnd,isLoading:se?.isLoading,loadingRowCount:se?.loadingRowCount,labels:b});return jsx("div",{ref:V,"data-dtp-slot":"data-table-card-shell",className:a("box-border border-2 border-transparent transition-colors",F?"flex min-h-0 flex-1 flex-col":"h-full",p?.isDragging&&(G.dragActive??"rounded-md border-dashed")),children:jsx(y,{className:a(F?"min-h-0 flex-1":"h-full",G.cardScrollArea,g),children:jsxs("div",{"data-dtp-slot":"data-table-card-viewport",className:a("flex min-h-full min-w-0 flex-col",F&&"min-h-0 flex-1",G.cardViewport),children:[H?E?Q([],{isLoading:true,loadingRowCount:h}):Q(r):jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center p-4",children:I??jsx(f,{title:u?b.noMatchingRowsTitle:b.noRowsTitle,description:u?b.noMatchingRowsDescription:b.noRowsDescription})}),j?.enabled&&!E?jsx("div",{className:"shrink-0 px-4 pb-4",children:jsx("div",{ref:L,className:"h-4 w-full"})}):null]})})})}var nl=v.lazy(async()=>({default:(await import('./data-table-virtual-card-panel-TLC53T3T.js')).DataTableVirtualCardPanel}));function Eo(e){let t=typeof e.virtualization=="object"?e.virtualization.card:void 0;return t?.enabled!==true?jsx(qa,{...e}):jsx(v.Suspense,{fallback:jsx(qa,{...e,renderedRows:e.renderedRows.slice(0,Math.max(1,Math.floor(t.fallbackCardCount??12)))}),children:jsx(nl,{...e})})}function ko({children:e,currentPagination:t,DataTableFooter:a,effectivePageCount:n,footerTotalRowCount:i,handleFooterPageIndexChange:l,handleFooterPageSizeChange:s,labels:f,pageCountKnown:p=true,rowsPerPageOptions:w,showFooter:D}){return !D&&!e?null:jsxs("div",{"data-dtp-slot":"data-table-footer",className:"shrink-0",children:[D?jsx(a,{pageIndex:t.pageIndex,pageCount:n,pageCountKnown:p,pageSize:t.pageSize,totalRowCount:i,rowsPerPageOptions:w,onPageIndexChange:l,onPageSizeChange:s,labels:f}):null,e]})}function Ao({allRows:e,columnFilters:t,columnVisibilityOptions:a,compactToolbar:n,customToolbar:i,DataTableToolbar:l,description:s,descriptionId:f,effectiveToolbarActions:p,enableColumnPinning:w,enableDensityToggle:D,enableViewToggle:I,hiddenRowsLabel:k,labels:F,onClearColumnFilters:x,onColumnFilterChange:N,onColumnPinningChange:j,onDensityChange:u,onShowHiddenRowsChange:m,onToolbarQueryValueChange:r,onViewModeChange:C,openFileDialog:b,selectedRowIds:h,selectedRows:M,selectionActions:y,showHiddenRows:L,table:T,title:P,titleId:R,toolbarQueryPlaceholder:E,toolbarQueryValue:g,toolbarVisibility:G,density:H,viewMode:V}){return jsx("div",{"data-dtp-slot":"data-table-toolbar",className:"shrink-0",children:jsx(l,{title:P,titleId:R,description:s,descriptionId:f,toolbarQueryValue:g,toolbarQueryPlaceholder:E,onToolbarQueryValueChange:r,customToolbar:i,compactToolbar:n,viewMode:V,onViewModeChange:C,enableViewToggle:I,toolbarActions:p,selectionActions:y,selectedRowIds:h,selectedRows:M,showHiddenRows:L,hiddenRowsLabel:k,onShowHiddenRowsChange:m,allRows:e,columnVisibilityOptions:a,onColumnVisibilityChange:(Q,A)=>{T.getColumn(Q)?.toggleVisibility(A);},enableColumnPinning:w,onColumnPinningChange:j,columnFilters:t,onColumnFilterChange:N,onClearColumnFilters:x,density:H,onDensityChange:u,enableDensityToggle:D,labels:F,toolbarVisibility:G,openFileDialog:b})})}var ae={searchPlaceholder:"Search rows...",searchTable:"Search table",clearSearch:"Clear search",noRowsTitle:"No rows yet",noRowsDescription:"Create a record or refresh this view once data exists.",noMatchingRowsTitle:"No matching rows",noMatchingRowsDescription:"Try a different search term or clear filters.",tableOptions:"Show table options",columns:"Columns",filters:"Filters",clearFilters:"Clear filters",filterFrom:"From",filterTo:"To",filterTrue:"Yes",filterFalse:"No",selectedRows:e=>`${e} record${e===1?"":"s"} selected`,showHiddenRows:e=>`Show ${e}`,recordsPerPage:"Records per page",totalRecords:e=>`Total records: ${e}`,pageStatus:(e,t)=>`Page ${e+1} of ${t}`,pageStatusUnknown:e=>`Page ${e+1}`,pagination:"Pagination",morePages:"More pages",firstPage:"First page",previousPage:"Previous page",nextPage:"Next page",lastPage:"Last page",selectAllVisibleRows:"Select all visible rows",selectAllFilteredRows:"Select all filtered rows",selectRow:"Select row",selectCardRow:e=>`Select row ${e}`,switchToTableView:"Switch to table view",switchToCardView:"Switch to card view",tableView:"Table view",cardView:"Card view",allFilterOptions:"All",actions:"Actions",rowActions:"Row actions",editRow:"Edit row",saveEdit:"Save",cancelEdit:"Cancel editing",expandRow:"Expand row",collapseRow:"Collapse row",expandRowDetails:"Expand row details",collapseRowDetails:"Collapse row details",exportCsv:"Export CSV",density:"Density",compactDensity:"Compact",comfortableDensity:"Comfortable",spaciousDensity:"Spacious",pinLeft:"Pin left",pinRight:"Pin right",unpin:"Unpin",pinRowToTop:"Pin row to top",pinRowToBottom:"Pin row to bottom",unpinRow:"Unpin row",resizeColumn:e=>`Resize ${e}`};function Io(e){return {...ae,...e}}function Vo({Button:e,Checkbox:t,DataTableRowActions:a$1,Tooltip:n,TooltipContent:i,TooltipTrigger:l,cancelEditing:s,columns:f,editableRows:p,editingRowId:w,enableRowSelection:D,enableRowPinning:I,hasTreeExpansion:k,isSavingEdit:F,labels:x$1,lastSelectedRowIdRef:N,detailPanel:j,detailExpanded:u$1,onDetailExpandedChange:m,rowSelectionSelectAllScope:r,rowActions:C,saveEdit:b,startEditingRow:h,tableRef:M}){let y=v.useCallback((L,T)=>{let P=M.current;if(!P||!N.current)return;let R=P.getRowModel().rows.filter(V=>!x(V.original)),E=R.findIndex(V=>V.id===N.current),g=R.findIndex(V=>V.id===L);if(E<0||g<0)return;let G=Math.min(E,g),H=Math.max(E,g);P.setRowSelection(V=>{let Q={...V};for(let A of R.slice(G,H+1).filter(se=>se.getCanSelect()&&se.getCanMultiSelect()))T?Q[A.id]=true:delete Q[A.id];return Q});},[N,M]);return v.useMemo(()=>{let L=[];if(k||j){let T=k&&j?80:u;L.push({id:"__expand__",enableResizing:false,enableSorting:false,enableHiding:false,size:T,minSize:T,maxSize:T,header:()=>jsx("span",{className:"sr-only",children:x$1.expandRow}),cell:({row:P,table:R})=>{let E=k&&P.getCanExpand(),g=!!(j&&(j.getRowCanExpand?.(P.original)??true));if(!E&&!g)return null;let G=P.getIsExpanded(),H=u$1===true||!!u$1[P.id];return jsxs("div",{className:"flex items-center justify-center gap-1",children:[E?jsx(e,{type:"button",variant:"ghost",size:"icon-sm","aria-label":G?x$1.collapseRow:x$1.expandRow,"aria-expanded":G,"data-tree-toggle":"true",onClick:()=>P.toggleExpanded(),children:jsx(c,{className:a("transition-transform",G?"rotate-0":"-rotate-90")})}):null,g?jsx(e,{type:"button",variant:"ghost",size:"icon-sm","aria-label":H?k?x$1.collapseRowDetails??ae.collapseRowDetails:x$1.collapseRow:k?x$1.expandRowDetails??ae.expandRowDetails:x$1.expandRow,"aria-expanded":H,"data-detail-toggle":"true",onClick:()=>{m(V=>v$1(V,P.id,R.getCoreRowModel().flatRows.map(Q=>Q.id)));},children:jsx(c,{className:a("transition-transform",H?"rotate-0":"-rotate-90")})}):null]})}});}return D&&L.push({id:"__select__",enableResizing:false,enableSorting:false,enableHiding:false,size:u,minSize:u,maxSize:u,header:({table:T})=>{let P=r==="filtered",R=(P?T.getFilteredRowModel().flatRows:T.getRowModel().flatRows).filter(H=>H.getCanSelect()&&H.getCanMultiSelect()),E=R.length>0&&R.every(H=>H.getIsSelected()),g=R.some(H=>H.getIsSelected()),G=P?x$1.selectAllFilteredRows??ae.selectAllFilteredRows:x$1.selectAllVisibleRows??ae.selectAllVisibleRows;return R.length===0?jsx("span",{className:"sr-only",children:G}):jsx("div",{className:"flex items-center justify-center",children:jsx(t,{className:"my-0.5",checked:E?true:g?"indeterminate":false,onCheckedChange:H=>{T.setRowSelection(V=>{let Q={...V};for(let A of R)H===true?Q[A.id]=true:delete Q[A.id];return Q});},"aria-label":G})})},cell:({row:T})=>jsx("div",{className:"flex items-center justify-center",children:jsx(t,{className:"my-0.5",checked:T.getIsSelected(),disabled:!T.getCanSelect(),onClick:P=>{if(!P.shiftKey||!N.current||!T.getCanMultiSelect()){N.current=T.id;return}P.preventDefault(),P.stopPropagation(),y(T.id,!T.getIsSelected()),N.current=T.id;},onCheckedChange:P=>{N.current=T.id,T.toggleSelected(P===true);},"aria-label":x$1.selectRow??ae.selectRow})})}),L.push(...f.map(T=>A(T))),(C.length||p||I)&&L.push({id:"__actions__",enableSorting:false,enableResizing:false,enableHiding:false,size:u,minSize:u,maxSize:u,header:()=>jsx("span",{className:"sr-only",children:x$1.actions}),cell:({row:T})=>{let P=T.id;return w===P?jsxs("div",{className:"flex w-full items-center justify-end gap-2",children:[jsx(e,{type:"button",size:"sm",disabled:F,onClick:()=>{b(T.original);},children:x$1.saveEdit}),jsxs(n,{children:[jsx(l,{asChild:true,children:jsxs(e,{type:"button",size:"icon-sm",variant:"ghost",onClick:s,children:[jsx(c,{className:"rotate-45"}),jsx("span",{className:"sr-only",children:x$1.cancelEdit})]})}),jsx(i,{children:x$1.cancelEdit})]})]}):jsx("div",{className:"flex w-full items-center justify-center",children:jsx(a$1,{row:T.original,rowActions:C,editableRows:p,isEditing:false,onStartEditing:()=>{h(T.original,T.id);},onCancelEditing:()=>{},labels:x$1,rowPinning:I?{canPin:T.getCanPin(),position:T.getIsPinned(),pin:E=>T.pin(E)}:void 0})})}}),L},[e,t,a$1,n,i,l,s,f,p,u$1,j,w,D,I,k,F,x$1,N,m,r,C,b,y,h])}function Se({defaultValue:e,onChange:t,value:a}){let[n,i]=v.useState(e),l=a??n,s=v.useRef(l);v.useEffect(()=>{s.current=l;},[l]);let f=v.useCallback(p=>{let w=typeof p=="function"?p(s.current):p;s.current=w,t?.(w),a===void 0&&i(w);},[t,a]);return [l,f]}function Fo({enabled:e,hasMore:t,isLoadingMore:a,onLoadMore:n,onError:i}){let l=v.useRef(null),s=v.useRef(false),f=v.useEffectEvent(n),p=v.useEffectEvent(w=>{i?.(w);});return v.useEffect(()=>{if(!e||!t||a)return;let w=l.current;if(!w)return;let D=new IntersectionObserver(I=>{if(I[0].isIntersecting&&!s.current){s.current=true;let F;try{F=f();}catch(x){s.current=false,p(x);return}Promise.resolve(F).catch(x=>{p(x);}).finally(()=>{s.current=false;});}},{rootMargin:"200px 0px 200px 0px"});return D.observe(w),()=>{D.disconnect();}},[e,t,a]),l}function No({enabled:e,maxPageIndex:t,onPageIndexChange:a,pageIndex:n,setLocalPageIndex:i}){v.useEffect(()=>{if(!e||n>=0&&n<=t)return;let l=Math.min(Math.max(n,0),t);i(l),a?.(l);},[e,t,a,n,i]);}function Lo({autoResetPageIndex:e,columnGroupPaths:t,columnResizeMode:a,dir:n,currentColumnFilters:i,currentColumnOrder:l,currentColumnPinning:s,currentRowPinning:f,currentColumnSizing:p,currentExpanded:w,currentPagination:D$1,currentRowSelection:I,currentSorting:k,currentViewMode:F,defaultColumn:x$1,effectiveColumnVisibility:N,enableColumnResizing:j,enableMultiRowSelection:u,enableRowPinning:m,enableRowSelection:r,enableSubRowSelection:C$1,getRowCanSelect:b,getRowCanExpand:h,getSubRows:M,globalFilterFn:y,globalFilterValue:L,hasNextPage:T,handleColumnFiltersChange:P,handleColumnOrderChange:R,handleColumnPinningChange:E,handleRowPinningChange:g,handleColumnVisibilityChange:G$1,handleExpandedChange:H,infiniteScroll:V,keepPinnedRows:Q$1,manualFiltering:A,manualExpanding:se,manualPagination:Te,manualSorting:z,onActionError:Z,onPageIndexChange:J$1,onPageSizeChange:Ce,pageCount:Pe,pageIndex:de,pageSize:we,paginateExpandedRows:Ye,filterFromLeafRows:Je,maxLeafRowFilterDepth:He,setCurrentRowSelection:W,setCurrentSorting:De,setLocalColumnSizing:_,setLocalPagination:oe,shouldRenderInitialLoading:Xe,tableColumns:Be,tableData:ue,tableGetRowId:$e,tableRef:ce,totalRowCount:Ue,virtualization:ve}){let ze=v.useMemo(()=>D(Be).map(({column:S,index:$})=>J(S,$)),[Be]),_e=v.useMemo(()=>{let S=ze,$=S.filter(ee=>!O(ee)&&ee!=="__spacer__"),fe=new Set($),ye=l.filter(ee=>fe.has(ee)),ne=$.filter(ee=>!ye.includes(ee));return [...S.filter(ee=>ee==="__expand__"||ee==="__select__"),...ye,...ne,...S.filter(ee=>ee==="__spacer__"),...S.filter(ee=>ee==="__actions__")]},[l,ze]),Ze=v.useMemo(()=>{let S=new Set(ze),$=new Set(ze.filter(ne=>!O(ne)&&ne!=="__spacer__")),fe=(s.left??[]).filter(ne=>$.has(ne)),ye=(s.right??[]).filter(ne=>$.has(ne));return {left:[...["__expand__","__select__"].filter(ne=>S.has(ne)),...fe],right:[...ye,...["__actions__"].filter(ne=>S.has(ne))]}},[s,ze]),xe=v.useMemo(()=>{let S=new Set,$=ee=>{ee.forEach((St,Ae)=>{if(S.add($e(St,Ae)),!x(St)){let nt=M?.(St,Ae);nt?.length&&$(nt);}});};$(ue);let fe=(f.top??[]).filter(ee=>S.has(ee)),ye=new Set(fe),ne=(f.bottom??[]).filter(ee=>S.has(ee)&&!ye.has(ee));return {top:fe,bottom:ne}},[f.bottom,f.top,M,ue,$e]),Dt=v.useMemo(()=>({sorting:k,pagination:D$1,rowSelection:I,columnVisibility:N,columnFilters:i,globalFilter:L,expanded:w,columnOrder:_e,columnPinning:Ze,rowPinning:xe,columnSizing:p}),[i,p,w,D$1,I,k,N,_e,Ze,xe,L]),et=v.useCallback(S=>{let $=typeof S=="function"?S(D$1):S;(de===void 0||we===void 0)&&oe(fe=>({pageIndex:de===void 0?$.pageIndex:fe.pageIndex,pageSize:we===void 0?$.pageSize:fe.pageSize})),$.pageIndex!==D$1.pageIndex&&J$1?.($.pageIndex),$.pageSize!==D$1.pageSize&&Ce?.($.pageSize);},[D$1,J$1,Ce,de,we,oe]),tt=v.useCallback(S=>{_(S);},[_]),me=useReactTable({data:ue,columns:Be,getCoreRowModel:getCoreRowModel(),getFilteredRowModel:A?void 0:getFilteredRowModel(),getSortedRowModel:z?void 0:getSortedRowModel(),getExpandedRowModel:M&&!se?getExpandedRowModel():void 0,getPaginationRowModel:Te||V?.enabled?void 0:getPaginationRowModel(),enableRowSelection:b?S=>r&&b(S.original):r,enableRowPinning:typeof m=="function"?S=>m(S.original):m,keepPinnedRows:Q$1,enableMultiRowSelection:typeof u=="function"?S=>u(S.original):u,enableSubRowSelection:typeof C$1=="function"?S=>C$1(S.original):C$1,enableColumnResizing:j,columnResizeMode:a,columnResizeDirection:n,getRowId:$e,getSubRows:M,getRowCanExpand:M?S=>h?.(S.original)??S.subRows.length>0:void 0,globalFilterFn:y??G,getColumnCanGlobalFilter:S=>S.columnDef.enableGlobalFilter!==false&&typeof S.accessorFn=="function",manualSorting:z,manualFiltering:A,manualExpanding:se,manualPagination:Te||!!V?.enabled,paginateExpandedRows:Ye,filterFromLeafRows:Je,maxLeafRowFilterDepth:He,defaultColumn:x$1,autoResetPageIndex:e,state:Dt,onSortingChange:De,onPaginationChange:et,onRowSelectionChange:W,onColumnVisibilityChange:G$1,onColumnFiltersChange:P,onExpandedChange:H,onColumnOrderChange:R,onColumnPinningChange:E,onRowPinningChange:g,onColumnSizingChange:tt});ce.current=me;let dt=me.getVisibleLeafColumns(),ct=v.useCallback((S,$)=>{if(S===$||!C(S,$,t))return;let fe=me.getAllLeafColumns().map(ne=>ne.id).filter(ne=>!O(ne)),ye=Q(l.length?l:fe,S,$);R(ye);},[t,l,R,me]),Ne=me.getTopRows(),ut=me.getBottomRows(),je=F==="table"?me.getCenterRows():me.getRowModel().rows,Ge=typeof ve=="object"?ve:void 0,pt=ve===true||Ge?.enabled===true,Ke=Math.max(1,Math.floor(Ge?.fallbackRowCount??20)),o=(pt?je.slice(0,Ke):je).map((S,$)=>({row:S,rowIndex:$})),q=Te||!!V?.enabled,he=q?void 0:me.getFilteredRowModel().rows.length,Ee=Ue??he,ht=!q||Pe!==void 0||Ue!==void 0,bt=Ee,yt=Xe?1:Pe??(Ee!==void 0?Math.max(1,Math.ceil(Ee/D$1.pageSize)):q?D$1.pageIndex+(T?2:1):me.getPageCount()),Rt=Math.max(0,yt-1),At=v.useCallback(S=>{de===void 0&&oe($=>$.pageIndex===S?$:{...$,pageIndex:S});},[de,oe]);No({enabled:!Xe&&!V?.enabled&&ht,maxPageIndex:Rt,onPageIndexChange:J$1,pageIndex:D$1.pageIndex,setLocalPageIndex:At});let It=v.useCallback(S=>{S!==D$1.pageIndex&&(J$1?.(S),de===void 0&&oe($=>$.pageIndex===S?$:{...$,pageIndex:S}));},[D$1.pageIndex,J$1,de,oe]),gt=v.useCallback(S=>{D$1.pageIndex!==0&&J$1?.(0),S!==D$1.pageSize&&Ce?.(S),we===void 0&&oe({pageIndex:0,pageSize:S});},[D$1.pageIndex,D$1.pageSize,J$1,Ce,we,oe]),at=Fo({enabled:!!V?.enabled,hasMore:!!V?.hasMore,isLoadingMore:V?.isLoadingMore,onLoadMore:()=>V?.onLoadMore(),onError:S=>{Z?.({error:S,source:"infiniteScroll"});}});return {effectivePageCount:yt,footerTotalRowCount:bt,handleFooterPageIndexChange:It,handleFooterPageSizeChange:gt,isPageCountKnown:ht,renderedRows:je,topPinnedRows:Ne,bottomPinnedRows:ut,reorderColumn:ct,rowsToRender:o,sentinelRef:at,table:me,virtualPaddingBottom:0,virtualPaddingTop:0,visibleLeafColumns:dt}}var pl="data-table-pro:column-prefs:",_o=1,Oo=["visibility","sizing","order","pinning","rowPinning","density"];function Ho(e){let t=Ya(e);if(!t)return {};let a=Ja(t);if(!a)return {};let n=Xa(t.key),i;try{i=a.getItem(n);}catch(p){return t.onError?.({error:p,operation:"read"}),{}}if(!i)return {};let l;try{l=(t.deserialize??JSON.parse)(i);}catch(p){return t.onError?.({error:p,operation:"deserialize"}),{}}let s=t.version??_o,f;if(ml(l))if(l.version===s)f=l.state;else if(t.migrate)try{f=t.migrate({version:l.version,state:l.state},s);}catch(p){return t.onError?.({error:p,operation:"migrate"}),{}}else return {};else f=l;return Uo(bl(f),t.slices)}function Bo(e){let t=Ya(e);if(!t)return false;let a=Ja(t);if(!a)return false;try{return a.removeItem(Xa(t.key)),!0}catch(n){return t.onError?.({error:n,operation:"remove"}),false}}function $o({key:e,persistence:t,prefs:a}){let n=t??Ya(e),i=n?Ja(n):void 0,l=n?Xa(n.key):void 0,s=n?.version??_o,f=Math.max(0,n?.debounceMs??100),p=Uo(a,n?.slices),w=v.useMemo(()=>{if(!n)return {value:void 0};try{let I={version:s,state:p};return {value:(n.serialize??JSON.stringify)(I)}}catch(I){return {error:I,value:void 0}}},[n,p,s]),D=v.useEffectEvent((I,k)=>{n?.onError?.({error:I,operation:k});});v.useEffect(()=>{w.error!==void 0&&D(w.error,"serialize");},[w.error]),v.useEffect(()=>{if(!i||!l||w.value===void 0)return;let I=()=>{try{if(i.getItem(l)===w.value)return;i.setItem(l,w.value);}catch(F){D(F,"write");}};if(f===0){I();return}let k=globalThis.setTimeout(I,f);return ()=>{globalThis.clearTimeout(k);}},[f,w.value,i,l]);}function Ya(e){if(e)return typeof e=="string"?{key:e}:e}function Ja(e){if(e.storage)return e.storage;if(!(typeof window>"u"))try{return window.localStorage}catch(t){e.onError?.({error:t,operation:"read"});return}}function Xa(e){return `${pl}${e}`}function ml(e){return Ht(e)&&Object.prototype.hasOwnProperty.call(e,"version")&&Object.prototype.hasOwnProperty.call(e,"state")}function Uo(e,t){let a=new Set(t??Oo),n={};for(let i of Oo)a.has(i)&&e[i]!==void 0&&Object.assign(n,{[i]:e[i]});return n}function bl(e){if(!Ht(e))return {};let t={},a=gl(e.visibility);a&&(t.visibility=a);let n=fl(e.sizing);n&&(t.sizing=n);let i=Zt(e.order);if(i&&(t.order=i),Ht(e.pinning)){let s=Zt(e.pinning.left)??[],f=Zt(e.pinning.right)??[];t.pinning={left:s,right:f};}let l=Tl(e.rowPinning);return l&&(t.rowPinning=l),Cl(e.density)&&(t.density=e.density),t}function gl(e){if(Ht(e))return Object.fromEntries(Object.entries(e).filter(t=>typeof t[1]=="boolean"))}function fl(e){if(Ht(e))return Object.fromEntries(Object.entries(e).filter(t=>typeof t[1]=="number"&&Number.isFinite(t[1])&&t[1]>=0))}function Zt(e){if(Array.isArray(e))return e.filter(t=>typeof t=="string")}function Tl(e){if(Ht(e))return {top:Zt(e.top)??[],bottom:Zt(e.bottom)??[]}}function Cl(e){return e==="compact"||e==="comfortable"||e==="spacious"}function Ht(e){return !!e&&typeof e=="object"&&!Array.isArray(e)}var wl=Object.values(b).slice().sort((e,t)=>e-t);function jo(e){let t=v.useRef(0),[a,n]=v.useState(0);return v.useEffect(()=>{let i=e.current;if(!i)return;let l=(f=i.clientWidth)=>{let p=Dl(f);p!==t.current&&(t.current=p,n(p));};if(l(),typeof ResizeObserver>"u")return;let s=new ResizeObserver(f=>{let p=f[0];l(p?hl(p):void 0);});return s.observe(i),()=>{s.disconnect();}},[e]),a}function Dl(e){if(e<=0)return 0;let t=1;for(let a of wl){if(es??(l?{key:l}:void 0),[l,s]),De=v.useMemo(()=>Ho(W),[W]),[_,oe]=v.useState({pageIndex:u?.pagination?.pageIndex??0,pageSize:u?.pagination?.pageSize??Z[0]??20}),[Xe,Be]=Se({value:Pe,onChange:H,defaultValue:()=>u?.sorting??[]}),[ue,$e]=Se({value:z,onChange:g,defaultValue:()=>u?.rowSelection??{}}),[ce,Ue]=Se({value:f,onChange:T,defaultValue:()=>u?.columnVisibility??De.visibility??{}}),[ve,ze]=Se({value:e,onChange:b,defaultValue:()=>u?.columnFilters??[]}),[_e,Ze]=Se({value:F,onChange:R,defaultValue:()=>u?.expanded??{}}),[xe,Dt]=Se({value:t,onChange:h,defaultValue:()=>u?.columnOrder??De.order??[]}),[et,tt]=Se({value:a,onChange:M,defaultValue:()=>u?.columnPinning??De.pinning??I(p)}),[me,dt]=Se({value:n,onChange:y$1,defaultValue:()=>u?.rowPinning??De.rowPinning??{top:[],bottom:[]}}),[ct,Ne]=Se({value:i,onChange:L,defaultValue:()=>u?.columnSizing??De.sizing??{}}),[ut,je]=Se({value:Je,onChange:Q,defaultValue:()=>u?.viewMode??"table"}),[Ge,pt]=Se({value:Ce,onChange:G,defaultValue:()=>u?.showHiddenRows??false}),[Ke,mt]=Se({value:D$1,onChange:P,defaultValue:()=>u?.density??De.density??"comfortable"}),o=Ye??u?.globalFilter??"",q=we??Te.searchPlaceholder,he=de??250,[Ee,ht]=v.useState(o),bt=jo(He),yt=!!V,Rt=v.useRef(o),At=v.useEffectEvent(O=>{Rt.current=O,V?.(O);});v.useEffect(()=>{Rt.current=o,ht(o);},[o]),v.useEffect(()=>{if(!yt||Ee===o||Ee===Rt.current)return;let O=window.setTimeout(()=>{At(Ee);},he);return ()=>{window.clearTimeout(O);}},[yt,Ee,he,o]);let It=v.useMemo(()=>({pageIndex:A??_.pageIndex,pageSize:se??_.pageSize}),[_.pageIndex,_.pageSize,A,se]),gt=Math.max(1,r??Math.min(5,It.pageSize)),at=k?Ee:"",S=v.useCallback(O=>{je(O);},[je]),$=v.useCallback(O=>{pt(O);},[pt]),fe=v.useCallback(O=>{mt(O);},[mt]),ye=v.useCallback(()=>{E?.(0),A===void 0&&oe(O=>O.pageIndex===0?O:{...O,pageIndex:0});},[E,A]),ne=v.useRef({columnFilters:ve,globalFilterValue:at});v.useEffect(()=>{let O=ne.current,ke=O.columnFilters!==ve,Pt=O.globalFilterValue!==at;ne.current={columnFilters:ve,globalFilterValue:at},!C&&(!ke&&!Pt||ye());},[ve,at,C,ye]),$o({persistence:W,prefs:{visibility:f?void 0:ce,sizing:i===void 0?ct:void 0,order:t?void 0:xe,pinning:a?void 0:et,rowPinning:n===void 0?me:void 0,density:D$1?void 0:Ke}});let ee=v.useMemo(()=>D(p).reduce((O,{column:ke,index:Pt})=>{let vt=J(ke,Pt);return j(ke.meta?.hideOn,bt)&&(O[vt]=false),O},{}),[p,bt]),St=v.useMemo(()=>({...ce,...ee}),[ce,ee]),Ae=v.useMemo(()=>w$1.filter(O=>c$1(O,j$1,Ge)),[Ge,w$1,j$1]),nt=m&&Ae.length===0,Re=v.useMemo(()=>w(gt),[gt]),te=nt?Re:Ae,be=v.useCallback((O,ke)=>x(O)?y(ke):N(O,ke),[N]),ie=I$1||(J$1?.length??0)>0||Object.values(ue).some(Boolean),na=v.useMemo(()=>{if(!ie)return new Map;let O=new Map,ke=Pt=>{Pt.forEach((vt,jt)=>{O.set(N(vt,jt),vt);let ia=x$1?.(vt,jt);ia?.length&&ke(ia);});};return ke(Ae),O},[N,x$1,ie,Ae]),oa=v.useMemo(()=>ie?Object.entries(ue).filter(([,O])=>O).map(([O])=>na.get(O)).filter(O=>!!O):[],[ue,na,ie]),Ea=v.useMemo(()=>Object.entries(ue).flatMap(([O,ke])=>ke?[O]:[]),[ue]);return {containerWidth:bt,currentColumnFilters:ve,currentColumnOrder:xe,currentColumnPinning:et,currentRowPinning:me,currentColumnSizing:ct,currentColumnVisibility:ce,currentDensity:Ke,currentExpanded:_e,currentPagination:It,currentRowSelection:ue,currentShowHiddenRows:Ge,currentSorting:Xe,currentViewMode:ut,effectiveColumnVisibility:St,globalFilterValue:at,handleDensityChange:fe,handleShowHiddenRowsChange:$,handleViewModeChange:S,localSearchValue:Ee,resolvedLoadingRowCount:gt,resolvedToolbarQueryPlaceholder:q,selectedRowIds:Ea,selectedRows:oa,setCurrentColumnFilters:ze,setCurrentColumnOrder:Dt,setCurrentColumnPinning:tt,setCurrentRowPinning:dt,setCurrentColumnVisibility:Ue,setCurrentExpanded:Ze,setCurrentRowSelection:$e,setCurrentSorting:Be,setLocalColumnSizing:Ne,setLocalPagination:oe,setLocalSearchValue:ht,shouldRenderInitialLoading:nt,tableData:te,tableGetRowId:be,toolbarFilteredData:Ae,visibleData:Ae}}var Rl={cellStyle:void 0,colStyle:void 0,fixedSide:void 0,headerStyle:void 0,isActionsColumn:false,isExpansionColumn:false,isSelectionColumn:false,isSpacerColumn:false,isUtilityColumn:false,pinnedClassName:void 0,utilityClassName:void 0};function Wo({columns:e,columnSizing:t,editableRows:a,enableRowSelection:n,hasRowActions:i,hasRowExpansion:l,layoutMode:s,uiClassNames:f,visibleLeafColumns:p}){let w=v.useMemo(()=>{let u=new Set;for(let{column:m,index:r}of D(e))Object.prototype.hasOwnProperty.call(m,"size")&&u.add(J(m,r));return n&&u.add("__select__"),l&&u.add("__expand__"),(i||a)&&u.add("__actions__"),u},[e,a,n,i,l]),D$1=v.useMemo(()=>{let u=new Map;for(let{column:m,index:r}of D(e)){let C=z(m);C!==void 0&&u.set(J(m,r),C);}return u},[e]),I=v.useMemo(()=>{let u=new Map,m=new Map,r=0;for(let b of p)M(b)==="left"&&(u.set(b.id,r),r+=Ko(b));let C=0;for(let b of [...p].reverse())M(b)==="right"&&(m.set(b.id,C),C+=Ko(b));return {left:u,right:m}},[p]),k=v.useMemo(()=>{if(s!=="fill")return;let u=p.filter(r=>!O(r.id));return u.length&&u.every(r=>w.has(r.id)||Object.prototype.hasOwnProperty.call(t,r.id))?u[u.length-1]?.id:void 0},[t,w,s,p]),F=v.useMemo(()=>{let u=new Set([...w,...Object.keys(t)]);return k&&u.delete(k),u},[t,w,k]),x=v.useMemo(()=>{let u$1=new Map;for(let m of p){let r=m.id==="__select__",C=m.id==="__expand__",b=m.id==="__actions__",h=r||C||b,M$1=m.id==="__spacer__",y=D$1.get(m.id),L=m.id===k,T=y??(L?m.getSize():void 0),P=!M$1&&(s==="fit"||h||F.has(m.id)),R=P||T!==void 0?{width:P?h?u:m.getSize():void 0,minWidth:h?u:P?m.getSize():T,maxWidth:P?h?u:m.getSize():void 0}:void 0,E=M(m),g=E?{left:E==="left"?I.left.get(m.id):void 0,right:E==="right"?I.right.get(m.id):void 0}:void 0,G=R||g?{...R,...g}:void 0;u$1.set(m.id,{cellStyle:G,colStyle:R,fixedSide:E,headerStyle:G,isActionsColumn:b,isExpansionColumn:C,isSelectionColumn:r,isSpacerColumn:M$1,isUtilityColumn:h,pinnedClassName:E?N(E,f,{isUtilityColumn:h}):void 0,utilityClassName:h?"w-[50px] max-w-[50px] min-w-[50px] px-0":void 0});}return u$1},[k,F,s,D$1,I,f,p]),N$1=v.useMemo(()=>p.reduce((u$1,m)=>{let r=x.get(m.id),C=D$1.get(m.id),b=m.id===k;return r?.isUtilityColumn?u$1+u:F.has(m.id)?u$1+m.getSize():u$1+(C??(b?m.getSize():0))},0),[x,k,F,D$1,p]),j=v.useCallback(u=>x.get(u)??Rl,[x]);return {columnLayouts:x,explicitlySizedColumnIds:w,fillMinWidth:N$1,getColumnLayout:j}}function Ko(e){return O(e.id)?u:e.getSize()}function qo(e,t){let a$1=e.classNames??{},{Button:n,Card:i,CardContent:l,CardHeader:s,Checkbox:f,Skeleton:p}=e;return function({rows:D,cardRenderer:I,cardSizing:k="fixed",cardGridClassName:F,cardClassName:x,rowActions:N,editableRows:j,detailPanel:u,detailExpanded:m,onDetailExpandedChange:r,hasCardTitle:C,rowSelection:b,onRowSelectionChange:h,enableRowSelection:M,editingRowId:y,onEditingRowIdChange:L,getRowClassName:T,onRowClick:P$1,getRowDraggable:R,onRowDragStart:E,onRowDragEnd:g,isLoading:G=false,loadingRowCount:H=5,labels:V}){let Q=k??"fixed",A=F?a("grid",F):Sl(Q),se=a("min-h-0 w-full gap-4 p-1",a$1.cardGrid,A),Te=z=>a("relative min-w-0 max-w-full gap-0 overflow-hidden bg-transparent p-0",Pl(Q),a$1.cardItem,x,z);return G?jsx("div",{role:"list","data-dtp-slot":"data-table-card-grid",className:se,children:Array.from({length:Math.max(1,H)},(z,Z)=>jsxs(i,{role:"listitem","aria-hidden":"true","data-dtp-slot":"data-table-card-item",className:Te("min-h-52"),children:[C?jsxs(s,{className:"px-4 pt-4 pb-3",children:[jsx(p,{className:"h-5 w-40 max-w-[70%]"}),jsx(p,{className:"h-4 w-24 max-w-[40%]"})]}):null,jsxs(l,{className:a("space-y-3 pb-4",C?"":"pt-4"),children:[jsx(p,{className:"h-4 w-full"}),jsx(p,{className:"h-4 w-[82%]"}),jsx(p,{className:"h-4 w-[68%]"}),jsx(p,{className:"h-24 w-full rounded-xl"})]})]},`loading-card-${Z}`))}):jsx("div",{role:"list","data-dtp-slot":"data-table-card-grid",className:se,children:D.map(z=>{let Z=z.id,J=z.original,Ce=!!b[Z],Pe=y===Z,de=N.length>0||!!j,we=!!(u&&(u.getRowCanExpand?.(J)??true)),Ye=M||de||C,Je=M||de||z.getCanExpand()||we,He=()=>{P$1&&P$1({row:J,rowId:Z});};return jsxs(i,{role:"listitem","data-row-id":Z,"data-tree-depth":z.depth,draggable:R?.(J)??false,"data-dtp-slot":"data-table-card-item","data-state":Ce?"selected":void 0,className:Te(a([T?.(J,{row:J,rowId:Z,rowIndex:z.index,isEditing:Pe,isExpanded:z.getIsExpanded(),isLoading:false,isSelected:Ce,pinnedPosition:false})].filter(Boolean).join(" "),"transition transition-colors hover:scale-101 data-[state=selected]:scale-101",a$1.card,Ce?a$1.cardSelected:a$1.cardUnselected)),onDragStart:W=>{E?.({row:J,rowId:Z,event:W});},onDragEnd:W=>{g?.({row:J,rowId:Z,event:W});},children:[Ye?jsx("div",{"aria-hidden":"true",className:a("pointer-events-none absolute inset-x-0 top-0 z-10 h-24 bg-linear-to-b opacity-0 transition-opacity group-hover/card:opacity-100",a$1.cardOverlay??"from-transparent via-transparent to-transparent")}):null,jsx("div",{"data-dtp-slot":"data-table-card-renderer",role:P$1?"button":void 0,tabIndex:P$1?0:void 0,className:a("flex min-h-0 max-w-full min-w-0 overflow-hidden rounded-[inherit] [&>*]:min-w-0",vl(Q),P$1&&"cursor-pointer focus-visible:outline-none"),onClick:W=>{P(W.target,W.currentTarget)||He();},onKeyDown:W=>{P(W.target,W.currentTarget)||(W.key==="Enter"||W.key===" ")&&(W.preventDefault(),He());},children:I({row:J,rowId:Z,depth:z.depth,canExpandSubRows:z.getCanExpand(),isSubRowsExpanded:z.getIsExpanded(),toggleSubRowsExpanded:()=>z.toggleExpanded(),isSelected:Ce,onSelectedChange:W=>{h(Qo(b,Z,W,z.getCanSelect(),z.getCanMultiSelect()));},actions:N,isEditing:Pe,startEditing:()=>{L(Z);},cancelEditing:()=>{L(null);}})}),Pe||!u||!(m===true||m[z.id])?null:jsx("div",{"data-dtp-slot":"data-table-card-detail-panel",className:"relative z-20 min-w-0",children:u.render({row:J,rowId:Z,tableRow:z})}),Je?jsxs(s,{className:"absolute inset-x-0 top-0 z-20 flex flex-row items-center gap-3 space-y-0 px-4 pt-4 pb-8",children:[M?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(f,{checked:Ce,disabled:!z.getCanSelect(),"aria-label":(V.selectCardRow??ae.selectCardRow)(Z),onCheckedChange:W=>{h(Qo(b,Z,W===true,z.getCanSelect(),z.getCanMultiSelect()));}})}):null,z.getCanExpand()?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(n,{type:"button",size:"icon-sm",variant:"ghost","aria-label":z.getIsExpanded()?V.collapseRow:V.expandRow,"aria-expanded":z.getIsExpanded(),onClick:()=>z.toggleExpanded(),children:jsx(c,{className:a("transition-transform",z.getIsExpanded()?"rotate-0":"-rotate-90")})})}):null,we?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(n,{type:"button",size:"icon-sm",variant:"ghost","aria-label":m===true||m[z.id]?z.getCanExpand()?V.collapseRowDetails??ae.collapseRowDetails:V.collapseRow:z.getCanExpand()?V.expandRowDetails??ae.expandRowDetails:V.expandRow,"aria-expanded":m===true||!!m[z.id],"data-detail-toggle":"true",onClick:()=>{r(W=>v$1(W,z.id,D.map(De=>De.id)));},children:jsx(c,{className:a("transition-transform",m===true||m[z.id]?"rotate-0":"-rotate-90")})})}):null,jsx("div",{className:"pointer-events-none min-w-0 flex-1"}),de?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(t,{row:J,rowActions:N,editableRows:j,isEditing:Pe,onStartEditing:()=>{L(Z);},onCancelEditing:()=>{L(null);},labels:V})}):null]}):null]},Z)})})}}function Sl(e){switch(e){case "content":return "flex flex-wrap items-start justify-start";case "fluid":return "grid grid-cols-[repeat(auto-fit,minmax(min(18rem,100%),1fr))]";default:return "grid grid-cols-[repeat(auto-fill,minmax(min(18rem,100%),18rem))] justify-start"}}function Pl(e){switch(e){case "content":return "w-fit";case "fluid":return "w-full";default:return}}function vl(e){switch(e){case "content":return "w-fit";case "fluid":return "w-full flex-1 [&>*]:w-full";default:return "flex-1"}}function Qo(e,t,a,n,i){if(!n)return e;if(a)return i?{...e,[t]:true}:{[t]:true};if(!e[t])return e;let l={...e};return delete l[t],l}function Jo(e){let t=e.classNames??{},{Empty:a,EmptyContent:n,EmptyDescription:i,EmptyHeader:l,EmptyMedia:s,EmptyTitle:f}=e;return function({title:w="No rows found",description:D="Adjust your filters or create a new record to populate this table."}){return jsxs(a,{className:`min-h-60 rounded-2xl ${t.emptyState??"border bg-transparent"}`,children:[jsxs(l,{children:[jsx(s,{variant:"icon",children:jsx(o,{})}),jsx(f,{children:w}),jsx(i,{children:D})]}),jsx(n,{})]})}}function Xo(e){let t=e.classNames??{},{Pagination:a,PaginationContent:n,PaginationEllipsis:i$1,PaginationFirst:l,PaginationItem:s,PaginationLast:f,PaginationLink:p,PaginationNext:w,PaginationPrevious:D,Select:I,SelectContent:k,SelectGroup:F,SelectItem:x,SelectTrigger:N,SelectValue:j,Tooltip:u,TooltipContent:m,TooltipTrigger:r}=e;function C({pageIndex:h,pageCount:M,pageCountKnown:y,pageSize:L,totalRowCount:T,rowsPerPageOptions:P,onPageIndexChange:R,onPageSizeChange:E,labels:g}){let G=y?xl(h,Math.max(1,M)):[],H=h>0,V=h+1{E(Number(A));},children:[jsx(N,{"aria-label":g.recordsPerPage,className:`w-22 ${t.paginationSelectTrigger??""}`,children:jsx(j,{})}),jsx(k,{children:jsx(F,{children:P.map(A=>jsx(x,{value:String(A),children:A},A))})})]})]}),T!==void 0?jsx("div",{className:"flex shrink-0 items-center justify-center",children:jsxs("div",{className:`inline-flex items-center gap-2 px-2.5 py-1.5 text-sm ${t.paginationTotal??""}`,"aria-label":g.totalRecords(T),children:[jsx(i,{className:"size-4"}),jsx("span",{className:"@min-[768px]/data-table:hidden",children:T}),jsx("span",{className:"hidden @min-[768px]/data-table:inline",children:g.totalRecords(T)})]})}):null,jsxs("div",{className:"flex flex-1 items-center justify-end gap-4",children:[jsx("div",{className:`hidden text-sm @min-[768px]/data-table:inline ${t.mutedText??"opacity-70"}`,children:y?g.pageStatus(h,Math.max(1,M)):(g.pageStatusUnknown??ae.pageStatusUnknown)(h)}),jsx(a,{"aria-label":g.pagination??ae.pagination,className:"mx-0 w-auto justify-end",children:jsxs(n,{children:[jsx(s,{className:"@min-[768px]/data-table:hidden",children:jsxs(u,{children:[jsx(r,{asChild:true,children:jsx(l,{"aria-label":g.firstPage,href:"#",size:"icon-sm",showText:false,disabled:!H,onClick:A=>{A.preventDefault(),H&&R(0);},text:g.firstPage})}),jsx(m,{children:g.firstPage})]})}),jsx(s,{children:jsxs(u,{children:[jsx(r,{asChild:true,children:jsx(D,{"aria-label":g.previousPage,href:"#",size:"icon-sm",showText:false,disabled:!H,onClick:A=>{A.preventDefault(),H&&R(h-1);},text:g.previousPage})}),jsx(m,{children:g.previousPage})]})}),G.map((A,se)=>jsx(s,{className:"hidden @min-[768px]/data-table:block",children:A==="ellipsis"?jsx(i$1,{text:g.morePages??ae.morePages}):jsx(p,{href:"#",isActive:A===h+1,size:"icon-sm",onClick:Te=>{Te.preventDefault(),R(A-1);},children:A})},`${A}-${se}`)),jsx(s,{children:jsxs(u,{children:[jsx(r,{asChild:true,children:jsx(w,{"aria-label":g.nextPage,href:"#",size:"icon-sm",showText:false,disabled:!V,onClick:A=>{A.preventDefault(),V&&R(h+1);},text:g.nextPage})}),jsx(m,{children:g.nextPage})]})}),y?jsx(s,{className:"@min-[768px]/data-table:hidden",children:jsxs(u,{children:[jsx(r,{asChild:true,children:jsx(f,{"aria-label":g.lastPage,href:"#",size:"icon-sm",showText:false,text:g.lastPage,disabled:!V,onClick:A=>{A.preventDefault(),V&&R(Q);}})}),jsx(m,{children:g.lastPage})]})}):null]})})]})]})}function b(h){return jsx("div",{className:`rounded-md border px-2 py-1 ${t.footer??""}`,children:jsx(C,{...h})})}return {DataTableFooter:b,DataTablePagination:C}}function xl(e,t){let a=e+1,n=new Set([1,t]);for(let s=Math.max(1,a-2);s<=Math.min(t,a+2);s+=1)n.add(s);let i=Array.from(n).sort((s,f)=>s-f),l=[];for(let s=0;s1&&l.push("ellipsis"),l.push(f);}return l}function ei(e$1){let{Button:t$1,DropdownMenu:a,DropdownMenuContent:n,DropdownMenuGroup:i,DropdownMenuItem:l$1,DropdownMenuSeparator:s,DropdownMenuTrigger:f$1,Tooltip:p,TooltipContent:w,TooltipTrigger:D}=e$1;return function({row:k,rowActions:F,editableRows:x,isEditing:N,onStartEditing:j,onCancelEditing:u,labels:m,rowPinning:r}){let C=F.filter(y=>e(y,k)),b=v.useCallback(y=>{y.stopPropagation();},[]);if(N)return jsxs(p,{children:[jsx(D,{asChild:true,children:jsxs(t$1,{type:"button",variant:"ghost",size:"icon-sm",onPointerDown:b,onClick:u,children:[jsx(t,{}),jsx("span",{className:"sr-only",children:m.cancelEdit})]})}),jsx(w,{children:m.cancelEdit})]});let h=f(x,k),M=r?.canPin??false;return !C.length&&!h&&!M?null:jsxs(a,{children:[jsxs(p,{children:[jsx(D,{asChild:true,children:jsx(f$1,{asChild:true,children:jsxs(t$1,{type:"button",variant:"ghost",size:"icon-sm",onPointerDown:b,onClick:b,children:[jsx(j$1,{}),jsx("span",{className:"sr-only",children:m.rowActions})]})})}),jsx(w,{children:m.rowActions})]}),jsxs(n,{align:"end",className:"w-52",children:[h?jsx(i,{children:jsxs(l$1,{onClick:y=>{y.stopPropagation(),j();},children:[jsx(l,{"data-icon":"inline-start"}),m.editRow]})}):null,h&&(C.length||M)?jsx(s,{}):null,M?jsx(i,{children:r?.position?jsx(l$1,{onClick:y=>{y.stopPropagation(),r.pin(false);},children:m.unpinRow}):jsxs(Fragment,{children:[jsx(l$1,{onClick:y=>{y.stopPropagation(),r?.pin("top");},children:m.pinRowToTop}),jsx(l$1,{onClick:y=>{y.stopPropagation(),r?.pin("bottom");},children:m.pinRowToBottom})]})}):null,M&&C.length?jsx(s,{}):null,C.length?jsx(i,{children:C.map(y=>{let L=y.icon;return jsxs(l$1,{disabled:y.disabled?.(k),variant:y.variant==="destructive"?"destructive":void 0,onClick:T=>{T.stopPropagation(),y.onClick(k);},children:[L?jsx(L,{"data-icon":"inline-start"}):null,d(y.label,k)]},y.key)})}):null]})]})}}function ai(e){let t$1=e.classNames??{},{Button:a,ButtonGroup:n,DropdownMenu:i,DropdownMenuCheckboxItem:l,DropdownMenuContent:s,DropdownMenuGroup:f,DropdownMenuItem:p$1,DropdownMenuLabel:w,DropdownMenuSeparator:D,DropdownMenuTrigger:I,InputGroup:k,InputGroupAddon:F,InputGroupInput:x,Tooltip:N,TooltipContent:j,TooltipTrigger:u}=e;return function({title:C,titleId:b,description:h,descriptionId:M,toolbarQueryValue:y,toolbarQueryPlaceholder:L,onToolbarQueryValueChange:T,customToolbar:P,compactToolbar:R,viewMode:E,onViewModeChange:g,enableViewToggle:G,toolbarActions:H,selectionActions:V,selectedRows:Q,selectedRowIds:A,showHiddenRows:se,hiddenRowsLabel:Te,onShowHiddenRowsChange:z,allRows:Z,columnVisibilityOptions:J,onColumnVisibilityChange:Ce,enableColumnPinning:Pe,onColumnPinningChange:de,columnFilters:we,onColumnFilterChange:Ye,onClearColumnFilters:Je,density:He,onDensityChange:W,enableDensityToggle:De,labels:_,toolbarVisibility:oe,openFileDialog:Xe}){let Be=v.useRef(null),[ue,$e]=v.useState(false),ce=t$1.toolbarCompactIconButton??"",Ue=H.filter(o=>(o.placement??"primary")==="primary"),ve=H.filter(o=>o.placement==="trailing"),ze=oe?.title??true,_e=oe?.search??true,Ze=oe?.actions??true,xe=oe?.trailingActions??true,Dt=oe?.options??true,et=oe?.viewToggle??true,tt=oe?.customToolbar??true,me=ze&&!!(C||h),dt=_e,ct=Ze&&Ue.length>0,Ne=A.length>0&&V.length>0,ut=Dt&&(J.some(o=>o.canHide)||!!(z&&Te)||Pe||De),je=et&&G&&!!g,Ge=xe&&ve.length>0,pt=tt&&!!P,Ke=tt&&!!(R??P),mt=_.selectedRows(A.length);return v.useEffect(()=>{ue&&Be.current?.focus();},[ue]),!me&&!dt&&!ct&&!Ne&&!ut&&!je&&!Ge&&!pt&&!Ke?null:jsxs("div",{className:"flex flex-col gap-4 pb-0",children:[ze&&(C||h)?jsxs("div",{className:"flex flex-col gap-1",children:[C?jsx("h2",{id:b,className:"text-lg font-semibold tracking-tight",children:C}):null,h?jsx("p",{id:M,className:`max-w-3xl text-sm ${t$1.mutedText??"opacity-70"}`,children:h}):null]}):null,jsxs("div",{className:"flex flex-col gap-3",children:[jsxs("div",{"data-dtp-slot":"data-table-toolbar-controls",className:"flex items-center gap-2 overflow-x-auto px-1 @min-[768px]/data-table:gap-3 @min-[768px]/data-table:overflow-visible",children:[_e?jsxs(Fragment,{children:[jsx("div",{className:"hidden min-w-0 grow max-w-md @min-[768px]/data-table:block",children:jsxs(k,{className:"min-w-0",children:[jsx(x,{value:y,onChange:o=>{T(o.target.value);},placeholder:L}),jsx(F,{align:"inline-start","aria-hidden":"true",children:jsx(r,{})}),y?jsx(F,{align:"inline-end",children:jsx("button",{type:"button",className:`inline-flex size-5 items-center justify-center rounded-md transition-colors focus-visible:outline-none ${t$1.toolbarIconButton??"opacity-70 hover:opacity-100"}`,onClick:()=>{T("");},"aria-label":_.clearSearch,title:_.clearSearch,children:jsx(t,{})})}):null]})}),jsxs(N,{children:[jsx(u,{asChild:true,children:jsxs(a,{type:"button",variant:ue||y?"secondary":"outline",size:"icon-sm","aria-label":_.searchTable,"aria-pressed":ue,className:`shrink-0 @min-[768px]/data-table:hidden ${ce} ${t$1.toolbarInputButton??""}`,onClick:()=>{$e(o=>!o);},children:[jsx(r,{}),jsx("span",{className:"sr-only",children:_.searchTable})]})}),jsx(j,{children:_.searchTable})]})]}):null,Ze?jsx("div",{className:"flex shrink-0 items-center gap-2",children:Ue.map(o=>{let q=!o.iconOnly&&!!o.icon,he=jsxs(a,{type:"button",className:q?`size-7 shrink-0 px-0 @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit @min-[768px]/data-table:px-2.5 ${ce}`:o.iconOnly?`size-7 shrink-0 @min-[768px]/data-table:size-8 ${ce}`:"size-7 shrink-0 @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit",variant:o.variant??"outline",size:o.iconOnly?"icon":"default",onClick:()=>{o.onClick({rows:Z,openFileDialog:Xe});},disabled:o.disabled,"aria-label":o.label,title:o.iconOnly?void 0:o.label,children:[o.icon?jsx(o.icon,{}):null,o.iconOnly?jsx("span",{className:"sr-only",children:o.label}):q?jsx("span",{className:"hidden @min-[768px]/data-table:inline",children:o.label}):jsx("span",{children:o.label})]},o.key);return o.iconOnly?jsxs(N,{children:[jsx(u,{asChild:true,children:he}),jsx(j,{children:o.label})]},o.key):he})}):null,Ke?jsx("div",{"data-dtp-slot":"data-table-toolbar-compact-custom",className:"flex shrink-0 items-center gap-2 @min-[1024px]/data-table:hidden",children:R??P}):null,jsx("div",{className:"grow","aria-hidden":"true"}),jsxs("div",{"data-dtp-slot":"data-table-toolbar-end-controls",className:"flex shrink-0 items-center gap-2",children:[A.length?jsx("div",{className:`hidden text-sm @min-[768px]/data-table:block ${t$1.mutedText??"opacity-70"}`,children:mt}):null,A.length?V.map(o=>{let q=o.icon,he={rows:Q,rowIds:A},Ee=typeof o.disabled=="function"?o.disabled(Q,he):o.disabled;return jsxs(N,{children:[jsx(u,{asChild:true,children:jsxs(a,{type:"button",variant:o.variant??"secondary",size:"icon-sm",className:ce,disabled:Ee,onClick:()=>{o.onClick(he);},"aria-label":o.label,children:[q?jsx(q,{}):null,jsx("span",{className:"sr-only",children:o.label})]})}),jsx(j,{children:o.label})]},o.key)}):null,ut?jsxs(i,{children:[jsx(I,{asChild:true,children:jsxs(a,{type:"button",variant:"outline",size:"icon-sm","aria-label":_.tableOptions,className:`${ce} ${t$1.toolbarInputButton??""}`,title:_.tableOptions,children:[jsx(a$2,{}),jsx("span",{className:"sr-only",children:_.tableOptions})]})}),jsxs(s,{align:"end",className:"w-56",children:[jsx(w,{children:_.tableOptions}),jsx(f,{children:z&&Te?jsx(l,{checked:se,onCheckedChange:o=>{z(o===true);},children:_.showHiddenRows(Te)}):null}),De?jsxs(Fragment,{children:[jsx(D,{}),jsx(w,{children:_.density}),jsx(f,{children:[["compact",_.compactDensity],["comfortable",_.comfortableDensity],["spacious",_.spaciousDensity]].map(([o,q])=>jsx(l,{checked:He===o,onCheckedChange:()=>{W(o);},children:q},o))})]}):null,J.some(o=>o.canHide)?jsxs(Fragment,{children:[jsx(D,{}),jsx(w,{children:_.columns}),jsx(f,{children:J.filter(o=>o.canHide).map(o=>jsx(l,{checked:o.visible,onCheckedChange:q=>{Ce?.(o.id,q===true);},children:o.label},o.id))})]}):null,Pe?jsxs(Fragment,{children:[jsx(D,{}),jsxs(w,{children:[_.pinLeft," / ",_.pinRight]}),jsx(f,{children:J.map(o=>jsxs(p$1,{onSelect:q=>{q.preventDefault();},children:[jsx("span",{className:"min-w-0 flex-1 truncate",children:o.label}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${_.pinLeft}: ${o.label}`,onClick:q=>{q.stopPropagation(),de(o.id,"left");},children:"L"}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${_.pinRight}: ${o.label}`,onClick:q=>{q.stopPropagation(),de(o.id,"right");},children:"R"}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${_.unpin}: ${o.label}`,onClick:q=>{q.stopPropagation(),de(o.id,false);},children:"-"})]},`pin-${o.id}`))})]}):null]})]}):null,et&&G&&g?jsxs(n,{children:[jsxs(N,{children:[jsx(u,{asChild:true,children:jsxs(a,{type:"button",variant:E==="table"?"default":"outline","aria-pressed":E==="table",className:E==="table"?ce:`${ce} ${t$1.toolbarInputButton??""}`,size:"icon-sm",onClick:()=>{g("table");},children:[jsx(q,{}),jsx("span",{className:"sr-only",children:_.switchToTableView??ae.switchToTableView})]})}),jsx(j,{children:_.tableView??ae.tableView})]}),jsxs(N,{children:[jsx(u,{asChild:true,children:jsxs(a,{type:"button",variant:E==="card"?"default":"outline","aria-pressed":E==="card",className:E==="table"?`${ce} ${t$1.toolbarInputButton??""}`:ce,size:"icon-sm",onClick:()=>{g("card");},children:[jsx(p,{}),jsx("span",{className:"sr-only",children:_.switchToCardView??ae.switchToCardView})]})}),jsx(j,{children:_.cardView??ae.cardView})]})]}):null,xe?ve.map(o=>{let q=!o.iconOnly&&!!o.icon,he=jsxs(a,{type:"button",variant:o.variant??"outline",size:o.iconOnly?"icon-sm":"default",onClick:()=>{o.onClick({rows:Z,openFileDialog:Xe});},disabled:o.disabled,"aria-label":o.label,title:o.iconOnly?void 0:o.label,className:`size-7 shrink-0 ${o.iconOnly?"":`${q?"px-0 @min-[768px]/data-table:px-2.5":""} @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit`} ${o.iconOnly||q?ce:""} ${t$1.toolbarInputButton??""}`,children:[o.icon?jsx(o.icon,{"data-icon":o.iconOnly?void 0:"inline-start"}):null,o.iconOnly?jsx("span",{className:"sr-only",children:o.label}):q?jsx("span",{className:"hidden @min-[768px]/data-table:inline",children:o.label}):jsx("span",{children:o.label})]},o.key);return o.iconOnly?jsxs(N,{children:[jsx(u,{asChild:true,children:he}),jsx(j,{children:o.label})]},o.key):he}):null]})]}),_e&&ue?jsx("div",{"data-dtp-slot":"data-table-toolbar-compact-search",className:"min-w-0 @min-[768px]/data-table:hidden",children:jsxs(k,{children:[jsx(x,{ref:Be,value:y,onChange:o=>{T(o.target.value);},placeholder:L}),jsx(F,{align:"inline-start","aria-hidden":"true",children:jsx(r,{})}),y?jsx(F,{align:"inline-end",children:jsx("button",{type:"button",className:`inline-flex size-5 items-center justify-center rounded-md transition-colors focus-visible:outline-none ${t$1.toolbarIconButton??"opacity-70 hover:opacity-100"}`,onClick:()=>{T("");},"aria-label":_.clearSearch,title:_.clearSearch,children:jsx(t,{})})}):null]})}):null,we.length?jsxs("div",{"data-dtp-slot":"data-table-toolbar-filters",className:"flex min-w-0 flex-wrap items-center gap-2",children:[we.map(o=>jsx(m,{filter:o,labels:_,onColumnFilterChange:Ye},o.id)),we.some(o=>ni(o.value))?jsx(a,{type:"button",variant:"ghost",size:"sm",onClick:Je,children:_.clearFilters}):null]}):null]}),tt&&P?jsx("div",{"data-dtp-slot":"data-table-toolbar-desktop-custom",className:"hidden flex-row items-center gap-3 @min-[1024px]/data-table:flex",children:P}):null]})};function m({filter:r$1,labels:C,onColumnFilterChange:b}){if(r$1.type==="text")return jsxs(k,{className:"min-w-48 max-w-64",children:[jsx(x,{value:typeof r$1.value=="string"?r$1.value:"",onChange:R=>{b(r$1.id,R.target.value);},placeholder:r$1.placeholder??r$1.label,"aria-label":`${C.filters}: ${r$1.label}`}),jsx(F,{align:"inline-start","aria-hidden":"true",children:jsx(r,{})})]});if(r$1.type==="numberRange"||r$1.type==="dateRange"){let R=kl(r$1.value),E=r$1.type==="numberRange"?"number":"date",g=C.filterFrom??ae.filterFrom,G=C.filterTo??ae.filterTo;return jsxs("div",{role:"group","aria-label":`${C.filters}: ${r$1.label}`,className:"flex min-w-0 items-center gap-1.5",children:[jsxs(k,{className:"min-w-32 max-w-44",children:[jsx(x,{type:E,inputMode:E==="number"?"decimal":void 0,value:R.from??"",min:r$1.min,max:r$1.max,step:E==="number"?r$1.step:void 0,onChange:H=>{b(r$1.id,{...R,from:ti(H.target.value,E)});},"aria-label":`${r$1.label}: ${g}`}),jsx(F,{align:"inline-start",children:g})]}),jsxs(k,{className:"min-w-32 max-w-44",children:[jsx(x,{type:E,inputMode:E==="number"?"decimal":void 0,value:R.to??"",min:r$1.min,max:r$1.max,step:E==="number"?r$1.step:void 0,onChange:H=>{b(r$1.id,{...R,to:ti(H.target.value,E)});},"aria-label":`${r$1.label}: ${G}`}),jsx(F,{align:"inline-start",children:G})]})]})}let h=r$1.type==="boolean",M=[{label:r$1.trueLabel??C.filterTrue??ae.filterTrue,value:"true"},{label:r$1.falseLabel??C.filterFalse??ae.filterFalse,value:"false"}],y=h?M:r$1.options,L=typeof r$1.value=="string"||typeof r$1.value=="boolean"?String(r$1.value):"",T=Array.isArray(r$1.value)?r$1.value.map(String):L?[L]:[],P=T.length===0?r$1.label:`${r$1.label}: ${T.length===1?y.find(R=>R.value===String(T[0]))?.label??T[0]:T.length}`;return jsxs(i,{children:[jsx(I,{asChild:true,children:jsx(a,{type:"button",variant:"outline",size:"sm",children:P})}),jsxs(s,{align:"start",className:"w-56",children:[jsx(w,{children:r$1.label}),jsxs(f,{children:[r$1.type==="select"||h?jsx(p$1,{onClick:()=>{b(r$1.id,"");},children:C.allFilterOptions??ae.allFilterOptions}):null,y.map(R=>jsx(l,{checked:T.includes(R.value),onCheckedChange:E=>{if(r$1.type==="select"||h){b(r$1.id,E===true?R.value:"");return}let g=new Set(T);E===true?g.add(R.value):g.delete(R.value),b(r$1.id,Array.from(g));},children:R.label},R.value))]})]})]})}}function ni(e){return Array.isArray(e)?e.length>0:e&&typeof e=="object"?"from"in e||"to"in e?Object.values(e).some(ni):true:e!=null&&e!==""}function kl(e){if(!e||typeof e!="object"||Array.isArray(e))return {};let t=e;return {...typeof t.from=="number"||typeof t.from=="string"?{from:t.from}:{},...typeof t.to=="number"||typeof t.to=="string"?{to:t.to}:{}}}function ti(e,t){if(e)return t==="number"?Number(e):e}var Ml=v.lazy(async()=>({default:(await import('./data-table-virtual-table-panel-TTKFMOEY.js')).DataTableVirtualTablePanel}));function oi(e){let t=typeof e.virtualization=="object"?e.virtualization:void 0;return e.virtualization===true||t?.enabled===true?jsx(v.Suspense,{fallback:jsx(V,{...e,rowsToRender:e.rowsToRender.slice(0,Math.max(1,Math.floor(t?.fallbackRowCount??20)))}),children:jsx(Ml,{...e})}):jsx(V,{...e})}var Al="data-table-pro:saved-views:";var ri=["sorting","columnVisibility","columnFilters","columnOrder","columnPinning","rowPinning","columnSizing","density","viewMode","showHiddenRows","globalFilter"],ii=0;function Ut(e){let t=an(e);if(!e||!t)return [];let a;try{a=t.getItem(nn(e.key));}catch(s){return e.onError?.({error:s,operation:"read"}),[]}if(!a)return [];let n;try{n=(e.deserialize??JSON.parse)(a);}catch(s){return e.onError?.({error:s,operation:"deserialize"}),[]}if(!Oe(n)||!("version"in n)||!("views"in n))return [];let i=e.version??1,l=n.views;if(n.version!==i){if(!e.migrate)return [];try{l=e.migrate({version:n.version,views:n.views},i);}catch(s){return e.onError?.({error:s,operation:"migrate"}),[]}}return Array.isArray(l)?l.map(s=>Vl(s,e.slices)).filter(s=>!!s):[]}function li(e,t,a){let n=t.trim();if(!e||!n)return;let i=new Date().toISOString(),l={id:Bl(),name:n,createdAt:i,updatedAt:i,state:Il(a,e.slices)},s=[...Ut(e),l];return en(e,s,"create")?tn(l):void 0}function si(e,t,a){let n=a.trim();if(!e||!n)return;let i,l=Ut(e).map(s=>s.id!==t?s:(i={...s,name:n,updatedAt:new Date().toISOString()},i));if(i)return en(e,l,"rename")?tn(i):void 0}function di(e,t){if(!e)return false;let a=Ut(e),n=a.filter(i=>i.id!==t);return n.length!==a.length&&en(e,n,"delete")}function ci(e){let t=an(e);if(!e||!t)return false;try{t.removeItem(nn(e.key));}catch(a){return e.onError?.({error:a,operation:"remove"}),false}return e.onChange?.([],"clear"),true}function en(e,t,a){let n=an(e);if(!n)return false;let i;try{let s={version:e.version??1,views:t};i=(e.serialize??JSON.stringify)(s);}catch(s){return e.onError?.({error:s,operation:"serialize"}),false}try{n.setItem(nn(e.key),i);}catch(s){return e.onError?.({error:s,operation:"write"}),false}let l=t.map(tn);return e.onChange?.(l,a),true}function Il(e,t){let a=new Set(t??ri),n={};for(let i of Object.keys(e))a.has(i)&&Object.assign(n,{[i]:Fl(i,e[i])});return n}function Vl(e,t){if(!(!Oe(e)||typeof e.id!="string"||!e.id||typeof e.name!="string"||!e.name.trim()||typeof e.createdAt!="string"||typeof e.updatedAt!="string"))return {id:e.id,name:e.name.trim(),createdAt:e.createdAt,updatedAt:e.updatedAt,state:ui(e.state,t)}}function ui(e,t){if(!Oe(e))return {};let a=new Set(t??ri),n={},i=zl(e.sorting);a.has("sorting")&&i&&(n.sorting=i);let l=Nl(e.pagination);a.has("pagination")&&l&&(n.pagination=l);let s=Za(e.rowSelection);a.has("rowSelection")&&s&&(n.rowSelection=s);let f=Za(e.columnVisibility);a.has("columnVisibility")&&f&&(n.columnVisibility=f);let p=Ll(e.columnFilters);a.has("columnFilters")&&p&&(n.columnFilters=p);let w=e.expanded===true?true:Za(e.expanded);a.has("expanded")&&w!==void 0&&(n.expanded=w);let D=aa(e.columnOrder);a.has("columnOrder")&&D&&(n.columnOrder=D);let I=Ol(e.columnPinning);a.has("columnPinning")&&I&&(n.columnPinning=I);let k=_l(e.rowPinning);a.has("rowPinning")&&k&&(n.rowPinning=k);let F=Hl(e.columnSizing);return a.has("columnSizing")&&F&&(n.columnSizing=F),a.has("density")&&(e.density==="compact"||e.density==="comfortable"||e.density==="spacious")&&(n.density=e.density),a.has("viewMode")&&(e.viewMode==="table"||e.viewMode==="card")&&(n.viewMode=e.viewMode),a.has("showHiddenRows")&&typeof e.showHiddenRows=="boolean"&&(n.showHiddenRows=e.showHiddenRows),a.has("globalFilter")&&typeof e.globalFilter=="string"&&(n.globalFilter=e.globalFilter),n}function tn(e){return {...e,state:ui(e.state,Object.keys(e.state))}}function Fl(e,t){return Array.isArray(t)?t.map(a=>Oe(a)?{...a}:a):Oe(t)?e==="columnPinning"||e==="rowPinning"?{...e==="columnPinning"?{left:Array.isArray(t.left)?[...t.left]:void 0,right:Array.isArray(t.right)?[...t.right]:void 0}:{top:Array.isArray(t.top)?[...t.top]:void 0,bottom:Array.isArray(t.bottom)?[...t.bottom]:void 0}}:{...t}:t}function zl(e){if(Array.isArray(e))return e.filter(t=>Oe(t)&&typeof t.id=="string").map(t=>({id:t.id,desc:!!t.desc}))}function Nl(e){if(!(!Oe(e)||!Number.isInteger(e.pageIndex)||e.pageIndex<0||!Number.isInteger(e.pageSize)||e.pageSize<1))return {pageIndex:e.pageIndex,pageSize:e.pageSize}}function Ll(e){if(Array.isArray(e))return e.filter(t=>Oe(t)&&typeof t.id=="string"&&Object.prototype.hasOwnProperty.call(t,"value")).map(t=>({id:t.id,value:t.value}))}function Ol(e){if(Oe(e))return {left:aa(e.left)??[],right:aa(e.right)??[]}}function _l(e){if(Oe(e))return {top:aa(e.top)??[],bottom:aa(e.bottom)??[]}}function Za(e){if(Oe(e))return Object.fromEntries(Object.entries(e).filter(t=>typeof t[1]=="boolean"))}function Hl(e){if(Oe(e))return Object.fromEntries(Object.entries(e).filter(t=>typeof t[1]=="number"&&Number.isFinite(t[1])&&t[1]>=0))}function aa(e){if(Array.isArray(e))return e.filter(t=>typeof t=="string")}function an(e){if(e){if(e.storage)return e.storage;if(!(typeof window>"u"))try{return window.localStorage}catch(t){e.onError?.({error:t,operation:"read"});return}}}function Bl(){return typeof globalThis.crypto?.randomUUID=="function"?globalThis.crypto.randomUUID():(ii+=1,`view-${Date.now().toString(36)}-${ii.toString(36)}`)}function nn(e){return `${Al}${e}`}function Oe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function pi({columns:e,currentColumnFilters:t,currentColumnPinning:a,effectiveColumnVisibility:n,enableColumnFilters:i,handleColumnFiltersChange:l,handleColumnPinningChange:s,labels:f,table:p,toolbarActions:w,visibleData:D$1,csvExport:I}){let k$1=v.useMemo(()=>D(e).map(({column:r,index:C})=>{let b=J(r,C),h=r.header,M=L(r),y=typeof h=="string"?h:M?R(M):R(b),L$1=a.left?.includes(b)===true?"left":a.right?.includes(b)===true?"right":false;return {id:b,label:y,visible:n[b]!==false,canHide:r.enableHiding!==false,pinned:L$1}}),[e,a,n]),F$1=v.useMemo(()=>i===false?[]:D(e).flatMap(({column:r,index:C})=>{let b=r.meta?.filter;if(!b)return [];let h=J(r,C),M=r.header,y=L(r),L$1=b.label??(typeof M=="string"?M:y?R(y):R(h)),T=t.find(R=>R.id===h),P=typeof b.options=="function"?b.options({rows:D$1}):b.options??[];return [{id:h,label:L$1,type:b.type,value:T?.value,placeholder:b.placeholder,options:E(P),trueLabel:b.trueLabel,falseLabel:b.falseLabel,min:b.min,max:b.max,step:b.step}]}),[e,t,i,D$1]),x=v.useCallback((r,C)=>{l(b=>{let h=b.filter(M=>M.id!==r);return F(C)&&h.push({id:r,value:C}),h});},[l]),N=v.useCallback(()=>{l([]);},[l]),j=v.useCallback((r,C)=>{s(b=>{let h=(b.left??[]).filter(y=>y!==r),M=(b.right??[]).filter(y=>y!==r);return C==="left"&&h.push(r),C==="right"&&M.push(r),{left:h,right:M}});},[s]),u=v.useCallback(()=>{if(I)return H({csvExport:I,table:p,labels:f})},[I,f,p]),m=v.useMemo(()=>I?[...w??[],{key:"__csv_export__",label:f.exportCsv,icon:k,placement:"trailing",onClick:u}]:w??[],[I,u,f.exportCsv,w]);return {columnVisibilityOptions:k$1,effectiveToolbarActions:m,handleClearColumnFilters:N,handleToolbarColumnFilterChange:x,handleToolbarColumnPinningChange:j,toolbarColumnFilters:F$1}}function Ad(e){return Ul(e)}function Ul(e,t={}){let a$2=t.CardPanel??Eo,n=t.TablePanel??oi,i=e.classNames??{},{rootClassName:l,Button:s,Checkbox:f,Input:p,ScrollArea:w,ScrollBar:D$1,Skeleton:I$1,Table:k,TableBody:F,TableCell:x,TableFooter:N="tfoot",TableHead:j,TableHeader:u,TableRow:m,Tooltip:r,TooltipContent:C,TooltipProvider:b=v.Fragment,TooltipTrigger:h}=e,M=Jo(e),y=ei(e),{DataTableFooter:L}=Xo(e),T=ai(e),P=qo(e,y),R={minSize:80,size:180,maxSize:720};return function({columns:g,data:G,getRowId:H$1,children:V,title:Q,description:A,toolbarQueryValue:se,onToolbarQueryValueChange:Te,toolbarQueryPlaceholder:z,toolbarQueryDebounceMs:Z,manualFiltering:J$1=false,enableToolbarQueryFiltering:Ce=true,globalFilterFn:Pe,columnFilters:de,onColumnFiltersChange:we,enableColumnFilters:Ye,customToolbar:Je,compactToolbar:He,rowsPerPageOptions:W=[10,20,50,100],totalRowCount:De,hasNextPage:_,sorting:oe,onSortingChange:Xe,manualSorting:Be=false,pageIndex:ue,pageSize:$e,onPageIndexChange:ce,onPageSizeChange:Ue,pageCount:ve,manualPagination:ze=false,rowSelection:_e,onRowSelectionChange:Ze,enableRowSelection:xe=false,enableMultiRowSelection:Dt=true,enableSubRowSelection:et=true,getRowCanSelect:tt,rowSelectionSelectAllScope:me="page",expanded:dt,onExpandedChange:ct,getSubRows:Ne,manualExpanding:ut=false,paginateExpandedRows:je,filterFromLeafRows:Ge,maxLeafRowFilterDepth:pt,detailPanel:Ke,getRowCanExpand:mt,renderExpandedRow:o,columnOrder:q,onColumnOrderChange:he,enableColumnReordering:Ee=false,columnGroupHeaderHeight:ht,columnPinning:bt,onColumnPinningChange:yt,enableColumnPinning:Rt=false,rowPinning:At,onRowPinningChange:It,enableRowPinning:gt=false,keepPinnedRows:at=true,toolbarActions:S$1=[],selectionActions:$=[],rowActions:fe=[],csvExport:ye,density:ne,onDensityChange:ee,enableDensityToggle:St=false,columnPrefsKey:Ae,persistence:nt,savedViews:Re,initialState:te,state:be,onStateChange:ie,apiRef:na,labels:oa,summaryRows:Ea=[],cardRenderer:O,cardSizing:ke,cardGridClassName:Pt,cardClassName:vt,viewMode:jt,onViewModeChange:ia,enableViewToggle:gi=false,emptyState:ka,isLoading:on=false,loadingRowCount:fi,getRowLoadingState:Ti,hiddenRows:rn,showHiddenRows:ln,onShowHiddenRowsChange:Ci,infiniteScroll:ra,editableRows:la,columnVisibility:sn,onColumnVisibilityChange:wi,columnSizing:dn,onColumnSizingChange:Di,enableColumnResizing:cn=false,columnResizeMode:hi="onEnd",layoutMode:un="fill",stickyHeader:yi=true,showFooter:Ri=true,showToolbar:pn=true,dir:Ma="ltr",flexGrow:Vt=true,toolbarVisibility:mn,className:Si,tableClassName:Pi,tableContainerClassName:bn,stripedRows:gn=false,getRowClassName:fn,onRowClick:Aa,onActionError:Gt,dragAndDrop:Ft,fileUpload:ot,virtualization:Ia}){let Kt=v.useRef(null),Tn=v.useRef(null),Cn=v.useRef(null),vi=v.useRef(null),Va=v.useRef(null),xi=v.useRef(null),Ei=v.useId(),ki=v.useId();v.useMemo(()=>K(g),[g]);let it=v.useMemo(()=>Io(oa),[oa]),Mi=se??be?.globalFilter,Ai=oe??be?.sorting,sa=ue??be?.pagination?.pageIndex,da=$e??be?.pagination?.pageSize,Ii=_e??be?.rowSelection,Vi=sn??be?.columnVisibility,Fi=de??be?.columnFilters,zi=dt??be?.expanded,Ni=q??be?.columnOrder,Li=bt??be?.columnPinning,Oi=At??be?.rowPinning,_i=dn??be?.columnSizing,Hi=ne??be?.density,Bi=jt??be?.viewMode,$i=ln??be?.showHiddenRows,wn=pn&&(mn?.title??true),Dn=wn&&Q?Ei:void 0,hn=wn&&A?ki:void 0;Gl(be,{columnFilters:de!==void 0,columnOrder:q!==void 0,columnPinning:bt!==void 0,rowPinning:At!==void 0,columnSizing:dn!==void 0,columnVisibility:sn!==void 0,density:ne!==void 0,expanded:dt!==void 0,globalFilter:se!==void 0,pagination:ue!==void 0||$e!==void 0,rowSelection:_e!==void 0,showHiddenRows:ln!==void 0,sorting:oe!==void 0,viewMode:jt!==void 0});let Ui=Fe("globalFilter",Te,ie),ji=Fe("sorting",Xe,ie),Gi=Fe("rowSelection",Ze,ie),Ki=Fe("columnVisibility",wi,ie),Wi=Fe("columnFilters",we,ie),Qi=Fe("expanded",ct,ie),qi=Fe("columnOrder",he,ie),Yi=Fe("columnPinning",yt,ie),Ji=Fe("rowPinning",It,ie),Xi=Fe("columnSizing",Di,ie),Zi=Fe("density",ee,ie),er=Fe("viewMode",ia,ie),tr=Fe("showHiddenRows",Ci,ie),yn=v.useCallback(d=>{ce?.(d),ie?.(B=>({...B,pagination:{pageIndex:d,pageSize:da??B.pagination.pageSize}}));},[ce,ie,da]),ar=v.useCallback(d=>{Ue?.(d),ie?.(B=>({...B,pagination:{pageIndex:sa??B.pagination.pageIndex,pageSize:d}}));},[Ue,ie,sa]),We=v.useCallback((d,B)=>{jl(B,d,Gt);},[Gt]),Rn=v.useMemo(()=>fe.map(d=>({...d,onClick:B=>{We({actionKey:d.key,row:B,source:"rowAction"},()=>d.onClick(B));}})),[fe,We]),Sn=v.useMemo(()=>Aa?d=>{We({row:d.row,source:"rowClick"},()=>Aa(d));}:void 0,[Aa,We]),nr=v.useCallback((d,B)=>{Gt?.({error:d,row:B,source:"edit"});},[Gt]),{containerWidth:or,currentColumnFilters:ca,currentColumnOrder:Fa,currentColumnPinning:ua,currentRowPinning:za,currentColumnSizing:pa,currentColumnVisibility:Pn,currentDensity:Wt,currentExpanded:ma,currentPagination:ba,currentRowSelection:ga,currentShowHiddenRows:Na,currentSorting:fa,currentViewMode:zt,effectiveColumnVisibility:vn,globalFilterValue:ir,handleDensityChange:La,handleShowHiddenRowsChange:Oa,handleViewModeChange:_a,localSearchValue:Nt,resolvedLoadingRowCount:rr,resolvedToolbarQueryPlaceholder:lr,selectedRowIds:sr,selectedRows:dr,setCurrentColumnFilters:xn,setCurrentColumnOrder:cr,setCurrentColumnPinning:En,setCurrentRowPinning:ur,setCurrentColumnVisibility:pr,setCurrentExpanded:kn,setCurrentRowSelection:Mn,setCurrentSorting:mr,setLocalColumnSizing:br,setLocalPagination:gr,setLocalSearchValue:Ha,shouldRenderInitialLoading:Ba,tableData:fr,tableGetRowId:Tr,visibleData:Cr}=Go({columnFilters:Fi,columnOrder:Ni,columnPinning:Li,rowPinning:Oi,columnSizing:_i,columnPrefsKey:Ae,persistence:nt,columnVisibility:Vi,columns:g,containerRef:Kt,data:G,density:Hi,enableRowSelection:xe,enableToolbarQueryFiltering:Ce,expanded:zi,getSubRows:Ne,getRowId:H$1,hiddenRows:rn,isLoading:on,loadingRowCount:fi,manualFiltering:J$1,initialState:te,onColumnFiltersChange:Wi,onColumnOrderChange:qi,onColumnPinningChange:Yi,onRowPinningChange:Ji,onColumnSizingChange:Xi,onColumnVisibilityChange:Ki,onDensityChange:Zi,onExpandedChange:Qi,onPageIndexChange:yn,onRowSelectionChange:Gi,onShowHiddenRowsChange:tr,onSortingChange:ji,onToolbarQueryValueChange:Ui,onViewModeChange:er,pageIndex:sa,pageSize:da,resolvedLabels:it,rowSelection:Ii,rowsPerPageOptions:W,selectionActions:$,showHiddenRows:$i,sorting:Ai,toolbarQueryDebounceMs:Z,toolbarQueryPlaceholder:z,toolbarQueryValue:Mi,viewMode:Bi}),$a=!!(o&&!Ke&&!Ne),Lt=Ke??(o?{getRowCanExpand:Ne?void 0:mt,render:o}:void 0),[Ua,An]=Se({defaultValue:()=>$a?te?.expanded??{}:{},onChange:$a?kn:Lt?.onExpandedChange,value:$a?ma:Lt?.expanded}),{cancelEditing:wr,draftValues:Dr,editingRowId:ja,isSavingEdit:hr,saveEdit:yr,setDraftValues:Rr,setEditingRowId:Sr,startEditingRow:Pr}=S({columns:g,editableRows:la,onError:nr}),{viewportElement:In,viewportHeight:Vn}=a$1(Cn,zt),vr=v.useCallback(()=>{ot?.disabled||Tn.current?.click();},[ot?.disabled]),xr=v.useCallback(d=>{We({source:"fileUpload"},()=>ot?.onFilesSelected(d));},[ot,We]),Er=Vo({Button:s,Checkbox:f,DataTableRowActions:y,Tooltip:r,TooltipContent:C,TooltipTrigger:h,cancelEditing:wr,columns:g,editableRows:la,editingRowId:ja,enableRowSelection:xe,enableRowPinning:gt,hasTreeExpansion:!!Ne,isSavingEdit:hr,labels:it,lastSelectedRowIdRef:xi,detailPanel:Lt,detailExpanded:Ua,onDetailExpandedChange:An,rowSelectionSelectAllScope:me,rowActions:Rn,saveEdit:yr,startEditingRow:Pr,tableRef:Va}),kr=v.useMemo(()=>B(g),[g]),{effectivePageCount:Mr,footerTotalRowCount:Ar,handleFooterPageIndexChange:Ir,handleFooterPageSizeChange:Vr,isPageCountKnown:Fr,renderedRows:Fn,topPinnedRows:zr,bottomPinnedRows:Nr,reorderColumn:Lr,rowsToRender:Or,sentinelRef:zn,table:X,virtualPaddingBottom:_r,virtualPaddingTop:Hr,visibleLeafColumns:Ga}=Lo({autoResetPageIndex:false,columnGroupPaths:kr,columnResizeMode:hi,dir:Ma,currentColumnFilters:ca,currentColumnOrder:Fa,currentColumnPinning:ua,currentRowPinning:za,currentColumnSizing:pa,currentExpanded:ma,currentPagination:ba,currentRowSelection:ga,currentSorting:fa,currentViewMode:zt,defaultColumn:R,effectiveColumnVisibility:vn,enableColumnResizing:cn,enableRowPinning:gt,enableRowSelection:xe,enableMultiRowSelection:Dt,enableSubRowSelection:et,getRowCanSelect:tt,getRowCanExpand:mt,getSubRows:Ne,globalFilterFn:Pe,globalFilterValue:ir,hasNextPage:_,handleColumnFiltersChange:xn,handleColumnOrderChange:cr,handleColumnPinningChange:En,handleRowPinningChange:ur,handleColumnVisibilityChange:pr,handleExpandedChange:kn,infiniteScroll:ra,keepPinnedRows:at,manualFiltering:J$1,manualExpanding:ut,manualPagination:ze,manualSorting:Be,onActionError:Gt,onPageIndexChange:yn,onPageSizeChange:ar,pageCount:ve,pageIndex:sa,pageSize:da,paginateExpandedRows:je,filterFromLeafRows:Ge,maxLeafRowFilterDepth:pt,setCurrentRowSelection:Mn,setCurrentSorting:mr,setLocalColumnSizing:br,setLocalPagination:gr,shouldRenderInitialLoading:Ba,tableColumns:Er,tableData:fr,tableGetRowId:Tr,tableRef:Va,totalRowCount:De,virtualization:Ia}),Nn=Wo({columns:g,columnSizing:pa,editableRows:!!la,enableRowSelection:xe,hasRowActions:fe.length>0,hasRowExpansion:!!(Ne||Lt),layoutMode:un,uiClassNames:i,visibleLeafColumns:Ga}),{explicitlySizedColumnIds:Ta,fillMinWidth:Br,getColumnLayout:$r}=Nn,Ur=v.useMemo(()=>new Set(D(g).flatMap(({column:d,index:B})=>Object.prototype.hasOwnProperty.call(d,"cell")&&typeof d.cell=="function"?[J(d,B)]:[])),[g]),jr=Ga.length,Gr=v.useMemo(()=>({Checkbox:f,Input:p,Skeleton:I$1,TableCell:x,TableRow:m}),[]),Kr=v.useMemo(()=>D(g).some(({column:d})=>d.meta?.cardTitle),[g]),Wr=v.useCallback((d,B)=>{Ta.has(d)||Object.prototype.hasOwnProperty.call(X.getState().columnSizing,d)||flushSync(()=>{X.setColumnSizing(rt=>({...rt,[d]:B}));});},[Ta,X]),Qr=v.useCallback(d=>{if(Ta.has(d)){X.getColumn(d)?.resetSize();return}X.setColumnSizing(B=>{if(!Object.prototype.hasOwnProperty.call(B,d))return B;let rt={...B};return delete rt[d],rt});},[Ta,X]),Ln=X.getFilteredRowModel().rows.map(d=>d.original),On=typeof ka=="function"?ka({rows:Ln,toolbarQueryValue:Nt}):ka,{columnVisibilityOptions:qr,effectiveToolbarActions:_n,handleClearColumnFilters:Yr,handleToolbarColumnFilterChange:Jr,handleToolbarColumnPinningChange:Xr,toolbarColumnFilters:Zr}=pi({columns:g,currentColumnFilters:ca,currentColumnPinning:ua,csvExport:ye,effectiveColumnVisibility:vn,enableColumnFilters:Ye,handleColumnFiltersChange:xn,handleColumnPinningChange:En,labels:it,table:X,toolbarActions:S$1,visibleData:Cr}),el=v.useMemo(()=>_n.map(d=>({...d,onClick:B=>{We({actionKey:d.key,source:"toolbarAction"},()=>d.onClick(B));}})),[_n,We]),tl=v.useMemo(()=>$.map(d=>({...d,onClick:B=>{We({actionKey:d.key,source:"selectionAction"},()=>d.onClick(B));}})),[We,$]),Hn=v.useMemo(()=>({sorting:fa,pagination:ba,rowSelection:ga,columnVisibility:Pn,columnFilters:ca,expanded:ma,columnOrder:Fa,columnPinning:ua,rowPinning:za,columnSizing:pa,density:Wt,viewMode:zt,showHiddenRows:Na,globalFilter:Nt}),[ca,Fa,ua,za,pa,Pn,Wt,ma,ba,ga,Na,fa,zt,Nt]),Qt=v.useCallback(()=>Wl(Hn),[Hn]),ft=v.useCallback(d=>{d.sorting!==void 0&&X.setSorting(d.sorting),d.pagination!==void 0&&X.setPagination(d.pagination),d.rowSelection!==void 0&&X.setRowSelection(d.rowSelection),d.columnVisibility!==void 0&&X.setColumnVisibility(d.columnVisibility),d.columnFilters!==void 0&&X.setColumnFilters(d.columnFilters),d.expanded!==void 0&&X.setExpanded(d.expanded),d.columnOrder!==void 0&&X.setColumnOrder(d.columnOrder),d.columnPinning!==void 0&&X.setColumnPinning(d.columnPinning),d.rowPinning!==void 0&&X.setRowPinning(d.rowPinning),d.columnSizing!==void 0&&X.setColumnSizing(d.columnSizing),d.density!==void 0&&La(d.density),d.viewMode!==void 0&&_a(d.viewMode),d.showHiddenRows!==void 0&&Oa(d.showHiddenRows),d.globalFilter!==void 0&&Ha(d.globalFilter);},[La,Oa,_a,Ha,X]),Ot=v.useCallback(()=>Bo(nt??Ae),[Ae,nt]),Bn=v.useCallback(d=>{d?.clearPersistence&&Ot(),ft({columnVisibility:te?.columnVisibility??{},columnOrder:te?.columnOrder??[],columnPinning:te?.columnPinning??I(g),rowPinning:te?.rowPinning??{top:[],bottom:[]},columnSizing:te?.columnSizing??{}});},[Ot,g,te,ft]),$n=v.useCallback(d=>{d?.clearPersistence&&Ot(),ft({sorting:te?.sorting??[],pagination:te?.pagination??{pageIndex:0,pageSize:W[0]??20},rowSelection:te?.rowSelection??{},columnVisibility:te?.columnVisibility??{},columnFilters:te?.columnFilters??[],expanded:te?.expanded??{},columnOrder:te?.columnOrder??[],columnPinning:te?.columnPinning??I(g),rowPinning:te?.rowPinning??{top:[],bottom:[]},columnSizing:te?.columnSizing??{},density:te?.density??"comfortable",viewMode:te?.viewMode??"table",showHiddenRows:te?.showHiddenRows??false,globalFilter:te?.globalFilter??""});},[Ot,g,te,ft,W]),Un=v.useCallback(()=>Ut(Re),[Re]),jn=v.useCallback(d=>li(Re,d,Qt()),[Qt,Re]),Gn=v.useCallback(d=>{let B=Ut(Re).find(rt=>rt.id===d);return B?(ft(B.state),Re?.onApply?.(B),true):false},[ft,Re]),Kn=v.useCallback((d,B)=>si(Re,d,B),[Re]),Wn=v.useCallback(d=>di(Re,d),[Re]),Qn=v.useCallback(()=>ci(Re),[Re]),qn=v.useCallback(d=>H({csvExport:d??(ye||true),labels:it,table:X}),[ye,it,X]),Yn=v.useCallback((d,B="top")=>{try{let rt=X.getRow(d,!0);return rt.getCanPin()?(rt.pin(B),!0):!1}catch{return false}},[X]),Jn=v.useCallback(d=>{try{let B=X.getRow(d,!0);return B.getCanPin()?(B.pin(!1),!0):!1}catch{return false}},[X]);return v.useImperativeHandle(na,()=>({getTable:()=>Va.current,getState:Qt,snapshot:Qt,restore:ft,resetColumnLayout:Bn,resetState:$n,clearPersistedState:Ot,getSavedViews:Un,createSavedView:jn,applySavedView:Gn,renameSavedView:Kn,deleteSavedView:Wn,clearSavedViews:Qn,pinRow:Yn,unpinRow:Jn,focus:()=>{Kt.current?.focus();},scrollToRow:d=>mi(Kt.current,"row",d),scrollToColumn:d=>mi(Kt.current,"column",d),exportCsv:qn}),[Gn,Ot,Qn,jn,Wn,qn,Un,Qt,Kn,Bn,$n,ft,Yn,Jn]),jsx(b,{children:jsxs("div",{ref:Kt,"data-dtp-slot":"data-table-root","data-density":Wt,"data-dtp-striped-rows":gn||void 0,"aria-busy":on||void 0,dir:Ma,tabIndex:-1,className:a("@container/data-table data-table-container-query flex w-full min-w-0 flex-col",Vt?"h-full min-h-0 flex-1":"grow",l),onDragEnter:Ft?.onDragEnter,onDragOver:Ft?.onDragOver,onDragLeave:Ft?.onDragLeave,onDrop:Ft?.onDrop,children:[ot?jsx("input",{ref:Tn,className:"hidden",type:"file",accept:ot.accept,multiple:ot.multiple??true,disabled:ot.disabled,onChange:d=>{let B=d.currentTarget.files;B?.length&&xr(B),d.currentTarget.value="";}}):null,jsx("div",{"data-dtp-slot":"data-table-layout",className:a("flex w-full flex-col",Vt?"min-h-0 flex-1":"grow"),children:jsxs("div",{"data-dtp-slot":"data-table-main",className:a("flex w-full flex-col gap-4",Vt?"min-h-0 flex-1":"grow",Si),children:[pn?jsx(Ao,{allRows:Ln,columnFilters:Zr,columnVisibilityOptions:qr,compactToolbar:He,customToolbar:Je,DataTableToolbar:T,density:Wt,description:A,descriptionId:hn,effectiveToolbarActions:el,enableColumnPinning:Rt,enableDensityToggle:St,enableViewToggle:gi&&!!O,hiddenRowsLabel:rn?.label,labels:it,onClearColumnFilters:Yr,onColumnFilterChange:Jr,onColumnPinningChange:Xr,onDensityChange:La,onShowHiddenRowsChange:Oa,onToolbarQueryValueChange:Ha,onViewModeChange:_a,openFileDialog:ot?vr:void 0,selectedRowIds:sr,selectedRows:dr,selectionActions:tl,showHiddenRows:Na,table:X,title:Q,titleId:Dn,toolbarQueryPlaceholder:lr,toolbarQueryValue:Nt,toolbarVisibility:mn,viewMode:zt}):null,jsx("div",{"data-dtp-slot":"data-table-content",className:a(Vt?"flex min-h-0 flex-1 flex-col":""),children:zt==="card"&&O?jsx(a$2,{cardClassName:vt,cardGridClassName:Pt,cardSizing:ke,cardRenderer:O,containerWidth:or,currentDetailExpanded:Ua,currentRowSelection:ga,DataTableCardView:P,DataTableEmptyState:M,dragAndDrop:Ft,editableRows:la,editingRowId:ja,emptyNode:On,enableRowSelection:xe,flexGrow:Vt,getRowClassName:fn,hasCardTitle:Kr,infiniteScroll:ra,localSearchValue:Nt,onRowClick:Sn,renderedRows:Fn,detailPanel:Lt,resolvedLabels:it,resolvedLoadingRowCount:rr,rowActions:Rn,ScrollArea:w,sentinelRef:zn,setCurrentDetailExpanded:An,setCurrentRowSelection:Mn,setEditingRowId:Sr,shouldRenderInitialLoading:Ba,tableContainerClassName:bn,uiClassNames:i,virtualization:Ia}):jsx(n,{ariaDescribedBy:hn,ariaLabelledBy:Dn,bodyRowComponents:Gr,columnLayouts:Nn.columnLayouts,currentDensity:Wt,columnGroupHeaderHeight:ht,currentDetailExpanded:Ua,currentSorting:fa,dir:Ma,DataTableEmptyState:M,dragAndDrop:Ft,draggedColumnIdRef:vi,draftValues:Dr,editingRowId:ja,emptyNode:On,enableColumnReordering:Ee,enableColumnResizing:cn,explicitCustomCellColumnIds:Ur,fillMinWidth:Br,flexGrow:Vt,getColumnLayout:$r,getRowClassName:fn,getRowLoadingState:Ti,infiniteScroll:ra,layoutMode:un,localSearchValue:Nt,onRowClick:Sn,primeColumnForResize:Wr,renderedRows:Fn,detailPanel:Lt,topPinnedRows:zr,bottomPinnedRows:Nr,reorderColumn:Lr,resetColumnSize:Qr,resolvedLabels:it,rowsToRender:Or,ScrollArea:w,ScrollBar:D$1,sentinelRef:zn,setDraftValues:Rr,shouldRenderInitialLoading:Ba,stickyHeader:yi,stripedRows:gn,summaryRows:Ea,table:X,tableClassName:Pi,tableContainerClassName:bn,Table:k,TableBody:F,TableCell:x,TableFooter:N,TableHead:j,TableHeader:u,TableRow:m,tableScrollContainerRef:Cn,tableScrollElement:In,uiClassNames:i,viewportHeight:Vn,virtualization:Ia,virtualPaddingBottom:_r,virtualPaddingTop:Hr,visibleLeafColumnCount:jr,visibleLeafColumns:Ga})}),jsx(ko,{currentPagination:ba,DataTableFooter:L,effectivePageCount:Mr,footerTotalRowCount:Ar,handleFooterPageIndexChange:Ir,handleFooterPageSizeChange:Vr,labels:it,pageCountKnown:Fr,rowsPerPageOptions:W,showFooter:Ri&&!ra?.enabled,children:V})]})})]})})}}function jl(e,t,a){let n;try{n=e();}catch(i){a?.({...t,error:i});return}Promise.resolve(n).catch(i=>{a?.({...t,error:i});});}function Fe(e,t,a){let n=v.useCallback(i=>{t?.(i),a?.(l=>({...l,[e]:i}));},[e,t,a]);return t||a?n:void 0}function Gl(e,t){let a=v.useRef(new Set);v.useEffect(()=>{if(!(!e||!Kl()))for(let n of Object.keys(t))e[n]===void 0||!t[n]||a.current.has(n)||(a.current.add(n),console.warn(`[data-table-pro] Both state.${n} and its legacy controlled prop were provided. The legacy prop takes precedence during the 4.x compatibility window.`));},[t,e]);}function Kl(){return globalThis.process?.env?.NODE_ENV!=="production"}function Wl(e){return {sorting:e.sorting.map(t=>({...t})),pagination:{...e.pagination},rowSelection:{...e.rowSelection},columnVisibility:{...e.columnVisibility},columnFilters:e.columnFilters.map(t=>({...t})),expanded:typeof e.expanded=="boolean"?e.expanded:{...e.expanded},columnOrder:[...e.columnOrder],columnPinning:{left:e.columnPinning.left?[...e.columnPinning.left]:void 0,right:e.columnPinning.right?[...e.columnPinning.right]:void 0},rowPinning:{top:e.rowPinning.top?[...e.rowPinning.top]:void 0,bottom:e.rowPinning.bottom?[...e.rowPinning.bottom]:void 0},columnSizing:{...e.columnSizing},density:e.density,viewMode:e.viewMode,showHiddenRows:e.showHiddenRows,globalFilter:e.globalFilter}}function mi(e,t,a){if(!e)return false;let n=t==="row"?"data-row-id":"data-column-id",i=Array.from(e.querySelectorAll(`[${n}]`)).find(l=>l.getAttribute(n)===a);return i?(i.scrollIntoView?.({block:"nearest",inline:"nearest"}),true):false}export{Eo as a,ko as b,Ao as c,Vo as d,Se as e,Lo as f,Go as g,Wo as h,Ad as i,Ul as j};//# sourceMappingURL=chunk-67Y57KCA.js.map -//# sourceMappingURL=chunk-67Y57KCA.js.map \ No newline at end of file diff --git a/dist/chunk-67Y57KCA.js.map b/dist/chunk-67Y57KCA.js.map deleted file mode 100644 index 0956b81..0000000 --- a/dist/chunk-67Y57KCA.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/core/data-table/data-table-base-card-panel.tsx","../src/core/data-table/data-table-card-panel.tsx","../src/core/data-table/data-table-footer-section.tsx","../src/core/data-table/data-table-toolbar-section.tsx","../src/core/data-table/data-table-labels.ts","../src/core/data-table/use-data-table-columns.tsx","../src/core/data-table/use-controllable-state.ts","../src/core/data-table/use-data-table-infinite-scroll.ts","../src/core/data-table/use-data-table-pagination-clamp.ts","../src/core/data-table/use-data-table-instance.ts","../src/core/data-table/use-data-table-column-prefs.ts","../src/core/data-table/use-data-table-container-width.ts","../src/core/data-table/use-data-table-state.ts","../src/core/data-table/use-column-layout.ts","../src/core/data-table/create-data-table-card-view.tsx","../src/core/data-table/create-data-table-empty-state.tsx","../src/core/data-table/create-data-table-pagination.tsx","../src/core/data-table/create-data-table-row-actions.tsx","../src/core/data-table/create-data-table-toolbar.tsx","../src/core/data-table/data-table-table-panel-router.tsx","../src/core/data-table/data-table-saved-views.ts","../src/core/data-table/use-data-table-toolbar-features.ts","../src/core/data-table/create-data-table.tsx"],"names":["DataTableBaseCardPanel","cardClassName","cardGridClassName","cardSizing","cardRenderer","currentRowSelection","currentDetailExpanded","DataTableCardView","DataTableEmptyState","dragAndDrop","editableRows","editingRowId","emptyNode","enableRowSelection","flexGrow","getRowClassName","hasCardTitle","infiniteScroll","localSearchValue","onRowClick","renderedRows","detailPanel","resolvedLabels","resolvedLoadingRowCount","rowActions","ScrollArea","sentinelRef","setCurrentDetailExpanded","setCurrentRowSelection","setEditingRowId","shouldRenderInitialLoading","tableContainerClassName","uiClassNames","shouldRenderCards","cardScrollContainerRef","xo","renderCardView","rows","options","jsx","cn","jsxs","LazyDataTableVirtualCardPanel","ya","DataTableCardPanel","props","config","DataTableFooterSection","children","currentPagination","DataTableFooter","effectivePageCount","footerTotalRowCount","handleFooterPageIndexChange","handleFooterPageSizeChange","labels","pageCountKnown","rowsPerPageOptions","showFooter","DataTableToolbarSection","allRows","columnFilters","columnVisibilityOptions","compactToolbar","customToolbar","DataTableToolbar","description","descriptionId","effectiveToolbarActions","enableColumnPinning","enableDensityToggle","enableViewToggle","hiddenRowsLabel","onClearColumnFilters","onColumnFilterChange","onColumnPinningChange","onDensityChange","onShowHiddenRowsChange","onToolbarQueryValueChange","onViewModeChange","openFileDialog","selectedRowIds","selectedRows","selectionActions","showHiddenRows","table","title","titleId","toolbarQueryPlaceholder","toolbarQueryValue","toolbarVisibility","density","viewMode","columnId","visible","DATA_TABLE_DEFAULT_LABELS","count","label","pageIndex","pageCount","rowId","columnLabel","resolveDataTableLabels","useDataTableColumns","Button","Checkbox","DataTableRowActions","Tooltip","TooltipContent","TooltipTrigger","cancelEditing","columns","enableRowPinning","hasTreeExpansion","isSavingEdit","lastSelectedRowIdRef","detailExpanded","onDetailExpandedChange","rowSelectionSelectAllScope","saveEdit","startEditingRow","tableRef","selectRowRange","Sa","targetRowId","selected","tableInstance","row","isDataTableLoadingRow","startIndex","endIndex","from","to","current","next","item","defs","expansionColumnSize","UTILITY_COLUMN_SIZE","canExpandTree","canExpandDetail","isTreeExpanded","isDetailExpanded","IconChevronDown","toggleDataTableExpandedState","selectsFilteredRows","selectableRows","allSelected","someSelected","checked","event","column","decorateFilterableColumn","position","useControllableState","defaultValue","onChange","value","uncontrolledValue","setUncontrolledValue","Tt","currentValue","currentValueRef","setValue","updater","nextValue","useDataTableInfiniteScroll","enabled","hasMore","isLoadingMore","onLoadMore","onError","Ct","isRequestInFlightRef","onLoadMoreEvent","onErrorEvent","error","target","observer","entries","result","useDataTablePaginationClamp","maxPageIndex","onPageIndexChange","setLocalPageIndex","zo","nextPageIndex","useDataTableInstance","autoResetPageIndex","columnGroupPaths","columnResizeMode","dir","currentColumnFilters","currentColumnOrder","currentColumnPinning","currentRowPinning","currentColumnSizing","currentExpanded","currentSorting","currentViewMode","defaultColumn","effectiveColumnVisibility","enableColumnResizing","enableMultiRowSelection","enableSubRowSelection","getRowCanSelect","getRowCanExpand","getSubRows","globalFilterFn","globalFilterValue","hasNextPage","handleColumnFiltersChange","handleColumnOrderChange","handleColumnPinningChange","handleRowPinningChange","handleColumnVisibilityChange","handleExpandedChange","keepPinnedRows","manualFiltering","manualExpanding","manualPagination","manualSorting","onActionError","onPageSizeChange","pageSize","paginateExpandedRows","filterFromLeafRows","maxLeafRowFilterDepth","setCurrentSorting","setLocalColumnSizing","setLocalPagination","tableColumns","tableData","tableGetRowId","totalRowCount","virtualization","generatedColumnIds","Ve","getDataTableLeafColumns","index","getColumnId","effectiveColumnOrder","columnIds","dataColumnIds","isUtilityColumnId","dataColumnIdSet","orderedDataColumnIds","unorderedDataColumnIds","effectiveColumnPinning","columnIdSet","dataLeft","dataRight","effectiveRowPinning","availableRowIds","visitRows","subRows","top","topIds","bottom","tableState","handlePaginationChange","handleColumnSizingChange","useReactTable","getCoreRowModel","getFilteredRowModel","getSortedRowModel","getExpandedRowModel","getPaginationRowModel","dataTableGlobalFilterFn","visibleLeafColumns","reorderColumn","sourceColumnId","targetColumnId","canReorderDataTableColumn","defaultOrder","nextOrder","moveColumnInOrder","topPinnedRows","bottomPinnedRows","virtualizationConfig","virtualRowsEnabled","fallbackRowCount","rowsToRender","rowIndex","usesManualRows","derivedTotalRowCount","effectiveTotalRowCount","isPageCountKnown","nextPageSize","STORAGE_PREFIX","DEFAULT_VERSION","ALL_SLICES","readDataTableColumnPrefs","input","resolvePersistenceConfig","storage","resolveStorage","storageKey","getStorageKey","parsed","targetVersion","candidate","isPersistencePayload","selectPersistenceSlices","validateDataTableColumnPrefs","clearDataTableColumnPrefs","usePersistDataTableColumnPrefs","key","persistence","prefs","version","debounceMs","selectedState","serialized","Mt","payload","operation","write","timeout","isRecord","slices","slice","visibility","validateBooleanRecord","sizing","validateSizingRecord","order","validateStringArray","left","right","rowPinning","validateRowPinning","isDataTableDensity","entry","BREAKPOINT_WIDTHS","DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS","first","second","useDataTableContainerWidth","containerRef","widthRef","Bt","width","setWidth","element","updateWidth","inlineSize","nextWidth","quantizeDataTableContainerWidth","getResizeObserverInlineSize","bucket","breakpointWidth","contentBoxSize","size","getInlineSize","useDataTableState","columnOrder","columnPinning","columnSizing","columnPrefsKey","columnVisibility","data","enableToolbarQueryFiltering","expanded","getRowId","hiddenRows","initialState","isLoading","loadingRowCount","onColumnFiltersChange","onColumnOrderChange","onRowPinningChange","onColumnSizingChange","onColumnVisibilityChange","onExpandedChange","onRowSelectionChange","onSortingChange","rowSelection","sorting","toolbarQueryDebounceMs","persistenceConfig","Y","persistedColumnPrefs","localPagination","currentColumnVisibility","setCurrentColumnVisibility","setCurrentColumnFilters","setCurrentExpanded","setCurrentColumnOrder","setCurrentColumnPinning","getInitialColumnPinning","setCurrentRowPinning","setCurrentColumnSizing","setCurrentViewMode","currentShowHiddenRows","setCurrentShowHiddenRows","currentDensity","setCurrentDensity","resolvedToolbarQueryValue","resolvedToolbarQueryPlaceholder","resolvedToolbarQueryDebounceMs","setLocalSearchValue","containerWidth","hasOnSearchValueChange","lastReportedSearchValueRef","onToolbarQueryValueChangeEvent","handleViewModeChange","nextViewMode","handleShowHiddenRowsChange","nextShowHiddenRows","handleDensityChange","nextDensity","resetPageIndexForFilterChange","lastFilterStateRef","previous","filtersChanged","globalFilterChanged","responsiveColumnVisibility","isHiddenAtContainerWidth","visibleData","isRowVisible","loadingRows","createDataTableLoadingRows","getDataTableLoadingRowId","shouldResolveSelectedRows","rowById","currentRows","EMPTY_COLUMN_LAYOUT","useColumnLayout","hasRowActions","hasRowExpansion","layoutMode","explicitlySizedColumnIds","Qe","ids","minimumColumnWidths","widths","configuredMinWidth","getConfiguredColumnMinWidth","pinnedColumns","leftOffset","getFixedSide","getColumnLayoutSize","rightOffset","fillColumnId","dataColumns","fixedWidthColumnIds","columnLayouts","layouts","isSelectionColumn","isExpansionColumn","isActionsColumn","isUtilityColumn","isSpacerColumn","isFlexibleFillColumn","columnMinWidth","shouldFixWidth","baseStyle","fixedSide","pinnedStyle","cellStyle","getPinnedColumnClassName","fillMinWidth","total","layout","getColumnLayout","createDataTableCardView","ui","Card","CardContent","CardHeader","Skeleton","onEditingRowIdChange","getRowDraggable","onRowDragStart","onRowDragEnd","resolvedCardSizing","resolvedCardGridClassName","getCardGridClassName","cardGridClasses","cardItemClasses","stateClassName","getCardItemClassName","_","originalRow","isSelected","isEditing","hasCardActions","showCardGradient","showCardOverlayControls","handleCardActivate","getCardRendererClassName","isDataTableInteractiveTarget","updateRowSelection","canSelect","canMultiSelect","nextSelection","createDataTableEmptyState","Empty","EmptyContent","EmptyDescription","EmptyHeader","EmptyMedia","EmptyTitle","IconInbox","createDataTablePagination","Pagination","PaginationContent","PaginationEllipsis","PaginationFirst","PaginationItem","PaginationLast","PaginationLink","PaginationNext","PaginationPrevious","Select","SelectContent","SelectGroup","SelectItem","SelectTrigger","SelectValue","DataTablePagination","pages","getVisiblePages","canGoPrevious","canGoNext","lastPageIndex","option","IconDatabase","currentPageIndex","currentPage","page","orderedPages","items","createDataTableRowActions","DropdownMenu","DropdownMenuContent","DropdownMenuGroup","DropdownMenuItem","DropdownMenuSeparator","DropdownMenuTrigger","onStartEditing","onCancelEditing","actions","action","canUseRowAction","stopRowClickPropagation","Zo","IconX","allowEdit","canEditRow","canPin","IconDots","IconEdit","Fragment","Icon","resolveRowActionLabel","createDataTableToolbar","ButtonGroup","DropdownMenuCheckboxItem","DropdownMenuLabel","InputGroup","InputGroupAddon","InputGroupInput","toolbarActions","compactSearchInputRef","$t","isCompactSearchVisible","setIsCompactSearchVisible","compactToolbarIconButtonClassName","primaryActions","trailingActions","showTitle","showSearch","showActions","showTrailingActions","showOptions","showViewToggle","showCustomToolbar","hasVisibleTitle","hasVisibleSearch","hasVisiblePrimaryActions","hasVisibleSelectionActions","hasVisibleOptions","hasVisibleViewToggle","hasVisibleTrailingActions","hasVisibleCustomToolbar","hasVisibleCompactToolbar","selectedRowCountLabel","IconSearch","collapsesToIcon","button","context","disabled","IconAdjustmentsHorizontal","IconList","IconLayoutGrid","filter","ToolbarColumnFilterControl","hasColumnFilterValue","range","normalizeToolbarRangeValue","inputType","fromLabel","toLabel","parseRangeInputValue","isBoolean","booleanOptions","selectedValue","selectedValues","selectedLabel","nextValues","LazyDataTableVirtualTablePanel","xa","DataTableTablePanelRouter","DataTableTablePanel","DEFAULT_SLICES","fallbackId","readDataTableSavedViews","view","validateSavedView","createDataTableSavedView","name","state","normalizedName","now","createSavedViewId","selectSavedViewSlices","views","writeViews","cloneSavedView","renameDataTableSavedView","id","renamed","deleteDataTableSavedView","clearDataTableSavedViews","snapshots","snapshot","cloneStateSlice","validateState","validateSorting","pagination","validatePagination","filters","validateFilters","pinning","validatePinning","useDataTableToolbarFeatures","enableColumnFilters","csvExport","st","header","accessorKey","getAccessorKey","startCase","pinned","toolbarColumnFilters","rawOptions","normalizeColumnFilterOptions","handleToolbarColumnFilterChange","hasFilterValue","handleClearColumnFilters","handleToolbarColumnPinningChange","side","handleCsvExport","exportDataTableCsv","IconDownload","createDataTable","createDataTableWithPanels","rootClassName","Input","ScrollBar","Table","TableBody","TableCell","TableFooter","TableHead","TableHeader","TableRow","TooltipProvider","renderExpandedRow","enableColumnReordering","columnGroupHeaderHeight","savedViews","unifiedState","onStateChange","apiRef","summaryRows","emptyState","getRowLoadingState","stickyHeader","showToolbar","className","tableClassName","stripedRows","fileUpload","fileInputRef","tableScrollContainerRef","draggedColumnIdRef","generatedTitleId","generatedDescriptionId","validateDataTableColumnIds","resolvedSorting","resolvedPageIndex","resolvedPageSize","resolvedRowSelection","resolvedColumnVisibility","resolvedColumnFilters","resolvedExpanded","resolvedColumnOrder","resolvedColumnPinning","resolvedRowPinning","resolvedColumnSizing","resolvedDensity","resolvedViewMode","resolvedShowHiddenRows","showTableHeading","useDataTableStateConflictWarnings","handleToolbarQueryValueChange","useDataTableStateSliceChange","handleSortingPropChange","handleRowSelectionPropChange","handleColumnVisibilityPropChange","handleColumnFiltersPropChange","handleExpandedPropChange","handleColumnOrderPropChange","handleColumnPinningPropChange","handleRowPinningPropChange","handleColumnSizingPropChange","handleDensityPropChange","handleViewModePropChange","handleShowHiddenRowsPropChange","handlePageIndexPropChange","handlePageSizePropChange","runAction","runDataTableAction","guardedRowActions","guardedOnRowClick","handleEditError","usesLegacyDetailPanelState","resolvedDetailPanel","draftValues","setDraftValues","useRowEditing","tableScrollElement","viewportHeight","useDataTableScrollViewport","handleSelectedFiles","files","getDataTableColumnGroupPaths","virtualPaddingBottom","virtualPaddingTop","columnLayout","explicitCustomCellColumnIds","visibleLeafColumnCount","bodyRowComponents","primeColumnForResize","currentSize","flushSync","resetColumnSize","filteredData","guardedToolbarActions","guardedSelectionActions","currentDataTableState","getCurrentState","cloneDataTableState","restoreState","nextState","clearPersistedState","resetColumnLayout","resetState","getSavedViews","createSavedView","applySavedView","renameSavedView","deleteSavedView","clearSavedViews","exportCsvFromApi","pinRow","unpinRow","scrollDataTableElementIntoView","onLegacyChange","handleChange","legacySlices","warnedSlicesRef","isDevelopmentEnvironment","container","kind","attribute"],"mappings":"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","file":"chunk-67Y57KCA.js","sourcesContent":["import * as React from \"react\";\nimport type { Row } from \"@tanstack/react-table\";\nimport { cn } from \"../../lib/utils\";\nimport type { DataTableCardPanelProps } from \"./data-table-card-panel-types\";\n\nexport function DataTableBaseCardPanel({\n cardClassName,\n cardGridClassName,\n cardSizing,\n cardRenderer,\n currentRowSelection,\n currentDetailExpanded,\n DataTableCardView,\n DataTableEmptyState,\n dragAndDrop,\n editableRows,\n editingRowId,\n emptyNode,\n enableRowSelection,\n flexGrow,\n getRowClassName,\n hasCardTitle,\n infiniteScroll,\n localSearchValue,\n onRowClick,\n renderedRows,\n detailPanel,\n resolvedLabels,\n resolvedLoadingRowCount,\n rowActions = [],\n ScrollArea,\n sentinelRef,\n setCurrentDetailExpanded,\n setCurrentRowSelection,\n setEditingRowId,\n shouldRenderInitialLoading,\n tableContainerClassName,\n uiClassNames,\n}: DataTableCardPanelProps) {\n const shouldRenderCards =\n shouldRenderInitialLoading || renderedRows.length > 0;\n const cardScrollContainerRef = React.useRef(null);\n\n const renderCardView = (\n rows: Array>,\n options?: {\n isLoading?: boolean;\n loadingRowCount?: number;\n },\n ) => (\n \n );\n\n return (\n \n \n \n {shouldRenderCards ? (\n shouldRenderInitialLoading ? (\n renderCardView([], {\n isLoading: true,\n loadingRowCount: resolvedLoadingRowCount,\n })\n ) : (\n renderCardView(renderedRows)\n )\n ) : (\n
    \n {emptyNode ?? (\n \n )}\n
    \n )}\n\n {infiniteScroll?.enabled && !shouldRenderInitialLoading ? (\n
    \n
    \n
    \n ) : null}\n
    \n \n \n );\n}\n","import * as React from \"react\";\nimport { DataTableBaseCardPanel } from \"./data-table-base-card-panel\";\nimport type { DataTableCardPanelProps } from \"./data-table-card-panel-types\";\n\nconst LazyDataTableVirtualCardPanel = React.lazy(async () => {\n const module = await import(\"./data-table-virtual-card-panel\");\n return { default: module.DataTableVirtualCardPanel };\n}) as unknown as typeof DataTableBaseCardPanel;\n\nexport function DataTableCardPanel(\n props: DataTableCardPanelProps,\n) {\n const config =\n typeof props.virtualization === \"object\"\n ? props.virtualization.card\n : undefined;\n\n if (config?.enabled !== true) {\n return ;\n }\n\n return (\n \n }\n >\n \n \n );\n}\n\nexport type { DataTableCardPanelProps };\n","import * as React from \"react\";\nimport type { PaginationState } from \"@tanstack/react-table\";\nimport type { DataTableLabels } from \"../types\";\n\ntype DataTableFooterSectionProps = {\n children?: React.ReactNode;\n currentPagination: PaginationState;\n DataTableFooter: React.ElementType;\n effectivePageCount: number;\n footerTotalRowCount: number | undefined;\n handleFooterPageIndexChange: (pageIndex: number) => void;\n handleFooterPageSizeChange: (pageSize: number) => void;\n labels: DataTableLabels;\n pageCountKnown?: boolean;\n rowsPerPageOptions: Array;\n showFooter: boolean;\n};\n\nexport function DataTableFooterSection({\n children,\n currentPagination,\n DataTableFooter,\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n labels,\n pageCountKnown = true,\n rowsPerPageOptions,\n showFooter,\n}: DataTableFooterSectionProps) {\n if (!showFooter && !children) {\n return null;\n }\n\n return (\n
    \n {showFooter ? (\n \n ) : null}\n {children}\n
    \n );\n}\n","import * as React from \"react\";\nimport type { Table as TanStackTable } from \"@tanstack/react-table\";\nimport type { DataTableLabels, DataTableProps } from \"../types\";\n\ntype DataTableToolbarSectionProps = {\n allRows: Array;\n columnFilters: Array;\n columnVisibilityOptions: Array;\n compactToolbar: React.ReactNode;\n customToolbar: React.ReactNode;\n DataTableToolbar: React.ElementType;\n description: string | undefined;\n descriptionId: string | undefined;\n effectiveToolbarActions: Array;\n enableColumnPinning: boolean;\n enableDensityToggle: boolean;\n enableViewToggle: boolean;\n hiddenRowsLabel: string | undefined;\n labels: DataTableLabels;\n onClearColumnFilters: () => void;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n onColumnPinningChange: (columnId: string, side: \"left\" | \"right\" | false) => void;\n onDensityChange: (density: \"compact\" | \"comfortable\" | \"spacious\") => void;\n onShowHiddenRowsChange: (showHiddenRows: boolean) => void;\n onToolbarQueryValueChange: (value: string) => void;\n onViewModeChange: (viewMode: \"table\" | \"card\") => void;\n openFileDialog: (() => void) | undefined;\n selectedRowIds: Array;\n selectedRows: Array;\n selectionActions: DataTableProps[\"selectionActions\"];\n showHiddenRows: boolean;\n table: TanStackTable;\n title: string | undefined;\n titleId: string | undefined;\n toolbarQueryPlaceholder: string;\n toolbarQueryValue: string;\n toolbarVisibility: DataTableProps[\"toolbarVisibility\"];\n density: \"compact\" | \"comfortable\" | \"spacious\";\n viewMode: \"table\" | \"card\";\n};\n\nexport function DataTableToolbarSection({\n allRows,\n columnFilters,\n columnVisibilityOptions,\n compactToolbar,\n customToolbar,\n DataTableToolbar,\n description,\n descriptionId,\n effectiveToolbarActions,\n enableColumnPinning,\n enableDensityToggle,\n enableViewToggle,\n hiddenRowsLabel,\n labels,\n onClearColumnFilters,\n onColumnFilterChange,\n onColumnPinningChange,\n onDensityChange,\n onShowHiddenRowsChange,\n onToolbarQueryValueChange,\n onViewModeChange,\n openFileDialog,\n selectedRowIds,\n selectedRows,\n selectionActions,\n showHiddenRows,\n table,\n title,\n titleId,\n toolbarQueryPlaceholder,\n toolbarQueryValue,\n toolbarVisibility,\n density,\n viewMode,\n}: DataTableToolbarSectionProps) {\n return (\n
    \n {\n table.getColumn(columnId)?.toggleVisibility(visible);\n }}\n enableColumnPinning={enableColumnPinning}\n onColumnPinningChange={onColumnPinningChange}\n columnFilters={columnFilters}\n onColumnFilterChange={onColumnFilterChange}\n onClearColumnFilters={onClearColumnFilters}\n density={density}\n onDensityChange={onDensityChange}\n enableDensityToggle={enableDensityToggle}\n labels={labels}\n toolbarVisibility={toolbarVisibility}\n openFileDialog={openFileDialog}\n />\n
    \n );\n}\n","import type { DataTableLabels } from \"../types\";\n\ntype ResolvedDataTableLabels = Required;\n\nexport const DATA_TABLE_DEFAULT_LABELS: ResolvedDataTableLabels = {\n searchPlaceholder: \"Search rows...\",\n searchTable: \"Search table\",\n clearSearch: \"Clear search\",\n noRowsTitle: \"No rows yet\",\n noRowsDescription: \"Create a record or refresh this view once data exists.\",\n noMatchingRowsTitle: \"No matching rows\",\n noMatchingRowsDescription: \"Try a different search term or clear filters.\",\n tableOptions: \"Show table options\",\n columns: \"Columns\",\n filters: \"Filters\",\n clearFilters: \"Clear filters\",\n filterFrom: \"From\",\n filterTo: \"To\",\n filterTrue: \"Yes\",\n filterFalse: \"No\",\n selectedRows: (count) =>\n `${count} record${count === 1 ? \"\" : \"s\"} selected`,\n showHiddenRows: (label) => `Show ${label}`,\n recordsPerPage: \"Records per page\",\n totalRecords: (count) => `Total records: ${count}`,\n pageStatus: (pageIndex, pageCount) => `Page ${pageIndex + 1} of ${pageCount}`,\n pageStatusUnknown: (pageIndex) => `Page ${pageIndex + 1}`,\n pagination: \"Pagination\",\n morePages: \"More pages\",\n firstPage: \"First page\",\n previousPage: \"Previous page\",\n nextPage: \"Next page\",\n lastPage: \"Last page\",\n selectAllVisibleRows: \"Select all visible rows\",\n selectAllFilteredRows: \"Select all filtered rows\",\n selectRow: \"Select row\",\n selectCardRow: (rowId) => `Select row ${rowId}`,\n switchToTableView: \"Switch to table view\",\n switchToCardView: \"Switch to card view\",\n tableView: \"Table view\",\n cardView: \"Card view\",\n allFilterOptions: \"All\",\n actions: \"Actions\",\n rowActions: \"Row actions\",\n editRow: \"Edit row\",\n saveEdit: \"Save\",\n cancelEdit: \"Cancel editing\",\n expandRow: \"Expand row\",\n collapseRow: \"Collapse row\",\n expandRowDetails: \"Expand row details\",\n collapseRowDetails: \"Collapse row details\",\n exportCsv: \"Export CSV\",\n density: \"Density\",\n compactDensity: \"Compact\",\n comfortableDensity: \"Comfortable\",\n spaciousDensity: \"Spacious\",\n pinLeft: \"Pin left\",\n pinRight: \"Pin right\",\n unpin: \"Unpin\",\n pinRowToTop: \"Pin row to top\",\n pinRowToBottom: \"Pin row to bottom\",\n unpinRow: \"Unpin row\",\n resizeColumn: (columnLabel) => `Resize ${columnLabel}`,\n};\n\nexport function resolveDataTableLabels(\n labels?: Partial,\n): ResolvedDataTableLabels {\n return {\n ...DATA_TABLE_DEFAULT_LABELS,\n ...labels,\n } as ResolvedDataTableLabels;\n}\n","import * as React from \"react\";\nimport type {\n ColumnDef,\n ExpandedState,\n OnChangeFn,\n RowPinningPosition,\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport { IconChevronDown } from \"../icons\";\nimport type {\n DataTableEditableRowsConfig,\n DataTableDetailPanel,\n DataTableLabels,\n DataTableProps,\n DataTableRowAction,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport {\n UTILITY_COLUMN_SIZE,\n decorateFilterableColumn,\n isDataTableLoadingRow,\n toggleDataTableExpandedState,\n} from \"./data-table-utils\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\ntype DataTableRowActionsComponentProps = {\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n labels: DataTableLabels;\n onCancelEditing: () => void;\n onStartEditing: () => void;\n row: TData;\n rowActions: Array>;\n rowPinning?: {\n canPin: boolean;\n position: RowPinningPosition;\n pin: (position: RowPinningPosition) => void;\n };\n};\n\nexport function useDataTableColumns({\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n editingRowId,\n enableRowSelection,\n enableRowPinning,\n hasTreeExpansion,\n isSavingEdit,\n labels,\n lastSelectedRowIdRef,\n detailPanel,\n detailExpanded,\n onDetailExpandedChange,\n rowSelectionSelectAllScope,\n rowActions,\n saveEdit,\n startEditingRow,\n tableRef,\n}: {\n Button: DataTableUiKit[\"Button\"];\n Checkbox: DataTableUiKit[\"Checkbox\"];\n DataTableRowActions: React.ComponentType<\n DataTableRowActionsComponentProps\n >;\n Tooltip: DataTableUiKit[\"Tooltip\"];\n TooltipContent: DataTableUiKit[\"TooltipContent\"];\n TooltipTrigger: DataTableUiKit[\"TooltipTrigger\"];\n cancelEditing: () => void;\n columns: DataTableProps[\"columns\"];\n editableRows: DataTableProps[\"editableRows\"];\n editingRowId: string | null;\n enableRowSelection: boolean;\n enableRowPinning: DataTableProps[\"enableRowPinning\"];\n hasTreeExpansion: boolean;\n isSavingEdit: boolean;\n labels: DataTableLabels;\n lastSelectedRowIdRef: React.MutableRefObject;\n detailPanel: DataTableDetailPanel | undefined;\n detailExpanded: ExpandedState;\n onDetailExpandedChange: OnChangeFn;\n rowSelectionSelectAllScope: NonNullable<\n DataTableProps[\"rowSelectionSelectAllScope\"]\n >;\n rowActions: Array>;\n saveEdit: (row: TData) => Promise;\n startEditingRow: (row: TData, rowId: string) => void;\n tableRef: React.RefObject | null>;\n}) {\n const selectRowRange = React.useCallback(\n (targetRowId: string, selected: boolean) => {\n const tableInstance = tableRef.current;\n if (!tableInstance || !lastSelectedRowIdRef.current) {\n return;\n }\n\n const rows = tableInstance\n .getRowModel()\n .rows.filter((row) => !isDataTableLoadingRow(row.original));\n const startIndex = rows.findIndex(\n (row) => row.id === lastSelectedRowIdRef.current,\n );\n const endIndex = rows.findIndex((row) => row.id === targetRowId);\n\n if (startIndex < 0 || endIndex < 0) {\n return;\n }\n\n const from = Math.min(startIndex, endIndex);\n const to = Math.max(startIndex, endIndex);\n tableInstance.setRowSelection((current) => {\n const next = { ...current };\n for (const row of rows\n .slice(from, to + 1)\n .filter(\n (item) => item.getCanSelect() && item.getCanMultiSelect(),\n )) {\n if (selected) {\n next[row.id] = true;\n } else {\n delete next[row.id];\n }\n }\n return next;\n });\n },\n [lastSelectedRowIdRef, tableRef],\n );\n\n return React.useMemo>>(() => {\n const defs: Array> = [];\n\n if (hasTreeExpansion || detailPanel) {\n const expansionColumnSize =\n hasTreeExpansion && detailPanel ? 80 : UTILITY_COLUMN_SIZE;\n defs.push({\n id: \"__expand__\",\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n size: expansionColumnSize,\n minSize: expansionColumnSize,\n maxSize: expansionColumnSize,\n header: () => {labels.expandRow},\n cell: ({ row, table }) => {\n const canExpandTree = hasTreeExpansion && row.getCanExpand();\n const canExpandDetail = Boolean(\n detailPanel && (detailPanel.getRowCanExpand?.(row.original) ?? true),\n );\n if (!canExpandTree && !canExpandDetail) {\n return null;\n }\n\n const isTreeExpanded = row.getIsExpanded();\n const isDetailExpanded =\n detailExpanded === true || Boolean(detailExpanded[row.id]);\n return (\n
    \n {canExpandTree ? (\n row.toggleExpanded()}\n >\n \n \n ) : null}\n {canExpandDetail ? (\n {\n onDetailExpandedChange((current) =>\n toggleDataTableExpandedState(\n current,\n row.id,\n table.getCoreRowModel().flatRows.map((item) => item.id),\n ),\n );\n }}\n >\n \n \n ) : null}\n
    \n );\n },\n });\n }\n\n if (enableRowSelection) {\n defs.push({\n id: \"__select__\",\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n size: UTILITY_COLUMN_SIZE,\n minSize: UTILITY_COLUMN_SIZE,\n maxSize: UTILITY_COLUMN_SIZE,\n header: ({ table }) => {\n const selectsFilteredRows = rowSelectionSelectAllScope === \"filtered\";\n const selectableRows = (selectsFilteredRows\n ? table.getFilteredRowModel().flatRows\n : table.getRowModel().flatRows\n ).filter((row) => row.getCanSelect() && row.getCanMultiSelect());\n const allSelected =\n selectableRows.length > 0 &&\n selectableRows.every((row) => row.getIsSelected());\n const someSelected = selectableRows.some((row) => row.getIsSelected());\n const label = selectsFilteredRows\n ? (labels.selectAllFilteredRows ??\n DATA_TABLE_DEFAULT_LABELS.selectAllFilteredRows)\n : (labels.selectAllVisibleRows ??\n DATA_TABLE_DEFAULT_LABELS.selectAllVisibleRows);\n\n if (selectableRows.length === 0) {\n return {label};\n }\n\n return (\n
    \n {\n table.setRowSelection((current) => {\n const next = { ...current };\n for (const row of selectableRows) {\n if (checked === true) {\n next[row.id] = true;\n } else {\n delete next[row.id];\n }\n }\n return next;\n });\n }}\n aria-label={label}\n />\n
    \n );\n },\n cell: ({ row }) => (\n
    \n ) => {\n if (\n !event.shiftKey ||\n !lastSelectedRowIdRef.current ||\n !row.getCanMultiSelect()\n ) {\n lastSelectedRowIdRef.current = row.id;\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n selectRowRange(row.id, !row.getIsSelected());\n lastSelectedRowIdRef.current = row.id;\n }}\n onCheckedChange={(checked: boolean | \"indeterminate\") => {\n lastSelectedRowIdRef.current = row.id;\n row.toggleSelected(checked === true);\n }}\n aria-label={\n labels.selectRow ?? DATA_TABLE_DEFAULT_LABELS.selectRow\n }\n />\n
    \n ),\n });\n }\n\n defs.push(...columns.map((column) => decorateFilterableColumn(column)));\n\n if (rowActions.length || editableRows || enableRowPinning) {\n defs.push({\n id: \"__actions__\",\n enableSorting: false,\n enableResizing: false,\n enableHiding: false,\n size: UTILITY_COLUMN_SIZE,\n minSize: UTILITY_COLUMN_SIZE,\n maxSize: UTILITY_COLUMN_SIZE,\n header: () => {labels.actions},\n cell: ({ row }) => {\n const rowId = row.id;\n const isEditing = editingRowId === rowId;\n\n if (isEditing) {\n return (\n
    \n {\n void saveEdit(row.original);\n }}\n >\n {labels.saveEdit}\n \n \n \n \n \n {labels.cancelEdit}\n \n \n {labels.cancelEdit}\n \n
    \n );\n }\n\n return (\n
    \n {\n startEditingRow(row.original, row.id);\n }}\n onCancelEditing={() => {}}\n labels={labels}\n rowPinning={\n enableRowPinning\n ? {\n canPin: row.getCanPin(),\n position: row.getIsPinned(),\n pin: (position) => row.pin(position),\n }\n : undefined\n }\n />\n
    \n );\n },\n });\n }\n\n return defs;\n }, [\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n detailExpanded,\n detailPanel,\n editingRowId,\n enableRowSelection,\n enableRowPinning,\n hasTreeExpansion,\n isSavingEdit,\n labels,\n lastSelectedRowIdRef,\n onDetailExpandedChange,\n rowSelectionSelectAllScope,\n rowActions,\n saveEdit,\n selectRowRange,\n startEditingRow,\n ]);\n}\n","import * as React from \"react\";\nimport type { Updater } from \"@tanstack/react-table\";\n\nexport function useControllableState({\n defaultValue,\n onChange,\n value,\n}: {\n defaultValue: T | (() => T);\n onChange?: (value: T) => void;\n value: T | undefined;\n}) {\n const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue);\n const currentValue = value ?? uncontrolledValue;\n const currentValueRef = React.useRef(currentValue);\n\n React.useEffect(() => {\n currentValueRef.current = currentValue;\n }, [currentValue]);\n\n const setValue = React.useCallback(\n (updater: Updater) => {\n const nextValue =\n typeof updater === \"function\"\n ? (updater as (current: T) => T)(currentValueRef.current)\n : updater;\n currentValueRef.current = nextValue;\n\n onChange?.(nextValue);\n\n if (value === undefined) {\n setUncontrolledValue(nextValue);\n }\n },\n [onChange, value],\n );\n\n return [currentValue, setValue] as const;\n}\n","import * as React from \"react\";\n\nexport function useDataTableInfiniteScroll({\n enabled,\n hasMore,\n isLoadingMore,\n onLoadMore,\n onError,\n}: {\n enabled: boolean;\n hasMore: boolean;\n isLoadingMore?: boolean;\n onLoadMore: () => void | Promise;\n onError?: (error: unknown) => void;\n}) {\n const sentinelRef = React.useRef(null);\n const isRequestInFlightRef = React.useRef(false);\n const onLoadMoreEvent = React.useEffectEvent(onLoadMore);\n const onErrorEvent = React.useEffectEvent((error: unknown) => {\n onError?.(error);\n });\n\n React.useEffect(() => {\n if (!enabled || !hasMore || isLoadingMore) {\n return;\n }\n\n const target = sentinelRef.current;\n if (!target) {\n return;\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n const entry = entries[0];\n if (entry.isIntersecting && !isRequestInFlightRef.current) {\n isRequestInFlightRef.current = true;\n\n let result: void | Promise;\n try {\n result = onLoadMoreEvent();\n } catch (error) {\n isRequestInFlightRef.current = false;\n onErrorEvent(error);\n return;\n }\n\n void Promise.resolve(result)\n .catch((error: unknown) => {\n onErrorEvent(error);\n })\n .finally(() => {\n isRequestInFlightRef.current = false;\n });\n }\n },\n {\n rootMargin: \"200px 0px 200px 0px\",\n },\n );\n\n observer.observe(target);\n\n return () => {\n observer.disconnect();\n };\n }, [enabled, hasMore, isLoadingMore]);\n\n return sentinelRef;\n}\n","import * as React from \"react\";\n\nexport function useDataTablePaginationClamp({\n enabled,\n maxPageIndex,\n onPageIndexChange,\n pageIndex,\n setLocalPageIndex,\n}: {\n enabled: boolean;\n maxPageIndex: number;\n onPageIndexChange?: (pageIndex: number) => void;\n pageIndex: number;\n setLocalPageIndex: (pageIndex: number) => void;\n}) {\n React.useEffect(() => {\n if (!enabled) {\n return;\n }\n\n if (pageIndex >= 0 && pageIndex <= maxPageIndex) {\n return;\n }\n\n const nextPageIndex = Math.min(Math.max(pageIndex, 0), maxPageIndex);\n setLocalPageIndex(nextPageIndex);\n onPageIndexChange?.(nextPageIndex);\n }, [enabled, maxPageIndex, onPageIndexChange, pageIndex, setLocalPageIndex]);\n}\n","import * as React from \"react\";\nimport {\n getCoreRowModel,\n getExpandedRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\";\nimport type {\n ColumnDef,\n ColumnFiltersState,\n ColumnOrderState,\n ColumnPinningState,\n ColumnSizingState,\n ExpandedState,\n FilterFnOption,\n OnChangeFn,\n PaginationState,\n RowPinningState,\n Row,\n SortingState,\n Table as TanStackTable,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport type { DataTableProps } from \"../types\";\nimport {\n canReorderDataTableColumn,\n dataTableGlobalFilterFn,\n getColumnId,\n getDataTableLeafColumns,\n isDataTableLoadingRow,\n isUtilityColumnId,\n moveColumnInOrder,\n} from \"./data-table-utils\";\nimport type { DataTableColumnGroupPaths } from \"./data-table-utils\";\nimport { useDataTableInfiniteScroll } from \"./use-data-table-infinite-scroll\";\nimport { useDataTablePaginationClamp } from \"./use-data-table-pagination-clamp\";\n\nexport function useDataTableInstance({\n autoResetPageIndex,\n columnGroupPaths,\n columnResizeMode,\n dir,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentRowPinning,\n currentColumnSizing,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentSorting,\n currentViewMode,\n defaultColumn,\n effectiveColumnVisibility,\n enableColumnResizing,\n enableMultiRowSelection,\n enableRowPinning,\n enableRowSelection,\n enableSubRowSelection,\n getRowCanSelect,\n getRowCanExpand,\n getSubRows,\n globalFilterFn,\n globalFilterValue,\n hasNextPage,\n handleColumnFiltersChange,\n handleColumnOrderChange,\n handleColumnPinningChange,\n handleRowPinningChange,\n handleColumnVisibilityChange,\n handleExpandedChange,\n infiniteScroll,\n keepPinnedRows,\n manualFiltering,\n manualExpanding,\n manualPagination,\n manualSorting,\n onActionError,\n onPageIndexChange,\n onPageSizeChange,\n pageCount,\n pageIndex,\n pageSize,\n paginateExpandedRows,\n filterFromLeafRows,\n maxLeafRowFilterDepth,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n shouldRenderInitialLoading,\n tableColumns,\n tableData,\n tableGetRowId,\n tableRef,\n totalRowCount,\n virtualization,\n}: {\n autoResetPageIndex: boolean;\n columnGroupPaths: DataTableColumnGroupPaths;\n columnResizeMode: DataTableProps[\"columnResizeMode\"];\n dir: NonNullable[\"dir\"]>;\n currentColumnFilters: ColumnFiltersState;\n currentColumnOrder: ColumnOrderState;\n currentColumnPinning: ColumnPinningState;\n currentRowPinning: RowPinningState;\n currentColumnSizing: ColumnSizingState;\n currentExpanded: ExpandedState;\n currentPagination: PaginationState;\n currentRowSelection: Record;\n currentSorting: SortingState;\n currentViewMode: \"table\" | \"card\";\n defaultColumn: Partial>;\n effectiveColumnVisibility: VisibilityState;\n enableColumnResizing: boolean;\n enableMultiRowSelection: NonNullable<\n DataTableProps[\"enableMultiRowSelection\"]\n >;\n enableRowPinning: DataTableProps[\"enableRowPinning\"];\n enableRowSelection: boolean;\n enableSubRowSelection: NonNullable<\n DataTableProps[\"enableSubRowSelection\"]\n >;\n getRowCanSelect: DataTableProps[\"getRowCanSelect\"];\n getRowCanExpand: DataTableProps[\"getRowCanExpand\"];\n getSubRows: DataTableProps[\"getSubRows\"];\n globalFilterFn: FilterFnOption | undefined;\n globalFilterValue: string;\n hasNextPage?: DataTableProps[\"hasNextPage\"];\n handleColumnFiltersChange: OnChangeFn;\n handleColumnOrderChange: OnChangeFn;\n handleColumnPinningChange: OnChangeFn;\n handleRowPinningChange: OnChangeFn;\n handleColumnVisibilityChange: OnChangeFn;\n handleExpandedChange: OnChangeFn;\n infiniteScroll: DataTableProps[\"infiniteScroll\"];\n keepPinnedRows: boolean;\n manualFiltering: boolean;\n manualExpanding: boolean;\n manualPagination: boolean;\n manualSorting: boolean;\n onActionError?: DataTableProps[\"onActionError\"];\n onPageIndexChange: DataTableProps[\"onPageIndexChange\"];\n onPageSizeChange: DataTableProps[\"onPageSizeChange\"];\n pageCount: DataTableProps[\"pageCount\"];\n pageIndex: DataTableProps[\"pageIndex\"];\n pageSize: DataTableProps[\"pageSize\"];\n paginateExpandedRows: DataTableProps[\"paginateExpandedRows\"];\n filterFromLeafRows: DataTableProps[\"filterFromLeafRows\"];\n maxLeafRowFilterDepth: DataTableProps[\"maxLeafRowFilterDepth\"];\n setCurrentRowSelection: OnChangeFn>;\n setCurrentSorting: OnChangeFn;\n setLocalColumnSizing: OnChangeFn;\n setLocalPagination: React.Dispatch>;\n shouldRenderInitialLoading: boolean;\n tableColumns: Array>;\n tableData: Array;\n tableGetRowId: DataTableProps[\"getRowId\"];\n tableRef: React.RefObject | null>;\n tableScrollElement: HTMLElement | null;\n /**\n * @deprecated Filtering now runs through TanStack Table. Retained so\n * advanced 4.x hook callers remain source-compatible.\n */\n toolbarFilteredData?: Array;\n totalRowCount: DataTableProps[\"totalRowCount\"];\n virtualization: DataTableProps[\"virtualization\"];\n viewportHeight: number;\n}) {\n const generatedColumnIds = React.useMemo(() => {\n return getDataTableLeafColumns(\n tableColumns as DataTableProps[\"columns\"],\n ).map(({ column, index }) => getColumnId(column, index));\n }, [tableColumns]);\n\n const effectiveColumnOrder = React.useMemo(() => {\n const columnIds = generatedColumnIds;\n const dataColumnIds = columnIds.filter(\n (columnId) =>\n !isUtilityColumnId(columnId) && columnId !== \"__spacer__\",\n );\n const dataColumnIdSet = new Set(dataColumnIds);\n const orderedDataColumnIds = currentColumnOrder.filter((columnId) =>\n dataColumnIdSet.has(columnId),\n );\n const unorderedDataColumnIds = dataColumnIds.filter(\n (columnId) => !orderedDataColumnIds.includes(columnId),\n );\n\n return [\n ...columnIds.filter(\n (columnId) => columnId === \"__expand__\" || columnId === \"__select__\",\n ),\n ...orderedDataColumnIds,\n ...unorderedDataColumnIds,\n ...columnIds.filter((columnId) => columnId === \"__spacer__\"),\n ...columnIds.filter((columnId) => columnId === \"__actions__\"),\n ];\n }, [currentColumnOrder, generatedColumnIds]);\n\n const effectiveColumnPinning = React.useMemo(() => {\n const columnIdSet = new Set(generatedColumnIds);\n const dataColumnIdSet = new Set(\n generatedColumnIds.filter(\n (columnId) =>\n !isUtilityColumnId(columnId) && columnId !== \"__spacer__\",\n ),\n );\n const dataLeft = (currentColumnPinning.left ?? []).filter((columnId) =>\n dataColumnIdSet.has(columnId),\n );\n const dataRight = (currentColumnPinning.right ?? []).filter((columnId) =>\n dataColumnIdSet.has(columnId),\n );\n\n return {\n left: [\n ...[\"__expand__\", \"__select__\"].filter((columnId) =>\n columnIdSet.has(columnId),\n ),\n ...dataLeft,\n ],\n right: [\n ...dataRight,\n ...[\"__actions__\"].filter((columnId) => columnIdSet.has(columnId)),\n ],\n };\n }, [currentColumnPinning, generatedColumnIds]);\n\n const effectiveRowPinning = React.useMemo(() => {\n const availableRowIds = new Set();\n const visitRows = (rows: Array) => {\n rows.forEach((row, index) => {\n availableRowIds.add(tableGetRowId(row, index));\n if (!isDataTableLoadingRow(row)) {\n const subRows = getSubRows?.(row, index);\n if (subRows?.length) {\n visitRows(subRows);\n }\n }\n });\n };\n visitRows(tableData);\n const top = (currentRowPinning.top ?? []).filter((rowId) =>\n availableRowIds.has(rowId),\n );\n const topIds = new Set(top);\n const bottom = (currentRowPinning.bottom ?? []).filter(\n (rowId) => availableRowIds.has(rowId) && !topIds.has(rowId),\n );\n return { top, bottom };\n }, [\n currentRowPinning.bottom,\n currentRowPinning.top,\n getSubRows,\n tableData,\n tableGetRowId,\n ]);\n\n const tableState = React.useMemo(\n () => ({\n sorting: currentSorting,\n pagination: currentPagination,\n rowSelection: currentRowSelection,\n columnVisibility: effectiveColumnVisibility,\n columnFilters: currentColumnFilters,\n globalFilter: globalFilterValue,\n expanded: currentExpanded,\n columnOrder: effectiveColumnOrder,\n columnPinning: effectiveColumnPinning,\n rowPinning: effectiveRowPinning,\n columnSizing: currentColumnSizing,\n }),\n [\n currentColumnFilters,\n currentColumnSizing,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentSorting,\n effectiveColumnVisibility,\n effectiveColumnOrder,\n effectiveColumnPinning,\n effectiveRowPinning,\n globalFilterValue,\n ],\n );\n\n const handlePaginationChange = React.useCallback<\n OnChangeFn\n >(\n (updater) => {\n const nextValue =\n typeof updater === \"function\" ? updater(currentPagination) : updater;\n\n if (pageIndex === undefined || pageSize === undefined) {\n setLocalPagination((current) => ({\n pageIndex:\n pageIndex === undefined ? nextValue.pageIndex : current.pageIndex,\n pageSize:\n pageSize === undefined ? nextValue.pageSize : current.pageSize,\n }));\n }\n\n if (nextValue.pageIndex !== currentPagination.pageIndex) {\n onPageIndexChange?.(nextValue.pageIndex);\n }\n if (nextValue.pageSize !== currentPagination.pageSize) {\n onPageSizeChange?.(nextValue.pageSize);\n }\n },\n [\n currentPagination,\n onPageIndexChange,\n onPageSizeChange,\n pageIndex,\n pageSize,\n setLocalPagination,\n ],\n );\n\n const handleColumnSizingChange = React.useCallback<\n OnChangeFn\n >(\n (updater) => {\n setLocalColumnSizing(updater);\n },\n [setLocalColumnSizing],\n );\n\n // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Table owns its instance functions.\n const table = useReactTable({\n data: tableData,\n columns: tableColumns,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: manualFiltering ? undefined : getFilteredRowModel(),\n getSortedRowModel: manualSorting ? undefined : getSortedRowModel(),\n getExpandedRowModel:\n getSubRows && !manualExpanding ? getExpandedRowModel() : undefined,\n getPaginationRowModel:\n manualPagination || infiniteScroll?.enabled\n ? undefined\n : getPaginationRowModel(),\n enableRowSelection: getRowCanSelect\n ? (row) => enableRowSelection && getRowCanSelect(row.original)\n : enableRowSelection,\n enableRowPinning:\n typeof enableRowPinning === \"function\"\n ? (row) => enableRowPinning(row.original)\n : enableRowPinning,\n keepPinnedRows,\n enableMultiRowSelection:\n typeof enableMultiRowSelection === \"function\"\n ? (row) => enableMultiRowSelection(row.original)\n : enableMultiRowSelection,\n enableSubRowSelection:\n typeof enableSubRowSelection === \"function\"\n ? (row) => enableSubRowSelection(row.original)\n : enableSubRowSelection,\n enableColumnResizing,\n columnResizeMode,\n columnResizeDirection: dir,\n getRowId: tableGetRowId,\n getSubRows,\n getRowCanExpand: getSubRows\n ? (row) => getRowCanExpand?.(row.original) ?? row.subRows.length > 0\n : undefined,\n globalFilterFn: globalFilterFn ?? dataTableGlobalFilterFn,\n getColumnCanGlobalFilter: (column) =>\n column.columnDef.enableGlobalFilter !== false &&\n typeof column.accessorFn === \"function\",\n manualSorting,\n manualFiltering,\n manualExpanding,\n manualPagination: manualPagination || Boolean(infiniteScroll?.enabled),\n paginateExpandedRows,\n filterFromLeafRows,\n maxLeafRowFilterDepth,\n defaultColumn,\n autoResetPageIndex,\n state: tableState,\n onSortingChange: setCurrentSorting,\n onPaginationChange: handlePaginationChange,\n onRowSelectionChange: setCurrentRowSelection,\n onColumnVisibilityChange: handleColumnVisibilityChange,\n onColumnFiltersChange: handleColumnFiltersChange,\n onExpandedChange: handleExpandedChange,\n onColumnOrderChange: handleColumnOrderChange,\n onColumnPinningChange: handleColumnPinningChange,\n onRowPinningChange: handleRowPinningChange,\n onColumnSizingChange: handleColumnSizingChange,\n });\n tableRef.current = table;\n\n const visibleLeafColumns = table.getVisibleLeafColumns();\n const reorderColumn = React.useCallback(\n (sourceColumnId: string, targetColumnId: string) => {\n if (sourceColumnId === targetColumnId) {\n return;\n }\n\n if (\n !canReorderDataTableColumn(\n sourceColumnId,\n targetColumnId,\n columnGroupPaths,\n )\n ) {\n return;\n }\n\n const defaultOrder = table\n .getAllLeafColumns()\n .map((column) => column.id)\n .filter((columnId) => !isUtilityColumnId(columnId));\n const nextOrder = moveColumnInOrder(\n currentColumnOrder.length ? currentColumnOrder : defaultOrder,\n sourceColumnId,\n targetColumnId,\n );\n handleColumnOrderChange(nextOrder);\n },\n [columnGroupPaths, currentColumnOrder, handleColumnOrderChange, table],\n );\n\n const topPinnedRows = table.getTopRows();\n const bottomPinnedRows = table.getBottomRows();\n // Card rendering has no top/bottom table regions. Keep its original row\n // model intact rather than silently dropping pinned records.\n const renderedRows =\n currentViewMode === \"table\"\n ? table.getCenterRows()\n : table.getRowModel().rows;\n const virtualizationConfig =\n typeof virtualization === \"object\" ? virtualization : undefined;\n const virtualRowsEnabled =\n virtualization === true || virtualizationConfig?.enabled === true;\n const fallbackRowCount = Math.max(\n 1,\n Math.floor(virtualizationConfig?.fallbackRowCount ?? 20),\n );\n const initialRowsToRender = virtualRowsEnabled\n ? renderedRows.slice(0, fallbackRowCount)\n : renderedRows;\n const rowsToRender = initialRowsToRender.map((row, rowIndex) => ({\n row,\n rowIndex,\n }));\n\n const usesManualRows = manualPagination || Boolean(infiniteScroll?.enabled);\n const derivedTotalRowCount = usesManualRows\n ? undefined\n : table.getFilteredRowModel().rows.length;\n const effectiveTotalRowCount = totalRowCount ?? derivedTotalRowCount;\n const isPageCountKnown =\n !usesManualRows || pageCount !== undefined || totalRowCount !== undefined;\n const footerTotalRowCount = effectiveTotalRowCount;\n const effectivePageCount = shouldRenderInitialLoading\n ? 1\n : (pageCount ??\n (effectiveTotalRowCount !== undefined\n ? Math.max(\n 1,\n Math.ceil(effectiveTotalRowCount / currentPagination.pageSize),\n )\n : usesManualRows\n ? currentPagination.pageIndex + (hasNextPage ? 2 : 1)\n : table.getPageCount()));\n const maxPageIndex = Math.max(0, effectivePageCount - 1);\n\n const setLocalPageIndex = React.useCallback(\n (nextPageIndex: number) => {\n if (pageIndex !== undefined) {\n return;\n }\n\n setLocalPagination((current) =>\n current.pageIndex === nextPageIndex\n ? current\n : { ...current, pageIndex: nextPageIndex },\n );\n },\n [pageIndex, setLocalPagination],\n );\n useDataTablePaginationClamp({\n enabled:\n !shouldRenderInitialLoading &&\n !infiniteScroll?.enabled &&\n isPageCountKnown,\n maxPageIndex,\n onPageIndexChange,\n pageIndex: currentPagination.pageIndex,\n setLocalPageIndex,\n });\n\n const handleFooterPageIndexChange = React.useCallback(\n (nextPageIndex: number) => {\n if (nextPageIndex === currentPagination.pageIndex) {\n return;\n }\n\n onPageIndexChange?.(nextPageIndex);\n if (pageIndex === undefined) {\n setLocalPagination((current) =>\n current.pageIndex === nextPageIndex\n ? current\n : { ...current, pageIndex: nextPageIndex },\n );\n }\n },\n [\n currentPagination.pageIndex,\n onPageIndexChange,\n pageIndex,\n setLocalPagination,\n ],\n );\n const handleFooterPageSizeChange = React.useCallback(\n (nextPageSize: number) => {\n if (currentPagination.pageIndex !== 0) {\n onPageIndexChange?.(0);\n }\n if (nextPageSize !== currentPagination.pageSize) {\n onPageSizeChange?.(nextPageSize);\n }\n if (pageSize === undefined) {\n setLocalPagination({\n pageIndex: 0,\n pageSize: nextPageSize,\n });\n }\n },\n [\n currentPagination.pageIndex,\n currentPagination.pageSize,\n onPageIndexChange,\n onPageSizeChange,\n pageSize,\n setLocalPagination,\n ],\n );\n\n const sentinelRef = useDataTableInfiniteScroll({\n enabled: Boolean(infiniteScroll?.enabled),\n hasMore: Boolean(infiniteScroll?.hasMore),\n isLoadingMore: infiniteScroll?.isLoadingMore,\n onLoadMore: () => infiniteScroll?.onLoadMore(),\n onError: (error) => {\n onActionError?.({\n error,\n source: \"infiniteScroll\",\n });\n },\n });\n\n return {\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n isPageCountKnown,\n renderedRows,\n topPinnedRows,\n bottomPinnedRows,\n reorderColumn,\n rowsToRender,\n sentinelRef,\n table,\n virtualPaddingBottom: 0,\n virtualPaddingTop: 0,\n visibleLeafColumns,\n };\n}\n\nexport type DataTableRowsToRender = Array<{\n row: Row;\n rowIndex: number;\n}>;\n","import * as React from \"react\";\nimport type {\n DataTableColumnPrefs,\n DataTableDensity,\n DataTablePersistenceConfig,\n DataTablePersistencePayload,\n DataTablePersistenceSlice,\n DataTablePersistenceStorage,\n} from \"../types\";\nimport type { RowPinningState } from \"@tanstack/react-table\";\n\nconst STORAGE_PREFIX = \"data-table-pro:column-prefs:\";\nconst DEFAULT_VERSION = 1;\nconst ALL_SLICES: Array = [\n \"visibility\",\n \"sizing\",\n \"order\",\n \"pinning\",\n \"rowPinning\",\n \"density\",\n];\n\nexport function readDataTableColumnPrefs(\n input: string | DataTablePersistenceConfig | undefined,\n): DataTableColumnPrefs {\n const config = resolvePersistenceConfig(input);\n if (!config) {\n return {};\n }\n\n const storage = resolveStorage(config);\n if (!storage) {\n return {};\n }\n const storageKey = getStorageKey(config.key);\n\n let value: string | null;\n try {\n value = storage.getItem(storageKey);\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return {};\n }\n if (!value) {\n return {};\n }\n\n let parsed: unknown;\n try {\n parsed = (config.deserialize ?? JSON.parse)(value);\n } catch (error) {\n config.onError?.({ error, operation: \"deserialize\" });\n return {};\n }\n\n const targetVersion = config.version ?? DEFAULT_VERSION;\n let candidate: unknown;\n if (isPersistencePayload(parsed)) {\n if (parsed.version === targetVersion) {\n candidate = parsed.state;\n } else if (config.migrate) {\n try {\n candidate = config.migrate(\n {\n version: parsed.version,\n state: parsed.state,\n },\n targetVersion,\n );\n } catch (error) {\n config.onError?.({ error, operation: \"migrate\" });\n return {};\n }\n } else {\n return {};\n }\n } else {\n // Raw objects are the legacy columnPrefsKey format. They are validated and\n // upgraded to a versioned envelope on the next successful write.\n candidate = parsed;\n }\n\n return selectPersistenceSlices(\n validateDataTableColumnPrefs(candidate),\n config.slices,\n );\n}\n\nexport function clearDataTableColumnPrefs(\n input: string | DataTablePersistenceConfig | undefined,\n) {\n const config = resolvePersistenceConfig(input);\n if (!config) {\n return false;\n }\n\n const storage = resolveStorage(config);\n if (!storage) {\n return false;\n }\n\n try {\n storage.removeItem(getStorageKey(config.key));\n return true;\n } catch (error) {\n config.onError?.({ error, operation: \"remove\" });\n return false;\n }\n}\n\nexport function usePersistDataTableColumnPrefs({\n key,\n persistence,\n prefs,\n}: {\n key?: string;\n persistence?: DataTablePersistenceConfig;\n prefs: DataTableColumnPrefs;\n}) {\n const config = persistence ?? resolvePersistenceConfig(key);\n const storage = config ? resolveStorage(config) : undefined;\n const storageKey = config ? getStorageKey(config.key) : undefined;\n const version = config?.version ?? DEFAULT_VERSION;\n const debounceMs = Math.max(0, config?.debounceMs ?? 100);\n const selectedState = selectPersistenceSlices(prefs, config?.slices);\n const serialized = React.useMemo(() => {\n if (!config) {\n return { value: undefined };\n }\n\n try {\n const payload: DataTablePersistencePayload = {\n version,\n state: selectedState,\n };\n return {\n value: (config.serialize ?? JSON.stringify)(payload),\n };\n } catch (error) {\n return { error, value: undefined };\n }\n }, [config, selectedState, version]);\n const onErrorEvent = React.useEffectEvent(\n (\n error: unknown,\n operation: \"serialize\" | \"write\",\n ) => {\n config?.onError?.({ error, operation });\n },\n );\n\n React.useEffect(() => {\n if (serialized.error !== undefined) {\n onErrorEvent(serialized.error, \"serialize\");\n }\n }, [serialized.error]);\n\n React.useEffect(() => {\n if (!storage || !storageKey || serialized.value === undefined) {\n return;\n }\n\n const write = () => {\n try {\n if (storage.getItem(storageKey) === serialized.value) {\n return;\n }\n storage.setItem(storageKey, serialized.value);\n } catch (error) {\n onErrorEvent(error, \"write\");\n }\n };\n\n if (debounceMs === 0) {\n write();\n return;\n }\n\n const timeout = globalThis.setTimeout(write, debounceMs);\n return () => {\n globalThis.clearTimeout(timeout);\n };\n }, [debounceMs, serialized.value, storage, storageKey]);\n}\n\nfunction resolvePersistenceConfig(\n input: string | DataTablePersistenceConfig | undefined,\n): DataTablePersistenceConfig | undefined {\n if (!input) {\n return undefined;\n }\n\n return typeof input === \"string\" ? { key: input } : input;\n}\n\nfunction resolveStorage(\n config: DataTablePersistenceConfig,\n): DataTablePersistenceStorage | undefined {\n if (config.storage) {\n return config.storage;\n }\n\n if (typeof window === \"undefined\") {\n return undefined;\n }\n\n try {\n return window.localStorage;\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return undefined;\n }\n}\n\nfunction getStorageKey(key: string) {\n return `${STORAGE_PREFIX}${key}`;\n}\n\nfunction isPersistencePayload(\n value: unknown,\n): value is { version: unknown; state: unknown } {\n return (\n isRecord(value) &&\n Object.prototype.hasOwnProperty.call(value, \"version\") &&\n Object.prototype.hasOwnProperty.call(value, \"state\")\n );\n}\n\nfunction selectPersistenceSlices(\n prefs: DataTableColumnPrefs,\n slices: Array | undefined,\n) {\n const selected = new Set(slices ?? ALL_SLICES);\n const result: DataTableColumnPrefs = {};\n\n for (const slice of ALL_SLICES) {\n if (selected.has(slice) && prefs[slice] !== undefined) {\n Object.assign(result, { [slice]: prefs[slice] });\n }\n }\n\n return result;\n}\n\nfunction validateDataTableColumnPrefs(value: unknown): DataTableColumnPrefs {\n if (!isRecord(value)) {\n return {};\n }\n\n const prefs: DataTableColumnPrefs = {};\n const visibility = validateBooleanRecord(value.visibility);\n if (visibility) {\n prefs.visibility = visibility;\n }\n const sizing = validateSizingRecord(value.sizing);\n if (sizing) {\n prefs.sizing = sizing;\n }\n const order = validateStringArray(value.order);\n if (order) {\n prefs.order = order;\n }\n if (isRecord(value.pinning)) {\n const left = validateStringArray(value.pinning.left) ?? [];\n const right = validateStringArray(value.pinning.right) ?? [];\n prefs.pinning = { left, right };\n }\n const rowPinning = validateRowPinning(value.rowPinning);\n if (rowPinning) {\n prefs.rowPinning = rowPinning;\n }\n if (isDataTableDensity(value.density)) {\n prefs.density = value.density;\n }\n\n return prefs;\n}\n\nfunction validateBooleanRecord(value: unknown) {\n if (!isRecord(value)) {\n return undefined;\n }\n\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, boolean] => typeof entry[1] === \"boolean\",\n ),\n );\n}\n\nfunction validateSizingRecord(value: unknown) {\n if (!isRecord(value)) {\n return undefined;\n }\n\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, number] =>\n typeof entry[1] === \"number\" &&\n Number.isFinite(entry[1]) &&\n entry[1] >= 0,\n ),\n );\n}\n\nfunction validateStringArray(value: unknown) {\n if (!Array.isArray(value)) {\n return undefined;\n }\n\n return value.filter((item): item is string => typeof item === \"string\");\n}\n\nfunction validateRowPinning(value: unknown): RowPinningState | undefined {\n if (!isRecord(value)) {\n return undefined;\n }\n\n return {\n top: validateStringArray(value.top) ?? [],\n bottom: validateStringArray(value.bottom) ?? [],\n };\n}\n\nfunction isDataTableDensity(value: unknown): value is DataTableDensity {\n return (\n value === \"compact\" ||\n value === \"comfortable\" ||\n value === \"spacious\"\n );\n}\n\nfunction isRecord(value: unknown): value is Record {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n","import * as React from \"react\";\nimport { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS } from \"../types\";\n\nconst BREAKPOINT_WIDTHS = Object.values(DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS)\n .slice()\n .sort((first, second) => first - second);\n\nexport function useDataTableContainerWidth(\n containerRef: React.RefObject,\n) {\n const widthRef = React.useRef(0);\n const [width, setWidth] = React.useState(0);\n\n React.useEffect(() => {\n const element = containerRef.current;\n if (!element) {\n return;\n }\n\n const updateWidth = (inlineSize = element.clientWidth) => {\n const nextWidth = quantizeDataTableContainerWidth(inlineSize);\n if (nextWidth === widthRef.current) {\n return;\n }\n\n widthRef.current = nextWidth;\n setWidth(nextWidth);\n };\n\n updateWidth();\n\n if (typeof ResizeObserver === \"undefined\") {\n return;\n }\n\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n updateWidth(entry ? getResizeObserverInlineSize(entry) : undefined);\n });\n\n observer.observe(element);\n\n return () => {\n observer.disconnect();\n };\n }, [containerRef]);\n\n return width;\n}\n\nexport function quantizeDataTableContainerWidth(width: number) {\n if (width <= 0) {\n return 0;\n }\n\n let bucket = 1;\n for (const breakpointWidth of BREAKPOINT_WIDTHS) {\n if (width < breakpointWidth) {\n break;\n }\n bucket = breakpointWidth;\n }\n\n return bucket;\n}\n\nfunction getResizeObserverInlineSize(entry: ResizeObserverEntry) {\n const contentBoxSize: unknown = entry.contentBoxSize;\n const size: unknown = Array.isArray(contentBoxSize)\n ? contentBoxSize[0]\n : contentBoxSize;\n const inlineSize = getInlineSize(size);\n\n return inlineSize ?? entry.contentRect.width;\n}\n\nfunction getInlineSize(value: unknown) {\n if (typeof value !== \"object\" || value === null) {\n return undefined;\n }\n\n const inlineSize = (value as { inlineSize?: unknown }).inlineSize;\n return typeof inlineSize === \"number\" ? inlineSize : undefined;\n}\n","import * as React from \"react\";\nimport type {\n ColumnFiltersState,\n ColumnOrderState,\n ColumnPinningState,\n ColumnSizingState,\n ExpandedState,\n PaginationState,\n RowPinningState,\n SortingState,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableDensity,\n DataTableLabels,\n DataTableProps,\n} from \"../types\";\nimport {\n createDataTableLoadingRows,\n getColumnId,\n getDataTableLeafColumns,\n getDataTableLoadingRowId,\n getInitialColumnPinning,\n isDataTableLoadingRow,\n} from \"./data-table-utils\";\nimport {\n readDataTableColumnPrefs,\n usePersistDataTableColumnPrefs,\n} from \"./use-data-table-column-prefs\";\nimport { useControllableState } from \"./use-controllable-state\";\nimport { useDataTableContainerWidth } from \"./use-data-table-container-width\";\nimport { isHiddenAtContainerWidth, isRowVisible } from \"../types\";\n\nexport function useDataTableState({\n columnFilters,\n columnOrder,\n columnPinning,\n rowPinning,\n columnSizing,\n columnPrefsKey,\n persistence,\n columnVisibility,\n columns,\n data,\n density,\n enableRowSelection,\n enableToolbarQueryFiltering,\n expanded,\n getSubRows,\n getRowId,\n hiddenRows,\n initialState,\n isLoading,\n loadingRowCount,\n manualFiltering,\n onColumnFiltersChange,\n onColumnOrderChange,\n onColumnPinningChange,\n onRowPinningChange,\n onColumnSizingChange,\n onColumnVisibilityChange,\n onDensityChange,\n onExpandedChange,\n onPageIndexChange,\n onRowSelectionChange,\n onShowHiddenRowsChange,\n onSortingChange,\n onToolbarQueryValueChange,\n onViewModeChange,\n pageIndex,\n pageSize,\n resolvedLabels,\n rowSelection,\n rowsPerPageOptions,\n selectionActions,\n showHiddenRows,\n sorting,\n toolbarQueryDebounceMs,\n toolbarQueryPlaceholder,\n toolbarQueryValue,\n viewMode,\n containerRef,\n}: {\n columnFilters: DataTableProps[\"columnFilters\"];\n columnOrder: DataTableProps[\"columnOrder\"];\n columnPinning: DataTableProps[\"columnPinning\"];\n rowPinning: DataTableProps[\"rowPinning\"];\n columnSizing?: DataTableProps[\"columnSizing\"];\n columnPrefsKey: DataTableProps[\"columnPrefsKey\"];\n persistence?: DataTableProps[\"persistence\"];\n columnVisibility: DataTableProps[\"columnVisibility\"];\n columns: DataTableProps[\"columns\"];\n data: DataTableProps[\"data\"];\n density: DataTableProps[\"density\"];\n enableRowSelection: boolean;\n enableToolbarQueryFiltering: boolean;\n expanded: DataTableProps[\"expanded\"];\n getSubRows: DataTableProps[\"getSubRows\"];\n getRowId: DataTableProps[\"getRowId\"];\n hiddenRows: DataTableProps[\"hiddenRows\"];\n initialState?: DataTableProps[\"initialState\"];\n isLoading: boolean;\n loadingRowCount: DataTableProps[\"loadingRowCount\"];\n manualFiltering: boolean;\n onColumnFiltersChange: DataTableProps[\"onColumnFiltersChange\"];\n onColumnOrderChange: DataTableProps[\"onColumnOrderChange\"];\n onColumnPinningChange: DataTableProps[\"onColumnPinningChange\"];\n onRowPinningChange: DataTableProps[\"onRowPinningChange\"];\n onColumnSizingChange?: DataTableProps[\"onColumnSizingChange\"];\n onColumnVisibilityChange: DataTableProps[\"onColumnVisibilityChange\"];\n onDensityChange: DataTableProps[\"onDensityChange\"];\n onExpandedChange: DataTableProps[\"onExpandedChange\"];\n onPageIndexChange: DataTableProps[\"onPageIndexChange\"];\n onRowSelectionChange: DataTableProps[\"onRowSelectionChange\"];\n onShowHiddenRowsChange: DataTableProps[\"onShowHiddenRowsChange\"];\n onSortingChange: DataTableProps[\"onSortingChange\"];\n onToolbarQueryValueChange: DataTableProps[\"onToolbarQueryValueChange\"];\n onViewModeChange: DataTableProps[\"onViewModeChange\"];\n pageIndex: DataTableProps[\"pageIndex\"];\n pageSize: DataTableProps[\"pageSize\"];\n resolvedLabels: DataTableLabels;\n rowSelection: DataTableProps[\"rowSelection\"];\n rowsPerPageOptions: Array;\n selectionActions: DataTableProps[\"selectionActions\"];\n showHiddenRows: DataTableProps[\"showHiddenRows\"];\n sorting: DataTableProps[\"sorting\"];\n toolbarQueryDebounceMs: DataTableProps[\"toolbarQueryDebounceMs\"];\n toolbarQueryPlaceholder: DataTableProps[\"toolbarQueryPlaceholder\"];\n toolbarQueryValue: DataTableProps[\"toolbarQueryValue\"];\n viewMode: DataTableProps[\"viewMode\"];\n containerRef: React.RefObject;\n}) {\n const persistenceConfig = React.useMemo(\n () => persistence ?? (columnPrefsKey ? { key: columnPrefsKey } : undefined),\n [columnPrefsKey, persistence],\n );\n const persistedColumnPrefs = React.useMemo(\n () => readDataTableColumnPrefs(persistenceConfig),\n [persistenceConfig],\n );\n const [localPagination, setLocalPagination] =\n React.useState({\n pageIndex: initialState?.pagination?.pageIndex ?? 0,\n pageSize:\n initialState?.pagination?.pageSize ??\n rowsPerPageOptions[0] ??\n 20,\n });\n const [currentSorting, setCurrentSorting] =\n useControllableState({\n value: sorting,\n onChange: onSortingChange,\n defaultValue: () => initialState?.sorting ?? [],\n });\n const [currentRowSelection, setCurrentRowSelection] = useControllableState<\n Record\n >({\n value: rowSelection,\n onChange: onRowSelectionChange,\n defaultValue: () => initialState?.rowSelection ?? {},\n });\n const [currentColumnVisibility, setCurrentColumnVisibility] =\n useControllableState({\n value: columnVisibility,\n onChange: onColumnVisibilityChange,\n defaultValue: () =>\n initialState?.columnVisibility ??\n persistedColumnPrefs.visibility ??\n {},\n });\n const [currentColumnFilters, setCurrentColumnFilters] =\n useControllableState({\n value: columnFilters,\n onChange: onColumnFiltersChange,\n defaultValue: () => initialState?.columnFilters ?? [],\n });\n const [currentExpanded, setCurrentExpanded] =\n useControllableState({\n value: expanded,\n onChange: onExpandedChange,\n defaultValue: () => initialState?.expanded ?? {},\n });\n const [currentColumnOrder, setCurrentColumnOrder] =\n useControllableState({\n value: columnOrder,\n onChange: onColumnOrderChange,\n defaultValue: () =>\n initialState?.columnOrder ?? persistedColumnPrefs.order ?? [],\n });\n const [currentColumnPinning, setCurrentColumnPinning] =\n useControllableState({\n value: columnPinning,\n onChange: onColumnPinningChange,\n defaultValue: () =>\n initialState?.columnPinning ??\n persistedColumnPrefs.pinning ??\n getInitialColumnPinning(columns),\n });\n const [currentRowPinning, setCurrentRowPinning] =\n useControllableState({\n value: rowPinning,\n onChange: onRowPinningChange,\n defaultValue: () =>\n initialState?.rowPinning ?? persistedColumnPrefs.rowPinning ?? {\n top: [],\n bottom: [],\n },\n });\n const [currentColumnSizing, setCurrentColumnSizing] =\n useControllableState({\n value: columnSizing,\n onChange: onColumnSizingChange,\n defaultValue: () =>\n initialState?.columnSizing ?? persistedColumnPrefs.sizing ?? {},\n });\n const [currentViewMode, setCurrentViewMode] = useControllableState<\n \"table\" | \"card\"\n >({\n value: viewMode,\n onChange: onViewModeChange,\n defaultValue: () => initialState?.viewMode ?? \"table\",\n });\n const [currentShowHiddenRows, setCurrentShowHiddenRows] =\n useControllableState({\n value: showHiddenRows,\n onChange: onShowHiddenRowsChange,\n defaultValue: () => initialState?.showHiddenRows ?? false,\n });\n const [currentDensity, setCurrentDensity] =\n useControllableState({\n value: density,\n onChange: onDensityChange,\n defaultValue: () =>\n initialState?.density ??\n persistedColumnPrefs.density ??\n \"comfortable\",\n });\n const resolvedToolbarQueryValue =\n toolbarQueryValue ?? initialState?.globalFilter ?? \"\";\n const resolvedToolbarQueryPlaceholder =\n toolbarQueryPlaceholder ?? resolvedLabels.searchPlaceholder;\n const resolvedToolbarQueryDebounceMs = toolbarQueryDebounceMs ?? 250;\n const [localSearchValue, setLocalSearchValue] = React.useState(\n resolvedToolbarQueryValue,\n );\n const containerWidth = useDataTableContainerWidth(containerRef);\n const hasOnSearchValueChange = Boolean(onToolbarQueryValueChange);\n const lastReportedSearchValueRef = React.useRef(resolvedToolbarQueryValue);\n const onToolbarQueryValueChangeEvent = React.useEffectEvent(\n (value: string) => {\n lastReportedSearchValueRef.current = value;\n onToolbarQueryValueChange?.(value);\n },\n );\n\n React.useEffect(() => {\n lastReportedSearchValueRef.current = resolvedToolbarQueryValue;\n // A controlled query change must replace any pending debounced draft.\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setLocalSearchValue(resolvedToolbarQueryValue);\n }, [resolvedToolbarQueryValue]);\n\n React.useEffect(() => {\n if (!hasOnSearchValueChange) {\n return;\n }\n\n if (localSearchValue === resolvedToolbarQueryValue) {\n return;\n }\n\n if (localSearchValue === lastReportedSearchValueRef.current) {\n return;\n }\n\n const timeout = window.setTimeout(() => {\n onToolbarQueryValueChangeEvent(localSearchValue);\n }, resolvedToolbarQueryDebounceMs);\n\n return () => {\n window.clearTimeout(timeout);\n };\n }, [\n hasOnSearchValueChange,\n localSearchValue,\n resolvedToolbarQueryDebounceMs,\n resolvedToolbarQueryValue,\n ]);\n\n const currentPagination = React.useMemo(\n () => ({\n pageIndex: pageIndex ?? localPagination.pageIndex,\n pageSize: pageSize ?? localPagination.pageSize,\n }),\n [\n localPagination.pageIndex,\n localPagination.pageSize,\n pageIndex,\n pageSize,\n ],\n );\n const resolvedLoadingRowCount = Math.max(\n 1,\n loadingRowCount ?? Math.min(5, currentPagination.pageSize),\n );\n const globalFilterValue = enableToolbarQueryFiltering\n ? localSearchValue\n : \"\";\n const handleViewModeChange = React.useCallback(\n (nextViewMode: \"table\" | \"card\") => {\n setCurrentViewMode(nextViewMode);\n },\n [setCurrentViewMode],\n );\n const handleShowHiddenRowsChange = React.useCallback(\n (nextShowHiddenRows: boolean) => {\n setCurrentShowHiddenRows(nextShowHiddenRows);\n },\n [setCurrentShowHiddenRows],\n );\n const handleDensityChange = React.useCallback(\n (nextDensity: DataTableDensity) => {\n setCurrentDensity(nextDensity);\n },\n [setCurrentDensity],\n );\n const resetPageIndexForFilterChange = React.useCallback(() => {\n onPageIndexChange?.(0);\n if (pageIndex === undefined) {\n setLocalPagination((current) =>\n current.pageIndex === 0 ? current : { ...current, pageIndex: 0 },\n );\n }\n }, [onPageIndexChange, pageIndex]);\n const lastFilterStateRef = React.useRef({\n columnFilters: currentColumnFilters,\n globalFilterValue,\n });\n\n React.useEffect(() => {\n const previous = lastFilterStateRef.current;\n const filtersChanged = previous.columnFilters !== currentColumnFilters;\n const globalFilterChanged =\n previous.globalFilterValue !== globalFilterValue;\n lastFilterStateRef.current = {\n columnFilters: currentColumnFilters,\n globalFilterValue,\n };\n\n if (manualFiltering) {\n return;\n }\n\n if (!filtersChanged && !globalFilterChanged) {\n return;\n }\n\n resetPageIndexForFilterChange();\n }, [\n currentColumnFilters,\n globalFilterValue,\n manualFiltering,\n resetPageIndexForFilterChange,\n ]);\n\n usePersistDataTableColumnPrefs({\n persistence: persistenceConfig,\n prefs: {\n visibility: columnVisibility ? undefined : currentColumnVisibility,\n sizing:\n columnSizing === undefined ? currentColumnSizing : undefined,\n order: columnOrder ? undefined : currentColumnOrder,\n pinning: columnPinning ? undefined : currentColumnPinning,\n rowPinning: rowPinning === undefined ? currentRowPinning : undefined,\n density: density ? undefined : currentDensity,\n },\n });\n const responsiveColumnVisibility = React.useMemo(() => {\n return getDataTableLeafColumns(columns).reduce(\n (visibility, { column, index }) => {\n const columnId = getColumnId(column, index);\n if (isHiddenAtContainerWidth(column.meta?.hideOn, containerWidth)) {\n visibility[columnId] = false;\n }\n return visibility;\n },\n {},\n );\n }, [columns, containerWidth]);\n const effectiveColumnVisibility = React.useMemo(() => {\n return {\n ...currentColumnVisibility,\n ...responsiveColumnVisibility,\n };\n }, [currentColumnVisibility, responsiveColumnVisibility]);\n const visibleData = React.useMemo(\n () =>\n data.filter((row) =>\n isRowVisible(row, hiddenRows, currentShowHiddenRows),\n ),\n [currentShowHiddenRows, data, hiddenRows],\n );\n const shouldRenderInitialLoading = isLoading && visibleData.length === 0;\n const loadingRows = React.useMemo(\n () => createDataTableLoadingRows(resolvedLoadingRowCount),\n [resolvedLoadingRowCount],\n );\n const tableData = shouldRenderInitialLoading\n ? loadingRows\n : visibleData;\n const tableGetRowId = React.useCallback(\n (row: TData, index: number) => {\n if (isDataTableLoadingRow(row)) {\n return getDataTableLoadingRowId(index);\n }\n\n return getRowId(row, index);\n },\n [getRowId],\n );\n const shouldResolveSelectedRows =\n enableRowSelection ||\n (selectionActions?.length ?? 0) > 0 ||\n Object.values(currentRowSelection).some(Boolean);\n const rowById = React.useMemo(() => {\n if (!shouldResolveSelectedRows) {\n return new Map();\n }\n\n const rows = new Map();\n const visitRows = (currentRows: Array) => {\n currentRows.forEach((row, index) => {\n rows.set(getRowId(row, index), row);\n const subRows = getSubRows?.(row, index);\n if (subRows?.length) {\n visitRows(subRows);\n }\n });\n };\n visitRows(visibleData);\n return rows;\n }, [getRowId, getSubRows, shouldResolveSelectedRows, visibleData]);\n const selectedRows = React.useMemo(() => {\n if (!shouldResolveSelectedRows) {\n return [];\n }\n\n return Object.entries(currentRowSelection)\n .filter(([, selected]) => selected)\n .map(([rowId]) => rowById.get(rowId))\n .filter((row): row is TData => Boolean(row));\n }, [currentRowSelection, rowById, shouldResolveSelectedRows]);\n const selectedRowIds = React.useMemo(\n () =>\n Object.entries(currentRowSelection).flatMap(([rowId, selected]) =>\n selected ? [rowId] : [],\n ),\n [currentRowSelection],\n );\n\n return {\n containerWidth,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentRowPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n effectiveColumnVisibility,\n globalFilterValue,\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n localSearchValue,\n resolvedLoadingRowCount,\n resolvedToolbarQueryPlaceholder,\n selectedRowIds,\n selectedRows,\n setCurrentColumnFilters,\n setCurrentColumnOrder,\n setCurrentColumnPinning,\n setCurrentRowPinning,\n setCurrentColumnVisibility,\n setCurrentExpanded,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing: setCurrentColumnSizing,\n setLocalPagination,\n setLocalSearchValue,\n shouldRenderInitialLoading,\n tableData,\n tableGetRowId,\n /**\n * @deprecated Read the filtered TanStack row model from the table\n * instance. This alias remains for advanced 4.x callers.\n */\n toolbarFilteredData: visibleData,\n visibleData,\n };\n}\n","import * as React from \"react\";\nimport type { Column, ColumnSizingState } from \"@tanstack/react-table\";\nimport type { DataTableColumnDef } from \"../types\";\nimport type { DataTableUiClassNames } from \"../ui-kit\";\nimport {\n UTILITY_COLUMN_SIZE,\n getColumnId,\n getConfiguredColumnMinWidth,\n getDataTableLeafColumns,\n getFixedSide,\n getPinnedColumnClassName,\n isUtilityColumnId,\n} from \"./data-table-utils\";\n\ntype ColumnLayoutMode = \"fill\" | \"fit\";\n\nexport type DataTableColumnLayout = {\n cellStyle: React.CSSProperties | undefined;\n colStyle: React.CSSProperties | undefined;\n fixedSide: \"left\" | \"right\" | false | undefined;\n headerStyle: React.CSSProperties | undefined;\n isActionsColumn: boolean;\n isExpansionColumn: boolean;\n isSelectionColumn: boolean;\n isSpacerColumn: boolean;\n isUtilityColumn: boolean;\n pinnedClassName: string | undefined;\n utilityClassName: string | undefined;\n};\n\nconst EMPTY_COLUMN_LAYOUT: DataTableColumnLayout = {\n cellStyle: undefined,\n colStyle: undefined,\n fixedSide: undefined,\n headerStyle: undefined,\n isActionsColumn: false,\n isExpansionColumn: false,\n isSelectionColumn: false,\n isSpacerColumn: false,\n isUtilityColumn: false,\n pinnedClassName: undefined,\n utilityClassName: undefined,\n};\n\nexport function useColumnLayout({\n columns,\n columnSizing,\n editableRows,\n enableRowSelection,\n hasRowActions,\n hasRowExpansion,\n layoutMode,\n uiClassNames,\n visibleLeafColumns,\n}: {\n columns: Array>;\n columnSizing: ColumnSizingState;\n editableRows: boolean;\n enableRowSelection: boolean;\n hasRowActions: boolean;\n hasRowExpansion: boolean;\n layoutMode: ColumnLayoutMode;\n uiClassNames: DataTableUiClassNames;\n visibleLeafColumns: Array>;\n}) {\n const explicitlySizedColumnIds = React.useMemo(() => {\n const ids = new Set();\n\n for (const { column, index } of getDataTableLeafColumns(columns)) {\n if (Object.prototype.hasOwnProperty.call(column, \"size\")) {\n ids.add(getColumnId(column, index));\n }\n }\n\n if (enableRowSelection) {\n ids.add(\"__select__\");\n }\n\n if (hasRowExpansion) {\n ids.add(\"__expand__\");\n }\n\n if (hasRowActions || editableRows) {\n ids.add(\"__actions__\");\n }\n\n return ids;\n }, [\n columns,\n editableRows,\n enableRowSelection,\n hasRowActions,\n hasRowExpansion,\n ]);\n\n const minimumColumnWidths = React.useMemo(() => {\n const widths = new Map();\n\n for (const { column, index } of getDataTableLeafColumns(columns)) {\n const configuredMinWidth = getConfiguredColumnMinWidth(column);\n\n if (configuredMinWidth !== undefined) {\n widths.set(getColumnId(column, index), configuredMinWidth);\n }\n }\n\n return widths;\n }, [columns]);\n\n const pinnedColumns = React.useMemo(() => {\n const left = new Map();\n const right = new Map();\n\n let leftOffset = 0;\n for (const column of visibleLeafColumns) {\n if (getFixedSide(column) === \"left\") {\n left.set(column.id, leftOffset);\n leftOffset += getColumnLayoutSize(column);\n }\n }\n\n let rightOffset = 0;\n for (const column of [...visibleLeafColumns].reverse()) {\n if (getFixedSide(column) === \"right\") {\n right.set(column.id, rightOffset);\n rightOffset += getColumnLayoutSize(column);\n }\n }\n\n return { left, right };\n }, [visibleLeafColumns]);\n\n const fillColumnId = React.useMemo(() => {\n if (layoutMode !== \"fill\") {\n return undefined;\n }\n\n const dataColumns = visibleLeafColumns.filter(\n (column) => !isUtilityColumnId(column.id),\n );\n\n if (!dataColumns.length) {\n return undefined;\n }\n\n const allDataColumnsAreFixed = dataColumns.every(\n (column) =>\n explicitlySizedColumnIds.has(column.id) ||\n Object.prototype.hasOwnProperty.call(columnSizing, column.id),\n );\n\n return allDataColumnsAreFixed\n ? dataColumns[dataColumns.length - 1]?.id\n : undefined;\n }, [\n columnSizing,\n explicitlySizedColumnIds,\n layoutMode,\n visibleLeafColumns,\n ]);\n\n const fixedWidthColumnIds = React.useMemo(() => {\n const ids = new Set([\n ...explicitlySizedColumnIds,\n ...Object.keys(columnSizing),\n ]);\n\n if (fillColumnId) {\n ids.delete(fillColumnId);\n }\n\n return ids;\n }, [columnSizing, explicitlySizedColumnIds, fillColumnId]);\n\n const columnLayouts = React.useMemo(() => {\n const layouts = new Map();\n\n for (const column of visibleLeafColumns) {\n const isSelectionColumn = column.id === \"__select__\";\n const isExpansionColumn = column.id === \"__expand__\";\n const isActionsColumn = column.id === \"__actions__\";\n const isUtilityColumn =\n isSelectionColumn || isExpansionColumn || isActionsColumn;\n const isSpacerColumn = column.id === \"__spacer__\";\n const configuredMinWidth = minimumColumnWidths.get(column.id);\n const isFlexibleFillColumn = column.id === fillColumnId;\n const columnMinWidth =\n configuredMinWidth ??\n (isFlexibleFillColumn ? column.getSize() : undefined);\n const shouldFixWidth =\n !isSpacerColumn &&\n (layoutMode === \"fit\" ||\n isUtilityColumn ||\n fixedWidthColumnIds.has(column.id));\n const baseStyle =\n shouldFixWidth || columnMinWidth !== undefined\n ? {\n width: shouldFixWidth\n ? isUtilityColumn\n ? UTILITY_COLUMN_SIZE\n : column.getSize()\n : undefined,\n minWidth: isUtilityColumn\n ? UTILITY_COLUMN_SIZE\n : shouldFixWidth\n ? column.getSize()\n : columnMinWidth,\n maxWidth: shouldFixWidth\n ? isUtilityColumn\n ? UTILITY_COLUMN_SIZE\n : column.getSize()\n : undefined,\n }\n : undefined;\n const fixedSide = getFixedSide(column);\n const pinnedStyle = fixedSide\n ? {\n left:\n fixedSide === \"left\" ? pinnedColumns.left.get(column.id) : undefined,\n right:\n fixedSide === \"right\"\n ? pinnedColumns.right.get(column.id)\n : undefined,\n }\n : undefined;\n const cellStyle =\n baseStyle || pinnedStyle ? { ...baseStyle, ...pinnedStyle } : undefined;\n\n layouts.set(column.id, {\n cellStyle,\n colStyle: baseStyle,\n fixedSide,\n headerStyle: cellStyle,\n isActionsColumn,\n isExpansionColumn,\n isSelectionColumn,\n isSpacerColumn,\n isUtilityColumn,\n pinnedClassName: fixedSide\n ? getPinnedColumnClassName(fixedSide, uiClassNames, {\n isUtilityColumn,\n })\n : undefined,\n utilityClassName: isUtilityColumn\n ? \"w-[50px] max-w-[50px] min-w-[50px] px-0\"\n : undefined,\n });\n }\n\n return layouts;\n }, [\n fillColumnId,\n fixedWidthColumnIds,\n layoutMode,\n minimumColumnWidths,\n pinnedColumns,\n uiClassNames,\n visibleLeafColumns,\n ]);\n\n const fillMinWidth = React.useMemo(() => {\n return visibleLeafColumns.reduce((total, column) => {\n const layout = columnLayouts.get(column.id);\n const configuredMinWidth = minimumColumnWidths.get(column.id);\n const isFlexibleFillColumn = column.id === fillColumnId;\n\n if (layout?.isUtilityColumn) {\n return total + UTILITY_COLUMN_SIZE;\n }\n\n if (fixedWidthColumnIds.has(column.id)) {\n return total + column.getSize();\n }\n\n return (\n total +\n (configuredMinWidth ?? (isFlexibleFillColumn ? column.getSize() : 0))\n );\n }, 0);\n }, [\n columnLayouts,\n fillColumnId,\n fixedWidthColumnIds,\n minimumColumnWidths,\n visibleLeafColumns,\n ]);\n\n const getColumnLayout = React.useCallback(\n (columnId: string) => columnLayouts.get(columnId) ?? EMPTY_COLUMN_LAYOUT,\n [columnLayouts],\n );\n\n return {\n columnLayouts,\n explicitlySizedColumnIds,\n fillMinWidth,\n getColumnLayout,\n };\n}\n\nfunction getColumnLayoutSize(column: Column) {\n return isUtilityColumnId(column.id) ? UTILITY_COLUMN_SIZE : column.getSize();\n}\n","import * as React from \"react\";\nimport type { ExpandedState, OnChangeFn, Row } from \"@tanstack/react-table\";\nimport { IconChevronDown } from \"../icons\";\nimport type {\n DataTableCardRendererProps,\n DataTableCardSizing,\n DataTableEditableRowsConfig,\n DataTableDetailPanel,\n DataTableLabels,\n DataTableProps,\n DataTableRowAction,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\nimport {\n isDataTableInteractiveTarget,\n toggleDataTableExpandedState,\n} from \"./data-table-utils\";\n\ntype DataTableCardViewProps = {\n rows: Array>;\n cardRenderer: (props: DataTableCardRendererProps) => React.ReactNode;\n cardSizing?: DataTableCardSizing;\n cardGridClassName?: string;\n cardClassName?: string;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n detailPanel?: DataTableDetailPanel;\n detailExpanded: ExpandedState;\n onDetailExpandedChange: OnChangeFn;\n hasCardTitle: boolean;\n rowSelection: Record;\n onRowSelectionChange: (rowSelection: Record) => void;\n enableRowSelection: boolean;\n editingRowId: string | null;\n onEditingRowIdChange: (rowId: string | null) => void;\n getRowClassName?: DataTableProps[\"getRowClassName\"];\n onRowClick?: (context: { row: TData; rowId: string }) => void | Promise;\n getRowDraggable?: (row: TData) => boolean;\n onRowDragStart?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n onRowDragEnd?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n isLoading?: boolean;\n loadingRowCount?: number;\n labels: DataTableLabels;\n};\n\ntype DataTableRowActionsComponent = (props: {\n row: TData;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n onStartEditing: () => void;\n onCancelEditing: () => void;\n labels: DataTableLabels;\n}) => React.ReactElement | null;\n\nexport function createDataTableCardView(\n ui: DataTableUiKit,\n DataTableRowActions: DataTableRowActionsComponent,\n) {\n const uiClassNames = ui.classNames ?? {};\n const { Button, Card, CardContent, CardHeader, Checkbox, Skeleton } = ui;\n\n return function DataTableCardView({\n rows,\n cardRenderer,\n cardSizing = \"fixed\",\n cardGridClassName,\n cardClassName,\n rowActions,\n editableRows,\n detailPanel,\n detailExpanded,\n onDetailExpandedChange,\n hasCardTitle,\n rowSelection,\n onRowSelectionChange,\n enableRowSelection,\n editingRowId,\n onEditingRowIdChange,\n getRowClassName,\n onRowClick,\n getRowDraggable,\n onRowDragStart,\n onRowDragEnd,\n isLoading = false,\n loadingRowCount = 5,\n labels,\n }: DataTableCardViewProps) {\n const resolvedCardSizing = cardSizing ?? \"fixed\";\n const resolvedCardGridClassName =\n cardGridClassName\n ? cn(\"grid\", cardGridClassName)\n : getCardGridClassName(resolvedCardSizing);\n const cardGridClasses = cn(\n \"min-h-0 w-full gap-4 p-1\",\n uiClassNames.cardGrid,\n resolvedCardGridClassName,\n );\n const cardItemClasses = (stateClassName?: string) =>\n cn(\n \"relative min-w-0 max-w-full gap-0 overflow-hidden bg-transparent p-0\",\n getCardItemClassName(resolvedCardSizing),\n uiClassNames.cardItem,\n cardClassName,\n stateClassName,\n );\n\n if (isLoading) {\n return (\n \n {Array.from({ length: Math.max(1, loadingRowCount) }, (_, index) => (\n \n {hasCardTitle ? (\n \n \n \n \n ) : null}\n \n \n \n \n \n \n \n ))}\n \n );\n }\n\n return (\n \n {rows.map((row) => {\n const rowId = row.id;\n const originalRow = row.original;\n const isSelected = Boolean(rowSelection[rowId]);\n const isEditing = editingRowId === rowId;\n const hasCardActions = rowActions.length > 0 || Boolean(editableRows);\n const canExpandDetail = Boolean(\n detailPanel && (detailPanel.getRowCanExpand?.(originalRow) ?? true),\n );\n const showCardGradient =\n enableRowSelection || hasCardActions || hasCardTitle;\n const showCardOverlayControls =\n enableRowSelection ||\n hasCardActions ||\n row.getCanExpand() ||\n canExpandDetail;\n const handleCardActivate = () => {\n if (!onRowClick) {\n return;\n }\n\n void onRowClick({ row: originalRow, rowId });\n };\n\n return (\n ) => {\n onRowDragStart?.({ row: originalRow, rowId, event });\n }}\n onDragEnd={(event: React.DragEvent) => {\n onRowDragEnd?.({ row: originalRow, rowId, event });\n }}\n >\n {showCardGradient ? (\n \n ) : null}\n *]:min-w-0\",\n getCardRendererClassName(resolvedCardSizing),\n onRowClick && \"cursor-pointer focus-visible:outline-none\",\n )}\n onClick={(event: React.MouseEvent) => {\n if (\n isDataTableInteractiveTarget(\n event.target,\n event.currentTarget,\n )\n ) {\n return;\n }\n\n handleCardActivate();\n }}\n onKeyDown={(event: React.KeyboardEvent) => {\n if (\n isDataTableInteractiveTarget(\n event.target,\n event.currentTarget,\n )\n ) {\n return;\n }\n\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n handleCardActivate();\n }\n }}\n >\n {cardRenderer({\n row: originalRow,\n rowId,\n depth: row.depth,\n canExpandSubRows: row.getCanExpand(),\n isSubRowsExpanded: row.getIsExpanded(),\n toggleSubRowsExpanded: () => row.toggleExpanded(),\n isSelected,\n onSelectedChange: (nextValue) => {\n onRowSelectionChange(\n updateRowSelection(\n rowSelection,\n rowId,\n nextValue,\n row.getCanSelect(),\n row.getCanMultiSelect(),\n ),\n );\n },\n actions: rowActions,\n isEditing,\n startEditing: () => {\n onEditingRowIdChange(rowId);\n },\n cancelEditing: () => {\n onEditingRowIdChange(null);\n },\n })}\n \n {isEditing ||\n !detailPanel ||\n !(detailExpanded === true || Boolean(detailExpanded[row.id]))\n ? null\n : (\n \n {detailPanel.render({\n row: originalRow,\n rowId,\n tableRow: row,\n })}\n \n )}\n {showCardOverlayControls ? (\n \n {enableRowSelection ? (\n \n {\n onRowSelectionChange(\n updateRowSelection(\n rowSelection,\n rowId,\n checked === true,\n row.getCanSelect(),\n row.getCanMultiSelect(),\n ),\n );\n }}\n />\n \n ) : null}\n {row.getCanExpand() ? (\n
    \n row.toggleExpanded()}\n >\n \n \n
    \n ) : null}\n {canExpandDetail ? (\n \n {\n onDetailExpandedChange((current) =>\n toggleDataTableExpandedState(\n current,\n row.id,\n rows.map((item) => item.id),\n ),\n );\n }}\n >\n \n \n \n ) : null}\n
    \n {hasCardActions ? (\n \n {\n onEditingRowIdChange(rowId);\n }}\n onCancelEditing={() => {\n onEditingRowIdChange(null);\n }}\n labels={labels}\n />\n
    \n ) : null}\n
    \n ) : null}\n \n );\n })}\n \n );\n };\n}\n\nfunction getCardGridClassName(cardSizing: DataTableCardSizing) {\n switch (cardSizing) {\n case \"content\":\n return \"flex flex-wrap items-start justify-start\";\n case \"fluid\":\n return \"grid grid-cols-[repeat(auto-fit,minmax(min(18rem,100%),1fr))]\";\n case \"fixed\":\n default:\n return \"grid grid-cols-[repeat(auto-fill,minmax(min(18rem,100%),18rem))] justify-start\";\n }\n}\n\nfunction getCardItemClassName(cardSizing: DataTableCardSizing) {\n switch (cardSizing) {\n case \"content\":\n return \"w-fit\";\n case \"fluid\":\n return \"w-full\";\n case \"fixed\":\n default:\n return undefined;\n }\n}\n\nfunction getCardRendererClassName(cardSizing: DataTableCardSizing) {\n switch (cardSizing) {\n case \"content\":\n return \"w-fit\";\n case \"fluid\":\n return \"w-full flex-1 [&>*]:w-full\";\n case \"fixed\":\n default:\n return \"flex-1\";\n }\n}\n\nfunction updateRowSelection(\n rowSelection: Record,\n rowId: string,\n isSelected: boolean,\n canSelect: boolean,\n canMultiSelect: boolean,\n) {\n if (!canSelect) {\n return rowSelection;\n }\n\n if (isSelected) {\n return canMultiSelect\n ? {\n ...rowSelection,\n [rowId]: true,\n }\n : { [rowId]: true };\n }\n\n if (!rowSelection[rowId]) {\n return rowSelection;\n }\n\n const nextSelection = { ...rowSelection };\n delete nextSelection[rowId];\n return nextSelection;\n}\n","import { IconInbox } from \"../icons\";\nimport type { DataTableUiKit } from \"../ui-kit\";\n\nexport function createDataTableEmptyState(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n } = ui;\n\n return function DataTableEmptyState({\n title = \"No rows found\",\n description = \"Adjust your filters or create a new record to populate this table.\",\n }: {\n title?: string;\n description?: string;\n }) {\n return (\n \n \n \n \n \n {title}\n {description}\n \n \n \n );\n };\n}\n","import * as React from \"react\";\nimport { IconDatabase } from \"../icons\";\nimport type { DataTableLabels } from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\ntype DataTablePaginationProps = {\n pageIndex: number;\n pageCount: number;\n pageCountKnown: boolean;\n pageSize: number;\n totalRowCount?: number;\n rowsPerPageOptions: Array;\n onPageIndexChange: (pageIndex: number) => void;\n onPageSizeChange: (pageSize: number) => void;\n labels: DataTableLabels;\n};\n\nexport function createDataTablePagination(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectTrigger,\n SelectValue,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n function DataTablePagination({\n pageIndex,\n pageCount,\n pageCountKnown,\n pageSize,\n totalRowCount,\n rowsPerPageOptions,\n onPageIndexChange,\n onPageSizeChange,\n labels,\n }: DataTablePaginationProps) {\n const pages = pageCountKnown\n ? getVisiblePages(pageIndex, Math.max(1, pageCount))\n : [];\n const canGoPrevious = pageIndex > 0;\n const canGoNext = pageIndex + 1 < pageCount;\n const lastPageIndex = Math.max(0, pageCount - 1);\n\n return (\n
    \n \n \n {labels.recordsPerPage}\n \n {\n onPageSizeChange(Number(value));\n }}\n >\n \n \n \n \n \n {rowsPerPageOptions.map((option) => (\n \n {option}\n \n ))}\n \n \n \n
    \n\n {totalRowCount !== undefined ? (\n
    \n \n \n {totalRowCount}\n \n {labels.totalRecords(totalRowCount)}\n \n
    \n \n ) : null}\n\n
    \n \n {pageCountKnown\n ? labels.pageStatus(pageIndex, Math.max(1, pageCount))\n : (\n labels.pageStatusUnknown ??\n DATA_TABLE_DEFAULT_LABELS.pageStatusUnknown\n )(pageIndex)}\n
    \n \n \n \n \n \n ) => {\n event.preventDefault();\n if (canGoPrevious) {\n onPageIndexChange(0);\n }\n }}\n text={labels.firstPage}\n />\n \n {labels.firstPage}\n \n \n \n \n \n ) => {\n event.preventDefault();\n if (canGoPrevious) {\n onPageIndexChange(pageIndex - 1);\n }\n }}\n text={labels.previousPage}\n />\n \n {labels.previousPage}\n \n \n {pages.map((item, index) => (\n \n {item === \"ellipsis\" ? (\n \n ) : (\n ) => {\n event.preventDefault();\n onPageIndexChange(item - 1);\n }}\n >\n {item}\n \n )}\n \n ))}\n \n \n \n ) => {\n event.preventDefault();\n if (canGoNext) {\n onPageIndexChange(pageIndex + 1);\n }\n }}\n text={labels.nextPage}\n />\n \n {labels.nextPage}\n \n \n {pageCountKnown ? (\n \n \n \n ,\n ) => {\n event.preventDefault();\n if (canGoNext) {\n onPageIndexChange(lastPageIndex);\n }\n }}\n />\n \n {labels.lastPage}\n \n \n ) : null}\n \n \n \n \n );\n }\n\n function DataTableFooter(props: DataTablePaginationProps) {\n return (\n \n \n \n );\n }\n\n return {\n DataTableFooter,\n DataTablePagination,\n };\n}\n\nfunction getVisiblePages(currentPageIndex: number, pageCount: number) {\n const currentPage = currentPageIndex + 1;\n const pages = new Set([1, pageCount]);\n\n for (\n let page = Math.max(1, currentPage - 2);\n page <= Math.min(pageCount, currentPage + 2);\n page += 1\n ) {\n pages.add(page);\n }\n\n const orderedPages = Array.from(pages).sort((left, right) => left - right);\n const items: Array = [];\n\n for (let index = 0; index < orderedPages.length; index += 1) {\n const page = orderedPages[index];\n const previous = orderedPages[index - 1];\n\n if (previous && page - previous > 1) {\n items.push(\"ellipsis\");\n }\n\n items.push(page);\n }\n\n return items;\n}\n","import * as React from \"react\";\nimport { IconDots, IconEdit, IconX } from \"../icons\";\nimport type {\n DataTableEditableRowsConfig,\n DataTableLabels,\n DataTableRowAction,\n} from \"../types\";\nimport type { RowPinningPosition } from \"@tanstack/react-table\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { canEditRow, canUseRowAction, resolveRowActionLabel } from \"../types\";\n\ntype DataTableRowActionsProps = {\n row: TData;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n onStartEditing: () => void;\n onCancelEditing: () => void;\n labels: DataTableLabels;\n rowPinning?: {\n canPin: boolean;\n position: RowPinningPosition;\n pin: (position: RowPinningPosition) => void;\n };\n};\n\nexport function createDataTableRowActions(ui: DataTableUiKit) {\n const {\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n return function DataTableRowActions({\n row,\n rowActions,\n editableRows,\n isEditing,\n onStartEditing,\n onCancelEditing,\n labels,\n rowPinning,\n }: DataTableRowActionsProps) {\n const actions = rowActions.filter((action) => canUseRowAction(action, row));\n const stopRowClickPropagation = React.useCallback(\n (event: React.SyntheticEvent) => {\n event.stopPropagation();\n },\n [],\n );\n\n if (isEditing) {\n return (\n \n \n \n \n {labels.cancelEdit}\n \n \n {labels.cancelEdit}\n \n );\n }\n\n const allowEdit = canEditRow(editableRows, row);\n const canPin = rowPinning?.canPin ?? false;\n if (!actions.length && !allowEdit && !canPin) {\n return null;\n }\n\n return (\n \n \n \n \n \n \n {labels.rowActions}\n \n \n \n {labels.rowActions}\n \n \n {allowEdit ? (\n \n ) => {\n event.stopPropagation();\n onStartEditing();\n }}\n >\n \n {labels.editRow}\n \n \n ) : null}\n {allowEdit && (actions.length || canPin) ? : null}\n {canPin ? (\n \n {rowPinning?.position ? (\n ) => {\n event.stopPropagation();\n rowPinning.pin(false);\n }}\n >\n {labels.unpinRow}\n \n ) : (\n <>\n ) => {\n event.stopPropagation();\n rowPinning?.pin(\"top\");\n }}\n >\n {labels.pinRowToTop}\n \n ) => {\n event.stopPropagation();\n rowPinning?.pin(\"bottom\");\n }}\n >\n {labels.pinRowToBottom}\n \n \n )}\n \n ) : null}\n {canPin && actions.length ? : null}\n {actions.length ? (\n \n {actions.map((action) => {\n const Icon = action.icon;\n return (\n ) => {\n event.stopPropagation();\n void action.onClick(row);\n }}\n >\n {Icon ? : null}\n {resolveRowActionLabel(action.label, row)}\n \n );\n })}\n \n ) : null}\n \n \n );\n };\n}\n","import * as React from \"react\";\nimport {\n IconAdjustmentsHorizontal,\n IconLayoutGrid,\n IconList,\n IconSearch,\n IconX,\n} from \"../icons\";\nimport type {\n DataTableColumnFilterType,\n DataTableColumnFixed,\n DataTableColumnVisibilityOption,\n DataTableDensity,\n DataTableLabels,\n DataTableSelectionAction,\n DataTableToolbarAction,\n DataTableToolbarVisibility,\n DataTableViewMode,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\nexport type DataTableToolbarColumnFilter = {\n id: string;\n label: string;\n type: DataTableColumnFilterType;\n value: unknown;\n placeholder?: string;\n options: Array<{ label: string; value: string }>;\n trueLabel?: string;\n falseLabel?: string;\n min?: number | string;\n max?: number | string;\n step?: number;\n};\n\ntype DataTableToolbarProps = {\n title?: string;\n titleId?: string;\n description?: string;\n descriptionId?: string;\n toolbarQueryValue: string;\n toolbarQueryPlaceholder: string;\n onToolbarQueryValueChange: (value: string) => void;\n customToolbar?: React.ReactNode;\n compactToolbar?: React.ReactNode;\n viewMode: DataTableViewMode;\n onViewModeChange?: (viewMode: DataTableViewMode) => void;\n enableViewToggle: boolean;\n toolbarActions: Array>;\n selectionActions: Array>;\n selectedRows: Array;\n selectedRowIds: Array;\n showHiddenRows: boolean;\n hiddenRowsLabel?: string;\n onShowHiddenRowsChange?: (showHiddenRows: boolean) => void;\n allRows: Array;\n columnVisibilityOptions: Array;\n onColumnVisibilityChange?: (columnId: string, visible: boolean) => void;\n enableColumnPinning: boolean;\n onColumnPinningChange: (columnId: string, side: DataTableColumnFixed | false) => void;\n columnFilters: Array;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n onClearColumnFilters: () => void;\n density: DataTableDensity;\n onDensityChange: (density: DataTableDensity) => void;\n enableDensityToggle: boolean;\n labels: DataTableLabels;\n toolbarVisibility?: DataTableToolbarVisibility;\n openFileDialog?: () => void;\n};\n\nexport function createDataTableToolbar(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Button,\n ButtonGroup,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n return function DataTableToolbar({\n title,\n titleId,\n description,\n descriptionId,\n toolbarQueryValue,\n toolbarQueryPlaceholder,\n onToolbarQueryValueChange,\n customToolbar,\n compactToolbar,\n viewMode,\n onViewModeChange,\n enableViewToggle,\n toolbarActions,\n selectionActions,\n selectedRows,\n selectedRowIds,\n showHiddenRows,\n hiddenRowsLabel,\n onShowHiddenRowsChange,\n allRows,\n columnVisibilityOptions,\n onColumnVisibilityChange,\n enableColumnPinning,\n onColumnPinningChange,\n columnFilters,\n onColumnFilterChange,\n onClearColumnFilters,\n density,\n onDensityChange,\n enableDensityToggle,\n labels,\n toolbarVisibility,\n openFileDialog,\n }: DataTableToolbarProps) {\n const compactSearchInputRef = React.useRef(null);\n const [isCompactSearchVisible, setIsCompactSearchVisible] =\n React.useState(false);\n const compactToolbarIconButtonClassName =\n uiClassNames.toolbarCompactIconButton ?? \"\";\n const primaryActions = toolbarActions.filter(\n (action) => (action.placement ?? \"primary\") === \"primary\",\n );\n const trailingActions = toolbarActions.filter(\n (action) => action.placement === \"trailing\",\n );\n const showTitle = toolbarVisibility?.title ?? true;\n const showSearch = toolbarVisibility?.search ?? true;\n const showActions = toolbarVisibility?.actions ?? true;\n const showTrailingActions = toolbarVisibility?.trailingActions ?? true;\n const showOptions = toolbarVisibility?.options ?? true;\n const showViewToggle = toolbarVisibility?.viewToggle ?? true;\n const showCustomToolbar = toolbarVisibility?.customToolbar ?? true;\n const hasVisibleTitle = showTitle && Boolean(title || description);\n const hasVisibleSearch = showSearch;\n const hasVisiblePrimaryActions = showActions && primaryActions.length > 0;\n const hasVisibleSelectionActions =\n selectedRowIds.length > 0 && selectionActions.length > 0;\n const hasVisibleOptions =\n showOptions &&\n (columnVisibilityOptions.some((column) => column.canHide) ||\n Boolean(onShowHiddenRowsChange && hiddenRowsLabel) ||\n enableColumnPinning ||\n enableDensityToggle);\n const hasVisibleViewToggle =\n showViewToggle && enableViewToggle && Boolean(onViewModeChange);\n const hasVisibleTrailingActions =\n showTrailingActions && trailingActions.length > 0;\n const hasVisibleCustomToolbar = showCustomToolbar && Boolean(customToolbar);\n const hasVisibleCompactToolbar =\n showCustomToolbar && Boolean(compactToolbar ?? customToolbar);\n const selectedRowCountLabel = labels.selectedRows(selectedRowIds.length);\n\n React.useEffect(() => {\n if (!isCompactSearchVisible) {\n return;\n }\n\n compactSearchInputRef.current?.focus();\n }, [isCompactSearchVisible]);\n\n if (\n !hasVisibleTitle &&\n !hasVisibleSearch &&\n !hasVisiblePrimaryActions &&\n !hasVisibleSelectionActions &&\n !hasVisibleOptions &&\n !hasVisibleViewToggle &&\n !hasVisibleTrailingActions &&\n !hasVisibleCustomToolbar &&\n !hasVisibleCompactToolbar\n ) {\n return null;\n }\n\n return (\n
    \n {showTitle && (title || description) ? (\n
    \n {title ? (\n \n {title}\n \n ) : null}\n {description ? (\n \n {description}\n

    \n ) : null}\n
    \n ) : null}\n\n
    \n \n {showSearch ? (\n <>\n
    \n \n ) => {\n onToolbarQueryValueChange(event.target.value);\n }}\n placeholder={toolbarQueryPlaceholder}\n />\n \n \n \n {toolbarQueryValue ? (\n \n {\n onToolbarQueryValueChange(\"\");\n }}\n aria-label={labels.clearSearch}\n title={labels.clearSearch}\n >\n \n \n \n ) : null}\n \n
    \n \n \n {\n setIsCompactSearchVisible((current) => !current);\n }}\n >\n \n {labels.searchTable}\n \n \n {labels.searchTable}\n \n \n ) : null}\n\n {showActions ? (\n
    \n {primaryActions.map((action) => {\n const collapsesToIcon =\n !action.iconOnly && Boolean(action.icon);\n const button = (\n {\n void action.onClick({\n rows: allRows,\n openFileDialog,\n });\n }}\n disabled={action.disabled}\n aria-label={action.label}\n title={action.iconOnly ? undefined : action.label}\n >\n {action.icon ? : null}\n {action.iconOnly ? (\n {action.label}\n ) : collapsesToIcon ? (\n \n {action.label}\n \n ) : (\n {action.label}\n )}\n \n );\n\n return action.iconOnly ? (\n \n {button}\n {action.label}\n \n ) : (\n button\n );\n })}\n
    \n ) : null}\n\n {hasVisibleCompactToolbar ? (\n \n {compactToolbar ?? customToolbar}\n
    \n ) : null}\n\n
    \n\n \n {selectedRowIds.length ? (\n \n {selectedRowCountLabel}\n
    \n ) : null}\n {selectedRowIds.length\n ? selectionActions.map((action) => {\n const Icon = action.icon;\n const context = {\n rows: selectedRows,\n rowIds: selectedRowIds,\n };\n const disabled =\n typeof action.disabled === \"function\"\n ? action.disabled(selectedRows, context)\n : action.disabled;\n\n return (\n \n \n {\n void action.onClick(context);\n }}\n aria-label={action.label}\n >\n {Icon ? : null}\n {action.label}\n \n \n {action.label}\n \n );\n })\n : null}\n\n {hasVisibleOptions ? (\n \n \n \n \n {labels.tableOptions}\n \n \n \n {labels.tableOptions}\n \n {onShowHiddenRowsChange && hiddenRowsLabel ? (\n {\n onShowHiddenRowsChange(checked === true);\n }}\n >\n {labels.showHiddenRows(hiddenRowsLabel)}\n \n ) : null}\n \n {enableDensityToggle ? (\n <>\n \n {labels.density}\n \n {(\n [\n [\"compact\", labels.compactDensity],\n [\"comfortable\", labels.comfortableDensity],\n [\"spacious\", labels.spaciousDensity],\n ] as const\n ).map(([nextDensity, label]) => (\n {\n onDensityChange(nextDensity);\n }}\n >\n {label}\n \n ))}\n \n \n ) : null}\n {columnVisibilityOptions.some((column) => column.canHide) ? (\n <>\n \n {labels.columns}\n \n {columnVisibilityOptions\n .filter((column) => column.canHide)\n .map((column) => (\n {\n onColumnVisibilityChange?.(\n column.id,\n checked === true,\n );\n }}\n >\n {column.label}\n \n ))}\n \n \n ) : null}\n {enableColumnPinning ? (\n <>\n \n \n {labels.pinLeft} / {labels.pinRight}\n \n \n {columnVisibilityOptions.map((column) => (\n {\n event.preventDefault();\n }}\n >\n \n {column.label}\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, \"left\");\n }}\n >\n L\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, \"right\");\n }}\n >\n R\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, false);\n }}\n >\n -\n \n \n ))}\n \n \n ) : null}\n \n \n ) : null}\n\n {showViewToggle && enableViewToggle && onViewModeChange ? (\n \n \n \n {\n onViewModeChange(\"table\");\n }}\n >\n \n \n {labels.switchToTableView ??\n DATA_TABLE_DEFAULT_LABELS.switchToTableView}\n \n \n \n \n {labels.tableView ??\n DATA_TABLE_DEFAULT_LABELS.tableView}\n \n \n \n \n {\n onViewModeChange(\"card\");\n }}\n >\n \n \n {labels.switchToCardView ??\n DATA_TABLE_DEFAULT_LABELS.switchToCardView}\n \n \n \n \n {labels.cardView ??\n DATA_TABLE_DEFAULT_LABELS.cardView}\n \n \n \n ) : null}\n\n {showTrailingActions\n ? trailingActions.map((action) => {\n const collapsesToIcon =\n !action.iconOnly && Boolean(action.icon);\n const button = (\n {\n void action.onClick({\n rows: allRows,\n openFileDialog,\n });\n }}\n disabled={action.disabled}\n aria-label={action.label}\n title={action.iconOnly ? undefined : action.label}\n className={`size-7 shrink-0 ${action.iconOnly ? \"\" : `${collapsesToIcon ? \"px-0 @min-[768px]/data-table:px-2.5\" : \"\"} @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit`} ${action.iconOnly || collapsesToIcon ? compactToolbarIconButtonClassName : \"\"} ${uiClassNames.toolbarInputButton ?? \"\"}`}\n >\n {action.icon ? (\n \n ) : null}\n {action.iconOnly ? (\n {action.label}\n ) : collapsesToIcon ? (\n \n {action.label}\n \n ) : (\n {action.label}\n )}\n \n );\n\n return action.iconOnly ? (\n \n {button}\n {action.label}\n \n ) : (\n button\n );\n })\n : null}\n
    \n \n\n {showSearch && isCompactSearchVisible ? (\n \n \n ) => {\n onToolbarQueryValueChange(event.target.value);\n }}\n placeholder={toolbarQueryPlaceholder}\n />\n \n \n \n {toolbarQueryValue ? (\n \n {\n onToolbarQueryValueChange(\"\");\n }}\n aria-label={labels.clearSearch}\n title={labels.clearSearch}\n >\n \n \n \n ) : null}\n \n \n ) : null}\n\n {columnFilters.length ? (\n \n {columnFilters.map((filter) => (\n \n ))}\n {columnFilters.some((filter) =>\n hasColumnFilterValue(filter.value),\n ) ? (\n \n {labels.clearFilters}\n \n ) : null}\n \n ) : null}\n\n \n\n {showCustomToolbar && customToolbar ? (\n \n {customToolbar}\n \n ) : null}\n \n );\n };\n\n function ToolbarColumnFilterControl({\n filter,\n labels,\n onColumnFilterChange,\n }: {\n filter: DataTableToolbarColumnFilter;\n labels: DataTableLabels;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n }) {\n if (filter.type === \"text\") {\n return (\n \n ) => {\n onColumnFilterChange(filter.id, event.target.value);\n }}\n placeholder={filter.placeholder ?? filter.label}\n aria-label={`${labels.filters}: ${filter.label}`}\n />\n \n \n \n \n );\n }\n\n if (filter.type === \"numberRange\" || filter.type === \"dateRange\") {\n const range = normalizeToolbarRangeValue(filter.value);\n const inputType = filter.type === \"numberRange\" ? \"number\" : \"date\";\n const fromLabel =\n labels.filterFrom ?? DATA_TABLE_DEFAULT_LABELS.filterFrom;\n const toLabel = labels.filterTo ?? DATA_TABLE_DEFAULT_LABELS.filterTo;\n\n return (\n \n \n ) => {\n onColumnFilterChange(filter.id, {\n ...range,\n from: parseRangeInputValue(event.target.value, inputType),\n });\n }}\n aria-label={`${filter.label}: ${fromLabel}`}\n />\n {fromLabel}\n \n \n ) => {\n onColumnFilterChange(filter.id, {\n ...range,\n to: parseRangeInputValue(event.target.value, inputType),\n });\n }}\n aria-label={`${filter.label}: ${toLabel}`}\n />\n {toLabel}\n \n \n );\n }\n\n const isBoolean = filter.type === \"boolean\";\n const booleanOptions = [\n {\n label:\n filter.trueLabel ??\n labels.filterTrue ??\n DATA_TABLE_DEFAULT_LABELS.filterTrue,\n value: \"true\",\n },\n {\n label:\n filter.falseLabel ??\n labels.filterFalse ??\n DATA_TABLE_DEFAULT_LABELS.filterFalse,\n value: \"false\",\n },\n ];\n const options = isBoolean ? booleanOptions : filter.options;\n const selectedValue =\n typeof filter.value === \"string\" || typeof filter.value === \"boolean\"\n ? String(filter.value)\n : \"\";\n const selectedValues = Array.isArray(filter.value)\n ? filter.value.map(String)\n : selectedValue\n ? [selectedValue]\n : [];\n const selectedLabel =\n selectedValues.length === 0\n ? filter.label\n : `${filter.label}: ${\n selectedValues.length === 1\n ? (options.find(\n (option) => option.value === String(selectedValues[0]),\n )?.label ?? selectedValues[0])\n : selectedValues.length\n }`;\n\n return (\n \n \n \n \n \n {filter.label}\n \n {filter.type === \"select\" || isBoolean ? (\n {\n onColumnFilterChange(filter.id, \"\");\n }}\n >\n {labels.allFilterOptions ??\n DATA_TABLE_DEFAULT_LABELS.allFilterOptions}\n \n ) : null}\n {options.map((option) => (\n {\n if (filter.type === \"select\" || isBoolean) {\n onColumnFilterChange(\n filter.id,\n checked === true ? option.value : \"\",\n );\n return;\n }\n\n const nextValues = new Set(selectedValues);\n if (checked === true) {\n nextValues.add(option.value);\n } else {\n nextValues.delete(option.value);\n }\n onColumnFilterChange(filter.id, Array.from(nextValues));\n }}\n >\n {option.label}\n \n ))}\n \n \n \n );\n }\n}\n\nfunction hasColumnFilterValue(value: unknown) {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n\n if (value && typeof value === \"object\") {\n if (\"from\" in value || \"to\" in value) {\n return Object.values(value).some(hasColumnFilterValue);\n }\n\n return true;\n }\n\n return value !== undefined && value !== null && value !== \"\";\n}\n\nfunction normalizeToolbarRangeValue(value: unknown): {\n from?: number | string;\n to?: number | string;\n} {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return {};\n }\n\n const range = value as { from?: unknown; to?: unknown };\n return {\n ...(typeof range.from === \"number\" || typeof range.from === \"string\"\n ? { from: range.from }\n : {}),\n ...(typeof range.to === \"number\" || typeof range.to === \"string\"\n ? { to: range.to }\n : {}),\n };\n}\n\nfunction parseRangeInputValue(value: string, inputType: \"number\" | \"date\") {\n if (!value) {\n return undefined;\n }\n\n return inputType === \"number\" ? Number(value) : value;\n}\n","import * as React from \"react\";\nimport { DataTableTablePanel } from \"./data-table-table-panel\";\nimport type { DataTableTablePanelProps } from \"./data-table-table-panel\";\n\nconst LazyDataTableVirtualTablePanel = React.lazy(async () => {\n const module = await import(\"./data-table-virtual-table-panel\");\n return { default: module.DataTableVirtualTablePanel };\n}) as unknown as typeof DataTableTablePanel;\n\nexport function DataTableTablePanelRouter(\n props: DataTableTablePanelProps,\n) {\n const config =\n typeof props.virtualization === \"object\"\n ? props.virtualization\n : undefined;\n const enabled =\n props.virtualization === true || config?.enabled === true;\n\n if (!enabled) {\n return ;\n }\n\n return (\n \n }\n >\n \n \n );\n}\n","import type {\n DataTableSavedView,\n DataTableSavedViewSlice,\n DataTableSavedViewsChangeOperation,\n DataTableSavedViewsConfig,\n DataTableSavedViewsPayload,\n DataTableState,\n} from \"../types\";\n\nconst STORAGE_PREFIX = \"data-table-pro:saved-views:\";\nconst DEFAULT_VERSION = 1;\nconst DEFAULT_SLICES: Array = [\n \"sorting\",\n \"columnVisibility\",\n \"columnFilters\",\n \"columnOrder\",\n \"columnPinning\",\n \"rowPinning\",\n \"columnSizing\",\n \"density\",\n \"viewMode\",\n \"showHiddenRows\",\n \"globalFilter\",\n];\nlet fallbackId = 0;\n\nexport function readDataTableSavedViews(\n config: DataTableSavedViewsConfig | undefined,\n): Array {\n const storage = resolveStorage(config);\n if (!config || !storage) {\n return [];\n }\n\n let serialized: string | null;\n try {\n serialized = storage.getItem(getStorageKey(config.key));\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return [];\n }\n if (!serialized) {\n return [];\n }\n\n let parsed: unknown;\n try {\n parsed = (config.deserialize ?? JSON.parse)(serialized);\n } catch (error) {\n config.onError?.({ error, operation: \"deserialize\" });\n return [];\n }\n\n if (!isRecord(parsed) || !(\"version\" in parsed) || !(\"views\" in parsed)) {\n return [];\n }\n\n const targetVersion = config.version ?? DEFAULT_VERSION;\n let candidate: unknown = parsed.views;\n if (parsed.version !== targetVersion) {\n if (!config.migrate) {\n return [];\n }\n try {\n candidate = config.migrate(\n { version: parsed.version, views: parsed.views },\n targetVersion,\n );\n } catch (error) {\n config.onError?.({ error, operation: \"migrate\" });\n return [];\n }\n }\n\n if (!Array.isArray(candidate)) {\n return [];\n }\n\n return candidate\n .map((view) => validateSavedView(view, config.slices))\n .filter((view): view is DataTableSavedView => Boolean(view));\n}\n\nexport function createDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n name: string,\n state: DataTableState,\n) {\n const normalizedName = name.trim();\n if (!config || !normalizedName) {\n return undefined;\n }\n\n const now = new Date().toISOString();\n const view: DataTableSavedView = {\n id: createSavedViewId(),\n name: normalizedName,\n createdAt: now,\n updatedAt: now,\n state: selectSavedViewSlices(state, config.slices),\n };\n const views = [...readDataTableSavedViews(config), view];\n return writeViews(config, views, \"create\") ? cloneSavedView(view) : undefined;\n}\n\nexport function renameDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n id: string,\n name: string,\n) {\n const normalizedName = name.trim();\n if (!config || !normalizedName) {\n return undefined;\n }\n\n let renamed: DataTableSavedView | undefined;\n const views = readDataTableSavedViews(config).map((view) => {\n if (view.id !== id) {\n return view;\n }\n renamed = {\n ...view,\n name: normalizedName,\n updatedAt: new Date().toISOString(),\n };\n return renamed;\n });\n if (!renamed) {\n return undefined;\n }\n\n return writeViews(config, views, \"rename\")\n ? cloneSavedView(renamed)\n : undefined;\n}\n\nexport function deleteDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n id: string,\n) {\n if (!config) {\n return false;\n }\n\n const current = readDataTableSavedViews(config);\n const views = current.filter((view) => view.id !== id);\n return views.length !== current.length && writeViews(config, views, \"delete\");\n}\n\nexport function clearDataTableSavedViews(\n config: DataTableSavedViewsConfig | undefined,\n) {\n const storage = resolveStorage(config);\n if (!config || !storage) {\n return false;\n }\n\n try {\n storage.removeItem(getStorageKey(config.key));\n } catch (error) {\n config.onError?.({ error, operation: \"remove\" });\n return false;\n }\n config.onChange?.([], \"clear\");\n return true;\n}\n\nfunction writeViews(\n config: DataTableSavedViewsConfig,\n views: Array,\n operation: DataTableSavedViewsChangeOperation,\n) {\n const storage = resolveStorage(config);\n if (!storage) {\n return false;\n }\n\n let serialized: string;\n try {\n const payload: DataTableSavedViewsPayload = {\n version: config.version ?? DEFAULT_VERSION,\n views,\n };\n serialized = (config.serialize ?? JSON.stringify)(payload);\n } catch (error) {\n config.onError?.({ error, operation: \"serialize\" });\n return false;\n }\n\n try {\n storage.setItem(getStorageKey(config.key), serialized);\n } catch (error) {\n config.onError?.({ error, operation: \"write\" });\n return false;\n }\n const snapshots = views.map(cloneSavedView);\n config.onChange?.(snapshots, operation);\n return true;\n}\n\nfunction selectSavedViewSlices(\n state: DataTableState,\n slices: Array | undefined,\n) {\n const selected = new Set(slices ?? DEFAULT_SLICES);\n const snapshot: Partial = {};\n for (const slice of Object.keys(state) as Array) {\n if (selected.has(slice)) {\n Object.assign(snapshot, {\n [slice]: cloneStateSlice(slice, state[slice]),\n });\n }\n }\n return snapshot;\n}\n\nfunction validateSavedView(\n value: unknown,\n slices: Array | undefined,\n): DataTableSavedView | undefined {\n if (\n !isRecord(value) ||\n typeof value.id !== \"string\" ||\n !value.id ||\n typeof value.name !== \"string\" ||\n !value.name.trim() ||\n typeof value.createdAt !== \"string\" ||\n typeof value.updatedAt !== \"string\"\n ) {\n return undefined;\n }\n\n return {\n id: value.id,\n name: value.name.trim(),\n createdAt: value.createdAt,\n updatedAt: value.updatedAt,\n state: validateState(value.state, slices),\n };\n}\n\nfunction validateState(\n value: unknown,\n slices: Array | undefined,\n) {\n if (!isRecord(value)) {\n return {};\n }\n\n const selected = new Set(slices ?? DEFAULT_SLICES);\n const state: Partial = {};\n const sorting = validateSorting(value.sorting);\n if (selected.has(\"sorting\") && sorting) state.sorting = sorting;\n const pagination = validatePagination(value.pagination);\n if (selected.has(\"pagination\") && pagination) state.pagination = pagination;\n const rowSelection = validateBooleanRecord(value.rowSelection);\n if (selected.has(\"rowSelection\") && rowSelection) {\n state.rowSelection = rowSelection;\n }\n const visibility = validateBooleanRecord(value.columnVisibility);\n if (selected.has(\"columnVisibility\") && visibility) {\n state.columnVisibility = visibility;\n }\n const filters = validateFilters(value.columnFilters);\n if (selected.has(\"columnFilters\") && filters) state.columnFilters = filters;\n const expanded =\n value.expanded === true\n ? true\n : validateBooleanRecord(value.expanded);\n if (selected.has(\"expanded\") && expanded !== undefined) {\n state.expanded = expanded;\n }\n const order = validateStringArray(value.columnOrder);\n if (selected.has(\"columnOrder\") && order) state.columnOrder = order;\n const pinning = validatePinning(value.columnPinning);\n if (selected.has(\"columnPinning\") && pinning) {\n state.columnPinning = pinning;\n }\n const rowPinning = validateRowPinning(value.rowPinning);\n if (selected.has(\"rowPinning\") && rowPinning) {\n state.rowPinning = rowPinning;\n }\n const sizing = validateSizingRecord(value.columnSizing);\n if (selected.has(\"columnSizing\") && sizing) state.columnSizing = sizing;\n if (\n selected.has(\"density\") &&\n (value.density === \"compact\" ||\n value.density === \"comfortable\" ||\n value.density === \"spacious\")\n ) {\n state.density = value.density;\n }\n if (\n selected.has(\"viewMode\") &&\n (value.viewMode === \"table\" || value.viewMode === \"card\")\n ) {\n state.viewMode = value.viewMode;\n }\n if (selected.has(\"showHiddenRows\") && typeof value.showHiddenRows === \"boolean\") {\n state.showHiddenRows = value.showHiddenRows;\n }\n if (selected.has(\"globalFilter\") && typeof value.globalFilter === \"string\") {\n state.globalFilter = value.globalFilter;\n }\n return state;\n}\n\nfunction cloneSavedView(view: DataTableSavedView): DataTableSavedView {\n return {\n ...view,\n state: validateState(view.state, Object.keys(view.state) as Array),\n };\n}\n\nfunction cloneStateSlice(\n slice: DataTableSavedViewSlice,\n value: unknown,\n) {\n if (Array.isArray(value)) {\n return (value as Array).map((item) =>\n isRecord(item) ? { ...item } : item,\n );\n }\n if (isRecord(value)) {\n if (slice === \"columnPinning\" || slice === \"rowPinning\") {\n return {\n ...(slice === \"columnPinning\"\n ? {\n left: Array.isArray(value.left)\n ? [...(value.left as Array)]\n : undefined,\n right: Array.isArray(value.right)\n ? [...(value.right as Array)]\n : undefined,\n }\n : {\n top: Array.isArray(value.top)\n ? [...(value.top as Array)]\n : undefined,\n bottom: Array.isArray(value.bottom)\n ? [...(value.bottom as Array)]\n : undefined,\n }),\n };\n }\n return { ...value };\n }\n return value;\n}\n\nfunction validateSorting(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value\n .filter(\n (item): item is { id: string; desc?: boolean } =>\n isRecord(item) && typeof item.id === \"string\",\n )\n .map((item) => ({ id: item.id, desc: Boolean(item.desc) }));\n}\n\nfunction validatePagination(value: unknown) {\n if (\n !isRecord(value) ||\n !Number.isInteger(value.pageIndex) ||\n (value.pageIndex as number) < 0 ||\n !Number.isInteger(value.pageSize) ||\n (value.pageSize as number) < 1\n ) {\n return undefined;\n }\n return {\n pageIndex: value.pageIndex as number,\n pageSize: value.pageSize as number,\n };\n}\n\nfunction validateFilters(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value\n .filter(\n (item): item is { id: string; value: unknown } =>\n isRecord(item) &&\n typeof item.id === \"string\" &&\n Object.prototype.hasOwnProperty.call(item, \"value\"),\n )\n .map((item) => ({ id: item.id, value: item.value }));\n}\n\nfunction validatePinning(value: unknown) {\n if (!isRecord(value)) return undefined;\n return {\n left: validateStringArray(value.left) ?? [],\n right: validateStringArray(value.right) ?? [],\n };\n}\n\nfunction validateRowPinning(value: unknown) {\n if (!isRecord(value)) return undefined;\n return {\n top: validateStringArray(value.top) ?? [],\n bottom: validateStringArray(value.bottom) ?? [],\n };\n}\n\nfunction validateBooleanRecord(value: unknown) {\n if (!isRecord(value)) return undefined;\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, boolean] => typeof entry[1] === \"boolean\",\n ),\n );\n}\n\nfunction validateSizingRecord(value: unknown) {\n if (!isRecord(value)) return undefined;\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, number] =>\n typeof entry[1] === \"number\" &&\n Number.isFinite(entry[1]) &&\n entry[1] >= 0,\n ),\n );\n}\n\nfunction validateStringArray(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value.filter((item): item is string => typeof item === \"string\");\n}\n\nfunction resolveStorage(config: DataTableSavedViewsConfig | undefined) {\n if (!config) {\n return undefined;\n }\n if (config.storage) {\n return config.storage;\n }\n if (typeof window === \"undefined\") {\n return undefined;\n }\n try {\n return window.localStorage;\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return undefined;\n }\n}\n\nfunction createSavedViewId() {\n if (typeof globalThis.crypto?.randomUUID === \"function\") {\n return globalThis.crypto.randomUUID();\n }\n fallbackId += 1;\n return `view-${Date.now().toString(36)}-${fallbackId.toString(36)}`;\n}\n\nfunction getStorageKey(key: string) {\n return `${STORAGE_PREFIX}${key}`;\n}\n\nfunction isRecord(value: unknown): value is Record {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n","import * as React from \"react\";\nimport { IconDownload } from \"../icons\";\nimport type {\n ColumnFiltersState,\n ColumnPinningState,\n OnChangeFn,\n Table as TanStackTable,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableColumnFixed,\n DataTableLabels,\n DataTableProps,\n} from \"../types\";\nimport {\n exportDataTableCsv,\n getAccessorKey,\n getColumnId,\n getDataTableLeafColumns,\n hasFilterValue,\n normalizeColumnFilterOptions,\n startCase,\n} from \"./data-table-utils\";\n\nexport function useDataTableToolbarFeatures({\n columns,\n currentColumnFilters,\n currentColumnPinning,\n effectiveColumnVisibility,\n enableColumnFilters,\n handleColumnFiltersChange,\n handleColumnPinningChange,\n labels,\n table,\n toolbarActions,\n visibleData,\n csvExport,\n}: {\n columns: DataTableProps[\"columns\"];\n currentColumnFilters: ColumnFiltersState;\n currentColumnPinning: ColumnPinningState;\n effectiveColumnVisibility: VisibilityState;\n enableColumnFilters: boolean | undefined;\n handleColumnFiltersChange: OnChangeFn;\n handleColumnPinningChange: OnChangeFn;\n labels: DataTableLabels;\n table: TanStackTable;\n toolbarActions: DataTableProps[\"toolbarActions\"];\n visibleData: Array;\n csvExport: DataTableProps[\"csvExport\"];\n}) {\n const columnVisibilityOptions = React.useMemo(() => {\n return getDataTableLeafColumns(columns).map(({ column, index }) => {\n const id = getColumnId(column, index);\n const header = column.header;\n const accessorKey = getAccessorKey(column);\n const label =\n typeof header === \"string\"\n ? header\n : accessorKey\n ? startCase(accessorKey)\n : startCase(id);\n\n const pinned: false | DataTableColumnFixed =\n currentColumnPinning.left?.includes(id) === true\n ? \"left\"\n : currentColumnPinning.right?.includes(id) === true\n ? \"right\"\n : false;\n\n return {\n id,\n label,\n visible: effectiveColumnVisibility[id] !== false,\n canHide: column.enableHiding !== false,\n pinned,\n };\n });\n }, [columns, currentColumnPinning, effectiveColumnVisibility]);\n\n const toolbarColumnFilters = React.useMemo(() => {\n if (enableColumnFilters === false) {\n return [];\n }\n\n return getDataTableLeafColumns(columns).flatMap(({ column, index }) => {\n const filter = column.meta?.filter;\n if (!filter) {\n return [];\n }\n\n const id = getColumnId(column, index);\n const header = column.header;\n const accessorKey = getAccessorKey(column);\n const label =\n filter.label ??\n (typeof header === \"string\"\n ? header\n : accessorKey\n ? startCase(accessorKey)\n : startCase(id));\n const state = currentColumnFilters.find((item) => item.id === id);\n const rawOptions =\n typeof filter.options === \"function\"\n ? filter.options({ rows: visibleData })\n : (filter.options ?? []);\n\n return [\n {\n id,\n label,\n type: filter.type,\n value: state?.value,\n placeholder: filter.placeholder,\n options: normalizeColumnFilterOptions(rawOptions),\n trueLabel: filter.trueLabel,\n falseLabel: filter.falseLabel,\n min: filter.min,\n max: filter.max,\n step: filter.step,\n },\n ];\n });\n }, [columns, currentColumnFilters, enableColumnFilters, visibleData]);\n\n const handleToolbarColumnFilterChange = React.useCallback(\n (columnId: string, value: unknown) => {\n handleColumnFiltersChange((current) => {\n const next = current.filter((filter) => filter.id !== columnId);\n if (hasFilterValue(value)) {\n next.push({ id: columnId, value });\n }\n return next;\n });\n },\n [handleColumnFiltersChange],\n );\n\n const handleClearColumnFilters = React.useCallback(() => {\n handleColumnFiltersChange([]);\n }, [handleColumnFiltersChange]);\n\n const handleToolbarColumnPinningChange = React.useCallback(\n (columnId: string, side: DataTableColumnFixed | false) => {\n handleColumnPinningChange((current) => {\n const left = (current.left ?? []).filter((id) => id !== columnId);\n const right = (current.right ?? []).filter((id) => id !== columnId);\n\n if (side === \"left\") {\n left.push(columnId);\n }\n if (side === \"right\") {\n right.push(columnId);\n }\n\n return { left, right };\n });\n },\n [handleColumnPinningChange],\n );\n\n const handleCsvExport = React.useCallback(() => {\n if (!csvExport) {\n return;\n }\n\n return exportDataTableCsv({\n csvExport,\n table,\n labels,\n });\n }, [csvExport, labels, table]);\n\n const effectiveToolbarActions = React.useMemo(() => {\n if (!csvExport) {\n return toolbarActions ?? [];\n }\n\n return [\n ...(toolbarActions ?? []),\n {\n key: \"__csv_export__\",\n label: labels.exportCsv,\n icon: IconDownload,\n placement: \"trailing\" as const,\n onClick: handleCsvExport,\n },\n ];\n }, [csvExport, handleCsvExport, labels.exportCsv, toolbarActions]);\n\n return {\n columnVisibilityOptions,\n effectiveToolbarActions,\n handleClearColumnFilters,\n handleToolbarColumnFilterChange,\n handleToolbarColumnPinningChange,\n toolbarColumnFilters,\n };\n}\n","import * as React from \"react\";\nimport { flushSync } from \"react-dom\";\nimport type {\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableActionErrorContext,\n DataTableApi,\n DataTableProps,\n DataTableState,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { createDataTableCardView } from \"./create-data-table-card-view\";\nimport { createDataTableEmptyState } from \"./create-data-table-empty-state\";\nimport { createDataTablePagination } from \"./create-data-table-pagination\";\nimport { createDataTableRowActions } from \"./create-data-table-row-actions\";\nimport { createDataTableToolbar } from \"./create-data-table-toolbar\";\nimport { DataTableCardPanel as DefaultDataTableCardPanel } from \"./data-table-card-panel\";\nimport { DataTableFooterSection } from \"./data-table-footer-section\";\nimport { DataTableTablePanelRouter as DefaultDataTableTablePanel } from \"./data-table-table-panel-router\";\nimport { DataTableToolbarSection } from \"./data-table-toolbar-section\";\nimport {\n clearDataTableSavedViews,\n createDataTableSavedView,\n deleteDataTableSavedView,\n readDataTableSavedViews,\n renameDataTableSavedView,\n} from \"./data-table-saved-views\";\nimport { resolveDataTableLabels } from \"./data-table-labels\";\nimport { useDataTableColumns } from \"./use-data-table-columns\";\nimport { useControllableState } from \"./use-controllable-state\";\nimport { useDataTableInstance } from \"./use-data-table-instance\";\nimport { useDataTableScrollViewport } from \"./use-data-table-scroll-viewport\";\nimport {\n exportDataTableCsv,\n getColumnId,\n getDataTableColumnGroupPaths,\n getDataTableLeafColumns,\n getInitialColumnPinning,\n validateDataTableColumnIds,\n} from \"./data-table-utils\";\nimport { useDataTableState } from \"./use-data-table-state\";\nimport { clearDataTableColumnPrefs } from \"./use-data-table-column-prefs\";\nimport { useDataTableToolbarFeatures } from \"./use-data-table-toolbar-features\";\nimport { useColumnLayout } from \"./use-column-layout\";\nimport { useRowEditing } from \"./use-row-editing\";\n\ntype CreateDataTableOptions = {\n CardPanel?: typeof DefaultDataTableCardPanel;\n TablePanel?: typeof DefaultDataTableTablePanel;\n};\n\nexport function createDataTable(ui: DataTableUiKit) {\n return createDataTableWithPanels(ui);\n}\n\nexport function createDataTableWithPanels(\n ui: DataTableUiKit,\n options: CreateDataTableOptions = {},\n) {\n const DataTableCardPanel =\n options.CardPanel ?? DefaultDataTableCardPanel;\n const DataTableTablePanel =\n options.TablePanel ?? DefaultDataTableTablePanel;\n const uiClassNames = ui.classNames ?? {};\n const {\n rootClassName,\n Button,\n Checkbox,\n Input,\n ScrollArea,\n ScrollBar,\n Skeleton,\n Table,\n TableBody,\n TableCell,\n TableFooter = \"tfoot\",\n TableHead,\n TableHeader,\n TableRow,\n Tooltip,\n TooltipContent,\n TooltipProvider = React.Fragment,\n TooltipTrigger,\n } = ui;\n const DataTableEmptyState = createDataTableEmptyState(ui);\n const DataTableRowActions = createDataTableRowActions(ui);\n const { DataTableFooter } = createDataTablePagination(ui);\n const DataTableToolbar = createDataTableToolbar(ui);\n const DataTableCardView = createDataTableCardView(ui, DataTableRowActions);\n const defaultColumn = {\n minSize: 80,\n size: 180,\n maxSize: 720,\n };\n\n return function DataTable({\n columns,\n data,\n getRowId,\n children,\n title,\n description,\n toolbarQueryValue,\n onToolbarQueryValueChange,\n toolbarQueryPlaceholder,\n toolbarQueryDebounceMs,\n manualFiltering = false,\n enableToolbarQueryFiltering = true,\n globalFilterFn,\n columnFilters,\n onColumnFiltersChange,\n enableColumnFilters,\n customToolbar,\n compactToolbar,\n rowsPerPageOptions = [10, 20, 50, 100],\n totalRowCount,\n hasNextPage,\n sorting,\n onSortingChange,\n manualSorting = false,\n pageIndex,\n pageSize,\n onPageIndexChange,\n onPageSizeChange,\n pageCount,\n manualPagination = false,\n rowSelection,\n onRowSelectionChange,\n enableRowSelection = false,\n enableMultiRowSelection = true,\n enableSubRowSelection = true,\n getRowCanSelect,\n rowSelectionSelectAllScope = \"page\",\n expanded,\n onExpandedChange,\n getSubRows,\n manualExpanding = false,\n paginateExpandedRows,\n filterFromLeafRows,\n maxLeafRowFilterDepth,\n detailPanel,\n getRowCanExpand,\n renderExpandedRow,\n columnOrder,\n onColumnOrderChange,\n enableColumnReordering = false,\n columnGroupHeaderHeight,\n columnPinning,\n onColumnPinningChange,\n enableColumnPinning = false,\n rowPinning,\n onRowPinningChange,\n enableRowPinning = false,\n keepPinnedRows = true,\n toolbarActions = [],\n selectionActions = [],\n rowActions = [],\n csvExport,\n density,\n onDensityChange,\n enableDensityToggle = false,\n columnPrefsKey,\n persistence,\n savedViews,\n initialState,\n state: unifiedState,\n onStateChange,\n apiRef,\n labels,\n summaryRows = [],\n cardRenderer,\n cardSizing,\n cardGridClassName,\n cardClassName,\n viewMode,\n onViewModeChange,\n enableViewToggle = false,\n emptyState,\n isLoading = false,\n loadingRowCount,\n getRowLoadingState,\n hiddenRows,\n showHiddenRows,\n onShowHiddenRowsChange,\n infiniteScroll,\n editableRows,\n columnVisibility,\n onColumnVisibilityChange,\n columnSizing,\n onColumnSizingChange,\n enableColumnResizing = false,\n columnResizeMode = \"onEnd\",\n layoutMode = \"fill\",\n stickyHeader = true,\n showFooter = true,\n showToolbar = true,\n dir = \"ltr\",\n flexGrow = true,\n toolbarVisibility,\n className,\n tableClassName,\n tableContainerClassName,\n stripedRows = false,\n getRowClassName,\n onRowClick,\n onActionError,\n dragAndDrop,\n fileUpload,\n virtualization,\n }: DataTableProps) {\n const containerRef = React.useRef(null);\n const fileInputRef = React.useRef(null);\n const tableScrollContainerRef = React.useRef(null);\n const draggedColumnIdRef = React.useRef(null);\n const tableRef = React.useRef | null>(null);\n const lastSelectedRowIdRef = React.useRef(null);\n const generatedTitleId = React.useId();\n const generatedDescriptionId = React.useId();\n React.useMemo(() => validateDataTableColumnIds(columns), [columns]);\n const resolvedLabels = React.useMemo(\n () => resolveDataTableLabels(labels),\n [labels],\n );\n const resolvedToolbarQueryValue =\n toolbarQueryValue ?? unifiedState?.globalFilter;\n const resolvedSorting = sorting ?? unifiedState?.sorting;\n const resolvedPageIndex =\n pageIndex ?? unifiedState?.pagination?.pageIndex;\n const resolvedPageSize = pageSize ?? unifiedState?.pagination?.pageSize;\n const resolvedRowSelection =\n rowSelection ?? unifiedState?.rowSelection;\n const resolvedColumnVisibility =\n columnVisibility ?? unifiedState?.columnVisibility;\n const resolvedColumnFilters =\n columnFilters ?? unifiedState?.columnFilters;\n const resolvedExpanded = expanded ?? unifiedState?.expanded;\n const resolvedColumnOrder =\n columnOrder ?? unifiedState?.columnOrder;\n const resolvedColumnPinning =\n columnPinning ?? unifiedState?.columnPinning;\n const resolvedRowPinning = rowPinning ?? unifiedState?.rowPinning;\n const resolvedColumnSizing =\n columnSizing ?? unifiedState?.columnSizing;\n const resolvedDensity = density ?? unifiedState?.density;\n const resolvedViewMode = viewMode ?? unifiedState?.viewMode;\n const resolvedShowHiddenRows =\n showHiddenRows ?? unifiedState?.showHiddenRows;\n const showTableHeading =\n showToolbar && (toolbarVisibility?.title ?? true);\n const titleId = showTableHeading && title ? generatedTitleId : undefined;\n const descriptionId =\n showTableHeading && description ? generatedDescriptionId : undefined;\n useDataTableStateConflictWarnings(unifiedState, {\n columnFilters: columnFilters !== undefined,\n columnOrder: columnOrder !== undefined,\n columnPinning: columnPinning !== undefined,\n rowPinning: rowPinning !== undefined,\n columnSizing: columnSizing !== undefined,\n columnVisibility: columnVisibility !== undefined,\n density: density !== undefined,\n expanded: expanded !== undefined,\n globalFilter: toolbarQueryValue !== undefined,\n pagination: pageIndex !== undefined || pageSize !== undefined,\n rowSelection: rowSelection !== undefined,\n showHiddenRows: showHiddenRows !== undefined,\n sorting: sorting !== undefined,\n viewMode: viewMode !== undefined,\n });\n const handleToolbarQueryValueChange = useDataTableStateSliceChange(\n \"globalFilter\",\n onToolbarQueryValueChange,\n onStateChange,\n );\n const handleSortingPropChange = useDataTableStateSliceChange(\n \"sorting\",\n onSortingChange,\n onStateChange,\n );\n const handleRowSelectionPropChange = useDataTableStateSliceChange(\n \"rowSelection\",\n onRowSelectionChange,\n onStateChange,\n );\n const handleColumnVisibilityPropChange = useDataTableStateSliceChange(\n \"columnVisibility\",\n onColumnVisibilityChange,\n onStateChange,\n );\n const handleColumnFiltersPropChange = useDataTableStateSliceChange(\n \"columnFilters\",\n onColumnFiltersChange,\n onStateChange,\n );\n const handleExpandedPropChange = useDataTableStateSliceChange(\n \"expanded\",\n onExpandedChange,\n onStateChange,\n );\n const handleColumnOrderPropChange = useDataTableStateSliceChange(\n \"columnOrder\",\n onColumnOrderChange,\n onStateChange,\n );\n const handleColumnPinningPropChange = useDataTableStateSliceChange(\n \"columnPinning\",\n onColumnPinningChange,\n onStateChange,\n );\n const handleRowPinningPropChange = useDataTableStateSliceChange(\n \"rowPinning\",\n onRowPinningChange,\n onStateChange,\n );\n const handleColumnSizingPropChange = useDataTableStateSliceChange(\n \"columnSizing\",\n onColumnSizingChange,\n onStateChange,\n );\n const handleDensityPropChange = useDataTableStateSliceChange(\n \"density\",\n onDensityChange,\n onStateChange,\n );\n const handleViewModePropChange = useDataTableStateSliceChange(\n \"viewMode\",\n onViewModeChange,\n onStateChange,\n );\n const handleShowHiddenRowsPropChange = useDataTableStateSliceChange(\n \"showHiddenRows\",\n onShowHiddenRowsChange,\n onStateChange,\n );\n const handlePageIndexPropChange = React.useCallback(\n (nextPageIndex: number) => {\n onPageIndexChange?.(nextPageIndex);\n onStateChange?.((current) => ({\n ...current,\n pagination: {\n pageIndex: nextPageIndex,\n pageSize:\n resolvedPageSize ?? current.pagination.pageSize,\n },\n }));\n },\n [onPageIndexChange, onStateChange, resolvedPageSize],\n );\n const handlePageSizePropChange = React.useCallback(\n (nextPageSize: number) => {\n onPageSizeChange?.(nextPageSize);\n onStateChange?.((current) => ({\n ...current,\n pagination: {\n pageIndex:\n resolvedPageIndex ?? current.pagination.pageIndex,\n pageSize: nextPageSize,\n },\n }));\n },\n [onPageSizeChange, onStateChange, resolvedPageIndex],\n );\n const runAction = React.useCallback(\n (\n context: Omit, \"error\">,\n action: () => void | Promise,\n ) => {\n runDataTableAction(action, context, onActionError);\n },\n [onActionError],\n );\n const guardedRowActions = React.useMemo(\n () =>\n rowActions.map((action) => ({\n ...action,\n onClick: (row: TData) => {\n runAction(\n {\n actionKey: action.key,\n row,\n source: \"rowAction\",\n },\n () => action.onClick(row),\n );\n },\n })),\n [rowActions, runAction],\n );\n const guardedOnRowClick = React.useMemo<\n DataTableProps[\"onRowClick\"]\n >(\n () =>\n onRowClick\n ? (context) => {\n runAction(\n {\n row: context.row,\n source: \"rowClick\",\n },\n () => onRowClick(context),\n );\n }\n : undefined,\n [onRowClick, runAction],\n );\n const handleEditError = React.useCallback(\n (error: unknown, row: TData) => {\n onActionError?.({\n error,\n row,\n source: \"edit\",\n });\n },\n [onActionError],\n );\n const {\n containerWidth,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentRowPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n effectiveColumnVisibility,\n globalFilterValue,\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n localSearchValue,\n resolvedLoadingRowCount,\n resolvedToolbarQueryPlaceholder,\n selectedRowIds,\n selectedRows,\n setCurrentColumnFilters,\n setCurrentColumnOrder,\n setCurrentColumnPinning,\n setCurrentRowPinning,\n setCurrentColumnVisibility,\n setCurrentExpanded,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n setLocalSearchValue,\n shouldRenderInitialLoading,\n tableData,\n tableGetRowId,\n visibleData,\n } = useDataTableState({\n columnFilters: resolvedColumnFilters,\n columnOrder: resolvedColumnOrder,\n columnPinning: resolvedColumnPinning,\n rowPinning: resolvedRowPinning,\n columnSizing: resolvedColumnSizing,\n columnPrefsKey,\n persistence,\n columnVisibility: resolvedColumnVisibility,\n columns,\n containerRef,\n data,\n density: resolvedDensity,\n enableRowSelection,\n enableToolbarQueryFiltering,\n expanded: resolvedExpanded,\n getSubRows,\n getRowId,\n hiddenRows,\n isLoading,\n loadingRowCount,\n manualFiltering,\n initialState,\n onColumnFiltersChange: handleColumnFiltersPropChange,\n onColumnOrderChange: handleColumnOrderPropChange,\n onColumnPinningChange: handleColumnPinningPropChange,\n onRowPinningChange: handleRowPinningPropChange,\n onColumnSizingChange: handleColumnSizingPropChange,\n onColumnVisibilityChange: handleColumnVisibilityPropChange,\n onDensityChange: handleDensityPropChange,\n onExpandedChange: handleExpandedPropChange,\n onPageIndexChange: handlePageIndexPropChange,\n onRowSelectionChange: handleRowSelectionPropChange,\n onShowHiddenRowsChange: handleShowHiddenRowsPropChange,\n onSortingChange: handleSortingPropChange,\n onToolbarQueryValueChange: handleToolbarQueryValueChange,\n onViewModeChange: handleViewModePropChange,\n pageIndex: resolvedPageIndex,\n pageSize: resolvedPageSize,\n resolvedLabels,\n rowSelection: resolvedRowSelection,\n rowsPerPageOptions,\n selectionActions,\n showHiddenRows: resolvedShowHiddenRows,\n sorting: resolvedSorting,\n toolbarQueryDebounceMs,\n toolbarQueryPlaceholder,\n toolbarQueryValue: resolvedToolbarQueryValue,\n viewMode: resolvedViewMode,\n });\n const usesLegacyDetailPanelState = Boolean(\n renderExpandedRow && !detailPanel && !getSubRows,\n );\n const resolvedDetailPanel =\n detailPanel ??\n (renderExpandedRow\n ? {\n getRowCanExpand: getSubRows ? undefined : getRowCanExpand,\n render: renderExpandedRow,\n }\n : undefined);\n const [currentDetailExpanded, setCurrentDetailExpanded] =\n useControllableState({\n defaultValue: () =>\n usesLegacyDetailPanelState ? (initialState?.expanded ?? {}) : {},\n onChange: usesLegacyDetailPanelState\n ? setCurrentExpanded\n : resolvedDetailPanel?.onExpandedChange,\n value: usesLegacyDetailPanelState\n ? currentExpanded\n : resolvedDetailPanel?.expanded,\n });\n const {\n cancelEditing,\n draftValues,\n editingRowId,\n isSavingEdit,\n saveEdit,\n setDraftValues,\n setEditingRowId,\n startEditingRow,\n } = useRowEditing({\n columns,\n editableRows,\n onError: handleEditError,\n });\n const { viewportElement: tableScrollElement, viewportHeight } =\n useDataTableScrollViewport(tableScrollContainerRef, currentViewMode);\n const openFileDialog = React.useCallback(() => {\n if (fileUpload?.disabled) {\n return;\n }\n\n fileInputRef.current?.click();\n }, [fileUpload?.disabled]);\n const handleSelectedFiles = React.useCallback(\n (files: FileList | Array) => {\n runAction(\n {\n source: \"fileUpload\",\n },\n () => fileUpload?.onFilesSelected(files),\n );\n },\n [fileUpload, runAction],\n );\n\n const tableColumns = useDataTableColumns({\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n editingRowId,\n enableRowSelection,\n enableRowPinning,\n hasTreeExpansion: Boolean(getSubRows),\n isSavingEdit,\n labels: resolvedLabels,\n lastSelectedRowIdRef,\n detailPanel: resolvedDetailPanel,\n detailExpanded: currentDetailExpanded,\n onDetailExpandedChange: setCurrentDetailExpanded,\n rowSelectionSelectAllScope,\n rowActions: guardedRowActions,\n saveEdit,\n startEditingRow,\n tableRef,\n });\n const columnGroupPaths = React.useMemo(\n () => getDataTableColumnGroupPaths(columns),\n [columns],\n );\n\n const {\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n isPageCountKnown,\n renderedRows,\n topPinnedRows,\n bottomPinnedRows,\n reorderColumn,\n rowsToRender,\n sentinelRef,\n table,\n virtualPaddingBottom,\n virtualPaddingTop,\n visibleLeafColumns,\n } = useDataTableInstance({\n autoResetPageIndex: false,\n columnGroupPaths,\n columnResizeMode,\n dir,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentRowPinning,\n currentColumnSizing,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentSorting,\n currentViewMode,\n defaultColumn,\n effectiveColumnVisibility,\n enableColumnResizing,\n enableRowPinning,\n enableRowSelection,\n enableMultiRowSelection,\n enableSubRowSelection,\n getRowCanSelect,\n getRowCanExpand,\n getSubRows,\n globalFilterFn,\n globalFilterValue,\n hasNextPage,\n handleColumnFiltersChange: setCurrentColumnFilters,\n handleColumnOrderChange: setCurrentColumnOrder,\n handleColumnPinningChange: setCurrentColumnPinning,\n handleRowPinningChange: setCurrentRowPinning,\n handleColumnVisibilityChange: setCurrentColumnVisibility,\n handleExpandedChange: setCurrentExpanded,\n infiniteScroll,\n keepPinnedRows,\n manualFiltering,\n manualExpanding,\n manualPagination,\n manualSorting,\n onActionError,\n onPageIndexChange: handlePageIndexPropChange,\n onPageSizeChange: handlePageSizePropChange,\n pageCount,\n pageIndex: resolvedPageIndex,\n pageSize: resolvedPageSize,\n paginateExpandedRows,\n filterFromLeafRows,\n maxLeafRowFilterDepth,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n shouldRenderInitialLoading,\n tableColumns,\n tableData,\n tableGetRowId,\n tableRef,\n tableScrollElement,\n totalRowCount,\n virtualization,\n viewportHeight,\n });\n const columnLayout = useColumnLayout({\n columns,\n columnSizing: currentColumnSizing,\n editableRows: Boolean(editableRows),\n enableRowSelection,\n hasRowActions: rowActions.length > 0,\n hasRowExpansion: Boolean(getSubRows || resolvedDetailPanel),\n layoutMode,\n uiClassNames,\n visibleLeafColumns,\n });\n const { explicitlySizedColumnIds, fillMinWidth, getColumnLayout } =\n columnLayout;\n const explicitCustomCellColumnIds = React.useMemo(() => {\n return new Set(\n getDataTableLeafColumns(columns).flatMap(({ column, index }) => {\n return Object.prototype.hasOwnProperty.call(column, \"cell\") &&\n typeof column.cell === \"function\"\n ? [getColumnId(column, index)]\n : [];\n }),\n );\n }, [columns]);\n const visibleLeafColumnCount = visibleLeafColumns.length;\n const bodyRowComponents = React.useMemo(\n () => ({\n Checkbox,\n Input,\n Skeleton,\n TableCell,\n TableRow,\n }),\n [],\n );\n const hasCardTitle = React.useMemo(\n () =>\n getDataTableLeafColumns(columns).some(\n ({ column }) => column.meta?.cardTitle,\n ),\n [columns],\n );\n const primeColumnForResize = React.useCallback(\n (columnId: string, currentSize: number) => {\n if (\n explicitlySizedColumnIds.has(columnId) ||\n Object.prototype.hasOwnProperty.call(\n table.getState().columnSizing,\n columnId,\n )\n ) {\n return;\n }\n\n flushSync(() => {\n table.setColumnSizing((current) => ({\n ...current,\n [columnId]: currentSize,\n }));\n });\n },\n [explicitlySizedColumnIds, table],\n );\n const resetColumnSize = React.useCallback(\n (columnId: string) => {\n if (explicitlySizedColumnIds.has(columnId)) {\n table.getColumn(columnId)?.resetSize();\n return;\n }\n\n table.setColumnSizing((current) => {\n if (!Object.prototype.hasOwnProperty.call(current, columnId)) {\n return current;\n }\n\n const next = { ...current };\n delete next[columnId];\n return next;\n });\n },\n [explicitlySizedColumnIds, table],\n );\n\n const filteredData = table\n .getFilteredRowModel()\n .rows.map((row) => row.original);\n const emptyNode =\n typeof emptyState === \"function\"\n ? emptyState({\n rows: filteredData,\n toolbarQueryValue: localSearchValue,\n })\n : emptyState;\n const {\n columnVisibilityOptions,\n effectiveToolbarActions,\n handleClearColumnFilters,\n handleToolbarColumnFilterChange,\n handleToolbarColumnPinningChange,\n toolbarColumnFilters,\n } = useDataTableToolbarFeatures({\n columns,\n currentColumnFilters,\n currentColumnPinning,\n csvExport,\n effectiveColumnVisibility,\n enableColumnFilters,\n handleColumnFiltersChange: setCurrentColumnFilters,\n handleColumnPinningChange: setCurrentColumnPinning,\n labels: resolvedLabels,\n table,\n toolbarActions,\n visibleData,\n });\n const guardedToolbarActions = React.useMemo(\n () =>\n effectiveToolbarActions.map((action) => ({\n ...action,\n onClick: (context: {\n rows: Array;\n openFileDialog?: () => void;\n }) => {\n runAction(\n {\n actionKey: action.key,\n source: \"toolbarAction\",\n },\n () => action.onClick(context),\n );\n },\n })),\n [effectiveToolbarActions, runAction],\n );\n const guardedSelectionActions = React.useMemo(\n () =>\n selectionActions.map((action) => ({\n ...action,\n onClick: (context: Parameters[0]) => {\n runAction(\n {\n actionKey: action.key,\n source: \"selectionAction\",\n },\n () => action.onClick(context),\n );\n },\n })),\n [runAction, selectionActions],\n );\n const currentDataTableState = React.useMemo(\n () => ({\n sorting: currentSorting,\n pagination: currentPagination,\n rowSelection: currentRowSelection,\n columnVisibility: currentColumnVisibility,\n columnFilters: currentColumnFilters,\n expanded: currentExpanded,\n columnOrder: currentColumnOrder,\n columnPinning: currentColumnPinning,\n rowPinning: currentRowPinning,\n columnSizing: currentColumnSizing,\n density: currentDensity,\n viewMode: currentViewMode,\n showHiddenRows: currentShowHiddenRows,\n globalFilter: localSearchValue,\n }),\n [\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentRowPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n localSearchValue,\n ],\n );\n const getCurrentState = React.useCallback(\n () => cloneDataTableState(currentDataTableState),\n [currentDataTableState],\n );\n const restoreState = React.useCallback(\n (nextState: Partial) => {\n if (nextState.sorting !== undefined) {\n table.setSorting(nextState.sorting);\n }\n if (nextState.pagination !== undefined) {\n table.setPagination(nextState.pagination);\n }\n if (nextState.rowSelection !== undefined) {\n table.setRowSelection(nextState.rowSelection);\n }\n if (nextState.columnVisibility !== undefined) {\n table.setColumnVisibility(nextState.columnVisibility);\n }\n if (nextState.columnFilters !== undefined) {\n table.setColumnFilters(nextState.columnFilters);\n }\n if (nextState.expanded !== undefined) {\n table.setExpanded(nextState.expanded);\n }\n if (nextState.columnOrder !== undefined) {\n table.setColumnOrder(nextState.columnOrder);\n }\n if (nextState.columnPinning !== undefined) {\n table.setColumnPinning(nextState.columnPinning);\n }\n if (nextState.rowPinning !== undefined) {\n table.setRowPinning(nextState.rowPinning);\n }\n if (nextState.columnSizing !== undefined) {\n table.setColumnSizing(nextState.columnSizing);\n }\n if (nextState.density !== undefined) {\n handleDensityChange(nextState.density);\n }\n if (nextState.viewMode !== undefined) {\n handleViewModeChange(nextState.viewMode);\n }\n if (nextState.showHiddenRows !== undefined) {\n handleShowHiddenRowsChange(nextState.showHiddenRows);\n }\n if (nextState.globalFilter !== undefined) {\n setLocalSearchValue(nextState.globalFilter);\n }\n },\n [\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n setLocalSearchValue,\n table,\n ],\n );\n const clearPersistedState = React.useCallback(\n () => clearDataTableColumnPrefs(persistence ?? columnPrefsKey),\n [columnPrefsKey, persistence],\n );\n const resetColumnLayout = React.useCallback<\n DataTableApi[\"resetColumnLayout\"]\n >(\n (options) => {\n if (options?.clearPersistence) {\n clearPersistedState();\n }\n restoreState({\n columnVisibility: initialState?.columnVisibility ?? {},\n columnOrder: initialState?.columnOrder ?? [],\n columnPinning:\n initialState?.columnPinning ?? getInitialColumnPinning(columns),\n rowPinning: initialState?.rowPinning ?? { top: [], bottom: [] },\n columnSizing: initialState?.columnSizing ?? {},\n });\n },\n [\n clearPersistedState,\n columns,\n initialState,\n restoreState,\n ],\n );\n const resetState = React.useCallback[\"resetState\"]>(\n (options) => {\n if (options?.clearPersistence) {\n clearPersistedState();\n }\n restoreState({\n sorting: initialState?.sorting ?? [],\n pagination: initialState?.pagination ?? {\n pageIndex: 0,\n pageSize: rowsPerPageOptions[0] ?? 20,\n },\n rowSelection: initialState?.rowSelection ?? {},\n columnVisibility: initialState?.columnVisibility ?? {},\n columnFilters: initialState?.columnFilters ?? [],\n expanded: initialState?.expanded ?? {},\n columnOrder: initialState?.columnOrder ?? [],\n columnPinning:\n initialState?.columnPinning ?? getInitialColumnPinning(columns),\n rowPinning: initialState?.rowPinning ?? { top: [], bottom: [] },\n columnSizing: initialState?.columnSizing ?? {},\n density: initialState?.density ?? \"comfortable\",\n viewMode: initialState?.viewMode ?? \"table\",\n showHiddenRows: initialState?.showHiddenRows ?? false,\n globalFilter: initialState?.globalFilter ?? \"\",\n });\n },\n [\n clearPersistedState,\n columns,\n initialState,\n restoreState,\n rowsPerPageOptions,\n ],\n );\n const getSavedViews = React.useCallback(\n () => readDataTableSavedViews(savedViews),\n [savedViews],\n );\n const createSavedView = React.useCallback<\n DataTableApi[\"createSavedView\"]\n >(\n (name) =>\n createDataTableSavedView(savedViews, name, getCurrentState()),\n [getCurrentState, savedViews],\n );\n const applySavedView = React.useCallback<\n DataTableApi[\"applySavedView\"]\n >(\n (id) => {\n const view = readDataTableSavedViews(savedViews).find(\n (candidate) => candidate.id === id,\n );\n if (!view) {\n return false;\n }\n restoreState(view.state);\n savedViews?.onApply?.(view);\n return true;\n },\n [restoreState, savedViews],\n );\n const renameSavedView = React.useCallback<\n DataTableApi[\"renameSavedView\"]\n >(\n (id, name) => renameDataTableSavedView(savedViews, id, name),\n [savedViews],\n );\n const deleteSavedView = React.useCallback<\n DataTableApi[\"deleteSavedView\"]\n >(\n (id) => deleteDataTableSavedView(savedViews, id),\n [savedViews],\n );\n const clearSavedViews = React.useCallback(\n () => clearDataTableSavedViews(savedViews),\n [savedViews],\n );\n const exportCsvFromApi = React.useCallback<\n DataTableApi[\"exportCsv\"]\n >(\n (options) =>\n exportDataTableCsv({\n csvExport: options ?? (csvExport || true),\n labels: resolvedLabels,\n table,\n }),\n [csvExport, resolvedLabels, table],\n );\n const pinRow = React.useCallback[\"pinRow\"]>(\n (rowId, position = \"top\") => {\n try {\n const row = table.getRow(rowId, true);\n if (!row.getCanPin()) {\n return false;\n }\n row.pin(position);\n return true;\n } catch {\n return false;\n }\n },\n [table],\n );\n const unpinRow = React.useCallback[\"unpinRow\"]>(\n (rowId) => {\n try {\n const row = table.getRow(rowId, true);\n if (!row.getCanPin()) {\n return false;\n }\n row.pin(false);\n return true;\n } catch {\n return false;\n }\n },\n [table],\n );\n React.useImperativeHandle(\n apiRef,\n () => ({\n getTable: () => tableRef.current,\n getState: getCurrentState,\n snapshot: getCurrentState,\n restore: restoreState,\n resetColumnLayout,\n resetState,\n clearPersistedState,\n getSavedViews,\n createSavedView,\n applySavedView,\n renameSavedView,\n deleteSavedView,\n clearSavedViews,\n pinRow,\n unpinRow,\n focus: () => {\n containerRef.current?.focus();\n },\n scrollToRow: (rowId) =>\n scrollDataTableElementIntoView(containerRef.current, \"row\", rowId),\n scrollToColumn: (columnId) =>\n scrollDataTableElementIntoView(\n containerRef.current,\n \"column\",\n columnId,\n ),\n exportCsv: exportCsvFromApi,\n }),\n [\n applySavedView,\n clearPersistedState,\n clearSavedViews,\n createSavedView,\n deleteSavedView,\n exportCsvFromApi,\n getSavedViews,\n getCurrentState,\n renameSavedView,\n resetColumnLayout,\n resetState,\n restoreState,\n pinRow,\n unpinRow,\n ],\n );\n\n return (\n \n \n {fileUpload ? (\n {\n const files = event.currentTarget.files;\n if (files?.length) {\n handleSelectedFiles(files);\n }\n event.currentTarget.value = \"\";\n }}\n />\n ) : null}\n \n \n {showToolbar ? (\n \n ) : null}\n\n \n {currentViewMode === \"card\" && cardRenderer ? (\n \n ) : (\n \n )}\n \n \n {children}\n \n \n \n \n \n );\n };\n}\n\nfunction runDataTableAction(\n action: () => void | Promise,\n context: Omit, \"error\">,\n onActionError: DataTableProps[\"onActionError\"],\n) {\n let result: void | Promise;\n try {\n result = action();\n } catch (error) {\n onActionError?.({ ...context, error });\n return;\n }\n\n void Promise.resolve(result).catch((error: unknown) => {\n onActionError?.({ ...context, error });\n });\n}\n\nfunction useDataTableStateSliceChange(\n key: K,\n onLegacyChange: ((value: DataTableState[K]) => void) | undefined,\n onStateChange: DataTableProps[\"onStateChange\"],\n) {\n const handleChange = React.useCallback(\n (value: DataTableState[K]) => {\n onLegacyChange?.(value);\n onStateChange?.((current) => ({\n ...current,\n [key]: value,\n }));\n },\n [key, onLegacyChange, onStateChange],\n );\n\n return onLegacyChange || onStateChange ? handleChange : undefined;\n}\n\nfunction useDataTableStateConflictWarnings(\n state: Partial | undefined,\n legacySlices: Record,\n) {\n const warnedSlicesRef = React.useRef(new Set());\n\n React.useEffect(() => {\n if (!state || !isDevelopmentEnvironment()) {\n return;\n }\n\n for (const key of Object.keys(legacySlices) as Array<\n keyof DataTableState\n >) {\n if (\n state[key] === undefined ||\n !legacySlices[key] ||\n warnedSlicesRef.current.has(key)\n ) {\n continue;\n }\n\n warnedSlicesRef.current.add(key);\n console.warn(\n `[data-table-pro] Both state.${key} and its legacy controlled prop were provided. The legacy prop takes precedence during the 4.x compatibility window.`,\n );\n }\n }, [legacySlices, state]);\n}\n\nfunction isDevelopmentEnvironment() {\n const nodeEnvironment = (\n globalThis as {\n process?: { env?: { NODE_ENV?: string } };\n }\n ).process?.env?.NODE_ENV;\n\n return nodeEnvironment !== \"production\";\n}\n\nfunction cloneDataTableState(state: DataTableState): DataTableState {\n return {\n sorting: state.sorting.map((item) => ({ ...item })),\n pagination: { ...state.pagination },\n rowSelection: { ...state.rowSelection },\n columnVisibility: { ...state.columnVisibility },\n columnFilters: state.columnFilters.map((item) => ({ ...item })),\n expanded:\n typeof state.expanded === \"boolean\"\n ? state.expanded\n : { ...state.expanded },\n columnOrder: [...state.columnOrder],\n columnPinning: {\n left: state.columnPinning.left\n ? [...state.columnPinning.left]\n : undefined,\n right: state.columnPinning.right\n ? [...state.columnPinning.right]\n : undefined,\n },\n rowPinning: {\n top: state.rowPinning.top ? [...state.rowPinning.top] : undefined,\n bottom: state.rowPinning.bottom ? [...state.rowPinning.bottom] : undefined,\n },\n columnSizing: { ...state.columnSizing },\n density: state.density,\n viewMode: state.viewMode,\n showHiddenRows: state.showHiddenRows,\n globalFilter: state.globalFilter,\n };\n}\n\nfunction scrollDataTableElementIntoView(\n container: HTMLDivElement | null,\n kind: \"row\" | \"column\",\n value: string,\n) {\n if (!container) {\n return false;\n }\n\n const attribute = kind === \"row\" ? \"data-row-id\" : \"data-column-id\";\n const element = Array.from(\n container.querySelectorAll(`[${attribute}]`),\n ).find((candidate) => candidate.getAttribute(attribute) === value);\n if (!element) {\n return false;\n }\n\n element.scrollIntoView?.({ block: \"nearest\", inline: \"nearest\" });\n return true;\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-6PPFYQ6Q.js.map b/dist/chunk-6PPFYQ6Q.js.map deleted file mode 100644 index 8ef8990..0000000 --- a/dist/chunk-6PPFYQ6Q.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/adapters/heroui/index.tsx"],"names":["withClassName","Component","defaultClassName","className","props","jsx","cn","HeroButton","Button","HeroCard","Card","HeroCardHeader","CardHeader","HeroCardContent","CardContent","HeroCheckbox","Checkbox","HeroDropdownMenuContent","DropdownMenuContent","HeroDropdownMenuItem","DropdownMenuItem","HeroDropdownMenuCheckboxItem","DropdownMenuCheckboxItem","HeroDropdownMenuRadioItem","DropdownMenuRadioItem","HeroDropdownMenuLabel","DropdownMenuLabel","HeroDropdownMenuSeparator","DropdownMenuSeparator","HeroDropdownMenuSubContent","DropdownMenuSubContent","HeroDropdownMenuSubTrigger","DropdownMenuSubTrigger","HeroInput","Input","HeroInputGroup","InputGroup","HeroInputGroupAddon","InputGroupAddon","HeroInputGroupInput","InputGroupInput","HeroPagination","Pagination","HeroPaginationLink","PaginationLink","HeroPaginationFirst","PaginationFirst","HeroPaginationPrevious","PaginationPrevious","HeroPaginationNext","PaginationNext","HeroPaginationLast","PaginationLast","HeroScrollArea","ScrollArea","HeroScrollBar","ScrollBar","HeroSelectTrigger","SelectTrigger","HeroSelectContent","SelectContent","HeroSelectItem","SelectItem","HeroSeparator","Separator","HeroSkeleton","Skeleton","HeroTable","Table","HeroTableHeader","TableHeader","HeroTableBody","TableBody","HeroTableFooter","TableFooter","HeroTableHead","TableHead","HeroTableRow","TableRow","HeroTableCell","TableCell","HeroTooltipContent","TooltipContent","HeroEmpty","Empty","HeroEmptyHeader","EmptyHeader","HeroEmptyMedia","EmptyMedia","HeroEmptyTitle","EmptyTitle","HeroEmptyDescription","EmptyDescription","HeroEmptyContent","EmptyContent","heroUiKit","primitiveUiKit"],"mappings":"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","file":"chunk-6PPFYQ6Q.js","sourcesContent":["import * as React from \"react\";\nimport type { DataTableUiKit } from \"../../core/ui-kit\";\nimport {\n Button as PrimitiveButton,\n Card as PrimitiveCard,\n CardContent as PrimitiveCardContent,\n CardHeader as PrimitiveCardHeader,\n Checkbox as PrimitiveCheckbox,\n DropdownMenuCheckboxItem as PrimitiveDropdownMenuCheckboxItem,\n DropdownMenuContent as PrimitiveDropdownMenuContent,\n DropdownMenuItem as PrimitiveDropdownMenuItem,\n DropdownMenuLabel as PrimitiveDropdownMenuLabel,\n DropdownMenuRadioItem as PrimitiveDropdownMenuRadioItem,\n DropdownMenuSeparator as PrimitiveDropdownMenuSeparator,\n DropdownMenuSubContent as PrimitiveDropdownMenuSubContent,\n DropdownMenuSubTrigger as PrimitiveDropdownMenuSubTrigger,\n Empty as PrimitiveEmpty,\n EmptyContent as PrimitiveEmptyContent,\n EmptyDescription as PrimitiveEmptyDescription,\n EmptyHeader as PrimitiveEmptyHeader,\n EmptyMedia as PrimitiveEmptyMedia,\n EmptyTitle as PrimitiveEmptyTitle,\n Input as PrimitiveInput,\n InputGroup as PrimitiveInputGroup,\n InputGroupAddon as PrimitiveInputGroupAddon,\n InputGroupInput as PrimitiveInputGroupInput,\n Pagination as PrimitivePagination,\n PaginationFirst as PrimitivePaginationFirst,\n PaginationLast as PrimitivePaginationLast,\n PaginationLink as PrimitivePaginationLink,\n PaginationNext as PrimitivePaginationNext,\n PaginationPrevious as PrimitivePaginationPrevious,\n ScrollArea as PrimitiveScrollArea,\n ScrollBar as PrimitiveScrollBar,\n SelectContent as PrimitiveSelectContent,\n SelectItem as PrimitiveSelectItem,\n SelectTrigger as PrimitiveSelectTrigger,\n Separator as PrimitiveSeparator,\n Skeleton as PrimitiveSkeleton,\n Table as PrimitiveTable,\n TableBody as PrimitiveTableBody,\n TableCell as PrimitiveTableCell,\n TableFooter as PrimitiveTableFooter,\n TableHead as PrimitiveTableHead,\n TableHeader as PrimitiveTableHeader,\n TableRow as PrimitiveTableRow,\n TooltipContent as PrimitiveTooltipContent,\n primitiveUiKit,\n} from \"../../core/primitive-ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nfunction withClassName(\n Component: React.ComponentType,\n defaultClassName: string,\n) {\n return function Wrapped({ className, ...props }: TProps) {\n return (\n \n );\n };\n}\n\nconst HeroButton = withClassName(\n PrimitiveButton,\n \"rounded-field border-field-border shadow-field data-[variant=default]:bg-accent data-[variant=default]:text-accent-foreground data-[variant=outline]:border-field-border data-[variant=outline]:bg-field data-[variant=outline]:hover:bg-field-hover data-[variant=secondary]:bg-default data-[variant=secondary]:text-default-foreground data-[variant=ghost]:hover:bg-default data-[variant=destructive]:bg-danger-soft data-[variant=destructive]:text-danger\",\n);\nconst HeroCard = withClassName(\n PrimitiveCard,\n \"rounded-2xl border border-separator bg-surface text-surface-foreground shadow-surface ring-0\",\n);\nconst HeroCardHeader = withClassName(PrimitiveCardHeader, \"px-5 pt-5 pb-3\");\nconst HeroCardContent = withClassName(PrimitiveCardContent, \"px-5 pb-5\");\nconst HeroCheckbox = withClassName(\n PrimitiveCheckbox,\n \"rounded-field border-field-border bg-field ring-focus/40 data-checked:bg-accent data-checked:text-accent-foreground data-checked:ring-focus\",\n);\nconst HeroDropdownMenuContent = withClassName(\n PrimitiveDropdownMenuContent,\n \"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden **:data-[slot$=-item]:focus:bg-default **:data-[slot$=-item]:data-highlighted:bg-default **:data-[slot$=-separator]:bg-separator **:data-[slot$=-trigger]:focus:bg-default\",\n);\nconst HeroDropdownMenuItem = withClassName(\n PrimitiveDropdownMenuItem,\n \"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground data-[variant=destructive]:text-danger data-[variant=destructive]:focus:bg-danger-soft\",\n);\nconst HeroDropdownMenuCheckboxItem = withClassName(\n PrimitiveDropdownMenuCheckboxItem,\n \"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground\",\n);\nconst HeroDropdownMenuRadioItem = withClassName(\n PrimitiveDropdownMenuRadioItem,\n \"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground\",\n);\nconst HeroDropdownMenuLabel = withClassName(\n PrimitiveDropdownMenuLabel,\n \"text-muted\",\n);\nconst HeroDropdownMenuSeparator = withClassName(\n PrimitiveDropdownMenuSeparator,\n \"bg-separator\",\n);\nconst HeroDropdownMenuSubContent = withClassName(\n PrimitiveDropdownMenuSubContent,\n \"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden\",\n);\nconst HeroDropdownMenuSubTrigger = withClassName(\n PrimitiveDropdownMenuSubTrigger,\n \"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground data-open:bg-default data-open:text-overlay-foreground\",\n);\nconst HeroInput = withClassName(\n PrimitiveInput,\n \"rounded-field border-field-border bg-field text-field-foreground shadow-field placeholder:text-field-placeholder\",\n);\nconst HeroInputGroup = withClassName(\n PrimitiveInputGroup,\n \"rounded-field border-field-border bg-field text-field-foreground shadow-field\",\n);\nconst HeroInputGroupAddon = withClassName(\n PrimitiveInputGroupAddon,\n \"text-muted\",\n);\nconst HeroInputGroupInput = withClassName(PrimitiveInputGroupInput, \"bg-transparent\");\nconst HeroPagination = withClassName(PrimitivePagination, \"justify-end\");\nconst HeroPaginationLink = withClassName(\n PrimitivePaginationLink,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover data-[active=true]:bg-accent data-[active=true]:text-accent-foreground\",\n);\nconst HeroPaginationFirst = withClassName(\n PrimitivePaginationFirst,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover\",\n);\nconst HeroPaginationPrevious = withClassName(\n PrimitivePaginationPrevious,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover\",\n);\nconst HeroPaginationNext = withClassName(\n PrimitivePaginationNext,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover\",\n);\nconst HeroPaginationLast = withClassName(\n PrimitivePaginationLast,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover\",\n);\nconst HeroScrollArea = withClassName(PrimitiveScrollArea, \"rounded-2xl\");\nconst HeroScrollBar = withClassName(\n PrimitiveScrollBar,\n \"[&>[data-slot=scroll-area-thumb]]:bg-default-500\",\n);\nconst HeroSelectTrigger = withClassName(\n PrimitiveSelectTrigger,\n \"rounded-field border-field-border bg-field text-field-foreground shadow-field\",\n);\nconst HeroSelectContent = withClassName(\n PrimitiveSelectContent,\n \"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden\",\n);\nconst HeroSelectItem = withClassName(\n PrimitiveSelectItem,\n \"rounded-xl focus:bg-default\",\n);\nconst HeroSeparator = withClassName(PrimitiveSeparator, \"bg-separator\");\nconst HeroSkeleton = withClassName(\n PrimitiveSkeleton,\n \"rounded-xl bg-default\",\n);\nconst HeroTable = withClassName(PrimitiveTable, \"rounded-2xl text-foreground\");\nconst HeroTableHeader = withClassName(\n PrimitiveTableHeader,\n \"[&_tr]:border-separator\",\n);\nconst HeroTableBody = withClassName(PrimitiveTableBody, \"\");\nconst HeroTableFooter = withClassName(\n PrimitiveTableFooter,\n \"border-separator bg-surface-secondary\",\n);\nconst HeroTableHead = withClassName(\n PrimitiveTableHead,\n \"h-11 border-separator text-muted font-semibold\",\n);\nconst HeroTableRow = withClassName(\n PrimitiveTableRow,\n \"border-separator hover:bg-default data-[state=selected]:bg-accent-soft\",\n);\nconst HeroTableCell = withClassName(PrimitiveTableCell, \"py-2.5\");\nconst HeroTooltipContent = withClassName(\n PrimitiveTooltipContent,\n \"rounded-xl bg-overlay text-overlay-foreground ring-1 ring-separator shadow-overlay [&>svg]:bg-overlay [&>svg]:fill-overlay\",\n);\nconst HeroEmpty = withClassName(\n PrimitiveEmpty,\n \"rounded-2xl border-separator bg-surface shadow-surface\",\n);\nconst HeroEmptyHeader = withClassName(PrimitiveEmptyHeader, \"\");\nconst HeroEmptyMedia = withClassName(\n PrimitiveEmptyMedia,\n \"[&[data-variant=icon]]:rounded-2xl [&[data-variant=icon]]:bg-accent-soft [&[data-variant=icon]]:text-accent-soft-foreground\",\n);\nconst HeroEmptyTitle = withClassName(PrimitiveEmptyTitle, \"text-foreground\");\nconst HeroEmptyDescription = withClassName(\n PrimitiveEmptyDescription,\n \"text-muted\",\n);\nconst HeroEmptyContent = withClassName(PrimitiveEmptyContent, \"\");\n\nexport const heroUiKit: DataTableUiKit = {\n ...primitiveUiKit,\n rootClassName: \"dtp-heroui\",\n classNames: {\n card: \"hover:bg-default data-[state=selected]:bg-accent-soft\",\n cardGrid: \"bg-transparent\",\n cardItem: \"min-w-0\",\n cardOverlay: \"from-surface/95 via-surface/85 to-transparent\",\n cardScrollArea: \"bg-transparent\",\n cardSelected: \"bg-accent-soft ring-accent\",\n cardUnselected: \"border-separator\",\n cardViewport: \"bg-transparent\",\n cellBorder: \"border-separator/70\",\n columnGroupHeader: \"bg-default/50 font-semibold\",\n dragActive: \"rounded-2xl border-dashed border-accent\",\n emptyState: \"border-separator bg-surface\",\n footer: \"border-separator bg-surface text-surface-foreground\",\n headerSortIcon: \"text-muted\",\n mutedText: \"text-muted\",\n paginationSelectTrigger: \"border-field-border bg-field\",\n paginationTotal: \"text-muted\",\n pinnedColumn: \"border-separator\",\n pinnedUtilityColumn: \"bg-surface\",\n resizeHandle: \"after:bg-separator hover:after:bg-accent\",\n resizeHandleActive: \"after:bg-accent\",\n row: \"hover:bg-default data-[state=selected]:!bg-accent-soft\",\n rowSelected: \"!bg-accent-soft\",\n tableContainer: \"border-separator bg-surface text-surface-foreground\",\n tableScrollArea: \"bg-surface\",\n tableStickyHeader:\n \"sticky top-0 z-30 bg-surface/95 backdrop-blur [&_th]:border-separator [&_th]:bg-surface/95\",\n toolbarCompactIconButton: \"size-7\",\n toolbarIconButton: \"text-muted hover:text-foreground\",\n toolbarInputButton: \"bg-field\",\n },\n Button: HeroButton,\n Card: HeroCard,\n CardContent: HeroCardContent,\n CardHeader: HeroCardHeader,\n Checkbox: HeroCheckbox,\n DropdownMenuCheckboxItem: HeroDropdownMenuCheckboxItem,\n DropdownMenuContent: HeroDropdownMenuContent,\n DropdownMenuItem: HeroDropdownMenuItem,\n DropdownMenuLabel: HeroDropdownMenuLabel,\n DropdownMenuRadioItem: HeroDropdownMenuRadioItem,\n DropdownMenuSeparator: HeroDropdownMenuSeparator,\n DropdownMenuSubContent: HeroDropdownMenuSubContent,\n DropdownMenuSubTrigger: HeroDropdownMenuSubTrigger,\n Empty: HeroEmpty,\n EmptyContent: HeroEmptyContent,\n EmptyDescription: HeroEmptyDescription,\n EmptyHeader: HeroEmptyHeader,\n EmptyMedia: HeroEmptyMedia,\n EmptyTitle: HeroEmptyTitle,\n Input: HeroInput,\n InputGroup: HeroInputGroup,\n InputGroupAddon: HeroInputGroupAddon,\n InputGroupInput: HeroInputGroupInput,\n Pagination: HeroPagination,\n PaginationFirst: HeroPaginationFirst,\n PaginationLast: HeroPaginationLast,\n PaginationLink: HeroPaginationLink,\n PaginationNext: HeroPaginationNext,\n PaginationPrevious: HeroPaginationPrevious,\n ScrollArea: HeroScrollArea,\n ScrollBar: HeroScrollBar,\n SelectContent: HeroSelectContent,\n SelectItem: HeroSelectItem,\n SelectTrigger: HeroSelectTrigger,\n Separator: HeroSeparator,\n Skeleton: HeroSkeleton,\n Table: HeroTable,\n TableBody: HeroTableBody,\n TableCell: HeroTableCell,\n TableFooter: HeroTableFooter,\n TableHead: HeroTableHead,\n TableHeader: HeroTableHeader,\n TableRow: HeroTableRow,\n TooltipContent: HeroTooltipContent,\n};\n"]} \ No newline at end of file diff --git a/dist/chunk-7FUCHMMB.js b/dist/chunk-7FUCHMMB.js new file mode 100644 index 0000000..f5db9d9 --- /dev/null +++ b/dist/chunk-7FUCHMMB.js @@ -0,0 +1,2 @@ +import {o,n,b,e,d,g as g$1,h as h$1,k as k$1,t,f,c}from'./chunk-CVR2ZXHQ.js';import {a}from'./chunk-XTVBESM5.js';import*as M from'react';import {cva}from'class-variance-authority';import {Slot,Separator,Checkbox,DropdownMenu,ScrollArea,Select,Tooltip}from'radix-ui';import {jsx,jsxs}from'react/jsx-runtime';var ce=cva("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:outline-none active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"",outline:"",secondary:"",ghost:"",destructive:"",link:"underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function g({className:t,variant:e="default",size:n="default",asChild:a$1=false,...s}){let d=a$1?Slot.Root:"button";return jsx(d,{"data-slot":"button","data-variant":e,"data-size":n,className:a(ce({variant:e,size:n,className:t})),...s})}function N({className:t,orientation:e="horizontal",decorative:n=true,...a$1}){return jsx(Separator.Root,{"data-slot":"separator",decorative:n,orientation:e,className:a("shrink-0 data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",t),...a$1})}var ve=cva("flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1",{variants:{orientation:{horizontal:"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg!",vertical:"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg!"}},defaultVariants:{orientation:"horizontal"}});function Y({className:t,orientation:e,...n}){return jsx("div",{role:"group","data-slot":"button-group","data-orientation":e,className:a(ve({orientation:e}),t),...n})}function Z({className:t,asChild:e=false,...n}){let a$1=e?Slot.Root:"div";return jsx(a$1,{className:a("flex items-center gap-2 rounded-lg border px-2.5 text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",t),...n})}function $({className:t,orientation:e="vertical",...n}){return jsx(N,{"data-slot":"button-group-separator",orientation:e,className:a("relative self-stretch data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto",t),...n})}function tt({className:t,size:e="default",...n}){return jsx("div",{"data-slot":"card","data-size":e,className:a("group/card flex flex-col gap-4 overflow-hidden rounded-xl border py-4 text-sm ring-1 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",t),...n})}function et({className:t,...e}){return jsx("div",{"data-slot":"card-header",className:a("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3",t),...e})}function ot({className:t,...e}){return jsx("div",{"data-slot":"card-title",className:a("font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",t),...e})}function nt({className:t,...e}){return jsx("div",{"data-slot":"card-description",className:a("text-sm opacity-80",t),...e})}function at({className:t,...e}){return jsx("div",{"data-slot":"card-action",className:a("col-start-2 row-span-2 row-start-1 self-start justify-self-end",t),...e})}function rt({className:t,...e}){return jsx("div",{"data-slot":"card-content",className:a("px-4 group-data-[size=sm]/card:px-3",t),...e})}function it({className:t,...e}){return jsx("div",{"data-slot":"card-footer",className:a("flex items-center rounded-b-xl border-t p-4 group-data-[size=sm]/card:p-3",t),...e})}function lt({className:t,...e}){return jsx(Checkbox.Root,{"data-slot":"checkbox",className:a("peer relative flex size-4 shrink-0 items-center justify-center rounded-[4px] border ring-2 transition-colors outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 data-checked:ring-2",t),...e,children:jsx(Checkbox.Indicator,{"data-slot":"checkbox-indicator",className:"grid place-content-center text-current transition-none [&>svg]:size-3.5",children:jsx(b,{})})})}function dt({...t}){return jsx(DropdownMenu.Root,{"data-slot":"dropdown-menu",...t})}function pt({...t}){return jsx(DropdownMenu.Portal,{"data-slot":"dropdown-menu-portal",...t})}function ct({...t}){return jsx(DropdownMenu.Trigger,{"data-slot":"dropdown-menu-trigger",...t})}function ut({className:t,align:e="start",sideOffset:n=4,...a$1}){return jsx(DropdownMenu.Portal,{children:jsx(DropdownMenu.Content,{"data-slot":"dropdown-menu-content",sideOffset:n,align:e,className:a("relative z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) animate-none! overflow-x-hidden overflow-y-auto rounded-lg border p-1 shadow-md duration-100 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] 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 data-[state=closed]:overflow-hidden data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",t),...a$1})})}function mt({...t}){return jsx(DropdownMenu.Group,{"data-slot":"dropdown-menu-group",...t})}function ft({className:t,inset:e,variant:n="default",...a$1}){return jsx(DropdownMenu.Item,{"data-slot":"dropdown-menu-item","data-inset":e,"data-variant":n,className:a("group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:outline-none data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a$1})}function gt({className:t,children:e,checked:n,inset:a$1,...s}){return jsxs(DropdownMenu.CheckboxItem,{"data-slot":"dropdown-menu-checkbox-item","data-inset":a$1,className:a("relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:outline-none data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),checked:n,...s,children:[jsx("span",{className:"pointer-events-none absolute right-2 flex items-center justify-center","data-slot":"dropdown-menu-checkbox-item-indicator",children:jsx(DropdownMenu.ItemIndicator,{children:jsx(b,{})})}),e]})}function bt({...t}){return jsx(DropdownMenu.RadioGroup,{"data-slot":"dropdown-menu-radio-group",...t})}function vt({className:t,children:e,inset:n,...a$1}){return jsxs(DropdownMenu.RadioItem,{"data-slot":"dropdown-menu-radio-item","data-inset":n,className:a("relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:outline-none data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a$1,children:[jsx("span",{className:"pointer-events-none absolute right-2 flex items-center justify-center","data-slot":"dropdown-menu-radio-item-indicator",children:jsx(DropdownMenu.ItemIndicator,{children:jsx(b,{})})}),e]})}function ht({className:t,inset:e,...n}){return jsx(DropdownMenu.Label,{"data-slot":"dropdown-menu-label","data-inset":e,className:a("px-1.5 py-1 text-xs font-medium opacity-80 data-inset:pl-7",t),...n})}function xt({className:t,...e}){return jsx(DropdownMenu.Separator,{"data-slot":"dropdown-menu-separator",className:a("-mx-1 my-1 h-px",t),...e})}function Pt({className:t,...e}){return jsx("span",{"data-slot":"dropdown-menu-shortcut",className:a("ml-auto text-xs tracking-widest opacity-75",t),...e})}function wt({...t}){return jsx(DropdownMenu.Sub,{"data-slot":"dropdown-menu-sub",...t})}function yt({className:t,inset:e$1,children:n,...a$1}){return jsxs(DropdownMenu.SubTrigger,{"data-slot":"dropdown-menu-sub-trigger","data-inset":e$1,className:a("flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:outline-none data-inset:pl-7 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a$1,children:[n,jsx(e,{className:"ml-auto"})]})}function Ct({className:t,...e}){return jsx(DropdownMenu.SubContent,{"data-slot":"dropdown-menu-sub-content",className:a("relative z-50 min-w-[96px] origin-(--radix-dropdown-menu-content-transform-origin) animate-none! overflow-hidden rounded-lg border p-1 shadow-lg duration-100 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] 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 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",t),...e})}function Rt({className:t,...e}){return jsx("div",{"data-slot":"empty",className:a("flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-xl border-dashed p-6 text-center text-balance",t),...e})}function St({className:t,...e}){return jsx("div",{"data-slot":"empty-header",className:a("flex max-w-sm flex-col items-center gap-2",t),...e})}var xe=cva("mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0",{variants:{variant:{default:"bg-transparent",icon:"flex size-8 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-4"}},defaultVariants:{variant:"default"}});function zt({className:t,variant:e="default",...n}){return jsx("div",{"data-slot":"empty-icon","data-variant":e,className:a(xe({variant:e,className:t})),...n})}function Nt({className:t,...e}){return jsx("div",{"data-slot":"empty-title",className:a("font-heading text-sm font-medium tracking-tight",t),...e})}function It({className:t,...e}){return jsx("div",{"data-slot":"empty-description",className:a("text-sm/relaxed opacity-80 [&>a]:underline [&>a]:underline-offset-4",t),...e})}function kt({className:t,...e}){return jsx("div",{"data-slot":"empty-content",className:a("flex w-full max-w-sm min-w-0 flex-col items-center gap-2.5 text-sm text-balance",t),...e})}var I="h-8 w-full min-w-0 rounded-lg border px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:opacity-70 focus-visible:outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 @min-[768px]/data-table:text-sm";function k({className:t,...e}){return jsx("div",{role:"group","data-slot":"input-group",className:a("group/input-group flex w-full min-w-0 items-stretch rounded-lg border transition-colors outline-none focus-within:outline-none has-[>[data-slot=input-group-addon][data-align=block-start]]:flex-col has-[>[data-slot=input-group-addon][data-align=block-end]]:flex-col has-[>[data-slot=input-group-control]:disabled]:cursor-not-allowed has-[>[data-slot=input-group-control]:disabled]:opacity-50",t),...e})}var P=M.forwardRef(function({className:e,...n},a$1){return jsx("input",{ref:a$1,"data-slot":"input-group-control",type:n.type,className:a(I,"flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:border-0 focus-visible:ring-0",e),...n})});function T({align:t="inline-start",className:e,...n}){return jsx("div",{"data-slot":"input-group-addon","data-align":t,className:a("flex shrink-0 items-center gap-1.5 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",t==="inline-start"&&"order-first pl-2.5 pr-1",t==="inline-end"&&"order-last pl-1 pr-2.5",t==="block-start"&&"order-first w-full justify-between border-b px-2.5 py-1.5 text-sm",t==="block-end"&&"order-last w-full justify-between border-t px-2.5 py-1.5 text-sm",e),...n})}function Dt({className:t,...e}){return jsx("span",{"data-slot":"input-group-text",className:a("whitespace-nowrap text-sm",t),...e})}P.displayName="InputGroupInput";var A=M.forwardRef(function({className:e,passwordToggle:n$1=false,type:a$1,...s},d){let[S,le]=M.useState(false);return n$1&&a$1==="password"?jsxs(k,{className:e,children:[jsx(P,{ref:d,type:S?"text":"password","data-slot":"input-group-control",className:"pr-0",...s}),jsx(T,{align:"inline-end",children:jsx(g,{type:"button",variant:"ghost",size:"icon-xs","aria-label":S?"Hide password":"Show password","aria-pressed":S,className:"hover:bg-transparent",onMouseDown:G=>G.preventDefault(),onClick:()=>le(G=>!G),children:S?jsx(o,{"data-icon":"inline-start"}):jsx(n,{"data-icon":"inline-start"})})})]}):jsx("input",{ref:d,type:a$1,"data-slot":"input",className:a(I,e),...s})});A.displayName="Input";function Mt({className:t,...e}){return jsx("nav",{role:"navigation","aria-label":"pagination","data-slot":"pagination",className:a("mx-auto flex w-full justify-center",t),...e})}function Gt({className:t,...e}){return jsx("ul",{"data-slot":"pagination-content",className:a("flex items-center gap-1",t),...e})}function _t({...t}){return jsx("li",{"data-slot":"pagination-item",...t})}function h({className:t,isActive:e,disabled:n=false,variant:a$1,size:s="icon",...d}){return jsx(g,{asChild:true,variant:a$1??(e?"outline":"ghost"),size:s,className:a(n&&"pointer-events-none opacity-50",t),children:jsx("a",{"aria-current":e?"page":void 0,"aria-disabled":n?true:void 0,"data-slot":"pagination-link","data-active":e,tabIndex:n?-1:d.tabIndex,...d})})}function Bt({className:t,disabled:e,showText:n=true,size:a$1="default",text:s="Previous",...d$1}){return jsxs(h,{"aria-label":"Go to previous page",disabled:e,size:a$1,variant:"outline",className:a("pl-1.5!",t),...d$1,children:[jsx(d,{"data-icon":"inline-start"}),n?jsx("span",{className:"hidden @min-[640px]/data-table:block",children:s}):null]})}function Lt({className:t,disabled:e,showText:n=true,size:a$1="default",text:s="First",...d}){return jsxs(h,{"aria-label":"Go to first page",disabled:e,size:a$1,variant:"outline",className:a("pl-1.5!",t),...d,children:[jsx(g$1,{"data-icon":"inline-start"}),n?jsx("span",{className:"hidden @min-[640px]/data-table:block",children:s}):null]})}function At({className:t,disabled:e$1,showText:n=true,size:a$1="default",text:s="Next",...d}){return jsxs(h,{"aria-label":"Go to next page",disabled:e$1,size:a$1,variant:"outline",className:a("pr-1.5!",t),...d,children:[n?jsx("span",{className:"hidden @min-[640px]/data-table:block",children:s}):null,jsx(e,{"data-icon":"inline-end"})]})}function Vt({className:t,disabled:e,showText:n=true,size:a$1="default",text:s="Last",...d}){return jsxs(h,{"aria-label":"Go to last page",disabled:e,size:a$1,variant:"outline",className:a("pr-1.5!",t),...d,children:[n?jsx("span",{className:"hidden @min-[640px]/data-table:block",children:s}):null,jsx(h$1,{"data-icon":"inline-end"})]})}function Et({className:t,text:e="More pages",...n}){return jsxs("span",{"aria-hidden":true,"data-slot":"pagination-ellipsis",className:a("flex size-8 items-center justify-center [&_svg:not([class*='size-'])]:size-4",t),...n,children:[jsx(k$1,{}),jsx("span",{className:"sr-only",children:e})]})}function Ht({className:t,children:e,...n}){return jsxs(ScrollArea.Root,{"data-slot":"scroll-area",className:a("relative",t),...n,children:[jsx(ScrollArea.Viewport,{"data-slot":"scroll-area-viewport",className:"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:outline-none",children:e}),jsx(V,{className:"z-100"}),jsx(ScrollArea.Corner,{})]})}function V({className:t,orientation:e="vertical",...n}){return jsx(ScrollArea.ScrollAreaScrollbar,{"data-slot":"scroll-area-scrollbar","data-orientation":e,orientation:e,className:a("flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent",t),...n,children:jsx(ScrollArea.ScrollAreaThumb,{"data-slot":"scroll-area-thumb",className:"relative flex-1 rounded-full"})})}function Ut({...t}){return jsx(Select.Root,{"data-slot":"select",...t})}function Ft({className:t,...e}){return jsx(Select.Group,{"data-slot":"select-group",className:a("scroll-my-1 p-1",t),...e})}function Kt({...t}){return jsx(Select.Value,{"data-slot":"select-value",...t})}function Ot({className:t$1,size:e="default",children:n,...a$1}){return jsxs(Select.Trigger,{"data-slot":"select-trigger","data-size":e,className:a("flex w-fit items-center justify-between gap-1.5 rounded-lg border bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t$1),...a$1,children:[n,jsx(Select.Icon,{asChild:true,children:jsx(t,{className:"pointer-events-none size-4"})})]})}function jt({className:t,children:e,position:n="item-aligned",align:a$1="center",...s}){return jsx(Select.Portal,{children:jsxs(Select.Content,{"data-slot":"select-content","data-align-trigger":n==="item-aligned",className:a("relative z-50 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) animate-none! overflow-x-hidden overflow-y-auto rounded-lg border shadow-md duration-100 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] data-[align-trigger=true]:animate-none 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 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",n==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",t),position:n,align:a$1,...s,children:[jsx(E,{}),jsx(Select.Viewport,{"data-position":n,className:a("data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)",n==="popper"&&""),children:e}),jsx(H,{})]})})}function qt({className:t,...e}){return jsx(Select.Label,{"data-slot":"select-label",className:a("px-1.5 py-1 text-xs opacity-80",t),...e})}function Jt({className:t,children:e,...n}){return jsxs(Select.Item,{"data-slot":"select-item",className:a("relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:outline-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",t),...n,children:[jsx("span",{className:"pointer-events-none absolute right-2 flex size-4 items-center justify-center",children:jsx(Select.ItemIndicator,{children:jsx(b,{className:"pointer-events-none"})})}),jsx(Select.ItemText,{children:e})]})}function Qt({className:t,...e}){return jsx(Select.Separator,{"data-slot":"select-separator",className:a("pointer-events-none -mx-1 my-1 h-px",t),...e})}function E({className:t,...e}){return jsx(Select.ScrollUpButton,{"data-slot":"select-scroll-up-button",className:a("z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4",t),...e,children:jsx(f,{})})}function H({className:t,...e}){return jsx(Select.ScrollDownButton,{"data-slot":"select-scroll-down-button",className:a("z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4",t),...e,children:jsx(c,{})})}function Wt({className:t,...e}){return jsx("div",{"data-slot":"skeleton",className:a("animate-pulse rounded-md",t),...e})}function Xt({className:t,...e}){return jsx("table",{"data-slot":"table",className:a("w-full border-collapse caption-bottom text-sm",t),...e})}function Yt({className:t,...e}){return jsx("thead",{"data-slot":"table-header",className:a("[&_tr]:border-b",t),...e})}function Zt({className:t,...e}){return jsx("tbody",{"data-slot":"table-body",className:a("[&_tr:last-child]:border-0",t),...e})}function $t({className:t,...e}){return jsx("tfoot",{"data-slot":"table-footer",className:a("border-t font-medium [&>tr]:last:border-b-0",t),...e})}function te({className:t,...e}){return jsx("tr",{"data-slot":"table-row",className:a("border-b transition-colors",t),...e})}function ee({className:t,...e}){return jsx("th",{"data-slot":"table-head",className:a("h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0",t),...e})}function oe({className:t,...e}){return jsx("td",{"data-slot":"table-cell",className:a("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0",t),...e})}function ne({className:t,...e}){return jsx("caption",{"data-slot":"table-caption",className:a("mt-4 text-sm opacity-80",t),...e})}function ae({delayDuration:t=0,...e}){return jsx(Tooltip.Provider,{"data-slot":"tooltip-provider",delayDuration:t,...e})}function re({...t}){return jsx(Tooltip.Root,{"data-slot":"tooltip",...t})}function ie({...t}){return jsx(Tooltip.Trigger,{"data-slot":"tooltip-trigger",...t})}function se({className:t,sideOffset:e=0,children:n,...a$1}){return jsx(Tooltip.Portal,{children:jsxs(Tooltip.Content,{"data-slot":"tooltip-content",sideOffset:e,className:a("z-50 inline-flex w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) items-center gap-1.5 rounded-md border px-3 py-1.5 text-xs has-data-[slot=kbd]:pr-1.5 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 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",t),...a$1,children:[n,jsx(Tooltip.Arrow,{className:"z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]"})]})})}var un={Button:g,ButtonGroup:Y,ButtonGroupSeparator:$,ButtonGroupText:Z,Card:tt,CardAction:at,CardContent:rt,CardDescription:nt,CardFooter:it,CardHeader:et,CardTitle:ot,Checkbox:lt,DropdownMenu:dt,DropdownMenuCheckboxItem:gt,DropdownMenuContent:ut,DropdownMenuGroup:mt,DropdownMenuItem:ft,DropdownMenuLabel:ht,DropdownMenuPortal:pt,DropdownMenuRadioGroup:bt,DropdownMenuRadioItem:vt,DropdownMenuSeparator:xt,DropdownMenuShortcut:Pt,DropdownMenuSub:wt,DropdownMenuSubContent:Ct,DropdownMenuSubTrigger:yt,DropdownMenuTrigger:ct,Empty:Rt,EmptyContent:kt,EmptyDescription:It,EmptyHeader:St,EmptyMedia:zt,EmptyTitle:Nt,Input:A,InputGroup:k,InputGroupAddon:T,InputGroupInput:P,InputGroupText:Dt,Pagination:Mt,PaginationContent:Gt,PaginationEllipsis:Et,PaginationFirst:Lt,PaginationItem:_t,PaginationLast:Vt,PaginationLink:h,PaginationNext:At,PaginationPrevious:Bt,ScrollArea:Ht,ScrollBar:V,Select:Ut,SelectContent:jt,SelectGroup:Ft,SelectItem:Jt,SelectLabel:qt,SelectScrollDownButton:H,SelectScrollUpButton:E,SelectSeparator:Qt,SelectTrigger:Ot,SelectValue:Kt,Separator:N,Skeleton:Wt,Table:Xt,TableBody:Zt,TableCaption:ne,TableCell:oe,TableFooter:$t,TableHead:ee,TableHeader:Yt,TableRow:te,Tooltip:re,TooltipContent:se,TooltipProvider:ae,TooltipTrigger:ie};export{Mt as A,h as B,Bt as C,Lt as D,At as E,Vt as F,Ht as G,V as H,Ot as I,jt as J,qt as K,Jt as L,Qt as M,Wt as N,Xt as O,Yt as P,Zt as Q,$t as R,te as S,ee as T,oe as U,ne as V,se as W,un as X,g as a,N as b,tt as c,et as d,nt as e,rt as f,it as g,lt as h,ut as i,ft as j,gt as k,vt as l,ht as m,xt as n,yt as o,Ct as p,Rt as q,St as r,zt as s,Nt as t,It as u,kt as v,k as w,P as x,T as y,A as z};//# sourceMappingURL=chunk-7FUCHMMB.js.map +//# sourceMappingURL=chunk-7FUCHMMB.js.map \ No newline at end of file diff --git a/dist/chunk-LDAX7PX5.js.map b/dist/chunk-7FUCHMMB.js.map similarity index 99% rename from dist/chunk-LDAX7PX5.js.map rename to dist/chunk-7FUCHMMB.js.map index 8f18291..254125f 100644 --- a/dist/chunk-LDAX7PX5.js.map +++ b/dist/chunk-7FUCHMMB.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/components/ui/button.tsx","../src/components/ui/separator.tsx","../src/components/ui/button-group.tsx","../src/components/ui/card.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/empty.tsx","../src/components/ui/input-base.ts","../src/components/ui/input-group.tsx","../src/components/ui/input.tsx","../src/components/ui/pagination.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/select.tsx","../src/components/ui/skeleton.tsx","../src/components/ui/table.tsx","../src/components/ui/tooltip.tsx","../src/core/primitive-ui-kit.ts"],"names":["buttonVariants","cva","Button","className","variant","size","asChild","props","Comp","Slot","jsx","cn","Separator","orientation","decorative","SeparatorPrimitive","buttonGroupVariants","ButtonGroup","ButtonGroupText","ButtonGroupSeparator","Card","CardHeader","CardTitle","CardDescription","CardAction","CardContent","CardFooter","Checkbox","CheckboxPrimitive","IconCheck","DropdownMenu","DropdownMenuPrimitive","DropdownMenuPortal","DropdownMenuTrigger","DropdownMenuContent","align","sideOffset","DropdownMenuGroup","DropdownMenuItem","inset","DropdownMenuCheckboxItem","children","checked","jsxs","DropdownMenuRadioGroup","DropdownMenuRadioItem","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuShortcut","DropdownMenuSub","DropdownMenuSubTrigger","IconChevronRight","DropdownMenuSubContent","Empty","EmptyHeader","emptyMediaVariants","EmptyMedia","EmptyTitle","EmptyDescription","EmptyContent","inputClassName","InputGroup","InputGroupInput","Tt","ref","InputGroupAddon","InputGroupText","Input","passwordToggle","type","showPassword","setShowPassword","event","current","IconEyeOff","IconEye","Pagination","PaginationContent","PaginationItem","PaginationLink","isActive","disabled","PaginationPrevious","showText","text","IconChevronLeft","PaginationFirst","IconChevronsLeft","PaginationNext","PaginationLast","IconChevronsRight","PaginationEllipsis","IconDots","ScrollArea","ScrollAreaPrimitive","ScrollBar","Select","SelectPrimitive","SelectGroup","SelectValue","SelectTrigger","IconSelector","SelectContent","position","SelectScrollUpButton","SelectScrollDownButton","SelectLabel","SelectItem","SelectSeparator","IconChevronUp","IconChevronDown","Skeleton","Table","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","TooltipProvider","delayDuration","TooltipPrimitive","Tooltip","TooltipTrigger","TooltipContent","primitiveUiKit"],"mappings":"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","file":"chunk-LDAX7PX5.js","sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:outline-none active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"\",\n outline: \"\",\n secondary: \"\",\n ghost: \"\",\n destructive: \"\",\n link: \"underline-offset-4 hover:underline\",\n },\n size: {\n default:\n \"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n xs: \"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n icon: \"size-8\",\n \"icon-xs\":\n \"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\":\n \"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg\",\n \"icon-lg\": \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps & {\n asChild?: boolean;\n }) {\n const Comp = asChild ? Slot.Root : \"button\";\n\n return (\n \n );\n}\n\nexport { Button, buttonVariants };\n","import * as React from \"react\";\nimport { Separator as SeparatorPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nexport { Separator };\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Separator } from \"./separator\";\n\nconst buttonGroupVariants = cva(\n \"flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal:\n \"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg!\",\n vertical:\n \"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg!\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n },\n);\n\nfunction ButtonGroup({\n className,\n orientation,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps) {\n return (\n \n );\n}\n\nfunction ButtonGroupText({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n asChild?: boolean;\n}) {\n const Comp = asChild ? Slot.Root : \"div\";\n\n return (\n \n );\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nexport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n buttonGroupVariants,\n};\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n};\n","import * as React from \"react\";\nimport { Checkbox as CheckboxPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\nimport { IconCheck } from \"../../core/icons\";\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n svg]:size-3.5\"\n >\n \n \n \n );\n}\n\nexport { Checkbox };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\nimport { IconCheck, IconChevronRight } from \"../../core/icons\";\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuContent({\n className,\n align = \"start\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n );\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n \n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n inset,\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n}) {\n return (\n \n \n \n \n \n \n {children}\n \n );\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n inset,\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n}) {\n return (\n \n \n \n \n \n \n {children}\n \n );\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n}) {\n return (\n \n );\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n \n );\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n}) {\n return (\n \n {children}\n \n \n );\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n};\n","import { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Empty({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nconst emptyMediaVariants = cva(\n \"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"flex size-8 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction EmptyMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps) {\n return (\n \n );\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n a]:underline [&>a]:underline-offset-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nexport {\n Empty,\n EmptyHeader,\n EmptyTitle,\n EmptyDescription,\n EmptyContent,\n EmptyMedia,\n};\n","export const inputClassName =\n \"h-8 w-full min-w-0 rounded-lg border px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:opacity-70 focus-visible:outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 @min-[768px]/data-table:text-sm\";\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { inputClassName } from \"./input-base\";\n\ntype InputGroupAddonAlign =\n | \"inline-start\"\n | \"inline-end\"\n | \"block-start\"\n | \"block-end\";\n\nfunction InputGroup({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n [data-slot=input-group-addon][data-align=block-start]]:flex-col has-[>[data-slot=input-group-addon][data-align=block-end]]:flex-col has-[>[data-slot=input-group-control]:disabled]:cursor-not-allowed has-[>[data-slot=input-group-control]:disabled]:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nconst InputGroupInput = React.forwardRef<\n HTMLInputElement,\n React.ComponentProps<\"input\">\n>(function InputGroupInput({ className, ...props }, ref) {\n return (\n \n );\n});\n\ntype InputGroupAddonProps = React.ComponentProps<\"div\"> & {\n align?: InputGroupAddonAlign;\n};\n\nfunction InputGroupAddon({\n align = \"inline-start\",\n className,\n ...props\n}: InputGroupAddonProps) {\n return (\n \n );\n}\n\nfunction InputGroupText({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n \n );\n}\n\nInputGroupInput.displayName = \"InputGroupInput\";\n\nexport { InputGroup, InputGroupAddon, InputGroupInput, InputGroupText };\n","import * as React from \"react\";\nimport { IconEye, IconEyeOff } from \"../../core/icons\";\n\nimport { Button } from \"./button\";\nimport { inputClassName } from \"./input-base\";\nimport { InputGroup, InputGroupAddon, InputGroupInput } from \"./input-group\";\nimport { cn } from \"../../lib/utils\";\n\ntype InputProps = React.ComponentProps<\"input\"> & {\n passwordToggle?: boolean;\n};\n\nconst Input = React.forwardRef(function Input(\n { className, passwordToggle = false, type, ...props },\n ref,\n) {\n const [showPassword, setShowPassword] = React.useState(false);\n const canTogglePassword = passwordToggle && type === \"password\";\n\n if (!canTogglePassword) {\n return (\n \n );\n }\n\n return (\n \n \n \n event.preventDefault()}\n onClick={() => setShowPassword((current) => !current)}\n >\n {showPassword ? (\n \n ) : (\n \n )}\n \n \n \n );\n});\n\nInput.displayName = \"Input\";\n\nexport { Input };\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"./button\";\nimport {\n IconChevronsLeft,\n IconChevronsRight,\n IconChevronLeft,\n IconChevronRight,\n IconDots,\n} from \"../../core/icons\";\n\nfunction Pagination({ className, ...props }: React.ComponentProps<\"nav\">) {\n return (\n \n );\n}\n\nfunction PaginationContent({\n className,\n ...props\n}: React.ComponentProps<\"ul\">) {\n return (\n \n );\n}\n\nfunction PaginationItem({ ...props }: React.ComponentProps<\"li\">) {\n return
  • ;\n}\n\ntype PaginationLinkProps = {\n isActive?: boolean;\n disabled?: boolean;\n variant?: React.ComponentProps[\"variant\"];\n} & Pick, \"size\"> &\n React.ComponentProps<\"a\">;\n\nfunction PaginationLink({\n className,\n isActive,\n disabled = false,\n variant,\n size = \"icon\",\n ...props\n}: PaginationLinkProps) {\n return (\n \n \n \n );\n}\n\nfunction PaginationPrevious({\n className,\n disabled,\n showText = true,\n size = \"default\",\n text = \"Previous\",\n ...props\n}: React.ComponentProps & {\n showText?: boolean;\n text?: string;\n}) {\n return (\n \n \n {showText ? (\n {text}\n ) : null}\n \n );\n}\n\nfunction PaginationFirst({\n className,\n disabled,\n showText = true,\n size = \"default\",\n text = \"First\",\n ...props\n}: React.ComponentProps & {\n showText?: boolean;\n text?: string;\n}) {\n return (\n \n \n {showText ? (\n {text}\n ) : null}\n \n );\n}\n\nfunction PaginationNext({\n className,\n disabled,\n showText = true,\n size = \"default\",\n text = \"Next\",\n ...props\n}: React.ComponentProps & {\n showText?: boolean;\n text?: string;\n}) {\n return (\n \n {showText ? (\n {text}\n ) : null}\n \n \n );\n}\n\nfunction PaginationLast({\n className,\n disabled,\n showText = true,\n size = \"default\",\n text = \"Last\",\n ...props\n}: React.ComponentProps & {\n showText?: boolean;\n text?: string;\n}) {\n return (\n \n {showText ? (\n {text}\n ) : null}\n \n \n );\n}\n\nfunction PaginationEllipsis({\n className,\n text = \"More pages\",\n ...props\n}: React.ComponentProps<\"span\"> & { text?: string }) {\n return (\n \n \n {text}\n \n );\n}\n\nexport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n};\n","import * as React from \"react\";\nimport { ScrollArea as ScrollAreaPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n {children}\n \n \n \n \n );\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n );\n}\n\nexport { ScrollArea, ScrollBar };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Select as SelectPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\nimport {\n IconSelector,\n IconCheck,\n IconChevronUp,\n IconChevronDown,\n} from \"../../core/icons\";\n\nfunction Select({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction SelectGroup({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n \n {children}\n \n \n \n \n );\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"item-aligned\",\n align = \"center\",\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n \n {children}\n \n \n \n \n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n \n \n \n {children}\n \n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n","import { cn } from \"../../lib/utils\";\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nexport { Skeleton };\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n \n );\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n \n );\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n \n );\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n tr]:last:border-b-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n \n );\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n \n );\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n \n );\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n \n );\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Tooltip as TooltipPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n {children}\n \n \n \n );\n}\n\nexport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };\n","import type { DataTableUiKit } from \"./ui-kit\";\nimport { Button } from \"../components/ui/button\";\nimport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n} from \"../components/ui/button-group\";\nimport {\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"../components/ui/card\";\nimport { Checkbox } from \"../components/ui/checkbox\";\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from \"../components/ui/dropdown-menu\";\nimport {\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n} from \"../components/ui/empty\";\nimport { Input } from \"../components/ui/input\";\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n InputGroupText,\n} from \"../components/ui/input-group\";\nimport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n} from \"../components/ui/pagination\";\nimport { ScrollArea, ScrollBar } from \"../components/ui/scroll-area\";\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n} from \"../components/ui/select\";\nimport { Separator } from \"../components/ui/separator\";\nimport { Skeleton } from \"../components/ui/skeleton\";\nimport {\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n} from \"../components/ui/table\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../components/ui/tooltip\";\n\nexport const primitiveUiKit: DataTableUiKit = {\n Button,\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n Checkbox,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n Input,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n InputGroupText,\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n ScrollArea,\n ScrollBar,\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n Separator,\n Skeleton,\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n};\n\nexport {\n Button,\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n Checkbox,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n Input,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n InputGroupText,\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n ScrollArea,\n ScrollBar,\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n Separator,\n Skeleton,\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n};\n"]} \ No newline at end of file +{"version":3,"sources":["../src/components/ui/button.tsx","../src/components/ui/separator.tsx","../src/components/ui/button-group.tsx","../src/components/ui/card.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/empty.tsx","../src/components/ui/input-base.ts","../src/components/ui/input-group.tsx","../src/components/ui/input.tsx","../src/components/ui/pagination.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/select.tsx","../src/components/ui/skeleton.tsx","../src/components/ui/table.tsx","../src/components/ui/tooltip.tsx","../src/core/primitive-ui-kit.ts"],"names":["buttonVariants","cva","Button","className","variant","size","asChild","props","Comp","Slot","jsx","cn","Separator","orientation","decorative","SeparatorPrimitive","buttonGroupVariants","ButtonGroup","ButtonGroupText","ButtonGroupSeparator","Card","CardHeader","CardTitle","CardDescription","CardAction","CardContent","CardFooter","Checkbox","CheckboxPrimitive","IconCheck","DropdownMenu","DropdownMenuPrimitive","DropdownMenuPortal","DropdownMenuTrigger","DropdownMenuContent","align","sideOffset","DropdownMenuGroup","DropdownMenuItem","inset","DropdownMenuCheckboxItem","children","checked","jsxs","DropdownMenuRadioGroup","DropdownMenuRadioItem","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuShortcut","DropdownMenuSub","DropdownMenuSubTrigger","IconChevronRight","DropdownMenuSubContent","Empty","EmptyHeader","emptyMediaVariants","EmptyMedia","EmptyTitle","EmptyDescription","EmptyContent","inputClassName","InputGroup","InputGroupInput","Tt","ref","InputGroupAddon","InputGroupText","Input","passwordToggle","type","showPassword","setShowPassword","event","current","IconEyeOff","IconEye","Pagination","PaginationContent","PaginationItem","PaginationLink","isActive","disabled","PaginationPrevious","showText","text","IconChevronLeft","PaginationFirst","IconChevronsLeft","PaginationNext","PaginationLast","IconChevronsRight","PaginationEllipsis","IconDots","ScrollArea","ScrollAreaPrimitive","ScrollBar","Select","SelectPrimitive","SelectGroup","SelectValue","SelectTrigger","IconSelector","SelectContent","position","SelectScrollUpButton","SelectScrollDownButton","SelectLabel","SelectItem","SelectSeparator","IconChevronUp","IconChevronDown","Skeleton","Table","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","TooltipProvider","delayDuration","TooltipPrimitive","Tooltip","TooltipTrigger","TooltipContent","primitiveUiKit"],"mappings":"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","file":"chunk-7FUCHMMB.js","sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:outline-none active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"\",\n outline: \"\",\n secondary: \"\",\n ghost: \"\",\n destructive: \"\",\n link: \"underline-offset-4 hover:underline\",\n },\n size: {\n default:\n \"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n xs: \"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n icon: \"size-8\",\n \"icon-xs\":\n \"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\":\n \"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg\",\n \"icon-lg\": \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps & {\n asChild?: boolean;\n }) {\n const Comp = asChild ? Slot.Root : \"button\";\n\n return (\n \n );\n}\n\nexport { Button, buttonVariants };\n","import * as React from \"react\";\nimport { Separator as SeparatorPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nexport { Separator };\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Separator } from \"./separator\";\n\nconst buttonGroupVariants = cva(\n \"flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal:\n \"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg!\",\n vertical:\n \"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg!\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n },\n);\n\nfunction ButtonGroup({\n className,\n orientation,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps) {\n return (\n \n );\n}\n\nfunction ButtonGroupText({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n asChild?: boolean;\n}) {\n const Comp = asChild ? Slot.Root : \"div\";\n\n return (\n \n );\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nexport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n buttonGroupVariants,\n};\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n};\n","import * as React from \"react\";\nimport { Checkbox as CheckboxPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\nimport { IconCheck } from \"../../core/icons\";\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n svg]:size-3.5\"\n >\n \n \n \n );\n}\n\nexport { Checkbox };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\nimport { IconCheck, IconChevronRight } from \"../../core/icons\";\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuContent({\n className,\n align = \"start\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n );\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n \n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n inset,\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n}) {\n return (\n \n \n \n \n \n \n {children}\n \n );\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n inset,\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n}) {\n return (\n \n \n \n \n \n \n {children}\n \n );\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n}) {\n return (\n \n );\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n \n );\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps & {\n inset?: boolean;\n}) {\n return (\n \n {children}\n \n \n );\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n};\n","import { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Empty({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nconst emptyMediaVariants = cva(\n \"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"flex size-8 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction EmptyMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps) {\n return (\n \n );\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n a]:underline [&>a]:underline-offset-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nexport {\n Empty,\n EmptyHeader,\n EmptyTitle,\n EmptyDescription,\n EmptyContent,\n EmptyMedia,\n};\n","export const inputClassName =\n \"h-8 w-full min-w-0 rounded-lg border px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:opacity-70 focus-visible:outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 @min-[768px]/data-table:text-sm\";\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { inputClassName } from \"./input-base\";\n\ntype InputGroupAddonAlign =\n | \"inline-start\"\n | \"inline-end\"\n | \"block-start\"\n | \"block-end\";\n\nfunction InputGroup({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n [data-slot=input-group-addon][data-align=block-start]]:flex-col has-[>[data-slot=input-group-addon][data-align=block-end]]:flex-col has-[>[data-slot=input-group-control]:disabled]:cursor-not-allowed has-[>[data-slot=input-group-control]:disabled]:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nconst InputGroupInput = React.forwardRef<\n HTMLInputElement,\n React.ComponentProps<\"input\">\n>(function InputGroupInput({ className, ...props }, ref) {\n return (\n \n );\n});\n\ntype InputGroupAddonProps = React.ComponentProps<\"div\"> & {\n align?: InputGroupAddonAlign;\n};\n\nfunction InputGroupAddon({\n align = \"inline-start\",\n className,\n ...props\n}: InputGroupAddonProps) {\n return (\n \n );\n}\n\nfunction InputGroupText({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n \n );\n}\n\nInputGroupInput.displayName = \"InputGroupInput\";\n\nexport { InputGroup, InputGroupAddon, InputGroupInput, InputGroupText };\n","import * as React from \"react\";\nimport { IconEye, IconEyeOff } from \"../../core/icons\";\n\nimport { Button } from \"./button\";\nimport { inputClassName } from \"./input-base\";\nimport { InputGroup, InputGroupAddon, InputGroupInput } from \"./input-group\";\nimport { cn } from \"../../lib/utils\";\n\ntype InputProps = React.ComponentProps<\"input\"> & {\n passwordToggle?: boolean;\n};\n\nconst Input = React.forwardRef(function Input(\n { className, passwordToggle = false, type, ...props },\n ref,\n) {\n const [showPassword, setShowPassword] = React.useState(false);\n const canTogglePassword = passwordToggle && type === \"password\";\n\n if (!canTogglePassword) {\n return (\n \n );\n }\n\n return (\n \n \n \n event.preventDefault()}\n onClick={() => setShowPassword((current) => !current)}\n >\n {showPassword ? (\n \n ) : (\n \n )}\n \n \n \n );\n});\n\nInput.displayName = \"Input\";\n\nexport { Input };\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"./button\";\nimport {\n IconChevronsLeft,\n IconChevronsRight,\n IconChevronLeft,\n IconChevronRight,\n IconDots,\n} from \"../../core/icons\";\n\nfunction Pagination({ className, ...props }: React.ComponentProps<\"nav\">) {\n return (\n \n );\n}\n\nfunction PaginationContent({\n className,\n ...props\n}: React.ComponentProps<\"ul\">) {\n return (\n \n );\n}\n\nfunction PaginationItem({ ...props }: React.ComponentProps<\"li\">) {\n return
  • ;\n}\n\ntype PaginationLinkProps = {\n isActive?: boolean;\n disabled?: boolean;\n variant?: React.ComponentProps[\"variant\"];\n} & Pick, \"size\"> &\n React.ComponentProps<\"a\">;\n\nfunction PaginationLink({\n className,\n isActive,\n disabled = false,\n variant,\n size = \"icon\",\n ...props\n}: PaginationLinkProps) {\n return (\n \n \n \n );\n}\n\nfunction PaginationPrevious({\n className,\n disabled,\n showText = true,\n size = \"default\",\n text = \"Previous\",\n ...props\n}: React.ComponentProps & {\n showText?: boolean;\n text?: string;\n}) {\n return (\n \n \n {showText ? (\n {text}\n ) : null}\n \n );\n}\n\nfunction PaginationFirst({\n className,\n disabled,\n showText = true,\n size = \"default\",\n text = \"First\",\n ...props\n}: React.ComponentProps & {\n showText?: boolean;\n text?: string;\n}) {\n return (\n \n \n {showText ? (\n {text}\n ) : null}\n \n );\n}\n\nfunction PaginationNext({\n className,\n disabled,\n showText = true,\n size = \"default\",\n text = \"Next\",\n ...props\n}: React.ComponentProps & {\n showText?: boolean;\n text?: string;\n}) {\n return (\n \n {showText ? (\n {text}\n ) : null}\n \n \n );\n}\n\nfunction PaginationLast({\n className,\n disabled,\n showText = true,\n size = \"default\",\n text = \"Last\",\n ...props\n}: React.ComponentProps & {\n showText?: boolean;\n text?: string;\n}) {\n return (\n \n {showText ? (\n {text}\n ) : null}\n \n \n );\n}\n\nfunction PaginationEllipsis({\n className,\n text = \"More pages\",\n ...props\n}: React.ComponentProps<\"span\"> & { text?: string }) {\n return (\n \n \n {text}\n \n );\n}\n\nexport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n};\n","import * as React from \"react\";\nimport { ScrollArea as ScrollAreaPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n {children}\n \n \n \n \n );\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n );\n}\n\nexport { ScrollArea, ScrollBar };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Select as SelectPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\nimport {\n IconSelector,\n IconCheck,\n IconChevronUp,\n IconChevronDown,\n} from \"../../core/icons\";\n\nfunction Select({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction SelectGroup({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n \n {children}\n \n \n \n \n );\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"item-aligned\",\n align = \"center\",\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n \n {children}\n \n \n \n \n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n \n \n \n {children}\n \n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n \n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n","import { cn } from \"../../lib/utils\";\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nexport { Skeleton };\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n \n );\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n \n );\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n \n );\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n tr]:last:border-b-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n \n );\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n \n );\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n \n );\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n \n );\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Tooltip as TooltipPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps) {\n return (\n \n \n {children}\n \n \n \n );\n}\n\nexport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };\n","import type { DataTableUiKit } from \"./ui-kit\";\nimport { Button } from \"../components/ui/button\";\nimport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n} from \"../components/ui/button-group\";\nimport {\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"../components/ui/card\";\nimport { Checkbox } from \"../components/ui/checkbox\";\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from \"../components/ui/dropdown-menu\";\nimport {\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n} from \"../components/ui/empty\";\nimport { Input } from \"../components/ui/input\";\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n InputGroupText,\n} from \"../components/ui/input-group\";\nimport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n} from \"../components/ui/pagination\";\nimport { ScrollArea, ScrollBar } from \"../components/ui/scroll-area\";\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n} from \"../components/ui/select\";\nimport { Separator } from \"../components/ui/separator\";\nimport { Skeleton } from \"../components/ui/skeleton\";\nimport {\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n} from \"../components/ui/table\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../components/ui/tooltip\";\n\nexport const primitiveUiKit: DataTableUiKit = {\n Button,\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n Checkbox,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n Input,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n InputGroupText,\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n ScrollArea,\n ScrollBar,\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n Separator,\n Skeleton,\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n};\n\nexport {\n Button,\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n Checkbox,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n Input,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n InputGroupText,\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n ScrollArea,\n ScrollBar,\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n Separator,\n Skeleton,\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n};\n"]} \ No newline at end of file diff --git a/dist/chunk-BQSRJQTY.js b/dist/chunk-BQSRJQTY.js new file mode 100644 index 0000000..dc8bcd7 --- /dev/null +++ b/dist/chunk-BQSRJQTY.js @@ -0,0 +1,2 @@ +import {a as a$1}from'./chunk-K7SNDVV2.js';import {a}from'./chunk-V5A4DWYZ.js';import {j}from'./chunk-4UITEBLL.js';function b(r){return j(r,{CardPanel:a$1,TablePanel:a})}export{b as a};//# sourceMappingURL=chunk-BQSRJQTY.js.map +//# sourceMappingURL=chunk-BQSRJQTY.js.map \ No newline at end of file diff --git a/dist/chunk-HHUJMI3H.js.map b/dist/chunk-BQSRJQTY.js.map similarity index 92% rename from dist/chunk-HHUJMI3H.js.map rename to dist/chunk-BQSRJQTY.js.map index 575b6e3..6f5ad32 100644 --- a/dist/chunk-HHUJMI3H.js.map +++ b/dist/chunk-BQSRJQTY.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/core/data-table/create-virtual-data-table.ts"],"names":["createVirtualDataTable","ui","createDataTableWithPanels","DataTableVirtualCardPanel","DataTableVirtualTablePanel"],"mappings":"mHAKO,SAASA,CAAAA,CAAuBC,CAAAA,CAAoB,CACzD,OAAOC,CAAAA,CAA0BD,CAAAA,CAAI,CACnC,SAAA,CAAWE,GAAAA,CACX,UAAA,CAAYC,CACd,CAAC,CACH","file":"chunk-HHUJMI3H.js","sourcesContent":["import type { DataTableUiKit } from \"../ui-kit\";\nimport { createDataTableWithPanels } from \"./create-data-table\";\nimport { DataTableVirtualCardPanel } from \"./data-table-virtual-card-panel\";\nimport { DataTableVirtualTablePanel } from \"./data-table-virtual-table-panel\";\n\nexport function createVirtualDataTable(ui: DataTableUiKit) {\n return createDataTableWithPanels(ui, {\n CardPanel: DataTableVirtualCardPanel,\n TablePanel: DataTableVirtualTablePanel,\n });\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../src/core/data-table/create-virtual-data-table.ts"],"names":["createVirtualDataTable","ui","createDataTableWithPanels","DataTableVirtualCardPanel","DataTableVirtualTablePanel"],"mappings":"mHAKO,SAASA,CAAAA,CAAuBC,CAAAA,CAAoB,CACzD,OAAOC,CAAAA,CAA0BD,CAAAA,CAAI,CACnC,SAAA,CAAWE,GAAAA,CACX,UAAA,CAAYC,CACd,CAAC,CACH","file":"chunk-BQSRJQTY.js","sourcesContent":["import type { DataTableUiKit } from \"../ui-kit\";\nimport { createDataTableWithPanels } from \"./create-data-table\";\nimport { DataTableVirtualCardPanel } from \"./data-table-virtual-card-panel\";\nimport { DataTableVirtualTablePanel } from \"./data-table-virtual-table-panel\";\n\nexport function createVirtualDataTable(ui: DataTableUiKit) {\n return createDataTableWithPanels(ui, {\n CardPanel: DataTableVirtualCardPanel,\n TablePanel: DataTableVirtualTablePanel,\n });\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-BYTOUBQ7.js b/dist/chunk-BYTOUBQ7.js deleted file mode 100644 index 938688c..0000000 --- a/dist/chunk-BYTOUBQ7.js +++ /dev/null @@ -1,3 +0,0 @@ -import {i,a,h,g}from'./chunk-GSCYQ624.js';import*as M from'react';import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {flexRender}from'@tanstack/react-table';var Me=Symbol("data-table-loading-row"),Bt=50;function Gt(e,t,a){if(e===true)return Object.fromEntries(a.flatMap(n=>n===t?[]:[[n,true]]));let r={...e};return r[t]?delete r[t]:r[t]=true,r}function Ft(e){return Array.from({length:e},(t,a)=>({[Me]:true,index:a}))}function se(e){return !!(e&&typeof e=="object"&&Me in e)}function Wt(e){return `__loading__${e}`}function jt(e){if(typeof e.meta?.minWidth=="number")return e.meta.minWidth;if(Object.prototype.hasOwnProperty.call(e,"minSize")){let t=e.minSize;if(typeof t=="number")return t}}function rt(e){if("columns"in e&&Array.isArray(e.columns))return {...e,columns:e.columns.map(a=>rt(a))};let t=e.meta?.filter;return !t||e.filterFn?e:{...e,filterFn:(a,r,n)=>{if(!Pe(n))return true;let l=a.getValue(r),s=t.getOptionValue?.(l,a.original)??ee(l);if(t.type==="multi")return Array.isArray(n)?n.map(String).includes(s):true;if(t.type==="select"||t.type==="boolean")return s===String(n);if(t.type==="numberRange"){let d=Le(n),p=Number(s),c=d.from===""?void 0:Number(d.from),w=d.to===""?void 0:Number(d.to);return Number.isNaN(p)?false:(c===void 0||Number.isNaN(c)||p>=c)&&(w===void 0||Number.isNaN(w)||p<=w)}if(t.type==="dateRange"){let d=Le(n),p=lt(s);return p?(!d.from||p>=String(d.from))&&(!d.to||p<=String(d.to)):false}let o=s.toLowerCase(),C=String(n).toLowerCase();switch(t.operator??"contains"){case "equals":return o===C;case "startsWith":return o.startsWith(C);case "endsWith":return o.endsWith(C);default:return o.includes(C)}}}}function $t(e){let t=new Map,a=(r,n)=>{r.forEach((l,s)=>{if("columns"in l&&l.columns?.length){let o=l;a(l.columns,[...n,{id:ie(l),freeReordering:o.freeReordering===true}]);return}t.set(ie(l),n);});};return a(e,[]),t}function qt(e,t,a){let r=a.get(e)??[],n=a.get(t)??[],l=0;for(;ls.freeReordering)}function Te(e){let t=[],a=r=>{r.forEach((n,l)=>{if("columns"in n&&n.columns?.length){a(n.columns);return}t.push({column:n,index:l});});};return a(e),t}function Xt(e){return e.map(t=>typeof t=="string"?{label:He(t),value:t}:t)}function ee(e){if(e==null)return "";if(e instanceof Date)return e.toISOString();if(typeof e=="object")try{return JSON.stringify(e)}catch{return ""}return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint"||typeof e=="symbol"?String(e):""}function Pe(e){return Array.isArray(e)?e.length>0:e&&typeof e=="object"?"from"in e||"to"in e?Object.values(e).some(Pe):true:e!=null&&e!==""}function Le(e){if(!e||typeof e!="object"||Array.isArray(e))return {};let t=e;return {...typeof t.from=="string"||typeof t.from=="number"?{from:t.from}:{},...typeof t.to=="string"||typeof t.to=="number"?{to:t.to}:{}}}function lt(e){if(e instanceof Date&&!Number.isNaN(e.getTime()))return e.toISOString().slice(0,10);let t=ee(e);if(/^\d{4}-\d{2}-\d{2}/.test(t))return t.slice(0,10);let a=Date.parse(t);return Number.isNaN(a)?"":new Date(a).toISOString().slice(0,10)}function Jt(e,t,a){let r=ee(a).trim().toLowerCase();return r?ee(e.getValue(t)).toLowerCase().includes(r):true}async function Qt({csvExport:e,table:t}){if(e===false)return;let a=e===true?{}:e,r=a.filename??"data-table.csv",n=a.scope??"filtered",l=a.columns?new Set(a.columns):void 0,s=t.getVisibleLeafColumns().filter(m=>!Ce(m.id)&&m.id!=="__spacer__"&&(!l||l.has(m.id))),o=it(t,n),C=[];(a.includeHeaders??true)&&C.push(s.map(m=>typeof m.columnDef.header=="string"?m.columnDef.header:He(m.id)));for(let m of o)C.push(s.map(S=>{let P=m.getValue(S.id);return a.getCellValue?a.getCellValue({row:m.original,rowId:m.id,columnId:S.id,value:P}):P}));let d=a.lineEnding??`\r -`,p=a.escapeFormulaValues??true,c=C.map(m=>m.map(S=>st(S,p)).join(",")).join(d);if(a.onExport){await a.onExport({csv:c,filename:r,rows:o.map(m=>m.original),scope:n});return}if(typeof window>"u")return;let w=new Blob([c],{type:"text/csv;charset=utf-8"}),y=window.URL.createObjectURL(w),I=window.document.createElement("a");I.href=y,I.download=r,I.click(),window.URL.revokeObjectURL(y);}function it(e,t){switch(t){case "page":return e.getRowModel().rows;case "selected":return e.getPrePaginationRowModel().rows.filter(a=>a.getIsSelected());case "all":return e.getCoreRowModel().rows;default:return e.getPrePaginationRowModel().rows}}function st(e,t){let a=ee(e);return t&&typeof e=="string"&&/^[\t\r ]*[=+\-@]/.test(e)&&(a=`'${a}`),/[",\n\r]/.test(a)?`"${a.replace(/"/g,'""')}"`:a}function Zt(e){let t=[],a=[];for(let{column:r,index:n}of Te(e)){let l=ie(r);r.meta?.fixed==="left"&&t.push(l),r.meta?.fixed==="right"&&a.push(l);}return {left:t,right:a}}function ie(e,t){if(e.id)return e.id;let a=ct(e);if(a)return a.replace(/\./g,"_");if(typeof e.header=="string")return e.header;throw new Error("Data table columns using an accessor function or non-string header must define a unique id.")}var dt=new Set(["__select__","__expand__","__actions__","__spacer__"]);function Yt(e){let t=new Set,a=r=>{r.forEach((n,l)=>{let s=ie(n);if(dt.has(s))throw new Error(`Data table column id "${s}" is reserved for an internal column.`);if(t.has(s))throw new Error(`Duplicate data table column id "${s}".`);t.add(s),"columns"in n&&n.columns?.length&&a(n.columns);});};a(e);}function ct(e){if("accessorKey"in e&&typeof e.accessorKey=="string")return e.accessorKey}function ea(e){let t=e.getIsPinned();return t||(e.id==="__select__"||e.id==="__expand__"?"left":e.id==="__actions__"?"right":e.columnDef.meta?.fixed)}function ta(e,t,a$1){let r=a$1?.isUtilityColumn??false;return a("sticky backdrop-blur box-border",t.pinnedColumn,!r&&"border-dotted",r?t.pinnedUtilityColumn:void 0,e==="left"?"border-r-1":"border-l")}function Ce(e){return e==="__select__"||e==="__expand__"||e==="__actions__"}var ut=["[data-row-click-ignore='true']","a[href]","button","input","select","summary","textarea","[contenteditable='true']","[role='button']","[role='link']"].join(",");function ye(e,t){if(!(e instanceof Element))return false;let a=e.closest(ut);return !!(a&&a!==t&&t.contains(a))}function Ne(e){switch(e){case "compact":return "h-8 py-1";case "spacious":return "h-14 py-4";default:return}}function he(e){switch(e){case "compact":return "py-1.5";case "spacious":return "py-4";default:return}}function aa(e,t,a){let r=e.includes(t)?e.slice():[...e,t],n=r.indexOf(t),l=r.indexOf(a);if(n<0||l<0||n===l)return r;let[s]=r.splice(n,1);return r.splice(l,0,s),r}function He(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,t=>t.toUpperCase())}function ra({columns:e,editableRows:t,onError:a}){let[r,n]=M.useState(null),[l,s]=M.useState({}),o=M.useRef(l),[C,d]=M.useState(false);M.useEffect(()=>{o.current=l;},[l]);let p=M.useCallback(()=>{n(null),s({});},[]),c=M.useCallback((y,I)=>{let m=t?.getInitialValues?.(y)??mt(y,e);s(m),n(I);},[e,t]),w=M.useCallback(async y=>{if(t){d(true);try{await t.onSaveRow(y,o.current),M.startTransition(p);}catch(I){a?.(I,y);}finally{d(false);}}},[p,t,a]);return {cancelEditing:p,draftValues:l,editingRowId:r,isSavingEdit:C,saveEdit:w,setDraftValues:s,setEditingRowId:n,startEditingRow:c}}function mt(e,t){return Te(t).reduce((a,{column:r})=>("accessorKey"in r&&typeof r.accessorKey=="string"&&(a[r.accessorKey]=e[r.accessorKey]),a),{})}function _e(e,t,a,r){let{Checkbox:n,Input:l}=r,s=e.column.columnDef,o=s.meta,C="accessorKey"in s&&typeof s.accessorKey=="string"?s.accessorKey:e.column.id,d=t[C],p=w=>{a(y=>({...y,[C]:w}));};if(o?.renderEditCell)return o.renderEditCell({cell:e,row:e.row.original,value:e.getValue(),draftValue:d,setDraftValue:p});let c=ft(o?.type,d);return typeof d=="boolean"?jsx(n,{checked:d,onCheckedChange:w=>{p(w===true);}}):jsx(l,{type:c,value:o?.formatEditValue?o.formatEditValue(d,e):pt(d,c),onChange:w=>{let y=w.target.value,I=o?.parseEditValue?o.parseEditValue(y,e):bt(y,c,d);p(I);}})}function ft(e,t){return e==="numeric"||typeof t=="number"?"number":e==="date"||t instanceof Date?"datetime-local":"text"}function pt(e,t="text"){return e==null?"":e instanceof Date?t==="datetime-local"?e.toISOString().slice(0,16):e.toISOString():typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint"?String(e):""}function bt(e,t,a){return t==="number"?e===""?null:Number(e):t==="datetime-local"?e?a instanceof Date?new Date(e):e:null:e}function R({children:e,viewBox:t="0 0 24 24",...a}){return jsx("svg",{"aria-hidden":"true",focusable:"false",width:"1em",height:"1em",viewBox:t,fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",...a,children:e})}function da(e){return jsxs(R,{...e,children:[jsx("path",{d:"M4 7h4"}),jsx("path",{d:"M14 7h6"}),jsx("path",{d:"M10 5v4"}),jsx("path",{d:"M4 17h10"}),jsx("path",{d:"M18 17h2"}),jsx("path",{d:"M16 15v4"})]})}function ca(e){return jsx(R,{...e,children:jsx("path",{d:"M5 12l4 4L19 6"})})}function ze(e){return jsx(R,{...e,children:jsx("path",{d:"M6 9l6 6 6-6"})})}function ua(e){return jsx(R,{...e,children:jsx("path",{d:"M15 6l-6 6 6 6"})})}function ma(e){return jsx(R,{...e,children:jsx("path",{d:"M9 6l6 6-6 6"})})}function fa(e){return jsx(R,{...e,children:jsx("path",{d:"M6 15l6-6 6 6"})})}function pa(e){return jsxs(R,{...e,children:[jsx("path",{d:"M11 6l-6 6 6 6"}),jsx("path",{d:"M19 6l-6 6 6 6"})]})}function ba(e){return jsxs(R,{...e,children:[jsx("path",{d:"M5 6l6 6-6 6"}),jsx("path",{d:"M13 6l6 6-6 6"})]})}function Ue(e){return jsxs(R,{...e,children:[jsx("circle",{cx:"12",cy:"12",r:"9"}),jsx("path",{d:"M12 7v5l3 2"})]})}function Da(e){return jsxs(R,{...e,children:[jsx("ellipse",{cx:"12",cy:"5",rx:"7",ry:"3"}),jsx("path",{d:"M5 5v6c0 1.7 3.1 3 7 3s7-1.3 7-3V5"}),jsx("path",{d:"M5 11v6c0 1.7 3.1 3 7 3s7-1.3 7-3v-6"})]})}function ga(e){return jsxs(R,{...e,children:[jsx("path",{d:"M5 12h.01"}),jsx("path",{d:"M12 12h.01"}),jsx("path",{d:"M19 12h.01"})]})}function Ta(e){return jsxs(R,{...e,children:[jsx("path",{d:"M12 3v12"}),jsx("path",{d:"M7 10l5 5 5-5"}),jsx("path",{d:"M5 21h14"})]})}function Ca(e){return jsxs(R,{...e,children:[jsx("path",{d:"M4 20h4l11-11-4-4L4 16v4z"}),jsx("path",{d:"M13 7l4 4"})]})}function ya(e){return jsxs(R,{...e,children:[jsx("path",{d:"M2 12s4-7 10-7 10 7 10 7-4 7-10 7S2 12 2 12z"}),jsx("circle",{cx:"12",cy:"12",r:"3"})]})}function ha(e){return jsxs(R,{...e,children:[jsx("path",{d:"M3 3l18 18"}),jsx("path",{d:"M10.6 10.6a2 2 0 0 0 2.8 2.8"}),jsx("path",{d:"M9.9 5.3A10.5 10.5 0 0 1 12 5c6 0 10 7 10 7a18 18 0 0 1-3.2 4"}),jsx("path",{d:"M6.6 6.6C3.8 8.4 2 12 2 12s4 7 10 7a10.6 10.6 0 0 0 4.1-.8"})]})}function wa(e){return jsxs(R,{...e,children:[jsx("path",{d:"M4 13l2-8h12l2 8"}),jsx("path",{d:"M4 13h5l2 3h2l2-3h5v6H4z"})]})}function Sa(e){return jsxs(R,{...e,children:[jsx("path",{d:"M4 4h6v6H4z"}),jsx("path",{d:"M14 4h6v6h-6z"}),jsx("path",{d:"M4 14h6v6H4z"}),jsx("path",{d:"M14 14h6v6h-6z"})]})}function Ra(e){return jsxs(R,{...e,children:[jsx("path",{d:"M8 6h13"}),jsx("path",{d:"M8 12h13"}),jsx("path",{d:"M8 18h13"}),jsx("path",{d:"M3 6h.01"}),jsx("path",{d:"M3 12h.01"}),jsx("path",{d:"M3 18h.01"})]})}function Ia(e){return jsxs(R,{...e,children:[jsx("circle",{cx:"11",cy:"11",r:"7"}),jsx("path",{d:"M16 16l5 5"})]})}function Ve(e){return jsxs(R,{...e,children:[jsx("path",{d:"M8 9l4-4 4 4"}),jsx("path",{d:"M16 15l-4 4-4-4"})]})}function ka(e){return jsxs(R,{...e,children:[jsx("path",{d:"M18 6L6 18"}),jsx("path",{d:"M6 6l12 12"})]})}function Ke(e,t,a$1){let r=e.column.columnDef,n=r.meta,l=e.getValue(),s=a$1?.hasCustomCell??false,o=s&&r.cell?flexRender(r.cell,e):void 0,C=Tt(o),d=gt({context:e,useCustomOverflowDefaults:a$1?.useCustomOverflowDefaults??false,value:l});if(n?.type==="date"&&!s)return jsxs("div",{"data-dtp-slot":"data-table-cell-content","data-dtp-overflow":d,className:a(Oe(d),"flex w-full min-w-0 items-center justify-end gap-2"),children:[jsx(Ue,{className:a("shrink-0",t?.mutedText??"opacity-70")}),jsx("span",{className:"min-w-0 truncate",children:Ct(l)})]});let p=o!=null&&o!==""?o:l==null||l===""?jsx("span",{className:t?.mutedText??"opacity-70",children:"-"}):yt(l);return jsx("div",{"data-dtp-slot":"data-table-cell-content","data-dtp-overflow":d,className:a(Oe(d),"w-full min-w-0 max-w-full",C&&"[&>*]:max-w-full [&>*]:min-w-0"),children:p})}function gt({context:e,useCustomOverflowDefaults:t,value:a}){let r=e.column.columnDef,n=typeof r.meta?.overflow=="function"?r.meta.overflow({row:e.row.original,value:a}):r.meta?.overflow;return n||(t?"clip":"truncate")}function Oe(e){switch(e){case "clip":return "block overflow-hidden whitespace-nowrap";case "wrap":return "block overflow-hidden whitespace-normal break-words";case "visible":return "block overflow-visible whitespace-normal";default:return "block overflow-hidden text-ellipsis whitespace-nowrap"}}function Tt(e){return e==null?false:M.isValidElement(e)||Array.isArray(e)||typeof e=="object"}function Ct(e){return typeof e=="number"?new Date(e*1e3).toLocaleString():typeof e=="string"&&e?e:"-"}function yt(e){if(e instanceof Date)return e.toLocaleString();if(typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint")return String(e);try{return JSON.stringify(e)}catch{return "-"}}function wt({columnLayouts:e,components:t,currentDensity:a$1,draftValues:r,dragAndDrop:n,explicitCustomCellColumnIds:l,getRowClassName:s,isDraggable:o,isDetailExpanded:C,isEditing:d,isExpanded:p,isInitialLoadingRow:c,isSelected:w,loadingState:y,onRowClick:I,pinnedPosition:m,originalRow:S,detailPanel:P,row:D,rowIndex:x,setDraftValues:V,stripedRows:_,uiClassNames:L,visibleCells:N,visibleLeafColumnCount:F}){let{Checkbox:u,Input:k,Skeleton:O,TableCell:z,TableRow:U}=t,W=N.find(f=>!e.get(f.column.id)?.isUtilityColumn)?.column.id;return jsxs(M.Fragment,{children:[jsx(U,{"data-row-id":D.id,"data-tree-depth":!c&&D.depth>0?D.depth:void 0,"data-dtp-slot":m?"data-table-pinned-row":"data-table-row","data-row-pinned":m,draggable:c?false:o,"data-loading":y?.isLoading||void 0,"data-row-index":c?void 0:x,"data-row-parity":_&&!c?x%2===0?"odd":"even":void 0,"data-state":c?void 0:w?"selected":void 0,tabIndex:I&&!c?0:void 0,className:a(!c&&s?.(S,{row:S,rowId:D.id,rowIndex:x,isEditing:d,isExpanded:p,isLoading:!!y?.isLoading,isSelected:w,pinnedPosition:m??false}),L.row,m==="top"&&a("border-b-2",L.rowPinnedTop),m==="bottom"&&a("border-t-2",L.rowPinnedBottom),_&&!c&&(x%2===0?L.rowOdd:L.rowEven),w&&!c&&L.rowSelected,I&&!c&&"cursor-pointer",c&&"pointer-events-none"),onClick:f=>{c||ye(f.target,f.currentTarget)||I?.({row:S,rowId:D.id});},onKeyDown:f=>{c||!I||f.key!=="Enter"&&f.key!==" "||ye(f.target,f.currentTarget)||(f.preventDefault(),I({row:S,rowId:D.id}));},onDragStart:f=>{c||n?.onRowDragStart?.({row:S,rowId:D.id,event:f});},onDragEnd:f=>{c||n?.onRowDragEnd?.({row:S,rowId:D.id,event:f});},children:N.map(f=>{let H=f.column.columnDef.meta,j=f.getContext(),K=f.getValue(),A=e.get(f.column.id),J=A?.isSelectionColumn??false,Q=A?.isExpansionColumn??false,Z=A?.isActionsColumn??false,te=A?.isSpacerColumn??false,me=i(H?.hideOn),fe=c||se(S)?void 0:typeof H?.cellClassName=="function"?H.cellClassName({row:S,value:K}):H?.cellClassName;return jsx(z,{className:a("border-b",he(a$1),L.cellBorder,A?.utilityClassName,A?.isSpacerColumn&&"border-b-0 bg-transparent p-0",A?.pinnedClassName,me,h(j),H?.responsiveClassName,fe),style:A?.cellStyle,children:jsx("div",{"data-row-click-ignore":J||Q||Z?"true":void 0,className:"min-w-0 max-w-full",style:D.depth>0&&f.column.id===W?{paddingInlineStart:`${D.depth}rem`}:void 0,children:y?.isLoading?H?.skeleton?.(j)??y.skeleton??jsx(O,{className:a("h-4 rounded",H?.type==="numeric"?"ml-auto w-16":H?.type==="date"?"ml-auto w-28":"w-full")}):d&&f.column.id!=="__select__"&&f.column.id!=="__expand__"&&f.column.id!=="__actions__"?_e(j,r,V,{Checkbox:u,Input:k}):Ke(j,L,{hasCustomCell:l.has(f.column.id)||J||Q||Z||te,useCustomOverflowDefaults:l.has(f.column.id)||J||Q||Z||te})})},f.id)})}),!c&&P&&C?jsx(U,{"data-dtp-slot":"data-table-detail-panel-row","data-row-pinned":m,children:jsx(z,{colSpan:Math.max(1,F),className:a("border-b",he(a$1),L.cellBorder),children:P.render({row:S,rowId:D.id,tableRow:D})})}):null]})}function St(e,t){return e.row.id===t.row.id&&e.row.original===t.row.original&&e.rowIndex===t.rowIndex&&e.isSelected===t.isSelected&&e.isInitialLoadingRow===t.isInitialLoadingRow&&e.isEditing===t.isEditing&&e.isExpanded===t.isExpanded&&e.isDraggable===t.isDraggable&&Rt(e.loadingState,t.loadingState)&&It(e.visibleCells,t.visibleCells)&&e.components===t.components&&kt(e.columnLayouts,t.columnLayouts,t.visibleCells)&&e.currentDensity===t.currentDensity&&e.detailPanel===t.detailPanel&&e.isDetailExpanded===t.isDetailExpanded&&e.pinnedPosition===t.pinnedPosition&&e.onRowClick===t.onRowClick&&e.dragAndDrop===t.dragAndDrop&&e.getRowClassName===t.getRowClassName&&e.stripedRows===t.stripedRows&&e.uiClassNames===t.uiClassNames&&e.explicitCustomCellColumnIds===t.explicitCustomCellColumnIds&&(!e.isEditing||e.draftValues===t.draftValues)}function Rt(e,t){return e?.isLoading===t?.isLoading&&e?.skeleton===t?.skeleton}function It(e,t){return e.length===t.length&&e.every((a,r)=>{let n=t[r];return n?.id===a.id&&n.column.id===a.column.id})}function kt(e,t,a){return a.every(r=>{let n=e.get(r.column.id),l=t.get(r.column.id);return n?.fixedSide===l?.fixedSide&&n?.isActionsColumn===l?.isActionsColumn&&n?.isExpansionColumn===l?.isExpansionColumn&&n?.isSelectionColumn===l?.isSelectionColumn&&n?.isSpacerColumn===l?.isSpacerColumn&&n?.isUtilityColumn===l?.isUtilityColumn&&n?.pinnedClassName===l?.pinnedClassName&&n?.utilityClassName===l?.utilityClassName&&xt(n?.cellStyle,l?.cellStyle)})}function xt(e,t){return e?.width===t?.width&&e?.minWidth===t?.minWidth&&e?.maxWidth===t?.maxWidth&&e?.left===t?.left&&e?.right===t?.right}var Be=M.memo(wt,St);function Lt({columnGroupHeaderHeight:e,currentDensity:t,currentSorting:a$1,dir:r,draggedColumnIdRef:n,enableColumnReordering:l,enableColumnResizing:s,header:o,headerGroupHeaders:C,layout:d,primeColumnForResize:p,reorderColumn:c,resizeColumnLabel:w,resetColumnSize:y,TableHead:I,uiClassNames:m}){let S=o.column.columnDef.meta,P=M.useId(),D=!o.isPlaceholder&&o.subHeaders.length>0,x=D?o.column.columnDef:void 0,V=o.column.getCanSort(),_=o.column.getIsSorted(),L=a$1.findIndex(u=>u.id===o.column.id),N=l&&!o.isPlaceholder&&!D&&!d.isUtilityColumn&&!d.isSpacerColumn,F=i(S?.hideOn);return jsxs(I,{colSpan:o.colSpan,scope:o.isPlaceholder?void 0:D?"colgroup":"col","aria-hidden":o.isPlaceholder||void 0,"aria-description":D?x?.description:void 0,"aria-labelledby":!o.isPlaceholder&&!d.isUtilityColumn&&!d.isSpacerColumn?P:void 0,"data-column-id":o.column.id,"data-column-group-id":D?x?.id:void 0,"data-header-depth":o.depth,"data-dtp-slot":D?"data-table-column-group-header":"data-table-column-header",className:a("relative border-b",Ne(t),D&&m.columnGroupHeader,d.utilityClassName,d.isSpacerColumn&&"border-b-1 bg-transparent p-0",d.pinnedClassName,F,g(o.getContext()),S?.headerClassName,D&&x?.headerClassName,S?.responsiveClassName),style:{...S?.headerStyle,...D?x?.headerStyle:void 0,...D&&(x?.headerHeight??e)!==void 0?{height:x?.headerHeight??e}:void 0,...d.headerStyle},title:D?x?.description:void 0,"aria-sort":_==="asc"?"ascending":_==="desc"?"descending":V?"none":void 0,draggable:N,tabIndex:N&&!V&&!(s&&o.column.getCanResize())?0:void 0,onDragStart:N?u=>{n.current=o.column.id,u.dataTransfer.effectAllowed="move";}:void 0,onDragOver:N?u=>{u.preventDefault(),u.dataTransfer.dropEffect="move";}:void 0,onDrop:N?u=>{u.preventDefault();let k=n.current;n.current=null,k&&c(k,o.column.id);}:void 0,onKeyDown:N?u=>{if(!u.altKey||u.key!=="ArrowLeft"&&u.key!=="ArrowRight")return;u.preventDefault();let k=C.filter(U=>!Ce(U.column.id)&&U.column.id!=="__spacer__"),O=k.findIndex(U=>U.column.id===o.column.id),z=k[u.key==="ArrowLeft"!=(r==="rtl")?O-1:O+1];z&&c(o.column.id,z.column.id);}:void 0,children:[o.isPlaceholder?null:V?jsxs("button",{type:"button",className:a("flex w-full items-center gap-2 font-medium",g(o.getContext())),onClick:o.column.getToggleSortingHandler(),children:[jsx("span",{id:P,className:"truncate",children:flexRender(o.column.columnDef.header,o.getContext())}),_?jsxs(Fragment,{children:[jsx(ze,{className:a("size-4 shrink-0 transition-transform",_==="desc"?"rotate-0":"rotate-180")}),a$1.length>1&&L>=0?jsx("span",{className:"inline-flex size-4 shrink-0 items-center justify-center rounded-full text-[10px] leading-none",children:L+1}):null]}):jsx(Ve,{className:a("size-4 shrink-0",m.headerSortIcon??"opacity-70")})]}):d.isUtilityColumn||d.isSpacerColumn?flexRender(o.column.columnDef.header,o.getContext()):jsx("span",{id:P,children:flexRender(o.column.columnDef.header,o.getContext())}),s&&!o.isPlaceholder&&o.column.getCanResize()?jsx("div",{"aria-label":w,"aria-orientation":"vertical","aria-valuemax":Nt(o),"aria-valuemin":Pt(o),"aria-valuenow":Math.round(o.getSize()),role:"separator",tabIndex:0,onDoubleClick:()=>{for(let u of G(o))y(u.column.id);},onMouseDown:u=>{for(let k of G(o))p(k.column.id,k.getSize());o.getResizeHandler()(u);},onTouchStart:u=>{for(let k of G(o))p(k.column.id,k.getSize());o.getResizeHandler()(u);},onKeyDown:u=>{if(u.altKey)return;if(u.key==="Home"){u.preventDefault();for(let O of G(o))y(O.column.id);return}if(u.key!=="ArrowLeft"&&u.key!=="ArrowRight")return;u.preventDefault(),u.stopPropagation();let k=u.key==="ArrowRight"!=(r==="rtl");Ht(o,(k?1:-1)*(u.shiftKey?25:10));},className:a("absolute inset-y-0 z-50 h-full w-3 cursor-col-resize touch-none select-none ltr:right-0 ltr:translate-x-1/2 rtl:left-0 rtl:-translate-x-1/2 after:absolute after:top-0 after:left-1/2 after:h-full after:w-px after:-translate-x-1/2",m.resizeHandle??"after:bg-current after:opacity-20 hover:after:opacity-70",o.column.getIsResizing()&&(m.resizeHandleActive??"after:opacity-100"))}):null]},o.id)}function Mt(e,t){return e.header.id===t.header.id&&e.header.column.id===t.header.column.id&&e.header.column.columnDef===t.header.column.columnDef&&e.header.colSpan===t.header.colSpan&&e.header.isPlaceholder===t.header.isPlaceholder&&At(e.header,t.header)&&e.currentDensity===t.currentDensity&&e.columnGroupHeaderHeight===t.columnGroupHeaderHeight&&e.dir===t.dir&&e.enableColumnReordering===t.enableColumnReordering&&e.enableColumnResizing===t.enableColumnResizing&&e.TableHead===t.TableHead&&e.uiClassNames===t.uiClassNames&&e.draggedColumnIdRef===t.draggedColumnIdRef&&e.primeColumnForResize===t.primeColumnForResize&&e.reorderColumn===t.reorderColumn&&e.resizeColumnLabel===t.resizeColumnLabel&&e.resetColumnSize===t.resetColumnSize&&e.selectionState===t.selectionState&&_t(e.currentSorting,t.currentSorting)&&zt(e.headerGroupHeaders,t.headerGroupHeaders)&&Ut(e.layout,t.layout)}function G(e){return e.subHeaders.length?e.getLeafHeaders().filter(t=>!t.subHeaders.length):[e]}function Pt(e){return G(e).reduce((t,a)=>t+(a.column.columnDef.minSize??20),0)}function Nt(e){return G(e).reduce((t,a)=>t+(a.column.columnDef.maxSize??Number.MAX_SAFE_INTEGER),0)}function Ht(e,t){let a=G(e),r=t/a.length;e.getContext().table.setColumnSizing(n=>{let l={...n};for(let s of a){let o=s.column,C=o.columnDef.minSize??20,d=o.columnDef.maxSize??Number.MAX_SAFE_INTEGER;l[o.id]=Math.min(d,Math.max(C,o.getSize()+r));}return l});}function At(e,t){return e.subHeaders.length===t.subHeaders.length&&e.subHeaders.every((a,r)=>t.subHeaders[r]?.id===a.id)}function _t(e,t){return e.length===t.length&&e.every((a,r)=>{let n=t[r];return n?.id===a.id&&n.desc===a.desc})}function zt(e,t){return e.length===t.length&&e.every((a,r)=>t[r]?.id===a.id)}function Ut(e,t){return e.fixedSide===t.fixedSide&&e.isSpacerColumn===t.isSpacerColumn&&e.isUtilityColumn===t.isUtilityColumn&&e.pinnedClassName===t.pinnedClassName&&e.utilityClassName===t.utilityClassName&&e.headerStyle?.width===t.headerStyle?.width&&e.headerStyle?.minWidth===t.headerStyle?.minWidth&&e.headerStyle?.maxWidth===t.headerStyle?.maxWidth&&e.headerStyle?.left===t.headerStyle?.left&&e.headerStyle?.right===t.headerStyle?.right}var Ge=M.memo(Lt,Mt);function Za({ariaDescribedBy:e,ariaLabelledBy:t,bodyRowComponents:a$1,columnLayouts:r,columnGroupHeaderHeight:n,currentDensity:l,currentDetailExpanded:s,currentSorting:o=[],dir:C,DataTableEmptyState:d,dragAndDrop:p,draggedColumnIdRef:c,draftValues:w,editingRowId:y,emptyNode:I,enableColumnReordering:m,enableColumnResizing:S,explicitCustomCellColumnIds:P,fillMinWidth:D,flexGrow:x,getColumnLayout:V,getRowClassName:_,getRowLoadingState:L,infiniteScroll:N,layoutMode:F,localSearchValue:u,onRowClick:k,primeColumnForResize:O,renderedRows:z,detailPanel:U,topPinnedRows:W,bottomPinnedRows:f,reorderColumn:H,resetColumnSize:j,resolvedLabels:K,rowsToRender:A,ScrollArea:J,ScrollBar:Q,sentinelRef:Z,setDraftValues:te,shouldRenderInitialLoading:me,stickyHeader:fe,stripedRows:We,summaryRows:ae,table:$,tableClassName:je,tableContainerClassName:$e,Table:qe,TableBody:Xe,TableCell:ne,TableFooter:Je="tfoot",TableHead:Qe,TableHeader:Ze,TableRow:Y,tableScrollContainerRef:Ye,uiClassNames:B,virtualPaddingBottom:Ie,virtualPaddingTop:ke,visibleLeafColumnCount:oe,visibleLeafColumns:et}){let tt=$.getIsAllPageRowsSelected()?true:$.getIsSomePageRowsSelected()?"indeterminate":false,xe=$.getFilteredRowModel().rows,at=M.useMemo(()=>ae.length?xe.map(b=>b.original):[],[xe,ae.length]),pe=(b,h,re)=>{let v=b.original,be=se(v),De=be?{isLoading:true}:L?.(v,h),nt=typeof De=="boolean"?{isLoading:De}:De,ot=be?false:p?.getRowDraggable?.(v)??false;return jsx(Be,{columnLayouts:r,components:a$1,currentDensity:l,draftValues:w,dragAndDrop:p,explicitCustomCellColumnIds:P,getRowClassName:_,isDraggable:ot,isDetailExpanded:s===true||!!s[b.id],isEditing:y===b.id,isExpanded:b.getIsExpanded(),isInitialLoadingRow:be,isSelected:b.getIsSelected(),loadingState:nt,onRowClick:k,originalRow:v,pinnedPosition:re,detailPanel:U,row:b,rowIndex:h,setDraftValues:te,stripedRows:We,uiClassNames:B,visibleCells:b.getVisibleCells(),visibleLeafColumnCount:oe},`${re??"center"}-${b.id}`)};return jsx("div",{"data-dtp-slot":"data-table-table-shell",className:a("box-border border-2 border-transparent transition-colors",x?"flex min-h-0 flex-1 flex-col":"h-full",p?.isDragging&&(B.dragActive??"rounded-md border-dashed")),children:jsx("div",{ref:Ye,className:a(x?"flex min-h-0 flex-1 flex-col":"h-full"),children:jsxs(J,{className:a("rounded-md border",x?"min-h-0 flex-1":"h-full",B.tableContainer,B.tableScrollArea,$e),children:[jsx("div",{className:"min-h-full",children:jsxs(qe,{"aria-describedby":e,"aria-labelledby":t,className:a("w-full table-fixed border-separate border-spacing-0",je),style:{minWidth:F==="fill"&&D||void 0,width:F==="fit"?$.getTotalSize():"100%"},children:[jsx("colgroup",{children:$.getVisibleLeafColumns().map(b=>{let h=V(b.id);return jsx("col",{style:h.colStyle},b.id)})}),jsx(Ze,{className:a(fe?B.tableStickyHeader??"sticky top-0 z-30 backdrop-blur":void 0),children:$.getHeaderGroups().map(b=>jsx(Y,{children:b.headers.map(h=>jsx(Ge,{columnGroupHeaderHeight:n,currentDensity:l,currentSorting:o,dir:C,draggedColumnIdRef:c,enableColumnReordering:m,enableColumnResizing:S,header:h,headerGroupHeaders:b.headers,layout:Ot(h,V),primeColumnForResize:O,reorderColumn:H,resizeColumnLabel:K.resizeColumn(typeof h.column.columnDef.header=="string"?h.column.columnDef.header:h.column.id),resetColumnSize:j,selectionState:h.column.id==="__select__"?tt:void 0,TableHead:Qe,uiClassNames:B},h.id))},b.id))}),jsx(Xe,{children:W.length||z.length||f.length?jsxs(Fragment,{children:[W.map((b,h)=>pe(b,h,"top")),ke>0?jsx(Y,{"aria-hidden":"true",children:jsx(ne,{colSpan:Math.max(1,oe),className:"border-b-0 p-0",style:{height:ke}})}):null,A.map(({row:b,rowIndex:h})=>pe(b,h+W.length)),Ie>0?jsx(Y,{"aria-hidden":"true",children:jsx(ne,{colSpan:Math.max(1,oe),className:"border-b-0 p-0",style:{height:Ie}})}):null,f.map((b,h)=>pe(b,W.length+z.length+h,"bottom"))]}):jsx(Y,{children:jsx(ne,{colSpan:Math.max(1,oe),className:"h-full grow",children:jsx("div",{className:"flex h-full min-h-full w-full grow items-center justify-center",children:I??jsx(d,{title:u?K.noMatchingRowsTitle:K.noRowsTitle,description:u?K.noMatchingRowsDescription:K.noRowsDescription})})})})}),ae.length?jsx(Je,{children:ae.map(b=>jsx(Y,{children:et.map((h,re)=>{let v=b.cells[h.id]??(re===0?b.label:null);return jsx(ne,{className:a("border-b font-medium",B.cellBorder),children:typeof v=="function"?v({rows:at,columnId:h.id}):v},`${b.key}-${h.id}`)})},b.key))}):null]})}),N?.enabled&&z.length&&!me?jsx("div",{className:"px-4 pb-4",children:jsx("div",{ref:Z,className:"h-4 w-full"})}):null,jsx(Q,{orientation:"horizontal"})]})})})}function Ot(e,t){let a=t(e.column.id);if(e.isPlaceholder||!e.subHeaders.length)return a;let r=e.getLeafHeaders().filter(s=>!s.subHeaders.length).map(s=>t(s.column.id)),n=r[0]?.fixedSide;if(!n||!r.every(s=>s.fixedSide===n))return a;let l=n==="left"?r[0]:r.at(-1);return {...a,fixedSide:n,headerStyle:l?.headerStyle?{left:l.headerStyle.left,right:l.headerStyle.right}:void 0,pinnedClassName:l?.pinnedClassName}}export{rt as A,$t as B,qt as C,Te as D,Xt as E,Pe as F,Jt as G,Qt as H,Zt as I,ie as J,Yt as K,ct as L,ea as M,ta as N,Ce as O,ye as P,aa as Q,He as R,ra as S,Be as T,Ge as U,Za as V,da as a,ca as b,ze as c,ua as d,ma as e,fa as f,pa as g,ba as h,Da as i,ga as j,Ta as k,Ca as l,ya as m,ha as n,wa as o,Sa as p,Ra as q,Ia as r,Ve as s,ka as t,Bt as u,Gt as v,Ft as w,se as x,Wt as y,jt as z};//# sourceMappingURL=chunk-BYTOUBQ7.js.map -//# sourceMappingURL=chunk-BYTOUBQ7.js.map \ No newline at end of file diff --git a/dist/chunk-BYTOUBQ7.js.map b/dist/chunk-BYTOUBQ7.js.map deleted file mode 100644 index abb0f47..0000000 --- a/dist/chunk-BYTOUBQ7.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/core/data-table/data-table-utils.ts","../src/core/data-table/use-row-editing.tsx","../src/core/icons.tsx","../src/core/data-table/data-table-cell-content.tsx","../src/core/data-table/data-table-body-row.tsx","../src/core/data-table/data-table-header-cell.tsx","../src/core/data-table/data-table-table-panel.tsx"],"names":["DATA_TABLE_LOADING_ROW","UTILITY_COLUMN_SIZE","toggleDataTableExpandedState","current","rowId","loadedRowIds","loadedRowId","next","createDataTableLoadingRows","count","_","index","isDataTableLoadingRow","row","getDataTableLoadingRowId","getConfiguredColumnMinWidth","column","minSize","decorateFilterableColumn","childColumn","filter","columnId","filterValue","hasFilterValue","value","optionValue","normalizeFilterValue","range","normalizeRangeFilterValue","numericValue","from","to","dateValue","normalizeDateFilterValue","normalizedValue","normalizedQuery","getDataTableColumnGroupPaths","columns","paths","visit","currentColumns","parentPath","group","getColumnId","canReorderDataTableColumn","sourceColumnId","targetColumnId","groupPaths","sourcePath","targetPath","commonLength","getDataTableLeafColumns","leaves","normalizeColumnFilterOptions","options","option","startCase","normalized","timestamp","dataTableGlobalFilterFn","exportDataTableCsv","csvExport","table","filename","scope","exportColumnIds","isUtilityColumnId","rows","getCsvExportRows","csvRows","lineEnding","escapeFormulaValues","csv","escapeCsvCell","blob","url","anchor","text","getInitialColumnPinning","left","right","_index","accessorKey","getAccessorKey","RESERVED_DATA_TABLE_COLUMN_IDS","validateDataTableColumnIds","ids","id","getFixedSide","pinnedSide","getPinnedColumnClassName","side","uiClassNames","isUtilityColumn","cn","DATA_TABLE_INTERACTIVE_TARGET_SELECTOR","isDataTableInteractiveTarget","target","boundary","interactiveTarget","getDensityHeaderClassName","density","getDensityCellClassName","moveColumnInOrder","currentOrder","order","sourceIndex","targetIndex","source","character","useRowEditing","editableRows","onError","editingRowId","setEditingRowId","draftValues","setDraftValues","draftValuesRef","isSavingEdit","setIsSavingEdit","cancelEditing","startEditingRow","initialValues","defaultDraftValues","saveEdit","error","draft","renderEditableCell","context","components","Checkbox","Input","meta","draftValue","setDraftValue","inputType","getEditableInputType","jsx","checked","getEditableInputValue","event","rawValue","parsedValue","parseEditableInputValue","type","previousValue","Icon","children","viewBox","props","IconAdjustmentsHorizontal","jsxs","IconCheck","IconChevronDown","IconChevronLeft","IconChevronRight","IconChevronUp","IconChevronsLeft","IconChevronsRight","IconClock","IconDatabase","IconDots","IconDownload","IconEdit","IconEye","IconEyeOff","IconInbox","IconLayoutGrid","IconList","IconSearch","IconSelector","IconX","renderDataTableCellContent","classNames","hasCustomCell","renderedCellContent","flexRender","hasComplexRenderedContent","isComplexRenderedCellContent","resolvedOverflow","resolveDataTableCellOverflow","getCellOverflowClassName","formatDateValue","content","formatCellValue","useCustomOverflowDefaults","overflow","ve","DataTableBodyRowInner","columnLayouts","currentDensity","dragAndDrop","explicitCustomCellColumnIds","getRowClassName","isDraggable","isDetailExpanded","isEditing","isExpanded","isInitialLoadingRow","isSelected","loadingState","onRowClick","pinnedPosition","originalRow","detailPanel","rowIndex","stripedRows","visibleCells","visibleLeafColumnCount","Skeleton","TableCell","TableRow","firstDataColumnId","cell","ce","cellContext","layout","isSelectionColumn","isExpansionColumn","isActionsColumn","isSpacerColumn","hideClassName","hideOnClassName","cellClassName","cellAlignClassName","areDataTableBodyRowsEqual","previous","sameLoadingState","sameVisibleCells","sameColumnLayouts","nextCell","cells","previousLayout","nextLayout","sameCellStyle","DataTableBodyRow","DataTableHeaderCellInner","columnGroupHeaderHeight","currentSorting","dir","draggedColumnIdRef","enableColumnReordering","enableColumnResizing","header","headerGroupHeaders","primeColumnForResize","reorderColumn","resizeColumnLabel","resetColumnSize","TableHead","headerContentId","ue","isColumnGroup","groupDefinition","canSort","sortingState","sortingIndex","sort","canReorderColumn","headerAlignClassName","headers","item","currentIndex","Fragment","getHeaderMaximumSize","getHeaderMinimumSize","leafHeader","getResizableLeafHeaders","grows","resizeHeaderBy","areDataTableHeaderCellsEqual","sameSubHeaders","sameSorting","sameHeaderGroupHeaders","sameHeaderLayout","total","delta","leafHeaders","deltaPerLeaf","minimum","maximum","nextSort","DataTableHeaderCell","DataTableTablePanel","ariaDescribedBy","ariaLabelledBy","bodyRowComponents","currentDetailExpanded","DataTableEmptyState","emptyNode","fillMinWidth","flexGrow","getColumnLayout","getRowLoadingState","infiniteScroll","layoutMode","localSearchValue","renderedRows","topPinnedRows","bottomPinnedRows","resolvedLabels","rowsToRender","ScrollArea","ScrollBar","sentinelRef","shouldRenderInitialLoading","stickyHeader","summaryRows","tableClassName","tableContainerClassName","Table","TableBody","TableFooter","TableHeader","tableScrollContainerRef","virtualPaddingBottom","virtualPaddingTop","visibleLeafColumns","selectionState","filteredRows","summarySourceRows","Fe","renderBodyRow","resolvedLoadingState","headerGroup","getHeaderLayout","summaryRow","columnLayout","leafLayouts","fixedSide","edgeLayout"],"mappings":"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","file":"chunk-BYTOUBQ7.js","sourcesContent":["import type {\n Column,\n ColumnDef,\n ColumnPinningState,\n ExpandedState,\n Row,\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableColumnFilterOption,\n DataTableCsvExportOptions,\n DataTableCsvExportScope,\n DataTableDensity,\n DataTableLabels,\n} from \"../types\";\nimport type { DataTableUiClassNames } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nconst DATA_TABLE_LOADING_ROW = Symbol(\"data-table-loading-row\");\n\nexport const UTILITY_COLUMN_SIZE = 50;\n\nexport function toggleDataTableExpandedState(\n current: ExpandedState,\n rowId: string,\n loadedRowIds: Array,\n): ExpandedState {\n if (current === true) {\n return Object.fromEntries(\n loadedRowIds.flatMap((loadedRowId) =>\n loadedRowId === rowId ? [] : [[loadedRowId, true]],\n ),\n );\n }\n\n const next = { ...current };\n if (next[rowId]) {\n delete next[rowId];\n } else {\n next[rowId] = true;\n }\n return next;\n}\n\ntype DataTableLoadingRow = {\n [DATA_TABLE_LOADING_ROW]: true;\n index: number;\n};\n\nexport function createDataTableLoadingRows(count: number) {\n return Array.from({ length: count }, (_, index) => {\n return {\n [DATA_TABLE_LOADING_ROW]: true,\n index,\n } as DataTableLoadingRow as TData;\n });\n}\n\nexport function isDataTableLoadingRow(\n row: unknown,\n): row is DataTableLoadingRow {\n return Boolean(\n row &&\n typeof row === \"object\" &&\n DATA_TABLE_LOADING_ROW in (row as Record),\n );\n}\n\nexport function getDataTableLoadingRowId(index: number) {\n return `__loading__${index}`;\n}\n\nexport function getConfiguredColumnMinWidth(\n column: DataTableColumnDef,\n) {\n if (typeof column.meta?.minWidth === \"number\") {\n return column.meta.minWidth;\n }\n\n if (Object.prototype.hasOwnProperty.call(column, \"minSize\")) {\n const minSize = (column as { minSize?: unknown }).minSize;\n\n if (typeof minSize === \"number\") {\n return minSize;\n }\n }\n\n return undefined;\n}\n\nexport function decorateFilterableColumn(\n column: DataTableColumnDef,\n): ColumnDef {\n if (\"columns\" in column && Array.isArray(column.columns)) {\n return {\n ...column,\n columns: column.columns.map((childColumn) =>\n decorateFilterableColumn(\n childColumn as DataTableColumnDef,\n ),\n ),\n };\n }\n\n const filter = column.meta?.filter;\n if (!filter || column.filterFn) {\n return column;\n }\n\n return {\n ...column,\n filterFn: (row, columnId, filterValue) => {\n if (!hasFilterValue(filterValue)) {\n return true;\n }\n\n const value = row.getValue(columnId);\n const optionValue =\n filter.getOptionValue?.(value, row.original) ??\n normalizeFilterValue(value);\n\n if (filter.type === \"multi\") {\n return Array.isArray(filterValue)\n ? filterValue.map(String).includes(optionValue)\n : true;\n }\n\n if (filter.type === \"select\") {\n return optionValue === String(filterValue);\n }\n\n if (filter.type === \"boolean\") {\n return optionValue === String(filterValue);\n }\n\n if (filter.type === \"numberRange\") {\n const range = normalizeRangeFilterValue(filterValue);\n const numericValue = Number(optionValue);\n const from = range.from === \"\" ? undefined : Number(range.from);\n const to = range.to === \"\" ? undefined : Number(range.to);\n\n if (Number.isNaN(numericValue)) {\n return false;\n }\n\n return (\n (from === undefined || Number.isNaN(from) || numericValue >= from) &&\n (to === undefined || Number.isNaN(to) || numericValue <= to)\n );\n }\n\n if (filter.type === \"dateRange\") {\n const range = normalizeRangeFilterValue(filterValue);\n const dateValue = normalizeDateFilterValue(optionValue);\n\n if (!dateValue) {\n return false;\n }\n\n return (\n (!range.from || dateValue >= String(range.from)) &&\n (!range.to || dateValue <= String(range.to))\n );\n }\n\n const normalizedValue = optionValue.toLowerCase();\n const normalizedQuery = String(filterValue).toLowerCase();\n\n switch (filter.operator ?? \"contains\") {\n case \"equals\":\n return normalizedValue === normalizedQuery;\n case \"startsWith\":\n return normalizedValue.startsWith(normalizedQuery);\n case \"endsWith\":\n return normalizedValue.endsWith(normalizedQuery);\n default:\n return normalizedValue.includes(normalizedQuery);\n }\n },\n };\n}\n\nexport type DataTableLeafColumn = {\n column: DataTableColumnDef;\n index: number;\n};\n\nexport type DataTableColumnGroupPathSegment = {\n id: string;\n freeReordering: boolean;\n};\n\nexport type DataTableColumnGroupPaths = ReadonlyMap<\n string,\n ReadonlyArray\n>;\n\n/**\n * Returns the nested shared-header path for every leaf. The path deliberately\n * uses stable column ids rather than header text so it also works with custom\n * header render functions.\n */\nexport function getDataTableColumnGroupPaths(\n columns: Array>,\n): DataTableColumnGroupPaths {\n const paths = new Map<\n string,\n ReadonlyArray\n >();\n\n const visit = (\n currentColumns: Array>,\n parentPath: ReadonlyArray,\n ) => {\n currentColumns.forEach((column, index) => {\n if (\"columns\" in column && column.columns?.length) {\n const group = column as DataTableColumnDef & {\n freeReordering?: boolean;\n };\n visit(column.columns, [\n ...parentPath,\n {\n id: getColumnId(column, index),\n freeReordering: group.freeReordering === true,\n },\n ]);\n return;\n }\n\n paths.set(getColumnId(column, index), parentPath);\n });\n };\n\n visit(columns, []);\n return paths;\n}\n\n/**\n * Locked groups preserve their shared heading by default. Reordering within a\n * common group path is always allowed; leaving or entering a group requires\n * each crossed group to explicitly opt into `freeReordering`.\n */\nexport function canReorderDataTableColumn(\n sourceColumnId: string,\n targetColumnId: string,\n groupPaths: DataTableColumnGroupPaths,\n) {\n const sourcePath = groupPaths.get(sourceColumnId) ?? [];\n const targetPath = groupPaths.get(targetColumnId) ?? [];\n let commonLength = 0;\n\n while (\n commonLength < sourcePath.length &&\n commonLength < targetPath.length &&\n sourcePath[commonLength]?.id === targetPath[commonLength]?.id\n ) {\n commonLength += 1;\n }\n\n return [\n ...sourcePath.slice(commonLength),\n ...targetPath.slice(commonLength),\n ].every((group) => group.freeReordering);\n}\n\nexport function getDataTableLeafColumns(\n columns: Array>,\n) {\n const leaves: Array> = [];\n\n const visit = (currentColumns: Array>) => {\n currentColumns.forEach((column, index) => {\n if (\"columns\" in column && column.columns?.length) {\n visit(column.columns);\n return;\n }\n\n leaves.push({ column, index });\n });\n };\n\n visit(columns);\n return leaves;\n}\n\nexport function normalizeColumnFilterOptions(\n options: Array,\n) {\n return options.map((option) =>\n typeof option === \"string\"\n ? { label: startCase(option), value: option }\n : option,\n );\n}\n\nexport function normalizeFilterValue(value: unknown) {\n if (value == null) {\n return \"\";\n }\n\n if (value instanceof Date) {\n return value.toISOString();\n }\n\n if (typeof value === \"object\") {\n try {\n return JSON.stringify(value);\n } catch {\n return \"\";\n }\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n typeof value === \"bigint\" ||\n typeof value === \"symbol\"\n ) {\n return String(value);\n }\n\n return \"\";\n}\n\nexport function hasFilterValue(value: unknown) {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n\n if (value && typeof value === \"object\") {\n if (\"from\" in value || \"to\" in value) {\n return Object.values(value).some(hasFilterValue);\n }\n\n return true;\n }\n\n return value !== undefined && value !== null && value !== \"\";\n}\n\nfunction normalizeRangeFilterValue(value: unknown): {\n from?: string | number;\n to?: string | number;\n} {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return {};\n }\n\n const range = value as { from?: unknown; to?: unknown };\n return {\n ...(typeof range.from === \"string\" || typeof range.from === \"number\"\n ? { from: range.from }\n : {}),\n ...(typeof range.to === \"string\" || typeof range.to === \"number\"\n ? { to: range.to }\n : {}),\n };\n}\n\nfunction normalizeDateFilterValue(value: unknown) {\n if (value instanceof Date && !Number.isNaN(value.getTime())) {\n return value.toISOString().slice(0, 10);\n }\n\n const normalized = normalizeFilterValue(value);\n if (/^\\d{4}-\\d{2}-\\d{2}/.test(normalized)) {\n return normalized.slice(0, 10);\n }\n\n const timestamp = Date.parse(normalized);\n return Number.isNaN(timestamp)\n ? \"\"\n : new Date(timestamp).toISOString().slice(0, 10);\n}\n\nexport function dataTableGlobalFilterFn(\n row: Row,\n columnId: string,\n filterValue: unknown,\n) {\n const normalizedQuery = normalizeFilterValue(filterValue)\n .trim()\n .toLowerCase();\n\n if (!normalizedQuery) {\n return true;\n }\n\n return normalizeFilterValue(row.getValue(columnId))\n .toLowerCase()\n .includes(normalizedQuery);\n}\n\nexport async function exportDataTableCsv({\n csvExport,\n table,\n}: {\n csvExport: boolean | DataTableCsvExportOptions;\n table: TanStackTable;\n labels: DataTableLabels;\n}) {\n if (csvExport === false) {\n return;\n }\n\n const options: DataTableCsvExportOptions =\n csvExport === true ? {} : csvExport;\n const filename = options.filename ?? \"data-table.csv\";\n const scope = options.scope ?? \"filtered\";\n const exportColumnIds = options.columns\n ? new Set(options.columns)\n : undefined;\n const columns = table\n .getVisibleLeafColumns()\n .filter(\n (column) =>\n !isUtilityColumnId(column.id) &&\n column.id !== \"__spacer__\" &&\n (!exportColumnIds || exportColumnIds.has(column.id)),\n );\n const rows = getCsvExportRows(table, scope);\n const csvRows: Array> = [];\n\n if (options.includeHeaders ?? true) {\n csvRows.push(\n columns.map((column) =>\n typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : startCase(column.id),\n ),\n );\n }\n\n for (const row of rows) {\n csvRows.push(\n columns.map((column) => {\n const value = row.getValue(column.id);\n return options.getCellValue\n ? options.getCellValue({\n row: row.original,\n rowId: row.id,\n columnId: column.id,\n value,\n })\n : value;\n }),\n );\n }\n\n const lineEnding = options.lineEnding ?? \"\\r\\n\";\n const escapeFormulaValues = options.escapeFormulaValues ?? true;\n const csv = csvRows\n .map((row) =>\n row\n .map((value) => escapeCsvCell(value, escapeFormulaValues))\n .join(\",\"),\n )\n .join(lineEnding);\n\n if (options.onExport) {\n await options.onExport({\n csv,\n filename,\n rows: rows.map((row) => row.original),\n scope,\n });\n return;\n }\n\n if (typeof window === \"undefined\") {\n return;\n }\n\n const blob = new Blob([csv], { type: \"text/csv;charset=utf-8\" });\n const url = window.URL.createObjectURL(blob);\n const anchor = window.document.createElement(\"a\");\n anchor.href = url;\n anchor.download = filename;\n anchor.click();\n window.URL.revokeObjectURL(url);\n}\n\nfunction getCsvExportRows(\n table: TanStackTable,\n scope: DataTableCsvExportScope,\n) {\n switch (scope) {\n case \"page\":\n return table.getRowModel().rows;\n case \"selected\":\n return table\n .getPrePaginationRowModel()\n .rows.filter((row) => row.getIsSelected());\n case \"all\":\n return table.getCoreRowModel().rows;\n default:\n return table.getPrePaginationRowModel().rows;\n }\n}\n\nfunction escapeCsvCell(value: unknown, escapeFormulaValues: boolean) {\n let text = normalizeFilterValue(value);\n if (\n escapeFormulaValues &&\n typeof value === \"string\" &&\n /^[\\t\\r ]*[=+\\-@]/.test(value)\n ) {\n text = `'${text}`;\n }\n if (/[\",\\n\\r]/.test(text)) {\n return `\"${text.replace(/\"/g, '\"\"')}\"`;\n }\n return text;\n}\n\nexport function getInitialColumnPinning(\n columns: Array>,\n): ColumnPinningState {\n const left: Array = [];\n const right: Array = [];\n\n for (const { column, index } of getDataTableLeafColumns(columns)) {\n const columnId = getColumnId(column, index);\n if (column.meta?.fixed === \"left\") {\n left.push(columnId);\n }\n if (column.meta?.fixed === \"right\") {\n right.push(columnId);\n }\n }\n\n return { left, right };\n}\n\nexport function getColumnId(\n column: DataTableColumnDef,\n _index?: number,\n) {\n if (column.id) {\n return column.id;\n }\n\n const accessorKey = getAccessorKey(column);\n if (accessorKey) {\n return accessorKey.replace(/\\./g, \"_\");\n }\n\n if (typeof column.header === \"string\") {\n return column.header;\n }\n\n throw new Error(\n \"Data table columns using an accessor function or non-string header must define a unique id.\",\n );\n}\n\nconst RESERVED_DATA_TABLE_COLUMN_IDS = new Set([\n \"__select__\",\n \"__expand__\",\n \"__actions__\",\n \"__spacer__\",\n]);\n\nexport function validateDataTableColumnIds(\n columns: Array>,\n) {\n const ids = new Set();\n\n const visit = (currentColumns: Array>) => {\n currentColumns.forEach((column, index) => {\n const id = getColumnId(column, index);\n if (RESERVED_DATA_TABLE_COLUMN_IDS.has(id)) {\n throw new Error(\n `Data table column id \"${id}\" is reserved for an internal column.`,\n );\n }\n if (ids.has(id)) {\n throw new Error(`Duplicate data table column id \"${id}\".`);\n }\n ids.add(id);\n\n if (\"columns\" in column && column.columns?.length) {\n visit(column.columns);\n }\n });\n };\n\n visit(columns);\n}\n\nexport function getAccessorKey(\n column: DataTableColumnDef,\n) {\n if (\"accessorKey\" in column && typeof column.accessorKey === \"string\") {\n return column.accessorKey;\n }\n\n return undefined;\n}\n\nexport function getFixedSide(column: Column) {\n const pinnedSide = column.getIsPinned();\n if (pinnedSide) {\n return pinnedSide;\n }\n\n if (column.id === \"__select__\") {\n return \"left\" as const;\n }\n\n if (column.id === \"__expand__\") {\n return \"left\" as const;\n }\n\n if (column.id === \"__actions__\") {\n return \"right\" as const;\n }\n\n const meta = (column.columnDef as DataTableColumnDef).meta;\n return meta?.fixed;\n}\n\nexport function getPinnedColumnClassName(\n side: \"left\" | \"right\",\n uiClassNames: DataTableUiClassNames,\n options?: { isUtilityColumn?: boolean },\n) {\n const isUtilityColumn = options?.isUtilityColumn ?? false;\n return cn(\n \"sticky backdrop-blur box-border\",\n uiClassNames.pinnedColumn,\n !isUtilityColumn && \"border-dotted\",\n isUtilityColumn ? uiClassNames.pinnedUtilityColumn : undefined,\n side === \"left\" ? \"border-r-1\" : \"border-l\",\n );\n}\n\nexport function isUtilityColumnId(columnId: string) {\n return (\n columnId === \"__select__\" ||\n columnId === \"__expand__\" ||\n columnId === \"__actions__\"\n );\n}\n\nconst DATA_TABLE_INTERACTIVE_TARGET_SELECTOR = [\n \"[data-row-click-ignore='true']\",\n \"a[href]\",\n \"button\",\n \"input\",\n \"select\",\n \"summary\",\n \"textarea\",\n \"[contenteditable='true']\",\n \"[role='button']\",\n \"[role='link']\",\n].join(\",\");\n\nexport function isDataTableInteractiveTarget(\n target: EventTarget | null,\n boundary: Element,\n) {\n if (!(target instanceof Element)) {\n return false;\n }\n\n const interactiveTarget = target.closest(\n DATA_TABLE_INTERACTIVE_TARGET_SELECTOR,\n );\n return Boolean(\n interactiveTarget &&\n interactiveTarget !== boundary &&\n boundary.contains(interactiveTarget),\n );\n}\n\nexport function getDensityHeaderClassName(density: DataTableDensity) {\n switch (density) {\n case \"compact\":\n return \"h-8 py-1\";\n case \"spacious\":\n return \"h-14 py-4\";\n case \"comfortable\":\n default:\n return undefined;\n }\n}\n\nexport function getDensityCellClassName(density: DataTableDensity) {\n switch (density) {\n case \"compact\":\n return \"py-1.5\";\n case \"spacious\":\n return \"py-4\";\n case \"comfortable\":\n default:\n return undefined;\n }\n}\n\nexport function moveColumnInOrder(\n currentOrder: Array,\n sourceColumnId: string,\n targetColumnId: string,\n) {\n const order = currentOrder.includes(sourceColumnId)\n ? currentOrder.slice()\n : [...currentOrder, sourceColumnId];\n const sourceIndex = order.indexOf(sourceColumnId);\n const targetIndex = order.indexOf(targetColumnId);\n\n if (sourceIndex < 0 || targetIndex < 0 || sourceIndex === targetIndex) {\n return order;\n }\n\n const [source] = order.splice(sourceIndex, 1);\n order.splice(targetIndex, 0, source);\n return order;\n}\n\nexport function startCase(value: string) {\n return value\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .replace(/[_-]+/g, \" \")\n .replace(/\\s+/g, \" \")\n .trim()\n .replace(/\\b\\w/g, (character) => character.toUpperCase());\n}\n","import * as React from \"react\";\nimport type { CellContext } from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableColumnType,\n DataTableEditableRowsConfig,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { getDataTableLeafColumns } from \"./data-table-utils\";\n\nexport function useRowEditing({\n columns,\n editableRows,\n onError,\n}: {\n columns: Array>;\n editableRows: DataTableEditableRowsConfig | undefined;\n onError?: (error: unknown, row: TData) => void;\n}) {\n const [editingRowId, setEditingRowId] = React.useState(null);\n const [draftValues, setDraftValues] = React.useState<\n Record\n >({});\n const draftValuesRef = React.useRef(draftValues);\n const [isSavingEdit, setIsSavingEdit] = React.useState(false);\n\n React.useEffect(() => {\n draftValuesRef.current = draftValues;\n }, [draftValues]);\n\n const cancelEditing = React.useCallback(() => {\n setEditingRowId(null);\n setDraftValues({});\n }, []);\n\n const startEditingRow = React.useCallback(\n (row: TData, rowId: string) => {\n const initialValues =\n editableRows?.getInitialValues?.(row) ??\n defaultDraftValues(row, columns);\n setDraftValues(initialValues);\n setEditingRowId(rowId);\n },\n [columns, editableRows],\n );\n\n const saveEdit = React.useCallback(\n async (row: TData) => {\n if (!editableRows) {\n return;\n }\n\n setIsSavingEdit(true);\n try {\n await editableRows.onSaveRow(row, draftValuesRef.current);\n React.startTransition(cancelEditing);\n } catch (error) {\n onError?.(error, row);\n } finally {\n setIsSavingEdit(false);\n }\n },\n [cancelEditing, editableRows, onError],\n );\n\n return {\n cancelEditing,\n draftValues,\n editingRowId,\n isSavingEdit,\n saveEdit,\n setDraftValues,\n setEditingRowId,\n startEditingRow,\n };\n}\n\nfunction defaultDraftValues(\n row: TData,\n columns: Array>,\n) {\n return getDataTableLeafColumns(columns).reduce>(\n (draft, { column }) => {\n if (\"accessorKey\" in column && typeof column.accessorKey === \"string\") {\n draft[column.accessorKey] = (row as Record)[\n column.accessorKey\n ];\n }\n return draft;\n },\n {},\n );\n}\n\nexport function renderEditableCell(\n context: CellContext,\n draftValues: Record,\n setDraftValues: React.Dispatch>>,\n components: Pick,\n) {\n const { Checkbox, Input } = components;\n const column = context.column.columnDef as DataTableColumnDef;\n const meta = column.meta;\n const accessorKey =\n \"accessorKey\" in column && typeof column.accessorKey === \"string\"\n ? column.accessorKey\n : context.column.id;\n const draftValue = draftValues[accessorKey];\n const setDraftValue = (value: unknown) => {\n setDraftValues((current) => ({\n ...current,\n [accessorKey]: value,\n }));\n };\n\n if (meta?.renderEditCell) {\n return meta.renderEditCell({\n cell: context,\n row: context.row.original,\n value: context.getValue(),\n draftValue,\n setDraftValue,\n });\n }\n\n const inputType = getEditableInputType(meta?.type, draftValue);\n\n if (typeof draftValue === \"boolean\") {\n return (\n {\n setDraftValue(checked === true);\n }}\n />\n );\n }\n\n return (\n ) => {\n const rawValue = event.target.value;\n const parsedValue = meta?.parseEditValue\n ? meta.parseEditValue(rawValue, context)\n : parseEditableInputValue(rawValue, inputType, draftValue);\n setDraftValue(parsedValue);\n }}\n />\n );\n}\n\nfunction getEditableInputType(\n type: DataTableColumnType | undefined,\n value: unknown,\n) {\n if (type === \"numeric\" || typeof value === \"number\") {\n return \"number\";\n }\n\n if (type === \"date\" || value instanceof Date) {\n return \"datetime-local\";\n }\n\n return \"text\";\n}\n\nfunction getEditableInputValue(value: unknown, inputType = \"text\") {\n if (value == null) {\n return \"\";\n }\n\n if (value instanceof Date) {\n return inputType === \"datetime-local\"\n ? value.toISOString().slice(0, 16)\n : value.toISOString();\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n typeof value === \"bigint\"\n ) {\n return String(value);\n }\n\n return \"\";\n}\n\nfunction parseEditableInputValue(\n value: string,\n inputType: string,\n previousValue: unknown,\n) {\n if (inputType === \"number\") {\n return value === \"\" ? null : Number(value);\n }\n\n if (inputType === \"datetime-local\") {\n if (!value) {\n return null;\n }\n return previousValue instanceof Date ? new Date(value) : value;\n }\n\n return value;\n}\n","import * as React from \"react\";\n\ntype IconProps = React.SVGProps;\n\nfunction Icon({\n children,\n viewBox = \"0 0 24 24\",\n ...props\n}: IconProps & { children: React.ReactNode }) {\n return (\n \n {children}\n \n );\n}\n\nexport function IconAdjustmentsHorizontal(props: IconProps) {\n return (\n \n \n \n \n \n \n \n \n );\n}\n\nexport function IconArchive(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconBell(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconBriefcase(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconCheck(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronDown(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronLeft(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronRight(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronUp(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronsLeft(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconChevronsRight(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconClock(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconDatabase(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconDots(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconDownload(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconEdit(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconEye(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconEyeOff(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconFileUpload(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconInbox(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconLayoutGrid(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconList(props: IconProps) {\n return (\n \n \n \n \n \n \n \n \n );\n}\n\nexport function IconRefresh(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconSearch(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconSelector(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconSparkles(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconStar(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconUserCheck(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconX(props: IconProps) {\n return (\n \n \n \n \n );\n}\n","import * as React from \"react\";\nimport { flexRender, type CellContext } from \"@tanstack/react-table\";\nimport { IconClock } from \"../icons\";\nimport type {\n DataTableCellOverflow,\n DataTableColumnDef,\n} from \"../types\";\nimport type { DataTableUiClassNames } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nexport function renderDataTableCellContent(\n context: CellContext,\n classNames?: DataTableUiClassNames,\n options?: {\n hasCustomCell?: boolean;\n useCustomOverflowDefaults?: boolean;\n },\n) {\n const column = context.column.columnDef as DataTableColumnDef;\n const meta = column.meta;\n const value = context.getValue();\n const hasCustomCell = options?.hasCustomCell ?? false;\n const renderedCellContent = hasCustomCell && column.cell\n ? flexRender(column.cell, context)\n : undefined;\n const hasComplexRenderedContent = isComplexRenderedCellContent(\n renderedCellContent,\n );\n const resolvedOverflow = resolveDataTableCellOverflow({\n context,\n useCustomOverflowDefaults: options?.useCustomOverflowDefaults ?? false,\n value,\n });\n\n if (meta?.type === \"date\" && !hasCustomCell) {\n return (\n \n \n {formatDateValue(value)}\n \n );\n }\n\n const content =\n renderedCellContent !== undefined &&\n renderedCellContent !== null &&\n renderedCellContent !== \"\"\n ? renderedCellContent\n : value == null || value === \"\"\n ? -\n : formatCellValue(value);\n\n return (\n *]:max-w-full [&>*]:min-w-0\",\n )}\n >\n {content}\n \n );\n}\n\nfunction resolveDataTableCellOverflow({\n context,\n useCustomOverflowDefaults,\n value,\n}: {\n context: CellContext;\n useCustomOverflowDefaults: boolean;\n value: unknown;\n}): DataTableCellOverflow {\n const column = context.column.columnDef as DataTableColumnDef;\n const resolvedOverflow =\n typeof column.meta?.overflow === \"function\"\n ? column.meta.overflow({\n row: context.row.original,\n value,\n })\n : column.meta?.overflow;\n\n if (resolvedOverflow) {\n return resolvedOverflow;\n }\n\n return useCustomOverflowDefaults ? \"clip\" : \"truncate\";\n}\n\nfunction getCellOverflowClassName(overflow: DataTableCellOverflow) {\n switch (overflow) {\n case \"clip\":\n return \"block overflow-hidden whitespace-nowrap\";\n case \"wrap\":\n return \"block overflow-hidden whitespace-normal break-words\";\n case \"visible\":\n return \"block overflow-visible whitespace-normal\";\n case \"truncate\":\n default:\n return \"block overflow-hidden text-ellipsis whitespace-nowrap\";\n }\n}\n\nfunction isComplexRenderedCellContent(content: React.ReactNode) {\n if (content == null) {\n return false;\n }\n\n return (\n React.isValidElement(content) ||\n Array.isArray(content) ||\n typeof content === \"object\"\n );\n}\n\nfunction formatDateValue(value: unknown) {\n if (typeof value === \"number\") {\n return new Date(value * 1000).toLocaleString();\n }\n\n if (typeof value === \"string\" && value) {\n return value;\n }\n\n return \"-\";\n}\n\nfunction formatCellValue(value: unknown) {\n if (value instanceof Date) {\n return value.toLocaleString();\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n typeof value === \"bigint\"\n ) {\n return String(value);\n }\n\n try {\n return JSON.stringify(value);\n } catch {\n return \"-\";\n }\n}\n","import * as React from \"react\";\nimport type { Cell, Row } from \"@tanstack/react-table\";\nimport type { RowPinningPosition } from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableDensity,\n DataTableProps,\n DataTableRowLoadingState,\n} from \"../types\";\nimport type { DataTableUiClassNames, DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { renderDataTableCellContent } from \"./data-table-cell-content\";\nimport type { DataTableColumnLayout } from \"./use-column-layout\";\nimport {\n getDensityCellClassName,\n isDataTableInteractiveTarget,\n isDataTableLoadingRow,\n} from \"./data-table-utils\";\nimport { renderEditableCell } from \"./use-row-editing\";\nimport { cellAlignClassName, hideOnClassName } from \"../types\";\n\ntype DataTableBodyRowProps = {\n columnLayouts: ReadonlyMap;\n components: Pick<\n DataTableUiKit,\n \"Checkbox\" | \"Input\" | \"Skeleton\" | \"TableCell\" | \"TableRow\"\n >;\n currentDensity: DataTableDensity;\n draftValues: Record;\n dragAndDrop: DataTableProps[\"dragAndDrop\"];\n explicitCustomCellColumnIds: ReadonlySet;\n getRowClassName: DataTableProps[\"getRowClassName\"];\n isDraggable: boolean;\n isDetailExpanded: boolean;\n isEditing: boolean;\n isExpanded: boolean;\n isInitialLoadingRow: boolean;\n isSelected: boolean;\n loadingState: DataTableRowLoadingState | undefined;\n onRowClick: DataTableProps[\"onRowClick\"];\n pinnedPosition?: Exclude;\n originalRow: TData;\n detailPanel: DataTableProps[\"detailPanel\"];\n row: Row;\n rowIndex: number;\n setDraftValues: React.Dispatch>>;\n stripedRows: boolean;\n uiClassNames: DataTableUiClassNames;\n visibleCells: Array>;\n visibleLeafColumnCount: number;\n};\n\nfunction DataTableBodyRowInner({\n columnLayouts,\n components,\n currentDensity,\n draftValues,\n dragAndDrop,\n explicitCustomCellColumnIds,\n getRowClassName,\n isDraggable,\n isDetailExpanded,\n isEditing,\n isExpanded,\n isInitialLoadingRow,\n isSelected,\n loadingState,\n onRowClick,\n pinnedPosition,\n originalRow,\n detailPanel,\n row,\n rowIndex,\n setDraftValues,\n stripedRows,\n uiClassNames,\n visibleCells,\n visibleLeafColumnCount,\n}: DataTableBodyRowProps) {\n const { Checkbox, Input, Skeleton, TableCell, TableRow } = components;\n const firstDataColumnId = visibleCells.find(\n (cell) => !columnLayouts.get(cell.column.id)?.isUtilityColumn,\n )?.column.id;\n\n return (\n \n 0 ? row.depth : undefined\n }\n data-dtp-slot={\n pinnedPosition ? \"data-table-pinned-row\" : \"data-table-row\"\n }\n data-row-pinned={pinnedPosition}\n draggable={isInitialLoadingRow ? false : isDraggable}\n data-loading={loadingState?.isLoading || undefined}\n data-row-index={isInitialLoadingRow ? undefined : rowIndex}\n data-row-parity={\n stripedRows && !isInitialLoadingRow\n ? rowIndex % 2 === 0\n ? \"odd\"\n : \"even\"\n : undefined\n }\n data-state={\n isInitialLoadingRow ? undefined : isSelected ? \"selected\" : undefined\n }\n tabIndex={onRowClick && !isInitialLoadingRow ? 0 : undefined}\n className={cn(\n !isInitialLoadingRow &&\n getRowClassName?.(originalRow, {\n row: originalRow,\n rowId: row.id,\n rowIndex,\n isEditing,\n isExpanded,\n isLoading: Boolean(loadingState?.isLoading),\n isSelected,\n pinnedPosition: pinnedPosition ?? false,\n }),\n uiClassNames.row,\n pinnedPosition === \"top\" &&\n cn(\"border-b-2\", uiClassNames.rowPinnedTop),\n pinnedPosition === \"bottom\" &&\n cn(\"border-t-2\", uiClassNames.rowPinnedBottom),\n stripedRows &&\n !isInitialLoadingRow &&\n (rowIndex % 2 === 0\n ? uiClassNames.rowOdd\n : uiClassNames.rowEven),\n isSelected && !isInitialLoadingRow && uiClassNames.rowSelected,\n onRowClick && !isInitialLoadingRow && \"cursor-pointer\",\n isInitialLoadingRow && \"pointer-events-none\",\n )}\n onClick={(event: React.MouseEvent) => {\n if (isInitialLoadingRow) {\n return;\n }\n\n if (isDataTableInteractiveTarget(event.target, event.currentTarget)) {\n return;\n }\n\n void onRowClick?.({ row: originalRow, rowId: row.id });\n }}\n onKeyDown={(event: React.KeyboardEvent) => {\n if (\n isInitialLoadingRow ||\n !onRowClick ||\n (event.key !== \"Enter\" && event.key !== \" \")\n ) {\n return;\n }\n\n if (isDataTableInteractiveTarget(event.target, event.currentTarget)) {\n return;\n }\n\n event.preventDefault();\n void onRowClick({ row: originalRow, rowId: row.id });\n }}\n onDragStart={(event: React.DragEvent) => {\n if (isInitialLoadingRow) {\n return;\n }\n\n dragAndDrop?.onRowDragStart?.({\n row: originalRow,\n rowId: row.id,\n event,\n });\n }}\n onDragEnd={(event: React.DragEvent) => {\n if (isInitialLoadingRow) {\n return;\n }\n\n dragAndDrop?.onRowDragEnd?.({\n row: originalRow,\n rowId: row.id,\n event,\n });\n }}\n >\n {visibleCells.map((cell) => {\n const meta = (\n cell.column.columnDef as DataTableColumnDef\n ).meta;\n const cellContext = cell.getContext();\n const value = cell.getValue();\n const layout = columnLayouts.get(cell.column.id);\n const isSelectionColumn = layout?.isSelectionColumn ?? false;\n const isExpansionColumn = layout?.isExpansionColumn ?? false;\n const isActionsColumn = layout?.isActionsColumn ?? false;\n const isSpacerColumn = layout?.isSpacerColumn ?? false;\n const hideClassName = hideOnClassName(meta?.hideOn);\n const cellClassName =\n isInitialLoadingRow || isDataTableLoadingRow(originalRow)\n ? undefined\n : typeof meta?.cellClassName === \"function\"\n ? meta.cellClassName({\n row: originalRow,\n value,\n })\n : meta?.cellClassName;\n\n return (\n \n 0 && cell.column.id === firstDataColumnId\n ? { paddingInlineStart: `${row.depth}rem` }\n : undefined\n }\n >\n {loadingState?.isLoading ? (\n (meta?.skeleton?.(cellContext) ??\n loadingState.skeleton ?? (\n \n ))\n ) : isEditing &&\n cell.column.id !== \"__select__\" &&\n cell.column.id !== \"__expand__\" &&\n cell.column.id !== \"__actions__\" ? (\n renderEditableCell(cellContext, draftValues, setDraftValues, {\n Checkbox,\n Input,\n })\n ) : (\n renderDataTableCellContent(cellContext, uiClassNames, {\n hasCustomCell:\n explicitCustomCellColumnIds.has(cell.column.id) ||\n isSelectionColumn ||\n isExpansionColumn ||\n isActionsColumn ||\n isSpacerColumn,\n useCustomOverflowDefaults:\n explicitCustomCellColumnIds.has(cell.column.id) ||\n isSelectionColumn ||\n isExpansionColumn ||\n isActionsColumn ||\n isSpacerColumn,\n })\n )}\n \n \n );\n })}\n \n {!isInitialLoadingRow && detailPanel && isDetailExpanded ? (\n \n \n {detailPanel.render({\n row: originalRow,\n rowId: row.id,\n tableRow: row,\n })}\n \n \n ) : null}\n \n );\n}\n\nfunction areDataTableBodyRowsEqual(\n previous: DataTableBodyRowProps,\n next: DataTableBodyRowProps,\n) {\n return (\n previous.row.id === next.row.id &&\n previous.row.original === next.row.original &&\n previous.rowIndex === next.rowIndex &&\n previous.isSelected === next.isSelected &&\n previous.isInitialLoadingRow === next.isInitialLoadingRow &&\n previous.isEditing === next.isEditing &&\n previous.isExpanded === next.isExpanded &&\n previous.isDraggable === next.isDraggable &&\n sameLoadingState(previous.loadingState, next.loadingState) &&\n sameVisibleCells(previous.visibleCells, next.visibleCells) &&\n previous.components === next.components &&\n sameColumnLayouts(\n previous.columnLayouts,\n next.columnLayouts,\n next.visibleCells,\n ) &&\n previous.currentDensity === next.currentDensity &&\n previous.detailPanel === next.detailPanel &&\n previous.isDetailExpanded === next.isDetailExpanded &&\n previous.pinnedPosition === next.pinnedPosition &&\n previous.onRowClick === next.onRowClick &&\n previous.dragAndDrop === next.dragAndDrop &&\n previous.getRowClassName === next.getRowClassName &&\n previous.stripedRows === next.stripedRows &&\n previous.uiClassNames === next.uiClassNames &&\n previous.explicitCustomCellColumnIds === next.explicitCustomCellColumnIds &&\n (!previous.isEditing || previous.draftValues === next.draftValues)\n );\n}\n\nfunction sameLoadingState(\n previous: DataTableRowLoadingState | undefined,\n next: DataTableRowLoadingState | undefined,\n) {\n return (\n previous?.isLoading === next?.isLoading &&\n previous?.skeleton === next?.skeleton\n );\n}\n\nfunction sameVisibleCells(\n previous: Array>,\n next: Array>,\n) {\n return (\n previous.length === next.length &&\n previous.every((cell, index) => {\n const nextCell = next[index];\n return nextCell?.id === cell.id && nextCell.column.id === cell.column.id;\n })\n );\n}\n\nfunction sameColumnLayouts(\n previous: ReadonlyMap,\n next: ReadonlyMap,\n cells: Array>,\n) {\n return cells.every((cell) => {\n const previousLayout = previous.get(cell.column.id);\n const nextLayout = next.get(cell.column.id);\n\n return (\n previousLayout?.fixedSide === nextLayout?.fixedSide &&\n previousLayout?.isActionsColumn === nextLayout?.isActionsColumn &&\n previousLayout?.isExpansionColumn === nextLayout?.isExpansionColumn &&\n previousLayout?.isSelectionColumn === nextLayout?.isSelectionColumn &&\n previousLayout?.isSpacerColumn === nextLayout?.isSpacerColumn &&\n previousLayout?.isUtilityColumn === nextLayout?.isUtilityColumn &&\n previousLayout?.pinnedClassName === nextLayout?.pinnedClassName &&\n previousLayout?.utilityClassName === nextLayout?.utilityClassName &&\n sameCellStyle(previousLayout?.cellStyle, nextLayout?.cellStyle)\n );\n });\n}\n\nfunction sameCellStyle(\n previous: React.CSSProperties | undefined,\n next: React.CSSProperties | undefined,\n) {\n return (\n previous?.width === next?.width &&\n previous?.minWidth === next?.minWidth &&\n previous?.maxWidth === next?.maxWidth &&\n previous?.left === next?.left &&\n previous?.right === next?.right\n );\n}\n\nexport const DataTableBodyRow = React.memo(\n DataTableBodyRowInner,\n areDataTableBodyRowsEqual,\n) as typeof DataTableBodyRowInner;\n","import * as React from \"react\";\nimport { flexRender } from \"@tanstack/react-table\";\nimport { IconChevronDown, IconSelector } from \"../icons\";\nimport type { Header, SortingState } from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableColumnGroupDef,\n DataTableDensity,\n DataTableProps,\n} from \"../types\";\nimport type { DataTableUiClassNames, DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport type { DataTableColumnLayout } from \"./use-column-layout\";\nimport {\n getDensityHeaderClassName,\n isUtilityColumnId,\n} from \"./data-table-utils\";\nimport { headerAlignClassName, hideOnClassName } from \"../types\";\n\ntype DataTableHeaderCellProps = {\n columnGroupHeaderHeight: DataTableProps[\"columnGroupHeaderHeight\"];\n currentDensity: DataTableDensity;\n currentSorting: SortingState;\n dir: NonNullable[\"dir\"]>;\n draggedColumnIdRef: React.MutableRefObject;\n enableColumnReordering: boolean;\n enableColumnResizing: boolean;\n header: Header;\n headerGroupHeaders: Array>;\n layout: DataTableColumnLayout;\n primeColumnForResize: (columnId: string, currentSize: number) => void;\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n resizeColumnLabel: string;\n resetColumnSize: (columnId: string) => void;\n // Rendered through flexRender inside the header def; carried as a prop so\n // the memo comparator re-renders the selection header when it changes.\n selectionState?: boolean | \"indeterminate\";\n TableHead: DataTableUiKit[\"TableHead\"];\n uiClassNames: DataTableUiClassNames;\n};\n\nfunction DataTableHeaderCellInner({\n columnGroupHeaderHeight,\n currentDensity,\n currentSorting,\n dir,\n draggedColumnIdRef,\n enableColumnReordering,\n enableColumnResizing,\n header,\n headerGroupHeaders,\n layout,\n primeColumnForResize,\n reorderColumn,\n resizeColumnLabel,\n resetColumnSize,\n TableHead,\n uiClassNames,\n}: DataTableHeaderCellProps) {\n const meta = (header.column.columnDef as DataTableColumnDef)\n .meta;\n const headerContentId = React.useId();\n const isColumnGroup =\n !header.isPlaceholder && header.subHeaders.length > 0;\n const groupDefinition = isColumnGroup\n ? (header.column.columnDef as DataTableColumnGroupDef)\n : undefined;\n const canSort = header.column.getCanSort();\n const sortingState = header.column.getIsSorted();\n const sortingIndex = currentSorting.findIndex(\n (sort) => sort.id === header.column.id,\n );\n const canReorderColumn =\n enableColumnReordering &&\n !header.isPlaceholder &&\n !isColumnGroup &&\n !layout.isUtilityColumn &&\n !layout.isSpacerColumn;\n const hideClassName = hideOnClassName(meta?.hideOn);\n\n return (\n ) => {\n draggedColumnIdRef.current = header.column.id;\n event.dataTransfer.effectAllowed = \"move\";\n }\n : undefined\n }\n onDragOver={\n canReorderColumn\n ? (event: React.DragEvent) => {\n event.preventDefault();\n event.dataTransfer.dropEffect = \"move\";\n }\n : undefined\n }\n onDrop={\n canReorderColumn\n ? (event: React.DragEvent) => {\n event.preventDefault();\n const sourceColumnId = draggedColumnIdRef.current;\n draggedColumnIdRef.current = null;\n if (sourceColumnId) {\n reorderColumn(sourceColumnId, header.column.id);\n }\n }\n : undefined\n }\n onKeyDown={\n canReorderColumn\n ? (event: React.KeyboardEvent) => {\n if (\n !event.altKey ||\n (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\")\n ) {\n return;\n }\n\n event.preventDefault();\n const headers = headerGroupHeaders.filter(\n (item) =>\n !isUtilityColumnId(item.column.id) &&\n item.column.id !== \"__spacer__\",\n );\n const currentIndex = headers.findIndex(\n (item) => item.column.id === header.column.id,\n );\n const target =\n headers[\n (event.key === \"ArrowLeft\") !== (dir === \"rtl\")\n ? currentIndex - 1\n : currentIndex + 1\n ];\n if (target) {\n reorderColumn(header.column.id, target.column.id);\n }\n }\n : undefined\n }\n >\n {header.isPlaceholder ? null : canSort ? (\n \n \n {flexRender(header.column.columnDef.header, header.getContext())}\n \n {sortingState ? (\n <>\n \n {currentSorting.length > 1 && sortingIndex >= 0 ? (\n \n {sortingIndex + 1}\n \n ) : null}\n \n ) : (\n \n )}\n \n ) : (\n layout.isUtilityColumn || layout.isSpacerColumn ? (\n flexRender(header.column.columnDef.header, header.getContext())\n ) : (\n \n {flexRender(header.column.columnDef.header, header.getContext())}\n \n )\n )}\n\n {enableColumnResizing &&\n !header.isPlaceholder &&\n header.column.getCanResize() ? (\n {\n for (const leafHeader of getResizableLeafHeaders(header)) {\n resetColumnSize(leafHeader.column.id);\n }\n }}\n onMouseDown={(event) => {\n for (const leafHeader of getResizableLeafHeaders(header)) {\n primeColumnForResize(\n leafHeader.column.id,\n leafHeader.getSize(),\n );\n }\n header.getResizeHandler()(event);\n }}\n onTouchStart={(event) => {\n for (const leafHeader of getResizableLeafHeaders(header)) {\n primeColumnForResize(\n leafHeader.column.id,\n leafHeader.getSize(),\n );\n }\n header.getResizeHandler()(event);\n }}\n onKeyDown={(event) => {\n if (event.altKey) {\n return;\n }\n if (event.key === \"Home\") {\n event.preventDefault();\n for (const leafHeader of getResizableLeafHeaders(header)) {\n resetColumnSize(leafHeader.column.id);\n }\n return;\n }\n if (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\") {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n const grows =\n (event.key === \"ArrowRight\") !== (dir === \"rtl\");\n resizeHeaderBy(\n header,\n (grows ? 1 : -1) * (event.shiftKey ? 25 : 10),\n );\n }}\n className={cn(\n \"absolute inset-y-0 z-50 h-full w-3 cursor-col-resize touch-none select-none ltr:right-0 ltr:translate-x-1/2 rtl:left-0 rtl:-translate-x-1/2 after:absolute after:top-0 after:left-1/2 after:h-full after:w-px after:-translate-x-1/2\",\n uiClassNames.resizeHandle ??\n \"after:bg-current after:opacity-20 hover:after:opacity-70\",\n header.column.getIsResizing() &&\n (uiClassNames.resizeHandleActive ?? \"after:opacity-100\"),\n )}\n />\n ) : null}\n \n );\n}\n\nfunction areDataTableHeaderCellsEqual(\n previous: DataTableHeaderCellProps,\n next: DataTableHeaderCellProps,\n) {\n return (\n previous.header.id === next.header.id &&\n previous.header.column.id === next.header.column.id &&\n previous.header.column.columnDef === next.header.column.columnDef &&\n previous.header.colSpan === next.header.colSpan &&\n previous.header.isPlaceholder === next.header.isPlaceholder &&\n sameSubHeaders(previous.header, next.header) &&\n previous.currentDensity === next.currentDensity &&\n previous.columnGroupHeaderHeight === next.columnGroupHeaderHeight &&\n previous.dir === next.dir &&\n previous.enableColumnReordering === next.enableColumnReordering &&\n previous.enableColumnResizing === next.enableColumnResizing &&\n previous.TableHead === next.TableHead &&\n previous.uiClassNames === next.uiClassNames &&\n previous.draggedColumnIdRef === next.draggedColumnIdRef &&\n previous.primeColumnForResize === next.primeColumnForResize &&\n previous.reorderColumn === next.reorderColumn &&\n previous.resizeColumnLabel === next.resizeColumnLabel &&\n previous.resetColumnSize === next.resetColumnSize &&\n previous.selectionState === next.selectionState &&\n sameSorting(previous.currentSorting, next.currentSorting) &&\n sameHeaderGroupHeaders(\n previous.headerGroupHeaders,\n next.headerGroupHeaders,\n ) &&\n sameHeaderLayout(previous.layout, next.layout)\n );\n}\n\nfunction getResizableLeafHeaders(header: Header) {\n if (!header.subHeaders.length) {\n return [header];\n }\n\n return header\n .getLeafHeaders()\n .filter((leafHeader) => !leafHeader.subHeaders.length);\n}\n\nfunction getHeaderMinimumSize(header: Header) {\n return getResizableLeafHeaders(header).reduce(\n (total, leafHeader) =>\n total + (leafHeader.column.columnDef.minSize ?? 20),\n 0,\n );\n}\n\nfunction getHeaderMaximumSize(header: Header) {\n return getResizableLeafHeaders(header).reduce(\n (total, leafHeader) =>\n total + (leafHeader.column.columnDef.maxSize ?? Number.MAX_SAFE_INTEGER),\n 0,\n );\n}\n\nfunction resizeHeaderBy(\n header: Header,\n delta: number,\n) {\n const leafHeaders = getResizableLeafHeaders(header);\n const deltaPerLeaf = delta / leafHeaders.length;\n header.getContext().table.setColumnSizing((current) => {\n const next = { ...current };\n\n for (const leafHeader of leafHeaders) {\n const column = leafHeader.column;\n const minimum = column.columnDef.minSize ?? 20;\n const maximum =\n column.columnDef.maxSize ?? Number.MAX_SAFE_INTEGER;\n next[column.id] = Math.min(\n maximum,\n Math.max(minimum, column.getSize() + deltaPerLeaf),\n );\n }\n\n return next;\n });\n}\n\nfunction sameSubHeaders(\n previous: Header,\n next: Header,\n) {\n return (\n previous.subHeaders.length === next.subHeaders.length &&\n previous.subHeaders.every(\n (header, index) => next.subHeaders[index]?.id === header.id,\n )\n );\n}\n\nfunction sameSorting(previous: SortingState, next: SortingState) {\n return (\n previous.length === next.length &&\n previous.every((sort, index) => {\n const nextSort = next[index];\n return nextSort?.id === sort.id && nextSort.desc === sort.desc;\n })\n );\n}\n\nfunction sameHeaderGroupHeaders(\n previous: Array>,\n next: Array>,\n) {\n return (\n previous.length === next.length &&\n previous.every((header, index) => next[index]?.id === header.id)\n );\n}\n\nfunction sameHeaderLayout(\n previous: DataTableColumnLayout,\n next: DataTableColumnLayout,\n) {\n return (\n previous.fixedSide === next.fixedSide &&\n previous.isSpacerColumn === next.isSpacerColumn &&\n previous.isUtilityColumn === next.isUtilityColumn &&\n previous.pinnedClassName === next.pinnedClassName &&\n previous.utilityClassName === next.utilityClassName &&\n previous.headerStyle?.width === next.headerStyle?.width &&\n previous.headerStyle?.minWidth === next.headerStyle?.minWidth &&\n previous.headerStyle?.maxWidth === next.headerStyle?.maxWidth &&\n previous.headerStyle?.left === next.headerStyle?.left &&\n previous.headerStyle?.right === next.headerStyle?.right\n );\n}\n\nexport const DataTableHeaderCell = React.memo(\n DataTableHeaderCellInner,\n areDataTableHeaderCellsEqual,\n) as typeof DataTableHeaderCellInner;\n","import * as React from \"react\";\nimport type {\n Column,\n ExpandedState,\n Header,\n RowPinningPosition,\n Row,\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableDensity,\n DataTableProps,\n DataTableRowLoadingState,\n} from \"../types\";\nimport type { DataTableUiClassNames, DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { DataTableBodyRow } from \"./data-table-body-row\";\nimport { DataTableHeaderCell } from \"./data-table-header-cell\";\nimport type { DataTableColumnLayout } from \"./use-column-layout\";\nimport { isDataTableLoadingRow } from \"./data-table-utils\";\nimport type { DataTableLabels } from \"../types\";\n\nexport type DataTableTablePanelProps = {\n ariaDescribedBy: string | undefined;\n ariaLabelledBy: string | undefined;\n bodyRowComponents: Pick<\n DataTableUiKit,\n \"Checkbox\" | \"Input\" | \"Skeleton\" | \"TableCell\" | \"TableRow\"\n >;\n columnLayouts: ReadonlyMap;\n columnGroupHeaderHeight: DataTableProps[\"columnGroupHeaderHeight\"];\n currentDensity: DataTableDensity;\n currentDetailExpanded: ExpandedState;\n currentSorting: DataTableProps[\"sorting\"];\n dir: NonNullable[\"dir\"]>;\n DataTableEmptyState: React.ElementType;\n dragAndDrop: DataTableProps[\"dragAndDrop\"];\n draggedColumnIdRef: React.RefObject;\n draftValues: Record;\n editingRowId: string | null;\n emptyNode: React.ReactNode;\n enableColumnReordering: boolean;\n enableColumnResizing: boolean;\n explicitCustomCellColumnIds: ReadonlySet;\n fillMinWidth: number;\n flexGrow: boolean;\n getColumnLayout: (columnId: string) => DataTableColumnLayout;\n getRowClassName: DataTableProps[\"getRowClassName\"];\n getRowLoadingState: DataTableProps[\"getRowLoadingState\"];\n infiniteScroll: DataTableProps[\"infiniteScroll\"];\n layoutMode: \"fill\" | \"fit\";\n localSearchValue: string;\n onRowClick: DataTableProps[\"onRowClick\"];\n primeColumnForResize: (columnId: string, currentSize: number) => void;\n renderedRows: Array>;\n detailPanel: DataTableProps[\"detailPanel\"];\n topPinnedRows: Array>;\n bottomPinnedRows: Array>;\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n resetColumnSize: (columnId: string) => void;\n resolvedLabels: DataTableLabels;\n rowsToRender: Array<{ row: Row; rowIndex: number }>;\n ScrollArea: DataTableUiKit[\"ScrollArea\"];\n ScrollBar: DataTableUiKit[\"ScrollBar\"];\n sentinelRef: React.RefObject;\n setDraftValues: React.Dispatch>>;\n shouldRenderInitialLoading: boolean;\n stickyHeader: boolean;\n stripedRows: boolean;\n summaryRows: NonNullable[\"summaryRows\"]>;\n table: TanStackTable;\n tableClassName: string | undefined;\n tableContainerClassName: string | undefined;\n Table: DataTableUiKit[\"Table\"];\n TableBody: DataTableUiKit[\"TableBody\"];\n TableCell: DataTableUiKit[\"TableCell\"];\n TableFooter: DataTableUiKit[\"TableFooter\"];\n TableHead: DataTableUiKit[\"TableHead\"];\n TableHeader: DataTableUiKit[\"TableHeader\"];\n TableRow: DataTableUiKit[\"TableRow\"];\n tableScrollContainerRef: React.RefObject;\n tableScrollElement?: HTMLElement | null;\n uiClassNames: DataTableUiClassNames;\n viewportHeight?: number;\n virtualization?: DataTableProps[\"virtualization\"];\n virtualPaddingBottom: number;\n virtualPaddingTop: number;\n visibleLeafColumnCount: number;\n visibleLeafColumns: Array>;\n};\n\nexport function DataTableTablePanel({\n ariaDescribedBy,\n ariaLabelledBy,\n bodyRowComponents,\n columnLayouts,\n columnGroupHeaderHeight,\n currentDensity,\n currentDetailExpanded,\n currentSorting = [],\n dir,\n DataTableEmptyState,\n dragAndDrop,\n draggedColumnIdRef,\n draftValues,\n editingRowId,\n emptyNode,\n enableColumnReordering,\n enableColumnResizing,\n explicitCustomCellColumnIds,\n fillMinWidth,\n flexGrow,\n getColumnLayout,\n getRowClassName,\n getRowLoadingState,\n infiniteScroll,\n layoutMode,\n localSearchValue,\n onRowClick,\n primeColumnForResize,\n renderedRows,\n detailPanel,\n topPinnedRows,\n bottomPinnedRows,\n reorderColumn,\n resetColumnSize,\n resolvedLabels,\n rowsToRender,\n ScrollArea,\n ScrollBar,\n sentinelRef,\n setDraftValues,\n shouldRenderInitialLoading,\n stickyHeader,\n stripedRows,\n summaryRows,\n table,\n tableClassName,\n tableContainerClassName,\n Table,\n TableBody,\n TableCell,\n TableFooter = \"tfoot\",\n TableHead,\n TableHeader,\n TableRow,\n tableScrollContainerRef,\n uiClassNames,\n virtualPaddingBottom,\n virtualPaddingTop,\n visibleLeafColumnCount,\n visibleLeafColumns,\n}: DataTableTablePanelProps) {\n const selectionState: boolean | \"indeterminate\" =\n table.getIsAllPageRowsSelected()\n ? true\n : table.getIsSomePageRowsSelected()\n ? \"indeterminate\"\n : false;\n const filteredRows = table.getFilteredRowModel().rows;\n const summarySourceRows = React.useMemo(\n () =>\n summaryRows.length\n ? filteredRows.map((row) => row.original)\n : [],\n [filteredRows, summaryRows.length],\n );\n const renderBodyRow = (\n row: Row,\n rowIndex: number,\n pinnedPosition?: Exclude,\n ) => {\n const originalRow = row.original;\n const isInitialLoadingRow = isDataTableLoadingRow(originalRow);\n const loadingState = isInitialLoadingRow\n ? { isLoading: true }\n : getRowLoadingState?.(originalRow, rowIndex);\n const resolvedLoadingState: DataTableRowLoadingState | undefined =\n typeof loadingState === \"boolean\"\n ? { isLoading: loadingState }\n : loadingState;\n const isDraggable = isInitialLoadingRow\n ? false\n : (dragAndDrop?.getRowDraggable?.(originalRow) ?? false);\n\n return (\n \n );\n };\n\n return (\n \n \n \n
    \n \n
  • \n {table.getVisibleLeafColumns().map((column) => {\n const layout = getColumnLayout(column.id);\n return ;\n })}\n \n \n {table.getHeaderGroups().map((headerGroup) => (\n \n {headerGroup.headers.map((header) => (\n \n ))}\n \n ))}\n \n \n {topPinnedRows.length || renderedRows.length || bottomPinnedRows.length ? (\n <>\n {topPinnedRows.map((row, index) =>\n renderBodyRow(row, index, \"top\"),\n )}\n {virtualPaddingTop > 0 ? (\n \n \n \n ) : null}\n {rowsToRender.map(({ row, rowIndex }) =>\n renderBodyRow(row, rowIndex + topPinnedRows.length),\n )}\n {virtualPaddingBottom > 0 ? (\n \n \n \n ) : null}\n {bottomPinnedRows.map((row, index) =>\n renderBodyRow(\n row,\n topPinnedRows.length + renderedRows.length + index,\n \"bottom\",\n ),\n )}\n \n ) : (\n \n \n
    \n {emptyNode ?? (\n \n )}\n
    \n \n
    \n )}\n
    \n {summaryRows.length ? (\n \n {summaryRows.map((summaryRow) => (\n \n {visibleLeafColumns.map((column, index) => {\n const content =\n summaryRow.cells[column.id] ??\n (index === 0 ? summaryRow.label : null);\n return (\n \n {typeof content === \"function\"\n ? content({\n rows: summarySourceRows,\n columnId: column.id,\n })\n : content}\n \n );\n })}\n \n ))}\n \n ) : null}\n
    \n \n\n {infiniteScroll?.enabled &&\n renderedRows.length &&\n !shouldRenderInitialLoading ? (\n
    \n
    \n
    \n ) : null}\n \n \n
    \n \n );\n}\n\nfunction getHeaderLayout(\n header: Header,\n getColumnLayout: (columnId: string) => DataTableColumnLayout,\n) {\n const columnLayout = getColumnLayout(header.column.id);\n if (header.isPlaceholder || !header.subHeaders.length) {\n return columnLayout;\n }\n\n const leafLayouts = header\n .getLeafHeaders()\n .filter((leafHeader) => !leafHeader.subHeaders.length)\n .map((leafHeader) => getColumnLayout(leafHeader.column.id));\n const fixedSide = leafLayouts[0]?.fixedSide;\n\n if (\n !fixedSide ||\n !leafLayouts.every((layout) => layout.fixedSide === fixedSide)\n ) {\n return columnLayout;\n }\n\n const edgeLayout =\n fixedSide === \"left\" ? leafLayouts[0] : leafLayouts.at(-1);\n\n return {\n ...columnLayout,\n fixedSide,\n headerStyle: edgeLayout?.headerStyle\n ? {\n left: edgeLayout.headerStyle.left,\n right: edgeLayout.headerStyle.right,\n }\n : undefined,\n pinnedClassName: edgeLayout?.pinnedClassName,\n };\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-CVR2ZXHQ.js b/dist/chunk-CVR2ZXHQ.js new file mode 100644 index 0000000..c6b7812 --- /dev/null +++ b/dist/chunk-CVR2ZXHQ.js @@ -0,0 +1,2 @@ +import'react';import {jsxs,jsx}from'react/jsx-runtime';function t({children:n,viewBox:c="0 0 24 24",...p}){return jsx("svg",{"aria-hidden":"true",focusable:"false",width:"1em",height:"1em",viewBox:c,fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",...p,children:n})}function e(n){return jsxs(t,{...n,children:[jsx("path",{d:"M4 7h4"}),jsx("path",{d:"M14 7h6"}),jsx("path",{d:"M10 5v4"}),jsx("path",{d:"M4 17h10"}),jsx("path",{d:"M18 17h2"}),jsx("path",{d:"M16 15v4"})]})}function a(n){return jsx(t,{...n,children:jsx("path",{d:"M5 12l4 4L19 6"})})}function I(n){return jsx(t,{...n,children:jsx("path",{d:"M6 9l6 6 6-6"})})}function d(n){return jsx(t,{...n,children:jsx("path",{d:"M15 6l-6 6 6 6"})})}function M(n){return jsx(t,{...n,children:jsx("path",{d:"M9 6l6 6-6 6"})})}function u(n){return jsx(t,{...n,children:jsx("path",{d:"M6 15l6-6 6 6"})})}function l(n){return jsxs(t,{...n,children:[jsx("path",{d:"M11 6l-6 6 6 6"}),jsx("path",{d:"M19 6l-6 6 6 6"})]})}function s(n){return jsxs(t,{...n,children:[jsx("path",{d:"M5 6l6 6-6 6"}),jsx("path",{d:"M13 6l6 6-6 6"})]})}function i(n){return jsxs(t,{...n,children:[jsx("circle",{cx:"12",cy:"12",r:"9"}),jsx("path",{d:"M12 7v5l3 2"})]})}function f(n){return jsxs(t,{...n,children:[jsx("ellipse",{cx:"12",cy:"5",rx:"7",ry:"3"}),jsx("path",{d:"M5 5v6c0 1.7 3.1 3 7 3s7-1.3 7-3V5"}),jsx("path",{d:"M5 11v6c0 1.7 3.1 3 7 3s7-1.3 7-3v-6"})]})}function x(n){return jsxs(t,{...n,children:[jsx("path",{d:"M5 12h.01"}),jsx("path",{d:"M12 12h.01"}),jsx("path",{d:"M19 12h.01"})]})}function v(n){return jsxs(t,{...n,children:[jsx("path",{d:"M12 3v12"}),jsx("path",{d:"M7 10l5 5 5-5"}),jsx("path",{d:"M5 21h14"})]})}function P(n){return jsxs(t,{...n,children:[jsx("path",{d:"M4 20h4l11-11-4-4L4 16v4z"}),jsx("path",{d:"M13 7l4 4"})]})}function L(n){return jsxs(t,{...n,children:[jsx("path",{d:"M2 12s4-7 10-7 10 7 10 7-4 7-10 7S2 12 2 12z"}),jsx("circle",{cx:"12",cy:"12",r:"3"})]})}function z(n){return jsxs(t,{...n,children:[jsx("path",{d:"M3 3l18 18"}),jsx("path",{d:"M10.6 10.6a2 2 0 0 0 2.8 2.8"}),jsx("path",{d:"M9.9 5.3A10.5 10.5 0 0 1 12 5c6 0 10 7 10 7a18 18 0 0 1-3.2 4"}),jsx("path",{d:"M6.6 6.6C3.8 8.4 2 12 2 12s4 7 10 7a10.6 10.6 0 0 0 4.1-.8"})]})}function C(n){return jsxs(t,{...n,children:[jsx("path",{d:"M4 13l2-8h12l2 8"}),jsx("path",{d:"M4 13h5l2 3h2l2-3h5v6H4z"})]})}function y(n){return jsxs(t,{...n,children:[jsx("path",{d:"M4 4h6v6H4z"}),jsx("path",{d:"M14 4h6v6h-6z"}),jsx("path",{d:"M4 14h6v6H4z"}),jsx("path",{d:"M14 14h6v6h-6z"})]})}function k(n){return jsxs(t,{...n,children:[jsx("path",{d:"M8 6h13"}),jsx("path",{d:"M8 12h13"}),jsx("path",{d:"M8 18h13"}),jsx("path",{d:"M3 6h.01"}),jsx("path",{d:"M3 12h.01"}),jsx("path",{d:"M3 18h.01"})]})}function S(n){return jsxs(t,{...n,children:[jsx("circle",{cx:"11",cy:"11",r:"7"}),jsx("path",{d:"M16 16l5 5"})]})}function H(n){return jsxs(t,{...n,children:[jsx("path",{d:"M8 9l4-4 4 4"}),jsx("path",{d:"M16 15l-4 4-4-4"})]})}function R(n){return jsxs(t,{...n,children:[jsx("path",{d:"M18 6L6 18"}),jsx("path",{d:"M6 6l12 12"})]})}export{e as a,a as b,I as c,d,M as e,u as f,l as g,s as h,i,f as j,x as k,v as l,P as m,L as n,z as o,C as p,y as q,k as r,S as s,H as t,R as u};//# sourceMappingURL=chunk-CVR2ZXHQ.js.map +//# sourceMappingURL=chunk-CVR2ZXHQ.js.map \ No newline at end of file diff --git a/dist/chunk-CVR2ZXHQ.js.map b/dist/chunk-CVR2ZXHQ.js.map new file mode 100644 index 0000000..8bacd6b --- /dev/null +++ b/dist/chunk-CVR2ZXHQ.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/core/icons.tsx"],"names":["Icon","children","viewBox","props","jsx","IconAdjustmentsHorizontal","jsxs","IconCheck","IconChevronDown","IconChevronLeft","IconChevronRight","IconChevronUp","IconChevronsLeft","IconChevronsRight","IconClock","IconDatabase","IconDots","IconDownload","IconEdit","IconEye","IconEyeOff","IconInbox","IconLayoutGrid","IconList","IconSearch","IconSelector","IconX"],"mappings":"uDAIA,SAASA,CAAAA,CAAK,CACZ,QAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CAAU,YACV,GAAGC,CACL,CAAA,CAA8C,CAC5C,OACEC,GAAAA,CAAC,KAAA,CAAA,CACC,aAAA,CAAY,OACZ,SAAA,CAAU,OAAA,CACV,KAAA,CAAM,KAAA,CACN,OAAO,KAAA,CACP,OAAA,CAASF,CAAAA,CACT,IAAA,CAAK,OACL,MAAA,CAAO,cAAA,CACP,WAAA,CAAY,GAAA,CACZ,aAAA,CAAc,OAAA,CACd,cAAA,CAAe,OAAA,CACd,GAAGC,CAAAA,CAEH,QAAA,CAAAF,CAAAA,CACH,CAEJ,CAEO,SAASI,CAAAA,CAA0BF,CAAAA,CAAkB,CAC1D,OACEG,IAAAA,CAACN,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAA,CAAAC,GAAAA,CAAC,MAAA,CAAA,CAAK,EAAE,QAAA,CAAS,CAAA,CACjBA,GAAAA,CAAC,MAAA,CAAA,CAAK,EAAE,SAAA,CAAU,CAAA,CAClBA,GAAAA,CAAC,MAAA,CAAA,CAAK,EAAE,SAAA,CAAU,CAAA,CAClBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,UAAA,CAAW,CAAA,CACnBA,GAAAA,CAAC,QAAK,CAAA,CAAE,UAAA,CAAW,CAAA,CACnBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,UAAA,CAAW,CAAA,CAAA,CACrB,CAEJ,CAiCO,SAASG,CAAAA,CAAUJ,CAAAA,CAAkB,CAC1C,OACEC,GAAAA,CAACJ,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAAC,GAAAA,CAAC,QAAK,CAAA,CAAE,gBAAA,CAAiB,CAAA,CAC3B,CAEJ,CAEO,SAASI,CAAAA,CAAgBL,CAAAA,CAAkB,CAChD,OACEC,GAAAA,CAACJ,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAAC,GAAAA,CAAC,MAAA,CAAA,CAAK,EAAE,cAAA,CAAe,CAAA,CACzB,CAEJ,CAEO,SAASK,CAAAA,CAAgBN,CAAAA,CAAkB,CAChD,OACEC,GAAAA,CAACJ,CAAAA,CAAA,CAAM,GAAGG,EACR,QAAA,CAAAC,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,iBAAiB,CAAA,CAC3B,CAEJ,CAEO,SAASM,EAAiBP,CAAAA,CAAkB,CACjD,OACEC,GAAAA,CAACJ,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,SAAAC,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,cAAA,CAAe,CAAA,CACzB,CAEJ,CAEO,SAASO,EAAcR,CAAAA,CAAkB,CAC9C,OACEC,GAAAA,CAACJ,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,SAAAC,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,eAAA,CAAgB,EAC1B,CAEJ,CAEO,SAASQ,CAAAA,CAAiBT,EAAkB,CACjD,OACEG,IAAAA,CAACN,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAA,CAAAC,IAAC,MAAA,CAAA,CAAK,CAAA,CAAE,gBAAA,CAAiB,CAAA,CACzBA,IAAC,MAAA,CAAA,CAAK,CAAA,CAAE,gBAAA,CAAiB,CAAA,CAAA,CAC3B,CAEJ,CAEO,SAASS,CAAAA,CAAkBV,CAAAA,CAAkB,CAClD,OACEG,IAAAA,CAACN,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAA,CAAAC,GAAAA,CAAC,QAAK,CAAA,CAAE,cAAA,CAAe,CAAA,CACvBA,GAAAA,CAAC,QAAK,CAAA,CAAE,eAAA,CAAgB,CAAA,CAAA,CAC1B,CAEJ,CAEO,SAASU,CAAAA,CAAUX,CAAAA,CAAkB,CAC1C,OACEG,IAAAA,CAACN,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAA,CAAAC,GAAAA,CAAC,UAAO,EAAA,CAAG,IAAA,CAAK,EAAA,CAAG,IAAA,CAAK,CAAA,CAAE,GAAA,CAAI,CAAA,CAC9BA,GAAAA,CAAC,QAAK,CAAA,CAAE,aAAA,CAAc,CAAA,CAAA,CACxB,CAEJ,CAEO,SAASW,CAAAA,CAAaZ,CAAAA,CAAkB,CAC7C,OACEG,IAAAA,CAACN,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAA,CAAAC,GAAAA,CAAC,SAAA,CAAA,CAAQ,GAAG,IAAA,CAAK,EAAA,CAAG,GAAA,CAAI,EAAA,CAAG,IAAI,EAAA,CAAG,GAAA,CAAI,CAAA,CACtCA,GAAAA,CAAC,QAAK,CAAA,CAAE,oCAAA,CAAqC,CAAA,CAC7CA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,sCAAA,CAAuC,CAAA,CAAA,CACjD,CAEJ,CAEO,SAASY,CAAAA,CAASb,CAAAA,CAAkB,CACzC,OACEG,IAAAA,CAACN,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAA,CAAAC,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,WAAA,CAAY,CAAA,CACpBA,GAAAA,CAAC,QAAK,CAAA,CAAE,YAAA,CAAa,CAAA,CACrBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,YAAA,CAAa,CAAA,CAAA,CACvB,CAEJ,CAEO,SAASa,CAAAA,CAAad,CAAAA,CAAkB,CAC7C,OACEG,IAAAA,CAACN,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAA,CAAAC,GAAAA,CAAC,QAAK,CAAA,CAAE,UAAA,CAAW,CAAA,CACnBA,GAAAA,CAAC,QAAK,CAAA,CAAE,eAAA,CAAgB,CAAA,CACxBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,UAAA,CAAW,CAAA,CAAA,CACrB,CAEJ,CAEO,SAASc,CAAAA,CAASf,CAAAA,CAAkB,CACzC,OACEG,IAAAA,CAACN,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAA,CAAAC,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,2BAAA,CAA4B,CAAA,CACpCA,GAAAA,CAAC,QAAK,CAAA,CAAE,WAAA,CAAY,CAAA,CAAA,CACtB,CAEJ,CAEO,SAASe,CAAAA,CAAQhB,CAAAA,CAAkB,CACxC,OACEG,IAAAA,CAACN,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAA,CAAAC,GAAAA,CAAC,MAAA,CAAA,CAAK,EAAE,8CAAA,CAA+C,CAAA,CACvDA,GAAAA,CAAC,QAAA,CAAA,CAAO,EAAA,CAAG,IAAA,CAAK,EAAA,CAAG,IAAA,CAAK,EAAE,GAAA,CAAI,CAAA,CAAA,CAChC,CAEJ,CAEO,SAASgB,CAAAA,CAAWjB,CAAAA,CAAkB,CAC3C,OACEG,IAAAA,CAACN,CAAAA,CAAA,CAAM,GAAGG,EACR,QAAA,CAAA,CAAAC,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,aAAa,CAAA,CACrBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,8BAAA,CAA+B,CAAA,CACvCA,GAAAA,CAAC,MAAA,CAAA,CAAK,EAAE,+DAAA,CAAgE,CAAA,CACxEA,GAAAA,CAAC,MAAA,CAAA,CAAK,EAAE,4DAAA,CAA6D,CAAA,CAAA,CACvE,CAEJ,CAaO,SAASiB,CAAAA,CAAUlB,CAAAA,CAAkB,CAC1C,OACEG,IAAAA,CAACN,CAAAA,CAAA,CAAM,GAAGG,EACR,QAAA,CAAA,CAAAC,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,mBAAmB,CAAA,CAC3BA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,2BAA2B,CAAA,CAAA,CACrC,CAEJ,CAEO,SAASkB,CAAAA,CAAenB,CAAAA,CAAkB,CAC/C,OACEG,KAACN,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAA,CAAAC,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,cAAc,CAAA,CACtBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,eAAA,CAAgB,CAAA,CACxBA,GAAAA,CAAC,MAAA,CAAA,CAAK,EAAE,cAAA,CAAe,CAAA,CACvBA,GAAAA,CAAC,MAAA,CAAA,CAAK,EAAE,gBAAA,CAAiB,CAAA,CAAA,CAC3B,CAEJ,CAEO,SAASmB,CAAAA,CAASpB,CAAAA,CAAkB,CACzC,OACEG,IAAAA,CAACN,CAAAA,CAAA,CAAM,GAAGG,EACR,QAAA,CAAA,CAAAC,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,UAAU,CAAA,CAClBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,WAAW,CAAA,CACnBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,UAAA,CAAW,CAAA,CACnBA,GAAAA,CAAC,MAAA,CAAA,CAAK,EAAE,UAAA,CAAW,CAAA,CACnBA,GAAAA,CAAC,MAAA,CAAA,CAAK,EAAE,WAAA,CAAY,CAAA,CACpBA,GAAAA,CAAC,MAAA,CAAA,CAAK,EAAE,WAAA,CAAY,CAAA,CAAA,CACtB,CAEJ,CAaO,SAASoB,CAAAA,CAAWrB,CAAAA,CAAkB,CAC3C,OACEG,IAAAA,CAACN,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAA,CAAAC,GAAAA,CAAC,QAAA,CAAA,CAAO,GAAG,IAAA,CAAK,EAAA,CAAG,IAAA,CAAK,CAAA,CAAE,GAAA,CAAI,CAAA,CAC9BA,GAAAA,CAAC,MAAA,CAAA,CAAK,EAAE,YAAA,CAAa,CAAA,CAAA,CACvB,CAEJ,CAEO,SAASqB,CAAAA,CAAatB,CAAAA,CAAkB,CAC7C,OACEG,KAACN,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,QAAA,CAAA,CAAAC,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,eAAe,CAAA,CACvBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,kBAAkB,CAAA,CAAA,CAC5B,CAEJ,CA8BO,SAASsB,EAAMvB,CAAAA,CAAkB,CACtC,OACEG,IAAAA,CAACN,CAAAA,CAAA,CAAM,GAAGG,CAAAA,CACR,UAAAC,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,YAAA,CAAa,EACrBA,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,YAAA,CAAa,GACvB,CAEJ","file":"chunk-CVR2ZXHQ.js","sourcesContent":["import * as React from \"react\";\n\ntype IconProps = React.SVGProps;\n\nfunction Icon({\n children,\n viewBox = \"0 0 24 24\",\n ...props\n}: IconProps & { children: React.ReactNode }) {\n return (\n \n {children}\n \n );\n}\n\nexport function IconAdjustmentsHorizontal(props: IconProps) {\n return (\n \n \n \n \n \n \n \n \n );\n}\n\nexport function IconArchive(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconBell(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconBriefcase(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconCheck(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronDown(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronLeft(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronRight(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronUp(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconChevronsLeft(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconChevronsRight(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconClock(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconDatabase(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconDots(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconDownload(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconEdit(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconEye(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconEyeOff(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconFileUpload(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconInbox(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconLayoutGrid(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconList(props: IconProps) {\n return (\n \n \n \n \n \n \n \n \n );\n}\n\nexport function IconRefresh(props: IconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function IconSearch(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconSelector(props: IconProps) {\n return (\n \n \n \n \n );\n}\n\nexport function IconSparkles(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconStar(props: IconProps) {\n return (\n \n \n \n );\n}\n\nexport function IconUserCheck(props: IconProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport function IconX(props: IconProps) {\n return (\n \n \n \n \n );\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-DV3HO2TR.js.map b/dist/chunk-DV3HO2TR.js.map deleted file mode 100644 index 1f5e867..0000000 --- a/dist/chunk-DV3HO2TR.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/adapters/thegridcn/index.tsx"],"names":["withClassName","Component","defaultClassName","className","props","jsx","cn","GridButton","Button","GridCard","Card","GridCardHeader","CardHeader","GridCardContent","CardContent","GridCheckbox","Checkbox","GridDropdownMenuContent","DropdownMenuContent","GridDropdownMenuItem","DropdownMenuItem","GridDropdownMenuCheckboxItem","DropdownMenuCheckboxItem","GridDropdownMenuRadioItem","DropdownMenuRadioItem","GridDropdownMenuLabel","DropdownMenuLabel","GridDropdownMenuSeparator","DropdownMenuSeparator","GridDropdownMenuSubContent","DropdownMenuSubContent","GridDropdownMenuSubTrigger","DropdownMenuSubTrigger","GridEmpty","Empty","GridEmptyMedia","EmptyMedia","GridEmptyTitle","EmptyTitle","GridEmptyDescription","EmptyDescription","GridInput","Input","GridInputGroup","InputGroup","GridPaginationLink","PaginationLink","GridScrollArea","ScrollArea","GridScrollBar","ScrollBar","GridSelectTrigger","SelectTrigger","GridSelectContent","SelectContent","GridSelectItem","SelectItem","GridSeparator","Separator","GridSkeleton","Skeleton","GridTable","Table","GridTableHeader","TableHeader","GridTableBody","TableBody","GridTableFooter","TableFooter","GridTableHead","TableHead","GridTableRow","TableRow","GridTableCell","TableCell","GridTableCaption","TableCaption","GridTooltipContent","TooltipContent","theGridcnUiKit","primitiveUiKit"],"mappings":"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","file":"chunk-DV3HO2TR.js","sourcesContent":["import * as React from \"react\";\nimport type { DataTableUiKit } from \"../../core/ui-kit\";\nimport {\n Button as PrimitiveButton,\n Card as PrimitiveCard,\n CardContent as PrimitiveCardContent,\n CardHeader as PrimitiveCardHeader,\n Checkbox as PrimitiveCheckbox,\n DropdownMenuCheckboxItem as PrimitiveDropdownMenuCheckboxItem,\n DropdownMenuContent as PrimitiveDropdownMenuContent,\n DropdownMenuItem as PrimitiveDropdownMenuItem,\n DropdownMenuLabel as PrimitiveDropdownMenuLabel,\n DropdownMenuRadioItem as PrimitiveDropdownMenuRadioItem,\n DropdownMenuSeparator as PrimitiveDropdownMenuSeparator,\n DropdownMenuSubContent as PrimitiveDropdownMenuSubContent,\n DropdownMenuSubTrigger as PrimitiveDropdownMenuSubTrigger,\n Empty as PrimitiveEmpty,\n EmptyDescription as PrimitiveEmptyDescription,\n EmptyMedia as PrimitiveEmptyMedia,\n EmptyTitle as PrimitiveEmptyTitle,\n Input as PrimitiveInput,\n InputGroup as PrimitiveInputGroup,\n PaginationLink as PrimitivePaginationLink,\n ScrollArea as PrimitiveScrollArea,\n ScrollBar as PrimitiveScrollBar,\n SelectContent as PrimitiveSelectContent,\n SelectItem as PrimitiveSelectItem,\n SelectTrigger as PrimitiveSelectTrigger,\n Separator as PrimitiveSeparator,\n Skeleton as PrimitiveSkeleton,\n Table as PrimitiveTable,\n TableBody as PrimitiveTableBody,\n TableCaption as PrimitiveTableCaption,\n TableCell as PrimitiveTableCell,\n TableFooter as PrimitiveTableFooter,\n TableHead as PrimitiveTableHead,\n TableHeader as PrimitiveTableHeader,\n TableRow as PrimitiveTableRow,\n TooltipContent as PrimitiveTooltipContent,\n primitiveUiKit,\n} from \"../../core/primitive-ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nfunction withClassName(\n Component: React.ComponentType,\n defaultClassName: string,\n) {\n return function Wrapped({ className, ...props }: TProps) {\n return (\n \n );\n };\n}\n\nconst GridButton = withClassName(\n PrimitiveButton,\n \"rounded-md border border-cyan-400/45 bg-black/75 font-mono text-[0.8rem] tracking-[0.045em] text-cyan-50 uppercase shadow-[0_0_0_1px_rgba(34,211,238,0.12),0_0_18px_rgba(34,211,238,0.1)] data-[variant=default]:bg-cyan-300 data-[variant=default]:text-slate-950 data-[variant=outline]:bg-black/55 data-[variant=ghost]:border-transparent data-[variant=ghost]:bg-transparent data-[variant=ghost]:hover:bg-cyan-400/10 data-[variant=secondary]:bg-cyan-400/12 data-[variant=destructive]:border-rose-400/50 data-[variant=destructive]:bg-rose-500/15 data-[variant=destructive]:text-rose-200\",\n);\nconst GridCard = withClassName(\n PrimitiveCard,\n \"rounded-md border border-cyan-400/35 bg-[linear-gradient(180deg,rgba(0,229,255,0.055),transparent_58%),rgba(1,8,11,0.9)] font-mono text-cyan-50 shadow-[inset_0_1px_0_rgba(125,211,252,0.08),0_0_0_1px_rgba(34,211,238,0.12),0_0_28px_rgba(34,211,238,0.08)] ring-0\",\n);\nconst GridCardHeader = withClassName(PrimitiveCardHeader, \"px-5 pt-5 pb-3\");\nconst GridCardContent = withClassName(PrimitiveCardContent, \"px-5 pb-5\");\nconst GridCheckbox = withClassName(\n PrimitiveCheckbox,\n \"rounded-sm border-cyan-400/55 bg-black/65 ring-cyan-300/70 data-checked:bg-cyan-300 data-checked:text-slate-950 data-checked:ring-cyan-300\",\n);\nconst GridDropdownMenuContent = withClassName(\n PrimitiveDropdownMenuContent,\n \"rounded-md border border-cyan-400/35 bg-black/92 font-mono text-cyan-50 shadow-[0_0_26px_rgba(34,211,238,0.16)] ring-0 before:hidden **:data-[slot$=-item]:focus:bg-cyan-400/12 **:data-[slot$=-item]:data-highlighted:bg-cyan-400/12 **:data-[slot$=-separator]:bg-cyan-400/18 **:data-[slot$=-trigger]:focus:bg-cyan-400/12\",\n);\nconst GridDropdownMenuItem = withClassName(\n PrimitiveDropdownMenuItem,\n \"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50 data-[variant=destructive]:text-rose-200 data-[variant=destructive]:focus:bg-rose-500/15\",\n);\nconst GridDropdownMenuCheckboxItem = withClassName(\n PrimitiveDropdownMenuCheckboxItem,\n \"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50\",\n);\nconst GridDropdownMenuRadioItem = withClassName(\n PrimitiveDropdownMenuRadioItem,\n \"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50\",\n);\nconst GridDropdownMenuLabel = withClassName(\n PrimitiveDropdownMenuLabel,\n \"font-mono text-[0.68rem] tracking-[0.16em] text-cyan-200/70 uppercase\",\n);\nconst GridDropdownMenuSeparator = withClassName(\n PrimitiveDropdownMenuSeparator,\n \"bg-cyan-400/20\",\n);\nconst GridDropdownMenuSubContent = withClassName(\n PrimitiveDropdownMenuSubContent,\n \"rounded-md border border-cyan-400/35 bg-black/92 font-mono text-cyan-50 shadow-[0_0_26px_rgba(34,211,238,0.16)] ring-0 before:hidden\",\n);\nconst GridDropdownMenuSubTrigger = withClassName(\n PrimitiveDropdownMenuSubTrigger,\n \"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50 data-open:bg-cyan-400/12 data-open:text-cyan-50\",\n);\nconst GridEmpty = withClassName(\n PrimitiveEmpty,\n \"rounded-md border-cyan-400/35 bg-black/80 font-mono text-cyan-50\",\n);\nconst GridEmptyMedia = withClassName(\n PrimitiveEmptyMedia,\n \"[&[data-variant=icon]]:rounded-xl [&[data-variant=icon]]:bg-cyan-400/12 [&[data-variant=icon]]:text-cyan-200\",\n);\nconst GridEmptyTitle = withClassName(PrimitiveEmptyTitle, \"text-cyan-50\");\nconst GridEmptyDescription = withClassName(\n PrimitiveEmptyDescription,\n \"text-cyan-100/70\",\n);\nconst GridInput = withClassName(\n PrimitiveInput,\n \"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 placeholder:text-cyan-100/45 focus-visible:ring-cyan-300/70\",\n);\nconst GridInputGroup = withClassName(\n PrimitiveInputGroup,\n \"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 shadow-[0_0_18px_rgba(34,211,238,0.06)]\",\n);\nconst GridPaginationLink = withClassName(\n PrimitivePaginationLink,\n \"rounded-md border-cyan-400/35 bg-black/55 font-mono text-cyan-50 hover:bg-cyan-400/12 data-[active=true]:bg-cyan-300 data-[active=true]:text-slate-950\",\n);\nconst GridScrollArea = withClassName(\n PrimitiveScrollArea,\n \"rounded-md border border-cyan-400/35 bg-black/72 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_26px_rgba(34,211,238,0.08)]\",\n);\nconst GridScrollBar = withClassName(\n PrimitiveScrollBar,\n \"[&>[data-slot=scroll-area-thumb]]:bg-cyan-300/65\",\n);\nconst GridSelectTrigger = withClassName(\n PrimitiveSelectTrigger,\n \"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 focus-visible:ring-cyan-300/70\",\n);\nconst GridSelectContent = withClassName(\n PrimitiveSelectContent,\n \"rounded-md border border-cyan-400/35 bg-black/95 font-mono text-cyan-50 ring-0 shadow-[0_0_26px_rgba(34,211,238,0.16)] before:hidden\",\n);\nconst GridSelectItem = withClassName(\n PrimitiveSelectItem,\n \"rounded-sm focus:bg-cyan-400/12 focus:text-cyan-50\",\n);\nconst GridSeparator = withClassName(PrimitiveSeparator, \"bg-cyan-400/20\");\nconst GridSkeleton = withClassName(\n PrimitiveSkeleton,\n \"rounded-md bg-cyan-400/12\",\n);\nconst GridTable = withClassName(\n PrimitiveTable,\n \"border-separate border-spacing-0 border border-cyan-400/45 bg-black/72 font-mono text-[0.84rem] text-cyan-50 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_24px_rgba(34,211,238,0.08)]\",\n);\nconst GridTableHeader = withClassName(\n PrimitiveTableHeader,\n \"[&_tr]:border-cyan-400/45\",\n);\nconst GridTableBody = withClassName(\n PrimitiveTableBody,\n \"[&_tr:last-child]:border-b\",\n);\nconst GridTableFooter = withClassName(\n PrimitiveTableFooter,\n \"border-cyan-400/40 bg-cyan-400/10 font-mono\",\n);\nconst GridTableHead = withClassName(\n PrimitiveTableHead,\n \"h-12 border-b border-cyan-400/45 bg-cyan-950/20 px-3 font-mono text-[0.68rem] font-bold tracking-[0.18em] text-cyan-300 uppercase\",\n);\nconst GridTableRow = withClassName(\n PrimitiveTableRow,\n \"border-cyan-400/25 hover:bg-cyan-400/10 data-[state=selected]:bg-cyan-400/15\",\n);\nconst GridTableCell = withClassName(\n PrimitiveTableCell,\n \"border-b border-cyan-400/16 px-3 py-3 font-mono text-cyan-50\",\n);\nconst GridTableCaption = withClassName(\n PrimitiveTableCaption,\n \"font-mono text-cyan-100/65\",\n);\nconst GridTooltipContent = withClassName(\n PrimitiveTooltipContent,\n \"rounded-md bg-black text-cyan-50 ring-1 ring-cyan-400/35 shadow-[0_0_22px_rgba(34,211,238,0.18)] [&>svg]:bg-black [&>svg]:fill-black\",\n);\n\nexport const theGridcnUiKit: DataTableUiKit = {\n ...primitiveUiKit,\n rootClassName: \"dtp-thegridcn\",\n classNames: {\n card: \"hover:bg-cyan-400/10 data-[state=selected]:bg-cyan-400/15\",\n cardGrid: \"bg-transparent\",\n cardItem: \"min-w-0\",\n cardOverlay: \"from-black/95 via-black/75 to-transparent\",\n cardScrollArea: \"bg-transparent\",\n cardSelected: \"bg-cyan-400/15 ring-cyan-300/70\",\n cardUnselected: \"border-cyan-400/35\",\n cardViewport: \"bg-transparent\",\n cellBorder: \"border-cyan-400/16\",\n columnGroupHeader: \"bg-cyan-400/10 text-cyan-200\",\n dragActive: \"rounded-md border-dashed border-cyan-300\",\n emptyState: \"border-cyan-400/35 bg-black/80\",\n footer: \"border-cyan-400/40 bg-black/80 text-cyan-50\",\n headerSortIcon: \"text-cyan-100/65\",\n mutedText: \"text-cyan-100/70\",\n paginationSelectTrigger: \"border-cyan-400/45 bg-black/70 text-cyan-50\",\n paginationTotal: \"text-cyan-100/70\",\n pinnedColumn: \"border-cyan-400/25\",\n pinnedUtilityColumn: \"bg-black/80\",\n resizeHandle: \"after:bg-cyan-400/20 hover:after:bg-cyan-300\",\n resizeHandleActive: \"after:bg-cyan-300\",\n row: \"hover:bg-cyan-400/10 data-[state=selected]:!bg-cyan-400/15\",\n rowSelected: \"!bg-cyan-400/15\",\n tableContainer:\n \"border-cyan-400/35 bg-black/72 text-cyan-50 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_26px_rgba(34,211,238,0.08)]\",\n tableScrollArea: \"bg-black/72\",\n tableStickyHeader:\n \"sticky top-0 z-30 bg-black/90 backdrop-blur [&_th]:border-cyan-400/45 [&_th]:bg-black/90\",\n toolbarCompactIconButton: \"size-7\",\n toolbarIconButton: \"text-cyan-100/70 hover:text-cyan-50\",\n toolbarInputButton: \"border-cyan-400/45 bg-black/70 text-cyan-50\",\n },\n Button: GridButton,\n Card: GridCard,\n CardContent: GridCardContent,\n CardHeader: GridCardHeader,\n Checkbox: GridCheckbox,\n DropdownMenuCheckboxItem: GridDropdownMenuCheckboxItem,\n DropdownMenuContent: GridDropdownMenuContent,\n DropdownMenuItem: GridDropdownMenuItem,\n DropdownMenuLabel: GridDropdownMenuLabel,\n DropdownMenuRadioItem: GridDropdownMenuRadioItem,\n DropdownMenuSeparator: GridDropdownMenuSeparator,\n DropdownMenuSubContent: GridDropdownMenuSubContent,\n DropdownMenuSubTrigger: GridDropdownMenuSubTrigger,\n Empty: GridEmpty,\n EmptyDescription: GridEmptyDescription,\n EmptyMedia: GridEmptyMedia,\n EmptyTitle: GridEmptyTitle,\n Input: GridInput,\n InputGroup: GridInputGroup,\n PaginationLink: GridPaginationLink,\n ScrollArea: GridScrollArea,\n ScrollBar: GridScrollBar,\n SelectContent: GridSelectContent,\n SelectItem: GridSelectItem,\n SelectTrigger: GridSelectTrigger,\n Separator: GridSeparator,\n Skeleton: GridSkeleton,\n Table: GridTable,\n TableBody: GridTableBody,\n TableCaption: GridTableCaption,\n TableCell: GridTableCell,\n TableFooter: GridTableFooter,\n TableHead: GridTableHead,\n TableHeader: GridTableHeader,\n TableRow: GridTableRow,\n TooltipContent: GridTooltipContent,\n};\n"]} \ No newline at end of file diff --git a/dist/chunk-GSCYQ624.js b/dist/chunk-GSCYQ624.js deleted file mode 100644 index f9b8a9c..0000000 --- a/dist/chunk-GSCYQ624.js +++ /dev/null @@ -1,2 +0,0 @@ -import {clsx}from'clsx';import {twMerge}from'tailwind-merge';function g(...e){return twMerge(clsx(e))}var s={sm:640,md:768,lg:1024,xl:1280,"2xl":1536};function u(e,a,t){return !a||t?true:!a.getIsHidden(e)}function p(e,a){return typeof e=="function"?e(a):e}function D(e,a){return !e.hidden?.(a)}function c(e,a){return e?.canEditRow?e.canEditRow(a):!!e}function n(e){switch(e){case "center":return "text-center";case "end":return "text-right";default:return "text-left"}}function o(e,a){return e||(a==="numeric"?"end":"start")}function m(e){let a=e.column.columnDef.meta;return n(o(a?.align,a?.type))}function w(e){let a=e.column.columnDef.meta;return n(o(a?.align,a?.type))}function C(e){return e?(Array.isArray(e)?e:[e]).map(t=>`dt-hide-on-${t}`).join(" "):void 0}function y(e,a){return !e||a<=0?false:(Array.isArray(e)?e:[e]).some(i=>a = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n \"2xl\": 1536,\n};\n\nexport type DataTableRowLoadingState = {\n isLoading: boolean;\n skeleton?: React.ReactNode;\n};\n\nexport type DataTableLoadingState = {\n isLoading: boolean;\n loadingRowCount?: number;\n};\n\nexport type DataTableCellEditRenderProps = {\n cell: CellContext;\n row: TData;\n value: TValue | undefined;\n draftValue: unknown;\n setDraftValue: (value: unknown) => void;\n};\n\nexport type DataTableColumnFilterOption = {\n label: string;\n value: string;\n};\n\nexport type DataTableColumnFilterRangeValue = {\n from?: TValue;\n to?: TValue;\n};\n\nexport type DataTableColumnFilterConfig = {\n type: DataTableColumnFilterType;\n label?: string;\n placeholder?: string;\n options?:\n | Array\n | ((context: { rows: Array }) => Array);\n getOptionValue?: (value: TValue | undefined, row: TData) => string;\n operator?: DataTableColumnFilterOperator;\n trueLabel?: string;\n falseLabel?: string;\n min?: number | string;\n max?: number | string;\n step?: number;\n};\n\nexport type DataTableColumnMeta = {\n type?: DataTableColumnType;\n fixed?: DataTableColumnFixed;\n cardTitle?: boolean;\n hideOn?: DataTableContainerBreakpoint | Array;\n minWidth?: number;\n align?: DataTableAlign;\n overflow?:\n | DataTableCellOverflow\n | ((args: {\n row: TData;\n value: TValue | undefined;\n }) => DataTableCellOverflow | undefined);\n headerClassName?: string;\n headerStyle?: React.CSSProperties;\n cellClassName?:\n | string\n | ((args: { row: TData; value: TValue | undefined }) => string | undefined);\n responsiveClassName?: string;\n skeleton?: (context: CellContext) => React.ReactNode;\n filter?: DataTableColumnFilterConfig;\n parseEditValue?: (value: unknown, context: CellContext) => unknown;\n formatEditValue?: (\n value: unknown,\n context: CellContext,\n ) => string;\n renderEditCell?: (\n props: DataTableCellEditRenderProps,\n ) => React.ReactNode;\n};\n\nexport type DataTableColumnDef = ColumnDef<\n TData,\n TValue\n> & {\n meta?: DataTableColumnMeta;\n columns?: Array>;\n};\n\nexport type DataTableColumnGroupDef = DataTableColumnDef<\n TData,\n unknown\n> & {\n id: string;\n columns: Array>;\n /**\n * A concise explanation of the columns in this group. It is exposed as an\n * accessible description and native tooltip on the shared header.\n */\n description?: string;\n /**\n * Allows leaves to cross this group's boundary during column reordering.\n * Groups are locked by default so a shared heading remains intact.\n */\n freeReordering?: boolean;\n /** Additional class name for this shared group header. */\n headerClassName?: string;\n /** Additional inline styles for this shared group header. */\n headerStyle?: React.CSSProperties;\n /** Height for this shared group header, overriding `columnGroupHeaderHeight`. */\n headerHeight?: React.CSSProperties[\"height\"];\n};\n\nexport type DataTableToolbarAction = {\n key: string;\n label: string;\n icon?: React.ComponentType<{ className?: string }>;\n iconOnly?: boolean;\n placement?: \"primary\" | \"trailing\";\n onClick: (context: {\n rows: Array;\n openFileDialog?: () => void;\n }) => void | Promise;\n variant?: \"default\" | \"secondary\" | \"outline\" | \"ghost\" | \"destructive\";\n disabled?: boolean;\n};\n\nexport type DataTableSelectionActionContext = {\n /** Selected row objects that are present in the currently loaded data. */\n rows: Array;\n /** Every selected row id, including ids retained across server pages. */\n rowIds: Array;\n};\n\nexport type DataTableSelectionAction = {\n key: string;\n label: string;\n icon?: React.ComponentType<{ className?: string }>;\n iconOnly?: boolean;\n onClick: (context: DataTableSelectionActionContext) => void | Promise;\n variant?: \"default\" | \"secondary\" | \"outline\" | \"ghost\" | \"destructive\";\n disabled?:\n | boolean\n | ((\n rows: Array,\n context: DataTableSelectionActionContext,\n ) => boolean);\n};\n\nexport type DataTableRowAction = {\n key: string;\n label: string | ((row: TData) => string);\n icon?: React.ComponentType<{ className?: string }>;\n onClick: (row: TData) => void | Promise;\n variant?: \"default\" | \"secondary\" | \"destructive\";\n hidden?: (row: TData) => boolean;\n disabled?: (row: TData) => boolean;\n};\n\nexport type DataTableColumnVisibilityOption = {\n id: string;\n label: string;\n visible: boolean;\n canHide: boolean;\n pinned?: false | DataTableColumnFixed;\n};\n\nexport type DataTableToolbarVisibility = {\n title?: boolean;\n search?: boolean;\n actions?: boolean;\n trailingActions?: boolean;\n options?: boolean;\n viewToggle?: boolean;\n customToolbar?: boolean;\n};\n\nexport type DataTableCardRendererProps = {\n row: TData;\n rowId: string;\n depth: number;\n canExpandSubRows: boolean;\n isSubRowsExpanded: boolean;\n toggleSubRowsExpanded: () => void;\n isSelected: boolean;\n onSelectedChange: (nextValue: boolean) => void;\n actions: Array>;\n isEditing: boolean;\n startEditing: () => void;\n cancelEditing: () => void;\n};\n\nexport type DataTableEditableRowsConfig = {\n canEditRow?: (row: TData) => boolean;\n getInitialValues?: (row: TData) => Record;\n onSaveRow: (\n row: TData,\n draftValues: Record,\n ) => void | Promise;\n};\n\nexport type DataTableInfiniteScroll = {\n enabled: boolean;\n hasMore: boolean;\n isLoadingMore?: boolean;\n onLoadMore: () => void | Promise;\n};\n\nexport type DataTableHiddenRowsConfig = {\n getIsHidden: (row: TData) => boolean;\n label?: string;\n};\n\nexport type DataTableEmptyStateContext = {\n rows: Array;\n toolbarQueryValue: string;\n};\n\nexport type DataTableDragAndDropConfig = {\n isDragging?: boolean;\n onDragEnter?: React.DragEventHandler;\n onDragOver?: React.DragEventHandler;\n onDragLeave?: React.DragEventHandler;\n onDrop?: React.DragEventHandler;\n getRowDraggable?: (row: TData) => boolean;\n onRowDragStart?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n onRowDragEnd?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n};\n\nexport type DataTableFileUploadConfig = {\n accept?: string;\n disabled?: boolean;\n multiple?: boolean;\n onFilesSelected: (files: FileList | Array) => void | Promise;\n};\n\nexport type DataTableVirtualizationConfig = {\n enabled?: boolean;\n estimateRowHeight?: number;\n fallbackRowCount?: number;\n overscan?: number;\n card?: DataTableCardVirtualizationConfig;\n};\n\nexport type DataTableCardVirtualizationConfig = {\n enabled?: boolean;\n estimateCardHeight?: number;\n fallbackCardCount?: number;\n overscan?: number;\n lanes?: number | \"auto\";\n};\n\nexport type DataTableExpandedRowProps = {\n row: TData;\n rowId: string;\n tableRow: Row;\n};\n\n/** A separately controlled application detail panel rendered beneath a row. */\nexport type DataTableDetailPanel = {\n expanded?: ExpandedState;\n onExpandedChange?: (expanded: ExpandedState) => void;\n getRowCanExpand?: (row: TData) => boolean;\n render: (props: DataTableExpandedRowProps) => React.ReactNode;\n};\n\nexport type DataTableCsvExportOptions = {\n filename?: string;\n includeHeaders?: boolean;\n columns?: Array;\n scope?: DataTableCsvExportScope;\n escapeFormulaValues?: boolean;\n lineEnding?: \"\\n\" | \"\\r\\n\";\n getCellValue?: (context: {\n row: TData;\n rowId: string;\n columnId: string;\n value: unknown;\n }) => unknown;\n onExport?: (context: {\n csv: string;\n filename: string;\n rows: Array;\n scope: DataTableCsvExportScope;\n }) => void | Promise;\n};\n\nexport type DataTableActionErrorContext = {\n source: DataTableActionErrorSource;\n error: unknown;\n actionKey?: string;\n row?: TData;\n};\n\nexport type DataTableColumnPrefs = {\n visibility?: VisibilityState;\n sizing?: Record;\n order?: ColumnOrderState;\n pinning?: ColumnPinningState;\n rowPinning?: RowPinningState;\n density?: DataTableDensity;\n};\n\nexport type DataTablePersistenceSlice = keyof DataTableColumnPrefs;\n\nexport type DataTablePersistenceStorage = Pick<\n Storage,\n \"getItem\" | \"setItem\" | \"removeItem\"\n>;\n\nexport type DataTablePersistenceOperation =\n | \"read\"\n | \"write\"\n | \"remove\"\n | \"serialize\"\n | \"deserialize\"\n | \"migrate\";\n\nexport type DataTablePersistencePayload = {\n version: string | number;\n state: DataTableColumnPrefs;\n};\n\nexport type DataTablePersistenceConfig = {\n key: string;\n version?: string | number;\n slices?: Array;\n storage?: DataTablePersistenceStorage;\n serialize?: (payload: DataTablePersistencePayload) => string;\n deserialize?: (value: string) => unknown;\n migrate?: (\n payload: { version: unknown; state: unknown },\n targetVersion: string | number,\n ) => DataTableColumnPrefs | undefined;\n debounceMs?: number;\n onError?: (context: {\n error: unknown;\n operation: DataTablePersistenceOperation;\n }) => void;\n};\n\nexport type DataTableState = {\n sorting: SortingState;\n pagination: PaginationState;\n rowSelection: Record;\n columnVisibility: VisibilityState;\n columnFilters: ColumnFiltersState;\n expanded: ExpandedState;\n columnOrder: ColumnOrderState;\n columnPinning: ColumnPinningState;\n rowPinning: RowPinningState;\n columnSizing: ColumnSizingState;\n density: DataTableDensity;\n viewMode: DataTableViewMode;\n showHiddenRows: boolean;\n globalFilter: string;\n};\n\nexport type DataTableInitialState = Partial;\n\nexport type DataTableSavedViewSlice = keyof DataTableState;\n\nexport type DataTableSavedView = {\n id: string;\n name: string;\n createdAt: string;\n updatedAt: string;\n state: Partial;\n};\n\nexport type DataTableSavedViewsPayload = {\n version: string | number;\n views: Array;\n};\n\nexport type DataTableSavedViewsChangeOperation =\n | \"create\"\n | \"rename\"\n | \"delete\"\n | \"clear\";\n\nexport type DataTableSavedViewsConfig = {\n key: string;\n version?: string | number;\n slices?: Array;\n storage?: DataTablePersistenceStorage;\n serialize?: (payload: DataTableSavedViewsPayload) => string;\n deserialize?: (value: string) => unknown;\n migrate?: (\n payload: { version: unknown; views: unknown },\n targetVersion: string | number,\n ) => Array | undefined;\n onChange?: (\n views: Array,\n operation: DataTableSavedViewsChangeOperation,\n ) => void;\n onApply?: (view: DataTableSavedView) => void;\n onError?: (context: {\n error: unknown;\n operation: DataTablePersistenceOperation;\n }) => void;\n};\n\nexport type DataTableResetOptions = {\n clearPersistence?: boolean;\n};\n\nexport type DataTableApi = {\n getTable: () => TanStackTable | null;\n getState: () => DataTableState;\n snapshot: () => DataTableState;\n restore: (state: Partial) => void;\n resetColumnLayout: (options?: DataTableResetOptions) => void;\n resetState: (options?: DataTableResetOptions) => void;\n clearPersistedState: () => boolean;\n getSavedViews: () => Array;\n createSavedView: (name: string) => DataTableSavedView | undefined;\n applySavedView: (id: string) => boolean;\n renameSavedView: (\n id: string,\n name: string,\n ) => DataTableSavedView | undefined;\n deleteSavedView: (id: string) => boolean;\n clearSavedViews: () => boolean;\n pinRow: (rowId: string, position?: \"top\" | \"bottom\") => boolean;\n unpinRow: (rowId: string) => boolean;\n focus: () => void;\n scrollToRow: (rowId: string) => boolean;\n scrollToColumn: (columnId: string) => boolean;\n exportCsv: (\n options?: boolean | DataTableCsvExportOptions,\n ) => Promise;\n};\n\nexport type DataTableLabels = {\n searchPlaceholder: string;\n searchTable: string;\n clearSearch: string;\n noRowsTitle: string;\n noRowsDescription: string;\n noMatchingRowsTitle: string;\n noMatchingRowsDescription: string;\n tableOptions: string;\n columns: string;\n filters: string;\n clearFilters: string;\n filterFrom?: string;\n filterTo?: string;\n filterTrue?: string;\n filterFalse?: string;\n selectedRows: (count: number) => string;\n showHiddenRows: (label: string) => string;\n recordsPerPage: string;\n totalRecords: (count: number) => string;\n pageStatus: (pageIndex: number, pageCount: number) => string;\n pageStatusUnknown?: (pageIndex: number) => string;\n pagination?: string;\n morePages?: string;\n firstPage: string;\n previousPage: string;\n nextPage: string;\n lastPage: string;\n selectAllVisibleRows?: string;\n selectAllFilteredRows?: string;\n selectRow?: string;\n selectCardRow?: (rowId: string) => string;\n switchToTableView?: string;\n switchToCardView?: string;\n tableView?: string;\n cardView?: string;\n allFilterOptions?: string;\n actions: string;\n rowActions: string;\n editRow: string;\n saveEdit: string;\n cancelEdit: string;\n expandRow: string;\n collapseRow: string;\n expandRowDetails?: string;\n collapseRowDetails?: string;\n exportCsv: string;\n density: string;\n compactDensity: string;\n comfortableDensity: string;\n spaciousDensity: string;\n pinLeft: string;\n pinRight: string;\n unpin: string;\n pinRowToTop: string;\n pinRowToBottom: string;\n unpinRow: string;\n resizeColumn: (columnLabel: string) => string;\n};\n\nexport type DataTableSummaryRow = {\n key: string;\n label?: React.ReactNode;\n cells: Record<\n string,\n React.ReactNode | ((context: { rows: Array; columnId: string }) => React.ReactNode)\n >;\n};\n\nexport type DataTableRowClassNameContext = {\n row: TData;\n rowId: string;\n rowIndex: number;\n isEditing: boolean;\n isExpanded: boolean;\n isLoading: boolean;\n isSelected: boolean;\n pinnedPosition: false | \"top\" | \"bottom\";\n};\n\nexport type DataTableProps = {\n columns: Array>;\n data: Array;\n getRowId: (row: TData, index: number) => string;\n children?: React.ReactNode;\n title?: string;\n description?: string;\n toolbarQueryValue?: string;\n onToolbarQueryValueChange?: (value: string) => void;\n toolbarQueryPlaceholder?: string;\n toolbarQueryDebounceMs?: number;\n manualFiltering?: boolean;\n enableToolbarQueryFiltering?: boolean;\n globalFilterFn?: FilterFnOption;\n columnFilters?: ColumnFiltersState;\n onColumnFiltersChange?: (filters: ColumnFiltersState) => void;\n enableColumnFilters?: boolean;\n customToolbar?: React.ReactNode;\n compactToolbar?: React.ReactNode;\n rowsPerPageOptions?: Array;\n totalRowCount?: number;\n hasNextPage?: boolean;\n sorting?: SortingState;\n onSortingChange?: (sorting: SortingState) => void;\n manualSorting?: boolean;\n pageIndex?: number;\n pageSize?: number;\n onPageIndexChange?: (pageIndex: number) => void;\n onPageSizeChange?: (pageSize: number) => void;\n pageCount?: number;\n manualPagination?: boolean;\n rowSelection?: Record;\n onRowSelectionChange?: (rowSelection: Record) => void;\n enableRowSelection?: boolean;\n /** Allows multiple selected rows globally or per row. Defaults to true. */\n enableMultiRowSelection?: boolean | ((row: TData) => boolean);\n /** Cascades parent selection to sub-rows globally or per row. Defaults to true. */\n enableSubRowSelection?: boolean | ((row: TData) => boolean);\n /** Prevents individual rows from being selected. */\n getRowCanSelect?: (row: TData) => boolean;\n /** Select-all affects the current page or all loaded filtered rows. */\n rowSelectionSelectAllScope?: \"page\" | \"filtered\";\n expanded?: ExpandedState;\n onExpandedChange?: (expanded: ExpandedState) => void;\n /** Resolve nested records for tree expansion. */\n getSubRows?: (row: TData, index: number) => Array | undefined;\n /** Keep expansion state controlled by the host; useful for server-loaded children. */\n manualExpanding?: boolean;\n /** Keep child rows with their parent when paginating. Defaults to TanStack's behavior. */\n paginateExpandedRows?: boolean;\n /** Include parents when a descendant matches a filter. */\n filterFromLeafRows?: boolean;\n /** Limit descendant traversal while filtering. */\n maxLeafRowFilterDepth?: number;\n /** New, independently controlled detail-panel contract. */\n detailPanel?: DataTableDetailPanel;\n getRowCanExpand?: (row: TData) => boolean;\n /** @deprecated Use `detailPanel={{ render }}`. Kept as a detail-panel bridge. */\n renderExpandedRow?: (\n props: DataTableExpandedRowProps,\n ) => React.ReactNode;\n columnOrder?: ColumnOrderState;\n onColumnOrderChange?: (columnOrder: ColumnOrderState) => void;\n enableColumnReordering?: boolean;\n /** Default height for shared column-group header cells. */\n columnGroupHeaderHeight?: React.CSSProperties[\"height\"];\n columnPinning?: ColumnPinningState;\n onColumnPinningChange?: (columnPinning: ColumnPinningState) => void;\n enableColumnPinning?: boolean;\n rowPinning?: RowPinningState;\n onRowPinningChange?: (rowPinning: RowPinningState) => void;\n /** Enables row actions that pin a row to the top or bottom of the table. */\n enableRowPinning?: boolean | ((row: TData) => boolean);\n /** Keep pinned rows visible when filtering or paginating them out. */\n keepPinnedRows?: boolean;\n toolbarActions?: Array>;\n selectionActions?: Array>;\n rowActions?: Array>;\n csvExport?: boolean | DataTableCsvExportOptions;\n density?: DataTableDensity;\n onDensityChange?: (density: DataTableDensity) => void;\n enableDensityToggle?: boolean;\n columnPrefsKey?: string;\n persistence?: DataTablePersistenceConfig;\n savedViews?: DataTableSavedViewsConfig;\n initialState?: DataTableInitialState;\n state?: Partial;\n onStateChange?: (updater: Updater) => void;\n apiRef?: React.Ref>;\n labels?: Partial;\n summaryRows?: Array>;\n cardRenderer?: (props: DataTableCardRendererProps) => React.ReactNode;\n cardSizing?: DataTableCardSizing;\n cardGridClassName?: string;\n cardClassName?: string;\n viewMode?: DataTableViewMode;\n onViewModeChange?: (viewMode: DataTableViewMode) => void;\n enableViewToggle?: boolean;\n emptyState?:\n | React.ReactNode\n | ((context: DataTableEmptyStateContext) => React.ReactNode);\n isLoading?: boolean;\n loadingRowCount?: number;\n getRowLoadingState?: (\n row: TData,\n index: number,\n ) => boolean | DataTableRowLoadingState;\n hiddenRows?: DataTableHiddenRowsConfig;\n showHiddenRows?: boolean;\n onShowHiddenRowsChange?: (showHiddenRows: boolean) => void;\n infiniteScroll?: DataTableInfiniteScroll;\n editableRows?: DataTableEditableRowsConfig;\n columnVisibility?: VisibilityState;\n onColumnVisibilityChange?: (visibility: VisibilityState) => void;\n columnSizing?: ColumnSizingState;\n onColumnSizingChange?: (sizing: ColumnSizingState) => void;\n enableColumnResizing?: boolean;\n columnResizeMode?: \"onChange\" | \"onEnd\";\n layoutMode?: \"fill\" | \"fit\";\n stickyHeader?: boolean;\n showFooter?: boolean;\n showToolbar?: boolean;\n dir?: \"ltr\" | \"rtl\";\n flexGrow?: boolean;\n toolbarVisibility?: DataTableToolbarVisibility;\n className?: string;\n tableClassName?: string;\n tableContainerClassName?: string;\n stripedRows?: boolean;\n getRowClassName?: (\n row: TData,\n context: DataTableRowClassNameContext,\n ) => string | undefined;\n onRowClick?: (context: { row: TData; rowId: string }) => void | Promise;\n onActionError?: (context: DataTableActionErrorContext) => void;\n dragAndDrop?: DataTableDragAndDropConfig;\n fileUpload?: DataTableFileUploadConfig;\n virtualization?: boolean | DataTableVirtualizationConfig;\n};\n\nexport function isRowVisible(\n row: TData,\n hiddenRows: DataTableHiddenRowsConfig | undefined,\n showHiddenRows: boolean,\n) {\n if (!hiddenRows) {\n return true;\n }\n\n if (showHiddenRows) {\n return true;\n }\n\n return !hiddenRows.getIsHidden(row);\n}\n\nexport function resolveRowActionLabel(\n label: DataTableRowAction[\"label\"],\n row: TData,\n) {\n return typeof label === \"function\" ? label(row) : label;\n}\n\nexport function canUseRowAction(\n action: DataTableRowAction,\n row: TData,\n) {\n return !action.hidden?.(row);\n}\n\nexport function canEditRow(\n editableRows: DataTableEditableRowsConfig | undefined,\n row: TData,\n) {\n return editableRows?.canEditRow\n ? editableRows.canEditRow(row)\n : Boolean(editableRows);\n}\n\nexport function alignClassName(align: DataTableAlign | undefined) {\n switch (align) {\n case \"center\":\n return \"text-center\";\n case \"end\":\n return \"text-right\";\n default:\n return \"text-left\";\n }\n}\n\nexport function resolveColumnAlign(\n align: DataTableAlign | undefined,\n type: DataTableColumnType | undefined,\n) {\n if (align) {\n return align;\n }\n\n if (type === \"numeric\") {\n return \"end\";\n }\n\n return \"start\";\n}\n\nexport function headerAlignClassName(\n context: HeaderContext,\n) {\n const meta = (context.column.columnDef as DataTableColumnDef)\n .meta;\n return alignClassName(resolveColumnAlign(meta?.align, meta?.type));\n}\n\nexport function cellAlignClassName(\n context: CellContext,\n) {\n const meta = (context.column.columnDef as DataTableColumnDef)\n .meta;\n return alignClassName(resolveColumnAlign(meta?.align, meta?.type));\n}\n\nexport function hideOnClassName(\n hideOn:\n | DataTableContainerBreakpoint\n | Array\n | undefined,\n) {\n if (!hideOn) {\n return undefined;\n }\n\n const values = Array.isArray(hideOn) ? hideOn : [hideOn];\n return values.map((value) => `dt-hide-on-${value}`).join(\" \");\n}\n\nexport function isHiddenAtContainerWidth(\n hideOn:\n | DataTableContainerBreakpoint\n | Array\n | undefined,\n containerWidth: number,\n) {\n if (!hideOn || containerWidth <= 0) {\n return false;\n }\n\n const values = Array.isArray(hideOn) ? hideOn : [hideOn];\n return values.some(\n (value) => containerWidth < DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS[value],\n );\n}\n\nexport function rowSelectionStateFromRows(rows: Array>) {\n return rows.map((row) => row.original);\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-HHUJMI3H.js b/dist/chunk-HHUJMI3H.js deleted file mode 100644 index 0e163c3..0000000 --- a/dist/chunk-HHUJMI3H.js +++ /dev/null @@ -1,2 +0,0 @@ -import {a as a$1}from'./chunk-ZA7LQ2JH.js';import {a}from'./chunk-UKIIMIBW.js';import {j}from'./chunk-67Y57KCA.js';function b(r){return j(r,{CardPanel:a$1,TablePanel:a})}export{b as a};//# sourceMappingURL=chunk-HHUJMI3H.js.map -//# sourceMappingURL=chunk-HHUJMI3H.js.map \ No newline at end of file diff --git a/dist/chunk-K7SNDVV2.js b/dist/chunk-K7SNDVV2.js new file mode 100644 index 0000000..8cac111 --- /dev/null +++ b/dist/chunk-K7SNDVV2.js @@ -0,0 +1,2 @@ +import {a}from'./chunk-EJHT5JBZ.js';import {a as a$2}from'./chunk-KDHJA6AH.js';import {a as a$1}from'./chunk-XTVBESM5.js';import*as f from'react';import {useVirtualizer}from'@tanstack/react-virtual';import {jsxs,jsx}from'react/jsx-runtime';function dt({cardClassName:r,cardGridClassName:o,cardSizing:E,cardRenderer:N,containerWidth:V,currentRowSelection:z,currentDetailExpanded:M,DataTableCardView:k,DataTableEmptyState:A,dragAndDrop:c,editableRows:P,editingRowId:I,emptyNode:H,enableRowSelection:_,flexGrow:g,getRowClassName:B,hasCardTitle:K,infiniteScroll:O,localSearchValue:h,onRowClick:j,renderedRows:e,detailPanel:U,resolvedLabels:n,resolvedLoadingRowCount:Y,rowActions:$=[],ScrollArea:q,sentinelRef:F,setCurrentDetailExpanded:J,setCurrentRowSelection:Q,setEditingRowId:X,shouldRenderInitialLoading:m,stateOverlayNode:Z,tableContainerClassName:G,uiClassNames:p,virtualization:R}){let v=m||e.length>0,x=f.useRef(null),{viewportElement:D,viewportHeight:L}=a(x,v),l=typeof R=="object"?R.card:void 0,T=!m&&e.length>0&&l?.enabled===true,i=rt(l?.lanes,V),W=Math.ceil(e.length/i),b=T&&!!D&&L>0,tt=f.useCallback(t=>e[t*i]?.id??t,[i,e]),w=useVirtualizer({count:T?W:0,enabled:b,estimateSize:()=>l?.estimateCardHeight??280,getItemKey:tt,getScrollElement:()=>D,overscan:l?.overscan??4}),at=b?w.getVirtualItems():[],C=(t,s)=>jsx(k,{rows:t,cardRenderer:N,cardGridClassName:o,cardClassName:r,cardSizing:E,rowActions:$,editableRows:P,detailPanel:U,detailExpanded:M,onDetailExpandedChange:J,hasCardTitle:K,rowSelection:z,onRowSelectionChange:Q,enableRowSelection:_,editingRowId:I,onEditingRowIdChange:X,getRowClassName:B,onRowClick:j,getRowDraggable:c?.getRowDraggable,onRowDragStart:c?.onRowDragStart,onRowDragEnd:c?.onRowDragEnd,isLoading:s?.isLoading,loadingRowCount:s?.loadingRowCount,labels:n});return jsxs("div",{ref:x,"data-dtp-slot":"data-table-card-shell",className:a$1("relative box-border border-2 border-transparent transition-colors",g?"flex min-h-0 flex-1 flex-col":"h-full",c?.isDragging&&(p.dragActive??"rounded-md border-dashed")),children:[jsx(q,{className:a$1(g?"min-h-0 flex-1":"h-full",p.cardScrollArea,G),children:jsxs("div",{"data-dtp-slot":"data-table-card-viewport",className:a$1("flex min-h-full min-w-0 flex-col",g&&"min-h-0 flex-1",p.cardViewport),children:[v?m?C([],{isLoading:true,loadingRowCount:Y}):b?jsx("div",{"data-dtp-slot":"data-table-card-virtualizer",style:{height:w.getTotalSize(),position:"relative",width:"100%"},children:at.map(t=>{let s=t.index*i,et=e.slice(s,s+i);return jsx("div",{"data-index":t.index,ref:w.measureElement,style:{left:0,position:"absolute",top:0,transform:`translateY(${t.start}px)`,width:"100%"},children:C(et)},t.key)})}):C(e.slice(0,Math.max(1,Math.floor(l?.fallbackCardCount??12)))):jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center p-4",children:H??jsx(A,{title:h?n.noMatchingRowsTitle:n.noRowsTitle,description:h?n.noMatchingRowsDescription:n.noRowsDescription})}),O?.enabled&&!m?jsx("div",{className:"shrink-0 px-4 pb-4",children:jsx("div",{ref:F,className:"h-4 w-full"})}):null]})}),Z]})}function rt(r,o){return typeof r=="number"?Math.max(1,Math.floor(r)):r!=="auto"?1:o>=a$2["2xl"]?5:o>=a$2.xl?4:o>=a$2.lg?3:o>=a$2.sm?2:1}export{dt as a};//# sourceMappingURL=chunk-K7SNDVV2.js.map +//# sourceMappingURL=chunk-K7SNDVV2.js.map \ No newline at end of file diff --git a/dist/chunk-K7SNDVV2.js.map b/dist/chunk-K7SNDVV2.js.map new file mode 100644 index 0000000..1ee6c59 --- /dev/null +++ b/dist/chunk-K7SNDVV2.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/core/data-table/data-table-virtual-card-panel.tsx"],"names":["DataTableVirtualCardPanel","cardClassName","cardGridClassName","cardSizing","cardRenderer","containerWidth","currentRowSelection","currentDetailExpanded","DataTableCardView","DataTableEmptyState","dragAndDrop","editableRows","editingRowId","emptyNode","enableRowSelection","flexGrow","getRowClassName","hasCardTitle","infiniteScroll","localSearchValue","onRowClick","renderedRows","detailPanel","resolvedLabels","resolvedLoadingRowCount","rowActions","ScrollArea","sentinelRef","setCurrentDetailExpanded","setCurrentRowSelection","setEditingRowId","shouldRenderInitialLoading","stateOverlayNode","tableContainerClassName","uiClassNames","virtualization","shouldRenderCards","cardScrollContainerRef","viewportElement","viewportHeight","useDataTableScrollViewport","virtualizationConfig","enableCardVirtualization","lanes","resolveCardVirtualizationLanes","virtualRowCount","shouldUseVirtualCardRows","getItemKey","index","cardVirtualizer","useVirtualizer","virtualCardRows","renderCardView","rows","options","jsx","jsxs","cn","virtualRow","startIndex","configuredLanes","DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS"],"mappings":"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","file":"chunk-K7SNDVV2.js","sourcesContent":["import * as React from \"react\";\nimport type { Row } from \"@tanstack/react-table\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { cn } from \"../../lib/utils\";\nimport { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS } from \"../types\";\nimport type { DataTableCardPanelProps } from \"./data-table-card-panel-types\";\nimport { useDataTableScrollViewport } from \"./use-data-table-scroll-viewport\";\n\nexport function DataTableVirtualCardPanel({\n cardClassName,\n cardGridClassName,\n cardSizing,\n cardRenderer,\n containerWidth,\n currentRowSelection,\n currentDetailExpanded,\n DataTableCardView,\n DataTableEmptyState,\n dragAndDrop,\n editableRows,\n editingRowId,\n emptyNode,\n enableRowSelection,\n flexGrow,\n getRowClassName,\n hasCardTitle,\n infiniteScroll,\n localSearchValue,\n onRowClick,\n renderedRows,\n detailPanel,\n resolvedLabels,\n resolvedLoadingRowCount,\n rowActions = [],\n ScrollArea,\n sentinelRef,\n setCurrentDetailExpanded,\n setCurrentRowSelection,\n setEditingRowId,\n shouldRenderInitialLoading,\n stateOverlayNode,\n tableContainerClassName,\n uiClassNames,\n virtualization,\n}: DataTableCardPanelProps) {\n const shouldRenderCards = shouldRenderInitialLoading || renderedRows.length > 0;\n const cardScrollContainerRef = React.useRef(null);\n const { viewportElement, viewportHeight } = useDataTableScrollViewport(\n cardScrollContainerRef,\n shouldRenderCards,\n );\n const virtualizationConfig =\n typeof virtualization === \"object\" ? virtualization.card : undefined;\n const enableCardVirtualization =\n !shouldRenderInitialLoading &&\n renderedRows.length > 0 &&\n virtualizationConfig?.enabled === true;\n const lanes = resolveCardVirtualizationLanes(\n virtualizationConfig?.lanes,\n containerWidth,\n );\n const virtualRowCount = Math.ceil(renderedRows.length / lanes);\n const shouldUseVirtualCardRows =\n enableCardVirtualization && Boolean(viewportElement) && viewportHeight > 0;\n const getItemKey = React.useCallback(\n (index: number) => renderedRows[index * lanes]?.id ?? index,\n [lanes, renderedRows],\n );\n // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Virtual owns its instance functions.\n const cardVirtualizer = useVirtualizer({\n count: enableCardVirtualization ? virtualRowCount : 0,\n enabled: shouldUseVirtualCardRows,\n estimateSize: () => virtualizationConfig?.estimateCardHeight ?? 280,\n getItemKey,\n getScrollElement: () => viewportElement,\n overscan: virtualizationConfig?.overscan ?? 4,\n });\n const virtualCardRows = shouldUseVirtualCardRows\n ? cardVirtualizer.getVirtualItems()\n : [];\n\n const renderCardView = (\n rows: Array>,\n options?: {\n isLoading?: boolean;\n loadingRowCount?: number;\n },\n ) => (\n \n );\n\n return (\n \n \n \n {shouldRenderCards ? (\n shouldRenderInitialLoading ? (\n renderCardView([], {\n isLoading: true,\n loadingRowCount: resolvedLoadingRowCount,\n })\n ) : shouldUseVirtualCardRows ? (\n \n {virtualCardRows.map((virtualRow) => {\n const startIndex = virtualRow.index * lanes;\n const rows = renderedRows.slice(\n startIndex,\n startIndex + lanes,\n );\n\n return (\n \n {renderCardView(rows)}\n \n );\n })}\n \n ) : (\n renderCardView(\n renderedRows.slice(\n 0,\n Math.max(\n 1,\n Math.floor(\n virtualizationConfig?.fallbackCardCount ?? 12,\n ),\n ),\n ),\n )\n )\n ) : (\n
    \n {emptyNode ?? (\n \n )}\n
    \n )}\n\n {infiniteScroll?.enabled && !shouldRenderInitialLoading ? (\n
    \n
    \n
    \n ) : null}\n
    \n \n {stateOverlayNode}\n \n );\n}\n\nfunction resolveCardVirtualizationLanes(\n configuredLanes: number | \"auto\" | undefined,\n containerWidth: number,\n) {\n if (typeof configuredLanes === \"number\") {\n return Math.max(1, Math.floor(configuredLanes));\n }\n\n if (configuredLanes !== \"auto\") {\n return 1;\n }\n\n if (containerWidth >= DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS[\"2xl\"]) {\n return 5;\n }\n if (containerWidth >= DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS.xl) {\n return 4;\n }\n if (containerWidth >= DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS.lg) {\n return 3;\n }\n if (containerWidth >= DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS.sm) {\n return 2;\n }\n return 1;\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-6PPFYQ6Q.js b/dist/chunk-KA26IREG.js similarity index 94% rename from dist/chunk-6PPFYQ6Q.js rename to dist/chunk-KA26IREG.js index 4d5dc2a..d81eee0 100644 --- a/dist/chunk-6PPFYQ6Q.js +++ b/dist/chunk-KA26IREG.js @@ -1,2 +1,2 @@ -import {X as X$1,a as a$1,c,d,f,h,i,j,k,l,m,n,p,o,z,w,y,x,A,B,D,C,E,F,G,H,I,J,L,b,N,O,P,Q,R,T,S,U,W,q,r,s,t,u,v}from'./chunk-LDAX7PX5.js';import {a}from'./chunk-GSCYQ624.js';import'react';import {jsx}from'react/jsx-runtime';function e(j,q){return function({className:J,...Q}){return jsx(j,{className:a(q,J),...Q})}}var X=e(a$1,"rounded-field border-field-border shadow-field data-[variant=default]:bg-accent data-[variant=default]:text-accent-foreground data-[variant=outline]:border-field-border data-[variant=outline]:bg-field data-[variant=outline]:hover:bg-field-hover data-[variant=secondary]:bg-default data-[variant=secondary]:text-default-foreground data-[variant=ghost]:hover:bg-default data-[variant=destructive]:bg-danger-soft data-[variant=destructive]:text-danger"),Y=e(c,"rounded-2xl border border-separator bg-surface text-surface-foreground shadow-surface ring-0"),Z=e(d,"px-5 pt-5 pb-3"),ee=e(f,"px-5 pb-5"),re=e(h,"rounded-field border-field-border bg-field ring-focus/40 data-checked:bg-accent data-checked:text-accent-foreground data-checked:ring-focus"),te=e(i,"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden **:data-[slot$=-item]:focus:bg-default **:data-[slot$=-item]:data-highlighted:bg-default **:data-[slot$=-separator]:bg-separator **:data-[slot$=-trigger]:focus:bg-default"),oe=e(j,"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground data-[variant=destructive]:text-danger data-[variant=destructive]:focus:bg-danger-soft"),ae=e(k,"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground"),ne=e(l,"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground"),de=e(m,"text-muted"),ie=e(n,"bg-separator"),le=e(p,"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden"),se=e(o,"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground data-open:bg-default data-open:text-overlay-foreground"),ue=e(z,"rounded-field border-field-border bg-field text-field-foreground shadow-field placeholder:text-field-placeholder"),ce=e(w,"rounded-field border-field-border bg-field text-field-foreground shadow-field"),be=e(y,"text-muted"),ge=e(x,"bg-transparent"),pe=e(A,"justify-end"),fe=e(B,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover data-[active=true]:bg-accent data-[active=true]:text-accent-foreground"),me=e(D,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover"),ve=e(C,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover"),xe=e(E,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover"),Pe=e(F,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover"),He=e(G,"rounded-2xl"),ye=e(H,"[&>[data-slot=scroll-area-thumb]]:bg-default-500"),he=e(I,"rounded-field border-field-border bg-field text-field-foreground shadow-field"),Ce=e(J,"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden"),Te=e(L,"rounded-xl focus:bg-default"),we=e(b,"bg-separator"),Se=e(N,"rounded-xl bg-default"),Ie=e(O,"rounded-2xl text-foreground"),De=e(P,"[&_tr]:border-separator"),Me=e(Q,""),Ee=e(R,"border-separator bg-surface-secondary"),ke=e(T,"h-11 border-separator text-muted font-semibold"),Be=e(S,"border-separator hover:bg-default data-[state=selected]:bg-accent-soft"),Ge=e(U,"py-2.5"),Ae=e(W,"rounded-xl bg-overlay text-overlay-foreground ring-1 ring-separator shadow-overlay [&>svg]:bg-overlay [&>svg]:fill-overlay"),Le=e(q,"rounded-2xl border-separator bg-surface shadow-surface"),Re=e(r,""),Ne=e(s,"[&[data-variant=icon]]:rounded-2xl [&[data-variant=icon]]:bg-accent-soft [&[data-variant=icon]]:text-accent-soft-foreground"),Fe=e(t,"text-foreground"),Ue=e(u,"text-muted"),ze=e(v,""),We={...X$1,rootClassName:"dtp-heroui",classNames:{card:"hover:bg-default data-[state=selected]:bg-accent-soft",cardGrid:"bg-transparent",cardItem:"min-w-0",cardOverlay:"from-surface/95 via-surface/85 to-transparent",cardScrollArea:"bg-transparent",cardSelected:"bg-accent-soft ring-accent",cardUnselected:"border-separator",cardViewport:"bg-transparent",cellBorder:"border-separator/70",columnGroupHeader:"bg-default/50 font-semibold",dragActive:"rounded-2xl border-dashed border-accent",emptyState:"border-separator bg-surface",footer:"border-separator bg-surface text-surface-foreground",headerSortIcon:"text-muted",mutedText:"text-muted",paginationSelectTrigger:"border-field-border bg-field",paginationTotal:"text-muted",pinnedColumn:"border-separator",pinnedUtilityColumn:"bg-surface",resizeHandle:"after:bg-separator hover:after:bg-accent",resizeHandleActive:"after:bg-accent",row:"hover:bg-default data-[state=selected]:!bg-accent-soft",rowSelected:"!bg-accent-soft",tableContainer:"border-separator bg-surface text-surface-foreground",tableScrollArea:"bg-surface",tableStickyHeader:"sticky top-0 z-30 bg-surface/95 backdrop-blur [&_th]:border-separator [&_th]:bg-surface/95",toolbarCompactIconButton:"size-7",toolbarIconButton:"text-muted hover:text-foreground",toolbarInputButton:"bg-field"},Button:X,Card:Y,CardContent:ee,CardHeader:Z,Checkbox:re,DropdownMenuCheckboxItem:ae,DropdownMenuContent:te,DropdownMenuItem:oe,DropdownMenuLabel:de,DropdownMenuRadioItem:ne,DropdownMenuSeparator:ie,DropdownMenuSubContent:le,DropdownMenuSubTrigger:se,Empty:Le,EmptyContent:ze,EmptyDescription:Ue,EmptyHeader:Re,EmptyMedia:Ne,EmptyTitle:Fe,Input:ue,InputGroup:ce,InputGroupAddon:be,InputGroupInput:ge,Pagination:pe,PaginationFirst:me,PaginationLast:Pe,PaginationLink:fe,PaginationNext:xe,PaginationPrevious:ve,ScrollArea:He,ScrollBar:ye,SelectContent:Ce,SelectItem:Te,SelectTrigger:he,Separator:we,Skeleton:Se,Table:Ie,TableBody:Me,TableCell:Ge,TableFooter:Ee,TableHead:ke,TableHeader:De,TableRow:Be,TooltipContent:Ae};export{We as a};//# sourceMappingURL=chunk-6PPFYQ6Q.js.map -//# sourceMappingURL=chunk-6PPFYQ6Q.js.map \ No newline at end of file +import {X as X$1,a as a$1,c,d,f,h,i,j,k,l,m,n,p,o,z,w,y,x,A,B,D,C,E,F,G,H,I,J,L,b,N,O,P,Q,R,T,S,U,W,q,r,s,t,u,v}from'./chunk-7FUCHMMB.js';import {a}from'./chunk-XTVBESM5.js';import'react';import {jsx}from'react/jsx-runtime';function e(j,q){return function({className:J,...Q}){return jsx(j,{className:a(q,J),...Q})}}var X=e(a$1,"rounded-field border-field-border shadow-field data-[variant=default]:bg-accent data-[variant=default]:text-accent-foreground data-[variant=outline]:border-field-border data-[variant=outline]:bg-field data-[variant=outline]:hover:bg-field-hover data-[variant=secondary]:bg-default data-[variant=secondary]:text-default-foreground data-[variant=ghost]:hover:bg-default data-[variant=destructive]:bg-danger-soft data-[variant=destructive]:text-danger"),Y=e(c,"rounded-2xl border border-separator bg-surface text-surface-foreground shadow-surface ring-0"),Z=e(d,"px-5 pt-5 pb-3"),ee=e(f,"px-5 pb-5"),re=e(h,"rounded-field border-field-border bg-field ring-focus/40 data-checked:bg-accent data-checked:text-accent-foreground data-checked:ring-focus"),te=e(i,"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden **:data-[slot$=-item]:focus:bg-default **:data-[slot$=-item]:data-highlighted:bg-default **:data-[slot$=-separator]:bg-separator **:data-[slot$=-trigger]:focus:bg-default"),oe=e(j,"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground data-[variant=destructive]:text-danger data-[variant=destructive]:focus:bg-danger-soft"),ae=e(k,"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground"),ne=e(l,"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground"),de=e(m,"text-muted"),ie=e(n,"bg-separator"),le=e(p,"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden"),se=e(o,"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground data-open:bg-default data-open:text-overlay-foreground"),ue=e(z,"rounded-field border-field-border bg-field text-field-foreground shadow-field placeholder:text-field-placeholder"),ce=e(w,"rounded-field border-field-border bg-field text-field-foreground shadow-field"),be=e(y,"text-muted"),ge=e(x,"bg-transparent"),pe=e(A,"justify-end"),fe=e(B,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover data-[active=true]:bg-accent data-[active=true]:text-accent-foreground"),me=e(D,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover"),ve=e(C,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover"),xe=e(E,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover"),Pe=e(F,"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover"),He=e(G,"rounded-2xl"),ye=e(H,"[&>[data-slot=scroll-area-thumb]]:bg-default-500"),he=e(I,"rounded-field border-field-border bg-field text-field-foreground shadow-field"),Ce=e(J,"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden"),Te=e(L,"rounded-xl focus:bg-default"),we=e(b,"bg-separator"),Se=e(N,"rounded-xl bg-default"),Ie=e(O,"rounded-2xl text-foreground"),De=e(P,"[&_tr]:border-separator"),Me=e(Q,""),Ee=e(R,"border-separator bg-surface-secondary"),ke=e(T,"h-11 border-separator text-muted font-semibold"),Be=e(S,"border-separator hover:bg-default data-[state=selected]:bg-accent-soft"),Ge=e(U,"py-2.5"),Ae=e(W,"rounded-xl bg-overlay text-overlay-foreground ring-1 ring-separator shadow-overlay [&>svg]:bg-overlay [&>svg]:fill-overlay"),Le=e(q,"rounded-2xl border-separator bg-surface shadow-surface"),Re=e(r,""),Ne=e(s,"[&[data-variant=icon]]:rounded-2xl [&[data-variant=icon]]:bg-accent-soft [&[data-variant=icon]]:text-accent-soft-foreground"),Fe=e(t,"text-foreground"),Ue=e(u,"text-muted"),ze=e(v,""),We={...X$1,rootClassName:"dtp-heroui",classNames:{card:"hover:bg-default data-[state=selected]:bg-accent-soft",cardGrid:"bg-transparent",cardItem:"min-w-0",cardOverlay:"from-surface/95 via-surface/85 to-transparent",cardScrollArea:"bg-transparent",cardSelected:"bg-accent-soft ring-accent",cardUnselected:"border-separator",cardViewport:"bg-transparent",cellBorder:"border-separator/70",cellSelected:"!bg-accent-soft ring-1 ring-inset ring-accent/50",columnGroupHeader:"bg-default/50 font-semibold",dragActive:"rounded-2xl border-dashed border-accent",emptyState:"border-separator bg-surface",footer:"border-separator bg-surface text-surface-foreground",headerSortIcon:"text-muted",mutedText:"text-muted",paginationSelectTrigger:"border-field-border bg-field",paginationTotal:"text-muted",pinnedColumn:"border-separator",pinnedUtilityColumn:"bg-surface",resizeHandle:"after:bg-separator hover:after:bg-accent",resizeHandleActive:"after:bg-accent",row:"hover:bg-default data-[state=selected]:!bg-accent-soft",rowSelected:"!bg-accent-soft",tableContainer:"border-separator bg-surface text-surface-foreground",tableScrollArea:"bg-surface",tableStickyHeader:"sticky top-0 z-30 bg-surface/95 backdrop-blur [&_th]:border-separator [&_th]:bg-surface/95",toolbarCompactIconButton:"size-7",toolbarIconButton:"text-muted hover:text-foreground",toolbarInputButton:"bg-field"},Button:X,Card:Y,CardContent:ee,CardHeader:Z,Checkbox:re,DropdownMenuCheckboxItem:ae,DropdownMenuContent:te,DropdownMenuItem:oe,DropdownMenuLabel:de,DropdownMenuRadioItem:ne,DropdownMenuSeparator:ie,DropdownMenuSubContent:le,DropdownMenuSubTrigger:se,Empty:Le,EmptyContent:ze,EmptyDescription:Ue,EmptyHeader:Re,EmptyMedia:Ne,EmptyTitle:Fe,Input:ue,InputGroup:ce,InputGroupAddon:be,InputGroupInput:ge,Pagination:pe,PaginationFirst:me,PaginationLast:Pe,PaginationLink:fe,PaginationNext:xe,PaginationPrevious:ve,ScrollArea:He,ScrollBar:ye,SelectContent:Ce,SelectItem:Te,SelectTrigger:he,Separator:we,Skeleton:Se,Table:Ie,TableBody:Me,TableCell:Ge,TableFooter:Ee,TableHead:ke,TableHeader:De,TableRow:Be,TooltipContent:Ae};export{We as a};//# sourceMappingURL=chunk-KA26IREG.js.map +//# sourceMappingURL=chunk-KA26IREG.js.map \ No newline at end of file diff --git a/dist/chunk-KA26IREG.js.map b/dist/chunk-KA26IREG.js.map new file mode 100644 index 0000000..c23c643 --- /dev/null +++ b/dist/chunk-KA26IREG.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/adapters/heroui/index.tsx"],"names":["withClassName","Component","defaultClassName","className","props","jsx","cn","HeroButton","Button","HeroCard","Card","HeroCardHeader","CardHeader","HeroCardContent","CardContent","HeroCheckbox","Checkbox","HeroDropdownMenuContent","DropdownMenuContent","HeroDropdownMenuItem","DropdownMenuItem","HeroDropdownMenuCheckboxItem","DropdownMenuCheckboxItem","HeroDropdownMenuRadioItem","DropdownMenuRadioItem","HeroDropdownMenuLabel","DropdownMenuLabel","HeroDropdownMenuSeparator","DropdownMenuSeparator","HeroDropdownMenuSubContent","DropdownMenuSubContent","HeroDropdownMenuSubTrigger","DropdownMenuSubTrigger","HeroInput","Input","HeroInputGroup","InputGroup","HeroInputGroupAddon","InputGroupAddon","HeroInputGroupInput","InputGroupInput","HeroPagination","Pagination","HeroPaginationLink","PaginationLink","HeroPaginationFirst","PaginationFirst","HeroPaginationPrevious","PaginationPrevious","HeroPaginationNext","PaginationNext","HeroPaginationLast","PaginationLast","HeroScrollArea","ScrollArea","HeroScrollBar","ScrollBar","HeroSelectTrigger","SelectTrigger","HeroSelectContent","SelectContent","HeroSelectItem","SelectItem","HeroSeparator","Separator","HeroSkeleton","Skeleton","HeroTable","Table","HeroTableHeader","TableHeader","HeroTableBody","TableBody","HeroTableFooter","TableFooter","HeroTableHead","TableHead","HeroTableRow","TableRow","HeroTableCell","TableCell","HeroTooltipContent","TooltipContent","HeroEmpty","Empty","HeroEmptyHeader","EmptyHeader","HeroEmptyMedia","EmptyMedia","HeroEmptyTitle","EmptyTitle","HeroEmptyDescription","EmptyDescription","HeroEmptyContent","EmptyContent","heroUiKit","primitiveUiKit"],"mappings":"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","file":"chunk-KA26IREG.js","sourcesContent":["import * as React from \"react\";\nimport type { DataTableUiKit } from \"../../core/ui-kit\";\nimport {\n Button as PrimitiveButton,\n Card as PrimitiveCard,\n CardContent as PrimitiveCardContent,\n CardHeader as PrimitiveCardHeader,\n Checkbox as PrimitiveCheckbox,\n DropdownMenuCheckboxItem as PrimitiveDropdownMenuCheckboxItem,\n DropdownMenuContent as PrimitiveDropdownMenuContent,\n DropdownMenuItem as PrimitiveDropdownMenuItem,\n DropdownMenuLabel as PrimitiveDropdownMenuLabel,\n DropdownMenuRadioItem as PrimitiveDropdownMenuRadioItem,\n DropdownMenuSeparator as PrimitiveDropdownMenuSeparator,\n DropdownMenuSubContent as PrimitiveDropdownMenuSubContent,\n DropdownMenuSubTrigger as PrimitiveDropdownMenuSubTrigger,\n Empty as PrimitiveEmpty,\n EmptyContent as PrimitiveEmptyContent,\n EmptyDescription as PrimitiveEmptyDescription,\n EmptyHeader as PrimitiveEmptyHeader,\n EmptyMedia as PrimitiveEmptyMedia,\n EmptyTitle as PrimitiveEmptyTitle,\n Input as PrimitiveInput,\n InputGroup as PrimitiveInputGroup,\n InputGroupAddon as PrimitiveInputGroupAddon,\n InputGroupInput as PrimitiveInputGroupInput,\n Pagination as PrimitivePagination,\n PaginationFirst as PrimitivePaginationFirst,\n PaginationLast as PrimitivePaginationLast,\n PaginationLink as PrimitivePaginationLink,\n PaginationNext as PrimitivePaginationNext,\n PaginationPrevious as PrimitivePaginationPrevious,\n ScrollArea as PrimitiveScrollArea,\n ScrollBar as PrimitiveScrollBar,\n SelectContent as PrimitiveSelectContent,\n SelectItem as PrimitiveSelectItem,\n SelectTrigger as PrimitiveSelectTrigger,\n Separator as PrimitiveSeparator,\n Skeleton as PrimitiveSkeleton,\n Table as PrimitiveTable,\n TableBody as PrimitiveTableBody,\n TableCell as PrimitiveTableCell,\n TableFooter as PrimitiveTableFooter,\n TableHead as PrimitiveTableHead,\n TableHeader as PrimitiveTableHeader,\n TableRow as PrimitiveTableRow,\n TooltipContent as PrimitiveTooltipContent,\n primitiveUiKit,\n} from \"../../core/primitive-ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nfunction withClassName(\n Component: React.ComponentType,\n defaultClassName: string,\n) {\n return function Wrapped({ className, ...props }: TProps) {\n return (\n \n );\n };\n}\n\nconst HeroButton = withClassName(\n PrimitiveButton,\n \"rounded-field border-field-border shadow-field data-[variant=default]:bg-accent data-[variant=default]:text-accent-foreground data-[variant=outline]:border-field-border data-[variant=outline]:bg-field data-[variant=outline]:hover:bg-field-hover data-[variant=secondary]:bg-default data-[variant=secondary]:text-default-foreground data-[variant=ghost]:hover:bg-default data-[variant=destructive]:bg-danger-soft data-[variant=destructive]:text-danger\",\n);\nconst HeroCard = withClassName(\n PrimitiveCard,\n \"rounded-2xl border border-separator bg-surface text-surface-foreground shadow-surface ring-0\",\n);\nconst HeroCardHeader = withClassName(PrimitiveCardHeader, \"px-5 pt-5 pb-3\");\nconst HeroCardContent = withClassName(PrimitiveCardContent, \"px-5 pb-5\");\nconst HeroCheckbox = withClassName(\n PrimitiveCheckbox,\n \"rounded-field border-field-border bg-field ring-focus/40 data-checked:bg-accent data-checked:text-accent-foreground data-checked:ring-focus\",\n);\nconst HeroDropdownMenuContent = withClassName(\n PrimitiveDropdownMenuContent,\n \"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden **:data-[slot$=-item]:focus:bg-default **:data-[slot$=-item]:data-highlighted:bg-default **:data-[slot$=-separator]:bg-separator **:data-[slot$=-trigger]:focus:bg-default\",\n);\nconst HeroDropdownMenuItem = withClassName(\n PrimitiveDropdownMenuItem,\n \"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground data-[variant=destructive]:text-danger data-[variant=destructive]:focus:bg-danger-soft\",\n);\nconst HeroDropdownMenuCheckboxItem = withClassName(\n PrimitiveDropdownMenuCheckboxItem,\n \"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground\",\n);\nconst HeroDropdownMenuRadioItem = withClassName(\n PrimitiveDropdownMenuRadioItem,\n \"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground\",\n);\nconst HeroDropdownMenuLabel = withClassName(\n PrimitiveDropdownMenuLabel,\n \"text-muted\",\n);\nconst HeroDropdownMenuSeparator = withClassName(\n PrimitiveDropdownMenuSeparator,\n \"bg-separator\",\n);\nconst HeroDropdownMenuSubContent = withClassName(\n PrimitiveDropdownMenuSubContent,\n \"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden\",\n);\nconst HeroDropdownMenuSubTrigger = withClassName(\n PrimitiveDropdownMenuSubTrigger,\n \"rounded-xl text-overlay-foreground focus:bg-default focus:text-overlay-foreground data-open:bg-default data-open:text-overlay-foreground\",\n);\nconst HeroInput = withClassName(\n PrimitiveInput,\n \"rounded-field border-field-border bg-field text-field-foreground shadow-field placeholder:text-field-placeholder\",\n);\nconst HeroInputGroup = withClassName(\n PrimitiveInputGroup,\n \"rounded-field border-field-border bg-field text-field-foreground shadow-field\",\n);\nconst HeroInputGroupAddon = withClassName(\n PrimitiveInputGroupAddon,\n \"text-muted\",\n);\nconst HeroInputGroupInput = withClassName(PrimitiveInputGroupInput, \"bg-transparent\");\nconst HeroPagination = withClassName(PrimitivePagination, \"justify-end\");\nconst HeroPaginationLink = withClassName(\n PrimitivePaginationLink,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover data-[active=true]:bg-accent data-[active=true]:text-accent-foreground\",\n);\nconst HeroPaginationFirst = withClassName(\n PrimitivePaginationFirst,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover\",\n);\nconst HeroPaginationPrevious = withClassName(\n PrimitivePaginationPrevious,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover\",\n);\nconst HeroPaginationNext = withClassName(\n PrimitivePaginationNext,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover\",\n);\nconst HeroPaginationLast = withClassName(\n PrimitivePaginationLast,\n \"rounded-xl border-field-border bg-field text-field-foreground hover:bg-field-hover\",\n);\nconst HeroScrollArea = withClassName(PrimitiveScrollArea, \"rounded-2xl\");\nconst HeroScrollBar = withClassName(\n PrimitiveScrollBar,\n \"[&>[data-slot=scroll-area-thumb]]:bg-default-500\",\n);\nconst HeroSelectTrigger = withClassName(\n PrimitiveSelectTrigger,\n \"rounded-field border-field-border bg-field text-field-foreground shadow-field\",\n);\nconst HeroSelectContent = withClassName(\n PrimitiveSelectContent,\n \"rounded-2xl border border-separator bg-overlay text-overlay-foreground shadow-overlay ring-0 before:hidden\",\n);\nconst HeroSelectItem = withClassName(\n PrimitiveSelectItem,\n \"rounded-xl focus:bg-default\",\n);\nconst HeroSeparator = withClassName(PrimitiveSeparator, \"bg-separator\");\nconst HeroSkeleton = withClassName(\n PrimitiveSkeleton,\n \"rounded-xl bg-default\",\n);\nconst HeroTable = withClassName(PrimitiveTable, \"rounded-2xl text-foreground\");\nconst HeroTableHeader = withClassName(\n PrimitiveTableHeader,\n \"[&_tr]:border-separator\",\n);\nconst HeroTableBody = withClassName(PrimitiveTableBody, \"\");\nconst HeroTableFooter = withClassName(\n PrimitiveTableFooter,\n \"border-separator bg-surface-secondary\",\n);\nconst HeroTableHead = withClassName(\n PrimitiveTableHead,\n \"h-11 border-separator text-muted font-semibold\",\n);\nconst HeroTableRow = withClassName(\n PrimitiveTableRow,\n \"border-separator hover:bg-default data-[state=selected]:bg-accent-soft\",\n);\nconst HeroTableCell = withClassName(PrimitiveTableCell, \"py-2.5\");\nconst HeroTooltipContent = withClassName(\n PrimitiveTooltipContent,\n \"rounded-xl bg-overlay text-overlay-foreground ring-1 ring-separator shadow-overlay [&>svg]:bg-overlay [&>svg]:fill-overlay\",\n);\nconst HeroEmpty = withClassName(\n PrimitiveEmpty,\n \"rounded-2xl border-separator bg-surface shadow-surface\",\n);\nconst HeroEmptyHeader = withClassName(PrimitiveEmptyHeader, \"\");\nconst HeroEmptyMedia = withClassName(\n PrimitiveEmptyMedia,\n \"[&[data-variant=icon]]:rounded-2xl [&[data-variant=icon]]:bg-accent-soft [&[data-variant=icon]]:text-accent-soft-foreground\",\n);\nconst HeroEmptyTitle = withClassName(PrimitiveEmptyTitle, \"text-foreground\");\nconst HeroEmptyDescription = withClassName(\n PrimitiveEmptyDescription,\n \"text-muted\",\n);\nconst HeroEmptyContent = withClassName(PrimitiveEmptyContent, \"\");\n\nexport const heroUiKit: DataTableUiKit = {\n ...primitiveUiKit,\n rootClassName: \"dtp-heroui\",\n classNames: {\n card: \"hover:bg-default data-[state=selected]:bg-accent-soft\",\n cardGrid: \"bg-transparent\",\n cardItem: \"min-w-0\",\n cardOverlay: \"from-surface/95 via-surface/85 to-transparent\",\n cardScrollArea: \"bg-transparent\",\n cardSelected: \"bg-accent-soft ring-accent\",\n cardUnselected: \"border-separator\",\n cardViewport: \"bg-transparent\",\n cellBorder: \"border-separator/70\",\n cellSelected: \"!bg-accent-soft ring-1 ring-inset ring-accent/50\",\n columnGroupHeader: \"bg-default/50 font-semibold\",\n dragActive: \"rounded-2xl border-dashed border-accent\",\n emptyState: \"border-separator bg-surface\",\n footer: \"border-separator bg-surface text-surface-foreground\",\n headerSortIcon: \"text-muted\",\n mutedText: \"text-muted\",\n paginationSelectTrigger: \"border-field-border bg-field\",\n paginationTotal: \"text-muted\",\n pinnedColumn: \"border-separator\",\n pinnedUtilityColumn: \"bg-surface\",\n resizeHandle: \"after:bg-separator hover:after:bg-accent\",\n resizeHandleActive: \"after:bg-accent\",\n row: \"hover:bg-default data-[state=selected]:!bg-accent-soft\",\n rowSelected: \"!bg-accent-soft\",\n tableContainer: \"border-separator bg-surface text-surface-foreground\",\n tableScrollArea: \"bg-surface\",\n tableStickyHeader:\n \"sticky top-0 z-30 bg-surface/95 backdrop-blur [&_th]:border-separator [&_th]:bg-surface/95\",\n toolbarCompactIconButton: \"size-7\",\n toolbarIconButton: \"text-muted hover:text-foreground\",\n toolbarInputButton: \"bg-field\",\n },\n Button: HeroButton,\n Card: HeroCard,\n CardContent: HeroCardContent,\n CardHeader: HeroCardHeader,\n Checkbox: HeroCheckbox,\n DropdownMenuCheckboxItem: HeroDropdownMenuCheckboxItem,\n DropdownMenuContent: HeroDropdownMenuContent,\n DropdownMenuItem: HeroDropdownMenuItem,\n DropdownMenuLabel: HeroDropdownMenuLabel,\n DropdownMenuRadioItem: HeroDropdownMenuRadioItem,\n DropdownMenuSeparator: HeroDropdownMenuSeparator,\n DropdownMenuSubContent: HeroDropdownMenuSubContent,\n DropdownMenuSubTrigger: HeroDropdownMenuSubTrigger,\n Empty: HeroEmpty,\n EmptyContent: HeroEmptyContent,\n EmptyDescription: HeroEmptyDescription,\n EmptyHeader: HeroEmptyHeader,\n EmptyMedia: HeroEmptyMedia,\n EmptyTitle: HeroEmptyTitle,\n Input: HeroInput,\n InputGroup: HeroInputGroup,\n InputGroupAddon: HeroInputGroupAddon,\n InputGroupInput: HeroInputGroupInput,\n Pagination: HeroPagination,\n PaginationFirst: HeroPaginationFirst,\n PaginationLast: HeroPaginationLast,\n PaginationLink: HeroPaginationLink,\n PaginationNext: HeroPaginationNext,\n PaginationPrevious: HeroPaginationPrevious,\n ScrollArea: HeroScrollArea,\n ScrollBar: HeroScrollBar,\n SelectContent: HeroSelectContent,\n SelectItem: HeroSelectItem,\n SelectTrigger: HeroSelectTrigger,\n Separator: HeroSeparator,\n Skeleton: HeroSkeleton,\n Table: HeroTable,\n TableBody: HeroTableBody,\n TableCell: HeroTableCell,\n TableFooter: HeroTableFooter,\n TableHead: HeroTableHead,\n TableHeader: HeroTableHeader,\n TableRow: HeroTableRow,\n TooltipContent: HeroTooltipContent,\n};\n"]} \ No newline at end of file diff --git a/dist/chunk-KDHJA6AH.js b/dist/chunk-KDHJA6AH.js new file mode 100644 index 0000000..4c8aea8 --- /dev/null +++ b/dist/chunk-KDHJA6AH.js @@ -0,0 +1,2 @@ +var i={sm:640,md:768,lg:1024,xl:1280,"2xl":1536};function l(e,a,t){return !a||t?true:!a.getIsHidden(e)}function s(e,a){return typeof e=="function"?e(a):e}function d(e,a){return !e.hidden?.(a)}function b(e,a){return e?.canEditRow?e.canEditRow(a):!!e}function n(e){switch(e){case "center":return "text-center";case "end":return "text-right";default:return "text-left"}}function o(e,a){return e||(a==="numeric"?"end":"start")}function g(e){let a=e.column.columnDef.meta;return n(o(a?.align,a?.type))}function p(e){let a=e.column.columnDef.meta;return n(o(a?.align,a?.type))}function T(e){return e?(Array.isArray(e)?e:[e]).map(t=>`dt-hide-on-${t}`).join(" "):void 0}function u(e,a){return !e||a<=0?false:(Array.isArray(e)?e:[e]).some(r=>a;\n\n/** A stable grid coordinate used for cell and rectangular range selection. */\nexport type DataTableCellCoordinate = {\n rowId: string;\n columnId: string;\n};\n\n/** The two corners of a cell selection. A single-cell selection has equal corners. */\nexport type DataTableCellSelection = {\n anchor: DataTableCellCoordinate;\n focus: DataTableCellCoordinate;\n};\n\nexport type DataTableGridCommandContext = {\n table: TanStackTable;\n cellSelection: DataTableCellSelection | null;\n};\n\n/** Commands are delegated to the application; the table never records app data. */\nexport type DataTableGridCommands = {\n undo?: (context: DataTableGridCommandContext) => void | Promise;\n redo?: (context: DataTableGridCommandContext) => void | Promise;\n};\n\nexport type DataTableAlign = \"start\" | \"center\" | \"end\";\nexport type DataTableColumnType = \"text\" | \"numeric\" | \"date\";\nexport type DataTableColumnFixed = \"left\" | \"right\";\nexport type DataTableContainerBreakpoint = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\nexport type DataTableDensity = \"compact\" | \"comfortable\" | \"spacious\";\nexport type DataTableCardSizing = \"fixed\" | \"content\" | \"fluid\";\nexport type DataTableCellOverflow =\n | \"truncate\"\n | \"clip\"\n | \"wrap\"\n | \"visible\";\nexport type DataTableColumnFilterType =\n | \"text\"\n | \"select\"\n | \"multi\"\n | \"faceted\"\n | \"boolean\"\n | \"numberRange\"\n | \"dateRange\";\nexport type DataTableColumnFilterOperator =\n | \"contains\"\n | \"equals\"\n | \"startsWith\"\n | \"endsWith\";\nexport type DataTableCsvExportScope =\n | \"filtered\"\n | \"page\"\n | \"selected\"\n | \"all\";\nexport type DataTableClipboardCopyScope =\n | DataTableCsvExportScope\n | \"cellSelection\";\nexport type DataTableClipboardCopyOptions = {\n includeHeaders?: boolean;\n columns?: Array;\n scope?: DataTableClipboardCopyScope;\n /** Defaults to tab-separated text. */\n delimiter?: \"\\t\" | \",\";\n escapeFormulaValues?: boolean;\n getCellValue?: (context: {\n row: TData;\n rowId: string;\n columnId: string;\n value: unknown;\n }) => unknown;\n /** Host-owned clipboard delivery for non-browser or permission-managed apps. */\n onCopy?: (context: {\n text: string;\n rows: Array;\n scope: DataTableClipboardCopyScope;\n }) => void | Promise;\n};\nexport type DataTableClipboardPasteContext = {\n text: string;\n values: Array>;\n table: TanStackTable;\n};\nexport type DataTableClipboardConfig = {\n copy?: boolean | DataTableClipboardCopyOptions;\n paste?: {\n enabled?: boolean;\n preventDefault?: boolean;\n onPaste: (\n context: DataTableClipboardPasteContext,\n ) => void | Promise;\n };\n};\nexport type DataTableActionErrorSource =\n | \"toolbarAction\"\n | \"selectionAction\"\n | \"rowAction\"\n | \"rowClick\"\n | \"edit\"\n | \"undo\"\n | \"redo\"\n | \"clipboardCopy\"\n | \"clipboardPaste\"\n | \"fileUpload\"\n | \"infiniteScroll\"\n | \"retry\";\n\nexport const DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS: Record<\n DataTableContainerBreakpoint,\n number\n> = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n \"2xl\": 1536,\n};\n\nexport type DataTableRowLoadingState = {\n isLoading: boolean;\n skeleton?: React.ReactNode;\n};\n\nexport type DataTableLoadingState = {\n isLoading: boolean;\n loadingRowCount?: number;\n};\n\nexport type DataTableAutoPageSizeConfig = {\n minRows?: number;\n maxRows?: number;\n estimateRowHeight?: number;\n};\n\nexport type DataTableStateOverlayContext = {\n rows: Array;\n toolbarQueryValue: string;\n error: unknown;\n isRetrying: boolean;\n retry: (() => void | Promise) | undefined;\n};\n\nexport type DataTableStateOverlay = {\n empty?:\n | React.ReactNode\n | ((context: DataTableEmptyStateContext) => React.ReactNode);\n error?: unknown;\n isRetrying?: boolean;\n onRetry?: () => void | Promise;\n renderError?: (\n context: DataTableStateOverlayContext,\n ) => React.ReactNode;\n};\n\nexport type DataTableCellEditRenderProps = {\n cell: CellContext;\n row: TData;\n value: TValue | undefined;\n draftValue: unknown;\n setDraftValue: (value: unknown) => void;\n error?: string;\n isDirty: boolean;\n isPending: boolean;\n};\n\nexport type DataTableColumnFilterOption = {\n label: string;\n value: string;\n /** Number of matching records. Omit when the count is not known. */\n count?: number;\n disabled?: boolean;\n};\n\nexport type DataTableFacetedFilterOptions = {\n /**\n * Server-provided facet values. When supplied, these take precedence over\n * locally calculated unique values and their counts.\n */\n options?:\n | Array\n | ((context: { rows: Array }) => Array);\n /** Render a readable label for values discovered from the local row model. */\n getOptionLabel?: (value: TValue | undefined) => string;\n /** Enables an in-menu search input. Defaults to true. */\n searchable?: boolean;\n searchPlaceholder?: string;\n};\n\nexport type DataTableColumnFilterRangeValue = {\n from?: TValue;\n to?: TValue;\n};\n\nexport type DataTableColumnFilterConfig = {\n type: DataTableColumnFilterType;\n label?: string;\n placeholder?: string;\n options?:\n | Array\n | ((context: { rows: Array }) => Array);\n getOptionValue?: (value: TValue | undefined, row: TData) => string;\n /** Settings for `type: \"faceted\"`, including server-provided facet data. */\n faceting?: DataTableFacetedFilterOptions;\n operator?: DataTableColumnFilterOperator;\n trueLabel?: string;\n falseLabel?: string;\n min?: number | string;\n max?: number | string;\n step?: number;\n};\n\nexport type DataTableColumnMeta = {\n type?: DataTableColumnType;\n fixed?: DataTableColumnFixed;\n cardTitle?: boolean;\n hideOn?: DataTableContainerBreakpoint | Array;\n minWidth?: number;\n align?: DataTableAlign;\n overflow?:\n | DataTableCellOverflow\n | ((args: {\n row: TData;\n value: TValue | undefined;\n }) => DataTableCellOverflow | undefined);\n headerClassName?: string;\n headerStyle?: React.CSSProperties;\n cellClassName?:\n | string\n | ((args: { row: TData; value: TValue | undefined }) => string | undefined);\n responsiveClassName?: string;\n skeleton?: (context: CellContext) => React.ReactNode;\n filter?: DataTableColumnFilterConfig;\n parseEditValue?: (value: unknown, context: CellContext) => unknown;\n formatEditValue?: (\n value: unknown,\n context: CellContext,\n ) => string;\n renderEditCell?: (\n props: DataTableCellEditRenderProps,\n ) => React.ReactNode;\n};\n\nexport type DataTableColumnDef = ColumnDef<\n TData,\n TValue\n> & {\n meta?: DataTableColumnMeta;\n columns?: Array>;\n};\n\nexport type DataTableColumnGroupDef = DataTableColumnDef<\n TData,\n unknown\n> & {\n id: string;\n columns: Array>;\n /**\n * A concise explanation of the columns in this group. It is exposed as an\n * accessible description and native tooltip on the shared header.\n */\n description?: string;\n /**\n * Allows leaves to cross this group's boundary during column reordering.\n * Groups are locked by default so a shared heading remains intact.\n */\n freeReordering?: boolean;\n /** Additional class name for this shared group header. */\n headerClassName?: string;\n /** Additional inline styles for this shared group header. */\n headerStyle?: React.CSSProperties;\n /** Height for this shared group header, overriding `columnGroupHeaderHeight`. */\n headerHeight?: React.CSSProperties[\"height\"];\n};\n\nexport type DataTableToolbarAction = {\n key: string;\n label: string;\n icon?: React.ComponentType<{ className?: string }>;\n iconOnly?: boolean;\n placement?: \"primary\" | \"trailing\";\n onClick: (context: {\n rows: Array;\n openFileDialog?: () => void;\n }) => void | Promise;\n variant?: \"default\" | \"secondary\" | \"outline\" | \"ghost\" | \"destructive\";\n disabled?: boolean;\n};\n\nexport type DataTableSelectionActionContext = {\n /** Selected row objects that are present in the currently loaded data. */\n rows: Array;\n /** Every selected row id, including ids retained across server pages. */\n rowIds: Array;\n};\n\nexport type DataTableSelectionAction = {\n key: string;\n label: string;\n icon?: React.ComponentType<{ className?: string }>;\n iconOnly?: boolean;\n onClick: (context: DataTableSelectionActionContext) => void | Promise;\n variant?: \"default\" | \"secondary\" | \"outline\" | \"ghost\" | \"destructive\";\n disabled?:\n | boolean\n | ((\n rows: Array,\n context: DataTableSelectionActionContext,\n ) => boolean);\n};\n\nexport type DataTableRowAction = {\n key: string;\n label: string | ((row: TData) => string);\n icon?: React.ComponentType<{ className?: string }>;\n onClick: (row: TData) => void | Promise;\n variant?: \"default\" | \"secondary\" | \"destructive\";\n hidden?: (row: TData) => boolean;\n disabled?: (row: TData) => boolean;\n};\n\nexport type DataTableColumnVisibilityOption = {\n id: string;\n label: string;\n visible: boolean;\n canHide: boolean;\n pinned?: false | DataTableColumnFixed;\n};\n\nexport type DataTableToolbarVisibility = {\n title?: boolean;\n search?: boolean;\n actions?: boolean;\n trailingActions?: boolean;\n options?: boolean;\n viewToggle?: boolean;\n customToolbar?: boolean;\n};\n\n/** Optional toolbar controls for working with the current table layout and views. */\nexport type DataTableToolbarDataOperations = {\n /** Search, bulk show/hide, pin, and keyboard-accessible column move controls. */\n columnChooser?: boolean;\n /** Create, apply, rename, and delete saved views when `savedViews` is configured. */\n savedViews?: boolean;\n /** Adds a reset-layout action using the table's initial layout. */\n resetLayout?: boolean;\n};\n\nexport type DataTableCardRendererProps = {\n row: TData;\n rowId: string;\n depth: number;\n canExpandSubRows: boolean;\n isSubRowsExpanded: boolean;\n toggleSubRowsExpanded: () => void;\n isSelected: boolean;\n onSelectedChange: (nextValue: boolean) => void;\n actions: Array>;\n isEditing: boolean;\n startEditing: () => void;\n cancelEditing: () => void;\n};\n\nexport type DataTableEditableRowsConfig = {\n canEditRow?: (row: TData) => boolean;\n getInitialValues?: (row: TData) => Record;\n validateRow?: (\n row: TData,\n draftValues: Record,\n ) =>\n | void\n | string\n | Record\n | Promise>;\n /** Apply an optimistic host update and optionally return a rollback callback. */\n onOptimisticUpdate?: (\n row: TData,\n draftValues: Record,\n ) => void | (() => void);\n onSaveRow: (\n row: TData,\n draftValues: Record,\n ) => void | Promise;\n onSaveSuccess?: (\n row: TData,\n draftValues: Record,\n ) => void;\n onSaveError?: (\n error: unknown,\n row: TData,\n draftValues: Record,\n ) => void;\n /** Defaults to true for inputs owned by the table. */\n commitOnEnter?: boolean;\n /** Defaults to true for inputs owned by the table. */\n cancelOnEscape?: boolean;\n};\n\nexport type DataTableInfiniteScroll = {\n enabled: boolean;\n hasMore: boolean;\n isLoadingMore?: boolean;\n onLoadMore: () => void | Promise;\n};\n\nexport type DataTableHiddenRowsConfig = {\n getIsHidden: (row: TData) => boolean;\n label?: string;\n};\n\nexport type DataTableEmptyStateContext = {\n rows: Array;\n toolbarQueryValue: string;\n};\n\nexport type DataTableDragAndDropConfig = {\n isDragging?: boolean;\n onDragEnter?: React.DragEventHandler;\n onDragOver?: React.DragEventHandler;\n onDragLeave?: React.DragEventHandler;\n onDrop?: React.DragEventHandler;\n getRowDraggable?: (row: TData) => boolean;\n onRowDragStart?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n onRowDragEnd?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n};\n\nexport type DataTableFileUploadConfig = {\n accept?: string;\n disabled?: boolean;\n multiple?: boolean;\n onFilesSelected: (files: FileList | Array) => void | Promise;\n};\n\nexport type DataTableVirtualizationConfig = {\n enabled?: boolean;\n estimateRowHeight?: number;\n fallbackRowCount?: number;\n overscan?: number;\n card?: DataTableCardVirtualizationConfig;\n};\n\nexport type DataTableCardVirtualizationConfig = {\n enabled?: boolean;\n estimateCardHeight?: number;\n fallbackCardCount?: number;\n overscan?: number;\n lanes?: number | \"auto\";\n};\n\nexport type DataTableExpandedRowProps = {\n row: TData;\n rowId: string;\n tableRow: Row;\n};\n\n/** A separately controlled application detail panel rendered beneath a row. */\nexport type DataTableDetailPanel = {\n expanded?: ExpandedState;\n onExpandedChange?: (expanded: ExpandedState) => void;\n getRowCanExpand?: (row: TData) => boolean;\n render: (props: DataTableExpandedRowProps) => React.ReactNode;\n};\n\nexport type DataTableCsvExportOptions = {\n filename?: string;\n includeHeaders?: boolean;\n columns?: Array;\n scope?: DataTableCsvExportScope;\n escapeFormulaValues?: boolean;\n lineEnding?: \"\\n\" | \"\\r\\n\";\n getCellValue?: (context: {\n row: TData;\n rowId: string;\n columnId: string;\n value: unknown;\n }) => unknown;\n onExport?: (context: {\n csv: string;\n filename: string;\n rows: Array;\n scope: DataTableCsvExportScope;\n }) => void | Promise;\n};\n\nexport type DataTableActionErrorContext = {\n source: DataTableActionErrorSource;\n error: unknown;\n actionKey?: string;\n row?: TData;\n};\n\nexport type DataTableColumnPrefs = {\n visibility?: VisibilityState;\n sizing?: Record;\n order?: ColumnOrderState;\n pinning?: ColumnPinningState;\n rowPinning?: RowPinningState;\n density?: DataTableDensity;\n};\n\nexport type DataTablePersistenceSlice = keyof DataTableColumnPrefs;\n\nexport type DataTablePersistenceStorage = Pick<\n Storage,\n \"getItem\" | \"setItem\" | \"removeItem\"\n>;\n\nexport type DataTablePersistenceOperation =\n | \"read\"\n | \"write\"\n | \"remove\"\n | \"serialize\"\n | \"deserialize\"\n | \"migrate\";\n\nexport type DataTablePersistencePayload = {\n version: string | number;\n state: DataTableColumnPrefs;\n};\n\nexport type DataTablePersistenceConfig = {\n key: string;\n version?: string | number;\n slices?: Array;\n storage?: DataTablePersistenceStorage;\n serialize?: (payload: DataTablePersistencePayload) => string;\n deserialize?: (value: string) => unknown;\n migrate?: (\n payload: { version: unknown; state: unknown },\n targetVersion: string | number,\n ) => DataTableColumnPrefs | undefined;\n debounceMs?: number;\n onError?: (context: {\n error: unknown;\n operation: DataTablePersistenceOperation;\n }) => void;\n};\n\nexport type DataTableState = {\n sorting: SortingState;\n pagination: PaginationState;\n rowSelection: Record;\n columnVisibility: VisibilityState;\n columnFilters: ColumnFiltersState;\n expanded: ExpandedState;\n columnOrder: ColumnOrderState;\n columnPinning: ColumnPinningState;\n rowPinning: RowPinningState;\n columnSizing: ColumnSizingState;\n /** Present in snapshots produced by 4.4+; optional for 4.x object-literal compatibility. */\n grouping?: GroupingState;\n density: DataTableDensity;\n viewMode: DataTableViewMode;\n showHiddenRows: boolean;\n globalFilter: string;\n};\n\nexport type DataTableInitialState = Partial;\n\nexport type DataTableSavedViewSlice = keyof DataTableState;\n\nexport type DataTableSavedView = {\n id: string;\n name: string;\n createdAt: string;\n updatedAt: string;\n state: Partial;\n};\n\nexport type DataTableSavedViewsPayload = {\n version: string | number;\n views: Array;\n};\n\nexport type DataTableSavedViewsChangeOperation =\n | \"create\"\n | \"rename\"\n | \"delete\"\n | \"clear\";\n\nexport type DataTableSavedViewsConfig = {\n key: string;\n version?: string | number;\n slices?: Array;\n storage?: DataTablePersistenceStorage;\n serialize?: (payload: DataTableSavedViewsPayload) => string;\n deserialize?: (value: string) => unknown;\n migrate?: (\n payload: { version: unknown; views: unknown },\n targetVersion: string | number,\n ) => Array | undefined;\n onChange?: (\n views: Array,\n operation: DataTableSavedViewsChangeOperation,\n ) => void;\n onApply?: (view: DataTableSavedView) => void;\n onError?: (context: {\n error: unknown;\n operation: DataTablePersistenceOperation;\n }) => void;\n};\n\nexport type DataTableResetOptions = {\n clearPersistence?: boolean;\n};\n\nexport type DataTableApi = {\n getTable: () => TanStackTable | null;\n getState: () => DataTableState;\n snapshot: () => DataTableState;\n restore: (state: Partial) => void;\n resetColumnLayout: (options?: DataTableResetOptions) => void;\n resetState: (options?: DataTableResetOptions) => void;\n clearPersistedState: () => boolean;\n getSavedViews: () => Array;\n createSavedView: (name: string) => DataTableSavedView | undefined;\n applySavedView: (id: string) => boolean;\n renameSavedView: (\n id: string,\n name: string,\n ) => DataTableSavedView | undefined;\n deleteSavedView: (id: string) => boolean;\n clearSavedViews: () => boolean;\n pinRow: (rowId: string, position?: \"top\" | \"bottom\") => boolean;\n unpinRow: (rowId: string) => boolean;\n focus: () => void;\n scrollToRow: (rowId: string) => boolean;\n scrollToColumn: (columnId: string) => boolean;\n exportCsv: (\n options?: boolean | DataTableCsvExportOptions,\n ) => Promise;\n copyToClipboard: (\n options?: boolean | DataTableClipboardCopyOptions,\n ) => Promise;\n getCellSelection: () => DataTableCellSelection | null;\n setCellSelection: (selection: DataTableCellSelection | null) => void;\n clearCellSelection: () => void;\n print: () => boolean;\n toggleFullscreen: () => Promise;\n};\n\nexport type DataTableLabels = {\n searchPlaceholder: string;\n searchTable: string;\n clearSearch: string;\n noRowsTitle: string;\n noRowsDescription: string;\n noMatchingRowsTitle: string;\n noMatchingRowsDescription: string;\n tableOptions: string;\n columns: string;\n filters: string;\n clearFilters: string;\n filterFrom?: string;\n filterTo?: string;\n filterTrue?: string;\n filterFalse?: string;\n selectedRows: (count: number) => string;\n showHiddenRows: (label: string) => string;\n recordsPerPage: string;\n totalRecords: (count: number) => string;\n pageStatus: (pageIndex: number, pageCount: number) => string;\n pageStatusUnknown?: (pageIndex: number) => string;\n pagination?: string;\n morePages?: string;\n firstPage: string;\n previousPage: string;\n nextPage: string;\n lastPage: string;\n selectAllVisibleRows?: string;\n selectAllFilteredRows?: string;\n selectRow?: string;\n selectCardRow?: (rowId: string) => string;\n switchToTableView?: string;\n switchToCardView?: string;\n tableView?: string;\n cardView?: string;\n allFilterOptions?: string;\n actions: string;\n rowActions: string;\n editRow: string;\n saveEdit: string;\n cancelEdit: string;\n expandRow: string;\n collapseRow: string;\n expandRowDetails?: string;\n collapseRowDetails?: string;\n exportCsv: string;\n print?: string;\n enterFullscreen?: string;\n exitFullscreen?: string;\n errorTitle?: string;\n errorDescription?: string;\n retry?: string;\n density: string;\n compactDensity: string;\n comfortableDensity: string;\n spaciousDensity: string;\n pinLeft: string;\n pinRight: string;\n unpin: string;\n pinRowToTop: string;\n pinRowToBottom: string;\n unpinRow: string;\n resizeColumn: (columnLabel: string) => string;\n grouping?: string;\n groupBy?: (columnLabel: string) => string;\n ungroup?: (columnLabel: string) => string;\n removeGrouping?: (columnLabel: string) => string;\n moveGroupingEarlier?: (columnLabel: string) => string;\n moveGroupingLater?: (columnLabel: string) => string;\n facetSearch?: (columnLabel: string) => string;\n searchColumns?: string;\n showAllColumns?: string;\n hideAllColumns?: string;\n moveColumnEarlier?: (columnLabel: string) => string;\n moveColumnLater?: (columnLabel: string) => string;\n resetColumnLayout?: string;\n savedViews?: string;\n createSavedView?: string;\n savedViewName?: string;\n applySavedView?: (name: string) => string;\n renameSavedView?: (name: string) => string;\n deleteSavedView?: (name: string) => string;\n saveSavedView?: string;\n};\n\nexport type DataTableSummaryRow = {\n key: string;\n label?: React.ReactNode;\n cells: Record<\n string,\n React.ReactNode | ((context: { rows: Array; columnId: string }) => React.ReactNode)\n >;\n};\n\nexport type DataTableRowClassNameContext = {\n row: TData;\n rowId: string;\n rowIndex: number;\n isEditing: boolean;\n isExpanded: boolean;\n isLoading: boolean;\n isSelected: boolean;\n pinnedPosition: false | \"top\" | \"bottom\";\n};\n\nexport type DataTableProps = {\n columns: Array>;\n data: Array;\n getRowId: (row: TData, index: number) => string;\n children?: React.ReactNode;\n title?: string;\n description?: string;\n toolbarQueryValue?: string;\n onToolbarQueryValueChange?: (value: string) => void;\n toolbarQueryPlaceholder?: string;\n toolbarQueryDebounceMs?: number;\n manualFiltering?: boolean;\n enableToolbarQueryFiltering?: boolean;\n globalFilterFn?: FilterFnOption;\n columnFilters?: ColumnFiltersState;\n onColumnFiltersChange?: (filters: ColumnFiltersState) => void;\n enableColumnFilters?: boolean;\n customToolbar?: React.ReactNode;\n compactToolbar?: React.ReactNode;\n rowsPerPageOptions?: Array;\n totalRowCount?: number;\n hasNextPage?: boolean;\n sorting?: SortingState;\n onSortingChange?: (sorting: SortingState) => void;\n manualSorting?: boolean;\n grouping?: GroupingState;\n onGroupingChange?: (grouping: GroupingState) => void;\n /** Use rows already grouped by the server instead of TanStack's grouping model. */\n manualGrouping?: boolean;\n /** Show group/ungroup controls in the table options menu and grouping bar. */\n enableGrouping?: boolean;\n /** Controls whether grouped columns are reordered, removed, or left in place. */\n groupedColumnMode?: false | \"reorder\" | \"remove\";\n /** Named aggregation functions available to column `aggregationFn` definitions. */\n aggregationFns?: Record>;\n pageIndex?: number;\n pageSize?: number;\n /** Sizes an opt-in page from the measurable table scroll viewport. */\n autoPageSize?: boolean | DataTableAutoPageSizeConfig;\n onPageIndexChange?: (pageIndex: number) => void;\n onPageSizeChange?: (pageSize: number) => void;\n pageCount?: number;\n manualPagination?: boolean;\n rowSelection?: Record;\n onRowSelectionChange?: (rowSelection: Record) => void;\n enableRowSelection?: boolean;\n /** Allows multiple selected rows globally or per row. Defaults to true. */\n enableMultiRowSelection?: boolean | ((row: TData) => boolean);\n /** Cascades parent selection to sub-rows globally or per row. Defaults to true. */\n enableSubRowSelection?: boolean | ((row: TData) => boolean);\n /** Prevents individual rows from being selected. */\n getRowCanSelect?: (row: TData) => boolean;\n /** Select-all affects the current page or all loaded filtered rows. */\n rowSelectionSelectAllScope?: \"page\" | \"filtered\";\n expanded?: ExpandedState;\n onExpandedChange?: (expanded: ExpandedState) => void;\n /** Resolve nested records for tree expansion. */\n getSubRows?: (row: TData, index: number) => Array | undefined;\n /** Keep expansion state controlled by the host; useful for server-loaded children. */\n manualExpanding?: boolean;\n /** Keep child rows with their parent when paginating. Defaults to TanStack's behavior. */\n paginateExpandedRows?: boolean;\n /** Include parents when a descendant matches a filter. */\n filterFromLeafRows?: boolean;\n /** Limit descendant traversal while filtering. */\n maxLeafRowFilterDepth?: number;\n /** New, independently controlled detail-panel contract. */\n detailPanel?: DataTableDetailPanel;\n getRowCanExpand?: (row: TData) => boolean;\n /** @deprecated Use `detailPanel={{ render }}`. Kept as a detail-panel bridge. */\n renderExpandedRow?: (\n props: DataTableExpandedRowProps,\n ) => React.ReactNode;\n columnOrder?: ColumnOrderState;\n onColumnOrderChange?: (columnOrder: ColumnOrderState) => void;\n enableColumnReordering?: boolean;\n /** Default height for shared column-group header cells. */\n columnGroupHeaderHeight?: React.CSSProperties[\"height\"];\n columnPinning?: ColumnPinningState;\n onColumnPinningChange?: (columnPinning: ColumnPinningState) => void;\n enableColumnPinning?: boolean;\n rowPinning?: RowPinningState;\n onRowPinningChange?: (rowPinning: RowPinningState) => void;\n /** Enables row actions that pin a row to the top or bottom of the table. */\n enableRowPinning?: boolean | ((row: TData) => boolean);\n /** Keep pinned rows visible when filtering or paginating them out. */\n keepPinnedRows?: boolean;\n toolbarActions?: Array>;\n selectionActions?: Array>;\n rowActions?: Array>;\n csvExport?: boolean | DataTableCsvExportOptions;\n /** Opt-in TSV/CSV copy and application-owned paste handling. */\n clipboard?: DataTableClipboardConfig;\n /** Enables pointer and Shift+keyboard rectangular cell selection in grid mode. */\n enableCellSelection?: boolean;\n /** Controlled cell/range selection. Supplying a value also enables it in grid mode. */\n cellSelection?: DataTableCellSelection | null;\n /** Initial cell/range selection when uncontrolled. */\n defaultCellSelection?: DataTableCellSelection | null;\n onCellSelectionChange?: (selection: DataTableCellSelection | null) => void;\n /** Host-owned undo/redo commands invoked by Ctrl/Cmd+Z and Ctrl/Cmd+Shift+Z. */\n gridCommands?: DataTableGridCommands;\n density?: DataTableDensity;\n onDensityChange?: (density: DataTableDensity) => void;\n enableDensityToggle?: boolean;\n columnPrefsKey?: string;\n persistence?: DataTablePersistenceConfig;\n savedViews?: DataTableSavedViewsConfig;\n initialState?: DataTableInitialState;\n state?: Partial;\n onStateChange?: (updater: Updater) => void;\n apiRef?: React.Ref>;\n labels?: Partial;\n summaryRows?: Array>;\n cardRenderer?: (props: DataTableCardRendererProps) => React.ReactNode;\n cardSizing?: DataTableCardSizing;\n cardGridClassName?: string;\n cardClassName?: string;\n viewMode?: DataTableViewMode;\n onViewModeChange?: (viewMode: DataTableViewMode) => void;\n enableViewToggle?: boolean;\n enablePrint?: boolean;\n enableFullscreen?: boolean;\n emptyState?:\n | React.ReactNode\n | ((context: DataTableEmptyStateContext) => React.ReactNode);\n /** Explicit empty/error/retry rendering contract. */\n stateOverlay?: DataTableStateOverlay;\n isLoading?: boolean;\n loadingRowCount?: number;\n getRowLoadingState?: (\n row: TData,\n index: number,\n ) => boolean | DataTableRowLoadingState;\n hiddenRows?: DataTableHiddenRowsConfig;\n showHiddenRows?: boolean;\n onShowHiddenRowsChange?: (showHiddenRows: boolean) => void;\n infiniteScroll?: DataTableInfiniteScroll;\n editableRows?: DataTableEditableRowsConfig;\n columnVisibility?: VisibilityState;\n onColumnVisibilityChange?: (visibility: VisibilityState) => void;\n columnSizing?: ColumnSizingState;\n onColumnSizingChange?: (sizing: ColumnSizingState) => void;\n enableColumnResizing?: boolean;\n columnResizeMode?: \"onChange\" | \"onEnd\";\n layoutMode?: \"fill\" | \"fit\";\n stickyHeader?: boolean;\n showFooter?: boolean;\n showToolbar?: boolean;\n dir?: \"ltr\" | \"rtl\";\n flexGrow?: boolean;\n toolbarVisibility?: DataTableToolbarVisibility;\n /** Opts into enhanced layout and saved-view toolbar controls. */\n toolbarDataOperations?: boolean | DataTableToolbarDataOperations;\n className?: string;\n tableClassName?: string;\n tableContainerClassName?: string;\n stripedRows?: boolean;\n getRowClassName?: (\n row: TData,\n context: DataTableRowClassNameContext,\n ) => string | undefined;\n onRowClick?: (context: { row: TData; rowId: string }) => void | Promise;\n onActionError?: (context: DataTableActionErrorContext) => void;\n dragAndDrop?: DataTableDragAndDropConfig;\n fileUpload?: DataTableFileUploadConfig;\n virtualization?: boolean | DataTableVirtualizationConfig;\n /** Opt in to ARIA grid semantics and roving keyboard navigation. */\n accessibility?: DataTableAccessibilityOptions;\n /** Shorthand for `accessibility={{ mode: \"grid\" }}`. */\n interactiveGrid?: boolean | DataTableInteractiveGridOptions;\n};\n\nexport function isRowVisible(\n row: TData,\n hiddenRows: DataTableHiddenRowsConfig | undefined,\n showHiddenRows: boolean,\n) {\n if (!hiddenRows) {\n return true;\n }\n\n if (showHiddenRows) {\n return true;\n }\n\n return !hiddenRows.getIsHidden(row);\n}\n\nexport function resolveRowActionLabel(\n label: DataTableRowAction[\"label\"],\n row: TData,\n) {\n return typeof label === \"function\" ? label(row) : label;\n}\n\nexport function canUseRowAction(\n action: DataTableRowAction,\n row: TData,\n) {\n return !action.hidden?.(row);\n}\n\nexport function canEditRow(\n editableRows: DataTableEditableRowsConfig | undefined,\n row: TData,\n) {\n return editableRows?.canEditRow\n ? editableRows.canEditRow(row)\n : Boolean(editableRows);\n}\n\nexport function alignClassName(align: DataTableAlign | undefined) {\n switch (align) {\n case \"center\":\n return \"text-center\";\n case \"end\":\n return \"text-right\";\n default:\n return \"text-left\";\n }\n}\n\nexport function resolveColumnAlign(\n align: DataTableAlign | undefined,\n type: DataTableColumnType | undefined,\n) {\n if (align) {\n return align;\n }\n\n if (type === \"numeric\") {\n return \"end\";\n }\n\n return \"start\";\n}\n\nexport function headerAlignClassName(\n context: HeaderContext,\n) {\n const meta = (context.column.columnDef as DataTableColumnDef)\n .meta;\n return alignClassName(resolveColumnAlign(meta?.align, meta?.type));\n}\n\nexport function cellAlignClassName(\n context: CellContext,\n) {\n const meta = (context.column.columnDef as DataTableColumnDef)\n .meta;\n return alignClassName(resolveColumnAlign(meta?.align, meta?.type));\n}\n\nexport function hideOnClassName(\n hideOn:\n | DataTableContainerBreakpoint\n | Array\n | undefined,\n) {\n if (!hideOn) {\n return undefined;\n }\n\n const values = Array.isArray(hideOn) ? hideOn : [hideOn];\n return values.map((value) => `dt-hide-on-${value}`).join(\" \");\n}\n\nexport function isHiddenAtContainerWidth(\n hideOn:\n | DataTableContainerBreakpoint\n | Array\n | undefined,\n containerWidth: number,\n) {\n if (!hideOn || containerWidth <= 0) {\n return false;\n }\n\n const values = Array.isArray(hideOn) ? hideOn : [hideOn];\n return values.some(\n (value) => containerWidth < DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS[value],\n );\n}\n\nexport function rowSelectionStateFromRows(rows: Array>) {\n return rows.map((row) => row.original);\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-LDAX7PX5.js b/dist/chunk-LDAX7PX5.js deleted file mode 100644 index bbf1992..0000000 --- a/dist/chunk-LDAX7PX5.js +++ /dev/null @@ -1,2 +0,0 @@ -import {n,m,b,e,d,g as g$1,h as h$1,j,s,f,c}from'./chunk-BYTOUBQ7.js';import {a}from'./chunk-GSCYQ624.js';import*as M from'react';import {cva}from'class-variance-authority';import {Slot,Separator,Checkbox,DropdownMenu,ScrollArea,Select,Tooltip}from'radix-ui';import {jsx,jsxs}from'react/jsx-runtime';var ce=cva("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:outline-none active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"",outline:"",secondary:"",ghost:"",destructive:"",link:"underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function g({className:t,variant:e="default",size:n="default",asChild:a$1=false,...s}){let d=a$1?Slot.Root:"button";return jsx(d,{"data-slot":"button","data-variant":e,"data-size":n,className:a(ce({variant:e,size:n,className:t})),...s})}function N({className:t,orientation:e="horizontal",decorative:n=true,...a$1}){return jsx(Separator.Root,{"data-slot":"separator",decorative:n,orientation:e,className:a("shrink-0 data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",t),...a$1})}var ve=cva("flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1",{variants:{orientation:{horizontal:"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg!",vertical:"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg!"}},defaultVariants:{orientation:"horizontal"}});function Y({className:t,orientation:e,...n}){return jsx("div",{role:"group","data-slot":"button-group","data-orientation":e,className:a(ve({orientation:e}),t),...n})}function Z({className:t,asChild:e=false,...n}){let a$1=e?Slot.Root:"div";return jsx(a$1,{className:a("flex items-center gap-2 rounded-lg border px-2.5 text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",t),...n})}function $({className:t,orientation:e="vertical",...n}){return jsx(N,{"data-slot":"button-group-separator",orientation:e,className:a("relative self-stretch data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto",t),...n})}function tt({className:t,size:e="default",...n}){return jsx("div",{"data-slot":"card","data-size":e,className:a("group/card flex flex-col gap-4 overflow-hidden rounded-xl border py-4 text-sm ring-1 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",t),...n})}function et({className:t,...e}){return jsx("div",{"data-slot":"card-header",className:a("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3",t),...e})}function ot({className:t,...e}){return jsx("div",{"data-slot":"card-title",className:a("font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",t),...e})}function nt({className:t,...e}){return jsx("div",{"data-slot":"card-description",className:a("text-sm opacity-80",t),...e})}function at({className:t,...e}){return jsx("div",{"data-slot":"card-action",className:a("col-start-2 row-span-2 row-start-1 self-start justify-self-end",t),...e})}function rt({className:t,...e}){return jsx("div",{"data-slot":"card-content",className:a("px-4 group-data-[size=sm]/card:px-3",t),...e})}function it({className:t,...e}){return jsx("div",{"data-slot":"card-footer",className:a("flex items-center rounded-b-xl border-t p-4 group-data-[size=sm]/card:p-3",t),...e})}function lt({className:t,...e}){return jsx(Checkbox.Root,{"data-slot":"checkbox",className:a("peer relative flex size-4 shrink-0 items-center justify-center rounded-[4px] border ring-2 transition-colors outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 data-checked:ring-2",t),...e,children:jsx(Checkbox.Indicator,{"data-slot":"checkbox-indicator",className:"grid place-content-center text-current transition-none [&>svg]:size-3.5",children:jsx(b,{})})})}function dt({...t}){return jsx(DropdownMenu.Root,{"data-slot":"dropdown-menu",...t})}function pt({...t}){return jsx(DropdownMenu.Portal,{"data-slot":"dropdown-menu-portal",...t})}function ct({...t}){return jsx(DropdownMenu.Trigger,{"data-slot":"dropdown-menu-trigger",...t})}function ut({className:t,align:e="start",sideOffset:n=4,...a$1}){return jsx(DropdownMenu.Portal,{children:jsx(DropdownMenu.Content,{"data-slot":"dropdown-menu-content",sideOffset:n,align:e,className:a("relative z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) animate-none! overflow-x-hidden overflow-y-auto rounded-lg border p-1 shadow-md duration-100 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] 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 data-[state=closed]:overflow-hidden data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",t),...a$1})})}function mt({...t}){return jsx(DropdownMenu.Group,{"data-slot":"dropdown-menu-group",...t})}function ft({className:t,inset:e,variant:n="default",...a$1}){return jsx(DropdownMenu.Item,{"data-slot":"dropdown-menu-item","data-inset":e,"data-variant":n,className:a("group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:outline-none data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a$1})}function gt({className:t,children:e,checked:n,inset:a$1,...s}){return jsxs(DropdownMenu.CheckboxItem,{"data-slot":"dropdown-menu-checkbox-item","data-inset":a$1,className:a("relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:outline-none data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),checked:n,...s,children:[jsx("span",{className:"pointer-events-none absolute right-2 flex items-center justify-center","data-slot":"dropdown-menu-checkbox-item-indicator",children:jsx(DropdownMenu.ItemIndicator,{children:jsx(b,{})})}),e]})}function bt({...t}){return jsx(DropdownMenu.RadioGroup,{"data-slot":"dropdown-menu-radio-group",...t})}function vt({className:t,children:e,inset:n,...a$1}){return jsxs(DropdownMenu.RadioItem,{"data-slot":"dropdown-menu-radio-item","data-inset":n,className:a("relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:outline-none data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a$1,children:[jsx("span",{className:"pointer-events-none absolute right-2 flex items-center justify-center","data-slot":"dropdown-menu-radio-item-indicator",children:jsx(DropdownMenu.ItemIndicator,{children:jsx(b,{})})}),e]})}function ht({className:t,inset:e,...n}){return jsx(DropdownMenu.Label,{"data-slot":"dropdown-menu-label","data-inset":e,className:a("px-1.5 py-1 text-xs font-medium opacity-80 data-inset:pl-7",t),...n})}function xt({className:t,...e}){return jsx(DropdownMenu.Separator,{"data-slot":"dropdown-menu-separator",className:a("-mx-1 my-1 h-px",t),...e})}function Pt({className:t,...e}){return jsx("span",{"data-slot":"dropdown-menu-shortcut",className:a("ml-auto text-xs tracking-widest opacity-75",t),...e})}function wt({...t}){return jsx(DropdownMenu.Sub,{"data-slot":"dropdown-menu-sub",...t})}function yt({className:t,inset:e$1,children:n,...a$1}){return jsxs(DropdownMenu.SubTrigger,{"data-slot":"dropdown-menu-sub-trigger","data-inset":e$1,className:a("flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:outline-none data-inset:pl-7 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a$1,children:[n,jsx(e,{className:"ml-auto"})]})}function Ct({className:t,...e}){return jsx(DropdownMenu.SubContent,{"data-slot":"dropdown-menu-sub-content",className:a("relative z-50 min-w-[96px] origin-(--radix-dropdown-menu-content-transform-origin) animate-none! overflow-hidden rounded-lg border p-1 shadow-lg duration-100 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] 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 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",t),...e})}function Rt({className:t,...e}){return jsx("div",{"data-slot":"empty",className:a("flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-xl border-dashed p-6 text-center text-balance",t),...e})}function St({className:t,...e}){return jsx("div",{"data-slot":"empty-header",className:a("flex max-w-sm flex-col items-center gap-2",t),...e})}var xe=cva("mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0",{variants:{variant:{default:"bg-transparent",icon:"flex size-8 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-4"}},defaultVariants:{variant:"default"}});function zt({className:t,variant:e="default",...n}){return jsx("div",{"data-slot":"empty-icon","data-variant":e,className:a(xe({variant:e,className:t})),...n})}function Nt({className:t,...e}){return jsx("div",{"data-slot":"empty-title",className:a("font-heading text-sm font-medium tracking-tight",t),...e})}function It({className:t,...e}){return jsx("div",{"data-slot":"empty-description",className:a("text-sm/relaxed opacity-80 [&>a]:underline [&>a]:underline-offset-4",t),...e})}function kt({className:t,...e}){return jsx("div",{"data-slot":"empty-content",className:a("flex w-full max-w-sm min-w-0 flex-col items-center gap-2.5 text-sm text-balance",t),...e})}var I="h-8 w-full min-w-0 rounded-lg border px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:opacity-70 focus-visible:outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 @min-[768px]/data-table:text-sm";function k({className:t,...e}){return jsx("div",{role:"group","data-slot":"input-group",className:a("group/input-group flex w-full min-w-0 items-stretch rounded-lg border transition-colors outline-none focus-within:outline-none has-[>[data-slot=input-group-addon][data-align=block-start]]:flex-col has-[>[data-slot=input-group-addon][data-align=block-end]]:flex-col has-[>[data-slot=input-group-control]:disabled]:cursor-not-allowed has-[>[data-slot=input-group-control]:disabled]:opacity-50",t),...e})}var P=M.forwardRef(function({className:e,...n},a$1){return jsx("input",{ref:a$1,"data-slot":"input-group-control",type:n.type,className:a(I,"flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:border-0 focus-visible:ring-0",e),...n})});function T({align:t="inline-start",className:e,...n}){return jsx("div",{"data-slot":"input-group-addon","data-align":t,className:a("flex shrink-0 items-center gap-1.5 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",t==="inline-start"&&"order-first pl-2.5 pr-1",t==="inline-end"&&"order-last pl-1 pr-2.5",t==="block-start"&&"order-first w-full justify-between border-b px-2.5 py-1.5 text-sm",t==="block-end"&&"order-last w-full justify-between border-t px-2.5 py-1.5 text-sm",e),...n})}function Dt({className:t,...e}){return jsx("span",{"data-slot":"input-group-text",className:a("whitespace-nowrap text-sm",t),...e})}P.displayName="InputGroupInput";var A=M.forwardRef(function({className:e,passwordToggle:n$1=false,type:a$1,...s},d){let[S,le]=M.useState(false);return n$1&&a$1==="password"?jsxs(k,{className:e,children:[jsx(P,{ref:d,type:S?"text":"password","data-slot":"input-group-control",className:"pr-0",...s}),jsx(T,{align:"inline-end",children:jsx(g,{type:"button",variant:"ghost",size:"icon-xs","aria-label":S?"Hide password":"Show password","aria-pressed":S,className:"hover:bg-transparent",onMouseDown:G=>G.preventDefault(),onClick:()=>le(G=>!G),children:S?jsx(n,{"data-icon":"inline-start"}):jsx(m,{"data-icon":"inline-start"})})})]}):jsx("input",{ref:d,type:a$1,"data-slot":"input",className:a(I,e),...s})});A.displayName="Input";function Mt({className:t,...e}){return jsx("nav",{role:"navigation","aria-label":"pagination","data-slot":"pagination",className:a("mx-auto flex w-full justify-center",t),...e})}function Gt({className:t,...e}){return jsx("ul",{"data-slot":"pagination-content",className:a("flex items-center gap-1",t),...e})}function _t({...t}){return jsx("li",{"data-slot":"pagination-item",...t})}function h({className:t,isActive:e,disabled:n=false,variant:a$1,size:s="icon",...d}){return jsx(g,{asChild:true,variant:a$1??(e?"outline":"ghost"),size:s,className:a(n&&"pointer-events-none opacity-50",t),children:jsx("a",{"aria-current":e?"page":void 0,"aria-disabled":n?true:void 0,"data-slot":"pagination-link","data-active":e,tabIndex:n?-1:d.tabIndex,...d})})}function Bt({className:t,disabled:e,showText:n=true,size:a$1="default",text:s="Previous",...d$1}){return jsxs(h,{"aria-label":"Go to previous page",disabled:e,size:a$1,variant:"outline",className:a("pl-1.5!",t),...d$1,children:[jsx(d,{"data-icon":"inline-start"}),n?jsx("span",{className:"hidden @min-[640px]/data-table:block",children:s}):null]})}function Lt({className:t,disabled:e,showText:n=true,size:a$1="default",text:s="First",...d}){return jsxs(h,{"aria-label":"Go to first page",disabled:e,size:a$1,variant:"outline",className:a("pl-1.5!",t),...d,children:[jsx(g$1,{"data-icon":"inline-start"}),n?jsx("span",{className:"hidden @min-[640px]/data-table:block",children:s}):null]})}function At({className:t,disabled:e$1,showText:n=true,size:a$1="default",text:s="Next",...d}){return jsxs(h,{"aria-label":"Go to next page",disabled:e$1,size:a$1,variant:"outline",className:a("pr-1.5!",t),...d,children:[n?jsx("span",{className:"hidden @min-[640px]/data-table:block",children:s}):null,jsx(e,{"data-icon":"inline-end"})]})}function Vt({className:t,disabled:e,showText:n=true,size:a$1="default",text:s="Last",...d}){return jsxs(h,{"aria-label":"Go to last page",disabled:e,size:a$1,variant:"outline",className:a("pr-1.5!",t),...d,children:[n?jsx("span",{className:"hidden @min-[640px]/data-table:block",children:s}):null,jsx(h$1,{"data-icon":"inline-end"})]})}function Et({className:t,text:e="More pages",...n}){return jsxs("span",{"aria-hidden":true,"data-slot":"pagination-ellipsis",className:a("flex size-8 items-center justify-center [&_svg:not([class*='size-'])]:size-4",t),...n,children:[jsx(j,{}),jsx("span",{className:"sr-only",children:e})]})}function Ht({className:t,children:e,...n}){return jsxs(ScrollArea.Root,{"data-slot":"scroll-area",className:a("relative",t),...n,children:[jsx(ScrollArea.Viewport,{"data-slot":"scroll-area-viewport",className:"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:outline-none",children:e}),jsx(V,{className:"z-100"}),jsx(ScrollArea.Corner,{})]})}function V({className:t,orientation:e="vertical",...n}){return jsx(ScrollArea.ScrollAreaScrollbar,{"data-slot":"scroll-area-scrollbar","data-orientation":e,orientation:e,className:a("flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent",t),...n,children:jsx(ScrollArea.ScrollAreaThumb,{"data-slot":"scroll-area-thumb",className:"relative flex-1 rounded-full"})})}function Ut({...t}){return jsx(Select.Root,{"data-slot":"select",...t})}function Ft({className:t,...e}){return jsx(Select.Group,{"data-slot":"select-group",className:a("scroll-my-1 p-1",t),...e})}function Kt({...t}){return jsx(Select.Value,{"data-slot":"select-value",...t})}function Ot({className:t,size:e="default",children:n,...a$1}){return jsxs(Select.Trigger,{"data-slot":"select-trigger","data-size":e,className:a("flex w-fit items-center justify-between gap-1.5 rounded-lg border bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a$1,children:[n,jsx(Select.Icon,{asChild:true,children:jsx(s,{className:"pointer-events-none size-4"})})]})}function jt({className:t,children:e,position:n="item-aligned",align:a$1="center",...s}){return jsx(Select.Portal,{children:jsxs(Select.Content,{"data-slot":"select-content","data-align-trigger":n==="item-aligned",className:a("relative z-50 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) animate-none! overflow-x-hidden overflow-y-auto rounded-lg border shadow-md duration-100 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] data-[align-trigger=true]:animate-none 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 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",n==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",t),position:n,align:a$1,...s,children:[jsx(E,{}),jsx(Select.Viewport,{"data-position":n,className:a("data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)",n==="popper"&&""),children:e}),jsx(H,{})]})})}function qt({className:t,...e}){return jsx(Select.Label,{"data-slot":"select-label",className:a("px-1.5 py-1 text-xs opacity-80",t),...e})}function Jt({className:t,children:e,...n}){return jsxs(Select.Item,{"data-slot":"select-item",className:a("relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:outline-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",t),...n,children:[jsx("span",{className:"pointer-events-none absolute right-2 flex size-4 items-center justify-center",children:jsx(Select.ItemIndicator,{children:jsx(b,{className:"pointer-events-none"})})}),jsx(Select.ItemText,{children:e})]})}function Qt({className:t,...e}){return jsx(Select.Separator,{"data-slot":"select-separator",className:a("pointer-events-none -mx-1 my-1 h-px",t),...e})}function E({className:t,...e}){return jsx(Select.ScrollUpButton,{"data-slot":"select-scroll-up-button",className:a("z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4",t),...e,children:jsx(f,{})})}function H({className:t,...e}){return jsx(Select.ScrollDownButton,{"data-slot":"select-scroll-down-button",className:a("z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4",t),...e,children:jsx(c,{})})}function Wt({className:t,...e}){return jsx("div",{"data-slot":"skeleton",className:a("animate-pulse rounded-md",t),...e})}function Xt({className:t,...e}){return jsx("table",{"data-slot":"table",className:a("w-full border-collapse caption-bottom text-sm",t),...e})}function Yt({className:t,...e}){return jsx("thead",{"data-slot":"table-header",className:a("[&_tr]:border-b",t),...e})}function Zt({className:t,...e}){return jsx("tbody",{"data-slot":"table-body",className:a("[&_tr:last-child]:border-0",t),...e})}function $t({className:t,...e}){return jsx("tfoot",{"data-slot":"table-footer",className:a("border-t font-medium [&>tr]:last:border-b-0",t),...e})}function te({className:t,...e}){return jsx("tr",{"data-slot":"table-row",className:a("border-b transition-colors",t),...e})}function ee({className:t,...e}){return jsx("th",{"data-slot":"table-head",className:a("h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0",t),...e})}function oe({className:t,...e}){return jsx("td",{"data-slot":"table-cell",className:a("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0",t),...e})}function ne({className:t,...e}){return jsx("caption",{"data-slot":"table-caption",className:a("mt-4 text-sm opacity-80",t),...e})}function ae({delayDuration:t=0,...e}){return jsx(Tooltip.Provider,{"data-slot":"tooltip-provider",delayDuration:t,...e})}function re({...t}){return jsx(Tooltip.Root,{"data-slot":"tooltip",...t})}function ie({...t}){return jsx(Tooltip.Trigger,{"data-slot":"tooltip-trigger",...t})}function se({className:t,sideOffset:e=0,children:n,...a$1}){return jsx(Tooltip.Portal,{children:jsxs(Tooltip.Content,{"data-slot":"tooltip-content",sideOffset:e,className:a("z-50 inline-flex w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) items-center gap-1.5 rounded-md border px-3 py-1.5 text-xs has-data-[slot=kbd]:pr-1.5 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 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",t),...a$1,children:[n,jsx(Tooltip.Arrow,{className:"z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]"})]})})}var un={Button:g,ButtonGroup:Y,ButtonGroupSeparator:$,ButtonGroupText:Z,Card:tt,CardAction:at,CardContent:rt,CardDescription:nt,CardFooter:it,CardHeader:et,CardTitle:ot,Checkbox:lt,DropdownMenu:dt,DropdownMenuCheckboxItem:gt,DropdownMenuContent:ut,DropdownMenuGroup:mt,DropdownMenuItem:ft,DropdownMenuLabel:ht,DropdownMenuPortal:pt,DropdownMenuRadioGroup:bt,DropdownMenuRadioItem:vt,DropdownMenuSeparator:xt,DropdownMenuShortcut:Pt,DropdownMenuSub:wt,DropdownMenuSubContent:Ct,DropdownMenuSubTrigger:yt,DropdownMenuTrigger:ct,Empty:Rt,EmptyContent:kt,EmptyDescription:It,EmptyHeader:St,EmptyMedia:zt,EmptyTitle:Nt,Input:A,InputGroup:k,InputGroupAddon:T,InputGroupInput:P,InputGroupText:Dt,Pagination:Mt,PaginationContent:Gt,PaginationEllipsis:Et,PaginationFirst:Lt,PaginationItem:_t,PaginationLast:Vt,PaginationLink:h,PaginationNext:At,PaginationPrevious:Bt,ScrollArea:Ht,ScrollBar:V,Select:Ut,SelectContent:jt,SelectGroup:Ft,SelectItem:Jt,SelectLabel:qt,SelectScrollDownButton:H,SelectScrollUpButton:E,SelectSeparator:Qt,SelectTrigger:Ot,SelectValue:Kt,Separator:N,Skeleton:Wt,Table:Xt,TableBody:Zt,TableCaption:ne,TableCell:oe,TableFooter:$t,TableHead:ee,TableHeader:Yt,TableRow:te,Tooltip:re,TooltipContent:se,TooltipProvider:ae,TooltipTrigger:ie};export{Mt as A,h as B,Bt as C,Lt as D,At as E,Vt as F,Ht as G,V as H,Ot as I,jt as J,qt as K,Jt as L,Qt as M,Wt as N,Xt as O,Yt as P,Zt as Q,$t as R,te as S,ee as T,oe as U,ne as V,se as W,un as X,g as a,N as b,tt as c,et as d,nt as e,rt as f,it as g,lt as h,ut as i,ft as j,gt as k,vt as l,ht as m,xt as n,yt as o,Ct as p,Rt as q,St as r,zt as s,Nt as t,It as u,kt as v,k as w,P as x,T as y,A as z};//# sourceMappingURL=chunk-LDAX7PX5.js.map -//# sourceMappingURL=chunk-LDAX7PX5.js.map \ No newline at end of file diff --git a/dist/chunk-MYQZYDHU.js.map b/dist/chunk-MYQZYDHU.js.map deleted file mode 100644 index 1d13b71..0000000 --- a/dist/chunk-MYQZYDHU.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/adapters/shadcn/index.tsx"],"names":["withClassName","Component","defaultClassName","className","props","jsx","cn","ShadcnButton","Button","ShadcnCard","Card","ShadcnCardDescription","CardDescription","ShadcnCardFooter","CardFooter","ShadcnCheckbox","Checkbox","ShadcnDropdownMenuContent","DropdownMenuContent","ShadcnDropdownMenuItem","DropdownMenuItem","ShadcnDropdownMenuCheckboxItem","DropdownMenuCheckboxItem","ShadcnDropdownMenuRadioItem","DropdownMenuRadioItem","ShadcnDropdownMenuLabel","DropdownMenuLabel","ShadcnDropdownMenuSeparator","DropdownMenuSeparator","ShadcnDropdownMenuSubContent","DropdownMenuSubContent","ShadcnDropdownMenuSubTrigger","DropdownMenuSubTrigger","ShadcnEmpty","Empty","ShadcnEmptyDescription","EmptyDescription","ShadcnEmptyMedia","EmptyMedia","ShadcnInput","Input","ShadcnInputGroup","InputGroup","ShadcnInputGroupAddon","InputGroupAddon","ShadcnInputGroupInput","InputGroupInput","ShadcnScrollBar","ScrollBar","ShadcnSelectTrigger","SelectTrigger","ShadcnSelectContent","SelectContent","ShadcnSelectItem","SelectItem","ShadcnSelectLabel","SelectLabel","ShadcnSelectSeparator","SelectSeparator","ShadcnSeparator","Separator","ShadcnSkeleton","Skeleton","ShadcnTableFooter","TableFooter","ShadcnTableHead","TableHead","ShadcnTooltipContent","TooltipContent","shadcnUiKit","primitiveUiKit"],"mappings":"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","file":"chunk-MYQZYDHU.js","sourcesContent":["import * as React from \"react\";\nimport type { DataTableUiKit } from \"../../core/ui-kit\";\nimport {\n Button as PrimitiveButton,\n Card as PrimitiveCard,\n CardDescription as PrimitiveCardDescription,\n CardFooter as PrimitiveCardFooter,\n Checkbox as PrimitiveCheckbox,\n DropdownMenuCheckboxItem as PrimitiveDropdownMenuCheckboxItem,\n DropdownMenuContent as PrimitiveDropdownMenuContent,\n DropdownMenuItem as PrimitiveDropdownMenuItem,\n DropdownMenuLabel as PrimitiveDropdownMenuLabel,\n DropdownMenuRadioItem as PrimitiveDropdownMenuRadioItem,\n DropdownMenuSeparator as PrimitiveDropdownMenuSeparator,\n DropdownMenuSubContent as PrimitiveDropdownMenuSubContent,\n DropdownMenuSubTrigger as PrimitiveDropdownMenuSubTrigger,\n Empty as PrimitiveEmpty,\n EmptyDescription as PrimitiveEmptyDescription,\n EmptyMedia as PrimitiveEmptyMedia,\n Input as PrimitiveInput,\n InputGroup as PrimitiveInputGroup,\n InputGroupAddon as PrimitiveInputGroupAddon,\n InputGroupInput as PrimitiveInputGroupInput,\n ScrollBar as PrimitiveScrollBar,\n SelectContent as PrimitiveSelectContent,\n SelectItem as PrimitiveSelectItem,\n SelectLabel as PrimitiveSelectLabel,\n SelectSeparator as PrimitiveSelectSeparator,\n SelectTrigger as PrimitiveSelectTrigger,\n Separator as PrimitiveSeparator,\n Skeleton as PrimitiveSkeleton,\n TableFooter as PrimitiveTableFooter,\n TableHead as PrimitiveTableHead,\n TooltipContent as PrimitiveTooltipContent,\n primitiveUiKit,\n} from \"../../core/primitive-ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nfunction withClassName(\n Component: React.ComponentType,\n defaultClassName: string,\n) {\n return function Wrapped({ className, ...props }: TProps) {\n return (\n \n );\n };\n}\n\nconst ShadcnButton = withClassName(\n PrimitiveButton,\n \"rounded-md text-foreground data-[variant=default]:border-primary data-[variant=default]:bg-primary data-[variant=default]:text-primary-foreground data-[variant=outline]:border-input data-[variant=outline]:bg-card data-[variant=outline]:hover:bg-accent data-[variant=outline]:hover:text-accent-foreground data-[variant=secondary]:border-secondary data-[variant=secondary]:bg-secondary data-[variant=secondary]:text-secondary-foreground data-[variant=ghost]:border-transparent data-[variant=ghost]:bg-transparent data-[variant=ghost]:hover:bg-accent data-[variant=ghost]:hover:text-accent-foreground data-[variant=destructive]:border-destructive data-[variant=destructive]:bg-destructive data-[variant=destructive]:text-destructive-foreground data-[variant=link]:border-transparent data-[variant=link]:bg-transparent\",\n);\nconst ShadcnCard = withClassName(\n PrimitiveCard,\n \"rounded-xl border-border bg-card text-card-foreground shadow-sm ring-0\",\n);\nconst ShadcnCardDescription = withClassName(\n PrimitiveCardDescription,\n \"text-muted-foreground\",\n);\nconst ShadcnCardFooter = withClassName(\n PrimitiveCardFooter,\n \"border-t border-border/60 bg-muted/50\",\n);\nconst ShadcnCheckbox = withClassName(\n PrimitiveCheckbox,\n \"border-input bg-card ring-ring/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground data-checked:ring-primary\",\n);\nconst ShadcnDropdownMenuContent = withClassName(\n PrimitiveDropdownMenuContent,\n \"border-border bg-popover text-popover-foreground shadow-md\",\n);\nconst ShadcnDropdownMenuItem = withClassName(\n PrimitiveDropdownMenuItem,\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10\",\n);\nconst ShadcnDropdownMenuCheckboxItem = withClassName(\n PrimitiveDropdownMenuCheckboxItem,\n \"focus:bg-accent focus:text-accent-foreground\",\n);\nconst ShadcnDropdownMenuRadioItem = withClassName(\n PrimitiveDropdownMenuRadioItem,\n \"focus:bg-accent focus:text-accent-foreground\",\n);\nconst ShadcnDropdownMenuLabel = withClassName(\n PrimitiveDropdownMenuLabel,\n \"text-muted-foreground\",\n);\nconst ShadcnDropdownMenuSeparator = withClassName(\n PrimitiveDropdownMenuSeparator,\n \"bg-border\",\n);\nconst ShadcnDropdownMenuSubContent = withClassName(\n PrimitiveDropdownMenuSubContent,\n \"border-border bg-popover text-popover-foreground shadow-md\",\n);\nconst ShadcnDropdownMenuSubTrigger = withClassName(\n PrimitiveDropdownMenuSubTrigger,\n \"focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground\",\n);\nconst ShadcnEmpty = withClassName(\n PrimitiveEmpty,\n \"rounded-2xl border-border/60 bg-background/70\",\n);\nconst ShadcnEmptyDescription = withClassName(\n PrimitiveEmptyDescription,\n \"text-muted-foreground\",\n);\nconst ShadcnEmptyMedia = withClassName(\n PrimitiveEmptyMedia,\n \"[&[data-variant=icon]]:bg-muted [&[data-variant=icon]]:text-foreground\",\n);\nconst ShadcnInput = withClassName(\n PrimitiveInput,\n \"rounded-md border-input bg-card text-foreground placeholder:text-muted-foreground\",\n);\nconst ShadcnInputGroup = withClassName(\n PrimitiveInputGroup,\n \"rounded-md border-input bg-card text-foreground\",\n);\nconst ShadcnInputGroupAddon = withClassName(\n PrimitiveInputGroupAddon,\n \"text-muted-foreground\",\n);\nconst ShadcnInputGroupInput = withClassName(\n PrimitiveInputGroupInput,\n \"bg-transparent\",\n);\nconst ShadcnScrollBar = withClassName(\n PrimitiveScrollBar,\n \"[&>[data-slot=scroll-area-thumb]]:bg-border\",\n);\nconst ShadcnSelectTrigger = withClassName(\n PrimitiveSelectTrigger,\n \"rounded-md border-input bg-card text-foreground\",\n);\nconst ShadcnSelectContent = withClassName(\n PrimitiveSelectContent,\n \"border-border bg-popover text-popover-foreground shadow-md\",\n);\nconst ShadcnSelectItem = withClassName(\n PrimitiveSelectItem,\n \"focus:bg-accent focus:text-accent-foreground\",\n);\nconst ShadcnSelectLabel = withClassName(\n PrimitiveSelectLabel,\n \"text-muted-foreground\",\n);\nconst ShadcnSelectSeparator = withClassName(\n PrimitiveSelectSeparator,\n \"bg-border\",\n);\nconst ShadcnSeparator = withClassName(PrimitiveSeparator, \"bg-border\");\nconst ShadcnSkeleton = withClassName(PrimitiveSkeleton, \"bg-muted\");\nconst ShadcnTableFooter = withClassName(\n PrimitiveTableFooter,\n \"border-border bg-muted/50\",\n);\nconst ShadcnTableHead = withClassName(\n PrimitiveTableHead,\n \"text-foreground\",\n);\nconst ShadcnTooltipContent = withClassName(\n PrimitiveTooltipContent,\n \"bg-foreground text-background ring-1 ring-foreground/10 [&>svg]:bg-foreground [&>svg]:fill-foreground\",\n);\n\nexport const shadcnUiKit: DataTableUiKit = {\n ...primitiveUiKit,\n rootClassName: \"dtp-shadcn\",\n classNames: {\n card: \"hover:bg-muted/50 data-[state=selected]:bg-primary/10\",\n cardGrid: \"bg-transparent\",\n cardItem: \"min-w-0\",\n cardOverlay: \"from-background/95 via-background/85 to-transparent\",\n cardScrollArea: \"bg-transparent\",\n cardSelected: \"bg-primary/10 ring-primary\",\n cardUnselected: \"border-border\",\n cardViewport: \"bg-transparent\",\n cellBorder: \"border-border/40\",\n columnGroupHeader: \"bg-muted/50 font-semibold\",\n dragActive: \"rounded-md border-dashed border-primary\",\n emptyState: \"border-border/60 bg-background/70\",\n footer: \"border-border bg-card\",\n headerSortIcon: \"text-muted-foreground\",\n mutedText: \"text-muted-foreground\",\n paginationSelectTrigger: \"border-input bg-card\",\n paginationTotal: \"text-muted-foreground\",\n pinnedColumn: \"border-border\",\n pinnedUtilityColumn: \"bg-card\",\n resizeHandle: \"after:bg-border hover:after:bg-primary\",\n resizeHandleActive: \"after:bg-primary\",\n row: \"hover:bg-muted/50 data-[state=selected]:!bg-primary/10\",\n rowSelected: \"!bg-primary/10\",\n tableContainer: \"border-border bg-card text-card-foreground\",\n tableStickyHeader:\n \"sticky top-0 z-30 bg-card/95 backdrop-blur [&_th]:border-border [&_th]:bg-card/95\",\n toolbarCompactIconButton: \"size-7\",\n toolbarIconButton: \"text-muted-foreground hover:text-foreground\",\n toolbarInputButton: \"border-input bg-card\",\n },\n Button: ShadcnButton,\n Card: ShadcnCard,\n CardDescription: ShadcnCardDescription,\n CardFooter: ShadcnCardFooter,\n Checkbox: ShadcnCheckbox,\n DropdownMenuCheckboxItem: ShadcnDropdownMenuCheckboxItem,\n DropdownMenuContent: ShadcnDropdownMenuContent,\n DropdownMenuItem: ShadcnDropdownMenuItem,\n DropdownMenuLabel: ShadcnDropdownMenuLabel,\n DropdownMenuRadioItem: ShadcnDropdownMenuRadioItem,\n DropdownMenuSeparator: ShadcnDropdownMenuSeparator,\n DropdownMenuSubContent: ShadcnDropdownMenuSubContent,\n DropdownMenuSubTrigger: ShadcnDropdownMenuSubTrigger,\n Empty: ShadcnEmpty,\n EmptyDescription: ShadcnEmptyDescription,\n EmptyMedia: ShadcnEmptyMedia,\n Input: ShadcnInput,\n InputGroup: ShadcnInputGroup,\n InputGroupAddon: ShadcnInputGroupAddon,\n InputGroupInput: ShadcnInputGroupInput,\n ScrollBar: ShadcnScrollBar,\n SelectContent: ShadcnSelectContent,\n SelectItem: ShadcnSelectItem,\n SelectLabel: ShadcnSelectLabel,\n SelectSeparator: ShadcnSelectSeparator,\n SelectTrigger: ShadcnSelectTrigger,\n Separator: ShadcnSeparator,\n Skeleton: ShadcnSkeleton,\n TableFooter: ShadcnTableFooter,\n TableHead: ShadcnTableHead,\n TooltipContent: ShadcnTooltipContent,\n};\n"]} \ No newline at end of file diff --git a/dist/chunk-NLQJKISS.js b/dist/chunk-NLQJKISS.js new file mode 100644 index 0000000..8ec7bc4 --- /dev/null +++ b/dist/chunk-NLQJKISS.js @@ -0,0 +1,2 @@ +import {d,z,x,w,y,j}from'./chunk-4P45F2OY.js';import {c,t,i}from'./chunk-CVR2ZXHQ.js';import {h,g,f}from'./chunk-KDHJA6AH.js';import {a}from'./chunk-XTVBESM5.js';import*as N from'react';import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {flexRender}from'@tanstack/react-table';function dt({columns:e,editableRows:a,onError:i}){let[o,n]=N.useState(null),[u,D]=N.useState({}),T=N.useRef(u),[R,t]=N.useState({}),[I,m]=N.useState({}),[x,L]=N.useState(false),B=N.useMemo(()=>!xa(u,R),[u,R]);N.useEffect(()=>{T.current=u;},[u]);let h=N.useCallback(()=>{n(null),D({}),m({}),t({});},[]),V=N.useCallback((k,f)=>{let S=a?.getInitialValues?.(k)??Ia(k,e);t({...S}),D(S),m({}),n(f);},[e,a]),M=N.useCallback(async k=>{if(!a)return false;L(true);let f={...T.current},S;try{let A=await a.validateRow?.(k,f),r=La(A);if(Object.keys(r).length>0)return m(r),!1;m({});let K=a.onOptimisticUpdate?.(k,f);return S=typeof K=="function"?K:void 0,await a.onSaveRow(k,f),a.onSaveSuccess?.(k,f),N.startTransition(h),!0}catch(A){try{S?.();}catch{}return a.onSaveError?.(A,k,f),i?.(A,k),false}finally{L(false);}},[h,a,i]),v=N.useCallback(k=>{m(f=>{if(!f[k]&&!f._row)return f;let S={...f};return delete S[k],delete S._row,S});},[]);return {cancelEditing:h,clearEditError:v,draftValues:u,editErrors:I,editingRowId:o,isEditDirty:B,isSavingEdit:x,saveEdit:M,setDraftValues:D,setEditingRowId:n,startEditingRow:V}}function Ia(e,a){return j(a).reduce((i,{column:o})=>("accessorKey"in o&&typeof o.accessorKey=="string"&&(i[o.accessorKey]=e[o.accessorKey]),i),{})}function fa(e,a,i,o,n){let{Checkbox:u,Input:D}=o,T=e.column.columnDef,R=T.meta,t="accessorKey"in T&&typeof T.accessorKey=="string"?T.accessorKey:e.column.id,I=a[t],m=n?.errors[t]??n?.errors[e.column.id]??n?.errors._row,x=h=>{n?.onValueChange(t),i(V=>({...V,[t]:h}));},L=h=>{h.key==="Escape"&&n?.cancelOnEscape?(h.preventDefault(),n.cancel()):h.key==="Enter"&&!h.shiftKey&&n?.commitOnEnter&&(h.preventDefault(),n.commit());};if(R?.renderEditCell)return R.renderEditCell({cell:e,row:e.row.original,value:e.getValue(),draftValue:I,error:m,isDirty:n?.isDirty??false,isPending:n?.isPending??false,setDraftValue:x});let B=Aa(R?.type,I);return typeof I=="boolean"?jsxs("div",{className:"min-w-0",children:[jsx(u,{"aria-invalid":!!m||void 0,checked:I,disabled:n?.isPending,onCheckedChange:h=>{x(h===true);},onKeyDown:L}),m?jsx("span",{className:"mt-1 block text-xs text-destructive",role:"alert",children:m}):null]}):jsxs("div",{className:"min-w-0",children:[jsx(D,{"aria-invalid":!!m||void 0,disabled:n?.isPending,type:B,value:R?.formatEditValue?R.formatEditValue(I,e):Ga(I,B),onChange:h=>{let V=h.target.value,M=R?.parseEditValue?R.parseEditValue(V,e):Ka(V,B,I);x(M);},onKeyDown:L}),m?jsx("span",{className:"mt-1 block text-xs text-destructive",role:"alert",children:m}):null]})}function La(e){return e?typeof e=="string"?{_row:e}:e:{}}function xa(e,a){let i=new Set([...Object.keys(e),...Object.keys(a)]);return Array.from(i).every(o=>Object.is(e[o],a[o]))}function Aa(e,a){return e==="numeric"||typeof a=="number"?"number":e==="date"||a instanceof Date?"datetime-local":"text"}function Ga(e,a="text"){return e==null?"":e instanceof Date?a==="datetime-local"?e.toISOString().slice(0,16):e.toISOString():typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint"?String(e):""}function Ka(e,a,i){return a==="number"?e===""?null:Number(e):a==="datetime-local"?e?i instanceof Date?new Date(e):e:null:e}var ba=N.createContext(void 0);function mt({children:e,measureRow:a}){return jsx(ba.Provider,{value:a,children:e})}function ga(){return N.useContext(ba)}function Ae(e,a$1,i$1){let o=e.column.columnDef,n=o.meta,u=e.getValue(),D=i$1?.hasCustomCell??false,T=D&&o.cell?flexRender(o.cell,e):void 0,R=Oa(T),t=Ma({context:e,useCustomOverflowDefaults:i$1?.useCustomOverflowDefaults??false,value:u});if(n?.type==="date"&&!D)return jsxs("div",{"data-dtp-slot":"data-table-cell-content","data-dtp-overflow":t,className:a(Da(t),"flex w-full min-w-0 items-center justify-end gap-2"),children:[jsx(i,{className:a("shrink-0",a$1?.mutedText??"opacity-70")}),jsx("span",{className:"min-w-0 truncate",children:Ua(u)})]});let I=T!=null&&T!==""?T:u==null||u===""?jsx("span",{className:a$1?.mutedText??"opacity-70",children:"-"}):_a(u);return jsx("div",{"data-dtp-slot":"data-table-cell-content","data-dtp-overflow":t,className:a(Da(t),"w-full min-w-0 max-w-full",R&&"[&>*]:max-w-full [&>*]:min-w-0"),children:I})}function Ma({context:e,useCustomOverflowDefaults:a,value:i}){let o=e.column.columnDef,n=typeof o.meta?.overflow=="function"?o.meta.overflow({row:e.row.original,value:i}):o.meta?.overflow;return n||(a?"clip":"truncate")}function Da(e){switch(e){case "clip":return "block overflow-hidden whitespace-nowrap";case "wrap":return "block overflow-hidden whitespace-normal break-words";case "visible":return "block overflow-visible whitespace-normal";default:return "block overflow-hidden text-ellipsis whitespace-nowrap"}}function Oa(e){return e==null?false:N.isValidElement(e)||Array.isArray(e)||typeof e=="object"}function Ua(e){return typeof e=="number"?new Date(e*1e3).toLocaleString():typeof e=="string"&&e?e:"-"}function _a(e){if(e instanceof Date)return e.toLocaleString();if(typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint")return String(e);try{return JSON.stringify(e)}catch{return "-"}}function Fa({columnLayouts:e,components:a$1,currentDensity:i,draftValues:o,editingContext:n,dragAndDrop:u,explicitCustomCellColumnIds:D,getRowClassName:T,groupToggleLabel:R,gridMode:t,gridRowAriaIndex:I,gridRowIndex:m,activeGridCell:x$1,cellSelectionEnabled:L,isGridCellSelected:B,onGridCellFocus:h$1,onGridCellKeyDown:V,onGridCellPointerDown:M,onGridCellPointerEnter:v,isDraggable:k,isDetailExpanded:f,isEditing:S,isExpanded:A,isInitialLoadingRow:r,isSelected:K,loadingState:z$1,onRowClick:F,pinnedPosition:d$1,originalRow:b,detailPanel:q,row:C,rowIndex:O,setDraftValues:Ce,stripedRows:ce,uiClassNames:G,visibleCells:ye,visibleLeafColumnCount:ee}){let{Checkbox:Ve,Input:$,Skeleton:ae,TableCell:we,TableRow:Re}=a$1,X=ga(),he=d$1?void 0:X,Me=ye.find(c=>!e.get(c.column.id)?.isUtilityColumn)?.column.id;return jsxs(N.Fragment,{children:[jsx(Re,{ref:he,"data-row-id":C.id,"data-index":he?O:void 0,"data-tree-depth":!r&&C.depth>0?C.depth:void 0,"data-dtp-slot":d$1?"data-table-pinned-row":"data-table-row","data-row-pinned":d$1,"data-row-grouped":C.getIsGrouped()||void 0,draggable:r?false:k,"data-loading":z$1?.isLoading||void 0,"data-row-index":r?void 0:O,"data-row-parity":ce&&!r?O%2===0?"odd":"even":void 0,"data-state":r?void 0:K?"selected":void 0,role:t?"row":void 0,"aria-rowindex":t?I:void 0,tabIndex:!t&&F&&!r?0:void 0,className:a(!r&&T?.(b,{row:b,rowId:C.id,rowIndex:O,isEditing:S,isExpanded:A,isLoading:!!z$1?.isLoading,isSelected:K,pinnedPosition:d$1??false}),G.row,d$1==="top"&&a("border-b-2",G.rowPinnedTop),d$1==="bottom"&&a("border-t-2",G.rowPinnedBottom),ce&&!r&&(O%2===0?G.rowOdd:G.rowEven),K&&!r&&G.rowSelected,F&&!r&&"cursor-pointer",r&&"pointer-events-none"),onClick:c=>{r||x(c.target,c.currentTarget)||t&&L||F?.({row:b,rowId:C.id});},onKeyDown:c=>{r||!F||c.key!=="Enter"&&c.key!==" "||x(c.target,c.currentTarget)||(c.preventDefault(),F({row:b,rowId:C.id}));},onDragStart:c=>{r||u?.onRowDragStart?.({row:b,rowId:C.id,event:c});},onDragEnd:c=>{r||u?.onRowDragEnd?.({row:b,rowId:C.id,event:c});},children:ye.map((c,W)=>{let j=c.column.columnDef.meta,J=c.getContext(),Oe=c.getValue(),U=e.get(c.column.id),me=U?.isSelectionColumn??false,Q=U?.isExpansionColumn??false,_=U?.isActionsColumn??false,ie=U?.isSpacerColumn??false,Ue=h(j?.hideOn),_e=r||d(b)?void 0:typeof j?.cellClassName=="function"?j.cellClassName({row:b,value:Oe}):j?.cellClassName,fe=t&&L&&!r&&B(m,W);return jsx(we,{role:t?"gridcell":void 0,"aria-colindex":t?W+1:void 0,"aria-selected":t&&!r?L?fe:K:void 0,"data-dtp-cell-selected":fe||void 0,"data-dtp-grid-cell":t?"true":void 0,"data-grid-row-index":t?m:void 0,"data-grid-column-index":t?W:void 0,tabIndex:t&&!r?x$1.row===m&&x$1.column===W?0:-1:void 0,onFocus:t?()=>h$1({row:m,column:W}):void 0,onKeyDown:t?E=>{if(E.target!==E.currentTarget){E.key==="Escape"&&(E.preventDefault(),E.currentTarget.focus());return}V(E,m,W);}:void 0,onPointerDown:t&&L&&!U?.isUtilityColumn&&!ie?E=>{x(E.target,E.currentTarget)||(E.currentTarget.focus(),M(E,m,W));}:void 0,onPointerEnter:t&&L&&!U?.isUtilityColumn&&!ie?E=>{x(E.target,E.currentTarget)||v(E,m,W);}:void 0,className:a("border-b",z(i),G.cellBorder,fe&&G.cellSelected,U?.utilityClassName,U?.isSpacerColumn&&"border-b-0 bg-transparent p-0",U?.pinnedClassName,Ue,g(J),j?.responsiveClassName,_e),style:U?.cellStyle,children:jsx("div",{"data-row-click-ignore":me||Q||_?"true":void 0,className:"min-w-0 max-w-full",style:C.depth>0&&c.column.id===Me?{paddingInlineStart:`${C.depth}rem`}:void 0,children:z$1?.isLoading?j?.skeleton?.(J)??z$1.skeleton??jsx(ae,{className:a("h-4 rounded",j?.type==="numeric"?"ml-auto w-16":j?.type==="date"?"ml-auto w-28":"w-full")}):S&&c.column.id!=="__select__"&&c.column.id!=="__expand__"&&c.column.id!=="__actions__"?fa(J,o,Ce,{Checkbox:Ve,Input:$},n?{cancel:n.cancel,cancelOnEscape:n.cancelOnEscape,commit:()=>n.commit(b),commitOnEnter:n.commitOnEnter,errors:n.errors,isDirty:n.isDirty,isPending:n.isPending,onValueChange:n.clearError}:void 0):C.getIsGrouped()&&c.getIsPlaceholder()?null:C.getIsGrouped()&&c.getIsGrouped()?jsxs("button",{type:"button",className:"inline-flex min-w-0 items-center gap-1 text-left font-medium",onClick:()=>C.toggleExpanded(),"aria-expanded":C.getIsExpanded(),"aria-label":R,children:[jsx("span",{"aria-hidden":"true",children:Ae(J,G,{hasCustomCell:D.has(c.column.id),useCustomOverflowDefaults:D.has(c.column.id)})}),jsxs("span",{className:"shrink-0 opacity-70",children:["(",C.subRows.length,")"]})]}):C.getIsGrouped()&&c.getIsAggregated()?c.column.columnDef.aggregatedCell?flexRender(c.column.columnDef.aggregatedCell,J):Ae(J,G,{hasCustomCell:false,useCustomOverflowDefaults:false}):Ae(J,G,{hasCustomCell:D.has(c.column.id)||me||Q||_||ie,useCustomOverflowDefaults:D.has(c.column.id)||me||Q||_||ie})})},c.id)})}),!r&&q&&f?jsx(Re,{"data-dtp-slot":"data-table-detail-panel-row","data-row-pinned":d$1,children:jsx(we,{colSpan:Math.max(1,ee),className:a("border-b",z(i),G.cellBorder),children:q.render({row:b,rowId:C.id,tableRow:C})})}):null]})}function Wa(e,a){return e.row.id===a.row.id&&e.row.original===a.row.original&&e.rowIndex===a.rowIndex&&e.isSelected===a.isSelected&&e.isInitialLoadingRow===a.isInitialLoadingRow&&e.isEditing===a.isEditing&&(!e.isEditing||e.editingContext===a.editingContext)&&e.isExpanded===a.isExpanded&&e.isDraggable===a.isDraggable&&ja(e.loadingState,a.loadingState)&&qa(e.visibleCells,a.visibleCells)&&e.components===a.components&&$a(e.columnLayouts,a.columnLayouts,a.visibleCells)&&e.currentDensity===a.currentDensity&&e.detailPanel===a.detailPanel&&e.isDetailExpanded===a.isDetailExpanded&&e.pinnedPosition===a.pinnedPosition&&e.onRowClick===a.onRowClick&&e.dragAndDrop===a.dragAndDrop&&e.getRowClassName===a.getRowClassName&&e.groupToggleLabel===a.groupToggleLabel&&e.gridMode===a.gridMode&&(!a.gridMode||e.gridRowAriaIndex===a.gridRowAriaIndex&&e.gridRowIndex===a.gridRowIndex&&e.activeGridCell.row===a.activeGridCell.row&&e.activeGridCell.column===a.activeGridCell.column&&e.cellSelectionEnabled===a.cellSelectionEnabled&&e.isGridCellSelected===a.isGridCellSelected&&e.onGridCellFocus===a.onGridCellFocus&&e.onGridCellKeyDown===a.onGridCellKeyDown&&e.onGridCellPointerDown===a.onGridCellPointerDown&&e.onGridCellPointerEnter===a.onGridCellPointerEnter)&&e.stripedRows===a.stripedRows&&e.uiClassNames===a.uiClassNames&&e.explicitCustomCellColumnIds===a.explicitCustomCellColumnIds&&(!e.isEditing||e.draftValues===a.draftValues)}function ja(e,a){return e?.isLoading===a?.isLoading&&e?.skeleton===a?.skeleton}function qa(e,a){return e.length===a.length&&e.every((i,o)=>{let n=a[o];return n?.id===i.id&&n.column.id===i.column.id})}function $a(e,a,i){return i.every(o=>{let n=e.get(o.column.id),u=a.get(o.column.id);return n?.fixedSide===u?.fixedSide&&n?.isActionsColumn===u?.isActionsColumn&&n?.isExpansionColumn===u?.isExpansionColumn&&n?.isSelectionColumn===u?.isSelectionColumn&&n?.isSpacerColumn===u?.isSpacerColumn&&n?.isUtilityColumn===u?.isUtilityColumn&&n?.pinnedClassName===u?.pinnedClassName&&n?.utilityClassName===u?.utilityClassName&&Xa(n?.cellStyle,u?.cellStyle)})}function Xa(e,a){return e?.width===a?.width&&e?.minWidth===a?.minWidth&&e?.maxWidth===a?.maxWidth&&e?.left===a?.left&&e?.right===a?.right}var Ta=N.memo(Fa,Wa);function Ja({columnGroupHeaderHeight:e,currentDensity:a$1,currentSorting:i,dir:o,draggedColumnIdRef:n,enableColumnReordering:u,enableColumnResizing:D,gridColumnIndex:T,gridMode:R,header:t$1,headerGroupHeaders:I,layout:m,primeColumnForResize:x,reorderColumn:L,resizeColumnLabel:B,resetColumnSize:h$1,TableHead:V,uiClassNames:M}){let v=t$1.column.columnDef.meta,k=N.useId(),f$1=!t$1.isPlaceholder&&t$1.subHeaders.length>0,S=f$1?t$1.column.columnDef:void 0,A=t$1.column.getCanSort(),r=t$1.column.getIsSorted(),K=i.findIndex(d=>d.id===t$1.column.id),z=u&&!t$1.isPlaceholder&&!f$1&&!m.isUtilityColumn&&!m.isSpacerColumn,F=h(v?.hideOn);return jsxs(V,{colSpan:t$1.colSpan,scope:t$1.isPlaceholder?void 0:f$1?"colgroup":"col",role:R?"columnheader":void 0,"aria-colindex":R?T:void 0,"aria-hidden":t$1.isPlaceholder||void 0,"aria-description":f$1?S?.description:void 0,"aria-labelledby":!t$1.isPlaceholder&&!m.isUtilityColumn&&!m.isSpacerColumn?k:void 0,"data-column-id":t$1.column.id,"data-column-group-id":f$1?S?.id:void 0,"data-header-depth":t$1.depth,"data-dtp-slot":f$1?"data-table-column-group-header":"data-table-column-header",className:a("relative border-b",y(a$1),f$1&&M.columnGroupHeader,m.utilityClassName,m.isSpacerColumn&&"border-b-1 bg-transparent p-0",m.pinnedClassName,F,f(t$1.getContext()),v?.headerClassName,f$1&&S?.headerClassName,v?.responsiveClassName),style:{...v?.headerStyle,...f$1?S?.headerStyle:void 0,...f$1&&(S?.headerHeight??e)!==void 0?{height:S?.headerHeight??e}:void 0,...m.headerStyle},title:f$1?S?.description:void 0,"aria-sort":r==="asc"?"ascending":r==="desc"?"descending":A?"none":void 0,draggable:z,tabIndex:z&&!A&&!(D&&t$1.column.getCanResize())?0:void 0,onDragStart:z?d=>{n.current=t$1.column.id,d.dataTransfer.effectAllowed="move";}:void 0,onDragOver:z?d=>{d.preventDefault(),d.dataTransfer.dropEffect="move";}:void 0,onDrop:z?d=>{d.preventDefault();let b=n.current;n.current=null,b&&L(b,t$1.column.id);}:void 0,onKeyDown:z?d=>{if(!d.altKey||d.key!=="ArrowLeft"&&d.key!=="ArrowRight")return;d.preventDefault();let b=I.filter(O=>!w(O.column.id)&&O.column.id!=="__spacer__"),q=b.findIndex(O=>O.column.id===t$1.column.id),C=b[d.key==="ArrowLeft"!=(o==="rtl")?q-1:q+1];C&&L(t$1.column.id,C.column.id);}:void 0,children:[t$1.isPlaceholder?null:A?jsxs("button",{type:"button",className:a("flex w-full items-center gap-2 font-medium",f(t$1.getContext())),onClick:t$1.column.getToggleSortingHandler(),children:[jsx("span",{id:k,className:"truncate",children:flexRender(t$1.column.columnDef.header,t$1.getContext())}),r?jsxs(Fragment,{children:[jsx(c,{className:a("size-4 shrink-0 transition-transform",r==="desc"?"rotate-0":"rotate-180")}),i.length>1&&K>=0?jsx("span",{className:"inline-flex size-4 shrink-0 items-center justify-center rounded-full text-[10px] leading-none",children:K+1}):null]}):jsx(t,{className:a("size-4 shrink-0",M.headerSortIcon??"opacity-70")})]}):m.isUtilityColumn||m.isSpacerColumn?flexRender(t$1.column.columnDef.header,t$1.getContext()):jsx("span",{id:k,children:flexRender(t$1.column.columnDef.header,t$1.getContext())}),D&&!t$1.isPlaceholder&&t$1.column.getCanResize()?jsx("div",{"aria-label":B,"aria-orientation":"vertical","aria-valuemax":Za(t$1),"aria-valuemin":Ya(t$1),"aria-valuenow":Math.round(t$1.getSize()),role:"separator",tabIndex:0,onDoubleClick:()=>{for(let d of re(t$1))h$1(d.column.id);},onMouseDown:d=>{for(let b of re(t$1))x(b.column.id,b.getSize());t$1.getResizeHandler()(d);},onTouchStart:d=>{for(let b of re(t$1))x(b.column.id,b.getSize());t$1.getResizeHandler()(d);},onKeyDown:d=>{if(d.altKey)return;if(d.key==="Home"){d.preventDefault();for(let q of re(t$1))h$1(q.column.id);return}if(d.key!=="ArrowLeft"&&d.key!=="ArrowRight")return;d.preventDefault(),d.stopPropagation();let b=d.key==="ArrowRight"!=(o==="rtl");et(t$1,(b?1:-1)*(d.shiftKey?25:10));},className:a("absolute inset-y-0 z-50 h-full w-3 cursor-col-resize touch-none select-none ltr:right-0 ltr:translate-x-1/2 rtl:left-0 rtl:-translate-x-1/2 after:absolute after:top-0 after:left-1/2 after:h-full after:w-px after:-translate-x-1/2",M.resizeHandle??"after:bg-current after:opacity-20 hover:after:opacity-70",t$1.column.getIsResizing()&&(M.resizeHandleActive??"after:opacity-100"))}):null]},t$1.id)}function Qa(e,a){return e.header.id===a.header.id&&e.header.column.id===a.header.column.id&&e.header.column.columnDef===a.header.column.columnDef&&e.header.colSpan===a.header.colSpan&&e.header.isPlaceholder===a.header.isPlaceholder&&at(e.header,a.header)&&e.currentDensity===a.currentDensity&&e.columnGroupHeaderHeight===a.columnGroupHeaderHeight&&e.dir===a.dir&&e.enableColumnReordering===a.enableColumnReordering&&e.enableColumnResizing===a.enableColumnResizing&&e.gridMode===a.gridMode&&e.gridColumnIndex===a.gridColumnIndex&&e.TableHead===a.TableHead&&e.uiClassNames===a.uiClassNames&&e.draggedColumnIdRef===a.draggedColumnIdRef&&e.primeColumnForResize===a.primeColumnForResize&&e.reorderColumn===a.reorderColumn&&e.resizeColumnLabel===a.resizeColumnLabel&&e.resetColumnSize===a.resetColumnSize&&e.selectionState===a.selectionState&&tt(e.currentSorting,a.currentSorting)&&nt(e.headerGroupHeaders,a.headerGroupHeaders)&<(e.layout,a.layout)}function re(e){return e.subHeaders.length?e.getLeafHeaders().filter(a=>!a.subHeaders.length):[e]}function Ya(e){return re(e).reduce((a,i)=>a+(i.column.columnDef.minSize??20),0)}function Za(e){return re(e).reduce((a,i)=>a+(i.column.columnDef.maxSize??Number.MAX_SAFE_INTEGER),0)}function et(e,a){let i=re(e),o=a/i.length;e.getContext().table.setColumnSizing(n=>{let u={...n};for(let D of i){let T=D.column,R=T.columnDef.minSize??20,t=T.columnDef.maxSize??Number.MAX_SAFE_INTEGER;u[T.id]=Math.min(t,Math.max(R,T.getSize()+o));}return u});}function at(e,a){return e.subHeaders.length===a.subHeaders.length&&e.subHeaders.every((i,o)=>a.subHeaders[o]?.id===i.id)}function tt(e,a){return e.length===a.length&&e.every((i,o)=>{let n=a[o];return n?.id===i.id&&n.desc===i.desc})}function nt(e,a){return e.length===a.length&&e.every((i,o)=>a[o]?.id===i.id)}function lt(e,a){return e.fixedSide===a.fixedSide&&e.isSpacerColumn===a.isSpacerColumn&&e.isUtilityColumn===a.isUtilityColumn&&e.pinnedClassName===a.pinnedClassName&&e.utilityClassName===a.utilityClassName&&e.headerStyle?.width===a.headerStyle?.width&&e.headerStyle?.minWidth===a.headerStyle?.minWidth&&e.headerStyle?.maxWidth===a.headerStyle?.maxWidth&&e.headerStyle?.left===a.headerStyle?.left&&e.headerStyle?.right===a.headerStyle?.right}var Ca=N.memo(Ja,Qa);function Ut({ariaDescribedBy:e,ariaLabelledBy:a$1,bodyRowComponents:i,cellSelection:o,cellSelectionEnabled:n,columnLayouts:u,columnGroupHeaderHeight:D,currentDensity:T,currentDetailExpanded:R,currentSorting:t=[],dir:I,DataTableEmptyState:m,dragAndDrop:x,draggedColumnIdRef:L,draftValues:B,editingRowId:h,editingContext:V,emptyNode:M,enableColumnReordering:v,enableColumnResizing:k,explicitCustomCellColumnIds:f,fillMinWidth:S,flexGrow:A,gridMode:r,gridPageSize:K,gridRowOffset:z,onGridActiveRowIndexChange:F,onCellSelectionChange:d$1,getColumnLayout:b,getRowClassName:q,getRowLoadingState:C,infiniteScroll:O,layoutMode:Ce,localSearchValue:ce,onRowClick:G,primeColumnForResize:ye,renderedRows:ee,detailPanel:Ve,topPinnedRows:$,bottomPinnedRows:ae,reorderColumn:we,resetColumnSize:Re,resolvedLabels:X,rowsToRender:he,ScrollArea:Me,ScrollBar:c,sentinelRef:W,setDraftValues:j,shouldRenderInitialLoading:J,stateOverlayNode:Oe,stickyHeader:U,stripedRows:me,summaryRows:Q,table:_,tableClassName:ie,tableContainerClassName:Ue,Table:_e,TableBody:fe,TableCell:E,TableFooter:ya="tfoot",TableHead:wa,TableHeader:Ra,TableRow:be,tableScrollContainerRef:Be,tableScrollElement:ve,totalRowCount:Ze,uiClassNames:te,virtualPaddingBottom:ea,virtualPaddingTop:aa,visibleLeafColumnCount:ne,visibleLeafColumns:se}){let ha=_.getIsAllPageRowsSelected()?true:_.getIsSomePageRowsSelected()?"indeterminate":false,ta=_.getFilteredRowModel().rows,Sa=N.useMemo(()=>Q.length?ta.map(l=>l.original):[],[ta,Q.length]),Se=_.getHeaderGroups().length,ke=$.length+ee.length+ae.length,[ge,na]=N.useState({row:0,column:0}),la=N.useRef(false),Fe=N.useRef(false),De=N.useMemo(()=>[...$,...ee,...ae],[ae,ee,$]),pe=N.useCallback((l,s)=>{let g=De[l],p=se[s];return g&&p&&!w(p.id)&&p.id!=="__spacer__"?{rowId:g.id,columnId:p.id}:void 0},[De,se]),de=N.useMemo(()=>{if(!o)return;let l=De.findIndex(H=>H.id===o.anchor.rowId),s=De.findIndex(H=>H.id===o.focus.rowId),g=se.findIndex(H=>H.id===o.anchor.columnId),p=se.findIndex(H=>H.id===o.focus.columnId);if(!(l<0||s<0||g<0||p<0))return {firstRow:Math.min(l,s),lastRow:Math.max(l,s),firstColumn:Math.min(g,p),lastColumn:Math.max(g,p)}},[o,De,se]),ka=N.useCallback((l,s)=>!!(de&&l>=de.firstRow&&l<=de.lastRow&&s>=de.firstColumn&&s<=de.lastColumn),[de]),Ea=N.useCallback(l=>{la.current=true,na(l);},[]),Ee=N.useCallback((l,s,g)=>{if(!n)return;let p=pe(l,s);if(!p)return;let H=g&&o?.anchor?o.anchor:p;d$1({anchor:H,focus:p});},[o,n,pe,d$1]),Ha=N.useCallback((l,s,g)=>{!n||l.button!==0||(Fe.current=true,Ee(s,g,l.shiftKey));},[n,Ee]),Na=N.useCallback((l,s,g)=>{!n||!Fe.current||l.buttons!==1||Ee(s,g,true);},[n,Ee]);N.useEffect(()=>{let l=()=>{Fe.current=false;};return window.addEventListener("pointerup",l),()=>window.removeEventListener("pointerup",l)},[]),N.useEffect(()=>{if(!r)return;F?.(ge.row);let l=requestAnimationFrame(()=>{let s=Be.current?.querySelectorAll('[data-dtp-grid-cell="true"]'),g=Array.from(s??[]).find(p=>Number(p.dataset.gridRowIndex)===ge.row&&Number(p.dataset.gridColumnIndex)===ge.column);g&&la.current&&g.focus();});return ()=>cancelAnimationFrame(l)},[ge,r,F,Be]);let Pa=N.useCallback((l,s,g)=>{if(l.defaultPrevented||l.target!==l.currentTarget)return;let p=Math.max(1,K??(Math.floor((ve?.clientHeight||0)/Math.max(1,ve?.querySelector("tr")?.offsetHeight||48))||10)),H=Math.max(0,ke-1),le=Math.max(0,ne-1),Y=s,Z=g;switch(l.key){case "ArrowUp":Y--;break;case "ArrowDown":Y++;break;case "ArrowLeft":Z--;break;case "ArrowRight":Z++;break;case "Home":(l.ctrlKey||l.metaKey)&&(Y=0),Z=0;break;case "End":(l.ctrlKey||l.metaKey)&&(Y=H),Z=le;break;case "PageUp":Y-=p;break;case "PageDown":Y+=p;break;default:return}l.preventDefault();let je={row:Math.min(H,Math.max(0,Y)),column:Math.min(le,Math.max(0,Z))};if(na(je),l.shiftKey&&n){let qe=pe(je.row,je.column),oa=o?.anchor??pe(s,g)??qe;oa&&qe&&d$1({anchor:oa,focus:qe});}},[o,n,ke,pe,K,d$1,ve,ne]),We=(l,s,g)=>{let p=l.original,H=d(p),le=H?{isLoading:true}:C?.(p,s),Y=typeof le=="boolean"?{isLoading:le}:le,Z=H?false:x?.getRowDraggable?.(p)??false;return jsx(Ta,{columnLayouts:u,components:i,currentDensity:T,draftValues:B,editingContext:V,dragAndDrop:x,explicitCustomCellColumnIds:f,getRowClassName:q,groupToggleLabel:l.getIsExpanded()?X.collapseRow:X.expandRow,isDraggable:Z,isDetailExpanded:R===true||!!R[l.id],isEditing:h===l.id,isExpanded:l.getIsExpanded(),isInitialLoadingRow:H,isSelected:l.getIsSelected(),loadingState:Y,onRowClick:G,originalRow:p,pinnedPosition:g,detailPanel:Ve,row:l,rowIndex:s,setDraftValues:j,stripedRows:me,uiClassNames:te,visibleCells:l.getVisibleCells(),visibleLeafColumnCount:ne,gridMode:r,gridRowIndex:s,gridRowAriaIndex:Se+z+s+1,activeGridCell:ge,cellSelectionEnabled:n,isGridCellSelected:ka,onGridCellFocus:Ea,onGridCellKeyDown:Pa,onGridCellPointerDown:Ha,onGridCellPointerEnter:Na},`${g??"center"}-${l.id}`)};return jsxs("div",{"data-dtp-slot":"data-table-table-shell",className:a("relative box-border border-2 border-transparent transition-colors",A?"flex min-h-0 flex-1 flex-col":"h-full",x?.isDragging&&(te.dragActive??"rounded-md border-dashed")),children:[jsx("div",{ref:Be,className:a(A?"flex min-h-0 flex-1 flex-col":"h-full"),children:jsxs(Me,{className:a("rounded-md border",A?"min-h-0 flex-1":"h-full",te.tableContainer,te.tableScrollArea,Ue),children:[jsx("div",{className:"min-h-full",children:jsxs(_e,{"aria-describedby":e,"aria-labelledby":a$1,role:r?"grid":void 0,"aria-colcount":r?ne:void 0,"aria-rowcount":r?Se+(Ze??ke)+Q.length:void 0,className:a("w-full table-fixed border-separate border-spacing-0",ie),style:{minWidth:Ce==="fill"&&S||void 0,width:Ce==="fit"?_.getTotalSize():"100%"},children:[jsx("colgroup",{children:_.getVisibleLeafColumns().map(l=>{let s=b(l.id);return jsx("col",{style:s.colStyle},l.id)})}),jsx(Ra,{role:r?"rowgroup":void 0,className:a(U?te.tableStickyHeader??"sticky top-0 z-30 backdrop-blur":void 0),children:_.getHeaderGroups().map(l=>jsx(be,{role:r?"row":void 0,"aria-rowindex":r?l.depth+1:void 0,children:l.headers.map(s=>jsx(Ca,{columnGroupHeaderHeight:D,currentDensity:T,currentSorting:t,dir:I,draggedColumnIdRef:L,enableColumnReordering:v,enableColumnResizing:k,header:s,headerGroupHeaders:l.headers,layout:rt(s,b),primeColumnForResize:ye,reorderColumn:we,resizeColumnLabel:X.resizeColumn(typeof s.column.columnDef.header=="string"?s.column.columnDef.header:s.column.id),resetColumnSize:Re,selectionState:s.column.id==="__select__"?ha:void 0,TableHead:wa,uiClassNames:te,gridMode:r,gridColumnIndex:s.isPlaceholder||s.subHeaders.length?void 0:_.getVisibleLeafColumns().findIndex(g=>g.id===s.column.id)+1},s.id))},l.id))}),jsx(fe,{role:r?"rowgroup":void 0,children:$.length||ee.length||ae.length?jsxs(Fragment,{children:[$.map((l,s)=>We(l,s,"top")),aa>0?jsx(be,{"aria-hidden":"true",role:r?"presentation":void 0,children:jsx(E,{colSpan:Math.max(1,ne),className:"border-b-0 p-0",style:{height:aa}})}):null,he.map(({row:l,rowIndex:s})=>We(l,s+$.length)),ea>0?jsx(be,{"aria-hidden":"true",role:r?"presentation":void 0,children:jsx(E,{colSpan:Math.max(1,ne),className:"border-b-0 p-0",style:{height:ea}})}):null,ae.map((l,s)=>We(l,$.length+ee.length+s,"bottom"))]}):jsx(be,{role:r?"row":void 0,"aria-rowindex":r?Se+1:void 0,children:jsx(E,{role:r?"gridcell":void 0,"aria-colindex":r?1:void 0,colSpan:Math.max(1,ne),className:"h-full grow",children:jsx("div",{className:"flex h-full min-h-full w-full grow items-center justify-center",children:M??jsx(m,{title:ce?X.noMatchingRowsTitle:X.noRowsTitle,description:ce?X.noMatchingRowsDescription:X.noRowsDescription})})})})}),Q.length?jsx(ya,{role:r?"rowgroup":void 0,children:Q.map((l,s)=>jsx(be,{role:r?"row":void 0,"aria-rowindex":r?Se+(Ze??ke)+s+1:void 0,children:se.map((g,p)=>{let H=l.cells[g.id]??(p===0?l.label:null);return jsx(E,{role:r?"gridcell":void 0,"aria-colindex":r?p+1:void 0,className:a("border-b font-medium",te.cellBorder),children:typeof H=="function"?H({rows:Sa,columnId:g.id}):H},`${l.key}-${g.id}`)})},l.key))}):null]})}),O?.enabled&&ee.length&&!J?jsx("div",{className:"px-4 pb-4",children:jsx("div",{ref:W,className:"h-4 w-full"})}):null,jsx(c,{orientation:"horizontal"})]})}),Oe]})}function rt(e,a){let i=a(e.column.id);if(e.isPlaceholder||!e.subHeaders.length)return i;let o=e.getLeafHeaders().filter(D=>!D.subHeaders.length).map(D=>a(D.column.id)),n=o[0]?.fixedSide;if(!n||!o.every(D=>D.fixedSide===n))return i;let u=n==="left"?o[0]:o.at(-1);return {...i,fixedSide:n,headerStyle:u?.headerStyle?{left:u.headerStyle.left,right:u.headerStyle.right}:void 0,pinnedClassName:u?.pinnedClassName}}export{dt as a,mt as b,Ta as c,Ca as d,Ut as e};//# sourceMappingURL=chunk-NLQJKISS.js.map +//# sourceMappingURL=chunk-NLQJKISS.js.map \ No newline at end of file diff --git a/dist/chunk-NLQJKISS.js.map b/dist/chunk-NLQJKISS.js.map new file mode 100644 index 0000000..1f615f0 --- /dev/null +++ b/dist/chunk-NLQJKISS.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/core/data-table/use-row-editing.tsx","../src/core/data-table/data-table-virtual-row-measurement.tsx","../src/core/data-table/data-table-cell-content.tsx","../src/core/data-table/data-table-body-row.tsx","../src/core/data-table/data-table-header-cell.tsx","../src/core/data-table/data-table-table-panel.tsx"],"names":["useRowEditing","columns","editableRows","onError","editingRowId","setEditingRowId","P","draftValues","setDraftValues","draftValuesRef","originalDraftValues","setOriginalDraftValues","editErrors","setEditErrors","isSavingEdit","setIsSavingEdit","isEditDirty","areDraftValuesEqual","cancelEditing","startEditingRow","row","rowId","initialValues","defaultDraftValues","saveEdit","draftSnapshot","rollback","validation","validationErrors","normalizeEditValidationErrors","optimisticResult","error","clearEditError","columnId","current","next","getDataTableLeafColumns","draft","column","renderEditableCell","context","components","editing","Checkbox","Input","meta","accessorKey","draftValue","setDraftValue","value","handleKeyDown","event","inputType","getEditableInputType","jsxs","jsx","checked","getEditableInputValue","rawValue","parsedValue","parseEditableInputValue","left","right","keys","key","type","previousValue","DataTableVirtualRowMeasurementContext","Le","DataTableVirtualRowMeasurementProvider","children","measureRow","useDataTableVirtualRowMeasurement","renderDataTableCellContent","classNames","options","hasCustomCell","renderedCellContent","flexRender","hasComplexRenderedContent","isComplexRenderedCellContent","resolvedOverflow","resolveDataTableCellOverflow","cn","getCellOverflowClassName","IconClock","formatDateValue","content","formatCellValue","useCustomOverflowDefaults","overflow","pa","DataTableBodyRowInner","columnLayouts","currentDensity","editingContext","dragAndDrop","explicitCustomCellColumnIds","getRowClassName","groupToggleLabel","gridMode","gridRowAriaIndex","gridRowIndex","activeGridCell","cellSelectionEnabled","isGridCellSelected","onGridCellFocus","onGridCellKeyDown","onGridCellPointerDown","onGridCellPointerEnter","isDraggable","isDetailExpanded","isEditing","isExpanded","isInitialLoadingRow","isSelected","loadingState","onRowClick","pinnedPosition","originalRow","detailPanel","rowIndex","stripedRows","uiClassNames","visibleCells","visibleLeafColumnCount","Skeleton","TableCell","TableRow","virtualRowMeasurement","measureElement","firstDataColumnId","cell","Ge","isDataTableInteractiveTarget","columnIndex","cellContext","layout","isSelectionColumn","isExpansionColumn","isActionsColumn","isSpacerColumn","hideClassName","hideOnClassName","cellClassName","isDataTableLoadingRow","isCellSelected","getDensityCellClassName","cellAlignClassName","areDataTableBodyRowsEqual","previous","sameLoadingState","sameVisibleCells","sameColumnLayouts","index","nextCell","cells","previousLayout","nextLayout","sameCellStyle","DataTableBodyRow","DataTableHeaderCellInner","columnGroupHeaderHeight","currentSorting","dir","draggedColumnIdRef","enableColumnReordering","enableColumnResizing","gridColumnIndex","header","headerGroupHeaders","primeColumnForResize","reorderColumn","resizeColumnLabel","resetColumnSize","TableHead","headerContentId","Ke","isColumnGroup","groupDefinition","canSort","sortingState","sortingIndex","sort","canReorderColumn","getDensityHeaderClassName","headerAlignClassName","sourceColumnId","headers","item","isUtilityColumnId","currentIndex","target","Fragment","IconChevronDown","IconSelector","getHeaderMaximumSize","getHeaderMinimumSize","leafHeader","getResizableLeafHeaders","grows","resizeHeaderBy","areDataTableHeaderCellsEqual","sameSubHeaders","sameSorting","sameHeaderGroupHeaders","sameHeaderLayout","total","delta","leafHeaders","deltaPerLeaf","minimum","maximum","nextSort","DataTableHeaderCell","DataTableTablePanel","ariaDescribedBy","ariaLabelledBy","bodyRowComponents","cellSelection","currentDetailExpanded","DataTableEmptyState","emptyNode","fillMinWidth","flexGrow","gridPageSize","gridRowOffset","onGridActiveRowIndexChange","onCellSelectionChange","getColumnLayout","getRowLoadingState","infiniteScroll","layoutMode","localSearchValue","renderedRows","topPinnedRows","bottomPinnedRows","resolvedLabels","rowsToRender","ScrollArea","ScrollBar","sentinelRef","shouldRenderInitialLoading","stateOverlayNode","stickyHeader","summaryRows","table","tableClassName","tableContainerClassName","Table","TableBody","TableFooter","TableHeader","tableScrollContainerRef","tableScrollElement","totalRowCount","virtualPaddingBottom","virtualPaddingTop","visibleLeafColumns","selectionState","filteredRows","summarySourceRows","headerRowCount","displayRowCount","activeCell","setActiveCell","shouldRestoreGridFocusRef","pointerSelectingRef","gridRows","getGridCoordinate","selectedBounds","anchorRow","focusRow","anchorColumn","focusColumn","handleGridCellFocus","selectGridCell","extend","focus","anchor","handleGridCellPointerDown","handleGridCellPointerEnter","stopSelecting","frame","moveGridFocus","pageRows","lastRow","lastColumn","nextRow","nextColumn","renderBodyRow","resolvedLoadingState","headerGroup","getHeaderLayout","summaryRow","summaryIndex","columnLayout","leafLayouts","fixedSide","edgeLayout"],"mappings":"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","file":"chunk-NLQJKISS.js","sourcesContent":["import * as React from \"react\";\nimport type { CellContext } from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableColumnType,\n DataTableEditableRowsConfig,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { getDataTableLeafColumns } from \"./data-table-utils\";\n\nexport function useRowEditing({\n columns,\n editableRows,\n onError,\n}: {\n columns: Array>;\n editableRows: DataTableEditableRowsConfig | undefined;\n onError?: (error: unknown, row: TData) => void;\n}) {\n const [editingRowId, setEditingRowId] = React.useState(null);\n const [draftValues, setDraftValues] = React.useState<\n Record\n >({});\n const draftValuesRef = React.useRef(draftValues);\n const [originalDraftValues, setOriginalDraftValues] = React.useState<\n Record\n >({});\n const [editErrors, setEditErrors] = React.useState>(\n {},\n );\n const [isSavingEdit, setIsSavingEdit] = React.useState(false);\n const isEditDirty = React.useMemo(\n () => !areDraftValuesEqual(draftValues, originalDraftValues),\n [draftValues, originalDraftValues],\n );\n\n React.useEffect(() => {\n draftValuesRef.current = draftValues;\n }, [draftValues]);\n\n const cancelEditing = React.useCallback(() => {\n setEditingRowId(null);\n setDraftValues({});\n setEditErrors({});\n setOriginalDraftValues({});\n }, []);\n\n const startEditingRow = React.useCallback(\n (row: TData, rowId: string) => {\n const initialValues =\n editableRows?.getInitialValues?.(row) ??\n defaultDraftValues(row, columns);\n setOriginalDraftValues({ ...initialValues });\n setDraftValues(initialValues);\n setEditErrors({});\n setEditingRowId(rowId);\n },\n [columns, editableRows],\n );\n\n const saveEdit = React.useCallback(\n async (row: TData) => {\n if (!editableRows) {\n return false;\n }\n\n setIsSavingEdit(true);\n const draftSnapshot = { ...draftValuesRef.current };\n let rollback: (() => void) | undefined;\n try {\n const validation = await editableRows.validateRow?.(\n row,\n draftSnapshot,\n );\n const validationErrors = normalizeEditValidationErrors(validation);\n if (Object.keys(validationErrors).length > 0) {\n setEditErrors(validationErrors);\n return false;\n }\n\n setEditErrors({});\n const optimisticResult = editableRows.onOptimisticUpdate?.(\n row,\n draftSnapshot,\n );\n rollback =\n typeof optimisticResult === \"function\"\n ? optimisticResult\n : undefined;\n await editableRows.onSaveRow(row, draftSnapshot);\n editableRows.onSaveSuccess?.(row, draftSnapshot);\n React.startTransition(cancelEditing);\n return true;\n } catch (error) {\n try {\n rollback?.();\n } catch {\n // Preserve the original save error for the public error callbacks.\n }\n editableRows.onSaveError?.(error, row, draftSnapshot);\n onError?.(error, row);\n return false;\n } finally {\n setIsSavingEdit(false);\n }\n },\n [cancelEditing, editableRows, onError],\n );\n const clearEditError = React.useCallback((columnId: string) => {\n setEditErrors((current) => {\n if (!current[columnId] && !current._row) {\n return current;\n }\n const next = { ...current };\n delete next[columnId];\n delete next._row;\n return next;\n });\n }, []);\n\n return {\n cancelEditing,\n clearEditError,\n draftValues,\n editErrors,\n editingRowId,\n isEditDirty,\n isSavingEdit,\n saveEdit,\n setDraftValues,\n setEditingRowId,\n startEditingRow,\n };\n}\n\nfunction defaultDraftValues(\n row: TData,\n columns: Array>,\n) {\n return getDataTableLeafColumns(columns).reduce>(\n (draft, { column }) => {\n if (\"accessorKey\" in column && typeof column.accessorKey === \"string\") {\n draft[column.accessorKey] = (row as Record)[\n column.accessorKey\n ];\n }\n return draft;\n },\n {},\n );\n}\n\nexport function renderEditableCell(\n context: CellContext,\n draftValues: Record,\n setDraftValues: React.Dispatch>>,\n components: Pick,\n editing?: {\n cancel: () => void;\n commit: () => void;\n errors: Record;\n isDirty: boolean;\n isPending: boolean;\n cancelOnEscape: boolean;\n commitOnEnter: boolean;\n onValueChange: (columnId: string) => void;\n },\n) {\n const { Checkbox, Input } = components;\n const column = context.column.columnDef as DataTableColumnDef;\n const meta = column.meta;\n const accessorKey =\n \"accessorKey\" in column && typeof column.accessorKey === \"string\"\n ? column.accessorKey\n : context.column.id;\n const draftValue = draftValues[accessorKey];\n const error =\n editing?.errors[accessorKey] ??\n editing?.errors[context.column.id] ??\n editing?.errors._row;\n const setDraftValue = (value: unknown) => {\n editing?.onValueChange(accessorKey);\n setDraftValues((current) => ({\n ...current,\n [accessorKey]: value,\n }));\n };\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.key === \"Escape\" && editing?.cancelOnEscape) {\n event.preventDefault();\n editing.cancel();\n } else if (\n event.key === \"Enter\" &&\n !event.shiftKey &&\n editing?.commitOnEnter\n ) {\n event.preventDefault();\n editing.commit();\n }\n };\n\n if (meta?.renderEditCell) {\n return meta.renderEditCell({\n cell: context,\n row: context.row.original,\n value: context.getValue(),\n draftValue,\n error,\n isDirty: editing?.isDirty ?? false,\n isPending: editing?.isPending ?? false,\n setDraftValue,\n });\n }\n\n const inputType = getEditableInputType(meta?.type, draftValue);\n\n if (typeof draftValue === \"boolean\") {\n return (\n
    \n {\n setDraftValue(checked === true);\n }}\n onKeyDown={handleKeyDown}\n />\n {error ? (\n \n {error}\n \n ) : null}\n
    \n );\n }\n\n return (\n
    \n ) => {\n const rawValue = event.target.value;\n const parsedValue = meta?.parseEditValue\n ? meta.parseEditValue(rawValue, context)\n : parseEditableInputValue(rawValue, inputType, draftValue);\n setDraftValue(parsedValue);\n }}\n onKeyDown={handleKeyDown}\n />\n {error ? (\n \n {error}\n \n ) : null}\n
    \n );\n}\n\nfunction normalizeEditValidationErrors(\n value: void | string | Record,\n) {\n if (!value) {\n return {};\n }\n return typeof value === \"string\" ? { _row: value } : value;\n}\n\nfunction areDraftValuesEqual(\n left: Record,\n right: Record,\n) {\n const keys = new Set([...Object.keys(left), ...Object.keys(right)]);\n return Array.from(keys).every((key) => Object.is(left[key], right[key]));\n}\n\nfunction getEditableInputType(\n type: DataTableColumnType | undefined,\n value: unknown,\n) {\n if (type === \"numeric\" || typeof value === \"number\") {\n return \"number\";\n }\n\n if (type === \"date\" || value instanceof Date) {\n return \"datetime-local\";\n }\n\n return \"text\";\n}\n\nfunction getEditableInputValue(value: unknown, inputType = \"text\") {\n if (value == null) {\n return \"\";\n }\n\n if (value instanceof Date) {\n return inputType === \"datetime-local\"\n ? value.toISOString().slice(0, 16)\n : value.toISOString();\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n typeof value === \"bigint\"\n ) {\n return String(value);\n }\n\n return \"\";\n}\n\nfunction parseEditableInputValue(\n value: string,\n inputType: string,\n previousValue: unknown,\n) {\n if (inputType === \"number\") {\n return value === \"\" ? null : Number(value);\n }\n\n if (inputType === \"datetime-local\") {\n if (!value) {\n return null;\n }\n return previousValue instanceof Date ? new Date(value) : value;\n }\n\n return value;\n}\n","import * as React from \"react\";\n\nconst DataTableVirtualRowMeasurementContext = React.createContext<\n ((element: HTMLTableRowElement | null) => void) | undefined\n>(undefined);\n\nexport function DataTableVirtualRowMeasurementProvider({\n children,\n measureRow,\n}: {\n children: React.ReactNode;\n measureRow: ((element: HTMLTableRowElement | null) => void) | undefined;\n}) {\n return (\n \n {children}\n \n );\n}\n\nexport function useDataTableVirtualRowMeasurement():\n | ((element: HTMLTableRowElement | null) => void)\n | undefined {\n return React.useContext(DataTableVirtualRowMeasurementContext);\n}\n","import * as React from \"react\";\nimport { flexRender, type CellContext } from \"@tanstack/react-table\";\nimport { IconClock } from \"../icons\";\nimport type {\n DataTableCellOverflow,\n DataTableColumnDef,\n} from \"../types\";\nimport type { DataTableUiClassNames } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nexport function renderDataTableCellContent(\n context: CellContext,\n classNames?: DataTableUiClassNames,\n options?: {\n hasCustomCell?: boolean;\n useCustomOverflowDefaults?: boolean;\n },\n) {\n const column = context.column.columnDef as DataTableColumnDef;\n const meta = column.meta;\n const value = context.getValue();\n const hasCustomCell = options?.hasCustomCell ?? false;\n const renderedCellContent = hasCustomCell && column.cell\n ? flexRender(column.cell, context)\n : undefined;\n const hasComplexRenderedContent = isComplexRenderedCellContent(\n renderedCellContent,\n );\n const resolvedOverflow = resolveDataTableCellOverflow({\n context,\n useCustomOverflowDefaults: options?.useCustomOverflowDefaults ?? false,\n value,\n });\n\n if (meta?.type === \"date\" && !hasCustomCell) {\n return (\n \n \n {formatDateValue(value)}\n \n );\n }\n\n const content =\n renderedCellContent !== undefined &&\n renderedCellContent !== null &&\n renderedCellContent !== \"\"\n ? renderedCellContent\n : value == null || value === \"\"\n ? -\n : formatCellValue(value);\n\n return (\n *]:max-w-full [&>*]:min-w-0\",\n )}\n >\n {content}\n \n );\n}\n\nfunction resolveDataTableCellOverflow({\n context,\n useCustomOverflowDefaults,\n value,\n}: {\n context: CellContext;\n useCustomOverflowDefaults: boolean;\n value: unknown;\n}): DataTableCellOverflow {\n const column = context.column.columnDef as DataTableColumnDef;\n const resolvedOverflow =\n typeof column.meta?.overflow === \"function\"\n ? column.meta.overflow({\n row: context.row.original,\n value,\n })\n : column.meta?.overflow;\n\n if (resolvedOverflow) {\n return resolvedOverflow;\n }\n\n return useCustomOverflowDefaults ? \"clip\" : \"truncate\";\n}\n\nfunction getCellOverflowClassName(overflow: DataTableCellOverflow) {\n switch (overflow) {\n case \"clip\":\n return \"block overflow-hidden whitespace-nowrap\";\n case \"wrap\":\n return \"block overflow-hidden whitespace-normal break-words\";\n case \"visible\":\n return \"block overflow-visible whitespace-normal\";\n case \"truncate\":\n default:\n return \"block overflow-hidden text-ellipsis whitespace-nowrap\";\n }\n}\n\nfunction isComplexRenderedCellContent(content: React.ReactNode) {\n if (content == null) {\n return false;\n }\n\n return (\n React.isValidElement(content) ||\n Array.isArray(content) ||\n typeof content === \"object\"\n );\n}\n\nfunction formatDateValue(value: unknown) {\n if (typeof value === \"number\") {\n return new Date(value * 1000).toLocaleString();\n }\n\n if (typeof value === \"string\" && value) {\n return value;\n }\n\n return \"-\";\n}\n\nfunction formatCellValue(value: unknown) {\n if (value instanceof Date) {\n return value.toLocaleString();\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n typeof value === \"bigint\"\n ) {\n return String(value);\n }\n\n try {\n return JSON.stringify(value);\n } catch {\n return \"-\";\n }\n}\n","import * as React from \"react\";\nimport { flexRender, type Cell, type Row } from \"@tanstack/react-table\";\nimport type { RowPinningPosition } from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableDensity,\n DataTableProps,\n DataTableRowLoadingState,\n} from \"../types\";\nimport type { DataTableUiClassNames, DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { renderDataTableCellContent } from \"./data-table-cell-content\";\nimport type { DataTableColumnLayout } from \"./use-column-layout\";\nimport {\n getDensityCellClassName,\n isDataTableInteractiveTarget,\n isDataTableLoadingRow,\n} from \"./data-table-utils\";\nimport { renderEditableCell } from \"./use-row-editing\";\nimport { useDataTableVirtualRowMeasurement } from \"./data-table-virtual-row-measurement\";\nimport { cellAlignClassName, hideOnClassName } from \"../types\";\n\nexport type DataTableRowEditingContext = {\n cancel: () => void;\n clearError: (columnId: string) => void;\n commit: (row: TData) => void;\n errors: Record;\n isDirty: boolean;\n isPending: boolean;\n cancelOnEscape: boolean;\n commitOnEnter: boolean;\n};\n\ntype DataTableBodyRowProps = {\n columnLayouts: ReadonlyMap;\n components: Pick<\n DataTableUiKit,\n \"Checkbox\" | \"Input\" | \"Skeleton\" | \"TableCell\" | \"TableRow\"\n >;\n currentDensity: DataTableDensity;\n draftValues: Record;\n editingContext?: DataTableRowEditingContext;\n dragAndDrop: DataTableProps[\"dragAndDrop\"];\n explicitCustomCellColumnIds: ReadonlySet;\n getRowClassName: DataTableProps[\"getRowClassName\"];\n groupToggleLabel: string;\n gridMode: boolean;\n gridRowAriaIndex: number;\n gridRowIndex: number;\n activeGridCell: { row: number; column: number };\n cellSelectionEnabled: boolean;\n isGridCellSelected: (row: number, column: number) => boolean;\n onGridCellFocus: (cell: { row: number; column: number }) => void;\n onGridCellKeyDown: (\n event: React.KeyboardEvent,\n row: number,\n column: number,\n ) => void;\n onGridCellPointerDown: (\n event: React.PointerEvent,\n row: number,\n column: number,\n ) => void;\n onGridCellPointerEnter: (\n event: React.PointerEvent,\n row: number,\n column: number,\n ) => void;\n isDraggable: boolean;\n isDetailExpanded: boolean;\n isEditing: boolean;\n isExpanded: boolean;\n isInitialLoadingRow: boolean;\n isSelected: boolean;\n loadingState: DataTableRowLoadingState | undefined;\n onRowClick: DataTableProps[\"onRowClick\"];\n pinnedPosition?: Exclude;\n originalRow: TData;\n detailPanel: DataTableProps[\"detailPanel\"];\n row: Row;\n rowIndex: number;\n setDraftValues: React.Dispatch>>;\n stripedRows: boolean;\n uiClassNames: DataTableUiClassNames;\n visibleCells: Array>;\n visibleLeafColumnCount: number;\n};\n\nfunction DataTableBodyRowInner({\n columnLayouts,\n components,\n currentDensity,\n draftValues,\n editingContext,\n dragAndDrop,\n explicitCustomCellColumnIds,\n getRowClassName,\n groupToggleLabel,\n gridMode,\n gridRowAriaIndex,\n gridRowIndex,\n activeGridCell,\n cellSelectionEnabled,\n isGridCellSelected,\n onGridCellFocus,\n onGridCellKeyDown,\n onGridCellPointerDown,\n onGridCellPointerEnter,\n isDraggable,\n isDetailExpanded,\n isEditing,\n isExpanded,\n isInitialLoadingRow,\n isSelected,\n loadingState,\n onRowClick,\n pinnedPosition,\n originalRow,\n detailPanel,\n row,\n rowIndex,\n setDraftValues,\n stripedRows,\n uiClassNames,\n visibleCells,\n visibleLeafColumnCount,\n}: DataTableBodyRowProps) {\n const { Checkbox, Input, Skeleton, TableCell, TableRow } = components;\n const virtualRowMeasurement = useDataTableVirtualRowMeasurement();\n const measureElement = pinnedPosition ? undefined : virtualRowMeasurement;\n const firstDataColumnId = visibleCells.find(\n (cell) => !columnLayouts.get(cell.column.id)?.isUtilityColumn,\n )?.column.id;\n\n return (\n \n 0 ? row.depth : undefined\n }\n data-dtp-slot={\n pinnedPosition ? \"data-table-pinned-row\" : \"data-table-row\"\n }\n data-row-pinned={pinnedPosition}\n data-row-grouped={row.getIsGrouped() || undefined}\n draggable={isInitialLoadingRow ? false : isDraggable}\n data-loading={loadingState?.isLoading || undefined}\n data-row-index={isInitialLoadingRow ? undefined : rowIndex}\n data-row-parity={\n stripedRows && !isInitialLoadingRow\n ? rowIndex % 2 === 0\n ? \"odd\"\n : \"even\"\n : undefined\n }\n data-state={\n isInitialLoadingRow ? undefined : isSelected ? \"selected\" : undefined\n }\n role={gridMode ? \"row\" : undefined}\n aria-rowindex={gridMode ? gridRowAriaIndex : undefined}\n tabIndex={\n !gridMode && onRowClick && !isInitialLoadingRow ? 0 : undefined\n }\n className={cn(\n !isInitialLoadingRow &&\n getRowClassName?.(originalRow, {\n row: originalRow,\n rowId: row.id,\n rowIndex,\n isEditing,\n isExpanded,\n isLoading: Boolean(loadingState?.isLoading),\n isSelected,\n pinnedPosition: pinnedPosition ?? false,\n }),\n uiClassNames.row,\n pinnedPosition === \"top\" &&\n cn(\"border-b-2\", uiClassNames.rowPinnedTop),\n pinnedPosition === \"bottom\" &&\n cn(\"border-t-2\", uiClassNames.rowPinnedBottom),\n stripedRows &&\n !isInitialLoadingRow &&\n (rowIndex % 2 === 0\n ? uiClassNames.rowOdd\n : uiClassNames.rowEven),\n isSelected && !isInitialLoadingRow && uiClassNames.rowSelected,\n onRowClick && !isInitialLoadingRow && \"cursor-pointer\",\n isInitialLoadingRow && \"pointer-events-none\",\n )}\n onClick={(event: React.MouseEvent) => {\n if (isInitialLoadingRow) {\n return;\n }\n\n if (isDataTableInteractiveTarget(event.target, event.currentTarget)) {\n return;\n }\n\n if (gridMode && cellSelectionEnabled) return;\n\n void onRowClick?.({ row: originalRow, rowId: row.id });\n }}\n onKeyDown={(event: React.KeyboardEvent) => {\n if (\n isInitialLoadingRow ||\n !onRowClick ||\n (event.key !== \"Enter\" && event.key !== \" \")\n ) {\n return;\n }\n\n if (isDataTableInteractiveTarget(event.target, event.currentTarget)) {\n return;\n }\n\n event.preventDefault();\n void onRowClick({ row: originalRow, rowId: row.id });\n }}\n onDragStart={(event: React.DragEvent) => {\n if (isInitialLoadingRow) {\n return;\n }\n\n dragAndDrop?.onRowDragStart?.({\n row: originalRow,\n rowId: row.id,\n event,\n });\n }}\n onDragEnd={(event: React.DragEvent) => {\n if (isInitialLoadingRow) {\n return;\n }\n\n dragAndDrop?.onRowDragEnd?.({\n row: originalRow,\n rowId: row.id,\n event,\n });\n }}\n >\n {visibleCells.map((cell, columnIndex) => {\n const meta = (\n cell.column.columnDef as DataTableColumnDef\n ).meta;\n const cellContext = cell.getContext();\n const value = cell.getValue();\n const layout = columnLayouts.get(cell.column.id);\n const isSelectionColumn = layout?.isSelectionColumn ?? false;\n const isExpansionColumn = layout?.isExpansionColumn ?? false;\n const isActionsColumn = layout?.isActionsColumn ?? false;\n const isSpacerColumn = layout?.isSpacerColumn ?? false;\n const hideClassName = hideOnClassName(meta?.hideOn);\n const cellClassName =\n isInitialLoadingRow || isDataTableLoadingRow(originalRow)\n ? undefined\n : typeof meta?.cellClassName === \"function\"\n ? meta.cellClassName({\n row: originalRow,\n value,\n })\n : meta?.cellClassName;\n const isCellSelected =\n gridMode && cellSelectionEnabled &&\n !isInitialLoadingRow &&\n isGridCellSelected(gridRowIndex, columnIndex);\n\n return (\n onGridCellFocus({ row: gridRowIndex, column: columnIndex })\n : undefined\n }\n onKeyDown={\n gridMode\n ? (event: React.KeyboardEvent) => {\n if (event.target !== event.currentTarget) {\n if (event.key === \"Escape\") {\n event.preventDefault();\n event.currentTarget.focus();\n }\n return;\n }\n onGridCellKeyDown(event, gridRowIndex, columnIndex);\n }\n : undefined\n }\n onPointerDown={\n gridMode &&\n cellSelectionEnabled &&\n !layout?.isUtilityColumn &&\n !isSpacerColumn\n ? (event: React.PointerEvent) => {\n if (isDataTableInteractiveTarget(event.target, event.currentTarget)) return;\n event.currentTarget.focus();\n onGridCellPointerDown(event, gridRowIndex, columnIndex);\n }\n : undefined\n }\n onPointerEnter={\n gridMode &&\n cellSelectionEnabled &&\n !layout?.isUtilityColumn &&\n !isSpacerColumn\n ? (event: React.PointerEvent) => {\n if (isDataTableInteractiveTarget(event.target, event.currentTarget)) return;\n onGridCellPointerEnter(event, gridRowIndex, columnIndex);\n }\n : undefined\n }\n className={cn(\n \"border-b\",\n getDensityCellClassName(currentDensity),\n uiClassNames.cellBorder,\n isCellSelected && uiClassNames.cellSelected,\n layout?.utilityClassName,\n layout?.isSpacerColumn && \"border-b-0 bg-transparent p-0\",\n layout?.pinnedClassName,\n hideClassName,\n cellAlignClassName(cellContext),\n meta?.responsiveClassName,\n cellClassName,\n )}\n style={layout?.cellStyle}\n >\n 0 && cell.column.id === firstDataColumnId\n ? { paddingInlineStart: `${row.depth}rem` }\n : undefined\n }\n >\n {loadingState?.isLoading ? (\n (meta?.skeleton?.(cellContext) ??\n loadingState.skeleton ?? (\n \n ))\n ) : isEditing &&\n cell.column.id !== \"__select__\" &&\n cell.column.id !== \"__expand__\" &&\n cell.column.id !== \"__actions__\" ? (\n renderEditableCell(\n cellContext,\n draftValues,\n setDraftValues,\n {\n Checkbox,\n Input,\n },\n editingContext\n ? {\n cancel: editingContext.cancel,\n cancelOnEscape: editingContext.cancelOnEscape,\n commit: () => editingContext.commit(originalRow),\n commitOnEnter: editingContext.commitOnEnter,\n errors: editingContext.errors,\n isDirty: editingContext.isDirty,\n isPending: editingContext.isPending,\n onValueChange: editingContext.clearError,\n }\n : undefined,\n )\n ) : row.getIsGrouped() && cell.getIsPlaceholder() ? null : row.getIsGrouped() && cell.getIsGrouped() ? (\n row.toggleExpanded()}\n aria-expanded={row.getIsExpanded()}\n aria-label={groupToggleLabel}\n >\n \n {renderDataTableCellContent(cellContext, uiClassNames, {\n hasCustomCell:\n explicitCustomCellColumnIds.has(cell.column.id),\n useCustomOverflowDefaults:\n explicitCustomCellColumnIds.has(cell.column.id),\n })}\n \n \n ({row.subRows.length})\n \n \n ) : row.getIsGrouped() && cell.getIsAggregated() ? (\n cell.column.columnDef.aggregatedCell\n ? flexRender(cell.column.columnDef.aggregatedCell, cellContext)\n : renderDataTableCellContent(cellContext, uiClassNames, {\n hasCustomCell: false,\n useCustomOverflowDefaults: false,\n })\n ) : (\n renderDataTableCellContent(cellContext, uiClassNames, {\n hasCustomCell:\n explicitCustomCellColumnIds.has(cell.column.id) ||\n isSelectionColumn ||\n isExpansionColumn ||\n isActionsColumn ||\n isSpacerColumn,\n useCustomOverflowDefaults:\n explicitCustomCellColumnIds.has(cell.column.id) ||\n isSelectionColumn ||\n isExpansionColumn ||\n isActionsColumn ||\n isSpacerColumn,\n })\n )}\n \n
    \n );\n })}\n \n {!isInitialLoadingRow && detailPanel && isDetailExpanded ? (\n \n \n {detailPanel.render({\n row: originalRow,\n rowId: row.id,\n tableRow: row,\n })}\n \n \n ) : null}\n \n );\n}\n\nfunction areDataTableBodyRowsEqual(\n previous: DataTableBodyRowProps,\n next: DataTableBodyRowProps,\n) {\n return (\n previous.row.id === next.row.id &&\n previous.row.original === next.row.original &&\n previous.rowIndex === next.rowIndex &&\n previous.isSelected === next.isSelected &&\n previous.isInitialLoadingRow === next.isInitialLoadingRow &&\n previous.isEditing === next.isEditing &&\n (!previous.isEditing || previous.editingContext === next.editingContext) &&\n previous.isExpanded === next.isExpanded &&\n previous.isDraggable === next.isDraggable &&\n sameLoadingState(previous.loadingState, next.loadingState) &&\n sameVisibleCells(previous.visibleCells, next.visibleCells) &&\n previous.components === next.components &&\n sameColumnLayouts(\n previous.columnLayouts,\n next.columnLayouts,\n next.visibleCells,\n ) &&\n previous.currentDensity === next.currentDensity &&\n previous.detailPanel === next.detailPanel &&\n previous.isDetailExpanded === next.isDetailExpanded &&\n previous.pinnedPosition === next.pinnedPosition &&\n previous.onRowClick === next.onRowClick &&\n previous.dragAndDrop === next.dragAndDrop &&\n previous.getRowClassName === next.getRowClassName &&\n previous.groupToggleLabel === next.groupToggleLabel &&\n previous.gridMode === next.gridMode &&\n (!next.gridMode ||\n (previous.gridRowAriaIndex === next.gridRowAriaIndex &&\n previous.gridRowIndex === next.gridRowIndex &&\n previous.activeGridCell.row === next.activeGridCell.row &&\n previous.activeGridCell.column === next.activeGridCell.column &&\n previous.cellSelectionEnabled === next.cellSelectionEnabled &&\n previous.isGridCellSelected === next.isGridCellSelected &&\n previous.onGridCellFocus === next.onGridCellFocus &&\n previous.onGridCellKeyDown === next.onGridCellKeyDown &&\n previous.onGridCellPointerDown === next.onGridCellPointerDown &&\n previous.onGridCellPointerEnter === next.onGridCellPointerEnter)) &&\n previous.stripedRows === next.stripedRows &&\n previous.uiClassNames === next.uiClassNames &&\n previous.explicitCustomCellColumnIds === next.explicitCustomCellColumnIds &&\n (!previous.isEditing || previous.draftValues === next.draftValues)\n );\n}\n\nfunction sameLoadingState(\n previous: DataTableRowLoadingState | undefined,\n next: DataTableRowLoadingState | undefined,\n) {\n return (\n previous?.isLoading === next?.isLoading &&\n previous?.skeleton === next?.skeleton\n );\n}\n\nfunction sameVisibleCells(\n previous: Array>,\n next: Array>,\n) {\n return (\n previous.length === next.length &&\n previous.every((cell, index) => {\n const nextCell = next[index];\n return nextCell?.id === cell.id && nextCell.column.id === cell.column.id;\n })\n );\n}\n\nfunction sameColumnLayouts(\n previous: ReadonlyMap,\n next: ReadonlyMap,\n cells: Array>,\n) {\n return cells.every((cell) => {\n const previousLayout = previous.get(cell.column.id);\n const nextLayout = next.get(cell.column.id);\n\n return (\n previousLayout?.fixedSide === nextLayout?.fixedSide &&\n previousLayout?.isActionsColumn === nextLayout?.isActionsColumn &&\n previousLayout?.isExpansionColumn === nextLayout?.isExpansionColumn &&\n previousLayout?.isSelectionColumn === nextLayout?.isSelectionColumn &&\n previousLayout?.isSpacerColumn === nextLayout?.isSpacerColumn &&\n previousLayout?.isUtilityColumn === nextLayout?.isUtilityColumn &&\n previousLayout?.pinnedClassName === nextLayout?.pinnedClassName &&\n previousLayout?.utilityClassName === nextLayout?.utilityClassName &&\n sameCellStyle(previousLayout?.cellStyle, nextLayout?.cellStyle)\n );\n });\n}\n\nfunction sameCellStyle(\n previous: React.CSSProperties | undefined,\n next: React.CSSProperties | undefined,\n) {\n return (\n previous?.width === next?.width &&\n previous?.minWidth === next?.minWidth &&\n previous?.maxWidth === next?.maxWidth &&\n previous?.left === next?.left &&\n previous?.right === next?.right\n );\n}\n\nexport const DataTableBodyRow = React.memo(\n DataTableBodyRowInner,\n areDataTableBodyRowsEqual,\n) as typeof DataTableBodyRowInner;\n","import * as React from \"react\";\nimport { flexRender } from \"@tanstack/react-table\";\nimport { IconChevronDown, IconSelector } from \"../icons\";\nimport type { Header, SortingState } from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableColumnGroupDef,\n DataTableDensity,\n DataTableProps,\n} from \"../types\";\nimport type { DataTableUiClassNames, DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport type { DataTableColumnLayout } from \"./use-column-layout\";\nimport {\n getDensityHeaderClassName,\n isUtilityColumnId,\n} from \"./data-table-utils\";\nimport { headerAlignClassName, hideOnClassName } from \"../types\";\n\ntype DataTableHeaderCellProps = {\n columnGroupHeaderHeight: DataTableProps[\"columnGroupHeaderHeight\"];\n currentDensity: DataTableDensity;\n currentSorting: SortingState;\n dir: NonNullable[\"dir\"]>;\n draggedColumnIdRef: React.MutableRefObject;\n enableColumnReordering: boolean;\n enableColumnResizing: boolean;\n gridColumnIndex?: number;\n gridMode: boolean;\n header: Header;\n headerGroupHeaders: Array>;\n layout: DataTableColumnLayout;\n primeColumnForResize: (columnId: string, currentSize: number) => void;\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n resizeColumnLabel: string;\n resetColumnSize: (columnId: string) => void;\n // Rendered through flexRender inside the header def; carried as a prop so\n // the memo comparator re-renders the selection header when it changes.\n selectionState?: boolean | \"indeterminate\";\n TableHead: DataTableUiKit[\"TableHead\"];\n uiClassNames: DataTableUiClassNames;\n};\n\nfunction DataTableHeaderCellInner({\n columnGroupHeaderHeight,\n currentDensity,\n currentSorting,\n dir,\n draggedColumnIdRef,\n enableColumnReordering,\n enableColumnResizing,\n gridColumnIndex,\n gridMode,\n header,\n headerGroupHeaders,\n layout,\n primeColumnForResize,\n reorderColumn,\n resizeColumnLabel,\n resetColumnSize,\n TableHead,\n uiClassNames,\n}: DataTableHeaderCellProps) {\n const meta = (header.column.columnDef as DataTableColumnDef)\n .meta;\n const headerContentId = React.useId();\n const isColumnGroup =\n !header.isPlaceholder && header.subHeaders.length > 0;\n const groupDefinition = isColumnGroup\n ? (header.column.columnDef as DataTableColumnGroupDef)\n : undefined;\n const canSort = header.column.getCanSort();\n const sortingState = header.column.getIsSorted();\n const sortingIndex = currentSorting.findIndex(\n (sort) => sort.id === header.column.id,\n );\n const canReorderColumn =\n enableColumnReordering &&\n !header.isPlaceholder &&\n !isColumnGroup &&\n !layout.isUtilityColumn &&\n !layout.isSpacerColumn;\n const hideClassName = hideOnClassName(meta?.hideOn);\n\n return (\n ) => {\n draggedColumnIdRef.current = header.column.id;\n event.dataTransfer.effectAllowed = \"move\";\n }\n : undefined\n }\n onDragOver={\n canReorderColumn\n ? (event: React.DragEvent) => {\n event.preventDefault();\n event.dataTransfer.dropEffect = \"move\";\n }\n : undefined\n }\n onDrop={\n canReorderColumn\n ? (event: React.DragEvent) => {\n event.preventDefault();\n const sourceColumnId = draggedColumnIdRef.current;\n draggedColumnIdRef.current = null;\n if (sourceColumnId) {\n reorderColumn(sourceColumnId, header.column.id);\n }\n }\n : undefined\n }\n onKeyDown={\n canReorderColumn\n ? (event: React.KeyboardEvent) => {\n if (\n !event.altKey ||\n (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\")\n ) {\n return;\n }\n\n event.preventDefault();\n const headers = headerGroupHeaders.filter(\n (item) =>\n !isUtilityColumnId(item.column.id) &&\n item.column.id !== \"__spacer__\",\n );\n const currentIndex = headers.findIndex(\n (item) => item.column.id === header.column.id,\n );\n const target =\n headers[\n (event.key === \"ArrowLeft\") !== (dir === \"rtl\")\n ? currentIndex - 1\n : currentIndex + 1\n ];\n if (target) {\n reorderColumn(header.column.id, target.column.id);\n }\n }\n : undefined\n }\n >\n {header.isPlaceholder ? null : canSort ? (\n \n \n {flexRender(header.column.columnDef.header, header.getContext())}\n \n {sortingState ? (\n <>\n \n {currentSorting.length > 1 && sortingIndex >= 0 ? (\n \n {sortingIndex + 1}\n \n ) : null}\n \n ) : (\n \n )}\n \n ) : (\n layout.isUtilityColumn || layout.isSpacerColumn ? (\n flexRender(header.column.columnDef.header, header.getContext())\n ) : (\n \n {flexRender(header.column.columnDef.header, header.getContext())}\n \n )\n )}\n\n {enableColumnResizing &&\n !header.isPlaceholder &&\n header.column.getCanResize() ? (\n {\n for (const leafHeader of getResizableLeafHeaders(header)) {\n resetColumnSize(leafHeader.column.id);\n }\n }}\n onMouseDown={(event) => {\n for (const leafHeader of getResizableLeafHeaders(header)) {\n primeColumnForResize(\n leafHeader.column.id,\n leafHeader.getSize(),\n );\n }\n header.getResizeHandler()(event);\n }}\n onTouchStart={(event) => {\n for (const leafHeader of getResizableLeafHeaders(header)) {\n primeColumnForResize(\n leafHeader.column.id,\n leafHeader.getSize(),\n );\n }\n header.getResizeHandler()(event);\n }}\n onKeyDown={(event) => {\n if (event.altKey) {\n return;\n }\n if (event.key === \"Home\") {\n event.preventDefault();\n for (const leafHeader of getResizableLeafHeaders(header)) {\n resetColumnSize(leafHeader.column.id);\n }\n return;\n }\n if (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\") {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n const grows =\n (event.key === \"ArrowRight\") !== (dir === \"rtl\");\n resizeHeaderBy(\n header,\n (grows ? 1 : -1) * (event.shiftKey ? 25 : 10),\n );\n }}\n className={cn(\n \"absolute inset-y-0 z-50 h-full w-3 cursor-col-resize touch-none select-none ltr:right-0 ltr:translate-x-1/2 rtl:left-0 rtl:-translate-x-1/2 after:absolute after:top-0 after:left-1/2 after:h-full after:w-px after:-translate-x-1/2\",\n uiClassNames.resizeHandle ??\n \"after:bg-current after:opacity-20 hover:after:opacity-70\",\n header.column.getIsResizing() &&\n (uiClassNames.resizeHandleActive ?? \"after:opacity-100\"),\n )}\n />\n ) : null}\n \n );\n}\n\nfunction areDataTableHeaderCellsEqual(\n previous: DataTableHeaderCellProps,\n next: DataTableHeaderCellProps,\n) {\n return (\n previous.header.id === next.header.id &&\n previous.header.column.id === next.header.column.id &&\n previous.header.column.columnDef === next.header.column.columnDef &&\n previous.header.colSpan === next.header.colSpan &&\n previous.header.isPlaceholder === next.header.isPlaceholder &&\n sameSubHeaders(previous.header, next.header) &&\n previous.currentDensity === next.currentDensity &&\n previous.columnGroupHeaderHeight === next.columnGroupHeaderHeight &&\n previous.dir === next.dir &&\n previous.enableColumnReordering === next.enableColumnReordering &&\n previous.enableColumnResizing === next.enableColumnResizing &&\n previous.gridMode === next.gridMode &&\n previous.gridColumnIndex === next.gridColumnIndex &&\n previous.TableHead === next.TableHead &&\n previous.uiClassNames === next.uiClassNames &&\n previous.draggedColumnIdRef === next.draggedColumnIdRef &&\n previous.primeColumnForResize === next.primeColumnForResize &&\n previous.reorderColumn === next.reorderColumn &&\n previous.resizeColumnLabel === next.resizeColumnLabel &&\n previous.resetColumnSize === next.resetColumnSize &&\n previous.selectionState === next.selectionState &&\n sameSorting(previous.currentSorting, next.currentSorting) &&\n sameHeaderGroupHeaders(\n previous.headerGroupHeaders,\n next.headerGroupHeaders,\n ) &&\n sameHeaderLayout(previous.layout, next.layout)\n );\n}\n\nfunction getResizableLeafHeaders(header: Header) {\n if (!header.subHeaders.length) {\n return [header];\n }\n\n return header\n .getLeafHeaders()\n .filter((leafHeader) => !leafHeader.subHeaders.length);\n}\n\nfunction getHeaderMinimumSize(header: Header) {\n return getResizableLeafHeaders(header).reduce(\n (total, leafHeader) =>\n total + (leafHeader.column.columnDef.minSize ?? 20),\n 0,\n );\n}\n\nfunction getHeaderMaximumSize(header: Header) {\n return getResizableLeafHeaders(header).reduce(\n (total, leafHeader) =>\n total + (leafHeader.column.columnDef.maxSize ?? Number.MAX_SAFE_INTEGER),\n 0,\n );\n}\n\nfunction resizeHeaderBy(\n header: Header,\n delta: number,\n) {\n const leafHeaders = getResizableLeafHeaders(header);\n const deltaPerLeaf = delta / leafHeaders.length;\n header.getContext().table.setColumnSizing((current) => {\n const next = { ...current };\n\n for (const leafHeader of leafHeaders) {\n const column = leafHeader.column;\n const minimum = column.columnDef.minSize ?? 20;\n const maximum =\n column.columnDef.maxSize ?? Number.MAX_SAFE_INTEGER;\n next[column.id] = Math.min(\n maximum,\n Math.max(minimum, column.getSize() + deltaPerLeaf),\n );\n }\n\n return next;\n });\n}\n\nfunction sameSubHeaders(\n previous: Header,\n next: Header,\n) {\n return (\n previous.subHeaders.length === next.subHeaders.length &&\n previous.subHeaders.every(\n (header, index) => next.subHeaders[index]?.id === header.id,\n )\n );\n}\n\nfunction sameSorting(previous: SortingState, next: SortingState) {\n return (\n previous.length === next.length &&\n previous.every((sort, index) => {\n const nextSort = next[index];\n return nextSort?.id === sort.id && nextSort.desc === sort.desc;\n })\n );\n}\n\nfunction sameHeaderGroupHeaders(\n previous: Array>,\n next: Array>,\n) {\n return (\n previous.length === next.length &&\n previous.every((header, index) => next[index]?.id === header.id)\n );\n}\n\nfunction sameHeaderLayout(\n previous: DataTableColumnLayout,\n next: DataTableColumnLayout,\n) {\n return (\n previous.fixedSide === next.fixedSide &&\n previous.isSpacerColumn === next.isSpacerColumn &&\n previous.isUtilityColumn === next.isUtilityColumn &&\n previous.pinnedClassName === next.pinnedClassName &&\n previous.utilityClassName === next.utilityClassName &&\n previous.headerStyle?.width === next.headerStyle?.width &&\n previous.headerStyle?.minWidth === next.headerStyle?.minWidth &&\n previous.headerStyle?.maxWidth === next.headerStyle?.maxWidth &&\n previous.headerStyle?.left === next.headerStyle?.left &&\n previous.headerStyle?.right === next.headerStyle?.right\n );\n}\n\nexport const DataTableHeaderCell = React.memo(\n DataTableHeaderCellInner,\n areDataTableHeaderCellsEqual,\n) as typeof DataTableHeaderCellInner;\n","import * as React from \"react\";\nimport type {\n Column,\n ExpandedState,\n Header,\n RowPinningPosition,\n Row,\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableDensity,\n DataTableCellSelection,\n DataTableProps,\n DataTableRowLoadingState,\n} from \"../types\";\nimport type { DataTableUiClassNames, DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport {\n DataTableBodyRow,\n type DataTableRowEditingContext,\n} from \"./data-table-body-row\";\nimport { DataTableHeaderCell } from \"./data-table-header-cell\";\nimport type { DataTableColumnLayout } from \"./use-column-layout\";\nimport { isDataTableLoadingRow, isUtilityColumnId } from \"./data-table-utils\";\nimport type { DataTableLabels } from \"../types\";\n\nexport type DataTableTablePanelProps = {\n ariaDescribedBy: string | undefined;\n ariaLabelledBy: string | undefined;\n bodyRowComponents: Pick<\n DataTableUiKit,\n \"Checkbox\" | \"Input\" | \"Skeleton\" | \"TableCell\" | \"TableRow\"\n >;\n cellSelection: DataTableCellSelection | null;\n cellSelectionEnabled: boolean;\n columnLayouts: ReadonlyMap;\n columnGroupHeaderHeight: DataTableProps[\"columnGroupHeaderHeight\"];\n currentDensity: DataTableDensity;\n currentDetailExpanded: ExpandedState;\n currentSorting: DataTableProps[\"sorting\"];\n dir: NonNullable[\"dir\"]>;\n DataTableEmptyState: React.ElementType;\n dragAndDrop: DataTableProps[\"dragAndDrop\"];\n draggedColumnIdRef: React.RefObject;\n draftValues: Record;\n editingRowId: string | null;\n editingContext?: DataTableRowEditingContext;\n emptyNode: React.ReactNode;\n enableColumnReordering: boolean;\n enableColumnResizing: boolean;\n explicitCustomCellColumnIds: ReadonlySet;\n fillMinWidth: number;\n flexGrow: boolean;\n gridMode: boolean;\n gridPageSize?: number;\n gridRowOffset: number;\n onGridActiveRowIndexChange?: (rowIndex: number) => void;\n onCellSelectionChange: (selection: DataTableCellSelection | null) => void;\n getColumnLayout: (columnId: string) => DataTableColumnLayout;\n getRowClassName: DataTableProps[\"getRowClassName\"];\n getRowLoadingState: DataTableProps[\"getRowLoadingState\"];\n infiniteScroll: DataTableProps[\"infiniteScroll\"];\n layoutMode: \"fill\" | \"fit\";\n localSearchValue: string;\n onRowClick: DataTableProps[\"onRowClick\"];\n primeColumnForResize: (columnId: string, currentSize: number) => void;\n renderedRows: Array>;\n detailPanel: DataTableProps[\"detailPanel\"];\n topPinnedRows: Array>;\n bottomPinnedRows: Array>;\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n resetColumnSize: (columnId: string) => void;\n resolvedLabels: DataTableLabels;\n rowsToRender: Array<{ row: Row; rowIndex: number }>;\n ScrollArea: DataTableUiKit[\"ScrollArea\"];\n ScrollBar: DataTableUiKit[\"ScrollBar\"];\n sentinelRef: React.RefObject;\n setDraftValues: React.Dispatch>>;\n shouldRenderInitialLoading: boolean;\n stateOverlayNode?: React.ReactNode;\n stickyHeader: boolean;\n stripedRows: boolean;\n summaryRows: NonNullable[\"summaryRows\"]>;\n table: TanStackTable;\n tableClassName: string | undefined;\n tableContainerClassName: string | undefined;\n Table: DataTableUiKit[\"Table\"];\n TableBody: DataTableUiKit[\"TableBody\"];\n TableCell: DataTableUiKit[\"TableCell\"];\n TableFooter: DataTableUiKit[\"TableFooter\"];\n TableHead: DataTableUiKit[\"TableHead\"];\n TableHeader: DataTableUiKit[\"TableHeader\"];\n TableRow: DataTableUiKit[\"TableRow\"];\n tableScrollContainerRef: React.RefObject;\n tableScrollElement?: HTMLElement | null;\n totalRowCount?: number;\n uiClassNames: DataTableUiClassNames;\n viewportHeight?: number;\n virtualization?: DataTableProps[\"virtualization\"];\n virtualPaddingBottom: number;\n virtualPaddingTop: number;\n visibleLeafColumnCount: number;\n visibleLeafColumns: Array>;\n};\n\nexport function DataTableTablePanel({\n ariaDescribedBy,\n ariaLabelledBy,\n bodyRowComponents,\n cellSelection,\n cellSelectionEnabled,\n columnLayouts,\n columnGroupHeaderHeight,\n currentDensity,\n currentDetailExpanded,\n currentSorting = [],\n dir,\n DataTableEmptyState,\n dragAndDrop,\n draggedColumnIdRef,\n draftValues,\n editingRowId,\n editingContext,\n emptyNode,\n enableColumnReordering,\n enableColumnResizing,\n explicitCustomCellColumnIds,\n fillMinWidth,\n flexGrow,\n gridMode,\n gridPageSize,\n gridRowOffset,\n onGridActiveRowIndexChange,\n onCellSelectionChange,\n getColumnLayout,\n getRowClassName,\n getRowLoadingState,\n infiniteScroll,\n layoutMode,\n localSearchValue,\n onRowClick,\n primeColumnForResize,\n renderedRows,\n detailPanel,\n topPinnedRows,\n bottomPinnedRows,\n reorderColumn,\n resetColumnSize,\n resolvedLabels,\n rowsToRender,\n ScrollArea,\n ScrollBar,\n sentinelRef,\n setDraftValues,\n shouldRenderInitialLoading,\n stateOverlayNode,\n stickyHeader,\n stripedRows,\n summaryRows,\n table,\n tableClassName,\n tableContainerClassName,\n Table,\n TableBody,\n TableCell,\n TableFooter = \"tfoot\",\n TableHead,\n TableHeader,\n TableRow,\n tableScrollContainerRef,\n tableScrollElement,\n totalRowCount,\n uiClassNames,\n virtualPaddingBottom,\n virtualPaddingTop,\n visibleLeafColumnCount,\n visibleLeafColumns,\n}: DataTableTablePanelProps) {\n const selectionState: boolean | \"indeterminate\" =\n table.getIsAllPageRowsSelected()\n ? true\n : table.getIsSomePageRowsSelected()\n ? \"indeterminate\"\n : false;\n const filteredRows = table.getFilteredRowModel().rows;\n const summarySourceRows = React.useMemo(\n () =>\n summaryRows.length\n ? filteredRows.map((row) => row.original)\n : [],\n [filteredRows, summaryRows.length],\n );\n const headerRowCount = table.getHeaderGroups().length;\n const displayRowCount =\n topPinnedRows.length + renderedRows.length + bottomPinnedRows.length;\n const [activeCell, setActiveCell] = React.useState({ row: 0, column: 0 });\n const shouldRestoreGridFocusRef = React.useRef(false);\n const pointerSelectingRef = React.useRef(false);\n const gridRows = React.useMemo(\n () => [...topPinnedRows, ...renderedRows, ...bottomPinnedRows],\n [bottomPinnedRows, renderedRows, topPinnedRows],\n );\n const getGridCoordinate = React.useCallback(\n (rowIndex: number, columnIndex: number) => {\n const row = gridRows[rowIndex];\n const column = visibleLeafColumns[columnIndex];\n return row &&\n column &&\n !isUtilityColumnId(column.id) &&\n column.id !== \"__spacer__\"\n ? { rowId: row.id, columnId: column.id }\n : undefined;\n },\n [gridRows, visibleLeafColumns],\n );\n const selectedBounds = React.useMemo(() => {\n if (!cellSelection) return undefined;\n const anchorRow = gridRows.findIndex((row) => row.id === cellSelection.anchor.rowId);\n const focusRow = gridRows.findIndex((row) => row.id === cellSelection.focus.rowId);\n const anchorColumn = visibleLeafColumns.findIndex(\n (column) => column.id === cellSelection.anchor.columnId,\n );\n const focusColumn = visibleLeafColumns.findIndex(\n (column) => column.id === cellSelection.focus.columnId,\n );\n if (anchorRow < 0 || focusRow < 0 || anchorColumn < 0 || focusColumn < 0) return undefined;\n return {\n firstRow: Math.min(anchorRow, focusRow),\n lastRow: Math.max(anchorRow, focusRow),\n firstColumn: Math.min(anchorColumn, focusColumn),\n lastColumn: Math.max(anchorColumn, focusColumn),\n };\n }, [cellSelection, gridRows, visibleLeafColumns]);\n const isGridCellSelected = React.useCallback(\n (rowIndex: number, columnIndex: number) =>\n Boolean(\n selectedBounds &&\n rowIndex >= selectedBounds.firstRow &&\n rowIndex <= selectedBounds.lastRow &&\n columnIndex >= selectedBounds.firstColumn &&\n columnIndex <= selectedBounds.lastColumn,\n ),\n [selectedBounds],\n );\n const handleGridCellFocus = React.useCallback(\n (cell: { row: number; column: number }) => {\n shouldRestoreGridFocusRef.current = true;\n setActiveCell(cell);\n },\n [],\n );\n const selectGridCell = React.useCallback(\n (rowIndex: number, columnIndex: number, extend: boolean) => {\n if (!cellSelectionEnabled) return;\n const focus = getGridCoordinate(rowIndex, columnIndex);\n if (!focus) return;\n const anchor =\n extend && cellSelection?.anchor\n ? cellSelection.anchor\n : focus;\n onCellSelectionChange({ anchor, focus });\n },\n [cellSelection, cellSelectionEnabled, getGridCoordinate, onCellSelectionChange],\n );\n const handleGridCellPointerDown = React.useCallback(\n (event: React.PointerEvent, rowIndex: number, columnIndex: number) => {\n if (!cellSelectionEnabled || event.button !== 0) return;\n pointerSelectingRef.current = true;\n selectGridCell(rowIndex, columnIndex, event.shiftKey);\n },\n [cellSelectionEnabled, selectGridCell],\n );\n const handleGridCellPointerEnter = React.useCallback(\n (event: React.PointerEvent, rowIndex: number, columnIndex: number) => {\n if (!cellSelectionEnabled || !pointerSelectingRef.current || event.buttons !== 1) return;\n selectGridCell(rowIndex, columnIndex, true);\n },\n [cellSelectionEnabled, selectGridCell],\n );\n React.useEffect(() => {\n const stopSelecting = () => { pointerSelectingRef.current = false; };\n window.addEventListener(\"pointerup\", stopSelecting);\n return () => window.removeEventListener(\"pointerup\", stopSelecting);\n }, []);\n\n // Keep focus on the roving cell after sorting, filtering, or a virtual row\n // range changes. A missing target is normal while a virtualizer is rendering.\n React.useEffect(() => {\n if (!gridMode) return;\n onGridActiveRowIndexChange?.(activeCell.row);\n const frame = requestAnimationFrame(() => {\n const cells = tableScrollContainerRef.current?.querySelectorAll(\n '[data-dtp-grid-cell=\"true\"]',\n );\n const target = Array.from(cells ?? []).find(\n (cell) =>\n Number(cell.dataset.gridRowIndex) === activeCell.row &&\n Number(cell.dataset.gridColumnIndex) === activeCell.column,\n );\n if (target && shouldRestoreGridFocusRef.current) {\n target.focus();\n }\n });\n return () => cancelAnimationFrame(frame);\n }, [activeCell, gridMode, onGridActiveRowIndexChange, tableScrollContainerRef]);\n\n const moveGridFocus = React.useCallback(\n (event: React.KeyboardEvent, row: number, column: number) => {\n if (event.defaultPrevented || event.target !== event.currentTarget) return;\n const pageRows = Math.max(\n 1,\n gridPageSize ?? (\n Math.floor(\n (tableScrollElement?.clientHeight || 0) /\n Math.max(1, (tableScrollElement?.querySelector(\"tr\") as HTMLElement | null)?.offsetHeight || 48),\n ) || 10),\n );\n const lastRow = Math.max(0, displayRowCount - 1);\n const lastColumn = Math.max(0, visibleLeafColumnCount - 1);\n let nextRow = row;\n let nextColumn = column;\n switch (event.key) {\n case \"ArrowUp\": nextRow--; break;\n case \"ArrowDown\": nextRow++; break;\n case \"ArrowLeft\": nextColumn--; break;\n case \"ArrowRight\": nextColumn++; break;\n case \"Home\":\n if (event.ctrlKey || event.metaKey) { nextRow = 0; nextColumn = 0; } else nextColumn = 0;\n break;\n case \"End\":\n if (event.ctrlKey || event.metaKey) { nextRow = lastRow; nextColumn = lastColumn; } else nextColumn = lastColumn;\n break;\n case \"PageUp\": nextRow -= pageRows; break;\n case \"PageDown\": nextRow += pageRows; break;\n default: return;\n }\n event.preventDefault();\n const nextCell = {\n row: Math.min(lastRow, Math.max(0, nextRow)),\n column: Math.min(lastColumn, Math.max(0, nextColumn)),\n };\n setActiveCell(nextCell);\n if (event.shiftKey && cellSelectionEnabled) {\n const focus = getGridCoordinate(nextCell.row, nextCell.column);\n const anchor =\n cellSelection?.anchor ?? getGridCoordinate(row, column) ?? focus;\n if (anchor && focus) onCellSelectionChange({ anchor, focus });\n }\n },\n [\n cellSelection,\n cellSelectionEnabled,\n displayRowCount,\n getGridCoordinate,\n gridPageSize,\n onCellSelectionChange,\n tableScrollElement,\n visibleLeafColumnCount,\n ],\n );\n const renderBodyRow = (\n row: Row,\n rowIndex: number,\n pinnedPosition?: Exclude,\n ) => {\n const originalRow = row.original;\n const isInitialLoadingRow = isDataTableLoadingRow(originalRow);\n const loadingState = isInitialLoadingRow\n ? { isLoading: true }\n : getRowLoadingState?.(originalRow, rowIndex);\n const resolvedLoadingState: DataTableRowLoadingState | undefined =\n typeof loadingState === \"boolean\"\n ? { isLoading: loadingState }\n : loadingState;\n const isDraggable = isInitialLoadingRow\n ? false\n : (dragAndDrop?.getRowDraggable?.(originalRow) ?? false);\n\n return (\n \n );\n };\n\n return (\n \n \n \n
    \n \n \n {table.getVisibleLeafColumns().map((column) => {\n const layout = getColumnLayout(column.id);\n return ;\n })}\n \n \n {table.getHeaderGroups().map((headerGroup) => (\n \n {headerGroup.headers.map((header) => (\n column.id === header.column.id,\n ) + 1\n }\n />\n ))}\n \n ))}\n \n \n {topPinnedRows.length || renderedRows.length || bottomPinnedRows.length ? (\n <>\n {topPinnedRows.map((row, index) =>\n renderBodyRow(row, index, \"top\"),\n )}\n {virtualPaddingTop > 0 ? (\n \n \n \n ) : null}\n {rowsToRender.map(({ row, rowIndex }) =>\n renderBodyRow(row, rowIndex + topPinnedRows.length),\n )}\n {virtualPaddingBottom > 0 ? (\n \n \n \n ) : null}\n {bottomPinnedRows.map((row, index) =>\n renderBodyRow(\n row,\n topPinnedRows.length + renderedRows.length + index,\n \"bottom\",\n ),\n )}\n \n ) : (\n \n \n
    \n {emptyNode ?? (\n \n )}\n
    \n \n
    \n )}\n
    \n {summaryRows.length ? (\n \n {summaryRows.map((summaryRow, summaryIndex) => (\n \n {visibleLeafColumns.map((column, index) => {\n const content =\n summaryRow.cells[column.id] ??\n (index === 0 ? summaryRow.label : null);\n return (\n \n {typeof content === \"function\"\n ? content({\n rows: summarySourceRows,\n columnId: column.id,\n })\n : content}\n \n );\n })}\n \n ))}\n \n ) : null}\n \n
    \n\n {infiniteScroll?.enabled &&\n renderedRows.length &&\n !shouldRenderInitialLoading ? (\n
    \n
    \n
    \n ) : null}\n \n \n
    \n {stateOverlayNode}\n \n );\n}\n\nfunction getHeaderLayout(\n header: Header,\n getColumnLayout: (columnId: string) => DataTableColumnLayout,\n) {\n const columnLayout = getColumnLayout(header.column.id);\n if (header.isPlaceholder || !header.subHeaders.length) {\n return columnLayout;\n }\n\n const leafLayouts = header\n .getLeafHeaders()\n .filter((leafHeader) => !leafHeader.subHeaders.length)\n .map((leafHeader) => getColumnLayout(leafHeader.column.id));\n const fixedSide = leafLayouts[0]?.fixedSide;\n\n if (\n !fixedSide ||\n !leafLayouts.every((layout) => layout.fixedSide === fixedSide)\n ) {\n return columnLayout;\n }\n\n const edgeLayout =\n fixedSide === \"left\" ? leafLayouts[0] : leafLayouts.at(-1);\n\n return {\n ...columnLayout,\n fixedSide,\n headerStyle: edgeLayout?.headerStyle\n ? {\n left: edgeLayout.headerStyle.left,\n right: edgeLayout.headerStyle.right,\n }\n : undefined,\n pinnedClassName: edgeLayout?.pinnedClassName,\n };\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-DV3HO2TR.js b/dist/chunk-S4J2MG4T.js similarity index 69% rename from dist/chunk-DV3HO2TR.js rename to dist/chunk-S4J2MG4T.js index 368430d..5c46825 100644 --- a/dist/chunk-DV3HO2TR.js +++ b/dist/chunk-S4J2MG4T.js @@ -1,2 +1,2 @@ -import {X as X$1,a as a$1,c,d,f,h,i,j as j$1,k,l,m,n,p,o,q as q$1,s,t,u,z,w,B,G,H,I,J as J$1,L,b,N,O as O$1,P,Q as Q$1,R,T,S,U,V as V$1,W as W$1}from'./chunk-LDAX7PX5.js';import {a}from'./chunk-GSCYQ624.js';import'react';import {jsx}from'react/jsx-runtime';function e(N,z){return function({className:F,...K}){return jsx(N,{className:a(z,F),...K})}}var $=e(a$1,"rounded-md border border-cyan-400/45 bg-black/75 font-mono text-[0.8rem] tracking-[0.045em] text-cyan-50 uppercase shadow-[0_0_0_1px_rgba(34,211,238,0.12),0_0_18px_rgba(34,211,238,0.1)] data-[variant=default]:bg-cyan-300 data-[variant=default]:text-slate-950 data-[variant=outline]:bg-black/55 data-[variant=ghost]:border-transparent data-[variant=ghost]:bg-transparent data-[variant=ghost]:hover:bg-cyan-400/10 data-[variant=secondary]:bg-cyan-400/12 data-[variant=destructive]:border-rose-400/50 data-[variant=destructive]:bg-rose-500/15 data-[variant=destructive]:text-rose-200"),O=e(c,"rounded-md border border-cyan-400/35 bg-[linear-gradient(180deg,rgba(0,229,255,0.055),transparent_58%),rgba(1,8,11,0.9)] font-mono text-cyan-50 shadow-[inset_0_1px_0_rgba(125,211,252,0.08),0_0_0_1px_rgba(34,211,238,0.12),0_0_28px_rgba(34,211,238,0.08)] ring-0"),V=e(d,"px-5 pt-5 pb-3"),W=e(f,"px-5 pb-5"),q=e(h,"rounded-sm border-cyan-400/55 bg-black/65 ring-cyan-300/70 data-checked:bg-cyan-300 data-checked:text-slate-950 data-checked:ring-cyan-300"),J=e(i,"rounded-md border border-cyan-400/35 bg-black/92 font-mono text-cyan-50 shadow-[0_0_26px_rgba(34,211,238,0.16)] ring-0 before:hidden **:data-[slot$=-item]:focus:bg-cyan-400/12 **:data-[slot$=-item]:data-highlighted:bg-cyan-400/12 **:data-[slot$=-separator]:bg-cyan-400/18 **:data-[slot$=-trigger]:focus:bg-cyan-400/12"),Q=e(j$1,"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50 data-[variant=destructive]:text-rose-200 data-[variant=destructive]:focus:bg-rose-500/15"),X=e(k,"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50"),Y=e(l,"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50"),Z=e(m,"font-mono text-[0.68rem] tracking-[0.16em] text-cyan-200/70 uppercase"),j=e(n,"bg-cyan-400/20"),ee=e(p,"rounded-md border border-cyan-400/35 bg-black/92 font-mono text-cyan-50 shadow-[0_0_26px_rgba(34,211,238,0.16)] ring-0 before:hidden"),te=e(o,"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50 data-open:bg-cyan-400/12 data-open:text-cyan-50"),ae=e(q$1,"rounded-md border-cyan-400/35 bg-black/80 font-mono text-cyan-50"),re=e(s,"[&[data-variant=icon]]:rounded-xl [&[data-variant=icon]]:bg-cyan-400/12 [&[data-variant=icon]]:text-cyan-200"),ne=e(t,"text-cyan-50"),oe=e(u,"text-cyan-100/70"),de=e(z,"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 placeholder:text-cyan-100/45 focus-visible:ring-cyan-300/70"),ie=e(w,"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 shadow-[0_0_18px_rgba(34,211,238,0.06)]"),ce=e(B,"rounded-md border-cyan-400/35 bg-black/55 font-mono text-cyan-50 hover:bg-cyan-400/12 data-[active=true]:bg-cyan-300 data-[active=true]:text-slate-950"),be=e(G,"rounded-md border border-cyan-400/35 bg-black/72 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_26px_rgba(34,211,238,0.08)]"),se=e(H,"[&>[data-slot=scroll-area-thumb]]:bg-cyan-300/65"),le=e(I,"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 focus-visible:ring-cyan-300/70"),pe=e(J$1,"rounded-md border border-cyan-400/35 bg-black/95 font-mono text-cyan-50 ring-0 shadow-[0_0_26px_rgba(34,211,238,0.16)] before:hidden"),me=e(L,"rounded-sm focus:bg-cyan-400/12 focus:text-cyan-50"),ge=e(b,"bg-cyan-400/20"),ye=e(N,"rounded-md bg-cyan-400/12"),ue=e(O$1,"border-separate border-spacing-0 border border-cyan-400/45 bg-black/72 font-mono text-[0.84rem] text-cyan-50 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_24px_rgba(34,211,238,0.08)]"),xe=e(P,"[&_tr]:border-cyan-400/45"),ve=e(Q$1,"[&_tr:last-child]:border-b"),_e=e(R,"border-cyan-400/40 bg-cyan-400/10 font-mono"),Te=e(T,"h-12 border-b border-cyan-400/45 bg-cyan-950/20 px-3 font-mono text-[0.68rem] font-bold tracking-[0.18em] text-cyan-300 uppercase"),Ce=e(S,"border-cyan-400/25 hover:bg-cyan-400/10 data-[state=selected]:bg-cyan-400/15"),fe=e(U,"border-b border-cyan-400/16 px-3 py-3 font-mono text-cyan-50"),ke=e(V$1,"font-mono text-cyan-100/65"),we=e(W$1,"rounded-md bg-black text-cyan-50 ring-1 ring-cyan-400/35 shadow-[0_0_22px_rgba(34,211,238,0.18)] [&>svg]:bg-black [&>svg]:fill-black"),Me={...X$1,rootClassName:"dtp-thegridcn",classNames:{card:"hover:bg-cyan-400/10 data-[state=selected]:bg-cyan-400/15",cardGrid:"bg-transparent",cardItem:"min-w-0",cardOverlay:"from-black/95 via-black/75 to-transparent",cardScrollArea:"bg-transparent",cardSelected:"bg-cyan-400/15 ring-cyan-300/70",cardUnselected:"border-cyan-400/35",cardViewport:"bg-transparent",cellBorder:"border-cyan-400/16",columnGroupHeader:"bg-cyan-400/10 text-cyan-200",dragActive:"rounded-md border-dashed border-cyan-300",emptyState:"border-cyan-400/35 bg-black/80",footer:"border-cyan-400/40 bg-black/80 text-cyan-50",headerSortIcon:"text-cyan-100/65",mutedText:"text-cyan-100/70",paginationSelectTrigger:"border-cyan-400/45 bg-black/70 text-cyan-50",paginationTotal:"text-cyan-100/70",pinnedColumn:"border-cyan-400/25",pinnedUtilityColumn:"bg-black/80",resizeHandle:"after:bg-cyan-400/20 hover:after:bg-cyan-300",resizeHandleActive:"after:bg-cyan-300",row:"hover:bg-cyan-400/10 data-[state=selected]:!bg-cyan-400/15",rowSelected:"!bg-cyan-400/15",tableContainer:"border-cyan-400/35 bg-black/72 text-cyan-50 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_26px_rgba(34,211,238,0.08)]",tableScrollArea:"bg-black/72",tableStickyHeader:"sticky top-0 z-30 bg-black/90 backdrop-blur [&_th]:border-cyan-400/45 [&_th]:bg-black/90",toolbarCompactIconButton:"size-7",toolbarIconButton:"text-cyan-100/70 hover:text-cyan-50",toolbarInputButton:"border-cyan-400/45 bg-black/70 text-cyan-50"},Button:$,Card:O,CardContent:W,CardHeader:V,Checkbox:q,DropdownMenuCheckboxItem:X,DropdownMenuContent:J,DropdownMenuItem:Q,DropdownMenuLabel:Z,DropdownMenuRadioItem:Y,DropdownMenuSeparator:j,DropdownMenuSubContent:ee,DropdownMenuSubTrigger:te,Empty:ae,EmptyDescription:oe,EmptyMedia:re,EmptyTitle:ne,Input:de,InputGroup:ie,PaginationLink:ce,ScrollArea:be,ScrollBar:se,SelectContent:pe,SelectItem:me,SelectTrigger:le,Separator:ge,Skeleton:ye,Table:ue,TableBody:ve,TableCaption:ke,TableCell:fe,TableFooter:_e,TableHead:Te,TableHeader:xe,TableRow:Ce,TooltipContent:we};export{Me as a};//# sourceMappingURL=chunk-DV3HO2TR.js.map -//# sourceMappingURL=chunk-DV3HO2TR.js.map \ No newline at end of file +import {X as X$1,a as a$1,c,d,f,h,i,j as j$1,k,l,m,n,p,o,q as q$1,s,t,u,z,w,B,G,H,I,J as J$1,L,b,N,O as O$1,P,Q as Q$1,R,T,S,U,V as V$1,W as W$1}from'./chunk-7FUCHMMB.js';import {a}from'./chunk-XTVBESM5.js';import'react';import {jsx}from'react/jsx-runtime';function e(N,z){return function({className:F,...K}){return jsx(N,{className:a(z,F),...K})}}var $=e(a$1,"rounded-md border border-cyan-400/45 bg-black/75 font-mono text-[0.8rem] tracking-[0.045em] text-cyan-50 uppercase shadow-[0_0_0_1px_rgba(34,211,238,0.12),0_0_18px_rgba(34,211,238,0.1)] data-[variant=default]:bg-cyan-300 data-[variant=default]:text-slate-950 data-[variant=outline]:bg-black/55 data-[variant=ghost]:border-transparent data-[variant=ghost]:bg-transparent data-[variant=ghost]:hover:bg-cyan-400/10 data-[variant=secondary]:bg-cyan-400/12 data-[variant=destructive]:border-rose-400/50 data-[variant=destructive]:bg-rose-500/15 data-[variant=destructive]:text-rose-200"),O=e(c,"rounded-md border border-cyan-400/35 bg-[linear-gradient(180deg,rgba(0,229,255,0.055),transparent_58%),rgba(1,8,11,0.9)] font-mono text-cyan-50 shadow-[inset_0_1px_0_rgba(125,211,252,0.08),0_0_0_1px_rgba(34,211,238,0.12),0_0_28px_rgba(34,211,238,0.08)] ring-0"),V=e(d,"px-5 pt-5 pb-3"),W=e(f,"px-5 pb-5"),q=e(h,"rounded-sm border-cyan-400/55 bg-black/65 ring-cyan-300/70 data-checked:bg-cyan-300 data-checked:text-slate-950 data-checked:ring-cyan-300"),J=e(i,"rounded-md border border-cyan-400/35 bg-black/92 font-mono text-cyan-50 shadow-[0_0_26px_rgba(34,211,238,0.16)] ring-0 before:hidden **:data-[slot$=-item]:focus:bg-cyan-400/12 **:data-[slot$=-item]:data-highlighted:bg-cyan-400/12 **:data-[slot$=-separator]:bg-cyan-400/18 **:data-[slot$=-trigger]:focus:bg-cyan-400/12"),Q=e(j$1,"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50 data-[variant=destructive]:text-rose-200 data-[variant=destructive]:focus:bg-rose-500/15"),X=e(k,"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50"),Y=e(l,"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50"),Z=e(m,"font-mono text-[0.68rem] tracking-[0.16em] text-cyan-200/70 uppercase"),j=e(n,"bg-cyan-400/20"),ee=e(p,"rounded-md border border-cyan-400/35 bg-black/92 font-mono text-cyan-50 shadow-[0_0_26px_rgba(34,211,238,0.16)] ring-0 before:hidden"),te=e(o,"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50 data-open:bg-cyan-400/12 data-open:text-cyan-50"),ae=e(q$1,"rounded-md border-cyan-400/35 bg-black/80 font-mono text-cyan-50"),re=e(s,"[&[data-variant=icon]]:rounded-xl [&[data-variant=icon]]:bg-cyan-400/12 [&[data-variant=icon]]:text-cyan-200"),ne=e(t,"text-cyan-50"),oe=e(u,"text-cyan-100/70"),de=e(z,"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 placeholder:text-cyan-100/45 focus-visible:ring-cyan-300/70"),ie=e(w,"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 shadow-[0_0_18px_rgba(34,211,238,0.06)]"),ce=e(B,"rounded-md border-cyan-400/35 bg-black/55 font-mono text-cyan-50 hover:bg-cyan-400/12 data-[active=true]:bg-cyan-300 data-[active=true]:text-slate-950"),be=e(G,"rounded-md border border-cyan-400/35 bg-black/72 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_26px_rgba(34,211,238,0.08)]"),se=e(H,"[&>[data-slot=scroll-area-thumb]]:bg-cyan-300/65"),le=e(I,"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 focus-visible:ring-cyan-300/70"),pe=e(J$1,"rounded-md border border-cyan-400/35 bg-black/95 font-mono text-cyan-50 ring-0 shadow-[0_0_26px_rgba(34,211,238,0.16)] before:hidden"),ge=e(L,"rounded-sm focus:bg-cyan-400/12 focus:text-cyan-50"),me=e(b,"bg-cyan-400/20"),ye=e(N,"rounded-md bg-cyan-400/12"),ue=e(O$1,"border-separate border-spacing-0 border border-cyan-400/45 bg-black/72 font-mono text-[0.84rem] text-cyan-50 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_24px_rgba(34,211,238,0.08)]"),xe=e(P,"[&_tr]:border-cyan-400/45"),ve=e(Q$1,"[&_tr:last-child]:border-b"),_e=e(R,"border-cyan-400/40 bg-cyan-400/10 font-mono"),Te=e(T,"h-12 border-b border-cyan-400/45 bg-cyan-950/20 px-3 font-mono text-[0.68rem] font-bold tracking-[0.18em] text-cyan-300 uppercase"),Ce=e(S,"border-cyan-400/25 hover:bg-cyan-400/10 data-[state=selected]:bg-cyan-400/15"),fe=e(U,"border-b border-cyan-400/16 px-3 py-3 font-mono text-cyan-50"),ke=e(V$1,"font-mono text-cyan-100/65"),we=e(W$1,"rounded-md bg-black text-cyan-50 ring-1 ring-cyan-400/35 shadow-[0_0_22px_rgba(34,211,238,0.18)] [&>svg]:bg-black [&>svg]:fill-black"),Me={...X$1,rootClassName:"dtp-thegridcn",classNames:{card:"hover:bg-cyan-400/10 data-[state=selected]:bg-cyan-400/15",cardGrid:"bg-transparent",cardItem:"min-w-0",cardOverlay:"from-black/95 via-black/75 to-transparent",cardScrollArea:"bg-transparent",cardSelected:"bg-cyan-400/15 ring-cyan-300/70",cardUnselected:"border-cyan-400/35",cardViewport:"bg-transparent",cellBorder:"border-cyan-400/16",cellSelected:"!bg-cyan-400/15 ring-1 ring-inset ring-cyan-300/60",columnGroupHeader:"bg-cyan-400/10 text-cyan-200",dragActive:"rounded-md border-dashed border-cyan-300",emptyState:"border-cyan-400/35 bg-black/80",footer:"border-cyan-400/40 bg-black/80 text-cyan-50",headerSortIcon:"text-cyan-100/65",mutedText:"text-cyan-100/70",paginationSelectTrigger:"border-cyan-400/45 bg-black/70 text-cyan-50",paginationTotal:"text-cyan-100/70",pinnedColumn:"border-cyan-400/25",pinnedUtilityColumn:"bg-black/80",resizeHandle:"after:bg-cyan-400/20 hover:after:bg-cyan-300",resizeHandleActive:"after:bg-cyan-300",row:"hover:bg-cyan-400/10 data-[state=selected]:!bg-cyan-400/15",rowSelected:"!bg-cyan-400/15",tableContainer:"border-cyan-400/35 bg-black/72 text-cyan-50 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_26px_rgba(34,211,238,0.08)]",tableScrollArea:"bg-black/72",tableStickyHeader:"sticky top-0 z-30 bg-black/90 backdrop-blur [&_th]:border-cyan-400/45 [&_th]:bg-black/90",toolbarCompactIconButton:"size-7",toolbarIconButton:"text-cyan-100/70 hover:text-cyan-50",toolbarInputButton:"border-cyan-400/45 bg-black/70 text-cyan-50"},Button:$,Card:O,CardContent:W,CardHeader:V,Checkbox:q,DropdownMenuCheckboxItem:X,DropdownMenuContent:J,DropdownMenuItem:Q,DropdownMenuLabel:Z,DropdownMenuRadioItem:Y,DropdownMenuSeparator:j,DropdownMenuSubContent:ee,DropdownMenuSubTrigger:te,Empty:ae,EmptyDescription:oe,EmptyMedia:re,EmptyTitle:ne,Input:de,InputGroup:ie,PaginationLink:ce,ScrollArea:be,ScrollBar:se,SelectContent:pe,SelectItem:ge,SelectTrigger:le,Separator:me,Skeleton:ye,Table:ue,TableBody:ve,TableCaption:ke,TableCell:fe,TableFooter:_e,TableHead:Te,TableHeader:xe,TableRow:Ce,TooltipContent:we};export{Me as a};//# sourceMappingURL=chunk-S4J2MG4T.js.map +//# sourceMappingURL=chunk-S4J2MG4T.js.map \ No newline at end of file diff --git a/dist/chunk-S4J2MG4T.js.map b/dist/chunk-S4J2MG4T.js.map new file mode 100644 index 0000000..0700658 --- /dev/null +++ b/dist/chunk-S4J2MG4T.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/adapters/thegridcn/index.tsx"],"names":["withClassName","Component","defaultClassName","className","props","jsx","cn","GridButton","Button","GridCard","Card","GridCardHeader","CardHeader","GridCardContent","CardContent","GridCheckbox","Checkbox","GridDropdownMenuContent","DropdownMenuContent","GridDropdownMenuItem","DropdownMenuItem","GridDropdownMenuCheckboxItem","DropdownMenuCheckboxItem","GridDropdownMenuRadioItem","DropdownMenuRadioItem","GridDropdownMenuLabel","DropdownMenuLabel","GridDropdownMenuSeparator","DropdownMenuSeparator","GridDropdownMenuSubContent","DropdownMenuSubContent","GridDropdownMenuSubTrigger","DropdownMenuSubTrigger","GridEmpty","Empty","GridEmptyMedia","EmptyMedia","GridEmptyTitle","EmptyTitle","GridEmptyDescription","EmptyDescription","GridInput","Input","GridInputGroup","InputGroup","GridPaginationLink","PaginationLink","GridScrollArea","ScrollArea","GridScrollBar","ScrollBar","GridSelectTrigger","SelectTrigger","GridSelectContent","SelectContent","GridSelectItem","SelectItem","GridSeparator","Separator","GridSkeleton","Skeleton","GridTable","Table","GridTableHeader","TableHeader","GridTableBody","TableBody","GridTableFooter","TableFooter","GridTableHead","TableHead","GridTableRow","TableRow","GridTableCell","TableCell","GridTableCaption","TableCaption","GridTooltipContent","TooltipContent","theGridcnUiKit","primitiveUiKit"],"mappings":"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","file":"chunk-S4J2MG4T.js","sourcesContent":["import * as React from \"react\";\nimport type { DataTableUiKit } from \"../../core/ui-kit\";\nimport {\n Button as PrimitiveButton,\n Card as PrimitiveCard,\n CardContent as PrimitiveCardContent,\n CardHeader as PrimitiveCardHeader,\n Checkbox as PrimitiveCheckbox,\n DropdownMenuCheckboxItem as PrimitiveDropdownMenuCheckboxItem,\n DropdownMenuContent as PrimitiveDropdownMenuContent,\n DropdownMenuItem as PrimitiveDropdownMenuItem,\n DropdownMenuLabel as PrimitiveDropdownMenuLabel,\n DropdownMenuRadioItem as PrimitiveDropdownMenuRadioItem,\n DropdownMenuSeparator as PrimitiveDropdownMenuSeparator,\n DropdownMenuSubContent as PrimitiveDropdownMenuSubContent,\n DropdownMenuSubTrigger as PrimitiveDropdownMenuSubTrigger,\n Empty as PrimitiveEmpty,\n EmptyDescription as PrimitiveEmptyDescription,\n EmptyMedia as PrimitiveEmptyMedia,\n EmptyTitle as PrimitiveEmptyTitle,\n Input as PrimitiveInput,\n InputGroup as PrimitiveInputGroup,\n PaginationLink as PrimitivePaginationLink,\n ScrollArea as PrimitiveScrollArea,\n ScrollBar as PrimitiveScrollBar,\n SelectContent as PrimitiveSelectContent,\n SelectItem as PrimitiveSelectItem,\n SelectTrigger as PrimitiveSelectTrigger,\n Separator as PrimitiveSeparator,\n Skeleton as PrimitiveSkeleton,\n Table as PrimitiveTable,\n TableBody as PrimitiveTableBody,\n TableCaption as PrimitiveTableCaption,\n TableCell as PrimitiveTableCell,\n TableFooter as PrimitiveTableFooter,\n TableHead as PrimitiveTableHead,\n TableHeader as PrimitiveTableHeader,\n TableRow as PrimitiveTableRow,\n TooltipContent as PrimitiveTooltipContent,\n primitiveUiKit,\n} from \"../../core/primitive-ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nfunction withClassName(\n Component: React.ComponentType,\n defaultClassName: string,\n) {\n return function Wrapped({ className, ...props }: TProps) {\n return (\n \n );\n };\n}\n\nconst GridButton = withClassName(\n PrimitiveButton,\n \"rounded-md border border-cyan-400/45 bg-black/75 font-mono text-[0.8rem] tracking-[0.045em] text-cyan-50 uppercase shadow-[0_0_0_1px_rgba(34,211,238,0.12),0_0_18px_rgba(34,211,238,0.1)] data-[variant=default]:bg-cyan-300 data-[variant=default]:text-slate-950 data-[variant=outline]:bg-black/55 data-[variant=ghost]:border-transparent data-[variant=ghost]:bg-transparent data-[variant=ghost]:hover:bg-cyan-400/10 data-[variant=secondary]:bg-cyan-400/12 data-[variant=destructive]:border-rose-400/50 data-[variant=destructive]:bg-rose-500/15 data-[variant=destructive]:text-rose-200\",\n);\nconst GridCard = withClassName(\n PrimitiveCard,\n \"rounded-md border border-cyan-400/35 bg-[linear-gradient(180deg,rgba(0,229,255,0.055),transparent_58%),rgba(1,8,11,0.9)] font-mono text-cyan-50 shadow-[inset_0_1px_0_rgba(125,211,252,0.08),0_0_0_1px_rgba(34,211,238,0.12),0_0_28px_rgba(34,211,238,0.08)] ring-0\",\n);\nconst GridCardHeader = withClassName(PrimitiveCardHeader, \"px-5 pt-5 pb-3\");\nconst GridCardContent = withClassName(PrimitiveCardContent, \"px-5 pb-5\");\nconst GridCheckbox = withClassName(\n PrimitiveCheckbox,\n \"rounded-sm border-cyan-400/55 bg-black/65 ring-cyan-300/70 data-checked:bg-cyan-300 data-checked:text-slate-950 data-checked:ring-cyan-300\",\n);\nconst GridDropdownMenuContent = withClassName(\n PrimitiveDropdownMenuContent,\n \"rounded-md border border-cyan-400/35 bg-black/92 font-mono text-cyan-50 shadow-[0_0_26px_rgba(34,211,238,0.16)] ring-0 before:hidden **:data-[slot$=-item]:focus:bg-cyan-400/12 **:data-[slot$=-item]:data-highlighted:bg-cyan-400/12 **:data-[slot$=-separator]:bg-cyan-400/18 **:data-[slot$=-trigger]:focus:bg-cyan-400/12\",\n);\nconst GridDropdownMenuItem = withClassName(\n PrimitiveDropdownMenuItem,\n \"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50 data-[variant=destructive]:text-rose-200 data-[variant=destructive]:focus:bg-rose-500/15\",\n);\nconst GridDropdownMenuCheckboxItem = withClassName(\n PrimitiveDropdownMenuCheckboxItem,\n \"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50\",\n);\nconst GridDropdownMenuRadioItem = withClassName(\n PrimitiveDropdownMenuRadioItem,\n \"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50\",\n);\nconst GridDropdownMenuLabel = withClassName(\n PrimitiveDropdownMenuLabel,\n \"font-mono text-[0.68rem] tracking-[0.16em] text-cyan-200/70 uppercase\",\n);\nconst GridDropdownMenuSeparator = withClassName(\n PrimitiveDropdownMenuSeparator,\n \"bg-cyan-400/20\",\n);\nconst GridDropdownMenuSubContent = withClassName(\n PrimitiveDropdownMenuSubContent,\n \"rounded-md border border-cyan-400/35 bg-black/92 font-mono text-cyan-50 shadow-[0_0_26px_rgba(34,211,238,0.16)] ring-0 before:hidden\",\n);\nconst GridDropdownMenuSubTrigger = withClassName(\n PrimitiveDropdownMenuSubTrigger,\n \"rounded-sm font-mono text-cyan-50 focus:bg-cyan-400/12 focus:text-cyan-50 data-open:bg-cyan-400/12 data-open:text-cyan-50\",\n);\nconst GridEmpty = withClassName(\n PrimitiveEmpty,\n \"rounded-md border-cyan-400/35 bg-black/80 font-mono text-cyan-50\",\n);\nconst GridEmptyMedia = withClassName(\n PrimitiveEmptyMedia,\n \"[&[data-variant=icon]]:rounded-xl [&[data-variant=icon]]:bg-cyan-400/12 [&[data-variant=icon]]:text-cyan-200\",\n);\nconst GridEmptyTitle = withClassName(PrimitiveEmptyTitle, \"text-cyan-50\");\nconst GridEmptyDescription = withClassName(\n PrimitiveEmptyDescription,\n \"text-cyan-100/70\",\n);\nconst GridInput = withClassName(\n PrimitiveInput,\n \"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 placeholder:text-cyan-100/45 focus-visible:ring-cyan-300/70\",\n);\nconst GridInputGroup = withClassName(\n PrimitiveInputGroup,\n \"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 shadow-[0_0_18px_rgba(34,211,238,0.06)]\",\n);\nconst GridPaginationLink = withClassName(\n PrimitivePaginationLink,\n \"rounded-md border-cyan-400/35 bg-black/55 font-mono text-cyan-50 hover:bg-cyan-400/12 data-[active=true]:bg-cyan-300 data-[active=true]:text-slate-950\",\n);\nconst GridScrollArea = withClassName(\n PrimitiveScrollArea,\n \"rounded-md border border-cyan-400/35 bg-black/72 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_26px_rgba(34,211,238,0.08)]\",\n);\nconst GridScrollBar = withClassName(\n PrimitiveScrollBar,\n \"[&>[data-slot=scroll-area-thumb]]:bg-cyan-300/65\",\n);\nconst GridSelectTrigger = withClassName(\n PrimitiveSelectTrigger,\n \"rounded-md border-cyan-400/45 bg-black/70 font-mono text-cyan-50 focus-visible:ring-cyan-300/70\",\n);\nconst GridSelectContent = withClassName(\n PrimitiveSelectContent,\n \"rounded-md border border-cyan-400/35 bg-black/95 font-mono text-cyan-50 ring-0 shadow-[0_0_26px_rgba(34,211,238,0.16)] before:hidden\",\n);\nconst GridSelectItem = withClassName(\n PrimitiveSelectItem,\n \"rounded-sm focus:bg-cyan-400/12 focus:text-cyan-50\",\n);\nconst GridSeparator = withClassName(PrimitiveSeparator, \"bg-cyan-400/20\");\nconst GridSkeleton = withClassName(\n PrimitiveSkeleton,\n \"rounded-md bg-cyan-400/12\",\n);\nconst GridTable = withClassName(\n PrimitiveTable,\n \"border-separate border-spacing-0 border border-cyan-400/45 bg-black/72 font-mono text-[0.84rem] text-cyan-50 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_24px_rgba(34,211,238,0.08)]\",\n);\nconst GridTableHeader = withClassName(\n PrimitiveTableHeader,\n \"[&_tr]:border-cyan-400/45\",\n);\nconst GridTableBody = withClassName(\n PrimitiveTableBody,\n \"[&_tr:last-child]:border-b\",\n);\nconst GridTableFooter = withClassName(\n PrimitiveTableFooter,\n \"border-cyan-400/40 bg-cyan-400/10 font-mono\",\n);\nconst GridTableHead = withClassName(\n PrimitiveTableHead,\n \"h-12 border-b border-cyan-400/45 bg-cyan-950/20 px-3 font-mono text-[0.68rem] font-bold tracking-[0.18em] text-cyan-300 uppercase\",\n);\nconst GridTableRow = withClassName(\n PrimitiveTableRow,\n \"border-cyan-400/25 hover:bg-cyan-400/10 data-[state=selected]:bg-cyan-400/15\",\n);\nconst GridTableCell = withClassName(\n PrimitiveTableCell,\n \"border-b border-cyan-400/16 px-3 py-3 font-mono text-cyan-50\",\n);\nconst GridTableCaption = withClassName(\n PrimitiveTableCaption,\n \"font-mono text-cyan-100/65\",\n);\nconst GridTooltipContent = withClassName(\n PrimitiveTooltipContent,\n \"rounded-md bg-black text-cyan-50 ring-1 ring-cyan-400/35 shadow-[0_0_22px_rgba(34,211,238,0.18)] [&>svg]:bg-black [&>svg]:fill-black\",\n);\n\nexport const theGridcnUiKit: DataTableUiKit = {\n ...primitiveUiKit,\n rootClassName: \"dtp-thegridcn\",\n classNames: {\n card: \"hover:bg-cyan-400/10 data-[state=selected]:bg-cyan-400/15\",\n cardGrid: \"bg-transparent\",\n cardItem: \"min-w-0\",\n cardOverlay: \"from-black/95 via-black/75 to-transparent\",\n cardScrollArea: \"bg-transparent\",\n cardSelected: \"bg-cyan-400/15 ring-cyan-300/70\",\n cardUnselected: \"border-cyan-400/35\",\n cardViewport: \"bg-transparent\",\n cellBorder: \"border-cyan-400/16\",\n cellSelected: \"!bg-cyan-400/15 ring-1 ring-inset ring-cyan-300/60\",\n columnGroupHeader: \"bg-cyan-400/10 text-cyan-200\",\n dragActive: \"rounded-md border-dashed border-cyan-300\",\n emptyState: \"border-cyan-400/35 bg-black/80\",\n footer: \"border-cyan-400/40 bg-black/80 text-cyan-50\",\n headerSortIcon: \"text-cyan-100/65\",\n mutedText: \"text-cyan-100/70\",\n paginationSelectTrigger: \"border-cyan-400/45 bg-black/70 text-cyan-50\",\n paginationTotal: \"text-cyan-100/70\",\n pinnedColumn: \"border-cyan-400/25\",\n pinnedUtilityColumn: \"bg-black/80\",\n resizeHandle: \"after:bg-cyan-400/20 hover:after:bg-cyan-300\",\n resizeHandleActive: \"after:bg-cyan-300\",\n row: \"hover:bg-cyan-400/10 data-[state=selected]:!bg-cyan-400/15\",\n rowSelected: \"!bg-cyan-400/15\",\n tableContainer:\n \"border-cyan-400/35 bg-black/72 text-cyan-50 shadow-[0_0_0_1px_rgba(34,211,238,0.08),0_0_26px_rgba(34,211,238,0.08)]\",\n tableScrollArea: \"bg-black/72\",\n tableStickyHeader:\n \"sticky top-0 z-30 bg-black/90 backdrop-blur [&_th]:border-cyan-400/45 [&_th]:bg-black/90\",\n toolbarCompactIconButton: \"size-7\",\n toolbarIconButton: \"text-cyan-100/70 hover:text-cyan-50\",\n toolbarInputButton: \"border-cyan-400/45 bg-black/70 text-cyan-50\",\n },\n Button: GridButton,\n Card: GridCard,\n CardContent: GridCardContent,\n CardHeader: GridCardHeader,\n Checkbox: GridCheckbox,\n DropdownMenuCheckboxItem: GridDropdownMenuCheckboxItem,\n DropdownMenuContent: GridDropdownMenuContent,\n DropdownMenuItem: GridDropdownMenuItem,\n DropdownMenuLabel: GridDropdownMenuLabel,\n DropdownMenuRadioItem: GridDropdownMenuRadioItem,\n DropdownMenuSeparator: GridDropdownMenuSeparator,\n DropdownMenuSubContent: GridDropdownMenuSubContent,\n DropdownMenuSubTrigger: GridDropdownMenuSubTrigger,\n Empty: GridEmpty,\n EmptyDescription: GridEmptyDescription,\n EmptyMedia: GridEmptyMedia,\n EmptyTitle: GridEmptyTitle,\n Input: GridInput,\n InputGroup: GridInputGroup,\n PaginationLink: GridPaginationLink,\n ScrollArea: GridScrollArea,\n ScrollBar: GridScrollBar,\n SelectContent: GridSelectContent,\n SelectItem: GridSelectItem,\n SelectTrigger: GridSelectTrigger,\n Separator: GridSeparator,\n Skeleton: GridSkeleton,\n Table: GridTable,\n TableBody: GridTableBody,\n TableCaption: GridTableCaption,\n TableCell: GridTableCell,\n TableFooter: GridTableFooter,\n TableHead: GridTableHead,\n TableHeader: GridTableHeader,\n TableRow: GridTableRow,\n TooltipContent: GridTooltipContent,\n};\n"]} \ No newline at end of file diff --git a/dist/chunk-UKIIMIBW.js b/dist/chunk-UKIIMIBW.js deleted file mode 100644 index 7d9cd07..0000000 --- a/dist/chunk-UKIIMIBW.js +++ /dev/null @@ -1,2 +0,0 @@ -import {V}from'./chunk-BYTOUBQ7.js';import*as b from'react';import {useVirtualizer}from'@tanstack/react-virtual';import {jsx}from'react/jsx-runtime';function z(i){let{renderedRows:a,shouldRenderInitialLoading:T,tableScrollElement:s,viewportHeight:g=0,virtualization:n}=i,o=typeof n=="object"?n:void 0,d=!T&&(n===true||o?.enabled===true),e=d&&!!s&&g>0,p=b.useCallback(t=>a[t]?.id??t,[a]),u=useVirtualizer({count:d?a.length:0,enabled:e,estimateSize:()=>o?.estimateRowHeight??48,getItemKey:p,getScrollElement:()=>s??null,overscan:o?.overscan??8}),r=e?u.getVirtualItems():[],f=e?r.flatMap(t=>{let l=a[t.index];return l?[{row:l,rowIndex:t.index}]:[]}):a.slice(0,Math.max(1,Math.floor(o?.fallbackRowCount??20))).map((t,l)=>({row:t,rowIndex:l})),c=e?r[0]?.start??0:0,w=e?Math.max(0,u.getTotalSize()-(r.at(-1)?.end??c)):0;return jsx(V,{...i,rowsToRender:f,virtualPaddingBottom:w,virtualPaddingTop:c})}export{z as a};//# sourceMappingURL=chunk-UKIIMIBW.js.map -//# sourceMappingURL=chunk-UKIIMIBW.js.map \ No newline at end of file diff --git a/dist/chunk-UKIIMIBW.js.map b/dist/chunk-UKIIMIBW.js.map deleted file mode 100644 index 4bcf572..0000000 --- a/dist/chunk-UKIIMIBW.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/core/data-table/data-table-virtual-table-panel.tsx"],"names":["DataTableVirtualTablePanel","props","renderedRows","shouldRenderInitialLoading","tableScrollElement","viewportHeight","virtualization","virtualizationConfig","enableVirtualization","shouldUseVirtualRows","getItemKey","index","rowVirtualizer","useVirtualizer","virtualItems","rowsToRender","virtualItem","row","rowIndex","virtualPaddingTop","virtualPaddingBottom","jsx","DataTableTablePanel"],"mappings":"qJAKO,SAASA,CAAAA,CACdC,CAAAA,CACA,CACA,GAAM,CACJ,aAAAC,CAAAA,CACA,0BAAA,CAAAC,EACA,kBAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CAAiB,EACjB,cAAA,CAAAC,CACF,EAAIL,CAAAA,CACEM,CAAAA,CACJ,OAAOD,CAAAA,EAAmB,QAAA,CAAWA,EAAiB,MAAA,CAClDE,CAAAA,CACJ,CAACL,CAAAA,GACAG,CAAAA,GAAmB,MAAQC,CAAAA,EAAsB,OAAA,GAAY,MAC1DE,CAAAA,CACJD,CAAAA,EAAwB,CAAA,CAAQJ,CAAAA,EAAuBC,EAAiB,CAAA,CACpEK,CAAAA,CAAmB,cACtBC,CAAAA,EAAkBT,CAAAA,CAAaS,CAAK,CAAA,EAAG,EAAA,EAAMA,EAC9C,CAACT,CAAY,CACf,CAAA,CAGMU,CAAAA,CAAiBC,eAAe,CACpC,KAAA,CAAOL,EAAuBN,CAAAA,CAAa,MAAA,CAAS,EACpD,OAAA,CAASO,CAAAA,CACT,aAAc,IAAMF,CAAAA,EAAsB,mBAAqB,EAAA,CAC/D,UAAA,CAAAG,EACA,gBAAA,CAAkB,IAAMN,GAAsB,IAAA,CAC9C,QAAA,CAAUG,GAAsB,QAAA,EAAY,CAC9C,CAAC,CAAA,CACKO,CAAAA,CAAeL,EACjBG,CAAAA,CAAe,eAAA,EAAgB,CAC/B,GACEG,CAAAA,CAAeN,CAAAA,CACjBK,EAAa,OAAA,CAASE,CAAAA,EAAgB,CACpC,IAAMC,CAAAA,CAAMf,EAAac,CAAAA,CAAY,KAAK,EAC1C,OAAOC,CAAAA,CAAM,CAAC,CAAE,GAAA,CAAAA,EAAK,QAAA,CAAUD,CAAAA,CAAY,KAAM,CAAC,EAAI,EACxD,CAAC,CAAA,CACDd,CAAAA,CACG,MACC,CAAA,CACA,IAAA,CAAK,IACH,CAAA,CACA,IAAA,CAAK,MAAMK,CAAAA,EAAsB,gBAAA,EAAoB,EAAE,CACzD,CACF,EACC,GAAA,CAAI,CAACU,CAAAA,CAAKC,CAAAA,IAAc,CAAE,GAAA,CAAAD,CAAAA,CAAK,SAAAC,CAAS,CAAA,CAAE,EAC3CC,CAAAA,CAAoBV,CAAAA,CACrBK,EAAa,CAAC,CAAA,EAAG,OAAS,CAAA,CAC3B,CAAA,CACEM,EAAuBX,CAAAA,CACzB,IAAA,CAAK,IACH,CAAA,CACAG,CAAAA,CAAe,cAAa,EACzBE,CAAAA,CAAa,GAAG,EAAE,CAAA,EAAG,KAAOK,CAAAA,CACjC,CAAA,CACA,EAEJ,OACEE,GAAAA,CAACC,EAAA,CACE,GAAGrB,EACJ,YAAA,CAAcc,CAAAA,CACd,qBAAsBK,CAAAA,CACtB,iBAAA,CAAmBD,EACrB,CAEJ","file":"chunk-UKIIMIBW.js","sourcesContent":["import * as React from \"react\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { DataTableTablePanel } from \"./data-table-table-panel\";\nimport type { DataTableTablePanelProps } from \"./data-table-table-panel\";\n\nexport function DataTableVirtualTablePanel(\n props: DataTableTablePanelProps,\n) {\n const {\n renderedRows,\n shouldRenderInitialLoading,\n tableScrollElement,\n viewportHeight = 0,\n virtualization,\n } = props;\n const virtualizationConfig =\n typeof virtualization === \"object\" ? virtualization : undefined;\n const enableVirtualization =\n !shouldRenderInitialLoading &&\n (virtualization === true || virtualizationConfig?.enabled === true);\n const shouldUseVirtualRows =\n enableVirtualization && Boolean(tableScrollElement) && viewportHeight > 0;\n const getItemKey = React.useCallback(\n (index: number) => renderedRows[index]?.id ?? index,\n [renderedRows],\n );\n\n // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Virtual owns its instance functions.\n const rowVirtualizer = useVirtualizer({\n count: enableVirtualization ? renderedRows.length : 0,\n enabled: shouldUseVirtualRows,\n estimateSize: () => virtualizationConfig?.estimateRowHeight ?? 48,\n getItemKey,\n getScrollElement: () => tableScrollElement ?? null,\n overscan: virtualizationConfig?.overscan ?? 8,\n });\n const virtualItems = shouldUseVirtualRows\n ? rowVirtualizer.getVirtualItems()\n : [];\n const rowsToRender = shouldUseVirtualRows\n ? virtualItems.flatMap((virtualItem) => {\n const row = renderedRows[virtualItem.index];\n return row ? [{ row, rowIndex: virtualItem.index }] : [];\n })\n : renderedRows\n .slice(\n 0,\n Math.max(\n 1,\n Math.floor(virtualizationConfig?.fallbackRowCount ?? 20),\n ),\n )\n .map((row, rowIndex) => ({ row, rowIndex }));\n const virtualPaddingTop = shouldUseVirtualRows\n ? (virtualItems[0]?.start ?? 0)\n : 0;\n const virtualPaddingBottom = shouldUseVirtualRows\n ? Math.max(\n 0,\n rowVirtualizer.getTotalSize() -\n (virtualItems.at(-1)?.end ?? virtualPaddingTop),\n )\n : 0;\n\n return (\n \n );\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-V5A4DWYZ.js b/dist/chunk-V5A4DWYZ.js new file mode 100644 index 0000000..52fc0bd --- /dev/null +++ b/dist/chunk-V5A4DWYZ.js @@ -0,0 +1,2 @@ +import {b,e}from'./chunk-NLQJKISS.js';import*as i from'react';import {useVirtualizer}from'@tanstack/react-virtual';import {jsx}from'react/jsx-runtime';function V(t){let{renderedRows:n,shouldRenderInitialLoading:T,tableScrollElement:s,viewportHeight:w=0,virtualization:d}=t,l=typeof d=="object"?d:void 0,c=!T&&(d===true||l?.enabled===true),a=c&&!!s&&w>0,f=i.useCallback(e=>n[e]?.id??e,[n]),o=useVirtualizer({count:c?n.length:0,enabled:a,estimateSize:()=>l?.estimateRowHeight??48,getItemKey:f,getScrollElement:()=>s??null,overscan:l?.overscan??8}),u=a?o.getVirtualItems():[],h=a?u.flatMap(e=>{let r=n[e.index];return r?[{row:r,rowIndex:e.index}]:[]}):n.slice(0,Math.max(1,Math.floor(l?.fallbackRowCount??20))).map((e,r)=>({row:e,rowIndex:r})),m=a?u[0]?.start??0:0,P=a?Math.max(0,o.getTotalSize()-(u.at(-1)?.end??m)):0,v=i.useCallback(e=>{!t.gridMode||!a||o.scrollToIndex(Math.max(0,e-t.topPinnedRows.length),{align:"auto"});},[t.gridMode,t.topPinnedRows.length,o,a]),M=i.useCallback(e=>{e&&o.measureElement(e);},[o]);return jsx(b,{measureRow:a?M:void 0,children:jsx(e,{...t,rowsToRender:h,virtualPaddingBottom:P,virtualPaddingTop:m,onGridActiveRowIndexChange:v})})}export{V as a};//# sourceMappingURL=chunk-V5A4DWYZ.js.map +//# sourceMappingURL=chunk-V5A4DWYZ.js.map \ No newline at end of file diff --git a/dist/chunk-V5A4DWYZ.js.map b/dist/chunk-V5A4DWYZ.js.map new file mode 100644 index 0000000..41eb598 --- /dev/null +++ b/dist/chunk-V5A4DWYZ.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/core/data-table/data-table-virtual-table-panel.tsx"],"names":["DataTableVirtualTablePanel","props","renderedRows","shouldRenderInitialLoading","tableScrollElement","viewportHeight","virtualization","virtualizationConfig","enableVirtualization","shouldUseVirtualRows","getItemKey","index","rowVirtualizer","useVirtualizer","virtualItems","rowsToRender","virtualItem","row","rowIndex","virtualPaddingTop","virtualPaddingBottom","handleGridActiveRowIndexChange","gridRowIndex","measureRow","element","jsx","DataTableVirtualRowMeasurementProvider","DataTableTablePanel"],"mappings":"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","file":"chunk-V5A4DWYZ.js","sourcesContent":["import * as React from \"react\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { DataTableTablePanel } from \"./data-table-table-panel\";\nimport type { DataTableTablePanelProps } from \"./data-table-table-panel\";\nimport { DataTableVirtualRowMeasurementProvider } from \"./data-table-virtual-row-measurement\";\n\nexport function DataTableVirtualTablePanel(\n props: DataTableTablePanelProps,\n) {\n const {\n renderedRows,\n shouldRenderInitialLoading,\n tableScrollElement,\n viewportHeight = 0,\n virtualization,\n } = props;\n const virtualizationConfig =\n typeof virtualization === \"object\" ? virtualization : undefined;\n const enableVirtualization =\n !shouldRenderInitialLoading &&\n (virtualization === true || virtualizationConfig?.enabled === true);\n const shouldUseVirtualRows =\n enableVirtualization && Boolean(tableScrollElement) && viewportHeight > 0;\n const getItemKey = React.useCallback(\n (index: number) => renderedRows[index]?.id ?? index,\n [renderedRows],\n );\n\n // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Virtual owns its instance functions.\n const rowVirtualizer = useVirtualizer({\n count: enableVirtualization ? renderedRows.length : 0,\n enabled: shouldUseVirtualRows,\n estimateSize: () => virtualizationConfig?.estimateRowHeight ?? 48,\n getItemKey,\n getScrollElement: () => tableScrollElement ?? null,\n overscan: virtualizationConfig?.overscan ?? 8,\n });\n const virtualItems = shouldUseVirtualRows\n ? rowVirtualizer.getVirtualItems()\n : [];\n const rowsToRender = shouldUseVirtualRows\n ? virtualItems.flatMap((virtualItem) => {\n const row = renderedRows[virtualItem.index];\n return row ? [{ row, rowIndex: virtualItem.index }] : [];\n })\n : renderedRows\n .slice(\n 0,\n Math.max(\n 1,\n Math.floor(virtualizationConfig?.fallbackRowCount ?? 20),\n ),\n )\n .map((row, rowIndex) => ({ row, rowIndex }));\n const virtualPaddingTop = shouldUseVirtualRows\n ? (virtualItems[0]?.start ?? 0)\n : 0;\n const virtualPaddingBottom = shouldUseVirtualRows\n ? Math.max(\n 0,\n rowVirtualizer.getTotalSize() -\n (virtualItems.at(-1)?.end ?? virtualPaddingTop),\n )\n : 0;\n const handleGridActiveRowIndexChange = React.useCallback(\n (gridRowIndex: number) => {\n if (!props.gridMode || !shouldUseVirtualRows) return;\n rowVirtualizer.scrollToIndex(\n Math.max(0, gridRowIndex - props.topPinnedRows.length),\n { align: \"auto\" },\n );\n },\n [\n props.gridMode,\n props.topPinnedRows.length,\n rowVirtualizer,\n shouldUseVirtualRows,\n ],\n );\n const measureRow = React.useCallback>(\n (element) => {\n if (element) {\n rowVirtualizer.measureElement(element);\n }\n },\n [rowVirtualizer],\n );\n\n return (\n \n \n \n );\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-XTVBESM5.js b/dist/chunk-XTVBESM5.js new file mode 100644 index 0000000..5758a41 --- /dev/null +++ b/dist/chunk-XTVBESM5.js @@ -0,0 +1,2 @@ +import {clsx}from'clsx';import {twMerge}from'tailwind-merge';function s(...r){return twMerge(clsx(r))}export{s as a};//# sourceMappingURL=chunk-XTVBESM5.js.map +//# sourceMappingURL=chunk-XTVBESM5.js.map \ No newline at end of file diff --git a/dist/chunk-XTVBESM5.js.map b/dist/chunk-XTVBESM5.js.map new file mode 100644 index 0000000..6b0b9ac --- /dev/null +++ b/dist/chunk-XTVBESM5.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/lib/utils.ts"],"names":["cn","inputs","twMerge","clsx"],"mappings":"6DAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B","file":"chunk-XTVBESM5.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-ZA7LQ2JH.js b/dist/chunk-ZA7LQ2JH.js deleted file mode 100644 index 1a5ba45..0000000 --- a/dist/chunk-ZA7LQ2JH.js +++ /dev/null @@ -1,2 +0,0 @@ -import {a}from'./chunk-EJHT5JBZ.js';import {a as a$1,b}from'./chunk-GSCYQ624.js';import*as f from'react';import {useVirtualizer}from'@tanstack/react-virtual';import {jsx,jsxs}from'react/jsx-runtime';function st({cardClassName:r,cardGridClassName:o,cardSizing:y,cardRenderer:E,containerWidth:N,currentRowSelection:V,currentDetailExpanded:z,DataTableCardView:M,DataTableEmptyState:k,dragAndDrop:c,editableRows:A,editingRowId:P,emptyNode:I,enableRowSelection:H,flexGrow:g,getRowClassName:_,hasCardTitle:B,infiniteScroll:K,localSearchValue:h,onRowClick:O,renderedRows:e,detailPanel:j,resolvedLabels:n,resolvedLoadingRowCount:U,rowActions:Y=[],ScrollArea:$,sentinelRef:q,setCurrentDetailExpanded:F,setCurrentRowSelection:J,setEditingRowId:Q,shouldRenderInitialLoading:m,tableContainerClassName:X,uiClassNames:p,virtualization:R}){let x=m||e.length>0,v=f.useRef(null),{viewportElement:D,viewportHeight:Z}=a(v,x),l=typeof R=="object"?R.card:void 0,T=!m&&e.length>0&&l?.enabled===true,i=et(l?.lanes,N),G=Math.ceil(e.length/i),b=T&&!!D&&Z>0,L=f.useCallback(t=>e[t*i]?.id??t,[i,e]),w=useVirtualizer({count:T?G:0,enabled:b,estimateSize:()=>l?.estimateCardHeight??280,getItemKey:L,getScrollElement:()=>D,overscan:l?.overscan??4}),W=b?w.getVirtualItems():[],C=(t,s)=>jsx(M,{rows:t,cardRenderer:E,cardGridClassName:o,cardClassName:r,cardSizing:y,rowActions:Y,editableRows:A,detailPanel:j,detailExpanded:z,onDetailExpandedChange:F,hasCardTitle:B,rowSelection:V,onRowSelectionChange:J,enableRowSelection:H,editingRowId:P,onEditingRowIdChange:Q,getRowClassName:_,onRowClick:O,getRowDraggable:c?.getRowDraggable,onRowDragStart:c?.onRowDragStart,onRowDragEnd:c?.onRowDragEnd,isLoading:s?.isLoading,loadingRowCount:s?.loadingRowCount,labels:n});return jsx("div",{ref:v,"data-dtp-slot":"data-table-card-shell",className:a$1("box-border border-2 border-transparent transition-colors",g?"flex min-h-0 flex-1 flex-col":"h-full",c?.isDragging&&(p.dragActive??"rounded-md border-dashed")),children:jsx($,{className:a$1(g?"min-h-0 flex-1":"h-full",p.cardScrollArea,X),children:jsxs("div",{"data-dtp-slot":"data-table-card-viewport",className:a$1("flex min-h-full min-w-0 flex-col",g&&"min-h-0 flex-1",p.cardViewport),children:[x?m?C([],{isLoading:true,loadingRowCount:U}):b?jsx("div",{"data-dtp-slot":"data-table-card-virtualizer",style:{height:w.getTotalSize(),position:"relative",width:"100%"},children:W.map(t=>{let s=t.index*i,tt=e.slice(s,s+i);return jsx("div",{"data-index":t.index,ref:w.measureElement,style:{left:0,position:"absolute",top:0,transform:`translateY(${t.start}px)`,width:"100%"},children:C(tt)},t.key)})}):C(e.slice(0,Math.max(1,Math.floor(l?.fallbackCardCount??12)))):jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center p-4",children:I??jsx(k,{title:h?n.noMatchingRowsTitle:n.noRowsTitle,description:h?n.noMatchingRowsDescription:n.noRowsDescription})}),K?.enabled&&!m?jsx("div",{className:"shrink-0 px-4 pb-4",children:jsx("div",{ref:q,className:"h-4 w-full"})}):null]})})})}function et(r,o){return typeof r=="number"?Math.max(1,Math.floor(r)):r!=="auto"?1:o>=b["2xl"]?5:o>=b.xl?4:o>=b.lg?3:o>=b.sm?2:1}export{st as a};//# sourceMappingURL=chunk-ZA7LQ2JH.js.map -//# sourceMappingURL=chunk-ZA7LQ2JH.js.map \ No newline at end of file diff --git a/dist/chunk-ZA7LQ2JH.js.map b/dist/chunk-ZA7LQ2JH.js.map deleted file mode 100644 index 1b66f80..0000000 --- a/dist/chunk-ZA7LQ2JH.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/core/data-table/data-table-virtual-card-panel.tsx"],"names":["DataTableVirtualCardPanel","cardClassName","cardGridClassName","cardSizing","cardRenderer","containerWidth","currentRowSelection","currentDetailExpanded","DataTableCardView","DataTableEmptyState","dragAndDrop","editableRows","editingRowId","emptyNode","enableRowSelection","flexGrow","getRowClassName","hasCardTitle","infiniteScroll","localSearchValue","onRowClick","renderedRows","detailPanel","resolvedLabels","resolvedLoadingRowCount","rowActions","ScrollArea","sentinelRef","setCurrentDetailExpanded","setCurrentRowSelection","setEditingRowId","shouldRenderInitialLoading","tableContainerClassName","uiClassNames","virtualization","shouldRenderCards","cardScrollContainerRef","viewportElement","viewportHeight","useDataTableScrollViewport","virtualizationConfig","enableCardVirtualization","lanes","resolveCardVirtualizationLanes","virtualRowCount","shouldUseVirtualCardRows","getItemKey","index","cardVirtualizer","useVirtualizer","virtualCardRows","renderCardView","rows","options","jsx","cn","jsxs","virtualRow","startIndex","configuredLanes","DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS"],"mappings":"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","file":"chunk-ZA7LQ2JH.js","sourcesContent":["import * as React from \"react\";\nimport type { Row } from \"@tanstack/react-table\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { cn } from \"../../lib/utils\";\nimport { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS } from \"../types\";\nimport type { DataTableCardPanelProps } from \"./data-table-card-panel-types\";\nimport { useDataTableScrollViewport } from \"./use-data-table-scroll-viewport\";\n\nexport function DataTableVirtualCardPanel({\n cardClassName,\n cardGridClassName,\n cardSizing,\n cardRenderer,\n containerWidth,\n currentRowSelection,\n currentDetailExpanded,\n DataTableCardView,\n DataTableEmptyState,\n dragAndDrop,\n editableRows,\n editingRowId,\n emptyNode,\n enableRowSelection,\n flexGrow,\n getRowClassName,\n hasCardTitle,\n infiniteScroll,\n localSearchValue,\n onRowClick,\n renderedRows,\n detailPanel,\n resolvedLabels,\n resolvedLoadingRowCount,\n rowActions = [],\n ScrollArea,\n sentinelRef,\n setCurrentDetailExpanded,\n setCurrentRowSelection,\n setEditingRowId,\n shouldRenderInitialLoading,\n tableContainerClassName,\n uiClassNames,\n virtualization,\n}: DataTableCardPanelProps) {\n const shouldRenderCards = shouldRenderInitialLoading || renderedRows.length > 0;\n const cardScrollContainerRef = React.useRef(null);\n const { viewportElement, viewportHeight } = useDataTableScrollViewport(\n cardScrollContainerRef,\n shouldRenderCards,\n );\n const virtualizationConfig =\n typeof virtualization === \"object\" ? virtualization.card : undefined;\n const enableCardVirtualization =\n !shouldRenderInitialLoading &&\n renderedRows.length > 0 &&\n virtualizationConfig?.enabled === true;\n const lanes = resolveCardVirtualizationLanes(\n virtualizationConfig?.lanes,\n containerWidth,\n );\n const virtualRowCount = Math.ceil(renderedRows.length / lanes);\n const shouldUseVirtualCardRows =\n enableCardVirtualization && Boolean(viewportElement) && viewportHeight > 0;\n const getItemKey = React.useCallback(\n (index: number) => renderedRows[index * lanes]?.id ?? index,\n [lanes, renderedRows],\n );\n // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Virtual owns its instance functions.\n const cardVirtualizer = useVirtualizer({\n count: enableCardVirtualization ? virtualRowCount : 0,\n enabled: shouldUseVirtualCardRows,\n estimateSize: () => virtualizationConfig?.estimateCardHeight ?? 280,\n getItemKey,\n getScrollElement: () => viewportElement,\n overscan: virtualizationConfig?.overscan ?? 4,\n });\n const virtualCardRows = shouldUseVirtualCardRows\n ? cardVirtualizer.getVirtualItems()\n : [];\n\n const renderCardView = (\n rows: Array>,\n options?: {\n isLoading?: boolean;\n loadingRowCount?: number;\n },\n ) => (\n \n );\n\n return (\n \n \n \n {shouldRenderCards ? (\n shouldRenderInitialLoading ? (\n renderCardView([], {\n isLoading: true,\n loadingRowCount: resolvedLoadingRowCount,\n })\n ) : shouldUseVirtualCardRows ? (\n \n {virtualCardRows.map((virtualRow) => {\n const startIndex = virtualRow.index * lanes;\n const rows = renderedRows.slice(\n startIndex,\n startIndex + lanes,\n );\n\n return (\n \n {renderCardView(rows)}\n \n );\n })}\n \n ) : (\n renderCardView(\n renderedRows.slice(\n 0,\n Math.max(\n 1,\n Math.floor(\n virtualizationConfig?.fallbackCardCount ?? 12,\n ),\n ),\n ),\n )\n )\n ) : (\n
    \n {emptyNode ?? (\n \n )}\n
    \n )}\n\n {infiniteScroll?.enabled && !shouldRenderInitialLoading ? (\n
    \n
    \n
    \n ) : null}\n
    \n \n \n );\n}\n\nfunction resolveCardVirtualizationLanes(\n configuredLanes: number | \"auto\" | undefined,\n containerWidth: number,\n) {\n if (typeof configuredLanes === \"number\") {\n return Math.max(1, Math.floor(configuredLanes));\n }\n\n if (configuredLanes !== \"auto\") {\n return 1;\n }\n\n if (containerWidth >= DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS[\"2xl\"]) {\n return 5;\n }\n if (containerWidth >= DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS.xl) {\n return 4;\n }\n if (containerWidth >= DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS.lg) {\n return 3;\n }\n if (containerWidth >= DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS.sm) {\n return 2;\n }\n return 1;\n}\n"]} \ No newline at end of file diff --git a/dist/data-source.d.ts b/dist/data-source.d.ts index 9050b22..be11f1e 100644 --- a/dist/data-source.d.ts +++ b/dist/data-source.d.ts @@ -1,4 +1,4 @@ -import { PaginationState, SortingState, ColumnFiltersState } from '@tanstack/react-table'; +import { PaginationState, SortingState, ColumnFiltersState, GroupingState } from '@tanstack/react-table'; import { DataTableProps } from './types.js'; import 'react'; @@ -19,6 +19,14 @@ type DataTableDataSourceQuery = { cursor: TCursor | null; sorting: SortingState; columnFilters: ColumnFiltersState; + /** Server-owned global filter value, normally the table toolbar query. */ + globalFilter?: string; + /** Server-owned row grouping state. */ + grouping?: GroupingState; + /** Requested aggregate functions keyed by result/column identifier. */ + aggregations?: Record; + /** Stable ancestor/group identifiers for lazy child or group loading. */ + expansionPath?: Array; /** Application-owned request parameters, such as a tenant or parent ID. */ query: TQuery | undefined; }; @@ -35,6 +43,12 @@ type DataTableDataSourceResponse = { nextCursor?: TCursor | null; /** Backend-provided facet/count metadata for filter UIs. */ facets?: TFacets; + /** Stable row identifiers in response order when IDs are server-projected. */ + rowIds?: Array; + /** Backend-provided aggregate values keyed by result/column identifier. */ + aggregates?: Record; + /** Application-owned response metadata such as revision or timing data. */ + metadata?: Record; }; type DataTableDataSource = (request: DataTableDataSourceRequest) => DataTableDataSourceResponse | Promise>; type DataTableDataSourceRetryOptions = number | { @@ -74,9 +88,12 @@ type UseDataTableDataSourceOptions void; onSortingChange?: (sorting: SortingState) => void; onColumnFiltersChange?: (filters: ColumnFiltersState) => void; + onGlobalFilterChange?: (globalFilter: string) => void; + onGroupingChange?: (grouping: GroupingState) => void; }; -type DataTableDataSourceTableProps = Pick, "columnFilters" | "data" | "hasNextPage" | "isLoading" | "manualFiltering" | "manualPagination" | "manualSorting" | "onColumnFiltersChange" | "onPageIndexChange" | "onPageSizeChange" | "onSortingChange" | "pageIndex" | "pageSize" | "sorting" | "totalRowCount">; +type DataTableDataSourceTableProps = Pick, "columnFilters" | "data" | "hasNextPage" | "isLoading" | "manualFiltering" | "manualGrouping" | "manualPagination" | "manualSorting" | "onColumnFiltersChange" | "onGroupingChange" | "onPageIndexChange" | "onPageSizeChange" | "onSortingChange" | "pageIndex" | "pageSize" | "sorting" | "grouping" | "toolbarQueryValue" | "onToolbarQueryValueChange" | "totalRowCount">; type UseDataTableDataSourceResult = { + aggregates: Record | undefined; data: Array; error: unknown; facets: TFacets | undefined; @@ -87,6 +104,8 @@ type UseDataTableDataSourceResult = isFetching: boolean; isSuccess: boolean; nextCursor: TCursor | null | undefined; + metadata: Record | undefined; + rowIds: Array | undefined; rowCount: number | undefined; /** Starts a network request, bypassing a fresh cache entry. */ refresh: () => Promise | undefined>; diff --git a/dist/data-source.js b/dist/data-source.js index 0290946..6c182e1 100644 --- a/dist/data-source.js +++ b/dist/data-source.js @@ -1,2 +1,2 @@ -import*as n from'react';var j=3e4,v=50;function X(e){let{columnFilters:a,cursor:c,enabled:t=true,getRequestKey:s,initialData:i=[],mode:w,pagination:l,query:P,sorting:D}=e,Q=n.useRef(e);n.useEffect(()=>{Q.current=e;},[e]);let C=n.useRef(new Map),T=n.useRef(void 0),M=n.useRef(0),f=n.useRef(true),[r,b]=n.useState(()=>({data:i,error:null,facets:void 0,isFetching:false,nextCursor:void 0,responseKey:null,rowCount:void 0,status:i.length>0?"success":"idle"})),q=n.useMemo(()=>({columnFilters:a,cursor:c??null,limit:l.pageSize,mode:w,offset:l.pageIndex*l.pageSize,pagination:{...l},query:P,sorting:D}),[a,c,w,l,P,D]),K=s?s(q):z(q),m=n.useCallback(p=>{let o=Q.current,F={columnFilters:o.columnFilters,cursor:o.cursor??null,limit:o.pagination.pageSize,mode:o.mode,offset:o.pagination.pageIndex*o.pagination.pageSize,pagination:{...o.pagination},query:o.query,sorting:o.sorting},d=o.getRequestKey?o.getRequestKey(F):z(F),y=T.current;if(y?.key===d)return y.promise;y&&(y.controller.abort(),T.current=void 0);let k=O(o.cache),g=C.current.get(d);if(!p&&g&&k&&N(g,k))return f.current&&b({data:g.response.rows,error:null,facets:g.response.facets,isFetching:false,nextCursor:g.response.nextCursor,responseKey:d,rowCount:g.response.rowCount,status:"success"}),Promise.resolve(g.response);let x=new AbortController,S=++M.current,R={...F,signal:x.signal};f.current&&b(u=>({...u,data:o.keepPreviousData===false?[]:u.data,error:null,isFetching:true,status:u.responseKey===d?u.status:"loading"}));let A=$(o.source,R,o.retry).then(u=>{if(T.current?.id!==S)return u;let h=O(o.cache);return h&&W(C.current,d,u,h),f.current&&b({data:u.rows,error:null,facets:u.facets,isFetching:false,nextCursor:u.nextCursor,responseKey:d,rowCount:u.rowCount,status:"success"}),o.onSuccess?.(u,R),u}).catch(u=>{I(u,x.signal)||T.current?.id!==S||(f.current&&b(h=>({...h,error:u,isFetching:false,status:"error"})),o.onError?.(u,R));}).finally(()=>{T.current?.id===S&&(T.current=void 0);});return T.current={controller:x,id:S,key:d,promise:A,request:R},A},[]);n.useEffect(()=>{if(f.current=true,!t){T.current?.controller.abort(),T.current=void 0;return}m(false);},[t,K,m]),n.useEffect(()=>()=>{f.current=false,T.current?.controller.abort(),T.current=void 0;},[]);let L=n.useCallback(()=>m(true),[m]),_=n.useCallback(p=>{if(p===void 0){C.current.clear();return}C.current.delete(p);},[]),E=r.nextCursor!==void 0?r.nextCursor!==null:r.rowCount===void 0?void 0:l.pageIndex+1({columnFilters:a,data:r.data,hasNextPage:E,isLoading:t&&r.status==="loading",manualFiltering:true,manualPagination:true,manualSorting:true,onColumnFiltersChange:e.onColumnFiltersChange,onPageIndexChange:e.onPageIndexChange,onPageSizeChange:e.onPageSizeChange,onSortingChange:e.onSortingChange,pageIndex:l.pageIndex,pageSize:l.pageSize,sorting:D,totalRowCount:r.rowCount}),[a,t,E,e.onColumnFiltersChange,e.onPageIndexChange,e.onPageSizeChange,e.onSortingChange,l.pageIndex,l.pageSize,D,r.data,r.rowCount,r.status]);return {data:r.data,error:r.error,facets:r.facets,invalidate:_,isError:r.status==="error",isFetching:t&&r.isFetching,isLoading:t&&r.status==="loading",isSuccess:r.status==="success",nextCursor:r.nextCursor,refresh:L,rowCount:r.rowCount,tableProps:U}}function O(e){if(e!==false)return typeof e=="number"?{maxEntries:v,staleTime:Math.max(0,e)}:{maxEntries:Math.max(1,e?.maxEntries??v),staleTime:Math.max(0,e?.staleTime??j)}}function N(e,a){return Date.now()-e.updatedAt<=a.staleTime}function W(e,a,c,t){for(e.delete(a),e.set(a,{response:c,updatedAt:Date.now()});e.size>t.maxEntries;){let s=e.keys().next().value;if(s===void 0)return;e.delete(s);}}async function $(e,a,c){let t=H(c);for(let s=0;;s+=1)try{return await e(a)}catch(i){if(I(i,a.signal)||s>=t.attempts||!t.shouldRetry({attempt:s+1,error:i}))throw i;await J(t.delay({attempt:s+1,error:i}),a.signal);}}function H(e){return typeof e=="number"?{attempts:Math.max(0,e),delay:()=>250,shouldRetry:()=>true}:{attempts:Math.max(0,e?.attempts??0),delay:a=>{let c=typeof e?.delay=="function"?e.delay(a):e?.delay??250;return Math.max(0,c)},shouldRetry:e?.shouldRetry??(()=>true)}}function J(e,a){return new Promise((c,t)=>{let s=globalThis.setTimeout(()=>{a.removeEventListener("abort",i),c();},e),i=()=>{globalThis.clearTimeout(s),t(new DOMException("Request aborted","AbortError"));};a.addEventListener("abort",i,{once:true});})}function I(e,a){return a.aborted||e instanceof DOMException&&e.name==="AbortError"||typeof e=="object"&&e!==null&&"name"in e&&e.name==="AbortError"}function z(e){let a=new WeakSet;return JSON.stringify(e,(c,t)=>typeof t=="bigint"?`bigint:${t.toString()}`:t instanceof Date?`date:${t.toISOString()}`:typeof t=="function"||typeof t=="symbol"?String(t):typeof t=="object"&&t!==null&&!Array.isArray(t)?a.has(t)?"[Circular]":(a.add(t),Object.fromEntries(Object.entries(t).sort(([s],[i])=>s.localeCompare(i)))):t)}export{X as useDataTableDataSource};//# sourceMappingURL=data-source.js.map +import*as u from'react';var W=3e4,M=50;function Y(e){let{aggregations:n,columnFilters:i,cursor:t,enabled:s=true,expansionPath:c,getRequestKey:Q,globalFilter:D,grouping:C,initialData:k=[],mode:q,pagination:l,query:A,sorting:b}=e,E=u.useRef(e);u.useEffect(()=>{E.current=e;},[e]);let p=u.useRef(new Map),g=u.useRef(void 0),_=u.useRef(0),f=u.useRef(true),[a,m]=u.useState(()=>({aggregates:void 0,data:k,error:null,facets:void 0,isFetching:false,metadata:void 0,nextCursor:void 0,responseKey:null,rowCount:void 0,rowIds:void 0,status:k.length>0?"success":"idle"})),I=u.useMemo(()=>({aggregations:n,columnFilters:i,cursor:t??null,expansionPath:c,globalFilter:D,grouping:C,limit:l.pageSize,mode:q,offset:l.pageIndex*l.pageSize,pagination:{...l},query:A,sorting:b}),[n,i,t,c,D,C,q,l,A,b]),U=Q?Q(I):K(I),y=u.useCallback(S=>{let r=E.current,x={aggregations:r.aggregations,columnFilters:r.columnFilters,cursor:r.cursor??null,expansionPath:r.expansionPath,globalFilter:r.globalFilter,grouping:r.grouping,limit:r.pagination.pageSize,mode:r.mode,offset:r.pagination.pageIndex*r.pagination.pageSize,pagination:{...r.pagination},query:r.query,sorting:r.sorting},T=r.getRequestKey?r.getRequestKey(x):K(x),h=g.current;if(h?.key===T)return h.promise;h&&(h.controller.abort(),g.current=void 0);let O=G(r.cache),d=p.current.get(T);if(!S&&d&&O&&$(d,O))return f.current&&m({aggregates:d.response.aggregates,data:d.response.rows,error:null,facets:d.response.facets,isFetching:false,metadata:d.response.metadata,nextCursor:d.response.nextCursor,responseKey:T,rowCount:d.response.rowCount,rowIds:d.response.rowIds,status:"success"}),Promise.resolve(d.response);let P=new AbortController,R=++_.current,F={...x,signal:P.signal};f.current&&m(o=>({...o,data:r.keepPreviousData===false?[]:o.data,error:null,isFetching:true,status:o.responseKey===T?o.status:"loading"}));let z=J(r.source,F,r.retry).then(o=>{if(g.current?.id!==R)return o;let w=G(r.cache);return w&&H(p.current,T,o,w),f.current&&m({aggregates:o.aggregates,data:o.rows,error:null,facets:o.facets,isFetching:false,metadata:o.metadata,nextCursor:o.nextCursor,responseKey:T,rowCount:o.rowCount,rowIds:o.rowIds,status:"success"}),r.onSuccess?.(o,F),o}).catch(o=>{L(o,P.signal)||g.current?.id!==R||(f.current&&m(w=>({...w,error:o,isFetching:false,status:"error"})),r.onError?.(o,F));}).finally(()=>{g.current?.id===R&&(g.current=void 0);});return g.current={controller:P,id:R,key:T,promise:z,request:F},z},[]);u.useEffect(()=>{if(f.current=true,!s){g.current?.controller.abort(),g.current=void 0;return}y(false);},[s,U,y]),u.useEffect(()=>()=>{f.current=false,g.current?.controller.abort(),g.current=void 0;},[]);let j=u.useCallback(()=>y(true),[y]),N=u.useCallback(S=>{if(S===void 0){p.current.clear();return}p.current.delete(S);},[]),v=a.nextCursor!==void 0?a.nextCursor!==null:a.rowCount===void 0?void 0:l.pageIndex+1({columnFilters:i,data:a.data,hasNextPage:v,isLoading:s&&a.status==="loading",manualFiltering:true,manualGrouping:true,manualPagination:true,manualSorting:true,onColumnFiltersChange:e.onColumnFiltersChange,onGroupingChange:e.onGroupingChange,onPageIndexChange:e.onPageIndexChange,onPageSizeChange:e.onPageSizeChange,onSortingChange:e.onSortingChange,onToolbarQueryValueChange:e.onGlobalFilterChange,pageIndex:l.pageIndex,pageSize:l.pageSize,sorting:b,grouping:C,toolbarQueryValue:D,totalRowCount:a.rowCount}),[i,s,D,C,v,e.onColumnFiltersChange,e.onGlobalFilterChange,e.onGroupingChange,e.onPageIndexChange,e.onPageSizeChange,e.onSortingChange,l.pageIndex,l.pageSize,b,a.data,a.rowCount,a.status]);return {aggregates:a.aggregates,data:a.data,error:a.error,facets:a.facets,invalidate:N,isError:a.status==="error",isFetching:s&&a.isFetching,isLoading:s&&a.status==="loading",isSuccess:a.status==="success",metadata:a.metadata,nextCursor:a.nextCursor,refresh:j,rowCount:a.rowCount,rowIds:a.rowIds,tableProps:V}}function G(e){if(e!==false)return typeof e=="number"?{maxEntries:M,staleTime:Math.max(0,e)}:{maxEntries:Math.max(1,e?.maxEntries??M),staleTime:Math.max(0,e?.staleTime??W)}}function $(e,n){return Date.now()-e.updatedAt<=n.staleTime}function H(e,n,i,t){for(e.delete(n),e.set(n,{response:i,updatedAt:Date.now()});e.size>t.maxEntries;){let s=e.keys().next().value;if(s===void 0)return;e.delete(s);}}async function J(e,n,i){let t=X(i);for(let s=0;;s+=1)try{return await e(n)}catch(c){if(L(c,n.signal)||s>=t.attempts||!t.shouldRetry({attempt:s+1,error:c}))throw c;await B(t.delay({attempt:s+1,error:c}),n.signal);}}function X(e){return typeof e=="number"?{attempts:Math.max(0,e),delay:()=>250,shouldRetry:()=>true}:{attempts:Math.max(0,e?.attempts??0),delay:n=>{let i=typeof e?.delay=="function"?e.delay(n):e?.delay??250;return Math.max(0,i)},shouldRetry:e?.shouldRetry??(()=>true)}}function B(e,n){return new Promise((i,t)=>{let s=globalThis.setTimeout(()=>{n.removeEventListener("abort",c),i();},e),c=()=>{globalThis.clearTimeout(s),t(new DOMException("Request aborted","AbortError"));};n.addEventListener("abort",c,{once:true});})}function L(e,n){return n.aborted||e instanceof DOMException&&e.name==="AbortError"||typeof e=="object"&&e!==null&&"name"in e&&e.name==="AbortError"}function K(e){let n=new WeakSet;return JSON.stringify(e,(i,t)=>typeof t=="bigint"?`bigint:${t.toString()}`:t instanceof Date?`date:${t.toISOString()}`:typeof t=="function"||typeof t=="symbol"?String(t):typeof t=="object"&&t!==null&&!Array.isArray(t)?n.has(t)?"[Circular]":(n.add(t),Object.fromEntries(Object.entries(t).sort(([s],[c])=>s.localeCompare(c)))):t)}export{Y as useDataTableDataSource};//# sourceMappingURL=data-source.js.map //# sourceMappingURL=data-source.js.map \ No newline at end of file diff --git a/dist/data-source.js.map b/dist/data-source.js.map index 5db25f6..7fdc47b 100644 --- a/dist/data-source.js.map +++ b/dist/data-source.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/core/data-source/use-data-table-data-source.ts"],"names":["DEFAULT_STALE_TIME","DEFAULT_MAX_CACHE_ENTRIES","useDataTableDataSource","options","columnFilters","cursor","enabled","getRequestKey","initialData","mode","pagination","query","sorting","latestOptionsRef","cacheRef","activeRequestRef","requestIdRef","mountedRef","state","setState","requestQuery","requestKey","stableSerialize","runRequest","force","currentOptions","currentQuery","currentKey","activeRequest","cacheSettings","resolveCacheSettings","cached","isCacheFresh","controller","id","request","previous","promise","fetchWithRetry","response","resolvedCacheSettings","cacheResponse","error","isAbort","refresh","invalidate","key","hasNextPage","tableProps","cache","settings","oldestKey","source","retry","resolveRetrySettings","attempt","waitForRetry","context","value","delay","signal","resolve","reject","timeout","onAbort","seen","_key","nested","left","right"],"mappings":"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","file":"data-source.js","sourcesContent":["import * as React from \"react\";\nimport type {\n ColumnFiltersState,\n PaginationState,\n SortingState,\n} from \"@tanstack/react-table\";\nimport type { DataTableProps } from \"../types\";\n\n/** The supported server pagination strategies. */\nexport type DataTableDataSourceMode = \"offset\" | \"cursor\";\n\n/**\n * The serializable portion of a request. It is also passed to `getRequestKey`\n * so applications can define cache identity for domain-specific query values.\n */\nexport type DataTableDataSourceQuery = {\n mode: DataTableDataSourceMode;\n pagination: PaginationState;\n /** `pageIndex * pageSize`; useful for offset-based backends. */\n offset: number;\n /** The requested number of rows. */\n limit: number;\n /** The cursor for a cursor-based backend. `null` represents the first page. */\n cursor: TCursor | null;\n sorting: SortingState;\n columnFilters: ColumnFiltersState;\n /** Application-owned request parameters, such as a tenant or parent ID. */\n query: TQuery | undefined;\n};\n\n/** A server request with an AbortSignal that is cancelled when superseded. */\nexport type DataTableDataSourceRequest =\n DataTableDataSourceQuery & {\n signal: AbortSignal;\n };\n\n/** A normalized server result for offset and cursor pagination. */\nexport type DataTableDataSourceResponse<\n TData,\n TCursor = string,\n TFacets = unknown,\n> = {\n rows: Array;\n /** Total matching rows, when the backend can provide it. */\n rowCount?: number;\n /** The cursor to use for the following page. `null` means no following page. */\n nextCursor?: TCursor | null;\n /** Backend-provided facet/count metadata for filter UIs. */\n facets?: TFacets;\n};\n\nexport type DataTableDataSource<\n TData,\n TQuery = undefined,\n TCursor = string,\n TFacets = unknown,\n> = (\n request: DataTableDataSourceRequest,\n) =>\n | DataTableDataSourceResponse\n | Promise>;\n\nexport type DataTableDataSourceRetryOptions =\n | number\n | {\n /** Number of retries after the initial attempt. Defaults to 0. */\n attempts?: number;\n /** Delay before every retry. Defaults to 250ms. */\n delay?: number | ((context: { attempt: number; error: unknown }) => number);\n shouldRetry?: (context: { attempt: number; error: unknown }) => boolean;\n };\n\nexport type DataTableDataSourceCacheOptions =\n | false\n | number\n | {\n /** Freshness lifetime in milliseconds. Defaults to 30 seconds. */\n staleTime?: number;\n /** Maximum cached results per hook instance. Defaults to 50. */\n maxEntries?: number;\n };\n\nexport type UseDataTableDataSourceOptions<\n TData,\n TQuery = undefined,\n TCursor = string,\n TFacets = unknown,\n> = Omit<\n DataTableDataSourceQuery,\n \"cursor\" | \"limit\" | \"offset\" | \"query\"\n> & {\n cursor?: TCursor | null;\n query?: TQuery;\n source: DataTableDataSource;\n enabled?: boolean;\n /** Retain the prior result while a changed query is loading. Defaults to true. */\n keepPreviousData?: boolean;\n cache?: DataTableDataSourceCacheOptions;\n retry?: DataTableDataSourceRetryOptions;\n /** Override request/cache identity when `query` contains non-serializable values. */\n getRequestKey?: (query: DataTableDataSourceQuery) => string;\n initialData?: Array;\n onSuccess?: (\n response: DataTableDataSourceResponse,\n request: DataTableDataSourceRequest,\n ) => void;\n onError?: (\n error: unknown,\n request: DataTableDataSourceRequest,\n ) => void;\n onPageIndexChange?: (pageIndex: number) => void;\n onPageSizeChange?: (pageSize: number) => void;\n onSortingChange?: (sorting: SortingState) => void;\n onColumnFiltersChange?: (filters: ColumnFiltersState) => void;\n};\n\nexport type DataTableDataSourceTableProps = Pick<\n DataTableProps,\n | \"columnFilters\"\n | \"data\"\n | \"hasNextPage\"\n | \"isLoading\"\n | \"manualFiltering\"\n | \"manualPagination\"\n | \"manualSorting\"\n | \"onColumnFiltersChange\"\n | \"onPageIndexChange\"\n | \"onPageSizeChange\"\n | \"onSortingChange\"\n | \"pageIndex\"\n | \"pageSize\"\n | \"sorting\"\n | \"totalRowCount\"\n>;\n\nexport type UseDataTableDataSourceResult = {\n data: Array;\n error: unknown;\n facets: TFacets | undefined;\n isError: boolean;\n /** True while the first result for the active query is loading. */\n isLoading: boolean;\n /** True while any request for the active query is in flight. */\n isFetching: boolean;\n isSuccess: boolean;\n nextCursor: TCursor | null | undefined;\n rowCount: number | undefined;\n /** Starts a network request, bypassing a fresh cache entry. */\n refresh: () => Promise | undefined>;\n /** Removes one cached request, or every cached request when omitted. */\n invalidate: (requestKey?: string) => void;\n /** Spread these into `DataTable` for manual paging, sorting, and filtering. */\n tableProps: DataTableDataSourceTableProps;\n};\n\ntype CachedResponse = {\n response: DataTableDataSourceResponse;\n updatedAt: number;\n};\n\ntype ActiveRequest = {\n controller: AbortController;\n id: number;\n key: string;\n promise: Promise | undefined>;\n request: DataTableDataSourceRequest;\n};\n\ntype SourceState = {\n data: Array;\n error: unknown;\n facets: TFacets | undefined;\n isFetching: boolean;\n nextCursor: TCursor | null | undefined;\n responseKey: string | null;\n rowCount: number | undefined;\n status: \"idle\" | \"loading\" | \"success\" | \"error\";\n};\n\nconst DEFAULT_STALE_TIME = 30_000;\nconst DEFAULT_MAX_CACHE_ENTRIES = 50;\n\n/**\n * Fetches controlled, server-side table data with cancellation, retry, stale\n * response protection, per-hook caching, and manual DataTable props.\n */\nexport function useDataTableDataSource<\n TData,\n TQuery = undefined,\n TCursor = string,\n TFacets = unknown,\n>(\n options: UseDataTableDataSourceOptions,\n): UseDataTableDataSourceResult {\n const {\n columnFilters,\n cursor,\n enabled = true,\n getRequestKey,\n initialData = [],\n mode,\n pagination,\n query,\n sorting,\n } = options;\n const latestOptionsRef = React.useRef(options);\n React.useEffect(() => {\n latestOptionsRef.current = options;\n }, [options]);\n const cacheRef = React.useRef(\n new Map>(),\n );\n const activeRequestRef = React.useRef<\n ActiveRequest | undefined\n >(undefined);\n const requestIdRef = React.useRef(0);\n const mountedRef = React.useRef(true);\n const [state, setState] = React.useState>(\n () => ({\n data: initialData,\n error: null,\n facets: undefined,\n isFetching: false,\n nextCursor: undefined,\n responseKey: null,\n rowCount: undefined,\n status: initialData.length > 0 ? \"success\" : \"idle\",\n }),\n );\n\n const requestQuery = React.useMemo>(\n () => ({\n columnFilters,\n cursor: cursor ?? null,\n limit: pagination.pageSize,\n mode,\n offset: pagination.pageIndex * pagination.pageSize,\n pagination: { ...pagination },\n query,\n sorting,\n }),\n [columnFilters, cursor, mode, pagination, query, sorting],\n );\n const requestKey = getRequestKey\n ? getRequestKey(requestQuery)\n : stableSerialize(requestQuery);\n\n const runRequest = React.useCallback(\n (\n force: boolean,\n ): Promise | undefined> => {\n const currentOptions = latestOptionsRef.current;\n const currentQuery: DataTableDataSourceQuery = {\n columnFilters: currentOptions.columnFilters,\n cursor: currentOptions.cursor ?? null,\n limit: currentOptions.pagination.pageSize,\n mode: currentOptions.mode,\n offset:\n currentOptions.pagination.pageIndex * currentOptions.pagination.pageSize,\n pagination: { ...currentOptions.pagination },\n query: currentOptions.query,\n sorting: currentOptions.sorting,\n };\n const currentKey = currentOptions.getRequestKey\n ? currentOptions.getRequestKey(currentQuery)\n : stableSerialize(currentQuery);\n const activeRequest = activeRequestRef.current;\n\n if (activeRequest?.key === currentKey) {\n return activeRequest.promise;\n }\n if (activeRequest) {\n activeRequest.controller.abort();\n activeRequestRef.current = undefined;\n }\n\n const cacheSettings = resolveCacheSettings(currentOptions.cache);\n const cached = cacheRef.current.get(currentKey);\n if (!force && cached && cacheSettings && isCacheFresh(cached, cacheSettings)) {\n if (mountedRef.current) {\n setState({\n data: cached.response.rows,\n error: null,\n facets: cached.response.facets,\n isFetching: false,\n nextCursor: cached.response.nextCursor,\n responseKey: currentKey,\n rowCount: cached.response.rowCount,\n status: \"success\",\n });\n }\n return Promise.resolve(cached.response);\n }\n\n const controller = new AbortController();\n const id = ++requestIdRef.current;\n const request: DataTableDataSourceRequest = {\n ...currentQuery,\n signal: controller.signal,\n };\n if (mountedRef.current) {\n setState((previous) => ({\n ...previous,\n data: currentOptions.keepPreviousData === false ? [] : previous.data,\n error: null,\n isFetching: true,\n status: previous.responseKey === currentKey ? previous.status : \"loading\",\n }));\n }\n\n const promise = fetchWithRetry(\n currentOptions.source,\n request,\n currentOptions.retry,\n )\n .then((response) => {\n if (activeRequestRef.current?.id !== id) {\n return response;\n }\n const resolvedCacheSettings = resolveCacheSettings(currentOptions.cache);\n if (resolvedCacheSettings) {\n cacheResponse(cacheRef.current, currentKey, response, resolvedCacheSettings);\n }\n if (mountedRef.current) {\n setState({\n data: response.rows,\n error: null,\n facets: response.facets,\n isFetching: false,\n nextCursor: response.nextCursor,\n responseKey: currentKey,\n rowCount: response.rowCount,\n status: \"success\",\n });\n }\n currentOptions.onSuccess?.(response, request);\n return response;\n })\n .catch((error: unknown) => {\n if (isAbort(error, controller.signal) || activeRequestRef.current?.id !== id) {\n return undefined;\n }\n if (mountedRef.current) {\n setState((previous) => ({\n ...previous,\n error,\n isFetching: false,\n status: \"error\",\n }));\n }\n currentOptions.onError?.(error, request);\n return undefined;\n })\n .finally(() => {\n if (activeRequestRef.current?.id === id) {\n activeRequestRef.current = undefined;\n }\n });\n\n activeRequestRef.current = { controller, id, key: currentKey, promise, request };\n return promise;\n },\n [],\n );\n\n React.useEffect(() => {\n mountedRef.current = true;\n if (!enabled) {\n activeRequestRef.current?.controller.abort();\n activeRequestRef.current = undefined;\n return;\n }\n void runRequest(false);\n }, [enabled, requestKey, runRequest]);\n\n React.useEffect(\n () => () => {\n mountedRef.current = false;\n activeRequestRef.current?.controller.abort();\n activeRequestRef.current = undefined;\n },\n [],\n );\n\n const refresh = React.useCallback(() => runRequest(true), [runRequest]);\n const invalidate = React.useCallback((key?: string) => {\n if (key === undefined) {\n cacheRef.current.clear();\n return;\n }\n cacheRef.current.delete(key);\n }, []);\n\n const hasNextPage =\n state.nextCursor !== undefined\n ? state.nextCursor !== null\n : state.rowCount === undefined\n ? undefined\n : pagination.pageIndex + 1 < Math.ceil(state.rowCount / pagination.pageSize);\n const tableProps = React.useMemo>(\n () => ({\n columnFilters,\n data: state.data,\n hasNextPage,\n isLoading: enabled && state.status === \"loading\",\n manualFiltering: true,\n manualPagination: true,\n manualSorting: true,\n onColumnFiltersChange: options.onColumnFiltersChange,\n onPageIndexChange: options.onPageIndexChange,\n onPageSizeChange: options.onPageSizeChange,\n onSortingChange: options.onSortingChange,\n pageIndex: pagination.pageIndex,\n pageSize: pagination.pageSize,\n sorting,\n totalRowCount: state.rowCount,\n }),\n [\n columnFilters,\n enabled,\n hasNextPage,\n options.onColumnFiltersChange,\n options.onPageIndexChange,\n options.onPageSizeChange,\n options.onSortingChange,\n pagination.pageIndex,\n pagination.pageSize,\n sorting,\n state.data,\n state.rowCount,\n state.status,\n ],\n );\n\n return {\n data: state.data,\n error: state.error,\n facets: state.facets,\n invalidate,\n isError: state.status === \"error\",\n isFetching: enabled && state.isFetching,\n isLoading: enabled && state.status === \"loading\",\n isSuccess: state.status === \"success\",\n nextCursor: state.nextCursor,\n refresh,\n rowCount: state.rowCount,\n tableProps,\n };\n}\n\nfunction resolveCacheSettings(\n cache: DataTableDataSourceCacheOptions | undefined,\n): { staleTime: number; maxEntries: number } | undefined {\n if (cache === false) {\n return undefined;\n }\n if (typeof cache === \"number\") {\n return { maxEntries: DEFAULT_MAX_CACHE_ENTRIES, staleTime: Math.max(0, cache) };\n }\n return {\n maxEntries: Math.max(1, cache?.maxEntries ?? DEFAULT_MAX_CACHE_ENTRIES),\n staleTime: Math.max(0, cache?.staleTime ?? DEFAULT_STALE_TIME),\n };\n}\n\nfunction isCacheFresh(\n cached: CachedResponse,\n settings: { staleTime: number },\n) {\n return Date.now() - cached.updatedAt <= settings.staleTime;\n}\n\nfunction cacheResponse(\n cache: Map>,\n key: string,\n response: DataTableDataSourceResponse,\n settings: { maxEntries: number },\n) {\n cache.delete(key);\n cache.set(key, { response, updatedAt: Date.now() });\n while (cache.size > settings.maxEntries) {\n const oldestKey = cache.keys().next().value;\n if (oldestKey === undefined) {\n return;\n }\n cache.delete(oldestKey);\n }\n}\n\nasync function fetchWithRetry(\n source: DataTableDataSource,\n request: DataTableDataSourceRequest,\n retry: DataTableDataSourceRetryOptions | undefined,\n) {\n const settings = resolveRetrySettings(retry);\n for (let attempt = 0; ; attempt += 1) {\n try {\n return await source(request);\n } catch (error) {\n if (\n isAbort(error, request.signal) ||\n attempt >= settings.attempts ||\n !settings.shouldRetry({ attempt: attempt + 1, error })\n ) {\n throw error;\n }\n await waitForRetry(settings.delay({ attempt: attempt + 1, error }), request.signal);\n }\n }\n}\n\nfunction resolveRetrySettings(retry: DataTableDataSourceRetryOptions | undefined) {\n if (typeof retry === \"number\") {\n return {\n attempts: Math.max(0, retry),\n delay: () => 250,\n shouldRetry: () => true,\n };\n }\n return {\n attempts: Math.max(0, retry?.attempts ?? 0),\n delay: (context: { attempt: number; error: unknown }) => {\n const value = typeof retry?.delay === \"function\" ? retry.delay(context) : (retry?.delay ?? 250);\n return Math.max(0, value);\n },\n shouldRetry: retry?.shouldRetry ?? (() => true),\n };\n}\n\nfunction waitForRetry(delay: number, signal: AbortSignal) {\n return new Promise((resolve, reject) => {\n const timeout = globalThis.setTimeout(() => {\n signal.removeEventListener(\"abort\", onAbort);\n resolve();\n }, delay);\n const onAbort = () => {\n globalThis.clearTimeout(timeout);\n reject(new DOMException(\"Request aborted\", \"AbortError\"));\n };\n signal.addEventListener(\"abort\", onAbort, { once: true });\n });\n}\n\nfunction isAbort(error: unknown, signal: AbortSignal) {\n return (\n signal.aborted ||\n (error instanceof DOMException && error.name === \"AbortError\") ||\n (typeof error === \"object\" &&\n error !== null &&\n \"name\" in error &&\n error.name === \"AbortError\")\n );\n}\n\nfunction stableSerialize(value: unknown): string {\n const seen = new WeakSet();\n return JSON.stringify(value, (_key, nested: unknown) => {\n if (typeof nested === \"bigint\") {\n return `bigint:${nested.toString()}`;\n }\n if (nested instanceof Date) {\n return `date:${nested.toISOString()}`;\n }\n if (typeof nested === \"function\" || typeof nested === \"symbol\") {\n return String(nested);\n }\n if (typeof nested === \"object\" && nested !== null && !Array.isArray(nested)) {\n if (seen.has(nested)) {\n return \"[Circular]\";\n }\n seen.add(nested);\n return Object.fromEntries(\n Object.entries(nested).sort(([left], [right]) => left.localeCompare(right)),\n );\n }\n return nested;\n });\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../src/core/data-source/use-data-table-data-source.ts"],"names":["DEFAULT_STALE_TIME","DEFAULT_MAX_CACHE_ENTRIES","useDataTableDataSource","options","aggregations","columnFilters","cursor","enabled","expansionPath","getRequestKey","globalFilter","grouping","initialData","mode","pagination","query","sorting","latestOptionsRef","cacheRef","activeRequestRef","requestIdRef","mountedRef","state","setState","requestQuery","requestKey","stableSerialize","runRequest","force","currentOptions","currentQuery","currentKey","activeRequest","cacheSettings","resolveCacheSettings","cached","isCacheFresh","controller","id","request","previous","promise","fetchWithRetry","response","resolvedCacheSettings","cacheResponse","error","isAbort","refresh","invalidate","key","hasNextPage","tableProps","cache","settings","oldestKey","source","retry","resolveRetrySettings","attempt","waitForRetry","context","value","delay","signal","resolve","reject","timeout","onAbort","seen","_key","nested","left","right"],"mappings":"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","file":"data-source.js","sourcesContent":["import * as React from \"react\";\nimport type {\n ColumnFiltersState,\n GroupingState,\n PaginationState,\n SortingState,\n} from \"@tanstack/react-table\";\nimport type { DataTableProps } from \"../types\";\n\n/** The supported server pagination strategies. */\nexport type DataTableDataSourceMode = \"offset\" | \"cursor\";\n\n/**\n * The serializable portion of a request. It is also passed to `getRequestKey`\n * so applications can define cache identity for domain-specific query values.\n */\nexport type DataTableDataSourceQuery = {\n mode: DataTableDataSourceMode;\n pagination: PaginationState;\n /** `pageIndex * pageSize`; useful for offset-based backends. */\n offset: number;\n /** The requested number of rows. */\n limit: number;\n /** The cursor for a cursor-based backend. `null` represents the first page. */\n cursor: TCursor | null;\n sorting: SortingState;\n columnFilters: ColumnFiltersState;\n /** Server-owned global filter value, normally the table toolbar query. */\n globalFilter?: string;\n /** Server-owned row grouping state. */\n grouping?: GroupingState;\n /** Requested aggregate functions keyed by result/column identifier. */\n aggregations?: Record;\n /** Stable ancestor/group identifiers for lazy child or group loading. */\n expansionPath?: Array;\n /** Application-owned request parameters, such as a tenant or parent ID. */\n query: TQuery | undefined;\n};\n\n/** A server request with an AbortSignal that is cancelled when superseded. */\nexport type DataTableDataSourceRequest =\n DataTableDataSourceQuery & {\n signal: AbortSignal;\n };\n\n/** A normalized server result for offset and cursor pagination. */\nexport type DataTableDataSourceResponse<\n TData,\n TCursor = string,\n TFacets = unknown,\n> = {\n rows: Array;\n /** Total matching rows, when the backend can provide it. */\n rowCount?: number;\n /** The cursor to use for the following page. `null` means no following page. */\n nextCursor?: TCursor | null;\n /** Backend-provided facet/count metadata for filter UIs. */\n facets?: TFacets;\n /** Stable row identifiers in response order when IDs are server-projected. */\n rowIds?: Array;\n /** Backend-provided aggregate values keyed by result/column identifier. */\n aggregates?: Record;\n /** Application-owned response metadata such as revision or timing data. */\n metadata?: Record;\n};\n\nexport type DataTableDataSource<\n TData,\n TQuery = undefined,\n TCursor = string,\n TFacets = unknown,\n> = (\n request: DataTableDataSourceRequest,\n) =>\n | DataTableDataSourceResponse\n | Promise>;\n\nexport type DataTableDataSourceRetryOptions =\n | number\n | {\n /** Number of retries after the initial attempt. Defaults to 0. */\n attempts?: number;\n /** Delay before every retry. Defaults to 250ms. */\n delay?: number | ((context: { attempt: number; error: unknown }) => number);\n shouldRetry?: (context: { attempt: number; error: unknown }) => boolean;\n };\n\nexport type DataTableDataSourceCacheOptions =\n | false\n | number\n | {\n /** Freshness lifetime in milliseconds. Defaults to 30 seconds. */\n staleTime?: number;\n /** Maximum cached results per hook instance. Defaults to 50. */\n maxEntries?: number;\n };\n\nexport type UseDataTableDataSourceOptions<\n TData,\n TQuery = undefined,\n TCursor = string,\n TFacets = unknown,\n> = Omit<\n DataTableDataSourceQuery,\n \"cursor\" | \"limit\" | \"offset\" | \"query\"\n> & {\n cursor?: TCursor | null;\n query?: TQuery;\n source: DataTableDataSource;\n enabled?: boolean;\n /** Retain the prior result while a changed query is loading. Defaults to true. */\n keepPreviousData?: boolean;\n cache?: DataTableDataSourceCacheOptions;\n retry?: DataTableDataSourceRetryOptions;\n /** Override request/cache identity when `query` contains non-serializable values. */\n getRequestKey?: (query: DataTableDataSourceQuery) => string;\n initialData?: Array;\n onSuccess?: (\n response: DataTableDataSourceResponse,\n request: DataTableDataSourceRequest,\n ) => void;\n onError?: (\n error: unknown,\n request: DataTableDataSourceRequest,\n ) => void;\n onPageIndexChange?: (pageIndex: number) => void;\n onPageSizeChange?: (pageSize: number) => void;\n onSortingChange?: (sorting: SortingState) => void;\n onColumnFiltersChange?: (filters: ColumnFiltersState) => void;\n onGlobalFilterChange?: (globalFilter: string) => void;\n onGroupingChange?: (grouping: GroupingState) => void;\n};\n\nexport type DataTableDataSourceTableProps = Pick<\n DataTableProps,\n | \"columnFilters\"\n | \"data\"\n | \"hasNextPage\"\n | \"isLoading\"\n | \"manualFiltering\"\n | \"manualGrouping\"\n | \"manualPagination\"\n | \"manualSorting\"\n | \"onColumnFiltersChange\"\n | \"onGroupingChange\"\n | \"onPageIndexChange\"\n | \"onPageSizeChange\"\n | \"onSortingChange\"\n | \"pageIndex\"\n | \"pageSize\"\n | \"sorting\"\n | \"grouping\"\n | \"toolbarQueryValue\"\n | \"onToolbarQueryValueChange\"\n | \"totalRowCount\"\n>;\n\nexport type UseDataTableDataSourceResult = {\n aggregates: Record | undefined;\n data: Array;\n error: unknown;\n facets: TFacets | undefined;\n isError: boolean;\n /** True while the first result for the active query is loading. */\n isLoading: boolean;\n /** True while any request for the active query is in flight. */\n isFetching: boolean;\n isSuccess: boolean;\n nextCursor: TCursor | null | undefined;\n metadata: Record | undefined;\n rowIds: Array | undefined;\n rowCount: number | undefined;\n /** Starts a network request, bypassing a fresh cache entry. */\n refresh: () => Promise | undefined>;\n /** Removes one cached request, or every cached request when omitted. */\n invalidate: (requestKey?: string) => void;\n /** Spread these into `DataTable` for manual paging, sorting, and filtering. */\n tableProps: DataTableDataSourceTableProps;\n};\n\ntype CachedResponse = {\n response: DataTableDataSourceResponse;\n updatedAt: number;\n};\n\ntype ActiveRequest = {\n controller: AbortController;\n id: number;\n key: string;\n promise: Promise | undefined>;\n request: DataTableDataSourceRequest;\n};\n\ntype SourceState = {\n aggregates: Record | undefined;\n data: Array;\n error: unknown;\n facets: TFacets | undefined;\n isFetching: boolean;\n metadata: Record | undefined;\n nextCursor: TCursor | null | undefined;\n responseKey: string | null;\n rowCount: number | undefined;\n rowIds: Array | undefined;\n status: \"idle\" | \"loading\" | \"success\" | \"error\";\n};\n\nconst DEFAULT_STALE_TIME = 30_000;\nconst DEFAULT_MAX_CACHE_ENTRIES = 50;\n\n/**\n * Fetches controlled, server-side table data with cancellation, retry, stale\n * response protection, per-hook caching, and manual DataTable props.\n */\nexport function useDataTableDataSource<\n TData,\n TQuery = undefined,\n TCursor = string,\n TFacets = unknown,\n>(\n options: UseDataTableDataSourceOptions,\n): UseDataTableDataSourceResult {\n const {\n aggregations,\n columnFilters,\n cursor,\n enabled = true,\n expansionPath,\n getRequestKey,\n globalFilter,\n grouping,\n initialData = [],\n mode,\n pagination,\n query,\n sorting,\n } = options;\n const latestOptionsRef = React.useRef(options);\n React.useEffect(() => {\n latestOptionsRef.current = options;\n }, [options]);\n const cacheRef = React.useRef(\n new Map>(),\n );\n const activeRequestRef = React.useRef<\n ActiveRequest | undefined\n >(undefined);\n const requestIdRef = React.useRef(0);\n const mountedRef = React.useRef(true);\n const [state, setState] = React.useState>(\n () => ({\n aggregates: undefined,\n data: initialData,\n error: null,\n facets: undefined,\n isFetching: false,\n metadata: undefined,\n nextCursor: undefined,\n responseKey: null,\n rowCount: undefined,\n rowIds: undefined,\n status: initialData.length > 0 ? \"success\" : \"idle\",\n }),\n );\n\n const requestQuery = React.useMemo>(\n () => ({\n aggregations,\n columnFilters,\n cursor: cursor ?? null,\n expansionPath,\n globalFilter,\n grouping,\n limit: pagination.pageSize,\n mode,\n offset: pagination.pageIndex * pagination.pageSize,\n pagination: { ...pagination },\n query,\n sorting,\n }),\n [\n aggregations,\n columnFilters,\n cursor,\n expansionPath,\n globalFilter,\n grouping,\n mode,\n pagination,\n query,\n sorting,\n ],\n );\n const requestKey = getRequestKey\n ? getRequestKey(requestQuery)\n : stableSerialize(requestQuery);\n\n const runRequest = React.useCallback(\n (\n force: boolean,\n ): Promise | undefined> => {\n const currentOptions = latestOptionsRef.current;\n const currentQuery: DataTableDataSourceQuery = {\n aggregations: currentOptions.aggregations,\n columnFilters: currentOptions.columnFilters,\n cursor: currentOptions.cursor ?? null,\n expansionPath: currentOptions.expansionPath,\n globalFilter: currentOptions.globalFilter,\n grouping: currentOptions.grouping,\n limit: currentOptions.pagination.pageSize,\n mode: currentOptions.mode,\n offset:\n currentOptions.pagination.pageIndex * currentOptions.pagination.pageSize,\n pagination: { ...currentOptions.pagination },\n query: currentOptions.query,\n sorting: currentOptions.sorting,\n };\n const currentKey = currentOptions.getRequestKey\n ? currentOptions.getRequestKey(currentQuery)\n : stableSerialize(currentQuery);\n const activeRequest = activeRequestRef.current;\n\n if (activeRequest?.key === currentKey) {\n return activeRequest.promise;\n }\n if (activeRequest) {\n activeRequest.controller.abort();\n activeRequestRef.current = undefined;\n }\n\n const cacheSettings = resolveCacheSettings(currentOptions.cache);\n const cached = cacheRef.current.get(currentKey);\n if (!force && cached && cacheSettings && isCacheFresh(cached, cacheSettings)) {\n if (mountedRef.current) {\n setState({\n aggregates: cached.response.aggregates,\n data: cached.response.rows,\n error: null,\n facets: cached.response.facets,\n isFetching: false,\n metadata: cached.response.metadata,\n nextCursor: cached.response.nextCursor,\n responseKey: currentKey,\n rowCount: cached.response.rowCount,\n rowIds: cached.response.rowIds,\n status: \"success\",\n });\n }\n return Promise.resolve(cached.response);\n }\n\n const controller = new AbortController();\n const id = ++requestIdRef.current;\n const request: DataTableDataSourceRequest = {\n ...currentQuery,\n signal: controller.signal,\n };\n if (mountedRef.current) {\n setState((previous) => ({\n ...previous,\n data: currentOptions.keepPreviousData === false ? [] : previous.data,\n error: null,\n isFetching: true,\n status: previous.responseKey === currentKey ? previous.status : \"loading\",\n }));\n }\n\n const promise = fetchWithRetry(\n currentOptions.source,\n request,\n currentOptions.retry,\n )\n .then((response) => {\n if (activeRequestRef.current?.id !== id) {\n return response;\n }\n const resolvedCacheSettings = resolveCacheSettings(currentOptions.cache);\n if (resolvedCacheSettings) {\n cacheResponse(cacheRef.current, currentKey, response, resolvedCacheSettings);\n }\n if (mountedRef.current) {\n setState({\n aggregates: response.aggregates,\n data: response.rows,\n error: null,\n facets: response.facets,\n isFetching: false,\n metadata: response.metadata,\n nextCursor: response.nextCursor,\n responseKey: currentKey,\n rowCount: response.rowCount,\n rowIds: response.rowIds,\n status: \"success\",\n });\n }\n currentOptions.onSuccess?.(response, request);\n return response;\n })\n .catch((error: unknown) => {\n if (isAbort(error, controller.signal) || activeRequestRef.current?.id !== id) {\n return undefined;\n }\n if (mountedRef.current) {\n setState((previous) => ({\n ...previous,\n error,\n isFetching: false,\n status: \"error\",\n }));\n }\n currentOptions.onError?.(error, request);\n return undefined;\n })\n .finally(() => {\n if (activeRequestRef.current?.id === id) {\n activeRequestRef.current = undefined;\n }\n });\n\n activeRequestRef.current = { controller, id, key: currentKey, promise, request };\n return promise;\n },\n [],\n );\n\n React.useEffect(() => {\n mountedRef.current = true;\n if (!enabled) {\n activeRequestRef.current?.controller.abort();\n activeRequestRef.current = undefined;\n return;\n }\n void runRequest(false);\n }, [enabled, requestKey, runRequest]);\n\n React.useEffect(\n () => () => {\n mountedRef.current = false;\n activeRequestRef.current?.controller.abort();\n activeRequestRef.current = undefined;\n },\n [],\n );\n\n const refresh = React.useCallback(() => runRequest(true), [runRequest]);\n const invalidate = React.useCallback((key?: string) => {\n if (key === undefined) {\n cacheRef.current.clear();\n return;\n }\n cacheRef.current.delete(key);\n }, []);\n\n const hasNextPage =\n state.nextCursor !== undefined\n ? state.nextCursor !== null\n : state.rowCount === undefined\n ? undefined\n : pagination.pageIndex + 1 < Math.ceil(state.rowCount / pagination.pageSize);\n const tableProps = React.useMemo>(\n () => ({\n columnFilters,\n data: state.data,\n hasNextPage,\n isLoading: enabled && state.status === \"loading\",\n manualFiltering: true,\n manualGrouping: true,\n manualPagination: true,\n manualSorting: true,\n onColumnFiltersChange: options.onColumnFiltersChange,\n onGroupingChange: options.onGroupingChange,\n onPageIndexChange: options.onPageIndexChange,\n onPageSizeChange: options.onPageSizeChange,\n onSortingChange: options.onSortingChange,\n onToolbarQueryValueChange: options.onGlobalFilterChange,\n pageIndex: pagination.pageIndex,\n pageSize: pagination.pageSize,\n sorting,\n grouping,\n toolbarQueryValue: globalFilter,\n totalRowCount: state.rowCount,\n }),\n [\n columnFilters,\n enabled,\n globalFilter,\n grouping,\n hasNextPage,\n options.onColumnFiltersChange,\n options.onGlobalFilterChange,\n options.onGroupingChange,\n options.onPageIndexChange,\n options.onPageSizeChange,\n options.onSortingChange,\n pagination.pageIndex,\n pagination.pageSize,\n sorting,\n state.data,\n state.rowCount,\n state.status,\n ],\n );\n\n return {\n aggregates: state.aggregates,\n data: state.data,\n error: state.error,\n facets: state.facets,\n invalidate,\n isError: state.status === \"error\",\n isFetching: enabled && state.isFetching,\n isLoading: enabled && state.status === \"loading\",\n isSuccess: state.status === \"success\",\n metadata: state.metadata,\n nextCursor: state.nextCursor,\n refresh,\n rowCount: state.rowCount,\n rowIds: state.rowIds,\n tableProps,\n };\n}\n\nfunction resolveCacheSettings(\n cache: DataTableDataSourceCacheOptions | undefined,\n): { staleTime: number; maxEntries: number } | undefined {\n if (cache === false) {\n return undefined;\n }\n if (typeof cache === \"number\") {\n return { maxEntries: DEFAULT_MAX_CACHE_ENTRIES, staleTime: Math.max(0, cache) };\n }\n return {\n maxEntries: Math.max(1, cache?.maxEntries ?? DEFAULT_MAX_CACHE_ENTRIES),\n staleTime: Math.max(0, cache?.staleTime ?? DEFAULT_STALE_TIME),\n };\n}\n\nfunction isCacheFresh(\n cached: CachedResponse,\n settings: { staleTime: number },\n) {\n return Date.now() - cached.updatedAt <= settings.staleTime;\n}\n\nfunction cacheResponse(\n cache: Map>,\n key: string,\n response: DataTableDataSourceResponse,\n settings: { maxEntries: number },\n) {\n cache.delete(key);\n cache.set(key, { response, updatedAt: Date.now() });\n while (cache.size > settings.maxEntries) {\n const oldestKey = cache.keys().next().value;\n if (oldestKey === undefined) {\n return;\n }\n cache.delete(oldestKey);\n }\n}\n\nasync function fetchWithRetry(\n source: DataTableDataSource,\n request: DataTableDataSourceRequest,\n retry: DataTableDataSourceRetryOptions | undefined,\n) {\n const settings = resolveRetrySettings(retry);\n for (let attempt = 0; ; attempt += 1) {\n try {\n return await source(request);\n } catch (error) {\n if (\n isAbort(error, request.signal) ||\n attempt >= settings.attempts ||\n !settings.shouldRetry({ attempt: attempt + 1, error })\n ) {\n throw error;\n }\n await waitForRetry(settings.delay({ attempt: attempt + 1, error }), request.signal);\n }\n }\n}\n\nfunction resolveRetrySettings(retry: DataTableDataSourceRetryOptions | undefined) {\n if (typeof retry === \"number\") {\n return {\n attempts: Math.max(0, retry),\n delay: () => 250,\n shouldRetry: () => true,\n };\n }\n return {\n attempts: Math.max(0, retry?.attempts ?? 0),\n delay: (context: { attempt: number; error: unknown }) => {\n const value = typeof retry?.delay === \"function\" ? retry.delay(context) : (retry?.delay ?? 250);\n return Math.max(0, value);\n },\n shouldRetry: retry?.shouldRetry ?? (() => true),\n };\n}\n\nfunction waitForRetry(delay: number, signal: AbortSignal) {\n return new Promise((resolve, reject) => {\n const timeout = globalThis.setTimeout(() => {\n signal.removeEventListener(\"abort\", onAbort);\n resolve();\n }, delay);\n const onAbort = () => {\n globalThis.clearTimeout(timeout);\n reject(new DOMException(\"Request aborted\", \"AbortError\"));\n };\n signal.addEventListener(\"abort\", onAbort, { once: true });\n });\n}\n\nfunction isAbort(error: unknown, signal: AbortSignal) {\n return (\n signal.aborted ||\n (error instanceof DOMException && error.name === \"AbortError\") ||\n (typeof error === \"object\" &&\n error !== null &&\n \"name\" in error &&\n error.name === \"AbortError\")\n );\n}\n\nfunction stableSerialize(value: unknown): string {\n const seen = new WeakSet();\n return JSON.stringify(value, (_key, nested: unknown) => {\n if (typeof nested === \"bigint\") {\n return `bigint:${nested.toString()}`;\n }\n if (nested instanceof Date) {\n return `date:${nested.toISOString()}`;\n }\n if (typeof nested === \"function\" || typeof nested === \"symbol\") {\n return String(nested);\n }\n if (typeof nested === \"object\" && nested !== null && !Array.isArray(nested)) {\n if (seen.has(nested)) {\n return \"[Circular]\";\n }\n seen.add(nested);\n return Object.fromEntries(\n Object.entries(nested).sort(([left], [right]) => left.localeCompare(right)),\n );\n }\n return nested;\n });\n}\n"]} \ No newline at end of file diff --git a/dist/data-table-auto-page-size-EICVZJQ5.js b/dist/data-table-auto-page-size-EICVZJQ5.js new file mode 100644 index 0000000..7e707f6 --- /dev/null +++ b/dist/data-table-auto-page-size-EICVZJQ5.js @@ -0,0 +1,2 @@ +import*as o from'react';function R({config:a,currentPageSize:r,enabled:s,onPageSizeChange:c,viewportElement:e,viewportHeight:d}){let u=o.useRef(null),i=o.useRef(null);o.useEffect(()=>{if(!s||!e||d<=0){u.current=null;return}let t=null,p=()=>{t=null;let S=e.querySelector('[data-dtp-slot="data-table-row"]'),w=Math.max(1,S?.getBoundingClientRect().height||a?.estimateRowHeight||48),g=Math.max(1,Math.floor(a?.minRows??1)),H=Math.max(g,Math.floor(a?.maxRows??100)),b=e.querySelector("table"),z=b?Array.from(b.querySelectorAll("thead, tfoot")).reduce((A,x)=>A+x.getBoundingClientRect().height,0):0,M=Math.max(0,e.clientHeight-z),n=Math.min(H,Math.max(g,Math.floor(M/w))),h=i.current;if(h?.pageSize===r&&e.clientHeight>h.viewportHeight&&n>r){i.current=null;return}n===r||n===u.current||(u.current=n,i.current={pageSize:n,viewportHeight:e.clientHeight},c(n));},f=()=>{t===null&&(t=window.requestAnimationFrame(p));};if(f(),typeof ResizeObserver>"u")return ()=>{t!==null&&window.cancelAnimationFrame(t);};let l=new ResizeObserver(f);l.observe(e);let m=e.querySelector('[data-dtp-slot="data-table-row"]');return m&&l.observe(m),()=>{t!==null&&window.cancelAnimationFrame(t),l.disconnect();}},[a,r,s,c,e,d]);}function y(a){return R(a),null}export{y as default};//# sourceMappingURL=data-table-auto-page-size-EICVZJQ5.js.map +//# sourceMappingURL=data-table-auto-page-size-EICVZJQ5.js.map \ No newline at end of file diff --git a/dist/data-table-auto-page-size-EICVZJQ5.js.map b/dist/data-table-auto-page-size-EICVZJQ5.js.map new file mode 100644 index 0000000..f645410 --- /dev/null +++ b/dist/data-table-auto-page-size-EICVZJQ5.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/core/data-table/use-data-table-auto-page-size.ts","../src/core/data-table/data-table-auto-page-size.tsx"],"names":["useDataTableAutoPageSize","config","currentPageSize","enabled","onPageSizeChange","viewportElement","viewportHeight","lastRequestedPageSize","feedbackGuard","frameId","update","row","rowHeight","minRows","maxRows","table","occupiedHeight","total","element","bodyHeight","nextPageSize","previousRequest","scheduleUpdate","observer","DataTableAutoPageSize","props"],"mappings":"wBAGO,SAASA,CAAAA,CAAyB,CACvC,MAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,CACF,CAAA,CAOG,CACD,IAAMC,CAAAA,CAA8B,CAAA,CAAA,MAAA,CAAsB,IAAI,CAAA,CACxDC,CAAAA,CAAsB,CAAA,CAAA,MAAA,CAGlB,IAAI,CAAA,CAER,YAAU,IAAM,CACpB,GAAI,CAACL,CAAAA,EAAW,CAACE,CAAAA,EAAmBC,CAAAA,EAAkB,CAAA,CAAG,CACvDC,CAAAA,CAAsB,OAAA,CAAU,IAAA,CAChC,MACF,CAEA,IAAIE,CAAAA,CAAyB,IAAA,CACvBC,CAAAA,CAAS,IAAM,CACnBD,CAAAA,CAAU,IAAA,CACV,IAAME,CAAAA,CAAMN,CAAAA,CAAgB,aAAA,CAC1B,kCACF,CAAA,CACMO,CAAAA,CAAY,IAAA,CAAK,GAAA,CACrB,EACAD,CAAAA,EAAK,qBAAA,EAAsB,CAAE,MAAA,EAAUV,CAAAA,EAAQ,iBAAA,EAAqB,EACtE,CAAA,CACMY,CAAAA,CAAU,IAAA,CAAK,GAAA,CAAI,CAAA,CAAG,IAAA,CAAK,KAAA,CAAMZ,CAAAA,EAAQ,OAAA,EAAW,CAAC,CAAC,CAAA,CACtDa,CAAAA,CAAU,IAAA,CAAK,GAAA,CAAID,CAAAA,CAAS,IAAA,CAAK,KAAA,CAAMZ,CAAAA,EAAQ,OAAA,EAAW,GAAG,CAAC,CAAA,CAC9Dc,CAAAA,CAAQV,CAAAA,CAAgB,cAAc,OAAO,CAAA,CAC7CW,CAAAA,CAAiBD,CAAAA,CACnB,KAAA,CAAM,IAAA,CAAKA,CAAAA,CAAM,gBAAA,CAAiB,cAAc,CAAC,CAAA,CAAE,MAAA,CACjD,CAACE,CAAAA,CAAOC,CAAAA,GAAYD,CAAAA,CAAQC,CAAAA,CAAQ,qBAAA,EAAsB,CAAE,MAAA,CAC5D,CACF,CAAA,CACA,CAAA,CACEC,CAAAA,CAAa,IAAA,CAAK,GAAA,CAAI,CAAA,CAAGd,CAAAA,CAAgB,YAAA,CAAeW,CAAc,CAAA,CACtEI,CAAAA,CAAe,KAAK,GAAA,CACxBN,CAAAA,CACA,IAAA,CAAK,GAAA,CAAID,CAAAA,CAAS,IAAA,CAAK,KAAA,CAAMM,CAAAA,CAAaP,CAAS,CAAC,CACtD,CAAA,CAEMS,CAAAA,CAAkBb,CAAAA,CAAc,OAAA,CACtC,GACEa,CAAAA,EAAiB,QAAA,GAAanB,CAAAA,EAC9BG,CAAAA,CAAgB,YAAA,CAAegB,CAAAA,CAAgB,cAAA,EAC/CD,CAAAA,CAAelB,CAAAA,CACf,CAGAM,CAAAA,CAAc,OAAA,CAAU,IAAA,CACxB,MACF,CAGEY,CAAAA,GAAiBlB,GACjBkB,CAAAA,GAAiBb,CAAAA,CAAsB,OAAA,GAIzCA,CAAAA,CAAsB,OAAA,CAAUa,CAAAA,CAChCZ,CAAAA,CAAc,OAAA,CAAU,CACtB,QAAA,CAAUY,CAAAA,CACV,cAAA,CAAgBf,CAAAA,CAAgB,YAClC,CAAA,CACAD,CAAAA,CAAiBgB,CAAY,CAAA,EAC/B,CAAA,CACME,CAAAA,CAAiB,IAAM,CACvBb,CAAAA,GAAY,IAAA,GACdA,CAAAA,CAAU,MAAA,CAAO,qBAAA,CAAsBC,CAAM,CAAA,EAEjD,CAAA,CAGA,GADAY,CAAAA,GACI,OAAO,cAAA,CAAmB,GAAA,CAC5B,OAAO,IAAM,CACPb,CAAAA,GAAY,IAAA,EAAM,MAAA,CAAO,oBAAA,CAAqBA,CAAO,EAC3D,CAAA,CAGF,IAAMc,CAAAA,CAAW,IAAI,cAAA,CAAeD,CAAc,CAAA,CAClDC,CAAAA,CAAS,OAAA,CAAQlB,CAAe,CAAA,CAChC,IAAMM,CAAAA,CAAMN,CAAAA,CAAgB,aAAA,CAC1B,kCACF,CAAA,CACA,OAAIM,CAAAA,EAAKY,CAAAA,CAAS,QAAQZ,CAAG,CAAA,CAEtB,IAAM,CACPF,CAAAA,GAAY,IAAA,EAAM,MAAA,CAAO,oBAAA,CAAqBA,CAAO,CAAA,CACzDc,CAAAA,CAAS,UAAA,GACX,CACF,CAAA,CAAG,CACDtB,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACAC,CACF,CAAC,EACH,CC9Ge,SAARkB,CAAAA,CACLC,CAAAA,CACA,CACA,OAAAzB,CAAAA,CAAyByB,CAAK,EACvB,IACT","file":"data-table-auto-page-size-EICVZJQ5.js","sourcesContent":["import * as React from \"react\";\nimport type { DataTableAutoPageSizeConfig } from \"../types\";\n\nexport function useDataTableAutoPageSize({\n config,\n currentPageSize,\n enabled,\n onPageSizeChange,\n viewportElement,\n viewportHeight,\n}: {\n config: DataTableAutoPageSizeConfig | undefined;\n currentPageSize: number;\n enabled: boolean;\n onPageSizeChange: (pageSize: number) => void;\n viewportElement: HTMLElement | null;\n viewportHeight: number;\n}) {\n const lastRequestedPageSize = React.useRef(null);\n const feedbackGuard = React.useRef<{\n pageSize: number;\n viewportHeight: number;\n } | null>(null);\n\n React.useEffect(() => {\n if (!enabled || !viewportElement || viewportHeight <= 0) {\n lastRequestedPageSize.current = null;\n return;\n }\n\n let frameId: number | null = null;\n const update = () => {\n frameId = null;\n const row = viewportElement.querySelector(\n '[data-dtp-slot=\"data-table-row\"]',\n );\n const rowHeight = Math.max(\n 1,\n row?.getBoundingClientRect().height || config?.estimateRowHeight || 48,\n );\n const minRows = Math.max(1, Math.floor(config?.minRows ?? 1));\n const maxRows = Math.max(minRows, Math.floor(config?.maxRows ?? 100));\n const table = viewportElement.querySelector(\"table\");\n const occupiedHeight = table\n ? Array.from(table.querySelectorAll(\"thead, tfoot\")).reduce(\n (total, element) => total + element.getBoundingClientRect().height,\n 0,\n )\n : 0;\n const bodyHeight = Math.max(0, viewportElement.clientHeight - occupiedHeight);\n const nextPageSize = Math.min(\n maxRows,\n Math.max(minRows, Math.floor(bodyHeight / rowHeight)),\n );\n\n const previousRequest = feedbackGuard.current;\n if (\n previousRequest?.pageSize === currentPageSize &&\n viewportElement.clientHeight > previousRequest.viewportHeight &&\n nextPageSize > currentPageSize\n ) {\n // A content-sized viewport can grow in response to the rows we just\n // added. Do not recursively turn that growth into another request.\n feedbackGuard.current = null;\n return;\n }\n\n if (\n nextPageSize === currentPageSize ||\n nextPageSize === lastRequestedPageSize.current\n ) {\n return;\n }\n lastRequestedPageSize.current = nextPageSize;\n feedbackGuard.current = {\n pageSize: nextPageSize,\n viewportHeight: viewportElement.clientHeight,\n };\n onPageSizeChange(nextPageSize);\n };\n const scheduleUpdate = () => {\n if (frameId === null) {\n frameId = window.requestAnimationFrame(update);\n }\n };\n\n scheduleUpdate();\n if (typeof ResizeObserver === \"undefined\") {\n return () => {\n if (frameId !== null) window.cancelAnimationFrame(frameId);\n };\n }\n\n const observer = new ResizeObserver(scheduleUpdate);\n observer.observe(viewportElement);\n const row = viewportElement.querySelector(\n '[data-dtp-slot=\"data-table-row\"]',\n );\n if (row) observer.observe(row);\n\n return () => {\n if (frameId !== null) window.cancelAnimationFrame(frameId);\n observer.disconnect();\n };\n }, [\n config,\n currentPageSize,\n enabled,\n onPageSizeChange,\n viewportElement,\n viewportHeight,\n ]);\n}\n","import { useDataTableAutoPageSize } from \"./use-data-table-auto-page-size\";\n\nexport default function DataTableAutoPageSize(\n props: Parameters[0],\n) {\n useDataTableAutoPageSize(props);\n return null;\n}\n"]} \ No newline at end of file diff --git a/dist/data-table-clipboard-SFXQFZS3.js b/dist/data-table-clipboard-SFXQFZS3.js new file mode 100644 index 0000000..44256d4 --- /dev/null +++ b/dist/data-table-clipboard-SFXQFZS3.js @@ -0,0 +1,6 @@ +import {w,p,B,l}from'./chunk-4P45F2OY.js';import'./chunk-XTVBESM5.js';async function I({clipboard:i,cellSelection:c,table:t}){if(i===false)return;let e=i===true?{}:i,n=e.scope??"page",r=e.columns?new Set(e.columns):void 0,l=t.getVisibleLeafColumns(),s=l.filter(o=>!w(o.id)&&o.id!=="__spacer__"&&(!r||r.has(o.id))),a=n==="cellSelection"?y(t,l,c):void 0,m=a?.columns??s,C=n==="cellSelection"?a?.rows??[]:p(t,n),d=[];(e.includeHeaders??n!=="cellSelection")&&d.push(m.map(o=>typeof o.columnDef.header=="string"?o.columnDef.header:B(o.id)));for(let o of C)d.push(m.map(u=>{let b=o.getValue(u.id);return e.getCellValue?e.getCellValue({columnId:u.id,row:o.original,rowId:o.id,value:b}):b}));let T=e.delimiter??" ",f=d.map(o=>o.map(u=>D(u,T,e.escapeFormulaValues??true)).join(T)).join(` +`);return e.onCopy?await e.onCopy({rows:C.map(o=>o.original),scope:n,text:f}):typeof navigator<"u"&&typeof navigator.clipboard?.writeText=="function"&&await navigator.clipboard.writeText(f),f}function y(i,c,t){if(!t)return;let e=i.getRowModel().flatRows,n=e.findIndex(a=>a.id===t.anchor.rowId),r=e.findIndex(a=>a.id===t.focus.rowId),l=c.findIndex(a=>a.id===t.anchor.columnId),s=c.findIndex(a=>a.id===t.focus.columnId);if(!(n<0||r<0||l<0||s<0))return {rows:e.slice(Math.min(n,r),Math.max(n,r)+1),columns:c.slice(Math.min(l,s),Math.max(l,s)+1).filter(a=>!w(a.id)&&a.id!=="__spacer__")}}function S(i,c=" "){let t=[],e=[],n="",r=false;for(let l=0;l1||e[0]||t.length===0)&&t.push(e),t}function D(i,c,t){let e=l(i);return t&&typeof i=="string"&&/^[\t\r ]*[=+\-@]/.test(i)&&(e=`'${e}`),e.includes(c)||e.includes('"')||e.includes(` +`)||e.includes("\r")?`"${e.replace(/"/g,'""')}"`:e}export{I as copyDataTableToClipboard,S as parseDataTableClipboardText};//# sourceMappingURL=data-table-clipboard-SFXQFZS3.js.map +//# sourceMappingURL=data-table-clipboard-SFXQFZS3.js.map \ No newline at end of file diff --git a/dist/data-table-clipboard-SFXQFZS3.js.map b/dist/data-table-clipboard-SFXQFZS3.js.map new file mode 100644 index 0000000..3c325e1 --- /dev/null +++ b/dist/data-table-clipboard-SFXQFZS3.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/core/data-table/data-table-clipboard.ts"],"names":["copyDataTableToClipboard","clipboard","cellSelection","table","options","scope","requestedColumnIds","allVisibleColumns","visibleColumns","column","isUtilityColumnId","selectedRange","getDataTableCellSelectionRange","columns","rows","getDataTableExportRows","values","startCase","row","value","delimiter","text","escapeDelimitedCell","selection","anchorRow","focusRow","anchorColumn","focusColumn","parseDataTableClipboardText","quoted","index","character","nextCharacter","escapeFormulaValues","normalizeFilterValue"],"mappings":"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","file":"data-table-clipboard-SFXQFZS3.js","sourcesContent":["import type { Column, Table as TanStackTable } from \"@tanstack/react-table\";\nimport type {\n DataTableCellSelection,\n DataTableClipboardCopyOptions,\n} from \"../types\";\nimport {\n getDataTableExportRows,\n isUtilityColumnId,\n normalizeFilterValue,\n startCase,\n} from \"./data-table-utils\";\n\nexport async function copyDataTableToClipboard({\n clipboard,\n cellSelection,\n table,\n}: {\n clipboard: boolean | DataTableClipboardCopyOptions;\n cellSelection?: DataTableCellSelection | null;\n table: TanStackTable;\n}) {\n if (clipboard === false) return undefined;\n\n const options: DataTableClipboardCopyOptions =\n clipboard === true ? {} : clipboard;\n const scope = options.scope ?? \"page\";\n const requestedColumnIds = options.columns\n ? new Set(options.columns)\n : undefined;\n const allVisibleColumns = table.getVisibleLeafColumns();\n const visibleColumns = allVisibleColumns.filter(\n (column) =>\n !isUtilityColumnId(column.id) &&\n column.id !== \"__spacer__\" &&\n (!requestedColumnIds || requestedColumnIds.has(column.id)),\n );\n const selectedRange =\n scope === \"cellSelection\"\n ? getDataTableCellSelectionRange(table, allVisibleColumns, cellSelection)\n : undefined;\n const columns = selectedRange?.columns ?? visibleColumns;\n const rows =\n scope === \"cellSelection\"\n ? (selectedRange?.rows ?? [])\n : getDataTableExportRows(table, scope);\n const values: Array> = [];\n\n if (options.includeHeaders ?? scope !== \"cellSelection\") {\n values.push(\n columns.map((column) =>\n typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : startCase(column.id),\n ),\n );\n }\n\n for (const row of rows) {\n values.push(\n columns.map((column) => {\n const value = row.getValue(column.id);\n return options.getCellValue\n ? options.getCellValue({\n columnId: column.id,\n row: row.original,\n rowId: row.id,\n value,\n })\n : value;\n }),\n );\n }\n\n const delimiter = options.delimiter ?? \"\\t\";\n const text = values\n .map((row) =>\n row\n .map((value) =>\n escapeDelimitedCell(\n value,\n delimiter,\n options.escapeFormulaValues ?? true,\n ),\n )\n .join(delimiter),\n )\n .join(\"\\n\");\n\n if (options.onCopy) {\n await options.onCopy({\n rows: rows.map((row) => row.original),\n scope,\n text,\n });\n } else if (\n typeof navigator !== \"undefined\" &&\n typeof navigator.clipboard?.writeText === \"function\"\n ) {\n await navigator.clipboard.writeText(text);\n }\n\n return text;\n}\n\nfunction getDataTableCellSelectionRange(\n table: TanStackTable,\n columns: Array>,\n selection: DataTableCellSelection | null | undefined,\n) {\n if (!selection) return undefined;\n const rows = table.getRowModel().flatRows;\n const anchorRow = rows.findIndex((row) => row.id === selection.anchor.rowId);\n const focusRow = rows.findIndex((row) => row.id === selection.focus.rowId);\n const anchorColumn = columns.findIndex(\n (column) => column.id === selection.anchor.columnId,\n );\n const focusColumn = columns.findIndex(\n (column) => column.id === selection.focus.columnId,\n );\n if (anchorRow < 0 || focusRow < 0 || anchorColumn < 0 || focusColumn < 0) {\n return undefined;\n }\n return {\n rows: rows.slice(\n Math.min(anchorRow, focusRow),\n Math.max(anchorRow, focusRow) + 1,\n ),\n columns: columns\n .slice(\n Math.min(anchorColumn, focusColumn),\n Math.max(anchorColumn, focusColumn) + 1,\n )\n .filter(\n (column) =>\n !isUtilityColumnId(column.id) && column.id !== \"__spacer__\",\n ),\n };\n}\n\nexport function parseDataTableClipboardText(\n text: string,\n delimiter: \"\\t\" | \",\" = \"\\t\",\n) {\n const rows: Array> = [];\n let row: Array = [];\n let value = \"\";\n let quoted = false;\n\n for (let index = 0; index < text.length; index += 1) {\n const character = text[index];\n const nextCharacter = text[index + 1];\n if (character === '\"') {\n if (quoted && nextCharacter === '\"') {\n value += '\"';\n index += 1;\n } else {\n quoted = !quoted;\n }\n continue;\n }\n if (!quoted && character === delimiter) {\n row.push(value);\n value = \"\";\n continue;\n }\n if (!quoted && (character === \"\\n\" || character === \"\\r\")) {\n if (character === \"\\r\" && nextCharacter === \"\\n\") index += 1;\n row.push(value);\n rows.push(row);\n row = [];\n value = \"\";\n continue;\n }\n value += character;\n }\n\n row.push(value);\n if (row.length > 1 || row[0] || rows.length === 0) rows.push(row);\n return rows;\n}\n\nfunction escapeDelimitedCell(\n value: unknown,\n delimiter: string,\n escapeFormulaValues: boolean,\n) {\n let text = normalizeFilterValue(value);\n if (\n escapeFormulaValues &&\n typeof value === \"string\" &&\n /^[\\t\\r ]*[=+\\-@]/.test(value)\n ) {\n text = `'${text}`;\n }\n if (\n text.includes(delimiter) ||\n text.includes('\"') ||\n text.includes(\"\\n\") ||\n text.includes(\"\\r\")\n ) {\n return `\"${text.replace(/\"/g, '\"\"')}\"`;\n }\n return text;\n}\n"]} \ No newline at end of file diff --git a/dist/data-table-state-overlay-AQ7VU6EM.js b/dist/data-table-state-overlay-AQ7VU6EM.js new file mode 100644 index 0000000..390e241 --- /dev/null +++ b/dist/data-table-state-overlay-AQ7VU6EM.js @@ -0,0 +1,2 @@ +import'react';import {jsx,jsxs}from'react/jsx-runtime';function c(r){let{Button:l}=r;return function({labels:a,overlay:t,rows:o,toolbarQueryValue:n}){if(t.error==null)return null;let i={rows:o,toolbarQueryValue:n,error:t.error,isRetrying:t.isRetrying??false,retry:t.onRetry};return jsx("div",{"data-dtp-slot":"data-table-state-overlay",className:"absolute inset-0 z-40 flex items-center justify-center bg-background/85 p-4 backdrop-blur-sm",role:"alert",children:t.renderError?t.renderError(i):jsxs("div",{className:"flex max-w-md flex-col items-center gap-3 text-center",children:[jsx("div",{className:"text-base font-semibold",children:a.errorTitle}),jsx("p",{className:"text-sm text-muted-foreground",children:a.errorDescription}),t.onRetry?jsx(l,{type:"button",disabled:t.isRetrying,onClick:()=>{t.onRetry?.();},children:a.retry}):null]})})}}export{c as createDataTableStateOverlay};//# sourceMappingURL=data-table-state-overlay-AQ7VU6EM.js.map +//# sourceMappingURL=data-table-state-overlay-AQ7VU6EM.js.map \ No newline at end of file diff --git a/dist/data-table-state-overlay-AQ7VU6EM.js.map b/dist/data-table-state-overlay-AQ7VU6EM.js.map new file mode 100644 index 0000000..516761f --- /dev/null +++ b/dist/data-table-state-overlay-AQ7VU6EM.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/core/data-table/data-table-state-overlay.tsx"],"names":["createDataTableStateOverlay","ui","Button","labels","overlay","rows","toolbarQueryValue","context","jsx","jsxs"],"mappings":"uDAQO,SAASA,CAAAA,CAA4BC,CAAAA,CAAoB,CAC9D,GAAM,CAAE,MAAA,CAAAC,CAAO,CAAA,CAAID,CAAAA,CAEnB,OAAO,SAAsC,CAC3C,MAAA,CAAAE,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,IAAA,CAAAC,CAAAA,CACA,iBAAA,CAAAC,CACF,CAAA,CAKG,CACD,GAAIF,CAAAA,CAAQ,KAAA,EAAS,IAAA,CACnB,OAAO,IAAA,CAET,IAAMG,CAAAA,CAA+C,CACnD,IAAA,CAAAF,CAAAA,CACA,iBAAA,CAAAC,EACA,KAAA,CAAOF,CAAAA,CAAQ,KAAA,CACf,UAAA,CAAYA,CAAAA,CAAQ,UAAA,EAAc,KAAA,CAClC,KAAA,CAAOA,CAAAA,CAAQ,OACjB,CAAA,CAEA,OACEI,GAAAA,CAAC,KAAA,CAAA,CACC,gBAAc,0BAAA,CACd,SAAA,CAAU,8FAAA,CACV,IAAA,CAAK,OAAA,CAEJ,QAAA,CAAAJ,CAAAA,CAAQ,WAAA,CACPA,CAAAA,CAAQ,WAAA,CAAYG,CAAO,CAAA,CAE3BE,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,uDAAA,CACb,QAAA,CAAA,CAAAD,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yBAAA,CAA2B,QAAA,CAAAL,CAAAA,CAAO,UAAA,CAAW,CAAA,CAC5DK,GAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,+BAAA,CACV,SAAAL,CAAAA,CAAO,gBAAA,CACV,CAAA,CACCC,CAAAA,CAAQ,OAAA,CACPI,GAAAA,CAACN,CAAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,QAAA,CAAUE,CAAAA,CAAQ,UAAA,CAClB,OAAA,CAAS,IAAM,CACRA,CAAAA,CAAQ,OAAA,KACf,CAAA,CAEC,QAAA,CAAAD,CAAAA,CAAO,KAAA,CACV,CAAA,CACE,IAAA,CAAA,CACN,CAAA,CAEJ,CAEJ,CACF","file":"data-table-state-overlay-AQ7VU6EM.js","sourcesContent":["import * as React from \"react\";\nimport type {\n DataTableLabels,\n DataTableStateOverlay,\n DataTableStateOverlayContext,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\n\nexport function createDataTableStateOverlay(ui: DataTableUiKit) {\n const { Button } = ui;\n\n return function DataTableStateOverlay({\n labels,\n overlay,\n rows,\n toolbarQueryValue,\n }: {\n labels: DataTableLabels;\n overlay: DataTableStateOverlay;\n rows: Array;\n toolbarQueryValue: string;\n }) {\n if (overlay.error == null) {\n return null;\n }\n const context: DataTableStateOverlayContext = {\n rows,\n toolbarQueryValue,\n error: overlay.error,\n isRetrying: overlay.isRetrying ?? false,\n retry: overlay.onRetry,\n };\n\n return (\n \n {overlay.renderError ? (\n overlay.renderError(context)\n ) : (\n
    \n
    {labels.errorTitle}
    \n

    \n {labels.errorDescription}\n

    \n {overlay.onRetry ? (\n {\n void overlay.onRetry?.();\n }}\n >\n {labels.retry}\n \n ) : null}\n
    \n )}\n \n );\n };\n}\n"]} \ No newline at end of file diff --git a/dist/data-table-toolbar-operations-IDEGCKBK.js b/dist/data-table-toolbar-operations-IDEGCKBK.js new file mode 100644 index 0000000..7f28e3c --- /dev/null +++ b/dist/data-table-toolbar-operations-IDEGCKBK.js @@ -0,0 +1,2 @@ +import {s}from'./chunk-CVR2ZXHQ.js';import*as d from'react';import {jsxs,jsx,Fragment}from'react/jsx-runtime';function ne({placement:l,ui:u,labels:t,enableColumnChooser:h,enableFilterChips:O,enableResetLayout:y,enableSavedViews:M,enableColumnPinning:B,columnVisibilityOptions:H,onColumnVisibilityChange:U,onColumnPinningChange:c,reorderColumn:_,table:v,onResetColumnLayout:$,savedViews:z,onCreateSavedView:P,onApplySavedView:j,onRenameSavedView:K,onDeleteSavedView:W,toolbarQueryValue:D,onToolbarQueryValueChange:V,activeColumnFilters:T,onColumnFilterChange:q,onClearColumnFilters:Q}){let[k,J]=d.useState(""),[f,E]=d.useState(""),[X,L]=d.useState(null),[w,R]=d.useState(""),{Button:b,DropdownMenuCheckboxItem:Y,DropdownMenuGroup:x,DropdownMenuItem:r,DropdownMenuLabel:A,DropdownMenuSeparator:g,InputGroup:C,InputGroupAddon:Z,InputGroupInput:S}=u,m=v.getAllLeafColumns().map(e=>e.id).filter(e=>!e.startsWith("__")),ee=H.filter(e=>e.label.toLocaleLowerCase().includes(k.toLocaleLowerCase())),I=T.length+(D?1:0);if(l==="chips")return !O||!I?null:jsxs("div",{"data-dtp-slot":"data-table-active-filters","aria-label":`${t.filters}: ${I}`,className:"flex min-w-0 flex-wrap items-center gap-2",children:[jsxs("span",{className:"text-sm opacity-70",children:[t.filters," (",I,")"]}),D?jsxs(b,{type:"button",variant:"secondary",size:"sm","aria-label":t.clearSearch,onClick:()=>V(""),children:[D," ",jsx("span",{"aria-hidden":"true",children:"\xD7"})]}):null,T.map(e=>jsxs(b,{type:"button",variant:"secondary",size:"sm","aria-label":`${t.clearFilters}: ${e.label}`,onClick:()=>q(e.id,""),children:[e.label,": ",te(e.value)," ",jsx("span",{"aria-hidden":"true",children:"\xD7"})]},e.id)),jsx(b,{type:"button",variant:"ghost",size:"sm",onClick:()=>{V(""),Q();},children:t.clearFilters})]});if(!h&&!y&&!M)return null;let G=e=>v.setColumnVisibility(a=>{let o={...a};for(let p of v.getAllLeafColumns())!p.id.startsWith("__")&&p.getCanHide()&&(o[p.id]=e);return o}),F=(e,a)=>{let o=m.indexOf(e),p=m[o+a];o>=0&&p&&_(e,p);};return jsxs(Fragment,{children:[h?jsxs(Fragment,{children:[jsx(g,{}),jsx(A,{children:t.columns}),jsx("div",{className:"px-2 pb-2",children:jsxs(C,{children:[jsx(S,{value:k,onChange:e=>J(e.target.value),placeholder:t.searchColumns,"aria-label":t.searchColumns}),jsx(Z,{align:"inline-start","aria-hidden":"true",children:jsx(s,{})})]})}),jsxs(x,{children:[jsx(r,{onSelect:e=>{e.preventDefault(),G(true);},children:t.showAllColumns}),jsx(r,{onSelect:e=>{e.preventDefault(),G(false);},children:t.hideAllColumns}),ee.map(e=>{let a=m.indexOf(e.id);return jsxs(d.Fragment,{children:[jsx(Y,{checked:e.visible,disabled:!e.canHide,onCheckedChange:o=>U?.(e.id,o===true),children:e.label}),jsx(r,{disabled:a<=0,onSelect:o=>{o.preventDefault(),F(e.id,-1);},children:t.moveColumnEarlier(e.label)}),jsx(r,{disabled:a<0||a===m.length-1,onSelect:o=>{o.preventDefault(),F(e.id,1);},children:t.moveColumnLater(e.label)}),B?jsxs(Fragment,{children:[jsxs(r,{onSelect:o=>{o.preventDefault(),c(e.id,"left");},children:[t.pinLeft,": ",e.label]}),jsxs(r,{onSelect:o=>{o.preventDefault(),c(e.id,"right");},children:[t.pinRight,": ",e.label]}),jsxs(r,{onSelect:o=>{o.preventDefault(),c(e.id,false);},children:[t.unpin,": ",e.label]})]}):null]},e.id)})]})]}):null,y?jsxs(Fragment,{children:[jsx(g,{}),jsx(r,{onSelect:e=>{e.preventDefault(),$();},children:t.resetColumnLayout})]}):null,M?jsxs(Fragment,{children:[jsx(g,{}),jsx(A,{children:t.savedViews}),jsx("div",{className:"px-2 pb-2",children:jsx(C,{children:jsx(S,{value:f,onChange:e=>E(e.target.value),placeholder:t.savedViewName,"aria-label":t.savedViewName})})}),jsx(r,{disabled:!f.trim(),onSelect:e=>{e.preventDefault(),P(f.trim())&&E("");},children:t.createSavedView}),jsx(x,{children:z.map(e=>X===e.id?jsxs("div",{className:"flex gap-1 px-2 py-1",role:"group","aria-label":t.renameSavedView(e.name),children:[jsx(C,{children:jsx(S,{value:w,onChange:a=>R(a.target.value),"aria-label":t.savedViewName})}),jsx(r,{onSelect:a=>{a.preventDefault(),w.trim()&&K(e.id,w.trim())&&L(null);},children:t.saveSavedView})]},e.id):jsxs(d.Fragment,{children:[jsx(r,{onSelect:a=>{a.preventDefault(),j(e.id);},children:e.name}),jsx(r,{onSelect:a=>{a.preventDefault(),L(e.id),R(e.name);},children:t.renameSavedView(e.name)}),jsx(r,{onSelect:a=>{a.preventDefault(),W(e.id);},children:t.deleteSavedView(e.name)})]},e.id))})]}):null]})}function te(l){if(Array.isArray(l))return l.map(String).join(", ");if(l&&typeof l=="object"){let u=l;if("from"in u||"to"in u)return [u.from,u.to].filter(Boolean).map(String).join("\u2013")}return String(l)}export{ne as default};//# sourceMappingURL=data-table-toolbar-operations-IDEGCKBK.js.map +//# sourceMappingURL=data-table-toolbar-operations-IDEGCKBK.js.map \ No newline at end of file diff --git a/dist/data-table-toolbar-operations-IDEGCKBK.js.map b/dist/data-table-toolbar-operations-IDEGCKBK.js.map new file mode 100644 index 0000000..c65d945 --- /dev/null +++ b/dist/data-table-toolbar-operations-IDEGCKBK.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/core/data-table/data-table-toolbar-operations.tsx"],"names":["ToolbarDataOperations","placement","ui","labels","enableColumnChooser","enableFilterChips","enableResetLayout","enableSavedViews","enableColumnPinning","columnVisibilityOptions","onColumnVisibilityChange","onColumnPinningChange","reorderColumn","table","onResetColumnLayout","savedViews","onCreateSavedView","onApplySavedView","onRenameSavedView","onDeleteSavedView","toolbarQueryValue","onToolbarQueryValueChange","activeColumnFilters","onColumnFilterChange","onClearColumnFilters","columnQuery","setColumnQuery","newSavedViewName","setNewSavedViewName","renamingSavedViewId","setRenamingSavedViewId","renamedSavedViewName","setRenamedSavedViewName","Button","DropdownMenuCheckboxItem","DropdownMenuGroup","DropdownMenuItem","DropdownMenuLabel","DropdownMenuSeparator","InputGroup","InputGroupAddon","InputGroupInput","orderedIds","column","id","columns","activeCount","jsxs","jsx","filter","formatValue","setVisibility","visible","current","next","move","direction","index","target","Fragment","event","IconSearch","checked","view","value","range"],"mappings":"8GA2De,SAARA,EAAAA,CAAuC,CAC5C,SAAA,CAAAC,CAAAA,CACA,EAAA,CAAAC,CAAAA,CACA,MAAA,CAAAC,CAAAA,CACA,mBAAA,CAAAC,CAAAA,CACA,iBAAA,CAAAC,CAAAA,CACA,iBAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,oBAAAC,CAAAA,CACA,uBAAA,CAAAC,CAAAA,CACA,wBAAA,CAAAC,CAAAA,CACA,qBAAA,CAAAC,EACA,aAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CACA,mBAAA,CAAAC,CAAAA,CACA,WAAAC,CAAAA,CACA,iBAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,iBAAA,CAAAC,CAAAA,CACA,iBAAA,CAAAC,CAAAA,CACA,iBAAA,CAAAC,CAAAA,CACA,yBAAA,CAAAC,CAAAA,CACA,mBAAA,CAAAC,EACA,oBAAA,CAAAC,CAAAA,CACA,oBAAA,CAAAC,CACF,CAAA,CAA+B,CAC7B,GAAM,CAACC,CAAAA,CAAaC,CAAc,CAAA,CAAU,CAAA,CAAA,QAAA,CAAS,EAAE,EACjD,CAACC,CAAAA,CAAkBC,CAAmB,CAAA,CAAU,CAAA,CAAA,QAAA,CAAS,EAAE,CAAA,CAC3D,CAACC,CAAAA,CAAqBC,CAAsB,CAAA,CAAU,CAAA,CAAA,QAAA,CAE1D,IAAI,CAAA,CACA,CAACC,CAAAA,CAAsBC,CAAuB,CAAA,CAAU,CAAA,CAAA,QAAA,CAAS,EAAE,CAAA,CACnE,CACJ,MAAA,CAAAC,CAAAA,CACA,wBAAA,CAAAC,CAAAA,CACA,iBAAA,CAAAC,CAAAA,CACA,iBAAAC,CAAAA,CACA,iBAAA,CAAAC,CAAAA,CACA,qBAAA,CAAAC,CAAAA,CACA,UAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CACF,CAAA,CAAIvC,CAAAA,CACEwC,CAAAA,CAAa7B,EAChB,iBAAA,EAAkB,CAClB,GAAA,CAAK8B,CAAAA,EAAWA,CAAAA,CAAO,EAAE,EACzB,MAAA,CAAQC,CAAAA,EAAO,CAACA,CAAAA,CAAG,UAAA,CAAW,IAAI,CAAC,CAAA,CAChCC,EAAAA,CAAUpC,CAAAA,CAAwB,MAAA,CAAQkC,CAAAA,EAC9CA,CAAAA,CAAO,KAAA,CAAM,iBAAA,EAAkB,CAAE,QAAA,CAASlB,CAAAA,CAAY,iBAAA,EAAmB,CAC3E,EACMqB,CAAAA,CAAcxB,CAAAA,CAAoB,MAAA,EAAUF,CAAAA,CAAoB,CAAA,CAAI,CAAA,CAAA,CAE1E,GAAInB,CAAAA,GAAc,OAAA,CAChB,OAAI,CAACI,CAAAA,EAAqB,CAACyC,EAClB,IAAA,CAGPC,IAAAA,CAAC,KAAA,CAAA,CACC,eAAA,CAAc,2BAAA,CACd,YAAA,CAAY,CAAA,EAAG5C,CAAAA,CAAO,OAAO,CAAA,EAAA,EAAK2C,CAAW,CAAA,CAAA,CAC7C,SAAA,CAAU,2CAAA,CAEV,UAAAC,IAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,oBAAA,CACb,QAAA,CAAA,CAAA5C,CAAAA,CAAO,QAAQ,IAAA,CAAG2C,CAAAA,CAAY,GAAA,CAAA,CACjC,CAAA,CACC1B,CAAAA,CACC2B,IAAAA,CAACd,EAAA,CACC,IAAA,CAAK,QAAA,CACL,OAAA,CAAQ,WAAA,CACR,IAAA,CAAK,IAAA,CACL,YAAA,CAAY9B,CAAAA,CAAO,WAAA,CACnB,OAAA,CAAS,IAAMkB,CAAAA,CAA0B,EAAE,EAE1C,QAAA,CAAA,CAAAD,CAAAA,CAAkB,GAAA,CAAC4B,GAAAA,CAAC,MAAA,CAAA,CAAK,aAAA,CAAY,MAAA,CAAO,QAAA,CAAA,MAAA,CAAC,CAAA,CAAA,CAChD,CAAA,CACE,IAAA,CACH1B,CAAAA,CAAoB,GAAA,CAAK2B,CAAAA,EACxBF,KAACd,CAAAA,CAAA,CAEC,IAAA,CAAK,QAAA,CACL,OAAA,CAAQ,WAAA,CACR,IAAA,CAAK,IAAA,CACL,YAAA,CAAY,CAAA,EAAG9B,CAAAA,CAAO,YAAY,CAAA,EAAA,EAAK8C,CAAAA,CAAO,KAAK,CAAA,CAAA,CACnD,OAAA,CAAS,IAAM1B,CAAAA,CAAqB0B,CAAAA,CAAO,EAAA,CAAI,EAAE,CAAA,CAEhD,QAAA,CAAA,CAAAA,CAAAA,CAAO,KAAA,CAAM,IAAA,CAAGC,EAAAA,CAAYD,EAAO,KAAK,CAAA,CAAG,GAAA,CAC5CD,GAAAA,CAAC,MAAA,CAAA,CAAK,aAAA,CAAY,MAAA,CAAO,QAAA,CAAA,MAAA,CAAC,CAAA,CAAA,CAAA,CARrBC,CAAAA,CAAO,EASd,CACD,CAAA,CACDD,GAAAA,CAACf,EAAA,CACC,IAAA,CAAK,QAAA,CACL,OAAA,CAAQ,OAAA,CACR,IAAA,CAAK,KACL,OAAA,CAAS,IAAM,CACbZ,CAAAA,CAA0B,EAAE,CAAA,CAC5BG,IACF,CAAA,CAEC,QAAA,CAAArB,CAAAA,CAAO,YAAA,CACV,CAAA,CAAA,CACF,CAAA,CAIJ,GAAI,CAACC,CAAAA,EAAuB,CAACE,CAAAA,EAAqB,CAACC,CAAAA,CACjD,OAAO,IAAA,CAET,IAAM4C,CAAAA,CAAiBC,CAAAA,EACrBvC,CAAAA,CAAM,mBAAA,CAAqBwC,GAAY,CACrC,IAAMC,CAAAA,CAAO,CAAE,GAAGD,CAAQ,EAC1B,IAAA,IAAWV,CAAAA,IAAU9B,CAAAA,CAAM,iBAAA,EAAkB,CACvC,CAAC8B,CAAAA,CAAO,EAAA,CAAG,UAAA,CAAW,IAAI,CAAA,EAAKA,CAAAA,CAAO,UAAA,EAAW,GACnDW,EAAKX,CAAAA,CAAO,EAAE,CAAA,CAAIS,CAAAA,CAAAA,CAGtB,OAAOE,CACT,CAAC,CAAA,CACGC,CAAAA,CAAO,CAACX,CAAAA,CAAYY,CAAAA,GAAsB,CAC9C,IAAMC,CAAAA,CAAQf,CAAAA,CAAW,OAAA,CAAQE,CAAE,CAAA,CAC7Bc,CAAAA,CAAShB,CAAAA,CAAWe,CAAAA,CAAQD,CAAS,CAAA,CACvCC,CAAAA,EAAS,CAAA,EAAKC,CAAAA,EAChB9C,CAAAA,CAAcgC,EAAIc,CAAM,EAE5B,CAAA,CACA,OACEX,IAAAA,CAAAY,QAAAA,CAAA,CACG,QAAA,CAAA,CAAAvD,CAAAA,CACC2C,IAAAA,CAAAY,QAAAA,CAAA,CACE,QAAA,CAAA,CAAAX,IAACV,CAAAA,CAAA,EAAsB,CAAA,CACvBU,GAAAA,CAACX,CAAAA,CAAA,CAAmB,QAAA,CAAAlC,CAAAA,CAAO,OAAA,CAAQ,CAAA,CACnC6C,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,WAAA,CACb,SAAAD,IAAAA,CAACR,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAS,GAAAA,CAACP,CAAAA,CAAA,CACC,KAAA,CAAOhB,CAAAA,CACP,QAAA,CAAWmC,CAAAA,EACTlC,CAAAA,CAAekC,CAAAA,CAAM,OAAO,KAAK,CAAA,CAEnC,WAAA,CAAazD,CAAAA,CAAO,aAAA,CACpB,YAAA,CAAYA,CAAAA,CAAO,aAAA,CACrB,CAAA,CACA6C,GAAAA,CAACR,CAAAA,CAAA,CAAgB,KAAA,CAAM,cAAA,CAAe,cAAY,MAAA,CAChD,QAAA,CAAAQ,GAAAA,CAACa,CAAAA,CAAA,EAAW,CAAA,CACd,GACF,CAAA,CACF,CAAA,CACAd,IAAAA,CAACZ,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAa,IAACZ,CAAAA,CAAA,CACC,QAAA,CAAWwB,CAAAA,EAAiB,CAC1BA,CAAAA,CAAM,cAAA,EAAe,CACrBT,CAAAA,CAAc,IAAI,EACpB,CAAA,CAEC,QAAA,CAAAhD,CAAAA,CAAO,eACV,CAAA,CACA6C,GAAAA,CAACZ,CAAAA,CAAA,CACC,QAAA,CAAWwB,CAAAA,EAAiB,CAC1BA,CAAAA,CAAM,cAAA,EAAe,CACrBT,CAAAA,CAAc,KAAK,EACrB,CAAA,CAEC,SAAAhD,CAAAA,CAAO,cAAA,CACV,CAAA,CACC0C,EAAAA,CAAQ,GAAA,CAAKF,CAAAA,EAAW,CACvB,IAAMc,CAAAA,CAAQf,CAAAA,CAAW,OAAA,CAAQC,CAAAA,CAAO,EAAE,CAAA,CAC1C,OACEI,IAAAA,CAAO,CAAA,CAAA,QAAA,CAAN,CACC,QAAA,CAAA,CAAAC,GAAAA,CAACd,CAAAA,CAAA,CACC,OAAA,CAASS,CAAAA,CAAO,OAAA,CAChB,QAAA,CAAU,CAACA,CAAAA,CAAO,QAClB,eAAA,CAAkBmB,CAAAA,EAChBpD,CAAAA,GACEiC,CAAAA,CAAO,EAAA,CACPmB,CAAAA,GAAY,IACd,CAAA,CAGD,QAAA,CAAAnB,CAAAA,CAAO,KAAA,CACV,CAAA,CACAK,GAAAA,CAACZ,CAAAA,CAAA,CACC,QAAA,CAAUqB,CAAAA,EAAS,CAAA,CACnB,QAAA,CAAWG,CAAAA,EAAiB,CAC1BA,EAAM,cAAA,EAAe,CACrBL,CAAAA,CAAKZ,CAAAA,CAAO,EAAA,CAAI,EAAE,EACpB,CAAA,CAEC,QAAA,CAAAxC,CAAAA,CAAO,iBAAA,CAAkBwC,CAAAA,CAAO,KAAK,CAAA,CACxC,CAAA,CACAK,GAAAA,CAACZ,CAAAA,CAAA,CACC,QAAA,CAAUqB,CAAAA,CAAQ,CAAA,EAAKA,IAAUf,CAAAA,CAAW,MAAA,CAAS,CAAA,CACrD,QAAA,CAAWkB,CAAAA,EAAiB,CAC1BA,EAAM,cAAA,EAAe,CACrBL,CAAAA,CAAKZ,CAAAA,CAAO,EAAA,CAAI,CAAC,EACnB,CAAA,CAEC,QAAA,CAAAxC,CAAAA,CAAO,eAAA,CAAgBwC,CAAAA,CAAO,KAAK,CAAA,CACtC,CAAA,CACCnC,CAAAA,CACCuC,IAAAA,CAAAY,QAAAA,CAAA,CACE,QAAA,CAAA,CAAAZ,IAAAA,CAACX,EAAA,CACC,QAAA,CAAWwB,CAAAA,EAAiB,CAC1BA,CAAAA,CAAM,cAAA,GACNjD,CAAAA,CAAsBgC,CAAAA,CAAO,EAAA,CAAI,MAAM,EACzC,CAAA,CAEC,UAAAxC,CAAAA,CAAO,OAAA,CAAQ,IAAA,CAAGwC,CAAAA,CAAO,KAAA,CAAA,CAC5B,CAAA,CACAI,IAAAA,CAACX,CAAAA,CAAA,CACC,QAAA,CAAWwB,CAAAA,EAAiB,CAC1BA,CAAAA,CAAM,cAAA,GACNjD,CAAAA,CAAsBgC,CAAAA,CAAO,EAAA,CAAI,OAAO,EAC1C,CAAA,CAEC,UAAAxC,CAAAA,CAAO,QAAA,CAAS,IAAA,CAAGwC,CAAAA,CAAO,KAAA,CAAA,CAC7B,CAAA,CACAI,KAACX,CAAAA,CAAA,CACC,QAAA,CAAWwB,CAAAA,EAAiB,CAC1BA,CAAAA,CAAM,cAAA,EAAe,CACrBjD,CAAAA,CAAsBgC,CAAAA,CAAO,EAAA,CAAI,KAAK,EACxC,CAAA,CAEC,UAAAxC,CAAAA,CAAO,KAAA,CAAM,IAAA,CAAGwC,CAAAA,CAAO,KAAA,CAAA,CAC1B,CAAA,CAAA,CACF,EACE,IAAA,CAAA,CAAA,CA1DeA,CAAAA,CAAO,EA2D5B,CAEJ,CAAC,CAAA,CAAA,CACH,GACF,CAAA,CACE,IAAA,CACHrC,CAAAA,CACCyC,IAAAA,CAAAY,QAAAA,CAAA,CACE,QAAA,CAAA,CAAAX,GAAAA,CAACV,CAAAA,CAAA,EAAsB,CAAA,CACvBU,GAAAA,CAACZ,CAAAA,CAAA,CACC,SAAWwB,CAAAA,EAAiB,CAC1BA,CAAAA,CAAM,cAAA,EAAe,CACrB9C,CAAAA,GACF,CAAA,CAEC,QAAA,CAAAX,CAAAA,CAAO,iBAAA,CACV,CAAA,CAAA,CACF,CAAA,CACE,KACHI,CAAAA,CACCwC,IAAAA,CAAAY,QAAAA,CAAA,CACE,QAAA,CAAA,CAAAX,GAAAA,CAACV,CAAAA,CAAA,EAAsB,CAAA,CACvBU,GAAAA,CAACX,CAAAA,CAAA,CAAmB,QAAA,CAAAlC,CAAAA,CAAO,WAAW,CAAA,CACtC6C,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,WAAA,CACb,QAAA,CAAAA,GAAAA,CAACT,CAAAA,CAAA,CACC,QAAA,CAAAS,GAAAA,CAACP,CAAAA,CAAA,CACC,KAAA,CAAOd,EACP,QAAA,CAAWiC,CAAAA,EACThC,CAAAA,CAAoBgC,CAAAA,CAAM,MAAA,CAAO,KAAK,CAAA,CAExC,WAAA,CAAazD,CAAAA,CAAO,aAAA,CACpB,YAAA,CAAYA,CAAAA,CAAO,aAAA,CACrB,CAAA,CACF,EACF,CAAA,CACA6C,GAAAA,CAACZ,CAAAA,CAAA,CACC,QAAA,CAAU,CAACT,EAAiB,IAAA,EAAK,CACjC,QAAA,CAAWiC,CAAAA,EAAiB,CAC1BA,CAAAA,CAAM,gBAAe,CACjB5C,CAAAA,CAAkBW,CAAAA,CAAiB,IAAA,EAAM,CAAA,EAC3CC,CAAAA,CAAoB,EAAE,EAE1B,CAAA,CAEC,QAAA,CAAAzB,CAAAA,CAAO,eAAA,CACV,CAAA,CACA6C,IAACb,CAAAA,CAAA,CACE,QAAA,CAAApB,CAAAA,CAAW,GAAA,CAAKgD,CAAAA,EACflC,IAAwBkC,CAAAA,CAAK,EAAA,CAC3BhB,IAAAA,CAAC,KAAA,CAAA,CAEC,SAAA,CAAU,sBAAA,CACV,KAAK,OAAA,CACL,YAAA,CAAY5C,CAAAA,CAAO,eAAA,CAAgB4D,CAAAA,CAAK,IAAI,CAAA,CAE5C,QAAA,CAAA,CAAAf,GAAAA,CAACT,CAAAA,CAAA,CACC,QAAA,CAAAS,GAAAA,CAACP,CAAAA,CAAA,CACC,KAAA,CAAOV,CAAAA,CACP,QAAA,CACE6B,CAAAA,EACG5B,CAAAA,CAAwB4B,CAAAA,CAAM,OAAO,KAAK,CAAA,CAC/C,YAAA,CAAYzD,CAAAA,CAAO,aAAA,CACrB,CAAA,CACF,EACA6C,GAAAA,CAACZ,CAAAA,CAAA,CACC,QAAA,CAAWwB,CAAAA,EAAiB,CAC1BA,CAAAA,CAAM,cAAA,EAAe,CAEnB7B,CAAAA,CAAqB,IAAA,EAAK,EAC1Bb,CAAAA,CACE6C,CAAAA,CAAK,GACLhC,CAAAA,CAAqB,IAAA,EACvB,CAAA,EAEAD,CAAAA,CAAuB,IAAI,EAE/B,CAAA,CAEC,QAAA,CAAA3B,CAAAA,CAAO,aAAA,CACV,CAAA,CAAA,CAAA,CA7BK4D,CAAAA,CAAK,EA8BZ,CAAA,CAEAhB,IAAAA,CAAO,CAAA,CAAA,QAAA,CAAN,CACC,QAAA,CAAA,CAAAC,GAAAA,CAACZ,CAAAA,CAAA,CACC,QAAA,CAAWwB,CAAAA,EAAiB,CAC1BA,CAAAA,CAAM,cAAA,EAAe,CACrB3C,EAAiB8C,CAAAA,CAAK,EAAE,EAC1B,CAAA,CAEC,QAAA,CAAAA,CAAAA,CAAK,KACR,CAAA,CACAf,GAAAA,CAACZ,CAAAA,CAAA,CACC,QAAA,CAAWwB,CAAAA,EAAiB,CAC1BA,CAAAA,CAAM,cAAA,EAAe,CACrB9B,CAAAA,CAAuBiC,CAAAA,CAAK,EAAE,CAAA,CAC9B/B,CAAAA,CAAwB+B,CAAAA,CAAK,IAAI,EACnC,CAAA,CAEC,QAAA,CAAA5D,CAAAA,CAAO,gBAAgB4D,CAAAA,CAAK,IAAI,CAAA,CACnC,CAAA,CACAf,GAAAA,CAACZ,CAAAA,CAAA,CACC,QAAA,CAAWwB,CAAAA,EAAiB,CAC1BA,CAAAA,CAAM,cAAA,EAAe,CACrBzC,EAAkB4C,CAAAA,CAAK,EAAE,EAC3B,CAAA,CAEC,QAAA,CAAA5D,CAAAA,CAAO,eAAA,CAAgB4D,CAAAA,CAAK,IAAI,CAAA,CACnC,CAAA,CAAA,CAAA,CAzBmBA,CAAAA,CAAK,EA0B1B,CAEJ,EACF,CAAA,CAAA,CACF,CAAA,CACE,IAAA,CAAA,CACN,CAEJ,CAEA,SAASb,GAAYc,CAAAA,CAAgB,CACnC,GAAI,KAAA,CAAM,OAAA,CAAQA,CAAK,EACrB,OAAOA,CAAAA,CAAM,GAAA,CAAI,MAAM,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA,CAEpC,GAAIA,CAAAA,EAAS,OAAOA,CAAAA,EAAU,QAAA,CAAU,CACtC,IAAMC,CAAAA,CAAQD,CAAAA,CACd,GAAI,MAAA,GAAUC,CAAAA,EAAS,IAAA,GAAQA,CAAAA,CAC7B,OAAO,CAACA,CAAAA,CAAM,IAAA,CAAMA,CAAAA,CAAM,EAAE,CAAA,CACzB,OAAO,OAAO,CAAA,CACd,GAAA,CAAI,MAAM,CAAA,CACV,IAAA,CAAK,QAAG,CAEf,CACA,OAAO,MAAA,CAAOD,CAAK,CACrB","file":"data-table-toolbar-operations-IDEGCKBK.js","sourcesContent":["import * as React from \"react\";\nimport type { Table } from \"@tanstack/react-table\";\nimport { IconSearch } from \"../icons\";\nimport type {\n DataTableColumnFixed,\n DataTableColumnVisibilityOption,\n DataTableLabels,\n DataTableSavedView,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\n\ntype ToolbarUi = Pick<\n DataTableUiKit,\n | \"Button\"\n | \"DropdownMenuCheckboxItem\"\n | \"DropdownMenuGroup\"\n | \"DropdownMenuItem\"\n | \"DropdownMenuLabel\"\n | \"DropdownMenuSeparator\"\n | \"InputGroup\"\n | \"InputGroupAddon\"\n | \"InputGroupInput\"\n>;\n\ntype ActiveFilter = { id: string; label: string; value: unknown };\n\ntype ToolbarDataOperationsProps = {\n placement: \"menu\" | \"chips\";\n ui: ToolbarUi;\n labels: Required;\n enableColumnChooser: boolean;\n enableFilterChips: boolean;\n enableResetLayout: boolean;\n enableSavedViews: boolean;\n enableColumnPinning: boolean;\n columnVisibilityOptions: Array;\n onColumnVisibilityChange?: (columnId: string, visible: boolean) => void;\n onColumnPinningChange: (\n columnId: string,\n side: DataTableColumnFixed | false,\n ) => void;\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n table: Table;\n onResetColumnLayout: () => void;\n savedViews: Array;\n onCreateSavedView: (name: string) => DataTableSavedView | undefined;\n onApplySavedView: (id: string) => boolean;\n onRenameSavedView: (\n id: string,\n name: string,\n ) => DataTableSavedView | undefined;\n onDeleteSavedView: (id: string) => boolean;\n toolbarQueryValue: string;\n onToolbarQueryValueChange: (value: string) => void;\n activeColumnFilters: Array;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n onClearColumnFilters: () => void;\n};\n\nexport default function ToolbarDataOperations({\n placement,\n ui,\n labels,\n enableColumnChooser,\n enableFilterChips,\n enableResetLayout,\n enableSavedViews,\n enableColumnPinning,\n columnVisibilityOptions,\n onColumnVisibilityChange,\n onColumnPinningChange,\n reorderColumn,\n table,\n onResetColumnLayout,\n savedViews,\n onCreateSavedView,\n onApplySavedView,\n onRenameSavedView,\n onDeleteSavedView,\n toolbarQueryValue,\n onToolbarQueryValueChange,\n activeColumnFilters,\n onColumnFilterChange,\n onClearColumnFilters,\n}: ToolbarDataOperationsProps) {\n const [columnQuery, setColumnQuery] = React.useState(\"\");\n const [newSavedViewName, setNewSavedViewName] = React.useState(\"\");\n const [renamingSavedViewId, setRenamingSavedViewId] = React.useState<\n string | null\n >(null);\n const [renamedSavedViewName, setRenamedSavedViewName] = React.useState(\"\");\n const {\n Button,\n DropdownMenuCheckboxItem,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n } = ui;\n const orderedIds = table\n .getAllLeafColumns()\n .map((column) => column.id)\n .filter((id) => !id.startsWith(\"__\"));\n const columns = columnVisibilityOptions.filter((column) =>\n column.label.toLocaleLowerCase().includes(columnQuery.toLocaleLowerCase()),\n );\n const activeCount = activeColumnFilters.length + (toolbarQueryValue ? 1 : 0);\n\n if (placement === \"chips\") {\n if (!enableFilterChips || !activeCount) {\n return null;\n }\n return (\n \n \n {labels.filters} ({activeCount})\n \n {toolbarQueryValue ? (\n onToolbarQueryValueChange(\"\")}\n >\n {toolbarQueryValue} ×\n \n ) : null}\n {activeColumnFilters.map((filter) => (\n onColumnFilterChange(filter.id, \"\")}\n >\n {filter.label}: {formatValue(filter.value)}{\" \"}\n ×\n \n ))}\n {\n onToolbarQueryValueChange(\"\");\n onClearColumnFilters();\n }}\n >\n {labels.clearFilters}\n \n \n );\n }\n\n if (!enableColumnChooser && !enableResetLayout && !enableSavedViews) {\n return null;\n }\n const setVisibility = (visible: boolean) =>\n table.setColumnVisibility((current) => {\n const next = { ...current };\n for (const column of table.getAllLeafColumns()) {\n if (!column.id.startsWith(\"__\") && column.getCanHide()) {\n next[column.id] = visible;\n }\n }\n return next;\n });\n const move = (id: string, direction: -1 | 1) => {\n const index = orderedIds.indexOf(id);\n const target = orderedIds[index + direction];\n if (index >= 0 && target) {\n reorderColumn(id, target);\n }\n };\n return (\n <>\n {enableColumnChooser ? (\n <>\n \n {labels.columns}\n
    \n \n ) =>\n setColumnQuery(event.target.value)\n }\n placeholder={labels.searchColumns}\n aria-label={labels.searchColumns}\n />\n \n \n \n \n
    \n \n {\n event.preventDefault();\n setVisibility(true);\n }}\n >\n {labels.showAllColumns}\n \n {\n event.preventDefault();\n setVisibility(false);\n }}\n >\n {labels.hideAllColumns}\n \n {columns.map((column) => {\n const index = orderedIds.indexOf(column.id);\n return (\n \n \n onColumnVisibilityChange?.(\n column.id,\n checked === true,\n )\n }\n >\n {column.label}\n \n {\n event.preventDefault();\n move(column.id, -1);\n }}\n >\n {labels.moveColumnEarlier(column.label)}\n \n {\n event.preventDefault();\n move(column.id, 1);\n }}\n >\n {labels.moveColumnLater(column.label)}\n \n {enableColumnPinning ? (\n <>\n {\n event.preventDefault();\n onColumnPinningChange(column.id, \"left\");\n }}\n >\n {labels.pinLeft}: {column.label}\n \n {\n event.preventDefault();\n onColumnPinningChange(column.id, \"right\");\n }}\n >\n {labels.pinRight}: {column.label}\n \n {\n event.preventDefault();\n onColumnPinningChange(column.id, false);\n }}\n >\n {labels.unpin}: {column.label}\n \n \n ) : null}\n \n );\n })}\n \n \n ) : null}\n {enableResetLayout ? (\n <>\n \n {\n event.preventDefault();\n onResetColumnLayout();\n }}\n >\n {labels.resetColumnLayout}\n \n \n ) : null}\n {enableSavedViews ? (\n <>\n \n {labels.savedViews}\n
    \n \n ) =>\n setNewSavedViewName(event.target.value)\n }\n placeholder={labels.savedViewName}\n aria-label={labels.savedViewName}\n />\n \n
    \n {\n event.preventDefault();\n if (onCreateSavedView(newSavedViewName.trim())) {\n setNewSavedViewName(\"\");\n }\n }}\n >\n {labels.createSavedView}\n \n \n {savedViews.map((view) =>\n renamingSavedViewId === view.id ? (\n \n \n ,\n ) => setRenamedSavedViewName(event.target.value)}\n aria-label={labels.savedViewName}\n />\n \n {\n event.preventDefault();\n if (\n renamedSavedViewName.trim() &&\n onRenameSavedView(\n view.id,\n renamedSavedViewName.trim(),\n )\n ) {\n setRenamingSavedViewId(null);\n }\n }}\n >\n {labels.saveSavedView}\n \n \n ) : (\n \n {\n event.preventDefault();\n onApplySavedView(view.id);\n }}\n >\n {view.name}\n \n {\n event.preventDefault();\n setRenamingSavedViewId(view.id);\n setRenamedSavedViewName(view.name);\n }}\n >\n {labels.renameSavedView(view.name)}\n \n {\n event.preventDefault();\n onDeleteSavedView(view.id);\n }}\n >\n {labels.deleteSavedView(view.name)}\n \n \n ),\n )}\n \n \n ) : null}\n \n );\n}\n\nfunction formatValue(value: unknown) {\n if (Array.isArray(value)) {\n return value.map(String).join(\", \");\n }\n if (value && typeof value === \"object\") {\n const range = value as { from?: unknown; to?: unknown };\n if (\"from\" in range || \"to\" in range) {\n return [range.from, range.to]\n .filter(Boolean)\n .map(String)\n .join(\"–\");\n }\n }\n return String(value);\n}\n"]} \ No newline at end of file diff --git a/dist/data-table-virtual-card-panel-KF2P5D3K.js b/dist/data-table-virtual-card-panel-KF2P5D3K.js new file mode 100644 index 0000000..d243d6e --- /dev/null +++ b/dist/data-table-virtual-card-panel-KF2P5D3K.js @@ -0,0 +1,2 @@ +export{a as DataTableVirtualCardPanel}from'./chunk-K7SNDVV2.js';import'./chunk-EJHT5JBZ.js';import'./chunk-KDHJA6AH.js';import'./chunk-XTVBESM5.js';//# sourceMappingURL=data-table-virtual-card-panel-KF2P5D3K.js.map +//# sourceMappingURL=data-table-virtual-card-panel-KF2P5D3K.js.map \ No newline at end of file diff --git a/dist/data-table-virtual-card-panel-TLC53T3T.js.map b/dist/data-table-virtual-card-panel-KF2P5D3K.js.map similarity index 62% rename from dist/data-table-virtual-card-panel-TLC53T3T.js.map rename to dist/data-table-virtual-card-panel-KF2P5D3K.js.map index f4d16a5..18592d4 100644 --- a/dist/data-table-virtual-card-panel-TLC53T3T.js.map +++ b/dist/data-table-virtual-card-panel-KF2P5D3K.js.map @@ -1 +1 @@ -{"version":3,"sources":[],"names":[],"mappings":"","file":"data-table-virtual-card-panel-TLC53T3T.js"} \ No newline at end of file +{"version":3,"sources":[],"names":[],"mappings":"","file":"data-table-virtual-card-panel-KF2P5D3K.js"} \ No newline at end of file diff --git a/dist/data-table-virtual-card-panel-TLC53T3T.js b/dist/data-table-virtual-card-panel-TLC53T3T.js deleted file mode 100644 index ba6ca5a..0000000 --- a/dist/data-table-virtual-card-panel-TLC53T3T.js +++ /dev/null @@ -1,2 +0,0 @@ -export{a as DataTableVirtualCardPanel}from'./chunk-ZA7LQ2JH.js';import'./chunk-EJHT5JBZ.js';import'./chunk-GSCYQ624.js';//# sourceMappingURL=data-table-virtual-card-panel-TLC53T3T.js.map -//# sourceMappingURL=data-table-virtual-card-panel-TLC53T3T.js.map \ No newline at end of file diff --git a/dist/data-table-virtual-table-panel-LEQ3RGTM.js b/dist/data-table-virtual-table-panel-LEQ3RGTM.js new file mode 100644 index 0000000..966eb16 --- /dev/null +++ b/dist/data-table-virtual-table-panel-LEQ3RGTM.js @@ -0,0 +1,2 @@ +export{a as DataTableVirtualTablePanel}from'./chunk-V5A4DWYZ.js';import'./chunk-NLQJKISS.js';import'./chunk-4P45F2OY.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-KDHJA6AH.js';import'./chunk-XTVBESM5.js';//# sourceMappingURL=data-table-virtual-table-panel-LEQ3RGTM.js.map +//# sourceMappingURL=data-table-virtual-table-panel-LEQ3RGTM.js.map \ No newline at end of file diff --git a/dist/data-table-virtual-table-panel-TTKFMOEY.js.map b/dist/data-table-virtual-table-panel-LEQ3RGTM.js.map similarity index 62% rename from dist/data-table-virtual-table-panel-TTKFMOEY.js.map rename to dist/data-table-virtual-table-panel-LEQ3RGTM.js.map index 3ce7df8..bb9fa3b 100644 --- a/dist/data-table-virtual-table-panel-TTKFMOEY.js.map +++ b/dist/data-table-virtual-table-panel-LEQ3RGTM.js.map @@ -1 +1 @@ -{"version":3,"sources":[],"names":[],"mappings":"","file":"data-table-virtual-table-panel-TTKFMOEY.js"} \ No newline at end of file +{"version":3,"sources":[],"names":[],"mappings":"","file":"data-table-virtual-table-panel-LEQ3RGTM.js"} \ No newline at end of file diff --git a/dist/data-table-virtual-table-panel-TTKFMOEY.js b/dist/data-table-virtual-table-panel-TTKFMOEY.js deleted file mode 100644 index 34f02ee..0000000 --- a/dist/data-table-virtual-table-panel-TTKFMOEY.js +++ /dev/null @@ -1,2 +0,0 @@ -export{a as DataTableVirtualTablePanel}from'./chunk-UKIIMIBW.js';import'./chunk-BYTOUBQ7.js';import'./chunk-GSCYQ624.js';//# sourceMappingURL=data-table-virtual-table-panel-TTKFMOEY.js.map -//# sourceMappingURL=data-table-virtual-table-panel-TTKFMOEY.js.map \ No newline at end of file diff --git a/dist/heroui-virtual.d.ts b/dist/heroui-virtual.d.ts index b10a5fe..f97952a 100644 --- a/dist/heroui-virtual.d.ts +++ b/dist/heroui-virtual.d.ts @@ -1,8 +1,8 @@ import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableAccessibilityOptions, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableAutoPageSizeConfig, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellCoordinate, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableCellSelection, DataTableClipboardConfig, DataTableClipboardCopyOptions, DataTableClipboardCopyScope, DataTableClipboardPasteContext, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFacetedFilterOptions, DataTableFileUploadConfig, DataTableGridCommandContext, DataTableGridCommands, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableInteractiveGridOptions, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableStateOverlay, DataTableStateOverlayContext, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarDataOperations, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; -declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, grouping, onGroupingChange, manualGrouping, enableGrouping, groupedColumnMode, aggregationFns, pageIndex, pageSize, autoPageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, clipboard, enableCellSelection, cellSelection, defaultCellSelection, onCellSelectionChange, gridCommands, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, toolbarDataOperations, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, enablePrint, enableFullscreen, emptyState, stateOverlay, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; export { DataTable, DataTableProps }; diff --git a/dist/heroui-virtual.js b/dist/heroui-virtual.js index 9c92236..dc3348b 100644 --- a/dist/heroui-virtual.js +++ b/dist/heroui-virtual.js @@ -1,2 +1,2 @@ -import {a as a$2}from'./chunk-6PPFYQ6Q.js';import {a as a$1}from'./chunk-HHUJMI3H.js';import'./chunk-ZA7LQ2JH.js';import'./chunk-UKIIMIBW.js';import'./chunk-LDAX7PX5.js';import'./chunk-67Y57KCA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-BYTOUBQ7.js';import'./chunk-GSCYQ624.js';var a=a$1(a$2);export{a as DataTable};//# sourceMappingURL=heroui-virtual.js.map +import {a as a$2}from'./chunk-KA26IREG.js';import {a as a$1}from'./chunk-BQSRJQTY.js';import'./chunk-K7SNDVV2.js';import'./chunk-V5A4DWYZ.js';import'./chunk-7FUCHMMB.js';import'./chunk-4UITEBLL.js';import'./chunk-EJHT5JBZ.js';import'./chunk-NLQJKISS.js';import'./chunk-4P45F2OY.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-KDHJA6AH.js';import'./chunk-XTVBESM5.js';var a=a$1(a$2);export{a as DataTable};//# sourceMappingURL=heroui-virtual.js.map //# sourceMappingURL=heroui-virtual.js.map \ No newline at end of file diff --git a/dist/heroui-virtual.js.map b/dist/heroui-virtual.js.map index 1c41cbe..78dd46d 100644 --- a/dist/heroui-virtual.js.map +++ b/dist/heroui-virtual.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/entries/heroui-virtual.ts"],"names":["DataTable","createVirtualDataTable","heroUiKit"],"mappings":"0RAGO,IAAMA,CAAAA,CAAYC,IAAuBC,GAAS","file":"heroui-virtual.js","sourcesContent":["import { heroUiKit } from \"../adapters/heroui\";\nimport { createVirtualDataTable } from \"../core/data-table/create-virtual-data-table\";\n\nexport const DataTable = createVirtualDataTable(heroUiKit);\n\nexport type * from \"../core/types\";\n"]} \ No newline at end of file +{"version":3,"sources":["../src/entries/heroui-virtual.ts"],"names":["DataTable","createVirtualDataTable","heroUiKit"],"mappings":"8WAGO,IAAMA,CAAAA,CAAYC,IAAuBC,GAAS","file":"heroui-virtual.js","sourcesContent":["import { heroUiKit } from \"../adapters/heroui\";\nimport { createVirtualDataTable } from \"../core/data-table/create-virtual-data-table\";\n\nexport const DataTable = createVirtualDataTable(heroUiKit);\n\nexport type * from \"../core/types\";\n"]} \ No newline at end of file diff --git a/dist/heroui.d.ts b/dist/heroui.d.ts index b10a5fe..f97952a 100644 --- a/dist/heroui.d.ts +++ b/dist/heroui.d.ts @@ -1,8 +1,8 @@ import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableAccessibilityOptions, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableAutoPageSizeConfig, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellCoordinate, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableCellSelection, DataTableClipboardConfig, DataTableClipboardCopyOptions, DataTableClipboardCopyScope, DataTableClipboardPasteContext, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFacetedFilterOptions, DataTableFileUploadConfig, DataTableGridCommandContext, DataTableGridCommands, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableInteractiveGridOptions, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableStateOverlay, DataTableStateOverlayContext, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarDataOperations, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; -declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, grouping, onGroupingChange, manualGrouping, enableGrouping, groupedColumnMode, aggregationFns, pageIndex, pageSize, autoPageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, clipboard, enableCellSelection, cellSelection, defaultCellSelection, onCellSelectionChange, gridCommands, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, toolbarDataOperations, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, enablePrint, enableFullscreen, emptyState, stateOverlay, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; export { DataTable, DataTableProps }; diff --git a/dist/heroui.js b/dist/heroui.js index b0c4fdd..72019d9 100644 --- a/dist/heroui.js +++ b/dist/heroui.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-6PPFYQ6Q.js';import'./chunk-LDAX7PX5.js';import {i}from'./chunk-67Y57KCA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-BYTOUBQ7.js';import'./chunk-GSCYQ624.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=heroui.js.map +import {a as a$1}from'./chunk-KA26IREG.js';import'./chunk-7FUCHMMB.js';import {i}from'./chunk-4UITEBLL.js';import'./chunk-EJHT5JBZ.js';import'./chunk-NLQJKISS.js';import'./chunk-4P45F2OY.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-KDHJA6AH.js';import'./chunk-XTVBESM5.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=heroui.js.map //# sourceMappingURL=heroui.js.map \ No newline at end of file diff --git a/dist/heroui.js.map b/dist/heroui.js.map index 4668bc3..331993f 100644 --- a/dist/heroui.js.map +++ b/dist/heroui.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/entries/heroui.ts"],"names":["DataTable","createDataTable","heroUiKit"],"mappings":"+LAGO,IAAMA,CAAAA,CAAYC,EAAgBC,GAAS","file":"heroui.js","sourcesContent":["import { heroUiKit } from \"../adapters/heroui\";\nimport { createDataTable } from \"../core/data-table/create-data-table\";\n\nexport const DataTable = createDataTable(heroUiKit);\n\nexport type * from \"../core/types\";\n"]} \ No newline at end of file +{"version":3,"sources":["../src/entries/heroui.ts"],"names":["DataTable","createDataTable","heroUiKit"],"mappings":"mRAGO,IAAMA,CAAAA,CAAYC,EAAgBC,GAAS","file":"heroui.js","sourcesContent":["import { heroUiKit } from \"../adapters/heroui\";\nimport { createDataTable } from \"../core/data-table/create-data-table\";\n\nexport const DataTable = createDataTable(heroUiKit);\n\nexport type * from \"../core/types\";\n"]} \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts index b10a5fe..f97952a 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -1,8 +1,8 @@ import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableAccessibilityOptions, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableAutoPageSizeConfig, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellCoordinate, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableCellSelection, DataTableClipboardConfig, DataTableClipboardCopyOptions, DataTableClipboardCopyScope, DataTableClipboardPasteContext, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFacetedFilterOptions, DataTableFileUploadConfig, DataTableGridCommandContext, DataTableGridCommands, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableInteractiveGridOptions, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableStateOverlay, DataTableStateOverlayContext, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarDataOperations, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; -declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, grouping, onGroupingChange, manualGrouping, enableGrouping, groupedColumnMode, aggregationFns, pageIndex, pageSize, autoPageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, clipboard, enableCellSelection, cellSelection, defaultCellSelection, onCellSelectionChange, gridCommands, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, toolbarDataOperations, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, enablePrint, enableFullscreen, emptyState, stateOverlay, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; export { DataTable, DataTableProps }; diff --git a/dist/index.js b/dist/index.js index b1080f6..274b7e7 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-MYQZYDHU.js';import'./chunk-LDAX7PX5.js';import {i}from'./chunk-67Y57KCA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-BYTOUBQ7.js';import'./chunk-GSCYQ624.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=index.js.map +import {a as a$1}from'./chunk-2NQXDLBI.js';import'./chunk-7FUCHMMB.js';import {i}from'./chunk-4UITEBLL.js';import'./chunk-EJHT5JBZ.js';import'./chunk-NLQJKISS.js';import'./chunk-4P45F2OY.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-KDHJA6AH.js';import'./chunk-XTVBESM5.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=index.js.map //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map index 76645a6..c0a56cb 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/index.ts"],"names":["DataTable","createDataTable","shadcnUiKit"],"mappings":"+LAGO,IAAMA,CAAAA,CAAYC,EAAgBC,GAAW","file":"index.js","sourcesContent":["import { shadcnUiKit } from \"./adapters/shadcn\";\nimport { createDataTable } from \"./core/data-table/create-data-table\";\n\nexport const DataTable = createDataTable(shadcnUiKit);\n\nexport type * from \"./core/types\";\n"]} \ No newline at end of file +{"version":3,"sources":["../src/index.ts"],"names":["DataTable","createDataTable","shadcnUiKit"],"mappings":"mRAGO,IAAMA,CAAAA,CAAYC,EAAgBC,GAAW","file":"index.js","sourcesContent":["import { shadcnUiKit } from \"./adapters/shadcn\";\nimport { createDataTable } from \"./core/data-table/create-data-table\";\n\nexport const DataTable = createDataTable(shadcnUiKit);\n\nexport type * from \"./core/types\";\n"]} \ No newline at end of file diff --git a/dist/thegridcn-virtual.d.ts b/dist/thegridcn-virtual.d.ts index b10a5fe..f97952a 100644 --- a/dist/thegridcn-virtual.d.ts +++ b/dist/thegridcn-virtual.d.ts @@ -1,8 +1,8 @@ import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableAccessibilityOptions, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableAutoPageSizeConfig, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellCoordinate, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableCellSelection, DataTableClipboardConfig, DataTableClipboardCopyOptions, DataTableClipboardCopyScope, DataTableClipboardPasteContext, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFacetedFilterOptions, DataTableFileUploadConfig, DataTableGridCommandContext, DataTableGridCommands, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableInteractiveGridOptions, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableStateOverlay, DataTableStateOverlayContext, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarDataOperations, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; -declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, grouping, onGroupingChange, manualGrouping, enableGrouping, groupedColumnMode, aggregationFns, pageIndex, pageSize, autoPageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, clipboard, enableCellSelection, cellSelection, defaultCellSelection, onCellSelectionChange, gridCommands, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, toolbarDataOperations, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, enablePrint, enableFullscreen, emptyState, stateOverlay, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; export { DataTable, DataTableProps }; diff --git a/dist/thegridcn-virtual.js b/dist/thegridcn-virtual.js index 4605f86..96f49f7 100644 --- a/dist/thegridcn-virtual.js +++ b/dist/thegridcn-virtual.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-HHUJMI3H.js';import'./chunk-ZA7LQ2JH.js';import'./chunk-UKIIMIBW.js';import {a as a$2}from'./chunk-DV3HO2TR.js';import'./chunk-LDAX7PX5.js';import'./chunk-67Y57KCA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-BYTOUBQ7.js';import'./chunk-GSCYQ624.js';var a=a$1(a$2);export{a as DataTable};//# sourceMappingURL=thegridcn-virtual.js.map +import {a as a$1}from'./chunk-BQSRJQTY.js';import'./chunk-K7SNDVV2.js';import'./chunk-V5A4DWYZ.js';import {a as a$2}from'./chunk-S4J2MG4T.js';import'./chunk-7FUCHMMB.js';import'./chunk-4UITEBLL.js';import'./chunk-EJHT5JBZ.js';import'./chunk-NLQJKISS.js';import'./chunk-4P45F2OY.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-KDHJA6AH.js';import'./chunk-XTVBESM5.js';var a=a$1(a$2);export{a as DataTable};//# sourceMappingURL=thegridcn-virtual.js.map //# sourceMappingURL=thegridcn-virtual.js.map \ No newline at end of file diff --git a/dist/thegridcn-virtual.js.map b/dist/thegridcn-virtual.js.map index a68f6f7..10f33a3 100644 --- a/dist/thegridcn-virtual.js.map +++ b/dist/thegridcn-virtual.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/entries/thegridcn-virtual.ts"],"names":["DataTable","createVirtualDataTable","theGridcnUiKit"],"mappings":"0RAGO,IAAMA,CAAAA,CAAYC,IAAuBC,GAAc","file":"thegridcn-virtual.js","sourcesContent":["import { theGridcnUiKit } from \"../adapters/thegridcn\";\nimport { createVirtualDataTable } from \"../core/data-table/create-virtual-data-table\";\n\nexport const DataTable = createVirtualDataTable(theGridcnUiKit);\n\nexport type * from \"../core/types\";\n"]} \ No newline at end of file +{"version":3,"sources":["../src/entries/thegridcn-virtual.ts"],"names":["DataTable","createVirtualDataTable","theGridcnUiKit"],"mappings":"8WAGO,IAAMA,CAAAA,CAAYC,IAAuBC,GAAc","file":"thegridcn-virtual.js","sourcesContent":["import { theGridcnUiKit } from \"../adapters/thegridcn\";\nimport { createVirtualDataTable } from \"../core/data-table/create-virtual-data-table\";\n\nexport const DataTable = createVirtualDataTable(theGridcnUiKit);\n\nexport type * from \"../core/types\";\n"]} \ No newline at end of file diff --git a/dist/thegridcn.d.ts b/dist/thegridcn.d.ts index b10a5fe..f97952a 100644 --- a/dist/thegridcn.d.ts +++ b/dist/thegridcn.d.ts @@ -1,8 +1,8 @@ import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableAccessibilityOptions, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableAutoPageSizeConfig, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellCoordinate, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableCellSelection, DataTableClipboardConfig, DataTableClipboardCopyOptions, DataTableClipboardCopyScope, DataTableClipboardPasteContext, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFacetedFilterOptions, DataTableFileUploadConfig, DataTableGridCommandContext, DataTableGridCommands, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableInteractiveGridOptions, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableStateOverlay, DataTableStateOverlayContext, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarDataOperations, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; -declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, grouping, onGroupingChange, manualGrouping, enableGrouping, groupedColumnMode, aggregationFns, pageIndex, pageSize, autoPageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, clipboard, enableCellSelection, cellSelection, defaultCellSelection, onCellSelectionChange, gridCommands, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, toolbarDataOperations, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, enablePrint, enableFullscreen, emptyState, stateOverlay, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; export { DataTable, DataTableProps }; diff --git a/dist/thegridcn.js b/dist/thegridcn.js index 1d863db..ce634ce 100644 --- a/dist/thegridcn.js +++ b/dist/thegridcn.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-DV3HO2TR.js';import'./chunk-LDAX7PX5.js';import {i}from'./chunk-67Y57KCA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-BYTOUBQ7.js';import'./chunk-GSCYQ624.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=thegridcn.js.map +import {a as a$1}from'./chunk-S4J2MG4T.js';import'./chunk-7FUCHMMB.js';import {i}from'./chunk-4UITEBLL.js';import'./chunk-EJHT5JBZ.js';import'./chunk-NLQJKISS.js';import'./chunk-4P45F2OY.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-KDHJA6AH.js';import'./chunk-XTVBESM5.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=thegridcn.js.map //# sourceMappingURL=thegridcn.js.map \ No newline at end of file diff --git a/dist/thegridcn.js.map b/dist/thegridcn.js.map index 81858a4..69dcd59 100644 --- a/dist/thegridcn.js.map +++ b/dist/thegridcn.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/entries/thegridcn.ts"],"names":["DataTable","createDataTable","theGridcnUiKit"],"mappings":"+LAGO,IAAMA,CAAAA,CAAYC,EAAgBC,GAAc","file":"thegridcn.js","sourcesContent":["import { theGridcnUiKit } from \"../adapters/thegridcn\";\nimport { createDataTable } from \"../core/data-table/create-data-table\";\n\nexport const DataTable = createDataTable(theGridcnUiKit);\n\nexport type * from \"../core/types\";\n"]} \ No newline at end of file +{"version":3,"sources":["../src/entries/thegridcn.ts"],"names":["DataTable","createDataTable","theGridcnUiKit"],"mappings":"mRAGO,IAAMA,CAAAA,CAAYC,EAAgBC,GAAc","file":"thegridcn.js","sourcesContent":["import { theGridcnUiKit } from \"../adapters/thegridcn\";\nimport { createDataTable } from \"../core/data-table/create-data-table\";\n\nexport const DataTable = createDataTable(theGridcnUiKit);\n\nexport type * from \"../core/types\";\n"]} \ No newline at end of file diff --git a/dist/types.d.ts b/dist/types.d.ts index ac16eae..5100609 100644 --- a/dist/types.d.ts +++ b/dist/types.d.ts @@ -1,7 +1,38 @@ import * as React from 'react'; -import { ColumnDef, CellContext, FilterFnOption, ColumnFiltersState, SortingState, ExpandedState, Row, ColumnOrderState, ColumnPinningState, RowPinningState, VisibilityState, PaginationState, ColumnSizingState, Updater, Table, HeaderContext } from '@tanstack/react-table'; +import { ColumnDef, CellContext, FilterFnOption, ColumnFiltersState, SortingState, GroupingState, AggregationFn, ExpandedState, Row, ColumnOrderState, ColumnPinningState, RowPinningState, Table, VisibilityState, PaginationState, ColumnSizingState, Updater, HeaderContext } from '@tanstack/react-table'; type DataTableViewMode = "table" | "card"; +/** Accessibility behavior for the table view. Native table semantics remain the default. */ +type DataTableAccessibilityOptions = { + /** + * `grid` enables spreadsheet-like roving focus and keyboard navigation. + * `native` (the default) retains ordinary HTML table keyboard behavior. + */ + mode?: "native" | "grid"; + /** Number of rows moved by PageUp/PageDown when layout cannot be measured. */ + pageSize?: number; +}; +/** Shorthand configuration for the interactive ARIA grid mode. */ +type DataTableInteractiveGridOptions = Omit; +/** A stable grid coordinate used for cell and rectangular range selection. */ +type DataTableCellCoordinate = { + rowId: string; + columnId: string; +}; +/** The two corners of a cell selection. A single-cell selection has equal corners. */ +type DataTableCellSelection = { + anchor: DataTableCellCoordinate; + focus: DataTableCellCoordinate; +}; +type DataTableGridCommandContext = { + table: Table; + cellSelection: DataTableCellSelection | null; +}; +/** Commands are delegated to the application; the table never records app data. */ +type DataTableGridCommands = { + undo?: (context: DataTableGridCommandContext) => void | Promise; + redo?: (context: DataTableGridCommandContext) => void | Promise; +}; type DataTableAlign = "start" | "center" | "end"; type DataTableColumnType = "text" | "numeric" | "date"; type DataTableColumnFixed = "left" | "right"; @@ -9,10 +40,44 @@ type DataTableContainerBreakpoint = "sm" | "md" | "lg" | "xl" | "2xl"; type DataTableDensity = "compact" | "comfortable" | "spacious"; type DataTableCardSizing = "fixed" | "content" | "fluid"; type DataTableCellOverflow = "truncate" | "clip" | "wrap" | "visible"; -type DataTableColumnFilterType = "text" | "select" | "multi" | "boolean" | "numberRange" | "dateRange"; +type DataTableColumnFilterType = "text" | "select" | "multi" | "faceted" | "boolean" | "numberRange" | "dateRange"; type DataTableColumnFilterOperator = "contains" | "equals" | "startsWith" | "endsWith"; type DataTableCsvExportScope = "filtered" | "page" | "selected" | "all"; -type DataTableActionErrorSource = "toolbarAction" | "selectionAction" | "rowAction" | "rowClick" | "edit" | "fileUpload" | "infiniteScroll"; +type DataTableClipboardCopyScope = DataTableCsvExportScope | "cellSelection"; +type DataTableClipboardCopyOptions = { + includeHeaders?: boolean; + columns?: Array; + scope?: DataTableClipboardCopyScope; + /** Defaults to tab-separated text. */ + delimiter?: "\t" | ","; + escapeFormulaValues?: boolean; + getCellValue?: (context: { + row: TData; + rowId: string; + columnId: string; + value: unknown; + }) => unknown; + /** Host-owned clipboard delivery for non-browser or permission-managed apps. */ + onCopy?: (context: { + text: string; + rows: Array; + scope: DataTableClipboardCopyScope; + }) => void | Promise; +}; +type DataTableClipboardPasteContext = { + text: string; + values: Array>; + table: Table; +}; +type DataTableClipboardConfig = { + copy?: boolean | DataTableClipboardCopyOptions; + paste?: { + enabled?: boolean; + preventDefault?: boolean; + onPaste: (context: DataTableClipboardPasteContext) => void | Promise; + }; +}; +type DataTableActionErrorSource = "toolbarAction" | "selectionAction" | "rowAction" | "rowClick" | "edit" | "undo" | "redo" | "clipboardCopy" | "clipboardPaste" | "fileUpload" | "infiniteScroll" | "retry"; declare const DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS: Record; type DataTableRowLoadingState = { isLoading: boolean; @@ -22,16 +87,55 @@ type DataTableLoadingState = { isLoading: boolean; loadingRowCount?: number; }; +type DataTableAutoPageSizeConfig = { + minRows?: number; + maxRows?: number; + estimateRowHeight?: number; +}; +type DataTableStateOverlayContext = { + rows: Array; + toolbarQueryValue: string; + error: unknown; + isRetrying: boolean; + retry: (() => void | Promise) | undefined; +}; +type DataTableStateOverlay = { + empty?: React.ReactNode | ((context: DataTableEmptyStateContext) => React.ReactNode); + error?: unknown; + isRetrying?: boolean; + onRetry?: () => void | Promise; + renderError?: (context: DataTableStateOverlayContext) => React.ReactNode; +}; type DataTableCellEditRenderProps = { cell: CellContext; row: TData; value: TValue | undefined; draftValue: unknown; setDraftValue: (value: unknown) => void; + error?: string; + isDirty: boolean; + isPending: boolean; }; type DataTableColumnFilterOption = { label: string; value: string; + /** Number of matching records. Omit when the count is not known. */ + count?: number; + disabled?: boolean; +}; +type DataTableFacetedFilterOptions = { + /** + * Server-provided facet values. When supplied, these take precedence over + * locally calculated unique values and their counts. + */ + options?: Array | ((context: { + rows: Array; + }) => Array); + /** Render a readable label for values discovered from the local row model. */ + getOptionLabel?: (value: TValue | undefined) => string; + /** Enables an in-menu search input. Defaults to true. */ + searchable?: boolean; + searchPlaceholder?: string; }; type DataTableColumnFilterRangeValue = { from?: TValue; @@ -45,6 +149,8 @@ type DataTableColumnFilterConfig = { rows: Array; }) => Array); getOptionValue?: (value: TValue | undefined, row: TData) => string; + /** Settings for `type: "faceted"`, including server-provided facet data. */ + faceting?: DataTableFacetedFilterOptions; operator?: DataTableColumnFilterOperator; trueLabel?: string; falseLabel?: string; @@ -159,6 +265,15 @@ type DataTableToolbarVisibility = { viewToggle?: boolean; customToolbar?: boolean; }; +/** Optional toolbar controls for working with the current table layout and views. */ +type DataTableToolbarDataOperations = { + /** Search, bulk show/hide, pin, and keyboard-accessible column move controls. */ + columnChooser?: boolean; + /** Create, apply, rename, and delete saved views when `savedViews` is configured. */ + savedViews?: boolean; + /** Adds a reset-layout action using the table's initial layout. */ + resetLayout?: boolean; +}; type DataTableCardRendererProps = { row: TData; rowId: string; @@ -176,7 +291,16 @@ type DataTableCardRendererProps = { type DataTableEditableRowsConfig = { canEditRow?: (row: TData) => boolean; getInitialValues?: (row: TData) => Record; + validateRow?: (row: TData, draftValues: Record) => void | string | Record | Promise>; + /** Apply an optimistic host update and optionally return a rollback callback. */ + onOptimisticUpdate?: (row: TData, draftValues: Record) => void | (() => void); onSaveRow: (row: TData, draftValues: Record) => void | Promise; + onSaveSuccess?: (row: TData, draftValues: Record) => void; + onSaveError?: (error: unknown, row: TData, draftValues: Record) => void; + /** Defaults to true for inputs owned by the table. */ + commitOnEnter?: boolean; + /** Defaults to true for inputs owned by the table. */ + cancelOnEscape?: boolean; }; type DataTableInfiniteScroll = { enabled: boolean; @@ -311,6 +435,8 @@ type DataTableState = { columnPinning: ColumnPinningState; rowPinning: RowPinningState; columnSizing: ColumnSizingState; + /** Present in snapshots produced by 4.4+; optional for 4.x object-literal compatibility. */ + grouping?: GroupingState; density: DataTableDensity; viewMode: DataTableViewMode; showHiddenRows: boolean; @@ -371,6 +497,12 @@ type DataTableApi = { scrollToRow: (rowId: string) => boolean; scrollToColumn: (columnId: string) => boolean; exportCsv: (options?: boolean | DataTableCsvExportOptions) => Promise; + copyToClipboard: (options?: boolean | DataTableClipboardCopyOptions) => Promise; + getCellSelection: () => DataTableCellSelection | null; + setCellSelection: (selection: DataTableCellSelection | null) => void; + clearCellSelection: () => void; + print: () => boolean; + toggleFullscreen: () => Promise; }; type DataTableLabels = { searchPlaceholder: string; @@ -419,6 +551,12 @@ type DataTableLabels = { expandRowDetails?: string; collapseRowDetails?: string; exportCsv: string; + print?: string; + enterFullscreen?: string; + exitFullscreen?: string; + errorTitle?: string; + errorDescription?: string; + retry?: string; density: string; compactDensity: string; comfortableDensity: string; @@ -430,6 +568,26 @@ type DataTableLabels = { pinRowToBottom: string; unpinRow: string; resizeColumn: (columnLabel: string) => string; + grouping?: string; + groupBy?: (columnLabel: string) => string; + ungroup?: (columnLabel: string) => string; + removeGrouping?: (columnLabel: string) => string; + moveGroupingEarlier?: (columnLabel: string) => string; + moveGroupingLater?: (columnLabel: string) => string; + facetSearch?: (columnLabel: string) => string; + searchColumns?: string; + showAllColumns?: string; + hideAllColumns?: string; + moveColumnEarlier?: (columnLabel: string) => string; + moveColumnLater?: (columnLabel: string) => string; + resetColumnLayout?: string; + savedViews?: string; + createSavedView?: string; + savedViewName?: string; + applySavedView?: (name: string) => string; + renameSavedView?: (name: string) => string; + deleteSavedView?: (name: string) => string; + saveSavedView?: string; }; type DataTableSummaryRow = { key: string; @@ -474,8 +632,20 @@ type DataTableProps = { sorting?: SortingState; onSortingChange?: (sorting: SortingState) => void; manualSorting?: boolean; + grouping?: GroupingState; + onGroupingChange?: (grouping: GroupingState) => void; + /** Use rows already grouped by the server instead of TanStack's grouping model. */ + manualGrouping?: boolean; + /** Show group/ungroup controls in the table options menu and grouping bar. */ + enableGrouping?: boolean; + /** Controls whether grouped columns are reordered, removed, or left in place. */ + groupedColumnMode?: false | "reorder" | "remove"; + /** Named aggregation functions available to column `aggregationFn` definitions. */ + aggregationFns?: Record>; pageIndex?: number; pageSize?: number; + /** Sizes an opt-in page from the measurable table scroll viewport. */ + autoPageSize?: boolean | DataTableAutoPageSizeConfig; onPageIndexChange?: (pageIndex: number) => void; onPageSizeChange?: (pageSize: number) => void; pageCount?: number; @@ -526,6 +696,17 @@ type DataTableProps = { selectionActions?: Array>; rowActions?: Array>; csvExport?: boolean | DataTableCsvExportOptions; + /** Opt-in TSV/CSV copy and application-owned paste handling. */ + clipboard?: DataTableClipboardConfig; + /** Enables pointer and Shift+keyboard rectangular cell selection in grid mode. */ + enableCellSelection?: boolean; + /** Controlled cell/range selection. Supplying a value also enables it in grid mode. */ + cellSelection?: DataTableCellSelection | null; + /** Initial cell/range selection when uncontrolled. */ + defaultCellSelection?: DataTableCellSelection | null; + onCellSelectionChange?: (selection: DataTableCellSelection | null) => void; + /** Host-owned undo/redo commands invoked by Ctrl/Cmd+Z and Ctrl/Cmd+Shift+Z. */ + gridCommands?: DataTableGridCommands; density?: DataTableDensity; onDensityChange?: (density: DataTableDensity) => void; enableDensityToggle?: boolean; @@ -545,7 +726,11 @@ type DataTableProps = { viewMode?: DataTableViewMode; onViewModeChange?: (viewMode: DataTableViewMode) => void; enableViewToggle?: boolean; + enablePrint?: boolean; + enableFullscreen?: boolean; emptyState?: React.ReactNode | ((context: DataTableEmptyStateContext) => React.ReactNode); + /** Explicit empty/error/retry rendering contract. */ + stateOverlay?: DataTableStateOverlay; isLoading?: boolean; loadingRowCount?: number; getRowLoadingState?: (row: TData, index: number) => boolean | DataTableRowLoadingState; @@ -567,6 +752,8 @@ type DataTableProps = { dir?: "ltr" | "rtl"; flexGrow?: boolean; toolbarVisibility?: DataTableToolbarVisibility; + /** Opts into enhanced layout and saved-view toolbar controls. */ + toolbarDataOperations?: boolean | DataTableToolbarDataOperations; className?: string; tableClassName?: string; tableContainerClassName?: string; @@ -580,6 +767,10 @@ type DataTableProps = { dragAndDrop?: DataTableDragAndDropConfig; fileUpload?: DataTableFileUploadConfig; virtualization?: boolean | DataTableVirtualizationConfig; + /** Opt in to ARIA grid semantics and roving keyboard navigation. */ + accessibility?: DataTableAccessibilityOptions; + /** Shorthand for `accessibility={{ mode: "grid" }}`. */ + interactiveGrid?: boolean | DataTableInteractiveGridOptions; }; declare function isRowVisible(row: TData, hiddenRows: DataTableHiddenRowsConfig | undefined, showHiddenRows: boolean): boolean; declare function resolveRowActionLabel(label: DataTableRowAction["label"], row: TData): string; @@ -593,4 +784,4 @@ declare function hideOnClassName(hideOn: DataTableContainerBreakpoint | Array | undefined, containerWidth: number): boolean; declare function rowSelectionStateFromRows(rows: Array>): TData[]; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, type DataTableActionErrorContext, type DataTableActionErrorSource, type DataTableAlign, type DataTableApi, type DataTableCardRendererProps, type DataTableCardSizing, type DataTableCardVirtualizationConfig, type DataTableCellEditRenderProps, type DataTableCellOverflow, type DataTableColumnDef, type DataTableColumnFilterConfig, type DataTableColumnFilterOperator, type DataTableColumnFilterOption, type DataTableColumnFilterRangeValue, type DataTableColumnFilterType, type DataTableColumnFixed, type DataTableColumnGroupDef, type DataTableColumnMeta, type DataTableColumnPrefs, type DataTableColumnType, type DataTableColumnVisibilityOption, type DataTableContainerBreakpoint, type DataTableCsvExportOptions, type DataTableCsvExportScope, type DataTableDensity, type DataTableDetailPanel, type DataTableDragAndDropConfig, type DataTableEditableRowsConfig, type DataTableEmptyStateContext, type DataTableExpandedRowProps, type DataTableFileUploadConfig, type DataTableHiddenRowsConfig, type DataTableInfiniteScroll, type DataTableInitialState, type DataTableLabels, type DataTableLoadingState, type DataTablePersistenceConfig, type DataTablePersistenceOperation, type DataTablePersistencePayload, type DataTablePersistenceSlice, type DataTablePersistenceStorage, type DataTableProps, type DataTableResetOptions, type DataTableRowAction, type DataTableRowClassNameContext, type DataTableRowLoadingState, type DataTableSavedView, type DataTableSavedViewSlice, type DataTableSavedViewsChangeOperation, type DataTableSavedViewsConfig, type DataTableSavedViewsPayload, type DataTableSelectionAction, type DataTableSelectionActionContext, type DataTableState, type DataTableSummaryRow, type DataTableToolbarAction, type DataTableToolbarVisibility, type DataTableViewMode, type DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows }; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, type DataTableAccessibilityOptions, type DataTableActionErrorContext, type DataTableActionErrorSource, type DataTableAlign, type DataTableApi, type DataTableAutoPageSizeConfig, type DataTableCardRendererProps, type DataTableCardSizing, type DataTableCardVirtualizationConfig, type DataTableCellCoordinate, type DataTableCellEditRenderProps, type DataTableCellOverflow, type DataTableCellSelection, type DataTableClipboardConfig, type DataTableClipboardCopyOptions, type DataTableClipboardCopyScope, type DataTableClipboardPasteContext, type DataTableColumnDef, type DataTableColumnFilterConfig, type DataTableColumnFilterOperator, type DataTableColumnFilterOption, type DataTableColumnFilterRangeValue, type DataTableColumnFilterType, type DataTableColumnFixed, type DataTableColumnGroupDef, type DataTableColumnMeta, type DataTableColumnPrefs, type DataTableColumnType, type DataTableColumnVisibilityOption, type DataTableContainerBreakpoint, type DataTableCsvExportOptions, type DataTableCsvExportScope, type DataTableDensity, type DataTableDetailPanel, type DataTableDragAndDropConfig, type DataTableEditableRowsConfig, type DataTableEmptyStateContext, type DataTableExpandedRowProps, type DataTableFacetedFilterOptions, type DataTableFileUploadConfig, type DataTableGridCommandContext, type DataTableGridCommands, type DataTableHiddenRowsConfig, type DataTableInfiniteScroll, type DataTableInitialState, type DataTableInteractiveGridOptions, type DataTableLabels, type DataTableLoadingState, type DataTablePersistenceConfig, type DataTablePersistenceOperation, type DataTablePersistencePayload, type DataTablePersistenceSlice, type DataTablePersistenceStorage, type DataTableProps, type DataTableResetOptions, type DataTableRowAction, type DataTableRowClassNameContext, type DataTableRowLoadingState, type DataTableSavedView, type DataTableSavedViewSlice, type DataTableSavedViewsChangeOperation, type DataTableSavedViewsConfig, type DataTableSavedViewsPayload, type DataTableSelectionAction, type DataTableSelectionActionContext, type DataTableState, type DataTableStateOverlay, type DataTableStateOverlayContext, type DataTableSummaryRow, type DataTableToolbarAction, type DataTableToolbarDataOperations, type DataTableToolbarVisibility, type DataTableViewMode, type DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows }; diff --git a/dist/ui-kit-HehdZfvO.d.ts b/dist/ui-kit-C6Z8X6oi.d.ts similarity index 99% rename from dist/ui-kit-HehdZfvO.d.ts rename to dist/ui-kit-C6Z8X6oi.d.ts index 01420cd..043f98c 100644 --- a/dist/ui-kit-HehdZfvO.d.ts +++ b/dist/ui-kit-C6Z8X6oi.d.ts @@ -11,6 +11,7 @@ type DataTableUiClassNames = { cardUnselected?: string; cardViewport?: string; cellBorder?: string; + cellSelected?: string; columnGroupHeader?: string; dragActive?: string; emptyState?: string; diff --git a/dist/virtual.d.ts b/dist/virtual.d.ts index b10a5fe..f97952a 100644 --- a/dist/virtual.d.ts +++ b/dist/virtual.d.ts @@ -1,8 +1,8 @@ import * as React from 'react'; import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFileUploadConfig, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableAccessibilityOptions, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableAutoPageSizeConfig, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellCoordinate, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableCellSelection, DataTableClipboardConfig, DataTableClipboardCopyOptions, DataTableClipboardCopyScope, DataTableClipboardPasteContext, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFacetedFilterOptions, DataTableFileUploadConfig, DataTableGridCommandContext, DataTableGridCommands, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableInteractiveGridOptions, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableStateOverlay, DataTableStateOverlayContext, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarDataOperations, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; import '@tanstack/react-table'; -declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, pageIndex, pageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, emptyState, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, }: DataTableProps) => React.JSX.Element; +declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, grouping, onGroupingChange, manualGrouping, enableGrouping, groupedColumnMode, aggregationFns, pageIndex, pageSize, autoPageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, clipboard, enableCellSelection, cellSelection, defaultCellSelection, onCellSelectionChange, gridCommands, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, toolbarDataOperations, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, enablePrint, enableFullscreen, emptyState, stateOverlay, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; export { DataTable, DataTableProps }; diff --git a/dist/virtual.js b/dist/virtual.js index 8cae07b..fa5b2ae 100644 --- a/dist/virtual.js +++ b/dist/virtual.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-MYQZYDHU.js';import {a}from'./chunk-HHUJMI3H.js';import'./chunk-ZA7LQ2JH.js';import'./chunk-UKIIMIBW.js';import'./chunk-LDAX7PX5.js';import'./chunk-67Y57KCA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-BYTOUBQ7.js';import'./chunk-GSCYQ624.js';var o=a(a$1);export{o as DataTable};//# sourceMappingURL=virtual.js.map +import {a as a$1}from'./chunk-2NQXDLBI.js';import {a}from'./chunk-BQSRJQTY.js';import'./chunk-K7SNDVV2.js';import'./chunk-V5A4DWYZ.js';import'./chunk-7FUCHMMB.js';import'./chunk-4UITEBLL.js';import'./chunk-EJHT5JBZ.js';import'./chunk-NLQJKISS.js';import'./chunk-4P45F2OY.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-KDHJA6AH.js';import'./chunk-XTVBESM5.js';var o=a(a$1);export{o as DataTable};//# sourceMappingURL=virtual.js.map //# sourceMappingURL=virtual.js.map \ No newline at end of file diff --git a/dist/virtual.js.map b/dist/virtual.js.map index 7c3fec1..e424558 100644 --- a/dist/virtual.js.map +++ b/dist/virtual.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/entries/virtual.ts"],"names":["DataTable","createVirtualDataTable","shadcnUiKit"],"mappings":"mRAGO,IAAMA,CAAAA,CAAYC,EAAuBC,GAAW","file":"virtual.js","sourcesContent":["import { shadcnUiKit } from \"../adapters/shadcn\";\nimport { createVirtualDataTable } from \"../core/data-table/create-virtual-data-table\";\n\nexport const DataTable = createVirtualDataTable(shadcnUiKit);\n\nexport type * from \"../core/types\";\n"]} \ No newline at end of file +{"version":3,"sources":["../src/entries/virtual.ts"],"names":["DataTable","createVirtualDataTable","shadcnUiKit"],"mappings":"uWAGO,IAAMA,CAAAA,CAAYC,EAAuBC,GAAW","file":"virtual.js","sourcesContent":["import { shadcnUiKit } from \"../adapters/shadcn\";\nimport { createVirtualDataTable } from \"../core/data-table/create-virtual-data-table\";\n\nexport const DataTable = createVirtualDataTable(shadcnUiKit);\n\nexport type * from \"../core/types\";\n"]} \ No newline at end of file diff --git a/docs/API.md b/docs/API.md index 24d4670..0b776b8 100644 --- a/docs/API.md +++ b/docs/API.md @@ -213,18 +213,27 @@ For cursor APIs, set `mode: "cursor"` and pass the cursor for the requested page as `cursor`; the hook exposes the backend's `nextCursor`. Memoize `source` with `useCallback`, or include all of its changing inputs in `query`, so a changed request is observable. Provide `getRequestKey` when `query` contains a -non-serializable value. +non-serializable value. Requests also carry `globalFilter`, `grouping`, named +`aggregations`, and an `expansionPath`; results may return stable `rowIds`, +`facets`, `aggregates`, and arbitrary `metadata`. These fields are additive, so +an existing source may ignore them and retain its previous result shape. ## Type Exports These are exported from the adapter entrypoints and from `data-table-pro/types`. - `DataTableAlign` +- `DataTableAccessibilityOptions` - `DataTableApi` +- `DataTableAutoPageSizeConfig` - `DataTableCardSizing` - `DataTableCardVirtualizationConfig` - `DataTableCellOverflow` - `DataTableCellEditRenderProps` +- `DataTableCellSelection` +- `DataTableClipboardConfig` +- `DataTableClipboardCopyOptions` +- `DataTableClipboardCopyScope` - `DataTableCardRendererProps` - `DataTableColumnDef` - `DataTableColumnGroupDef` @@ -251,6 +260,8 @@ These are exported from the adapter entrypoints and from `data-table-pro/types`. - `DataTableHiddenRowsConfig` - `DataTableInfiniteScroll` - `DataTableInitialState` +- `DataTableGridCommands` +- `DataTableInteractiveGridOptions` - `DataTableLabels` - `DataTableLoadingState` - `DataTablePersistenceConfig` @@ -268,6 +279,8 @@ These are exported from the adapter entrypoints and from `data-table-pro/types`. - `DataTableRowAction` - `DataTableRowLoadingState` - `DataTableState` +- `DataTableStateOverlay` +- `DataTableToolbarDataOperations` - `DataTableSelectionAction` - `DataTableSummaryRow` - `DataTableToolbarAction` @@ -360,6 +373,10 @@ Legacy controlled props remain supported. If a legacy prop and its matching - `focus()`, `scrollToRow(rowId)`, and `scrollToColumn(columnId)` - `pinRow(rowId, position?)` and `unpinRow(rowId)` when row pinning is enabled - `exportCsv(options?)` +- `copyToClipboard(options?)` +- `getCellSelection()`, `setCellSelection(selection)`, and + `clearCellSelection()` +- `print()` and `toggleFullscreen()` Scroll commands return `false` when the requested rendered element is not currently available, including a virtual row outside the active window. @@ -435,10 +452,9 @@ also ignored. `rowSelection` is never read or written without the explicit `"rowSelection"` opt-in. The hook returns direct values and TanStack-compatible setters for every -enhanced slice, a `tableState` object for slices currently supported by -`DataTableState`, and `clearEnhancedState()`. Grouping is returned separately -for server-owned state and forward compatibility; first-class table grouping -is scheduled for Phase 2. +enhanced slice, a `tableState` object for slices supported by `DataTableState`, +and `clearEnhancedState()`. Its `grouping` state can be passed directly to the +table's first-class `grouping` / `onGroupingChange` contract. ### Basic content props @@ -507,6 +523,9 @@ optional `trueLabel` and `falseLabel` overrides. Text filters accept an TanStack's faceted unique-value map and displays local option counts. Set `faceting.options` when the server owns facet results; its optional `count` is displayed unchanged. `faceting.searchable` defaults to `true`. +Numeric-range filters without configured `min` or `max` derive the missing +bounds from TanStack's local faceted row model. Explicit bounds always win, +and manual/server filtering remains server-owned. ```tsx meta: { @@ -692,6 +711,13 @@ rectangular values as TSV (without headers). Set `clipboard.copy.scope: "cellSelection"` to request that scope explicitly from the imperative copy API; `includeHeaders: true` remains available. +`clipboard.copy` accepts the same `filtered`, `page`, `selected`, and `all` +scopes as CSV plus `cellSelection`; configure tab or comma delimiters, +headers, columns, value formatting, formula neutralization, and an app-owned +`onCopy` destination. `clipboard.paste` is deliberately opt-in and receives +both the original text and parsed two-dimensional values. The table does not +mutate application records implicitly. + ### Pagination props | Prop | Type | Default | Description | @@ -846,7 +872,7 @@ virtualizer retain the scroll anchor when measurements change. Treat `data`, row objects, column definitions, and `getRowId` as immutable/memoized inputs. Development builds warn about common identity churn and duplicate row ids. -Column virtualization is intentionally not available in 4.3. The table panel +Column virtualization is intentionally not available in 4.4. The table panel preserves native table layout, grouped headers, pinned/resized columns, detail rows, and accessibility semantics; slicing only body columns would break those contracts. Use the included 20/100/500-column benchmark to establish whether @@ -875,6 +901,12 @@ row, current value, draft value, and `setDraftValue`. Numeric columns use number inputs, date columns use datetime inputs, and boolean drafts use checkboxes by default. +`validateRow` may return a general error string or field-name/error map, either +synchronously or asynchronously. Editing exposes dirty and pending UI state, +supports Enter to commit and Escape to cancel by default, and provides +optimistic update, rollback, success, and failure callbacks without retaining +an application-owned undo history. + ### Column visibility, sizing, ordering, pinning, and preferences props | Prop | Type | Default | Description | @@ -928,7 +960,7 @@ Persistence errors are best-effort and do not break rendering. Named saved views use a separate `data-table-pro:saved-views:${savedViews.key}` payload. By default a saved view captures sorting, filtering, column visibility/order/pinning/sizing, density, -view mode, hidden-row visibility, and the global query. Pagination, row +grouping, view mode, hidden-row visibility, and the global query. Pagination, row selection, and expansion are intentionally transient unless included in `savedViews.slices`. diff --git a/docs/Migration.md b/docs/Migration.md index 66582b7..dd25378 100644 --- a/docs/Migration.md +++ b/docs/Migration.md @@ -1,5 +1,45 @@ # Migration Guide +## 4.4.0 additive modernization release + +Version 4.4.0 removes no public prop, type, or package entrypoint. A 4.3 table +keeps native table semantics and its existing toolbar, paging, editing, and +server behavior until a new option is enabled. + +- Use `enableGrouping`, `grouping` / `onGroupingChange`, or + `initialState.grouping` to adopt grouping. `DataTableState.grouping` remains + optional so existing complete state object literals compile unchanged. +- Use `interactiveGrid` (or `accessibility={{ mode: "grid" }}`) only for an + application-style keyboard grid. Add `enableCellSelection` separately when + rectangular range selection is wanted; ordinary row selection is + independent. +- Use `clipboard` for opt-in copy/paste behavior. `copyToClipboard()` remains + asynchronous and now loads its implementation on first use. Setting + `clipboard={{ copy: false }}` continues to disable imperative/default range + copy. +- Use `toolbarDataOperations` for the searchable column manager, filter chips, + reset, and saved-view UI. Existing `savedViews` API-ref commands still work + without built-in controls. Newly created saved views include grouping by + default; an explicit `savedViews.slices` list remains authoritative. +- Use `autoPageSize`, `stateOverlay`, `enablePrint`, and `enableFullscreen` + independently. Their optional implementations load only when requested. +- Data-source callbacks may consume the new `globalFilter`, `grouping`, + `aggregations`, and `expansionPath` request fields and return `rowIds`, + `facets`, `aggregates`, and `metadata`. Existing sources can ignore all new + fields and keep returning their prior result shape. +- Numeric range filters without explicit `min` / `max` now expose bounds from + TanStack's local faceted row model. Set explicit limits to retain fixed + application-defined bounds; manual/server filters remain server-owned. + +The base gzip budget rises from 42 KiB to 48 KiB with a measured 46.1 KiB +static graph. Clipboard, enhanced toolbar operations, auto sizing, error +overlays, virtualization, and the data-source hook are not added to that +default static path when unused. + +Column virtualization is not part of 4.4. The package keeps native table +layout and grouped-header, pinning, resizing, detail-row, and accessibility +correctness instead of shipping a partial body-only virtualizer. + ## 4.3.0 additive feature release Version 4.3.0 removes no prop, type, or entrypoint. Existing flat-row tables, diff --git a/docs/Roadmap.md b/docs/Roadmap.md index 6e1b70a..3d0ea45 100644 --- a/docs/Roadmap.md +++ b/docs/Roadmap.md @@ -16,11 +16,11 @@ Audit baseline: Current implementation baseline: -- package version: 4.3.0 +- package version: 4.4.0 - React/React DOM peers: 19.2.8 - TanStack Table: 8.21.3 - TanStack Virtual: 3.14.8 -- validation: 281 unit/integration tests, enforced coverage and declaration +- validation: 310 unit/integration tests, enforced coverage and declaration snapshots, SSR/hydration tests, a packed-consumer build, and six adapter/theme Playwright screenshot and axe cases - toolchain: TypeScript 7 CLI with the official TypeScript 6 compiler-API @@ -222,9 +222,11 @@ Quality: ### Phase 2: TanStack feature parity (3.2) -Status: partially delivered in 4.3.0. Richer filters, tree/detail expansion, -row pinning, selection policies, and hardened column-group behavior are -complete; faceting and data grouping/aggregation remain. +Status: core scope complete in 4.4.0. Richer filters, tree/detail expansion, +row pinning, selection policies, hardened column groups, faceting, grouping, +and aggregation are implemented across all adapters. Applications can still +supply a custom `globalFilterFn` for domain-specific fuzzy ranking; a bundled +ranking dependency is not added to the base runtime. Delivered in 4.3.0: @@ -243,13 +245,24 @@ Delivered in 4.3.0: - Locked nested group reordering by default, explicit cross-group opt-in, descriptions, group-specific height, class, and style hooks. +Delivered in 4.4.0: + +- Searchable faceted multi-select filters with local unique-value counts, + server-provided facet options/counts, and local numeric min/max derivation. +- Controlled/uncontrolled and manual grouping, grouped-column modes, built-in + and custom aggregations, grouped/aggregated/placeholder cells, column-menu + controls, and an accessible reorderable grouping bar. +- Grouping state throughout unified state, saved views, URL state, + export/clipboard row models, and the server data-source contract. + Filtering and faceting: - Add `boolean`, `numberRange`, `dateRange`, and `faceted` filter definitions. - Wire `getFacetedRowModel`, `getFacetedUniqueValues`, and `getFacetedMinMaxValues` only when needed. - Support option counts, search within facet values, async/server facet data, - filter operators, and opt-in fuzzy ranking. + and filter operators. Domain-specific fuzzy ranking remains available + through `globalFilterFn` without adding a ranking dependency. Grouping and aggregation: @@ -344,7 +357,7 @@ Initial budgets: | Artifact | Budget | | --- | --- | -| Base shadcn package-owned runtime | <= 42 KiB gzip | +| Base shadcn package-owned runtime | <= 48 KiB gzip | | HeroUI/The Gridcn adapter delta | <= 6 KiB gzip each | | URL-state entry | <= 5 KiB gzip, excluding peer dependency | | Data-source entry | <= 3 KiB gzip, excluding React peer dependency | @@ -354,15 +367,46 @@ Initial budgets: Budgets may be adjusted once source-map-based attribution is in CI, but any increase must be explained in the changelog. -The 4.3.0 minified base graph is 39.3 KiB gzip after adding richer filters, -tree/detail expansion, selection policies, group behavior, and row pinning. -The CI ceiling is 42 KiB, retaining a narrow margin while optional -virtualization and the server data source remain separate. The adapter deltas -are measured independently, URL state remains below 5 KiB, the data-source -entry is 2.0 KiB, and demo initial JavaScript remains below 100 KiB gzip. +The 4.4.0 minified base static graph is 46.1 KiB gzip after adding grouping, +grid navigation, range selection, editing lifecycle state, and their shared +coordination. The CI ceiling is 48 KiB, retaining 1.9 KiB of source-attributed +regression margin. Clipboard, toolbar operations, automatic page sizing, error +overlays, and virtualization are first-use chunks; the server data source is a +separate entry. Adapter deltas remain below 6 KiB, URL state below 5 KiB, the +data-source entry is 2.2 KiB, and demo initial JavaScript remains below 100 KiB. ### Phase 4: modern-grid quality of life (3.4) +Status: core scope complete in 4.4.0. The native reading table remains the +default; grid navigation, cell selection, clipboard/paste, enhanced toolbar +operations, adaptive paging, and overlays are opt-in. + +Delivered in 4.4.0: + +- ARIA grid semantics, roving focus, full geometry-aware keyboard navigation, + focus restoration, and virtual/server row and column metadata. +- Pointer and keyboard cell-range selection, selected-cell semantics/styling, + range-aware clipboard copy, and app-owned undo/redo commands. +- Formula-safe TSV/CSV copy, opt-in parsed paste, asynchronous row validation, + field errors, dirty/pending state, optimistic rollback, and keyboard + commit/cancel behavior. +- Searchable/bulk column operations, group-safe reorder/pin/reset controls, + filter chips/counts, and complete saved-view CRUD controls. +- Viewport-driven auto page sizing, print/fullscreen controls, scroll commands, + and empty/error/retry state rendering. +- First-use chunks for clipboard, enhanced toolbar operations, auto sizing, and + error overlays so ordinary tables do not execute or download those features. + +Intentionally deferred optional scope: + +- A standalone per-cell commit mode; 4.4 row editing already provides custom + per-cell editors with row-level validation and atomic save/rollback. +- A built-in runtime filter-operator builder; typed configured operators and + app-supplied custom filter UI/functions remain available. +- An XLSX plugin and column virtualization. XLSX should be a separately + budgeted entrypoint; column virtualization needs a layout that preserves + native grouped headers, pinning, resizing, detail rows, and accessibility. + Accessibility and navigation: - Preserve a native `table` mode for reading/browsing. @@ -375,8 +419,9 @@ Accessibility and navigation: Editing and clipboard: -- Add cell and row edit modes, sync/async validation, field errors, dirty - tracking, pending state, optimistic save hooks, and cancel/commit policy. +- Add row edit mode with per-cell editors, sync/async validation, field errors, + dirty tracking, pending state, optimistic save hooks, and cancel/commit + policy. A separate per-cell commit transaction remains deferred. - Add single-cell and range selection as an opt-in feature. - Add copy as tab-separated values and opt-in paste through column parsers and edit validation. @@ -386,23 +431,23 @@ Toolbar and data operations: - Add searchable column chooser, bulk show/hide, reorder, pin, reset, and saved-view controls. -- Add filter chips, active-filter count, operator builder, and one-command - clear/reset. +- Add filter chips, active-filter count, configured operators, and one-command + clear/reset. A built-in runtime operator builder remains deferred. - Add export scopes for current page, all loaded, filtered/sorted, selected, and server-provided exports. -- Add print support and an optional XLSX entrypoint; do not put XLSX in the - base bundle. +- Add print support. A future XLSX entrypoint must remain outside the base + bundle with its own budget. - Add auto page size, scroll-to-row, scroll-to-column, full-screen hook, and empty/error/retry overlays. Server data source: -Delivered in 4.3.0 as the independently importable +Delivered across 4.3.0 and 4.4.0 as the independently importable `data-table-pro/data-source` entrypoint for offset and cursor pagination, -sorting, global/column filters, caller-defined query context, abort signals, -known/unknown totals, facets, metadata, stale-request protection, request -deduplication, caching, retry, refresh, and invalidation. Grouping, -aggregation, and lazy tree-path requests remain. +sorting, global/column filters, grouping, aggregation and expansion-path +requests, caller-defined query context, abort signals, known/unknown totals, +stable row IDs, facets, aggregates, metadata, stale-request protection, +request deduplication, caching, retry, refresh, and invalidation. - Add a typed request containing pagination/cursor, sorting, global/column filters, grouping, aggregation, expansion path, and abort signal. diff --git a/package.json b/package.json index 3a5fcd5..a7a491a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "data-table-pro", - "version": "4.3.0", + "version": "4.4.0", "description": "Reusable React data table library with shadcn, HeroUI, and The Gridcn adapters.", "type": "module", "license": "MIT", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4fd6991..0d0a074 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,7 +6,12 @@ settings: overrides: '@hono/node-server': 2.0.12 + brace-expansion: 5.0.9 esbuild: 0.28.1 + fast-uri: 3.1.5 + hono: 4.12.34 + js-yaml: 4.3.1 + nanoid: 3.3.17 importers: @@ -543,7 +548,7 @@ packages: resolution: {integrity: sha512-eWpQYr67tqJLeaSUl0Q+TquuYfUdTibpOJlUMV2FfUP7+KqCC5TufnwnlXL6mobZBJbGAYRd7ZvEBDCbLInjhg==} engines: {node: '>=20'} peerDependencies: - hono: ^4 + hono: 4.12.34 '@humanfs/core@0.19.2': resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} @@ -2114,8 +2119,8 @@ packages: resolution: {integrity: sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw==} engines: {node: '>=18'} - brace-expansion@5.0.8: - resolution: {integrity: sha512-JZyDyq3D4AUifKTPOB7DELf6XsB3WdPuNxCtob1vFXPsSXhdAiHBWJ/tJ8HAc9aH84BK+5JFZLNkJKx3G9kzQg==} + brace-expansion@5.0.9: + resolution: {integrity: sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==} engines: {node: 20 || >=22} braces@3.0.3: @@ -2538,8 +2543,8 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-uri@3.1.4: - resolution: {integrity: sha512-8JnbkQ4juDyvYs4mgFGQqg4yCYtFDtUtmp2QIQq11ZZe5CFQ5wcqm1rqDgAh/QdMySuBnPzMUiJUNZG5N/AiQw==} + fast-uri@3.1.5: + resolution: {integrity: sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw==} fastq@1.20.1: resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} @@ -2695,8 +2700,8 @@ packages: hermes-parser@0.25.1: resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} - hono@4.12.32: - resolution: {integrity: sha512-XcuyW9qE2kJn07PkecMOBd5Vq/hMy7mmGw+idz1yblbg9N17ijJODrvPkn7/dwL3Kulj8LcRJ69DLOWf91dRUg==} + hono@4.12.34: + resolution: {integrity: sha512-GqXJqY/xJkJmuloTrnV1ZEXG3fqte+VjkUqoRNZXcrUidiUOP4fMSIHHY4tsqZBK++kVyWmt/AAfSUuy57/eSA==} engines: {node: '>=16.9.0'} html-encoding-sniffer@6.0.0: @@ -2876,8 +2881,8 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@4.3.0: - resolution: {integrity: sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==} + js-yaml@4.3.1: + resolution: {integrity: sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==} hasBin: true jsdom@30.0.0: @@ -3206,8 +3211,8 @@ packages: mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - nanoid@3.3.16: - resolution: {integrity: sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==} + nanoid@3.3.17: + resolution: {integrity: sha512-xQLf0A3HOMlgHq0n247/LRuAOYmB7dXJ/DvAxGvsSBij45XtBSmQycu+F8ODbHwns/XyFZagyL1+J0Offw1E0g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -4561,9 +4566,9 @@ snapshots: transitivePeerDependencies: - tailwind-merge - '@hono/node-server@2.0.12(hono@4.12.32)': + '@hono/node-server@2.0.12(hono@4.12.34)': dependencies: - hono: 4.12.32 + hono: 4.12.34 '@humanfs/core@0.19.2': dependencies: @@ -4629,7 +4634,7 @@ snapshots: '@modelcontextprotocol/sdk@1.29.0(supports-color@7.2.0)(zod@3.25.76)': dependencies: - '@hono/node-server': 2.0.12(hono@4.12.32) + '@hono/node-server': 2.0.12(hono@4.12.34) ajv: 8.20.0 ajv-formats: 3.0.1(ajv@8.20.0) content-type: 1.0.5 @@ -4639,7 +4644,7 @@ snapshots: eventsource-parser: 3.1.0 express: 5.2.1(supports-color@7.2.0) express-rate-limit: 8.6.0(express@5.2.1(supports-color@7.2.0))(supports-color@7.2.0) - hono: 4.12.32 + hono: 4.12.34 jose: 6.2.4 json-schema-typed: 8.0.2 pkce-challenge: 5.0.1 @@ -5967,7 +5972,7 @@ snapshots: ajv@8.20.0: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.1.4 + fast-uri: 3.1.5 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 @@ -6034,7 +6039,7 @@ snapshots: transitivePeerDependencies: - supports-color - brace-expansion@5.0.8: + brace-expansion@5.0.9: dependencies: balanced-match: 4.0.4 @@ -6164,7 +6169,7 @@ snapshots: dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 - js-yaml: 4.3.0 + js-yaml: 4.3.1 parse-json: 5.2.0 optionalDependencies: typescript: '@typescript/typescript6@6.0.2' @@ -6493,7 +6498,7 @@ snapshots: fast-levenshtein@2.0.6: {} - fast-uri@3.1.4: {} + fast-uri@3.1.5: {} fastq@1.20.1: dependencies: @@ -6638,7 +6643,7 @@ snapshots: dependencies: hermes-estree: 0.25.1 - hono@4.12.32: {} + hono@4.12.34: {} html-encoding-sniffer@6.0.0(@noble/hashes@1.8.0): dependencies: @@ -6764,7 +6769,7 @@ snapshots: js-tokens@4.0.0: {} - js-yaml@4.3.0: + js-yaml@4.3.1: dependencies: argparse: 2.0.1 @@ -7002,7 +7007,7 @@ snapshots: minimatch@10.2.5: dependencies: - brace-expansion: 5.0.8 + brace-expansion: 5.0.9 minimist@1.2.8: {} @@ -7050,7 +7055,7 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - nanoid@3.3.16: {} + nanoid@3.3.17: {} natural-compare@1.4.0: {} @@ -7231,7 +7236,7 @@ snapshots: postcss@8.5.23: dependencies: - nanoid: 3.3.16 + nanoid: 3.3.17 picocolors: 1.1.1 source-map-js: 1.2.1 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index cf2d72a..77fc99d 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -3,7 +3,12 @@ allowBuilds: msw: false overrides: "@hono/node-server": 2.0.12 + brace-expansion: 5.0.9 esbuild: 0.28.1 + fast-uri: 3.1.5 + hono: 4.12.34 + js-yaml: 4.3.1 + nanoid: 3.3.17 minimumReleaseAgeExclude: - globals@17.8.0 - jsdom@30.0.0 diff --git a/scripts/check-bundle-size.mjs b/scripts/check-bundle-size.mjs index 6ae8955..9251497 100644 --- a/scripts/check-bundle-size.mjs +++ b/scripts/check-bundle-size.mjs @@ -10,7 +10,7 @@ const rootDir = path.resolve( const distDir = path.join(rootDir, "dist"); const kib = 1024; const budgets = { - base: 42 * kib, + base: 48 * kib, adapterDelta: 6 * kib, urlState: 5 * kib, dataSource: 3 * kib, From 208f74af42fbb76925d7dde4de876926dfaf931f Mon Sep 17 00:00:00 2001 From: Toby Martin Date: Sun, 9 Aug 2026 03:26:21 +0000 Subject: [PATCH 31/31] fix: stabilize pointer ranges and browser baselines --- CHANGELOG.md | 3 +- browser-tests/data-table.spec.ts | 54 +++++++++++++----- .../heroui-dark-table-chromium-linux.png | Bin 91694 -> 95140 bytes .../heroui-light-table-chromium-linux.png | Bin 95258 -> 99226 bytes .../shadcn-dark-table-chromium-linux.png | Bin 92185 -> 95276 bytes .../shadcn-light-table-chromium-linux.png | Bin 91037 -> 94142 bytes .../thegridcn-dark-table-chromium-linux.png | Bin 136310 -> 139966 bytes .../thegridcn-light-table-chromium-linux.png | Bin 146691 -> 148209 bytes dist/adapter-virtual.js | 2 +- dist/adapter.js | 2 +- dist/advanced.js | 2 +- dist/chunk-BQSRJQTY.js | 2 - dist/{chunk-4UITEBLL.js => chunk-JNI3CH7M.js} | 4 +- ...-4UITEBLL.js.map => chunk-JNI3CH7M.js.map} | 2 +- dist/chunk-NLQJKISS.js.map | 1 - dist/chunk-QFLMV3CT.js | 2 + ...-BQSRJQTY.js.map => chunk-QFLMV3CT.js.map} | 2 +- dist/{chunk-NLQJKISS.js => chunk-THSY57Y7.js} | 4 +- dist/chunk-THSY57Y7.js.map | 1 + dist/{chunk-V5A4DWYZ.js => chunk-YPKN2W27.js} | 4 +- ...-V5A4DWYZ.js.map => chunk-YPKN2W27.js.map} | 2 +- ...data-table-virtual-table-panel-GCAMBHTG.js | 2 + ...table-virtual-table-panel-GCAMBHTG.js.map} | 2 +- ...data-table-virtual-table-panel-LEQ3RGTM.js | 2 - dist/heroui-virtual.js | 2 +- dist/heroui.js | 2 +- dist/index.js | 2 +- dist/thegridcn-virtual.js | 2 +- dist/thegridcn.js | 2 +- dist/virtual.js | 2 +- .../data-table-grid-accessibility.test.tsx | 4 +- .../data-table/data-table-table-panel.tsx | 3 + 32 files changed, 72 insertions(+), 40 deletions(-) delete mode 100644 dist/chunk-BQSRJQTY.js rename dist/{chunk-4UITEBLL.js => chunk-JNI3CH7M.js} (99%) rename dist/{chunk-4UITEBLL.js.map => chunk-JNI3CH7M.js.map} (99%) delete mode 100644 dist/chunk-NLQJKISS.js.map create mode 100644 dist/chunk-QFLMV3CT.js rename dist/{chunk-BQSRJQTY.js.map => chunk-QFLMV3CT.js.map} (92%) rename dist/{chunk-NLQJKISS.js => chunk-THSY57Y7.js} (77%) create mode 100644 dist/chunk-THSY57Y7.js.map rename dist/{chunk-V5A4DWYZ.js => chunk-YPKN2W27.js} (86%) rename dist/{chunk-V5A4DWYZ.js.map => chunk-YPKN2W27.js.map} (99%) create mode 100644 dist/data-table-virtual-table-panel-GCAMBHTG.js rename dist/{data-table-virtual-table-panel-LEQ3RGTM.js.map => data-table-virtual-table-panel-GCAMBHTG.js.map} (62%) delete mode 100644 dist/data-table-virtual-table-panel-LEQ3RGTM.js diff --git a/CHANGELOG.md b/CHANGELOG.md index ea4bb7e..4db92e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,7 +26,8 @@ opt-in APIs. It removes no public prop, type, or package entrypoint. focus restoration from interactive descendants. - Added controlled or uncontrolled rectangular cell-range selection through pointer drag and Shift+keyboard navigation, selection styling/ARIA state, - imperative selection commands, and app-owned undo/redo command hooks. + imperative selection commands, app-owned undo/redo command hooks, and + suppression of native text dragging while a pointer range is active. - Added formula-safe TSV/CSV clipboard copy, selected-range copy, opt-in parsed paste callbacks, and flattened expanded-row ordering. - Added asynchronous row validation, field/general errors, dirty and pending diff --git a/browser-tests/data-table.spec.ts b/browser-tests/data-table.spec.ts index aaa9fb8..30dbe17 100644 --- a/browser-tests/data-table.spec.ts +++ b/browser-tests/data-table.spec.ts @@ -1,5 +1,5 @@ import AxeBuilder from "@axe-core/playwright"; -import { expect, test } from "@playwright/test"; +import { expect, test, type Page } from "@playwright/test"; const adapters = [ { key: "shadcn", label: "shadcn" }, @@ -8,6 +8,17 @@ const adapters = [ ] as const; const themes = ["light", "dark"] as const; +const hideContentSizedCards = async (page: Page) => { + await page + .getByRole("heading", { name: "Content-sized cards" }) + .evaluate((heading) => { + const section = heading.closest("section"); + if (section) { + section.hidden = true; + } + }); +}; + for (const adapter of adapters) { for (const theme of themes) { test(`${adapter.label} renders an accessible ${theme} layout`, async ({ @@ -22,14 +33,7 @@ for (const adapter of adapters) { name: `${theme === "light" ? "Light" : "Dark"} theme`, }) .click(); - await page - .getByRole("heading", { name: "Content-sized cards" }) - .evaluate((heading) => { - const section = heading.closest("section"); - if (section) { - section.hidden = true; - } - }); + await hideContentSizedCards(page); const shell = page.locator("main.demo-shell"); const table = page @@ -43,6 +47,14 @@ for (const adapter of adapters) { name: `${adapter.label} employees`, }), ).toBeVisible(); + // These controls are loaded from an optional chunk. Waiting for them + // keeps every adapter/theme screenshot on the same settled UI state. + await expect( + table.getByRole("button", { name: "Print table" }), + ).toBeVisible(); + await expect( + table.getByRole("button", { name: "Enter fullscreen" }), + ).toBeVisible(); const layout = await table.evaluate((element) => { const root = element.getBoundingClientRect(); @@ -163,7 +175,9 @@ test("responsive behavior follows table container boundaries", async ({ await setContainerWidth(768); await expect(header("role")).toBeVisible(); - await expect(table.getByPlaceholder("Search rows...")).toBeVisible(); + await expect( + table.getByPlaceholder("Search name, role, status, manager..."), + ).toBeVisible(); await setContainerWidth(1023); await expect(header("location")).toHaveCount(0); @@ -202,16 +216,28 @@ test("interactive grid navigation follows the rendered cell geometry", async ({ test("interactive grid selects a pointer-dragged cell range", async ({ page }) => { await page.goto("/"); + await hideContentSizedCards(page); const grid = page.getByRole("grid").first(); - const firstCell = grid.getByRole("gridcell").nth(0); - const fourthCell = grid.getByRole("gridcell").nth(3); + // The demo's first two cells are detail and row-selection utilities. Range + // selection intentionally begins only from data cells. + const firstCell = grid.locator( + '[role="gridcell"][data-grid-row-index="0"][data-grid-column-index="2"]', + ); + const fourthCell = grid.locator( + '[role="gridcell"][data-grid-row-index="0"][data-grid-column-index="5"]', + ); const start = await firstCell.boundingBox(); const end = await fourthCell.boundingBox(); expect(start).not.toBeNull(); expect(end).not.toBeNull(); - await page.mouse.move(start!.x + 8, start!.y + 8); + await page.mouse.move( + start!.x + start!.width / 2, + start!.y + start!.height / 2, + ); await page.mouse.down(); - await page.mouse.move(end!.x + 8, end!.y + 8, { steps: 4 }); + await page.mouse.move(end!.x + end!.width / 2, end!.y + end!.height / 2, { + steps: 4, + }); await page.mouse.up(); await expect(firstCell).toHaveAttribute("aria-selected", "true"); await expect(fourthCell).toHaveAttribute("aria-selected", "true"); diff --git a/browser-tests/data-table.spec.ts-snapshots/heroui-dark-table-chromium-linux.png b/browser-tests/data-table.spec.ts-snapshots/heroui-dark-table-chromium-linux.png index a43f894c2824649477d46761c9618720370a4603..00385b9b3244d106cc8cd8e7ebec04e8d7eca607 100644 GIT binary patch literal 95140 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 literal 91694 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 z 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

    mtlBUS#Olg2MTB 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 diff --git a/browser-tests/data-table.spec.ts-snapshots/shadcn-light-table-chromium-linux.png b/browser-tests/data-table.spec.ts-snapshots/shadcn-light-table-chromium-linux.png index 5d6baadd35454d1f3c31d7e3e1f27cef46a41ee7..93be151c50aa262a432917573bde10f90080a94b 100644 GIT binary patch literal 94142 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

    \n ) : null}\n {description ? (\n \n {description}\n

    \n ) : null}\n \n ) : null}\n\n
    \n \n {showSearch ? (\n <>\n
    \n \n ) => {\n onToolbarQueryValueChange(event.target.value);\n }}\n placeholder={toolbarQueryPlaceholder}\n />\n \n \n \n {toolbarQueryValue ? (\n \n {\n onToolbarQueryValueChange(\"\");\n }}\n aria-label={labels.clearSearch}\n title={labels.clearSearch}\n >\n \n \n \n ) : null}\n \n
    \n \n \n {\n setIsCompactSearchVisible((current) => !current);\n }}\n >\n \n {labels.searchTable}\n \n \n {labels.searchTable}\n \n \n ) : null}\n\n {showActions ? (\n
    \n {primaryActions.map((action) => {\n const collapsesToIcon =\n !action.iconOnly && Boolean(action.icon);\n const button = (\n {\n void action.onClick({\n rows: allRows,\n openFileDialog,\n });\n }}\n disabled={action.disabled}\n aria-label={action.label}\n title={action.iconOnly ? undefined : action.label}\n >\n {action.icon ? : null}\n {action.iconOnly ? (\n {action.label}\n ) : collapsesToIcon ? (\n \n {action.label}\n \n ) : (\n {action.label}\n )}\n \n );\n\n return action.iconOnly ? (\n \n {button}\n {action.label}\n \n ) : (\n button\n );\n })}\n
    \n ) : null}\n\n {hasVisibleCompactToolbar ? (\n \n {compactToolbar ?? customToolbar}\n
    \n ) : null}\n\n
    \n\n \n {selectedRowIds.length ? (\n \n {selectedRowCountLabel}\n
    \n ) : null}\n {selectedRowIds.length\n ? selectionActions.map((action) => {\n const Icon = action.icon;\n const context = {\n rows: selectedRows,\n rowIds: selectedRowIds,\n };\n const disabled =\n typeof action.disabled === \"function\"\n ? action.disabled(selectedRows, context)\n : action.disabled;\n\n return (\n \n \n {\n void action.onClick(context);\n }}\n aria-label={action.label}\n >\n {Icon ? : null}\n {action.label}\n \n \n {action.label}\n \n );\n })\n : null}\n\n {hasVisibleOptions ? (\n \n \n \n \n {labels.tableOptions}\n \n \n \n {labels.tableOptions}\n \n {onShowHiddenRowsChange && hiddenRowsLabel ? (\n {\n onShowHiddenRowsChange(checked === true);\n }}\n >\n {labels.showHiddenRows(hiddenRowsLabel)}\n \n ) : null}\n \n {enableDensityToggle ? (\n <>\n \n {labels.density}\n \n {(\n [\n [\"compact\", labels.compactDensity],\n [\"comfortable\", labels.comfortableDensity],\n [\"spacious\", labels.spaciousDensity],\n ] as const\n ).map(([nextDensity, label]) => (\n {\n onDensityChange(nextDensity);\n }}\n >\n {label}\n \n ))}\n \n \n ) : null}\n {hasToolbarOperationsMenu\n ? renderToolbarDataOperations(\"menu\")\n : null}\n {!enableToolbarColumnChooser &&\n columnVisibilityOptions.some((column) => column.canHide) ? (\n <>\n \n {labels.columns}\n \n {columnVisibilityOptions\n .filter((column) => column.canHide)\n .map((column) => (\n {\n onColumnVisibilityChange?.(\n column.id,\n checked === true,\n );\n }}\n >\n {column.label}\n \n ))}\n \n \n ) : null}\n {enableColumnPinning && !enableToolbarColumnChooser ? (\n <>\n \n \n {labels.pinLeft} / {labels.pinRight}\n \n \n {columnVisibilityOptions.map((column) => (\n {\n event.preventDefault();\n }}\n >\n \n {column.label}\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, \"left\");\n }}\n >\n L\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, \"right\");\n }}\n >\n R\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, false);\n }}\n >\n -\n \n \n ))}\n \n \n ) : null}\n {enableGrouping && groupableColumns.length ? (\n <>\n \n {labels.grouping}\n \n {groupableColumns.map((column) => {\n const columnLabel =\n typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : column.id;\n const isGrouped = column.getIsGrouped();\n return (\n {\n column.toggleGrouping();\n }}\n >\n {isGrouped\n ? labels.ungroup(columnLabel)\n : labels.groupBy(columnLabel)}\n \n );\n })}\n \n \n ) : null}\n \n \n ) : null}\n\n {showViewToggle && enableViewToggle && onViewModeChange ? (\n \n \n \n {\n onViewModeChange(\"table\");\n }}\n >\n \n \n {labels.switchToTableView ??\n DATA_TABLE_DEFAULT_LABELS.switchToTableView}\n \n \n \n \n {labels.tableView ??\n DATA_TABLE_DEFAULT_LABELS.tableView}\n \n \n \n \n {\n onViewModeChange(\"card\");\n }}\n >\n \n \n {labels.switchToCardView ??\n DATA_TABLE_DEFAULT_LABELS.switchToCardView}\n \n \n \n \n {labels.cardView ??\n DATA_TABLE_DEFAULT_LABELS.cardView}\n \n \n \n ) : null}\n\n {showTrailingActions\n ? trailingActions.map((action) => {\n const collapsesToIcon =\n !action.iconOnly && Boolean(action.icon);\n const button = (\n {\n void action.onClick({\n rows: allRows,\n openFileDialog,\n });\n }}\n disabled={action.disabled}\n aria-label={action.label}\n title={action.iconOnly ? undefined : action.label}\n className={`size-7 shrink-0 ${action.iconOnly ? \"\" : `${collapsesToIcon ? \"px-0 @min-[768px]/data-table:px-2.5\" : \"\"} @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit`} ${action.iconOnly || collapsesToIcon ? compactToolbarIconButtonClassName : \"\"} ${uiClassNames.toolbarInputButton ?? \"\"}`}\n >\n {action.icon ? (\n \n ) : null}\n {action.iconOnly ? (\n {action.label}\n ) : collapsesToIcon ? (\n \n {action.label}\n \n ) : (\n {action.label}\n )}\n \n );\n\n return action.iconOnly ? (\n \n {button}\n {action.label}\n \n ) : (\n button\n );\n })\n : null}\n \n \n\n {showSearch && isCompactSearchVisible ? (\n \n \n ) => {\n onToolbarQueryValueChange(event.target.value);\n }}\n placeholder={toolbarQueryPlaceholder}\n />\n \n \n \n {toolbarQueryValue ? (\n \n {\n onToolbarQueryValueChange(\"\");\n }}\n aria-label={labels.clearSearch}\n title={labels.clearSearch}\n >\n \n \n \n ) : null}\n \n \n ) : null}\n\n {columnFilters.length ? (\n \n {columnFilters.map((filter) => (\n \n ))}\n {columnFilters.some((filter) =>\n hasColumnFilterValue(filter.value),\n ) ? (\n \n {labels.clearFilters}\n \n ) : null}\n \n ) : null}\n\n {enableToolbarFilterChips\n ? renderToolbarDataOperations(\"chips\")\n : null}\n\n {enableGrouping && groupedColumns.length ? (\n \n {labels.grouping}:\n {groupedColumns.map((column, groupingIndex) => {\n const columnLabel =\n typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : column.id;\n const moveGrouping = (nextIndex: number) => {\n const nextGrouping = [...table.getState().grouping];\n const [groupingId] = nextGrouping.splice(groupingIndex, 1);\n if (groupingId === undefined) return;\n nextGrouping.splice(nextIndex, 0, groupingId);\n table.setGrouping(nextGrouping);\n };\n return (\n \n moveGrouping(groupingIndex - 1)}\n aria-label={labels.moveGroupingEarlier(columnLabel)}\n >\n \n \n column.toggleGrouping()}\n aria-label={labels.removeGrouping(columnLabel)}\n >\n {columnLabel} ×\n \n moveGrouping(groupingIndex + 1)}\n aria-label={labels.moveGroupingLater(columnLabel)}\n >\n \n \n \n );\n })}\n \n ) : null}\n\n \n\n {showCustomToolbar && customToolbar ? (\n \n {customToolbar}\n \n ) : null}\n \n );\n };\n\n function ToolbarColumnFilterControl({\n filter,\n labels,\n onColumnFilterChange,\n }: {\n filter: DataTableToolbarColumnFilter;\n labels: Required;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n }) {\n const [facetQuery, setFacetQuery] = React.useState(\"\");\n if (filter.type === \"text\") {\n return (\n \n ) => {\n onColumnFilterChange(filter.id, event.target.value);\n }}\n placeholder={filter.placeholder ?? filter.label}\n aria-label={`${labels.filters}: ${filter.label}`}\n />\n \n \n \n \n );\n }\n\n if (filter.type === \"numberRange\" || filter.type === \"dateRange\") {\n const range = normalizeToolbarRangeValue(filter.value);\n const inputType = filter.type === \"numberRange\" ? \"number\" : \"date\";\n const fromLabel =\n labels.filterFrom ?? DATA_TABLE_DEFAULT_LABELS.filterFrom;\n const toLabel = labels.filterTo ?? DATA_TABLE_DEFAULT_LABELS.filterTo;\n\n return (\n \n \n ) => {\n onColumnFilterChange(filter.id, {\n ...range,\n from: parseRangeInputValue(event.target.value, inputType),\n });\n }}\n aria-label={`${filter.label}: ${fromLabel}`}\n />\n {fromLabel}\n \n \n ) => {\n onColumnFilterChange(filter.id, {\n ...range,\n to: parseRangeInputValue(event.target.value, inputType),\n });\n }}\n aria-label={`${filter.label}: ${toLabel}`}\n />\n {toLabel}\n \n \n );\n }\n\n const isBoolean = filter.type === \"boolean\";\n const isFaceted = filter.type === \"faceted\";\n const booleanOptions = [\n {\n label:\n filter.trueLabel ??\n labels.filterTrue ??\n DATA_TABLE_DEFAULT_LABELS.filterTrue,\n value: \"true\",\n },\n {\n label:\n filter.falseLabel ??\n labels.filterFalse ??\n DATA_TABLE_DEFAULT_LABELS.filterFalse,\n value: \"false\",\n },\n ];\n const options: DataTableToolbarColumnFilter[\"options\"] = isBoolean\n ? booleanOptions\n : filter.options;\n const visibleOptions =\n isFaceted && facetQuery\n ? options.filter((option) =>\n option.label.toLocaleLowerCase().includes(facetQuery.toLocaleLowerCase()),\n )\n : options;\n const selectedValue =\n typeof filter.value === \"string\" || typeof filter.value === \"boolean\"\n ? String(filter.value)\n : \"\";\n const selectedValues = Array.isArray(filter.value)\n ? filter.value.map(String)\n : selectedValue\n ? [selectedValue]\n : [];\n const selectedLabel =\n selectedValues.length === 0\n ? filter.label\n : `${filter.label}: ${\n selectedValues.length === 1\n ? (options.find(\n (option) => option.value === String(selectedValues[0]),\n )?.label ?? selectedValues[0])\n : selectedValues.length\n }`;\n\n return (\n \n \n \n \n \n {filter.label}\n {isFaceted && filter.searchable !== false ? (\n
    \n \n ) => {\n setFacetQuery(event.target.value);\n }}\n placeholder={filter.searchPlaceholder ?? labels.facetSearch(filter.label)}\n aria-label={labels.facetSearch(filter.label)}\n />\n \n \n \n \n
    \n ) : null}\n \n {filter.type === \"select\" || isBoolean || isFaceted ? (\n {\n onColumnFilterChange(filter.id, \"\");\n }}\n >\n {labels.allFilterOptions ??\n DATA_TABLE_DEFAULT_LABELS.allFilterOptions}\n \n ) : null}\n {visibleOptions.map((option) => (\n {\n if (filter.type === \"select\" || isBoolean) {\n onColumnFilterChange(\n filter.id,\n checked === true ? option.value : \"\",\n );\n return;\n }\n\n const nextValues = new Set(selectedValues);\n if (checked === true) {\n nextValues.add(option.value);\n } else {\n nextValues.delete(option.value);\n }\n onColumnFilterChange(filter.id, Array.from(nextValues));\n }}\n >\n {option.label}\n {option.count !== undefined ? (\n {option.count}\n ) : null}\n \n ))}\n \n
    \n
    \n );\n }\n}\n\nfunction hasColumnFilterValue(value: unknown) {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n\n if (value && typeof value === \"object\") {\n if (\"from\" in value || \"to\" in value) {\n return Object.values(value).some(hasColumnFilterValue);\n }\n\n return true;\n }\n\n return value !== undefined && value !== null && value !== \"\";\n}\n\nfunction normalizeToolbarRangeValue(value: unknown): {\n from?: number | string;\n to?: number | string;\n} {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return {};\n }\n\n const range = value as { from?: unknown; to?: unknown };\n return {\n ...(typeof range.from === \"number\" || typeof range.from === \"string\"\n ? { from: range.from }\n : {}),\n ...(typeof range.to === \"number\" || typeof range.to === \"string\"\n ? { to: range.to }\n : {}),\n };\n}\n\nfunction parseRangeInputValue(value: string, inputType: \"number\" | \"date\") {\n if (!value) {\n return undefined;\n }\n\n return inputType === \"number\" ? Number(value) : value;\n}\n","import * as React from \"react\";\nimport { DataTableTablePanel } from \"./data-table-table-panel\";\nimport type { DataTableTablePanelProps } from \"./data-table-table-panel\";\n\nconst LazyDataTableVirtualTablePanel = React.lazy(async () => {\n const module = await import(\"./data-table-virtual-table-panel\");\n return { default: module.DataTableVirtualTablePanel };\n}) as unknown as typeof DataTableTablePanel;\n\nexport function DataTableTablePanelRouter(\n props: DataTableTablePanelProps,\n) {\n const config =\n typeof props.virtualization === \"object\"\n ? props.virtualization\n : undefined;\n const enabled =\n props.virtualization === true || config?.enabled === true;\n\n if (!enabled) {\n return ;\n }\n\n return (\n \n }\n >\n \n \n );\n}\n","import type {\n DataTableSavedView,\n DataTableSavedViewSlice,\n DataTableSavedViewsChangeOperation,\n DataTableSavedViewsConfig,\n DataTableSavedViewsPayload,\n DataTableState,\n} from \"../types\";\n\nconst STORAGE_PREFIX = \"data-table-pro:saved-views:\";\nconst DEFAULT_VERSION = 1;\nconst DEFAULT_SLICES: Array = [\n \"sorting\",\n \"columnVisibility\",\n \"columnFilters\",\n \"grouping\",\n \"columnOrder\",\n \"columnPinning\",\n \"rowPinning\",\n \"columnSizing\",\n \"density\",\n \"viewMode\",\n \"showHiddenRows\",\n \"globalFilter\",\n];\nlet fallbackId = 0;\n\nexport function readDataTableSavedViews(\n config: DataTableSavedViewsConfig | undefined,\n): Array {\n const storage = resolveStorage(config);\n if (!config || !storage) {\n return [];\n }\n\n let serialized: string | null;\n try {\n serialized = storage.getItem(getStorageKey(config.key));\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return [];\n }\n if (!serialized) {\n return [];\n }\n\n let parsed: unknown;\n try {\n parsed = (config.deserialize ?? JSON.parse)(serialized);\n } catch (error) {\n config.onError?.({ error, operation: \"deserialize\" });\n return [];\n }\n\n if (!isRecord(parsed) || !(\"version\" in parsed) || !(\"views\" in parsed)) {\n return [];\n }\n\n const targetVersion = config.version ?? DEFAULT_VERSION;\n let candidate: unknown = parsed.views;\n if (parsed.version !== targetVersion) {\n if (!config.migrate) {\n return [];\n }\n try {\n candidate = config.migrate(\n { version: parsed.version, views: parsed.views },\n targetVersion,\n );\n } catch (error) {\n config.onError?.({ error, operation: \"migrate\" });\n return [];\n }\n }\n\n if (!Array.isArray(candidate)) {\n return [];\n }\n\n return candidate\n .map((view) => validateSavedView(view, config.slices))\n .filter((view): view is DataTableSavedView => Boolean(view));\n}\n\nexport function createDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n name: string,\n state: DataTableState,\n) {\n const normalizedName = name.trim();\n if (!config || !normalizedName) {\n return undefined;\n }\n\n const now = new Date().toISOString();\n const view: DataTableSavedView = {\n id: createSavedViewId(),\n name: normalizedName,\n createdAt: now,\n updatedAt: now,\n state: selectSavedViewSlices(state, config.slices),\n };\n const views = [...readDataTableSavedViews(config), view];\n return writeViews(config, views, \"create\") ? cloneSavedView(view) : undefined;\n}\n\nexport function renameDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n id: string,\n name: string,\n) {\n const normalizedName = name.trim();\n if (!config || !normalizedName) {\n return undefined;\n }\n\n let renamed: DataTableSavedView | undefined;\n const views = readDataTableSavedViews(config).map((view) => {\n if (view.id !== id) {\n return view;\n }\n renamed = {\n ...view,\n name: normalizedName,\n updatedAt: new Date().toISOString(),\n };\n return renamed;\n });\n if (!renamed) {\n return undefined;\n }\n\n return writeViews(config, views, \"rename\")\n ? cloneSavedView(renamed)\n : undefined;\n}\n\nexport function deleteDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n id: string,\n) {\n if (!config) {\n return false;\n }\n\n const current = readDataTableSavedViews(config);\n const views = current.filter((view) => view.id !== id);\n return views.length !== current.length && writeViews(config, views, \"delete\");\n}\n\nexport function clearDataTableSavedViews(\n config: DataTableSavedViewsConfig | undefined,\n) {\n const storage = resolveStorage(config);\n if (!config || !storage) {\n return false;\n }\n\n try {\n storage.removeItem(getStorageKey(config.key));\n } catch (error) {\n config.onError?.({ error, operation: \"remove\" });\n return false;\n }\n config.onChange?.([], \"clear\");\n return true;\n}\n\nfunction writeViews(\n config: DataTableSavedViewsConfig,\n views: Array,\n operation: DataTableSavedViewsChangeOperation,\n) {\n const storage = resolveStorage(config);\n if (!storage) {\n return false;\n }\n\n let serialized: string;\n try {\n const payload: DataTableSavedViewsPayload = {\n version: config.version ?? DEFAULT_VERSION,\n views,\n };\n serialized = (config.serialize ?? JSON.stringify)(payload);\n } catch (error) {\n config.onError?.({ error, operation: \"serialize\" });\n return false;\n }\n\n try {\n storage.setItem(getStorageKey(config.key), serialized);\n } catch (error) {\n config.onError?.({ error, operation: \"write\" });\n return false;\n }\n const snapshots = views.map(cloneSavedView);\n config.onChange?.(snapshots, operation);\n return true;\n}\n\nfunction selectSavedViewSlices(\n state: DataTableState,\n slices: Array | undefined,\n) {\n const selected = new Set(slices ?? DEFAULT_SLICES);\n const snapshot: Partial = {};\n for (const slice of Object.keys(state) as Array) {\n if (selected.has(slice)) {\n Object.assign(snapshot, {\n [slice]: cloneStateSlice(slice, state[slice]),\n });\n }\n }\n return snapshot;\n}\n\nfunction validateSavedView(\n value: unknown,\n slices: Array | undefined,\n): DataTableSavedView | undefined {\n if (\n !isRecord(value) ||\n typeof value.id !== \"string\" ||\n !value.id ||\n typeof value.name !== \"string\" ||\n !value.name.trim() ||\n typeof value.createdAt !== \"string\" ||\n typeof value.updatedAt !== \"string\"\n ) {\n return undefined;\n }\n\n return {\n id: value.id,\n name: value.name.trim(),\n createdAt: value.createdAt,\n updatedAt: value.updatedAt,\n state: validateState(value.state, slices),\n };\n}\n\nfunction validateState(\n value: unknown,\n slices: Array | undefined,\n) {\n if (!isRecord(value)) {\n return {};\n }\n\n const selected = new Set(slices ?? DEFAULT_SLICES);\n const state: Partial = {};\n const sorting = validateSorting(value.sorting);\n if (selected.has(\"sorting\") && sorting) state.sorting = sorting;\n const pagination = validatePagination(value.pagination);\n if (selected.has(\"pagination\") && pagination) state.pagination = pagination;\n const rowSelection = validateBooleanRecord(value.rowSelection);\n if (selected.has(\"rowSelection\") && rowSelection) {\n state.rowSelection = rowSelection;\n }\n const visibility = validateBooleanRecord(value.columnVisibility);\n if (selected.has(\"columnVisibility\") && visibility) {\n state.columnVisibility = visibility;\n }\n const filters = validateFilters(value.columnFilters);\n if (selected.has(\"columnFilters\") && filters) state.columnFilters = filters;\n const grouping = validateStringArray(value.grouping);\n if (selected.has(\"grouping\") && grouping) state.grouping = grouping;\n const expanded =\n value.expanded === true\n ? true\n : validateBooleanRecord(value.expanded);\n if (selected.has(\"expanded\") && expanded !== undefined) {\n state.expanded = expanded;\n }\n const order = validateStringArray(value.columnOrder);\n if (selected.has(\"columnOrder\") && order) state.columnOrder = order;\n const pinning = validatePinning(value.columnPinning);\n if (selected.has(\"columnPinning\") && pinning) {\n state.columnPinning = pinning;\n }\n const rowPinning = validateRowPinning(value.rowPinning);\n if (selected.has(\"rowPinning\") && rowPinning) {\n state.rowPinning = rowPinning;\n }\n const sizing = validateSizingRecord(value.columnSizing);\n if (selected.has(\"columnSizing\") && sizing) state.columnSizing = sizing;\n if (\n selected.has(\"density\") &&\n (value.density === \"compact\" ||\n value.density === \"comfortable\" ||\n value.density === \"spacious\")\n ) {\n state.density = value.density;\n }\n if (\n selected.has(\"viewMode\") &&\n (value.viewMode === \"table\" || value.viewMode === \"card\")\n ) {\n state.viewMode = value.viewMode;\n }\n if (selected.has(\"showHiddenRows\") && typeof value.showHiddenRows === \"boolean\") {\n state.showHiddenRows = value.showHiddenRows;\n }\n if (selected.has(\"globalFilter\") && typeof value.globalFilter === \"string\") {\n state.globalFilter = value.globalFilter;\n }\n return state;\n}\n\nfunction cloneSavedView(view: DataTableSavedView): DataTableSavedView {\n return {\n ...view,\n state: validateState(view.state, Object.keys(view.state) as Array),\n };\n}\n\nfunction cloneStateSlice(\n slice: DataTableSavedViewSlice,\n value: unknown,\n) {\n if (Array.isArray(value)) {\n return (value as Array).map((item) =>\n isRecord(item) ? { ...item } : item,\n );\n }\n if (isRecord(value)) {\n if (slice === \"columnPinning\" || slice === \"rowPinning\") {\n return {\n ...(slice === \"columnPinning\"\n ? {\n left: Array.isArray(value.left)\n ? [...(value.left as Array)]\n : undefined,\n right: Array.isArray(value.right)\n ? [...(value.right as Array)]\n : undefined,\n }\n : {\n top: Array.isArray(value.top)\n ? [...(value.top as Array)]\n : undefined,\n bottom: Array.isArray(value.bottom)\n ? [...(value.bottom as Array)]\n : undefined,\n }),\n };\n }\n return { ...value };\n }\n return value;\n}\n\nfunction validateSorting(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value\n .filter(\n (item): item is { id: string; desc?: boolean } =>\n isRecord(item) && typeof item.id === \"string\",\n )\n .map((item) => ({ id: item.id, desc: Boolean(item.desc) }));\n}\n\nfunction validatePagination(value: unknown) {\n if (\n !isRecord(value) ||\n !Number.isInteger(value.pageIndex) ||\n (value.pageIndex as number) < 0 ||\n !Number.isInteger(value.pageSize) ||\n (value.pageSize as number) < 1\n ) {\n return undefined;\n }\n return {\n pageIndex: value.pageIndex as number,\n pageSize: value.pageSize as number,\n };\n}\n\nfunction validateFilters(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value\n .filter(\n (item): item is { id: string; value: unknown } =>\n isRecord(item) &&\n typeof item.id === \"string\" &&\n Object.prototype.hasOwnProperty.call(item, \"value\"),\n )\n .map((item) => ({ id: item.id, value: item.value }));\n}\n\nfunction validatePinning(value: unknown) {\n if (!isRecord(value)) return undefined;\n return {\n left: validateStringArray(value.left) ?? [],\n right: validateStringArray(value.right) ?? [],\n };\n}\n\nfunction validateRowPinning(value: unknown) {\n if (!isRecord(value)) return undefined;\n return {\n top: validateStringArray(value.top) ?? [],\n bottom: validateStringArray(value.bottom) ?? [],\n };\n}\n\nfunction validateBooleanRecord(value: unknown) {\n if (!isRecord(value)) return undefined;\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, boolean] => typeof entry[1] === \"boolean\",\n ),\n );\n}\n\nfunction validateSizingRecord(value: unknown) {\n if (!isRecord(value)) return undefined;\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, number] =>\n typeof entry[1] === \"number\" &&\n Number.isFinite(entry[1]) &&\n entry[1] >= 0,\n ),\n );\n}\n\nfunction validateStringArray(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value.filter((item): item is string => typeof item === \"string\");\n}\n\nfunction resolveStorage(config: DataTableSavedViewsConfig | undefined) {\n if (!config) {\n return undefined;\n }\n if (config.storage) {\n return config.storage;\n }\n if (typeof window === \"undefined\") {\n return undefined;\n }\n try {\n return window.localStorage;\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return undefined;\n }\n}\n\nfunction createSavedViewId() {\n if (typeof globalThis.crypto?.randomUUID === \"function\") {\n return globalThis.crypto.randomUUID();\n }\n fallbackId += 1;\n return `view-${Date.now().toString(36)}-${fallbackId.toString(36)}`;\n}\n\nfunction getStorageKey(key: string) {\n return `${STORAGE_PREFIX}${key}`;\n}\n\nfunction isRecord(value: unknown): value is Record {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n","import * as React from \"react\";\nimport { IconDownload } from \"../icons\";\nimport type {\n ColumnFiltersState,\n ColumnPinningState,\n OnChangeFn,\n Table as TanStackTable,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableColumnFixed,\n DataTableLabels,\n DataTableProps,\n} from \"../types\";\nimport {\n exportDataTableCsv,\n getAccessorKey,\n getColumnId,\n getDataTableLeafColumns,\n hasFilterValue,\n normalizeColumnFilterOptions,\n startCase,\n} from \"./data-table-utils\";\n\nexport function useDataTableToolbarFeatures({\n columns,\n currentColumnFilters,\n currentColumnPinning,\n effectiveColumnVisibility,\n enableColumnFilters,\n handleColumnFiltersChange,\n handleColumnPinningChange,\n labels,\n table,\n toolbarActions,\n visibleData,\n csvExport,\n}: {\n columns: DataTableProps[\"columns\"];\n currentColumnFilters: ColumnFiltersState;\n currentColumnPinning: ColumnPinningState;\n effectiveColumnVisibility: VisibilityState;\n enableColumnFilters: boolean | undefined;\n handleColumnFiltersChange: OnChangeFn;\n handleColumnPinningChange: OnChangeFn;\n labels: DataTableLabels;\n table: TanStackTable;\n toolbarActions: DataTableProps[\"toolbarActions\"];\n visibleData: Array;\n csvExport: DataTableProps[\"csvExport\"];\n}) {\n const columnVisibilityOptions = React.useMemo(() => {\n return getDataTableLeafColumns(columns).map(({ column, index }) => {\n const id = getColumnId(column, index);\n const header = column.header;\n const accessorKey = getAccessorKey(column);\n const label =\n typeof header === \"string\"\n ? header\n : accessorKey\n ? startCase(accessorKey)\n : startCase(id);\n\n const pinned: false | DataTableColumnFixed =\n currentColumnPinning.left?.includes(id) === true\n ? \"left\"\n : currentColumnPinning.right?.includes(id) === true\n ? \"right\"\n : false;\n\n return {\n id,\n label,\n visible: effectiveColumnVisibility[id] !== false,\n canHide: column.enableHiding !== false,\n pinned,\n };\n });\n }, [columns, currentColumnPinning, effectiveColumnVisibility]);\n\n const toolbarColumnFilters = React.useMemo(() => {\n if (enableColumnFilters === false) {\n return [];\n }\n\n return getDataTableLeafColumns(columns).flatMap(({ column, index }) => {\n const filter = column.meta?.filter;\n if (!filter) {\n return [];\n }\n\n const id = getColumnId(column, index);\n const header = column.header;\n const accessorKey = getAccessorKey(column);\n const label =\n filter.label ??\n (typeof header === \"string\"\n ? header\n : accessorKey\n ? startCase(accessorKey)\n : startCase(id));\n const state = currentColumnFilters.find((item) => item.id === id);\n const configuredFacetOptions = filter.faceting?.options;\n const facetedMinMax =\n filter.type === \"numberRange\"\n ? table.getColumn(id)?.getFacetedMinMaxValues()\n : undefined;\n const rawOptions =\n filter.type === \"faceted\" && configuredFacetOptions\n ? typeof configuredFacetOptions === \"function\"\n ? configuredFacetOptions({ rows: visibleData })\n : configuredFacetOptions\n : filter.type === \"faceted\"\n ? Array.from(table.getColumn(id)?.getFacetedUniqueValues() ?? []).map(\n ([value, count]) => ({\n label:\n filter.faceting?.getOptionLabel?.(value as never) ??\n String(value),\n value: String(value),\n count,\n }),\n )\n : typeof filter.options === \"function\"\n ? filter.options({ rows: visibleData })\n : (filter.options ?? []);\n\n return [\n {\n id,\n label,\n type: filter.type,\n value: state?.value,\n placeholder: filter.placeholder,\n options: normalizeColumnFilterOptions(rawOptions),\n searchable: filter.faceting?.searchable,\n searchPlaceholder: filter.faceting?.searchPlaceholder,\n trueLabel: filter.trueLabel,\n falseLabel: filter.falseLabel,\n min: filter.min ?? facetedMinMax?.[0],\n max: filter.max ?? facetedMinMax?.[1],\n step: filter.step,\n },\n ];\n });\n }, [\n columns,\n currentColumnFilters,\n enableColumnFilters,\n table,\n visibleData,\n ]);\n\n const handleToolbarColumnFilterChange = React.useCallback(\n (columnId: string, value: unknown) => {\n handleColumnFiltersChange((current) => {\n const next = current.filter((filter) => filter.id !== columnId);\n if (hasFilterValue(value)) {\n next.push({ id: columnId, value });\n }\n return next;\n });\n },\n [handleColumnFiltersChange],\n );\n\n const handleClearColumnFilters = React.useCallback(() => {\n handleColumnFiltersChange([]);\n }, [handleColumnFiltersChange]);\n\n const handleToolbarColumnPinningChange = React.useCallback(\n (columnId: string, side: DataTableColumnFixed | false) => {\n handleColumnPinningChange((current) => {\n const left = (current.left ?? []).filter((id) => id !== columnId);\n const right = (current.right ?? []).filter((id) => id !== columnId);\n\n if (side === \"left\") {\n left.push(columnId);\n }\n if (side === \"right\") {\n right.push(columnId);\n }\n\n return { left, right };\n });\n },\n [handleColumnPinningChange],\n );\n\n const handleCsvExport = React.useCallback(() => {\n if (!csvExport) {\n return;\n }\n\n return exportDataTableCsv({\n csvExport,\n table,\n labels,\n });\n }, [csvExport, labels, table]);\n\n const effectiveToolbarActions = React.useMemo(() => {\n if (!csvExport) {\n return toolbarActions ?? [];\n }\n\n return [\n ...(toolbarActions ?? []),\n {\n key: \"__csv_export__\",\n label: labels.exportCsv,\n icon: IconDownload,\n placement: \"trailing\" as const,\n onClick: handleCsvExport,\n },\n ];\n }, [csvExport, handleCsvExport, labels.exportCsv, toolbarActions]);\n\n return {\n columnVisibilityOptions,\n effectiveToolbarActions,\n handleClearColumnFilters,\n handleToolbarColumnFilterChange,\n handleToolbarColumnPinningChange,\n toolbarColumnFilters,\n };\n}\n","import * as React from \"react\";\nimport type { DataTableProps } from \"../types\";\n\n/** Development-only guardrails for identities used by row models and caches. */\nexport function useDataTablePerformanceDiagnostics({\n columns,\n data,\n getRowId,\n}: Pick, \"columns\" | \"data\" | \"getRowId\">) {\n const previous = React.useRef({ columns, data, getRowId });\n const warned = React.useRef(new Set());\n\n React.useEffect(() => {\n if (!isDevelopmentEnvironment()) {\n return;\n }\n\n const last = previous.current;\n if (\n last.data !== data &&\n haveSameItems(last.data, data) &&\n !warned.current.has(\"data\")\n ) {\n warn(\n warned.current,\n \"data\",\n \"The data array identity changed. Keep rows immutable and memoize unchanged data so filtering, row models, and virtual measurements can be reused.\",\n );\n }\n if (\n last.columns !== columns &&\n haveSameItems(last.columns, columns) &&\n !warned.current.has(\"columns\")\n ) {\n warn(\n warned.current,\n \"columns\",\n \"The columns array identity changed. Memoize stable column definitions so the search index and table column model can be reused.\",\n );\n }\n if (last.getRowId !== getRowId && !warned.current.has(\"getRowId\")) {\n warn(\n warned.current,\n \"getRowId\",\n \"getRowId identity changed. Memoize it and return an immutable, unique id to preserve row state and virtual scroll anchoring.\",\n );\n }\n\n const ids = new Set();\n for (let index = 0; index < data.length; index += 1) {\n const id = getRowId(data[index]!, index);\n if (ids.has(id) && !warned.current.has(\"duplicate-row-id\")) {\n warn(\n warned.current,\n \"duplicate-row-id\",\n `Duplicate row id \"${id}\" detected. Row ids must be unique and immutable.`,\n );\n break;\n }\n ids.add(id);\n }\n previous.current = { columns, data, getRowId };\n }, [columns, data, getRowId]);\n}\n\nfunction haveSameItems(previous: Array, next: Array) {\n return (\n previous.length === next.length &&\n previous.every((item, index) => Object.is(item, next[index]))\n );\n}\n\nfunction warn(warned: Set, key: string, message: string) {\n warned.add(key);\n console.warn(`[data-table-pro] ${message}`);\n}\n\nfunction isDevelopmentEnvironment() {\n return (\n (globalThis as { process?: { env?: { NODE_ENV?: string } } }).process?.env\n ?.NODE_ENV !== \"production\"\n );\n}\n","import * as React from \"react\";\nimport { flushSync } from \"react-dom\";\nimport type {\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableActionErrorContext,\n DataTableApi,\n DataTableCellSelection,\n DataTableLabels,\n DataTableProps,\n DataTableState,\n DataTableStateOverlay as DataTableStateOverlayConfig,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { createDataTableCardView } from \"./create-data-table-card-view\";\nimport { createDataTableEmptyState } from \"./create-data-table-empty-state\";\nimport { createDataTablePagination } from \"./create-data-table-pagination\";\nimport { createDataTableRowActions } from \"./create-data-table-row-actions\";\nimport { createDataTableToolbar } from \"./create-data-table-toolbar\";\nimport { DataTableCardPanel as DefaultDataTableCardPanel } from \"./data-table-card-panel\";\nimport { DataTableFooterSection } from \"./data-table-footer-section\";\nimport { DataTableTablePanelRouter as DefaultDataTableTablePanel } from \"./data-table-table-panel-router\";\nimport { DataTableToolbarSection } from \"./data-table-toolbar-section\";\nimport {\n clearDataTableSavedViews,\n createDataTableSavedView,\n deleteDataTableSavedView,\n readDataTableSavedViews,\n renameDataTableSavedView,\n} from \"./data-table-saved-views\";\nimport { resolveDataTableLabels } from \"./data-table-labels\";\nimport { useDataTableColumns } from \"./use-data-table-columns\";\nimport { useControllableState } from \"./use-controllable-state\";\nimport { useDataTableInstance } from \"./use-data-table-instance\";\nimport { useDataTableScrollViewport } from \"./use-data-table-scroll-viewport\";\nimport {\n exportDataTableCsv,\n getColumnId,\n getDataTableColumnGroupPaths,\n getDataTableLeafColumns,\n getInitialColumnPinning,\n validateDataTableColumnIds,\n} from \"./data-table-utils\";\nimport { useDataTableState } from \"./use-data-table-state\";\nimport { clearDataTableColumnPrefs } from \"./use-data-table-column-prefs\";\nimport { useDataTableToolbarFeatures } from \"./use-data-table-toolbar-features\";\nimport { useColumnLayout } from \"./use-column-layout\";\nimport { useRowEditing } from \"./use-row-editing\";\nimport { useDataTablePerformanceDiagnostics } from \"./use-data-table-performance-diagnostics\";\n\nconst DataTableAutoPageSize = React.lazy(\n () => import(\"./data-table-auto-page-size\"),\n);\n\ntype CreateDataTableOptions = {\n CardPanel?: typeof DefaultDataTableCardPanel;\n TablePanel?: typeof DefaultDataTableTablePanel;\n};\n\nexport function createDataTable(ui: DataTableUiKit) {\n return createDataTableWithPanels(ui);\n}\n\nexport function createDataTableWithPanels(\n ui: DataTableUiKit,\n options: CreateDataTableOptions = {},\n) {\n const DataTableCardPanel =\n options.CardPanel ?? DefaultDataTableCardPanel;\n const DataTableTablePanel =\n options.TablePanel ?? DefaultDataTableTablePanel;\n const uiClassNames = ui.classNames ?? {};\n const {\n rootClassName,\n Button,\n Checkbox,\n Input,\n ScrollArea,\n ScrollBar,\n Skeleton,\n Table,\n TableBody,\n TableCell,\n TableFooter = \"tfoot\",\n TableHead,\n TableHeader,\n TableRow,\n Tooltip,\n TooltipContent,\n TooltipProvider = React.Fragment,\n TooltipTrigger,\n } = ui;\n const DataTableEmptyState = createDataTableEmptyState(ui);\n const DataTableRowActions = createDataTableRowActions(ui);\n const { DataTableFooter } = createDataTablePagination(ui);\n const DataTableToolbar = createDataTableToolbar(ui);\n const DataTableCardView = createDataTableCardView(ui, DataTableRowActions);\n const DataTableStateOverlay = React.lazy(async () => {\n const { createDataTableStateOverlay } = await import(\n \"./data-table-state-overlay\"\n );\n return { default: createDataTableStateOverlay(ui) };\n }) as unknown as (props: {\n labels: DataTableLabels;\n overlay: DataTableStateOverlayConfig;\n rows: Array;\n toolbarQueryValue: string;\n }) => React.ReactElement | null;\n const defaultColumn = {\n minSize: 80,\n size: 180,\n maxSize: 720,\n };\n\n return function DataTable({\n columns,\n data,\n getRowId,\n children,\n title,\n description,\n toolbarQueryValue,\n onToolbarQueryValueChange,\n toolbarQueryPlaceholder,\n toolbarQueryDebounceMs,\n manualFiltering = false,\n enableToolbarQueryFiltering = true,\n globalFilterFn,\n columnFilters,\n onColumnFiltersChange,\n enableColumnFilters,\n customToolbar,\n compactToolbar,\n rowsPerPageOptions = [10, 20, 50, 100],\n totalRowCount,\n hasNextPage,\n sorting,\n onSortingChange,\n manualSorting = false,\n grouping,\n onGroupingChange,\n manualGrouping = false,\n enableGrouping = false,\n groupedColumnMode = \"reorder\",\n aggregationFns,\n pageIndex,\n pageSize,\n autoPageSize = false,\n onPageIndexChange,\n onPageSizeChange,\n pageCount,\n manualPagination = false,\n rowSelection,\n onRowSelectionChange,\n enableRowSelection = false,\n enableMultiRowSelection = true,\n enableSubRowSelection = true,\n getRowCanSelect,\n rowSelectionSelectAllScope = \"page\",\n expanded,\n onExpandedChange,\n getSubRows,\n manualExpanding = false,\n paginateExpandedRows,\n filterFromLeafRows,\n maxLeafRowFilterDepth,\n detailPanel,\n getRowCanExpand,\n renderExpandedRow,\n columnOrder,\n onColumnOrderChange,\n enableColumnReordering = false,\n columnGroupHeaderHeight,\n columnPinning,\n onColumnPinningChange,\n enableColumnPinning = false,\n rowPinning,\n onRowPinningChange,\n enableRowPinning = false,\n keepPinnedRows = true,\n toolbarActions = [],\n selectionActions = [],\n rowActions = [],\n csvExport,\n clipboard,\n enableCellSelection = false,\n cellSelection,\n defaultCellSelection,\n onCellSelectionChange,\n gridCommands,\n density,\n onDensityChange,\n enableDensityToggle = false,\n columnPrefsKey,\n persistence,\n savedViews,\n toolbarDataOperations,\n initialState,\n state: unifiedState,\n onStateChange,\n apiRef,\n labels,\n summaryRows = [],\n cardRenderer,\n cardSizing,\n cardGridClassName,\n cardClassName,\n viewMode,\n onViewModeChange,\n enableViewToggle = false,\n enablePrint = false,\n enableFullscreen = false,\n emptyState,\n stateOverlay,\n isLoading = false,\n loadingRowCount,\n getRowLoadingState,\n hiddenRows,\n showHiddenRows,\n onShowHiddenRowsChange,\n infiniteScroll,\n editableRows,\n columnVisibility,\n onColumnVisibilityChange,\n columnSizing,\n onColumnSizingChange,\n enableColumnResizing = false,\n columnResizeMode = \"onEnd\",\n layoutMode = \"fill\",\n stickyHeader = true,\n showFooter = true,\n showToolbar = true,\n dir = \"ltr\",\n flexGrow = true,\n toolbarVisibility,\n className,\n tableClassName,\n tableContainerClassName,\n stripedRows = false,\n getRowClassName,\n onRowClick,\n onActionError,\n dragAndDrop,\n fileUpload,\n virtualization,\n accessibility,\n interactiveGrid,\n }: DataTableProps) {\n const containerRef = React.useRef(null);\n const fileInputRef = React.useRef(null);\n const tableScrollContainerRef = React.useRef(null);\n const draggedColumnIdRef = React.useRef(null);\n const tableRef = React.useRef | null>(null);\n const lastSelectedRowIdRef = React.useRef(null);\n const [toolbarSavedViewsVersion, setToolbarSavedViewsVersion] =\n React.useState(0);\n const generatedTitleId = React.useId();\n const generatedDescriptionId = React.useId();\n useDataTablePerformanceDiagnostics({ columns, data, getRowId });\n React.useMemo(() => validateDataTableColumnIds(columns), [columns]);\n const resolvedLabels = React.useMemo(\n () => resolveDataTableLabels(labels),\n [labels],\n );\n const toolbarOperations =\n toolbarDataOperations === true\n ? { columnChooser: true, savedViews: true, resetLayout: true }\n : toolbarDataOperations === false\n ? {}\n : (toolbarDataOperations ?? {});\n const gridMode =\n accessibility?.mode === \"grid\" ||\n interactiveGrid === true ||\n typeof interactiveGrid === \"object\";\n const [currentCellSelection, setCurrentCellSelection] =\n useControllableState({\n defaultValue: defaultCellSelection ?? null,\n onChange: onCellSelectionChange,\n value: cellSelection,\n });\n const resolvedToolbarQueryValue =\n toolbarQueryValue ?? unifiedState?.globalFilter;\n const resolvedSorting = sorting ?? unifiedState?.sorting;\n const resolvedGrouping = grouping ?? unifiedState?.grouping;\n const resolvedPageIndex =\n pageIndex ?? unifiedState?.pagination?.pageIndex;\n const resolvedPageSize = pageSize ?? unifiedState?.pagination?.pageSize;\n const resolvedRowSelection =\n rowSelection ?? unifiedState?.rowSelection;\n const resolvedColumnVisibility =\n columnVisibility ?? unifiedState?.columnVisibility;\n const resolvedColumnFilters =\n columnFilters ?? unifiedState?.columnFilters;\n const resolvedExpanded = expanded ?? unifiedState?.expanded;\n const resolvedColumnOrder =\n columnOrder ?? unifiedState?.columnOrder;\n const resolvedColumnPinning =\n columnPinning ?? unifiedState?.columnPinning;\n const resolvedRowPinning = rowPinning ?? unifiedState?.rowPinning;\n const resolvedColumnSizing =\n columnSizing ?? unifiedState?.columnSizing;\n const resolvedDensity = density ?? unifiedState?.density;\n const resolvedViewMode = viewMode ?? unifiedState?.viewMode;\n const resolvedShowHiddenRows =\n showHiddenRows ?? unifiedState?.showHiddenRows;\n const showTableHeading =\n showToolbar && (toolbarVisibility?.title ?? true);\n const titleId = showTableHeading && title ? generatedTitleId : undefined;\n const descriptionId =\n showTableHeading && description ? generatedDescriptionId : undefined;\n useDataTableStateConflictWarnings(unifiedState, {\n columnFilters: columnFilters !== undefined,\n columnOrder: columnOrder !== undefined,\n columnPinning: columnPinning !== undefined,\n rowPinning: rowPinning !== undefined,\n columnSizing: columnSizing !== undefined,\n columnVisibility: columnVisibility !== undefined,\n density: density !== undefined,\n expanded: expanded !== undefined,\n grouping: grouping !== undefined,\n globalFilter: toolbarQueryValue !== undefined,\n pagination: pageIndex !== undefined || pageSize !== undefined,\n rowSelection: rowSelection !== undefined,\n showHiddenRows: showHiddenRows !== undefined,\n sorting: sorting !== undefined,\n viewMode: viewMode !== undefined,\n });\n const handleToolbarQueryValueChange = useDataTableStateSliceChange(\n \"globalFilter\",\n onToolbarQueryValueChange,\n onStateChange,\n );\n const handleSortingPropChange = useDataTableStateSliceChange(\n \"sorting\",\n onSortingChange,\n onStateChange,\n );\n const handleGroupingPropChange = useDataTableStateSliceChange(\n \"grouping\",\n onGroupingChange,\n onStateChange,\n );\n const handleRowSelectionPropChange = useDataTableStateSliceChange(\n \"rowSelection\",\n onRowSelectionChange,\n onStateChange,\n );\n const handleColumnVisibilityPropChange = useDataTableStateSliceChange(\n \"columnVisibility\",\n onColumnVisibilityChange,\n onStateChange,\n );\n const handleColumnFiltersPropChange = useDataTableStateSliceChange(\n \"columnFilters\",\n onColumnFiltersChange,\n onStateChange,\n );\n const handleExpandedPropChange = useDataTableStateSliceChange(\n \"expanded\",\n onExpandedChange,\n onStateChange,\n );\n const handleColumnOrderPropChange = useDataTableStateSliceChange(\n \"columnOrder\",\n onColumnOrderChange,\n onStateChange,\n );\n const handleColumnPinningPropChange = useDataTableStateSliceChange(\n \"columnPinning\",\n onColumnPinningChange,\n onStateChange,\n );\n const handleRowPinningPropChange = useDataTableStateSliceChange(\n \"rowPinning\",\n onRowPinningChange,\n onStateChange,\n );\n const handleColumnSizingPropChange = useDataTableStateSliceChange(\n \"columnSizing\",\n onColumnSizingChange,\n onStateChange,\n );\n const handleDensityPropChange = useDataTableStateSliceChange(\n \"density\",\n onDensityChange,\n onStateChange,\n );\n const handleViewModePropChange = useDataTableStateSliceChange(\n \"viewMode\",\n onViewModeChange,\n onStateChange,\n );\n const handleShowHiddenRowsPropChange = useDataTableStateSliceChange(\n \"showHiddenRows\",\n onShowHiddenRowsChange,\n onStateChange,\n );\n const handlePageIndexPropChange = React.useCallback(\n (nextPageIndex: number) => {\n onPageIndexChange?.(nextPageIndex);\n onStateChange?.((current) => ({\n ...current,\n pagination: {\n pageIndex: nextPageIndex,\n pageSize:\n resolvedPageSize ?? current.pagination.pageSize,\n },\n }));\n },\n [onPageIndexChange, onStateChange, resolvedPageSize],\n );\n const handlePageSizePropChange = React.useCallback(\n (nextPageSize: number) => {\n onPageSizeChange?.(nextPageSize);\n onStateChange?.((current) => ({\n ...current,\n pagination: {\n pageIndex:\n resolvedPageIndex ?? current.pagination.pageIndex,\n pageSize: nextPageSize,\n },\n }));\n },\n [onPageSizeChange, onStateChange, resolvedPageIndex],\n );\n const runAction = React.useCallback(\n (\n context: Omit, \"error\">,\n action: () => void | Promise,\n ) => {\n runDataTableAction(action, context, onActionError);\n },\n [onActionError],\n );\n const guardedRowActions = React.useMemo(\n () =>\n rowActions.map((action) => ({\n ...action,\n onClick: (row: TData) => {\n runAction(\n {\n actionKey: action.key,\n row,\n source: \"rowAction\",\n },\n () => action.onClick(row),\n );\n },\n })),\n [rowActions, runAction],\n );\n const guardedOnRowClick = React.useMemo<\n DataTableProps[\"onRowClick\"]\n >(\n () =>\n onRowClick\n ? (context) => {\n runAction(\n {\n row: context.row,\n source: \"rowClick\",\n },\n () => onRowClick(context),\n );\n }\n : undefined,\n [onRowClick, runAction],\n );\n const handleEditError = React.useCallback(\n (error: unknown, row: TData) => {\n onActionError?.({\n error,\n row,\n source: \"edit\",\n });\n },\n [onActionError],\n );\n const {\n containerWidth,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentRowPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentGrouping,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n effectiveColumnVisibility,\n globalFilterValue,\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n localSearchValue,\n resolvedLoadingRowCount,\n resolvedToolbarQueryPlaceholder,\n selectedRowIds,\n selectedRows,\n setCurrentColumnFilters,\n setCurrentColumnOrder,\n setCurrentColumnPinning,\n setCurrentRowPinning,\n setCurrentColumnVisibility,\n setCurrentExpanded,\n setCurrentGrouping,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n setLocalSearchValue,\n shouldRenderInitialLoading,\n tableData,\n tableGetRowId,\n visibleData,\n } = useDataTableState({\n columnFilters: resolvedColumnFilters,\n columnOrder: resolvedColumnOrder,\n columnPinning: resolvedColumnPinning,\n rowPinning: resolvedRowPinning,\n columnSizing: resolvedColumnSizing,\n columnPrefsKey,\n persistence,\n columnVisibility: resolvedColumnVisibility,\n columns,\n containerRef,\n data,\n density: resolvedDensity,\n enableRowSelection,\n enableToolbarQueryFiltering,\n expanded: resolvedExpanded,\n grouping: resolvedGrouping,\n getSubRows,\n getRowId,\n hiddenRows,\n isLoading,\n loadingRowCount,\n manualFiltering,\n initialState,\n onColumnFiltersChange: handleColumnFiltersPropChange,\n onColumnOrderChange: handleColumnOrderPropChange,\n onColumnPinningChange: handleColumnPinningPropChange,\n onRowPinningChange: handleRowPinningPropChange,\n onColumnSizingChange: handleColumnSizingPropChange,\n onColumnVisibilityChange: handleColumnVisibilityPropChange,\n onDensityChange: handleDensityPropChange,\n onExpandedChange: handleExpandedPropChange,\n onGroupingChange: handleGroupingPropChange,\n onPageIndexChange: handlePageIndexPropChange,\n onRowSelectionChange: handleRowSelectionPropChange,\n onShowHiddenRowsChange: handleShowHiddenRowsPropChange,\n onSortingChange: handleSortingPropChange,\n onToolbarQueryValueChange: handleToolbarQueryValueChange,\n onViewModeChange: handleViewModePropChange,\n pageIndex: resolvedPageIndex,\n pageSize: resolvedPageSize,\n resolvedLabels,\n rowSelection: resolvedRowSelection,\n rowsPerPageOptions,\n selectionActions,\n showHiddenRows: resolvedShowHiddenRows,\n sorting: resolvedSorting,\n toolbarQueryDebounceMs,\n toolbarQueryPlaceholder,\n toolbarQueryValue: resolvedToolbarQueryValue,\n viewMode: resolvedViewMode,\n });\n const usesLegacyDetailPanelState = Boolean(\n renderExpandedRow && !detailPanel && !getSubRows,\n );\n const resolvedDetailPanel =\n detailPanel ??\n (renderExpandedRow\n ? {\n getRowCanExpand: getSubRows ? undefined : getRowCanExpand,\n render: renderExpandedRow,\n }\n : undefined);\n const [currentDetailExpanded, setCurrentDetailExpanded] =\n useControllableState({\n defaultValue: () =>\n usesLegacyDetailPanelState ? (initialState?.expanded ?? {}) : {},\n onChange: usesLegacyDetailPanelState\n ? setCurrentExpanded\n : resolvedDetailPanel?.onExpandedChange,\n value: usesLegacyDetailPanelState\n ? currentExpanded\n : resolvedDetailPanel?.expanded,\n });\n const {\n cancelEditing,\n clearEditError,\n draftValues,\n editErrors,\n editingRowId,\n isEditDirty,\n isSavingEdit,\n saveEdit,\n setDraftValues,\n setEditingRowId,\n startEditingRow,\n } = useRowEditing({\n columns,\n editableRows,\n onError: handleEditError,\n });\n const rowEditingContext = React.useMemo(\n () => ({\n cancel: cancelEditing,\n cancelOnEscape: editableRows?.cancelOnEscape !== false,\n clearError: clearEditError,\n commit: (row: TData) => {\n void saveEdit(row);\n },\n commitOnEnter: editableRows?.commitOnEnter !== false,\n errors: editErrors,\n isDirty: isEditDirty,\n isPending: isSavingEdit,\n }),\n [\n cancelEditing,\n clearEditError,\n editableRows?.cancelOnEscape,\n editableRows?.commitOnEnter,\n editErrors,\n isEditDirty,\n isSavingEdit,\n saveEdit,\n ],\n );\n const { viewportElement: tableScrollElement, viewportHeight } =\n useDataTableScrollViewport(tableScrollContainerRef, currentViewMode);\n const autoPageSizeConfig =\n typeof autoPageSize === \"object\" ? autoPageSize : undefined;\n const handleAutoPageSizeChange = React.useCallback(\n (nextPageSize: number) => {\n if (nextPageSize === currentPagination.pageSize) {\n return;\n }\n if (currentPagination.pageIndex !== 0) {\n handlePageIndexPropChange(0);\n }\n handlePageSizePropChange(nextPageSize);\n if (resolvedPageSize === undefined) {\n setLocalPagination({ pageIndex: 0, pageSize: nextPageSize });\n }\n },\n [\n currentPagination.pageIndex,\n currentPagination.pageSize,\n handlePageIndexPropChange,\n handlePageSizePropChange,\n resolvedPageSize,\n setLocalPagination,\n ],\n );\n const autoPageSizeEnabled =\n autoPageSize === true || autoPageSizeConfig !== undefined;\n const print = React.useCallback(() => {\n if (typeof window === \"undefined\" || typeof window.print !== \"function\") {\n return false;\n }\n window.print();\n return true;\n }, []);\n const toggleFullscreen = React.useCallback(async () => {\n const element = containerRef.current;\n if (!element || typeof document === \"undefined\") {\n return false;\n }\n if (document.fullscreenElement) {\n if (typeof document.exitFullscreen !== \"function\") return false;\n await document.exitFullscreen();\n return true;\n }\n if (typeof element.requestFullscreen !== \"function\") return false;\n await element.requestFullscreen();\n return true;\n }, []);\n const [isFullscreen, setIsFullscreen] = React.useState(false);\n React.useEffect(() => {\n if (!enableFullscreen || typeof document === \"undefined\") return;\n const update = () => {\n setIsFullscreen(document.fullscreenElement === containerRef.current);\n };\n update();\n document.addEventListener(\"fullscreenchange\", update);\n return () => document.removeEventListener(\"fullscreenchange\", update);\n }, [enableFullscreen]);\n const openFileDialog = React.useCallback(() => {\n if (fileUpload?.disabled) {\n return;\n }\n\n fileInputRef.current?.click();\n }, [fileUpload?.disabled]);\n const handleSelectedFiles = React.useCallback(\n (files: FileList | Array) => {\n runAction(\n {\n source: \"fileUpload\",\n },\n () => fileUpload?.onFilesSelected(files),\n );\n },\n [fileUpload, runAction],\n );\n\n const tableColumns = useDataTableColumns({\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n editErrors,\n editingRowId,\n enableRowSelection,\n enableRowPinning,\n hasTreeExpansion: Boolean(getSubRows),\n isSavingEdit,\n isEditDirty,\n labels: resolvedLabels,\n lastSelectedRowIdRef,\n detailPanel: resolvedDetailPanel,\n detailExpanded: currentDetailExpanded,\n onDetailExpandedChange: setCurrentDetailExpanded,\n rowSelectionSelectAllScope,\n rowActions: guardedRowActions,\n saveEdit,\n startEditingRow,\n tableRef,\n });\n const columnGroupPaths = React.useMemo(\n () => getDataTableColumnGroupPaths(columns),\n [columns],\n );\n\n const {\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n isPageCountKnown,\n renderedRows,\n topPinnedRows,\n bottomPinnedRows,\n reorderColumn,\n rowsToRender,\n sentinelRef,\n table,\n virtualPaddingBottom,\n virtualPaddingTop,\n visibleLeafColumns,\n } = useDataTableInstance({\n autoResetPageIndex: false,\n columnGroupPaths,\n columnResizeMode,\n dir,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentRowPinning,\n currentColumnSizing,\n currentExpanded,\n currentGrouping,\n currentPagination,\n currentRowSelection,\n currentSorting,\n currentViewMode,\n defaultColumn,\n effectiveColumnVisibility,\n enableColumnResizing,\n enableRowPinning,\n enableRowSelection,\n enableMultiRowSelection,\n enableSubRowSelection,\n getRowCanSelect,\n getRowCanExpand,\n getSubRows,\n aggregationFns,\n groupedColumnMode,\n globalFilterFn,\n globalFilterValue,\n hasNextPage,\n handleColumnFiltersChange: setCurrentColumnFilters,\n handleColumnOrderChange: setCurrentColumnOrder,\n handleColumnPinningChange: setCurrentColumnPinning,\n handleRowPinningChange: setCurrentRowPinning,\n handleColumnVisibilityChange: setCurrentColumnVisibility,\n handleExpandedChange: setCurrentExpanded,\n handleGroupingChange: setCurrentGrouping,\n infiniteScroll,\n keepPinnedRows,\n manualFiltering,\n manualGrouping,\n manualExpanding,\n manualPagination,\n manualSorting,\n onActionError,\n onPageIndexChange: handlePageIndexPropChange,\n onPageSizeChange: handlePageSizePropChange,\n pageCount,\n pageIndex: resolvedPageIndex,\n pageSize: resolvedPageSize,\n paginateExpandedRows,\n filterFromLeafRows,\n maxLeafRowFilterDepth,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n shouldRenderInitialLoading,\n tableColumns,\n tableData,\n tableGetRowId,\n tableRef,\n tableScrollElement,\n totalRowCount,\n virtualization,\n viewportHeight,\n });\n const columnLayout = useColumnLayout({\n columns,\n columnSizing: currentColumnSizing,\n editableRows: Boolean(editableRows),\n enableRowSelection,\n hasRowActions: rowActions.length > 0,\n hasRowExpansion: Boolean(getSubRows || resolvedDetailPanel),\n layoutMode,\n uiClassNames,\n visibleLeafColumns,\n });\n const { explicitlySizedColumnIds, fillMinWidth, getColumnLayout } =\n columnLayout;\n const explicitCustomCellColumnIds = React.useMemo(() => {\n return new Set(\n getDataTableLeafColumns(columns).flatMap(({ column, index }) => {\n return Object.prototype.hasOwnProperty.call(column, \"cell\") &&\n typeof column.cell === \"function\"\n ? [getColumnId(column, index)]\n : [];\n }),\n );\n }, [columns]);\n const visibleLeafColumnCount = visibleLeafColumns.length;\n const bodyRowComponents = React.useMemo(\n () => ({\n Checkbox,\n Input,\n Skeleton,\n TableCell,\n TableRow,\n }),\n [],\n );\n const hasCardTitle = React.useMemo(\n () =>\n getDataTableLeafColumns(columns).some(\n ({ column }) => column.meta?.cardTitle,\n ),\n [columns],\n );\n const primeColumnForResize = React.useCallback(\n (columnId: string, currentSize: number) => {\n if (\n explicitlySizedColumnIds.has(columnId) ||\n Object.prototype.hasOwnProperty.call(\n table.getState().columnSizing,\n columnId,\n )\n ) {\n return;\n }\n\n flushSync(() => {\n table.setColumnSizing((current) => ({\n ...current,\n [columnId]: currentSize,\n }));\n });\n },\n [explicitlySizedColumnIds, table],\n );\n const resetColumnSize = React.useCallback(\n (columnId: string) => {\n if (explicitlySizedColumnIds.has(columnId)) {\n table.getColumn(columnId)?.resetSize();\n return;\n }\n\n table.setColumnSizing((current) => {\n if (!Object.prototype.hasOwnProperty.call(current, columnId)) {\n return current;\n }\n\n const next = { ...current };\n delete next[columnId];\n return next;\n });\n },\n [explicitlySizedColumnIds, table],\n );\n\n const filteredData = table\n .getFilteredRowModel()\n .rows.map((row) => row.original);\n const configuredEmptyState = stateOverlay?.empty ?? emptyState;\n const emptyNode =\n typeof configuredEmptyState === \"function\"\n ? configuredEmptyState({\n rows: filteredData,\n toolbarQueryValue: localSearchValue,\n })\n : configuredEmptyState;\n const guardedStateOverlay = React.useMemo(\n () =>\n stateOverlay\n ? {\n ...stateOverlay,\n onRetry: stateOverlay.onRetry\n ? () =>\n runAction(\n { source: \"retry\" },\n stateOverlay.onRetry!,\n )\n : undefined,\n }\n : undefined,\n [runAction, stateOverlay],\n );\n const stateOverlayNode = guardedStateOverlay?.error != null ? (\n \n \n \n ) : undefined;\n const {\n columnVisibilityOptions,\n effectiveToolbarActions,\n handleClearColumnFilters,\n handleToolbarColumnFilterChange,\n handleToolbarColumnPinningChange,\n toolbarColumnFilters,\n } = useDataTableToolbarFeatures({\n columns,\n currentColumnFilters,\n currentColumnPinning,\n csvExport,\n effectiveColumnVisibility,\n enableColumnFilters,\n handleColumnFiltersChange: setCurrentColumnFilters,\n handleColumnPinningChange: setCurrentColumnPinning,\n labels: resolvedLabels,\n table,\n toolbarActions,\n visibleData,\n });\n const guardedToolbarActions = React.useMemo(\n () =>\n [\n ...effectiveToolbarActions,\n ...(enablePrint\n ? [\n {\n key: \"__print__\",\n label: resolvedLabels.print,\n placement: \"trailing\" as const,\n onClick: () => {\n print();\n },\n },\n ]\n : []),\n ...(enableFullscreen\n ? [\n {\n key: \"__fullscreen__\",\n label: isFullscreen\n ? resolvedLabels.exitFullscreen\n : resolvedLabels.enterFullscreen,\n placement: \"trailing\" as const,\n onClick: () => toggleFullscreen(),\n },\n ]\n : []),\n ].map((action) => ({\n ...action,\n onClick: (context: {\n rows: Array;\n openFileDialog?: () => void;\n }) => {\n runAction(\n {\n actionKey: action.key,\n source: \"toolbarAction\",\n },\n () => action.onClick(context),\n );\n },\n })),\n [\n effectiveToolbarActions,\n enableFullscreen,\n enablePrint,\n isFullscreen,\n print,\n resolvedLabels.enterFullscreen,\n resolvedLabels.exitFullscreen,\n resolvedLabels.print,\n runAction,\n toggleFullscreen,\n ],\n );\n const guardedSelectionActions = React.useMemo(\n () =>\n selectionActions.map((action) => ({\n ...action,\n onClick: (context: Parameters[0]) => {\n runAction(\n {\n actionKey: action.key,\n source: \"selectionAction\",\n },\n () => action.onClick(context),\n );\n },\n })),\n [runAction, selectionActions],\n );\n const currentDataTableState = React.useMemo(\n () => ({\n sorting: currentSorting,\n pagination: currentPagination,\n rowSelection: currentRowSelection,\n columnVisibility: currentColumnVisibility,\n columnFilters: currentColumnFilters,\n expanded: currentExpanded,\n grouping: currentGrouping,\n columnOrder: currentColumnOrder,\n columnPinning: currentColumnPinning,\n rowPinning: currentRowPinning,\n columnSizing: currentColumnSizing,\n density: currentDensity,\n viewMode: currentViewMode,\n showHiddenRows: currentShowHiddenRows,\n globalFilter: localSearchValue,\n }),\n [\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentRowPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentGrouping,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n localSearchValue,\n ],\n );\n const getCurrentState = React.useCallback(\n () => cloneDataTableState(currentDataTableState),\n [currentDataTableState],\n );\n const restoreState = React.useCallback(\n (nextState: Partial) => {\n if (nextState.sorting !== undefined) {\n table.setSorting(nextState.sorting);\n }\n if (nextState.pagination !== undefined) {\n table.setPagination(nextState.pagination);\n }\n if (nextState.rowSelection !== undefined) {\n table.setRowSelection(nextState.rowSelection);\n }\n if (nextState.columnVisibility !== undefined) {\n table.setColumnVisibility(nextState.columnVisibility);\n }\n if (nextState.columnFilters !== undefined) {\n table.setColumnFilters(nextState.columnFilters);\n }\n if (nextState.expanded !== undefined) {\n table.setExpanded(nextState.expanded);\n }\n if (nextState.grouping !== undefined) {\n table.setGrouping(nextState.grouping);\n }\n if (nextState.columnOrder !== undefined) {\n table.setColumnOrder(nextState.columnOrder);\n }\n if (nextState.columnPinning !== undefined) {\n table.setColumnPinning(nextState.columnPinning);\n }\n if (nextState.rowPinning !== undefined) {\n table.setRowPinning(nextState.rowPinning);\n }\n if (nextState.columnSizing !== undefined) {\n table.setColumnSizing(nextState.columnSizing);\n }\n if (nextState.density !== undefined) {\n handleDensityChange(nextState.density);\n }\n if (nextState.viewMode !== undefined) {\n handleViewModeChange(nextState.viewMode);\n }\n if (nextState.showHiddenRows !== undefined) {\n handleShowHiddenRowsChange(nextState.showHiddenRows);\n }\n if (nextState.globalFilter !== undefined) {\n setLocalSearchValue(nextState.globalFilter);\n }\n },\n [\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n setLocalSearchValue,\n table,\n ],\n );\n const clearPersistedState = React.useCallback(\n () => clearDataTableColumnPrefs(persistence ?? columnPrefsKey),\n [columnPrefsKey, persistence],\n );\n const resetColumnLayout = React.useCallback<\n DataTableApi[\"resetColumnLayout\"]\n >(\n (options) => {\n if (options?.clearPersistence) {\n clearPersistedState();\n }\n restoreState({\n columnVisibility: initialState?.columnVisibility ?? {},\n columnOrder: initialState?.columnOrder ?? [],\n columnPinning:\n initialState?.columnPinning ?? getInitialColumnPinning(columns),\n rowPinning: initialState?.rowPinning ?? { top: [], bottom: [] },\n columnSizing: initialState?.columnSizing ?? {},\n });\n },\n [\n clearPersistedState,\n columns,\n initialState,\n restoreState,\n ],\n );\n const resetState = React.useCallback[\"resetState\"]>(\n (options) => {\n if (options?.clearPersistence) {\n clearPersistedState();\n }\n restoreState({\n sorting: initialState?.sorting ?? [],\n pagination: initialState?.pagination ?? {\n pageIndex: 0,\n pageSize: rowsPerPageOptions[0] ?? 20,\n },\n rowSelection: initialState?.rowSelection ?? {},\n columnVisibility: initialState?.columnVisibility ?? {},\n columnFilters: initialState?.columnFilters ?? [],\n expanded: initialState?.expanded ?? {},\n grouping: initialState?.grouping ?? [],\n columnOrder: initialState?.columnOrder ?? [],\n columnPinning:\n initialState?.columnPinning ?? getInitialColumnPinning(columns),\n rowPinning: initialState?.rowPinning ?? { top: [], bottom: [] },\n columnSizing: initialState?.columnSizing ?? {},\n density: initialState?.density ?? \"comfortable\",\n viewMode: initialState?.viewMode ?? \"table\",\n showHiddenRows: initialState?.showHiddenRows ?? false,\n globalFilter: initialState?.globalFilter ?? \"\",\n });\n },\n [\n clearPersistedState,\n columns,\n initialState,\n restoreState,\n rowsPerPageOptions,\n ],\n );\n const getSavedViews = React.useCallback(\n () => readDataTableSavedViews(savedViews),\n [savedViews],\n );\n const createSavedView = React.useCallback<\n DataTableApi[\"createSavedView\"]\n >(\n (name) =>\n createDataTableSavedView(savedViews, name, getCurrentState()),\n [getCurrentState, savedViews],\n );\n const applySavedView = React.useCallback<\n DataTableApi[\"applySavedView\"]\n >(\n (id) => {\n const view = readDataTableSavedViews(savedViews).find(\n (candidate) => candidate.id === id,\n );\n if (!view) {\n return false;\n }\n restoreState(view.state);\n savedViews?.onApply?.(view);\n return true;\n },\n [restoreState, savedViews],\n );\n const renameSavedView = React.useCallback<\n DataTableApi[\"renameSavedView\"]\n >(\n (id, name) => renameDataTableSavedView(savedViews, id, name),\n [savedViews],\n );\n const deleteSavedView = React.useCallback<\n DataTableApi[\"deleteSavedView\"]\n >(\n (id) => deleteDataTableSavedView(savedViews, id),\n [savedViews],\n );\n const clearSavedViews = React.useCallback(\n () => clearDataTableSavedViews(savedViews),\n [savedViews],\n );\n const toolbarSavedViews = React.useMemo(() => {\n void toolbarSavedViewsVersion;\n return readDataTableSavedViews(savedViews);\n }, [savedViews, toolbarSavedViewsVersion]);\n const handleToolbarCreateSavedView = React.useCallback(\n (name: string) => {\n const view = createSavedView(name);\n if (view) {\n setToolbarSavedViewsVersion((current) => current + 1);\n }\n return view;\n },\n [createSavedView],\n );\n const handleToolbarRenameSavedView = React.useCallback(\n (id: string, name: string) => {\n const view = renameSavedView(id, name);\n if (view) {\n setToolbarSavedViewsVersion((current) => current + 1);\n }\n return view;\n },\n [renameSavedView],\n );\n const handleToolbarDeleteSavedView = React.useCallback(\n (id: string) => {\n const deleted = deleteSavedView(id);\n if (deleted) {\n setToolbarSavedViewsVersion((current) => current + 1);\n }\n return deleted;\n },\n [deleteSavedView],\n );\n const exportCsvFromApi = React.useCallback<\n DataTableApi[\"exportCsv\"]\n >(\n (options) =>\n exportDataTableCsv({\n csvExport: options ?? (csvExport || true),\n labels: resolvedLabels,\n table,\n }),\n [csvExport, resolvedLabels, table],\n );\n const copyToClipboard = React.useCallback<\n DataTableApi[\"copyToClipboard\"]\n >(\n async (options) => {\n const { copyDataTableToClipboard } = await import(\n \"./data-table-clipboard\"\n );\n return copyDataTableToClipboard({\n clipboard:\n options ??\n (clipboard?.copy === false\n ? false\n : currentCellSelection\n ? {\n ...(clipboard?.copy === true ? {} : clipboard?.copy),\n scope: \"cellSelection\",\n }\n : clipboard?.copy ?? true),\n cellSelection: currentCellSelection,\n table,\n });\n },\n [clipboard?.copy, currentCellSelection, table],\n );\n const pinRow = React.useCallback[\"pinRow\"]>(\n (rowId, position = \"top\") => {\n try {\n const row = table.getRow(rowId, true);\n if (!row.getCanPin()) {\n return false;\n }\n row.pin(position);\n return true;\n } catch {\n return false;\n }\n },\n [table],\n );\n const unpinRow = React.useCallback[\"unpinRow\"]>(\n (rowId) => {\n try {\n const row = table.getRow(rowId, true);\n if (!row.getCanPin()) {\n return false;\n }\n row.pin(false);\n return true;\n } catch {\n return false;\n }\n },\n [table],\n );\n React.useImperativeHandle(\n apiRef,\n () => ({\n getTable: () => tableRef.current,\n getState: getCurrentState,\n snapshot: getCurrentState,\n restore: restoreState,\n resetColumnLayout,\n resetState,\n clearPersistedState,\n getSavedViews,\n createSavedView,\n applySavedView,\n renameSavedView,\n deleteSavedView,\n clearSavedViews,\n pinRow,\n unpinRow,\n focus: () => {\n containerRef.current?.focus();\n },\n scrollToRow: (rowId) =>\n scrollDataTableElementIntoView(containerRef.current, \"row\", rowId),\n scrollToColumn: (columnId) =>\n scrollDataTableElementIntoView(\n containerRef.current,\n \"column\",\n columnId,\n ),\n exportCsv: exportCsvFromApi,\n copyToClipboard,\n getCellSelection: () => currentCellSelection,\n setCellSelection: setCurrentCellSelection,\n clearCellSelection: () => setCurrentCellSelection(null),\n print,\n toggleFullscreen,\n }),\n [\n applySavedView,\n clearPersistedState,\n clearSavedViews,\n copyToClipboard,\n currentCellSelection,\n createSavedView,\n deleteSavedView,\n exportCsvFromApi,\n getSavedViews,\n getCurrentState,\n renameSavedView,\n resetColumnLayout,\n resetState,\n restoreState,\n pinRow,\n print,\n setCurrentCellSelection,\n unpinRow,\n toggleFullscreen,\n ],\n );\n\n return (\n \n {\n if (\n gridMode &&\n gridCommands &&\n (event.ctrlKey || event.metaKey) &&\n event.key.toLowerCase() === \"z\" &&\n !isDataTableEditableClipboardTarget(event.target)\n ) {\n const command = event.shiftKey ? gridCommands.redo : gridCommands.undo;\n if (command) {\n event.preventDefault();\n runAction(\n { source: event.shiftKey ? \"redo\" : \"undo\" },\n () => command({ cellSelection: currentCellSelection, table }),\n );\n }\n return;\n }\n if (\n !clipboard?.copy ||\n !(event.ctrlKey || event.metaKey) ||\n event.key.toLowerCase() !== \"c\" ||\n isDataTableEditableClipboardTarget(event.target)\n ) {\n return;\n }\n event.preventDefault();\n runAction(\n { source: \"clipboardCopy\" },\n async () => {\n await copyToClipboard(\n clipboard.copy === true\n ? undefined\n : currentCellSelection &&\n typeof clipboard.copy === \"object\" &&\n !clipboard.copy.scope\n ? { ...clipboard.copy, scope: \"cellSelection\" }\n : clipboard.copy,\n );\n },\n );\n }}\n onPaste={(event) => {\n const paste = clipboard?.paste;\n if (\n !paste ||\n paste.enabled === false ||\n isDataTableEditableClipboardTarget(event.target)\n ) {\n return;\n }\n const text = event.clipboardData.getData(\"text/plain\");\n if (!text) {\n return;\n }\n if (paste.preventDefault ?? true) {\n event.preventDefault();\n }\n runAction(\n { source: \"clipboardPaste\" },\n async () => {\n const { parseDataTableClipboardText } = await import(\n \"./data-table-clipboard\"\n );\n return paste.onPaste({\n table,\n text,\n values: parseDataTableClipboardText(text),\n });\n },\n );\n }}\n >\n {autoPageSizeEnabled ? (\n \n \n \n ) : null}\n {fileUpload ? (\n {\n const files = event.currentTarget.files;\n if (files?.length) {\n handleSelectedFiles(files);\n }\n event.currentTarget.value = \"\";\n }}\n />\n ) : null}\n \n \n {showToolbar ? (\n \n ) : null}\n\n \n {currentViewMode === \"card\" && cardRenderer ? (\n \n ) : (\n \n )}\n \n \n {children}\n \n \n \n \n \n );\n };\n}\n\nfunction runDataTableAction(\n action: () => void | Promise,\n context: Omit, \"error\">,\n onActionError: DataTableProps[\"onActionError\"],\n) {\n let result: void | Promise;\n try {\n result = action();\n } catch (error) {\n onActionError?.({ ...context, error });\n return;\n }\n\n void Promise.resolve(result).catch((error: unknown) => {\n onActionError?.({ ...context, error });\n });\n}\n\nfunction useDataTableStateSliceChange(\n key: K,\n onLegacyChange:\n | ((value: Exclude) => void)\n | undefined,\n onStateChange: DataTableProps[\"onStateChange\"],\n) {\n const handleChange = React.useCallback(\n (value: Exclude) => {\n onLegacyChange?.(value);\n onStateChange?.((current) => ({\n ...current,\n [key]: value,\n }));\n },\n [key, onLegacyChange, onStateChange],\n );\n\n return onLegacyChange || onStateChange ? handleChange : undefined;\n}\n\nfunction useDataTableStateConflictWarnings(\n state: Partial | undefined,\n legacySlices: Record,\n) {\n const warnedSlicesRef = React.useRef(new Set());\n\n React.useEffect(() => {\n if (!state || !isDevelopmentEnvironment()) {\n return;\n }\n\n for (const key of Object.keys(legacySlices) as Array<\n keyof DataTableState\n >) {\n if (\n state[key] === undefined ||\n !legacySlices[key] ||\n warnedSlicesRef.current.has(key)\n ) {\n continue;\n }\n\n warnedSlicesRef.current.add(key);\n console.warn(\n `[data-table-pro] Both state.${key} and its legacy controlled prop were provided. The legacy prop takes precedence during the 4.x compatibility window.`,\n );\n }\n }, [legacySlices, state]);\n}\n\nfunction isDevelopmentEnvironment() {\n const nodeEnvironment = (\n globalThis as {\n process?: { env?: { NODE_ENV?: string } };\n }\n ).process?.env?.NODE_ENV;\n\n return nodeEnvironment !== \"production\";\n}\n\nfunction cloneDataTableState(state: DataTableState): DataTableState {\n return {\n sorting: state.sorting.map((item) => ({ ...item })),\n pagination: { ...state.pagination },\n rowSelection: { ...state.rowSelection },\n columnVisibility: { ...state.columnVisibility },\n columnFilters: state.columnFilters.map((item) => ({ ...item })),\n expanded:\n typeof state.expanded === \"boolean\"\n ? state.expanded\n : { ...state.expanded },\n grouping: [...(state.grouping ?? [])],\n columnOrder: [...state.columnOrder],\n columnPinning: {\n left: state.columnPinning.left\n ? [...state.columnPinning.left]\n : undefined,\n right: state.columnPinning.right\n ? [...state.columnPinning.right]\n : undefined,\n },\n rowPinning: {\n top: state.rowPinning.top ? [...state.rowPinning.top] : undefined,\n bottom: state.rowPinning.bottom ? [...state.rowPinning.bottom] : undefined,\n },\n columnSizing: { ...state.columnSizing },\n density: state.density,\n viewMode: state.viewMode,\n showHiddenRows: state.showHiddenRows,\n globalFilter: state.globalFilter,\n };\n}\n\nfunction scrollDataTableElementIntoView(\n container: HTMLDivElement | null,\n kind: \"row\" | \"column\",\n value: string,\n) {\n if (!container) {\n return false;\n }\n\n const attribute = kind === \"row\" ? \"data-row-id\" : \"data-column-id\";\n const element = Array.from(\n container.querySelectorAll(`[${attribute}]`),\n ).find((candidate) => candidate.getAttribute(attribute) === value);\n if (!element) {\n return false;\n }\n\n element.scrollIntoView?.({ block: \"nearest\", inline: \"nearest\" });\n return true;\n}\n\nfunction isDataTableEditableClipboardTarget(target: EventTarget | null) {\n if (!(target instanceof HTMLElement)) {\n return false;\n }\n return (\n target.isContentEditable ||\n target instanceof HTMLInputElement ||\n target instanceof HTMLTextAreaElement ||\n target instanceof HTMLSelectElement\n );\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../src/core/data-table/data-table-base-card-panel.tsx","../src/core/data-table/data-table-card-panel.tsx","../src/core/data-table/data-table-footer-section.tsx","../src/core/data-table/data-table-toolbar-section.tsx","../src/core/data-table/data-table-labels.ts","../src/core/data-table/use-data-table-columns.tsx","../src/core/data-table/use-controllable-state.ts","../src/core/data-table/use-data-table-infinite-scroll.ts","../src/core/data-table/use-data-table-pagination-clamp.ts","../src/core/data-table/use-data-table-search-index.ts","../src/core/data-table/use-data-table-instance.ts","../src/core/data-table/use-data-table-column-prefs.ts","../src/core/data-table/use-data-table-container-width.ts","../src/core/data-table/use-data-table-state.ts","../src/core/data-table/use-column-layout.ts","../src/core/data-table/create-data-table-card-view.tsx","../src/core/data-table/create-data-table-empty-state.tsx","../src/core/data-table/create-data-table-pagination.tsx","../src/core/data-table/create-data-table-row-actions.tsx","../src/core/data-table/create-data-table-toolbar.tsx","../src/core/data-table/data-table-table-panel-router.tsx","../src/core/data-table/data-table-saved-views.ts","../src/core/data-table/use-data-table-toolbar-features.ts","../src/core/data-table/use-data-table-performance-diagnostics.ts","../src/core/data-table/create-data-table.tsx"],"names":["DataTableBaseCardPanel","cardClassName","cardGridClassName","cardSizing","cardRenderer","currentRowSelection","currentDetailExpanded","DataTableCardView","DataTableEmptyState","dragAndDrop","editableRows","editingRowId","emptyNode","enableRowSelection","flexGrow","getRowClassName","hasCardTitle","infiniteScroll","localSearchValue","onRowClick","renderedRows","detailPanel","resolvedLabels","resolvedLoadingRowCount","rowActions","ScrollArea","sentinelRef","setCurrentDetailExpanded","setCurrentRowSelection","setEditingRowId","shouldRenderInitialLoading","stateOverlayNode","tableContainerClassName","uiClassNames","shouldRenderCards","cardScrollContainerRef","fi","renderCardView","rows","options","jsx","jsxs","cn","LazyDataTableVirtualCardPanel","Ha","DataTableCardPanel","props","config","DataTableFooterSection","children","currentPagination","DataTableFooter","effectivePageCount","footerTotalRowCount","handleFooterPageIndexChange","handleFooterPageSizeChange","labels","pageCountKnown","rowsPerPageOptions","showFooter","DataTableToolbarSection","allRows","columnFilters","columnVisibilityOptions","compactToolbar","customToolbar","DataTableToolbar","description","descriptionId","effectiveToolbarActions","enableColumnPinning","enableGrouping","enableToolbarColumnChooser","enableToolbarFilterChips","enableToolbarResetLayout","enableToolbarSavedViews","enableDensityToggle","enableViewToggle","hiddenRowsLabel","onClearColumnFilters","onColumnFilterChange","onColumnPinningChange","onDensityChange","onShowHiddenRowsChange","onToolbarQueryValueChange","reorderColumn","onResetColumnLayout","onCreateSavedView","onApplySavedView","onRenameSavedView","onDeleteSavedView","onViewModeChange","openFileDialog","selectedRowIds","selectedRows","selectionActions","savedViews","showHiddenRows","table","title","titleId","toolbarQueryPlaceholder","toolbarQueryValue","toolbarVisibility","density","viewMode","columnId","visible","DATA_TABLE_DEFAULT_LABELS","count","label","pageIndex","pageCount","rowId","columnLabel","name","resolveDataTableLabels","useDataTableColumns","Button","Checkbox","DataTableRowActions","Tooltip","TooltipContent","TooltipTrigger","cancelEditing","columns","editErrors","enableRowPinning","hasTreeExpansion","isSavingEdit","isEditDirty","lastSelectedRowIdRef","detailExpanded","onDetailExpandedChange","rowSelectionSelectAllScope","saveEdit","startEditingRow","tableRef","selectRowRange","Ga","targetRowId","selected","tableInstance","row","isDataTableLoadingRow","startIndex","endIndex","from","to","current","next","item","defs","expansionColumnSize","UTILITY_COLUMN_SIZE","canExpandTree","canExpandDetail","isTreeExpanded","isDetailExpanded","IconChevronDown","toggleDataTableExpandedState","selectsFilteredRows","selectableRows","allSelected","someSelected","checked","event","column","decorateFilterableColumn","position","useControllableState","defaultValue","onChange","value","uncontrolledValue","setUncontrolledValue","It","currentValue","currentValueRef","setValue","updater","nextValue","useDataTableInfiniteScroll","enabled","hasMore","isLoadingMore","onLoadMore","onError","zt","isRequestInFlightRef","onLoadMoreEvent","onErrorEvent","error","target","observer","entries","result","useDataTablePaginationClamp","maxPageIndex","onPageIndexChange","setLocalPageIndex","Si","nextPageIndex","useDataTableSearchIndex","Pi","valuesByRow","filterValue","query","normalizeDataTableSearchText","original","valuesByColumn","text","useDataTableInstance","autoResetPageIndex","columnGroupPaths","columnResizeMode","dir","currentColumnFilters","currentColumnOrder","currentColumnPinning","currentRowPinning","currentColumnSizing","currentExpanded","currentGrouping","currentSorting","currentViewMode","defaultColumn","effectiveColumnVisibility","enableColumnResizing","enableMultiRowSelection","enableSubRowSelection","getRowCanSelect","getRowCanExpand","getSubRows","aggregationFns","groupedColumnMode","globalFilterFn","globalFilterValue","hasNextPage","handleColumnFiltersChange","handleColumnOrderChange","handleColumnPinningChange","handleRowPinningChange","handleColumnVisibilityChange","handleExpandedChange","handleGroupingChange","keepPinnedRows","manualFiltering","manualGrouping","manualExpanding","manualPagination","manualSorting","onActionError","onPageSizeChange","pageSize","paginateExpandedRows","filterFromLeafRows","maxLeafRowFilterDepth","setCurrentSorting","setLocalColumnSizing","setLocalPagination","tableColumns","tableData","tableGetRowId","totalRowCount","virtualization","cachedGlobalFilterFn","generatedColumnIds","ze","getDataTableLeafColumns","index","getColumnId","effectiveColumnOrder","columnIds","dataColumnIds","isUtilityColumnId","dataColumnIdSet","orderedDataColumnIds","unorderedDataColumnIds","effectiveColumnPinning","columnIdSet","dataLeft","dataRight","effectiveRowPinning","availableRowIds","visitRows","subRows","top","topIds","bottom","tableState","handlePaginationChange","handleColumnSizingChange","facetingNeeds","uniqueValues","minMaxValues","useReactTable","getCoreRowModel","getFilteredRowModel","getFacetedRowModel","getFacetedUniqueValues","getFacetedMinMaxValues","getGroupedRowModel","getSortedRowModel","getExpandedRowModel","getPaginationRowModel","visibleLeafColumns","sourceColumnId","targetColumnId","canReorderDataTableColumn","defaultOrder","nextOrder","moveColumnInOrder","topPinnedRows","bottomPinnedRows","virtualizationConfig","virtualRowsEnabled","fallbackRowCount","rowsToRender","rowIndex","usesManualRows","derivedTotalRowCount","effectiveTotalRowCount","isPageCountKnown","nextPageSize","STORAGE_PREFIX","DEFAULT_VERSION","ALL_SLICES","readDataTableColumnPrefs","input","resolvePersistenceConfig","storage","resolveStorage","storageKey","getStorageKey","parsed","targetVersion","candidate","isPersistencePayload","selectPersistenceSlices","validateDataTableColumnPrefs","clearDataTableColumnPrefs","usePersistDataTableColumnPrefs","key","persistence","prefs","version","debounceMs","selectedState","serialized","Ut","payload","operation","write","timeout","isRecord","slices","slice","visibility","validateBooleanRecord","sizing","validateSizingRecord","order","validateStringArray","left","right","rowPinning","validateRowPinning","isDataTableDensity","entry","BREAKPOINT_WIDTHS","DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS","first","second","useDataTableContainerWidth","containerRef","widthRef","na","width","setWidth","element","updateWidth","inlineSize","nextWidth","quantizeDataTableContainerWidth","getResizeObserverInlineSize","bucket","breakpointWidth","contentBoxSize","size","getInlineSize","useDataTableState","columnOrder","columnPinning","columnSizing","columnPrefsKey","columnVisibility","data","enableToolbarQueryFiltering","expanded","grouping","getRowId","hiddenRows","initialState","isLoading","loadingRowCount","onColumnFiltersChange","onColumnOrderChange","onRowPinningChange","onColumnSizingChange","onColumnVisibilityChange","onExpandedChange","onGroupingChange","onRowSelectionChange","onSortingChange","rowSelection","sorting","toolbarQueryDebounceMs","persistenceConfig","ee","persistedColumnPrefs","localPagination","currentColumnVisibility","setCurrentColumnVisibility","setCurrentColumnFilters","setCurrentExpanded","setCurrentColumnOrder","setCurrentColumnPinning","getInitialColumnPinning","setCurrentRowPinning","setCurrentColumnSizing","setCurrentViewMode","setCurrentGrouping","currentShowHiddenRows","setCurrentShowHiddenRows","currentDensity","setCurrentDensity","resolvedToolbarQueryValue","resolvedToolbarQueryPlaceholder","resolvedToolbarQueryDebounceMs","setLocalSearchValue","containerWidth","hasOnSearchValueChange","lastReportedSearchValueRef","onToolbarQueryValueChangeEvent","deferredSearchValue","handleViewModeChange","nextViewMode","handleShowHiddenRowsChange","nextShowHiddenRows","handleDensityChange","nextDensity","resetPageIndexForFilterChange","lastFilterStateRef","previous","filtersChanged","globalFilterChanged","responsiveColumnVisibility","isHiddenAtContainerWidth","visibleData","isRowVisible","loadingRows","createDataTableLoadingRows","getDataTableLoadingRowId","shouldResolveSelectedRows","rowById","currentRows","EMPTY_COLUMN_LAYOUT","useColumnLayout","hasRowActions","hasRowExpansion","layoutMode","explicitlySizedColumnIds","ut","ids","minimumColumnWidths","widths","configuredMinWidth","getConfiguredColumnMinWidth","pinnedColumns","leftOffset","getFixedSide","getColumnLayoutSize","rightOffset","fillColumnId","dataColumns","fixedWidthColumnIds","columnLayouts","layouts","isSelectionColumn","isExpansionColumn","isActionsColumn","isUtilityColumn","isSpacerColumn","isFlexibleFillColumn","columnMinWidth","shouldFixWidth","baseStyle","fixedSide","pinnedStyle","cellStyle","getPinnedColumnClassName","fillMinWidth","total","layout","getColumnLayout","createDataTableCardView","ui","Card","CardContent","CardHeader","Skeleton","onEditingRowIdChange","getRowDraggable","onRowDragStart","onRowDragEnd","resolvedCardSizing","resolvedCardGridClassName","getCardGridClassName","cardGridClasses","cardItemClasses","stateClassName","getCardItemClassName","_","originalRow","isSelected","isEditing","hasCardActions","showCardGradient","showCardOverlayControls","handleCardActivate","getCardRendererClassName","isDataTableInteractiveTarget","updateRowSelection","canSelect","canMultiSelect","nextSelection","createDataTableEmptyState","Empty","EmptyContent","EmptyDescription","EmptyHeader","EmptyMedia","EmptyTitle","IconInbox","createDataTablePagination","Pagination","PaginationContent","PaginationEllipsis","PaginationFirst","PaginationItem","PaginationLast","PaginationLink","PaginationNext","PaginationPrevious","Select","SelectContent","SelectGroup","SelectItem","SelectTrigger","SelectValue","DataTablePagination","pages","getVisiblePages","canGoPrevious","canGoNext","lastPageIndex","option","IconDatabase","currentPageIndex","currentPage","page","orderedPages","items","createDataTableRowActions","DropdownMenu","DropdownMenuContent","DropdownMenuGroup","DropdownMenuItem","DropdownMenuSeparator","DropdownMenuTrigger","onStartEditing","onCancelEditing","actions","action","canUseRowAction","stopRowClickPropagation","Ui","IconX","allowEdit","canEditRow","canPin","IconDots","IconEdit","Fragment","Icon","resolveRowActionLabel","LazyToolbarDataOperations","at","createDataTableToolbar","ButtonGroup","DropdownMenuCheckboxItem","DropdownMenuLabel","InputGroup","InputGroupAddon","InputGroupInput","toolbarActions","compactSearchInputRef","isCompactSearchVisible","setIsCompactSearchVisible","compactToolbarIconButtonClassName","primaryActions","trailingActions","showTitle","showSearch","showActions","showTrailingActions","showOptions","showViewToggle","showCustomToolbar","hasVisibleTitle","hasVisibleSearch","hasVisiblePrimaryActions","hasVisibleSelectionActions","hasVisibleOptions","hasToolbarOperationsMenu","activeColumnFilters","filter","hasColumnFilterValue","toolbarOperationsUi","renderToolbarDataOperations","placement","groupableColumns","groupedColumns","id","hasVisibleViewToggle","hasVisibleTrailingActions","hasVisibleCustomToolbar","hasVisibleCompactToolbar","selectedRowCountLabel","IconSearch","collapsesToIcon","button","context","disabled","IconAdjustmentsHorizontal","isGrouped","IconList","IconLayoutGrid","ToolbarColumnFilterControl","groupingIndex","moveGrouping","nextIndex","nextGrouping","groupingId","facetQuery","setFacetQuery","range","normalizeToolbarRangeValue","inputType","fromLabel","toLabel","parseRangeInputValue","isBoolean","isFaceted","booleanOptions","visibleOptions","selectedValue","selectedValues","selectedLabel","nextValues","LazyDataTableVirtualTablePanel","Ua","DataTableTablePanelRouter","DataTableTablePanel","DEFAULT_SLICES","fallbackId","readDataTableSavedViews","view","validateSavedView","createDataTableSavedView","state","normalizedName","now","createSavedViewId","selectSavedViewSlices","views","writeViews","cloneSavedView","renameDataTableSavedView","renamed","deleteDataTableSavedView","clearDataTableSavedViews","snapshots","snapshot","cloneStateSlice","validateState","validateSorting","pagination","validatePagination","filters","validateFilters","pinning","validatePinning","useDataTableToolbarFeatures","enableColumnFilters","csvExport","yt","header","accessorKey","getAccessorKey","startCase","pinned","toolbarColumnFilters","configuredFacetOptions","facetedMinMax","rawOptions","normalizeColumnFilterOptions","handleToolbarColumnFilterChange","hasFilterValue","handleClearColumnFilters","handleToolbarColumnPinningChange","side","handleCsvExport","exportDataTableCsv","IconDownload","useDataTablePerformanceDiagnostics","fa","warned","isDevelopmentEnvironment","last","haveSameItems","warn","message","DataTableAutoPageSize","createDataTable","createDataTableWithPanels","rootClassName","Input","ScrollBar","Table","TableBody","TableCell","TableFooter","TableHead","TableHeader","TableRow","TooltipProvider","DataTableStateOverlay","createDataTableStateOverlay","autoPageSize","renderExpandedRow","enableColumnReordering","columnGroupHeaderHeight","clipboard","enableCellSelection","cellSelection","defaultCellSelection","onCellSelectionChange","gridCommands","toolbarDataOperations","unifiedState","onStateChange","apiRef","summaryRows","enablePrint","enableFullscreen","emptyState","stateOverlay","getRowLoadingState","stickyHeader","showToolbar","className","tableClassName","stripedRows","fileUpload","accessibility","interactiveGrid","fileInputRef","tableScrollContainerRef","draggedColumnIdRef","toolbarSavedViewsVersion","setToolbarSavedViewsVersion","generatedTitleId","generatedDescriptionId","validateDataTableColumnIds","toolbarOperations","gridMode","currentCellSelection","setCurrentCellSelection","resolvedSorting","resolvedGrouping","resolvedPageIndex","resolvedPageSize","resolvedRowSelection","resolvedColumnVisibility","resolvedColumnFilters","resolvedExpanded","resolvedColumnOrder","resolvedColumnPinning","resolvedRowPinning","resolvedColumnSizing","resolvedDensity","resolvedViewMode","resolvedShowHiddenRows","showTableHeading","useDataTableStateConflictWarnings","handleToolbarQueryValueChange","useDataTableStateSliceChange","handleSortingPropChange","handleGroupingPropChange","handleRowSelectionPropChange","handleColumnVisibilityPropChange","handleColumnFiltersPropChange","handleExpandedPropChange","handleColumnOrderPropChange","handleColumnPinningPropChange","handleRowPinningPropChange","handleColumnSizingPropChange","handleDensityPropChange","handleViewModePropChange","handleShowHiddenRowsPropChange","handlePageIndexPropChange","handlePageSizePropChange","runAction","runDataTableAction","guardedRowActions","guardedOnRowClick","handleEditError","usesLegacyDetailPanelState","resolvedDetailPanel","clearEditError","draftValues","setDraftValues","useRowEditing","rowEditingContext","tableScrollElement","viewportHeight","useDataTableScrollViewport","autoPageSizeConfig","handleAutoPageSizeChange","autoPageSizeEnabled","print","toggleFullscreen","isFullscreen","setIsFullscreen","update","handleSelectedFiles","files","getDataTableColumnGroupPaths","virtualPaddingBottom","virtualPaddingTop","columnLayout","explicitCustomCellColumnIds","visibleLeafColumnCount","bodyRowComponents","primeColumnForResize","currentSize","flushSync","resetColumnSize","filteredData","configuredEmptyState","guardedStateOverlay","guardedToolbarActions","guardedSelectionActions","currentDataTableState","getCurrentState","cloneDataTableState","restoreState","nextState","clearPersistedState","resetColumnLayout","resetState","getSavedViews","createSavedView","applySavedView","renameSavedView","deleteSavedView","clearSavedViews","toolbarSavedViews","handleToolbarCreateSavedView","handleToolbarRenameSavedView","handleToolbarDeleteSavedView","deleted","exportCsvFromApi","copyToClipboard","copyDataTableToClipboard","pinRow","unpinRow","scrollDataTableElementIntoView","isDataTableEditableClipboardTarget","command","paste","parseDataTableClipboardText","onLegacyChange","handleChange","legacySlices","warnedSlicesRef","container","kind","attribute"],"mappings":"owBAKO,SAASA,EAAAA,CAA8B,CAC5C,aAAA,CAAAC,CAAAA,CACA,iBAAA,CAAAC,CAAAA,CACA,UAAA,CAAAC,CAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,mBAAA,CAAAC,CAAAA,CACA,qBAAA,CAAAC,CAAAA,CACA,iBAAA,CAAAC,CAAAA,CACA,mBAAA,CAAAC,CAAAA,CACA,WAAA,CAAAC,CAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,kBAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,UAAA,CAAAC,CAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,WAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,uBAAA,CAAAC,CAAAA,CACA,UAAA,CAAAC,EAAa,EAAC,CACd,UAAA,CAAAC,CAAAA,CACA,WAAA,CAAAC,CAAAA,CACA,wBAAA,CAAAC,CAAAA,CACA,sBAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CAAAA,CACA,0BAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,uBAAA,CAAAC,CAAAA,CACA,YAAA,CAAAC,CACF,CAAA,CAAmC,CACjC,IAAMC,CAAAA,CACJJ,CAAAA,EAA8BV,CAAAA,CAAa,MAAA,CAAS,CAAA,CAChDe,CAAAA,CAA+BC,CAAA,CAAA,MAAA,CAA8B,IAAI,CAAA,CAEjEC,CAAAA,CAAiB,CACrBC,CAAAA,CACAC,CAAAA,GAKAC,GAAAA,CAACjC,CAAAA,CAAA,CACC,IAAA,CAAM+B,CAAAA,CACN,YAAA,CAAclC,CAAAA,CACd,iBAAA,CAAmBF,CAAAA,CACnB,aAAA,CAAeD,CAAAA,CACf,UAAA,CAAYE,CAAAA,CACZ,UAAA,CAAYqB,CAAAA,CACZ,YAAA,CAAcd,CAAAA,CACd,WAAA,CAAaW,CAAAA,CACb,cAAA,CAAgBf,CAAAA,CAChB,sBAAA,CAAwBqB,CAAAA,CACxB,YAAA,CAAcX,CAAAA,CACd,YAAA,CAAcX,CAAAA,CACd,oBAAA,CAAsBuB,EACtB,kBAAA,CAAoBf,CAAAA,CACpB,YAAA,CAAcF,CAAAA,CACd,oBAAA,CAAsBkB,CAAAA,CACtB,eAAA,CAAiBd,CAAAA,CACjB,UAAA,CAAYI,CAAAA,CACZ,eAAA,CAAiBV,CAAAA,EAAa,eAAA,CAC9B,cAAA,CAAgBA,CAAAA,EAAa,cAAA,CAC7B,YAAA,CAAcA,CAAAA,EAAa,YAAA,CAC3B,SAAA,CAAW8B,CAAAA,EAAS,SAAA,CACpB,eAAA,CAAiBA,CAAAA,EAAS,eAAA,CAC1B,MAAA,CAAQjB,CAAAA,CACV,CAAA,CAGF,OACEmB,IAAAA,CAAC,KAAA,CAAA,CACC,GAAA,CAAKN,CAAAA,CACL,eAAA,CAAc,uBAAA,CACd,SAAA,CAAWO,GAAAA,CACT,mEAAA,CACA5B,CAAAA,CAAW,8BAAA,CAAiC,QAAA,CAC5CL,CAAAA,EAAa,UAAA,GACVwB,CAAAA,CAAa,UAAA,EAAc,0BAAA,CAChC,CAAA,CAEA,QAAA,CAAA,CAAAO,GAAAA,CAACf,CAAAA,CAAA,CACC,SAAA,CAAWiB,GAAAA,CACT5B,CAAAA,CAAW,gBAAA,CAAmB,QAAA,CAC9BmB,CAAAA,CAAa,cAAA,CACbD,CACF,CAAA,CAEA,QAAA,CAAAS,IAAAA,CAAC,KAAA,CAAA,CACC,eAAA,CAAc,2BACd,SAAA,CAAWC,GAAAA,CACT,kCAAA,CACA5B,CAAAA,EAAY,gBAAA,CACZmB,CAAAA,CAAa,YACf,CAAA,CAEC,QAAA,CAAA,CAAAC,CAAAA,CACCJ,CAAAA,CACEO,CAAAA,CAAe,EAAC,CAAG,CACjB,SAAA,CAAW,IAAA,CACX,eAAA,CAAiBd,CACnB,CAAC,CAAA,CAEDc,CAAAA,CAAejB,CAAY,CAAA,CAG7BoB,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,qDAAA,CACZ,QAAA,CAAA5B,CAAAA,EACC4B,GAAAA,CAAChC,CAAAA,CAAA,CACC,KAAA,CACEU,CAAAA,CACII,CAAAA,CAAe,mBAAA,CACfA,CAAAA,CAAe,WAAA,CAErB,WAAA,CACEJ,CAAAA,CACII,CAAAA,CAAe,yBAAA,CACfA,CAAAA,CAAe,iBAAA,CAEvB,CAAA,CAEJ,CAAA,CAGDL,CAAAA,EAAgB,OAAA,EAAW,CAACa,CAAAA,CAC3BU,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,oBAAA,CACb,QAAA,CAAAA,GAAAA,CAAC,KAAA,CAAA,CAAI,GAAA,CAAKd,CAAAA,CAAa,SAAA,CAAU,YAAA,CAAa,CAAA,CAChD,CAAA,CACE,IAAA,CAAA,CACN,EACF,CAAA,CACCK,CAAAA,CAAAA,CACH,CAEJ,CC3IA,IAAMY,EAAAA,CAAsCC,CAAA,CAAA,IAAA,CAAK,UAExC,CAAE,OAAA,CAAA,CADM,MAAM,OAAO,6CAAiC,CAAA,EACpC,yBAA0B,CAAA,CACpD,CAAA,CAEM,SAASC,EAAAA,CACdC,CAAAA,CACA,CACA,IAAMC,CAAAA,CACJ,OAAOD,CAAAA,CAAM,cAAA,EAAmB,QAAA,CAC5BA,CAAAA,CAAM,cAAA,CAAe,IAAA,CACrB,MAAA,CAEN,OAAIC,CAAAA,EAAQ,OAAA,GAAY,IAAA,CACfP,GAAAA,CAACxC,EAAAA,CAAA,CAAwB,GAAG8C,CAAAA,CAAO,CAAA,CAI1CN,GAAAA,CAAOI,CAAA,CAAA,QAAA,CAAN,CACC,QAAA,CACEJ,GAAAA,CAACxC,EAAAA,CAAA,CACE,GAAG8C,CAAAA,CACJ,YAAA,CAAcA,CAAAA,CAAM,YAAA,CAAa,KAAA,CAC/B,CAAA,CACA,IAAA,CAAK,GAAA,CAAI,CAAA,CAAG,IAAA,CAAK,KAAA,CAAMC,CAAAA,CAAO,mBAAqB,EAAE,CAAC,CACxD,CAAA,CACF,CAAA,CAGF,QAAA,CAAAP,GAAAA,CAACG,EAAAA,CAAA,CAA+B,GAAGG,CAAAA,CAAO,CAAA,CAC5C,CAEJ,CClBO,SAASE,EAAAA,CAAuB,CACrC,QAAA,CAAAC,CAAAA,CACA,iBAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CAAAA,CACA,kBAAA,CAAAC,CAAAA,CACA,mBAAA,CAAAC,CAAAA,CACA,2BAAA,CAAAC,CAAAA,CACA,0BAAA,CAAAC,CAAAA,CACA,MAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CAAiB,IAAA,CACjB,kBAAA,CAAAC,CAAAA,CACA,UAAA,CAAAC,CACF,CAAA,CAAgC,CAC9B,OAAI,CAACA,CAAAA,EAAc,CAACV,CAAAA,CACX,IAAA,CAIPR,IAAAA,CAAC,KAAA,CAAA,CAAI,eAAA,CAAc,mBAAA,CAAoB,SAAA,CAAU,UAAA,CAC9C,QAAA,CAAA,CAAAkB,CAAAA,CACCnB,IAACW,CAAAA,CAAA,CACC,SAAA,CAAWD,CAAAA,CAAkB,SAAA,CAC7B,SAAA,CAAWE,CAAAA,CACX,cAAA,CAAgBK,CAAAA,CAChB,QAAA,CAAUP,CAAAA,CAAkB,QAAA,CAC5B,aAAA,CAAeG,CAAAA,CACf,kBAAA,CAAoBK,CAAAA,CACpB,iBAAA,CAAmBJ,CAAAA,CACnB,gBAAA,CAAkBC,CAAAA,CAClB,MAAA,CAAQC,CAAAA,CACV,CAAA,CACE,IAAA,CACHP,CAAAA,CAAAA,CACH,CAEJ,CCIO,SAASW,EAAAA,CAA+B,CAC7C,OAAA,CAAAC,CAAAA,CACA,aAAA,CAAAC,CAAAA,CACA,uBAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,aAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,WAAA,CAAAC,CAAAA,CACA,aAAA,CAAAC,CAAAA,CACA,uBAAA,CAAAC,CAAAA,CACA,mBAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,0BAAA,CAAAC,CAAAA,CACA,wBAAA,CAAAC,CAAAA,CACA,wBAAA,CAAAC,CAAAA,CACA,uBAAA,CAAAC,EACA,mBAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CAAAA,CACA,MAAA,CAAAtB,CAAAA,CACA,oBAAA,CAAAuB,CAAAA,CACA,oBAAA,CAAAC,CAAAA,CACA,qBAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CAAAA,CACA,sBAAA,CAAAC,CAAAA,CACA,yBAAA,CAAAC,CAAAA,CACA,aAAA,CAAAC,CAAAA,CACA,mBAAA,CAAAC,CAAAA,CACA,iBAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,iBAAA,CAAAC,CAAAA,CACA,iBAAA,CAAAC,CAAAA,CACA,iBAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,UAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,EAAAA,CACA,uBAAA,CAAAC,EAAAA,CACA,iBAAA,CAAAC,EAAAA,CACA,iBAAA,CAAAC,EAAAA,CACA,OAAA,CAAAC,EAAAA,CACA,QAAA,CAAAC,EACF,CAAA,CAAwC,CACtC,OACEjE,IAAC,KAAA,CAAA,CAAI,eAAA,CAAc,oBAAA,CAAqB,SAAA,CAAU,UAAA,CAChD,QAAA,CAAAA,GAAAA,CAAC0B,CAAAA,CAAA,CACC,KAAA,CAAOiC,CAAAA,CACP,OAAA,CAASC,EAAAA,CACT,WAAA,CAAajC,CAAAA,CACb,aAAA,CAAeC,CAAAA,CACf,iBAAA,CAAmBkC,EAAAA,CACnB,uBAAA,CAAyBD,EAAAA,CACzB,yBAAA,CAA2BjB,CAAAA,CAC3B,aAAA,CAAeC,CAAAA,CACf,aAAA,CAAepB,CAAAA,CACf,cAAA,CAAgBD,CAAAA,CAChB,QAAA,CAAUyC,EAAAA,CACV,gBAAA,CAAkBd,CAAAA,CAClB,gBAAA,CAAkBd,CAAAA,CAClB,cAAA,CAAgBR,CAAAA,CAChB,gBAAA,CAAkB0B,CAAAA,CAClB,cAAA,CAAgBF,CAAAA,CAChB,YAAA,CAAcC,CAAAA,CACd,cAAA,CAAgBG,CAAAA,CAChB,eAAA,CAAiBnB,CAAAA,CACjB,sBAAA,CAAwBK,CAAAA,CACxB,OAAA,CAAStB,CAAAA,CACT,uBAAA,CAAyBE,CAAAA,CACzB,wBAAA,CAA0B,CAAC2C,EAAAA,CAAkBC,EAAAA,GAAqB,CAChET,CAAAA,CAAM,SAAA,CAAUQ,EAAQ,CAAA,EAAG,gBAAA,CAAiBC,EAAO,EACrD,CAAA,CACA,mBAAA,CAAqBrC,CAAAA,CACrB,cAAA,CAAgBC,CAAAA,CAChB,0BAAA,CAA4BC,CAAAA,CAC5B,wBAAA,CAA0BC,CAAAA,CAC1B,wBAAA,CAA0BC,CAAAA,CAC1B,uBAAA,CAAyBC,CAAAA,CACzB,qBAAA,CAAuBM,CAAAA,CACvB,aAAA,CAAenB,CAAAA,CACf,oBAAA,CAAsBkB,CAAAA,CACtB,oBAAA,CAAsBD,CAAAA,CACtB,mBAAA,CAAqBO,CAAAA,CACrB,iBAAA,CAAmBC,CAAAA,CACnB,gBAAA,CAAkBC,CAAAA,CAClB,iBAAA,CAAmBC,CAAAA,CACnB,iBAAA,CAAmBC,CAAAA,CACnB,OAAA,CAASc,EAAAA,CACT,eAAA,CAAiBtB,CAAAA,CACjB,mBAAA,CAAqBN,CAAAA,CACrB,MAAA,CAAQpB,CAAAA,CACR,iBAAA,CAAmB+C,EAAAA,CACnB,cAAA,CAAgBX,CAAAA,CAChB,UAAA,CAAYI,CAAAA,CACZ,KAAA,CAAOE,CAAAA,CACT,CAAA,CACF,CAEJ,CC3JO,IAAMU,EAAAA,CAAqD,CAChE,iBAAA,CAAmB,gBAAA,CACnB,WAAA,CAAa,cAAA,CACb,WAAA,CAAa,cAAA,CACb,WAAA,CAAa,aAAA,CACb,kBAAmB,wDAAA,CACnB,mBAAA,CAAqB,kBAAA,CACrB,yBAAA,CAA2B,+CAAA,CAC3B,YAAA,CAAc,oBAAA,CACd,OAAA,CAAS,SAAA,CACT,OAAA,CAAS,SAAA,CACT,YAAA,CAAc,eAAA,CACd,UAAA,CAAY,MAAA,CACZ,QAAA,CAAU,IAAA,CACV,UAAA,CAAY,KAAA,CACZ,WAAA,CAAa,IAAA,CACb,YAAA,CAAeC,CAAAA,EACb,CAAA,EAAGA,CAAK,CAAA,OAAA,EAAUA,CAAAA,GAAU,CAAA,CAAI,EAAA,CAAK,GAAG,CAAA,SAAA,CAAA,CAC1C,cAAA,CAAiBC,CAAAA,EAAU,CAAA,KAAA,EAAQA,CAAK,CAAA,CAAA,CACxC,cAAA,CAAgB,kBAAA,CAChB,YAAA,CAAeD,CAAAA,EAAU,CAAA,eAAA,EAAkBA,CAAK,CAAA,CAAA,CAChD,UAAA,CAAY,CAACE,CAAAA,CAAWC,CAAAA,GAAc,CAAA,KAAA,EAAQD,CAAAA,CAAY,CAAC,CAAA,IAAA,EAAOC,CAAS,CAAA,CAAA,CAC3E,iBAAA,CAAoBD,CAAAA,EAAc,CAAA,KAAA,EAAQA,CAAAA,CAAY,CAAC,CAAA,CAAA,CACvD,UAAA,CAAY,YAAA,CACZ,SAAA,CAAW,YAAA,CACX,SAAA,CAAW,aACX,YAAA,CAAc,eAAA,CACd,QAAA,CAAU,WAAA,CACV,QAAA,CAAU,WAAA,CACV,oBAAA,CAAsB,yBAAA,CACtB,qBAAA,CAAuB,0BAAA,CACvB,SAAA,CAAW,YAAA,CACX,aAAA,CAAgBE,CAAAA,EAAU,CAAA,WAAA,EAAcA,CAAK,CAAA,CAAA,CAC7C,iBAAA,CAAmB,sBAAA,CACnB,gBAAA,CAAkB,qBAAA,CAClB,SAAA,CAAW,YAAA,CACX,QAAA,CAAU,WAAA,CACV,gBAAA,CAAkB,KAAA,CAClB,OAAA,CAAS,SAAA,CACT,UAAA,CAAY,aAAA,CACZ,OAAA,CAAS,WACT,QAAA,CAAU,MAAA,CACV,UAAA,CAAY,gBAAA,CACZ,SAAA,CAAW,YAAA,CACX,WAAA,CAAa,cAAA,CACb,gBAAA,CAAkB,oBAAA,CAClB,kBAAA,CAAoB,sBAAA,CACpB,SAAA,CAAW,YAAA,CACX,KAAA,CAAO,aAAA,CACP,eAAA,CAAiB,kBAAA,CACjB,cAAA,CAAgB,iBAAA,CAChB,UAAA,CAAY,2BAAA,CACZ,gBAAA,CAAkB,qCAAA,CAClB,KAAA,CAAO,OAAA,CACP,OAAA,CAAS,SAAA,CACT,cAAA,CAAgB,SAAA,CAChB,kBAAA,CAAoB,aAAA,CACpB,gBAAiB,UAAA,CACjB,OAAA,CAAS,UAAA,CACT,QAAA,CAAU,WAAA,CACV,KAAA,CAAO,OAAA,CACP,WAAA,CAAa,gBAAA,CACb,cAAA,CAAgB,mBAAA,CAChB,QAAA,CAAU,WAAA,CACV,YAAA,CAAeC,CAAAA,EAAgB,CAAA,OAAA,EAAUA,CAAW,CAAA,CAAA,CACpD,QAAA,CAAU,UAAA,CACV,OAAA,CAAUA,CAAAA,EAAgB,CAAA,SAAA,EAAYA,CAAW,CAAA,CAAA,CACjD,OAAA,CAAUA,CAAAA,EAAgB,CAAA,QAAA,EAAWA,CAAW,CAAA,CAAA,CAChD,cAAA,CAAiBA,CAAAA,EAAgB,CAAA,OAAA,EAAUA,CAAW,CAAA,SAAA,CAAA,CACtD,mBAAA,CAAsBA,CAAAA,EAAgB,CAAA,KAAA,EAAQA,CAAW,CAAA,iBAAA,CAAA,CACzD,iBAAA,CAAoBA,CAAAA,EAAgB,CAAA,KAAA,EAAQA,CAAW,CAAA,eAAA,CAAA,CACvD,WAAA,CAAcA,CAAAA,EAAgB,CAAA,OAAA,EAAUA,CAAW,CAAA,QAAA,CAAA,CACnD,aAAA,CAAe,gBAAA,CACf,cAAA,CAAgB,kBAAA,CAChB,cAAA,CAAgB,kBAAA,CAChB,iBAAA,CAAoBA,CAAAA,EAAgB,CAAA,KAAA,EAAQA,CAAW,CAAA,QAAA,CAAA,CACvD,eAAA,CAAkBA,CAAAA,EAAgB,CAAA,KAAA,EAAQA,CAAW,CAAA,MAAA,CAAA,CACrD,iBAAA,CAAmB,qBAAA,CACnB,UAAA,CAAY,aAAA,CACZ,eAAA,CAAiB,mBAAA,CACjB,aAAA,CAAe,WAAA,CACf,cAAA,CAAiBC,CAAAA,EAAS,CAAA,iBAAA,EAAoBA,CAAI,CAAA,CAAA,CAClD,eAAA,CAAkBA,CAAAA,EAAS,CAAA,kBAAA,EAAqBA,CAAI,CAAA,CAAA,CACpD,eAAA,CAAkBA,CAAAA,EAAS,CAAA,kBAAA,EAAqBA,CAAI,CAAA,CAAA,CACpD,aAAA,CAAe,WACjB,CAAA,CAEO,SAASC,EAAAA,CACd5D,CAAAA,CACyB,CACzB,OAAO,CACL,GAAGoD,EAAAA,CACH,GAAGpD,CACL,CACF,CCzDO,SAAS6D,EAAAA,CAA2B,CACzC,MAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,mBAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,aAAA,CAAAC,GAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,YAAA,CAAAnH,EACA,YAAA,CAAAC,CAAAA,CACA,UAAA,CAAAmH,CAAAA,CACA,kBAAA,CAAAjH,CAAAA,CACA,gBAAA,CAAAkH,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,WAAA,CAAAC,CAAAA,CACA,MAAA,CAAA1E,CAAAA,CACA,oBAAA,CAAA2E,CAAAA,CACA,WAAA,CAAA9G,CAAAA,CACA,cAAA,CAAA+G,CAAAA,CACA,sBAAA,CAAAC,CAAAA,CACA,0BAAA,CAAAC,GAAAA,CACA,UAAA,CAAA9G,CAAAA,CACA,QAAA,CAAA+G,CAAAA,CACA,eAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CACF,CAAA,CA+BG,CACD,IAAMC,CAAAA,CAAuBC,CAAA,CAAA,WAAA,CAC3B,CAACC,CAAAA,CAAqBC,CAAAA,GAAsB,CAC1C,IAAMC,CAAAA,CAAgBL,CAAAA,CAAS,OAAA,CAC/B,GAAI,CAACK,CAAAA,EAAiB,CAACX,CAAAA,CAAqB,OAAA,CAC1C,OAGF,IAAM7F,CAAAA,CAAOwG,CAAAA,CACV,WAAA,EAAY,CACZ,IAAA,CAAK,MAAA,CAAQC,CAAAA,EAAQ,CAACC,CAAAA,CAAsBD,EAAI,QAAQ,CAAC,CAAA,CACtDE,CAAAA,CAAa3G,CAAAA,CAAK,SAAA,CACrByG,CAAAA,EAAQA,CAAAA,CAAI,EAAA,GAAOZ,CAAAA,CAAqB,OAC3C,CAAA,CACMe,CAAAA,CAAW5G,CAAAA,CAAK,SAAA,CAAWyG,CAAAA,EAAQA,CAAAA,CAAI,EAAA,GAAOH,CAAW,CAAA,CAE/D,GAAIK,CAAAA,CAAa,CAAA,EAAKC,CAAAA,CAAW,CAAA,CAC/B,OAGF,IAAMC,CAAAA,CAAO,IAAA,CAAK,GAAA,CAAIF,CAAAA,CAAYC,CAAQ,EACpCE,CAAAA,CAAK,IAAA,CAAK,GAAA,CAAIH,CAAAA,CAAYC,CAAQ,CAAA,CACxCJ,CAAAA,CAAc,eAAA,CAAiBO,CAAAA,EAAY,CACzC,IAAMC,CAAAA,CAAO,CAAE,GAAGD,CAAQ,CAAA,CAC1B,IAAA,IAAWN,CAAAA,IAAOzG,CAAAA,CACf,KAAA,CAAM6G,CAAAA,CAAMC,CAAAA,CAAK,CAAC,CAAA,CAClB,MAAA,CACEG,CAAAA,EAASA,CAAAA,CAAK,YAAA,EAAa,EAAKA,CAAAA,CAAK,iBAAA,EACxC,EACIV,CAAAA,CACFS,CAAAA,CAAKP,CAAAA,CAAI,EAAE,CAAA,CAAI,IAAA,CAEf,OAAOO,CAAAA,CAAKP,CAAAA,CAAI,EAAE,CAAA,CAGtB,OAAOO,CACT,CAAC,EACH,CAAA,CACA,CAACnB,CAAAA,CAAsBM,CAAQ,CACjC,CAAA,CAEA,OAAaE,CAAA,CAAA,OAAA,CAA0C,IAAM,CAC3D,IAAMa,CAAAA,CAAyC,EAAC,CAEhD,GAAIxB,CAAAA,EAAoB3G,CAAAA,CAAa,CACnC,IAAMoI,CAAAA,CACJzB,CAAAA,EAAoB3G,CAAAA,CAAc,EAAA,CAAKqI,GAAAA,CACzCF,CAAAA,CAAK,IAAA,CAAK,CACR,EAAA,CAAI,YAAA,CACJ,cAAA,CAAgB,KAAA,CAChB,aAAA,CAAe,KAAA,CACf,YAAA,CAAc,KAAA,CACd,IAAA,CAAMC,CAAAA,CACN,OAAA,CAASA,CAAAA,CACT,OAAA,CAASA,CAAAA,CACT,MAAA,CAAQ,IAAMjH,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,SAAA,CAAW,QAAA,CAAAgB,CAAAA,CAAO,UAAU,CAAA,CAC1D,IAAA,CAAM,CAAC,CAAE,GAAA,CAAAuF,CAAAA,CAAK,KAAA,CAAA7C,CAAM,CAAA,GAAM,CACxB,IAAMyD,CAAAA,CAAgB3B,CAAAA,EAAoBe,CAAAA,CAAI,YAAA,EAAa,CACrDa,CAAAA,CAAkB,CAAA,EACtBvI,CAAAA,GAAgBA,CAAAA,CAAY,eAAA,GAAkB0H,CAAAA,CAAI,QAAQ,CAAA,EAAK,IAAA,CAAA,CAAA,CAEjE,GAAI,CAACY,CAAAA,EAAiB,CAACC,CAAAA,CACrB,OAAO,IAAA,CAGT,IAAMC,CAAAA,CAAiBd,CAAAA,CAAI,aAAA,EAAc,CACnCe,CAAAA,CACJ1B,CAAAA,GAAmB,IAAA,EAAQ,CAAA,CAAQA,CAAAA,CAAeW,CAAAA,CAAI,EAAE,CAAA,CAC1D,OACEtG,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wCAAA,CACZ,QAAA,CAAA,CAAAkH,CAAAA,CACCnH,GAAAA,CAAC8E,CAAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,OAAA,CAAQ,OAAA,CACR,IAAA,CAAK,SAAA,CACL,YAAA,CACEuC,CAAAA,CAAiBrG,CAAAA,CAAO,YAAcA,CAAAA,CAAO,SAAA,CAE/C,eAAA,CAAeqG,CAAAA,CACf,kBAAA,CAAiB,MAAA,CACjB,OAAA,CAAS,IAAMd,CAAAA,CAAI,cAAA,EAAe,CAElC,QAAA,CAAAvG,GAAAA,CAACuH,CAAAA,CAAA,CACC,SAAA,CAAWrH,GAAAA,CACT,sBAAA,CACAmH,CAAAA,CAAiB,UAAA,CAAa,YAChC,CAAA,CACF,CAAA,CACF,CAAA,CACE,IAAA,CACHD,CAAAA,CACCpH,GAAAA,CAAC8E,CAAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,OAAA,CAAQ,OAAA,CACR,IAAA,CAAK,SAAA,CACL,YAAA,CACEwC,CAAAA,CACI9B,CAAAA,CACGxE,CAAAA,CAAO,kBAAA,EACRoD,EAAAA,CAA0B,kBAAA,CAC1BpD,CAAAA,CAAO,WAAA,CACTwE,CAAAA,CACGxE,CAAAA,CAAO,gBAAA,EACRoD,EAAAA,CAA0B,gBAAA,CAC1BpD,CAAAA,CAAO,SAAA,CAEf,eAAA,CAAesG,CAAAA,CACf,oBAAA,CAAmB,MAAA,CACnB,OAAA,CAAS,IAAM,CACbzB,CAAAA,CAAwBgB,CAAAA,EACtBW,CAAAA,CACEX,CAAAA,CACAN,CAAAA,CAAI,EAAA,CACJ7C,EAAM,eAAA,EAAgB,CAAE,QAAA,CAAS,GAAA,CAAKqD,CAAAA,EAASA,CAAAA,CAAK,EAAE,CACxD,CACF,EACF,CAAA,CAEA,QAAA,CAAA/G,GAAAA,CAACuH,CAAAA,CAAA,CACC,SAAA,CAAWrH,GAAAA,CACT,sBAAA,CACAoH,CAAAA,CAAmB,UAAA,CAAa,YAClC,CAAA,CACF,CAAA,CACF,CAAA,CACE,IAAA,CAAA,CACN,CAEJ,CACF,CAAC,EACH,CAEA,OAAIjJ,CAAAA,EACF2I,EAAK,IAAA,CAAK,CACR,EAAA,CAAI,YAAA,CACJ,cAAA,CAAgB,KAAA,CAChB,aAAA,CAAe,KAAA,CACf,YAAA,CAAc,KAAA,CACd,IAAA,CAAME,GAAAA,CACN,OAAA,CAASA,GAAAA,CACT,OAAA,CAASA,GAAAA,CACT,MAAA,CAAQ,CAAC,CAAE,KAAA,CAAAxD,CAAM,CAAA,GAAM,CACrB,IAAM+D,CAAAA,CAAsB3B,GAAAA,GAA+B,UAAA,CACrD4B,CAAAA,CAAAA,CAAkBD,CAAAA,CACpB/D,CAAAA,CAAM,mBAAA,EAAoB,CAAE,SAC5BA,CAAAA,CAAM,WAAA,EAAY,CAAE,QAAA,EACtB,MAAA,CAAQ6C,CAAAA,EAAQA,CAAAA,CAAI,YAAA,EAAa,EAAKA,CAAAA,CAAI,iBAAA,EAAmB,CAAA,CACzDoB,CAAAA,CACJD,CAAAA,CAAe,MAAA,CAAS,CAAA,EACxBA,CAAAA,CAAe,KAAA,CAAOnB,CAAAA,EAAQA,CAAAA,CAAI,aAAA,EAAe,CAAA,CAC7CqB,CAAAA,CAAeF,CAAAA,CAAe,IAAA,CAAMnB,CAAAA,EAAQA,CAAAA,CAAI,aAAA,EAAe,CAAA,CAC/DjC,CAAAA,CAAQmD,CAAAA,CACTzG,CAAAA,CAAO,qBAAA,EACRoD,EAAAA,CAA0B,qBAAA,CACzBpD,CAAAA,CAAO,oBAAA,EACRoD,EAAAA,CAA0B,oBAAA,CAE9B,OAAIsD,CAAAA,CAAe,MAAA,GAAW,CAAA,CACrB1H,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,SAAA,CAAW,QAAA,CAAAsE,CAAAA,CAAM,CAAA,CAIxCtE,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,kCAAA,CACb,QAAA,CAAAA,GAAAA,CAAC+E,CAAAA,CAAA,CACC,SAAA,CAAU,QAAA,CACV,OAAA,CAAS4C,EAAc,IAAA,CAAOC,CAAAA,CAAe,eAAA,CAAkB,KAAA,CAC/D,eAAA,CAAkBC,CAAAA,EAAuC,CACvDnE,CAAAA,CAAM,eAAA,CAAiBmD,CAAAA,EAAY,CACjC,IAAMC,CAAAA,CAAO,CAAE,GAAGD,CAAQ,CAAA,CAC1B,IAAA,IAAWN,CAAAA,IAAOmB,CAAAA,CACZG,CAAAA,GAAY,IAAA,CACdf,CAAAA,CAAKP,CAAAA,CAAI,EAAE,CAAA,CAAI,IAAA,CAEf,OAAOO,CAAAA,CAAKP,CAAAA,CAAI,EAAE,CAAA,CAGtB,OAAOO,CACT,CAAC,EACH,CAAA,CACA,YAAA,CAAYxC,CAAAA,CACd,CAAA,CACF,CAEJ,CAAA,CACA,IAAA,CAAM,CAAC,CAAE,GAAA,CAAAiC,CAAI,CAAA,GACXvG,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,kCAAA,CACb,QAAA,CAAAA,GAAAA,CAAC+E,CAAAA,CAAA,CACC,SAAA,CAAU,QAAA,CACV,OAAA,CAASwB,CAAAA,CAAI,aAAA,EAAc,CAC3B,QAAA,CAAU,CAACA,EAAI,YAAA,EAAa,CAC5B,OAAA,CAAUuB,CAAAA,EAA+C,CACvD,GACE,CAACA,CAAAA,CAAM,QAAA,EACP,CAACnC,CAAAA,CAAqB,OAAA,EACtB,CAACY,CAAAA,CAAI,iBAAA,EAAkB,CACvB,CACAZ,CAAAA,CAAqB,OAAA,CAAUY,CAAAA,CAAI,EAAA,CACnC,MACF,CAEAuB,CAAAA,CAAM,cAAA,EAAe,CACrBA,CAAAA,CAAM,eAAA,EAAgB,CACtB5B,CAAAA,CAAeK,CAAAA,CAAI,EAAA,CAAI,CAACA,CAAAA,CAAI,aAAA,EAAe,CAAA,CAC3CZ,CAAAA,CAAqB,OAAA,CAAUY,CAAAA,CAAI,GACrC,CAAA,CACA,eAAA,CAAkBsB,CAAAA,EAAuC,CACvDlC,CAAAA,CAAqB,OAAA,CAAUY,CAAAA,CAAI,EAAA,CACnCA,CAAAA,CAAI,cAAA,CAAesB,CAAAA,GAAY,IAAI,EACrC,CAAA,CACA,YAAA,CACE7G,CAAAA,CAAO,SAAA,EAAaoD,EAAAA,CAA0B,SAAA,CAElD,CAAA,CACF,CAEJ,CAAC,CAAA,CAGH4C,EAAK,IAAA,CAAK,GAAG3B,CAAAA,CAAQ,GAAA,CAAK0C,CAAAA,EAAWC,CAAAA,CAAyBD,CAAM,CAAC,CAAC,CAAA,CAAA,CAElE/I,CAAAA,CAAW,MAAA,EAAUd,CAAAA,EAAgBqH,CAAAA,GACvCyB,CAAAA,CAAK,IAAA,CAAK,CACR,EAAA,CAAI,aAAA,CACJ,aAAA,CAAe,KAAA,CACf,cAAA,CAAgB,KAAA,CAChB,YAAA,CAAc,KAAA,CACd,IAAA,CAAME,GAAAA,CACN,OAAA,CAASA,GAAAA,CACT,OAAA,CAASA,GAAAA,CACT,MAAA,CAAQ,IAAMlH,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,SAAA,CAAW,QAAA,CAAAgB,CAAAA,CAAO,OAAA,CAAQ,CAAA,CACxD,IAAA,CAAM,CAAC,CAAE,GAAA,CAAAuF,CAAI,CAAA,GAAM,CACjB,IAAM9B,CAAAA,CAAQ8B,CAAAA,CAAI,EAAA,CAGlB,OAFkBpI,CAAAA,GAAiBsG,CAAAA,CAI/BxE,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,4CAAA,CACZ,QAAA,CAAA,CAAAqF,CAAAA,CAAW,IAAA,CACVtF,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,UAAU,IAAA,CAAK,OAAA,CAC5B,QAAA,CAAAsF,CAAAA,CAAW,IAAA,CACd,CAAA,CACE,IAAA,CACJtF,GAAAA,CAAC8E,CAAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,IAAA,CAAK,IAAA,CACL,QAAA,CAAUW,CAAAA,EAAgB,CAACC,CAAAA,CAC3B,OAAA,CAAS,IAAM,CACRK,CAAAA,CAASQ,CAAAA,CAAI,QAAQ,EAC5B,CAAA,CAEC,QAAA,CAAAvF,CAAAA,CAAO,QAAA,CACV,CAAA,CACAf,IAAAA,CAACgF,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAjF,GAAAA,CAACmF,CAAAA,CAAA,CAAe,OAAA,CAAO,IAAA,CACrB,QAAA,CAAAlF,IAAAA,CAAC6E,CAAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,IAAA,CAAK,SAAA,CACL,OAAA,CAAQ,OAAA,CACR,OAAA,CAASM,GAAAA,CAET,QAAA,CAAA,CAAApF,GAAAA,CAACuH,CAAAA,CAAA,CAAgB,SAAA,CAAU,WAAA,CAAY,CAAA,CACvCvH,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,SAAA,CAAW,QAAA,CAAAgB,CAAAA,CAAO,WAAW,CAAA,CAAA,CAC/C,CAAA,CACF,CAAA,CACAhB,GAAAA,CAACkF,CAAAA,CAAA,CAAgB,QAAA,CAAAlE,CAAAA,CAAO,UAAA,CAAW,CAAA,CAAA,CACrC,CAAA,CAAA,CACF,CAAA,CAKFhB,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yCAAA,CACb,QAAA,CAAAA,GAAAA,CAACgF,CAAAA,CAAA,CACC,GAAA,CAAKuB,CAAAA,CAAI,QAAA,CACT,UAAA,CAAYvH,CAAAA,CACZ,YAAA,CAAcd,CAAAA,CACd,SAAA,CAAW,KAAA,CACX,cAAA,CAAgB,IAAM,CACpB8H,CAAAA,CAAgBO,CAAAA,CAAI,QAAA,CAAUA,CAAAA,CAAI,EAAE,EACtC,CAAA,CACA,eAAA,CAAiB,IAAM,CAAC,CAAA,CACxB,MAAA,CAAQvF,CAAAA,CACR,UAAA,CACEuE,CAAAA,CACI,CACE,MAAA,CAAQgB,CAAAA,CAAI,SAAA,EAAU,CACtB,QAAA,CAAUA,CAAAA,CAAI,WAAA,EAAY,CAC1B,GAAA,CAAM0B,CAAAA,EAAa1B,CAAAA,CAAI,GAAA,CAAI0B,CAAQ,CACrC,CAAA,CACA,MAAA,CAER,EACF,CAEJ,CACF,CAAC,CAAA,CAGIjB,CACT,CAAA,CAAG,CACDlC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACAC,GAAAA,CACAC,CAAAA,CACAnH,CAAAA,CACA0H,CAAAA,CACA/G,CAAAA,CACAyG,CAAAA,CACAnH,CAAAA,CACAE,CAAAA,CACAkH,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACA1E,CAAAA,CACA2E,CAAAA,CACAE,CAAAA,CACAC,GAAAA,CACA9G,CAAAA,CACA+G,CAAAA,CACAG,CAAAA,CACAF,CACF,CAAC,CACH,CCvaO,SAASkC,EAAAA,CAAwB,CACtC,YAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CACF,CAAA,CAIG,CACD,GAAM,CAACC,CAAAA,CAAmBC,CAAoB,CAAA,CAAUC,CAAA,CAAA,QAAA,CAASL,CAAY,CAAA,CACvEM,CAAAA,CAAeJ,CAAAA,EAASC,CAAAA,CACxBI,CAAAA,CAAwBF,CAAA,CAAA,MAAA,CAAOC,CAAY,EAE3CD,CAAA,CAAA,SAAA,CAAU,IAAM,CACpBE,CAAAA,CAAgB,OAAA,CAAUD,EAC5B,CAAA,CAAG,CAACA,CAAY,CAAC,CAAA,CAEjB,IAAME,CAAAA,CAAiBH,CAAA,CAAA,WAAA,CACpBI,CAAAA,EAAwB,CACvB,IAAMC,CAAAA,CACJ,OAAOD,CAAAA,EAAY,UAAA,CACdA,CAAAA,CAA8BF,CAAAA,CAAgB,OAAO,CAAA,CACtDE,CAAAA,CACNF,CAAAA,CAAgB,OAAA,CAAUG,CAAAA,CAE1BT,CAAAA,GAAWS,CAAS,CAAA,CAEhBR,IAAU,MAAA,EACZE,CAAAA,CAAqBM,CAAS,EAElC,CAAA,CACA,CAACT,CAAAA,CAAUC,CAAK,CAClB,CAAA,CAEA,OAAO,CAACI,CAAAA,CAAcE,CAAQ,CAChC,CCpCO,SAASG,EAAAA,CAA2B,CACzC,OAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,aAAA,CAAAC,CAAAA,CACA,UAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CACF,CAAA,CAMG,CACD,IAAMjK,CAAAA,CAAoBkK,CAAA,CAAA,MAAA,CAA8B,IAAI,CAAA,CACtDC,CAAAA,CAA6BD,CAAA,CAAA,MAAA,CAAO,KAAK,CAAA,CACzCE,CAAAA,CAAwBF,CAAA,CAAA,cAAA,CAAeF,CAAU,CAAA,CACjDK,CAAAA,CAAqBH,CAAA,CAAA,cAAA,CAAgBI,CAAAA,EAAmB,CAC5DL,CAAAA,GAAUK,CAAK,EACjB,CAAC,CAAA,CAED,OAAMJ,CAAA,CAAA,SAAA,CAAU,IAAM,CACpB,GAAI,CAACL,CAAAA,EAAW,CAACC,CAAAA,EAAWC,CAAAA,CAC1B,OAGF,IAAMQ,CAAAA,CAASvK,CAAAA,CAAY,OAAA,CAC3B,GAAI,CAACuK,CAAAA,CACH,OAGF,IAAMC,CAAAA,CAAW,IAAI,oBAAA,CAClBC,CAAAA,EAAY,CAEX,GADcA,CAAAA,CAAQ,CAAC,CAAA,CACb,cAAA,EAAkB,CAACN,CAAAA,CAAqB,OAAA,CAAS,CACzDA,CAAAA,CAAqB,OAAA,CAAU,IAAA,CAE/B,IAAIO,CAAAA,CACJ,GAAI,CACFA,CAAAA,CAASN,CAAAA,GACX,CAAA,MAASE,CAAAA,CAAO,CACdH,CAAAA,CAAqB,OAAA,CAAU,KAAA,CAC/BE,CAAAA,CAAaC,CAAK,CAAA,CAClB,MACF,CAEK,OAAA,CAAQ,OAAA,CAAQI,CAAM,CAAA,CACxB,KAAA,CAAOJ,CAAAA,EAAmB,CACzBD,CAAAA,CAAaC,CAAK,EACpB,CAAC,CAAA,CACA,OAAA,CAAQ,IAAM,CACbH,CAAAA,CAAqB,OAAA,CAAU,MACjC,CAAC,EACL,CACF,CAAA,CACA,CACE,UAAA,CAAY,qBACd,CACF,EAEA,OAAAK,CAAAA,CAAS,OAAA,CAAQD,CAAM,CAAA,CAEhB,IAAM,CACXC,CAAAA,CAAS,UAAA,GACX,CACF,CAAA,CAAG,CAACX,CAAAA,CAASC,CAAAA,CAASC,CAAa,CAAC,CAAA,CAE7B/J,CACT,CCnEO,SAAS2K,EAAAA,CAA4B,CAC1C,OAAA,CAAAd,CAAAA,CACA,YAAA,CAAAe,CAAAA,CACA,iBAAA,CAAAC,CAAAA,CACA,SAAA,CAAAxF,CAAAA,CACA,iBAAA,CAAAyF,CACF,CAAA,CAMG,CACKC,CAAA,CAAA,SAAA,CAAU,IAAM,CAKpB,GAJI,CAAClB,CAAAA,EAIDxE,CAAAA,EAAa,CAAA,EAAKA,CAAAA,EAAauF,CAAAA,CACjC,OAGF,IAAMI,CAAAA,CAAgB,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI3F,CAAAA,CAAW,CAAC,CAAA,CAAGuF,CAAY,CAAA,CACnEE,CAAAA,CAAkBE,CAAa,CAAA,CAC/BH,CAAAA,GAAoBG,CAAa,EACnC,CAAA,CAAG,CAACnB,CAAAA,CAASe,CAAAA,CAAcC,CAAAA,CAAmBxF,CAAAA,CAAWyF,CAAiB,CAAC,EAC7E,CClBO,SAASG,EAAAA,EACd,CAEA,OAAaC,CAAA,CAAA,OAAA,CAAyB,IAAM,CAC1C,IAAMC,CAAAA,CAAc,IAAI,OAAA,CAExB,OAAO,CAAC9D,CAAAA,CAAiBrC,GAAAA,CAAkBoG,CAAAA,GAAyB,CAClE,IAAMC,EAAQC,CAAAA,CAA6BF,CAAW,CAAA,CACtD,GAAI,CAACC,CAAAA,CACH,OAAO,KAAA,CAGT,IAAME,CAAAA,CAAWlE,CAAAA,CAAI,QAAA,CACrB,GAAI,OAAOkE,CAAAA,EAAa,QAAA,EAAYA,CAAAA,GAAa,IAAA,CAC/C,OAAOD,CAAAA,CAA6BjE,CAAAA,CAAI,QAAA,CAASrC,GAAQ,CAAC,CAAA,CAAE,QAAA,CAC1DqG,CACF,CAAA,CAGF,IAAIG,CAAAA,CAAiBL,CAAAA,CAAY,GAAA,CAAII,CAAQ,CAAA,CACxCC,CAAAA,GACHA,CAAAA,CAAiB,IAAI,GAAA,CACrBL,CAAAA,CAAY,GAAA,CAAII,CAAAA,CAAUC,CAAc,CAAA,CAAA,CAG1C,IAAIC,CAAAA,CAAOD,CAAAA,CAAe,GAAA,CAAIxG,GAAQ,CAAA,CACtC,GAAIyG,CAAAA,GAAS,MAAA,CAAW,CACtB,IAAMtC,CAAAA,CAAQ9B,CAAAA,CAAI,QAAA,CAASrC,GAAQ,CAAA,CACnCyG,CAAAA,CAAOH,CAAAA,CAA6BnC,CAAK,CAAA,CACzCqC,CAAAA,CAAe,GAAA,CAAIxG,GAAAA,CAAUyG,CAAI,EACnC,CAEA,OAAOA,CAAAA,CAAK,QAAA,CAASJ,CAAK,CAC5B,CACF,CAAA,CAAG,EAAE,CACP,CCDO,SAASK,EAAAA,CAA4B,CAC1C,kBAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,GAAA,CAAAC,GAAAA,CACA,oBAAA,CAAAC,GAAAA,CACA,kBAAA,CAAAC,CAAAA,CACA,oBAAA,CAAAC,GAAAA,CACA,kBAAAC,CAAAA,CACA,mBAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CAAAA,CACA,iBAAA,CAAA7K,CAAAA,CACA,mBAAA,CAAA7C,GAAAA,CACA,cAAA,CAAA2N,CAAAA,CACA,eAAA,CAAAC,CAAAA,CACA,aAAA,CAAAC,CAAAA,CACA,yBAAA,CAAAC,CAAAA,CACA,oBAAA,CAAAC,CAAAA,CACA,uBAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAtG,CAAAA,CACA,kBAAA,CAAAlH,CAAAA,CACA,qBAAA,CAAAyN,CAAAA,CACA,eAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CAAAA,CACA,UAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,iBAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,iBAAA,CAAAC,CAAAA,CACA,WAAA,CAAAC,CAAAA,CACA,yBAAA,CAAAC,GAAAA,CACA,uBAAA,CAAAC,CAAAA,CACA,yBAAA,CAAAC,CAAAA,CACA,sBAAA,CAAAC,CAAAA,CACA,4BAAA,CAAAC,CAAAA,CACA,oBAAA,CAAAC,CAAAA,CACA,oBAAA,CAAAC,CAAAA,CACA,cAAA,CAAApO,GAAAA,CACA,cAAA,CAAAqO,CAAAA,CACA,eAAA,CAAAC,EACA,cAAA,CAAAC,EAAAA,CACA,eAAA,CAAAC,EAAAA,CACA,gBAAA,CAAAC,EAAAA,CACA,aAAA,CAAAC,EAAAA,CACA,aAAA,CAAAC,EAAAA,CACA,iBAAA,CAAArD,EAAAA,CACA,gBAAA,CAAAsD,EAAAA,CACA,SAAA,CAAA7I,EAAAA,CACA,SAAA,CAAAD,CAAAA,CACA,QAAA,CAAA+I,EAAAA,CACA,oBAAA,CAAAC,CAAAA,CACA,kBAAA,CAAAC,EAAAA,CACA,qBAAA,CAAAC,EAAAA,CACA,sBAAA,CAAArO,EAAAA,CACA,iBAAA,CAAAsO,EAAAA,CACA,oBAAA,CAAAC,EAAAA,CACA,kBAAA,CAAAC,EAAAA,CACA,0BAAA,CAAAtO,EAAAA,CACA,YAAA,CAAAuO,EAAAA,CACA,SAAA,CAAAC,EAAAA,CACA,aAAA,CAAAC,EAAAA,CACA,QAAA,CAAA9H,EAAAA,CACA,aAAA,CAAA+H,EAAAA,CACA,cAAA,CAAAC,EACF,CAAA,CA4EG,CACD,IAAMC,EAAAA,CAAuB/D,EAAAA,EAA+B,CACtDgE,EAAAA,CAA2BC,CAAA,CAAA,OAAA,CAAQ,IAChCC,CAAAA,CACLR,EACF,CAAA,CAAE,GAAA,CAAI,CAAC,CAAE,MAAA,CAAA9F,EAAQ,KAAA,CAAAuG,CAAM,CAAA,GAAMC,CAAAA,CAAYxG,CAAAA,CAAQuG,CAAK,CAAC,CAAA,CACtD,CAACT,EAAY,CAAC,CAAA,CAEXW,EAAAA,CAA6BJ,CAAA,CAAA,OAAA,CAA0B,IAAM,CACjE,IAAMK,CAAAA,CAAYN,EAAAA,CACZO,CAAAA,CAAgBD,CAAAA,CAAU,MAAA,CAC7BvK,CAAAA,EACC,CAACyK,CAAAA,CAAkBzK,CAAQ,CAAA,EAAKA,CAAAA,GAAa,YACjD,CAAA,CACM0K,CAAAA,CAAkB,IAAI,IAAIF,CAAa,CAAA,CACvCG,EAAAA,CAAuB3D,CAAAA,CAAmB,MAAA,CAAQhH,CAAAA,EACtD0K,CAAAA,CAAgB,GAAA,CAAI1K,CAAQ,CAC9B,CAAA,CACM4K,EAAAA,CAAyBJ,CAAAA,CAAc,MAAA,CAC1CxK,CAAAA,EAAa,CAAC2K,EAAAA,CAAqB,QAAA,CAAS3K,CAAQ,CACvD,CAAA,CAEA,OAAO,CACL,GAAGuK,CAAAA,CAAU,MAAA,CACVvK,CAAAA,EAAaA,CAAAA,GAAa,YAAA,EAAgBA,CAAAA,GAAa,YAC1D,CAAA,CACA,GAAG2K,EAAAA,CACH,GAAGC,EAAAA,CACH,GAAGL,CAAAA,CAAU,MAAA,CAAQvK,CAAAA,EAAaA,CAAAA,GAAa,YAAY,CAAA,CAC3D,GAAGuK,CAAAA,CAAU,MAAA,CAAQvK,CAAAA,EAAaA,CAAAA,GAAa,aAAa,CAC9D,CACF,CAAA,CAAG,CAACgH,CAAAA,CAAoBiD,EAAkB,CAAC,CAAA,CAErCY,EAAAA,CAA+BX,CAAA,CAAA,OAAA,CAA4B,IAAM,CACrE,IAAMY,CAAAA,CAAc,IAAI,GAAA,CAAIb,EAAkB,CAAA,CACxCS,CAAAA,CAAkB,IAAI,GAAA,CAC1BT,EAAAA,CAAmB,MAAA,CAChBjK,EAAAA,EACC,CAACyK,CAAAA,CAAkBzK,EAAQ,CAAA,EAAKA,EAAAA,GAAa,YACjD,CACF,CAAA,CACM+K,CAAAA,CAAAA,CAAY9D,GAAAA,CAAqB,IAAA,EAAQ,EAAC,EAAG,MAAA,CAAQjH,EAAAA,EACzD0K,CAAAA,CAAgB,GAAA,CAAI1K,EAAQ,CAC9B,CAAA,CACMgL,EAAAA,CAAAA,CAAa/D,GAAAA,CAAqB,KAAA,EAAS,IAAI,MAAA,CAAQjH,EAAAA,EAC3D0K,CAAAA,CAAgB,GAAA,CAAI1K,EAAQ,CAC9B,CAAA,CAEA,OAAO,CACL,IAAA,CAAM,CACJ,GAAG,CAAC,YAAA,CAAc,YAAY,CAAA,CAAE,MAAA,CAAQA,EAAAA,EACtC8K,CAAAA,CAAY,GAAA,CAAI9K,EAAQ,CAC1B,CAAA,CACA,GAAG+K,CACL,CAAA,CACA,KAAA,CAAO,CACL,GAAGC,EAAAA,CACH,GAAG,CAAC,aAAa,CAAA,CAAE,MAAA,CAAQhL,EAAAA,EAAa8K,CAAAA,CAAY,GAAA,CAAI9K,EAAQ,CAAC,CACnE,CACF,CACF,CAAA,CAAG,CAACiH,GAAAA,CAAsBgD,EAAkB,CAAC,CAAA,CAEvCgB,EAAAA,CAA4Bf,CAAA,CAAA,OAAA,CAAyB,IAAM,CAC/D,IAAMgB,CAAAA,CAAkB,IAAI,GAAA,CACtBC,CAAAA,CAAavP,CAAAA,EAAuB,CACxCA,CAAAA,CAAK,OAAA,CAAQ,CAACyG,EAAAA,CAAK+H,KAAU,CAE3B,GADAc,CAAAA,CAAgB,GAAA,CAAIrB,EAAAA,CAAcxH,EAAAA,CAAK+H,EAAK,CAAC,CAAA,CACzC,CAAC9H,CAAAA,CAAsBD,EAAG,CAAA,CAAG,CAC/B,IAAM+I,EAAAA,CAAUrD,CAAAA,GAAa1F,EAAAA,CAAK+H,EAAK,CAAA,CACnCgB,EAAAA,EAAS,MAAA,EACXD,CAAAA,CAAUC,EAAO,EAErB,CACF,CAAC,EACH,CAAA,CACAD,CAAAA,CAAUvB,EAAS,CAAA,CACnB,IAAMyB,CAAAA,CAAAA,CAAOnE,CAAAA,CAAkB,GAAA,EAAO,EAAC,EAAG,MAAA,CAAQ3G,CAAAA,EAChD2K,CAAAA,CAAgB,GAAA,CAAI3K,CAAK,CAC3B,CAAA,CACM+K,EAAAA,CAAS,IAAI,GAAA,CAAID,CAAG,CAAA,CACpBE,EAAAA,CAAAA,CAAUrE,CAAAA,CAAkB,MAAA,EAAU,EAAC,EAAG,MAAA,CAC7C3G,CAAAA,EAAU2K,CAAAA,CAAgB,GAAA,CAAI3K,CAAK,CAAA,EAAK,CAAC+K,EAAAA,CAAO,GAAA,CAAI/K,CAAK,CAC5D,CAAA,CACA,OAAO,CAAE,GAAA,CAAA8K,CAAAA,CAAK,MAAA,CAAAE,EAAO,CACvB,CAAA,CAAG,CACDrE,CAAAA,CAAkB,MAAA,CAClBA,CAAAA,CAAkB,GAAA,CAClBa,CAAAA,CACA6B,EAAAA,CACAC,EACF,CAAC,CAAA,CAEK2B,EAAAA,CAAmBtB,CAAA,CAAA,OAAA,CACvB,KAAO,CACL,OAAA,CAAS5C,CAAAA,CACT,UAAA,CAAY9K,CAAAA,CACZ,YAAA,CAAc7C,GAAAA,CACd,gBAAA,CAAkB8N,CAAAA,CAClB,cAAeV,GAAAA,CACf,YAAA,CAAcoB,CAAAA,CACd,QAAA,CAAUf,CAAAA,CACV,QAAA,CAAUC,CAAAA,CACV,WAAA,CAAaiD,EAAAA,CACb,aAAA,CAAeO,EAAAA,CACf,UAAA,CAAYI,EAAAA,CACZ,YAAA,CAAc9D,CAChB,CAAA,CAAA,CACA,CACEJ,GAAAA,CACAI,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACA7K,CAAAA,CACA7C,GAAAA,CACA2N,CAAAA,CACAG,CAAAA,CACA6C,EAAAA,CACAO,EAAAA,CACAI,EAAAA,CACA9C,CACF,CACF,CAAA,CAEMsD,EAAAA,CAA+BvB,cAGlCxF,CAAAA,EAAY,CACX,IAAMC,CAAAA,CACJ,OAAOD,CAAAA,EAAY,UAAA,CAAaA,CAAAA,CAAQlI,CAAiB,CAAA,CAAIkI,CAAAA,CAAAA,CAE3DrE,CAAAA,GAAc,MAAA,EAAa+I,EAAAA,GAAa,MAAA,GAC1CM,EAAAA,CAAoB/G,CAAAA,GAAa,CAC/B,SAAA,CACEtC,CAAAA,GAAc,MAAA,CAAYsE,CAAAA,CAAU,SAAA,CAAYhC,CAAAA,CAAQ,SAAA,CAC1D,QAAA,CACEyG,EAAAA,GAAa,MAAA,CAAYzE,CAAAA,CAAU,QAAA,CAAWhC,CAAAA,CAAQ,QAC1D,CAAA,CAAE,CAAA,CAGAgC,CAAAA,CAAU,SAAA,GAAcnI,CAAAA,CAAkB,SAAA,EAC5CqJ,EAAAA,GAAoBlB,CAAAA,CAAU,SAAS,CAAA,CAErCA,CAAAA,CAAU,QAAA,GAAanI,CAAAA,CAAkB,QAAA,EAC3C2M,EAAAA,GAAmBxE,CAAAA,CAAU,QAAQ,EAEzC,CAAA,CACA,CACEnI,CAAAA,CACAqJ,EAAAA,CACAsD,EAAAA,CACA9I,CAAAA,CACA+I,EAAAA,CACAM,EACF,CACF,CAAA,CAEMgC,EAAAA,CAAiCxB,CAAA,CAAA,WAAA,CAGpCxF,CAAAA,EAAY,CACX+E,GAAqB/E,CAAO,EAC9B,CAAA,CACA,CAAC+E,EAAoB,CACvB,CAAA,CAEMkC,EAAAA,CAAsBzB,CAAA,CAAA,OAAA,CAC1B,IAAM,CACJ,IAAI0B,CAAAA,CAAe,KAAA,CACfC,CAAAA,CAAe,KAAA,CACnB,IAAA,GAAW,CAAE,MAAA,CAAAhI,CAAO,CAAA,GAAKsG,CAAAA,CACvBR,EACF,CAAA,CACEiC,CAAAA,GAAiB/H,CAAAA,CAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,GAAS,SAAA,CAC/CgI,CAAAA,GAAiBhI,CAAAA,CAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,GAAS,aAAA,CAEjD,OAAO,CAAE,YAAA,CAAAgI,CAAAA,CAAc,YAAA,CAAAD,CAAa,CACtC,CAAA,CACA,CAACjC,EAAY,CACf,CAAA,CAGMnK,EAAAA,CAAQsM,aAAAA,CAAc,CAC1B,IAAA,CAAMlC,EAAAA,CACN,OAAA,CAASD,EAAAA,CACT,eAAA,CAAiBoC,eAAAA,EAAgB,CACjC,mBAAA,CAAqBlD,CAAAA,CAAkB,MAAA,CAAYmD,mBAAAA,EAAoB,CACvE,kBAAA,CAAA,CACGL,GAAc,YAAA,EAAgBA,EAAAA,CAAc,YAAA,GAC7C,CAAC9C,CAAAA,CACGoD,kBAAAA,EAAmB,CACnB,MAAA,CACN,sBAAA,CACEN,EAAAA,CAAc,YAAA,EAAgB,CAAC9C,CAAAA,CAC3BqD,sBAAAA,EAAuB,CACvB,MAAA,CACN,sBAAA,CACEP,EAAAA,CAAc,YAAA,EAAgB,CAAC9C,CAAAA,CAC3BsD,sBAAAA,EAAuB,CACvB,MAAA,CACN,kBAAA,CACE9E,CAAAA,CAAgB,MAAA,EAAU,CAACyB,EAAAA,CAAiBsD,kBAAAA,EAAmB,CAAI,MAAA,CACrE,iBAAA,CAAmBnD,EAAAA,CAAgB,MAAA,CAAYoD,iBAAAA,EAAkB,CACjE,mBAAA,CAAA,CACGtE,CAAAA,EAAcV,CAAAA,CAAgB,MAAA,GAAW,CAAC0B,EAAAA,CACvCuD,mBAAAA,EAAoB,CACpB,MAAA,CACN,qBAAA,CACEtD,EAAAA,EAAoBzO,GAAAA,EAAgB,OAAA,CAChC,MAAA,CACAgS,qBAAAA,EAAsB,CAC5B,kBAAA,CAAoB1E,CAAAA,CACfxF,CAAAA,EAAQlI,CAAAA,EAAsB0N,CAAAA,CAAgBxF,CAAAA,CAAI,QAAQ,CAAA,CAC3DlI,CAAAA,CACJ,gBAAA,CACE,OAAOkH,GAAqB,UAAA,CACvBgB,CAAAA,EAAQhB,CAAAA,CAAiBgB,CAAAA,CAAI,QAAQ,CAAA,CACtChB,CAAAA,CACN,cAAA,CAAAuH,CAAAA,CACA,uBAAA,CACE,OAAOjB,CAAAA,EAA4B,UAAA,CAC9BtF,CAAAA,EAAQsF,CAAAA,CAAwBtF,CAAAA,CAAI,QAAQ,CAAA,CAC7CsF,CAAAA,CACN,qBAAA,CACE,OAAOC,CAAAA,EAA0B,UAAA,CAC5BvF,CAAAA,EAAQuF,CAAAA,CAAsBvF,CAAAA,CAAI,QAAQ,CAAA,CAC3CuF,CAAAA,CACN,oBAAA,CAAAF,CAAAA,CACA,gBAAA,CAAAb,EACA,qBAAA,CAAuBC,GAAAA,CACvB,QAAA,CAAU+C,EAAAA,CACV,UAAA,CAAA9B,CAAAA,CACA,eAAA,CAAiBA,CAAAA,CACZ1F,CAAAA,EAAQyF,CAAAA,GAAkBzF,CAAAA,CAAI,QAAQ,CAAA,EAAKA,CAAAA,CAAI,OAAA,CAAQ,MAAA,CAAS,CAAA,CACjE,MAAA,CACJ,cAAA,CAAgB6F,CAAAA,EAAkB8B,EAAAA,CAClC,wBAAA,CAA2BnG,CAAAA,EACzBA,CAAAA,CAAO,SAAA,CAAU,kBAAA,GAAuB,KAAA,EACxC,OAAOA,CAAAA,CAAO,UAAA,EAAe,UAAA,CAC/B,aAAA,CAAAoF,GACA,cAAA,CAAAH,EAAAA,CACA,eAAA,CAAAD,CAAAA,CACA,eAAA,CAAAE,EAAAA,CACA,gBAAA,CAAkBC,EAAAA,EAAoB,CAAA,CAAQzO,GAAAA,EAAgB,OAAA,CAC9D,oBAAA,CAAA8O,CAAAA,CACA,kBAAA,CAAAC,EAAAA,CACA,qBAAA,CAAAC,EAAAA,CACA,aAAA,CAAA/B,CAAAA,CACA,kBAAA,CAAAb,CAAAA,CACA,KAAA,CAAO6E,EAAAA,CACP,eAAA,CAAiBhC,EAAAA,CACjB,kBAAA,CAAoBiC,EAAAA,CACpB,oBAAA,CAAsBvQ,EAAAA,CACtB,wBAAA,CAA0BuN,CAAAA,CAC1B,qBAAA,CAAuBJ,GAAAA,CACvB,gBAAA,CAAkBK,CAAAA,CAClB,gBAAA,CAAkBC,CAAAA,CAClB,mBAAA,CAAqBL,CAAAA,CACrB,qBAAA,CAAuBC,CAAAA,CACvB,kBAAA,CAAoBC,CAAAA,CACpB,oBAAA,CAAsBkD,EAAAA,CACtB,cAAA,CAAA1D,CAAAA,CACA,iBAAA,CAAAC,CACF,CAAC,CAAA,CACDlG,EAAAA,CAAS,OAAA,CAAUvC,EAAAA,CAEnB,IAAMgN,EAAAA,CAAqBhN,EAAAA,CAAM,qBAAA,EAAsB,CACjDb,EAAAA,CAAsBuL,CAAA,CAAA,WAAA,CAC1B,CAACuC,CAAAA,CAAwBC,CAAAA,GAA2B,CAKlD,GAJID,CAAAA,GAAmBC,CAAAA,EAKrB,CAACC,CAAAA,CACCF,CAAAA,CACAC,CAAAA,CACA9F,CACF,CAAA,CAEA,OAGF,IAAMgG,CAAAA,CAAepN,EAAAA,CAClB,iBAAA,EAAkB,CAClB,GAAA,CAAKqE,EAAAA,EAAWA,EAAAA,CAAO,EAAE,CAAA,CACzB,MAAA,CAAQ7D,EAAAA,EAAa,CAACyK,CAAAA,CAAkBzK,EAAQ,CAAC,CAAA,CAC9C6M,EAAAA,CAAYC,CAAAA,CAChB9F,CAAAA,CAAmB,MAAA,CAASA,CAAAA,CAAqB4F,CAAAA,CACjDH,CAAAA,CACAC,CACF,CAAA,CACApE,CAAAA,CAAwBuE,EAAS,EACnC,CAAA,CACA,CAACjG,CAAAA,CAAkBI,CAAAA,CAAoBsB,CAAAA,CAAyB9I,EAAK,CACvE,CAAA,CAEMuN,EAAAA,CAAgBvN,EAAAA,CAAM,UAAA,EAAW,CACjCwN,EAAAA,CAAmBxN,EAAAA,CAAM,aAAA,EAAc,CAGvC9E,EAAAA,CACJ6M,CAAAA,GAAoB,OAAA,CAChB/H,EAAAA,CAAM,aAAA,EAAc,CACpBA,EAAAA,CAAM,WAAA,EAAY,CAAE,KACpByN,EAAAA,CACJ,OAAOlD,EAAAA,EAAmB,QAAA,CAAWA,EAAAA,CAAiB,MAAA,CAClDmD,EAAAA,CACJnD,EAAAA,GAAmB,IAAA,EAAQkD,EAAAA,EAAsB,OAAA,GAAY,IAAA,CACzDE,EAAAA,CAAmB,IAAA,CAAK,GAAA,CAC5B,CAAA,CACA,IAAA,CAAK,KAAA,CAAMF,EAAAA,EAAsB,gBAAA,EAAoB,EAAE,CACzD,CAAA,CAIMG,EAAAA,CAAAA,CAHsBF,EAAAA,CACxBxS,EAAAA,CAAa,KAAA,CAAM,CAAA,CAAGyS,EAAgB,CAAA,CACtCzS,EAAAA,EACqC,GAAA,CAAI,CAAC2H,CAAAA,CAAKgL,CAAAA,IAAc,CAC/D,GAAA,CAAAhL,CAAAA,CACA,QAAA,CAAAgL,CACF,CAAA,CAAE,CAAA,CAEIC,EAAAA,CAAiBtE,EAAAA,EAAoB,CAAA,CAAQzO,GAAAA,EAAgB,OAAA,CAC7DgT,EAAAA,CAAuBD,EAAAA,CACzB,MAAA,CACA9N,EAAAA,CAAM,mBAAA,EAAoB,CAAE,IAAA,CAAK,MAAA,CAC/BgO,EAAAA,CAAyB1D,EAAAA,EAAiByD,EAAAA,CAC1CE,EAAAA,CACJ,CAACH,EAAAA,EAAkBhN,EAAAA,GAAc,MAAA,EAAawJ,EAAAA,GAAkB,OAC5DnN,EAAAA,CAAsB6Q,EAAAA,CACtB9Q,EAAAA,CAAqBtB,EAAAA,CACvB,CAAA,CACCkF,EAAAA,GACAkN,EAAAA,GAA2B,MAAA,CACxB,IAAA,CAAK,GAAA,CACH,CAAA,CACA,IAAA,CAAK,IAAA,CAAKA,EAAAA,CAAyBhR,CAAAA,CAAkB,QAAQ,CAC/D,CAAA,CACA8Q,EAAAA,CACE9Q,CAAAA,CAAkB,SAAA,EAAa4L,CAAAA,CAAc,CAAA,CAAI,CAAA,CAAA,CACjD5I,EAAAA,CAAM,YAAA,EAAa,CAAA,CACvBoG,EAAAA,CAAe,IAAA,CAAK,GAAA,CAAI,CAAA,CAAGlJ,EAAAA,CAAqB,CAAC,CAAA,CAEjDoJ,EAAAA,CAA0BoE,CAAA,CAAA,WAAA,CAC7BlE,CAAAA,EAA0B,CACrB3F,CAAAA,GAAc,MAAA,EAIlBqJ,EAAAA,CAAoB/G,CAAAA,EAClBA,CAAAA,CAAQ,SAAA,GAAcqD,CAAAA,CAClBrD,CAAAA,CACA,CAAE,GAAGA,CAAAA,CAAS,SAAA,CAAWqD,CAAc,CAC7C,EACF,CAAA,CACA,CAAC3F,CAAAA,CAAWqJ,EAAkB,CAChC,CAAA,CACA/D,EAAAA,CAA4B,CAC1B,OAAA,CACE,CAACvK,EAAAA,EACD,CAACb,KAAgB,OAAA,EACjBkT,EAAAA,CACF,YAAA,CAAA7H,EAAAA,CACA,iBAAA,CAAAC,EAAAA,CACA,SAAA,CAAWrJ,CAAAA,CAAkB,SAAA,CAC7B,iBAAA,CAAAsJ,EACF,CAAC,CAAA,CAED,IAAMlJ,EAAAA,CAAoCsN,CAAA,CAAA,WAAA,CACvClE,CAAAA,EAA0B,CACrBA,CAAAA,GAAkBxJ,CAAAA,CAAkB,SAAA,GAIxCqJ,EAAAA,GAAoBG,CAAa,CAAA,CAC7B3F,CAAAA,GAAc,MAAA,EAChBqJ,EAAAA,CAAoB/G,CAAAA,EAClBA,CAAAA,CAAQ,SAAA,GAAcqD,CAAAA,CAClBrD,CAAAA,CACA,CAAE,GAAGA,CAAAA,CAAS,SAAA,CAAWqD,CAAc,CAC7C,CAAA,EAEJ,CAAA,CACA,CACExJ,CAAAA,CAAkB,SAAA,CAClBqJ,EAAAA,CACAxF,CAAAA,CACAqJ,EACF,CACF,CAAA,CACM7M,EAAAA,CAAmCqN,CAAA,CAAA,WAAA,CACtCwD,CAAAA,EAAyB,CACpBlR,CAAAA,CAAkB,SAAA,GAAc,CAAA,EAClCqJ,EAAAA,GAAoB,CAAC,CAAA,CAEnB6H,CAAAA,GAAiBlR,CAAAA,CAAkB,QAAA,EACrC2M,EAAAA,GAAmBuE,CAAY,CAAA,CAE7BtE,KAAa,MAAA,EACfM,EAAAA,CAAmB,CACjB,SAAA,CAAW,CAAA,CACX,QAAA,CAAUgE,CACZ,CAAC,EAEL,CAAA,CACA,CACElR,CAAAA,CAAkB,SAAA,CAClBA,CAAAA,CAAkB,QAAA,CAClBqJ,EAAAA,CACAsD,EAAAA,CACAC,EAAAA,CACAM,EACF,CACF,CAAA,CAEM1O,EAAAA,CAAc4J,EAAAA,CAA2B,CAC7C,OAAA,CAAS,CAAA,CAAQrK,GAAAA,EAAgB,OAAA,CACjC,OAAA,CAAS,CAAA,CAAQA,GAAAA,EAAgB,OAAA,CACjC,aAAA,CAAeA,GAAAA,EAAgB,aAAA,CAC/B,UAAA,CAAY,IAAMA,GAAAA,EAAgB,UAAA,EAAW,CAC7C,OAAA,CAAU+K,CAAAA,EAAU,CAClB4D,EAAAA,GAAgB,CACd,KAAA,CAAA5D,CAAAA,CACA,MAAA,CAAQ,gBACV,CAAC,EACH,CACF,CAAC,CAAA,CAED,OAAO,CACL,kBAAA,CAAA5I,EAAAA,CACA,mBAAA,CAAAC,EAAAA,CACA,2BAAA,CAAAC,EAAAA,CACA,0BAAA,CAAAC,EAAAA,CACA,iBAAA4Q,EAAAA,CACA,YAAA,CAAA/S,EAAAA,CACA,aAAA,CAAAqS,EAAAA,CACA,gBAAA,CAAAC,EAAAA,CACA,aAAA,CAAArO,EAAAA,CACA,YAAA,CAAAyO,EAAAA,CACA,WAAA,CAAApS,EAAAA,CACA,KAAA,CAAAwE,EAAAA,CACA,oBAAA,CAAsB,CAAA,CACtB,iBAAA,CAAmB,CAAA,CACnB,kBAAA,CAAAgN,EACF,CACF,CCzmBA,IAAMmB,EAAAA,CAAiB,8BAAA,CACjBC,EAAAA,CAAkB,CAAA,CAClBC,EAAAA,CAA+C,CACnD,YAAA,CACA,QAAA,CACA,OAAA,CACA,SAAA,CACA,YAAA,CACA,SACF,CAAA,CAEO,SAASC,EAAAA,CACdC,CAAAA,CACsB,CACtB,IAAM1R,CAAAA,CAAS2R,EAAAA,CAAyBD,CAAK,CAAA,CAC7C,GAAI,CAAC1R,CAAAA,CACH,OAAO,EAAC,CAGV,IAAM4R,CAAAA,CAAUC,EAAAA,CAAe7R,CAAM,CAAA,CACrC,GAAI,CAAC4R,CAAAA,CACH,OAAO,EAAC,CAEV,IAAME,CAAAA,CAAaC,EAAAA,CAAc/R,CAAAA,CAAO,GAAG,CAAA,CAEvC8H,CAAAA,CACJ,GAAI,CACFA,CAAAA,CAAQ8J,CAAAA,CAAQ,OAAA,CAAQE,CAAU,EACpC,CAAA,MAAS7I,CAAAA,CAAO,CACd,OAAAjJ,CAAAA,CAAO,OAAA,GAAU,CAAE,KAAA,CAAAiJ,CAAAA,CAAO,SAAA,CAAW,MAAO,CAAC,CAAA,CACtC,EACT,CACA,GAAI,CAACnB,CAAAA,CACH,OAAO,EAAC,CAGV,IAAIkK,CAAAA,CACJ,GAAI,CACFA,CAAAA,CAAAA,CAAUhS,CAAAA,CAAO,WAAA,EAAe,IAAA,CAAK,KAAA,EAAO8H,CAAK,EACnD,CAAA,MAASmB,CAAAA,CAAO,CACd,OAAAjJ,CAAAA,CAAO,OAAA,GAAU,CAAE,KAAA,CAAAiJ,CAAAA,CAAO,SAAA,CAAW,aAAc,CAAC,CAAA,CAC7C,EACT,CAEA,IAAMgJ,CAAAA,CAAgBjS,CAAAA,CAAO,OAAA,EAAWuR,EAAAA,CACpCW,CAAAA,CACJ,GAAIC,EAAAA,CAAqBH,CAAM,CAAA,CAC7B,GAAIA,CAAAA,CAAO,OAAA,GAAYC,CAAAA,CACrBC,CAAAA,CAAYF,CAAAA,CAAO,KAAA,CAAA,KAAA,GACVhS,CAAAA,CAAO,OAAA,CAChB,GAAI,CACFkS,CAAAA,CAAYlS,CAAAA,CAAO,OAAA,CACjB,CACE,OAAA,CAASgS,CAAAA,CAAO,OAAA,CAChB,KAAA,CAAOA,CAAAA,CAAO,KAChB,CAAA,CACAC,CACF,EACF,CAAA,MAAShJ,CAAAA,CAAO,CACd,OAAAjJ,CAAAA,CAAO,OAAA,GAAU,CAAE,KAAA,CAAAiJ,CAAAA,CAAO,SAAA,CAAW,SAAU,CAAC,CAAA,CACzC,EACT,CAAA,KAEA,OAAO,EAAC,CAAA,KAKViJ,CAAAA,CAAYF,CAAAA,CAGd,OAAOI,EAAAA,CACLC,EAAAA,CAA6BH,CAAS,CAAA,CACtClS,CAAAA,CAAO,MACT,CACF,CAEO,SAASsS,EAAAA,CACdZ,CAAAA,CACA,CACA,IAAM1R,CAAAA,CAAS2R,EAAAA,CAAyBD,CAAK,CAAA,CAC7C,GAAI,CAAC1R,CAAAA,CACH,OAAO,MAAA,CAGT,IAAM4R,CAAAA,CAAUC,EAAAA,CAAe7R,CAAM,CAAA,CACrC,GAAI,CAAC4R,CAAAA,CACH,OAAO,MAAA,CAGT,GAAI,CACF,OAAAA,CAAAA,CAAQ,UAAA,CAAWG,EAAAA,CAAc/R,CAAAA,CAAO,GAAG,CAAC,CAAA,CACrC,CAAA,CACT,CAAA,MAASiJ,CAAAA,CAAO,CACd,OAAAjJ,CAAAA,CAAO,OAAA,GAAU,CAAE,KAAA,CAAAiJ,CAAAA,CAAO,SAAA,CAAW,QAAS,CAAC,CAAA,CACxC,KACT,CACF,CAEO,SAASsJ,EAAAA,CAA+B,CAC7C,GAAA,CAAAC,CAAAA,CACA,WAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CACF,CAAA,CAIG,CACD,IAAM1S,CAAAA,CAASyS,GAAed,EAAAA,CAAyBa,CAAG,CAAA,CACpDZ,CAAAA,CAAU5R,CAAAA,CAAS6R,EAAAA,CAAe7R,CAAM,CAAA,CAAI,MAAA,CAC5C8R,CAAAA,CAAa9R,CAAAA,CAAS+R,EAAAA,CAAc/R,CAAAA,CAAO,GAAG,CAAA,CAAI,MAAA,CAClD2S,CAAAA,CAAU3S,CAAAA,EAAQ,OAAA,EAAWuR,EAAAA,CAC7BqB,CAAAA,CAAa,IAAA,CAAK,GAAA,CAAI,CAAA,CAAG5S,CAAAA,EAAQ,UAAA,EAAc,GAAG,CAAA,CAClD6S,CAAAA,CAAgBT,EAAAA,CAAwBM,CAAAA,CAAO1S,CAAAA,EAAQ,MAAM,CAAA,CAC7D8S,CAAAA,CAAmBC,CAAA,CAAA,OAAA,CAAQ,IAAM,CACrC,GAAI,CAAC/S,CAAAA,CACH,OAAO,CAAE,KAAA,CAAO,MAAU,CAAA,CAG5B,GAAI,CACF,IAAMgT,CAAAA,CAAuC,CAC3C,OAAA,CAAAL,CAAAA,CACA,KAAA,CAAOE,CACT,CAAA,CACA,OAAO,CACL,KAAA,CAAA,CAAQ7S,CAAAA,CAAO,SAAA,EAAa,IAAA,CAAK,SAAA,EAAWgT,CAAO,CACrD,CACF,CAAA,MAAS/J,CAAAA,CAAO,CACd,OAAO,CAAE,KAAA,CAAAA,CAAAA,CAAO,KAAA,CAAO,MAAU,CACnC,CACF,CAAA,CAAG,CAACjJ,CAAAA,CAAQ6S,CAAAA,CAAeF,CAAO,CAAC,CAAA,CAC7B3J,CAAAA,CAAqB+J,CAAA,CAAA,cAAA,CACzB,CACE9J,CAAAA,CACAgK,CAAAA,GACG,CACHjT,CAAAA,EAAQ,OAAA,GAAU,CAAE,KAAA,CAAAiJ,CAAAA,CAAO,SAAA,CAAAgK,CAAU,CAAC,EACxC,CACF,CAAA,CAEMF,CAAA,CAAA,SAAA,CAAU,IAAM,CAChBD,CAAAA,CAAW,KAAA,GAAU,MAAA,EACvB9J,CAAAA,CAAa8J,CAAAA,CAAW,KAAA,CAAO,WAAW,EAE9C,CAAA,CAAG,CAACA,CAAAA,CAAW,KAAK,CAAC,CAAA,CAEfC,CAAA,CAAA,SAAA,CAAU,IAAM,CACpB,GAAI,CAACnB,CAAAA,EAAW,CAACE,CAAAA,EAAcgB,CAAAA,CAAW,KAAA,GAAU,MAAA,CAClD,OAGF,IAAMI,CAAAA,CAAQ,IAAM,CAClB,GAAI,CACF,GAAItB,CAAAA,CAAQ,OAAA,CAAQE,CAAU,CAAA,GAAMgB,CAAAA,CAAW,KAAA,CAC7C,OAEFlB,CAAAA,CAAQ,OAAA,CAAQE,CAAAA,CAAYgB,CAAAA,CAAW,KAAK,EAC9C,CAAA,MAAS7J,CAAAA,CAAO,CACdD,CAAAA,CAAaC,CAAAA,CAAO,OAAO,EAC7B,CACF,CAAA,CAEA,GAAI2J,CAAAA,GAAe,CAAA,CAAG,CACpBM,CAAAA,EAAM,CACN,MACF,CAEA,IAAMC,CAAAA,CAAU,UAAA,CAAW,UAAA,CAAWD,CAAAA,CAAON,CAAU,CAAA,CACvD,OAAO,IAAM,CACX,UAAA,CAAW,YAAA,CAAaO,CAAO,EACjC,CACF,CAAA,CAAG,CAACP,CAAAA,CAAYE,CAAAA,CAAW,KAAA,CAAOlB,CAAAA,CAASE,CAAU,CAAC,EACxD,CAEA,SAASH,EAAAA,CACPD,CAAAA,CACwC,CACxC,GAAKA,CAAAA,CAIL,OAAO,OAAOA,CAAAA,EAAU,QAAA,CAAW,CAAE,GAAA,CAAKA,CAAM,CAAA,CAAIA,CACtD,CAEA,SAASG,EAAAA,CACP7R,CAAAA,CACyC,CACzC,GAAIA,CAAAA,CAAO,OAAA,CACT,OAAOA,CAAAA,CAAO,OAAA,CAGhB,GAAI,EAAA,OAAO,MAAA,CAAW,GAAA,CAAA,CAItB,GAAI,CACF,OAAO,MAAA,CAAO,YAChB,CAAA,MAASiJ,CAAAA,CAAO,CACdjJ,CAAAA,CAAO,OAAA,GAAU,CAAE,KAAA,CAAAiJ,CAAAA,CAAO,SAAA,CAAW,MAAO,CAAC,CAAA,CAC7C,MACF,CACF,CAEA,SAAS8I,EAAAA,CAAcS,CAAAA,CAAa,CAClC,OAAO,CAAA,EAAGlB,EAAc,CAAA,EAAGkB,CAAG,CAAA,CAChC,CAEA,SAASL,EAAAA,CACPrK,CAAAA,CAC+C,CAC/C,OACEsL,EAAAA,CAAStL,CAAK,GACd,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAKA,CAAAA,CAAO,SAAS,CAAA,EACrD,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAKA,CAAAA,CAAO,OAAO,CAEvD,CAEA,SAASsK,EAAAA,CACPM,CAAAA,CACAW,CAAAA,CACA,CACA,IAAMvN,CAAAA,CAAW,IAAI,GAAA,CAAIuN,CAAAA,EAAU7B,EAAU,CAAA,CACvCnI,CAAAA,CAA+B,EAAC,CAEtC,IAAA,IAAWiK,CAAAA,IAAS9B,EAAAA,CACd1L,CAAAA,CAAS,GAAA,CAAIwN,CAAK,CAAA,EAAKZ,CAAAA,CAAMY,CAAK,CAAA,GAAM,MAAA,EAC1C,MAAA,CAAO,MAAA,CAAOjK,CAAAA,CAAQ,CAAE,CAACiK,CAAK,EAAGZ,CAAAA,CAAMY,CAAK,CAAE,CAAC,CAAA,CAInD,OAAOjK,CACT,CAEA,SAASgJ,EAAAA,CAA6BvK,CAAAA,CAAsC,CAC1E,GAAI,CAACsL,EAAAA,CAAStL,CAAK,EACjB,OAAO,EAAC,CAGV,IAAM4K,CAAAA,CAA8B,EAAC,CAC/Ba,CAAAA,CAAaC,EAAAA,CAAsB1L,CAAAA,CAAM,UAAU,CAAA,CACrDyL,CAAAA,GACFb,CAAAA,CAAM,UAAA,CAAaa,CAAAA,CAAAA,CAErB,IAAME,CAAAA,CAASC,EAAAA,CAAqB5L,CAAAA,CAAM,MAAM,CAAA,CAC5C2L,CAAAA,GACFf,CAAAA,CAAM,MAAA,CAASe,CAAAA,CAAAA,CAEjB,IAAME,CAAAA,CAAQC,EAAAA,CAAoB9L,CAAAA,CAAM,KAAK,CAAA,CAI7C,GAHI6L,CAAAA,GACFjB,CAAAA,CAAM,KAAA,CAAQiB,CAAAA,CAAAA,CAEZP,EAAAA,CAAStL,CAAAA,CAAM,OAAO,CAAA,CAAG,CAC3B,IAAM+L,CAAAA,CAAOD,EAAAA,CAAoB9L,CAAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAK,EAAC,CACnDgM,CAAAA,CAAQF,EAAAA,CAAoB9L,CAAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAK,EAAC,CAC3D4K,CAAAA,CAAM,OAAA,CAAU,CAAE,IAAA,CAAAmB,CAAAA,CAAM,KAAA,CAAAC,CAAM,EAChC,CACA,IAAMC,CAAAA,CAAaC,EAAAA,CAAmBlM,CAAAA,CAAM,UAAU,CAAA,CACtD,OAAIiM,CAAAA,GACFrB,CAAAA,CAAM,UAAA,CAAaqB,CAAAA,CAAAA,CAEjBE,EAAAA,CAAmBnM,CAAAA,CAAM,OAAO,CAAA,GAClC4K,CAAAA,CAAM,OAAA,CAAU5K,CAAAA,CAAM,OAAA,CAAA,CAGjB4K,CACT,CAEA,SAASc,EAAAA,CAAsB1L,CAAAA,CAAgB,CAC7C,GAAKsL,EAAAA,CAAStL,CAAK,CAAA,CAInB,OAAO,MAAA,CAAO,WAAA,CACZ,MAAA,CAAO,OAAA,CAAQA,CAAK,CAAA,CAAE,MAAA,CACnBoM,CAAAA,EAAsC,OAAOA,CAAAA,CAAM,CAAC,CAAA,EAAM,SAC7D,CACF,CACF,CAEA,SAASR,EAAAA,CAAqB5L,CAAAA,CAAgB,CAC5C,GAAKsL,EAAAA,CAAStL,CAAK,CAAA,CAInB,OAAO,MAAA,CAAO,WAAA,CACZ,MAAA,CAAO,OAAA,CAAQA,CAAK,CAAA,CAAE,MAAA,CACnBoM,GACC,OAAOA,CAAAA,CAAM,CAAC,CAAA,EAAM,QAAA,EACpB,MAAA,CAAO,QAAA,CAASA,CAAAA,CAAM,CAAC,CAAC,CAAA,EACxBA,CAAAA,CAAM,CAAC,CAAA,EAAK,CAChB,CACF,CACF,CAEA,SAASN,EAAAA,CAAoB9L,CAAAA,CAAgB,CAC3C,GAAK,KAAA,CAAM,OAAA,CAAQA,CAAK,CAAA,CAIxB,OAAOA,CAAAA,CAAM,MAAA,CAAQtB,CAAAA,EAAyB,OAAOA,GAAS,QAAQ,CACxE,CAEA,SAASwN,EAAAA,CAAmBlM,CAAAA,CAA6C,CACvE,GAAKsL,EAAAA,CAAStL,CAAK,CAAA,CAInB,OAAO,CACL,GAAA,CAAK8L,EAAAA,CAAoB9L,CAAAA,CAAM,GAAG,CAAA,EAAK,EAAC,CACxC,MAAA,CAAQ8L,EAAAA,CAAoB9L,CAAAA,CAAM,MAAM,CAAA,EAAK,EAC/C,CACF,CAEA,SAASmM,EAAAA,CAAmBnM,CAAAA,CAA2C,CACrE,OACEA,CAAAA,GAAU,SAAA,EACVA,CAAAA,GAAU,aAAA,EACVA,CAAAA,GAAU,UAEd,CAEA,SAASsL,EAAAA,CAAStL,CAAAA,CAAkD,CAClE,OAAO,CAAA,CAAQA,CAAAA,EAAU,OAAOA,CAAAA,EAAU,QAAA,EAAY,CAAC,KAAA,CAAM,OAAA,CAAQA,CAAK,CAC5E,CC3UA,IAAMqM,EAAAA,CAAoB,MAAA,CAAO,MAAA,CAAOC,CAAsC,CAAA,CAC3E,KAAA,EAAM,CACN,IAAA,CAAK,CAACC,CAAAA,CAAOC,CAAAA,GAAWD,CAAAA,CAAQC,CAAM,CAAA,CAElC,SAASC,EAAAA,CACdC,CAAAA,CACA,CACA,IAAMC,CAAAA,CAAiBC,CAAA,CAAA,MAAA,CAAO,CAAC,CAAA,CACzB,CAACC,CAAAA,CAAOC,CAAQ,CAAA,CAAUF,CAAA,CAAA,QAAA,CAAS,CAAC,CAAA,CAE1C,OAAMA,CAAA,CAAA,SAAA,CAAU,IAAM,CACpB,IAAMG,CAAAA,CAAUL,EAAa,OAAA,CAC7B,GAAI,CAACK,CAAAA,CACH,OAGF,IAAMC,CAAAA,CAAc,CAACC,CAAAA,CAAaF,CAAAA,CAAQ,WAAA,GAAgB,CACxD,IAAMG,CAAAA,CAAYC,EAAAA,CAAgCF,CAAU,CAAA,CACxDC,CAAAA,GAAcP,CAAAA,CAAS,OAAA,GAI3BA,CAAAA,CAAS,OAAA,CAAUO,CAAAA,CACnBJ,CAAAA,CAASI,CAAS,CAAA,EACpB,CAAA,CAIA,GAFAF,CAAAA,EAAY,CAER,OAAO,cAAA,CAAmB,IAC5B,OAGF,IAAM3L,CAAAA,CAAW,IAAI,cAAA,CAAgBC,CAAAA,EAAY,CAC/C,IAAM8K,CAAAA,CAAQ9K,CAAAA,CAAQ,CAAC,CAAA,CACvB0L,CAAAA,CAAYZ,CAAAA,CAAQgB,EAAAA,CAA4BhB,CAAK,CAAA,CAAI,MAAS,EACpE,CAAC,CAAA,CAED,OAAA/K,CAAAA,CAAS,OAAA,CAAQ0L,CAAO,CAAA,CAEjB,IAAM,CACX1L,CAAAA,CAAS,UAAA,GACX,CACF,EAAG,CAACqL,CAAY,CAAC,CAAA,CAEVG,CACT,CAEO,SAASM,EAAAA,CAAgCN,CAAAA,CAAe,CAC7D,GAAIA,CAAAA,EAAS,CAAA,CACX,OAAO,CAAA,CAGT,IAAIQ,CAAAA,CAAS,CAAA,CACb,IAAA,IAAWC,CAAAA,IAAmBjB,EAAAA,CAAmB,CAC/C,GAAIQ,CAAAA,CAAQS,CAAAA,CACV,MAEFD,CAAAA,CAASC,EACX,CAEA,OAAOD,CACT,CAEA,SAASD,EAAAA,CAA4BhB,CAAAA,CAA4B,CAC/D,IAAMmB,CAAAA,CAA0BnB,CAAAA,CAAM,cAAA,CAChCoB,CAAAA,CAAgB,KAAA,CAAM,OAAA,CAAQD,CAAc,CAAA,CAC9CA,CAAAA,CAAe,CAAC,CAAA,CAChBA,CAAAA,CAGJ,OAFmBE,EAAAA,CAAcD,CAAI,CAAA,EAEhBpB,CAAAA,CAAM,WAAA,CAAY,KACzC,CAEA,SAASqB,EAAAA,CAAczN,CAAAA,CAAgB,CACrC,GAAI,OAAOA,CAAAA,EAAU,UAAYA,CAAAA,GAAU,IAAA,CACzC,OAGF,IAAMiN,CAAAA,CAAcjN,CAAAA,CAAmC,UAAA,CACvD,OAAO,OAAOiN,CAAAA,EAAe,QAAA,CAAWA,CAAAA,CAAa,MACvD,CCjDO,SAASS,EAAAA,CAAyB,CACvC,aAAA,CAAAzU,GAAAA,CACA,WAAA,CAAA0U,CAAAA,CACA,aAAA,CAAAC,CAAAA,CACA,UAAA,CAAA3B,CAAAA,CACA,YAAA,CAAA4B,GAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,WAAA,CAAAnD,GAAAA,CACA,gBAAA,CAAAoD,CAAAA,CACA,OAAA,CAAA/Q,CAAAA,CACA,IAAA,CAAAgR,CAAAA,CACA,OAAA,CAAArS,CAAAA,CACA,kBAAA,CAAA3F,CAAAA,CACA,2BAAA,CAAAiY,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,UAAA,CAAAvK,GAAAA,CACA,QAAA,CAAAwK,CAAAA,CACA,UAAA,CAAAC,CAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CAAAA,CACA,eAAA,CAAA9J,CAAAA,CACA,qBAAA,CAAA+J,CAAAA,CACA,mBAAA,CAAAC,EACA,qBAAA,CAAAtU,CAAAA,CACA,kBAAA,CAAAuU,CAAAA,CACA,oBAAA,CAAAC,CAAAA,CACA,wBAAA,CAAAC,CAAAA,CACA,eAAA,CAAAxU,CAAAA,CACA,gBAAA,CAAAyU,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,iBAAA,CAAArN,CAAAA,CACA,oBAAA,CAAAsN,CAAAA,CACA,sBAAA,CAAA1U,CAAAA,CACA,eAAA,CAAA2U,CAAAA,CACA,yBAAA,CAAA1U,CAAAA,CACA,gBAAA,CAAAO,CAAAA,CACA,SAAA,CAAAoB,GAAAA,CACA,QAAA,CAAA+I,CAAAA,CACA,cAAA,CAAAxO,CAAAA,CACA,YAAA,CAAAyY,EAAAA,CACA,kBAAA,CAAArW,EAAAA,CACA,gBAAA,CAAAqC,EAAAA,CACA,cAAA,CAAAE,EAAAA,CACA,OAAA,CAAA+T,EAAAA,CACA,sBAAA,CAAAC,EAAAA,CACA,uBAAA,CAAA5T,EAAAA,CACA,iBAAA,CAAAC,EAAAA,CACA,QAAA,CAAAG,CAAAA,CACA,YAAA,CAAA8Q,EACF,CAAA,CAmDG,CACD,IAAM2C,CAAAA,CAA0BC,CAAA,CAAA,OAAA,CAC9B,IAAM3E,GAAAA,GAAgBmD,CAAAA,CAAiB,CAAE,GAAA,CAAKA,CAAe,CAAA,CAAI,QACjE,CAACA,CAAAA,CAAgBnD,GAAW,CAC9B,CAAA,CACM4E,EAAAA,CAA6BD,CAAA,CAAA,OAAA,CACjC,IAAM3F,EAAAA,CAAyB0F,CAAiB,CAAA,CAChD,CAACA,CAAiB,CACpB,CAAA,CACM,CAACG,EAAAA,CAAiBjK,EAAkB,CAAA,CAClC+J,CAAA,CAAA,QAAA,CAA0B,CAC9B,SAAA,CAAWhB,CAAAA,EAAc,UAAA,EAAY,SAAA,EAAa,CAAA,CAClD,QAAA,CACEA,CAAAA,EAAc,UAAA,EAAY,QAAA,EAC1BzV,EAAAA,CAAmB,CAAC,GACpB,EACJ,CAAC,CAAA,CACG,CAACsK,EAAAA,CAAgBkC,EAAiB,CAAA,CACtCxF,EAAAA,CAAmC,CACjC,KAAA,CAAOsP,EAAAA,CACP,QAAA,CAAUF,CAAAA,CACV,YAAA,CAAc,IAAMX,CAAAA,EAAc,OAAA,EAAW,EAC/C,CAAC,CAAA,CACG,CAAC9Y,EAAAA,CAAqBuB,EAAsB,CAAA,CAAI8I,EAAAA,CAEpD,CACE,KAAA,CAAOqP,EAAAA,CACP,QAAA,CAAUF,CAAAA,CACV,YAAA,CAAc,IAAMV,CAAAA,EAAc,YAAA,EAAgB,EACtD,CAAC,CAAA,CACK,CAACmB,EAAAA,CAAyBC,EAA0B,CAAA,CACxD7P,EAAAA,CAAsC,CACpC,KAAA,CAAOkO,CAAAA,CACP,QAAA,CAAUc,CAAAA,CACV,YAAA,CAAc,IACZP,CAAAA,EAAc,gBAAA,EACdiB,EAAAA,CAAqB,UAAA,EACrB,EACJ,CAAC,CAAA,CACG,CAAC3M,EAAAA,CAAsB+M,EAAuB,CAAA,CAClD9P,EAAAA,CAAyC,CACvC,KAAA,CAAO5G,GAAAA,CACP,QAAA,CAAUwV,CAAAA,CACV,YAAA,CAAc,IAAMH,CAAAA,EAAc,aAAA,EAAiB,EACrD,CAAC,CAAA,CACG,CAACrL,EAAAA,CAAiB2M,EAAkB,CAAA,CACxC/P,EAAAA,CAAoC,CAClC,KAAA,CAAOqO,CAAAA,CACP,QAAA,CAAUY,CAAAA,CACV,YAAA,CAAc,IAAMR,CAAAA,EAAc,QAAA,EAAY,EAChD,CAAC,CAAA,CACG,CAACzL,EAAAA,CAAoBgN,EAAqB,CAAA,CAC9ChQ,EAAAA,CAAuC,CACrC,KAAA,CAAO8N,CAAAA,CACP,QAAA,CAAUe,CAAAA,CACV,YAAA,CAAc,IACZJ,CAAAA,EAAc,WAAA,EAAeiB,EAAAA,CAAqB,KAAA,EAAS,EAC/D,CAAC,CAAA,CACG,CAACzM,EAAAA,CAAsBgN,EAAuB,CAAA,CAClDjQ,EAAAA,CAAyC,CACvC,KAAA,CAAO+N,CAAAA,CACP,QAAA,CAAUxT,CAAAA,CACV,YAAA,CAAc,IACZkU,CAAAA,EAAc,aAAA,EACdiB,EAAAA,CAAqB,OAAA,EACrBQ,CAAAA,CAAwB/S,CAAO,CACnC,CAAC,CAAA,CACG,CAAC+F,EAAAA,CAAmBiN,EAAoB,CAAA,CAC5CnQ,EAAAA,CAAsC,CACpC,KAAA,CAAOoM,CAAAA,CACP,QAAA,CAAU0C,CAAAA,CACV,YAAA,CAAc,IACZL,CAAAA,EAAc,UAAA,EAAciB,EAAAA,CAAqB,UAAA,EAAc,CAC7D,GAAA,CAAK,EAAC,CACN,MAAA,CAAQ,EACV,CACJ,CAAC,CAAA,CACG,CAACvM,EAAAA,CAAqBiN,EAAsB,CAAA,CAChDpQ,EAAAA,CAAwC,CACtC,KAAA,CAAOgO,GAAAA,CACP,QAAA,CAAUe,CAAAA,CACV,YAAA,CAAc,IACZN,CAAAA,EAAc,YAAA,EAAgBiB,EAAAA,CAAqB,MAAA,EAAU,EACjE,CAAC,CAAA,CACG,CAACnM,EAAAA,CAAiB8M,EAAkB,CAAA,CAAIrQ,EAAAA,CAE5C,CACA,KAAA,CAAOjE,CAAAA,CACP,QAAA,CAAUd,CAAAA,CACV,YAAA,CAAc,IAAMwT,CAAAA,EAAc,QAAA,EAAY,OAChD,CAAC,CAAA,CACK,CAACpL,EAAAA,CAAiBiN,EAAkB,CAAA,CAAItQ,EAAAA,CAAoC,CAChF,KAAA,CAAOsO,CAAAA,CACP,QAAA,CAAUY,CAAAA,CACV,YAAA,CAAc,IAAMT,CAAAA,EAAc,QAAA,EAAY,EAChD,CAAC,CAAA,CACK,CAAC8B,EAAAA,CAAuBC,EAAwB,CAAA,CACpDxQ,EAAAA,CAA8B,CAC5B,KAAA,CAAOzE,EAAAA,CACP,QAAA,CAAUd,CAAAA,CACV,aAAc,IAAMgU,CAAAA,EAAc,cAAA,EAAkB,KACtD,CAAC,CAAA,CACG,CAACgC,EAAAA,CAAgBC,EAAiB,CAAA,CACtC1Q,EAAAA,CAAuC,CACrC,KAAA,CAAOlE,CAAAA,CACP,QAAA,CAAUtB,CAAAA,CACV,YAAA,CAAc,IACZiU,CAAAA,EAAc,OAAA,EACdiB,EAAAA,CAAqB,OAAA,EACrB,aACJ,CAAC,CAAA,CACGiB,EAAAA,CACJ/U,EAAAA,EAAqB6S,CAAAA,EAAc,YAAA,EAAgB,EAAA,CAC/CmC,EAAAA,CACJjV,EAAAA,EAA2B/E,EAAe,iBAAA,CACtCia,EAAAA,CAAiCtB,EAAAA,EAA0B,GAAA,CAC3D,CAAC/Y,EAAAA,CAAkBsa,EAAmB,CAAA,CAAUrB,CAAA,CAAA,QAAA,CACpDkB,EACF,CAAA,CACMI,EAAAA,CAAiBnE,EAAAA,CAA2BC,EAAY,CAAA,CACxDmE,EAAAA,CAAyB,CAAA,CAAQtW,CAAAA,CACjCuW,EAAAA,CAAmCxB,CAAA,CAAA,MAAA,CAAOkB,EAAyB,CAAA,CACnEO,EAAAA,CAAuCzB,CAAA,CAAA,cAAA,CAC1CtP,CAAAA,EAAkB,CACjB8Q,EAAAA,CAA2B,OAAA,CAAU9Q,CAAAA,CACrCzF,CAAAA,GAA4ByF,CAAK,EACnC,CACF,CAAA,CAEMsP,CAAA,CAAA,SAAA,CAAU,IAAM,CACpBwB,EAAAA,CAA2B,OAAA,CAAUN,EAAAA,CAGrCG,EAAAA,CAAoBH,EAAyB,EAC/C,CAAA,CAAG,CAACA,EAAyB,CAAC,CAAA,CAExBlB,CAAA,CAAA,SAAA,CAAU,IAAM,CASpB,GARI,CAACuB,EAAAA,EAIDxa,EAAAA,GAAqBma,EAAAA,EAIrBna,EAAAA,GAAqBya,EAAAA,CAA2B,OAAA,CAClD,OAGF,IAAMzF,CAAAA,CAAU,MAAA,CAAO,UAAA,CAAW,IAAM,CACtC0F,EAAAA,CAA+B1a,EAAgB,EACjD,CAAA,CAAGqa,EAA8B,CAAA,CAEjC,OAAO,IAAM,CACX,MAAA,CAAO,YAAA,CAAarF,CAAO,EAC7B,CACF,CAAA,CAAG,CACDwF,EAAAA,CACAxa,EAAAA,CACAqa,EAAAA,CACAF,EACF,CAAC,CAAA,CAED,IAAMnY,EAAAA,CAA0BiX,CAAA,CAAA,OAAA,CAC9B,KAAO,CACL,SAAA,CAAWpT,GAAAA,EAAasT,EAAAA,CAAgB,SAAA,CACxC,SAAUvK,CAAAA,EAAYuK,EAAAA,CAAgB,QACxC,CAAA,CAAA,CACA,CACEA,EAAAA,CAAgB,SAAA,CAChBA,EAAAA,CAAgB,QAAA,CAChBtT,GAAAA,CACA+I,CACF,CACF,CAAA,CACMvO,EAAAA,CAA0B,IAAA,CAAK,GAAA,CACnC,CAAA,CACA8X,CAAAA,EAAmB,IAAA,CAAK,GAAA,CAAI,CAAA,CAAGnW,EAAAA,CAAkB,QAAQ,CAC3D,CAAA,CAGM2Y,EAAAA,CAA4B1B,CAAA,CAAA,gBAAA,CAAiBjZ,EAAgB,CAAA,CAC7D2N,EAAAA,CAAoBiK,CAAAA,CACtBvJ,CAAAA,CACErO,EAAAA,CACA2a,EAAAA,CACF,EAAA,CACEC,EAAAA,CAA6B3B,CAAA,CAAA,WAAA,CAChC4B,CAAAA,EAAmC,CAClChB,EAAAA,CAAmBgB,CAAY,EACjC,CAAA,CACA,CAAChB,EAAkB,CACrB,CAAA,CACMiB,EAAAA,CAAmC7B,CAAA,CAAA,WAAA,CACtC8B,CAAAA,EAAgC,CAC/Bf,EAAAA,CAAyBe,CAAkB,EAC7C,CAAA,CACA,CAACf,EAAwB,CAC3B,CAAA,CACMgB,CAAAA,CAA4B/B,CAAA,CAAA,WAAA,CAC/BgC,CAAAA,EAAkC,CACjCf,EAAAA,CAAkBe,CAAW,EAC/B,CAAA,CACA,CAACf,EAAiB,CACpB,CAAA,CACMgB,CAAAA,CAAsCjC,CAAA,CAAA,WAAA,CAAY,IAAM,CAC5D5N,CAAAA,GAAoB,CAAC,CAAA,CACjBxF,GAAAA,GAAc,MAAA,EAChBqJ,EAAAA,CAAoB/G,CAAAA,EAClBA,CAAAA,CAAQ,SAAA,GAAc,CAAA,CAAIA,CAAAA,CAAU,CAAE,GAAGA,CAAAA,CAAS,SAAA,CAAW,CAAE,CACjE,EAEJ,CAAA,CAAG,CAACkD,CAAAA,CAAmBxF,GAAS,CAAC,CAAA,CAC3BsV,CAAAA,CAA2BlC,CAAA,CAAA,MAAA,CAAO,CACtC,aAAA,CAAe1M,EAAAA,CACf,iBAAA,CAAAoB,EACF,CAAC,CAAA,CAEKsL,CAAA,CAAA,SAAA,CAAU,IAAM,CACpB,IAAMmC,CAAAA,CAAWD,CAAAA,CAAmB,OAAA,CAC9BE,EAAAA,CAAiBD,CAAAA,CAAS,aAAA,GAAkB7O,EAAAA,CAC5C+O,EAAAA,CACJF,CAAAA,CAAS,iBAAA,GAAsBzN,EAAAA,CACjCwN,CAAAA,CAAmB,OAAA,CAAU,CAC3B,aAAA,CAAe5O,EAAAA,CACf,iBAAA,CAAAoB,EACF,CAAA,CAEI,CAAAU,CAAAA,GAIA,CAACgN,EAAAA,EAAkB,CAACC,EAAAA,EAIxBJ,CAAAA,EAA8B,EAChC,CAAA,CAAG,CACD3O,EAAAA,CACAoB,EAAAA,CACAU,CAAAA,CACA6M,CACF,CAAC,CAAA,CAED9G,EAAAA,CAA+B,CAC7B,WAAA,CAAa4E,CAAAA,CACb,KAAA,CAAO,CACL,UAAA,CAAYtB,CAAAA,CAAmB,MAAA,CAAY0B,EAAAA,CAC3C,MAAA,CACE5B,GAAAA,GAAiB,MAAA,CAAY7K,EAAAA,CAAsB,MAAA,CACrD,MAAO2K,CAAAA,CAAc,MAAA,CAAY9K,EAAAA,CACjC,OAAA,CAAS+K,CAAAA,CAAgB,MAAA,CAAY9K,EAAAA,CACrC,UAAA,CAAYmJ,CAAAA,GAAe,MAAA,CAAYlJ,EAAAA,CAAoB,MAAA,CAC3D,OAAA,CAASpH,CAAAA,CAAU,MAAA,CAAY2U,EACjC,CACF,CAAC,CAAA,CACD,IAAMsB,EAAAA,CAAmCtC,CAAA,CAAA,OAAA,CAAyB,IACzDtJ,CAAAA,CAAwBhJ,CAAO,CAAA,CAAE,MAAA,CACtC,CAACyO,CAAAA,CAAY,CAAE,MAAA,CAAA/L,EAAAA,CAAQ,MAAAuG,EAAM,CAAA,GAAM,CACjC,IAAMpK,EAAAA,CAAWqK,CAAAA,CAAYxG,EAAAA,CAAQuG,EAAK,CAAA,CAC1C,OAAI4L,GAAAA,CAAyBnS,EAAAA,CAAO,IAAA,EAAM,MAAA,CAAQkR,EAAc,CAAA,GAC9DnF,CAAAA,CAAW5P,EAAQ,CAAA,CAAI,KAAA,CAAA,CAElB4P,CACT,CAAA,CACA,EACF,CAAA,CACC,CAACzO,CAAAA,CAAS4T,EAAc,CAAC,CAAA,CACtBtN,EAAAA,CAAkCgM,CAAA,CAAA,OAAA,CAAyB,KACxD,CACL,GAAGG,EAAAA,CACH,GAAGmC,EACL,CAAA,CAAA,CACC,CAACnC,EAAAA,CAAyBmC,EAA0B,CAAC,CAAA,CAClDE,CAAAA,CAAoBxC,CAAA,CAAA,OAAA,CACxB,IACEtB,CAAAA,CAAK,MAAA,CAAQ9P,CAAAA,EACX6T,GAAAA,CAAa7T,CAAAA,CAAKmQ,CAAAA,CAAY+B,EAAqB,CACrD,CAAA,CACF,CAACA,EAAAA,CAAuBpC,CAAAA,CAAMK,CAAU,CAC1C,CAAA,CACMpX,EAAAA,CAA6BsX,CAAAA,EAAauD,EAAY,MAAA,GAAW,CAAA,CACjEE,EAAAA,CAAoB1C,CAAA,CAAA,OAAA,CACxB,IAAM2C,GAAAA,CAAkCvb,EAAuB,CAAA,CAC/D,CAACA,EAAuB,CAC1B,CAAA,CACM+O,EAAAA,CAAYxO,EAAAA,CACd+a,EAAAA,CACAF,CAAAA,CACEpM,EAAAA,CAAsB4J,CAAA,CAAA,WAAA,CAC1B,CAACpR,CAAAA,CAAY+H,EAAAA,GACP9H,CAAAA,CAAsBD,CAAG,CAAA,CACpBgU,CAAAA,CAAyBjM,EAAK,CAAA,CAGhCmI,CAAAA,CAASlQ,CAAAA,CAAK+H,EAAK,CAAA,CAE5B,CAACmI,CAAQ,CACX,CAAA,CACM+D,EAAAA,CACJnc,CAAAA,EAAAA,CACCkF,EAAAA,EAAkB,MAAA,EAAU,CAAA,EAAK,CAAA,EAClC,MAAA,CAAO,MAAA,CAAO1F,EAAmB,CAAA,CAAE,IAAA,CAAK,OAAO,CAAA,CAC3C4c,EAAAA,CAAgB9C,CAAA,CAAA,OAAA,CAAQ,IAAM,CAClC,GAAI,CAAC6C,EAAAA,CACH,OAAO,IAAI,GAAA,CAGb,IAAM1a,CAAAA,CAAO,IAAI,GAAA,CACXuP,EAAAA,CAAaqL,EAAAA,EAA8B,CAC/CA,EAAAA,CAAY,OAAA,CAAQ,CAACnU,EAAAA,CAAK+H,EAAAA,GAAU,CAClCxO,CAAAA,CAAK,GAAA,CAAI2W,CAAAA,CAASlQ,EAAAA,CAAK+H,EAAK,CAAA,CAAG/H,EAAG,CAAA,CAClC,IAAM+I,EAAAA,CAAUrD,GAAAA,GAAa1F,EAAAA,CAAK+H,EAAK,CAAA,CACnCgB,EAAAA,EAAS,MAAA,EACXD,EAAAA,CAAUC,EAAO,EAErB,CAAC,EACH,CAAA,CACA,OAAAD,EAAAA,CAAU8K,CAAW,CAAA,CACdra,CACT,CAAA,CAAG,CAAC2W,CAAAA,CAAUxK,GAAAA,CAAYuO,EAAAA,CAA2BL,CAAW,CAAC,CAAA,CAC3D7W,EAAAA,CAAqBqU,CAAA,CAAA,OAAA,CAAQ,IAC5B6C,EAAAA,CAIE,MAAA,CAAO,OAAA,CAAQ3c,EAAmB,CAAA,CACtC,MAAA,CAAO,CAAC,EAAGwI,CAAQ,CAAA,GAAMA,CAAQ,CAAA,CACjC,GAAA,CAAI,CAAC,CAAC5B,CAAK,CAAA,GAAMgW,EAAAA,CAAQ,GAAA,CAAIhW,CAAK,CAAC,CAAA,CACnC,MAAA,CAAQ8B,CAAAA,EAAsB,CAAA,CAAQA,CAAI,CAAA,CANpC,EAAC,CAOT,CAAC1I,EAAAA,CAAqB4c,EAAAA,CAASD,EAAyB,CAAC,CAAA,CACtDnX,EAAAA,CAAuBsU,CAAA,CAAA,OAAA,CAC3B,IACE,MAAA,CAAO,OAAA,CAAQ9Z,EAAmB,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC4G,CAAAA,CAAO4B,EAAQ,CAAA,GAC3DA,EAAAA,CAAW,CAAC5B,CAAK,CAAA,CAAI,EACvB,CAAA,CACF,CAAC5G,EAAmB,CACtB,CAAA,CAEA,OAAO,CACL,cAAA,CAAAob,EAAAA,CACA,oBAAA,CAAAhO,EAAAA,CACA,kBAAA,CAAAC,EAAAA,CACA,oBAAA,CAAAC,EAAAA,CACA,iBAAA,CAAAC,EAAAA,CACA,mBAAA,CAAAC,EAAAA,CACA,uBAAA,CAAAyM,EAAAA,CACA,cAAA,CAAAa,EAAAA,CACA,eAAA,CAAArN,EAAAA,CACA,eAAA,CAAAC,EAAAA,CACA,iBAAA,CAAA7K,EAAAA,CACA,mBAAA,CAAA7C,EAAAA,CACA,sBAAA4a,EAAAA,CACA,cAAA,CAAAjN,EAAAA,CACA,eAAA,CAAAC,EAAAA,CACA,yBAAA,CAAAE,EAAAA,CACA,iBAAA,CAAAU,EAAAA,CACA,mBAAA,CAAAqN,CAAAA,CACA,0BAAA,CAAAF,EAAAA,CACA,oBAAA,CAAAF,EAAAA,CACA,gBAAA,CAAA5a,EAAAA,CACA,uBAAA,CAAAK,EAAAA,CACA,+BAAA,CAAA+Z,EAAAA,CACA,cAAA,CAAAzV,EAAAA,CACA,YAAA,CAAAC,EAAAA,CACA,uBAAA,CAAA0U,EAAAA,CACA,qBAAA,CAAAE,EAAAA,CACA,uBAAA,CAAAC,EAAAA,CACA,oBAAA,CAAAE,EAAAA,CACA,0BAAA,CAAAN,EAAAA,CACA,kBAAA,CAAAE,EAAAA,CACA,kBAAA,CAAAO,EAAAA,CACA,sBAAA,CAAApZ,EAAAA,CACA,iBAAA,CAAAsO,EAAAA,CACA,oBAAA,CAAsB4K,EAAAA,CACtB,kBAAA,CAAA1K,EAAAA,CACA,mBAAA,CAAAoL,EAAAA,CACA,0BAAA,CAAA1Z,EAAAA,CACA,SAAA,CAAAwO,EAAAA,CACA,aAAA,CAAAC,EAAAA,CAKA,mBAAA,CAAqBoM,CAAAA,CACrB,WAAA,CAAAA,CACF,CACF,CC7eA,IAAMQ,EAAAA,CAA6C,CACjD,SAAA,CAAW,MAAA,CACX,QAAA,CAAU,MAAA,CACV,SAAA,CAAW,MAAA,CACX,WAAA,CAAa,MAAA,CACb,eAAA,CAAiB,KAAA,CACjB,iBAAA,CAAmB,KAAA,CACnB,iBAAA,CAAmB,KAAA,CACnB,cAAA,CAAgB,KAAA,CAChB,eAAA,CAAiB,KAAA,CACjB,eAAA,CAAiB,MAAA,CACjB,gBAAA,CAAkB,MACpB,CAAA,CAEO,SAASC,EAAAA,CAAuB,CACrC,OAAA,CAAAvV,CAAAA,CACA,YAAA,CAAA6Q,CAAAA,CACA,YAAA,CAAAhY,CAAAA,CACA,kBAAA,CAAAG,CAAAA,CACA,aAAA,CAAAwc,GAAAA,CACA,eAAA,CAAAC,CAAAA,CACA,UAAA,CAAAC,CAAAA,CACA,YAAA,CAAAtb,CAAAA,CACA,kBAAA,CAAAiR,CACF,CAAA,CAUG,CACD,IAAMsK,CAAAA,CAAiCC,CAAA,CAAA,OAAA,CAAQ,IAAM,CACnD,IAAMC,CAAAA,CAAM,IAAI,GAAA,CAEhB,IAAA,GAAW,CAAE,MAAA,CAAAnT,CAAAA,CAAQ,KAAA,CAAAuG,CAAM,CAAA,GAAKD,EAAwBhJ,CAAO,CAAA,CACzD,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK0C,CAAAA,CAAQ,MAAM,CAAA,EACrDmT,CAAAA,CAAI,GAAA,CAAI3M,CAAAA,CAAYxG,CAAAA,CAAQuG,CAAK,CAAC,CAAA,CAItC,OAAIjQ,CAAAA,EACF6c,CAAAA,CAAI,GAAA,CAAI,YAAY,CAAA,CAGlBJ,CAAAA,EACFI,CAAAA,CAAI,GAAA,CAAI,YAAY,CAAA,CAAA,CAGlBL,GAAAA,EAAiB3c,CAAAA,GACnBgd,CAAAA,CAAI,GAAA,CAAI,aAAa,CAAA,CAGhBA,CACT,CAAA,CAAG,CACD7V,CAAAA,CACAnH,CAAAA,CACAG,CAAAA,CACAwc,GAAAA,CACAC,CACF,CAAC,CAAA,CAEKK,CAAAA,CAA4BF,CAAA,CAAA,OAAA,CAAQ,IAAM,CAC9C,IAAMG,CAAAA,CAAS,IAAI,GAAA,CAEnB,IAAA,GAAW,CAAE,MAAA,CAAArT,CAAAA,CAAQ,KAAA,CAAAuG,CAAM,CAAA,GAAKD,CAAAA,CAAwBhJ,CAAO,CAAA,CAAG,CAChE,IAAMgW,CAAAA,CAAqBC,IAA4BvT,CAAM,CAAA,CAEzDsT,CAAAA,GAAuB,MAAA,EACzBD,CAAAA,CAAO,GAAA,CAAI7M,CAAAA,CAAYxG,CAAAA,CAAQuG,CAAK,CAAA,CAAG+M,CAAkB,EAE7D,CAEA,OAAOD,CACT,CAAA,CAAG,CAAC/V,CAAO,CAAC,CAAA,CAENkW,CAAAA,CAAsBN,CAAA,CAAA,OAAA,CAAQ,IAAM,CACxC,IAAM7G,CAAAA,CAAO,IAAI,GAAA,CACXC,GAAAA,CAAQ,IAAI,GAAA,CAEdmH,CAAAA,CAAa,EACjB,IAAA,IAAWzT,CAAAA,IAAU2I,CAAAA,CACf+K,CAAAA,CAAa1T,CAAM,CAAA,GAAM,MAAA,GAC3BqM,CAAAA,CAAK,GAAA,CAAIrM,CAAAA,CAAO,EAAA,CAAIyT,CAAU,CAAA,CAC9BA,CAAAA,EAAcE,EAAAA,CAAoB3T,CAAM,CAAA,CAAA,CAI5C,IAAI4T,CAAAA,CAAc,CAAA,CAClB,IAAA,IAAW5T,CAAAA,IAAU,CAAC,GAAG2I,CAAkB,CAAA,CAAE,OAAA,EAAQ,CAC/C+K,CAAAA,CAAa1T,CAAM,CAAA,GAAM,OAAA,GAC3BsM,IAAM,GAAA,CAAItM,CAAAA,CAAO,EAAA,CAAI4T,CAAW,CAAA,CAChCA,CAAAA,EAAeD,EAAAA,CAAoB3T,CAAM,CAAA,CAAA,CAI7C,OAAO,CAAE,IAAA,CAAAqM,CAAAA,CAAM,KAAA,CAAAC,GAAM,CACvB,CAAA,CAAG,CAAC3D,CAAkB,CAAC,CAAA,CAEjBkL,CAAAA,CAAqBX,CAAA,CAAA,OAAA,CAAQ,IAAM,CACvC,GAAIF,CAAAA,GAAe,MAAA,CACjB,OAGF,IAAMc,CAAAA,CAAcnL,CAAAA,CAAmB,MAAA,CACpC3I,CAAAA,EAAW,CAAC4G,CAAAA,CAAkB5G,CAAAA,CAAO,EAAE,CAC1C,CAAA,CAEA,OAAK8T,CAAAA,CAAY,MAAA,EAIcA,CAAAA,CAAY,KAAA,CACxC9T,CAAAA,EACCiT,CAAAA,CAAyB,GAAA,CAAIjT,CAAAA,CAAO,EAAE,CAAA,EACtC,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAKmO,CAAAA,CAAcnO,CAAAA,CAAO,EAAE,CAChE,CAAA,CAGI8T,CAAAA,CAAYA,CAAAA,CAAY,MAAA,CAAS,CAAC,GAAG,EAAA,CAVvC,MAYJ,CAAA,CAAG,CACD3F,CAAAA,CACA8E,CAAAA,CACAD,CAAAA,CACArK,CACF,CAAC,CAAA,CAEKoL,CAAAA,CAA4Bb,CAAA,CAAA,OAAA,CAAQ,IAAM,CAC9C,IAAMC,CAAAA,CAAM,IAAI,GAAA,CAAI,CAClB,GAAGF,CAAAA,CACH,GAAG,MAAA,CAAO,IAAA,CAAK9E,CAAY,CAC7B,CAAC,CAAA,CAED,OAAI0F,CAAAA,EACFV,CAAAA,CAAI,MAAA,CAAOU,CAAY,CAAA,CAGlBV,CACT,CAAA,CAAG,CAAChF,CAAAA,CAAc8E,CAAAA,CAA0BY,CAAY,CAAC,CAAA,CAEnDG,CAAAA,CAAsBd,CAAA,CAAA,OAAA,CAAQ,IAAM,CACxC,IAAMe,CAAAA,CAAU,IAAI,GAAA,CAEpB,IAAA,IAAWjU,GAAAA,IAAU2I,CAAAA,CAAoB,CACvC,IAAMuL,CAAAA,CAAoBlU,GAAAA,CAAO,EAAA,GAAO,YAAA,CAClCmU,CAAAA,CAAoBnU,GAAAA,CAAO,EAAA,GAAO,YAAA,CAClCoU,CAAAA,CAAkBpU,IAAO,EAAA,GAAO,aAAA,CAChCqU,CAAAA,CACJH,CAAAA,EAAqBC,CAAAA,EAAqBC,CAAAA,CACtCE,CAAAA,CAAiBtU,GAAAA,CAAO,EAAA,GAAO,YAAA,CAC/BsT,CAAAA,CAAqBF,CAAAA,CAAoB,GAAA,CAAIpT,GAAAA,CAAO,EAAE,CAAA,CACtDuU,CAAAA,CAAuBvU,GAAAA,CAAO,EAAA,GAAO6T,CAAAA,CACrCW,CAAAA,CACJlB,CAAAA,GACCiB,CAAAA,CAAuBvU,GAAAA,CAAO,OAAA,EAAQ,CAAI,MAAA,CAAA,CACvCyU,CAAAA,CACJ,CAACH,CAAAA,GACAtB,CAAAA,GAAe,KAAA,EACdqB,CAAAA,EACAN,CAAAA,CAAoB,GAAA,CAAI/T,GAAAA,CAAO,EAAE,CAAA,CAAA,CAC/B0U,CAAAA,CACJD,CAAAA,EAAkBD,CAAAA,GAAmB,MAAA,CACjC,CACE,KAAA,CAAOC,CAAAA,CACHJ,CAAAA,CACElV,GAAAA,CACAa,GAAAA,CAAO,OAAA,EAAQ,CACjB,MAAA,CACJ,QAAA,CAAUqU,CAAAA,CACNlV,GAAAA,CACAsV,CAAAA,CACEzU,GAAAA,CAAO,OAAA,EAAQ,CACfwU,CAAAA,CACN,QAAA,CAAUC,CAAAA,CACNJ,CAAAA,CACElV,GAAAA,CACAa,GAAAA,CAAO,SAAQ,CACjB,MACN,CAAA,CACA,MAAA,CACA2U,GAAAA,CAAYjB,CAAAA,CAAa1T,GAAM,CAAA,CAC/B4U,CAAAA,CAAcD,GAAAA,CAChB,CACE,IAAA,CACEA,GAAAA,GAAc,MAAA,CAASnB,CAAAA,CAAc,IAAA,CAAK,GAAA,CAAIxT,GAAAA,CAAO,EAAE,CAAA,CAAI,MAAA,CAC7D,KAAA,CACE2U,GAAAA,GAAc,OAAA,CACVnB,CAAAA,CAAc,KAAA,CAAM,GAAA,CAAIxT,GAAAA,CAAO,EAAE,CAAA,CACjC,MACR,CAAA,CACA,OACE6U,CAAAA,CACJH,CAAAA,EAAaE,CAAAA,CAAc,CAAE,GAAGF,CAAAA,CAAW,GAAGE,CAAY,CAAA,CAAI,MAAA,CAEhEX,CAAAA,CAAQ,GAAA,CAAIjU,GAAAA,CAAO,EAAA,CAAI,CACrB,SAAA,CAAA6U,CAAAA,CACA,QAAA,CAAUH,CAAAA,CACV,SAAA,CAAAC,GAAAA,CACA,WAAA,CAAaE,CAAAA,CACb,eAAA,CAAAT,CAAAA,CACA,iBAAA,CAAAD,CAAAA,CACA,iBAAA,CAAAD,CAAAA,CACA,cAAA,CAAAI,CAAAA,CACA,eAAA,CAAAD,EACA,eAAA,CAAiBM,GAAAA,CACbG,CAAAA,CAAyBH,GAAAA,CAAWjd,CAAAA,CAAc,CAChD,eAAA,CAAA2c,CACF,CAAC,CAAA,CACD,MAAA,CACJ,gBAAA,CAAkBA,CAAAA,CACd,yCAAA,CACA,MACN,CAAC,EACH,CAEA,OAAOJ,CACT,CAAA,CAAG,CACDJ,CAAAA,CACAE,CAAAA,CACAf,CAAAA,CACAI,CAAAA,CACAI,CAAAA,CACA9b,CAAAA,CACAiR,CACF,CAAC,CAAA,CAEKoM,CAAAA,CAAqB7B,CAAA,CAAA,OAAA,CAAQ,IAC1BvK,CAAAA,CAAmB,MAAA,CAAO,CAACqM,CAAAA,CAAOhV,CAAAA,GAAW,CAClD,IAAMiV,CAAAA,CAASjB,CAAAA,CAAc,GAAA,CAAIhU,CAAAA,CAAO,EAAE,CAAA,CACpCsT,CAAAA,CAAqBF,CAAAA,CAAoB,GAAA,CAAIpT,CAAAA,CAAO,EAAE,CAAA,CACtDuU,CAAAA,CAAuBvU,CAAAA,CAAO,EAAA,GAAO6T,CAAAA,CAE3C,OAAIoB,CAAAA,EAAQ,eAAA,CACHD,CAAAA,CAAQ7V,GAAAA,CAGb4U,CAAAA,CAAoB,GAAA,CAAI/T,EAAO,EAAE,CAAA,CAC5BgV,CAAAA,CAAQhV,CAAAA,CAAO,OAAA,EAAQ,CAI9BgV,CAAAA,EACC1B,CAAAA,GAAuBiB,CAAAA,CAAuBvU,CAAAA,CAAO,OAAA,EAAQ,CAAI,CAAA,CAAA,CAEtE,CAAA,CAAG,CAAC,CAAA,CACH,CACDgU,CAAAA,CACAH,CAAAA,CACAE,CAAAA,CACAX,CAAAA,CACAzK,CACF,CAAC,CAAA,CAEKuM,CAAAA,CAAwBhC,CAAA,CAAA,WAAA,CAC3B/W,CAAAA,EAAqB6X,CAAAA,CAAc,GAAA,CAAI7X,CAAQ,CAAA,EAAKyW,EAAAA,CACrD,CAACoB,CAAa,CAChB,CAAA,CAEA,OAAO,CACL,aAAA,CAAAA,CAAAA,CACA,wBAAA,CAAAf,CAAAA,CACA,YAAA,CAAA8B,CAAAA,CACA,eAAA,CAAAG,CACF,CACF,CAEA,SAASvB,EAAAA,CAA2B3T,CAAAA,CAAuB,CACzD,OAAO4G,CAAAA,CAAkB5G,CAAAA,CAAO,EAAE,CAAA,CAAIb,GAAAA,CAAsBa,CAAAA,CAAO,OAAA,EACrE,CC7OO,SAASmV,EAAAA,CACdC,CAAAA,CACAnY,CAAAA,CACA,CACA,IAAMvF,CAAAA,CAAe0d,CAAAA,CAAG,UAAA,EAAc,EAAC,CACjC,CAAE,MAAA,CAAArY,CAAAA,CAAQ,IAAA,CAAAsY,CAAAA,CAAM,WAAA,CAAAC,CAAAA,CAAa,UAAA,CAAAC,CAAAA,CAAY,QAAA,CAAAvY,CAAAA,CAAU,QAAA,CAAAwY,CAAS,CAAA,CAAIJ,CAAAA,CAEtE,OAAO,SAAkC,CACvC,IAAA,CAAArd,CAAAA,CACA,YAAA,CAAAlC,CAAAA,CACA,UAAA,CAAAD,CAAAA,CAAa,OAAA,CACb,iBAAA,CAAAD,CAAAA,CACA,aAAA,CAAAD,CAAAA,CACA,UAAA,CAAAuB,CAAAA,CACA,YAAA,CAAAd,CAAAA,CACA,WAAA,CAAAW,CAAAA,CACA,cAAA,CAAA+G,CAAAA,CACA,sBAAA,CAAAC,CAAAA,CACA,YAAA,CAAArH,CAAAA,CACA,aAAA+Y,CAAAA,CACA,oBAAA,CAAAF,CAAAA,CACA,kBAAA,CAAAhZ,CAAAA,CACA,YAAA,CAAAF,CAAAA,CACA,oBAAA,CAAAqf,CAAAA,CACA,eAAA,CAAAjf,CAAAA,CACA,UAAA,CAAAI,CAAAA,CACA,eAAA,CAAA8e,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,SAAA,CAAA/G,CAAAA,CAAY,KAAA,CACZ,eAAA,CAAAC,CAAAA,CAAkB,CAAA,CAClB,MAAA,CAAA7V,CACF,CAAA,CAAkC,CAChC,IAAM4c,CAAAA,CAAqBjgB,CAAAA,EAAc,QACnCkgB,GAAAA,CACJngB,CAAAA,CACIwC,GAAAA,CAAG,MAAA,CAAQxC,CAAiB,CAAA,CAC5BogB,EAAAA,CAAqBF,CAAkB,CAAA,CACvCG,CAAAA,CAAkB7d,GAAAA,CACtB,0BAAA,CACAT,CAAAA,CAAa,QAAA,CACboe,GACF,CAAA,CACMG,CAAAA,CAAmBC,CAAAA,EACvB/d,GAAAA,CACE,sEAAA,CACAge,EAAAA,CAAqBN,CAAkB,CAAA,CACvCne,CAAAA,CAAa,QAAA,CACbhC,CAAAA,CACAwgB,CACF,CAAA,CAEF,OAAIrH,CAAAA,CAEA5W,GAAAA,CAAC,KAAA,CAAA,CACC,KAAK,MAAA,CACL,eAAA,CAAc,sBAAA,CACd,SAAA,CAAW+d,CAAAA,CAEV,QAAA,CAAA,KAAA,CAAM,IAAA,CAAK,CAAE,MAAA,CAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,CAAGlH,CAAe,CAAE,CAAA,CAAG,CAACsH,CAAAA,CAAG7P,CAAAA,GACxDrO,IAAAA,CAACmd,CAAAA,CAAA,CAEC,IAAA,CAAK,UAAA,CACL,aAAA,CAAY,MAAA,CACZ,eAAA,CAAc,sBAAA,CACd,SAAA,CAAWY,CAAAA,CAAgB,UAAU,CAAA,CAEpC,QAAA,CAAA,CAAAxf,CAAAA,CACCyB,IAAAA,CAACqd,CAAAA,CAAA,CAAW,SAAA,CAAU,gBAAA,CACpB,QAAA,CAAA,CAAAtd,GAAAA,CAACud,CAAAA,CAAA,CAAS,SAAA,CAAU,sBAAA,CAAuB,CAAA,CAC3Cvd,GAAAA,CAACud,CAAAA,CAAA,CAAS,SAAA,CAAU,sBAAA,CAAuB,CAAA,CAAA,CAC7C,CAAA,CACE,IAAA,CACJtd,IAAAA,CAACod,CAAAA,CAAA,CACC,SAAA,CAAWnd,GAAAA,CAAG,gBAAA,CAAkB1B,CAAAA,CAAe,EAAA,CAAK,MAAM,CAAA,CAE1D,QAAA,CAAA,CAAAwB,IAACud,CAAAA,CAAA,CAAS,SAAA,CAAU,YAAA,CAAa,CAAA,CACjCvd,GAAAA,CAACud,CAAAA,CAAA,CAAS,SAAA,CAAU,aAAA,CAAc,CAAA,CAClCvd,GAAAA,CAACud,CAAAA,CAAA,CAAS,SAAA,CAAU,aAAA,CAAc,CAAA,CAClCvd,GAAAA,CAACud,CAAAA,CAAA,CAAS,SAAA,CAAU,wBAAA,CAAyB,CAAA,CAAA,CAC/C,CAAA,CAAA,CAAA,CAnBK,CAAA,aAAA,EAAgBjP,CAAK,CAAA,CAoB5B,CACD,CAAA,CACH,CAAA,CAKFtO,GAAAA,CAAC,KAAA,CAAA,CACC,IAAA,CAAK,MAAA,CACL,eAAA,CAAc,sBAAA,CACd,SAAA,CAAW+d,CAAAA,CAEV,QAAA,CAAAje,CAAAA,CAAK,GAAA,CAAKyG,CAAAA,EAAQ,CACjB,IAAM9B,CAAAA,CAAQ8B,CAAAA,CAAI,EAAA,CACZ6X,EAAAA,CAAc7X,CAAAA,CAAI,QAAA,CAClB8X,EAAAA,CAAa,CAAA,CAAQ9G,CAAAA,CAAa9S,CAAK,CAAA,CACvC6Z,EAAAA,CAAYngB,CAAAA,GAAiBsG,CAAAA,CAC7B8Z,EAAAA,CAAiBvf,CAAAA,CAAW,MAAA,CAAS,CAAA,EAAK,CAAA,CAAQd,CAAAA,CAClDkJ,GAAkB,CAAA,EACtBvI,CAAAA,GAAgBA,CAAAA,CAAY,eAAA,GAAkBuf,EAAW,CAAA,EAAK,IAAA,CAAA,CAAA,CAE1DI,EAAAA,CACJngB,CAAAA,EAAsBkgB,EAAAA,EAAkB/f,CAAAA,CACpCigB,EAAAA,CACJpgB,CAAAA,EACAkgB,EAAAA,EACAhY,CAAAA,CAAI,YAAA,EAAa,EACjBa,EAAAA,CACIsX,EAAAA,CAAqB,IAAM,CAC1B/f,CAAAA,EAIAA,CAAAA,CAAW,CAAE,GAAA,CAAKyf,EAAAA,CAAa,KAAA,CAAA3Z,CAAM,CAAC,EAC7C,CAAA,CAEA,OACExE,IAAAA,CAACmd,CAAAA,CAAA,CAEC,IAAA,CAAK,UAAA,CACL,aAAA,CAAa3Y,CAAAA,CACb,iBAAA,CAAiB8B,CAAAA,CAAI,KAAA,CACrB,SAAA,CAAWkX,CAAAA,GAAkBW,EAAW,CAAA,EAAK,KAAA,CAC7C,eAAA,CAAc,sBAAA,CACd,YAAA,CAAYC,EAAAA,CAAa,UAAA,CAAa,MAAA,CACtC,SAAA,CAAWL,CAAAA,CACT9d,GAAAA,CACE,CACE3B,CAAAA,GAAkB6f,EAAAA,CAAa,CAC7B,GAAA,CAAKA,EAAAA,CACL,KAAA,CAAA3Z,CAAAA,CACA,SAAU8B,CAAAA,CAAI,KAAA,CACd,SAAA,CAAA+X,EAAAA,CACA,UAAA,CAAY/X,CAAAA,CAAI,aAAA,EAAc,CAC9B,SAAA,CAAW,KAAA,CACX,UAAA,CAAA8X,EAAAA,CACA,cAAA,CAAgB,KAClB,CAAC,CACH,CAAA,CACG,MAAA,CAAO,OAAO,CAAA,CACd,IAAA,CAAK,GAAG,CAAA,CACX,8EAAA,CACA5e,CAAAA,CAAa,IAAA,CACb4e,EAAAA,CACI5e,CAAAA,CAAa,YAAA,CACbA,CAAAA,CAAa,cACnB,CACF,EACA,WAAA,CAAcqI,CAAAA,EAAwC,CACpD4V,CAAAA,GAAiB,CAAE,GAAA,CAAKU,EAAAA,CAAa,KAAA,CAAA3Z,CAAAA,CAAO,KAAA,CAAAqD,CAAM,CAAC,EACrD,CAAA,CACA,SAAA,CAAYA,CAAAA,EAAwC,CAClD6V,CAAAA,GAAe,CAAE,GAAA,CAAKS,EAAAA,CAAa,KAAA,CAAA3Z,CAAAA,CAAO,KAAA,CAAAqD,CAAM,CAAC,EACnD,CAAA,CAEC,QAAA,CAAA,CAAA0W,EAAAA,CACCxe,GAAAA,CAAC,KAAA,CAAA,CACC,cAAY,MAAA,CACZ,SAAA,CAAWE,GAAAA,CACT,iIAAA,CACAT,CAAAA,CAAa,WAAA,EACX,iDACJ,CAAA,CACF,CAAA,CACE,IAAA,CACJO,GAAAA,CAAC,KAAA,CAAA,CACC,eAAA,CAAc,0BAAA,CACd,IAAA,CAAMrB,CAAAA,CAAa,QAAA,CAAW,MAAA,CAC9B,QAAA,CAAUA,CAAAA,CAAa,CAAA,CAAI,MAAA,CAC3B,SAAA,CAAWuB,GAAAA,CACT,iFAAA,CACAye,EAAAA,CAAyBf,CAAkB,CAAA,CAC3Cjf,CAAAA,EAAc,2CAChB,CAAA,CACA,OAAA,CAAUmJ,CAAAA,EAA4C,CAElD8W,CAAAA,CACE9W,CAAAA,CAAM,MAAA,CACNA,CAAAA,CAAM,aACR,CAAA,EAKF4W,EAAAA,GACF,CAAA,CACA,SAAA,CAAY5W,CAAAA,EAA+C,CAEvD8W,CAAAA,CACE9W,CAAAA,CAAM,MAAA,CACNA,CAAAA,CAAM,aACR,CAAA,EAAA,CAKEA,CAAAA,CAAM,GAAA,GAAQ,OAAA,EAAWA,CAAAA,CAAM,GAAA,GAAQ,GAAA,IACzCA,CAAAA,CAAM,cAAA,EAAe,CACrB4W,EAAAA,EAAmB,EAEvB,CAAA,CAEC,SAAA9gB,CAAAA,CAAa,CACZ,GAAA,CAAKwgB,EAAAA,CACL,KAAA,CAAA3Z,CAAAA,CACA,KAAA,CAAO8B,CAAAA,CAAI,KAAA,CACX,gBAAA,CAAkBA,CAAAA,CAAI,YAAA,EAAa,CACnC,iBAAA,CAAmBA,CAAAA,CAAI,aAAA,EAAc,CACrC,qBAAA,CAAuB,IAAMA,CAAAA,CAAI,cAAA,EAAe,CAChD,UAAA,CAAA8X,EAAAA,CACA,gBAAA,CAAmBxV,CAAAA,EAAc,CAC/BwO,CAAAA,CACEwH,EAAAA,CACEtH,CAAAA,CACA9S,CAAAA,CACAoE,CAAAA,CACAtC,CAAAA,CAAI,YAAA,EAAa,CACjBA,CAAAA,CAAI,iBAAA,EACN,CACF,EACF,CAAA,CACA,OAAA,CAASvH,CAAAA,CACT,SAAA,CAAAsf,EAAAA,CACA,YAAA,CAAc,IAAM,CAClBd,CAAAA,CAAqB/Y,CAAK,EAC5B,CAAA,CACA,aAAA,CAAe,IAAM,CACnB+Y,CAAAA,CAAqB,IAAI,EAC3B,CACF,CAAC,CAAA,CACH,CAAA,CACCc,EAAAA,EACD,CAACzf,GACD,EAAE+G,CAAAA,GAAmB,IAAA,EAAgBA,CAAAA,CAAeW,CAAAA,CAAI,EAAE,CAAA,CAAA,CACtD,IAAA,CAEEvG,GAAAA,CAAC,KAAA,CAAA,CACC,eAAA,CAAc,8BAAA,CACd,SAAA,CAAU,uBAAA,CAET,QAAA,CAAAnB,CAAAA,CAAY,MAAA,CAAO,CAClB,GAAA,CAAKuf,EAAAA,CACL,KAAA,CAAA3Z,CAAAA,CACA,QAAA,CAAU8B,CACZ,CAAC,CAAA,CACH,CAAA,CAELkY,EAAAA,CACCxe,IAAAA,CAACqd,CAAAA,CAAA,CAAW,SAAA,CAAU,yFAAA,CACnB,QAAA,CAAA,CAAAjf,CAAAA,CACC2B,GAAAA,CAAC,KAAA,CAAA,CACC,uBAAA,CAAsB,MAAA,CACtB,SAAA,CAAU,qBAAA,CAEV,QAAA,CAAAA,GAAAA,CAAC+E,CAAAA,CAAA,CACC,OAAA,CAASsZ,EAAAA,CACT,QAAA,CAAU,CAAC9X,CAAAA,CAAI,YAAA,EAAa,CAC5B,YAAA,CAAA,CACEvF,CAAAA,CAAO,aAAA,EACPoD,EAAAA,CAA0B,aAAA,EAC1BK,CAAK,CAAA,CACP,eAAA,CAAkBoD,CAAAA,EAAuC,CACvDwP,CAAAA,CACEwH,EAAAA,CACEtH,EACA9S,CAAAA,CACAoD,CAAAA,GAAY,IAAA,CACZtB,CAAAA,CAAI,YAAA,EAAa,CACjBA,CAAAA,CAAI,iBAAA,EACN,CACF,EACF,CAAA,CACF,CAAA,CACF,CAAA,CACE,IAAA,CACHA,CAAAA,CAAI,YAAA,EAAa,CAChBvG,GAAAA,CAAC,KAAA,CAAA,CAAI,uBAAA,CAAsB,MAAA,CAAO,SAAA,CAAU,qBAAA,CAC1C,QAAA,CAAAA,GAAAA,CAAC8E,CAAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,IAAA,CAAK,SAAA,CACL,QAAQ,OAAA,CACR,YAAA,CACEyB,CAAAA,CAAI,aAAA,EAAc,CACdvF,CAAAA,CAAO,WAAA,CACPA,CAAAA,CAAO,SAAA,CAEb,eAAA,CAAeuF,CAAAA,CAAI,aAAA,EAAc,CACjC,OAAA,CAAS,IAAMA,CAAAA,CAAI,cAAA,EAAe,CAElC,QAAA,CAAAvG,GAAAA,CAACuH,CAAAA,CAAA,CACC,SAAA,CAAWrH,GAAAA,CACT,sBAAA,CACAqG,CAAAA,CAAI,aAAA,EAAc,CAAI,UAAA,CAAa,YACrC,CAAA,CACF,CAAA,CACF,EACF,CAAA,CACE,IAAA,CACHa,EAAAA,CACCpH,GAAAA,CAAC,KAAA,CAAA,CACC,uBAAA,CAAsB,MAAA,CACtB,SAAA,CAAU,qBAAA,CAEV,QAAA,CAAAA,GAAAA,CAAC8E,CAAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,IAAA,CAAK,SAAA,CACL,OAAA,CAAQ,OAAA,CACR,YAAA,CACEc,CAAAA,GAAmB,IAAA,EAAQA,CAAAA,CAAeW,CAAAA,CAAI,EAAE,CAAA,CAC5CA,CAAAA,CAAI,YAAA,EAAa,CACdvF,CAAAA,CAAO,kBAAA,EACRoD,EAAAA,CAA0B,kBAAA,CAC1BpD,CAAAA,CAAO,WAAA,CACTuF,CAAAA,CAAI,YAAA,EAAa,CACdvF,CAAAA,CAAO,gBAAA,EACRoD,EAAAA,CAA0B,gBAAA,CAC1BpD,CAAAA,CAAO,SAAA,CAEf,eAAA,CACE4E,CAAAA,GAAmB,IAAA,EACnB,CAAA,CAAQA,CAAAA,CAAeW,CAAAA,CAAI,EAAE,CAAA,CAE/B,oBAAA,CAAmB,MAAA,CACnB,OAAA,CAAS,IAAM,CACbV,CAAAA,CAAwBgB,CAAAA,EACtBW,CAAAA,CACEX,CAAAA,CACAN,CAAAA,CAAI,EAAA,CACJzG,CAAAA,CAAK,IAAKiH,EAAAA,EAASA,EAAAA,CAAK,EAAE,CAC5B,CACF,EACF,CAAA,CAEA,QAAA,CAAA/G,GAAAA,CAACuH,CAAAA,CAAA,CACC,SAAA,CAAWrH,GAAAA,CACT,sBAAA,CACA0F,CAAAA,GAAmB,IAAA,EAAQA,CAAAA,CAAeW,CAAAA,CAAI,EAAE,CAAA,CAC5C,UAAA,CACA,YACN,CAAA,CACF,CAAA,CACF,CAAA,CACF,CAAA,CACE,IAAA,CACJvG,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,oCAAA,CAAqC,CAAA,CACnDue,EAAAA,CACCve,GAAAA,CAAC,KAAA,CAAA,CACC,uBAAA,CAAsB,MAAA,CACtB,SAAA,CAAU,qBAAA,CAEV,QAAA,CAAAA,GAAAA,CAACgF,CAAAA,CAAA,CACC,GAAA,CAAKoZ,EAAAA,CACL,UAAA,CAAYpf,CAAAA,CACZ,YAAA,CAAcd,CAAAA,CACd,SAAA,CAAWogB,EAAAA,CACX,cAAA,CAAgB,IAAM,CACpBd,CAAAA,CAAqB/Y,CAAK,EAC5B,CAAA,CACA,eAAA,CAAiB,IAAM,CACrB+Y,CAAAA,CAAqB,IAAI,EAC3B,EACA,MAAA,CAAQxc,CAAAA,CACV,CAAA,CACF,CAAA,CACE,IAAA,CAAA,CACN,CAAA,CACE,IAAA,CAAA,CAAA,CAxPCyD,CAyPP,CAEJ,CAAC,CAAA,CACH,CAEJ,CACF,CAEA,SAASqZ,EAAAA,CAAqBngB,CAAAA,CAAiC,CAC7D,OAAQA,CAAAA,EACN,KAAK,SAAA,CACH,OAAO,0CAAA,CACT,KAAK,OAAA,CACH,OAAO,+DAAA,CAET,QACE,OAAO,gFACX,CACF,CAEA,SAASugB,EAAAA,CAAqBvgB,CAAAA,CAAiC,CAC7D,OAAQA,CAAAA,EACN,KAAK,SAAA,CACH,OAAO,OAAA,CACT,KAAK,OAAA,CACH,OAAO,QAAA,CAET,QACE,MACJ,CACF,CAEA,SAASghB,EAAAA,CAAyBhhB,CAAAA,CAAiC,CACjE,OAAQA,CAAAA,EACN,KAAK,SAAA,CACH,OAAO,OAAA,CACT,KAAK,OAAA,CACH,OAAO,4BAAA,CAET,QACE,OAAO,QACX,CACF,CAEA,SAASkhB,EAAAA,CACPtH,CAAAA,CACA9S,CAAAA,CACA4Z,CAAAA,CACAS,CAAAA,CACAC,CAAAA,CACA,CACA,GAAI,CAACD,CAAAA,CACH,OAAOvH,CAAAA,CAGT,GAAI8G,CAAAA,CACF,OAAOU,CAAAA,CACH,CACE,GAAGxH,CAAAA,CACH,CAAC9S,CAAK,EAAG,IACX,EACA,CAAE,CAACA,CAAK,EAAG,IAAK,CAAA,CAGtB,GAAI,CAAC8S,CAAAA,CAAa9S,CAAK,CAAA,CACrB,OAAO8S,CAAAA,CAGT,IAAMyH,CAAAA,CAAgB,CAAE,GAAGzH,CAAa,CAAA,CACxC,OAAA,OAAOyH,CAAAA,CAAcva,CAAK,CAAA,CACnBua,CACT,CCrfO,SAASC,GAA0B9B,CAAAA,CAAoB,CAC5D,IAAM1d,CAAAA,CAAe0d,CAAAA,CAAG,UAAA,EAAc,EAAC,CACjC,CACJ,KAAA,CAAA+B,CAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,WAAA,CAAAC,CAAAA,CACA,UAAA,CAAAC,CAAAA,CACA,UAAA,CAAAC,CACF,CAAA,CAAIpC,CAAAA,CAEJ,OAAO,SAA6B,CAClC,KAAA,CAAAxZ,CAAAA,CAAQ,eAAA,CACR,WAAA,CAAAhC,CAAAA,CAAc,oEAChB,CAAA,CAGG,CACD,OACE1B,IAAAA,CAACif,CAAAA,CAAA,CACC,SAAA,CAAW,CAAA,qBAAA,EAAwBzf,CAAAA,CAAa,UAAA,EAAc,uBAAuB,CAAA,CAAA,CAErF,QAAA,CAAA,CAAAQ,IAAAA,CAACof,CAAAA,CAAA,CACC,QAAA,CAAA,CAAArf,GAAAA,CAACsf,CAAAA,CAAA,CAAW,OAAA,CAAQ,MAAA,CAClB,QAAA,CAAAtf,GAAAA,CAACwf,CAAAA,CAAA,EAAU,CAAA,CACb,CAAA,CACAxf,GAAAA,CAACuf,CAAAA,CAAA,CAAY,QAAA,CAAA5b,EAAM,CAAA,CACnB3D,GAAAA,CAACof,CAAAA,CAAA,CAAkB,QAAA,CAAAzd,CAAAA,CAAY,CAAA,CAAA,CACjC,CAAA,CACA3B,GAAAA,CAACmf,CAAAA,CAAA,EAAa,CAAA,CAAA,CAChB,CAEJ,CACF,CClBO,SAASM,EAAAA,CAA0BtC,CAAAA,CAAoB,CAC5D,IAAM1d,CAAAA,CAAe0d,CAAAA,CAAG,UAAA,EAAc,EAAC,CACjC,CACJ,UAAA,CAAAuC,CAAAA,CACA,iBAAA,CAAAC,CAAAA,CACA,kBAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,kBAAA,CAAAC,CAAAA,CACA,MAAA,CAAAC,CAAAA,CACA,aAAA,CAAAC,CAAAA,CACA,WAAA,CAAAC,CAAAA,CACA,UAAA,CAAAC,CAAAA,CACA,aAAA,CAAAC,CAAAA,CACA,WAAA,CAAAC,CAAAA,CACA,OAAA,CAAAvb,EACA,cAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,CACF,CAAA,CAAIgY,CAAAA,CAEJ,SAASsD,CAAAA,CAAoB,CAC3B,SAAA,CAAAlc,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,cAAA,CAAAvD,CAAAA,CACA,QAAA,CAAAqM,CAAAA,CACA,aAAA,CAAAU,CAAAA,CACA,kBAAA,CAAA9M,CAAAA,CACA,iBAAA,CAAA6I,CAAAA,CACA,gBAAA,CAAAsD,CAAAA,CACA,MAAA,CAAArM,CACF,CAAA,CAA6B,CAC3B,IAAM0f,CAAAA,CAAQzf,CAAAA,CACV0f,EAAAA,CAAgBpc,CAAAA,CAAW,IAAA,CAAK,GAAA,CAAI,CAAA,CAAGC,CAAS,CAAC,CAAA,CACjD,EAAC,CACCoc,CAAAA,CAAgBrc,CAAAA,CAAY,CAAA,CAC5Bsc,CAAAA,CAAYtc,CAAAA,CAAY,CAAA,CAAIC,CAAAA,CAC5Bsc,CAAAA,CAAgB,IAAA,CAAK,GAAA,CAAI,CAAA,CAAGtc,CAAAA,CAAY,CAAC,CAAA,CAE/C,OACEvE,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,kDAAA,CACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,KAAA,CAAA,CACC,UAAW,CAAA,uCAAA,EAA0CR,CAAAA,CAAa,SAAA,EAAa,YAAY,CAAA,CAAA,CAE3F,QAAA,CAAA,CAAAO,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,uCAAA,CACb,QAAA,CAAAgB,CAAAA,CAAO,cAAA,CACV,CAAA,CACAf,IAAAA,CAACkgB,CAAAA,CAAA,CACC,KAAA,CAAO,MAAA,CAAO7S,CAAQ,CAAA,CACtB,aAAA,CAAgBjF,CAAAA,EAAkB,CAChCgF,CAAAA,CAAiB,MAAA,CAAOhF,CAAK,CAAC,EAChC,CAAA,CAEA,QAAA,CAAA,CAAArI,GAAAA,CAACugB,EAAA,CACC,YAAA,CAAYvf,CAAAA,CAAO,cAAA,CACnB,SAAA,CAAW,CAAA,KAAA,EAAQvB,CAAAA,CAAa,uBAAA,EAA2B,EAAE,CAAA,CAAA,CAE7D,QAAA,CAAAO,GAAAA,CAACwgB,CAAAA,CAAA,EAAY,CAAA,CACf,CAAA,CACAxgB,GAAAA,CAACogB,CAAAA,CAAA,CACC,QAAA,CAAApgB,GAAAA,CAACqgB,CAAAA,CAAA,CACE,QAAA,CAAAnf,CAAAA,CAAmB,GAAA,CAAK6f,CAAAA,EACvB/gB,GAAAA,CAACsgB,CAAAA,CAAA,CAAwB,KAAA,CAAO,MAAA,CAAOS,CAAM,CAAA,CAC1C,QAAA,CAAAA,CAAAA,CAAAA,CADcA,CAEjB,CACD,CAAA,CACH,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAEC/S,CAAAA,GAAkB,MAAA,CACjBhO,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,2CAAA,CACb,QAAA,CAAAC,IAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAW,CAAA,qDAAA,EAAwDR,CAAAA,CAAa,eAAA,EAAmB,EAAE,CAAA,CAAA,CACrG,YAAA,CAAYuB,CAAAA,CAAO,YAAA,CAAagN,CAAa,CAAA,CAE7C,QAAA,CAAA,CAAAhO,GAAAA,CAACghB,GAAAA,CAAA,CAAa,SAAA,CAAU,QAAA,CAAS,CAAA,CACjChhB,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,gCAAA,CAAkC,QAAA,CAAAgO,CAAAA,CAAc,CAAA,CAChEhO,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,uCAAA,CACb,QAAA,CAAAgB,CAAAA,CAAO,YAAA,CAAagN,CAAa,CAAA,CACpC,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CACE,IAAA,CAEJ/N,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,4CAAA,CACb,QAAA,CAAA,CAAAD,GAAAA,CAAC,KAAA,CAAA,CACC,UAAW,CAAA,8CAAA,EAAiDP,CAAAA,CAAa,SAAA,EAAa,YAAY,CAAA,CAAA,CAEjG,QAAA,CAAAwB,CAAAA,CACGD,CAAAA,CAAO,UAAA,CAAWuD,CAAAA,CAAW,IAAA,CAAK,GAAA,CAAI,CAAA,CAAGC,CAAS,CAAC,CAAA,CAAA,CAEjDxD,CAAAA,CAAO,iBAAA,EACPoD,EAAAA,CAA0B,iBAAA,EAC1BG,CAAS,CAAA,CACjB,CAAA,CACAvE,GAAAA,CAAC0f,CAAAA,CAAA,CACC,YAAA,CACE1e,CAAAA,CAAO,UAAA,EAAcoD,EAAAA,CAA0B,UAAA,CAEjD,SAAA,CAAU,yBAAA,CAEV,QAAA,CAAAnE,IAAAA,CAAC0f,CAAAA,CAAA,CACC,QAAA,CAAA,CAAA3f,GAAAA,CAAC8f,CAAAA,CAAA,CAAe,SAAA,CAAU,gCAAA,CACxB,QAAA,CAAA7f,IAAAA,CAACgF,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAjF,GAAAA,CAACmF,CAAAA,CAAA,CAAe,OAAA,CAAO,IAAA,CACrB,QAAA,CAAAnF,GAAAA,CAAC6f,CAAAA,CAAA,CACC,YAAA,CAAY7e,CAAAA,CAAO,SAAA,CACnB,IAAA,CAAK,GAAA,CACL,IAAA,CAAK,SAAA,CACL,SAAU,KAAA,CACV,QAAA,CAAU,CAAC4f,CAAAA,CACX,OAAA,CAAU9Y,CAAAA,EAA+C,CACvDA,CAAAA,CAAM,cAAA,EAAe,CACjB8Y,CAAAA,EACF7W,CAAAA,CAAkB,CAAC,EAEvB,CAAA,CACA,IAAA,CAAM/I,CAAAA,CAAO,SAAA,CACf,CAAA,CACF,CAAA,CACAhB,GAAAA,CAACkF,CAAAA,CAAA,CAAgB,QAAA,CAAAlE,CAAAA,CAAO,SAAA,CAAU,CAAA,CAAA,CACpC,CAAA,CACF,CAAA,CACAhB,GAAAA,CAAC8f,CAAAA,CAAA,CACC,QAAA,CAAA7f,IAAAA,CAACgF,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAjF,GAAAA,CAACmF,CAAAA,CAAA,CAAe,OAAA,CAAO,IAAA,CACrB,QAAA,CAAAnF,GAAAA,CAACkgB,CAAAA,CAAA,CACC,YAAA,CAAYlf,CAAAA,CAAO,YAAA,CACnB,IAAA,CAAK,GAAA,CACL,IAAA,CAAK,SAAA,CACL,QAAA,CAAU,KAAA,CACV,QAAA,CAAU,CAAC4f,CAAAA,CACX,OAAA,CAAU9Y,CAAAA,EAA+C,CACvDA,CAAAA,CAAM,cAAA,EAAe,CACjB8Y,GACF7W,CAAAA,CAAkBxF,CAAAA,CAAY,CAAC,EAEnC,CAAA,CACA,IAAA,CAAMvD,CAAAA,CAAO,YAAA,CACf,CAAA,CACF,CAAA,CACAhB,GAAAA,CAACkF,CAAAA,CAAA,CAAgB,QAAA,CAAAlE,CAAAA,CAAO,YAAA,CAAa,CAAA,CAAA,CACvC,CAAA,CACF,CAAA,CACC0f,CAAAA,CAAM,GAAA,CAAI,CAAC3Z,CAAAA,CAAMuH,CAAAA,GAChBtO,GAAAA,CAAC8f,CAAAA,CAAA,CAEC,SAAA,CAAU,sCAAA,CAET,QAAA,CAAA/Y,CAAAA,GAAS,UAAA,CACR/G,IAAC4f,CAAAA,CAAA,CACC,IAAA,CACE5e,CAAAA,CAAO,SAAA,EACPoD,EAAAA,CAA0B,SAAA,CAE9B,CAAA,CAEApE,GAAAA,CAACggB,CAAAA,CAAA,CACC,IAAA,CAAK,GAAA,CACL,QAAA,CAAUjZ,CAAAA,GAASxC,CAAAA,CAAY,CAAA,CAC/B,IAAA,CAAK,SAAA,CACL,OAAA,CAAUuD,CAAAA,EAA+C,CACvDA,CAAAA,CAAM,cAAA,EAAe,CACrBiC,CAAAA,CAAkBhD,CAAAA,CAAO,CAAC,EAC5B,CAAA,CAEC,QAAA,CAAAA,CAAAA,CACH,GArBG,CAAA,EAAGA,CAAI,CAAA,CAAA,EAAIuH,CAAK,CAAA,CAuBvB,CACD,CAAA,CACDtO,GAAAA,CAAC8f,CAAAA,CAAA,CACC,QAAA,CAAA7f,IAAAA,CAACgF,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAjF,GAAAA,CAACmF,CAAAA,CAAA,CAAe,OAAA,CAAO,IAAA,CACrB,QAAA,CAAAnF,GAAAA,CAACigB,CAAAA,CAAA,CACC,YAAA,CAAYjf,CAAAA,CAAO,QAAA,CACnB,IAAA,CAAK,GAAA,CACL,IAAA,CAAK,SAAA,CACL,QAAA,CAAU,KAAA,CACV,QAAA,CAAU,CAAC6f,CAAAA,CACX,OAAA,CAAU/Y,CAAAA,EAA+C,CACvDA,CAAAA,CAAM,cAAA,EAAe,CACjB+Y,CAAAA,EACF9W,CAAAA,CAAkBxF,CAAAA,CAAY,CAAC,EAEnC,CAAA,CACA,IAAA,CAAMvD,CAAAA,CAAO,QAAA,CACf,CAAA,CACF,CAAA,CACAhB,GAAAA,CAACkF,CAAAA,CAAA,CAAgB,QAAA,CAAAlE,CAAAA,CAAO,QAAA,CAAS,CAAA,CAAA,CACnC,CAAA,CACF,CAAA,CACCC,CAAAA,CACCjB,GAAAA,CAAC8f,EAAA,CAAe,SAAA,CAAU,gCAAA,CACxB,QAAA,CAAA7f,IAAAA,CAACgF,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAjF,GAAAA,CAACmF,CAAAA,CAAA,CAAe,OAAA,CAAO,IAAA,CACrB,QAAA,CAAAnF,GAAAA,CAAC+f,CAAAA,CAAA,CACC,YAAA,CAAY/e,CAAAA,CAAO,QAAA,CACnB,IAAA,CAAK,GAAA,CACL,IAAA,CAAK,SAAA,CACL,QAAA,CAAU,KAAA,CACV,IAAA,CAAMA,CAAAA,CAAO,QAAA,CACb,QAAA,CAAU,CAAC6f,CAAAA,CACX,OAAA,CACE/Y,CAAAA,EACG,CACHA,CAAAA,CAAM,cAAA,EAAe,CACjB+Y,CAAAA,EACF9W,CAAAA,CAAkB+W,CAAa,EAEnC,CAAA,CACF,CAAA,CACF,CAAA,CACA9gB,GAAAA,CAACkF,CAAAA,CAAA,CAAgB,QAAA,CAAAlE,CAAAA,CAAO,QAAA,CAAS,CAAA,CAAA,CACnC,CAAA,CACF,CAAA,CACE,IAAA,CAAA,CACN,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAEJ,CAEA,SAASL,CAAAA,CAAgBL,CAAAA,CAAiC,CACxD,OACEN,GAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAW,CAAA,4BAAA,EAA+BP,CAAAA,CAAa,MAAA,EAAU,EAAE,CAAA,CAAA,CAEnE,QAAA,CAAAO,GAAAA,CAACygB,CAAAA,CAAA,CAAqB,GAAGngB,CAAAA,CAAO,CAAA,CAClC,CAEJ,CAEA,OAAO,CACL,eAAA,CAAAK,CAAAA,CACA,mBAAA,CAAA8f,CACF,CACF,CAEA,SAASE,EAAAA,CAAgBM,CAAAA,CAA0Bzc,CAAAA,CAAmB,CACpE,IAAM0c,CAAAA,CAAcD,CAAAA,CAAmB,CAAA,CACjCP,CAAAA,CAAQ,IAAI,GAAA,CAAY,CAAC,CAAA,CAAGlc,CAAS,CAAC,CAAA,CAE5C,IAAA,IACM2c,CAAAA,CAAO,IAAA,CAAK,GAAA,CAAI,CAAA,CAAGD,CAAAA,CAAc,CAAC,CAAA,CACtCC,CAAAA,EAAQ,IAAA,CAAK,GAAA,CAAI3c,CAAAA,CAAW0c,CAAAA,CAAc,CAAC,CAAA,CAC3CC,CAAAA,EAAQ,CAAA,CAERT,CAAAA,CAAM,GAAA,CAAIS,CAAI,CAAA,CAGhB,IAAMC,EAAe,KAAA,CAAM,IAAA,CAAKV,CAAK,CAAA,CAAE,IAAA,CAAK,CAACtM,CAAAA,CAAMC,CAAAA,GAAUD,CAAAA,CAAOC,CAAK,CAAA,CACnEgN,CAAAA,CAAoC,EAAC,CAE3C,IAAA,IAAS/S,CAAAA,CAAQ,CAAA,CAAGA,CAAAA,CAAQ8S,CAAAA,CAAa,MAAA,CAAQ9S,CAAAA,EAAS,CAAA,CAAG,CAC3D,IAAM6S,CAAAA,CAAOC,CAAAA,CAAa9S,CAAK,CAAA,CACzBwL,CAAAA,CAAWsH,CAAAA,CAAa9S,CAAAA,CAAQ,CAAC,EAEnCwL,CAAAA,EAAYqH,CAAAA,CAAOrH,CAAAA,CAAW,CAAA,EAChCuH,CAAAA,CAAM,IAAA,CAAK,UAAU,CAAA,CAGvBA,CAAAA,CAAM,IAAA,CAAKF,CAAI,EACjB,CAEA,OAAOE,CACT,CCvQO,SAASC,EAAAA,CAA0BnE,CAAAA,CAAoB,CAC5D,GAAM,CACJ,MAAA,CAAArY,CAAAA,CACA,YAAA,CAAAyc,CAAAA,CACA,mBAAA,CAAAC,CAAAA,CACA,iBAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,qBAAA,CAAAC,CAAAA,CACA,mBAAA,CAAAC,GAAAA,CACA,OAAA,CAAA3c,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,CACF,CAAA,CAAIgY,CAAAA,CAEJ,OAAO,SAAoC,CACzC,GAAA,CAAA5W,CAAAA,CACA,UAAA,CAAAvH,CAAAA,CACA,YAAA,CAAAd,CAAAA,CACA,SAAA,CAAAogB,CAAAA,CACA,cAAA,CAAAuD,CAAAA,CACA,eAAA,CAAAC,CAAAA,CACA,MAAA,CAAA9gB,CAAAA,CACA,UAAA,CAAAsT,CACF,CAAA,CAAoC,CAClC,IAAMyN,CAAAA,CAAU/iB,CAAAA,CAAW,MAAA,CAAQgjB,CAAAA,EAAWC,GAAAA,CAAgBD,CAAAA,CAAQzb,CAAG,CAAC,CAAA,CACpE2b,CAAAA,CAAgCC,CAAA,CAAA,WAAA,CACnCra,CAAAA,EAAgC,CAC/BA,CAAAA,CAAM,eAAA,GACR,CAAA,CACA,EACF,CAAA,CAEA,GAAIwW,CAAAA,CACF,OACEre,IAAAA,CAACgF,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAjF,GAAAA,CAACmF,CAAAA,CAAA,CAAe,OAAA,CAAO,IAAA,CACrB,QAAA,CAAAlF,IAAAA,CAAC6E,CAAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,OAAA,CAAQ,OAAA,CACR,IAAA,CAAK,SAAA,CACL,aAAA,CAAeod,CAAAA,CACf,OAAA,CAASJ,CAAAA,CAET,QAAA,CAAA,CAAA9hB,GAAAA,CAACoiB,GAAAA,CAAA,EAAM,CAAA,CACPpiB,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,SAAA,CAAW,QAAA,CAAAgB,CAAAA,CAAO,UAAA,CAAW,CAAA,CAAA,CAC/C,CAAA,CACF,CAAA,CACAhB,GAAAA,CAACkF,CAAAA,CAAA,CAAgB,QAAA,CAAAlE,CAAAA,CAAO,UAAA,CAAW,CAAA,CAAA,CACrC,CAAA,CAIJ,IAAMqhB,CAAAA,CAAYC,GAAAA,CAAWpkB,CAAAA,CAAcqI,CAAG,CAAA,CACxCgc,CAAAA,CAASjO,CAAAA,EAAY,MAAA,EAAU,KAAA,CACrC,OAAI,CAACyN,CAAAA,CAAQ,MAAA,EAAU,CAACM,CAAAA,EAAa,CAACE,CAAAA,CAC7B,IAAA,CAIPtiB,IAAAA,CAACshB,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAthB,IAAAA,CAACgF,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAjF,GAAAA,CAACmF,CAAAA,CAAA,CAAe,OAAA,CAAO,IAAA,CACrB,QAAA,CAAAnF,GAAAA,CAAC4hB,GAAAA,CAAA,CAAoB,OAAA,CAAO,IAAA,CAC1B,QAAA,CAAA3hB,IAAAA,CAAC6E,CAAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,OAAA,CAAQ,OAAA,CACR,IAAA,CAAK,SAAA,CACL,aAAA,CAAeod,CAAAA,CACf,OAAA,CAASA,CAAAA,CAET,QAAA,CAAA,CAAAliB,GAAAA,CAACwiB,CAAAA,CAAA,EAAS,CAAA,CACVxiB,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,SAAA,CAAW,QAAA,CAAAgB,CAAAA,CAAO,UAAA,CAAW,CAAA,CAAA,CAC/C,CAAA,CACF,CAAA,CACF,CAAA,CACAhB,GAAAA,CAACkF,CAAAA,CAAA,CAAgB,QAAA,CAAAlE,CAAAA,CAAO,UAAA,CAAW,CAAA,CAAA,CACrC,CAAA,CACAf,IAAAA,CAACuhB,CAAAA,CAAA,CAAoB,KAAA,CAAM,KAAA,CAAM,UAAU,MAAA,CACxC,QAAA,CAAA,CAAAa,CAAAA,CACCriB,GAAAA,CAACyhB,CAAAA,CAAA,CACC,QAAA,CAAAxhB,IAAAA,CAACyhB,CAAAA,CAAA,CACC,OAAA,CAAU5Z,CAAAA,EAAyC,CACjDA,CAAAA,CAAM,eAAA,EAAgB,CACtB+Z,CAAAA,GACF,CAAA,CAEA,QAAA,CAAA,CAAA7hB,GAAAA,CAACyiB,CAAAA,CAAA,CAAS,WAAA,CAAU,cAAA,CAAe,CAAA,CAClCzhB,CAAAA,CAAO,OAAA,CAAA,CACV,CAAA,CACF,CAAA,CACE,IAAA,CACHqhB,CAAAA,GAAcN,EAAQ,MAAA,EAAUQ,CAAAA,CAAAA,CAAUviB,GAAAA,CAAC2hB,CAAAA,CAAA,EAAsB,CAAA,CAAK,IAAA,CACtEY,CAAAA,CACCviB,GAAAA,CAACyhB,CAAAA,CAAA,CACE,QAAA,CAAAnN,CAAAA,EAAY,QAAA,CACXtU,GAAAA,CAAC0hB,CAAAA,CAAA,CACC,OAAA,CAAU5Z,CAAAA,EAAyC,CACjDA,CAAAA,CAAM,eAAA,EAAgB,CACtBwM,CAAAA,CAAW,GAAA,CAAI,KAAK,EACtB,CAAA,CAEC,QAAA,CAAAtT,CAAAA,CAAO,QAAA,CACV,CAAA,CAEAf,KAAAyiB,QAAAA,CAAA,CACE,QAAA,CAAA,CAAA1iB,GAAAA,CAAC0hB,CAAAA,CAAA,CACC,OAAA,CAAU5Z,CAAAA,EAAyC,CACjDA,CAAAA,CAAM,eAAA,EAAgB,CACtBwM,CAAAA,EAAY,GAAA,CAAI,KAAK,EACvB,CAAA,CAEC,QAAA,CAAAtT,CAAAA,CAAO,WAAA,CACV,CAAA,CACAhB,GAAAA,CAAC0hB,CAAAA,CAAA,CACC,OAAA,CAAU5Z,CAAAA,EAAyC,CACjDA,CAAAA,CAAM,eAAA,EAAgB,CACtBwM,CAAAA,EAAY,GAAA,CAAI,QAAQ,EAC1B,CAAA,CAEC,QAAA,CAAAtT,CAAAA,CAAO,cAAA,CACV,CAAA,CAAA,CACF,CAAA,CAEJ,CAAA,CACE,IAAA,CACHuhB,CAAAA,EAAUR,CAAAA,CAAQ,MAAA,CAAS/hB,GAAAA,CAAC2hB,CAAAA,CAAA,EAAsB,CAAA,CAAK,IAAA,CACvDI,CAAAA,CAAQ,MAAA,CACP/hB,GAAAA,CAACyhB,CAAAA,CAAA,CACE,QAAA,CAAAM,CAAAA,CAAQ,GAAA,CAAKC,CAAAA,EAAW,CACvB,IAAMW,CAAAA,CAAOX,CAAAA,CAAO,IAAA,CACpB,OACE/hB,IAAAA,CAACyhB,CAAAA,CAAA,CAEC,QAAA,CAAUM,CAAAA,CAAO,QAAA,GAAWzb,CAAG,CAAA,CAC/B,OAAA,CAASyb,CAAAA,CAAO,OAAA,GAAY,aAAA,CAAgB,aAAA,CAAgB,MAAA,CAC5D,OAAA,CAAUla,CAAAA,EAAyC,CACjDA,CAAAA,CAAM,eAAA,EAAgB,CACjBka,CAAAA,CAAO,OAAA,CAAQzb,CAAG,EACzB,CAAA,CAEC,QAAA,CAAA,CAAAoc,CAAAA,CAAO3iB,GAAAA,CAAC2iB,CAAAA,CAAA,CAAK,WAAA,CAAU,cAAA,CAAe,CAAA,CAAK,IAAA,CAC3CC,GAAAA,CAAsBZ,CAAAA,CAAO,KAAA,CAAOzb,CAAG,CAAA,CAAA,CAAA,CATnCyb,CAAAA,CAAO,GAUd,CAEJ,CAAC,CAAA,CACH,CAAA,CACE,IAAA,CAAA,CACN,CAAA,CAAA,CACF,CAEJ,CACF,CCzJA,IAAMa,EAAAA,CAAkCC,CAAA,CAAA,IAAA,CACtC,IAAM,OAAO,6CAAiC,CAChD,CAAA,CAmEO,SAASC,EAAAA,CAAuB5F,CAAAA,CAAoB,CACzD,IAAM1d,CAAAA,CAAe0d,CAAAA,CAAG,UAAA,EAAc,EAAC,CACjC,CACJ,MAAA,CAAArY,CAAAA,CACA,WAAA,CAAAke,CAAAA,CACA,YAAA,CAAAzB,CAAAA,CACA,wBAAA,CAAA0B,CAAAA,CACA,mBAAA,CAAAzB,CAAAA,CACA,iBAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,iBAAA,CAAAwB,CAAAA,CACA,qBAAA,CAAAvB,CAAAA,CACA,mBAAA,CAAAC,CAAAA,CACA,UAAA,CAAAuB,CAAAA,CACA,eAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CAAAA,CACA,OAAA,CAAApe,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,CACF,CAAA,CAAIgY,CAAAA,CAEJ,OAAO,SAAiC,CACtC,KAAA,CAAAxZ,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,WAAA,CAAAjC,CAAAA,CACA,aAAA,CAAAC,CAAAA,CACA,iBAAA,CAAAkC,CAAAA,CACA,uBAAA,CAAAD,CAAAA,CACA,0BAAAjB,CAAAA,CACA,aAAA,CAAAnB,CAAAA,CACA,cAAA,CAAAD,CAAAA,CACA,QAAA,CAAAyC,CAAAA,CACA,gBAAA,CAAAd,CAAAA,CACA,gBAAA,CAAAd,CAAAA,CACA,cAAA,CAAAihB,CAAAA,CACA,gBAAA,CAAA/f,CAAAA,CACA,YAAA,CAAAD,CAAAA,CACA,cAAA,CAAAD,CAAAA,CACA,cAAA,CAAAI,CAAAA,CACA,eAAA,CAAAnB,CAAAA,CACA,sBAAA,CAAAK,CAAAA,CACA,OAAA,CAAAtB,CAAAA,CACA,uBAAA,CAAAE,EAAAA,CACA,wBAAA,CAAA2V,EAAAA,CACA,mBAAA,CAAApV,GACA,qBAAA,CAAAW,EAAAA,CACA,aAAA,CAAAnB,EAAAA,CACA,oBAAA,CAAAkB,EAAAA,CACA,oBAAA,CAAAD,EAAAA,CACA,OAAA,CAAAyB,EAAAA,CACA,eAAA,CAAAtB,CAAAA,CACA,mBAAA,CAAAN,EAAAA,CACA,MAAA,CAAApB,CAAAA,CACA,iBAAA,CAAA+C,EAAAA,CACA,cAAA,CAAAX,EAAAA,CACA,cAAA,CAAArB,EAAAA,CACA,0BAAA,CAAAC,EAAAA,CACA,wBAAA,CAAAC,EAAAA,CACA,wBAAA,CAAAC,EAAAA,CACA,uBAAA,CAAAC,EAAAA,CACA,UAAA,CAAAqB,EAAAA,CACA,oBAAAV,EAAAA,CACA,iBAAA,CAAAC,EAAAA,CACA,gBAAA,CAAAC,EAAAA,CACA,iBAAA,CAAAC,EAAAA,CACA,iBAAA,CAAAC,EAAAA,CACA,aAAA,CAAAL,EAAAA,CACA,KAAA,CAAAa,EACF,CAAA,CAAiC,CAC/B,IAAM6f,EAAAA,CAA8BT,CAAA,CAAA,MAAA,CAAgC,IAAI,CAAA,CAClE,CAACU,EAAAA,CAAwBC,EAAyB,CAAA,CAChDX,CAAA,CAAA,QAAA,CAAS,KAAK,CAAA,CAChBY,EAAAA,CACJjkB,CAAAA,CAAa,wBAAA,EAA4B,EAAA,CACrCkkB,EAAAA,CAAiBL,CAAAA,CAAe,MAAA,CACnCtB,CAAAA,EAAAA,CAAYA,CAAAA,CAAO,SAAA,EAAa,SAAA,IAAe,SAClD,CAAA,CACM4B,EAAAA,CAAkBN,CAAAA,CAAe,MAAA,CACpCtB,CAAAA,EAAWA,CAAAA,CAAO,SAAA,GAAc,UACnC,CAAA,CACM6B,EAAAA,CAAY9f,EAAAA,EAAmB,KAAA,EAAS,IAAA,CACxC+f,EAAAA,CAAa/f,EAAAA,EAAmB,MAAA,EAAU,IAAA,CAC1CggB,EAAAA,CAAchgB,EAAAA,EAAmB,OAAA,EAAW,IAAA,CAC5CigB,EAAAA,CAAsBjgB,EAAAA,EAAmB,eAAA,EAAmB,IAAA,CAC5DkgB,GAAclgB,EAAAA,EAAmB,OAAA,EAAW,IAAA,CAC5CmgB,EAAAA,CAAiBngB,EAAAA,EAAmB,UAAA,EAAc,IAAA,CAClDogB,EAAAA,CAAoBpgB,EAAAA,EAAmB,aAAA,EAAiB,IAAA,CACxDqgB,EAAAA,CAAkBP,EAAAA,EAAa,CAAA,EAAQlgB,CAAAA,EAAShC,CAAAA,CAAAA,CAChD0iB,EAAAA,CAAmBP,EAAAA,CACnBQ,EAAAA,CAA2BP,EAAAA,EAAeJ,EAAAA,CAAe,MAAA,CAAS,CAAA,CAClEY,EAAAA,CACJlhB,CAAAA,CAAe,MAAA,CAAS,CAAA,EAAKE,CAAAA,CAAiB,MAAA,CAAS,CAAA,CACnDihB,EAAAA,CACJP,EAAAA,GACC1iB,GAAwB,IAAA,CAAMwG,CAAAA,EAAWA,CAAAA,CAAO,OAAO,CAAA,EACtD,CAAA,EAAQpF,CAAAA,EAA0BL,CAAAA,CAAAA,EAClCR,EAAAA,EACAM,EAAAA,EACAL,EAAAA,EACAC,EAAAA,EACAE,EAAAA,EACAC,EAAAA,CAAAA,CACEsiB,EAAAA,CACJziB,EAAAA,EACAE,EAAAA,EACAC,EAAAA,CACIuiB,EAAAA,CAAsBpjB,EAAAA,CAAc,MAAA,CAAQqjB,CAAAA,EAChDC,EAAAA,CAAqBD,CAAAA,CAAO,KAAK,CACnC,CAAA,CACME,EAAAA,CAAsB,CAC1B,MAAA,CAAA/f,CAAAA,CACA,wBAAA,CAAAme,EACA,iBAAA,CAAAxB,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,iBAAA,CAAAwB,CAAAA,CACA,qBAAA,CAAAvB,CAAAA,CACA,UAAA,CAAAwB,CAAAA,CACA,eAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CACF,CAAA,CACMyB,EAAAA,CAA+BC,CAAAA,EACnC/kB,GAAAA,CAAO8iB,CAAA,CAAA,QAAA,CAAN,CAAe,QAAA,CAAU,IAAA,CACxB,QAAA,CAAA9iB,GAAAA,CAAC6iB,EAAAA,CAAA,CACC,SAAA,CAAWkC,CAAAA,CACX,EAAA,CAAIF,EAAAA,CACJ,MAAA,CAAQ7jB,CAAAA,CACR,mBAAA,CAAqBgB,EAAAA,CACrB,iBAAA,CAAmBC,EAAAA,CACnB,iBAAA,CAAmBC,EAAAA,CACnB,gBAAA,CAAkBC,EAAAA,CAClB,mBAAA,CAAqBL,EAAAA,CACrB,uBAAA,CAAyBP,EAAAA,CACzB,wBAAA,CAA0B2V,EAAAA,CAC1B,qBAAA,CAAuBzU,EAAAA,CACvB,aAAA,CAAeI,EAAAA,CACf,KAAA,CAAOa,EAAAA,CACP,mBAAA,CAAqBZ,EAAAA,CACrB,UAAA,CAAYU,EAAAA,CACZ,iBAAA,CAAmBT,EAAAA,CACnB,gBAAA,CAAkBC,EAAAA,CAClB,iBAAA,CAAmBC,EAAAA,CACnB,iBAAA,CAAmBC,EAAAA,CACnB,kBAAmBY,CAAAA,CACnB,yBAAA,CAA2BlB,CAAAA,CAC3B,mBAAA,CAAqB8hB,EAAAA,CACrB,oBAAA,CAAsBliB,EAAAA,CACtB,oBAAA,CAAsBD,EAAAA,CACxB,CAAA,CACF,CAAA,CAEIyiB,EAAAA,CAAmBthB,EAAAA,CACtB,iBAAA,EAAkB,CAClB,MAAA,CACEqE,CAAAA,EACC,CAACA,CAAAA,CAAO,EAAA,CAAG,UAAA,CAAW,IAAI,CAAA,EAC1BA,CAAAA,CAAO,WAAA,EACX,CAAA,CACIkd,EAAAA,CAAiBvhB,EAAAA,CAAM,QAAA,EAAS,CAAE,QAAA,CAAS,QAASwhB,CAAAA,EAAO,CAC/D,IAAMnd,CAAAA,CAASrE,EAAAA,CAAM,SAAA,CAAUwhB,CAAE,CAAA,CACjC,OAAOnd,CAAAA,CAAS,CAACA,CAAM,CAAA,CAAI,EAC7B,CAAC,CAAA,CACKod,EAAAA,CACJjB,EAAAA,EAAkB7hB,CAAAA,EAAoB,CAAA,CAAQc,CAAAA,CAC1CiiB,EAAAA,CACJpB,EAAAA,EAAuBJ,EAAAA,CAAgB,MAAA,CAAS,CAAA,CAC5CyB,EAAAA,CAA0BlB,EAAAA,EAAqB,CAAA,CAAQ1iB,CAAAA,CACvD6jB,EAAAA,CACJnB,IAAqB,CAAA,EAAQ3iB,CAAAA,EAAkBC,CAAAA,CAAAA,CAC3C8jB,EAAAA,CAAwBvkB,CAAAA,CAAO,YAAA,CAAaqC,CAAAA,CAAe,MAAM,CAAA,CAUvE,OARMyf,CAAA,CAAA,SAAA,CAAU,IAAM,CACfU,EAAAA,EAILD,EAAAA,CAAsB,OAAA,EAAS,KAAA,GACjC,CAAA,CAAG,CAACC,EAAsB,CAAC,CAAA,CAGzB,CAACY,EAAAA,EACD,CAACC,EAAAA,EACD,CAACC,EAAAA,EACD,CAACC,EAAAA,EACD,CAACC,EAAAA,EACD,CAACW,EAAAA,EACD,CAACC,EAAAA,EACD,CAACC,EAAAA,EACD,CAACC,EAAAA,CAEM,IAAA,CAIPrlB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,0BAAA,CACZ,QAAA,CAAA,CAAA4jB,EAAAA,GAAclgB,CAAAA,EAAShC,CAAAA,CAAAA,CACtB1B,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,qBAAA,CACZ,QAAA,CAAA,CAAA0D,CAAAA,CACC3D,GAAAA,CAAC,IAAA,CAAA,CACC,EAAA,CAAI4D,CAAAA,CACJ,SAAA,CAAU,sCAAA,CAET,QAAA,CAAAD,CAAAA,CACH,EACE,IAAA,CACHhC,CAAAA,CACC3B,GAAAA,CAAC,GAAA,CAAA,CACC,EAAA,CAAI4B,CAAAA,CACJ,SAAA,CAAW,CAAA,kBAAA,EAAqBnC,CAAAA,CAAa,SAAA,EAAa,YAAY,CAAA,CAAA,CAErE,QAAA,CAAAkC,CAAAA,CACH,CAAA,CACE,IAAA,CAAA,CACN,CAAA,CACE,IAAA,CAEJ1B,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,qBAAA,CACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,KAAA,CAAA,CACC,eAAA,CAAc,6BAAA,CACd,SAAA,CAAU,qHAAA,CAET,QAAA,CAAA,CAAA6jB,EAAAA,CACC7jB,IAAAA,CAAAyiB,QAAAA,CAAA,CACE,QAAA,CAAA,CAAA1iB,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,4DAAA,CACb,QAAA,CAAAC,IAAAA,CAACkjB,CAAAA,CAAA,CAAW,SAAA,CAAU,SAAA,CACpB,QAAA,CAAA,CAAAnjB,GAAAA,CAACqjB,CAAAA,CAAA,CACC,KAAA,CAAOvf,CAAAA,CACP,QAAA,CAAWgE,CAAAA,EAA+C,CACxDlF,CAAAA,CAA0BkF,CAAAA,CAAM,MAAA,CAAO,KAAK,EAC9C,CAAA,CACA,WAAA,CAAajE,CAAAA,CACf,CAAA,CACA7D,GAAAA,CAACojB,EAAA,CAAgB,KAAA,CAAM,cAAA,CAAe,aAAA,CAAY,MAAA,CAChD,QAAA,CAAApjB,GAAAA,CAACwlB,GAAAA,CAAA,EAAW,CAAA,CACd,CAAA,CACC1hB,CAAAA,CACC9D,GAAAA,CAACojB,CAAAA,CAAA,CAAgB,KAAA,CAAM,YAAA,CACrB,QAAA,CAAApjB,GAAAA,CAAC,QAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,SAAA,CAAW,CAAA,uGAAA,EAA0GP,CAAAA,CAAa,iBAAA,EAAqB,8BAA8B,CAAA,CAAA,CACrL,OAAA,CAAS,IAAM,CACbmD,CAAAA,CAA0B,EAAE,EAC9B,CAAA,CACA,YAAA,CAAY5B,CAAAA,CAAO,WAAA,CACnB,KAAA,CAAOA,CAAAA,CAAO,WAAA,CAEd,QAAA,CAAAhB,GAAAA,CAACoiB,GAAAA,CAAA,EAAM,CAAA,CACT,CAAA,CACF,CAAA,CACE,IAAA,CAAA,CACN,CAAA,CACF,CAAA,CACAniB,IAAAA,CAACgF,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAjF,GAAAA,CAACmF,CAAAA,CAAA,CAAe,OAAA,CAAO,IAAA,CACrB,QAAA,CAAAlF,IAAAA,CAAC6E,CAAAA,CAAA,CACC,KAAK,QAAA,CACL,OAAA,CACE0e,EAAAA,EAA0B1f,CAAAA,CACtB,WAAA,CACA,SAAA,CAEN,IAAA,CAAK,SAAA,CACL,YAAA,CAAY9C,CAAAA,CAAO,WAAA,CACnB,cAAA,CAAcwiB,EAAAA,CACd,SAAA,CAAW,CAAA,wCAAA,EAA2CE,EAAiC,CAAA,CAAA,EAAIjkB,CAAAA,CAAa,kBAAA,EAAsB,EAAE,CAAA,CAAA,CAChI,OAAA,CAAS,IAAM,CACbgkB,EAAAA,CAA2B5c,CAAAA,EAAY,CAACA,CAAO,EACjD,CAAA,CAEA,QAAA,CAAA,CAAA7G,GAAAA,CAACwlB,IAAA,EAAW,CAAA,CACZxlB,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,SAAA,CAAW,QAAA,CAAAgB,CAAAA,CAAO,WAAA,CAAY,CAAA,CAAA,CAChD,CAAA,CACF,CAAA,CACAhB,GAAAA,CAACkF,CAAAA,CAAA,CAAgB,QAAA,CAAAlE,CAAAA,CAAO,WAAA,CAAY,CAAA,CAAA,CACtC,CAAA,CAAA,CACF,CAAA,CACE,IAAA,CAEH+iB,EAAAA,CACC/jB,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,kCAAA,CACZ,QAAA,CAAA2jB,EAAAA,CAAe,GAAA,CAAK3B,CAAAA,EAAW,CAC9B,IAAMyD,CAAAA,CACJ,CAACzD,CAAAA,CAAO,QAAA,EAAY,CAAA,CAAQA,CAAAA,CAAO,IAAA,CAC/B0D,CAAAA,CACJzlB,IAAAA,CAAC6E,CAAAA,CAAA,CAEC,IAAA,CAAK,QAAA,CACL,SAAA,CACE2gB,CAAAA,CACI,CAAA,8GAAA,EAAiH/B,EAAiC,CAAA,CAAA,CAClJ1B,CAAAA,CAAO,QAAA,CACL,CAAA,+CAAA,EAAkD0B,EAAiC,CAAA,CAAA,CACnF,2EAAA,CAER,OAAA,CAAS1B,CAAAA,CAAO,OAAA,EAAW,SAAA,CAC3B,IAAA,CAAMA,CAAAA,CAAO,QAAA,CAAW,MAAA,CAAS,SAAA,CACjC,OAAA,CAAS,IAAM,CACRA,CAAAA,CAAO,OAAA,CAAQ,CAClB,IAAA,CAAM3gB,CAAAA,CACN,cAAA,CAAA+B,EACF,CAAC,EACH,CAAA,CACA,QAAA,CAAU4e,CAAAA,CAAO,QAAA,CACjB,YAAA,CAAYA,CAAAA,CAAO,KAAA,CACnB,KAAA,CAAOA,CAAAA,CAAO,QAAA,CAAW,MAAA,CAAYA,CAAAA,CAAO,KAAA,CAE3C,QAAA,CAAA,CAAAA,CAAAA,CAAO,IAAA,CAAOhiB,GAAAA,CAACgiB,CAAAA,CAAO,IAAA,CAAP,EAAY,CAAA,CAAK,IAAA,CAChCA,CAAAA,CAAO,QAAA,CACNhiB,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,SAAA,CAAW,QAAA,CAAAgiB,CAAAA,CAAO,KAAA,CAAM,CAAA,CACtCyD,CAAAA,CACFzlB,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,uCAAA,CACb,QAAA,CAAAgiB,CAAAA,CAAO,KAAA,CACV,CAAA,CAEAhiB,GAAAA,CAAC,MAAA,CAAA,CAAM,QAAA,CAAAgiB,CAAAA,CAAO,KAAA,CAAM,CAAA,CAAA,CAAA,CA7BjBA,CAAAA,CAAO,GA+Bd,CAAA,CAGF,OAAOA,CAAAA,CAAO,QAAA,CACZ/hB,IAAAA,CAACgF,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAjF,GAAAA,CAACmF,CAAAA,CAAA,CAAe,OAAA,CAAO,IAAA,CAAE,QAAA,CAAAugB,CAAAA,CAAO,CAAA,CAChC1lB,GAAAA,CAACkF,CAAAA,CAAA,CAAgB,QAAA,CAAA8c,CAAAA,CAAO,KAAA,CAAM,CAAA,CAAA,CAAA,CAFlBA,CAAAA,CAAO,GAGrB,CAAA,CAEA0D,CAEJ,CAAC,CAAA,CACH,CAAA,CACE,IAAA,CAEHJ,EAAAA,CACCtlB,GAAAA,CAAC,KAAA,CAAA,CACC,eAAA,CAAc,oCACd,SAAA,CAAU,kEAAA,CAET,QAAA,CAAAwB,CAAAA,EAAkBC,CAAAA,CACrB,CAAA,CACE,IAAA,CAEJzB,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,MAAA,CAAO,aAAA,CAAY,MAAA,CAAO,CAAA,CAEzCC,IAAAA,CAAC,KAAA,CAAA,CACC,eAAA,CAAc,iCAAA,CACd,SAAA,CAAU,kCAAA,CAET,QAAA,CAAA,CAAAoD,CAAAA,CAAe,MAAA,CACdrD,GAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAW,CAAA,6CAAA,EAAgDP,CAAAA,CAAa,SAAA,EAAa,YAAY,CAAA,CAAA,CAEhG,QAAA,CAAA8lB,EAAAA,CACH,CAAA,CACE,IAAA,CACHliB,CAAAA,CAAe,MAAA,CACZE,CAAAA,CAAiB,GAAA,CAAKye,CAAAA,EAAW,CAC/B,IAAMW,CAAAA,CAAOX,CAAAA,CAAO,IAAA,CACd2D,CAAAA,CAAU,CACd,IAAA,CAAMriB,CAAAA,CACN,MAAA,CAAQD,CACV,CAAA,CACMuiB,EAAAA,CACJ,OAAO5D,CAAAA,CAAO,QAAA,EAAa,UAAA,CACvBA,CAAAA,CAAO,QAAA,CAAS1e,CAAAA,CAAcqiB,CAAO,CAAA,CACrC3D,CAAAA,CAAO,QAAA,CAEb,OACE/hB,IAAAA,CAACgF,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAjF,GAAAA,CAACmF,CAAAA,CAAA,CAAe,OAAA,CAAO,IAAA,CACrB,QAAA,CAAAlF,IAAAA,CAAC6E,CAAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,OAAA,CAASkd,CAAAA,CAAO,OAAA,EAAW,WAAA,CAC3B,IAAA,CAAK,SAAA,CACL,SAAA,CAAW0B,EAAAA,CACX,QAAA,CAAUkC,EAAAA,CACV,OAAA,CAAS,IAAM,CACR5D,CAAAA,CAAO,OAAA,CAAQ2D,CAAO,EAC7B,EACA,YAAA,CAAY3D,CAAAA,CAAO,KAAA,CAElB,QAAA,CAAA,CAAAW,CAAAA,CAAO3iB,GAAAA,CAAC2iB,CAAAA,CAAA,EAAK,CAAA,CAAK,IAAA,CACnB3iB,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,SAAA,CAAW,QAAA,CAAAgiB,CAAAA,CAAO,KAAA,CAAM,CAAA,CAAA,CAC1C,CAAA,CACF,CAAA,CACAhiB,GAAAA,CAACkF,CAAAA,CAAA,CAAgB,QAAA,CAAA8c,CAAAA,CAAO,KAAA,CAAM,CAAA,CAAA,CAAA,CAjBlBA,CAAAA,CAAO,GAkBrB,CAEJ,CAAC,CAAA,CACD,KAEHwC,EAAAA,CACCvkB,IAAAA,CAACshB,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAvhB,GAAAA,CAAC4hB,CAAAA,CAAA,CAAoB,OAAA,CAAO,IAAA,CAC1B,QAAA,CAAA3hB,IAAAA,CAAC6E,CAAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,OAAA,CAAQ,SAAA,CACR,IAAA,CAAK,SAAA,CACL,YAAA,CAAY9D,CAAAA,CAAO,YAAA,CACnB,SAAA,CAAW,CAAA,EAAG0iB,EAAiC,CAAA,CAAA,EAAIjkB,CAAAA,CAAa,kBAAA,EAAsB,EAAE,CAAA,CAAA,CACxF,KAAA,CAAOuB,CAAAA,CAAO,YAAA,CAEd,QAAA,CAAA,CAAAhB,GAAAA,CAAC6lB,GAAAA,CAAA,EAA0B,CAAA,CAC3B7lB,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,SAAA,CAAW,QAAA,CAAAgB,CAAAA,CAAO,YAAA,CAAa,CAAA,CAAA,CACjD,CAAA,CACF,CAAA,CACAf,IAAAA,CAACuhB,CAAAA,CAAA,CAAoB,KAAA,CAAM,KAAA,CAAM,SAAA,CAAU,MAAA,CACzC,QAAA,CAAA,CAAAxhB,GAAAA,CAACkjB,CAAAA,CAAA,CAAmB,QAAA,CAAAliB,CAAAA,CAAO,YAAA,CAAa,CAAA,CACxChB,IAACyhB,CAAAA,CAAA,CACE,QAAA,CAAA9e,CAAAA,EAA0BL,CAAAA,CACzBtC,GAAAA,CAACijB,CAAAA,CAAA,CACC,OAAA,CAASxf,CAAAA,CACT,eAAA,CACEoE,CAAAA,EACG,CACHlF,CAAAA,CAAuBkF,CAAAA,GAAY,IAAI,EACzC,CAAA,CAEC,QAAA,CAAA7G,CAAAA,CAAO,cAAA,CAAesB,CAAe,CAAA,CACxC,CAAA,CACE,IAAA,CACN,CAAA,CACCF,EAAAA,CACCnC,IAAAA,CAAAyiB,QAAAA,CAAA,CACE,QAAA,CAAA,CAAA1iB,GAAAA,CAAC2hB,CAAAA,CAAA,EAAsB,CAAA,CACvB3hB,GAAAA,CAACkjB,CAAAA,CAAA,CAAmB,QAAA,CAAAliB,CAAAA,CAAO,OAAA,CAAQ,CAAA,CACnChB,GAAAA,CAACyhB,CAAAA,CAAA,CAEG,QAAA,CAAA,CACE,CAAC,SAAA,CAAWzgB,CAAAA,CAAO,cAAc,CAAA,CACjC,CAAC,aAAA,CAAeA,CAAAA,CAAO,kBAAkB,CAAA,CACzC,CAAC,UAAA,CAAYA,CAAAA,CAAO,eAAe,CACrC,CAAA,CACA,GAAA,CAAI,CAAC,CAAC2Y,CAAAA,CAAarV,CAAK,CAAA,GACxBtE,GAAAA,CAACijB,CAAAA,CAAA,CAEC,OAAA,CAASjf,EAAAA,GAAY2V,CAAAA,CACrB,eAAA,CAAiB,IAAM,CACrBjX,CAAAA,CAAgBiX,CAAW,EAC7B,CAAA,CAEC,QAAA,CAAArV,CAAAA,CAAAA,CANIqV,CAOP,CACD,CAAA,CACH,CAAA,CAAA,CACF,CAAA,CACE,IAAA,CACH8K,EAAAA,CACGK,EAAAA,CAA4B,MAAM,CAAA,CAClC,IAAA,CACH,CAAC9iB,EAAAA,EACFT,EAAAA,CAAwB,IAAA,CAAMwG,CAAAA,EAAWA,CAAAA,CAAO,OAAO,CAAA,CACrD9H,IAAAA,CAAAyiB,QAAAA,CAAA,CACE,QAAA,CAAA,CAAA1iB,GAAAA,CAAC2hB,CAAAA,CAAA,EAAsB,CAAA,CACvB3hB,GAAAA,CAACkjB,CAAAA,CAAA,CAAmB,QAAA,CAAAliB,CAAAA,CAAO,OAAA,CAAQ,CAAA,CACnChB,GAAAA,CAACyhB,CAAAA,CAAA,CACE,QAAA,CAAAlgB,EAAAA,CACE,MAAA,CAAQwG,CAAAA,EAAWA,CAAAA,CAAO,OAAO,CAAA,CACjC,GAAA,CAAKA,CAAAA,EACJ/H,IAACijB,CAAAA,CAAA,CAEC,OAAA,CAASlb,CAAAA,CAAO,OAAA,CAChB,eAAA,CACEF,CAAAA,EACG,CACHqP,EAAAA,GACEnP,CAAAA,CAAO,EAAA,CACPF,CAAAA,GAAY,IACd,EACF,CAAA,CAEC,QAAA,CAAAE,CAAAA,CAAO,KAAA,CAAA,CAXHA,CAAAA,CAAO,EAYd,CACD,CAAA,CACL,CAAA,CAAA,CACF,CAAA,CACE,IAAA,CACHjG,EAAAA,EAAuB,CAACE,EAAAA,CACvB/B,IAAAA,CAAAyiB,QAAAA,CAAA,CACE,QAAA,CAAA,CAAA1iB,IAAC2hB,CAAAA,CAAA,EAAsB,CAAA,CACvB1hB,IAAAA,CAACijB,CAAAA,CAAA,CACE,QAAA,CAAA,CAAAliB,CAAAA,CAAO,OAAA,CAAQ,KAAA,CAAIA,CAAAA,CAAO,QAAA,CAAA,CAC7B,CAAA,CACAhB,GAAAA,CAACyhB,CAAAA,CAAA,CACE,QAAA,CAAAlgB,EAAAA,CAAwB,GAAA,CAAKwG,CAAAA,EAC5B9H,IAAAA,CAACyhB,CAAAA,CAAA,CAEC,QAAA,CAAW5Z,CAAAA,EAAiB,CAC1BA,CAAAA,CAAM,cAAA,GACR,CAAA,CAEA,QAAA,CAAA,CAAA9H,GAAAA,CAAC,QAAK,SAAA,CAAU,yBAAA,CACb,QAAA,CAAA+H,CAAAA,CAAO,KAAA,CACV,CAAA,CACA/H,GAAAA,CAAC,QAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,SAAA,CAAU,cAAA,CACV,YAAA,CAAY,CAAA,EAAGgB,CAAAA,CAAO,OAAO,CAAA,EAAA,EAAK+G,CAAAA,CAAO,KAAK,CAAA,CAAA,CAC9C,OAAA,CAAUD,CAAAA,EAAU,CAClBA,CAAAA,CAAM,eAAA,EAAgB,CACtBrF,EAAAA,CAAsBsF,CAAAA,CAAO,EAAA,CAAI,MAAM,EACzC,CAAA,CACD,QAAA,CAAA,GAAA,CAED,CAAA,CACA/H,GAAAA,CAAC,QAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,SAAA,CAAU,cAAA,CACV,YAAA,CAAY,CAAA,EAAGgB,CAAAA,CAAO,QAAQ,CAAA,EAAA,EAAK+G,CAAAA,CAAO,KAAK,CAAA,CAAA,CAC/C,OAAA,CAAUD,CAAAA,EAAU,CAClBA,CAAAA,CAAM,eAAA,EAAgB,CACtBrF,EAAAA,CAAsBsF,CAAAA,CAAO,EAAA,CAAI,OAAO,EAC1C,CAAA,CACD,QAAA,CAAA,GAAA,CAED,CAAA,CACA/H,GAAAA,CAAC,QAAA,CAAA,CACC,KAAK,QAAA,CACL,SAAA,CAAU,cAAA,CACV,YAAA,CAAY,CAAA,EAAGgB,CAAAA,CAAO,KAAK,CAAA,EAAA,EAAK+G,CAAAA,CAAO,KAAK,CAAA,CAAA,CAC5C,OAAA,CAAUD,CAAAA,EAAU,CAClBA,CAAAA,CAAM,eAAA,EAAgB,CACtBrF,EAAAA,CAAsBsF,CAAAA,CAAO,EAAA,CAAI,KAAK,EACxC,CAAA,CACD,QAAA,CAAA,GAAA,CAED,CAAA,CAAA,CAAA,CAxCK,CAAA,IAAA,EAAOA,CAAAA,CAAO,EAAE,CAAA,CAyCvB,CACD,CAAA,CACH,CAAA,CAAA,CACF,CAAA,CACE,IAAA,CACHhG,EAAAA,EAAkBijB,EAAAA,CAAiB,MAAA,CAClC/kB,IAAAA,CAAAyiB,QAAAA,CAAA,CACE,QAAA,CAAA,CAAA1iB,GAAAA,CAAC2hB,CAAAA,CAAA,EAAsB,CAAA,CACvB3hB,GAAAA,CAACkjB,CAAAA,CAAA,CAAmB,QAAA,CAAAliB,CAAAA,CAAO,QAAA,CAAS,CAAA,CACpChB,GAAAA,CAACyhB,CAAAA,CAAA,CACE,QAAA,CAAAuD,EAAAA,CAAiB,GAAA,CAAKjd,CAAAA,EAAW,CAChC,IAAMrD,CAAAA,CACJ,OAAOqD,CAAAA,CAAO,UAAU,MAAA,EAAW,QAAA,CAC/BA,CAAAA,CAAO,SAAA,CAAU,MAAA,CACjBA,CAAAA,CAAO,EAAA,CACP+d,CAAAA,CAAY/d,CAAAA,CAAO,YAAA,EAAa,CACtC,OACE/H,GAAAA,CAACijB,CAAAA,CAAA,CAEC,OAAA,CAAS6C,CAAAA,CACT,eAAA,CAAiB,IAAM,CACrB/d,CAAAA,CAAO,cAAA,GACT,CAAA,CAEC,QAAA,CAAA+d,CAAAA,CACG9kB,CAAAA,CAAO,OAAA,CAAQ0D,CAAW,CAAA,CAC1B1D,CAAAA,CAAO,OAAA,CAAQ0D,CAAW,CAAA,CAAA,CARzB,CAAA,MAAA,EAASqD,CAAAA,CAAO,EAAE,CAAA,CASzB,CAEJ,CAAC,CAAA,CACH,CAAA,CAAA,CACF,CAAA,CACE,IAAA,CAAA,CACN,CAAA,CAAA,CACF,CAAA,CACE,IAAA,CAEHmc,EAAAA,EAAkB7hB,CAAAA,EAAoBc,CAAAA,CACrClD,IAAAA,CAAC+iB,CAAAA,CAAA,CACC,QAAA,CAAA,CAAA/iB,IAAAA,CAACgF,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAjF,GAAAA,CAACmF,CAAAA,CAAA,CAAe,OAAA,CAAO,IAAA,CACrB,QAAA,CAAAlF,KAAC6E,CAAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,OAAA,CAASb,CAAAA,GAAa,OAAA,CAAU,SAAA,CAAY,SAAA,CAC5C,cAAA,CAAcA,CAAAA,GAAa,OAAA,CAC3B,SAAA,CACEA,CAAAA,GAAa,OAAA,CACTyf,EAAAA,CACA,CAAA,EAAGA,EAAiC,CAAA,CAAA,EAAIjkB,CAAAA,CAAa,kBAAA,EAAsB,EAAE,CAAA,CAAA,CAEnF,IAAA,CAAK,SAAA,CACL,OAAA,CAAS,IAAM,CACb0D,CAAAA,CAAiB,OAAO,EAC1B,CAAA,CAEA,UAAAnD,GAAAA,CAAC+lB,GAAAA,CAAA,EAAS,CAAA,CACV/lB,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,SAAA,CACb,QAAA,CAAAgB,CAAAA,CAAO,iBAAA,EACNoD,EAAAA,CAA0B,iBAAA,CAC9B,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CACApE,GAAAA,CAACkF,CAAAA,CAAA,CACE,QAAA,CAAAlE,CAAAA,CAAO,SAAA,EACNoD,EAAAA,CAA0B,SAAA,CAC9B,CAAA,CAAA,CACF,CAAA,CACAnE,IAAAA,CAACgF,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAjF,GAAAA,CAACmF,CAAAA,CAAA,CAAe,OAAA,CAAO,IAAA,CACrB,QAAA,CAAAlF,IAAAA,CAAC6E,CAAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,OAAA,CAASb,CAAAA,GAAa,MAAA,CAAS,SAAA,CAAY,SAAA,CAC3C,cAAA,CAAcA,CAAAA,GAAa,MAAA,CAC3B,SAAA,CACEA,CAAAA,GAAa,OAAA,CACT,CAAA,EAAGyf,EAAiC,CAAA,CAAA,EAAIjkB,CAAAA,CAAa,kBAAA,EAAsB,EAAE,CAAA,CAAA,CAC7EikB,EAAAA,CAEN,IAAA,CAAK,SAAA,CACL,OAAA,CAAS,IAAM,CACbvgB,CAAAA,CAAiB,MAAM,EACzB,CAAA,CAEA,QAAA,CAAA,CAAAnD,GAAAA,CAACgmB,GAAAA,CAAA,EAAe,CAAA,CAChBhmB,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,SAAA,CACb,QAAA,CAAAgB,CAAAA,CAAO,gBAAA,EACNoD,EAAAA,CAA0B,gBAAA,CAC9B,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CACApE,GAAAA,CAACkF,CAAAA,CAAA,CACE,QAAA,CAAAlE,CAAAA,CAAO,QAAA,EACNoD,EAAAA,CAA0B,QAAA,CAC9B,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACE,KAEH4f,EAAAA,CACGJ,EAAAA,CAAgB,GAAA,CAAK5B,CAAAA,EAAW,CAC9B,IAAMyD,CAAAA,CACJ,CAACzD,CAAAA,CAAO,QAAA,EAAY,CAAA,CAAQA,CAAAA,CAAO,IAAA,CAC/B0D,CAAAA,CACJzlB,IAAAA,CAAC6E,CAAAA,CAAA,CAEC,IAAA,CAAK,QAAA,CACL,OAAA,CAASkd,CAAAA,CAAO,OAAA,EAAW,SAAA,CAC3B,IAAA,CAAMA,CAAAA,CAAO,QAAA,CAAW,SAAA,CAAY,SAAA,CACpC,OAAA,CAAS,IAAM,CACRA,CAAAA,CAAO,OAAA,CAAQ,CAClB,IAAA,CAAM3gB,CAAAA,CACN,cAAA,CAAA+B,EACF,CAAC,EACH,CAAA,CACA,QAAA,CAAU4e,CAAAA,CAAO,QAAA,CACjB,YAAA,CAAYA,CAAAA,CAAO,KAAA,CACnB,KAAA,CAAOA,CAAAA,CAAO,QAAA,CAAW,MAAA,CAAYA,CAAAA,CAAO,KAAA,CAC5C,SAAA,CAAW,CAAA,gBAAA,EAAmBA,CAAAA,CAAO,QAAA,CAAW,EAAA,CAAK,CAAA,EAAGyD,CAAAA,CAAkB,qCAAA,CAAwC,EAAE,CAAA,0DAAA,CAA4D,CAAA,CAAA,EAAIzD,EAAO,QAAA,EAAYyD,CAAAA,CAAkB/B,EAAAA,CAAoC,EAAE,CAAA,CAAA,EAAIjkB,CAAAA,CAAa,kBAAA,EAAsB,EAAE,CAAA,CAAA,CAEvS,QAAA,CAAA,CAAAuiB,CAAAA,CAAO,IAAA,CACNhiB,GAAAA,CAACgiB,CAAAA,CAAO,IAAA,CAAP,CACC,WAAA,CACEA,CAAAA,CAAO,QAAA,CAAW,MAAA,CAAY,cAAA,CAElC,CAAA,CACE,IAAA,CACHA,CAAAA,CAAO,QAAA,CACNhiB,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,SAAA,CAAW,QAAA,CAAAgiB,CAAAA,CAAO,KAAA,CAAM,CAAA,CACtCyD,CAAAA,CACFzlB,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,uCAAA,CACb,QAAA,CAAAgiB,CAAAA,CAAO,KAAA,CACV,CAAA,CAEAhiB,GAAAA,CAAC,MAAA,CAAA,CAAM,QAAA,CAAAgiB,CAAAA,CAAO,KAAA,CAAM,CAAA,CAAA,CAAA,CA7BjBA,CAAAA,CAAO,GA+Bd,CAAA,CAGF,OAAOA,CAAAA,CAAO,QAAA,CACZ/hB,IAAAA,CAACgF,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAjF,GAAAA,CAACmF,CAAAA,CAAA,CAAe,OAAA,CAAO,IAAA,CAAE,QAAA,CAAAugB,EAAO,CAAA,CAChC1lB,GAAAA,CAACkF,CAAAA,CAAA,CAAgB,QAAA,CAAA8c,CAAAA,CAAO,KAAA,CAAM,CAAA,CAAA,CAAA,CAFlBA,CAAAA,CAAO,GAGrB,CAAA,CAEA0D,CAEJ,CAAC,CAAA,CACD,IAAA,CAAA,CACN,CAAA,CAAA,CACF,CAAA,CAEC5B,EAAAA,EAAcN,EAAAA,CACbxjB,GAAAA,CAAC,KAAA,CAAA,CACC,eAAA,CAAc,mCAAA,CACd,SAAA,CAAU,wCAAA,CAEV,QAAA,CAAAC,IAAAA,CAACkjB,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAnjB,GAAAA,CAACqjB,CAAAA,CAAA,CACC,GAAA,CAAKE,EAAAA,CACL,KAAA,CAAOzf,CAAAA,CACP,QAAA,CAAWgE,CAAAA,EAA+C,CACxDlF,CAAAA,CAA0BkF,CAAAA,CAAM,MAAA,CAAO,KAAK,EAC9C,CAAA,CACA,WAAA,CAAajE,CAAAA,CACf,CAAA,CACA7D,GAAAA,CAACojB,CAAAA,CAAA,CAAgB,KAAA,CAAM,cAAA,CAAe,aAAA,CAAY,MAAA,CAChD,QAAA,CAAApjB,GAAAA,CAACwlB,GAAAA,CAAA,EAAW,CAAA,CACd,CAAA,CACC1hB,CAAAA,CACC9D,GAAAA,CAACojB,CAAAA,CAAA,CAAgB,KAAA,CAAM,YAAA,CACrB,QAAA,CAAApjB,GAAAA,CAAC,QAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,SAAA,CAAW,CAAA,uGAAA,EAA0GP,CAAAA,CAAa,iBAAA,EAAqB,8BAA8B,CAAA,CAAA,CACrL,OAAA,CAAS,IAAM,CACbmD,CAAAA,CAA0B,EAAE,EAC9B,CAAA,CACA,YAAA,CAAY5B,CAAAA,CAAO,WAAA,CACnB,KAAA,CAAOA,CAAAA,CAAO,WAAA,CAEd,QAAA,CAAAhB,GAAAA,CAACoiB,GAAAA,CAAA,EAAM,CAAA,CACT,CAAA,CACF,CAAA,CACE,IAAA,CAAA,CACN,CAAA,CACF,CAAA,CACE,IAAA,CAEH9gB,EAAAA,CAAc,MAAA,CACbrB,IAAAA,CAAC,KAAA,CAAA,CACC,eAAA,CAAc,4BAAA,CACd,SAAA,CAAU,2CAAA,CAET,QAAA,CAAA,CAAAqB,EAAAA,CAAc,GAAA,CAAKqjB,CAAAA,EAClB3kB,GAAAA,CAACimB,CAAAA,CAAA,CAEC,MAAA,CAAQtB,CAAAA,CACR,MAAA,CAAQ3jB,CAAAA,CACR,oBAAA,CAAsBwB,EAAAA,CAAAA,CAHjBmiB,CAAAA,CAAO,EAId,CACD,CAAA,CACArjB,EAAAA,CAAc,IAAA,CAAMqjB,GACnBC,EAAAA,CAAqBD,CAAAA,CAAO,KAAK,CACnC,CAAA,CACE3kB,GAAAA,CAAC8E,CAAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,OAAA,CAAQ,OAAA,CACR,IAAA,CAAK,IAAA,CACL,OAAA,CAASvC,EAAAA,CAER,QAAA,CAAAvB,CAAAA,CAAO,YAAA,CACV,CAAA,CACE,IAAA,CAAA,CACN,CAAA,CACE,IAAA,CAEHiB,EAAAA,CACG6iB,EAAAA,CAA4B,OAAO,CAAA,CACnC,IAAA,CAEH/iB,EAAAA,EAAkBkjB,EAAAA,CAAe,MAAA,CAChChlB,IAAAA,CAAC,KAAA,CAAA,CACC,eAAA,CAAc,yBAAA,CACd,YAAA,CAAYe,CAAAA,CAAO,QAAA,CACnB,SAAA,CAAU,mCAAA,CAEV,QAAA,CAAA,CAAAf,IAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,oBAAA,CAAsB,QAAA,CAAA,CAAAe,CAAAA,CAAO,QAAA,CAAS,GAAA,CAAA,CAAC,CAAA,CACtDikB,EAAAA,CAAe,GAAA,CAAI,CAACld,CAAAA,CAAQme,CAAAA,GAAkB,CAC7C,IAAMxhB,CAAAA,CACJ,OAAOqD,CAAAA,CAAO,SAAA,CAAU,MAAA,EAAW,QAAA,CAC/BA,CAAAA,CAAO,UAAU,MAAA,CACjBA,CAAAA,CAAO,EAAA,CACPoe,EAAAA,CAAgBC,EAAAA,EAAsB,CAC1C,IAAMC,CAAAA,CAAe,CAAC,GAAG3iB,EAAAA,CAAM,QAAA,EAAS,CAAE,QAAQ,CAAA,CAC5C,CAAC4iB,EAAU,CAAA,CAAID,CAAAA,CAAa,MAAA,CAAOH,CAAAA,CAAe,CAAC,CAAA,CACrDI,EAAAA,GAAe,MAAA,GACnBD,CAAAA,CAAa,MAAA,CAAOD,EAAAA,CAAW,CAAA,CAAGE,EAAU,CAAA,CAC5C5iB,EAAAA,CAAM,WAAA,CAAY2iB,CAAY,CAAA,EAChC,CAAA,CACA,OACEpmB,IAAAA,CAAC,KAAA,CAAA,CAEC,SAAA,CAAU,4CAAA,CAEV,QAAA,CAAA,CAAAD,GAAAA,CAAC8E,CAAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,OAAA,CAAQ,OAAA,CACR,IAAA,CAAK,IAAA,CACL,QAAA,CAAUohB,CAAAA,GAAkB,CAAA,CAC5B,OAAA,CAAS,IAAMC,EAAAA,CAAaD,CAAAA,CAAgB,CAAC,CAAA,CAC7C,YAAA,CAAYllB,CAAAA,CAAO,mBAAA,CAAoB0D,CAAW,EAElD,QAAA,CAAA1E,GAAAA,CAAC,MAAA,CAAA,CAAK,aAAA,CAAY,MAAA,CAAO,QAAA,CAAA,QAAA,CAAC,CAAA,CAC5B,CAAA,CACAC,IAAAA,CAAC6E,CAAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,OAAA,CAAQ,WAAA,CACR,IAAA,CAAK,IAAA,CACL,OAAA,CAAS,IAAMiD,CAAAA,CAAO,cAAA,EAAe,CACrC,YAAA,CAAY/G,CAAAA,CAAO,cAAA,CAAe0D,CAAW,CAAA,CAE5C,QAAA,CAAA,CAAAA,CAAAA,CAAY,GAAA,CAAC1E,GAAAA,CAAC,MAAA,CAAA,CAAK,cAAY,MAAA,CAAO,QAAA,CAAA,MAAA,CAAC,CAAA,CAAA,CAC1C,CAAA,CACAA,GAAAA,CAAC8E,CAAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,OAAA,CAAQ,OAAA,CACR,IAAA,CAAK,IAAA,CACL,QAAA,CAAUohB,CAAAA,GAAkBjB,EAAAA,CAAe,MAAA,CAAS,CAAA,CACpD,OAAA,CAAS,IAAMkB,EAAAA,CAAaD,CAAAA,CAAgB,CAAC,CAAA,CAC7C,YAAA,CAAYllB,CAAAA,CAAO,iBAAA,CAAkB0D,CAAW,CAAA,CAEhD,QAAA,CAAA1E,GAAAA,CAAC,MAAA,CAAA,CAAK,cAAY,MAAA,CAAO,QAAA,CAAA,QAAA,CAAC,CAAA,CAC5B,CAAA,CAAA,CAAA,CA/BK,CAAA,aAAA,EAAgB+H,CAAAA,CAAO,EAAE,CAAA,CAgChC,CAEJ,CAAC,CAAA,CAAA,CACH,CAAA,CACE,IAAA,CAAA,CAEN,CAAA,CAECoc,EAAAA,EAAqB1iB,CAAAA,CACpBzB,GAAAA,CAAC,KAAA,CAAA,CACC,eAAA,CAAc,mCAAA,CACd,SAAA,CAAU,kEAAA,CAET,QAAA,CAAAyB,CAAAA,CACH,CAAA,CACE,IAAA,CAAA,CACN,CAEJ,CAAA,CAEA,SAASwkB,CAAAA,CAA2B,CAClC,MAAA,CAAAtB,CAAAA,CACA,MAAA,CAAA3jB,CAAAA,CACA,oBAAA,CAAAwB,CACF,CAAA,CAIG,CACD,GAAM,CAAC+jB,CAAAA,CAAYC,CAAa,CAAA,CAAU1D,CAAA,CAAA,QAAA,CAAS,EAAE,CAAA,CACrD,GAAI6B,CAAAA,CAAO,IAAA,GAAS,MAAA,CAClB,OACE1kB,IAAAA,CAACkjB,CAAAA,CAAA,CAAW,SAAA,CAAU,mBAAA,CACpB,QAAA,CAAA,CAAAnjB,GAAAA,CAACqjB,CAAAA,CAAA,CACC,KAAA,CAAO,OAAOsB,CAAAA,CAAO,OAAU,QAAA,CAAWA,CAAAA,CAAO,KAAA,CAAQ,EAAA,CACzD,QAAA,CAAW7c,CAAAA,EAA+C,CACxDtF,CAAAA,CAAqBmiB,CAAAA,CAAO,EAAA,CAAI7c,CAAAA,CAAM,MAAA,CAAO,KAAK,EACpD,CAAA,CACA,WAAA,CAAa6c,CAAAA,CAAO,WAAA,EAAeA,CAAAA,CAAO,KAAA,CAC1C,YAAA,CAAY,CAAA,EAAG3jB,CAAAA,CAAO,OAAO,CAAA,EAAA,EAAK2jB,CAAAA,CAAO,KAAK,CAAA,CAAA,CAChD,CAAA,CACA3kB,GAAAA,CAACojB,CAAAA,CAAA,CAAgB,KAAA,CAAM,cAAA,CAAe,aAAA,CAAY,MAAA,CAChD,QAAA,CAAApjB,GAAAA,CAACwlB,GAAAA,CAAA,EAAW,CAAA,CACd,CAAA,CAAA,CACF,CAAA,CAIJ,GAAIb,CAAAA,CAAO,IAAA,GAAS,aAAA,EAAiBA,CAAAA,CAAO,IAAA,GAAS,WAAA,CAAa,CAChE,IAAM8B,CAAAA,CAAQC,EAAAA,CAA2B/B,CAAAA,CAAO,KAAK,CAAA,CAC/CgC,CAAAA,CAAYhC,CAAAA,CAAO,IAAA,GAAS,aAAA,CAAgB,QAAA,CAAW,MAAA,CACvDiC,CAAAA,CACJ5lB,EAAO,UAAA,EAAcoD,EAAAA,CAA0B,UAAA,CAC3CyiB,CAAAA,CAAU7lB,CAAAA,CAAO,QAAA,EAAYoD,EAAAA,CAA0B,QAAA,CAE7D,OACEnE,IAAAA,CAAC,KAAA,CAAA,CACC,IAAA,CAAK,OAAA,CACL,YAAA,CAAY,CAAA,EAAGe,CAAAA,CAAO,OAAO,CAAA,EAAA,EAAK2jB,CAAAA,CAAO,KAAK,CAAA,CAAA,CAC9C,SAAA,CAAU,mCAAA,CAEV,QAAA,CAAA,CAAA1kB,IAAAA,CAACkjB,CAAAA,CAAA,CAAW,SAAA,CAAU,mBAAA,CACpB,QAAA,CAAA,CAAAnjB,GAAAA,CAACqjB,CAAAA,CAAA,CACC,IAAA,CAAMsD,CAAAA,CACN,SAAA,CAAWA,CAAAA,GAAc,QAAA,CAAW,SAAA,CAAY,MAAA,CAChD,KAAA,CAAOF,CAAAA,CAAM,IAAA,EAAQ,EAAA,CACrB,GAAA,CAAK9B,CAAAA,CAAO,GAAA,CACZ,GAAA,CAAKA,CAAAA,CAAO,GAAA,CACZ,IAAA,CAAMgC,CAAAA,GAAc,QAAA,CAAWhC,CAAAA,CAAO,IAAA,CAAO,MAAA,CAC7C,QAAA,CAAW7c,CAAAA,EAA+C,CACxDtF,CAAAA,CAAqBmiB,CAAAA,CAAO,EAAA,CAAI,CAC9B,GAAG8B,EACH,IAAA,CAAMK,EAAAA,CAAqBhf,CAAAA,CAAM,MAAA,CAAO,KAAA,CAAO6e,CAAS,CAC1D,CAAC,EACH,CAAA,CACA,YAAA,CAAY,CAAA,EAAGhC,CAAAA,CAAO,KAAK,CAAA,EAAA,EAAKiC,CAAS,CAAA,CAAA,CAC3C,CAAA,CACA5mB,GAAAA,CAACojB,CAAAA,CAAA,CAAgB,KAAA,CAAM,cAAA,CAAgB,QAAA,CAAAwD,CAAAA,CAAU,CAAA,CAAA,CACnD,CAAA,CACA3mB,IAAAA,CAACkjB,CAAAA,CAAA,CAAW,SAAA,CAAU,mBAAA,CACpB,UAAAnjB,GAAAA,CAACqjB,CAAAA,CAAA,CACC,IAAA,CAAMsD,CAAAA,CACN,SAAA,CAAWA,CAAAA,GAAc,QAAA,CAAW,SAAA,CAAY,MAAA,CAChD,KAAA,CAAOF,CAAAA,CAAM,EAAA,EAAM,EAAA,CACnB,GAAA,CAAK9B,CAAAA,CAAO,GAAA,CACZ,GAAA,CAAKA,CAAAA,CAAO,GAAA,CACZ,IAAA,CAAMgC,CAAAA,GAAc,QAAA,CAAWhC,CAAAA,CAAO,IAAA,CAAO,MAAA,CAC7C,QAAA,CAAW7c,CAAAA,EAA+C,CACxDtF,CAAAA,CAAqBmiB,CAAAA,CAAO,EAAA,CAAI,CAC9B,GAAG8B,CAAAA,CACH,EAAA,CAAIK,EAAAA,CAAqBhf,CAAAA,CAAM,MAAA,CAAO,KAAA,CAAO6e,CAAS,CACxD,CAAC,EACH,CAAA,CACA,YAAA,CAAY,CAAA,EAAGhC,CAAAA,CAAO,KAAK,CAAA,EAAA,EAAKkC,CAAO,CAAA,CAAA,CACzC,CAAA,CACA7mB,GAAAA,CAACojB,CAAAA,CAAA,CAAgB,KAAA,CAAM,cAAA,CAAgB,QAAA,CAAAyD,CAAAA,CAAQ,CAAA,CAAA,CACjD,CAAA,CAAA,CACF,CAEJ,CAEA,IAAME,CAAAA,CAAYpC,CAAAA,CAAO,IAAA,GAAS,SAAA,CAC5BqC,CAAAA,CAAYrC,CAAAA,CAAO,IAAA,GAAS,SAAA,CAC5BsC,CAAAA,CAAiB,CACrB,CACE,KAAA,CACEtC,CAAAA,CAAO,SAAA,EACP3jB,CAAAA,CAAO,UAAA,EACPoD,EAAAA,CAA0B,UAAA,CAC5B,KAAA,CAAO,MACT,CAAA,CACA,CACE,KAAA,CACEugB,CAAAA,CAAO,UAAA,EACP3jB,CAAAA,CAAO,WAAA,EACPoD,EAAAA,CAA0B,WAAA,CAC5B,KAAA,CAAO,OACT,CACF,EACMrE,CAAAA,CAAmDgnB,CAAAA,CACrDE,CAAAA,CACAtC,CAAAA,CAAO,OAAA,CACLuC,CAAAA,CACJF,CAAAA,EAAaT,CAAAA,CACTxmB,CAAAA,CAAQ,MAAA,CAAQghB,CAAAA,EACdA,CAAAA,CAAO,KAAA,CAAM,iBAAA,EAAkB,CAAE,QAAA,CAASwF,CAAAA,CAAW,iBAAA,EAAmB,CAC1E,CAAA,CACAxmB,CAAAA,CACAonB,CAAAA,CACJ,OAAOxC,CAAAA,CAAO,KAAA,EAAU,QAAA,EAAY,OAAOA,CAAAA,CAAO,KAAA,EAAU,SAAA,CACxD,MAAA,CAAOA,CAAAA,CAAO,KAAK,CAAA,CACnB,EAAA,CACAyC,CAAAA,CAAiB,KAAA,CAAM,OAAA,CAAQzC,CAAAA,CAAO,KAAK,CAAA,CAC7CA,CAAAA,CAAO,KAAA,CAAM,GAAA,CAAI,MAAM,CAAA,CACvBwC,CAAAA,CACE,CAACA,CAAa,CAAA,CACd,EAAC,CACDE,CAAAA,CACJD,CAAAA,CAAe,MAAA,GAAW,CAAA,CACtBzC,CAAAA,CAAO,KAAA,CACP,CAAA,EAAGA,CAAAA,CAAO,KAAK,CAAA,EAAA,EACbyC,CAAAA,CAAe,SAAW,CAAA,CACrBrnB,CAAAA,CAAQ,IAAA,CACNghB,CAAAA,EAAWA,CAAAA,CAAO,KAAA,GAAU,MAAA,CAAOqG,CAAAA,CAAe,CAAC,CAAC,CACvD,CAAA,EAAG,KAAA,EAASA,CAAAA,CAAe,CAAC,CAAA,CAC5BA,CAAAA,CAAe,MACrB,CAAA,CAAA,CAEN,OACEnnB,IAAAA,CAACshB,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAvhB,GAAAA,CAAC4hB,CAAAA,CAAA,CAAoB,OAAA,CAAO,IAAA,CAC1B,QAAA,CAAA5hB,GAAAA,CAAC8E,CAAAA,CAAA,CAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,SAAA,CAAU,IAAA,CAAK,IAAA,CAC1C,QAAA,CAAAuiB,CAAAA,CACH,CAAA,CACF,CAAA,CACApnB,IAAAA,CAACuhB,CAAAA,CAAA,CAAoB,KAAA,CAAM,OAAA,CAAQ,SAAA,CAAU,MAAA,CAC3C,QAAA,CAAA,CAAAxhB,GAAAA,CAACkjB,CAAAA,CAAA,CAAmB,QAAA,CAAAyB,CAAAA,CAAO,KAAA,CAAM,CAAA,CAChCqC,CAAAA,EAAarC,CAAAA,CAAO,UAAA,GAAe,KAAA,CAClC3kB,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,WAAA,CACb,QAAA,CAAAC,IAAAA,CAACkjB,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAnjB,GAAAA,CAACqjB,CAAAA,CAAA,CACC,KAAA,CAAOkD,CAAAA,CACP,QAAA,CAAWze,CAAAA,EAA+C,CACxD0e,CAAAA,CAAc1e,CAAAA,CAAM,MAAA,CAAO,KAAK,EAClC,CAAA,CACA,WAAA,CAAa6c,CAAAA,CAAO,iBAAA,EAAqB3jB,CAAAA,CAAO,WAAA,CAAY2jB,CAAAA,CAAO,KAAK,CAAA,CACxE,YAAA,CAAY3jB,CAAAA,CAAO,WAAA,CAAY2jB,CAAAA,CAAO,KAAK,CAAA,CAC7C,CAAA,CACA3kB,GAAAA,CAACojB,CAAAA,CAAA,CAAgB,KAAA,CAAM,cAAA,CAAe,aAAA,CAAY,MAAA,CAChD,QAAA,CAAApjB,GAAAA,CAACwlB,GAAAA,CAAA,EAAW,CAAA,CACd,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CACE,IAAA,CACJvlB,IAAAA,CAACwhB,CAAAA,CAAA,CACE,QAAA,CAAA,CAAAkD,CAAAA,CAAO,IAAA,GAAS,QAAA,EAAYoC,CAAAA,EAAaC,CAAAA,CACxChnB,GAAAA,CAAC0hB,CAAAA,CAAA,CACC,OAAA,CAAS,IAAM,CACblf,CAAAA,CAAqBmiB,CAAAA,CAAO,EAAA,CAAI,EAAE,EACpC,CAAA,CAEC,QAAA,CAAA3jB,CAAAA,CAAO,gBAAA,EACNoD,EAAAA,CAA0B,gBAAA,CAC9B,CAAA,CACE,IAAA,CACH8iB,CAAAA,CAAe,GAAA,CAAKnG,CAAAA,EACnB9gB,IAAAA,CAACgjB,CAAAA,CAAA,CAEC,OAAA,CAASmE,CAAAA,CAAe,QAAA,CAASrG,CAAAA,CAAO,KAAK,CAAA,CAC7C,QAAA,CAAUA,CAAAA,CAAO,QAAA,CACjB,eAAA,CAAkBlZ,CAAAA,EAAuC,CACvD,GAAI8c,CAAAA,CAAO,IAAA,GAAS,QAAA,EAAYoC,CAAAA,CAAW,CACzCvkB,CAAAA,CACEmiB,CAAAA,CAAO,EAAA,CACP9c,CAAAA,GAAY,IAAA,CAAOkZ,CAAAA,CAAO,KAAA,CAAQ,EACpC,CAAA,CACA,MACF,CAEA,IAAMuG,CAAAA,CAAa,IAAI,GAAA,CAAIF,CAAc,CAAA,CACrCvf,CAAAA,GAAY,IAAA,CACdyf,CAAAA,CAAW,GAAA,CAAIvG,CAAAA,CAAO,KAAK,CAAA,CAE3BuG,CAAAA,CAAW,MAAA,CAAOvG,CAAAA,CAAO,KAAK,CAAA,CAEhCve,CAAAA,CAAqBmiB,CAAAA,CAAO,EAAA,CAAI,KAAA,CAAM,IAAA,CAAK2C,CAAU,CAAC,EACxD,CAAA,CAEA,QAAA,CAAA,CAAAtnB,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,yBAAA,CAA2B,QAAA,CAAA+gB,CAAAA,CAAO,KAAA,CAAM,CAAA,CACvDA,CAAAA,CAAO,KAAA,GAAU,MAAA,CAChB/gB,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,8BAAA,CAAgC,QAAA,CAAA+gB,CAAAA,CAAO,KAAA,CAAM,CAAA,CAC3D,IAAA,CAAA,CAAA,CAxBCA,CAAAA,CAAO,KAyBd,CACD,CAAA,CAAA,CACH,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAEJ,CACF,CAEA,SAAS6D,EAAAA,CAAqBvc,CAAAA,CAAgB,CAC5C,OAAI,KAAA,CAAM,OAAA,CAAQA,CAAK,CAAA,CACdA,CAAAA,CAAM,MAAA,CAAS,CAAA,CAGpBA,CAAAA,EAAS,OAAOA,CAAAA,EAAU,QAAA,CACxB,MAAA,GAAUA,CAAAA,EAAS,IAAA,GAAQA,CAAAA,CACtB,MAAA,CAAO,MAAA,CAAOA,CAAK,CAAA,CAAE,KAAKuc,EAAoB,CAAA,CAGhD,IAAA,CAGqBvc,CAAAA,EAAU,IAAA,EAAQA,CAAAA,GAAU,EAC5D,CAEA,SAASqe,EAAAA,CAA2Bre,CAAAA,CAGlC,CACA,GAAI,CAACA,CAAAA,EAAS,OAAOA,CAAAA,EAAU,QAAA,EAAY,KAAA,CAAM,OAAA,CAAQA,CAAK,CAAA,CAC5D,OAAO,EAAC,CAGV,IAAMoe,CAAAA,CAAQpe,CAAAA,CACd,OAAO,CACL,GAAI,OAAOoe,CAAAA,CAAM,IAAA,EAAS,QAAA,EAAY,OAAOA,CAAAA,CAAM,IAAA,EAAS,QAAA,CACxD,CAAE,IAAA,CAAMA,CAAAA,CAAM,IAAK,CAAA,CACnB,EAAC,CACL,GAAI,OAAOA,CAAAA,CAAM,EAAA,EAAO,QAAA,EAAY,OAAOA,CAAAA,CAAM,EAAA,EAAO,QAAA,CACpD,CAAE,EAAA,CAAIA,CAAAA,CAAM,EAAG,CAAA,CACf,EACN,CACF,CAEA,SAASK,EAAAA,CAAqBze,CAAAA,CAAese,CAAAA,CAA8B,CACzE,GAAKte,CAAAA,CAIL,OAAOse,CAAAA,GAAc,QAAA,CAAW,MAAA,CAAOte,CAAK,CAAA,CAAIA,CAClD,CC3nCA,IAAMkf,EAAAA,CAAuCC,CAAA,CAAA,IAAA,CAAK,UAEzC,CAAE,OAAA,CAAA,CADM,MAAM,OAAO,8CAAkC,CAAA,EACrC,0BAA2B,CAAA,CACrD,EAEM,SAASC,EAAAA,CACdnnB,CAAAA,CACA,CACA,IAAMC,CAAAA,CACJ,OAAOD,CAAAA,CAAM,cAAA,EAAmB,QAAA,CAC5BA,CAAAA,CAAM,cAAA,CACN,MAAA,CAIN,OAFEA,CAAAA,CAAM,cAAA,GAAmB,IAAA,EAAQC,CAAAA,EAAQ,OAAA,GAAY,IAAA,CAOrDP,GAAAA,CAAOwnB,CAAA,CAAA,QAAA,CAAN,CACC,QAAA,CACExnB,GAAAA,CAAC0nB,GAAAA,CAAA,CACE,GAAGpnB,CAAAA,CACJ,YAAA,CAAcA,CAAAA,CAAM,YAAA,CAAa,MAC/B,CAAA,CACA,IAAA,CAAK,GAAA,CAAI,CAAA,CAAG,IAAA,CAAK,KAAA,CAAMC,CAAAA,EAAQ,gBAAA,EAAoB,EAAE,CAAC,CACxD,CAAA,CACF,CAAA,CAGF,QAAA,CAAAP,GAAAA,CAACunB,EAAAA,CAAA,CAAgC,GAAGjnB,CAAAA,CAAO,CAAA,CAC7C,CAAA,CAhBON,GAAAA,CAAC0nB,GAAAA,CAAA,CAAqB,GAAGpnB,CAAAA,CAAO,CAkB3C,CC7BA,IAAMuR,EAAAA,CAAiB,6BAAA,CAEvB,IAAM8V,EAAAA,CAAiD,CACrD,SAAA,CACA,kBAAA,CACA,eAAA,CACA,UAAA,CACA,aAAA,CACA,eAAA,CACA,YAAA,CACA,cAAA,CACA,SAAA,CACA,UAAA,CACA,gBAAA,CACA,cACF,CAAA,CACIC,EAAAA,CAAa,CAAA,CAEV,SAASC,EAAAA,CACdtnB,CAAAA,CAC2B,CAC3B,IAAM4R,CAAAA,CAAUC,EAAAA,CAAe7R,CAAM,CAAA,CACrC,GAAI,CAACA,CAAAA,EAAU,CAAC4R,CAAAA,CACd,OAAO,EAAC,CAGV,IAAIkB,CAAAA,CACJ,GAAI,CACFA,CAAAA,CAAalB,CAAAA,CAAQ,OAAA,CAAQG,EAAAA,CAAc/R,CAAAA,CAAO,GAAG,CAAC,EACxD,CAAA,MAASiJ,CAAAA,CAAO,CACd,OAAAjJ,CAAAA,CAAO,OAAA,GAAU,CAAE,KAAA,CAAAiJ,CAAAA,CAAO,SAAA,CAAW,MAAO,CAAC,CAAA,CACtC,EACT,CACA,GAAI,CAAC6J,CAAAA,CACH,OAAO,EAAC,CAGV,IAAId,CAAAA,CACJ,GAAI,CACFA,CAAAA,CAAAA,CAAUhS,CAAAA,CAAO,WAAA,EAAe,IAAA,CAAK,KAAA,EAAO8S,CAAU,EACxD,CAAA,MAAS7J,CAAAA,CAAO,CACd,OAAAjJ,CAAAA,CAAO,OAAA,GAAU,CAAE,KAAA,CAAAiJ,CAAAA,CAAO,SAAA,CAAW,aAAc,CAAC,CAAA,CAC7C,EACT,CAEA,GAAI,CAACmK,GAASpB,CAAM,CAAA,EAAK,EAAE,SAAA,GAAaA,CAAAA,CAAAA,EAAW,EAAE,OAAA,GAAWA,CAAAA,CAAAA,CAC9D,OAAO,EAAC,CAGV,IAAMC,CAAAA,CAAgBjS,CAAAA,CAAO,OAAA,EAAW,CAAA,CACpCkS,CAAAA,CAAqBF,CAAAA,CAAO,KAAA,CAChC,GAAIA,CAAAA,CAAO,OAAA,GAAYC,CAAAA,CAAe,CACpC,GAAI,CAACjS,CAAAA,CAAO,OAAA,CACV,OAAO,EAAC,CAEV,GAAI,CACFkS,CAAAA,CAAYlS,CAAAA,CAAO,OAAA,CACjB,CAAE,OAAA,CAASgS,CAAAA,CAAO,OAAA,CAAS,KAAA,CAAOA,CAAAA,CAAO,KAAM,CAAA,CAC/CC,CACF,EACF,CAAA,MAAShJ,CAAAA,CAAO,CACd,OAAAjJ,CAAAA,CAAO,OAAA,GAAU,CAAE,KAAA,CAAAiJ,CAAAA,CAAO,SAAA,CAAW,SAAU,CAAC,CAAA,CACzC,EACT,CACF,CAEA,OAAK,MAAM,OAAA,CAAQiJ,CAAS,CAAA,CAIrBA,CAAAA,CACJ,GAAA,CAAKqV,CAAAA,EAASC,EAAAA,CAAkBD,CAAAA,CAAMvnB,CAAAA,CAAO,MAAM,CAAC,CAAA,CACpD,MAAA,CAAQunB,CAAAA,EAAqC,CAAA,CAAQA,CAAK,CAAA,CALpD,EAMX,CAEO,SAASE,EAAAA,CACdznB,CAAAA,CACAoE,CAAAA,CACAsjB,CAAAA,CACA,CACA,IAAMC,CAAAA,CAAiBvjB,CAAAA,CAAK,IAAA,EAAK,CACjC,GAAI,CAACpE,CAAAA,EAAU,CAAC2nB,CAAAA,CACd,OAGF,IAAMC,CAAAA,CAAM,IAAI,IAAA,EAAK,CAAE,WAAA,EAAY,CAC7BL,CAAAA,CAA2B,CAC/B,EAAA,CAAIM,EAAAA,EAAkB,CACtB,IAAA,CAAMF,CAAAA,CACN,SAAA,CAAWC,CAAAA,CACX,SAAA,CAAWA,CAAAA,CACX,KAAA,CAAOE,EAAAA,CAAsBJ,CAAAA,CAAO1nB,CAAAA,CAAO,MAAM,CACnD,CAAA,CACM+nB,CAAAA,CAAQ,CAAC,GAAGT,GAAwBtnB,CAAM,CAAA,CAAGunB,CAAI,CAAA,CACvD,OAAOS,EAAAA,CAAWhoB,CAAAA,CAAQ+nB,CAAAA,CAAO,QAAQ,CAAA,CAAIE,EAAAA,CAAeV,CAAI,CAAA,CAAI,MACtE,CAEO,SAASW,EAAAA,CACdloB,CAAAA,CACA2kB,CAAAA,CACAvgB,CAAAA,CACA,CACA,IAAMujB,CAAAA,CAAiBvjB,CAAAA,CAAK,IAAA,EAAK,CACjC,GAAI,CAACpE,CAAAA,EAAU,CAAC2nB,CAAAA,CACd,OAGF,IAAIQ,CAAAA,CACEJ,CAAAA,CAAQT,EAAAA,CAAwBtnB,CAAM,CAAA,CAAE,GAAA,CAAKunB,CAAAA,EAC7CA,CAAAA,CAAK,EAAA,GAAO5C,CAAAA,CACP4C,CAAAA,EAETY,CAAAA,CAAU,CACR,GAAGZ,CAAAA,CACH,IAAA,CAAMI,CAAAA,CACN,SAAA,CAAW,IAAI,IAAA,EAAK,CAAE,WAAA,EACxB,CAAA,CACOQ,CAAAA,CACR,CAAA,CACD,GAAKA,CAAAA,CAIL,OAAOH,EAAAA,CAAWhoB,CAAAA,CAAQ+nB,EAAO,QAAQ,CAAA,CACrCE,EAAAA,CAAeE,CAAO,CAAA,CACtB,MACN,CAEO,SAASC,EAAAA,CACdpoB,CAAAA,CACA2kB,CAAAA,CACA,CACA,GAAI,CAAC3kB,CAAAA,CACH,OAAO,MAAA,CAGT,IAAMsG,CAAAA,CAAUghB,EAAAA,CAAwBtnB,CAAM,CAAA,CACxC+nB,CAAAA,CAAQzhB,CAAAA,CAAQ,MAAA,CAAQihB,CAAAA,EAASA,CAAAA,CAAK,EAAA,GAAO5C,CAAE,CAAA,CACrD,OAAOoD,CAAAA,CAAM,MAAA,GAAWzhB,CAAAA,CAAQ,MAAA,EAAU0hB,EAAAA,CAAWhoB,CAAAA,CAAQ+nB,CAAAA,CAAO,QAAQ,CAC9E,CAEO,SAASM,EAAAA,CACdroB,CAAAA,CACA,CACA,IAAM4R,CAAAA,CAAUC,EAAAA,CAAe7R,CAAM,CAAA,CACrC,GAAI,CAACA,CAAAA,EAAU,CAAC4R,CAAAA,CACd,OAAO,MAAA,CAGT,GAAI,CACFA,CAAAA,CAAQ,UAAA,CAAWG,EAAAA,CAAc/R,CAAAA,CAAO,GAAG,CAAC,EAC9C,CAAA,MAASiJ,CAAAA,CAAO,CACd,OAAAjJ,CAAAA,CAAO,OAAA,GAAU,CAAE,KAAA,CAAAiJ,CAAAA,CAAO,SAAA,CAAW,QAAS,CAAC,CAAA,CACxC,KACT,CACA,OAAAjJ,CAAAA,CAAO,QAAA,GAAW,EAAC,CAAG,OAAO,CAAA,CACtB,IACT,CAEA,SAASgoB,EAAAA,CACPhoB,CAAAA,CACA+nB,CAAAA,CACA9U,CAAAA,CACA,CACA,IAAMrB,CAAAA,CAAUC,EAAAA,CAAe7R,CAAM,CAAA,CACrC,GAAI,CAAC4R,CAAAA,CACH,OAAO,MAAA,CAGT,IAAIkB,CAAAA,CACJ,GAAI,CACF,IAAME,CAAAA,CAAsC,CAC1C,OAAA,CAAShT,CAAAA,CAAO,OAAA,EAAW,CAAA,CAC3B,KAAA,CAAA+nB,CACF,CAAA,CACAjV,CAAAA,CAAAA,CAAc9S,CAAAA,CAAO,SAAA,EAAa,IAAA,CAAK,SAAA,EAAWgT,CAAO,EAC3D,CAAA,MAAS/J,CAAAA,CAAO,CACd,OAAAjJ,CAAAA,CAAO,OAAA,GAAU,CAAE,KAAA,CAAAiJ,CAAAA,CAAO,SAAA,CAAW,WAAY,CAAC,CAAA,CAC3C,KACT,CAEA,GAAI,CACF2I,CAAAA,CAAQ,OAAA,CAAQG,EAAAA,CAAc/R,CAAAA,CAAO,GAAG,CAAA,CAAG8S,CAAU,EACvD,CAAA,MAAS7J,CAAAA,CAAO,CACd,OAAAjJ,CAAAA,CAAO,OAAA,GAAU,CAAE,KAAA,CAAAiJ,CAAAA,CAAO,SAAA,CAAW,OAAQ,CAAC,CAAA,CACvC,KACT,CACA,IAAMqf,CAAAA,CAAYP,CAAAA,CAAM,GAAA,CAAIE,EAAc,CAAA,CAC1C,OAAAjoB,CAAAA,CAAO,QAAA,GAAWsoB,CAAAA,CAAWrV,CAAS,CAAA,CAC/B,IACT,CAEA,SAAS6U,EAAAA,CACPJ,CAAAA,CACArU,CAAAA,CACA,CACA,IAAMvN,CAAAA,CAAW,IAAI,GAAA,CAAIuN,CAAAA,EAAU+T,EAAc,CAAA,CAC3CmB,CAAAA,CAAoC,GAC1C,IAAA,IAAWjV,CAAAA,IAAS,MAAA,CAAO,IAAA,CAAKoU,CAAK,CAAA,CAC/B5hB,CAAAA,CAAS,GAAA,CAAIwN,CAAK,CAAA,EACpB,MAAA,CAAO,MAAA,CAAOiV,CAAAA,CAAU,CACtB,CAACjV,CAAK,EAAGkV,EAAAA,CAAgBlV,CAAAA,CAAOoU,CAAAA,CAAMpU,CAAK,CAAC,CAC9C,CAAC,CAAA,CAGL,OAAOiV,CACT,CAEA,SAASf,EAAAA,CACP1f,CAAAA,CACAuL,CAAAA,CACgC,CAChC,GACE,EAAA,CAACD,EAAAA,CAAStL,CAAK,CAAA,EACf,OAAOA,CAAAA,CAAM,EAAA,EAAO,QAAA,EACpB,CAACA,CAAAA,CAAM,EAAA,EACP,OAAOA,CAAAA,CAAM,IAAA,EAAS,QAAA,EACtB,CAACA,CAAAA,CAAM,IAAA,CAAK,IAAA,EAAK,EACjB,OAAOA,CAAAA,CAAM,SAAA,EAAc,QAAA,EAC3B,OAAOA,CAAAA,CAAM,SAAA,EAAc,QAAA,CAAA,CAK7B,OAAO,CACL,GAAIA,CAAAA,CAAM,EAAA,CACV,IAAA,CAAMA,CAAAA,CAAM,IAAA,CAAK,IAAA,EAAK,CACtB,SAAA,CAAWA,CAAAA,CAAM,SAAA,CACjB,SAAA,CAAWA,CAAAA,CAAM,SAAA,CACjB,KAAA,CAAO2gB,EAAAA,CAAc3gB,CAAAA,CAAM,KAAA,CAAOuL,CAAM,CAC1C,CACF,CAEA,SAASoV,EAAAA,CACP3gB,CAAAA,CACAuL,CAAAA,CACA,CACA,GAAI,CAACD,EAAAA,CAAStL,CAAK,CAAA,CACjB,OAAO,EAAC,CAGV,IAAMhC,CAAAA,CAAW,IAAI,GAAA,CAAIuN,CAAAA,EAAU+T,EAAc,CAAA,CAC3CM,CAAAA,CAAiC,EAAC,CAClCzQ,CAAAA,CAAUyR,EAAAA,CAAgB5gB,CAAAA,CAAM,OAAO,CAAA,CACzChC,CAAAA,CAAS,GAAA,CAAI,SAAS,CAAA,EAAKmR,CAAAA,GAASyQ,CAAAA,CAAM,OAAA,CAAUzQ,CAAAA,CAAAA,CACxD,IAAM0R,CAAAA,CAAaC,EAAAA,CAAmB9gB,CAAAA,CAAM,UAAU,CAAA,CAClDhC,CAAAA,CAAS,IAAI,YAAY,CAAA,EAAK6iB,CAAAA,GAAYjB,CAAAA,CAAM,UAAA,CAAaiB,CAAAA,CAAAA,CACjE,IAAM3R,CAAAA,CAAexD,EAAAA,CAAsB1L,CAAAA,CAAM,YAAY,CAAA,CACzDhC,CAAAA,CAAS,GAAA,CAAI,cAAc,CAAA,EAAKkR,CAAAA,GAClC0Q,CAAAA,CAAM,YAAA,CAAe1Q,CAAAA,CAAAA,CAEvB,IAAMzD,CAAAA,CAAaC,EAAAA,CAAsB1L,CAAAA,CAAM,gBAAgB,CAAA,CAC3DhC,CAAAA,CAAS,GAAA,CAAI,kBAAkB,CAAA,EAAKyN,CAAAA,GACtCmU,CAAAA,CAAM,gBAAA,CAAmBnU,CAAAA,CAAAA,CAE3B,IAAMsV,CAAAA,CAAUC,EAAAA,CAAgBhhB,CAAAA,CAAM,aAAa,CAAA,CAC/ChC,CAAAA,CAAS,GAAA,CAAI,eAAe,CAAA,EAAK+iB,CAAAA,GAASnB,CAAAA,CAAM,aAAA,CAAgBmB,CAAAA,CAAAA,CACpE,IAAM5S,CAAAA,CAAWrC,EAAAA,CAAoB9L,CAAAA,CAAM,QAAQ,CAAA,CAC/ChC,CAAAA,CAAS,GAAA,CAAI,UAAU,CAAA,EAAKmQ,CAAAA,GAAUyR,CAAAA,CAAM,QAAA,CAAWzR,CAAAA,CAAAA,CAC3D,IAAMD,CAAAA,CACJlO,EAAM,QAAA,GAAa,IAAA,CACf,IAAA,CACA0L,EAAAA,CAAsB1L,CAAAA,CAAM,QAAQ,CAAA,CACtChC,CAAAA,CAAS,GAAA,CAAI,UAAU,CAAA,EAAKkQ,CAAAA,GAAa,MAAA,GAC3C0R,CAAAA,CAAM,QAAA,CAAW1R,CAAAA,CAAAA,CAEnB,IAAMrC,CAAAA,CAAQC,EAAAA,CAAoB9L,CAAAA,CAAM,WAAW,CAAA,CAC/ChC,CAAAA,CAAS,GAAA,CAAI,aAAa,CAAA,EAAK6N,CAAAA,GAAO+T,CAAAA,CAAM,WAAA,CAAc/T,CAAAA,CAAAA,CAC9D,IAAMoV,CAAAA,CAAUC,GAAgBlhB,CAAAA,CAAM,aAAa,CAAA,CAC/ChC,CAAAA,CAAS,GAAA,CAAI,eAAe,CAAA,EAAKijB,CAAAA,GACnCrB,CAAAA,CAAM,aAAA,CAAgBqB,CAAAA,CAAAA,CAExB,IAAMhV,CAAAA,CAAaC,EAAAA,CAAmBlM,CAAAA,CAAM,UAAU,CAAA,CAClDhC,CAAAA,CAAS,GAAA,CAAI,YAAY,CAAA,EAAKiO,CAAAA,GAChC2T,CAAAA,CAAM,UAAA,CAAa3T,CAAAA,CAAAA,CAErB,IAAMN,CAAAA,CAASC,EAAAA,CAAqB5L,CAAAA,CAAM,YAAY,CAAA,CACtD,OAAIhC,EAAS,GAAA,CAAI,cAAc,CAAA,EAAK2N,CAAAA,GAAQiU,CAAAA,CAAM,YAAA,CAAejU,CAAAA,CAAAA,CAE/D3N,CAAAA,CAAS,GAAA,CAAI,SAAS,CAAA,GACrBgC,CAAAA,CAAM,OAAA,GAAY,SAAA,EACjBA,CAAAA,CAAM,OAAA,GAAY,aAAA,EAClBA,CAAAA,CAAM,OAAA,GAAY,UAAA,CAAA,GAEpB4f,CAAAA,CAAM,OAAA,CAAU5f,CAAAA,CAAM,OAAA,CAAA,CAGtBhC,CAAAA,CAAS,GAAA,CAAI,UAAU,CAAA,GACtBgC,CAAAA,CAAM,QAAA,GAAa,OAAA,EAAWA,CAAAA,CAAM,QAAA,GAAa,MAAA,CAAA,GAElD4f,CAAAA,CAAM,QAAA,CAAW5f,CAAAA,CAAM,QAAA,CAAA,CAErBhC,CAAAA,CAAS,GAAA,CAAI,gBAAgB,CAAA,EAAK,OAAOgC,CAAAA,CAAM,cAAA,EAAmB,SAAA,GACpE4f,CAAAA,CAAM,cAAA,CAAiB5f,CAAAA,CAAM,cAAA,CAAA,CAE3BhC,CAAAA,CAAS,GAAA,CAAI,cAAc,CAAA,EAAK,OAAOgC,CAAAA,CAAM,YAAA,EAAiB,QAAA,GAChE4f,CAAAA,CAAM,YAAA,CAAe5f,CAAAA,CAAM,YAAA,CAAA,CAEtB4f,CACT,CAEA,SAASO,EAAAA,CAAeV,CAAAA,CAA8C,CACpE,OAAO,CACL,GAAGA,CAAAA,CACH,KAAA,CAAOkB,EAAAA,CAAclB,CAAAA,CAAK,KAAA,CAAO,MAAA,CAAO,IAAA,CAAKA,CAAAA,CAAK,KAAK,CAAmC,CAC5F,CACF,CAEA,SAASiB,EAAAA,CACPlV,CAAAA,CACAxL,CAAAA,CACA,CACA,OAAI,KAAA,CAAM,OAAA,CAAQA,CAAK,CAAA,CACbA,CAAAA,CAAyB,GAAA,CAAKtB,CAAAA,EACpC4M,EAAAA,CAAS5M,CAAI,CAAA,CAAI,CAAE,GAAGA,CAAK,CAAA,CAAIA,CACjC,CAAA,CAEE4M,EAAAA,CAAStL,CAAK,CAAA,CACZwL,CAAAA,GAAU,eAAA,EAAmBA,CAAAA,GAAU,YAAA,CAClC,CACL,GAAIA,CAAAA,GAAU,eAAA,CACV,CACE,IAAA,CAAM,KAAA,CAAM,OAAA,CAAQxL,CAAAA,CAAM,IAAI,CAAA,CAC1B,CAAC,GAAIA,CAAAA,CAAM,IAAuB,CAAA,CAClC,OACJ,KAAA,CAAO,KAAA,CAAM,OAAA,CAAQA,CAAAA,CAAM,KAAK,CAAA,CAC5B,CAAC,GAAIA,CAAAA,CAAM,KAAwB,CAAA,CACnC,MACN,CAAA,CACA,CACE,GAAA,CAAK,KAAA,CAAM,OAAA,CAAQA,CAAAA,CAAM,GAAG,CAAA,CACxB,CAAC,GAAIA,CAAAA,CAAM,GAAsB,CAAA,CACjC,MAAA,CACJ,MAAA,CAAQ,KAAA,CAAM,OAAA,CAAQA,CAAAA,CAAM,MAAM,CAAA,CAC9B,CAAC,GAAIA,CAAAA,CAAM,MAAyB,CAAA,CACpC,MACN,CACN,CAAA,CAEK,CAAE,GAAGA,CAAM,CAAA,CAEbA,CACT,CAEA,SAAS4gB,EAAAA,CAAgB5gB,CAAAA,CAAgB,CACvC,GAAK,KAAA,CAAM,OAAA,CAAQA,CAAK,CAAA,CACxB,OAAOA,CAAAA,CACJ,MAAA,CACEtB,CAAAA,EACC4M,EAAAA,CAAS5M,CAAI,CAAA,EAAK,OAAOA,CAAAA,CAAK,IAAO,QACzC,CAAA,CACC,GAAA,CAAKA,CAAAA,GAAU,CAAE,EAAA,CAAIA,CAAAA,CAAK,EAAA,CAAI,IAAA,CAAM,CAAA,CAAQA,CAAAA,CAAK,IAAM,CAAA,CAAE,CAC9D,CAEA,SAASoiB,EAAAA,CAAmB9gB,CAAAA,CAAgB,CAC1C,GACE,EAAA,CAACsL,EAAAA,CAAStL,CAAK,CAAA,EACf,CAAC,MAAA,CAAO,SAAA,CAAUA,CAAAA,CAAM,SAAS,CAAA,EAChCA,CAAAA,CAAM,SAAA,CAAuB,GAC9B,CAAC,MAAA,CAAO,SAAA,CAAUA,CAAAA,CAAM,QAAQ,CAAA,EAC/BA,CAAAA,CAAM,QAAA,CAAsB,CAAA,CAAA,CAI/B,OAAO,CACL,SAAA,CAAWA,CAAAA,CAAM,SAAA,CACjB,QAAA,CAAUA,CAAAA,CAAM,QAClB,CACF,CAEA,SAASghB,EAAAA,CAAgBhhB,CAAAA,CAAgB,CACvC,GAAK,KAAA,CAAM,OAAA,CAAQA,CAAK,CAAA,CACxB,OAAOA,CAAAA,CACJ,MAAA,CACEtB,CAAAA,EACC4M,GAAS5M,CAAI,CAAA,EACb,OAAOA,CAAAA,CAAK,EAAA,EAAO,QAAA,EACnB,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAKA,CAAAA,CAAM,OAAO,CACtD,CAAA,CACC,GAAA,CAAKA,CAAAA,GAAU,CAAE,EAAA,CAAIA,CAAAA,CAAK,EAAA,CAAI,KAAA,CAAOA,CAAAA,CAAK,KAAM,CAAA,CAAE,CACvD,CAEA,SAASwiB,EAAAA,CAAgBlhB,CAAAA,CAAgB,CACvC,GAAKsL,EAAAA,CAAStL,CAAK,CAAA,CACnB,OAAO,CACL,IAAA,CAAM8L,EAAAA,CAAoB9L,CAAAA,CAAM,IAAI,CAAA,EAAK,EAAC,CAC1C,KAAA,CAAO8L,EAAAA,CAAoB9L,CAAAA,CAAM,KAAK,CAAA,EAAK,EAC7C,CACF,CAEA,SAASkM,EAAAA,CAAmBlM,CAAAA,CAAgB,CAC1C,GAAKsL,EAAAA,CAAStL,CAAK,CAAA,CACnB,OAAO,CACL,GAAA,CAAK8L,EAAAA,CAAoB9L,EAAM,GAAG,CAAA,EAAK,EAAC,CACxC,MAAA,CAAQ8L,EAAAA,CAAoB9L,CAAAA,CAAM,MAAM,CAAA,EAAK,EAC/C,CACF,CAEA,SAAS0L,EAAAA,CAAsB1L,CAAAA,CAAgB,CAC7C,GAAKsL,EAAAA,CAAStL,CAAK,CAAA,CACnB,OAAO,MAAA,CAAO,WAAA,CACZ,MAAA,CAAO,OAAA,CAAQA,CAAK,CAAA,CAAE,MAAA,CACnBoM,CAAAA,EAAsC,OAAOA,CAAAA,CAAM,CAAC,CAAA,EAAM,SAC7D,CACF,CACF,CAEA,SAASR,EAAAA,CAAqB5L,CAAAA,CAAgB,CAC5C,GAAKsL,EAAAA,CAAStL,CAAK,CAAA,CACnB,OAAO,MAAA,CAAO,WAAA,CACZ,MAAA,CAAO,OAAA,CAAQA,CAAK,CAAA,CAAE,MAAA,CACnBoM,CAAAA,EACC,OAAOA,CAAAA,CAAM,CAAC,CAAA,EAAM,QAAA,EACpB,MAAA,CAAO,QAAA,CAASA,CAAAA,CAAM,CAAC,CAAC,CAAA,EACxBA,CAAAA,CAAM,CAAC,CAAA,EAAK,CAChB,CACF,CACF,CAEA,SAASN,EAAAA,CAAoB9L,CAAAA,CAAgB,CAC3C,GAAK,KAAA,CAAM,OAAA,CAAQA,CAAK,CAAA,CACxB,OAAOA,CAAAA,CAAM,MAAA,CAAQtB,CAAAA,EAAyB,OAAOA,CAAAA,EAAS,QAAQ,CACxE,CAEA,SAASqL,EAAAA,CAAe7R,CAAAA,CAA+C,CACrE,GAAKA,CAAAA,CAGL,CAAA,GAAIA,CAAAA,CAAO,OAAA,CACT,OAAOA,CAAAA,CAAO,OAAA,CAEhB,GAAI,EAAA,OAAO,MAAA,CAAW,GAAA,CAAA,CAGtB,GAAI,CACF,OAAO,MAAA,CAAO,YAChB,CAAA,MAASiJ,CAAAA,CAAO,CACdjJ,CAAAA,CAAO,OAAA,GAAU,CAAE,KAAA,CAAAiJ,CAAAA,CAAO,SAAA,CAAW,MAAO,CAAC,CAAA,CAC7C,MACF,CAAA,CACF,CAEA,SAAS4e,EAAAA,EAAoB,CAC3B,OAAI,OAAO,UAAA,CAAW,MAAA,EAAQ,UAAA,EAAe,UAAA,CACpC,UAAA,CAAW,MAAA,CAAO,UAAA,EAAW,EAEtCR,EAAAA,EAAc,CAAA,CACP,CAAA,KAAA,EAAQ,IAAA,CAAK,GAAA,EAAI,CAAE,QAAA,CAAS,EAAE,CAAC,CAAA,CAAA,EAAIA,EAAAA,CAAW,QAAA,CAAS,EAAE,CAAC,CAAA,CAAA,CACnE,CAEA,SAAStV,EAAAA,CAAcS,CAAAA,CAAa,CAClC,OAAO,CAAA,EAAGlB,EAAc,CAAA,EAAGkB,CAAG,CAAA,CAChC,CAEA,SAASY,EAAAA,CAAStL,CAAAA,CAAkD,CAClE,OAAO,OAAOA,CAAAA,EAAU,QAAA,EAAYA,CAAAA,GAAU,IAAA,EAAQ,CAAC,KAAA,CAAM,OAAA,CAAQA,CAAK,CAC5E,CCzbO,SAASmhB,EAAAA,CAAmC,CACjD,OAAA,CAAAnkB,CAAAA,CACA,oBAAA,CAAA4F,GAAAA,CACA,oBAAA,CAAAE,CAAAA,CACA,0BAAAQ,CAAAA,CACA,mBAAA,CAAA8d,GAAAA,CACA,yBAAA,CAAAld,GAAAA,CACA,yBAAA,CAAAE,CAAAA,CACA,MAAA,CAAAzL,CAAAA,CACA,KAAA,CAAA0C,CAAAA,CACA,cAAA,CAAA4f,CAAAA,CACA,WAAA,CAAAnJ,CAAAA,CACA,SAAA,CAAAuP,CACF,CAAA,CAaG,CACD,IAAMnoB,CAAAA,CAAgCooB,CAAA,CAAA,OAAA,CAAQ,IACrCtb,CAAAA,CAAwBhJ,CAAO,CAAA,CAAE,GAAA,CAAI,CAAC,CAAE,MAAA,CAAA0C,CAAAA,CAAQ,KAAA,CAAAuG,CAAM,CAAA,GAAM,CACjE,IAAM4W,CAAAA,CAAK3W,CAAAA,CAAYxG,CAAAA,CAAQuG,CAAK,CAAA,CAC9Bsb,CAAAA,CAAS7hB,CAAAA,CAAO,MAAA,CAChB8hB,CAAAA,CAAcC,CAAAA,CAAe/hB,CAAM,CAAA,CACnCzD,CAAAA,CACJ,OAAOslB,CAAAA,EAAW,QAAA,CACdA,CAAAA,CACAC,CAAAA,CACEE,CAAAA,CAAUF,CAAW,CAAA,CACrBE,CAAAA,CAAU7E,CAAE,CAAA,CAEd8E,CAAAA,CACJ7e,CAAAA,CAAqB,IAAA,EAAM,QAAA,CAAS+Z,CAAE,CAAA,GAAM,IAAA,CACxC,MAAA,CACA/Z,CAAAA,CAAqB,KAAA,EAAO,QAAA,CAAS+Z,CAAE,CAAA,GAAM,IAAA,CAC3C,OAAA,CACA,KAAA,CAER,OAAO,CACL,EAAA,CAAAA,CAAAA,CACA,KAAA,CAAA5gB,CAAAA,CACA,OAAA,CAASqH,CAAAA,CAA0BuZ,CAAE,CAAA,GAAM,KAAA,CAC3C,OAAA,CAASnd,CAAAA,CAAO,YAAA,GAAiB,KAAA,CACjC,MAAA,CAAAiiB,CACF,CACF,CAAC,CAAA,CACA,CAAC3kB,CAAAA,CAAS8F,CAAAA,CAAsBQ,CAAyB,CAAC,CAAA,CAEvDse,CAAAA,CAA6BN,CAAA,CAAA,OAAA,CAAQ,IACrCF,GAAAA,GAAwB,KAAA,CACnB,EAAC,CAGHpb,CAAAA,CAAwBhJ,CAAO,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAE,MAAA,CAAA0C,CAAAA,CAAQ,KAAA,CAAAuG,CAAM,CAAA,GAAM,CACrE,IAAMqW,CAAAA,CAAS5c,CAAAA,CAAO,IAAA,EAAM,MAAA,CAC5B,GAAI,CAAC4c,CAAAA,CACH,OAAO,EAAC,CAGV,IAAMO,CAAAA,CAAK3W,CAAAA,CAAYxG,CAAAA,CAAQuG,CAAK,CAAA,CAC9Bsb,CAAAA,CAAS7hB,CAAAA,CAAO,MAAA,CAChB8hB,CAAAA,CAAcC,CAAAA,CAAe/hB,CAAM,CAAA,CACnCzD,CAAAA,CACJqgB,CAAAA,CAAO,KAAA,GACN,OAAOiF,CAAAA,EAAW,QAAA,CACfA,CAAAA,CACAC,CAAAA,CACEE,CAAAA,CAAUF,CAAW,CAAA,CACrBE,CAAAA,CAAU7E,CAAE,CAAA,CAAA,CACd+C,CAAAA,CAAQhd,GAAAA,CAAqB,IAAA,CAAMlE,CAAAA,EAASA,CAAAA,CAAK,EAAA,GAAOme,CAAE,CAAA,CAC1DgF,CAAAA,CAAyBvF,CAAAA,CAAO,QAAA,EAAU,OAAA,CAC1CwF,CAAAA,CACJxF,CAAAA,CAAO,IAAA,GAAS,aAAA,CACZjhB,CAAAA,CAAM,SAAA,CAAUwhB,CAAE,CAAA,EAAG,sBAAA,EAAuB,CAC5C,MAAA,CACAkF,CAAAA,CACJzF,CAAAA,CAAO,IAAA,GAAS,SAAA,EAAauF,CAAAA,CACzB,OAAOA,CAAAA,EAA2B,UAAA,CAChCA,CAAAA,CAAuB,CAAE,IAAA,CAAM/P,CAAY,CAAC,CAAA,CAC5C+P,CAAAA,CACFvF,CAAAA,CAAO,IAAA,GAAS,SAAA,CACd,KAAA,CAAM,IAAA,CAAKjhB,CAAAA,CAAM,SAAA,CAAUwhB,CAAE,CAAA,EAAG,sBAAA,EAAuB,EAAK,EAAE,CAAA,CAAE,GAAA,CAC9D,CAAC,CAAC7c,CAAAA,CAAOhE,CAAK,CAAA,IAAO,CACnB,KAAA,CACEsgB,CAAAA,CAAO,QAAA,EAAU,cAAA,GAAiBtc,CAAc,CAAA,EAChD,MAAA,CAAOA,CAAK,CAAA,CACd,MAAO,MAAA,CAAOA,CAAK,CAAA,CACnB,KAAA,CAAAhE,CACF,CAAA,CACF,CAAA,CACA,OAAOsgB,CAAAA,CAAO,OAAA,EAAY,UAAA,CACxBA,CAAAA,CAAO,OAAA,CAAQ,CAAE,IAAA,CAAMxK,CAAY,CAAC,CAAA,CACnCwK,CAAAA,CAAO,OAAA,EAAW,EAAC,CAE9B,OAAO,CACL,CACE,EAAA,CAAAO,CAAAA,CACA,KAAA,CAAA5gB,CAAAA,CACA,IAAA,CAAMqgB,CAAAA,CAAO,IAAA,CACb,MAAOsD,CAAAA,EAAO,KAAA,CACd,WAAA,CAAatD,CAAAA,CAAO,WAAA,CACpB,OAAA,CAAS0F,GAAAA,CAA6BD,CAAU,CAAA,CAChD,UAAA,CAAYzF,CAAAA,CAAO,QAAA,EAAU,UAAA,CAC7B,iBAAA,CAAmBA,CAAAA,CAAO,QAAA,EAAU,iBAAA,CACpC,SAAA,CAAWA,CAAAA,CAAO,SAAA,CAClB,UAAA,CAAYA,CAAAA,CAAO,UAAA,CACnB,GAAA,CAAKA,CAAAA,CAAO,GAAA,EAAOwF,CAAAA,GAAgB,CAAC,CAAA,CACpC,GAAA,CAAKxF,CAAAA,CAAO,GAAA,EAAOwF,CAAAA,GAAgB,CAAC,CAAA,CACpC,IAAA,CAAMxF,CAAAA,CAAO,IACf,CACF,CACF,CAAC,CAAA,CACA,CACDtf,CAAAA,CACA4F,GAAAA,CACAwe,GAAAA,CACA/lB,CAAAA,CACAyW,CACF,CAAC,CAAA,CAEKmQ,GAAAA,CAAwCX,CAAA,CAAA,WAAA,CAC5C,CAACzlB,CAAAA,CAAkBmE,CAAAA,GAAmB,CACpCkE,GAAAA,CAA2B1F,CAAAA,EAAY,CACrC,IAAMC,CAAAA,CAAOD,CAAAA,CAAQ,MAAA,CAAQ8d,CAAAA,EAAWA,EAAO,EAAA,GAAOzgB,CAAQ,CAAA,CAC9D,OAAIqmB,GAAAA,CAAeliB,CAAK,CAAA,EACtBvB,CAAAA,CAAK,IAAA,CAAK,CAAE,EAAA,CAAI5C,CAAAA,CAAU,KAAA,CAAAmE,CAAM,CAAC,CAAA,CAE5BvB,CACT,CAAC,EACH,CAAA,CACA,CAACyF,GAAyB,CAC5B,CAAA,CAEMie,CAAAA,CAAiCb,CAAA,CAAA,WAAA,CAAY,IAAM,CACvDpd,GAAAA,CAA0B,EAAE,EAC9B,EAAG,CAACA,GAAyB,CAAC,CAAA,CAExBke,CAAAA,CAAyCd,CAAA,CAAA,WAAA,CAC7C,CAACzlB,CAAAA,CAAkBwmB,CAAAA,GAAuC,CACxDje,CAAAA,CAA2B5F,CAAAA,EAAY,CACrC,IAAMuN,CAAAA,CAAAA,CAAQvN,CAAAA,CAAQ,IAAA,EAAQ,EAAC,EAAG,MAAA,CAAQqe,CAAAA,EAAOA,CAAAA,GAAOhhB,CAAQ,CAAA,CAC1DmQ,CAAAA,CAAAA,CAASxN,CAAAA,CAAQ,KAAA,EAAS,EAAC,EAAG,MAAA,CAAQqe,CAAAA,EAAOA,CAAAA,GAAOhhB,CAAQ,CAAA,CAElE,OAAIwmB,CAAAA,GAAS,MAAA,EACXtW,CAAAA,CAAK,IAAA,CAAKlQ,CAAQ,CAAA,CAEhBwmB,CAAAA,GAAS,OAAA,EACXrW,CAAAA,CAAM,IAAA,CAAKnQ,CAAQ,CAAA,CAGd,CAAE,IAAA,CAAAkQ,CAAAA,CAAM,KAAA,CAAAC,CAAM,CACvB,CAAC,EACH,CAAA,CACA,CAAC5H,CAAyB,CAC5B,CAAA,CAEMke,CAAAA,CAAwBhB,CAAA,CAAA,WAAA,CAAY,IAAM,CAC9C,GAAKD,CAAAA,CAIL,OAAOkB,CAAAA,CAAmB,CACxB,SAAA,CAAAlB,CAAAA,CACA,KAAA,CAAAhmB,CAAAA,CACA,MAAA,CAAA1C,CACF,CAAC,CACH,CAAA,CAAG,CAAC0oB,CAAAA,CAAW1oB,CAAAA,CAAQ0C,CAAK,CAAC,CAAA,CAEvB7B,CAAAA,CAAgC8nB,CAAA,CAAA,OAAA,CAAQ,IACvCD,CAAAA,CAIE,CACL,GAAIpG,CAAAA,EAAkB,EAAC,CACvB,CACE,GAAA,CAAK,gBAAA,CACL,KAAA,CAAOtiB,EAAO,SAAA,CACd,IAAA,CAAM6pB,CAAAA,CACN,SAAA,CAAW,UAAA,CACX,OAAA,CAASF,CACX,CACF,CAAA,CAZSrH,CAAAA,EAAkB,EAAC,CAa3B,CAACoG,CAAAA,CAAWiB,CAAAA,CAAiB3pB,CAAAA,CAAO,SAAA,CAAWsiB,CAAc,CAAC,CAAA,CAEjE,OAAO,CACL,uBAAA,CAAA/hB,CAAAA,CACA,uBAAA,CAAAM,CAAAA,CACA,wBAAA,CAAA2oB,CAAAA,CACA,+BAAA,CAAAF,GAAAA,CACA,gCAAA,CAAAG,CAAAA,CACA,qBAAAR,CACF,CACF,CC7NO,SAASa,EAAAA,CAA0C,CACxD,OAAA,CAAAzlB,CAAAA,CACA,IAAA,CAAAgR,CAAAA,CACA,QAAA,CAAAI,CACF,CAAA,CAAiE,CAC/D,IAAMqD,CAAAA,CAAiBiR,CAAA,CAAA,MAAA,CAAO,CAAE,OAAA,CAAA1lB,CAAAA,CAAS,IAAA,CAAAgR,CAAAA,CAAM,QAAA,CAAAI,CAAS,CAAC,CAAA,CACnDuU,CAAAA,CAAeD,CAAA,CAAA,MAAA,CAAO,IAAI,GAAa,CAAA,CAEvCA,CAAA,CAAA,SAAA,CAAU,IAAM,CACpB,GAAI,CAACE,EAAAA,EAAyB,CAC5B,OAGF,IAAMC,CAAAA,CAAOpR,CAAAA,CAAS,OAAA,CAEpBoR,CAAAA,CAAK,IAAA,GAAS7U,CAAAA,EACd8U,EAAAA,CAAcD,CAAAA,CAAK,IAAA,CAAM7U,CAAI,CAAA,EAC7B,CAAC2U,CAAAA,CAAO,OAAA,CAAQ,GAAA,CAAI,MAAM,CAAA,EAE1BI,EAAAA,CACEJ,CAAAA,CAAO,OAAA,CACP,MAAA,CACA,mJACF,CAAA,CAGAE,CAAAA,CAAK,OAAA,GAAY7lB,CAAAA,EACjB8lB,EAAAA,CAAcD,CAAAA,CAAK,OAAA,CAAS7lB,CAAO,CAAA,EACnC,CAAC2lB,CAAAA,CAAO,OAAA,CAAQ,GAAA,CAAI,SAAS,CAAA,EAE7BI,EAAAA,CACEJ,CAAAA,CAAO,OAAA,CACP,SAAA,CACA,iIACF,CAAA,CAEEE,CAAAA,CAAK,QAAA,GAAazU,CAAAA,EAAY,CAACuU,CAAAA,CAAO,OAAA,CAAQ,GAAA,CAAI,UAAU,CAAA,EAC9DI,EAAAA,CACEJ,CAAAA,CAAO,QACP,UAAA,CACA,8HACF,CAAA,CAGF,IAAM9P,CAAAA,CAAM,IAAI,GAAA,CAChB,IAAA,IAAS5M,CAAAA,CAAQ,CAAA,CAAGA,CAAAA,CAAQ+H,CAAAA,CAAK,MAAA,CAAQ/H,CAAAA,EAAS,CAAA,CAAG,CACnD,IAAM4W,CAAAA,CAAKzO,CAAAA,CAASJ,CAAAA,CAAK/H,CAAK,CAAA,CAAIA,CAAK,CAAA,CACvC,GAAI4M,CAAAA,CAAI,GAAA,CAAIgK,CAAE,CAAA,EAAK,CAAC8F,CAAAA,CAAO,OAAA,CAAQ,GAAA,CAAI,kBAAkB,CAAA,CAAG,CAC1DI,EAAAA,CACEJ,CAAAA,CAAO,OAAA,CACP,kBAAA,CACA,CAAA,kBAAA,EAAqB9F,CAAE,CAAA,iDAAA,CACzB,CAAA,CACA,KACF,CACAhK,CAAAA,CAAI,GAAA,CAAIgK,CAAE,EACZ,CACApL,CAAAA,CAAS,OAAA,CAAU,CAAE,OAAA,CAAAzU,CAAAA,CAAS,IAAA,CAAAgR,CAAAA,CAAM,QAAA,CAAAI,CAAS,EAC/C,CAAA,CAAG,CAACpR,CAAAA,CAASgR,EAAMI,CAAQ,CAAC,EAC9B,CAEA,SAAS0U,EAAAA,CAAiBrR,CAAAA,CAAoBhT,CAAAA,CAAgB,CAC5D,OACEgT,CAAAA,CAAS,MAAA,GAAWhT,CAAAA,CAAK,MAAA,EACzBgT,CAAAA,CAAS,KAAA,CAAM,CAAC/S,CAAAA,CAAMuH,CAAAA,GAAU,MAAA,CAAO,EAAA,CAAGvH,CAAAA,CAAMD,CAAAA,CAAKwH,CAAK,CAAC,CAAC,CAEhE,CAEA,SAAS8c,EAAAA,CAAKJ,CAAAA,CAAqBjY,CAAAA,CAAasY,CAAAA,CAAiB,CAC/DL,CAAAA,CAAO,GAAA,CAAIjY,CAAG,CAAA,CACd,OAAA,CAAQ,IAAA,CAAK,CAAA,iBAAA,EAAoBsY,CAAO,CAAA,CAAE,EAC5C,CAEA,SAASJ,EAAAA,EAA2B,CAClC,OACG,UAAA,CAA6D,OAAA,EAAS,GAAA,EACnE,QAAA,GAAa,YAErB,CC9BA,IAAMK,EAAAA,CAA8B,CAAA,CAAA,IAAA,CAClC,IAAM,OAAO,yCAA6B,CAC5C,CAAA,CAOO,SAASC,EAAAA,CAAgBpO,CAAAA,CAAoB,CAClD,OAAOqO,EAAAA,CAA0BrO,CAAE,CACrC,CAEO,SAASqO,EAAAA,CACdrO,CAAAA,CACApd,CAAAA,CAAkC,EAAC,CACnC,CACA,IAAMM,CAAAA,CACJN,CAAAA,CAAQ,SAAA,EAAaM,EAAAA,CACjBqnB,CAAAA,CACJ3nB,CAAAA,CAAQ,UAAA,EAAc0nB,EAAAA,CAClBhoB,GAAAA,CAAe0d,CAAAA,CAAG,UAAA,EAAc,GAChC,CACJ,aAAA,CAAAsO,CAAAA,CACA,MAAA,CAAA3mB,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,KAAA,CAAA2mB,CAAAA,CACA,UAAA,CAAAzsB,GAAAA,CACA,SAAA,CAAA0sB,CAAAA,CACA,QAAA,CAAApO,CAAAA,CACA,KAAA,CAAAqO,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,WAAA,CAAAC,GAAAA,CAAc,OAAA,CACd,SAAA,CAAAC,CAAAA,CACA,WAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,OAAA,CAAAjnB,GAAAA,CACA,eAAAC,CAAAA,CACA,eAAA,CAAAinB,CAAAA,CAAwB,CAAA,CAAA,QAAA,CACxB,cAAA,CAAAhnB,CACF,CAAA,CAAIgY,CAAAA,CACEnf,CAAAA,CAAsBihB,EAAAA,CAA0B9B,CAAE,CAAA,CAClDnY,CAAAA,CAAsBsc,EAAAA,CAA0BnE,CAAE,CAAA,CAClD,CAAE,eAAA,CAAAxc,CAAgB,CAAA,CAAI8e,EAAAA,CAA0BtC,CAAE,CAAA,CAClDzb,CAAAA,CAAmBqhB,EAAAA,CAAuB5F,CAAE,CAAA,CAC5Cpf,CAAAA,CAAoBmf,EAAAA,CAAwBC,CAAAA,CAAInY,CAAmB,CAAA,CACnEonB,CAAAA,CAA8B,CAAA,CAAA,IAAA,CAAK,SAAY,CACnD,GAAM,CAAE,2BAAA,CAAAC,CAA4B,CAAA,CAAI,MAAM,OAC5C,wCACF,CAAA,CACA,OAAO,CAAE,OAAA,CAASA,CAAAA,CAA4BlP,CAAE,CAAE,CACpD,CAAC,CAAA,CAMKzR,CAAAA,CAAgB,CACpB,OAAA,CAAS,EAAA,CACT,IAAA,CAAM,GAAA,CACN,OAAA,CAAS,GACX,CAAA,CAEA,OAAO,SAA0B,CAC/B,OAAA,CAAArG,CAAAA,CACA,IAAA,CAAAgR,CAAAA,CACA,QAAA,CAAAI,CAAAA,CACA,QAAA,CAAAhW,CAAAA,CACA,KAAA,CAAAkD,CAAAA,CACA,WAAA,CAAAhC,CAAAA,CACA,iBAAA,CAAAmC,GAAAA,CACA,yBAAA,CAAAlB,CAAAA,CACA,uBAAA,CAAAiB,CAAAA,CACA,sBAAA,CAAA4T,EAAAA,CACA,eAAA,CAAA1K,EAAAA,CAAkB,KAAA,CAClB,2BAAA,CAAAuJ,EAAAA,CAA8B,IAAA,CAC9B,cAAA,CAAAlK,EAAAA,CACA,aAAA,CAAA9K,EAAAA,CACA,qBAAA,CAAAwV,EAAAA,CACA,mBAAA,CAAA2S,EAAAA,CACA,aAAA,CAAAhoB,EAAAA,CACA,cAAA,CAAAD,CAAAA,CACA,kBAAA,CAAAN,EAAAA,CAAqB,CAAC,EAAA,CAAI,EAAA,CAAI,EAAA,CAAI,GAAG,CAAA,CACrC,aAAA,CAAA8M,CAAAA,CACA,WAAA,CAAA1B,EAAAA,CACA,OAAA,CAAAkL,EAAAA,CACA,eAAA,CAAAF,EAAAA,CACA,aAAA,CAAAnK,EAAAA,CAAgB,KAAA,CAChB,QAAA,CAAAqJ,EAAAA,CACA,gBAAA,CAAAY,EAAAA,CACA,cAAA,CAAApK,EAAAA,CAAiB,MACjB,cAAA,CAAAjL,EAAAA,CAAiB,KAAA,CACjB,iBAAA,CAAAoK,EAAAA,CAAoB,SAAA,CACpB,cAAA,CAAAD,EAAAA,CACA,SAAA,CAAA3H,EAAAA,CACA,QAAA,CAAA+I,EAAAA,CACA,YAAA,CAAAgf,EAAAA,CAAe,KAAA,CACf,iBAAA,CAAAviB,EAAAA,CACA,gBAAA,CAAAsD,EAAAA,CACA,SAAA,CAAA7I,EAAAA,CACA,gBAAA,CAAA0I,EAAAA,CAAmB,KAAA,CACnB,YAAA,CAAAqK,EAAAA,CACA,oBAAA,CAAAF,EAAAA,CACA,kBAAA,CAAAhZ,EAAAA,CAAqB,KAAA,CACrB,uBAAA,CAAAwN,EAAAA,CAA0B,IAAA,CAC1B,qBAAA,CAAAC,EAAAA,CAAwB,IAAA,CACxB,eAAA,CAAAC,EAAAA,CACA,0BAAA,CAAAjG,EAAAA,CAA6B,MAAA,CAC7B,QAAA,CAAAyQ,EAAAA,CACA,gBAAA,CAAAY,EAAAA,CACA,UAAA,CAAAlL,EAAAA,CACA,eAAA,CAAAgB,EAAAA,CAAkB,KAAA,CAClB,oBAAA,CAAAM,EAAAA,CACA,kBAAA,CAAAC,EAAAA,CACA,qBAAA,CAAAC,EAAAA,CACA,WAAA,CAAA5O,EAAAA,CACA,eAAA,CAAAmN,EAAAA,CACA,iBAAA,CAAAugB,EAAAA,CACA,WAAA,CAAAvW,GACA,mBAAA,CAAAe,EAAAA,CACA,sBAAA,CAAAyV,EAAAA,CAAyB,KAAA,CACzB,uBAAA,CAAAC,EAAAA,CACA,aAAA,CAAAxW,EAAAA,CACA,qBAAA,CAAAxT,EAAAA,CACA,mBAAA,CAAAX,EAAAA,CAAsB,KAAA,CACtB,UAAA,CAAAwS,EAAAA,CACA,kBAAA,CAAA0C,EAAAA,CACA,gBAAA,CAAAzR,EAAAA,CAAmB,KAAA,CACnB,cAAA,CAAAuH,CAAAA,CAAiB,IAAA,CACjB,cAAA,CAAAwW,CAAAA,CAAiB,EAAC,CAClB,gBAAA,CAAA/f,CAAAA,CAAmB,EAAC,CACpB,WAAAvE,EAAAA,CAAa,EAAC,CACd,SAAA,CAAA0qB,EAAAA,CACA,SAAA,CAAAgD,CAAAA,CACA,mBAAA,CAAAC,EAAAA,CAAsB,KAAA,CACtB,aAAA,CAAAC,EAAAA,CACA,oBAAA,CAAAC,EAAAA,CACA,qBAAA,CAAAC,EAAAA,CACA,YAAA,CAAAC,EAAAA,CACA,OAAA,CAAA/oB,EAAAA,CACA,eAAA,CAAAtB,EAAAA,CACA,mBAAA,CAAAN,EAAAA,CAAsB,KAAA,CACtB,cAAA,CAAA+T,CAAAA,CACA,WAAA,CAAAnD,EAAAA,CACA,UAAA,CAAAxP,EAAAA,CACA,qBAAA,CAAAwpB,GACA,YAAA,CAAArW,EAAAA,CACA,KAAA,CAAOsW,EAAAA,CACP,aAAA,CAAAC,EAAAA,CACA,MAAA,CAAAC,EAAAA,CACA,MAAA,CAAAnsB,EAAAA,CACA,WAAA,CAAAosB,EAAAA,CAAc,EAAC,CACf,YAAA,CAAAxvB,EAAAA,CACA,UAAA,CAAAD,EAAAA,CACA,iBAAA,CAAAD,EAAAA,CACA,aAAA,CAAAD,EAAAA,CACA,QAAA,CAAAwG,EAAAA,CACA,gBAAA,CAAAd,EAAAA,CACA,gBAAA,CAAAd,EAAAA,CAAmB,KAAA,CACnB,WAAA,CAAAgrB,EAAAA,CAAc,KAAA,CACd,gBAAA,CAAAC,EAAAA,CAAmB,KAAA,CACnB,UAAA,CAAAC,EAAAA,CACA,YAAA,CAAAC,EAAAA,CACA,SAAA,CAAA5W,EAAAA,CAAY,KAAA,CACZ,eAAA,CAAAC,EAAAA,CACA,kBAAA,CAAA4W,EAAAA,CACA,UAAA,CAAA/W,EAAAA,CACA,cAAA,CAAAjT,EAAAA,CACA,sBAAA,CAAAd,EAAAA,CACA,cAAA,CAAAlE,EAAAA,CACA,YAAA,CAAAP,EAAAA,CACA,gBAAA,CAAAkY,EAAAA,CACA,wBAAA,CAAAc,EAAAA,CACA,YAAA,CAAAhB,EAAAA,CACA,oBAAA,CAAAe,EAAAA,CACA,qBAAArL,EAAAA,CAAuB,KAAA,CACvB,gBAAA,CAAAb,EAAAA,CAAmB,OAAA,CACnB,UAAA,CAAAgQ,EAAAA,CAAa,MAAA,CACb,YAAA,CAAA2S,EAAAA,CAAe,IAAA,CACf,UAAA,CAAAvsB,EAAAA,CAAa,IAAA,CACb,WAAA,CAAAwsB,EAAAA,CAAc,IAAA,CACd,GAAA,CAAA3iB,EAAAA,CAAM,KAAA,CACN,QAAA,CAAA1M,EAAAA,CAAW,IAAA,CACX,iBAAA,CAAAyF,EAAAA,CACA,SAAA,CAAA6pB,EAAAA,CACA,cAAA,CAAAC,EAAAA,CACA,uBAAA,CAAAruB,EAAAA,CACA,WAAA,CAAAsuB,EAAAA,CAAc,KAAA,CACd,eAAA,CAAAvvB,EAAAA,CACA,UAAA,CAAAI,EAAAA,CACA,aAAA,CAAAyO,EAAAA,CACA,WAAA,CAAAnP,EAAAA,CACA,UAAA,CAAA8vB,EAAAA,CACA,cAAA,CAAA9f,EAAAA,CACA,aAAA,CAAA+f,EAAAA,CACA,eAAA,CAAAC,EACF,CAAA,CAA0B,CACxB,IAAMlZ,EAAAA,CAAqB,CAAA,CAAA,MAAA,CAA8B,IAAI,CAAA,CACvDmZ,EAAAA,CAAqB,CAAA,CAAA,MAAA,CAAgC,IAAI,CAAA,CACzDC,EAAAA,CAAgC,CAAA,CAAA,MAAA,CAA8B,IAAI,EAClEC,EAAAA,CAA2B,CAAA,CAAA,MAAA,CAAsB,IAAI,CAAA,CACrDnoB,EAAAA,CAAiB,CAAA,CAAA,MAAA,CAAoC,IAAI,CAAA,CACzDN,EAAAA,CAA6B,CAAA,CAAA,MAAA,CAAsB,IAAI,CAAA,CACvD,CAAC0oB,EAAAA,CAA0BC,EAA2B,CAAA,CACpD,CAAA,CAAA,QAAA,CAAS,CAAC,CAAA,CACZC,EAAAA,CAAyB,CAAA,CAAA,KAAA,EAAM,CAC/BC,EAAAA,CAA+B,CAAA,CAAA,KAAA,EAAM,CAC3C1D,EAAAA,CAAmC,CAAE,OAAA,CAAAzlB,CAAAA,CAAS,IAAA,CAAAgR,CAAAA,CAAM,QAAA,CAAAI,CAAS,CAAC,CAAA,CACxD,CAAA,CAAA,OAAA,CAAQ,IAAMgY,CAAAA,CAA2BppB,CAAO,CAAA,CAAG,CAACA,CAAO,CAAC,CAAA,CAClE,IAAMvG,EAAAA,CAAuB,CAAA,CAAA,OAAA,CAC3B,IAAM8F,EAAAA,CAAuB5D,EAAM,CAAA,CACnC,CAACA,EAAM,CACT,CAAA,CACM0tB,EAAAA,CACJ1B,EAAAA,GAA0B,IAAA,CACtB,CAAE,aAAA,CAAe,IAAA,CAAM,UAAA,CAAY,IAAA,CAAM,WAAA,CAAa,IAAK,CAAA,CAC3DA,EAAAA,GAA0B,KAAA,CACxB,EAAC,CACAA,EAAAA,EAAyB,EAAC,CAC7B2B,EAAAA,CACJX,EAAAA,EAAe,IAAA,GAAS,MAAA,EACxBC,EAAAA,GAAoB,IAAA,EACpB,OAAOA,EAAAA,EAAoB,QAAA,CACvB,CAACW,EAAAA,CAAsBC,EAAuB,CAAA,CAClD3mB,EAAAA,CAAoD,CAClD,YAAA,CAAc2kB,EAAAA,EAAwB,IAAA,CACtC,QAAA,CAAUC,EAAAA,CACT,KAAA,CAAOF,EACT,CAAC,CAAA,CACE/T,GACJ/U,GAAAA,EAAqBmpB,EAAAA,EAAc,YAAA,CAC/B6B,EAAAA,CAAkBtX,EAAAA,EAAWyV,EAAAA,EAAc,OAAA,CAC3C8B,EAAAA,CAAmBvY,EAAAA,EAAYyW,EAAAA,EAAc,QAAA,CAC7C+B,EAAAA,CACJzqB,EAAAA,EAAa0oB,EAAAA,EAAc,UAAA,EAAY,SAAA,CACnCgC,EAAAA,CAAmB3hB,EAAAA,EAAY2f,EAAAA,EAAc,UAAA,EAAY,QAAA,CACzDiC,EAAAA,CACJ3X,EAAAA,EAAgB0V,EAAAA,EAAc,YAAA,CAC1BkC,EAAAA,CACJ/Y,EAAAA,EAAoB6W,EAAAA,EAAc,gBAAA,CAC9BmC,EAAAA,CACJ9tB,EAAAA,EAAiB2rB,EAAAA,EAAc,cAC3BoC,EAAAA,CAAmB9Y,EAAAA,EAAY0W,EAAAA,EAAc,QAAA,CAC7CqC,EAAAA,CACJtZ,EAAAA,EAAeiX,EAAAA,EAAc,WAAA,CACzBsC,EAAAA,CACJtZ,EAAAA,EAAiBgX,EAAAA,EAAc,aAAA,CAC3BuC,EAAAA,CAAqBlb,EAAAA,EAAc2Y,EAAAA,EAAc,UAAA,CACjDwC,EAAAA,CACJvZ,EAAAA,EAAgB+W,EAAAA,EAAc,YAAA,CAC1ByC,EAAAA,CAAkB1rB,EAAAA,EAAWipB,EAAAA,EAAc,OAAA,CAC3C0C,EAAAA,CAAmB1rB,EAAAA,EAAYgpB,EAAAA,EAAc,QAAA,CAC7C2C,EAAAA,CACJnsB,EAAAA,EAAkBwpB,EAAAA,EAAc,cAAA,CAC5B4C,EAAAA,CACJlC,EAAAA,GAAgB5pB,EAAAA,EAAmB,KAAA,EAAS,IAAA,CAAA,CACxCH,EAAAA,CAAUisB,EAAAA,EAAoBlsB,CAAAA,CAAQ4qB,EAAAA,CAAmB,MAAA,CACzD3sB,EAAAA,CACJiuB,EAAAA,EAAoBluB,CAAAA,CAAc6sB,EAAAA,CAAyB,MAAA,CAC7DsB,EAAAA,CAAkC7C,EAAAA,CAAc,CAC9C,aAAA,CAAe3rB,EAAAA,GAAkB,MAAA,CACjC,WAAA,CAAa0U,EAAAA,GAAgB,MAAA,CAC7B,aAAA,CAAeC,EAAAA,GAAkB,MAAA,CACjC,UAAA,CAAY3B,EAAAA,GAAe,MAAA,CAC3B,YAAA,CAAc4B,EAAAA,GAAiB,OAC/B,gBAAA,CAAkBE,EAAAA,GAAqB,MAAA,CACvC,OAAA,CAASpS,EAAAA,GAAY,MAAA,CACrB,QAAA,CAAUuS,EAAAA,GAAa,MAAA,CACvB,QAAA,CAAUC,EAAAA,GAAa,MAAA,CACvB,YAAA,CAAc1S,GAAAA,GAAsB,MAAA,CACpC,UAAA,CAAYS,EAAAA,GAAc,MAAA,EAAa+I,EAAAA,GAAa,MAAA,CACpD,YAAA,CAAciK,EAAAA,GAAiB,MAAA,CAC/B,cAAA,CAAgB9T,EAAAA,GAAmB,MAAA,CACnC,OAAA,CAAS+T,EAAAA,GAAY,MAAA,CACrB,QAAA,CAAUvT,EAAAA,GAAa,MACzB,CAAC,CAAA,CACD,IAAM8rB,EAAAA,CAAgCC,EAAAA,CACpC,cAAA,CACAptB,CAAAA,CACAsqB,EACF,CAAA,CACM+C,EAAAA,CAA0BD,EAAAA,CAC9B,SAAA,CACA1Y,EAAAA,CACA4V,EACF,CAAA,CACMgD,EAAAA,CAA2BF,EAAAA,CAC/B,UAAA,CACA5Y,EAAAA,CACA8V,EACF,CAAA,CACMiD,EAAAA,CAA+BH,EAAAA,CACnC,cAAA,CACA3Y,EAAAA,CACA6V,EACF,CAAA,CACMkD,EAAAA,CAAmCJ,EAAAA,CACvC,kBAAA,CACA9Y,EAAAA,CACAgW,EACF,EACMmD,EAAAA,CAAgCL,EAAAA,CACpC,eAAA,CACAlZ,EAAAA,CACAoW,EACF,CAAA,CACMoD,EAAAA,CAA2BN,EAAAA,CAC/B,UAAA,CACA7Y,EAAAA,CACA+V,EACF,CAAA,CACMqD,EAAAA,CAA8BP,EAAAA,CAClC,aAAA,CACAjZ,EAAAA,CACAmW,EACF,CAAA,CACMsD,EAAAA,CAAgCR,EAAAA,CACpC,eAAA,CACAvtB,EAAAA,CACAyqB,EACF,CAAA,CACMuD,EAAAA,CAA6BT,EAAAA,CACjC,YAAA,CACAhZ,EAAAA,CACAkW,EACF,CAAA,CACMwD,EAAAA,CAA+BV,EAAAA,CACnC,cAAA,CACA/Y,EAAAA,CACAiW,EACF,CAAA,CACMyD,EAAAA,CAA0BX,EAAAA,CAC9B,SAAA,CACAttB,EAAAA,CACAwqB,EACF,CAAA,CACM0D,EAAAA,CAA2BZ,EAAAA,CAC/B,UAAA,CACA7sB,EAAAA,CACA+pB,EACF,CAAA,CACM2D,EAAAA,CAAiCb,EAAAA,CACrC,gBAAA,CACArtB,EAAAA,CACAuqB,EACF,CAAA,CACM4D,EAAAA,CAAkC,CAAA,CAAA,WAAA,CACrC5mB,CAAAA,EAA0B,CACzBH,EAAAA,GAAoBG,CAAa,CAAA,CACjCgjB,EAAAA,GAAiBrmB,CAAAA,GAAa,CAC5B,GAAGA,CAAAA,CACH,UAAA,CAAY,CACV,SAAA,CAAWqD,CAAAA,CACX,QAAA,CACE+kB,EAAAA,EAAoBpoB,CAAAA,CAAQ,UAAA,CAAW,QAC3C,CACF,CAAA,CAAE,EACJ,CAAA,CACA,CAACkD,EAAAA,CAAmBmjB,EAAAA,CAAe+B,EAAgB,CACrD,CAAA,CACM8B,EAAAA,CAAiC,CAAA,CAAA,WAAA,CACpCnf,CAAAA,EAAyB,CACxBvE,EAAAA,GAAmBuE,CAAY,CAAA,CAC/Bsb,EAAAA,GAAiBrmB,CAAAA,GAAa,CAC5B,GAAGA,CAAAA,CACH,WAAY,CACV,SAAA,CACEmoB,EAAAA,EAAqBnoB,CAAAA,CAAQ,UAAA,CAAW,SAAA,CAC1C,QAAA,CAAU+K,CACZ,CACF,CAAA,CAAE,EACJ,CAAA,CACA,CAACvE,EAAAA,CAAkB6f,EAAAA,CAAe8B,EAAiB,CACrD,CAAA,CACMgC,EAAAA,CAAkB,CAAA,CAAA,WAAA,CACtB,CACErL,CAAAA,CACA3D,CAAAA,GACG,CACHiP,EAAAA,CAAmBjP,CAAAA,CAAQ2D,CAAAA,CAASvY,EAAa,EACnD,CAAA,CACA,CAACA,EAAa,CAChB,CAAA,CACM8jB,EAAAA,CAA0B,CAAA,CAAA,OAAA,CAC9B,IACElyB,EAAAA,CAAW,GAAA,CAAKgjB,CAAAA,GAAY,CAC1B,GAAGA,CAAAA,CACH,OAAA,CAAUzb,CAAAA,EAAe,CACvByqB,EAAAA,CACE,CACE,SAAA,CAAWhP,CAAAA,CAAO,GAAA,CAClB,GAAA,CAAAzb,CAAAA,CACA,MAAA,CAAQ,WACV,CAAA,CACA,IAAMyb,CAAAA,CAAO,OAAA,CAAQzb,CAAG,CAC1B,EACF,CACF,CAAA,CAAE,CAAA,CACJ,CAACvH,EAAAA,CAAYgyB,EAAS,CACxB,CAAA,CACMG,EAAAA,CAA0B,CAAA,CAAA,OAAA,CAG9B,IACExyB,EAAAA,CACKgnB,CAAAA,EAAY,CACXqL,EAAAA,CACE,CACE,GAAA,CAAKrL,CAAAA,CAAQ,GAAA,CACb,MAAA,CAAQ,UACV,CAAA,CACA,IAAMhnB,EAAAA,CAAWgnB,CAAO,CAC1B,EACF,CAAA,CACA,MAAA,CACN,CAAChnB,EAAAA,CAAYqyB,EAAS,CACxB,CAAA,CACMI,EAAAA,CAAwB,cAC5B,CAAC5nB,CAAAA,CAAgBjD,CAAAA,GAAe,CAC9B6G,EAAAA,GAAgB,CACd,KAAA,CAAA5D,CAAAA,CACA,GAAA,CAAAjD,CAAAA,CACA,MAAA,CAAQ,MACV,CAAC,EACH,CAAA,CACA,CAAC6G,EAAa,CAChB,CAAA,CACM,CACJ,cAAA,CAAA6L,EAAAA,CACA,oBAAA,CAAAhO,EAAAA,CACA,kBAAA,CAAAC,EAAAA,CACA,oBAAA,CAAAC,EAAAA,CACA,iBAAA,CAAAC,EAAAA,CACA,mBAAA,CAAAC,EAAAA,CACA,uBAAA,CAAAyM,EAAAA,CACA,cAAA,CAAAa,EAAAA,CACA,eAAA,CAAArN,EAAAA,CACA,eAAA,CAAAC,EAAAA,CACA,iBAAA,CAAA7K,EAAAA,CACA,mBAAA,CAAA7C,EAAAA,CACA,qBAAA,CAAA4a,EAAAA,CACA,cAAA,CAAAjN,EAAAA,CACA,eAAA,CAAAC,EAAAA,CACA,yBAAA,CAAAE,EAAAA,CACA,iBAAA,CAAAU,EAAAA,CACA,mBAAA,CAAAqN,EAAAA,CACA,0BAAA,CAAAF,EAAAA,CACA,oBAAA,CAAAF,EAAAA,CACA,gBAAA,CAAA5a,EAAAA,CACA,uBAAA,CAAAK,EAAAA,CACA,gCAAA+Z,EAAAA,CACA,cAAA,CAAAzV,EAAAA,CACA,YAAA,CAAAC,EAAAA,CACA,uBAAA,CAAA0U,EAAAA,CACA,qBAAA,CAAAE,EAAAA,CACA,uBAAA,CAAAC,EAAAA,CACA,oBAAA,CAAAE,EAAAA,CACA,0BAAA,CAAAN,EAAAA,CACA,kBAAA,CAAAE,EAAAA,CACA,kBAAA,CAAAO,EAAAA,CACA,sBAAA,CAAApZ,EAAAA,CACA,iBAAA,CAAAsO,EAAAA,CACA,oBAAA,CAAAC,EAAAA,CACA,kBAAA,CAAAC,EAAAA,CACA,mBAAA,CAAAoL,EAAAA,CACA,0BAAA,CAAA1Z,EAAAA,CACA,SAAA,CAAAwO,EAAAA,CACA,aAAA,CAAAC,EAAAA,CACA,WAAA,CAAAoM,EACF,CAAA,CAAIpE,EAAAA,CAAkB,CACpB,aAAA,CAAeqZ,EAAAA,CACf,WAAA,CAAaE,EAAAA,CACb,aAAA,CAAeC,EAAAA,CACf,UAAA,CAAYC,EAAAA,CACZ,YAAA,CAAcC,EAAAA,CACd,cAAA,CAAAtZ,CAAAA,CACA,WAAA,CAAAnD,EAAAA,CACA,gBAAA,CAAkBmc,EAAAA,CAClB,OAAA,CAAA9pB,CAAAA,CACA,YAAA,CAAA0P,EAAAA,CACA,IAAA,CAAAsB,CAAAA,CACA,OAAA,CAASqZ,EAAAA,CACT,mBAAArxB,EAAAA,CACA,2BAAA,CAAAiY,EAAAA,CACA,QAAA,CAAU+Y,EAAAA,CACV,QAAA,CAAUN,EAAAA,CACV,UAAA,CAAA9iB,EAAAA,CACA,QAAA,CAAAwK,CAAAA,CACA,UAAA,CAAAC,EAAAA,CACA,SAAA,CAAAE,EAAAA,CACA,eAAA,CAAAC,EAAAA,CACA,eAAA,CAAA9J,EAAAA,CACA,YAAA,CAAA4J,EAAAA,CACA,qBAAA,CAAuB0Z,EAAAA,CACvB,mBAAA,CAAqBE,EAAAA,CACrB,qBAAA,CAAuBC,EAAAA,CACvB,kBAAA,CAAoBC,EAAAA,CACpB,oBAAA,CAAsBC,EAAAA,CACtB,wBAAA,CAA0BN,GAC1B,eAAA,CAAiBO,EAAAA,CACjB,gBAAA,CAAkBL,EAAAA,CAClB,gBAAA,CAAkBJ,EAAAA,CAClB,iBAAA,CAAmBY,EAAAA,CACnB,oBAAA,CAAsBX,EAAAA,CACtB,sBAAA,CAAwBU,EAAAA,CACxB,eAAA,CAAiBZ,EAAAA,CACjB,yBAAA,CAA2BF,EAAAA,CAC3B,gBAAA,CAAkBa,EAAAA,CAClB,SAAA,CAAW5B,EAAAA,CACX,QAAA,CAAUC,EAAAA,CACV,cAAA,CAAAnwB,EAAAA,CACA,YAAA,CAAcowB,EAAAA,CACd,kBAAA,CAAAhuB,EAAAA,CACA,gBAAA,CAAAqC,CAAAA,CACA,cAAA,CAAgBqsB,EAAAA,CAChB,QAASd,EAAAA,CACT,sBAAA,CAAArX,EAAAA,CACA,uBAAA,CAAA5T,CAAAA,CACA,iBAAA,CAAmBgV,EAAAA,CACnB,QAAA,CAAU8W,EACZ,CAAC,CAAA,CACK0B,EAAAA,CAA6B,CAAA,EACjC9E,EAAAA,EAAqB,CAAC1tB,EAAAA,EAAe,CAACoN,EAAAA,CAAAA,CAElCqlB,EAAAA,CACJzyB,EAAAA,GACC0tB,EAAAA,CACG,CACE,eAAA,CAAiBtgB,EAAAA,CAAa,MAAA,CAAYD,EAAAA,CAC1C,MAAA,CAAQugB,EACV,CAAA,CACA,MAAA,CAAA,CACA,CAACzuB,EAAAA,CAAuBqB,EAAwB,CAAA,CACpD+I,EAAAA,CAAqB,CACnB,YAAA,CAAc,IACZmpB,EAAAA,CAA8B1a,EAAAA,EAAc,QAAA,EAAY,EAAC,CAAK,EAAC,CACjE,QAAA,CAAU0a,EAAAA,CACNpZ,EAAAA,CACAqZ,EAAAA,EAAqB,gBAAA,CACzB,KAAA,CAAOD,EAAAA,CACH/lB,EAAAA,CACAgmB,EAAAA,EAAqB,QAC3B,CAAC,CAAA,CACG,CACJ,aAAA,CAAAlsB,EAAAA,CACA,cAAA,CAAAmsB,EAAAA,CACA,WAAA,CAAAC,EAAAA,CACA,WAAAlsB,EAAAA,CACA,YAAA,CAAAnH,EAAAA,CACA,WAAA,CAAAuH,EAAAA,CACA,YAAA,CAAAD,EAAAA,CACA,QAAA,CAAAM,EAAAA,CACA,cAAA,CAAA0rB,EAAAA,CACA,eAAA,CAAApyB,EAAAA,CACA,eAAA,CAAA2G,EACF,CAAA,CAAI0rB,GAAAA,CAAc,CAChB,OAAA,CAAArsB,CAAAA,CACA,YAAA,CAAAnH,EAAAA,CACA,OAAA,CAASkzB,EACX,CAAC,CAAA,CACKO,EAAAA,CAA0B,CAAA,CAAA,OAAA,CAC9B,KAAO,CACL,MAAA,CAAQvsB,EAAAA,CACR,cAAA,CAAgBlH,EAAAA,EAAc,cAAA,GAAmB,KAAA,CACjD,UAAA,CAAYqzB,EAAAA,CACZ,MAAA,CAAShrB,CAAAA,EAAe,CACjBR,EAAAA,CAASQ,CAAG,EACnB,CAAA,CACA,aAAA,CAAerI,EAAAA,EAAc,aAAA,GAAkB,KAAA,CAC/C,MAAA,CAAQoH,EAAAA,CACR,OAAA,CAASI,EAAAA,CACT,SAAA,CAAWD,EACb,CAAA,CAAA,CACA,CACEL,EAAAA,CACAmsB,EAAAA,CACArzB,EAAAA,EAAc,cAAA,CACdA,EAAAA,EAAc,aAAA,CACdoH,EAAAA,CACAI,GACAD,EAAAA,CACAM,EACF,CACF,CAAA,CACM,CAAE,eAAA,CAAiB6rB,EAAAA,CAAoB,cAAA,CAAAC,EAAe,CAAA,CAC1DC,GAAAA,CAA2B3D,EAAAA,CAAyB1iB,EAAe,CAAA,CAC/DsmB,EAAAA,CACJ,OAAOzF,EAAAA,EAAiB,QAAA,CAAWA,EAAAA,CAAe,MAAA,CAC9C0F,EAAAA,CAAiC,CAAA,CAAA,WAAA,CACpCpgB,CAAAA,EAAyB,CACpBA,CAAAA,GAAiBlR,EAAAA,CAAkB,QAAA,GAGnCA,EAAAA,CAAkB,SAAA,GAAc,CAAA,EAClCowB,EAAAA,CAA0B,CAAC,CAAA,CAE7BC,EAAAA,CAAyBnf,CAAY,CAAA,CACjCqd,EAAAA,GAAqB,MAAA,EACvBrhB,EAAAA,CAAmB,CAAE,SAAA,CAAW,CAAA,CAAG,QAAA,CAAUgE,CAAa,CAAC,CAAA,EAE/D,CAAA,CACA,CACElR,EAAAA,CAAkB,SAAA,CAClBA,EAAAA,CAAkB,QAAA,CAClBowB,EAAAA,CACAC,EAAAA,CACA9B,EAAAA,CACArhB,EACF,CACF,CAAA,CACMqkB,EAAAA,CACJ3F,EAAAA,GAAiB,IAAA,EAAQyF,EAAAA,GAAuB,MAAA,CAC5CG,EAAAA,CAAc,cAAY,IAC1B,OAAO,MAAA,CAAW,GAAA,EAAe,OAAO,MAAA,CAAO,KAAA,EAAU,UAAA,CACpD,KAAA,EAET,MAAA,CAAO,KAAA,EAAM,CACN,IAAA,CAAA,CACN,EAAE,CAAA,CACCC,EAAAA,CAAyB,CAAA,CAAA,WAAA,CAAY,SAAY,CACrD,IAAM/c,CAAAA,CAAUL,EAAAA,CAAa,OAAA,CAC7B,OAAI,CAACK,CAAAA,EAAW,OAAO,QAAA,CAAa,GAAA,CAC3B,KAAA,CAEL,QAAA,CAAS,kBACP,OAAO,QAAA,CAAS,cAAA,EAAmB,UAAA,CAAmB,KAAA,EAC1D,MAAM,QAAA,CAAS,cAAA,EAAe,CACvB,IAAA,CAAA,CAEL,OAAOA,CAAAA,CAAQ,iBAAA,EAAsB,UAAA,CAAmB,KAAA,EAC5D,MAAMA,CAAAA,CAAQ,iBAAA,EAAkB,CACzB,IAAA,CACT,CAAA,CAAG,EAAE,CAAA,CACC,CAACgd,EAAAA,CAAcC,EAAe,CAAA,CAAU,CAAA,CAAA,QAAA,CAAS,KAAK,CAAA,CACtD,CAAA,CAAA,SAAA,CAAU,IAAM,CACpB,GAAI,CAAC/E,EAAAA,EAAoB,OAAO,QAAA,CAAa,GAAA,CAAa,OAC1D,IAAMgF,CAAAA,CAAS,IAAM,CACnBD,EAAAA,CAAgB,QAAA,CAAS,iBAAA,GAAsBtd,EAAAA,CAAa,OAAO,EACrE,CAAA,CACA,OAAAud,CAAAA,EAAO,CACP,QAAA,CAAS,gBAAA,CAAiB,kBAAA,CAAoBA,CAAM,CAAA,CAC7C,IAAM,QAAA,CAAS,mBAAA,CAAoB,kBAAA,CAAoBA,CAAM,CACtE,CAAA,CAAG,CAAChF,EAAgB,CAAC,CAAA,CACrB,IAAMlqB,EAAAA,CAAuB,CAAA,CAAA,WAAA,CAAY,IAAM,CACzC2qB,EAAAA,EAAY,QAAA,EAIhBG,EAAAA,CAAa,OAAA,EAAS,KAAA,GACxB,CAAA,CAAG,CAACH,EAAAA,EAAY,QAAQ,CAAC,CAAA,CACnBwE,EAAAA,CAA4B,CAAA,CAAA,WAAA,CAC/BC,CAAAA,EAAkC,CACjCxB,EAAAA,CACE,CACE,MAAA,CAAQ,YACV,CAAA,CACA,IAAMjD,EAAAA,EAAY,eAAA,CAAgByE,CAAK,CACzC,EACF,CAAA,CACA,CAACzE,EAAAA,CAAYiD,EAAS,CACxB,CAAA,CAEMnjB,EAAAA,CAAehJ,EAAAA,CAA2B,CAC9C,MAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,mBAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,GAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,aAAA,CAAAC,EAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,YAAA,CAAAnH,EAAAA,CACA,UAAA,CAAAoH,EAAAA,CACA,YAAA,CAAAnH,EAAAA,CACA,kBAAA,CAAAE,EAAAA,CACA,gBAAA,CAAAkH,EAAAA,CACA,gBAAA,CAAkB,CAAA,CAAQ0G,EAAAA,CAC1B,YAAA,CAAAxG,EAAAA,CACA,WAAA,CAAAC,EAAAA,CACA,MAAA,CAAQ5G,EAAAA,CACR,oBAAA,CAAA6G,EAAAA,CACA,WAAA,CAAa2rB,EAAAA,CACb,cAAA,CAAgBxzB,EAAAA,CAChB,sBAAA,CAAwBqB,EAAAA,CACxB,0BAAA,CAAA2G,EAAAA,CACA,UAAA,CAAYorB,EAAAA,CACZ,QAAA,CAAAnrB,EAAAA,CACA,eAAA,CAAAC,GACA,QAAA,CAAAC,EACF,CAAC,CAAA,CACK6E,EAAAA,CAAyB,CAAA,CAAA,OAAA,CAC7B,IAAM2nB,CAAAA,CAA6BptB,CAAO,CAAA,CAC1C,CAACA,CAAO,CACV,CAAA,CAEM,CACJ,kBAAA,CAAAzE,EAAAA,CACA,mBAAA,CAAAC,EAAAA,CACA,2BAAA,CAAAC,EAAAA,CACA,0BAAA,CAAAC,EAAAA,CACA,gBAAA,CAAA4Q,EAAAA,CACA,YAAA,CAAA/S,EAAAA,CACA,aAAA,CAAAqS,EAAAA,CACA,gBAAA,CAAAC,EAAAA,CACA,aAAA,CAAArO,EAAAA,CACA,YAAA,CAAAyO,EAAAA,CACA,WAAA,CAAApS,EAAAA,CACA,KAAA,CAAAwE,CAAAA,CACA,oBAAA,CAAAgvB,EAAAA,CACA,iBAAA,CAAAC,EAAAA,CACA,kBAAA,CAAAjiB,EACF,CAAA,CAAI9F,EAAAA,CAAqB,CACvB,kBAAA,CAAoB,KAAA,CACpB,gBAAA,CAAAE,EAAAA,CACA,gBAAA,CAAAC,EAAAA,CACA,GAAA,CAAAC,EAAAA,CACA,oBAAA,CAAAC,EAAAA,CACA,kBAAA,CAAAC,EAAAA,CACA,oBAAA,CAAAC,EAAAA,CACA,iBAAA,CAAAC,EAAAA,CACA,oBAAAC,EAAAA,CACA,eAAA,CAAAC,EAAAA,CACA,eAAA,CAAAC,EAAAA,CACA,iBAAA,CAAA7K,EAAAA,CACA,mBAAA,CAAA7C,EAAAA,CACA,cAAA,CAAA2N,EAAAA,CACA,eAAA,CAAAC,EAAAA,CACA,aAAA,CAAAC,CAAAA,CACA,yBAAA,CAAAC,EAAAA,CACA,oBAAA,CAAAC,EAAAA,CACA,gBAAA,CAAArG,EAAAA,CACA,kBAAA,CAAAlH,EAAAA,CACA,uBAAA,CAAAwN,EAAAA,CACA,qBAAA,CAAAC,EAAAA,CACA,eAAA,CAAAC,EAAAA,CACA,eAAA,CAAAC,EAAAA,CACA,UAAA,CAAAC,GACA,cAAA,CAAAC,EAAAA,CACA,iBAAA,CAAAC,EAAAA,CACA,cAAA,CAAAC,EAAAA,CACA,iBAAA,CAAAC,EAAAA,CACA,WAAA,CAAAC,EAAAA,CACA,yBAAA,CAA2B0L,EAAAA,CAC3B,uBAAA,CAAyBE,EAAAA,CACzB,yBAAA,CAA2BC,EAAAA,CAC3B,sBAAA,CAAwBE,EAAAA,CACxB,4BAAA,CAA8BN,EAAAA,CAC9B,oBAAA,CAAsBE,EAAAA,CACtB,oBAAA,CAAsBO,EAAAA,CACtB,cAAA,CAAA/Z,EAAAA,CACA,cAAA,CAAAqO,CAAAA,CACA,eAAA,CAAAC,EAAAA,CACA,cAAA,CAAAC,EAAAA,CACA,gBAAAC,EAAAA,CACA,gBAAA,CAAAC,EAAAA,CACA,aAAA,CAAAC,EAAAA,CACA,aAAA,CAAAC,EAAAA,CACA,iBAAA,CAAmB0jB,EAAAA,CACnB,gBAAA,CAAkBC,EAAAA,CAClB,SAAA,CAAAvsB,EAAAA,CACA,SAAA,CAAWwqB,EAAAA,CACX,QAAA,CAAUC,EAAAA,CACV,oBAAA,CAAA1hB,EAAAA,CACA,kBAAA,CAAAC,EAAAA,CACA,qBAAA,CAAAC,EAAAA,CACA,sBAAA,CAAArO,EAAAA,CACA,iBAAA,CAAAsO,EAAAA,CACA,oBAAA,CAAAC,EAAAA,CACA,kBAAA,CAAAC,EAAAA,CACA,0BAAA,CAAAtO,EAAAA,CACA,YAAA,CAAAuO,EAAAA,CACA,SAAA,CAAAC,EAAAA,CACA,aAAA,CAAAC,EAAAA,CACA,QAAA,CAAA9H,EAAAA,CAEA,aAAA,CAAA+H,CAAAA,CACA,cAAA,CAAAC,EAEF,CAAC,CAAA,CACK2kB,EAAAA,CAAehY,EAAAA,CAAgB,CACnC,OAAA,CAAAvV,CAAAA,CACA,YAAA,CAAcgG,EAAAA,CACd,YAAA,CAAc,CAAA,CAAQnN,EAAAA,CACtB,kBAAA,CAAAG,EAAAA,CACA,aAAA,CAAeW,GAAW,MAAA,CAAS,CAAA,CACnC,eAAA,CAAiB,CAAA,EAAQiN,EAAAA,EAAcqlB,EAAAA,CAAAA,CACvC,UAAA,CAAAvW,EAAAA,CACA,YAAA,CAAAtb,GAAAA,CACA,kBAAA,CAAAiR,EACF,CAAC,CAAA,CACK,CAAE,wBAAA,CAAAsK,EAAAA,CAA0B,YAAA,CAAA8B,EAAAA,CAAc,eAAA,CAAAG,EAAgB,CAAA,CAC9D2V,EAAAA,CACIC,EAAAA,CAAoC,CAAA,CAAA,OAAA,CAAQ,IACzC,IAAI,GAAA,CACTxkB,CAAAA,CAAwBhJ,CAAO,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAE,MAAA,CAAA0C,CAAAA,CAAQ,KAAA,CAAAuG,CAAM,CAAA,GACjD,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAKvG,CAAAA,CAAQ,MAAM,CAAA,EACxD,OAAOA,CAAAA,CAAO,IAAA,EAAS,UAAA,CACrB,CAACwG,CAAAA,CAAYxG,CAAAA,CAAQuG,CAAK,CAAC,CAAA,CAC3B,EACL,CACH,CAAA,CACC,CAACjJ,CAAO,CAAC,CAAA,CACNytB,GAAyBpiB,EAAAA,CAAmB,MAAA,CAC5CqiB,EAAAA,CAA0B,CAAA,CAAA,OAAA,CAC9B,KAAO,CACL,QAAA,CAAAhuB,CAAAA,CACA,KAAA,CAAA2mB,CAAAA,CACA,QAAA,CAAAnO,CAAAA,CACA,SAAA,CAAAuO,CAAAA,CACA,QAAA,CAAAI,CACF,CAAA,CAAA,CACA,EACF,CAAA,CACM1tB,EAAAA,CAAqB,CAAA,CAAA,OAAA,CACzB,IACE6P,CAAAA,CAAwBhJ,CAAO,CAAA,CAAE,IAAA,CAC/B,CAAC,CAAE,MAAA,CAAA0C,CAAO,CAAA,GAAMA,CAAAA,CAAO,IAAA,EAAM,SAC/B,CAAA,CACF,CAAC1C,CAAO,CACV,CAAA,CACM2tB,EAAAA,CAA6B,CAAA,CAAA,WAAA,CACjC,CAAC9uB,CAAAA,CAAkB+uB,CAAAA,GAAwB,CAEvCjY,EAAAA,CAAyB,GAAA,CAAI9W,CAAQ,CAAA,EACrC,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAC9BR,CAAAA,CAAM,QAAA,EAAS,CAAE,YAAA,CACjBQ,CACF,CAAA,EAKFgvB,SAAAA,CAAU,IAAM,CACdxvB,CAAAA,CAAM,gBAAiBmD,EAAAA,GAAa,CAClC,GAAGA,EAAAA,CACH,CAAC3C,CAAQ,EAAG+uB,CACd,CAAA,CAAE,EACJ,CAAC,EACH,CAAA,CACA,CAACjY,EAAAA,CAA0BtX,CAAK,CAClC,CAAA,CACMyvB,EAAAA,CAAwB,CAAA,CAAA,WAAA,CAC3BjvB,CAAAA,EAAqB,CACpB,GAAI8W,EAAAA,CAAyB,GAAA,CAAI9W,CAAQ,CAAA,CAAG,CAC1CR,CAAAA,CAAM,SAAA,CAAUQ,CAAQ,CAAA,EAAG,WAAU,CACrC,MACF,CAEAR,CAAAA,CAAM,eAAA,CAAiBmD,CAAAA,EAAY,CACjC,GAAI,CAAC,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAKA,CAAAA,CAAS3C,CAAQ,CAAA,CACzD,OAAO2C,CAAAA,CAGT,IAAMC,EAAAA,CAAO,CAAE,GAAGD,CAAQ,CAAA,CAC1B,OAAA,OAAOC,EAAAA,CAAK5C,CAAQ,CAAA,CACb4C,EACT,CAAC,EACH,CAAA,CACA,CAACkU,EAAAA,CAA0BtX,CAAK,CAClC,CAAA,CAEM0vB,EAAAA,CAAe1vB,CAAAA,CAClB,mBAAA,EAAoB,CACpB,IAAA,CAAK,GAAA,CAAK6C,CAAAA,EAAQA,CAAAA,CAAI,QAAQ,CAAA,CAC3B8sB,EAAAA,CAAuB7F,EAAAA,EAAc,KAAA,EAASD,EAAAA,CAC9CnvB,EAAAA,CACJ,OAAOi1B,EAAAA,EAAyB,UAAA,CAC9BA,EAAAA,CAAqB,CACnB,IAAA,CAAMD,EAAAA,CACN,iBAAA,CAAmB10B,EACrB,CAAC,CAAA,CACC20B,EAAAA,CACAC,EAAAA,CAA4B,CAAA,CAAA,OAAA,CAChC,IACE9F,EAAAA,CACI,CACE,GAAGA,EAAAA,CACH,OAAA,CAASA,EAAAA,CAAa,OAAA,CAClB,IACEwD,EAAAA,CACE,CAAE,MAAA,CAAQ,OAAQ,CAAA,CAClBxD,EAAAA,CAAa,OACf,CAAA,CACF,MACN,CAAA,CACA,MAAA,CACN,CAACwD,EAAAA,CAAWxD,EAAY,CAC1B,CAAA,CACMjuB,EAAAA,CAAmB+zB,EAAAA,EAAqB,KAAA,EAAS,IAAA,CACrDtzB,GAAAA,CAAO,CAAA,CAAA,QAAA,CAAN,CAAe,QAAA,CAAU,IAAA,CACxB,QAAA,CAAAA,GAAAA,CAACosB,CAAAA,CAAA,CACC,MAAA,CAAQttB,EAAAA,CACR,OAAA,CAASw0B,EAAAA,CACT,IAAA,CAAMF,EAAAA,CACN,iBAAA,CAAmB10B,EAAAA,CACrB,CAAA,CACF,CAAA,CACE,MAAA,CACE,CACJ,uBAAA,CAAA6C,EAAAA,CACA,uBAAA,CAAAM,EAAAA,CACA,wBAAA,CAAA2oB,EAAAA,CACA,+BAAA,CAAAF,EAAAA,CACA,gCAAA,CAAAG,EAAAA,CACA,oBAAA,CAAAR,EACF,CAAA,CAAIT,EAAAA,CAA4B,CAC9B,OAAA,CAAAnkB,CAAAA,CACA,oBAAA,CAAA4F,EAAAA,CACA,oBAAA,CAAAE,EAAAA,CACA,SAAA,CAAAue,EAAAA,CACA,yBAAA,CAAA/d,EAAAA,CACA,mBAAA,CAAA8d,EAAAA,CACA,yBAAA,CAA2BzR,EAAAA,CAC3B,yBAAA,CAA2BG,EAAAA,CAC3B,MAAA,CAAQrZ,EAAAA,CACR,KAAA,CAAA4E,CAAAA,CACA,cAAA,CAAA4f,CAAAA,CACA,WAAA,CAAAnJ,EACF,CAAC,CAAA,CACKoZ,EAAAA,CAA8B,CAAA,CAAA,OAAA,CAClC,IACE,CACE,GAAG1xB,GACH,GAAIwrB,EAAAA,CACA,CACE,CACE,GAAA,CAAK,WAAA,CACL,KAAA,CAAOvuB,EAAAA,CAAe,KAAA,CACtB,SAAA,CAAW,UAAA,CACX,OAAA,CAAS,IAAM,CACbozB,EAAAA,GACF,CACF,CACF,CAAA,CACA,EAAC,CACL,GAAI5E,EAAAA,CACA,CACE,CACE,GAAA,CAAK,gBAAA,CACL,KAAA,CAAO8E,EAAAA,CACHtzB,EAAAA,CAAe,cAAA,CACfA,EAAAA,CAAe,eAAA,CACnB,SAAA,CAAW,UAAA,CACX,OAAA,CAAS,IAAMqzB,EAAAA,EACjB,CACF,CAAA,CACA,EACN,CAAA,CAAE,GAAA,CAAKnQ,CAAAA,GAAY,CACjB,GAAGA,CAAAA,CACH,OAAA,CAAU2D,CAAAA,EAGJ,CACJqL,EAAAA,CACE,CACE,SAAA,CAAWhP,CAAAA,CAAO,GAAA,CAClB,MAAA,CAAQ,eACV,CAAA,CACA,IAAMA,CAAAA,CAAO,OAAA,CAAQ2D,CAAO,CAC9B,EACF,CACF,CAAA,CAAE,CAAA,CACJ,CACE9jB,EAAAA,CACAyrB,EAAAA,CACAD,EAAAA,CACA+E,EAAAA,CACAF,EAAAA,CACApzB,EAAAA,CAAe,eAAA,CACfA,EAAAA,CAAe,cAAA,CACfA,EAAAA,CAAe,KAAA,CACfkyB,EAAAA,CACAmB,EACF,CACF,CAAA,CACMqB,EAAAA,CAAgC,CAAA,CAAA,OAAA,CACpC,IACEjwB,CAAAA,CAAiB,GAAA,CAAKye,CAAAA,GAAY,CAChC,GAAGA,CAAAA,CACH,OAAA,CAAU2D,CAAAA,EAAkD,CAC1DqL,GACE,CACE,SAAA,CAAWhP,CAAAA,CAAO,GAAA,CAClB,MAAA,CAAQ,iBACV,CAAA,CACA,IAAMA,CAAAA,CAAO,OAAA,CAAQ2D,CAAO,CAC9B,EACF,CACF,CAAA,CAAE,CAAA,CACJ,CAACqL,EAAAA,CAAWztB,CAAgB,CAC9B,CAAA,CACMkwB,EAAAA,CAA8B,CAAA,CAAA,OAAA,CAClC,KAAO,CACL,OAAA,CAASjoB,EAAAA,CACT,UAAA,CAAY9K,EAAAA,CACZ,YAAA,CAAc7C,EAAAA,CACd,gBAAA,CAAkBia,GAClB,aAAA,CAAe7M,EAAAA,CACf,QAAA,CAAUK,EAAAA,CACV,QAAA,CAAUC,EAAAA,CACV,WAAA,CAAaL,EAAAA,CACb,aAAA,CAAeC,EAAAA,CACf,UAAA,CAAYC,EAAAA,CACZ,YAAA,CAAcC,EAAAA,CACd,OAAA,CAASsN,EAAAA,CACT,QAAA,CAAUlN,EAAAA,CACV,cAAA,CAAgBgN,EAAAA,CAChB,YAAA,CAAc/Z,EAChB,CAAA,CAAA,CACA,CACEuM,EAAAA,CACAC,EAAAA,CACAC,EAAAA,CACAC,EAAAA,CACAC,EAAAA,CACAyM,EAAAA,CACAa,EAAAA,CACArN,EAAAA,CACAC,EAAAA,CACA7K,EAAAA,CACA7C,EAAAA,CACA4a,EAAAA,CACAjN,EAAAA,CACAC,EAAAA,CACA/M,EACF,CACF,CAAA,CACMg1B,EAAAA,CAAwB,CAAA,CAAA,WAAA,CAC5B,IAAMC,EAAAA,CAAoBF,EAAqB,CAAA,CAC/C,CAACA,EAAqB,CACxB,CAAA,CACMG,EAAAA,CAAqB,CAAA,CAAA,WAAA,CACxBC,CAAAA,EAAuC,CAClCA,CAAAA,CAAU,OAAA,GAAY,MAAA,EACxBnwB,CAAAA,CAAM,UAAA,CAAWmwB,CAAAA,CAAU,OAAO,CAAA,CAEhCA,CAAAA,CAAU,aAAe,MAAA,EAC3BnwB,CAAAA,CAAM,aAAA,CAAcmwB,CAAAA,CAAU,UAAU,CAAA,CAEtCA,CAAAA,CAAU,YAAA,GAAiB,MAAA,EAC7BnwB,CAAAA,CAAM,eAAA,CAAgBmwB,CAAAA,CAAU,YAAY,CAAA,CAE1CA,CAAAA,CAAU,gBAAA,GAAqB,MAAA,EACjCnwB,CAAAA,CAAM,mBAAA,CAAoBmwB,CAAAA,CAAU,gBAAgB,CAAA,CAElDA,CAAAA,CAAU,aAAA,GAAkB,MAAA,EAC9BnwB,CAAAA,CAAM,gBAAA,CAAiBmwB,CAAAA,CAAU,aAAa,CAAA,CAE5CA,CAAAA,CAAU,QAAA,GAAa,MAAA,EACzBnwB,CAAAA,CAAM,WAAA,CAAYmwB,CAAAA,CAAU,QAAQ,CAAA,CAElCA,CAAAA,CAAU,QAAA,GAAa,MAAA,EACzBnwB,CAAAA,CAAM,WAAA,CAAYmwB,CAAAA,CAAU,QAAQ,CAAA,CAElCA,CAAAA,CAAU,WAAA,GAAgB,MAAA,EAC5BnwB,CAAAA,CAAM,cAAA,CAAemwB,CAAAA,CAAU,WAAW,CAAA,CAExCA,CAAAA,CAAU,aAAA,GAAkB,MAAA,EAC9BnwB,CAAAA,CAAM,gBAAA,CAAiBmwB,CAAAA,CAAU,aAAa,CAAA,CAE5CA,CAAAA,CAAU,UAAA,GAAe,QAC3BnwB,CAAAA,CAAM,aAAA,CAAcmwB,CAAAA,CAAU,UAAU,CAAA,CAEtCA,CAAAA,CAAU,YAAA,GAAiB,MAAA,EAC7BnwB,CAAAA,CAAM,eAAA,CAAgBmwB,CAAAA,CAAU,YAAY,CAAA,CAE1CA,CAAAA,CAAU,OAAA,GAAY,MAAA,EACxBna,EAAAA,CAAoBma,CAAAA,CAAU,OAAO,CAAA,CAEnCA,CAAAA,CAAU,QAAA,GAAa,MAAA,EACzBva,EAAAA,CAAqBua,CAAAA,CAAU,QAAQ,CAAA,CAErCA,CAAAA,CAAU,cAAA,GAAmB,MAAA,EAC/Bra,EAAAA,CAA2Bqa,CAAAA,CAAU,cAAc,CAAA,CAEjDA,CAAAA,CAAU,YAAA,GAAiB,MAAA,EAC7B7a,EAAAA,CAAoB6a,CAAAA,CAAU,YAAY,EAE9C,CAAA,CACA,CACEna,EAAAA,CACAF,EAAAA,CACAF,EAAAA,CACAN,EAAAA,CACAtV,CACF,CACF,CAAA,CACMowB,EAAAA,CAA4B,CAAA,CAAA,WAAA,CAChC,IAAMjhB,EAAAA,CAA0BG,EAAAA,EAAemD,CAAc,CAAA,CAC7D,CAACA,CAAAA,CAAgBnD,EAAW,CAC9B,CAAA,CACM+gB,EAAAA,CAA0B,CAAA,CAAA,WAAA,CAG7Bh0B,GAAY,CACPA,CAAAA,EAAS,gBAAA,EACX+zB,EAAAA,EAAoB,CAEtBF,EAAAA,CAAa,CACX,gBAAA,CAAkBjd,EAAAA,EAAc,gBAAA,EAAoB,EAAC,CACrD,WAAA,CAAaA,EAAAA,EAAc,WAAA,EAAe,EAAC,CAC3C,aAAA,CACEA,EAAAA,EAAc,aAAA,EAAiByB,CAAAA,CAAwB/S,CAAO,CAAA,CAChE,UAAA,CAAYsR,EAAAA,EAAc,UAAA,EAAc,CAAE,GAAA,CAAK,EAAC,CAAG,MAAA,CAAQ,EAAG,CAAA,CAC9D,YAAA,CAAcA,EAAAA,EAAc,YAAA,EAAgB,EAC9C,CAAC,EACH,CAAA,CACA,CACEmd,EAAAA,CACAzuB,CAAAA,CACAsR,EAAAA,CACAid,EACF,CACF,CAAA,CACMI,EAAAA,CAAmB,CAAA,CAAA,WAAA,CACtBj0B,CAAAA,EAAY,CACPA,CAAAA,EAAS,gBAAA,EACX+zB,EAAAA,EAAoB,CAEtBF,EAAAA,CAAa,CACX,OAAA,CAASjd,EAAAA,EAAc,OAAA,EAAW,EAAC,CACnC,UAAA,CAAYA,IAAc,UAAA,EAAc,CACtC,SAAA,CAAW,CAAA,CACX,QAAA,CAAUzV,EAAAA,CAAmB,CAAC,CAAA,EAAK,EACrC,CAAA,CACA,YAAA,CAAcyV,EAAAA,EAAc,YAAA,EAAgB,EAAC,CAC7C,gBAAA,CAAkBA,EAAAA,EAAc,gBAAA,EAAoB,EAAC,CACrD,aAAA,CAAeA,EAAAA,EAAc,aAAA,EAAiB,EAAC,CAC/C,QAAA,CAAUA,EAAAA,EAAc,QAAA,EAAY,EAAC,CACrC,QAAA,CAAUA,EAAAA,EAAc,QAAA,EAAY,EAAC,CACrC,WAAA,CAAaA,EAAAA,EAAc,WAAA,EAAe,EAAC,CAC3C,aAAA,CACEA,EAAAA,EAAc,aAAA,EAAiByB,CAAAA,CAAwB/S,CAAO,CAAA,CAChE,UAAA,CAAYsR,EAAAA,EAAc,UAAA,EAAc,CAAE,GAAA,CAAK,EAAC,CAAG,MAAA,CAAQ,EAAG,CAAA,CAC9D,YAAA,CAAcA,EAAAA,EAAc,YAAA,EAAgB,EAAC,CAC7C,OAAA,CAASA,EAAAA,EAAc,SAAW,aAAA,CAClC,QAAA,CAAUA,EAAAA,EAAc,QAAA,EAAY,OAAA,CACpC,cAAA,CAAgBA,EAAAA,EAAc,cAAA,EAAkB,KAAA,CAChD,YAAA,CAAcA,EAAAA,EAAc,YAAA,EAAgB,EAC9C,CAAC,EACH,CAAA,CACA,CACEmd,EAAAA,CACAzuB,CAAAA,CACAsR,EAAAA,CACAid,EAAAA,CACA1yB,EACF,CACF,CAAA,CACM+yB,EAAAA,CAAsB,CAAA,CAAA,WAAA,CAC1B,IAAMpM,EAAAA,CAAwBrkB,EAAU,CAAA,CACxC,CAACA,EAAU,CACb,CAAA,CACM0wB,EAAAA,CAAwB,CAAA,CAAA,WAAA,CAG3BvvB,CAAAA,EACCqjB,EAAAA,CAAyBxkB,EAAAA,CAAYmB,CAAAA,CAAM+uB,EAAAA,EAAiB,CAAA,CAC9D,CAACA,EAAAA,CAAiBlwB,EAAU,CAC9B,CAAA,CACM2wB,EAAAA,CAAuB,CAAA,CAAA,WAAA,CAG1BjP,CAAAA,EAAO,CACN,IAAM4C,CAAAA,CAAOD,EAAAA,CAAwBrkB,EAAU,CAAA,CAAE,IAAA,CAC9CiP,EAAAA,EAAcA,EAAAA,CAAU,EAAA,GAAOyS,CAClC,CAAA,CACA,OAAK4C,GAGL8L,EAAAA,CAAa9L,CAAAA,CAAK,KAAK,CAAA,CACvBtkB,EAAAA,EAAY,OAAA,GAAUskB,CAAI,CAAA,CACnB,IAAA,EAJE,KAKX,CAAA,CACA,CAAC8L,EAAAA,CAAcpwB,EAAU,CAC3B,CAAA,CACM4wB,EAAAA,CAAwB,CAAA,CAAA,WAAA,CAG5B,CAAClP,CAAAA,CAAIvgB,CAAAA,GAAS8jB,EAAAA,CAAyBjlB,EAAAA,CAAY0hB,CAAAA,CAAIvgB,CAAI,CAAA,CAC3D,CAACnB,EAAU,CACb,CAAA,CACM6wB,EAAAA,CAAwB,CAAA,CAAA,WAAA,CAG3BnP,CAAAA,EAAOyD,EAAAA,CAAyBnlB,EAAAA,CAAY0hB,CAAE,CAAA,CAC/C,CAAC1hB,EAAU,CACb,CAAA,CACM8wB,EAAAA,CAAwB,CAAA,CAAA,WAAA,CAC5B,IAAM1L,EAAAA,CAAyBplB,EAAU,CAAA,CACzC,CAACA,EAAU,CACb,CAAA,CACM+wB,EAAAA,CAA0B,CAAA,CAAA,OAAA,CAAQ,IAE/B1M,EAAAA,CAAwBrkB,EAAU,CAAA,CACxC,CAACA,EAAAA,CAAY6qB,EAAwB,CAAC,CAAA,CACnCmG,EAAAA,CAAqC,CAAA,CAAA,WAAA,CACxC7vB,GAAiB,CAChB,IAAMmjB,CAAAA,CAAOoM,EAAAA,CAAgBvvB,CAAI,CAAA,CACjC,OAAImjB,CAAAA,EACFwG,EAAAA,CAA6BznB,EAAAA,EAAYA,EAAAA,CAAU,CAAC,CAAA,CAE/CihB,CACT,CAAA,CACA,CAACoM,EAAe,CAClB,CAAA,CACMO,EAAAA,CAAqC,CAAA,CAAA,WAAA,CACzC,CAACvP,CAAAA,CAAYvgB,CAAAA,GAAiB,CAC5B,IAAMmjB,EAAAA,CAAOsM,EAAAA,CAAgBlP,CAAAA,CAAIvgB,CAAI,CAAA,CACrC,OAAImjB,IACFwG,EAAAA,CAA6BznB,EAAAA,EAAYA,EAAAA,CAAU,CAAC,CAAA,CAE/CihB,EACT,CAAA,CACA,CAACsM,EAAe,CAClB,CAAA,CACMM,EAAAA,CAAqC,CAAA,CAAA,WAAA,CACxCxP,CAAAA,EAAe,CACd,IAAMyP,CAAAA,CAAUN,EAAAA,CAAgBnP,CAAE,CAAA,CAClC,OAAIyP,CAAAA,EACFrG,EAAAA,CAA6BznB,EAAAA,EAAYA,EAAAA,CAAU,CAAC,CAAA,CAE/C8tB,CACT,CAAA,CACA,CAACN,EAAe,CAClB,EACMO,EAAAA,CAAyB,CAAA,CAAA,WAAA,CAG5B70B,GAAAA,EACC6qB,CAAAA,CAAmB,CACjB,SAAA,CAAW7qB,GAAAA,GAAY2pB,EAAAA,EAAa,IAAA,CAAA,CACpC,MAAA,CAAQ5qB,EAAAA,CACR,KAAA,CAAA4E,CACF,CAAC,CAAA,CACH,CAACgmB,EAAAA,CAAW5qB,EAAAA,CAAgB4E,CAAK,CACnC,CAAA,CACMmxB,EAAAA,CAAwB,CAAA,CAAA,WAAA,CAG5B,MAAO90B,CAAAA,EAAY,CACjB,GAAM,CAAE,wBAAA,CAAA+0B,CAAyB,CAAA,CAAI,MAAM,OACzC,oCACF,CAAA,CACA,OAAOA,CAAAA,CAAyB,CAC9B,SAAA,CACE/0B,CAAAA,GACC2sB,CAAAA,EAAW,IAAA,GAAS,KAAA,CACjB,KAAA,CACAkC,EAAAA,CACE,CACE,GAAIlC,CAAAA,EAAW,IAAA,GAAS,IAAA,CAAO,EAAC,CAAIA,CAAAA,EAAW,IAAA,CAC/C,KAAA,CAAO,eACT,CAAA,CACAA,CAAAA,EAAW,IAAA,EAAQ,IAAA,CAAA,CAC3B,aAAA,CAAekC,EAAAA,CACf,KAAA,CAAAlrB,CACF,CAAC,CACH,CAAA,CACA,CAACgpB,CAAAA,EAAW,IAAA,CAAMkC,EAAAA,CAAsBlrB,CAAK,CAC/C,CAAA,CACMqxB,EAAAA,CAAe,CAAA,CAAA,WAAA,CACnB,CAACtwB,CAAAA,CAAOwD,CAAAA,CAAW,KAAA,GAAU,CAC3B,GAAI,CACF,IAAM1B,EAAAA,CAAM7C,CAAAA,CAAM,MAAA,CAAOe,CAAAA,CAAO,CAAA,CAAI,CAAA,CACpC,OAAK8B,EAAAA,CAAI,SAAA,EAAU,EAGnBA,EAAAA,CAAI,GAAA,CAAI0B,CAAQ,CAAA,CACT,CAAA,CAAA,EAHE,CAAA,CAIX,CAAA,KAAQ,CACN,OAAO,MACT,CACF,CAAA,CACA,CAACvE,CAAK,CACR,CAAA,CACMsxB,EAAAA,CAAiB,CAAA,CAAA,WAAA,CACpBvwB,CAAAA,EAAU,CACT,GAAI,CACF,IAAM8B,CAAAA,CAAM7C,CAAAA,CAAM,MAAA,CAAOe,CAAAA,CAAO,CAAA,CAAI,CAAA,CACpC,OAAK8B,CAAAA,CAAI,SAAA,EAAU,EAGnBA,CAAAA,CAAI,GAAA,CAAI,EAAK,CAAA,CACN,CAAA,CAAA,EAHE,CAAA,CAIX,CAAA,KAAQ,CACN,OAAO,MACT,CACF,CAAA,CACA,CAAC7C,CAAK,CACR,CAAA,CACA,OAAM,CAAA,CAAA,mBAAA,CACJypB,EAAAA,CACA,KAAO,CACL,QAAA,CAAU,IAAMlnB,EAAAA,CAAS,OAAA,CACzB,QAAA,CAAUytB,EAAAA,CACV,QAAA,CAAUA,EAAAA,CACV,OAAA,CAASE,EAAAA,CACT,iBAAA,CAAAG,EAAAA,CACA,UAAA,CAAAC,EAAAA,CACA,mBAAA,CAAAF,EAAAA,CACA,aAAA,CAAAG,EAAAA,CACA,eAAA,CAAAC,EAAAA,CACA,cAAA,CAAAC,EAAAA,CACA,eAAA,CAAAC,EAAAA,CACA,eAAA,CAAAC,EAAAA,CACA,eAAA,CAAAC,EAAAA,CACA,MAAA,CAAAS,EAAAA,CACA,QAAA,CAAAC,EAAAA,CACA,KAAA,CAAO,IAAM,CACXjgB,EAAAA,CAAa,OAAA,EAAS,KAAA,GACxB,CAAA,CACA,WAAA,CAActQ,CAAAA,EACZwwB,EAAAA,CAA+BlgB,EAAAA,CAAa,OAAA,CAAS,KAAA,CAAOtQ,CAAK,CAAA,CACnE,cAAA,CAAiBP,CAAAA,EACf+wB,EAAAA,CACElgB,EAAAA,CAAa,OAAA,CACb,QAAA,CACA7Q,CACF,CAAA,CACF,SAAA,CAAW0wB,EAAAA,CACX,eAAA,CAAAC,EAAAA,CACA,gBAAA,CAAkB,IAAMjG,EAAAA,CACxB,gBAAA,CAAkBC,EAAAA,CAClB,kBAAA,CAAoB,IAAMA,EAAAA,CAAwB,IAAI,CAAA,CACtD,KAAA,CAAAqD,EAAAA,CACA,gBAAA,CAAAC,EACF,CAAA,CAAA,CACA,CACEgC,EAAAA,CACAL,EAAAA,CACAQ,EAAAA,CACAO,GACAjG,EAAAA,CACAsF,EAAAA,CACAG,EAAAA,CACAO,EAAAA,CACAX,EAAAA,CACAP,EAAAA,CACAU,EAAAA,CACAL,EAAAA,CACAC,EAAAA,CACAJ,EAAAA,CACAmB,EAAAA,CACA7C,EAAAA,CACArD,EAAAA,CACAmG,EAAAA,CACA7C,EACF,CACF,CAAA,CAGEnyB,GAAAA,CAACmsB,CAAAA,CAAA,CACC,QAAA,CAAAlsB,IAAAA,CAAC,KAAA,CAAA,CACC,GAAA,CAAK8U,EAAAA,CACL,eAAA,CAAc,iBAAA,CACd,cAAA,CAAc4D,EAAAA,CACd,uBAAA,CAAuBmV,EAAAA,EAAe,MAAA,CACtC,YAAWlX,EAAAA,EAAa,MAAA,CACxB,GAAA,CAAK5L,EAAAA,CACL,QAAA,CAAU,EAAA,CACV,SAAA,CAAW9K,GAAAA,CACT,+EAAA,CACA5B,EAAAA,CAAW,uBAAA,CAA0B,MAAA,CACrCmtB,CACF,CAAA,CACA,WAAA,CAAaxtB,EAAAA,EAAa,WAAA,CAC1B,UAAA,CAAYA,EAAAA,EAAa,UAAA,CACzB,WAAA,CAAaA,EAAAA,EAAa,WAAA,CAC1B,MAAA,CAAQA,EAAAA,EAAa,MAAA,CACrB,SAAA,CAAY6J,CAAAA,EAAU,CACpB,GACE6mB,EAAAA,EACA5B,EAAAA,GACCjlB,CAAAA,CAAM,OAAA,EAAWA,CAAAA,CAAM,OAAA,CAAA,EACxBA,CAAAA,CAAM,GAAA,CAAI,WAAA,EAAY,GAAM,GAAA,EAC5B,CAACotB,EAAAA,CAAmCptB,CAAAA,CAAM,MAAM,CAAA,CAChD,CACA,IAAMqtB,CAAAA,CAAUrtB,CAAAA,CAAM,QAAA,CAAWilB,EAAAA,CAAa,IAAA,CAAOA,EAAAA,CAAa,IAAA,CAC9DoI,CAAAA,GACFrtB,CAAAA,CAAM,cAAA,EAAe,CACrBkpB,EAAAA,CACE,CAAE,MAAA,CAAQlpB,CAAAA,CAAM,QAAA,CAAW,OAAS,MAAO,CAAA,CAC3C,IAAMqtB,CAAAA,CAAQ,CAAE,aAAA,CAAevG,EAAAA,CAAsB,KAAA,CAAAlrB,CAAM,CAAC,CAC9D,CAAA,CAAA,CAEF,MACF,CAEE,CAACgpB,CAAAA,EAAW,IAAA,EACZ,EAAE5kB,CAAAA,CAAM,OAAA,EAAWA,CAAAA,CAAM,OAAA,CAAA,EACzBA,CAAAA,CAAM,GAAA,CAAI,WAAA,EAAY,GAAM,GAAA,EAC5BotB,EAAAA,CAAmCptB,CAAAA,CAAM,MAAM,CAAA,GAIjDA,CAAAA,CAAM,cAAA,EAAe,CACrBkpB,EAAAA,CACE,CAAE,MAAA,CAAQ,eAAgB,CAAA,CAC1B,SAAY,CACV,MAAM6D,EAAAA,CACJnI,CAAAA,CAAU,IAAA,GAAS,IAAA,CACf,MAAA,CACAkC,EAAAA,EACE,OAAOlC,CAAAA,CAAU,IAAA,EAAS,QAAA,EAC1B,CAACA,CAAAA,CAAU,IAAA,CAAK,KAAA,CAChB,CAAE,GAAGA,CAAAA,CAAU,IAAA,CAAM,KAAA,CAAO,eAAgB,CAAA,CAC5CA,CAAAA,CAAU,IAClB,EACF,CACF,CAAA,EACF,CAAA,CACA,OAAA,CAAU5kB,CAAAA,EAAU,CAClB,IAAMstB,CAAAA,CAAQ1I,CAAAA,EAAW,KAAA,CACzB,GACE,CAAC0I,CAAAA,EACDA,CAAAA,CAAM,OAAA,GAAY,KAAA,EAClBF,EAAAA,CAAmCptB,CAAAA,CAAM,MAAM,CAAA,CAE/C,OAEF,IAAM6C,EAAAA,CAAO7C,CAAAA,CAAM,aAAA,CAAc,OAAA,CAAQ,YAAY,CAAA,CAChD6C,EAAAA,GAAAA,CAGDyqB,CAAAA,CAAM,cAAA,EAAkB,IAAA,GAC1BttB,CAAAA,CAAM,cAAA,EAAe,CAEvBkpB,EAAAA,CACE,CAAE,MAAA,CAAQ,gBAAiB,CAAA,CAC3B,SAAY,CACV,GAAM,CAAE,2BAAA,CAAAqE,EAA4B,CAAA,CAAI,MAAM,OAC5C,oCACF,CAAA,CACA,OAAOD,CAAAA,CAAM,OAAA,CAAQ,CACnB,KAAA,CAAA1xB,CAAAA,CACA,IAAA,CAAAiH,EAAAA,CACA,MAAA,CAAQ0qB,EAAAA,CAA4B1qB,EAAI,CAC1C,CAAC,CACH,CACF,CAAA,EACF,CAAA,CAEC,QAAA,CAAA,CAAAsnB,EAAAA,CACCjyB,GAAAA,CAAO,CAAA,CAAA,QAAA,CAAN,CAAe,QAAA,CAAU,IAAA,CACxB,QAAA,CAAAA,GAAAA,CAACsrB,EAAAA,CAAA,CACC,MAAA,CAAQyG,EAAAA,CACR,eAAA,CAAiBrxB,EAAAA,CAAkB,QAAA,CACnC,OAAA,CAAO,IAAA,CACP,gBAAA,CAAkBsxB,EAAAA,CAClB,eAAA,CAAiBJ,EAAAA,CACjB,cAAA,CAAgBC,EAAAA,CAClB,CAAA,CACF,CAAA,CACE,IAAA,CACH9D,EAAAA,CACC/tB,IAAC,OAAA,CAAA,CACC,GAAA,CAAKkuB,EAAAA,CACL,SAAA,CAAU,QAAA,CACV,IAAA,CAAK,MAAA,CACL,MAAA,CAAQH,EAAAA,CAAW,MAAA,CACnB,QAAA,CAAUA,EAAAA,CAAW,QAAA,EAAY,IAAA,CACjC,QAAA,CAAUA,EAAAA,CAAW,QAAA,CACrB,QAAA,CAAWjmB,CAAAA,EAAU,CACnB,IAAM0qB,CAAAA,CAAQ1qB,CAAAA,CAAM,aAAA,CAAc,KAAA,CAC9B0qB,CAAAA,EAAO,MAAA,EACTD,EAAAA,CAAoBC,CAAK,CAAA,CAE3B1qB,CAAAA,CAAM,aAAA,CAAc,MAAQ,GAC9B,CAAA,CACF,CAAA,CACE,IAAA,CACJ9H,GAAAA,CAAC,KAAA,CAAA,CACC,eAAA,CAAc,mBAAA,CACd,SAAA,CAAWE,GAAAA,CACT,sBAAA,CACA5B,EAAAA,CAAW,gBAAA,CAAmB,MAChC,CAAA,CAEA,QAAA,CAAA2B,IAAAA,CAAC,KAAA,CAAA,CACC,eAAA,CAAc,iBAAA,CACd,SAAA,CAAWC,GAAAA,CACT,4BAAA,CACA5B,EAAAA,CAAW,gBAAA,CAAmB,MAAA,CAC9BsvB,EACF,CAAA,CAEC,QAAA,CAAA,CAAAD,EAAAA,CACC3tB,GAAAA,CAACoB,EAAAA,CAAA,CACC,OAAA,CAASgyB,EAAAA,CACT,aAAA,CAAenJ,EAAAA,CACf,uBAAA,CAAyB1oB,EAAAA,CACzB,cAAA,CAAgBC,CAAAA,CAChB,aAAA,CAAeC,EAAAA,CACf,gBAAA,CAAkBC,CAAAA,CAClB,OAAA,CAASiX,EAAAA,CACT,WAAA,CAAahX,CAAAA,CACb,aAAA,CAAeC,EAAAA,CACf,uBAAA,CAAyB2xB,EAAAA,CACzB,mBAAA,CAAqBzxB,EAAAA,CACrB,cAAA,CAAgBC,EAAAA,CAChB,0BAAA,CAA4B2sB,EAAAA,CAAkB,aAAA,GAAkB,IAAA,CAChE,wBAAA,CAA0B,CAAA,CAAQ1B,EAAAA,CAClC,yBAA0B0B,EAAAA,CAAkB,WAAA,GAAgB,IAAA,CAC5D,uBAAA,CACEA,EAAAA,CAAkB,UAAA,GAAe,IAAA,EAAQ,CAAA,CAAQlrB,EAAAA,CAEnD,mBAAA,CAAqBpB,EAAAA,CACrB,gBAAA,CAAkBC,EAAAA,EAAoB,CAAA,CAAQzE,EAAAA,CAC9C,eAAA,CAAiB8Y,EAAAA,EAAY,KAAA,CAC7B,MAAA,CAAQ5X,EAAAA,CACR,oBAAA,CAAsB0rB,EAAAA,CACtB,oBAAA,CAAsBF,EAAAA,CACtB,qBAAA,CAAuBG,EAAAA,CACvB,eAAA,CAAiB/Q,EAAAA,CACjB,sBAAA,CAAwBF,EAAAA,CACxB,yBAAA,CAA2BR,EAAAA,CAC3B,aAAA,CAAenW,EAAAA,CACf,mBAAA,CAAqBkxB,EAAAA,CACrB,iBAAA,CAAmBS,EAAAA,CACnB,gBAAA,CAAkBL,EAAAA,CAClB,iBAAA,CAAmBM,EAAAA,CACnB,iBAAA,CAAmBC,EAAAA,CACnB,gBAAA,CAAkBpb,EAAAA,CAClB,cAAA,CAAgByU,EAAAA,CAAa3qB,EAAAA,CAAiB,MAAA,CAC9C,cAAA,CAAgBC,EAAAA,CAChB,YAAA,CAAcC,EAAAA,CACd,gBAAA,CAAkBkwB,EAAAA,CAClB,UAAA,CAAYe,EAAAA,CACZ,cAAA,CAAgB9b,EAAAA,CAChB,KAAA,CAAO/U,CAAAA,CACP,KAAA,CAAOC,CAAAA,CACP,QAASC,EAAAA,CACT,uBAAA,CAAyBkV,EAAAA,CACzB,iBAAA,CAAmBpa,EAAAA,CACnB,iBAAA,CAAmBqF,EAAAA,CACnB,QAAA,CAAU0H,EAAAA,CACZ,CAAA,CACE,IAAA,CAENzL,GAAAA,CAAC,KAAA,CAAA,CACC,eAAA,CAAc,oBAAA,CACd,SAAA,CAAWE,GAAAA,CAAG5B,EAAAA,CAAW,8BAAA,CAAiC,EAAE,CAAA,CAE3D,QAAA,CAAAmN,EAAAA,GAAoB,MAAA,EAAU7N,EAAAA,CAC7BoC,GAAAA,CAACK,CAAAA,CAAA,CACC,aAAA,CAAe5C,EAAAA,CACf,iBAAA,CAAmBC,EAAAA,CACnB,UAAA,CAAYC,EAAAA,CACZ,YAAA,CAAcC,EAAAA,CACd,cAAA,CAAgBqb,EAAAA,CAChB,qBAAA,CAAuBnb,EAAAA,CACvB,mBAAA,CAAqBD,EAAAA,CACrB,iBAAA,CAAmBE,CAAAA,CACnB,mBAAA,CAAqBC,CAAAA,CACrB,WAAA,CAAaC,EAAAA,CACb,YAAA,CAAcC,EAAAA,CACd,YAAA,CAAcC,EAAAA,CACd,SAAA,CAAWC,EAAAA,CACX,gBAAA,CAAkBmB,EAAAA,CAClB,kBAAA,CAAoBlB,EAAAA,CACpB,QAAA,CAAUC,EAAAA,CACV,eAAA,CAAiBC,EAAAA,CACjB,YAAA,CAAcC,EAAAA,CACd,eAAgBC,EAAAA,CAChB,gBAAA,CAAkBC,EAAAA,CAClB,UAAA,CAAYyyB,EAAAA,CACZ,YAAA,CAAcvyB,EAAAA,CACd,WAAA,CAAa0yB,EAAAA,CACb,cAAA,CAAgBxyB,EAAAA,CAChB,uBAAA,CAAyBC,EAAAA,CACzB,UAAA,CAAYmyB,EAAAA,CACZ,UAAA,CAAYjyB,GAAAA,CACZ,WAAA,CAAaC,EAAAA,CACb,wBAAA,CAA0BC,EAAAA,CAC1B,sBAAA,CAAwBC,EAAAA,CACxB,eAAA,CAAiBC,EAAAA,CACjB,0BAAA,CAA4BC,EAAAA,CAC5B,uBAAA,CAAyBE,EAAAA,CACzB,YAAA,CAAcC,GAAAA,CACd,cAAA,CAAgBwO,GAClB,CAAA,CAEAjO,GAAAA,CAAC0nB,CAAAA,CAAA,CACC,eAAA,CAAiB9lB,EAAAA,CACjB,cAAA,CAAgBgC,EAAAA,CAChB,iBAAA,CAAmBmvB,EAAAA,CACnB,aAAA,CAAeH,EAAAA,CAAa,aAAA,CAC5B,cAAA,CAAgBja,EAAAA,CAChB,uBAAA,CAAyB8T,EAAAA,CACzB,qBAAA,CAAuB3uB,EAAAA,CACvB,cAAA,CAAgB0N,EAAAA,CAChB,GAAA,CAAKR,EAAAA,CACL,mBAAA,CAAqBhN,CAAAA,CACrB,WAAA,CAAaC,EAAAA,CACb,kBAAA,CAAoBmwB,EAAAA,CACpB,WAAA,CAAaoD,EAAAA,CACb,YAAA,CAAcrzB,GACd,cAAA,CAAgBwzB,EAAAA,CAChB,SAAA,CAAWvzB,EAAAA,CACX,gBAAA,CAAkBmB,EAAAA,CAClB,sBAAA,CAAwBitB,EAAAA,CACxB,oBAAA,CAAsB5gB,EAAAA,CACtB,2BAAA,CAA6BinB,EAAAA,CAC7B,YAAA,CAAc/V,EAAAA,CACd,QAAA,CAAUxe,EAAAA,CACV,eAAA,CAAiB2e,EAAAA,CACjB,eAAA,CAAiB1e,EAAAA,CACjB,kBAAA,CAAoBkvB,EAAAA,CACpB,cAAA,CAAgBhvB,EAAAA,CAChB,UAAA,CAAYsc,EAAAA,CACZ,gBAAA,CAAkBrc,EAAAA,CAClB,UAAA,CAAYyyB,EAAAA,CACZ,oBAAA,CAAsB6B,EAAAA,CACtB,YAAA,CAAcp0B,EAAAA,CACd,WAAA,CAAa0yB,EAAAA,CACb,aAAA,CAAergB,EAAAA,CACf,gBAAA,CAAkBC,EAAAA,CAClB,aAAA,CAAerO,EAAAA,CACf,eAAA,CAAiBswB,EAAAA,CACjB,cAAA,CAAgBr0B,EAAAA,CAChB,YAAA,CAAcwS,EAAAA,CACd,UAAA,CAAYrS,GAAAA,CACZ,SAAA,CAAW0sB,CAAAA,CACX,WAAA,CAAazsB,EAAAA,CACb,cAAA,CAAgBuyB,EAAAA,CAChB,0BAAA,CAA4BnyB,EAAAA,CAC5B,YAAA,CAAcouB,EAAAA,CACd,WAAA,CAAaI,EAAAA,CACb,WAAA,CAAaV,EAAAA,CACb,MAAO1pB,CAAAA,CACP,cAAA,CAAgBmqB,EAAAA,CAChB,uBAAA,CAAyBruB,EAAAA,CACzB,KAAA,CAAOosB,CAAAA,CACP,SAAA,CAAWC,CAAAA,CACX,SAAA,CAAWC,CAAAA,CACX,WAAA,CAAaC,GAAAA,CACb,SAAA,CAAWC,CAAAA,CACX,WAAA,CAAaC,CAAAA,CACb,QAAA,CAAUC,CAAAA,CACV,uBAAA,CAAyBiC,EAAAA,CACzB,kBAAA,CAAoByD,EAAAA,CACpB,YAAA,CAAcnyB,GAAAA,CACd,cAAA,CAAgBoyB,EAAAA,CAChB,cAAA,CAAgB5jB,EAAAA,CAChB,QAAA,CAAU0gB,EAAAA,CACV,YAAA,CACEX,EAAAA,EAAe,QAAA,GACd,OAAOC,EAAAA,EAAoB,QAAA,CACxBA,EAAAA,CAAgB,QAAA,CAChB,MAAA,CAAA,CAEN,oBAAA,CACEU,EAAAA,GACChC,EAAAA,EACDC,EAAAA,GAAkB,MAAA,EAClBC,EAAAA,GAAyB,MAAA,CAAA,CAE3B,aAAA,CAAe+B,EAAAA,CACf,qBAAA,CAAuBC,EAAAA,CACvB,aAAA,CACE3hB,EAAAA,CACIxM,EAAAA,CAAkB,SAAA,CAAYA,EAAAA,CAAkB,QAAA,CAChD,CAAA,CAEN,aAAA,CAAesN,CAAAA,CACf,oBAAA,CAAsB0kB,EAAAA,CACtB,iBAAA,CAAmBC,EAAAA,CACnB,uBAAwBG,EAAAA,CACxB,kBAAA,CAAoBpiB,EAAAA,CACtB,CAAA,CAEJ,CAAA,CACA1Q,GAAAA,CAACQ,EAAAA,CAAA,CACC,iBAAA,CAAmBE,EAAAA,CACnB,eAAA,CAAiBC,CAAAA,CACjB,kBAAA,CAAoBC,EAAAA,CACpB,mBAAA,CAAqBC,EAAAA,CACrB,2BAAA,CAA6BC,EAAAA,CAC7B,0BAAA,CAA4BC,EAAAA,CAC5B,MAAA,CAAQjC,EAAAA,CACR,cAAA,CAAgB6S,EAAAA,CAChB,kBAAA,CAAoBzQ,EAAAA,CACpB,UAAA,CAAYC,EAAAA,EAAc,CAAC1C,EAAAA,EAAgB,OAAA,CAE1C,QAAA,CAAAgC,CAAAA,CACH,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CAAA,CACA,CAAA,CACF,CAEJ,CACF,CAEA,SAASwwB,EAAAA,CACPjP,CAAAA,CACA2D,CAAAA,CACAvY,CAAAA,CACA,CACA,IAAIxD,CAAAA,CACJ,GAAI,CACFA,CAAAA,CAASoY,CAAAA,GACX,CAAA,MAASxY,CAAAA,CAAO,CACd4D,CAAAA,GAAgB,CAAE,GAAGuY,CAAAA,CAAS,KAAA,CAAAnc,CAAM,CAAC,CAAA,CACrC,MACF,CAEK,OAAA,CAAQ,OAAA,CAAQI,CAAM,CAAA,CAAE,KAAA,CAAOJ,CAAAA,EAAmB,CACrD4D,CAAAA,GAAgB,CAAE,GAAGuY,CAAAA,CAAS,KAAA,CAAAnc,CAAM,CAAC,EACvC,CAAC,EACH,CAEA,SAASwmB,EAAAA,CACPjd,CAAAA,CACAuiB,CAAAA,CAGApI,CAAAA,CACA,CACA,IAAMqI,CAAAA,CAAqB,CAAA,CAAA,WAAA,CACxBltB,CAAAA,EAAiD,CAChDitB,CAAAA,GAAiBjtB,CAAK,EACtB6kB,CAAAA,GAAiBrmB,CAAAA,GAAa,CAC5B,GAAGA,CAAAA,CACH,CAACkM,CAAG,EAAG1K,CACT,CAAA,CAAE,EACJ,CAAA,CACA,CAAC0K,CAAAA,CAAKuiB,CAAAA,CAAgBpI,CAAa,CACrC,CAAA,CAEA,OAAOoI,CAAAA,EAAkBpI,CAAAA,CAAgBqI,CAAAA,CAAe,MAC1D,CAEA,SAASzF,EAAAA,CACP7H,CAAAA,CACAuN,CAAAA,CACA,CACA,IAAMC,CAAAA,CAAwB,CAAA,CAAA,MAAA,CAAO,IAAI,GAA2B,CAAA,CAE9D,CAAA,CAAA,SAAA,CAAU,IAAM,CACpB,GAAI,EAAA,CAACxN,CAAAA,EAAS,CAACgD,EAAAA,EAAyB,CAAA,CAIxC,IAAA,IAAWlY,CAAAA,IAAO,MAAA,CAAO,IAAA,CAAKyiB,CAAY,CAAA,CAItCvN,CAAAA,CAAMlV,CAAG,CAAA,GAAM,MAAA,EACf,CAACyiB,CAAAA,CAAaziB,CAAG,CAAA,EACjB0iB,CAAAA,CAAgB,OAAA,CAAQ,GAAA,CAAI1iB,CAAG,CAAA,GAKjC0iB,CAAAA,CAAgB,OAAA,CAAQ,GAAA,CAAI1iB,CAAG,CAAA,CAC/B,OAAA,CAAQ,IAAA,CACN,CAAA,4BAAA,EAA+BA,CAAG,CAAA,oHAAA,CACpC,CAAA,EAEJ,CAAA,CAAG,CAACyiB,CAAAA,CAAcvN,CAAK,CAAC,EAC1B,CAEA,SAASgD,EAAAA,EAA2B,CAOlC,OALE,UAAA,CAGA,OAAA,EAAS,GAAA,EAAK,QAAA,GAEW,YAC7B,CAEA,SAAS0I,EAAAA,CAAoB1L,CAAAA,CAAuC,CAClE,OAAO,CACL,QAASA,CAAAA,CAAM,OAAA,CAAQ,GAAA,CAAKlhB,CAAAA,GAAU,CAAE,GAAGA,CAAK,CAAA,CAAE,CAAA,CAClD,UAAA,CAAY,CAAE,GAAGkhB,CAAAA,CAAM,UAAW,CAAA,CAClC,YAAA,CAAc,CAAE,GAAGA,CAAAA,CAAM,YAAa,CAAA,CACtC,gBAAA,CAAkB,CAAE,GAAGA,CAAAA,CAAM,gBAAiB,CAAA,CAC9C,aAAA,CAAeA,CAAAA,CAAM,aAAA,CAAc,GAAA,CAAKlhB,CAAAA,GAAU,CAAE,GAAGA,CAAK,CAAA,CAAE,CAAA,CAC9D,QAAA,CACE,OAAOkhB,CAAAA,CAAM,QAAA,EAAa,SAAA,CACtBA,CAAAA,CAAM,QAAA,CACN,CAAE,GAAGA,CAAAA,CAAM,QAAS,CAAA,CAC1B,QAAA,CAAU,CAAC,GAAIA,CAAAA,CAAM,QAAA,EAAY,EAAG,CAAA,CACpC,WAAA,CAAa,CAAC,GAAGA,CAAAA,CAAM,WAAW,CAAA,CAClC,aAAA,CAAe,CACb,KAAMA,CAAAA,CAAM,aAAA,CAAc,IAAA,CACtB,CAAC,GAAGA,CAAAA,CAAM,aAAA,CAAc,IAAI,CAAA,CAC5B,MAAA,CACJ,KAAA,CAAOA,CAAAA,CAAM,aAAA,CAAc,KAAA,CACvB,CAAC,GAAGA,CAAAA,CAAM,aAAA,CAAc,KAAK,CAAA,CAC7B,MACN,CAAA,CACA,UAAA,CAAY,CACV,GAAA,CAAKA,CAAAA,CAAM,UAAA,CAAW,GAAA,CAAM,CAAC,GAAGA,CAAAA,CAAM,UAAA,CAAW,GAAG,CAAA,CAAI,MAAA,CACxD,MAAA,CAAQA,CAAAA,CAAM,UAAA,CAAW,MAAA,CAAS,CAAC,GAAGA,CAAAA,CAAM,UAAA,CAAW,MAAM,CAAA,CAAI,MACnE,CAAA,CACA,YAAA,CAAc,CAAE,GAAGA,CAAAA,CAAM,YAAa,CAAA,CACtC,OAAA,CAASA,CAAAA,CAAM,OAAA,CACf,QAAA,CAAUA,CAAAA,CAAM,QAAA,CAChB,cAAA,CAAgBA,CAAAA,CAAM,cAAA,CACtB,YAAA,CAAcA,CAAAA,CAAM,YACtB,CACF,CAEA,SAASgN,EAAAA,CACPS,CAAAA,CACAC,CAAAA,CACAttB,CAAAA,CACA,CACA,GAAI,CAACqtB,CAAAA,CACH,OAAO,MAAA,CAGT,IAAME,CAAAA,CAAYD,CAAAA,GAAS,KAAA,CAAQ,aAAA,CAAgB,gBAAA,CAC7CvgB,CAAAA,CAAU,KAAA,CAAM,IAAA,CACpBsgB,CAAAA,CAAU,gBAAA,CAA8B,CAAA,CAAA,EAAIE,CAAS,CAAA,CAAA,CAAG,CAC1D,CAAA,CAAE,IAAA,CAAMnjB,CAAAA,EAAcA,CAAAA,CAAU,aAAamjB,CAAS,CAAA,GAAMvtB,CAAK,CAAA,CACjE,OAAK+M,CAAAA,EAILA,CAAAA,CAAQ,cAAA,GAAiB,CAAE,KAAA,CAAO,SAAA,CAAW,MAAA,CAAQ,SAAU,CAAC,CAAA,CACzD,IAAA,EAJE,KAKX,CAEA,SAAS8f,EAAAA,CAAmCzrB,CAAAA,CAA4B,CACtE,OAAMA,CAAAA,YAAkB,WAAA,CAItBA,CAAAA,CAAO,iBAAA,EACPA,CAAAA,YAAkB,gBAAA,EAClBA,CAAAA,YAAkB,mBAAA,EAClBA,CAAAA,YAAkB,kBANX,KAQX","file":"chunk-JNI3CH7M.js","sourcesContent":["import * as React from \"react\";\nimport type { Row } from \"@tanstack/react-table\";\nimport { cn } from \"../../lib/utils\";\nimport type { DataTableCardPanelProps } from \"./data-table-card-panel-types\";\n\nexport function DataTableBaseCardPanel({\n cardClassName,\n cardGridClassName,\n cardSizing,\n cardRenderer,\n currentRowSelection,\n currentDetailExpanded,\n DataTableCardView,\n DataTableEmptyState,\n dragAndDrop,\n editableRows,\n editingRowId,\n emptyNode,\n enableRowSelection,\n flexGrow,\n getRowClassName,\n hasCardTitle,\n infiniteScroll,\n localSearchValue,\n onRowClick,\n renderedRows,\n detailPanel,\n resolvedLabels,\n resolvedLoadingRowCount,\n rowActions = [],\n ScrollArea,\n sentinelRef,\n setCurrentDetailExpanded,\n setCurrentRowSelection,\n setEditingRowId,\n shouldRenderInitialLoading,\n stateOverlayNode,\n tableContainerClassName,\n uiClassNames,\n}: DataTableCardPanelProps) {\n const shouldRenderCards =\n shouldRenderInitialLoading || renderedRows.length > 0;\n const cardScrollContainerRef = React.useRef(null);\n\n const renderCardView = (\n rows: Array>,\n options?: {\n isLoading?: boolean;\n loadingRowCount?: number;\n },\n ) => (\n \n );\n\n return (\n \n \n \n {shouldRenderCards ? (\n shouldRenderInitialLoading ? (\n renderCardView([], {\n isLoading: true,\n loadingRowCount: resolvedLoadingRowCount,\n })\n ) : (\n renderCardView(renderedRows)\n )\n ) : (\n
    \n {emptyNode ?? (\n \n )}\n
    \n )}\n\n {infiniteScroll?.enabled && !shouldRenderInitialLoading ? (\n
    \n
    \n
    \n ) : null}\n
    \n \n {stateOverlayNode}\n \n );\n}\n","import * as React from \"react\";\nimport { DataTableBaseCardPanel } from \"./data-table-base-card-panel\";\nimport type { DataTableCardPanelProps } from \"./data-table-card-panel-types\";\n\nconst LazyDataTableVirtualCardPanel = React.lazy(async () => {\n const module = await import(\"./data-table-virtual-card-panel\");\n return { default: module.DataTableVirtualCardPanel };\n}) as unknown as typeof DataTableBaseCardPanel;\n\nexport function DataTableCardPanel(\n props: DataTableCardPanelProps,\n) {\n const config =\n typeof props.virtualization === \"object\"\n ? props.virtualization.card\n : undefined;\n\n if (config?.enabled !== true) {\n return ;\n }\n\n return (\n \n }\n >\n \n \n );\n}\n\nexport type { DataTableCardPanelProps };\n","import * as React from \"react\";\nimport type { PaginationState } from \"@tanstack/react-table\";\nimport type { DataTableLabels } from \"../types\";\n\ntype DataTableFooterSectionProps = {\n children?: React.ReactNode;\n currentPagination: PaginationState;\n DataTableFooter: React.ElementType;\n effectivePageCount: number;\n footerTotalRowCount: number | undefined;\n handleFooterPageIndexChange: (pageIndex: number) => void;\n handleFooterPageSizeChange: (pageSize: number) => void;\n labels: DataTableLabels;\n pageCountKnown?: boolean;\n rowsPerPageOptions: Array;\n showFooter: boolean;\n};\n\nexport function DataTableFooterSection({\n children,\n currentPagination,\n DataTableFooter,\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n labels,\n pageCountKnown = true,\n rowsPerPageOptions,\n showFooter,\n}: DataTableFooterSectionProps) {\n if (!showFooter && !children) {\n return null;\n }\n\n return (\n
    \n {showFooter ? (\n \n ) : null}\n {children}\n
    \n );\n}\n","import * as React from \"react\";\nimport type { Table as TanStackTable } from \"@tanstack/react-table\";\nimport type {\n DataTableLabels,\n DataTableProps,\n DataTableSavedView,\n} from \"../types\";\n\ntype DataTableToolbarSectionProps = {\n allRows: Array;\n columnFilters: Array;\n columnVisibilityOptions: Array;\n compactToolbar: React.ReactNode;\n customToolbar: React.ReactNode;\n DataTableToolbar: React.ElementType;\n description: string | undefined;\n descriptionId: string | undefined;\n effectiveToolbarActions: Array;\n enableColumnPinning: boolean;\n enableGrouping: boolean;\n enableToolbarColumnChooser: boolean;\n enableToolbarFilterChips: boolean;\n enableToolbarResetLayout: boolean;\n enableToolbarSavedViews: boolean;\n enableDensityToggle: boolean;\n enableViewToggle: boolean;\n hiddenRowsLabel: string | undefined;\n labels: DataTableLabels;\n onClearColumnFilters: () => void;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n onColumnPinningChange: (columnId: string, side: \"left\" | \"right\" | false) => void;\n onDensityChange: (density: \"compact\" | \"comfortable\" | \"spacious\") => void;\n onShowHiddenRowsChange: (showHiddenRows: boolean) => void;\n onToolbarQueryValueChange: (value: string) => void;\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n onResetColumnLayout: () => void;\n onCreateSavedView: (name: string) => DataTableSavedView | undefined;\n onApplySavedView: (id: string) => boolean;\n onRenameSavedView: (id: string, name: string) => DataTableSavedView | undefined;\n onDeleteSavedView: (id: string) => boolean;\n onViewModeChange: (viewMode: \"table\" | \"card\") => void;\n openFileDialog: (() => void) | undefined;\n selectedRowIds: Array;\n selectedRows: Array;\n selectionActions: DataTableProps[\"selectionActions\"];\n savedViews: Array;\n showHiddenRows: boolean;\n table: TanStackTable;\n title: string | undefined;\n titleId: string | undefined;\n toolbarQueryPlaceholder: string;\n toolbarQueryValue: string;\n toolbarVisibility: DataTableProps[\"toolbarVisibility\"];\n density: \"compact\" | \"comfortable\" | \"spacious\";\n viewMode: \"table\" | \"card\";\n};\n\nexport function DataTableToolbarSection({\n allRows,\n columnFilters,\n columnVisibilityOptions,\n compactToolbar,\n customToolbar,\n DataTableToolbar,\n description,\n descriptionId,\n effectiveToolbarActions,\n enableColumnPinning,\n enableGrouping,\n enableToolbarColumnChooser,\n enableToolbarFilterChips,\n enableToolbarResetLayout,\n enableToolbarSavedViews,\n enableDensityToggle,\n enableViewToggle,\n hiddenRowsLabel,\n labels,\n onClearColumnFilters,\n onColumnFilterChange,\n onColumnPinningChange,\n onDensityChange,\n onShowHiddenRowsChange,\n onToolbarQueryValueChange,\n reorderColumn,\n onResetColumnLayout,\n onCreateSavedView,\n onApplySavedView,\n onRenameSavedView,\n onDeleteSavedView,\n onViewModeChange,\n openFileDialog,\n selectedRowIds,\n selectedRows,\n selectionActions,\n savedViews,\n showHiddenRows,\n table,\n title,\n titleId,\n toolbarQueryPlaceholder,\n toolbarQueryValue,\n toolbarVisibility,\n density,\n viewMode,\n}: DataTableToolbarSectionProps) {\n return (\n
    \n {\n table.getColumn(columnId)?.toggleVisibility(visible);\n }}\n enableColumnPinning={enableColumnPinning}\n enableGrouping={enableGrouping}\n enableToolbarColumnChooser={enableToolbarColumnChooser}\n enableToolbarFilterChips={enableToolbarFilterChips}\n enableToolbarResetLayout={enableToolbarResetLayout}\n enableToolbarSavedViews={enableToolbarSavedViews}\n onColumnPinningChange={onColumnPinningChange}\n columnFilters={columnFilters}\n onColumnFilterChange={onColumnFilterChange}\n onClearColumnFilters={onClearColumnFilters}\n onResetColumnLayout={onResetColumnLayout}\n onCreateSavedView={onCreateSavedView}\n onApplySavedView={onApplySavedView}\n onRenameSavedView={onRenameSavedView}\n onDeleteSavedView={onDeleteSavedView}\n density={density}\n onDensityChange={onDensityChange}\n enableDensityToggle={enableDensityToggle}\n labels={labels}\n toolbarVisibility={toolbarVisibility}\n openFileDialog={openFileDialog}\n savedViews={savedViews}\n table={table}\n />\n
    \n );\n}\n","import type { DataTableLabels } from \"../types\";\n\ntype ResolvedDataTableLabels = Required;\n\nexport const DATA_TABLE_DEFAULT_LABELS: ResolvedDataTableLabels = {\n searchPlaceholder: \"Search rows...\",\n searchTable: \"Search table\",\n clearSearch: \"Clear search\",\n noRowsTitle: \"No rows yet\",\n noRowsDescription: \"Create a record or refresh this view once data exists.\",\n noMatchingRowsTitle: \"No matching rows\",\n noMatchingRowsDescription: \"Try a different search term or clear filters.\",\n tableOptions: \"Show table options\",\n columns: \"Columns\",\n filters: \"Filters\",\n clearFilters: \"Clear filters\",\n filterFrom: \"From\",\n filterTo: \"To\",\n filterTrue: \"Yes\",\n filterFalse: \"No\",\n selectedRows: (count) =>\n `${count} record${count === 1 ? \"\" : \"s\"} selected`,\n showHiddenRows: (label) => `Show ${label}`,\n recordsPerPage: \"Records per page\",\n totalRecords: (count) => `Total records: ${count}`,\n pageStatus: (pageIndex, pageCount) => `Page ${pageIndex + 1} of ${pageCount}`,\n pageStatusUnknown: (pageIndex) => `Page ${pageIndex + 1}`,\n pagination: \"Pagination\",\n morePages: \"More pages\",\n firstPage: \"First page\",\n previousPage: \"Previous page\",\n nextPage: \"Next page\",\n lastPage: \"Last page\",\n selectAllVisibleRows: \"Select all visible rows\",\n selectAllFilteredRows: \"Select all filtered rows\",\n selectRow: \"Select row\",\n selectCardRow: (rowId) => `Select row ${rowId}`,\n switchToTableView: \"Switch to table view\",\n switchToCardView: \"Switch to card view\",\n tableView: \"Table view\",\n cardView: \"Card view\",\n allFilterOptions: \"All\",\n actions: \"Actions\",\n rowActions: \"Row actions\",\n editRow: \"Edit row\",\n saveEdit: \"Save\",\n cancelEdit: \"Cancel editing\",\n expandRow: \"Expand row\",\n collapseRow: \"Collapse row\",\n expandRowDetails: \"Expand row details\",\n collapseRowDetails: \"Collapse row details\",\n exportCsv: \"Export CSV\",\n print: \"Print table\",\n enterFullscreen: \"Enter fullscreen\",\n exitFullscreen: \"Exit fullscreen\",\n errorTitle: \"Unable to load this table\",\n errorDescription: \"Try again or check your connection.\",\n retry: \"Retry\",\n density: \"Density\",\n compactDensity: \"Compact\",\n comfortableDensity: \"Comfortable\",\n spaciousDensity: \"Spacious\",\n pinLeft: \"Pin left\",\n pinRight: \"Pin right\",\n unpin: \"Unpin\",\n pinRowToTop: \"Pin row to top\",\n pinRowToBottom: \"Pin row to bottom\",\n unpinRow: \"Unpin row\",\n resizeColumn: (columnLabel) => `Resize ${columnLabel}`,\n grouping: \"Grouping\",\n groupBy: (columnLabel) => `Group by ${columnLabel}`,\n ungroup: (columnLabel) => `Ungroup ${columnLabel}`,\n removeGrouping: (columnLabel) => `Remove ${columnLabel} grouping`,\n moveGroupingEarlier: (columnLabel) => `Move ${columnLabel} grouping earlier`,\n moveGroupingLater: (columnLabel) => `Move ${columnLabel} grouping later`,\n facetSearch: (columnLabel) => `Search ${columnLabel} options`,\n searchColumns: \"Search columns\",\n showAllColumns: \"Show all columns\",\n hideAllColumns: \"Hide all columns\",\n moveColumnEarlier: (columnLabel) => `Move ${columnLabel} earlier`,\n moveColumnLater: (columnLabel) => `Move ${columnLabel} later`,\n resetColumnLayout: \"Reset column layout\",\n savedViews: \"Saved views\",\n createSavedView: \"Create saved view\",\n savedViewName: \"View name\",\n applySavedView: (name) => `Apply saved view ${name}`,\n renameSavedView: (name) => `Rename saved view ${name}`,\n deleteSavedView: (name) => `Delete saved view ${name}`,\n saveSavedView: \"Save view\",\n};\n\nexport function resolveDataTableLabels(\n labels?: Partial,\n): ResolvedDataTableLabels {\n return {\n ...DATA_TABLE_DEFAULT_LABELS,\n ...labels,\n } as ResolvedDataTableLabels;\n}\n","import * as React from \"react\";\nimport type {\n ColumnDef,\n ExpandedState,\n OnChangeFn,\n RowPinningPosition,\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport { IconChevronDown } from \"../icons\";\nimport type {\n DataTableEditableRowsConfig,\n DataTableDetailPanel,\n DataTableLabels,\n DataTableProps,\n DataTableRowAction,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport {\n UTILITY_COLUMN_SIZE,\n decorateFilterableColumn,\n isDataTableLoadingRow,\n toggleDataTableExpandedState,\n} from \"./data-table-utils\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\ntype DataTableRowActionsComponentProps = {\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n labels: DataTableLabels;\n onCancelEditing: () => void;\n onStartEditing: () => void;\n row: TData;\n rowActions: Array>;\n rowPinning?: {\n canPin: boolean;\n position: RowPinningPosition;\n pin: (position: RowPinningPosition) => void;\n };\n};\n\nexport function useDataTableColumns({\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n editingRowId,\n editErrors,\n enableRowSelection,\n enableRowPinning,\n hasTreeExpansion,\n isSavingEdit,\n isEditDirty,\n labels,\n lastSelectedRowIdRef,\n detailPanel,\n detailExpanded,\n onDetailExpandedChange,\n rowSelectionSelectAllScope,\n rowActions,\n saveEdit,\n startEditingRow,\n tableRef,\n}: {\n Button: DataTableUiKit[\"Button\"];\n Checkbox: DataTableUiKit[\"Checkbox\"];\n DataTableRowActions: React.ComponentType<\n DataTableRowActionsComponentProps\n >;\n Tooltip: DataTableUiKit[\"Tooltip\"];\n TooltipContent: DataTableUiKit[\"TooltipContent\"];\n TooltipTrigger: DataTableUiKit[\"TooltipTrigger\"];\n cancelEditing: () => void;\n columns: DataTableProps[\"columns\"];\n editableRows: DataTableProps[\"editableRows\"];\n editingRowId: string | null;\n editErrors: Record;\n enableRowSelection: boolean;\n enableRowPinning: DataTableProps[\"enableRowPinning\"];\n hasTreeExpansion: boolean;\n isSavingEdit: boolean;\n isEditDirty: boolean;\n labels: DataTableLabels;\n lastSelectedRowIdRef: React.MutableRefObject;\n detailPanel: DataTableDetailPanel | undefined;\n detailExpanded: ExpandedState;\n onDetailExpandedChange: OnChangeFn;\n rowSelectionSelectAllScope: NonNullable<\n DataTableProps[\"rowSelectionSelectAllScope\"]\n >;\n rowActions: Array>;\n saveEdit: (row: TData) => Promise;\n startEditingRow: (row: TData, rowId: string) => void;\n tableRef: React.RefObject | null>;\n}) {\n const selectRowRange = React.useCallback(\n (targetRowId: string, selected: boolean) => {\n const tableInstance = tableRef.current;\n if (!tableInstance || !lastSelectedRowIdRef.current) {\n return;\n }\n\n const rows = tableInstance\n .getRowModel()\n .rows.filter((row) => !isDataTableLoadingRow(row.original));\n const startIndex = rows.findIndex(\n (row) => row.id === lastSelectedRowIdRef.current,\n );\n const endIndex = rows.findIndex((row) => row.id === targetRowId);\n\n if (startIndex < 0 || endIndex < 0) {\n return;\n }\n\n const from = Math.min(startIndex, endIndex);\n const to = Math.max(startIndex, endIndex);\n tableInstance.setRowSelection((current) => {\n const next = { ...current };\n for (const row of rows\n .slice(from, to + 1)\n .filter(\n (item) => item.getCanSelect() && item.getCanMultiSelect(),\n )) {\n if (selected) {\n next[row.id] = true;\n } else {\n delete next[row.id];\n }\n }\n return next;\n });\n },\n [lastSelectedRowIdRef, tableRef],\n );\n\n return React.useMemo>>(() => {\n const defs: Array> = [];\n\n if (hasTreeExpansion || detailPanel) {\n const expansionColumnSize =\n hasTreeExpansion && detailPanel ? 80 : UTILITY_COLUMN_SIZE;\n defs.push({\n id: \"__expand__\",\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n size: expansionColumnSize,\n minSize: expansionColumnSize,\n maxSize: expansionColumnSize,\n header: () => {labels.expandRow},\n cell: ({ row, table }) => {\n const canExpandTree = hasTreeExpansion && row.getCanExpand();\n const canExpandDetail = Boolean(\n detailPanel && (detailPanel.getRowCanExpand?.(row.original) ?? true),\n );\n if (!canExpandTree && !canExpandDetail) {\n return null;\n }\n\n const isTreeExpanded = row.getIsExpanded();\n const isDetailExpanded =\n detailExpanded === true || Boolean(detailExpanded[row.id]);\n return (\n
    \n {canExpandTree ? (\n row.toggleExpanded()}\n >\n \n \n ) : null}\n {canExpandDetail ? (\n {\n onDetailExpandedChange((current) =>\n toggleDataTableExpandedState(\n current,\n row.id,\n table.getCoreRowModel().flatRows.map((item) => item.id),\n ),\n );\n }}\n >\n \n \n ) : null}\n
    \n );\n },\n });\n }\n\n if (enableRowSelection) {\n defs.push({\n id: \"__select__\",\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n size: UTILITY_COLUMN_SIZE,\n minSize: UTILITY_COLUMN_SIZE,\n maxSize: UTILITY_COLUMN_SIZE,\n header: ({ table }) => {\n const selectsFilteredRows = rowSelectionSelectAllScope === \"filtered\";\n const selectableRows = (selectsFilteredRows\n ? table.getFilteredRowModel().flatRows\n : table.getRowModel().flatRows\n ).filter((row) => row.getCanSelect() && row.getCanMultiSelect());\n const allSelected =\n selectableRows.length > 0 &&\n selectableRows.every((row) => row.getIsSelected());\n const someSelected = selectableRows.some((row) => row.getIsSelected());\n const label = selectsFilteredRows\n ? (labels.selectAllFilteredRows ??\n DATA_TABLE_DEFAULT_LABELS.selectAllFilteredRows)\n : (labels.selectAllVisibleRows ??\n DATA_TABLE_DEFAULT_LABELS.selectAllVisibleRows);\n\n if (selectableRows.length === 0) {\n return {label};\n }\n\n return (\n
    \n {\n table.setRowSelection((current) => {\n const next = { ...current };\n for (const row of selectableRows) {\n if (checked === true) {\n next[row.id] = true;\n } else {\n delete next[row.id];\n }\n }\n return next;\n });\n }}\n aria-label={label}\n />\n
    \n );\n },\n cell: ({ row }) => (\n
    \n ) => {\n if (\n !event.shiftKey ||\n !lastSelectedRowIdRef.current ||\n !row.getCanMultiSelect()\n ) {\n lastSelectedRowIdRef.current = row.id;\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n selectRowRange(row.id, !row.getIsSelected());\n lastSelectedRowIdRef.current = row.id;\n }}\n onCheckedChange={(checked: boolean | \"indeterminate\") => {\n lastSelectedRowIdRef.current = row.id;\n row.toggleSelected(checked === true);\n }}\n aria-label={\n labels.selectRow ?? DATA_TABLE_DEFAULT_LABELS.selectRow\n }\n />\n
    \n ),\n });\n }\n\n defs.push(...columns.map((column) => decorateFilterableColumn(column)));\n\n if (rowActions.length || editableRows || enableRowPinning) {\n defs.push({\n id: \"__actions__\",\n enableSorting: false,\n enableResizing: false,\n enableHiding: false,\n size: UTILITY_COLUMN_SIZE,\n minSize: UTILITY_COLUMN_SIZE,\n maxSize: UTILITY_COLUMN_SIZE,\n header: () => {labels.actions},\n cell: ({ row }) => {\n const rowId = row.id;\n const isEditing = editingRowId === rowId;\n\n if (isEditing) {\n return (\n
    \n {editErrors._row ? (\n \n {editErrors._row}\n \n ) : null}\n {\n void saveEdit(row.original);\n }}\n >\n {labels.saveEdit}\n \n \n \n \n \n {labels.cancelEdit}\n \n \n {labels.cancelEdit}\n \n
    \n );\n }\n\n return (\n
    \n {\n startEditingRow(row.original, row.id);\n }}\n onCancelEditing={() => {}}\n labels={labels}\n rowPinning={\n enableRowPinning\n ? {\n canPin: row.getCanPin(),\n position: row.getIsPinned(),\n pin: (position) => row.pin(position),\n }\n : undefined\n }\n />\n
    \n );\n },\n });\n }\n\n return defs;\n }, [\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n detailExpanded,\n detailPanel,\n editErrors,\n editingRowId,\n enableRowSelection,\n enableRowPinning,\n hasTreeExpansion,\n isSavingEdit,\n isEditDirty,\n labels,\n lastSelectedRowIdRef,\n onDetailExpandedChange,\n rowSelectionSelectAllScope,\n rowActions,\n saveEdit,\n selectRowRange,\n startEditingRow,\n ]);\n}\n","import * as React from \"react\";\nimport type { Updater } from \"@tanstack/react-table\";\n\nexport function useControllableState({\n defaultValue,\n onChange,\n value,\n}: {\n defaultValue: T | (() => T);\n onChange?: (value: T) => void;\n value: T | undefined;\n}) {\n const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue);\n const currentValue = value ?? uncontrolledValue;\n const currentValueRef = React.useRef(currentValue);\n\n React.useEffect(() => {\n currentValueRef.current = currentValue;\n }, [currentValue]);\n\n const setValue = React.useCallback(\n (updater: Updater) => {\n const nextValue =\n typeof updater === \"function\"\n ? (updater as (current: T) => T)(currentValueRef.current)\n : updater;\n currentValueRef.current = nextValue;\n\n onChange?.(nextValue);\n\n if (value === undefined) {\n setUncontrolledValue(nextValue);\n }\n },\n [onChange, value],\n );\n\n return [currentValue, setValue] as const;\n}\n","import * as React from \"react\";\n\nexport function useDataTableInfiniteScroll({\n enabled,\n hasMore,\n isLoadingMore,\n onLoadMore,\n onError,\n}: {\n enabled: boolean;\n hasMore: boolean;\n isLoadingMore?: boolean;\n onLoadMore: () => void | Promise;\n onError?: (error: unknown) => void;\n}) {\n const sentinelRef = React.useRef(null);\n const isRequestInFlightRef = React.useRef(false);\n const onLoadMoreEvent = React.useEffectEvent(onLoadMore);\n const onErrorEvent = React.useEffectEvent((error: unknown) => {\n onError?.(error);\n });\n\n React.useEffect(() => {\n if (!enabled || !hasMore || isLoadingMore) {\n return;\n }\n\n const target = sentinelRef.current;\n if (!target) {\n return;\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n const entry = entries[0];\n if (entry.isIntersecting && !isRequestInFlightRef.current) {\n isRequestInFlightRef.current = true;\n\n let result: void | Promise;\n try {\n result = onLoadMoreEvent();\n } catch (error) {\n isRequestInFlightRef.current = false;\n onErrorEvent(error);\n return;\n }\n\n void Promise.resolve(result)\n .catch((error: unknown) => {\n onErrorEvent(error);\n })\n .finally(() => {\n isRequestInFlightRef.current = false;\n });\n }\n },\n {\n rootMargin: \"200px 0px 200px 0px\",\n },\n );\n\n observer.observe(target);\n\n return () => {\n observer.disconnect();\n };\n }, [enabled, hasMore, isLoadingMore]);\n\n return sentinelRef;\n}\n","import * as React from \"react\";\n\nexport function useDataTablePaginationClamp({\n enabled,\n maxPageIndex,\n onPageIndexChange,\n pageIndex,\n setLocalPageIndex,\n}: {\n enabled: boolean;\n maxPageIndex: number;\n onPageIndexChange?: (pageIndex: number) => void;\n pageIndex: number;\n setLocalPageIndex: (pageIndex: number) => void;\n}) {\n React.useEffect(() => {\n if (!enabled) {\n return;\n }\n\n if (pageIndex >= 0 && pageIndex <= maxPageIndex) {\n return;\n }\n\n const nextPageIndex = Math.min(Math.max(pageIndex, 0), maxPageIndex);\n setLocalPageIndex(nextPageIndex);\n onPageIndexChange?.(nextPageIndex);\n }, [enabled, maxPageIndex, onPageIndexChange, pageIndex, setLocalPageIndex]);\n}\n","import * as React from \"react\";\nimport type { FilterFn, Row } from \"@tanstack/react-table\";\nimport { normalizeDataTableSearchText } from \"./data-table-utils\";\n\n/**\n * Caches each searchable cell against the application-owned row object and\n * stable column id. WeakMap entries disappear with immutable rows and never\n * retain removed data. Mutable rows are deliberately unsupported because a\n * cache cannot safely observe deep changes without defeating its purpose.\n */\nexport function useDataTableSearchIndex(\n) {\n // eslint-disable-next-line react-hooks/immutability -- This weak cache is deliberately populated by TanStack's filter pass, never read during React render.\n return React.useMemo>(() => {\n const valuesByRow = new WeakMap>();\n\n return (row: Row, columnId: string, filterValue: unknown) => {\n const query = normalizeDataTableSearchText(filterValue);\n if (!query) {\n return true;\n }\n\n const original = row.original;\n if (typeof original !== \"object\" || original === null) {\n return normalizeDataTableSearchText(row.getValue(columnId)).includes(\n query,\n );\n }\n\n let valuesByColumn = valuesByRow.get(original);\n if (!valuesByColumn) {\n valuesByColumn = new Map();\n valuesByRow.set(original, valuesByColumn);\n }\n\n let text = valuesByColumn.get(columnId);\n if (text === undefined) {\n const value = row.getValue(columnId);\n text = normalizeDataTableSearchText(value);\n valuesByColumn.set(columnId, text);\n }\n\n return text.includes(query);\n };\n }, []);\n}\n","import * as React from \"react\";\nimport {\n getCoreRowModel,\n getExpandedRowModel,\n getFacetedMinMaxValues,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getGroupedRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\";\nimport type {\n ColumnDef,\n ColumnFiltersState,\n ColumnOrderState,\n ColumnPinningState,\n ColumnSizingState,\n ExpandedState,\n GroupingState,\n FilterFnOption,\n OnChangeFn,\n PaginationState,\n RowPinningState,\n Row,\n SortingState,\n Table as TanStackTable,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport type { DataTableProps } from \"../types\";\nimport {\n canReorderDataTableColumn,\n getColumnId,\n getDataTableLeafColumns,\n isDataTableLoadingRow,\n isUtilityColumnId,\n moveColumnInOrder,\n} from \"./data-table-utils\";\nimport type { DataTableColumnGroupPaths } from \"./data-table-utils\";\nimport { useDataTableInfiniteScroll } from \"./use-data-table-infinite-scroll\";\nimport { useDataTablePaginationClamp } from \"./use-data-table-pagination-clamp\";\nimport { useDataTableSearchIndex } from \"./use-data-table-search-index\";\n\nexport function useDataTableInstance({\n autoResetPageIndex,\n columnGroupPaths,\n columnResizeMode,\n dir,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentRowPinning,\n currentColumnSizing,\n currentExpanded,\n currentGrouping,\n currentPagination,\n currentRowSelection,\n currentSorting,\n currentViewMode,\n defaultColumn,\n effectiveColumnVisibility,\n enableColumnResizing,\n enableMultiRowSelection,\n enableRowPinning,\n enableRowSelection,\n enableSubRowSelection,\n getRowCanSelect,\n getRowCanExpand,\n getSubRows,\n aggregationFns,\n groupedColumnMode,\n globalFilterFn,\n globalFilterValue,\n hasNextPage,\n handleColumnFiltersChange,\n handleColumnOrderChange,\n handleColumnPinningChange,\n handleRowPinningChange,\n handleColumnVisibilityChange,\n handleExpandedChange,\n handleGroupingChange,\n infiniteScroll,\n keepPinnedRows,\n manualFiltering,\n manualGrouping,\n manualExpanding,\n manualPagination,\n manualSorting,\n onActionError,\n onPageIndexChange,\n onPageSizeChange,\n pageCount,\n pageIndex,\n pageSize,\n paginateExpandedRows,\n filterFromLeafRows,\n maxLeafRowFilterDepth,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n shouldRenderInitialLoading,\n tableColumns,\n tableData,\n tableGetRowId,\n tableRef,\n totalRowCount,\n virtualization,\n}: {\n autoResetPageIndex: boolean;\n columnGroupPaths: DataTableColumnGroupPaths;\n columnResizeMode: DataTableProps[\"columnResizeMode\"];\n dir: NonNullable[\"dir\"]>;\n currentColumnFilters: ColumnFiltersState;\n currentColumnOrder: ColumnOrderState;\n currentColumnPinning: ColumnPinningState;\n currentRowPinning: RowPinningState;\n currentColumnSizing: ColumnSizingState;\n currentExpanded: ExpandedState;\n currentGrouping: GroupingState;\n currentPagination: PaginationState;\n currentRowSelection: Record;\n currentSorting: SortingState;\n currentViewMode: \"table\" | \"card\";\n defaultColumn: Partial>;\n effectiveColumnVisibility: VisibilityState;\n enableColumnResizing: boolean;\n enableMultiRowSelection: NonNullable<\n DataTableProps[\"enableMultiRowSelection\"]\n >;\n enableRowPinning: DataTableProps[\"enableRowPinning\"];\n enableRowSelection: boolean;\n enableSubRowSelection: NonNullable<\n DataTableProps[\"enableSubRowSelection\"]\n >;\n getRowCanSelect: DataTableProps[\"getRowCanSelect\"];\n getRowCanExpand: DataTableProps[\"getRowCanExpand\"];\n getSubRows: DataTableProps[\"getSubRows\"];\n aggregationFns: DataTableProps[\"aggregationFns\"];\n groupedColumnMode: DataTableProps[\"groupedColumnMode\"];\n globalFilterFn: FilterFnOption | undefined;\n globalFilterValue: string;\n hasNextPage?: DataTableProps[\"hasNextPage\"];\n handleColumnFiltersChange: OnChangeFn;\n handleColumnOrderChange: OnChangeFn;\n handleColumnPinningChange: OnChangeFn;\n handleRowPinningChange: OnChangeFn;\n handleColumnVisibilityChange: OnChangeFn;\n handleExpandedChange: OnChangeFn;\n handleGroupingChange: OnChangeFn;\n infiniteScroll: DataTableProps[\"infiniteScroll\"];\n keepPinnedRows: boolean;\n manualFiltering: boolean;\n manualGrouping: boolean;\n manualExpanding: boolean;\n manualPagination: boolean;\n manualSorting: boolean;\n onActionError?: DataTableProps[\"onActionError\"];\n onPageIndexChange: DataTableProps[\"onPageIndexChange\"];\n onPageSizeChange: DataTableProps[\"onPageSizeChange\"];\n pageCount: DataTableProps[\"pageCount\"];\n pageIndex: DataTableProps[\"pageIndex\"];\n pageSize: DataTableProps[\"pageSize\"];\n paginateExpandedRows: DataTableProps[\"paginateExpandedRows\"];\n filterFromLeafRows: DataTableProps[\"filterFromLeafRows\"];\n maxLeafRowFilterDepth: DataTableProps[\"maxLeafRowFilterDepth\"];\n setCurrentRowSelection: OnChangeFn>;\n setCurrentSorting: OnChangeFn;\n setLocalColumnSizing: OnChangeFn;\n setLocalPagination: React.Dispatch>;\n shouldRenderInitialLoading: boolean;\n tableColumns: Array>;\n tableData: Array;\n tableGetRowId: DataTableProps[\"getRowId\"];\n tableRef: React.RefObject | null>;\n tableScrollElement: HTMLElement | null;\n /**\n * @deprecated Filtering now runs through TanStack Table. Retained so\n * advanced 4.x hook callers remain source-compatible.\n */\n toolbarFilteredData?: Array;\n totalRowCount: DataTableProps[\"totalRowCount\"];\n virtualization: DataTableProps[\"virtualization\"];\n viewportHeight: number;\n}) {\n const cachedGlobalFilterFn = useDataTableSearchIndex();\n const generatedColumnIds = React.useMemo(() => {\n return getDataTableLeafColumns(\n tableColumns as DataTableProps[\"columns\"],\n ).map(({ column, index }) => getColumnId(column, index));\n }, [tableColumns]);\n\n const effectiveColumnOrder = React.useMemo(() => {\n const columnIds = generatedColumnIds;\n const dataColumnIds = columnIds.filter(\n (columnId) =>\n !isUtilityColumnId(columnId) && columnId !== \"__spacer__\",\n );\n const dataColumnIdSet = new Set(dataColumnIds);\n const orderedDataColumnIds = currentColumnOrder.filter((columnId) =>\n dataColumnIdSet.has(columnId),\n );\n const unorderedDataColumnIds = dataColumnIds.filter(\n (columnId) => !orderedDataColumnIds.includes(columnId),\n );\n\n return [\n ...columnIds.filter(\n (columnId) => columnId === \"__expand__\" || columnId === \"__select__\",\n ),\n ...orderedDataColumnIds,\n ...unorderedDataColumnIds,\n ...columnIds.filter((columnId) => columnId === \"__spacer__\"),\n ...columnIds.filter((columnId) => columnId === \"__actions__\"),\n ];\n }, [currentColumnOrder, generatedColumnIds]);\n\n const effectiveColumnPinning = React.useMemo(() => {\n const columnIdSet = new Set(generatedColumnIds);\n const dataColumnIdSet = new Set(\n generatedColumnIds.filter(\n (columnId) =>\n !isUtilityColumnId(columnId) && columnId !== \"__spacer__\",\n ),\n );\n const dataLeft = (currentColumnPinning.left ?? []).filter((columnId) =>\n dataColumnIdSet.has(columnId),\n );\n const dataRight = (currentColumnPinning.right ?? []).filter((columnId) =>\n dataColumnIdSet.has(columnId),\n );\n\n return {\n left: [\n ...[\"__expand__\", \"__select__\"].filter((columnId) =>\n columnIdSet.has(columnId),\n ),\n ...dataLeft,\n ],\n right: [\n ...dataRight,\n ...[\"__actions__\"].filter((columnId) => columnIdSet.has(columnId)),\n ],\n };\n }, [currentColumnPinning, generatedColumnIds]);\n\n const effectiveRowPinning = React.useMemo(() => {\n const availableRowIds = new Set();\n const visitRows = (rows: Array) => {\n rows.forEach((row, index) => {\n availableRowIds.add(tableGetRowId(row, index));\n if (!isDataTableLoadingRow(row)) {\n const subRows = getSubRows?.(row, index);\n if (subRows?.length) {\n visitRows(subRows);\n }\n }\n });\n };\n visitRows(tableData);\n const top = (currentRowPinning.top ?? []).filter((rowId) =>\n availableRowIds.has(rowId),\n );\n const topIds = new Set(top);\n const bottom = (currentRowPinning.bottom ?? []).filter(\n (rowId) => availableRowIds.has(rowId) && !topIds.has(rowId),\n );\n return { top, bottom };\n }, [\n currentRowPinning.bottom,\n currentRowPinning.top,\n getSubRows,\n tableData,\n tableGetRowId,\n ]);\n\n const tableState = React.useMemo(\n () => ({\n sorting: currentSorting,\n pagination: currentPagination,\n rowSelection: currentRowSelection,\n columnVisibility: effectiveColumnVisibility,\n columnFilters: currentColumnFilters,\n globalFilter: globalFilterValue,\n expanded: currentExpanded,\n grouping: currentGrouping,\n columnOrder: effectiveColumnOrder,\n columnPinning: effectiveColumnPinning,\n rowPinning: effectiveRowPinning,\n columnSizing: currentColumnSizing,\n }),\n [\n currentColumnFilters,\n currentColumnSizing,\n currentExpanded,\n currentGrouping,\n currentPagination,\n currentRowSelection,\n currentSorting,\n effectiveColumnVisibility,\n effectiveColumnOrder,\n effectiveColumnPinning,\n effectiveRowPinning,\n globalFilterValue,\n ],\n );\n\n const handlePaginationChange = React.useCallback<\n OnChangeFn\n >(\n (updater) => {\n const nextValue =\n typeof updater === \"function\" ? updater(currentPagination) : updater;\n\n if (pageIndex === undefined || pageSize === undefined) {\n setLocalPagination((current) => ({\n pageIndex:\n pageIndex === undefined ? nextValue.pageIndex : current.pageIndex,\n pageSize:\n pageSize === undefined ? nextValue.pageSize : current.pageSize,\n }));\n }\n\n if (nextValue.pageIndex !== currentPagination.pageIndex) {\n onPageIndexChange?.(nextValue.pageIndex);\n }\n if (nextValue.pageSize !== currentPagination.pageSize) {\n onPageSizeChange?.(nextValue.pageSize);\n }\n },\n [\n currentPagination,\n onPageIndexChange,\n onPageSizeChange,\n pageIndex,\n pageSize,\n setLocalPagination,\n ],\n );\n\n const handleColumnSizingChange = React.useCallback<\n OnChangeFn\n >(\n (updater) => {\n setLocalColumnSizing(updater);\n },\n [setLocalColumnSizing],\n );\n\n const facetingNeeds = React.useMemo(\n () => {\n let uniqueValues = false;\n let minMaxValues = false;\n for (const { column } of getDataTableLeafColumns(\n tableColumns as DataTableProps[\"columns\"],\n )) {\n uniqueValues ||= column.meta?.filter?.type === \"faceted\";\n minMaxValues ||= column.meta?.filter?.type === \"numberRange\";\n }\n return { minMaxValues, uniqueValues };\n },\n [tableColumns],\n );\n\n // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Table owns its instance functions.\n const table = useReactTable({\n data: tableData,\n columns: tableColumns,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: manualFiltering ? undefined : getFilteredRowModel(),\n getFacetedRowModel:\n (facetingNeeds.uniqueValues || facetingNeeds.minMaxValues) &&\n !manualFiltering\n ? getFacetedRowModel()\n : undefined,\n getFacetedUniqueValues:\n facetingNeeds.uniqueValues && !manualFiltering\n ? getFacetedUniqueValues()\n : undefined,\n getFacetedMinMaxValues:\n facetingNeeds.minMaxValues && !manualFiltering\n ? getFacetedMinMaxValues()\n : undefined,\n getGroupedRowModel:\n currentGrouping.length && !manualGrouping ? getGroupedRowModel() : undefined,\n getSortedRowModel: manualSorting ? undefined : getSortedRowModel(),\n getExpandedRowModel:\n (getSubRows || currentGrouping.length) && !manualExpanding\n ? getExpandedRowModel()\n : undefined,\n getPaginationRowModel:\n manualPagination || infiniteScroll?.enabled\n ? undefined\n : getPaginationRowModel(),\n enableRowSelection: getRowCanSelect\n ? (row) => enableRowSelection && getRowCanSelect(row.original)\n : enableRowSelection,\n enableRowPinning:\n typeof enableRowPinning === \"function\"\n ? (row) => enableRowPinning(row.original)\n : enableRowPinning,\n keepPinnedRows,\n enableMultiRowSelection:\n typeof enableMultiRowSelection === \"function\"\n ? (row) => enableMultiRowSelection(row.original)\n : enableMultiRowSelection,\n enableSubRowSelection:\n typeof enableSubRowSelection === \"function\"\n ? (row) => enableSubRowSelection(row.original)\n : enableSubRowSelection,\n enableColumnResizing,\n columnResizeMode,\n columnResizeDirection: dir,\n getRowId: tableGetRowId,\n getSubRows,\n getRowCanExpand: getSubRows\n ? (row) => getRowCanExpand?.(row.original) ?? row.subRows.length > 0\n : undefined,\n globalFilterFn: globalFilterFn ?? cachedGlobalFilterFn,\n getColumnCanGlobalFilter: (column) =>\n column.columnDef.enableGlobalFilter !== false &&\n typeof column.accessorFn === \"function\",\n manualSorting,\n manualGrouping,\n manualFiltering,\n manualExpanding,\n manualPagination: manualPagination || Boolean(infiniteScroll?.enabled),\n paginateExpandedRows,\n filterFromLeafRows,\n maxLeafRowFilterDepth,\n defaultColumn,\n autoResetPageIndex,\n state: tableState,\n onSortingChange: setCurrentSorting,\n onPaginationChange: handlePaginationChange,\n onRowSelectionChange: setCurrentRowSelection,\n onColumnVisibilityChange: handleColumnVisibilityChange,\n onColumnFiltersChange: handleColumnFiltersChange,\n onExpandedChange: handleExpandedChange,\n onGroupingChange: handleGroupingChange,\n onColumnOrderChange: handleColumnOrderChange,\n onColumnPinningChange: handleColumnPinningChange,\n onRowPinningChange: handleRowPinningChange,\n onColumnSizingChange: handleColumnSizingChange,\n aggregationFns,\n groupedColumnMode,\n });\n tableRef.current = table;\n\n const visibleLeafColumns = table.getVisibleLeafColumns();\n const reorderColumn = React.useCallback(\n (sourceColumnId: string, targetColumnId: string) => {\n if (sourceColumnId === targetColumnId) {\n return;\n }\n\n if (\n !canReorderDataTableColumn(\n sourceColumnId,\n targetColumnId,\n columnGroupPaths,\n )\n ) {\n return;\n }\n\n const defaultOrder = table\n .getAllLeafColumns()\n .map((column) => column.id)\n .filter((columnId) => !isUtilityColumnId(columnId));\n const nextOrder = moveColumnInOrder(\n currentColumnOrder.length ? currentColumnOrder : defaultOrder,\n sourceColumnId,\n targetColumnId,\n );\n handleColumnOrderChange(nextOrder);\n },\n [columnGroupPaths, currentColumnOrder, handleColumnOrderChange, table],\n );\n\n const topPinnedRows = table.getTopRows();\n const bottomPinnedRows = table.getBottomRows();\n // Card rendering has no top/bottom table regions. Keep its original row\n // model intact rather than silently dropping pinned records.\n const renderedRows =\n currentViewMode === \"table\"\n ? table.getCenterRows()\n : table.getRowModel().rows;\n const virtualizationConfig =\n typeof virtualization === \"object\" ? virtualization : undefined;\n const virtualRowsEnabled =\n virtualization === true || virtualizationConfig?.enabled === true;\n const fallbackRowCount = Math.max(\n 1,\n Math.floor(virtualizationConfig?.fallbackRowCount ?? 20),\n );\n const initialRowsToRender = virtualRowsEnabled\n ? renderedRows.slice(0, fallbackRowCount)\n : renderedRows;\n const rowsToRender = initialRowsToRender.map((row, rowIndex) => ({\n row,\n rowIndex,\n }));\n\n const usesManualRows = manualPagination || Boolean(infiniteScroll?.enabled);\n const derivedTotalRowCount = usesManualRows\n ? undefined\n : table.getFilteredRowModel().rows.length;\n const effectiveTotalRowCount = totalRowCount ?? derivedTotalRowCount;\n const isPageCountKnown =\n !usesManualRows || pageCount !== undefined || totalRowCount !== undefined;\n const footerTotalRowCount = effectiveTotalRowCount;\n const effectivePageCount = shouldRenderInitialLoading\n ? 1\n : (pageCount ??\n (effectiveTotalRowCount !== undefined\n ? Math.max(\n 1,\n Math.ceil(effectiveTotalRowCount / currentPagination.pageSize),\n )\n : usesManualRows\n ? currentPagination.pageIndex + (hasNextPage ? 2 : 1)\n : table.getPageCount()));\n const maxPageIndex = Math.max(0, effectivePageCount - 1);\n\n const setLocalPageIndex = React.useCallback(\n (nextPageIndex: number) => {\n if (pageIndex !== undefined) {\n return;\n }\n\n setLocalPagination((current) =>\n current.pageIndex === nextPageIndex\n ? current\n : { ...current, pageIndex: nextPageIndex },\n );\n },\n [pageIndex, setLocalPagination],\n );\n useDataTablePaginationClamp({\n enabled:\n !shouldRenderInitialLoading &&\n !infiniteScroll?.enabled &&\n isPageCountKnown,\n maxPageIndex,\n onPageIndexChange,\n pageIndex: currentPagination.pageIndex,\n setLocalPageIndex,\n });\n\n const handleFooterPageIndexChange = React.useCallback(\n (nextPageIndex: number) => {\n if (nextPageIndex === currentPagination.pageIndex) {\n return;\n }\n\n onPageIndexChange?.(nextPageIndex);\n if (pageIndex === undefined) {\n setLocalPagination((current) =>\n current.pageIndex === nextPageIndex\n ? current\n : { ...current, pageIndex: nextPageIndex },\n );\n }\n },\n [\n currentPagination.pageIndex,\n onPageIndexChange,\n pageIndex,\n setLocalPagination,\n ],\n );\n const handleFooterPageSizeChange = React.useCallback(\n (nextPageSize: number) => {\n if (currentPagination.pageIndex !== 0) {\n onPageIndexChange?.(0);\n }\n if (nextPageSize !== currentPagination.pageSize) {\n onPageSizeChange?.(nextPageSize);\n }\n if (pageSize === undefined) {\n setLocalPagination({\n pageIndex: 0,\n pageSize: nextPageSize,\n });\n }\n },\n [\n currentPagination.pageIndex,\n currentPagination.pageSize,\n onPageIndexChange,\n onPageSizeChange,\n pageSize,\n setLocalPagination,\n ],\n );\n\n const sentinelRef = useDataTableInfiniteScroll({\n enabled: Boolean(infiniteScroll?.enabled),\n hasMore: Boolean(infiniteScroll?.hasMore),\n isLoadingMore: infiniteScroll?.isLoadingMore,\n onLoadMore: () => infiniteScroll?.onLoadMore(),\n onError: (error) => {\n onActionError?.({\n error,\n source: \"infiniteScroll\",\n });\n },\n });\n\n return {\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n isPageCountKnown,\n renderedRows,\n topPinnedRows,\n bottomPinnedRows,\n reorderColumn,\n rowsToRender,\n sentinelRef,\n table,\n virtualPaddingBottom: 0,\n virtualPaddingTop: 0,\n visibleLeafColumns,\n };\n}\n\nexport type DataTableRowsToRender = Array<{\n row: Row;\n rowIndex: number;\n}>;\n","import * as React from \"react\";\nimport type {\n DataTableColumnPrefs,\n DataTableDensity,\n DataTablePersistenceConfig,\n DataTablePersistencePayload,\n DataTablePersistenceSlice,\n DataTablePersistenceStorage,\n} from \"../types\";\nimport type { RowPinningState } from \"@tanstack/react-table\";\n\nconst STORAGE_PREFIX = \"data-table-pro:column-prefs:\";\nconst DEFAULT_VERSION = 1;\nconst ALL_SLICES: Array = [\n \"visibility\",\n \"sizing\",\n \"order\",\n \"pinning\",\n \"rowPinning\",\n \"density\",\n];\n\nexport function readDataTableColumnPrefs(\n input: string | DataTablePersistenceConfig | undefined,\n): DataTableColumnPrefs {\n const config = resolvePersistenceConfig(input);\n if (!config) {\n return {};\n }\n\n const storage = resolveStorage(config);\n if (!storage) {\n return {};\n }\n const storageKey = getStorageKey(config.key);\n\n let value: string | null;\n try {\n value = storage.getItem(storageKey);\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return {};\n }\n if (!value) {\n return {};\n }\n\n let parsed: unknown;\n try {\n parsed = (config.deserialize ?? JSON.parse)(value);\n } catch (error) {\n config.onError?.({ error, operation: \"deserialize\" });\n return {};\n }\n\n const targetVersion = config.version ?? DEFAULT_VERSION;\n let candidate: unknown;\n if (isPersistencePayload(parsed)) {\n if (parsed.version === targetVersion) {\n candidate = parsed.state;\n } else if (config.migrate) {\n try {\n candidate = config.migrate(\n {\n version: parsed.version,\n state: parsed.state,\n },\n targetVersion,\n );\n } catch (error) {\n config.onError?.({ error, operation: \"migrate\" });\n return {};\n }\n } else {\n return {};\n }\n } else {\n // Raw objects are the legacy columnPrefsKey format. They are validated and\n // upgraded to a versioned envelope on the next successful write.\n candidate = parsed;\n }\n\n return selectPersistenceSlices(\n validateDataTableColumnPrefs(candidate),\n config.slices,\n );\n}\n\nexport function clearDataTableColumnPrefs(\n input: string | DataTablePersistenceConfig | undefined,\n) {\n const config = resolvePersistenceConfig(input);\n if (!config) {\n return false;\n }\n\n const storage = resolveStorage(config);\n if (!storage) {\n return false;\n }\n\n try {\n storage.removeItem(getStorageKey(config.key));\n return true;\n } catch (error) {\n config.onError?.({ error, operation: \"remove\" });\n return false;\n }\n}\n\nexport function usePersistDataTableColumnPrefs({\n key,\n persistence,\n prefs,\n}: {\n key?: string;\n persistence?: DataTablePersistenceConfig;\n prefs: DataTableColumnPrefs;\n}) {\n const config = persistence ?? resolvePersistenceConfig(key);\n const storage = config ? resolveStorage(config) : undefined;\n const storageKey = config ? getStorageKey(config.key) : undefined;\n const version = config?.version ?? DEFAULT_VERSION;\n const debounceMs = Math.max(0, config?.debounceMs ?? 100);\n const selectedState = selectPersistenceSlices(prefs, config?.slices);\n const serialized = React.useMemo(() => {\n if (!config) {\n return { value: undefined };\n }\n\n try {\n const payload: DataTablePersistencePayload = {\n version,\n state: selectedState,\n };\n return {\n value: (config.serialize ?? JSON.stringify)(payload),\n };\n } catch (error) {\n return { error, value: undefined };\n }\n }, [config, selectedState, version]);\n const onErrorEvent = React.useEffectEvent(\n (\n error: unknown,\n operation: \"serialize\" | \"write\",\n ) => {\n config?.onError?.({ error, operation });\n },\n );\n\n React.useEffect(() => {\n if (serialized.error !== undefined) {\n onErrorEvent(serialized.error, \"serialize\");\n }\n }, [serialized.error]);\n\n React.useEffect(() => {\n if (!storage || !storageKey || serialized.value === undefined) {\n return;\n }\n\n const write = () => {\n try {\n if (storage.getItem(storageKey) === serialized.value) {\n return;\n }\n storage.setItem(storageKey, serialized.value);\n } catch (error) {\n onErrorEvent(error, \"write\");\n }\n };\n\n if (debounceMs === 0) {\n write();\n return;\n }\n\n const timeout = globalThis.setTimeout(write, debounceMs);\n return () => {\n globalThis.clearTimeout(timeout);\n };\n }, [debounceMs, serialized.value, storage, storageKey]);\n}\n\nfunction resolvePersistenceConfig(\n input: string | DataTablePersistenceConfig | undefined,\n): DataTablePersistenceConfig | undefined {\n if (!input) {\n return undefined;\n }\n\n return typeof input === \"string\" ? { key: input } : input;\n}\n\nfunction resolveStorage(\n config: DataTablePersistenceConfig,\n): DataTablePersistenceStorage | undefined {\n if (config.storage) {\n return config.storage;\n }\n\n if (typeof window === \"undefined\") {\n return undefined;\n }\n\n try {\n return window.localStorage;\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return undefined;\n }\n}\n\nfunction getStorageKey(key: string) {\n return `${STORAGE_PREFIX}${key}`;\n}\n\nfunction isPersistencePayload(\n value: unknown,\n): value is { version: unknown; state: unknown } {\n return (\n isRecord(value) &&\n Object.prototype.hasOwnProperty.call(value, \"version\") &&\n Object.prototype.hasOwnProperty.call(value, \"state\")\n );\n}\n\nfunction selectPersistenceSlices(\n prefs: DataTableColumnPrefs,\n slices: Array | undefined,\n) {\n const selected = new Set(slices ?? ALL_SLICES);\n const result: DataTableColumnPrefs = {};\n\n for (const slice of ALL_SLICES) {\n if (selected.has(slice) && prefs[slice] !== undefined) {\n Object.assign(result, { [slice]: prefs[slice] });\n }\n }\n\n return result;\n}\n\nfunction validateDataTableColumnPrefs(value: unknown): DataTableColumnPrefs {\n if (!isRecord(value)) {\n return {};\n }\n\n const prefs: DataTableColumnPrefs = {};\n const visibility = validateBooleanRecord(value.visibility);\n if (visibility) {\n prefs.visibility = visibility;\n }\n const sizing = validateSizingRecord(value.sizing);\n if (sizing) {\n prefs.sizing = sizing;\n }\n const order = validateStringArray(value.order);\n if (order) {\n prefs.order = order;\n }\n if (isRecord(value.pinning)) {\n const left = validateStringArray(value.pinning.left) ?? [];\n const right = validateStringArray(value.pinning.right) ?? [];\n prefs.pinning = { left, right };\n }\n const rowPinning = validateRowPinning(value.rowPinning);\n if (rowPinning) {\n prefs.rowPinning = rowPinning;\n }\n if (isDataTableDensity(value.density)) {\n prefs.density = value.density;\n }\n\n return prefs;\n}\n\nfunction validateBooleanRecord(value: unknown) {\n if (!isRecord(value)) {\n return undefined;\n }\n\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, boolean] => typeof entry[1] === \"boolean\",\n ),\n );\n}\n\nfunction validateSizingRecord(value: unknown) {\n if (!isRecord(value)) {\n return undefined;\n }\n\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, number] =>\n typeof entry[1] === \"number\" &&\n Number.isFinite(entry[1]) &&\n entry[1] >= 0,\n ),\n );\n}\n\nfunction validateStringArray(value: unknown) {\n if (!Array.isArray(value)) {\n return undefined;\n }\n\n return value.filter((item): item is string => typeof item === \"string\");\n}\n\nfunction validateRowPinning(value: unknown): RowPinningState | undefined {\n if (!isRecord(value)) {\n return undefined;\n }\n\n return {\n top: validateStringArray(value.top) ?? [],\n bottom: validateStringArray(value.bottom) ?? [],\n };\n}\n\nfunction isDataTableDensity(value: unknown): value is DataTableDensity {\n return (\n value === \"compact\" ||\n value === \"comfortable\" ||\n value === \"spacious\"\n );\n}\n\nfunction isRecord(value: unknown): value is Record {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n","import * as React from \"react\";\nimport { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS } from \"../types\";\n\nconst BREAKPOINT_WIDTHS = Object.values(DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS)\n .slice()\n .sort((first, second) => first - second);\n\nexport function useDataTableContainerWidth(\n containerRef: React.RefObject,\n) {\n const widthRef = React.useRef(0);\n const [width, setWidth] = React.useState(0);\n\n React.useEffect(() => {\n const element = containerRef.current;\n if (!element) {\n return;\n }\n\n const updateWidth = (inlineSize = element.clientWidth) => {\n const nextWidth = quantizeDataTableContainerWidth(inlineSize);\n if (nextWidth === widthRef.current) {\n return;\n }\n\n widthRef.current = nextWidth;\n setWidth(nextWidth);\n };\n\n updateWidth();\n\n if (typeof ResizeObserver === \"undefined\") {\n return;\n }\n\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n updateWidth(entry ? getResizeObserverInlineSize(entry) : undefined);\n });\n\n observer.observe(element);\n\n return () => {\n observer.disconnect();\n };\n }, [containerRef]);\n\n return width;\n}\n\nexport function quantizeDataTableContainerWidth(width: number) {\n if (width <= 0) {\n return 0;\n }\n\n let bucket = 1;\n for (const breakpointWidth of BREAKPOINT_WIDTHS) {\n if (width < breakpointWidth) {\n break;\n }\n bucket = breakpointWidth;\n }\n\n return bucket;\n}\n\nfunction getResizeObserverInlineSize(entry: ResizeObserverEntry) {\n const contentBoxSize: unknown = entry.contentBoxSize;\n const size: unknown = Array.isArray(contentBoxSize)\n ? contentBoxSize[0]\n : contentBoxSize;\n const inlineSize = getInlineSize(size);\n\n return inlineSize ?? entry.contentRect.width;\n}\n\nfunction getInlineSize(value: unknown) {\n if (typeof value !== \"object\" || value === null) {\n return undefined;\n }\n\n const inlineSize = (value as { inlineSize?: unknown }).inlineSize;\n return typeof inlineSize === \"number\" ? inlineSize : undefined;\n}\n","import * as React from \"react\";\nimport type {\n ColumnFiltersState,\n ColumnOrderState,\n ColumnPinningState,\n ColumnSizingState,\n ExpandedState,\n GroupingState,\n PaginationState,\n RowPinningState,\n SortingState,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableDensity,\n DataTableLabels,\n DataTableProps,\n} from \"../types\";\nimport {\n createDataTableLoadingRows,\n getColumnId,\n getDataTableLeafColumns,\n getDataTableLoadingRowId,\n getInitialColumnPinning,\n isDataTableLoadingRow,\n} from \"./data-table-utils\";\nimport {\n readDataTableColumnPrefs,\n usePersistDataTableColumnPrefs,\n} from \"./use-data-table-column-prefs\";\nimport { useControllableState } from \"./use-controllable-state\";\nimport { useDataTableContainerWidth } from \"./use-data-table-container-width\";\nimport { isHiddenAtContainerWidth, isRowVisible } from \"../types\";\n\nexport function useDataTableState({\n columnFilters,\n columnOrder,\n columnPinning,\n rowPinning,\n columnSizing,\n columnPrefsKey,\n persistence,\n columnVisibility,\n columns,\n data,\n density,\n enableRowSelection,\n enableToolbarQueryFiltering,\n expanded,\n grouping,\n getSubRows,\n getRowId,\n hiddenRows,\n initialState,\n isLoading,\n loadingRowCount,\n manualFiltering,\n onColumnFiltersChange,\n onColumnOrderChange,\n onColumnPinningChange,\n onRowPinningChange,\n onColumnSizingChange,\n onColumnVisibilityChange,\n onDensityChange,\n onExpandedChange,\n onGroupingChange,\n onPageIndexChange,\n onRowSelectionChange,\n onShowHiddenRowsChange,\n onSortingChange,\n onToolbarQueryValueChange,\n onViewModeChange,\n pageIndex,\n pageSize,\n resolvedLabels,\n rowSelection,\n rowsPerPageOptions,\n selectionActions,\n showHiddenRows,\n sorting,\n toolbarQueryDebounceMs,\n toolbarQueryPlaceholder,\n toolbarQueryValue,\n viewMode,\n containerRef,\n}: {\n columnFilters: DataTableProps[\"columnFilters\"];\n columnOrder: DataTableProps[\"columnOrder\"];\n columnPinning: DataTableProps[\"columnPinning\"];\n rowPinning: DataTableProps[\"rowPinning\"];\n columnSizing?: DataTableProps[\"columnSizing\"];\n columnPrefsKey: DataTableProps[\"columnPrefsKey\"];\n persistence?: DataTableProps[\"persistence\"];\n columnVisibility: DataTableProps[\"columnVisibility\"];\n columns: DataTableProps[\"columns\"];\n data: DataTableProps[\"data\"];\n density: DataTableProps[\"density\"];\n enableRowSelection: boolean;\n enableToolbarQueryFiltering: boolean;\n expanded: DataTableProps[\"expanded\"];\n grouping: DataTableProps[\"grouping\"];\n getSubRows: DataTableProps[\"getSubRows\"];\n getRowId: DataTableProps[\"getRowId\"];\n hiddenRows: DataTableProps[\"hiddenRows\"];\n initialState?: DataTableProps[\"initialState\"];\n isLoading: boolean;\n loadingRowCount: DataTableProps[\"loadingRowCount\"];\n manualFiltering: boolean;\n onColumnFiltersChange: DataTableProps[\"onColumnFiltersChange\"];\n onColumnOrderChange: DataTableProps[\"onColumnOrderChange\"];\n onColumnPinningChange: DataTableProps[\"onColumnPinningChange\"];\n onRowPinningChange: DataTableProps[\"onRowPinningChange\"];\n onColumnSizingChange?: DataTableProps[\"onColumnSizingChange\"];\n onColumnVisibilityChange: DataTableProps[\"onColumnVisibilityChange\"];\n onDensityChange: DataTableProps[\"onDensityChange\"];\n onExpandedChange: DataTableProps[\"onExpandedChange\"];\n onGroupingChange: DataTableProps[\"onGroupingChange\"];\n onPageIndexChange: DataTableProps[\"onPageIndexChange\"];\n onRowSelectionChange: DataTableProps[\"onRowSelectionChange\"];\n onShowHiddenRowsChange: DataTableProps[\"onShowHiddenRowsChange\"];\n onSortingChange: DataTableProps[\"onSortingChange\"];\n onToolbarQueryValueChange: DataTableProps[\"onToolbarQueryValueChange\"];\n onViewModeChange: DataTableProps[\"onViewModeChange\"];\n pageIndex: DataTableProps[\"pageIndex\"];\n pageSize: DataTableProps[\"pageSize\"];\n resolvedLabels: DataTableLabels;\n rowSelection: DataTableProps[\"rowSelection\"];\n rowsPerPageOptions: Array;\n selectionActions: DataTableProps[\"selectionActions\"];\n showHiddenRows: DataTableProps[\"showHiddenRows\"];\n sorting: DataTableProps[\"sorting\"];\n toolbarQueryDebounceMs: DataTableProps[\"toolbarQueryDebounceMs\"];\n toolbarQueryPlaceholder: DataTableProps[\"toolbarQueryPlaceholder\"];\n toolbarQueryValue: DataTableProps[\"toolbarQueryValue\"];\n viewMode: DataTableProps[\"viewMode\"];\n containerRef: React.RefObject;\n}) {\n const persistenceConfig = React.useMemo(\n () => persistence ?? (columnPrefsKey ? { key: columnPrefsKey } : undefined),\n [columnPrefsKey, persistence],\n );\n const persistedColumnPrefs = React.useMemo(\n () => readDataTableColumnPrefs(persistenceConfig),\n [persistenceConfig],\n );\n const [localPagination, setLocalPagination] =\n React.useState({\n pageIndex: initialState?.pagination?.pageIndex ?? 0,\n pageSize:\n initialState?.pagination?.pageSize ??\n rowsPerPageOptions[0] ??\n 20,\n });\n const [currentSorting, setCurrentSorting] =\n useControllableState({\n value: sorting,\n onChange: onSortingChange,\n defaultValue: () => initialState?.sorting ?? [],\n });\n const [currentRowSelection, setCurrentRowSelection] = useControllableState<\n Record\n >({\n value: rowSelection,\n onChange: onRowSelectionChange,\n defaultValue: () => initialState?.rowSelection ?? {},\n });\n const [currentColumnVisibility, setCurrentColumnVisibility] =\n useControllableState({\n value: columnVisibility,\n onChange: onColumnVisibilityChange,\n defaultValue: () =>\n initialState?.columnVisibility ??\n persistedColumnPrefs.visibility ??\n {},\n });\n const [currentColumnFilters, setCurrentColumnFilters] =\n useControllableState({\n value: columnFilters,\n onChange: onColumnFiltersChange,\n defaultValue: () => initialState?.columnFilters ?? [],\n });\n const [currentExpanded, setCurrentExpanded] =\n useControllableState({\n value: expanded,\n onChange: onExpandedChange,\n defaultValue: () => initialState?.expanded ?? {},\n });\n const [currentColumnOrder, setCurrentColumnOrder] =\n useControllableState({\n value: columnOrder,\n onChange: onColumnOrderChange,\n defaultValue: () =>\n initialState?.columnOrder ?? persistedColumnPrefs.order ?? [],\n });\n const [currentColumnPinning, setCurrentColumnPinning] =\n useControllableState({\n value: columnPinning,\n onChange: onColumnPinningChange,\n defaultValue: () =>\n initialState?.columnPinning ??\n persistedColumnPrefs.pinning ??\n getInitialColumnPinning(columns),\n });\n const [currentRowPinning, setCurrentRowPinning] =\n useControllableState({\n value: rowPinning,\n onChange: onRowPinningChange,\n defaultValue: () =>\n initialState?.rowPinning ?? persistedColumnPrefs.rowPinning ?? {\n top: [],\n bottom: [],\n },\n });\n const [currentColumnSizing, setCurrentColumnSizing] =\n useControllableState({\n value: columnSizing,\n onChange: onColumnSizingChange,\n defaultValue: () =>\n initialState?.columnSizing ?? persistedColumnPrefs.sizing ?? {},\n });\n const [currentViewMode, setCurrentViewMode] = useControllableState<\n \"table\" | \"card\"\n >({\n value: viewMode,\n onChange: onViewModeChange,\n defaultValue: () => initialState?.viewMode ?? \"table\",\n });\n const [currentGrouping, setCurrentGrouping] = useControllableState({\n value: grouping,\n onChange: onGroupingChange,\n defaultValue: () => initialState?.grouping ?? [],\n });\n const [currentShowHiddenRows, setCurrentShowHiddenRows] =\n useControllableState({\n value: showHiddenRows,\n onChange: onShowHiddenRowsChange,\n defaultValue: () => initialState?.showHiddenRows ?? false,\n });\n const [currentDensity, setCurrentDensity] =\n useControllableState({\n value: density,\n onChange: onDensityChange,\n defaultValue: () =>\n initialState?.density ??\n persistedColumnPrefs.density ??\n \"comfortable\",\n });\n const resolvedToolbarQueryValue =\n toolbarQueryValue ?? initialState?.globalFilter ?? \"\";\n const resolvedToolbarQueryPlaceholder =\n toolbarQueryPlaceholder ?? resolvedLabels.searchPlaceholder;\n const resolvedToolbarQueryDebounceMs = toolbarQueryDebounceMs ?? 250;\n const [localSearchValue, setLocalSearchValue] = React.useState(\n resolvedToolbarQueryValue,\n );\n const containerWidth = useDataTableContainerWidth(containerRef);\n const hasOnSearchValueChange = Boolean(onToolbarQueryValueChange);\n const lastReportedSearchValueRef = React.useRef(resolvedToolbarQueryValue);\n const onToolbarQueryValueChangeEvent = React.useEffectEvent(\n (value: string) => {\n lastReportedSearchValueRef.current = value;\n onToolbarQueryValueChange?.(value);\n },\n );\n\n React.useEffect(() => {\n lastReportedSearchValueRef.current = resolvedToolbarQueryValue;\n // A controlled query change must replace any pending debounced draft.\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setLocalSearchValue(resolvedToolbarQueryValue);\n }, [resolvedToolbarQueryValue]);\n\n React.useEffect(() => {\n if (!hasOnSearchValueChange) {\n return;\n }\n\n if (localSearchValue === resolvedToolbarQueryValue) {\n return;\n }\n\n if (localSearchValue === lastReportedSearchValueRef.current) {\n return;\n }\n\n const timeout = window.setTimeout(() => {\n onToolbarQueryValueChangeEvent(localSearchValue);\n }, resolvedToolbarQueryDebounceMs);\n\n return () => {\n window.clearTimeout(timeout);\n };\n }, [\n hasOnSearchValueChange,\n localSearchValue,\n resolvedToolbarQueryDebounceMs,\n resolvedToolbarQueryValue,\n ]);\n\n const currentPagination = React.useMemo(\n () => ({\n pageIndex: pageIndex ?? localPagination.pageIndex,\n pageSize: pageSize ?? localPagination.pageSize,\n }),\n [\n localPagination.pageIndex,\n localPagination.pageSize,\n pageIndex,\n pageSize,\n ],\n );\n const resolvedLoadingRowCount = Math.max(\n 1,\n loadingRowCount ?? Math.min(5, currentPagination.pageSize),\n );\n // Keep input/callback state eager. Only the client row-model input is\n // deferred, so server/manual callbacks never wait behind a large filter.\n const deferredSearchValue = React.useDeferredValue(localSearchValue);\n const globalFilterValue = enableToolbarQueryFiltering\n ? manualFiltering\n ? localSearchValue\n : deferredSearchValue\n : \"\";\n const handleViewModeChange = React.useCallback(\n (nextViewMode: \"table\" | \"card\") => {\n setCurrentViewMode(nextViewMode);\n },\n [setCurrentViewMode],\n );\n const handleShowHiddenRowsChange = React.useCallback(\n (nextShowHiddenRows: boolean) => {\n setCurrentShowHiddenRows(nextShowHiddenRows);\n },\n [setCurrentShowHiddenRows],\n );\n const handleDensityChange = React.useCallback(\n (nextDensity: DataTableDensity) => {\n setCurrentDensity(nextDensity);\n },\n [setCurrentDensity],\n );\n const resetPageIndexForFilterChange = React.useCallback(() => {\n onPageIndexChange?.(0);\n if (pageIndex === undefined) {\n setLocalPagination((current) =>\n current.pageIndex === 0 ? current : { ...current, pageIndex: 0 },\n );\n }\n }, [onPageIndexChange, pageIndex]);\n const lastFilterStateRef = React.useRef({\n columnFilters: currentColumnFilters,\n globalFilterValue,\n });\n\n React.useEffect(() => {\n const previous = lastFilterStateRef.current;\n const filtersChanged = previous.columnFilters !== currentColumnFilters;\n const globalFilterChanged =\n previous.globalFilterValue !== globalFilterValue;\n lastFilterStateRef.current = {\n columnFilters: currentColumnFilters,\n globalFilterValue,\n };\n\n if (manualFiltering) {\n return;\n }\n\n if (!filtersChanged && !globalFilterChanged) {\n return;\n }\n\n resetPageIndexForFilterChange();\n }, [\n currentColumnFilters,\n globalFilterValue,\n manualFiltering,\n resetPageIndexForFilterChange,\n ]);\n\n usePersistDataTableColumnPrefs({\n persistence: persistenceConfig,\n prefs: {\n visibility: columnVisibility ? undefined : currentColumnVisibility,\n sizing:\n columnSizing === undefined ? currentColumnSizing : undefined,\n order: columnOrder ? undefined : currentColumnOrder,\n pinning: columnPinning ? undefined : currentColumnPinning,\n rowPinning: rowPinning === undefined ? currentRowPinning : undefined,\n density: density ? undefined : currentDensity,\n },\n });\n const responsiveColumnVisibility = React.useMemo(() => {\n return getDataTableLeafColumns(columns).reduce(\n (visibility, { column, index }) => {\n const columnId = getColumnId(column, index);\n if (isHiddenAtContainerWidth(column.meta?.hideOn, containerWidth)) {\n visibility[columnId] = false;\n }\n return visibility;\n },\n {},\n );\n }, [columns, containerWidth]);\n const effectiveColumnVisibility = React.useMemo(() => {\n return {\n ...currentColumnVisibility,\n ...responsiveColumnVisibility,\n };\n }, [currentColumnVisibility, responsiveColumnVisibility]);\n const visibleData = React.useMemo(\n () =>\n data.filter((row) =>\n isRowVisible(row, hiddenRows, currentShowHiddenRows),\n ),\n [currentShowHiddenRows, data, hiddenRows],\n );\n const shouldRenderInitialLoading = isLoading && visibleData.length === 0;\n const loadingRows = React.useMemo(\n () => createDataTableLoadingRows(resolvedLoadingRowCount),\n [resolvedLoadingRowCount],\n );\n const tableData = shouldRenderInitialLoading\n ? loadingRows\n : visibleData;\n const tableGetRowId = React.useCallback(\n (row: TData, index: number) => {\n if (isDataTableLoadingRow(row)) {\n return getDataTableLoadingRowId(index);\n }\n\n return getRowId(row, index);\n },\n [getRowId],\n );\n const shouldResolveSelectedRows =\n enableRowSelection ||\n (selectionActions?.length ?? 0) > 0 ||\n Object.values(currentRowSelection).some(Boolean);\n const rowById = React.useMemo(() => {\n if (!shouldResolveSelectedRows) {\n return new Map();\n }\n\n const rows = new Map();\n const visitRows = (currentRows: Array) => {\n currentRows.forEach((row, index) => {\n rows.set(getRowId(row, index), row);\n const subRows = getSubRows?.(row, index);\n if (subRows?.length) {\n visitRows(subRows);\n }\n });\n };\n visitRows(visibleData);\n return rows;\n }, [getRowId, getSubRows, shouldResolveSelectedRows, visibleData]);\n const selectedRows = React.useMemo(() => {\n if (!shouldResolveSelectedRows) {\n return [];\n }\n\n return Object.entries(currentRowSelection)\n .filter(([, selected]) => selected)\n .map(([rowId]) => rowById.get(rowId))\n .filter((row): row is TData => Boolean(row));\n }, [currentRowSelection, rowById, shouldResolveSelectedRows]);\n const selectedRowIds = React.useMemo(\n () =>\n Object.entries(currentRowSelection).flatMap(([rowId, selected]) =>\n selected ? [rowId] : [],\n ),\n [currentRowSelection],\n );\n\n return {\n containerWidth,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentRowPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentGrouping,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n effectiveColumnVisibility,\n globalFilterValue,\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n localSearchValue,\n resolvedLoadingRowCount,\n resolvedToolbarQueryPlaceholder,\n selectedRowIds,\n selectedRows,\n setCurrentColumnFilters,\n setCurrentColumnOrder,\n setCurrentColumnPinning,\n setCurrentRowPinning,\n setCurrentColumnVisibility,\n setCurrentExpanded,\n setCurrentGrouping,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing: setCurrentColumnSizing,\n setLocalPagination,\n setLocalSearchValue,\n shouldRenderInitialLoading,\n tableData,\n tableGetRowId,\n /**\n * @deprecated Read the filtered TanStack row model from the table\n * instance. This alias remains for advanced 4.x callers.\n */\n toolbarFilteredData: visibleData,\n visibleData,\n };\n}\n","import * as React from \"react\";\nimport type { Column, ColumnSizingState } from \"@tanstack/react-table\";\nimport type { DataTableColumnDef } from \"../types\";\nimport type { DataTableUiClassNames } from \"../ui-kit\";\nimport {\n UTILITY_COLUMN_SIZE,\n getColumnId,\n getConfiguredColumnMinWidth,\n getDataTableLeafColumns,\n getFixedSide,\n getPinnedColumnClassName,\n isUtilityColumnId,\n} from \"./data-table-utils\";\n\ntype ColumnLayoutMode = \"fill\" | \"fit\";\n\nexport type DataTableColumnLayout = {\n cellStyle: React.CSSProperties | undefined;\n colStyle: React.CSSProperties | undefined;\n fixedSide: \"left\" | \"right\" | false | undefined;\n headerStyle: React.CSSProperties | undefined;\n isActionsColumn: boolean;\n isExpansionColumn: boolean;\n isSelectionColumn: boolean;\n isSpacerColumn: boolean;\n isUtilityColumn: boolean;\n pinnedClassName: string | undefined;\n utilityClassName: string | undefined;\n};\n\nconst EMPTY_COLUMN_LAYOUT: DataTableColumnLayout = {\n cellStyle: undefined,\n colStyle: undefined,\n fixedSide: undefined,\n headerStyle: undefined,\n isActionsColumn: false,\n isExpansionColumn: false,\n isSelectionColumn: false,\n isSpacerColumn: false,\n isUtilityColumn: false,\n pinnedClassName: undefined,\n utilityClassName: undefined,\n};\n\nexport function useColumnLayout({\n columns,\n columnSizing,\n editableRows,\n enableRowSelection,\n hasRowActions,\n hasRowExpansion,\n layoutMode,\n uiClassNames,\n visibleLeafColumns,\n}: {\n columns: Array>;\n columnSizing: ColumnSizingState;\n editableRows: boolean;\n enableRowSelection: boolean;\n hasRowActions: boolean;\n hasRowExpansion: boolean;\n layoutMode: ColumnLayoutMode;\n uiClassNames: DataTableUiClassNames;\n visibleLeafColumns: Array>;\n}) {\n const explicitlySizedColumnIds = React.useMemo(() => {\n const ids = new Set();\n\n for (const { column, index } of getDataTableLeafColumns(columns)) {\n if (Object.prototype.hasOwnProperty.call(column, \"size\")) {\n ids.add(getColumnId(column, index));\n }\n }\n\n if (enableRowSelection) {\n ids.add(\"__select__\");\n }\n\n if (hasRowExpansion) {\n ids.add(\"__expand__\");\n }\n\n if (hasRowActions || editableRows) {\n ids.add(\"__actions__\");\n }\n\n return ids;\n }, [\n columns,\n editableRows,\n enableRowSelection,\n hasRowActions,\n hasRowExpansion,\n ]);\n\n const minimumColumnWidths = React.useMemo(() => {\n const widths = new Map();\n\n for (const { column, index } of getDataTableLeafColumns(columns)) {\n const configuredMinWidth = getConfiguredColumnMinWidth(column);\n\n if (configuredMinWidth !== undefined) {\n widths.set(getColumnId(column, index), configuredMinWidth);\n }\n }\n\n return widths;\n }, [columns]);\n\n const pinnedColumns = React.useMemo(() => {\n const left = new Map();\n const right = new Map();\n\n let leftOffset = 0;\n for (const column of visibleLeafColumns) {\n if (getFixedSide(column) === \"left\") {\n left.set(column.id, leftOffset);\n leftOffset += getColumnLayoutSize(column);\n }\n }\n\n let rightOffset = 0;\n for (const column of [...visibleLeafColumns].reverse()) {\n if (getFixedSide(column) === \"right\") {\n right.set(column.id, rightOffset);\n rightOffset += getColumnLayoutSize(column);\n }\n }\n\n return { left, right };\n }, [visibleLeafColumns]);\n\n const fillColumnId = React.useMemo(() => {\n if (layoutMode !== \"fill\") {\n return undefined;\n }\n\n const dataColumns = visibleLeafColumns.filter(\n (column) => !isUtilityColumnId(column.id),\n );\n\n if (!dataColumns.length) {\n return undefined;\n }\n\n const allDataColumnsAreFixed = dataColumns.every(\n (column) =>\n explicitlySizedColumnIds.has(column.id) ||\n Object.prototype.hasOwnProperty.call(columnSizing, column.id),\n );\n\n return allDataColumnsAreFixed\n ? dataColumns[dataColumns.length - 1]?.id\n : undefined;\n }, [\n columnSizing,\n explicitlySizedColumnIds,\n layoutMode,\n visibleLeafColumns,\n ]);\n\n const fixedWidthColumnIds = React.useMemo(() => {\n const ids = new Set([\n ...explicitlySizedColumnIds,\n ...Object.keys(columnSizing),\n ]);\n\n if (fillColumnId) {\n ids.delete(fillColumnId);\n }\n\n return ids;\n }, [columnSizing, explicitlySizedColumnIds, fillColumnId]);\n\n const columnLayouts = React.useMemo(() => {\n const layouts = new Map();\n\n for (const column of visibleLeafColumns) {\n const isSelectionColumn = column.id === \"__select__\";\n const isExpansionColumn = column.id === \"__expand__\";\n const isActionsColumn = column.id === \"__actions__\";\n const isUtilityColumn =\n isSelectionColumn || isExpansionColumn || isActionsColumn;\n const isSpacerColumn = column.id === \"__spacer__\";\n const configuredMinWidth = minimumColumnWidths.get(column.id);\n const isFlexibleFillColumn = column.id === fillColumnId;\n const columnMinWidth =\n configuredMinWidth ??\n (isFlexibleFillColumn ? column.getSize() : undefined);\n const shouldFixWidth =\n !isSpacerColumn &&\n (layoutMode === \"fit\" ||\n isUtilityColumn ||\n fixedWidthColumnIds.has(column.id));\n const baseStyle =\n shouldFixWidth || columnMinWidth !== undefined\n ? {\n width: shouldFixWidth\n ? isUtilityColumn\n ? UTILITY_COLUMN_SIZE\n : column.getSize()\n : undefined,\n minWidth: isUtilityColumn\n ? UTILITY_COLUMN_SIZE\n : shouldFixWidth\n ? column.getSize()\n : columnMinWidth,\n maxWidth: shouldFixWidth\n ? isUtilityColumn\n ? UTILITY_COLUMN_SIZE\n : column.getSize()\n : undefined,\n }\n : undefined;\n const fixedSide = getFixedSide(column);\n const pinnedStyle = fixedSide\n ? {\n left:\n fixedSide === \"left\" ? pinnedColumns.left.get(column.id) : undefined,\n right:\n fixedSide === \"right\"\n ? pinnedColumns.right.get(column.id)\n : undefined,\n }\n : undefined;\n const cellStyle =\n baseStyle || pinnedStyle ? { ...baseStyle, ...pinnedStyle } : undefined;\n\n layouts.set(column.id, {\n cellStyle,\n colStyle: baseStyle,\n fixedSide,\n headerStyle: cellStyle,\n isActionsColumn,\n isExpansionColumn,\n isSelectionColumn,\n isSpacerColumn,\n isUtilityColumn,\n pinnedClassName: fixedSide\n ? getPinnedColumnClassName(fixedSide, uiClassNames, {\n isUtilityColumn,\n })\n : undefined,\n utilityClassName: isUtilityColumn\n ? \"w-[50px] max-w-[50px] min-w-[50px] px-0\"\n : undefined,\n });\n }\n\n return layouts;\n }, [\n fillColumnId,\n fixedWidthColumnIds,\n layoutMode,\n minimumColumnWidths,\n pinnedColumns,\n uiClassNames,\n visibleLeafColumns,\n ]);\n\n const fillMinWidth = React.useMemo(() => {\n return visibleLeafColumns.reduce((total, column) => {\n const layout = columnLayouts.get(column.id);\n const configuredMinWidth = minimumColumnWidths.get(column.id);\n const isFlexibleFillColumn = column.id === fillColumnId;\n\n if (layout?.isUtilityColumn) {\n return total + UTILITY_COLUMN_SIZE;\n }\n\n if (fixedWidthColumnIds.has(column.id)) {\n return total + column.getSize();\n }\n\n return (\n total +\n (configuredMinWidth ?? (isFlexibleFillColumn ? column.getSize() : 0))\n );\n }, 0);\n }, [\n columnLayouts,\n fillColumnId,\n fixedWidthColumnIds,\n minimumColumnWidths,\n visibleLeafColumns,\n ]);\n\n const getColumnLayout = React.useCallback(\n (columnId: string) => columnLayouts.get(columnId) ?? EMPTY_COLUMN_LAYOUT,\n [columnLayouts],\n );\n\n return {\n columnLayouts,\n explicitlySizedColumnIds,\n fillMinWidth,\n getColumnLayout,\n };\n}\n\nfunction getColumnLayoutSize(column: Column) {\n return isUtilityColumnId(column.id) ? UTILITY_COLUMN_SIZE : column.getSize();\n}\n","import * as React from \"react\";\nimport type { ExpandedState, OnChangeFn, Row } from \"@tanstack/react-table\";\nimport { IconChevronDown } from \"../icons\";\nimport type {\n DataTableCardRendererProps,\n DataTableCardSizing,\n DataTableEditableRowsConfig,\n DataTableDetailPanel,\n DataTableLabels,\n DataTableProps,\n DataTableRowAction,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\nimport {\n isDataTableInteractiveTarget,\n toggleDataTableExpandedState,\n} from \"./data-table-utils\";\n\ntype DataTableCardViewProps = {\n rows: Array>;\n cardRenderer: (props: DataTableCardRendererProps) => React.ReactNode;\n cardSizing?: DataTableCardSizing;\n cardGridClassName?: string;\n cardClassName?: string;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n detailPanel?: DataTableDetailPanel;\n detailExpanded: ExpandedState;\n onDetailExpandedChange: OnChangeFn;\n hasCardTitle: boolean;\n rowSelection: Record;\n onRowSelectionChange: (rowSelection: Record) => void;\n enableRowSelection: boolean;\n editingRowId: string | null;\n onEditingRowIdChange: (rowId: string | null) => void;\n getRowClassName?: DataTableProps[\"getRowClassName\"];\n onRowClick?: (context: { row: TData; rowId: string }) => void | Promise;\n getRowDraggable?: (row: TData) => boolean;\n onRowDragStart?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n onRowDragEnd?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n isLoading?: boolean;\n loadingRowCount?: number;\n labels: DataTableLabels;\n};\n\ntype DataTableRowActionsComponent = (props: {\n row: TData;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n onStartEditing: () => void;\n onCancelEditing: () => void;\n labels: DataTableLabels;\n}) => React.ReactElement | null;\n\nexport function createDataTableCardView(\n ui: DataTableUiKit,\n DataTableRowActions: DataTableRowActionsComponent,\n) {\n const uiClassNames = ui.classNames ?? {};\n const { Button, Card, CardContent, CardHeader, Checkbox, Skeleton } = ui;\n\n return function DataTableCardView({\n rows,\n cardRenderer,\n cardSizing = \"fixed\",\n cardGridClassName,\n cardClassName,\n rowActions,\n editableRows,\n detailPanel,\n detailExpanded,\n onDetailExpandedChange,\n hasCardTitle,\n rowSelection,\n onRowSelectionChange,\n enableRowSelection,\n editingRowId,\n onEditingRowIdChange,\n getRowClassName,\n onRowClick,\n getRowDraggable,\n onRowDragStart,\n onRowDragEnd,\n isLoading = false,\n loadingRowCount = 5,\n labels,\n }: DataTableCardViewProps) {\n const resolvedCardSizing = cardSizing ?? \"fixed\";\n const resolvedCardGridClassName =\n cardGridClassName\n ? cn(\"grid\", cardGridClassName)\n : getCardGridClassName(resolvedCardSizing);\n const cardGridClasses = cn(\n \"min-h-0 w-full gap-4 p-1\",\n uiClassNames.cardGrid,\n resolvedCardGridClassName,\n );\n const cardItemClasses = (stateClassName?: string) =>\n cn(\n \"relative min-w-0 max-w-full gap-0 overflow-hidden bg-transparent p-0\",\n getCardItemClassName(resolvedCardSizing),\n uiClassNames.cardItem,\n cardClassName,\n stateClassName,\n );\n\n if (isLoading) {\n return (\n \n {Array.from({ length: Math.max(1, loadingRowCount) }, (_, index) => (\n \n {hasCardTitle ? (\n \n \n \n \n ) : null}\n \n \n \n \n \n \n \n ))}\n \n );\n }\n\n return (\n \n {rows.map((row) => {\n const rowId = row.id;\n const originalRow = row.original;\n const isSelected = Boolean(rowSelection[rowId]);\n const isEditing = editingRowId === rowId;\n const hasCardActions = rowActions.length > 0 || Boolean(editableRows);\n const canExpandDetail = Boolean(\n detailPanel && (detailPanel.getRowCanExpand?.(originalRow) ?? true),\n );\n const showCardGradient =\n enableRowSelection || hasCardActions || hasCardTitle;\n const showCardOverlayControls =\n enableRowSelection ||\n hasCardActions ||\n row.getCanExpand() ||\n canExpandDetail;\n const handleCardActivate = () => {\n if (!onRowClick) {\n return;\n }\n\n void onRowClick({ row: originalRow, rowId });\n };\n\n return (\n ) => {\n onRowDragStart?.({ row: originalRow, rowId, event });\n }}\n onDragEnd={(event: React.DragEvent) => {\n onRowDragEnd?.({ row: originalRow, rowId, event });\n }}\n >\n {showCardGradient ? (\n \n ) : null}\n *]:min-w-0\",\n getCardRendererClassName(resolvedCardSizing),\n onRowClick && \"cursor-pointer focus-visible:outline-none\",\n )}\n onClick={(event: React.MouseEvent) => {\n if (\n isDataTableInteractiveTarget(\n event.target,\n event.currentTarget,\n )\n ) {\n return;\n }\n\n handleCardActivate();\n }}\n onKeyDown={(event: React.KeyboardEvent) => {\n if (\n isDataTableInteractiveTarget(\n event.target,\n event.currentTarget,\n )\n ) {\n return;\n }\n\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n handleCardActivate();\n }\n }}\n >\n {cardRenderer({\n row: originalRow,\n rowId,\n depth: row.depth,\n canExpandSubRows: row.getCanExpand(),\n isSubRowsExpanded: row.getIsExpanded(),\n toggleSubRowsExpanded: () => row.toggleExpanded(),\n isSelected,\n onSelectedChange: (nextValue) => {\n onRowSelectionChange(\n updateRowSelection(\n rowSelection,\n rowId,\n nextValue,\n row.getCanSelect(),\n row.getCanMultiSelect(),\n ),\n );\n },\n actions: rowActions,\n isEditing,\n startEditing: () => {\n onEditingRowIdChange(rowId);\n },\n cancelEditing: () => {\n onEditingRowIdChange(null);\n },\n })}\n \n {isEditing ||\n !detailPanel ||\n !(detailExpanded === true || Boolean(detailExpanded[row.id]))\n ? null\n : (\n \n {detailPanel.render({\n row: originalRow,\n rowId,\n tableRow: row,\n })}\n \n )}\n {showCardOverlayControls ? (\n \n {enableRowSelection ? (\n \n {\n onRowSelectionChange(\n updateRowSelection(\n rowSelection,\n rowId,\n checked === true,\n row.getCanSelect(),\n row.getCanMultiSelect(),\n ),\n );\n }}\n />\n \n ) : null}\n {row.getCanExpand() ? (\n
    \n row.toggleExpanded()}\n >\n \n \n
    \n ) : null}\n {canExpandDetail ? (\n \n {\n onDetailExpandedChange((current) =>\n toggleDataTableExpandedState(\n current,\n row.id,\n rows.map((item) => item.id),\n ),\n );\n }}\n >\n \n \n \n ) : null}\n
    \n {hasCardActions ? (\n \n {\n onEditingRowIdChange(rowId);\n }}\n onCancelEditing={() => {\n onEditingRowIdChange(null);\n }}\n labels={labels}\n />\n
    \n ) : null}\n
    \n ) : null}\n \n );\n })}\n \n );\n };\n}\n\nfunction getCardGridClassName(cardSizing: DataTableCardSizing) {\n switch (cardSizing) {\n case \"content\":\n return \"flex flex-wrap items-start justify-start\";\n case \"fluid\":\n return \"grid grid-cols-[repeat(auto-fit,minmax(min(18rem,100%),1fr))]\";\n case \"fixed\":\n default:\n return \"grid grid-cols-[repeat(auto-fill,minmax(min(18rem,100%),18rem))] justify-start\";\n }\n}\n\nfunction getCardItemClassName(cardSizing: DataTableCardSizing) {\n switch (cardSizing) {\n case \"content\":\n return \"w-fit\";\n case \"fluid\":\n return \"w-full\";\n case \"fixed\":\n default:\n return undefined;\n }\n}\n\nfunction getCardRendererClassName(cardSizing: DataTableCardSizing) {\n switch (cardSizing) {\n case \"content\":\n return \"w-fit\";\n case \"fluid\":\n return \"w-full flex-1 [&>*]:w-full\";\n case \"fixed\":\n default:\n return \"flex-1\";\n }\n}\n\nfunction updateRowSelection(\n rowSelection: Record,\n rowId: string,\n isSelected: boolean,\n canSelect: boolean,\n canMultiSelect: boolean,\n) {\n if (!canSelect) {\n return rowSelection;\n }\n\n if (isSelected) {\n return canMultiSelect\n ? {\n ...rowSelection,\n [rowId]: true,\n }\n : { [rowId]: true };\n }\n\n if (!rowSelection[rowId]) {\n return rowSelection;\n }\n\n const nextSelection = { ...rowSelection };\n delete nextSelection[rowId];\n return nextSelection;\n}\n","import { IconInbox } from \"../icons\";\nimport type { DataTableUiKit } from \"../ui-kit\";\n\nexport function createDataTableEmptyState(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n } = ui;\n\n return function DataTableEmptyState({\n title = \"No rows found\",\n description = \"Adjust your filters or create a new record to populate this table.\",\n }: {\n title?: string;\n description?: string;\n }) {\n return (\n \n \n \n \n \n {title}\n {description}\n \n \n \n );\n };\n}\n","import * as React from \"react\";\nimport { IconDatabase } from \"../icons\";\nimport type { DataTableLabels } from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\ntype DataTablePaginationProps = {\n pageIndex: number;\n pageCount: number;\n pageCountKnown: boolean;\n pageSize: number;\n totalRowCount?: number;\n rowsPerPageOptions: Array;\n onPageIndexChange: (pageIndex: number) => void;\n onPageSizeChange: (pageSize: number) => void;\n labels: DataTableLabels;\n};\n\nexport function createDataTablePagination(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectTrigger,\n SelectValue,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n function DataTablePagination({\n pageIndex,\n pageCount,\n pageCountKnown,\n pageSize,\n totalRowCount,\n rowsPerPageOptions,\n onPageIndexChange,\n onPageSizeChange,\n labels,\n }: DataTablePaginationProps) {\n const pages = pageCountKnown\n ? getVisiblePages(pageIndex, Math.max(1, pageCount))\n : [];\n const canGoPrevious = pageIndex > 0;\n const canGoNext = pageIndex + 1 < pageCount;\n const lastPageIndex = Math.max(0, pageCount - 1);\n\n return (\n
    \n \n \n {labels.recordsPerPage}\n \n {\n onPageSizeChange(Number(value));\n }}\n >\n \n \n \n \n \n {rowsPerPageOptions.map((option) => (\n \n {option}\n \n ))}\n \n \n \n
    \n\n {totalRowCount !== undefined ? (\n
    \n \n \n {totalRowCount}\n \n {labels.totalRecords(totalRowCount)}\n \n
    \n \n ) : null}\n\n
    \n \n {pageCountKnown\n ? labels.pageStatus(pageIndex, Math.max(1, pageCount))\n : (\n labels.pageStatusUnknown ??\n DATA_TABLE_DEFAULT_LABELS.pageStatusUnknown\n )(pageIndex)}\n
    \n \n \n \n \n \n ) => {\n event.preventDefault();\n if (canGoPrevious) {\n onPageIndexChange(0);\n }\n }}\n text={labels.firstPage}\n />\n \n {labels.firstPage}\n \n \n \n \n \n ) => {\n event.preventDefault();\n if (canGoPrevious) {\n onPageIndexChange(pageIndex - 1);\n }\n }}\n text={labels.previousPage}\n />\n \n {labels.previousPage}\n \n \n {pages.map((item, index) => (\n \n {item === \"ellipsis\" ? (\n \n ) : (\n ) => {\n event.preventDefault();\n onPageIndexChange(item - 1);\n }}\n >\n {item}\n \n )}\n \n ))}\n \n \n \n ) => {\n event.preventDefault();\n if (canGoNext) {\n onPageIndexChange(pageIndex + 1);\n }\n }}\n text={labels.nextPage}\n />\n \n {labels.nextPage}\n \n \n {pageCountKnown ? (\n \n \n \n ,\n ) => {\n event.preventDefault();\n if (canGoNext) {\n onPageIndexChange(lastPageIndex);\n }\n }}\n />\n \n {labels.lastPage}\n \n \n ) : null}\n \n \n \n \n );\n }\n\n function DataTableFooter(props: DataTablePaginationProps) {\n return (\n \n \n \n );\n }\n\n return {\n DataTableFooter,\n DataTablePagination,\n };\n}\n\nfunction getVisiblePages(currentPageIndex: number, pageCount: number) {\n const currentPage = currentPageIndex + 1;\n const pages = new Set([1, pageCount]);\n\n for (\n let page = Math.max(1, currentPage - 2);\n page <= Math.min(pageCount, currentPage + 2);\n page += 1\n ) {\n pages.add(page);\n }\n\n const orderedPages = Array.from(pages).sort((left, right) => left - right);\n const items: Array = [];\n\n for (let index = 0; index < orderedPages.length; index += 1) {\n const page = orderedPages[index];\n const previous = orderedPages[index - 1];\n\n if (previous && page - previous > 1) {\n items.push(\"ellipsis\");\n }\n\n items.push(page);\n }\n\n return items;\n}\n","import * as React from \"react\";\nimport { IconDots, IconEdit, IconX } from \"../icons\";\nimport type {\n DataTableEditableRowsConfig,\n DataTableLabels,\n DataTableRowAction,\n} from \"../types\";\nimport type { RowPinningPosition } from \"@tanstack/react-table\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { canEditRow, canUseRowAction, resolveRowActionLabel } from \"../types\";\n\ntype DataTableRowActionsProps = {\n row: TData;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n onStartEditing: () => void;\n onCancelEditing: () => void;\n labels: DataTableLabels;\n rowPinning?: {\n canPin: boolean;\n position: RowPinningPosition;\n pin: (position: RowPinningPosition) => void;\n };\n};\n\nexport function createDataTableRowActions(ui: DataTableUiKit) {\n const {\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n return function DataTableRowActions({\n row,\n rowActions,\n editableRows,\n isEditing,\n onStartEditing,\n onCancelEditing,\n labels,\n rowPinning,\n }: DataTableRowActionsProps) {\n const actions = rowActions.filter((action) => canUseRowAction(action, row));\n const stopRowClickPropagation = React.useCallback(\n (event: React.SyntheticEvent) => {\n event.stopPropagation();\n },\n [],\n );\n\n if (isEditing) {\n return (\n \n \n \n \n {labels.cancelEdit}\n \n \n {labels.cancelEdit}\n \n );\n }\n\n const allowEdit = canEditRow(editableRows, row);\n const canPin = rowPinning?.canPin ?? false;\n if (!actions.length && !allowEdit && !canPin) {\n return null;\n }\n\n return (\n \n \n \n \n \n \n {labels.rowActions}\n \n \n \n {labels.rowActions}\n \n \n {allowEdit ? (\n \n ) => {\n event.stopPropagation();\n onStartEditing();\n }}\n >\n \n {labels.editRow}\n \n \n ) : null}\n {allowEdit && (actions.length || canPin) ? : null}\n {canPin ? (\n \n {rowPinning?.position ? (\n ) => {\n event.stopPropagation();\n rowPinning.pin(false);\n }}\n >\n {labels.unpinRow}\n \n ) : (\n <>\n ) => {\n event.stopPropagation();\n rowPinning?.pin(\"top\");\n }}\n >\n {labels.pinRowToTop}\n \n ) => {\n event.stopPropagation();\n rowPinning?.pin(\"bottom\");\n }}\n >\n {labels.pinRowToBottom}\n \n \n )}\n \n ) : null}\n {canPin && actions.length ? : null}\n {actions.length ? (\n \n {actions.map((action) => {\n const Icon = action.icon;\n return (\n ) => {\n event.stopPropagation();\n void action.onClick(row);\n }}\n >\n {Icon ? : null}\n {resolveRowActionLabel(action.label, row)}\n \n );\n })}\n \n ) : null}\n \n \n );\n };\n}\n","import * as React from \"react\";\nimport type { Table as TanStackTable } from \"@tanstack/react-table\";\nimport {\n IconAdjustmentsHorizontal,\n IconLayoutGrid,\n IconList,\n IconSearch,\n IconX,\n} from \"../icons\";\nimport type {\n DataTableColumnFilterType,\n DataTableColumnFixed,\n DataTableColumnVisibilityOption,\n DataTableDensity,\n DataTableLabels,\n DataTableSavedView,\n DataTableSelectionAction,\n DataTableToolbarAction,\n DataTableToolbarVisibility,\n DataTableViewMode,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\nconst LazyToolbarDataOperations = React.lazy(\n () => import(\"./data-table-toolbar-operations\"),\n);\n\nexport type DataTableToolbarColumnFilter = {\n id: string;\n label: string;\n type: DataTableColumnFilterType;\n value: unknown;\n placeholder?: string;\n options: Array<{ label: string; value: string; count?: number; disabled?: boolean }>;\n searchable?: boolean;\n searchPlaceholder?: string;\n trueLabel?: string;\n falseLabel?: string;\n min?: number | string;\n max?: number | string;\n step?: number;\n};\n\ntype DataTableToolbarProps = {\n title?: string;\n titleId?: string;\n description?: string;\n descriptionId?: string;\n toolbarQueryValue: string;\n toolbarQueryPlaceholder: string;\n onToolbarQueryValueChange: (value: string) => void;\n customToolbar?: React.ReactNode;\n compactToolbar?: React.ReactNode;\n viewMode: DataTableViewMode;\n onViewModeChange?: (viewMode: DataTableViewMode) => void;\n enableViewToggle: boolean;\n toolbarActions: Array>;\n selectionActions: Array>;\n selectedRows: Array;\n selectedRowIds: Array;\n showHiddenRows: boolean;\n hiddenRowsLabel?: string;\n onShowHiddenRowsChange?: (showHiddenRows: boolean) => void;\n allRows: Array;\n columnVisibilityOptions: Array;\n onColumnVisibilityChange?: (columnId: string, visible: boolean) => void;\n enableColumnPinning: boolean;\n onColumnPinningChange: (columnId: string, side: DataTableColumnFixed | false) => void;\n columnFilters: Array;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n onClearColumnFilters: () => void;\n density: DataTableDensity;\n onDensityChange: (density: DataTableDensity) => void;\n enableDensityToggle: boolean;\n labels: Required;\n toolbarVisibility?: DataTableToolbarVisibility;\n openFileDialog?: () => void;\n enableGrouping: boolean;\n enableToolbarColumnChooser: boolean;\n enableToolbarFilterChips: boolean;\n enableToolbarResetLayout: boolean;\n enableToolbarSavedViews: boolean;\n savedViews: Array;\n onResetColumnLayout: () => void;\n onCreateSavedView: (name: string) => DataTableSavedView | undefined;\n onApplySavedView: (id: string) => boolean;\n onRenameSavedView: (id: string, name: string) => DataTableSavedView | undefined;\n onDeleteSavedView: (id: string) => boolean;\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n table: TanStackTable;\n};\n\nexport function createDataTableToolbar(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Button,\n ButtonGroup,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n return function DataTableToolbar({\n title,\n titleId,\n description,\n descriptionId,\n toolbarQueryValue,\n toolbarQueryPlaceholder,\n onToolbarQueryValueChange,\n customToolbar,\n compactToolbar,\n viewMode,\n onViewModeChange,\n enableViewToggle,\n toolbarActions,\n selectionActions,\n selectedRows,\n selectedRowIds,\n showHiddenRows,\n hiddenRowsLabel,\n onShowHiddenRowsChange,\n allRows,\n columnVisibilityOptions,\n onColumnVisibilityChange,\n enableColumnPinning,\n onColumnPinningChange,\n columnFilters,\n onColumnFilterChange,\n onClearColumnFilters,\n density,\n onDensityChange,\n enableDensityToggle,\n labels,\n toolbarVisibility,\n openFileDialog,\n enableGrouping,\n enableToolbarColumnChooser,\n enableToolbarFilterChips,\n enableToolbarResetLayout,\n enableToolbarSavedViews,\n savedViews,\n onResetColumnLayout,\n onCreateSavedView,\n onApplySavedView,\n onRenameSavedView,\n onDeleteSavedView,\n reorderColumn,\n table,\n }: DataTableToolbarProps) {\n const compactSearchInputRef = React.useRef(null);\n const [isCompactSearchVisible, setIsCompactSearchVisible] =\n React.useState(false);\n const compactToolbarIconButtonClassName =\n uiClassNames.toolbarCompactIconButton ?? \"\";\n const primaryActions = toolbarActions.filter(\n (action) => (action.placement ?? \"primary\") === \"primary\",\n );\n const trailingActions = toolbarActions.filter(\n (action) => action.placement === \"trailing\",\n );\n const showTitle = toolbarVisibility?.title ?? true;\n const showSearch = toolbarVisibility?.search ?? true;\n const showActions = toolbarVisibility?.actions ?? true;\n const showTrailingActions = toolbarVisibility?.trailingActions ?? true;\n const showOptions = toolbarVisibility?.options ?? true;\n const showViewToggle = toolbarVisibility?.viewToggle ?? true;\n const showCustomToolbar = toolbarVisibility?.customToolbar ?? true;\n const hasVisibleTitle = showTitle && Boolean(title || description);\n const hasVisibleSearch = showSearch;\n const hasVisiblePrimaryActions = showActions && primaryActions.length > 0;\n const hasVisibleSelectionActions =\n selectedRowIds.length > 0 && selectionActions.length > 0;\n const hasVisibleOptions =\n showOptions &&\n (columnVisibilityOptions.some((column) => column.canHide) ||\n Boolean(onShowHiddenRowsChange && hiddenRowsLabel) ||\n enableColumnPinning ||\n enableDensityToggle ||\n enableGrouping ||\n enableToolbarColumnChooser ||\n enableToolbarResetLayout ||\n enableToolbarSavedViews);\n const hasToolbarOperationsMenu =\n enableToolbarColumnChooser ||\n enableToolbarResetLayout ||\n enableToolbarSavedViews;\n const activeColumnFilters = columnFilters.filter((filter) =>\n hasColumnFilterValue(filter.value),\n );\n const toolbarOperationsUi = {\n Button,\n DropdownMenuCheckboxItem,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n };\n const renderToolbarDataOperations = (placement: \"menu\" | \"chips\") => (\n \n }\n onResetColumnLayout={onResetColumnLayout}\n savedViews={savedViews}\n onCreateSavedView={onCreateSavedView}\n onApplySavedView={onApplySavedView}\n onRenameSavedView={onRenameSavedView}\n onDeleteSavedView={onDeleteSavedView}\n toolbarQueryValue={toolbarQueryValue}\n onToolbarQueryValueChange={onToolbarQueryValueChange}\n activeColumnFilters={activeColumnFilters}\n onColumnFilterChange={onColumnFilterChange}\n onClearColumnFilters={onClearColumnFilters}\n />\n \n );\n const groupableColumns = table\n .getAllLeafColumns()\n .filter(\n (column) =>\n !column.id.startsWith(\"__\") &&\n column.getCanGroup(),\n );\n const groupedColumns = table.getState().grouping.flatMap((id) => {\n const column = table.getColumn(id);\n return column ? [column] : [];\n });\n const hasVisibleViewToggle =\n showViewToggle && enableViewToggle && Boolean(onViewModeChange);\n const hasVisibleTrailingActions =\n showTrailingActions && trailingActions.length > 0;\n const hasVisibleCustomToolbar = showCustomToolbar && Boolean(customToolbar);\n const hasVisibleCompactToolbar =\n showCustomToolbar && Boolean(compactToolbar ?? customToolbar);\n const selectedRowCountLabel = labels.selectedRows(selectedRowIds.length);\n\n React.useEffect(() => {\n if (!isCompactSearchVisible) {\n return;\n }\n\n compactSearchInputRef.current?.focus();\n }, [isCompactSearchVisible]);\n\n if (\n !hasVisibleTitle &&\n !hasVisibleSearch &&\n !hasVisiblePrimaryActions &&\n !hasVisibleSelectionActions &&\n !hasVisibleOptions &&\n !hasVisibleViewToggle &&\n !hasVisibleTrailingActions &&\n !hasVisibleCustomToolbar &&\n !hasVisibleCompactToolbar\n ) {\n return null;\n }\n\n return (\n
    \n {showTitle && (title || description) ? (\n
    \n {title ? (\n \n {title}\n \n ) : null}\n {description ? (\n \n {description}\n

    \n ) : null}\n
    \n ) : null}\n\n
    \n \n {showSearch ? (\n <>\n
    \n \n ) => {\n onToolbarQueryValueChange(event.target.value);\n }}\n placeholder={toolbarQueryPlaceholder}\n />\n \n \n \n {toolbarQueryValue ? (\n \n {\n onToolbarQueryValueChange(\"\");\n }}\n aria-label={labels.clearSearch}\n title={labels.clearSearch}\n >\n \n \n \n ) : null}\n \n
    \n \n \n {\n setIsCompactSearchVisible((current) => !current);\n }}\n >\n \n {labels.searchTable}\n \n \n {labels.searchTable}\n \n \n ) : null}\n\n {showActions ? (\n
    \n {primaryActions.map((action) => {\n const collapsesToIcon =\n !action.iconOnly && Boolean(action.icon);\n const button = (\n {\n void action.onClick({\n rows: allRows,\n openFileDialog,\n });\n }}\n disabled={action.disabled}\n aria-label={action.label}\n title={action.iconOnly ? undefined : action.label}\n >\n {action.icon ? : null}\n {action.iconOnly ? (\n {action.label}\n ) : collapsesToIcon ? (\n \n {action.label}\n \n ) : (\n {action.label}\n )}\n \n );\n\n return action.iconOnly ? (\n \n {button}\n {action.label}\n \n ) : (\n button\n );\n })}\n
    \n ) : null}\n\n {hasVisibleCompactToolbar ? (\n \n {compactToolbar ?? customToolbar}\n
    \n ) : null}\n\n
    \n\n \n {selectedRowIds.length ? (\n \n {selectedRowCountLabel}\n
    \n ) : null}\n {selectedRowIds.length\n ? selectionActions.map((action) => {\n const Icon = action.icon;\n const context = {\n rows: selectedRows,\n rowIds: selectedRowIds,\n };\n const disabled =\n typeof action.disabled === \"function\"\n ? action.disabled(selectedRows, context)\n : action.disabled;\n\n return (\n \n \n {\n void action.onClick(context);\n }}\n aria-label={action.label}\n >\n {Icon ? : null}\n {action.label}\n \n \n {action.label}\n \n );\n })\n : null}\n\n {hasVisibleOptions ? (\n \n \n \n \n {labels.tableOptions}\n \n \n \n {labels.tableOptions}\n \n {onShowHiddenRowsChange && hiddenRowsLabel ? (\n {\n onShowHiddenRowsChange(checked === true);\n }}\n >\n {labels.showHiddenRows(hiddenRowsLabel)}\n \n ) : null}\n \n {enableDensityToggle ? (\n <>\n \n {labels.density}\n \n {(\n [\n [\"compact\", labels.compactDensity],\n [\"comfortable\", labels.comfortableDensity],\n [\"spacious\", labels.spaciousDensity],\n ] as const\n ).map(([nextDensity, label]) => (\n {\n onDensityChange(nextDensity);\n }}\n >\n {label}\n \n ))}\n \n \n ) : null}\n {hasToolbarOperationsMenu\n ? renderToolbarDataOperations(\"menu\")\n : null}\n {!enableToolbarColumnChooser &&\n columnVisibilityOptions.some((column) => column.canHide) ? (\n <>\n \n {labels.columns}\n \n {columnVisibilityOptions\n .filter((column) => column.canHide)\n .map((column) => (\n {\n onColumnVisibilityChange?.(\n column.id,\n checked === true,\n );\n }}\n >\n {column.label}\n \n ))}\n \n \n ) : null}\n {enableColumnPinning && !enableToolbarColumnChooser ? (\n <>\n \n \n {labels.pinLeft} / {labels.pinRight}\n \n \n {columnVisibilityOptions.map((column) => (\n {\n event.preventDefault();\n }}\n >\n \n {column.label}\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, \"left\");\n }}\n >\n L\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, \"right\");\n }}\n >\n R\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, false);\n }}\n >\n -\n \n \n ))}\n \n \n ) : null}\n {enableGrouping && groupableColumns.length ? (\n <>\n \n {labels.grouping}\n \n {groupableColumns.map((column) => {\n const columnLabel =\n typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : column.id;\n const isGrouped = column.getIsGrouped();\n return (\n {\n column.toggleGrouping();\n }}\n >\n {isGrouped\n ? labels.ungroup(columnLabel)\n : labels.groupBy(columnLabel)}\n \n );\n })}\n \n \n ) : null}\n \n \n ) : null}\n\n {showViewToggle && enableViewToggle && onViewModeChange ? (\n \n \n \n {\n onViewModeChange(\"table\");\n }}\n >\n \n \n {labels.switchToTableView ??\n DATA_TABLE_DEFAULT_LABELS.switchToTableView}\n \n \n \n \n {labels.tableView ??\n DATA_TABLE_DEFAULT_LABELS.tableView}\n \n \n \n \n {\n onViewModeChange(\"card\");\n }}\n >\n \n \n {labels.switchToCardView ??\n DATA_TABLE_DEFAULT_LABELS.switchToCardView}\n \n \n \n \n {labels.cardView ??\n DATA_TABLE_DEFAULT_LABELS.cardView}\n \n \n \n ) : null}\n\n {showTrailingActions\n ? trailingActions.map((action) => {\n const collapsesToIcon =\n !action.iconOnly && Boolean(action.icon);\n const button = (\n {\n void action.onClick({\n rows: allRows,\n openFileDialog,\n });\n }}\n disabled={action.disabled}\n aria-label={action.label}\n title={action.iconOnly ? undefined : action.label}\n className={`size-7 shrink-0 ${action.iconOnly ? \"\" : `${collapsesToIcon ? \"px-0 @min-[768px]/data-table:px-2.5\" : \"\"} @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit`} ${action.iconOnly || collapsesToIcon ? compactToolbarIconButtonClassName : \"\"} ${uiClassNames.toolbarInputButton ?? \"\"}`}\n >\n {action.icon ? (\n \n ) : null}\n {action.iconOnly ? (\n {action.label}\n ) : collapsesToIcon ? (\n \n {action.label}\n \n ) : (\n {action.label}\n )}\n \n );\n\n return action.iconOnly ? (\n \n {button}\n {action.label}\n \n ) : (\n button\n );\n })\n : null}\n
    \n \n\n {showSearch && isCompactSearchVisible ? (\n \n \n ) => {\n onToolbarQueryValueChange(event.target.value);\n }}\n placeholder={toolbarQueryPlaceholder}\n />\n \n \n \n {toolbarQueryValue ? (\n \n {\n onToolbarQueryValueChange(\"\");\n }}\n aria-label={labels.clearSearch}\n title={labels.clearSearch}\n >\n \n \n \n ) : null}\n \n \n ) : null}\n\n {columnFilters.length ? (\n \n {columnFilters.map((filter) => (\n \n ))}\n {columnFilters.some((filter) =>\n hasColumnFilterValue(filter.value),\n ) ? (\n \n {labels.clearFilters}\n \n ) : null}\n \n ) : null}\n\n {enableToolbarFilterChips\n ? renderToolbarDataOperations(\"chips\")\n : null}\n\n {enableGrouping && groupedColumns.length ? (\n \n {labels.grouping}:\n {groupedColumns.map((column, groupingIndex) => {\n const columnLabel =\n typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : column.id;\n const moveGrouping = (nextIndex: number) => {\n const nextGrouping = [...table.getState().grouping];\n const [groupingId] = nextGrouping.splice(groupingIndex, 1);\n if (groupingId === undefined) return;\n nextGrouping.splice(nextIndex, 0, groupingId);\n table.setGrouping(nextGrouping);\n };\n return (\n \n moveGrouping(groupingIndex - 1)}\n aria-label={labels.moveGroupingEarlier(columnLabel)}\n >\n \n \n column.toggleGrouping()}\n aria-label={labels.removeGrouping(columnLabel)}\n >\n {columnLabel} ×\n \n moveGrouping(groupingIndex + 1)}\n aria-label={labels.moveGroupingLater(columnLabel)}\n >\n \n \n \n );\n })}\n \n ) : null}\n\n \n\n {showCustomToolbar && customToolbar ? (\n \n {customToolbar}\n \n ) : null}\n \n );\n };\n\n function ToolbarColumnFilterControl({\n filter,\n labels,\n onColumnFilterChange,\n }: {\n filter: DataTableToolbarColumnFilter;\n labels: Required;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n }) {\n const [facetQuery, setFacetQuery] = React.useState(\"\");\n if (filter.type === \"text\") {\n return (\n \n ) => {\n onColumnFilterChange(filter.id, event.target.value);\n }}\n placeholder={filter.placeholder ?? filter.label}\n aria-label={`${labels.filters}: ${filter.label}`}\n />\n \n \n \n \n );\n }\n\n if (filter.type === \"numberRange\" || filter.type === \"dateRange\") {\n const range = normalizeToolbarRangeValue(filter.value);\n const inputType = filter.type === \"numberRange\" ? \"number\" : \"date\";\n const fromLabel =\n labels.filterFrom ?? DATA_TABLE_DEFAULT_LABELS.filterFrom;\n const toLabel = labels.filterTo ?? DATA_TABLE_DEFAULT_LABELS.filterTo;\n\n return (\n \n \n ) => {\n onColumnFilterChange(filter.id, {\n ...range,\n from: parseRangeInputValue(event.target.value, inputType),\n });\n }}\n aria-label={`${filter.label}: ${fromLabel}`}\n />\n {fromLabel}\n \n \n ) => {\n onColumnFilterChange(filter.id, {\n ...range,\n to: parseRangeInputValue(event.target.value, inputType),\n });\n }}\n aria-label={`${filter.label}: ${toLabel}`}\n />\n {toLabel}\n \n \n );\n }\n\n const isBoolean = filter.type === \"boolean\";\n const isFaceted = filter.type === \"faceted\";\n const booleanOptions = [\n {\n label:\n filter.trueLabel ??\n labels.filterTrue ??\n DATA_TABLE_DEFAULT_LABELS.filterTrue,\n value: \"true\",\n },\n {\n label:\n filter.falseLabel ??\n labels.filterFalse ??\n DATA_TABLE_DEFAULT_LABELS.filterFalse,\n value: \"false\",\n },\n ];\n const options: DataTableToolbarColumnFilter[\"options\"] = isBoolean\n ? booleanOptions\n : filter.options;\n const visibleOptions =\n isFaceted && facetQuery\n ? options.filter((option) =>\n option.label.toLocaleLowerCase().includes(facetQuery.toLocaleLowerCase()),\n )\n : options;\n const selectedValue =\n typeof filter.value === \"string\" || typeof filter.value === \"boolean\"\n ? String(filter.value)\n : \"\";\n const selectedValues = Array.isArray(filter.value)\n ? filter.value.map(String)\n : selectedValue\n ? [selectedValue]\n : [];\n const selectedLabel =\n selectedValues.length === 0\n ? filter.label\n : `${filter.label}: ${\n selectedValues.length === 1\n ? (options.find(\n (option) => option.value === String(selectedValues[0]),\n )?.label ?? selectedValues[0])\n : selectedValues.length\n }`;\n\n return (\n \n \n \n \n \n {filter.label}\n {isFaceted && filter.searchable !== false ? (\n
    \n \n ) => {\n setFacetQuery(event.target.value);\n }}\n placeholder={filter.searchPlaceholder ?? labels.facetSearch(filter.label)}\n aria-label={labels.facetSearch(filter.label)}\n />\n \n \n \n \n
    \n ) : null}\n \n {filter.type === \"select\" || isBoolean || isFaceted ? (\n {\n onColumnFilterChange(filter.id, \"\");\n }}\n >\n {labels.allFilterOptions ??\n DATA_TABLE_DEFAULT_LABELS.allFilterOptions}\n \n ) : null}\n {visibleOptions.map((option) => (\n {\n if (filter.type === \"select\" || isBoolean) {\n onColumnFilterChange(\n filter.id,\n checked === true ? option.value : \"\",\n );\n return;\n }\n\n const nextValues = new Set(selectedValues);\n if (checked === true) {\n nextValues.add(option.value);\n } else {\n nextValues.delete(option.value);\n }\n onColumnFilterChange(filter.id, Array.from(nextValues));\n }}\n >\n {option.label}\n {option.count !== undefined ? (\n {option.count}\n ) : null}\n \n ))}\n \n
    \n
    \n );\n }\n}\n\nfunction hasColumnFilterValue(value: unknown) {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n\n if (value && typeof value === \"object\") {\n if (\"from\" in value || \"to\" in value) {\n return Object.values(value).some(hasColumnFilterValue);\n }\n\n return true;\n }\n\n return value !== undefined && value !== null && value !== \"\";\n}\n\nfunction normalizeToolbarRangeValue(value: unknown): {\n from?: number | string;\n to?: number | string;\n} {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return {};\n }\n\n const range = value as { from?: unknown; to?: unknown };\n return {\n ...(typeof range.from === \"number\" || typeof range.from === \"string\"\n ? { from: range.from }\n : {}),\n ...(typeof range.to === \"number\" || typeof range.to === \"string\"\n ? { to: range.to }\n : {}),\n };\n}\n\nfunction parseRangeInputValue(value: string, inputType: \"number\" | \"date\") {\n if (!value) {\n return undefined;\n }\n\n return inputType === \"number\" ? Number(value) : value;\n}\n","import * as React from \"react\";\nimport { DataTableTablePanel } from \"./data-table-table-panel\";\nimport type { DataTableTablePanelProps } from \"./data-table-table-panel\";\n\nconst LazyDataTableVirtualTablePanel = React.lazy(async () => {\n const module = await import(\"./data-table-virtual-table-panel\");\n return { default: module.DataTableVirtualTablePanel };\n}) as unknown as typeof DataTableTablePanel;\n\nexport function DataTableTablePanelRouter(\n props: DataTableTablePanelProps,\n) {\n const config =\n typeof props.virtualization === \"object\"\n ? props.virtualization\n : undefined;\n const enabled =\n props.virtualization === true || config?.enabled === true;\n\n if (!enabled) {\n return ;\n }\n\n return (\n \n }\n >\n \n \n );\n}\n","import type {\n DataTableSavedView,\n DataTableSavedViewSlice,\n DataTableSavedViewsChangeOperation,\n DataTableSavedViewsConfig,\n DataTableSavedViewsPayload,\n DataTableState,\n} from \"../types\";\n\nconst STORAGE_PREFIX = \"data-table-pro:saved-views:\";\nconst DEFAULT_VERSION = 1;\nconst DEFAULT_SLICES: Array = [\n \"sorting\",\n \"columnVisibility\",\n \"columnFilters\",\n \"grouping\",\n \"columnOrder\",\n \"columnPinning\",\n \"rowPinning\",\n \"columnSizing\",\n \"density\",\n \"viewMode\",\n \"showHiddenRows\",\n \"globalFilter\",\n];\nlet fallbackId = 0;\n\nexport function readDataTableSavedViews(\n config: DataTableSavedViewsConfig | undefined,\n): Array {\n const storage = resolveStorage(config);\n if (!config || !storage) {\n return [];\n }\n\n let serialized: string | null;\n try {\n serialized = storage.getItem(getStorageKey(config.key));\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return [];\n }\n if (!serialized) {\n return [];\n }\n\n let parsed: unknown;\n try {\n parsed = (config.deserialize ?? JSON.parse)(serialized);\n } catch (error) {\n config.onError?.({ error, operation: \"deserialize\" });\n return [];\n }\n\n if (!isRecord(parsed) || !(\"version\" in parsed) || !(\"views\" in parsed)) {\n return [];\n }\n\n const targetVersion = config.version ?? DEFAULT_VERSION;\n let candidate: unknown = parsed.views;\n if (parsed.version !== targetVersion) {\n if (!config.migrate) {\n return [];\n }\n try {\n candidate = config.migrate(\n { version: parsed.version, views: parsed.views },\n targetVersion,\n );\n } catch (error) {\n config.onError?.({ error, operation: \"migrate\" });\n return [];\n }\n }\n\n if (!Array.isArray(candidate)) {\n return [];\n }\n\n return candidate\n .map((view) => validateSavedView(view, config.slices))\n .filter((view): view is DataTableSavedView => Boolean(view));\n}\n\nexport function createDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n name: string,\n state: DataTableState,\n) {\n const normalizedName = name.trim();\n if (!config || !normalizedName) {\n return undefined;\n }\n\n const now = new Date().toISOString();\n const view: DataTableSavedView = {\n id: createSavedViewId(),\n name: normalizedName,\n createdAt: now,\n updatedAt: now,\n state: selectSavedViewSlices(state, config.slices),\n };\n const views = [...readDataTableSavedViews(config), view];\n return writeViews(config, views, \"create\") ? cloneSavedView(view) : undefined;\n}\n\nexport function renameDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n id: string,\n name: string,\n) {\n const normalizedName = name.trim();\n if (!config || !normalizedName) {\n return undefined;\n }\n\n let renamed: DataTableSavedView | undefined;\n const views = readDataTableSavedViews(config).map((view) => {\n if (view.id !== id) {\n return view;\n }\n renamed = {\n ...view,\n name: normalizedName,\n updatedAt: new Date().toISOString(),\n };\n return renamed;\n });\n if (!renamed) {\n return undefined;\n }\n\n return writeViews(config, views, \"rename\")\n ? cloneSavedView(renamed)\n : undefined;\n}\n\nexport function deleteDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n id: string,\n) {\n if (!config) {\n return false;\n }\n\n const current = readDataTableSavedViews(config);\n const views = current.filter((view) => view.id !== id);\n return views.length !== current.length && writeViews(config, views, \"delete\");\n}\n\nexport function clearDataTableSavedViews(\n config: DataTableSavedViewsConfig | undefined,\n) {\n const storage = resolveStorage(config);\n if (!config || !storage) {\n return false;\n }\n\n try {\n storage.removeItem(getStorageKey(config.key));\n } catch (error) {\n config.onError?.({ error, operation: \"remove\" });\n return false;\n }\n config.onChange?.([], \"clear\");\n return true;\n}\n\nfunction writeViews(\n config: DataTableSavedViewsConfig,\n views: Array,\n operation: DataTableSavedViewsChangeOperation,\n) {\n const storage = resolveStorage(config);\n if (!storage) {\n return false;\n }\n\n let serialized: string;\n try {\n const payload: DataTableSavedViewsPayload = {\n version: config.version ?? DEFAULT_VERSION,\n views,\n };\n serialized = (config.serialize ?? JSON.stringify)(payload);\n } catch (error) {\n config.onError?.({ error, operation: \"serialize\" });\n return false;\n }\n\n try {\n storage.setItem(getStorageKey(config.key), serialized);\n } catch (error) {\n config.onError?.({ error, operation: \"write\" });\n return false;\n }\n const snapshots = views.map(cloneSavedView);\n config.onChange?.(snapshots, operation);\n return true;\n}\n\nfunction selectSavedViewSlices(\n state: DataTableState,\n slices: Array | undefined,\n) {\n const selected = new Set(slices ?? DEFAULT_SLICES);\n const snapshot: Partial = {};\n for (const slice of Object.keys(state) as Array) {\n if (selected.has(slice)) {\n Object.assign(snapshot, {\n [slice]: cloneStateSlice(slice, state[slice]),\n });\n }\n }\n return snapshot;\n}\n\nfunction validateSavedView(\n value: unknown,\n slices: Array | undefined,\n): DataTableSavedView | undefined {\n if (\n !isRecord(value) ||\n typeof value.id !== \"string\" ||\n !value.id ||\n typeof value.name !== \"string\" ||\n !value.name.trim() ||\n typeof value.createdAt !== \"string\" ||\n typeof value.updatedAt !== \"string\"\n ) {\n return undefined;\n }\n\n return {\n id: value.id,\n name: value.name.trim(),\n createdAt: value.createdAt,\n updatedAt: value.updatedAt,\n state: validateState(value.state, slices),\n };\n}\n\nfunction validateState(\n value: unknown,\n slices: Array | undefined,\n) {\n if (!isRecord(value)) {\n return {};\n }\n\n const selected = new Set(slices ?? DEFAULT_SLICES);\n const state: Partial = {};\n const sorting = validateSorting(value.sorting);\n if (selected.has(\"sorting\") && sorting) state.sorting = sorting;\n const pagination = validatePagination(value.pagination);\n if (selected.has(\"pagination\") && pagination) state.pagination = pagination;\n const rowSelection = validateBooleanRecord(value.rowSelection);\n if (selected.has(\"rowSelection\") && rowSelection) {\n state.rowSelection = rowSelection;\n }\n const visibility = validateBooleanRecord(value.columnVisibility);\n if (selected.has(\"columnVisibility\") && visibility) {\n state.columnVisibility = visibility;\n }\n const filters = validateFilters(value.columnFilters);\n if (selected.has(\"columnFilters\") && filters) state.columnFilters = filters;\n const grouping = validateStringArray(value.grouping);\n if (selected.has(\"grouping\") && grouping) state.grouping = grouping;\n const expanded =\n value.expanded === true\n ? true\n : validateBooleanRecord(value.expanded);\n if (selected.has(\"expanded\") && expanded !== undefined) {\n state.expanded = expanded;\n }\n const order = validateStringArray(value.columnOrder);\n if (selected.has(\"columnOrder\") && order) state.columnOrder = order;\n const pinning = validatePinning(value.columnPinning);\n if (selected.has(\"columnPinning\") && pinning) {\n state.columnPinning = pinning;\n }\n const rowPinning = validateRowPinning(value.rowPinning);\n if (selected.has(\"rowPinning\") && rowPinning) {\n state.rowPinning = rowPinning;\n }\n const sizing = validateSizingRecord(value.columnSizing);\n if (selected.has(\"columnSizing\") && sizing) state.columnSizing = sizing;\n if (\n selected.has(\"density\") &&\n (value.density === \"compact\" ||\n value.density === \"comfortable\" ||\n value.density === \"spacious\")\n ) {\n state.density = value.density;\n }\n if (\n selected.has(\"viewMode\") &&\n (value.viewMode === \"table\" || value.viewMode === \"card\")\n ) {\n state.viewMode = value.viewMode;\n }\n if (selected.has(\"showHiddenRows\") && typeof value.showHiddenRows === \"boolean\") {\n state.showHiddenRows = value.showHiddenRows;\n }\n if (selected.has(\"globalFilter\") && typeof value.globalFilter === \"string\") {\n state.globalFilter = value.globalFilter;\n }\n return state;\n}\n\nfunction cloneSavedView(view: DataTableSavedView): DataTableSavedView {\n return {\n ...view,\n state: validateState(view.state, Object.keys(view.state) as Array),\n };\n}\n\nfunction cloneStateSlice(\n slice: DataTableSavedViewSlice,\n value: unknown,\n) {\n if (Array.isArray(value)) {\n return (value as Array).map((item) =>\n isRecord(item) ? { ...item } : item,\n );\n }\n if (isRecord(value)) {\n if (slice === \"columnPinning\" || slice === \"rowPinning\") {\n return {\n ...(slice === \"columnPinning\"\n ? {\n left: Array.isArray(value.left)\n ? [...(value.left as Array)]\n : undefined,\n right: Array.isArray(value.right)\n ? [...(value.right as Array)]\n : undefined,\n }\n : {\n top: Array.isArray(value.top)\n ? [...(value.top as Array)]\n : undefined,\n bottom: Array.isArray(value.bottom)\n ? [...(value.bottom as Array)]\n : undefined,\n }),\n };\n }\n return { ...value };\n }\n return value;\n}\n\nfunction validateSorting(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value\n .filter(\n (item): item is { id: string; desc?: boolean } =>\n isRecord(item) && typeof item.id === \"string\",\n )\n .map((item) => ({ id: item.id, desc: Boolean(item.desc) }));\n}\n\nfunction validatePagination(value: unknown) {\n if (\n !isRecord(value) ||\n !Number.isInteger(value.pageIndex) ||\n (value.pageIndex as number) < 0 ||\n !Number.isInteger(value.pageSize) ||\n (value.pageSize as number) < 1\n ) {\n return undefined;\n }\n return {\n pageIndex: value.pageIndex as number,\n pageSize: value.pageSize as number,\n };\n}\n\nfunction validateFilters(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value\n .filter(\n (item): item is { id: string; value: unknown } =>\n isRecord(item) &&\n typeof item.id === \"string\" &&\n Object.prototype.hasOwnProperty.call(item, \"value\"),\n )\n .map((item) => ({ id: item.id, value: item.value }));\n}\n\nfunction validatePinning(value: unknown) {\n if (!isRecord(value)) return undefined;\n return {\n left: validateStringArray(value.left) ?? [],\n right: validateStringArray(value.right) ?? [],\n };\n}\n\nfunction validateRowPinning(value: unknown) {\n if (!isRecord(value)) return undefined;\n return {\n top: validateStringArray(value.top) ?? [],\n bottom: validateStringArray(value.bottom) ?? [],\n };\n}\n\nfunction validateBooleanRecord(value: unknown) {\n if (!isRecord(value)) return undefined;\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, boolean] => typeof entry[1] === \"boolean\",\n ),\n );\n}\n\nfunction validateSizingRecord(value: unknown) {\n if (!isRecord(value)) return undefined;\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, number] =>\n typeof entry[1] === \"number\" &&\n Number.isFinite(entry[1]) &&\n entry[1] >= 0,\n ),\n );\n}\n\nfunction validateStringArray(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value.filter((item): item is string => typeof item === \"string\");\n}\n\nfunction resolveStorage(config: DataTableSavedViewsConfig | undefined) {\n if (!config) {\n return undefined;\n }\n if (config.storage) {\n return config.storage;\n }\n if (typeof window === \"undefined\") {\n return undefined;\n }\n try {\n return window.localStorage;\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return undefined;\n }\n}\n\nfunction createSavedViewId() {\n if (typeof globalThis.crypto?.randomUUID === \"function\") {\n return globalThis.crypto.randomUUID();\n }\n fallbackId += 1;\n return `view-${Date.now().toString(36)}-${fallbackId.toString(36)}`;\n}\n\nfunction getStorageKey(key: string) {\n return `${STORAGE_PREFIX}${key}`;\n}\n\nfunction isRecord(value: unknown): value is Record {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n","import * as React from \"react\";\nimport { IconDownload } from \"../icons\";\nimport type {\n ColumnFiltersState,\n ColumnPinningState,\n OnChangeFn,\n Table as TanStackTable,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableColumnFixed,\n DataTableLabels,\n DataTableProps,\n} from \"../types\";\nimport {\n exportDataTableCsv,\n getAccessorKey,\n getColumnId,\n getDataTableLeafColumns,\n hasFilterValue,\n normalizeColumnFilterOptions,\n startCase,\n} from \"./data-table-utils\";\n\nexport function useDataTableToolbarFeatures({\n columns,\n currentColumnFilters,\n currentColumnPinning,\n effectiveColumnVisibility,\n enableColumnFilters,\n handleColumnFiltersChange,\n handleColumnPinningChange,\n labels,\n table,\n toolbarActions,\n visibleData,\n csvExport,\n}: {\n columns: DataTableProps[\"columns\"];\n currentColumnFilters: ColumnFiltersState;\n currentColumnPinning: ColumnPinningState;\n effectiveColumnVisibility: VisibilityState;\n enableColumnFilters: boolean | undefined;\n handleColumnFiltersChange: OnChangeFn;\n handleColumnPinningChange: OnChangeFn;\n labels: DataTableLabels;\n table: TanStackTable;\n toolbarActions: DataTableProps[\"toolbarActions\"];\n visibleData: Array;\n csvExport: DataTableProps[\"csvExport\"];\n}) {\n const columnVisibilityOptions = React.useMemo(() => {\n return getDataTableLeafColumns(columns).map(({ column, index }) => {\n const id = getColumnId(column, index);\n const header = column.header;\n const accessorKey = getAccessorKey(column);\n const label =\n typeof header === \"string\"\n ? header\n : accessorKey\n ? startCase(accessorKey)\n : startCase(id);\n\n const pinned: false | DataTableColumnFixed =\n currentColumnPinning.left?.includes(id) === true\n ? \"left\"\n : currentColumnPinning.right?.includes(id) === true\n ? \"right\"\n : false;\n\n return {\n id,\n label,\n visible: effectiveColumnVisibility[id] !== false,\n canHide: column.enableHiding !== false,\n pinned,\n };\n });\n }, [columns, currentColumnPinning, effectiveColumnVisibility]);\n\n const toolbarColumnFilters = React.useMemo(() => {\n if (enableColumnFilters === false) {\n return [];\n }\n\n return getDataTableLeafColumns(columns).flatMap(({ column, index }) => {\n const filter = column.meta?.filter;\n if (!filter) {\n return [];\n }\n\n const id = getColumnId(column, index);\n const header = column.header;\n const accessorKey = getAccessorKey(column);\n const label =\n filter.label ??\n (typeof header === \"string\"\n ? header\n : accessorKey\n ? startCase(accessorKey)\n : startCase(id));\n const state = currentColumnFilters.find((item) => item.id === id);\n const configuredFacetOptions = filter.faceting?.options;\n const facetedMinMax =\n filter.type === \"numberRange\"\n ? table.getColumn(id)?.getFacetedMinMaxValues()\n : undefined;\n const rawOptions =\n filter.type === \"faceted\" && configuredFacetOptions\n ? typeof configuredFacetOptions === \"function\"\n ? configuredFacetOptions({ rows: visibleData })\n : configuredFacetOptions\n : filter.type === \"faceted\"\n ? Array.from(table.getColumn(id)?.getFacetedUniqueValues() ?? []).map(\n ([value, count]) => ({\n label:\n filter.faceting?.getOptionLabel?.(value as never) ??\n String(value),\n value: String(value),\n count,\n }),\n )\n : typeof filter.options === \"function\"\n ? filter.options({ rows: visibleData })\n : (filter.options ?? []);\n\n return [\n {\n id,\n label,\n type: filter.type,\n value: state?.value,\n placeholder: filter.placeholder,\n options: normalizeColumnFilterOptions(rawOptions),\n searchable: filter.faceting?.searchable,\n searchPlaceholder: filter.faceting?.searchPlaceholder,\n trueLabel: filter.trueLabel,\n falseLabel: filter.falseLabel,\n min: filter.min ?? facetedMinMax?.[0],\n max: filter.max ?? facetedMinMax?.[1],\n step: filter.step,\n },\n ];\n });\n }, [\n columns,\n currentColumnFilters,\n enableColumnFilters,\n table,\n visibleData,\n ]);\n\n const handleToolbarColumnFilterChange = React.useCallback(\n (columnId: string, value: unknown) => {\n handleColumnFiltersChange((current) => {\n const next = current.filter((filter) => filter.id !== columnId);\n if (hasFilterValue(value)) {\n next.push({ id: columnId, value });\n }\n return next;\n });\n },\n [handleColumnFiltersChange],\n );\n\n const handleClearColumnFilters = React.useCallback(() => {\n handleColumnFiltersChange([]);\n }, [handleColumnFiltersChange]);\n\n const handleToolbarColumnPinningChange = React.useCallback(\n (columnId: string, side: DataTableColumnFixed | false) => {\n handleColumnPinningChange((current) => {\n const left = (current.left ?? []).filter((id) => id !== columnId);\n const right = (current.right ?? []).filter((id) => id !== columnId);\n\n if (side === \"left\") {\n left.push(columnId);\n }\n if (side === \"right\") {\n right.push(columnId);\n }\n\n return { left, right };\n });\n },\n [handleColumnPinningChange],\n );\n\n const handleCsvExport = React.useCallback(() => {\n if (!csvExport) {\n return;\n }\n\n return exportDataTableCsv({\n csvExport,\n table,\n labels,\n });\n }, [csvExport, labels, table]);\n\n const effectiveToolbarActions = React.useMemo(() => {\n if (!csvExport) {\n return toolbarActions ?? [];\n }\n\n return [\n ...(toolbarActions ?? []),\n {\n key: \"__csv_export__\",\n label: labels.exportCsv,\n icon: IconDownload,\n placement: \"trailing\" as const,\n onClick: handleCsvExport,\n },\n ];\n }, [csvExport, handleCsvExport, labels.exportCsv, toolbarActions]);\n\n return {\n columnVisibilityOptions,\n effectiveToolbarActions,\n handleClearColumnFilters,\n handleToolbarColumnFilterChange,\n handleToolbarColumnPinningChange,\n toolbarColumnFilters,\n };\n}\n","import * as React from \"react\";\nimport type { DataTableProps } from \"../types\";\n\n/** Development-only guardrails for identities used by row models and caches. */\nexport function useDataTablePerformanceDiagnostics({\n columns,\n data,\n getRowId,\n}: Pick, \"columns\" | \"data\" | \"getRowId\">) {\n const previous = React.useRef({ columns, data, getRowId });\n const warned = React.useRef(new Set());\n\n React.useEffect(() => {\n if (!isDevelopmentEnvironment()) {\n return;\n }\n\n const last = previous.current;\n if (\n last.data !== data &&\n haveSameItems(last.data, data) &&\n !warned.current.has(\"data\")\n ) {\n warn(\n warned.current,\n \"data\",\n \"The data array identity changed. Keep rows immutable and memoize unchanged data so filtering, row models, and virtual measurements can be reused.\",\n );\n }\n if (\n last.columns !== columns &&\n haveSameItems(last.columns, columns) &&\n !warned.current.has(\"columns\")\n ) {\n warn(\n warned.current,\n \"columns\",\n \"The columns array identity changed. Memoize stable column definitions so the search index and table column model can be reused.\",\n );\n }\n if (last.getRowId !== getRowId && !warned.current.has(\"getRowId\")) {\n warn(\n warned.current,\n \"getRowId\",\n \"getRowId identity changed. Memoize it and return an immutable, unique id to preserve row state and virtual scroll anchoring.\",\n );\n }\n\n const ids = new Set();\n for (let index = 0; index < data.length; index += 1) {\n const id = getRowId(data[index]!, index);\n if (ids.has(id) && !warned.current.has(\"duplicate-row-id\")) {\n warn(\n warned.current,\n \"duplicate-row-id\",\n `Duplicate row id \"${id}\" detected. Row ids must be unique and immutable.`,\n );\n break;\n }\n ids.add(id);\n }\n previous.current = { columns, data, getRowId };\n }, [columns, data, getRowId]);\n}\n\nfunction haveSameItems(previous: Array, next: Array) {\n return (\n previous.length === next.length &&\n previous.every((item, index) => Object.is(item, next[index]))\n );\n}\n\nfunction warn(warned: Set, key: string, message: string) {\n warned.add(key);\n console.warn(`[data-table-pro] ${message}`);\n}\n\nfunction isDevelopmentEnvironment() {\n return (\n (globalThis as { process?: { env?: { NODE_ENV?: string } } }).process?.env\n ?.NODE_ENV !== \"production\"\n );\n}\n","import * as React from \"react\";\nimport { flushSync } from \"react-dom\";\nimport type {\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableActionErrorContext,\n DataTableApi,\n DataTableCellSelection,\n DataTableLabels,\n DataTableProps,\n DataTableState,\n DataTableStateOverlay as DataTableStateOverlayConfig,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { createDataTableCardView } from \"./create-data-table-card-view\";\nimport { createDataTableEmptyState } from \"./create-data-table-empty-state\";\nimport { createDataTablePagination } from \"./create-data-table-pagination\";\nimport { createDataTableRowActions } from \"./create-data-table-row-actions\";\nimport { createDataTableToolbar } from \"./create-data-table-toolbar\";\nimport { DataTableCardPanel as DefaultDataTableCardPanel } from \"./data-table-card-panel\";\nimport { DataTableFooterSection } from \"./data-table-footer-section\";\nimport { DataTableTablePanelRouter as DefaultDataTableTablePanel } from \"./data-table-table-panel-router\";\nimport { DataTableToolbarSection } from \"./data-table-toolbar-section\";\nimport {\n clearDataTableSavedViews,\n createDataTableSavedView,\n deleteDataTableSavedView,\n readDataTableSavedViews,\n renameDataTableSavedView,\n} from \"./data-table-saved-views\";\nimport { resolveDataTableLabels } from \"./data-table-labels\";\nimport { useDataTableColumns } from \"./use-data-table-columns\";\nimport { useControllableState } from \"./use-controllable-state\";\nimport { useDataTableInstance } from \"./use-data-table-instance\";\nimport { useDataTableScrollViewport } from \"./use-data-table-scroll-viewport\";\nimport {\n exportDataTableCsv,\n getColumnId,\n getDataTableColumnGroupPaths,\n getDataTableLeafColumns,\n getInitialColumnPinning,\n validateDataTableColumnIds,\n} from \"./data-table-utils\";\nimport { useDataTableState } from \"./use-data-table-state\";\nimport { clearDataTableColumnPrefs } from \"./use-data-table-column-prefs\";\nimport { useDataTableToolbarFeatures } from \"./use-data-table-toolbar-features\";\nimport { useColumnLayout } from \"./use-column-layout\";\nimport { useRowEditing } from \"./use-row-editing\";\nimport { useDataTablePerformanceDiagnostics } from \"./use-data-table-performance-diagnostics\";\n\nconst DataTableAutoPageSize = React.lazy(\n () => import(\"./data-table-auto-page-size\"),\n);\n\ntype CreateDataTableOptions = {\n CardPanel?: typeof DefaultDataTableCardPanel;\n TablePanel?: typeof DefaultDataTableTablePanel;\n};\n\nexport function createDataTable(ui: DataTableUiKit) {\n return createDataTableWithPanels(ui);\n}\n\nexport function createDataTableWithPanels(\n ui: DataTableUiKit,\n options: CreateDataTableOptions = {},\n) {\n const DataTableCardPanel =\n options.CardPanel ?? DefaultDataTableCardPanel;\n const DataTableTablePanel =\n options.TablePanel ?? DefaultDataTableTablePanel;\n const uiClassNames = ui.classNames ?? {};\n const {\n rootClassName,\n Button,\n Checkbox,\n Input,\n ScrollArea,\n ScrollBar,\n Skeleton,\n Table,\n TableBody,\n TableCell,\n TableFooter = \"tfoot\",\n TableHead,\n TableHeader,\n TableRow,\n Tooltip,\n TooltipContent,\n TooltipProvider = React.Fragment,\n TooltipTrigger,\n } = ui;\n const DataTableEmptyState = createDataTableEmptyState(ui);\n const DataTableRowActions = createDataTableRowActions(ui);\n const { DataTableFooter } = createDataTablePagination(ui);\n const DataTableToolbar = createDataTableToolbar(ui);\n const DataTableCardView = createDataTableCardView(ui, DataTableRowActions);\n const DataTableStateOverlay = React.lazy(async () => {\n const { createDataTableStateOverlay } = await import(\n \"./data-table-state-overlay\"\n );\n return { default: createDataTableStateOverlay(ui) };\n }) as unknown as (props: {\n labels: DataTableLabels;\n overlay: DataTableStateOverlayConfig;\n rows: Array;\n toolbarQueryValue: string;\n }) => React.ReactElement | null;\n const defaultColumn = {\n minSize: 80,\n size: 180,\n maxSize: 720,\n };\n\n return function DataTable({\n columns,\n data,\n getRowId,\n children,\n title,\n description,\n toolbarQueryValue,\n onToolbarQueryValueChange,\n toolbarQueryPlaceholder,\n toolbarQueryDebounceMs,\n manualFiltering = false,\n enableToolbarQueryFiltering = true,\n globalFilterFn,\n columnFilters,\n onColumnFiltersChange,\n enableColumnFilters,\n customToolbar,\n compactToolbar,\n rowsPerPageOptions = [10, 20, 50, 100],\n totalRowCount,\n hasNextPage,\n sorting,\n onSortingChange,\n manualSorting = false,\n grouping,\n onGroupingChange,\n manualGrouping = false,\n enableGrouping = false,\n groupedColumnMode = \"reorder\",\n aggregationFns,\n pageIndex,\n pageSize,\n autoPageSize = false,\n onPageIndexChange,\n onPageSizeChange,\n pageCount,\n manualPagination = false,\n rowSelection,\n onRowSelectionChange,\n enableRowSelection = false,\n enableMultiRowSelection = true,\n enableSubRowSelection = true,\n getRowCanSelect,\n rowSelectionSelectAllScope = \"page\",\n expanded,\n onExpandedChange,\n getSubRows,\n manualExpanding = false,\n paginateExpandedRows,\n filterFromLeafRows,\n maxLeafRowFilterDepth,\n detailPanel,\n getRowCanExpand,\n renderExpandedRow,\n columnOrder,\n onColumnOrderChange,\n enableColumnReordering = false,\n columnGroupHeaderHeight,\n columnPinning,\n onColumnPinningChange,\n enableColumnPinning = false,\n rowPinning,\n onRowPinningChange,\n enableRowPinning = false,\n keepPinnedRows = true,\n toolbarActions = [],\n selectionActions = [],\n rowActions = [],\n csvExport,\n clipboard,\n enableCellSelection = false,\n cellSelection,\n defaultCellSelection,\n onCellSelectionChange,\n gridCommands,\n density,\n onDensityChange,\n enableDensityToggle = false,\n columnPrefsKey,\n persistence,\n savedViews,\n toolbarDataOperations,\n initialState,\n state: unifiedState,\n onStateChange,\n apiRef,\n labels,\n summaryRows = [],\n cardRenderer,\n cardSizing,\n cardGridClassName,\n cardClassName,\n viewMode,\n onViewModeChange,\n enableViewToggle = false,\n enablePrint = false,\n enableFullscreen = false,\n emptyState,\n stateOverlay,\n isLoading = false,\n loadingRowCount,\n getRowLoadingState,\n hiddenRows,\n showHiddenRows,\n onShowHiddenRowsChange,\n infiniteScroll,\n editableRows,\n columnVisibility,\n onColumnVisibilityChange,\n columnSizing,\n onColumnSizingChange,\n enableColumnResizing = false,\n columnResizeMode = \"onEnd\",\n layoutMode = \"fill\",\n stickyHeader = true,\n showFooter = true,\n showToolbar = true,\n dir = \"ltr\",\n flexGrow = true,\n toolbarVisibility,\n className,\n tableClassName,\n tableContainerClassName,\n stripedRows = false,\n getRowClassName,\n onRowClick,\n onActionError,\n dragAndDrop,\n fileUpload,\n virtualization,\n accessibility,\n interactiveGrid,\n }: DataTableProps) {\n const containerRef = React.useRef(null);\n const fileInputRef = React.useRef(null);\n const tableScrollContainerRef = React.useRef(null);\n const draggedColumnIdRef = React.useRef(null);\n const tableRef = React.useRef | null>(null);\n const lastSelectedRowIdRef = React.useRef(null);\n const [toolbarSavedViewsVersion, setToolbarSavedViewsVersion] =\n React.useState(0);\n const generatedTitleId = React.useId();\n const generatedDescriptionId = React.useId();\n useDataTablePerformanceDiagnostics({ columns, data, getRowId });\n React.useMemo(() => validateDataTableColumnIds(columns), [columns]);\n const resolvedLabels = React.useMemo(\n () => resolveDataTableLabels(labels),\n [labels],\n );\n const toolbarOperations =\n toolbarDataOperations === true\n ? { columnChooser: true, savedViews: true, resetLayout: true }\n : toolbarDataOperations === false\n ? {}\n : (toolbarDataOperations ?? {});\n const gridMode =\n accessibility?.mode === \"grid\" ||\n interactiveGrid === true ||\n typeof interactiveGrid === \"object\";\n const [currentCellSelection, setCurrentCellSelection] =\n useControllableState({\n defaultValue: defaultCellSelection ?? null,\n onChange: onCellSelectionChange,\n value: cellSelection,\n });\n const resolvedToolbarQueryValue =\n toolbarQueryValue ?? unifiedState?.globalFilter;\n const resolvedSorting = sorting ?? unifiedState?.sorting;\n const resolvedGrouping = grouping ?? unifiedState?.grouping;\n const resolvedPageIndex =\n pageIndex ?? unifiedState?.pagination?.pageIndex;\n const resolvedPageSize = pageSize ?? unifiedState?.pagination?.pageSize;\n const resolvedRowSelection =\n rowSelection ?? unifiedState?.rowSelection;\n const resolvedColumnVisibility =\n columnVisibility ?? unifiedState?.columnVisibility;\n const resolvedColumnFilters =\n columnFilters ?? unifiedState?.columnFilters;\n const resolvedExpanded = expanded ?? unifiedState?.expanded;\n const resolvedColumnOrder =\n columnOrder ?? unifiedState?.columnOrder;\n const resolvedColumnPinning =\n columnPinning ?? unifiedState?.columnPinning;\n const resolvedRowPinning = rowPinning ?? unifiedState?.rowPinning;\n const resolvedColumnSizing =\n columnSizing ?? unifiedState?.columnSizing;\n const resolvedDensity = density ?? unifiedState?.density;\n const resolvedViewMode = viewMode ?? unifiedState?.viewMode;\n const resolvedShowHiddenRows =\n showHiddenRows ?? unifiedState?.showHiddenRows;\n const showTableHeading =\n showToolbar && (toolbarVisibility?.title ?? true);\n const titleId = showTableHeading && title ? generatedTitleId : undefined;\n const descriptionId =\n showTableHeading && description ? generatedDescriptionId : undefined;\n useDataTableStateConflictWarnings(unifiedState, {\n columnFilters: columnFilters !== undefined,\n columnOrder: columnOrder !== undefined,\n columnPinning: columnPinning !== undefined,\n rowPinning: rowPinning !== undefined,\n columnSizing: columnSizing !== undefined,\n columnVisibility: columnVisibility !== undefined,\n density: density !== undefined,\n expanded: expanded !== undefined,\n grouping: grouping !== undefined,\n globalFilter: toolbarQueryValue !== undefined,\n pagination: pageIndex !== undefined || pageSize !== undefined,\n rowSelection: rowSelection !== undefined,\n showHiddenRows: showHiddenRows !== undefined,\n sorting: sorting !== undefined,\n viewMode: viewMode !== undefined,\n });\n const handleToolbarQueryValueChange = useDataTableStateSliceChange(\n \"globalFilter\",\n onToolbarQueryValueChange,\n onStateChange,\n );\n const handleSortingPropChange = useDataTableStateSliceChange(\n \"sorting\",\n onSortingChange,\n onStateChange,\n );\n const handleGroupingPropChange = useDataTableStateSliceChange(\n \"grouping\",\n onGroupingChange,\n onStateChange,\n );\n const handleRowSelectionPropChange = useDataTableStateSliceChange(\n \"rowSelection\",\n onRowSelectionChange,\n onStateChange,\n );\n const handleColumnVisibilityPropChange = useDataTableStateSliceChange(\n \"columnVisibility\",\n onColumnVisibilityChange,\n onStateChange,\n );\n const handleColumnFiltersPropChange = useDataTableStateSliceChange(\n \"columnFilters\",\n onColumnFiltersChange,\n onStateChange,\n );\n const handleExpandedPropChange = useDataTableStateSliceChange(\n \"expanded\",\n onExpandedChange,\n onStateChange,\n );\n const handleColumnOrderPropChange = useDataTableStateSliceChange(\n \"columnOrder\",\n onColumnOrderChange,\n onStateChange,\n );\n const handleColumnPinningPropChange = useDataTableStateSliceChange(\n \"columnPinning\",\n onColumnPinningChange,\n onStateChange,\n );\n const handleRowPinningPropChange = useDataTableStateSliceChange(\n \"rowPinning\",\n onRowPinningChange,\n onStateChange,\n );\n const handleColumnSizingPropChange = useDataTableStateSliceChange(\n \"columnSizing\",\n onColumnSizingChange,\n onStateChange,\n );\n const handleDensityPropChange = useDataTableStateSliceChange(\n \"density\",\n onDensityChange,\n onStateChange,\n );\n const handleViewModePropChange = useDataTableStateSliceChange(\n \"viewMode\",\n onViewModeChange,\n onStateChange,\n );\n const handleShowHiddenRowsPropChange = useDataTableStateSliceChange(\n \"showHiddenRows\",\n onShowHiddenRowsChange,\n onStateChange,\n );\n const handlePageIndexPropChange = React.useCallback(\n (nextPageIndex: number) => {\n onPageIndexChange?.(nextPageIndex);\n onStateChange?.((current) => ({\n ...current,\n pagination: {\n pageIndex: nextPageIndex,\n pageSize:\n resolvedPageSize ?? current.pagination.pageSize,\n },\n }));\n },\n [onPageIndexChange, onStateChange, resolvedPageSize],\n );\n const handlePageSizePropChange = React.useCallback(\n (nextPageSize: number) => {\n onPageSizeChange?.(nextPageSize);\n onStateChange?.((current) => ({\n ...current,\n pagination: {\n pageIndex:\n resolvedPageIndex ?? current.pagination.pageIndex,\n pageSize: nextPageSize,\n },\n }));\n },\n [onPageSizeChange, onStateChange, resolvedPageIndex],\n );\n const runAction = React.useCallback(\n (\n context: Omit, \"error\">,\n action: () => void | Promise,\n ) => {\n runDataTableAction(action, context, onActionError);\n },\n [onActionError],\n );\n const guardedRowActions = React.useMemo(\n () =>\n rowActions.map((action) => ({\n ...action,\n onClick: (row: TData) => {\n runAction(\n {\n actionKey: action.key,\n row,\n source: \"rowAction\",\n },\n () => action.onClick(row),\n );\n },\n })),\n [rowActions, runAction],\n );\n const guardedOnRowClick = React.useMemo<\n DataTableProps[\"onRowClick\"]\n >(\n () =>\n onRowClick\n ? (context) => {\n runAction(\n {\n row: context.row,\n source: \"rowClick\",\n },\n () => onRowClick(context),\n );\n }\n : undefined,\n [onRowClick, runAction],\n );\n const handleEditError = React.useCallback(\n (error: unknown, row: TData) => {\n onActionError?.({\n error,\n row,\n source: \"edit\",\n });\n },\n [onActionError],\n );\n const {\n containerWidth,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentRowPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentGrouping,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n effectiveColumnVisibility,\n globalFilterValue,\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n localSearchValue,\n resolvedLoadingRowCount,\n resolvedToolbarQueryPlaceholder,\n selectedRowIds,\n selectedRows,\n setCurrentColumnFilters,\n setCurrentColumnOrder,\n setCurrentColumnPinning,\n setCurrentRowPinning,\n setCurrentColumnVisibility,\n setCurrentExpanded,\n setCurrentGrouping,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n setLocalSearchValue,\n shouldRenderInitialLoading,\n tableData,\n tableGetRowId,\n visibleData,\n } = useDataTableState({\n columnFilters: resolvedColumnFilters,\n columnOrder: resolvedColumnOrder,\n columnPinning: resolvedColumnPinning,\n rowPinning: resolvedRowPinning,\n columnSizing: resolvedColumnSizing,\n columnPrefsKey,\n persistence,\n columnVisibility: resolvedColumnVisibility,\n columns,\n containerRef,\n data,\n density: resolvedDensity,\n enableRowSelection,\n enableToolbarQueryFiltering,\n expanded: resolvedExpanded,\n grouping: resolvedGrouping,\n getSubRows,\n getRowId,\n hiddenRows,\n isLoading,\n loadingRowCount,\n manualFiltering,\n initialState,\n onColumnFiltersChange: handleColumnFiltersPropChange,\n onColumnOrderChange: handleColumnOrderPropChange,\n onColumnPinningChange: handleColumnPinningPropChange,\n onRowPinningChange: handleRowPinningPropChange,\n onColumnSizingChange: handleColumnSizingPropChange,\n onColumnVisibilityChange: handleColumnVisibilityPropChange,\n onDensityChange: handleDensityPropChange,\n onExpandedChange: handleExpandedPropChange,\n onGroupingChange: handleGroupingPropChange,\n onPageIndexChange: handlePageIndexPropChange,\n onRowSelectionChange: handleRowSelectionPropChange,\n onShowHiddenRowsChange: handleShowHiddenRowsPropChange,\n onSortingChange: handleSortingPropChange,\n onToolbarQueryValueChange: handleToolbarQueryValueChange,\n onViewModeChange: handleViewModePropChange,\n pageIndex: resolvedPageIndex,\n pageSize: resolvedPageSize,\n resolvedLabels,\n rowSelection: resolvedRowSelection,\n rowsPerPageOptions,\n selectionActions,\n showHiddenRows: resolvedShowHiddenRows,\n sorting: resolvedSorting,\n toolbarQueryDebounceMs,\n toolbarQueryPlaceholder,\n toolbarQueryValue: resolvedToolbarQueryValue,\n viewMode: resolvedViewMode,\n });\n const usesLegacyDetailPanelState = Boolean(\n renderExpandedRow && !detailPanel && !getSubRows,\n );\n const resolvedDetailPanel =\n detailPanel ??\n (renderExpandedRow\n ? {\n getRowCanExpand: getSubRows ? undefined : getRowCanExpand,\n render: renderExpandedRow,\n }\n : undefined);\n const [currentDetailExpanded, setCurrentDetailExpanded] =\n useControllableState({\n defaultValue: () =>\n usesLegacyDetailPanelState ? (initialState?.expanded ?? {}) : {},\n onChange: usesLegacyDetailPanelState\n ? setCurrentExpanded\n : resolvedDetailPanel?.onExpandedChange,\n value: usesLegacyDetailPanelState\n ? currentExpanded\n : resolvedDetailPanel?.expanded,\n });\n const {\n cancelEditing,\n clearEditError,\n draftValues,\n editErrors,\n editingRowId,\n isEditDirty,\n isSavingEdit,\n saveEdit,\n setDraftValues,\n setEditingRowId,\n startEditingRow,\n } = useRowEditing({\n columns,\n editableRows,\n onError: handleEditError,\n });\n const rowEditingContext = React.useMemo(\n () => ({\n cancel: cancelEditing,\n cancelOnEscape: editableRows?.cancelOnEscape !== false,\n clearError: clearEditError,\n commit: (row: TData) => {\n void saveEdit(row);\n },\n commitOnEnter: editableRows?.commitOnEnter !== false,\n errors: editErrors,\n isDirty: isEditDirty,\n isPending: isSavingEdit,\n }),\n [\n cancelEditing,\n clearEditError,\n editableRows?.cancelOnEscape,\n editableRows?.commitOnEnter,\n editErrors,\n isEditDirty,\n isSavingEdit,\n saveEdit,\n ],\n );\n const { viewportElement: tableScrollElement, viewportHeight } =\n useDataTableScrollViewport(tableScrollContainerRef, currentViewMode);\n const autoPageSizeConfig =\n typeof autoPageSize === \"object\" ? autoPageSize : undefined;\n const handleAutoPageSizeChange = React.useCallback(\n (nextPageSize: number) => {\n if (nextPageSize === currentPagination.pageSize) {\n return;\n }\n if (currentPagination.pageIndex !== 0) {\n handlePageIndexPropChange(0);\n }\n handlePageSizePropChange(nextPageSize);\n if (resolvedPageSize === undefined) {\n setLocalPagination({ pageIndex: 0, pageSize: nextPageSize });\n }\n },\n [\n currentPagination.pageIndex,\n currentPagination.pageSize,\n handlePageIndexPropChange,\n handlePageSizePropChange,\n resolvedPageSize,\n setLocalPagination,\n ],\n );\n const autoPageSizeEnabled =\n autoPageSize === true || autoPageSizeConfig !== undefined;\n const print = React.useCallback(() => {\n if (typeof window === \"undefined\" || typeof window.print !== \"function\") {\n return false;\n }\n window.print();\n return true;\n }, []);\n const toggleFullscreen = React.useCallback(async () => {\n const element = containerRef.current;\n if (!element || typeof document === \"undefined\") {\n return false;\n }\n if (document.fullscreenElement) {\n if (typeof document.exitFullscreen !== \"function\") return false;\n await document.exitFullscreen();\n return true;\n }\n if (typeof element.requestFullscreen !== \"function\") return false;\n await element.requestFullscreen();\n return true;\n }, []);\n const [isFullscreen, setIsFullscreen] = React.useState(false);\n React.useEffect(() => {\n if (!enableFullscreen || typeof document === \"undefined\") return;\n const update = () => {\n setIsFullscreen(document.fullscreenElement === containerRef.current);\n };\n update();\n document.addEventListener(\"fullscreenchange\", update);\n return () => document.removeEventListener(\"fullscreenchange\", update);\n }, [enableFullscreen]);\n const openFileDialog = React.useCallback(() => {\n if (fileUpload?.disabled) {\n return;\n }\n\n fileInputRef.current?.click();\n }, [fileUpload?.disabled]);\n const handleSelectedFiles = React.useCallback(\n (files: FileList | Array) => {\n runAction(\n {\n source: \"fileUpload\",\n },\n () => fileUpload?.onFilesSelected(files),\n );\n },\n [fileUpload, runAction],\n );\n\n const tableColumns = useDataTableColumns({\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n editErrors,\n editingRowId,\n enableRowSelection,\n enableRowPinning,\n hasTreeExpansion: Boolean(getSubRows),\n isSavingEdit,\n isEditDirty,\n labels: resolvedLabels,\n lastSelectedRowIdRef,\n detailPanel: resolvedDetailPanel,\n detailExpanded: currentDetailExpanded,\n onDetailExpandedChange: setCurrentDetailExpanded,\n rowSelectionSelectAllScope,\n rowActions: guardedRowActions,\n saveEdit,\n startEditingRow,\n tableRef,\n });\n const columnGroupPaths = React.useMemo(\n () => getDataTableColumnGroupPaths(columns),\n [columns],\n );\n\n const {\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n isPageCountKnown,\n renderedRows,\n topPinnedRows,\n bottomPinnedRows,\n reorderColumn,\n rowsToRender,\n sentinelRef,\n table,\n virtualPaddingBottom,\n virtualPaddingTop,\n visibleLeafColumns,\n } = useDataTableInstance({\n autoResetPageIndex: false,\n columnGroupPaths,\n columnResizeMode,\n dir,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentRowPinning,\n currentColumnSizing,\n currentExpanded,\n currentGrouping,\n currentPagination,\n currentRowSelection,\n currentSorting,\n currentViewMode,\n defaultColumn,\n effectiveColumnVisibility,\n enableColumnResizing,\n enableRowPinning,\n enableRowSelection,\n enableMultiRowSelection,\n enableSubRowSelection,\n getRowCanSelect,\n getRowCanExpand,\n getSubRows,\n aggregationFns,\n groupedColumnMode,\n globalFilterFn,\n globalFilterValue,\n hasNextPage,\n handleColumnFiltersChange: setCurrentColumnFilters,\n handleColumnOrderChange: setCurrentColumnOrder,\n handleColumnPinningChange: setCurrentColumnPinning,\n handleRowPinningChange: setCurrentRowPinning,\n handleColumnVisibilityChange: setCurrentColumnVisibility,\n handleExpandedChange: setCurrentExpanded,\n handleGroupingChange: setCurrentGrouping,\n infiniteScroll,\n keepPinnedRows,\n manualFiltering,\n manualGrouping,\n manualExpanding,\n manualPagination,\n manualSorting,\n onActionError,\n onPageIndexChange: handlePageIndexPropChange,\n onPageSizeChange: handlePageSizePropChange,\n pageCount,\n pageIndex: resolvedPageIndex,\n pageSize: resolvedPageSize,\n paginateExpandedRows,\n filterFromLeafRows,\n maxLeafRowFilterDepth,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n shouldRenderInitialLoading,\n tableColumns,\n tableData,\n tableGetRowId,\n tableRef,\n tableScrollElement,\n totalRowCount,\n virtualization,\n viewportHeight,\n });\n const columnLayout = useColumnLayout({\n columns,\n columnSizing: currentColumnSizing,\n editableRows: Boolean(editableRows),\n enableRowSelection,\n hasRowActions: rowActions.length > 0,\n hasRowExpansion: Boolean(getSubRows || resolvedDetailPanel),\n layoutMode,\n uiClassNames,\n visibleLeafColumns,\n });\n const { explicitlySizedColumnIds, fillMinWidth, getColumnLayout } =\n columnLayout;\n const explicitCustomCellColumnIds = React.useMemo(() => {\n return new Set(\n getDataTableLeafColumns(columns).flatMap(({ column, index }) => {\n return Object.prototype.hasOwnProperty.call(column, \"cell\") &&\n typeof column.cell === \"function\"\n ? [getColumnId(column, index)]\n : [];\n }),\n );\n }, [columns]);\n const visibleLeafColumnCount = visibleLeafColumns.length;\n const bodyRowComponents = React.useMemo(\n () => ({\n Checkbox,\n Input,\n Skeleton,\n TableCell,\n TableRow,\n }),\n [],\n );\n const hasCardTitle = React.useMemo(\n () =>\n getDataTableLeafColumns(columns).some(\n ({ column }) => column.meta?.cardTitle,\n ),\n [columns],\n );\n const primeColumnForResize = React.useCallback(\n (columnId: string, currentSize: number) => {\n if (\n explicitlySizedColumnIds.has(columnId) ||\n Object.prototype.hasOwnProperty.call(\n table.getState().columnSizing,\n columnId,\n )\n ) {\n return;\n }\n\n flushSync(() => {\n table.setColumnSizing((current) => ({\n ...current,\n [columnId]: currentSize,\n }));\n });\n },\n [explicitlySizedColumnIds, table],\n );\n const resetColumnSize = React.useCallback(\n (columnId: string) => {\n if (explicitlySizedColumnIds.has(columnId)) {\n table.getColumn(columnId)?.resetSize();\n return;\n }\n\n table.setColumnSizing((current) => {\n if (!Object.prototype.hasOwnProperty.call(current, columnId)) {\n return current;\n }\n\n const next = { ...current };\n delete next[columnId];\n return next;\n });\n },\n [explicitlySizedColumnIds, table],\n );\n\n const filteredData = table\n .getFilteredRowModel()\n .rows.map((row) => row.original);\n const configuredEmptyState = stateOverlay?.empty ?? emptyState;\n const emptyNode =\n typeof configuredEmptyState === \"function\"\n ? configuredEmptyState({\n rows: filteredData,\n toolbarQueryValue: localSearchValue,\n })\n : configuredEmptyState;\n const guardedStateOverlay = React.useMemo(\n () =>\n stateOverlay\n ? {\n ...stateOverlay,\n onRetry: stateOverlay.onRetry\n ? () =>\n runAction(\n { source: \"retry\" },\n stateOverlay.onRetry!,\n )\n : undefined,\n }\n : undefined,\n [runAction, stateOverlay],\n );\n const stateOverlayNode = guardedStateOverlay?.error != null ? (\n \n \n \n ) : undefined;\n const {\n columnVisibilityOptions,\n effectiveToolbarActions,\n handleClearColumnFilters,\n handleToolbarColumnFilterChange,\n handleToolbarColumnPinningChange,\n toolbarColumnFilters,\n } = useDataTableToolbarFeatures({\n columns,\n currentColumnFilters,\n currentColumnPinning,\n csvExport,\n effectiveColumnVisibility,\n enableColumnFilters,\n handleColumnFiltersChange: setCurrentColumnFilters,\n handleColumnPinningChange: setCurrentColumnPinning,\n labels: resolvedLabels,\n table,\n toolbarActions,\n visibleData,\n });\n const guardedToolbarActions = React.useMemo(\n () =>\n [\n ...effectiveToolbarActions,\n ...(enablePrint\n ? [\n {\n key: \"__print__\",\n label: resolvedLabels.print,\n placement: \"trailing\" as const,\n onClick: () => {\n print();\n },\n },\n ]\n : []),\n ...(enableFullscreen\n ? [\n {\n key: \"__fullscreen__\",\n label: isFullscreen\n ? resolvedLabels.exitFullscreen\n : resolvedLabels.enterFullscreen,\n placement: \"trailing\" as const,\n onClick: () => toggleFullscreen(),\n },\n ]\n : []),\n ].map((action) => ({\n ...action,\n onClick: (context: {\n rows: Array;\n openFileDialog?: () => void;\n }) => {\n runAction(\n {\n actionKey: action.key,\n source: \"toolbarAction\",\n },\n () => action.onClick(context),\n );\n },\n })),\n [\n effectiveToolbarActions,\n enableFullscreen,\n enablePrint,\n isFullscreen,\n print,\n resolvedLabels.enterFullscreen,\n resolvedLabels.exitFullscreen,\n resolvedLabels.print,\n runAction,\n toggleFullscreen,\n ],\n );\n const guardedSelectionActions = React.useMemo(\n () =>\n selectionActions.map((action) => ({\n ...action,\n onClick: (context: Parameters[0]) => {\n runAction(\n {\n actionKey: action.key,\n source: \"selectionAction\",\n },\n () => action.onClick(context),\n );\n },\n })),\n [runAction, selectionActions],\n );\n const currentDataTableState = React.useMemo(\n () => ({\n sorting: currentSorting,\n pagination: currentPagination,\n rowSelection: currentRowSelection,\n columnVisibility: currentColumnVisibility,\n columnFilters: currentColumnFilters,\n expanded: currentExpanded,\n grouping: currentGrouping,\n columnOrder: currentColumnOrder,\n columnPinning: currentColumnPinning,\n rowPinning: currentRowPinning,\n columnSizing: currentColumnSizing,\n density: currentDensity,\n viewMode: currentViewMode,\n showHiddenRows: currentShowHiddenRows,\n globalFilter: localSearchValue,\n }),\n [\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentRowPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentGrouping,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n localSearchValue,\n ],\n );\n const getCurrentState = React.useCallback(\n () => cloneDataTableState(currentDataTableState),\n [currentDataTableState],\n );\n const restoreState = React.useCallback(\n (nextState: Partial) => {\n if (nextState.sorting !== undefined) {\n table.setSorting(nextState.sorting);\n }\n if (nextState.pagination !== undefined) {\n table.setPagination(nextState.pagination);\n }\n if (nextState.rowSelection !== undefined) {\n table.setRowSelection(nextState.rowSelection);\n }\n if (nextState.columnVisibility !== undefined) {\n table.setColumnVisibility(nextState.columnVisibility);\n }\n if (nextState.columnFilters !== undefined) {\n table.setColumnFilters(nextState.columnFilters);\n }\n if (nextState.expanded !== undefined) {\n table.setExpanded(nextState.expanded);\n }\n if (nextState.grouping !== undefined) {\n table.setGrouping(nextState.grouping);\n }\n if (nextState.columnOrder !== undefined) {\n table.setColumnOrder(nextState.columnOrder);\n }\n if (nextState.columnPinning !== undefined) {\n table.setColumnPinning(nextState.columnPinning);\n }\n if (nextState.rowPinning !== undefined) {\n table.setRowPinning(nextState.rowPinning);\n }\n if (nextState.columnSizing !== undefined) {\n table.setColumnSizing(nextState.columnSizing);\n }\n if (nextState.density !== undefined) {\n handleDensityChange(nextState.density);\n }\n if (nextState.viewMode !== undefined) {\n handleViewModeChange(nextState.viewMode);\n }\n if (nextState.showHiddenRows !== undefined) {\n handleShowHiddenRowsChange(nextState.showHiddenRows);\n }\n if (nextState.globalFilter !== undefined) {\n setLocalSearchValue(nextState.globalFilter);\n }\n },\n [\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n setLocalSearchValue,\n table,\n ],\n );\n const clearPersistedState = React.useCallback(\n () => clearDataTableColumnPrefs(persistence ?? columnPrefsKey),\n [columnPrefsKey, persistence],\n );\n const resetColumnLayout = React.useCallback<\n DataTableApi[\"resetColumnLayout\"]\n >(\n (options) => {\n if (options?.clearPersistence) {\n clearPersistedState();\n }\n restoreState({\n columnVisibility: initialState?.columnVisibility ?? {},\n columnOrder: initialState?.columnOrder ?? [],\n columnPinning:\n initialState?.columnPinning ?? getInitialColumnPinning(columns),\n rowPinning: initialState?.rowPinning ?? { top: [], bottom: [] },\n columnSizing: initialState?.columnSizing ?? {},\n });\n },\n [\n clearPersistedState,\n columns,\n initialState,\n restoreState,\n ],\n );\n const resetState = React.useCallback[\"resetState\"]>(\n (options) => {\n if (options?.clearPersistence) {\n clearPersistedState();\n }\n restoreState({\n sorting: initialState?.sorting ?? [],\n pagination: initialState?.pagination ?? {\n pageIndex: 0,\n pageSize: rowsPerPageOptions[0] ?? 20,\n },\n rowSelection: initialState?.rowSelection ?? {},\n columnVisibility: initialState?.columnVisibility ?? {},\n columnFilters: initialState?.columnFilters ?? [],\n expanded: initialState?.expanded ?? {},\n grouping: initialState?.grouping ?? [],\n columnOrder: initialState?.columnOrder ?? [],\n columnPinning:\n initialState?.columnPinning ?? getInitialColumnPinning(columns),\n rowPinning: initialState?.rowPinning ?? { top: [], bottom: [] },\n columnSizing: initialState?.columnSizing ?? {},\n density: initialState?.density ?? \"comfortable\",\n viewMode: initialState?.viewMode ?? \"table\",\n showHiddenRows: initialState?.showHiddenRows ?? false,\n globalFilter: initialState?.globalFilter ?? \"\",\n });\n },\n [\n clearPersistedState,\n columns,\n initialState,\n restoreState,\n rowsPerPageOptions,\n ],\n );\n const getSavedViews = React.useCallback(\n () => readDataTableSavedViews(savedViews),\n [savedViews],\n );\n const createSavedView = React.useCallback<\n DataTableApi[\"createSavedView\"]\n >(\n (name) =>\n createDataTableSavedView(savedViews, name, getCurrentState()),\n [getCurrentState, savedViews],\n );\n const applySavedView = React.useCallback<\n DataTableApi[\"applySavedView\"]\n >(\n (id) => {\n const view = readDataTableSavedViews(savedViews).find(\n (candidate) => candidate.id === id,\n );\n if (!view) {\n return false;\n }\n restoreState(view.state);\n savedViews?.onApply?.(view);\n return true;\n },\n [restoreState, savedViews],\n );\n const renameSavedView = React.useCallback<\n DataTableApi[\"renameSavedView\"]\n >(\n (id, name) => renameDataTableSavedView(savedViews, id, name),\n [savedViews],\n );\n const deleteSavedView = React.useCallback<\n DataTableApi[\"deleteSavedView\"]\n >(\n (id) => deleteDataTableSavedView(savedViews, id),\n [savedViews],\n );\n const clearSavedViews = React.useCallback(\n () => clearDataTableSavedViews(savedViews),\n [savedViews],\n );\n const toolbarSavedViews = React.useMemo(() => {\n void toolbarSavedViewsVersion;\n return readDataTableSavedViews(savedViews);\n }, [savedViews, toolbarSavedViewsVersion]);\n const handleToolbarCreateSavedView = React.useCallback(\n (name: string) => {\n const view = createSavedView(name);\n if (view) {\n setToolbarSavedViewsVersion((current) => current + 1);\n }\n return view;\n },\n [createSavedView],\n );\n const handleToolbarRenameSavedView = React.useCallback(\n (id: string, name: string) => {\n const view = renameSavedView(id, name);\n if (view) {\n setToolbarSavedViewsVersion((current) => current + 1);\n }\n return view;\n },\n [renameSavedView],\n );\n const handleToolbarDeleteSavedView = React.useCallback(\n (id: string) => {\n const deleted = deleteSavedView(id);\n if (deleted) {\n setToolbarSavedViewsVersion((current) => current + 1);\n }\n return deleted;\n },\n [deleteSavedView],\n );\n const exportCsvFromApi = React.useCallback<\n DataTableApi[\"exportCsv\"]\n >(\n (options) =>\n exportDataTableCsv({\n csvExport: options ?? (csvExport || true),\n labels: resolvedLabels,\n table,\n }),\n [csvExport, resolvedLabels, table],\n );\n const copyToClipboard = React.useCallback<\n DataTableApi[\"copyToClipboard\"]\n >(\n async (options) => {\n const { copyDataTableToClipboard } = await import(\n \"./data-table-clipboard\"\n );\n return copyDataTableToClipboard({\n clipboard:\n options ??\n (clipboard?.copy === false\n ? false\n : currentCellSelection\n ? {\n ...(clipboard?.copy === true ? {} : clipboard?.copy),\n scope: \"cellSelection\",\n }\n : clipboard?.copy ?? true),\n cellSelection: currentCellSelection,\n table,\n });\n },\n [clipboard?.copy, currentCellSelection, table],\n );\n const pinRow = React.useCallback[\"pinRow\"]>(\n (rowId, position = \"top\") => {\n try {\n const row = table.getRow(rowId, true);\n if (!row.getCanPin()) {\n return false;\n }\n row.pin(position);\n return true;\n } catch {\n return false;\n }\n },\n [table],\n );\n const unpinRow = React.useCallback[\"unpinRow\"]>(\n (rowId) => {\n try {\n const row = table.getRow(rowId, true);\n if (!row.getCanPin()) {\n return false;\n }\n row.pin(false);\n return true;\n } catch {\n return false;\n }\n },\n [table],\n );\n React.useImperativeHandle(\n apiRef,\n () => ({\n getTable: () => tableRef.current,\n getState: getCurrentState,\n snapshot: getCurrentState,\n restore: restoreState,\n resetColumnLayout,\n resetState,\n clearPersistedState,\n getSavedViews,\n createSavedView,\n applySavedView,\n renameSavedView,\n deleteSavedView,\n clearSavedViews,\n pinRow,\n unpinRow,\n focus: () => {\n containerRef.current?.focus();\n },\n scrollToRow: (rowId) =>\n scrollDataTableElementIntoView(containerRef.current, \"row\", rowId),\n scrollToColumn: (columnId) =>\n scrollDataTableElementIntoView(\n containerRef.current,\n \"column\",\n columnId,\n ),\n exportCsv: exportCsvFromApi,\n copyToClipboard,\n getCellSelection: () => currentCellSelection,\n setCellSelection: setCurrentCellSelection,\n clearCellSelection: () => setCurrentCellSelection(null),\n print,\n toggleFullscreen,\n }),\n [\n applySavedView,\n clearPersistedState,\n clearSavedViews,\n copyToClipboard,\n currentCellSelection,\n createSavedView,\n deleteSavedView,\n exportCsvFromApi,\n getSavedViews,\n getCurrentState,\n renameSavedView,\n resetColumnLayout,\n resetState,\n restoreState,\n pinRow,\n print,\n setCurrentCellSelection,\n unpinRow,\n toggleFullscreen,\n ],\n );\n\n return (\n \n {\n if (\n gridMode &&\n gridCommands &&\n (event.ctrlKey || event.metaKey) &&\n event.key.toLowerCase() === \"z\" &&\n !isDataTableEditableClipboardTarget(event.target)\n ) {\n const command = event.shiftKey ? gridCommands.redo : gridCommands.undo;\n if (command) {\n event.preventDefault();\n runAction(\n { source: event.shiftKey ? \"redo\" : \"undo\" },\n () => command({ cellSelection: currentCellSelection, table }),\n );\n }\n return;\n }\n if (\n !clipboard?.copy ||\n !(event.ctrlKey || event.metaKey) ||\n event.key.toLowerCase() !== \"c\" ||\n isDataTableEditableClipboardTarget(event.target)\n ) {\n return;\n }\n event.preventDefault();\n runAction(\n { source: \"clipboardCopy\" },\n async () => {\n await copyToClipboard(\n clipboard.copy === true\n ? undefined\n : currentCellSelection &&\n typeof clipboard.copy === \"object\" &&\n !clipboard.copy.scope\n ? { ...clipboard.copy, scope: \"cellSelection\" }\n : clipboard.copy,\n );\n },\n );\n }}\n onPaste={(event) => {\n const paste = clipboard?.paste;\n if (\n !paste ||\n paste.enabled === false ||\n isDataTableEditableClipboardTarget(event.target)\n ) {\n return;\n }\n const text = event.clipboardData.getData(\"text/plain\");\n if (!text) {\n return;\n }\n if (paste.preventDefault ?? true) {\n event.preventDefault();\n }\n runAction(\n { source: \"clipboardPaste\" },\n async () => {\n const { parseDataTableClipboardText } = await import(\n \"./data-table-clipboard\"\n );\n return paste.onPaste({\n table,\n text,\n values: parseDataTableClipboardText(text),\n });\n },\n );\n }}\n >\n {autoPageSizeEnabled ? (\n \n \n \n ) : null}\n {fileUpload ? (\n {\n const files = event.currentTarget.files;\n if (files?.length) {\n handleSelectedFiles(files);\n }\n event.currentTarget.value = \"\";\n }}\n />\n ) : null}\n \n \n {showToolbar ? (\n \n ) : null}\n\n \n {currentViewMode === \"card\" && cardRenderer ? (\n \n ) : (\n \n )}\n \n \n {children}\n \n \n \n \n \n );\n };\n}\n\nfunction runDataTableAction(\n action: () => void | Promise,\n context: Omit, \"error\">,\n onActionError: DataTableProps[\"onActionError\"],\n) {\n let result: void | Promise;\n try {\n result = action();\n } catch (error) {\n onActionError?.({ ...context, error });\n return;\n }\n\n void Promise.resolve(result).catch((error: unknown) => {\n onActionError?.({ ...context, error });\n });\n}\n\nfunction useDataTableStateSliceChange(\n key: K,\n onLegacyChange:\n | ((value: Exclude) => void)\n | undefined,\n onStateChange: DataTableProps[\"onStateChange\"],\n) {\n const handleChange = React.useCallback(\n (value: Exclude) => {\n onLegacyChange?.(value);\n onStateChange?.((current) => ({\n ...current,\n [key]: value,\n }));\n },\n [key, onLegacyChange, onStateChange],\n );\n\n return onLegacyChange || onStateChange ? handleChange : undefined;\n}\n\nfunction useDataTableStateConflictWarnings(\n state: Partial | undefined,\n legacySlices: Record,\n) {\n const warnedSlicesRef = React.useRef(new Set());\n\n React.useEffect(() => {\n if (!state || !isDevelopmentEnvironment()) {\n return;\n }\n\n for (const key of Object.keys(legacySlices) as Array<\n keyof DataTableState\n >) {\n if (\n state[key] === undefined ||\n !legacySlices[key] ||\n warnedSlicesRef.current.has(key)\n ) {\n continue;\n }\n\n warnedSlicesRef.current.add(key);\n console.warn(\n `[data-table-pro] Both state.${key} and its legacy controlled prop were provided. The legacy prop takes precedence during the 4.x compatibility window.`,\n );\n }\n }, [legacySlices, state]);\n}\n\nfunction isDevelopmentEnvironment() {\n const nodeEnvironment = (\n globalThis as {\n process?: { env?: { NODE_ENV?: string } };\n }\n ).process?.env?.NODE_ENV;\n\n return nodeEnvironment !== \"production\";\n}\n\nfunction cloneDataTableState(state: DataTableState): DataTableState {\n return {\n sorting: state.sorting.map((item) => ({ ...item })),\n pagination: { ...state.pagination },\n rowSelection: { ...state.rowSelection },\n columnVisibility: { ...state.columnVisibility },\n columnFilters: state.columnFilters.map((item) => ({ ...item })),\n expanded:\n typeof state.expanded === \"boolean\"\n ? state.expanded\n : { ...state.expanded },\n grouping: [...(state.grouping ?? [])],\n columnOrder: [...state.columnOrder],\n columnPinning: {\n left: state.columnPinning.left\n ? [...state.columnPinning.left]\n : undefined,\n right: state.columnPinning.right\n ? [...state.columnPinning.right]\n : undefined,\n },\n rowPinning: {\n top: state.rowPinning.top ? [...state.rowPinning.top] : undefined,\n bottom: state.rowPinning.bottom ? [...state.rowPinning.bottom] : undefined,\n },\n columnSizing: { ...state.columnSizing },\n density: state.density,\n viewMode: state.viewMode,\n showHiddenRows: state.showHiddenRows,\n globalFilter: state.globalFilter,\n };\n}\n\nfunction scrollDataTableElementIntoView(\n container: HTMLDivElement | null,\n kind: \"row\" | \"column\",\n value: string,\n) {\n if (!container) {\n return false;\n }\n\n const attribute = kind === \"row\" ? \"data-row-id\" : \"data-column-id\";\n const element = Array.from(\n container.querySelectorAll(`[${attribute}]`),\n ).find((candidate) => candidate.getAttribute(attribute) === value);\n if (!element) {\n return false;\n }\n\n element.scrollIntoView?.({ block: \"nearest\", inline: \"nearest\" });\n return true;\n}\n\nfunction isDataTableEditableClipboardTarget(target: EventTarget | null) {\n if (!(target instanceof HTMLElement)) {\n return false;\n }\n return (\n target.isContentEditable ||\n target instanceof HTMLInputElement ||\n target instanceof HTMLTextAreaElement ||\n target instanceof HTMLSelectElement\n );\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-NLQJKISS.js.map b/dist/chunk-NLQJKISS.js.map deleted file mode 100644 index 1f615f0..0000000 --- a/dist/chunk-NLQJKISS.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/core/data-table/use-row-editing.tsx","../src/core/data-table/data-table-virtual-row-measurement.tsx","../src/core/data-table/data-table-cell-content.tsx","../src/core/data-table/data-table-body-row.tsx","../src/core/data-table/data-table-header-cell.tsx","../src/core/data-table/data-table-table-panel.tsx"],"names":["useRowEditing","columns","editableRows","onError","editingRowId","setEditingRowId","P","draftValues","setDraftValues","draftValuesRef","originalDraftValues","setOriginalDraftValues","editErrors","setEditErrors","isSavingEdit","setIsSavingEdit","isEditDirty","areDraftValuesEqual","cancelEditing","startEditingRow","row","rowId","initialValues","defaultDraftValues","saveEdit","draftSnapshot","rollback","validation","validationErrors","normalizeEditValidationErrors","optimisticResult","error","clearEditError","columnId","current","next","getDataTableLeafColumns","draft","column","renderEditableCell","context","components","editing","Checkbox","Input","meta","accessorKey","draftValue","setDraftValue","value","handleKeyDown","event","inputType","getEditableInputType","jsxs","jsx","checked","getEditableInputValue","rawValue","parsedValue","parseEditableInputValue","left","right","keys","key","type","previousValue","DataTableVirtualRowMeasurementContext","Le","DataTableVirtualRowMeasurementProvider","children","measureRow","useDataTableVirtualRowMeasurement","renderDataTableCellContent","classNames","options","hasCustomCell","renderedCellContent","flexRender","hasComplexRenderedContent","isComplexRenderedCellContent","resolvedOverflow","resolveDataTableCellOverflow","cn","getCellOverflowClassName","IconClock","formatDateValue","content","formatCellValue","useCustomOverflowDefaults","overflow","pa","DataTableBodyRowInner","columnLayouts","currentDensity","editingContext","dragAndDrop","explicitCustomCellColumnIds","getRowClassName","groupToggleLabel","gridMode","gridRowAriaIndex","gridRowIndex","activeGridCell","cellSelectionEnabled","isGridCellSelected","onGridCellFocus","onGridCellKeyDown","onGridCellPointerDown","onGridCellPointerEnter","isDraggable","isDetailExpanded","isEditing","isExpanded","isInitialLoadingRow","isSelected","loadingState","onRowClick","pinnedPosition","originalRow","detailPanel","rowIndex","stripedRows","uiClassNames","visibleCells","visibleLeafColumnCount","Skeleton","TableCell","TableRow","virtualRowMeasurement","measureElement","firstDataColumnId","cell","Ge","isDataTableInteractiveTarget","columnIndex","cellContext","layout","isSelectionColumn","isExpansionColumn","isActionsColumn","isSpacerColumn","hideClassName","hideOnClassName","cellClassName","isDataTableLoadingRow","isCellSelected","getDensityCellClassName","cellAlignClassName","areDataTableBodyRowsEqual","previous","sameLoadingState","sameVisibleCells","sameColumnLayouts","index","nextCell","cells","previousLayout","nextLayout","sameCellStyle","DataTableBodyRow","DataTableHeaderCellInner","columnGroupHeaderHeight","currentSorting","dir","draggedColumnIdRef","enableColumnReordering","enableColumnResizing","gridColumnIndex","header","headerGroupHeaders","primeColumnForResize","reorderColumn","resizeColumnLabel","resetColumnSize","TableHead","headerContentId","Ke","isColumnGroup","groupDefinition","canSort","sortingState","sortingIndex","sort","canReorderColumn","getDensityHeaderClassName","headerAlignClassName","sourceColumnId","headers","item","isUtilityColumnId","currentIndex","target","Fragment","IconChevronDown","IconSelector","getHeaderMaximumSize","getHeaderMinimumSize","leafHeader","getResizableLeafHeaders","grows","resizeHeaderBy","areDataTableHeaderCellsEqual","sameSubHeaders","sameSorting","sameHeaderGroupHeaders","sameHeaderLayout","total","delta","leafHeaders","deltaPerLeaf","minimum","maximum","nextSort","DataTableHeaderCell","DataTableTablePanel","ariaDescribedBy","ariaLabelledBy","bodyRowComponents","cellSelection","currentDetailExpanded","DataTableEmptyState","emptyNode","fillMinWidth","flexGrow","gridPageSize","gridRowOffset","onGridActiveRowIndexChange","onCellSelectionChange","getColumnLayout","getRowLoadingState","infiniteScroll","layoutMode","localSearchValue","renderedRows","topPinnedRows","bottomPinnedRows","resolvedLabels","rowsToRender","ScrollArea","ScrollBar","sentinelRef","shouldRenderInitialLoading","stateOverlayNode","stickyHeader","summaryRows","table","tableClassName","tableContainerClassName","Table","TableBody","TableFooter","TableHeader","tableScrollContainerRef","tableScrollElement","totalRowCount","virtualPaddingBottom","virtualPaddingTop","visibleLeafColumns","selectionState","filteredRows","summarySourceRows","headerRowCount","displayRowCount","activeCell","setActiveCell","shouldRestoreGridFocusRef","pointerSelectingRef","gridRows","getGridCoordinate","selectedBounds","anchorRow","focusRow","anchorColumn","focusColumn","handleGridCellFocus","selectGridCell","extend","focus","anchor","handleGridCellPointerDown","handleGridCellPointerEnter","stopSelecting","frame","moveGridFocus","pageRows","lastRow","lastColumn","nextRow","nextColumn","renderBodyRow","resolvedLoadingState","headerGroup","getHeaderLayout","summaryRow","summaryIndex","columnLayout","leafLayouts","fixedSide","edgeLayout"],"mappings":"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","file":"chunk-NLQJKISS.js","sourcesContent":["import * as React from \"react\";\nimport type { CellContext } from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableColumnType,\n DataTableEditableRowsConfig,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { getDataTableLeafColumns } from \"./data-table-utils\";\n\nexport function useRowEditing({\n columns,\n editableRows,\n onError,\n}: {\n columns: Array>;\n editableRows: DataTableEditableRowsConfig | undefined;\n onError?: (error: unknown, row: TData) => void;\n}) {\n const [editingRowId, setEditingRowId] = React.useState(null);\n const [draftValues, setDraftValues] = React.useState<\n Record\n >({});\n const draftValuesRef = React.useRef(draftValues);\n const [originalDraftValues, setOriginalDraftValues] = React.useState<\n Record\n >({});\n const [editErrors, setEditErrors] = React.useState>(\n {},\n );\n const [isSavingEdit, setIsSavingEdit] = React.useState(false);\n const isEditDirty = React.useMemo(\n () => !areDraftValuesEqual(draftValues, originalDraftValues),\n [draftValues, originalDraftValues],\n );\n\n React.useEffect(() => {\n draftValuesRef.current = draftValues;\n }, [draftValues]);\n\n const cancelEditing = React.useCallback(() => {\n setEditingRowId(null);\n setDraftValues({});\n setEditErrors({});\n setOriginalDraftValues({});\n }, []);\n\n const startEditingRow = React.useCallback(\n (row: TData, rowId: string) => {\n const initialValues =\n editableRows?.getInitialValues?.(row) ??\n defaultDraftValues(row, columns);\n setOriginalDraftValues({ ...initialValues });\n setDraftValues(initialValues);\n setEditErrors({});\n setEditingRowId(rowId);\n },\n [columns, editableRows],\n );\n\n const saveEdit = React.useCallback(\n async (row: TData) => {\n if (!editableRows) {\n return false;\n }\n\n setIsSavingEdit(true);\n const draftSnapshot = { ...draftValuesRef.current };\n let rollback: (() => void) | undefined;\n try {\n const validation = await editableRows.validateRow?.(\n row,\n draftSnapshot,\n );\n const validationErrors = normalizeEditValidationErrors(validation);\n if (Object.keys(validationErrors).length > 0) {\n setEditErrors(validationErrors);\n return false;\n }\n\n setEditErrors({});\n const optimisticResult = editableRows.onOptimisticUpdate?.(\n row,\n draftSnapshot,\n );\n rollback =\n typeof optimisticResult === \"function\"\n ? optimisticResult\n : undefined;\n await editableRows.onSaveRow(row, draftSnapshot);\n editableRows.onSaveSuccess?.(row, draftSnapshot);\n React.startTransition(cancelEditing);\n return true;\n } catch (error) {\n try {\n rollback?.();\n } catch {\n // Preserve the original save error for the public error callbacks.\n }\n editableRows.onSaveError?.(error, row, draftSnapshot);\n onError?.(error, row);\n return false;\n } finally {\n setIsSavingEdit(false);\n }\n },\n [cancelEditing, editableRows, onError],\n );\n const clearEditError = React.useCallback((columnId: string) => {\n setEditErrors((current) => {\n if (!current[columnId] && !current._row) {\n return current;\n }\n const next = { ...current };\n delete next[columnId];\n delete next._row;\n return next;\n });\n }, []);\n\n return {\n cancelEditing,\n clearEditError,\n draftValues,\n editErrors,\n editingRowId,\n isEditDirty,\n isSavingEdit,\n saveEdit,\n setDraftValues,\n setEditingRowId,\n startEditingRow,\n };\n}\n\nfunction defaultDraftValues(\n row: TData,\n columns: Array>,\n) {\n return getDataTableLeafColumns(columns).reduce>(\n (draft, { column }) => {\n if (\"accessorKey\" in column && typeof column.accessorKey === \"string\") {\n draft[column.accessorKey] = (row as Record)[\n column.accessorKey\n ];\n }\n return draft;\n },\n {},\n );\n}\n\nexport function renderEditableCell(\n context: CellContext,\n draftValues: Record,\n setDraftValues: React.Dispatch>>,\n components: Pick,\n editing?: {\n cancel: () => void;\n commit: () => void;\n errors: Record;\n isDirty: boolean;\n isPending: boolean;\n cancelOnEscape: boolean;\n commitOnEnter: boolean;\n onValueChange: (columnId: string) => void;\n },\n) {\n const { Checkbox, Input } = components;\n const column = context.column.columnDef as DataTableColumnDef;\n const meta = column.meta;\n const accessorKey =\n \"accessorKey\" in column && typeof column.accessorKey === \"string\"\n ? column.accessorKey\n : context.column.id;\n const draftValue = draftValues[accessorKey];\n const error =\n editing?.errors[accessorKey] ??\n editing?.errors[context.column.id] ??\n editing?.errors._row;\n const setDraftValue = (value: unknown) => {\n editing?.onValueChange(accessorKey);\n setDraftValues((current) => ({\n ...current,\n [accessorKey]: value,\n }));\n };\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.key === \"Escape\" && editing?.cancelOnEscape) {\n event.preventDefault();\n editing.cancel();\n } else if (\n event.key === \"Enter\" &&\n !event.shiftKey &&\n editing?.commitOnEnter\n ) {\n event.preventDefault();\n editing.commit();\n }\n };\n\n if (meta?.renderEditCell) {\n return meta.renderEditCell({\n cell: context,\n row: context.row.original,\n value: context.getValue(),\n draftValue,\n error,\n isDirty: editing?.isDirty ?? false,\n isPending: editing?.isPending ?? false,\n setDraftValue,\n });\n }\n\n const inputType = getEditableInputType(meta?.type, draftValue);\n\n if (typeof draftValue === \"boolean\") {\n return (\n
    \n {\n setDraftValue(checked === true);\n }}\n onKeyDown={handleKeyDown}\n />\n {error ? (\n \n {error}\n \n ) : null}\n
    \n );\n }\n\n return (\n
    \n ) => {\n const rawValue = event.target.value;\n const parsedValue = meta?.parseEditValue\n ? meta.parseEditValue(rawValue, context)\n : parseEditableInputValue(rawValue, inputType, draftValue);\n setDraftValue(parsedValue);\n }}\n onKeyDown={handleKeyDown}\n />\n {error ? (\n \n {error}\n \n ) : null}\n
    \n );\n}\n\nfunction normalizeEditValidationErrors(\n value: void | string | Record,\n) {\n if (!value) {\n return {};\n }\n return typeof value === \"string\" ? { _row: value } : value;\n}\n\nfunction areDraftValuesEqual(\n left: Record,\n right: Record,\n) {\n const keys = new Set([...Object.keys(left), ...Object.keys(right)]);\n return Array.from(keys).every((key) => Object.is(left[key], right[key]));\n}\n\nfunction getEditableInputType(\n type: DataTableColumnType | undefined,\n value: unknown,\n) {\n if (type === \"numeric\" || typeof value === \"number\") {\n return \"number\";\n }\n\n if (type === \"date\" || value instanceof Date) {\n return \"datetime-local\";\n }\n\n return \"text\";\n}\n\nfunction getEditableInputValue(value: unknown, inputType = \"text\") {\n if (value == null) {\n return \"\";\n }\n\n if (value instanceof Date) {\n return inputType === \"datetime-local\"\n ? value.toISOString().slice(0, 16)\n : value.toISOString();\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n typeof value === \"bigint\"\n ) {\n return String(value);\n }\n\n return \"\";\n}\n\nfunction parseEditableInputValue(\n value: string,\n inputType: string,\n previousValue: unknown,\n) {\n if (inputType === \"number\") {\n return value === \"\" ? null : Number(value);\n }\n\n if (inputType === \"datetime-local\") {\n if (!value) {\n return null;\n }\n return previousValue instanceof Date ? new Date(value) : value;\n }\n\n return value;\n}\n","import * as React from \"react\";\n\nconst DataTableVirtualRowMeasurementContext = React.createContext<\n ((element: HTMLTableRowElement | null) => void) | undefined\n>(undefined);\n\nexport function DataTableVirtualRowMeasurementProvider({\n children,\n measureRow,\n}: {\n children: React.ReactNode;\n measureRow: ((element: HTMLTableRowElement | null) => void) | undefined;\n}) {\n return (\n \n {children}\n \n );\n}\n\nexport function useDataTableVirtualRowMeasurement():\n | ((element: HTMLTableRowElement | null) => void)\n | undefined {\n return React.useContext(DataTableVirtualRowMeasurementContext);\n}\n","import * as React from \"react\";\nimport { flexRender, type CellContext } from \"@tanstack/react-table\";\nimport { IconClock } from \"../icons\";\nimport type {\n DataTableCellOverflow,\n DataTableColumnDef,\n} from \"../types\";\nimport type { DataTableUiClassNames } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nexport function renderDataTableCellContent(\n context: CellContext,\n classNames?: DataTableUiClassNames,\n options?: {\n hasCustomCell?: boolean;\n useCustomOverflowDefaults?: boolean;\n },\n) {\n const column = context.column.columnDef as DataTableColumnDef;\n const meta = column.meta;\n const value = context.getValue();\n const hasCustomCell = options?.hasCustomCell ?? false;\n const renderedCellContent = hasCustomCell && column.cell\n ? flexRender(column.cell, context)\n : undefined;\n const hasComplexRenderedContent = isComplexRenderedCellContent(\n renderedCellContent,\n );\n const resolvedOverflow = resolveDataTableCellOverflow({\n context,\n useCustomOverflowDefaults: options?.useCustomOverflowDefaults ?? false,\n value,\n });\n\n if (meta?.type === \"date\" && !hasCustomCell) {\n return (\n \n \n {formatDateValue(value)}\n \n );\n }\n\n const content =\n renderedCellContent !== undefined &&\n renderedCellContent !== null &&\n renderedCellContent !== \"\"\n ? renderedCellContent\n : value == null || value === \"\"\n ? -\n : formatCellValue(value);\n\n return (\n *]:max-w-full [&>*]:min-w-0\",\n )}\n >\n {content}\n \n );\n}\n\nfunction resolveDataTableCellOverflow({\n context,\n useCustomOverflowDefaults,\n value,\n}: {\n context: CellContext;\n useCustomOverflowDefaults: boolean;\n value: unknown;\n}): DataTableCellOverflow {\n const column = context.column.columnDef as DataTableColumnDef;\n const resolvedOverflow =\n typeof column.meta?.overflow === \"function\"\n ? column.meta.overflow({\n row: context.row.original,\n value,\n })\n : column.meta?.overflow;\n\n if (resolvedOverflow) {\n return resolvedOverflow;\n }\n\n return useCustomOverflowDefaults ? \"clip\" : \"truncate\";\n}\n\nfunction getCellOverflowClassName(overflow: DataTableCellOverflow) {\n switch (overflow) {\n case \"clip\":\n return \"block overflow-hidden whitespace-nowrap\";\n case \"wrap\":\n return \"block overflow-hidden whitespace-normal break-words\";\n case \"visible\":\n return \"block overflow-visible whitespace-normal\";\n case \"truncate\":\n default:\n return \"block overflow-hidden text-ellipsis whitespace-nowrap\";\n }\n}\n\nfunction isComplexRenderedCellContent(content: React.ReactNode) {\n if (content == null) {\n return false;\n }\n\n return (\n React.isValidElement(content) ||\n Array.isArray(content) ||\n typeof content === \"object\"\n );\n}\n\nfunction formatDateValue(value: unknown) {\n if (typeof value === \"number\") {\n return new Date(value * 1000).toLocaleString();\n }\n\n if (typeof value === \"string\" && value) {\n return value;\n }\n\n return \"-\";\n}\n\nfunction formatCellValue(value: unknown) {\n if (value instanceof Date) {\n return value.toLocaleString();\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n typeof value === \"bigint\"\n ) {\n return String(value);\n }\n\n try {\n return JSON.stringify(value);\n } catch {\n return \"-\";\n }\n}\n","import * as React from \"react\";\nimport { flexRender, type Cell, type Row } from \"@tanstack/react-table\";\nimport type { RowPinningPosition } from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableDensity,\n DataTableProps,\n DataTableRowLoadingState,\n} from \"../types\";\nimport type { DataTableUiClassNames, DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { renderDataTableCellContent } from \"./data-table-cell-content\";\nimport type { DataTableColumnLayout } from \"./use-column-layout\";\nimport {\n getDensityCellClassName,\n isDataTableInteractiveTarget,\n isDataTableLoadingRow,\n} from \"./data-table-utils\";\nimport { renderEditableCell } from \"./use-row-editing\";\nimport { useDataTableVirtualRowMeasurement } from \"./data-table-virtual-row-measurement\";\nimport { cellAlignClassName, hideOnClassName } from \"../types\";\n\nexport type DataTableRowEditingContext = {\n cancel: () => void;\n clearError: (columnId: string) => void;\n commit: (row: TData) => void;\n errors: Record;\n isDirty: boolean;\n isPending: boolean;\n cancelOnEscape: boolean;\n commitOnEnter: boolean;\n};\n\ntype DataTableBodyRowProps = {\n columnLayouts: ReadonlyMap;\n components: Pick<\n DataTableUiKit,\n \"Checkbox\" | \"Input\" | \"Skeleton\" | \"TableCell\" | \"TableRow\"\n >;\n currentDensity: DataTableDensity;\n draftValues: Record;\n editingContext?: DataTableRowEditingContext;\n dragAndDrop: DataTableProps[\"dragAndDrop\"];\n explicitCustomCellColumnIds: ReadonlySet;\n getRowClassName: DataTableProps[\"getRowClassName\"];\n groupToggleLabel: string;\n gridMode: boolean;\n gridRowAriaIndex: number;\n gridRowIndex: number;\n activeGridCell: { row: number; column: number };\n cellSelectionEnabled: boolean;\n isGridCellSelected: (row: number, column: number) => boolean;\n onGridCellFocus: (cell: { row: number; column: number }) => void;\n onGridCellKeyDown: (\n event: React.KeyboardEvent,\n row: number,\n column: number,\n ) => void;\n onGridCellPointerDown: (\n event: React.PointerEvent,\n row: number,\n column: number,\n ) => void;\n onGridCellPointerEnter: (\n event: React.PointerEvent,\n row: number,\n column: number,\n ) => void;\n isDraggable: boolean;\n isDetailExpanded: boolean;\n isEditing: boolean;\n isExpanded: boolean;\n isInitialLoadingRow: boolean;\n isSelected: boolean;\n loadingState: DataTableRowLoadingState | undefined;\n onRowClick: DataTableProps[\"onRowClick\"];\n pinnedPosition?: Exclude;\n originalRow: TData;\n detailPanel: DataTableProps[\"detailPanel\"];\n row: Row;\n rowIndex: number;\n setDraftValues: React.Dispatch>>;\n stripedRows: boolean;\n uiClassNames: DataTableUiClassNames;\n visibleCells: Array>;\n visibleLeafColumnCount: number;\n};\n\nfunction DataTableBodyRowInner({\n columnLayouts,\n components,\n currentDensity,\n draftValues,\n editingContext,\n dragAndDrop,\n explicitCustomCellColumnIds,\n getRowClassName,\n groupToggleLabel,\n gridMode,\n gridRowAriaIndex,\n gridRowIndex,\n activeGridCell,\n cellSelectionEnabled,\n isGridCellSelected,\n onGridCellFocus,\n onGridCellKeyDown,\n onGridCellPointerDown,\n onGridCellPointerEnter,\n isDraggable,\n isDetailExpanded,\n isEditing,\n isExpanded,\n isInitialLoadingRow,\n isSelected,\n loadingState,\n onRowClick,\n pinnedPosition,\n originalRow,\n detailPanel,\n row,\n rowIndex,\n setDraftValues,\n stripedRows,\n uiClassNames,\n visibleCells,\n visibleLeafColumnCount,\n}: DataTableBodyRowProps) {\n const { Checkbox, Input, Skeleton, TableCell, TableRow } = components;\n const virtualRowMeasurement = useDataTableVirtualRowMeasurement();\n const measureElement = pinnedPosition ? undefined : virtualRowMeasurement;\n const firstDataColumnId = visibleCells.find(\n (cell) => !columnLayouts.get(cell.column.id)?.isUtilityColumn,\n )?.column.id;\n\n return (\n \n 0 ? row.depth : undefined\n }\n data-dtp-slot={\n pinnedPosition ? \"data-table-pinned-row\" : \"data-table-row\"\n }\n data-row-pinned={pinnedPosition}\n data-row-grouped={row.getIsGrouped() || undefined}\n draggable={isInitialLoadingRow ? false : isDraggable}\n data-loading={loadingState?.isLoading || undefined}\n data-row-index={isInitialLoadingRow ? undefined : rowIndex}\n data-row-parity={\n stripedRows && !isInitialLoadingRow\n ? rowIndex % 2 === 0\n ? \"odd\"\n : \"even\"\n : undefined\n }\n data-state={\n isInitialLoadingRow ? undefined : isSelected ? \"selected\" : undefined\n }\n role={gridMode ? \"row\" : undefined}\n aria-rowindex={gridMode ? gridRowAriaIndex : undefined}\n tabIndex={\n !gridMode && onRowClick && !isInitialLoadingRow ? 0 : undefined\n }\n className={cn(\n !isInitialLoadingRow &&\n getRowClassName?.(originalRow, {\n row: originalRow,\n rowId: row.id,\n rowIndex,\n isEditing,\n isExpanded,\n isLoading: Boolean(loadingState?.isLoading),\n isSelected,\n pinnedPosition: pinnedPosition ?? false,\n }),\n uiClassNames.row,\n pinnedPosition === \"top\" &&\n cn(\"border-b-2\", uiClassNames.rowPinnedTop),\n pinnedPosition === \"bottom\" &&\n cn(\"border-t-2\", uiClassNames.rowPinnedBottom),\n stripedRows &&\n !isInitialLoadingRow &&\n (rowIndex % 2 === 0\n ? uiClassNames.rowOdd\n : uiClassNames.rowEven),\n isSelected && !isInitialLoadingRow && uiClassNames.rowSelected,\n onRowClick && !isInitialLoadingRow && \"cursor-pointer\",\n isInitialLoadingRow && \"pointer-events-none\",\n )}\n onClick={(event: React.MouseEvent) => {\n if (isInitialLoadingRow) {\n return;\n }\n\n if (isDataTableInteractiveTarget(event.target, event.currentTarget)) {\n return;\n }\n\n if (gridMode && cellSelectionEnabled) return;\n\n void onRowClick?.({ row: originalRow, rowId: row.id });\n }}\n onKeyDown={(event: React.KeyboardEvent) => {\n if (\n isInitialLoadingRow ||\n !onRowClick ||\n (event.key !== \"Enter\" && event.key !== \" \")\n ) {\n return;\n }\n\n if (isDataTableInteractiveTarget(event.target, event.currentTarget)) {\n return;\n }\n\n event.preventDefault();\n void onRowClick({ row: originalRow, rowId: row.id });\n }}\n onDragStart={(event: React.DragEvent) => {\n if (isInitialLoadingRow) {\n return;\n }\n\n dragAndDrop?.onRowDragStart?.({\n row: originalRow,\n rowId: row.id,\n event,\n });\n }}\n onDragEnd={(event: React.DragEvent) => {\n if (isInitialLoadingRow) {\n return;\n }\n\n dragAndDrop?.onRowDragEnd?.({\n row: originalRow,\n rowId: row.id,\n event,\n });\n }}\n >\n {visibleCells.map((cell, columnIndex) => {\n const meta = (\n cell.column.columnDef as DataTableColumnDef\n ).meta;\n const cellContext = cell.getContext();\n const value = cell.getValue();\n const layout = columnLayouts.get(cell.column.id);\n const isSelectionColumn = layout?.isSelectionColumn ?? false;\n const isExpansionColumn = layout?.isExpansionColumn ?? false;\n const isActionsColumn = layout?.isActionsColumn ?? false;\n const isSpacerColumn = layout?.isSpacerColumn ?? false;\n const hideClassName = hideOnClassName(meta?.hideOn);\n const cellClassName =\n isInitialLoadingRow || isDataTableLoadingRow(originalRow)\n ? undefined\n : typeof meta?.cellClassName === \"function\"\n ? meta.cellClassName({\n row: originalRow,\n value,\n })\n : meta?.cellClassName;\n const isCellSelected =\n gridMode && cellSelectionEnabled &&\n !isInitialLoadingRow &&\n isGridCellSelected(gridRowIndex, columnIndex);\n\n return (\n onGridCellFocus({ row: gridRowIndex, column: columnIndex })\n : undefined\n }\n onKeyDown={\n gridMode\n ? (event: React.KeyboardEvent) => {\n if (event.target !== event.currentTarget) {\n if (event.key === \"Escape\") {\n event.preventDefault();\n event.currentTarget.focus();\n }\n return;\n }\n onGridCellKeyDown(event, gridRowIndex, columnIndex);\n }\n : undefined\n }\n onPointerDown={\n gridMode &&\n cellSelectionEnabled &&\n !layout?.isUtilityColumn &&\n !isSpacerColumn\n ? (event: React.PointerEvent) => {\n if (isDataTableInteractiveTarget(event.target, event.currentTarget)) return;\n event.currentTarget.focus();\n onGridCellPointerDown(event, gridRowIndex, columnIndex);\n }\n : undefined\n }\n onPointerEnter={\n gridMode &&\n cellSelectionEnabled &&\n !layout?.isUtilityColumn &&\n !isSpacerColumn\n ? (event: React.PointerEvent) => {\n if (isDataTableInteractiveTarget(event.target, event.currentTarget)) return;\n onGridCellPointerEnter(event, gridRowIndex, columnIndex);\n }\n : undefined\n }\n className={cn(\n \"border-b\",\n getDensityCellClassName(currentDensity),\n uiClassNames.cellBorder,\n isCellSelected && uiClassNames.cellSelected,\n layout?.utilityClassName,\n layout?.isSpacerColumn && \"border-b-0 bg-transparent p-0\",\n layout?.pinnedClassName,\n hideClassName,\n cellAlignClassName(cellContext),\n meta?.responsiveClassName,\n cellClassName,\n )}\n style={layout?.cellStyle}\n >\n 0 && cell.column.id === firstDataColumnId\n ? { paddingInlineStart: `${row.depth}rem` }\n : undefined\n }\n >\n {loadingState?.isLoading ? (\n (meta?.skeleton?.(cellContext) ??\n loadingState.skeleton ?? (\n \n ))\n ) : isEditing &&\n cell.column.id !== \"__select__\" &&\n cell.column.id !== \"__expand__\" &&\n cell.column.id !== \"__actions__\" ? (\n renderEditableCell(\n cellContext,\n draftValues,\n setDraftValues,\n {\n Checkbox,\n Input,\n },\n editingContext\n ? {\n cancel: editingContext.cancel,\n cancelOnEscape: editingContext.cancelOnEscape,\n commit: () => editingContext.commit(originalRow),\n commitOnEnter: editingContext.commitOnEnter,\n errors: editingContext.errors,\n isDirty: editingContext.isDirty,\n isPending: editingContext.isPending,\n onValueChange: editingContext.clearError,\n }\n : undefined,\n )\n ) : row.getIsGrouped() && cell.getIsPlaceholder() ? null : row.getIsGrouped() && cell.getIsGrouped() ? (\n row.toggleExpanded()}\n aria-expanded={row.getIsExpanded()}\n aria-label={groupToggleLabel}\n >\n \n {renderDataTableCellContent(cellContext, uiClassNames, {\n hasCustomCell:\n explicitCustomCellColumnIds.has(cell.column.id),\n useCustomOverflowDefaults:\n explicitCustomCellColumnIds.has(cell.column.id),\n })}\n \n \n ({row.subRows.length})\n \n \n ) : row.getIsGrouped() && cell.getIsAggregated() ? (\n cell.column.columnDef.aggregatedCell\n ? flexRender(cell.column.columnDef.aggregatedCell, cellContext)\n : renderDataTableCellContent(cellContext, uiClassNames, {\n hasCustomCell: false,\n useCustomOverflowDefaults: false,\n })\n ) : (\n renderDataTableCellContent(cellContext, uiClassNames, {\n hasCustomCell:\n explicitCustomCellColumnIds.has(cell.column.id) ||\n isSelectionColumn ||\n isExpansionColumn ||\n isActionsColumn ||\n isSpacerColumn,\n useCustomOverflowDefaults:\n explicitCustomCellColumnIds.has(cell.column.id) ||\n isSelectionColumn ||\n isExpansionColumn ||\n isActionsColumn ||\n isSpacerColumn,\n })\n )}\n \n \n );\n })}\n \n {!isInitialLoadingRow && detailPanel && isDetailExpanded ? (\n \n \n {detailPanel.render({\n row: originalRow,\n rowId: row.id,\n tableRow: row,\n })}\n \n \n ) : null}\n \n );\n}\n\nfunction areDataTableBodyRowsEqual(\n previous: DataTableBodyRowProps,\n next: DataTableBodyRowProps,\n) {\n return (\n previous.row.id === next.row.id &&\n previous.row.original === next.row.original &&\n previous.rowIndex === next.rowIndex &&\n previous.isSelected === next.isSelected &&\n previous.isInitialLoadingRow === next.isInitialLoadingRow &&\n previous.isEditing === next.isEditing &&\n (!previous.isEditing || previous.editingContext === next.editingContext) &&\n previous.isExpanded === next.isExpanded &&\n previous.isDraggable === next.isDraggable &&\n sameLoadingState(previous.loadingState, next.loadingState) &&\n sameVisibleCells(previous.visibleCells, next.visibleCells) &&\n previous.components === next.components &&\n sameColumnLayouts(\n previous.columnLayouts,\n next.columnLayouts,\n next.visibleCells,\n ) &&\n previous.currentDensity === next.currentDensity &&\n previous.detailPanel === next.detailPanel &&\n previous.isDetailExpanded === next.isDetailExpanded &&\n previous.pinnedPosition === next.pinnedPosition &&\n previous.onRowClick === next.onRowClick &&\n previous.dragAndDrop === next.dragAndDrop &&\n previous.getRowClassName === next.getRowClassName &&\n previous.groupToggleLabel === next.groupToggleLabel &&\n previous.gridMode === next.gridMode &&\n (!next.gridMode ||\n (previous.gridRowAriaIndex === next.gridRowAriaIndex &&\n previous.gridRowIndex === next.gridRowIndex &&\n previous.activeGridCell.row === next.activeGridCell.row &&\n previous.activeGridCell.column === next.activeGridCell.column &&\n previous.cellSelectionEnabled === next.cellSelectionEnabled &&\n previous.isGridCellSelected === next.isGridCellSelected &&\n previous.onGridCellFocus === next.onGridCellFocus &&\n previous.onGridCellKeyDown === next.onGridCellKeyDown &&\n previous.onGridCellPointerDown === next.onGridCellPointerDown &&\n previous.onGridCellPointerEnter === next.onGridCellPointerEnter)) &&\n previous.stripedRows === next.stripedRows &&\n previous.uiClassNames === next.uiClassNames &&\n previous.explicitCustomCellColumnIds === next.explicitCustomCellColumnIds &&\n (!previous.isEditing || previous.draftValues === next.draftValues)\n );\n}\n\nfunction sameLoadingState(\n previous: DataTableRowLoadingState | undefined,\n next: DataTableRowLoadingState | undefined,\n) {\n return (\n previous?.isLoading === next?.isLoading &&\n previous?.skeleton === next?.skeleton\n );\n}\n\nfunction sameVisibleCells(\n previous: Array>,\n next: Array>,\n) {\n return (\n previous.length === next.length &&\n previous.every((cell, index) => {\n const nextCell = next[index];\n return nextCell?.id === cell.id && nextCell.column.id === cell.column.id;\n })\n );\n}\n\nfunction sameColumnLayouts(\n previous: ReadonlyMap,\n next: ReadonlyMap,\n cells: Array>,\n) {\n return cells.every((cell) => {\n const previousLayout = previous.get(cell.column.id);\n const nextLayout = next.get(cell.column.id);\n\n return (\n previousLayout?.fixedSide === nextLayout?.fixedSide &&\n previousLayout?.isActionsColumn === nextLayout?.isActionsColumn &&\n previousLayout?.isExpansionColumn === nextLayout?.isExpansionColumn &&\n previousLayout?.isSelectionColumn === nextLayout?.isSelectionColumn &&\n previousLayout?.isSpacerColumn === nextLayout?.isSpacerColumn &&\n previousLayout?.isUtilityColumn === nextLayout?.isUtilityColumn &&\n previousLayout?.pinnedClassName === nextLayout?.pinnedClassName &&\n previousLayout?.utilityClassName === nextLayout?.utilityClassName &&\n sameCellStyle(previousLayout?.cellStyle, nextLayout?.cellStyle)\n );\n });\n}\n\nfunction sameCellStyle(\n previous: React.CSSProperties | undefined,\n next: React.CSSProperties | undefined,\n) {\n return (\n previous?.width === next?.width &&\n previous?.minWidth === next?.minWidth &&\n previous?.maxWidth === next?.maxWidth &&\n previous?.left === next?.left &&\n previous?.right === next?.right\n );\n}\n\nexport const DataTableBodyRow = React.memo(\n DataTableBodyRowInner,\n areDataTableBodyRowsEqual,\n) as typeof DataTableBodyRowInner;\n","import * as React from \"react\";\nimport { flexRender } from \"@tanstack/react-table\";\nimport { IconChevronDown, IconSelector } from \"../icons\";\nimport type { Header, SortingState } from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableColumnGroupDef,\n DataTableDensity,\n DataTableProps,\n} from \"../types\";\nimport type { DataTableUiClassNames, DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport type { DataTableColumnLayout } from \"./use-column-layout\";\nimport {\n getDensityHeaderClassName,\n isUtilityColumnId,\n} from \"./data-table-utils\";\nimport { headerAlignClassName, hideOnClassName } from \"../types\";\n\ntype DataTableHeaderCellProps = {\n columnGroupHeaderHeight: DataTableProps[\"columnGroupHeaderHeight\"];\n currentDensity: DataTableDensity;\n currentSorting: SortingState;\n dir: NonNullable[\"dir\"]>;\n draggedColumnIdRef: React.MutableRefObject;\n enableColumnReordering: boolean;\n enableColumnResizing: boolean;\n gridColumnIndex?: number;\n gridMode: boolean;\n header: Header;\n headerGroupHeaders: Array>;\n layout: DataTableColumnLayout;\n primeColumnForResize: (columnId: string, currentSize: number) => void;\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n resizeColumnLabel: string;\n resetColumnSize: (columnId: string) => void;\n // Rendered through flexRender inside the header def; carried as a prop so\n // the memo comparator re-renders the selection header when it changes.\n selectionState?: boolean | \"indeterminate\";\n TableHead: DataTableUiKit[\"TableHead\"];\n uiClassNames: DataTableUiClassNames;\n};\n\nfunction DataTableHeaderCellInner({\n columnGroupHeaderHeight,\n currentDensity,\n currentSorting,\n dir,\n draggedColumnIdRef,\n enableColumnReordering,\n enableColumnResizing,\n gridColumnIndex,\n gridMode,\n header,\n headerGroupHeaders,\n layout,\n primeColumnForResize,\n reorderColumn,\n resizeColumnLabel,\n resetColumnSize,\n TableHead,\n uiClassNames,\n}: DataTableHeaderCellProps) {\n const meta = (header.column.columnDef as DataTableColumnDef)\n .meta;\n const headerContentId = React.useId();\n const isColumnGroup =\n !header.isPlaceholder && header.subHeaders.length > 0;\n const groupDefinition = isColumnGroup\n ? (header.column.columnDef as DataTableColumnGroupDef)\n : undefined;\n const canSort = header.column.getCanSort();\n const sortingState = header.column.getIsSorted();\n const sortingIndex = currentSorting.findIndex(\n (sort) => sort.id === header.column.id,\n );\n const canReorderColumn =\n enableColumnReordering &&\n !header.isPlaceholder &&\n !isColumnGroup &&\n !layout.isUtilityColumn &&\n !layout.isSpacerColumn;\n const hideClassName = hideOnClassName(meta?.hideOn);\n\n return (\n ) => {\n draggedColumnIdRef.current = header.column.id;\n event.dataTransfer.effectAllowed = \"move\";\n }\n : undefined\n }\n onDragOver={\n canReorderColumn\n ? (event: React.DragEvent) => {\n event.preventDefault();\n event.dataTransfer.dropEffect = \"move\";\n }\n : undefined\n }\n onDrop={\n canReorderColumn\n ? (event: React.DragEvent) => {\n event.preventDefault();\n const sourceColumnId = draggedColumnIdRef.current;\n draggedColumnIdRef.current = null;\n if (sourceColumnId) {\n reorderColumn(sourceColumnId, header.column.id);\n }\n }\n : undefined\n }\n onKeyDown={\n canReorderColumn\n ? (event: React.KeyboardEvent) => {\n if (\n !event.altKey ||\n (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\")\n ) {\n return;\n }\n\n event.preventDefault();\n const headers = headerGroupHeaders.filter(\n (item) =>\n !isUtilityColumnId(item.column.id) &&\n item.column.id !== \"__spacer__\",\n );\n const currentIndex = headers.findIndex(\n (item) => item.column.id === header.column.id,\n );\n const target =\n headers[\n (event.key === \"ArrowLeft\") !== (dir === \"rtl\")\n ? currentIndex - 1\n : currentIndex + 1\n ];\n if (target) {\n reorderColumn(header.column.id, target.column.id);\n }\n }\n : undefined\n }\n >\n {header.isPlaceholder ? null : canSort ? (\n \n \n {flexRender(header.column.columnDef.header, header.getContext())}\n \n {sortingState ? (\n <>\n \n {currentSorting.length > 1 && sortingIndex >= 0 ? (\n \n {sortingIndex + 1}\n \n ) : null}\n \n ) : (\n \n )}\n \n ) : (\n layout.isUtilityColumn || layout.isSpacerColumn ? (\n flexRender(header.column.columnDef.header, header.getContext())\n ) : (\n \n {flexRender(header.column.columnDef.header, header.getContext())}\n \n )\n )}\n\n {enableColumnResizing &&\n !header.isPlaceholder &&\n header.column.getCanResize() ? (\n {\n for (const leafHeader of getResizableLeafHeaders(header)) {\n resetColumnSize(leafHeader.column.id);\n }\n }}\n onMouseDown={(event) => {\n for (const leafHeader of getResizableLeafHeaders(header)) {\n primeColumnForResize(\n leafHeader.column.id,\n leafHeader.getSize(),\n );\n }\n header.getResizeHandler()(event);\n }}\n onTouchStart={(event) => {\n for (const leafHeader of getResizableLeafHeaders(header)) {\n primeColumnForResize(\n leafHeader.column.id,\n leafHeader.getSize(),\n );\n }\n header.getResizeHandler()(event);\n }}\n onKeyDown={(event) => {\n if (event.altKey) {\n return;\n }\n if (event.key === \"Home\") {\n event.preventDefault();\n for (const leafHeader of getResizableLeafHeaders(header)) {\n resetColumnSize(leafHeader.column.id);\n }\n return;\n }\n if (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\") {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n const grows =\n (event.key === \"ArrowRight\") !== (dir === \"rtl\");\n resizeHeaderBy(\n header,\n (grows ? 1 : -1) * (event.shiftKey ? 25 : 10),\n );\n }}\n className={cn(\n \"absolute inset-y-0 z-50 h-full w-3 cursor-col-resize touch-none select-none ltr:right-0 ltr:translate-x-1/2 rtl:left-0 rtl:-translate-x-1/2 after:absolute after:top-0 after:left-1/2 after:h-full after:w-px after:-translate-x-1/2\",\n uiClassNames.resizeHandle ??\n \"after:bg-current after:opacity-20 hover:after:opacity-70\",\n header.column.getIsResizing() &&\n (uiClassNames.resizeHandleActive ?? \"after:opacity-100\"),\n )}\n />\n ) : null}\n \n );\n}\n\nfunction areDataTableHeaderCellsEqual(\n previous: DataTableHeaderCellProps,\n next: DataTableHeaderCellProps,\n) {\n return (\n previous.header.id === next.header.id &&\n previous.header.column.id === next.header.column.id &&\n previous.header.column.columnDef === next.header.column.columnDef &&\n previous.header.colSpan === next.header.colSpan &&\n previous.header.isPlaceholder === next.header.isPlaceholder &&\n sameSubHeaders(previous.header, next.header) &&\n previous.currentDensity === next.currentDensity &&\n previous.columnGroupHeaderHeight === next.columnGroupHeaderHeight &&\n previous.dir === next.dir &&\n previous.enableColumnReordering === next.enableColumnReordering &&\n previous.enableColumnResizing === next.enableColumnResizing &&\n previous.gridMode === next.gridMode &&\n previous.gridColumnIndex === next.gridColumnIndex &&\n previous.TableHead === next.TableHead &&\n previous.uiClassNames === next.uiClassNames &&\n previous.draggedColumnIdRef === next.draggedColumnIdRef &&\n previous.primeColumnForResize === next.primeColumnForResize &&\n previous.reorderColumn === next.reorderColumn &&\n previous.resizeColumnLabel === next.resizeColumnLabel &&\n previous.resetColumnSize === next.resetColumnSize &&\n previous.selectionState === next.selectionState &&\n sameSorting(previous.currentSorting, next.currentSorting) &&\n sameHeaderGroupHeaders(\n previous.headerGroupHeaders,\n next.headerGroupHeaders,\n ) &&\n sameHeaderLayout(previous.layout, next.layout)\n );\n}\n\nfunction getResizableLeafHeaders(header: Header) {\n if (!header.subHeaders.length) {\n return [header];\n }\n\n return header\n .getLeafHeaders()\n .filter((leafHeader) => !leafHeader.subHeaders.length);\n}\n\nfunction getHeaderMinimumSize(header: Header) {\n return getResizableLeafHeaders(header).reduce(\n (total, leafHeader) =>\n total + (leafHeader.column.columnDef.minSize ?? 20),\n 0,\n );\n}\n\nfunction getHeaderMaximumSize(header: Header) {\n return getResizableLeafHeaders(header).reduce(\n (total, leafHeader) =>\n total + (leafHeader.column.columnDef.maxSize ?? Number.MAX_SAFE_INTEGER),\n 0,\n );\n}\n\nfunction resizeHeaderBy(\n header: Header,\n delta: number,\n) {\n const leafHeaders = getResizableLeafHeaders(header);\n const deltaPerLeaf = delta / leafHeaders.length;\n header.getContext().table.setColumnSizing((current) => {\n const next = { ...current };\n\n for (const leafHeader of leafHeaders) {\n const column = leafHeader.column;\n const minimum = column.columnDef.minSize ?? 20;\n const maximum =\n column.columnDef.maxSize ?? Number.MAX_SAFE_INTEGER;\n next[column.id] = Math.min(\n maximum,\n Math.max(minimum, column.getSize() + deltaPerLeaf),\n );\n }\n\n return next;\n });\n}\n\nfunction sameSubHeaders(\n previous: Header,\n next: Header,\n) {\n return (\n previous.subHeaders.length === next.subHeaders.length &&\n previous.subHeaders.every(\n (header, index) => next.subHeaders[index]?.id === header.id,\n )\n );\n}\n\nfunction sameSorting(previous: SortingState, next: SortingState) {\n return (\n previous.length === next.length &&\n previous.every((sort, index) => {\n const nextSort = next[index];\n return nextSort?.id === sort.id && nextSort.desc === sort.desc;\n })\n );\n}\n\nfunction sameHeaderGroupHeaders(\n previous: Array>,\n next: Array>,\n) {\n return (\n previous.length === next.length &&\n previous.every((header, index) => next[index]?.id === header.id)\n );\n}\n\nfunction sameHeaderLayout(\n previous: DataTableColumnLayout,\n next: DataTableColumnLayout,\n) {\n return (\n previous.fixedSide === next.fixedSide &&\n previous.isSpacerColumn === next.isSpacerColumn &&\n previous.isUtilityColumn === next.isUtilityColumn &&\n previous.pinnedClassName === next.pinnedClassName &&\n previous.utilityClassName === next.utilityClassName &&\n previous.headerStyle?.width === next.headerStyle?.width &&\n previous.headerStyle?.minWidth === next.headerStyle?.minWidth &&\n previous.headerStyle?.maxWidth === next.headerStyle?.maxWidth &&\n previous.headerStyle?.left === next.headerStyle?.left &&\n previous.headerStyle?.right === next.headerStyle?.right\n );\n}\n\nexport const DataTableHeaderCell = React.memo(\n DataTableHeaderCellInner,\n areDataTableHeaderCellsEqual,\n) as typeof DataTableHeaderCellInner;\n","import * as React from \"react\";\nimport type {\n Column,\n ExpandedState,\n Header,\n RowPinningPosition,\n Row,\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableDensity,\n DataTableCellSelection,\n DataTableProps,\n DataTableRowLoadingState,\n} from \"../types\";\nimport type { DataTableUiClassNames, DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport {\n DataTableBodyRow,\n type DataTableRowEditingContext,\n} from \"./data-table-body-row\";\nimport { DataTableHeaderCell } from \"./data-table-header-cell\";\nimport type { DataTableColumnLayout } from \"./use-column-layout\";\nimport { isDataTableLoadingRow, isUtilityColumnId } from \"./data-table-utils\";\nimport type { DataTableLabels } from \"../types\";\n\nexport type DataTableTablePanelProps = {\n ariaDescribedBy: string | undefined;\n ariaLabelledBy: string | undefined;\n bodyRowComponents: Pick<\n DataTableUiKit,\n \"Checkbox\" | \"Input\" | \"Skeleton\" | \"TableCell\" | \"TableRow\"\n >;\n cellSelection: DataTableCellSelection | null;\n cellSelectionEnabled: boolean;\n columnLayouts: ReadonlyMap;\n columnGroupHeaderHeight: DataTableProps[\"columnGroupHeaderHeight\"];\n currentDensity: DataTableDensity;\n currentDetailExpanded: ExpandedState;\n currentSorting: DataTableProps[\"sorting\"];\n dir: NonNullable[\"dir\"]>;\n DataTableEmptyState: React.ElementType;\n dragAndDrop: DataTableProps[\"dragAndDrop\"];\n draggedColumnIdRef: React.RefObject;\n draftValues: Record;\n editingRowId: string | null;\n editingContext?: DataTableRowEditingContext;\n emptyNode: React.ReactNode;\n enableColumnReordering: boolean;\n enableColumnResizing: boolean;\n explicitCustomCellColumnIds: ReadonlySet;\n fillMinWidth: number;\n flexGrow: boolean;\n gridMode: boolean;\n gridPageSize?: number;\n gridRowOffset: number;\n onGridActiveRowIndexChange?: (rowIndex: number) => void;\n onCellSelectionChange: (selection: DataTableCellSelection | null) => void;\n getColumnLayout: (columnId: string) => DataTableColumnLayout;\n getRowClassName: DataTableProps[\"getRowClassName\"];\n getRowLoadingState: DataTableProps[\"getRowLoadingState\"];\n infiniteScroll: DataTableProps[\"infiniteScroll\"];\n layoutMode: \"fill\" | \"fit\";\n localSearchValue: string;\n onRowClick: DataTableProps[\"onRowClick\"];\n primeColumnForResize: (columnId: string, currentSize: number) => void;\n renderedRows: Array>;\n detailPanel: DataTableProps[\"detailPanel\"];\n topPinnedRows: Array>;\n bottomPinnedRows: Array>;\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n resetColumnSize: (columnId: string) => void;\n resolvedLabels: DataTableLabels;\n rowsToRender: Array<{ row: Row; rowIndex: number }>;\n ScrollArea: DataTableUiKit[\"ScrollArea\"];\n ScrollBar: DataTableUiKit[\"ScrollBar\"];\n sentinelRef: React.RefObject;\n setDraftValues: React.Dispatch>>;\n shouldRenderInitialLoading: boolean;\n stateOverlayNode?: React.ReactNode;\n stickyHeader: boolean;\n stripedRows: boolean;\n summaryRows: NonNullable[\"summaryRows\"]>;\n table: TanStackTable;\n tableClassName: string | undefined;\n tableContainerClassName: string | undefined;\n Table: DataTableUiKit[\"Table\"];\n TableBody: DataTableUiKit[\"TableBody\"];\n TableCell: DataTableUiKit[\"TableCell\"];\n TableFooter: DataTableUiKit[\"TableFooter\"];\n TableHead: DataTableUiKit[\"TableHead\"];\n TableHeader: DataTableUiKit[\"TableHeader\"];\n TableRow: DataTableUiKit[\"TableRow\"];\n tableScrollContainerRef: React.RefObject;\n tableScrollElement?: HTMLElement | null;\n totalRowCount?: number;\n uiClassNames: DataTableUiClassNames;\n viewportHeight?: number;\n virtualization?: DataTableProps[\"virtualization\"];\n virtualPaddingBottom: number;\n virtualPaddingTop: number;\n visibleLeafColumnCount: number;\n visibleLeafColumns: Array>;\n};\n\nexport function DataTableTablePanel({\n ariaDescribedBy,\n ariaLabelledBy,\n bodyRowComponents,\n cellSelection,\n cellSelectionEnabled,\n columnLayouts,\n columnGroupHeaderHeight,\n currentDensity,\n currentDetailExpanded,\n currentSorting = [],\n dir,\n DataTableEmptyState,\n dragAndDrop,\n draggedColumnIdRef,\n draftValues,\n editingRowId,\n editingContext,\n emptyNode,\n enableColumnReordering,\n enableColumnResizing,\n explicitCustomCellColumnIds,\n fillMinWidth,\n flexGrow,\n gridMode,\n gridPageSize,\n gridRowOffset,\n onGridActiveRowIndexChange,\n onCellSelectionChange,\n getColumnLayout,\n getRowClassName,\n getRowLoadingState,\n infiniteScroll,\n layoutMode,\n localSearchValue,\n onRowClick,\n primeColumnForResize,\n renderedRows,\n detailPanel,\n topPinnedRows,\n bottomPinnedRows,\n reorderColumn,\n resetColumnSize,\n resolvedLabels,\n rowsToRender,\n ScrollArea,\n ScrollBar,\n sentinelRef,\n setDraftValues,\n shouldRenderInitialLoading,\n stateOverlayNode,\n stickyHeader,\n stripedRows,\n summaryRows,\n table,\n tableClassName,\n tableContainerClassName,\n Table,\n TableBody,\n TableCell,\n TableFooter = \"tfoot\",\n TableHead,\n TableHeader,\n TableRow,\n tableScrollContainerRef,\n tableScrollElement,\n totalRowCount,\n uiClassNames,\n virtualPaddingBottom,\n virtualPaddingTop,\n visibleLeafColumnCount,\n visibleLeafColumns,\n}: DataTableTablePanelProps) {\n const selectionState: boolean | \"indeterminate\" =\n table.getIsAllPageRowsSelected()\n ? true\n : table.getIsSomePageRowsSelected()\n ? \"indeterminate\"\n : false;\n const filteredRows = table.getFilteredRowModel().rows;\n const summarySourceRows = React.useMemo(\n () =>\n summaryRows.length\n ? filteredRows.map((row) => row.original)\n : [],\n [filteredRows, summaryRows.length],\n );\n const headerRowCount = table.getHeaderGroups().length;\n const displayRowCount =\n topPinnedRows.length + renderedRows.length + bottomPinnedRows.length;\n const [activeCell, setActiveCell] = React.useState({ row: 0, column: 0 });\n const shouldRestoreGridFocusRef = React.useRef(false);\n const pointerSelectingRef = React.useRef(false);\n const gridRows = React.useMemo(\n () => [...topPinnedRows, ...renderedRows, ...bottomPinnedRows],\n [bottomPinnedRows, renderedRows, topPinnedRows],\n );\n const getGridCoordinate = React.useCallback(\n (rowIndex: number, columnIndex: number) => {\n const row = gridRows[rowIndex];\n const column = visibleLeafColumns[columnIndex];\n return row &&\n column &&\n !isUtilityColumnId(column.id) &&\n column.id !== \"__spacer__\"\n ? { rowId: row.id, columnId: column.id }\n : undefined;\n },\n [gridRows, visibleLeafColumns],\n );\n const selectedBounds = React.useMemo(() => {\n if (!cellSelection) return undefined;\n const anchorRow = gridRows.findIndex((row) => row.id === cellSelection.anchor.rowId);\n const focusRow = gridRows.findIndex((row) => row.id === cellSelection.focus.rowId);\n const anchorColumn = visibleLeafColumns.findIndex(\n (column) => column.id === cellSelection.anchor.columnId,\n );\n const focusColumn = visibleLeafColumns.findIndex(\n (column) => column.id === cellSelection.focus.columnId,\n );\n if (anchorRow < 0 || focusRow < 0 || anchorColumn < 0 || focusColumn < 0) return undefined;\n return {\n firstRow: Math.min(anchorRow, focusRow),\n lastRow: Math.max(anchorRow, focusRow),\n firstColumn: Math.min(anchorColumn, focusColumn),\n lastColumn: Math.max(anchorColumn, focusColumn),\n };\n }, [cellSelection, gridRows, visibleLeafColumns]);\n const isGridCellSelected = React.useCallback(\n (rowIndex: number, columnIndex: number) =>\n Boolean(\n selectedBounds &&\n rowIndex >= selectedBounds.firstRow &&\n rowIndex <= selectedBounds.lastRow &&\n columnIndex >= selectedBounds.firstColumn &&\n columnIndex <= selectedBounds.lastColumn,\n ),\n [selectedBounds],\n );\n const handleGridCellFocus = React.useCallback(\n (cell: { row: number; column: number }) => {\n shouldRestoreGridFocusRef.current = true;\n setActiveCell(cell);\n },\n [],\n );\n const selectGridCell = React.useCallback(\n (rowIndex: number, columnIndex: number, extend: boolean) => {\n if (!cellSelectionEnabled) return;\n const focus = getGridCoordinate(rowIndex, columnIndex);\n if (!focus) return;\n const anchor =\n extend && cellSelection?.anchor\n ? cellSelection.anchor\n : focus;\n onCellSelectionChange({ anchor, focus });\n },\n [cellSelection, cellSelectionEnabled, getGridCoordinate, onCellSelectionChange],\n );\n const handleGridCellPointerDown = React.useCallback(\n (event: React.PointerEvent, rowIndex: number, columnIndex: number) => {\n if (!cellSelectionEnabled || event.button !== 0) return;\n pointerSelectingRef.current = true;\n selectGridCell(rowIndex, columnIndex, event.shiftKey);\n },\n [cellSelectionEnabled, selectGridCell],\n );\n const handleGridCellPointerEnter = React.useCallback(\n (event: React.PointerEvent, rowIndex: number, columnIndex: number) => {\n if (!cellSelectionEnabled || !pointerSelectingRef.current || event.buttons !== 1) return;\n selectGridCell(rowIndex, columnIndex, true);\n },\n [cellSelectionEnabled, selectGridCell],\n );\n React.useEffect(() => {\n const stopSelecting = () => { pointerSelectingRef.current = false; };\n window.addEventListener(\"pointerup\", stopSelecting);\n return () => window.removeEventListener(\"pointerup\", stopSelecting);\n }, []);\n\n // Keep focus on the roving cell after sorting, filtering, or a virtual row\n // range changes. A missing target is normal while a virtualizer is rendering.\n React.useEffect(() => {\n if (!gridMode) return;\n onGridActiveRowIndexChange?.(activeCell.row);\n const frame = requestAnimationFrame(() => {\n const cells = tableScrollContainerRef.current?.querySelectorAll(\n '[data-dtp-grid-cell=\"true\"]',\n );\n const target = Array.from(cells ?? []).find(\n (cell) =>\n Number(cell.dataset.gridRowIndex) === activeCell.row &&\n Number(cell.dataset.gridColumnIndex) === activeCell.column,\n );\n if (target && shouldRestoreGridFocusRef.current) {\n target.focus();\n }\n });\n return () => cancelAnimationFrame(frame);\n }, [activeCell, gridMode, onGridActiveRowIndexChange, tableScrollContainerRef]);\n\n const moveGridFocus = React.useCallback(\n (event: React.KeyboardEvent, row: number, column: number) => {\n if (event.defaultPrevented || event.target !== event.currentTarget) return;\n const pageRows = Math.max(\n 1,\n gridPageSize ?? (\n Math.floor(\n (tableScrollElement?.clientHeight || 0) /\n Math.max(1, (tableScrollElement?.querySelector(\"tr\") as HTMLElement | null)?.offsetHeight || 48),\n ) || 10),\n );\n const lastRow = Math.max(0, displayRowCount - 1);\n const lastColumn = Math.max(0, visibleLeafColumnCount - 1);\n let nextRow = row;\n let nextColumn = column;\n switch (event.key) {\n case \"ArrowUp\": nextRow--; break;\n case \"ArrowDown\": nextRow++; break;\n case \"ArrowLeft\": nextColumn--; break;\n case \"ArrowRight\": nextColumn++; break;\n case \"Home\":\n if (event.ctrlKey || event.metaKey) { nextRow = 0; nextColumn = 0; } else nextColumn = 0;\n break;\n case \"End\":\n if (event.ctrlKey || event.metaKey) { nextRow = lastRow; nextColumn = lastColumn; } else nextColumn = lastColumn;\n break;\n case \"PageUp\": nextRow -= pageRows; break;\n case \"PageDown\": nextRow += pageRows; break;\n default: return;\n }\n event.preventDefault();\n const nextCell = {\n row: Math.min(lastRow, Math.max(0, nextRow)),\n column: Math.min(lastColumn, Math.max(0, nextColumn)),\n };\n setActiveCell(nextCell);\n if (event.shiftKey && cellSelectionEnabled) {\n const focus = getGridCoordinate(nextCell.row, nextCell.column);\n const anchor =\n cellSelection?.anchor ?? getGridCoordinate(row, column) ?? focus;\n if (anchor && focus) onCellSelectionChange({ anchor, focus });\n }\n },\n [\n cellSelection,\n cellSelectionEnabled,\n displayRowCount,\n getGridCoordinate,\n gridPageSize,\n onCellSelectionChange,\n tableScrollElement,\n visibleLeafColumnCount,\n ],\n );\n const renderBodyRow = (\n row: Row,\n rowIndex: number,\n pinnedPosition?: Exclude,\n ) => {\n const originalRow = row.original;\n const isInitialLoadingRow = isDataTableLoadingRow(originalRow);\n const loadingState = isInitialLoadingRow\n ? { isLoading: true }\n : getRowLoadingState?.(originalRow, rowIndex);\n const resolvedLoadingState: DataTableRowLoadingState | undefined =\n typeof loadingState === \"boolean\"\n ? { isLoading: loadingState }\n : loadingState;\n const isDraggable = isInitialLoadingRow\n ? false\n : (dragAndDrop?.getRowDraggable?.(originalRow) ?? false);\n\n return (\n \n );\n };\n\n return (\n \n \n \n
    \n \n \n {table.getVisibleLeafColumns().map((column) => {\n const layout = getColumnLayout(column.id);\n return ;\n })}\n \n \n {table.getHeaderGroups().map((headerGroup) => (\n \n {headerGroup.headers.map((header) => (\n column.id === header.column.id,\n ) + 1\n }\n />\n ))}\n \n ))}\n \n \n {topPinnedRows.length || renderedRows.length || bottomPinnedRows.length ? (\n <>\n {topPinnedRows.map((row, index) =>\n renderBodyRow(row, index, \"top\"),\n )}\n {virtualPaddingTop > 0 ? (\n \n \n \n ) : null}\n {rowsToRender.map(({ row, rowIndex }) =>\n renderBodyRow(row, rowIndex + topPinnedRows.length),\n )}\n {virtualPaddingBottom > 0 ? (\n \n \n \n ) : null}\n {bottomPinnedRows.map((row, index) =>\n renderBodyRow(\n row,\n topPinnedRows.length + renderedRows.length + index,\n \"bottom\",\n ),\n )}\n \n ) : (\n \n \n
    \n {emptyNode ?? (\n \n )}\n
    \n \n
    \n )}\n
    \n {summaryRows.length ? (\n \n {summaryRows.map((summaryRow, summaryIndex) => (\n \n {visibleLeafColumns.map((column, index) => {\n const content =\n summaryRow.cells[column.id] ??\n (index === 0 ? summaryRow.label : null);\n return (\n \n {typeof content === \"function\"\n ? content({\n rows: summarySourceRows,\n columnId: column.id,\n })\n : content}\n \n );\n })}\n \n ))}\n \n ) : null}\n \n
    \n\n {infiniteScroll?.enabled &&\n renderedRows.length &&\n !shouldRenderInitialLoading ? (\n
    \n
    \n
    \n ) : null}\n \n \n
    \n {stateOverlayNode}\n \n );\n}\n\nfunction getHeaderLayout(\n header: Header,\n getColumnLayout: (columnId: string) => DataTableColumnLayout,\n) {\n const columnLayout = getColumnLayout(header.column.id);\n if (header.isPlaceholder || !header.subHeaders.length) {\n return columnLayout;\n }\n\n const leafLayouts = header\n .getLeafHeaders()\n .filter((leafHeader) => !leafHeader.subHeaders.length)\n .map((leafHeader) => getColumnLayout(leafHeader.column.id));\n const fixedSide = leafLayouts[0]?.fixedSide;\n\n if (\n !fixedSide ||\n !leafLayouts.every((layout) => layout.fixedSide === fixedSide)\n ) {\n return columnLayout;\n }\n\n const edgeLayout =\n fixedSide === \"left\" ? leafLayouts[0] : leafLayouts.at(-1);\n\n return {\n ...columnLayout,\n fixedSide,\n headerStyle: edgeLayout?.headerStyle\n ? {\n left: edgeLayout.headerStyle.left,\n right: edgeLayout.headerStyle.right,\n }\n : undefined,\n pinnedClassName: edgeLayout?.pinnedClassName,\n };\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-QFLMV3CT.js b/dist/chunk-QFLMV3CT.js new file mode 100644 index 0000000..07323ad --- /dev/null +++ b/dist/chunk-QFLMV3CT.js @@ -0,0 +1,2 @@ +import {a as a$1}from'./chunk-K7SNDVV2.js';import {a}from'./chunk-YPKN2W27.js';import {j}from'./chunk-JNI3CH7M.js';function b(r){return j(r,{CardPanel:a$1,TablePanel:a})}export{b as a};//# sourceMappingURL=chunk-QFLMV3CT.js.map +//# sourceMappingURL=chunk-QFLMV3CT.js.map \ No newline at end of file diff --git a/dist/chunk-BQSRJQTY.js.map b/dist/chunk-QFLMV3CT.js.map similarity index 92% rename from dist/chunk-BQSRJQTY.js.map rename to dist/chunk-QFLMV3CT.js.map index 6f5ad32..db44c7c 100644 --- a/dist/chunk-BQSRJQTY.js.map +++ b/dist/chunk-QFLMV3CT.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/core/data-table/create-virtual-data-table.ts"],"names":["createVirtualDataTable","ui","createDataTableWithPanels","DataTableVirtualCardPanel","DataTableVirtualTablePanel"],"mappings":"mHAKO,SAASA,CAAAA,CAAuBC,CAAAA,CAAoB,CACzD,OAAOC,CAAAA,CAA0BD,CAAAA,CAAI,CACnC,SAAA,CAAWE,GAAAA,CACX,UAAA,CAAYC,CACd,CAAC,CACH","file":"chunk-BQSRJQTY.js","sourcesContent":["import type { DataTableUiKit } from \"../ui-kit\";\nimport { createDataTableWithPanels } from \"./create-data-table\";\nimport { DataTableVirtualCardPanel } from \"./data-table-virtual-card-panel\";\nimport { DataTableVirtualTablePanel } from \"./data-table-virtual-table-panel\";\n\nexport function createVirtualDataTable(ui: DataTableUiKit) {\n return createDataTableWithPanels(ui, {\n CardPanel: DataTableVirtualCardPanel,\n TablePanel: DataTableVirtualTablePanel,\n });\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../src/core/data-table/create-virtual-data-table.ts"],"names":["createVirtualDataTable","ui","createDataTableWithPanels","DataTableVirtualCardPanel","DataTableVirtualTablePanel"],"mappings":"mHAKO,SAASA,CAAAA,CAAuBC,CAAAA,CAAoB,CACzD,OAAOC,CAAAA,CAA0BD,CAAAA,CAAI,CACnC,SAAA,CAAWE,GAAAA,CACX,UAAA,CAAYC,CACd,CAAC,CACH","file":"chunk-QFLMV3CT.js","sourcesContent":["import type { DataTableUiKit } from \"../ui-kit\";\nimport { createDataTableWithPanels } from \"./create-data-table\";\nimport { DataTableVirtualCardPanel } from \"./data-table-virtual-card-panel\";\nimport { DataTableVirtualTablePanel } from \"./data-table-virtual-table-panel\";\n\nexport function createVirtualDataTable(ui: DataTableUiKit) {\n return createDataTableWithPanels(ui, {\n CardPanel: DataTableVirtualCardPanel,\n TablePanel: DataTableVirtualTablePanel,\n });\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-NLQJKISS.js b/dist/chunk-THSY57Y7.js similarity index 77% rename from dist/chunk-NLQJKISS.js rename to dist/chunk-THSY57Y7.js index 8ec7bc4..b654a3f 100644 --- a/dist/chunk-NLQJKISS.js +++ b/dist/chunk-THSY57Y7.js @@ -1,2 +1,2 @@ -import {d,z,x,w,y,j}from'./chunk-4P45F2OY.js';import {c,t,i}from'./chunk-CVR2ZXHQ.js';import {h,g,f}from'./chunk-KDHJA6AH.js';import {a}from'./chunk-XTVBESM5.js';import*as N from'react';import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {flexRender}from'@tanstack/react-table';function dt({columns:e,editableRows:a,onError:i}){let[o,n]=N.useState(null),[u,D]=N.useState({}),T=N.useRef(u),[R,t]=N.useState({}),[I,m]=N.useState({}),[x,L]=N.useState(false),B=N.useMemo(()=>!xa(u,R),[u,R]);N.useEffect(()=>{T.current=u;},[u]);let h=N.useCallback(()=>{n(null),D({}),m({}),t({});},[]),V=N.useCallback((k,f)=>{let S=a?.getInitialValues?.(k)??Ia(k,e);t({...S}),D(S),m({}),n(f);},[e,a]),M=N.useCallback(async k=>{if(!a)return false;L(true);let f={...T.current},S;try{let A=await a.validateRow?.(k,f),r=La(A);if(Object.keys(r).length>0)return m(r),!1;m({});let K=a.onOptimisticUpdate?.(k,f);return S=typeof K=="function"?K:void 0,await a.onSaveRow(k,f),a.onSaveSuccess?.(k,f),N.startTransition(h),!0}catch(A){try{S?.();}catch{}return a.onSaveError?.(A,k,f),i?.(A,k),false}finally{L(false);}},[h,a,i]),v=N.useCallback(k=>{m(f=>{if(!f[k]&&!f._row)return f;let S={...f};return delete S[k],delete S._row,S});},[]);return {cancelEditing:h,clearEditError:v,draftValues:u,editErrors:I,editingRowId:o,isEditDirty:B,isSavingEdit:x,saveEdit:M,setDraftValues:D,setEditingRowId:n,startEditingRow:V}}function Ia(e,a){return j(a).reduce((i,{column:o})=>("accessorKey"in o&&typeof o.accessorKey=="string"&&(i[o.accessorKey]=e[o.accessorKey]),i),{})}function fa(e,a,i,o,n){let{Checkbox:u,Input:D}=o,T=e.column.columnDef,R=T.meta,t="accessorKey"in T&&typeof T.accessorKey=="string"?T.accessorKey:e.column.id,I=a[t],m=n?.errors[t]??n?.errors[e.column.id]??n?.errors._row,x=h=>{n?.onValueChange(t),i(V=>({...V,[t]:h}));},L=h=>{h.key==="Escape"&&n?.cancelOnEscape?(h.preventDefault(),n.cancel()):h.key==="Enter"&&!h.shiftKey&&n?.commitOnEnter&&(h.preventDefault(),n.commit());};if(R?.renderEditCell)return R.renderEditCell({cell:e,row:e.row.original,value:e.getValue(),draftValue:I,error:m,isDirty:n?.isDirty??false,isPending:n?.isPending??false,setDraftValue:x});let B=Aa(R?.type,I);return typeof I=="boolean"?jsxs("div",{className:"min-w-0",children:[jsx(u,{"aria-invalid":!!m||void 0,checked:I,disabled:n?.isPending,onCheckedChange:h=>{x(h===true);},onKeyDown:L}),m?jsx("span",{className:"mt-1 block text-xs text-destructive",role:"alert",children:m}):null]}):jsxs("div",{className:"min-w-0",children:[jsx(D,{"aria-invalid":!!m||void 0,disabled:n?.isPending,type:B,value:R?.formatEditValue?R.formatEditValue(I,e):Ga(I,B),onChange:h=>{let V=h.target.value,M=R?.parseEditValue?R.parseEditValue(V,e):Ka(V,B,I);x(M);},onKeyDown:L}),m?jsx("span",{className:"mt-1 block text-xs text-destructive",role:"alert",children:m}):null]})}function La(e){return e?typeof e=="string"?{_row:e}:e:{}}function xa(e,a){let i=new Set([...Object.keys(e),...Object.keys(a)]);return Array.from(i).every(o=>Object.is(e[o],a[o]))}function Aa(e,a){return e==="numeric"||typeof a=="number"?"number":e==="date"||a instanceof Date?"datetime-local":"text"}function Ga(e,a="text"){return e==null?"":e instanceof Date?a==="datetime-local"?e.toISOString().slice(0,16):e.toISOString():typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint"?String(e):""}function Ka(e,a,i){return a==="number"?e===""?null:Number(e):a==="datetime-local"?e?i instanceof Date?new Date(e):e:null:e}var ba=N.createContext(void 0);function mt({children:e,measureRow:a}){return jsx(ba.Provider,{value:a,children:e})}function ga(){return N.useContext(ba)}function Ae(e,a$1,i$1){let o=e.column.columnDef,n=o.meta,u=e.getValue(),D=i$1?.hasCustomCell??false,T=D&&o.cell?flexRender(o.cell,e):void 0,R=Oa(T),t=Ma({context:e,useCustomOverflowDefaults:i$1?.useCustomOverflowDefaults??false,value:u});if(n?.type==="date"&&!D)return jsxs("div",{"data-dtp-slot":"data-table-cell-content","data-dtp-overflow":t,className:a(Da(t),"flex w-full min-w-0 items-center justify-end gap-2"),children:[jsx(i,{className:a("shrink-0",a$1?.mutedText??"opacity-70")}),jsx("span",{className:"min-w-0 truncate",children:Ua(u)})]});let I=T!=null&&T!==""?T:u==null||u===""?jsx("span",{className:a$1?.mutedText??"opacity-70",children:"-"}):_a(u);return jsx("div",{"data-dtp-slot":"data-table-cell-content","data-dtp-overflow":t,className:a(Da(t),"w-full min-w-0 max-w-full",R&&"[&>*]:max-w-full [&>*]:min-w-0"),children:I})}function Ma({context:e,useCustomOverflowDefaults:a,value:i}){let o=e.column.columnDef,n=typeof o.meta?.overflow=="function"?o.meta.overflow({row:e.row.original,value:i}):o.meta?.overflow;return n||(a?"clip":"truncate")}function Da(e){switch(e){case "clip":return "block overflow-hidden whitespace-nowrap";case "wrap":return "block overflow-hidden whitespace-normal break-words";case "visible":return "block overflow-visible whitespace-normal";default:return "block overflow-hidden text-ellipsis whitespace-nowrap"}}function Oa(e){return e==null?false:N.isValidElement(e)||Array.isArray(e)||typeof e=="object"}function Ua(e){return typeof e=="number"?new Date(e*1e3).toLocaleString():typeof e=="string"&&e?e:"-"}function _a(e){if(e instanceof Date)return e.toLocaleString();if(typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint")return String(e);try{return JSON.stringify(e)}catch{return "-"}}function Fa({columnLayouts:e,components:a$1,currentDensity:i,draftValues:o,editingContext:n,dragAndDrop:u,explicitCustomCellColumnIds:D,getRowClassName:T,groupToggleLabel:R,gridMode:t,gridRowAriaIndex:I,gridRowIndex:m,activeGridCell:x$1,cellSelectionEnabled:L,isGridCellSelected:B,onGridCellFocus:h$1,onGridCellKeyDown:V,onGridCellPointerDown:M,onGridCellPointerEnter:v,isDraggable:k,isDetailExpanded:f,isEditing:S,isExpanded:A,isInitialLoadingRow:r,isSelected:K,loadingState:z$1,onRowClick:F,pinnedPosition:d$1,originalRow:b,detailPanel:q,row:C,rowIndex:O,setDraftValues:Ce,stripedRows:ce,uiClassNames:G,visibleCells:ye,visibleLeafColumnCount:ee}){let{Checkbox:Ve,Input:$,Skeleton:ae,TableCell:we,TableRow:Re}=a$1,X=ga(),he=d$1?void 0:X,Me=ye.find(c=>!e.get(c.column.id)?.isUtilityColumn)?.column.id;return jsxs(N.Fragment,{children:[jsx(Re,{ref:he,"data-row-id":C.id,"data-index":he?O:void 0,"data-tree-depth":!r&&C.depth>0?C.depth:void 0,"data-dtp-slot":d$1?"data-table-pinned-row":"data-table-row","data-row-pinned":d$1,"data-row-grouped":C.getIsGrouped()||void 0,draggable:r?false:k,"data-loading":z$1?.isLoading||void 0,"data-row-index":r?void 0:O,"data-row-parity":ce&&!r?O%2===0?"odd":"even":void 0,"data-state":r?void 0:K?"selected":void 0,role:t?"row":void 0,"aria-rowindex":t?I:void 0,tabIndex:!t&&F&&!r?0:void 0,className:a(!r&&T?.(b,{row:b,rowId:C.id,rowIndex:O,isEditing:S,isExpanded:A,isLoading:!!z$1?.isLoading,isSelected:K,pinnedPosition:d$1??false}),G.row,d$1==="top"&&a("border-b-2",G.rowPinnedTop),d$1==="bottom"&&a("border-t-2",G.rowPinnedBottom),ce&&!r&&(O%2===0?G.rowOdd:G.rowEven),K&&!r&&G.rowSelected,F&&!r&&"cursor-pointer",r&&"pointer-events-none"),onClick:c=>{r||x(c.target,c.currentTarget)||t&&L||F?.({row:b,rowId:C.id});},onKeyDown:c=>{r||!F||c.key!=="Enter"&&c.key!==" "||x(c.target,c.currentTarget)||(c.preventDefault(),F({row:b,rowId:C.id}));},onDragStart:c=>{r||u?.onRowDragStart?.({row:b,rowId:C.id,event:c});},onDragEnd:c=>{r||u?.onRowDragEnd?.({row:b,rowId:C.id,event:c});},children:ye.map((c,W)=>{let j=c.column.columnDef.meta,J=c.getContext(),Oe=c.getValue(),U=e.get(c.column.id),me=U?.isSelectionColumn??false,Q=U?.isExpansionColumn??false,_=U?.isActionsColumn??false,ie=U?.isSpacerColumn??false,Ue=h(j?.hideOn),_e=r||d(b)?void 0:typeof j?.cellClassName=="function"?j.cellClassName({row:b,value:Oe}):j?.cellClassName,fe=t&&L&&!r&&B(m,W);return jsx(we,{role:t?"gridcell":void 0,"aria-colindex":t?W+1:void 0,"aria-selected":t&&!r?L?fe:K:void 0,"data-dtp-cell-selected":fe||void 0,"data-dtp-grid-cell":t?"true":void 0,"data-grid-row-index":t?m:void 0,"data-grid-column-index":t?W:void 0,tabIndex:t&&!r?x$1.row===m&&x$1.column===W?0:-1:void 0,onFocus:t?()=>h$1({row:m,column:W}):void 0,onKeyDown:t?E=>{if(E.target!==E.currentTarget){E.key==="Escape"&&(E.preventDefault(),E.currentTarget.focus());return}V(E,m,W);}:void 0,onPointerDown:t&&L&&!U?.isUtilityColumn&&!ie?E=>{x(E.target,E.currentTarget)||(E.currentTarget.focus(),M(E,m,W));}:void 0,onPointerEnter:t&&L&&!U?.isUtilityColumn&&!ie?E=>{x(E.target,E.currentTarget)||v(E,m,W);}:void 0,className:a("border-b",z(i),G.cellBorder,fe&&G.cellSelected,U?.utilityClassName,U?.isSpacerColumn&&"border-b-0 bg-transparent p-0",U?.pinnedClassName,Ue,g(J),j?.responsiveClassName,_e),style:U?.cellStyle,children:jsx("div",{"data-row-click-ignore":me||Q||_?"true":void 0,className:"min-w-0 max-w-full",style:C.depth>0&&c.column.id===Me?{paddingInlineStart:`${C.depth}rem`}:void 0,children:z$1?.isLoading?j?.skeleton?.(J)??z$1.skeleton??jsx(ae,{className:a("h-4 rounded",j?.type==="numeric"?"ml-auto w-16":j?.type==="date"?"ml-auto w-28":"w-full")}):S&&c.column.id!=="__select__"&&c.column.id!=="__expand__"&&c.column.id!=="__actions__"?fa(J,o,Ce,{Checkbox:Ve,Input:$},n?{cancel:n.cancel,cancelOnEscape:n.cancelOnEscape,commit:()=>n.commit(b),commitOnEnter:n.commitOnEnter,errors:n.errors,isDirty:n.isDirty,isPending:n.isPending,onValueChange:n.clearError}:void 0):C.getIsGrouped()&&c.getIsPlaceholder()?null:C.getIsGrouped()&&c.getIsGrouped()?jsxs("button",{type:"button",className:"inline-flex min-w-0 items-center gap-1 text-left font-medium",onClick:()=>C.toggleExpanded(),"aria-expanded":C.getIsExpanded(),"aria-label":R,children:[jsx("span",{"aria-hidden":"true",children:Ae(J,G,{hasCustomCell:D.has(c.column.id),useCustomOverflowDefaults:D.has(c.column.id)})}),jsxs("span",{className:"shrink-0 opacity-70",children:["(",C.subRows.length,")"]})]}):C.getIsGrouped()&&c.getIsAggregated()?c.column.columnDef.aggregatedCell?flexRender(c.column.columnDef.aggregatedCell,J):Ae(J,G,{hasCustomCell:false,useCustomOverflowDefaults:false}):Ae(J,G,{hasCustomCell:D.has(c.column.id)||me||Q||_||ie,useCustomOverflowDefaults:D.has(c.column.id)||me||Q||_||ie})})},c.id)})}),!r&&q&&f?jsx(Re,{"data-dtp-slot":"data-table-detail-panel-row","data-row-pinned":d$1,children:jsx(we,{colSpan:Math.max(1,ee),className:a("border-b",z(i),G.cellBorder),children:q.render({row:b,rowId:C.id,tableRow:C})})}):null]})}function Wa(e,a){return e.row.id===a.row.id&&e.row.original===a.row.original&&e.rowIndex===a.rowIndex&&e.isSelected===a.isSelected&&e.isInitialLoadingRow===a.isInitialLoadingRow&&e.isEditing===a.isEditing&&(!e.isEditing||e.editingContext===a.editingContext)&&e.isExpanded===a.isExpanded&&e.isDraggable===a.isDraggable&&ja(e.loadingState,a.loadingState)&&qa(e.visibleCells,a.visibleCells)&&e.components===a.components&&$a(e.columnLayouts,a.columnLayouts,a.visibleCells)&&e.currentDensity===a.currentDensity&&e.detailPanel===a.detailPanel&&e.isDetailExpanded===a.isDetailExpanded&&e.pinnedPosition===a.pinnedPosition&&e.onRowClick===a.onRowClick&&e.dragAndDrop===a.dragAndDrop&&e.getRowClassName===a.getRowClassName&&e.groupToggleLabel===a.groupToggleLabel&&e.gridMode===a.gridMode&&(!a.gridMode||e.gridRowAriaIndex===a.gridRowAriaIndex&&e.gridRowIndex===a.gridRowIndex&&e.activeGridCell.row===a.activeGridCell.row&&e.activeGridCell.column===a.activeGridCell.column&&e.cellSelectionEnabled===a.cellSelectionEnabled&&e.isGridCellSelected===a.isGridCellSelected&&e.onGridCellFocus===a.onGridCellFocus&&e.onGridCellKeyDown===a.onGridCellKeyDown&&e.onGridCellPointerDown===a.onGridCellPointerDown&&e.onGridCellPointerEnter===a.onGridCellPointerEnter)&&e.stripedRows===a.stripedRows&&e.uiClassNames===a.uiClassNames&&e.explicitCustomCellColumnIds===a.explicitCustomCellColumnIds&&(!e.isEditing||e.draftValues===a.draftValues)}function ja(e,a){return e?.isLoading===a?.isLoading&&e?.skeleton===a?.skeleton}function qa(e,a){return e.length===a.length&&e.every((i,o)=>{let n=a[o];return n?.id===i.id&&n.column.id===i.column.id})}function $a(e,a,i){return i.every(o=>{let n=e.get(o.column.id),u=a.get(o.column.id);return n?.fixedSide===u?.fixedSide&&n?.isActionsColumn===u?.isActionsColumn&&n?.isExpansionColumn===u?.isExpansionColumn&&n?.isSelectionColumn===u?.isSelectionColumn&&n?.isSpacerColumn===u?.isSpacerColumn&&n?.isUtilityColumn===u?.isUtilityColumn&&n?.pinnedClassName===u?.pinnedClassName&&n?.utilityClassName===u?.utilityClassName&&Xa(n?.cellStyle,u?.cellStyle)})}function Xa(e,a){return e?.width===a?.width&&e?.minWidth===a?.minWidth&&e?.maxWidth===a?.maxWidth&&e?.left===a?.left&&e?.right===a?.right}var Ta=N.memo(Fa,Wa);function Ja({columnGroupHeaderHeight:e,currentDensity:a$1,currentSorting:i,dir:o,draggedColumnIdRef:n,enableColumnReordering:u,enableColumnResizing:D,gridColumnIndex:T,gridMode:R,header:t$1,headerGroupHeaders:I,layout:m,primeColumnForResize:x,reorderColumn:L,resizeColumnLabel:B,resetColumnSize:h$1,TableHead:V,uiClassNames:M}){let v=t$1.column.columnDef.meta,k=N.useId(),f$1=!t$1.isPlaceholder&&t$1.subHeaders.length>0,S=f$1?t$1.column.columnDef:void 0,A=t$1.column.getCanSort(),r=t$1.column.getIsSorted(),K=i.findIndex(d=>d.id===t$1.column.id),z=u&&!t$1.isPlaceholder&&!f$1&&!m.isUtilityColumn&&!m.isSpacerColumn,F=h(v?.hideOn);return jsxs(V,{colSpan:t$1.colSpan,scope:t$1.isPlaceholder?void 0:f$1?"colgroup":"col",role:R?"columnheader":void 0,"aria-colindex":R?T:void 0,"aria-hidden":t$1.isPlaceholder||void 0,"aria-description":f$1?S?.description:void 0,"aria-labelledby":!t$1.isPlaceholder&&!m.isUtilityColumn&&!m.isSpacerColumn?k:void 0,"data-column-id":t$1.column.id,"data-column-group-id":f$1?S?.id:void 0,"data-header-depth":t$1.depth,"data-dtp-slot":f$1?"data-table-column-group-header":"data-table-column-header",className:a("relative border-b",y(a$1),f$1&&M.columnGroupHeader,m.utilityClassName,m.isSpacerColumn&&"border-b-1 bg-transparent p-0",m.pinnedClassName,F,f(t$1.getContext()),v?.headerClassName,f$1&&S?.headerClassName,v?.responsiveClassName),style:{...v?.headerStyle,...f$1?S?.headerStyle:void 0,...f$1&&(S?.headerHeight??e)!==void 0?{height:S?.headerHeight??e}:void 0,...m.headerStyle},title:f$1?S?.description:void 0,"aria-sort":r==="asc"?"ascending":r==="desc"?"descending":A?"none":void 0,draggable:z,tabIndex:z&&!A&&!(D&&t$1.column.getCanResize())?0:void 0,onDragStart:z?d=>{n.current=t$1.column.id,d.dataTransfer.effectAllowed="move";}:void 0,onDragOver:z?d=>{d.preventDefault(),d.dataTransfer.dropEffect="move";}:void 0,onDrop:z?d=>{d.preventDefault();let b=n.current;n.current=null,b&&L(b,t$1.column.id);}:void 0,onKeyDown:z?d=>{if(!d.altKey||d.key!=="ArrowLeft"&&d.key!=="ArrowRight")return;d.preventDefault();let b=I.filter(O=>!w(O.column.id)&&O.column.id!=="__spacer__"),q=b.findIndex(O=>O.column.id===t$1.column.id),C=b[d.key==="ArrowLeft"!=(o==="rtl")?q-1:q+1];C&&L(t$1.column.id,C.column.id);}:void 0,children:[t$1.isPlaceholder?null:A?jsxs("button",{type:"button",className:a("flex w-full items-center gap-2 font-medium",f(t$1.getContext())),onClick:t$1.column.getToggleSortingHandler(),children:[jsx("span",{id:k,className:"truncate",children:flexRender(t$1.column.columnDef.header,t$1.getContext())}),r?jsxs(Fragment,{children:[jsx(c,{className:a("size-4 shrink-0 transition-transform",r==="desc"?"rotate-0":"rotate-180")}),i.length>1&&K>=0?jsx("span",{className:"inline-flex size-4 shrink-0 items-center justify-center rounded-full text-[10px] leading-none",children:K+1}):null]}):jsx(t,{className:a("size-4 shrink-0",M.headerSortIcon??"opacity-70")})]}):m.isUtilityColumn||m.isSpacerColumn?flexRender(t$1.column.columnDef.header,t$1.getContext()):jsx("span",{id:k,children:flexRender(t$1.column.columnDef.header,t$1.getContext())}),D&&!t$1.isPlaceholder&&t$1.column.getCanResize()?jsx("div",{"aria-label":B,"aria-orientation":"vertical","aria-valuemax":Za(t$1),"aria-valuemin":Ya(t$1),"aria-valuenow":Math.round(t$1.getSize()),role:"separator",tabIndex:0,onDoubleClick:()=>{for(let d of re(t$1))h$1(d.column.id);},onMouseDown:d=>{for(let b of re(t$1))x(b.column.id,b.getSize());t$1.getResizeHandler()(d);},onTouchStart:d=>{for(let b of re(t$1))x(b.column.id,b.getSize());t$1.getResizeHandler()(d);},onKeyDown:d=>{if(d.altKey)return;if(d.key==="Home"){d.preventDefault();for(let q of re(t$1))h$1(q.column.id);return}if(d.key!=="ArrowLeft"&&d.key!=="ArrowRight")return;d.preventDefault(),d.stopPropagation();let b=d.key==="ArrowRight"!=(o==="rtl");et(t$1,(b?1:-1)*(d.shiftKey?25:10));},className:a("absolute inset-y-0 z-50 h-full w-3 cursor-col-resize touch-none select-none ltr:right-0 ltr:translate-x-1/2 rtl:left-0 rtl:-translate-x-1/2 after:absolute after:top-0 after:left-1/2 after:h-full after:w-px after:-translate-x-1/2",M.resizeHandle??"after:bg-current after:opacity-20 hover:after:opacity-70",t$1.column.getIsResizing()&&(M.resizeHandleActive??"after:opacity-100"))}):null]},t$1.id)}function Qa(e,a){return e.header.id===a.header.id&&e.header.column.id===a.header.column.id&&e.header.column.columnDef===a.header.column.columnDef&&e.header.colSpan===a.header.colSpan&&e.header.isPlaceholder===a.header.isPlaceholder&&at(e.header,a.header)&&e.currentDensity===a.currentDensity&&e.columnGroupHeaderHeight===a.columnGroupHeaderHeight&&e.dir===a.dir&&e.enableColumnReordering===a.enableColumnReordering&&e.enableColumnResizing===a.enableColumnResizing&&e.gridMode===a.gridMode&&e.gridColumnIndex===a.gridColumnIndex&&e.TableHead===a.TableHead&&e.uiClassNames===a.uiClassNames&&e.draggedColumnIdRef===a.draggedColumnIdRef&&e.primeColumnForResize===a.primeColumnForResize&&e.reorderColumn===a.reorderColumn&&e.resizeColumnLabel===a.resizeColumnLabel&&e.resetColumnSize===a.resetColumnSize&&e.selectionState===a.selectionState&&tt(e.currentSorting,a.currentSorting)&&nt(e.headerGroupHeaders,a.headerGroupHeaders)&<(e.layout,a.layout)}function re(e){return e.subHeaders.length?e.getLeafHeaders().filter(a=>!a.subHeaders.length):[e]}function Ya(e){return re(e).reduce((a,i)=>a+(i.column.columnDef.minSize??20),0)}function Za(e){return re(e).reduce((a,i)=>a+(i.column.columnDef.maxSize??Number.MAX_SAFE_INTEGER),0)}function et(e,a){let i=re(e),o=a/i.length;e.getContext().table.setColumnSizing(n=>{let u={...n};for(let D of i){let T=D.column,R=T.columnDef.minSize??20,t=T.columnDef.maxSize??Number.MAX_SAFE_INTEGER;u[T.id]=Math.min(t,Math.max(R,T.getSize()+o));}return u});}function at(e,a){return e.subHeaders.length===a.subHeaders.length&&e.subHeaders.every((i,o)=>a.subHeaders[o]?.id===i.id)}function tt(e,a){return e.length===a.length&&e.every((i,o)=>{let n=a[o];return n?.id===i.id&&n.desc===i.desc})}function nt(e,a){return e.length===a.length&&e.every((i,o)=>a[o]?.id===i.id)}function lt(e,a){return e.fixedSide===a.fixedSide&&e.isSpacerColumn===a.isSpacerColumn&&e.isUtilityColumn===a.isUtilityColumn&&e.pinnedClassName===a.pinnedClassName&&e.utilityClassName===a.utilityClassName&&e.headerStyle?.width===a.headerStyle?.width&&e.headerStyle?.minWidth===a.headerStyle?.minWidth&&e.headerStyle?.maxWidth===a.headerStyle?.maxWidth&&e.headerStyle?.left===a.headerStyle?.left&&e.headerStyle?.right===a.headerStyle?.right}var Ca=N.memo(Ja,Qa);function Ut({ariaDescribedBy:e,ariaLabelledBy:a$1,bodyRowComponents:i,cellSelection:o,cellSelectionEnabled:n,columnLayouts:u,columnGroupHeaderHeight:D,currentDensity:T,currentDetailExpanded:R,currentSorting:t=[],dir:I,DataTableEmptyState:m,dragAndDrop:x,draggedColumnIdRef:L,draftValues:B,editingRowId:h,editingContext:V,emptyNode:M,enableColumnReordering:v,enableColumnResizing:k,explicitCustomCellColumnIds:f,fillMinWidth:S,flexGrow:A,gridMode:r,gridPageSize:K,gridRowOffset:z,onGridActiveRowIndexChange:F,onCellSelectionChange:d$1,getColumnLayout:b,getRowClassName:q,getRowLoadingState:C,infiniteScroll:O,layoutMode:Ce,localSearchValue:ce,onRowClick:G,primeColumnForResize:ye,renderedRows:ee,detailPanel:Ve,topPinnedRows:$,bottomPinnedRows:ae,reorderColumn:we,resetColumnSize:Re,resolvedLabels:X,rowsToRender:he,ScrollArea:Me,ScrollBar:c,sentinelRef:W,setDraftValues:j,shouldRenderInitialLoading:J,stateOverlayNode:Oe,stickyHeader:U,stripedRows:me,summaryRows:Q,table:_,tableClassName:ie,tableContainerClassName:Ue,Table:_e,TableBody:fe,TableCell:E,TableFooter:ya="tfoot",TableHead:wa,TableHeader:Ra,TableRow:be,tableScrollContainerRef:Be,tableScrollElement:ve,totalRowCount:Ze,uiClassNames:te,virtualPaddingBottom:ea,virtualPaddingTop:aa,visibleLeafColumnCount:ne,visibleLeafColumns:se}){let ha=_.getIsAllPageRowsSelected()?true:_.getIsSomePageRowsSelected()?"indeterminate":false,ta=_.getFilteredRowModel().rows,Sa=N.useMemo(()=>Q.length?ta.map(l=>l.original):[],[ta,Q.length]),Se=_.getHeaderGroups().length,ke=$.length+ee.length+ae.length,[ge,na]=N.useState({row:0,column:0}),la=N.useRef(false),Fe=N.useRef(false),De=N.useMemo(()=>[...$,...ee,...ae],[ae,ee,$]),pe=N.useCallback((l,s)=>{let g=De[l],p=se[s];return g&&p&&!w(p.id)&&p.id!=="__spacer__"?{rowId:g.id,columnId:p.id}:void 0},[De,se]),de=N.useMemo(()=>{if(!o)return;let l=De.findIndex(H=>H.id===o.anchor.rowId),s=De.findIndex(H=>H.id===o.focus.rowId),g=se.findIndex(H=>H.id===o.anchor.columnId),p=se.findIndex(H=>H.id===o.focus.columnId);if(!(l<0||s<0||g<0||p<0))return {firstRow:Math.min(l,s),lastRow:Math.max(l,s),firstColumn:Math.min(g,p),lastColumn:Math.max(g,p)}},[o,De,se]),ka=N.useCallback((l,s)=>!!(de&&l>=de.firstRow&&l<=de.lastRow&&s>=de.firstColumn&&s<=de.lastColumn),[de]),Ea=N.useCallback(l=>{la.current=true,na(l);},[]),Ee=N.useCallback((l,s,g)=>{if(!n)return;let p=pe(l,s);if(!p)return;let H=g&&o?.anchor?o.anchor:p;d$1({anchor:H,focus:p});},[o,n,pe,d$1]),Ha=N.useCallback((l,s,g)=>{!n||l.button!==0||(Fe.current=true,Ee(s,g,l.shiftKey));},[n,Ee]),Na=N.useCallback((l,s,g)=>{!n||!Fe.current||l.buttons!==1||Ee(s,g,true);},[n,Ee]);N.useEffect(()=>{let l=()=>{Fe.current=false;};return window.addEventListener("pointerup",l),()=>window.removeEventListener("pointerup",l)},[]),N.useEffect(()=>{if(!r)return;F?.(ge.row);let l=requestAnimationFrame(()=>{let s=Be.current?.querySelectorAll('[data-dtp-grid-cell="true"]'),g=Array.from(s??[]).find(p=>Number(p.dataset.gridRowIndex)===ge.row&&Number(p.dataset.gridColumnIndex)===ge.column);g&&la.current&&g.focus();});return ()=>cancelAnimationFrame(l)},[ge,r,F,Be]);let Pa=N.useCallback((l,s,g)=>{if(l.defaultPrevented||l.target!==l.currentTarget)return;let p=Math.max(1,K??(Math.floor((ve?.clientHeight||0)/Math.max(1,ve?.querySelector("tr")?.offsetHeight||48))||10)),H=Math.max(0,ke-1),le=Math.max(0,ne-1),Y=s,Z=g;switch(l.key){case "ArrowUp":Y--;break;case "ArrowDown":Y++;break;case "ArrowLeft":Z--;break;case "ArrowRight":Z++;break;case "Home":(l.ctrlKey||l.metaKey)&&(Y=0),Z=0;break;case "End":(l.ctrlKey||l.metaKey)&&(Y=H),Z=le;break;case "PageUp":Y-=p;break;case "PageDown":Y+=p;break;default:return}l.preventDefault();let je={row:Math.min(H,Math.max(0,Y)),column:Math.min(le,Math.max(0,Z))};if(na(je),l.shiftKey&&n){let qe=pe(je.row,je.column),oa=o?.anchor??pe(s,g)??qe;oa&&qe&&d$1({anchor:oa,focus:qe});}},[o,n,ke,pe,K,d$1,ve,ne]),We=(l,s,g)=>{let p=l.original,H=d(p),le=H?{isLoading:true}:C?.(p,s),Y=typeof le=="boolean"?{isLoading:le}:le,Z=H?false:x?.getRowDraggable?.(p)??false;return jsx(Ta,{columnLayouts:u,components:i,currentDensity:T,draftValues:B,editingContext:V,dragAndDrop:x,explicitCustomCellColumnIds:f,getRowClassName:q,groupToggleLabel:l.getIsExpanded()?X.collapseRow:X.expandRow,isDraggable:Z,isDetailExpanded:R===true||!!R[l.id],isEditing:h===l.id,isExpanded:l.getIsExpanded(),isInitialLoadingRow:H,isSelected:l.getIsSelected(),loadingState:Y,onRowClick:G,originalRow:p,pinnedPosition:g,detailPanel:Ve,row:l,rowIndex:s,setDraftValues:j,stripedRows:me,uiClassNames:te,visibleCells:l.getVisibleCells(),visibleLeafColumnCount:ne,gridMode:r,gridRowIndex:s,gridRowAriaIndex:Se+z+s+1,activeGridCell:ge,cellSelectionEnabled:n,isGridCellSelected:ka,onGridCellFocus:Ea,onGridCellKeyDown:Pa,onGridCellPointerDown:Ha,onGridCellPointerEnter:Na},`${g??"center"}-${l.id}`)};return jsxs("div",{"data-dtp-slot":"data-table-table-shell",className:a("relative box-border border-2 border-transparent transition-colors",A?"flex min-h-0 flex-1 flex-col":"h-full",x?.isDragging&&(te.dragActive??"rounded-md border-dashed")),children:[jsx("div",{ref:Be,className:a(A?"flex min-h-0 flex-1 flex-col":"h-full"),children:jsxs(Me,{className:a("rounded-md border",A?"min-h-0 flex-1":"h-full",te.tableContainer,te.tableScrollArea,Ue),children:[jsx("div",{className:"min-h-full",children:jsxs(_e,{"aria-describedby":e,"aria-labelledby":a$1,role:r?"grid":void 0,"aria-colcount":r?ne:void 0,"aria-rowcount":r?Se+(Ze??ke)+Q.length:void 0,className:a("w-full table-fixed border-separate border-spacing-0",ie),style:{minWidth:Ce==="fill"&&S||void 0,width:Ce==="fit"?_.getTotalSize():"100%"},children:[jsx("colgroup",{children:_.getVisibleLeafColumns().map(l=>{let s=b(l.id);return jsx("col",{style:s.colStyle},l.id)})}),jsx(Ra,{role:r?"rowgroup":void 0,className:a(U?te.tableStickyHeader??"sticky top-0 z-30 backdrop-blur":void 0),children:_.getHeaderGroups().map(l=>jsx(be,{role:r?"row":void 0,"aria-rowindex":r?l.depth+1:void 0,children:l.headers.map(s=>jsx(Ca,{columnGroupHeaderHeight:D,currentDensity:T,currentSorting:t,dir:I,draggedColumnIdRef:L,enableColumnReordering:v,enableColumnResizing:k,header:s,headerGroupHeaders:l.headers,layout:rt(s,b),primeColumnForResize:ye,reorderColumn:we,resizeColumnLabel:X.resizeColumn(typeof s.column.columnDef.header=="string"?s.column.columnDef.header:s.column.id),resetColumnSize:Re,selectionState:s.column.id==="__select__"?ha:void 0,TableHead:wa,uiClassNames:te,gridMode:r,gridColumnIndex:s.isPlaceholder||s.subHeaders.length?void 0:_.getVisibleLeafColumns().findIndex(g=>g.id===s.column.id)+1},s.id))},l.id))}),jsx(fe,{role:r?"rowgroup":void 0,children:$.length||ee.length||ae.length?jsxs(Fragment,{children:[$.map((l,s)=>We(l,s,"top")),aa>0?jsx(be,{"aria-hidden":"true",role:r?"presentation":void 0,children:jsx(E,{colSpan:Math.max(1,ne),className:"border-b-0 p-0",style:{height:aa}})}):null,he.map(({row:l,rowIndex:s})=>We(l,s+$.length)),ea>0?jsx(be,{"aria-hidden":"true",role:r?"presentation":void 0,children:jsx(E,{colSpan:Math.max(1,ne),className:"border-b-0 p-0",style:{height:ea}})}):null,ae.map((l,s)=>We(l,$.length+ee.length+s,"bottom"))]}):jsx(be,{role:r?"row":void 0,"aria-rowindex":r?Se+1:void 0,children:jsx(E,{role:r?"gridcell":void 0,"aria-colindex":r?1:void 0,colSpan:Math.max(1,ne),className:"h-full grow",children:jsx("div",{className:"flex h-full min-h-full w-full grow items-center justify-center",children:M??jsx(m,{title:ce?X.noMatchingRowsTitle:X.noRowsTitle,description:ce?X.noMatchingRowsDescription:X.noRowsDescription})})})})}),Q.length?jsx(ya,{role:r?"rowgroup":void 0,children:Q.map((l,s)=>jsx(be,{role:r?"row":void 0,"aria-rowindex":r?Se+(Ze??ke)+s+1:void 0,children:se.map((g,p)=>{let H=l.cells[g.id]??(p===0?l.label:null);return jsx(E,{role:r?"gridcell":void 0,"aria-colindex":r?p+1:void 0,className:a("border-b font-medium",te.cellBorder),children:typeof H=="function"?H({rows:Sa,columnId:g.id}):H},`${l.key}-${g.id}`)})},l.key))}):null]})}),O?.enabled&&ee.length&&!J?jsx("div",{className:"px-4 pb-4",children:jsx("div",{ref:W,className:"h-4 w-full"})}):null,jsx(c,{orientation:"horizontal"})]})}),Oe]})}function rt(e,a){let i=a(e.column.id);if(e.isPlaceholder||!e.subHeaders.length)return i;let o=e.getLeafHeaders().filter(D=>!D.subHeaders.length).map(D=>a(D.column.id)),n=o[0]?.fixedSide;if(!n||!o.every(D=>D.fixedSide===n))return i;let u=n==="left"?o[0]:o.at(-1);return {...i,fixedSide:n,headerStyle:u?.headerStyle?{left:u.headerStyle.left,right:u.headerStyle.right}:void 0,pinnedClassName:u?.pinnedClassName}}export{dt as a,mt as b,Ta as c,Ca as d,Ut as e};//# sourceMappingURL=chunk-NLQJKISS.js.map -//# sourceMappingURL=chunk-NLQJKISS.js.map \ No newline at end of file +import {d,z,x,w,y,j}from'./chunk-4P45F2OY.js';import {c,t,i}from'./chunk-CVR2ZXHQ.js';import {h,g,f}from'./chunk-KDHJA6AH.js';import {a}from'./chunk-XTVBESM5.js';import*as N from'react';import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {flexRender}from'@tanstack/react-table';function dt({columns:e,editableRows:a,onError:i}){let[o,n]=N.useState(null),[u,D]=N.useState({}),T=N.useRef(u),[R,t]=N.useState({}),[I,m]=N.useState({}),[x,L]=N.useState(false),B=N.useMemo(()=>!xa(u,R),[u,R]);N.useEffect(()=>{T.current=u;},[u]);let h=N.useCallback(()=>{n(null),D({}),m({}),t({});},[]),V=N.useCallback((k,f)=>{let S=a?.getInitialValues?.(k)??Ia(k,e);t({...S}),D(S),m({}),n(f);},[e,a]),M=N.useCallback(async k=>{if(!a)return false;L(true);let f={...T.current},S;try{let A=await a.validateRow?.(k,f),r=La(A);if(Object.keys(r).length>0)return m(r),!1;m({});let K=a.onOptimisticUpdate?.(k,f);return S=typeof K=="function"?K:void 0,await a.onSaveRow(k,f),a.onSaveSuccess?.(k,f),N.startTransition(h),!0}catch(A){try{S?.();}catch{}return a.onSaveError?.(A,k,f),i?.(A,k),false}finally{L(false);}},[h,a,i]),v=N.useCallback(k=>{m(f=>{if(!f[k]&&!f._row)return f;let S={...f};return delete S[k],delete S._row,S});},[]);return {cancelEditing:h,clearEditError:v,draftValues:u,editErrors:I,editingRowId:o,isEditDirty:B,isSavingEdit:x,saveEdit:M,setDraftValues:D,setEditingRowId:n,startEditingRow:V}}function Ia(e,a){return j(a).reduce((i,{column:o})=>("accessorKey"in o&&typeof o.accessorKey=="string"&&(i[o.accessorKey]=e[o.accessorKey]),i),{})}function fa(e,a,i,o,n){let{Checkbox:u,Input:D}=o,T=e.column.columnDef,R=T.meta,t="accessorKey"in T&&typeof T.accessorKey=="string"?T.accessorKey:e.column.id,I=a[t],m=n?.errors[t]??n?.errors[e.column.id]??n?.errors._row,x=h=>{n?.onValueChange(t),i(V=>({...V,[t]:h}));},L=h=>{h.key==="Escape"&&n?.cancelOnEscape?(h.preventDefault(),n.cancel()):h.key==="Enter"&&!h.shiftKey&&n?.commitOnEnter&&(h.preventDefault(),n.commit());};if(R?.renderEditCell)return R.renderEditCell({cell:e,row:e.row.original,value:e.getValue(),draftValue:I,error:m,isDirty:n?.isDirty??false,isPending:n?.isPending??false,setDraftValue:x});let B=Aa(R?.type,I);return typeof I=="boolean"?jsxs("div",{className:"min-w-0",children:[jsx(u,{"aria-invalid":!!m||void 0,checked:I,disabled:n?.isPending,onCheckedChange:h=>{x(h===true);},onKeyDown:L}),m?jsx("span",{className:"mt-1 block text-xs text-destructive",role:"alert",children:m}):null]}):jsxs("div",{className:"min-w-0",children:[jsx(D,{"aria-invalid":!!m||void 0,disabled:n?.isPending,type:B,value:R?.formatEditValue?R.formatEditValue(I,e):Ga(I,B),onChange:h=>{let V=h.target.value,M=R?.parseEditValue?R.parseEditValue(V,e):Ka(V,B,I);x(M);},onKeyDown:L}),m?jsx("span",{className:"mt-1 block text-xs text-destructive",role:"alert",children:m}):null]})}function La(e){return e?typeof e=="string"?{_row:e}:e:{}}function xa(e,a){let i=new Set([...Object.keys(e),...Object.keys(a)]);return Array.from(i).every(o=>Object.is(e[o],a[o]))}function Aa(e,a){return e==="numeric"||typeof a=="number"?"number":e==="date"||a instanceof Date?"datetime-local":"text"}function Ga(e,a="text"){return e==null?"":e instanceof Date?a==="datetime-local"?e.toISOString().slice(0,16):e.toISOString():typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint"?String(e):""}function Ka(e,a,i){return a==="number"?e===""?null:Number(e):a==="datetime-local"?e?i instanceof Date?new Date(e):e:null:e}var ba=N.createContext(void 0);function mt({children:e,measureRow:a}){return jsx(ba.Provider,{value:a,children:e})}function ga(){return N.useContext(ba)}function Ae(e,a$1,i$1){let o=e.column.columnDef,n=o.meta,u=e.getValue(),D=i$1?.hasCustomCell??false,T=D&&o.cell?flexRender(o.cell,e):void 0,R=Oa(T),t=Ma({context:e,useCustomOverflowDefaults:i$1?.useCustomOverflowDefaults??false,value:u});if(n?.type==="date"&&!D)return jsxs("div",{"data-dtp-slot":"data-table-cell-content","data-dtp-overflow":t,className:a(Da(t),"flex w-full min-w-0 items-center justify-end gap-2"),children:[jsx(i,{className:a("shrink-0",a$1?.mutedText??"opacity-70")}),jsx("span",{className:"min-w-0 truncate",children:Ua(u)})]});let I=T!=null&&T!==""?T:u==null||u===""?jsx("span",{className:a$1?.mutedText??"opacity-70",children:"-"}):_a(u);return jsx("div",{"data-dtp-slot":"data-table-cell-content","data-dtp-overflow":t,className:a(Da(t),"w-full min-w-0 max-w-full",R&&"[&>*]:max-w-full [&>*]:min-w-0"),children:I})}function Ma({context:e,useCustomOverflowDefaults:a,value:i}){let o=e.column.columnDef,n=typeof o.meta?.overflow=="function"?o.meta.overflow({row:e.row.original,value:i}):o.meta?.overflow;return n||(a?"clip":"truncate")}function Da(e){switch(e){case "clip":return "block overflow-hidden whitespace-nowrap";case "wrap":return "block overflow-hidden whitespace-normal break-words";case "visible":return "block overflow-visible whitespace-normal";default:return "block overflow-hidden text-ellipsis whitespace-nowrap"}}function Oa(e){return e==null?false:N.isValidElement(e)||Array.isArray(e)||typeof e=="object"}function Ua(e){return typeof e=="number"?new Date(e*1e3).toLocaleString():typeof e=="string"&&e?e:"-"}function _a(e){if(e instanceof Date)return e.toLocaleString();if(typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint")return String(e);try{return JSON.stringify(e)}catch{return "-"}}function Fa({columnLayouts:e,components:a$1,currentDensity:i,draftValues:o,editingContext:n,dragAndDrop:u,explicitCustomCellColumnIds:D,getRowClassName:T,groupToggleLabel:R,gridMode:t,gridRowAriaIndex:I,gridRowIndex:m,activeGridCell:x$1,cellSelectionEnabled:L,isGridCellSelected:B,onGridCellFocus:h$1,onGridCellKeyDown:V,onGridCellPointerDown:M,onGridCellPointerEnter:v,isDraggable:k,isDetailExpanded:f,isEditing:S,isExpanded:A,isInitialLoadingRow:r,isSelected:K,loadingState:z$1,onRowClick:F,pinnedPosition:d$1,originalRow:b,detailPanel:q,row:C,rowIndex:O,setDraftValues:Ce,stripedRows:ce,uiClassNames:G,visibleCells:ye,visibleLeafColumnCount:ee}){let{Checkbox:Ve,Input:$,Skeleton:ae,TableCell:we,TableRow:Re}=a$1,X=ga(),he=d$1?void 0:X,Me=ye.find(c=>!e.get(c.column.id)?.isUtilityColumn)?.column.id;return jsxs(N.Fragment,{children:[jsx(Re,{ref:he,"data-row-id":C.id,"data-index":he?O:void 0,"data-tree-depth":!r&&C.depth>0?C.depth:void 0,"data-dtp-slot":d$1?"data-table-pinned-row":"data-table-row","data-row-pinned":d$1,"data-row-grouped":C.getIsGrouped()||void 0,draggable:r?false:k,"data-loading":z$1?.isLoading||void 0,"data-row-index":r?void 0:O,"data-row-parity":ce&&!r?O%2===0?"odd":"even":void 0,"data-state":r?void 0:K?"selected":void 0,role:t?"row":void 0,"aria-rowindex":t?I:void 0,tabIndex:!t&&F&&!r?0:void 0,className:a(!r&&T?.(b,{row:b,rowId:C.id,rowIndex:O,isEditing:S,isExpanded:A,isLoading:!!z$1?.isLoading,isSelected:K,pinnedPosition:d$1??false}),G.row,d$1==="top"&&a("border-b-2",G.rowPinnedTop),d$1==="bottom"&&a("border-t-2",G.rowPinnedBottom),ce&&!r&&(O%2===0?G.rowOdd:G.rowEven),K&&!r&&G.rowSelected,F&&!r&&"cursor-pointer",r&&"pointer-events-none"),onClick:c=>{r||x(c.target,c.currentTarget)||t&&L||F?.({row:b,rowId:C.id});},onKeyDown:c=>{r||!F||c.key!=="Enter"&&c.key!==" "||x(c.target,c.currentTarget)||(c.preventDefault(),F({row:b,rowId:C.id}));},onDragStart:c=>{r||u?.onRowDragStart?.({row:b,rowId:C.id,event:c});},onDragEnd:c=>{r||u?.onRowDragEnd?.({row:b,rowId:C.id,event:c});},children:ye.map((c,W)=>{let j=c.column.columnDef.meta,J=c.getContext(),Oe=c.getValue(),U=e.get(c.column.id),me=U?.isSelectionColumn??false,Q=U?.isExpansionColumn??false,_=U?.isActionsColumn??false,ie=U?.isSpacerColumn??false,Ue=h(j?.hideOn),_e=r||d(b)?void 0:typeof j?.cellClassName=="function"?j.cellClassName({row:b,value:Oe}):j?.cellClassName,fe=t&&L&&!r&&B(m,W);return jsx(we,{role:t?"gridcell":void 0,"aria-colindex":t?W+1:void 0,"aria-selected":t&&!r?L?fe:K:void 0,"data-dtp-cell-selected":fe||void 0,"data-dtp-grid-cell":t?"true":void 0,"data-grid-row-index":t?m:void 0,"data-grid-column-index":t?W:void 0,tabIndex:t&&!r?x$1.row===m&&x$1.column===W?0:-1:void 0,onFocus:t?()=>h$1({row:m,column:W}):void 0,onKeyDown:t?E=>{if(E.target!==E.currentTarget){E.key==="Escape"&&(E.preventDefault(),E.currentTarget.focus());return}V(E,m,W);}:void 0,onPointerDown:t&&L&&!U?.isUtilityColumn&&!ie?E=>{x(E.target,E.currentTarget)||(E.currentTarget.focus(),M(E,m,W));}:void 0,onPointerEnter:t&&L&&!U?.isUtilityColumn&&!ie?E=>{x(E.target,E.currentTarget)||v(E,m,W);}:void 0,className:a("border-b",z(i),G.cellBorder,fe&&G.cellSelected,U?.utilityClassName,U?.isSpacerColumn&&"border-b-0 bg-transparent p-0",U?.pinnedClassName,Ue,g(J),j?.responsiveClassName,_e),style:U?.cellStyle,children:jsx("div",{"data-row-click-ignore":me||Q||_?"true":void 0,className:"min-w-0 max-w-full",style:C.depth>0&&c.column.id===Me?{paddingInlineStart:`${C.depth}rem`}:void 0,children:z$1?.isLoading?j?.skeleton?.(J)??z$1.skeleton??jsx(ae,{className:a("h-4 rounded",j?.type==="numeric"?"ml-auto w-16":j?.type==="date"?"ml-auto w-28":"w-full")}):S&&c.column.id!=="__select__"&&c.column.id!=="__expand__"&&c.column.id!=="__actions__"?fa(J,o,Ce,{Checkbox:Ve,Input:$},n?{cancel:n.cancel,cancelOnEscape:n.cancelOnEscape,commit:()=>n.commit(b),commitOnEnter:n.commitOnEnter,errors:n.errors,isDirty:n.isDirty,isPending:n.isPending,onValueChange:n.clearError}:void 0):C.getIsGrouped()&&c.getIsPlaceholder()?null:C.getIsGrouped()&&c.getIsGrouped()?jsxs("button",{type:"button",className:"inline-flex min-w-0 items-center gap-1 text-left font-medium",onClick:()=>C.toggleExpanded(),"aria-expanded":C.getIsExpanded(),"aria-label":R,children:[jsx("span",{"aria-hidden":"true",children:Ae(J,G,{hasCustomCell:D.has(c.column.id),useCustomOverflowDefaults:D.has(c.column.id)})}),jsxs("span",{className:"shrink-0 opacity-70",children:["(",C.subRows.length,")"]})]}):C.getIsGrouped()&&c.getIsAggregated()?c.column.columnDef.aggregatedCell?flexRender(c.column.columnDef.aggregatedCell,J):Ae(J,G,{hasCustomCell:false,useCustomOverflowDefaults:false}):Ae(J,G,{hasCustomCell:D.has(c.column.id)||me||Q||_||ie,useCustomOverflowDefaults:D.has(c.column.id)||me||Q||_||ie})})},c.id)})}),!r&&q&&f?jsx(Re,{"data-dtp-slot":"data-table-detail-panel-row","data-row-pinned":d$1,children:jsx(we,{colSpan:Math.max(1,ee),className:a("border-b",z(i),G.cellBorder),children:q.render({row:b,rowId:C.id,tableRow:C})})}):null]})}function Wa(e,a){return e.row.id===a.row.id&&e.row.original===a.row.original&&e.rowIndex===a.rowIndex&&e.isSelected===a.isSelected&&e.isInitialLoadingRow===a.isInitialLoadingRow&&e.isEditing===a.isEditing&&(!e.isEditing||e.editingContext===a.editingContext)&&e.isExpanded===a.isExpanded&&e.isDraggable===a.isDraggable&&ja(e.loadingState,a.loadingState)&&qa(e.visibleCells,a.visibleCells)&&e.components===a.components&&$a(e.columnLayouts,a.columnLayouts,a.visibleCells)&&e.currentDensity===a.currentDensity&&e.detailPanel===a.detailPanel&&e.isDetailExpanded===a.isDetailExpanded&&e.pinnedPosition===a.pinnedPosition&&e.onRowClick===a.onRowClick&&e.dragAndDrop===a.dragAndDrop&&e.getRowClassName===a.getRowClassName&&e.groupToggleLabel===a.groupToggleLabel&&e.gridMode===a.gridMode&&(!a.gridMode||e.gridRowAriaIndex===a.gridRowAriaIndex&&e.gridRowIndex===a.gridRowIndex&&e.activeGridCell.row===a.activeGridCell.row&&e.activeGridCell.column===a.activeGridCell.column&&e.cellSelectionEnabled===a.cellSelectionEnabled&&e.isGridCellSelected===a.isGridCellSelected&&e.onGridCellFocus===a.onGridCellFocus&&e.onGridCellKeyDown===a.onGridCellKeyDown&&e.onGridCellPointerDown===a.onGridCellPointerDown&&e.onGridCellPointerEnter===a.onGridCellPointerEnter)&&e.stripedRows===a.stripedRows&&e.uiClassNames===a.uiClassNames&&e.explicitCustomCellColumnIds===a.explicitCustomCellColumnIds&&(!e.isEditing||e.draftValues===a.draftValues)}function ja(e,a){return e?.isLoading===a?.isLoading&&e?.skeleton===a?.skeleton}function qa(e,a){return e.length===a.length&&e.every((i,o)=>{let n=a[o];return n?.id===i.id&&n.column.id===i.column.id})}function $a(e,a,i){return i.every(o=>{let n=e.get(o.column.id),u=a.get(o.column.id);return n?.fixedSide===u?.fixedSide&&n?.isActionsColumn===u?.isActionsColumn&&n?.isExpansionColumn===u?.isExpansionColumn&&n?.isSelectionColumn===u?.isSelectionColumn&&n?.isSpacerColumn===u?.isSpacerColumn&&n?.isUtilityColumn===u?.isUtilityColumn&&n?.pinnedClassName===u?.pinnedClassName&&n?.utilityClassName===u?.utilityClassName&&Xa(n?.cellStyle,u?.cellStyle)})}function Xa(e,a){return e?.width===a?.width&&e?.minWidth===a?.minWidth&&e?.maxWidth===a?.maxWidth&&e?.left===a?.left&&e?.right===a?.right}var Ta=N.memo(Fa,Wa);function Ja({columnGroupHeaderHeight:e,currentDensity:a$1,currentSorting:i,dir:o,draggedColumnIdRef:n,enableColumnReordering:u,enableColumnResizing:D,gridColumnIndex:T,gridMode:R,header:t$1,headerGroupHeaders:I,layout:m,primeColumnForResize:x,reorderColumn:L,resizeColumnLabel:B,resetColumnSize:h$1,TableHead:V,uiClassNames:M}){let v=t$1.column.columnDef.meta,k=N.useId(),f$1=!t$1.isPlaceholder&&t$1.subHeaders.length>0,S=f$1?t$1.column.columnDef:void 0,A=t$1.column.getCanSort(),r=t$1.column.getIsSorted(),K=i.findIndex(d=>d.id===t$1.column.id),z=u&&!t$1.isPlaceholder&&!f$1&&!m.isUtilityColumn&&!m.isSpacerColumn,F=h(v?.hideOn);return jsxs(V,{colSpan:t$1.colSpan,scope:t$1.isPlaceholder?void 0:f$1?"colgroup":"col",role:R?"columnheader":void 0,"aria-colindex":R?T:void 0,"aria-hidden":t$1.isPlaceholder||void 0,"aria-description":f$1?S?.description:void 0,"aria-labelledby":!t$1.isPlaceholder&&!m.isUtilityColumn&&!m.isSpacerColumn?k:void 0,"data-column-id":t$1.column.id,"data-column-group-id":f$1?S?.id:void 0,"data-header-depth":t$1.depth,"data-dtp-slot":f$1?"data-table-column-group-header":"data-table-column-header",className:a("relative border-b",y(a$1),f$1&&M.columnGroupHeader,m.utilityClassName,m.isSpacerColumn&&"border-b-1 bg-transparent p-0",m.pinnedClassName,F,f(t$1.getContext()),v?.headerClassName,f$1&&S?.headerClassName,v?.responsiveClassName),style:{...v?.headerStyle,...f$1?S?.headerStyle:void 0,...f$1&&(S?.headerHeight??e)!==void 0?{height:S?.headerHeight??e}:void 0,...m.headerStyle},title:f$1?S?.description:void 0,"aria-sort":r==="asc"?"ascending":r==="desc"?"descending":A?"none":void 0,draggable:z,tabIndex:z&&!A&&!(D&&t$1.column.getCanResize())?0:void 0,onDragStart:z?d=>{n.current=t$1.column.id,d.dataTransfer.effectAllowed="move";}:void 0,onDragOver:z?d=>{d.preventDefault(),d.dataTransfer.dropEffect="move";}:void 0,onDrop:z?d=>{d.preventDefault();let b=n.current;n.current=null,b&&L(b,t$1.column.id);}:void 0,onKeyDown:z?d=>{if(!d.altKey||d.key!=="ArrowLeft"&&d.key!=="ArrowRight")return;d.preventDefault();let b=I.filter(O=>!w(O.column.id)&&O.column.id!=="__spacer__"),q=b.findIndex(O=>O.column.id===t$1.column.id),C=b[d.key==="ArrowLeft"!=(o==="rtl")?q-1:q+1];C&&L(t$1.column.id,C.column.id);}:void 0,children:[t$1.isPlaceholder?null:A?jsxs("button",{type:"button",className:a("flex w-full items-center gap-2 font-medium",f(t$1.getContext())),onClick:t$1.column.getToggleSortingHandler(),children:[jsx("span",{id:k,className:"truncate",children:flexRender(t$1.column.columnDef.header,t$1.getContext())}),r?jsxs(Fragment,{children:[jsx(c,{className:a("size-4 shrink-0 transition-transform",r==="desc"?"rotate-0":"rotate-180")}),i.length>1&&K>=0?jsx("span",{className:"inline-flex size-4 shrink-0 items-center justify-center rounded-full text-[10px] leading-none",children:K+1}):null]}):jsx(t,{className:a("size-4 shrink-0",M.headerSortIcon??"opacity-70")})]}):m.isUtilityColumn||m.isSpacerColumn?flexRender(t$1.column.columnDef.header,t$1.getContext()):jsx("span",{id:k,children:flexRender(t$1.column.columnDef.header,t$1.getContext())}),D&&!t$1.isPlaceholder&&t$1.column.getCanResize()?jsx("div",{"aria-label":B,"aria-orientation":"vertical","aria-valuemax":Za(t$1),"aria-valuemin":Ya(t$1),"aria-valuenow":Math.round(t$1.getSize()),role:"separator",tabIndex:0,onDoubleClick:()=>{for(let d of re(t$1))h$1(d.column.id);},onMouseDown:d=>{for(let b of re(t$1))x(b.column.id,b.getSize());t$1.getResizeHandler()(d);},onTouchStart:d=>{for(let b of re(t$1))x(b.column.id,b.getSize());t$1.getResizeHandler()(d);},onKeyDown:d=>{if(d.altKey)return;if(d.key==="Home"){d.preventDefault();for(let q of re(t$1))h$1(q.column.id);return}if(d.key!=="ArrowLeft"&&d.key!=="ArrowRight")return;d.preventDefault(),d.stopPropagation();let b=d.key==="ArrowRight"!=(o==="rtl");et(t$1,(b?1:-1)*(d.shiftKey?25:10));},className:a("absolute inset-y-0 z-50 h-full w-3 cursor-col-resize touch-none select-none ltr:right-0 ltr:translate-x-1/2 rtl:left-0 rtl:-translate-x-1/2 after:absolute after:top-0 after:left-1/2 after:h-full after:w-px after:-translate-x-1/2",M.resizeHandle??"after:bg-current after:opacity-20 hover:after:opacity-70",t$1.column.getIsResizing()&&(M.resizeHandleActive??"after:opacity-100"))}):null]},t$1.id)}function Qa(e,a){return e.header.id===a.header.id&&e.header.column.id===a.header.column.id&&e.header.column.columnDef===a.header.column.columnDef&&e.header.colSpan===a.header.colSpan&&e.header.isPlaceholder===a.header.isPlaceholder&&at(e.header,a.header)&&e.currentDensity===a.currentDensity&&e.columnGroupHeaderHeight===a.columnGroupHeaderHeight&&e.dir===a.dir&&e.enableColumnReordering===a.enableColumnReordering&&e.enableColumnResizing===a.enableColumnResizing&&e.gridMode===a.gridMode&&e.gridColumnIndex===a.gridColumnIndex&&e.TableHead===a.TableHead&&e.uiClassNames===a.uiClassNames&&e.draggedColumnIdRef===a.draggedColumnIdRef&&e.primeColumnForResize===a.primeColumnForResize&&e.reorderColumn===a.reorderColumn&&e.resizeColumnLabel===a.resizeColumnLabel&&e.resetColumnSize===a.resetColumnSize&&e.selectionState===a.selectionState&&tt(e.currentSorting,a.currentSorting)&&nt(e.headerGroupHeaders,a.headerGroupHeaders)&<(e.layout,a.layout)}function re(e){return e.subHeaders.length?e.getLeafHeaders().filter(a=>!a.subHeaders.length):[e]}function Ya(e){return re(e).reduce((a,i)=>a+(i.column.columnDef.minSize??20),0)}function Za(e){return re(e).reduce((a,i)=>a+(i.column.columnDef.maxSize??Number.MAX_SAFE_INTEGER),0)}function et(e,a){let i=re(e),o=a/i.length;e.getContext().table.setColumnSizing(n=>{let u={...n};for(let D of i){let T=D.column,R=T.columnDef.minSize??20,t=T.columnDef.maxSize??Number.MAX_SAFE_INTEGER;u[T.id]=Math.min(t,Math.max(R,T.getSize()+o));}return u});}function at(e,a){return e.subHeaders.length===a.subHeaders.length&&e.subHeaders.every((i,o)=>a.subHeaders[o]?.id===i.id)}function tt(e,a){return e.length===a.length&&e.every((i,o)=>{let n=a[o];return n?.id===i.id&&n.desc===i.desc})}function nt(e,a){return e.length===a.length&&e.every((i,o)=>a[o]?.id===i.id)}function lt(e,a){return e.fixedSide===a.fixedSide&&e.isSpacerColumn===a.isSpacerColumn&&e.isUtilityColumn===a.isUtilityColumn&&e.pinnedClassName===a.pinnedClassName&&e.utilityClassName===a.utilityClassName&&e.headerStyle?.width===a.headerStyle?.width&&e.headerStyle?.minWidth===a.headerStyle?.minWidth&&e.headerStyle?.maxWidth===a.headerStyle?.maxWidth&&e.headerStyle?.left===a.headerStyle?.left&&e.headerStyle?.right===a.headerStyle?.right}var Ca=N.memo(Ja,Qa);function Ut({ariaDescribedBy:e,ariaLabelledBy:a$1,bodyRowComponents:i,cellSelection:o,cellSelectionEnabled:n,columnLayouts:u,columnGroupHeaderHeight:D,currentDensity:T,currentDetailExpanded:R,currentSorting:t=[],dir:I,DataTableEmptyState:m,dragAndDrop:x,draggedColumnIdRef:L,draftValues:B,editingRowId:h,editingContext:V,emptyNode:M,enableColumnReordering:v,enableColumnResizing:k,explicitCustomCellColumnIds:f,fillMinWidth:S,flexGrow:A,gridMode:r,gridPageSize:K,gridRowOffset:z,onGridActiveRowIndexChange:F,onCellSelectionChange:d$1,getColumnLayout:b,getRowClassName:q,getRowLoadingState:C,infiniteScroll:O,layoutMode:Ce,localSearchValue:ce,onRowClick:G,primeColumnForResize:ye,renderedRows:ee,detailPanel:Ve,topPinnedRows:$,bottomPinnedRows:ae,reorderColumn:we,resetColumnSize:Re,resolvedLabels:X,rowsToRender:he,ScrollArea:Me,ScrollBar:c,sentinelRef:W,setDraftValues:j,shouldRenderInitialLoading:J,stateOverlayNode:Oe,stickyHeader:U,stripedRows:me,summaryRows:Q,table:_,tableClassName:ie,tableContainerClassName:Ue,Table:_e,TableBody:fe,TableCell:E,TableFooter:ya="tfoot",TableHead:wa,TableHeader:Ra,TableRow:be,tableScrollContainerRef:Be,tableScrollElement:ve,totalRowCount:Ze,uiClassNames:te,virtualPaddingBottom:ea,virtualPaddingTop:aa,visibleLeafColumnCount:ne,visibleLeafColumns:se}){let ha=_.getIsAllPageRowsSelected()?true:_.getIsSomePageRowsSelected()?"indeterminate":false,ta=_.getFilteredRowModel().rows,Sa=N.useMemo(()=>Q.length?ta.map(l=>l.original):[],[ta,Q.length]),Se=_.getHeaderGroups().length,ke=$.length+ee.length+ae.length,[ge,na]=N.useState({row:0,column:0}),la=N.useRef(false),Fe=N.useRef(false),De=N.useMemo(()=>[...$,...ee,...ae],[ae,ee,$]),pe=N.useCallback((l,s)=>{let g=De[l],p=se[s];return g&&p&&!w(p.id)&&p.id!=="__spacer__"?{rowId:g.id,columnId:p.id}:void 0},[De,se]),de=N.useMemo(()=>{if(!o)return;let l=De.findIndex(H=>H.id===o.anchor.rowId),s=De.findIndex(H=>H.id===o.focus.rowId),g=se.findIndex(H=>H.id===o.anchor.columnId),p=se.findIndex(H=>H.id===o.focus.columnId);if(!(l<0||s<0||g<0||p<0))return {firstRow:Math.min(l,s),lastRow:Math.max(l,s),firstColumn:Math.min(g,p),lastColumn:Math.max(g,p)}},[o,De,se]),ka=N.useCallback((l,s)=>!!(de&&l>=de.firstRow&&l<=de.lastRow&&s>=de.firstColumn&&s<=de.lastColumn),[de]),Ea=N.useCallback(l=>{la.current=true,na(l);},[]),Ee=N.useCallback((l,s,g)=>{if(!n)return;let p=pe(l,s);if(!p)return;let H=g&&o?.anchor?o.anchor:p;d$1({anchor:H,focus:p});},[o,n,pe,d$1]),Ha=N.useCallback((l,s,g)=>{!n||l.button!==0||(l.preventDefault(),Fe.current=true,Ee(s,g,l.shiftKey));},[n,Ee]),Na=N.useCallback((l,s,g)=>{!n||!Fe.current||l.buttons!==1||Ee(s,g,true);},[n,Ee]);N.useEffect(()=>{let l=()=>{Fe.current=false;};return window.addEventListener("pointerup",l),()=>window.removeEventListener("pointerup",l)},[]),N.useEffect(()=>{if(!r)return;F?.(ge.row);let l=requestAnimationFrame(()=>{let s=Be.current?.querySelectorAll('[data-dtp-grid-cell="true"]'),g=Array.from(s??[]).find(p=>Number(p.dataset.gridRowIndex)===ge.row&&Number(p.dataset.gridColumnIndex)===ge.column);g&&la.current&&g.focus();});return ()=>cancelAnimationFrame(l)},[ge,r,F,Be]);let Pa=N.useCallback((l,s,g)=>{if(l.defaultPrevented||l.target!==l.currentTarget)return;let p=Math.max(1,K??(Math.floor((ve?.clientHeight||0)/Math.max(1,ve?.querySelector("tr")?.offsetHeight||48))||10)),H=Math.max(0,ke-1),le=Math.max(0,ne-1),Y=s,Z=g;switch(l.key){case "ArrowUp":Y--;break;case "ArrowDown":Y++;break;case "ArrowLeft":Z--;break;case "ArrowRight":Z++;break;case "Home":(l.ctrlKey||l.metaKey)&&(Y=0),Z=0;break;case "End":(l.ctrlKey||l.metaKey)&&(Y=H),Z=le;break;case "PageUp":Y-=p;break;case "PageDown":Y+=p;break;default:return}l.preventDefault();let je={row:Math.min(H,Math.max(0,Y)),column:Math.min(le,Math.max(0,Z))};if(na(je),l.shiftKey&&n){let qe=pe(je.row,je.column),oa=o?.anchor??pe(s,g)??qe;oa&&qe&&d$1({anchor:oa,focus:qe});}},[o,n,ke,pe,K,d$1,ve,ne]),We=(l,s,g)=>{let p=l.original,H=d(p),le=H?{isLoading:true}:C?.(p,s),Y=typeof le=="boolean"?{isLoading:le}:le,Z=H?false:x?.getRowDraggable?.(p)??false;return jsx(Ta,{columnLayouts:u,components:i,currentDensity:T,draftValues:B,editingContext:V,dragAndDrop:x,explicitCustomCellColumnIds:f,getRowClassName:q,groupToggleLabel:l.getIsExpanded()?X.collapseRow:X.expandRow,isDraggable:Z,isDetailExpanded:R===true||!!R[l.id],isEditing:h===l.id,isExpanded:l.getIsExpanded(),isInitialLoadingRow:H,isSelected:l.getIsSelected(),loadingState:Y,onRowClick:G,originalRow:p,pinnedPosition:g,detailPanel:Ve,row:l,rowIndex:s,setDraftValues:j,stripedRows:me,uiClassNames:te,visibleCells:l.getVisibleCells(),visibleLeafColumnCount:ne,gridMode:r,gridRowIndex:s,gridRowAriaIndex:Se+z+s+1,activeGridCell:ge,cellSelectionEnabled:n,isGridCellSelected:ka,onGridCellFocus:Ea,onGridCellKeyDown:Pa,onGridCellPointerDown:Ha,onGridCellPointerEnter:Na},`${g??"center"}-${l.id}`)};return jsxs("div",{"data-dtp-slot":"data-table-table-shell",className:a("relative box-border border-2 border-transparent transition-colors",A?"flex min-h-0 flex-1 flex-col":"h-full",x?.isDragging&&(te.dragActive??"rounded-md border-dashed")),children:[jsx("div",{ref:Be,className:a(A?"flex min-h-0 flex-1 flex-col":"h-full"),children:jsxs(Me,{className:a("rounded-md border",A?"min-h-0 flex-1":"h-full",te.tableContainer,te.tableScrollArea,Ue),children:[jsx("div",{className:"min-h-full",children:jsxs(_e,{"aria-describedby":e,"aria-labelledby":a$1,role:r?"grid":void 0,"aria-colcount":r?ne:void 0,"aria-rowcount":r?Se+(Ze??ke)+Q.length:void 0,className:a("w-full table-fixed border-separate border-spacing-0",ie),style:{minWidth:Ce==="fill"&&S||void 0,width:Ce==="fit"?_.getTotalSize():"100%"},children:[jsx("colgroup",{children:_.getVisibleLeafColumns().map(l=>{let s=b(l.id);return jsx("col",{style:s.colStyle},l.id)})}),jsx(Ra,{role:r?"rowgroup":void 0,className:a(U?te.tableStickyHeader??"sticky top-0 z-30 backdrop-blur":void 0),children:_.getHeaderGroups().map(l=>jsx(be,{role:r?"row":void 0,"aria-rowindex":r?l.depth+1:void 0,children:l.headers.map(s=>jsx(Ca,{columnGroupHeaderHeight:D,currentDensity:T,currentSorting:t,dir:I,draggedColumnIdRef:L,enableColumnReordering:v,enableColumnResizing:k,header:s,headerGroupHeaders:l.headers,layout:rt(s,b),primeColumnForResize:ye,reorderColumn:we,resizeColumnLabel:X.resizeColumn(typeof s.column.columnDef.header=="string"?s.column.columnDef.header:s.column.id),resetColumnSize:Re,selectionState:s.column.id==="__select__"?ha:void 0,TableHead:wa,uiClassNames:te,gridMode:r,gridColumnIndex:s.isPlaceholder||s.subHeaders.length?void 0:_.getVisibleLeafColumns().findIndex(g=>g.id===s.column.id)+1},s.id))},l.id))}),jsx(fe,{role:r?"rowgroup":void 0,children:$.length||ee.length||ae.length?jsxs(Fragment,{children:[$.map((l,s)=>We(l,s,"top")),aa>0?jsx(be,{"aria-hidden":"true",role:r?"presentation":void 0,children:jsx(E,{colSpan:Math.max(1,ne),className:"border-b-0 p-0",style:{height:aa}})}):null,he.map(({row:l,rowIndex:s})=>We(l,s+$.length)),ea>0?jsx(be,{"aria-hidden":"true",role:r?"presentation":void 0,children:jsx(E,{colSpan:Math.max(1,ne),className:"border-b-0 p-0",style:{height:ea}})}):null,ae.map((l,s)=>We(l,$.length+ee.length+s,"bottom"))]}):jsx(be,{role:r?"row":void 0,"aria-rowindex":r?Se+1:void 0,children:jsx(E,{role:r?"gridcell":void 0,"aria-colindex":r?1:void 0,colSpan:Math.max(1,ne),className:"h-full grow",children:jsx("div",{className:"flex h-full min-h-full w-full grow items-center justify-center",children:M??jsx(m,{title:ce?X.noMatchingRowsTitle:X.noRowsTitle,description:ce?X.noMatchingRowsDescription:X.noRowsDescription})})})})}),Q.length?jsx(ya,{role:r?"rowgroup":void 0,children:Q.map((l,s)=>jsx(be,{role:r?"row":void 0,"aria-rowindex":r?Se+(Ze??ke)+s+1:void 0,children:se.map((g,p)=>{let H=l.cells[g.id]??(p===0?l.label:null);return jsx(E,{role:r?"gridcell":void 0,"aria-colindex":r?p+1:void 0,className:a("border-b font-medium",te.cellBorder),children:typeof H=="function"?H({rows:Sa,columnId:g.id}):H},`${l.key}-${g.id}`)})},l.key))}):null]})}),O?.enabled&&ee.length&&!J?jsx("div",{className:"px-4 pb-4",children:jsx("div",{ref:W,className:"h-4 w-full"})}):null,jsx(c,{orientation:"horizontal"})]})}),Oe]})}function rt(e,a){let i=a(e.column.id);if(e.isPlaceholder||!e.subHeaders.length)return i;let o=e.getLeafHeaders().filter(D=>!D.subHeaders.length).map(D=>a(D.column.id)),n=o[0]?.fixedSide;if(!n||!o.every(D=>D.fixedSide===n))return i;let u=n==="left"?o[0]:o.at(-1);return {...i,fixedSide:n,headerStyle:u?.headerStyle?{left:u.headerStyle.left,right:u.headerStyle.right}:void 0,pinnedClassName:u?.pinnedClassName}}export{dt as a,mt as b,Ta as c,Ca as d,Ut as e};//# sourceMappingURL=chunk-THSY57Y7.js.map +//# sourceMappingURL=chunk-THSY57Y7.js.map \ No newline at end of file diff --git a/dist/chunk-THSY57Y7.js.map b/dist/chunk-THSY57Y7.js.map new file mode 100644 index 0000000..f2f1a33 --- /dev/null +++ b/dist/chunk-THSY57Y7.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/core/data-table/use-row-editing.tsx","../src/core/data-table/data-table-virtual-row-measurement.tsx","../src/core/data-table/data-table-cell-content.tsx","../src/core/data-table/data-table-body-row.tsx","../src/core/data-table/data-table-header-cell.tsx","../src/core/data-table/data-table-table-panel.tsx"],"names":["useRowEditing","columns","editableRows","onError","editingRowId","setEditingRowId","P","draftValues","setDraftValues","draftValuesRef","originalDraftValues","setOriginalDraftValues","editErrors","setEditErrors","isSavingEdit","setIsSavingEdit","isEditDirty","areDraftValuesEqual","cancelEditing","startEditingRow","row","rowId","initialValues","defaultDraftValues","saveEdit","draftSnapshot","rollback","validation","validationErrors","normalizeEditValidationErrors","optimisticResult","error","clearEditError","columnId","current","next","getDataTableLeafColumns","draft","column","renderEditableCell","context","components","editing","Checkbox","Input","meta","accessorKey","draftValue","setDraftValue","value","handleKeyDown","event","inputType","getEditableInputType","jsxs","jsx","checked","getEditableInputValue","rawValue","parsedValue","parseEditableInputValue","left","right","keys","key","type","previousValue","DataTableVirtualRowMeasurementContext","Le","DataTableVirtualRowMeasurementProvider","children","measureRow","useDataTableVirtualRowMeasurement","renderDataTableCellContent","classNames","options","hasCustomCell","renderedCellContent","flexRender","hasComplexRenderedContent","isComplexRenderedCellContent","resolvedOverflow","resolveDataTableCellOverflow","cn","getCellOverflowClassName","IconClock","formatDateValue","content","formatCellValue","useCustomOverflowDefaults","overflow","pa","DataTableBodyRowInner","columnLayouts","currentDensity","editingContext","dragAndDrop","explicitCustomCellColumnIds","getRowClassName","groupToggleLabel","gridMode","gridRowAriaIndex","gridRowIndex","activeGridCell","cellSelectionEnabled","isGridCellSelected","onGridCellFocus","onGridCellKeyDown","onGridCellPointerDown","onGridCellPointerEnter","isDraggable","isDetailExpanded","isEditing","isExpanded","isInitialLoadingRow","isSelected","loadingState","onRowClick","pinnedPosition","originalRow","detailPanel","rowIndex","stripedRows","uiClassNames","visibleCells","visibleLeafColumnCount","Skeleton","TableCell","TableRow","virtualRowMeasurement","measureElement","firstDataColumnId","cell","Ge","isDataTableInteractiveTarget","columnIndex","cellContext","layout","isSelectionColumn","isExpansionColumn","isActionsColumn","isSpacerColumn","hideClassName","hideOnClassName","cellClassName","isDataTableLoadingRow","isCellSelected","getDensityCellClassName","cellAlignClassName","areDataTableBodyRowsEqual","previous","sameLoadingState","sameVisibleCells","sameColumnLayouts","index","nextCell","cells","previousLayout","nextLayout","sameCellStyle","DataTableBodyRow","DataTableHeaderCellInner","columnGroupHeaderHeight","currentSorting","dir","draggedColumnIdRef","enableColumnReordering","enableColumnResizing","gridColumnIndex","header","headerGroupHeaders","primeColumnForResize","reorderColumn","resizeColumnLabel","resetColumnSize","TableHead","headerContentId","Ke","isColumnGroup","groupDefinition","canSort","sortingState","sortingIndex","sort","canReorderColumn","getDensityHeaderClassName","headerAlignClassName","sourceColumnId","headers","item","isUtilityColumnId","currentIndex","target","Fragment","IconChevronDown","IconSelector","getHeaderMaximumSize","getHeaderMinimumSize","leafHeader","getResizableLeafHeaders","grows","resizeHeaderBy","areDataTableHeaderCellsEqual","sameSubHeaders","sameSorting","sameHeaderGroupHeaders","sameHeaderLayout","total","delta","leafHeaders","deltaPerLeaf","minimum","maximum","nextSort","DataTableHeaderCell","DataTableTablePanel","ariaDescribedBy","ariaLabelledBy","bodyRowComponents","cellSelection","currentDetailExpanded","DataTableEmptyState","emptyNode","fillMinWidth","flexGrow","gridPageSize","gridRowOffset","onGridActiveRowIndexChange","onCellSelectionChange","getColumnLayout","getRowLoadingState","infiniteScroll","layoutMode","localSearchValue","renderedRows","topPinnedRows","bottomPinnedRows","resolvedLabels","rowsToRender","ScrollArea","ScrollBar","sentinelRef","shouldRenderInitialLoading","stateOverlayNode","stickyHeader","summaryRows","table","tableClassName","tableContainerClassName","Table","TableBody","TableFooter","TableHeader","tableScrollContainerRef","tableScrollElement","totalRowCount","virtualPaddingBottom","virtualPaddingTop","visibleLeafColumns","selectionState","filteredRows","summarySourceRows","headerRowCount","displayRowCount","activeCell","setActiveCell","shouldRestoreGridFocusRef","pointerSelectingRef","gridRows","getGridCoordinate","selectedBounds","anchorRow","focusRow","anchorColumn","focusColumn","handleGridCellFocus","selectGridCell","extend","focus","anchor","handleGridCellPointerDown","handleGridCellPointerEnter","stopSelecting","frame","moveGridFocus","pageRows","lastRow","lastColumn","nextRow","nextColumn","renderBodyRow","resolvedLoadingState","headerGroup","getHeaderLayout","summaryRow","summaryIndex","columnLayout","leafLayouts","fixedSide","edgeLayout"],"mappings":"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","file":"chunk-THSY57Y7.js","sourcesContent":["import * as React from \"react\";\nimport type { CellContext } from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableColumnType,\n DataTableEditableRowsConfig,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { getDataTableLeafColumns } from \"./data-table-utils\";\n\nexport function useRowEditing({\n columns,\n editableRows,\n onError,\n}: {\n columns: Array>;\n editableRows: DataTableEditableRowsConfig | undefined;\n onError?: (error: unknown, row: TData) => void;\n}) {\n const [editingRowId, setEditingRowId] = React.useState(null);\n const [draftValues, setDraftValues] = React.useState<\n Record\n >({});\n const draftValuesRef = React.useRef(draftValues);\n const [originalDraftValues, setOriginalDraftValues] = React.useState<\n Record\n >({});\n const [editErrors, setEditErrors] = React.useState>(\n {},\n );\n const [isSavingEdit, setIsSavingEdit] = React.useState(false);\n const isEditDirty = React.useMemo(\n () => !areDraftValuesEqual(draftValues, originalDraftValues),\n [draftValues, originalDraftValues],\n );\n\n React.useEffect(() => {\n draftValuesRef.current = draftValues;\n }, [draftValues]);\n\n const cancelEditing = React.useCallback(() => {\n setEditingRowId(null);\n setDraftValues({});\n setEditErrors({});\n setOriginalDraftValues({});\n }, []);\n\n const startEditingRow = React.useCallback(\n (row: TData, rowId: string) => {\n const initialValues =\n editableRows?.getInitialValues?.(row) ??\n defaultDraftValues(row, columns);\n setOriginalDraftValues({ ...initialValues });\n setDraftValues(initialValues);\n setEditErrors({});\n setEditingRowId(rowId);\n },\n [columns, editableRows],\n );\n\n const saveEdit = React.useCallback(\n async (row: TData) => {\n if (!editableRows) {\n return false;\n }\n\n setIsSavingEdit(true);\n const draftSnapshot = { ...draftValuesRef.current };\n let rollback: (() => void) | undefined;\n try {\n const validation = await editableRows.validateRow?.(\n row,\n draftSnapshot,\n );\n const validationErrors = normalizeEditValidationErrors(validation);\n if (Object.keys(validationErrors).length > 0) {\n setEditErrors(validationErrors);\n return false;\n }\n\n setEditErrors({});\n const optimisticResult = editableRows.onOptimisticUpdate?.(\n row,\n draftSnapshot,\n );\n rollback =\n typeof optimisticResult === \"function\"\n ? optimisticResult\n : undefined;\n await editableRows.onSaveRow(row, draftSnapshot);\n editableRows.onSaveSuccess?.(row, draftSnapshot);\n React.startTransition(cancelEditing);\n return true;\n } catch (error) {\n try {\n rollback?.();\n } catch {\n // Preserve the original save error for the public error callbacks.\n }\n editableRows.onSaveError?.(error, row, draftSnapshot);\n onError?.(error, row);\n return false;\n } finally {\n setIsSavingEdit(false);\n }\n },\n [cancelEditing, editableRows, onError],\n );\n const clearEditError = React.useCallback((columnId: string) => {\n setEditErrors((current) => {\n if (!current[columnId] && !current._row) {\n return current;\n }\n const next = { ...current };\n delete next[columnId];\n delete next._row;\n return next;\n });\n }, []);\n\n return {\n cancelEditing,\n clearEditError,\n draftValues,\n editErrors,\n editingRowId,\n isEditDirty,\n isSavingEdit,\n saveEdit,\n setDraftValues,\n setEditingRowId,\n startEditingRow,\n };\n}\n\nfunction defaultDraftValues(\n row: TData,\n columns: Array>,\n) {\n return getDataTableLeafColumns(columns).reduce>(\n (draft, { column }) => {\n if (\"accessorKey\" in column && typeof column.accessorKey === \"string\") {\n draft[column.accessorKey] = (row as Record)[\n column.accessorKey\n ];\n }\n return draft;\n },\n {},\n );\n}\n\nexport function renderEditableCell(\n context: CellContext,\n draftValues: Record,\n setDraftValues: React.Dispatch>>,\n components: Pick,\n editing?: {\n cancel: () => void;\n commit: () => void;\n errors: Record;\n isDirty: boolean;\n isPending: boolean;\n cancelOnEscape: boolean;\n commitOnEnter: boolean;\n onValueChange: (columnId: string) => void;\n },\n) {\n const { Checkbox, Input } = components;\n const column = context.column.columnDef as DataTableColumnDef;\n const meta = column.meta;\n const accessorKey =\n \"accessorKey\" in column && typeof column.accessorKey === \"string\"\n ? column.accessorKey\n : context.column.id;\n const draftValue = draftValues[accessorKey];\n const error =\n editing?.errors[accessorKey] ??\n editing?.errors[context.column.id] ??\n editing?.errors._row;\n const setDraftValue = (value: unknown) => {\n editing?.onValueChange(accessorKey);\n setDraftValues((current) => ({\n ...current,\n [accessorKey]: value,\n }));\n };\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.key === \"Escape\" && editing?.cancelOnEscape) {\n event.preventDefault();\n editing.cancel();\n } else if (\n event.key === \"Enter\" &&\n !event.shiftKey &&\n editing?.commitOnEnter\n ) {\n event.preventDefault();\n editing.commit();\n }\n };\n\n if (meta?.renderEditCell) {\n return meta.renderEditCell({\n cell: context,\n row: context.row.original,\n value: context.getValue(),\n draftValue,\n error,\n isDirty: editing?.isDirty ?? false,\n isPending: editing?.isPending ?? false,\n setDraftValue,\n });\n }\n\n const inputType = getEditableInputType(meta?.type, draftValue);\n\n if (typeof draftValue === \"boolean\") {\n return (\n
    \n {\n setDraftValue(checked === true);\n }}\n onKeyDown={handleKeyDown}\n />\n {error ? (\n \n {error}\n \n ) : null}\n
    \n );\n }\n\n return (\n
    \n ) => {\n const rawValue = event.target.value;\n const parsedValue = meta?.parseEditValue\n ? meta.parseEditValue(rawValue, context)\n : parseEditableInputValue(rawValue, inputType, draftValue);\n setDraftValue(parsedValue);\n }}\n onKeyDown={handleKeyDown}\n />\n {error ? (\n \n {error}\n \n ) : null}\n
    \n );\n}\n\nfunction normalizeEditValidationErrors(\n value: void | string | Record,\n) {\n if (!value) {\n return {};\n }\n return typeof value === \"string\" ? { _row: value } : value;\n}\n\nfunction areDraftValuesEqual(\n left: Record,\n right: Record,\n) {\n const keys = new Set([...Object.keys(left), ...Object.keys(right)]);\n return Array.from(keys).every((key) => Object.is(left[key], right[key]));\n}\n\nfunction getEditableInputType(\n type: DataTableColumnType | undefined,\n value: unknown,\n) {\n if (type === \"numeric\" || typeof value === \"number\") {\n return \"number\";\n }\n\n if (type === \"date\" || value instanceof Date) {\n return \"datetime-local\";\n }\n\n return \"text\";\n}\n\nfunction getEditableInputValue(value: unknown, inputType = \"text\") {\n if (value == null) {\n return \"\";\n }\n\n if (value instanceof Date) {\n return inputType === \"datetime-local\"\n ? value.toISOString().slice(0, 16)\n : value.toISOString();\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n typeof value === \"bigint\"\n ) {\n return String(value);\n }\n\n return \"\";\n}\n\nfunction parseEditableInputValue(\n value: string,\n inputType: string,\n previousValue: unknown,\n) {\n if (inputType === \"number\") {\n return value === \"\" ? null : Number(value);\n }\n\n if (inputType === \"datetime-local\") {\n if (!value) {\n return null;\n }\n return previousValue instanceof Date ? new Date(value) : value;\n }\n\n return value;\n}\n","import * as React from \"react\";\n\nconst DataTableVirtualRowMeasurementContext = React.createContext<\n ((element: HTMLTableRowElement | null) => void) | undefined\n>(undefined);\n\nexport function DataTableVirtualRowMeasurementProvider({\n children,\n measureRow,\n}: {\n children: React.ReactNode;\n measureRow: ((element: HTMLTableRowElement | null) => void) | undefined;\n}) {\n return (\n \n {children}\n \n );\n}\n\nexport function useDataTableVirtualRowMeasurement():\n | ((element: HTMLTableRowElement | null) => void)\n | undefined {\n return React.useContext(DataTableVirtualRowMeasurementContext);\n}\n","import * as React from \"react\";\nimport { flexRender, type CellContext } from \"@tanstack/react-table\";\nimport { IconClock } from \"../icons\";\nimport type {\n DataTableCellOverflow,\n DataTableColumnDef,\n} from \"../types\";\nimport type { DataTableUiClassNames } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nexport function renderDataTableCellContent(\n context: CellContext,\n classNames?: DataTableUiClassNames,\n options?: {\n hasCustomCell?: boolean;\n useCustomOverflowDefaults?: boolean;\n },\n) {\n const column = context.column.columnDef as DataTableColumnDef;\n const meta = column.meta;\n const value = context.getValue();\n const hasCustomCell = options?.hasCustomCell ?? false;\n const renderedCellContent = hasCustomCell && column.cell\n ? flexRender(column.cell, context)\n : undefined;\n const hasComplexRenderedContent = isComplexRenderedCellContent(\n renderedCellContent,\n );\n const resolvedOverflow = resolveDataTableCellOverflow({\n context,\n useCustomOverflowDefaults: options?.useCustomOverflowDefaults ?? false,\n value,\n });\n\n if (meta?.type === \"date\" && !hasCustomCell) {\n return (\n \n \n {formatDateValue(value)}\n \n );\n }\n\n const content =\n renderedCellContent !== undefined &&\n renderedCellContent !== null &&\n renderedCellContent !== \"\"\n ? renderedCellContent\n : value == null || value === \"\"\n ? -\n : formatCellValue(value);\n\n return (\n *]:max-w-full [&>*]:min-w-0\",\n )}\n >\n {content}\n \n );\n}\n\nfunction resolveDataTableCellOverflow({\n context,\n useCustomOverflowDefaults,\n value,\n}: {\n context: CellContext;\n useCustomOverflowDefaults: boolean;\n value: unknown;\n}): DataTableCellOverflow {\n const column = context.column.columnDef as DataTableColumnDef;\n const resolvedOverflow =\n typeof column.meta?.overflow === \"function\"\n ? column.meta.overflow({\n row: context.row.original,\n value,\n })\n : column.meta?.overflow;\n\n if (resolvedOverflow) {\n return resolvedOverflow;\n }\n\n return useCustomOverflowDefaults ? \"clip\" : \"truncate\";\n}\n\nfunction getCellOverflowClassName(overflow: DataTableCellOverflow) {\n switch (overflow) {\n case \"clip\":\n return \"block overflow-hidden whitespace-nowrap\";\n case \"wrap\":\n return \"block overflow-hidden whitespace-normal break-words\";\n case \"visible\":\n return \"block overflow-visible whitespace-normal\";\n case \"truncate\":\n default:\n return \"block overflow-hidden text-ellipsis whitespace-nowrap\";\n }\n}\n\nfunction isComplexRenderedCellContent(content: React.ReactNode) {\n if (content == null) {\n return false;\n }\n\n return (\n React.isValidElement(content) ||\n Array.isArray(content) ||\n typeof content === \"object\"\n );\n}\n\nfunction formatDateValue(value: unknown) {\n if (typeof value === \"number\") {\n return new Date(value * 1000).toLocaleString();\n }\n\n if (typeof value === \"string\" && value) {\n return value;\n }\n\n return \"-\";\n}\n\nfunction formatCellValue(value: unknown) {\n if (value instanceof Date) {\n return value.toLocaleString();\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n typeof value === \"bigint\"\n ) {\n return String(value);\n }\n\n try {\n return JSON.stringify(value);\n } catch {\n return \"-\";\n }\n}\n","import * as React from \"react\";\nimport { flexRender, type Cell, type Row } from \"@tanstack/react-table\";\nimport type { RowPinningPosition } from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableDensity,\n DataTableProps,\n DataTableRowLoadingState,\n} from \"../types\";\nimport type { DataTableUiClassNames, DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { renderDataTableCellContent } from \"./data-table-cell-content\";\nimport type { DataTableColumnLayout } from \"./use-column-layout\";\nimport {\n getDensityCellClassName,\n isDataTableInteractiveTarget,\n isDataTableLoadingRow,\n} from \"./data-table-utils\";\nimport { renderEditableCell } from \"./use-row-editing\";\nimport { useDataTableVirtualRowMeasurement } from \"./data-table-virtual-row-measurement\";\nimport { cellAlignClassName, hideOnClassName } from \"../types\";\n\nexport type DataTableRowEditingContext = {\n cancel: () => void;\n clearError: (columnId: string) => void;\n commit: (row: TData) => void;\n errors: Record;\n isDirty: boolean;\n isPending: boolean;\n cancelOnEscape: boolean;\n commitOnEnter: boolean;\n};\n\ntype DataTableBodyRowProps = {\n columnLayouts: ReadonlyMap;\n components: Pick<\n DataTableUiKit,\n \"Checkbox\" | \"Input\" | \"Skeleton\" | \"TableCell\" | \"TableRow\"\n >;\n currentDensity: DataTableDensity;\n draftValues: Record;\n editingContext?: DataTableRowEditingContext;\n dragAndDrop: DataTableProps[\"dragAndDrop\"];\n explicitCustomCellColumnIds: ReadonlySet;\n getRowClassName: DataTableProps[\"getRowClassName\"];\n groupToggleLabel: string;\n gridMode: boolean;\n gridRowAriaIndex: number;\n gridRowIndex: number;\n activeGridCell: { row: number; column: number };\n cellSelectionEnabled: boolean;\n isGridCellSelected: (row: number, column: number) => boolean;\n onGridCellFocus: (cell: { row: number; column: number }) => void;\n onGridCellKeyDown: (\n event: React.KeyboardEvent,\n row: number,\n column: number,\n ) => void;\n onGridCellPointerDown: (\n event: React.PointerEvent,\n row: number,\n column: number,\n ) => void;\n onGridCellPointerEnter: (\n event: React.PointerEvent,\n row: number,\n column: number,\n ) => void;\n isDraggable: boolean;\n isDetailExpanded: boolean;\n isEditing: boolean;\n isExpanded: boolean;\n isInitialLoadingRow: boolean;\n isSelected: boolean;\n loadingState: DataTableRowLoadingState | undefined;\n onRowClick: DataTableProps[\"onRowClick\"];\n pinnedPosition?: Exclude;\n originalRow: TData;\n detailPanel: DataTableProps[\"detailPanel\"];\n row: Row;\n rowIndex: number;\n setDraftValues: React.Dispatch>>;\n stripedRows: boolean;\n uiClassNames: DataTableUiClassNames;\n visibleCells: Array>;\n visibleLeafColumnCount: number;\n};\n\nfunction DataTableBodyRowInner({\n columnLayouts,\n components,\n currentDensity,\n draftValues,\n editingContext,\n dragAndDrop,\n explicitCustomCellColumnIds,\n getRowClassName,\n groupToggleLabel,\n gridMode,\n gridRowAriaIndex,\n gridRowIndex,\n activeGridCell,\n cellSelectionEnabled,\n isGridCellSelected,\n onGridCellFocus,\n onGridCellKeyDown,\n onGridCellPointerDown,\n onGridCellPointerEnter,\n isDraggable,\n isDetailExpanded,\n isEditing,\n isExpanded,\n isInitialLoadingRow,\n isSelected,\n loadingState,\n onRowClick,\n pinnedPosition,\n originalRow,\n detailPanel,\n row,\n rowIndex,\n setDraftValues,\n stripedRows,\n uiClassNames,\n visibleCells,\n visibleLeafColumnCount,\n}: DataTableBodyRowProps) {\n const { Checkbox, Input, Skeleton, TableCell, TableRow } = components;\n const virtualRowMeasurement = useDataTableVirtualRowMeasurement();\n const measureElement = pinnedPosition ? undefined : virtualRowMeasurement;\n const firstDataColumnId = visibleCells.find(\n (cell) => !columnLayouts.get(cell.column.id)?.isUtilityColumn,\n )?.column.id;\n\n return (\n \n 0 ? row.depth : undefined\n }\n data-dtp-slot={\n pinnedPosition ? \"data-table-pinned-row\" : \"data-table-row\"\n }\n data-row-pinned={pinnedPosition}\n data-row-grouped={row.getIsGrouped() || undefined}\n draggable={isInitialLoadingRow ? false : isDraggable}\n data-loading={loadingState?.isLoading || undefined}\n data-row-index={isInitialLoadingRow ? undefined : rowIndex}\n data-row-parity={\n stripedRows && !isInitialLoadingRow\n ? rowIndex % 2 === 0\n ? \"odd\"\n : \"even\"\n : undefined\n }\n data-state={\n isInitialLoadingRow ? undefined : isSelected ? \"selected\" : undefined\n }\n role={gridMode ? \"row\" : undefined}\n aria-rowindex={gridMode ? gridRowAriaIndex : undefined}\n tabIndex={\n !gridMode && onRowClick && !isInitialLoadingRow ? 0 : undefined\n }\n className={cn(\n !isInitialLoadingRow &&\n getRowClassName?.(originalRow, {\n row: originalRow,\n rowId: row.id,\n rowIndex,\n isEditing,\n isExpanded,\n isLoading: Boolean(loadingState?.isLoading),\n isSelected,\n pinnedPosition: pinnedPosition ?? false,\n }),\n uiClassNames.row,\n pinnedPosition === \"top\" &&\n cn(\"border-b-2\", uiClassNames.rowPinnedTop),\n pinnedPosition === \"bottom\" &&\n cn(\"border-t-2\", uiClassNames.rowPinnedBottom),\n stripedRows &&\n !isInitialLoadingRow &&\n (rowIndex % 2 === 0\n ? uiClassNames.rowOdd\n : uiClassNames.rowEven),\n isSelected && !isInitialLoadingRow && uiClassNames.rowSelected,\n onRowClick && !isInitialLoadingRow && \"cursor-pointer\",\n isInitialLoadingRow && \"pointer-events-none\",\n )}\n onClick={(event: React.MouseEvent) => {\n if (isInitialLoadingRow) {\n return;\n }\n\n if (isDataTableInteractiveTarget(event.target, event.currentTarget)) {\n return;\n }\n\n if (gridMode && cellSelectionEnabled) return;\n\n void onRowClick?.({ row: originalRow, rowId: row.id });\n }}\n onKeyDown={(event: React.KeyboardEvent) => {\n if (\n isInitialLoadingRow ||\n !onRowClick ||\n (event.key !== \"Enter\" && event.key !== \" \")\n ) {\n return;\n }\n\n if (isDataTableInteractiveTarget(event.target, event.currentTarget)) {\n return;\n }\n\n event.preventDefault();\n void onRowClick({ row: originalRow, rowId: row.id });\n }}\n onDragStart={(event: React.DragEvent) => {\n if (isInitialLoadingRow) {\n return;\n }\n\n dragAndDrop?.onRowDragStart?.({\n row: originalRow,\n rowId: row.id,\n event,\n });\n }}\n onDragEnd={(event: React.DragEvent) => {\n if (isInitialLoadingRow) {\n return;\n }\n\n dragAndDrop?.onRowDragEnd?.({\n row: originalRow,\n rowId: row.id,\n event,\n });\n }}\n >\n {visibleCells.map((cell, columnIndex) => {\n const meta = (\n cell.column.columnDef as DataTableColumnDef\n ).meta;\n const cellContext = cell.getContext();\n const value = cell.getValue();\n const layout = columnLayouts.get(cell.column.id);\n const isSelectionColumn = layout?.isSelectionColumn ?? false;\n const isExpansionColumn = layout?.isExpansionColumn ?? false;\n const isActionsColumn = layout?.isActionsColumn ?? false;\n const isSpacerColumn = layout?.isSpacerColumn ?? false;\n const hideClassName = hideOnClassName(meta?.hideOn);\n const cellClassName =\n isInitialLoadingRow || isDataTableLoadingRow(originalRow)\n ? undefined\n : typeof meta?.cellClassName === \"function\"\n ? meta.cellClassName({\n row: originalRow,\n value,\n })\n : meta?.cellClassName;\n const isCellSelected =\n gridMode && cellSelectionEnabled &&\n !isInitialLoadingRow &&\n isGridCellSelected(gridRowIndex, columnIndex);\n\n return (\n onGridCellFocus({ row: gridRowIndex, column: columnIndex })\n : undefined\n }\n onKeyDown={\n gridMode\n ? (event: React.KeyboardEvent) => {\n if (event.target !== event.currentTarget) {\n if (event.key === \"Escape\") {\n event.preventDefault();\n event.currentTarget.focus();\n }\n return;\n }\n onGridCellKeyDown(event, gridRowIndex, columnIndex);\n }\n : undefined\n }\n onPointerDown={\n gridMode &&\n cellSelectionEnabled &&\n !layout?.isUtilityColumn &&\n !isSpacerColumn\n ? (event: React.PointerEvent) => {\n if (isDataTableInteractiveTarget(event.target, event.currentTarget)) return;\n event.currentTarget.focus();\n onGridCellPointerDown(event, gridRowIndex, columnIndex);\n }\n : undefined\n }\n onPointerEnter={\n gridMode &&\n cellSelectionEnabled &&\n !layout?.isUtilityColumn &&\n !isSpacerColumn\n ? (event: React.PointerEvent) => {\n if (isDataTableInteractiveTarget(event.target, event.currentTarget)) return;\n onGridCellPointerEnter(event, gridRowIndex, columnIndex);\n }\n : undefined\n }\n className={cn(\n \"border-b\",\n getDensityCellClassName(currentDensity),\n uiClassNames.cellBorder,\n isCellSelected && uiClassNames.cellSelected,\n layout?.utilityClassName,\n layout?.isSpacerColumn && \"border-b-0 bg-transparent p-0\",\n layout?.pinnedClassName,\n hideClassName,\n cellAlignClassName(cellContext),\n meta?.responsiveClassName,\n cellClassName,\n )}\n style={layout?.cellStyle}\n >\n 0 && cell.column.id === firstDataColumnId\n ? { paddingInlineStart: `${row.depth}rem` }\n : undefined\n }\n >\n {loadingState?.isLoading ? (\n (meta?.skeleton?.(cellContext) ??\n loadingState.skeleton ?? (\n \n ))\n ) : isEditing &&\n cell.column.id !== \"__select__\" &&\n cell.column.id !== \"__expand__\" &&\n cell.column.id !== \"__actions__\" ? (\n renderEditableCell(\n cellContext,\n draftValues,\n setDraftValues,\n {\n Checkbox,\n Input,\n },\n editingContext\n ? {\n cancel: editingContext.cancel,\n cancelOnEscape: editingContext.cancelOnEscape,\n commit: () => editingContext.commit(originalRow),\n commitOnEnter: editingContext.commitOnEnter,\n errors: editingContext.errors,\n isDirty: editingContext.isDirty,\n isPending: editingContext.isPending,\n onValueChange: editingContext.clearError,\n }\n : undefined,\n )\n ) : row.getIsGrouped() && cell.getIsPlaceholder() ? null : row.getIsGrouped() && cell.getIsGrouped() ? (\n row.toggleExpanded()}\n aria-expanded={row.getIsExpanded()}\n aria-label={groupToggleLabel}\n >\n \n {renderDataTableCellContent(cellContext, uiClassNames, {\n hasCustomCell:\n explicitCustomCellColumnIds.has(cell.column.id),\n useCustomOverflowDefaults:\n explicitCustomCellColumnIds.has(cell.column.id),\n })}\n \n \n ({row.subRows.length})\n \n \n ) : row.getIsGrouped() && cell.getIsAggregated() ? (\n cell.column.columnDef.aggregatedCell\n ? flexRender(cell.column.columnDef.aggregatedCell, cellContext)\n : renderDataTableCellContent(cellContext, uiClassNames, {\n hasCustomCell: false,\n useCustomOverflowDefaults: false,\n })\n ) : (\n renderDataTableCellContent(cellContext, uiClassNames, {\n hasCustomCell:\n explicitCustomCellColumnIds.has(cell.column.id) ||\n isSelectionColumn ||\n isExpansionColumn ||\n isActionsColumn ||\n isSpacerColumn,\n useCustomOverflowDefaults:\n explicitCustomCellColumnIds.has(cell.column.id) ||\n isSelectionColumn ||\n isExpansionColumn ||\n isActionsColumn ||\n isSpacerColumn,\n })\n )}\n \n \n );\n })}\n \n {!isInitialLoadingRow && detailPanel && isDetailExpanded ? (\n \n \n {detailPanel.render({\n row: originalRow,\n rowId: row.id,\n tableRow: row,\n })}\n \n \n ) : null}\n \n );\n}\n\nfunction areDataTableBodyRowsEqual(\n previous: DataTableBodyRowProps,\n next: DataTableBodyRowProps,\n) {\n return (\n previous.row.id === next.row.id &&\n previous.row.original === next.row.original &&\n previous.rowIndex === next.rowIndex &&\n previous.isSelected === next.isSelected &&\n previous.isInitialLoadingRow === next.isInitialLoadingRow &&\n previous.isEditing === next.isEditing &&\n (!previous.isEditing || previous.editingContext === next.editingContext) &&\n previous.isExpanded === next.isExpanded &&\n previous.isDraggable === next.isDraggable &&\n sameLoadingState(previous.loadingState, next.loadingState) &&\n sameVisibleCells(previous.visibleCells, next.visibleCells) &&\n previous.components === next.components &&\n sameColumnLayouts(\n previous.columnLayouts,\n next.columnLayouts,\n next.visibleCells,\n ) &&\n previous.currentDensity === next.currentDensity &&\n previous.detailPanel === next.detailPanel &&\n previous.isDetailExpanded === next.isDetailExpanded &&\n previous.pinnedPosition === next.pinnedPosition &&\n previous.onRowClick === next.onRowClick &&\n previous.dragAndDrop === next.dragAndDrop &&\n previous.getRowClassName === next.getRowClassName &&\n previous.groupToggleLabel === next.groupToggleLabel &&\n previous.gridMode === next.gridMode &&\n (!next.gridMode ||\n (previous.gridRowAriaIndex === next.gridRowAriaIndex &&\n previous.gridRowIndex === next.gridRowIndex &&\n previous.activeGridCell.row === next.activeGridCell.row &&\n previous.activeGridCell.column === next.activeGridCell.column &&\n previous.cellSelectionEnabled === next.cellSelectionEnabled &&\n previous.isGridCellSelected === next.isGridCellSelected &&\n previous.onGridCellFocus === next.onGridCellFocus &&\n previous.onGridCellKeyDown === next.onGridCellKeyDown &&\n previous.onGridCellPointerDown === next.onGridCellPointerDown &&\n previous.onGridCellPointerEnter === next.onGridCellPointerEnter)) &&\n previous.stripedRows === next.stripedRows &&\n previous.uiClassNames === next.uiClassNames &&\n previous.explicitCustomCellColumnIds === next.explicitCustomCellColumnIds &&\n (!previous.isEditing || previous.draftValues === next.draftValues)\n );\n}\n\nfunction sameLoadingState(\n previous: DataTableRowLoadingState | undefined,\n next: DataTableRowLoadingState | undefined,\n) {\n return (\n previous?.isLoading === next?.isLoading &&\n previous?.skeleton === next?.skeleton\n );\n}\n\nfunction sameVisibleCells(\n previous: Array>,\n next: Array>,\n) {\n return (\n previous.length === next.length &&\n previous.every((cell, index) => {\n const nextCell = next[index];\n return nextCell?.id === cell.id && nextCell.column.id === cell.column.id;\n })\n );\n}\n\nfunction sameColumnLayouts(\n previous: ReadonlyMap,\n next: ReadonlyMap,\n cells: Array>,\n) {\n return cells.every((cell) => {\n const previousLayout = previous.get(cell.column.id);\n const nextLayout = next.get(cell.column.id);\n\n return (\n previousLayout?.fixedSide === nextLayout?.fixedSide &&\n previousLayout?.isActionsColumn === nextLayout?.isActionsColumn &&\n previousLayout?.isExpansionColumn === nextLayout?.isExpansionColumn &&\n previousLayout?.isSelectionColumn === nextLayout?.isSelectionColumn &&\n previousLayout?.isSpacerColumn === nextLayout?.isSpacerColumn &&\n previousLayout?.isUtilityColumn === nextLayout?.isUtilityColumn &&\n previousLayout?.pinnedClassName === nextLayout?.pinnedClassName &&\n previousLayout?.utilityClassName === nextLayout?.utilityClassName &&\n sameCellStyle(previousLayout?.cellStyle, nextLayout?.cellStyle)\n );\n });\n}\n\nfunction sameCellStyle(\n previous: React.CSSProperties | undefined,\n next: React.CSSProperties | undefined,\n) {\n return (\n previous?.width === next?.width &&\n previous?.minWidth === next?.minWidth &&\n previous?.maxWidth === next?.maxWidth &&\n previous?.left === next?.left &&\n previous?.right === next?.right\n );\n}\n\nexport const DataTableBodyRow = React.memo(\n DataTableBodyRowInner,\n areDataTableBodyRowsEqual,\n) as typeof DataTableBodyRowInner;\n","import * as React from \"react\";\nimport { flexRender } from \"@tanstack/react-table\";\nimport { IconChevronDown, IconSelector } from \"../icons\";\nimport type { Header, SortingState } from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableColumnGroupDef,\n DataTableDensity,\n DataTableProps,\n} from \"../types\";\nimport type { DataTableUiClassNames, DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport type { DataTableColumnLayout } from \"./use-column-layout\";\nimport {\n getDensityHeaderClassName,\n isUtilityColumnId,\n} from \"./data-table-utils\";\nimport { headerAlignClassName, hideOnClassName } from \"../types\";\n\ntype DataTableHeaderCellProps = {\n columnGroupHeaderHeight: DataTableProps[\"columnGroupHeaderHeight\"];\n currentDensity: DataTableDensity;\n currentSorting: SortingState;\n dir: NonNullable[\"dir\"]>;\n draggedColumnIdRef: React.MutableRefObject;\n enableColumnReordering: boolean;\n enableColumnResizing: boolean;\n gridColumnIndex?: number;\n gridMode: boolean;\n header: Header;\n headerGroupHeaders: Array>;\n layout: DataTableColumnLayout;\n primeColumnForResize: (columnId: string, currentSize: number) => void;\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n resizeColumnLabel: string;\n resetColumnSize: (columnId: string) => void;\n // Rendered through flexRender inside the header def; carried as a prop so\n // the memo comparator re-renders the selection header when it changes.\n selectionState?: boolean | \"indeterminate\";\n TableHead: DataTableUiKit[\"TableHead\"];\n uiClassNames: DataTableUiClassNames;\n};\n\nfunction DataTableHeaderCellInner({\n columnGroupHeaderHeight,\n currentDensity,\n currentSorting,\n dir,\n draggedColumnIdRef,\n enableColumnReordering,\n enableColumnResizing,\n gridColumnIndex,\n gridMode,\n header,\n headerGroupHeaders,\n layout,\n primeColumnForResize,\n reorderColumn,\n resizeColumnLabel,\n resetColumnSize,\n TableHead,\n uiClassNames,\n}: DataTableHeaderCellProps) {\n const meta = (header.column.columnDef as DataTableColumnDef)\n .meta;\n const headerContentId = React.useId();\n const isColumnGroup =\n !header.isPlaceholder && header.subHeaders.length > 0;\n const groupDefinition = isColumnGroup\n ? (header.column.columnDef as DataTableColumnGroupDef)\n : undefined;\n const canSort = header.column.getCanSort();\n const sortingState = header.column.getIsSorted();\n const sortingIndex = currentSorting.findIndex(\n (sort) => sort.id === header.column.id,\n );\n const canReorderColumn =\n enableColumnReordering &&\n !header.isPlaceholder &&\n !isColumnGroup &&\n !layout.isUtilityColumn &&\n !layout.isSpacerColumn;\n const hideClassName = hideOnClassName(meta?.hideOn);\n\n return (\n ) => {\n draggedColumnIdRef.current = header.column.id;\n event.dataTransfer.effectAllowed = \"move\";\n }\n : undefined\n }\n onDragOver={\n canReorderColumn\n ? (event: React.DragEvent) => {\n event.preventDefault();\n event.dataTransfer.dropEffect = \"move\";\n }\n : undefined\n }\n onDrop={\n canReorderColumn\n ? (event: React.DragEvent) => {\n event.preventDefault();\n const sourceColumnId = draggedColumnIdRef.current;\n draggedColumnIdRef.current = null;\n if (sourceColumnId) {\n reorderColumn(sourceColumnId, header.column.id);\n }\n }\n : undefined\n }\n onKeyDown={\n canReorderColumn\n ? (event: React.KeyboardEvent) => {\n if (\n !event.altKey ||\n (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\")\n ) {\n return;\n }\n\n event.preventDefault();\n const headers = headerGroupHeaders.filter(\n (item) =>\n !isUtilityColumnId(item.column.id) &&\n item.column.id !== \"__spacer__\",\n );\n const currentIndex = headers.findIndex(\n (item) => item.column.id === header.column.id,\n );\n const target =\n headers[\n (event.key === \"ArrowLeft\") !== (dir === \"rtl\")\n ? currentIndex - 1\n : currentIndex + 1\n ];\n if (target) {\n reorderColumn(header.column.id, target.column.id);\n }\n }\n : undefined\n }\n >\n {header.isPlaceholder ? null : canSort ? (\n \n \n {flexRender(header.column.columnDef.header, header.getContext())}\n \n {sortingState ? (\n <>\n \n {currentSorting.length > 1 && sortingIndex >= 0 ? (\n \n {sortingIndex + 1}\n \n ) : null}\n \n ) : (\n \n )}\n \n ) : (\n layout.isUtilityColumn || layout.isSpacerColumn ? (\n flexRender(header.column.columnDef.header, header.getContext())\n ) : (\n \n {flexRender(header.column.columnDef.header, header.getContext())}\n \n )\n )}\n\n {enableColumnResizing &&\n !header.isPlaceholder &&\n header.column.getCanResize() ? (\n {\n for (const leafHeader of getResizableLeafHeaders(header)) {\n resetColumnSize(leafHeader.column.id);\n }\n }}\n onMouseDown={(event) => {\n for (const leafHeader of getResizableLeafHeaders(header)) {\n primeColumnForResize(\n leafHeader.column.id,\n leafHeader.getSize(),\n );\n }\n header.getResizeHandler()(event);\n }}\n onTouchStart={(event) => {\n for (const leafHeader of getResizableLeafHeaders(header)) {\n primeColumnForResize(\n leafHeader.column.id,\n leafHeader.getSize(),\n );\n }\n header.getResizeHandler()(event);\n }}\n onKeyDown={(event) => {\n if (event.altKey) {\n return;\n }\n if (event.key === \"Home\") {\n event.preventDefault();\n for (const leafHeader of getResizableLeafHeaders(header)) {\n resetColumnSize(leafHeader.column.id);\n }\n return;\n }\n if (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\") {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n const grows =\n (event.key === \"ArrowRight\") !== (dir === \"rtl\");\n resizeHeaderBy(\n header,\n (grows ? 1 : -1) * (event.shiftKey ? 25 : 10),\n );\n }}\n className={cn(\n \"absolute inset-y-0 z-50 h-full w-3 cursor-col-resize touch-none select-none ltr:right-0 ltr:translate-x-1/2 rtl:left-0 rtl:-translate-x-1/2 after:absolute after:top-0 after:left-1/2 after:h-full after:w-px after:-translate-x-1/2\",\n uiClassNames.resizeHandle ??\n \"after:bg-current after:opacity-20 hover:after:opacity-70\",\n header.column.getIsResizing() &&\n (uiClassNames.resizeHandleActive ?? \"after:opacity-100\"),\n )}\n />\n ) : null}\n \n );\n}\n\nfunction areDataTableHeaderCellsEqual(\n previous: DataTableHeaderCellProps,\n next: DataTableHeaderCellProps,\n) {\n return (\n previous.header.id === next.header.id &&\n previous.header.column.id === next.header.column.id &&\n previous.header.column.columnDef === next.header.column.columnDef &&\n previous.header.colSpan === next.header.colSpan &&\n previous.header.isPlaceholder === next.header.isPlaceholder &&\n sameSubHeaders(previous.header, next.header) &&\n previous.currentDensity === next.currentDensity &&\n previous.columnGroupHeaderHeight === next.columnGroupHeaderHeight &&\n previous.dir === next.dir &&\n previous.enableColumnReordering === next.enableColumnReordering &&\n previous.enableColumnResizing === next.enableColumnResizing &&\n previous.gridMode === next.gridMode &&\n previous.gridColumnIndex === next.gridColumnIndex &&\n previous.TableHead === next.TableHead &&\n previous.uiClassNames === next.uiClassNames &&\n previous.draggedColumnIdRef === next.draggedColumnIdRef &&\n previous.primeColumnForResize === next.primeColumnForResize &&\n previous.reorderColumn === next.reorderColumn &&\n previous.resizeColumnLabel === next.resizeColumnLabel &&\n previous.resetColumnSize === next.resetColumnSize &&\n previous.selectionState === next.selectionState &&\n sameSorting(previous.currentSorting, next.currentSorting) &&\n sameHeaderGroupHeaders(\n previous.headerGroupHeaders,\n next.headerGroupHeaders,\n ) &&\n sameHeaderLayout(previous.layout, next.layout)\n );\n}\n\nfunction getResizableLeafHeaders(header: Header) {\n if (!header.subHeaders.length) {\n return [header];\n }\n\n return header\n .getLeafHeaders()\n .filter((leafHeader) => !leafHeader.subHeaders.length);\n}\n\nfunction getHeaderMinimumSize(header: Header) {\n return getResizableLeafHeaders(header).reduce(\n (total, leafHeader) =>\n total + (leafHeader.column.columnDef.minSize ?? 20),\n 0,\n );\n}\n\nfunction getHeaderMaximumSize(header: Header) {\n return getResizableLeafHeaders(header).reduce(\n (total, leafHeader) =>\n total + (leafHeader.column.columnDef.maxSize ?? Number.MAX_SAFE_INTEGER),\n 0,\n );\n}\n\nfunction resizeHeaderBy(\n header: Header,\n delta: number,\n) {\n const leafHeaders = getResizableLeafHeaders(header);\n const deltaPerLeaf = delta / leafHeaders.length;\n header.getContext().table.setColumnSizing((current) => {\n const next = { ...current };\n\n for (const leafHeader of leafHeaders) {\n const column = leafHeader.column;\n const minimum = column.columnDef.minSize ?? 20;\n const maximum =\n column.columnDef.maxSize ?? Number.MAX_SAFE_INTEGER;\n next[column.id] = Math.min(\n maximum,\n Math.max(minimum, column.getSize() + deltaPerLeaf),\n );\n }\n\n return next;\n });\n}\n\nfunction sameSubHeaders(\n previous: Header,\n next: Header,\n) {\n return (\n previous.subHeaders.length === next.subHeaders.length &&\n previous.subHeaders.every(\n (header, index) => next.subHeaders[index]?.id === header.id,\n )\n );\n}\n\nfunction sameSorting(previous: SortingState, next: SortingState) {\n return (\n previous.length === next.length &&\n previous.every((sort, index) => {\n const nextSort = next[index];\n return nextSort?.id === sort.id && nextSort.desc === sort.desc;\n })\n );\n}\n\nfunction sameHeaderGroupHeaders(\n previous: Array>,\n next: Array>,\n) {\n return (\n previous.length === next.length &&\n previous.every((header, index) => next[index]?.id === header.id)\n );\n}\n\nfunction sameHeaderLayout(\n previous: DataTableColumnLayout,\n next: DataTableColumnLayout,\n) {\n return (\n previous.fixedSide === next.fixedSide &&\n previous.isSpacerColumn === next.isSpacerColumn &&\n previous.isUtilityColumn === next.isUtilityColumn &&\n previous.pinnedClassName === next.pinnedClassName &&\n previous.utilityClassName === next.utilityClassName &&\n previous.headerStyle?.width === next.headerStyle?.width &&\n previous.headerStyle?.minWidth === next.headerStyle?.minWidth &&\n previous.headerStyle?.maxWidth === next.headerStyle?.maxWidth &&\n previous.headerStyle?.left === next.headerStyle?.left &&\n previous.headerStyle?.right === next.headerStyle?.right\n );\n}\n\nexport const DataTableHeaderCell = React.memo(\n DataTableHeaderCellInner,\n areDataTableHeaderCellsEqual,\n) as typeof DataTableHeaderCellInner;\n","import * as React from \"react\";\nimport type {\n Column,\n ExpandedState,\n Header,\n RowPinningPosition,\n Row,\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableDensity,\n DataTableCellSelection,\n DataTableProps,\n DataTableRowLoadingState,\n} from \"../types\";\nimport type { DataTableUiClassNames, DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport {\n DataTableBodyRow,\n type DataTableRowEditingContext,\n} from \"./data-table-body-row\";\nimport { DataTableHeaderCell } from \"./data-table-header-cell\";\nimport type { DataTableColumnLayout } from \"./use-column-layout\";\nimport { isDataTableLoadingRow, isUtilityColumnId } from \"./data-table-utils\";\nimport type { DataTableLabels } from \"../types\";\n\nexport type DataTableTablePanelProps = {\n ariaDescribedBy: string | undefined;\n ariaLabelledBy: string | undefined;\n bodyRowComponents: Pick<\n DataTableUiKit,\n \"Checkbox\" | \"Input\" | \"Skeleton\" | \"TableCell\" | \"TableRow\"\n >;\n cellSelection: DataTableCellSelection | null;\n cellSelectionEnabled: boolean;\n columnLayouts: ReadonlyMap;\n columnGroupHeaderHeight: DataTableProps[\"columnGroupHeaderHeight\"];\n currentDensity: DataTableDensity;\n currentDetailExpanded: ExpandedState;\n currentSorting: DataTableProps[\"sorting\"];\n dir: NonNullable[\"dir\"]>;\n DataTableEmptyState: React.ElementType;\n dragAndDrop: DataTableProps[\"dragAndDrop\"];\n draggedColumnIdRef: React.RefObject;\n draftValues: Record;\n editingRowId: string | null;\n editingContext?: DataTableRowEditingContext;\n emptyNode: React.ReactNode;\n enableColumnReordering: boolean;\n enableColumnResizing: boolean;\n explicitCustomCellColumnIds: ReadonlySet;\n fillMinWidth: number;\n flexGrow: boolean;\n gridMode: boolean;\n gridPageSize?: number;\n gridRowOffset: number;\n onGridActiveRowIndexChange?: (rowIndex: number) => void;\n onCellSelectionChange: (selection: DataTableCellSelection | null) => void;\n getColumnLayout: (columnId: string) => DataTableColumnLayout;\n getRowClassName: DataTableProps[\"getRowClassName\"];\n getRowLoadingState: DataTableProps[\"getRowLoadingState\"];\n infiniteScroll: DataTableProps[\"infiniteScroll\"];\n layoutMode: \"fill\" | \"fit\";\n localSearchValue: string;\n onRowClick: DataTableProps[\"onRowClick\"];\n primeColumnForResize: (columnId: string, currentSize: number) => void;\n renderedRows: Array>;\n detailPanel: DataTableProps[\"detailPanel\"];\n topPinnedRows: Array>;\n bottomPinnedRows: Array>;\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n resetColumnSize: (columnId: string) => void;\n resolvedLabels: DataTableLabels;\n rowsToRender: Array<{ row: Row; rowIndex: number }>;\n ScrollArea: DataTableUiKit[\"ScrollArea\"];\n ScrollBar: DataTableUiKit[\"ScrollBar\"];\n sentinelRef: React.RefObject;\n setDraftValues: React.Dispatch>>;\n shouldRenderInitialLoading: boolean;\n stateOverlayNode?: React.ReactNode;\n stickyHeader: boolean;\n stripedRows: boolean;\n summaryRows: NonNullable[\"summaryRows\"]>;\n table: TanStackTable;\n tableClassName: string | undefined;\n tableContainerClassName: string | undefined;\n Table: DataTableUiKit[\"Table\"];\n TableBody: DataTableUiKit[\"TableBody\"];\n TableCell: DataTableUiKit[\"TableCell\"];\n TableFooter: DataTableUiKit[\"TableFooter\"];\n TableHead: DataTableUiKit[\"TableHead\"];\n TableHeader: DataTableUiKit[\"TableHeader\"];\n TableRow: DataTableUiKit[\"TableRow\"];\n tableScrollContainerRef: React.RefObject;\n tableScrollElement?: HTMLElement | null;\n totalRowCount?: number;\n uiClassNames: DataTableUiClassNames;\n viewportHeight?: number;\n virtualization?: DataTableProps[\"virtualization\"];\n virtualPaddingBottom: number;\n virtualPaddingTop: number;\n visibleLeafColumnCount: number;\n visibleLeafColumns: Array>;\n};\n\nexport function DataTableTablePanel({\n ariaDescribedBy,\n ariaLabelledBy,\n bodyRowComponents,\n cellSelection,\n cellSelectionEnabled,\n columnLayouts,\n columnGroupHeaderHeight,\n currentDensity,\n currentDetailExpanded,\n currentSorting = [],\n dir,\n DataTableEmptyState,\n dragAndDrop,\n draggedColumnIdRef,\n draftValues,\n editingRowId,\n editingContext,\n emptyNode,\n enableColumnReordering,\n enableColumnResizing,\n explicitCustomCellColumnIds,\n fillMinWidth,\n flexGrow,\n gridMode,\n gridPageSize,\n gridRowOffset,\n onGridActiveRowIndexChange,\n onCellSelectionChange,\n getColumnLayout,\n getRowClassName,\n getRowLoadingState,\n infiniteScroll,\n layoutMode,\n localSearchValue,\n onRowClick,\n primeColumnForResize,\n renderedRows,\n detailPanel,\n topPinnedRows,\n bottomPinnedRows,\n reorderColumn,\n resetColumnSize,\n resolvedLabels,\n rowsToRender,\n ScrollArea,\n ScrollBar,\n sentinelRef,\n setDraftValues,\n shouldRenderInitialLoading,\n stateOverlayNode,\n stickyHeader,\n stripedRows,\n summaryRows,\n table,\n tableClassName,\n tableContainerClassName,\n Table,\n TableBody,\n TableCell,\n TableFooter = \"tfoot\",\n TableHead,\n TableHeader,\n TableRow,\n tableScrollContainerRef,\n tableScrollElement,\n totalRowCount,\n uiClassNames,\n virtualPaddingBottom,\n virtualPaddingTop,\n visibleLeafColumnCount,\n visibleLeafColumns,\n}: DataTableTablePanelProps) {\n const selectionState: boolean | \"indeterminate\" =\n table.getIsAllPageRowsSelected()\n ? true\n : table.getIsSomePageRowsSelected()\n ? \"indeterminate\"\n : false;\n const filteredRows = table.getFilteredRowModel().rows;\n const summarySourceRows = React.useMemo(\n () =>\n summaryRows.length\n ? filteredRows.map((row) => row.original)\n : [],\n [filteredRows, summaryRows.length],\n );\n const headerRowCount = table.getHeaderGroups().length;\n const displayRowCount =\n topPinnedRows.length + renderedRows.length + bottomPinnedRows.length;\n const [activeCell, setActiveCell] = React.useState({ row: 0, column: 0 });\n const shouldRestoreGridFocusRef = React.useRef(false);\n const pointerSelectingRef = React.useRef(false);\n const gridRows = React.useMemo(\n () => [...topPinnedRows, ...renderedRows, ...bottomPinnedRows],\n [bottomPinnedRows, renderedRows, topPinnedRows],\n );\n const getGridCoordinate = React.useCallback(\n (rowIndex: number, columnIndex: number) => {\n const row = gridRows[rowIndex];\n const column = visibleLeafColumns[columnIndex];\n return row &&\n column &&\n !isUtilityColumnId(column.id) &&\n column.id !== \"__spacer__\"\n ? { rowId: row.id, columnId: column.id }\n : undefined;\n },\n [gridRows, visibleLeafColumns],\n );\n const selectedBounds = React.useMemo(() => {\n if (!cellSelection) return undefined;\n const anchorRow = gridRows.findIndex((row) => row.id === cellSelection.anchor.rowId);\n const focusRow = gridRows.findIndex((row) => row.id === cellSelection.focus.rowId);\n const anchorColumn = visibleLeafColumns.findIndex(\n (column) => column.id === cellSelection.anchor.columnId,\n );\n const focusColumn = visibleLeafColumns.findIndex(\n (column) => column.id === cellSelection.focus.columnId,\n );\n if (anchorRow < 0 || focusRow < 0 || anchorColumn < 0 || focusColumn < 0) return undefined;\n return {\n firstRow: Math.min(anchorRow, focusRow),\n lastRow: Math.max(anchorRow, focusRow),\n firstColumn: Math.min(anchorColumn, focusColumn),\n lastColumn: Math.max(anchorColumn, focusColumn),\n };\n }, [cellSelection, gridRows, visibleLeafColumns]);\n const isGridCellSelected = React.useCallback(\n (rowIndex: number, columnIndex: number) =>\n Boolean(\n selectedBounds &&\n rowIndex >= selectedBounds.firstRow &&\n rowIndex <= selectedBounds.lastRow &&\n columnIndex >= selectedBounds.firstColumn &&\n columnIndex <= selectedBounds.lastColumn,\n ),\n [selectedBounds],\n );\n const handleGridCellFocus = React.useCallback(\n (cell: { row: number; column: number }) => {\n shouldRestoreGridFocusRef.current = true;\n setActiveCell(cell);\n },\n [],\n );\n const selectGridCell = React.useCallback(\n (rowIndex: number, columnIndex: number, extend: boolean) => {\n if (!cellSelectionEnabled) return;\n const focus = getGridCoordinate(rowIndex, columnIndex);\n if (!focus) return;\n const anchor =\n extend && cellSelection?.anchor\n ? cellSelection.anchor\n : focus;\n onCellSelectionChange({ anchor, focus });\n },\n [cellSelection, cellSelectionEnabled, getGridCoordinate, onCellSelectionChange],\n );\n const handleGridCellPointerDown = React.useCallback(\n (event: React.PointerEvent, rowIndex: number, columnIndex: number) => {\n if (!cellSelectionEnabled || event.button !== 0) return;\n // Keep native text/image dragging from taking ownership of the pointer\n // stream before the range reaches its destination cell.\n event.preventDefault();\n pointerSelectingRef.current = true;\n selectGridCell(rowIndex, columnIndex, event.shiftKey);\n },\n [cellSelectionEnabled, selectGridCell],\n );\n const handleGridCellPointerEnter = React.useCallback(\n (event: React.PointerEvent, rowIndex: number, columnIndex: number) => {\n if (!cellSelectionEnabled || !pointerSelectingRef.current || event.buttons !== 1) return;\n selectGridCell(rowIndex, columnIndex, true);\n },\n [cellSelectionEnabled, selectGridCell],\n );\n React.useEffect(() => {\n const stopSelecting = () => { pointerSelectingRef.current = false; };\n window.addEventListener(\"pointerup\", stopSelecting);\n return () => window.removeEventListener(\"pointerup\", stopSelecting);\n }, []);\n\n // Keep focus on the roving cell after sorting, filtering, or a virtual row\n // range changes. A missing target is normal while a virtualizer is rendering.\n React.useEffect(() => {\n if (!gridMode) return;\n onGridActiveRowIndexChange?.(activeCell.row);\n const frame = requestAnimationFrame(() => {\n const cells = tableScrollContainerRef.current?.querySelectorAll(\n '[data-dtp-grid-cell=\"true\"]',\n );\n const target = Array.from(cells ?? []).find(\n (cell) =>\n Number(cell.dataset.gridRowIndex) === activeCell.row &&\n Number(cell.dataset.gridColumnIndex) === activeCell.column,\n );\n if (target && shouldRestoreGridFocusRef.current) {\n target.focus();\n }\n });\n return () => cancelAnimationFrame(frame);\n }, [activeCell, gridMode, onGridActiveRowIndexChange, tableScrollContainerRef]);\n\n const moveGridFocus = React.useCallback(\n (event: React.KeyboardEvent, row: number, column: number) => {\n if (event.defaultPrevented || event.target !== event.currentTarget) return;\n const pageRows = Math.max(\n 1,\n gridPageSize ?? (\n Math.floor(\n (tableScrollElement?.clientHeight || 0) /\n Math.max(1, (tableScrollElement?.querySelector(\"tr\") as HTMLElement | null)?.offsetHeight || 48),\n ) || 10),\n );\n const lastRow = Math.max(0, displayRowCount - 1);\n const lastColumn = Math.max(0, visibleLeafColumnCount - 1);\n let nextRow = row;\n let nextColumn = column;\n switch (event.key) {\n case \"ArrowUp\": nextRow--; break;\n case \"ArrowDown\": nextRow++; break;\n case \"ArrowLeft\": nextColumn--; break;\n case \"ArrowRight\": nextColumn++; break;\n case \"Home\":\n if (event.ctrlKey || event.metaKey) { nextRow = 0; nextColumn = 0; } else nextColumn = 0;\n break;\n case \"End\":\n if (event.ctrlKey || event.metaKey) { nextRow = lastRow; nextColumn = lastColumn; } else nextColumn = lastColumn;\n break;\n case \"PageUp\": nextRow -= pageRows; break;\n case \"PageDown\": nextRow += pageRows; break;\n default: return;\n }\n event.preventDefault();\n const nextCell = {\n row: Math.min(lastRow, Math.max(0, nextRow)),\n column: Math.min(lastColumn, Math.max(0, nextColumn)),\n };\n setActiveCell(nextCell);\n if (event.shiftKey && cellSelectionEnabled) {\n const focus = getGridCoordinate(nextCell.row, nextCell.column);\n const anchor =\n cellSelection?.anchor ?? getGridCoordinate(row, column) ?? focus;\n if (anchor && focus) onCellSelectionChange({ anchor, focus });\n }\n },\n [\n cellSelection,\n cellSelectionEnabled,\n displayRowCount,\n getGridCoordinate,\n gridPageSize,\n onCellSelectionChange,\n tableScrollElement,\n visibleLeafColumnCount,\n ],\n );\n const renderBodyRow = (\n row: Row,\n rowIndex: number,\n pinnedPosition?: Exclude,\n ) => {\n const originalRow = row.original;\n const isInitialLoadingRow = isDataTableLoadingRow(originalRow);\n const loadingState = isInitialLoadingRow\n ? { isLoading: true }\n : getRowLoadingState?.(originalRow, rowIndex);\n const resolvedLoadingState: DataTableRowLoadingState | undefined =\n typeof loadingState === \"boolean\"\n ? { isLoading: loadingState }\n : loadingState;\n const isDraggable = isInitialLoadingRow\n ? false\n : (dragAndDrop?.getRowDraggable?.(originalRow) ?? false);\n\n return (\n \n );\n };\n\n return (\n \n \n \n
    \n \n \n {table.getVisibleLeafColumns().map((column) => {\n const layout = getColumnLayout(column.id);\n return ;\n })}\n \n \n {table.getHeaderGroups().map((headerGroup) => (\n \n {headerGroup.headers.map((header) => (\n column.id === header.column.id,\n ) + 1\n }\n />\n ))}\n \n ))}\n \n \n {topPinnedRows.length || renderedRows.length || bottomPinnedRows.length ? (\n <>\n {topPinnedRows.map((row, index) =>\n renderBodyRow(row, index, \"top\"),\n )}\n {virtualPaddingTop > 0 ? (\n \n \n \n ) : null}\n {rowsToRender.map(({ row, rowIndex }) =>\n renderBodyRow(row, rowIndex + topPinnedRows.length),\n )}\n {virtualPaddingBottom > 0 ? (\n \n \n \n ) : null}\n {bottomPinnedRows.map((row, index) =>\n renderBodyRow(\n row,\n topPinnedRows.length + renderedRows.length + index,\n \"bottom\",\n ),\n )}\n \n ) : (\n \n \n
    \n {emptyNode ?? (\n \n )}\n
    \n \n
    \n )}\n
    \n {summaryRows.length ? (\n \n {summaryRows.map((summaryRow, summaryIndex) => (\n \n {visibleLeafColumns.map((column, index) => {\n const content =\n summaryRow.cells[column.id] ??\n (index === 0 ? summaryRow.label : null);\n return (\n \n {typeof content === \"function\"\n ? content({\n rows: summarySourceRows,\n columnId: column.id,\n })\n : content}\n \n );\n })}\n \n ))}\n \n ) : null}\n \n
    \n\n {infiniteScroll?.enabled &&\n renderedRows.length &&\n !shouldRenderInitialLoading ? (\n
    \n
    \n
    \n ) : null}\n \n \n
    \n {stateOverlayNode}\n \n );\n}\n\nfunction getHeaderLayout(\n header: Header,\n getColumnLayout: (columnId: string) => DataTableColumnLayout,\n) {\n const columnLayout = getColumnLayout(header.column.id);\n if (header.isPlaceholder || !header.subHeaders.length) {\n return columnLayout;\n }\n\n const leafLayouts = header\n .getLeafHeaders()\n .filter((leafHeader) => !leafHeader.subHeaders.length)\n .map((leafHeader) => getColumnLayout(leafHeader.column.id));\n const fixedSide = leafLayouts[0]?.fixedSide;\n\n if (\n !fixedSide ||\n !leafLayouts.every((layout) => layout.fixedSide === fixedSide)\n ) {\n return columnLayout;\n }\n\n const edgeLayout =\n fixedSide === \"left\" ? leafLayouts[0] : leafLayouts.at(-1);\n\n return {\n ...columnLayout,\n fixedSide,\n headerStyle: edgeLayout?.headerStyle\n ? {\n left: edgeLayout.headerStyle.left,\n right: edgeLayout.headerStyle.right,\n }\n : undefined,\n pinnedClassName: edgeLayout?.pinnedClassName,\n };\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-V5A4DWYZ.js b/dist/chunk-YPKN2W27.js similarity index 86% rename from dist/chunk-V5A4DWYZ.js rename to dist/chunk-YPKN2W27.js index 52fc0bd..396cd8f 100644 --- a/dist/chunk-V5A4DWYZ.js +++ b/dist/chunk-YPKN2W27.js @@ -1,2 +1,2 @@ -import {b,e}from'./chunk-NLQJKISS.js';import*as i from'react';import {useVirtualizer}from'@tanstack/react-virtual';import {jsx}from'react/jsx-runtime';function V(t){let{renderedRows:n,shouldRenderInitialLoading:T,tableScrollElement:s,viewportHeight:w=0,virtualization:d}=t,l=typeof d=="object"?d:void 0,c=!T&&(d===true||l?.enabled===true),a=c&&!!s&&w>0,f=i.useCallback(e=>n[e]?.id??e,[n]),o=useVirtualizer({count:c?n.length:0,enabled:a,estimateSize:()=>l?.estimateRowHeight??48,getItemKey:f,getScrollElement:()=>s??null,overscan:l?.overscan??8}),u=a?o.getVirtualItems():[],h=a?u.flatMap(e=>{let r=n[e.index];return r?[{row:r,rowIndex:e.index}]:[]}):n.slice(0,Math.max(1,Math.floor(l?.fallbackRowCount??20))).map((e,r)=>({row:e,rowIndex:r})),m=a?u[0]?.start??0:0,P=a?Math.max(0,o.getTotalSize()-(u.at(-1)?.end??m)):0,v=i.useCallback(e=>{!t.gridMode||!a||o.scrollToIndex(Math.max(0,e-t.topPinnedRows.length),{align:"auto"});},[t.gridMode,t.topPinnedRows.length,o,a]),M=i.useCallback(e=>{e&&o.measureElement(e);},[o]);return jsx(b,{measureRow:a?M:void 0,children:jsx(e,{...t,rowsToRender:h,virtualPaddingBottom:P,virtualPaddingTop:m,onGridActiveRowIndexChange:v})})}export{V as a};//# sourceMappingURL=chunk-V5A4DWYZ.js.map -//# sourceMappingURL=chunk-V5A4DWYZ.js.map \ No newline at end of file +import {b,e}from'./chunk-THSY57Y7.js';import*as i from'react';import {useVirtualizer}from'@tanstack/react-virtual';import {jsx}from'react/jsx-runtime';function V(t){let{renderedRows:n,shouldRenderInitialLoading:T,tableScrollElement:s,viewportHeight:w=0,virtualization:d}=t,l=typeof d=="object"?d:void 0,c=!T&&(d===true||l?.enabled===true),a=c&&!!s&&w>0,f=i.useCallback(e=>n[e]?.id??e,[n]),o=useVirtualizer({count:c?n.length:0,enabled:a,estimateSize:()=>l?.estimateRowHeight??48,getItemKey:f,getScrollElement:()=>s??null,overscan:l?.overscan??8}),u=a?o.getVirtualItems():[],h=a?u.flatMap(e=>{let r=n[e.index];return r?[{row:r,rowIndex:e.index}]:[]}):n.slice(0,Math.max(1,Math.floor(l?.fallbackRowCount??20))).map((e,r)=>({row:e,rowIndex:r})),m=a?u[0]?.start??0:0,P=a?Math.max(0,o.getTotalSize()-(u.at(-1)?.end??m)):0,v=i.useCallback(e=>{!t.gridMode||!a||o.scrollToIndex(Math.max(0,e-t.topPinnedRows.length),{align:"auto"});},[t.gridMode,t.topPinnedRows.length,o,a]),M=i.useCallback(e=>{e&&o.measureElement(e);},[o]);return jsx(b,{measureRow:a?M:void 0,children:jsx(e,{...t,rowsToRender:h,virtualPaddingBottom:P,virtualPaddingTop:m,onGridActiveRowIndexChange:v})})}export{V as a};//# sourceMappingURL=chunk-YPKN2W27.js.map +//# sourceMappingURL=chunk-YPKN2W27.js.map \ No newline at end of file diff --git a/dist/chunk-V5A4DWYZ.js.map b/dist/chunk-YPKN2W27.js.map similarity index 99% rename from dist/chunk-V5A4DWYZ.js.map rename to dist/chunk-YPKN2W27.js.map index 41eb598..cad24e0 100644 --- a/dist/chunk-V5A4DWYZ.js.map +++ b/dist/chunk-YPKN2W27.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/core/data-table/data-table-virtual-table-panel.tsx"],"names":["DataTableVirtualTablePanel","props","renderedRows","shouldRenderInitialLoading","tableScrollElement","viewportHeight","virtualization","virtualizationConfig","enableVirtualization","shouldUseVirtualRows","getItemKey","index","rowVirtualizer","useVirtualizer","virtualItems","rowsToRender","virtualItem","row","rowIndex","virtualPaddingTop","virtualPaddingBottom","handleGridActiveRowIndexChange","gridRowIndex","measureRow","element","jsx","DataTableVirtualRowMeasurementProvider","DataTableTablePanel"],"mappings":"uJAMO,SAASA,CAAAA,CACdC,CAAAA,CACA,CACA,GAAM,CACJ,YAAA,CAAAC,CAAAA,CACA,0BAAA,CAAAC,CAAAA,CACA,kBAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CAAiB,CAAA,CACjB,cAAA,CAAAC,CACF,CAAA,CAAIL,CAAAA,CACEM,EACJ,OAAOD,CAAAA,EAAmB,QAAA,CAAWA,CAAAA,CAAiB,MAAA,CAClDE,CAAAA,CACJ,CAACL,CAAAA,GACAG,CAAAA,GAAmB,IAAA,EAAQC,CAAAA,EAAsB,OAAA,GAAY,IAAA,CAAA,CAC1DE,CAAAA,CACJD,CAAAA,EAAwB,CAAA,CAAQJ,CAAAA,EAAuBC,CAAAA,CAAiB,CAAA,CACpEK,CAAAA,CAAmB,CAAA,CAAA,WAAA,CACtBC,CAAAA,EAAkBT,CAAAA,CAAaS,CAAK,CAAA,EAAG,EAAA,EAAMA,CAAAA,CAC9C,CAACT,CAAY,CACf,EAGMU,CAAAA,CAAiBC,cAAAA,CAAe,CACpC,KAAA,CAAOL,CAAAA,CAAuBN,CAAAA,CAAa,MAAA,CAAS,CAAA,CACpD,OAAA,CAASO,CAAAA,CACT,YAAA,CAAc,IAAMF,CAAAA,EAAsB,iBAAA,EAAqB,EAAA,CAC/D,UAAA,CAAAG,CAAAA,CACA,gBAAA,CAAkB,IAAMN,CAAAA,EAAsB,IAAA,CAC9C,QAAA,CAAUG,CAAAA,EAAsB,QAAA,EAAY,CAC9C,CAAC,CAAA,CACKO,CAAAA,CAAeL,CAAAA,CACjBG,CAAAA,CAAe,iBAAgB,CAC/B,EAAC,CACCG,CAAAA,CAAeN,CAAAA,CACjBK,CAAAA,CAAa,OAAA,CAASE,CAAAA,EAAgB,CACpC,IAAMC,CAAAA,CAAMf,CAAAA,CAAac,CAAAA,CAAY,KAAK,CAAA,CAC1C,OAAOC,CAAAA,CAAM,CAAC,CAAE,GAAA,CAAAA,CAAAA,CAAK,QAAA,CAAUD,CAAAA,CAAY,KAAM,CAAC,CAAA,CAAI,EACxD,CAAC,CAAA,CACDd,EACG,KAAA,CACC,CAAA,CACA,IAAA,CAAK,GAAA,CACH,CAAA,CACA,IAAA,CAAK,KAAA,CAAMK,CAAAA,EAAsB,gBAAA,EAAoB,EAAE,CACzD,CACF,CAAA,CACC,GAAA,CAAI,CAACU,CAAAA,CAAKC,CAAAA,IAAc,CAAE,GAAA,CAAAD,CAAAA,CAAK,QAAA,CAAAC,CAAS,CAAA,CAAE,CAAA,CAC3CC,CAAAA,CAAoBV,CAAAA,CACrBK,CAAAA,CAAa,CAAC,CAAA,EAAG,OAAS,CAAA,CAC3B,CAAA,CACEM,CAAAA,CAAuBX,CAAAA,CACzB,IAAA,CAAK,GAAA,CACH,CAAA,CACAG,CAAAA,CAAe,YAAA,EAAa,EACzBE,CAAAA,CAAa,EAAA,CAAG,EAAE,CAAA,EAAG,GAAA,EAAOK,CAAAA,CACjC,CAAA,CACA,CAAA,CACEE,CAAAA,CAAuC,CAAA,CAAA,WAAA,CAC1CC,CAAAA,EAAyB,CACpB,CAACrB,CAAAA,CAAM,QAAA,EAAY,CAACQ,CAAAA,EACxBG,CAAAA,CAAe,aAAA,CACb,IAAA,CAAK,IAAI,CAAA,CAAGU,CAAAA,CAAerB,CAAAA,CAAM,aAAA,CAAc,MAAM,CAAA,CACrD,CAAE,KAAA,CAAO,MAAO,CAClB,EACF,CAAA,CACA,CACEA,CAAAA,CAAM,QAAA,CACNA,CAAAA,CAAM,aAAA,CAAc,MAAA,CACpBW,CAAAA,CACAH,CACF,CACF,CAAA,CACMc,CAAAA,CAAmB,CAAA,CAAA,WAAA,CACtBC,CAAAA,EAAY,CACPA,CAAAA,EACFZ,CAAAA,CAAe,cAAA,CAAeY,CAAO,EAEzC,CAAA,CACA,CAACZ,CAAc,CACjB,CAAA,CAEA,OACEa,GAAAA,CAACC,CAAAA,CAAA,CACC,UAAA,CAAYjB,CAAAA,CAAuBc,CAAAA,CAAa,MAAA,CAEhD,QAAA,CAAAE,GAAAA,CAACE,CAAAA,CAAA,CACE,GAAG1B,CAAAA,CACJ,YAAA,CAAcc,CAAAA,CACd,oBAAA,CAAsBK,CAAAA,CACtB,iBAAA,CAAmBD,CAAAA,CACnB,0BAAA,CAA4BE,CAAAA,CAC9B,CAAA,CACF,CAEJ","file":"chunk-V5A4DWYZ.js","sourcesContent":["import * as React from \"react\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { DataTableTablePanel } from \"./data-table-table-panel\";\nimport type { DataTableTablePanelProps } from \"./data-table-table-panel\";\nimport { DataTableVirtualRowMeasurementProvider } from \"./data-table-virtual-row-measurement\";\n\nexport function DataTableVirtualTablePanel(\n props: DataTableTablePanelProps,\n) {\n const {\n renderedRows,\n shouldRenderInitialLoading,\n tableScrollElement,\n viewportHeight = 0,\n virtualization,\n } = props;\n const virtualizationConfig =\n typeof virtualization === \"object\" ? virtualization : undefined;\n const enableVirtualization =\n !shouldRenderInitialLoading &&\n (virtualization === true || virtualizationConfig?.enabled === true);\n const shouldUseVirtualRows =\n enableVirtualization && Boolean(tableScrollElement) && viewportHeight > 0;\n const getItemKey = React.useCallback(\n (index: number) => renderedRows[index]?.id ?? index,\n [renderedRows],\n );\n\n // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Virtual owns its instance functions.\n const rowVirtualizer = useVirtualizer({\n count: enableVirtualization ? renderedRows.length : 0,\n enabled: shouldUseVirtualRows,\n estimateSize: () => virtualizationConfig?.estimateRowHeight ?? 48,\n getItemKey,\n getScrollElement: () => tableScrollElement ?? null,\n overscan: virtualizationConfig?.overscan ?? 8,\n });\n const virtualItems = shouldUseVirtualRows\n ? rowVirtualizer.getVirtualItems()\n : [];\n const rowsToRender = shouldUseVirtualRows\n ? virtualItems.flatMap((virtualItem) => {\n const row = renderedRows[virtualItem.index];\n return row ? [{ row, rowIndex: virtualItem.index }] : [];\n })\n : renderedRows\n .slice(\n 0,\n Math.max(\n 1,\n Math.floor(virtualizationConfig?.fallbackRowCount ?? 20),\n ),\n )\n .map((row, rowIndex) => ({ row, rowIndex }));\n const virtualPaddingTop = shouldUseVirtualRows\n ? (virtualItems[0]?.start ?? 0)\n : 0;\n const virtualPaddingBottom = shouldUseVirtualRows\n ? Math.max(\n 0,\n rowVirtualizer.getTotalSize() -\n (virtualItems.at(-1)?.end ?? virtualPaddingTop),\n )\n : 0;\n const handleGridActiveRowIndexChange = React.useCallback(\n (gridRowIndex: number) => {\n if (!props.gridMode || !shouldUseVirtualRows) return;\n rowVirtualizer.scrollToIndex(\n Math.max(0, gridRowIndex - props.topPinnedRows.length),\n { align: \"auto\" },\n );\n },\n [\n props.gridMode,\n props.topPinnedRows.length,\n rowVirtualizer,\n shouldUseVirtualRows,\n ],\n );\n const measureRow = React.useCallback>(\n (element) => {\n if (element) {\n rowVirtualizer.measureElement(element);\n }\n },\n [rowVirtualizer],\n );\n\n return (\n \n \n \n );\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../src/core/data-table/data-table-virtual-table-panel.tsx"],"names":["DataTableVirtualTablePanel","props","renderedRows","shouldRenderInitialLoading","tableScrollElement","viewportHeight","virtualization","virtualizationConfig","enableVirtualization","shouldUseVirtualRows","getItemKey","index","rowVirtualizer","useVirtualizer","virtualItems","rowsToRender","virtualItem","row","rowIndex","virtualPaddingTop","virtualPaddingBottom","handleGridActiveRowIndexChange","gridRowIndex","measureRow","element","jsx","DataTableVirtualRowMeasurementProvider","DataTableTablePanel"],"mappings":"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","file":"chunk-YPKN2W27.js","sourcesContent":["import * as React from \"react\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { DataTableTablePanel } from \"./data-table-table-panel\";\nimport type { DataTableTablePanelProps } from \"./data-table-table-panel\";\nimport { DataTableVirtualRowMeasurementProvider } from \"./data-table-virtual-row-measurement\";\n\nexport function DataTableVirtualTablePanel(\n props: DataTableTablePanelProps,\n) {\n const {\n renderedRows,\n shouldRenderInitialLoading,\n tableScrollElement,\n viewportHeight = 0,\n virtualization,\n } = props;\n const virtualizationConfig =\n typeof virtualization === \"object\" ? virtualization : undefined;\n const enableVirtualization =\n !shouldRenderInitialLoading &&\n (virtualization === true || virtualizationConfig?.enabled === true);\n const shouldUseVirtualRows =\n enableVirtualization && Boolean(tableScrollElement) && viewportHeight > 0;\n const getItemKey = React.useCallback(\n (index: number) => renderedRows[index]?.id ?? index,\n [renderedRows],\n );\n\n // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Virtual owns its instance functions.\n const rowVirtualizer = useVirtualizer({\n count: enableVirtualization ? renderedRows.length : 0,\n enabled: shouldUseVirtualRows,\n estimateSize: () => virtualizationConfig?.estimateRowHeight ?? 48,\n getItemKey,\n getScrollElement: () => tableScrollElement ?? null,\n overscan: virtualizationConfig?.overscan ?? 8,\n });\n const virtualItems = shouldUseVirtualRows\n ? rowVirtualizer.getVirtualItems()\n : [];\n const rowsToRender = shouldUseVirtualRows\n ? virtualItems.flatMap((virtualItem) => {\n const row = renderedRows[virtualItem.index];\n return row ? [{ row, rowIndex: virtualItem.index }] : [];\n })\n : renderedRows\n .slice(\n 0,\n Math.max(\n 1,\n Math.floor(virtualizationConfig?.fallbackRowCount ?? 20),\n ),\n )\n .map((row, rowIndex) => ({ row, rowIndex }));\n const virtualPaddingTop = shouldUseVirtualRows\n ? (virtualItems[0]?.start ?? 0)\n : 0;\n const virtualPaddingBottom = shouldUseVirtualRows\n ? Math.max(\n 0,\n rowVirtualizer.getTotalSize() -\n (virtualItems.at(-1)?.end ?? virtualPaddingTop),\n )\n : 0;\n const handleGridActiveRowIndexChange = React.useCallback(\n (gridRowIndex: number) => {\n if (!props.gridMode || !shouldUseVirtualRows) return;\n rowVirtualizer.scrollToIndex(\n Math.max(0, gridRowIndex - props.topPinnedRows.length),\n { align: \"auto\" },\n );\n },\n [\n props.gridMode,\n props.topPinnedRows.length,\n rowVirtualizer,\n shouldUseVirtualRows,\n ],\n );\n const measureRow = React.useCallback>(\n (element) => {\n if (element) {\n rowVirtualizer.measureElement(element);\n }\n },\n [rowVirtualizer],\n );\n\n return (\n \n \n \n );\n}\n"]} \ No newline at end of file diff --git a/dist/data-table-virtual-table-panel-GCAMBHTG.js b/dist/data-table-virtual-table-panel-GCAMBHTG.js new file mode 100644 index 0000000..c75b69a --- /dev/null +++ b/dist/data-table-virtual-table-panel-GCAMBHTG.js @@ -0,0 +1,2 @@ +export{a as DataTableVirtualTablePanel}from'./chunk-YPKN2W27.js';import'./chunk-THSY57Y7.js';import'./chunk-4P45F2OY.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-KDHJA6AH.js';import'./chunk-XTVBESM5.js';//# sourceMappingURL=data-table-virtual-table-panel-GCAMBHTG.js.map +//# sourceMappingURL=data-table-virtual-table-panel-GCAMBHTG.js.map \ No newline at end of file diff --git a/dist/data-table-virtual-table-panel-LEQ3RGTM.js.map b/dist/data-table-virtual-table-panel-GCAMBHTG.js.map similarity index 62% rename from dist/data-table-virtual-table-panel-LEQ3RGTM.js.map rename to dist/data-table-virtual-table-panel-GCAMBHTG.js.map index bb9fa3b..46555e0 100644 --- a/dist/data-table-virtual-table-panel-LEQ3RGTM.js.map +++ b/dist/data-table-virtual-table-panel-GCAMBHTG.js.map @@ -1 +1 @@ -{"version":3,"sources":[],"names":[],"mappings":"","file":"data-table-virtual-table-panel-LEQ3RGTM.js"} \ No newline at end of file +{"version":3,"sources":[],"names":[],"mappings":"","file":"data-table-virtual-table-panel-GCAMBHTG.js"} \ No newline at end of file diff --git a/dist/data-table-virtual-table-panel-LEQ3RGTM.js b/dist/data-table-virtual-table-panel-LEQ3RGTM.js deleted file mode 100644 index 966eb16..0000000 --- a/dist/data-table-virtual-table-panel-LEQ3RGTM.js +++ /dev/null @@ -1,2 +0,0 @@ -export{a as DataTableVirtualTablePanel}from'./chunk-V5A4DWYZ.js';import'./chunk-NLQJKISS.js';import'./chunk-4P45F2OY.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-KDHJA6AH.js';import'./chunk-XTVBESM5.js';//# sourceMappingURL=data-table-virtual-table-panel-LEQ3RGTM.js.map -//# sourceMappingURL=data-table-virtual-table-panel-LEQ3RGTM.js.map \ No newline at end of file diff --git a/dist/heroui-virtual.js b/dist/heroui-virtual.js index dc3348b..29f578a 100644 --- a/dist/heroui-virtual.js +++ b/dist/heroui-virtual.js @@ -1,2 +1,2 @@ -import {a as a$2}from'./chunk-KA26IREG.js';import {a as a$1}from'./chunk-BQSRJQTY.js';import'./chunk-K7SNDVV2.js';import'./chunk-V5A4DWYZ.js';import'./chunk-7FUCHMMB.js';import'./chunk-4UITEBLL.js';import'./chunk-EJHT5JBZ.js';import'./chunk-NLQJKISS.js';import'./chunk-4P45F2OY.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-KDHJA6AH.js';import'./chunk-XTVBESM5.js';var a=a$1(a$2);export{a as DataTable};//# sourceMappingURL=heroui-virtual.js.map +import {a as a$2}from'./chunk-KA26IREG.js';import {a as a$1}from'./chunk-QFLMV3CT.js';import'./chunk-K7SNDVV2.js';import'./chunk-YPKN2W27.js';import'./chunk-7FUCHMMB.js';import'./chunk-JNI3CH7M.js';import'./chunk-EJHT5JBZ.js';import'./chunk-THSY57Y7.js';import'./chunk-4P45F2OY.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-KDHJA6AH.js';import'./chunk-XTVBESM5.js';var a=a$1(a$2);export{a as DataTable};//# sourceMappingURL=heroui-virtual.js.map //# sourceMappingURL=heroui-virtual.js.map \ No newline at end of file diff --git a/dist/heroui.js b/dist/heroui.js index 72019d9..2ecd1f2 100644 --- a/dist/heroui.js +++ b/dist/heroui.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-KA26IREG.js';import'./chunk-7FUCHMMB.js';import {i}from'./chunk-4UITEBLL.js';import'./chunk-EJHT5JBZ.js';import'./chunk-NLQJKISS.js';import'./chunk-4P45F2OY.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-KDHJA6AH.js';import'./chunk-XTVBESM5.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=heroui.js.map +import {a as a$1}from'./chunk-KA26IREG.js';import'./chunk-7FUCHMMB.js';import {i}from'./chunk-JNI3CH7M.js';import'./chunk-EJHT5JBZ.js';import'./chunk-THSY57Y7.js';import'./chunk-4P45F2OY.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-KDHJA6AH.js';import'./chunk-XTVBESM5.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=heroui.js.map //# sourceMappingURL=heroui.js.map \ No newline at end of file diff --git a/dist/index.js b/dist/index.js index 274b7e7..4d67912 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-2NQXDLBI.js';import'./chunk-7FUCHMMB.js';import {i}from'./chunk-4UITEBLL.js';import'./chunk-EJHT5JBZ.js';import'./chunk-NLQJKISS.js';import'./chunk-4P45F2OY.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-KDHJA6AH.js';import'./chunk-XTVBESM5.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=index.js.map +import {a as a$1}from'./chunk-2NQXDLBI.js';import'./chunk-7FUCHMMB.js';import {i}from'./chunk-JNI3CH7M.js';import'./chunk-EJHT5JBZ.js';import'./chunk-THSY57Y7.js';import'./chunk-4P45F2OY.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-KDHJA6AH.js';import'./chunk-XTVBESM5.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=index.js.map //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/thegridcn-virtual.js b/dist/thegridcn-virtual.js index 96f49f7..47c76ff 100644 --- a/dist/thegridcn-virtual.js +++ b/dist/thegridcn-virtual.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-BQSRJQTY.js';import'./chunk-K7SNDVV2.js';import'./chunk-V5A4DWYZ.js';import {a as a$2}from'./chunk-S4J2MG4T.js';import'./chunk-7FUCHMMB.js';import'./chunk-4UITEBLL.js';import'./chunk-EJHT5JBZ.js';import'./chunk-NLQJKISS.js';import'./chunk-4P45F2OY.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-KDHJA6AH.js';import'./chunk-XTVBESM5.js';var a=a$1(a$2);export{a as DataTable};//# sourceMappingURL=thegridcn-virtual.js.map +import {a as a$1}from'./chunk-QFLMV3CT.js';import'./chunk-K7SNDVV2.js';import'./chunk-YPKN2W27.js';import {a as a$2}from'./chunk-S4J2MG4T.js';import'./chunk-7FUCHMMB.js';import'./chunk-JNI3CH7M.js';import'./chunk-EJHT5JBZ.js';import'./chunk-THSY57Y7.js';import'./chunk-4P45F2OY.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-KDHJA6AH.js';import'./chunk-XTVBESM5.js';var a=a$1(a$2);export{a as DataTable};//# sourceMappingURL=thegridcn-virtual.js.map //# sourceMappingURL=thegridcn-virtual.js.map \ No newline at end of file diff --git a/dist/thegridcn.js b/dist/thegridcn.js index ce634ce..d2cc296 100644 --- a/dist/thegridcn.js +++ b/dist/thegridcn.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-S4J2MG4T.js';import'./chunk-7FUCHMMB.js';import {i}from'./chunk-4UITEBLL.js';import'./chunk-EJHT5JBZ.js';import'./chunk-NLQJKISS.js';import'./chunk-4P45F2OY.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-KDHJA6AH.js';import'./chunk-XTVBESM5.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=thegridcn.js.map +import {a as a$1}from'./chunk-S4J2MG4T.js';import'./chunk-7FUCHMMB.js';import {i}from'./chunk-JNI3CH7M.js';import'./chunk-EJHT5JBZ.js';import'./chunk-THSY57Y7.js';import'./chunk-4P45F2OY.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-KDHJA6AH.js';import'./chunk-XTVBESM5.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=thegridcn.js.map //# sourceMappingURL=thegridcn.js.map \ No newline at end of file diff --git a/dist/virtual.js b/dist/virtual.js index fa5b2ae..6619d83 100644 --- a/dist/virtual.js +++ b/dist/virtual.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-2NQXDLBI.js';import {a}from'./chunk-BQSRJQTY.js';import'./chunk-K7SNDVV2.js';import'./chunk-V5A4DWYZ.js';import'./chunk-7FUCHMMB.js';import'./chunk-4UITEBLL.js';import'./chunk-EJHT5JBZ.js';import'./chunk-NLQJKISS.js';import'./chunk-4P45F2OY.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-KDHJA6AH.js';import'./chunk-XTVBESM5.js';var o=a(a$1);export{o as DataTable};//# sourceMappingURL=virtual.js.map +import {a as a$1}from'./chunk-2NQXDLBI.js';import {a}from'./chunk-QFLMV3CT.js';import'./chunk-K7SNDVV2.js';import'./chunk-YPKN2W27.js';import'./chunk-7FUCHMMB.js';import'./chunk-JNI3CH7M.js';import'./chunk-EJHT5JBZ.js';import'./chunk-THSY57Y7.js';import'./chunk-4P45F2OY.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-KDHJA6AH.js';import'./chunk-XTVBESM5.js';var o=a(a$1);export{o as DataTable};//# sourceMappingURL=virtual.js.map //# sourceMappingURL=virtual.js.map \ No newline at end of file diff --git a/src/core/data-table/data-table-grid-accessibility.test.tsx b/src/core/data-table/data-table-grid-accessibility.test.tsx index 433535a..dc767ae 100644 --- a/src/core/data-table/data-table-grid-accessibility.test.tsx +++ b/src/core/data-table/data-table-grid-accessibility.test.tsx @@ -141,7 +141,9 @@ describe("interactive grid accessibility", () => { ); const cells = screen.getAllByRole("gridcell"); - fireEvent.pointerDown(cells[0], { button: 0 }); + const pointerDownEvent = createEvent.pointerDown(cells[0], { button: 0 }); + fireEvent(cells[0], pointerDownEvent); + expect(pointerDownEvent.defaultPrevented).toBe(true); fireEvent.pointerEnter(cells[3], { buttons: 1 }); fireEvent.pointerUp(window); expect(cells.slice(0, 4).every((cell) => cell.getAttribute("aria-selected") === "true")).toBe(true); diff --git a/src/core/data-table/data-table-table-panel.tsx b/src/core/data-table/data-table-table-panel.tsx index 9d30211..ffdee01 100644 --- a/src/core/data-table/data-table-table-panel.tsx +++ b/src/core/data-table/data-table-table-panel.tsx @@ -265,6 +265,9 @@ export function DataTableTablePanel({ const handleGridCellPointerDown = React.useCallback( (event: React.PointerEvent, rowIndex: number, columnIndex: number) => { if (!cellSelectionEnabled || event.button !== 0) return; + // Keep native text/image dragging from taking ownership of the pointer + // stream before the range reaches its destination cell. + event.preventDefault(); pointerSelectingRef.current = true; selectGridCell(rowIndex, columnIndex, event.shiftKey); },

    qob9;#q&AF`sdrl|7-Te|C5IO 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

    I5(+K`r;LmM%DKbaQZKWQ54(@s1 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


    &l8njH~1_ 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 literal 91037 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�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
    HUkD5yRvNJKwC9z^Csemg?d2Bpyk=js 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 GgeCyZOmueu diff --git a/browser-tests/data-table.spec.ts-snapshots/thegridcn-dark-table-chromium-linux.png b/browser-tests/data-table.spec.ts-snapshots/thegridcn-dark-table-chromium-linux.png index a730f05afeffc2d062e63bcfc615cc24e83858c7..69f486bba9d2a8e13c656c4d3e899093794f4acd 100644 GIT binary patch literal 139966 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ℜ}q{=RaTA)RH`J<edaqaY|3qk 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%0Aw={w}WO% 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≺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�t1X9nBlVm=9orRM&IC(O=r^V?ch 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 literal 136310 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∈Q|^ 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 diff --git a/browser-tests/data-table.spec.ts-snapshots/thegridcn-light-table-chromium-linux.png b/browser-tests/data-table.spec.ts-snapshots/thegridcn-light-table-chromium-linux.png index f10fd78ee5566b319a58c00220820b28c8f62995..654e9a84e58bbf3021938606ac41018f2ce8abda 100644 GIT binary patch literal 148209 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﯅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

    n_tTv7xuW~yFJ8UQv z3Td<|qUK$Ie&M;vQb$*H!*qkMudm;gO%e*UXb`fPOcqsF+raRE)yR)GNh|3ja2$Oy zU};(1ls~+1Dd#(3`)KEKoyC~^42;fXsrIV1W*v)T`hrQoW%Cn_RWCfYSR?({8NXH* zN~tJ3t1;_T1N=N^VQpv3s2M&dLW0WF#+oTDCi_rduWT+T%~x7+8VovB zxKD)E4*_8=H~*lGTcvimzf;#d!JJKdPyX!VQg}Ey@NkyymiJ;YW8lRSx8kT;(c5X( zs7p4NKo6t2Ex-407OpjeHT5mIzCa}|uSfEd72)L;;v7zci7{Ap_AQ;g-Rj1sG#$UJ z#;E3oy*@4VH(InIpV!OyX%D%kfGI-a(*NB9*wWlsZ#AgdfPHg^4dq1<>_D8%J5+sT zR9wpvF2UX12G?N0-QC?GxLXLW!3KACcMa|d?k>R{g1f`;=G^>)mJf6)BUnc95qTf&OS0Jo2RtiRm?@5*te3gx07-4HFb7b`tvGlJim*V$w7nP z`@KNlqvxxy$vI9Nu7bq*c?tHrzsCM9 z_|fs_(JMMR>}@=mj~&iF)}?uo!=5usqx=1ico(y|N95~!%fn&E>QLt06#Gf=OgV4d zI1$Ba@ddUJKNXU6uBX2vscbm_KWWgm!L8G8H>4Hgs|Ev(IOJQk$gEbG2}ne9okv@0 zp4BlMeT*jHX;B@L4*O4o!+5N9@i0!)U(d8j8DRkcYyYG2EUMV50A7q0vq)oUj~J=4LR^7i z#Kd3Kt0J#=)+Lh!<(mDKZZu(k2(kxFwL+ooI0!jiyrGCOk*A6il@{4?5ue_O?PkK~ zQT77bjOwi3Ipl9hps9jg|C}=~@vJ0&Lx)>Rr{%bWePkUM?MFX}KOlgYG>iE}u zHan|?8`Z@7*6t^YO?)(AaVL7xX!@T*p3+Snk(& zIkmc2FBJ*x3Qp?`5$U5}&M5^`iO*1i4fl{cYzS5X3rfH!$0DQZhF2W$76Y<~Jk{gM zxhnLP6ajD8d0Zif^@Gy`QnW`DH=M(=!(bAi;}B&x`3OQE=}cn^q`22P&no8B>d?nA z^U^j!eba?ZQxMIZHc0V8@eOJ6$te8c5Fc>S=4Su7_J!jB1@2 z2Twe|H|6PM4PLvHgh{)hmX*ULsn)qY<&X~bSJZTLH7Afct^O(*#Gp!4@ak<%-!PD2 zb+H?Yuw$RSK^$tveum{qD;rNzwZY%Lfg2d&bo=_m!vKME-(69@n@w6N7+jLsycT9i zu4EC>Hm0f9o#J1ux!BF$s?J`;w?}P#!>pdEN#Y09k4oE|RXIuHy&p2<{aZJj*l~JF z$p5e2CAu(jSHWtedY-NstL}mli29*4vs{|`?4hVex-x*JcL~Uo7!(AWh6}7g%=+pkP9)~Igh0Be0AyoTVK%8GfJiF zMLs)-RqkP(?p;iLaHc=oiJp>z6p&o-3wXZ+SFqUlRN=3%u-%&a-_3DJ!T6kU`R zfJvoM$?nm!;%(386iNIg?-$FZrCMjXh52&U_r5QzY|2<#cAPe^u!iEKRkJ*njIf~v zBm{SxLsI0S5s9VK#HdxAvYjL{U;kX7mfvaFluO+KeV#c8@Dj#v~?#}EQt`> z1^ku3pjW+|?i38%t4~GR-1xCsPR6JP-rY*KXi7mxC;*F*n8exR5jBd1S`7ipr5W`# zzhB!h>*CY)(fhUxOV#jb=BR8ovEwl6s)R{bUC6Iypjja6(PADl2Dy`Da`+k5-32R`zq5OoTpL z+xfbhlPrWB`&1o#NFP-VT4glisBsnkT}pUj!Tj9{4vI7f{a5nc$em%`FMP+N;ovi- zi*vrmuY#%rJd_jnkfudgTdtX0J(BVE?mnbpo{yROD8dr4Wws>(#h0BO$E==EV-9Q2 z8ToJAJZ@kvE7z~ie`EqOwwCsaYfhrkrmD{(MWadUH%It@Bn5#C9V#ZZR7u?84)`2@ zzxzyT2_6xAdkK;laSU6uN&m#+mSPkHET*O2Ku#W zYmbA4;W_JjL4ft=C6cOI4)F%Yd;L@zf3Y4ZtHC&oOU(ECgE5m{d1wD?5C6vb?j^%g zfqbl~F(6(qi=)1#O1i8dS7&t~&8WA%sB9Skf5Jgnx3#q*{FUnjWp#msm_b}TW^|Li zsX5B7{;yk8*5LU!iun+4lUkChsxLOMVX*GyZ44x+&+EbcLd_MkpK*y1P#(|E$fZ^X zN-DR-Km|X@PqH(f{?+-|e{06Sn= zYN`;{cOGBSYE3Kmyc<MNP|<#!%(-aq&EO z_s*K>&?-VZ+rG$BVPAt3e|6)4wb)`|f$3z|g;ck%{m}9c8)M`>?2-SIU4N;V0kU2TbtD)Q`VrCA^F*g2- zlQH5ud@W{n#`~cJyu^LRdB&rqLz|5jNWHuIPtA0HbT)W02+l~)jJ8Nj7w%@Ot40Ny z=d!Fq3~*cUCHZfqIXG{p&OLQ<+O_unlDIF&vd7pF4&R|QwK^e@HP0GwmnhwkHGpx* zwgl1PUiuUvalgt51;pysB~G{(AHJ4m*UHS&)Cfyly9unU(W#ySMSUOMlqI!|89k;Z zAss(6GevFVEm)!*JhS@D2_c(Yj3qr9ju5^VpXEp3f_I~CU1ASBPs`cgW?Au!mnFwD zq~1R?Zn~@;VMD7bTQi3a!P!F#)^pE(L96Uk4l6M-s1|7wXwgH}{TsnXW`=h)4gc{g zyI)h&j?9Bd+$t+3)M+?$q}w8r#`M7;#@-2u{n|oY(;;k;C{vB}nBM7$uV1i!E809@ zO4(=*#?&&X;pNcV&L?1NwZO5sY9-}i`pDG%OX;dhQu>dn+y|wdW;&)x&P6dO>_$CX zL9d0rCdC}BP%&5+Xd0%F__{JXXSm^B;sMi&ES;RmHSZfnbvakVm}x+Ly8+fP=U=n) zQA6662V~Uy8C2BnSpO=`G5~I%+tN!#xC5Z+{Hz6Gemc5&5rdX8kG;k--=odrm5c?d zs@cWV;fcEXF14bzfa&6gkx$uQPfNF$m}Y`y`MWu{q=rhnug<_6?pM3htRc-~#F@Q8 zm>g37`(*s_v_;+TXZ6E-h?&q4r5`)T2)r+yt-K|AWULE~Uf~^Xw(cZ=R6v!JE#WXK zvisxx45FA_b*6^4VUB=4{t5pV&h9UN>e%gS}*xur|$8cAnM-Z-ZQQ4pMY_rX{D} zHfO4uTe-Xxwy~=S>-0DnzXY`7Rh$jI;fLBgWsoMGCm;Wi7NQ~LA5je-9jo<8oGXie zCO-;GD*NQ=z`-xNRFvhlBs!9hGs8d5&|r4@w4|E$wa!#owL`&kjPwHw}=2i5bNG;!E+zh5v+muX^D^_pt=nFw3 z^_RgVsog~2-S3OCZFK_7R`J@l=X^s~dM4|_9&pORHDVE>zqX*=B%ft@zS_Yv)VSie z!0uj;qyqTStjDo=6zcR4q*jE_pW9rXZ@HPu?}qEHT68+xNi{fpk)1iwF3+ty%%$k ze#*e>oB1}YEm~Ohm&QknBAn%`?}=cM>uvJ0d_^nPHKlZu$}UUmSiqBwbjmnC)RdGJ*)G&h z5}T@MKDQCUzcfQvuTAXydX)#17HNwoWCW=s9MtRuUtbj30IoXMgXS}rTos(h+ILOt zw8|o05Z)>fL6-Gb#5iTbSxvTjcZ21^qG*F~M0P{dwW5(^+=Ba>0bzN;iB5pv*2bnT zowmC}Tgy(IBX_>8H+T-P5feoEg_GwM4%WEl>!rog$j})=H>$NSS@!D7zgR#@hJ??A z^w(st=VxLneyiOzKY+FuKcTjx!z73^t6**RC#B4HOSZN^3pmA5d-^~j>N4|U1z9Z% zJq-~wL{WSbx|S~L-ni{2`tR=u-VpoybwJ{KdOG6qCFsOs;YDQSa29vpHbDYmZsp&- z8duH~z-eX52|ko$Pp#{*IjCwiePnCbkeLrY`z~$QuEB7OEy`HwYr|Mx6)8(vuBF&K z{itscw@wSFKK&tTSeIC^c=>1f^ciTpr;X(nnP~ZN2fwO9Wf+O1HL0SRl1F+$(1H-( z5UYUIcM+ks>}pmwTvk-XcyW8Dn&6yF;?eWA2lI?~HTGT}vfe}{;Z}8c@#8WyMpd-0 z&bX*6e-CO+@b2>@yh)z45Qd(66iqeg=0#g5F_`&HIORTr`85{?F!xo2MAUz(m={b_ zq}d1sk|zJ~6+@&|M@0m-KM6&xpD52jk(GIRkErB{$x~Ol+YEA2q0*uakN4B9Y<$`g z3ps9?zo4Kh5Y&w|X>3cZ;kI<7r6XsqHV|axv}9NPv7*cB+f+4VZU2QxzjC4}5qHy8 zx%ExBX;R)bOI^(Iwk~N185}PrK^nENIrr#~{5RtZ&tf9pa(5`UD# z+j4X&W`~3M9}@il2=nWx479C`!)F714j2pNHlL_d!Eq2RX9J~Bki(L*GIi6Y$^WPf z8%S3WNLEmM&x=x)pyKTpL<+%MR0q^}Q82cW>c+*7X+sNfMOA0f0#3^IPxiesF|fjw z1Lvz}RkFZfvgWFjGVe{Z z#ZyJq^;6Q;Qp~_%ZMHpU^(yWmH$zcwFH7{v&<%G zf!5KfdyuuDutPC}pz1%VHB*01$W`+SwMzCUxa*yNFu1eO{gJyWPF+E{nz# zM4Alh{A1_TsaT>G(Cn2o1rFF9nmLjPZ>4{hh9Pov;2}KmcUhf&$YBSDyOOddoJ3s_ zD&jUKXjb%U**ney2H`JrD5>j5tV|HnHtc^x(Nuql4pAGgK1)3Lgm1BXmtpmfBn1NX z+zanFP4f>K?DEy)E>FCXAP^Pr(8m{Q-yId zge~PQtQ{Zmpo}M9U!G&%1)6))#cd6O9xCnJv-l1g-A+5ZjcT^y+KJz_`=aU@AwjC- z`F=dE`Rt;CQHTD)Ol}ovEx3lj-wn^`)tcub(ji`4Qf9jW1Xu zk%=_`is|1~Q-adNmBd25EckP3y;XlKv5g!=RCuEMOm_ar;O{oZTsHBazkO9*uxHb2 z$}D~rj~(4>X7J~MsGAlE4;w#wyz#zzIRu@aNl3!O z_wfRm4YFuPDqmkR>||{uhP*rsDvm-@h6@;t6h(w3v6nilL4>lKyk^vXDG{dGfu@>|SN}IIT~{TX=5d z=y%q+(rEmE_4y%_Q^57$Lv5`?j-h*NltfRwdc}}s{AJ1j1I^*1KJt+4q$1W(48P@0 zUxs=a8K!IaU&#bG^R2-nF10V&SGUQWGM}e^`WzR- zMR^F*)Bqp`Rm&OtW{yV;(B!Ixe^k@0ypUIHyZo6amz%q|o(JI~eHcjyk$%q<2B(3A zWL)D?Lf(XVU?kNGrHm@^e{|tHv5{MdCced}YomLz*ZF*YV)0^37J7o_Pr^9Gp+GGT zzpabBmKA8QXe;S$oKxuR_|F!ZD`|Iw^WQ1%^S zEpbC?(=?ApNDWGcu^1lpI=uGDL4xT!fQA@1c9p=(D7-3;x|Cefw_-7`o@vB=;uJ`H zqQE9}!HnK5i`z`NH#cTt;oyPjjgK}RCFXQ4_HLu4_pYnu9bRGO`HE#G)q}>#lLLPp zfGJkIXx9J^Jfo1%o}ikf%W)TS&Ft?+P26A}hx1Z+YZXJ?lUdsNQ%CWfk=}|p?Esuv zGiPqtEDcKDP^yHBwr0_2PtEx`QloJ0FN}Z@Wdu%;z}FUrh%Bnt^aftBk~nb|2vmm7 zfmef=?l(B+?Kha|^a3%6_>=Jc2;*uNht?VPUA_QIYN1MeYvaT{dX2fvz>zG9692A` z0o&yQw!O-+YGmO@NM7wOB^U9uM;ykez~Jbks-q6E{N$q?&6+gpYA7p4fS)G-8wE=@ z9nED&0k2Pn6qj9vCt%?aoCL|7*Tp2llf8WWppcN1poWg?f(b&rjI$^~kHNbLSF-Y~ zg~8bPQ1fjnR~_T0{wbXNwPzfm+KL-qB%<=zAcNu2tb5zN9Tf@@He)ot&Na%=T<) z)iIzm%}&m)!6ZZD+#Cxt9?c6AyHIKrDdVGam<1ErdxXl9{_#_~C$_7M*9?7hN$hD# z^y$7lrtiGgB5G8#*w7*G zf*8MoXB*-NM#HW4pGcPORPH5H*uO(7ZHQ4@HXfnFYCv|nV-UO~kQ(?pZU)Oxbd{wf z%M%d)U1Ok?{(@!vyj~FCW7rb%^ft+>94;wwSwPQY`2p9MoN zpx>40$w-!}6Cf}9jGjl6D_>SF6Hyexr>lXQN-wQJc-c&*S{F(ul$bBFQ&K;By4&{M zl&8wtA3Vf&Ls>fra=p1W=g+;& zQoCLuOq&$Ql(7RyCZMv?9T{0_e|ae$ zD9gkgCSsO6J8~wAOclgAk{?AS1oY_|%P|TMn!ZzUvOK+CQijdm z2b1+=Lr39X2cFn1Dx;#xrjZodmTX;{$}}~|V)Ndkq_g`8R^Seg7`2|k1R^Ds(1*4( z>Q1633hAvGHKap$?iaP;eXgZn`se7{Jy}|R`bS+^@#N;W`91vz>N`CRefpEJ(-)f{ z&C(m;$x~Do|4phR@(c|dpdc4C-6%mnp<}z#O4Ism#t*Y+8<+0M@vRmzl(yvzS}^2D zPh^EYxo;zm%^QLNh>f{>FX9}<`O+0=TaZYf_d>qMhb05%u7ltm%dH}y>Cecx5#B{h zaF6fGVek(_pwwyD!Fcm+V!aJ{ghKx;$U~`bV@aE6>1LW-uZUyJuy*ywTYhQy8ynlM zn4;{1#Ez52^&B^qKQkcq(DuwrMfRxRrln$>Sqe?X-9ojLZSC_ohrlvLB^=%S&yB*T zIpuUaroTUoRcC@!yEfs|B#3^lWHl_Cjxj$ne9Q8AEx>N^TF9tp5*Pf1dl&C5uTtss zd}&@p9>PQ${fgO>64sMAQb}OqbcCCgM3x~NVcM0W%C5PTL$ueIe2%qQ^BrR|Dzwp1 zlsQUC=*tagHym0%*{VuRD#yX6E88jzA3P*> zosiaQi8DPDqKLT0IBDS?bsg3Ek}UIn4d}A^fu-V&cQ8;AA#r z`cXhl>&P#64DrYt_E<2|vImdh&=8)tB&1a!;Y?}tUI3k0M29ZQew+i;ompaBsm{nvRy^~!w709@%;kRIrGR^DDCu7;p!yqU8DC>!zgZF7$g>&>-fRzD zMtzf*>5ZSvoFCP)Wm{N*>Tai+#vBH;v;Y@zuU1Wc?~@~+OB1tcq0wYGFsZH*KSS}e zPZ`#b^@LBs88arSe9pMnzR~*C1f0}G(&zX~wpk#3O3_)z3^18N=sDLQ5%a9HJ2Bj@ zSq~{ak*d)^<;wvXT}9VkdkB9})a1u!zc}Cbz_wIqL8=$lXSD-NTUd?6G2j!&HC+pI zs3&n5kipfYmPnsH-kcMYP~FL^eepRo7Vn;H@<7Wv7N=vXdjCmn1}a(Rc;Lv+IN4bs zA_mVdVaF)~9}t_+l~x#+WJ2Ym!UOdiqf@OOU^5xaeLJraLK#{_;jd(4L59s+cgLN$ zNlxZVUJ4N!C%LjRIfyhIS3-Jvr}6dA@oiR9CWR4WR#Ew~*c?Cd(B9N z-k)k!AYqyW4eU-r^YFg~c@F54@&fdO-LW&o9x^%I_B#9Y|_suB$h-db2fB08q z5rZeW+3$Y(a>BtssfD_XMo>TpZA>noJ#S<4Er~ss386u>OKk6gA@MqM`cRUdK%TC} zYWnX^e`S0wn)sawrn`SQr|uMcJ3qboT8y$<#&pOmGx_4nHKLnHf>WGz0vOl?PVS*X z=7G;ISl1|O)Qfo;q4M%*2Z>ch#LQpcb-f;7BEs68eXH}-;pH!-5iXfm3U~Zu%pJ>k z5{>a)qRbg*ZscbWo$&WiGzkZNI0qZaHvgjJ(eXtg+ydGA^jhCc`m~;6^XmGD>ZypO zemaxy@jFcA^gmqVsyD8%W-f<5VeBaqrs!5tlTTgTu5E1ghkr<(bSuKuIuaQAHM`G^OSet18CNq_PSlVp`jdTRs>8YSgQV9*M^ zC;zixXnj2{C76fejXK0F@ULhOI)Vvi^c1w@=&Lq`{Et^ z7qDg?knhcP%rUqSoMr1w45kKLIsF0nA>LMag4JSH0|z6_B2@sY77+Y(TNwDF;R}ZA z=HRP!WYXJ9UaPA)lk|}SxM4=xICH5z9GghL3N0JHf2&9;U z$5?kNy)AQ)aBdc;Hq2?iGf!8j54Z&3e!iii5o#~bMbaP=e9#%YI2r#}whI-jI| zo_20HPOhfan9`>m;_LnLo10f4{j4p&`J?;7xt%ll+4;vJwIU967>&>OihmbwXM$TP z@(l_k6^>8EM06n!^btkqlOa_Qi=g&h3+QsPKclP-{7_-JcU@X80_92v{XU)IGo+4g zv?xzv|CKPURkzaRZ#b%(1@Z4IPz?X%^z>zy-B!>4=Dm_^cVqaiL)>4Y$6)#J>=ech z3nF<;K92JLcE`8#_HcjF_P;)O;Q~A7ld-NDVGA6({oHdteS*kWQ4&P^^xvK$2&@b3 zuKLOVX+=c^{637>-~CEy+D;M>5OmmA&XE7@RPw{Y+4;}GZpfpbT2a#PzA**z6xe@$ z=T|?%e|sdulJ4MS>3GVQjU8X}nP7Z{P~qF&f&Oo!9710&Dh#`2_folPRNW~Igh)jo z5bM8fbo9`8wEb~agXx3Y`_K^7P^3!#ZOAX)R#fyyEn{uMg@BO!f4)Zltcb(OWx~S* zK}Y)U3^hJi3{@pk6{rR~L$gJ1?}Y3$LF9k`-|Pl{Py#;t757TRz($ZN1^wEEhA8>p zFMgG%KLZ3so<8qS#}HtmLPF$!{db^B!TyO5wqV}it&ph#ymkxe)XO_sMMiI&*D7=7 z$!anG6A+d-iwn8-sq(Th4jqDy6cAdN+>xRWEl85kdgva*I#D6 z?=se&%+2!Wwhdpp=#KY4dF1!J-3xfUf24p=VP5Ee-mZcFuM!}f`v8f*rPVIuqFDQI z)uYs@-=fAMj`55wGa7t`R~K`j#6@#3Y&b?AZ(lWyv|SzC#?RX41Kd_J^=rkz_RYV7 zKonDaabu4;&~@gfEqI_Q!aSS2Y2YD370A}h;@9%q+Ho$L78Y6KB2S}yu9b3io@*k3 zBb}^y@$btP{QILjuPY8hq~M=53sg0!gUdbi-AqX{4u=r2SpYcyov3osb$dSu9`BX# zf_j8hQKRbept_G@86;7UDH!DG^{^bG4bjVt_H6!H;Qkx*ea)e<2yIKmu2<2h zcOcrh}i^LCdabKC= zPuj2fhtPMn@j}%y_sdZ52=!$Z1Cql49O})_OtiUj<7xh}`pey0y_-!_tF8m$hwHv^ zo+F!Rf>DtW3%sER;mX>88>LT#W0XHn50;glR&-^1D>Ivc7OlG0*z}w@=MTWsxF`F` z2z>{nymzPmAHdPxv4TT_90oSjlCAVqL#s%fWrQqP8$+uVKld;=TRU63N4@+Ots=4b z6C)Yd*ZtAIcm{;cP#KL!h5=>YHs0g7)$}hyCdE0b0b7xXsIl)7TS1AtFgf@oM#Hr7 zrz-yR*`CZ3$t&S{djs^}i53WEmRh1w|1@N5@%nyc+h!y&z?6C)Am}vscIuF}>Fsmc zWCKsf{!_Q4<@Nmo#=gH3{ICWX4@A-Ao2uY^~6(^L+J@?ElYZO^DdG%1iDvIVJdY(24 zo@I}!!~_KgHl{i9L%K%P-&hLHbNy{90V)b&M{J=68*jz)Dq#Ue)Q6|M$mSvs5IHd2 zd6dvE{PNHS@IKmle2UX20Rr>Rh8r!8+hG6 zjV58JD4DYZ8{dVe13dSI`t5r2o*E?+Ml>L+^qnDaPJ(ESh1?yM6Y}a(Je*4t*)U%u zYy?uSuZdp#e{NI|Eq@+T7yck^1%<+*eppj){Kz$ko)&#>@`%sf2~691zkcK|Uju6G zCe*1JQi~`1HzL5*CaUjp8n9*~US2z1jpklmt+^MJvr??}a%-EM8rWm!=(nJKhdyv9-7NkB~^Zn{W zC{F%YF?)dMDcmN?&HCw3#O%+_(;sC@>xcOW`8hAHm)__WvIvzUtR|Qn559Mf!&NM` zU2lCcXq#Bi42qNDRVswyjl22OfN{H74d6_e(0fuU3<_Xtsdsxctq{RFr)_$VWv)`Q zIzu%zc|PWNy~AeBRr${Ut;g#GIb{Vi;^_AIz69u3pKa?O#}C4d5Wb1JFAO9?8gAzwTfPm)%bL_)o`(_fkone2WwNk%bKbGBJf$^cbu0ov_1WCed0^*AO8 zJE|?h(z(ql7=7>AmTtcMnB!mYiy1=`%Ucue|a8lD8v?1iR(K8-J z(9gxEy>&NDPBTL`!#>i9LBaYxXW`slL!cpsE~;?;;bk&+d^F%U`1juKvMrSlw*_NrKbTdsPEq$H@r6&qpD6%F;uwBKS-5^hfo#@!xz3B!<1Gz8Tjo1(EBIa zd0)C@Da~x)nh#H-@ceuhsT0!cSOm;&lY9@J&H(|6XiYW7B+m@o2lGWe?VbraV>iz(I ze+K~_UxuN!j6Dd7W~Fx3H+uQg-hfgsKv=jQBPl35$EXL+JO7(cF)og4m>zDnB(p-4 zTVFpqgtrWOueJp*Upn9PQ-05YPI_O2UaiM?@#azm$I|CCR4<1wXE*t5nTW6Q9#7DC zG(eh}nZxZCdq-BeR|j6g>RF#V-><_IP-O@2kOH_t!@}?T#r?uOyV5I45}$jCl4h;T z{lvry;@7C-%9vhJ(B7VJ^YVDE4$2ZnQql~c`i&ix1xCXc&2}3vR^)a* zc69ovV8M1mby<63`_ z+e(&O9g+2yF&E8G5KQ7pQD#ru;+%_+Kr3Ug_ktWW9Zy1=B_(@|b+|!jtCnI1g{a#d zzRNJ(jS|o(Mfx7Bwt!13qYwcWK)(L=gSkd!$$}XO7M~{pH$48q{_B-U5v?{{$Bkv&X0uDk+SOoREhup&cBeF6$bK?WIcZQ^z9#yw-EURv$y>L-*ZlHW?!UWRpAvm(m!qM3 zx72-_sQPZF-|BsSzAQy?ic9?G{rATz>67blz=z*NBvT9=iO|y|-tjb)TWpYwW>58R z9l=X!{akh-xo>|b| zrhSChAIoGmODnw=mKd6wy{BS4GD^?I<}YoxNS_&iW46u*+6ze1D1oudM(b}9OGcGFehmRZVh&2r+8cl_#hh<0ua5!O5w+x_GY1$|!vp`h*G!%_-XBZTg3hWD zX!B;jz0o)Mx76r|{xnfQWR6)SLfeVSwy?@YuSc0LbKj4@YyKps#c|iJ+`7Px5=xoffwR=M-8|nOXxOq=j z6SuV0KV6^cx|c_}*B${sEEzHqVtguQ<|F)Cetwx4Fgm~ZKSzZ z>m8ns_NQ^ll7JuHY8InjmNnH6)lQAoZw3QWiqw1X24R$Iw<<#KS^`}v>?PydmKZN7 zXw_SnUv1guKsNMRBikCl_^+%kF!bfF$r58XI7St?a$n572VS|Ws-#=#{4FFvJ-Ax* z`yV5RLQJ|iF8&{f!xv?wmEgy$`#%-};jPQe&`Yx9QETtZZbzqMw#zZ#e#a!^IR2nO z=Upm)>Gdk}vMk$Gbsl3_iEj_jY04J$j{_b1*xAtf%h?|Pmha;7GJBV;#k#h}8lCH$ zRvcZHl`f&R`b>|>#)7et?S{kBNmlK|#h(Vowq#p8!0HZ-L~_%AmdNywltVx!Z10gv^p|c^)TgY zVE0?<*Nv0O&XIHKNFtX7vKz{v;8!t!z&X^~!#dWY>!ForV$ZbD&kHVnhXz)L#SrzW z>RfiTPa+}q0@*df@4W!Q8-a80bx>UyWx_FxR9?b7^An2TOpCwUfYhYu5H^??wsj9x zxb(W-Y=K}RXG-yT#i%43-{}1u?}XeY{su?=}S5wd6eo&o>yVlzx6sDg6$;Az+x*Uu<4=xJuFT z8B{}?=a|C_T&>Od@QGPGUchCn)X3K7R%J0QY|g+|bVHdmIlXYTZu6cp5Nhq$P3!Si zkgN0&r8+(rFPJv4b@=vsyCpy{G+BhO`O)`H$gOI|i8kB&u=@1F+&YJD=tza=4w1m9 z_k;YqU8aEBi)8O!mr*j?!c_4gHRqR#3W5f%1Jr3uT41S$V@+K{aH|1rtL)VsIK>D32+fZNOcUu)#ZHvKF^e(Woa%Ol15C34kb^u8ke0H z6W|&5d>}cg_*f3SyQ=%QXh*1!a?5}9wB8ecoSP#ESRXZ=cwBz#u{!STG<3;v=__`s z>!NZzSw1Wyor`lS@#1`(p2hH1IZCEEwCS7yFK$N|4ciyRXSH6@t)Fo=droosAD9`0 zF;X1?%UeD~=Nem=?aNk%uKHBp9%4LZqcUj}8_s_6qn!EQPnvc)Y*ga(f(thPk(gZV zv5>F$rb14qh%@V+J7${WI^O*%@B-=gv##el?#3x;NubFPY{F-5N;kn9tZ@zJupX0x z3Vz2@vnca_%w=eAVSXQsUR&Vgy1X5^rER+BCiPxe<#%%SI1?dIALX`O%zowodc41z z5|*~h^&b*+Mi`gWktQXc7@^C0zp8*ODYlc!6aS9@&<}sGNv8=m={Dalh!&Kq?C@Kc zp_E&*oo(stDGpVLko{V-wbYx4EOyxI=6nX$k_?L=N9~mcb+hQoN;OWzDR4=qraBmF zsYj;!`-mJ+iGEvc_)l{I!MC*Il$n*Z!m>tuuKKH$FR5Lo=&rzHrm}z=O5oP9%Pt0-q7}F6}`7R>|lL-FjQa{kYc8Ks!#ta zc7bt82L1|d$e&s6lDV^NE03K8jGVAj*Y;EmfWsm^Or=mNB1 z%il6Xr{3JfhESHaZxdFlHDMtL-PRoRIoSe_txp+nbLV8J?n)fY2y%`tiO3TwD`YFh z{T3eY{V^W~z8NXMD~YwKA+ZNVl&6yddTzU_aPwY=tE@E_Ib3$lS~nn>dVf;9@@9*u zZCldA$H$0(0>Otx^JDxkmz&aedqYm1+tVw0S@4L=>{4qBpE*ZHj4jL@3MZH|%}r?{ zTA7Mmc~n=n@ealE0|Cb<1SBFJSfwoTaH%ZkSzLnmNBsJw3O2bM5wLu%4&oxb38xIr zlye^kW#D5Q<3Kk(B)7b1pgr^roQ8%onf!31$K%F%ZxWN8V-Mm1G&V6SCjHq^y&1c_ z9s4be?X#fElbVG4N_h@rjheocE05t?tM%c8y4S{U1ohc4WTPH#6NU|40rV99H7@(M zkIX?0XQ+)0@S*irzpl#vCtiivk022`Lwe)I}{wbaKaR)QIO3gQ02Wd4P+$_->Jw~h`UCiY);p0mF7tK&OXMaF3gt>wN0 z?^|BW304wUK;(5+!-K-~_ zJ_;9Gf`q`g1?x(?q>DoUp|ky}h+mdpo?i%r$npQ6G7*;{!>~PjBy04cX=CP3rl$oP^4#^!Jk@BhW{aAX{%DCs+zM~O1~e0av^euG9>uWL_d=^|0C+)|1dQ&9CKtN#h~YgCg?-(7+r|}jiEQ&H>T>-(Sz+LR)U~|`X4|w zkTBPvi=0Lo`yNiJR7}AN#+t?;{zcOuzDYSV?oN0py34>Wm!;AK{|3uu@#%k4gkQ<< zvG$o8b7t<{&H5=3St2o;|HEeb_+iags13iYlJkLFi< zND5u%4o1B__}n8BrE z=-(+I=m^Bv59=MO(DOM4lprk>i{if9|2q2!Dv}UPCOjxso)Ldeh!YY;3(V#bY||{o zY)W^3zE7EE?wMfl;xWn41IzQ(fdTb^i)4TU%laJ~dt^dPmGlK#FqyF(43C3rt|gO( z|J^YU(FhLvB(kD{Mhl58=9O;CQ*Z#i51W25DAEq@tO5Do;7!$h(t2wfDS_;Ka|jjI z?Hvv118#iHP0OG%nU-JM`=&*o!7-H#F?Zl05Z|z?fSzcy;H0I%pigL45tNrHpL>^} zP=zJ8MH9&nYJh4*clQY1<>r{+cZhvD1GMXZHUT!WCy#vU*l|hh-4dlWRS9etu9>9G z33#gE;gH*&qUZ{u5GthiP!l`QfnOj6vZ-Y(9@K(c*>Sd;>0sof|B0H6bDSz1*zl>n_T7TUt$Tr^-p`d{Ep zr@~bskX^y>Ih@6)t4sT*=dz~6)Qk*GD0js-YzmM&jT`QP7f3FOWjiCun?LG3O3jNY z-<*+MD28O~CFrzmT|~#GS0#88WXf>2-Gf;Bz*dd{Tg{ zd71`X97Ex^XWs0@F!{wVun=F(%Yp1uSya76U?SN1^mBzsqfxQYD33!`_~H8{y!~uy zqSz)>muJw>EOK0*W~5#~tkOG#Nl6I%vN%;~;mNcd65fdyc^tNo4%M?#5wP4~g?K8F zHTV<62!abLZG>O0BtwQo9a0DqPU@o^?yKG)|805b0YT`vDo#RP>X8?j0L>VS=R0pE z*o!7FoLxh@YdY2gs%~;Frn?nT_O8DIh?*T-VcV&%5G#S;Zr$szOz?O5DN_A4WF&=c zi%S70Ejk&gvI>fVOGHm3KSNE9f805HV|p`qi-DT%_U|z7#O}V`W$!KyCPP5Pe*)(O zUx)ps_dYez|5KCR9bK)B*+Sqrt_EKB8CtOKsVE-~dD>$}{AUfioWpQ~Dt|1ACO>Kv zmz6nc*?ND38ECNYqYu}v`HwaEyWqg7X#4Nb@L@&aKj#CBZsB|3)5FHugk9+&liMQ) z!$bIR5Q7-k&SR}N-YB%bNNd@x5#0;*lP3CH;0+!KzUt~pEWmCp!-BQlMYJvlTHX`Z zOGzpT$6*r_RO;qE{Gw1IN&Z;MZ2YejdMPWzHv!HZsUTE46z+Iw28)@b8FjX$%=+gn zXVqv1V&psn;Sz-e|1aErT!y=3TE@{pxgA&U;5m)#c#zShHfbf zFnjCmx+7G`*b-~w;yeaN1q%=%5c)_J=&Zz4soHN@8R!^o?O?x(@F?=kG4i$?(=QXp zHf2!kU@E&Bu(-9S${&Xezn#!kPY>LYabj`UMTo{UGZ3P(?Ox3KNl{Kgl~Kr z+M)d9Sbc-o*OosW^|M--kx77WI*L^X#L~>yAJvcOp1m9c^~sh3Q%nVW`YyE z@OhTCSPsvggH4=t{m4|TSm2wHsD7e~lv$y&fj6&ugExNj5sdLgVPgU}EoJ03N&MUP zst$i_92H%_m-@Y8Va*0Tln+LED~{iUOh=CeL1J%0Qbjnf(sCv1JVSJFP0jb}xQ1VI z+NEDM%E|TEod7Qt#?HUMK>R(*U4i`wz0EIt^`R0PFpW)whx5;xHZ6QSe`ZTh4H(Bk z+SYVQvy?Ez_0;NrHl^ejzc3vI8ch?Nq7yfY0Qgb-;3gPe?0r^Yl__8oL+zAEv~AbM z&@dyp_U(El`VwX_jgGh=U#PXz_zvq0CFZXIpepNnzS4TC%sa&NBj!qM52^E=+?%r= z6@l+AMRV6Af!**!H`!*yzUb$KO=6t*pOscADY8ik15ooJ(SvL_-%9 z;y^Zkb%Q^J=Q7*x8~CxO-$$(@{Oi^anV``gZ?j!?KS16s$=r2l#U<3`Tde)C?2;q6 z)a45^b9l)BE>v_MfrKg3q`?H(g@;#b>W{_Y7zKYPtW7YHQINRVlk;FR-X> zv5ICQR~+r^^^Fo5VvI`PjvZ1UbvLj&UOixDvCd%gZsM}m(_VhZ^3tk5{j|~G{#V)= zfVSK7xdiQvj8V5gTK>X+KT^=zgH!Ky0;Wv(=TI!-kJ9HRebV-UfDeM!t~DVpJ_h_b zPsvpkyDw(8%P3wdHjyEeo-@If_XbHBD?$dfPI_hM>$a$k#WIug(C~$+HMs0tVbCG4 zwh_x{SH1v?A)%@U)^e_!Aw^=gk`R_%r{q2!Ug@8E&_qcC(TuUeLc43k)D%+T^Gj)Ga0o|jQ#6tDkU01EIt$sZUpbS123POIGSb*}p^ZpOG zLe-;Leh}3(P~HE{j14rj_3nS}b2*=0^5K7+X>435e~N6`ax1;-mr```9E(|0}J zFh(g07e`DxOFcRNJeI`?f4U{07EWh!W%j%^D{vMD{mnZ1aKA-h|Gd&`4z6EZ?&`4i zu-U+cIV6!sT?OYbpMcgYce&Nel&SW2b#CL~*C0@V?00GiQG1e`b_-bc`Y@02O0z|}Ejoy`zpYvs}`8!fOSq>pmew>wrB#mqhm4gJqq-`Q?6k^_RWiUlu7Gxs>nl;ar5o1V5J?287sxea9^U%mWgd$@8E%Eo6E zusnt-dcRtltJSb9SVBHYB~|wgK@2Kev+Xc(#F_xkK=&-~r6uZ2Zyd4gTwTboQedm^ z6lMxfomL?Ze9%#~sbeX4r+41NS)5$rX zEGCHE^uAh)jWs>vUn{purbK)Xw_LxSkop`4r)GP9z9?Gj(;KX~vAH42;N;S+EF2A0 zH47#-i_J})Y~h_Hyi-b2>Lr{y!wO)(oxbX9B$vOwZ|ltUc6D}Mw_r5`$v@5#aKMMK zm;jGD>e-<-nIi>Z1ksLWh%6Ft(46jp=#p3(2kih63!64WG$Y0VXfU+LReDS86gp!L zYO`SSP6wZkLu0SzIi%#D5F%Y6$EB*N@_rk2K=B&^<~LcI}Y-#&?Wh&A2&2q5mOqXd^MV^zRGudT_V(23f~hJ8X~D_kWHj z|Nb2vZO#n1gKLn@Sfd9JO2|;?I*NB2E3uW)yc#7z#{5M@`L#BXO?cB!NN6F#(b#x> z2H1YZ(qCy99XX+iU(ZjBkv{rs#Nq3?=a2~_96hSZT}|Z%ra`)yV*@!F*R<#nVCw$s zDR=zr{TA)YTl|oxvFqG53Ap2u`1abkGuRJx)2p|L`DReQPKs^z(k-Xvfq2U8IW{3hS?) zf$O<)auJAgE{1!*RPJheBCax#mCoNaJxkvxAI%1+C! z{iLQOy6z9&Gl7=7EUVL?<&s4vvpp?G5+mh)s6#vnOZZKn=;A|+O^r$C z;xL13M`c36r#atNYc~;u5$^Id5%n{*iKgZK@XXa_E{PT#p~IoKi8WG-*+*>cIu0%& z7>MdpE;kS8!eru^GW?FYXkP_11k?wT#tJF6bw0IsgeaoNn3hPJ1IW=cAj$W12$0S# zt&}@_bV~AuF2phJTq+2yJ;Q1t0(K*$2*qc|f#~9Jpl=AQ(_aVxanD1Fd*Q^{0=6R6 zGhjz&>WqNn9sd(k^+TB^6Pa-&pA)e4;>q9X;S>qhGV&P=A>%NdI`+W6;C(lDObeQX z+%h`@h)#h0P9=oi_@4;q(Lq;-w_w>)gq5EXK-fv=&gQI$lRYW^*BTncA@@{c(>awf z1G2FQym5*TGjc?<=tnya5QBI#nLIJucFGb?o+`eNr!G}~z%l(ei>p^;p6{KoZs*br z_Tb#wq^wV!7h+^=|q<>L&n4 zV}Qf6gGH^@y0NGA)ckSuq`sSEWuew1EIr&1iYAEciP6N&CzjX#w&x5S?Of8b^f|At z(?GNw&%)tmOl*x6Pc1wimu!XBZ7eJC4t}uuG$B>LK%PxSLWxU|LlS&~^Bcz#4YVUj z5Vtv8%|txLN?2{}&7PJUtC*Q!(3(&jR=KlKJW$%orjPh z`L&oIp)`&J_i%PB-YSDUiymP=hZMFR55wsf{otLbwGHKTkN)C%IX5y_ zA#p!=1n?-N1=mKc%<1#vtV}a^4uWh&5RNXzGw=kXkR!6K2vtBUzEYXqv|^b|nOBde zN-aRGt9520u;UoOyvImp=vr~@4*g|D;$b}udN}VG$7A8Y1ANoc`68U{mBz*h3Egi8 zlLesQ-IQbF&0!aK)s+i#aTM=|OUL)nY96OpggSZjt@Ob$ygXUrY><764ZNf=a&s8w ziju<5Jk&x)(9h(W(Ad}CsQu$jASjx#4M5EonZ^fYH^P(|HRjLCoulRUg7)NJ^IG~% z;Y9MoO7rcQ27W7RkvH<|%Sz=A7DVVA)e>(GEHTLkEI$2}5R>6Q&AcUl7P^sF0+jL| zeoTPbn=lwk`u58bvLm%6U+r>! zor(X>$@5pZs#>&`WT4>|4O6;*x2lAEt@Q&vkVRXnM#NaK?|8dO3KnU^j|a1+RJz$8 zTx)htrGsupvoac#HQ@V2u=1x);19tjOCiEqGVf6xu(ZnKwyqgi`n1XK7mndZvVQnR z>NNK@403KO({E?4Iu9@B*f=pgbh8__0h~2<$gx&=7c$05`v<_^agdi@J=R0f~dUfQd==Dy~}d zzcn^nC-+i8Ce_tm9oS;C^zplw?^IDfQjP&ewQ)$3AE_yKF7Mp?;1;33{lJVP%4__) z;bfz|2f%8vv3c5+WmH@%C*zIFP^XC)Ny7!cAMiy+oK#UZBkE|VcigQ)H$pQoi9>5# z;)BlpXt(=ajKIfFq!=OsamnH2!)T@%c%VwI$cOzsM8om89$mw7K_Q$s-TQEdCiHOa zZf(=mZygRBYo;4CsJk;2YBoKp9+C!6x7>JSEUx0SV2d8~i@K>IcLaMK69!`Fr9!-o zzOH;(S;6%jdoVTQ&wmM6K?A0K|0*chC@}&q)Ri?>-bNh`#aW#pAyxrvv@GC#+*XY2 z@?TC)zimY_q0mPX6C?=T8!lsK7v+CLa_*x{f1mn8HaFSR(|I|3ANROVs($^niiH6l zT($JwD+|P?`S-RHNwv1$?xRtU1sp{57Pj?aj2+6tO-!UQ#<1!d81qkq8UN%W`^t8}mF1SVp{Rl`zCjUmU& zwpyDdlTKo_%2ubx;(g%<#<)S&0YBpWH+)6|_4#)BDFBP2!Z_6fOq!1};$kvLgesxp zv8t4`W@JkNNZdtvV)FpLYl7N7zhIl;HJIHzyJQsrFX8)e&{BsVoAy0rYeIJROuH8H zVqC1w2TRmv=(4a90C|_CQb#fS$pmY)`?V5u^Yvc%0SKYzXRT{U9U#zl9YBL6rp;(Ha#Tt*fM+mX&V|05XL z{1M&|?lziFpZVPR0KjN&ElXK&GlosVt(;)ky)3z3~y6slts`ro~lyOn-}-d_(~*3PD=FCTr#IQ~xjC9IS9Cp+c!{NJSAM2fHsm{!#fI# zYn?<*tCPKN%n^qo4_ojTiOrCJp%ofO{;;!*l(gyrCt*j$VJH^>aBF{6IRoHv$K`Wt z;2JYiE3d&a6l!-0I1XAy?=L*=oCWx=9FBAf$#DAHuV#bTy?S4xm0O|fwN1W^H$1P& zs2>j6u6=kU!izS`62m!81h87xn!9+ zlC{;tr8D84DR)Z1CQw~TWh9}6$kD&-eZx`OBNhjztI59 zxVrUnEokZb8IhOM<89}106sUydw-!3*@Bz2xAZ)I3Id#8yIA!YE|sQL?^u8g9F-;e z&j4VhBQd)a-9G13rlqR&PP2zH(o27)oW@=vQiKe1s_ByrPE9lI5v{!bFo<0jl}nL$ zy?9b#x;OdvM2>?ivZ%TusBOpl>%idILQUfEM-34HOJ`ShE9bejb_qoDbC$+@sgZnF zU7arzdP@Ao1N9&xlk;o|GT^9~!RU`=GbwV0RPTA7l|Q zc-Qe<)ueMDMKUF&wvLwX{O8G;_Q-mUlE@DrT-oB%qw+V-ALQ59X$0k55xxRH%Rfyp znHHk~l?$=mx>hA#uFmz>mG*W%BHeR-@~$-+-^c3>?>#gP3z6he`I>pT_NI6E^ENJa z#fx0iLnuC}uvaEVK(_b9Cs|!zS<+a-u>2*#lU9Gjj5X!htb+(r2GR!Fkp^ELYbd9f zw*N94k&hhr@w8ZjA?|XphRHom1Yh5AA!!duHmhpTi#alL2TVRjSR$lE|UDEm)p&G|)b+)Je z2l|R7-LIcao4Ky3p@UFe2NXZG^yIW%*&gT_5ogpImx8tish}%+1VPR2P{;04Xj#OUA*c* zXG=NDcu%(lK^(r$1U9S=vjXLP_ms3yi#E^|mzYJL6&J)~(YMWpkQx*JzNKoOnq(%; zEhheh-3h0Ht{@{>*_2Wk1x=h)VDi zQjE3?&#W8P{e}F+4Qut;YnQVZl07<`00$BrX*i^|QVNYW8{RmY-*yT~I@#De^}C@> z$={S3|C?HIqTN?y7nDluPu)^^F@<(WP87&Bc>-G#7WvR3-&2*CIbYKw6)7lfGuMp= zsI5IwN=XJZ?n0Hk1~Qtr@<6}-U47<@fPIpr~Oe#_8%Pvo|`<;G)|o}w`vK71AkpF(M+l(xroCM zTer+p{I=jAt23+j-qOe;PjrHrLRHr^+)goWw*<#J4Grv4-v6!yZfyJ3!lC@uS#5$4 zrw(kfrw})?pSqMd%Un4j=QO8mF%j2QTSfT?Hg_(6rTAGx%YJ}8a2pbf;2t>;>H0$I zTvcwh$FN|ty;tu58IKUuE3^!lewexlrFdX;GzT-qoO|t?QRNU5UP*o4`kFihWFVRy zBPRAKSCp?nBW-eGCh>%?%#;@RrtgdSQpe5*|ASVSGUbe_3RN5A;&h~wgQlvuRU4vl z6;0c;NGHFZ73hGUX=yFU?DkDdmkHC^`>smMoOsX6e|+AYZ}^JXRGn$)kC8Fx#Cykd zF@aP}PjwDq%cK`8LdtJD`i#PkPtoECRzxtS{J@29c*3Ug8~ zqa9eXoik}{mh$G-OVof7UEJs=wbx^QqtThI6u#Rk%yxyJV`-7PRd9O+(2;I#O3inW~()lsNzX+uv1>(l8ahM=n zs{hSRysplBQr6jt-Kvc_#a^=n@b+z^DjfoZ7#TD4A_$Uv3^lj)X)wNj+6ml2VTxvBmIIN`^sGLHlF93QMala$^Hu?yLe$@sX6ZBCJl@V=WsiTR?^st4nfJan|^o2wldDpi^`my z+UMxglT%2gbr;Sd4K=OInLRigIDewzM~8qwSgOGj1u4IO&o%D{h2WAsyb*FlW_jFh ziC3!lqCb%qzu(AvfRkL~1^5#F01D?|^VW?!r-|&`=BSnlO__rb22$<1*JJ*>o@l$o z353tW`|vS#l3QCSqTC9J;Ui2f+bA%WOuj+YL(qq6Ljb zN7oQXz-K^-44yKLT_Bl62`I)f5j>%wp{m+TVCZpv_ihPaZxD^EsptCO)oQ!**qH@f zeJZ_+rpF5_rm_u?lr4;zG0JxnOg&V7Pm_bi7~B2xUcsaC#N7BxEogl-(Bo=))lZvZ$kH>#cD63YuPS=HrITfM#-o9D?C|7EY> z{F1oieOp~NIDqge)eGh!C}%xgBc+@USykaS7(CWc`fabryq)b;A6S@63xpAe;hcgS z03@urT`@3&p*H)Ah78-Z95z2)dHxrU_Yj_!@M#u7+JIQ@WmIlUFr|r?&*_TobkdYV zt-l0hb7ck|@YR!?z4lN{<`p1G`R$KLH_`pTb*|V1FoAdgzpA}gnp_jCpx1mfyS6z~ zU^P2{Xtv+EF|x1ZzyWjX|DLObgJr(uZ#2;Ln7)L)`i%#7BA3(l_^$ZH=8LABt2G4H zF=qO3gSXmzEle?XUvDilJQ%E6)n_)AV0(Y*$p>r2NnWPArW#*v4Xk|r68rIySS?VG zt;F6jMaTE{lh27E7=6e4;T^YL&TiE<1ikGpuwNP1{uCcK=a?)^-c~$K2aM%S%?!@t zmvc`u6kNpd)A{AKj&xF(lUz``D6+?ae|`wIpDuI;io013##bNEQfGj%B#{CE$(_U= z%>~p(vy~@~2Geqc0iy=};bxG4J^=?d-;-?R4DS z#ngl8oTpA+%Bh|YuEUd6OG^d?prsEUA^*a{MK<#Vj)UE8doL;^3wC*7g&@iKwNEXg zU;k9MCOy4Wr1}OB3xJ@)J%P1&gfi!jXA{kcB)SSMw7q+9za*S`E(Jad}5h#+5<2rry`ahXn{Au z?+364R)5~sFDXB`zu>VsSgj?+efNgT-gd)Qr81{K$@lS~^`gu9NhbNEum%Zo&>AsQ zPkh7UebFQ~GCWS=qEQPb3JJB*lwVJmSppw*1N;OVPTKJ!R;BrLmDsxcR!xX)ea!qQ z7hal--$*(7t3uv9J#0|%=o2G@aC}=SV{Q)q%J4|y&Q0e9aavVs&&vS|*5r%B7 zEbS12mUWzVK>oB`u|N&PA@M!=jO3U8pslLJBB8q*it8^-zD$V4cFQ6MOSZ;dB6l4Q z8&QW6p)W?Vzues@L50!w5Zf>2=#l)H2Q}C} z8clLfN`lamhgrueAL(rSVV%buo^QTv^Q5CNQU{v+qh=`2Q*LmIn%iIL1)xHZtIZ&AA2DLVvK$kW~0_LVAgaQWtM&N;uTi?-RvyWx7T}KxOQ8Wc^f_IzPD}>&oT{sUnCJ% zq@DGKef?`cV_rdlXC2E`sc$Duch9G^ubCJF8OYYEy9bju-Bp2aa^5G4masi#px^wS zG}KUhU-V$RtdJ*vrd&ZTj_qyM??2V5$nxSn_fzrm`8-|L@TlGW-`s8N6K5uBa1$Z{_Q^HXVLAVx6rs)%i60P*XnJ z+UeW#9EHIPuX;0Rj{5DAGhLQiV;uRX?W}~9$qnIvJ*W%Ciar1wD0X`QlK1<-=bYuK7o_wY=Rxj<2 z@EuqSd(U@gIv2zp5u>=ff0y3^dk&6E0J8o=8wNM6tpie31Iiw=1S@-c$dd;}OiWV8 zCU{snr8d6!_ZT)A;AD%u)ZS3nXs%G=8jD^t4yOB`f8*8V<-PbU=|zpWj$_NDI&}F$ z5@VO53{hqGkF4K}smoMeE`8>K1sW9r)vXcV@Oy`v-D9|KcEcE;JrKow>q4?N8iI`7|Rt|9OKhv&xC6IbvB(|xotd#8iGo$=+9rhC>dIpaQ1rqn7& zz>gw!CamNQA^T^C6=OH|B_EdRM!K1M+5*@_D(bdhkEbX@PXY+wsZzNf0}~lKDaK0v zc_?$EUc*BTd(rpLq>qZ+8RL8&=su_?qxwZOWl?)b7-XgPZO_C-yS`aJNu`IuZll|V zbIVg~8Z{{ep@kMceT|8a5P#=KGGWIgP{e8XtA)&s@v#6|nCBs@;uzA!l4pY4OWbP(k*e~|rjs_0Ejcx#axsUv77 zu5FTohvnCzuyOaF1}dIKNn4)pvEM&>cPFJhH1)t|*vCsHfl8$NLA#q@AOvXCNDeRvi})1%h2c2z!8qa7#F$k zb!=dt#V=_45l!k2sQaLiz2@duSwjV0u>pJTy&iZp=RV#n(PiLtJ$5m~S~nNoTV(p` zqI~Jt9Uxba{Sog8-u7^&my(WKTwT^e21c4n{s&TvfPfS6J1M_Y@|tns)ahp8bYQ#& znJJTk%t~_Gxx9HYZgYMA^1rZuN)7m#YcF;wIE~SI(7riWP@vOGonT$Hda0WQ#_gZ< z3BN9UW%}!bflAl10{z6^vw`AN)okx~w<0yBeU`5Z-MLW)7%-+sJ#ygI)2b3@IA{o( zq=J$)xQB}p{TG(4%j+@I@QYl0~1WOmgjH*p7K z6HZV4E|kBaSozYGsmz2dYDbkaTTqx>xUdYJPPKZ)+6}Q}kJmDStDX83oXlZgt@eHw z&%Nupu2L~^Wvt;|=db3{jDcC1+7OWB`^RmwA=xxkKW=k7yS(W|S6RKvVsn2&M+*hAcQSD?=Fx<8YMoaeNx33}1bHBGozDZ6C|;T--$?{o{(Aj!(;09+h&vewcr|cJ0R6(%@ipTtK2R zMU?f9M67f|T->el#EvAFt~GygX0 z&LQD0qudkC5SJ72VlSuLUCk!uGJ&g^cH<_~DkQHb>MH&g71foT_${}BheI~kQ|LaY zy%@VBx~Iv{dM6)`Qg|Hwp)Wq1`}!zL?0 zrEl#4e0R8zbjbrfuKk5VJ3aZTLxC8%o<1gAC%*{e;k-)EOBH{qALI7WxBPK5k)cRM z&5&yOfQ{inhe+Nl3J<9L|vMQ%lt&9s~Y}?fk2O z(Jafgy_6A_9kXV>RW9KHHrU9eOdl{Vdz-i~C0^2a`L{TxcCy20`^bUp$%RG7CZN*mql zSri;uT4kS?L$=_ODMj9ZD*j5uk=y11-}R-us=SXk?w*+3dT=Q+T=kqG zDd{&4-s_rkP*HK~ta1zoou~y#6n}g&VCgjKF#LJO`mXj5iplp>SSU>zaZ~VExhX>J zjM_YnD(j=#bce~&zluIhsS=VLbufJSCQ6u+Hhxqwl%bIF%Y30^k^+}&2XPGNU@66_ zy6fu;iEVql{_FfAEdF0hyu7S)iPD6}7dxKSQfe0;AMP>f$Gzdgb^PUiNzry|}K>gvjS zo9*9!V-rQ7D7*x29T`8<=vJf8zq+k=`9wSAdjjRbpVRdHKA(%|orkGSSl{{UQ{7>= zHaY@qc1Z2m@IP_YxBk(J?HK?la$nUjm?{vvMx_?^H-lyp5%{e;`p0wape`FJ`Ai!6 z>37fHGTgUOqv&V8;il;8YM*~E_)qC?PblQxZRQN|lFI@G7J{&qIcLFoVHI=HYd7er z;)m{=rshw0-pW)wseCM-yj&^D^HNXvUP7_fXt3^mc1lZANhR-H$UsJ1wc(d8`u8fI zuNPL%C7y@}svZ`xKg* z>TdrNe@Vra2&io;-Lb|RkddC0wTPX_Hk8!(0i3a#Q z&U}Tw@RNV>qt@(eJm9-@N2YfpjwypG+q_TX9~-WTqBIPM`(>U~+T`I)H?~q$TB`p1 zB97tX?R*Mx`|5&aq;-}#r5?||4E~2p{~pb;jI-=l@sOklUQ*i^PhCgWU!dC1eN69w z!{{o~e~|w?lQa87Ju@p@?NRH0+J0>2k}N{~Hviztx?Eb4qcHR2%}6RLZT_w!w^u@9 z52z^>zChvQU($bOqx32TANsA~_u)=0T_4t7(o%Z$jlGo+qx=j1{r|t0Uu2uvaN9Sv z+cYW;J^feHr}5zomI+t?|FS68KF+aE;;Bw%NqN>bcfFsA$}SET&fv#=L5gkV$^}2F z*Z-dCWBKptFV%c>j(!!WB@HuU-QLtZywb^3(D|{_a>UsAD_m(oa}~`c7*ZAV??X(> zL-`QbDXgNdm8|ES3BWGE_^50tp(C3gJ=$|G{;w#`|7zr9*E~^>iGDCP{&shz^98wI zuXswBhi_&^qlF`$)%>f^!bz}&UqL~}nj~rF7-B7-rsr&rm%Yt=#m!KI+X_UF^ zKTABxNopYxQw@1E`?$*+k1bVKrq~hPSn5|ef=99-K`X?bljeN~&wlpkP zKYzczU#Vq?kMt0@pX7Yu+TR7%|G%VsP1QN~*KYN1w%mT6+43ZHeU;Yw))Ptq>pvlY z|Ka9>h3~HNibY?by3dR`wX$pAJ<+}NKd(WNZhOi$ExF`{8;`(PNo)i&MTlB~&i`WX zPRAwJf}S>?i=j^yC@+)xB{uRRChIbJS5*!-TdF~vi>=Y zdty(Kp+wP}bL}`=kb3QS?cIl)$J$+Ya>J4)^YSC$tuGn^zb?-9oTF8)|3|4vn}yq^ zM~PC|S*bKhS5^%^jVJ#PJQjYKrq<}57FSX0MH@FlG??0N+yUi=eK@ehk83Tq2iM8t zew4$QC}^%K(B)P6pC)H)U&$L&m6scYsEvPcTC`77Fe4t-@d1-T$fd3NkWi6|6a-erH1eK zeYB1*^!M0Rf>jUBw%Q!*4u8r1JpEZTWgU+rI%PID)-~B-7mArku8S^_l=bW{eGbie zK2;#^RgQa=ZtVe&^?hFo)jqs0Mj61Lx=S~}qA#|OR_f%#9_1%|5j7~0nVWWUg+2XJ zUSGl{&(m>9B)~G>kofJzSjjiT&>I(ncYumcV13bo?j{NCKHyvJ4@B+C5zv?M>a}(c z$>b2Jv?n}`?-lQcD^oFX>`dNfFvlukDGE3DYsEpO=V1JgM`t+dvv06v|34Ze-&G+` z>L%93xvGJ~lb8C!6fFj*OCZs-j4|P+7L<_b41`^}kgt|g+ZS4hanMCO@sbIZ6zF?* z{@ifE`{Sd2)`Ru6KYreG$AW(CwWn#?pBWe#m1Ltn)C(Im)X^nQ2-9PFNSI);a+0+K z`^7i0?K=}q$b*4jFt548?lYl=mPF!{Qu%}{weI#3q5JYJfj{uQGah;`gx+gX>QcCve361oJjL*JV1%^&jLw=*OYqVG#7}IEg{C z_o!&d#U-8npeTueKL8cARpa;PVv`#Ek;H!gA*yoNe|-VSawp{MC>%u0JbeAqsVH2J z#GB}(q_CD|C9rerruzBL8KHyek91(PQfPo#rW|CZX^z^GtVG|>cCa4DXY9fTW= z%v)HUoL9fzZ`giT`+9RFo}Q4vneJ|?CBJsl*!KZgWZ=+C!P2;0IjK(Thgrgp%7aruBZ9VrBMk5ib>O)({y!pEe{A zgf$Y3-S6bZsr>nDH!Z8U%k1;jFZF^@mV0rL;8U6Eu7@#>EC3P;0y|ke-l(^z_Q`@F zek7M!R(ASIPGFC4`v|$ynQ$mpY(#3?VT-u>=UdTfA>=$OOFUc6*|8>P_|(v~=AKW} z%MC6@?%Vcbw$tu>zmSEk3Me7?=2Tspf53s&lE11T(C3O;3PrK4YNl{?tismRqNq&h z8&IzVl`+3uyb}C_63*g!0RyT~wFkS(ol-MclALH!m3J`Z(i4{GIU zseuj|9i58+WdzIBd281$)AJsXR1a3ZODPvPiX{($7EbHc%UkZ)U5Uo=a*9qrBXQPV zwUZQ@UfTpkvl(j}|03=<7RsS#ZRm*`LR#{KqYg;pY42K0y>Zz|$(E(nrwv+(i01SY z2>BE@?`56D5^{ScBtYe0W5yhR+>DevC(!VT199(g5jL8#F9HLeX-X442cI*g`*!n@ z&u6%|(llrrGt+BT2odM9^zy6MUIgF+A-SYk72~&B3qMSo$h45AxF%H?9J+?o0@w&A zclw-99QqT!kz4Q_QIMT%JkhN zl8H!6qUEcXPOGwMJ19&k=?p^l-TA^Q2s;WBGG}1qPkOJ~>OmxJS&%2qI6vNz&B<(W zo4OtZ@Mw2G4M4!o_mrd4Mt#;1hNBtnb!Dr6)%T$F{LXvxgxN+BAK;)k?uY5(WSpzt zdC8EzdWlhs7ty4}!5~E1$J00^7**wZp&(o{H*I9f^QDEtFi zFB_?M1s^QM6&gC#E9TW_*p9M3i$}5|p@IQRIL~U0qX1|v4sFEgyRQf}1L4AB2mwMR zHT7P@#ixO1zA{5tJNkvwNoqjA8U6~vXueg@zs#a2vaUaT@_3_}P{MTR>os?bB~3Xm zHIYuFR{Ydv{ATUw1MVM+Lm!X3q&?%v-duCVI~`2S5C}%6t(Z1Lg=c_N<5vvV?}paB zM_Lgqp7dacfO1}Q3JkWnSy9btIC^k^3X3(meG zcF5Km&*fdFw`lZLL6eRXdle^|E37zVFAo&a0`fw*ytwH~1(ZE8{_M}EPIm_ATM1p~ z2ApJK7!3T!%x!!{K-xCB>a-;+BVS9d!PXbvWOUfDlRbqAPZyRzWS3PIv49X{JS&X2P8LQf>|}qe6}~rePWtc%9)VBDDyYY=^pJ$)Mr-b2aW*g zlb`;wXQIa3>Q#WX0Nba z^hODsi5)i~0{}{5BCI$?6~4-z?c&Mc3>;cUP||JXibSh}{AsyF+Av(ac$Hf}3O(H9 zvl$Ju^4o5o5NtVxTi$O;WoYUS{^NUgO5>Ly=dkjk5CL`VwyQ_*{}NJio;#RLKA_Kl zY`>6zWXY{yWk%BS)qSnPE8ogfG+ewmtssN%!_&ZMi1?Yg%SeX2S9e}0#B_dwM3BOZ zjp6-vxyef$i4la8;``mnQZp*f<5z?CrNir3!*>l{89rYSEkUPIm||uipzV(6vBoo3 z%U0s$N4)cIC&m2EC1(T)!qE#$v>h-<=JO$+!Ubc4%C|LEji4%}JM3U{;4_I}kv)ST{rS=Fs(*;y)dwPdi+TBUOs<5>TdoF=rTJ5? zYb0%_z1NiHP5f}9=E?2n(??pIhLL&4c^b6ocKzQOD<>>MJ*%RxxOAK(4;kveEET~n zs>4wmg;wCk+e7l7B*s$2h9xnZGFp{jKQxMlX|eG)xSW~sDea@l@kg<_?1_BE2a;nQ zPls0?Cqq9!&P_jrp@;chhO01(65?WG2S>|UXIt+efJO1|tl^)md+JD1&;h-$0Sxg{teikEc0u$gj+E+tm+-p57aww`^{669#b z0k+t%yBLnN7?(n2aguxQ1b&52lhDyH0zP%f%%~N=zQzeW&i+vj!W42sj+PS5{H39O z$h8sq#r@hk(V$BoUju*Ek&0m8QI3p`#?9C@ZimEjWHm(g^jsn}5r#X4z(+%vY2T1= zpriL9ACU|AQN9v!2=16+B*1Cp-PsS|8taHWs=Eo32_?0&rq(i0XqDnc$%30LvgvdM6yOmfo7F{8cit?ngW#6aArPCz={lg5FJUfU?)g>!%ip7V09A(k z3mZa2zu#^`POMnKd-89ukp)yIwM#0%|FEq`UWrC?$!Iqnh4Wj25V8|t7L-+7j2tQ- zIIKgh7Yxb6&%?3Z>Ggo-nzFzle<9);VDDpcVL72Sol&lDo%;!+#@|=7&JRZUwJZ>?@k6{+N1HK^pGvBv*w?d{m;mCohXtBw@K94?QdRX!iSFSp8ZvP<#*U+27|sv8hZ1J7iS- z{Vir_;@Jz`NKHtOq5*p!9~$PR2b?AIj!f@*ZU)V#{#v9n)^1*l1cFBEh8Pd_gYD5n zUI!r^F-eiofPJBIAs`-$q2`1nLayBb*JKvHEEAGaG8213`<}i~twQF-vkw-pT{N5W z#S2~Bj*@#g6hGe_TyGep5^L)GynVg2ti14WR20SB{=8Ah|M`QY(YsERWSTiPKfB_O z99cP{Q&u*Uc>gzs9E-QF~(_uva5IXwTxpRrNl zdZH?%XCW>Kd0Y?guL6eeb-2%Zr+ zvoP8w`nMRyEc`JG#K@YG{pf&h(RAtURKVIXIcYxGb?AqYi^OG9MrVI zcl3%cPU!FV%e%6Vk7G)r!f8ipM>h0An9YZNfr!pb~iF`+X7@k}OS z7Wye!3GZdX^fgn06;oIu6Z@fy9q*h~hE`Dw3*B66JXR{|vxn;zt|3<#r*i7Rc5-(aw-veIIbbPvKd~U*1X#Y*MzNOfYLlxghANw zYo)(TC(`DstF0^aK}K%8ira$m=Bly&8fhJKg7vGfW2{Fb*UO%oqSou!UM=`OZV5y# z96?|K;@Bn;d!DF7_6@HudLpc^mZGPSt$a82>e*UOyRw;0*e4V25dZ575LmBu?ZnS- zp=VpKY+qIRJ@VT6}0`!wx;L*s#u6R{)z&;iRq6lJ|AvYDB%a1 z^@goX1)FzRqjQnfJ>^oHjWUHJ6?Apk9UP>Y_jU3PD;!$g-)OL@7O<@)A(C72UA<=V z+dY40y@T>ppH%^RD>=|qb_u@6e4P)D=d0LH_gbDzvv0aFlDp&vq=Kj zicPrz0@eW$OYlWG|B*%{83{QVkvp9qK%PQi)>l>$eXFC}dCcMh3_Lkw)))|i1H50U zFU{3vm?j50gmgrr8qzddErr5T%}m+q#*Q8ZLOpl79Mnq~Yc-SHFaq^Uo>K`{;N$B= zkHu32Qdp0rKs{=FHzg(G(DicOgA%DU)th%>vqoa9H=jQk_`YbL^>2zwg#5|DxDwB< zdzsce{gm-zgy}V-!PO4);3cRat7(OL|JkSeg9=;bJY;r#hSc7 z_A>JxH@u|&?9%M=$MH^XiQCUPI3t{@_hB>fDGqQMk+0M@B3lbb45oyW&qa&l^o#($ zVOKDoMdjK%jjMSjR&-rM*m+dJ(a*Z!efXdGd#9$8ysnzy83tiRk~p| zzb|fMf>9vlG?(*0+G8^ZEp&z`DQ_}w`2(LW2P}^&7PA`|SOjkCC})oar6f)geTH1> zB}BzZhr3-@b5UJ|nRj6G3)9|%THuI~_kT`;-(1=4$eV6B!)ZRJ?4Qo}hFB$zRReL{ zPC1zr)b2Y)K5Rt`B+VX8f$nK8JpDSjGPqT%DQ{+me>auE%O)XF<(J}&|HWS9dbmW; zuMBI|!r^Y0@yu1p)n!C0SPbkl|B6jKt}OG%Z`4jxn7H*VkHQhD z^$$WeO!NHA;gWkx8YZoSYSAicXKlr|V9F#rJd)iMx5Ng@TeBOp$aI>vf`U zDz*l;GA$gXHh!}T%6~A-rR=ozkbam-R=O;Etz#eK&$(G=egJ=B^~xfX1u?S2{_P@p zFmePy6^P3es*BLzE~`Twp}}7L3yWC!6@nH2D42|;W)0Xu?&)9lpO>M`7aj#uSs%Y` z$31~iGEqg+ro@8KxLVd%*-~LYe%VNzjXsWpseVxYt)Fce6@N+5vexV%wS-snoq9SS z^s^rWQ<6D?27(Kbc(A}usjg5oZJmx#kn(e@GI=9QGrYOtp zL?$x9ftQm!&{YorBZ_HVgea-?vdI<_n2<<_`*dGVCKzP^f$W~=dh%uZ9u8RQKQZ0p zkf$y4Ln4IKX?kJD$Mu4{=(I0&P%_GCF$fKTv|Ea7X1JkzmBWmF|CkzYKq(hya8Hio zrZbhEE!@`RGffE!XW;ge46VGea)G7>F53als}^c`uI{YY#P%)kb0;C!^RSgzciv6W zdByR2jk-8FH)B{FA5H+ssM*p+kHj)F1Okrlhmn+`bYGB$sY#@X2~CEM5*hFD11n?$ zvCSW;bj8}|!}d>)Vdy4SMia2bw!77Gcs%fWFZ$C+S^dJvRMoHCM<5V<8? zW32~5SUg>&!?Syi=AcLF;UE1qQX?Wp>Jk5ku(J+|qj~o|?h+taa1z`lxCVEJAi)Xl zu8R{05`w$CySoK76o~m2-kJ*~4?dfTs?x#QfeSDmE69AB->s=i{ zOhEqKBYe@@rlE%w?Jp#dL&Riwd!Zc2?{-Q7VBfJ{h`+cIzVP-^zia=nuy8k{u-LTb z_h@49O_C(fpz~(1$r&@|!d~|Ue0xdezNnU!_4C*5tnkZ&i&4(X-b1JN&cQ&`qJih^ z&qG~b{!Y)A!cD;k!m&X{)-P%L*2}j^i^4af4tkTnQ6Z+640WlcPT!*u{2~w@Eop0;Tzd5sROO^O4zgVmb4l#n&M(&AbZ#wRenI^*LOZXs}g{g?TOn=ojY&S)#sj|pH%?QIu{l&@(Q^X0zo)X(R3)|w@6#1mrXrDj%7%e=XAyW>r{)*wtKBc44_ z9k2JGX^AAVkxUqH{+d@5niEAbzhY#PM0R`27Ifk^QCB7VBD(ZgGV>5!dZWdm7Zou# z$9oXG)X*2I0e!bB`mxk0Yhw)a4GrOQ7J6wbjJyFDyR= z7O9zT7YRy)Z>am`1pTRQ{!X_2$A){_E{88=>A9oBt9-5tiQz%>VO^> zN3TuXZ!edKu{r|M0Rw)*E2H*A`ku$Uv>bo*pR{asf@-&qc4OXd#V`#3k7iY!50v!K zE_~~CRV+DXPd~FVtcXY@{dtPb%mk)IahS%)5#Uy(0G3|TddUH zBTbfgOY9i=1oTPZ!dObtoo66UVJ>=^l#pSsdTX5rIX$&Ki}uXYoN3dliscr_i-qqt z(!jt^f)?&)O+2ijEex&ptPy09@3t_EPo~vycg`(jXD_f*3M$Q>H@Tzm9K>_{%FFT_c}qpZkjGwdwPYDV;06cNO~Nb>ptObHbY=X7R9kxzCwZZ zbAsH+KjwXR)n&)8D6Fa|4l^HR)@lZ*elG}AExpbpUjWp8+^9EC0Q;A8?>?j|k@%s}!wD)u<+8Nq ztzLdI5Bu|zOMRXm(7pBFj)@8_OOrq<8-)eZPPHL56z~)1Y@Is44xMyB=AaRe8TQxyMjR*=9iCy0Ke z^bXbZ;jOpY59Ym1ZYblw7Zz|>LY9s*cI(=#x@$>;@cSI*n3d0|q!9lfHU1E}&Efnc zojdu6`%lYBo8BvXf#cYSgTz!`OfyGyoH>aT5pMI)YA`mo7DMEp4`rFB8L2Bir^|>5 zZRF=Nx7Ic=1X6ro5_7T2WqAH#x`f}K=?|n2lc$+T;MBL+R+e5O3mT*9T+^1&kZ4@5BA|@h z38(bI%x1b+%vMebYT4H#FY4H_b^~f{PC}dx45wBXNJqubECBhS%NdtDGPak-IrA@p zsmo{a=_~$$7Y(!^@FGR5iLy1UKQ^>=-5H(atY~-#$X}X@lPY1R{2uPAQ8dwSY6-e< z;7Dx*!VIZ@A{f>R#I@lzO0yWk{m$f7zDTp=XoRCmiQOw70kXuBCAKEoY2Jn|Y{kH( zPDw7Q$fMayN{=Q3rSV+9hw^vnrf)EluhDw{9>4XYSrfKNi>f7qd;|kqppY6gLv%D# zK_LVk+YdBRP_#0aUA>Z@_(2k;0xcvTND@|amb+~#{Z2zKIKFUCQSpndF@{N_E4yRc zk5w5Tp?YhK#2=E`%{Jn9YZr}vc&4w-hs#MkiOH8Zak2tWdj1w>l zAh;atJL>7^xN_d%XzP?u%Z`2kX18?7xc=xq+76PUh;T~efPONptFSY!c#eP383YKd z7y@(PkVt4U@8aK*QGm=zB_WbUnH@G`S`GoDpgytJ>=Fn3>Wg*?U2)XM6mD^a`Oxd(m2x*8n@K=NIS6_nLXX$?4bb`o#rBc;73)bY&HzuYL+woG=kpD7WNyZQw z5F#uZObUltbT$rQMgMw=qJLiigp`1@3sjYaU3?h?l-d`~`J3Q9T4_uO@a4}AEs!1| z1`$}?I%gz>0E<~pGZ1X+`Om+So;yGhTug{QC@o@lUkQ2q#@~1L!s!3(#a^IME&dyu zLSre+?#6#?0g!}1ImH(vG6L(6NEP3)L3$A+4S`N41qk-$uMlL*11TjUq2O;#{|f(0 zZ4vLE1pIL3VNUTw|qntTfv%e@@i_k~sH4z9Jn+JyeD|4Fy=}y?<8w}dW z6_AjHMKeHUtN4{QMF=<)hE(AgeZ@>Z1*@zGg2j`JDPsjn!}{MqLqtnehX1OTQp4z% z&*Z#6aQh4AISH}`Qf9xFn~v1@k*kl>Z``20an&xq76WO=)x$BURz`}Tsci3;q+VXM z{zD{wFD8RFQCQ2P45t4;!68l6lqP~%Fm?o?2BH4QR3R1%GekX~hRxI`dm#0!rrQzq z6m5bJ|IRz6+f>3uZ!uWj&=LqZH8j!|$RV<{;&nLCCMb-zzkV!zFCE+Pni4zaNd2d1 z*r&y)7PAs0UqO9W_1aVxZ0Ak`=q!59Aqo3}=}0|3L=cL5ZY6kQiVZIHcgc@P!}nPn zxDdcHNcGn-4t~|^-gz#JJMDkni3JWWt5? zpCIhmJ#DzZWzE}ioZ|$MGtE;yK`hnr!=QPIB|gH3ijU&SbaU}Kg~qzlF_rU#WH#Fc z9rbG&``>>;S30(_7-fA_MAhD2}#08!rDLW`MuI#n2}PVitH#QF4IT8LLmBM zEN}W>sBz#U1YnN652Yl>?6y`xi-#mcjOtg*ztrF~gc?lfC0NAFr5FKB5%|Z>p8mt! zQs)C`Wa-*Z^;-TPq+!bR9IWJT37MHQ%5yd^H?o&=>Wqc$>z=;?%806-Jo^xO5*Qt} zF@*+QHDI9%hU80~J^Y`#8q|cOmF4rGGA7SmoK4I$$PL?g!TPUy^1g@{W)blb`ZyfK zeKT$Wgbalxr##`Htxr`)JA&S#%K$?t&jOJWK^Dqma>r?pdc6!E1Ed|n^lVv(Yd478 z^1g_@1wAB}DDlz%^e+|6xw(9@V&Q<9aZOEZbM zmM}F8VCV=mi)IO1<3CBn20?)!bUqjad*sYXhb#C4S$cKae^)P~`GJK2i#aDErH_#8 z-O$6}{|8;X5>9_BsL|yd9DRWCugxZ%ShG=l?}vxXtrrsQ4mFz_Pw4wkJ39XRzJi=` zFf>rxMph2fm_7GW3aeuDtF>a4In(@alEeF3H$6=*a|}0Pin+ry7Yv%{M=d*BtA@zo z5s)iR72-YuJ|!vli(yh`Ny#BkbdwI70vTST(=1Vut|i1B9wD!88Ww#W_j`HN0#?3% z^2ojj>k&r}y}y8&J!!1$~1}$itYT1^Mbk;Z=4adJ5L~O++eG5})zNcS-Yw z;f%iZOn;3`DP2(pkS-LW{VSQfE%fUfRc(ka3=}(c^^j2UJN1b*%;dBp@dyYH4Us$M z7VKVYaVik_>nAaXcDkkQnqs;$qGs1YgNeIaH;r~ut1kK*|Qo9OLaFxaH|$fbF6kC4IIg9 zKMlL_?!+g8KcXlkui?y0-r6l_FO2=J6R%-~Nt?vzm0e}StYCzS&n&XS-*bAgJ z{s&jK^CGwU<}ji^cVODKT0NQIlBH56T$1o}-A!DW(}+*4*p8iTzO<3C>YY|ms>FxH zVh!o>U(W_HAIicQSGI^np)n8x|0unTYcrSdQpXS7b}Z5Eds3`e&7g>E;|4z58-&^_ zZbYL#;KWdd_e2guW*#b-G|@y}MEHp|ish;ll~eZ0{|LI;_t%QjwzP2<=>z#823`Jz z$_ruwlq(Xy|0kPi3>gDx-3$0xnf}94@0BB3&A}I*g>)!3n$P}VNg~<@$0^NEH0UYF z8G>OxH}G~Ss&`JEaa#Tmjay7^M)F+1oLiW$6=y&zaeJznjlpHp#@4J=2-(TR&rOjL zuj6R_uC#QZUcx$rmF}gmLOfRW_wbqrPm1YEFS2MPmZZdp1BBDmDn0voRwBH`YGr%z z74&jPA$4_&d4&V$xz|g3zU?Jf?~L$j8z;L55UusXq}v2S;?o=wHCDmLCjM=$}Na1 zWZ=ISN|KwkPRo}`txwu}B#?7zX%iUsz4Xkyy!Do}78dpm>o;g72j2MDgE^-xgmfQm zcjC~#UJCf0gMYJVI<%yw;ua34yN(pq~g{8oFGH-B<1aLC2Io-_&BB zUyt8{C%T;+yqKP8+J4yhDYOA@tFjKn5jdBOt&utksu$dhO>N?8KhbE~o|k`;4HAkj zFj)lO%^d|trE$t^U3B{HN*dC;=GA<^D|1D+L3|tGomh(F%)|I28^&*qS8` zxHwQ}et*8EqN*og@#m)vMp0=g3Mb-~v;DU=yan#(`%S-(O+bvx`>l)hHDYI31vQmF zrlZ2I(t6s21jNq^{B?SI-;#WR6l<@$2L{gU95jRCO;+pRHiL!9r=wkiP6PON)W$Z! zYE$0e)GTULX40=6f}hLYd$^xsZGAKhV9zUkYREoZ!j!sXwQM=HPOc69e9MTfmSjr$ z;<2M*=qc?>KVK%#L3o!NR@mBk7a?(j=#)$T{q-Zs`pnnP-<5B1#bvR{?MrlT828%L zVvAop3x|cndCXNpXNpMjJ`KH6zuR%V0^7}MDGT+W1C-C)R3mHBP4hY!bcgls@oFTz zyab^Hy_Ac;V$u`9N0CY*sQoe7-B%?V4Ls8B)P?iACmc;uf|g3`;$R3DyopP=U10KL zcRS9JFDY|a8*z2!qp|e?i0heMLc&!(YpXthQ^m2W->ZhuI^N#chIi{OSwF-VFbL+` zPpl;BTOKT*B=ycm*LpoFjB6q+4=tQr_l5eTvnhyCdnjh6tu_h22mr2)4Y9vg06xI# zZYe(R_9IA6*ng^|bXy>`u*~+ARg_QvY<9ER=AOmtN32smb2zzuH;qI6d^aRSuprm` zwsjvAR?If|NapLqc>#ka@#^~A{{ZR3t27E(emk-PYkqq^dR?MH{(MBu>0a*OwU!lM zuIEncmx)dEe45vt5Yi4WO9Qvdb^g~KiJM2rR{E>ZHQ?&mvFXyM%MaE9Dfu9(>#`M0 zey+39SG8Ea@4yp!|90_nU+V5s*!THi!N89fmk3q(gB=hP4eeseXcTOaeHq0M(M@)> z9_oDM6G@Ja#Zpw9>h2-=b#ato$u+}x~!+9je$UGkRJhOrhO@ZvF+(25exQ!ry1m-+H51NRTf&OWu?FGXi^N~6uSrqwZT`58&KhPwt} zuoi5<@vn-x?wYVe!sbr0bj2-FL^>rHyLlm>#tK{Lk*FB1|GpmfRH} za3xE7o#I*;w+iSp`VVd2&o5Q?-Z)9BQ?|XSID0WIX5YEF$62V4?s3}z_Z31u`;u-d zP9x!FIBgo6U9G@wT*ak0FVD$H!|~5l%tPo3ct%8DSpmw(K0n~4fn(Tk>c)3*uosJO zduF&>6_ou#qzH=haMPcR!Fnz43kjF-ZSWl2W?u4SG_t9*kWCVNqSLF4{{Y>q5fOmd zriGe3xH`rg*!Wx%jpKGmcLe8qUZ4*Ij2#|^vjGp@GLA%vRc&MFWc=mmh+5bDF2~*D zytR&(v8V2ncAIziu3MXJzN3=x6sNiI@2L$0TrDOuFB9!IvIZ}O7{}7&B=v^Nc_734 znbB81EkNo>bx=)IgX>D2Rh0{{GYeG$s!M{EV&C;5D_!#tfm zTn|Cj0=&#;+vVskzV*5g`eJD&7PwD8*Pp79CkJV1`*K| z_uEb_FCRZDJwL?+0Mq%r-Xmad*Ie<&44uw3oQ7}|4L5lRG$~jwq8(5Bo;NWdVvz6| zjl4Jf71ic8YFc}YGuS2UELpAmFq~uny?bRjU#j%>ig~#{Yqzbgbe6ALvhwiM7YrR7 zPC&F>&Pc0<6zJ`8%T9s6f3*s_lhuDb$i^}lL>{ctV-t<*nO_ky+E3c$cXUiA5-=JV zaSw3^r1Kb0)eAm$2z`B#QMZm@!g3)J^vE6K#; zpp|Pk_WM&MDb@+@^U6tn?H+nnLm1yRaqCt6#25~7%l_r8E4#k(d2cbHHfpc~nfFi5&H%HJXNVH{uuq12qsjQ|eU*?qTjie#UL2Y12E?n~eCT zlr|CzD2>dSVxwtziw?|j63@(j0_u|)0(Vj zHT3Dg!9Df+%lIAtQTxRnB`5+jOfqxmD*cW&uRcaaf&~VVR3Em6e)>28XB~IcOZe4` zf|ELD_{y1dvC&Q9x!Z)4GJ90XaedZ}tUnf@gAFfPBRddfda6;+uH6=;CF+s z9*Z4!9THFwFws99%XoPm#L)zWVTMiSl)e8spvA05zNyo&^V7LV5f>l#<#y5FEkl6U z!y`W67LAxa|63Ra*|;b7XFB9Ux7*eRQ!ljJiKojx>Xe_ubQ%c>Wu0F!noP~V3;8`j zw472{`JL^jjnDdJ_F|wQ^B~h;HSiwrj%2ap;JnS}Y2?xxPcj5@RP6`n{Zb=n2%Ah_ zxYp7;uy*q54^(vJxk?ahbG!f5G^}XvLXCRJ@k+cdkY)1ys7GJ_nk@sbUI&DJ9A?EJRD}ZiDL9+NBul} z-@u=xP?pY4Y2GjISm0`j93>uL%ScCsD3=~HS-?*#v56R zf@Z!W-_0n$wJy{>I-=$Yiff!=)K$~>a>whI&{~BzD)xbxLQBv^ z1`?E66O8$*g*_myit`9w!?RuY#**tIXG)kK9c^%jS@XDWK9ZFXd})l!p<9CH7W)XT zi9x4=cJE#mxyM?G+j>sBC;jacOY6>*W4#L&rdy94?)BUI8og!ND8wGZMbtI!gSI`| zsHw=2V^y}MF`1rnCqeBHME)|D?_P{!2OX&-ds$YWc$=z!j@Cd08*_HA`llXD#r8e8!f60Vv z>=?BF*5Y=5+@{2SnYq^Kc>me%sC&X{)|&i&;c?z7^JMs#1H6lx+hiNC$8Bc;heHX7HB033@CBq6&n1DOr9jb=Rkl zlw~DEVvAZj51-1EUuKg86&PS(lrWj4-fbN+AZ7YKNM`cc4?kQ6IglwCkO}?VC3)9P z=jXt%cyzPynf2zy;El5N3_GKs$o+2nw)ucyVx+!#G^MBRo`gD45Q+kUtU^t+v|;pm?t*CG=Zq8%AiT~z;Mwrm*^@2#XmM`<9- zAkKHb)*x?;j`{}B8 zv)+u3ymg-vzU?zYuzNjW_&oo(wBcXxtDP@-kEmc;OT`hi0zMRXlgpD6+~hqA0{SSN zhg4J>8+?O`kabjN)5*01_}1$Bla#}4dq(LAGa~)^ z1n#E7Ug%qC##z|NH2~wy9yrR+WsgC|y7uPrh;Oas2g_Z!)^a<@ zz#@i<64Z3XK$|c!HWUNhD=x1SrlymQ2S5_y0>`|%9^N~fymmAnlNNtgu*j2>0!?9( z2s-4W$h5SG?a9=iWBoBd5xWOfV0tDLO4kT%3aQF-RZG2mb2x9KicF*)?%u+_WQHt7<`ZHny`5L^PbI`dUtqQ?Ta zQ<}Yu=O-K`*~VI={-!n3FC?VRDjoZenJYiv0vbj#Fd zXtk4j>VAR=6K42^?|+6KDSmU2>6f(KNy}ifv|`eB9Pn3?X)R z>f`OySl^g)+cO(k^4|~K)ku~Vq>9xm_sr#JK;chUAK988FjXx=R8^)kidcrysuH0! zq00q`iDc2`j3M*bicd#$EXdfMDa{t#Dr>|F2!K~kGnb={wj@UUef5}a0kAtY zPYSRnbA0r>P;wX8OZzl=fT)W|uibt2Y*}h&rk(n12}Hq)Sjih_pv*QE(OoYd7p_5> zev8lYy7NS)3AhDSGU@u8I138-ZT)0fSUy@Uj4}}E9+?#C@VFpu?-uQ8D0NFw%1nnC zYb{8+-i$px#Nk@l_>CLN54(cdoJkDE#i3FRw5vmdB9Ek*HYuOBX~NeH$8Gzo_z? zlGc4!$N`SmZdH;W%sRC)x2rN{fGr}UW`!PbI8RD{W5d;r0~sSM?;9cf&DHBm#LbP$ z?jVhR7lt5>Nb(QQQ-=uI%;B#a`lNcvn2B1_OM1{@%@f3zTmf^(UwJkH{9tyB9d!^8 zP(^xXeM&mde?O-icVlAzHW`Bx`Xa0)BWhRD?_ga#vn120tUmk6s*(kIh=I0Sj)Zxy z3CjycMI}I-eq@9W+AoKs{ZtYny&Y4RPfF6KL$ugE3PQ#}|E0gt?AF)Q&xq{rWg&ws zPwy{JxnCWL;URl-nHjTwJ6^shDZh3*C0On*0t!$iPx?~eP&TkEEofnGTtB@4)>&*~ zXSndd7B;?#*Yb9biy07BX-d~RI8=w3?1loJkL^F9cA)9QzIc(-%11`A;6-QheH;-M zzL@*`K{0Ao{4wZDDF3a(Qr12L`cXc8+eBO4=nEKn@o@j7pDv(u@W&R~_XdQ7WZICY zE&r_v%R_p1%d|UsG|kvDR>u!4j$uz4<9$pVn6#y=kp;CHsDhwP; zn;JRB1Ni)#n)nR;5x4#-C5G$tE^oX=AqOhmbp4_Uva6r*4+$zUc9UTi^;y!*ayw0B z`5CKinBU41glWZ>?`K8?yrd)$q%Xe(J$?#1RFuch9$$FhudKwa^;7XfzC^swo^tAD zbILZfp5Lk6`J<(jR@Is_dx?C{wH^K+8hbMwXZvpalNGD8hJc0L*$^@d1Jb27e8@y!Z6W_vq$cWVHrr$Kaz^)|rGzE+=PbZ`vhOYUMn zy`ybsr($FT0Lj;}{^BtPTAaT+WG$oOd3boaA)`kT-0b)^yab(X+^qi4(obQtC-p&H z5g;IsiioD(90A-hZqF1PJ0E5WSk3LgIJG<<%$MB?Jsu*7hBs(+y!XpJJue{ZBLhu?3WA zj&|z8&kEcmXbHXD@e{Nw$jZk{|DeZOW4C&KNUkyIGU$SSeGfQW!gyC`0%UApljAD) za^Gn#o@P_2n)q7nAzS_Fe8U7wd9O$q8@V?uO!6NMTil-y=%HZa_#T5T5H1K%5`XW#$`Y6(m&8P{SkT~4#%?#9**7ZL z7pf|Aw`?m__k{+~;POSBd{d0)WY(1oZC-eq%Em&P0qWe#^?LuyEuoO56DFAzFB6kT zGTk|=576+Vq^lP&^X7O4GQw?#Np|uTWHo(yvGa3v4$i0Lm)n`HsO#!h^&Y~_ z5fa;T$}rsG!WhfpqYfu6;Kme2Jn>PMA3(3h>U0qqyB_$FdNM_*IzWOSbRw!CI&)n2 z*uygPu%8(%*Lbv4C^;Md2usb}$6Hulq>wK?SWavBC*FUT!QGX@HB@Glt+DF&IGnsY z{AR@pUn|}ETKFM5mYPmM%B^hr_NV&sSE1&6GRc*Cyla1q>G+%yLhUdJU^KQj zY;X}_D{VrO!mmj~G8%JNWnZ-!09z1aYdXjNykp*X=5H?c2!SYD`7^w2adPS@U>!vVbHK3hACY*u_s2iNoCQ&%(J_s!LI!)Ow^Pp&%sIWac7%JJ)6=dQ4GNr_R zQa(6HXM(JMb?C4iTcciC2U)tq)M5emHvvlKmAqfZ);_j0Snmh?!eyx1FQ4dWKD2S# z_D>BO`8}EM_IgvrAT(3{(>sZI6992-bF6Ua_Nx={sCtPjC$#3iqpR%kw6r3znK_c6 z?7eiUpG2#cJq-O+Gf zYISb(r_2mymvBs*@$lK@o6aYwffQb)-}m_O*oXAZ&5jo~$3=4ZXPMXNa`72X-!Em5 z8B3*JTzo)Zqi*$_D9n+e+_hpnZre`7b@8jL>#TaF=cuwd56^mpz<#>#7R=eXvP;S zUlhS+@21+?7afc>b!7@~^I*Q4k<#pT@>qOrAzP#TP7m@Tw}>I6QVQ^;&@^OjEexje zV=A5h)Kh~N%kYzh^yH%*vREn)L&Mx>rO*U*UISwdbP%)2b|f}c(3sp;n`60)T0Arj zIlPUTy7si+DLN;=KbZ^A?mjdX`vi^B{xVU;NsyIxYO`ASeS>+}-exkwo=7XW-JKM_HoqfX$C42lSMF!)_3%n{n&_%`cRca7 zfiUwsKW~Ty&ni&a%gO$wzyZGU0tvZ`J#>3s2xIYdm+`dj!=2;T?*(7;VX6QxVv^bg zE~g(rjVCfLq9B3RU_aLH*1`jEQr+ZJDoAVV+!fzYBSUfL^i$IE8rM(euy=|vLPV}Z zK|^+W?5{RPU1z4KYb*wB0k)5^Urp*n)4yFc2@_8hCCRIMS-+|q5_?o3-AmE=b1~|_ zN=#l|X-Pd}k`v>`4LYO-LN-Eh${?`sE$Fj5L)7vHt7(eq*b=7cXQoi=Cd^k}Vo%GH zGzR7syZk&$pkcd^Wmxuo8{mRCqkU_pr{-u>;kVnm7`RBjZ&r>Y z1}D^c!Y?r-{PGY@cHva8%y-Yr5&7J>nmBbdn7}ALa`NP*7O;qJ{-i&2RR?I{ZQ#Rv z7M@Yn*CAUScqb-H&=O_`FVTs}&+M6e66&Za8j@`=Fs;==mPX}y_!C2mg5ROz>;XE? zry(nZA6#VPX~KrG@O9*3$Mcoi2Z3xVS;;f}$=b5mzssL8$bDXDuTv3lfN+SS!q%&z=UV&rj0d9|h5+7-(cO}glo zcv~SA;GSwgd^P4=)Ar6Dzn(w&?EU(9?`L(g+4Y9;4kI$wga_hJP&=dfq8U<8Sn8>A zm|&ocng9YbZvyzq92PakW-ZMyYF@Uv$Nuc;vbRc2;CJK8hqR66@IoS31&G058%Lg5 zvk?e89vll+_j>4aVUJ)B5QOP!lMbA2Z+|C4z{N+SZDLXRj5ANhx#bZB>M!%fCG@Dj zIMjU0J9V~lFIlgZoHZ;uRzfZAu+r{)jfj-$o~d4G)Y>y!jP8T6+c)-J#aA*k1+MFh4tUqQKqWZW_5XQkKZQ0JW^|6wTg7j27 zk>9$Y;d&EmRtP2v{m0V(upvTiUrkkWboME{b1G_dFNOT4zFnJ|6rmg_>C!gw16NjNUp!z z=^f1{ysf^|L8B6Yf_QqGv+W? zo?V@vNetR@ts#Vs$ozv@N9-6T3}=zq+lrvY@cIwnZ|%vQzj`%IPabsMJ~NQhva z=$5Z!%5(-Rx1S}A8CsI*k2otd0D5X}b(0fps<>tz^B^0VNl+};R2^0~7SYg{0NxBV zPbA)?C)c6+(4yXQl4%X$E&7FukfRxj+07>B!brpsBkGp(k^Aakrp*P(k1>wG)u*N* z*5UY4S{ng4so%uCScAX+EpudPf0DW+#H#wxC`{#ty zGV3_CK(k3~AV9T%p6Pr26&xOP9|39RRd9d)w5#{a&Sxboq+qP2e#VBv3G$-M<7f+X ziCg9+sz#wa@|hwtQ4V<>Jl#c_nIK=2QlVJV$iVb0O%0Pm&Kva->={(G_#jKIXWWib*I~usn>L}{e7(c(WvSA=P zZyPaJ(yJf~P?+)MonThUAixB$qNGak5Y5udSfaxhXV+k!l_Y#PuDi}I4gpn5_)-e; zU<@AN9QQ~&jQEIpkdPr-`4FQqa6GSkAw%p>_zvdb(hZC0^EV>XT6M5mB?NNwY&oUW z%EOIG7W5BjTtP=b!vs{nuP5oVEXn=C@dR-QZN9r?4XN*00cDL^%WB-eub>74!-0k$ z<~(Yk#TGrtXs~cHoa9gx_@d$8AqAg{i8Wb9<-$Z|)O{n)Iq?Tt3KY{X1E;hhRgY9E zBoh}5G!){QT2!fTX^mlrg1pYx;&bTiiV4%y67Op7^xy`$?+1ja0W1BZLZy5}I9w2c zxYIB4nV{oeCOpGfX`oG;g`No7-f)p6Sk7<m{|gLo#=6P|dTz78F%M#m-m4&PVi`(F2Qni6~DOA;tqz(eb=*(;j}I1LFMh*A<(`1j@|2ZExHxa%TH@L(Z%XDbHJ#>% zTqpWBQb=6?9qCM#PAJYLF7y$ipqd0iyde{rP)$J>3(&RId7gUKl7Y^?vn%pY0xCcR z;&~blX4_+GmMzvWCBZlrrTrCzNobZZv*`!N3H$1{6eZ{Xy<5FSSQZ)y&X(Mk=HDj* zM0f}a&c!T_lKK3apC>1UuvwLpbl`fKr&<;2%eewk{ubE(T)ke|GC}W zEVOOmkpJi3zae{9{>|w-EJbxi^0{nHD>&T0P34~}mhiX1e{2DW;AU}2lP#`kn#fVq}pul7=^!ImrN#WT;37 z%1KKBQ(m~yPw9Wmk96sCN`p*tmHuh2;{}Mi!@?x!@xs4&>V+)Nc3mWSYINRI)rPlO zJs|6D4n0bQgB;bJ9r}lE`V2y*4t09mYg@KtA^8`r7suwi-Pl8M@<^B#1rBBNKjJCk zeGAI!t|H1HWDt}Aq=!i#{SuzyeRJVd_EaGoTA(5EB^Cqlv7Mm0>ac~jh1C{gmE=Py z!6?Bi730D0tJMRhqk=>TqMk!Kp^WedLM`Q}MPR3v1mJM>){VzR<~@TywC-cNj6xEu zu1_#13X+k7d~1@%yc!9*x9FHF;n)eQ-?I}6P&lrPpfsQ_SVm(ZiTClWx1hX>@>iw) ztUFKIp!%_RZWi{WM_SFHu`c2=>Q-k*Pit+MkTtm*rFaeingAB78auI3m-N%i66E^G zGeavNk=!Ur!6x7j?jnKJ=XtDB!92ck2=k7`;yP?xh%5~7c<|I%yKTD~xSvbrKH*rK z0(AcGIYH3>o)ZKOI_LzS)R1L|dv9fz!UjeN334V0VS&4~Z6LGwk&jSu@g_4U^1w)n zir#n>LltSkYBYVv^x{>I&8z`jq!yxpLU)g2q+e-p!Zfr<&9OyRU&5sdts$7MOi)q90GD%gB5@ z?qYmuP2%c{p~&BHp*p4E<9_WC@ET z{nSW+e(*=$y@AZScqW5D50W@xe4@_BaRdF@Xge%%1gB_Yk|8Ft#I*6rU*O+hQUgYQ z4w@)E7TF0-%@579r6*S&rq&xX;whK-o2iuin6hNX`y$x3=Utt{Op?E?`RQ8`eCLhdvgS*3&?YI@bKBa0z1H2*#S-M!F8a2 zf9$u7p(W#QVG+zR#tGHGE0NlnDx>ke)bd!sLg0XUODz%Z%pB%~ndo7-#&8<x21L_XYrHxY&(*@{=20H}%tqx5)_Jpi}Eo-Uv66)bTr5KIh z9W9^w#5L{RgQgYb8u~@K;8ZPKy=|K2S5A)yha0n`DdmS+_bxwwKbO;K*up5Ebfxx} zfznG)J3Ifxdf?TAQQsg0$_OV+X?uHITpbEqyO=GVKUnwPa(lonoXkKaMkCnfv=Uyl zyCfYi>0IDVdRuKWHRcvVmCiczY>P8L$~L<$BoI@aY6fwuEh?ey&H09{nw_m(XFwJi zNEo0Kt2R3|RNh&Vu|p!rFK-^XGCr)N^2YVQeqB>xUN-Z9d=Xkgx@CCI=Ce^R2iEj zTRJb*|B-leqNv$V>lxwf!P=0mU6UxpHs)m)2WQUyBgTT7#Tazc%Vvb!Dz8_w|HaD5 zNaf~*;S?Vo=td1ZUT{Aa_LOLlour{D408yO*oKSL1r*Vqzi!iICe(R zmNg9@)kpu|?C=3RPk^-{|AW?q<6ve!p{s}{-{19Z(CztQ*1oCPBO<(luQ}f0fZ6b~ zr@x<1vyEp{b#=kz_@p=3Wgd*aX}`wly7sksePF(!wA2c+TX5;yPQXK2D9%%0)^uOF z>Y}jHs=HUlQ3xPILK*aNU&zh;HL(4JByw@Aiz$Ie$~;xh`Ta}^r%^R-@!lAk*D+i@ zK9dpVKsB-YJLyS@Eqr+nqW6b1aq~anfys|CE-sCxkFu?=O1YIX#y7@A&-`oVDQF*i zO*BWye*8BRTog|8ZYGvM?i9z}ZDyN`kXZXimwbHRXuUE&VbD?SPmRyVRbjcQ3qhN{ zgE#wX-Ld%mJ6 z5DR^7HD~d`_e(5FO4?Rm@ASL{Uhl4Q+wi!aeT~uYs9!Z&a#%TAHmK4@RrBV))K+)l zTqAf-+fUT!4n5{I-9g2PZB!R~hv$u%~I;dL={SktIaiIJK^9I(ck zn{=|Bch>6uN^_Ikap8^KeY4?s{Gwe|mHGPx_9@h#a@h#4is$C@hW*jFJH|+wmRPOt{ z+9eMa@b5m`r(8^XB~)*Ydm6k-agMLOgZRi6tz>z?yM9b*%TC`y#gR7-xWL;`KYgX1O zq6yg6TJx=l%C@^x``_=MyM(Wg~)6~F(je6e=B3*HxK{sZonJ=Q>pWHoGiJ*^tge!6=+pAoUut0&+- zBO`k)*Lv8!-k-Nv9KuA6>-v9j-@<&~%MO08Gu*l6`Mz2+Z<~gCWAIf&SJhI~%bUjQ zscC{R0=&n~=IUMr1?%DQWv2o3kYA8bUez}-gG`1kjCSOW`~Ac12dm}lFD7#9&btQ2 zu1YT#dTH16Dwn$#2L~qG{RRLR2(7m7W{UG?tC*wd(4b{lnetaxaUI`Ij)F6-Zx8k* zzkKP~tXvA?RWGB-=dw9BD!;+w(7j9V@46%$gSYy?qj-{q$;JOX!Vwqeb<~>vTQj{Y zlkrH$GwWge8PUUUeJxETzTzsbF1_oBt~T{-I-xX`n63Gx_6>B0KcQV8q6sF94&`;1#-v>VhFyGlyI7 zeX``JHF&A%Lyf=uH%r_>4KPWSm)MoKXSX zhdQe;qwt16bFGkO%-dDlhlLTH?~CM5-$GMtMf9hpg7ccGHN75!Sv|Fd|EKzeA}f`@ z#5K0G)D0U1e$cC0*0z()CYqxTB_srmzhy(2)+Zyi z)fM96MP}4olo+|yb~MHB4KI#-?W*BtE8d;k-HjsoW56h7$1q=>g>p;^icMXmeVTEmI%yzul_fZ8A%~pSRhwVUw{R#~>gJ8Ft-Kh^cd67&BfgX6n;ln<0 zj&VbY&1(fUZ&jw~FNoavca1+J&6+!e4PV3C-|uiAN#7TlP^89xWYA}~A^Q0b1Jq+L z9~f;Oq=3J0LqkK_-ff{r(!E}6dmBVzG(&GTY7qfGoE-x@7avLf(A_0| zBCqpBk8dm(fW@a_`phqH9G<@JvdYpIlPl~q^_D&T=L;>^0QR?W;Dyz_W-Eu|Ap}W? zRCV>H-bBS_cAwNjs{@U@*-j!OuIJ09t2>u_+ipUJ(%TJFkP4(=)W7Bex_^o09%Vsi zyifMiw?7@t*yv3Y0!YVC4tLWsQrtlIE)Or`X`Hy?q+E743zg0FmQ(}d8P(Rm_ ziL9MRl5*p5u^#)v74qI$H}*J$>okao20F zMy5vHK2?J)fOt@D+Aor4^A`Ii@oN1vN{9P;vv*0~MX#qA(gXgi*eTzgP#YscXNioF zMpuqA+5QAWsr&0q@6R|cpFECTzncY7M$C&Hj~SLvw+sOrjCY=eLN}RAHgikeBGt#^ zNeLgE_QbaR*UE^}NbtDiDLEeB^7uspLTXN%v$URSHiduQ=$xdVRyrZ_jI}LXLOwyc zA@b1G_YZ7(qSVvATB0zrk9L12vVVw_fqX>{ezCWF=cH|2>W?QgSFimNf6#D4O8aqv zB7VlNc)UPMPUyABBh4ig&Pp&W!n(crc=^<5I)}(?J6>lqwEq^7BgzxSGhIH}%kVhw zHCQUgsop%&-K1B{FThPM8mFP0%%rkd@vIR_E6*Sw3<`ZEX`I3EhJ0D=Y)I#`k~W)M zFVsjE)YvwH`h)`Bgp{mI2Q4|L&aX?rkc{M770W4)3|>1Cie3Ya%F(Ja!PEv^BUdjO zJDS}g^(7%uOuFH4OD->c!O-^V6!m9Ni8;Fh`=JONQeTm34fstq<1z78-iK9vY6w-a zRGQS7D=hQ2oV0TJ)X~CNF#5V^c;%g%vi=EDn9V`kl)d+w4~s>nTv=G z;~`5S$fZYz`%JWOj}Dol@z@((p&4}_lE38n=Iis$@J*13KD`!}6M924(DlN503=chuzjgkI6K08o=&(Z*-Z}3U9G}-J1CKy5`gD{Qf7aZl?3~ z*5-mtp4_UJ*c+B0D$5vCVS!*yz?$dU1em1cu@4$Roy|r6TpQ(^*qHl{=nVjzymQO- z5rL=EFID$;c<3edD|~xxBqpLUl97SuQ|n06>qf3_W-J8s3+7wEyB)jwG;rx@20LYD z<$8Xepj##WhyRCJ+B^d?17he#A*zjr=FWJ{2o&>0TG!OvHiYOZ3Y7p^5+tMC0%?!J z9CTtTR5)h=|0Upn&}wjURohG}SX*)W>5{PzUu?`vN7;6A{G6XaY=hlnoq+D8rDV{c z*dBavxH}>J{8TE%IlJ&*z-v~gEu{-No;-r zob1Kg@Dwx#(XZnTKDLrnoZAFqB~a1wj>9_N+M4A8GJIt^21oUU<4#uGY?WHMQyER5 z#hEf`3?okUv6zTUa4^)qXfxQQS5s?C-lwic(_d~_SM`dIX!IIVEk7tV0-QWZ6>P2d zm;%PoHpI=?C2Q71(BvHTxb*tLdiBf(-xL( z(d>BMa{o33eI7&KFO`n;P9QB*O|)L30ShU78y+m8OoJjjps!nrMU<%^Cd%RU#4J57 zTf7R_oqjPyo6fmE^?034A^vdHKRd%;L@kln@s=W$V7i@qONEw1Bw_scsay-_aI!E< zlc0m(^>Q=}!knCzKU`KHJslha7~MICcCS#@T%M1=oBesJ8pot1Wz~!bb+hPs=Lql* z^YGY;#b$zlfSiAS$o7fp5I)axGV*FZu}e=;)A4*u3`YAc0)re$^-(hX%OKrAQ%b75 zu`Di$F1iZYn%bYg26_|6gLV0y^UOTiDXvVH9UEJda4d%p^n z{`VBvfP=HPUaM2B!}U&~XtJZK7i)b36Ny_tvV$jC@rr}3I)CvaUJT{>>F*5gJOxVk zYhJ7KGoC&|0!p2SGe`Hcu9*U7DMfd=y*#i^3op<(;R;CmFTJ5U&ezA|fFGL@X%BTK z+nA^qV>!Y4qzse|t&BpQ`~!?Ac*yw@JRQ?tw+y{?#-lKsAjPty&_;{SXjP3r7~$J~ zV@gX+<*+{zfMNIJgacI!1xN|x=3anr*G~v{C*U{R%TUK*A0G118ek=I+r6+Q3~RJL z&ZE7*+3j{gUzs~uuKGr{JDxt7EZ<%D_#xp+MrU>LJvbkyIq84HUi6snWGn=hBJ=ZQ zMGa}w35_a0bdB*@JI&XdIiaO#v@St8+jfwgy2Q#BLR_c_hUqB@BU}p*wPa_2p=!`* zc)UO~7{EUU>|ql;$;dfKCt$EJ$x$MGPw+WA)gE9hlC=SBEtgM1dcSnTz;b&|`h`5a{Pzg>pa|h> z`QTvLhKtVI7#P6;Raj2$mLRGkkaazOGr%w?l3y7`=~ickL{2itn^q&~(J@VN3sEIu z^wbdOVy+5nYnK-l4=&6c^apbGb);b>^1;U<7{-axSwk1uO0ug>cKsm3WZHEFA}b?< zh7Mr><#YN^G*mQnY@${VS|KwwwL5GAd}XYAi>xvOhDyQM^VH0>P2Q=8Td_OS=lm8< zh8DjKMHx@<3zKbn>plTlOGIK^kaG2_r4NPF)6Vdeo>q~?T_#nzT63Q;7C(&9R)>t7 zv%q2XMpMpS{kg|AJQ`qF*zPL02rBLr3L~%>k(qe&XfbDJE+(W?L%x-a7+GoEt^Ziw z@=b4z3v_?mkx7IVPnsX~J@Sm(4H=jHDmO8)ku_C0Wko(rGQKF=Tn z;1Q5vko`oeXO8%(MThBZ&H)^GL5_DdpaKGwj%uNEZE&!))_y7Mv+?XO2h`pDSnF55 zfS17htBsTpLY8(bKv+nV)Z5Tu!g!4X~Dfl>L=)(VwpNaw!%+9*lIk>3pAl z@w!Pn49mBi?biHCw^Ja8GAF2NeK?RiMQ7#t&7**UP4_Cb9@f|2?^0@joD8|&Xd%q0 z|Ndab?Phtpn_YxrJa3S?df>SUpK#tr>zMynMjFi)LUXMZJRY{VdZ3+p*h5 zNC-rrIQ(k+%51>MX9g4YzB`4gB=5tr4W)5~ZhN_=MznDQV#C`Rfkd`xku#dxI}#)G zE{))91`%YjLo&<;$gooLNy*I|;74=J5ob4X$gm+`Tpm)c%z!d++*G#$bn%rsW)kig z^)FqXLCS<;)uzH8^pbt*+He^`KHBToRuOEAs8R(wgMzHm@7T-BtV~@AK*`2lAW72-Vli^CqeReP-co zF>@s#v-E~O{Gv#=Wb5z+DU2L1MB;?8#L!FT>KAaV$G!dfiW!WW&Xd(P%QZ`NRoKev z-L`PNs+Z=?RgGx0$y2}AH$1_Z6=#|h$2`|E&*3Bc%NbMrD@XQ|!P}$?Xda}{%1CA_ zueaEJo>tjI7lDT9ZKC%i{!GA0#d4z{Bchz37<;^Nhi~i?*jX9D<(`x4JZs?meYJ~r z=N5Lcl-FRwj**cOnfb>~u!gqNJ0UwkTGB_G^%2cx_t~&CB>-5~O*L);9cNToBWA9_ zeFSKo-m7_NLX)}PS24_Uvb@!)m3g)D!>01v->777t@~#K^j=aLaB+4Z&lTQ_DeCIAxsx>Ti)THd=VhB`YYFADQBwNK)}I1qbD{ z&9KIRjD>vX0<~Cjo9lHm?N77UMwa)YDk_aDnTl~99`d48oSX^QsRMotmHyxjBj2$3 zK^ra0R4+O|>%~bk`dvWou>sdlpPr{VL36)#=Mq~4$I9St?|&cDN)fKyvNUtmDyGjW zdAByBF46XNOsXjfW>4_uu)<|~Etl}wquqWnm@0Lv=3zO>K)+MXq~dOt0fbfTOcwfe z{tX(G9xbsy4(l9I*$)!v9(59q%z1`TeDJrUkVql7c3Q7-q-DTSly)<)ME)iHt@cQA zBspU0Li8`nG#rC|_}5&(|9_wFyV`LN=L_#H)2u#&u30{*=I zz`31_^*Z8$4(zkunte_-cp2eMnGk;qaCd%|6$@sMD_v8~yHVaf zBpi$QOv4RPv1RUEe2@p5+9_Xq)6HHcX`;mNYzipIl?sTKq3&yxWShT2`_1ae%QZUJ-ThjR}_c7rne*8ecb^w=W}INJLbyHQ-K;a;`8s zw!zcgAn1i5z!-<)(Z!ap95@)q77DHmy2}R_B)KUfRy>44Aj^~PY$qoODIw?Mzb+k? z&;n_Rw3*~~XNPqyyaX{2UP$=qvr8l?{PiSYKD=A@J^3da>;6(0d^+f9_h1opB^|Kb z{B6g&c)fLXQ?t)nj-dfSL50JGZIl?E(pP{LMZp8PDtctKIDw}b_(Iq`z9DCOg~cLB zcQ9q%=vcjI1l>xsfZ1o4Ias4An=;%nhX5}hv>=(-!4Ws(V}4fL9Kj4*vdS9rDArKn zU$X+zzsrVKksc{DJn)J)Z=wf#8HxT!F{)3GH^c)i%~vr0L5z?g)~X?S zyT*Cau0BQ4!Wr^M2jFtl%2MZ>0oc@StYc=u*W3z{Z{D3y5|N_8gT0A4(J~i_Uxwyc z{mNb^Tb=|SA$>(XxS2BmCi~mUuF=ZNc-#IGN(ymIt?rCv)wxq4?9ClPRSZ(sHV)=C zr$%s4U0|S-F@3L;L;fC>UvK{aqDWMh_lY?ZR-D`r!vMl9DWxC7#ML9~1;i&R2$DrJ zlpP3Fr}_&q1-`t^-P^>QM0KU69X~dhA{PGMODa<_b>Ni8qf{uG(iKFM(oWLXMM9Bs z=5t?3PA3rBvefcGyUTjSO+i- zLte{iXY=AC9*Yk@(x-7Ui}dv>fPb2X77ntTpr#qzZb=H|^&ad;Z^Q3+vf9w@l?2@3z7MkJ41h<_X!aq3e=JIEHEnj?WeXkjk)=YxSde{CUiE5S*FyUN#UpeV8dRtx+2lo_Uf5^^;&9|TcRNpk>k z)OY}}DM-E#9#^oOH0v^dd84#{jDSKKBd7cfuY6#Klx z+dmRhR~dy8CN_h@S)?o&1TU`eGW-dCO(HKzW%ZnE4lHN(ufH8#*+3v& zGo4rY{PMfT1MUO9Tt7;}`{SYz1k90aD9-}4<2j3r!W41TG~*Jl8TXW*hHl-Tev&WA zfo=Xr)J=dho1lUS=fY(U@6LcH^Jx%tCmdMg8D7QrD1sA$n7^`h3d*(O@MU_E=MmC_ z=kH*t7>1)TjjN$%nFk%F4Qb|rzr8~~2N~ixg%=B)`0#mCfanCAGt@duage;5T=n=D z0Uk!$KciC+q_rqM@IFFv|HC0GQvPhr9K(1Sv@vh6&mKkATkN1S#Gm}}&-S2%=;>z= z?dMj7Q}R&%Yr8-HY}YVI@lS8UQB&7aCi&wqe3sywVDRFZ95aN9!*u6AY^EwUV7o>6c9&u-}5Xn*+g1-Bv47jRLi>AylKQp||l zy;y!S#g#k_nBn@;{5ba%%Ff9IMSEE!+EN6OAnGFuFYepf!-h8!5Y*UEBtX`nEbi{K zH9Yr*Xv`c#55eoD?H@Cij)snY=i>-KQnvGTsad=w|IJ0cQHUWFV18GAuQ{ zxVKFHwka)akeLTwdq7|RpuT@3)1YOlD66FA zMz&Di->g^riQ!hO=(+5;8zkNV#>Xr&G9XKzS4;5cuL8%FXOeWe_v01lAZ~*?DcIPP zN}clyEp|uAolW9WzfPIEf{Z6Ep;7euxB31DOmzz>jB4cqAVNoJT|t@KGK;+7n#4e)2CMU9GH!l6QnQ*}|p@>RuBpdCf$~+yv@8 z4QOb+nU)XVDU1uL$6!A(=3NWRG0gT?-sCGi*K>^0l{GYc>bNM*jT+p551v+3EU>7M zv zMIEHyO2oUIH3J4ecL-YVy!X^k%#V^=j?QY>KB|*?Di}9-=ZGF}oAwe)AlRBR z_V!mIku{TF9`Srl@k@w<2!)9GdAWL76p}1&8f~(sRNiUVv4O$;+ysrdNXun^M&zcc zo}PXODtyiw-Uo-!*`ClxqM)Y6L-R08BLN)*<^+Np5b59e8dxQP7{^M8HvF^yS~O5T zf=WJf(1)s%UDA74)}@gOk_!vkU?hJ$g^aAv?+W(Q@!@nGk81_kcOAacB;t3}^y$n< zrfEm)^KIp(DOJuEl~*Wod9oOYP~YJkBo?99WBL4O(}+=7{QhZ9YF2#KjIh(FH}qi3Lz;8S2(3cJ(@0fNw^_5*|kPc_1=1V&8g_#QSCFiiPS zF$28S5Upf+QNE(eBE>yvi=tZKV@`(L1Ks-MV z?gZARzz=BOkh*~B5psTi58nEhPT5J)l|_-YNz9mmM5$rM2fP0hKV7&x86Dzs;Jyav=ETpzqK56QJ(c-wKhaxoC@5+BKk3c<-(QC(d8YU zA$&*x=T6yg1yuvV7!{Vfgy_tYu+yRlF6n?Vv!q@H9%`+cZAc%mR7aobCn)G9jO$`Y z@)$IpX=to|wpcbob{C1Wr^sAJyy)l(H3AKe6z0%nfgb^@TT7>_z(_CDu>h&_GTh5O z*7@Nuwt_YSyy{v4UcUX8-@hhFl^x`uTt2mxbtH0TV|U22F|~^yjw;pM>aUJ>8*lt9 z&4R^{+a0Q#%2Y`m_8mhjj%KwfKw}fE0Tq;)k{nzfZqoXVw{UwJWWgm0fohO&C}9Lu zc>@Uu=O2jje*q$NHXiaUbIRTdajt`DpOL-2GJ=OH?D~03vo!1BeL(LJyH+dedgV-hr9rvQqe2~wT|SV6Y%)!F9zo6`5y0XorPF<_;Yi9Q%+ zA~L%l9#1Yb?f*?4M;jZU;zUveAK{lH7wne{Kx&;}APLJR0eSj9KmC=eZK& z_piBtpnz$!P2l2e%X7Vt6g*D-o8i$@un(R#d0jNn_$D}oORS(Mj&saG z7ejT_qN%RnWS8CvCfr{}KBBoo$CS5PmzG;Q@pgqAeoP;ga8mpmi&_SAe$q8;eCBWu zx*A;$IVJ|#dV7`UBoDm>`OwuN>+`(V*$yhU`P%3$Q*%-p?2$Jvo2i-U)nTrNy&8BS zGpHDT^`)wB^e#Zgf&y|HtBB+N=dGtBC<*q**s!{pQpwt+V7|pljtGR){V6Uhgj^wR z`1fi1W|%rZuU$N&6Om*YSpD4Yv|3nIKTk+l#n^;>eS=mu-JVHESf1)n0PBr};`x)6 z8k6O~TTsXvv8}b3)cA|hIM4M*CdZXhv-vyA<)v(;b1JL$QBdl`H0ZUR6{!5%{k1T! z*v`_C<)4l*{jmEa;L-Hx_j{_Lbl6fv3ya%sb13fdZyYLon1F)D&6i>kwTD$$7%{rO zP>3!!=#%yY!_8m!wTyx&suIz!Jz!ZMh0(KmMu+RkAgpxCH|65XZlaRy-&JwdMhL~j z$qOkEY>faOW#u8hZV!s~7~1SfEn$IkQQKF=O?BFUfj#*df^yQBitE@g!FzwQtyC9c z12ZQ<9hGWvB7Ft!jWJ1%6>>ik#LI+WTj!)t+8?n55;RJNY!R6ge{%oeJd6TfG>{2fN!)Hs%_wx80}jf--iK-Qo3I8Q$2pb`u5@ zV)CSbHe>{XM3JeH$E?OtcU*Etqa1GAdl$b*-a+ZDC|P!)LxF7x(GW%5!H58rC3aGObHKa#ZvD;|-pE|d8gCQ@-%%ubI^#gcs#9UG)C>I9KOmixAi7Ym3^(HnQC&nPu_*N`yS zoaP7fVnFtnd97i<)5SrjANTXkWE&Yqs1EU9|LTsu_XG+k%Xu1S=n@~`S|Bx+-YeF= z*znqXpYUdzMhE~@L1H#IK5y7R?PfoFwkM}6CfYsrG{Jv?7-cN;k;yoF+0S!*4)D+t zKR!M4kMGN3{F*`c(WB#ZVF5~J|EIK7)#=>dKv{aiH-}*_f$FpHch9sbF*}b|V#BY? zE?Xzr#8*#r*cJ?BvmA!Evp4M+w|k%%*i>Y>yS4Cj&T2oV8Ax*$%^#`2a>~asuj7Qs zV+f!R&A%f`7sXV?#J6F89&ZNR+#H6-twMgcJNJ6`>o;c4dmWvf?{^0*I=ebo9O>LG zrt(HxPqut}FX_>)TkR=>QkJ0g>56ETremzm+*rGU7BX~~hb*GD&b+?H0@fuURQWlZU>AO{;=hBz@ znjoHLjfwMO&;WVXFN3u69{%_+o%~=_hF>JJie( zRkMQo0_d`!j{r$MHXTR*d0-8BYvQlN$JcqS_P3Mi@wT@0Vy*j43~|D?@a?SfvD5x#(D=KGEdwOtK8hbEY>SG?t3w7s9aKPQ}W zLM+wIrWXYS_2V+Fzd0`M%XmD$I31CWI7_}fpNma0?leyv-bRLTU7iDBKFO(Q5}v1q!UY>>Ej1%5HKzZ*zWY zVYd=L1S!vl!I;7D(01jIbNS=@p%@XkEX+W9tLyaEzWTvVD|t=LX~d@Rb}v&)O_263 zX0_NugaZ3bc#0(%26mt(mW;OWWkDe}JvH~N?hBQ;2(>nhy+!_;MG{20W>?mzoDfoy zhdiU{B?{9(*f@>um@g{?XnED8D9hLVSLe#q-4R}VlEbk7FZFwd=`Xh9dD<&14@-1_ zLUMEJe9-P0%z3OSrXq~b<__^ptfY|TFM$uCH7K5n{bYTZNFI-5v^J$Eo!hC>- z4(_Mh69%I&UPwjhzaFRaEVY_f+Orfcl|B}Tt~1iDsIYiHAKN#2XLRtUA5rt&KOgUz zRNW5`oNiKcrvCyf9L$CcTK8!-qW2@T+q#!c&&8q}A`IQ5iw^KMH)xk{aWSq~(#NwL znP&Ow@~*@(o8sn9*T#>cMESAo;w%zP2r0RaqJ18=7#M6i3awHZs(FEQ%5*HR_*QuD z8rW4uWIS@`)vc68h;5nB?qMYT?xdLNm{Mo?DDY*GMdw&CCS>y^MqsuJUHGQI zIng`-x6f5^$lg}Q)@*=iO-pSW9y075}@@s1f zuOzlP^!C2=V$aaV%`;oH9yG2svTVOZ^anYimFg7Q`)%SJEtOa@V+y3adtypiMLs2o zZa^f5dW)>TUtg7!>4R$P>pV(GU@yCu7V z91zLr#OHW%y4uOL+gEpK0YEa7{20gM#9-$NaevzqdvCVBD^ZtZPLNCoY?o^^-<_|f z+}}_!`=Fe!ziT<{plux;HJx<-U=T=p+!?e2zCzWXtXDU?m21BF2=r*rG}ttVI#9FB z@whr#Evu@^+R|OJAgM|waxD%H4r*V4bGh`>X|$=`Jx-sT#8g&NMBrh6_w>EfcsQ)L zT4}J|?3x`;2+(MX#_g9#Z`nI8-x^C5@p`zZM!|qW4EVj;3`t@<{~PjV+3U3}#yu(K z*X1mQ7{;jU{zaR|rXLLN`3KaeLZ(1DEi=lX^^o!Cp90Bkf>WY0>?0P?5X6XzqC<2R zD-ZX*H?a#ADUl(*x-d={1=h&Txsg1{Ugv^C(=8=EB)IdIt;)u~(?#LTI?lNmR!C?7 zjKxHcTY8el`UO(AoKsz5YWD<<>7LsQK3>y2-V-UtgmHgt=v_YdB~{WQt8RVya>|;m zc8;{wc7*8L$zCNQ^jo*)$<|m$>MIP=aaM!pw=bc_FpjsETd@GqHcwU>;OkVUMDaZ- z#<4_BYlMU;1RGvP!3S0yHRr3e?(;w~wEI(uff(y0lu&qBP{jJO=U1v%$CEX}`c(^d z_lBn_F={5XExO(`DY_8}fY+UP*QtA55Q-M+gw+jCRE5QMdg$T3-nBMN|DQ*1yg5JNmwk>TLG}aWC7J#yW4M4DSuNGVHfL+ zM=TOkW*sj=hWH8`KXq*~Gen0e_MxVF9)rBcZ8Wc3cyvsD&V9Cwqz=}SCfi+UJWo$N zC(R#ek&zkeNkuO^BEs$eaaN>_J`5I0b9zA2FQ)N{@H$;M)_!lTl+H z61}t1mOggMsdHTQNp)mWd~2x)f;HC6 zLD9Q6k8E{2-}>cId6??0Z3X!oQ}3j5*3ioWOrl(KB;ow1hdIxxwDNDds#+$0l?2*% z(;3iBj*JP_2v(+yJL3_V?em~sB?I+QA@l-ZR%b+G81| znk6L_-I()BqU#&1(|K1vO?ewa21;ZEyT=QgiTbU~#mQp9056(mNJzW$=52i*L9;!! zsxIX7Gc*kKXM_W{!GuGUY4_!t$u>20c>w?wJq=m|nn(09Vn7A2$MYMc{?j@4a8UXj zeZ?k$eY&RRpE92CdmrE%QGF_hqxpL}_q)^0K@qx^`}N_JrymTqWRYLCUA!uq8h>tp zR29N3xA0JU9y+*>keIU2ug|Lhy9D-^liPxGYRKp`&U7q1}0MP07dOvw~Sj=Z4=44(W>%>qyPQm|Q z!Jr>-y&nKRo&cZhy4+}NtE)JLU*LeXHT5k7nw(F;P{O&NObX@UNoA?5cdgakU${U) zvCLJM1tmnZ`O(L_G!tf`Y!L56gq{ymUf*U6 zTkIKKLrpYUJR^-fwUZILOua5O_o_U4?}||zQlal6VrON|&`Afc!&UnDQWO#vv{-rWB!7|SH3(_yhehw7 z$ck@vg6lG(Z5J$jHCWEPDm$aDi;4DQqH$m)+Ym2)_s-+Heu=4*kTGCoDS3GD*6(V= zb@`Ftg_CFpC=~~<(J-<@rqyaPAHAC$2C6xTFX=37AdjxpBMU+gs3z6$kwQa&k9V}y z@`K+#W9YhS@hrhWm#Q~QKHI+R3@&+wMp@03F*U=K$$m7;mM+Qm;{4MM?VvpQ1ifRl}h-q4#~s&$LROJlcsGeQJ1R8;>?|1p$&0aR!q zA%Wp?y#T}dV4uQ?j3+K7_G~=X%;D6K5)1YIRBxfyZ$(mrr5qH~REBAfV}MY`lWFrA zPss;2DkoH1P;poo{Y$FifX61K2xM|rF=I%s35R;?B*1+q;LKuk*;p9mcB2kdg-)^%uOHl+w?iY7qyyz$Q}^HI#xVcB^jJbl_*;&^gV z?T`^vHmTkI7L4NTVuwTEbXeM)G#U)({70mUNAGMLeBCcGXH4=m0#5g|o@Vc&@5q4Y zuQCa{K_oO{!!$lMHJ}RrVB0|#U9zkdBZJHY3KSDzJ5^6l}Sk0$;e0)X4sK;(Jm+%wXNQH@Z=t|gN-^2HQC-=hL=|? zGWjRE`HSI<<@b@n5&thkpwh@+yki^4T`l=iA5t$wT$|*n1AJ7rKTwEwjQIs^n1E`q za^;W4jyZ!+Z}akvvs7Q18;~hfFhp#lt7#};gJ3RD4EXjB(Wge$lH#7Q_VNKeSnZi$ zQY@O(uxFlpQbeMZ6Y_Gy>7Za`!soj4v^u@{thLkD#$e)^()b8#U)La5k?nc<#S~@H zmJSVNsYqQx{gIw5a#p$_7VC_%en>QW)R-1-df?lWox*>?(4>!j zL@(`p@LoLs(S=T6CGTX^)hH+P#d=8f!2b*mL5f;yi--JR)Y&Zromw#maL1tZKfNkd zyYwk2NDNfKFU$euYQqo6jNoN}Nr@qSA9cRkkt2S{Nm9P+SZkee0tKBCCWfNLOs-`I z;1)|}K%GJfHSPK;Me=_qB`;lm0j)=%{n>Fj$#g(W0Cq{E{Z(+Ry2)s{4iuHEGda1_ zOraOqmAKRKn_r3$n8&SuAHOcxay1m@a;^Q9nSt`49(ead;k-N&Genq1$vEj1^kUptzUD2&AaHE#mSC-e6Ydw@;bd~j9O;35%^rJcVTO zdT?!UL25mG0FMTE)9w9JgbQ?sLv>}a#g|kW>xDGBe(iI=IO|C)2(|+_Gu3?E`Kg+KF3#1dSpX%zB|DGN`zsI4>SN>d*mEH%1Hb;obJzE z^XvZ+ICG>Z?|42k*bk7QcS6$uBr9hw4jgiw`R&?eH9cSW!9;jEI9CwUd@pX&QT}i3 zxybW0xgaSQwUY|8PC;XI2}9)yTXo|Cny(e1kl)>5!ue{cHoRSwqal@asV1R&?GVFd zFd7YYY>ahN&?m0^uzwoJbsufcdP)6Mrd1GC&h10|KD5SN|F8{w)IE!uP{cc5Lu&)J z7(DW{`Hd0^9-$S-7O^!M9mq8DP7`lwG@pAOwmrx7)8+DPjs<{!H`HP8?$y|noI};v zr7c2HqQ+*E+cobwr%YgrW7_p3K!|Gs((3RIr|!_nYAM~;up*`Ii>754VBk@dOm!8z zMs;5&S9j-3eLgRXsuZBk4Jt-Zl`IP#`Ct?$%$TVkJFGyvD!+v=XBRg$jV>>8TL(v( zq9cPXXVUjl{dlX*1zPwh$u6&j!*XUMm!|%exs&s>`+KB1)_B*#b<)z~yLH94=?S6J($sR7tIoN~@e(y+deY92&@aspqnHT5P;Ow4f zg1~2n3&du2QKl^}U<_+Wzn-azd8%SpzlJ4w&mCDZu*Oh1(8*kWfoU2&Z-*rxh&Tw4 zeBDVFiM?skqS1bV{pGQbOKf{kF~jMkeIwg^ef#h*fEjcqT`uR!PKOKwxvEyfhK^gj zx~Xqoa@~buIFfb`T5V_C)=mfNQ{XN0c{DeLy~kPMLiR^L*!SAwdlan!_GLId2zcjQ^!X?dT97=Cihf=hi}6fu6G%%y*IIvjTT|-=aNO2E zml!Qg|6D}$sECt@Hp%IHPqqpxpLeQNIbyY&MXQ9_RiM=Md!dJ*`{JkwGRiPbwZ7%} zo<=cUOiRP&wOK~5E?;;c`;#Pj-0c;+$Bypry81|nhJbMm;JMiC^-IIKA)#=gWuo-Y zPw#7XPCE(h`E>r4dowGTpoM-+Hq=1G;@AHKWbV8{=PQnAsy+^;N}))-C#l7!#K+*N z5k-TwB5OterwrDj_zxdBU$@0a?m6kDATzhN>Pa-$9i@odt6%@Oj1{4+vUL=9F* zx8%49u8gH^$SmPOBa@?2Ci_-MFEv=C9f#SNQ`p06@k2wIjcz~3z)VnWs8m^Y;P{BD6M%YxNzs2f`)I7Efwc0cC#$BHS~2OmK9ltZMsRkn2a!+$v97x z(+^<8C&gIO-Ld;#j^|d8u@ux{uRvuE*42>>SPM2~%s=#ZR9Pb zets&5m34Ha+h@Nd(ba{Av`#Yk7T6FCuFl)|dHUU^L(q8ZWja19dDhy08&gV-o-x|Z z=D7tLm%i|r0~Dj*1YO+1O21~Ui!k}iXnQIbmlojqbJ}txTC3kgE6HB6ftS_f#jNpM(3>AtINL z@F$&A4K^%rmPI+~K314ANtHObf&6#H7TO$Pv(4Z`b--(jAFXw}`zcJ_u8?l{D2$C` z=lYv9Plo0EL}U&(lQfZ=3vo=Z|RyvtxAfdKx`%aN^%ujpF1j5 zGUUdF=M;Pv5V5%|_~?(toPFu*%D34EJ1}TAUb4T<5E6;zd9kSV$H{iVQD{E%Ylm1L zeM=RH<}IZST&TCpXKX$MD}RJ7uI;UGV-n))EarYJ&(Q&ckGp+Ti4@tS5kw2NpiIToJPRd&1rr_Hj(xu6@%jh1?(D z06;QQI%C0a5Q$TJ2N&ZH)Vn zrMYqwuyN3L)0ljj98!TS+~=}He)p{8#$K zDOl#=V@F?qteSKNrB?+RDD%(|CjDsBDkt5HE8lUyuOHu(D?dWA@oN~zik#XpDFrOC z(0(E7R`Njp?vKFPo3DMQYSt}=SoxD&QZ0(fsaO-Gu-lfRmOTuQ6$w5u=>(XzjWIb@ z4v1}92~qp?Wu1RItYmOCZLFtMxe5!w%t_R3a*l;c$@=K($L)!Pjvgms76e+zNT4BmryA_n0$U`utdf09BIbM&tYEO^^6l5yC+uPqL zDM`hisPcc>I?JHAmTnE>E(rv;06{`<9UOwYySrO(3mP;8f(3VXcXxM}3MW?VfB|B2MO+({ zG?LQoI~MOuXM$DRtnsgfoLNOVhdJdD?Hc9p~}qpLAXKr~cn$U$GZTA6@OAX>dl#B5E_UPBC4{ zr#Pk>zX2OX(~U1T@nf7-BlI-#tb_EG$wkmp`62=;gMGe(u_euolI_^1keiZS*UE#H zGnn8CWk-(*IzH%2H`+lCp)^VpajcJojV{3=2wNQQpKMs$h;Fl}euL<1Z1 zZ}sLFYFU@^I4KE|{MN?|*?vtHzSwTR>!|$=#+L0CHU-r$8t?XLaM+%z|5U&I_gR1~ zlZ|AtnElX}Z$G@E6n$s#*=@q-Or~|sag7boY`wn*zp%q2>@B0I9LpHGQm-NB0+cZV zKJ*E;ggAr!8LM-)NEni{ozFX&D)_^yS07Av09$>Vk!@sxz2Q!#f{c?g-U~ZMW5;0` zSSst;hUJ&ZSqK#~fZLe+eMco>q{iJgikR>X^c}!`%J{21)LN1RTjgyP=yuAN`PLze z_bA6K4p@!&QpFxzI4n86)zY})P@#edHD87Fo~$~_kl7aIGu4$R|LHNc;c6$Y$A986!}R3!<2hH(G+gOq3XDXtp1 zA~w=d^`Rll4EL^4{m8ZmhAn_X1GhKGu(rgs^?g1PyvaBo9goWR7lDmV#-RLsN#)PN z&UgaV_f)cocG1@{bwM!^C{+HU%Ff4-V?CC7nk_X2$9@4>66~R?^TbhnGElRW$+$@e z0Fc{Rm<_;=1hBNos2&>OsYY1{C2*cdYA=l?74-6~+!S%Jl1{*5P(T(4kUw zELdBO_C!Em2qp$T8RQVd?74pOofVw?@P9ovp)JesDf~lXuF=fis3PNYL_`+*L&{xv z5i;3MCjxYzKt1Ak#8qF96~`bAHzPjMl2|EC#bISbQy zHiwUB3tnVDJK&#N8c6A^yf}js233^d@W09Nvs3HYpe6u9} zuNi3b%n@dhgFQ$!U$yYcA*oxMNn`VkOd$;4sUifmD0FsPmZ(N?_AlBaVG-$XDD#a` z^Q9PP3`8G0Ji`yNFY5S^rXYXO!Cf;GPj8>c0f=*F))MR zALG%#4y1MBI^7b5M=^Xq6`gwyj!c)t6rMR?<`*09yY1t-oZXPqtOSphEa;N8=GEt( z>Lug_+Xpjr0x|Q#x@}t4OW@|uMkXlPD0Shaca&g=CbQwY`D$u(aO`*3&A(Whu88v5 zzqy3o!xS`&;(O}^2cT{pGfYkUYFGQ;6XH??o@A@o5HxFi;V{W}+WaI84c)j&PO`Y` z(`Lgc_GKdk9gW=?HC+mOX{|s6Ib$f@yJfD*C?%r@F%KV*SqYXZNebZ6{Dc0>6mU&Im~Elp||1oF% z>(Y8J1Oqzwwp+o4C5o)gH8PN23jL^(s^<$AlPinG1Z)TcUTzlz_soZ-DlaeS6p{}TQb_4ISZcAqW;szg_h-au4KvM`bK^&AS8@bVk8_Hp zY_hQetB{%u0taW>rM@1x&^*4$keP+74Pxg83Lymi3{XW-Ct?0V$V?LG1z!17mhBqz zOtZ!8Nd{y4I!4kbwmf|8-|}(tbH(Bq-??tc5ipG;LgHGc>dO^>5bnV0-vUwgb@t}O z9-tHR4h+(jnft3ey)h+ID_YZ|$`e(miQ~%8&;uI@Ps@v;J3#|*ab_d&ZqVv$-N>tK z_{(177s4yIE#pOulkm8;{P1xeip%uacm%`{=41+ckgb6X_*!4>hs|=z6qrWJ? z(rvUuiLjg>k^aX#9ypZMOy_(^UkGA**tPUU^_w(WIecU{971rXFYzwilo_VJ5J1bj z6apoxxs&W4Nc=V4w(z@CLZ!enN0I7K*N+4aUs`2ulS0>NeH}tV8vAT8g854^tRBpx zSE~xgD>X^P9nvx&JwrESSg0rc+-S%Q$82DDx|`#qLP#5IwVjriIYsyVYymTDM1oo9 z)e3@FT?2(FFin8lmGltUYK~A8Lx*dYup%U#HS^!6P#d^nuSKgqzR<4BX&Wzbp0hM7 zWa&aI_>CbWVMLS`Hnd)A)6GF@Mg41N?VH2K7l^K7MxoaTPWvzT0TGmWjo>kp#9uLj zOvY;j-*{a5&ifP%f3qY@0hy=`8K%cBP+BlK&KiLrokRHp>Z-3reZS|bDAaSU*}&L# z&<;^3x}~nlQ^9*?{sdwqo*vONb}7IC5dGrlXd(gsu<3@p8Rx0n3AykQSKXF`hNJCV zrIZ<$aVi9|@~thVz^60r2f2u>4z4$Q9X5IC5GMB_7{i_11WILGd||HyIHLGQJAMG~ z)}LRm8ZP^f%p&_W;XxG^p-FXV1Ux(>XWIsFDP1z16XtU9JtcQM9Il;7XzD z{Q(92R@Rt*v|G~qU|8P@v*WhFuC;Xiy^&oMUjz(bQ;lu@R|}ExS5Whf5{Ndp45KJI z9MxLk4|_$Zgry^8I}NMWlzrXWz;&1_Y08Z23fMkQX%v}vGwMkhcHW6iwV{!k$<~nY zgr0zjGXyJk@nUA&-{j079@+|<@$}pi(o#Q-)C=G zw^xzsmbySW!30egX2Kp%=&Wbip0}?BT-00^^WZfx<~lopC?x6pT`=cM-*Y+m;O#qT zAVG~dd1utyxhAEK(5~t>W{w-wb+2*+lQ;^A%nxkmO=zv`gal=k1{H2{udRNdp%>JK z2C-(p<~EgpM+Vbq)~nJ03;IOC0hZ;hO9;+W_mSzqogwdV44S-^#kI9<&ci!J;plQHFFa)CjNM9Nl zcO^eA4ON8Gd)4yIX#Dc~`bd)+BsiWZgIr5nadEhdcug>I->MDOH zYPt&;8Z7g(Nr$Rt7Zd$kSLFEv!GfV<8oA{IC{dp8*$%}vmO zp`7=@>~zR_L2V&ZMy2{(H#V>+Yara$J1m&Eyw^q9izMFxqIqS($7?RF*L|(nFStLM zb~meIi8_uO$cW*2q$T%bN3>KX&%e)*4YlqyKl+8!|E?;~663YVQ~SIZy#G*1!MmHp zQ2?axZzgY|cQA;Hzwj5FZ# za$)e1&5I<`EBTf@1=lR(yLSqf#&{o_xAUw0y>QUI5_7d6Ib-X#uWQE zyL`v3IZEYFfBD_w$g#)X?qFMehFC=^{;}gEyb2CM>WMt6R7N_8{2Bs~ak0ph|J}ab zuiH1Y6Z7MUX^i6xy0JUV41DPC(mkvm}Sqki(61$4$}MYzRJ+CP(xmYjEpFJ zKs`LxhvttWw)Us|C$c|1>=yuOQpMzJqDun839^LYn-+QbM-+7ut(kxTA=5vqmZ&0tLqC%cy6P-d zmV0Hu>t+3c%f4p#kuG}45ObGxys~ob42#qo{~qkz_hydiwMQSyO7wM`dkUyGKphl) zsS6my?aVc5i4`iv-ydX|5i8IN3MwpSHh5_l5yD;-A>zF1+OGn+ zhLX}APUr&@Iw_>y`ay1(7%dXZ=f-l;vnw|}9mU@a&RkQW5T z`tPfflXrkeYf#hUle<@3sLm!X^T+C}?>dSd^d6@DJ9Zx^_x!fOz2Z^pGZ8X4SY&c~ z7ACnujWRSP+-ekbJZq8fsfVDkp;U|!Xe%@LZT@p=grHm!tXx^n;4D@izb+#hS zrLC(#KQ`{^vF|3bq_fk1lb{$nb}^i*xR`oSbk3|z37h9z$%(?zR$}E^_sgz2rTu3@ z4t$aiPK-X%J*vx?8^oJgfsfPQ@5FU;LRf>1SS-~XL@or0JW}0n z#*fYp-I7Rt&;fDr9VC#fXw8$*U1aY8dCb4Bg)-tC-L}KJBj_wWi%rAeQ+qcI7khZO zF0P$lQYMVL@c0q5dvGXEuYZFlPQxQ($CZh|7=(COQXmhiWa>{tK*Ch(B7samE&_b~ z|Gnz#`$7}(CNZC$+i2y#&jL!}P+;OAj2OMT;5#tqINSdSGFKqb#F5d}hK}3OL;#Y@ zHYsw4OQsa_64?I)=|92p-WA;2-^Rv8p@m^!#7(OhyHlYM>G(`7C6#ph*f;IQJF(NO z4%5$;^1nI62#v$RL97Rnt{fs+Ohe;Kc12J+JGGcKTR5#t<#J3(ttH4cbnuWouVu-X z3a6VBSf>5&$-n2t?QlV%Vlci<38hCocxlyt{vaie#4aiSa1GH9`1wMI|I@WVAFj;n zIXRqPBCP$(ZT+Z999Eo($)+fdn(qAR*V9tHUp{c7ROT-Fi07R%vOKraNzNk$UjkJ< z^kMs?6Fy3Vo1QiEgd)f7L;)#Z#^-&(iKDH8bzW$%RbSepl_jvEBt#dJ;GIwaE^7+i zL+fK_0|Ya~r%wz+(rwO%GXXrwht%J4)UkC zCIc(jSE@>oeHdQMulUiWwQl;SE|E@d9y$X~2V>QAWm|0h7MlQdY!s&Up=|J=H zf--Km`3Y`JlCLJ&JoF!2@PCh2gRUb>&w52uh8nGAqSl`fTs40tyM8)e*-JK&nf02f zv{Fk{zTccApHTm>^-@pi-2H+@kvGg~kSTUue=-CcAF#1%HM7FGkww-7kC+2%ff&s3 z@_6yPxwpg6O|0c*qdq1p&`Z5fefM!Rf&WyfZ|r$9AOZ3-gGuLV13$Y@`}L(avJ(K1 z8p4c^9)a6m;IMN$5%OzxRS#!lzpTx1fq0lL^OC)eP9klJCIm&k$-+R{PL@7t#lVev zHO{$|`;nABdH7#O-euRBxOkuZ!s36HKfR17ofqi<8eG_IrYwC}^}JfD^l7g~RuEZn z-aXAxU>dBq3lR0a^!24y0mTRcH%Xa4Ly(X+nHP&4claBVH4~Dx6xAU(>MqZ(Emye; zkQI8}b3N=t6%I-lHaE70~gm-#Il?0)YpXt`HJNU6pxqI?RP6h_zd)+BIPn)GpT zS0<4CVb@-1a2Q)+sE)jS7ZivjpnG0NFb)el)G{`Tydkyi(F_FKUZB1-5Onv{f&t!?gqP`o$}?u zPg#rnA5U?V=!85UJgiyenqJD^!B%hqEmv<2r#YVg!0IE$nkdRH6sLBLfx&in`Y`!I zJr!+_DKG449<*2c+_ozvY{}l8IXBna35MCqpb08DwD3>fUmo-Cz*saZPh4U>Ew$%V zc8o{R(_`g8r%m`1gA+SVZds4h2RuhxM>12Ns?A_${p(FTO#Gv99c^v!gIi^I_;6b) zx8D{JG#eGuz71vd(|qGN&)YV76tqoVS&C!2c)NB|BRF_?576Myg`#XKH=$n1$Iu0@ zEUf(e@^S+D(NU>Jue)27tJQ%E1QIr5w-AO%a)z-6pY63ft=TKYI=ghv3;zp4I~9cP zuFt&g0!~&`E$F@b+XW%^nGhYfmO&}do3n*v_+ez8aJOC2RiIB>+ojX_RR>qb8Ipdp z&VO>|m&2HcVf}1iCq(jl(zsMt$$Bw^g!?a173w$mTHN>K4>vGIIULYDt)_6tX1fR5 z3<3hUJM5AiEH>;a_SDAZdapy$I7p@A%6L1p?x_ zg(9`sFKyd9e-J%eh^Om?tQP*nr70c~Y&*0!O~*d#HB3?qt9?!Lfn6FtYu5ATtT5#s z&fjTJc&2#ZzjgQ7S32F@xne+lSf5qXz2!dpoEVyzC9-0=>~eJdcwzS^f`CQO2eoa* zeXS$SC$a|xKOxmZSRkADsv1t+^0U=<)m;|>eVfo{6^Z1De8obqd(czYq)z~s^YIj5 zJeDJvHI>zM5sdE8pdBYU+woD7Ila))4jUnEm`6Afy{hnMO+2Z0pXj%@oR;ni_#>RN zXK%>lIcsBrJ>bE27x0kI!cL>@!V<$)Z05?~in_K6rznYVW~DM>?psj#dWljbvD)qM0csezI)aw|yz_4+ZX(Ds~< zR?-ZR#ZvH88n&vMuxw}+(un5ou-pMJ$Cys!y?1oO%~2)v<}}1FfP>X`#BFS_0;ZX0 zR~PlqDI|UH9aU8loVm7@xQMRi&<4gSh>cT<-RHBqxxnykECzJFjSMd%1BDDd3Zz34 z{aMg~IM?OJVNZKEFm#74TVDQTkdou_eM8k&uiVra@!U!so6aRAe3qv-boaGkxBg>^$&kiX2RXv?a=&!4ekyAHXZn2m- zhv!X;FIxHTl{X7U_J_s9Z&S67M+e!~KfrB%9ObQczr!01&(3#j@qC`BH>(KUfyYkt ztDC%|>gUf1uV-Cf9)%yzlj!UoJuuA}ZB6{rQn@`G8DiO# z)E^FCp1{#J+fo!gPb^QfYCwnQPLxl@3|8{Lk`kf|-WbVX$_Y$BY86T@h4CfQs!D$5 z@tX0m>WSqLFj|8}b8|GL7U!%#yP;+ODb#jOxzNs5)No-Dl_m-Cp z|54NhqD&8}2?ByedB8nu+&wN)@8hB{&EE9ZZJ>J}JC-u%UaQUQl|baBQTyTe=1dVhyRukS2;aI5 zw})|Y*M+Am_^a+gU9Qt4&W93y{hkDScikX_OJuam*7RTb=8H@X6k4%Kq?R=GiBk<_ z2BWYgcM_j2hD%vW!ohro@^U158?l5+_oo^(KIScax$fvBarRvg*VoJG@nc65^=iJC z&vni2@rkqXmx=LLDX1P+vK6nxRr^~(tR>0ut87AMd%9uEx*#TK?T9i=SA`1j`6D5^0jDIOxdoK}`aLL9WW9x6V< zO999ZOK{dgQYAw})%1kk5SS?*&r_v_g8JqV=yjY|DAxnc&a~H^-8{~g8{sQUE=ZdS zXrIQL-y|m_QI!o0%ZB)@$bYKRj(0ggdBpA=w@qz|>%T_D!~j=9rEwmg3H|vnj`8ES zWZ~(%qIS>W33<|H>SObvZbJvt$64gW^L^^d-+Bv0_KjX@Zk|#tR7XFWeVj#Vnrl7} zIoz!KZj)}DZQPiRy-`#7$*>-CH=S={VvOqpm-trdxC@)ot-gDX(j*`gH!y;{x|5>O zqD&55Pw(ZLh{sEF&uutgMF2iitXQ=}TfL1Jn#XuAKh%q0JL(s`F_dBWdgy96NqVS^ z#3*fX0kzb(UU(iDI4tKA%MxPa#KC?;5;N>@DP|I?6yoPT273Khb{-uL>~1 z74l>{O_Bo67Zlc&s7^!S9GNg5q=EyLJ|-IPMNx8O!LX9l*-_o*GM5?eQE%`pp&ops zZc9wb%Px-R-AV`ahzsis6*=j`zxor}=3bdEo3ByJUs~aalkAeL>rEv`+##{z$~ft7 z1R|w9SwDydqzvsIUzL;>N%XwW#5{5p`tf4;Z|lyI0W0^VU$1y2`q8jEi8qXE#xc0y zk>%!aTxu@wMiVnR&4=M?e<*9EX9%)- z*kik$GIiINBHmsfa#QzEoNUj=qTIG9iA&F%t~~WKm+o_7A$^myh@lgFj2a~I;aI*n z4_ow%rXyTaj$QqIf9#2v$xCJwBqo!@yD@dd@B@#y+d}c#xBKN1Vl{W{$aFjXcPnKp z2RWfO&*{Zt|A;LUW}o+^%v|=~0qrj5*6)n8+JBz~e1To;oFK#H4Pv2 zXKG1Km=sI{@aG5z=U|Tud=P=qlcx|zd6BEgX4Myc+Fo>*a{B#=Ih>`nih{S^o+}Se zJ1@tH%gZ%nM>9cS;$38&A>(t=a6k`j@wvuMx2w>{Wz|cy%l2mJky`J3GsC4EgAVvN zSWNaaRt4%uN9*B;*@n^j>>>LN`Hvdb_D0h}R1~D7*0lfzevQv?oT)n6@!k)seQd?3 zk?YFqfpv^1EZNrr*ZE>b+((F>MUqqU>Daj477FTq3gs=th*N*`zrXGKklGD)|I{>x zCP`RF@kwSnphR1jBRw8lXM&B}R)``4azEZTh{w4UgORIc=Sip5V0<^M_KtK}rAP z84W4)L)G;sD1o6$oz0NaZ5y=>SrV~%Kro>O+4Rv8M(*O7D-NPdU(XUK7FME#zG-)jd=TaJoLNF$P8e8wWsRq%+Mhodf}Nocp7U}sEv3}e_*MYb z;8x>ekRM{=J9u;H5|G(SR_HgFLo+1OQ^=DlNNGU9%L8LAFXG;OYasdiiM#$8Q*<=x zczH10xx8}>(Ke0PT41EV+vRMFGj2zvleWB}A#9bsO0?~LkApTCcdTF@U^3n_Fcd*$w$Uwq+>gqODbI(91(%2F4{TncIh@-ZkPWvu z9maaxLTd>a*Cn;2P6Q|d&T;hF4$%eFW78TVkVaAh9pq4%6_-B=Zr`=$3OSPz=XHol zrr4j3)O&p^)hLYEO`ESWDu|*Ai!5&yfGuB5aLwv6u6KF*X+GpnT^9|sUtW}c1N2f% z+>ku6DK3PsD+4M;`wtj4#7~Hf^NMfT9`L>QCj#*5OLZ6Mt=$;riT4M$8!G%%NWD$R z`Mhh#_t4usht(MF%m`C`N2RP}p8r8_0i=uQ_ID z*52{WFibCo+a;=4*4R$_$G|0?a?>zx#9Z+BlMCHd$VWsDLv@iF87xrj)4$+Ju^Ln$n__lT31Sj4^BND5d3C!9o!ABBzou?3Z@R-CUnbm`V$2% zZN!gd0pwl4_q{<4EP=<<$5Lrs`^yGm9q-gd>m9V8-DYiAe~?G|Lg`S5=E_y1B2^6( z4BDz%v@8teA!Dd+c6Se?ydb|0tjUA-1%FZu4q7me4=9ild8I->ToJufU%irgVX!8> z?cx(M6h%e6TCafVY|VPcVJRp^$DuyAd-h~)-r8+Ek=dm=yg2u~xUVjI@?MkGz#LgF z4gcOBng4?XoUK+4MkiizK9vU=F;PYmmpYUd@&HHy3C-l$?7387~Q zrxkBEUQyPQ<%6VBOWczyLearelJ1k;*S(W#71sE5-*BvcBf(Xd81pkLI7t!8bajYv zhAx87!XO0*i0zuN28r z)C)}!xd&ReOUOH8Ze6kN zJt`Kp+g$S}*gH!>G;v>f6TU9*!_Glptd%ahf=2LoctSMIt>jadVUU-F(%mnXRCYPP zrE)_{WzdS#g|;g?)ysdx3RT=d-mp{EEJLTtpWZB=_j#-9avJ#}x!j7&>!o~on%VlO z?e}fX16AkrY|7P0RHVP<`MAIR@NRFz@6kV}d9k()ViFmyKXcaDaCA;rbUWR6RCSy_ zx-0l2rvUE7@05hJt~JOQv+;=nT9iL*W`{^1S*BtJgS^4A|W_VyR;=F zvMloKZ4?(nsp7EkaN@k5t1G>Q@Gp1OUIV8Ih~ZRRo!h@hl6MA<5aC}Svx895Z|Cf< za!!L?broG9$%Z~a_^8UisL@G*+=h&_g)g%btt}?IN67Fhec=}+k5)`)d^;Jq-x@(M zPemT_xDJOH#8<6c^3;OY=HQw?6))W!M@A3tSdd%;ShuDo4A3Z`)e0 zqHyxJ9N^lk+)^+f8ydWgyM}Cucy_qUPDZxg_MA>`Ue^3!Y)+a;Dgq$p!$|tHnJJ-e!D z#%T{rJnt6@cdCi$aMN#oE0xzO76_T!YZ3b5_3*S!lwZ8_GAGIg$tyo^&E!mnQ=IM{ zucPyDMtF9p5yQvd;ERqlRo?gYYOE=sp6*oWCb{lAs?%_O4m6%+M_Jhprb7;SjM{}BV z5e7~~Dg^&Xc$A8y*P!xqt>#@`xpL|7Bh!ij_zEjS#30F`ujvd`_~`MwIhF#Y9qiw~ zXP8nVqhm-`+H#dy<=_$F=b=~4uOESPe&W-koAZ={B7QXv+a6{?z!LFXXZQlx+wHe# z>OT(jXf1x)$9sG|^8@>B*%QC0Zj6_gl*!GxCOeOTW6j%<_c$~82=KHm`c4#?-D-d) zC7+adbydZz3W#v9N;8egNnJ9AaA&=!!>*qfeG5M_vdNSA0$Dwa8~C*kX6y2jB`cAR{G6 z2Aax{<_V5!5Y3H25;Yqpvn-q&njaUe6xMsJ2=G^{?JkAie`1j21bVZ`I8rS;BP8`& zDgxZ*4E|CJV8r_0Jeodw#VS;n7%U1|(-0YA= z7UoVSUc!^ba7*tl5#$ZVwKrrY059c;uht(p>YEt%_Rm?v<&ny+*4v!%`I?8A)+Z^; zTbWk}6h*_?3%ue{Z)7rnv+sw@56|Fnf@ROH54<3^yRoQYV+xAH_=qGmnedvN1O-op zkGB|(E}gw99T*)-i4I>kN==_GI4HQ%93=8jx8`dv`H z#-A0O$g?nj2SZzFXYfFBV_BDD)BSATLHb$-sv=>$vaaKO#7EaK-hwj*c6t+TeUVz=z9r&+m z|3`pm44$X@{V6?JS~=XXo)* zPB4rTvgQTKqrHCgFnhCqhu@pV2f9wbM=>IK9i7_9Ka9c^z_e^}S67t?=TWyf6a5O) zpr@DR;fO&i9~%GEMEr6)p@$Voa&`>vEAnJh8ZY0SN}a8PhO>Vkw?=s_X4G(|0V$Z$ z_ETCe9d5ilHbjLPZ#s5DBw)u*^7~8a01eA!$|=9iRw5r*WTnoCrM!DFK_y|*iwX!fY9 z#h5dQAe~Kl{6kRoo#y^VYFzweZFz|^#Kl*P4GnhH#RZkboL?HRYsgN zSIG-*o1F1J-=gTbzB(Xn*UWL}{*Ge$;B^${3MKoBC9Yo;(OaUSAV^&N+}p8MF9$6L z9sPdbCFxHntFv2WeBTkB%)tjm7yaNE59QHRsX3wkni<*E1DBR3yy}CkA90+~6)lna zNu;HVP>@LnKNn&ue-9`EN}qjz+yyaT{R5@8ymEA_fWs};{jO5)_UGzBjQjhXhV#X$ zJX~>0-j9G`tZc?rR@_5Tz=koZczU02SlG6I+AB2}6_pe_fR*7<$qM7oclXLHLC`Q< z3c`ESxIMnnBbjU9TeZ_}wmeDK{^6`IS*?16r5^j7=55*i->_%W1Y{nUFSsD~{+50%`pt oKQQr^7xshYGvEif*9bsExTo^Y$@fJC0>6Qf5Rnxw`>gN(Ka3t1jsO4v literal 146691 zcmXtfby$<{`!*@fknW+D&NG>6Y$JN$C)nG;Gvhz{}_R z9>0H|9mjLu&(-I7UW?MwP$D6uC&a+OAW>14e~*EIGlhYHrHGI9_=KwSWF7;93`0d; zR@XcGu${odM9D`?26=hJb+j+TJDlo>YWy48SHomg{AKHFq866Qryi!a%__M&pSbEf zK}vzROXm2LnQxwHeZtyi3I4iES`!-I7q`>R< zMmF%n86F^n92Z?5y9#iNB+!Ab1Re?2n>px&X8SdlVUBZ>Ec2=Gc6 zWGB#9jzr}9OjYWl?Jimypkp-GI5*mB^MMj*4E7#C7}q@B!xvW<%4!TcN?JJ<`d*f* z(F}|QPzG7t)GR{4z}w4$k)o`!;7|T!@Ecr}zmvaT(e8%FzJ`klrH!&0G>TA<9=*U8tI_K|z1YQV~p zVI8>_YItno88RcCYKYdQZhnaDhj{}D8+I7292Qn>1ocrT$ zjh%pp*}My+Z)S6{c?<8&QF#B9h^qzh!R{wc;dHTY21Nc!T99;pb5NN5&=HHnz}KO4_#>R3ElTHc^TC;d^YUZAjxY2$n3cjv>(G1Gv=O$Pyw_9jlEYirYZ$gZ^c z>cN84p97hT(@?L9FFn~a;;;>hopW)$drF)t)3ILanmSQiNP3m@$8HYzWa(+B!Y~RT zitKe*P=Zg+&foYaqmT@7C`@w5slkgd1jqM`(rdSl>1Qt|c73Nqzzk4T$Zq3G212g3 zgWZN0rYf!QkQW$u5&>Cz@*a1+(pkoJa-6i6*@XPSApMEv75|H>(eL@XZuj-4TJUZT z$lbqp<6`cLJXs~DU5J?+`Td#c7*e_}{qK#Oe< zIw+iTzqZpYcXhuCKangz9Xwf%lUn!eZr<5<^!xm(U&rTY;RrXP zipMy7w!R%I(@Ejn)(<1f0V4R=(Oi7^sEo3U0xEbW$W5q|<~b;`!=owSibisq zU}`4*F7E}{QDdsmjRILmU02-%p}v6kd>cn+3@izQuDhd&o@s1Eh{H8`CU_u2O$IxY z=^maFTM_=-nz!x?Flvy&8SiQFi&3=UFEk65bMMj-$@Yo%uLZm}0xqcn>umvkq1dG; zmJfFMrV)^{Nx=PX^N-LDzLWdI4<{`(!@UT3$*YH(HK2@d$<9ib*y()L;x9P1SHSrZ z1JBWH)#t9HHy%t&#ez^WXtLT6c_#wg;Vs z3J5bo{(XmEz4nrq?QK{`pEWsGI(D9fHm&%X%(QSjw_SZdF*7esd+oXZ+wcCUqc{t% zZ^zH+;d;D5k>uOo6Mq!V)%{_qoO2^dtYleg)oSDIK$dgh!sQc=e?E`-xVJfX<$w2X zGz*A6Lbh$f+Ve`q99#dHeYW)ovN+sM0^M|DPrim7B0}>=ie4`}-Otjj`+ZEI_{M}@ zxLQ9$c8{Md{*^f2mJPi72J5i*Tb?`#IHdgJdb`kZu_)aT`k0~fRUO-Sqs|Ys?0jMLEH*dxd(q*mh)P_ ztVp}d-OpL~J2YOXg{%(xu^dDS+0<}7c-5by-_=ESg{6hTw zkuyKnYv`Te--5la47u^`cktb&)#^f%P)P=U!_m<>ZZ??jDUsLB;2a3=$z9D?2?lg3 zv1S2s*g4?7Ow)ZDs3DEIn>=zXKhIjCmA>eLgV0q=7m~k&-NrSck~F3sJC`?4q9a7m zQO>Kl*&V+?+zj;4S?b0#`cHNJUEL@CTRH&7cvs%Pp^i$>n~9u3jr-fc0Hh-Dg*DO{ zSQzD|2|>DP);iz?LQW>VoNnJr3*4<(o8Q?`ChLW8MnWaeyVe8v_iq;$JoWc?iVg+J z6+kzdUj93!8rH2Hx8HZ?ok6D;4D|G#$IbbOonkyZQfV*ue@oI0_qaNB?lM;unyVMfZrrX9Zw~VC9y;a5nLsTMF|FJR+n`Hi>%;Ck>1SPrJqO6mAP_W- zXn?IC*IsLoeS&N_gM3b&PP>>NA-Dy-T~Bm4jJs34tiptF0csr5*u*Uj(Dp3(iQgYf z^>^zB05SdwQQ3BdG-eWVko2!0KGlgd_bq>ImJ5LaG(ky&%$Wl??m%$8xhGSgHWAu@ z3Yfpnd+dTKPny5OkfA^v1jlb#Su5r6i2e23695SHx3!YHH&8xarn5;1%VGg}b(iot zYt;FAX%fx-(@=Ftcyr*JaqyFcw$I*xS?%S`L{b4WbE;qBkYw*Z

    P0=gK;I15nbqw+w+d0sS^L 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⩔v(NjMWD?yT$Er+)| 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

      oppHp?_y>}cA)ihYIgDgkT*_^$9 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 u>*O-_41$4qekPn-!GwW{t.current=a;}),e.useCallback((...o)=>t.current?.(...o),[])}export{R as useStableCallback};//# sourceMappingURL=advanced.js.map +export{X as primitiveUiKit}from'./chunk-7FUCHMMB.js';export{a as DataTableCardPanel,b as DataTableFooterSection,c as DataTableToolbarSection,i as createDataTable,h as useColumnLayout,e as useControllableState,d as useDataTableColumns,f as useDataTableInstance,g as useDataTableState}from'./chunk-JNI3CH7M.js';import'./chunk-EJHT5JBZ.js';export{c as DataTableBodyRow,d as DataTableHeaderCell,e as DataTableTablePanel,a as useRowEditing}from'./chunk-THSY57Y7.js';import'./chunk-4P45F2OY.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-KDHJA6AH.js';import'./chunk-XTVBESM5.js';import*as e from'react';function R(a){let t=e.useRef(a);return e.useLayoutEffect(()=>{t.current=a;}),e.useCallback((...o)=>t.current?.(...o),[])}export{R as useStableCallback};//# sourceMappingURL=advanced.js.map //# sourceMappingURL=advanced.js.map \ No newline at end of file diff --git a/dist/chunk-BQSRJQTY.js b/dist/chunk-BQSRJQTY.js deleted file mode 100644 index dc8bcd7..0000000 --- a/dist/chunk-BQSRJQTY.js +++ /dev/null @@ -1,2 +0,0 @@ -import {a as a$1}from'./chunk-K7SNDVV2.js';import {a}from'./chunk-V5A4DWYZ.js';import {j}from'./chunk-4UITEBLL.js';function b(r){return j(r,{CardPanel:a$1,TablePanel:a})}export{b as a};//# sourceMappingURL=chunk-BQSRJQTY.js.map -//# sourceMappingURL=chunk-BQSRJQTY.js.map \ No newline at end of file diff --git a/dist/chunk-4UITEBLL.js b/dist/chunk-JNI3CH7M.js similarity index 99% rename from dist/chunk-4UITEBLL.js rename to dist/chunk-JNI3CH7M.js index c103179..3cdef63 100644 --- a/dist/chunk-4UITEBLL.js +++ b/dist/chunk-JNI3CH7M.js @@ -1,2 +1,2 @@ -import {a as a$4}from'./chunk-EJHT5JBZ.js';import {a as a$3,e as e$1}from'./chunk-NLQJKISS.js';import {d,a as a$1,b,g,j,r,w,i,A,q,c as c$1,e,f as f$1,u,v,s,h,o,n,x,t,B,k as k$1,m as m$1}from'./chunk-4P45F2OY.js';import {c,p,u as u$1,k,m,s as s$1,a as a$5,r as r$1,q as q$1,l,j as j$1}from'./chunk-CVR2ZXHQ.js';import {a,i as i$1,b as b$1,d as d$1,e as e$2,c as c$2}from'./chunk-KDHJA6AH.js';import {a as a$2}from'./chunk-XTVBESM5.js';import*as f from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {useReactTable,getPaginationRowModel,getExpandedRowModel,getSortedRowModel,getGroupedRowModel,getFacetedMinMaxValues,getFacetedUniqueValues,getFacetedRowModel,getFilteredRowModel,getCoreRowModel}from'@tanstack/react-table';import {flushSync}from'react-dom';function zn({cardClassName:e,cardGridClassName:t,cardSizing:n,cardRenderer:i,currentRowSelection:r,currentDetailExpanded:l,DataTableCardView:d,DataTableEmptyState:m,dragAndDrop:p,editableRows:h,editingRowId:E,emptyNode:S,enableRowSelection:A,flexGrow:V,getRowClassName:B,hasCardTitle:q,infiniteScroll:F,localSearchValue:T,onRowClick:u,renderedRows:s,detailPanel:y,resolvedLabels:g,resolvedLoadingRowCount:C,rowActions:N=[],ScrollArea:D,sentinelRef:K,setCurrentDetailExpanded:W,setCurrentRowSelection:O,setEditingRowId:R,shouldRenderInitialLoading:v,stateOverlayNode:w,tableContainerClassName:k,uiClassNames:M}){let I=v||s.length>0,G=f.useRef(null),x=(Z,j)=>jsx(d,{rows:Z,cardRenderer:i,cardGridClassName:t,cardClassName:e,cardSizing:n,rowActions:N,editableRows:h,detailPanel:y,detailExpanded:l,onDetailExpandedChange:W,hasCardTitle:q,rowSelection:r,onRowSelectionChange:O,enableRowSelection:A,editingRowId:E,onEditingRowIdChange:R,getRowClassName:B,onRowClick:u,getRowDraggable:p?.getRowDraggable,onRowDragStart:p?.onRowDragStart,onRowDragEnd:p?.onRowDragEnd,isLoading:j?.isLoading,loadingRowCount:j?.loadingRowCount,labels:g});return jsxs("div",{ref:G,"data-dtp-slot":"data-table-card-shell",className:a$2("relative box-border border-2 border-transparent transition-colors",V?"flex min-h-0 flex-1 flex-col":"h-full",p?.isDragging&&(M.dragActive??"rounded-md border-dashed")),children:[jsx(D,{className:a$2(V?"min-h-0 flex-1":"h-full",M.cardScrollArea,k),children:jsxs("div",{"data-dtp-slot":"data-table-card-viewport",className:a$2("flex min-h-full min-w-0 flex-col",V&&"min-h-0 flex-1",M.cardViewport),children:[I?v?x([],{isLoading:true,loadingRowCount:C}):x(s):jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center p-4",children:S??jsx(m,{title:T?g.noMatchingRowsTitle:g.noRowsTitle,description:T?g.noMatchingRowsDescription:g.noRowsDescription})}),F?.enabled&&!v?jsx("div",{className:"shrink-0 px-4 pb-4",children:jsx("div",{ref:K,className:"h-4 w-full"})}):null]})}),w]})}var rs=f.lazy(async()=>({default:(await import('./data-table-virtual-card-panel-KF2P5D3K.js')).DataTableVirtualCardPanel}));function Ti(e){let t=typeof e.virtualization=="object"?e.virtualization.card:void 0;return t?.enabled!==true?jsx(zn,{...e}):jsx(f.Suspense,{fallback:jsx(zn,{...e,renderedRows:e.renderedRows.slice(0,Math.max(1,Math.floor(t.fallbackCardCount??12)))}),children:jsx(rs,{...e})})}function wi({children:e,currentPagination:t,DataTableFooter:n,effectivePageCount:i,footerTotalRowCount:r,handleFooterPageIndexChange:l,handleFooterPageSizeChange:d,labels:m,pageCountKnown:p=true,rowsPerPageOptions:h,showFooter:E}){return !E&&!e?null:jsxs("div",{"data-dtp-slot":"data-table-footer",className:"shrink-0",children:[E?jsx(n,{pageIndex:t.pageIndex,pageCount:i,pageCountKnown:p,pageSize:t.pageSize,totalRowCount:r,rowsPerPageOptions:h,onPageIndexChange:l,onPageSizeChange:d,labels:m}):null,e]})}function Di({allRows:e,columnFilters:t,columnVisibilityOptions:n,compactToolbar:i,customToolbar:r,DataTableToolbar:l,description:d,descriptionId:m,effectiveToolbarActions:p,enableColumnPinning:h,enableGrouping:E,enableToolbarColumnChooser:S,enableToolbarFilterChips:A,enableToolbarResetLayout:V,enableToolbarSavedViews:B,enableDensityToggle:q,enableViewToggle:F,hiddenRowsLabel:T,labels:u,onClearColumnFilters:s,onColumnFilterChange:y,onColumnPinningChange:g,onDensityChange:C,onShowHiddenRowsChange:N,onToolbarQueryValueChange:D,reorderColumn:K,onResetColumnLayout:W,onCreateSavedView:O,onApplySavedView:R,onRenameSavedView:v,onDeleteSavedView:w,onViewModeChange:k,openFileDialog:M,selectedRowIds:I,selectedRows:G,selectionActions:x,savedViews:Z,showHiddenRows:j,table:z,title:Y,titleId:ne,toolbarQueryPlaceholder:be,toolbarQueryValue:fe,toolbarVisibility:De,density:Se,viewMode:Te}){return jsx("div",{"data-dtp-slot":"data-table-toolbar",className:"shrink-0",children:jsx(l,{title:Y,titleId:ne,description:d,descriptionId:m,toolbarQueryValue:fe,toolbarQueryPlaceholder:be,onToolbarQueryValueChange:D,reorderColumn:K,customToolbar:r,compactToolbar:i,viewMode:Te,onViewModeChange:k,enableViewToggle:F,toolbarActions:p,selectionActions:x,selectedRowIds:I,selectedRows:G,showHiddenRows:j,hiddenRowsLabel:T,onShowHiddenRowsChange:N,allRows:e,columnVisibilityOptions:n,onColumnVisibilityChange:(Ee,Ne)=>{z.getColumn(Ee)?.toggleVisibility(Ne);},enableColumnPinning:h,enableGrouping:E,enableToolbarColumnChooser:S,enableToolbarFilterChips:A,enableToolbarResetLayout:V,enableToolbarSavedViews:B,onColumnPinningChange:g,columnFilters:t,onColumnFilterChange:y,onClearColumnFilters:s,onResetColumnLayout:W,onCreateSavedView:O,onApplySavedView:R,onRenameSavedView:v,onDeleteSavedView:w,density:Se,onDensityChange:C,enableDensityToggle:q,labels:u,toolbarVisibility:De,openFileDialog:M,savedViews:Z,table:z})})}var oe={searchPlaceholder:"Search rows...",searchTable:"Search table",clearSearch:"Clear search",noRowsTitle:"No rows yet",noRowsDescription:"Create a record or refresh this view once data exists.",noMatchingRowsTitle:"No matching rows",noMatchingRowsDescription:"Try a different search term or clear filters.",tableOptions:"Show table options",columns:"Columns",filters:"Filters",clearFilters:"Clear filters",filterFrom:"From",filterTo:"To",filterTrue:"Yes",filterFalse:"No",selectedRows:e=>`${e} record${e===1?"":"s"} selected`,showHiddenRows:e=>`Show ${e}`,recordsPerPage:"Records per page",totalRecords:e=>`Total records: ${e}`,pageStatus:(e,t)=>`Page ${e+1} of ${t}`,pageStatusUnknown:e=>`Page ${e+1}`,pagination:"Pagination",morePages:"More pages",firstPage:"First page",previousPage:"Previous page",nextPage:"Next page",lastPage:"Last page",selectAllVisibleRows:"Select all visible rows",selectAllFilteredRows:"Select all filtered rows",selectRow:"Select row",selectCardRow:e=>`Select row ${e}`,switchToTableView:"Switch to table view",switchToCardView:"Switch to card view",tableView:"Table view",cardView:"Card view",allFilterOptions:"All",actions:"Actions",rowActions:"Row actions",editRow:"Edit row",saveEdit:"Save",cancelEdit:"Cancel editing",expandRow:"Expand row",collapseRow:"Collapse row",expandRowDetails:"Expand row details",collapseRowDetails:"Collapse row details",exportCsv:"Export CSV",print:"Print table",enterFullscreen:"Enter fullscreen",exitFullscreen:"Exit fullscreen",errorTitle:"Unable to load this table",errorDescription:"Try again or check your connection.",retry:"Retry",density:"Density",compactDensity:"Compact",comfortableDensity:"Comfortable",spaciousDensity:"Spacious",pinLeft:"Pin left",pinRight:"Pin right",unpin:"Unpin",pinRowToTop:"Pin row to top",pinRowToBottom:"Pin row to bottom",unpinRow:"Unpin row",resizeColumn:e=>`Resize ${e}`,grouping:"Grouping",groupBy:e=>`Group by ${e}`,ungroup:e=>`Ungroup ${e}`,removeGrouping:e=>`Remove ${e} grouping`,moveGroupingEarlier:e=>`Move ${e} grouping earlier`,moveGroupingLater:e=>`Move ${e} grouping later`,facetSearch:e=>`Search ${e} options`,searchColumns:"Search columns",showAllColumns:"Show all columns",hideAllColumns:"Hide all columns",moveColumnEarlier:e=>`Move ${e} earlier`,moveColumnLater:e=>`Move ${e} later`,resetColumnLayout:"Reset column layout",savedViews:"Saved views",createSavedView:"Create saved view",savedViewName:"View name",applySavedView:e=>`Apply saved view ${e}`,renameSavedView:e=>`Rename saved view ${e}`,deleteSavedView:e=>`Delete saved view ${e}`,saveSavedView:"Save view"};function hi(e){return {...oe,...e}}function yi({Button:e,Checkbox:t,DataTableRowActions:n,Tooltip:i,TooltipContent:r,TooltipTrigger:l,cancelEditing:d$1,columns:m,editableRows:p,editingRowId:h,editErrors:E,enableRowSelection:S,enableRowPinning:A,hasTreeExpansion:V,isSavingEdit:B,isEditDirty:q,labels:F,lastSelectedRowIdRef:T,detailPanel:u,detailExpanded:s,onDetailExpandedChange:y,rowSelectionSelectAllScope:g$1,rowActions:C,saveEdit:N,startEditingRow:D,tableRef:K}){let W=f.useCallback((O,R)=>{let v=K.current;if(!v||!T.current)return;let w=v.getRowModel().rows.filter(x=>!d(x.original)),k=w.findIndex(x=>x.id===T.current),M=w.findIndex(x=>x.id===O);if(k<0||M<0)return;let I=Math.min(k,M),G=Math.max(k,M);v.setRowSelection(x=>{let Z={...x};for(let j of w.slice(I,G+1).filter(z=>z.getCanSelect()&&z.getCanMultiSelect()))R?Z[j.id]=true:delete Z[j.id];return Z});},[T,K]);return f.useMemo(()=>{let O=[];if(V||u){let R=V&&u?80:a$1;O.push({id:"__expand__",enableResizing:false,enableSorting:false,enableHiding:false,size:R,minSize:R,maxSize:R,header:()=>jsx("span",{className:"sr-only",children:F.expandRow}),cell:({row:v,table:w})=>{let k=V&&v.getCanExpand(),M=!!(u&&(u.getRowCanExpand?.(v.original)??true));if(!k&&!M)return null;let I=v.getIsExpanded(),G=s===true||!!s[v.id];return jsxs("div",{className:"flex items-center justify-center gap-1",children:[k?jsx(e,{type:"button",variant:"ghost",size:"icon-sm","aria-label":I?F.collapseRow:F.expandRow,"aria-expanded":I,"data-tree-toggle":"true",onClick:()=>v.toggleExpanded(),children:jsx(c,{className:a$2("transition-transform",I?"rotate-0":"-rotate-90")})}):null,M?jsx(e,{type:"button",variant:"ghost",size:"icon-sm","aria-label":G?V?F.collapseRowDetails??oe.collapseRowDetails:F.collapseRow:V?F.expandRowDetails??oe.expandRowDetails:F.expandRow,"aria-expanded":G,"data-detail-toggle":"true",onClick:()=>{y(x=>b(x,v.id,w.getCoreRowModel().flatRows.map(Z=>Z.id)));},children:jsx(c,{className:a$2("transition-transform",G?"rotate-0":"-rotate-90")})}):null]})}});}return S&&O.push({id:"__select__",enableResizing:false,enableSorting:false,enableHiding:false,size:a$1,minSize:a$1,maxSize:a$1,header:({table:R})=>{let v=g$1==="filtered",w=(v?R.getFilteredRowModel().flatRows:R.getRowModel().flatRows).filter(G=>G.getCanSelect()&&G.getCanMultiSelect()),k=w.length>0&&w.every(G=>G.getIsSelected()),M=w.some(G=>G.getIsSelected()),I=v?F.selectAllFilteredRows??oe.selectAllFilteredRows:F.selectAllVisibleRows??oe.selectAllVisibleRows;return w.length===0?jsx("span",{className:"sr-only",children:I}):jsx("div",{className:"flex items-center justify-center",children:jsx(t,{className:"my-0.5",checked:k?true:M?"indeterminate":false,onCheckedChange:G=>{R.setRowSelection(x=>{let Z={...x};for(let j of w)G===true?Z[j.id]=true:delete Z[j.id];return Z});},"aria-label":I})})},cell:({row:R})=>jsx("div",{className:"flex items-center justify-center",children:jsx(t,{className:"my-0.5",checked:R.getIsSelected(),disabled:!R.getCanSelect(),onClick:v=>{if(!v.shiftKey||!T.current||!R.getCanMultiSelect()){T.current=R.id;return}v.preventDefault(),v.stopPropagation(),W(R.id,!R.getIsSelected()),T.current=R.id;},onCheckedChange:v=>{T.current=R.id,R.toggleSelected(v===true);},"aria-label":F.selectRow??oe.selectRow})})}),O.push(...m.map(R=>g(R))),(C.length||p||A)&&O.push({id:"__actions__",enableSorting:false,enableResizing:false,enableHiding:false,size:a$1,minSize:a$1,maxSize:a$1,header:()=>jsx("span",{className:"sr-only",children:F.actions}),cell:({row:R})=>{let v=R.id;return h===v?jsxs("div",{className:"flex w-full items-center justify-end gap-2",children:[E._row?jsx("span",{className:"sr-only",role:"alert",children:E._row}):null,jsx(e,{type:"button",size:"sm",disabled:B||!q,onClick:()=>{N(R.original);},children:F.saveEdit}),jsxs(i,{children:[jsx(l,{asChild:true,children:jsxs(e,{type:"button",size:"icon-sm",variant:"ghost",onClick:d$1,children:[jsx(c,{className:"rotate-45"}),jsx("span",{className:"sr-only",children:F.cancelEdit})]})}),jsx(r,{children:F.cancelEdit})]})]}):jsx("div",{className:"flex w-full items-center justify-center",children:jsx(n,{row:R.original,rowActions:C,editableRows:p,isEditing:false,onStartEditing:()=>{D(R.original,R.id);},onCancelEditing:()=>{},labels:F,rowPinning:A?{canPin:R.getCanPin(),position:R.getIsPinned(),pin:k=>R.pin(k)}:void 0})})}}),O},[e,t,n,i,r,l,d$1,m,p,s,u,E,h,S,A,V,B,q,F,T,y,g$1,C,N,W,D])}function Re({defaultValue:e,onChange:t,value:n}){let[i,r]=f.useState(e),l=n??i,d=f.useRef(l);f.useEffect(()=>{d.current=l;},[l]);let m=f.useCallback(p=>{let h=typeof p=="function"?p(d.current):p;d.current=h,t?.(h),n===void 0&&r(h);},[t,n]);return [l,m]}function Ri({enabled:e,hasMore:t,isLoadingMore:n,onLoadMore:i,onError:r}){let l=f.useRef(null),d=f.useRef(false),m=f.useEffectEvent(i),p=f.useEffectEvent(h=>{r?.(h);});return f.useEffect(()=>{if(!e||!t||n)return;let h=l.current;if(!h)return;let E=new IntersectionObserver(S=>{if(S[0].isIntersecting&&!d.current){d.current=true;let V;try{V=m();}catch(B){d.current=false,p(B);return}Promise.resolve(V).catch(B=>{p(B);}).finally(()=>{d.current=false;});}},{rootMargin:"200px 0px 200px 0px"});return E.observe(h),()=>{E.disconnect();}},[e,t,n]),l}function vi({enabled:e,maxPageIndex:t,onPageIndexChange:n,pageIndex:i,setLocalPageIndex:r}){f.useEffect(()=>{if(!e||i>=0&&i<=t)return;let l=Math.min(Math.max(i,0),t);r(l),n?.(l);},[e,t,n,i,r]);}function xi(){return f.useMemo(()=>{let e=new WeakMap;return (t,n$1,i)=>{let r=n(i);if(!r)return true;let l=t.original;if(typeof l!="object"||l===null)return n(t.getValue(n$1)).includes(r);let d=e.get(l);d||(d=new Map,e.set(l,d));let m=d.get(n$1);if(m===void 0){let p=t.getValue(n$1);m=n(p),d.set(n$1,m);}return m.includes(r)}},[])}function Ei({autoResetPageIndex:e,columnGroupPaths:t,columnResizeMode:n,dir:i$1,currentColumnFilters:r$1,currentColumnOrder:l,currentColumnPinning:d$1,currentRowPinning:m,currentColumnSizing:p,currentExpanded:h,currentGrouping:E,currentPagination:S,currentRowSelection:A$1,currentSorting:V,currentViewMode:B,defaultColumn:q,effectiveColumnVisibility:F,enableColumnResizing:T,enableMultiRowSelection:u,enableRowPinning:s,enableRowSelection:y,enableSubRowSelection:g,getRowCanSelect:C,getRowCanExpand:N,getSubRows:D,aggregationFns:K,groupedColumnMode:W,globalFilterFn:O,globalFilterValue:R,hasNextPage:v,handleColumnFiltersChange:w$1,handleColumnOrderChange:k,handleColumnPinningChange:M,handleRowPinningChange:I,handleColumnVisibilityChange:G,handleExpandedChange:x,handleGroupingChange:Z,infiniteScroll:j$1,keepPinnedRows:z,manualFiltering:Y,manualGrouping:ne,manualExpanding:be,manualPagination:fe,manualSorting:De,onActionError:Se,onPageIndexChange:Te,onPageSizeChange:Ee,pageCount:Ne,pageIndex:J,pageSize:he,paginateExpandedRows:L,filterFromLeafRows:we,maxLeafRowFilterDepth:Ge,setCurrentRowSelection:nt,setCurrentSorting:Ye,setLocalColumnSizing:ot,setLocalPagination:se,shouldRenderInitialLoading:it,tableColumns:Ve,tableData:gt,tableGetRowId:Oe,tableRef:Rt,totalRowCount:mt,virtualization:Je}){let bt=xi(),ye=f.useMemo(()=>j(Ve).map(({column:a,index:b})=>r(a,b)),[Ve]),rt=f.useMemo(()=>{let a=ye,b=a.filter(_=>!w(_)&&_!=="__spacer__"),U=new Set(b),ce=l.filter(_=>U.has(_)),ae=b.filter(_=>!ce.includes(_));return [...a.filter(_=>_==="__expand__"||_==="__select__"),...ce,...ae,...a.filter(_=>_==="__spacer__"),...a.filter(_=>_==="__actions__")]},[l,ye]),_e=f.useMemo(()=>{let a=new Set(ye),b=new Set(ye.filter(ae=>!w(ae)&&ae!=="__spacer__")),U=(d$1.left??[]).filter(ae=>b.has(ae)),ce=(d$1.right??[]).filter(ae=>b.has(ae));return {left:[...["__expand__","__select__"].filter(ae=>a.has(ae)),...U],right:[...ce,...["__actions__"].filter(ae=>a.has(ae))]}},[d$1,ye]),lt=f.useMemo(()=>{let a=new Set,b=_=>{_.forEach((et,Ot)=>{if(a.add(Oe(et,Ot)),!d(et)){let _t=D?.(et,Ot);_t?.length&&b(_t);}});};b(gt);let U=(m.top??[]).filter(_=>a.has(_)),ce=new Set(U),ae=(m.bottom??[]).filter(_=>a.has(_)&&!ce.has(_));return {top:U,bottom:ae}},[m.bottom,m.top,D,gt,Oe]),ve=f.useMemo(()=>({sorting:V,pagination:S,rowSelection:A$1,columnVisibility:F,columnFilters:r$1,globalFilter:R,expanded:h,grouping:E,columnOrder:rt,columnPinning:_e,rowPinning:lt,columnSizing:p}),[r$1,p,h,E,S,A$1,V,F,rt,_e,lt,R]),He=f.useCallback(a=>{let b=typeof a=="function"?a(S):a;(J===void 0||he===void 0)&&se(U=>({pageIndex:J===void 0?b.pageIndex:U.pageIndex,pageSize:he===void 0?b.pageSize:U.pageSize})),b.pageIndex!==S.pageIndex&&Te?.(b.pageIndex),b.pageSize!==S.pageSize&&Ee?.(b.pageSize);},[S,Te,Ee,J,he,se]),St=f.useCallback(a=>{ot(a);},[ot]),Xe=f.useMemo(()=>{let a=false,b=false;for(let{column:U}of j(Ve))a||=U.meta?.filter?.type==="faceted",b||=U.meta?.filter?.type==="numberRange";return {minMaxValues:b,uniqueValues:a}},[Ve]),de=useReactTable({data:gt,columns:Ve,getCoreRowModel:getCoreRowModel(),getFilteredRowModel:Y?void 0:getFilteredRowModel(),getFacetedRowModel:(Xe.uniqueValues||Xe.minMaxValues)&&!Y?getFacetedRowModel():void 0,getFacetedUniqueValues:Xe.uniqueValues&&!Y?getFacetedUniqueValues():void 0,getFacetedMinMaxValues:Xe.minMaxValues&&!Y?getFacetedMinMaxValues():void 0,getGroupedRowModel:E.length&&!ne?getGroupedRowModel():void 0,getSortedRowModel:De?void 0:getSortedRowModel(),getExpandedRowModel:(D||E.length)&&!be?getExpandedRowModel():void 0,getPaginationRowModel:fe||j$1?.enabled?void 0:getPaginationRowModel(),enableRowSelection:C?a=>y&&C(a.original):y,enableRowPinning:typeof s=="function"?a=>s(a.original):s,keepPinnedRows:z,enableMultiRowSelection:typeof u=="function"?a=>u(a.original):u,enableSubRowSelection:typeof g=="function"?a=>g(a.original):g,enableColumnResizing:T,columnResizeMode:n,columnResizeDirection:i$1,getRowId:Oe,getSubRows:D,getRowCanExpand:D?a=>N?.(a.original)??a.subRows.length>0:void 0,globalFilterFn:O??bt,getColumnCanGlobalFilter:a=>a.columnDef.enableGlobalFilter!==false&&typeof a.accessorFn=="function",manualSorting:De,manualGrouping:ne,manualFiltering:Y,manualExpanding:be,manualPagination:fe||!!j$1?.enabled,paginateExpandedRows:L,filterFromLeafRows:we,maxLeafRowFilterDepth:Ge,defaultColumn:q,autoResetPageIndex:e,state:ve,onSortingChange:Ye,onPaginationChange:He,onRowSelectionChange:nt,onColumnVisibilityChange:G,onColumnFiltersChange:w$1,onExpandedChange:x,onGroupingChange:Z,onColumnOrderChange:k,onColumnPinningChange:M,onRowPinningChange:I,onColumnSizingChange:St,aggregationFns:K,groupedColumnMode:W});Rt.current=de;let vt=de.getVisibleLeafColumns(),ft=f.useCallback((a,b)=>{if(a===b||!i(a,b,t))return;let U=de.getAllLeafColumns().map(ae=>ae.id).filter(ae=>!w(ae)),ce=A(l.length?l:U,a,b);k(ce);},[t,l,k,de]),Tt=de.getTopRows(),Ae=de.getBottomRows(),$e=B==="table"?de.getCenterRows():de.getRowModel().rows,wt=typeof Je=="object"?Je:void 0,Be=Je===true||wt?.enabled===true,Lt=Math.max(1,Math.floor(wt?.fallbackRowCount??20)),ke=(Be?$e.slice(0,Lt):$e).map((a,b)=>({row:a,rowIndex:b})),Ue=fe||!!j$1?.enabled,st=Ue?void 0:de.getFilteredRowModel().rows.length,dt=mt??st,Ze=!Ue||Ne!==void 0||mt!==void 0,xt=dt,je=it?1:Ne??(dt!==void 0?Math.max(1,Math.ceil(dt/S.pageSize)):Ue?S.pageIndex+(v?2:1):de.getPageCount()),Ct=Math.max(0,je-1),Nt=f.useCallback(a=>{J===void 0&&se(b=>b.pageIndex===a?b:{...b,pageIndex:a});},[J,se]);vi({enabled:!it&&!j$1?.enabled&&Ze,maxPageIndex:Ct,onPageIndexChange:Te,pageIndex:S.pageIndex,setLocalPageIndex:Nt});let Ke=f.useCallback(a=>{a!==S.pageIndex&&(Te?.(a),J===void 0&&se(b=>b.pageIndex===a?b:{...b,pageIndex:a}));},[S.pageIndex,Te,J,se]),Et=f.useCallback(a=>{S.pageIndex!==0&&Te?.(0),a!==S.pageSize&&Ee?.(a),he===void 0&&se({pageIndex:0,pageSize:a});},[S.pageIndex,S.pageSize,Te,Ee,he,se]),kt=Ri({enabled:!!j$1?.enabled,hasMore:!!j$1?.hasMore,isLoadingMore:j$1?.isLoadingMore,onLoadMore:()=>j$1?.onLoadMore(),onError:a=>{Se?.({error:a,source:"infiniteScroll"});}});return {effectivePageCount:je,footerTotalRowCount:xt,handleFooterPageIndexChange:Ke,handleFooterPageSizeChange:Et,isPageCountKnown:Ze,renderedRows:$e,topPinnedRows:Tt,bottomPinnedRows:Ae,reorderColumn:ft,rowsToRender:ke,sentinelRef:kt,table:de,virtualPaddingBottom:0,virtualPaddingTop:0,visibleLeafColumns:vt}}var Cs="data-table-pro:column-prefs:",Mi=1,ki=["visibility","sizing","order","pinning","rowPinning","density"];function Vi(e){let t=Ln(e);if(!t)return {};let n=Nn(t);if(!n)return {};let i=On(t.key),r;try{r=n.getItem(i);}catch(p){return t.onError?.({error:p,operation:"read"}),{}}if(!r)return {};let l;try{l=(t.deserialize??JSON.parse)(r);}catch(p){return t.onError?.({error:p,operation:"deserialize"}),{}}let d=t.version??Mi,m;if(Ds(l))if(l.version===d)m=l.state;else if(t.migrate)try{m=t.migrate({version:l.version,state:l.state},d);}catch(p){return t.onError?.({error:p,operation:"migrate"}),{}}else return {};else m=l;return Ii(hs(m),t.slices)}function Ai(e){let t=Ln(e);if(!t)return false;let n=Nn(t);if(!n)return false;try{return n.removeItem(On(t.key)),!0}catch(i){return t.onError?.({error:i,operation:"remove"}),false}}function Fi({key:e,persistence:t,prefs:n}){let i=t??Ln(e),r=i?Nn(i):void 0,l=i?On(i.key):void 0,d=i?.version??Mi,m=Math.max(0,i?.debounceMs??100),p=Ii(n,i?.slices),h=f.useMemo(()=>{if(!i)return {value:void 0};try{let S={version:d,state:p};return {value:(i.serialize??JSON.stringify)(S)}}catch(S){return {error:S,value:void 0}}},[i,p,d]),E=f.useEffectEvent((S,A)=>{i?.onError?.({error:S,operation:A});});f.useEffect(()=>{h.error!==void 0&&E(h.error,"serialize");},[h.error]),f.useEffect(()=>{if(!r||!l||h.value===void 0)return;let S=()=>{try{if(r.getItem(l)===h.value)return;r.setItem(l,h.value);}catch(V){E(V,"write");}};if(m===0){S();return}let A=globalThis.setTimeout(S,m);return ()=>{globalThis.clearTimeout(A);}},[m,h.value,r,l]);}function Ln(e){if(e)return typeof e=="string"?{key:e}:e}function Nn(e){if(e.storage)return e.storage;if(!(typeof window>"u"))try{return window.localStorage}catch(t){e.onError?.({error:t,operation:"read"});return}}function On(e){return `${Cs}${e}`}function Ds(e){return aa(e)&&Object.prototype.hasOwnProperty.call(e,"version")&&Object.prototype.hasOwnProperty.call(e,"state")}function Ii(e,t){let n=new Set(t??ki),i={};for(let r of ki)n.has(r)&&e[r]!==void 0&&Object.assign(i,{[r]:e[r]});return i}function hs(e){if(!aa(e))return {};let t={},n=ys(e.visibility);n&&(t.visibility=n);let i=Rs(e.sizing);i&&(t.sizing=i);let r=pa(e.order);if(r&&(t.order=r),aa(e.pinning)){let d=pa(e.pinning.left)??[],m=pa(e.pinning.right)??[];t.pinning={left:d,right:m};}let l=Ss(e.rowPinning);return l&&(t.rowPinning=l),vs(e.density)&&(t.density=e.density),t}function ys(e){if(aa(e))return Object.fromEntries(Object.entries(e).filter(t=>typeof t[1]=="boolean"))}function Rs(e){if(aa(e))return Object.fromEntries(Object.entries(e).filter(t=>typeof t[1]=="number"&&Number.isFinite(t[1])&&t[1]>=0))}function pa(e){if(Array.isArray(e))return e.filter(t=>typeof t=="string")}function Ss(e){if(aa(e))return {top:pa(e.top)??[],bottom:pa(e.bottom)??[]}}function vs(e){return e==="compact"||e==="comfortable"||e==="spacious"}function aa(e){return !!e&&typeof e=="object"&&!Array.isArray(e)}var Ps=Object.values(a).slice().sort((e,t)=>e-t);function zi(e){let t=f.useRef(0),[n,i]=f.useState(0);return f.useEffect(()=>{let r=e.current;if(!r)return;let l=(m=r.clientWidth)=>{let p=xs(m);p!==t.current&&(t.current=p,i(p));};if(l(),typeof ResizeObserver>"u")return;let d=new ResizeObserver(m=>{let p=m[0];l(p?Es(p):void 0);});return d.observe(r),()=>{d.disconnect();}},[e]),n}function xs(e){if(e<=0)return 0;let t=1;for(let n of Ps){if(ed$1??(l?{key:l}:void 0),[l,d$1]),we=f.useMemo(()=>Vi(L),[L]),[Ge,nt]=f.useState({pageIndex:u?.pagination?.pageIndex??0,pageSize:u?.pagination?.pageSize??be[0]??20}),[Ye,ot]=Re({value:Se,onChange:G,defaultValue:()=>u?.sorting??[]}),[se,it]=Re({value:ne,onChange:M,defaultValue:()=>u?.rowSelection??{}}),[Ve,gt]=Re({value:m,onChange:O,defaultValue:()=>u?.columnVisibility??we.visibility??{}}),[Oe,Rt]=Re({value:e$1,onChange:C,defaultValue:()=>u?.columnFilters??[]}),[mt,Je]=Re({value:V,onChange:v,defaultValue:()=>u?.expanded??{}}),[bt,ye]=Re({value:t,onChange:N,defaultValue:()=>u?.columnOrder??we.order??[]}),[rt,_e]=Re({value:n,onChange:D,defaultValue:()=>u?.columnPinning??we.pinning??q(p)}),[lt,ve]=Re({value:i,onChange:K,defaultValue:()=>u?.rowPinning??we.rowPinning??{top:[],bottom:[]}}),[He,St]=Re({value:r$1,onChange:W,defaultValue:()=>u?.columnSizing??we.sizing??{}}),[Xe,de]=Re({value:J,onChange:Z,defaultValue:()=>u?.viewMode??"table"}),[vt,ft]=Re({value:B,onChange:w,defaultValue:()=>u?.grouping??[]}),[Tt,Ae]=Re({value:De,onChange:I,defaultValue:()=>u?.showHiddenRows??false}),[$e,wt]=Re({value:E,onChange:R,defaultValue:()=>u?.density??we.density??"comfortable"}),Be=Ne??u?.globalFilter??"",Lt=Ee??Y.searchPlaceholder,Pt=Te??250,[ke,Ue]=f.useState(Be),st=zi(he),dt=!!x,Ze=f.useRef(Be),xt=f.useEffectEvent($=>{Ze.current=$,x?.($);});f.useEffect(()=>{Ze.current=Be,Ue(Be);},[Be]),f.useEffect(()=>{if(!dt||ke===Be||ke===Ze.current)return;let $=window.setTimeout(()=>{xt(ke);},Pt);return ()=>{window.clearTimeout($);}},[dt,ke,Pt,Be]);let je=f.useMemo(()=>({pageIndex:j$1??Ge.pageIndex,pageSize:z??Ge.pageSize}),[Ge.pageIndex,Ge.pageSize,j$1,z]),Ct=Math.max(1,y??Math.min(5,je.pageSize)),Nt=f.useDeferredValue(ke),Ke=A?g?ke:Nt:"",Et=f.useCallback($=>{de($);},[de]),kt=f.useCallback($=>{Ae($);},[Ae]),a=f.useCallback($=>{wt($);},[wt]),b=f.useCallback(()=>{k?.(0),j$1===void 0&&nt($=>$.pageIndex===0?$:{...$,pageIndex:0});},[k,j$1]),U=f.useRef({columnFilters:Oe,globalFilterValue:Ke});f.useEffect(()=>{let $=U.current,Pe=$.columnFilters!==Oe,ie=$.globalFilterValue!==Ke;U.current={columnFilters:Oe,globalFilterValue:Ke},!g&&(!Pe&&!ie||b());},[Oe,Ke,g,b]),Fi({persistence:L,prefs:{visibility:m?void 0:Ve,sizing:r$1===void 0?He:void 0,order:t?void 0:bt,pinning:n?void 0:rt,rowPinning:i===void 0?lt:void 0,density:E?void 0:$e}});let ce=f.useMemo(()=>j(p).reduce(($,{column:Pe,index:ie})=>{let ct=r(Pe,ie);return i$1(Pe.meta?.hideOn,st)&&($[ct]=false),$},{}),[p,st]),ae=f.useMemo(()=>({...Ve,...ce}),[Ve,ce]),_=f.useMemo(()=>h.filter($=>b$1($,T,Tt)),[Tt,h,T]),et=s&&_.length===0,Ot=f.useMemo(()=>c$1(Ct),[Ct]),_t=et?Ot:_,Ka=f.useCallback(($,Pe)=>d($)?e(Pe):F($,Pe),[F]),Mt=S||(fe?.length??0)>0||Object.values(se).some(Boolean),ia=f.useMemo(()=>{if(!Mt)return new Map;let $=new Map,Pe=ie=>{ie.forEach((ct,te)=>{$.set(F(ct,te),ct);let ue=q$1?.(ct,te);ue?.length&&Pe(ue);});};return Pe(_),$},[F,q$1,Mt,_]),Wa=f.useMemo(()=>Mt?Object.entries(se).filter(([,$])=>$).map(([$])=>ia.get($)).filter($=>!!$):[],[se,ia,Mt]),Qa=f.useMemo(()=>Object.entries(se).flatMap(([$,Pe])=>Pe?[$]:[]),[se]);return {containerWidth:st,currentColumnFilters:Oe,currentColumnOrder:bt,currentColumnPinning:rt,currentRowPinning:lt,currentColumnSizing:He,currentColumnVisibility:Ve,currentDensity:$e,currentExpanded:mt,currentGrouping:vt,currentPagination:je,currentRowSelection:se,currentShowHiddenRows:Tt,currentSorting:Ye,currentViewMode:Xe,effectiveColumnVisibility:ae,globalFilterValue:Ke,handleDensityChange:a,handleShowHiddenRowsChange:kt,handleViewModeChange:Et,localSearchValue:ke,resolvedLoadingRowCount:Ct,resolvedToolbarQueryPlaceholder:Lt,selectedRowIds:Qa,selectedRows:Wa,setCurrentColumnFilters:Rt,setCurrentColumnOrder:ye,setCurrentColumnPinning:_e,setCurrentRowPinning:ve,setCurrentColumnVisibility:gt,setCurrentExpanded:Je,setCurrentGrouping:ft,setCurrentRowSelection:it,setCurrentSorting:ot,setLocalColumnSizing:St,setLocalPagination:nt,setLocalSearchValue:Ue,shouldRenderInitialLoading:et,tableData:_t,tableGetRowId:Ka,toolbarFilteredData:_,visibleData:_}}var Ms={cellStyle:void 0,colStyle:void 0,fixedSide:void 0,headerStyle:void 0,isActionsColumn:false,isExpansionColumn:false,isSelectionColumn:false,isSpacerColumn:false,isUtilityColumn:false,pinnedClassName:void 0,utilityClassName:void 0};function Oi({columns:e,columnSizing:t,editableRows:n,enableRowSelection:i,hasRowActions:r$1,hasRowExpansion:l,layoutMode:d,uiClassNames:m,visibleLeafColumns:p}){let h=f.useMemo(()=>{let T=new Set;for(let{column:u,index:s}of j(e))Object.prototype.hasOwnProperty.call(u,"size")&&T.add(r(u,s));return i&&T.add("__select__"),l&&T.add("__expand__"),(r$1||n)&&T.add("__actions__"),T},[e,n,i,r$1,l]),E=f.useMemo(()=>{let T=new Map;for(let{column:u,index:s}of j(e)){let y=f$1(u);y!==void 0&&T.set(r(u,s),y);}return T},[e]),S=f.useMemo(()=>{let T=new Map,u$1=new Map,s=0;for(let g of p)u(g)==="left"&&(T.set(g.id,s),s+=Ni(g));let y=0;for(let g of [...p].reverse())u(g)==="right"&&(u$1.set(g.id,y),y+=Ni(g));return {left:T,right:u$1}},[p]),A=f.useMemo(()=>{if(d!=="fill")return;let T=p.filter(s=>!w(s.id));return T.length&&T.every(s=>h.has(s.id)||Object.prototype.hasOwnProperty.call(t,s.id))?T[T.length-1]?.id:void 0},[t,h,d,p]),V=f.useMemo(()=>{let T=new Set([...h,...Object.keys(t)]);return A&&T.delete(A),T},[t,h,A]),B=f.useMemo(()=>{let T=new Map;for(let u$1 of p){let s=u$1.id==="__select__",y=u$1.id==="__expand__",g=u$1.id==="__actions__",C=s||y||g,N=u$1.id==="__spacer__",D=E.get(u$1.id),K=u$1.id===A,W=D??(K?u$1.getSize():void 0),O=!N&&(d==="fit"||C||V.has(u$1.id)),R=O||W!==void 0?{width:O?C?a$1:u$1.getSize():void 0,minWidth:C?a$1:O?u$1.getSize():W,maxWidth:O?C?a$1:u$1.getSize():void 0}:void 0,v$1=u(u$1),w=v$1?{left:v$1==="left"?S.left.get(u$1.id):void 0,right:v$1==="right"?S.right.get(u$1.id):void 0}:void 0,k=R||w?{...R,...w}:void 0;T.set(u$1.id,{cellStyle:k,colStyle:R,fixedSide:v$1,headerStyle:k,isActionsColumn:g,isExpansionColumn:y,isSelectionColumn:s,isSpacerColumn:N,isUtilityColumn:C,pinnedClassName:v$1?v(v$1,m,{isUtilityColumn:C}):void 0,utilityClassName:C?"w-[50px] max-w-[50px] min-w-[50px] px-0":void 0});}return T},[A,V,d,E,S,m,p]),q=f.useMemo(()=>p.reduce((T,u)=>{let s=B.get(u.id),y=E.get(u.id),g=u.id===A;return s?.isUtilityColumn?T+a$1:V.has(u.id)?T+u.getSize():T+(y??(g?u.getSize():0))},0),[B,A,V,E,p]),F=f.useCallback(T=>B.get(T)??Ms,[B]);return {columnLayouts:B,explicitlySizedColumnIds:h,fillMinWidth:q,getColumnLayout:F}}function Ni(e){return w(e.id)?a$1:e.getSize()}function Hi(e,t){let n=e.classNames??{},{Button:i,Card:r,CardContent:l,CardHeader:d,Checkbox:m,Skeleton:p}=e;return function({rows:E,cardRenderer:S,cardSizing:A="fixed",cardGridClassName:V,cardClassName:B,rowActions:q,editableRows:F,detailPanel:T,detailExpanded:u,onDetailExpandedChange:s,hasCardTitle:y,rowSelection:g,onRowSelectionChange:C,enableRowSelection:N,editingRowId:D,onEditingRowIdChange:K,getRowClassName:W,onRowClick:O,getRowDraggable:R,onRowDragStart:v,onRowDragEnd:w,isLoading:k=false,loadingRowCount:M=5,labels:I}){let G=A??"fixed",x$1=V?a$2("grid",V):Vs(G),Z=a$2("min-h-0 w-full gap-4 p-1",n.cardGrid,x$1),j=z=>a$2("relative min-w-0 max-w-full gap-0 overflow-hidden bg-transparent p-0",As(G),n.cardItem,B,z);return k?jsx("div",{role:"list","data-dtp-slot":"data-table-card-grid",className:Z,children:Array.from({length:Math.max(1,M)},(z,Y)=>jsxs(r,{role:"listitem","aria-hidden":"true","data-dtp-slot":"data-table-card-item",className:j("min-h-52"),children:[y?jsxs(d,{className:"px-4 pt-4 pb-3",children:[jsx(p,{className:"h-5 w-40 max-w-[70%]"}),jsx(p,{className:"h-4 w-24 max-w-[40%]"})]}):null,jsxs(l,{className:a$2("space-y-3 pb-4",y?"":"pt-4"),children:[jsx(p,{className:"h-4 w-full"}),jsx(p,{className:"h-4 w-[82%]"}),jsx(p,{className:"h-4 w-[68%]"}),jsx(p,{className:"h-24 w-full rounded-xl"})]})]},`loading-card-${Y}`))}):jsx("div",{role:"list","data-dtp-slot":"data-table-card-grid",className:Z,children:E.map(z=>{let Y=z.id,ne=z.original,be=!!g[Y],fe=D===Y,De=q.length>0||!!F,Se=!!(T&&(T.getRowCanExpand?.(ne)??true)),Te=N||De||y,Ee=N||De||z.getCanExpand()||Se,Ne=()=>{O&&O({row:ne,rowId:Y});};return jsxs(r,{role:"listitem","data-row-id":Y,"data-tree-depth":z.depth,draggable:R?.(ne)??false,"data-dtp-slot":"data-table-card-item","data-state":be?"selected":void 0,className:j(a$2([W?.(ne,{row:ne,rowId:Y,rowIndex:z.index,isEditing:fe,isExpanded:z.getIsExpanded(),isLoading:false,isSelected:be,pinnedPosition:false})].filter(Boolean).join(" "),"transition transition-colors hover:scale-101 data-[state=selected]:scale-101",n.card,be?n.cardSelected:n.cardUnselected)),onDragStart:J=>{v?.({row:ne,rowId:Y,event:J});},onDragEnd:J=>{w?.({row:ne,rowId:Y,event:J});},children:[Te?jsx("div",{"aria-hidden":"true",className:a$2("pointer-events-none absolute inset-x-0 top-0 z-10 h-24 bg-linear-to-b opacity-0 transition-opacity group-hover/card:opacity-100",n.cardOverlay??"from-transparent via-transparent to-transparent")}):null,jsx("div",{"data-dtp-slot":"data-table-card-renderer",role:O?"button":void 0,tabIndex:O?0:void 0,className:a$2("flex min-h-0 max-w-full min-w-0 overflow-hidden rounded-[inherit] [&>*]:min-w-0",Fs(G),O&&"cursor-pointer focus-visible:outline-none"),onClick:J=>{x(J.target,J.currentTarget)||Ne();},onKeyDown:J=>{x(J.target,J.currentTarget)||(J.key==="Enter"||J.key===" ")&&(J.preventDefault(),Ne());},children:S({row:ne,rowId:Y,depth:z.depth,canExpandSubRows:z.getCanExpand(),isSubRowsExpanded:z.getIsExpanded(),toggleSubRowsExpanded:()=>z.toggleExpanded(),isSelected:be,onSelectedChange:J=>{C(_i(g,Y,J,z.getCanSelect(),z.getCanMultiSelect()));},actions:q,isEditing:fe,startEditing:()=>{K(Y);},cancelEditing:()=>{K(null);}})}),fe||!T||!(u===true||u[z.id])?null:jsx("div",{"data-dtp-slot":"data-table-card-detail-panel",className:"relative z-20 min-w-0",children:T.render({row:ne,rowId:Y,tableRow:z})}),Ee?jsxs(d,{className:"absolute inset-x-0 top-0 z-20 flex flex-row items-center gap-3 space-y-0 px-4 pt-4 pb-8",children:[N?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(m,{checked:be,disabled:!z.getCanSelect(),"aria-label":(I.selectCardRow??oe.selectCardRow)(Y),onCheckedChange:J=>{C(_i(g,Y,J===true,z.getCanSelect(),z.getCanMultiSelect()));}})}):null,z.getCanExpand()?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(i,{type:"button",size:"icon-sm",variant:"ghost","aria-label":z.getIsExpanded()?I.collapseRow:I.expandRow,"aria-expanded":z.getIsExpanded(),onClick:()=>z.toggleExpanded(),children:jsx(c,{className:a$2("transition-transform",z.getIsExpanded()?"rotate-0":"-rotate-90")})})}):null,Se?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(i,{type:"button",size:"icon-sm",variant:"ghost","aria-label":u===true||u[z.id]?z.getCanExpand()?I.collapseRowDetails??oe.collapseRowDetails:I.collapseRow:z.getCanExpand()?I.expandRowDetails??oe.expandRowDetails:I.expandRow,"aria-expanded":u===true||!!u[z.id],"data-detail-toggle":"true",onClick:()=>{s(J=>b(J,z.id,E.map(he=>he.id)));},children:jsx(c,{className:a$2("transition-transform",u===true||u[z.id]?"rotate-0":"-rotate-90")})})}):null,jsx("div",{className:"pointer-events-none min-w-0 flex-1"}),De?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(t,{row:ne,rowActions:q,editableRows:F,isEditing:fe,onStartEditing:()=>{K(Y);},onCancelEditing:()=>{K(null);},labels:I})}):null]}):null]},Y)})})}}function Vs(e){switch(e){case "content":return "flex flex-wrap items-start justify-start";case "fluid":return "grid grid-cols-[repeat(auto-fit,minmax(min(18rem,100%),1fr))]";default:return "grid grid-cols-[repeat(auto-fill,minmax(min(18rem,100%),18rem))] justify-start"}}function As(e){switch(e){case "content":return "w-fit";case "fluid":return "w-full";default:return}}function Fs(e){switch(e){case "content":return "w-fit";case "fluid":return "w-full flex-1 [&>*]:w-full";default:return "flex-1"}}function _i(e,t,n,i,r){if(!i)return e;if(n)return r?{...e,[t]:true}:{[t]:true};if(!e[t])return e;let l={...e};return delete l[t],l}function Gi(e){let t=e.classNames??{},{Empty:n,EmptyContent:i,EmptyDescription:r,EmptyHeader:l,EmptyMedia:d,EmptyTitle:m}=e;return function({title:h="No rows found",description:E="Adjust your filters or create a new record to populate this table."}){return jsxs(n,{className:`min-h-60 rounded-2xl ${t.emptyState??"border bg-transparent"}`,children:[jsxs(l,{children:[jsx(d,{variant:"icon",children:jsx(p,{})}),jsx(m,{children:h}),jsx(r,{children:E})]}),jsx(i,{})]})}}function $i(e){let t=e.classNames??{},{Pagination:n,PaginationContent:i,PaginationEllipsis:r,PaginationFirst:l,PaginationItem:d,PaginationLast:m,PaginationLink:p,PaginationNext:h,PaginationPrevious:E,Select:S,SelectContent:A,SelectGroup:V,SelectItem:B,SelectTrigger:q,SelectValue:F,Tooltip:T,TooltipContent:u,TooltipTrigger:s}=e;function y({pageIndex:C,pageCount:N,pageCountKnown:D,pageSize:K,totalRowCount:W,rowsPerPageOptions:O,onPageIndexChange:R,onPageSizeChange:v,labels:w}){let k=D?Is(C,Math.max(1,N)):[],M=C>0,I=C+1{v(Number(x));},children:[jsx(q,{"aria-label":w.recordsPerPage,className:`w-22 ${t.paginationSelectTrigger??""}`,children:jsx(F,{})}),jsx(A,{children:jsx(V,{children:O.map(x=>jsx(B,{value:String(x),children:x},x))})})]})]}),W!==void 0?jsx("div",{className:"flex shrink-0 items-center justify-center",children:jsxs("div",{className:`inline-flex items-center gap-2 px-2.5 py-1.5 text-sm ${t.paginationTotal??""}`,"aria-label":w.totalRecords(W),children:[jsx(j$1,{className:"size-4"}),jsx("span",{className:"@min-[768px]/data-table:hidden",children:W}),jsx("span",{className:"hidden @min-[768px]/data-table:inline",children:w.totalRecords(W)})]})}):null,jsxs("div",{className:"flex flex-1 items-center justify-end gap-4",children:[jsx("div",{className:`hidden text-sm @min-[768px]/data-table:inline ${t.mutedText??"opacity-70"}`,children:D?w.pageStatus(C,Math.max(1,N)):(w.pageStatusUnknown??oe.pageStatusUnknown)(C)}),jsx(n,{"aria-label":w.pagination??oe.pagination,className:"mx-0 w-auto justify-end",children:jsxs(i,{children:[jsx(d,{className:"@min-[768px]/data-table:hidden",children:jsxs(T,{children:[jsx(s,{asChild:true,children:jsx(l,{"aria-label":w.firstPage,href:"#",size:"icon-sm",showText:false,disabled:!M,onClick:x=>{x.preventDefault(),M&&R(0);},text:w.firstPage})}),jsx(u,{children:w.firstPage})]})}),jsx(d,{children:jsxs(T,{children:[jsx(s,{asChild:true,children:jsx(E,{"aria-label":w.previousPage,href:"#",size:"icon-sm",showText:false,disabled:!M,onClick:x=>{x.preventDefault(),M&&R(C-1);},text:w.previousPage})}),jsx(u,{children:w.previousPage})]})}),k.map((x,Z)=>jsx(d,{className:"hidden @min-[768px]/data-table:block",children:x==="ellipsis"?jsx(r,{text:w.morePages??oe.morePages}):jsx(p,{href:"#",isActive:x===C+1,size:"icon-sm",onClick:j=>{j.preventDefault(),R(x-1);},children:x})},`${x}-${Z}`)),jsx(d,{children:jsxs(T,{children:[jsx(s,{asChild:true,children:jsx(h,{"aria-label":w.nextPage,href:"#",size:"icon-sm",showText:false,disabled:!I,onClick:x=>{x.preventDefault(),I&&R(C+1);},text:w.nextPage})}),jsx(u,{children:w.nextPage})]})}),D?jsx(d,{className:"@min-[768px]/data-table:hidden",children:jsxs(T,{children:[jsx(s,{asChild:true,children:jsx(m,{"aria-label":w.lastPage,href:"#",size:"icon-sm",showText:false,text:w.lastPage,disabled:!I,onClick:x=>{x.preventDefault(),I&&R(G);}})}),jsx(u,{children:w.lastPage})]})}):null]})})]})]})}function g(C){return jsx("div",{className:`rounded-md border px-2 py-1 ${t.footer??""}`,children:jsx(y,{...C})})}return {DataTableFooter:g,DataTablePagination:y}}function Is(e,t){let n=e+1,i=new Set([1,t]);for(let d=Math.max(1,n-2);d<=Math.min(t,n+2);d+=1)i.add(d);let r=Array.from(i).sort((d,m)=>d-m),l=[];for(let d=0;d1&&l.push("ellipsis"),l.push(m);}return l}function ji(e){let{Button:t,DropdownMenu:n,DropdownMenuContent:i,DropdownMenuGroup:r,DropdownMenuItem:l,DropdownMenuSeparator:d,DropdownMenuTrigger:m$1,Tooltip:p,TooltipContent:h,TooltipTrigger:E}=e;return function({row:A,rowActions:V,editableRows:B,isEditing:q,onStartEditing:F,onCancelEditing:T,labels:u,rowPinning:s}){let y=V.filter(D=>d$1(D,A)),g=f.useCallback(D=>{D.stopPropagation();},[]);if(q)return jsxs(p,{children:[jsx(E,{asChild:true,children:jsxs(t,{type:"button",variant:"ghost",size:"icon-sm",onPointerDown:g,onClick:T,children:[jsx(u$1,{}),jsx("span",{className:"sr-only",children:u.cancelEdit})]})}),jsx(h,{children:u.cancelEdit})]});let C=e$2(B,A),N=s?.canPin??false;return !y.length&&!C&&!N?null:jsxs(n,{children:[jsxs(p,{children:[jsx(E,{asChild:true,children:jsx(m$1,{asChild:true,children:jsxs(t,{type:"button",variant:"ghost",size:"icon-sm",onPointerDown:g,onClick:g,children:[jsx(k,{}),jsx("span",{className:"sr-only",children:u.rowActions})]})})}),jsx(h,{children:u.rowActions})]}),jsxs(i,{align:"end",className:"w-52",children:[C?jsx(r,{children:jsxs(l,{onClick:D=>{D.stopPropagation(),F();},children:[jsx(m,{"data-icon":"inline-start"}),u.editRow]})}):null,C&&(y.length||N)?jsx(d,{}):null,N?jsx(r,{children:s?.position?jsx(l,{onClick:D=>{D.stopPropagation(),s.pin(false);},children:u.unpinRow}):jsxs(Fragment,{children:[jsx(l,{onClick:D=>{D.stopPropagation(),s?.pin("top");},children:u.pinRowToTop}),jsx(l,{onClick:D=>{D.stopPropagation(),s?.pin("bottom");},children:u.pinRowToBottom})]})}):null,N&&y.length?jsx(d,{}):null,y.length?jsx(r,{children:y.map(D=>{let K=D.icon;return jsxs(l,{disabled:D.disabled?.(A),variant:D.variant==="destructive"?"destructive":void 0,onClick:W=>{W.stopPropagation(),D.onClick(A);},children:[K?jsx(K,{"data-icon":"inline-start"}):null,c$2(D.label,A)]},D.key)})}):null]})]})}}var Ls=f.lazy(()=>import('./data-table-toolbar-operations-IDEGCKBK.js'));function Wi(e){let t=e.classNames??{},{Button:n,ButtonGroup:i,DropdownMenu:r,DropdownMenuCheckboxItem:l,DropdownMenuContent:d,DropdownMenuGroup:m,DropdownMenuItem:p,DropdownMenuLabel:h,DropdownMenuSeparator:E,DropdownMenuTrigger:S,InputGroup:A,InputGroupAddon:V,InputGroupInput:B,Tooltip:q,TooltipContent:F,TooltipTrigger:T}=e;return function({title:y,titleId:g,description:C,descriptionId:N,toolbarQueryValue:D,toolbarQueryPlaceholder:K,onToolbarQueryValueChange:W,customToolbar:O,compactToolbar:R,viewMode:v,onViewModeChange:w,enableViewToggle:k,toolbarActions:M,selectionActions:I,selectedRows:G,selectedRowIds:x,showHiddenRows:Z,hiddenRowsLabel:j,onShowHiddenRowsChange:z,allRows:Y,columnVisibilityOptions:ne,onColumnVisibilityChange:be,enableColumnPinning:fe,onColumnPinningChange:De,columnFilters:Se,onColumnFilterChange:Te,onClearColumnFilters:Ee,density:Ne,onDensityChange:J,enableDensityToggle:he,labels:L,toolbarVisibility:we,openFileDialog:Ge,enableGrouping:nt,enableToolbarColumnChooser:Ye,enableToolbarFilterChips:ot,enableToolbarResetLayout:se,enableToolbarSavedViews:it,savedViews:Ve,onResetColumnLayout:gt,onCreateSavedView:Oe,onApplySavedView:Rt,onRenameSavedView:mt,onDeleteSavedView:Je,reorderColumn:bt,table:ye}){let rt=f.useRef(null),[_e,lt]=f.useState(false),ve=t.toolbarCompactIconButton??"",He=M.filter(a=>(a.placement??"primary")==="primary"),St=M.filter(a=>a.placement==="trailing"),Xe=we?.title??true,de=we?.search??true,vt=we?.actions??true,ft=we?.trailingActions??true,Tt=we?.options??true,Ae=we?.viewToggle??true,$e=we?.customToolbar??true,wt=Xe&&!!(y||C),Be=de,Lt=vt&&He.length>0,Pt=x.length>0&&I.length>0,ke=Tt&&(ne.some(a=>a.canHide)||!!(z&&j)||fe||he||nt||Ye||se||it),Ue=Ye||se||it,st=Se.filter(a=>_n(a.value)),dt={Button:n,DropdownMenuCheckboxItem:l,DropdownMenuGroup:m,DropdownMenuItem:p,DropdownMenuLabel:h,DropdownMenuSeparator:E,InputGroup:A,InputGroupAddon:V,InputGroupInput:B},Ze=a=>jsx(f.Suspense,{fallback:null,children:jsx(Ls,{placement:a,ui:dt,labels:L,enableColumnChooser:Ye,enableFilterChips:ot,enableResetLayout:se,enableSavedViews:it,enableColumnPinning:fe,columnVisibilityOptions:ne,onColumnVisibilityChange:be,onColumnPinningChange:De,reorderColumn:bt,table:ye,onResetColumnLayout:gt,savedViews:Ve,onCreateSavedView:Oe,onApplySavedView:Rt,onRenameSavedView:mt,onDeleteSavedView:Je,toolbarQueryValue:D,onToolbarQueryValueChange:W,activeColumnFilters:st,onColumnFilterChange:Te,onClearColumnFilters:Ee})}),xt=ye.getAllLeafColumns().filter(a=>!a.id.startsWith("__")&&a.getCanGroup()),je=ye.getState().grouping.flatMap(a=>{let b=ye.getColumn(a);return b?[b]:[]}),Ct=Ae&&k&&!!w,Nt=ft&&St.length>0,Ke=$e&&!!O,Et=$e&&!!(R??O),kt=L.selectedRows(x.length);return f.useEffect(()=>{_e&&rt.current?.focus();},[_e]),!wt&&!Be&&!Lt&&!Pt&&!ke&&!Ct&&!Nt&&!Ke&&!Et?null:jsxs("div",{className:"flex flex-col gap-4 pb-0",children:[Xe&&(y||C)?jsxs("div",{className:"flex flex-col gap-1",children:[y?jsx("h2",{id:g,className:"text-lg font-semibold tracking-tight",children:y}):null,C?jsx("p",{id:N,className:`max-w-3xl text-sm ${t.mutedText??"opacity-70"}`,children:C}):null]}):null,jsxs("div",{className:"flex flex-col gap-3",children:[jsxs("div",{"data-dtp-slot":"data-table-toolbar-controls",className:"flex items-center gap-2 overflow-x-auto px-1 @min-[768px]/data-table:gap-3 @min-[768px]/data-table:overflow-visible",children:[de?jsxs(Fragment,{children:[jsx("div",{className:"hidden min-w-0 grow max-w-md @min-[768px]/data-table:block",children:jsxs(A,{className:"min-w-0",children:[jsx(B,{value:D,onChange:a=>{W(a.target.value);},placeholder:K}),jsx(V,{align:"inline-start","aria-hidden":"true",children:jsx(s$1,{})}),D?jsx(V,{align:"inline-end",children:jsx("button",{type:"button",className:`inline-flex size-5 items-center justify-center rounded-md transition-colors focus-visible:outline-none ${t.toolbarIconButton??"opacity-70 hover:opacity-100"}`,onClick:()=>{W("");},"aria-label":L.clearSearch,title:L.clearSearch,children:jsx(u$1,{})})}):null]})}),jsxs(q,{children:[jsx(T,{asChild:true,children:jsxs(n,{type:"button",variant:_e||D?"secondary":"outline",size:"icon-sm","aria-label":L.searchTable,"aria-pressed":_e,className:`shrink-0 @min-[768px]/data-table:hidden ${ve} ${t.toolbarInputButton??""}`,onClick:()=>{lt(a=>!a);},children:[jsx(s$1,{}),jsx("span",{className:"sr-only",children:L.searchTable})]})}),jsx(F,{children:L.searchTable})]})]}):null,vt?jsx("div",{className:"flex shrink-0 items-center gap-2",children:He.map(a=>{let b=!a.iconOnly&&!!a.icon,U=jsxs(n,{type:"button",className:b?`size-7 shrink-0 px-0 @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit @min-[768px]/data-table:px-2.5 ${ve}`:a.iconOnly?`size-7 shrink-0 @min-[768px]/data-table:size-8 ${ve}`:"size-7 shrink-0 @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit",variant:a.variant??"outline",size:a.iconOnly?"icon":"default",onClick:()=>{a.onClick({rows:Y,openFileDialog:Ge});},disabled:a.disabled,"aria-label":a.label,title:a.iconOnly?void 0:a.label,children:[a.icon?jsx(a.icon,{}):null,a.iconOnly?jsx("span",{className:"sr-only",children:a.label}):b?jsx("span",{className:"hidden @min-[768px]/data-table:inline",children:a.label}):jsx("span",{children:a.label})]},a.key);return a.iconOnly?jsxs(q,{children:[jsx(T,{asChild:true,children:U}),jsx(F,{children:a.label})]},a.key):U})}):null,Et?jsx("div",{"data-dtp-slot":"data-table-toolbar-compact-custom",className:"flex shrink-0 items-center gap-2 @min-[1024px]/data-table:hidden",children:R??O}):null,jsx("div",{className:"grow","aria-hidden":"true"}),jsxs("div",{"data-dtp-slot":"data-table-toolbar-end-controls",className:"flex shrink-0 items-center gap-2",children:[x.length?jsx("div",{className:`hidden text-sm @min-[768px]/data-table:block ${t.mutedText??"opacity-70"}`,children:kt}):null,x.length?I.map(a=>{let b=a.icon,U={rows:G,rowIds:x},ce=typeof a.disabled=="function"?a.disabled(G,U):a.disabled;return jsxs(q,{children:[jsx(T,{asChild:true,children:jsxs(n,{type:"button",variant:a.variant??"secondary",size:"icon-sm",className:ve,disabled:ce,onClick:()=>{a.onClick(U);},"aria-label":a.label,children:[b?jsx(b,{}):null,jsx("span",{className:"sr-only",children:a.label})]})}),jsx(F,{children:a.label})]},a.key)}):null,ke?jsxs(r,{children:[jsx(S,{asChild:true,children:jsxs(n,{type:"button",variant:"outline",size:"icon-sm","aria-label":L.tableOptions,className:`${ve} ${t.toolbarInputButton??""}`,title:L.tableOptions,children:[jsx(a$5,{}),jsx("span",{className:"sr-only",children:L.tableOptions})]})}),jsxs(d,{align:"end",className:"w-56",children:[jsx(h,{children:L.tableOptions}),jsx(m,{children:z&&j?jsx(l,{checked:Z,onCheckedChange:a=>{z(a===true);},children:L.showHiddenRows(j)}):null}),he?jsxs(Fragment,{children:[jsx(E,{}),jsx(h,{children:L.density}),jsx(m,{children:[["compact",L.compactDensity],["comfortable",L.comfortableDensity],["spacious",L.spaciousDensity]].map(([a,b])=>jsx(l,{checked:Ne===a,onCheckedChange:()=>{J(a);},children:b},a))})]}):null,Ue?Ze("menu"):null,!Ye&&ne.some(a=>a.canHide)?jsxs(Fragment,{children:[jsx(E,{}),jsx(h,{children:L.columns}),jsx(m,{children:ne.filter(a=>a.canHide).map(a=>jsx(l,{checked:a.visible,onCheckedChange:b=>{be?.(a.id,b===true);},children:a.label},a.id))})]}):null,fe&&!Ye?jsxs(Fragment,{children:[jsx(E,{}),jsxs(h,{children:[L.pinLeft," / ",L.pinRight]}),jsx(m,{children:ne.map(a=>jsxs(p,{onSelect:b=>{b.preventDefault();},children:[jsx("span",{className:"min-w-0 flex-1 truncate",children:a.label}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${L.pinLeft}: ${a.label}`,onClick:b=>{b.stopPropagation(),De(a.id,"left");},children:"L"}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${L.pinRight}: ${a.label}`,onClick:b=>{b.stopPropagation(),De(a.id,"right");},children:"R"}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${L.unpin}: ${a.label}`,onClick:b=>{b.stopPropagation(),De(a.id,false);},children:"-"})]},`pin-${a.id}`))})]}):null,nt&&xt.length?jsxs(Fragment,{children:[jsx(E,{}),jsx(h,{children:L.grouping}),jsx(m,{children:xt.map(a=>{let b=typeof a.columnDef.header=="string"?a.columnDef.header:a.id,U=a.getIsGrouped();return jsx(l,{checked:U,onCheckedChange:()=>{a.toggleGrouping();},children:U?L.ungroup(b):L.groupBy(b)},`group-${a.id}`)})})]}):null]})]}):null,Ae&&k&&w?jsxs(i,{children:[jsxs(q,{children:[jsx(T,{asChild:true,children:jsxs(n,{type:"button",variant:v==="table"?"default":"outline","aria-pressed":v==="table",className:v==="table"?ve:`${ve} ${t.toolbarInputButton??""}`,size:"icon-sm",onClick:()=>{w("table");},children:[jsx(r$1,{}),jsx("span",{className:"sr-only",children:L.switchToTableView??oe.switchToTableView})]})}),jsx(F,{children:L.tableView??oe.tableView})]}),jsxs(q,{children:[jsx(T,{asChild:true,children:jsxs(n,{type:"button",variant:v==="card"?"default":"outline","aria-pressed":v==="card",className:v==="table"?`${ve} ${t.toolbarInputButton??""}`:ve,size:"icon-sm",onClick:()=>{w("card");},children:[jsx(q$1,{}),jsx("span",{className:"sr-only",children:L.switchToCardView??oe.switchToCardView})]})}),jsx(F,{children:L.cardView??oe.cardView})]})]}):null,ft?St.map(a=>{let b=!a.iconOnly&&!!a.icon,U=jsxs(n,{type:"button",variant:a.variant??"outline",size:a.iconOnly?"icon-sm":"default",onClick:()=>{a.onClick({rows:Y,openFileDialog:Ge});},disabled:a.disabled,"aria-label":a.label,title:a.iconOnly?void 0:a.label,className:`size-7 shrink-0 ${a.iconOnly?"":`${b?"px-0 @min-[768px]/data-table:px-2.5":""} @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit`} ${a.iconOnly||b?ve:""} ${t.toolbarInputButton??""}`,children:[a.icon?jsx(a.icon,{"data-icon":a.iconOnly?void 0:"inline-start"}):null,a.iconOnly?jsx("span",{className:"sr-only",children:a.label}):b?jsx("span",{className:"hidden @min-[768px]/data-table:inline",children:a.label}):jsx("span",{children:a.label})]},a.key);return a.iconOnly?jsxs(q,{children:[jsx(T,{asChild:true,children:U}),jsx(F,{children:a.label})]},a.key):U}):null]})]}),de&&_e?jsx("div",{"data-dtp-slot":"data-table-toolbar-compact-search",className:"min-w-0 @min-[768px]/data-table:hidden",children:jsxs(A,{children:[jsx(B,{ref:rt,value:D,onChange:a=>{W(a.target.value);},placeholder:K}),jsx(V,{align:"inline-start","aria-hidden":"true",children:jsx(s$1,{})}),D?jsx(V,{align:"inline-end",children:jsx("button",{type:"button",className:`inline-flex size-5 items-center justify-center rounded-md transition-colors focus-visible:outline-none ${t.toolbarIconButton??"opacity-70 hover:opacity-100"}`,onClick:()=>{W("");},"aria-label":L.clearSearch,title:L.clearSearch,children:jsx(u$1,{})})}):null]})}):null,Se.length?jsxs("div",{"data-dtp-slot":"data-table-toolbar-filters",className:"flex min-w-0 flex-wrap items-center gap-2",children:[Se.map(a=>jsx(u,{filter:a,labels:L,onColumnFilterChange:Te},a.id)),Se.some(a=>_n(a.value))?jsx(n,{type:"button",variant:"ghost",size:"sm",onClick:Ee,children:L.clearFilters}):null]}):null,ot?Ze("chips"):null,nt&&je.length?jsxs("div",{"data-dtp-slot":"data-table-grouping-bar","aria-label":L.grouping,className:"flex flex-wrap items-center gap-2",children:[jsxs("span",{className:"text-sm opacity-70",children:[L.grouping,":"]}),je.map((a,b)=>{let U=typeof a.columnDef.header=="string"?a.columnDef.header:a.id,ce=ae=>{let _=[...ye.getState().grouping],[et]=_.splice(b,1);et!==void 0&&(_.splice(ae,0,et),ye.setGrouping(_));};return jsxs("div",{className:"inline-flex items-center rounded-md border",children:[jsx(n,{type:"button",variant:"ghost",size:"sm",disabled:b===0,onClick:()=>ce(b-1),"aria-label":L.moveGroupingEarlier(U),children:jsx("span",{"aria-hidden":"true",children:"\u2190"})}),jsxs(n,{type:"button",variant:"secondary",size:"sm",onClick:()=>a.toggleGrouping(),"aria-label":L.removeGrouping(U),children:[U," ",jsx("span",{"aria-hidden":"true",children:"\xD7"})]}),jsx(n,{type:"button",variant:"ghost",size:"sm",disabled:b===je.length-1,onClick:()=>ce(b+1),"aria-label":L.moveGroupingLater(U),children:jsx("span",{"aria-hidden":"true",children:"\u2192"})})]},`grouping-bar-${a.id}`)})]}):null]}),$e&&O?jsx("div",{"data-dtp-slot":"data-table-toolbar-desktop-custom",className:"hidden flex-row items-center gap-3 @min-[1024px]/data-table:flex",children:O}):null]})};function u({filter:s,labels:y,onColumnFilterChange:g}){let[C,N]=f.useState("");if(s.type==="text")return jsxs(A,{className:"min-w-48 max-w-64",children:[jsx(B,{value:typeof s.value=="string"?s.value:"",onChange:M=>{g(s.id,M.target.value);},placeholder:s.placeholder??s.label,"aria-label":`${y.filters}: ${s.label}`}),jsx(V,{align:"inline-start","aria-hidden":"true",children:jsx(s$1,{})})]});if(s.type==="numberRange"||s.type==="dateRange"){let M=Ns(s.value),I=s.type==="numberRange"?"number":"date",G=y.filterFrom??oe.filterFrom,x=y.filterTo??oe.filterTo;return jsxs("div",{role:"group","aria-label":`${y.filters}: ${s.label}`,className:"flex min-w-0 items-center gap-1.5",children:[jsxs(A,{className:"min-w-32 max-w-44",children:[jsx(B,{type:I,inputMode:I==="number"?"decimal":void 0,value:M.from??"",min:s.min,max:s.max,step:I==="number"?s.step:void 0,onChange:Z=>{g(s.id,{...M,from:Ki(Z.target.value,I)});},"aria-label":`${s.label}: ${G}`}),jsx(V,{align:"inline-start",children:G})]}),jsxs(A,{className:"min-w-32 max-w-44",children:[jsx(B,{type:I,inputMode:I==="number"?"decimal":void 0,value:M.to??"",min:s.min,max:s.max,step:I==="number"?s.step:void 0,onChange:Z=>{g(s.id,{...M,to:Ki(Z.target.value,I)});},"aria-label":`${s.label}: ${x}`}),jsx(V,{align:"inline-start",children:x})]})]})}let D=s.type==="boolean",K=s.type==="faceted",W=[{label:s.trueLabel??y.filterTrue??oe.filterTrue,value:"true"},{label:s.falseLabel??y.filterFalse??oe.filterFalse,value:"false"}],O=D?W:s.options,R=K&&C?O.filter(M=>M.label.toLocaleLowerCase().includes(C.toLocaleLowerCase())):O,v=typeof s.value=="string"||typeof s.value=="boolean"?String(s.value):"",w=Array.isArray(s.value)?s.value.map(String):v?[v]:[],k=w.length===0?s.label:`${s.label}: ${w.length===1?O.find(M=>M.value===String(w[0]))?.label??w[0]:w.length}`;return jsxs(r,{children:[jsx(S,{asChild:true,children:jsx(n,{type:"button",variant:"outline",size:"sm",children:k})}),jsxs(d,{align:"start",className:"w-56",children:[jsx(h,{children:s.label}),K&&s.searchable!==false?jsx("div",{className:"px-2 pb-2",children:jsxs(A,{children:[jsx(B,{value:C,onChange:M=>{N(M.target.value);},placeholder:s.searchPlaceholder??y.facetSearch(s.label),"aria-label":y.facetSearch(s.label)}),jsx(V,{align:"inline-start","aria-hidden":"true",children:jsx(s$1,{})})]})}):null,jsxs(m,{children:[s.type==="select"||D||K?jsx(p,{onClick:()=>{g(s.id,"");},children:y.allFilterOptions??oe.allFilterOptions}):null,R.map(M=>jsxs(l,{checked:w.includes(M.value),disabled:M.disabled,onCheckedChange:I=>{if(s.type==="select"||D){g(s.id,I===true?M.value:"");return}let G=new Set(w);I===true?G.add(M.value):G.delete(M.value),g(s.id,Array.from(G));},children:[jsx("span",{className:"min-w-0 flex-1 truncate",children:M.label}),M.count!==void 0?jsx("span",{className:"ml-3 tabular-nums opacity-70",children:M.count}):null]},M.value))]})]})]})}}function _n(e){return Array.isArray(e)?e.length>0:e&&typeof e=="object"?"from"in e||"to"in e?Object.values(e).some(_n):true:e!=null&&e!==""}function Ns(e){if(!e||typeof e!="object"||Array.isArray(e))return {};let t=e;return {...typeof t.from=="number"||typeof t.from=="string"?{from:t.from}:{},...typeof t.to=="number"||typeof t.to=="string"?{to:t.to}:{}}}function Ki(e,t){if(e)return t==="number"?Number(e):e}var Os=f.lazy(async()=>({default:(await import('./data-table-virtual-table-panel-LEQ3RGTM.js')).DataTableVirtualTablePanel}));function Qi(e){let t=typeof e.virtualization=="object"?e.virtualization:void 0;return e.virtualization===true||t?.enabled===true?jsx(f.Suspense,{fallback:jsx(e$1,{...e,rowsToRender:e.rowsToRender.slice(0,Math.max(1,Math.floor(t?.fallbackRowCount??20)))}),children:jsx(Os,{...e})}):jsx(e$1,{...e})}var _s="data-table-pro:saved-views:";var Yi=["sorting","columnVisibility","columnFilters","grouping","columnOrder","columnPinning","rowPinning","columnSizing","density","viewMode","showHiddenRows","globalFilter"],qi=0;function jt(e){let t=$n(e);if(!e||!t)return [];let n;try{n=t.getItem(Un(e.key));}catch(d){return e.onError?.({error:d,operation:"read"}),[]}if(!n)return [];let i;try{i=(e.deserialize??JSON.parse)(n);}catch(d){return e.onError?.({error:d,operation:"deserialize"}),[]}if(!Qe(i)||!("version"in i)||!("views"in i))return [];let r=e.version??1,l=i.views;if(i.version!==r){if(!e.migrate)return [];try{l=e.migrate({version:i.version,views:i.views},r);}catch(d){return e.onError?.({error:d,operation:"migrate"}),[]}}return Array.isArray(l)?l.map(d=>Bs(d,e.slices)).filter(d=>!!d):[]}function Ji(e,t,n){let i=t.trim();if(!e||!i)return;let r=new Date().toISOString(),l={id:qs(),name:i,createdAt:r,updatedAt:r,state:Hs(n,e.slices)},d=[...jt(e),l];return Bn(e,d,"create")?Gn(l):void 0}function Xi(e,t,n){let i=n.trim();if(!e||!i)return;let r,l=jt(e).map(d=>d.id!==t?d:(r={...d,name:i,updatedAt:new Date().toISOString()},r));if(r)return Bn(e,l,"rename")?Gn(r):void 0}function Zi(e,t){if(!e)return false;let n=jt(e),i=n.filter(r=>r.id!==t);return i.length!==n.length&&Bn(e,i,"delete")}function er(e){let t=$n(e);if(!e||!t)return false;try{t.removeItem(Un(e.key));}catch(n){return e.onError?.({error:n,operation:"remove"}),false}return e.onChange?.([],"clear"),true}function Bn(e,t,n){let i=$n(e);if(!i)return false;let r;try{let d={version:e.version??1,views:t};r=(e.serialize??JSON.stringify)(d);}catch(d){return e.onError?.({error:d,operation:"serialize"}),false}try{i.setItem(Un(e.key),r);}catch(d){return e.onError?.({error:d,operation:"write"}),false}let l=t.map(Gn);return e.onChange?.(l,n),true}function Hs(e,t){let n=new Set(t??Yi),i={};for(let r of Object.keys(e))n.has(r)&&Object.assign(i,{[r]:Gs(r,e[r])});return i}function Bs(e,t){if(!(!Qe(e)||typeof e.id!="string"||!e.id||typeof e.name!="string"||!e.name.trim()||typeof e.createdAt!="string"||typeof e.updatedAt!="string"))return {id:e.id,name:e.name.trim(),createdAt:e.createdAt,updatedAt:e.updatedAt,state:tr(e.state,t)}}function tr(e,t){if(!Qe(e))return {};let n=new Set(t??Yi),i={},r=$s(e.sorting);n.has("sorting")&&r&&(i.sorting=r);let l=Us(e.pagination);n.has("pagination")&&l&&(i.pagination=l);let d=Hn(e.rowSelection);n.has("rowSelection")&&d&&(i.rowSelection=d);let m=Hn(e.columnVisibility);n.has("columnVisibility")&&m&&(i.columnVisibility=m);let p=js(e.columnFilters);n.has("columnFilters")&&p&&(i.columnFilters=p);let h=oa(e.grouping);n.has("grouping")&&h&&(i.grouping=h);let E=e.expanded===true?true:Hn(e.expanded);n.has("expanded")&&E!==void 0&&(i.expanded=E);let S=oa(e.columnOrder);n.has("columnOrder")&&S&&(i.columnOrder=S);let A=Ks(e.columnPinning);n.has("columnPinning")&&A&&(i.columnPinning=A);let V=Ws(e.rowPinning);n.has("rowPinning")&&V&&(i.rowPinning=V);let B=Qs(e.columnSizing);return n.has("columnSizing")&&B&&(i.columnSizing=B),n.has("density")&&(e.density==="compact"||e.density==="comfortable"||e.density==="spacious")&&(i.density=e.density),n.has("viewMode")&&(e.viewMode==="table"||e.viewMode==="card")&&(i.viewMode=e.viewMode),n.has("showHiddenRows")&&typeof e.showHiddenRows=="boolean"&&(i.showHiddenRows=e.showHiddenRows),n.has("globalFilter")&&typeof e.globalFilter=="string"&&(i.globalFilter=e.globalFilter),i}function Gn(e){return {...e,state:tr(e.state,Object.keys(e.state))}}function Gs(e,t){return Array.isArray(t)?t.map(n=>Qe(n)?{...n}:n):Qe(t)?e==="columnPinning"||e==="rowPinning"?{...e==="columnPinning"?{left:Array.isArray(t.left)?[...t.left]:void 0,right:Array.isArray(t.right)?[...t.right]:void 0}:{top:Array.isArray(t.top)?[...t.top]:void 0,bottom:Array.isArray(t.bottom)?[...t.bottom]:void 0}}:{...t}:t}function $s(e){if(Array.isArray(e))return e.filter(t=>Qe(t)&&typeof t.id=="string").map(t=>({id:t.id,desc:!!t.desc}))}function Us(e){if(!(!Qe(e)||!Number.isInteger(e.pageIndex)||e.pageIndex<0||!Number.isInteger(e.pageSize)||e.pageSize<1))return {pageIndex:e.pageIndex,pageSize:e.pageSize}}function js(e){if(Array.isArray(e))return e.filter(t=>Qe(t)&&typeof t.id=="string"&&Object.prototype.hasOwnProperty.call(t,"value")).map(t=>({id:t.id,value:t.value}))}function Ks(e){if(Qe(e))return {left:oa(e.left)??[],right:oa(e.right)??[]}}function Ws(e){if(Qe(e))return {top:oa(e.top)??[],bottom:oa(e.bottom)??[]}}function Hn(e){if(Qe(e))return Object.fromEntries(Object.entries(e).filter(t=>typeof t[1]=="boolean"))}function Qs(e){if(Qe(e))return Object.fromEntries(Object.entries(e).filter(t=>typeof t[1]=="number"&&Number.isFinite(t[1])&&t[1]>=0))}function oa(e){if(Array.isArray(e))return e.filter(t=>typeof t=="string")}function $n(e){if(e){if(e.storage)return e.storage;if(!(typeof window>"u"))try{return window.localStorage}catch(t){e.onError?.({error:t,operation:"read"});return}}}function qs(){return typeof globalThis.crypto?.randomUUID=="function"?globalThis.crypto.randomUUID():(qi+=1,`view-${Date.now().toString(36)}-${qi.toString(36)}`)}function Un(e){return `${_s}${e}`}function Qe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ar({columns:e,currentColumnFilters:t$1,currentColumnPinning:n,effectiveColumnVisibility:i,enableColumnFilters:r$1,handleColumnFiltersChange:l$1,handleColumnPinningChange:d,labels:m,table:p,toolbarActions:h,visibleData:E,csvExport:S}){let A=f.useMemo(()=>j(e).map(({column:s,index:y})=>{let g=r(s,y),C=s.header,N=t(s),D=typeof C=="string"?C:N?B(N):B(g),K=n.left?.includes(g)===true?"left":n.right?.includes(g)===true?"right":false;return {id:g,label:D,visible:i[g]!==false,canHide:s.enableHiding!==false,pinned:K}}),[e,n,i]),V=f.useMemo(()=>r$1===false?[]:j(e).flatMap(({column:s,index:y})=>{let g=s.meta?.filter;if(!g)return [];let C=r(s,y),N=s.header,D=t(s),K=g.label??(typeof N=="string"?N:D?B(D):B(C)),W=t$1.find(w=>w.id===C),O=g.faceting?.options,R=g.type==="numberRange"?p.getColumn(C)?.getFacetedMinMaxValues():void 0,v=g.type==="faceted"&&O?typeof O=="function"?O({rows:E}):O:g.type==="faceted"?Array.from(p.getColumn(C)?.getFacetedUniqueValues()??[]).map(([w,k])=>({label:g.faceting?.getOptionLabel?.(w)??String(w),value:String(w),count:k})):typeof g.options=="function"?g.options({rows:E}):g.options??[];return [{id:C,label:K,type:g.type,value:W?.value,placeholder:g.placeholder,options:k$1(v),searchable:g.faceting?.searchable,searchPlaceholder:g.faceting?.searchPlaceholder,trueLabel:g.trueLabel,falseLabel:g.falseLabel,min:g.min??R?.[0],max:g.max??R?.[1],step:g.step}]}),[e,t$1,r$1,p,E]),B$1=f.useCallback((s,y)=>{l$1(g=>{let C=g.filter(N=>N.id!==s);return m$1(y)&&C.push({id:s,value:y}),C});},[l$1]),q=f.useCallback(()=>{l$1([]);},[l$1]),F=f.useCallback((s,y)=>{d(g=>{let C=(g.left??[]).filter(D=>D!==s),N=(g.right??[]).filter(D=>D!==s);return y==="left"&&C.push(s),y==="right"&&N.push(s),{left:C,right:N}});},[d]),T=f.useCallback(()=>{if(S)return o({csvExport:S,table:p,labels:m})},[S,m,p]),u=f.useMemo(()=>S?[...h??[],{key:"__csv_export__",label:m.exportCsv,icon:l,placement:"trailing",onClick:T}]:h??[],[S,T,m.exportCsv,h]);return {columnVisibilityOptions:A,effectiveToolbarActions:u,handleClearColumnFilters:q,handleToolbarColumnFilterChange:B$1,handleToolbarColumnPinningChange:F,toolbarColumnFilters:V}}function or({columns:e,data:t,getRowId:n}){let i=f.useRef({columns:e,data:t,getRowId:n}),r=f.useRef(new Set);f.useEffect(()=>{if(!Ys())return;let l=i.current;l.data!==t&&nr(l.data,t)&&!r.current.has("data")&&ja(r.current,"data","The data array identity changed. Keep rows immutable and memoize unchanged data so filtering, row models, and virtual measurements can be reused."),l.columns!==e&&nr(l.columns,e)&&!r.current.has("columns")&&ja(r.current,"columns","The columns array identity changed. Memoize stable column definitions so the search index and table column model can be reused."),l.getRowId!==n&&!r.current.has("getRowId")&&ja(r.current,"getRowId","getRowId identity changed. Memoize it and return an immutable, unique id to preserve row state and virtual scroll anchoring.");let d=new Set;for(let m=0;mObject.is(n,t[i]))}function ja(e,t,n){e.add(t),console.warn(`[data-table-pro] ${n}`);}function Ys(){return globalThis.process?.env?.NODE_ENV!=="production"}var Xs=f.lazy(()=>import('./data-table-auto-page-size-EICVZJQ5.js'));function Kc(e){return Zs(e)}function Zs(e,t={}){let n=t.CardPanel??Ti,i=t.TablePanel??Qi,r$1=e.classNames??{},{rootClassName:l,Button:d,Checkbox:m,Input:p,ScrollArea:h$1,ScrollBar:E,Skeleton:S,Table:A,TableBody:V,TableCell:B,TableFooter:q$1="tfoot",TableHead:F,TableHeader:T,TableRow:u,Tooltip:s$1,TooltipContent:y,TooltipProvider:g=f.Fragment,TooltipTrigger:C}=e,N=Gi(e),D=ji(e),{DataTableFooter:K}=$i(e),W=Wi(e),O=Hi(e,D),R=f.lazy(async()=>{let{createDataTableStateOverlay:w}=await import('./data-table-state-overlay-AQ7VU6EM.js');return {default:w(e)}}),v={minSize:80,size:180,maxSize:720};return function({columns:k,data:M,getRowId:I,children:G,title:x,description:Z,toolbarQueryValue:j$1,onToolbarQueryValueChange:z,toolbarQueryPlaceholder:Y,toolbarQueryDebounceMs:ne,manualFiltering:be=false,enableToolbarQueryFiltering:fe=true,globalFilterFn:De,columnFilters:Se,onColumnFiltersChange:Te,enableColumnFilters:Ee,customToolbar:Ne,compactToolbar:J,rowsPerPageOptions:he=[10,20,50,100],totalRowCount:L,hasNextPage:we,sorting:Ge,onSortingChange:nt,manualSorting:Ye=false,grouping:ot,onGroupingChange:se,manualGrouping:it=false,enableGrouping:Ve=false,groupedColumnMode:gt="reorder",aggregationFns:Oe,pageIndex:Rt,pageSize:mt,autoPageSize:Je=false,onPageIndexChange:bt,onPageSizeChange:ye,pageCount:rt,manualPagination:_e=false,rowSelection:lt,onRowSelectionChange:ve,enableRowSelection:He=false,enableMultiRowSelection:St=true,enableSubRowSelection:Xe=true,getRowCanSelect:de,rowSelectionSelectAllScope:vt="page",expanded:ft,onExpandedChange:Tt,getSubRows:Ae,manualExpanding:$e=false,paginateExpandedRows:wt,filterFromLeafRows:Be,maxLeafRowFilterDepth:Lt,detailPanel:Pt,getRowCanExpand:ke,renderExpandedRow:Ue,columnOrder:st,onColumnOrderChange:dt,enableColumnReordering:Ze=false,columnGroupHeaderHeight:xt,columnPinning:je,onColumnPinningChange:Ct,enableColumnPinning:Nt=false,rowPinning:Ke,onRowPinningChange:Et,enableRowPinning:kt=false,keepPinnedRows:a=true,toolbarActions:b=[],selectionActions:U=[],rowActions:ce=[],csvExport:ae,clipboard:_,enableCellSelection:et=false,cellSelection:Ot,defaultCellSelection:_t,onCellSelectionChange:Ka,gridCommands:Mt,density:ia,onDensityChange:Wa,enableDensityToggle:Qa=false,columnPrefsKey:$,persistence:Pe,savedViews:ie,toolbarDataOperations:ct,initialState:te,state:ue,onStateChange:Ce,apiRef:lr,labels:Kn,summaryRows:sr=[],cardRenderer:qa,cardSizing:dr,cardGridClassName:cr,cardClassName:ur,viewMode:Wn,onViewModeChange:pr,enableViewToggle:gr=false,enablePrint:Qn=false,enableFullscreen:Ta=false,emptyState:mr,stateOverlay:Kt,isLoading:qn=false,loadingRowCount:br,getRowLoadingState:fr,hiddenRows:Yn,showHiddenRows:Jn,onShowHiddenRowsChange:Tr,infiniteScroll:wa,editableRows:Vt,columnVisibility:Xn,onColumnVisibilityChange:wr,columnSizing:Zn,onColumnSizingChange:Cr,enableColumnResizing:eo=false,columnResizeMode:Dr="onEnd",layoutMode:to="fill",stickyHeader:hr=true,showFooter:yr=true,showToolbar:ao=true,dir:Ya="ltr",flexGrow:Wt=true,toolbarVisibility:no,className:Rr,tableClassName:Sr,tableContainerClassName:oo,stripedRows:io=false,getRowClassName:ro,onRowClick:Ja,onActionError:ra,dragAndDrop:Qt,fileUpload:Dt,virtualization:Xa,accessibility:lo,interactiveGrid:Ca}){let Ht=f.useRef(null),so=f.useRef(null),co=f.useRef(null),vr=f.useRef(null),Za=f.useRef(null),Pr=f.useRef(null),[uo,en]=f.useState(0),xr=f.useId(),Er=f.useId();or({columns:k,data:M,getRowId:I}),f.useMemo(()=>s(k),[k]);let xe=f.useMemo(()=>hi(Kn),[Kn]),tn=ct===true?{columnChooser:true,savedViews:true,resetLayout:true}:ct===false?{}:ct??{},an=lo?.mode==="grid"||Ca===true||typeof Ca=="object",[At,Da]=Re({defaultValue:_t??null,onChange:Ka,value:Ot}),kr=j$1??ue?.globalFilter,Mr=Ge??ue?.sorting,Vr=ot??ue?.grouping,ha=Rt??ue?.pagination?.pageIndex,qt=mt??ue?.pagination?.pageSize,Ar=lt??ue?.rowSelection,Fr=Xn??ue?.columnVisibility,Ir=Se??ue?.columnFilters,zr=ft??ue?.expanded,Lr=st??ue?.columnOrder,Nr=je??ue?.columnPinning,Or=Ke??ue?.rowPinning,_r=Zn??ue?.columnSizing,Hr=ia??ue?.density,Br=Wn??ue?.viewMode,Gr=Jn??ue?.showHiddenRows,po=ao&&(no?.title??true),go=po&&x?xr:void 0,mo=po&&Z?Er:void 0;td(ue,{columnFilters:Se!==void 0,columnOrder:st!==void 0,columnPinning:je!==void 0,rowPinning:Ke!==void 0,columnSizing:Zn!==void 0,columnVisibility:Xn!==void 0,density:ia!==void 0,expanded:ft!==void 0,grouping:ot!==void 0,globalFilter:j$1!==void 0,pagination:Rt!==void 0||mt!==void 0,rowSelection:lt!==void 0,showHiddenRows:Jn!==void 0,sorting:Ge!==void 0,viewMode:Wn!==void 0});let $r=Le("globalFilter",z,Ce),Ur=Le("sorting",nt,Ce),jr=Le("grouping",se,Ce),Kr=Le("rowSelection",ve,Ce),Wr=Le("columnVisibility",wr,Ce),Qr=Le("columnFilters",Te,Ce),qr=Le("expanded",Tt,Ce),Yr=Le("columnOrder",dt,Ce),Jr=Le("columnPinning",Ct,Ce),Xr=Le("rowPinning",Et,Ce),Zr=Le("columnSizing",Cr,Ce),el=Le("density",Wa,Ce),tl=Le("viewMode",pr,Ce),al=Le("showHiddenRows",Tr,Ce),ya=f.useCallback(o=>{bt?.(o),Ce?.(P=>({...P,pagination:{pageIndex:o,pageSize:qt??P.pagination.pageSize}}));},[bt,Ce,qt]),nn=f.useCallback(o=>{ye?.(o),Ce?.(P=>({...P,pagination:{pageIndex:ha??P.pagination.pageIndex,pageSize:o}}));},[ye,Ce,ha]),Me=f.useCallback((o,P)=>{ed(P,o,ra);},[ra]),bo=f.useMemo(()=>ce.map(o=>({...o,onClick:P=>{Me({actionKey:o.key,row:P,source:"rowAction"},()=>o.onClick(P));}})),[ce,Me]),fo=f.useMemo(()=>Ja?o=>{Me({row:o.row,source:"rowClick"},()=>Ja(o));}:void 0,[Ja,Me]),nl=f.useCallback((o,P)=>{ra?.({error:o,row:P,source:"edit"});},[ra]),{containerWidth:ol,currentColumnFilters:Ra,currentColumnOrder:on,currentColumnPinning:Sa,currentRowPinning:rn,currentColumnSizing:va,currentColumnVisibility:To,currentDensity:la,currentExpanded:Pa,currentGrouping:ln,currentPagination:tt,currentRowSelection:xa,currentShowHiddenRows:sn,currentSorting:Ea,currentViewMode:Yt,effectiveColumnVisibility:wo,globalFilterValue:il,handleDensityChange:dn,handleShowHiddenRowsChange:cn,handleViewModeChange:un,localSearchValue:Bt,resolvedLoadingRowCount:rl,resolvedToolbarQueryPlaceholder:ll,selectedRowIds:sl,selectedRows:dl,setCurrentColumnFilters:Co,setCurrentColumnOrder:cl,setCurrentColumnPinning:Do,setCurrentRowPinning:ul,setCurrentColumnVisibility:pl,setCurrentExpanded:ho,setCurrentGrouping:gl,setCurrentRowSelection:yo,setCurrentSorting:ml,setLocalColumnSizing:bl,setLocalPagination:pn,setLocalSearchValue:gn,shouldRenderInitialLoading:mn,tableData:fl,tableGetRowId:Tl,visibleData:wl}=Li({columnFilters:Ir,columnOrder:Lr,columnPinning:Nr,rowPinning:Or,columnSizing:_r,columnPrefsKey:$,persistence:Pe,columnVisibility:Fr,columns:k,containerRef:Ht,data:M,density:Hr,enableRowSelection:He,enableToolbarQueryFiltering:fe,expanded:zr,grouping:Vr,getSubRows:Ae,getRowId:I,hiddenRows:Yn,isLoading:qn,loadingRowCount:br,manualFiltering:be,initialState:te,onColumnFiltersChange:Qr,onColumnOrderChange:Yr,onColumnPinningChange:Jr,onRowPinningChange:Xr,onColumnSizingChange:Zr,onColumnVisibilityChange:Wr,onDensityChange:el,onExpandedChange:qr,onGroupingChange:jr,onPageIndexChange:ya,onRowSelectionChange:Kr,onShowHiddenRowsChange:al,onSortingChange:Ur,onToolbarQueryValueChange:$r,onViewModeChange:tl,pageIndex:ha,pageSize:qt,resolvedLabels:xe,rowSelection:Ar,rowsPerPageOptions:he,selectionActions:U,showHiddenRows:Gr,sorting:Mr,toolbarQueryDebounceMs:ne,toolbarQueryPlaceholder:Y,toolbarQueryValue:kr,viewMode:Br}),bn=!!(Ue&&!Pt&&!Ae),Jt=Pt??(Ue?{getRowCanExpand:Ae?void 0:ke,render:Ue}:void 0),[fn,Ro]=Re({defaultValue:()=>bn?te?.expanded??{}:{},onChange:bn?ho:Jt?.onExpandedChange,value:bn?Pa:Jt?.expanded}),{cancelEditing:Tn,clearEditError:So,draftValues:Cl,editErrors:wn,editingRowId:Cn,isEditDirty:Dn,isSavingEdit:hn,saveEdit:yn,setDraftValues:Dl,setEditingRowId:hl,startEditingRow:yl}=a$3({columns:k,editableRows:Vt,onError:nl}),Rl=f.useMemo(()=>({cancel:Tn,cancelOnEscape:Vt?.cancelOnEscape!==false,clearError:So,commit:o=>{yn(o);},commitOnEnter:Vt?.commitOnEnter!==false,errors:wn,isDirty:Dn,isPending:hn}),[Tn,So,Vt?.cancelOnEscape,Vt?.commitOnEnter,wn,Dn,hn,yn]),{viewportElement:Rn,viewportHeight:Sn}=a$4(co,Yt),vo=typeof Je=="object"?Je:void 0,Sl=f.useCallback(o=>{o!==tt.pageSize&&(tt.pageIndex!==0&&ya(0),nn(o),qt===void 0&&pn({pageIndex:0,pageSize:o}));},[tt.pageIndex,tt.pageSize,ya,nn,qt,pn]),vl=Je===true||vo!==void 0,ka=f.useCallback(()=>typeof window>"u"||typeof window.print!="function"?false:(window.print(),true),[]),Ma=f.useCallback(async()=>{let o=Ht.current;return !o||typeof document>"u"?false:document.fullscreenElement?typeof document.exitFullscreen!="function"?false:(await document.exitFullscreen(),true):typeof o.requestFullscreen!="function"?false:(await o.requestFullscreen(),true)},[]),[Po,Pl]=f.useState(false);f.useEffect(()=>{if(!Ta||typeof document>"u")return;let o=()=>{Pl(document.fullscreenElement===Ht.current);};return o(),document.addEventListener("fullscreenchange",o),()=>document.removeEventListener("fullscreenchange",o)},[Ta]);let xl=f.useCallback(()=>{Dt?.disabled||so.current?.click();},[Dt?.disabled]),El=f.useCallback(o=>{Me({source:"fileUpload"},()=>Dt?.onFilesSelected(o));},[Dt,Me]),kl=yi({Button:d,Checkbox:m,DataTableRowActions:D,Tooltip:s$1,TooltipContent:y,TooltipTrigger:C,cancelEditing:Tn,columns:k,editableRows:Vt,editErrors:wn,editingRowId:Cn,enableRowSelection:He,enableRowPinning:kt,hasTreeExpansion:!!Ae,isSavingEdit:hn,isEditDirty:Dn,labels:xe,lastSelectedRowIdRef:Pr,detailPanel:Jt,detailExpanded:fn,onDetailExpandedChange:Ro,rowSelectionSelectAllScope:vt,rowActions:bo,saveEdit:yn,startEditingRow:yl,tableRef:Za}),Ml=f.useMemo(()=>h(k),[k]),{effectivePageCount:Vl,footerTotalRowCount:Al,handleFooterPageIndexChange:Fl,handleFooterPageSizeChange:Il,isPageCountKnown:zl,renderedRows:xo,topPinnedRows:Ll,bottomPinnedRows:Nl,reorderColumn:Eo,rowsToRender:Ol,sentinelRef:ko,table:X,virtualPaddingBottom:_l,virtualPaddingTop:Hl,visibleLeafColumns:vn}=Ei({autoResetPageIndex:false,columnGroupPaths:Ml,columnResizeMode:Dr,dir:Ya,currentColumnFilters:Ra,currentColumnOrder:on,currentColumnPinning:Sa,currentRowPinning:rn,currentColumnSizing:va,currentExpanded:Pa,currentGrouping:ln,currentPagination:tt,currentRowSelection:xa,currentSorting:Ea,currentViewMode:Yt,defaultColumn:v,effectiveColumnVisibility:wo,enableColumnResizing:eo,enableRowPinning:kt,enableRowSelection:He,enableMultiRowSelection:St,enableSubRowSelection:Xe,getRowCanSelect:de,getRowCanExpand:ke,getSubRows:Ae,aggregationFns:Oe,groupedColumnMode:gt,globalFilterFn:De,globalFilterValue:il,hasNextPage:we,handleColumnFiltersChange:Co,handleColumnOrderChange:cl,handleColumnPinningChange:Do,handleRowPinningChange:ul,handleColumnVisibilityChange:pl,handleExpandedChange:ho,handleGroupingChange:gl,infiniteScroll:wa,keepPinnedRows:a,manualFiltering:be,manualGrouping:it,manualExpanding:$e,manualPagination:_e,manualSorting:Ye,onActionError:ra,onPageIndexChange:ya,onPageSizeChange:nn,pageCount:rt,pageIndex:ha,pageSize:qt,paginateExpandedRows:wt,filterFromLeafRows:Be,maxLeafRowFilterDepth:Lt,setCurrentRowSelection:yo,setCurrentSorting:ml,setLocalColumnSizing:bl,setLocalPagination:pn,shouldRenderInitialLoading:mn,tableColumns:kl,tableData:fl,tableGetRowId:Tl,tableRef:Za,totalRowCount:L,virtualization:Xa}),Mo=Oi({columns:k,columnSizing:va,editableRows:!!Vt,enableRowSelection:He,hasRowActions:ce.length>0,hasRowExpansion:!!(Ae||Jt),layoutMode:to,uiClassNames:r$1,visibleLeafColumns:vn}),{explicitlySizedColumnIds:Va,fillMinWidth:Bl,getColumnLayout:Gl}=Mo,$l=f.useMemo(()=>new Set(j(k).flatMap(({column:o,index:P})=>Object.prototype.hasOwnProperty.call(o,"cell")&&typeof o.cell=="function"?[r(o,P)]:[])),[k]),Ul=vn.length,jl=f.useMemo(()=>({Checkbox:m,Input:p,Skeleton:S,TableCell:B,TableRow:u}),[]),Kl=f.useMemo(()=>j(k).some(({column:o})=>o.meta?.cardTitle),[k]),Wl=f.useCallback((o,P)=>{Va.has(o)||Object.prototype.hasOwnProperty.call(X.getState().columnSizing,o)||flushSync(()=>{X.setColumnSizing(pe=>({...pe,[o]:P}));});},[Va,X]),Ql=f.useCallback(o=>{if(Va.has(o)){X.getColumn(o)?.resetSize();return}X.setColumnSizing(P=>{if(!Object.prototype.hasOwnProperty.call(P,o))return P;let pe={...P};return delete pe[o],pe});},[Va,X]),Pn=X.getFilteredRowModel().rows.map(o=>o.original),xn=Kt?.empty??mr,Vo=typeof xn=="function"?xn({rows:Pn,toolbarQueryValue:Bt}):xn,Ao=f.useMemo(()=>Kt?{...Kt,onRetry:Kt.onRetry?()=>Me({source:"retry"},Kt.onRetry):void 0}:void 0,[Me,Kt]),Fo=Ao?.error!=null?jsx(f.Suspense,{fallback:null,children:jsx(R,{labels:xe,overlay:Ao,rows:Pn,toolbarQueryValue:Bt})}):void 0,{columnVisibilityOptions:ql,effectiveToolbarActions:Io,handleClearColumnFilters:Yl,handleToolbarColumnFilterChange:Jl,handleToolbarColumnPinningChange:Xl,toolbarColumnFilters:Zl}=ar({columns:k,currentColumnFilters:Ra,currentColumnPinning:Sa,csvExport:ae,effectiveColumnVisibility:wo,enableColumnFilters:Ee,handleColumnFiltersChange:Co,handleColumnPinningChange:Do,labels:xe,table:X,toolbarActions:b,visibleData:wl}),es=f.useMemo(()=>[...Io,...Qn?[{key:"__print__",label:xe.print,placement:"trailing",onClick:()=>{ka();}}]:[],...Ta?[{key:"__fullscreen__",label:Po?xe.exitFullscreen:xe.enterFullscreen,placement:"trailing",onClick:()=>Ma()}]:[]].map(o=>({...o,onClick:P=>{Me({actionKey:o.key,source:"toolbarAction"},()=>o.onClick(P));}})),[Io,Ta,Qn,Po,ka,xe.enterFullscreen,xe.exitFullscreen,xe.print,Me,Ma]),ts=f.useMemo(()=>U.map(o=>({...o,onClick:P=>{Me({actionKey:o.key,source:"selectionAction"},()=>o.onClick(P));}})),[Me,U]),zo=f.useMemo(()=>({sorting:Ea,pagination:tt,rowSelection:xa,columnVisibility:To,columnFilters:Ra,expanded:Pa,grouping:ln,columnOrder:on,columnPinning:Sa,rowPinning:rn,columnSizing:va,density:la,viewMode:Yt,showHiddenRows:sn,globalFilter:Bt}),[Ra,on,Sa,rn,va,To,la,Pa,ln,tt,xa,sn,Ea,Yt,Bt]),sa=f.useCallback(()=>nd(zo),[zo]),Ft=f.useCallback(o=>{o.sorting!==void 0&&X.setSorting(o.sorting),o.pagination!==void 0&&X.setPagination(o.pagination),o.rowSelection!==void 0&&X.setRowSelection(o.rowSelection),o.columnVisibility!==void 0&&X.setColumnVisibility(o.columnVisibility),o.columnFilters!==void 0&&X.setColumnFilters(o.columnFilters),o.expanded!==void 0&&X.setExpanded(o.expanded),o.grouping!==void 0&&X.setGrouping(o.grouping),o.columnOrder!==void 0&&X.setColumnOrder(o.columnOrder),o.columnPinning!==void 0&&X.setColumnPinning(o.columnPinning),o.rowPinning!==void 0&&X.setRowPinning(o.rowPinning),o.columnSizing!==void 0&&X.setColumnSizing(o.columnSizing),o.density!==void 0&&dn(o.density),o.viewMode!==void 0&&un(o.viewMode),o.showHiddenRows!==void 0&&cn(o.showHiddenRows),o.globalFilter!==void 0&&gn(o.globalFilter);},[dn,cn,un,gn,X]),Xt=f.useCallback(()=>Ai(Pe??$),[$,Pe]),En=f.useCallback(o=>{o?.clearPersistence&&Xt(),Ft({columnVisibility:te?.columnVisibility??{},columnOrder:te?.columnOrder??[],columnPinning:te?.columnPinning??q(k),rowPinning:te?.rowPinning??{top:[],bottom:[]},columnSizing:te?.columnSizing??{}});},[Xt,k,te,Ft]),Lo=f.useCallback(o=>{o?.clearPersistence&&Xt(),Ft({sorting:te?.sorting??[],pagination:te?.pagination??{pageIndex:0,pageSize:he[0]??20},rowSelection:te?.rowSelection??{},columnVisibility:te?.columnVisibility??{},columnFilters:te?.columnFilters??[],expanded:te?.expanded??{},grouping:te?.grouping??[],columnOrder:te?.columnOrder??[],columnPinning:te?.columnPinning??q(k),rowPinning:te?.rowPinning??{top:[],bottom:[]},columnSizing:te?.columnSizing??{},density:te?.density??"comfortable",viewMode:te?.viewMode??"table",showHiddenRows:te?.showHiddenRows??false,globalFilter:te?.globalFilter??""});},[Xt,k,te,Ft,he]),No=f.useCallback(()=>jt(ie),[ie]),Aa=f.useCallback(o=>Ji(ie,o,sa()),[sa,ie]),kn=f.useCallback(o=>{let P=jt(ie).find(pe=>pe.id===o);return P?(Ft(P.state),ie?.onApply?.(P),true):false},[Ft,ie]),Fa=f.useCallback((o,P)=>Xi(ie,o,P),[ie]),Ia=f.useCallback(o=>Zi(ie,o),[ie]),Oo=f.useCallback(()=>er(ie),[ie]),as=f.useMemo(()=>jt(ie),[ie,uo]),ns=f.useCallback(o=>{let P=Aa(o);return P&&en(pe=>pe+1),P},[Aa]),os=f.useCallback((o,P)=>{let pe=Fa(o,P);return pe&&en(Vn=>Vn+1),pe},[Fa]),is=f.useCallback(o=>{let P=Ia(o);return P&&en(pe=>pe+1),P},[Ia]),_o=f.useCallback(o$1=>o({csvExport:o$1??(ae||true),labels:xe,table:X}),[ae,xe,X]),Mn=f.useCallback(async o=>{let{copyDataTableToClipboard:P}=await import('./data-table-clipboard-SFXQFZS3.js');return P({clipboard:o??(_?.copy===false?false:At?{..._?.copy===true?{}:_?.copy,scope:"cellSelection"}:_?.copy??true),cellSelection:At,table:X})},[_?.copy,At,X]),Ho=f.useCallback((o,P="top")=>{try{let pe=X.getRow(o,!0);return pe.getCanPin()?(pe.pin(P),!0):!1}catch{return false}},[X]),Bo=f.useCallback(o=>{try{let P=X.getRow(o,!0);return P.getCanPin()?(P.pin(!1),!0):!1}catch{return false}},[X]);return f.useImperativeHandle(lr,()=>({getTable:()=>Za.current,getState:sa,snapshot:sa,restore:Ft,resetColumnLayout:En,resetState:Lo,clearPersistedState:Xt,getSavedViews:No,createSavedView:Aa,applySavedView:kn,renameSavedView:Fa,deleteSavedView:Ia,clearSavedViews:Oo,pinRow:Ho,unpinRow:Bo,focus:()=>{Ht.current?.focus();},scrollToRow:o=>ir(Ht.current,"row",o),scrollToColumn:o=>ir(Ht.current,"column",o),exportCsv:_o,copyToClipboard:Mn,getCellSelection:()=>At,setCellSelection:Da,clearCellSelection:()=>Da(null),print:ka,toggleFullscreen:Ma}),[kn,Xt,Oo,Mn,At,Aa,Ia,_o,No,sa,Fa,En,Lo,Ft,Ho,ka,Da,Bo,Ma]),jsx(g,{children:jsxs("div",{ref:Ht,"data-dtp-slot":"data-table-root","data-density":la,"data-dtp-striped-rows":io||void 0,"aria-busy":qn||void 0,dir:Ya,tabIndex:-1,className:a$2("@container/data-table data-table-container-query flex w-full min-w-0 flex-col",Wt?"h-full min-h-0 flex-1":"grow",l),onDragEnter:Qt?.onDragEnter,onDragOver:Qt?.onDragOver,onDragLeave:Qt?.onDragLeave,onDrop:Qt?.onDrop,onKeyDown:o=>{if(an&&Mt&&(o.ctrlKey||o.metaKey)&&o.key.toLowerCase()==="z"&&!jn(o.target)){let P=o.shiftKey?Mt.redo:Mt.undo;P&&(o.preventDefault(),Me({source:o.shiftKey?"redo":"undo"},()=>P({cellSelection:At,table:X})));return}!_?.copy||!(o.ctrlKey||o.metaKey)||o.key.toLowerCase()!=="c"||jn(o.target)||(o.preventDefault(),Me({source:"clipboardCopy"},async()=>{await Mn(_.copy===true?void 0:At&&typeof _.copy=="object"&&!_.copy.scope?{..._.copy,scope:"cellSelection"}:_.copy);}));},onPaste:o=>{let P=_?.paste;if(!P||P.enabled===false||jn(o.target))return;let pe=o.clipboardData.getData("text/plain");pe&&((P.preventDefault??true)&&o.preventDefault(),Me({source:"clipboardPaste"},async()=>{let{parseDataTableClipboardText:Vn}=await import('./data-table-clipboard-SFXQFZS3.js');return P.onPaste({table:X,text:pe,values:Vn(pe)})}));},children:[vl?jsx(f.Suspense,{fallback:null,children:jsx(Xs,{config:vo,currentPageSize:tt.pageSize,enabled:true,onPageSizeChange:Sl,viewportElement:Rn,viewportHeight:Sn})}):null,Dt?jsx("input",{ref:so,className:"hidden",type:"file",accept:Dt.accept,multiple:Dt.multiple??true,disabled:Dt.disabled,onChange:o=>{let P=o.currentTarget.files;P?.length&&El(P),o.currentTarget.value="";}}):null,jsx("div",{"data-dtp-slot":"data-table-layout",className:a$2("flex w-full flex-col",Wt?"min-h-0 flex-1":"grow"),children:jsxs("div",{"data-dtp-slot":"data-table-main",className:a$2("flex w-full flex-col gap-4",Wt?"min-h-0 flex-1":"grow",Rr),children:[ao?jsx(Di,{allRows:Pn,columnFilters:Zl,columnVisibilityOptions:ql,compactToolbar:J,customToolbar:Ne,DataTableToolbar:W,density:la,description:Z,descriptionId:mo,effectiveToolbarActions:es,enableColumnPinning:Nt,enableGrouping:Ve,enableToolbarColumnChooser:tn.columnChooser===true,enableToolbarFilterChips:!!ct,enableToolbarResetLayout:tn.resetLayout===true,enableToolbarSavedViews:tn.savedViews===true&&!!ie,enableDensityToggle:Qa,enableViewToggle:gr&&!!qa,hiddenRowsLabel:Yn?.label,labels:xe,onClearColumnFilters:Yl,onColumnFilterChange:Jl,onColumnPinningChange:Xl,onDensityChange:dn,onShowHiddenRowsChange:cn,onToolbarQueryValueChange:gn,reorderColumn:Eo,onResetColumnLayout:En,onCreateSavedView:ns,onApplySavedView:kn,onRenameSavedView:os,onDeleteSavedView:is,onViewModeChange:un,openFileDialog:Dt?xl:void 0,selectedRowIds:sl,selectedRows:dl,selectionActions:ts,savedViews:as,showHiddenRows:sn,table:X,title:x,titleId:go,toolbarQueryPlaceholder:ll,toolbarQueryValue:Bt,toolbarVisibility:no,viewMode:Yt}):null,jsx("div",{"data-dtp-slot":"data-table-content",className:a$2(Wt?"flex min-h-0 flex-1 flex-col":""),children:Yt==="card"&&qa?jsx(n,{cardClassName:ur,cardGridClassName:cr,cardSizing:dr,cardRenderer:qa,containerWidth:ol,currentDetailExpanded:fn,currentRowSelection:xa,DataTableCardView:O,DataTableEmptyState:N,dragAndDrop:Qt,editableRows:Vt,editingRowId:Cn,emptyNode:Vo,stateOverlayNode:Fo,enableRowSelection:He,flexGrow:Wt,getRowClassName:ro,hasCardTitle:Kl,infiniteScroll:wa,localSearchValue:Bt,onRowClick:fo,renderedRows:xo,detailPanel:Jt,resolvedLabels:xe,resolvedLoadingRowCount:rl,rowActions:bo,ScrollArea:h$1,sentinelRef:ko,setCurrentDetailExpanded:Ro,setCurrentRowSelection:yo,setEditingRowId:hl,shouldRenderInitialLoading:mn,tableContainerClassName:oo,uiClassNames:r$1,virtualization:Xa}):jsx(i,{ariaDescribedBy:mo,ariaLabelledBy:go,bodyRowComponents:jl,columnLayouts:Mo.columnLayouts,currentDensity:la,columnGroupHeaderHeight:xt,currentDetailExpanded:fn,currentSorting:Ea,dir:Ya,DataTableEmptyState:N,dragAndDrop:Qt,draggedColumnIdRef:vr,draftValues:Cl,editingRowId:Cn,editingContext:Rl,emptyNode:Vo,stateOverlayNode:Fo,enableColumnReordering:Ze,enableColumnResizing:eo,explicitCustomCellColumnIds:$l,fillMinWidth:Bl,flexGrow:Wt,getColumnLayout:Gl,getRowClassName:ro,getRowLoadingState:fr,infiniteScroll:wa,layoutMode:to,localSearchValue:Bt,onRowClick:fo,primeColumnForResize:Wl,renderedRows:xo,detailPanel:Jt,topPinnedRows:Ll,bottomPinnedRows:Nl,reorderColumn:Eo,resetColumnSize:Ql,resolvedLabels:xe,rowsToRender:Ol,ScrollArea:h$1,ScrollBar:E,sentinelRef:ko,setDraftValues:Dl,shouldRenderInitialLoading:mn,stickyHeader:hr,stripedRows:io,summaryRows:sr,table:X,tableClassName:Sr,tableContainerClassName:oo,Table:A,TableBody:V,TableCell:B,TableFooter:q$1,TableHead:F,TableHeader:T,TableRow:u,tableScrollContainerRef:co,tableScrollElement:Rn,uiClassNames:r$1,viewportHeight:Sn,virtualization:Xa,gridMode:an,gridPageSize:lo?.pageSize??(typeof Ca=="object"?Ca.pageSize:void 0),cellSelectionEnabled:an&&(et||Ot!==void 0||_t!==void 0),cellSelection:At,onCellSelectionChange:Da,gridRowOffset:_e?tt.pageIndex*tt.pageSize:0,totalRowCount:L,virtualPaddingBottom:_l,virtualPaddingTop:Hl,visibleLeafColumnCount:Ul,visibleLeafColumns:vn})}),jsx(wi,{currentPagination:tt,DataTableFooter:K,effectivePageCount:Vl,footerTotalRowCount:Al,handleFooterPageIndexChange:Fl,handleFooterPageSizeChange:Il,labels:xe,pageCountKnown:zl,rowsPerPageOptions:he,showFooter:yr&&!wa?.enabled,children:G})]})})]})})}}function ed(e,t,n){let i;try{i=e();}catch(r){n?.({...t,error:r});return}Promise.resolve(i).catch(r=>{n?.({...t,error:r});});}function Le(e,t,n){let i=f.useCallback(r=>{t?.(r),n?.(l=>({...l,[e]:r}));},[e,t,n]);return t||n?i:void 0}function td(e,t){let n=f.useRef(new Set);f.useEffect(()=>{if(!(!e||!ad()))for(let i of Object.keys(t))e[i]===void 0||!t[i]||n.current.has(i)||(n.current.add(i),console.warn(`[data-table-pro] Both state.${i} and its legacy controlled prop were provided. The legacy prop takes precedence during the 4.x compatibility window.`));},[t,e]);}function ad(){return globalThis.process?.env?.NODE_ENV!=="production"}function nd(e){return {sorting:e.sorting.map(t=>({...t})),pagination:{...e.pagination},rowSelection:{...e.rowSelection},columnVisibility:{...e.columnVisibility},columnFilters:e.columnFilters.map(t=>({...t})),expanded:typeof e.expanded=="boolean"?e.expanded:{...e.expanded},grouping:[...e.grouping??[]],columnOrder:[...e.columnOrder],columnPinning:{left:e.columnPinning.left?[...e.columnPinning.left]:void 0,right:e.columnPinning.right?[...e.columnPinning.right]:void 0},rowPinning:{top:e.rowPinning.top?[...e.rowPinning.top]:void 0,bottom:e.rowPinning.bottom?[...e.rowPinning.bottom]:void 0},columnSizing:{...e.columnSizing},density:e.density,viewMode:e.viewMode,showHiddenRows:e.showHiddenRows,globalFilter:e.globalFilter}}function ir(e,t,n){if(!e)return false;let i=t==="row"?"data-row-id":"data-column-id",r=Array.from(e.querySelectorAll(`[${i}]`)).find(l=>l.getAttribute(i)===n);return r?(r.scrollIntoView?.({block:"nearest",inline:"nearest"}),true):false}function jn(e){return e instanceof HTMLElement?e.isContentEditable||e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement:false}export{Ti as a,wi as b,Di as c,yi as d,Re as e,Ei as f,Li as g,Oi as h,Kc as i,Zs as j};//# sourceMappingURL=chunk-4UITEBLL.js.map -//# sourceMappingURL=chunk-4UITEBLL.js.map \ No newline at end of file +import {a as a$4}from'./chunk-EJHT5JBZ.js';import {a as a$3,e as e$1}from'./chunk-THSY57Y7.js';import {d,a as a$1,b,g,j,r,w,i,A,q,c as c$1,e,f as f$1,u,v,s,h,o,n,x,t,B,k as k$1,m as m$1}from'./chunk-4P45F2OY.js';import {c,p,u as u$1,k,m,s as s$1,a as a$5,r as r$1,q as q$1,l,j as j$1}from'./chunk-CVR2ZXHQ.js';import {a,i as i$1,b as b$1,d as d$1,e as e$2,c as c$2}from'./chunk-KDHJA6AH.js';import {a as a$2}from'./chunk-XTVBESM5.js';import*as f from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {useReactTable,getPaginationRowModel,getExpandedRowModel,getSortedRowModel,getGroupedRowModel,getFacetedMinMaxValues,getFacetedUniqueValues,getFacetedRowModel,getFilteredRowModel,getCoreRowModel}from'@tanstack/react-table';import {flushSync}from'react-dom';function zn({cardClassName:e,cardGridClassName:t,cardSizing:n,cardRenderer:i,currentRowSelection:r,currentDetailExpanded:l,DataTableCardView:d,DataTableEmptyState:m,dragAndDrop:p,editableRows:h,editingRowId:E,emptyNode:S,enableRowSelection:A,flexGrow:V,getRowClassName:B,hasCardTitle:q,infiniteScroll:F,localSearchValue:T,onRowClick:u,renderedRows:s,detailPanel:y,resolvedLabels:g,resolvedLoadingRowCount:C,rowActions:N=[],ScrollArea:D,sentinelRef:K,setCurrentDetailExpanded:W,setCurrentRowSelection:O,setEditingRowId:R,shouldRenderInitialLoading:v,stateOverlayNode:w,tableContainerClassName:k,uiClassNames:M}){let I=v||s.length>0,G=f.useRef(null),x=(Z,j)=>jsx(d,{rows:Z,cardRenderer:i,cardGridClassName:t,cardClassName:e,cardSizing:n,rowActions:N,editableRows:h,detailPanel:y,detailExpanded:l,onDetailExpandedChange:W,hasCardTitle:q,rowSelection:r,onRowSelectionChange:O,enableRowSelection:A,editingRowId:E,onEditingRowIdChange:R,getRowClassName:B,onRowClick:u,getRowDraggable:p?.getRowDraggable,onRowDragStart:p?.onRowDragStart,onRowDragEnd:p?.onRowDragEnd,isLoading:j?.isLoading,loadingRowCount:j?.loadingRowCount,labels:g});return jsxs("div",{ref:G,"data-dtp-slot":"data-table-card-shell",className:a$2("relative box-border border-2 border-transparent transition-colors",V?"flex min-h-0 flex-1 flex-col":"h-full",p?.isDragging&&(M.dragActive??"rounded-md border-dashed")),children:[jsx(D,{className:a$2(V?"min-h-0 flex-1":"h-full",M.cardScrollArea,k),children:jsxs("div",{"data-dtp-slot":"data-table-card-viewport",className:a$2("flex min-h-full min-w-0 flex-col",V&&"min-h-0 flex-1",M.cardViewport),children:[I?v?x([],{isLoading:true,loadingRowCount:C}):x(s):jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center p-4",children:S??jsx(m,{title:T?g.noMatchingRowsTitle:g.noRowsTitle,description:T?g.noMatchingRowsDescription:g.noRowsDescription})}),F?.enabled&&!v?jsx("div",{className:"shrink-0 px-4 pb-4",children:jsx("div",{ref:K,className:"h-4 w-full"})}):null]})}),w]})}var rs=f.lazy(async()=>({default:(await import('./data-table-virtual-card-panel-KF2P5D3K.js')).DataTableVirtualCardPanel}));function Ti(e){let t=typeof e.virtualization=="object"?e.virtualization.card:void 0;return t?.enabled!==true?jsx(zn,{...e}):jsx(f.Suspense,{fallback:jsx(zn,{...e,renderedRows:e.renderedRows.slice(0,Math.max(1,Math.floor(t.fallbackCardCount??12)))}),children:jsx(rs,{...e})})}function wi({children:e,currentPagination:t,DataTableFooter:n,effectivePageCount:i,footerTotalRowCount:r,handleFooterPageIndexChange:l,handleFooterPageSizeChange:d,labels:m,pageCountKnown:p=true,rowsPerPageOptions:h,showFooter:E}){return !E&&!e?null:jsxs("div",{"data-dtp-slot":"data-table-footer",className:"shrink-0",children:[E?jsx(n,{pageIndex:t.pageIndex,pageCount:i,pageCountKnown:p,pageSize:t.pageSize,totalRowCount:r,rowsPerPageOptions:h,onPageIndexChange:l,onPageSizeChange:d,labels:m}):null,e]})}function Di({allRows:e,columnFilters:t,columnVisibilityOptions:n,compactToolbar:i,customToolbar:r,DataTableToolbar:l,description:d,descriptionId:m,effectiveToolbarActions:p,enableColumnPinning:h,enableGrouping:E,enableToolbarColumnChooser:S,enableToolbarFilterChips:A,enableToolbarResetLayout:V,enableToolbarSavedViews:B,enableDensityToggle:q,enableViewToggle:F,hiddenRowsLabel:T,labels:u,onClearColumnFilters:s,onColumnFilterChange:y,onColumnPinningChange:g,onDensityChange:C,onShowHiddenRowsChange:N,onToolbarQueryValueChange:D,reorderColumn:K,onResetColumnLayout:W,onCreateSavedView:O,onApplySavedView:R,onRenameSavedView:v,onDeleteSavedView:w,onViewModeChange:k,openFileDialog:M,selectedRowIds:I,selectedRows:G,selectionActions:x,savedViews:Z,showHiddenRows:j,table:z,title:Y,titleId:ne,toolbarQueryPlaceholder:be,toolbarQueryValue:fe,toolbarVisibility:De,density:Se,viewMode:Te}){return jsx("div",{"data-dtp-slot":"data-table-toolbar",className:"shrink-0",children:jsx(l,{title:Y,titleId:ne,description:d,descriptionId:m,toolbarQueryValue:fe,toolbarQueryPlaceholder:be,onToolbarQueryValueChange:D,reorderColumn:K,customToolbar:r,compactToolbar:i,viewMode:Te,onViewModeChange:k,enableViewToggle:F,toolbarActions:p,selectionActions:x,selectedRowIds:I,selectedRows:G,showHiddenRows:j,hiddenRowsLabel:T,onShowHiddenRowsChange:N,allRows:e,columnVisibilityOptions:n,onColumnVisibilityChange:(Ee,Ne)=>{z.getColumn(Ee)?.toggleVisibility(Ne);},enableColumnPinning:h,enableGrouping:E,enableToolbarColumnChooser:S,enableToolbarFilterChips:A,enableToolbarResetLayout:V,enableToolbarSavedViews:B,onColumnPinningChange:g,columnFilters:t,onColumnFilterChange:y,onClearColumnFilters:s,onResetColumnLayout:W,onCreateSavedView:O,onApplySavedView:R,onRenameSavedView:v,onDeleteSavedView:w,density:Se,onDensityChange:C,enableDensityToggle:q,labels:u,toolbarVisibility:De,openFileDialog:M,savedViews:Z,table:z})})}var oe={searchPlaceholder:"Search rows...",searchTable:"Search table",clearSearch:"Clear search",noRowsTitle:"No rows yet",noRowsDescription:"Create a record or refresh this view once data exists.",noMatchingRowsTitle:"No matching rows",noMatchingRowsDescription:"Try a different search term or clear filters.",tableOptions:"Show table options",columns:"Columns",filters:"Filters",clearFilters:"Clear filters",filterFrom:"From",filterTo:"To",filterTrue:"Yes",filterFalse:"No",selectedRows:e=>`${e} record${e===1?"":"s"} selected`,showHiddenRows:e=>`Show ${e}`,recordsPerPage:"Records per page",totalRecords:e=>`Total records: ${e}`,pageStatus:(e,t)=>`Page ${e+1} of ${t}`,pageStatusUnknown:e=>`Page ${e+1}`,pagination:"Pagination",morePages:"More pages",firstPage:"First page",previousPage:"Previous page",nextPage:"Next page",lastPage:"Last page",selectAllVisibleRows:"Select all visible rows",selectAllFilteredRows:"Select all filtered rows",selectRow:"Select row",selectCardRow:e=>`Select row ${e}`,switchToTableView:"Switch to table view",switchToCardView:"Switch to card view",tableView:"Table view",cardView:"Card view",allFilterOptions:"All",actions:"Actions",rowActions:"Row actions",editRow:"Edit row",saveEdit:"Save",cancelEdit:"Cancel editing",expandRow:"Expand row",collapseRow:"Collapse row",expandRowDetails:"Expand row details",collapseRowDetails:"Collapse row details",exportCsv:"Export CSV",print:"Print table",enterFullscreen:"Enter fullscreen",exitFullscreen:"Exit fullscreen",errorTitle:"Unable to load this table",errorDescription:"Try again or check your connection.",retry:"Retry",density:"Density",compactDensity:"Compact",comfortableDensity:"Comfortable",spaciousDensity:"Spacious",pinLeft:"Pin left",pinRight:"Pin right",unpin:"Unpin",pinRowToTop:"Pin row to top",pinRowToBottom:"Pin row to bottom",unpinRow:"Unpin row",resizeColumn:e=>`Resize ${e}`,grouping:"Grouping",groupBy:e=>`Group by ${e}`,ungroup:e=>`Ungroup ${e}`,removeGrouping:e=>`Remove ${e} grouping`,moveGroupingEarlier:e=>`Move ${e} grouping earlier`,moveGroupingLater:e=>`Move ${e} grouping later`,facetSearch:e=>`Search ${e} options`,searchColumns:"Search columns",showAllColumns:"Show all columns",hideAllColumns:"Hide all columns",moveColumnEarlier:e=>`Move ${e} earlier`,moveColumnLater:e=>`Move ${e} later`,resetColumnLayout:"Reset column layout",savedViews:"Saved views",createSavedView:"Create saved view",savedViewName:"View name",applySavedView:e=>`Apply saved view ${e}`,renameSavedView:e=>`Rename saved view ${e}`,deleteSavedView:e=>`Delete saved view ${e}`,saveSavedView:"Save view"};function hi(e){return {...oe,...e}}function yi({Button:e,Checkbox:t,DataTableRowActions:n,Tooltip:i,TooltipContent:r,TooltipTrigger:l,cancelEditing:d$1,columns:m,editableRows:p,editingRowId:h,editErrors:E,enableRowSelection:S,enableRowPinning:A,hasTreeExpansion:V,isSavingEdit:B,isEditDirty:q,labels:F,lastSelectedRowIdRef:T,detailPanel:u,detailExpanded:s,onDetailExpandedChange:y,rowSelectionSelectAllScope:g$1,rowActions:C,saveEdit:N,startEditingRow:D,tableRef:K}){let W=f.useCallback((O,R)=>{let v=K.current;if(!v||!T.current)return;let w=v.getRowModel().rows.filter(x=>!d(x.original)),k=w.findIndex(x=>x.id===T.current),M=w.findIndex(x=>x.id===O);if(k<0||M<0)return;let I=Math.min(k,M),G=Math.max(k,M);v.setRowSelection(x=>{let Z={...x};for(let j of w.slice(I,G+1).filter(z=>z.getCanSelect()&&z.getCanMultiSelect()))R?Z[j.id]=true:delete Z[j.id];return Z});},[T,K]);return f.useMemo(()=>{let O=[];if(V||u){let R=V&&u?80:a$1;O.push({id:"__expand__",enableResizing:false,enableSorting:false,enableHiding:false,size:R,minSize:R,maxSize:R,header:()=>jsx("span",{className:"sr-only",children:F.expandRow}),cell:({row:v,table:w})=>{let k=V&&v.getCanExpand(),M=!!(u&&(u.getRowCanExpand?.(v.original)??true));if(!k&&!M)return null;let I=v.getIsExpanded(),G=s===true||!!s[v.id];return jsxs("div",{className:"flex items-center justify-center gap-1",children:[k?jsx(e,{type:"button",variant:"ghost",size:"icon-sm","aria-label":I?F.collapseRow:F.expandRow,"aria-expanded":I,"data-tree-toggle":"true",onClick:()=>v.toggleExpanded(),children:jsx(c,{className:a$2("transition-transform",I?"rotate-0":"-rotate-90")})}):null,M?jsx(e,{type:"button",variant:"ghost",size:"icon-sm","aria-label":G?V?F.collapseRowDetails??oe.collapseRowDetails:F.collapseRow:V?F.expandRowDetails??oe.expandRowDetails:F.expandRow,"aria-expanded":G,"data-detail-toggle":"true",onClick:()=>{y(x=>b(x,v.id,w.getCoreRowModel().flatRows.map(Z=>Z.id)));},children:jsx(c,{className:a$2("transition-transform",G?"rotate-0":"-rotate-90")})}):null]})}});}return S&&O.push({id:"__select__",enableResizing:false,enableSorting:false,enableHiding:false,size:a$1,minSize:a$1,maxSize:a$1,header:({table:R})=>{let v=g$1==="filtered",w=(v?R.getFilteredRowModel().flatRows:R.getRowModel().flatRows).filter(G=>G.getCanSelect()&&G.getCanMultiSelect()),k=w.length>0&&w.every(G=>G.getIsSelected()),M=w.some(G=>G.getIsSelected()),I=v?F.selectAllFilteredRows??oe.selectAllFilteredRows:F.selectAllVisibleRows??oe.selectAllVisibleRows;return w.length===0?jsx("span",{className:"sr-only",children:I}):jsx("div",{className:"flex items-center justify-center",children:jsx(t,{className:"my-0.5",checked:k?true:M?"indeterminate":false,onCheckedChange:G=>{R.setRowSelection(x=>{let Z={...x};for(let j of w)G===true?Z[j.id]=true:delete Z[j.id];return Z});},"aria-label":I})})},cell:({row:R})=>jsx("div",{className:"flex items-center justify-center",children:jsx(t,{className:"my-0.5",checked:R.getIsSelected(),disabled:!R.getCanSelect(),onClick:v=>{if(!v.shiftKey||!T.current||!R.getCanMultiSelect()){T.current=R.id;return}v.preventDefault(),v.stopPropagation(),W(R.id,!R.getIsSelected()),T.current=R.id;},onCheckedChange:v=>{T.current=R.id,R.toggleSelected(v===true);},"aria-label":F.selectRow??oe.selectRow})})}),O.push(...m.map(R=>g(R))),(C.length||p||A)&&O.push({id:"__actions__",enableSorting:false,enableResizing:false,enableHiding:false,size:a$1,minSize:a$1,maxSize:a$1,header:()=>jsx("span",{className:"sr-only",children:F.actions}),cell:({row:R})=>{let v=R.id;return h===v?jsxs("div",{className:"flex w-full items-center justify-end gap-2",children:[E._row?jsx("span",{className:"sr-only",role:"alert",children:E._row}):null,jsx(e,{type:"button",size:"sm",disabled:B||!q,onClick:()=>{N(R.original);},children:F.saveEdit}),jsxs(i,{children:[jsx(l,{asChild:true,children:jsxs(e,{type:"button",size:"icon-sm",variant:"ghost",onClick:d$1,children:[jsx(c,{className:"rotate-45"}),jsx("span",{className:"sr-only",children:F.cancelEdit})]})}),jsx(r,{children:F.cancelEdit})]})]}):jsx("div",{className:"flex w-full items-center justify-center",children:jsx(n,{row:R.original,rowActions:C,editableRows:p,isEditing:false,onStartEditing:()=>{D(R.original,R.id);},onCancelEditing:()=>{},labels:F,rowPinning:A?{canPin:R.getCanPin(),position:R.getIsPinned(),pin:k=>R.pin(k)}:void 0})})}}),O},[e,t,n,i,r,l,d$1,m,p,s,u,E,h,S,A,V,B,q,F,T,y,g$1,C,N,W,D])}function Re({defaultValue:e,onChange:t,value:n}){let[i,r]=f.useState(e),l=n??i,d=f.useRef(l);f.useEffect(()=>{d.current=l;},[l]);let m=f.useCallback(p=>{let h=typeof p=="function"?p(d.current):p;d.current=h,t?.(h),n===void 0&&r(h);},[t,n]);return [l,m]}function Ri({enabled:e,hasMore:t,isLoadingMore:n,onLoadMore:i,onError:r}){let l=f.useRef(null),d=f.useRef(false),m=f.useEffectEvent(i),p=f.useEffectEvent(h=>{r?.(h);});return f.useEffect(()=>{if(!e||!t||n)return;let h=l.current;if(!h)return;let E=new IntersectionObserver(S=>{if(S[0].isIntersecting&&!d.current){d.current=true;let V;try{V=m();}catch(B){d.current=false,p(B);return}Promise.resolve(V).catch(B=>{p(B);}).finally(()=>{d.current=false;});}},{rootMargin:"200px 0px 200px 0px"});return E.observe(h),()=>{E.disconnect();}},[e,t,n]),l}function vi({enabled:e,maxPageIndex:t,onPageIndexChange:n,pageIndex:i,setLocalPageIndex:r}){f.useEffect(()=>{if(!e||i>=0&&i<=t)return;let l=Math.min(Math.max(i,0),t);r(l),n?.(l);},[e,t,n,i,r]);}function xi(){return f.useMemo(()=>{let e=new WeakMap;return (t,n$1,i)=>{let r=n(i);if(!r)return true;let l=t.original;if(typeof l!="object"||l===null)return n(t.getValue(n$1)).includes(r);let d=e.get(l);d||(d=new Map,e.set(l,d));let m=d.get(n$1);if(m===void 0){let p=t.getValue(n$1);m=n(p),d.set(n$1,m);}return m.includes(r)}},[])}function Ei({autoResetPageIndex:e,columnGroupPaths:t,columnResizeMode:n,dir:i$1,currentColumnFilters:r$1,currentColumnOrder:l,currentColumnPinning:d$1,currentRowPinning:m,currentColumnSizing:p,currentExpanded:h,currentGrouping:E,currentPagination:S,currentRowSelection:A$1,currentSorting:V,currentViewMode:B,defaultColumn:q,effectiveColumnVisibility:F,enableColumnResizing:T,enableMultiRowSelection:u,enableRowPinning:s,enableRowSelection:y,enableSubRowSelection:g,getRowCanSelect:C,getRowCanExpand:N,getSubRows:D,aggregationFns:K,groupedColumnMode:W,globalFilterFn:O,globalFilterValue:R,hasNextPage:v,handleColumnFiltersChange:w$1,handleColumnOrderChange:k,handleColumnPinningChange:M,handleRowPinningChange:I,handleColumnVisibilityChange:G,handleExpandedChange:x,handleGroupingChange:Z,infiniteScroll:j$1,keepPinnedRows:z,manualFiltering:Y,manualGrouping:ne,manualExpanding:be,manualPagination:fe,manualSorting:De,onActionError:Se,onPageIndexChange:Te,onPageSizeChange:Ee,pageCount:Ne,pageIndex:J,pageSize:he,paginateExpandedRows:L,filterFromLeafRows:we,maxLeafRowFilterDepth:Ge,setCurrentRowSelection:nt,setCurrentSorting:Ye,setLocalColumnSizing:ot,setLocalPagination:se,shouldRenderInitialLoading:it,tableColumns:Ve,tableData:gt,tableGetRowId:Oe,tableRef:Rt,totalRowCount:mt,virtualization:Je}){let bt=xi(),ye=f.useMemo(()=>j(Ve).map(({column:a,index:b})=>r(a,b)),[Ve]),rt=f.useMemo(()=>{let a=ye,b=a.filter(_=>!w(_)&&_!=="__spacer__"),U=new Set(b),ce=l.filter(_=>U.has(_)),ae=b.filter(_=>!ce.includes(_));return [...a.filter(_=>_==="__expand__"||_==="__select__"),...ce,...ae,...a.filter(_=>_==="__spacer__"),...a.filter(_=>_==="__actions__")]},[l,ye]),_e=f.useMemo(()=>{let a=new Set(ye),b=new Set(ye.filter(ae=>!w(ae)&&ae!=="__spacer__")),U=(d$1.left??[]).filter(ae=>b.has(ae)),ce=(d$1.right??[]).filter(ae=>b.has(ae));return {left:[...["__expand__","__select__"].filter(ae=>a.has(ae)),...U],right:[...ce,...["__actions__"].filter(ae=>a.has(ae))]}},[d$1,ye]),lt=f.useMemo(()=>{let a=new Set,b=_=>{_.forEach((et,Ot)=>{if(a.add(Oe(et,Ot)),!d(et)){let _t=D?.(et,Ot);_t?.length&&b(_t);}});};b(gt);let U=(m.top??[]).filter(_=>a.has(_)),ce=new Set(U),ae=(m.bottom??[]).filter(_=>a.has(_)&&!ce.has(_));return {top:U,bottom:ae}},[m.bottom,m.top,D,gt,Oe]),ve=f.useMemo(()=>({sorting:V,pagination:S,rowSelection:A$1,columnVisibility:F,columnFilters:r$1,globalFilter:R,expanded:h,grouping:E,columnOrder:rt,columnPinning:_e,rowPinning:lt,columnSizing:p}),[r$1,p,h,E,S,A$1,V,F,rt,_e,lt,R]),He=f.useCallback(a=>{let b=typeof a=="function"?a(S):a;(J===void 0||he===void 0)&&se(U=>({pageIndex:J===void 0?b.pageIndex:U.pageIndex,pageSize:he===void 0?b.pageSize:U.pageSize})),b.pageIndex!==S.pageIndex&&Te?.(b.pageIndex),b.pageSize!==S.pageSize&&Ee?.(b.pageSize);},[S,Te,Ee,J,he,se]),St=f.useCallback(a=>{ot(a);},[ot]),Xe=f.useMemo(()=>{let a=false,b=false;for(let{column:U}of j(Ve))a||=U.meta?.filter?.type==="faceted",b||=U.meta?.filter?.type==="numberRange";return {minMaxValues:b,uniqueValues:a}},[Ve]),de=useReactTable({data:gt,columns:Ve,getCoreRowModel:getCoreRowModel(),getFilteredRowModel:Y?void 0:getFilteredRowModel(),getFacetedRowModel:(Xe.uniqueValues||Xe.minMaxValues)&&!Y?getFacetedRowModel():void 0,getFacetedUniqueValues:Xe.uniqueValues&&!Y?getFacetedUniqueValues():void 0,getFacetedMinMaxValues:Xe.minMaxValues&&!Y?getFacetedMinMaxValues():void 0,getGroupedRowModel:E.length&&!ne?getGroupedRowModel():void 0,getSortedRowModel:De?void 0:getSortedRowModel(),getExpandedRowModel:(D||E.length)&&!be?getExpandedRowModel():void 0,getPaginationRowModel:fe||j$1?.enabled?void 0:getPaginationRowModel(),enableRowSelection:C?a=>y&&C(a.original):y,enableRowPinning:typeof s=="function"?a=>s(a.original):s,keepPinnedRows:z,enableMultiRowSelection:typeof u=="function"?a=>u(a.original):u,enableSubRowSelection:typeof g=="function"?a=>g(a.original):g,enableColumnResizing:T,columnResizeMode:n,columnResizeDirection:i$1,getRowId:Oe,getSubRows:D,getRowCanExpand:D?a=>N?.(a.original)??a.subRows.length>0:void 0,globalFilterFn:O??bt,getColumnCanGlobalFilter:a=>a.columnDef.enableGlobalFilter!==false&&typeof a.accessorFn=="function",manualSorting:De,manualGrouping:ne,manualFiltering:Y,manualExpanding:be,manualPagination:fe||!!j$1?.enabled,paginateExpandedRows:L,filterFromLeafRows:we,maxLeafRowFilterDepth:Ge,defaultColumn:q,autoResetPageIndex:e,state:ve,onSortingChange:Ye,onPaginationChange:He,onRowSelectionChange:nt,onColumnVisibilityChange:G,onColumnFiltersChange:w$1,onExpandedChange:x,onGroupingChange:Z,onColumnOrderChange:k,onColumnPinningChange:M,onRowPinningChange:I,onColumnSizingChange:St,aggregationFns:K,groupedColumnMode:W});Rt.current=de;let vt=de.getVisibleLeafColumns(),ft=f.useCallback((a,b)=>{if(a===b||!i(a,b,t))return;let U=de.getAllLeafColumns().map(ae=>ae.id).filter(ae=>!w(ae)),ce=A(l.length?l:U,a,b);k(ce);},[t,l,k,de]),Tt=de.getTopRows(),Ae=de.getBottomRows(),$e=B==="table"?de.getCenterRows():de.getRowModel().rows,wt=typeof Je=="object"?Je:void 0,Be=Je===true||wt?.enabled===true,Lt=Math.max(1,Math.floor(wt?.fallbackRowCount??20)),ke=(Be?$e.slice(0,Lt):$e).map((a,b)=>({row:a,rowIndex:b})),Ue=fe||!!j$1?.enabled,st=Ue?void 0:de.getFilteredRowModel().rows.length,dt=mt??st,Ze=!Ue||Ne!==void 0||mt!==void 0,xt=dt,je=it?1:Ne??(dt!==void 0?Math.max(1,Math.ceil(dt/S.pageSize)):Ue?S.pageIndex+(v?2:1):de.getPageCount()),Ct=Math.max(0,je-1),Nt=f.useCallback(a=>{J===void 0&&se(b=>b.pageIndex===a?b:{...b,pageIndex:a});},[J,se]);vi({enabled:!it&&!j$1?.enabled&&Ze,maxPageIndex:Ct,onPageIndexChange:Te,pageIndex:S.pageIndex,setLocalPageIndex:Nt});let Ke=f.useCallback(a=>{a!==S.pageIndex&&(Te?.(a),J===void 0&&se(b=>b.pageIndex===a?b:{...b,pageIndex:a}));},[S.pageIndex,Te,J,se]),Et=f.useCallback(a=>{S.pageIndex!==0&&Te?.(0),a!==S.pageSize&&Ee?.(a),he===void 0&&se({pageIndex:0,pageSize:a});},[S.pageIndex,S.pageSize,Te,Ee,he,se]),kt=Ri({enabled:!!j$1?.enabled,hasMore:!!j$1?.hasMore,isLoadingMore:j$1?.isLoadingMore,onLoadMore:()=>j$1?.onLoadMore(),onError:a=>{Se?.({error:a,source:"infiniteScroll"});}});return {effectivePageCount:je,footerTotalRowCount:xt,handleFooterPageIndexChange:Ke,handleFooterPageSizeChange:Et,isPageCountKnown:Ze,renderedRows:$e,topPinnedRows:Tt,bottomPinnedRows:Ae,reorderColumn:ft,rowsToRender:ke,sentinelRef:kt,table:de,virtualPaddingBottom:0,virtualPaddingTop:0,visibleLeafColumns:vt}}var Cs="data-table-pro:column-prefs:",Mi=1,ki=["visibility","sizing","order","pinning","rowPinning","density"];function Vi(e){let t=Ln(e);if(!t)return {};let n=Nn(t);if(!n)return {};let i=On(t.key),r;try{r=n.getItem(i);}catch(p){return t.onError?.({error:p,operation:"read"}),{}}if(!r)return {};let l;try{l=(t.deserialize??JSON.parse)(r);}catch(p){return t.onError?.({error:p,operation:"deserialize"}),{}}let d=t.version??Mi,m;if(Ds(l))if(l.version===d)m=l.state;else if(t.migrate)try{m=t.migrate({version:l.version,state:l.state},d);}catch(p){return t.onError?.({error:p,operation:"migrate"}),{}}else return {};else m=l;return Ii(hs(m),t.slices)}function Ai(e){let t=Ln(e);if(!t)return false;let n=Nn(t);if(!n)return false;try{return n.removeItem(On(t.key)),!0}catch(i){return t.onError?.({error:i,operation:"remove"}),false}}function Fi({key:e,persistence:t,prefs:n}){let i=t??Ln(e),r=i?Nn(i):void 0,l=i?On(i.key):void 0,d=i?.version??Mi,m=Math.max(0,i?.debounceMs??100),p=Ii(n,i?.slices),h=f.useMemo(()=>{if(!i)return {value:void 0};try{let S={version:d,state:p};return {value:(i.serialize??JSON.stringify)(S)}}catch(S){return {error:S,value:void 0}}},[i,p,d]),E=f.useEffectEvent((S,A)=>{i?.onError?.({error:S,operation:A});});f.useEffect(()=>{h.error!==void 0&&E(h.error,"serialize");},[h.error]),f.useEffect(()=>{if(!r||!l||h.value===void 0)return;let S=()=>{try{if(r.getItem(l)===h.value)return;r.setItem(l,h.value);}catch(V){E(V,"write");}};if(m===0){S();return}let A=globalThis.setTimeout(S,m);return ()=>{globalThis.clearTimeout(A);}},[m,h.value,r,l]);}function Ln(e){if(e)return typeof e=="string"?{key:e}:e}function Nn(e){if(e.storage)return e.storage;if(!(typeof window>"u"))try{return window.localStorage}catch(t){e.onError?.({error:t,operation:"read"});return}}function On(e){return `${Cs}${e}`}function Ds(e){return aa(e)&&Object.prototype.hasOwnProperty.call(e,"version")&&Object.prototype.hasOwnProperty.call(e,"state")}function Ii(e,t){let n=new Set(t??ki),i={};for(let r of ki)n.has(r)&&e[r]!==void 0&&Object.assign(i,{[r]:e[r]});return i}function hs(e){if(!aa(e))return {};let t={},n=ys(e.visibility);n&&(t.visibility=n);let i=Rs(e.sizing);i&&(t.sizing=i);let r=pa(e.order);if(r&&(t.order=r),aa(e.pinning)){let d=pa(e.pinning.left)??[],m=pa(e.pinning.right)??[];t.pinning={left:d,right:m};}let l=Ss(e.rowPinning);return l&&(t.rowPinning=l),vs(e.density)&&(t.density=e.density),t}function ys(e){if(aa(e))return Object.fromEntries(Object.entries(e).filter(t=>typeof t[1]=="boolean"))}function Rs(e){if(aa(e))return Object.fromEntries(Object.entries(e).filter(t=>typeof t[1]=="number"&&Number.isFinite(t[1])&&t[1]>=0))}function pa(e){if(Array.isArray(e))return e.filter(t=>typeof t=="string")}function Ss(e){if(aa(e))return {top:pa(e.top)??[],bottom:pa(e.bottom)??[]}}function vs(e){return e==="compact"||e==="comfortable"||e==="spacious"}function aa(e){return !!e&&typeof e=="object"&&!Array.isArray(e)}var Ps=Object.values(a).slice().sort((e,t)=>e-t);function zi(e){let t=f.useRef(0),[n,i]=f.useState(0);return f.useEffect(()=>{let r=e.current;if(!r)return;let l=(m=r.clientWidth)=>{let p=xs(m);p!==t.current&&(t.current=p,i(p));};if(l(),typeof ResizeObserver>"u")return;let d=new ResizeObserver(m=>{let p=m[0];l(p?Es(p):void 0);});return d.observe(r),()=>{d.disconnect();}},[e]),n}function xs(e){if(e<=0)return 0;let t=1;for(let n of Ps){if(ed$1??(l?{key:l}:void 0),[l,d$1]),we=f.useMemo(()=>Vi(L),[L]),[Ge,nt]=f.useState({pageIndex:u?.pagination?.pageIndex??0,pageSize:u?.pagination?.pageSize??be[0]??20}),[Ye,ot]=Re({value:Se,onChange:G,defaultValue:()=>u?.sorting??[]}),[se,it]=Re({value:ne,onChange:M,defaultValue:()=>u?.rowSelection??{}}),[Ve,gt]=Re({value:m,onChange:O,defaultValue:()=>u?.columnVisibility??we.visibility??{}}),[Oe,Rt]=Re({value:e$1,onChange:C,defaultValue:()=>u?.columnFilters??[]}),[mt,Je]=Re({value:V,onChange:v,defaultValue:()=>u?.expanded??{}}),[bt,ye]=Re({value:t,onChange:N,defaultValue:()=>u?.columnOrder??we.order??[]}),[rt,_e]=Re({value:n,onChange:D,defaultValue:()=>u?.columnPinning??we.pinning??q(p)}),[lt,ve]=Re({value:i,onChange:K,defaultValue:()=>u?.rowPinning??we.rowPinning??{top:[],bottom:[]}}),[He,St]=Re({value:r$1,onChange:W,defaultValue:()=>u?.columnSizing??we.sizing??{}}),[Xe,de]=Re({value:J,onChange:Z,defaultValue:()=>u?.viewMode??"table"}),[vt,ft]=Re({value:B,onChange:w,defaultValue:()=>u?.grouping??[]}),[Tt,Ae]=Re({value:De,onChange:I,defaultValue:()=>u?.showHiddenRows??false}),[$e,wt]=Re({value:E,onChange:R,defaultValue:()=>u?.density??we.density??"comfortable"}),Be=Ne??u?.globalFilter??"",Lt=Ee??Y.searchPlaceholder,Pt=Te??250,[ke,Ue]=f.useState(Be),st=zi(he),dt=!!x,Ze=f.useRef(Be),xt=f.useEffectEvent($=>{Ze.current=$,x?.($);});f.useEffect(()=>{Ze.current=Be,Ue(Be);},[Be]),f.useEffect(()=>{if(!dt||ke===Be||ke===Ze.current)return;let $=window.setTimeout(()=>{xt(ke);},Pt);return ()=>{window.clearTimeout($);}},[dt,ke,Pt,Be]);let je=f.useMemo(()=>({pageIndex:j$1??Ge.pageIndex,pageSize:z??Ge.pageSize}),[Ge.pageIndex,Ge.pageSize,j$1,z]),Ct=Math.max(1,y??Math.min(5,je.pageSize)),Nt=f.useDeferredValue(ke),Ke=A?g?ke:Nt:"",Et=f.useCallback($=>{de($);},[de]),kt=f.useCallback($=>{Ae($);},[Ae]),a=f.useCallback($=>{wt($);},[wt]),b=f.useCallback(()=>{k?.(0),j$1===void 0&&nt($=>$.pageIndex===0?$:{...$,pageIndex:0});},[k,j$1]),U=f.useRef({columnFilters:Oe,globalFilterValue:Ke});f.useEffect(()=>{let $=U.current,Pe=$.columnFilters!==Oe,ie=$.globalFilterValue!==Ke;U.current={columnFilters:Oe,globalFilterValue:Ke},!g&&(!Pe&&!ie||b());},[Oe,Ke,g,b]),Fi({persistence:L,prefs:{visibility:m?void 0:Ve,sizing:r$1===void 0?He:void 0,order:t?void 0:bt,pinning:n?void 0:rt,rowPinning:i===void 0?lt:void 0,density:E?void 0:$e}});let ce=f.useMemo(()=>j(p).reduce(($,{column:Pe,index:ie})=>{let ct=r(Pe,ie);return i$1(Pe.meta?.hideOn,st)&&($[ct]=false),$},{}),[p,st]),ae=f.useMemo(()=>({...Ve,...ce}),[Ve,ce]),_=f.useMemo(()=>h.filter($=>b$1($,T,Tt)),[Tt,h,T]),et=s&&_.length===0,Ot=f.useMemo(()=>c$1(Ct),[Ct]),_t=et?Ot:_,Ka=f.useCallback(($,Pe)=>d($)?e(Pe):F($,Pe),[F]),Mt=S||(fe?.length??0)>0||Object.values(se).some(Boolean),ia=f.useMemo(()=>{if(!Mt)return new Map;let $=new Map,Pe=ie=>{ie.forEach((ct,te)=>{$.set(F(ct,te),ct);let ue=q$1?.(ct,te);ue?.length&&Pe(ue);});};return Pe(_),$},[F,q$1,Mt,_]),Wa=f.useMemo(()=>Mt?Object.entries(se).filter(([,$])=>$).map(([$])=>ia.get($)).filter($=>!!$):[],[se,ia,Mt]),Qa=f.useMemo(()=>Object.entries(se).flatMap(([$,Pe])=>Pe?[$]:[]),[se]);return {containerWidth:st,currentColumnFilters:Oe,currentColumnOrder:bt,currentColumnPinning:rt,currentRowPinning:lt,currentColumnSizing:He,currentColumnVisibility:Ve,currentDensity:$e,currentExpanded:mt,currentGrouping:vt,currentPagination:je,currentRowSelection:se,currentShowHiddenRows:Tt,currentSorting:Ye,currentViewMode:Xe,effectiveColumnVisibility:ae,globalFilterValue:Ke,handleDensityChange:a,handleShowHiddenRowsChange:kt,handleViewModeChange:Et,localSearchValue:ke,resolvedLoadingRowCount:Ct,resolvedToolbarQueryPlaceholder:Lt,selectedRowIds:Qa,selectedRows:Wa,setCurrentColumnFilters:Rt,setCurrentColumnOrder:ye,setCurrentColumnPinning:_e,setCurrentRowPinning:ve,setCurrentColumnVisibility:gt,setCurrentExpanded:Je,setCurrentGrouping:ft,setCurrentRowSelection:it,setCurrentSorting:ot,setLocalColumnSizing:St,setLocalPagination:nt,setLocalSearchValue:Ue,shouldRenderInitialLoading:et,tableData:_t,tableGetRowId:Ka,toolbarFilteredData:_,visibleData:_}}var Ms={cellStyle:void 0,colStyle:void 0,fixedSide:void 0,headerStyle:void 0,isActionsColumn:false,isExpansionColumn:false,isSelectionColumn:false,isSpacerColumn:false,isUtilityColumn:false,pinnedClassName:void 0,utilityClassName:void 0};function Oi({columns:e,columnSizing:t,editableRows:n,enableRowSelection:i,hasRowActions:r$1,hasRowExpansion:l,layoutMode:d,uiClassNames:m,visibleLeafColumns:p}){let h=f.useMemo(()=>{let T=new Set;for(let{column:u,index:s}of j(e))Object.prototype.hasOwnProperty.call(u,"size")&&T.add(r(u,s));return i&&T.add("__select__"),l&&T.add("__expand__"),(r$1||n)&&T.add("__actions__"),T},[e,n,i,r$1,l]),E=f.useMemo(()=>{let T=new Map;for(let{column:u,index:s}of j(e)){let y=f$1(u);y!==void 0&&T.set(r(u,s),y);}return T},[e]),S=f.useMemo(()=>{let T=new Map,u$1=new Map,s=0;for(let g of p)u(g)==="left"&&(T.set(g.id,s),s+=Ni(g));let y=0;for(let g of [...p].reverse())u(g)==="right"&&(u$1.set(g.id,y),y+=Ni(g));return {left:T,right:u$1}},[p]),A=f.useMemo(()=>{if(d!=="fill")return;let T=p.filter(s=>!w(s.id));return T.length&&T.every(s=>h.has(s.id)||Object.prototype.hasOwnProperty.call(t,s.id))?T[T.length-1]?.id:void 0},[t,h,d,p]),V=f.useMemo(()=>{let T=new Set([...h,...Object.keys(t)]);return A&&T.delete(A),T},[t,h,A]),B=f.useMemo(()=>{let T=new Map;for(let u$1 of p){let s=u$1.id==="__select__",y=u$1.id==="__expand__",g=u$1.id==="__actions__",C=s||y||g,N=u$1.id==="__spacer__",D=E.get(u$1.id),K=u$1.id===A,W=D??(K?u$1.getSize():void 0),O=!N&&(d==="fit"||C||V.has(u$1.id)),R=O||W!==void 0?{width:O?C?a$1:u$1.getSize():void 0,minWidth:C?a$1:O?u$1.getSize():W,maxWidth:O?C?a$1:u$1.getSize():void 0}:void 0,v$1=u(u$1),w=v$1?{left:v$1==="left"?S.left.get(u$1.id):void 0,right:v$1==="right"?S.right.get(u$1.id):void 0}:void 0,k=R||w?{...R,...w}:void 0;T.set(u$1.id,{cellStyle:k,colStyle:R,fixedSide:v$1,headerStyle:k,isActionsColumn:g,isExpansionColumn:y,isSelectionColumn:s,isSpacerColumn:N,isUtilityColumn:C,pinnedClassName:v$1?v(v$1,m,{isUtilityColumn:C}):void 0,utilityClassName:C?"w-[50px] max-w-[50px] min-w-[50px] px-0":void 0});}return T},[A,V,d,E,S,m,p]),q=f.useMemo(()=>p.reduce((T,u)=>{let s=B.get(u.id),y=E.get(u.id),g=u.id===A;return s?.isUtilityColumn?T+a$1:V.has(u.id)?T+u.getSize():T+(y??(g?u.getSize():0))},0),[B,A,V,E,p]),F=f.useCallback(T=>B.get(T)??Ms,[B]);return {columnLayouts:B,explicitlySizedColumnIds:h,fillMinWidth:q,getColumnLayout:F}}function Ni(e){return w(e.id)?a$1:e.getSize()}function Hi(e,t){let n=e.classNames??{},{Button:i,Card:r,CardContent:l,CardHeader:d,Checkbox:m,Skeleton:p}=e;return function({rows:E,cardRenderer:S,cardSizing:A="fixed",cardGridClassName:V,cardClassName:B,rowActions:q,editableRows:F,detailPanel:T,detailExpanded:u,onDetailExpandedChange:s,hasCardTitle:y,rowSelection:g,onRowSelectionChange:C,enableRowSelection:N,editingRowId:D,onEditingRowIdChange:K,getRowClassName:W,onRowClick:O,getRowDraggable:R,onRowDragStart:v,onRowDragEnd:w,isLoading:k=false,loadingRowCount:M=5,labels:I}){let G=A??"fixed",x$1=V?a$2("grid",V):Vs(G),Z=a$2("min-h-0 w-full gap-4 p-1",n.cardGrid,x$1),j=z=>a$2("relative min-w-0 max-w-full gap-0 overflow-hidden bg-transparent p-0",As(G),n.cardItem,B,z);return k?jsx("div",{role:"list","data-dtp-slot":"data-table-card-grid",className:Z,children:Array.from({length:Math.max(1,M)},(z,Y)=>jsxs(r,{role:"listitem","aria-hidden":"true","data-dtp-slot":"data-table-card-item",className:j("min-h-52"),children:[y?jsxs(d,{className:"px-4 pt-4 pb-3",children:[jsx(p,{className:"h-5 w-40 max-w-[70%]"}),jsx(p,{className:"h-4 w-24 max-w-[40%]"})]}):null,jsxs(l,{className:a$2("space-y-3 pb-4",y?"":"pt-4"),children:[jsx(p,{className:"h-4 w-full"}),jsx(p,{className:"h-4 w-[82%]"}),jsx(p,{className:"h-4 w-[68%]"}),jsx(p,{className:"h-24 w-full rounded-xl"})]})]},`loading-card-${Y}`))}):jsx("div",{role:"list","data-dtp-slot":"data-table-card-grid",className:Z,children:E.map(z=>{let Y=z.id,ne=z.original,be=!!g[Y],fe=D===Y,De=q.length>0||!!F,Se=!!(T&&(T.getRowCanExpand?.(ne)??true)),Te=N||De||y,Ee=N||De||z.getCanExpand()||Se,Ne=()=>{O&&O({row:ne,rowId:Y});};return jsxs(r,{role:"listitem","data-row-id":Y,"data-tree-depth":z.depth,draggable:R?.(ne)??false,"data-dtp-slot":"data-table-card-item","data-state":be?"selected":void 0,className:j(a$2([W?.(ne,{row:ne,rowId:Y,rowIndex:z.index,isEditing:fe,isExpanded:z.getIsExpanded(),isLoading:false,isSelected:be,pinnedPosition:false})].filter(Boolean).join(" "),"transition transition-colors hover:scale-101 data-[state=selected]:scale-101",n.card,be?n.cardSelected:n.cardUnselected)),onDragStart:J=>{v?.({row:ne,rowId:Y,event:J});},onDragEnd:J=>{w?.({row:ne,rowId:Y,event:J});},children:[Te?jsx("div",{"aria-hidden":"true",className:a$2("pointer-events-none absolute inset-x-0 top-0 z-10 h-24 bg-linear-to-b opacity-0 transition-opacity group-hover/card:opacity-100",n.cardOverlay??"from-transparent via-transparent to-transparent")}):null,jsx("div",{"data-dtp-slot":"data-table-card-renderer",role:O?"button":void 0,tabIndex:O?0:void 0,className:a$2("flex min-h-0 max-w-full min-w-0 overflow-hidden rounded-[inherit] [&>*]:min-w-0",Fs(G),O&&"cursor-pointer focus-visible:outline-none"),onClick:J=>{x(J.target,J.currentTarget)||Ne();},onKeyDown:J=>{x(J.target,J.currentTarget)||(J.key==="Enter"||J.key===" ")&&(J.preventDefault(),Ne());},children:S({row:ne,rowId:Y,depth:z.depth,canExpandSubRows:z.getCanExpand(),isSubRowsExpanded:z.getIsExpanded(),toggleSubRowsExpanded:()=>z.toggleExpanded(),isSelected:be,onSelectedChange:J=>{C(_i(g,Y,J,z.getCanSelect(),z.getCanMultiSelect()));},actions:q,isEditing:fe,startEditing:()=>{K(Y);},cancelEditing:()=>{K(null);}})}),fe||!T||!(u===true||u[z.id])?null:jsx("div",{"data-dtp-slot":"data-table-card-detail-panel",className:"relative z-20 min-w-0",children:T.render({row:ne,rowId:Y,tableRow:z})}),Ee?jsxs(d,{className:"absolute inset-x-0 top-0 z-20 flex flex-row items-center gap-3 space-y-0 px-4 pt-4 pb-8",children:[N?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(m,{checked:be,disabled:!z.getCanSelect(),"aria-label":(I.selectCardRow??oe.selectCardRow)(Y),onCheckedChange:J=>{C(_i(g,Y,J===true,z.getCanSelect(),z.getCanMultiSelect()));}})}):null,z.getCanExpand()?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(i,{type:"button",size:"icon-sm",variant:"ghost","aria-label":z.getIsExpanded()?I.collapseRow:I.expandRow,"aria-expanded":z.getIsExpanded(),onClick:()=>z.toggleExpanded(),children:jsx(c,{className:a$2("transition-transform",z.getIsExpanded()?"rotate-0":"-rotate-90")})})}):null,Se?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(i,{type:"button",size:"icon-sm",variant:"ghost","aria-label":u===true||u[z.id]?z.getCanExpand()?I.collapseRowDetails??oe.collapseRowDetails:I.collapseRow:z.getCanExpand()?I.expandRowDetails??oe.expandRowDetails:I.expandRow,"aria-expanded":u===true||!!u[z.id],"data-detail-toggle":"true",onClick:()=>{s(J=>b(J,z.id,E.map(he=>he.id)));},children:jsx(c,{className:a$2("transition-transform",u===true||u[z.id]?"rotate-0":"-rotate-90")})})}):null,jsx("div",{className:"pointer-events-none min-w-0 flex-1"}),De?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(t,{row:ne,rowActions:q,editableRows:F,isEditing:fe,onStartEditing:()=>{K(Y);},onCancelEditing:()=>{K(null);},labels:I})}):null]}):null]},Y)})})}}function Vs(e){switch(e){case "content":return "flex flex-wrap items-start justify-start";case "fluid":return "grid grid-cols-[repeat(auto-fit,minmax(min(18rem,100%),1fr))]";default:return "grid grid-cols-[repeat(auto-fill,minmax(min(18rem,100%),18rem))] justify-start"}}function As(e){switch(e){case "content":return "w-fit";case "fluid":return "w-full";default:return}}function Fs(e){switch(e){case "content":return "w-fit";case "fluid":return "w-full flex-1 [&>*]:w-full";default:return "flex-1"}}function _i(e,t,n,i,r){if(!i)return e;if(n)return r?{...e,[t]:true}:{[t]:true};if(!e[t])return e;let l={...e};return delete l[t],l}function Gi(e){let t=e.classNames??{},{Empty:n,EmptyContent:i,EmptyDescription:r,EmptyHeader:l,EmptyMedia:d,EmptyTitle:m}=e;return function({title:h="No rows found",description:E="Adjust your filters or create a new record to populate this table."}){return jsxs(n,{className:`min-h-60 rounded-2xl ${t.emptyState??"border bg-transparent"}`,children:[jsxs(l,{children:[jsx(d,{variant:"icon",children:jsx(p,{})}),jsx(m,{children:h}),jsx(r,{children:E})]}),jsx(i,{})]})}}function $i(e){let t=e.classNames??{},{Pagination:n,PaginationContent:i,PaginationEllipsis:r,PaginationFirst:l,PaginationItem:d,PaginationLast:m,PaginationLink:p,PaginationNext:h,PaginationPrevious:E,Select:S,SelectContent:A,SelectGroup:V,SelectItem:B,SelectTrigger:q,SelectValue:F,Tooltip:T,TooltipContent:u,TooltipTrigger:s}=e;function y({pageIndex:C,pageCount:N,pageCountKnown:D,pageSize:K,totalRowCount:W,rowsPerPageOptions:O,onPageIndexChange:R,onPageSizeChange:v,labels:w}){let k=D?Is(C,Math.max(1,N)):[],M=C>0,I=C+1{v(Number(x));},children:[jsx(q,{"aria-label":w.recordsPerPage,className:`w-22 ${t.paginationSelectTrigger??""}`,children:jsx(F,{})}),jsx(A,{children:jsx(V,{children:O.map(x=>jsx(B,{value:String(x),children:x},x))})})]})]}),W!==void 0?jsx("div",{className:"flex shrink-0 items-center justify-center",children:jsxs("div",{className:`inline-flex items-center gap-2 px-2.5 py-1.5 text-sm ${t.paginationTotal??""}`,"aria-label":w.totalRecords(W),children:[jsx(j$1,{className:"size-4"}),jsx("span",{className:"@min-[768px]/data-table:hidden",children:W}),jsx("span",{className:"hidden @min-[768px]/data-table:inline",children:w.totalRecords(W)})]})}):null,jsxs("div",{className:"flex flex-1 items-center justify-end gap-4",children:[jsx("div",{className:`hidden text-sm @min-[768px]/data-table:inline ${t.mutedText??"opacity-70"}`,children:D?w.pageStatus(C,Math.max(1,N)):(w.pageStatusUnknown??oe.pageStatusUnknown)(C)}),jsx(n,{"aria-label":w.pagination??oe.pagination,className:"mx-0 w-auto justify-end",children:jsxs(i,{children:[jsx(d,{className:"@min-[768px]/data-table:hidden",children:jsxs(T,{children:[jsx(s,{asChild:true,children:jsx(l,{"aria-label":w.firstPage,href:"#",size:"icon-sm",showText:false,disabled:!M,onClick:x=>{x.preventDefault(),M&&R(0);},text:w.firstPage})}),jsx(u,{children:w.firstPage})]})}),jsx(d,{children:jsxs(T,{children:[jsx(s,{asChild:true,children:jsx(E,{"aria-label":w.previousPage,href:"#",size:"icon-sm",showText:false,disabled:!M,onClick:x=>{x.preventDefault(),M&&R(C-1);},text:w.previousPage})}),jsx(u,{children:w.previousPage})]})}),k.map((x,Z)=>jsx(d,{className:"hidden @min-[768px]/data-table:block",children:x==="ellipsis"?jsx(r,{text:w.morePages??oe.morePages}):jsx(p,{href:"#",isActive:x===C+1,size:"icon-sm",onClick:j=>{j.preventDefault(),R(x-1);},children:x})},`${x}-${Z}`)),jsx(d,{children:jsxs(T,{children:[jsx(s,{asChild:true,children:jsx(h,{"aria-label":w.nextPage,href:"#",size:"icon-sm",showText:false,disabled:!I,onClick:x=>{x.preventDefault(),I&&R(C+1);},text:w.nextPage})}),jsx(u,{children:w.nextPage})]})}),D?jsx(d,{className:"@min-[768px]/data-table:hidden",children:jsxs(T,{children:[jsx(s,{asChild:true,children:jsx(m,{"aria-label":w.lastPage,href:"#",size:"icon-sm",showText:false,text:w.lastPage,disabled:!I,onClick:x=>{x.preventDefault(),I&&R(G);}})}),jsx(u,{children:w.lastPage})]})}):null]})})]})]})}function g(C){return jsx("div",{className:`rounded-md border px-2 py-1 ${t.footer??""}`,children:jsx(y,{...C})})}return {DataTableFooter:g,DataTablePagination:y}}function Is(e,t){let n=e+1,i=new Set([1,t]);for(let d=Math.max(1,n-2);d<=Math.min(t,n+2);d+=1)i.add(d);let r=Array.from(i).sort((d,m)=>d-m),l=[];for(let d=0;d1&&l.push("ellipsis"),l.push(m);}return l}function ji(e){let{Button:t,DropdownMenu:n,DropdownMenuContent:i,DropdownMenuGroup:r,DropdownMenuItem:l,DropdownMenuSeparator:d,DropdownMenuTrigger:m$1,Tooltip:p,TooltipContent:h,TooltipTrigger:E}=e;return function({row:A,rowActions:V,editableRows:B,isEditing:q,onStartEditing:F,onCancelEditing:T,labels:u,rowPinning:s}){let y=V.filter(D=>d$1(D,A)),g=f.useCallback(D=>{D.stopPropagation();},[]);if(q)return jsxs(p,{children:[jsx(E,{asChild:true,children:jsxs(t,{type:"button",variant:"ghost",size:"icon-sm",onPointerDown:g,onClick:T,children:[jsx(u$1,{}),jsx("span",{className:"sr-only",children:u.cancelEdit})]})}),jsx(h,{children:u.cancelEdit})]});let C=e$2(B,A),N=s?.canPin??false;return !y.length&&!C&&!N?null:jsxs(n,{children:[jsxs(p,{children:[jsx(E,{asChild:true,children:jsx(m$1,{asChild:true,children:jsxs(t,{type:"button",variant:"ghost",size:"icon-sm",onPointerDown:g,onClick:g,children:[jsx(k,{}),jsx("span",{className:"sr-only",children:u.rowActions})]})})}),jsx(h,{children:u.rowActions})]}),jsxs(i,{align:"end",className:"w-52",children:[C?jsx(r,{children:jsxs(l,{onClick:D=>{D.stopPropagation(),F();},children:[jsx(m,{"data-icon":"inline-start"}),u.editRow]})}):null,C&&(y.length||N)?jsx(d,{}):null,N?jsx(r,{children:s?.position?jsx(l,{onClick:D=>{D.stopPropagation(),s.pin(false);},children:u.unpinRow}):jsxs(Fragment,{children:[jsx(l,{onClick:D=>{D.stopPropagation(),s?.pin("top");},children:u.pinRowToTop}),jsx(l,{onClick:D=>{D.stopPropagation(),s?.pin("bottom");},children:u.pinRowToBottom})]})}):null,N&&y.length?jsx(d,{}):null,y.length?jsx(r,{children:y.map(D=>{let K=D.icon;return jsxs(l,{disabled:D.disabled?.(A),variant:D.variant==="destructive"?"destructive":void 0,onClick:W=>{W.stopPropagation(),D.onClick(A);},children:[K?jsx(K,{"data-icon":"inline-start"}):null,c$2(D.label,A)]},D.key)})}):null]})]})}}var Ls=f.lazy(()=>import('./data-table-toolbar-operations-IDEGCKBK.js'));function Wi(e){let t=e.classNames??{},{Button:n,ButtonGroup:i,DropdownMenu:r,DropdownMenuCheckboxItem:l,DropdownMenuContent:d,DropdownMenuGroup:m,DropdownMenuItem:p,DropdownMenuLabel:h,DropdownMenuSeparator:E,DropdownMenuTrigger:S,InputGroup:A,InputGroupAddon:V,InputGroupInput:B,Tooltip:q,TooltipContent:F,TooltipTrigger:T}=e;return function({title:y,titleId:g,description:C,descriptionId:N,toolbarQueryValue:D,toolbarQueryPlaceholder:K,onToolbarQueryValueChange:W,customToolbar:O,compactToolbar:R,viewMode:v,onViewModeChange:w,enableViewToggle:k,toolbarActions:M,selectionActions:I,selectedRows:G,selectedRowIds:x,showHiddenRows:Z,hiddenRowsLabel:j,onShowHiddenRowsChange:z,allRows:Y,columnVisibilityOptions:ne,onColumnVisibilityChange:be,enableColumnPinning:fe,onColumnPinningChange:De,columnFilters:Se,onColumnFilterChange:Te,onClearColumnFilters:Ee,density:Ne,onDensityChange:J,enableDensityToggle:he,labels:L,toolbarVisibility:we,openFileDialog:Ge,enableGrouping:nt,enableToolbarColumnChooser:Ye,enableToolbarFilterChips:ot,enableToolbarResetLayout:se,enableToolbarSavedViews:it,savedViews:Ve,onResetColumnLayout:gt,onCreateSavedView:Oe,onApplySavedView:Rt,onRenameSavedView:mt,onDeleteSavedView:Je,reorderColumn:bt,table:ye}){let rt=f.useRef(null),[_e,lt]=f.useState(false),ve=t.toolbarCompactIconButton??"",He=M.filter(a=>(a.placement??"primary")==="primary"),St=M.filter(a=>a.placement==="trailing"),Xe=we?.title??true,de=we?.search??true,vt=we?.actions??true,ft=we?.trailingActions??true,Tt=we?.options??true,Ae=we?.viewToggle??true,$e=we?.customToolbar??true,wt=Xe&&!!(y||C),Be=de,Lt=vt&&He.length>0,Pt=x.length>0&&I.length>0,ke=Tt&&(ne.some(a=>a.canHide)||!!(z&&j)||fe||he||nt||Ye||se||it),Ue=Ye||se||it,st=Se.filter(a=>_n(a.value)),dt={Button:n,DropdownMenuCheckboxItem:l,DropdownMenuGroup:m,DropdownMenuItem:p,DropdownMenuLabel:h,DropdownMenuSeparator:E,InputGroup:A,InputGroupAddon:V,InputGroupInput:B},Ze=a=>jsx(f.Suspense,{fallback:null,children:jsx(Ls,{placement:a,ui:dt,labels:L,enableColumnChooser:Ye,enableFilterChips:ot,enableResetLayout:se,enableSavedViews:it,enableColumnPinning:fe,columnVisibilityOptions:ne,onColumnVisibilityChange:be,onColumnPinningChange:De,reorderColumn:bt,table:ye,onResetColumnLayout:gt,savedViews:Ve,onCreateSavedView:Oe,onApplySavedView:Rt,onRenameSavedView:mt,onDeleteSavedView:Je,toolbarQueryValue:D,onToolbarQueryValueChange:W,activeColumnFilters:st,onColumnFilterChange:Te,onClearColumnFilters:Ee})}),xt=ye.getAllLeafColumns().filter(a=>!a.id.startsWith("__")&&a.getCanGroup()),je=ye.getState().grouping.flatMap(a=>{let b=ye.getColumn(a);return b?[b]:[]}),Ct=Ae&&k&&!!w,Nt=ft&&St.length>0,Ke=$e&&!!O,Et=$e&&!!(R??O),kt=L.selectedRows(x.length);return f.useEffect(()=>{_e&&rt.current?.focus();},[_e]),!wt&&!Be&&!Lt&&!Pt&&!ke&&!Ct&&!Nt&&!Ke&&!Et?null:jsxs("div",{className:"flex flex-col gap-4 pb-0",children:[Xe&&(y||C)?jsxs("div",{className:"flex flex-col gap-1",children:[y?jsx("h2",{id:g,className:"text-lg font-semibold tracking-tight",children:y}):null,C?jsx("p",{id:N,className:`max-w-3xl text-sm ${t.mutedText??"opacity-70"}`,children:C}):null]}):null,jsxs("div",{className:"flex flex-col gap-3",children:[jsxs("div",{"data-dtp-slot":"data-table-toolbar-controls",className:"flex items-center gap-2 overflow-x-auto px-1 @min-[768px]/data-table:gap-3 @min-[768px]/data-table:overflow-visible",children:[de?jsxs(Fragment,{children:[jsx("div",{className:"hidden min-w-0 grow max-w-md @min-[768px]/data-table:block",children:jsxs(A,{className:"min-w-0",children:[jsx(B,{value:D,onChange:a=>{W(a.target.value);},placeholder:K}),jsx(V,{align:"inline-start","aria-hidden":"true",children:jsx(s$1,{})}),D?jsx(V,{align:"inline-end",children:jsx("button",{type:"button",className:`inline-flex size-5 items-center justify-center rounded-md transition-colors focus-visible:outline-none ${t.toolbarIconButton??"opacity-70 hover:opacity-100"}`,onClick:()=>{W("");},"aria-label":L.clearSearch,title:L.clearSearch,children:jsx(u$1,{})})}):null]})}),jsxs(q,{children:[jsx(T,{asChild:true,children:jsxs(n,{type:"button",variant:_e||D?"secondary":"outline",size:"icon-sm","aria-label":L.searchTable,"aria-pressed":_e,className:`shrink-0 @min-[768px]/data-table:hidden ${ve} ${t.toolbarInputButton??""}`,onClick:()=>{lt(a=>!a);},children:[jsx(s$1,{}),jsx("span",{className:"sr-only",children:L.searchTable})]})}),jsx(F,{children:L.searchTable})]})]}):null,vt?jsx("div",{className:"flex shrink-0 items-center gap-2",children:He.map(a=>{let b=!a.iconOnly&&!!a.icon,U=jsxs(n,{type:"button",className:b?`size-7 shrink-0 px-0 @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit @min-[768px]/data-table:px-2.5 ${ve}`:a.iconOnly?`size-7 shrink-0 @min-[768px]/data-table:size-8 ${ve}`:"size-7 shrink-0 @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit",variant:a.variant??"outline",size:a.iconOnly?"icon":"default",onClick:()=>{a.onClick({rows:Y,openFileDialog:Ge});},disabled:a.disabled,"aria-label":a.label,title:a.iconOnly?void 0:a.label,children:[a.icon?jsx(a.icon,{}):null,a.iconOnly?jsx("span",{className:"sr-only",children:a.label}):b?jsx("span",{className:"hidden @min-[768px]/data-table:inline",children:a.label}):jsx("span",{children:a.label})]},a.key);return a.iconOnly?jsxs(q,{children:[jsx(T,{asChild:true,children:U}),jsx(F,{children:a.label})]},a.key):U})}):null,Et?jsx("div",{"data-dtp-slot":"data-table-toolbar-compact-custom",className:"flex shrink-0 items-center gap-2 @min-[1024px]/data-table:hidden",children:R??O}):null,jsx("div",{className:"grow","aria-hidden":"true"}),jsxs("div",{"data-dtp-slot":"data-table-toolbar-end-controls",className:"flex shrink-0 items-center gap-2",children:[x.length?jsx("div",{className:`hidden text-sm @min-[768px]/data-table:block ${t.mutedText??"opacity-70"}`,children:kt}):null,x.length?I.map(a=>{let b=a.icon,U={rows:G,rowIds:x},ce=typeof a.disabled=="function"?a.disabled(G,U):a.disabled;return jsxs(q,{children:[jsx(T,{asChild:true,children:jsxs(n,{type:"button",variant:a.variant??"secondary",size:"icon-sm",className:ve,disabled:ce,onClick:()=>{a.onClick(U);},"aria-label":a.label,children:[b?jsx(b,{}):null,jsx("span",{className:"sr-only",children:a.label})]})}),jsx(F,{children:a.label})]},a.key)}):null,ke?jsxs(r,{children:[jsx(S,{asChild:true,children:jsxs(n,{type:"button",variant:"outline",size:"icon-sm","aria-label":L.tableOptions,className:`${ve} ${t.toolbarInputButton??""}`,title:L.tableOptions,children:[jsx(a$5,{}),jsx("span",{className:"sr-only",children:L.tableOptions})]})}),jsxs(d,{align:"end",className:"w-56",children:[jsx(h,{children:L.tableOptions}),jsx(m,{children:z&&j?jsx(l,{checked:Z,onCheckedChange:a=>{z(a===true);},children:L.showHiddenRows(j)}):null}),he?jsxs(Fragment,{children:[jsx(E,{}),jsx(h,{children:L.density}),jsx(m,{children:[["compact",L.compactDensity],["comfortable",L.comfortableDensity],["spacious",L.spaciousDensity]].map(([a,b])=>jsx(l,{checked:Ne===a,onCheckedChange:()=>{J(a);},children:b},a))})]}):null,Ue?Ze("menu"):null,!Ye&&ne.some(a=>a.canHide)?jsxs(Fragment,{children:[jsx(E,{}),jsx(h,{children:L.columns}),jsx(m,{children:ne.filter(a=>a.canHide).map(a=>jsx(l,{checked:a.visible,onCheckedChange:b=>{be?.(a.id,b===true);},children:a.label},a.id))})]}):null,fe&&!Ye?jsxs(Fragment,{children:[jsx(E,{}),jsxs(h,{children:[L.pinLeft," / ",L.pinRight]}),jsx(m,{children:ne.map(a=>jsxs(p,{onSelect:b=>{b.preventDefault();},children:[jsx("span",{className:"min-w-0 flex-1 truncate",children:a.label}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${L.pinLeft}: ${a.label}`,onClick:b=>{b.stopPropagation(),De(a.id,"left");},children:"L"}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${L.pinRight}: ${a.label}`,onClick:b=>{b.stopPropagation(),De(a.id,"right");},children:"R"}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${L.unpin}: ${a.label}`,onClick:b=>{b.stopPropagation(),De(a.id,false);},children:"-"})]},`pin-${a.id}`))})]}):null,nt&&xt.length?jsxs(Fragment,{children:[jsx(E,{}),jsx(h,{children:L.grouping}),jsx(m,{children:xt.map(a=>{let b=typeof a.columnDef.header=="string"?a.columnDef.header:a.id,U=a.getIsGrouped();return jsx(l,{checked:U,onCheckedChange:()=>{a.toggleGrouping();},children:U?L.ungroup(b):L.groupBy(b)},`group-${a.id}`)})})]}):null]})]}):null,Ae&&k&&w?jsxs(i,{children:[jsxs(q,{children:[jsx(T,{asChild:true,children:jsxs(n,{type:"button",variant:v==="table"?"default":"outline","aria-pressed":v==="table",className:v==="table"?ve:`${ve} ${t.toolbarInputButton??""}`,size:"icon-sm",onClick:()=>{w("table");},children:[jsx(r$1,{}),jsx("span",{className:"sr-only",children:L.switchToTableView??oe.switchToTableView})]})}),jsx(F,{children:L.tableView??oe.tableView})]}),jsxs(q,{children:[jsx(T,{asChild:true,children:jsxs(n,{type:"button",variant:v==="card"?"default":"outline","aria-pressed":v==="card",className:v==="table"?`${ve} ${t.toolbarInputButton??""}`:ve,size:"icon-sm",onClick:()=>{w("card");},children:[jsx(q$1,{}),jsx("span",{className:"sr-only",children:L.switchToCardView??oe.switchToCardView})]})}),jsx(F,{children:L.cardView??oe.cardView})]})]}):null,ft?St.map(a=>{let b=!a.iconOnly&&!!a.icon,U=jsxs(n,{type:"button",variant:a.variant??"outline",size:a.iconOnly?"icon-sm":"default",onClick:()=>{a.onClick({rows:Y,openFileDialog:Ge});},disabled:a.disabled,"aria-label":a.label,title:a.iconOnly?void 0:a.label,className:`size-7 shrink-0 ${a.iconOnly?"":`${b?"px-0 @min-[768px]/data-table:px-2.5":""} @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit`} ${a.iconOnly||b?ve:""} ${t.toolbarInputButton??""}`,children:[a.icon?jsx(a.icon,{"data-icon":a.iconOnly?void 0:"inline-start"}):null,a.iconOnly?jsx("span",{className:"sr-only",children:a.label}):b?jsx("span",{className:"hidden @min-[768px]/data-table:inline",children:a.label}):jsx("span",{children:a.label})]},a.key);return a.iconOnly?jsxs(q,{children:[jsx(T,{asChild:true,children:U}),jsx(F,{children:a.label})]},a.key):U}):null]})]}),de&&_e?jsx("div",{"data-dtp-slot":"data-table-toolbar-compact-search",className:"min-w-0 @min-[768px]/data-table:hidden",children:jsxs(A,{children:[jsx(B,{ref:rt,value:D,onChange:a=>{W(a.target.value);},placeholder:K}),jsx(V,{align:"inline-start","aria-hidden":"true",children:jsx(s$1,{})}),D?jsx(V,{align:"inline-end",children:jsx("button",{type:"button",className:`inline-flex size-5 items-center justify-center rounded-md transition-colors focus-visible:outline-none ${t.toolbarIconButton??"opacity-70 hover:opacity-100"}`,onClick:()=>{W("");},"aria-label":L.clearSearch,title:L.clearSearch,children:jsx(u$1,{})})}):null]})}):null,Se.length?jsxs("div",{"data-dtp-slot":"data-table-toolbar-filters",className:"flex min-w-0 flex-wrap items-center gap-2",children:[Se.map(a=>jsx(u,{filter:a,labels:L,onColumnFilterChange:Te},a.id)),Se.some(a=>_n(a.value))?jsx(n,{type:"button",variant:"ghost",size:"sm",onClick:Ee,children:L.clearFilters}):null]}):null,ot?Ze("chips"):null,nt&&je.length?jsxs("div",{"data-dtp-slot":"data-table-grouping-bar","aria-label":L.grouping,className:"flex flex-wrap items-center gap-2",children:[jsxs("span",{className:"text-sm opacity-70",children:[L.grouping,":"]}),je.map((a,b)=>{let U=typeof a.columnDef.header=="string"?a.columnDef.header:a.id,ce=ae=>{let _=[...ye.getState().grouping],[et]=_.splice(b,1);et!==void 0&&(_.splice(ae,0,et),ye.setGrouping(_));};return jsxs("div",{className:"inline-flex items-center rounded-md border",children:[jsx(n,{type:"button",variant:"ghost",size:"sm",disabled:b===0,onClick:()=>ce(b-1),"aria-label":L.moveGroupingEarlier(U),children:jsx("span",{"aria-hidden":"true",children:"\u2190"})}),jsxs(n,{type:"button",variant:"secondary",size:"sm",onClick:()=>a.toggleGrouping(),"aria-label":L.removeGrouping(U),children:[U," ",jsx("span",{"aria-hidden":"true",children:"\xD7"})]}),jsx(n,{type:"button",variant:"ghost",size:"sm",disabled:b===je.length-1,onClick:()=>ce(b+1),"aria-label":L.moveGroupingLater(U),children:jsx("span",{"aria-hidden":"true",children:"\u2192"})})]},`grouping-bar-${a.id}`)})]}):null]}),$e&&O?jsx("div",{"data-dtp-slot":"data-table-toolbar-desktop-custom",className:"hidden flex-row items-center gap-3 @min-[1024px]/data-table:flex",children:O}):null]})};function u({filter:s,labels:y,onColumnFilterChange:g}){let[C,N]=f.useState("");if(s.type==="text")return jsxs(A,{className:"min-w-48 max-w-64",children:[jsx(B,{value:typeof s.value=="string"?s.value:"",onChange:M=>{g(s.id,M.target.value);},placeholder:s.placeholder??s.label,"aria-label":`${y.filters}: ${s.label}`}),jsx(V,{align:"inline-start","aria-hidden":"true",children:jsx(s$1,{})})]});if(s.type==="numberRange"||s.type==="dateRange"){let M=Ns(s.value),I=s.type==="numberRange"?"number":"date",G=y.filterFrom??oe.filterFrom,x=y.filterTo??oe.filterTo;return jsxs("div",{role:"group","aria-label":`${y.filters}: ${s.label}`,className:"flex min-w-0 items-center gap-1.5",children:[jsxs(A,{className:"min-w-32 max-w-44",children:[jsx(B,{type:I,inputMode:I==="number"?"decimal":void 0,value:M.from??"",min:s.min,max:s.max,step:I==="number"?s.step:void 0,onChange:Z=>{g(s.id,{...M,from:Ki(Z.target.value,I)});},"aria-label":`${s.label}: ${G}`}),jsx(V,{align:"inline-start",children:G})]}),jsxs(A,{className:"min-w-32 max-w-44",children:[jsx(B,{type:I,inputMode:I==="number"?"decimal":void 0,value:M.to??"",min:s.min,max:s.max,step:I==="number"?s.step:void 0,onChange:Z=>{g(s.id,{...M,to:Ki(Z.target.value,I)});},"aria-label":`${s.label}: ${x}`}),jsx(V,{align:"inline-start",children:x})]})]})}let D=s.type==="boolean",K=s.type==="faceted",W=[{label:s.trueLabel??y.filterTrue??oe.filterTrue,value:"true"},{label:s.falseLabel??y.filterFalse??oe.filterFalse,value:"false"}],O=D?W:s.options,R=K&&C?O.filter(M=>M.label.toLocaleLowerCase().includes(C.toLocaleLowerCase())):O,v=typeof s.value=="string"||typeof s.value=="boolean"?String(s.value):"",w=Array.isArray(s.value)?s.value.map(String):v?[v]:[],k=w.length===0?s.label:`${s.label}: ${w.length===1?O.find(M=>M.value===String(w[0]))?.label??w[0]:w.length}`;return jsxs(r,{children:[jsx(S,{asChild:true,children:jsx(n,{type:"button",variant:"outline",size:"sm",children:k})}),jsxs(d,{align:"start",className:"w-56",children:[jsx(h,{children:s.label}),K&&s.searchable!==false?jsx("div",{className:"px-2 pb-2",children:jsxs(A,{children:[jsx(B,{value:C,onChange:M=>{N(M.target.value);},placeholder:s.searchPlaceholder??y.facetSearch(s.label),"aria-label":y.facetSearch(s.label)}),jsx(V,{align:"inline-start","aria-hidden":"true",children:jsx(s$1,{})})]})}):null,jsxs(m,{children:[s.type==="select"||D||K?jsx(p,{onClick:()=>{g(s.id,"");},children:y.allFilterOptions??oe.allFilterOptions}):null,R.map(M=>jsxs(l,{checked:w.includes(M.value),disabled:M.disabled,onCheckedChange:I=>{if(s.type==="select"||D){g(s.id,I===true?M.value:"");return}let G=new Set(w);I===true?G.add(M.value):G.delete(M.value),g(s.id,Array.from(G));},children:[jsx("span",{className:"min-w-0 flex-1 truncate",children:M.label}),M.count!==void 0?jsx("span",{className:"ml-3 tabular-nums opacity-70",children:M.count}):null]},M.value))]})]})]})}}function _n(e){return Array.isArray(e)?e.length>0:e&&typeof e=="object"?"from"in e||"to"in e?Object.values(e).some(_n):true:e!=null&&e!==""}function Ns(e){if(!e||typeof e!="object"||Array.isArray(e))return {};let t=e;return {...typeof t.from=="number"||typeof t.from=="string"?{from:t.from}:{},...typeof t.to=="number"||typeof t.to=="string"?{to:t.to}:{}}}function Ki(e,t){if(e)return t==="number"?Number(e):e}var Os=f.lazy(async()=>({default:(await import('./data-table-virtual-table-panel-GCAMBHTG.js')).DataTableVirtualTablePanel}));function Qi(e){let t=typeof e.virtualization=="object"?e.virtualization:void 0;return e.virtualization===true||t?.enabled===true?jsx(f.Suspense,{fallback:jsx(e$1,{...e,rowsToRender:e.rowsToRender.slice(0,Math.max(1,Math.floor(t?.fallbackRowCount??20)))}),children:jsx(Os,{...e})}):jsx(e$1,{...e})}var _s="data-table-pro:saved-views:";var Yi=["sorting","columnVisibility","columnFilters","grouping","columnOrder","columnPinning","rowPinning","columnSizing","density","viewMode","showHiddenRows","globalFilter"],qi=0;function jt(e){let t=$n(e);if(!e||!t)return [];let n;try{n=t.getItem(Un(e.key));}catch(d){return e.onError?.({error:d,operation:"read"}),[]}if(!n)return [];let i;try{i=(e.deserialize??JSON.parse)(n);}catch(d){return e.onError?.({error:d,operation:"deserialize"}),[]}if(!Qe(i)||!("version"in i)||!("views"in i))return [];let r=e.version??1,l=i.views;if(i.version!==r){if(!e.migrate)return [];try{l=e.migrate({version:i.version,views:i.views},r);}catch(d){return e.onError?.({error:d,operation:"migrate"}),[]}}return Array.isArray(l)?l.map(d=>Bs(d,e.slices)).filter(d=>!!d):[]}function Ji(e,t,n){let i=t.trim();if(!e||!i)return;let r=new Date().toISOString(),l={id:qs(),name:i,createdAt:r,updatedAt:r,state:Hs(n,e.slices)},d=[...jt(e),l];return Bn(e,d,"create")?Gn(l):void 0}function Xi(e,t,n){let i=n.trim();if(!e||!i)return;let r,l=jt(e).map(d=>d.id!==t?d:(r={...d,name:i,updatedAt:new Date().toISOString()},r));if(r)return Bn(e,l,"rename")?Gn(r):void 0}function Zi(e,t){if(!e)return false;let n=jt(e),i=n.filter(r=>r.id!==t);return i.length!==n.length&&Bn(e,i,"delete")}function er(e){let t=$n(e);if(!e||!t)return false;try{t.removeItem(Un(e.key));}catch(n){return e.onError?.({error:n,operation:"remove"}),false}return e.onChange?.([],"clear"),true}function Bn(e,t,n){let i=$n(e);if(!i)return false;let r;try{let d={version:e.version??1,views:t};r=(e.serialize??JSON.stringify)(d);}catch(d){return e.onError?.({error:d,operation:"serialize"}),false}try{i.setItem(Un(e.key),r);}catch(d){return e.onError?.({error:d,operation:"write"}),false}let l=t.map(Gn);return e.onChange?.(l,n),true}function Hs(e,t){let n=new Set(t??Yi),i={};for(let r of Object.keys(e))n.has(r)&&Object.assign(i,{[r]:Gs(r,e[r])});return i}function Bs(e,t){if(!(!Qe(e)||typeof e.id!="string"||!e.id||typeof e.name!="string"||!e.name.trim()||typeof e.createdAt!="string"||typeof e.updatedAt!="string"))return {id:e.id,name:e.name.trim(),createdAt:e.createdAt,updatedAt:e.updatedAt,state:tr(e.state,t)}}function tr(e,t){if(!Qe(e))return {};let n=new Set(t??Yi),i={},r=$s(e.sorting);n.has("sorting")&&r&&(i.sorting=r);let l=Us(e.pagination);n.has("pagination")&&l&&(i.pagination=l);let d=Hn(e.rowSelection);n.has("rowSelection")&&d&&(i.rowSelection=d);let m=Hn(e.columnVisibility);n.has("columnVisibility")&&m&&(i.columnVisibility=m);let p=js(e.columnFilters);n.has("columnFilters")&&p&&(i.columnFilters=p);let h=oa(e.grouping);n.has("grouping")&&h&&(i.grouping=h);let E=e.expanded===true?true:Hn(e.expanded);n.has("expanded")&&E!==void 0&&(i.expanded=E);let S=oa(e.columnOrder);n.has("columnOrder")&&S&&(i.columnOrder=S);let A=Ks(e.columnPinning);n.has("columnPinning")&&A&&(i.columnPinning=A);let V=Ws(e.rowPinning);n.has("rowPinning")&&V&&(i.rowPinning=V);let B=Qs(e.columnSizing);return n.has("columnSizing")&&B&&(i.columnSizing=B),n.has("density")&&(e.density==="compact"||e.density==="comfortable"||e.density==="spacious")&&(i.density=e.density),n.has("viewMode")&&(e.viewMode==="table"||e.viewMode==="card")&&(i.viewMode=e.viewMode),n.has("showHiddenRows")&&typeof e.showHiddenRows=="boolean"&&(i.showHiddenRows=e.showHiddenRows),n.has("globalFilter")&&typeof e.globalFilter=="string"&&(i.globalFilter=e.globalFilter),i}function Gn(e){return {...e,state:tr(e.state,Object.keys(e.state))}}function Gs(e,t){return Array.isArray(t)?t.map(n=>Qe(n)?{...n}:n):Qe(t)?e==="columnPinning"||e==="rowPinning"?{...e==="columnPinning"?{left:Array.isArray(t.left)?[...t.left]:void 0,right:Array.isArray(t.right)?[...t.right]:void 0}:{top:Array.isArray(t.top)?[...t.top]:void 0,bottom:Array.isArray(t.bottom)?[...t.bottom]:void 0}}:{...t}:t}function $s(e){if(Array.isArray(e))return e.filter(t=>Qe(t)&&typeof t.id=="string").map(t=>({id:t.id,desc:!!t.desc}))}function Us(e){if(!(!Qe(e)||!Number.isInteger(e.pageIndex)||e.pageIndex<0||!Number.isInteger(e.pageSize)||e.pageSize<1))return {pageIndex:e.pageIndex,pageSize:e.pageSize}}function js(e){if(Array.isArray(e))return e.filter(t=>Qe(t)&&typeof t.id=="string"&&Object.prototype.hasOwnProperty.call(t,"value")).map(t=>({id:t.id,value:t.value}))}function Ks(e){if(Qe(e))return {left:oa(e.left)??[],right:oa(e.right)??[]}}function Ws(e){if(Qe(e))return {top:oa(e.top)??[],bottom:oa(e.bottom)??[]}}function Hn(e){if(Qe(e))return Object.fromEntries(Object.entries(e).filter(t=>typeof t[1]=="boolean"))}function Qs(e){if(Qe(e))return Object.fromEntries(Object.entries(e).filter(t=>typeof t[1]=="number"&&Number.isFinite(t[1])&&t[1]>=0))}function oa(e){if(Array.isArray(e))return e.filter(t=>typeof t=="string")}function $n(e){if(e){if(e.storage)return e.storage;if(!(typeof window>"u"))try{return window.localStorage}catch(t){e.onError?.({error:t,operation:"read"});return}}}function qs(){return typeof globalThis.crypto?.randomUUID=="function"?globalThis.crypto.randomUUID():(qi+=1,`view-${Date.now().toString(36)}-${qi.toString(36)}`)}function Un(e){return `${_s}${e}`}function Qe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ar({columns:e,currentColumnFilters:t$1,currentColumnPinning:n,effectiveColumnVisibility:i,enableColumnFilters:r$1,handleColumnFiltersChange:l$1,handleColumnPinningChange:d,labels:m,table:p,toolbarActions:h,visibleData:E,csvExport:S}){let A=f.useMemo(()=>j(e).map(({column:s,index:y})=>{let g=r(s,y),C=s.header,N=t(s),D=typeof C=="string"?C:N?B(N):B(g),K=n.left?.includes(g)===true?"left":n.right?.includes(g)===true?"right":false;return {id:g,label:D,visible:i[g]!==false,canHide:s.enableHiding!==false,pinned:K}}),[e,n,i]),V=f.useMemo(()=>r$1===false?[]:j(e).flatMap(({column:s,index:y})=>{let g=s.meta?.filter;if(!g)return [];let C=r(s,y),N=s.header,D=t(s),K=g.label??(typeof N=="string"?N:D?B(D):B(C)),W=t$1.find(w=>w.id===C),O=g.faceting?.options,R=g.type==="numberRange"?p.getColumn(C)?.getFacetedMinMaxValues():void 0,v=g.type==="faceted"&&O?typeof O=="function"?O({rows:E}):O:g.type==="faceted"?Array.from(p.getColumn(C)?.getFacetedUniqueValues()??[]).map(([w,k])=>({label:g.faceting?.getOptionLabel?.(w)??String(w),value:String(w),count:k})):typeof g.options=="function"?g.options({rows:E}):g.options??[];return [{id:C,label:K,type:g.type,value:W?.value,placeholder:g.placeholder,options:k$1(v),searchable:g.faceting?.searchable,searchPlaceholder:g.faceting?.searchPlaceholder,trueLabel:g.trueLabel,falseLabel:g.falseLabel,min:g.min??R?.[0],max:g.max??R?.[1],step:g.step}]}),[e,t$1,r$1,p,E]),B$1=f.useCallback((s,y)=>{l$1(g=>{let C=g.filter(N=>N.id!==s);return m$1(y)&&C.push({id:s,value:y}),C});},[l$1]),q=f.useCallback(()=>{l$1([]);},[l$1]),F=f.useCallback((s,y)=>{d(g=>{let C=(g.left??[]).filter(D=>D!==s),N=(g.right??[]).filter(D=>D!==s);return y==="left"&&C.push(s),y==="right"&&N.push(s),{left:C,right:N}});},[d]),T=f.useCallback(()=>{if(S)return o({csvExport:S,table:p,labels:m})},[S,m,p]),u=f.useMemo(()=>S?[...h??[],{key:"__csv_export__",label:m.exportCsv,icon:l,placement:"trailing",onClick:T}]:h??[],[S,T,m.exportCsv,h]);return {columnVisibilityOptions:A,effectiveToolbarActions:u,handleClearColumnFilters:q,handleToolbarColumnFilterChange:B$1,handleToolbarColumnPinningChange:F,toolbarColumnFilters:V}}function or({columns:e,data:t,getRowId:n}){let i=f.useRef({columns:e,data:t,getRowId:n}),r=f.useRef(new Set);f.useEffect(()=>{if(!Ys())return;let l=i.current;l.data!==t&&nr(l.data,t)&&!r.current.has("data")&&ja(r.current,"data","The data array identity changed. Keep rows immutable and memoize unchanged data so filtering, row models, and virtual measurements can be reused."),l.columns!==e&&nr(l.columns,e)&&!r.current.has("columns")&&ja(r.current,"columns","The columns array identity changed. Memoize stable column definitions so the search index and table column model can be reused."),l.getRowId!==n&&!r.current.has("getRowId")&&ja(r.current,"getRowId","getRowId identity changed. Memoize it and return an immutable, unique id to preserve row state and virtual scroll anchoring.");let d=new Set;for(let m=0;mObject.is(n,t[i]))}function ja(e,t,n){e.add(t),console.warn(`[data-table-pro] ${n}`);}function Ys(){return globalThis.process?.env?.NODE_ENV!=="production"}var Xs=f.lazy(()=>import('./data-table-auto-page-size-EICVZJQ5.js'));function Kc(e){return Zs(e)}function Zs(e,t={}){let n=t.CardPanel??Ti,i=t.TablePanel??Qi,r$1=e.classNames??{},{rootClassName:l,Button:d,Checkbox:m,Input:p,ScrollArea:h$1,ScrollBar:E,Skeleton:S,Table:A,TableBody:V,TableCell:B,TableFooter:q$1="tfoot",TableHead:F,TableHeader:T,TableRow:u,Tooltip:s$1,TooltipContent:y,TooltipProvider:g=f.Fragment,TooltipTrigger:C}=e,N=Gi(e),D=ji(e),{DataTableFooter:K}=$i(e),W=Wi(e),O=Hi(e,D),R=f.lazy(async()=>{let{createDataTableStateOverlay:w}=await import('./data-table-state-overlay-AQ7VU6EM.js');return {default:w(e)}}),v={minSize:80,size:180,maxSize:720};return function({columns:k,data:M,getRowId:I,children:G,title:x,description:Z,toolbarQueryValue:j$1,onToolbarQueryValueChange:z,toolbarQueryPlaceholder:Y,toolbarQueryDebounceMs:ne,manualFiltering:be=false,enableToolbarQueryFiltering:fe=true,globalFilterFn:De,columnFilters:Se,onColumnFiltersChange:Te,enableColumnFilters:Ee,customToolbar:Ne,compactToolbar:J,rowsPerPageOptions:he=[10,20,50,100],totalRowCount:L,hasNextPage:we,sorting:Ge,onSortingChange:nt,manualSorting:Ye=false,grouping:ot,onGroupingChange:se,manualGrouping:it=false,enableGrouping:Ve=false,groupedColumnMode:gt="reorder",aggregationFns:Oe,pageIndex:Rt,pageSize:mt,autoPageSize:Je=false,onPageIndexChange:bt,onPageSizeChange:ye,pageCount:rt,manualPagination:_e=false,rowSelection:lt,onRowSelectionChange:ve,enableRowSelection:He=false,enableMultiRowSelection:St=true,enableSubRowSelection:Xe=true,getRowCanSelect:de,rowSelectionSelectAllScope:vt="page",expanded:ft,onExpandedChange:Tt,getSubRows:Ae,manualExpanding:$e=false,paginateExpandedRows:wt,filterFromLeafRows:Be,maxLeafRowFilterDepth:Lt,detailPanel:Pt,getRowCanExpand:ke,renderExpandedRow:Ue,columnOrder:st,onColumnOrderChange:dt,enableColumnReordering:Ze=false,columnGroupHeaderHeight:xt,columnPinning:je,onColumnPinningChange:Ct,enableColumnPinning:Nt=false,rowPinning:Ke,onRowPinningChange:Et,enableRowPinning:kt=false,keepPinnedRows:a=true,toolbarActions:b=[],selectionActions:U=[],rowActions:ce=[],csvExport:ae,clipboard:_,enableCellSelection:et=false,cellSelection:Ot,defaultCellSelection:_t,onCellSelectionChange:Ka,gridCommands:Mt,density:ia,onDensityChange:Wa,enableDensityToggle:Qa=false,columnPrefsKey:$,persistence:Pe,savedViews:ie,toolbarDataOperations:ct,initialState:te,state:ue,onStateChange:Ce,apiRef:lr,labels:Kn,summaryRows:sr=[],cardRenderer:qa,cardSizing:dr,cardGridClassName:cr,cardClassName:ur,viewMode:Wn,onViewModeChange:pr,enableViewToggle:gr=false,enablePrint:Qn=false,enableFullscreen:Ta=false,emptyState:mr,stateOverlay:Kt,isLoading:qn=false,loadingRowCount:br,getRowLoadingState:fr,hiddenRows:Yn,showHiddenRows:Jn,onShowHiddenRowsChange:Tr,infiniteScroll:wa,editableRows:Vt,columnVisibility:Xn,onColumnVisibilityChange:wr,columnSizing:Zn,onColumnSizingChange:Cr,enableColumnResizing:eo=false,columnResizeMode:Dr="onEnd",layoutMode:to="fill",stickyHeader:hr=true,showFooter:yr=true,showToolbar:ao=true,dir:Ya="ltr",flexGrow:Wt=true,toolbarVisibility:no,className:Rr,tableClassName:Sr,tableContainerClassName:oo,stripedRows:io=false,getRowClassName:ro,onRowClick:Ja,onActionError:ra,dragAndDrop:Qt,fileUpload:Dt,virtualization:Xa,accessibility:lo,interactiveGrid:Ca}){let Ht=f.useRef(null),so=f.useRef(null),co=f.useRef(null),vr=f.useRef(null),Za=f.useRef(null),Pr=f.useRef(null),[uo,en]=f.useState(0),xr=f.useId(),Er=f.useId();or({columns:k,data:M,getRowId:I}),f.useMemo(()=>s(k),[k]);let xe=f.useMemo(()=>hi(Kn),[Kn]),tn=ct===true?{columnChooser:true,savedViews:true,resetLayout:true}:ct===false?{}:ct??{},an=lo?.mode==="grid"||Ca===true||typeof Ca=="object",[At,Da]=Re({defaultValue:_t??null,onChange:Ka,value:Ot}),kr=j$1??ue?.globalFilter,Mr=Ge??ue?.sorting,Vr=ot??ue?.grouping,ha=Rt??ue?.pagination?.pageIndex,qt=mt??ue?.pagination?.pageSize,Ar=lt??ue?.rowSelection,Fr=Xn??ue?.columnVisibility,Ir=Se??ue?.columnFilters,zr=ft??ue?.expanded,Lr=st??ue?.columnOrder,Nr=je??ue?.columnPinning,Or=Ke??ue?.rowPinning,_r=Zn??ue?.columnSizing,Hr=ia??ue?.density,Br=Wn??ue?.viewMode,Gr=Jn??ue?.showHiddenRows,po=ao&&(no?.title??true),go=po&&x?xr:void 0,mo=po&&Z?Er:void 0;td(ue,{columnFilters:Se!==void 0,columnOrder:st!==void 0,columnPinning:je!==void 0,rowPinning:Ke!==void 0,columnSizing:Zn!==void 0,columnVisibility:Xn!==void 0,density:ia!==void 0,expanded:ft!==void 0,grouping:ot!==void 0,globalFilter:j$1!==void 0,pagination:Rt!==void 0||mt!==void 0,rowSelection:lt!==void 0,showHiddenRows:Jn!==void 0,sorting:Ge!==void 0,viewMode:Wn!==void 0});let $r=Le("globalFilter",z,Ce),Ur=Le("sorting",nt,Ce),jr=Le("grouping",se,Ce),Kr=Le("rowSelection",ve,Ce),Wr=Le("columnVisibility",wr,Ce),Qr=Le("columnFilters",Te,Ce),qr=Le("expanded",Tt,Ce),Yr=Le("columnOrder",dt,Ce),Jr=Le("columnPinning",Ct,Ce),Xr=Le("rowPinning",Et,Ce),Zr=Le("columnSizing",Cr,Ce),el=Le("density",Wa,Ce),tl=Le("viewMode",pr,Ce),al=Le("showHiddenRows",Tr,Ce),ya=f.useCallback(o=>{bt?.(o),Ce?.(P=>({...P,pagination:{pageIndex:o,pageSize:qt??P.pagination.pageSize}}));},[bt,Ce,qt]),nn=f.useCallback(o=>{ye?.(o),Ce?.(P=>({...P,pagination:{pageIndex:ha??P.pagination.pageIndex,pageSize:o}}));},[ye,Ce,ha]),Me=f.useCallback((o,P)=>{ed(P,o,ra);},[ra]),bo=f.useMemo(()=>ce.map(o=>({...o,onClick:P=>{Me({actionKey:o.key,row:P,source:"rowAction"},()=>o.onClick(P));}})),[ce,Me]),fo=f.useMemo(()=>Ja?o=>{Me({row:o.row,source:"rowClick"},()=>Ja(o));}:void 0,[Ja,Me]),nl=f.useCallback((o,P)=>{ra?.({error:o,row:P,source:"edit"});},[ra]),{containerWidth:ol,currentColumnFilters:Ra,currentColumnOrder:on,currentColumnPinning:Sa,currentRowPinning:rn,currentColumnSizing:va,currentColumnVisibility:To,currentDensity:la,currentExpanded:Pa,currentGrouping:ln,currentPagination:tt,currentRowSelection:xa,currentShowHiddenRows:sn,currentSorting:Ea,currentViewMode:Yt,effectiveColumnVisibility:wo,globalFilterValue:il,handleDensityChange:dn,handleShowHiddenRowsChange:cn,handleViewModeChange:un,localSearchValue:Bt,resolvedLoadingRowCount:rl,resolvedToolbarQueryPlaceholder:ll,selectedRowIds:sl,selectedRows:dl,setCurrentColumnFilters:Co,setCurrentColumnOrder:cl,setCurrentColumnPinning:Do,setCurrentRowPinning:ul,setCurrentColumnVisibility:pl,setCurrentExpanded:ho,setCurrentGrouping:gl,setCurrentRowSelection:yo,setCurrentSorting:ml,setLocalColumnSizing:bl,setLocalPagination:pn,setLocalSearchValue:gn,shouldRenderInitialLoading:mn,tableData:fl,tableGetRowId:Tl,visibleData:wl}=Li({columnFilters:Ir,columnOrder:Lr,columnPinning:Nr,rowPinning:Or,columnSizing:_r,columnPrefsKey:$,persistence:Pe,columnVisibility:Fr,columns:k,containerRef:Ht,data:M,density:Hr,enableRowSelection:He,enableToolbarQueryFiltering:fe,expanded:zr,grouping:Vr,getSubRows:Ae,getRowId:I,hiddenRows:Yn,isLoading:qn,loadingRowCount:br,manualFiltering:be,initialState:te,onColumnFiltersChange:Qr,onColumnOrderChange:Yr,onColumnPinningChange:Jr,onRowPinningChange:Xr,onColumnSizingChange:Zr,onColumnVisibilityChange:Wr,onDensityChange:el,onExpandedChange:qr,onGroupingChange:jr,onPageIndexChange:ya,onRowSelectionChange:Kr,onShowHiddenRowsChange:al,onSortingChange:Ur,onToolbarQueryValueChange:$r,onViewModeChange:tl,pageIndex:ha,pageSize:qt,resolvedLabels:xe,rowSelection:Ar,rowsPerPageOptions:he,selectionActions:U,showHiddenRows:Gr,sorting:Mr,toolbarQueryDebounceMs:ne,toolbarQueryPlaceholder:Y,toolbarQueryValue:kr,viewMode:Br}),bn=!!(Ue&&!Pt&&!Ae),Jt=Pt??(Ue?{getRowCanExpand:Ae?void 0:ke,render:Ue}:void 0),[fn,Ro]=Re({defaultValue:()=>bn?te?.expanded??{}:{},onChange:bn?ho:Jt?.onExpandedChange,value:bn?Pa:Jt?.expanded}),{cancelEditing:Tn,clearEditError:So,draftValues:Cl,editErrors:wn,editingRowId:Cn,isEditDirty:Dn,isSavingEdit:hn,saveEdit:yn,setDraftValues:Dl,setEditingRowId:hl,startEditingRow:yl}=a$3({columns:k,editableRows:Vt,onError:nl}),Rl=f.useMemo(()=>({cancel:Tn,cancelOnEscape:Vt?.cancelOnEscape!==false,clearError:So,commit:o=>{yn(o);},commitOnEnter:Vt?.commitOnEnter!==false,errors:wn,isDirty:Dn,isPending:hn}),[Tn,So,Vt?.cancelOnEscape,Vt?.commitOnEnter,wn,Dn,hn,yn]),{viewportElement:Rn,viewportHeight:Sn}=a$4(co,Yt),vo=typeof Je=="object"?Je:void 0,Sl=f.useCallback(o=>{o!==tt.pageSize&&(tt.pageIndex!==0&&ya(0),nn(o),qt===void 0&&pn({pageIndex:0,pageSize:o}));},[tt.pageIndex,tt.pageSize,ya,nn,qt,pn]),vl=Je===true||vo!==void 0,ka=f.useCallback(()=>typeof window>"u"||typeof window.print!="function"?false:(window.print(),true),[]),Ma=f.useCallback(async()=>{let o=Ht.current;return !o||typeof document>"u"?false:document.fullscreenElement?typeof document.exitFullscreen!="function"?false:(await document.exitFullscreen(),true):typeof o.requestFullscreen!="function"?false:(await o.requestFullscreen(),true)},[]),[Po,Pl]=f.useState(false);f.useEffect(()=>{if(!Ta||typeof document>"u")return;let o=()=>{Pl(document.fullscreenElement===Ht.current);};return o(),document.addEventListener("fullscreenchange",o),()=>document.removeEventListener("fullscreenchange",o)},[Ta]);let xl=f.useCallback(()=>{Dt?.disabled||so.current?.click();},[Dt?.disabled]),El=f.useCallback(o=>{Me({source:"fileUpload"},()=>Dt?.onFilesSelected(o));},[Dt,Me]),kl=yi({Button:d,Checkbox:m,DataTableRowActions:D,Tooltip:s$1,TooltipContent:y,TooltipTrigger:C,cancelEditing:Tn,columns:k,editableRows:Vt,editErrors:wn,editingRowId:Cn,enableRowSelection:He,enableRowPinning:kt,hasTreeExpansion:!!Ae,isSavingEdit:hn,isEditDirty:Dn,labels:xe,lastSelectedRowIdRef:Pr,detailPanel:Jt,detailExpanded:fn,onDetailExpandedChange:Ro,rowSelectionSelectAllScope:vt,rowActions:bo,saveEdit:yn,startEditingRow:yl,tableRef:Za}),Ml=f.useMemo(()=>h(k),[k]),{effectivePageCount:Vl,footerTotalRowCount:Al,handleFooterPageIndexChange:Fl,handleFooterPageSizeChange:Il,isPageCountKnown:zl,renderedRows:xo,topPinnedRows:Ll,bottomPinnedRows:Nl,reorderColumn:Eo,rowsToRender:Ol,sentinelRef:ko,table:X,virtualPaddingBottom:_l,virtualPaddingTop:Hl,visibleLeafColumns:vn}=Ei({autoResetPageIndex:false,columnGroupPaths:Ml,columnResizeMode:Dr,dir:Ya,currentColumnFilters:Ra,currentColumnOrder:on,currentColumnPinning:Sa,currentRowPinning:rn,currentColumnSizing:va,currentExpanded:Pa,currentGrouping:ln,currentPagination:tt,currentRowSelection:xa,currentSorting:Ea,currentViewMode:Yt,defaultColumn:v,effectiveColumnVisibility:wo,enableColumnResizing:eo,enableRowPinning:kt,enableRowSelection:He,enableMultiRowSelection:St,enableSubRowSelection:Xe,getRowCanSelect:de,getRowCanExpand:ke,getSubRows:Ae,aggregationFns:Oe,groupedColumnMode:gt,globalFilterFn:De,globalFilterValue:il,hasNextPage:we,handleColumnFiltersChange:Co,handleColumnOrderChange:cl,handleColumnPinningChange:Do,handleRowPinningChange:ul,handleColumnVisibilityChange:pl,handleExpandedChange:ho,handleGroupingChange:gl,infiniteScroll:wa,keepPinnedRows:a,manualFiltering:be,manualGrouping:it,manualExpanding:$e,manualPagination:_e,manualSorting:Ye,onActionError:ra,onPageIndexChange:ya,onPageSizeChange:nn,pageCount:rt,pageIndex:ha,pageSize:qt,paginateExpandedRows:wt,filterFromLeafRows:Be,maxLeafRowFilterDepth:Lt,setCurrentRowSelection:yo,setCurrentSorting:ml,setLocalColumnSizing:bl,setLocalPagination:pn,shouldRenderInitialLoading:mn,tableColumns:kl,tableData:fl,tableGetRowId:Tl,tableRef:Za,totalRowCount:L,virtualization:Xa}),Mo=Oi({columns:k,columnSizing:va,editableRows:!!Vt,enableRowSelection:He,hasRowActions:ce.length>0,hasRowExpansion:!!(Ae||Jt),layoutMode:to,uiClassNames:r$1,visibleLeafColumns:vn}),{explicitlySizedColumnIds:Va,fillMinWidth:Bl,getColumnLayout:Gl}=Mo,$l=f.useMemo(()=>new Set(j(k).flatMap(({column:o,index:P})=>Object.prototype.hasOwnProperty.call(o,"cell")&&typeof o.cell=="function"?[r(o,P)]:[])),[k]),Ul=vn.length,jl=f.useMemo(()=>({Checkbox:m,Input:p,Skeleton:S,TableCell:B,TableRow:u}),[]),Kl=f.useMemo(()=>j(k).some(({column:o})=>o.meta?.cardTitle),[k]),Wl=f.useCallback((o,P)=>{Va.has(o)||Object.prototype.hasOwnProperty.call(X.getState().columnSizing,o)||flushSync(()=>{X.setColumnSizing(pe=>({...pe,[o]:P}));});},[Va,X]),Ql=f.useCallback(o=>{if(Va.has(o)){X.getColumn(o)?.resetSize();return}X.setColumnSizing(P=>{if(!Object.prototype.hasOwnProperty.call(P,o))return P;let pe={...P};return delete pe[o],pe});},[Va,X]),Pn=X.getFilteredRowModel().rows.map(o=>o.original),xn=Kt?.empty??mr,Vo=typeof xn=="function"?xn({rows:Pn,toolbarQueryValue:Bt}):xn,Ao=f.useMemo(()=>Kt?{...Kt,onRetry:Kt.onRetry?()=>Me({source:"retry"},Kt.onRetry):void 0}:void 0,[Me,Kt]),Fo=Ao?.error!=null?jsx(f.Suspense,{fallback:null,children:jsx(R,{labels:xe,overlay:Ao,rows:Pn,toolbarQueryValue:Bt})}):void 0,{columnVisibilityOptions:ql,effectiveToolbarActions:Io,handleClearColumnFilters:Yl,handleToolbarColumnFilterChange:Jl,handleToolbarColumnPinningChange:Xl,toolbarColumnFilters:Zl}=ar({columns:k,currentColumnFilters:Ra,currentColumnPinning:Sa,csvExport:ae,effectiveColumnVisibility:wo,enableColumnFilters:Ee,handleColumnFiltersChange:Co,handleColumnPinningChange:Do,labels:xe,table:X,toolbarActions:b,visibleData:wl}),es=f.useMemo(()=>[...Io,...Qn?[{key:"__print__",label:xe.print,placement:"trailing",onClick:()=>{ka();}}]:[],...Ta?[{key:"__fullscreen__",label:Po?xe.exitFullscreen:xe.enterFullscreen,placement:"trailing",onClick:()=>Ma()}]:[]].map(o=>({...o,onClick:P=>{Me({actionKey:o.key,source:"toolbarAction"},()=>o.onClick(P));}})),[Io,Ta,Qn,Po,ka,xe.enterFullscreen,xe.exitFullscreen,xe.print,Me,Ma]),ts=f.useMemo(()=>U.map(o=>({...o,onClick:P=>{Me({actionKey:o.key,source:"selectionAction"},()=>o.onClick(P));}})),[Me,U]),zo=f.useMemo(()=>({sorting:Ea,pagination:tt,rowSelection:xa,columnVisibility:To,columnFilters:Ra,expanded:Pa,grouping:ln,columnOrder:on,columnPinning:Sa,rowPinning:rn,columnSizing:va,density:la,viewMode:Yt,showHiddenRows:sn,globalFilter:Bt}),[Ra,on,Sa,rn,va,To,la,Pa,ln,tt,xa,sn,Ea,Yt,Bt]),sa=f.useCallback(()=>nd(zo),[zo]),Ft=f.useCallback(o=>{o.sorting!==void 0&&X.setSorting(o.sorting),o.pagination!==void 0&&X.setPagination(o.pagination),o.rowSelection!==void 0&&X.setRowSelection(o.rowSelection),o.columnVisibility!==void 0&&X.setColumnVisibility(o.columnVisibility),o.columnFilters!==void 0&&X.setColumnFilters(o.columnFilters),o.expanded!==void 0&&X.setExpanded(o.expanded),o.grouping!==void 0&&X.setGrouping(o.grouping),o.columnOrder!==void 0&&X.setColumnOrder(o.columnOrder),o.columnPinning!==void 0&&X.setColumnPinning(o.columnPinning),o.rowPinning!==void 0&&X.setRowPinning(o.rowPinning),o.columnSizing!==void 0&&X.setColumnSizing(o.columnSizing),o.density!==void 0&&dn(o.density),o.viewMode!==void 0&&un(o.viewMode),o.showHiddenRows!==void 0&&cn(o.showHiddenRows),o.globalFilter!==void 0&&gn(o.globalFilter);},[dn,cn,un,gn,X]),Xt=f.useCallback(()=>Ai(Pe??$),[$,Pe]),En=f.useCallback(o=>{o?.clearPersistence&&Xt(),Ft({columnVisibility:te?.columnVisibility??{},columnOrder:te?.columnOrder??[],columnPinning:te?.columnPinning??q(k),rowPinning:te?.rowPinning??{top:[],bottom:[]},columnSizing:te?.columnSizing??{}});},[Xt,k,te,Ft]),Lo=f.useCallback(o=>{o?.clearPersistence&&Xt(),Ft({sorting:te?.sorting??[],pagination:te?.pagination??{pageIndex:0,pageSize:he[0]??20},rowSelection:te?.rowSelection??{},columnVisibility:te?.columnVisibility??{},columnFilters:te?.columnFilters??[],expanded:te?.expanded??{},grouping:te?.grouping??[],columnOrder:te?.columnOrder??[],columnPinning:te?.columnPinning??q(k),rowPinning:te?.rowPinning??{top:[],bottom:[]},columnSizing:te?.columnSizing??{},density:te?.density??"comfortable",viewMode:te?.viewMode??"table",showHiddenRows:te?.showHiddenRows??false,globalFilter:te?.globalFilter??""});},[Xt,k,te,Ft,he]),No=f.useCallback(()=>jt(ie),[ie]),Aa=f.useCallback(o=>Ji(ie,o,sa()),[sa,ie]),kn=f.useCallback(o=>{let P=jt(ie).find(pe=>pe.id===o);return P?(Ft(P.state),ie?.onApply?.(P),true):false},[Ft,ie]),Fa=f.useCallback((o,P)=>Xi(ie,o,P),[ie]),Ia=f.useCallback(o=>Zi(ie,o),[ie]),Oo=f.useCallback(()=>er(ie),[ie]),as=f.useMemo(()=>jt(ie),[ie,uo]),ns=f.useCallback(o=>{let P=Aa(o);return P&&en(pe=>pe+1),P},[Aa]),os=f.useCallback((o,P)=>{let pe=Fa(o,P);return pe&&en(Vn=>Vn+1),pe},[Fa]),is=f.useCallback(o=>{let P=Ia(o);return P&&en(pe=>pe+1),P},[Ia]),_o=f.useCallback(o$1=>o({csvExport:o$1??(ae||true),labels:xe,table:X}),[ae,xe,X]),Mn=f.useCallback(async o=>{let{copyDataTableToClipboard:P}=await import('./data-table-clipboard-SFXQFZS3.js');return P({clipboard:o??(_?.copy===false?false:At?{..._?.copy===true?{}:_?.copy,scope:"cellSelection"}:_?.copy??true),cellSelection:At,table:X})},[_?.copy,At,X]),Ho=f.useCallback((o,P="top")=>{try{let pe=X.getRow(o,!0);return pe.getCanPin()?(pe.pin(P),!0):!1}catch{return false}},[X]),Bo=f.useCallback(o=>{try{let P=X.getRow(o,!0);return P.getCanPin()?(P.pin(!1),!0):!1}catch{return false}},[X]);return f.useImperativeHandle(lr,()=>({getTable:()=>Za.current,getState:sa,snapshot:sa,restore:Ft,resetColumnLayout:En,resetState:Lo,clearPersistedState:Xt,getSavedViews:No,createSavedView:Aa,applySavedView:kn,renameSavedView:Fa,deleteSavedView:Ia,clearSavedViews:Oo,pinRow:Ho,unpinRow:Bo,focus:()=>{Ht.current?.focus();},scrollToRow:o=>ir(Ht.current,"row",o),scrollToColumn:o=>ir(Ht.current,"column",o),exportCsv:_o,copyToClipboard:Mn,getCellSelection:()=>At,setCellSelection:Da,clearCellSelection:()=>Da(null),print:ka,toggleFullscreen:Ma}),[kn,Xt,Oo,Mn,At,Aa,Ia,_o,No,sa,Fa,En,Lo,Ft,Ho,ka,Da,Bo,Ma]),jsx(g,{children:jsxs("div",{ref:Ht,"data-dtp-slot":"data-table-root","data-density":la,"data-dtp-striped-rows":io||void 0,"aria-busy":qn||void 0,dir:Ya,tabIndex:-1,className:a$2("@container/data-table data-table-container-query flex w-full min-w-0 flex-col",Wt?"h-full min-h-0 flex-1":"grow",l),onDragEnter:Qt?.onDragEnter,onDragOver:Qt?.onDragOver,onDragLeave:Qt?.onDragLeave,onDrop:Qt?.onDrop,onKeyDown:o=>{if(an&&Mt&&(o.ctrlKey||o.metaKey)&&o.key.toLowerCase()==="z"&&!jn(o.target)){let P=o.shiftKey?Mt.redo:Mt.undo;P&&(o.preventDefault(),Me({source:o.shiftKey?"redo":"undo"},()=>P({cellSelection:At,table:X})));return}!_?.copy||!(o.ctrlKey||o.metaKey)||o.key.toLowerCase()!=="c"||jn(o.target)||(o.preventDefault(),Me({source:"clipboardCopy"},async()=>{await Mn(_.copy===true?void 0:At&&typeof _.copy=="object"&&!_.copy.scope?{..._.copy,scope:"cellSelection"}:_.copy);}));},onPaste:o=>{let P=_?.paste;if(!P||P.enabled===false||jn(o.target))return;let pe=o.clipboardData.getData("text/plain");pe&&((P.preventDefault??true)&&o.preventDefault(),Me({source:"clipboardPaste"},async()=>{let{parseDataTableClipboardText:Vn}=await import('./data-table-clipboard-SFXQFZS3.js');return P.onPaste({table:X,text:pe,values:Vn(pe)})}));},children:[vl?jsx(f.Suspense,{fallback:null,children:jsx(Xs,{config:vo,currentPageSize:tt.pageSize,enabled:true,onPageSizeChange:Sl,viewportElement:Rn,viewportHeight:Sn})}):null,Dt?jsx("input",{ref:so,className:"hidden",type:"file",accept:Dt.accept,multiple:Dt.multiple??true,disabled:Dt.disabled,onChange:o=>{let P=o.currentTarget.files;P?.length&&El(P),o.currentTarget.value="";}}):null,jsx("div",{"data-dtp-slot":"data-table-layout",className:a$2("flex w-full flex-col",Wt?"min-h-0 flex-1":"grow"),children:jsxs("div",{"data-dtp-slot":"data-table-main",className:a$2("flex w-full flex-col gap-4",Wt?"min-h-0 flex-1":"grow",Rr),children:[ao?jsx(Di,{allRows:Pn,columnFilters:Zl,columnVisibilityOptions:ql,compactToolbar:J,customToolbar:Ne,DataTableToolbar:W,density:la,description:Z,descriptionId:mo,effectiveToolbarActions:es,enableColumnPinning:Nt,enableGrouping:Ve,enableToolbarColumnChooser:tn.columnChooser===true,enableToolbarFilterChips:!!ct,enableToolbarResetLayout:tn.resetLayout===true,enableToolbarSavedViews:tn.savedViews===true&&!!ie,enableDensityToggle:Qa,enableViewToggle:gr&&!!qa,hiddenRowsLabel:Yn?.label,labels:xe,onClearColumnFilters:Yl,onColumnFilterChange:Jl,onColumnPinningChange:Xl,onDensityChange:dn,onShowHiddenRowsChange:cn,onToolbarQueryValueChange:gn,reorderColumn:Eo,onResetColumnLayout:En,onCreateSavedView:ns,onApplySavedView:kn,onRenameSavedView:os,onDeleteSavedView:is,onViewModeChange:un,openFileDialog:Dt?xl:void 0,selectedRowIds:sl,selectedRows:dl,selectionActions:ts,savedViews:as,showHiddenRows:sn,table:X,title:x,titleId:go,toolbarQueryPlaceholder:ll,toolbarQueryValue:Bt,toolbarVisibility:no,viewMode:Yt}):null,jsx("div",{"data-dtp-slot":"data-table-content",className:a$2(Wt?"flex min-h-0 flex-1 flex-col":""),children:Yt==="card"&&qa?jsx(n,{cardClassName:ur,cardGridClassName:cr,cardSizing:dr,cardRenderer:qa,containerWidth:ol,currentDetailExpanded:fn,currentRowSelection:xa,DataTableCardView:O,DataTableEmptyState:N,dragAndDrop:Qt,editableRows:Vt,editingRowId:Cn,emptyNode:Vo,stateOverlayNode:Fo,enableRowSelection:He,flexGrow:Wt,getRowClassName:ro,hasCardTitle:Kl,infiniteScroll:wa,localSearchValue:Bt,onRowClick:fo,renderedRows:xo,detailPanel:Jt,resolvedLabels:xe,resolvedLoadingRowCount:rl,rowActions:bo,ScrollArea:h$1,sentinelRef:ko,setCurrentDetailExpanded:Ro,setCurrentRowSelection:yo,setEditingRowId:hl,shouldRenderInitialLoading:mn,tableContainerClassName:oo,uiClassNames:r$1,virtualization:Xa}):jsx(i,{ariaDescribedBy:mo,ariaLabelledBy:go,bodyRowComponents:jl,columnLayouts:Mo.columnLayouts,currentDensity:la,columnGroupHeaderHeight:xt,currentDetailExpanded:fn,currentSorting:Ea,dir:Ya,DataTableEmptyState:N,dragAndDrop:Qt,draggedColumnIdRef:vr,draftValues:Cl,editingRowId:Cn,editingContext:Rl,emptyNode:Vo,stateOverlayNode:Fo,enableColumnReordering:Ze,enableColumnResizing:eo,explicitCustomCellColumnIds:$l,fillMinWidth:Bl,flexGrow:Wt,getColumnLayout:Gl,getRowClassName:ro,getRowLoadingState:fr,infiniteScroll:wa,layoutMode:to,localSearchValue:Bt,onRowClick:fo,primeColumnForResize:Wl,renderedRows:xo,detailPanel:Jt,topPinnedRows:Ll,bottomPinnedRows:Nl,reorderColumn:Eo,resetColumnSize:Ql,resolvedLabels:xe,rowsToRender:Ol,ScrollArea:h$1,ScrollBar:E,sentinelRef:ko,setDraftValues:Dl,shouldRenderInitialLoading:mn,stickyHeader:hr,stripedRows:io,summaryRows:sr,table:X,tableClassName:Sr,tableContainerClassName:oo,Table:A,TableBody:V,TableCell:B,TableFooter:q$1,TableHead:F,TableHeader:T,TableRow:u,tableScrollContainerRef:co,tableScrollElement:Rn,uiClassNames:r$1,viewportHeight:Sn,virtualization:Xa,gridMode:an,gridPageSize:lo?.pageSize??(typeof Ca=="object"?Ca.pageSize:void 0),cellSelectionEnabled:an&&(et||Ot!==void 0||_t!==void 0),cellSelection:At,onCellSelectionChange:Da,gridRowOffset:_e?tt.pageIndex*tt.pageSize:0,totalRowCount:L,virtualPaddingBottom:_l,virtualPaddingTop:Hl,visibleLeafColumnCount:Ul,visibleLeafColumns:vn})}),jsx(wi,{currentPagination:tt,DataTableFooter:K,effectivePageCount:Vl,footerTotalRowCount:Al,handleFooterPageIndexChange:Fl,handleFooterPageSizeChange:Il,labels:xe,pageCountKnown:zl,rowsPerPageOptions:he,showFooter:yr&&!wa?.enabled,children:G})]})})]})})}}function ed(e,t,n){let i;try{i=e();}catch(r){n?.({...t,error:r});return}Promise.resolve(i).catch(r=>{n?.({...t,error:r});});}function Le(e,t,n){let i=f.useCallback(r=>{t?.(r),n?.(l=>({...l,[e]:r}));},[e,t,n]);return t||n?i:void 0}function td(e,t){let n=f.useRef(new Set);f.useEffect(()=>{if(!(!e||!ad()))for(let i of Object.keys(t))e[i]===void 0||!t[i]||n.current.has(i)||(n.current.add(i),console.warn(`[data-table-pro] Both state.${i} and its legacy controlled prop were provided. The legacy prop takes precedence during the 4.x compatibility window.`));},[t,e]);}function ad(){return globalThis.process?.env?.NODE_ENV!=="production"}function nd(e){return {sorting:e.sorting.map(t=>({...t})),pagination:{...e.pagination},rowSelection:{...e.rowSelection},columnVisibility:{...e.columnVisibility},columnFilters:e.columnFilters.map(t=>({...t})),expanded:typeof e.expanded=="boolean"?e.expanded:{...e.expanded},grouping:[...e.grouping??[]],columnOrder:[...e.columnOrder],columnPinning:{left:e.columnPinning.left?[...e.columnPinning.left]:void 0,right:e.columnPinning.right?[...e.columnPinning.right]:void 0},rowPinning:{top:e.rowPinning.top?[...e.rowPinning.top]:void 0,bottom:e.rowPinning.bottom?[...e.rowPinning.bottom]:void 0},columnSizing:{...e.columnSizing},density:e.density,viewMode:e.viewMode,showHiddenRows:e.showHiddenRows,globalFilter:e.globalFilter}}function ir(e,t,n){if(!e)return false;let i=t==="row"?"data-row-id":"data-column-id",r=Array.from(e.querySelectorAll(`[${i}]`)).find(l=>l.getAttribute(i)===n);return r?(r.scrollIntoView?.({block:"nearest",inline:"nearest"}),true):false}function jn(e){return e instanceof HTMLElement?e.isContentEditable||e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement:false}export{Ti as a,wi as b,Di as c,yi as d,Re as e,Ei as f,Li as g,Oi as h,Kc as i,Zs as j};//# sourceMappingURL=chunk-JNI3CH7M.js.map +//# sourceMappingURL=chunk-JNI3CH7M.js.map \ No newline at end of file diff --git a/dist/chunk-4UITEBLL.js.map b/dist/chunk-JNI3CH7M.js.map similarity index 99% rename from dist/chunk-4UITEBLL.js.map rename to dist/chunk-JNI3CH7M.js.map index f07ccaa..a3a7f22 100644 --- a/dist/chunk-4UITEBLL.js.map +++ b/dist/chunk-JNI3CH7M.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/core/data-table/data-table-base-card-panel.tsx","../src/core/data-table/data-table-card-panel.tsx","../src/core/data-table/data-table-footer-section.tsx","../src/core/data-table/data-table-toolbar-section.tsx","../src/core/data-table/data-table-labels.ts","../src/core/data-table/use-data-table-columns.tsx","../src/core/data-table/use-controllable-state.ts","../src/core/data-table/use-data-table-infinite-scroll.ts","../src/core/data-table/use-data-table-pagination-clamp.ts","../src/core/data-table/use-data-table-search-index.ts","../src/core/data-table/use-data-table-instance.ts","../src/core/data-table/use-data-table-column-prefs.ts","../src/core/data-table/use-data-table-container-width.ts","../src/core/data-table/use-data-table-state.ts","../src/core/data-table/use-column-layout.ts","../src/core/data-table/create-data-table-card-view.tsx","../src/core/data-table/create-data-table-empty-state.tsx","../src/core/data-table/create-data-table-pagination.tsx","../src/core/data-table/create-data-table-row-actions.tsx","../src/core/data-table/create-data-table-toolbar.tsx","../src/core/data-table/data-table-table-panel-router.tsx","../src/core/data-table/data-table-saved-views.ts","../src/core/data-table/use-data-table-toolbar-features.ts","../src/core/data-table/use-data-table-performance-diagnostics.ts","../src/core/data-table/create-data-table.tsx"],"names":["DataTableBaseCardPanel","cardClassName","cardGridClassName","cardSizing","cardRenderer","currentRowSelection","currentDetailExpanded","DataTableCardView","DataTableEmptyState","dragAndDrop","editableRows","editingRowId","emptyNode","enableRowSelection","flexGrow","getRowClassName","hasCardTitle","infiniteScroll","localSearchValue","onRowClick","renderedRows","detailPanel","resolvedLabels","resolvedLoadingRowCount","rowActions","ScrollArea","sentinelRef","setCurrentDetailExpanded","setCurrentRowSelection","setEditingRowId","shouldRenderInitialLoading","stateOverlayNode","tableContainerClassName","uiClassNames","shouldRenderCards","cardScrollContainerRef","fi","renderCardView","rows","options","jsx","jsxs","cn","LazyDataTableVirtualCardPanel","Ha","DataTableCardPanel","props","config","DataTableFooterSection","children","currentPagination","DataTableFooter","effectivePageCount","footerTotalRowCount","handleFooterPageIndexChange","handleFooterPageSizeChange","labels","pageCountKnown","rowsPerPageOptions","showFooter","DataTableToolbarSection","allRows","columnFilters","columnVisibilityOptions","compactToolbar","customToolbar","DataTableToolbar","description","descriptionId","effectiveToolbarActions","enableColumnPinning","enableGrouping","enableToolbarColumnChooser","enableToolbarFilterChips","enableToolbarResetLayout","enableToolbarSavedViews","enableDensityToggle","enableViewToggle","hiddenRowsLabel","onClearColumnFilters","onColumnFilterChange","onColumnPinningChange","onDensityChange","onShowHiddenRowsChange","onToolbarQueryValueChange","reorderColumn","onResetColumnLayout","onCreateSavedView","onApplySavedView","onRenameSavedView","onDeleteSavedView","onViewModeChange","openFileDialog","selectedRowIds","selectedRows","selectionActions","savedViews","showHiddenRows","table","title","titleId","toolbarQueryPlaceholder","toolbarQueryValue","toolbarVisibility","density","viewMode","columnId","visible","DATA_TABLE_DEFAULT_LABELS","count","label","pageIndex","pageCount","rowId","columnLabel","name","resolveDataTableLabels","useDataTableColumns","Button","Checkbox","DataTableRowActions","Tooltip","TooltipContent","TooltipTrigger","cancelEditing","columns","editErrors","enableRowPinning","hasTreeExpansion","isSavingEdit","isEditDirty","lastSelectedRowIdRef","detailExpanded","onDetailExpandedChange","rowSelectionSelectAllScope","saveEdit","startEditingRow","tableRef","selectRowRange","Ga","targetRowId","selected","tableInstance","row","isDataTableLoadingRow","startIndex","endIndex","from","to","current","next","item","defs","expansionColumnSize","UTILITY_COLUMN_SIZE","canExpandTree","canExpandDetail","isTreeExpanded","isDetailExpanded","IconChevronDown","toggleDataTableExpandedState","selectsFilteredRows","selectableRows","allSelected","someSelected","checked","event","column","decorateFilterableColumn","position","useControllableState","defaultValue","onChange","value","uncontrolledValue","setUncontrolledValue","It","currentValue","currentValueRef","setValue","updater","nextValue","useDataTableInfiniteScroll","enabled","hasMore","isLoadingMore","onLoadMore","onError","zt","isRequestInFlightRef","onLoadMoreEvent","onErrorEvent","error","target","observer","entries","result","useDataTablePaginationClamp","maxPageIndex","onPageIndexChange","setLocalPageIndex","Si","nextPageIndex","useDataTableSearchIndex","Pi","valuesByRow","filterValue","query","normalizeDataTableSearchText","original","valuesByColumn","text","useDataTableInstance","autoResetPageIndex","columnGroupPaths","columnResizeMode","dir","currentColumnFilters","currentColumnOrder","currentColumnPinning","currentRowPinning","currentColumnSizing","currentExpanded","currentGrouping","currentSorting","currentViewMode","defaultColumn","effectiveColumnVisibility","enableColumnResizing","enableMultiRowSelection","enableSubRowSelection","getRowCanSelect","getRowCanExpand","getSubRows","aggregationFns","groupedColumnMode","globalFilterFn","globalFilterValue","hasNextPage","handleColumnFiltersChange","handleColumnOrderChange","handleColumnPinningChange","handleRowPinningChange","handleColumnVisibilityChange","handleExpandedChange","handleGroupingChange","keepPinnedRows","manualFiltering","manualGrouping","manualExpanding","manualPagination","manualSorting","onActionError","onPageSizeChange","pageSize","paginateExpandedRows","filterFromLeafRows","maxLeafRowFilterDepth","setCurrentSorting","setLocalColumnSizing","setLocalPagination","tableColumns","tableData","tableGetRowId","totalRowCount","virtualization","cachedGlobalFilterFn","generatedColumnIds","ze","getDataTableLeafColumns","index","getColumnId","effectiveColumnOrder","columnIds","dataColumnIds","isUtilityColumnId","dataColumnIdSet","orderedDataColumnIds","unorderedDataColumnIds","effectiveColumnPinning","columnIdSet","dataLeft","dataRight","effectiveRowPinning","availableRowIds","visitRows","subRows","top","topIds","bottom","tableState","handlePaginationChange","handleColumnSizingChange","facetingNeeds","uniqueValues","minMaxValues","useReactTable","getCoreRowModel","getFilteredRowModel","getFacetedRowModel","getFacetedUniqueValues","getFacetedMinMaxValues","getGroupedRowModel","getSortedRowModel","getExpandedRowModel","getPaginationRowModel","visibleLeafColumns","sourceColumnId","targetColumnId","canReorderDataTableColumn","defaultOrder","nextOrder","moveColumnInOrder","topPinnedRows","bottomPinnedRows","virtualizationConfig","virtualRowsEnabled","fallbackRowCount","rowsToRender","rowIndex","usesManualRows","derivedTotalRowCount","effectiveTotalRowCount","isPageCountKnown","nextPageSize","STORAGE_PREFIX","DEFAULT_VERSION","ALL_SLICES","readDataTableColumnPrefs","input","resolvePersistenceConfig","storage","resolveStorage","storageKey","getStorageKey","parsed","targetVersion","candidate","isPersistencePayload","selectPersistenceSlices","validateDataTableColumnPrefs","clearDataTableColumnPrefs","usePersistDataTableColumnPrefs","key","persistence","prefs","version","debounceMs","selectedState","serialized","Ut","payload","operation","write","timeout","isRecord","slices","slice","visibility","validateBooleanRecord","sizing","validateSizingRecord","order","validateStringArray","left","right","rowPinning","validateRowPinning","isDataTableDensity","entry","BREAKPOINT_WIDTHS","DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS","first","second","useDataTableContainerWidth","containerRef","widthRef","na","width","setWidth","element","updateWidth","inlineSize","nextWidth","quantizeDataTableContainerWidth","getResizeObserverInlineSize","bucket","breakpointWidth","contentBoxSize","size","getInlineSize","useDataTableState","columnOrder","columnPinning","columnSizing","columnPrefsKey","columnVisibility","data","enableToolbarQueryFiltering","expanded","grouping","getRowId","hiddenRows","initialState","isLoading","loadingRowCount","onColumnFiltersChange","onColumnOrderChange","onRowPinningChange","onColumnSizingChange","onColumnVisibilityChange","onExpandedChange","onGroupingChange","onRowSelectionChange","onSortingChange","rowSelection","sorting","toolbarQueryDebounceMs","persistenceConfig","ee","persistedColumnPrefs","localPagination","currentColumnVisibility","setCurrentColumnVisibility","setCurrentColumnFilters","setCurrentExpanded","setCurrentColumnOrder","setCurrentColumnPinning","getInitialColumnPinning","setCurrentRowPinning","setCurrentColumnSizing","setCurrentViewMode","setCurrentGrouping","currentShowHiddenRows","setCurrentShowHiddenRows","currentDensity","setCurrentDensity","resolvedToolbarQueryValue","resolvedToolbarQueryPlaceholder","resolvedToolbarQueryDebounceMs","setLocalSearchValue","containerWidth","hasOnSearchValueChange","lastReportedSearchValueRef","onToolbarQueryValueChangeEvent","deferredSearchValue","handleViewModeChange","nextViewMode","handleShowHiddenRowsChange","nextShowHiddenRows","handleDensityChange","nextDensity","resetPageIndexForFilterChange","lastFilterStateRef","previous","filtersChanged","globalFilterChanged","responsiveColumnVisibility","isHiddenAtContainerWidth","visibleData","isRowVisible","loadingRows","createDataTableLoadingRows","getDataTableLoadingRowId","shouldResolveSelectedRows","rowById","currentRows","EMPTY_COLUMN_LAYOUT","useColumnLayout","hasRowActions","hasRowExpansion","layoutMode","explicitlySizedColumnIds","ut","ids","minimumColumnWidths","widths","configuredMinWidth","getConfiguredColumnMinWidth","pinnedColumns","leftOffset","getFixedSide","getColumnLayoutSize","rightOffset","fillColumnId","dataColumns","fixedWidthColumnIds","columnLayouts","layouts","isSelectionColumn","isExpansionColumn","isActionsColumn","isUtilityColumn","isSpacerColumn","isFlexibleFillColumn","columnMinWidth","shouldFixWidth","baseStyle","fixedSide","pinnedStyle","cellStyle","getPinnedColumnClassName","fillMinWidth","total","layout","getColumnLayout","createDataTableCardView","ui","Card","CardContent","CardHeader","Skeleton","onEditingRowIdChange","getRowDraggable","onRowDragStart","onRowDragEnd","resolvedCardSizing","resolvedCardGridClassName","getCardGridClassName","cardGridClasses","cardItemClasses","stateClassName","getCardItemClassName","_","originalRow","isSelected","isEditing","hasCardActions","showCardGradient","showCardOverlayControls","handleCardActivate","getCardRendererClassName","isDataTableInteractiveTarget","updateRowSelection","canSelect","canMultiSelect","nextSelection","createDataTableEmptyState","Empty","EmptyContent","EmptyDescription","EmptyHeader","EmptyMedia","EmptyTitle","IconInbox","createDataTablePagination","Pagination","PaginationContent","PaginationEllipsis","PaginationFirst","PaginationItem","PaginationLast","PaginationLink","PaginationNext","PaginationPrevious","Select","SelectContent","SelectGroup","SelectItem","SelectTrigger","SelectValue","DataTablePagination","pages","getVisiblePages","canGoPrevious","canGoNext","lastPageIndex","option","IconDatabase","currentPageIndex","currentPage","page","orderedPages","items","createDataTableRowActions","DropdownMenu","DropdownMenuContent","DropdownMenuGroup","DropdownMenuItem","DropdownMenuSeparator","DropdownMenuTrigger","onStartEditing","onCancelEditing","actions","action","canUseRowAction","stopRowClickPropagation","Ui","IconX","allowEdit","canEditRow","canPin","IconDots","IconEdit","Fragment","Icon","resolveRowActionLabel","LazyToolbarDataOperations","at","createDataTableToolbar","ButtonGroup","DropdownMenuCheckboxItem","DropdownMenuLabel","InputGroup","InputGroupAddon","InputGroupInput","toolbarActions","compactSearchInputRef","isCompactSearchVisible","setIsCompactSearchVisible","compactToolbarIconButtonClassName","primaryActions","trailingActions","showTitle","showSearch","showActions","showTrailingActions","showOptions","showViewToggle","showCustomToolbar","hasVisibleTitle","hasVisibleSearch","hasVisiblePrimaryActions","hasVisibleSelectionActions","hasVisibleOptions","hasToolbarOperationsMenu","activeColumnFilters","filter","hasColumnFilterValue","toolbarOperationsUi","renderToolbarDataOperations","placement","groupableColumns","groupedColumns","id","hasVisibleViewToggle","hasVisibleTrailingActions","hasVisibleCustomToolbar","hasVisibleCompactToolbar","selectedRowCountLabel","IconSearch","collapsesToIcon","button","context","disabled","IconAdjustmentsHorizontal","isGrouped","IconList","IconLayoutGrid","ToolbarColumnFilterControl","groupingIndex","moveGrouping","nextIndex","nextGrouping","groupingId","facetQuery","setFacetQuery","range","normalizeToolbarRangeValue","inputType","fromLabel","toLabel","parseRangeInputValue","isBoolean","isFaceted","booleanOptions","visibleOptions","selectedValue","selectedValues","selectedLabel","nextValues","LazyDataTableVirtualTablePanel","Ua","DataTableTablePanelRouter","DataTableTablePanel","DEFAULT_SLICES","fallbackId","readDataTableSavedViews","view","validateSavedView","createDataTableSavedView","state","normalizedName","now","createSavedViewId","selectSavedViewSlices","views","writeViews","cloneSavedView","renameDataTableSavedView","renamed","deleteDataTableSavedView","clearDataTableSavedViews","snapshots","snapshot","cloneStateSlice","validateState","validateSorting","pagination","validatePagination","filters","validateFilters","pinning","validatePinning","useDataTableToolbarFeatures","enableColumnFilters","csvExport","yt","header","accessorKey","getAccessorKey","startCase","pinned","toolbarColumnFilters","configuredFacetOptions","facetedMinMax","rawOptions","normalizeColumnFilterOptions","handleToolbarColumnFilterChange","hasFilterValue","handleClearColumnFilters","handleToolbarColumnPinningChange","side","handleCsvExport","exportDataTableCsv","IconDownload","useDataTablePerformanceDiagnostics","fa","warned","isDevelopmentEnvironment","last","haveSameItems","warn","message","DataTableAutoPageSize","createDataTable","createDataTableWithPanels","rootClassName","Input","ScrollBar","Table","TableBody","TableCell","TableFooter","TableHead","TableHeader","TableRow","TooltipProvider","DataTableStateOverlay","createDataTableStateOverlay","autoPageSize","renderExpandedRow","enableColumnReordering","columnGroupHeaderHeight","clipboard","enableCellSelection","cellSelection","defaultCellSelection","onCellSelectionChange","gridCommands","toolbarDataOperations","unifiedState","onStateChange","apiRef","summaryRows","enablePrint","enableFullscreen","emptyState","stateOverlay","getRowLoadingState","stickyHeader","showToolbar","className","tableClassName","stripedRows","fileUpload","accessibility","interactiveGrid","fileInputRef","tableScrollContainerRef","draggedColumnIdRef","toolbarSavedViewsVersion","setToolbarSavedViewsVersion","generatedTitleId","generatedDescriptionId","validateDataTableColumnIds","toolbarOperations","gridMode","currentCellSelection","setCurrentCellSelection","resolvedSorting","resolvedGrouping","resolvedPageIndex","resolvedPageSize","resolvedRowSelection","resolvedColumnVisibility","resolvedColumnFilters","resolvedExpanded","resolvedColumnOrder","resolvedColumnPinning","resolvedRowPinning","resolvedColumnSizing","resolvedDensity","resolvedViewMode","resolvedShowHiddenRows","showTableHeading","useDataTableStateConflictWarnings","handleToolbarQueryValueChange","useDataTableStateSliceChange","handleSortingPropChange","handleGroupingPropChange","handleRowSelectionPropChange","handleColumnVisibilityPropChange","handleColumnFiltersPropChange","handleExpandedPropChange","handleColumnOrderPropChange","handleColumnPinningPropChange","handleRowPinningPropChange","handleColumnSizingPropChange","handleDensityPropChange","handleViewModePropChange","handleShowHiddenRowsPropChange","handlePageIndexPropChange","handlePageSizePropChange","runAction","runDataTableAction","guardedRowActions","guardedOnRowClick","handleEditError","usesLegacyDetailPanelState","resolvedDetailPanel","clearEditError","draftValues","setDraftValues","useRowEditing","rowEditingContext","tableScrollElement","viewportHeight","useDataTableScrollViewport","autoPageSizeConfig","handleAutoPageSizeChange","autoPageSizeEnabled","print","toggleFullscreen","isFullscreen","setIsFullscreen","update","handleSelectedFiles","files","getDataTableColumnGroupPaths","virtualPaddingBottom","virtualPaddingTop","columnLayout","explicitCustomCellColumnIds","visibleLeafColumnCount","bodyRowComponents","primeColumnForResize","currentSize","flushSync","resetColumnSize","filteredData","configuredEmptyState","guardedStateOverlay","guardedToolbarActions","guardedSelectionActions","currentDataTableState","getCurrentState","cloneDataTableState","restoreState","nextState","clearPersistedState","resetColumnLayout","resetState","getSavedViews","createSavedView","applySavedView","renameSavedView","deleteSavedView","clearSavedViews","toolbarSavedViews","handleToolbarCreateSavedView","handleToolbarRenameSavedView","handleToolbarDeleteSavedView","deleted","exportCsvFromApi","copyToClipboard","copyDataTableToClipboard","pinRow","unpinRow","scrollDataTableElementIntoView","isDataTableEditableClipboardTarget","command","paste","parseDataTableClipboardText","onLegacyChange","handleChange","legacySlices","warnedSlicesRef","container","kind","attribute"],"mappings":"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","file":"chunk-4UITEBLL.js","sourcesContent":["import * as React from \"react\";\nimport type { Row } from \"@tanstack/react-table\";\nimport { cn } from \"../../lib/utils\";\nimport type { DataTableCardPanelProps } from \"./data-table-card-panel-types\";\n\nexport function DataTableBaseCardPanel({\n cardClassName,\n cardGridClassName,\n cardSizing,\n cardRenderer,\n currentRowSelection,\n currentDetailExpanded,\n DataTableCardView,\n DataTableEmptyState,\n dragAndDrop,\n editableRows,\n editingRowId,\n emptyNode,\n enableRowSelection,\n flexGrow,\n getRowClassName,\n hasCardTitle,\n infiniteScroll,\n localSearchValue,\n onRowClick,\n renderedRows,\n detailPanel,\n resolvedLabels,\n resolvedLoadingRowCount,\n rowActions = [],\n ScrollArea,\n sentinelRef,\n setCurrentDetailExpanded,\n setCurrentRowSelection,\n setEditingRowId,\n shouldRenderInitialLoading,\n stateOverlayNode,\n tableContainerClassName,\n uiClassNames,\n}: DataTableCardPanelProps) {\n const shouldRenderCards =\n shouldRenderInitialLoading || renderedRows.length > 0;\n const cardScrollContainerRef = React.useRef(null);\n\n const renderCardView = (\n rows: Array>,\n options?: {\n isLoading?: boolean;\n loadingRowCount?: number;\n },\n ) => (\n \n );\n\n return (\n \n \n \n {shouldRenderCards ? (\n shouldRenderInitialLoading ? (\n renderCardView([], {\n isLoading: true,\n loadingRowCount: resolvedLoadingRowCount,\n })\n ) : (\n renderCardView(renderedRows)\n )\n ) : (\n
      \n {emptyNode ?? (\n \n )}\n
      \n )}\n\n {infiniteScroll?.enabled && !shouldRenderInitialLoading ? (\n
      \n
      \n
      \n ) : null}\n
      \n \n {stateOverlayNode}\n \n );\n}\n","import * as React from \"react\";\nimport { DataTableBaseCardPanel } from \"./data-table-base-card-panel\";\nimport type { DataTableCardPanelProps } from \"./data-table-card-panel-types\";\n\nconst LazyDataTableVirtualCardPanel = React.lazy(async () => {\n const module = await import(\"./data-table-virtual-card-panel\");\n return { default: module.DataTableVirtualCardPanel };\n}) as unknown as typeof DataTableBaseCardPanel;\n\nexport function DataTableCardPanel(\n props: DataTableCardPanelProps,\n) {\n const config =\n typeof props.virtualization === \"object\"\n ? props.virtualization.card\n : undefined;\n\n if (config?.enabled !== true) {\n return ;\n }\n\n return (\n \n }\n >\n \n \n );\n}\n\nexport type { DataTableCardPanelProps };\n","import * as React from \"react\";\nimport type { PaginationState } from \"@tanstack/react-table\";\nimport type { DataTableLabels } from \"../types\";\n\ntype DataTableFooterSectionProps = {\n children?: React.ReactNode;\n currentPagination: PaginationState;\n DataTableFooter: React.ElementType;\n effectivePageCount: number;\n footerTotalRowCount: number | undefined;\n handleFooterPageIndexChange: (pageIndex: number) => void;\n handleFooterPageSizeChange: (pageSize: number) => void;\n labels: DataTableLabels;\n pageCountKnown?: boolean;\n rowsPerPageOptions: Array;\n showFooter: boolean;\n};\n\nexport function DataTableFooterSection({\n children,\n currentPagination,\n DataTableFooter,\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n labels,\n pageCountKnown = true,\n rowsPerPageOptions,\n showFooter,\n}: DataTableFooterSectionProps) {\n if (!showFooter && !children) {\n return null;\n }\n\n return (\n
      \n {showFooter ? (\n \n ) : null}\n {children}\n
      \n );\n}\n","import * as React from \"react\";\nimport type { Table as TanStackTable } from \"@tanstack/react-table\";\nimport type {\n DataTableLabels,\n DataTableProps,\n DataTableSavedView,\n} from \"../types\";\n\ntype DataTableToolbarSectionProps = {\n allRows: Array;\n columnFilters: Array;\n columnVisibilityOptions: Array;\n compactToolbar: React.ReactNode;\n customToolbar: React.ReactNode;\n DataTableToolbar: React.ElementType;\n description: string | undefined;\n descriptionId: string | undefined;\n effectiveToolbarActions: Array;\n enableColumnPinning: boolean;\n enableGrouping: boolean;\n enableToolbarColumnChooser: boolean;\n enableToolbarFilterChips: boolean;\n enableToolbarResetLayout: boolean;\n enableToolbarSavedViews: boolean;\n enableDensityToggle: boolean;\n enableViewToggle: boolean;\n hiddenRowsLabel: string | undefined;\n labels: DataTableLabels;\n onClearColumnFilters: () => void;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n onColumnPinningChange: (columnId: string, side: \"left\" | \"right\" | false) => void;\n onDensityChange: (density: \"compact\" | \"comfortable\" | \"spacious\") => void;\n onShowHiddenRowsChange: (showHiddenRows: boolean) => void;\n onToolbarQueryValueChange: (value: string) => void;\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n onResetColumnLayout: () => void;\n onCreateSavedView: (name: string) => DataTableSavedView | undefined;\n onApplySavedView: (id: string) => boolean;\n onRenameSavedView: (id: string, name: string) => DataTableSavedView | undefined;\n onDeleteSavedView: (id: string) => boolean;\n onViewModeChange: (viewMode: \"table\" | \"card\") => void;\n openFileDialog: (() => void) | undefined;\n selectedRowIds: Array;\n selectedRows: Array;\n selectionActions: DataTableProps[\"selectionActions\"];\n savedViews: Array;\n showHiddenRows: boolean;\n table: TanStackTable;\n title: string | undefined;\n titleId: string | undefined;\n toolbarQueryPlaceholder: string;\n toolbarQueryValue: string;\n toolbarVisibility: DataTableProps[\"toolbarVisibility\"];\n density: \"compact\" | \"comfortable\" | \"spacious\";\n viewMode: \"table\" | \"card\";\n};\n\nexport function DataTableToolbarSection({\n allRows,\n columnFilters,\n columnVisibilityOptions,\n compactToolbar,\n customToolbar,\n DataTableToolbar,\n description,\n descriptionId,\n effectiveToolbarActions,\n enableColumnPinning,\n enableGrouping,\n enableToolbarColumnChooser,\n enableToolbarFilterChips,\n enableToolbarResetLayout,\n enableToolbarSavedViews,\n enableDensityToggle,\n enableViewToggle,\n hiddenRowsLabel,\n labels,\n onClearColumnFilters,\n onColumnFilterChange,\n onColumnPinningChange,\n onDensityChange,\n onShowHiddenRowsChange,\n onToolbarQueryValueChange,\n reorderColumn,\n onResetColumnLayout,\n onCreateSavedView,\n onApplySavedView,\n onRenameSavedView,\n onDeleteSavedView,\n onViewModeChange,\n openFileDialog,\n selectedRowIds,\n selectedRows,\n selectionActions,\n savedViews,\n showHiddenRows,\n table,\n title,\n titleId,\n toolbarQueryPlaceholder,\n toolbarQueryValue,\n toolbarVisibility,\n density,\n viewMode,\n}: DataTableToolbarSectionProps) {\n return (\n
      \n {\n table.getColumn(columnId)?.toggleVisibility(visible);\n }}\n enableColumnPinning={enableColumnPinning}\n enableGrouping={enableGrouping}\n enableToolbarColumnChooser={enableToolbarColumnChooser}\n enableToolbarFilterChips={enableToolbarFilterChips}\n enableToolbarResetLayout={enableToolbarResetLayout}\n enableToolbarSavedViews={enableToolbarSavedViews}\n onColumnPinningChange={onColumnPinningChange}\n columnFilters={columnFilters}\n onColumnFilterChange={onColumnFilterChange}\n onClearColumnFilters={onClearColumnFilters}\n onResetColumnLayout={onResetColumnLayout}\n onCreateSavedView={onCreateSavedView}\n onApplySavedView={onApplySavedView}\n onRenameSavedView={onRenameSavedView}\n onDeleteSavedView={onDeleteSavedView}\n density={density}\n onDensityChange={onDensityChange}\n enableDensityToggle={enableDensityToggle}\n labels={labels}\n toolbarVisibility={toolbarVisibility}\n openFileDialog={openFileDialog}\n savedViews={savedViews}\n table={table}\n />\n
      \n );\n}\n","import type { DataTableLabels } from \"../types\";\n\ntype ResolvedDataTableLabels = Required;\n\nexport const DATA_TABLE_DEFAULT_LABELS: ResolvedDataTableLabels = {\n searchPlaceholder: \"Search rows...\",\n searchTable: \"Search table\",\n clearSearch: \"Clear search\",\n noRowsTitle: \"No rows yet\",\n noRowsDescription: \"Create a record or refresh this view once data exists.\",\n noMatchingRowsTitle: \"No matching rows\",\n noMatchingRowsDescription: \"Try a different search term or clear filters.\",\n tableOptions: \"Show table options\",\n columns: \"Columns\",\n filters: \"Filters\",\n clearFilters: \"Clear filters\",\n filterFrom: \"From\",\n filterTo: \"To\",\n filterTrue: \"Yes\",\n filterFalse: \"No\",\n selectedRows: (count) =>\n `${count} record${count === 1 ? \"\" : \"s\"} selected`,\n showHiddenRows: (label) => `Show ${label}`,\n recordsPerPage: \"Records per page\",\n totalRecords: (count) => `Total records: ${count}`,\n pageStatus: (pageIndex, pageCount) => `Page ${pageIndex + 1} of ${pageCount}`,\n pageStatusUnknown: (pageIndex) => `Page ${pageIndex + 1}`,\n pagination: \"Pagination\",\n morePages: \"More pages\",\n firstPage: \"First page\",\n previousPage: \"Previous page\",\n nextPage: \"Next page\",\n lastPage: \"Last page\",\n selectAllVisibleRows: \"Select all visible rows\",\n selectAllFilteredRows: \"Select all filtered rows\",\n selectRow: \"Select row\",\n selectCardRow: (rowId) => `Select row ${rowId}`,\n switchToTableView: \"Switch to table view\",\n switchToCardView: \"Switch to card view\",\n tableView: \"Table view\",\n cardView: \"Card view\",\n allFilterOptions: \"All\",\n actions: \"Actions\",\n rowActions: \"Row actions\",\n editRow: \"Edit row\",\n saveEdit: \"Save\",\n cancelEdit: \"Cancel editing\",\n expandRow: \"Expand row\",\n collapseRow: \"Collapse row\",\n expandRowDetails: \"Expand row details\",\n collapseRowDetails: \"Collapse row details\",\n exportCsv: \"Export CSV\",\n print: \"Print table\",\n enterFullscreen: \"Enter fullscreen\",\n exitFullscreen: \"Exit fullscreen\",\n errorTitle: \"Unable to load this table\",\n errorDescription: \"Try again or check your connection.\",\n retry: \"Retry\",\n density: \"Density\",\n compactDensity: \"Compact\",\n comfortableDensity: \"Comfortable\",\n spaciousDensity: \"Spacious\",\n pinLeft: \"Pin left\",\n pinRight: \"Pin right\",\n unpin: \"Unpin\",\n pinRowToTop: \"Pin row to top\",\n pinRowToBottom: \"Pin row to bottom\",\n unpinRow: \"Unpin row\",\n resizeColumn: (columnLabel) => `Resize ${columnLabel}`,\n grouping: \"Grouping\",\n groupBy: (columnLabel) => `Group by ${columnLabel}`,\n ungroup: (columnLabel) => `Ungroup ${columnLabel}`,\n removeGrouping: (columnLabel) => `Remove ${columnLabel} grouping`,\n moveGroupingEarlier: (columnLabel) => `Move ${columnLabel} grouping earlier`,\n moveGroupingLater: (columnLabel) => `Move ${columnLabel} grouping later`,\n facetSearch: (columnLabel) => `Search ${columnLabel} options`,\n searchColumns: \"Search columns\",\n showAllColumns: \"Show all columns\",\n hideAllColumns: \"Hide all columns\",\n moveColumnEarlier: (columnLabel) => `Move ${columnLabel} earlier`,\n moveColumnLater: (columnLabel) => `Move ${columnLabel} later`,\n resetColumnLayout: \"Reset column layout\",\n savedViews: \"Saved views\",\n createSavedView: \"Create saved view\",\n savedViewName: \"View name\",\n applySavedView: (name) => `Apply saved view ${name}`,\n renameSavedView: (name) => `Rename saved view ${name}`,\n deleteSavedView: (name) => `Delete saved view ${name}`,\n saveSavedView: \"Save view\",\n};\n\nexport function resolveDataTableLabels(\n labels?: Partial,\n): ResolvedDataTableLabels {\n return {\n ...DATA_TABLE_DEFAULT_LABELS,\n ...labels,\n } as ResolvedDataTableLabels;\n}\n","import * as React from \"react\";\nimport type {\n ColumnDef,\n ExpandedState,\n OnChangeFn,\n RowPinningPosition,\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport { IconChevronDown } from \"../icons\";\nimport type {\n DataTableEditableRowsConfig,\n DataTableDetailPanel,\n DataTableLabels,\n DataTableProps,\n DataTableRowAction,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport {\n UTILITY_COLUMN_SIZE,\n decorateFilterableColumn,\n isDataTableLoadingRow,\n toggleDataTableExpandedState,\n} from \"./data-table-utils\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\ntype DataTableRowActionsComponentProps = {\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n labels: DataTableLabels;\n onCancelEditing: () => void;\n onStartEditing: () => void;\n row: TData;\n rowActions: Array>;\n rowPinning?: {\n canPin: boolean;\n position: RowPinningPosition;\n pin: (position: RowPinningPosition) => void;\n };\n};\n\nexport function useDataTableColumns({\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n editingRowId,\n editErrors,\n enableRowSelection,\n enableRowPinning,\n hasTreeExpansion,\n isSavingEdit,\n isEditDirty,\n labels,\n lastSelectedRowIdRef,\n detailPanel,\n detailExpanded,\n onDetailExpandedChange,\n rowSelectionSelectAllScope,\n rowActions,\n saveEdit,\n startEditingRow,\n tableRef,\n}: {\n Button: DataTableUiKit[\"Button\"];\n Checkbox: DataTableUiKit[\"Checkbox\"];\n DataTableRowActions: React.ComponentType<\n DataTableRowActionsComponentProps\n >;\n Tooltip: DataTableUiKit[\"Tooltip\"];\n TooltipContent: DataTableUiKit[\"TooltipContent\"];\n TooltipTrigger: DataTableUiKit[\"TooltipTrigger\"];\n cancelEditing: () => void;\n columns: DataTableProps[\"columns\"];\n editableRows: DataTableProps[\"editableRows\"];\n editingRowId: string | null;\n editErrors: Record;\n enableRowSelection: boolean;\n enableRowPinning: DataTableProps[\"enableRowPinning\"];\n hasTreeExpansion: boolean;\n isSavingEdit: boolean;\n isEditDirty: boolean;\n labels: DataTableLabels;\n lastSelectedRowIdRef: React.MutableRefObject;\n detailPanel: DataTableDetailPanel | undefined;\n detailExpanded: ExpandedState;\n onDetailExpandedChange: OnChangeFn;\n rowSelectionSelectAllScope: NonNullable<\n DataTableProps[\"rowSelectionSelectAllScope\"]\n >;\n rowActions: Array>;\n saveEdit: (row: TData) => Promise;\n startEditingRow: (row: TData, rowId: string) => void;\n tableRef: React.RefObject | null>;\n}) {\n const selectRowRange = React.useCallback(\n (targetRowId: string, selected: boolean) => {\n const tableInstance = tableRef.current;\n if (!tableInstance || !lastSelectedRowIdRef.current) {\n return;\n }\n\n const rows = tableInstance\n .getRowModel()\n .rows.filter((row) => !isDataTableLoadingRow(row.original));\n const startIndex = rows.findIndex(\n (row) => row.id === lastSelectedRowIdRef.current,\n );\n const endIndex = rows.findIndex((row) => row.id === targetRowId);\n\n if (startIndex < 0 || endIndex < 0) {\n return;\n }\n\n const from = Math.min(startIndex, endIndex);\n const to = Math.max(startIndex, endIndex);\n tableInstance.setRowSelection((current) => {\n const next = { ...current };\n for (const row of rows\n .slice(from, to + 1)\n .filter(\n (item) => item.getCanSelect() && item.getCanMultiSelect(),\n )) {\n if (selected) {\n next[row.id] = true;\n } else {\n delete next[row.id];\n }\n }\n return next;\n });\n },\n [lastSelectedRowIdRef, tableRef],\n );\n\n return React.useMemo>>(() => {\n const defs: Array> = [];\n\n if (hasTreeExpansion || detailPanel) {\n const expansionColumnSize =\n hasTreeExpansion && detailPanel ? 80 : UTILITY_COLUMN_SIZE;\n defs.push({\n id: \"__expand__\",\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n size: expansionColumnSize,\n minSize: expansionColumnSize,\n maxSize: expansionColumnSize,\n header: () => {labels.expandRow},\n cell: ({ row, table }) => {\n const canExpandTree = hasTreeExpansion && row.getCanExpand();\n const canExpandDetail = Boolean(\n detailPanel && (detailPanel.getRowCanExpand?.(row.original) ?? true),\n );\n if (!canExpandTree && !canExpandDetail) {\n return null;\n }\n\n const isTreeExpanded = row.getIsExpanded();\n const isDetailExpanded =\n detailExpanded === true || Boolean(detailExpanded[row.id]);\n return (\n
      \n {canExpandTree ? (\n row.toggleExpanded()}\n >\n \n \n ) : null}\n {canExpandDetail ? (\n {\n onDetailExpandedChange((current) =>\n toggleDataTableExpandedState(\n current,\n row.id,\n table.getCoreRowModel().flatRows.map((item) => item.id),\n ),\n );\n }}\n >\n \n \n ) : null}\n
      \n );\n },\n });\n }\n\n if (enableRowSelection) {\n defs.push({\n id: \"__select__\",\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n size: UTILITY_COLUMN_SIZE,\n minSize: UTILITY_COLUMN_SIZE,\n maxSize: UTILITY_COLUMN_SIZE,\n header: ({ table }) => {\n const selectsFilteredRows = rowSelectionSelectAllScope === \"filtered\";\n const selectableRows = (selectsFilteredRows\n ? table.getFilteredRowModel().flatRows\n : table.getRowModel().flatRows\n ).filter((row) => row.getCanSelect() && row.getCanMultiSelect());\n const allSelected =\n selectableRows.length > 0 &&\n selectableRows.every((row) => row.getIsSelected());\n const someSelected = selectableRows.some((row) => row.getIsSelected());\n const label = selectsFilteredRows\n ? (labels.selectAllFilteredRows ??\n DATA_TABLE_DEFAULT_LABELS.selectAllFilteredRows)\n : (labels.selectAllVisibleRows ??\n DATA_TABLE_DEFAULT_LABELS.selectAllVisibleRows);\n\n if (selectableRows.length === 0) {\n return {label};\n }\n\n return (\n
      \n {\n table.setRowSelection((current) => {\n const next = { ...current };\n for (const row of selectableRows) {\n if (checked === true) {\n next[row.id] = true;\n } else {\n delete next[row.id];\n }\n }\n return next;\n });\n }}\n aria-label={label}\n />\n
      \n );\n },\n cell: ({ row }) => (\n
      \n ) => {\n if (\n !event.shiftKey ||\n !lastSelectedRowIdRef.current ||\n !row.getCanMultiSelect()\n ) {\n lastSelectedRowIdRef.current = row.id;\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n selectRowRange(row.id, !row.getIsSelected());\n lastSelectedRowIdRef.current = row.id;\n }}\n onCheckedChange={(checked: boolean | \"indeterminate\") => {\n lastSelectedRowIdRef.current = row.id;\n row.toggleSelected(checked === true);\n }}\n aria-label={\n labels.selectRow ?? DATA_TABLE_DEFAULT_LABELS.selectRow\n }\n />\n
      \n ),\n });\n }\n\n defs.push(...columns.map((column) => decorateFilterableColumn(column)));\n\n if (rowActions.length || editableRows || enableRowPinning) {\n defs.push({\n id: \"__actions__\",\n enableSorting: false,\n enableResizing: false,\n enableHiding: false,\n size: UTILITY_COLUMN_SIZE,\n minSize: UTILITY_COLUMN_SIZE,\n maxSize: UTILITY_COLUMN_SIZE,\n header: () => {labels.actions},\n cell: ({ row }) => {\n const rowId = row.id;\n const isEditing = editingRowId === rowId;\n\n if (isEditing) {\n return (\n
      \n {editErrors._row ? (\n \n {editErrors._row}\n \n ) : null}\n {\n void saveEdit(row.original);\n }}\n >\n {labels.saveEdit}\n \n \n \n \n \n {labels.cancelEdit}\n \n \n {labels.cancelEdit}\n \n
      \n );\n }\n\n return (\n
      \n {\n startEditingRow(row.original, row.id);\n }}\n onCancelEditing={() => {}}\n labels={labels}\n rowPinning={\n enableRowPinning\n ? {\n canPin: row.getCanPin(),\n position: row.getIsPinned(),\n pin: (position) => row.pin(position),\n }\n : undefined\n }\n />\n
      \n );\n },\n });\n }\n\n return defs;\n }, [\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n detailExpanded,\n detailPanel,\n editErrors,\n editingRowId,\n enableRowSelection,\n enableRowPinning,\n hasTreeExpansion,\n isSavingEdit,\n isEditDirty,\n labels,\n lastSelectedRowIdRef,\n onDetailExpandedChange,\n rowSelectionSelectAllScope,\n rowActions,\n saveEdit,\n selectRowRange,\n startEditingRow,\n ]);\n}\n","import * as React from \"react\";\nimport type { Updater } from \"@tanstack/react-table\";\n\nexport function useControllableState({\n defaultValue,\n onChange,\n value,\n}: {\n defaultValue: T | (() => T);\n onChange?: (value: T) => void;\n value: T | undefined;\n}) {\n const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue);\n const currentValue = value ?? uncontrolledValue;\n const currentValueRef = React.useRef(currentValue);\n\n React.useEffect(() => {\n currentValueRef.current = currentValue;\n }, [currentValue]);\n\n const setValue = React.useCallback(\n (updater: Updater) => {\n const nextValue =\n typeof updater === \"function\"\n ? (updater as (current: T) => T)(currentValueRef.current)\n : updater;\n currentValueRef.current = nextValue;\n\n onChange?.(nextValue);\n\n if (value === undefined) {\n setUncontrolledValue(nextValue);\n }\n },\n [onChange, value],\n );\n\n return [currentValue, setValue] as const;\n}\n","import * as React from \"react\";\n\nexport function useDataTableInfiniteScroll({\n enabled,\n hasMore,\n isLoadingMore,\n onLoadMore,\n onError,\n}: {\n enabled: boolean;\n hasMore: boolean;\n isLoadingMore?: boolean;\n onLoadMore: () => void | Promise;\n onError?: (error: unknown) => void;\n}) {\n const sentinelRef = React.useRef(null);\n const isRequestInFlightRef = React.useRef(false);\n const onLoadMoreEvent = React.useEffectEvent(onLoadMore);\n const onErrorEvent = React.useEffectEvent((error: unknown) => {\n onError?.(error);\n });\n\n React.useEffect(() => {\n if (!enabled || !hasMore || isLoadingMore) {\n return;\n }\n\n const target = sentinelRef.current;\n if (!target) {\n return;\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n const entry = entries[0];\n if (entry.isIntersecting && !isRequestInFlightRef.current) {\n isRequestInFlightRef.current = true;\n\n let result: void | Promise;\n try {\n result = onLoadMoreEvent();\n } catch (error) {\n isRequestInFlightRef.current = false;\n onErrorEvent(error);\n return;\n }\n\n void Promise.resolve(result)\n .catch((error: unknown) => {\n onErrorEvent(error);\n })\n .finally(() => {\n isRequestInFlightRef.current = false;\n });\n }\n },\n {\n rootMargin: \"200px 0px 200px 0px\",\n },\n );\n\n observer.observe(target);\n\n return () => {\n observer.disconnect();\n };\n }, [enabled, hasMore, isLoadingMore]);\n\n return sentinelRef;\n}\n","import * as React from \"react\";\n\nexport function useDataTablePaginationClamp({\n enabled,\n maxPageIndex,\n onPageIndexChange,\n pageIndex,\n setLocalPageIndex,\n}: {\n enabled: boolean;\n maxPageIndex: number;\n onPageIndexChange?: (pageIndex: number) => void;\n pageIndex: number;\n setLocalPageIndex: (pageIndex: number) => void;\n}) {\n React.useEffect(() => {\n if (!enabled) {\n return;\n }\n\n if (pageIndex >= 0 && pageIndex <= maxPageIndex) {\n return;\n }\n\n const nextPageIndex = Math.min(Math.max(pageIndex, 0), maxPageIndex);\n setLocalPageIndex(nextPageIndex);\n onPageIndexChange?.(nextPageIndex);\n }, [enabled, maxPageIndex, onPageIndexChange, pageIndex, setLocalPageIndex]);\n}\n","import * as React from \"react\";\nimport type { FilterFn, Row } from \"@tanstack/react-table\";\nimport { normalizeDataTableSearchText } from \"./data-table-utils\";\n\n/**\n * Caches each searchable cell against the application-owned row object and\n * stable column id. WeakMap entries disappear with immutable rows and never\n * retain removed data. Mutable rows are deliberately unsupported because a\n * cache cannot safely observe deep changes without defeating its purpose.\n */\nexport function useDataTableSearchIndex(\n) {\n // eslint-disable-next-line react-hooks/immutability -- This weak cache is deliberately populated by TanStack's filter pass, never read during React render.\n return React.useMemo>(() => {\n const valuesByRow = new WeakMap>();\n\n return (row: Row, columnId: string, filterValue: unknown) => {\n const query = normalizeDataTableSearchText(filterValue);\n if (!query) {\n return true;\n }\n\n const original = row.original;\n if (typeof original !== \"object\" || original === null) {\n return normalizeDataTableSearchText(row.getValue(columnId)).includes(\n query,\n );\n }\n\n let valuesByColumn = valuesByRow.get(original);\n if (!valuesByColumn) {\n valuesByColumn = new Map();\n valuesByRow.set(original, valuesByColumn);\n }\n\n let text = valuesByColumn.get(columnId);\n if (text === undefined) {\n const value = row.getValue(columnId);\n text = normalizeDataTableSearchText(value);\n valuesByColumn.set(columnId, text);\n }\n\n return text.includes(query);\n };\n }, []);\n}\n","import * as React from \"react\";\nimport {\n getCoreRowModel,\n getExpandedRowModel,\n getFacetedMinMaxValues,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getGroupedRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\";\nimport type {\n ColumnDef,\n ColumnFiltersState,\n ColumnOrderState,\n ColumnPinningState,\n ColumnSizingState,\n ExpandedState,\n GroupingState,\n FilterFnOption,\n OnChangeFn,\n PaginationState,\n RowPinningState,\n Row,\n SortingState,\n Table as TanStackTable,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport type { DataTableProps } from \"../types\";\nimport {\n canReorderDataTableColumn,\n getColumnId,\n getDataTableLeafColumns,\n isDataTableLoadingRow,\n isUtilityColumnId,\n moveColumnInOrder,\n} from \"./data-table-utils\";\nimport type { DataTableColumnGroupPaths } from \"./data-table-utils\";\nimport { useDataTableInfiniteScroll } from \"./use-data-table-infinite-scroll\";\nimport { useDataTablePaginationClamp } from \"./use-data-table-pagination-clamp\";\nimport { useDataTableSearchIndex } from \"./use-data-table-search-index\";\n\nexport function useDataTableInstance({\n autoResetPageIndex,\n columnGroupPaths,\n columnResizeMode,\n dir,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentRowPinning,\n currentColumnSizing,\n currentExpanded,\n currentGrouping,\n currentPagination,\n currentRowSelection,\n currentSorting,\n currentViewMode,\n defaultColumn,\n effectiveColumnVisibility,\n enableColumnResizing,\n enableMultiRowSelection,\n enableRowPinning,\n enableRowSelection,\n enableSubRowSelection,\n getRowCanSelect,\n getRowCanExpand,\n getSubRows,\n aggregationFns,\n groupedColumnMode,\n globalFilterFn,\n globalFilterValue,\n hasNextPage,\n handleColumnFiltersChange,\n handleColumnOrderChange,\n handleColumnPinningChange,\n handleRowPinningChange,\n handleColumnVisibilityChange,\n handleExpandedChange,\n handleGroupingChange,\n infiniteScroll,\n keepPinnedRows,\n manualFiltering,\n manualGrouping,\n manualExpanding,\n manualPagination,\n manualSorting,\n onActionError,\n onPageIndexChange,\n onPageSizeChange,\n pageCount,\n pageIndex,\n pageSize,\n paginateExpandedRows,\n filterFromLeafRows,\n maxLeafRowFilterDepth,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n shouldRenderInitialLoading,\n tableColumns,\n tableData,\n tableGetRowId,\n tableRef,\n totalRowCount,\n virtualization,\n}: {\n autoResetPageIndex: boolean;\n columnGroupPaths: DataTableColumnGroupPaths;\n columnResizeMode: DataTableProps[\"columnResizeMode\"];\n dir: NonNullable[\"dir\"]>;\n currentColumnFilters: ColumnFiltersState;\n currentColumnOrder: ColumnOrderState;\n currentColumnPinning: ColumnPinningState;\n currentRowPinning: RowPinningState;\n currentColumnSizing: ColumnSizingState;\n currentExpanded: ExpandedState;\n currentGrouping: GroupingState;\n currentPagination: PaginationState;\n currentRowSelection: Record;\n currentSorting: SortingState;\n currentViewMode: \"table\" | \"card\";\n defaultColumn: Partial>;\n effectiveColumnVisibility: VisibilityState;\n enableColumnResizing: boolean;\n enableMultiRowSelection: NonNullable<\n DataTableProps[\"enableMultiRowSelection\"]\n >;\n enableRowPinning: DataTableProps[\"enableRowPinning\"];\n enableRowSelection: boolean;\n enableSubRowSelection: NonNullable<\n DataTableProps[\"enableSubRowSelection\"]\n >;\n getRowCanSelect: DataTableProps[\"getRowCanSelect\"];\n getRowCanExpand: DataTableProps[\"getRowCanExpand\"];\n getSubRows: DataTableProps[\"getSubRows\"];\n aggregationFns: DataTableProps[\"aggregationFns\"];\n groupedColumnMode: DataTableProps[\"groupedColumnMode\"];\n globalFilterFn: FilterFnOption | undefined;\n globalFilterValue: string;\n hasNextPage?: DataTableProps[\"hasNextPage\"];\n handleColumnFiltersChange: OnChangeFn;\n handleColumnOrderChange: OnChangeFn;\n handleColumnPinningChange: OnChangeFn;\n handleRowPinningChange: OnChangeFn;\n handleColumnVisibilityChange: OnChangeFn;\n handleExpandedChange: OnChangeFn;\n handleGroupingChange: OnChangeFn;\n infiniteScroll: DataTableProps[\"infiniteScroll\"];\n keepPinnedRows: boolean;\n manualFiltering: boolean;\n manualGrouping: boolean;\n manualExpanding: boolean;\n manualPagination: boolean;\n manualSorting: boolean;\n onActionError?: DataTableProps[\"onActionError\"];\n onPageIndexChange: DataTableProps[\"onPageIndexChange\"];\n onPageSizeChange: DataTableProps[\"onPageSizeChange\"];\n pageCount: DataTableProps[\"pageCount\"];\n pageIndex: DataTableProps[\"pageIndex\"];\n pageSize: DataTableProps[\"pageSize\"];\n paginateExpandedRows: DataTableProps[\"paginateExpandedRows\"];\n filterFromLeafRows: DataTableProps[\"filterFromLeafRows\"];\n maxLeafRowFilterDepth: DataTableProps[\"maxLeafRowFilterDepth\"];\n setCurrentRowSelection: OnChangeFn>;\n setCurrentSorting: OnChangeFn;\n setLocalColumnSizing: OnChangeFn;\n setLocalPagination: React.Dispatch>;\n shouldRenderInitialLoading: boolean;\n tableColumns: Array>;\n tableData: Array;\n tableGetRowId: DataTableProps[\"getRowId\"];\n tableRef: React.RefObject | null>;\n tableScrollElement: HTMLElement | null;\n /**\n * @deprecated Filtering now runs through TanStack Table. Retained so\n * advanced 4.x hook callers remain source-compatible.\n */\n toolbarFilteredData?: Array;\n totalRowCount: DataTableProps[\"totalRowCount\"];\n virtualization: DataTableProps[\"virtualization\"];\n viewportHeight: number;\n}) {\n const cachedGlobalFilterFn = useDataTableSearchIndex();\n const generatedColumnIds = React.useMemo(() => {\n return getDataTableLeafColumns(\n tableColumns as DataTableProps[\"columns\"],\n ).map(({ column, index }) => getColumnId(column, index));\n }, [tableColumns]);\n\n const effectiveColumnOrder = React.useMemo(() => {\n const columnIds = generatedColumnIds;\n const dataColumnIds = columnIds.filter(\n (columnId) =>\n !isUtilityColumnId(columnId) && columnId !== \"__spacer__\",\n );\n const dataColumnIdSet = new Set(dataColumnIds);\n const orderedDataColumnIds = currentColumnOrder.filter((columnId) =>\n dataColumnIdSet.has(columnId),\n );\n const unorderedDataColumnIds = dataColumnIds.filter(\n (columnId) => !orderedDataColumnIds.includes(columnId),\n );\n\n return [\n ...columnIds.filter(\n (columnId) => columnId === \"__expand__\" || columnId === \"__select__\",\n ),\n ...orderedDataColumnIds,\n ...unorderedDataColumnIds,\n ...columnIds.filter((columnId) => columnId === \"__spacer__\"),\n ...columnIds.filter((columnId) => columnId === \"__actions__\"),\n ];\n }, [currentColumnOrder, generatedColumnIds]);\n\n const effectiveColumnPinning = React.useMemo(() => {\n const columnIdSet = new Set(generatedColumnIds);\n const dataColumnIdSet = new Set(\n generatedColumnIds.filter(\n (columnId) =>\n !isUtilityColumnId(columnId) && columnId !== \"__spacer__\",\n ),\n );\n const dataLeft = (currentColumnPinning.left ?? []).filter((columnId) =>\n dataColumnIdSet.has(columnId),\n );\n const dataRight = (currentColumnPinning.right ?? []).filter((columnId) =>\n dataColumnIdSet.has(columnId),\n );\n\n return {\n left: [\n ...[\"__expand__\", \"__select__\"].filter((columnId) =>\n columnIdSet.has(columnId),\n ),\n ...dataLeft,\n ],\n right: [\n ...dataRight,\n ...[\"__actions__\"].filter((columnId) => columnIdSet.has(columnId)),\n ],\n };\n }, [currentColumnPinning, generatedColumnIds]);\n\n const effectiveRowPinning = React.useMemo(() => {\n const availableRowIds = new Set();\n const visitRows = (rows: Array) => {\n rows.forEach((row, index) => {\n availableRowIds.add(tableGetRowId(row, index));\n if (!isDataTableLoadingRow(row)) {\n const subRows = getSubRows?.(row, index);\n if (subRows?.length) {\n visitRows(subRows);\n }\n }\n });\n };\n visitRows(tableData);\n const top = (currentRowPinning.top ?? []).filter((rowId) =>\n availableRowIds.has(rowId),\n );\n const topIds = new Set(top);\n const bottom = (currentRowPinning.bottom ?? []).filter(\n (rowId) => availableRowIds.has(rowId) && !topIds.has(rowId),\n );\n return { top, bottom };\n }, [\n currentRowPinning.bottom,\n currentRowPinning.top,\n getSubRows,\n tableData,\n tableGetRowId,\n ]);\n\n const tableState = React.useMemo(\n () => ({\n sorting: currentSorting,\n pagination: currentPagination,\n rowSelection: currentRowSelection,\n columnVisibility: effectiveColumnVisibility,\n columnFilters: currentColumnFilters,\n globalFilter: globalFilterValue,\n expanded: currentExpanded,\n grouping: currentGrouping,\n columnOrder: effectiveColumnOrder,\n columnPinning: effectiveColumnPinning,\n rowPinning: effectiveRowPinning,\n columnSizing: currentColumnSizing,\n }),\n [\n currentColumnFilters,\n currentColumnSizing,\n currentExpanded,\n currentGrouping,\n currentPagination,\n currentRowSelection,\n currentSorting,\n effectiveColumnVisibility,\n effectiveColumnOrder,\n effectiveColumnPinning,\n effectiveRowPinning,\n globalFilterValue,\n ],\n );\n\n const handlePaginationChange = React.useCallback<\n OnChangeFn\n >(\n (updater) => {\n const nextValue =\n typeof updater === \"function\" ? updater(currentPagination) : updater;\n\n if (pageIndex === undefined || pageSize === undefined) {\n setLocalPagination((current) => ({\n pageIndex:\n pageIndex === undefined ? nextValue.pageIndex : current.pageIndex,\n pageSize:\n pageSize === undefined ? nextValue.pageSize : current.pageSize,\n }));\n }\n\n if (nextValue.pageIndex !== currentPagination.pageIndex) {\n onPageIndexChange?.(nextValue.pageIndex);\n }\n if (nextValue.pageSize !== currentPagination.pageSize) {\n onPageSizeChange?.(nextValue.pageSize);\n }\n },\n [\n currentPagination,\n onPageIndexChange,\n onPageSizeChange,\n pageIndex,\n pageSize,\n setLocalPagination,\n ],\n );\n\n const handleColumnSizingChange = React.useCallback<\n OnChangeFn\n >(\n (updater) => {\n setLocalColumnSizing(updater);\n },\n [setLocalColumnSizing],\n );\n\n const facetingNeeds = React.useMemo(\n () => {\n let uniqueValues = false;\n let minMaxValues = false;\n for (const { column } of getDataTableLeafColumns(\n tableColumns as DataTableProps[\"columns\"],\n )) {\n uniqueValues ||= column.meta?.filter?.type === \"faceted\";\n minMaxValues ||= column.meta?.filter?.type === \"numberRange\";\n }\n return { minMaxValues, uniqueValues };\n },\n [tableColumns],\n );\n\n // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Table owns its instance functions.\n const table = useReactTable({\n data: tableData,\n columns: tableColumns,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: manualFiltering ? undefined : getFilteredRowModel(),\n getFacetedRowModel:\n (facetingNeeds.uniqueValues || facetingNeeds.minMaxValues) &&\n !manualFiltering\n ? getFacetedRowModel()\n : undefined,\n getFacetedUniqueValues:\n facetingNeeds.uniqueValues && !manualFiltering\n ? getFacetedUniqueValues()\n : undefined,\n getFacetedMinMaxValues:\n facetingNeeds.minMaxValues && !manualFiltering\n ? getFacetedMinMaxValues()\n : undefined,\n getGroupedRowModel:\n currentGrouping.length && !manualGrouping ? getGroupedRowModel() : undefined,\n getSortedRowModel: manualSorting ? undefined : getSortedRowModel(),\n getExpandedRowModel:\n (getSubRows || currentGrouping.length) && !manualExpanding\n ? getExpandedRowModel()\n : undefined,\n getPaginationRowModel:\n manualPagination || infiniteScroll?.enabled\n ? undefined\n : getPaginationRowModel(),\n enableRowSelection: getRowCanSelect\n ? (row) => enableRowSelection && getRowCanSelect(row.original)\n : enableRowSelection,\n enableRowPinning:\n typeof enableRowPinning === \"function\"\n ? (row) => enableRowPinning(row.original)\n : enableRowPinning,\n keepPinnedRows,\n enableMultiRowSelection:\n typeof enableMultiRowSelection === \"function\"\n ? (row) => enableMultiRowSelection(row.original)\n : enableMultiRowSelection,\n enableSubRowSelection:\n typeof enableSubRowSelection === \"function\"\n ? (row) => enableSubRowSelection(row.original)\n : enableSubRowSelection,\n enableColumnResizing,\n columnResizeMode,\n columnResizeDirection: dir,\n getRowId: tableGetRowId,\n getSubRows,\n getRowCanExpand: getSubRows\n ? (row) => getRowCanExpand?.(row.original) ?? row.subRows.length > 0\n : undefined,\n globalFilterFn: globalFilterFn ?? cachedGlobalFilterFn,\n getColumnCanGlobalFilter: (column) =>\n column.columnDef.enableGlobalFilter !== false &&\n typeof column.accessorFn === \"function\",\n manualSorting,\n manualGrouping,\n manualFiltering,\n manualExpanding,\n manualPagination: manualPagination || Boolean(infiniteScroll?.enabled),\n paginateExpandedRows,\n filterFromLeafRows,\n maxLeafRowFilterDepth,\n defaultColumn,\n autoResetPageIndex,\n state: tableState,\n onSortingChange: setCurrentSorting,\n onPaginationChange: handlePaginationChange,\n onRowSelectionChange: setCurrentRowSelection,\n onColumnVisibilityChange: handleColumnVisibilityChange,\n onColumnFiltersChange: handleColumnFiltersChange,\n onExpandedChange: handleExpandedChange,\n onGroupingChange: handleGroupingChange,\n onColumnOrderChange: handleColumnOrderChange,\n onColumnPinningChange: handleColumnPinningChange,\n onRowPinningChange: handleRowPinningChange,\n onColumnSizingChange: handleColumnSizingChange,\n aggregationFns,\n groupedColumnMode,\n });\n tableRef.current = table;\n\n const visibleLeafColumns = table.getVisibleLeafColumns();\n const reorderColumn = React.useCallback(\n (sourceColumnId: string, targetColumnId: string) => {\n if (sourceColumnId === targetColumnId) {\n return;\n }\n\n if (\n !canReorderDataTableColumn(\n sourceColumnId,\n targetColumnId,\n columnGroupPaths,\n )\n ) {\n return;\n }\n\n const defaultOrder = table\n .getAllLeafColumns()\n .map((column) => column.id)\n .filter((columnId) => !isUtilityColumnId(columnId));\n const nextOrder = moveColumnInOrder(\n currentColumnOrder.length ? currentColumnOrder : defaultOrder,\n sourceColumnId,\n targetColumnId,\n );\n handleColumnOrderChange(nextOrder);\n },\n [columnGroupPaths, currentColumnOrder, handleColumnOrderChange, table],\n );\n\n const topPinnedRows = table.getTopRows();\n const bottomPinnedRows = table.getBottomRows();\n // Card rendering has no top/bottom table regions. Keep its original row\n // model intact rather than silently dropping pinned records.\n const renderedRows =\n currentViewMode === \"table\"\n ? table.getCenterRows()\n : table.getRowModel().rows;\n const virtualizationConfig =\n typeof virtualization === \"object\" ? virtualization : undefined;\n const virtualRowsEnabled =\n virtualization === true || virtualizationConfig?.enabled === true;\n const fallbackRowCount = Math.max(\n 1,\n Math.floor(virtualizationConfig?.fallbackRowCount ?? 20),\n );\n const initialRowsToRender = virtualRowsEnabled\n ? renderedRows.slice(0, fallbackRowCount)\n : renderedRows;\n const rowsToRender = initialRowsToRender.map((row, rowIndex) => ({\n row,\n rowIndex,\n }));\n\n const usesManualRows = manualPagination || Boolean(infiniteScroll?.enabled);\n const derivedTotalRowCount = usesManualRows\n ? undefined\n : table.getFilteredRowModel().rows.length;\n const effectiveTotalRowCount = totalRowCount ?? derivedTotalRowCount;\n const isPageCountKnown =\n !usesManualRows || pageCount !== undefined || totalRowCount !== undefined;\n const footerTotalRowCount = effectiveTotalRowCount;\n const effectivePageCount = shouldRenderInitialLoading\n ? 1\n : (pageCount ??\n (effectiveTotalRowCount !== undefined\n ? Math.max(\n 1,\n Math.ceil(effectiveTotalRowCount / currentPagination.pageSize),\n )\n : usesManualRows\n ? currentPagination.pageIndex + (hasNextPage ? 2 : 1)\n : table.getPageCount()));\n const maxPageIndex = Math.max(0, effectivePageCount - 1);\n\n const setLocalPageIndex = React.useCallback(\n (nextPageIndex: number) => {\n if (pageIndex !== undefined) {\n return;\n }\n\n setLocalPagination((current) =>\n current.pageIndex === nextPageIndex\n ? current\n : { ...current, pageIndex: nextPageIndex },\n );\n },\n [pageIndex, setLocalPagination],\n );\n useDataTablePaginationClamp({\n enabled:\n !shouldRenderInitialLoading &&\n !infiniteScroll?.enabled &&\n isPageCountKnown,\n maxPageIndex,\n onPageIndexChange,\n pageIndex: currentPagination.pageIndex,\n setLocalPageIndex,\n });\n\n const handleFooterPageIndexChange = React.useCallback(\n (nextPageIndex: number) => {\n if (nextPageIndex === currentPagination.pageIndex) {\n return;\n }\n\n onPageIndexChange?.(nextPageIndex);\n if (pageIndex === undefined) {\n setLocalPagination((current) =>\n current.pageIndex === nextPageIndex\n ? current\n : { ...current, pageIndex: nextPageIndex },\n );\n }\n },\n [\n currentPagination.pageIndex,\n onPageIndexChange,\n pageIndex,\n setLocalPagination,\n ],\n );\n const handleFooterPageSizeChange = React.useCallback(\n (nextPageSize: number) => {\n if (currentPagination.pageIndex !== 0) {\n onPageIndexChange?.(0);\n }\n if (nextPageSize !== currentPagination.pageSize) {\n onPageSizeChange?.(nextPageSize);\n }\n if (pageSize === undefined) {\n setLocalPagination({\n pageIndex: 0,\n pageSize: nextPageSize,\n });\n }\n },\n [\n currentPagination.pageIndex,\n currentPagination.pageSize,\n onPageIndexChange,\n onPageSizeChange,\n pageSize,\n setLocalPagination,\n ],\n );\n\n const sentinelRef = useDataTableInfiniteScroll({\n enabled: Boolean(infiniteScroll?.enabled),\n hasMore: Boolean(infiniteScroll?.hasMore),\n isLoadingMore: infiniteScroll?.isLoadingMore,\n onLoadMore: () => infiniteScroll?.onLoadMore(),\n onError: (error) => {\n onActionError?.({\n error,\n source: \"infiniteScroll\",\n });\n },\n });\n\n return {\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n isPageCountKnown,\n renderedRows,\n topPinnedRows,\n bottomPinnedRows,\n reorderColumn,\n rowsToRender,\n sentinelRef,\n table,\n virtualPaddingBottom: 0,\n virtualPaddingTop: 0,\n visibleLeafColumns,\n };\n}\n\nexport type DataTableRowsToRender = Array<{\n row: Row;\n rowIndex: number;\n}>;\n","import * as React from \"react\";\nimport type {\n DataTableColumnPrefs,\n DataTableDensity,\n DataTablePersistenceConfig,\n DataTablePersistencePayload,\n DataTablePersistenceSlice,\n DataTablePersistenceStorage,\n} from \"../types\";\nimport type { RowPinningState } from \"@tanstack/react-table\";\n\nconst STORAGE_PREFIX = \"data-table-pro:column-prefs:\";\nconst DEFAULT_VERSION = 1;\nconst ALL_SLICES: Array = [\n \"visibility\",\n \"sizing\",\n \"order\",\n \"pinning\",\n \"rowPinning\",\n \"density\",\n];\n\nexport function readDataTableColumnPrefs(\n input: string | DataTablePersistenceConfig | undefined,\n): DataTableColumnPrefs {\n const config = resolvePersistenceConfig(input);\n if (!config) {\n return {};\n }\n\n const storage = resolveStorage(config);\n if (!storage) {\n return {};\n }\n const storageKey = getStorageKey(config.key);\n\n let value: string | null;\n try {\n value = storage.getItem(storageKey);\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return {};\n }\n if (!value) {\n return {};\n }\n\n let parsed: unknown;\n try {\n parsed = (config.deserialize ?? JSON.parse)(value);\n } catch (error) {\n config.onError?.({ error, operation: \"deserialize\" });\n return {};\n }\n\n const targetVersion = config.version ?? DEFAULT_VERSION;\n let candidate: unknown;\n if (isPersistencePayload(parsed)) {\n if (parsed.version === targetVersion) {\n candidate = parsed.state;\n } else if (config.migrate) {\n try {\n candidate = config.migrate(\n {\n version: parsed.version,\n state: parsed.state,\n },\n targetVersion,\n );\n } catch (error) {\n config.onError?.({ error, operation: \"migrate\" });\n return {};\n }\n } else {\n return {};\n }\n } else {\n // Raw objects are the legacy columnPrefsKey format. They are validated and\n // upgraded to a versioned envelope on the next successful write.\n candidate = parsed;\n }\n\n return selectPersistenceSlices(\n validateDataTableColumnPrefs(candidate),\n config.slices,\n );\n}\n\nexport function clearDataTableColumnPrefs(\n input: string | DataTablePersistenceConfig | undefined,\n) {\n const config = resolvePersistenceConfig(input);\n if (!config) {\n return false;\n }\n\n const storage = resolveStorage(config);\n if (!storage) {\n return false;\n }\n\n try {\n storage.removeItem(getStorageKey(config.key));\n return true;\n } catch (error) {\n config.onError?.({ error, operation: \"remove\" });\n return false;\n }\n}\n\nexport function usePersistDataTableColumnPrefs({\n key,\n persistence,\n prefs,\n}: {\n key?: string;\n persistence?: DataTablePersistenceConfig;\n prefs: DataTableColumnPrefs;\n}) {\n const config = persistence ?? resolvePersistenceConfig(key);\n const storage = config ? resolveStorage(config) : undefined;\n const storageKey = config ? getStorageKey(config.key) : undefined;\n const version = config?.version ?? DEFAULT_VERSION;\n const debounceMs = Math.max(0, config?.debounceMs ?? 100);\n const selectedState = selectPersistenceSlices(prefs, config?.slices);\n const serialized = React.useMemo(() => {\n if (!config) {\n return { value: undefined };\n }\n\n try {\n const payload: DataTablePersistencePayload = {\n version,\n state: selectedState,\n };\n return {\n value: (config.serialize ?? JSON.stringify)(payload),\n };\n } catch (error) {\n return { error, value: undefined };\n }\n }, [config, selectedState, version]);\n const onErrorEvent = React.useEffectEvent(\n (\n error: unknown,\n operation: \"serialize\" | \"write\",\n ) => {\n config?.onError?.({ error, operation });\n },\n );\n\n React.useEffect(() => {\n if (serialized.error !== undefined) {\n onErrorEvent(serialized.error, \"serialize\");\n }\n }, [serialized.error]);\n\n React.useEffect(() => {\n if (!storage || !storageKey || serialized.value === undefined) {\n return;\n }\n\n const write = () => {\n try {\n if (storage.getItem(storageKey) === serialized.value) {\n return;\n }\n storage.setItem(storageKey, serialized.value);\n } catch (error) {\n onErrorEvent(error, \"write\");\n }\n };\n\n if (debounceMs === 0) {\n write();\n return;\n }\n\n const timeout = globalThis.setTimeout(write, debounceMs);\n return () => {\n globalThis.clearTimeout(timeout);\n };\n }, [debounceMs, serialized.value, storage, storageKey]);\n}\n\nfunction resolvePersistenceConfig(\n input: string | DataTablePersistenceConfig | undefined,\n): DataTablePersistenceConfig | undefined {\n if (!input) {\n return undefined;\n }\n\n return typeof input === \"string\" ? { key: input } : input;\n}\n\nfunction resolveStorage(\n config: DataTablePersistenceConfig,\n): DataTablePersistenceStorage | undefined {\n if (config.storage) {\n return config.storage;\n }\n\n if (typeof window === \"undefined\") {\n return undefined;\n }\n\n try {\n return window.localStorage;\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return undefined;\n }\n}\n\nfunction getStorageKey(key: string) {\n return `${STORAGE_PREFIX}${key}`;\n}\n\nfunction isPersistencePayload(\n value: unknown,\n): value is { version: unknown; state: unknown } {\n return (\n isRecord(value) &&\n Object.prototype.hasOwnProperty.call(value, \"version\") &&\n Object.prototype.hasOwnProperty.call(value, \"state\")\n );\n}\n\nfunction selectPersistenceSlices(\n prefs: DataTableColumnPrefs,\n slices: Array | undefined,\n) {\n const selected = new Set(slices ?? ALL_SLICES);\n const result: DataTableColumnPrefs = {};\n\n for (const slice of ALL_SLICES) {\n if (selected.has(slice) && prefs[slice] !== undefined) {\n Object.assign(result, { [slice]: prefs[slice] });\n }\n }\n\n return result;\n}\n\nfunction validateDataTableColumnPrefs(value: unknown): DataTableColumnPrefs {\n if (!isRecord(value)) {\n return {};\n }\n\n const prefs: DataTableColumnPrefs = {};\n const visibility = validateBooleanRecord(value.visibility);\n if (visibility) {\n prefs.visibility = visibility;\n }\n const sizing = validateSizingRecord(value.sizing);\n if (sizing) {\n prefs.sizing = sizing;\n }\n const order = validateStringArray(value.order);\n if (order) {\n prefs.order = order;\n }\n if (isRecord(value.pinning)) {\n const left = validateStringArray(value.pinning.left) ?? [];\n const right = validateStringArray(value.pinning.right) ?? [];\n prefs.pinning = { left, right };\n }\n const rowPinning = validateRowPinning(value.rowPinning);\n if (rowPinning) {\n prefs.rowPinning = rowPinning;\n }\n if (isDataTableDensity(value.density)) {\n prefs.density = value.density;\n }\n\n return prefs;\n}\n\nfunction validateBooleanRecord(value: unknown) {\n if (!isRecord(value)) {\n return undefined;\n }\n\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, boolean] => typeof entry[1] === \"boolean\",\n ),\n );\n}\n\nfunction validateSizingRecord(value: unknown) {\n if (!isRecord(value)) {\n return undefined;\n }\n\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, number] =>\n typeof entry[1] === \"number\" &&\n Number.isFinite(entry[1]) &&\n entry[1] >= 0,\n ),\n );\n}\n\nfunction validateStringArray(value: unknown) {\n if (!Array.isArray(value)) {\n return undefined;\n }\n\n return value.filter((item): item is string => typeof item === \"string\");\n}\n\nfunction validateRowPinning(value: unknown): RowPinningState | undefined {\n if (!isRecord(value)) {\n return undefined;\n }\n\n return {\n top: validateStringArray(value.top) ?? [],\n bottom: validateStringArray(value.bottom) ?? [],\n };\n}\n\nfunction isDataTableDensity(value: unknown): value is DataTableDensity {\n return (\n value === \"compact\" ||\n value === \"comfortable\" ||\n value === \"spacious\"\n );\n}\n\nfunction isRecord(value: unknown): value is Record {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n","import * as React from \"react\";\nimport { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS } from \"../types\";\n\nconst BREAKPOINT_WIDTHS = Object.values(DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS)\n .slice()\n .sort((first, second) => first - second);\n\nexport function useDataTableContainerWidth(\n containerRef: React.RefObject,\n) {\n const widthRef = React.useRef(0);\n const [width, setWidth] = React.useState(0);\n\n React.useEffect(() => {\n const element = containerRef.current;\n if (!element) {\n return;\n }\n\n const updateWidth = (inlineSize = element.clientWidth) => {\n const nextWidth = quantizeDataTableContainerWidth(inlineSize);\n if (nextWidth === widthRef.current) {\n return;\n }\n\n widthRef.current = nextWidth;\n setWidth(nextWidth);\n };\n\n updateWidth();\n\n if (typeof ResizeObserver === \"undefined\") {\n return;\n }\n\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n updateWidth(entry ? getResizeObserverInlineSize(entry) : undefined);\n });\n\n observer.observe(element);\n\n return () => {\n observer.disconnect();\n };\n }, [containerRef]);\n\n return width;\n}\n\nexport function quantizeDataTableContainerWidth(width: number) {\n if (width <= 0) {\n return 0;\n }\n\n let bucket = 1;\n for (const breakpointWidth of BREAKPOINT_WIDTHS) {\n if (width < breakpointWidth) {\n break;\n }\n bucket = breakpointWidth;\n }\n\n return bucket;\n}\n\nfunction getResizeObserverInlineSize(entry: ResizeObserverEntry) {\n const contentBoxSize: unknown = entry.contentBoxSize;\n const size: unknown = Array.isArray(contentBoxSize)\n ? contentBoxSize[0]\n : contentBoxSize;\n const inlineSize = getInlineSize(size);\n\n return inlineSize ?? entry.contentRect.width;\n}\n\nfunction getInlineSize(value: unknown) {\n if (typeof value !== \"object\" || value === null) {\n return undefined;\n }\n\n const inlineSize = (value as { inlineSize?: unknown }).inlineSize;\n return typeof inlineSize === \"number\" ? inlineSize : undefined;\n}\n","import * as React from \"react\";\nimport type {\n ColumnFiltersState,\n ColumnOrderState,\n ColumnPinningState,\n ColumnSizingState,\n ExpandedState,\n GroupingState,\n PaginationState,\n RowPinningState,\n SortingState,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableDensity,\n DataTableLabels,\n DataTableProps,\n} from \"../types\";\nimport {\n createDataTableLoadingRows,\n getColumnId,\n getDataTableLeafColumns,\n getDataTableLoadingRowId,\n getInitialColumnPinning,\n isDataTableLoadingRow,\n} from \"./data-table-utils\";\nimport {\n readDataTableColumnPrefs,\n usePersistDataTableColumnPrefs,\n} from \"./use-data-table-column-prefs\";\nimport { useControllableState } from \"./use-controllable-state\";\nimport { useDataTableContainerWidth } from \"./use-data-table-container-width\";\nimport { isHiddenAtContainerWidth, isRowVisible } from \"../types\";\n\nexport function useDataTableState({\n columnFilters,\n columnOrder,\n columnPinning,\n rowPinning,\n columnSizing,\n columnPrefsKey,\n persistence,\n columnVisibility,\n columns,\n data,\n density,\n enableRowSelection,\n enableToolbarQueryFiltering,\n expanded,\n grouping,\n getSubRows,\n getRowId,\n hiddenRows,\n initialState,\n isLoading,\n loadingRowCount,\n manualFiltering,\n onColumnFiltersChange,\n onColumnOrderChange,\n onColumnPinningChange,\n onRowPinningChange,\n onColumnSizingChange,\n onColumnVisibilityChange,\n onDensityChange,\n onExpandedChange,\n onGroupingChange,\n onPageIndexChange,\n onRowSelectionChange,\n onShowHiddenRowsChange,\n onSortingChange,\n onToolbarQueryValueChange,\n onViewModeChange,\n pageIndex,\n pageSize,\n resolvedLabels,\n rowSelection,\n rowsPerPageOptions,\n selectionActions,\n showHiddenRows,\n sorting,\n toolbarQueryDebounceMs,\n toolbarQueryPlaceholder,\n toolbarQueryValue,\n viewMode,\n containerRef,\n}: {\n columnFilters: DataTableProps[\"columnFilters\"];\n columnOrder: DataTableProps[\"columnOrder\"];\n columnPinning: DataTableProps[\"columnPinning\"];\n rowPinning: DataTableProps[\"rowPinning\"];\n columnSizing?: DataTableProps[\"columnSizing\"];\n columnPrefsKey: DataTableProps[\"columnPrefsKey\"];\n persistence?: DataTableProps[\"persistence\"];\n columnVisibility: DataTableProps[\"columnVisibility\"];\n columns: DataTableProps[\"columns\"];\n data: DataTableProps[\"data\"];\n density: DataTableProps[\"density\"];\n enableRowSelection: boolean;\n enableToolbarQueryFiltering: boolean;\n expanded: DataTableProps[\"expanded\"];\n grouping: DataTableProps[\"grouping\"];\n getSubRows: DataTableProps[\"getSubRows\"];\n getRowId: DataTableProps[\"getRowId\"];\n hiddenRows: DataTableProps[\"hiddenRows\"];\n initialState?: DataTableProps[\"initialState\"];\n isLoading: boolean;\n loadingRowCount: DataTableProps[\"loadingRowCount\"];\n manualFiltering: boolean;\n onColumnFiltersChange: DataTableProps[\"onColumnFiltersChange\"];\n onColumnOrderChange: DataTableProps[\"onColumnOrderChange\"];\n onColumnPinningChange: DataTableProps[\"onColumnPinningChange\"];\n onRowPinningChange: DataTableProps[\"onRowPinningChange\"];\n onColumnSizingChange?: DataTableProps[\"onColumnSizingChange\"];\n onColumnVisibilityChange: DataTableProps[\"onColumnVisibilityChange\"];\n onDensityChange: DataTableProps[\"onDensityChange\"];\n onExpandedChange: DataTableProps[\"onExpandedChange\"];\n onGroupingChange: DataTableProps[\"onGroupingChange\"];\n onPageIndexChange: DataTableProps[\"onPageIndexChange\"];\n onRowSelectionChange: DataTableProps[\"onRowSelectionChange\"];\n onShowHiddenRowsChange: DataTableProps[\"onShowHiddenRowsChange\"];\n onSortingChange: DataTableProps[\"onSortingChange\"];\n onToolbarQueryValueChange: DataTableProps[\"onToolbarQueryValueChange\"];\n onViewModeChange: DataTableProps[\"onViewModeChange\"];\n pageIndex: DataTableProps[\"pageIndex\"];\n pageSize: DataTableProps[\"pageSize\"];\n resolvedLabels: DataTableLabels;\n rowSelection: DataTableProps[\"rowSelection\"];\n rowsPerPageOptions: Array;\n selectionActions: DataTableProps[\"selectionActions\"];\n showHiddenRows: DataTableProps[\"showHiddenRows\"];\n sorting: DataTableProps[\"sorting\"];\n toolbarQueryDebounceMs: DataTableProps[\"toolbarQueryDebounceMs\"];\n toolbarQueryPlaceholder: DataTableProps[\"toolbarQueryPlaceholder\"];\n toolbarQueryValue: DataTableProps[\"toolbarQueryValue\"];\n viewMode: DataTableProps[\"viewMode\"];\n containerRef: React.RefObject;\n}) {\n const persistenceConfig = React.useMemo(\n () => persistence ?? (columnPrefsKey ? { key: columnPrefsKey } : undefined),\n [columnPrefsKey, persistence],\n );\n const persistedColumnPrefs = React.useMemo(\n () => readDataTableColumnPrefs(persistenceConfig),\n [persistenceConfig],\n );\n const [localPagination, setLocalPagination] =\n React.useState({\n pageIndex: initialState?.pagination?.pageIndex ?? 0,\n pageSize:\n initialState?.pagination?.pageSize ??\n rowsPerPageOptions[0] ??\n 20,\n });\n const [currentSorting, setCurrentSorting] =\n useControllableState({\n value: sorting,\n onChange: onSortingChange,\n defaultValue: () => initialState?.sorting ?? [],\n });\n const [currentRowSelection, setCurrentRowSelection] = useControllableState<\n Record\n >({\n value: rowSelection,\n onChange: onRowSelectionChange,\n defaultValue: () => initialState?.rowSelection ?? {},\n });\n const [currentColumnVisibility, setCurrentColumnVisibility] =\n useControllableState({\n value: columnVisibility,\n onChange: onColumnVisibilityChange,\n defaultValue: () =>\n initialState?.columnVisibility ??\n persistedColumnPrefs.visibility ??\n {},\n });\n const [currentColumnFilters, setCurrentColumnFilters] =\n useControllableState({\n value: columnFilters,\n onChange: onColumnFiltersChange,\n defaultValue: () => initialState?.columnFilters ?? [],\n });\n const [currentExpanded, setCurrentExpanded] =\n useControllableState({\n value: expanded,\n onChange: onExpandedChange,\n defaultValue: () => initialState?.expanded ?? {},\n });\n const [currentColumnOrder, setCurrentColumnOrder] =\n useControllableState({\n value: columnOrder,\n onChange: onColumnOrderChange,\n defaultValue: () =>\n initialState?.columnOrder ?? persistedColumnPrefs.order ?? [],\n });\n const [currentColumnPinning, setCurrentColumnPinning] =\n useControllableState({\n value: columnPinning,\n onChange: onColumnPinningChange,\n defaultValue: () =>\n initialState?.columnPinning ??\n persistedColumnPrefs.pinning ??\n getInitialColumnPinning(columns),\n });\n const [currentRowPinning, setCurrentRowPinning] =\n useControllableState({\n value: rowPinning,\n onChange: onRowPinningChange,\n defaultValue: () =>\n initialState?.rowPinning ?? persistedColumnPrefs.rowPinning ?? {\n top: [],\n bottom: [],\n },\n });\n const [currentColumnSizing, setCurrentColumnSizing] =\n useControllableState({\n value: columnSizing,\n onChange: onColumnSizingChange,\n defaultValue: () =>\n initialState?.columnSizing ?? persistedColumnPrefs.sizing ?? {},\n });\n const [currentViewMode, setCurrentViewMode] = useControllableState<\n \"table\" | \"card\"\n >({\n value: viewMode,\n onChange: onViewModeChange,\n defaultValue: () => initialState?.viewMode ?? \"table\",\n });\n const [currentGrouping, setCurrentGrouping] = useControllableState({\n value: grouping,\n onChange: onGroupingChange,\n defaultValue: () => initialState?.grouping ?? [],\n });\n const [currentShowHiddenRows, setCurrentShowHiddenRows] =\n useControllableState({\n value: showHiddenRows,\n onChange: onShowHiddenRowsChange,\n defaultValue: () => initialState?.showHiddenRows ?? false,\n });\n const [currentDensity, setCurrentDensity] =\n useControllableState({\n value: density,\n onChange: onDensityChange,\n defaultValue: () =>\n initialState?.density ??\n persistedColumnPrefs.density ??\n \"comfortable\",\n });\n const resolvedToolbarQueryValue =\n toolbarQueryValue ?? initialState?.globalFilter ?? \"\";\n const resolvedToolbarQueryPlaceholder =\n toolbarQueryPlaceholder ?? resolvedLabels.searchPlaceholder;\n const resolvedToolbarQueryDebounceMs = toolbarQueryDebounceMs ?? 250;\n const [localSearchValue, setLocalSearchValue] = React.useState(\n resolvedToolbarQueryValue,\n );\n const containerWidth = useDataTableContainerWidth(containerRef);\n const hasOnSearchValueChange = Boolean(onToolbarQueryValueChange);\n const lastReportedSearchValueRef = React.useRef(resolvedToolbarQueryValue);\n const onToolbarQueryValueChangeEvent = React.useEffectEvent(\n (value: string) => {\n lastReportedSearchValueRef.current = value;\n onToolbarQueryValueChange?.(value);\n },\n );\n\n React.useEffect(() => {\n lastReportedSearchValueRef.current = resolvedToolbarQueryValue;\n // A controlled query change must replace any pending debounced draft.\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setLocalSearchValue(resolvedToolbarQueryValue);\n }, [resolvedToolbarQueryValue]);\n\n React.useEffect(() => {\n if (!hasOnSearchValueChange) {\n return;\n }\n\n if (localSearchValue === resolvedToolbarQueryValue) {\n return;\n }\n\n if (localSearchValue === lastReportedSearchValueRef.current) {\n return;\n }\n\n const timeout = window.setTimeout(() => {\n onToolbarQueryValueChangeEvent(localSearchValue);\n }, resolvedToolbarQueryDebounceMs);\n\n return () => {\n window.clearTimeout(timeout);\n };\n }, [\n hasOnSearchValueChange,\n localSearchValue,\n resolvedToolbarQueryDebounceMs,\n resolvedToolbarQueryValue,\n ]);\n\n const currentPagination = React.useMemo(\n () => ({\n pageIndex: pageIndex ?? localPagination.pageIndex,\n pageSize: pageSize ?? localPagination.pageSize,\n }),\n [\n localPagination.pageIndex,\n localPagination.pageSize,\n pageIndex,\n pageSize,\n ],\n );\n const resolvedLoadingRowCount = Math.max(\n 1,\n loadingRowCount ?? Math.min(5, currentPagination.pageSize),\n );\n // Keep input/callback state eager. Only the client row-model input is\n // deferred, so server/manual callbacks never wait behind a large filter.\n const deferredSearchValue = React.useDeferredValue(localSearchValue);\n const globalFilterValue = enableToolbarQueryFiltering\n ? manualFiltering\n ? localSearchValue\n : deferredSearchValue\n : \"\";\n const handleViewModeChange = React.useCallback(\n (nextViewMode: \"table\" | \"card\") => {\n setCurrentViewMode(nextViewMode);\n },\n [setCurrentViewMode],\n );\n const handleShowHiddenRowsChange = React.useCallback(\n (nextShowHiddenRows: boolean) => {\n setCurrentShowHiddenRows(nextShowHiddenRows);\n },\n [setCurrentShowHiddenRows],\n );\n const handleDensityChange = React.useCallback(\n (nextDensity: DataTableDensity) => {\n setCurrentDensity(nextDensity);\n },\n [setCurrentDensity],\n );\n const resetPageIndexForFilterChange = React.useCallback(() => {\n onPageIndexChange?.(0);\n if (pageIndex === undefined) {\n setLocalPagination((current) =>\n current.pageIndex === 0 ? current : { ...current, pageIndex: 0 },\n );\n }\n }, [onPageIndexChange, pageIndex]);\n const lastFilterStateRef = React.useRef({\n columnFilters: currentColumnFilters,\n globalFilterValue,\n });\n\n React.useEffect(() => {\n const previous = lastFilterStateRef.current;\n const filtersChanged = previous.columnFilters !== currentColumnFilters;\n const globalFilterChanged =\n previous.globalFilterValue !== globalFilterValue;\n lastFilterStateRef.current = {\n columnFilters: currentColumnFilters,\n globalFilterValue,\n };\n\n if (manualFiltering) {\n return;\n }\n\n if (!filtersChanged && !globalFilterChanged) {\n return;\n }\n\n resetPageIndexForFilterChange();\n }, [\n currentColumnFilters,\n globalFilterValue,\n manualFiltering,\n resetPageIndexForFilterChange,\n ]);\n\n usePersistDataTableColumnPrefs({\n persistence: persistenceConfig,\n prefs: {\n visibility: columnVisibility ? undefined : currentColumnVisibility,\n sizing:\n columnSizing === undefined ? currentColumnSizing : undefined,\n order: columnOrder ? undefined : currentColumnOrder,\n pinning: columnPinning ? undefined : currentColumnPinning,\n rowPinning: rowPinning === undefined ? currentRowPinning : undefined,\n density: density ? undefined : currentDensity,\n },\n });\n const responsiveColumnVisibility = React.useMemo(() => {\n return getDataTableLeafColumns(columns).reduce(\n (visibility, { column, index }) => {\n const columnId = getColumnId(column, index);\n if (isHiddenAtContainerWidth(column.meta?.hideOn, containerWidth)) {\n visibility[columnId] = false;\n }\n return visibility;\n },\n {},\n );\n }, [columns, containerWidth]);\n const effectiveColumnVisibility = React.useMemo(() => {\n return {\n ...currentColumnVisibility,\n ...responsiveColumnVisibility,\n };\n }, [currentColumnVisibility, responsiveColumnVisibility]);\n const visibleData = React.useMemo(\n () =>\n data.filter((row) =>\n isRowVisible(row, hiddenRows, currentShowHiddenRows),\n ),\n [currentShowHiddenRows, data, hiddenRows],\n );\n const shouldRenderInitialLoading = isLoading && visibleData.length === 0;\n const loadingRows = React.useMemo(\n () => createDataTableLoadingRows(resolvedLoadingRowCount),\n [resolvedLoadingRowCount],\n );\n const tableData = shouldRenderInitialLoading\n ? loadingRows\n : visibleData;\n const tableGetRowId = React.useCallback(\n (row: TData, index: number) => {\n if (isDataTableLoadingRow(row)) {\n return getDataTableLoadingRowId(index);\n }\n\n return getRowId(row, index);\n },\n [getRowId],\n );\n const shouldResolveSelectedRows =\n enableRowSelection ||\n (selectionActions?.length ?? 0) > 0 ||\n Object.values(currentRowSelection).some(Boolean);\n const rowById = React.useMemo(() => {\n if (!shouldResolveSelectedRows) {\n return new Map();\n }\n\n const rows = new Map();\n const visitRows = (currentRows: Array) => {\n currentRows.forEach((row, index) => {\n rows.set(getRowId(row, index), row);\n const subRows = getSubRows?.(row, index);\n if (subRows?.length) {\n visitRows(subRows);\n }\n });\n };\n visitRows(visibleData);\n return rows;\n }, [getRowId, getSubRows, shouldResolveSelectedRows, visibleData]);\n const selectedRows = React.useMemo(() => {\n if (!shouldResolveSelectedRows) {\n return [];\n }\n\n return Object.entries(currentRowSelection)\n .filter(([, selected]) => selected)\n .map(([rowId]) => rowById.get(rowId))\n .filter((row): row is TData => Boolean(row));\n }, [currentRowSelection, rowById, shouldResolveSelectedRows]);\n const selectedRowIds = React.useMemo(\n () =>\n Object.entries(currentRowSelection).flatMap(([rowId, selected]) =>\n selected ? [rowId] : [],\n ),\n [currentRowSelection],\n );\n\n return {\n containerWidth,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentRowPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentGrouping,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n effectiveColumnVisibility,\n globalFilterValue,\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n localSearchValue,\n resolvedLoadingRowCount,\n resolvedToolbarQueryPlaceholder,\n selectedRowIds,\n selectedRows,\n setCurrentColumnFilters,\n setCurrentColumnOrder,\n setCurrentColumnPinning,\n setCurrentRowPinning,\n setCurrentColumnVisibility,\n setCurrentExpanded,\n setCurrentGrouping,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing: setCurrentColumnSizing,\n setLocalPagination,\n setLocalSearchValue,\n shouldRenderInitialLoading,\n tableData,\n tableGetRowId,\n /**\n * @deprecated Read the filtered TanStack row model from the table\n * instance. This alias remains for advanced 4.x callers.\n */\n toolbarFilteredData: visibleData,\n visibleData,\n };\n}\n","import * as React from \"react\";\nimport type { Column, ColumnSizingState } from \"@tanstack/react-table\";\nimport type { DataTableColumnDef } from \"../types\";\nimport type { DataTableUiClassNames } from \"../ui-kit\";\nimport {\n UTILITY_COLUMN_SIZE,\n getColumnId,\n getConfiguredColumnMinWidth,\n getDataTableLeafColumns,\n getFixedSide,\n getPinnedColumnClassName,\n isUtilityColumnId,\n} from \"./data-table-utils\";\n\ntype ColumnLayoutMode = \"fill\" | \"fit\";\n\nexport type DataTableColumnLayout = {\n cellStyle: React.CSSProperties | undefined;\n colStyle: React.CSSProperties | undefined;\n fixedSide: \"left\" | \"right\" | false | undefined;\n headerStyle: React.CSSProperties | undefined;\n isActionsColumn: boolean;\n isExpansionColumn: boolean;\n isSelectionColumn: boolean;\n isSpacerColumn: boolean;\n isUtilityColumn: boolean;\n pinnedClassName: string | undefined;\n utilityClassName: string | undefined;\n};\n\nconst EMPTY_COLUMN_LAYOUT: DataTableColumnLayout = {\n cellStyle: undefined,\n colStyle: undefined,\n fixedSide: undefined,\n headerStyle: undefined,\n isActionsColumn: false,\n isExpansionColumn: false,\n isSelectionColumn: false,\n isSpacerColumn: false,\n isUtilityColumn: false,\n pinnedClassName: undefined,\n utilityClassName: undefined,\n};\n\nexport function useColumnLayout({\n columns,\n columnSizing,\n editableRows,\n enableRowSelection,\n hasRowActions,\n hasRowExpansion,\n layoutMode,\n uiClassNames,\n visibleLeafColumns,\n}: {\n columns: Array>;\n columnSizing: ColumnSizingState;\n editableRows: boolean;\n enableRowSelection: boolean;\n hasRowActions: boolean;\n hasRowExpansion: boolean;\n layoutMode: ColumnLayoutMode;\n uiClassNames: DataTableUiClassNames;\n visibleLeafColumns: Array>;\n}) {\n const explicitlySizedColumnIds = React.useMemo(() => {\n const ids = new Set();\n\n for (const { column, index } of getDataTableLeafColumns(columns)) {\n if (Object.prototype.hasOwnProperty.call(column, \"size\")) {\n ids.add(getColumnId(column, index));\n }\n }\n\n if (enableRowSelection) {\n ids.add(\"__select__\");\n }\n\n if (hasRowExpansion) {\n ids.add(\"__expand__\");\n }\n\n if (hasRowActions || editableRows) {\n ids.add(\"__actions__\");\n }\n\n return ids;\n }, [\n columns,\n editableRows,\n enableRowSelection,\n hasRowActions,\n hasRowExpansion,\n ]);\n\n const minimumColumnWidths = React.useMemo(() => {\n const widths = new Map();\n\n for (const { column, index } of getDataTableLeafColumns(columns)) {\n const configuredMinWidth = getConfiguredColumnMinWidth(column);\n\n if (configuredMinWidth !== undefined) {\n widths.set(getColumnId(column, index), configuredMinWidth);\n }\n }\n\n return widths;\n }, [columns]);\n\n const pinnedColumns = React.useMemo(() => {\n const left = new Map();\n const right = new Map();\n\n let leftOffset = 0;\n for (const column of visibleLeafColumns) {\n if (getFixedSide(column) === \"left\") {\n left.set(column.id, leftOffset);\n leftOffset += getColumnLayoutSize(column);\n }\n }\n\n let rightOffset = 0;\n for (const column of [...visibleLeafColumns].reverse()) {\n if (getFixedSide(column) === \"right\") {\n right.set(column.id, rightOffset);\n rightOffset += getColumnLayoutSize(column);\n }\n }\n\n return { left, right };\n }, [visibleLeafColumns]);\n\n const fillColumnId = React.useMemo(() => {\n if (layoutMode !== \"fill\") {\n return undefined;\n }\n\n const dataColumns = visibleLeafColumns.filter(\n (column) => !isUtilityColumnId(column.id),\n );\n\n if (!dataColumns.length) {\n return undefined;\n }\n\n const allDataColumnsAreFixed = dataColumns.every(\n (column) =>\n explicitlySizedColumnIds.has(column.id) ||\n Object.prototype.hasOwnProperty.call(columnSizing, column.id),\n );\n\n return allDataColumnsAreFixed\n ? dataColumns[dataColumns.length - 1]?.id\n : undefined;\n }, [\n columnSizing,\n explicitlySizedColumnIds,\n layoutMode,\n visibleLeafColumns,\n ]);\n\n const fixedWidthColumnIds = React.useMemo(() => {\n const ids = new Set([\n ...explicitlySizedColumnIds,\n ...Object.keys(columnSizing),\n ]);\n\n if (fillColumnId) {\n ids.delete(fillColumnId);\n }\n\n return ids;\n }, [columnSizing, explicitlySizedColumnIds, fillColumnId]);\n\n const columnLayouts = React.useMemo(() => {\n const layouts = new Map();\n\n for (const column of visibleLeafColumns) {\n const isSelectionColumn = column.id === \"__select__\";\n const isExpansionColumn = column.id === \"__expand__\";\n const isActionsColumn = column.id === \"__actions__\";\n const isUtilityColumn =\n isSelectionColumn || isExpansionColumn || isActionsColumn;\n const isSpacerColumn = column.id === \"__spacer__\";\n const configuredMinWidth = minimumColumnWidths.get(column.id);\n const isFlexibleFillColumn = column.id === fillColumnId;\n const columnMinWidth =\n configuredMinWidth ??\n (isFlexibleFillColumn ? column.getSize() : undefined);\n const shouldFixWidth =\n !isSpacerColumn &&\n (layoutMode === \"fit\" ||\n isUtilityColumn ||\n fixedWidthColumnIds.has(column.id));\n const baseStyle =\n shouldFixWidth || columnMinWidth !== undefined\n ? {\n width: shouldFixWidth\n ? isUtilityColumn\n ? UTILITY_COLUMN_SIZE\n : column.getSize()\n : undefined,\n minWidth: isUtilityColumn\n ? UTILITY_COLUMN_SIZE\n : shouldFixWidth\n ? column.getSize()\n : columnMinWidth,\n maxWidth: shouldFixWidth\n ? isUtilityColumn\n ? UTILITY_COLUMN_SIZE\n : column.getSize()\n : undefined,\n }\n : undefined;\n const fixedSide = getFixedSide(column);\n const pinnedStyle = fixedSide\n ? {\n left:\n fixedSide === \"left\" ? pinnedColumns.left.get(column.id) : undefined,\n right:\n fixedSide === \"right\"\n ? pinnedColumns.right.get(column.id)\n : undefined,\n }\n : undefined;\n const cellStyle =\n baseStyle || pinnedStyle ? { ...baseStyle, ...pinnedStyle } : undefined;\n\n layouts.set(column.id, {\n cellStyle,\n colStyle: baseStyle,\n fixedSide,\n headerStyle: cellStyle,\n isActionsColumn,\n isExpansionColumn,\n isSelectionColumn,\n isSpacerColumn,\n isUtilityColumn,\n pinnedClassName: fixedSide\n ? getPinnedColumnClassName(fixedSide, uiClassNames, {\n isUtilityColumn,\n })\n : undefined,\n utilityClassName: isUtilityColumn\n ? \"w-[50px] max-w-[50px] min-w-[50px] px-0\"\n : undefined,\n });\n }\n\n return layouts;\n }, [\n fillColumnId,\n fixedWidthColumnIds,\n layoutMode,\n minimumColumnWidths,\n pinnedColumns,\n uiClassNames,\n visibleLeafColumns,\n ]);\n\n const fillMinWidth = React.useMemo(() => {\n return visibleLeafColumns.reduce((total, column) => {\n const layout = columnLayouts.get(column.id);\n const configuredMinWidth = minimumColumnWidths.get(column.id);\n const isFlexibleFillColumn = column.id === fillColumnId;\n\n if (layout?.isUtilityColumn) {\n return total + UTILITY_COLUMN_SIZE;\n }\n\n if (fixedWidthColumnIds.has(column.id)) {\n return total + column.getSize();\n }\n\n return (\n total +\n (configuredMinWidth ?? (isFlexibleFillColumn ? column.getSize() : 0))\n );\n }, 0);\n }, [\n columnLayouts,\n fillColumnId,\n fixedWidthColumnIds,\n minimumColumnWidths,\n visibleLeafColumns,\n ]);\n\n const getColumnLayout = React.useCallback(\n (columnId: string) => columnLayouts.get(columnId) ?? EMPTY_COLUMN_LAYOUT,\n [columnLayouts],\n );\n\n return {\n columnLayouts,\n explicitlySizedColumnIds,\n fillMinWidth,\n getColumnLayout,\n };\n}\n\nfunction getColumnLayoutSize(column: Column) {\n return isUtilityColumnId(column.id) ? UTILITY_COLUMN_SIZE : column.getSize();\n}\n","import * as React from \"react\";\nimport type { ExpandedState, OnChangeFn, Row } from \"@tanstack/react-table\";\nimport { IconChevronDown } from \"../icons\";\nimport type {\n DataTableCardRendererProps,\n DataTableCardSizing,\n DataTableEditableRowsConfig,\n DataTableDetailPanel,\n DataTableLabels,\n DataTableProps,\n DataTableRowAction,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\nimport {\n isDataTableInteractiveTarget,\n toggleDataTableExpandedState,\n} from \"./data-table-utils\";\n\ntype DataTableCardViewProps = {\n rows: Array>;\n cardRenderer: (props: DataTableCardRendererProps) => React.ReactNode;\n cardSizing?: DataTableCardSizing;\n cardGridClassName?: string;\n cardClassName?: string;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n detailPanel?: DataTableDetailPanel;\n detailExpanded: ExpandedState;\n onDetailExpandedChange: OnChangeFn;\n hasCardTitle: boolean;\n rowSelection: Record;\n onRowSelectionChange: (rowSelection: Record) => void;\n enableRowSelection: boolean;\n editingRowId: string | null;\n onEditingRowIdChange: (rowId: string | null) => void;\n getRowClassName?: DataTableProps[\"getRowClassName\"];\n onRowClick?: (context: { row: TData; rowId: string }) => void | Promise;\n getRowDraggable?: (row: TData) => boolean;\n onRowDragStart?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n onRowDragEnd?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n isLoading?: boolean;\n loadingRowCount?: number;\n labels: DataTableLabels;\n};\n\ntype DataTableRowActionsComponent = (props: {\n row: TData;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n onStartEditing: () => void;\n onCancelEditing: () => void;\n labels: DataTableLabels;\n}) => React.ReactElement | null;\n\nexport function createDataTableCardView(\n ui: DataTableUiKit,\n DataTableRowActions: DataTableRowActionsComponent,\n) {\n const uiClassNames = ui.classNames ?? {};\n const { Button, Card, CardContent, CardHeader, Checkbox, Skeleton } = ui;\n\n return function DataTableCardView({\n rows,\n cardRenderer,\n cardSizing = \"fixed\",\n cardGridClassName,\n cardClassName,\n rowActions,\n editableRows,\n detailPanel,\n detailExpanded,\n onDetailExpandedChange,\n hasCardTitle,\n rowSelection,\n onRowSelectionChange,\n enableRowSelection,\n editingRowId,\n onEditingRowIdChange,\n getRowClassName,\n onRowClick,\n getRowDraggable,\n onRowDragStart,\n onRowDragEnd,\n isLoading = false,\n loadingRowCount = 5,\n labels,\n }: DataTableCardViewProps) {\n const resolvedCardSizing = cardSizing ?? \"fixed\";\n const resolvedCardGridClassName =\n cardGridClassName\n ? cn(\"grid\", cardGridClassName)\n : getCardGridClassName(resolvedCardSizing);\n const cardGridClasses = cn(\n \"min-h-0 w-full gap-4 p-1\",\n uiClassNames.cardGrid,\n resolvedCardGridClassName,\n );\n const cardItemClasses = (stateClassName?: string) =>\n cn(\n \"relative min-w-0 max-w-full gap-0 overflow-hidden bg-transparent p-0\",\n getCardItemClassName(resolvedCardSizing),\n uiClassNames.cardItem,\n cardClassName,\n stateClassName,\n );\n\n if (isLoading) {\n return (\n \n {Array.from({ length: Math.max(1, loadingRowCount) }, (_, index) => (\n \n {hasCardTitle ? (\n \n \n \n \n ) : null}\n \n \n \n \n \n \n \n ))}\n \n );\n }\n\n return (\n \n {rows.map((row) => {\n const rowId = row.id;\n const originalRow = row.original;\n const isSelected = Boolean(rowSelection[rowId]);\n const isEditing = editingRowId === rowId;\n const hasCardActions = rowActions.length > 0 || Boolean(editableRows);\n const canExpandDetail = Boolean(\n detailPanel && (detailPanel.getRowCanExpand?.(originalRow) ?? true),\n );\n const showCardGradient =\n enableRowSelection || hasCardActions || hasCardTitle;\n const showCardOverlayControls =\n enableRowSelection ||\n hasCardActions ||\n row.getCanExpand() ||\n canExpandDetail;\n const handleCardActivate = () => {\n if (!onRowClick) {\n return;\n }\n\n void onRowClick({ row: originalRow, rowId });\n };\n\n return (\n ) => {\n onRowDragStart?.({ row: originalRow, rowId, event });\n }}\n onDragEnd={(event: React.DragEvent) => {\n onRowDragEnd?.({ row: originalRow, rowId, event });\n }}\n >\n {showCardGradient ? (\n \n ) : null}\n *]:min-w-0\",\n getCardRendererClassName(resolvedCardSizing),\n onRowClick && \"cursor-pointer focus-visible:outline-none\",\n )}\n onClick={(event: React.MouseEvent) => {\n if (\n isDataTableInteractiveTarget(\n event.target,\n event.currentTarget,\n )\n ) {\n return;\n }\n\n handleCardActivate();\n }}\n onKeyDown={(event: React.KeyboardEvent) => {\n if (\n isDataTableInteractiveTarget(\n event.target,\n event.currentTarget,\n )\n ) {\n return;\n }\n\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n handleCardActivate();\n }\n }}\n >\n {cardRenderer({\n row: originalRow,\n rowId,\n depth: row.depth,\n canExpandSubRows: row.getCanExpand(),\n isSubRowsExpanded: row.getIsExpanded(),\n toggleSubRowsExpanded: () => row.toggleExpanded(),\n isSelected,\n onSelectedChange: (nextValue) => {\n onRowSelectionChange(\n updateRowSelection(\n rowSelection,\n rowId,\n nextValue,\n row.getCanSelect(),\n row.getCanMultiSelect(),\n ),\n );\n },\n actions: rowActions,\n isEditing,\n startEditing: () => {\n onEditingRowIdChange(rowId);\n },\n cancelEditing: () => {\n onEditingRowIdChange(null);\n },\n })}\n \n {isEditing ||\n !detailPanel ||\n !(detailExpanded === true || Boolean(detailExpanded[row.id]))\n ? null\n : (\n \n {detailPanel.render({\n row: originalRow,\n rowId,\n tableRow: row,\n })}\n \n )}\n {showCardOverlayControls ? (\n \n {enableRowSelection ? (\n \n {\n onRowSelectionChange(\n updateRowSelection(\n rowSelection,\n rowId,\n checked === true,\n row.getCanSelect(),\n row.getCanMultiSelect(),\n ),\n );\n }}\n />\n \n ) : null}\n {row.getCanExpand() ? (\n
      \n row.toggleExpanded()}\n >\n \n \n
      \n ) : null}\n {canExpandDetail ? (\n \n {\n onDetailExpandedChange((current) =>\n toggleDataTableExpandedState(\n current,\n row.id,\n rows.map((item) => item.id),\n ),\n );\n }}\n >\n \n \n \n ) : null}\n
      \n {hasCardActions ? (\n \n {\n onEditingRowIdChange(rowId);\n }}\n onCancelEditing={() => {\n onEditingRowIdChange(null);\n }}\n labels={labels}\n />\n
      \n ) : null}\n
      \n ) : null}\n \n );\n })}\n \n );\n };\n}\n\nfunction getCardGridClassName(cardSizing: DataTableCardSizing) {\n switch (cardSizing) {\n case \"content\":\n return \"flex flex-wrap items-start justify-start\";\n case \"fluid\":\n return \"grid grid-cols-[repeat(auto-fit,minmax(min(18rem,100%),1fr))]\";\n case \"fixed\":\n default:\n return \"grid grid-cols-[repeat(auto-fill,minmax(min(18rem,100%),18rem))] justify-start\";\n }\n}\n\nfunction getCardItemClassName(cardSizing: DataTableCardSizing) {\n switch (cardSizing) {\n case \"content\":\n return \"w-fit\";\n case \"fluid\":\n return \"w-full\";\n case \"fixed\":\n default:\n return undefined;\n }\n}\n\nfunction getCardRendererClassName(cardSizing: DataTableCardSizing) {\n switch (cardSizing) {\n case \"content\":\n return \"w-fit\";\n case \"fluid\":\n return \"w-full flex-1 [&>*]:w-full\";\n case \"fixed\":\n default:\n return \"flex-1\";\n }\n}\n\nfunction updateRowSelection(\n rowSelection: Record,\n rowId: string,\n isSelected: boolean,\n canSelect: boolean,\n canMultiSelect: boolean,\n) {\n if (!canSelect) {\n return rowSelection;\n }\n\n if (isSelected) {\n return canMultiSelect\n ? {\n ...rowSelection,\n [rowId]: true,\n }\n : { [rowId]: true };\n }\n\n if (!rowSelection[rowId]) {\n return rowSelection;\n }\n\n const nextSelection = { ...rowSelection };\n delete nextSelection[rowId];\n return nextSelection;\n}\n","import { IconInbox } from \"../icons\";\nimport type { DataTableUiKit } from \"../ui-kit\";\n\nexport function createDataTableEmptyState(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n } = ui;\n\n return function DataTableEmptyState({\n title = \"No rows found\",\n description = \"Adjust your filters or create a new record to populate this table.\",\n }: {\n title?: string;\n description?: string;\n }) {\n return (\n \n \n \n \n \n {title}\n {description}\n \n \n \n );\n };\n}\n","import * as React from \"react\";\nimport { IconDatabase } from \"../icons\";\nimport type { DataTableLabels } from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\ntype DataTablePaginationProps = {\n pageIndex: number;\n pageCount: number;\n pageCountKnown: boolean;\n pageSize: number;\n totalRowCount?: number;\n rowsPerPageOptions: Array;\n onPageIndexChange: (pageIndex: number) => void;\n onPageSizeChange: (pageSize: number) => void;\n labels: DataTableLabels;\n};\n\nexport function createDataTablePagination(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectTrigger,\n SelectValue,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n function DataTablePagination({\n pageIndex,\n pageCount,\n pageCountKnown,\n pageSize,\n totalRowCount,\n rowsPerPageOptions,\n onPageIndexChange,\n onPageSizeChange,\n labels,\n }: DataTablePaginationProps) {\n const pages = pageCountKnown\n ? getVisiblePages(pageIndex, Math.max(1, pageCount))\n : [];\n const canGoPrevious = pageIndex > 0;\n const canGoNext = pageIndex + 1 < pageCount;\n const lastPageIndex = Math.max(0, pageCount - 1);\n\n return (\n
      \n \n \n {labels.recordsPerPage}\n \n {\n onPageSizeChange(Number(value));\n }}\n >\n \n \n \n \n \n {rowsPerPageOptions.map((option) => (\n \n {option}\n \n ))}\n \n \n \n
      \n\n {totalRowCount !== undefined ? (\n
      \n \n \n {totalRowCount}\n \n {labels.totalRecords(totalRowCount)}\n \n
      \n \n ) : null}\n\n
      \n \n {pageCountKnown\n ? labels.pageStatus(pageIndex, Math.max(1, pageCount))\n : (\n labels.pageStatusUnknown ??\n DATA_TABLE_DEFAULT_LABELS.pageStatusUnknown\n )(pageIndex)}\n
      \n \n \n \n \n \n ) => {\n event.preventDefault();\n if (canGoPrevious) {\n onPageIndexChange(0);\n }\n }}\n text={labels.firstPage}\n />\n \n {labels.firstPage}\n \n \n \n \n \n ) => {\n event.preventDefault();\n if (canGoPrevious) {\n onPageIndexChange(pageIndex - 1);\n }\n }}\n text={labels.previousPage}\n />\n \n {labels.previousPage}\n \n \n {pages.map((item, index) => (\n \n {item === \"ellipsis\" ? (\n \n ) : (\n ) => {\n event.preventDefault();\n onPageIndexChange(item - 1);\n }}\n >\n {item}\n \n )}\n \n ))}\n \n \n \n ) => {\n event.preventDefault();\n if (canGoNext) {\n onPageIndexChange(pageIndex + 1);\n }\n }}\n text={labels.nextPage}\n />\n \n {labels.nextPage}\n \n \n {pageCountKnown ? (\n \n \n \n ,\n ) => {\n event.preventDefault();\n if (canGoNext) {\n onPageIndexChange(lastPageIndex);\n }\n }}\n />\n \n {labels.lastPage}\n \n \n ) : null}\n \n \n \n \n );\n }\n\n function DataTableFooter(props: DataTablePaginationProps) {\n return (\n \n \n \n );\n }\n\n return {\n DataTableFooter,\n DataTablePagination,\n };\n}\n\nfunction getVisiblePages(currentPageIndex: number, pageCount: number) {\n const currentPage = currentPageIndex + 1;\n const pages = new Set([1, pageCount]);\n\n for (\n let page = Math.max(1, currentPage - 2);\n page <= Math.min(pageCount, currentPage + 2);\n page += 1\n ) {\n pages.add(page);\n }\n\n const orderedPages = Array.from(pages).sort((left, right) => left - right);\n const items: Array = [];\n\n for (let index = 0; index < orderedPages.length; index += 1) {\n const page = orderedPages[index];\n const previous = orderedPages[index - 1];\n\n if (previous && page - previous > 1) {\n items.push(\"ellipsis\");\n }\n\n items.push(page);\n }\n\n return items;\n}\n","import * as React from \"react\";\nimport { IconDots, IconEdit, IconX } from \"../icons\";\nimport type {\n DataTableEditableRowsConfig,\n DataTableLabels,\n DataTableRowAction,\n} from \"../types\";\nimport type { RowPinningPosition } from \"@tanstack/react-table\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { canEditRow, canUseRowAction, resolveRowActionLabel } from \"../types\";\n\ntype DataTableRowActionsProps = {\n row: TData;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n onStartEditing: () => void;\n onCancelEditing: () => void;\n labels: DataTableLabels;\n rowPinning?: {\n canPin: boolean;\n position: RowPinningPosition;\n pin: (position: RowPinningPosition) => void;\n };\n};\n\nexport function createDataTableRowActions(ui: DataTableUiKit) {\n const {\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n return function DataTableRowActions({\n row,\n rowActions,\n editableRows,\n isEditing,\n onStartEditing,\n onCancelEditing,\n labels,\n rowPinning,\n }: DataTableRowActionsProps) {\n const actions = rowActions.filter((action) => canUseRowAction(action, row));\n const stopRowClickPropagation = React.useCallback(\n (event: React.SyntheticEvent) => {\n event.stopPropagation();\n },\n [],\n );\n\n if (isEditing) {\n return (\n \n \n \n \n {labels.cancelEdit}\n \n \n {labels.cancelEdit}\n \n );\n }\n\n const allowEdit = canEditRow(editableRows, row);\n const canPin = rowPinning?.canPin ?? false;\n if (!actions.length && !allowEdit && !canPin) {\n return null;\n }\n\n return (\n \n \n \n \n \n \n {labels.rowActions}\n \n \n \n {labels.rowActions}\n \n \n {allowEdit ? (\n \n ) => {\n event.stopPropagation();\n onStartEditing();\n }}\n >\n \n {labels.editRow}\n \n \n ) : null}\n {allowEdit && (actions.length || canPin) ? : null}\n {canPin ? (\n \n {rowPinning?.position ? (\n ) => {\n event.stopPropagation();\n rowPinning.pin(false);\n }}\n >\n {labels.unpinRow}\n \n ) : (\n <>\n ) => {\n event.stopPropagation();\n rowPinning?.pin(\"top\");\n }}\n >\n {labels.pinRowToTop}\n \n ) => {\n event.stopPropagation();\n rowPinning?.pin(\"bottom\");\n }}\n >\n {labels.pinRowToBottom}\n \n \n )}\n \n ) : null}\n {canPin && actions.length ? : null}\n {actions.length ? (\n \n {actions.map((action) => {\n const Icon = action.icon;\n return (\n ) => {\n event.stopPropagation();\n void action.onClick(row);\n }}\n >\n {Icon ? : null}\n {resolveRowActionLabel(action.label, row)}\n \n );\n })}\n \n ) : null}\n \n \n );\n };\n}\n","import * as React from \"react\";\nimport type { Table as TanStackTable } from \"@tanstack/react-table\";\nimport {\n IconAdjustmentsHorizontal,\n IconLayoutGrid,\n IconList,\n IconSearch,\n IconX,\n} from \"../icons\";\nimport type {\n DataTableColumnFilterType,\n DataTableColumnFixed,\n DataTableColumnVisibilityOption,\n DataTableDensity,\n DataTableLabels,\n DataTableSavedView,\n DataTableSelectionAction,\n DataTableToolbarAction,\n DataTableToolbarVisibility,\n DataTableViewMode,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\nconst LazyToolbarDataOperations = React.lazy(\n () => import(\"./data-table-toolbar-operations\"),\n);\n\nexport type DataTableToolbarColumnFilter = {\n id: string;\n label: string;\n type: DataTableColumnFilterType;\n value: unknown;\n placeholder?: string;\n options: Array<{ label: string; value: string; count?: number; disabled?: boolean }>;\n searchable?: boolean;\n searchPlaceholder?: string;\n trueLabel?: string;\n falseLabel?: string;\n min?: number | string;\n max?: number | string;\n step?: number;\n};\n\ntype DataTableToolbarProps = {\n title?: string;\n titleId?: string;\n description?: string;\n descriptionId?: string;\n toolbarQueryValue: string;\n toolbarQueryPlaceholder: string;\n onToolbarQueryValueChange: (value: string) => void;\n customToolbar?: React.ReactNode;\n compactToolbar?: React.ReactNode;\n viewMode: DataTableViewMode;\n onViewModeChange?: (viewMode: DataTableViewMode) => void;\n enableViewToggle: boolean;\n toolbarActions: Array>;\n selectionActions: Array>;\n selectedRows: Array;\n selectedRowIds: Array;\n showHiddenRows: boolean;\n hiddenRowsLabel?: string;\n onShowHiddenRowsChange?: (showHiddenRows: boolean) => void;\n allRows: Array;\n columnVisibilityOptions: Array;\n onColumnVisibilityChange?: (columnId: string, visible: boolean) => void;\n enableColumnPinning: boolean;\n onColumnPinningChange: (columnId: string, side: DataTableColumnFixed | false) => void;\n columnFilters: Array;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n onClearColumnFilters: () => void;\n density: DataTableDensity;\n onDensityChange: (density: DataTableDensity) => void;\n enableDensityToggle: boolean;\n labels: Required;\n toolbarVisibility?: DataTableToolbarVisibility;\n openFileDialog?: () => void;\n enableGrouping: boolean;\n enableToolbarColumnChooser: boolean;\n enableToolbarFilterChips: boolean;\n enableToolbarResetLayout: boolean;\n enableToolbarSavedViews: boolean;\n savedViews: Array;\n onResetColumnLayout: () => void;\n onCreateSavedView: (name: string) => DataTableSavedView | undefined;\n onApplySavedView: (id: string) => boolean;\n onRenameSavedView: (id: string, name: string) => DataTableSavedView | undefined;\n onDeleteSavedView: (id: string) => boolean;\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n table: TanStackTable;\n};\n\nexport function createDataTableToolbar(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Button,\n ButtonGroup,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n return function DataTableToolbar({\n title,\n titleId,\n description,\n descriptionId,\n toolbarQueryValue,\n toolbarQueryPlaceholder,\n onToolbarQueryValueChange,\n customToolbar,\n compactToolbar,\n viewMode,\n onViewModeChange,\n enableViewToggle,\n toolbarActions,\n selectionActions,\n selectedRows,\n selectedRowIds,\n showHiddenRows,\n hiddenRowsLabel,\n onShowHiddenRowsChange,\n allRows,\n columnVisibilityOptions,\n onColumnVisibilityChange,\n enableColumnPinning,\n onColumnPinningChange,\n columnFilters,\n onColumnFilterChange,\n onClearColumnFilters,\n density,\n onDensityChange,\n enableDensityToggle,\n labels,\n toolbarVisibility,\n openFileDialog,\n enableGrouping,\n enableToolbarColumnChooser,\n enableToolbarFilterChips,\n enableToolbarResetLayout,\n enableToolbarSavedViews,\n savedViews,\n onResetColumnLayout,\n onCreateSavedView,\n onApplySavedView,\n onRenameSavedView,\n onDeleteSavedView,\n reorderColumn,\n table,\n }: DataTableToolbarProps) {\n const compactSearchInputRef = React.useRef(null);\n const [isCompactSearchVisible, setIsCompactSearchVisible] =\n React.useState(false);\n const compactToolbarIconButtonClassName =\n uiClassNames.toolbarCompactIconButton ?? \"\";\n const primaryActions = toolbarActions.filter(\n (action) => (action.placement ?? \"primary\") === \"primary\",\n );\n const trailingActions = toolbarActions.filter(\n (action) => action.placement === \"trailing\",\n );\n const showTitle = toolbarVisibility?.title ?? true;\n const showSearch = toolbarVisibility?.search ?? true;\n const showActions = toolbarVisibility?.actions ?? true;\n const showTrailingActions = toolbarVisibility?.trailingActions ?? true;\n const showOptions = toolbarVisibility?.options ?? true;\n const showViewToggle = toolbarVisibility?.viewToggle ?? true;\n const showCustomToolbar = toolbarVisibility?.customToolbar ?? true;\n const hasVisibleTitle = showTitle && Boolean(title || description);\n const hasVisibleSearch = showSearch;\n const hasVisiblePrimaryActions = showActions && primaryActions.length > 0;\n const hasVisibleSelectionActions =\n selectedRowIds.length > 0 && selectionActions.length > 0;\n const hasVisibleOptions =\n showOptions &&\n (columnVisibilityOptions.some((column) => column.canHide) ||\n Boolean(onShowHiddenRowsChange && hiddenRowsLabel) ||\n enableColumnPinning ||\n enableDensityToggle ||\n enableGrouping ||\n enableToolbarColumnChooser ||\n enableToolbarResetLayout ||\n enableToolbarSavedViews);\n const hasToolbarOperationsMenu =\n enableToolbarColumnChooser ||\n enableToolbarResetLayout ||\n enableToolbarSavedViews;\n const activeColumnFilters = columnFilters.filter((filter) =>\n hasColumnFilterValue(filter.value),\n );\n const toolbarOperationsUi = {\n Button,\n DropdownMenuCheckboxItem,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n };\n const renderToolbarDataOperations = (placement: \"menu\" | \"chips\") => (\n \n }\n onResetColumnLayout={onResetColumnLayout}\n savedViews={savedViews}\n onCreateSavedView={onCreateSavedView}\n onApplySavedView={onApplySavedView}\n onRenameSavedView={onRenameSavedView}\n onDeleteSavedView={onDeleteSavedView}\n toolbarQueryValue={toolbarQueryValue}\n onToolbarQueryValueChange={onToolbarQueryValueChange}\n activeColumnFilters={activeColumnFilters}\n onColumnFilterChange={onColumnFilterChange}\n onClearColumnFilters={onClearColumnFilters}\n />\n \n );\n const groupableColumns = table\n .getAllLeafColumns()\n .filter(\n (column) =>\n !column.id.startsWith(\"__\") &&\n column.getCanGroup(),\n );\n const groupedColumns = table.getState().grouping.flatMap((id) => {\n const column = table.getColumn(id);\n return column ? [column] : [];\n });\n const hasVisibleViewToggle =\n showViewToggle && enableViewToggle && Boolean(onViewModeChange);\n const hasVisibleTrailingActions =\n showTrailingActions && trailingActions.length > 0;\n const hasVisibleCustomToolbar = showCustomToolbar && Boolean(customToolbar);\n const hasVisibleCompactToolbar =\n showCustomToolbar && Boolean(compactToolbar ?? customToolbar);\n const selectedRowCountLabel = labels.selectedRows(selectedRowIds.length);\n\n React.useEffect(() => {\n if (!isCompactSearchVisible) {\n return;\n }\n\n compactSearchInputRef.current?.focus();\n }, [isCompactSearchVisible]);\n\n if (\n !hasVisibleTitle &&\n !hasVisibleSearch &&\n !hasVisiblePrimaryActions &&\n !hasVisibleSelectionActions &&\n !hasVisibleOptions &&\n !hasVisibleViewToggle &&\n !hasVisibleTrailingActions &&\n !hasVisibleCustomToolbar &&\n !hasVisibleCompactToolbar\n ) {\n return null;\n }\n\n return (\n
      \n {showTitle && (title || description) ? (\n
      \n {title ? (\n \n {title}\n

    BJkZUm&7(|Ok}YgvRYY8)@@^}4zO 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 z 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 literal 95258 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 m|Lz%XoB#j-21!IgR09C}LV#hFEo$Qc0000yi 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 m=lpvd1w# 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