diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3e106df..fb58eae 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,7 +15,7 @@ jobs: - name: Setup pnpm uses: pnpm/action-setup@v6 with: - version: 11.17.0 + version: 11.21.0 - name: Setup Node uses: actions/setup-node@v7 @@ -64,3 +64,11 @@ jobs: - name: Browser accessibility and layout tests run: pnpm test:browser + + - name: Upload Playwright failure artifacts + if: failure() + uses: actions/upload-artifact@v7 + with: + name: playwright-failure-${{ github.run_attempt }} + path: test-results + retention-days: 7 diff --git a/CHANGELOG.md b/CHANGELOG.md index 736bd67..d242d1d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,79 @@ # Changelog -## Unreleased +## 5.0.0 - 2026-08-13 -No changes yet. +Version 5 upgrades the package's TanStack-facing API to TanStack React Table +v9. Existing `DataTable` props, entrypoints, persisted state, saved views, and +URL-state formats remain supported unless called out below. + +### Breaking changes + +- `DataTableColumnDef` now follows TanStack Table v9. Rename the column option + `sortingFn` to `sortFn`. +- Values in the `aggregationFns` registry are now context-based + `DataTableAggregationFn` definitions with an `aggregate` method instead of + v8 callables. +- `apiRef.current.getTable()` returns a v9 table instance. Read its state from + `table.store.state`, use `getPrePaginatedRowModel()`, and use v9's logical + `start` / `end` pinning state and method families. +- Row, cell, column, and header methods are prototype methods in v9. Keep them + bound to their instance instead of destructuring, spreading, or passing them + as bare callbacks. +- TanStack's `getIsSomeRowsSelected()` and + `getIsSomePageRowsSelected()` now mean at least one selected row, including + the all-selected case. Combine them with the matching `getIsAll*` predicate + when computing an indeterminate state. +- Table row data must be a record or array; primitive row values are no longer + supported. +- Consumers that import raw TanStack `Table`, `Row`, `Column`, `Cell`, + `Header`, or `ColumnDef` types must supply v9's leading feature generic. + Project-owned `DataTable*` types already contain that generic. + +The wrapper's `apiRef.current.getState()` method and public/persisted +`columnPinning: { left, right }` contract are unchanged. See +[`docs/Migration.md`](./docs/Migration.md) for before/after examples and the +full compatibility boundary. + +### TanStack Table v9 migration + +- Upgraded `@tanstack/react-table` to v9.1.2 without using the deprecated + `useLegacyTable` bridge. +- Added one explicit project feature registry for filtering, faceting, + grouping/aggregation, sorting, pagination, expansion, visibility, ordering, + sizing/resizing, selection, and row/column pinning. +- Moved optional row models and function registries into v9 feature slots and + replaced `useReactTable` with `useTable`. +- Contained v9's feature generic behind project-owned types so adapter and + consumer code does not need to repeat the registry type. +- Preserved the wrapper's physical `left` / `right` column-pinning state at + props, persistence, URL state, saved views, and API snapshots while adapting + it to v9's internal `start` / `end` regions. +- Added coverage for v9 context-based custom aggregation definitions. + +### Validation + +- 318 unit/integration tests and 11 browser accessibility/layout tests +- lint, package/demo typechecks and builds, public API snapshot, + packed-consumer build, bundle budgets, frozen install, and dependency audit + +## 4.5.1 - 2026-08-12 + +Version 4.5.1 refreshes the development and runtime dependencies without +changing the public API. + +### Maintenance + +- Updated pnpm, React Virtual, Playwright, React type definitions, ESLint, + jsdom, shadcn, TypeScript ESLint, and Vite dependencies. +- Synchronized the pnpm version used by local development and CI. +- Kept TanStack React Table on the compatible v8 release line; v9 requires a + separate API migration. + +### Validation + +- 317 unit/integration tests and 11 browser accessibility/layout tests +- lint, package/demo typechecks and builds, public API snapshot, + packed-consumer build, bundle budgets, and dependency audit ## 4.5.0 - 2026-08-11 diff --git a/README.md b/README.md index d2086e2..6ca528e 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,31 @@ 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 5.0.0 + +Version 5 upgrades to TanStack React Table v9.1.2 and uses `useTable` with an +explicit feature registry rather than the deprecated legacy bridge. + +Direct TanStack-facing code must: + +- rename column `sortingFn` options to `sortFn`; +- replace callable custom aggregations with context-based + `DataTableAggregationFn` definitions; +- read an underlying table snapshot from `table.store.state` instead of + `table.getState()`; +- use `getPrePaginatedRowModel()` and logical `start` / `end` pinning on the + table returned by `apiRef.current.getTable()`; +- keep row/cell/column/header methods bound to their instances; and +- use record or array row data rather than primitive rows. + +The wrapper-owned `apiRef.current.getState()` method and public/persisted +`columnPinning: { left, right }` contract remain unchanged. Raw TanStack types +now take a leading feature generic; package-owned `DataTable*` types already +contain it. + +See [the 5.0 migration guide](./docs/Migration.md) for before/after examples, +the complete breaking-change list, and the compatibility boundary. + ## Breaking Changes In 3.0.0 - package output is ESM-only; `require()`/CommonJS entrypoints were removed @@ -47,6 +72,11 @@ integrations. See - toolbar search now filters client-side tables by default; disable with `manualFiltering` or `enableToolbarQueryFiltering={false}` - column filters, CSV export, row expansion, density, column pinning/reordering, selection policies, labels, and column preference persistence were added +## 4.5.1 Compatibility + +Version 4.5.1 is a dependency-maintenance release with no public API changes. +It remains on TanStack React Table v8; v9 requires a separate migration. + ## 4.5.0 Compatibility Version 4.5.0 adds optional scrollbar visibility control and corrects @@ -70,16 +100,17 @@ public prop, type, or entrypoint was removed. Version 4.0.0 removes no public prop, type, or package entrypoint. It is a 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. +The previously planned wrapper API cleanup was ultimately deferred beyond +5.0; version 5 uses its major boundary for the TanStack v9 migration. ## Installation ```bash -pnpm add github:Dastari/data-table-pro#v4.5.0 +pnpm add github:Dastari/data-table-pro#v5.0.0 ``` This package is installed from GitHub refs. It is not published to npm. -Release tags such as `v4.5.0` include committed `dist/` output, so consumers +Release tags such as `v5.0.0` include committed `dist/` output, so consumers do not need to allow package build scripts during install. Peer dependencies: @@ -651,7 +682,7 @@ hooks, and loading states. ## Quality Gates Contributors need a jsdom 30-supported Node.js release (`^22.22.2`, -`^24.15.0`, or `>=26`) and pnpm 11.17.0. CI uses Node.js 22.22.2. +`^24.15.0`, or `>=26`) and pnpm 11.21.0. CI uses Node.js 22.22.2. TypeScript 7 provides the `tsc` command; the `typescript` package name intentionally points to the official TypeScript 6 compatibility package because ESLint and declaration bundling still require the compiler API that diff --git a/api-snapshots/public-api.md b/api-snapshots/public-api.md index d1e34d6..878a7ed 100644 --- a/api-snapshots/public-api.md +++ b/api-snapshots/public-api.md @@ -67,8 +67,8 @@ 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, 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, DataTableScrollbarVisibility, 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 DataTableProps } from './types-BGNR6Ymh.js'; +export { a as DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, b as DataTableAccessibilityOptions, c as DataTableActionErrorContext, d as DataTableActionErrorSource, e as DataTableAggregationFn, f as DataTableAlign, g as DataTableApi, h as DataTableAutoPageSizeConfig, i as DataTableCardRendererProps, j as DataTableCardSizing, k as DataTableCardVirtualizationConfig, l as DataTableCellCoordinate, m as DataTableCellEditRenderProps, n as DataTableCellOverflow, o as DataTableCellSelection, p as DataTableClipboardConfig, q as DataTableClipboardCopyOptions, r as DataTableClipboardCopyScope, s as DataTableClipboardPasteContext, t as DataTableColumnDef, u as DataTableColumnFilterConfig, v as DataTableColumnFilterOperator, w as DataTableColumnFilterOption, x as DataTableColumnFilterRangeValue, y as DataTableColumnFilterType, z as DataTableColumnFixed, A as DataTableColumnGroupDef, B as DataTableColumnMeta, C as DataTableColumnPinningState, E as DataTableColumnPrefs, F as DataTableColumnType, G as DataTableColumnVisibilityOption, H as DataTableContainerBreakpoint, I as DataTableCsvExportOptions, J as DataTableCsvExportScope, K as DataTableDensity, L as DataTableDetailPanel, M as DataTableDragAndDropConfig, N as DataTableEditableRowsConfig, O as DataTableEmptyStateContext, P as DataTableExpandedRowProps, Q as DataTableFacetedFilterOptions, R as DataTableFileUploadConfig, S as DataTableGridCommandContext, T as DataTableGridCommands, U as DataTableHiddenRowsConfig, V as DataTableInfiniteScroll, W as DataTableInitialState, X as DataTableInteractiveGridOptions, Y as DataTableLabels, Z as DataTableLoadingState, _ as DataTablePersistenceConfig, $ as DataTablePersistenceOperation, a0 as DataTablePersistencePayload, a1 as DataTablePersistenceSlice, a2 as DataTablePersistenceStorage, a3 as DataTableResetOptions, a4 as DataTableRowAction, a5 as DataTableRowClassNameContext, a6 as DataTableRowLoadingState, a7 as DataTableSavedView, a8 as DataTableSavedViewSlice, a9 as DataTableSavedViewsChangeOperation, aa as DataTableSavedViewsConfig, ab as DataTableSavedViewsPayload, ac as DataTableScrollbarVisibility, ad as DataTableSelectionAction, ae as DataTableSelectionActionContext, af as DataTableState, ag as DataTableStateOverlay, ah as DataTableStateOverlayContext, ai as DataTableSummaryRow, aj as DataTableToolbarAction, ak as DataTableToolbarDataOperations, al as DataTableToolbarVisibility, am as DataTableViewMode, an as DataTableVirtualizationConfig, ao as alignClassName, ap as canEditRow, aq as canUseRowAction, ar as cellAlignClassName, as as headerAlignClassName, at as hideOnClassName, au as isHiddenAtContainerWidth, av as isRowVisible, aw as resolveColumnAlign, ax as resolveRowActionLabel, ay as rowSelectionStateFromRows } from './types-BGNR6Ymh.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, 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, scrollbarVisibility, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; @@ -80,8 +80,8 @@ export { DataTable, DataTableProps }; ```ts import * as React from 'react'; -import { DataTableProps } 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, DataTableScrollbarVisibility, 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 DataTableProps } from './types-BGNR6Ymh.js'; +export { a as DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, b as DataTableAccessibilityOptions, c as DataTableActionErrorContext, d as DataTableActionErrorSource, e as DataTableAggregationFn, f as DataTableAlign, g as DataTableApi, h as DataTableAutoPageSizeConfig, i as DataTableCardRendererProps, j as DataTableCardSizing, k as DataTableCardVirtualizationConfig, l as DataTableCellCoordinate, m as DataTableCellEditRenderProps, n as DataTableCellOverflow, o as DataTableCellSelection, p as DataTableClipboardConfig, q as DataTableClipboardCopyOptions, r as DataTableClipboardCopyScope, s as DataTableClipboardPasteContext, t as DataTableColumnDef, u as DataTableColumnFilterConfig, v as DataTableColumnFilterOperator, w as DataTableColumnFilterOption, x as DataTableColumnFilterRangeValue, y as DataTableColumnFilterType, z as DataTableColumnFixed, A as DataTableColumnGroupDef, B as DataTableColumnMeta, C as DataTableColumnPinningState, E as DataTableColumnPrefs, F as DataTableColumnType, G as DataTableColumnVisibilityOption, H as DataTableContainerBreakpoint, I as DataTableCsvExportOptions, J as DataTableCsvExportScope, K as DataTableDensity, L as DataTableDetailPanel, M as DataTableDragAndDropConfig, N as DataTableEditableRowsConfig, O as DataTableEmptyStateContext, P as DataTableExpandedRowProps, Q as DataTableFacetedFilterOptions, R as DataTableFileUploadConfig, S as DataTableGridCommandContext, T as DataTableGridCommands, U as DataTableHiddenRowsConfig, V as DataTableInfiniteScroll, W as DataTableInitialState, X as DataTableInteractiveGridOptions, Y as DataTableLabels, Z as DataTableLoadingState, _ as DataTablePersistenceConfig, $ as DataTablePersistenceOperation, a0 as DataTablePersistencePayload, a1 as DataTablePersistenceSlice, a2 as DataTablePersistenceStorage, a3 as DataTableResetOptions, a4 as DataTableRowAction, a5 as DataTableRowClassNameContext, a6 as DataTableRowLoadingState, a7 as DataTableSavedView, a8 as DataTableSavedViewSlice, a9 as DataTableSavedViewsChangeOperation, aa as DataTableSavedViewsConfig, ab as DataTableSavedViewsPayload, ac as DataTableScrollbarVisibility, ad as DataTableSelectionAction, ae as DataTableSelectionActionContext, af as DataTableState, ag as DataTableStateOverlay, ah as DataTableStateOverlayContext, ai as DataTableSummaryRow, aj as DataTableToolbarAction, ak as DataTableToolbarDataOperations, al as DataTableToolbarVisibility, am as DataTableViewMode, an as DataTableVirtualizationConfig, ao as alignClassName, ap as canEditRow, aq as canUseRowAction, ar as cellAlignClassName, as as headerAlignClassName, at as hideOnClassName, au as isHiddenAtContainerWidth, av as isRowVisible, aw as resolveColumnAlign, ax as resolveRowActionLabel, ay as rowSelectionStateFromRows } from './types-BGNR6Ymh.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, 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, scrollbarVisibility, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; @@ -93,8 +93,8 @@ export { DataTable, DataTableProps }; ```ts import * as React from 'react'; -import { DataTableProps } 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, DataTableScrollbarVisibility, 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 DataTableProps } from './types-BGNR6Ymh.js'; +export { a as DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, b as DataTableAccessibilityOptions, c as DataTableActionErrorContext, d as DataTableActionErrorSource, e as DataTableAggregationFn, f as DataTableAlign, g as DataTableApi, h as DataTableAutoPageSizeConfig, i as DataTableCardRendererProps, j as DataTableCardSizing, k as DataTableCardVirtualizationConfig, l as DataTableCellCoordinate, m as DataTableCellEditRenderProps, n as DataTableCellOverflow, o as DataTableCellSelection, p as DataTableClipboardConfig, q as DataTableClipboardCopyOptions, r as DataTableClipboardCopyScope, s as DataTableClipboardPasteContext, t as DataTableColumnDef, u as DataTableColumnFilterConfig, v as DataTableColumnFilterOperator, w as DataTableColumnFilterOption, x as DataTableColumnFilterRangeValue, y as DataTableColumnFilterType, z as DataTableColumnFixed, A as DataTableColumnGroupDef, B as DataTableColumnMeta, C as DataTableColumnPinningState, E as DataTableColumnPrefs, F as DataTableColumnType, G as DataTableColumnVisibilityOption, H as DataTableContainerBreakpoint, I as DataTableCsvExportOptions, J as DataTableCsvExportScope, K as DataTableDensity, L as DataTableDetailPanel, M as DataTableDragAndDropConfig, N as DataTableEditableRowsConfig, O as DataTableEmptyStateContext, P as DataTableExpandedRowProps, Q as DataTableFacetedFilterOptions, R as DataTableFileUploadConfig, S as DataTableGridCommandContext, T as DataTableGridCommands, U as DataTableHiddenRowsConfig, V as DataTableInfiniteScroll, W as DataTableInitialState, X as DataTableInteractiveGridOptions, Y as DataTableLabels, Z as DataTableLoadingState, _ as DataTablePersistenceConfig, $ as DataTablePersistenceOperation, a0 as DataTablePersistencePayload, a1 as DataTablePersistenceSlice, a2 as DataTablePersistenceStorage, a3 as DataTableResetOptions, a4 as DataTableRowAction, a5 as DataTableRowClassNameContext, a6 as DataTableRowLoadingState, a7 as DataTableSavedView, a8 as DataTableSavedViewSlice, a9 as DataTableSavedViewsChangeOperation, aa as DataTableSavedViewsConfig, ab as DataTableSavedViewsPayload, ac as DataTableScrollbarVisibility, ad as DataTableSelectionAction, ae as DataTableSelectionActionContext, af as DataTableState, ag as DataTableStateOverlay, ah as DataTableStateOverlayContext, ai as DataTableSummaryRow, aj as DataTableToolbarAction, ak as DataTableToolbarDataOperations, al as DataTableToolbarVisibility, am as DataTableViewMode, an as DataTableVirtualizationConfig, ao as alignClassName, ap as canEditRow, aq as canUseRowAction, ar as cellAlignClassName, as as headerAlignClassName, at as hideOnClassName, au as isHiddenAtContainerWidth, av as isRowVisible, aw as resolveColumnAlign, ax as resolveRowActionLabel, ay as rowSelectionStateFromRows } from './types-BGNR6Ymh.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, 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, scrollbarVisibility, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; @@ -106,8 +106,8 @@ export { DataTable, DataTableProps }; ```ts import * as React from 'react'; -import { DataTableProps } 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, DataTableScrollbarVisibility, 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 DataTableProps } from './types-BGNR6Ymh.js'; +export { a as DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, b as DataTableAccessibilityOptions, c as DataTableActionErrorContext, d as DataTableActionErrorSource, e as DataTableAggregationFn, f as DataTableAlign, g as DataTableApi, h as DataTableAutoPageSizeConfig, i as DataTableCardRendererProps, j as DataTableCardSizing, k as DataTableCardVirtualizationConfig, l as DataTableCellCoordinate, m as DataTableCellEditRenderProps, n as DataTableCellOverflow, o as DataTableCellSelection, p as DataTableClipboardConfig, q as DataTableClipboardCopyOptions, r as DataTableClipboardCopyScope, s as DataTableClipboardPasteContext, t as DataTableColumnDef, u as DataTableColumnFilterConfig, v as DataTableColumnFilterOperator, w as DataTableColumnFilterOption, x as DataTableColumnFilterRangeValue, y as DataTableColumnFilterType, z as DataTableColumnFixed, A as DataTableColumnGroupDef, B as DataTableColumnMeta, C as DataTableColumnPinningState, E as DataTableColumnPrefs, F as DataTableColumnType, G as DataTableColumnVisibilityOption, H as DataTableContainerBreakpoint, I as DataTableCsvExportOptions, J as DataTableCsvExportScope, K as DataTableDensity, L as DataTableDetailPanel, M as DataTableDragAndDropConfig, N as DataTableEditableRowsConfig, O as DataTableEmptyStateContext, P as DataTableExpandedRowProps, Q as DataTableFacetedFilterOptions, R as DataTableFileUploadConfig, S as DataTableGridCommandContext, T as DataTableGridCommands, U as DataTableHiddenRowsConfig, V as DataTableInfiniteScroll, W as DataTableInitialState, X as DataTableInteractiveGridOptions, Y as DataTableLabels, Z as DataTableLoadingState, _ as DataTablePersistenceConfig, $ as DataTablePersistenceOperation, a0 as DataTablePersistencePayload, a1 as DataTablePersistenceSlice, a2 as DataTablePersistenceStorage, a3 as DataTableResetOptions, a4 as DataTableRowAction, a5 as DataTableRowClassNameContext, a6 as DataTableRowLoadingState, a7 as DataTableSavedView, a8 as DataTableSavedViewSlice, a9 as DataTableSavedViewsChangeOperation, aa as DataTableSavedViewsConfig, ab as DataTableSavedViewsPayload, ac as DataTableScrollbarVisibility, ad as DataTableSelectionAction, ae as DataTableSelectionActionContext, af as DataTableState, ag as DataTableStateOverlay, ah as DataTableStateOverlayContext, ai as DataTableSummaryRow, aj as DataTableToolbarAction, ak as DataTableToolbarDataOperations, al as DataTableToolbarVisibility, am as DataTableViewMode, an as DataTableVirtualizationConfig, ao as alignClassName, ap as canEditRow, aq as canUseRowAction, ar as cellAlignClassName, as as headerAlignClassName, at as hideOnClassName, au as isHiddenAtContainerWidth, av as isRowVisible, aw as resolveColumnAlign, ax as resolveRowActionLabel, ay as rowSelectionStateFromRows } from './types-BGNR6Ymh.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, 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, scrollbarVisibility, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; @@ -119,8 +119,8 @@ export { DataTable, DataTableProps }; ```ts import * as React from 'react'; -import { DataTableProps } 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, DataTableScrollbarVisibility, 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 DataTableProps } from './types-BGNR6Ymh.js'; +export { a as DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, b as DataTableAccessibilityOptions, c as DataTableActionErrorContext, d as DataTableActionErrorSource, e as DataTableAggregationFn, f as DataTableAlign, g as DataTableApi, h as DataTableAutoPageSizeConfig, i as DataTableCardRendererProps, j as DataTableCardSizing, k as DataTableCardVirtualizationConfig, l as DataTableCellCoordinate, m as DataTableCellEditRenderProps, n as DataTableCellOverflow, o as DataTableCellSelection, p as DataTableClipboardConfig, q as DataTableClipboardCopyOptions, r as DataTableClipboardCopyScope, s as DataTableClipboardPasteContext, t as DataTableColumnDef, u as DataTableColumnFilterConfig, v as DataTableColumnFilterOperator, w as DataTableColumnFilterOption, x as DataTableColumnFilterRangeValue, y as DataTableColumnFilterType, z as DataTableColumnFixed, A as DataTableColumnGroupDef, B as DataTableColumnMeta, C as DataTableColumnPinningState, E as DataTableColumnPrefs, F as DataTableColumnType, G as DataTableColumnVisibilityOption, H as DataTableContainerBreakpoint, I as DataTableCsvExportOptions, J as DataTableCsvExportScope, K as DataTableDensity, L as DataTableDetailPanel, M as DataTableDragAndDropConfig, N as DataTableEditableRowsConfig, O as DataTableEmptyStateContext, P as DataTableExpandedRowProps, Q as DataTableFacetedFilterOptions, R as DataTableFileUploadConfig, S as DataTableGridCommandContext, T as DataTableGridCommands, U as DataTableHiddenRowsConfig, V as DataTableInfiniteScroll, W as DataTableInitialState, X as DataTableInteractiveGridOptions, Y as DataTableLabels, Z as DataTableLoadingState, _ as DataTablePersistenceConfig, $ as DataTablePersistenceOperation, a0 as DataTablePersistencePayload, a1 as DataTablePersistenceSlice, a2 as DataTablePersistenceStorage, a3 as DataTableResetOptions, a4 as DataTableRowAction, a5 as DataTableRowClassNameContext, a6 as DataTableRowLoadingState, a7 as DataTableSavedView, a8 as DataTableSavedViewSlice, a9 as DataTableSavedViewsChangeOperation, aa as DataTableSavedViewsConfig, ab as DataTableSavedViewsPayload, ac as DataTableScrollbarVisibility, ad as DataTableSelectionAction, ae as DataTableSelectionActionContext, af as DataTableState, ag as DataTableStateOverlay, ah as DataTableStateOverlayContext, ai as DataTableSummaryRow, aj as DataTableToolbarAction, ak as DataTableToolbarDataOperations, al as DataTableToolbarVisibility, am as DataTableViewMode, an as DataTableVirtualizationConfig, ao as alignClassName, ap as canEditRow, aq as canUseRowAction, ar as cellAlignClassName, as as headerAlignClassName, at as hideOnClassName, au as isHiddenAtContainerWidth, av as isRowVisible, aw as resolveColumnAlign, ax as resolveRowActionLabel, ay as rowSelectionStateFromRows } from './types-BGNR6Ymh.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, 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, scrollbarVisibility, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; @@ -132,8 +132,8 @@ export { DataTable, DataTableProps }; ```ts import * as React from 'react'; -import { DataTableProps } 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, DataTableScrollbarVisibility, 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 DataTableProps } from './types-BGNR6Ymh.js'; +export { a as DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, b as DataTableAccessibilityOptions, c as DataTableActionErrorContext, d as DataTableActionErrorSource, e as DataTableAggregationFn, f as DataTableAlign, g as DataTableApi, h as DataTableAutoPageSizeConfig, i as DataTableCardRendererProps, j as DataTableCardSizing, k as DataTableCardVirtualizationConfig, l as DataTableCellCoordinate, m as DataTableCellEditRenderProps, n as DataTableCellOverflow, o as DataTableCellSelection, p as DataTableClipboardConfig, q as DataTableClipboardCopyOptions, r as DataTableClipboardCopyScope, s as DataTableClipboardPasteContext, t as DataTableColumnDef, u as DataTableColumnFilterConfig, v as DataTableColumnFilterOperator, w as DataTableColumnFilterOption, x as DataTableColumnFilterRangeValue, y as DataTableColumnFilterType, z as DataTableColumnFixed, A as DataTableColumnGroupDef, B as DataTableColumnMeta, C as DataTableColumnPinningState, E as DataTableColumnPrefs, F as DataTableColumnType, G as DataTableColumnVisibilityOption, H as DataTableContainerBreakpoint, I as DataTableCsvExportOptions, J as DataTableCsvExportScope, K as DataTableDensity, L as DataTableDetailPanel, M as DataTableDragAndDropConfig, N as DataTableEditableRowsConfig, O as DataTableEmptyStateContext, P as DataTableExpandedRowProps, Q as DataTableFacetedFilterOptions, R as DataTableFileUploadConfig, S as DataTableGridCommandContext, T as DataTableGridCommands, U as DataTableHiddenRowsConfig, V as DataTableInfiniteScroll, W as DataTableInitialState, X as DataTableInteractiveGridOptions, Y as DataTableLabels, Z as DataTableLoadingState, _ as DataTablePersistenceConfig, $ as DataTablePersistenceOperation, a0 as DataTablePersistencePayload, a1 as DataTablePersistenceSlice, a2 as DataTablePersistenceStorage, a3 as DataTableResetOptions, a4 as DataTableRowAction, a5 as DataTableRowClassNameContext, a6 as DataTableRowLoadingState, a7 as DataTableSavedView, a8 as DataTableSavedViewSlice, a9 as DataTableSavedViewsChangeOperation, aa as DataTableSavedViewsConfig, ab as DataTableSavedViewsPayload, ac as DataTableScrollbarVisibility, ad as DataTableSelectionAction, ae as DataTableSelectionActionContext, af as DataTableState, ag as DataTableStateOverlay, ah as DataTableStateOverlayContext, ai as DataTableSummaryRow, aj as DataTableToolbarAction, ak as DataTableToolbarDataOperations, al as DataTableToolbarVisibility, am as DataTableViewMode, an as DataTableVirtualizationConfig, ao as alignClassName, ap as canEditRow, aq as canUseRowAction, ar as cellAlignClassName, as as headerAlignClassName, at as hideOnClassName, au as isHiddenAtContainerWidth, av as isRowVisible, aw as resolveColumnAlign, ax as resolveRowActionLabel, ay as rowSelectionStateFromRows } from './types-BGNR6Ymh.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, 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, scrollbarVisibility, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; @@ -144,19 +144,20 @@ export { DataTable, DataTableProps }; ## url-state.d.ts ```ts -import { ColumnFiltersState, VisibilityState, ColumnOrderState, ColumnPinningState, GroupingState, RowSelectionState, SortingState, Updater } from '@tanstack/react-table'; -import { DataTableDensity, DataTableViewMode, DataTableState } from './types.js'; +import { ColumnFiltersState, ColumnVisibilityState, ColumnOrderState, GroupingState, SortingState, Updater } from '@tanstack/react-table'; +import { K as DataTableDensity, C as DataTableColumnPinningState, am as DataTableViewMode, af as DataTableState } from './types-BGNR6Ymh.js'; import 'react'; type DataTableUrlStateSlice = "columnFilters" | "columnVisibility" | "density" | "columnOrder" | "columnPinning" | "grouping" | "rowSelection"; +type DataTableUrlRowSelectionState = Record; type DataTableUrlEnhancedState = { columnFilters: ColumnFiltersState; - columnVisibility: VisibilityState; + columnVisibility: ColumnVisibilityState; density: DataTableDensity; columnOrder: ColumnOrderState; - columnPinning: ColumnPinningState; + columnPinning: DataTableColumnPinningState; grouping: GroupingState; - rowSelection: RowSelectionState; + rowSelection: DataTableUrlRowSelectionState; }; type DataTableUrlStateMigrationPayload = { version: unknown; @@ -194,18 +195,18 @@ declare function useDataTableUrlState({ keyPrefix, defaultPageSize, defaultSort, setShowHiddenRows: (showHidden: boolean) => void; columnFilters: ColumnFiltersState; setColumnFilters: (updater: Updater) => void; - columnVisibility: VisibilityState; - setColumnVisibility: (updater: Updater) => void; + columnVisibility: ColumnVisibilityState; + setColumnVisibility: (updater: Updater) => void; density: DataTableDensity; setDensity: (updater: Updater) => void; columnOrder: ColumnOrderState; setColumnOrder: (updater: Updater) => void; - columnPinning: ColumnPinningState; - setColumnPinning: (updater: Updater) => void; + columnPinning: DataTableColumnPinningState; + setColumnPinning: (updater: Updater) => void; grouping: GroupingState; setGrouping: (updater: Updater) => void; - rowSelection: RowSelectionState; - setRowSelection: (updater: Updater) => void; + rowSelection: DataTableUrlRowSelectionState; + setRowSelection: (updater: Updater) => void; tableState: Partial; schemaVersion: string; clearEnhancedState: () => void; @@ -220,9 +221,9 @@ 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, 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, DataTableScrollbarVisibility, 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 { ExpandedState, OnChangeFn, ColumnSizingState, RowPinningPosition, PaginationState, SortingState, Updater, ColumnFiltersState, ColumnOrderState, RowPinningState, GroupingState, ColumnVisibilityState } from '@tanstack/react-table'; +import { D as DataTableProps, az as DataTableTanStackRow, Y as DataTableLabels, t as DataTableColumnDef, aA as DataTableTanStackColumn, K as DataTableDensity, a6 as DataTableRowLoadingState, aB as DataTableTanStackCell, o as DataTableCellSelection, aC as DataTableTanStackTable, aD as DataTableTanStackHeader, a7 as DataTableSavedView, N as DataTableEditableRowsConfig, a4 as DataTableRowAction, L as DataTableDetailPanel, aE as DataTableTanStackColumnDef, C as DataTableColumnPinningState, aF as DataTableTanStackFilterFnOption } from './types-BGNR6Ymh.js'; +export { a as DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, b as DataTableAccessibilityOptions, c as DataTableActionErrorContext, d as DataTableActionErrorSource, e as DataTableAggregationFn, f as DataTableAlign, g as DataTableApi, h as DataTableAutoPageSizeConfig, i as DataTableCardRendererProps, j as DataTableCardSizing, k as DataTableCardVirtualizationConfig, l as DataTableCellCoordinate, m as DataTableCellEditRenderProps, n as DataTableCellOverflow, p as DataTableClipboardConfig, q as DataTableClipboardCopyOptions, r as DataTableClipboardCopyScope, s as DataTableClipboardPasteContext, u as DataTableColumnFilterConfig, v as DataTableColumnFilterOperator, w as DataTableColumnFilterOption, x as DataTableColumnFilterRangeValue, y as DataTableColumnFilterType, z as DataTableColumnFixed, A as DataTableColumnGroupDef, B as DataTableColumnMeta, E as DataTableColumnPrefs, F as DataTableColumnType, G as DataTableColumnVisibilityOption, H as DataTableContainerBreakpoint, I as DataTableCsvExportOptions, J as DataTableCsvExportScope, M as DataTableDragAndDropConfig, O as DataTableEmptyStateContext, P as DataTableExpandedRowProps, Q as DataTableFacetedFilterOptions, R as DataTableFileUploadConfig, S as DataTableGridCommandContext, T as DataTableGridCommands, U as DataTableHiddenRowsConfig, V as DataTableInfiniteScroll, W as DataTableInitialState, X as DataTableInteractiveGridOptions, Z as DataTableLoadingState, _ as DataTablePersistenceConfig, $ as DataTablePersistenceOperation, a0 as DataTablePersistencePayload, a1 as DataTablePersistenceSlice, a2 as DataTablePersistenceStorage, a3 as DataTableResetOptions, a5 as DataTableRowClassNameContext, a8 as DataTableSavedViewSlice, a9 as DataTableSavedViewsChangeOperation, aa as DataTableSavedViewsConfig, ab as DataTableSavedViewsPayload, ac as DataTableScrollbarVisibility, ad as DataTableSelectionAction, ae as DataTableSelectionActionContext, af as DataTableState, ag as DataTableStateOverlay, ah as DataTableStateOverlayContext, ai as DataTableSummaryRow, aj as DataTableToolbarAction, ak as DataTableToolbarDataOperations, al as DataTableToolbarVisibility, am as DataTableViewMode, an as DataTableVirtualizationConfig, ao as alignClassName, ap as canEditRow, aq as canUseRowAction, ar as cellAlignClassName, as as headerAlignClassName, at as hideOnClassName, au as isHiddenAtContainerWidth, av as isRowVisible, aw as resolveColumnAlign, ax as resolveRowActionLabel, ay as rowSelectionStateFromRows } from './types-BGNR6Ymh.js'; import { D as DataTableUiKit, a as DataTableUiClassNames } from './ui-kit-C6Z8X6oi.js'; type DataTableCardPanelProps = { @@ -246,7 +247,7 @@ type DataTableCardPanelProps = { infiniteScroll: DataTableProps["infiniteScroll"]; localSearchValue: string; onRowClick: DataTableProps["onRowClick"]; - renderedRows: Array>; + renderedRows: Array>; detailPanel: DataTableProps["detailPanel"]; resolvedLabels: DataTableLabels; resolvedLoadingRowCount: number; @@ -289,7 +290,7 @@ declare function useColumnLayout({ columns, columnSizing, editableRows, e hasRowExpansion: boolean; layoutMode: ColumnLayoutMode; uiClassNames: DataTableUiClassNames; - visibleLeafColumns: Array>; + visibleLeafColumns: Array>; }): { columnLayouts: Map; explicitlySizedColumnIds: Set; @@ -344,12 +345,12 @@ type DataTableBodyRowProps = { pinnedPosition?: Exclude; originalRow: TData; detailPanel: DataTableProps["detailPanel"]; - row: Row; + row: DataTableTanStackRow; rowIndex: number; setDraftValues: React.Dispatch>>; stripedRows: boolean; uiClassNames: DataTableUiClassNames; - visibleCells: Array>; + 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; @@ -392,15 +393,15 @@ type DataTableTablePanelProps = { localSearchValue: string; onRowClick: DataTableProps["onRowClick"]; primeColumnForResize: (columnId: string, currentSize: number) => void; - renderedRows: Array>; + renderedRows: Array>; detailPanel: DataTableProps["detailPanel"]; - topPinnedRows: Array>; - bottomPinnedRows: Array>; + topPinnedRows: Array>; + bottomPinnedRows: Array>; reorderColumn: (sourceColumnId: string, targetColumnId: string) => void; resetColumnSize: (columnId: string) => void; resolvedLabels: DataTableLabels; rowsToRender: Array<{ - row: Row; + row: DataTableTanStackRow; rowIndex: number; }>; ScrollArea: DataTableUiKit["ScrollArea"]; @@ -413,7 +414,7 @@ type DataTableTablePanelProps = { stickyHeader: boolean; stripedRows: boolean; summaryRows: NonNullable["summaryRows"]>; - table: Table; + table: DataTableTanStackTable; tableClassName: string | undefined; tableContainerClassName: string | undefined; Table: DataTableUiKit["Table"]; @@ -432,7 +433,7 @@ type DataTableTablePanelProps = { virtualPaddingBottom: number; virtualPaddingTop: number; visibleLeafColumnCount: number; - visibleLeafColumns: Array>; + visibleLeafColumns: Array>; }; 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, scrollbarVisibility, 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; @@ -461,8 +462,8 @@ type DataTableHeaderCellProps = { enableColumnResizing: boolean; gridColumnIndex?: number; gridMode: boolean; - header: Header; - headerGroupHeaders: Array>; + header: DataTableTanStackHeader; + headerGroupHeaders: Array>; layout: DataTableColumnLayout; primeColumnForResize: (columnId: string, currentSize: number) => void; reorderColumn: (sourceColumnId: string, targetColumnId: string) => void; @@ -514,7 +515,7 @@ type DataTableToolbarSectionProps = { selectionActions: DataTableProps["selectionActions"]; savedViews: Array; showHiddenRows: boolean; - table: Table; + table: DataTableTanStackTable; title: string | undefined; titleId: string | undefined; toolbarQueryPlaceholder: string; @@ -572,8 +573,8 @@ declare function useDataTableColumns({ Button, Checkbox, DataTableRowActi rowActions: Array>; saveEdit: (row: TData) => Promise; startEditingRow: (row: TData, rowId: string) => void; - tableRef: React.RefObject | null>; -}): ColumnDef[]; + tableRef: React.RefObject | null>; +}): DataTableTanStackColumnDef[]; type DataTableColumnGroupPathSegment = { id: string; @@ -581,6 +582,27 @@ type DataTableColumnGroupPathSegment = { }; type DataTableColumnGroupPaths = ReadonlyMap>; +type DataTableRowsToRender = Array<{ + row: DataTableTanStackRow; + rowIndex: number; +}>; +type DataTableInstanceResult = { + effectivePageCount: number; + footerTotalRowCount: number | undefined; + handleFooterPageIndexChange: (nextPageIndex: number) => void; + handleFooterPageSizeChange: (nextPageSize: number) => void; + isPageCountKnown: boolean; + renderedRows: Array>; + topPinnedRows: Array>; + bottomPinnedRows: Array>; + reorderColumn: (sourceColumnId: string, targetColumnId: string) => void; + rowsToRender: DataTableRowsToRender; + sentinelRef: React.RefObject; + table: DataTableTanStackTable; + virtualPaddingBottom: number; + virtualPaddingTop: number; + visibleLeafColumns: Array>; +}; 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; @@ -588,7 +610,7 @@ declare function useDataTableInstance({ autoResetPageIndex, columnGroupPa dir: NonNullable["dir"]>; currentColumnFilters: ColumnFiltersState; currentColumnOrder: ColumnOrderState; - currentColumnPinning: ColumnPinningState; + currentColumnPinning: DataTableColumnPinningState; currentRowPinning: RowPinningState; currentColumnSizing: ColumnSizingState; currentExpanded: ExpandedState; @@ -597,8 +619,8 @@ declare function useDataTableInstance({ autoResetPageIndex, columnGroupPa currentRowSelection: Record; currentSorting: SortingState; currentViewMode: "table" | "card"; - defaultColumn: Partial>; - effectiveColumnVisibility: VisibilityState; + defaultColumn: Partial>; + effectiveColumnVisibility: ColumnVisibilityState; enableColumnResizing: boolean; enableMultiRowSelection: NonNullable["enableMultiRowSelection"]>; enableRowPinning: DataTableProps["enableRowPinning"]; @@ -609,14 +631,14 @@ declare function useDataTableInstance({ autoResetPageIndex, columnGroupPa getSubRows: DataTableProps["getSubRows"]; aggregationFns: DataTableProps["aggregationFns"]; groupedColumnMode: DataTableProps["groupedColumnMode"]; - globalFilterFn: FilterFnOption | undefined; + globalFilterFn: DataTableTanStackFilterFnOption | undefined; globalFilterValue: string; hasNextPage?: DataTableProps["hasNextPage"]; handleColumnFiltersChange: OnChangeFn; handleColumnOrderChange: OnChangeFn; - handleColumnPinningChange: OnChangeFn; + handleColumnPinningChange: OnChangeFn; handleRowPinningChange: OnChangeFn; - handleColumnVisibilityChange: OnChangeFn; + handleColumnVisibilityChange: OnChangeFn; handleExpandedChange: OnChangeFn; handleGroupingChange: OnChangeFn; infiniteScroll: DataTableProps["infiniteScroll"]; @@ -640,10 +662,10 @@ declare function useDataTableInstance({ autoResetPageIndex, columnGroupPa setLocalColumnSizing: OnChangeFn; setLocalPagination: React.Dispatch>; shouldRenderInitialLoading: boolean; - tableColumns: Array>; + tableColumns: Array>; tableData: Array; tableGetRowId: DataTableProps["getRowId"]; - tableRef: React.RefObject | null>; + tableRef: React.RefObject | null>; tableScrollElement: HTMLElement | null; /** * @deprecated Filtering now runs through TanStack Table. Retained so @@ -653,30 +675,7 @@ declare function useDataTableInstance({ autoResetPageIndex, columnGroupPa totalRowCount: DataTableProps["totalRowCount"]; virtualization: DataTableProps["virtualization"]; viewportHeight: number; -}): { - effectivePageCount: number; - footerTotalRowCount: number | undefined; - handleFooterPageIndexChange: (nextPageIndex: number) => void; - handleFooterPageSizeChange: (nextPageSize: number) => void; - isPageCountKnown: boolean; - renderedRows: Row[]; - topPinnedRows: Row[]; - bottomPinnedRows: Row[]; - reorderColumn: (sourceColumnId: string, targetColumnId: string) => void; - rowsToRender: { - row: Row; - rowIndex: number; - }[]; - sentinelRef: React.RefObject; - table: Table; - virtualPaddingBottom: number; - virtualPaddingTop: number; - visibleLeafColumns: _tanstack_react_table.Column[]; -}; -type DataTableRowsToRender = Array<{ - row: Row; - rowIndex: number; -}>; +}): DataTableInstanceResult; 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"]; @@ -733,10 +732,10 @@ declare function useDataTableState({ columnFilters, columnOrder, columnPi containerWidth: number; currentColumnFilters: ColumnFiltersState; currentColumnOrder: ColumnOrderState; - currentColumnPinning: ColumnPinningState; + currentColumnPinning: DataTableColumnPinningState; currentRowPinning: RowPinningState; currentColumnSizing: ColumnSizingState; - currentColumnVisibility: VisibilityState; + currentColumnVisibility: ColumnVisibilityState; currentDensity: DataTableDensity; currentExpanded: ExpandedState; currentGrouping: GroupingState; @@ -745,7 +744,7 @@ declare function useDataTableState({ columnFilters, columnOrder, columnPi currentShowHiddenRows: boolean; currentSorting: SortingState; currentViewMode: "table" | "card"; - effectiveColumnVisibility: VisibilityState; + effectiveColumnVisibility: ColumnVisibilityState; globalFilterValue: string; handleDensityChange: (nextDensity: DataTableDensity) => void; handleShowHiddenRowsChange: (nextShowHiddenRows: boolean) => void; @@ -757,9 +756,9 @@ declare function useDataTableState({ columnFilters, columnOrder, columnPi selectedRows: TData[]; setCurrentColumnFilters: (updater: _tanstack_react_table.Updater) => void; setCurrentColumnOrder: (updater: _tanstack_react_table.Updater) => void; - setCurrentColumnPinning: (updater: _tanstack_react_table.Updater) => void; + setCurrentColumnPinning: (updater: _tanstack_react_table.Updater) => void; setCurrentRowPinning: (updater: _tanstack_react_table.Updater) => void; - setCurrentColumnVisibility: (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; @@ -798,14 +797,14 @@ declare function useRowEditing({ columns, editableRows, onError, }: { declare function useStableCallback, TResult>(callback: ((...args: TArgs) => TResult) | undefined): (...args: TArgs) => TResult | undefined; -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 }; +export { DataTableBodyRow, DataTableCardPanel, DataTableCellSelection, DataTableColumnDef, type DataTableColumnLayout, DataTableColumnPinningState, 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 ```ts import * as React from 'react'; -import { DataTableProps } from './types.js'; +import { D as DataTableProps } from './types-BGNR6Ymh.js'; import { D as DataTableUiKit } from './ui-kit-C6Z8X6oi.js'; export { a as DataTableUiClassNames } from './ui-kit-C6Z8X6oi.js'; import '@tanstack/react-table'; @@ -821,7 +820,7 @@ export { DataTableUiKit, createDataTable, primitiveUiKit }; ```ts import * as React from 'react'; -import { DataTableProps } from './types.js'; +import { D as DataTableProps } from './types-BGNR6Ymh.js'; import { D as DataTableUiKit } from './ui-kit-C6Z8X6oi.js'; export { a as DataTableUiClassNames } from './ui-kit-C6Z8X6oi.js'; import '@tanstack/react-table'; @@ -834,794 +833,7 @@ export { DataTableUiKit, createVirtualDataTable }; ## types.d.ts ```ts -import * as React from 'react'; -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"; -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" | "faceted" | "boolean" | "numberRange" | "dateRange"; -type DataTableColumnFilterOperator = "contains" | "equals" | "startsWith" | "endsWith"; -type DataTableCsvExportScope = "filtered" | "page" | "selected" | "all"; -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; - skeleton?: React.ReactNode; -}; -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; - to?: TValue; -}; -type DataTableColumnFilterConfig = { - type: DataTableColumnFilterType; - label?: string; - placeholder?: string; - options?: 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; - min?: number | string; - max?: number | string; - step?: number; -}; -type DataTableColumnMeta = { - type?: DataTableColumnType; - fixed?: DataTableColumnFixed; - cardTitle?: boolean; - hideOn?: DataTableContainerBreakpoint | Array; - minWidth?: number; - align?: DataTableAlign; - overflow?: DataTableCellOverflow | ((args: { - row: TData; - value: TValue | undefined; - }) => DataTableCellOverflow | undefined); - headerClassName?: string; - headerStyle?: React.CSSProperties; - cellClassName?: string | ((args: { - row: TData; - value: TValue | undefined; - }) => string | undefined); - responsiveClassName?: string; - skeleton?: (context: CellContext) => React.ReactNode; - filter?: DataTableColumnFilterConfig; - parseEditValue?: (value: unknown, context: CellContext) => unknown; - formatEditValue?: (value: unknown, context: CellContext) => string; - renderEditCell?: (props: DataTableCellEditRenderProps) => React.ReactNode; -}; -type DataTableColumnDef = ColumnDef & { - meta?: DataTableColumnMeta; - columns?: Array>; -}; -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; - label: string; - icon?: React.ComponentType<{ - className?: string; - }>; - iconOnly?: boolean; - placement?: "primary" | "trailing"; - onClick: (context: { - rows: Array; - openFileDialog?: () => void; - }) => void | Promise; - 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; - icon?: React.ComponentType<{ - className?: string; - }>; - iconOnly?: boolean; - onClick: (context: DataTableSelectionActionContext) => void | Promise; - variant?: "default" | "secondary" | "outline" | "ghost" | "destructive"; - disabled?: boolean | ((rows: Array, context: DataTableSelectionActionContext) => boolean); -}; -type DataTableRowAction = { - key: string; - label: string | ((row: TData) => string); - icon?: React.ComponentType<{ - className?: string; - }>; - onClick: (row: TData) => void | Promise; - variant?: "default" | "secondary" | "destructive"; - hidden?: (row: TData) => boolean; - disabled?: (row: TData) => boolean; -}; -type DataTableColumnVisibilityOption = { - id: string; - label: string; - visible: boolean; - canHide: boolean; - pinned?: false | DataTableColumnFixed; -}; -type DataTableToolbarVisibility = { - title?: boolean; - search?: boolean; - actions?: boolean; - trailingActions?: boolean; - options?: boolean; - 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; - depth: number; - canExpandSubRows: boolean; - isSubRowsExpanded: boolean; - toggleSubRowsExpanded: () => void; - isSelected: boolean; - onSelectedChange: (nextValue: boolean) => void; - actions: Array>; - isEditing: boolean; - startEditing: () => void; - cancelEditing: () => void; -}; -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; - hasMore: boolean; - isLoadingMore?: boolean; - onLoadMore: () => void | Promise; -}; -type DataTableHiddenRowsConfig = { - getIsHidden: (row: TData) => boolean; - label?: string; -}; -type DataTableEmptyStateContext = { - rows: Array; - toolbarQueryValue: string; -}; -type DataTableDragAndDropConfig = { - isDragging?: boolean; - onDragEnter?: React.DragEventHandler; - onDragOver?: React.DragEventHandler; - onDragLeave?: React.DragEventHandler; - onDrop?: React.DragEventHandler; - getRowDraggable?: (row: TData) => boolean; - onRowDragStart?: (context: { - row: TData; - rowId: string; - event: React.DragEvent; - }) => void; - onRowDragEnd?: (context: { - row: TData; - rowId: string; - event: React.DragEvent; - }) => void; -}; -type DataTableFileUploadConfig = { - accept?: string; - disabled?: boolean; - multiple?: boolean; - onFilesSelected: (files: FileList | Array) => void | Promise; -}; -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"; -}; -type DataTableExpandedRowProps = { - row: TData; - 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; - columns?: Array; - scope?: DataTableCsvExportScope; - escapeFormulaValues?: boolean; - lineEnding?: "\n" | "\r\n"; - getCellValue?: (context: { - row: TData; - rowId: string; - columnId: string; - value: unknown; - }) => unknown; - onExport?: (context: { - csv: string; - filename: string; - rows: Array; - scope: DataTableCsvExportScope; - }) => void | Promise; -}; -type DataTableActionErrorContext = { - source: DataTableActionErrorSource; - error: unknown; - actionKey?: string; - row?: TData; -}; -type DataTableColumnPrefs = { - visibility?: VisibilityState; - sizing?: Record; - order?: ColumnOrderState; - pinning?: ColumnPinningState; - rowPinning?: RowPinningState; - density?: DataTableDensity; -}; -type DataTablePersistenceSlice = keyof DataTableColumnPrefs; -type DataTablePersistenceStorage = Pick; -type DataTablePersistenceOperation = "read" | "write" | "remove" | "serialize" | "deserialize" | "migrate"; -type DataTablePersistencePayload = { - version: string | number; - state: DataTableColumnPrefs; -}; -type DataTablePersistenceConfig = { - key: string; - version?: string | number; - slices?: Array; - storage?: DataTablePersistenceStorage; - serialize?: (payload: DataTablePersistencePayload) => string; - deserialize?: (value: string) => unknown; - migrate?: (payload: { - version: unknown; - state: unknown; - }, targetVersion: string | number) => DataTableColumnPrefs | undefined; - debounceMs?: number; - onError?: (context: { - error: unknown; - operation: DataTablePersistenceOperation; - }) => void; -}; -type DataTableState = { - sorting: SortingState; - pagination: PaginationState; - rowSelection: Record; - columnVisibility: VisibilityState; - columnFilters: ColumnFiltersState; - expanded: ExpandedState; - columnOrder: ColumnOrderState; - 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; - globalFilter: string; -}; -type DataTableInitialState = Partial; -type DataTableSavedViewSlice = keyof DataTableState; -type DataTableSavedView = { - id: string; - name: string; - createdAt: string; - updatedAt: string; - state: Partial; -}; -type DataTableSavedViewsPayload = { - version: string | number; - views: Array; -}; -type DataTableSavedViewsChangeOperation = "create" | "rename" | "delete" | "clear"; -type DataTableSavedViewsConfig = { - key: string; - version?: string | number; - slices?: Array; - storage?: DataTablePersistenceStorage; - serialize?: (payload: DataTableSavedViewsPayload) => string; - deserialize?: (value: string) => unknown; - migrate?: (payload: { - version: unknown; - views: unknown; - }, targetVersion: string | number) => Array | undefined; - onChange?: (views: Array, operation: DataTableSavedViewsChangeOperation) => void; - onApply?: (view: DataTableSavedView) => void; - onError?: (context: { - error: unknown; - operation: DataTablePersistenceOperation; - }) => void; -}; -type DataTableResetOptions = { - clearPersistence?: boolean; -}; -type DataTableApi = { - getTable: () => Table | null; - getState: () => DataTableState; - snapshot: () => DataTableState; - restore: (state: Partial) => void; - resetColumnLayout: (options?: DataTableResetOptions) => void; - resetState: (options?: DataTableResetOptions) => void; - clearPersistedState: () => boolean; - getSavedViews: () => Array; - createSavedView: (name: string) => DataTableSavedView | undefined; - applySavedView: (id: string) => boolean; - 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; - 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; - searchTable: string; - clearSearch: string; - noRowsTitle: string; - noRowsDescription: string; - noMatchingRowsTitle: string; - noMatchingRowsDescription: string; - tableOptions: string; - columns: string; - filters: string; - clearFilters: string; - filterFrom?: string; - filterTo?: string; - filterTrue?: string; - filterFalse?: string; - selectedRows: (count: number) => string; - showHiddenRows: (label: string) => string; - recordsPerPage: string; - totalRecords: (count: number) => string; - pageStatus: (pageIndex: number, pageCount: number) => string; - pageStatusUnknown?: (pageIndex: number) => string; - pagination?: string; - morePages?: string; - firstPage: string; - previousPage: string; - nextPage: string; - lastPage: string; - selectAllVisibleRows?: string; - selectAllFilteredRows?: string; - selectRow?: string; - selectCardRow?: (rowId: string) => string; - switchToTableView?: string; - switchToCardView?: string; - tableView?: string; - cardView?: string; - allFilterOptions?: string; - actions: string; - rowActions: string; - editRow: string; - saveEdit: string; - cancelEdit: string; - expandRow: string; - collapseRow: string; - expandRowDetails?: string; - collapseRowDetails?: string; - exportCsv: string; - print?: string; - enterFullscreen?: string; - exitFullscreen?: string; - errorTitle?: string; - errorDescription?: string; - retry?: string; - density: string; - compactDensity: string; - comfortableDensity: string; - spaciousDensity: string; - pinLeft: string; - pinRight: string; - unpin: string; - pinRowToTop: string; - 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; - label?: React.ReactNode; - cells: Record; - columnId: string; - }) => React.ReactNode)>; -}; -type DataTableRowClassNameContext = { - row: TData; - rowId: string; - rowIndex: number; - isEditing: boolean; - isExpanded: boolean; - isLoading: boolean; - isSelected: boolean; - pinnedPosition: false | "top" | "bottom"; -}; -type DataTableScrollbarVisibility = "auto" | "always" | "scroll" | "hover"; -type DataTableProps = { - columns: Array>; - data: Array; - getRowId: (row: TData, index: number) => string; - children?: React.ReactNode; - title?: string; - description?: string; - toolbarQueryValue?: string; - onToolbarQueryValueChange?: (value: string) => void; - toolbarQueryPlaceholder?: string; - toolbarQueryDebounceMs?: number; - manualFiltering?: boolean; - enableToolbarQueryFiltering?: boolean; - globalFilterFn?: FilterFnOption; - columnFilters?: ColumnFiltersState; - onColumnFiltersChange?: (filters: ColumnFiltersState) => void; - enableColumnFilters?: boolean; - customToolbar?: React.ReactNode; - compactToolbar?: React.ReactNode; - rowsPerPageOptions?: Array; - totalRowCount?: number; - hasNextPage?: boolean; - 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; - manualPagination?: boolean; - 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>; - 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; - columnPrefsKey?: string; - persistence?: DataTablePersistenceConfig; - savedViews?: DataTableSavedViewsConfig; - initialState?: DataTableInitialState; - state?: Partial; - onStateChange?: (updater: Updater) => void; - apiRef?: React.Ref>; - labels?: Partial; - summaryRows?: Array>; - cardRenderer?: (props: DataTableCardRendererProps) => React.ReactNode; - cardSizing?: DataTableCardSizing; - cardGridClassName?: string; - cardClassName?: string; - 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; - hiddenRows?: DataTableHiddenRowsConfig; - showHiddenRows?: boolean; - onShowHiddenRowsChange?: (showHiddenRows: boolean) => void; - infiniteScroll?: DataTableInfiniteScroll; - editableRows?: DataTableEditableRowsConfig; - columnVisibility?: VisibilityState; - onColumnVisibilityChange?: (visibility: VisibilityState) => void; - columnSizing?: ColumnSizingState; - onColumnSizingChange?: (sizing: ColumnSizingState) => void; - enableColumnResizing?: boolean; - columnResizeMode?: "onChange" | "onEnd"; - layoutMode?: "fill" | "fit"; - stickyHeader?: boolean; - /** Controls when scrollbars are visible. Defaults to `"hover"`. */ - scrollbarVisibility?: DataTableScrollbarVisibility; - showFooter?: boolean; - showToolbar?: boolean; - 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; - stripedRows?: boolean; - getRowClassName?: (row: TData, context: DataTableRowClassNameContext) => string | undefined; - onRowClick?: (context: { - row: TData; - rowId: string; - }) => void | Promise; - onActionError?: (context: DataTableActionErrorContext) => void; - 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; -declare function canUseRowAction(action: DataTableRowAction, row: TData): boolean; -declare function canEditRow(editableRows: DataTableEditableRowsConfig | undefined, row: TData): boolean; -declare function alignClassName(align: DataTableAlign | undefined): "text-center" | "text-right" | "text-left"; -declare function resolveColumnAlign(align: DataTableAlign | undefined, type: DataTableColumnType | undefined): DataTableAlign; -declare function headerAlignClassName(context: HeaderContext): "text-center" | "text-right" | "text-left"; -declare function cellAlignClassName(context: CellContext): "text-center" | "text-right" | "text-left"; -declare function hideOnClassName(hideOn: DataTableContainerBreakpoint | Array | undefined): string | undefined; -declare function isHiddenAtContainerWidth(hideOn: DataTableContainerBreakpoint | Array | undefined, containerWidth: number): boolean; -declare function rowSelectionStateFromRows(rows: Array>): TData[]; - -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 DataTableScrollbarVisibility, 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 }; +export { a as DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, b as DataTableAccessibilityOptions, c as DataTableActionErrorContext, d as DataTableActionErrorSource, e as DataTableAggregationFn, f as DataTableAlign, g as DataTableApi, h as DataTableAutoPageSizeConfig, i as DataTableCardRendererProps, j as DataTableCardSizing, k as DataTableCardVirtualizationConfig, l as DataTableCellCoordinate, m as DataTableCellEditRenderProps, n as DataTableCellOverflow, o as DataTableCellSelection, p as DataTableClipboardConfig, q as DataTableClipboardCopyOptions, r as DataTableClipboardCopyScope, s as DataTableClipboardPasteContext, t as DataTableColumnDef, u as DataTableColumnFilterConfig, v as DataTableColumnFilterOperator, w as DataTableColumnFilterOption, x as DataTableColumnFilterRangeValue, y as DataTableColumnFilterType, z as DataTableColumnFixed, A as DataTableColumnGroupDef, B as DataTableColumnMeta, C as DataTableColumnPinningState, E as DataTableColumnPrefs, F as DataTableColumnType, G as DataTableColumnVisibilityOption, H as DataTableContainerBreakpoint, I as DataTableCsvExportOptions, J as DataTableCsvExportScope, K as DataTableDensity, L as DataTableDetailPanel, M as DataTableDragAndDropConfig, N as DataTableEditableRowsConfig, O as DataTableEmptyStateContext, P as DataTableExpandedRowProps, Q as DataTableFacetedFilterOptions, R as DataTableFileUploadConfig, S as DataTableGridCommandContext, T as DataTableGridCommands, U as DataTableHiddenRowsConfig, V as DataTableInfiniteScroll, W as DataTableInitialState, X as DataTableInteractiveGridOptions, Y as DataTableLabels, Z as DataTableLoadingState, _ as DataTablePersistenceConfig, $ as DataTablePersistenceOperation, a0 as DataTablePersistencePayload, a1 as DataTablePersistenceSlice, a2 as DataTablePersistenceStorage, D as DataTableProps, a3 as DataTableResetOptions, a4 as DataTableRowAction, a5 as DataTableRowClassNameContext, a6 as DataTableRowLoadingState, a7 as DataTableSavedView, a8 as DataTableSavedViewSlice, a9 as DataTableSavedViewsChangeOperation, aa as DataTableSavedViewsConfig, ab as DataTableSavedViewsPayload, ac as DataTableScrollbarVisibility, ad as DataTableSelectionAction, ae as DataTableSelectionActionContext, af as DataTableState, ag as DataTableStateOverlay, ah as DataTableStateOverlayContext, ai as DataTableSummaryRow, aj as DataTableToolbarAction, ak as DataTableToolbarDataOperations, al as DataTableToolbarVisibility, am as DataTableViewMode, an as DataTableVirtualizationConfig, ao as alignClassName, ap as canEditRow, aq as canUseRowAction, ar as cellAlignClassName, as as headerAlignClassName, at as hideOnClassName, au as isHiddenAtContainerWidth, av as isRowVisible, aw as resolveColumnAlign, ax as resolveRowActionLabel, ay as rowSelectionStateFromRows } from './types-BGNR6Ymh.js'; +import '@tanstack/react-table'; +import 'react'; ``` 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 00385b9..7ee8b0c 100644 Binary files a/browser-tests/data-table.spec.ts-snapshots/heroui-dark-table-chromium-linux.png and b/browser-tests/data-table.spec.ts-snapshots/heroui-dark-table-chromium-linux.png differ diff --git a/browser-tests/data-table.spec.ts-snapshots/heroui-light-table-chromium-linux.png b/browser-tests/data-table.spec.ts-snapshots/heroui-light-table-chromium-linux.png index 20d2ef4..916e72b 100644 Binary files a/browser-tests/data-table.spec.ts-snapshots/heroui-light-table-chromium-linux.png and b/browser-tests/data-table.spec.ts-snapshots/heroui-light-table-chromium-linux.png differ diff --git a/browser-tests/data-table.spec.ts-snapshots/shadcn-dark-table-chromium-linux.png b/browser-tests/data-table.spec.ts-snapshots/shadcn-dark-table-chromium-linux.png index c3789da..8337ec7 100644 Binary files a/browser-tests/data-table.spec.ts-snapshots/shadcn-dark-table-chromium-linux.png and b/browser-tests/data-table.spec.ts-snapshots/shadcn-dark-table-chromium-linux.png differ 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 93be151..ff15736 100644 Binary files a/browser-tests/data-table.spec.ts-snapshots/shadcn-light-table-chromium-linux.png and b/browser-tests/data-table.spec.ts-snapshots/shadcn-light-table-chromium-linux.png differ 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 69f486b..d2f3bab 100644 Binary files a/browser-tests/data-table.spec.ts-snapshots/thegridcn-dark-table-chromium-linux.png and b/browser-tests/data-table.spec.ts-snapshots/thegridcn-dark-table-chromium-linux.png differ 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 654e9a8..38035e8 100644 Binary files a/browser-tests/data-table.spec.ts-snapshots/thegridcn-light-table-chromium-linux.png and b/browser-tests/data-table.spec.ts-snapshots/thegridcn-light-table-chromium-linux.png differ diff --git a/demo/src/DemoApp.tsx b/demo/src/DemoApp.tsx index 0d0de2f..582cd82 100644 --- a/demo/src/DemoApp.tsx +++ b/demo/src/DemoApp.tsx @@ -17,7 +17,10 @@ import type { DataTableProps, DataTableViewMode, } from "data-table-pro"; -import type { SortingState, VisibilityState } from "@tanstack/react-table"; +import type { + ColumnVisibilityState as VisibilityState, + SortingState, +} from "@tanstack/react-table"; type AdapterKey = "shadcn" | "heroui" | "thegridcn"; type ThemeKey = "light" | "dark"; diff --git a/dist/adapter-virtual.d.ts b/dist/adapter-virtual.d.ts index 8574681..f5ed558 100644 --- a/dist/adapter-virtual.d.ts +++ b/dist/adapter-virtual.d.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { DataTableProps } from './types.js'; +import { D as DataTableProps } from './types-BGNR6Ymh.js'; import { D as DataTableUiKit } from './ui-kit-C6Z8X6oi.js'; export { a as DataTableUiClassNames } from './ui-kit-C6Z8X6oi.js'; import '@tanstack/react-table'; diff --git a/dist/adapter-virtual.js b/dist/adapter-virtual.js index ebf8719..f71650f 100644 --- a/dist/adapter-virtual.js +++ b/dist/adapter-virtual.js @@ -1,2 +1,2 @@ -export{a as createVirtualDataTable}from'./chunk-VGMTY7KM.js';import'./chunk-B6JTUAWE.js';import'./chunk-W7VNQT7O.js';import'./chunk-I3CW6DTA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-PRDXFLFB.js';import'./chunk-F2RBZWQV.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-O6MUTKGE.js';import'./chunk-XTVBESM5.js';//# sourceMappingURL=adapter-virtual.js.map +export{a as createVirtualDataTable}from'./chunk-UMW6DOXG.js';import'./chunk-LTEXTQ2M.js';import'./chunk-IZQDLLCH.js';import'./chunk-XZTPNWJD.js';import'./chunk-EJHT5JBZ.js';import'./chunk-YKVWP3UJ.js';import'./chunk-YWMYYP3I.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-7IWMFF7E.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 e1c5d49..c12a84a 100644 --- a/dist/adapter.d.ts +++ b/dist/adapter.d.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { DataTableProps } from './types.js'; +import { D as DataTableProps } from './types-BGNR6Ymh.js'; import { D as DataTableUiKit } from './ui-kit-C6Z8X6oi.js'; export { a as DataTableUiClassNames } from './ui-kit-C6Z8X6oi.js'; import '@tanstack/react-table'; diff --git a/dist/adapter.js b/dist/adapter.js index 3f35426..67b231b 100644 --- a/dist/adapter.js +++ b/dist/adapter.js @@ -1,2 +1,2 @@ -export{X as primitiveUiKit}from'./chunk-VSIOOKCO.js';export{i as createDataTable}from'./chunk-I3CW6DTA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-PRDXFLFB.js';import'./chunk-F2RBZWQV.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-O6MUTKGE.js';import'./chunk-XTVBESM5.js';//# sourceMappingURL=adapter.js.map +export{X as primitiveUiKit}from'./chunk-VSIOOKCO.js';export{i as createDataTable}from'./chunk-XZTPNWJD.js';import'./chunk-EJHT5JBZ.js';import'./chunk-YKVWP3UJ.js';import'./chunk-YWMYYP3I.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-7IWMFF7E.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 ae6ed6d..6ec80be 100644 --- a/dist/advanced.d.ts +++ b/dist/advanced.d.ts @@ -1,9 +1,9 @@ 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, 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, DataTableScrollbarVisibility, 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 { ExpandedState, OnChangeFn, ColumnSizingState, RowPinningPosition, PaginationState, SortingState, Updater, ColumnFiltersState, ColumnOrderState, RowPinningState, GroupingState, ColumnVisibilityState } from '@tanstack/react-table'; +import { D as DataTableProps, az as DataTableTanStackRow, Y as DataTableLabels, t as DataTableColumnDef, aA as DataTableTanStackColumn, K as DataTableDensity, a6 as DataTableRowLoadingState, aB as DataTableTanStackCell, o as DataTableCellSelection, aC as DataTableTanStackTable, aD as DataTableTanStackHeader, a7 as DataTableSavedView, N as DataTableEditableRowsConfig, a4 as DataTableRowAction, L as DataTableDetailPanel, aE as DataTableTanStackColumnDef, C as DataTableColumnPinningState, aF as DataTableTanStackFilterFnOption } from './types-BGNR6Ymh.js'; +export { a as DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, b as DataTableAccessibilityOptions, c as DataTableActionErrorContext, d as DataTableActionErrorSource, e as DataTableAggregationFn, f as DataTableAlign, g as DataTableApi, h as DataTableAutoPageSizeConfig, i as DataTableCardRendererProps, j as DataTableCardSizing, k as DataTableCardVirtualizationConfig, l as DataTableCellCoordinate, m as DataTableCellEditRenderProps, n as DataTableCellOverflow, p as DataTableClipboardConfig, q as DataTableClipboardCopyOptions, r as DataTableClipboardCopyScope, s as DataTableClipboardPasteContext, u as DataTableColumnFilterConfig, v as DataTableColumnFilterOperator, w as DataTableColumnFilterOption, x as DataTableColumnFilterRangeValue, y as DataTableColumnFilterType, z as DataTableColumnFixed, A as DataTableColumnGroupDef, B as DataTableColumnMeta, E as DataTableColumnPrefs, F as DataTableColumnType, G as DataTableColumnVisibilityOption, H as DataTableContainerBreakpoint, I as DataTableCsvExportOptions, J as DataTableCsvExportScope, M as DataTableDragAndDropConfig, O as DataTableEmptyStateContext, P as DataTableExpandedRowProps, Q as DataTableFacetedFilterOptions, R as DataTableFileUploadConfig, S as DataTableGridCommandContext, T as DataTableGridCommands, U as DataTableHiddenRowsConfig, V as DataTableInfiniteScroll, W as DataTableInitialState, X as DataTableInteractiveGridOptions, Z as DataTableLoadingState, _ as DataTablePersistenceConfig, $ as DataTablePersistenceOperation, a0 as DataTablePersistencePayload, a1 as DataTablePersistenceSlice, a2 as DataTablePersistenceStorage, a3 as DataTableResetOptions, a5 as DataTableRowClassNameContext, a8 as DataTableSavedViewSlice, a9 as DataTableSavedViewsChangeOperation, aa as DataTableSavedViewsConfig, ab as DataTableSavedViewsPayload, ac as DataTableScrollbarVisibility, ad as DataTableSelectionAction, ae as DataTableSelectionActionContext, af as DataTableState, ag as DataTableStateOverlay, ah as DataTableStateOverlayContext, ai as DataTableSummaryRow, aj as DataTableToolbarAction, ak as DataTableToolbarDataOperations, al as DataTableToolbarVisibility, am as DataTableViewMode, an as DataTableVirtualizationConfig, ao as alignClassName, ap as canEditRow, aq as canUseRowAction, ar as cellAlignClassName, as as headerAlignClassName, at as hideOnClassName, au as isHiddenAtContainerWidth, av as isRowVisible, aw as resolveColumnAlign, ax as resolveRowActionLabel, ay as rowSelectionStateFromRows } from './types-BGNR6Ymh.js'; import { D as DataTableUiKit, a as DataTableUiClassNames } from './ui-kit-C6Z8X6oi.js'; type DataTableCardPanelProps = { @@ -27,7 +27,7 @@ type DataTableCardPanelProps = { infiniteScroll: DataTableProps["infiniteScroll"]; localSearchValue: string; onRowClick: DataTableProps["onRowClick"]; - renderedRows: Array>; + renderedRows: Array>; detailPanel: DataTableProps["detailPanel"]; resolvedLabels: DataTableLabels; resolvedLoadingRowCount: number; @@ -70,7 +70,7 @@ declare function useColumnLayout({ columns, columnSizing, editableRows, e hasRowExpansion: boolean; layoutMode: ColumnLayoutMode; uiClassNames: DataTableUiClassNames; - visibleLeafColumns: Array>; + visibleLeafColumns: Array>; }): { columnLayouts: Map; explicitlySizedColumnIds: Set; @@ -125,12 +125,12 @@ type DataTableBodyRowProps = { pinnedPosition?: Exclude; originalRow: TData; detailPanel: DataTableProps["detailPanel"]; - row: Row; + row: DataTableTanStackRow; rowIndex: number; setDraftValues: React.Dispatch>>; stripedRows: boolean; uiClassNames: DataTableUiClassNames; - visibleCells: Array>; + 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; @@ -173,15 +173,15 @@ type DataTableTablePanelProps = { localSearchValue: string; onRowClick: DataTableProps["onRowClick"]; primeColumnForResize: (columnId: string, currentSize: number) => void; - renderedRows: Array>; + renderedRows: Array>; detailPanel: DataTableProps["detailPanel"]; - topPinnedRows: Array>; - bottomPinnedRows: Array>; + topPinnedRows: Array>; + bottomPinnedRows: Array>; reorderColumn: (sourceColumnId: string, targetColumnId: string) => void; resetColumnSize: (columnId: string) => void; resolvedLabels: DataTableLabels; rowsToRender: Array<{ - row: Row; + row: DataTableTanStackRow; rowIndex: number; }>; ScrollArea: DataTableUiKit["ScrollArea"]; @@ -194,7 +194,7 @@ type DataTableTablePanelProps = { stickyHeader: boolean; stripedRows: boolean; summaryRows: NonNullable["summaryRows"]>; - table: Table; + table: DataTableTanStackTable; tableClassName: string | undefined; tableContainerClassName: string | undefined; Table: DataTableUiKit["Table"]; @@ -213,7 +213,7 @@ type DataTableTablePanelProps = { virtualPaddingBottom: number; virtualPaddingTop: number; visibleLeafColumnCount: number; - visibleLeafColumns: Array>; + visibleLeafColumns: Array>; }; 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, scrollbarVisibility, 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; @@ -242,8 +242,8 @@ type DataTableHeaderCellProps = { enableColumnResizing: boolean; gridColumnIndex?: number; gridMode: boolean; - header: Header; - headerGroupHeaders: Array>; + header: DataTableTanStackHeader; + headerGroupHeaders: Array>; layout: DataTableColumnLayout; primeColumnForResize: (columnId: string, currentSize: number) => void; reorderColumn: (sourceColumnId: string, targetColumnId: string) => void; @@ -295,7 +295,7 @@ type DataTableToolbarSectionProps = { selectionActions: DataTableProps["selectionActions"]; savedViews: Array; showHiddenRows: boolean; - table: Table; + table: DataTableTanStackTable; title: string | undefined; titleId: string | undefined; toolbarQueryPlaceholder: string; @@ -353,8 +353,8 @@ declare function useDataTableColumns({ Button, Checkbox, DataTableRowActi rowActions: Array>; saveEdit: (row: TData) => Promise; startEditingRow: (row: TData, rowId: string) => void; - tableRef: React.RefObject | null>; -}): ColumnDef[]; + tableRef: React.RefObject | null>; +}): DataTableTanStackColumnDef[]; type DataTableColumnGroupPathSegment = { id: string; @@ -362,6 +362,27 @@ type DataTableColumnGroupPathSegment = { }; type DataTableColumnGroupPaths = ReadonlyMap>; +type DataTableRowsToRender = Array<{ + row: DataTableTanStackRow; + rowIndex: number; +}>; +type DataTableInstanceResult = { + effectivePageCount: number; + footerTotalRowCount: number | undefined; + handleFooterPageIndexChange: (nextPageIndex: number) => void; + handleFooterPageSizeChange: (nextPageSize: number) => void; + isPageCountKnown: boolean; + renderedRows: Array>; + topPinnedRows: Array>; + bottomPinnedRows: Array>; + reorderColumn: (sourceColumnId: string, targetColumnId: string) => void; + rowsToRender: DataTableRowsToRender; + sentinelRef: React.RefObject; + table: DataTableTanStackTable; + virtualPaddingBottom: number; + virtualPaddingTop: number; + visibleLeafColumns: Array>; +}; 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; @@ -369,7 +390,7 @@ declare function useDataTableInstance({ autoResetPageIndex, columnGroupPa dir: NonNullable["dir"]>; currentColumnFilters: ColumnFiltersState; currentColumnOrder: ColumnOrderState; - currentColumnPinning: ColumnPinningState; + currentColumnPinning: DataTableColumnPinningState; currentRowPinning: RowPinningState; currentColumnSizing: ColumnSizingState; currentExpanded: ExpandedState; @@ -378,8 +399,8 @@ declare function useDataTableInstance({ autoResetPageIndex, columnGroupPa currentRowSelection: Record; currentSorting: SortingState; currentViewMode: "table" | "card"; - defaultColumn: Partial>; - effectiveColumnVisibility: VisibilityState; + defaultColumn: Partial>; + effectiveColumnVisibility: ColumnVisibilityState; enableColumnResizing: boolean; enableMultiRowSelection: NonNullable["enableMultiRowSelection"]>; enableRowPinning: DataTableProps["enableRowPinning"]; @@ -390,14 +411,14 @@ declare function useDataTableInstance({ autoResetPageIndex, columnGroupPa getSubRows: DataTableProps["getSubRows"]; aggregationFns: DataTableProps["aggregationFns"]; groupedColumnMode: DataTableProps["groupedColumnMode"]; - globalFilterFn: FilterFnOption | undefined; + globalFilterFn: DataTableTanStackFilterFnOption | undefined; globalFilterValue: string; hasNextPage?: DataTableProps["hasNextPage"]; handleColumnFiltersChange: OnChangeFn; handleColumnOrderChange: OnChangeFn; - handleColumnPinningChange: OnChangeFn; + handleColumnPinningChange: OnChangeFn; handleRowPinningChange: OnChangeFn; - handleColumnVisibilityChange: OnChangeFn; + handleColumnVisibilityChange: OnChangeFn; handleExpandedChange: OnChangeFn; handleGroupingChange: OnChangeFn; infiniteScroll: DataTableProps["infiniteScroll"]; @@ -421,10 +442,10 @@ declare function useDataTableInstance({ autoResetPageIndex, columnGroupPa setLocalColumnSizing: OnChangeFn; setLocalPagination: React.Dispatch>; shouldRenderInitialLoading: boolean; - tableColumns: Array>; + tableColumns: Array>; tableData: Array; tableGetRowId: DataTableProps["getRowId"]; - tableRef: React.RefObject | null>; + tableRef: React.RefObject | null>; tableScrollElement: HTMLElement | null; /** * @deprecated Filtering now runs through TanStack Table. Retained so @@ -434,30 +455,7 @@ declare function useDataTableInstance({ autoResetPageIndex, columnGroupPa totalRowCount: DataTableProps["totalRowCount"]; virtualization: DataTableProps["virtualization"]; viewportHeight: number; -}): { - effectivePageCount: number; - footerTotalRowCount: number | undefined; - handleFooterPageIndexChange: (nextPageIndex: number) => void; - handleFooterPageSizeChange: (nextPageSize: number) => void; - isPageCountKnown: boolean; - renderedRows: Row[]; - topPinnedRows: Row[]; - bottomPinnedRows: Row[]; - reorderColumn: (sourceColumnId: string, targetColumnId: string) => void; - rowsToRender: { - row: Row; - rowIndex: number; - }[]; - sentinelRef: React.RefObject; - table: Table; - virtualPaddingBottom: number; - virtualPaddingTop: number; - visibleLeafColumns: _tanstack_react_table.Column[]; -}; -type DataTableRowsToRender = Array<{ - row: Row; - rowIndex: number; -}>; +}): DataTableInstanceResult; 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"]; @@ -514,10 +512,10 @@ declare function useDataTableState({ columnFilters, columnOrder, columnPi containerWidth: number; currentColumnFilters: ColumnFiltersState; currentColumnOrder: ColumnOrderState; - currentColumnPinning: ColumnPinningState; + currentColumnPinning: DataTableColumnPinningState; currentRowPinning: RowPinningState; currentColumnSizing: ColumnSizingState; - currentColumnVisibility: VisibilityState; + currentColumnVisibility: ColumnVisibilityState; currentDensity: DataTableDensity; currentExpanded: ExpandedState; currentGrouping: GroupingState; @@ -526,7 +524,7 @@ declare function useDataTableState({ columnFilters, columnOrder, columnPi currentShowHiddenRows: boolean; currentSorting: SortingState; currentViewMode: "table" | "card"; - effectiveColumnVisibility: VisibilityState; + effectiveColumnVisibility: ColumnVisibilityState; globalFilterValue: string; handleDensityChange: (nextDensity: DataTableDensity) => void; handleShowHiddenRowsChange: (nextShowHiddenRows: boolean) => void; @@ -538,9 +536,9 @@ declare function useDataTableState({ columnFilters, columnOrder, columnPi selectedRows: TData[]; setCurrentColumnFilters: (updater: _tanstack_react_table.Updater) => void; setCurrentColumnOrder: (updater: _tanstack_react_table.Updater) => void; - setCurrentColumnPinning: (updater: _tanstack_react_table.Updater) => void; + setCurrentColumnPinning: (updater: _tanstack_react_table.Updater) => void; setCurrentRowPinning: (updater: _tanstack_react_table.Updater) => void; - setCurrentColumnVisibility: (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; @@ -579,4 +577,4 @@ declare function useRowEditing({ columns, editableRows, onError, }: { declare function useStableCallback, TResult>(callback: ((...args: TArgs) => TResult) | undefined): (...args: TArgs) => TResult | undefined; -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 }; +export { DataTableBodyRow, DataTableCardPanel, DataTableCellSelection, DataTableColumnDef, type DataTableColumnLayout, DataTableColumnPinningState, 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 48c0b4d..6da2ffe 100644 --- a/dist/advanced.js +++ b/dist/advanced.js @@ -1,2 +1,2 @@ -export{X as primitiveUiKit}from'./chunk-VSIOOKCO.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-I3CW6DTA.js';import'./chunk-EJHT5JBZ.js';export{c as DataTableBodyRow,d as DataTableHeaderCell,e as DataTableTablePanel,a as useRowEditing}from'./chunk-PRDXFLFB.js';import'./chunk-F2RBZWQV.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-O6MUTKGE.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 +export{X as primitiveUiKit}from'./chunk-VSIOOKCO.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-XZTPNWJD.js';import'./chunk-EJHT5JBZ.js';export{c as DataTableBodyRow,d as DataTableHeaderCell,e as DataTableTablePanel,a as useRowEditing}from'./chunk-YKVWP3UJ.js';import'./chunk-YWMYYP3I.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-7IWMFF7E.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-7IWMFF7E.js b/dist/chunk-7IWMFF7E.js new file mode 100644 index 0000000..5c1b533 --- /dev/null +++ b/dist/chunk-7IWMFF7E.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 T(e){let a=e.column.columnDef.meta;return n(o(a?.align,a?.type))}function p(e){return e?(Array.isArray(e)?e:[e]).map(t=>`dt-hide-on-${t}`).join(" "):void 0}function c(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\";\n/** Physical pinning state retained at the public API and persistence boundary. */\nexport type DataTableColumnPinningState = {\n left?: Array;\n right?: Array;\n};\n/** A TanStack Table v9 context-based aggregation definition. */\nexport type DataTableAggregationFn =\n DataTableTanStackAggregationFn;\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?: DataTableColumnPinningState;\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: DataTableColumnPinningState;\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 DataTableScrollbarVisibility =\n | \"auto\"\n | \"always\"\n | \"scroll\"\n | \"hover\";\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?: DataTableColumnPinningState;\n onColumnPinningChange?: (columnPinning: DataTableColumnPinningState) => 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 /** Controls when scrollbars are visible. Defaults to `\"hover\"`. */\n scrollbarVisibility?: DataTableScrollbarVisibility;\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-B6JTUAWE.js.map b/dist/chunk-B6JTUAWE.js.map deleted file mode 100644 index 80e7203..0000000 --- a/dist/chunk-B6JTUAWE.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","scrollbarVisibility","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-B6JTUAWE.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 scrollbarVisibility,\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-F2RBZWQV.js b/dist/chunk-F2RBZWQV.js deleted file mode 100644 index 3dfa529..0000000 --- a/dist/chunk-F2RBZWQV.js +++ /dev/null @@ -1,3 +0,0 @@ -import {a}from'./chunk-XTVBESM5.js';var _=Symbol("data-table-loading-row"),z=50;function F(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 U(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 M(e){return Object.prototype.hasOwnProperty.call(e,"size")&&typeof e.size=="number"}function S(e){if("columns"in e&&Array.isArray(e.columns))return {...e,columns:e.columns.map(n=>S(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 W(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 B(e,t,n){let r=n.get(e)??[],a=n.get(t)??[],o=0;for(;oi.freeReordering)}function A(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 $(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 K(e){return g(e).trim().toLowerCase()}async function q({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=E(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=>R(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 E(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 R(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 H(e){let t=[],n=[];for(let{column:r,index:a}of A(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 Q(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 Z(e){let t=e.getIsPinned();return t||(e.id==="__select__"||e.id==="__expand__"?"left":e.id==="__actions__"?"right":e.columnDef.meta?.fixed)}function J(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 Y(e,t){if(!(e instanceof Element))return false;let n=e.closest(P);return !!(n&&n!==t&&t.contains(n))}function X(e){switch(e){case "compact":return "h-8 py-1";case "spacious":return "h-14 py-4";default:return}}function v(e){switch(e){case "compact":return "py-1.5";case "spacious":return "py-4";default:return}}function ee(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,ee as B,h as C,z as a,F as b,U as c,j as d,G as e,V as f,M as g,S as h,W as i,B as j,A as k,$ as l,g as m,x as n,K as o,q as p,E as q,H as r,D as s,Q as t,N as u,Z as v,J as w,O as x,Y as y,X as z};//# sourceMappingURL=chunk-F2RBZWQV.js.map -//# sourceMappingURL=chunk-F2RBZWQV.js.map \ No newline at end of file diff --git a/dist/chunk-F2RBZWQV.js.map b/dist/chunk-F2RBZWQV.js.map deleted file mode 100644 index 2f1cea8..0000000 --- a/dist/chunk-F2RBZWQV.js.map +++ /dev/null @@ -1 +0,0 @@ -{"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","hasExplicitDataTableColumnSize","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-F2RBZWQV.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 hasExplicitDataTableColumnSize(\n column: DataTableColumnDef,\n) {\n return (\n Object.prototype.hasOwnProperty.call(column, \"size\") &&\n typeof column.size === \"number\"\n );\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-I3CW6DTA.js b/dist/chunk-I3CW6DTA.js deleted file mode 100644 index b0a76fd..0000000 --- a/dist/chunk-I3CW6DTA.js +++ /dev/null @@ -1,2 +0,0 @@ -import {a as a$4}from'./chunk-EJHT5JBZ.js';import {a as a$3,e as e$1}from'./chunk-PRDXFLFB.js';import {d,a as a$1,b,h,k,s,x,j,B,r,c as c$1,e,g,f,v,w,t,i as i$1,p,o,y,u as u$1,C,l,n}from'./chunk-F2RBZWQV.js';import {c,p as p$1,u,k as k$1,m,s as s$1,a as a$5,r as r$1,q,l as l$1,j as j$1}from'./chunk-CVR2ZXHQ.js';import {a,i,b as b$1,d as d$1,e as e$2,c as c$2}from'./chunk-O6MUTKGE.js';import {a as a$2}from'./chunk-XTVBESM5.js';import*as T 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 On({cardClassName:e,cardGridClassName:a,cardSizing:n,cardRenderer:i,currentRowSelection:r,currentDetailExpanded:l,DataTableCardView:d,DataTableEmptyState:p,dragAndDrop:u,editableRows:h,editingRowId:E,emptyNode:S,enableRowSelection:I,flexGrow:A,getRowClassName:G,hasCardTitle:J,infiniteScroll:V,localSearchValue:g,onRowClick:f,renderedRows:s,detailPanel:D,resolvedLabels:m,resolvedLoadingRowCount:v,rowActions:L=[],ScrollArea:C,scrollbarVisibility:$,sentinelRef:K,setCurrentDetailExpanded:_,setCurrentRowSelection:U,setEditingRowId:R,shouldRenderInitialLoading:b,stateOverlayNode:x,tableContainerClassName:k,uiClassNames:F}){let Q=b||s.length>0,P=T.useRef(null),q=(B,M)=>jsx(d,{rows:B,cardRenderer:i,cardGridClassName:a,cardClassName:e,cardSizing:n,rowActions:L,editableRows:h,detailPanel:D,detailExpanded:l,onDetailExpandedChange:_,hasCardTitle:J,rowSelection:r,onRowSelectionChange:U,enableRowSelection:I,editingRowId:E,onEditingRowIdChange:R,getRowClassName:G,onRowClick:f,getRowDraggable:u?.getRowDraggable,onRowDragStart:u?.onRowDragStart,onRowDragEnd:u?.onRowDragEnd,isLoading:M?.isLoading,loadingRowCount:M?.loadingRowCount,labels:m});return jsxs("div",{ref:P,"data-dtp-slot":"data-table-card-shell",className:a$2("relative box-border border-2 border-transparent transition-colors",A?"flex min-h-0 flex-1 flex-col":"h-full",u?.isDragging&&(F.dragActive??"rounded-md border-dashed")),children:[jsx(C,{type:$,className:a$2(A?"min-h-0 flex-1":"h-full",F.cardScrollArea,k),children:jsxs("div",{"data-dtp-slot":"data-table-card-viewport",className:a$2("flex min-h-full min-w-0 flex-col",A&&"min-h-0 flex-1",F.cardViewport),children:[Q?b?q([],{isLoading:true,loadingRowCount:v}):q(s):jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center p-4",children:S??jsx(p,{title:g?m.noMatchingRowsTitle:m.noRowsTitle,description:g?m.noMatchingRowsDescription:m.noRowsDescription})}),V?.enabled&&!b?jsx("div",{className:"shrink-0 px-4 pb-4",children:jsx("div",{ref:K,className:"h-4 w-full"})}):null]})}),x]})}var ds=T.lazy(async()=>({default:(await import('./data-table-virtual-card-panel-3PHPB23A.js')).DataTableVirtualCardPanel}));function Ci(e){let a=typeof e.virtualization=="object"?e.virtualization.card:void 0;return a?.enabled!==true?jsx(On,{...e}):jsx(T.Suspense,{fallback:jsx(On,{...e,renderedRows:e.renderedRows.slice(0,Math.max(1,Math.floor(a.fallbackCardCount??12)))}),children:jsx(ds,{...e})})}function Di({children:e,currentPagination:a,DataTableFooter:n,effectivePageCount:i,footerTotalRowCount:r,handleFooterPageIndexChange:l,handleFooterPageSizeChange:d,labels:p,pageCountKnown:u=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:a.pageIndex,pageCount:i,pageCountKnown:u,pageSize:a.pageSize,totalRowCount:r,rowsPerPageOptions:h,onPageIndexChange:l,onPageSizeChange:d,labels:p}):null,e]})}function yi({allRows:e,columnFilters:a,columnVisibilityOptions:n,compactToolbar:i,customToolbar:r,DataTableToolbar:l,description:d,descriptionId:p,effectiveToolbarActions:u,enableColumnPinning:h,enableGrouping:E,enableToolbarColumnChooser:S,enableToolbarFilterChips:I,enableToolbarResetLayout:A,enableToolbarSavedViews:G,enableDensityToggle:J,enableViewToggle:V,hiddenRowsLabel:g,labels:f,onClearColumnFilters:s,onColumnFilterChange:D,onColumnPinningChange:m,onDensityChange:v,onShowHiddenRowsChange:L,onToolbarQueryValueChange:C,reorderColumn:$,onResetColumnLayout:K,onCreateSavedView:_,onApplySavedView:U,onRenameSavedView:R,onDeleteSavedView:b,onViewModeChange:x,openFileDialog:k,selectedRowIds:F,selectedRows:Q,selectionActions:P,savedViews:q,showHiddenRows:B,table:M,title:W,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:W,titleId:ne,description:d,descriptionId:p,toolbarQueryValue:fe,toolbarQueryPlaceholder:be,onToolbarQueryValueChange:C,reorderColumn:$,customToolbar:r,compactToolbar:i,viewMode:Te,onViewModeChange:x,enableViewToggle:V,toolbarActions:u,selectionActions:P,selectedRowIds:F,selectedRows:Q,showHiddenRows:B,hiddenRowsLabel:g,onShowHiddenRowsChange:L,allRows:e,columnVisibilityOptions:n,onColumnVisibilityChange:(Ee,Oe)=>{M.getColumn(Ee)?.toggleVisibility(Oe);},enableColumnPinning:h,enableGrouping:E,enableToolbarColumnChooser:S,enableToolbarFilterChips:I,enableToolbarResetLayout:A,enableToolbarSavedViews:G,onColumnPinningChange:m,columnFilters:a,onColumnFilterChange:D,onClearColumnFilters:s,onResetColumnLayout:K,onCreateSavedView:_,onApplySavedView:U,onRenameSavedView:R,onDeleteSavedView:b,density:Se,onDensityChange:v,enableDensityToggle:J,labels:f,toolbarVisibility:De,openFileDialog:k,savedViews:q,table:M})})}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,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",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 Ri(e){return {...oe,...e}}function Si({Button:e,Checkbox:a,DataTableRowActions:n,Tooltip:i,TooltipContent:r,TooltipTrigger:l,cancelEditing:d$1,columns:p,editableRows:u,editingRowId:h$1,editErrors:E,enableRowSelection:S,enableRowPinning:I,hasTreeExpansion:A,isSavingEdit:G,isEditDirty:J,includeFillSpacer:V=false,labels:g,lastSelectedRowIdRef:f,detailPanel:s,detailExpanded:D,onDetailExpandedChange:m,rowSelectionSelectAllScope:v,rowActions:L,saveEdit:C,startEditingRow:$,tableRef:K}){let _=T.useCallback((U,R)=>{let b=K.current;if(!b||!f.current)return;let x=b.getRowModel().rows.filter(q=>!d(q.original)),k=x.findIndex(q=>q.id===f.current),F=x.findIndex(q=>q.id===U);if(k<0||F<0)return;let Q=Math.min(k,F),P=Math.max(k,F);b.setRowSelection(q=>{let B={...q};for(let M of x.slice(Q,P+1).filter(W=>W.getCanSelect()&&W.getCanMultiSelect()))R?B[M.id]=true:delete B[M.id];return B});},[f,K]);return T.useMemo(()=>{let U=[];if(A||s){let R=A&&s?80:a$1;U.push({id:"__expand__",enableResizing:false,enableSorting:false,enableHiding:false,size:R,minSize:R,maxSize:R,header:()=>jsx("span",{className:"sr-only",children:g.expandRow}),cell:({row:b$1,table:x})=>{let k=A&&b$1.getCanExpand(),F=!!(s&&(s.getRowCanExpand?.(b$1.original)??true));if(!k&&!F)return null;let Q=b$1.getIsExpanded(),P=D===true||!!D[b$1.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":Q?g.collapseRow:g.expandRow,"aria-expanded":Q,"data-tree-toggle":"true",onClick:()=>b$1.toggleExpanded(),children:jsx(c,{className:a$2("transition-transform",Q?"rotate-0":"-rotate-90")})}):null,F?jsx(e,{type:"button",variant:"ghost",size:"icon-sm","aria-label":P?A?g.collapseRowDetails??oe.collapseRowDetails:g.collapseRow:A?g.expandRowDetails??oe.expandRowDetails:g.expandRow,"aria-expanded":P,"data-detail-toggle":"true",onClick:()=>{m(q=>b(q,b$1.id,x.getCoreRowModel().flatRows.map(B=>B.id)));},children:jsx(c,{className:a$2("transition-transform",P?"rotate-0":"-rotate-90")})}):null]})}});}return S&&U.push({id:"__select__",enableResizing:false,enableSorting:false,enableHiding:false,size:a$1,minSize:a$1,maxSize:a$1,header:({table:R})=>{let b=v==="filtered",x=(b?R.getFilteredRowModel().flatRows:R.getRowModel().flatRows).filter(P=>P.getCanSelect()&&P.getCanMultiSelect()),k=x.length>0&&x.every(P=>P.getIsSelected()),F=x.some(P=>P.getIsSelected()),Q=b?g.selectAllFilteredRows??oe.selectAllFilteredRows:g.selectAllVisibleRows??oe.selectAllVisibleRows;return x.length===0?jsx("span",{className:"sr-only",children:Q}):jsx("div",{className:"flex items-center justify-center",children:jsx(a,{className:"my-0.5",checked:k?true:F?"indeterminate":false,onCheckedChange:P=>{R.setRowSelection(q=>{let B={...q};for(let M of x)P===true?B[M.id]=true:delete B[M.id];return B});},"aria-label":Q})})},cell:({row:R})=>jsx("div",{className:"flex items-center justify-center",children:jsx(a,{className:"my-0.5",checked:R.getIsSelected(),disabled:!R.getCanSelect(),onClick:b=>{if(!b.shiftKey||!f.current||!R.getCanMultiSelect()){f.current=R.id;return}b.preventDefault(),b.stopPropagation(),_(R.id,!R.getIsSelected()),f.current=R.id;},onCheckedChange:b=>{f.current=R.id,R.toggleSelected(b===true);},"aria-label":g.selectRow??oe.selectRow})})}),U.push(...p.map(R=>h(R))),V&&U.push({id:"__spacer__",cell:()=>null,header:()=>null,enableColumnFilter:false,enableGlobalFilter:false,enableGrouping:false,enableHiding:false,enablePinning:false,enableResizing:false,enableSorting:false,minSize:0,size:0}),(L.length||u||I)&&U.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:g.actions}),cell:({row:R})=>{let b=R.id;return h$1===b?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:G||!J,onClick:()=>{C(R.original);},children:g.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:g.cancelEdit})]})}),jsx(r,{children:g.cancelEdit})]})]}):jsx("div",{className:"flex w-full items-center justify-center",children:jsx(n,{row:R.original,rowActions:L,editableRows:u,isEditing:false,onStartEditing:()=>{$(R.original,R.id);},onCancelEditing:()=>{},labels:g,rowPinning:I?{canPin:R.getCanPin(),position:R.getIsPinned(),pin:k=>R.pin(k)}:void 0})})}}),U},[e,a,n,i,r,l,d$1,p,u,D,s,E,h$1,S,I,A,V,G,J,g,f,m,v,L,C,_,$])}function Re({defaultValue:e,onChange:a,value:n}){let[i,r]=T.useState(e),l=n??i,d=T.useRef(l);T.useEffect(()=>{d.current=l;},[l]);let p=T.useCallback(u=>{let h=typeof u=="function"?u(d.current):u;d.current=h,a?.(h),n===void 0&&r(h);},[a,n]);return [l,p]}function vi({enabled:e,hasMore:a,isLoadingMore:n,onLoadMore:i,onError:r}){let l=T.useRef(null),d=T.useRef(false),p=T.useEffectEvent(i),u=T.useEffectEvent(h=>{r?.(h);});return T.useEffect(()=>{if(!e||!a||n)return;let h=l.current;if(!h)return;let E=new IntersectionObserver(S=>{if(S[0].isIntersecting&&!d.current){d.current=true;let A;try{A=p();}catch(G){d.current=false,u(G);return}Promise.resolve(A).catch(G=>{u(G);}).finally(()=>{d.current=false;});}},{rootMargin:"200px 0px 200px 0px"});return E.observe(h),()=>{E.disconnect();}},[e,a,n]),l}function xi({enabled:e,maxPageIndex:a,onPageIndexChange:n,pageIndex:i,setLocalPageIndex:r}){T.useEffect(()=>{if(!e||i>=0&&i<=a)return;let l=Math.min(Math.max(i,0),a);r(l),n?.(l);},[e,a,n,i,r]);}function ki(){return T.useMemo(()=>{let e=new WeakMap;return (a,n,i)=>{let r=o(i);if(!r)return true;let l=a.original;if(typeof l!="object"||l===null)return o(a.getValue(n)).includes(r);let d=e.get(l);d||(d=new Map,e.set(l,d));let p=d.get(n);if(p===void 0){let u=a.getValue(n);p=o(u),d.set(n,p);}return p.includes(r)}},[])}function Mi({autoResetPageIndex:e,columnGroupPaths:a,columnResizeMode:n,dir:i,currentColumnFilters:r,currentColumnOrder:l,currentColumnPinning:d$1,currentRowPinning:p,currentColumnSizing:u,currentExpanded:h,currentGrouping:E,currentPagination:S,currentRowSelection:I,currentSorting:A,currentViewMode:G,defaultColumn:J,effectiveColumnVisibility:V,enableColumnResizing:g,enableMultiRowSelection:f,enableRowPinning:s$1,enableRowSelection:D,enableSubRowSelection:m,getRowCanSelect:v,getRowCanExpand:L,getSubRows:C,aggregationFns:$,groupedColumnMode:K,globalFilterFn:_,globalFilterValue:U,hasNextPage:R,handleColumnFiltersChange:b,handleColumnOrderChange:x$1,handleColumnPinningChange:k$1,handleRowPinningChange:F,handleColumnVisibilityChange:Q,handleExpandedChange:P,handleGroupingChange:q,infiniteScroll:B$1,keepPinnedRows:M,manualFiltering:W,manualGrouping:ne,manualExpanding:be,manualPagination:fe,manualSorting:De,onActionError:Se,onPageIndexChange:Te,onPageSizeChange:Ee,pageCount:Oe,pageIndex:X,pageSize:he,paginateExpandedRows:z,filterFromLeafRows:we,maxLeafRowFilterDepth:$e,setCurrentRowSelection:na,setCurrentSorting:Ye,setLocalColumnSizing:oa,setLocalPagination:de,shouldRenderInitialLoading:ia,tableColumns:Ae,tableData:pa,tableGetRowId:_e,tableRef:Ra,totalRowCount:ga,virtualization:Je}){let ma=ki(),ye=T.useMemo(()=>k(Ae).map(({column:t,index:w})=>s(t,w)),[Ae]),ra=T.useMemo(()=>{let t=ye,w=t.filter(N=>!x(N)&&N!=="__spacer__"),j=new Set(w),ue=l.filter(N=>j.has(N)),ae=w.filter(N=>!ue.includes(N));return [...t.filter(N=>N==="__expand__"||N==="__select__"),...ue,...ae,...t.filter(N=>N==="__spacer__"),...t.filter(N=>N==="__actions__")]},[l,ye]),He=T.useMemo(()=>{let t=new Set(ye),w=new Set(ye.filter(ae=>!x(ae)&&ae!=="__spacer__")),j=(d$1.left??[]).filter(ae=>w.has(ae)),ue=(d$1.right??[]).filter(ae=>w.has(ae));return {left:[...["__expand__","__select__"].filter(ae=>t.has(ae)),...j],right:[...ue,...["__actions__"].filter(ae=>t.has(ae))]}},[d$1,ye]),la=T.useMemo(()=>{let t=new Set,w=N=>{N.forEach((ea,Oa)=>{if(t.add(_e(ea,Oa)),!d(ea)){let _a=C?.(ea,Oa);_a?.length&&w(_a);}});};w(pa);let j=(p.top??[]).filter(N=>t.has(N)),ue=new Set(j),ae=(p.bottom??[]).filter(N=>t.has(N)&&!ue.has(N));return {top:j,bottom:ae}},[p.bottom,p.top,C,pa,_e]),ve=T.useMemo(()=>({sorting:A,pagination:S,rowSelection:I,columnVisibility:V,columnFilters:r,globalFilter:U,expanded:h,grouping:E,columnOrder:ra,columnPinning:He,rowPinning:la,columnSizing:u}),[r,u,h,E,S,I,A,V,ra,He,la,U]),Be=T.useCallback(t=>{let w=typeof t=="function"?t(S):t;(X===void 0||he===void 0)&&de(j=>({pageIndex:X===void 0?w.pageIndex:j.pageIndex,pageSize:he===void 0?w.pageSize:j.pageSize})),w.pageIndex!==S.pageIndex&&Te?.(w.pageIndex),w.pageSize!==S.pageSize&&Ee?.(w.pageSize);},[S,Te,Ee,X,he,de]),Sa=T.useCallback(t=>{oa(t);},[oa]),Xe=T.useMemo(()=>{let t=false,w=false;for(let{column:j}of k(Ae))t||=j.meta?.filter?.type==="faceted",w||=j.meta?.filter?.type==="numberRange";return {minMaxValues:w,uniqueValues:t}},[Ae]),ce=useReactTable({data:pa,columns:Ae,getCoreRowModel:getCoreRowModel(),getFilteredRowModel:W?void 0:getFilteredRowModel(),getFacetedRowModel:(Xe.uniqueValues||Xe.minMaxValues)&&!W?getFacetedRowModel():void 0,getFacetedUniqueValues:Xe.uniqueValues&&!W?getFacetedUniqueValues():void 0,getFacetedMinMaxValues:Xe.minMaxValues&&!W?getFacetedMinMaxValues():void 0,getGroupedRowModel:E.length&&!ne?getGroupedRowModel():void 0,getSortedRowModel:De?void 0:getSortedRowModel(),getExpandedRowModel:(C||E.length)&&!be?getExpandedRowModel():void 0,getPaginationRowModel:fe||B$1?.enabled?void 0:getPaginationRowModel(),enableRowSelection:v?t=>D&&v(t.original):D,enableRowPinning:typeof s$1=="function"?t=>s$1(t.original):s$1,keepPinnedRows:M,enableMultiRowSelection:typeof f=="function"?t=>f(t.original):f,enableSubRowSelection:typeof m=="function"?t=>m(t.original):m,enableColumnResizing:g,columnResizeMode:n,columnResizeDirection:i,getRowId:_e,getSubRows:C,getRowCanExpand:C?t=>L?.(t.original)??t.subRows.length>0:void 0,globalFilterFn:_??ma,getColumnCanGlobalFilter:t=>t.columnDef.enableGlobalFilter!==false&&typeof t.accessorFn=="function",manualSorting:De,manualGrouping:ne,manualFiltering:W,manualExpanding:be,manualPagination:fe||!!B$1?.enabled,paginateExpandedRows:z,filterFromLeafRows:we,maxLeafRowFilterDepth:$e,defaultColumn:J,autoResetPageIndex:e,state:ve,onSortingChange:Ye,onPaginationChange:Be,onRowSelectionChange:na,onColumnVisibilityChange:Q,onColumnFiltersChange:b,onExpandedChange:P,onGroupingChange:q,onColumnOrderChange:x$1,onColumnPinningChange:k$1,onRowPinningChange:F,onColumnSizingChange:Sa,aggregationFns:$,groupedColumnMode:K});Ra.current=ce;let va=ce.getVisibleLeafColumns(),ba=T.useCallback((t,w)=>{if(t===w||!j(t,w,a))return;let j$1=ce.getAllLeafColumns().map(ae=>ae.id).filter(ae=>!x(ae)&&ae!=="__spacer__"),ue=B(l.length?l:j$1,t,w);x$1(ue);},[a,l,x$1,ce]),fa=ce.getTopRows(),Fe=ce.getBottomRows(),Ue=G==="table"?ce.getCenterRows():ce.getRowModel().rows,Ta=typeof Je=="object"?Je:void 0,Ge=Je===true||Ta?.enabled===true,La=Math.max(1,Math.floor(Ta?.fallbackRowCount??20)),ke=(Ge?Ue.slice(0,La):Ue).map((t,w)=>({row:t,rowIndex:w})),je=fe||!!B$1?.enabled,sa=je?void 0:ce.getFilteredRowModel().rows.length,da=ga??sa,Ze=!je||Oe!==void 0||ga!==void 0,xa=da,Ke=ia?1:Oe??(da!==void 0?Math.max(1,Math.ceil(da/S.pageSize)):je?S.pageIndex+(R?2:1):ce.getPageCount()),wa=Math.max(0,Ke-1),Na=T.useCallback(t=>{X===void 0&&de(w=>w.pageIndex===t?w:{...w,pageIndex:t});},[X,de]);xi({enabled:!ia&&!B$1?.enabled&&Ze,maxPageIndex:wa,onPageIndexChange:Te,pageIndex:S.pageIndex,setLocalPageIndex:Na});let We=T.useCallback(t=>{t!==S.pageIndex&&(Te?.(t),X===void 0&&de(w=>w.pageIndex===t?w:{...w,pageIndex:t}));},[S.pageIndex,Te,X,de]),Ea=T.useCallback(t=>{S.pageIndex!==0&&Te?.(0),t!==S.pageSize&&Ee?.(t),he===void 0&&de({pageIndex:0,pageSize:t});},[S.pageIndex,S.pageSize,Te,Ee,he,de]),ka=vi({enabled:!!B$1?.enabled,hasMore:!!B$1?.hasMore,isLoadingMore:B$1?.isLoadingMore,onLoadMore:()=>B$1?.onLoadMore(),onError:t=>{Se?.({error:t,source:"infiniteScroll"});}});return {effectivePageCount:Ke,footerTotalRowCount:xa,handleFooterPageIndexChange:We,handleFooterPageSizeChange:Ea,isPageCountKnown:Ze,renderedRows:Ue,topPinnedRows:fa,bottomPinnedRows:Fe,reorderColumn:ba,rowsToRender:ke,sentinelRef:ka,table:ce,virtualPaddingBottom:0,virtualPaddingTop:0,visibleLeafColumns:va}}var ys="data-table-pro:column-prefs:",Ai=1,Vi=["visibility","sizing","order","pinning","rowPinning","density"];function Fi(e){let a=_n(e);if(!a)return {};let n=Hn(a);if(!n)return {};let i=Bn(a.key),r;try{r=n.getItem(i);}catch(u){return a.onError?.({error:u,operation:"read"}),{}}if(!r)return {};let l;try{l=(a.deserialize??JSON.parse)(r);}catch(u){return a.onError?.({error:u,operation:"deserialize"}),{}}let d=a.version??Ai,p;if(Rs(l))if(l.version===d)p=l.state;else if(a.migrate)try{p=a.migrate({version:l.version,state:l.state},d);}catch(u){return a.onError?.({error:u,operation:"migrate"}),{}}else return {};else p=l;return Li(Ss(p),a.slices)}function Ii(e){let a=_n(e);if(!a)return false;let n=Hn(a);if(!n)return false;try{return n.removeItem(Bn(a.key)),!0}catch(i){return a.onError?.({error:i,operation:"remove"}),false}}function zi({key:e,persistence:a,prefs:n}){let i=a??_n(e),r=i?Hn(i):void 0,l=i?Bn(i.key):void 0,d=i?.version??Ai,p=Math.max(0,i?.debounceMs??100),u=Li(n,i?.slices),h=T.useMemo(()=>{if(!i)return {value:void 0};try{let S={version:d,state:u};return {value:(i.serialize??JSON.stringify)(S)}}catch(S){return {error:S,value:void 0}}},[i,u,d]),E=T.useEffectEvent((S,I)=>{i?.onError?.({error:S,operation:I});});T.useEffect(()=>{h.error!==void 0&&E(h.error,"serialize");},[h.error]),T.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(A){E(A,"write");}};if(p===0){S();return}let I=globalThis.setTimeout(S,p);return ()=>{globalThis.clearTimeout(I);}},[p,h.value,r,l]);}function _n(e){if(e)return typeof e=="string"?{key:e}:e}function Hn(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 Bn(e){return `${ys}${e}`}function Rs(e){return nt(e)&&Object.prototype.hasOwnProperty.call(e,"version")&&Object.prototype.hasOwnProperty.call(e,"state")}function Li(e,a){let n=new Set(a??Vi),i={};for(let r of Vi)n.has(r)&&e[r]!==void 0&&Object.assign(i,{[r]:e[r]});return i}function Ss(e){if(!nt(e))return {};let a={},n=vs(e.visibility);n&&(a.visibility=n);let i=Ps(e.sizing);i&&(a.sizing=i);let r=mt(e.order);if(r&&(a.order=r),nt(e.pinning)){let d=mt(e.pinning.left)??[],p=mt(e.pinning.right)??[];a.pinning={left:d,right:p};}let l=xs(e.rowPinning);return l&&(a.rowPinning=l),Es(e.density)&&(a.density=e.density),a}function vs(e){if(nt(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="boolean"))}function Ps(e){if(nt(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="number"&&Number.isFinite(a[1])&&a[1]>=0))}function mt(e){if(Array.isArray(e))return e.filter(a=>typeof a=="string")}function xs(e){if(nt(e))return {top:mt(e.top)??[],bottom:mt(e.bottom)??[]}}function Es(e){return e==="compact"||e==="comfortable"||e==="spacious"}function nt(e){return !!e&&typeof e=="object"&&!Array.isArray(e)}var ks=Object.values(a).slice().sort((e,a)=>e-a);function Ni(e){let a=T.useRef(0),[n,i]=T.useState(0);return T.useEffect(()=>{let r=e.current;if(!r)return;let l=(p=r.clientWidth)=>{let u=Ms(p);u!==a.current&&(a.current=u,i(u));};if(l(),typeof ResizeObserver>"u")return;let d=new ResizeObserver(p=>{let u=p[0];l(u?Vs(u):void 0);});return d.observe(r),()=>{d.disconnect();}},[e]),n}function Ms(e){if(e<=0)return 0;let a=1;for(let n of ks){if(ed$1??(l?{key:l}:void 0),[l,d$1]),we=T.useMemo(()=>Fi(z),[z]),[$e,na]=T.useState({pageIndex:f?.pagination?.pageIndex??0,pageSize:f?.pagination?.pageSize??be[0]??20}),[Ye,oa]=Re({value:Se,onChange:Q,defaultValue:()=>f?.sorting??[]}),[de,ia]=Re({value:ne,onChange:k$1,defaultValue:()=>f?.rowSelection??{}}),[Ae,pa]=Re({value:p,onChange:_,defaultValue:()=>f?.columnVisibility??we.visibility??{}}),[_e,Ra]=Re({value:e$1,onChange:v,defaultValue:()=>f?.columnFilters??[]}),[ga,Je]=Re({value:A,onChange:R,defaultValue:()=>f?.expanded??{}}),[ma,ye]=Re({value:a,onChange:L,defaultValue:()=>f?.columnOrder??we.order??[]}),[ra,He]=Re({value:n,onChange:C,defaultValue:()=>f?.columnPinning??we.pinning??r(u)}),[la,ve]=Re({value:i$1,onChange:$,defaultValue:()=>f?.rowPinning??we.rowPinning??{top:[],bottom:[]}}),[Be,Sa]=Re({value:r$1,onChange:K,defaultValue:()=>f?.columnSizing??we.sizing??{}}),[Xe,ce]=Re({value:X,onChange:q,defaultValue:()=>f?.viewMode??"table"}),[va,ba]=Re({value:G,onChange:b,defaultValue:()=>f?.grouping??[]}),[fa,Fe]=Re({value:De,onChange:F,defaultValue:()=>f?.showHiddenRows??false}),[Ue,Ta]=Re({value:E,onChange:U,defaultValue:()=>f?.density??we.density??"comfortable"}),Ge=Oe??f?.globalFilter??"",La=Ee??W.searchPlaceholder,Pa=Te??250,[ke,je]=T.useState(Ge),sa=Ni(he),da=!!P,Ze=T.useRef(Ge),xa=T.useEffectEvent(H=>{Ze.current=H,P?.(H);});T.useEffect(()=>{Ze.current=Ge,je(Ge);},[Ge]),T.useEffect(()=>{if(!da||ke===Ge||ke===Ze.current)return;let H=window.setTimeout(()=>{xa(ke);},Pa);return ()=>{window.clearTimeout(H);}},[da,ke,Pa,Ge]);let Ke=T.useMemo(()=>({pageIndex:B??$e.pageIndex,pageSize:M??$e.pageSize}),[$e.pageIndex,$e.pageSize,B,M]),wa=Math.max(1,D??Math.min(5,Ke.pageSize)),Na=T.useDeferredValue(ke),We=I?m?ke:Na:"",Ea=T.useCallback(H=>{ce(H);},[ce]),ka=T.useCallback(H=>{Fe(H);},[Fe]),t=T.useCallback(H=>{Ta(H);},[Ta]),w=T.useCallback(()=>{x?.(0),B===void 0&&na(H=>H.pageIndex===0?H:{...H,pageIndex:0});},[x,B]),j=T.useRef({columnFilters:_e,globalFilterValue:We});T.useEffect(()=>{let H=j.current,Pe=H.columnFilters!==_e,re=H.globalFilterValue!==We;j.current={columnFilters:_e,globalFilterValue:We},!m&&(!Pe&&!re||w());},[_e,We,m,w]),zi({persistence:z,prefs:{visibility:p?void 0:Ae,sizing:r$1===void 0?Be:void 0,order:a?void 0:ma,pinning:n?void 0:ra,rowPinning:i$1===void 0?la:void 0,density:E?void 0:Ue}});let ue=T.useMemo(()=>k(u).reduce((H,{column:Pe,index:re})=>{let ca=s(Pe,re);return i(Pe.meta?.hideOn,sa)&&(H[ca]=false),H},{}),[u,sa]),ae=T.useMemo(()=>({...Ae,...ue}),[Ae,ue]),N=T.useMemo(()=>h.filter(H=>b$1(H,g,fa)),[fa,h,g]),ea=s$1&&N.length===0,Oa=T.useMemo(()=>c$1(wa),[wa]),_a=ea?Oa:N,Yt=T.useCallback((H,Pe)=>d(H)?e(Pe):V(H,Pe),[V]),Ma=S||(fe?.length??0)>0||Object.values(de).some(Boolean),rt=T.useMemo(()=>{if(!Ma)return new Map;let H=new Map,Pe=re=>{re.forEach((ca,te)=>{H.set(V(ca,te),ca);let pe=J?.(ca,te);pe?.length&&Pe(pe);});};return Pe(N),H},[V,J,Ma,N]),Jt=T.useMemo(()=>Ma?Object.entries(de).filter(([,H])=>H).map(([H])=>rt.get(H)).filter(H=>!!H):[],[de,rt,Ma]),Xt=T.useMemo(()=>Object.entries(de).flatMap(([H,Pe])=>Pe?[H]:[]),[de]);return {containerWidth:sa,currentColumnFilters:_e,currentColumnOrder:ma,currentColumnPinning:ra,currentRowPinning:la,currentColumnSizing:Be,currentColumnVisibility:Ae,currentDensity:Ue,currentExpanded:ga,currentGrouping:va,currentPagination:Ke,currentRowSelection:de,currentShowHiddenRows:fa,currentSorting:Ye,currentViewMode:Xe,effectiveColumnVisibility:ae,globalFilterValue:We,handleDensityChange:t,handleShowHiddenRowsChange:ka,handleViewModeChange:Ea,localSearchValue:ke,resolvedLoadingRowCount:wa,resolvedToolbarQueryPlaceholder:La,selectedRowIds:Xt,selectedRows:Jt,setCurrentColumnFilters:Ra,setCurrentColumnOrder:ye,setCurrentColumnPinning:He,setCurrentRowPinning:ve,setCurrentColumnVisibility:pa,setCurrentExpanded:Je,setCurrentGrouping:ba,setCurrentRowSelection:ia,setCurrentSorting:oa,setLocalColumnSizing:Sa,setLocalPagination:na,setLocalSearchValue:je,shouldRenderInitialLoading:ea,tableData:_a,tableGetRowId:Yt,toolbarFilteredData:N,visibleData:N}}var Fs={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 Hi({columns:e,columnSizing:a,editableRows:n,enableRowSelection:i,hasRowActions:r,hasRowExpansion:l,layoutMode:d,uiClassNames:p,visibleLeafColumns:u}){let h=T.useMemo(()=>{let V=new Set;for(let{column:g$1,index:f}of k(e))g(g$1)&&V.add(s(g$1,f));return i&&V.add("__select__"),l&&V.add("__expand__"),(r||n)&&V.add("__actions__"),V},[e,n,i,r,l]),E=T.useMemo(()=>{let V=new Map;for(let{column:g,index:f$1}of k(e)){let s$1=f(g);s$1!==void 0&&V.set(s(g,f$1),s$1);}return V},[e]),S=T.useMemo(()=>{let V=new Map,g=new Map,f=0;for(let D of u)v(D)==="left"&&(V.set(D.id,f),f+=_i(D));let s=0;for(let D of [...u].reverse())v(D)==="right"&&(g.set(D.id,s),s+=_i(D));return {left:V,right:g}},[u]),I=T.useMemo(()=>new Set([...h,...Object.keys(a)]),[a,h]),A=T.useMemo(()=>{let V=new Map;for(let g of u){let f=g.id==="__select__",s=g.id==="__expand__",D=g.id==="__actions__",m=f||s||D,v$1=g.id==="__spacer__",C=E.get(g.id),$=!v$1&&(d==="fit"||m||I.has(g.id)),K=$||C!==void 0?{width:$?m?a$1:g.getSize():void 0,minWidth:m?a$1:$?g.getSize():C,maxWidth:$?m?a$1:g.getSize():void 0}:void 0,_=v(g),U=_?{left:_==="left"?S.left.get(g.id):void 0,right:_==="right"?S.right.get(g.id):void 0}:void 0,R=K||U?{...K,...U}:void 0;V.set(g.id,{cellStyle:R,colStyle:K,fixedSide:_,headerStyle:R,isActionsColumn:D,isExpansionColumn:s,isSelectionColumn:f,isSpacerColumn:v$1,isUtilityColumn:m,pinnedClassName:_?w(_,p,{isUtilityColumn:m}):void 0,utilityClassName:m?"w-[50px] max-w-[50px] min-w-[50px] px-0":void 0});}return V},[I,d,E,S,p,u]),G=T.useMemo(()=>u.reduce((V,g)=>{let f=A.get(g.id),s=E.get(g.id);return f?.isUtilityColumn?V+a$1:I.has(g.id)?V+g.getSize():V+(s??0)},0),[A,I,E,u]),J=T.useCallback(V=>A.get(V)??Fs,[A]);return {columnLayouts:A,explicitlySizedColumnIds:h,fillMinWidth:G,getColumnLayout:J}}function _i(e){return x(e.id)?a$1:e.getSize()}function Gi(e,a){let n=e.classNames??{},{Button:i,Card:r,CardContent:l,CardHeader:d,Checkbox:p,Skeleton:u}=e;return function({rows:E,cardRenderer:S,cardSizing:I="fixed",cardGridClassName:A,cardClassName:G,rowActions:J,editableRows:V,detailPanel:g,detailExpanded:f,onDetailExpandedChange:s,hasCardTitle:D,rowSelection:m,onRowSelectionChange:v,enableRowSelection:L,editingRowId:C,onEditingRowIdChange:$,getRowClassName:K,onRowClick:_,getRowDraggable:U,onRowDragStart:R,onRowDragEnd:b$1,isLoading:x=false,loadingRowCount:k=5,labels:F}){let Q=I??"fixed",P=A?a$2("grid",A):Is(Q),q=a$2("min-h-0 w-full gap-4 p-1",n.cardGrid,P),B=M=>a$2("relative min-w-0 max-w-full gap-0 overflow-hidden bg-transparent p-0",zs(Q),n.cardItem,G,M);return x?jsx("div",{role:"list","data-dtp-slot":"data-table-card-grid",className:q,children:Array.from({length:Math.max(1,k)},(M,W)=>jsxs(r,{role:"listitem","aria-hidden":"true","data-dtp-slot":"data-table-card-item",className:B("min-h-52"),children:[D?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(l,{className:a$2("space-y-3 pb-4",D?"":"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-${W}`))}):jsx("div",{role:"list","data-dtp-slot":"data-table-card-grid",className:q,children:E.map(M=>{let W=M.id,ne=M.original,be=!!m[W],fe=C===W,De=J.length>0||!!V,Se=!!(g&&(g.getRowCanExpand?.(ne)??true)),Te=L||De||D,Ee=L||De||M.getCanExpand()||Se,Oe=()=>{_&&_({row:ne,rowId:W});};return jsxs(r,{role:"listitem","data-row-id":W,"data-tree-depth":M.depth,draggable:U?.(ne)??false,"data-dtp-slot":"data-table-card-item","data-state":be?"selected":void 0,className:B(a$2([K?.(ne,{row:ne,rowId:W,rowIndex:M.index,isEditing:fe,isExpanded:M.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:X=>{R?.({row:ne,rowId:W,event:X});},onDragEnd:X=>{b$1?.({row:ne,rowId:W,event:X});},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:_?"button":void 0,tabIndex:_?0:void 0,className:a$2("flex min-h-0 max-w-full min-w-0 overflow-hidden rounded-[inherit] [&>*]:min-w-0",Ls(Q),_&&"cursor-pointer focus-visible:outline-none"),onClick:X=>{y(X.target,X.currentTarget)||Oe();},onKeyDown:X=>{y(X.target,X.currentTarget)||(X.key==="Enter"||X.key===" ")&&(X.preventDefault(),Oe());},children:S({row:ne,rowId:W,depth:M.depth,canExpandSubRows:M.getCanExpand(),isSubRowsExpanded:M.getIsExpanded(),toggleSubRowsExpanded:()=>M.toggleExpanded(),isSelected:be,onSelectedChange:X=>{v(Bi(m,W,X,M.getCanSelect(),M.getCanMultiSelect()));},actions:J,isEditing:fe,startEditing:()=>{$(W);},cancelEditing:()=>{$(null);}})}),fe||!g||!(f===true||f[M.id])?null:jsx("div",{"data-dtp-slot":"data-table-card-detail-panel",className:"relative z-20 min-w-0",children:g.render({row:ne,rowId:W,tableRow:M})}),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:[L?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(p,{checked:be,disabled:!M.getCanSelect(),"aria-label":(F.selectCardRow??oe.selectCardRow)(W),onCheckedChange:X=>{v(Bi(m,W,X===true,M.getCanSelect(),M.getCanMultiSelect()));}})}):null,M.getCanExpand()?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(i,{type:"button",size:"icon-sm",variant:"ghost","aria-label":M.getIsExpanded()?F.collapseRow:F.expandRow,"aria-expanded":M.getIsExpanded(),onClick:()=>M.toggleExpanded(),children:jsx(c,{className:a$2("transition-transform",M.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":f===true||f[M.id]?M.getCanExpand()?F.collapseRowDetails??oe.collapseRowDetails:F.collapseRow:M.getCanExpand()?F.expandRowDetails??oe.expandRowDetails:F.expandRow,"aria-expanded":f===true||!!f[M.id],"data-detail-toggle":"true",onClick:()=>{s(X=>b(X,M.id,E.map(he=>he.id)));},children:jsx(c,{className:a$2("transition-transform",f===true||f[M.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(a,{row:ne,rowActions:J,editableRows:V,isEditing:fe,onStartEditing:()=>{$(W);},onCancelEditing:()=>{$(null);},labels:F})}):null]}):null]},W)})})}}function Is(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 zs(e){switch(e){case "content":return "w-fit";case "fluid":return "w-full";default:return}}function Ls(e){switch(e){case "content":return "w-fit";case "fluid":return "w-full flex-1 [&>*]:w-full";default:return "flex-1"}}function Bi(e,a,n,i,r){if(!i)return e;if(n)return r?{...e,[a]:true}:{[a]:true};if(!e[a])return e;let l={...e};return delete l[a],l}function Ui(e){let a=e.classNames??{},{Empty:n,EmptyContent:i,EmptyDescription:r,EmptyHeader:l,EmptyMedia:d,EmptyTitle:p}=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 ${a.emptyState??"border bg-transparent"}`,children:[jsxs(l,{children:[jsx(d,{variant:"icon",children:jsx(p$1,{})}),jsx(p,{children:h}),jsx(r,{children:E})]}),jsx(i,{})]})}}function ji(e){let a=e.classNames??{},{Pagination:n,PaginationContent:i,PaginationEllipsis:r,PaginationFirst:l,PaginationItem:d,PaginationLast:p,PaginationLink:u,PaginationNext:h,PaginationPrevious:E,Select:S,SelectContent:I,SelectGroup:A,SelectItem:G,SelectTrigger:J,SelectValue:V,Tooltip:g,TooltipContent:f,TooltipTrigger:s}=e;function D({pageIndex:v,pageCount:L,pageCountKnown:C,pageSize:$,totalRowCount:K,rowsPerPageOptions:_,onPageIndexChange:U,onPageSizeChange:R,labels:b}){let x=C?Ns(v,Math.max(1,L)):[],k=v>0,F=v+1{R(Number(P));},children:[jsx(J,{"aria-label":b.recordsPerPage,className:`w-22 ${a.paginationSelectTrigger??""}`,children:jsx(V,{})}),jsx(I,{children:jsx(A,{children:_.map(P=>jsx(G,{value:String(P),children:P},P))})})]})]}),K!==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":b.totalRecords(K),children:[jsx(j$1,{className:"size-4"}),jsx("span",{className:"@min-[768px]/data-table:hidden",children:K}),jsx("span",{className:"hidden @min-[768px]/data-table:inline",children:b.totalRecords(K)})]})}):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:C?b.pageStatus(v,Math.max(1,L)):(b.pageStatusUnknown??oe.pageStatusUnknown)(v)}),jsx(n,{"aria-label":b.pagination??oe.pagination,className:"mx-0 w-auto justify-end",children:jsxs(i,{children:[jsx(d,{className:"@min-[768px]/data-table:hidden",children:jsxs(g,{children:[jsx(s,{asChild:true,children:jsx(l,{"aria-label":b.firstPage,href:"#",size:"icon-sm",showText:false,disabled:!k,onClick:P=>{P.preventDefault(),k&&U(0);},text:b.firstPage})}),jsx(f,{children:b.firstPage})]})}),jsx(d,{children:jsxs(g,{children:[jsx(s,{asChild:true,children:jsx(E,{"aria-label":b.previousPage,href:"#",size:"icon-sm",showText:false,disabled:!k,onClick:P=>{P.preventDefault(),k&&U(v-1);},text:b.previousPage})}),jsx(f,{children:b.previousPage})]})}),x.map((P,q)=>jsx(d,{className:"hidden @min-[768px]/data-table:block",children:P==="ellipsis"?jsx(r,{text:b.morePages??oe.morePages}):jsx(u,{href:"#",isActive:P===v+1,size:"icon-sm",onClick:B=>{B.preventDefault(),U(P-1);},children:P})},`${P}-${q}`)),jsx(d,{children:jsxs(g,{children:[jsx(s,{asChild:true,children:jsx(h,{"aria-label":b.nextPage,href:"#",size:"icon-sm",showText:false,disabled:!F,onClick:P=>{P.preventDefault(),F&&U(v+1);},text:b.nextPage})}),jsx(f,{children:b.nextPage})]})}),C?jsx(d,{className:"@min-[768px]/data-table:hidden",children:jsxs(g,{children:[jsx(s,{asChild:true,children:jsx(p,{"aria-label":b.lastPage,href:"#",size:"icon-sm",showText:false,text:b.lastPage,disabled:!F,onClick:P=>{P.preventDefault(),F&&U(Q);}})}),jsx(f,{children:b.lastPage})]})}):null]})})]})]})}function m(v){return jsx("div",{className:`rounded-md border px-2 py-1 ${a.footer??""}`,children:jsx(D,{...v})})}return {DataTableFooter:m,DataTablePagination:D}}function Ns(e,a){let n=e+1,i=new Set([1,a]);for(let d=Math.max(1,n-2);d<=Math.min(a,n+2);d+=1)i.add(d);let r=Array.from(i).sort((d,p)=>d-p),l=[];for(let d=0;d1&&l.push("ellipsis"),l.push(p);}return l}function Wi(e){let{Button:a,DropdownMenu:n,DropdownMenuContent:i,DropdownMenuGroup:r,DropdownMenuItem:l,DropdownMenuSeparator:d,DropdownMenuTrigger:p,Tooltip:u$1,TooltipContent:h,TooltipTrigger:E}=e;return function({row:I,rowActions:A,editableRows:G,isEditing:J,onStartEditing:V,onCancelEditing:g,labels:f,rowPinning:s}){let D=A.filter(C=>d$1(C,I)),m$1=T.useCallback(C=>{C.stopPropagation();},[]);if(J)return jsxs(u$1,{children:[jsx(E,{asChild:true,children:jsxs(a,{type:"button",variant:"ghost",size:"icon-sm",onPointerDown:m$1,onClick:g,children:[jsx(u,{}),jsx("span",{className:"sr-only",children:f.cancelEdit})]})}),jsx(h,{children:f.cancelEdit})]});let v=e$2(G,I),L=s?.canPin??false;return !D.length&&!v&&!L?null:jsxs(n,{children:[jsxs(u$1,{children:[jsx(E,{asChild:true,children:jsx(p,{asChild:true,children:jsxs(a,{type:"button",variant:"ghost",size:"icon-sm",onPointerDown:m$1,onClick:m$1,children:[jsx(k$1,{}),jsx("span",{className:"sr-only",children:f.rowActions})]})})}),jsx(h,{children:f.rowActions})]}),jsxs(i,{align:"end",className:"w-52",children:[v?jsx(r,{children:jsxs(l,{onClick:C=>{C.stopPropagation(),V();},children:[jsx(m,{"data-icon":"inline-start"}),f.editRow]})}):null,v&&(D.length||L)?jsx(d,{}):null,L?jsx(r,{children:s?.position?jsx(l,{onClick:C=>{C.stopPropagation(),s.pin(false);},children:f.unpinRow}):jsxs(Fragment,{children:[jsx(l,{onClick:C=>{C.stopPropagation(),s?.pin("top");},children:f.pinRowToTop}),jsx(l,{onClick:C=>{C.stopPropagation(),s?.pin("bottom");},children:f.pinRowToBottom})]})}):null,L&&D.length?jsx(d,{}):null,D.length?jsx(r,{children:D.map(C=>{let $=C.icon;return jsxs(l,{disabled:C.disabled?.(I),variant:C.variant==="destructive"?"destructive":void 0,onClick:K=>{K.stopPropagation(),C.onClick(I);},children:[$?jsx($,{"data-icon":"inline-start"}):null,c$2(C.label,I)]},C.key)})}):null]})]})}}var _s=T.lazy(()=>import('./data-table-toolbar-operations-IDEGCKBK.js'));function qi(e){let a=e.classNames??{},{Button:n,ButtonGroup:i,DropdownMenu:r,DropdownMenuCheckboxItem:l,DropdownMenuContent:d,DropdownMenuGroup:p,DropdownMenuItem:u$1,DropdownMenuLabel:h,DropdownMenuSeparator:E,DropdownMenuTrigger:S,InputGroup:I,InputGroupAddon:A,InputGroupInput:G,Tooltip:J,TooltipContent:V,TooltipTrigger:g}=e;return function({title:D,titleId:m,description:v,descriptionId:L,toolbarQueryValue:C,toolbarQueryPlaceholder:$,onToolbarQueryValueChange:K,customToolbar:_,compactToolbar:U,viewMode:R,onViewModeChange:b,enableViewToggle:x,toolbarActions:k,selectionActions:F,selectedRows:Q,selectedRowIds:P,showHiddenRows:q$1,hiddenRowsLabel:B,onShowHiddenRowsChange:M,allRows:W,columnVisibilityOptions:ne,onColumnVisibilityChange:be,enableColumnPinning:fe,onColumnPinningChange:De,columnFilters:Se,onColumnFilterChange:Te,onClearColumnFilters:Ee,density:Oe,onDensityChange:X,enableDensityToggle:he,labels:z,toolbarVisibility:we,openFileDialog:$e,enableGrouping:na,enableToolbarColumnChooser:Ye,enableToolbarFilterChips:oa,enableToolbarResetLayout:de,enableToolbarSavedViews:ia,savedViews:Ae,onResetColumnLayout:pa,onCreateSavedView:_e,onApplySavedView:Ra,onRenameSavedView:ga,onDeleteSavedView:Je,reorderColumn:ma,table:ye}){let ra=T.useRef(null),[He,la]=T.useState(false),ve=a.toolbarCompactIconButton??"",Be=k.filter(t=>(t.placement??"primary")==="primary"),Sa=k.filter(t=>t.placement==="trailing"),Xe=we?.title??true,ce=we?.search??true,va=we?.actions??true,ba=we?.trailingActions??true,fa=we?.options??true,Fe=we?.viewToggle??true,Ue=we?.customToolbar??true,Ta=Xe&&!!(D||v),Ge=ce,La=va&&Be.length>0,Pa=P.length>0&&F.length>0,ke=fa&&(ne.some(t=>t.canHide)||!!(M&&B)||fe||he||na||Ye||de||ia),je=Ye||de||ia,sa=Se.filter(t=>Gn(t.value)),da={Button:n,DropdownMenuCheckboxItem:l,DropdownMenuGroup:p,DropdownMenuItem:u$1,DropdownMenuLabel:h,DropdownMenuSeparator:E,InputGroup:I,InputGroupAddon:A,InputGroupInput:G},Ze=t=>jsx(T.Suspense,{fallback:null,children:jsx(_s,{placement:t,ui:da,labels:z,enableColumnChooser:Ye,enableFilterChips:oa,enableResetLayout:de,enableSavedViews:ia,enableColumnPinning:fe,columnVisibilityOptions:ne,onColumnVisibilityChange:be,onColumnPinningChange:De,reorderColumn:ma,table:ye,onResetColumnLayout:pa,savedViews:Ae,onCreateSavedView:_e,onApplySavedView:Ra,onRenameSavedView:ga,onDeleteSavedView:Je,toolbarQueryValue:C,onToolbarQueryValueChange:K,activeColumnFilters:sa,onColumnFilterChange:Te,onClearColumnFilters:Ee})}),xa=ye.getAllLeafColumns().filter(t=>!t.id.startsWith("__")&&t.getCanGroup()),Ke=ye.getState().grouping.flatMap(t=>{let w=ye.getColumn(t);return w?[w]:[]}),wa=Fe&&x&&!!b,Na=ba&&Sa.length>0,We=Ue&&!!_,Ea=Ue&&!!(U??_),ka=z.selectedRows(P.length);return T.useEffect(()=>{He&&ra.current?.focus();},[He]),!Ta&&!Ge&&!La&&!Pa&&!ke&&!wa&&!Na&&!We&&!Ea?null:jsxs("div",{className:"flex flex-col gap-4 pb-0",children:[Xe&&(D||v)?jsxs("div",{className:"flex flex-col gap-1",children:[D?jsx("h2",{id:m,className:"text-lg font-semibold tracking-tight",children:D}):null,v?jsx("p",{id:L,className:`max-w-3xl text-sm ${a.mutedText??"opacity-70"}`,children:v}):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:[ce?jsxs(Fragment,{children:[jsx("div",{className:"hidden min-w-0 grow max-w-md @min-[768px]/data-table:block",children:jsxs(I,{className:"min-w-0",children:[jsx(G,{value:C,onChange:t=>{K(t.target.value);},placeholder:$}),jsx(A,{align:"inline-start","aria-hidden":"true",children:jsx(s$1,{})}),C?jsx(A,{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:()=>{K("");},"aria-label":z.clearSearch,title:z.clearSearch,children:jsx(u,{})})}):null]})}),jsxs(J,{children:[jsx(g,{asChild:true,children:jsxs(n,{type:"button",variant:He||C?"secondary":"outline",size:"icon-sm","aria-label":z.searchTable,"aria-pressed":He,className:`shrink-0 @min-[768px]/data-table:hidden ${ve} ${a.toolbarInputButton??""}`,onClick:()=>{la(t=>!t);},children:[jsx(s$1,{}),jsx("span",{className:"sr-only",children:z.searchTable})]})}),jsx(V,{children:z.searchTable})]})]}):null,va?jsx("div",{className:"flex shrink-0 items-center gap-2",children:Be.map(t=>{let w=!t.iconOnly&&!!t.icon,j=jsxs(n,{type:"button",className:w?`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}`:t.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:t.variant??"outline",size:t.iconOnly?"icon":"default",onClick:()=>{t.onClick({rows:W,openFileDialog:$e});},disabled:t.disabled,"aria-label":t.label,title:t.iconOnly?void 0:t.label,children:[t.icon?jsx(t.icon,{}):null,t.iconOnly?jsx("span",{className:"sr-only",children:t.label}):w?jsx("span",{className:"hidden @min-[768px]/data-table:inline",children:t.label}):jsx("span",{children:t.label})]},t.key);return t.iconOnly?jsxs(J,{children:[jsx(g,{asChild:true,children:j}),jsx(V,{children:t.label})]},t.key):j})}):null,Ea?jsx("div",{"data-dtp-slot":"data-table-toolbar-compact-custom",className:"flex shrink-0 items-center gap-2 @min-[1024px]/data-table:hidden",children:U??_}):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:[P.length?jsx("div",{className:`hidden text-sm @min-[768px]/data-table:block ${a.mutedText??"opacity-70"}`,children:ka}):null,P.length?F.map(t=>{let w=t.icon,j={rows:Q,rowIds:P},ue=typeof t.disabled=="function"?t.disabled(Q,j):t.disabled;return jsxs(J,{children:[jsx(g,{asChild:true,children:jsxs(n,{type:"button",variant:t.variant??"secondary",size:"icon-sm",className:ve,disabled:ue,onClick:()=>{t.onClick(j);},"aria-label":t.label,children:[w?jsx(w,{}):null,jsx("span",{className:"sr-only",children:t.label})]})}),jsx(V,{children:t.label})]},t.key)}):null,ke?jsxs(r,{children:[jsx(S,{asChild:true,children:jsxs(n,{type:"button",variant:"outline",size:"icon-sm","aria-label":z.tableOptions,className:`${ve} ${a.toolbarInputButton??""}`,title:z.tableOptions,children:[jsx(a$5,{}),jsx("span",{className:"sr-only",children:z.tableOptions})]})}),jsxs(d,{align:"end",className:"w-56",children:[jsx(h,{children:z.tableOptions}),jsx(p,{children:M&&B?jsx(l,{checked:q$1,onCheckedChange:t=>{M(t===true);},children:z.showHiddenRows(B)}):null}),he?jsxs(Fragment,{children:[jsx(E,{}),jsx(h,{children:z.density}),jsx(p,{children:[["compact",z.compactDensity],["comfortable",z.comfortableDensity],["spacious",z.spaciousDensity]].map(([t,w])=>jsx(l,{checked:Oe===t,onCheckedChange:()=>{X(t);},children:w},t))})]}):null,je?Ze("menu"):null,!Ye&&ne.some(t=>t.canHide)?jsxs(Fragment,{children:[jsx(E,{}),jsx(h,{children:z.columns}),jsx(p,{children:ne.filter(t=>t.canHide).map(t=>jsx(l,{checked:t.visible,onCheckedChange:w=>{be?.(t.id,w===true);},children:t.label},t.id))})]}):null,fe&&!Ye?jsxs(Fragment,{children:[jsx(E,{}),jsxs(h,{children:[z.pinLeft," / ",z.pinRight]}),jsx(p,{children:ne.map(t=>jsxs(u$1,{onSelect:w=>{w.preventDefault();},children:[jsx("span",{className:"min-w-0 flex-1 truncate",children:t.label}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${z.pinLeft}: ${t.label}`,onClick:w=>{w.stopPropagation(),De(t.id,"left");},children:"L"}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${z.pinRight}: ${t.label}`,onClick:w=>{w.stopPropagation(),De(t.id,"right");},children:"R"}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${z.unpin}: ${t.label}`,onClick:w=>{w.stopPropagation(),De(t.id,false);},children:"-"})]},`pin-${t.id}`))})]}):null,na&&xa.length?jsxs(Fragment,{children:[jsx(E,{}),jsx(h,{children:z.grouping}),jsx(p,{children:xa.map(t=>{let w=typeof t.columnDef.header=="string"?t.columnDef.header:t.id,j=t.getIsGrouped();return jsx(l,{checked:j,onCheckedChange:()=>{t.toggleGrouping();},children:j?z.ungroup(w):z.groupBy(w)},`group-${t.id}`)})})]}):null]})]}):null,Fe&&x&&b?jsxs(i,{children:[jsxs(J,{children:[jsx(g,{asChild:true,children:jsxs(n,{type:"button",variant:R==="table"?"default":"outline","aria-pressed":R==="table",className:R==="table"?ve:`${ve} ${a.toolbarInputButton??""}`,size:"icon-sm",onClick:()=>{b("table");},children:[jsx(r$1,{}),jsx("span",{className:"sr-only",children:z.switchToTableView??oe.switchToTableView})]})}),jsx(V,{children:z.tableView??oe.tableView})]}),jsxs(J,{children:[jsx(g,{asChild:true,children:jsxs(n,{type:"button",variant:R==="card"?"default":"outline","aria-pressed":R==="card",className:R==="table"?`${ve} ${a.toolbarInputButton??""}`:ve,size:"icon-sm",onClick:()=>{b("card");},children:[jsx(q,{}),jsx("span",{className:"sr-only",children:z.switchToCardView??oe.switchToCardView})]})}),jsx(V,{children:z.cardView??oe.cardView})]})]}):null,ba?Sa.map(t=>{let w=!t.iconOnly&&!!t.icon,j=jsxs(n,{type:"button",variant:t.variant??"outline",size:t.iconOnly?"icon-sm":"default",onClick:()=>{t.onClick({rows:W,openFileDialog:$e});},disabled:t.disabled,"aria-label":t.label,title:t.iconOnly?void 0:t.label,className:`size-7 shrink-0 ${t.iconOnly?"":`${w?"px-0 @min-[768px]/data-table:px-2.5":""} @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit`} ${t.iconOnly||w?ve:""} ${a.toolbarInputButton??""}`,children:[t.icon?jsx(t.icon,{"data-icon":t.iconOnly?void 0:"inline-start"}):null,t.iconOnly?jsx("span",{className:"sr-only",children:t.label}):w?jsx("span",{className:"hidden @min-[768px]/data-table:inline",children:t.label}):jsx("span",{children:t.label})]},t.key);return t.iconOnly?jsxs(J,{children:[jsx(g,{asChild:true,children:j}),jsx(V,{children:t.label})]},t.key):j}):null]})]}),ce&&He?jsx("div",{"data-dtp-slot":"data-table-toolbar-compact-search",className:"min-w-0 @min-[768px]/data-table:hidden",children:jsxs(I,{children:[jsx(G,{ref:ra,value:C,onChange:t=>{K(t.target.value);},placeholder:$}),jsx(A,{align:"inline-start","aria-hidden":"true",children:jsx(s$1,{})}),C?jsx(A,{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:()=>{K("");},"aria-label":z.clearSearch,title:z.clearSearch,children:jsx(u,{})})}):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(t=>jsx(f,{filter:t,labels:z,onColumnFilterChange:Te},t.id)),Se.some(t=>Gn(t.value))?jsx(n,{type:"button",variant:"ghost",size:"sm",onClick:Ee,children:z.clearFilters}):null]}):null,oa?Ze("chips"):null,na&&Ke.length?jsxs("div",{"data-dtp-slot":"data-table-grouping-bar","aria-label":z.grouping,className:"flex flex-wrap items-center gap-2",children:[jsxs("span",{className:"text-sm opacity-70",children:[z.grouping,":"]}),Ke.map((t,w)=>{let j=typeof t.columnDef.header=="string"?t.columnDef.header:t.id,ue=ae=>{let N=[...ye.getState().grouping],[ea]=N.splice(w,1);ea!==void 0&&(N.splice(ae,0,ea),ye.setGrouping(N));};return jsxs("div",{className:"inline-flex items-center rounded-md border",children:[jsx(n,{type:"button",variant:"ghost",size:"sm",disabled:w===0,onClick:()=>ue(w-1),"aria-label":z.moveGroupingEarlier(j),children:jsx("span",{"aria-hidden":"true",children:"\u2190"})}),jsxs(n,{type:"button",variant:"secondary",size:"sm",onClick:()=>t.toggleGrouping(),"aria-label":z.removeGrouping(j),children:[j," ",jsx("span",{"aria-hidden":"true",children:"\xD7"})]}),jsx(n,{type:"button",variant:"ghost",size:"sm",disabled:w===Ke.length-1,onClick:()=>ue(w+1),"aria-label":z.moveGroupingLater(j),children:jsx("span",{"aria-hidden":"true",children:"\u2192"})})]},`grouping-bar-${t.id}`)})]}):null]}),Ue&&_?jsx("div",{"data-dtp-slot":"data-table-toolbar-desktop-custom",className:"hidden flex-row items-center gap-3 @min-[1024px]/data-table:flex",children:_}):null]})};function f({filter:s,labels:D,onColumnFilterChange:m}){let[v,L]=T.useState("");if(s.type==="text")return jsxs(I,{className:"min-w-48 max-w-64",children:[jsx(G,{value:typeof s.value=="string"?s.value:"",onChange:k=>{m(s.id,k.target.value);},placeholder:s.placeholder??s.label,"aria-label":`${D.filters}: ${s.label}`}),jsx(A,{align:"inline-start","aria-hidden":"true",children:jsx(s$1,{})})]});if(s.type==="numberRange"||s.type==="dateRange"){let k=Hs(s.value),F=s.type==="numberRange"?"number":"date",Q=D.filterFrom??oe.filterFrom,P=D.filterTo??oe.filterTo;return jsxs("div",{role:"group","aria-label":`${D.filters}: ${s.label}`,className:"flex min-w-0 items-center gap-1.5",children:[jsxs(I,{className:"min-w-32 max-w-44",children:[jsx(G,{type:F,inputMode:F==="number"?"decimal":void 0,value:k.from??"",min:s.min,max:s.max,step:F==="number"?s.step:void 0,onChange:q=>{m(s.id,{...k,from:Qi(q.target.value,F)});},"aria-label":`${s.label}: ${Q}`}),jsx(A,{align:"inline-start",children:Q})]}),jsxs(I,{className:"min-w-32 max-w-44",children:[jsx(G,{type:F,inputMode:F==="number"?"decimal":void 0,value:k.to??"",min:s.min,max:s.max,step:F==="number"?s.step:void 0,onChange:q=>{m(s.id,{...k,to:Qi(q.target.value,F)});},"aria-label":`${s.label}: ${P}`}),jsx(A,{align:"inline-start",children:P})]})]})}let C=s.type==="boolean",$=s.type==="faceted",K=[{label:s.trueLabel??D.filterTrue??oe.filterTrue,value:"true"},{label:s.falseLabel??D.filterFalse??oe.filterFalse,value:"false"}],_=C?K:s.options,U=$&&v?_.filter(k=>k.label.toLocaleLowerCase().includes(v.toLocaleLowerCase())):_,R=typeof s.value=="string"||typeof s.value=="boolean"?String(s.value):"",b=Array.isArray(s.value)?s.value.map(String):R?[R]:[],x=b.length===0?s.label:`${s.label}: ${b.length===1?_.find(k=>k.value===String(b[0]))?.label??b[0]:b.length}`;return jsxs(r,{children:[jsx(S,{asChild:true,children:jsx(n,{type:"button",variant:"outline",size:"sm",children:x})}),jsxs(d,{align:"start",className:"w-56",children:[jsx(h,{children:s.label}),$&&s.searchable!==false?jsx("div",{className:"px-2 pb-2",children:jsxs(I,{children:[jsx(G,{value:v,onChange:k=>{L(k.target.value);},placeholder:s.searchPlaceholder??D.facetSearch(s.label),"aria-label":D.facetSearch(s.label)}),jsx(A,{align:"inline-start","aria-hidden":"true",children:jsx(s$1,{})})]})}):null,jsxs(p,{children:[s.type==="select"||C||$?jsx(u$1,{onClick:()=>{m(s.id,"");},children:D.allFilterOptions??oe.allFilterOptions}):null,U.map(k=>jsxs(l,{checked:b.includes(k.value),disabled:k.disabled,onCheckedChange:F=>{if(s.type==="select"||C){m(s.id,F===true?k.value:"");return}let Q=new Set(b);F===true?Q.add(k.value):Q.delete(k.value),m(s.id,Array.from(Q));},children:[jsx("span",{className:"min-w-0 flex-1 truncate",children:k.label}),k.count!==void 0?jsx("span",{className:"ml-3 tabular-nums opacity-70",children:k.count}):null]},k.value))]})]})]})}}function Gn(e){return Array.isArray(e)?e.length>0:e&&typeof e=="object"?"from"in e||"to"in e?Object.values(e).some(Gn):true:e!=null&&e!==""}function Hs(e){if(!e||typeof e!="object"||Array.isArray(e))return {};let a=e;return {...typeof a.from=="number"||typeof a.from=="string"?{from:a.from}:{},...typeof a.to=="number"||typeof a.to=="string"?{to:a.to}:{}}}function Qi(e,a){if(e)return a==="number"?Number(e):e}var Bs=T.lazy(async()=>({default:(await import('./data-table-virtual-table-panel-ZOYCXFM5.js')).DataTableVirtualTablePanel}));function Yi(e){let a=typeof e.virtualization=="object"?e.virtualization:void 0;return e.virtualization===true||a?.enabled===true?jsx(T.Suspense,{fallback:jsx(e$1,{...e,rowsToRender:e.rowsToRender.slice(0,Math.max(1,Math.floor(a?.fallbackRowCount??20)))}),children:jsx(Bs,{...e})}):jsx(e$1,{...e})}var Gs="data-table-pro:saved-views:";var Xi=["sorting","columnVisibility","columnFilters","grouping","columnOrder","columnPinning","rowPinning","columnSizing","density","viewMode","showHiddenRows","globalFilter"],Ji=0;function Ua(e){let a=Kn(e);if(!e||!a)return [];let n;try{n=a.getItem(Wn(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=>Us(d,e.slices)).filter(d=>!!d):[]}function Zi(e,a,n){let i=a.trim();if(!e||!i)return;let r=new Date().toISOString(),l={id:Xs(),name:i,createdAt:r,updatedAt:r,state:$s(n,e.slices)},d=[...Ua(e),l];return Un(e,d,"create")?jn(l):void 0}function er(e,a,n){let i=n.trim();if(!e||!i)return;let r,l=Ua(e).map(d=>d.id!==a?d:(r={...d,name:i,updatedAt:new Date().toISOString()},r));if(r)return Un(e,l,"rename")?jn(r):void 0}function ar(e,a){if(!e)return false;let n=Ua(e),i=n.filter(r=>r.id!==a);return i.length!==n.length&&Un(e,i,"delete")}function tr(e){let a=Kn(e);if(!e||!a)return false;try{a.removeItem(Wn(e.key));}catch(n){return e.onError?.({error:n,operation:"remove"}),false}return e.onChange?.([],"clear"),true}function Un(e,a,n){let i=Kn(e);if(!i)return false;let r;try{let d={version:e.version??1,views:a};r=(e.serialize??JSON.stringify)(d);}catch(d){return e.onError?.({error:d,operation:"serialize"}),false}try{i.setItem(Wn(e.key),r);}catch(d){return e.onError?.({error:d,operation:"write"}),false}let l=a.map(jn);return e.onChange?.(l,n),true}function $s(e,a){let n=new Set(a??Xi),i={};for(let r of Object.keys(e))n.has(r)&&Object.assign(i,{[r]:js(r,e[r])});return i}function Us(e,a){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:nr(e.state,a)}}function nr(e,a){if(!Qe(e))return {};let n=new Set(a??Xi),i={},r=Ks(e.sorting);n.has("sorting")&&r&&(i.sorting=r);let l=Ws(e.pagination);n.has("pagination")&&l&&(i.pagination=l);let d=$n(e.rowSelection);n.has("rowSelection")&&d&&(i.rowSelection=d);let p=$n(e.columnVisibility);n.has("columnVisibility")&&p&&(i.columnVisibility=p);let u=Qs(e.columnFilters);n.has("columnFilters")&&u&&(i.columnFilters=u);let h=it(e.grouping);n.has("grouping")&&h&&(i.grouping=h);let E=e.expanded===true?true:$n(e.expanded);n.has("expanded")&&E!==void 0&&(i.expanded=E);let S=it(e.columnOrder);n.has("columnOrder")&&S&&(i.columnOrder=S);let I=qs(e.columnPinning);n.has("columnPinning")&&I&&(i.columnPinning=I);let A=Ys(e.rowPinning);n.has("rowPinning")&&A&&(i.rowPinning=A);let G=Js(e.columnSizing);return n.has("columnSizing")&&G&&(i.columnSizing=G),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 jn(e){return {...e,state:nr(e.state,Object.keys(e.state))}}function js(e,a){return Array.isArray(a)?a.map(n=>Qe(n)?{...n}:n):Qe(a)?e==="columnPinning"||e==="rowPinning"?{...e==="columnPinning"?{left:Array.isArray(a.left)?[...a.left]:void 0,right:Array.isArray(a.right)?[...a.right]:void 0}:{top:Array.isArray(a.top)?[...a.top]:void 0,bottom:Array.isArray(a.bottom)?[...a.bottom]:void 0}}:{...a}:a}function Ks(e){if(Array.isArray(e))return e.filter(a=>Qe(a)&&typeof a.id=="string").map(a=>({id:a.id,desc:!!a.desc}))}function Ws(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 Qs(e){if(Array.isArray(e))return e.filter(a=>Qe(a)&&typeof a.id=="string"&&Object.prototype.hasOwnProperty.call(a,"value")).map(a=>({id:a.id,value:a.value}))}function qs(e){if(Qe(e))return {left:it(e.left)??[],right:it(e.right)??[]}}function Ys(e){if(Qe(e))return {top:it(e.top)??[],bottom:it(e.bottom)??[]}}function $n(e){if(Qe(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="boolean"))}function Js(e){if(Qe(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="number"&&Number.isFinite(a[1])&&a[1]>=0))}function it(e){if(Array.isArray(e))return e.filter(a=>typeof a=="string")}function Kn(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 Xs(){return typeof globalThis.crypto?.randomUUID=="function"?globalThis.crypto.randomUUID():(Ji+=1,`view-${Date.now().toString(36)}-${Ji.toString(36)}`)}function Wn(e){return `${Gs}${e}`}function Qe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function or({columns:e,currentColumnFilters:a,currentColumnPinning:n$1,effectiveColumnVisibility:i,enableColumnFilters:r,handleColumnFiltersChange:l$2,handleColumnPinningChange:d,labels:p$1,table:u,toolbarActions:h,visibleData:E,csvExport:S}){let I=T.useMemo(()=>k(e).map(({column:s$1,index:D})=>{let m=s(s$1,D),v=s$1.header,L=u$1(s$1),C$1=typeof v=="string"?v:L?C(L):C(m),$=n$1.left?.includes(m)===true?"left":n$1.right?.includes(m)===true?"right":false;return {id:m,label:C$1,visible:i[m]!==false,canHide:s$1.enableHiding!==false,pinned:$}}),[e,n$1,i]),A=T.useMemo(()=>r===false?[]:k(e).flatMap(({column:s$1,index:D})=>{let m=s$1.meta?.filter;if(!m)return [];let v=s(s$1,D),L=s$1.header,C$1=u$1(s$1),$=m.label??(typeof L=="string"?L:C$1?C(C$1):C(v)),K=a.find(b=>b.id===v),_=m.faceting?.options,U=m.type==="numberRange"?u.getColumn(v)?.getFacetedMinMaxValues():void 0,R=m.type==="faceted"&&_?typeof _=="function"?_({rows:E}):_:m.type==="faceted"?Array.from(u.getColumn(v)?.getFacetedUniqueValues()??[]).map(([b,x])=>({label:m.faceting?.getOptionLabel?.(b)??String(b),value:String(b),count:x})):typeof m.options=="function"?m.options({rows:E}):m.options??[];return [{id:v,label:$,type:m.type,value:K?.value,placeholder:m.placeholder,options:l(R),searchable:m.faceting?.searchable,searchPlaceholder:m.faceting?.searchPlaceholder,trueLabel:m.trueLabel,falseLabel:m.falseLabel,min:m.min??U?.[0],max:m.max??U?.[1],step:m.step}]}),[e,a,r,u,E]),G=T.useCallback((s,D)=>{l$2(m=>{let v=m.filter(L=>L.id!==s);return n(D)&&v.push({id:s,value:D}),v});},[l$2]),J=T.useCallback(()=>{l$2([]);},[l$2]),V=T.useCallback((s,D)=>{d(m=>{let v=(m.left??[]).filter(C=>C!==s),L=(m.right??[]).filter(C=>C!==s);return D==="left"&&v.push(s),D==="right"&&L.push(s),{left:v,right:L}});},[d]),g=T.useCallback(()=>{if(S)return p({csvExport:S,table:u,labels:p$1})},[S,p$1,u]),f=T.useMemo(()=>S?[...h??[],{key:"__csv_export__",label:p$1.exportCsv,icon:l$1,placement:"trailing",onClick:g}]:h??[],[S,g,p$1.exportCsv,h]);return {columnVisibilityOptions:I,effectiveToolbarActions:f,handleClearColumnFilters:J,handleToolbarColumnFilterChange:G,handleToolbarColumnPinningChange:V,toolbarColumnFilters:A}}function rr({columns:e,data:a,getRowId:n}){let i=T.useRef({columns:e,data:a,getRowId:n}),r=T.useRef(new Set);T.useEffect(()=>{if(!Zs())return;let l=i.current;l.data!==a&&ir(l.data,a)&&!r.current.has("data")&&qt(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&&ir(l.columns,e)&&!r.current.has("columns")&&qt(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")&&qt(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 p=0;pObject.is(n,a[i]))}function qt(e,a,n){e.add(a),console.warn(`[data-table-pro] ${n}`);}function Zs(){return globalThis.process?.env?.NODE_ENV!=="production"}var ad=T.lazy(()=>import('./data-table-auto-page-size-EICVZJQ5.js'));function qc(e){return td(e)}function td(e,a={}){let n=a.CardPanel??Ci,i=a.TablePanel??Yi,r$1=e.classNames??{},{rootClassName:l,Button:d,Checkbox:p$1,Input:u,ScrollArea:h,ScrollBar:E,Skeleton:S,Table:I,TableBody:A,TableCell:G,TableFooter:J="tfoot",TableHead:V,TableHeader:g$1,TableRow:f,Tooltip:s$1,TooltipContent:D,TooltipProvider:m=T.Fragment,TooltipTrigger:v}=e,L=Ui(e),C=Wi(e),{DataTableFooter:$}=ji(e),K=qi(e),_=Gi(e,C),U=T.lazy(async()=>{let{createDataTableStateOverlay:b}=await import('./data-table-state-overlay-AQ7VU6EM.js');return {default:b(e)}}),R={minSize:80,size:180,maxSize:720};return function({columns:x,data:k$1,getRowId:F,children:Q,title:P,description:q,toolbarQueryValue:B,onToolbarQueryValueChange:M,toolbarQueryPlaceholder:W,toolbarQueryDebounceMs:ne,manualFiltering:be=false,enableToolbarQueryFiltering:fe=true,globalFilterFn:De,columnFilters:Se,onColumnFiltersChange:Te,enableColumnFilters:Ee,customToolbar:Oe,compactToolbar:X,rowsPerPageOptions:he=[10,20,50,100],totalRowCount:z,hasNextPage:we,sorting:$e,onSortingChange:na,manualSorting:Ye=false,grouping:oa,onGroupingChange:de,manualGrouping:ia=false,enableGrouping:Ae=false,groupedColumnMode:pa="reorder",aggregationFns:_e,pageIndex:Ra,pageSize:ga,autoPageSize:Je=false,onPageIndexChange:ma,onPageSizeChange:ye,pageCount:ra,manualPagination:He=false,rowSelection:la,onRowSelectionChange:ve,enableRowSelection:Be=false,enableMultiRowSelection:Sa=true,enableSubRowSelection:Xe=true,getRowCanSelect:ce,rowSelectionSelectAllScope:va="page",expanded:ba,onExpandedChange:fa,getSubRows:Fe,manualExpanding:Ue=false,paginateExpandedRows:Ta,filterFromLeafRows:Ge,maxLeafRowFilterDepth:La,detailPanel:Pa,getRowCanExpand:ke,renderExpandedRow:je,columnOrder:sa,onColumnOrderChange:da,enableColumnReordering:Ze=false,columnGroupHeaderHeight:xa,columnPinning:Ke,onColumnPinningChange:wa,enableColumnPinning:Na=false,rowPinning:We,onRowPinningChange:Ea,enableRowPinning:ka=false,keepPinnedRows:t$1=true,toolbarActions:w=[],selectionActions:j=[],rowActions:ue=[],csvExport:ae,clipboard:N,enableCellSelection:ea=false,cellSelection:Oa,defaultCellSelection:_a,onCellSelectionChange:Yt,gridCommands:Ma,density:rt,onDensityChange:Jt,enableDensityToggle:Xt=false,columnPrefsKey:H,persistence:Pe,savedViews:re,toolbarDataOperations:ca,initialState:te,state:pe,onStateChange:Ce,apiRef:dr,labels:qn,summaryRows:cr=[],cardRenderer:Zt,cardSizing:ur,cardGridClassName:pr,cardClassName:gr,viewMode:Yn,onViewModeChange:mr,enableViewToggle:br=false,enablePrint:Jn=false,enableFullscreen:Ct=false,emptyState:fr,stateOverlay:ja,isLoading:Xn=false,loadingRowCount:Tr,getRowLoadingState:wr,hiddenRows:Zn,showHiddenRows:eo,onShowHiddenRowsChange:Cr,infiniteScroll:Dt,editableRows:Va,columnVisibility:ao,onColumnVisibilityChange:Dr,columnSizing:to,onColumnSizingChange:hr,enableColumnResizing:no=false,columnResizeMode:yr="onEnd",layoutMode:ht="fill",stickyHeader:Rr=true,scrollbarVisibility:oo,showFooter:Sr=true,showToolbar:io=true,dir:en="ltr",flexGrow:Ka=true,toolbarVisibility:ro,className:vr,tableClassName:Pr,tableContainerClassName:lo,stripedRows:so=false,getRowClassName:co,onRowClick:an,onActionError:lt,dragAndDrop:Wa,fileUpload:Ca,virtualization:tn,accessibility:uo,interactiveGrid:yt}){let Ha=T.useRef(null),po=T.useRef(null),go=T.useRef(null),xr=T.useRef(null),nn=T.useRef(null),Er=T.useRef(null),[mo,on]=T.useState(0),kr=T.useId(),Mr=T.useId();rr({columns:x,data:k$1,getRowId:F}),T.useMemo(()=>t(x),[x]);let xe=T.useMemo(()=>Ri(qn),[qn]),rn=ca===true?{columnChooser:true,savedViews:true,resetLayout:true}:ca===false?{}:ca??{},ln=uo?.mode==="grid"||yt===true||typeof yt=="object",[Aa,Rt]=Re({defaultValue:_a??null,onChange:Yt,value:Oa}),Vr=B??pe?.globalFilter,Ar=$e??pe?.sorting,Fr=oa??pe?.grouping,St=Ra??pe?.pagination?.pageIndex,Qa=ga??pe?.pagination?.pageSize,Ir=la??pe?.rowSelection,zr=ao??pe?.columnVisibility,Lr=Se??pe?.columnFilters,Nr=ba??pe?.expanded,Or=sa??pe?.columnOrder,_r=Ke??pe?.columnPinning,Hr=We??pe?.rowPinning,Br=to??pe?.columnSizing,Gr=rt??pe?.density,$r=Yn??pe?.viewMode,Ur=eo??pe?.showHiddenRows,bo=io&&(ro?.title??true),fo=bo&&P?kr:void 0,To=bo&&q?Mr:void 0;od(pe,{columnFilters:Se!==void 0,columnOrder:sa!==void 0,columnPinning:Ke!==void 0,rowPinning:We!==void 0,columnSizing:to!==void 0,columnVisibility:ao!==void 0,density:rt!==void 0,expanded:ba!==void 0,grouping:oa!==void 0,globalFilter:B!==void 0,pagination:Ra!==void 0||ga!==void 0,rowSelection:la!==void 0,showHiddenRows:eo!==void 0,sorting:$e!==void 0,viewMode:Yn!==void 0});let jr=Ne("globalFilter",M,Ce),Kr=Ne("sorting",na,Ce),Wr=Ne("grouping",de,Ce),Qr=Ne("rowSelection",ve,Ce),qr=Ne("columnVisibility",Dr,Ce),Yr=Ne("columnFilters",Te,Ce),Jr=Ne("expanded",fa,Ce),Xr=Ne("columnOrder",da,Ce),Zr=Ne("columnPinning",wa,Ce),el=Ne("rowPinning",Ea,Ce),al=Ne("columnSizing",hr,Ce),tl=Ne("density",Jt,Ce),nl=Ne("viewMode",mr,Ce),ol=Ne("showHiddenRows",Cr,Ce),vt=T.useCallback(o=>{ma?.(o),Ce?.(y=>({...y,pagination:{pageIndex:o,pageSize:Qa??y.pagination.pageSize}}));},[ma,Ce,Qa]),sn=T.useCallback(o=>{ye?.(o),Ce?.(y=>({...y,pagination:{pageIndex:St??y.pagination.pageIndex,pageSize:o}}));},[ye,Ce,St]),Me=T.useCallback((o,y)=>{nd(y,o,lt);},[lt]),wo=T.useMemo(()=>ue.map(o=>({...o,onClick:y=>{Me({actionKey:o.key,row:y,source:"rowAction"},()=>o.onClick(y));}})),[ue,Me]),Co=T.useMemo(()=>an?o=>{Me({row:o.row,source:"rowClick"},()=>an(o));}:void 0,[an,Me]),il=T.useCallback((o,y)=>{lt?.({error:o,row:y,source:"edit"});},[lt]),{containerWidth:rl,currentColumnFilters:Pt,currentColumnOrder:dn,currentColumnPinning:xt,currentRowPinning:cn,currentColumnSizing:qa,currentColumnVisibility:Do,currentDensity:st,currentExpanded:Et,currentGrouping:un,currentPagination:aa,currentRowSelection:kt,currentShowHiddenRows:pn,currentSorting:Mt,currentViewMode:Ya,effectiveColumnVisibility:Vt,globalFilterValue:ll,handleDensityChange:gn,handleShowHiddenRowsChange:mn,handleViewModeChange:bn,localSearchValue:Ba,resolvedLoadingRowCount:sl,resolvedToolbarQueryPlaceholder:dl,selectedRowIds:cl,selectedRows:ul,setCurrentColumnFilters:ho,setCurrentColumnOrder:pl,setCurrentColumnPinning:yo,setCurrentRowPinning:gl,setCurrentColumnVisibility:ml,setCurrentExpanded:Ro,setCurrentGrouping:bl,setCurrentRowSelection:So,setCurrentSorting:fl,setLocalColumnSizing:Tl,setLocalPagination:fn,setLocalSearchValue:Tn,shouldRenderInitialLoading:wn,tableData:wl,tableGetRowId:Cl,visibleData:Dl}=Oi({columnFilters:Lr,columnOrder:Or,columnPinning:_r,rowPinning:Hr,columnSizing:Br,columnPrefsKey:H,persistence:Pe,columnVisibility:zr,columns:x,containerRef:Ha,data:k$1,density:Gr,enableRowSelection:Be,enableToolbarQueryFiltering:fe,expanded:Nr,grouping:Fr,getSubRows:Fe,getRowId:F,hiddenRows:Zn,isLoading:Xn,loadingRowCount:Tr,manualFiltering:be,initialState:te,onColumnFiltersChange:Yr,onColumnOrderChange:Xr,onColumnPinningChange:Zr,onRowPinningChange:el,onColumnSizingChange:al,onColumnVisibilityChange:qr,onDensityChange:tl,onExpandedChange:Jr,onGroupingChange:Wr,onPageIndexChange:vt,onRowSelectionChange:Qr,onShowHiddenRowsChange:ol,onSortingChange:Kr,onToolbarQueryValueChange:jr,onViewModeChange:nl,pageIndex:St,pageSize:Qa,resolvedLabels:xe,rowSelection:Ir,rowsPerPageOptions:he,selectionActions:j,showHiddenRows:Ur,sorting:Ar,toolbarQueryDebounceMs:ne,toolbarQueryPlaceholder:W,toolbarQueryValue:Vr,viewMode:$r}),Cn=!!(je&&!Pa&&!Fe),Ja=Pa??(je?{getRowCanExpand:Fe?void 0:ke,render:je}:void 0),[Dn,vo]=Re({defaultValue:()=>Cn?te?.expanded??{}:{},onChange:Cn?Ro:Ja?.onExpandedChange,value:Cn?Et:Ja?.expanded}),{cancelEditing:hn,clearEditError:Po,draftValues:hl,editErrors:yn,editingRowId:Rn,isEditDirty:Sn,isSavingEdit:vn,saveEdit:Pn,setDraftValues:yl,setEditingRowId:Rl,startEditingRow:Sl}=a$3({columns:x,editableRows:Va,onError:il}),vl=T.useMemo(()=>({cancel:hn,cancelOnEscape:Va?.cancelOnEscape!==false,clearError:Po,commit:o=>{Pn(o);},commitOnEnter:Va?.commitOnEnter!==false,errors:yn,isDirty:Sn,isPending:vn}),[hn,Po,Va?.cancelOnEscape,Va?.commitOnEnter,yn,Sn,vn,Pn]),{viewportElement:xn,viewportHeight:En}=a$4(go,Ya),xo=typeof Je=="object"?Je:void 0,Pl=T.useCallback(o=>{o!==aa.pageSize&&(aa.pageIndex!==0&&vt(0),sn(o),Qa===void 0&&fn({pageIndex:0,pageSize:o}));},[aa.pageIndex,aa.pageSize,vt,sn,Qa,fn]),xl=Je===true||xo!==void 0,At=T.useCallback(()=>typeof window>"u"||typeof window.print!="function"?false:(window.print(),true),[]),Ft=T.useCallback(async()=>{let o=Ha.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)},[]),[Eo,El]=T.useState(false);T.useEffect(()=>{if(!Ct||typeof document>"u")return;let o=()=>{El(document.fullscreenElement===Ha.current);};return o(),document.addEventListener("fullscreenchange",o),()=>document.removeEventListener("fullscreenchange",o)},[Ct]);let kl=T.useCallback(()=>{Ca?.disabled||po.current?.click();},[Ca?.disabled]),Ml=T.useCallback(o=>{Me({source:"fileUpload"},()=>Ca?.onFilesSelected(o));},[Ca,Me]),Vl=T.useMemo(()=>{if(ht!=="fill")return false;let o=k(x).filter(({column:y,index:ie})=>Vt[s(y,ie)]!==false);return o.length>0&&o.every(({column:y,index:ie})=>{let ct=s(y,ie);return g(y)||Object.prototype.hasOwnProperty.call(qa,ct)})},[x,qa,Vt,ht]),Al=Si({Button:d,Checkbox:p$1,DataTableRowActions:C,Tooltip:s$1,TooltipContent:D,TooltipTrigger:v,cancelEditing:hn,columns:x,editableRows:Va,editErrors:yn,editingRowId:Rn,enableRowSelection:Be,enableRowPinning:ka,hasTreeExpansion:!!Fe,isSavingEdit:vn,isEditDirty:Sn,includeFillSpacer:Vl,labels:xe,lastSelectedRowIdRef:Er,detailPanel:Ja,detailExpanded:Dn,onDetailExpandedChange:vo,rowSelectionSelectAllScope:va,rowActions:wo,saveEdit:Pn,startEditingRow:Sl,tableRef:nn}),Fl=T.useMemo(()=>i$1(x),[x]),{effectivePageCount:Il,footerTotalRowCount:zl,handleFooterPageIndexChange:Ll,handleFooterPageSizeChange:Nl,isPageCountKnown:Ol,renderedRows:ko,topPinnedRows:_l,bottomPinnedRows:Hl,reorderColumn:Mo,rowsToRender:Bl,sentinelRef:Vo,table:Z,virtualPaddingBottom:Gl,virtualPaddingTop:$l,visibleLeafColumns:kn}=Mi({autoResetPageIndex:false,columnGroupPaths:Fl,columnResizeMode:yr,dir:en,currentColumnFilters:Pt,currentColumnOrder:dn,currentColumnPinning:xt,currentRowPinning:cn,currentColumnSizing:qa,currentExpanded:Et,currentGrouping:un,currentPagination:aa,currentRowSelection:kt,currentSorting:Mt,currentViewMode:Ya,defaultColumn:R,effectiveColumnVisibility:Vt,enableColumnResizing:no,enableRowPinning:ka,enableRowSelection:Be,enableMultiRowSelection:Sa,enableSubRowSelection:Xe,getRowCanSelect:ce,getRowCanExpand:ke,getSubRows:Fe,aggregationFns:_e,groupedColumnMode:pa,globalFilterFn:De,globalFilterValue:ll,hasNextPage:we,handleColumnFiltersChange:ho,handleColumnOrderChange:pl,handleColumnPinningChange:yo,handleRowPinningChange:gl,handleColumnVisibilityChange:ml,handleExpandedChange:Ro,handleGroupingChange:bl,infiniteScroll:Dt,keepPinnedRows:t$1,manualFiltering:be,manualGrouping:ia,manualExpanding:Ue,manualPagination:He,manualSorting:Ye,onActionError:lt,onPageIndexChange:vt,onPageSizeChange:sn,pageCount:ra,pageIndex:St,pageSize:Qa,paginateExpandedRows:Ta,filterFromLeafRows:Ge,maxLeafRowFilterDepth:La,setCurrentRowSelection:So,setCurrentSorting:fl,setLocalColumnSizing:Tl,setLocalPagination:fn,shouldRenderInitialLoading:wn,tableColumns:Al,tableData:wl,tableGetRowId:Cl,tableRef:nn,totalRowCount:z,virtualization:tn}),Ao=Hi({columns:x,columnSizing:qa,editableRows:!!Va,enableRowSelection:Be,hasRowActions:ue.length>0,hasRowExpansion:!!(Fe||Ja),layoutMode:ht,uiClassNames:r$1,visibleLeafColumns:kn}),{explicitlySizedColumnIds:It,fillMinWidth:Ul,getColumnLayout:jl}=Ao,Kl=T.useMemo(()=>new Set(k(x).flatMap(({column:o,index:y})=>Object.prototype.hasOwnProperty.call(o,"cell")&&typeof o.cell=="function"?[s(o,y)]:[])),[x]),Wl=kn.length,Ql=T.useMemo(()=>({Checkbox:p$1,Input:u,Skeleton:S,TableCell:G,TableRow:f}),[]),ql=T.useMemo(()=>k(x).some(({column:o})=>o.meta?.cardTitle),[x]),Yl=T.useCallback((o,y)=>{It.has(o)||Object.prototype.hasOwnProperty.call(Z.getState().columnSizing,o)||flushSync(()=>{Z.setColumnSizing(ie=>({...ie,[o]:y}));});},[It,Z]),Jl=T.useCallback(o=>{if(It.has(o)){Z.getColumn(o)?.resetSize();return}Z.setColumnSizing(y=>{if(!Object.prototype.hasOwnProperty.call(y,o))return y;let ie={...y};return delete ie[o],ie});},[It,Z]),Mn=Z.getFilteredRowModel().rows.map(o=>o.original),Vn=ja?.empty??fr,Fo=typeof Vn=="function"?Vn({rows:Mn,toolbarQueryValue:Ba}):Vn,Io=T.useMemo(()=>ja?{...ja,onRetry:ja.onRetry?()=>Me({source:"retry"},ja.onRetry):void 0}:void 0,[Me,ja]),zo=Io?.error!=null?jsx(T.Suspense,{fallback:null,children:jsx(U,{labels:xe,overlay:Io,rows:Mn,toolbarQueryValue:Ba})}):void 0,{columnVisibilityOptions:Xl,effectiveToolbarActions:Lo,handleClearColumnFilters:Zl,handleToolbarColumnFilterChange:es,handleToolbarColumnPinningChange:as,toolbarColumnFilters:ts}=or({columns:x,currentColumnFilters:Pt,currentColumnPinning:xt,csvExport:ae,effectiveColumnVisibility:Vt,enableColumnFilters:Ee,handleColumnFiltersChange:ho,handleColumnPinningChange:yo,labels:xe,table:Z,toolbarActions:w,visibleData:Dl}),ns=T.useMemo(()=>[...Lo,...Jn?[{key:"__print__",label:xe.print,placement:"trailing",onClick:()=>{At();}}]:[],...Ct?[{key:"__fullscreen__",label:Eo?xe.exitFullscreen:xe.enterFullscreen,placement:"trailing",onClick:()=>Ft()}]:[]].map(o=>({...o,onClick:y=>{Me({actionKey:o.key,source:"toolbarAction"},()=>o.onClick(y));}})),[Lo,Ct,Jn,Eo,At,xe.enterFullscreen,xe.exitFullscreen,xe.print,Me,Ft]),os=T.useMemo(()=>j.map(o=>({...o,onClick:y=>{Me({actionKey:o.key,source:"selectionAction"},()=>o.onClick(y));}})),[Me,j]),No=T.useMemo(()=>({sorting:Mt,pagination:aa,rowSelection:kt,columnVisibility:Do,columnFilters:Pt,expanded:Et,grouping:un,columnOrder:dn,columnPinning:xt,rowPinning:cn,columnSizing:qa,density:st,viewMode:Ya,showHiddenRows:pn,globalFilter:Ba}),[Pt,dn,xt,cn,qa,Do,st,Et,un,aa,kt,pn,Mt,Ya,Ba]),dt=T.useCallback(()=>rd(No),[No]),Fa=T.useCallback(o=>{o.sorting!==void 0&&Z.setSorting(o.sorting),o.pagination!==void 0&&Z.setPagination(o.pagination),o.rowSelection!==void 0&&Z.setRowSelection(o.rowSelection),o.columnVisibility!==void 0&&Z.setColumnVisibility(o.columnVisibility),o.columnFilters!==void 0&&Z.setColumnFilters(o.columnFilters),o.expanded!==void 0&&Z.setExpanded(o.expanded),o.grouping!==void 0&&Z.setGrouping(o.grouping),o.columnOrder!==void 0&&Z.setColumnOrder(o.columnOrder),o.columnPinning!==void 0&&Z.setColumnPinning(o.columnPinning),o.rowPinning!==void 0&&Z.setRowPinning(o.rowPinning),o.columnSizing!==void 0&&Z.setColumnSizing(o.columnSizing),o.density!==void 0&&gn(o.density),o.viewMode!==void 0&&bn(o.viewMode),o.showHiddenRows!==void 0&&mn(o.showHiddenRows),o.globalFilter!==void 0&&Tn(o.globalFilter);},[gn,mn,bn,Tn,Z]),Xa=T.useCallback(()=>Ii(Pe??H),[H,Pe]),An=T.useCallback(o=>{o?.clearPersistence&&Xa(),Fa({columnVisibility:te?.columnVisibility??{},columnOrder:te?.columnOrder??[],columnPinning:te?.columnPinning??r(x),rowPinning:te?.rowPinning??{top:[],bottom:[]},columnSizing:te?.columnSizing??{}});},[Xa,x,te,Fa]),Oo=T.useCallback(o=>{o?.clearPersistence&&Xa(),Fa({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??r(x),rowPinning:te?.rowPinning??{top:[],bottom:[]},columnSizing:te?.columnSizing??{},density:te?.density??"comfortable",viewMode:te?.viewMode??"table",showHiddenRows:te?.showHiddenRows??false,globalFilter:te?.globalFilter??""});},[Xa,x,te,Fa,he]),_o=T.useCallback(()=>Ua(re),[re]),zt=T.useCallback(o=>Zi(re,o,dt()),[dt,re]),Fn=T.useCallback(o=>{let y=Ua(re).find(ie=>ie.id===o);return y?(Fa(y.state),re?.onApply?.(y),true):false},[Fa,re]),Lt=T.useCallback((o,y)=>er(re,o,y),[re]),Nt=T.useCallback(o=>ar(re,o),[re]),Ho=T.useCallback(()=>tr(re),[re]),is=T.useMemo(()=>Ua(re),[re,mo]),rs=T.useCallback(o=>{let y=zt(o);return y&&on(ie=>ie+1),y},[zt]),ls=T.useCallback((o,y)=>{let ie=Lt(o,y);return ie&&on(ct=>ct+1),ie},[Lt]),ss=T.useCallback(o=>{let y=Nt(o);return y&&on(ie=>ie+1),y},[Nt]),Bo=T.useCallback(o=>p({csvExport:o??(ae||true),labels:xe,table:Z}),[ae,xe,Z]),In=T.useCallback(async o=>{let{copyDataTableToClipboard:y}=await import('./data-table-clipboard-7IVWTPU3.js');return y({clipboard:o??(N?.copy===false?false:Aa?{...N?.copy===true?{}:N?.copy,scope:"cellSelection"}:N?.copy??true),cellSelection:Aa,table:Z})},[N?.copy,Aa,Z]),Go=T.useCallback((o,y="top")=>{try{let ie=Z.getRow(o,!0);return ie.getCanPin()?(ie.pin(y),!0):!1}catch{return false}},[Z]),$o=T.useCallback(o=>{try{let y=Z.getRow(o,!0);return y.getCanPin()?(y.pin(!1),!0):!1}catch{return false}},[Z]);return T.useImperativeHandle(dr,()=>({getTable:()=>nn.current,getState:dt,snapshot:dt,restore:Fa,resetColumnLayout:An,resetState:Oo,clearPersistedState:Xa,getSavedViews:_o,createSavedView:zt,applySavedView:Fn,renameSavedView:Lt,deleteSavedView:Nt,clearSavedViews:Ho,pinRow:Go,unpinRow:$o,focus:()=>{Ha.current?.focus();},scrollToRow:o=>lr(Ha.current,"row",o),scrollToColumn:o=>lr(Ha.current,"column",o),exportCsv:Bo,copyToClipboard:In,getCellSelection:()=>Aa,setCellSelection:Rt,clearCellSelection:()=>Rt(null),print:At,toggleFullscreen:Ft}),[Fn,Xa,Ho,In,Aa,zt,Nt,Bo,_o,dt,Lt,An,Oo,Fa,Go,At,Rt,$o,Ft]),jsx(m,{children:jsxs("div",{ref:Ha,"data-dtp-slot":"data-table-root","data-density":st,"data-dtp-striped-rows":so||void 0,"aria-busy":Xn||void 0,dir:en,tabIndex:-1,className:a$2("@container/data-table data-table-container-query flex w-full min-w-0 flex-col",Ka?"h-full min-h-0 flex-1":"grow",l),onDragEnter:Wa?.onDragEnter,onDragOver:Wa?.onDragOver,onDragLeave:Wa?.onDragLeave,onDrop:Wa?.onDrop,onKeyDown:o=>{if(ln&&Ma&&(o.ctrlKey||o.metaKey)&&o.key.toLowerCase()==="z"&&!Qn(o.target)){let y=o.shiftKey?Ma.redo:Ma.undo;y&&(o.preventDefault(),Me({source:o.shiftKey?"redo":"undo"},()=>y({cellSelection:Aa,table:Z})));return}!N?.copy||!(o.ctrlKey||o.metaKey)||o.key.toLowerCase()!=="c"||Qn(o.target)||(o.preventDefault(),Me({source:"clipboardCopy"},async()=>{await In(N.copy===true?void 0:Aa&&typeof N.copy=="object"&&!N.copy.scope?{...N.copy,scope:"cellSelection"}:N.copy);}));},onPaste:o=>{let y=N?.paste;if(!y||y.enabled===false||Qn(o.target))return;let ie=o.clipboardData.getData("text/plain");ie&&((y.preventDefault??true)&&o.preventDefault(),Me({source:"clipboardPaste"},async()=>{let{parseDataTableClipboardText:ct}=await import('./data-table-clipboard-7IVWTPU3.js');return y.onPaste({table:Z,text:ie,values:ct(ie)})}));},children:[xl?jsx(T.Suspense,{fallback:null,children:jsx(ad,{config:xo,currentPageSize:aa.pageSize,enabled:true,onPageSizeChange:Pl,viewportElement:xn,viewportHeight:En})}):null,Ca?jsx("input",{ref:po,className:"hidden",type:"file",accept:Ca.accept,multiple:Ca.multiple??true,disabled:Ca.disabled,onChange:o=>{let y=o.currentTarget.files;y?.length&&Ml(y),o.currentTarget.value="";}}):null,jsx("div",{"data-dtp-slot":"data-table-layout",className:a$2("flex w-full flex-col",Ka?"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",Ka?"min-h-0 flex-1":"grow",vr),children:[io?jsx(yi,{allRows:Mn,columnFilters:ts,columnVisibilityOptions:Xl,compactToolbar:X,customToolbar:Oe,DataTableToolbar:K,density:st,description:q,descriptionId:To,effectiveToolbarActions:ns,enableColumnPinning:Na,enableGrouping:Ae,enableToolbarColumnChooser:rn.columnChooser===true,enableToolbarFilterChips:!!ca,enableToolbarResetLayout:rn.resetLayout===true,enableToolbarSavedViews:rn.savedViews===true&&!!re,enableDensityToggle:Xt,enableViewToggle:br&&!!Zt,hiddenRowsLabel:Zn?.label,labels:xe,onClearColumnFilters:Zl,onColumnFilterChange:es,onColumnPinningChange:as,onDensityChange:gn,onShowHiddenRowsChange:mn,onToolbarQueryValueChange:Tn,reorderColumn:Mo,onResetColumnLayout:An,onCreateSavedView:rs,onApplySavedView:Fn,onRenameSavedView:ls,onDeleteSavedView:ss,onViewModeChange:bn,openFileDialog:Ca?kl:void 0,selectedRowIds:cl,selectedRows:ul,selectionActions:os,savedViews:is,showHiddenRows:pn,table:Z,title:P,titleId:fo,toolbarQueryPlaceholder:dl,toolbarQueryValue:Ba,toolbarVisibility:ro,viewMode:Ya}):null,jsx("div",{"data-dtp-slot":"data-table-content",className:a$2(Ka?"flex min-h-0 flex-1 flex-col":""),children:Ya==="card"&&Zt?jsx(n,{cardClassName:gr,cardGridClassName:pr,cardSizing:ur,cardRenderer:Zt,containerWidth:rl,currentDetailExpanded:Dn,currentRowSelection:kt,DataTableCardView:_,DataTableEmptyState:L,dragAndDrop:Wa,editableRows:Va,editingRowId:Rn,emptyNode:Fo,stateOverlayNode:zo,enableRowSelection:Be,flexGrow:Ka,getRowClassName:co,hasCardTitle:ql,infiniteScroll:Dt,localSearchValue:Ba,onRowClick:Co,renderedRows:ko,detailPanel:Ja,resolvedLabels:xe,resolvedLoadingRowCount:sl,rowActions:wo,ScrollArea:h,scrollbarVisibility:oo,sentinelRef:Vo,setCurrentDetailExpanded:vo,setCurrentRowSelection:So,setEditingRowId:Rl,shouldRenderInitialLoading:wn,tableContainerClassName:lo,uiClassNames:r$1,virtualization:tn}):jsx(i,{ariaDescribedBy:To,ariaLabelledBy:fo,bodyRowComponents:Ql,columnLayouts:Ao.columnLayouts,currentDensity:st,columnGroupHeaderHeight:xa,currentDetailExpanded:Dn,currentSorting:Mt,dir:en,DataTableEmptyState:L,dragAndDrop:Wa,draggedColumnIdRef:xr,draftValues:hl,editingRowId:Rn,editingContext:vl,emptyNode:Fo,stateOverlayNode:zo,enableColumnReordering:Ze,enableColumnResizing:no,explicitCustomCellColumnIds:Kl,fillMinWidth:Ul,flexGrow:Ka,getColumnLayout:jl,getRowClassName:co,getRowLoadingState:wr,infiniteScroll:Dt,layoutMode:ht,localSearchValue:Ba,onRowClick:Co,primeColumnForResize:Yl,renderedRows:ko,detailPanel:Ja,topPinnedRows:_l,bottomPinnedRows:Hl,reorderColumn:Mo,resetColumnSize:Jl,resolvedLabels:xe,rowsToRender:Bl,ScrollArea:h,ScrollBar:E,scrollbarVisibility:oo,sentinelRef:Vo,setDraftValues:yl,shouldRenderInitialLoading:wn,stickyHeader:Rr,stripedRows:so,summaryRows:cr,table:Z,tableClassName:Pr,tableContainerClassName:lo,Table:I,TableBody:A,TableCell:G,TableFooter:J,TableHead:V,TableHeader:g$1,TableRow:f,tableScrollContainerRef:go,tableScrollElement:xn,uiClassNames:r$1,viewportHeight:En,virtualization:tn,gridMode:ln,gridPageSize:uo?.pageSize??(typeof yt=="object"?yt.pageSize:void 0),cellSelectionEnabled:ln&&(ea||Oa!==void 0||_a!==void 0),cellSelection:Aa,onCellSelectionChange:Rt,gridRowOffset:He?aa.pageIndex*aa.pageSize:0,totalRowCount:z,virtualPaddingBottom:Gl,virtualPaddingTop:$l,visibleLeafColumnCount:Wl,visibleLeafColumns:kn})}),jsx(Di,{currentPagination:aa,DataTableFooter:$,effectivePageCount:Il,footerTotalRowCount:zl,handleFooterPageIndexChange:Ll,handleFooterPageSizeChange:Nl,labels:xe,pageCountKnown:Ol,rowsPerPageOptions:he,showFooter:Sr&&!Dt?.enabled,children:Q})]})})]})})}}function nd(e,a,n){let i;try{i=e();}catch(r){n?.({...a,error:r});return}Promise.resolve(i).catch(r=>{n?.({...a,error:r});});}function Ne(e,a,n){let i=T.useCallback(r=>{a?.(r),n?.(l=>({...l,[e]:r}));},[e,a,n]);return a||n?i:void 0}function od(e,a){let n=T.useRef(new Set);T.useEffect(()=>{if(!(!e||!id()))for(let i of Object.keys(a))e[i]===void 0||!a[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.`));},[a,e]);}function id(){return globalThis.process?.env?.NODE_ENV!=="production"}function rd(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},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 lr(e,a,n){if(!e)return false;let i=a==="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 Qn(e){return e instanceof HTMLElement?e.isContentEditable||e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement:false}export{Ci as a,Di as b,yi as c,Si as d,Re as e,Mi as f,Oi as g,Hi as h,qc as i,td as j};//# sourceMappingURL=chunk-I3CW6DTA.js.map -//# sourceMappingURL=chunk-I3CW6DTA.js.map \ No newline at end of file diff --git a/dist/chunk-I3CW6DTA.js.map b/dist/chunk-I3CW6DTA.js.map deleted file mode 100644 index 7d70021..0000000 --- a/dist/chunk-I3CW6DTA.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-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","scrollbarVisibility","sentinelRef","setCurrentDetailExpanded","setCurrentRowSelection","setEditingRowId","shouldRenderInitialLoading","stateOverlayNode","tableContainerClassName","uiClassNames","shouldRenderCards","cardScrollContainerRef","wi","renderCardView","rows","options","jsx","jsxs","cn","LazyDataTableVirtualCardPanel","Ut","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","includeFillSpacer","lastSelectedRowIdRef","detailExpanded","onDetailExpandedChange","rowSelectionSelectAllScope","saveEdit","startEditingRow","tableRef","selectRowRange","Kt","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","Ia","currentValue","currentValueRef","setValue","updater","nextValue","useDataTableInfiniteScroll","enabled","hasMore","isLoadingMore","onLoadMore","onError","za","isRequestInFlightRef","onLoadMoreEvent","onErrorEvent","error","target","observer","entries","result","useDataTablePaginationClamp","maxPageIndex","onPageIndexChange","setLocalPageIndex","Pi","nextPageIndex","useDataTableSearchIndex","Ei","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","Le","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","$a","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","ot","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","Da","ids","hasExplicitDataTableColumnSize","minimumColumnWidths","widths","configuredMinWidth","getConfiguredColumnMinWidth","pinnedColumns","leftOffset","getFixedSide","getColumnLayoutSize","rightOffset","fixedWidthColumnIds","columnLayouts","layouts","isSelectionColumn","isExpansionColumn","isActionsColumn","isUtilityColumn","isSpacerColumn","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","Ki","IconX","allowEdit","canEditRow","canPin","IconDots","IconEdit","Fragment","Icon","resolveRowActionLabel","LazyToolbarDataOperations","ta","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","Qt","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","ya","header","accessorKey","getAccessorKey","startCase","pinned","toolbarColumnFilters","configuredFacetOptions","facetedMinMax","rawOptions","normalizeColumnFilterOptions","handleToolbarColumnFilterChange","hasFilterValue","handleClearColumnFilters","handleToolbarColumnPinningChange","side","handleCsvExport","exportDataTableCsv","IconDownload","useDataTablePerformanceDiagnostics","wt","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","visibleDataColumns","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-I3CW6DTA.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 scrollbarVisibility,\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 includeFillSpacer = false,\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 includeFillSpacer?: 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 (includeFillSpacer) {\n defs.push({\n id: \"__spacer__\",\n cell: () => null,\n header: () => null,\n enableColumnFilter: false,\n enableGlobalFilter: false,\n enableGrouping: false,\n enableHiding: false,\n enablePinning: false,\n enableResizing: false,\n enableSorting: false,\n minSize: 0,\n size: 0,\n });\n }\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 includeFillSpacer,\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(\n (columnId) =>\n !isUtilityColumnId(columnId) && columnId !== \"__spacer__\",\n );\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 hasExplicitDataTableColumnSize,\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 (hasExplicitDataTableColumnSize(column)) {\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 fixedWidthColumnIds = React.useMemo(() => {\n return new Set([\n ...explicitlySizedColumnIds,\n ...Object.keys(columnSizing),\n ]);\n }, [columnSizing, explicitlySizedColumnIds]);\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 columnMinWidth = configuredMinWidth;\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 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\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 ?? 0)\n );\n }, 0);\n }, [\n columnLayouts,\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 hasExplicitDataTableColumnSize,\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 scrollbarVisibility,\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 includeFillSpacer = React.useMemo(() => {\n if (layoutMode !== \"fill\") {\n return false;\n }\n\n const visibleDataColumns = getDataTableLeafColumns(columns).filter(\n ({ column, index }) =>\n effectiveColumnVisibility[getColumnId(column, index)] !== false,\n );\n\n return (\n visibleDataColumns.length > 0 &&\n visibleDataColumns.every(({ column, index }) => {\n const columnId = getColumnId(column, index);\n return (\n hasExplicitDataTableColumnSize(column) ||\n Object.prototype.hasOwnProperty.call(\n currentColumnSizing,\n columnId,\n )\n );\n })\n );\n }, [\n columns,\n currentColumnSizing,\n effectiveColumnVisibility,\n layoutMode,\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 includeFillSpacer,\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-W7VNQT7O.js b/dist/chunk-IZQDLLCH.js similarity index 86% rename from dist/chunk-W7VNQT7O.js rename to dist/chunk-IZQDLLCH.js index a9728aa..c3ac5cd 100644 --- a/dist/chunk-W7VNQT7O.js +++ b/dist/chunk-IZQDLLCH.js @@ -1,2 +1,2 @@ -import {b,e}from'./chunk-PRDXFLFB.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-W7VNQT7O.js.map -//# sourceMappingURL=chunk-W7VNQT7O.js.map \ No newline at end of file +import {b,e}from'./chunk-YKVWP3UJ.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-IZQDLLCH.js.map +//# sourceMappingURL=chunk-IZQDLLCH.js.map \ No newline at end of file diff --git a/dist/chunk-W7VNQT7O.js.map b/dist/chunk-IZQDLLCH.js.map similarity index 99% rename from dist/chunk-W7VNQT7O.js.map rename to dist/chunk-IZQDLLCH.js.map index 9483f4c..5897b40 100644 --- a/dist/chunk-W7VNQT7O.js.map +++ b/dist/chunk-IZQDLLCH.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":"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","file":"chunk-W7VNQT7O.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-IZQDLLCH.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-B6JTUAWE.js b/dist/chunk-LTEXTQ2M.js similarity index 63% rename from dist/chunk-B6JTUAWE.js rename to dist/chunk-LTEXTQ2M.js index 560a56c..324c1cd 100644 --- a/dist/chunk-B6JTUAWE.js +++ b/dist/chunk-LTEXTQ2M.js @@ -1,2 +1,2 @@ -import {a}from'./chunk-EJHT5JBZ.js';import {a as a$2}from'./chunk-O6MUTKGE.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 ct({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,scrollbarVisibility:F,sentinelRef:J,setCurrentDetailExpanded:Q,setCurrentRowSelection:X,setEditingRowId:Z,shouldRenderInitialLoading:m,stateOverlayNode:G,tableContainerClassName:L,uiClassNames:p,virtualization:R}){let v=m||e.length>0,x=f.useRef(null),{viewportElement:D,viewportHeight:W}=a(x,v),l=typeof R=="object"?R.card:void 0,T=!m&&e.length>0&&l?.enabled===true,i=nt(l?.lanes,V),tt=Math.ceil(e.length/i),b=T&&!!D&&W>0,at=f.useCallback(t=>e[t*i]?.id??t,[i,e]),w=useVirtualizer({count:T?tt:0,enabled:b,estimateSize:()=>l?.estimateCardHeight??280,getItemKey:at,getScrollElement:()=>D,overscan:l?.overscan??4}),et=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:Q,hasCardTitle:K,rowSelection:z,onRowSelectionChange:X,enableRowSelection:_,editingRowId:I,onEditingRowIdChange:Z,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,{type:F,className:a$1(g?"min-h-0 flex-1":"h-full",p.cardScrollArea,L),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:et.map(t=>{let s=t.index*i,ot=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(ot)},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:J,className:"h-4 w-full"})}):null]})}),G]})}function nt(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{ct as a};//# sourceMappingURL=chunk-B6JTUAWE.js.map -//# sourceMappingURL=chunk-B6JTUAWE.js.map \ No newline at end of file +import {a}from'./chunk-EJHT5JBZ.js';import {a as a$2}from'./chunk-7IWMFF7E.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 ct({cardClassName:n,cardGridClassName:o,cardSizing:E,cardRenderer:N,containerWidth:V,currentRowSelection:k,currentDetailExpanded:z,DataTableCardView:M,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:r,resolvedLoadingRowCount:Y,rowActions:$=[],ScrollArea:q,scrollbarVisibility:F,sentinelRef:J,setCurrentDetailExpanded:Q,setCurrentRowSelection:X,setEditingRowId:Z,shouldRenderInitialLoading:m,stateOverlayNode:G,tableContainerClassName:L,uiClassNames:p,virtualization:R}){let v=m||e.length>0,x=f.useRef(null),{viewportElement:T,viewportHeight:W}=a(x,v),l=typeof R=="object"?R.card:void 0,D=!m&&e.length>0&&l?.enabled===true,i=rt(l?.lanes,V),tt=Math.ceil(e.length/i),b=D&&!!T&&W>0,at=f.useCallback(t=>e[t*i]?.id??t,[i,e]),w=useVirtualizer({count:D?tt:0,enabled:b,estimateSize:()=>l?.estimateCardHeight??280,getItemKey:at,getScrollElement:()=>T,overscan:l?.overscan??4}),et=b?w.getVirtualItems():[],C=(t,s)=>jsx(M,{rows:t,cardRenderer:N,cardGridClassName:o,cardClassName:n,cardSizing:E,rowActions:$,editableRows:P,detailPanel:U,detailExpanded:z,onDetailExpandedChange:Q,hasCardTitle:K,rowSelection:k,onRowSelectionChange:X,enableRowSelection:_,editingRowId:I,onEditingRowIdChange:Z,getRowClassName:B,onRowClick:j,getRowDraggable:c?.getRowDraggable,onRowDragStart:c?.onRowDragStart,onRowDragEnd:c?.onRowDragEnd,isLoading:s?.isLoading,loadingRowCount:s?.loadingRowCount,labels:r});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,{type:F,className:a$1(g?"min-h-0 flex-1":"h-full",p.cardScrollArea,L),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:et.map(t=>{let s=t.index*i,ot=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(ot)},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?r.noMatchingRowsTitle:r.noRowsTitle,description:h?r.noMatchingRowsDescription:r.noRowsDescription})}),O?.enabled&&!m?jsx("div",{className:"shrink-0 px-4 pb-4",children:jsx("div",{ref:J,className:"h-4 w-full"})}):null]})}),G]})}function rt(n,o){return typeof n=="number"?Math.max(1,Math.floor(n)):n!=="auto"?1:o>=a$2["2xl"]?5:o>=a$2.xl?4:o>=a$2.lg?3:o>=a$2.sm?2:1}export{ct as a};//# sourceMappingURL=chunk-LTEXTQ2M.js.map +//# sourceMappingURL=chunk-LTEXTQ2M.js.map \ No newline at end of file diff --git a/dist/chunk-LTEXTQ2M.js.map b/dist/chunk-LTEXTQ2M.js.map new file mode 100644 index 0000000..60f721f --- /dev/null +++ b/dist/chunk-LTEXTQ2M.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","scrollbarVisibility","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-LTEXTQ2M.js","sourcesContent":["import * as React from \"react\";\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\";\nimport type { DataTableTanStackRow as Row } from \"./tanstack-v9\";\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 scrollbarVisibility,\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-O6MUTKGE.js b/dist/chunk-O6MUTKGE.js deleted file mode 100644 index bdbb31a..0000000 --- a/dist/chunk-O6MUTKGE.js +++ /dev/null @@ -1,2 +0,0 @@ -var r={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 o(e){switch(e){case "center":return "text-center";case "end":return "text-right";default:return "text-left"}}function n(e,a){return e||(a==="numeric"?"end":"start")}function g(e){let a=e.column.columnDef.meta;return o(n(a?.align,a?.type))}function p(e){let a=e.column.columnDef.meta;return o(n(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(i=>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 DataTableScrollbarVisibility =\n | \"auto\"\n | \"always\"\n | \"scroll\"\n | \"hover\";\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 /** Controls when scrollbars are visible. Defaults to `\"hover\"`. */\n scrollbarVisibility?: DataTableScrollbarVisibility;\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-PRDXFLFB.js b/dist/chunk-PRDXFLFB.js deleted file mode 100644 index aa8a820..0000000 --- a/dist/chunk-PRDXFLFB.js +++ /dev/null @@ -1,2 +0,0 @@ -import {d,A,y,x,z,k}from'./chunk-F2RBZWQV.js';import {c,t,i}from'./chunk-CVR2ZXHQ.js';import {h,g,f}from'./chunk-O6MUTKGE.js';import {a}from'./chunk-XTVBESM5.js';import*as E from'react';import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {flexRender}from'@tanstack/react-table';function mt({columns:e,editableRows:a,onError:s}){let[o,n]=E.useState(null),[u,D]=E.useState({}),C=E.useRef(u),[h,t]=E.useState({}),[I,c]=E.useState({}),[A,x]=E.useState(false),v=E.useMemo(()=>!Ka(u,h),[u,h]);E.useEffect(()=>{C.current=u;},[u]);let S=E.useCallback(()=>{n(null),D({}),c({}),t({});},[]),V=E.useCallback((H,b)=>{let k=a?.getInitialValues?.(H)??Aa(H,e);t({...k}),D(k),c({}),n(b);},[e,a]),_=E.useCallback(async H=>{if(!a)return false;x(true);let b={...C.current},k;try{let G=await a.validateRow?.(H,b),r=Ga(G);if(Object.keys(r).length>0)return c(r),!1;c({});let z=a.onOptimisticUpdate?.(H,b);return k=typeof z=="function"?z:void 0,await a.onSaveRow(H,b),a.onSaveSuccess?.(H,b),E.startTransition(S),!0}catch(G){try{k?.();}catch{}return a.onSaveError?.(G,H,b),s?.(G,H),false}finally{x(false);}},[S,a,s]),W=E.useCallback(H=>{c(b=>{if(!b[H]&&!b._row)return b;let k={...b};return delete k[H],delete k._row,k});},[]);return {cancelEditing:S,clearEditError:W,draftValues:u,editErrors:I,editingRowId:o,isEditDirty:v,isSavingEdit:A,saveEdit:_,setDraftValues:D,setEditingRowId:n,startEditingRow:V}}function Aa(e,a){return k(a).reduce((s,{column:o})=>("accessorKey"in o&&typeof o.accessorKey=="string"&&(s[o.accessorKey]=e[o.accessorKey]),s),{})}function pa(e,a,s,o,n){let{Checkbox:u,Input:D}=o,C=e.column.columnDef,h=C.meta,t="accessorKey"in C&&typeof C.accessorKey=="string"?C.accessorKey:e.column.id,I=a[t],c=n?.errors[t]??n?.errors[e.column.id]??n?.errors._row,A=S=>{n?.onValueChange(t),s(V=>({...V,[t]:S}));},x=S=>{S.key==="Escape"&&n?.cancelOnEscape?(S.preventDefault(),n.cancel()):S.key==="Enter"&&!S.shiftKey&&n?.commitOnEnter&&(S.preventDefault(),n.commit());};if(h?.renderEditCell)return h.renderEditCell({cell:e,row:e.row.original,value:e.getValue(),draftValue:I,error:c,isDirty:n?.isDirty??false,isPending:n?.isPending??false,setDraftValue:A});let v=za(h?.type,I);return typeof I=="boolean"?jsxs("div",{className:"min-w-0",children:[jsx(u,{"aria-invalid":!!c||void 0,checked:I,disabled:n?.isPending,onCheckedChange:S=>{A(S===true);},onKeyDown:x}),c?jsx("span",{className:"mt-1 block text-xs text-destructive",role:"alert",children:c}):null]}):jsxs("div",{className:"min-w-0",children:[jsx(D,{"aria-invalid":!!c||void 0,disabled:n?.isPending,type:v,value:h?.formatEditValue?h.formatEditValue(I,e):Ma(I,v),onChange:S=>{let V=S.target.value,_=h?.parseEditValue?h.parseEditValue(V,e):Va(V,v,I);A(_);},onKeyDown:x}),c?jsx("span",{className:"mt-1 block text-xs text-destructive",role:"alert",children:c}):null]})}function Ga(e){return e?typeof e=="string"?{_row:e}:e:{}}function Ka(e,a){let s=new Set([...Object.keys(e),...Object.keys(a)]);return Array.from(s).every(o=>Object.is(e[o],a[o]))}function za(e,a){return e==="numeric"||typeof a=="number"?"number":e==="date"||a instanceof Date?"datetime-local":"text"}function Ma(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 Va(e,a,s){return a==="number"?e===""?null:Number(e):a==="datetime-local"?e?s instanceof Date?new Date(e):e:null:e}var Ca=E.createContext(void 0);function gt({children:e,measureRow:a}){return jsx(Ca.Provider,{value:a,children:e})}function Ta(){return E.useContext(Ca)}function ze(e,a$1,s){let o=e.column.columnDef,n=o.meta,u=e.getValue(),D=s?.hasCustomCell??false,C=D&&o.cell?flexRender(o.cell,e):void 0,h=Ba(C),t=Ua({context:e,useCustomOverflowDefaults:s?.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(ya(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:va(u)})]});let I=C!=null&&C!==""?C:u==null||u===""?jsx("span",{className:a$1?.mutedText??"opacity-70",children:"-"}):Fa(u);return jsx("div",{"data-dtp-slot":"data-table-cell-content","data-dtp-overflow":t,className:a(ya(t),"w-full min-w-0 max-w-full",h&&"[&>*]:max-w-full [&>*]:min-w-0"),children:I})}function Ua({context:e,useCustomOverflowDefaults:a,value:s}){let o=e.column.columnDef,n=typeof o.meta?.overflow=="function"?o.meta.overflow({row:e.row.original,value:s}):o.meta?.overflow;return n||(a?"clip":"truncate")}function ya(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 Ba(e){return e==null?false:E.isValidElement(e)||Array.isArray(e)||typeof e=="object"}function va(e){return typeof e=="number"?new Date(e*1e3).toLocaleString():typeof e=="string"&&e?e:"-"}function Fa(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 qa({columnLayouts:e,components:a$1,currentDensity:s,draftValues:o,editingContext:n,dragAndDrop:u,explicitCustomCellColumnIds:D,getRowClassName:C,groupToggleLabel:h$1,gridMode:t,gridRowAriaIndex:I,gridRowIndex:c,activeGridCell:A$1,cellSelectionEnabled:x,isGridCellSelected:v,onGridCellFocus:S,onGridCellKeyDown:V,onGridCellPointerDown:_,onGridCellPointerEnter:W,isDraggable:H,isDetailExpanded:b,isEditing:k,isExpanded:G,isInitialLoadingRow:r,isSelected:z,loadingState:M,onRowClick:j,pinnedPosition:d$1,originalRow:g$1,detailPanel:$,row:T,rowIndex:O,setDraftValues:ye,stripedRows:ce,uiClassNames:K,visibleCells:me,visibleLeafColumnCount:ae}){let{Checkbox:Oe,Input:X,Skeleton:le,TableCell:we,TableRow:Re}=a$1,J=Ta(),he=d$1?void 0:J,Ue=me.find(m=>!e.get(m.column.id)?.isUtilityColumn)?.column.id,Se=me.findIndex(m=>m.column.id==="__spacer__");return jsxs(E.Fragment,{children:[jsx(Re,{ref:he,"data-row-id":T.id,"data-index":he?O:void 0,"data-tree-depth":!r&&T.depth>0?T.depth:void 0,"data-dtp-slot":d$1?"data-table-pinned-row":"data-table-row","data-row-pinned":d$1,"data-row-grouped":T.getIsGrouped()||void 0,draggable:r?false:H,"data-loading":M?.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:z?"selected":void 0,role:t?"row":void 0,"aria-rowindex":t?I:void 0,tabIndex:!t&&j&&!r?0:void 0,className:a(!r&&C?.(g$1,{row:g$1,rowId:T.id,rowIndex:O,isEditing:k,isExpanded:G,isLoading:!!M?.isLoading,isSelected:z,pinnedPosition:d$1??false}),K.row,d$1==="top"&&a("border-b-2",K.rowPinnedTop),d$1==="bottom"&&a("border-t-2",K.rowPinnedBottom),ce&&!r&&(O%2===0?K.rowOdd:K.rowEven),z&&!r&&K.rowSelected,j&&!r&&"cursor-pointer",r&&"pointer-events-none"),onClick:m=>{r||y(m.target,m.currentTarget)||t&&x||j?.({row:g$1,rowId:T.id});},onKeyDown:m=>{r||!j||m.key!=="Enter"&&m.key!==" "||y(m.target,m.currentTarget)||(m.preventDefault(),j({row:g$1,rowId:T.id}));},onDragStart:m=>{r||u?.onRowDragStart?.({row:g$1,rowId:T.id,event:m});},onDragEnd:m=>{r||u?.onRowDragEnd?.({row:g$1,rowId:T.id,event:m});},children:me.map((m,F)=>{let q=m.column.columnDef.meta,Q=m.getContext(),Be=m.getValue(),U=e.get(m.column.id),fe=U?.isSelectionColumn??false,Y=U?.isExpansionColumn??false,B=U?.isActionsColumn??false,P=U?.isSpacerColumn??false,ve=F+1-(Se>=0&&SeS({row:c,column:F}):void 0,onKeyDown:t&&!P?L=>{if(L.target!==L.currentTarget){L.key==="Escape"&&(L.preventDefault(),L.currentTarget.focus());return}V(L,c,F);}:void 0,onPointerDown:t&&x&&!U?.isUtilityColumn&&!P?L=>{y(L.target,L.currentTarget)||(L.currentTarget.focus(),_(L,c,F));}:void 0,onPointerEnter:t&&x&&!U?.isUtilityColumn&&!P?L=>{y(L.target,L.currentTarget)||W(L,c,F);}:void 0,className:a("border-b",A(s),K.cellBorder,te&&K.cellSelected,U?.utilityClassName,U?.isSpacerColumn&&"border-b-0 bg-transparent! p-0",U?.pinnedClassName,Fe,g(Q),q?.responsiveClassName,We),style:U?.cellStyle,children:jsx("div",{"data-row-click-ignore":fe||Y||B||P?"true":void 0,className:"min-w-0 max-w-full",style:T.depth>0&&m.column.id===Ue?{paddingInlineStart:`${T.depth}rem`}:void 0,children:P?null:M?.isLoading?q?.skeleton?.(Q)??M.skeleton??jsx(le,{className:a("h-4 rounded",q?.type==="numeric"?"ml-auto w-16":q?.type==="date"?"ml-auto w-28":"w-full")}):k&&m.column.id!=="__select__"&&m.column.id!=="__expand__"&&m.column.id!=="__actions__"?pa(Q,o,ye,{Checkbox:Oe,Input:X},n?{cancel:n.cancel,cancelOnEscape:n.cancelOnEscape,commit:()=>n.commit(g$1),commitOnEnter:n.commitOnEnter,errors:n.errors,isDirty:n.isDirty,isPending:n.isPending,onValueChange:n.clearError}:void 0):T.getIsGrouped()&&m.getIsPlaceholder()?null:T.getIsGrouped()&&m.getIsGrouped()?jsxs("button",{type:"button",className:"inline-flex min-w-0 items-center gap-1 text-left font-medium",onClick:()=>T.toggleExpanded(),"aria-expanded":T.getIsExpanded(),"aria-label":h$1,children:[jsx("span",{"aria-hidden":"true",children:ze(Q,K,{hasCustomCell:D.has(m.column.id),useCustomOverflowDefaults:D.has(m.column.id)})}),jsxs("span",{className:"shrink-0 opacity-70",children:["(",T.subRows.length,")"]})]}):T.getIsGrouped()&&m.getIsAggregated()?m.column.columnDef.aggregatedCell?flexRender(m.column.columnDef.aggregatedCell,Q):ze(Q,K,{hasCustomCell:false,useCustomOverflowDefaults:false}):ze(Q,K,{hasCustomCell:D.has(m.column.id)||fe||Y||B||P,useCustomOverflowDefaults:D.has(m.column.id)||fe||Y||B||P})})},m.id)})}),!r&&$&&b?jsx(Re,{"data-dtp-slot":"data-table-detail-panel-row","data-row-pinned":d$1,children:jsx(we,{colSpan:Math.max(1,ae),className:a("border-b",A(s),K.cellBorder),children:$.render({row:g$1,rowId:T.id,tableRow:T})})}):null]})}function $a(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&&Xa(e.loadingState,a.loadingState)&&Ja(e.visibleCells,a.visibleCells)&&e.components===a.components&&Qa(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 Xa(e,a){return e?.isLoading===a?.isLoading&&e?.skeleton===a?.skeleton}function Ja(e,a){return e.length===a.length&&e.every((s,o)=>{let n=a[o];return n?.id===s.id&&n.column.id===s.column.id})}function Qa(e,a,s){return s.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&&Ya(n?.cellStyle,u?.cellStyle)})}function Ya(e,a){return e?.width===a?.width&&e?.minWidth===a?.minWidth&&e?.maxWidth===a?.maxWidth&&e?.left===a?.left&&e?.right===a?.right}var Ra=E.memo(qa,$a);function Za({columnGroupHeaderHeight:e,currentDensity:a$1,currentSorting:s,dir:o,draggedColumnIdRef:n,enableColumnReordering:u,enableColumnResizing:D,gridColumnIndex:C,gridMode:h$1,header:t$1,headerGroupHeaders:I,layout:c$1,primeColumnForResize:A,reorderColumn:x$1,resizeColumnLabel:v,resetColumnSize:S,TableHead:V,uiClassNames:_}){let W=t$1.column.columnDef.meta,H=E.useId(),b=!t$1.isPlaceholder&&t$1.subHeaders.length>0,k=b?t$1.column.columnDef:void 0,G=t$1.column.getCanSort(),r=t$1.column.getIsSorted(),z$1=s.findIndex(d=>d.id===t$1.column.id),M=u&&!t$1.isPlaceholder&&!b&&!c$1.isUtilityColumn&&!c$1.isSpacerColumn,j=h(W?.hideOn);return jsxs(V,{colSpan:t$1.colSpan,scope:t$1.isPlaceholder||c$1.isSpacerColumn?void 0:b?"colgroup":"col",role:h$1?c$1.isSpacerColumn?"presentation":"columnheader":void 0,"aria-colindex":h$1&&!c$1.isSpacerColumn?C:void 0,"aria-hidden":t$1.isPlaceholder||c$1.isSpacerColumn||void 0,"aria-description":b?k?.description:void 0,"aria-labelledby":!t$1.isPlaceholder&&!c$1.isUtilityColumn&&!c$1.isSpacerColumn?H:void 0,"data-column-id":t$1.column.id,"data-column-group-id":b?k?.id:void 0,"data-header-depth":t$1.depth,"data-dtp-slot":b?"data-table-column-group-header":"data-table-column-header",className:a("relative border-b",z(a$1),b&&_.columnGroupHeader,c$1.utilityClassName,c$1.isSpacerColumn&&"border-b-0 bg-transparent! p-0",c$1.pinnedClassName,j,f(t$1.getContext()),W?.headerClassName,b&&k?.headerClassName,W?.responsiveClassName),style:{...W?.headerStyle,...b?k?.headerStyle:void 0,...b&&(k?.headerHeight??e)!==void 0?{height:k?.headerHeight??e}:void 0,...c$1.headerStyle},title:b?k?.description:void 0,"aria-sort":r==="asc"?"ascending":r==="desc"?"descending":G?"none":void 0,draggable:M,tabIndex:M&&!G&&!(D&&t$1.column.getCanResize())?0:void 0,onDragStart:M?d=>{n.current=t$1.column.id,d.dataTransfer.effectAllowed="move";}:void 0,onDragOver:M?d=>{d.preventDefault(),d.dataTransfer.dropEffect="move";}:void 0,onDrop:M?d=>{d.preventDefault();let g=n.current;n.current=null,g&&x$1(g,t$1.column.id);}:void 0,onKeyDown:M?d=>{if(!d.altKey||d.key!=="ArrowLeft"&&d.key!=="ArrowRight")return;d.preventDefault();let g=I.filter(O=>!x(O.column.id)&&O.column.id!=="__spacer__"),$=g.findIndex(O=>O.column.id===t$1.column.id),T=g[d.key==="ArrowLeft"!=(o==="rtl")?$-1:$+1];T&&x$1(t$1.column.id,T.column.id);}:void 0,children:[t$1.isPlaceholder?null:G?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:H,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")}),s.length>1&&z$1>=0?jsx("span",{className:"inline-flex size-4 shrink-0 items-center justify-center rounded-full text-[10px] leading-none",children:z$1+1}):null]}):jsx(t,{className:a("size-4 shrink-0",_.headerSortIcon??"opacity-70")})]}):c$1.isUtilityColumn||c$1.isSpacerColumn?flexRender(t$1.column.columnDef.header,t$1.getContext()):jsx("span",{id:H,children:flexRender(t$1.column.columnDef.header,t$1.getContext())}),D&&!t$1.isPlaceholder&&t$1.column.getCanResize()?jsx("div",{"aria-label":v,"aria-orientation":"vertical","aria-valuemax":tt(t$1),"aria-valuemin":at(t$1),"aria-valuenow":Math.round(t$1.getSize()),role:"separator",tabIndex:0,onDoubleClick:()=>{for(let d of ie(t$1))S(d.column.id);},onMouseDown:d=>{for(let g of ie(t$1))A(g.column.id,g.getSize());t$1.getResizeHandler()(d);},onTouchStart:d=>{for(let g of ie(t$1))A(g.column.id,g.getSize());t$1.getResizeHandler()(d);},onKeyDown:d=>{if(d.altKey)return;if(d.key==="Home"){d.preventDefault();for(let $ of ie(t$1))S($.column.id);return}if(d.key!=="ArrowLeft"&&d.key!=="ArrowRight")return;d.preventDefault(),d.stopPropagation();let g=d.key==="ArrowRight"!=(o==="rtl");nt(t$1,(g?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",_.resizeHandle??"after:bg-current after:opacity-20 hover:after:opacity-70",t$1.column.getIsResizing()&&(_.resizeHandleActive??"after:opacity-100"))}):null]},t$1.id)}function et(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&<(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&&ot(e.currentSorting,a.currentSorting)&&rt(e.headerGroupHeaders,a.headerGroupHeaders)&&it(e.layout,a.layout)}function ie(e){return e.subHeaders.length?e.getLeafHeaders().filter(a=>!a.subHeaders.length):[e]}function at(e){return ie(e).reduce((a,s)=>a+(s.column.columnDef.minSize??20),0)}function tt(e){return ie(e).reduce((a,s)=>a+(s.column.columnDef.maxSize??Number.MAX_SAFE_INTEGER),0)}function nt(e,a){let s=ie(e),o=a/s.length;e.getContext().table.setColumnSizing(n=>{let u={...n};for(let D of s){let C=D.column,h=C.columnDef.minSize??20,t=C.columnDef.maxSize??Number.MAX_SAFE_INTEGER;u[C.id]=Math.min(t,Math.max(h,C.getSize()+o));}return u});}function lt(e,a){return e.subHeaders.length===a.subHeaders.length&&e.subHeaders.every((s,o)=>a.subHeaders[o]?.id===s.id)}function ot(e,a){return e.length===a.length&&e.every((s,o)=>{let n=a[o];return n?.id===s.id&&n.desc===s.desc})}function rt(e,a){return e.length===a.length&&e.every((s,o)=>a[o]?.id===s.id)}function it(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 ha=E.memo(Za,et);function vt({ariaDescribedBy:e,ariaLabelledBy:a$1,bodyRowComponents:s,cellSelection:o,cellSelectionEnabled:n,columnLayouts:u,columnGroupHeaderHeight:D,currentDensity:C,currentDetailExpanded:h,currentSorting:t=[],dir:I,DataTableEmptyState:c,dragAndDrop:A,draggedColumnIdRef:x$1,draftValues:v,editingRowId:S,editingContext:V,emptyNode:_,enableColumnReordering:W,enableColumnResizing:H,explicitCustomCellColumnIds:b,fillMinWidth:k,flexGrow:G,gridMode:r,gridPageSize:z,gridRowOffset:M,onGridActiveRowIndexChange:j,onCellSelectionChange:d$1,getColumnLayout:g,getRowClassName:$,getRowLoadingState:T,infiniteScroll:O,layoutMode:ye,localSearchValue:ce,onRowClick:K,primeColumnForResize:me,renderedRows:ae,detailPanel:Oe,topPinnedRows:X,bottomPinnedRows:le,reorderColumn:we,resetColumnSize:Re,resolvedLabels:J,rowsToRender:he,ScrollArea:Ue,ScrollBar:Se,scrollbarVisibility:m,sentinelRef:F,setDraftValues:q,shouldRenderInitialLoading:Q,stateOverlayNode:Be,stickyHeader:U,stripedRows:fe,summaryRows:Y,table:B,tableClassName:P,tableContainerClassName:ve,Table:Fe,TableBody:We,TableCell:te,TableFooter:L="tfoot",TableHead:Sa,TableHeader:ka,TableRow:be,tableScrollContainerRef:je,tableScrollElement:qe,totalRowCount:na,uiClassNames:oe,virtualPaddingBottom:la,virtualPaddingTop:oa,visibleLeafColumnCount:ke,visibleLeafColumns:ne}){let Ea=B.getIsAllPageRowsSelected()?true:B.getIsSomePageRowsSelected()?"indeterminate":false,ra=B.getFilteredRowModel().rows,Ha=E.useMemo(()=>Y.length?ra.map(l=>l.original):[],[ra,Y.length]),Ee=B.getHeaderGroups().length,He=X.length+ae.length+le.length,[ge,ia]=E.useState({row:0,column:0}),sa=E.useRef(false),$e=E.useRef(false),De=E.useMemo(()=>[...X,...ae,...le],[le,ae,X]),se=E.useMemo(()=>ne.flatMap((l,i)=>l.id==="__spacer__"?[]:[i]),[ne]),pe=E.useCallback((l,i)=>{let f=De[l],p=ne[i];return f&&p&&!x(p.id)&&p.id!=="__spacer__"?{rowId:f.id,columnId:p.id}:void 0},[De,ne]),de=E.useMemo(()=>{if(!o)return;let l=De.findIndex(y=>y.id===o.anchor.rowId),i=De.findIndex(y=>y.id===o.focus.rowId),f=ne.findIndex(y=>y.id===o.anchor.columnId),p=ne.findIndex(y=>y.id===o.focus.columnId);if(!(l<0||i<0||f<0||p<0))return {firstRow:Math.min(l,i),lastRow:Math.max(l,i),firstColumn:Math.min(f,p),lastColumn:Math.max(f,p)}},[o,De,ne]),Pa=E.useCallback((l,i)=>!!(de&&l>=de.firstRow&&l<=de.lastRow&&i>=de.firstColumn&&i<=de.lastColumn),[de]),Na=E.useCallback(l=>{sa.current=true,ia(l);},[]),Pe=E.useCallback((l,i,f)=>{if(!n)return;let p=pe(l,i);if(!p)return;let y=f&&o?.anchor?o.anchor:p;d$1({anchor:y,focus:p});},[o,n,pe,d$1]),Ia=E.useCallback((l,i,f)=>{!n||l.button!==0||(l.preventDefault(),$e.current=true,Pe(i,f,l.shiftKey));},[n,Pe]),La=E.useCallback((l,i,f)=>{!n||!$e.current||l.buttons!==1||Pe(i,f,true);},[n,Pe]);E.useEffect(()=>{let l=()=>{$e.current=false;};return window.addEventListener("pointerup",l),()=>window.removeEventListener("pointerup",l)},[]),E.useEffect(()=>{if(!r)return;j?.(ge.row);let l=requestAnimationFrame(()=>{let i=je.current?.querySelectorAll('[data-dtp-grid-cell="true"]'),f=Array.from(i??[]).find(p=>Number(p.dataset.gridRowIndex)===ge.row&&Number(p.dataset.gridColumnIndex)===ge.column);f&&sa.current&&f.focus();});return ()=>cancelAnimationFrame(l)},[ge,r,j,je]);let xa=E.useCallback((l,i,f)=>{if(l.defaultPrevented||l.target!==l.currentTarget)return;let p=Math.max(1,z??(Math.floor((qe?.clientHeight||0)/Math.max(1,qe?.querySelector("tr")?.offsetHeight||48))||10)),y=Math.max(0,He-1),Z=Math.max(0,se.indexOf(f)),Ne=Math.max(0,se.length-1),ee=i,Ce=Z;switch(l.key){case "ArrowUp":ee--;break;case "ArrowDown":ee++;break;case "ArrowLeft":Ce--;break;case "ArrowRight":Ce++;break;case "Home":(l.ctrlKey||l.metaKey)&&(ee=0),Ce=0;break;case "End":(l.ctrlKey||l.metaKey)&&(ee=y),Ce=Ne;break;case "PageUp":ee-=p;break;case "PageDown":ee+=p;break;default:return}l.preventDefault();let Je={row:Math.min(y,Math.max(0,ee)),column:se[Math.min(Ne,Math.max(0,Ce))]??0};if(ia(Je),l.shiftKey&&n){let Qe=pe(Je.row,Je.column),da=o?.anchor??pe(i,f)??Qe;da&&Qe&&d$1({anchor:da,focus:Qe});}},[o,n,He,pe,z,se,d$1,qe]),Xe=(l,i,f)=>{let p=l.original,y=d(p),Z=y?{isLoading:true}:T?.(p,i),Ne=typeof Z=="boolean"?{isLoading:Z}:Z,ee=y?false:A?.getRowDraggable?.(p)??false;return jsx(Ra,{columnLayouts:u,components:s,currentDensity:C,draftValues:v,editingContext:V,dragAndDrop:A,explicitCustomCellColumnIds:b,getRowClassName:$,groupToggleLabel:l.getIsExpanded()?J.collapseRow:J.expandRow,isDraggable:ee,isDetailExpanded:h===true||!!h[l.id],isEditing:S===l.id,isExpanded:l.getIsExpanded(),isInitialLoadingRow:y,isSelected:l.getIsSelected(),loadingState:Ne,onRowClick:K,originalRow:p,pinnedPosition:f,detailPanel:Oe,row:l,rowIndex:i,setDraftValues:q,stripedRows:fe,uiClassNames:oe,visibleCells:l.getVisibleCells(),visibleLeafColumnCount:ke,gridMode:r,gridRowIndex:i,gridRowAriaIndex:Ee+M+i+1,activeGridCell:ge,cellSelectionEnabled:n,isGridCellSelected:Pa,onGridCellFocus:Na,onGridCellKeyDown:xa,onGridCellPointerDown:Ia,onGridCellPointerEnter:La},`${f??"center"}-${l.id}`)};return jsxs("div",{"data-dtp-slot":"data-table-table-shell",className:a("relative box-border border-2 border-transparent transition-colors",G?"flex min-h-0 flex-1 flex-col":"h-full",A?.isDragging&&(oe.dragActive??"rounded-md border-dashed")),children:[jsx("div",{ref:je,className:a(G?"flex min-h-0 flex-1 flex-col":"h-full"),children:jsxs(Ue,{type:m,className:a("rounded-md border",G?"min-h-0 flex-1":"h-full",oe.tableContainer,oe.tableScrollArea,ve),children:[jsx("div",{className:"min-h-full",children:jsxs(Fe,{"aria-describedby":e,"aria-labelledby":a$1,role:r?"grid":void 0,"aria-colcount":r?se.length:void 0,"aria-rowcount":r?Ee+(na??He)+Y.length:void 0,className:a("w-full table-fixed border-separate border-spacing-0",P),style:{minWidth:ye==="fill"&&k||void 0,width:ye==="fit"?B.getTotalSize():"100%"},children:[jsx("colgroup",{children:B.getVisibleLeafColumns().map(l=>{let i=g(l.id);return jsx("col",{style:i.colStyle},l.id)})}),jsx(ka,{role:r?"rowgroup":void 0,className:a(U?oe.tableStickyHeader??"sticky top-0 z-30 backdrop-blur":void 0),children:B.getHeaderGroups().map(l=>jsx(be,{role:r?"row":void 0,"aria-rowindex":r?l.depth+1:void 0,children:l.headers.map(i=>jsx(ha,{columnGroupHeaderHeight:D,currentDensity:C,currentSorting:t,dir:I,draggedColumnIdRef:x$1,enableColumnReordering:W,enableColumnResizing:H,header:i,headerGroupHeaders:l.headers,layout:dt(i,g),primeColumnForResize:me,reorderColumn:we,resizeColumnLabel:J.resizeColumn(typeof i.column.columnDef.header=="string"?i.column.columnDef.header:i.column.id),resetColumnSize:Re,selectionState:i.column.id==="__select__"?Ea:void 0,TableHead:Sa,uiClassNames:oe,gridMode:r,gridColumnIndex:i.isPlaceholder||i.subHeaders.length||i.column.id==="__spacer__"?void 0:B.getVisibleLeafColumns().filter(f=>f.id!=="__spacer__").findIndex(f=>f.id===i.column.id)+1},i.id))},l.id))}),jsx(We,{role:r?"rowgroup":void 0,children:X.length||ae.length||le.length?jsxs(Fragment,{children:[X.map((l,i)=>Xe(l,i,"top")),oa>0?jsx(be,{"aria-hidden":"true",role:r?"presentation":void 0,children:jsx(te,{colSpan:Math.max(1,ke),className:"border-b-0 p-0",style:{height:oa}})}):null,he.map(({row:l,rowIndex:i})=>Xe(l,i+X.length)),la>0?jsx(be,{"aria-hidden":"true",role:r?"presentation":void 0,children:jsx(te,{colSpan:Math.max(1,ke),className:"border-b-0 p-0",style:{height:la}})}):null,le.map((l,i)=>Xe(l,X.length+ae.length+i,"bottom"))]}):jsx(be,{role:r?"row":void 0,"aria-rowindex":r?Ee+1:void 0,children:jsx(te,{role:r?"gridcell":void 0,"aria-colindex":r?1:void 0,colSpan:Math.max(1,ke),className:"h-full grow",children:jsx("div",{className:"flex h-full min-h-full w-full grow items-center justify-center",children:_??jsx(c,{title:ce?J.noMatchingRowsTitle:J.noRowsTitle,description:ce?J.noMatchingRowsDescription:J.noRowsDescription})})})})}),Y.length?jsx(L,{role:r?"rowgroup":void 0,children:Y.map((l,i)=>jsx(be,{role:r?"row":void 0,"aria-rowindex":r?Ee+(na??He)+i+1:void 0,children:ne.map((f,p)=>{let y=g(f.id),Z=y.isSpacerColumn?null:l.cells[f.id]??(p===0?l.label:null);return jsx(te,{"data-column-id":f.id,role:r?y.isSpacerColumn?"presentation":"gridcell":void 0,"aria-colindex":r&&!y.isSpacerColumn?se.indexOf(p)+1:void 0,"aria-hidden":y.isSpacerColumn||void 0,className:a(y.isSpacerColumn?"border-b-0 bg-transparent! p-0":"border-b font-medium",!y.isSpacerColumn&&oe.cellBorder),style:y.cellStyle,children:typeof Z=="function"?Z({rows:Ha,columnId:f.id}):Z},`${l.key}-${f.id}`)})},l.key))}):null]})}),O?.enabled&&ae.length&&!Q?jsx("div",{className:"px-4 pb-4",children:jsx("div",{ref:F,className:"h-4 w-full"})}):null,jsx(Se,{orientation:"horizontal"})]})}),Be]})}function dt(e,a){let s=a(e.column.id);if(e.isPlaceholder||!e.subHeaders.length)return s;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 s;let u=n==="left"?o[0]:o.at(-1);return {...s,fixedSide:n,headerStyle:u?.headerStyle?{left:u.headerStyle.left,right:u.headerStyle.right}:void 0,pinnedClassName:u?.pinnedClassName}}export{mt as a,gt as b,Ra as c,ha as d,vt as e};//# sourceMappingURL=chunk-PRDXFLFB.js.map -//# sourceMappingURL=chunk-PRDXFLFB.js.map \ No newline at end of file diff --git a/dist/chunk-PRDXFLFB.js.map b/dist/chunk-PRDXFLFB.js.map deleted file mode 100644 index 9748373..0000000 --- a/dist/chunk-PRDXFLFB.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","N","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","Ge","DataTableVirtualRowMeasurementProvider","children","measureRow","useDataTableVirtualRowMeasurement","renderDataTableCellContent","classNames","options","hasCustomCell","renderedCellContent","flexRender","hasComplexRenderedContent","isComplexRenderedCellContent","resolvedOverflow","resolveDataTableCellOverflow","cn","getCellOverflowClassName","IconClock","formatDateValue","content","formatCellValue","useCustomOverflowDefaults","overflow","wa","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","spacerColumnIndex","Me","isDataTableInteractiveTarget","columnIndex","cellContext","layout","isSelectionColumn","isExpansionColumn","isActionsColumn","isSpacerColumn","gridColumnAriaIndex","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","Ve","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","scrollbarVisibility","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","navigableGridColumnIndices","getGridCoordinate","selectedBounds","anchorRow","focusRow","anchorColumn","focusColumn","handleGridCellFocus","selectGridCell","extend","focus","anchor","handleGridCellPointerDown","handleGridCellPointerEnter","stopSelecting","frame","moveGridFocus","pageRows","lastRow","currentColumnPosition","lastColumnPosition","nextRow","nextColumnPosition","renderBodyRow","resolvedLoadingState","headerGroup","getHeaderLayout","summaryRow","summaryIndex","columnLayout","leafLayouts","fixedSide","edgeLayout"],"mappings":"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","file":"chunk-PRDXFLFB.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 const spacerColumnIndex = visibleCells.findIndex(\n (cell) => cell.column.id === \"__spacer__\",\n );\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 gridColumnAriaIndex =\n columnIndex +\n 1 -\n (spacerColumnIndex >= 0 && spacerColumnIndex < columnIndex ? 1 : 0);\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 !isSpacerColumn &&\n isGridCellSelected(gridRowIndex, columnIndex);\n\n return (\n onGridCellFocus({ row: gridRowIndex, column: columnIndex })\n : undefined\n }\n onKeyDown={\n gridMode && !isSpacerColumn\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 {isSpacerColumn ? null : 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 scrollbarVisibility: DataTableProps[\"scrollbarVisibility\"];\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 scrollbarVisibility,\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 navigableGridColumnIndices = React.useMemo(\n () =>\n visibleLeafColumns.flatMap((column, index) =>\n column.id === \"__spacer__\" ? [] : [index],\n ),\n [visibleLeafColumns],\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 currentColumnPosition = Math.max(\n 0,\n navigableGridColumnIndices.indexOf(column),\n );\n const lastColumnPosition = Math.max(\n 0,\n navigableGridColumnIndices.length - 1,\n );\n let nextRow = row;\n let nextColumnPosition = currentColumnPosition;\n switch (event.key) {\n case \"ArrowUp\": nextRow--; break;\n case \"ArrowDown\": nextRow++; break;\n case \"ArrowLeft\": nextColumnPosition--; break;\n case \"ArrowRight\": nextColumnPosition++; break;\n case \"Home\":\n if (event.ctrlKey || event.metaKey) nextRow = 0;\n nextColumnPosition = 0;\n break;\n case \"End\":\n if (event.ctrlKey || event.metaKey) nextRow = lastRow;\n nextColumnPosition = lastColumnPosition;\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:\n navigableGridColumnIndices[\n Math.min(\n lastColumnPosition,\n Math.max(0, nextColumnPosition),\n )\n ] ?? 0,\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 navigableGridColumnIndices,\n onCellSelectionChange,\n tableScrollElement,\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 !== \"__spacer__\",\n )\n .findIndex(\n (column) =>\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 layout = getColumnLayout(column.id);\n const content = layout.isSpacerColumn\n ? null\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-UMW6DOXG.js b/dist/chunk-UMW6DOXG.js new file mode 100644 index 0000000..632716a --- /dev/null +++ b/dist/chunk-UMW6DOXG.js @@ -0,0 +1,2 @@ +import {a as a$1}from'./chunk-LTEXTQ2M.js';import {a}from'./chunk-IZQDLLCH.js';import {j}from'./chunk-XZTPNWJD.js';function b(r){return j(r,{CardPanel:a$1,TablePanel:a})}export{b as a};//# sourceMappingURL=chunk-UMW6DOXG.js.map +//# sourceMappingURL=chunk-UMW6DOXG.js.map \ No newline at end of file diff --git a/dist/chunk-VGMTY7KM.js.map b/dist/chunk-UMW6DOXG.js.map similarity index 92% rename from dist/chunk-VGMTY7KM.js.map rename to dist/chunk-UMW6DOXG.js.map index e35b609..97cfe4b 100644 --- a/dist/chunk-VGMTY7KM.js.map +++ b/dist/chunk-UMW6DOXG.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-VGMTY7KM.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-UMW6DOXG.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-VGMTY7KM.js b/dist/chunk-VGMTY7KM.js deleted file mode 100644 index 2d5ae46..0000000 --- a/dist/chunk-VGMTY7KM.js +++ /dev/null @@ -1,2 +0,0 @@ -import {a as a$1}from'./chunk-B6JTUAWE.js';import {a}from'./chunk-W7VNQT7O.js';import {j}from'./chunk-I3CW6DTA.js';function b(r){return j(r,{CardPanel:a$1,TablePanel:a})}export{b as a};//# sourceMappingURL=chunk-VGMTY7KM.js.map -//# sourceMappingURL=chunk-VGMTY7KM.js.map \ No newline at end of file diff --git a/dist/chunk-XZTPNWJD.js b/dist/chunk-XZTPNWJD.js new file mode 100644 index 0000000..2d37443 --- /dev/null +++ b/dist/chunk-XZTPNWJD.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-YKVWP3UJ.js';import {d,a as a$1,b,h,k,s,x,j,B,r,c as c$1,e,g,f,v,w,t,i as i$1,p,o,y,u as u$1,C,l,n}from'./chunk-YWMYYP3I.js';import {c,p as p$1,u,k as k$1,m,s as s$1,a as a$5,r as r$1,q,l as l$1,j as j$1}from'./chunk-CVR2ZXHQ.js';import {a,i,b as b$1,d as d$1,e as e$2,c as c$2}from'./chunk-7IWMFF7E.js';import {a as a$2}from'./chunk-XTVBESM5.js';import*as D from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {tableFeatures,sortFns,filterFns,aggregationFns,rowSortingFeature,rowSelectionFeature,rowPinningFeature,rowPaginationFeature,rowExpandingFeature,columnVisibilityFeature,columnResizingFeature,columnSizingFeature,columnPinningFeature,columnOrderingFeature,columnGroupingFeature,rowAggregationFeature,globalFilteringFeature,columnFilteringFeature,columnFacetingFeature,createSortedRowModel,createPaginatedRowModel,createGroupedRowModel,createFilteredRowModel,createFacetedUniqueValues,createFacetedRowModel,createFacetedMinMaxValues,createExpandedRowModel,useTable}from'@tanstack/react-table';import {flushSync}from'react-dom';function Hn({cardClassName:e,cardGridClassName:a,cardSizing:t,cardRenderer:o,currentRowSelection:r,currentDetailExpanded:l,DataTableCardView:d,DataTableEmptyState:p,dragAndDrop:u,editableRows:y,editingRowId:V,emptyNode:S,enableRowSelection:z,flexGrow:M,getRowClassName:$,hasCardTitle:J,infiniteScroll:F,localSearchValue:g,onRowClick:T,renderedRows:s,detailPanel:C,resolvedLabels:m,resolvedLoadingRowCount:v,rowActions:N=[],ScrollArea:w,scrollbarVisibility:G,sentinelRef:W,setCurrentDetailExpanded:_,setCurrentRowSelection:U,setEditingRowId:R,shouldRenderInitialLoading:f,stateOverlayNode:x,tableContainerClassName:k,uiClassNames:A}){let Q=f||s.length>0,P=D.useRef(null),q=(j,E)=>jsx(d,{rows:j,cardRenderer:o,cardGridClassName:a,cardClassName:e,cardSizing:t,rowActions:N,editableRows:y,detailPanel:C,detailExpanded:l,onDetailExpandedChange:_,hasCardTitle:J,rowSelection:r,onRowSelectionChange:U,enableRowSelection:z,editingRowId:V,onEditingRowIdChange:R,getRowClassName:$,onRowClick:T,getRowDraggable:u?.getRowDraggable,onRowDragStart:u?.onRowDragStart,onRowDragEnd:u?.onRowDragEnd,isLoading:E?.isLoading,loadingRowCount:E?.loadingRowCount,labels:m});return jsxs("div",{ref:P,"data-dtp-slot":"data-table-card-shell",className:a$2("relative box-border border-2 border-transparent transition-colors",M?"flex min-h-0 flex-1 flex-col":"h-full",u?.isDragging&&(A.dragActive??"rounded-md border-dashed")),children:[jsx(w,{type:G,className:a$2(M?"min-h-0 flex-1":"h-full",A.cardScrollArea,k),children:jsxs("div",{"data-dtp-slot":"data-table-card-viewport",className:a$2("flex min-h-full min-w-0 flex-col",M&&"min-h-0 flex-1",A.cardViewport),children:[Q?f?q([],{isLoading:true,loadingRowCount:v}):q(s):jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center p-4",children:S??jsx(p,{title:g?m.noMatchingRowsTitle:m.noRowsTitle,description:g?m.noMatchingRowsDescription:m.noRowsDescription})}),F?.enabled&&!f?jsx("div",{className:"shrink-0 px-4 pb-4",children:jsx("div",{ref:W,className:"h-4 w-full"})}):null]})}),x]})}var cs=D.lazy(async()=>({default:(await import('./data-table-virtual-card-panel-Z3BPBPG4.js')).DataTableVirtualCardPanel}));function Ci(e){let a=typeof e.virtualization=="object"?e.virtualization.card:void 0;return a?.enabled!==true?jsx(Hn,{...e}):jsx(D.Suspense,{fallback:jsx(Hn,{...e,renderedRows:e.renderedRows.slice(0,Math.max(1,Math.floor(a.fallbackCardCount??12)))}),children:jsx(cs,{...e})})}function yi({children:e,currentPagination:a,DataTableFooter:t,effectivePageCount:o,footerTotalRowCount:r,handleFooterPageIndexChange:l,handleFooterPageSizeChange:d,labels:p,pageCountKnown:u=true,rowsPerPageOptions:y,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:o,pageCountKnown:u,pageSize:a.pageSize,totalRowCount:r,rowsPerPageOptions:y,onPageIndexChange:l,onPageSizeChange:d,labels:p}):null,e]})}function Ri({allRows:e,columnFilters:a,columnVisibilityOptions:t,compactToolbar:o,customToolbar:r,DataTableToolbar:l,description:d,descriptionId:p,effectiveToolbarActions:u,enableColumnPinning:y,enableGrouping:V,enableToolbarColumnChooser:S,enableToolbarFilterChips:z,enableToolbarResetLayout:M,enableToolbarSavedViews:$,enableDensityToggle:J,enableViewToggle:F,hiddenRowsLabel:g,labels:T,onClearColumnFilters:s,onColumnFilterChange:C,onColumnPinningChange:m,onDensityChange:v,onShowHiddenRowsChange:N,onToolbarQueryValueChange:w,reorderColumn:G,onResetColumnLayout:W,onCreateSavedView:_,onApplySavedView:U,onRenameSavedView:R,onDeleteSavedView:f,onViewModeChange:x,openFileDialog:k,selectedRowIds:A,selectedRows:Q,selectionActions:P,savedViews:q,showHiddenRows:j,table:E,title:Z,titleId:re,toolbarQueryPlaceholder:Re,toolbarQueryValue:Se,toolbarVisibility:ke,density:Ee,viewMode:Ce}){return jsx("div",{"data-dtp-slot":"data-table-toolbar",className:"shrink-0",children:jsx(l,{title:Z,titleId:re,description:d,descriptionId:p,toolbarQueryValue:Se,toolbarQueryPlaceholder:Re,onToolbarQueryValueChange:w,reorderColumn:G,customToolbar:r,compactToolbar:o,viewMode:Ce,onViewModeChange:x,enableViewToggle:F,toolbarActions:u,selectionActions:P,selectedRowIds:A,selectedRows:Q,showHiddenRows:j,hiddenRowsLabel:g,onShowHiddenRowsChange:N,allRows:e,columnVisibilityOptions:t,onColumnVisibilityChange:(Ae,Ge)=>{E.getColumn(Ae)?.toggleVisibility(Ge);},enableColumnPinning:y,enableGrouping:V,enableToolbarColumnChooser:S,enableToolbarFilterChips:z,enableToolbarResetLayout:M,enableToolbarSavedViews:$,onColumnPinningChange:m,columnFilters:a,onColumnFilterChange:C,onClearColumnFilters:s,onResetColumnLayout:W,onCreateSavedView:_,onApplySavedView:U,onRenameSavedView:R,onDeleteSavedView:f,density:Ee,onDensityChange:v,enableDensityToggle:J,labels:T,toolbarVisibility:ke,openFileDialog:k,savedViews:q,table:E})})}var ie={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,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",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 Si(e){return {...ie,...e}}function vi({Button:e,Checkbox:a,DataTableRowActions:t,Tooltip:o,TooltipContent:r,TooltipTrigger:l,cancelEditing:d$1,columns:p,editableRows:u,editingRowId:y,editErrors:V,enableRowSelection:S,enableRowPinning:z,hasTreeExpansion:M,isSavingEdit:$,isEditDirty:J,includeFillSpacer:F=false,labels:g,lastSelectedRowIdRef:T,detailPanel:s,detailExpanded:C,onDetailExpandedChange:m,rowSelectionSelectAllScope:v,rowActions:N,saveEdit:w,startEditingRow:G,tableRef:W}){let _=D.useCallback((U,R)=>{let f=W.current;if(!f||!T.current)return;let x=f.getRowModel().rows.filter(q=>!d(q.original)),k=x.findIndex(q=>q.id===T.current),A=x.findIndex(q=>q.id===U);if(k<0||A<0)return;let Q=Math.min(k,A),P=Math.max(k,A);f.setRowSelection(q=>{let j={...q};for(let E of x.slice(Q,P+1).filter(Z=>Z.getCanSelect()&&Z.getCanMultiSelect()))R?j[E.id]=true:delete j[E.id];return j});},[T,W]);return D.useMemo(()=>{let U=[];if(M||s){let R=M&&s?80:a$1;U.push({id:"__expand__",enableResizing:false,enableSorting:false,enableHiding:false,size:R,minSize:R,maxSize:R,header:()=>jsx("span",{className:"sr-only",children:g.expandRow}),cell:({row:f,table:x})=>{let k=M&&f.getCanExpand(),A=!!(s&&(s.getRowCanExpand?.(f.original)??true));if(!k&&!A)return null;let Q=f.getIsExpanded(),P=C===true||!!C[f.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":Q?g.collapseRow:g.expandRow,"aria-expanded":Q,"data-tree-toggle":"true",onClick:()=>f.toggleExpanded(),children:jsx(c,{className:a$2("transition-transform",Q?"rotate-0":"-rotate-90")})}):null,A?jsx(e,{type:"button",variant:"ghost",size:"icon-sm","aria-label":P?M?g.collapseRowDetails??ie.collapseRowDetails:g.collapseRow:M?g.expandRowDetails??ie.expandRowDetails:g.expandRow,"aria-expanded":P,"data-detail-toggle":"true",onClick:()=>{m(q=>b(q,f.id,x.getCoreRowModel().flatRows.map(j=>j.id)));},children:jsx(c,{className:a$2("transition-transform",P?"rotate-0":"-rotate-90")})}):null]})}});}return S&&U.push({id:"__select__",enableResizing:false,enableSorting:false,enableHiding:false,size:a$1,minSize:a$1,maxSize:a$1,header:({table:R})=>{let f=v==="filtered",x=(f?R.getFilteredRowModel().flatRows:R.getRowModel().flatRows).filter(P=>P.getCanSelect()&&P.getCanMultiSelect()),k=x.length>0&&x.every(P=>P.getIsSelected()),A=x.some(P=>P.getIsSelected()),Q=f?g.selectAllFilteredRows??ie.selectAllFilteredRows:g.selectAllVisibleRows??ie.selectAllVisibleRows;return x.length===0?jsx("span",{className:"sr-only",children:Q}):jsx("div",{className:"flex items-center justify-center",children:jsx(a,{className:"my-0.5",checked:k?true:A?"indeterminate":false,onCheckedChange:P=>{R.setRowSelection(q=>{let j={...q};for(let E of x)P===true?j[E.id]=true:delete j[E.id];return j});},"aria-label":Q})})},cell:({row:R})=>jsx("div",{className:"flex items-center justify-center",children:jsx(a,{className:"my-0.5",checked:R.getIsSelected(),disabled:!R.getCanSelect(),onClick:f=>{if(!f.shiftKey||!T.current||!R.getCanMultiSelect()){T.current=R.id;return}f.preventDefault(),f.stopPropagation(),_(R.id,!R.getIsSelected()),T.current=R.id;},onCheckedChange:f=>{T.current=R.id,R.toggleSelected(f===true);},"aria-label":g.selectRow??ie.selectRow})})}),U.push(...p.map(R=>h(R))),F&&U.push({id:"__spacer__",cell:()=>null,header:()=>null,enableColumnFilter:false,enableGlobalFilter:false,enableGrouping:false,enableHiding:false,enablePinning:false,enableResizing:false,enableSorting:false,minSize:0,size:0}),(N.length||u||z)&&U.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:g.actions}),cell:({row:R})=>{let f=R.id;return y===f?jsxs("div",{className:"flex w-full items-center justify-end gap-2",children:[V._row?jsx("span",{className:"sr-only",role:"alert",children:V._row}):null,jsx(e,{type:"button",size:"sm",disabled:$||!J,onClick:()=>{w(R.original);},children:g.saveEdit}),jsxs(o,{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:g.cancelEdit})]})}),jsx(r,{children:g.cancelEdit})]})]}):jsx("div",{className:"flex w-full items-center justify-center",children:jsx(t,{row:R.original,rowActions:N,editableRows:u,isEditing:false,onStartEditing:()=>{G(R.original,R.id);},onCancelEditing:()=>{},labels:g,rowPinning:z?{canPin:R.getCanPin(),position:R.getIsPinned(),pin:k=>R.pin(k)}:void 0})})}}),U},[e,a,t,o,r,l,d$1,p,u,C,s,V,y,S,z,M,F,$,J,g,T,m,v,N,w,_,G])}function xe({defaultValue:e,onChange:a,value:t}){let[o,r]=D.useState(e),l=t??o,d=D.useRef(l);D.useEffect(()=>{d.current=l;},[l]);let p=D.useCallback(u=>{let y=typeof u=="function"?u(d.current):u;d.current=y,a?.(y),t===void 0&&r(y);},[a,t]);return [l,p]}function Pi({enabled:e,hasMore:a,isLoadingMore:t,onLoadMore:o,onError:r}){let l=D.useRef(null),d=D.useRef(false),p=D.useEffectEvent(o),u=D.useEffectEvent(y=>{r?.(y);});return D.useEffect(()=>{if(!e||!a||t)return;let y=l.current;if(!y)return;let V=new IntersectionObserver(S=>{if(S[0].isIntersecting&&!d.current){d.current=true;let M;try{M=p();}catch($){d.current=false,u($);return}Promise.resolve(M).catch($=>{u($);}).finally(()=>{d.current=false;});}},{rootMargin:"200px 0px 200px 0px"});return V.observe(y),()=>{V.disconnect();}},[e,a,t]),l}function ki({enabled:e,maxPageIndex:a,onPageIndexChange:t,pageIndex:o,setLocalPageIndex:r}){D.useEffect(()=>{if(!e||o>=0&&o<=a)return;let l=Math.min(Math.max(o,0),a);r(l),t?.(l);},[e,a,t,o,r]);}function Fi(){return D.useMemo(()=>{let e=new WeakMap;return (a,t,o$1)=>{let r=o(o$1);if(!r)return true;let l=a.original;if(typeof l!="object"||l===null)return o(a.getValue(t)).includes(r);let d=e.get(l);d||(d=new Map,e.set(l,d));let p=d.get(t);if(p===void 0){let u=a.getValue(t);p=o(u),d.set(t,p);}return p.includes(r)}},[])}function Bn(e={}){return tableFeatures({columnFacetingFeature:columnFacetingFeature,columnFilteringFeature:columnFilteringFeature,globalFilteringFeature:globalFilteringFeature,rowAggregationFeature:rowAggregationFeature,columnGroupingFeature:columnGroupingFeature,columnOrderingFeature:columnOrderingFeature,columnPinningFeature:columnPinningFeature,columnSizingFeature:columnSizingFeature,columnResizingFeature:columnResizingFeature,columnVisibilityFeature:columnVisibilityFeature,rowExpandingFeature:rowExpandingFeature,rowPaginationFeature:rowPaginationFeature,rowPinningFeature:rowPinningFeature,rowSelectionFeature:rowSelectionFeature,rowSortingFeature:rowSortingFeature,expandedRowModel:createExpandedRowModel(),facetedMinMaxValues:createFacetedMinMaxValues(),facetedRowModel:createFacetedRowModel(),facetedUniqueValues:createFacetedUniqueValues(),filteredRowModel:createFilteredRowModel(),groupedRowModel:createGroupedRowModel(),paginatedRowModel:createPaginatedRowModel(),sortedRowModel:createSortedRowModel(),aggregationFns:{...aggregationFns,...e},filterFns:filterFns,sortFns:sortFns})}Bn();function Vi({autoResetPageIndex:e,columnGroupPaths:a,columnResizeMode:t,dir:o,currentColumnFilters:r,currentColumnOrder:l,currentColumnPinning:d$1,currentRowPinning:p,currentColumnSizing:u,currentExpanded:y,currentGrouping:V,currentPagination:S,currentRowSelection:z,currentSorting:M,currentViewMode:$,defaultColumn:J,effectiveColumnVisibility:F,enableColumnResizing:g,enableMultiRowSelection:T,enableRowPinning:s$1,enableRowSelection:C,enableSubRowSelection:m,getRowCanSelect:v,getRowCanExpand:N,getSubRows:w,aggregationFns:G,groupedColumnMode:W,globalFilterFn:_,globalFilterValue:U,hasNextPage:R,handleColumnFiltersChange:f,handleColumnOrderChange:x$1,handleColumnPinningChange:k$1,handleRowPinningChange:A,handleColumnVisibilityChange:Q,handleExpandedChange:P,handleGroupingChange:q,infiniteScroll:j$1,keepPinnedRows:E,manualFiltering:Z,manualGrouping:re,manualExpanding:Re,manualPagination:Se,manualSorting:ke,onActionError:Ee,onPageIndexChange:Ce,onPageSizeChange:Ae,pageCount:Ge,pageIndex:X,pageSize:ve,paginateExpandedRows:L,filterFromLeafRows:ye,maxLeafRowFilterDepth:We,setCurrentRowSelection:Xe,setCurrentSorting:Ze,setLocalColumnSizing:ia,setLocalPagination:ge,shouldRenderInitialLoading:ra,tableColumns:Qe,tableData:ba,tableGetRowId:$e,tableRef:ea,totalRowCount:fa,virtualization:aa}){let Ta=Fi(),fe=D.useMemo(()=>k(Qe).map(({column:b,index:I})=>s(b,I)),[Qe]),la=D.useMemo(()=>{let b=fe,I=b.filter(oe=>!x(oe)&&oe!=="__spacer__"),K=new Set(I),de=l.filter(oe=>K.has(oe)),le=I.filter(oe=>!de.includes(oe));return [...b.filter(oe=>oe==="__expand__"||oe==="__select__"),...de,...le,...b.filter(oe=>oe==="__spacer__"),...b.filter(oe=>oe==="__actions__")]},[l,fe]),Ie=D.useMemo(()=>{let b=new Set(fe),I=new Set(fe.filter(le=>!x(le)&&le!=="__spacer__")),K=(d$1.left??[]).filter(le=>I.has(le)),de=(d$1.right??[]).filter(le=>I.has(le));return {start:[...["__expand__","__select__"].filter(le=>b.has(le)),...K],end:[...de,...["__actions__"].filter(le=>b.has(le))]}},[d$1,fe]),Da=D.useCallback(b=>{let I=typeof b=="function"?b(Ie):b,K=new Set(fe.filter(de=>!x(de)&&de!=="__spacer__"));k$1({left:I.start.filter(de=>K.has(de)),right:I.end.filter(de=>K.has(de))});},[Ie,fe,k$1]),Pe=D.useMemo(()=>{let b=new Set,I=oe=>{oe.forEach((Ba,ta)=>{if(b.add($e(Ba,ta)),!d(Ba)){let Ia=w?.(Ba,ta);Ia?.length&&I(Ia);}});};I(ba);let K=(p.top??[]).filter(oe=>b.has(oe)),de=new Set(K),le=(p.bottom??[]).filter(oe=>b.has(oe)&&!de.has(oe));return {top:K,bottom:le}},[p.bottom,p.top,w,ba,$e]),Fe=D.useMemo(()=>Object.fromEntries(Object.entries(z).flatMap(([b,I])=>I?[[b,true]]:[])),[z]),Pa=D.useCallback(b=>{let I=typeof b=="function"?b(Fe):b;Xe({...I});},[Xe,Fe]),xa=D.useMemo(()=>({sorting:M,pagination:S,rowSelection:Fe,columnVisibility:F,columnFilters:r,globalFilter:U,expanded:y,grouping:V,columnOrder:la,columnPinning:Ie,rowPinning:Pe,columnSizing:u}),[r,u,y,V,S,M,F,la,Ie,Pe,U,Fe]),sa=D.useCallback(b=>{let I=typeof b=="function"?b(S):b;(X===void 0||ve===void 0)&&ge(K=>({pageIndex:X===void 0?I.pageIndex:K.pageIndex,pageSize:ve===void 0?I.pageSize:K.pageSize})),I.pageIndex!==S.pageIndex&&Ce?.(I.pageIndex),I.pageSize!==S.pageSize&&Ae?.(I.pageSize);},[S,Ce,Ae,X,ve,ge]),ka=D.useCallback(b=>{ia(b);},[ia]),wa=D.useMemo(()=>Bn(G),[G]),me=useTable({features:wa,data:ba,columns:Qe,enableRowSelection:v?b=>C&&v(b.original):C,enableRowPinning:typeof s$1=="function"?b=>s$1(b.original):s$1,keepPinnedRows:E,enableMultiRowSelection:typeof T=="function"?b=>T(b.original):T,enableSubRowSelection:typeof m=="function"?b=>m(b.original):m,enableColumnResizing:g,columnResizeMode:t,columnResizeDirection:o,getRowId:$e,getSubRows:w?(b,I)=>w(b,I):void 0,getRowCanExpand:w?b=>N?.(b.original)??b.subRows.length>0:void 0,globalFilterFn:_??Ta,getColumnCanGlobalFilter:b=>b.columnDef.enableGlobalFilter!==false&&typeof b.accessorFn=="function",manualSorting:ke,manualGrouping:re,manualFiltering:Z,manualExpanding:Re,manualPagination:Se||!!j$1?.enabled,paginateExpandedRows:L,filterFromLeafRows:ye,maxLeafRowFilterDepth:We,defaultColumn:J,autoResetPageIndex:e,state:xa,onSortingChange:Ze,onPaginationChange:sa,onRowSelectionChange:Pa,onColumnVisibilityChange:Q,onColumnFiltersChange:f,onExpandedChange:P,onGroupingChange:q,onColumnOrderChange:x$1,onColumnPinningChange:Da,onRowPinningChange:A,onColumnSizingChange:ka,groupedColumnMode:W});D.useLayoutEffect(()=>(ea.current=me,()=>{ea.current===me&&(ea.current=null);}),[me,ea]);let Ne=me.getVisibleLeafColumns(),da=D.useCallback((b,I)=>{if(b===I||!j(b,I,a))return;let K=me.getAllLeafColumns().map(le=>le.id).filter(le=>!x(le)&&le!=="__spacer__"),de=B(l.length?l:K,b,I);x$1(de);},[a,l,x$1,me]),Ea=me.getTopRows(),Ue=me.getBottomRows(),Ca=$==="table"?me.getCenterRows():me.getRowModel().rows,ca=typeof aa=="object"?aa:void 0,ze=aa===true||ca?.enabled===true,ua=Math.max(1,Math.floor(ca?.fallbackRowCount??20)),Fa=(ze?Ca.slice(0,ua):Ca).map((b,I)=>({row:b,rowIndex:I})),qe=Se||!!j$1?.enabled,Va=qe?void 0:me.getFilteredRowModel().rows.length,je=fa??Va,pa=!qe||Ge!==void 0||fa!==void 0,Ha=je,Ke=ra?1:Ge??(je!==void 0?Math.max(1,Math.ceil(je/S.pageSize)):qe?S.pageIndex+(R?2:1):me.getPageCount()),Ma=Math.max(0,Ke-1),Aa=D.useCallback(b=>{X===void 0&&ge(I=>I.pageIndex===b?I:{...I,pageIndex:b});},[X,ge]);ki({enabled:!ra&&!j$1?.enabled&&pa,maxPageIndex:Ma,onPageIndexChange:Ce,pageIndex:S.pageIndex,setLocalPageIndex:Aa});let i=D.useCallback(b=>{b!==S.pageIndex&&(Ce?.(b),X===void 0&&ge(I=>I.pageIndex===b?I:{...I,pageIndex:b}));},[S.pageIndex,Ce,X,ge]),H=D.useCallback(b=>{S.pageIndex!==0&&Ce?.(0),b!==S.pageSize&&Ae?.(b),ve===void 0&&ge({pageIndex:0,pageSize:b});},[S.pageIndex,S.pageSize,Ce,Ae,ve,ge]),ne=Pi({enabled:!!j$1?.enabled,hasMore:!!j$1?.hasMore,isLoadingMore:j$1?.isLoadingMore,onLoadMore:()=>j$1?.onLoadMore(),onError:b=>{Ee?.({error:b,source:"infiniteScroll"});}});return {effectivePageCount:Ke,footerTotalRowCount:Ha,handleFooterPageIndexChange:i,handleFooterPageSizeChange:H,isPageCountKnown:pa,renderedRows:Ca,topPinnedRows:Ea,bottomPinnedRows:Ue,reorderColumn:da,rowsToRender:Fa,sentinelRef:ne,table:me,virtualPaddingBottom:0,virtualPaddingTop:0,visibleLeafColumns:Ne}}var Bs="data-table-pro:column-prefs:",Ai=1,Mi=["visibility","sizing","order","pinning","rowPinning","density"];function Ii(e){let a=Gn(e);if(!a)return {};let t=$n(a);if(!t)return {};let o=Un(a.key),r;try{r=t.getItem(o);}catch(u){return a.onError?.({error:u,operation:"read"}),{}}if(!r)return {};let l;try{l=(a.deserialize??JSON.parse)(r);}catch(u){return a.onError?.({error:u,operation:"deserialize"}),{}}let d=a.version??Ai,p;if(Gs(l))if(l.version===d)p=l.state;else if(a.migrate)try{p=a.migrate({version:l.version,state:l.state},d);}catch(u){return a.onError?.({error:u,operation:"migrate"}),{}}else return {};else p=l;return Ni($s(p),a.slices)}function zi(e){let a=Gn(e);if(!a)return false;let t=$n(a);if(!t)return false;try{return t.removeItem(Un(a.key)),!0}catch(o){return a.onError?.({error:o,operation:"remove"}),false}}function Li({key:e,persistence:a,prefs:t}){let o=a??Gn(e),r=o?$n(o):void 0,l=o?Un(o.key):void 0,d=o?.version??Ai,p=Math.max(0,o?.debounceMs??100),u=Ni(t,o?.slices),y=D.useMemo(()=>{if(!o)return {value:void 0};try{let S={version:d,state:u};return {value:(o.serialize??JSON.stringify)(S)}}catch(S){return {error:S,value:void 0}}},[o,u,d]),V=D.useEffectEvent((S,z)=>{o?.onError?.({error:S,operation:z});});D.useEffect(()=>{y.error!==void 0&&V(y.error,"serialize");},[y.error]),D.useEffect(()=>{if(!r||!l||y.value===void 0)return;let S=()=>{try{if(r.getItem(l)===y.value)return;r.setItem(l,y.value);}catch(M){V(M,"write");}};if(p===0){S();return}let z=globalThis.setTimeout(S,p);return ()=>{globalThis.clearTimeout(z);}},[p,y.value,r,l]);}function Gn(e){if(e)return typeof e=="string"?{key:e}:e}function $n(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 Un(e){return `${Bs}${e}`}function Gs(e){return it(e)&&Object.prototype.hasOwnProperty.call(e,"version")&&Object.prototype.hasOwnProperty.call(e,"state")}function Ni(e,a){let t=new Set(a??Mi),o={};for(let r of Mi)t.has(r)&&e[r]!==void 0&&Object.assign(o,{[r]:e[r]});return o}function $s(e){if(!it(e))return {};let a={},t=Us(e.visibility);t&&(a.visibility=t);let o=js(e.sizing);o&&(a.sizing=o);let r=bt(e.order);if(r&&(a.order=r),it(e.pinning)){let d=bt(e.pinning.left)??[],p=bt(e.pinning.right)??[];a.pinning={left:d,right:p};}let l=Ks(e.rowPinning);return l&&(a.rowPinning=l),Ws(e.density)&&(a.density=e.density),a}function Us(e){if(it(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="boolean"))}function js(e){if(it(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="number"&&Number.isFinite(a[1])&&a[1]>=0))}function bt(e){if(Array.isArray(e))return e.filter(a=>typeof a=="string")}function Ks(e){if(it(e))return {top:bt(e.top)??[],bottom:bt(e.bottom)??[]}}function Ws(e){return e==="compact"||e==="comfortable"||e==="spacious"}function it(e){return !!e&&typeof e=="object"&&!Array.isArray(e)}var Qs=Object.values(a).slice().sort((e,a)=>e-a);function Oi(e){let a=D.useRef(0),[t,o]=D.useState(0);return D.useEffect(()=>{let r=e.current;if(!r)return;let l=(p=r.clientWidth)=>{let u=qs(p);u!==a.current&&(a.current=u,o(u));};if(l(),typeof ResizeObserver>"u")return;let d=new ResizeObserver(p=>{let u=p[0];l(u?Ys(u):void 0);});return d.observe(r),()=>{d.disconnect();}},[e]),t}function qs(e){if(e<=0)return 0;let a=1;for(let t of Qs){if(ed$1??(l?{key:l}:void 0),[l,d$1]),ye=D.useMemo(()=>Ii(L),[L]),[We,Xe]=D.useState({pageIndex:T?.pagination?.pageIndex??0,pageSize:T?.pagination?.pageSize??Re[0]??20}),[Ze,ia]=xe({value:Ee,onChange:Q,defaultValue:()=>T?.sorting??[]}),[ge,ra]=xe({value:re,onChange:k$1,defaultValue:()=>T?.rowSelection??{}}),[Qe,ba]=xe({value:p,onChange:_,defaultValue:()=>T?.columnVisibility??ye.visibility??{}}),[$e,ea]=xe({value:e$1,onChange:v,defaultValue:()=>T?.columnFilters??[]}),[fa,aa]=xe({value:M,onChange:R,defaultValue:()=>T?.expanded??{}}),[Ta,fe]=xe({value:a,onChange:N,defaultValue:()=>T?.columnOrder??ye.order??[]}),[la,Ie]=xe({value:t,onChange:w,defaultValue:()=>T?.columnPinning??ye.pinning??r(u)}),[Da,Pe]=xe({value:o,onChange:G,defaultValue:()=>T?.rowPinning??ye.rowPinning??{top:[],bottom:[]}}),[Fe,Pa]=xe({value:r$1,onChange:W,defaultValue:()=>T?.columnSizing??ye.sizing??{}}),[xa,sa]=xe({value:X,onChange:q,defaultValue:()=>T?.viewMode??"table"}),[ka,wa]=xe({value:$,onChange:f,defaultValue:()=>T?.grouping??[]}),[me,Ne]=xe({value:ke,onChange:A,defaultValue:()=>T?.showHiddenRows??false}),[da,Ea]=xe({value:V,onChange:U,defaultValue:()=>T?.density??ye.density??"comfortable"}),Ue=Ge??T?.globalFilter??"",Ca=Ae??Z.searchPlaceholder,ca=Ce??250,[ze,ua]=D.useState(Ue),ya=Oi(ve),Fa=!!P,qe=D.useRef(Ue),Va=D.useEffectEvent(B=>{qe.current=B,P?.(B);});D.useEffect(()=>{qe.current=Ue,ua(Ue);},[Ue]),D.useEffect(()=>{if(!Fa||ze===Ue||ze===qe.current)return;let B=window.setTimeout(()=>{Va(ze);},ca);return ()=>{window.clearTimeout(B);}},[Fa,ze,ca,Ue]);let je=D.useMemo(()=>({pageIndex:j??We.pageIndex,pageSize:E??We.pageSize}),[We.pageIndex,We.pageSize,j,E]),pa=Math.max(1,C??Math.min(5,je.pageSize)),Ha=D.useDeferredValue(ze),Ke=z?m?ze:Ha:"",Ma=D.useCallback(B=>{sa(B);},[sa]),Aa=D.useCallback(B=>{Ne(B);},[Ne]),i$1=D.useCallback(B=>{Ea(B);},[Ea]),H=D.useCallback(()=>{x?.(0),j===void 0&&Xe(B=>B.pageIndex===0?B:{...B,pageIndex:0});},[x,j]),ne=D.useRef({columnFilters:$e,globalFilterValue:Ke});D.useEffect(()=>{let B=ne.current,Ve=B.columnFilters!==$e,ce=B.globalFilterValue!==Ke;ne.current={columnFilters:$e,globalFilterValue:Ke},!m&&(!Ve&&!ce||H());},[$e,Ke,m,H]),Li({persistence:L,prefs:{visibility:p?void 0:Qe,sizing:r$1===void 0?Fe:void 0,order:a?void 0:Ta,pinning:t?void 0:la,rowPinning:o===void 0?Da:void 0,density:V?void 0:da}});let b=D.useMemo(()=>k(u).reduce((B,{column:Ve,index:ce})=>{let ga=s(Ve,ce);return i(Ve.meta?.hideOn,ya)&&(B[ga]=false),B},{}),[u,ya]),I=D.useMemo(()=>({...Qe,...b}),[Qe,b]),K=D.useMemo(()=>y.filter(B=>b$1(B,g,me)),[me,y,g]),de=s$1&&K.length===0,le=D.useMemo(()=>c$1(pa),[pa]),oe=de?le:K,Ba=D.useCallback((B,Ve)=>d(B)?e(Ve):F(B,Ve),[F]),ta=S||(Se?.length??0)>0||Object.values(ge).some(Boolean),Ia=D.useMemo(()=>{if(!ta)return new Map;let B=new Map,Ve=ce=>{ce.forEach((ga,te)=>{B.set(F(ga,te),ga);let be=J?.(ga,te);be?.length&&Ve(be);});};return Ve(K),B},[F,J,ta,K]),Zt=D.useMemo(()=>ta?Object.entries(ge).filter(([,B])=>B).map(([B])=>Ia.get(B)).filter(B=>!!B):[],[ge,Ia,ta]),en=D.useMemo(()=>Object.entries(ge).flatMap(([B,Ve])=>Ve?[B]:[]),[ge]);return {containerWidth:ya,currentColumnFilters:$e,currentColumnOrder:Ta,currentColumnPinning:la,currentRowPinning:Da,currentColumnSizing:Fe,currentColumnVisibility:Qe,currentDensity:da,currentExpanded:fa,currentGrouping:ka,currentPagination:je,currentRowSelection:ge,currentShowHiddenRows:me,currentSorting:Ze,currentViewMode:xa,effectiveColumnVisibility:I,globalFilterValue:Ke,handleDensityChange:i$1,handleShowHiddenRowsChange:Aa,handleViewModeChange:Ma,localSearchValue:ze,resolvedLoadingRowCount:pa,resolvedToolbarQueryPlaceholder:Ca,selectedRowIds:en,selectedRows:Zt,setCurrentColumnFilters:ea,setCurrentColumnOrder:fe,setCurrentColumnPinning:Ie,setCurrentRowPinning:Pe,setCurrentColumnVisibility:ba,setCurrentExpanded:aa,setCurrentGrouping:wa,setCurrentRowSelection:ra,setCurrentSorting:ia,setLocalColumnSizing:Pa,setLocalPagination:Xe,setLocalSearchValue:ua,shouldRenderInitialLoading:de,tableData:oe,tableGetRowId:Ba,toolbarFilteredData:K,visibleData:K}}var Xs={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 Bi({columns:e,columnSizing:a,editableRows:t,enableRowSelection:o,hasRowActions:r,hasRowExpansion:l,layoutMode:d,uiClassNames:p,visibleLeafColumns:u}){let y=D.useMemo(()=>{let F=new Set;for(let{column:g$1,index:T}of k(e))g(g$1)&&F.add(s(g$1,T));return o&&F.add("__select__"),l&&F.add("__expand__"),(r||t)&&F.add("__actions__"),F},[e,t,o,r,l]),V=D.useMemo(()=>{let F=new Map;for(let{column:g,index:T}of k(e)){let s$1=f(g);s$1!==void 0&&F.set(s(g,T),s$1);}return F},[e]),S=D.useMemo(()=>{let F=new Map,g=new Map,T=0;for(let C of u)v(C)==="left"&&(F.set(C.id,T),T+=Hi(C));let s=0;for(let C of [...u].reverse())v(C)==="right"&&(g.set(C.id,s),s+=Hi(C));return {left:F,right:g}},[u]),z=D.useMemo(()=>new Set([...y,...Object.keys(a)]),[a,y]),M=D.useMemo(()=>{let F=new Map;for(let g of u){let T=g.id==="__select__",s=g.id==="__expand__",C=g.id==="__actions__",m=T||s||C,v$1=g.id==="__spacer__",w$1=V.get(g.id),G=!v$1&&(d==="fit"||m||z.has(g.id)),W=G||w$1!==void 0?{width:G?m?a$1:g.getSize():void 0,minWidth:m?a$1:G?g.getSize():w$1,maxWidth:G?m?a$1:g.getSize():void 0}:void 0,_=v(g),U=_?{left:_==="left"?S.left.get(g.id):void 0,right:_==="right"?S.right.get(g.id):void 0}:void 0,R=W||U?{...W,...U}:void 0;F.set(g.id,{cellStyle:R,colStyle:W,fixedSide:_,headerStyle:R,isActionsColumn:C,isExpansionColumn:s,isSelectionColumn:T,isSpacerColumn:v$1,isUtilityColumn:m,pinnedClassName:_?w(_,p,{isUtilityColumn:m}):void 0,utilityClassName:m?"w-[50px] max-w-[50px] min-w-[50px] px-0":void 0});}return F},[z,d,V,S,p,u]),$=D.useMemo(()=>u.reduce((F,g)=>{let T=M.get(g.id),s=V.get(g.id);return T?.isUtilityColumn?F+a$1:z.has(g.id)?F+g.getSize():F+(s??0)},0),[M,z,V,u]),J=D.useCallback(F=>M.get(F)??Xs,[M]);return {columnLayouts:M,explicitlySizedColumnIds:y,fillMinWidth:$,getColumnLayout:J}}function Hi(e){return x(e.id)?a$1:e.getSize()}function $i(e,a){let t=e.classNames??{},{Button:o,Card:r,CardContent:l,CardHeader:d,Checkbox:p,Skeleton:u}=e;return function({rows:V,cardRenderer:S,cardSizing:z="fixed",cardGridClassName:M,cardClassName:$,rowActions:J,editableRows:F,detailPanel:g,detailExpanded:T,onDetailExpandedChange:s,hasCardTitle:C,rowSelection:m,onRowSelectionChange:v,enableRowSelection:N,editingRowId:w,onEditingRowIdChange:G,getRowClassName:W,onRowClick:_,getRowDraggable:U,onRowDragStart:R,onRowDragEnd:f,isLoading:x=false,loadingRowCount:k=5,labels:A}){let Q=z??"fixed",P=M?a$2("grid",M):Zs(Q),q=a$2("min-h-0 w-full gap-4 p-1",t.cardGrid,P),j=E=>a$2("relative min-w-0 max-w-full gap-0 overflow-hidden bg-transparent p-0",ed(Q),t.cardItem,$,E);return x?jsx("div",{role:"list","data-dtp-slot":"data-table-card-grid",className:q,children:Array.from({length:Math.max(1,k)},(E,Z)=>jsxs(r,{role:"listitem","aria-hidden":"true","data-dtp-slot":"data-table-card-item",className:j("min-h-52"),children:[C?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(l,{className:a$2("space-y-3 pb-4",C?"":"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-${Z}`))}):jsx("div",{role:"list","data-dtp-slot":"data-table-card-grid",className:q,children:V.map(E=>{let Z=E.id,re=E.original,Re=!!m[Z],Se=w===Z,ke=J.length>0||!!F,Ee=!!(g&&(g.getRowCanExpand?.(re)??true)),Ce=N||ke||C,Ae=N||ke||E.getCanExpand()||Ee,Ge=()=>{_&&_({row:re,rowId:Z});};return jsxs(r,{role:"listitem","data-row-id":Z,"data-tree-depth":E.depth,draggable:U?.(re)??false,"data-dtp-slot":"data-table-card-item","data-state":Re?"selected":void 0,className:j(a$2([W?.(re,{row:re,rowId:Z,rowIndex:E.index,isEditing:Se,isExpanded:E.getIsExpanded(),isLoading:false,isSelected:Re,pinnedPosition:false})].filter(Boolean).join(" "),"transition transition-colors hover:scale-101 data-[state=selected]:scale-101",t.card,Re?t.cardSelected:t.cardUnselected)),onDragStart:X=>{R?.({row:re,rowId:Z,event:X});},onDragEnd:X=>{f?.({row:re,rowId:Z,event:X});},children:[Ce?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",t.cardOverlay??"from-transparent via-transparent to-transparent")}):null,jsx("div",{"data-dtp-slot":"data-table-card-renderer",role:_?"button":void 0,tabIndex:_?0:void 0,className:a$2("flex min-h-0 max-w-full min-w-0 overflow-hidden rounded-[inherit] [&>*]:min-w-0",ad(Q),_&&"cursor-pointer focus-visible:outline-none"),onClick:X=>{y(X.target,X.currentTarget)||Ge();},onKeyDown:X=>{y(X.target,X.currentTarget)||(X.key==="Enter"||X.key===" ")&&(X.preventDefault(),Ge());},children:S({row:re,rowId:Z,depth:E.depth,canExpandSubRows:E.getCanExpand(),isSubRowsExpanded:E.getIsExpanded(),toggleSubRowsExpanded:()=>E.toggleExpanded(),isSelected:Re,onSelectedChange:X=>{v(Gi(m,Z,X,E.getCanSelect(),E.getCanMultiSelect()));},actions:J,isEditing:Se,startEditing:()=>{G(Z);},cancelEditing:()=>{G(null);}})}),Se||!g||!(T===true||T[E.id])?null:jsx("div",{"data-dtp-slot":"data-table-card-detail-panel",className:"relative z-20 min-w-0",children:g.render({row:re,rowId:Z,tableRow:E})}),Ae?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(p,{checked:Re,disabled:!E.getCanSelect(),"aria-label":(A.selectCardRow??ie.selectCardRow)(Z),onCheckedChange:X=>{v(Gi(m,Z,X===true,E.getCanSelect(),E.getCanMultiSelect()));}})}):null,E.getCanExpand()?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(o,{type:"button",size:"icon-sm",variant:"ghost","aria-label":E.getIsExpanded()?A.collapseRow:A.expandRow,"aria-expanded":E.getIsExpanded(),onClick:()=>E.toggleExpanded(),children:jsx(c,{className:a$2("transition-transform",E.getIsExpanded()?"rotate-0":"-rotate-90")})})}):null,Ee?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(o,{type:"button",size:"icon-sm",variant:"ghost","aria-label":T===true||T[E.id]?E.getCanExpand()?A.collapseRowDetails??ie.collapseRowDetails:A.collapseRow:E.getCanExpand()?A.expandRowDetails??ie.expandRowDetails:A.expandRow,"aria-expanded":T===true||!!T[E.id],"data-detail-toggle":"true",onClick:()=>{s(X=>b(X,E.id,V.map(ve=>ve.id)));},children:jsx(c,{className:a$2("transition-transform",T===true||T[E.id]?"rotate-0":"-rotate-90")})})}):null,jsx("div",{className:"pointer-events-none min-w-0 flex-1"}),ke?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(a,{row:re,rowActions:J,editableRows:F,isEditing:Se,onStartEditing:()=>{G(Z);},onCancelEditing:()=>{G(null);},labels:A})}):null]}):null]},Z)})})}}function Zs(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 ed(e){switch(e){case "content":return "w-fit";case "fluid":return "w-full";default:return}}function ad(e){switch(e){case "content":return "w-fit";case "fluid":return "w-full flex-1 [&>*]:w-full";default:return "flex-1"}}function Gi(e,a,t,o,r){if(!o)return e;if(t)return r?{...e,[a]:true}:{[a]:true};if(!e[a])return e;let l={...e};return delete l[a],l}function ji(e){let a=e.classNames??{},{Empty:t,EmptyContent:o,EmptyDescription:r,EmptyHeader:l,EmptyMedia:d,EmptyTitle:p}=e;return function({title:y="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(l,{children:[jsx(d,{variant:"icon",children:jsx(p$1,{})}),jsx(p,{children:y}),jsx(r,{children:V})]}),jsx(o,{})]})}}function Ki(e){let a=e.classNames??{},{Pagination:t,PaginationContent:o,PaginationEllipsis:r,PaginationFirst:l,PaginationItem:d,PaginationLast:p,PaginationLink:u,PaginationNext:y,PaginationPrevious:V,Select:S,SelectContent:z,SelectGroup:M,SelectItem:$,SelectTrigger:J,SelectValue:F,Tooltip:g,TooltipContent:T,TooltipTrigger:s}=e;function C({pageIndex:v,pageCount:N,pageCountKnown:w,pageSize:G,totalRowCount:W,rowsPerPageOptions:_,onPageIndexChange:U,onPageSizeChange:R,labels:f}){let x=w?td(v,Math.max(1,N)):[],k=v>0,A=v+1{R(Number(P));},children:[jsx(J,{"aria-label":f.recordsPerPage,className:`w-22 ${a.paginationSelectTrigger??""}`,children:jsx(F,{})}),jsx(z,{children:jsx(M,{children:_.map(P=>jsx($,{value:String(P),children:P},P))})})]})]}),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 ${a.paginationTotal??""}`,"aria-label":f.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:f.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 ${a.mutedText??"opacity-70"}`,children:w?f.pageStatus(v,Math.max(1,N)):(f.pageStatusUnknown??ie.pageStatusUnknown)(v)}),jsx(t,{"aria-label":f.pagination??ie.pagination,className:"mx-0 w-auto justify-end",children:jsxs(o,{children:[jsx(d,{className:"@min-[768px]/data-table:hidden",children:jsxs(g,{children:[jsx(s,{asChild:true,children:jsx(l,{"aria-label":f.firstPage,href:"#",size:"icon-sm",showText:false,disabled:!k,onClick:P=>{P.preventDefault(),k&&U(0);},text:f.firstPage})}),jsx(T,{children:f.firstPage})]})}),jsx(d,{children:jsxs(g,{children:[jsx(s,{asChild:true,children:jsx(V,{"aria-label":f.previousPage,href:"#",size:"icon-sm",showText:false,disabled:!k,onClick:P=>{P.preventDefault(),k&&U(v-1);},text:f.previousPage})}),jsx(T,{children:f.previousPage})]})}),x.map((P,q)=>jsx(d,{className:"hidden @min-[768px]/data-table:block",children:P==="ellipsis"?jsx(r,{text:f.morePages??ie.morePages}):jsx(u,{href:"#",isActive:P===v+1,size:"icon-sm",onClick:j=>{j.preventDefault(),U(P-1);},children:P})},`${P}-${q}`)),jsx(d,{children:jsxs(g,{children:[jsx(s,{asChild:true,children:jsx(y,{"aria-label":f.nextPage,href:"#",size:"icon-sm",showText:false,disabled:!A,onClick:P=>{P.preventDefault(),A&&U(v+1);},text:f.nextPage})}),jsx(T,{children:f.nextPage})]})}),w?jsx(d,{className:"@min-[768px]/data-table:hidden",children:jsxs(g,{children:[jsx(s,{asChild:true,children:jsx(p,{"aria-label":f.lastPage,href:"#",size:"icon-sm",showText:false,text:f.lastPage,disabled:!A,onClick:P=>{P.preventDefault(),A&&U(Q);}})}),jsx(T,{children:f.lastPage})]})}):null]})})]})]})}function m(v){return jsx("div",{className:`rounded-md border px-2 py-1 ${a.footer??""}`,children:jsx(C,{...v})})}return {DataTableFooter:m,DataTablePagination:C}}function td(e,a){let t=e+1,o=new Set([1,a]);for(let d=Math.max(1,t-2);d<=Math.min(a,t+2);d+=1)o.add(d);let r=Array.from(o).sort((d,p)=>d-p),l=[];for(let d=0;d1&&l.push("ellipsis"),l.push(p);}return l}function Qi(e){let{Button:a,DropdownMenu:t,DropdownMenuContent:o,DropdownMenuGroup:r,DropdownMenuItem:l,DropdownMenuSeparator:d,DropdownMenuTrigger:p,Tooltip:u$1,TooltipContent:y,TooltipTrigger:V}=e;return function({row:z,rowActions:M,editableRows:$,isEditing:J,onStartEditing:F,onCancelEditing:g,labels:T,rowPinning:s}){let C=M.filter(w=>d$1(w,z)),m$1=D.useCallback(w=>{w.stopPropagation();},[]);if(J)return jsxs(u$1,{children:[jsx(V,{asChild:true,children:jsxs(a,{type:"button",variant:"ghost",size:"icon-sm",onPointerDown:m$1,onClick:g,children:[jsx(u,{}),jsx("span",{className:"sr-only",children:T.cancelEdit})]})}),jsx(y,{children:T.cancelEdit})]});let v=e$2($,z),N=s?.canPin??false;return !C.length&&!v&&!N?null:jsxs(t,{children:[jsxs(u$1,{children:[jsx(V,{asChild:true,children:jsx(p,{asChild:true,children:jsxs(a,{type:"button",variant:"ghost",size:"icon-sm",onPointerDown:m$1,onClick:m$1,children:[jsx(k$1,{}),jsx("span",{className:"sr-only",children:T.rowActions})]})})}),jsx(y,{children:T.rowActions})]}),jsxs(o,{align:"end",className:"w-52",children:[v?jsx(r,{children:jsxs(l,{onClick:w=>{w.stopPropagation(),F();},children:[jsx(m,{"data-icon":"inline-start"}),T.editRow]})}):null,v&&(C.length||N)?jsx(d,{}):null,N?jsx(r,{children:s?.position?jsx(l,{onClick:w=>{w.stopPropagation(),s.pin(false);},children:T.unpinRow}):jsxs(Fragment,{children:[jsx(l,{onClick:w=>{w.stopPropagation(),s?.pin("top");},children:T.pinRowToTop}),jsx(l,{onClick:w=>{w.stopPropagation(),s?.pin("bottom");},children:T.pinRowToBottom})]})}):null,N&&C.length?jsx(d,{}):null,C.length?jsx(r,{children:C.map(w=>{let G=w.icon;return jsxs(l,{disabled:w.disabled?.(z),variant:w.variant==="destructive"?"destructive":void 0,onClick:W=>{W.stopPropagation(),w.onClick(z);},children:[G?jsx(G,{"data-icon":"inline-start"}):null,c$2(w.label,z)]},w.key)})}):null]})]})}}var od=D.lazy(()=>import('./data-table-toolbar-operations-E6KRSUL6.js'));function Yi(e){let a=e.classNames??{},{Button:t,ButtonGroup:o,DropdownMenu:r,DropdownMenuCheckboxItem:l,DropdownMenuContent:d,DropdownMenuGroup:p,DropdownMenuItem:u$1,DropdownMenuLabel:y,DropdownMenuSeparator:V,DropdownMenuTrigger:S,InputGroup:z,InputGroupAddon:M,InputGroupInput:$,Tooltip:J,TooltipContent:F,TooltipTrigger:g}=e;return function({title:C,titleId:m,description:v,descriptionId:N,toolbarQueryValue:w,toolbarQueryPlaceholder:G,onToolbarQueryValueChange:W,customToolbar:_,compactToolbar:U,viewMode:R,onViewModeChange:f,enableViewToggle:x,toolbarActions:k,selectionActions:A,selectedRows:Q,selectedRowIds:P,showHiddenRows:q$1,hiddenRowsLabel:j,onShowHiddenRowsChange:E,allRows:Z,columnVisibilityOptions:re,onColumnVisibilityChange:Re,enableColumnPinning:Se,onColumnPinningChange:ke,columnFilters:Ee,onColumnFilterChange:Ce,onClearColumnFilters:Ae,density:Ge,onDensityChange:X,enableDensityToggle:ve,labels:L,toolbarVisibility:ye,openFileDialog:We,enableGrouping:Xe,enableToolbarColumnChooser:Ze,enableToolbarFilterChips:ia,enableToolbarResetLayout:ge,enableToolbarSavedViews:ra,savedViews:Qe,onResetColumnLayout:ba,onCreateSavedView:$e,onApplySavedView:ea,onRenameSavedView:fa,onDeleteSavedView:aa,reorderColumn:Ta,table:fe}){let la=D.useRef(null),[Ie,Da]=D.useState(false),Pe=a.toolbarCompactIconButton??"",Fe=k.filter(i=>(i.placement??"primary")==="primary"),Pa=k.filter(i=>i.placement==="trailing"),xa=ye?.title??true,sa=ye?.search??true,ka=ye?.actions??true,wa=ye?.trailingActions??true,me=ye?.options??true,Ne=ye?.viewToggle??true,da=ye?.customToolbar??true,Ea=xa&&!!(C||v),Ue=sa,Ca=ka&&Fe.length>0,ca=P.length>0&&A.length>0,ze=me&&(re.some(i=>i.canHide)||!!(E&&j)||Se||ve||Xe||Ze||ge||ra),ua=Ze||ge||ra,ya=Ee.filter(i=>jn(i.value)),Fa={Button:t,DropdownMenuCheckboxItem:l,DropdownMenuGroup:p,DropdownMenuItem:u$1,DropdownMenuLabel:y,DropdownMenuSeparator:V,InputGroup:z,InputGroupAddon:M,InputGroupInput:$},qe=i=>jsx(D.Suspense,{fallback:null,children:jsx(od,{placement:i,ui:Fa,labels:L,enableColumnChooser:Ze,enableFilterChips:ia,enableResetLayout:ge,enableSavedViews:ra,enableColumnPinning:Se,columnVisibilityOptions:re,onColumnVisibilityChange:Re,onColumnPinningChange:ke,reorderColumn:Ta,table:fe,onResetColumnLayout:ba,savedViews:Qe,onCreateSavedView:$e,onApplySavedView:ea,onRenameSavedView:fa,onDeleteSavedView:aa,toolbarQueryValue:w,onToolbarQueryValueChange:W,activeColumnFilters:ya,onColumnFilterChange:Ce,onClearColumnFilters:Ae})}),Va=fe.getAllLeafColumns().filter(i=>!i.id.startsWith("__")&&i.getCanGroup()),je=fe.store.state.grouping.flatMap(i=>{let H=fe.getColumn(i);return H?[H]:[]}),pa=Ne&&x&&!!f,Ha=wa&&Pa.length>0,Ke=da&&!!_,Ma=da&&!!(U??_),Aa=L.selectedRows(P.length);return D.useEffect(()=>{Ie&&la.current?.focus();},[Ie]),!Ea&&!Ue&&!Ca&&!ca&&!ze&&!pa&&!Ha&&!Ke&&!Ma?null:jsxs("div",{className:"flex flex-col gap-4 pb-0",children:[xa&&(C||v)?jsxs("div",{className:"flex flex-col gap-1",children:[C?jsx("h2",{id:m,className:"text-lg font-semibold tracking-tight",children:C}):null,v?jsx("p",{id:N,className:`max-w-3xl text-sm ${a.mutedText??"opacity-70"}`,children:v}):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:[sa?jsxs(Fragment,{children:[jsx("div",{className:"hidden min-w-0 grow max-w-md @min-[768px]/data-table:block",children:jsxs(z,{className:"min-w-0",children:[jsx($,{value:w,onChange:i=>{W(i.target.value);},placeholder:G}),jsx(M,{align:"inline-start","aria-hidden":"true",children:jsx(s$1,{})}),w?jsx(M,{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:()=>{W("");},"aria-label":L.clearSearch,title:L.clearSearch,children:jsx(u,{})})}):null]})}),jsxs(J,{children:[jsx(g,{asChild:true,children:jsxs(t,{type:"button",variant:Ie||w?"secondary":"outline",size:"icon-sm","aria-label":L.searchTable,"aria-pressed":Ie,className:`shrink-0 @min-[768px]/data-table:hidden ${Pe} ${a.toolbarInputButton??""}`,onClick:()=>{Da(i=>!i);},children:[jsx(s$1,{}),jsx("span",{className:"sr-only",children:L.searchTable})]})}),jsx(F,{children:L.searchTable})]})]}):null,ka?jsx("div",{className:"flex shrink-0 items-center gap-2",children:Fe.map(i=>{let H=!i.iconOnly&&!!i.icon,ne=jsxs(t,{type:"button",className:H?`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 ${Pe}`:i.iconOnly?`size-7 shrink-0 @min-[768px]/data-table:size-8 ${Pe}`:"size-7 shrink-0 @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit",variant:i.variant??"outline",size:i.iconOnly?"icon":"default",onClick:()=>{i.onClick({rows:Z,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}):H?jsx("span",{className:"hidden @min-[768px]/data-table:inline",children:i.label}):jsx("span",{children:i.label})]},i.key);return i.iconOnly?jsxs(J,{children:[jsx(g,{asChild:true,children:ne}),jsx(F,{children:i.label})]},i.key):ne})}):null,Ma?jsx("div",{"data-dtp-slot":"data-table-toolbar-compact-custom",className:"flex shrink-0 items-center gap-2 @min-[1024px]/data-table:hidden",children:U??_}):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:[P.length?jsx("div",{className:`hidden text-sm @min-[768px]/data-table:block ${a.mutedText??"opacity-70"}`,children:Aa}):null,P.length?A.map(i=>{let H=i.icon,ne={rows:Q,rowIds:P},b=typeof i.disabled=="function"?i.disabled(Q,ne):i.disabled;return jsxs(J,{children:[jsx(g,{asChild:true,children:jsxs(t,{type:"button",variant:i.variant??"secondary",size:"icon-sm",className:Pe,disabled:b,onClick:()=>{i.onClick(ne);},"aria-label":i.label,children:[H?jsx(H,{}):null,jsx("span",{className:"sr-only",children:i.label})]})}),jsx(F,{children:i.label})]},i.key)}):null,ze?jsxs(r,{children:[jsx(S,{asChild:true,children:jsxs(t,{type:"button",variant:"outline",size:"icon-sm","aria-label":L.tableOptions,className:`${Pe} ${a.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(y,{children:L.tableOptions}),jsx(p,{children:E&&j?jsx(l,{checked:q$1,onCheckedChange:i=>{E(i===true);},children:L.showHiddenRows(j)}):null}),ve?jsxs(Fragment,{children:[jsx(V,{}),jsx(y,{children:L.density}),jsx(p,{children:[["compact",L.compactDensity],["comfortable",L.comfortableDensity],["spacious",L.spaciousDensity]].map(([i,H])=>jsx(l,{checked:Ge===i,onCheckedChange:()=>{X(i);},children:H},i))})]}):null,ua?qe("menu"):null,!Ze&&re.some(i=>i.canHide)?jsxs(Fragment,{children:[jsx(V,{}),jsx(y,{children:L.columns}),jsx(p,{children:re.filter(i=>i.canHide).map(i=>jsx(l,{checked:i.visible,onCheckedChange:H=>{Re?.(i.id,H===true);},children:i.label},i.id))})]}):null,Se&&!Ze?jsxs(Fragment,{children:[jsx(V,{}),jsxs(y,{children:[L.pinLeft," / ",L.pinRight]}),jsx(p,{children:re.map(i=>jsxs(u$1,{onSelect:H=>{H.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":`${L.pinLeft}: ${i.label}`,onClick:H=>{H.stopPropagation(),ke(i.id,"left");},children:"L"}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${L.pinRight}: ${i.label}`,onClick:H=>{H.stopPropagation(),ke(i.id,"right");},children:"R"}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${L.unpin}: ${i.label}`,onClick:H=>{H.stopPropagation(),ke(i.id,false);},children:"-"})]},`pin-${i.id}`))})]}):null,Xe&&Va.length?jsxs(Fragment,{children:[jsx(V,{}),jsx(y,{children:L.grouping}),jsx(p,{children:Va.map(i=>{let H=typeof i.columnDef.header=="string"?i.columnDef.header:i.id,ne=i.getIsGrouped();return jsx(l,{checked:ne,onCheckedChange:()=>{i.toggleGrouping();},children:ne?L.ungroup(H):L.groupBy(H)},`group-${i.id}`)})})]}):null]})]}):null,Ne&&x&&f?jsxs(o,{children:[jsxs(J,{children:[jsx(g,{asChild:true,children:jsxs(t,{type:"button",variant:R==="table"?"default":"outline","aria-pressed":R==="table",className:R==="table"?Pe:`${Pe} ${a.toolbarInputButton??""}`,size:"icon-sm",onClick:()=>{f("table");},children:[jsx(r$1,{}),jsx("span",{className:"sr-only",children:L.switchToTableView??ie.switchToTableView})]})}),jsx(F,{children:L.tableView??ie.tableView})]}),jsxs(J,{children:[jsx(g,{asChild:true,children:jsxs(t,{type:"button",variant:R==="card"?"default":"outline","aria-pressed":R==="card",className:R==="table"?`${Pe} ${a.toolbarInputButton??""}`:Pe,size:"icon-sm",onClick:()=>{f("card");},children:[jsx(q,{}),jsx("span",{className:"sr-only",children:L.switchToCardView??ie.switchToCardView})]})}),jsx(F,{children:L.cardView??ie.cardView})]})]}):null,wa?Pa.map(i=>{let H=!i.iconOnly&&!!i.icon,ne=jsxs(t,{type:"button",variant:i.variant??"outline",size:i.iconOnly?"icon-sm":"default",onClick:()=>{i.onClick({rows:Z,openFileDialog:We});},disabled:i.disabled,"aria-label":i.label,title:i.iconOnly?void 0:i.label,className:`size-7 shrink-0 ${i.iconOnly?"":`${H?"px-0 @min-[768px]/data-table:px-2.5":""} @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit`} ${i.iconOnly||H?Pe:""} ${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}):H?jsx("span",{className:"hidden @min-[768px]/data-table:inline",children:i.label}):jsx("span",{children:i.label})]},i.key);return i.iconOnly?jsxs(J,{children:[jsx(g,{asChild:true,children:ne}),jsx(F,{children:i.label})]},i.key):ne}):null]})]}),sa&&Ie?jsx("div",{"data-dtp-slot":"data-table-toolbar-compact-search",className:"min-w-0 @min-[768px]/data-table:hidden",children:jsxs(z,{children:[jsx($,{ref:la,value:w,onChange:i=>{W(i.target.value);},placeholder:G}),jsx(M,{align:"inline-start","aria-hidden":"true",children:jsx(s$1,{})}),w?jsx(M,{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:()=>{W("");},"aria-label":L.clearSearch,title:L.clearSearch,children:jsx(u,{})})}):null]})}):null,Ee.length?jsxs("div",{"data-dtp-slot":"data-table-toolbar-filters",className:"flex min-w-0 flex-wrap items-center gap-2",children:[Ee.map(i=>jsx(T,{filter:i,labels:L,onColumnFilterChange:Ce},i.id)),Ee.some(i=>jn(i.value))?jsx(t,{type:"button",variant:"ghost",size:"sm",onClick:Ae,children:L.clearFilters}):null]}):null,ia?qe("chips"):null,Xe&&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((i,H)=>{let ne=typeof i.columnDef.header=="string"?i.columnDef.header:i.id,b=I=>{let K=[...fe.store.state.grouping],[de]=K.splice(H,1);de!==void 0&&(K.splice(I,0,de),fe.setGrouping(K));};return jsxs("div",{className:"inline-flex items-center rounded-md border",children:[jsx(t,{type:"button",variant:"ghost",size:"sm",disabled:H===0,onClick:()=>b(H-1),"aria-label":L.moveGroupingEarlier(ne),children:jsx("span",{"aria-hidden":"true",children:"\u2190"})}),jsxs(t,{type:"button",variant:"secondary",size:"sm",onClick:()=>i.toggleGrouping(),"aria-label":L.removeGrouping(ne),children:[ne," ",jsx("span",{"aria-hidden":"true",children:"\xD7"})]}),jsx(t,{type:"button",variant:"ghost",size:"sm",disabled:H===je.length-1,onClick:()=>b(H+1),"aria-label":L.moveGroupingLater(ne),children:jsx("span",{"aria-hidden":"true",children:"\u2192"})})]},`grouping-bar-${i.id}`)})]}):null]}),da&&_?jsx("div",{"data-dtp-slot":"data-table-toolbar-desktop-custom",className:"hidden flex-row items-center gap-3 @min-[1024px]/data-table:flex",children:_}):null]})};function T({filter:s,labels:C,onColumnFilterChange:m}){let[v,N]=D.useState("");if(s.type==="text")return jsxs(z,{className:"min-w-48 max-w-64",children:[jsx($,{value:typeof s.value=="string"?s.value:"",onChange:k=>{m(s.id,k.target.value);},placeholder:s.placeholder??s.label,"aria-label":`${C.filters}: ${s.label}`}),jsx(M,{align:"inline-start","aria-hidden":"true",children:jsx(s$1,{})})]});if(s.type==="numberRange"||s.type==="dateRange"){let k=id(s.value),A=s.type==="numberRange"?"number":"date",Q=C.filterFrom??ie.filterFrom,P=C.filterTo??ie.filterTo;return jsxs("div",{role:"group","aria-label":`${C.filters}: ${s.label}`,className:"flex min-w-0 items-center gap-1.5",children:[jsxs(z,{className:"min-w-32 max-w-44",children:[jsx($,{type:A,inputMode:A==="number"?"decimal":void 0,value:k.from??"",min:s.min,max:s.max,step:A==="number"?s.step:void 0,onChange:q=>{m(s.id,{...k,from:qi(q.target.value,A)});},"aria-label":`${s.label}: ${Q}`}),jsx(M,{align:"inline-start",children:Q})]}),jsxs(z,{className:"min-w-32 max-w-44",children:[jsx($,{type:A,inputMode:A==="number"?"decimal":void 0,value:k.to??"",min:s.min,max:s.max,step:A==="number"?s.step:void 0,onChange:q=>{m(s.id,{...k,to:qi(q.target.value,A)});},"aria-label":`${s.label}: ${P}`}),jsx(M,{align:"inline-start",children:P})]})]})}let w=s.type==="boolean",G=s.type==="faceted",W=[{label:s.trueLabel??C.filterTrue??ie.filterTrue,value:"true"},{label:s.falseLabel??C.filterFalse??ie.filterFalse,value:"false"}],_=w?W:s.options,U=G&&v?_.filter(k=>k.label.toLocaleLowerCase().includes(v.toLocaleLowerCase())):_,R=typeof s.value=="string"||typeof s.value=="boolean"?String(s.value):"",f=Array.isArray(s.value)?s.value.map(String):R?[R]:[],x=f.length===0?s.label:`${s.label}: ${f.length===1?_.find(k=>k.value===String(f[0]))?.label??f[0]:f.length}`;return jsxs(r,{children:[jsx(S,{asChild:true,children:jsx(t,{type:"button",variant:"outline",size:"sm",children:x})}),jsxs(d,{align:"start",className:"w-56",children:[jsx(y,{children:s.label}),G&&s.searchable!==false?jsx("div",{className:"px-2 pb-2",children:jsxs(z,{children:[jsx($,{value:v,onChange:k=>{N(k.target.value);},placeholder:s.searchPlaceholder??C.facetSearch(s.label),"aria-label":C.facetSearch(s.label)}),jsx(M,{align:"inline-start","aria-hidden":"true",children:jsx(s$1,{})})]})}):null,jsxs(p,{children:[s.type==="select"||w||G?jsx(u$1,{onClick:()=>{m(s.id,"");},children:C.allFilterOptions??ie.allFilterOptions}):null,U.map(k=>jsxs(l,{checked:f.includes(k.value),disabled:k.disabled,onCheckedChange:A=>{if(s.type==="select"||w){m(s.id,A===true?k.value:"");return}let Q=new Set(f);A===true?Q.add(k.value):Q.delete(k.value),m(s.id,Array.from(Q));},children:[jsx("span",{className:"min-w-0 flex-1 truncate",children:k.label}),k.count!==void 0?jsx("span",{className:"ml-3 tabular-nums opacity-70",children:k.count}):null]},k.value))]})]})]})}}function jn(e){return Array.isArray(e)?e.length>0:e&&typeof e=="object"?"from"in e||"to"in e?Object.values(e).some(jn):true:e!=null&&e!==""}function id(e){if(!e||typeof e!="object"||Array.isArray(e))return {};let a=e;return {...typeof a.from=="number"||typeof a.from=="string"?{from:a.from}:{},...typeof a.to=="number"||typeof a.to=="string"?{to:a.to}:{}}}function qi(e,a){if(e)return a==="number"?Number(e):e}var rd=D.lazy(async()=>({default:(await import('./data-table-virtual-table-panel-UK5AMT4Q.js')).DataTableVirtualTablePanel}));function Ji(e){let a=typeof e.virtualization=="object"?e.virtualization:void 0;return e.virtualization===true||a?.enabled===true?jsx(D.Suspense,{fallback:jsx(e$1,{...e,rowsToRender:e.rowsToRender.slice(0,Math.max(1,Math.floor(a?.fallbackRowCount??20)))}),children:jsx(rd,{...e})}):jsx(e$1,{...e})}var ld="data-table-pro:saved-views:";var Zi=["sorting","columnVisibility","columnFilters","grouping","columnOrder","columnPinning","rowPinning","columnSizing","density","viewMode","showHiddenRows","globalFilter"],Xi=0;function Wa(e){let a=qn(e);if(!e||!a)return [];let t;try{t=a.getItem(Yn(e.key));}catch(d){return e.onError?.({error:d,operation:"read"}),[]}if(!t)return [];let o;try{o=(e.deserialize??JSON.parse)(t);}catch(d){return e.onError?.({error:d,operation:"deserialize"}),[]}if(!Ye(o)||!("version"in o)||!("views"in o))return [];let r=e.version??1,l=o.views;if(o.version!==r){if(!e.migrate)return [];try{l=e.migrate({version:o.version,views:o.views},r);}catch(d){return e.onError?.({error:d,operation:"migrate"}),[]}}return Array.isArray(l)?l.map(d=>dd(d,e.slices)).filter(d=>!!d):[]}function er(e,a,t){let o=a.trim();if(!e||!o)return;let r=new Date().toISOString(),l={id:Td(),name:o,createdAt:r,updatedAt:r,state:sd(t,e.slices)},d=[...Wa(e),l];return Wn(e,d,"create")?Qn(l):void 0}function ar(e,a,t){let o=t.trim();if(!e||!o)return;let r,l=Wa(e).map(d=>d.id!==a?d:(r={...d,name:o,updatedAt:new Date().toISOString()},r));if(r)return Wn(e,l,"rename")?Qn(r):void 0}function tr(e,a){if(!e)return false;let t=Wa(e),o=t.filter(r=>r.id!==a);return o.length!==t.length&&Wn(e,o,"delete")}function nr(e){let a=qn(e);if(!e||!a)return false;try{a.removeItem(Yn(e.key));}catch(t){return e.onError?.({error:t,operation:"remove"}),false}return e.onChange?.([],"clear"),true}function Wn(e,a,t){let o=qn(e);if(!o)return false;let r;try{let d={version:e.version??1,views:a};r=(e.serialize??JSON.stringify)(d);}catch(d){return e.onError?.({error:d,operation:"serialize"}),false}try{o.setItem(Yn(e.key),r);}catch(d){return e.onError?.({error:d,operation:"write"}),false}let l=a.map(Qn);return e.onChange?.(l,t),true}function sd(e,a){let t=new Set(a??Zi),o={};for(let r of Object.keys(e))t.has(r)&&Object.assign(o,{[r]:cd(r,e[r])});return o}function dd(e,a){if(!(!Ye(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:or(e.state,a)}}function or(e,a){if(!Ye(e))return {};let t=new Set(a??Zi),o={},r=ud(e.sorting);t.has("sorting")&&r&&(o.sorting=r);let l=pd(e.pagination);t.has("pagination")&&l&&(o.pagination=l);let d=Kn(e.rowSelection);t.has("rowSelection")&&d&&(o.rowSelection=d);let p=Kn(e.columnVisibility);t.has("columnVisibility")&&p&&(o.columnVisibility=p);let u=gd(e.columnFilters);t.has("columnFilters")&&u&&(o.columnFilters=u);let y=lt(e.grouping);t.has("grouping")&&y&&(o.grouping=y);let V=e.expanded===true?true:Kn(e.expanded);t.has("expanded")&&V!==void 0&&(o.expanded=V);let S=lt(e.columnOrder);t.has("columnOrder")&&S&&(o.columnOrder=S);let z=md(e.columnPinning);t.has("columnPinning")&&z&&(o.columnPinning=z);let M=bd(e.rowPinning);t.has("rowPinning")&&M&&(o.rowPinning=M);let $=fd(e.columnSizing);return t.has("columnSizing")&&$&&(o.columnSizing=$),t.has("density")&&(e.density==="compact"||e.density==="comfortable"||e.density==="spacious")&&(o.density=e.density),t.has("viewMode")&&(e.viewMode==="table"||e.viewMode==="card")&&(o.viewMode=e.viewMode),t.has("showHiddenRows")&&typeof e.showHiddenRows=="boolean"&&(o.showHiddenRows=e.showHiddenRows),t.has("globalFilter")&&typeof e.globalFilter=="string"&&(o.globalFilter=e.globalFilter),o}function Qn(e){return {...e,state:or(e.state,Object.keys(e.state))}}function cd(e,a){return Array.isArray(a)?a.map(t=>Ye(t)?{...t}:t):Ye(a)?e==="columnPinning"||e==="rowPinning"?{...e==="columnPinning"?{left:Array.isArray(a.left)?[...a.left]:void 0,right:Array.isArray(a.right)?[...a.right]:void 0}:{top:Array.isArray(a.top)?[...a.top]:void 0,bottom:Array.isArray(a.bottom)?[...a.bottom]:void 0}}:{...a}:a}function ud(e){if(Array.isArray(e))return e.filter(a=>Ye(a)&&typeof a.id=="string").map(a=>({id:a.id,desc:!!a.desc}))}function pd(e){if(!(!Ye(e)||!Number.isInteger(e.pageIndex)||e.pageIndex<0||!Number.isInteger(e.pageSize)||e.pageSize<1))return {pageIndex:e.pageIndex,pageSize:e.pageSize}}function gd(e){if(Array.isArray(e))return e.filter(a=>Ye(a)&&typeof a.id=="string"&&Object.prototype.hasOwnProperty.call(a,"value")).map(a=>({id:a.id,value:a.value}))}function md(e){if(Ye(e))return {left:lt(e.left)??[],right:lt(e.right)??[]}}function bd(e){if(Ye(e))return {top:lt(e.top)??[],bottom:lt(e.bottom)??[]}}function Kn(e){if(Ye(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="boolean"))}function fd(e){if(Ye(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 qn(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 Td(){return typeof globalThis.crypto?.randomUUID=="function"?globalThis.crypto.randomUUID():(Xi+=1,`view-${Date.now().toString(36)}-${Xi.toString(36)}`)}function Yn(e){return `${ld}${e}`}function Ye(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ir({columns:e,currentColumnFilters:a,currentColumnPinning:t,effectiveColumnVisibility:o,enableColumnFilters:r,handleColumnFiltersChange:l$2,handleColumnPinningChange:d,labels:p$1,table:u,toolbarActions:y,visibleData:V,csvExport:S}){let z=D.useMemo(()=>k(e).map(({column:s$1,index:C$1})=>{let m=s(s$1,C$1),v=s$1.header,N=u$1(s$1),w=typeof v=="string"?v:N?C(N):C(m),G=t.left?.includes(m)===true?"left":t.right?.includes(m)===true?"right":false;return {id:m,label:w,visible:o[m]!==false,canHide:s$1.enableHiding!==false,pinned:G}}),[e,t,o]),M=D.useMemo(()=>r===false?[]:k(e).flatMap(({column:s$1,index:C$1})=>{let m=s$1.meta?.filter;if(!m)return [];let v=s(s$1,C$1),N=s$1.header,w=u$1(s$1),G=m.label??(typeof N=="string"?N:w?C(w):C(v)),W=a.find(f=>f.id===v),_=m.faceting?.options,U=m.type==="numberRange"?u.getColumn(v)?.getFacetedMinMaxValues():void 0,R=m.type==="faceted"&&_?typeof _=="function"?_({rows:V}):_:m.type==="faceted"?Array.from(u.getColumn(v)?.getFacetedUniqueValues()??[]).map(([f,x])=>({label:m.faceting?.getOptionLabel?.(f)??String(f),value:String(f),count:x})):typeof m.options=="function"?m.options({rows:V}):m.options??[];return [{id:v,label:G,type:m.type,value:W?.value,placeholder:m.placeholder,options:l(R),searchable:m.faceting?.searchable,searchPlaceholder:m.faceting?.searchPlaceholder,trueLabel:m.trueLabel,falseLabel:m.falseLabel,min:m.min??U?.[0],max:m.max??U?.[1],step:m.step}]}),[e,a,r,u,V]),$=D.useCallback((s,C)=>{l$2(m=>{let v=m.filter(N=>N.id!==s);return n(C)&&v.push({id:s,value:C}),v});},[l$2]),J=D.useCallback(()=>{l$2([]);},[l$2]),F=D.useCallback((s,C)=>{d(m=>{let v=(m.left??[]).filter(w=>w!==s),N=(m.right??[]).filter(w=>w!==s);return C==="left"&&v.push(s),C==="right"&&N.push(s),{left:v,right:N}});},[d]),g=D.useCallback(()=>{if(S)return p({csvExport:S,table:u,labels:p$1})},[S,p$1,u]),T=D.useMemo(()=>S?[...y??[],{key:"__csv_export__",label:p$1.exportCsv,icon:l$1,placement:"trailing",onClick:g}]:y??[],[S,g,p$1.exportCsv,y]);return {columnVisibilityOptions:z,effectiveToolbarActions:T,handleClearColumnFilters:J,handleToolbarColumnFilterChange:$,handleToolbarColumnPinningChange:F,toolbarColumnFilters:M}}function lr({columns:e,data:a,getRowId:t}){let o=D.useRef({columns:e,data:a,getRowId:t}),r=D.useRef(new Set);D.useEffect(()=>{if(!Dd())return;let l=o.current;l.data!==a&&rr(l.data,a)&&!r.current.has("data")&&Xt(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&&rr(l.columns,e)&&!r.current.has("columns")&&Xt(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!==t&&!r.current.has("getRowId")&&Xt(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 p=0;pObject.is(t,a[o]))}function Xt(e,a,t){e.add(a),console.warn(`[data-table-pro] ${t}`);}function Dd(){return globalThis.process?.env?.NODE_ENV!=="production"}var Cd=D.lazy(()=>import('./data-table-auto-page-size-EICVZJQ5.js'));function Du(e){return yd(e)}function yd(e,a={}){let t$1=a.CardPanel??Ci,o=a.TablePanel??Ji,r$1=e.classNames??{},{rootClassName:l,Button:d,Checkbox:p$1,Input:u,ScrollArea:y,ScrollBar:V,Skeleton:S,Table:z,TableBody:M,TableCell:$,TableFooter:J="tfoot",TableHead:F,TableHeader:g$1,TableRow:T,Tooltip:s$1,TooltipContent:C,TooltipProvider:m=D.Fragment,TooltipTrigger:v}=e,N=ji(e),w=Qi(e),{DataTableFooter:G}=Ki(e),W=Yi(e),_=$i(e,w),U=D.lazy(async()=>{let{createDataTableStateOverlay:f}=await import('./data-table-state-overlay-AQ7VU6EM.js');return {default:f(e)}}),R={minSize:80,size:180,maxSize:720};return function({columns:x,data:k$1,getRowId:A,children:Q,title:P,description:q,toolbarQueryValue:j,onToolbarQueryValueChange:E,toolbarQueryPlaceholder:Z,toolbarQueryDebounceMs:re,manualFiltering:Re=false,enableToolbarQueryFiltering:Se=true,globalFilterFn:ke,columnFilters:Ee,onColumnFiltersChange:Ce,enableColumnFilters:Ae,customToolbar:Ge,compactToolbar:X,rowsPerPageOptions:ve=[10,20,50,100],totalRowCount:L,hasNextPage:ye,sorting:We,onSortingChange:Xe,manualSorting:Ze=false,grouping:ia,onGroupingChange:ge,manualGrouping:ra=false,enableGrouping:Qe=false,groupedColumnMode:ba="reorder",aggregationFns:$e,pageIndex:ea,pageSize:fa,autoPageSize:aa=false,onPageIndexChange:Ta,onPageSizeChange:fe,pageCount:la,manualPagination:Ie=false,rowSelection:Da,onRowSelectionChange:Pe,enableRowSelection:Fe=false,enableMultiRowSelection:Pa=true,enableSubRowSelection:xa=true,getRowCanSelect:sa,rowSelectionSelectAllScope:ka="page",expanded:wa,onExpandedChange:me,getSubRows:Ne,manualExpanding:da=false,paginateExpandedRows:Ea,filterFromLeafRows:Ue,maxLeafRowFilterDepth:Ca,detailPanel:ca,getRowCanExpand:ze,renderExpandedRow:ua,columnOrder:ya,onColumnOrderChange:Fa,enableColumnReordering:qe=false,columnGroupHeaderHeight:Va,columnPinning:je,onColumnPinningChange:pa,enableColumnPinning:Ha=false,rowPinning:Ke,onRowPinningChange:Ma,enableRowPinning:Aa=false,keepPinnedRows:i=true,toolbarActions:H=[],selectionActions:ne=[],rowActions:b=[],csvExport:I,clipboard:K,enableCellSelection:de=false,cellSelection:le,defaultCellSelection:oe,onCellSelectionChange:Ba,gridCommands:ta,density:Ia,onDensityChange:Zt,enableDensityToggle:en=false,columnPrefsKey:B,persistence:Ve,savedViews:ce,toolbarDataOperations:ga,initialState:te,state:be,onStateChange:he,apiRef:cr,labels:Xn,summaryRows:ur=[],cardRenderer:an,cardSizing:pr,cardGridClassName:gr,cardClassName:mr,viewMode:Zn,onViewModeChange:br,enableViewToggle:fr=false,enablePrint:eo=false,enableFullscreen:Ct=false,emptyState:Tr,stateOverlay:Qa,isLoading:ao=false,loadingRowCount:Dr,getRowLoadingState:wr,hiddenRows:to,showHiddenRows:no,onShowHiddenRowsChange:Cr,infiniteScroll:yt,editableRows:za,columnVisibility:oo,onColumnVisibilityChange:yr,columnSizing:io,onColumnSizingChange:hr,enableColumnResizing:ro=false,columnResizeMode:Rr="onEnd",layoutMode:ht="fill",stickyHeader:Sr=true,scrollbarVisibility:lo,showFooter:vr=true,showToolbar:so=true,dir:tn="ltr",flexGrow:qa=true,toolbarVisibility:co,className:Pr,tableClassName:xr,tableContainerClassName:uo,stripedRows:po=false,getRowClassName:go,onRowClick:nn,onActionError:st,dragAndDrop:Ya,fileUpload:ha,virtualization:on,accessibility:mo,interactiveGrid:Rt}){let Ga=D.useRef(null),bo=D.useRef(null),fo=D.useRef(null),kr=D.useRef(null),rn=D.useRef(null),Er=D.useRef(null),[To,ln]=D.useState(0),Fr=D.useId(),Vr=D.useId();lr({columns:x,data:k$1,getRowId:A}),D.useMemo(()=>t(x),[x]);let Me=D.useMemo(()=>Si(Xn),[Xn]),sn=ga===true?{columnChooser:true,savedViews:true,resetLayout:true}:ga===false?{}:ga??{},dn=mo?.mode==="grid"||Rt===true||typeof Rt=="object",[La,St]=xe({defaultValue:oe??null,onChange:Ba,value:le}),Mr=j??be?.globalFilter,Ar=We??be?.sorting,Ir=ia??be?.grouping,vt=ea??be?.pagination?.pageIndex,Ja=fa??be?.pagination?.pageSize,zr=Da??be?.rowSelection,Lr=oo??be?.columnVisibility,Nr=Ee??be?.columnFilters,Or=wa??be?.expanded,_r=ya??be?.columnOrder,Hr=je??be?.columnPinning,Br=Ke??be?.rowPinning,Gr=io??be?.columnSizing,$r=Ia??be?.density,Ur=Zn??be?.viewMode,jr=no??be?.showHiddenRows,Do=so&&(co?.title??true),wo=Do&&P?Fr:void 0,Co=Do&&q?Vr:void 0;Rd(be,{columnFilters:Ee!==void 0,columnOrder:ya!==void 0,columnPinning:je!==void 0,rowPinning:Ke!==void 0,columnSizing:io!==void 0,columnVisibility:oo!==void 0,density:Ia!==void 0,expanded:wa!==void 0,grouping:ia!==void 0,globalFilter:j!==void 0,pagination:ea!==void 0||fa!==void 0,rowSelection:Da!==void 0,showHiddenRows:no!==void 0,sorting:We!==void 0,viewMode:Zn!==void 0});let Kr=Be("globalFilter",E,he),Wr=Be("sorting",Xe,he),Qr=Be("grouping",ge,he),qr=Be("rowSelection",Pe,he),Yr=Be("columnVisibility",yr,he),Jr=Be("columnFilters",Ce,he),Xr=Be("expanded",me,he),Zr=Be("columnOrder",Fa,he),el=Be("columnPinning",pa,he),al=Be("rowPinning",Ma,he),tl=Be("columnSizing",hr,he),nl=Be("density",Zt,he),ol=Be("viewMode",br,he),il=Be("showHiddenRows",Cr,he),Pt=D.useCallback(n=>{Ta?.(n),he?.(h=>({...h,pagination:{pageIndex:n,pageSize:Ja??h.pagination.pageSize}}));},[Ta,he,Ja]),cn=D.useCallback(n=>{fe?.(n),he?.(h=>({...h,pagination:{pageIndex:vt??h.pagination.pageIndex,pageSize:n}}));},[fe,he,vt]),Le=D.useCallback((n,h)=>{hd(h,n,st);},[st]),yo=D.useMemo(()=>b.map(n=>({...n,onClick:h=>{Le({actionKey:n.key,row:h,source:"rowAction"},()=>n.onClick(h));}})),[b,Le]),ho=D.useMemo(()=>nn?n=>{Le({row:n.row,source:"rowClick"},()=>nn(n));}:void 0,[nn,Le]),rl=D.useCallback((n,h)=>{st?.({error:n,row:h,source:"edit"});},[st]),{containerWidth:ll,currentColumnFilters:xt,currentColumnOrder:un,currentColumnPinning:kt,currentRowPinning:pn,currentColumnSizing:Xa,currentColumnVisibility:Ro,currentDensity:dt,currentExpanded:Et,currentGrouping:gn,currentPagination:na,currentRowSelection:Ft,currentShowHiddenRows:mn,currentSorting:Vt,currentViewMode:Za,effectiveColumnVisibility:Mt,globalFilterValue:sl,handleDensityChange:bn,handleShowHiddenRowsChange:fn,handleViewModeChange:Tn,localSearchValue:$a,resolvedLoadingRowCount:dl,resolvedToolbarQueryPlaceholder:cl,selectedRowIds:ul,selectedRows:pl,setCurrentColumnFilters:So,setCurrentColumnOrder:gl,setCurrentColumnPinning:At,setCurrentRowPinning:ml,setCurrentColumnVisibility:bl,setCurrentExpanded:vo,setCurrentGrouping:fl,setCurrentRowSelection:It,setCurrentSorting:Tl,setLocalColumnSizing:Dl,setLocalPagination:Dn,setLocalSearchValue:wn,shouldRenderInitialLoading:Cn,tableData:wl,tableGetRowId:Cl,visibleData:yl}=_i({columnFilters:Nr,columnOrder:_r,columnPinning:Hr,rowPinning:Br,columnSizing:Gr,columnPrefsKey:B,persistence:Ve,columnVisibility:Lr,columns:x,containerRef:Ga,data:k$1,density:$r,enableRowSelection:Fe,enableToolbarQueryFiltering:Se,expanded:Or,grouping:Ir,getSubRows:Ne,getRowId:A,hiddenRows:to,isLoading:ao,loadingRowCount:Dr,manualFiltering:Re,initialState:te,onColumnFiltersChange:Jr,onColumnOrderChange:Zr,onColumnPinningChange:el,onRowPinningChange:al,onColumnSizingChange:tl,onColumnVisibilityChange:Yr,onDensityChange:nl,onExpandedChange:Xr,onGroupingChange:Qr,onPageIndexChange:Pt,onRowSelectionChange:qr,onShowHiddenRowsChange:il,onSortingChange:Wr,onToolbarQueryValueChange:Kr,onViewModeChange:ol,pageIndex:vt,pageSize:Ja,resolvedLabels:Me,rowSelection:zr,rowsPerPageOptions:ve,selectionActions:ne,showHiddenRows:jr,sorting:Ar,toolbarQueryDebounceMs:re,toolbarQueryPlaceholder:Z,toolbarQueryValue:Mr,viewMode:Ur}),yn=!!(ua&&!ca&&!Ne),et=ca??(ua?{getRowCanExpand:Ne?void 0:ze,render:ua}:void 0),[hn,Po]=xe({defaultValue:()=>yn?te?.expanded??{}:{},onChange:yn?vo:et?.onExpandedChange,value:yn?Et:et?.expanded}),{cancelEditing:Rn,clearEditError:xo,draftValues:hl,editErrors:Sn,editingRowId:vn,isEditDirty:Pn,isSavingEdit:xn,saveEdit:kn,setDraftValues:Rl,setEditingRowId:Sl,startEditingRow:vl}=a$3({columns:x,editableRows:za,onError:rl}),Pl=D.useMemo(()=>({cancel:Rn,cancelOnEscape:za?.cancelOnEscape!==false,clearError:xo,commit:n=>{kn(n);},commitOnEnter:za?.commitOnEnter!==false,errors:Sn,isDirty:Pn,isPending:xn}),[Rn,xo,za?.cancelOnEscape,za?.commitOnEnter,Sn,Pn,xn,kn]),{viewportElement:En,viewportHeight:Fn}=a$4(fo,Za),ko=typeof aa=="object"?aa:void 0,xl=D.useCallback(n=>{n!==na.pageSize&&(na.pageIndex!==0&&Pt(0),cn(n),Ja===void 0&&Dn({pageIndex:0,pageSize:n}));},[na.pageIndex,na.pageSize,Pt,cn,Ja,Dn]),kl=aa===true||ko!==void 0,zt=D.useCallback(()=>typeof window>"u"||typeof window.print!="function"?false:(window.print(),true),[]),Lt=D.useCallback(async()=>{let n=Ga.current;return !n||typeof document>"u"?false:document.fullscreenElement?typeof document.exitFullscreen!="function"?false:(await document.exitFullscreen(),true):typeof n.requestFullscreen!="function"?false:(await n.requestFullscreen(),true)},[]),[Eo,El]=D.useState(false);D.useEffect(()=>{if(!Ct||typeof document>"u")return;let n=()=>{El(document.fullscreenElement===Ga.current);};return n(),document.addEventListener("fullscreenchange",n),()=>document.removeEventListener("fullscreenchange",n)},[Ct]);let Fl=D.useCallback(()=>{ha?.disabled||bo.current?.click();},[ha?.disabled]),Vl=D.useCallback(n=>{Le({source:"fileUpload"},()=>ha?.onFilesSelected(n));},[ha,Le]),Ml=D.useMemo(()=>{if(ht!=="fill")return false;let n=k(x).filter(({column:h,index:se})=>Mt[s(h,se)]!==false);return n.length>0&&n.every(({column:h,index:se})=>{let ut=s(h,se);return g(h)||Object.prototype.hasOwnProperty.call(Xa,ut)})},[x,Xa,Mt,ht]),Al=vi({Button:d,Checkbox:p$1,DataTableRowActions:w,Tooltip:s$1,TooltipContent:C,TooltipTrigger:v,cancelEditing:Rn,columns:x,editableRows:za,editErrors:Sn,editingRowId:vn,enableRowSelection:Fe,enableRowPinning:Aa,hasTreeExpansion:!!Ne,isSavingEdit:xn,isEditDirty:Pn,includeFillSpacer:Ml,labels:Me,lastSelectedRowIdRef:Er,detailPanel:et,detailExpanded:hn,onDetailExpandedChange:Po,rowSelectionSelectAllScope:ka,rowActions:yo,saveEdit:kn,startEditingRow:vl,tableRef:rn}),Il=D.useMemo(()=>i$1(x),[x]),{effectivePageCount:zl,footerTotalRowCount:Ll,handleFooterPageIndexChange:Nl,handleFooterPageSizeChange:Ol,isPageCountKnown:_l,renderedRows:Fo,topPinnedRows:Hl,bottomPinnedRows:Bl,reorderColumn:Vo,rowsToRender:Gl,sentinelRef:Mo,table:ae,virtualPaddingBottom:$l,virtualPaddingTop:Ul,visibleLeafColumns:Vn}=Vi({autoResetPageIndex:false,columnGroupPaths:Il,columnResizeMode:Rr,dir:tn,currentColumnFilters:xt,currentColumnOrder:un,currentColumnPinning:kt,currentRowPinning:pn,currentColumnSizing:Xa,currentExpanded:Et,currentGrouping:gn,currentPagination:na,currentRowSelection:Ft,currentSorting:Vt,currentViewMode:Za,defaultColumn:R,effectiveColumnVisibility:Mt,enableColumnResizing:ro,enableRowPinning:Aa,enableRowSelection:Fe,enableMultiRowSelection:Pa,enableSubRowSelection:xa,getRowCanSelect:sa,getRowCanExpand:ze,getSubRows:Ne,aggregationFns:$e,groupedColumnMode:ba,globalFilterFn:ke,globalFilterValue:sl,hasNextPage:ye,handleColumnFiltersChange:So,handleColumnOrderChange:gl,handleColumnPinningChange:At,handleRowPinningChange:ml,handleColumnVisibilityChange:bl,handleExpandedChange:vo,handleGroupingChange:fl,infiniteScroll:yt,keepPinnedRows:i,manualFiltering:Re,manualGrouping:ra,manualExpanding:da,manualPagination:Ie,manualSorting:Ze,onActionError:st,onPageIndexChange:Pt,onPageSizeChange:cn,pageCount:la,pageIndex:vt,pageSize:Ja,paginateExpandedRows:Ea,filterFromLeafRows:Ue,maxLeafRowFilterDepth:Ca,setCurrentRowSelection:It,setCurrentSorting:Tl,setLocalColumnSizing:Dl,setLocalPagination:Dn,shouldRenderInitialLoading:Cn,tableColumns:Al,tableData:wl,tableGetRowId:Cl,tableRef:rn,totalRowCount:L,virtualization:on}),Ao=Bi({columns:x,columnSizing:Xa,editableRows:!!za,enableRowSelection:Fe,hasRowActions:b.length>0,hasRowExpansion:!!(Ne||et),layoutMode:ht,uiClassNames:r$1,visibleLeafColumns:Vn}),{explicitlySizedColumnIds:Nt,fillMinWidth:jl,getColumnLayout:Kl}=Ao,Wl=D.useMemo(()=>new Set(k(x).flatMap(({column:n,index:h})=>Object.prototype.hasOwnProperty.call(n,"cell")&&typeof n.cell=="function"?[s(n,h)]:[])),[x]),Ql=Vn.length,ql=D.useMemo(()=>({Checkbox:p$1,Input:u,Skeleton:S,TableCell:$,TableRow:T}),[]),Yl=D.useMemo(()=>k(x).some(({column:n})=>n.meta?.cardTitle),[x]),Jl=D.useCallback((n,h)=>{Nt.has(n)||Object.prototype.hasOwnProperty.call(ae.store.state.columnSizing,n)||flushSync(()=>{ae.setColumnSizing(se=>({...se,[n]:h}));});},[Nt,ae]),Xl=D.useCallback(n=>{if(Nt.has(n)){ae.getColumn(n)?.resetSize();return}ae.setColumnSizing(h=>{if(!Object.prototype.hasOwnProperty.call(h,n))return h;let se={...h};return delete se[n],se});},[Nt,ae]),Mn=ae.getFilteredRowModel().rows.map(n=>n.original),An=Qa?.empty??Tr,Io=typeof An=="function"?An({rows:Mn,toolbarQueryValue:$a}):An,zo=D.useMemo(()=>Qa?{...Qa,onRetry:Qa.onRetry?()=>Le({source:"retry"},Qa.onRetry):void 0}:void 0,[Le,Qa]),Lo=zo?.error!=null?jsx(D.Suspense,{fallback:null,children:jsx(U,{labels:Me,overlay:zo,rows:Mn,toolbarQueryValue:$a})}):void 0,{columnVisibilityOptions:Zl,effectiveToolbarActions:No,handleClearColumnFilters:es,handleToolbarColumnFilterChange:as,handleToolbarColumnPinningChange:ts,toolbarColumnFilters:ns}=ir({columns:x,currentColumnFilters:xt,currentColumnPinning:kt,csvExport:I,effectiveColumnVisibility:Mt,enableColumnFilters:Ae,handleColumnFiltersChange:So,handleColumnPinningChange:At,labels:Me,table:ae,toolbarActions:H,visibleData:yl}),os=D.useMemo(()=>[...No,...eo?[{key:"__print__",label:Me.print,placement:"trailing",onClick:()=>{zt();}}]:[],...Ct?[{key:"__fullscreen__",label:Eo?Me.exitFullscreen:Me.enterFullscreen,placement:"trailing",onClick:()=>Lt()}]:[]].map(n=>({...n,onClick:h=>{Le({actionKey:n.key,source:"toolbarAction"},()=>n.onClick(h));}})),[No,Ct,eo,Eo,zt,Me.enterFullscreen,Me.exitFullscreen,Me.print,Le,Lt]),is=D.useMemo(()=>ne.map(n=>({...n,onClick:h=>{Le({actionKey:n.key,source:"selectionAction"},()=>n.onClick(h));}})),[Le,ne]),Oo=D.useMemo(()=>({sorting:Vt,pagination:na,rowSelection:Ft,columnVisibility:Ro,columnFilters:xt,expanded:Et,grouping:gn,columnOrder:un,columnPinning:kt,rowPinning:pn,columnSizing:Xa,density:dt,viewMode:Za,showHiddenRows:mn,globalFilter:$a}),[xt,un,kt,pn,Xa,Ro,dt,Et,gn,na,Ft,mn,Vt,Za,$a]),ct=D.useCallback(()=>vd(Oo),[Oo]),Na=D.useCallback(n=>{n.sorting!==void 0&&ae.setSorting(n.sorting),n.pagination!==void 0&&ae.setPagination(n.pagination),n.rowSelection!==void 0&&It(n.rowSelection),n.columnVisibility!==void 0&&ae.setColumnVisibility(n.columnVisibility),n.columnFilters!==void 0&&ae.setColumnFilters(n.columnFilters),n.expanded!==void 0&&ae.setExpanded(n.expanded),n.grouping!==void 0&&ae.setGrouping(n.grouping),n.columnOrder!==void 0&&ae.setColumnOrder(n.columnOrder),n.columnPinning!==void 0&&At(n.columnPinning),n.rowPinning!==void 0&&ae.setRowPinning(n.rowPinning),n.columnSizing!==void 0&&ae.setColumnSizing(n.columnSizing),n.density!==void 0&&bn(n.density),n.viewMode!==void 0&&Tn(n.viewMode),n.showHiddenRows!==void 0&&fn(n.showHiddenRows),n.globalFilter!==void 0&&wn(n.globalFilter);},[bn,fn,Tn,wn,At,It,ae]),at=D.useCallback(()=>zi(Ve??B),[B,Ve]),In=D.useCallback(n=>{n?.clearPersistence&&at(),Na({columnVisibility:te?.columnVisibility??{},columnOrder:te?.columnOrder??[],columnPinning:te?.columnPinning??r(x),rowPinning:te?.rowPinning??{top:[],bottom:[]},columnSizing:te?.columnSizing??{}});},[at,x,te,Na]),_o=D.useCallback(n=>{n?.clearPersistence&&at(),Na({sorting:te?.sorting??[],pagination:te?.pagination??{pageIndex:0,pageSize:ve[0]??20},rowSelection:te?.rowSelection??{},columnVisibility:te?.columnVisibility??{},columnFilters:te?.columnFilters??[],expanded:te?.expanded??{},grouping:te?.grouping??[],columnOrder:te?.columnOrder??[],columnPinning:te?.columnPinning??r(x),rowPinning:te?.rowPinning??{top:[],bottom:[]},columnSizing:te?.columnSizing??{},density:te?.density??"comfortable",viewMode:te?.viewMode??"table",showHiddenRows:te?.showHiddenRows??false,globalFilter:te?.globalFilter??""});},[at,x,te,Na,ve]),Ho=D.useCallback(()=>Wa(ce),[ce]),Ot=D.useCallback(n=>er(ce,n,ct()),[ct,ce]),zn=D.useCallback(n=>{let h=Wa(ce).find(se=>se.id===n);return h?(Na(h.state),ce?.onApply?.(h),true):false},[Na,ce]),_t=D.useCallback((n,h)=>ar(ce,n,h),[ce]),Ht=D.useCallback(n=>tr(ce,n),[ce]),Bo=D.useCallback(()=>nr(ce),[ce]),rs=D.useMemo(()=>Wa(ce),[ce,To]),ls=D.useCallback(n=>{let h=Ot(n);return h&&ln(se=>se+1),h},[Ot]),ss=D.useCallback((n,h)=>{let se=_t(n,h);return se&&ln(ut=>ut+1),se},[_t]),ds=D.useCallback(n=>{let h=Ht(n);return h&&ln(se=>se+1),h},[Ht]),Go=D.useCallback(n=>p({csvExport:n??(I||true),labels:Me,table:ae}),[I,Me,ae]),Ln=D.useCallback(async n=>{let{copyDataTableToClipboard:h}=await import('./data-table-clipboard-RNEFAPJB.js');return h({clipboard:n??(K?.copy===false?false:La?{...K?.copy===true?{}:K?.copy,scope:"cellSelection"}:K?.copy??true),cellSelection:La,table:ae})},[K?.copy,La,ae]),$o=D.useCallback((n,h="top")=>{try{let se=ae.getRow(n,!0);return se.getCanPin()?(se.pin(h),!0):!1}catch{return false}},[ae]),Uo=D.useCallback(n=>{try{let h=ae.getRow(n,!0);return h.getCanPin()?(h.pin(!1),!0):!1}catch{return false}},[ae]);return D.useImperativeHandle(cr,()=>({getTable:()=>rn.current,getState:ct,snapshot:ct,restore:Na,resetColumnLayout:In,resetState:_o,clearPersistedState:at,getSavedViews:Ho,createSavedView:Ot,applySavedView:zn,renameSavedView:_t,deleteSavedView:Ht,clearSavedViews:Bo,pinRow:$o,unpinRow:Uo,focus:()=>{Ga.current?.focus();},scrollToRow:n=>sr(Ga.current,"row",n),scrollToColumn:n=>sr(Ga.current,"column",n),exportCsv:Go,copyToClipboard:Ln,getCellSelection:()=>La,setCellSelection:St,clearCellSelection:()=>St(null),print:zt,toggleFullscreen:Lt}),[zn,at,Bo,Ln,La,Ot,Ht,Go,Ho,ct,_t,In,_o,Na,$o,zt,St,Uo,Lt]),jsx(m,{children:jsxs("div",{ref:Ga,"data-dtp-slot":"data-table-root","data-density":dt,"data-dtp-striped-rows":po||void 0,"aria-busy":ao||void 0,dir:tn,tabIndex:-1,className:a$2("@container/data-table data-table-container-query flex w-full min-w-0 flex-col",qa?"h-full min-h-0 flex-1":"grow",l),onDragEnter:Ya?.onDragEnter,onDragOver:Ya?.onDragOver,onDragLeave:Ya?.onDragLeave,onDrop:Ya?.onDrop,onKeyDown:n=>{if(dn&&ta&&(n.ctrlKey||n.metaKey)&&n.key.toLowerCase()==="z"&&!Jn(n.target)){let h=n.shiftKey?ta.redo:ta.undo;h&&(n.preventDefault(),Le({source:n.shiftKey?"redo":"undo"},()=>h({cellSelection:La,table:ae})));return}!K?.copy||!(n.ctrlKey||n.metaKey)||n.key.toLowerCase()!=="c"||Jn(n.target)||(n.preventDefault(),Le({source:"clipboardCopy"},async()=>{await Ln(K.copy===true?void 0:La&&typeof K.copy=="object"&&!K.copy.scope?{...K.copy,scope:"cellSelection"}:K.copy);}));},onPaste:n=>{let h=K?.paste;if(!h||h.enabled===false||Jn(n.target))return;let se=n.clipboardData.getData("text/plain");se&&((h.preventDefault??true)&&n.preventDefault(),Le({source:"clipboardPaste"},async()=>{let{parseDataTableClipboardText:ut}=await import('./data-table-clipboard-RNEFAPJB.js');return h.onPaste({table:ae,text:se,values:ut(se)})}));},children:[kl?jsx(D.Suspense,{fallback:null,children:jsx(Cd,{config:ko,currentPageSize:na.pageSize,enabled:true,onPageSizeChange:xl,viewportElement:En,viewportHeight:Fn})}):null,ha?jsx("input",{ref:bo,className:"hidden",type:"file",accept:ha.accept,multiple:ha.multiple??true,disabled:ha.disabled,onChange:n=>{let h=n.currentTarget.files;h?.length&&Vl(h),n.currentTarget.value="";}}):null,jsx("div",{"data-dtp-slot":"data-table-layout",className:a$2("flex w-full flex-col",qa?"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",qa?"min-h-0 flex-1":"grow",Pr),children:[so?jsx(Ri,{allRows:Mn,columnFilters:ns,columnVisibilityOptions:Zl,compactToolbar:X,customToolbar:Ge,DataTableToolbar:W,density:dt,description:q,descriptionId:Co,effectiveToolbarActions:os,enableColumnPinning:Ha,enableGrouping:Qe,enableToolbarColumnChooser:sn.columnChooser===true,enableToolbarFilterChips:!!ga,enableToolbarResetLayout:sn.resetLayout===true,enableToolbarSavedViews:sn.savedViews===true&&!!ce,enableDensityToggle:en,enableViewToggle:fr&&!!an,hiddenRowsLabel:to?.label,labels:Me,onClearColumnFilters:es,onColumnFilterChange:as,onColumnPinningChange:ts,onDensityChange:bn,onShowHiddenRowsChange:fn,onToolbarQueryValueChange:wn,reorderColumn:Vo,onResetColumnLayout:In,onCreateSavedView:ls,onApplySavedView:zn,onRenameSavedView:ss,onDeleteSavedView:ds,onViewModeChange:Tn,openFileDialog:ha?Fl:void 0,selectedRowIds:ul,selectedRows:pl,selectionActions:is,savedViews:rs,showHiddenRows:mn,table:ae,title:P,titleId:wo,toolbarQueryPlaceholder:cl,toolbarQueryValue:$a,toolbarVisibility:co,viewMode:Za}):null,jsx("div",{"data-dtp-slot":"data-table-content",className:a$2(qa?"flex min-h-0 flex-1 flex-col":""),children:Za==="card"&&an?jsx(t$1,{cardClassName:mr,cardGridClassName:gr,cardSizing:pr,cardRenderer:an,containerWidth:ll,currentDetailExpanded:hn,currentRowSelection:Ft,DataTableCardView:_,DataTableEmptyState:N,dragAndDrop:Ya,editableRows:za,editingRowId:vn,emptyNode:Io,stateOverlayNode:Lo,enableRowSelection:Fe,flexGrow:qa,getRowClassName:go,hasCardTitle:Yl,infiniteScroll:yt,localSearchValue:$a,onRowClick:ho,renderedRows:Fo,detailPanel:et,resolvedLabels:Me,resolvedLoadingRowCount:dl,rowActions:yo,ScrollArea:y,scrollbarVisibility:lo,sentinelRef:Mo,setCurrentDetailExpanded:Po,setCurrentRowSelection:It,setEditingRowId:Sl,shouldRenderInitialLoading:Cn,tableContainerClassName:uo,uiClassNames:r$1,virtualization:on}):jsx(o,{ariaDescribedBy:Co,ariaLabelledBy:wo,bodyRowComponents:ql,columnLayouts:Ao.columnLayouts,currentDensity:dt,columnGroupHeaderHeight:Va,currentDetailExpanded:hn,currentSorting:Vt,dir:tn,DataTableEmptyState:N,dragAndDrop:Ya,draggedColumnIdRef:kr,draftValues:hl,editingRowId:vn,editingContext:Pl,emptyNode:Io,stateOverlayNode:Lo,enableColumnReordering:qe,enableColumnResizing:ro,explicitCustomCellColumnIds:Wl,fillMinWidth:jl,flexGrow:qa,getColumnLayout:Kl,getRowClassName:go,getRowLoadingState:wr,infiniteScroll:yt,layoutMode:ht,localSearchValue:$a,onRowClick:ho,primeColumnForResize:Jl,renderedRows:Fo,detailPanel:et,topPinnedRows:Hl,bottomPinnedRows:Bl,reorderColumn:Vo,resetColumnSize:Xl,resolvedLabels:Me,rowsToRender:Gl,ScrollArea:y,ScrollBar:V,scrollbarVisibility:lo,sentinelRef:Mo,setDraftValues:Rl,shouldRenderInitialLoading:Cn,stickyHeader:Sr,stripedRows:po,summaryRows:ur,table:ae,tableClassName:xr,tableContainerClassName:uo,Table:z,TableBody:M,TableCell:$,TableFooter:J,TableHead:F,TableHeader:g$1,TableRow:T,tableScrollContainerRef:fo,tableScrollElement:En,uiClassNames:r$1,viewportHeight:Fn,virtualization:on,gridMode:dn,gridPageSize:mo?.pageSize??(typeof Rt=="object"?Rt.pageSize:void 0),cellSelectionEnabled:dn&&(de||le!==void 0||oe!==void 0),cellSelection:La,onCellSelectionChange:St,gridRowOffset:Ie?na.pageIndex*na.pageSize:0,totalRowCount:L,virtualPaddingBottom:$l,virtualPaddingTop:Ul,visibleLeafColumnCount:Ql,visibleLeafColumns:Vn})}),jsx(yi,{currentPagination:na,DataTableFooter:G,effectivePageCount:zl,footerTotalRowCount:Ll,handleFooterPageIndexChange:Nl,handleFooterPageSizeChange:Ol,labels:Me,pageCountKnown:_l,rowsPerPageOptions:ve,showFooter:vr&&!yt?.enabled,children:Q})]})})]})})}}function hd(e,a,t){let o;try{o=e();}catch(r){t?.({...a,error:r});return}Promise.resolve(o).catch(r=>{t?.({...a,error:r});});}function Be(e,a,t){let o=D.useCallback(r=>{a?.(r),t?.(l=>({...l,[e]:r}));},[e,a,t]);return a||t?o:void 0}function Rd(e,a){let t=D.useRef(new Set);D.useEffect(()=>{if(!(!e||!Sd()))for(let o of Object.keys(a))e[o]===void 0||!a[o]||t.current.has(o)||(t.current.add(o),console.warn(`[data-table-pro] Both state.${o} and its legacy controlled prop were provided. The legacy prop takes precedence during the 4.x compatibility window.`));},[a,e]);}function Sd(){return globalThis.process?.env?.NODE_ENV!=="production"}function vd(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},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],bottom:[...e.rowPinning.bottom]},columnSizing:{...e.columnSizing},density:e.density,viewMode:e.viewMode,showHiddenRows:e.showHiddenRows,globalFilter:e.globalFilter}}function sr(e,a,t){if(!e)return false;let o=a==="row"?"data-row-id":"data-column-id",r=Array.from(e.querySelectorAll(`[${o}]`)).find(l=>l.getAttribute(o)===t);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{Ci as a,yi as b,Ri as c,vi as d,xe as e,Vi as f,_i as g,Bi as h,Du as i,yd as j};//# sourceMappingURL=chunk-XZTPNWJD.js.map +//# sourceMappingURL=chunk-XZTPNWJD.js.map \ No newline at end of file diff --git a/dist/chunk-XZTPNWJD.js.map b/dist/chunk-XZTPNWJD.js.map new file mode 100644 index 0000000..d503a5b --- /dev/null +++ b/dist/chunk-XZTPNWJD.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/tanstack-v9.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","scrollbarVisibility","sentinelRef","setCurrentDetailExpanded","setCurrentRowSelection","setEditingRowId","shouldRenderInitialLoading","stateOverlayNode","tableContainerClassName","uiClassNames","shouldRenderCards","cardScrollContainerRef","wi","renderCardView","rows","options","jsx","jsxs","cn","LazyDataTableVirtualCardPanel","Wt","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","includeFillSpacer","lastSelectedRowIdRef","detailExpanded","onDetailExpandedChange","rowSelectionSelectAllScope","saveEdit","startEditingRow","tableRef","selectRowRange","qt","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","Oa","currentValue","currentValueRef","setValue","updater","nextValue","useDataTableInfiniteScroll","enabled","hasMore","isLoadingMore","onLoadMore","onError","_a","isRequestInFlightRef","onLoadMoreEvent","onErrorEvent","error","target","observer","entries","result","useDataTablePaginationClamp","maxPageIndex","onPageIndexChange","setLocalPageIndex","xi","nextPageIndex","useDataTableSearchIndex","Ei","valuesByRow","filterValue","query","normalizeDataTableSearchText","original","valuesByColumn","text","createDataTableFeatures","customAggregationFns","tableFeatures","columnFacetingFeature","columnFilteringFeature","globalFilteringFeature","rowAggregationFeature","columnGroupingFeature","columnOrderingFeature","columnPinningFeature","columnSizingFeature","columnResizingFeature","columnVisibilityFeature","rowExpandingFeature","rowPaginationFeature","rowPinningFeature","rowSelectionFeature","rowSortingFeature","createExpandedRowModel","createFacetedMinMaxValues","createFacetedRowModel","createFacetedUniqueValues","createFilteredRowModel","createGroupedRowModel","createPaginatedRowModel","createSortedRowModel","builtInAggregationFns","builtInFilterFns","builtInSortFns","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","De","getDataTableLeafColumns","index","getColumnId","effectiveColumnOrder","columnIds","dataColumnIds","isUtilityColumnId","dataColumnIdSet","orderedDataColumnIds","unorderedDataColumnIds","effectiveColumnPinning","columnIdSet","dataLeft","dataRight","handleTanStackColumnPinningChange","effectiveRowPinning","availableRowIds","visitRows","subRows","top","topIds","bottom","tanStackRowSelection","handleTanStackRowSelectionChange","tableState","handlePaginationChange","handleColumnSizingChange","features","useTable","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","Ka","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","rt","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","Ra","ids","hasExplicitDataTableColumnSize","minimumColumnWidths","widths","configuredMinWidth","getConfiguredColumnMinWidth","pinnedColumns","leftOffset","getFixedSide","getColumnLayoutSize","rightOffset","fixedWidthColumnIds","columnLayouts","layouts","isSelectionColumn","isExpansionColumn","isActionsColumn","isUtilityColumn","isSpacerColumn","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","Wi","IconX","allowEdit","canEditRow","canPin","IconDots","IconEdit","Fragment","Icon","resolveRowActionLabel","LazyToolbarDataOperations","oa","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","Jt","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","va","header","accessorKey","getAccessorKey","startCase","pinned","toolbarColumnFilters","configuredFacetOptions","facetedMinMax","rawOptions","normalizeColumnFilterOptions","handleToolbarColumnFilterChange","hasFilterValue","handleClearColumnFilters","handleToolbarColumnPinningChange","side","handleCsvExport","exportDataTableCsv","IconDownload","useDataTablePerformanceDiagnostics","wt","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","visibleDataColumns","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-XZTPNWJD.js","sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport type { DataTableCardPanelProps } from \"./data-table-card-panel-types\";\nimport type { DataTableTanStackRow as Row } from \"./tanstack-v9\";\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 scrollbarVisibility,\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 {\n DataTableLabels,\n DataTableProps,\n DataTableSavedView,\n} from \"../types\";\nimport type { DataTableTanStackTable as TanStackTable } from \"./tanstack-v9\";\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 ExpandedState,\n OnChangeFn,\n RowPinningPosition,\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\";\nimport type {\n DataTableTanStackColumnDef as ColumnDef,\n DataTableTanStackTable as TanStackTable,\n} from \"./tanstack-v9\";\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 includeFillSpacer = false,\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 includeFillSpacer?: 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 (includeFillSpacer) {\n defs.push({\n id: \"__spacer__\",\n cell: () => null,\n header: () => null,\n enableColumnFilter: false,\n enableGlobalFilter: false,\n enableGrouping: false,\n enableHiding: false,\n enablePinning: false,\n enableResizing: false,\n enableSorting: false,\n minSize: 0,\n size: 0,\n });\n }\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 includeFillSpacer,\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 { normalizeDataTableSearchText } from \"./data-table-utils\";\nimport type {\n DataTableTanStackFilterFn as FilterFn,\n DataTableTanStackRow as Row,\n} from \"./tanstack-v9\";\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 {\n aggregationFns as builtInAggregationFns,\n columnFacetingFeature,\n columnFilteringFeature,\n columnGroupingFeature,\n columnOrderingFeature,\n columnPinningFeature,\n columnResizingFeature,\n columnSizingFeature,\n columnVisibilityFeature,\n createExpandedRowModel,\n createFacetedMinMaxValues,\n createFacetedRowModel,\n createFacetedUniqueValues,\n createFilteredRowModel,\n createGroupedRowModel,\n createPaginatedRowModel,\n createSortedRowModel,\n filterFns as builtInFilterFns,\n globalFilteringFeature,\n rowAggregationFeature,\n rowExpandingFeature,\n rowPaginationFeature,\n rowPinningFeature,\n rowSelectionFeature,\n rowSortingFeature,\n sortFns as builtInSortFns,\n tableFeatures,\n} from \"@tanstack/react-table\";\nimport type {\n AggregationFnDef,\n Cell,\n CellContext,\n Column,\n ColumnDef,\n FilterFn,\n FilterFnOption,\n Header,\n HeaderContext,\n Row,\n RowData,\n Table,\n} from \"@tanstack/react-table\";\n\n/**\n * The v9 feature surface used by every data-table adapter.\n *\n * Keeping this registry in one module makes the new feature generic an\n * implementation detail instead of leaking it through every public type.\n * Function registries remain broad during the migration so existing named\n * column definitions keep working. They can be narrowed once the v9 surface\n * is fully audited.\n */\ntype DataTableAggregationRegistry = Record;\ntype BuiltInFilterFn =\n (typeof builtInFilterFns)[keyof typeof builtInFilterFns];\n\nexport function createDataTableFeatures(\n customAggregationFns: DataTableAggregationRegistry = {},\n) {\n return tableFeatures({\n columnFacetingFeature,\n columnFilteringFeature,\n globalFilteringFeature,\n rowAggregationFeature,\n columnGroupingFeature,\n columnOrderingFeature,\n columnPinningFeature,\n columnSizingFeature,\n columnResizingFeature,\n columnVisibilityFeature,\n rowExpandingFeature,\n rowPaginationFeature,\n rowPinningFeature,\n rowSelectionFeature,\n rowSortingFeature,\n expandedRowModel: createExpandedRowModel(),\n facetedMinMaxValues: createFacetedMinMaxValues(),\n facetedRowModel: createFacetedRowModel(),\n facetedUniqueValues: createFacetedUniqueValues(),\n filteredRowModel: createFilteredRowModel(),\n groupedRowModel: createGroupedRowModel(),\n paginatedRowModel: createPaginatedRowModel(),\n sortedRowModel: createSortedRowModel(),\n aggregationFns: {\n ...(builtInAggregationFns as DataTableAggregationRegistry),\n ...customAggregationFns,\n },\n filterFns: builtInFilterFns as Record,\n sortFns: builtInSortFns,\n });\n}\n\nexport const dataTableFeatures = createDataTableFeatures();\n\nexport type DataTableFeatures = typeof dataTableFeatures;\nexport type DataTableRowData = Extract;\nexport type DataTableTanStackTable = Table<\n DataTableFeatures,\n DataTableRowData\n>;\nexport type DataTableTanStackRow = Row<\n DataTableFeatures,\n DataTableRowData\n>;\nexport type DataTableTanStackColumn = Column<\n DataTableFeatures,\n DataTableRowData,\n TValue\n>;\nexport type DataTableTanStackCell = Cell<\n DataTableFeatures,\n DataTableRowData,\n TValue\n>;\nexport type DataTableTanStackHeader = Header<\n DataTableFeatures,\n DataTableRowData,\n TValue\n>;\nexport type DataTableTanStackColumnDef = ColumnDef<\n DataTableFeatures,\n DataTableRowData,\n TValue\n>;\nexport type DataTableTanStackCellContext = CellContext<\n DataTableFeatures,\n DataTableRowData,\n TValue\n>;\nexport type DataTableTanStackHeaderContext =\n HeaderContext, TValue>;\nexport type DataTableTanStackFilterFn = FilterFn<\n DataTableFeatures,\n DataTableRowData\n>;\nexport type DataTableTanStackFilterFnOption = FilterFnOption<\n DataTableFeatures,\n DataTableRowData\n>;\nexport type DataTableTanStackAggregationFn = AggregationFnDef<\n DataTableFeatures,\n DataTableRowData\n>;\n","import * as React from \"react\";\nimport { useTable } from \"@tanstack/react-table\";\nimport type {\n ColumnFiltersState,\n ColumnOrderState,\n ColumnPinningState as TanStackColumnPinningState,\n ColumnSizingState,\n ColumnVisibilityState as VisibilityState,\n ExpandedState,\n GroupingState,\n OnChangeFn,\n PaginationState,\n RowPinningState,\n RowSelectionState,\n SortingState,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableColumnPinningState,\n DataTableProps,\n} 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\";\nimport {\n createDataTableFeatures,\n type DataTableFeatures,\n type DataTableTanStackColumn as Column,\n type DataTableRowData,\n type DataTableTanStackColumnDef as ColumnDef,\n type DataTableTanStackFilterFnOption as FilterFnOption,\n type DataTableTanStackRow as Row,\n type DataTableTanStackTable as TanStackTable,\n} from \"./tanstack-v9\";\n\nexport type DataTableRowsToRender = Array<{\n row: Row;\n rowIndex: number;\n}>;\n\ntype DataTableInstanceResult = {\n effectivePageCount: number;\n footerTotalRowCount: number | undefined;\n handleFooterPageIndexChange: (nextPageIndex: number) => void;\n handleFooterPageSizeChange: (nextPageSize: number) => void;\n isPageCountKnown: boolean;\n renderedRows: Array>;\n topPinnedRows: Array>;\n bottomPinnedRows: Array>;\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n rowsToRender: DataTableRowsToRender;\n sentinelRef: React.RefObject;\n table: TanStackTable;\n virtualPaddingBottom: number;\n virtualPaddingTop: number;\n visibleLeafColumns: Array>;\n};\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: DataTableColumnPinningState;\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}): DataTableInstanceResult {\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 start: [\n ...[\"__expand__\", \"__select__\"].filter((columnId) =>\n columnIdSet.has(columnId),\n ),\n ...dataLeft,\n ],\n end: [\n ...dataRight,\n ...[\"__actions__\"].filter((columnId) => columnIdSet.has(columnId)),\n ],\n };\n }, [currentColumnPinning, generatedColumnIds]);\n\n const handleTanStackColumnPinningChange = React.useCallback<\n OnChangeFn\n >(\n (updater) => {\n const nextValue =\n typeof updater === \"function\"\n ? updater(effectiveColumnPinning)\n : updater;\n const dataColumnIds = new Set(\n generatedColumnIds.filter(\n (columnId) =>\n !isUtilityColumnId(columnId) && columnId !== \"__spacer__\",\n ),\n );\n handleColumnPinningChange({\n left: nextValue.start.filter((columnId) => dataColumnIds.has(columnId)),\n right: nextValue.end.filter((columnId) => dataColumnIds.has(columnId)),\n });\n },\n [\n effectiveColumnPinning,\n generatedColumnIds,\n handleColumnPinningChange,\n ],\n );\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 tanStackRowSelection = React.useMemo(() => {\n return Object.fromEntries(\n Object.entries(currentRowSelection).flatMap(([rowId, selected]) =>\n selected ? [[rowId, true as const]] : [],\n ),\n );\n }, [currentRowSelection]);\n\n const handleTanStackRowSelectionChange = React.useCallback<\n OnChangeFn\n >(\n (updater) => {\n const nextValue =\n typeof updater === \"function\"\n ? updater(tanStackRowSelection)\n : updater;\n setCurrentRowSelection({ ...nextValue });\n },\n [setCurrentRowSelection, tanStackRowSelection],\n );\n\n const tableState = React.useMemo(\n () => ({\n sorting: currentSorting,\n pagination: currentPagination,\n rowSelection: tanStackRowSelection,\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 currentSorting,\n effectiveColumnVisibility,\n effectiveColumnOrder,\n effectiveColumnPinning,\n effectiveRowPinning,\n globalFilterValue,\n tanStackRowSelection,\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 features = React.useMemo(\n () => createDataTableFeatures(aggregationFns),\n [aggregationFns],\n );\n\n const table = useTable>({\n features,\n data: tableData as Array>,\n columns: tableColumns,\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: getSubRows\n ? (row, index) =>\n getSubRows(row, index) as\n | Array>\n | undefined\n : undefined,\n getRowCanExpand: getSubRows\n ? (row) => getRowCanExpand?.(row.original) ?? row.subRows.length > 0\n : undefined,\n globalFilterFn: globalFilterFn ?? cachedGlobalFilterFn,\n getColumnCanGlobalFilter: (column) =>\n (column.columnDef as ColumnDef).enableGlobalFilter !==\n 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: handleTanStackRowSelectionChange,\n onColumnVisibilityChange: handleColumnVisibilityChange,\n onColumnFiltersChange: handleColumnFiltersChange,\n onExpandedChange: handleExpandedChange,\n onGroupingChange: handleGroupingChange,\n onColumnOrderChange: handleColumnOrderChange,\n onColumnPinningChange: handleTanStackColumnPinningChange,\n onRowPinningChange: handleRowPinningChange,\n onColumnSizingChange: handleColumnSizingChange,\n groupedColumnMode,\n });\n React.useLayoutEffect(() => {\n tableRef.current = table;\n return () => {\n if (tableRef.current === table) {\n tableRef.current = null;\n }\n };\n }, [table, tableRef]);\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(\n (columnId) =>\n !isUtilityColumnId(columnId) && columnId !== \"__spacer__\",\n );\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","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 ColumnSizingState,\n ColumnVisibilityState as VisibilityState,\n ExpandedState,\n GroupingState,\n PaginationState,\n RowPinningState,\n SortingState,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableColumnPinningState as ColumnPinningState,\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 { 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 hasExplicitDataTableColumnSize,\n isUtilityColumnId,\n} from \"./data-table-utils\";\nimport type { DataTableTanStackColumn as Column } from \"./tanstack-v9\";\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 (hasExplicitDataTableColumnSize(column)) {\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 fixedWidthColumnIds = React.useMemo(() => {\n return new Set([\n ...explicitlySizedColumnIds,\n ...Object.keys(columnSizing),\n ]);\n }, [columnSizing, explicitlySizedColumnIds]);\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 columnMinWidth = configuredMinWidth;\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 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\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 ?? 0)\n );\n }, 0);\n }, [\n columnLayouts,\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 } 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\";\nimport type { DataTableTanStackRow as Row } from \"./tanstack-v9\";\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 { DataTableTanStackTable as TanStackTable } from \"./tanstack-v9\";\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.store.state.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.store.state.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 ColumnVisibilityState as VisibilityState,\n OnChangeFn,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableColumnFixed,\n DataTableColumnPinningState as ColumnPinningState,\n DataTableLabels,\n DataTableProps,\n} from \"../types\";\nimport type { DataTableTanStackTable as TanStackTable } from \"./tanstack-v9\";\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 { DataTableTanStackTable as TanStackTable } from \"./tanstack-v9\";\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 hasExplicitDataTableColumnSize,\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 scrollbarVisibility,\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 includeFillSpacer = React.useMemo(() => {\n if (layoutMode !== \"fill\") {\n return false;\n }\n\n const visibleDataColumns = getDataTableLeafColumns(columns).filter(\n ({ column, index }) =>\n effectiveColumnVisibility[getColumnId(column, index)] !== false,\n );\n\n return (\n visibleDataColumns.length > 0 &&\n visibleDataColumns.every(({ column, index }) => {\n const columnId = getColumnId(column, index);\n return (\n hasExplicitDataTableColumnSize(column) ||\n Object.prototype.hasOwnProperty.call(\n currentColumnSizing,\n columnId,\n )\n );\n })\n );\n }, [\n columns,\n currentColumnSizing,\n effectiveColumnVisibility,\n layoutMode,\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 includeFillSpacer,\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.store.state.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 setCurrentRowSelection(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 setCurrentColumnPinning(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 setCurrentColumnPinning,\n setCurrentRowSelection,\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],\n bottom: [...state.rowPinning.bottom],\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-YKVWP3UJ.js b/dist/chunk-YKVWP3UJ.js new file mode 100644 index 0000000..cf5645f --- /dev/null +++ b/dist/chunk-YKVWP3UJ.js @@ -0,0 +1,2 @@ +import {d,A,y,x,z,k}from'./chunk-YWMYYP3I.js';import {c,t,i}from'./chunk-CVR2ZXHQ.js';import {h,g,f}from'./chunk-7IWMFF7E.js';import {a}from'./chunk-XTVBESM5.js';import*as E from'react';import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {flexRender}from'@tanstack/react-table';function mt({columns:e,editableRows:a,onError:s}){let[o,n]=E.useState(null),[u,g]=E.useState({}),T=E.useRef(u),[h,t]=E.useState({}),[I,c]=E.useState({}),[A,x]=E.useState(false),B=E.useMemo(()=>!Ka(u,h),[u,h]);E.useEffect(()=>{T.current=u;},[u]);let S=E.useCallback(()=>{n(null),g({}),c({}),t({});},[]),V=E.useCallback((H,b)=>{let k=a?.getInitialValues?.(H)??Aa(H,e);t({...k}),g(k),c({}),n(b);},[e,a]),_=E.useCallback(async H=>{if(!a)return false;x(true);let b={...T.current},k;try{let G=await a.validateRow?.(H,b),r=Ga(G);if(Object.keys(r).length>0)return c(r),!1;c({});let z=a.onOptimisticUpdate?.(H,b);return k=typeof z=="function"?z:void 0,await a.onSaveRow(H,b),a.onSaveSuccess?.(H,b),E.startTransition(S),!0}catch(G){try{k?.();}catch{}return a.onSaveError?.(G,H,b),s?.(G,H),false}finally{x(false);}},[S,a,s]),W=E.useCallback(H=>{c(b=>{if(!b[H]&&!b._row)return b;let k={...b};return delete k[H],delete k._row,k});},[]);return {cancelEditing:S,clearEditError:W,draftValues:u,editErrors:I,editingRowId:o,isEditDirty:B,isSavingEdit:A,saveEdit:_,setDraftValues:g,setEditingRowId:n,startEditingRow:V}}function Aa(e,a){return k(a).reduce((s,{column:o})=>("accessorKey"in o&&typeof o.accessorKey=="string"&&(s[o.accessorKey]=e[o.accessorKey]),s),{})}function pa(e,a,s,o,n){let{Checkbox:u,Input:g}=o,T=e.column.columnDef,h=T.meta,t="accessorKey"in T&&typeof T.accessorKey=="string"?T.accessorKey:e.column.id,I=a[t],c=n?.errors[t]??n?.errors[e.column.id]??n?.errors._row,A=S=>{n?.onValueChange(t),s(V=>({...V,[t]:S}));},x=S=>{S.key==="Escape"&&n?.cancelOnEscape?(S.preventDefault(),n.cancel()):S.key==="Enter"&&!S.shiftKey&&n?.commitOnEnter&&(S.preventDefault(),n.commit());};if(h?.renderEditCell)return h.renderEditCell({cell:e,row:e.row.original,value:e.getValue(),draftValue:I,error:c,isDirty:n?.isDirty??false,isPending:n?.isPending??false,setDraftValue:A});let B=za(h?.type,I);return typeof I=="boolean"?jsxs("div",{className:"min-w-0",children:[jsx(u,{"aria-invalid":!!c||void 0,checked:I,disabled:n?.isPending,onCheckedChange:S=>{A(S===true);},onKeyDown:x}),c?jsx("span",{className:"mt-1 block text-xs text-destructive",role:"alert",children:c}):null]}):jsxs("div",{className:"min-w-0",children:[jsx(g,{"aria-invalid":!!c||void 0,disabled:n?.isPending,type:B,value:h?.formatEditValue?h.formatEditValue(I,e):Ma(I,B),onChange:S=>{let V=S.target.value,_=h?.parseEditValue?h.parseEditValue(V,e):Va(V,B,I);A(_);},onKeyDown:x}),c?jsx("span",{className:"mt-1 block text-xs text-destructive",role:"alert",children:c}):null]})}function Ga(e){return e?typeof e=="string"?{_row:e}:e:{}}function Ka(e,a){let s=new Set([...Object.keys(e),...Object.keys(a)]);return Array.from(s).every(o=>Object.is(e[o],a[o]))}function za(e,a){return e==="numeric"||typeof a=="number"?"number":e==="date"||a instanceof Date?"datetime-local":"text"}function Ma(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 Va(e,a,s){return a==="number"?e===""?null:Number(e):a==="datetime-local"?e?s instanceof Date?new Date(e):e:null:e}var Ta=E.createContext(void 0);function Dt({children:e,measureRow:a}){return jsx(Ta.Provider,{value:a,children:e})}function Ca(){return E.useContext(Ta)}function ze(e,a$1,s){let o=e.column.columnDef,n=o.meta,u=e.getValue(),g=s?.hasCustomCell??false,T=g&&o.cell?flexRender(o.cell,e):void 0,h=va(T),t=Ua({context:e,useCustomOverflowDefaults:s?.useCustomOverflowDefaults??false,value:u});if(n?.type==="date"&&!g)return jsxs("div",{"data-dtp-slot":"data-table-cell-content","data-dtp-overflow":t,className:a(ya(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:Ba(u)})]});let I=T!=null&&T!==""?T:u==null||u===""?jsx("span",{className:a$1?.mutedText??"opacity-70",children:"-"}):Fa(u);return jsx("div",{"data-dtp-slot":"data-table-cell-content","data-dtp-overflow":t,className:a(ya(t),"w-full min-w-0 max-w-full",h&&"[&>*]:max-w-full [&>*]:min-w-0"),children:I})}function Ua({context:e,useCustomOverflowDefaults:a,value:s}){let o=e.column.columnDef,n=typeof o.meta?.overflow=="function"?o.meta.overflow({row:e.row.original,value:s}):o.meta?.overflow;return n||(a?"clip":"truncate")}function ya(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 va(e){return e==null?false:E.isValidElement(e)||Array.isArray(e)||typeof e=="object"}function Ba(e){return typeof e=="number"?new Date(e*1e3).toLocaleString():typeof e=="string"&&e?e:"-"}function Fa(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 qa({columnLayouts:e,components:a$1,currentDensity:s,draftValues:o,editingContext:n,dragAndDrop:u,explicitCustomCellColumnIds:g$1,getRowClassName:T,groupToggleLabel:h$1,gridMode:t,gridRowAriaIndex:I,gridRowIndex:c,activeGridCell:A$1,cellSelectionEnabled:x,isGridCellSelected:B,onGridCellFocus:S,onGridCellKeyDown:V,onGridCellPointerDown:_,onGridCellPointerEnter:W,isDraggable:H,isDetailExpanded:b,isEditing:k,isExpanded:G,isInitialLoadingRow:r,isSelected:z,loadingState:M,onRowClick:j,pinnedPosition:d$1,originalRow:D,detailPanel:$,row:C,rowIndex:O,setDraftValues:ye,stripedRows:ce,uiClassNames:K,visibleCells:me,visibleLeafColumnCount:ae}){let{Checkbox:Oe,Input:X,Skeleton:le,TableCell:we,TableRow:Re}=a$1,J=Ca(),he=d$1?void 0:J,Ue=me.find(m=>!e.get(m.column.id)?.isUtilityColumn)?.column.id,Se=me.findIndex(m=>m.column.id==="__spacer__");return jsxs(E.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:H,"data-loading":M?.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:z?"selected":void 0,role:t?"row":void 0,"aria-rowindex":t?I:void 0,tabIndex:!t&&j&&!r?0:void 0,className:a(!r&&T?.(D,{row:D,rowId:C.id,rowIndex:O,isEditing:k,isExpanded:G,isLoading:!!M?.isLoading,isSelected:z,pinnedPosition:d$1??false}),K.row,d$1==="top"&&a("border-b-2",K.rowPinnedTop),d$1==="bottom"&&a("border-t-2",K.rowPinnedBottom),ce&&!r&&(O%2===0?K.rowOdd:K.rowEven),z&&!r&&K.rowSelected,j&&!r&&"cursor-pointer",r&&"pointer-events-none"),onClick:m=>{r||y(m.target,m.currentTarget)||t&&x||j?.({row:D,rowId:C.id});},onKeyDown:m=>{r||!j||m.key!=="Enter"&&m.key!==" "||y(m.target,m.currentTarget)||(m.preventDefault(),j({row:D,rowId:C.id}));},onDragStart:m=>{r||u?.onRowDragStart?.({row:D,rowId:C.id,event:m});},onDragEnd:m=>{r||u?.onRowDragEnd?.({row:D,rowId:C.id,event:m});},children:me.map((m,F)=>{let q=m.column.columnDef.meta,Q=m.getContext(),ve=m.getValue(),U=e.get(m.column.id),fe=U?.isSelectionColumn??false,Y=U?.isExpansionColumn??false,v=U?.isActionsColumn??false,P=U?.isSpacerColumn??false,Be=F+1-(Se>=0&&SeS({row:c,column:F}):void 0,onKeyDown:t&&!P?L=>{if(L.target!==L.currentTarget){L.key==="Escape"&&(L.preventDefault(),L.currentTarget.focus());return}V(L,c,F);}:void 0,onPointerDown:t&&x&&!U?.isUtilityColumn&&!P?L=>{y(L.target,L.currentTarget)||(L.currentTarget.focus(),_(L,c,F));}:void 0,onPointerEnter:t&&x&&!U?.isUtilityColumn&&!P?L=>{y(L.target,L.currentTarget)||W(L,c,F);}:void 0,className:a("border-b",A(s),K.cellBorder,te&&K.cellSelected,U?.utilityClassName,U?.isSpacerColumn&&"border-b-0 bg-transparent! p-0",U?.pinnedClassName,Fe,g(Q),q?.responsiveClassName,We),style:U?.cellStyle,children:jsx("div",{"data-row-click-ignore":fe||Y||v||P?"true":void 0,className:"min-w-0 max-w-full",style:C.depth>0&&m.column.id===Ue?{paddingInlineStart:`${C.depth}rem`}:void 0,children:P?null:M?.isLoading?q?.skeleton?.(Q)??M.skeleton??jsx(le,{className:a("h-4 rounded",q?.type==="numeric"?"ml-auto w-16":q?.type==="date"?"ml-auto w-28":"w-full")}):k&&m.column.id!=="__select__"&&m.column.id!=="__expand__"&&m.column.id!=="__actions__"?pa(Q,o,ye,{Checkbox:Oe,Input:X},n?{cancel:n.cancel,cancelOnEscape:n.cancelOnEscape,commit:()=>n.commit(D),commitOnEnter:n.commitOnEnter,errors:n.errors,isDirty:n.isDirty,isPending:n.isPending,onValueChange:n.clearError}:void 0):C.getIsGrouped()&&m.getIsPlaceholder()?null:C.getIsGrouped()&&m.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":h$1,children:[jsx("span",{"aria-hidden":"true",children:ze(Q,K,{hasCustomCell:g$1.has(m.column.id),useCustomOverflowDefaults:g$1.has(m.column.id)})}),jsxs("span",{className:"shrink-0 opacity-70",children:["(",C.subRows.length,")"]})]}):C.getIsGrouped()&&m.getIsAggregated()?m.column.columnDef.aggregatedCell?flexRender(m.column.columnDef.aggregatedCell,Q):ze(Q,K,{hasCustomCell:false,useCustomOverflowDefaults:false}):ze(Q,K,{hasCustomCell:g$1.has(m.column.id)||fe||Y||v||P,useCustomOverflowDefaults:g$1.has(m.column.id)||fe||Y||v||P})})},m.id)})}),!r&&$&&b?jsx(Re,{"data-dtp-slot":"data-table-detail-panel-row","data-row-pinned":d$1,children:jsx(we,{colSpan:Math.max(1,ae),className:a("border-b",A(s),K.cellBorder),children:$.render({row:D,rowId:C.id,tableRow:C})})}):null]})}function $a(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&&Xa(e.loadingState,a.loadingState)&&Ja(e.visibleCells,a.visibleCells)&&e.components===a.components&&Qa(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 Xa(e,a){return e?.isLoading===a?.isLoading&&e?.skeleton===a?.skeleton}function Ja(e,a){return e.length===a.length&&e.every((s,o)=>{let n=a[o];return n?.id===s.id&&n.column.id===s.column.id})}function Qa(e,a,s){return s.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&&Ya(n?.cellStyle,u?.cellStyle)})}function Ya(e,a){return e?.width===a?.width&&e?.minWidth===a?.minWidth&&e?.maxWidth===a?.maxWidth&&e?.left===a?.left&&e?.right===a?.right}var Ra=E.memo(qa,$a);function Za({columnGroupHeaderHeight:e,currentDensity:a$1,currentSorting:s,dir:o,draggedColumnIdRef:n,enableColumnReordering:u,enableColumnResizing:g,gridColumnIndex:T,gridMode:h$1,header:t$1,headerGroupHeaders:I,layout:c$1,primeColumnForResize:A,reorderColumn:x$1,resizeColumnLabel:B,resetColumnSize:S,TableHead:V,uiClassNames:_}){let W=t$1.column.columnDef.meta,H=E.useId(),b=!t$1.isPlaceholder&&t$1.subHeaders.length>0,k=b?t$1.column.columnDef:void 0,G=t$1.column.getCanSort(),r=t$1.column.getIsSorted(),z$1=s.findIndex(d=>d.id===t$1.column.id),M=u&&!t$1.isPlaceholder&&!b&&!c$1.isUtilityColumn&&!c$1.isSpacerColumn,j=h(W?.hideOn);return jsxs(V,{colSpan:t$1.colSpan,scope:t$1.isPlaceholder||c$1.isSpacerColumn?void 0:b?"colgroup":"col",role:h$1?c$1.isSpacerColumn?"presentation":"columnheader":void 0,"aria-colindex":h$1&&!c$1.isSpacerColumn?T:void 0,"aria-hidden":t$1.isPlaceholder||c$1.isSpacerColumn||void 0,"aria-description":b?k?.description:void 0,"aria-labelledby":!t$1.isPlaceholder&&!c$1.isUtilityColumn&&!c$1.isSpacerColumn?H:void 0,"data-column-id":t$1.column.id,"data-column-group-id":b?k?.id:void 0,"data-header-depth":t$1.depth,"data-dtp-slot":b?"data-table-column-group-header":"data-table-column-header",className:a("relative border-b",z(a$1),b&&_.columnGroupHeader,c$1.utilityClassName,c$1.isSpacerColumn&&"border-b-0 bg-transparent! p-0",c$1.pinnedClassName,j,f(t$1.getContext()),W?.headerClassName,b&&k?.headerClassName,W?.responsiveClassName),style:{...W?.headerStyle,...b?k?.headerStyle:void 0,...b&&(k?.headerHeight??e)!==void 0?{height:k?.headerHeight??e}:void 0,...c$1.headerStyle},title:b?k?.description:void 0,"aria-sort":r==="asc"?"ascending":r==="desc"?"descending":G?"none":void 0,draggable:M,tabIndex:M&&!G&&!(g&&t$1.column.getCanResize())?0:void 0,onDragStart:M?d=>{n.current=t$1.column.id,d.dataTransfer.effectAllowed="move";}:void 0,onDragOver:M?d=>{d.preventDefault(),d.dataTransfer.dropEffect="move";}:void 0,onDrop:M?d=>{d.preventDefault();let D=n.current;n.current=null,D&&x$1(D,t$1.column.id);}:void 0,onKeyDown:M?d=>{if(!d.altKey||d.key!=="ArrowLeft"&&d.key!=="ArrowRight")return;d.preventDefault();let D=I.filter(O=>!x(O.column.id)&&O.column.id!=="__spacer__"),$=D.findIndex(O=>O.column.id===t$1.column.id),C=D[d.key==="ArrowLeft"!=(o==="rtl")?$-1:$+1];C&&x$1(t$1.column.id,C.column.id);}:void 0,children:[t$1.isPlaceholder?null:G?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:H,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")}),s.length>1&&z$1>=0?jsx("span",{className:"inline-flex size-4 shrink-0 items-center justify-center rounded-full text-[10px] leading-none",children:z$1+1}):null]}):jsx(t,{className:a("size-4 shrink-0",_.headerSortIcon??"opacity-70")})]}):c$1.isUtilityColumn||c$1.isSpacerColumn?flexRender(t$1.column.columnDef.header,t$1.getContext()):jsx("span",{id:H,children:flexRender(t$1.column.columnDef.header,t$1.getContext())}),g&&!t$1.isPlaceholder&&t$1.column.getCanResize()?jsx("div",{"aria-label":B,"aria-orientation":"vertical","aria-valuemax":tt(t$1),"aria-valuemin":at(t$1),"aria-valuenow":Math.round(t$1.getSize()),role:"separator",tabIndex:0,onDoubleClick:()=>{for(let d of ie(t$1))S(d.column.id);},onMouseDown:d=>{for(let D of ie(t$1))A(D.column.id,D.getSize());t$1.getResizeHandler()(d);},onTouchStart:d=>{for(let D of ie(t$1))A(D.column.id,D.getSize());t$1.getResizeHandler()(d);},onKeyDown:d=>{if(d.altKey)return;if(d.key==="Home"){d.preventDefault();for(let $ of ie(t$1))S($.column.id);return}if(d.key!=="ArrowLeft"&&d.key!=="ArrowRight")return;d.preventDefault(),d.stopPropagation();let D=d.key==="ArrowRight"!=(o==="rtl");nt(t$1,(D?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",_.resizeHandle??"after:bg-current after:opacity-20 hover:after:opacity-70",t$1.column.getIsResizing()&&(_.resizeHandleActive??"after:opacity-100"))}):null]},t$1.id)}function et(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&<(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&&ot(e.currentSorting,a.currentSorting)&&rt(e.headerGroupHeaders,a.headerGroupHeaders)&&it(e.layout,a.layout)}function ie(e){return e.subHeaders.length?e.getLeafHeaders().filter(a=>!a.subHeaders.length):[e]}function at(e){return ie(e).reduce((a,s)=>a+(s.column.columnDef.minSize??20),0)}function tt(e){return ie(e).reduce((a,s)=>a+(s.column.columnDef.maxSize??Number.MAX_SAFE_INTEGER),0)}function nt(e,a){let s=ie(e),o=a/s.length;e.getContext().table.setColumnSizing(n=>{let u={...n};for(let g of s){let T=g.column,h=T.columnDef.minSize??20,t=T.columnDef.maxSize??Number.MAX_SAFE_INTEGER;u[T.id]=Math.min(t,Math.max(h,T.getSize()+o));}return u});}function lt(e,a){return e.subHeaders.length===a.subHeaders.length&&e.subHeaders.every((s,o)=>a.subHeaders[o]?.id===s.id)}function ot(e,a){return e.length===a.length&&e.every((s,o)=>{let n=a[o];return n?.id===s.id&&n.desc===s.desc})}function rt(e,a){return e.length===a.length&&e.every((s,o)=>a[o]?.id===s.id)}function it(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 ha=E.memo(Za,et);function Bt({ariaDescribedBy:e,ariaLabelledBy:a$1,bodyRowComponents:s,cellSelection:o,cellSelectionEnabled:n,columnLayouts:u,columnGroupHeaderHeight:g,currentDensity:T,currentDetailExpanded:h,currentSorting:t=[],dir:I,DataTableEmptyState:c,dragAndDrop:A,draggedColumnIdRef:x$1,draftValues:B,editingRowId:S,editingContext:V,emptyNode:_,enableColumnReordering:W,enableColumnResizing:H,explicitCustomCellColumnIds:b,fillMinWidth:k,flexGrow:G,gridMode:r,gridPageSize:z,gridRowOffset:M,onGridActiveRowIndexChange:j,onCellSelectionChange:d$1,getColumnLayout:D,getRowClassName:$,getRowLoadingState:C,infiniteScroll:O,layoutMode:ye,localSearchValue:ce,onRowClick:K,primeColumnForResize:me,renderedRows:ae,detailPanel:Oe,topPinnedRows:X,bottomPinnedRows:le,reorderColumn:we,resetColumnSize:Re,resolvedLabels:J,rowsToRender:he,ScrollArea:Ue,ScrollBar:Se,scrollbarVisibility:m,sentinelRef:F,setDraftValues:q,shouldRenderInitialLoading:Q,stateOverlayNode:ve,stickyHeader:U,stripedRows:fe,summaryRows:Y,table:v,tableClassName:P,tableContainerClassName:Be,Table:Fe,TableBody:We,TableCell:te,TableFooter:L="tfoot",TableHead:Sa,TableHeader:ka,TableRow:be,tableScrollContainerRef:je,tableScrollElement:qe,totalRowCount:na,uiClassNames:oe,virtualPaddingBottom:la,virtualPaddingTop:oa,visibleLeafColumnCount:ke,visibleLeafColumns:ne}){let Ea=v.getIsAllPageRowsSelected()?true:v.getIsSomePageRowsSelected()?"indeterminate":false,ra=v.getFilteredRowModel().rows,Ha=E.useMemo(()=>Y.length?ra.map(l=>l.original):[],[ra,Y.length]),Ee=v.getHeaderGroups().length,He=X.length+ae.length+le.length,[De,ia]=E.useState({row:0,column:0}),sa=E.useRef(false),$e=E.useRef(false),ge=E.useMemo(()=>[...X,...ae,...le],[le,ae,X]),se=E.useMemo(()=>ne.flatMap((l,i)=>l.id==="__spacer__"?[]:[i]),[ne]),pe=E.useCallback((l,i)=>{let f=ge[l],p=ne[i];return f&&p&&!x(p.id)&&p.id!=="__spacer__"?{rowId:f.id,columnId:p.id}:void 0},[ge,ne]),de=E.useMemo(()=>{if(!o)return;let l=ge.findIndex(y=>y.id===o.anchor.rowId),i=ge.findIndex(y=>y.id===o.focus.rowId),f=ne.findIndex(y=>y.id===o.anchor.columnId),p=ne.findIndex(y=>y.id===o.focus.columnId);if(!(l<0||i<0||f<0||p<0))return {firstRow:Math.min(l,i),lastRow:Math.max(l,i),firstColumn:Math.min(f,p),lastColumn:Math.max(f,p)}},[o,ge,ne]),Pa=E.useCallback((l,i)=>!!(de&&l>=de.firstRow&&l<=de.lastRow&&i>=de.firstColumn&&i<=de.lastColumn),[de]),Na=E.useCallback(l=>{sa.current=true,ia(l);},[]),Pe=E.useCallback((l,i,f)=>{if(!n)return;let p=pe(l,i);if(!p)return;let y=f&&o?.anchor?o.anchor:p;d$1({anchor:y,focus:p});},[o,n,pe,d$1]),Ia=E.useCallback((l,i,f)=>{!n||l.button!==0||(l.preventDefault(),$e.current=true,Pe(i,f,l.shiftKey));},[n,Pe]),La=E.useCallback((l,i,f)=>{!n||!$e.current||l.buttons!==1||Pe(i,f,true);},[n,Pe]);E.useEffect(()=>{let l=()=>{$e.current=false;};return window.addEventListener("pointerup",l),()=>window.removeEventListener("pointerup",l)},[]),E.useEffect(()=>{if(!r)return;j?.(De.row);let l=requestAnimationFrame(()=>{let i=je.current?.querySelectorAll('[data-dtp-grid-cell="true"]'),f=Array.from(i??[]).find(p=>Number(p.dataset.gridRowIndex)===De.row&&Number(p.dataset.gridColumnIndex)===De.column);f&&sa.current&&f.focus();});return ()=>cancelAnimationFrame(l)},[De,r,j,je]);let xa=E.useCallback((l,i,f)=>{if(l.defaultPrevented||l.target!==l.currentTarget)return;let p=Math.max(1,z??(Math.floor((qe?.clientHeight||0)/Math.max(1,qe?.querySelector("tr")?.offsetHeight||48))||10)),y=Math.max(0,He-1),Z=Math.max(0,se.indexOf(f)),Ne=Math.max(0,se.length-1),ee=i,Te=Z;switch(l.key){case "ArrowUp":ee--;break;case "ArrowDown":ee++;break;case "ArrowLeft":Te--;break;case "ArrowRight":Te++;break;case "Home":(l.ctrlKey||l.metaKey)&&(ee=0),Te=0;break;case "End":(l.ctrlKey||l.metaKey)&&(ee=y),Te=Ne;break;case "PageUp":ee-=p;break;case "PageDown":ee+=p;break;default:return}l.preventDefault();let Je={row:Math.min(y,Math.max(0,ee)),column:se[Math.min(Ne,Math.max(0,Te))]??0};if(ia(Je),l.shiftKey&&n){let Qe=pe(Je.row,Je.column),da=o?.anchor??pe(i,f)??Qe;da&&Qe&&d$1({anchor:da,focus:Qe});}},[o,n,He,pe,z,se,d$1,qe]),Xe=(l,i,f)=>{let p=l.original,y=d(p),Z=y?{isLoading:true}:C?.(p,i),Ne=typeof Z=="boolean"?{isLoading:Z}:Z,ee=y?false:A?.getRowDraggable?.(p)??false;return jsx(Ra,{columnLayouts:u,components:s,currentDensity:T,draftValues:B,editingContext:V,dragAndDrop:A,explicitCustomCellColumnIds:b,getRowClassName:$,groupToggleLabel:l.getIsExpanded()?J.collapseRow:J.expandRow,isDraggable:ee,isDetailExpanded:h===true||!!h[l.id],isEditing:S===l.id,isExpanded:l.getIsExpanded(),isInitialLoadingRow:y,isSelected:l.getIsSelected(),loadingState:Ne,onRowClick:K,originalRow:p,pinnedPosition:f,detailPanel:Oe,row:l,rowIndex:i,setDraftValues:q,stripedRows:fe,uiClassNames:oe,visibleCells:l.getVisibleCells(),visibleLeafColumnCount:ke,gridMode:r,gridRowIndex:i,gridRowAriaIndex:Ee+M+i+1,activeGridCell:De,cellSelectionEnabled:n,isGridCellSelected:Pa,onGridCellFocus:Na,onGridCellKeyDown:xa,onGridCellPointerDown:Ia,onGridCellPointerEnter:La},`${f??"center"}-${l.id}`)};return jsxs("div",{"data-dtp-slot":"data-table-table-shell",className:a("relative box-border border-2 border-transparent transition-colors",G?"flex min-h-0 flex-1 flex-col":"h-full",A?.isDragging&&(oe.dragActive??"rounded-md border-dashed")),children:[jsx("div",{ref:je,className:a(G?"flex min-h-0 flex-1 flex-col":"h-full"),children:jsxs(Ue,{type:m,className:a("rounded-md border",G?"min-h-0 flex-1":"h-full",oe.tableContainer,oe.tableScrollArea,Be),children:[jsx("div",{className:"min-h-full",children:jsxs(Fe,{"aria-describedby":e,"aria-labelledby":a$1,role:r?"grid":void 0,"aria-colcount":r?se.length:void 0,"aria-rowcount":r?Ee+(na??He)+Y.length:void 0,className:a("w-full table-fixed border-separate border-spacing-0",P),style:{minWidth:ye==="fill"&&k||void 0,width:ye==="fit"?v.getTotalSize():"100%"},children:[jsx("colgroup",{children:v.getVisibleLeafColumns().map(l=>{let i=D(l.id);return jsx("col",{style:i.colStyle},l.id)})}),jsx(ka,{role:r?"rowgroup":void 0,className:a(U?oe.tableStickyHeader??"sticky top-0 z-30 backdrop-blur":void 0),children:v.getHeaderGroups().map(l=>jsx(be,{role:r?"row":void 0,"aria-rowindex":r?l.depth+1:void 0,children:l.headers.map(i=>jsx(ha,{columnGroupHeaderHeight:g,currentDensity:T,currentSorting:t,dir:I,draggedColumnIdRef:x$1,enableColumnReordering:W,enableColumnResizing:H,header:i,headerGroupHeaders:l.headers,layout:dt(i,D),primeColumnForResize:me,reorderColumn:we,resizeColumnLabel:J.resizeColumn(typeof i.column.columnDef.header=="string"?i.column.columnDef.header:i.column.id),resetColumnSize:Re,selectionState:i.column.id==="__select__"?Ea:void 0,TableHead:Sa,uiClassNames:oe,gridMode:r,gridColumnIndex:i.isPlaceholder||i.subHeaders.length||i.column.id==="__spacer__"?void 0:v.getVisibleLeafColumns().filter(f=>f.id!=="__spacer__").findIndex(f=>f.id===i.column.id)+1},i.id))},l.id))}),jsx(We,{role:r?"rowgroup":void 0,children:X.length||ae.length||le.length?jsxs(Fragment,{children:[X.map((l,i)=>Xe(l,i,"top")),oa>0?jsx(be,{"aria-hidden":"true",role:r?"presentation":void 0,children:jsx(te,{colSpan:Math.max(1,ke),className:"border-b-0 p-0",style:{height:oa}})}):null,he.map(({row:l,rowIndex:i})=>Xe(l,i+X.length)),la>0?jsx(be,{"aria-hidden":"true",role:r?"presentation":void 0,children:jsx(te,{colSpan:Math.max(1,ke),className:"border-b-0 p-0",style:{height:la}})}):null,le.map((l,i)=>Xe(l,X.length+ae.length+i,"bottom"))]}):jsx(be,{role:r?"row":void 0,"aria-rowindex":r?Ee+1:void 0,children:jsx(te,{role:r?"gridcell":void 0,"aria-colindex":r?1:void 0,colSpan:Math.max(1,ke),className:"h-full grow",children:jsx("div",{className:"flex h-full min-h-full w-full grow items-center justify-center",children:_??jsx(c,{title:ce?J.noMatchingRowsTitle:J.noRowsTitle,description:ce?J.noMatchingRowsDescription:J.noRowsDescription})})})})}),Y.length?jsx(L,{role:r?"rowgroup":void 0,children:Y.map((l,i)=>jsx(be,{role:r?"row":void 0,"aria-rowindex":r?Ee+(na??He)+i+1:void 0,children:ne.map((f,p)=>{let y=D(f.id),Z=y.isSpacerColumn?null:l.cells[f.id]??(p===0?l.label:null);return jsx(te,{"data-column-id":f.id,role:r?y.isSpacerColumn?"presentation":"gridcell":void 0,"aria-colindex":r&&!y.isSpacerColumn?se.indexOf(p)+1:void 0,"aria-hidden":y.isSpacerColumn||void 0,className:a(y.isSpacerColumn?"border-b-0 bg-transparent! p-0":"border-b font-medium",!y.isSpacerColumn&&oe.cellBorder),style:y.cellStyle,children:typeof Z=="function"?Z({rows:Ha,columnId:f.id}):Z},`${l.key}-${f.id}`)})},l.key))}):null]})}),O?.enabled&&ae.length&&!Q?jsx("div",{className:"px-4 pb-4",children:jsx("div",{ref:F,className:"h-4 w-full"})}):null,jsx(Se,{orientation:"horizontal"})]})}),ve]})}function dt(e,a){let s=a(e.column.id);if(e.isPlaceholder||!e.subHeaders.length)return s;let o=e.getLeafHeaders().filter(g=>!g.subHeaders.length).map(g=>a(g.column.id)),n=o[0]?.fixedSide;if(!n||!o.every(g=>g.fixedSide===n))return s;let u=n==="left"?o[0]:o.at(-1);return {...s,fixedSide:n,headerStyle:u?.headerStyle?{left:u.headerStyle.left,right:u.headerStyle.right}:void 0,pinnedClassName:u?.pinnedClassName}}export{mt as a,Dt as b,Ra as c,ha as d,Bt as e};//# sourceMappingURL=chunk-YKVWP3UJ.js.map +//# sourceMappingURL=chunk-YKVWP3UJ.js.map \ No newline at end of file diff --git a/dist/chunk-YKVWP3UJ.js.map b/dist/chunk-YKVWP3UJ.js.map new file mode 100644 index 0000000..8ba306d --- /dev/null +++ b/dist/chunk-YKVWP3UJ.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","N","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","Ge","DataTableVirtualRowMeasurementProvider","children","measureRow","useDataTableVirtualRowMeasurement","renderDataTableCellContent","classNames","options","hasCustomCell","renderedCellContent","flexRender","hasComplexRenderedContent","isComplexRenderedCellContent","resolvedOverflow","resolveDataTableCellOverflow","cn","getCellOverflowClassName","IconClock","formatDateValue","content","formatCellValue","useCustomOverflowDefaults","overflow","wa","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","spacerColumnIndex","Me","isDataTableInteractiveTarget","columnIndex","cellContext","layout","isSelectionColumn","isExpansionColumn","isActionsColumn","isSpacerColumn","gridColumnAriaIndex","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","Ve","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","scrollbarVisibility","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","navigableGridColumnIndices","getGridCoordinate","selectedBounds","anchorRow","focusRow","anchorColumn","focusColumn","handleGridCellFocus","selectGridCell","extend","focus","anchor","handleGridCellPointerDown","handleGridCellPointerEnter","stopSelecting","frame","moveGridFocus","pageRows","lastRow","currentColumnPosition","lastColumnPosition","nextRow","nextColumnPosition","renderBodyRow","resolvedLoadingState","headerGroup","getHeaderLayout","summaryRow","summaryIndex","columnLayout","leafLayouts","fixedSide","edgeLayout"],"mappings":"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","file":"chunk-YKVWP3UJ.js","sourcesContent":["import * as React from \"react\";\nimport type {\n DataTableColumnDef,\n DataTableColumnType,\n DataTableEditableRowsConfig,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { getDataTableLeafColumns } from \"./data-table-utils\";\nimport type { DataTableTanStackCellContext as CellContext } from \"./tanstack-v9\";\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 } 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\";\nimport type { DataTableTanStackCellContext as CellContext } from \"./tanstack-v9\";\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 } 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\";\nimport type {\n DataTableTanStackCell as Cell,\n DataTableTanStackRow as Row,\n} from \"./tanstack-v9\";\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 const spacerColumnIndex = visibleCells.findIndex(\n (cell) => cell.column.id === \"__spacer__\",\n );\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 gridColumnAriaIndex =\n columnIndex +\n 1 -\n (spacerColumnIndex >= 0 && spacerColumnIndex < columnIndex ? 1 : 0);\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 !isSpacerColumn &&\n isGridCellSelected(gridRowIndex, columnIndex);\n\n return (\n onGridCellFocus({ row: gridRowIndex, column: columnIndex })\n : undefined\n }\n onKeyDown={\n gridMode && !isSpacerColumn\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 {isSpacerColumn ? null : 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 { 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\";\nimport type { DataTableTanStackHeader as Header } from \"./tanstack-v9\";\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 ExpandedState,\n RowPinningPosition,\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\";\nimport type {\n DataTableTanStackColumn as Column,\n DataTableTanStackHeader as Header,\n DataTableTanStackRow as Row,\n DataTableTanStackTable as TanStackTable,\n} from \"./tanstack-v9\";\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 scrollbarVisibility: DataTableProps[\"scrollbarVisibility\"];\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 scrollbarVisibility,\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 navigableGridColumnIndices = React.useMemo(\n () =>\n visibleLeafColumns.flatMap((column, index) =>\n column.id === \"__spacer__\" ? [] : [index],\n ),\n [visibleLeafColumns],\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 currentColumnPosition = Math.max(\n 0,\n navigableGridColumnIndices.indexOf(column),\n );\n const lastColumnPosition = Math.max(\n 0,\n navigableGridColumnIndices.length - 1,\n );\n let nextRow = row;\n let nextColumnPosition = currentColumnPosition;\n switch (event.key) {\n case \"ArrowUp\": nextRow--; break;\n case \"ArrowDown\": nextRow++; break;\n case \"ArrowLeft\": nextColumnPosition--; break;\n case \"ArrowRight\": nextColumnPosition++; break;\n case \"Home\":\n if (event.ctrlKey || event.metaKey) nextRow = 0;\n nextColumnPosition = 0;\n break;\n case \"End\":\n if (event.ctrlKey || event.metaKey) nextRow = lastRow;\n nextColumnPosition = lastColumnPosition;\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:\n navigableGridColumnIndices[\n Math.min(\n lastColumnPosition,\n Math.max(0, nextColumnPosition),\n )\n ] ?? 0,\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 navigableGridColumnIndices,\n onCellSelectionChange,\n tableScrollElement,\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 !== \"__spacer__\",\n )\n .findIndex(\n (column) =>\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 layout = getColumnLayout(column.id);\n const content = layout.isSpacerColumn\n ? null\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-YWMYYP3I.js b/dist/chunk-YWMYYP3I.js new file mode 100644 index 0000000..faeab29 --- /dev/null +++ b/dist/chunk-YWMYYP3I.js @@ -0,0 +1,3 @@ +import {a}from'./chunk-XTVBESM5.js';var _=Symbol("data-table-loading-row"),z=50;function F(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 U(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 M(e){return Object.prototype.hasOwnProperty.call(e,"size")&&typeof e.size=="number"}function S(e){if("columns"in e&&Array.isArray(e.columns))return {...e,columns:e.columns.map(n=>S(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)??b(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=A(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 W(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 B(e,t,n){let r=n.get(e)??[],a=n.get(t)??[],o=0;for(;oi.freeReordering)}function k(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 $(e){return e.map(t=>typeof t=="string"?{label:h(t),value:t}:t)}function b(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 A(e){if(e instanceof Date&&!Number.isNaN(e.getTime()))return e.toISOString().slice(0,10);let t=b(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 K(e){return b(e).trim().toLowerCase()}async function q({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"}),g=window.URL.createObjectURL(d),T=window.document.createElement("a");T.href=g,T.download=r,T.click(),window.URL.revokeObjectURL(g);}function R(e,t){switch(t){case "page":return e.getRowModel().rows;case "selected":return e.getPrePaginatedRowModel().rows.filter(n=>n.getIsSelected());case "all":return e.getCoreRowModel().rows;default:return e.getPrePaginatedRowModel().rows}}function E(e,t){let n=b(e);return t&&typeof e=="string"&&/^[\t\r ]*[=+\-@]/.test(e)&&(n=`'${n}`),/[",\n\r]/.test(n)?`"${n.replace(/"/g,'""')}"`:n}function H(e){let t=[],n=[];for(let{column:r,index:a}of k(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 Q(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 Z(e){let t=e.getIsPinned();return t==="start"?"left":t==="end"?"right":e.id==="__select__"||e.id==="__expand__"?"left":e.id==="__actions__"?"right":e.columnDef.meta?.fixed}function J(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 Y(e,t){if(!(e instanceof Element))return false;let n=e.closest(P);return !!(n&&n!==t&&t.contains(n))}function v(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 ee(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{X as A,ee as B,h as C,z as a,F as b,U as c,j as d,G as e,V as f,M as g,S as h,W as i,B as j,k,$ as l,b as m,x as n,K as o,q as p,R as q,H as r,D as s,Q as t,N as u,Z as v,J as w,O as x,Y as y,v as z};//# sourceMappingURL=chunk-YWMYYP3I.js.map +//# sourceMappingURL=chunk-YWMYYP3I.js.map \ No newline at end of file diff --git a/dist/chunk-YWMYYP3I.js.map b/dist/chunk-YWMYYP3I.js.map new file mode 100644 index 0000000..335f10b --- /dev/null +++ b/dist/chunk-YWMYYP3I.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","hasExplicitDataTableColumnSize","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-YWMYYP3I.js","sourcesContent":["import type {\n ExpandedState,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableColumnFilterOption,\n DataTableColumnPinningState,\n DataTableCsvExportOptions,\n DataTableCsvExportScope,\n DataTableDensity,\n DataTableLabels,\n} from \"../types\";\nimport type { DataTableUiClassNames } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport type {\n DataTableTanStackColumn as Column,\n DataTableTanStackColumnDef as ColumnDef,\n DataTableTanStackRow as Row,\n DataTableTanStackTable as TanStackTable,\n} from \"./tanstack-v9\";\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 hasExplicitDataTableColumnSize(\n column: DataTableColumnDef,\n) {\n return (\n Object.prototype.hasOwnProperty.call(column, \"size\") &&\n typeof column.size === \"number\"\n );\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 .getPrePaginatedRowModel()\n .rows.filter((row) => row.getIsSelected());\n case \"all\":\n return table.getCoreRowModel().rows;\n default:\n return table.getPrePaginatedRowModel().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): DataTableColumnPinningState {\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 === \"start\") {\n return \"left\" as const;\n }\n if (pinnedSide === \"end\") {\n return \"right\" as const;\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/data-source.d.ts b/dist/data-source.d.ts index be11f1e..aededff 100644 --- a/dist/data-source.d.ts +++ b/dist/data-source.d.ts @@ -1,5 +1,5 @@ import { PaginationState, SortingState, ColumnFiltersState, GroupingState } from '@tanstack/react-table'; -import { DataTableProps } from './types.js'; +import { D as DataTableProps } from './types-BGNR6Ymh.js'; import 'react'; /** The supported server pagination strategies. */ diff --git a/dist/data-table-clipboard-7IVWTPU3.js b/dist/data-table-clipboard-7IVWTPU3.js deleted file mode 100644 index c7bb300..0000000 --- a/dist/data-table-clipboard-7IVWTPU3.js +++ /dev/null @@ -1,6 +0,0 @@ -import {x,q,C,m}from'./chunk-F2RBZWQV.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=>!x(o.id)&&o.id!=="__spacer__"&&(!r||r.has(o.id))),a=n==="cellSelection"?y(t,l,c):void 0,m=a?.columns??s,C$1=n==="cellSelection"?a?.rows??[]:q(t,n),d=[];(e.includeHeaders??n!=="cellSelection")&&d.push(m.map(o=>typeof o.columnDef.header=="string"?o.columnDef.header:C(o.id)));for(let o of C$1)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$1.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=>!x(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=m(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-7IVWTPU3.js.map -//# sourceMappingURL=data-table-clipboard-7IVWTPU3.js.map \ No newline at end of file diff --git a/dist/data-table-clipboard-7IVWTPU3.js.map b/dist/data-table-clipboard-7IVWTPU3.js.map deleted file mode 100644 index 33d2805..0000000 --- a/dist/data-table-clipboard-7IVWTPU3.js.map +++ /dev/null @@ -1 +0,0 @@ -{"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-7IVWTPU3.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-clipboard-RNEFAPJB.js b/dist/data-table-clipboard-RNEFAPJB.js new file mode 100644 index 0000000..2caf6c2 --- /dev/null +++ b/dist/data-table-clipboard-RNEFAPJB.js @@ -0,0 +1,6 @@ +import {x,q,C,m}from'./chunk-YWMYYP3I.js';import'./chunk-XTVBESM5.js';async function S({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=>!x(o.id)&&o.id!=="__spacer__"&&(!r||r.has(o.id))),a=n==="cellSelection"?D(t,l,c):void 0,m=a?.columns??s,T=n==="cellSelection"?a?.rows??[]:q(t,n),d=[];(e.includeHeaders??n!=="cellSelection")&&d.push(m.map(o=>typeof o.columnDef.header=="string"?o.columnDef.header:C(o.id)));for(let o of T)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 C$1=e.delimiter??" ",f=d.map(o=>o.map(u=>y(u,C$1,e.escapeFormulaValues??true)).join(C$1)).join(` +`);return e.onCopy?await e.onCopy({rows:T.map(o=>o.original),scope:n,text:f}):typeof navigator<"u"&&typeof navigator.clipboard?.writeText=="function"&&await navigator.clipboard.writeText(f),f}function D(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=>!x(a.id)&&a.id!=="__spacer__")}}function I(i,c=" "){let t=[],e=[],n="",r=false;for(let l=0;l1||e[0]||t.length===0)&&t.push(e),t}function y(i,c,t){let e=m(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{S as copyDataTableToClipboard,I as parseDataTableClipboardText};//# sourceMappingURL=data-table-clipboard-RNEFAPJB.js.map +//# sourceMappingURL=data-table-clipboard-RNEFAPJB.js.map \ No newline at end of file diff --git a/dist/data-table-clipboard-RNEFAPJB.js.map b/dist/data-table-clipboard-RNEFAPJB.js.map new file mode 100644 index 0000000..d71245d --- /dev/null +++ b/dist/data-table-clipboard-RNEFAPJB.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-RNEFAPJB.js","sourcesContent":["import type {\n DataTableCellSelection,\n DataTableClipboardCopyOptions,\n} from \"../types\";\nimport {\n getDataTableExportRows,\n isUtilityColumnId,\n normalizeFilterValue,\n startCase,\n} from \"./data-table-utils\";\nimport type {\n DataTableTanStackColumn as Column,\n DataTableTanStackTable as TanStackTable,\n} from \"./tanstack-v9\";\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-toolbar-operations-IDEGCKBK.js b/dist/data-table-toolbar-operations-E6KRSUL6.js similarity index 97% rename from dist/data-table-toolbar-operations-IDEGCKBK.js rename to dist/data-table-toolbar-operations-E6KRSUL6.js index 7f28e3c..d7cd5aa 100644 --- a/dist/data-table-toolbar-operations-IDEGCKBK.js +++ b/dist/data-table-toolbar-operations-E6KRSUL6.js @@ -1,2 +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 +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-E6KRSUL6.js.map +//# sourceMappingURL=data-table-toolbar-operations-E6KRSUL6.js.map \ No newline at end of file diff --git a/dist/data-table-toolbar-operations-E6KRSUL6.js.map b/dist/data-table-toolbar-operations-E6KRSUL6.js.map new file mode 100644 index 0000000..ca09985 --- /dev/null +++ b/dist/data-table-toolbar-operations-E6KRSUL6.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":"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","file":"data-table-toolbar-operations-E6KRSUL6.js","sourcesContent":["import * as React from \"react\";\nimport { IconSearch } from \"../icons\";\nimport type {\n DataTableColumnFixed,\n DataTableColumnVisibilityOption,\n DataTableLabels,\n DataTableSavedView,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport type { DataTableTanStackTable as Table } from \"./tanstack-v9\";\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-toolbar-operations-IDEGCKBK.js.map b/dist/data-table-toolbar-operations-IDEGCKBK.js.map deleted file mode 100644 index c65d945..0000000 --- a/dist/data-table-toolbar-operations-IDEGCKBK.js.map +++ /dev/null @@ -1 +0,0 @@ -{"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-3PHPB23A.js b/dist/data-table-virtual-card-panel-3PHPB23A.js deleted file mode 100644 index 1405201..0000000 --- a/dist/data-table-virtual-card-panel-3PHPB23A.js +++ /dev/null @@ -1,2 +0,0 @@ -export{a as DataTableVirtualCardPanel}from'./chunk-B6JTUAWE.js';import'./chunk-EJHT5JBZ.js';import'./chunk-O6MUTKGE.js';import'./chunk-XTVBESM5.js';//# sourceMappingURL=data-table-virtual-card-panel-3PHPB23A.js.map -//# sourceMappingURL=data-table-virtual-card-panel-3PHPB23A.js.map \ No newline at end of file diff --git a/dist/data-table-virtual-card-panel-Z3BPBPG4.js b/dist/data-table-virtual-card-panel-Z3BPBPG4.js new file mode 100644 index 0000000..005ab91 --- /dev/null +++ b/dist/data-table-virtual-card-panel-Z3BPBPG4.js @@ -0,0 +1,2 @@ +export{a as DataTableVirtualCardPanel}from'./chunk-LTEXTQ2M.js';import'./chunk-EJHT5JBZ.js';import'./chunk-7IWMFF7E.js';import'./chunk-XTVBESM5.js';//# sourceMappingURL=data-table-virtual-card-panel-Z3BPBPG4.js.map +//# sourceMappingURL=data-table-virtual-card-panel-Z3BPBPG4.js.map \ No newline at end of file diff --git a/dist/data-table-virtual-card-panel-3PHPB23A.js.map b/dist/data-table-virtual-card-panel-Z3BPBPG4.js.map similarity index 62% rename from dist/data-table-virtual-card-panel-3PHPB23A.js.map rename to dist/data-table-virtual-card-panel-Z3BPBPG4.js.map index 485290e..82afff0 100644 --- a/dist/data-table-virtual-card-panel-3PHPB23A.js.map +++ b/dist/data-table-virtual-card-panel-Z3BPBPG4.js.map @@ -1 +1 @@ -{"version":3,"sources":[],"names":[],"mappings":"","file":"data-table-virtual-card-panel-3PHPB23A.js"} \ No newline at end of file +{"version":3,"sources":[],"names":[],"mappings":"","file":"data-table-virtual-card-panel-Z3BPBPG4.js"} \ No newline at end of file diff --git a/dist/data-table-virtual-table-panel-UK5AMT4Q.js b/dist/data-table-virtual-table-panel-UK5AMT4Q.js new file mode 100644 index 0000000..e37752d --- /dev/null +++ b/dist/data-table-virtual-table-panel-UK5AMT4Q.js @@ -0,0 +1,2 @@ +export{a as DataTableVirtualTablePanel}from'./chunk-IZQDLLCH.js';import'./chunk-YKVWP3UJ.js';import'./chunk-YWMYYP3I.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-7IWMFF7E.js';import'./chunk-XTVBESM5.js';//# sourceMappingURL=data-table-virtual-table-panel-UK5AMT4Q.js.map +//# sourceMappingURL=data-table-virtual-table-panel-UK5AMT4Q.js.map \ No newline at end of file diff --git a/dist/data-table-virtual-table-panel-ZOYCXFM5.js.map b/dist/data-table-virtual-table-panel-UK5AMT4Q.js.map similarity index 62% rename from dist/data-table-virtual-table-panel-ZOYCXFM5.js.map rename to dist/data-table-virtual-table-panel-UK5AMT4Q.js.map index 4b66d53..64310ef 100644 --- a/dist/data-table-virtual-table-panel-ZOYCXFM5.js.map +++ b/dist/data-table-virtual-table-panel-UK5AMT4Q.js.map @@ -1 +1 @@ -{"version":3,"sources":[],"names":[],"mappings":"","file":"data-table-virtual-table-panel-ZOYCXFM5.js"} \ No newline at end of file +{"version":3,"sources":[],"names":[],"mappings":"","file":"data-table-virtual-table-panel-UK5AMT4Q.js"} \ No newline at end of file diff --git a/dist/data-table-virtual-table-panel-ZOYCXFM5.js b/dist/data-table-virtual-table-panel-ZOYCXFM5.js deleted file mode 100644 index 1cd6bc5..0000000 --- a/dist/data-table-virtual-table-panel-ZOYCXFM5.js +++ /dev/null @@ -1,2 +0,0 @@ -export{a as DataTableVirtualTablePanel}from'./chunk-W7VNQT7O.js';import'./chunk-PRDXFLFB.js';import'./chunk-F2RBZWQV.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-O6MUTKGE.js';import'./chunk-XTVBESM5.js';//# sourceMappingURL=data-table-virtual-table-panel-ZOYCXFM5.js.map -//# sourceMappingURL=data-table-virtual-table-panel-ZOYCXFM5.js.map \ No newline at end of file diff --git a/dist/heroui-virtual.d.ts b/dist/heroui-virtual.d.ts index e9ddc29..5beff98 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, 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, DataTableScrollbarVisibility, 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 DataTableProps } from './types-BGNR6Ymh.js'; +export { a as DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, b as DataTableAccessibilityOptions, c as DataTableActionErrorContext, d as DataTableActionErrorSource, e as DataTableAggregationFn, f as DataTableAlign, g as DataTableApi, h as DataTableAutoPageSizeConfig, i as DataTableCardRendererProps, j as DataTableCardSizing, k as DataTableCardVirtualizationConfig, l as DataTableCellCoordinate, m as DataTableCellEditRenderProps, n as DataTableCellOverflow, o as DataTableCellSelection, p as DataTableClipboardConfig, q as DataTableClipboardCopyOptions, r as DataTableClipboardCopyScope, s as DataTableClipboardPasteContext, t as DataTableColumnDef, u as DataTableColumnFilterConfig, v as DataTableColumnFilterOperator, w as DataTableColumnFilterOption, x as DataTableColumnFilterRangeValue, y as DataTableColumnFilterType, z as DataTableColumnFixed, A as DataTableColumnGroupDef, B as DataTableColumnMeta, C as DataTableColumnPinningState, E as DataTableColumnPrefs, F as DataTableColumnType, G as DataTableColumnVisibilityOption, H as DataTableContainerBreakpoint, I as DataTableCsvExportOptions, J as DataTableCsvExportScope, K as DataTableDensity, L as DataTableDetailPanel, M as DataTableDragAndDropConfig, N as DataTableEditableRowsConfig, O as DataTableEmptyStateContext, P as DataTableExpandedRowProps, Q as DataTableFacetedFilterOptions, R as DataTableFileUploadConfig, S as DataTableGridCommandContext, T as DataTableGridCommands, U as DataTableHiddenRowsConfig, V as DataTableInfiniteScroll, W as DataTableInitialState, X as DataTableInteractiveGridOptions, Y as DataTableLabels, Z as DataTableLoadingState, _ as DataTablePersistenceConfig, $ as DataTablePersistenceOperation, a0 as DataTablePersistencePayload, a1 as DataTablePersistenceSlice, a2 as DataTablePersistenceStorage, a3 as DataTableResetOptions, a4 as DataTableRowAction, a5 as DataTableRowClassNameContext, a6 as DataTableRowLoadingState, a7 as DataTableSavedView, a8 as DataTableSavedViewSlice, a9 as DataTableSavedViewsChangeOperation, aa as DataTableSavedViewsConfig, ab as DataTableSavedViewsPayload, ac as DataTableScrollbarVisibility, ad as DataTableSelectionAction, ae as DataTableSelectionActionContext, af as DataTableState, ag as DataTableStateOverlay, ah as DataTableStateOverlayContext, ai as DataTableSummaryRow, aj as DataTableToolbarAction, ak as DataTableToolbarDataOperations, al as DataTableToolbarVisibility, am as DataTableViewMode, an as DataTableVirtualizationConfig, ao as alignClassName, ap as canEditRow, aq as canUseRowAction, ar as cellAlignClassName, as as headerAlignClassName, at as hideOnClassName, au as isHiddenAtContainerWidth, av as isRowVisible, aw as resolveColumnAlign, ax as resolveRowActionLabel, ay as rowSelectionStateFromRows } from './types-BGNR6Ymh.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, 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, scrollbarVisibility, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; diff --git a/dist/heroui-virtual.js b/dist/heroui-virtual.js index 3976e47..34b2f03 100644 --- a/dist/heroui-virtual.js +++ b/dist/heroui-virtual.js @@ -1,2 +1,2 @@ -import {a as a$2}from'./chunk-GIX7N3AJ.js';import {a as a$1}from'./chunk-VGMTY7KM.js';import'./chunk-B6JTUAWE.js';import'./chunk-W7VNQT7O.js';import'./chunk-VSIOOKCO.js';import'./chunk-I3CW6DTA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-PRDXFLFB.js';import'./chunk-F2RBZWQV.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-O6MUTKGE.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-GIX7N3AJ.js';import {a as a$1}from'./chunk-UMW6DOXG.js';import'./chunk-LTEXTQ2M.js';import'./chunk-IZQDLLCH.js';import'./chunk-VSIOOKCO.js';import'./chunk-XZTPNWJD.js';import'./chunk-EJHT5JBZ.js';import'./chunk-YKVWP3UJ.js';import'./chunk-YWMYYP3I.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-7IWMFF7E.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.d.ts b/dist/heroui.d.ts index e9ddc29..5beff98 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, 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, DataTableScrollbarVisibility, 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 DataTableProps } from './types-BGNR6Ymh.js'; +export { a as DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, b as DataTableAccessibilityOptions, c as DataTableActionErrorContext, d as DataTableActionErrorSource, e as DataTableAggregationFn, f as DataTableAlign, g as DataTableApi, h as DataTableAutoPageSizeConfig, i as DataTableCardRendererProps, j as DataTableCardSizing, k as DataTableCardVirtualizationConfig, l as DataTableCellCoordinate, m as DataTableCellEditRenderProps, n as DataTableCellOverflow, o as DataTableCellSelection, p as DataTableClipboardConfig, q as DataTableClipboardCopyOptions, r as DataTableClipboardCopyScope, s as DataTableClipboardPasteContext, t as DataTableColumnDef, u as DataTableColumnFilterConfig, v as DataTableColumnFilterOperator, w as DataTableColumnFilterOption, x as DataTableColumnFilterRangeValue, y as DataTableColumnFilterType, z as DataTableColumnFixed, A as DataTableColumnGroupDef, B as DataTableColumnMeta, C as DataTableColumnPinningState, E as DataTableColumnPrefs, F as DataTableColumnType, G as DataTableColumnVisibilityOption, H as DataTableContainerBreakpoint, I as DataTableCsvExportOptions, J as DataTableCsvExportScope, K as DataTableDensity, L as DataTableDetailPanel, M as DataTableDragAndDropConfig, N as DataTableEditableRowsConfig, O as DataTableEmptyStateContext, P as DataTableExpandedRowProps, Q as DataTableFacetedFilterOptions, R as DataTableFileUploadConfig, S as DataTableGridCommandContext, T as DataTableGridCommands, U as DataTableHiddenRowsConfig, V as DataTableInfiniteScroll, W as DataTableInitialState, X as DataTableInteractiveGridOptions, Y as DataTableLabels, Z as DataTableLoadingState, _ as DataTablePersistenceConfig, $ as DataTablePersistenceOperation, a0 as DataTablePersistencePayload, a1 as DataTablePersistenceSlice, a2 as DataTablePersistenceStorage, a3 as DataTableResetOptions, a4 as DataTableRowAction, a5 as DataTableRowClassNameContext, a6 as DataTableRowLoadingState, a7 as DataTableSavedView, a8 as DataTableSavedViewSlice, a9 as DataTableSavedViewsChangeOperation, aa as DataTableSavedViewsConfig, ab as DataTableSavedViewsPayload, ac as DataTableScrollbarVisibility, ad as DataTableSelectionAction, ae as DataTableSelectionActionContext, af as DataTableState, ag as DataTableStateOverlay, ah as DataTableStateOverlayContext, ai as DataTableSummaryRow, aj as DataTableToolbarAction, ak as DataTableToolbarDataOperations, al as DataTableToolbarVisibility, am as DataTableViewMode, an as DataTableVirtualizationConfig, ao as alignClassName, ap as canEditRow, aq as canUseRowAction, ar as cellAlignClassName, as as headerAlignClassName, at as hideOnClassName, au as isHiddenAtContainerWidth, av as isRowVisible, aw as resolveColumnAlign, ax as resolveRowActionLabel, ay as rowSelectionStateFromRows } from './types-BGNR6Ymh.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, 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, scrollbarVisibility, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; diff --git a/dist/heroui.js b/dist/heroui.js index bba80b2..4effe21 100644 --- a/dist/heroui.js +++ b/dist/heroui.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-GIX7N3AJ.js';import'./chunk-VSIOOKCO.js';import {i}from'./chunk-I3CW6DTA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-PRDXFLFB.js';import'./chunk-F2RBZWQV.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-O6MUTKGE.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-GIX7N3AJ.js';import'./chunk-VSIOOKCO.js';import {i}from'./chunk-XZTPNWJD.js';import'./chunk-EJHT5JBZ.js';import'./chunk-YKVWP3UJ.js';import'./chunk-YWMYYP3I.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-7IWMFF7E.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.d.ts b/dist/index.d.ts index e9ddc29..5beff98 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, 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, DataTableScrollbarVisibility, 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 DataTableProps } from './types-BGNR6Ymh.js'; +export { a as DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, b as DataTableAccessibilityOptions, c as DataTableActionErrorContext, d as DataTableActionErrorSource, e as DataTableAggregationFn, f as DataTableAlign, g as DataTableApi, h as DataTableAutoPageSizeConfig, i as DataTableCardRendererProps, j as DataTableCardSizing, k as DataTableCardVirtualizationConfig, l as DataTableCellCoordinate, m as DataTableCellEditRenderProps, n as DataTableCellOverflow, o as DataTableCellSelection, p as DataTableClipboardConfig, q as DataTableClipboardCopyOptions, r as DataTableClipboardCopyScope, s as DataTableClipboardPasteContext, t as DataTableColumnDef, u as DataTableColumnFilterConfig, v as DataTableColumnFilterOperator, w as DataTableColumnFilterOption, x as DataTableColumnFilterRangeValue, y as DataTableColumnFilterType, z as DataTableColumnFixed, A as DataTableColumnGroupDef, B as DataTableColumnMeta, C as DataTableColumnPinningState, E as DataTableColumnPrefs, F as DataTableColumnType, G as DataTableColumnVisibilityOption, H as DataTableContainerBreakpoint, I as DataTableCsvExportOptions, J as DataTableCsvExportScope, K as DataTableDensity, L as DataTableDetailPanel, M as DataTableDragAndDropConfig, N as DataTableEditableRowsConfig, O as DataTableEmptyStateContext, P as DataTableExpandedRowProps, Q as DataTableFacetedFilterOptions, R as DataTableFileUploadConfig, S as DataTableGridCommandContext, T as DataTableGridCommands, U as DataTableHiddenRowsConfig, V as DataTableInfiniteScroll, W as DataTableInitialState, X as DataTableInteractiveGridOptions, Y as DataTableLabels, Z as DataTableLoadingState, _ as DataTablePersistenceConfig, $ as DataTablePersistenceOperation, a0 as DataTablePersistencePayload, a1 as DataTablePersistenceSlice, a2 as DataTablePersistenceStorage, a3 as DataTableResetOptions, a4 as DataTableRowAction, a5 as DataTableRowClassNameContext, a6 as DataTableRowLoadingState, a7 as DataTableSavedView, a8 as DataTableSavedViewSlice, a9 as DataTableSavedViewsChangeOperation, aa as DataTableSavedViewsConfig, ab as DataTableSavedViewsPayload, ac as DataTableScrollbarVisibility, ad as DataTableSelectionAction, ae as DataTableSelectionActionContext, af as DataTableState, ag as DataTableStateOverlay, ah as DataTableStateOverlayContext, ai as DataTableSummaryRow, aj as DataTableToolbarAction, ak as DataTableToolbarDataOperations, al as DataTableToolbarVisibility, am as DataTableViewMode, an as DataTableVirtualizationConfig, ao as alignClassName, ap as canEditRow, aq as canUseRowAction, ar as cellAlignClassName, as as headerAlignClassName, at as hideOnClassName, au as isHiddenAtContainerWidth, av as isRowVisible, aw as resolveColumnAlign, ax as resolveRowActionLabel, ay as rowSelectionStateFromRows } from './types-BGNR6Ymh.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, 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, scrollbarVisibility, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; diff --git a/dist/index.js b/dist/index.js index 2716bc8..af89e38 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-RS7MSX54.js';import'./chunk-VSIOOKCO.js';import {i}from'./chunk-I3CW6DTA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-PRDXFLFB.js';import'./chunk-F2RBZWQV.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-O6MUTKGE.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-RS7MSX54.js';import'./chunk-VSIOOKCO.js';import {i}from'./chunk-XZTPNWJD.js';import'./chunk-EJHT5JBZ.js';import'./chunk-YKVWP3UJ.js';import'./chunk-YWMYYP3I.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-7IWMFF7E.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.d.ts b/dist/thegridcn-virtual.d.ts index e9ddc29..5beff98 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, 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, DataTableScrollbarVisibility, 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 DataTableProps } from './types-BGNR6Ymh.js'; +export { a as DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, b as DataTableAccessibilityOptions, c as DataTableActionErrorContext, d as DataTableActionErrorSource, e as DataTableAggregationFn, f as DataTableAlign, g as DataTableApi, h as DataTableAutoPageSizeConfig, i as DataTableCardRendererProps, j as DataTableCardSizing, k as DataTableCardVirtualizationConfig, l as DataTableCellCoordinate, m as DataTableCellEditRenderProps, n as DataTableCellOverflow, o as DataTableCellSelection, p as DataTableClipboardConfig, q as DataTableClipboardCopyOptions, r as DataTableClipboardCopyScope, s as DataTableClipboardPasteContext, t as DataTableColumnDef, u as DataTableColumnFilterConfig, v as DataTableColumnFilterOperator, w as DataTableColumnFilterOption, x as DataTableColumnFilterRangeValue, y as DataTableColumnFilterType, z as DataTableColumnFixed, A as DataTableColumnGroupDef, B as DataTableColumnMeta, C as DataTableColumnPinningState, E as DataTableColumnPrefs, F as DataTableColumnType, G as DataTableColumnVisibilityOption, H as DataTableContainerBreakpoint, I as DataTableCsvExportOptions, J as DataTableCsvExportScope, K as DataTableDensity, L as DataTableDetailPanel, M as DataTableDragAndDropConfig, N as DataTableEditableRowsConfig, O as DataTableEmptyStateContext, P as DataTableExpandedRowProps, Q as DataTableFacetedFilterOptions, R as DataTableFileUploadConfig, S as DataTableGridCommandContext, T as DataTableGridCommands, U as DataTableHiddenRowsConfig, V as DataTableInfiniteScroll, W as DataTableInitialState, X as DataTableInteractiveGridOptions, Y as DataTableLabels, Z as DataTableLoadingState, _ as DataTablePersistenceConfig, $ as DataTablePersistenceOperation, a0 as DataTablePersistencePayload, a1 as DataTablePersistenceSlice, a2 as DataTablePersistenceStorage, a3 as DataTableResetOptions, a4 as DataTableRowAction, a5 as DataTableRowClassNameContext, a6 as DataTableRowLoadingState, a7 as DataTableSavedView, a8 as DataTableSavedViewSlice, a9 as DataTableSavedViewsChangeOperation, aa as DataTableSavedViewsConfig, ab as DataTableSavedViewsPayload, ac as DataTableScrollbarVisibility, ad as DataTableSelectionAction, ae as DataTableSelectionActionContext, af as DataTableState, ag as DataTableStateOverlay, ah as DataTableStateOverlayContext, ai as DataTableSummaryRow, aj as DataTableToolbarAction, ak as DataTableToolbarDataOperations, al as DataTableToolbarVisibility, am as DataTableViewMode, an as DataTableVirtualizationConfig, ao as alignClassName, ap as canEditRow, aq as canUseRowAction, ar as cellAlignClassName, as as headerAlignClassName, at as hideOnClassName, au as isHiddenAtContainerWidth, av as isRowVisible, aw as resolveColumnAlign, ax as resolveRowActionLabel, ay as rowSelectionStateFromRows } from './types-BGNR6Ymh.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, 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, scrollbarVisibility, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; diff --git a/dist/thegridcn-virtual.js b/dist/thegridcn-virtual.js index 16153cc..a53fa65 100644 --- a/dist/thegridcn-virtual.js +++ b/dist/thegridcn-virtual.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-VGMTY7KM.js';import'./chunk-B6JTUAWE.js';import'./chunk-W7VNQT7O.js';import {a as a$2}from'./chunk-2JHOYUSH.js';import'./chunk-VSIOOKCO.js';import'./chunk-I3CW6DTA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-PRDXFLFB.js';import'./chunk-F2RBZWQV.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-O6MUTKGE.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-UMW6DOXG.js';import'./chunk-LTEXTQ2M.js';import'./chunk-IZQDLLCH.js';import {a as a$2}from'./chunk-2JHOYUSH.js';import'./chunk-VSIOOKCO.js';import'./chunk-XZTPNWJD.js';import'./chunk-EJHT5JBZ.js';import'./chunk-YKVWP3UJ.js';import'./chunk-YWMYYP3I.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-7IWMFF7E.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.d.ts b/dist/thegridcn.d.ts index e9ddc29..5beff98 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, 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, DataTableScrollbarVisibility, 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 DataTableProps } from './types-BGNR6Ymh.js'; +export { a as DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, b as DataTableAccessibilityOptions, c as DataTableActionErrorContext, d as DataTableActionErrorSource, e as DataTableAggregationFn, f as DataTableAlign, g as DataTableApi, h as DataTableAutoPageSizeConfig, i as DataTableCardRendererProps, j as DataTableCardSizing, k as DataTableCardVirtualizationConfig, l as DataTableCellCoordinate, m as DataTableCellEditRenderProps, n as DataTableCellOverflow, o as DataTableCellSelection, p as DataTableClipboardConfig, q as DataTableClipboardCopyOptions, r as DataTableClipboardCopyScope, s as DataTableClipboardPasteContext, t as DataTableColumnDef, u as DataTableColumnFilterConfig, v as DataTableColumnFilterOperator, w as DataTableColumnFilterOption, x as DataTableColumnFilterRangeValue, y as DataTableColumnFilterType, z as DataTableColumnFixed, A as DataTableColumnGroupDef, B as DataTableColumnMeta, C as DataTableColumnPinningState, E as DataTableColumnPrefs, F as DataTableColumnType, G as DataTableColumnVisibilityOption, H as DataTableContainerBreakpoint, I as DataTableCsvExportOptions, J as DataTableCsvExportScope, K as DataTableDensity, L as DataTableDetailPanel, M as DataTableDragAndDropConfig, N as DataTableEditableRowsConfig, O as DataTableEmptyStateContext, P as DataTableExpandedRowProps, Q as DataTableFacetedFilterOptions, R as DataTableFileUploadConfig, S as DataTableGridCommandContext, T as DataTableGridCommands, U as DataTableHiddenRowsConfig, V as DataTableInfiniteScroll, W as DataTableInitialState, X as DataTableInteractiveGridOptions, Y as DataTableLabels, Z as DataTableLoadingState, _ as DataTablePersistenceConfig, $ as DataTablePersistenceOperation, a0 as DataTablePersistencePayload, a1 as DataTablePersistenceSlice, a2 as DataTablePersistenceStorage, a3 as DataTableResetOptions, a4 as DataTableRowAction, a5 as DataTableRowClassNameContext, a6 as DataTableRowLoadingState, a7 as DataTableSavedView, a8 as DataTableSavedViewSlice, a9 as DataTableSavedViewsChangeOperation, aa as DataTableSavedViewsConfig, ab as DataTableSavedViewsPayload, ac as DataTableScrollbarVisibility, ad as DataTableSelectionAction, ae as DataTableSelectionActionContext, af as DataTableState, ag as DataTableStateOverlay, ah as DataTableStateOverlayContext, ai as DataTableSummaryRow, aj as DataTableToolbarAction, ak as DataTableToolbarDataOperations, al as DataTableToolbarVisibility, am as DataTableViewMode, an as DataTableVirtualizationConfig, ao as alignClassName, ap as canEditRow, aq as canUseRowAction, ar as cellAlignClassName, as as headerAlignClassName, at as hideOnClassName, au as isHiddenAtContainerWidth, av as isRowVisible, aw as resolveColumnAlign, ax as resolveRowActionLabel, ay as rowSelectionStateFromRows } from './types-BGNR6Ymh.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, 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, scrollbarVisibility, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; diff --git a/dist/thegridcn.js b/dist/thegridcn.js index ad133ef..f2e0cfe 100644 --- a/dist/thegridcn.js +++ b/dist/thegridcn.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-2JHOYUSH.js';import'./chunk-VSIOOKCO.js';import {i}from'./chunk-I3CW6DTA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-PRDXFLFB.js';import'./chunk-F2RBZWQV.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-O6MUTKGE.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-2JHOYUSH.js';import'./chunk-VSIOOKCO.js';import {i}from'./chunk-XZTPNWJD.js';import'./chunk-EJHT5JBZ.js';import'./chunk-YKVWP3UJ.js';import'./chunk-YWMYYP3I.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-7IWMFF7E.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/types-BGNR6Ymh.d.ts b/dist/types-BGNR6Ymh.d.ts new file mode 100644 index 0000000..b7536fd --- /dev/null +++ b/dist/types-BGNR6Ymh.d.ts @@ -0,0 +1,849 @@ +import * as _tanstack_react_table from '@tanstack/react-table'; +import { ColumnDef, Table, AggregationFnDef, filterFns, RowData, CellContext, FilterFnOption, Row, Cell, Header, Column, HeaderContext, ColumnFiltersState, SortingState, GroupingState, ExpandedState, ColumnOrderState, RowPinningState, ColumnVisibilityState, PaginationState, ColumnSizingState, Updater } from '@tanstack/react-table'; +import * as React from 'react'; + +type BuiltInFilterFn = (typeof filterFns)[keyof typeof filterFns]; +declare const dataTableFeatures: { + columnFacetingFeature: _tanstack_react_table.TableFeature; + columnFilteringFeature: _tanstack_react_table.TableFeature; + globalFilteringFeature: _tanstack_react_table.TableFeature; + rowAggregationFeature: _tanstack_react_table.TableFeature; + columnGroupingFeature: _tanstack_react_table.TableFeature; + columnOrderingFeature: _tanstack_react_table.TableFeature; + columnPinningFeature: _tanstack_react_table.TableFeature; + columnSizingFeature: _tanstack_react_table.TableFeature; + columnResizingFeature: _tanstack_react_table.TableFeature; + columnVisibilityFeature: _tanstack_react_table.TableFeature; + rowExpandingFeature: _tanstack_react_table.TableFeature; + rowPaginationFeature: _tanstack_react_table.TableFeature; + rowPinningFeature: _tanstack_react_table.TableFeature; + rowSelectionFeature: _tanstack_react_table.TableFeature; + rowSortingFeature: _tanstack_react_table.TableFeature; + expandedRowModel: (table: Table) => () => _tanstack_react_table.RowModel; + facetedMinMaxValues: (table: Table<_tanstack_react_table.TableFeatures, any>, columnId: string) => () => undefined | [number, number]; + facetedRowModel: (table: Table, columnId: string) => () => _tanstack_react_table.RowModel; + facetedUniqueValues: (table: Table<_tanstack_react_table.TableFeatures, any>, columnId: string) => () => Map; + filteredRowModel: (table: Table) => () => _tanstack_react_table.RowModel; + groupedRowModel: (table: Table) => () => _tanstack_react_table.RowModel; + paginatedRowModel: (table: Table) => () => _tanstack_react_table.RowModel; + sortedRowModel: (table: Table) => () => _tanstack_react_table.RowModel; + aggregationFns: { + [x: string]: AggregationFnDef; + }; + filterFns: Record; + sortFns: { + alphanumeric: _tanstack_react_table.CreatedSortFn; + alphanumericCaseSensitive: _tanstack_react_table.CreatedSortFn; + basic: _tanstack_react_table.CreatedSortFn; + datetime: _tanstack_react_table.CreatedSortFn; + text: _tanstack_react_table.CreatedSortFn; + textCaseSensitive: _tanstack_react_table.CreatedSortFn; + }; +}; +type DataTableFeatures = typeof dataTableFeatures; +type DataTableRowData = Extract; +type DataTableTanStackTable = Table>; +type DataTableTanStackRow = Row>; +type DataTableTanStackColumn = Column, TValue>; +type DataTableTanStackCell = Cell, TValue>; +type DataTableTanStackHeader = Header, TValue>; +type DataTableTanStackColumnDef = ColumnDef, TValue>; +type DataTableTanStackCellContext = CellContext, TValue>; +type DataTableTanStackHeaderContext = HeaderContext, TValue>; +type DataTableTanStackFilterFnOption = FilterFnOption>; +type DataTableTanStackAggregationFn = AggregationFnDef>; + +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: DataTableTanStackTable; + 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"; +/** Physical pinning state retained at the public API and persistence boundary. */ +type DataTableColumnPinningState = { + left?: Array; + right?: Array; +}; +/** A TanStack Table v9 context-based aggregation definition. */ +type DataTableAggregationFn = DataTableTanStackAggregationFn; +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" | "faceted" | "boolean" | "numberRange" | "dateRange"; +type DataTableColumnFilterOperator = "contains" | "equals" | "startsWith" | "endsWith"; +type DataTableCsvExportScope = "filtered" | "page" | "selected" | "all"; +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: DataTableTanStackTable; +}; +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; + skeleton?: React.ReactNode; +}; +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: DataTableTanStackCellContext; + 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; + to?: TValue; +}; +type DataTableColumnFilterConfig = { + type: DataTableColumnFilterType; + label?: string; + placeholder?: string; + options?: 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; + min?: number | string; + max?: number | string; + step?: number; +}; +type DataTableColumnMeta = { + type?: DataTableColumnType; + fixed?: DataTableColumnFixed; + cardTitle?: boolean; + hideOn?: DataTableContainerBreakpoint | Array; + minWidth?: number; + align?: DataTableAlign; + overflow?: DataTableCellOverflow | ((args: { + row: TData; + value: TValue | undefined; + }) => DataTableCellOverflow | undefined); + headerClassName?: string; + headerStyle?: React.CSSProperties; + cellClassName?: string | ((args: { + row: TData; + value: TValue | undefined; + }) => string | undefined); + responsiveClassName?: string; + skeleton?: (context: DataTableTanStackCellContext) => React.ReactNode; + filter?: DataTableColumnFilterConfig; + parseEditValue?: (value: unknown, context: DataTableTanStackCellContext) => unknown; + formatEditValue?: (value: unknown, context: DataTableTanStackCellContext) => string; + renderEditCell?: (props: DataTableCellEditRenderProps) => React.ReactNode; +}; +type DataTableColumnDef = DataTableTanStackColumnDef & { + meta?: DataTableColumnMeta; + columns?: Array>; +}; +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; + label: string; + icon?: React.ComponentType<{ + className?: string; + }>; + iconOnly?: boolean; + placement?: "primary" | "trailing"; + onClick: (context: { + rows: Array; + openFileDialog?: () => void; + }) => void | Promise; + 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; + icon?: React.ComponentType<{ + className?: string; + }>; + iconOnly?: boolean; + onClick: (context: DataTableSelectionActionContext) => void | Promise; + variant?: "default" | "secondary" | "outline" | "ghost" | "destructive"; + disabled?: boolean | ((rows: Array, context: DataTableSelectionActionContext) => boolean); +}; +type DataTableRowAction = { + key: string; + label: string | ((row: TData) => string); + icon?: React.ComponentType<{ + className?: string; + }>; + onClick: (row: TData) => void | Promise; + variant?: "default" | "secondary" | "destructive"; + hidden?: (row: TData) => boolean; + disabled?: (row: TData) => boolean; +}; +type DataTableColumnVisibilityOption = { + id: string; + label: string; + visible: boolean; + canHide: boolean; + pinned?: false | DataTableColumnFixed; +}; +type DataTableToolbarVisibility = { + title?: boolean; + search?: boolean; + actions?: boolean; + trailingActions?: boolean; + options?: boolean; + 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; + depth: number; + canExpandSubRows: boolean; + isSubRowsExpanded: boolean; + toggleSubRowsExpanded: () => void; + isSelected: boolean; + onSelectedChange: (nextValue: boolean) => void; + actions: Array>; + isEditing: boolean; + startEditing: () => void; + cancelEditing: () => void; +}; +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; + hasMore: boolean; + isLoadingMore?: boolean; + onLoadMore: () => void | Promise; +}; +type DataTableHiddenRowsConfig = { + getIsHidden: (row: TData) => boolean; + label?: string; +}; +type DataTableEmptyStateContext = { + rows: Array; + toolbarQueryValue: string; +}; +type DataTableDragAndDropConfig = { + isDragging?: boolean; + onDragEnter?: React.DragEventHandler; + onDragOver?: React.DragEventHandler; + onDragLeave?: React.DragEventHandler; + onDrop?: React.DragEventHandler; + getRowDraggable?: (row: TData) => boolean; + onRowDragStart?: (context: { + row: TData; + rowId: string; + event: React.DragEvent; + }) => void; + onRowDragEnd?: (context: { + row: TData; + rowId: string; + event: React.DragEvent; + }) => void; +}; +type DataTableFileUploadConfig = { + accept?: string; + disabled?: boolean; + multiple?: boolean; + onFilesSelected: (files: FileList | Array) => void | Promise; +}; +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"; +}; +type DataTableExpandedRowProps = { + row: TData; + rowId: string; + tableRow: DataTableTanStackRow; +}; +/** 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; + columns?: Array; + scope?: DataTableCsvExportScope; + escapeFormulaValues?: boolean; + lineEnding?: "\n" | "\r\n"; + getCellValue?: (context: { + row: TData; + rowId: string; + columnId: string; + value: unknown; + }) => unknown; + onExport?: (context: { + csv: string; + filename: string; + rows: Array; + scope: DataTableCsvExportScope; + }) => void | Promise; +}; +type DataTableActionErrorContext = { + source: DataTableActionErrorSource; + error: unknown; + actionKey?: string; + row?: TData; +}; +type DataTableColumnPrefs = { + visibility?: ColumnVisibilityState; + sizing?: Record; + order?: ColumnOrderState; + pinning?: DataTableColumnPinningState; + rowPinning?: RowPinningState; + density?: DataTableDensity; +}; +type DataTablePersistenceSlice = keyof DataTableColumnPrefs; +type DataTablePersistenceStorage = Pick; +type DataTablePersistenceOperation = "read" | "write" | "remove" | "serialize" | "deserialize" | "migrate"; +type DataTablePersistencePayload = { + version: string | number; + state: DataTableColumnPrefs; +}; +type DataTablePersistenceConfig = { + key: string; + version?: string | number; + slices?: Array; + storage?: DataTablePersistenceStorage; + serialize?: (payload: DataTablePersistencePayload) => string; + deserialize?: (value: string) => unknown; + migrate?: (payload: { + version: unknown; + state: unknown; + }, targetVersion: string | number) => DataTableColumnPrefs | undefined; + debounceMs?: number; + onError?: (context: { + error: unknown; + operation: DataTablePersistenceOperation; + }) => void; +}; +type DataTableState = { + sorting: SortingState; + pagination: PaginationState; + rowSelection: Record; + columnVisibility: ColumnVisibilityState; + columnFilters: ColumnFiltersState; + expanded: ExpandedState; + columnOrder: ColumnOrderState; + columnPinning: DataTableColumnPinningState; + 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; + globalFilter: string; +}; +type DataTableInitialState = Partial; +type DataTableSavedViewSlice = keyof DataTableState; +type DataTableSavedView = { + id: string; + name: string; + createdAt: string; + updatedAt: string; + state: Partial; +}; +type DataTableSavedViewsPayload = { + version: string | number; + views: Array; +}; +type DataTableSavedViewsChangeOperation = "create" | "rename" | "delete" | "clear"; +type DataTableSavedViewsConfig = { + key: string; + version?: string | number; + slices?: Array; + storage?: DataTablePersistenceStorage; + serialize?: (payload: DataTableSavedViewsPayload) => string; + deserialize?: (value: string) => unknown; + migrate?: (payload: { + version: unknown; + views: unknown; + }, targetVersion: string | number) => Array | undefined; + onChange?: (views: Array, operation: DataTableSavedViewsChangeOperation) => void; + onApply?: (view: DataTableSavedView) => void; + onError?: (context: { + error: unknown; + operation: DataTablePersistenceOperation; + }) => void; +}; +type DataTableResetOptions = { + clearPersistence?: boolean; +}; +type DataTableApi = { + getTable: () => DataTableTanStackTable | null; + getState: () => DataTableState; + snapshot: () => DataTableState; + restore: (state: Partial) => void; + resetColumnLayout: (options?: DataTableResetOptions) => void; + resetState: (options?: DataTableResetOptions) => void; + clearPersistedState: () => boolean; + getSavedViews: () => Array; + createSavedView: (name: string) => DataTableSavedView | undefined; + applySavedView: (id: string) => boolean; + 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; + 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; + searchTable: string; + clearSearch: string; + noRowsTitle: string; + noRowsDescription: string; + noMatchingRowsTitle: string; + noMatchingRowsDescription: string; + tableOptions: string; + columns: string; + filters: string; + clearFilters: string; + filterFrom?: string; + filterTo?: string; + filterTrue?: string; + filterFalse?: string; + selectedRows: (count: number) => string; + showHiddenRows: (label: string) => string; + recordsPerPage: string; + totalRecords: (count: number) => string; + pageStatus: (pageIndex: number, pageCount: number) => string; + pageStatusUnknown?: (pageIndex: number) => string; + pagination?: string; + morePages?: string; + firstPage: string; + previousPage: string; + nextPage: string; + lastPage: string; + selectAllVisibleRows?: string; + selectAllFilteredRows?: string; + selectRow?: string; + selectCardRow?: (rowId: string) => string; + switchToTableView?: string; + switchToCardView?: string; + tableView?: string; + cardView?: string; + allFilterOptions?: string; + actions: string; + rowActions: string; + editRow: string; + saveEdit: string; + cancelEdit: string; + expandRow: string; + collapseRow: string; + expandRowDetails?: string; + collapseRowDetails?: string; + exportCsv: string; + print?: string; + enterFullscreen?: string; + exitFullscreen?: string; + errorTitle?: string; + errorDescription?: string; + retry?: string; + density: string; + compactDensity: string; + comfortableDensity: string; + spaciousDensity: string; + pinLeft: string; + pinRight: string; + unpin: string; + pinRowToTop: string; + 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; + label?: React.ReactNode; + cells: Record; + columnId: string; + }) => React.ReactNode)>; +}; +type DataTableRowClassNameContext = { + row: TData; + rowId: string; + rowIndex: number; + isEditing: boolean; + isExpanded: boolean; + isLoading: boolean; + isSelected: boolean; + pinnedPosition: false | "top" | "bottom"; +}; +type DataTableScrollbarVisibility = "auto" | "always" | "scroll" | "hover"; +type DataTableProps = { + columns: Array>; + data: Array; + getRowId: (row: TData, index: number) => string; + children?: React.ReactNode; + title?: string; + description?: string; + toolbarQueryValue?: string; + onToolbarQueryValueChange?: (value: string) => void; + toolbarQueryPlaceholder?: string; + toolbarQueryDebounceMs?: number; + manualFiltering?: boolean; + enableToolbarQueryFiltering?: boolean; + globalFilterFn?: DataTableTanStackFilterFnOption; + columnFilters?: ColumnFiltersState; + onColumnFiltersChange?: (filters: ColumnFiltersState) => void; + enableColumnFilters?: boolean; + customToolbar?: React.ReactNode; + compactToolbar?: React.ReactNode; + rowsPerPageOptions?: Array; + totalRowCount?: number; + hasNextPage?: boolean; + 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; + manualPagination?: boolean; + 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?: DataTableColumnPinningState; + onColumnPinningChange?: (columnPinning: DataTableColumnPinningState) => 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>; + 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; + columnPrefsKey?: string; + persistence?: DataTablePersistenceConfig; + savedViews?: DataTableSavedViewsConfig; + initialState?: DataTableInitialState; + state?: Partial; + onStateChange?: (updater: Updater) => void; + apiRef?: React.Ref>; + labels?: Partial; + summaryRows?: Array>; + cardRenderer?: (props: DataTableCardRendererProps) => React.ReactNode; + cardSizing?: DataTableCardSizing; + cardGridClassName?: string; + cardClassName?: string; + 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; + hiddenRows?: DataTableHiddenRowsConfig; + showHiddenRows?: boolean; + onShowHiddenRowsChange?: (showHiddenRows: boolean) => void; + infiniteScroll?: DataTableInfiniteScroll; + editableRows?: DataTableEditableRowsConfig; + columnVisibility?: ColumnVisibilityState; + onColumnVisibilityChange?: (visibility: ColumnVisibilityState) => void; + columnSizing?: ColumnSizingState; + onColumnSizingChange?: (sizing: ColumnSizingState) => void; + enableColumnResizing?: boolean; + columnResizeMode?: "onChange" | "onEnd"; + layoutMode?: "fill" | "fit"; + stickyHeader?: boolean; + /** Controls when scrollbars are visible. Defaults to `"hover"`. */ + scrollbarVisibility?: DataTableScrollbarVisibility; + showFooter?: boolean; + showToolbar?: boolean; + 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; + stripedRows?: boolean; + getRowClassName?: (row: TData, context: DataTableRowClassNameContext) => string | undefined; + onRowClick?: (context: { + row: TData; + rowId: string; + }) => void | Promise; + onActionError?: (context: DataTableActionErrorContext) => void; + 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; +declare function canUseRowAction(action: DataTableRowAction, row: TData): boolean; +declare function canEditRow(editableRows: DataTableEditableRowsConfig | undefined, row: TData): boolean; +declare function alignClassName(align: DataTableAlign | undefined): "text-center" | "text-right" | "text-left"; +declare function resolveColumnAlign(align: DataTableAlign | undefined, type: DataTableColumnType | undefined): DataTableAlign; +declare function headerAlignClassName(context: DataTableTanStackHeaderContext): "text-center" | "text-right" | "text-left"; +declare function cellAlignClassName(context: DataTableTanStackCellContext): "text-center" | "text-right" | "text-left"; +declare function hideOnClassName(hideOn: DataTableContainerBreakpoint | Array | undefined): string | undefined; +declare function isHiddenAtContainerWidth(hideOn: DataTableContainerBreakpoint | Array | undefined, containerWidth: number): boolean; +declare function rowSelectionStateFromRows(rows: Array>): Extract[]; + +export { type DataTablePersistenceOperation as $, type DataTableColumnGroupDef as A, type DataTableColumnMeta as B, type DataTableColumnPinningState as C, type DataTableProps as D, type DataTableColumnPrefs as E, type DataTableColumnType as F, type DataTableColumnVisibilityOption as G, type DataTableContainerBreakpoint as H, type DataTableCsvExportOptions as I, type DataTableCsvExportScope as J, type DataTableDensity as K, type DataTableDetailPanel as L, type DataTableDragAndDropConfig as M, type DataTableEditableRowsConfig as N, type DataTableEmptyStateContext as O, type DataTableExpandedRowProps as P, type DataTableFacetedFilterOptions as Q, type DataTableFileUploadConfig as R, type DataTableGridCommandContext as S, type DataTableGridCommands as T, type DataTableHiddenRowsConfig as U, type DataTableInfiniteScroll as V, type DataTableInitialState as W, type DataTableInteractiveGridOptions as X, type DataTableLabels as Y, type DataTableLoadingState as Z, type DataTablePersistenceConfig as _, DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS as a, type DataTablePersistencePayload as a0, type DataTablePersistenceSlice as a1, type DataTablePersistenceStorage as a2, type DataTableResetOptions as a3, type DataTableRowAction as a4, type DataTableRowClassNameContext as a5, type DataTableRowLoadingState as a6, type DataTableSavedView as a7, type DataTableSavedViewSlice as a8, type DataTableSavedViewsChangeOperation as a9, type DataTableTanStackColumn as aA, type DataTableTanStackCell as aB, type DataTableTanStackTable as aC, type DataTableTanStackHeader as aD, type DataTableTanStackColumnDef as aE, type DataTableTanStackFilterFnOption as aF, type DataTableSavedViewsConfig as aa, type DataTableSavedViewsPayload as ab, type DataTableScrollbarVisibility as ac, type DataTableSelectionAction as ad, type DataTableSelectionActionContext as ae, type DataTableState as af, type DataTableStateOverlay as ag, type DataTableStateOverlayContext as ah, type DataTableSummaryRow as ai, type DataTableToolbarAction as aj, type DataTableToolbarDataOperations as ak, type DataTableToolbarVisibility as al, type DataTableViewMode as am, type DataTableVirtualizationConfig as an, alignClassName as ao, canEditRow as ap, canUseRowAction as aq, cellAlignClassName as ar, headerAlignClassName as as, hideOnClassName as at, isHiddenAtContainerWidth as au, isRowVisible as av, resolveColumnAlign as aw, resolveRowActionLabel as ax, rowSelectionStateFromRows as ay, type DataTableTanStackRow as az, type DataTableAccessibilityOptions as b, type DataTableActionErrorContext as c, type DataTableActionErrorSource as d, type DataTableAggregationFn as e, type DataTableAlign as f, type DataTableApi as g, type DataTableAutoPageSizeConfig as h, type DataTableCardRendererProps as i, type DataTableCardSizing as j, type DataTableCardVirtualizationConfig as k, type DataTableCellCoordinate as l, type DataTableCellEditRenderProps as m, type DataTableCellOverflow as n, type DataTableCellSelection as o, type DataTableClipboardConfig as p, type DataTableClipboardCopyOptions as q, type DataTableClipboardCopyScope as r, type DataTableClipboardPasteContext as s, type DataTableColumnDef as t, type DataTableColumnFilterConfig as u, type DataTableColumnFilterOperator as v, type DataTableColumnFilterOption as w, type DataTableColumnFilterRangeValue as x, type DataTableColumnFilterType as y, type DataTableColumnFixed as z }; diff --git a/dist/types.d.ts b/dist/types.d.ts index 03e087e..575713a 100644 --- a/dist/types.d.ts +++ b/dist/types.d.ts @@ -1,790 +1,3 @@ -import * as React from 'react'; -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"; -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" | "faceted" | "boolean" | "numberRange" | "dateRange"; -type DataTableColumnFilterOperator = "contains" | "equals" | "startsWith" | "endsWith"; -type DataTableCsvExportScope = "filtered" | "page" | "selected" | "all"; -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; - skeleton?: React.ReactNode; -}; -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; - to?: TValue; -}; -type DataTableColumnFilterConfig = { - type: DataTableColumnFilterType; - label?: string; - placeholder?: string; - options?: 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; - min?: number | string; - max?: number | string; - step?: number; -}; -type DataTableColumnMeta = { - type?: DataTableColumnType; - fixed?: DataTableColumnFixed; - cardTitle?: boolean; - hideOn?: DataTableContainerBreakpoint | Array; - minWidth?: number; - align?: DataTableAlign; - overflow?: DataTableCellOverflow | ((args: { - row: TData; - value: TValue | undefined; - }) => DataTableCellOverflow | undefined); - headerClassName?: string; - headerStyle?: React.CSSProperties; - cellClassName?: string | ((args: { - row: TData; - value: TValue | undefined; - }) => string | undefined); - responsiveClassName?: string; - skeleton?: (context: CellContext) => React.ReactNode; - filter?: DataTableColumnFilterConfig; - parseEditValue?: (value: unknown, context: CellContext) => unknown; - formatEditValue?: (value: unknown, context: CellContext) => string; - renderEditCell?: (props: DataTableCellEditRenderProps) => React.ReactNode; -}; -type DataTableColumnDef = ColumnDef & { - meta?: DataTableColumnMeta; - columns?: Array>; -}; -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; - label: string; - icon?: React.ComponentType<{ - className?: string; - }>; - iconOnly?: boolean; - placement?: "primary" | "trailing"; - onClick: (context: { - rows: Array; - openFileDialog?: () => void; - }) => void | Promise; - 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; - icon?: React.ComponentType<{ - className?: string; - }>; - iconOnly?: boolean; - onClick: (context: DataTableSelectionActionContext) => void | Promise; - variant?: "default" | "secondary" | "outline" | "ghost" | "destructive"; - disabled?: boolean | ((rows: Array, context: DataTableSelectionActionContext) => boolean); -}; -type DataTableRowAction = { - key: string; - label: string | ((row: TData) => string); - icon?: React.ComponentType<{ - className?: string; - }>; - onClick: (row: TData) => void | Promise; - variant?: "default" | "secondary" | "destructive"; - hidden?: (row: TData) => boolean; - disabled?: (row: TData) => boolean; -}; -type DataTableColumnVisibilityOption = { - id: string; - label: string; - visible: boolean; - canHide: boolean; - pinned?: false | DataTableColumnFixed; -}; -type DataTableToolbarVisibility = { - title?: boolean; - search?: boolean; - actions?: boolean; - trailingActions?: boolean; - options?: boolean; - 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; - depth: number; - canExpandSubRows: boolean; - isSubRowsExpanded: boolean; - toggleSubRowsExpanded: () => void; - isSelected: boolean; - onSelectedChange: (nextValue: boolean) => void; - actions: Array>; - isEditing: boolean; - startEditing: () => void; - cancelEditing: () => void; -}; -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; - hasMore: boolean; - isLoadingMore?: boolean; - onLoadMore: () => void | Promise; -}; -type DataTableHiddenRowsConfig = { - getIsHidden: (row: TData) => boolean; - label?: string; -}; -type DataTableEmptyStateContext = { - rows: Array; - toolbarQueryValue: string; -}; -type DataTableDragAndDropConfig = { - isDragging?: boolean; - onDragEnter?: React.DragEventHandler; - onDragOver?: React.DragEventHandler; - onDragLeave?: React.DragEventHandler; - onDrop?: React.DragEventHandler; - getRowDraggable?: (row: TData) => boolean; - onRowDragStart?: (context: { - row: TData; - rowId: string; - event: React.DragEvent; - }) => void; - onRowDragEnd?: (context: { - row: TData; - rowId: string; - event: React.DragEvent; - }) => void; -}; -type DataTableFileUploadConfig = { - accept?: string; - disabled?: boolean; - multiple?: boolean; - onFilesSelected: (files: FileList | Array) => void | Promise; -}; -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"; -}; -type DataTableExpandedRowProps = { - row: TData; - 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; - columns?: Array; - scope?: DataTableCsvExportScope; - escapeFormulaValues?: boolean; - lineEnding?: "\n" | "\r\n"; - getCellValue?: (context: { - row: TData; - rowId: string; - columnId: string; - value: unknown; - }) => unknown; - onExport?: (context: { - csv: string; - filename: string; - rows: Array; - scope: DataTableCsvExportScope; - }) => void | Promise; -}; -type DataTableActionErrorContext = { - source: DataTableActionErrorSource; - error: unknown; - actionKey?: string; - row?: TData; -}; -type DataTableColumnPrefs = { - visibility?: VisibilityState; - sizing?: Record; - order?: ColumnOrderState; - pinning?: ColumnPinningState; - rowPinning?: RowPinningState; - density?: DataTableDensity; -}; -type DataTablePersistenceSlice = keyof DataTableColumnPrefs; -type DataTablePersistenceStorage = Pick; -type DataTablePersistenceOperation = "read" | "write" | "remove" | "serialize" | "deserialize" | "migrate"; -type DataTablePersistencePayload = { - version: string | number; - state: DataTableColumnPrefs; -}; -type DataTablePersistenceConfig = { - key: string; - version?: string | number; - slices?: Array; - storage?: DataTablePersistenceStorage; - serialize?: (payload: DataTablePersistencePayload) => string; - deserialize?: (value: string) => unknown; - migrate?: (payload: { - version: unknown; - state: unknown; - }, targetVersion: string | number) => DataTableColumnPrefs | undefined; - debounceMs?: number; - onError?: (context: { - error: unknown; - operation: DataTablePersistenceOperation; - }) => void; -}; -type DataTableState = { - sorting: SortingState; - pagination: PaginationState; - rowSelection: Record; - columnVisibility: VisibilityState; - columnFilters: ColumnFiltersState; - expanded: ExpandedState; - columnOrder: ColumnOrderState; - 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; - globalFilter: string; -}; -type DataTableInitialState = Partial; -type DataTableSavedViewSlice = keyof DataTableState; -type DataTableSavedView = { - id: string; - name: string; - createdAt: string; - updatedAt: string; - state: Partial; -}; -type DataTableSavedViewsPayload = { - version: string | number; - views: Array; -}; -type DataTableSavedViewsChangeOperation = "create" | "rename" | "delete" | "clear"; -type DataTableSavedViewsConfig = { - key: string; - version?: string | number; - slices?: Array; - storage?: DataTablePersistenceStorage; - serialize?: (payload: DataTableSavedViewsPayload) => string; - deserialize?: (value: string) => unknown; - migrate?: (payload: { - version: unknown; - views: unknown; - }, targetVersion: string | number) => Array | undefined; - onChange?: (views: Array, operation: DataTableSavedViewsChangeOperation) => void; - onApply?: (view: DataTableSavedView) => void; - onError?: (context: { - error: unknown; - operation: DataTablePersistenceOperation; - }) => void; -}; -type DataTableResetOptions = { - clearPersistence?: boolean; -}; -type DataTableApi = { - getTable: () => Table | null; - getState: () => DataTableState; - snapshot: () => DataTableState; - restore: (state: Partial) => void; - resetColumnLayout: (options?: DataTableResetOptions) => void; - resetState: (options?: DataTableResetOptions) => void; - clearPersistedState: () => boolean; - getSavedViews: () => Array; - createSavedView: (name: string) => DataTableSavedView | undefined; - applySavedView: (id: string) => boolean; - 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; - 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; - searchTable: string; - clearSearch: string; - noRowsTitle: string; - noRowsDescription: string; - noMatchingRowsTitle: string; - noMatchingRowsDescription: string; - tableOptions: string; - columns: string; - filters: string; - clearFilters: string; - filterFrom?: string; - filterTo?: string; - filterTrue?: string; - filterFalse?: string; - selectedRows: (count: number) => string; - showHiddenRows: (label: string) => string; - recordsPerPage: string; - totalRecords: (count: number) => string; - pageStatus: (pageIndex: number, pageCount: number) => string; - pageStatusUnknown?: (pageIndex: number) => string; - pagination?: string; - morePages?: string; - firstPage: string; - previousPage: string; - nextPage: string; - lastPage: string; - selectAllVisibleRows?: string; - selectAllFilteredRows?: string; - selectRow?: string; - selectCardRow?: (rowId: string) => string; - switchToTableView?: string; - switchToCardView?: string; - tableView?: string; - cardView?: string; - allFilterOptions?: string; - actions: string; - rowActions: string; - editRow: string; - saveEdit: string; - cancelEdit: string; - expandRow: string; - collapseRow: string; - expandRowDetails?: string; - collapseRowDetails?: string; - exportCsv: string; - print?: string; - enterFullscreen?: string; - exitFullscreen?: string; - errorTitle?: string; - errorDescription?: string; - retry?: string; - density: string; - compactDensity: string; - comfortableDensity: string; - spaciousDensity: string; - pinLeft: string; - pinRight: string; - unpin: string; - pinRowToTop: string; - 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; - label?: React.ReactNode; - cells: Record; - columnId: string; - }) => React.ReactNode)>; -}; -type DataTableRowClassNameContext = { - row: TData; - rowId: string; - rowIndex: number; - isEditing: boolean; - isExpanded: boolean; - isLoading: boolean; - isSelected: boolean; - pinnedPosition: false | "top" | "bottom"; -}; -type DataTableScrollbarVisibility = "auto" | "always" | "scroll" | "hover"; -type DataTableProps = { - columns: Array>; - data: Array; - getRowId: (row: TData, index: number) => string; - children?: React.ReactNode; - title?: string; - description?: string; - toolbarQueryValue?: string; - onToolbarQueryValueChange?: (value: string) => void; - toolbarQueryPlaceholder?: string; - toolbarQueryDebounceMs?: number; - manualFiltering?: boolean; - enableToolbarQueryFiltering?: boolean; - globalFilterFn?: FilterFnOption; - columnFilters?: ColumnFiltersState; - onColumnFiltersChange?: (filters: ColumnFiltersState) => void; - enableColumnFilters?: boolean; - customToolbar?: React.ReactNode; - compactToolbar?: React.ReactNode; - rowsPerPageOptions?: Array; - totalRowCount?: number; - hasNextPage?: boolean; - 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; - manualPagination?: boolean; - 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>; - 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; - columnPrefsKey?: string; - persistence?: DataTablePersistenceConfig; - savedViews?: DataTableSavedViewsConfig; - initialState?: DataTableInitialState; - state?: Partial; - onStateChange?: (updater: Updater) => void; - apiRef?: React.Ref>; - labels?: Partial; - summaryRows?: Array>; - cardRenderer?: (props: DataTableCardRendererProps) => React.ReactNode; - cardSizing?: DataTableCardSizing; - cardGridClassName?: string; - cardClassName?: string; - 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; - hiddenRows?: DataTableHiddenRowsConfig; - showHiddenRows?: boolean; - onShowHiddenRowsChange?: (showHiddenRows: boolean) => void; - infiniteScroll?: DataTableInfiniteScroll; - editableRows?: DataTableEditableRowsConfig; - columnVisibility?: VisibilityState; - onColumnVisibilityChange?: (visibility: VisibilityState) => void; - columnSizing?: ColumnSizingState; - onColumnSizingChange?: (sizing: ColumnSizingState) => void; - enableColumnResizing?: boolean; - columnResizeMode?: "onChange" | "onEnd"; - layoutMode?: "fill" | "fit"; - stickyHeader?: boolean; - /** Controls when scrollbars are visible. Defaults to `"hover"`. */ - scrollbarVisibility?: DataTableScrollbarVisibility; - showFooter?: boolean; - showToolbar?: boolean; - 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; - stripedRows?: boolean; - getRowClassName?: (row: TData, context: DataTableRowClassNameContext) => string | undefined; - onRowClick?: (context: { - row: TData; - rowId: string; - }) => void | Promise; - onActionError?: (context: DataTableActionErrorContext) => void; - 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; -declare function canUseRowAction(action: DataTableRowAction, row: TData): boolean; -declare function canEditRow(editableRows: DataTableEditableRowsConfig | undefined, row: TData): boolean; -declare function alignClassName(align: DataTableAlign | undefined): "text-center" | "text-right" | "text-left"; -declare function resolveColumnAlign(align: DataTableAlign | undefined, type: DataTableColumnType | undefined): DataTableAlign; -declare function headerAlignClassName(context: HeaderContext): "text-center" | "text-right" | "text-left"; -declare function cellAlignClassName(context: CellContext): "text-center" | "text-right" | "text-left"; -declare function hideOnClassName(hideOn: DataTableContainerBreakpoint | Array | undefined): string | undefined; -declare function isHiddenAtContainerWidth(hideOn: DataTableContainerBreakpoint | Array | undefined, containerWidth: number): boolean; -declare function rowSelectionStateFromRows(rows: Array>): TData[]; - -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 DataTableScrollbarVisibility, 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 }; +export { a as DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, b as DataTableAccessibilityOptions, c as DataTableActionErrorContext, d as DataTableActionErrorSource, e as DataTableAggregationFn, f as DataTableAlign, g as DataTableApi, h as DataTableAutoPageSizeConfig, i as DataTableCardRendererProps, j as DataTableCardSizing, k as DataTableCardVirtualizationConfig, l as DataTableCellCoordinate, m as DataTableCellEditRenderProps, n as DataTableCellOverflow, o as DataTableCellSelection, p as DataTableClipboardConfig, q as DataTableClipboardCopyOptions, r as DataTableClipboardCopyScope, s as DataTableClipboardPasteContext, t as DataTableColumnDef, u as DataTableColumnFilterConfig, v as DataTableColumnFilterOperator, w as DataTableColumnFilterOption, x as DataTableColumnFilterRangeValue, y as DataTableColumnFilterType, z as DataTableColumnFixed, A as DataTableColumnGroupDef, B as DataTableColumnMeta, C as DataTableColumnPinningState, E as DataTableColumnPrefs, F as DataTableColumnType, G as DataTableColumnVisibilityOption, H as DataTableContainerBreakpoint, I as DataTableCsvExportOptions, J as DataTableCsvExportScope, K as DataTableDensity, L as DataTableDetailPanel, M as DataTableDragAndDropConfig, N as DataTableEditableRowsConfig, O as DataTableEmptyStateContext, P as DataTableExpandedRowProps, Q as DataTableFacetedFilterOptions, R as DataTableFileUploadConfig, S as DataTableGridCommandContext, T as DataTableGridCommands, U as DataTableHiddenRowsConfig, V as DataTableInfiniteScroll, W as DataTableInitialState, X as DataTableInteractiveGridOptions, Y as DataTableLabels, Z as DataTableLoadingState, _ as DataTablePersistenceConfig, $ as DataTablePersistenceOperation, a0 as DataTablePersistencePayload, a1 as DataTablePersistenceSlice, a2 as DataTablePersistenceStorage, D as DataTableProps, a3 as DataTableResetOptions, a4 as DataTableRowAction, a5 as DataTableRowClassNameContext, a6 as DataTableRowLoadingState, a7 as DataTableSavedView, a8 as DataTableSavedViewSlice, a9 as DataTableSavedViewsChangeOperation, aa as DataTableSavedViewsConfig, ab as DataTableSavedViewsPayload, ac as DataTableScrollbarVisibility, ad as DataTableSelectionAction, ae as DataTableSelectionActionContext, af as DataTableState, ag as DataTableStateOverlay, ah as DataTableStateOverlayContext, ai as DataTableSummaryRow, aj as DataTableToolbarAction, ak as DataTableToolbarDataOperations, al as DataTableToolbarVisibility, am as DataTableViewMode, an as DataTableVirtualizationConfig, ao as alignClassName, ap as canEditRow, aq as canUseRowAction, ar as cellAlignClassName, as as headerAlignClassName, at as hideOnClassName, au as isHiddenAtContainerWidth, av as isRowVisible, aw as resolveColumnAlign, ax as resolveRowActionLabel, ay as rowSelectionStateFromRows } from './types-BGNR6Ymh.js'; +import '@tanstack/react-table'; +import 'react'; diff --git a/dist/url-state.d.ts b/dist/url-state.d.ts index c2f52af..c951ef9 100644 --- a/dist/url-state.d.ts +++ b/dist/url-state.d.ts @@ -1,16 +1,17 @@ -import { ColumnFiltersState, VisibilityState, ColumnOrderState, ColumnPinningState, GroupingState, RowSelectionState, SortingState, Updater } from '@tanstack/react-table'; -import { DataTableDensity, DataTableViewMode, DataTableState } from './types.js'; +import { ColumnFiltersState, ColumnVisibilityState, ColumnOrderState, GroupingState, SortingState, Updater } from '@tanstack/react-table'; +import { K as DataTableDensity, C as DataTableColumnPinningState, am as DataTableViewMode, af as DataTableState } from './types-BGNR6Ymh.js'; import 'react'; type DataTableUrlStateSlice = "columnFilters" | "columnVisibility" | "density" | "columnOrder" | "columnPinning" | "grouping" | "rowSelection"; +type DataTableUrlRowSelectionState = Record; type DataTableUrlEnhancedState = { columnFilters: ColumnFiltersState; - columnVisibility: VisibilityState; + columnVisibility: ColumnVisibilityState; density: DataTableDensity; columnOrder: ColumnOrderState; - columnPinning: ColumnPinningState; + columnPinning: DataTableColumnPinningState; grouping: GroupingState; - rowSelection: RowSelectionState; + rowSelection: DataTableUrlRowSelectionState; }; type DataTableUrlStateMigrationPayload = { version: unknown; @@ -48,18 +49,18 @@ declare function useDataTableUrlState({ keyPrefix, defaultPageSize, defaultSort, setShowHiddenRows: (showHidden: boolean) => void; columnFilters: ColumnFiltersState; setColumnFilters: (updater: Updater) => void; - columnVisibility: VisibilityState; - setColumnVisibility: (updater: Updater) => void; + columnVisibility: ColumnVisibilityState; + setColumnVisibility: (updater: Updater) => void; density: DataTableDensity; setDensity: (updater: Updater) => void; columnOrder: ColumnOrderState; setColumnOrder: (updater: Updater) => void; - columnPinning: ColumnPinningState; - setColumnPinning: (updater: Updater) => void; + columnPinning: DataTableColumnPinningState; + setColumnPinning: (updater: Updater) => void; grouping: GroupingState; setGrouping: (updater: Updater) => void; - rowSelection: RowSelectionState; - setRowSelection: (updater: Updater) => void; + rowSelection: DataTableUrlRowSelectionState; + setRowSelection: (updater: Updater) => void; tableState: Partial; schemaVersion: string; clearEnhancedState: () => void; diff --git a/dist/url-state.js b/dist/url-state.js index 8982f38..f44ad74 100644 --- a/dist/url-state.js +++ b/dist/url-state.js @@ -1,2 +1,2 @@ -import*as s from'react';import {useQueryStates,parseAsString,parseAsJson,parseAsStringLiteral,parseAsBoolean,parseAsInteger}from'nuqs';var et=[],nt={},it=[],at={},ot=[],rt={};function ut({keyPrefix:t,defaultPageSize:o=20,defaultSort:l,defaultViewMode:u="table",version:S=1,enabled:h=[],defaults:d,migrate:p,onError:f}){let[e,a]=useQueryStates({query:parseAsString.withDefault(""),page:parseAsInteger.withDefault(1),pageSize:parseAsInteger.withDefault(o),sort:parseAsString.withDefault(l?k([{id:l.id,desc:!!l.desc}]):""),order:parseAsStringLiteral(["asc","desc"]).withDefault(l?.desc?"desc":"asc"),view:parseAsStringLiteral(["table","card"]).withDefault(u),showHidden:parseAsBoolean.withDefault(false),schema:parseAsString,filters:parseAsJson($),visibility:parseAsJson(P),density:parseAsStringLiteral(["compact","comfortable","spacious"]),columnOrder:parseAsJson(b),pinning:parseAsJson(I),grouping:parseAsJson(b),selection:parseAsJson(P)},{clearOnDefault:true,history:"replace",urlKeys:{query:`${t}q`,page:`${t}page`,pageSize:`${t}size`,sort:`${t}sort`,order:`${t}order`,view:`${t}view`,showHidden:`${t}showHidden`,schema:`${t}v`,filters:`${t}filters`,visibility:`${t}visibility`,density:`${t}density`,columnOrder:`${t}columns`,pinning:`${t}pinning`,grouping:`${t}grouping`,selection:`${t}selection`}}),i=s.useMemo(()=>new Set(h),[h]),g=s.useMemo(()=>{let n={};if(i.has("columnFilters")&&e.filters!==null&&(n.columnFilters=e.filters),i.has("columnVisibility")&&e.visibility!==null&&(n.columnVisibility=e.visibility),i.has("density")&&e.density!==null&&(n.density=e.density),i.has("columnOrder")&&e.columnOrder!==null&&(n.columnOrder=e.columnOrder),i.has("columnPinning")&&e.pinning!==null&&(n.columnPinning=e.pinning),i.has("grouping")&&e.grouping!==null&&(n.grouping=e.grouping),i.has("rowSelection")&&e.selection!==null&&(n.rowSelection=e.selection),Object.keys(n).length===0)return {state:n};if(e.schema===String(S))return {state:n};if(!p)return {state:{}};try{return {state:lt(p({version:e.schema,state:n},S),i)}}catch(r){return {error:r,state:{}}}},[i,p,e.columnOrder,e.density,e.filters,e.grouping,e.pinning,e.schema,e.selection,e.visibility,S]);s.useEffect(()=>{g.error!==void 0&&f?.({error:g.error,operation:"migrate"});},[g.error,f]);let w=s.useMemo(()=>e.sort?st(e.sort,e.order):[],[e.order,e.sort]),T=g.state.columnFilters??d?.columnFilters??et,O=g.state.columnVisibility??d?.columnVisibility??nt,C=g.state.density??d?.density??"comfortable",D=g.state.columnOrder??d?.columnOrder??it,R=g.state.columnPinning??d?.columnPinning??at,V=g.state.grouping??d?.grouping??ot,U=g.state.rowSelection??d?.rowSelection??rt,c=String(S),z=s.useCallback(n=>{let r=m(n,w);if(r.length===0){a({page:1,sort:"",order:"asc"});return}let X=r[0];a({page:1,sort:k(r),order:X.desc?"desc":"asc"});},[a,w]),H=s.useCallback(n=>{a({page:1,query:n});},[a]),x=s.useCallback(n=>{a({page:n+1});},[a]),G=s.useCallback(n=>{a({page:1,pageSize:n});},[a]),j=s.useCallback(n=>{a({view:n});},[a]),B=s.useCallback(n=>{a({showHidden:n});},[a]),N=s.useCallback(n=>{if(!i.has("columnFilters"))return;let r=m(n,T);a({page:1,schema:c,filters:r.length>0?r:null});},[T,i,c,a]),Y=s.useCallback(n=>{if(!i.has("columnVisibility"))return;let r=m(n,O);a({schema:c,visibility:A(r)?r:null});},[O,i,c,a]),q=s.useCallback(n=>{if(!i.has("density"))return;let r=m(n,C);a({schema:c,density:r===(d?.density??"comfortable")?null:r});},[d?.density,C,i,c,a]),_=s.useCallback(n=>{if(!i.has("columnOrder"))return;let r=m(n,D);a({schema:c,columnOrder:r.length>0?r:null});},[D,i,c,a]),L=s.useCallback(n=>{if(!i.has("columnPinning"))return;let r=m(n,R);a({schema:c,pinning:(r.left?.length??0)>0||(r.right?.length??0)>0?r:null});},[R,i,c,a]),Q=s.useCallback(n=>{if(!i.has("grouping"))return;let r=m(n,V);a({page:1,schema:c,grouping:r.length>0?r:null});},[i,V,c,a]),J=s.useCallback(n=>{if(!i.has("rowSelection"))return;let r=m(n,U);a({schema:c,selection:A(r)?r:null});},[i,U,c,a]),K=s.useCallback(()=>{a({schema:null,filters:null,visibility:null,density:null,columnOrder:null,pinning:null,grouping:null,selection:null});},[a]),W=s.useMemo(()=>({globalFilter:e.query,pagination:{pageIndex:Math.max(0,e.page-1),pageSize:e.pageSize},sorting:w,viewMode:e.view,showHiddenRows:e.showHidden,...i.has("columnFilters")?{columnFilters:T}:{},...i.has("columnVisibility")?{columnVisibility:O}:{},...i.has("density")?{density:C}:{},...i.has("columnOrder")?{columnOrder:D}:{},...i.has("columnPinning")?{columnPinning:R}:{},...i.has("rowSelection")?{rowSelection:U}:{}}),[T,D,R,O,C,i,U,w,e.page,e.pageSize,e.query,e.showHidden,e.view]);return {toolbarQueryValue:e.query,setToolbarQueryValue:H,pageIndex:Math.max(0,e.page-1),setPageIndex:x,pageSize:e.pageSize,setPageSize:G,sorting:w,setSorting:z,viewMode:e.view,setViewMode:j,showHiddenRows:e.showHidden,setShowHiddenRows:B,columnFilters:T,setColumnFilters:N,columnVisibility:O,setColumnVisibility:Y,density:C,setDensity:q,columnOrder:D,setColumnOrder:_,columnPinning:R,setColumnPinning:L,grouping:V,setGrouping:Q,rowSelection:U,setRowSelection:J,tableState:W,schemaVersion:c,clearEnhancedState:K}}function k(t){return JSON.stringify(t.map(o=>({id:o.id,desc:!!o.desc})))}function st(t,o){try{let l=JSON.parse(t);if(!Array.isArray(l))throw new Error("Expected sorting array");return l.map(u=>{if(!(!u||typeof u!="object"||typeof u.id!="string"))return {id:u.id,desc:!!u.desc}}).filter(u=>!!u)}catch{return [{id:t,desc:o==="desc"}]}}function lt(t,o){if(!t)return {};let l={},u=$(t.columnFilters);o.has("columnFilters")&&u&&(l.columnFilters=u);let S=P(t.columnVisibility);o.has("columnVisibility")&&S&&(l.columnVisibility=S),o.has("density")&&(t.density==="compact"||t.density==="comfortable"||t.density==="spacious")&&(l.density=t.density);let h=b(t.columnOrder);o.has("columnOrder")&&h&&(l.columnOrder=h);let d=I(t.columnPinning);o.has("columnPinning")&&d&&(l.columnPinning=d);let p=b(t.grouping);o.has("grouping")&&p&&(l.grouping=p);let f=P(t.rowSelection);return o.has("rowSelection")&&f&&(l.rowSelection=f),l}function $(t){return Array.isArray(t)?t.filter(o=>F(o)&&typeof o.id=="string"&&Object.prototype.hasOwnProperty.call(o,"value")).map(o=>({id:o.id,value:o.value})):null}function P(t){return F(t)?Object.fromEntries(Object.entries(t).filter(o=>typeof o[1]=="boolean")):null}function b(t){return Array.isArray(t)?t.filter(o=>typeof o=="string"):null}function I(t){return F(t)?{left:b(t.left)??[],right:b(t.right)??[]}:null}function m(t,o){return typeof t=="function"?t(o):t}function A(t){return Object.keys(t).length>0}function F(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}export{ut as useDataTableUrlState};//# sourceMappingURL=url-state.js.map +import*as l from'react';import {useQueryStates,parseAsString,parseAsJson,parseAsStringLiteral,parseAsBoolean,parseAsInteger}from'nuqs';var et=[],nt={},it=[],at={},rt=[],ot={};function ut({keyPrefix:t,defaultPageSize:r=20,defaultSort:s,defaultViewMode:u="table",version:S=1,enabled:h=[],defaults:d,migrate:p,onError:f}){let[e,a]=useQueryStates({query:parseAsString.withDefault(""),page:parseAsInteger.withDefault(1),pageSize:parseAsInteger.withDefault(r),sort:parseAsString.withDefault(s?k([{id:s.id,desc:!!s.desc}]):""),order:parseAsStringLiteral(["asc","desc"]).withDefault(s?.desc?"desc":"asc"),view:parseAsStringLiteral(["table","card"]).withDefault(u),showHidden:parseAsBoolean.withDefault(false),schema:parseAsString,filters:parseAsJson($),visibility:parseAsJson(P),density:parseAsStringLiteral(["compact","comfortable","spacious"]),columnOrder:parseAsJson(y),pinning:parseAsJson(I),grouping:parseAsJson(y),selection:parseAsJson(P)},{clearOnDefault:true,history:"replace",urlKeys:{query:`${t}q`,page:`${t}page`,pageSize:`${t}size`,sort:`${t}sort`,order:`${t}order`,view:`${t}view`,showHidden:`${t}showHidden`,schema:`${t}v`,filters:`${t}filters`,visibility:`${t}visibility`,density:`${t}density`,columnOrder:`${t}columns`,pinning:`${t}pinning`,grouping:`${t}grouping`,selection:`${t}selection`}}),i=l.useMemo(()=>new Set(h),[h]),g=l.useMemo(()=>{let n={};if(i.has("columnFilters")&&e.filters!==null&&(n.columnFilters=e.filters),i.has("columnVisibility")&&e.visibility!==null&&(n.columnVisibility=e.visibility),i.has("density")&&e.density!==null&&(n.density=e.density),i.has("columnOrder")&&e.columnOrder!==null&&(n.columnOrder=e.columnOrder),i.has("columnPinning")&&e.pinning!==null&&(n.columnPinning=e.pinning),i.has("grouping")&&e.grouping!==null&&(n.grouping=e.grouping),i.has("rowSelection")&&e.selection!==null&&(n.rowSelection=e.selection),Object.keys(n).length===0)return {state:n};if(e.schema===String(S))return {state:n};if(!p)return {state:{}};try{return {state:st(p({version:e.schema,state:n},S),i)}}catch(o){return {error:o,state:{}}}},[i,p,e.columnOrder,e.density,e.filters,e.grouping,e.pinning,e.schema,e.selection,e.visibility,S]);l.useEffect(()=>{g.error!==void 0&&f?.({error:g.error,operation:"migrate"});},[g.error,f]);let w=l.useMemo(()=>e.sort?lt(e.sort,e.order):[],[e.order,e.sort]),T=g.state.columnFilters??d?.columnFilters??et,D=g.state.columnVisibility??d?.columnVisibility??nt,C=g.state.density??d?.density??"comfortable",O=g.state.columnOrder??d?.columnOrder??it,R=g.state.columnPinning??d?.columnPinning??at,V=g.state.grouping??d?.grouping??rt,U=g.state.rowSelection??d?.rowSelection??ot,c=String(S),z=l.useCallback(n=>{let o=m(n,w);if(o.length===0){a({page:1,sort:"",order:"asc"});return}let X=o[0];a({page:1,sort:k(o),order:X.desc?"desc":"asc"});},[a,w]),H=l.useCallback(n=>{a({page:1,query:n});},[a]),x=l.useCallback(n=>{a({page:n+1});},[a]),G=l.useCallback(n=>{a({page:1,pageSize:n});},[a]),j=l.useCallback(n=>{a({view:n});},[a]),B=l.useCallback(n=>{a({showHidden:n});},[a]),N=l.useCallback(n=>{if(!i.has("columnFilters"))return;let o=m(n,T);a({page:1,schema:c,filters:o.length>0?o:null});},[T,i,c,a]),Y=l.useCallback(n=>{if(!i.has("columnVisibility"))return;let o=m(n,D);a({schema:c,visibility:A(o)?o:null});},[D,i,c,a]),q=l.useCallback(n=>{if(!i.has("density"))return;let o=m(n,C);a({schema:c,density:o===(d?.density??"comfortable")?null:o});},[d?.density,C,i,c,a]),_=l.useCallback(n=>{if(!i.has("columnOrder"))return;let o=m(n,O);a({schema:c,columnOrder:o.length>0?o:null});},[O,i,c,a]),L=l.useCallback(n=>{if(!i.has("columnPinning"))return;let o=m(n,R);a({schema:c,pinning:(o.left?.length??0)>0||(o.right?.length??0)>0?o:null});},[R,i,c,a]),Q=l.useCallback(n=>{if(!i.has("grouping"))return;let o=m(n,V);a({page:1,schema:c,grouping:o.length>0?o:null});},[i,V,c,a]),J=l.useCallback(n=>{if(!i.has("rowSelection"))return;let o=m(n,U);a({schema:c,selection:A(o)?o:null});},[i,U,c,a]),K=l.useCallback(()=>{a({schema:null,filters:null,visibility:null,density:null,columnOrder:null,pinning:null,grouping:null,selection:null});},[a]),W=l.useMemo(()=>({globalFilter:e.query,pagination:{pageIndex:Math.max(0,e.page-1),pageSize:e.pageSize},sorting:w,viewMode:e.view,showHiddenRows:e.showHidden,...i.has("columnFilters")?{columnFilters:T}:{},...i.has("columnVisibility")?{columnVisibility:D}:{},...i.has("density")?{density:C}:{},...i.has("columnOrder")?{columnOrder:O}:{},...i.has("columnPinning")?{columnPinning:R}:{},...i.has("rowSelection")?{rowSelection:U}:{}}),[T,O,R,D,C,i,U,w,e.page,e.pageSize,e.query,e.showHidden,e.view]);return {toolbarQueryValue:e.query,setToolbarQueryValue:H,pageIndex:Math.max(0,e.page-1),setPageIndex:x,pageSize:e.pageSize,setPageSize:G,sorting:w,setSorting:z,viewMode:e.view,setViewMode:j,showHiddenRows:e.showHidden,setShowHiddenRows:B,columnFilters:T,setColumnFilters:N,columnVisibility:D,setColumnVisibility:Y,density:C,setDensity:q,columnOrder:O,setColumnOrder:_,columnPinning:R,setColumnPinning:L,grouping:V,setGrouping:Q,rowSelection:U,setRowSelection:J,tableState:W,schemaVersion:c,clearEnhancedState:K}}function k(t){return JSON.stringify(t.map(r=>({id:r.id,desc:!!r.desc})))}function lt(t,r){try{let s=JSON.parse(t);if(!Array.isArray(s))throw new Error("Expected sorting array");return s.map(u=>{if(!(!u||typeof u!="object"||typeof u.id!="string"))return {id:u.id,desc:!!u.desc}}).filter(u=>!!u)}catch{return [{id:t,desc:r==="desc"}]}}function st(t,r){if(!t)return {};let s={},u=$(t.columnFilters);r.has("columnFilters")&&u&&(s.columnFilters=u);let S=P(t.columnVisibility);r.has("columnVisibility")&&S&&(s.columnVisibility=S),r.has("density")&&(t.density==="compact"||t.density==="comfortable"||t.density==="spacious")&&(s.density=t.density);let h=y(t.columnOrder);r.has("columnOrder")&&h&&(s.columnOrder=h);let d=I(t.columnPinning);r.has("columnPinning")&&d&&(s.columnPinning=d);let p=y(t.grouping);r.has("grouping")&&p&&(s.grouping=p);let f=P(t.rowSelection);return r.has("rowSelection")&&f&&(s.rowSelection=f),s}function $(t){return Array.isArray(t)?t.filter(r=>F(r)&&typeof r.id=="string"&&Object.prototype.hasOwnProperty.call(r,"value")).map(r=>({id:r.id,value:r.value})):null}function P(t){return F(t)?Object.fromEntries(Object.entries(t).filter(r=>typeof r[1]=="boolean")):null}function y(t){return Array.isArray(t)?t.filter(r=>typeof r=="string"):null}function I(t){return F(t)?{left:y(t.left)??[],right:y(t.right)??[]}:null}function m(t,r){return typeof t=="function"?t(r):t}function A(t){return Object.keys(t).length>0}function F(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}export{ut as useDataTableUrlState};//# sourceMappingURL=url-state.js.map //# sourceMappingURL=url-state.js.map \ No newline at end of file diff --git a/dist/url-state.js.map b/dist/url-state.js.map index ec135ef..043279f 100644 --- a/dist/url-state.js.map +++ b/dist/url-state.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/core/data-table/use-data-table-url-state.ts"],"names":["EMPTY_FILTERS","EMPTY_VISIBILITY","EMPTY_ORDER","EMPTY_PINNING","EMPTY_GROUPING","EMPTY_SELECTION","useDataTableUrlState","keyPrefix","defaultPageSize","defaultSort","defaultViewMode","version","enabled","defaults","migrate","onError","state","setState","useQueryStates","parseAsString","parseAsInteger","encodeSorting","parseAsStringLiteral","parseAsBoolean","parseAsJson","validateColumnFilters","validateBooleanRecord","validateStringArray","validateColumnPinning","enabledSet","enhancedResolution","raw","validateEnhancedState","error","sorting","decodeSorting","columnFilters","columnVisibility","density","columnOrder","columnPinning","grouping","rowSelection","schemaVersion","setSorting","updater","nextSorting","resolveUpdater","next","setQuery","query","setPageIndex","pageIndex","setPageSize","pageSize","setViewMode","view","setShowHidden","showHidden","setColumnFilters","setColumnVisibility","hasKeys","setDensity","setColumnOrder","setColumnPinning","setGrouping","setRowSelection","clearEnhancedState","tableState","sort","value","order","parsed","item","filters","visibility","pinning","selection","isRecord","entry","current"],"mappings":"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","file":"url-state.js","sourcesContent":["import * as React from \"react\";\nimport {\n parseAsBoolean,\n parseAsInteger,\n parseAsJson,\n parseAsString,\n parseAsStringLiteral,\n useQueryStates,\n} from \"nuqs\";\nimport type {\n ColumnFiltersState,\n ColumnOrderState,\n ColumnPinningState,\n GroupingState,\n RowSelectionState,\n SortingState,\n Updater,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableDensity,\n DataTableState,\n DataTableViewMode,\n} from \"../types\";\n\nexport type DataTableUrlStateSlice =\n | \"columnFilters\"\n | \"columnVisibility\"\n | \"density\"\n | \"columnOrder\"\n | \"columnPinning\"\n | \"grouping\"\n | \"rowSelection\";\n\nexport type DataTableUrlEnhancedState = {\n columnFilters: ColumnFiltersState;\n columnVisibility: VisibilityState;\n density: DataTableDensity;\n columnOrder: ColumnOrderState;\n columnPinning: ColumnPinningState;\n grouping: GroupingState;\n rowSelection: RowSelectionState;\n};\n\nexport type DataTableUrlStateMigrationPayload = {\n version: unknown;\n state: Partial;\n};\n\nexport type UseDataTableUrlStateOptions = {\n keyPrefix: string;\n defaultPageSize?: number;\n defaultSort?: { id: string; desc?: boolean };\n defaultViewMode?: DataTableViewMode;\n version?: string | number;\n enabled?: Array;\n defaults?: Partial;\n migrate?: (\n payload: DataTableUrlStateMigrationPayload,\n targetVersion: string | number,\n ) => Partial | undefined;\n onError?: (context: { error: unknown; operation: \"migrate\" }) => void;\n};\n\nconst EMPTY_FILTERS: ColumnFiltersState = [];\nconst EMPTY_VISIBILITY: VisibilityState = {};\nconst EMPTY_ORDER: ColumnOrderState = [];\nconst EMPTY_PINNING: ColumnPinningState = {};\nconst EMPTY_GROUPING: GroupingState = [];\nconst EMPTY_SELECTION: RowSelectionState = {};\n\nexport function useDataTableUrlState({\n keyPrefix,\n defaultPageSize = 20,\n defaultSort,\n defaultViewMode = \"table\",\n version = 1,\n enabled = [],\n defaults,\n migrate,\n onError,\n}: UseDataTableUrlStateOptions) {\n const [state, setState] = useQueryStates(\n {\n query: parseAsString.withDefault(\"\"),\n page: parseAsInteger.withDefault(1),\n pageSize: parseAsInteger.withDefault(defaultPageSize),\n sort: parseAsString.withDefault(\n defaultSort\n ? encodeSorting([\n { id: defaultSort.id, desc: Boolean(defaultSort.desc) },\n ])\n : \"\",\n ),\n order: parseAsStringLiteral([\"asc\", \"desc\"] as const).withDefault(\n defaultSort?.desc ? \"desc\" : \"asc\",\n ),\n view: parseAsStringLiteral([\"table\", \"card\"] as const).withDefault(\n defaultViewMode,\n ),\n showHidden: parseAsBoolean.withDefault(false),\n schema: parseAsString,\n filters: parseAsJson(validateColumnFilters),\n visibility: parseAsJson(validateBooleanRecord),\n density: parseAsStringLiteral(\n [\"compact\", \"comfortable\", \"spacious\"] as const,\n ),\n columnOrder: parseAsJson(validateStringArray),\n pinning: parseAsJson(validateColumnPinning),\n grouping: parseAsJson(validateStringArray),\n selection: parseAsJson(validateBooleanRecord),\n },\n {\n clearOnDefault: true,\n history: \"replace\",\n urlKeys: {\n query: `${keyPrefix}q`,\n page: `${keyPrefix}page`,\n pageSize: `${keyPrefix}size`,\n sort: `${keyPrefix}sort`,\n order: `${keyPrefix}order`,\n view: `${keyPrefix}view`,\n showHidden: `${keyPrefix}showHidden`,\n schema: `${keyPrefix}v`,\n filters: `${keyPrefix}filters`,\n visibility: `${keyPrefix}visibility`,\n density: `${keyPrefix}density`,\n columnOrder: `${keyPrefix}columns`,\n pinning: `${keyPrefix}pinning`,\n grouping: `${keyPrefix}grouping`,\n selection: `${keyPrefix}selection`,\n },\n },\n );\n const enabledSet = React.useMemo(() => new Set(enabled), [enabled]);\n const enhancedResolution = React.useMemo<{\n state: Partial;\n error?: unknown;\n }>(() => {\n const raw: Partial = {};\n if (enabledSet.has(\"columnFilters\") && state.filters !== null) {\n raw.columnFilters = state.filters;\n }\n if (enabledSet.has(\"columnVisibility\") && state.visibility !== null) {\n raw.columnVisibility = state.visibility;\n }\n if (enabledSet.has(\"density\") && state.density !== null) {\n raw.density = state.density;\n }\n if (enabledSet.has(\"columnOrder\") && state.columnOrder !== null) {\n raw.columnOrder = state.columnOrder;\n }\n if (enabledSet.has(\"columnPinning\") && state.pinning !== null) {\n raw.columnPinning = state.pinning;\n }\n if (enabledSet.has(\"grouping\") && state.grouping !== null) {\n raw.grouping = state.grouping;\n }\n if (enabledSet.has(\"rowSelection\") && state.selection !== null) {\n raw.rowSelection = state.selection;\n }\n\n if (Object.keys(raw).length === 0) {\n return { state: raw };\n }\n if (state.schema === String(version)) {\n return { state: raw };\n }\n if (!migrate) {\n return { state: {} };\n }\n\n try {\n return {\n state: validateEnhancedState(\n migrate(\n {\n version: state.schema,\n state: raw,\n },\n version,\n ),\n enabledSet,\n ),\n };\n } catch (error) {\n return { error, state: {} };\n }\n }, [\n enabledSet,\n migrate,\n state.columnOrder,\n state.density,\n state.filters,\n state.grouping,\n state.pinning,\n state.schema,\n state.selection,\n state.visibility,\n version,\n ]);\n\n React.useEffect(() => {\n if (enhancedResolution.error !== undefined) {\n onError?.({\n error: enhancedResolution.error,\n operation: \"migrate\",\n });\n }\n }, [enhancedResolution.error, onError]);\n\n const sorting = React.useMemo(() => {\n if (!state.sort) {\n return [];\n }\n return decodeSorting(state.sort, state.order);\n }, [state.order, state.sort]);\n const columnFilters =\n enhancedResolution.state.columnFilters ??\n defaults?.columnFilters ??\n EMPTY_FILTERS;\n const columnVisibility =\n enhancedResolution.state.columnVisibility ??\n defaults?.columnVisibility ??\n EMPTY_VISIBILITY;\n const density =\n enhancedResolution.state.density ??\n defaults?.density ??\n \"comfortable\";\n const columnOrder =\n enhancedResolution.state.columnOrder ??\n defaults?.columnOrder ??\n EMPTY_ORDER;\n const columnPinning =\n enhancedResolution.state.columnPinning ??\n defaults?.columnPinning ??\n EMPTY_PINNING;\n const grouping =\n enhancedResolution.state.grouping ??\n defaults?.grouping ??\n EMPTY_GROUPING;\n const rowSelection =\n enhancedResolution.state.rowSelection ??\n defaults?.rowSelection ??\n EMPTY_SELECTION;\n const schemaVersion = String(version);\n\n const setSorting = React.useCallback(\n (updater: Updater) => {\n const nextSorting = resolveUpdater(updater, sorting);\n if (nextSorting.length === 0) {\n void setState({\n page: 1,\n sort: \"\",\n order: \"asc\",\n });\n return;\n }\n\n const next = nextSorting[0];\n void setState({\n page: 1,\n sort: encodeSorting(nextSorting),\n order: next.desc ? \"desc\" : \"asc\",\n });\n },\n [setState, sorting],\n );\n\n const setQuery = React.useCallback(\n (query: string) => {\n void setState({ page: 1, query });\n },\n [setState],\n );\n\n const setPageIndex = React.useCallback(\n (pageIndex: number) => {\n void setState({ page: pageIndex + 1 });\n },\n [setState],\n );\n\n const setPageSize = React.useCallback(\n (pageSize: number) => {\n void setState({ page: 1, pageSize });\n },\n [setState],\n );\n\n const setViewMode = React.useCallback(\n (view: DataTableViewMode) => {\n void setState({ view });\n },\n [setState],\n );\n\n const setShowHidden = React.useCallback(\n (showHidden: boolean) => {\n void setState({ showHidden });\n },\n [setState],\n );\n\n const setColumnFilters = React.useCallback(\n (updater: Updater) => {\n if (!enabledSet.has(\"columnFilters\")) return;\n const next = resolveUpdater(updater, columnFilters);\n void setState({\n page: 1,\n schema: schemaVersion,\n filters: next.length > 0 ? next : null,\n });\n },\n [columnFilters, enabledSet, schemaVersion, setState],\n );\n\n const setColumnVisibility = React.useCallback(\n (updater: Updater) => {\n if (!enabledSet.has(\"columnVisibility\")) return;\n const next = resolveUpdater(updater, columnVisibility);\n void setState({\n schema: schemaVersion,\n visibility: hasKeys(next) ? next : null,\n });\n },\n [columnVisibility, enabledSet, schemaVersion, setState],\n );\n\n const setDensity = React.useCallback(\n (updater: Updater) => {\n if (!enabledSet.has(\"density\")) return;\n const next = resolveUpdater(updater, density);\n void setState({\n schema: schemaVersion,\n density: next === (defaults?.density ?? \"comfortable\") ? null : next,\n });\n },\n [defaults?.density, density, enabledSet, schemaVersion, setState],\n );\n\n const setColumnOrder = React.useCallback(\n (updater: Updater) => {\n if (!enabledSet.has(\"columnOrder\")) return;\n const next = resolveUpdater(updater, columnOrder);\n void setState({\n schema: schemaVersion,\n columnOrder: next.length > 0 ? next : null,\n });\n },\n [columnOrder, enabledSet, schemaVersion, setState],\n );\n\n const setColumnPinning = React.useCallback(\n (updater: Updater) => {\n if (!enabledSet.has(\"columnPinning\")) return;\n const next = resolveUpdater(updater, columnPinning);\n void setState({\n schema: schemaVersion,\n pinning:\n (next.left?.length ?? 0) > 0 || (next.right?.length ?? 0) > 0\n ? next\n : null,\n });\n },\n [columnPinning, enabledSet, schemaVersion, setState],\n );\n\n const setGrouping = React.useCallback(\n (updater: Updater) => {\n if (!enabledSet.has(\"grouping\")) return;\n const next = resolveUpdater(updater, grouping);\n void setState({\n page: 1,\n schema: schemaVersion,\n grouping: next.length > 0 ? next : null,\n });\n },\n [enabledSet, grouping, schemaVersion, setState],\n );\n\n const setRowSelection = React.useCallback(\n (updater: Updater) => {\n if (!enabledSet.has(\"rowSelection\")) return;\n const next = resolveUpdater(updater, rowSelection);\n void setState({\n schema: schemaVersion,\n selection: hasKeys(next) ? next : null,\n });\n },\n [enabledSet, rowSelection, schemaVersion, setState],\n );\n\n const clearEnhancedState = React.useCallback(() => {\n void setState({\n schema: null,\n filters: null,\n visibility: null,\n density: null,\n columnOrder: null,\n pinning: null,\n grouping: null,\n selection: null,\n });\n }, [setState]);\n\n const tableState = React.useMemo>(\n () => ({\n globalFilter: state.query,\n pagination: {\n pageIndex: Math.max(0, state.page - 1),\n pageSize: state.pageSize,\n },\n sorting,\n viewMode: state.view,\n showHiddenRows: state.showHidden,\n ...(enabledSet.has(\"columnFilters\") ? { columnFilters } : {}),\n ...(enabledSet.has(\"columnVisibility\") ? { columnVisibility } : {}),\n ...(enabledSet.has(\"density\") ? { density } : {}),\n ...(enabledSet.has(\"columnOrder\") ? { columnOrder } : {}),\n ...(enabledSet.has(\"columnPinning\") ? { columnPinning } : {}),\n ...(enabledSet.has(\"rowSelection\") ? { rowSelection } : {}),\n }),\n [\n columnFilters,\n columnOrder,\n columnPinning,\n columnVisibility,\n density,\n enabledSet,\n rowSelection,\n sorting,\n state.page,\n state.pageSize,\n state.query,\n state.showHidden,\n state.view,\n ],\n );\n\n return {\n toolbarQueryValue: state.query,\n setToolbarQueryValue: setQuery,\n pageIndex: Math.max(0, state.page - 1),\n setPageIndex,\n pageSize: state.pageSize,\n setPageSize,\n sorting,\n setSorting,\n viewMode: state.view,\n setViewMode,\n showHiddenRows: state.showHidden,\n setShowHiddenRows: setShowHidden,\n columnFilters,\n setColumnFilters,\n columnVisibility,\n setColumnVisibility,\n density,\n setDensity,\n columnOrder,\n setColumnOrder,\n columnPinning,\n setColumnPinning,\n grouping,\n setGrouping,\n rowSelection,\n setRowSelection,\n tableState,\n schemaVersion,\n clearEnhancedState,\n };\n}\n\nfunction encodeSorting(sorting: SortingState) {\n return JSON.stringify(\n sorting.map((sort) => ({\n id: sort.id,\n desc: Boolean(sort.desc),\n })),\n );\n}\n\nfunction decodeSorting(value: string, order: \"asc\" | \"desc\"): SortingState {\n try {\n const parsed = JSON.parse(value) as unknown;\n if (!Array.isArray(parsed)) {\n throw new Error(\"Expected sorting array\");\n }\n\n return parsed\n .map((item) => {\n if (\n !item ||\n typeof item !== \"object\" ||\n typeof (item as { id?: unknown }).id !== \"string\"\n ) {\n return undefined;\n }\n\n return {\n id: (item as { id: string }).id,\n desc: Boolean((item as { desc?: unknown }).desc),\n };\n })\n .filter((item): item is SortingState[number] => Boolean(item));\n } catch {\n return [{ id: value, desc: order === \"desc\" }];\n }\n}\n\nfunction validateEnhancedState(\n value: Partial | undefined,\n enabled: Set,\n): Partial {\n if (!value) return {};\n const state: Partial = {};\n const filters = validateColumnFilters(value.columnFilters);\n if (enabled.has(\"columnFilters\") && filters) {\n state.columnFilters = filters;\n }\n const visibility = validateBooleanRecord(value.columnVisibility);\n if (enabled.has(\"columnVisibility\") && visibility) {\n state.columnVisibility = visibility;\n }\n if (\n enabled.has(\"density\") &&\n (value.density === \"compact\" ||\n value.density === \"comfortable\" ||\n value.density === \"spacious\")\n ) {\n state.density = value.density;\n }\n const order = validateStringArray(value.columnOrder);\n if (enabled.has(\"columnOrder\") && order) state.columnOrder = order;\n const pinning = validateColumnPinning(value.columnPinning);\n if (enabled.has(\"columnPinning\") && pinning) {\n state.columnPinning = pinning;\n }\n const grouping = validateStringArray(value.grouping);\n if (enabled.has(\"grouping\") && grouping) state.grouping = grouping;\n const selection = validateBooleanRecord(value.rowSelection);\n if (enabled.has(\"rowSelection\") && selection) {\n state.rowSelection = selection;\n }\n return state;\n}\n\nfunction validateColumnFilters(value: unknown): ColumnFiltersState | null {\n if (!Array.isArray(value)) return null;\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 validateBooleanRecord(value: unknown): VisibilityState | null {\n if (!isRecord(value)) return null;\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, boolean] => typeof entry[1] === \"boolean\",\n ),\n );\n}\n\nfunction validateStringArray(value: unknown): Array | null {\n if (!Array.isArray(value)) return null;\n return value.filter((item): item is string => typeof item === \"string\");\n}\n\nfunction validateColumnPinning(value: unknown): ColumnPinningState | null {\n if (!isRecord(value)) return null;\n return {\n left: validateStringArray(value.left) ?? [],\n right: validateStringArray(value.right) ?? [],\n };\n}\n\nfunction resolveUpdater(updater: Updater, current: T) {\n return typeof updater === \"function\"\n ? (updater as (value: T) => T)(current)\n : updater;\n}\n\nfunction hasKeys(value: object) {\n return Object.keys(value).length > 0;\n}\n\nfunction isRecord(value: unknown): value is Record {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../src/core/data-table/use-data-table-url-state.ts"],"names":["EMPTY_FILTERS","EMPTY_VISIBILITY","EMPTY_ORDER","EMPTY_PINNING","EMPTY_GROUPING","EMPTY_SELECTION","useDataTableUrlState","keyPrefix","defaultPageSize","defaultSort","defaultViewMode","version","enabled","defaults","migrate","onError","state","setState","useQueryStates","parseAsString","parseAsInteger","encodeSorting","parseAsStringLiteral","parseAsBoolean","parseAsJson","validateColumnFilters","validateBooleanRecord","validateStringArray","validateColumnPinning","enabledSet","enhancedResolution","raw","validateEnhancedState","error","sorting","decodeSorting","columnFilters","columnVisibility","density","columnOrder","columnPinning","grouping","rowSelection","schemaVersion","setSorting","updater","nextSorting","resolveUpdater","next","setQuery","query","setPageIndex","pageIndex","setPageSize","pageSize","setViewMode","view","setShowHidden","showHidden","setColumnFilters","setColumnVisibility","hasKeys","setDensity","setColumnOrder","setColumnPinning","setGrouping","setRowSelection","clearEnhancedState","tableState","sort","value","order","parsed","item","filters","visibility","pinning","selection","isRecord","entry","current"],"mappings":"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","file":"url-state.js","sourcesContent":["import * as React from \"react\";\nimport {\n parseAsBoolean,\n parseAsInteger,\n parseAsJson,\n parseAsString,\n parseAsStringLiteral,\n useQueryStates,\n} from \"nuqs\";\nimport type {\n ColumnFiltersState,\n ColumnOrderState,\n ColumnVisibilityState as VisibilityState,\n GroupingState,\n SortingState,\n Updater,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableColumnPinningState as ColumnPinningState,\n DataTableDensity,\n DataTableState,\n DataTableViewMode,\n} from \"../types\";\n\nexport type DataTableUrlStateSlice =\n | \"columnFilters\"\n | \"columnVisibility\"\n | \"density\"\n | \"columnOrder\"\n | \"columnPinning\"\n | \"grouping\"\n | \"rowSelection\";\n\ntype DataTableUrlRowSelectionState = Record;\n\nexport type DataTableUrlEnhancedState = {\n columnFilters: ColumnFiltersState;\n columnVisibility: VisibilityState;\n density: DataTableDensity;\n columnOrder: ColumnOrderState;\n columnPinning: ColumnPinningState;\n grouping: GroupingState;\n rowSelection: DataTableUrlRowSelectionState;\n};\n\nexport type DataTableUrlStateMigrationPayload = {\n version: unknown;\n state: Partial;\n};\n\nexport type UseDataTableUrlStateOptions = {\n keyPrefix: string;\n defaultPageSize?: number;\n defaultSort?: { id: string; desc?: boolean };\n defaultViewMode?: DataTableViewMode;\n version?: string | number;\n enabled?: Array;\n defaults?: Partial;\n migrate?: (\n payload: DataTableUrlStateMigrationPayload,\n targetVersion: string | number,\n ) => Partial | undefined;\n onError?: (context: { error: unknown; operation: \"migrate\" }) => void;\n};\n\nconst EMPTY_FILTERS: ColumnFiltersState = [];\nconst EMPTY_VISIBILITY: VisibilityState = {};\nconst EMPTY_ORDER: ColumnOrderState = [];\nconst EMPTY_PINNING: ColumnPinningState = {};\nconst EMPTY_GROUPING: GroupingState = [];\nconst EMPTY_SELECTION: DataTableUrlRowSelectionState = {};\n\nexport function useDataTableUrlState({\n keyPrefix,\n defaultPageSize = 20,\n defaultSort,\n defaultViewMode = \"table\",\n version = 1,\n enabled = [],\n defaults,\n migrate,\n onError,\n}: UseDataTableUrlStateOptions) {\n const [state, setState] = useQueryStates(\n {\n query: parseAsString.withDefault(\"\"),\n page: parseAsInteger.withDefault(1),\n pageSize: parseAsInteger.withDefault(defaultPageSize),\n sort: parseAsString.withDefault(\n defaultSort\n ? encodeSorting([\n { id: defaultSort.id, desc: Boolean(defaultSort.desc) },\n ])\n : \"\",\n ),\n order: parseAsStringLiteral([\"asc\", \"desc\"] as const).withDefault(\n defaultSort?.desc ? \"desc\" : \"asc\",\n ),\n view: parseAsStringLiteral([\"table\", \"card\"] as const).withDefault(\n defaultViewMode,\n ),\n showHidden: parseAsBoolean.withDefault(false),\n schema: parseAsString,\n filters: parseAsJson(validateColumnFilters),\n visibility: parseAsJson(validateBooleanRecord),\n density: parseAsStringLiteral(\n [\"compact\", \"comfortable\", \"spacious\"] as const,\n ),\n columnOrder: parseAsJson(validateStringArray),\n pinning: parseAsJson(validateColumnPinning),\n grouping: parseAsJson(validateStringArray),\n selection: parseAsJson(validateBooleanRecord),\n },\n {\n clearOnDefault: true,\n history: \"replace\",\n urlKeys: {\n query: `${keyPrefix}q`,\n page: `${keyPrefix}page`,\n pageSize: `${keyPrefix}size`,\n sort: `${keyPrefix}sort`,\n order: `${keyPrefix}order`,\n view: `${keyPrefix}view`,\n showHidden: `${keyPrefix}showHidden`,\n schema: `${keyPrefix}v`,\n filters: `${keyPrefix}filters`,\n visibility: `${keyPrefix}visibility`,\n density: `${keyPrefix}density`,\n columnOrder: `${keyPrefix}columns`,\n pinning: `${keyPrefix}pinning`,\n grouping: `${keyPrefix}grouping`,\n selection: `${keyPrefix}selection`,\n },\n },\n );\n const enabledSet = React.useMemo(() => new Set(enabled), [enabled]);\n const enhancedResolution = React.useMemo<{\n state: Partial;\n error?: unknown;\n }>(() => {\n const raw: Partial = {};\n if (enabledSet.has(\"columnFilters\") && state.filters !== null) {\n raw.columnFilters = state.filters;\n }\n if (enabledSet.has(\"columnVisibility\") && state.visibility !== null) {\n raw.columnVisibility = state.visibility;\n }\n if (enabledSet.has(\"density\") && state.density !== null) {\n raw.density = state.density;\n }\n if (enabledSet.has(\"columnOrder\") && state.columnOrder !== null) {\n raw.columnOrder = state.columnOrder;\n }\n if (enabledSet.has(\"columnPinning\") && state.pinning !== null) {\n raw.columnPinning = state.pinning;\n }\n if (enabledSet.has(\"grouping\") && state.grouping !== null) {\n raw.grouping = state.grouping;\n }\n if (enabledSet.has(\"rowSelection\") && state.selection !== null) {\n raw.rowSelection = state.selection;\n }\n\n if (Object.keys(raw).length === 0) {\n return { state: raw };\n }\n if (state.schema === String(version)) {\n return { state: raw };\n }\n if (!migrate) {\n return { state: {} };\n }\n\n try {\n return {\n state: validateEnhancedState(\n migrate(\n {\n version: state.schema,\n state: raw,\n },\n version,\n ),\n enabledSet,\n ),\n };\n } catch (error) {\n return { error, state: {} };\n }\n }, [\n enabledSet,\n migrate,\n state.columnOrder,\n state.density,\n state.filters,\n state.grouping,\n state.pinning,\n state.schema,\n state.selection,\n state.visibility,\n version,\n ]);\n\n React.useEffect(() => {\n if (enhancedResolution.error !== undefined) {\n onError?.({\n error: enhancedResolution.error,\n operation: \"migrate\",\n });\n }\n }, [enhancedResolution.error, onError]);\n\n const sorting = React.useMemo(() => {\n if (!state.sort) {\n return [];\n }\n return decodeSorting(state.sort, state.order);\n }, [state.order, state.sort]);\n const columnFilters =\n enhancedResolution.state.columnFilters ??\n defaults?.columnFilters ??\n EMPTY_FILTERS;\n const columnVisibility =\n enhancedResolution.state.columnVisibility ??\n defaults?.columnVisibility ??\n EMPTY_VISIBILITY;\n const density =\n enhancedResolution.state.density ??\n defaults?.density ??\n \"comfortable\";\n const columnOrder =\n enhancedResolution.state.columnOrder ??\n defaults?.columnOrder ??\n EMPTY_ORDER;\n const columnPinning =\n enhancedResolution.state.columnPinning ??\n defaults?.columnPinning ??\n EMPTY_PINNING;\n const grouping =\n enhancedResolution.state.grouping ??\n defaults?.grouping ??\n EMPTY_GROUPING;\n const rowSelection =\n enhancedResolution.state.rowSelection ??\n defaults?.rowSelection ??\n EMPTY_SELECTION;\n const schemaVersion = String(version);\n\n const setSorting = React.useCallback(\n (updater: Updater) => {\n const nextSorting = resolveUpdater(updater, sorting);\n if (nextSorting.length === 0) {\n void setState({\n page: 1,\n sort: \"\",\n order: \"asc\",\n });\n return;\n }\n\n const next = nextSorting[0];\n void setState({\n page: 1,\n sort: encodeSorting(nextSorting),\n order: next.desc ? \"desc\" : \"asc\",\n });\n },\n [setState, sorting],\n );\n\n const setQuery = React.useCallback(\n (query: string) => {\n void setState({ page: 1, query });\n },\n [setState],\n );\n\n const setPageIndex = React.useCallback(\n (pageIndex: number) => {\n void setState({ page: pageIndex + 1 });\n },\n [setState],\n );\n\n const setPageSize = React.useCallback(\n (pageSize: number) => {\n void setState({ page: 1, pageSize });\n },\n [setState],\n );\n\n const setViewMode = React.useCallback(\n (view: DataTableViewMode) => {\n void setState({ view });\n },\n [setState],\n );\n\n const setShowHidden = React.useCallback(\n (showHidden: boolean) => {\n void setState({ showHidden });\n },\n [setState],\n );\n\n const setColumnFilters = React.useCallback(\n (updater: Updater) => {\n if (!enabledSet.has(\"columnFilters\")) return;\n const next = resolveUpdater(updater, columnFilters);\n void setState({\n page: 1,\n schema: schemaVersion,\n filters: next.length > 0 ? next : null,\n });\n },\n [columnFilters, enabledSet, schemaVersion, setState],\n );\n\n const setColumnVisibility = React.useCallback(\n (updater: Updater) => {\n if (!enabledSet.has(\"columnVisibility\")) return;\n const next = resolveUpdater(updater, columnVisibility);\n void setState({\n schema: schemaVersion,\n visibility: hasKeys(next) ? next : null,\n });\n },\n [columnVisibility, enabledSet, schemaVersion, setState],\n );\n\n const setDensity = React.useCallback(\n (updater: Updater) => {\n if (!enabledSet.has(\"density\")) return;\n const next = resolveUpdater(updater, density);\n void setState({\n schema: schemaVersion,\n density: next === (defaults?.density ?? \"comfortable\") ? null : next,\n });\n },\n [defaults?.density, density, enabledSet, schemaVersion, setState],\n );\n\n const setColumnOrder = React.useCallback(\n (updater: Updater) => {\n if (!enabledSet.has(\"columnOrder\")) return;\n const next = resolveUpdater(updater, columnOrder);\n void setState({\n schema: schemaVersion,\n columnOrder: next.length > 0 ? next : null,\n });\n },\n [columnOrder, enabledSet, schemaVersion, setState],\n );\n\n const setColumnPinning = React.useCallback(\n (updater: Updater) => {\n if (!enabledSet.has(\"columnPinning\")) return;\n const next = resolveUpdater(updater, columnPinning);\n void setState({\n schema: schemaVersion,\n pinning:\n (next.left?.length ?? 0) > 0 || (next.right?.length ?? 0) > 0\n ? next\n : null,\n });\n },\n [columnPinning, enabledSet, schemaVersion, setState],\n );\n\n const setGrouping = React.useCallback(\n (updater: Updater) => {\n if (!enabledSet.has(\"grouping\")) return;\n const next = resolveUpdater(updater, grouping);\n void setState({\n page: 1,\n schema: schemaVersion,\n grouping: next.length > 0 ? next : null,\n });\n },\n [enabledSet, grouping, schemaVersion, setState],\n );\n\n const setRowSelection = React.useCallback(\n (updater: Updater) => {\n if (!enabledSet.has(\"rowSelection\")) return;\n const next = resolveUpdater(updater, rowSelection);\n void setState({\n schema: schemaVersion,\n selection: hasKeys(next) ? next : null,\n });\n },\n [enabledSet, rowSelection, schemaVersion, setState],\n );\n\n const clearEnhancedState = React.useCallback(() => {\n void setState({\n schema: null,\n filters: null,\n visibility: null,\n density: null,\n columnOrder: null,\n pinning: null,\n grouping: null,\n selection: null,\n });\n }, [setState]);\n\n const tableState = React.useMemo>(\n () => ({\n globalFilter: state.query,\n pagination: {\n pageIndex: Math.max(0, state.page - 1),\n pageSize: state.pageSize,\n },\n sorting,\n viewMode: state.view,\n showHiddenRows: state.showHidden,\n ...(enabledSet.has(\"columnFilters\") ? { columnFilters } : {}),\n ...(enabledSet.has(\"columnVisibility\") ? { columnVisibility } : {}),\n ...(enabledSet.has(\"density\") ? { density } : {}),\n ...(enabledSet.has(\"columnOrder\") ? { columnOrder } : {}),\n ...(enabledSet.has(\"columnPinning\") ? { columnPinning } : {}),\n ...(enabledSet.has(\"rowSelection\") ? { rowSelection } : {}),\n }),\n [\n columnFilters,\n columnOrder,\n columnPinning,\n columnVisibility,\n density,\n enabledSet,\n rowSelection,\n sorting,\n state.page,\n state.pageSize,\n state.query,\n state.showHidden,\n state.view,\n ],\n );\n\n return {\n toolbarQueryValue: state.query,\n setToolbarQueryValue: setQuery,\n pageIndex: Math.max(0, state.page - 1),\n setPageIndex,\n pageSize: state.pageSize,\n setPageSize,\n sorting,\n setSorting,\n viewMode: state.view,\n setViewMode,\n showHiddenRows: state.showHidden,\n setShowHiddenRows: setShowHidden,\n columnFilters,\n setColumnFilters,\n columnVisibility,\n setColumnVisibility,\n density,\n setDensity,\n columnOrder,\n setColumnOrder,\n columnPinning,\n setColumnPinning,\n grouping,\n setGrouping,\n rowSelection,\n setRowSelection,\n tableState,\n schemaVersion,\n clearEnhancedState,\n };\n}\n\nfunction encodeSorting(sorting: SortingState) {\n return JSON.stringify(\n sorting.map((sort) => ({\n id: sort.id,\n desc: Boolean(sort.desc),\n })),\n );\n}\n\nfunction decodeSorting(value: string, order: \"asc\" | \"desc\"): SortingState {\n try {\n const parsed = JSON.parse(value) as unknown;\n if (!Array.isArray(parsed)) {\n throw new Error(\"Expected sorting array\");\n }\n\n return parsed\n .map((item) => {\n if (\n !item ||\n typeof item !== \"object\" ||\n typeof (item as { id?: unknown }).id !== \"string\"\n ) {\n return undefined;\n }\n\n return {\n id: (item as { id: string }).id,\n desc: Boolean((item as { desc?: unknown }).desc),\n };\n })\n .filter((item): item is SortingState[number] => Boolean(item));\n } catch {\n return [{ id: value, desc: order === \"desc\" }];\n }\n}\n\nfunction validateEnhancedState(\n value: Partial | undefined,\n enabled: Set,\n): Partial {\n if (!value) return {};\n const state: Partial = {};\n const filters = validateColumnFilters(value.columnFilters);\n if (enabled.has(\"columnFilters\") && filters) {\n state.columnFilters = filters;\n }\n const visibility = validateBooleanRecord(value.columnVisibility);\n if (enabled.has(\"columnVisibility\") && visibility) {\n state.columnVisibility = visibility;\n }\n if (\n enabled.has(\"density\") &&\n (value.density === \"compact\" ||\n value.density === \"comfortable\" ||\n value.density === \"spacious\")\n ) {\n state.density = value.density;\n }\n const order = validateStringArray(value.columnOrder);\n if (enabled.has(\"columnOrder\") && order) state.columnOrder = order;\n const pinning = validateColumnPinning(value.columnPinning);\n if (enabled.has(\"columnPinning\") && pinning) {\n state.columnPinning = pinning;\n }\n const grouping = validateStringArray(value.grouping);\n if (enabled.has(\"grouping\") && grouping) state.grouping = grouping;\n const selection = validateBooleanRecord(value.rowSelection);\n if (enabled.has(\"rowSelection\") && selection) {\n state.rowSelection = selection;\n }\n return state;\n}\n\nfunction validateColumnFilters(value: unknown): ColumnFiltersState | null {\n if (!Array.isArray(value)) return null;\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 validateBooleanRecord(value: unknown): VisibilityState | null {\n if (!isRecord(value)) return null;\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, boolean] => typeof entry[1] === \"boolean\",\n ),\n );\n}\n\nfunction validateStringArray(value: unknown): Array | null {\n if (!Array.isArray(value)) return null;\n return value.filter((item): item is string => typeof item === \"string\");\n}\n\nfunction validateColumnPinning(value: unknown): ColumnPinningState | null {\n if (!isRecord(value)) return null;\n return {\n left: validateStringArray(value.left) ?? [],\n right: validateStringArray(value.right) ?? [],\n };\n}\n\nfunction resolveUpdater(updater: Updater, current: T) {\n return typeof updater === \"function\"\n ? (updater as (value: T) => T)(current)\n : updater;\n}\n\nfunction hasKeys(value: object) {\n return Object.keys(value).length > 0;\n}\n\nfunction isRecord(value: unknown): value is Record {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n"]} \ No newline at end of file diff --git a/dist/virtual.d.ts b/dist/virtual.d.ts index e9ddc29..5beff98 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, 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, DataTableScrollbarVisibility, 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 DataTableProps } from './types-BGNR6Ymh.js'; +export { a as DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, b as DataTableAccessibilityOptions, c as DataTableActionErrorContext, d as DataTableActionErrorSource, e as DataTableAggregationFn, f as DataTableAlign, g as DataTableApi, h as DataTableAutoPageSizeConfig, i as DataTableCardRendererProps, j as DataTableCardSizing, k as DataTableCardVirtualizationConfig, l as DataTableCellCoordinate, m as DataTableCellEditRenderProps, n as DataTableCellOverflow, o as DataTableCellSelection, p as DataTableClipboardConfig, q as DataTableClipboardCopyOptions, r as DataTableClipboardCopyScope, s as DataTableClipboardPasteContext, t as DataTableColumnDef, u as DataTableColumnFilterConfig, v as DataTableColumnFilterOperator, w as DataTableColumnFilterOption, x as DataTableColumnFilterRangeValue, y as DataTableColumnFilterType, z as DataTableColumnFixed, A as DataTableColumnGroupDef, B as DataTableColumnMeta, C as DataTableColumnPinningState, E as DataTableColumnPrefs, F as DataTableColumnType, G as DataTableColumnVisibilityOption, H as DataTableContainerBreakpoint, I as DataTableCsvExportOptions, J as DataTableCsvExportScope, K as DataTableDensity, L as DataTableDetailPanel, M as DataTableDragAndDropConfig, N as DataTableEditableRowsConfig, O as DataTableEmptyStateContext, P as DataTableExpandedRowProps, Q as DataTableFacetedFilterOptions, R as DataTableFileUploadConfig, S as DataTableGridCommandContext, T as DataTableGridCommands, U as DataTableHiddenRowsConfig, V as DataTableInfiniteScroll, W as DataTableInitialState, X as DataTableInteractiveGridOptions, Y as DataTableLabels, Z as DataTableLoadingState, _ as DataTablePersistenceConfig, $ as DataTablePersistenceOperation, a0 as DataTablePersistencePayload, a1 as DataTablePersistenceSlice, a2 as DataTablePersistenceStorage, a3 as DataTableResetOptions, a4 as DataTableRowAction, a5 as DataTableRowClassNameContext, a6 as DataTableRowLoadingState, a7 as DataTableSavedView, a8 as DataTableSavedViewSlice, a9 as DataTableSavedViewsChangeOperation, aa as DataTableSavedViewsConfig, ab as DataTableSavedViewsPayload, ac as DataTableScrollbarVisibility, ad as DataTableSelectionAction, ae as DataTableSelectionActionContext, af as DataTableState, ag as DataTableStateOverlay, ah as DataTableStateOverlayContext, ai as DataTableSummaryRow, aj as DataTableToolbarAction, ak as DataTableToolbarDataOperations, al as DataTableToolbarVisibility, am as DataTableViewMode, an as DataTableVirtualizationConfig, ao as alignClassName, ap as canEditRow, aq as canUseRowAction, ar as cellAlignClassName, as as headerAlignClassName, at as hideOnClassName, au as isHiddenAtContainerWidth, av as isRowVisible, aw as resolveColumnAlign, ax as resolveRowActionLabel, ay as rowSelectionStateFromRows } from './types-BGNR6Ymh.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, 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, scrollbarVisibility, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; diff --git a/dist/virtual.js b/dist/virtual.js index ea6ec82..403e821 100644 --- a/dist/virtual.js +++ b/dist/virtual.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-RS7MSX54.js';import {a}from'./chunk-VGMTY7KM.js';import'./chunk-B6JTUAWE.js';import'./chunk-W7VNQT7O.js';import'./chunk-VSIOOKCO.js';import'./chunk-I3CW6DTA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-PRDXFLFB.js';import'./chunk-F2RBZWQV.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-O6MUTKGE.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-RS7MSX54.js';import {a}from'./chunk-UMW6DOXG.js';import'./chunk-LTEXTQ2M.js';import'./chunk-IZQDLLCH.js';import'./chunk-VSIOOKCO.js';import'./chunk-XZTPNWJD.js';import'./chunk-EJHT5JBZ.js';import'./chunk-YKVWP3UJ.js';import'./chunk-YWMYYP3I.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-7IWMFF7E.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/docs/API.md b/docs/API.md index 11ea6d7..84e4042 100644 --- a/docs/API.md +++ b/docs/API.md @@ -2,6 +2,12 @@ This document describes the public API exported by `data-table-pro`. +Version 5's TanStack-facing types and instances use TanStack React Table v9. +The wrapper state API remains project-owned: `apiRef.current.getState()` and +physical `{ left, right }` column-pinning state are stable, while the table +returned by `apiRef.current.getTable()` follows v9. See the +[5.0 migration guide](./Migration.md) for the breaking-change map. + ## Package Entry Points Adapter entrypoints export the table component and public types. Dedicated @@ -548,12 +554,16 @@ meta: { | `manualGrouping` | `boolean` | `false` | Skips the local grouped row model for server-grouped data. | | `enableGrouping` | `boolean` | `false` | Adds accessible group/ungroup controls and a removable grouping bar. | | `groupedColumnMode` | `false \| "reorder" \| "remove"` | `"reorder"` | Placement of grouped columns. | -| `aggregationFns` | `Record>` | `undefined` | Named aggregation functions for column definitions. | +| `aggregationFns` | `Record>` | `undefined` | Named TanStack v9 context-based aggregation definitions for column definitions. | Use native TanStack `enableGrouping`, `aggregationFn`, and `aggregatedCell` on a `DataTableColumnDef`. Grouped cells toggle descendants, aggregated cells use `aggregatedCell` when present, and placeholder cells render empty. +`DataTableAggregationFn` uses the v9 definition shape. Its `aggregate` +callback receives a context containing `rows`, `getValue`, `column`, and the +owning table. V8's positional aggregation callback is not accepted. + ```tsx const columns = [ { diff --git a/docs/Migration.md b/docs/Migration.md index fd9eaeb..0768621 100644 --- a/docs/Migration.md +++ b/docs/Migration.md @@ -1,5 +1,147 @@ # Migration Guide +## 5.0.0 Breaking Changes: TanStack React Table v9 + +Version 5.0.0 upgrades from `@tanstack/react-table@8.21.3` to v9.1.2. It +targets v9 directly and does not use the deprecated `useLegacyTable` +compatibility hook. + +Install the major release from its Git tag: + +```bash +pnpm add github:Dastari/data-table-pro#v5.0.0 +``` + +### Compatibility boundary + +The component-level wrapper remains compatible where its contract is owned by +this project: + +- Controlled v8-style `Record` row selection is normalized to + v9's selected-only state at the integration boundary. +- Public and persisted column pinning remains `{ left, right }`. Only the + TanStack instance receives `{ start, end }`, so existing preferences, URLs, + saved views, labels, and physical sticky-column styling remain valid. +- `apiRef.current.getState()` remains the stable wrapper snapshot API. Code + that asks for the underlying v9 table through `apiRef.current.getTable()` + reads its current TanStack state from `table.store.state`. +- Existing package entrypoints, adapters, persisted preferences, saved views, + and URL-state formats are unchanged. + +The implementation itself now uses `useTable`, one explicit feature registry, +v9 row-model slots, and project-owned table/row/column/cell/header type aliases +that contain TanStack's new feature generic. + +### Required consumer changes + +Direct TanStack-facing code must adopt these v9 changes: + +| V8 form | V9 form used by the project | +| --- | --- | +| `sortingFn` | `sortFn` | +| callable custom `AggregationFn` | context-based `DataTableAggregationFn` definition | +| `table.getState()` | `table.store.state` (snapshot) | +| `getPrePaginationRowModel()` | `getPrePaginatedRowModel()` | +| internal pinning `left` / `right` state and methods | logical `start` / `end` state and method families | +| destructured/spread row, cell, column, or header methods | call methods through their owning instance | +| `getIsSome*Selected()` means some but not all | means at least one; combine with `!getIsAll*Selected()` for indeterminate state | +| raw `Table`, `Row`, `ColumnDef`, etc. | add v9's leading `TFeatures` generic or use project-owned `DataTable*` types | +| primitive row data | record or array row data | + +For column sorting, rename only the TanStack column-definition option: + +```tsx +const columns: Array> = [ + { + accessorKey: "name", + sortFn: "alphanumeric", + }, +]; +``` + +Register a custom aggregation as a definition with an `aggregate` method: + +```tsx + + rows.reduce((total, row) => total + Number(getValue(row)), 0) * 2, + }, + }} + columns={[ + { accessorKey: "team", enableGrouping: true }, + { accessorKey: "hours", aggregationFn: "doubledSum" }, + ]} + data={rows} + getRowId={(row) => row.id} +/> +``` + +The wrapper and underlying table now expose deliberately different pinning and +state boundaries: + +```tsx +const wrapperState = apiRef.current?.getState(); +// wrapperState.columnPinning is still { left, right } + +const table = apiRef.current?.getTable(); +const tanStackState = table?.store.state; +// tanStackState.columnPinning is { start, end } +``` + +Do not extract prototype methods from rows, cells, columns, or headers: + +```tsx +// Incorrect in v9: const { getValue } = row; +const value = row.getValue("name"); +const values = rows.map((currentRow) => currentRow.getValue("name")); +``` + +For an indeterminate selection checkbox, test both v9 predicates: + +```tsx +const indeterminate = + table.getIsSomeRowsSelected() && !table.getIsAllRowsSelected(); +``` + +### Advanced direct-TanStack checklist + +Consumers that construct their own TanStack tables alongside this package, or +that rely heavily on the instance returned by `apiRef.current.getTable()`, +should also apply the remaining v9 architecture changes: + +- replace `useReactTable(options)` with `useTable({ ...options, features })`; +- register each used feature with `tableFeatures()`; the core row model is + automatic, while optional row models move from `get*RowModel` table options + to `create*RowModel()` feature slots; +- move `sortingFns`, `filterFns`, and `aggregationFns` registries into the + feature registry and rename `sortingFns` to `sortFns`; +- split table-level `enablePinning` into `enableColumnPinning` and + `enableRowPinning` where applicable; +- register `columnSizingFeature` and `columnResizingFeature` separately, and + rename `columnSizingInfo`, `setColumnSizingInfo`, and + `onColumnSizingInfoChange` to their `columnResizing` equivalents; and +- replace underscore-prefixed v8 internals with public v9 methods, including + `row.getAllCellsByColumnId()`, `table.getTopRows()`, + `table.getCenterRows()`, and `table.getBottomRows()`. + +The package's own integration has completed this checklist. These items apply +only to consumer code that directly constructs or operates on TanStack +instances. + +### Post-5.0 follow-up work + +These are optimizations and additional coverage, not release blockers or +unrecorded compatibility requirements: + +- replace the broad built-in filter/sort/aggregation registries with an + audited tree-shakeable registry while retaining documented string names; +- add focused consumer fixtures for v9-only `sortFn`, custom filters, and + custom aggregations; +- evaluate narrower `useTable` selectors and `Subscribe` boundaries after + measuring render behavior. + ## 4.5.0 additive layout release Version 4.5.0 removes no public prop, type, or package entrypoint. Existing @@ -132,7 +274,7 @@ one of these peer minimums must update that dependency before consuming the next release. Repository contributors now need a jsdom 30-supported Node.js release -(`^22.22.2`, `^24.15.0`, or `>=26`) and pnpm 11.17.0. CI uses Node.js +(`^22.22.2`, `^24.15.0`, or `>=26`) and pnpm 11.21.0. CI uses Node.js 22.22.2. TypeScript 7.0 removes `baseUrl` and does not expose the programmatic compiler API needed by typescript-eslint and tsup. The repository therefore follows the TypeScript team's side-by-side migration: @@ -291,24 +433,25 @@ Use `resetColumnLayout({ clearPersistence: true })` or `resetState({ clearPersistence: true })` to discard the old payload and restore initial/default values in one command. -## Planned 5.0 migration +## Deferred wrapper API cleanup after 5.0 -Version 4.0.0 intentionally removes no public API. The modernization roadmap -defines the following possible 5.0 changes so consumers can adopt their 4.x -replacements before anything is removed: +Version 5.0.0 uses its major boundary for the TanStack v9 migration above. It +does not remove the unrelated wrapper compatibility APIs previously proposed +for 5.0. Those candidates remain deferred until a later major and still +require a stable replacement and deprecation period: -| Current 4.x API | Planned 5.0 API | Compatibility path | +| Current compatibility API | Possible future API | Compatibility path | | --- | --- | --- | -| `toolbarQueryValue`, `onToolbarQueryValueChange`, `toolbarQueryDebounceMs` | `globalFilter`, `onGlobalFilterChange`, `globalFilterDebounceMs` | Both names will work during a 4.x deprecation window before any removal. | -| Split `pageIndex`/`pageSize` props and callbacks | Unified pagination state and `onPaginationChange` | Unified state is additive in 4.x. | -| `renderExpandedRow` and `getRowCanExpand` for detail content | `detailPanel={{ render, getCanExpand }}` | The explicit detail-panel API will ship before tree expansion takes ownership of expanded-row semantics. | -| `columnPrefsKey` | Versioned `persistence` configuration | `columnPrefsKey` remains a 4.x compatibility shorthand. | -| `virtualization` on the base component | Dedicated virtual adapter entrypoints | Both entry styles coexist in 4.x; base imports load virtual panels on demand. | -| Broad `data-table-pro/advanced` imports | Stable `data-table-pro/adapter` contracts | The stable factory entrypoint is available; advanced remains supported through 4.x. | +| `toolbarQueryValue`, `onToolbarQueryValueChange`, `toolbarQueryDebounceMs` | `globalFilter`, `onGlobalFilterChange`, `globalFilterDebounceMs` | Both names must work during a documented deprecation window before removal. | +| Split `pageIndex`/`pageSize` props and callbacks | Unified pagination state and `onPaginationChange` | Unified state remains additive until the split props are formally deprecated. | +| `renderExpandedRow` and `getRowCanExpand` for detail content | `detailPanel={{ render, getCanExpand }}` | The explicit detail-panel API must remain stable before tree expansion takes exclusive ownership. | +| `columnPrefsKey` | Versioned `persistence` configuration | `columnPrefsKey` remains a compatibility shorthand until a later deprecation. | +| `virtualization` on the base component | Dedicated virtual adapter entrypoints | Both entry styles continue to coexist; base imports load virtual panels on demand. | +| Broad `data-table-pro/advanced` imports | Stable `data-table-pro/adapter` contracts | A complete advanced-import mapping is required before removal. | -Any 5.0 removal is gated on: +Any future removal is gated on: -- at least one stable 4.x release containing every replacement +- at least one stable release containing every replacement - development warnings for conflicting old/new props - a codemod for renamed props and entrypoints - migration fixtures for every adapter, server pagination, URL state, diff --git a/docs/Roadmap.md b/docs/Roadmap.md index 2c7ffb6..ba3b666 100644 --- a/docs/Roadmap.md +++ b/docs/Roadmap.md @@ -16,15 +16,15 @@ Audit baseline: Current implementation baseline: -- package version: 4.5.0 +- package version: 5.0.0 - React/React DOM peers: 19.2.8 -- TanStack Table: 8.21.3 -- TanStack Virtual: 3.14.8 -- validation: 317 unit/integration tests, enforced coverage and declaration +- TanStack Table: 9.1.2 with explicit features and no legacy hook +- TanStack Virtual: 3.14.9 +- validation: 318 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 - compatibility package, ESLint 10, Vite 8, Vitest 4, and pnpm 11 + compatibility package, ESLint 10, Vite 8, Vitest 4, and pnpm 11.21 ## Goals @@ -34,7 +34,8 @@ Current implementation baseline: 3. Add the quality-of-life features users expect from a modern data grid without turning the default table into a large enterprise-grid bundle. 4. Make optional features independently importable and measurable. -5. Preserve 4.x compatibility while preparing one documented future 5.0 cleanup. +5. Preserve wrapper compatibility across the 5.0 TanStack migration and stage + unrelated cleanup only after documented deprecation periods. ## Non-goals @@ -64,7 +65,7 @@ Current implementation baseline: | I18N-01 | P1 | Several selection, view-toggle, filter, and card labels remain hard-coded rather than flowing through `DataTableLabels`. | Complete the label catalog and add an alternate-locale regression fixture. | | API-01 | P1 | State is controlled through many separate props and column sizing cannot be controlled. There is no unified initial state, state callback, or public table API ref. | Add `initialState`, `state`, `onStateChange`, controlled column sizing, and a typed API ref; delivered before the 4.0 release. | | API-02 | P1 | Detail panels use TanStack expansion state, but true hierarchical sub-rows are not supported. This makes the meaning of “expanded” ambiguous. | Separate `detailPanel` from tree expansion and add `getSubRows`/manual expanding. | -| API-03 | P1 | The `advanced` entrypoint exposes implementation hooks and panels as a supported surface, making internal refactors expensive. | Introduce a narrow stable adapter-authoring entrypoint and mark raw internals as unstable before 5.0. | +| API-03 | P1 | The `advanced` entrypoint exposes implementation hooks and panels as a supported surface, making internal refactors expensive. | Introduce a narrow stable adapter-authoring entrypoint and mark raw internals as unstable before any later cleanup major. | | QA-01 | P1 | All 164 interaction cases live in one 1,800-line test file and mostly use jsdom. There are no visual, real-layout, accessibility, SSR, or consumer-install tests. | Split tests by feature and add Playwright, screenshot, axe, SSR, and packed-package fixtures. | | QA-02 | P1 | CI builds committed `dist` but does not fail when the generated output is stale. There are no bundle, coverage, or public-type/API budgets. | Add clean-tree distribution checks, bundle limits, coverage thresholds, and API/type snapshots. | | QA-03 | P2 | API documentation is maintained manually and can drift from `DataTableProps` and labels. Dependency updates are also manual. | Generate prop/type reference sections, link examples to tests, and add scheduled dependency update/compatibility checks. | @@ -457,28 +458,30 @@ request deduplication, caching, retry, refresh, and invalidation. lazy child/group loading. - Keep direct `data` plus manual flags supported for simple consumers. -### Future Phase 5: 5.0 API cleanup +### Deferred wrapper API cleanup after 5.0 -Version 4.0.0 intentionally shipped without public API removals. A future 5.0 -may remove only APIs that receive a documented 4.x replacement and deprecation -period. It should not combine unrelated visual redesign work with the -migration. +Version 5.0.0 uses its major-version boundary for TanStack React Table v9 and +does not perform the unrelated wrapper cleanup proposed earlier in the 4.x +roadmap. Any future removal still requires a stable replacement and a +documented deprecation period. It should not be combined with unrelated visual +redesign work. -Planned breaking changes: +Deferred candidates: -| Current 4.x API | Planned 5.0 API | 4.x migration bridge | +| Current compatibility API | Possible future API | Required migration bridge | | --- | --- | --- | -| `toolbarQueryValue`, `onToolbarQueryValueChange`, `toolbarQueryDebounceMs` | `globalFilter`, `onGlobalFilterChange`, `globalFilterDebounceMs` | Add aliases during 4.x; keep old names functional and deprecated before removal. | -| `pageIndex`, `pageSize`, `onPageIndexChange`, `onPageSizeChange` | `state.pagination`/`pagination` and `onPaginationChange` | Unified state is already additive; document precedence and add any missing aliases during 4.x. | -| `renderExpandedRow`, `getRowCanExpand` for detail UI | `detailPanel={{ render, getCanExpand }}` | Add `detailPanel` during 4.x; reserve expansion props for tree rows only after the bridge ships. | -| `columnPrefsKey` | `persistence={{ key, version, slices, ... }}` | Treat the old prop as persistence shorthand throughout 4.x. | -| `virtualization` on the base component | Virtual adapter entrypoints/components | Keep both paths throughout 4.x; provide an import codemod and runtime-equivalent examples. | -| Broad `data-table-pro/advanced` internals | Stable `data-table-pro/adapter` plus explicitly unstable internals | The stable adapter contracts exist; publish a complete advanced-import mapping before removal. | -| Resolved-value-only controlled callbacks | TanStack-compatible updater callbacks through unified state | Keep legacy callbacks throughout 4.x and provide adapters for common `setState` usage. | +| `toolbarQueryValue`, `onToolbarQueryValueChange`, `toolbarQueryDebounceMs` | `globalFilter`, `onGlobalFilterChange`, `globalFilterDebounceMs` | Ship aliases and keep the old names functional and deprecated before removal. | +| `pageIndex`, `pageSize`, `onPageIndexChange`, `onPageSizeChange` | `state.pagination`/`pagination` and `onPaginationChange` | Keep unified state additive, document precedence, and add any missing aliases. | +| `renderExpandedRow`, `getRowCanExpand` for detail UI | `detailPanel={{ render, getCanExpand }}` | Keep the explicit detail-panel replacement stable before tree expansion takes exclusive ownership. | +| `columnPrefsKey` | `persistence={{ key, version, slices, ... }}` | Continue treating the old prop as persistence shorthand through a deprecation window. | +| `virtualization` on the base component | Virtual adapter entrypoints/components | Keep both paths available before providing a codemod and runtime-equivalent examples. | +| Broad `data-table-pro/advanced` internals | Stable `data-table-pro/adapter` plus explicitly unstable internals | Publish a complete advanced-import mapping before removal. | +| Resolved-value-only controlled callbacks | TanStack-compatible updater callbacks through unified state | Provide adapters for common `setState` usage through a deprecation window. | Migration requirements: -- Publish a complete `4.x -> 5.0` guide before the first 5.0 prerelease. +- Publish a complete guide before the first prerelease that removes any of + these compatibility APIs. - Provide before/after examples and a codemod for renamed props/imports. - Test migration fixtures for all three adapters, URL state, manual server pagination, virtualization, detail panels, and persisted preferences. @@ -486,7 +489,7 @@ Migration requirements: - Version persisted and URL state so old payloads are migrated or safely discarded instead of partially applied. - Do not remove a deprecated API until its replacement has shipped in at least - one stable 4.x release. + one stable release. ## Deferred and optional capabilities @@ -522,7 +525,7 @@ Release order is deliberate: 3. Establish accessible focus/navigation before cell range selection. 4. Split optional runtime capabilities before adding column virtualization or XLSX. -5. Ship deprecation bridges before 5.0 removes anything. +5. Ship deprecation bridges before any later major removes compatibility APIs. ## Reference set diff --git a/package.json b/package.json index 01a07cb..16ddc2c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "data-table-pro", - "version": "4.5.0", + "version": "5.0.0", "description": "Reusable React data table library with shadcn, HeroUI, and The Gridcn adapters.", "type": "module", "license": "MIT", @@ -12,7 +12,7 @@ "bugs": { "url": "https://github.com/Dastari/data-table-pro/issues" }, - "packageManager": "pnpm@11.17.0", + "packageManager": "pnpm@11.21.0", "engines": { "node": ">=20.19" }, @@ -124,34 +124,34 @@ } }, "dependencies": { - "@tanstack/react-table": "^8.21.3", - "@tanstack/react-virtual": "^3.14.8", + "@tanstack/react-table": "^9.1.2", + "@tanstack/react-virtual": "^3.14.9", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "radix-ui": "^1.6.7", "tailwind-merge": "^3.6.0" }, "devDependencies": { - "@axe-core/playwright": "^4.12.1", + "@axe-core/playwright": "^4.13.0", "@eslint/js": "^10.0.1", - "@playwright/test": "^1.62.0", + "@playwright/test": "^1.62.1", "@tailwindcss/vite": "^4.3.3", "@testing-library/react": "^16.3.2", "@typescript/native": "npm:typescript@^7.0.2", - "@types/react": "^19.2.17", - "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^6.0.4", + "@types/react": "^19.2.18", + "@types/react-dom": "^19.2.4", + "@vitejs/plugin-react": "^6.0.5", "@vitest/coverage-v8": "^4.1.10", - "eslint": "^10.8.0", + "eslint": "^10.8.1", "eslint-plugin-react-hooks": "^7.1.1", - "globals": "^17.8.0", - "jsdom": "^30.0.0", - "shadcn": "^4.15.0", + "globals": "^17.11.0", + "jsdom": "^30.0.1", + "shadcn": "^4.17.0", "tailwindcss": "^4.3.3", "tsup": "^8.5.1", "typescript": "npm:@typescript/typescript6@^6.0.2", - "typescript-eslint": "^8.65.0", - "vite": "^8.1.5", + "typescript-eslint": "^8.67.0", + "vite": "^8.2.1", "vitest": "^4.1.10" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0d0a074..72e5756 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,11 +21,11 @@ importers: specifier: ^3.2.2 version: 3.2.2(tailwind-merge@3.6.0)(tailwindcss@4.3.3) '@tanstack/react-table': - specifier: ^8.21.3 - version: 8.21.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + specifier: ^9.1.2 + version: 9.1.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8) '@tanstack/react-virtual': - specifier: ^3.14.8 - version: 3.14.8(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + specifier: ^3.14.9 + version: 3.14.9(react-dom@19.2.8(react@19.2.8))(react@19.2.8) class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -37,7 +37,7 @@ importers: version: 2.9.2(react@19.2.8) radix-ui: specifier: ^1.6.7 - version: 1.6.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + version: 1.6.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: specifier: ^19.2.8 version: 19.2.8 @@ -49,68 +49,68 @@ importers: version: 3.6.0 devDependencies: '@axe-core/playwright': - specifier: ^4.12.1 - version: 4.12.1(playwright-core@1.62.0) + specifier: ^4.13.0 + version: 4.13.0(playwright-core@1.62.1) '@eslint/js': specifier: ^10.0.1 - version: 10.0.1(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0)) + version: 10.0.1(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0)) '@playwright/test': - specifier: ^1.62.0 - version: 1.62.0 + specifier: ^1.62.1 + version: 1.62.1 '@tailwindcss/vite': specifier: ^4.3.3 - version: 4.3.3(vite@8.1.5(esbuild@0.28.1)(jiti@2.7.0)) + version: 4.3.3(vite@8.2.1(esbuild@0.28.1)(jiti@2.7.0)) '@testing-library/react': specifier: ^16.3.2 - version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) '@types/react': - specifier: ^19.2.17 - version: 19.2.17 + specifier: ^19.2.18 + version: 19.2.18 '@types/react-dom': - specifier: ^19.2.3 - version: 19.2.3(@types/react@19.2.17) + specifier: ^19.2.4 + version: 19.2.4(@types/react@19.2.18) '@typescript/native': specifier: npm:typescript@^7.0.2 version: typescript@7.0.2 '@vitejs/plugin-react': - specifier: ^6.0.4 - version: 6.0.4(vite@8.1.5(esbuild@0.28.1)(jiti@2.7.0)) + specifier: ^6.0.5 + version: 6.0.5(vite@8.2.1(esbuild@0.28.1)(jiti@2.7.0)) '@vitest/coverage-v8': specifier: ^4.1.10 version: 4.1.10(vitest@4.1.10) eslint: - specifier: ^10.8.0 - version: 10.8.0(jiti@2.7.0)(supports-color@7.2.0) + specifier: ^10.8.1 + version: 10.8.1(jiti@2.7.0)(supports-color@7.2.0) eslint-plugin-react-hooks: specifier: ^7.1.1 - version: 7.1.1(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) + version: 7.1.1(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) globals: - specifier: ^17.8.0 - version: 17.8.0 + specifier: ^17.11.0 + version: 17.11.0 jsdom: - specifier: ^30.0.0 - version: 30.0.0(@noble/hashes@1.8.0) + specifier: ^30.0.1 + version: 30.0.1(@noble/hashes@1.8.0) shadcn: - specifier: ^4.15.0 - version: 4.15.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0) + specifier: ^4.17.0 + version: 4.17.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0) tailwindcss: specifier: ^4.3.3 version: 4.3.3 tsup: specifier: ^8.5.1 - version: 8.5.1(@typescript/typescript6@6.0.2)(jiti@2.7.0)(postcss@8.5.23)(supports-color@7.2.0) + version: 8.5.1(@typescript/typescript6@6.0.2)(jiti@2.7.0)(postcss@8.5.26)(supports-color@7.2.0) typescript: specifier: npm:@typescript/typescript6@^6.0.2 version: '@typescript/typescript6@6.0.2' typescript-eslint: - specifier: ^8.65.0 - version: 8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) + specifier: ^8.67.0 + version: 8.67.0(@typescript/typescript6@6.0.2)(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) vite: - specifier: ^8.1.5 - version: 8.1.5(esbuild@0.28.1)(jiti@2.7.0) + specifier: ^8.2.1 + version: 8.2.1(esbuild@0.28.1)(jiti@2.7.0) vitest: specifier: ^4.1.10 - version: 4.1.10(@vitest/coverage-v8@4.1.10)(jsdom@30.0.0(@noble/hashes@1.8.0))(msw@2.12.14(@typescript/typescript6@6.0.2))(vite@8.1.5(esbuild@0.28.1)(jiti@2.7.0)) + version: 4.1.10(@vitest/coverage-v8@4.1.10)(jsdom@30.0.1(@noble/hashes@1.8.0))(msw@2.12.14(@typescript/typescript6@6.0.2))(vite@8.2.1(esbuild@0.28.1)(jiti@2.7.0)) packages: @@ -122,8 +122,8 @@ packages: resolution: {integrity: sha512-UJLfKXBhrc8i1vH2eJXuYQMwlsLKWFw3O+CPqXSuVEiikeAim3UgrfWX0k4tA/X8cRFM8iZ7OaqBokFGbYusdg==} engines: {node: ^22.13.0 || >=24.0.0} - '@axe-core/playwright@4.12.1': - resolution: {integrity: sha512-rMd7xriptqKpP+w5265i4Hdkv2X5kbu6uiBi/B2I7uf3hieRBM3qDCfaKPtxfiYb2mKXfF+yLODJwIx+Jv1GDw==} + '@axe-core/playwright@4.13.0': + resolution: {integrity: sha512-6YLx+kxXu5GJceG4ozFg+33a2EMTdjYwWGloJ3sb9Kta5pp+ZNS53uxGVog5JetIY8s++P5UrtX+cri+u0VAVg==} peerDependencies: playwright-core: '>= 1.0.0' @@ -311,15 +311,6 @@ packages: '@dotenvx/primitives@0.8.0': resolution: {integrity: sha512-VYJy0uhFm9zTJ1TxBaW/pA8bjbOM/OttaNMwZ1RHG4JKyRG7DhSdiqD1ipQoAyoD22olUtxbP78W9xY3Wd11bg==} - '@emnapi/core@1.11.1': - resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==} - - '@emnapi/runtime@1.11.1': - resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==} - - '@emnapi/wasi-threads@1.2.2': - resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} - '@esbuild/aix-ppc64@0.28.1': resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} engines: {node: '>=18'} @@ -635,12 +626,6 @@ packages: resolution: {integrity: sha512-cXu86tF4VQVfwz8W1SPbhoRyHJkti6mjH/XJIxp40jhO4j2k1m4KYrEykxqWPkFF3vrK4rgQppBh//AwyGSXPA==} engines: {node: '>=18'} - '@napi-rs/wasm-runtime@1.1.6': - resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} - peerDependencies: - '@emnapi/core': ^1.7.1 - '@emnapi/runtime': ^1.7.1 - '@noble/hashes@1.8.0': resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} engines: {node: ^14.21.3 || >=16} @@ -666,11 +651,11 @@ packages: '@open-draft/until@2.1.0': resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} - '@oxc-project/types@0.139.0': - resolution: {integrity: sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==} + '@oxc-project/types@0.143.0': + resolution: {integrity: sha512-u6JZdLBTLotrNC9Vd6vPssINdzcCzleKAH6EJKImQb7GtYvX5keN2dxkoK44stCc4tffE6QQRtZTXVSzsLUlWA==} - '@playwright/test@1.62.0': - resolution: {integrity: sha512-9zOJ6ZQRAena31MpOH9VSzIz8Ou3YJ/wtY/eQm5T2uhfhG7/U3COrMS8xOtUrZrp9OgdmzEnIYODye3nY1VqzA==} + '@playwright/test@1.62.1': + resolution: {integrity: sha512-DTcUc8qii+cpHvtOwggMtBRMjKZHXYWdw8syRYu2vtzuq4Wxphqq4NfCs5Zt44L6mA8rfDfj+PHnxFc/FeK6mQ==} engines: {node: '>=20'} hasBin: true @@ -1364,97 +1349,92 @@ packages: '@radix-ui/rect@1.1.3': resolution: {integrity: sha512-JtyZR+mqgBibTo8xea3B6ZRmzZiM/YeVBtUkas6zMuXjAlfIFIW2FgqeM9eLyvEaYX66vr6DJMK+4U6LV0KhNw==} - '@rolldown/binding-android-arm64@1.1.5': - resolution: {integrity: sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==} + '@rolldown/binding-android-arm64@1.2.3': + resolution: {integrity: sha512-zrJtHDcaZJ1Fp7xf4hNl+7seH9Cn/N5TwLYkhgXREtBwAd/jaqW3uqeHxpDugJLVICWg4eW44kOQEGJ1r6jCGw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.1.5': - resolution: {integrity: sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw==} + '@rolldown/binding-darwin-arm64@1.2.3': + resolution: {integrity: sha512-ieIiibVCp0tX7TLu2cafoNPv8wJyYi01ekXpbf8q2j7F4rGAhhXb/eQh7ge9DRBY78GwmRQtvjZDux7EDbA8kA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.1.5': - resolution: {integrity: sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g==} + '@rolldown/binding-darwin-x64@1.2.3': + resolution: {integrity: sha512-Zh9tCon19eDXJoihx0rqKhMUlMYqzwj3aPsSuHmI4RWZh62dWUL+DJN4C5YQya5TcQBJU/Fe8+rY0jhXTQITqA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.1.5': - resolution: {integrity: sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA==} + '@rolldown/binding-freebsd-x64@1.2.3': + resolution: {integrity: sha512-nGbJWewA1wrXXZiQhjAT5rhibGfns5ZNkDVqxsO6zJ3f3YvpoDNNmGMSbbhLuXKjNScaBJVOAboztAWVespQMg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.1.5': - resolution: {integrity: sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw==} + '@rolldown/binding-linux-arm-gnueabihf@1.2.3': + resolution: {integrity: sha512-QNniJr5Kml0kDEB98jiDOJjXNroxIIi0IXIbdYzY26Xt1pVbeP62+KnoIZLwirOymX/0jDk/2gI/bNUv7A7OIw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.1.5': - resolution: {integrity: sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q==} + '@rolldown/binding-linux-arm64-gnu@1.2.3': + resolution: {integrity: sha512-TkqEAcmmvH3I/q4114NB4RVt6241Dao48pF45uLcFGrwAaIn0iITgTAKP/dLjbN0R4buJjGb91+UHSoFmpgIWw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.1.5': - resolution: {integrity: sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA==} + '@rolldown/binding-linux-arm64-musl@1.2.3': + resolution: {integrity: sha512-NHqjnxpsndf4MPymxteFAWHHfkTL8HjWh1KB7z23ofZ6QO2euONuxDXjat69dKZRALnGypg8k8SsK8vZJoXv1Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.1.5': - resolution: {integrity: sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg==} + '@rolldown/binding-linux-ppc64-gnu@1.2.3': + resolution: {integrity: sha512-6tbrbwfz5GB9DQ4Jwo6hy9v+vR31xZlvzZ6n5Xut6Hhx5PvrA9q/HsK8KMaYQp063iqZGXwNvZtYNLD7EM/x0w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.1.5': - resolution: {integrity: sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA==} + '@rolldown/binding-linux-s390x-gnu@1.2.3': + resolution: {integrity: sha512-oyuXxXmoZHjXC917IAPFAAv4wWAa0cM9afk8nx1+9/jNNOX1uPf8yDA6p7G0RypOfw/X0PQt5IfoquY1um+zSg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.1.5': - resolution: {integrity: sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ==} + '@rolldown/binding-linux-x64-gnu@1.2.3': + resolution: {integrity: sha512-TytMwF2KVGqP2tgd0I1OY0PAv78dZRAYcF5ssDzjM34SUXCED3uXvSd5+lHoC0bTD6eEdFz7LdQNCO1y0oVk9w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.1.5': - resolution: {integrity: sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg==} + '@rolldown/binding-linux-x64-musl@1.2.3': + resolution: {integrity: sha512-/E9m3qstrJFVPoULV25mVQblSNExY2+kBsYe4sy0Tn0yOOgJ8wZbZt3KnRbF/XeU2Gl1STKUQnDNTqhIE5MD4A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.1.5': - resolution: {integrity: sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw==} + '@rolldown/binding-openharmony-arm64@1.2.3': + resolution: {integrity: sha512-Kr0OcsoQI816i6HOl3vFHpd1K0eZyh76zgfj4c1nTyaTsd5r2Mj1lwM4R90y/qaCfmTn9eHy0SKwi98eitRxug==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.1.5': - resolution: {integrity: sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [wasm32] - - '@rolldown/binding-win32-arm64-msvc@1.1.5': - resolution: {integrity: sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw==} + '@rolldown/binding-win32-arm64-msvc@1.2.3': + resolution: {integrity: sha512-hOtMwTqnME+/gJcH/PCZ0wn0zPUjiWOgkHpxbSJpfGKMezHltx1S7/k1SitzVa7Ww2cqrDDaFbZEhcJZO8o+Jw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.1.5': - resolution: {integrity: sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA==} + '@rolldown/binding-win32-x64-msvc@1.2.3': + resolution: {integrity: sha512-ekcqMMkI2PlhYnfzQnB/cEdYUVVJViWvoUyLrbzgDoi3Snfc1mVBwdnc306ufA5ejy8JSPjT2RlW1nQSjW7efg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -1704,25 +1684,33 @@ packages: peerDependencies: vite: ^5.2.0 || ^6 || ^7 || ^8 - '@tanstack/react-table@8.21.3': - resolution: {integrity: sha512-5nNMTSETP4ykGegmVkhjcS8tTLW6Vl4axfEGQN3v0zdHYbK4UfoqfPChclTrJ4EoK9QynqAu9oUf8VEmrpZ5Ww==} - engines: {node: '>=12'} + '@tanstack/react-store@0.11.1': + resolution: {integrity: sha512-HaIGKI3YLmjBYIvy5DFDY23oNaYZIsTZfngey07Uh5iLVJgM3bIGCnZeOFOqzjFld9JHWcaHJnasD/bKoGKwJQ==} peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + '@tanstack/react-table@9.1.2': + resolution: {integrity: sha512-YQPZFJ1nIi/bjjwsPZVouABgahDcl7Gdm33CdTStUJBn0DjEVJ2uhSTVmIoWt9MVKdQziXGAsXipSzy949Hygg==} + engines: {node: '>=20'} + peerDependencies: + react: '>=18' - '@tanstack/react-virtual@3.14.8': - resolution: {integrity: sha512-O39GJQpAYEJcIu3uN1//YtmhjSEOyw75vg9CKCatBDPiD5hKtZQoJHfferyrB/LdOD3UWaoMLWtdEjarwIwdDw==} + '@tanstack/react-virtual@3.14.9': + resolution: {integrity: sha512-qZyr0FZDP8rDC4WBhsryIZmAd9bveJvFGUJJtskWaew6/0dTRS6wZxnR6VQ5bY2KwL3LjerrHqQLk3a0GKcPXQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tanstack/table-core@8.21.3': - resolution: {integrity: sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg==} - engines: {node: '>=12'} + '@tanstack/store@0.11.1': + resolution: {integrity: sha512-mzTOBhypOuDJAy/D8n2MfUZ1HFkXnmSETviRyhqEC8LUE7/IZQExOTxMANj3KjTofYTkFNpBY67qaVrT41YccA==} + + '@tanstack/table-core@9.1.2': + resolution: {integrity: sha512-ONpWQeass1sfg80CWF1NSwQ8r3GiqxA2lT/EdqIcrDEPZ0Z+0mM94eQoFYLPN0Kztzj8TQVb2+PrSZSItqA61g==} + engines: {node: '>=20'} - '@tanstack/virtual-core@3.17.6': - resolution: {integrity: sha512-h0/Ebo18CkOrChlQIhNtQkM5ySUnh/GumQ/D1st3hG2HWUPEF+ILUc2k29UtivCi/9G7w7G3/f7Xyd5cCFbKBw==} + '@tanstack/virtual-core@3.17.7': + resolution: {integrity: sha512-bp+v10y65sp2H7WpWfIMyxTNfl8ZVfxFTLRjPIFRryi6FV/J33z4IS53WO4pTk36KlvJ4iLiQz+oaydDC1xbcA==} '@testing-library/dom@10.4.1': resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==} @@ -1746,9 +1734,6 @@ packages: '@ts-morph/common@0.27.0': resolution: {integrity: sha512-Wf29UqxWDpc+i61k3oIOzcUfQt79PIT9y/MWfAGlrkjg6lBC1hwDECLXPVJAhWjiGbfBCxZd65F/LIZF3+jeJQ==} - '@tybys/wasm-util@0.10.3': - resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} - '@types/aria-query@5.0.4': resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} @@ -1767,13 +1752,13 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/react-dom@19.2.3': - resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} + '@types/react-dom@19.2.4': + resolution: {integrity: sha512-Bsc+QHgp+P/F02XDzNCY9jnZNCUuLki36KT7VKrTXXLdHf+vHMNZnW1rVu5DNW/rCK+fya3DATySbLM4yhtKUw==} peerDependencies: '@types/react': ^19.2.0 - '@types/react@19.2.17': - resolution: {integrity: sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw==} + '@types/react@19.2.18': + resolution: {integrity: sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w==} '@types/statuses@2.0.6': resolution: {integrity: sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==} @@ -1781,63 +1766,63 @@ packages: '@types/validate-npm-package-name@4.0.2': resolution: {integrity: sha512-lrpDziQipxCEeK5kWxvljWYhUvOiB2A9izZd9B2AFarYAkqZshb4lPbRs7zKEic6eGtH8V/2qJW+dPp9OtF6bw==} - '@typescript-eslint/eslint-plugin@8.65.0': - resolution: {integrity: sha512-IEgob78X12rHpUmtcwFsXhZdVGJtwTVP8FiCLZkR6GlYVrl2PcuB+KhCE5BlVC/eQpQnu8WXRtkHZuPar+gCRA==} + '@typescript-eslint/eslint-plugin@8.67.0': + resolution: {integrity: sha512-Un7Heoyj65NREbKAyIrFxeM143NZpExWmy1Nep4DLeQOeLlTeumPjoNKnBrU5D5moWXbPJgRa5Uwcdu0faVNGQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.65.0 + '@typescript-eslint/parser': ^8.67.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.65.0': - resolution: {integrity: sha512-CZ4nMxWwgu1HEEFNkeaCptra9QCtkmKdgf3sWh1rl1trIhmxLilgTV4cwcbQ4wemnT4sWQN8CaKOmdYx+g2gMA==} + '@typescript-eslint/parser@8.67.0': + resolution: {integrity: sha512-fUBfTuuEulWqX6V8+O3PtScV01tzYYRUDTAirHFKoRAt7nOzoGiPt0M/bB47wWNy0coOOcgEwAMUtBpykMxl6w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.65.0': - resolution: {integrity: sha512-SxnPhbTsGahizDgbu7oqFH/xVtzIqMd/s+WtnSxNxJZJpLbdT5IPdzg8EZxO3+PoKahXmwJLeNQOpKJb3/bi7Q==} + '@typescript-eslint/project-service@8.67.0': + resolution: {integrity: sha512-cvE8c7ulYeXN9fYuszhCeCsbzyVEXuhrRCybnBre7TUmqb5nRmBfQAwCj0O3WJFDeyAZt4VYv51vMCC9LHSdYw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@8.65.0': - resolution: {integrity: sha512-Esbl8OSYiVxBokYgWPf7VVWg/BE798wXhimnn9ML9Pt5qoDf8bfQlgjlKXR/k98+AcNzlLKYrpCcrcuZ9DZLgg==} + '@typescript-eslint/scope-manager@8.67.0': + resolution: {integrity: sha512-EgvsleTwS4E+WzzSvem8fAUubLwatMNF1B5hHSLQxcvs7q2dtRhGyujHwLJSYlG41niJ7GP24Aha2+0mb1b2kg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.65.0': - resolution: {integrity: sha512-j6GzGqCiRdA7Qhur2VVmKZAkBLfnHFQfx4TaJGL9RMveZqCo48jSHHO0DTgizEnGhtWnqmbtCUSrqSkdiY/0Hg==} + '@typescript-eslint/tsconfig-utils@8.67.0': + resolution: {integrity: sha512-vV+LUSv5njUWsknE71fqKTlXUva+R76SaeORd6Zojcunk/6DvKFXONU3BrAs2H49mbygUXt6gbYunzwqNwlhdg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.65.0': - resolution: {integrity: sha512-YjaZ7PRI5qY7ax2L3PbvX0rRyGtipAReCWs0mhhDBHjH/vl0g0BonaGXrKdKpMbIIsMIwDgbk/xzkBTyAltS5g==} + '@typescript-eslint/type-utils@8.67.0': + resolution: {integrity: sha512-aVWDXbRmdXO9siTfX4ditQI1T9+zVcNazT48EJCD0v40/9RIFoUgZ05CmGEq9H2gixRpjUn/iplwvlcvutJW/Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/types@8.65.0': - resolution: {integrity: sha512-JSSwWNy+H0E/01jJEM+hrX6N0OFDzFzeIhHFSAS01tlVaevpG8cFyYRPhS5yjGOvBUx3sqQHVMjCL1CAZZMxBg==} + '@typescript-eslint/types@8.67.0': + resolution: {integrity: sha512-sBtgslww8nsMYUjhdPBiSyUqSzT8uR6g93A2QXnQC8+cGdjz0CyaOdqHDRJb1AtORbZCNUJBBeFA/tNR2uQmww==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.65.0': - resolution: {integrity: sha512-JboAE2swaYt4tb1fHhHTABE2K+OLy09XfcTbhnk4Pw96f9dd2e9iYsJ28gBggHlo5z5x1rkyWvcPoTuNTd4oGg==} + '@typescript-eslint/typescript-estree@8.67.0': + resolution: {integrity: sha512-EKQBCE9yNlRJYm7jdTW5AhDacDUmSwQb0FAJAmK2EKYrNXIsa2vxcSZx6PvJ/dEdI6lS+Y9W+EXckLj0iPFGcw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.65.0': - resolution: {integrity: sha512-gXiwIHsYreboxeJucHKPvgwl7dXt50mF8s1/c00cP/WoVTyWKFdtfhRWwZiXYFU5H2O8vVoSLNrexFZjYS/SGA==} + '@typescript-eslint/utils@8.67.0': + resolution: {integrity: sha512-U9D1FdwEWBwok3hxxSdhclMb0twvt9QnjIQ0VfQ1AiX2epnpSgv2ubVDsayOFyY8K6FX+AQ7E0FKWVG3iKsj1A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/visitor-keys@8.65.0': - resolution: {integrity: sha512-8C71BQkGjiMmXtop7pHVJu1l2NNShFdkCyD6a2ezzs5vU/L3LRtb69EtcteFwz0mYMPzIgOw0n6OV4VBUWZd7A==} + '@typescript-eslint/visitor-keys@8.67.0': + resolution: {integrity: sha512-fkv8dHRDqfGtTHuJeebdrQ7cX6Ad4WAS00rgHh9UGvMycF1mjBfsxry1XsLIFhWZ6Judlh6UdzK+TYlbpCXgnA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript/typescript-aix-ppc64@7.0.2': @@ -1964,8 +1949,8 @@ packages: resolution: {integrity: sha512-mbCddXd+jm7hfx7w2YU64/Av4/NqqeG3GoRZgxPcgoTxYjhrcfJRw9ULch71SS4G+Q3bOXFhRvPqjguN0Hyp5w==} hasBin: true - '@vitejs/plugin-react@6.0.4': - resolution: {integrity: sha512-XcCQz0TBpBgljhj0gMuuDj49i6Ytqh5q1osT/Gp5uAVJUCTWxyskk/l1jwYYiu2xcNHHipdMz40EGfM1VdamVg==} + '@vitejs/plugin-react@6.0.5': + resolution: {integrity: sha512-BOVzne/NL162sMdResB25mUv+vWMF5NoAjNf09TeGlE7ZpszZWSD3winycicLJw72yeVsoCn/2kOhEuCvEShMA==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: '@rolldown/plugin-babel': ^0.1.7 || ^0.2.0 @@ -2099,8 +2084,8 @@ packages: resolution: {integrity: sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==} engines: {node: '>=10.12.0'} - axe-core@4.12.1: - resolution: {integrity: sha512-s7iGf5GaVMxEG0ENN9x+xTr7GFZCb1ZP/1uATUpCEK2X78nDB3RwbtFCo9pGAf9ru+VwoQ464DkaLEeRM08wJA==} + axe-core@4.13.0: + resolution: {integrity: sha512-UzGt8zg7Ny8djbYMhxl2zuEevVa7r2gJjYY5Lwr1xM7+XU2nd6CkIWFTVcCIbAP63vSz71NaVyyuSk9lHKcy0A==} engines: {node: '>=4'} balanced-match@4.0.4: @@ -2458,8 +2443,8 @@ packages: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@10.8.0: - resolution: {integrity: sha512-nuKKvN+oIBO0koN7Tm7dlkmnkc21mtt0QJLwAKzjLq14y6lRTdVG36MZHJ8eQHwdJMwZbQNMlPOYedMq/oVJvQ==} + eslint@10.8.1: + resolution: {integrity: sha512-wqA7W2jbsC/BnV9Iv1UZpKVFkO1AdNoSmYW8NWG4HNOBbkAMvIqDZ27pI2f07dqn583NcIC44ckjAcOXDL1QbQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -2664,8 +2649,8 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - globals@17.8.0: - resolution: {integrity: sha512-Zz/LMDZScFmkakeL2cTHzf+PbWKdpU3uclqkZT7TjDG58j5WPt0PpA+n9uPI24fZtlw07q0OtEi84K+umsRzqQ==} + globals@17.11.0: + resolution: {integrity: sha512-Z2I8hM+PbJDXQDq3Icgpzv+mPdwr68iZUU9d5WW4FuXfDUQfkZaZuvjMv42/5crNyw154+9+VWXbYrUgDXbxNw==} engines: {node: '>=18'} gopd@1.2.0: @@ -2885,8 +2870,8 @@ packages: resolution: {integrity: sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==} hasBin: true - jsdom@30.0.0: - resolution: {integrity: sha512-JQHfRGmmKmaZoUAvIgff5jjG/0SzTQlGz8c7t72KzBzo8ZULEjAjnYE0sNwBOUA4QtWwYE2xoYitg8NFsmiYxA==} + jsdom@30.0.1: + resolution: {integrity: sha512-52v7mUVUfNQVYYqE1lcdaymWL0njO7lTLUog6ZvW2U5KsbiLk/GnZlVJ+qx0xfNJZ6Gn+KSpPNE52vurbxZwrA==} engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} peerDependencies: canvas: ^3.2.3 @@ -3399,13 +3384,13 @@ packages: resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} engines: {node: '>=8'} - playwright-core@1.62.0: - resolution: {integrity: sha512-nsNRyq0r2zsG8AcRHWknc9QRA5XCueC7gWMrs+Gx2tlZn9hcl8zudfh00lhJPY1DE7NmZ6bDsT9g2yey8mXljA==} + playwright-core@1.62.1: + resolution: {integrity: sha512-wPYSwEBJY9GHraISXqyqtx0na0LpO3XEX7jNDhntbex7tzUS7kLnZsOlFruFJB4Hi/rhDMjXGqHewDZ68nYZVw==} engines: {node: '>=20'} hasBin: true - playwright@1.62.0: - resolution: {integrity: sha512-Z14dG305dgaLu6foB1TXQagFiW8JfSUIUaUuPaKQ6NtBPKF1P/qXcqfh6c6K/icPqdy37JmjbiBXf6JNg6Sylw==} + playwright@1.62.1: + resolution: {integrity: sha512-0M+L3LAD8/nm554LOla9Ayx0j0tmFZ0FBcoQ7F1VuVHpM/XpiC8RcDzBQB8W5+hA8L22THxELzeF+2WcUzvcLg==} engines: {node: '>=20'} hasBin: true @@ -3435,6 +3420,10 @@ packages: resolution: {integrity: sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg==} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.26: + resolution: {integrity: sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==} + engines: {node: ^10 || ^12 || >=14} + powershell-utils@0.1.0: resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} engines: {node: '>=20'} @@ -3568,8 +3557,8 @@ packages: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rolldown@1.1.5: - resolution: {integrity: sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==} + rolldown@1.2.3: + resolution: {integrity: sha512-rn9wpmxplLf7NLNyCk9FyWh3FM43DbY8jOzCdEPzH7uflhTftRbCEpqi6Ly2osgoU8OwObtmavMbWLaWy4LX7A==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -3619,8 +3608,8 @@ packages: setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - shadcn@4.15.0: - resolution: {integrity: sha512-fFTpfOuRwqjpXGp/sKpAxJkjdgv1jf8bDrW1xi0cVn2k7WJ5ijV/gjkAlkAidGDjhEkgcUuxVdm4oRB9r8BivA==} + shadcn@4.17.0: + resolution: {integrity: sha512-kphndh72CD7mxLQ/thkbPVgfXpIjzPUllzvTWRJmU3sNGZc/WbOqzJ0FXbBGj6sqNiaGPiOLDQByy8FAtCuVUQ==} engines: {node: '>=20.18.1'} hasBin: true @@ -3661,6 +3650,14 @@ packages: sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + + socks@2.8.9: + resolution: {integrity: sha512-LJhUYUvItdQ0LkJTmPeaEObWXAqFyfmP85x0tch/ez9cahmhlBBLbIqDFnvBnUJGagb0JbIQrkBs1wJ+yRYpEw==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -3872,8 +3869,8 @@ packages: resolution: {integrity: sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==} engines: {node: '>= 18'} - typescript-eslint@8.65.0: - resolution: {integrity: sha512-/ggrHAwyjENDusvyxbuqxAC2dTnZg/Z8F+fgQtYIz+L6n/9HfSlEZcFGV/NsMNa6CkGk0xUjUAFwC0vHOflvIA==} + typescript-eslint@8.67.0: + resolution: {integrity: sha512-S2udFs8tCKEKffuJ4TB1idGUZiXdCPGi3IPBGWXarbLQ5UPXORV8QEVzJ4gCRduURMb5EkpNCdjbk0eDIuI8Yg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -3944,6 +3941,11 @@ packages: '@types/react': optional: true + use-sync-external-store@1.6.0: + resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -3955,13 +3957,13 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - vite@8.1.5: - resolution: {integrity: sha512-7ULLwsCdYx/nRyrpiEwvqb5TFHrMVZyBt+rg/OAXT7rgj/z+DtTDyKFeLAdDkubDVDKD8jOsndmy7m55XcfUsw==} + vite@8.2.1: + resolution: {integrity: sha512-EU/eS7BH3XROHh2YnBefjM6DBKA6ZeMZEYQbj7NLWg5wHYlhB8B/Mayd5XsgWq+NFYccDOTemRpdETWR6Ka/lw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: '@types/node': ^20.19.0 || >=22.12.0 - '@vitejs/devtools': ^0.3.0 + '@vitejs/devtools': ^0.4.0 esbuild: 0.28.1 jiti: '>=1.21.0' less: ^4.0.0 @@ -4165,10 +4167,10 @@ snapshots: is-potential-custom-element-name: 1.0.1 lru-cache: 11.5.2 - '@axe-core/playwright@4.12.1(playwright-core@1.62.0)': + '@axe-core/playwright@4.13.0(playwright-core@1.62.1)': dependencies: - axe-core: 4.12.1 - playwright-core: 1.62.0 + axe-core: 4.13.0 + playwright-core: 1.62.1 '@babel/code-frame@7.29.7': dependencies: @@ -4409,22 +4411,6 @@ snapshots: '@dotenvx/primitives@0.8.0': {} - '@emnapi/core@1.11.1': - dependencies: - '@emnapi/wasi-threads': 1.2.2 - tslib: 2.8.1 - optional: true - - '@emnapi/runtime@1.11.1': - dependencies: - tslib: 2.8.1 - optional: true - - '@emnapi/wasi-threads@1.2.2': - dependencies: - tslib: 2.8.1 - optional: true - '@esbuild/aix-ppc64@0.28.1': optional: true @@ -4503,9 +4489,9 @@ snapshots: '@esbuild/win32-x64@0.28.1': optional: true - '@eslint-community/eslint-utils@4.10.1(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))': + '@eslint-community/eslint-utils@4.10.1(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))': dependencies: - eslint: 10.8.0(jiti@2.7.0)(supports-color@7.2.0) + eslint: 10.8.1(jiti@2.7.0)(supports-color@7.2.0) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} @@ -4526,9 +4512,9 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/js@10.0.1(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))': + '@eslint/js@10.0.1(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))': optionalDependencies: - eslint: 10.8.0(jiti@2.7.0)(supports-color@7.2.0) + eslint: 10.8.1(jiti@2.7.0)(supports-color@7.2.0) '@eslint/object-schema@3.0.5': {} @@ -4664,13 +4650,6 @@ snapshots: strict-event-emitter: 0.5.1 optional: true - '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': - dependencies: - '@emnapi/core': 1.11.1 - '@emnapi/runtime': 1.11.1 - '@tybys/wasm-util': 0.10.3 - optional: true - '@noble/hashes@1.8.0': optional: true @@ -4698,806 +4677,799 @@ snapshots: '@open-draft/until@2.1.0': optional: true - '@oxc-project/types@0.139.0': {} + '@oxc-project/types@0.143.0': {} - '@playwright/test@1.62.0': + '@playwright/test@1.62.1': dependencies: - playwright: 1.62.0 + playwright: 1.62.1 '@radix-ui/number@1.1.3': {} '@radix-ui/primitive@1.1.7': {} - '@radix-ui/react-accessible-icon@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-accessible-icon@1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: - '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-accordion@1.2.20(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-accordion@1.2.20(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-collapsible': 1.1.20(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-collapsible': 1.1.20(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-alert-dialog@1.1.23(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-alert-dialog@1.1.23(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-dialog': 1.1.23(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-dialog': 1.1.23(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-arrow@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-arrow@1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-aspect-ratio@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-aspect-ratio@1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-avatar@1.2.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-avatar@1.2.6(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-checkbox@1.3.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-checkbox@1.3.11(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-collapsible@1.1.20(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-collapsible@1.1.20(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-collection@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-collection@1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-slot': 1.3.3(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-compose-refs@1.1.5(@types/react@19.2.17)(react@19.2.8)': + '@radix-ui/react-compose-refs@1.1.5(@types/react@19.2.18)(react@19.2.8)': dependencies: react: 19.2.8 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - '@radix-ui/react-context-menu@2.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-context-menu@2.3.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-context@1.2.2(@types/react@19.2.17)(react@19.2.8)': + '@radix-ui/react-context@1.2.2(@types/react@19.2.18)(react@19.2.8)': dependencies: react: 19.2.8 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - '@radix-ui/react-dialog@1.1.23(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-dialog@1.1.23(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-slot': 1.3.3(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) aria-hidden: 1.2.6 react: 19.2.8 react-dom: 19.2.8(react@19.2.8) - react-remove-scroll: 2.7.2(@types/react@19.2.17)(react@19.2.8) + react-remove-scroll: 2.7.2(@types/react@19.2.18)(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-direction@1.1.4(@types/react@19.2.17)(react@19.2.8)': + '@radix-ui/react-direction@1.1.4(@types/react@19.2.18)(react@19.2.8)': dependencies: react: 19.2.8 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - '@radix-ui/react-dismissable-layer@1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-dismissable-layer@1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-dropdown-menu@2.1.24(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-dropdown-menu@2.1.24(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-focus-guards@1.1.6(@types/react@19.2.17)(react@19.2.8)': + '@radix-ui/react-focus-guards@1.1.6(@types/react@19.2.18)(react@19.2.8)': dependencies: react: 19.2.8 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - '@radix-ui/react-focus-scope@1.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-focus-scope@1.1.16(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-form@0.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-form@0.1.16(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-label': 2.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-label': 2.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-hover-card@1.1.23(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-hover-card@1.1.23(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-id@1.1.4(@types/react@19.2.17)(react@19.2.8)': + '@radix-ui/react-id@1.1.4(@types/react@19.2.18)(react@19.2.8)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - '@radix-ui/react-label@2.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-label@2.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-menu@2.1.24(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-menu@2.1.24(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-slot': 1.3.3(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.18)(react@19.2.8) aria-hidden: 1.2.6 react: 19.2.8 react-dom: 19.2.8(react@19.2.8) - react-remove-scroll: 2.7.2(@types/react@19.2.17)(react@19.2.8) + react-remove-scroll: 2.7.2(@types/react@19.2.18)(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-menubar@1.1.24(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-menubar@1.1.24(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-navigation-menu@1.2.22(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-navigation-menu@1.2.22(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-previous': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-previous': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-one-time-password-field@0.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-one-time-password-field@0.1.16(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/number': 1.1.3 '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-password-toggle-field@0.1.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-password-toggle-field@0.1.11(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-popover@1.1.23(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-popover@1.1.23(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-slot': 1.3.3(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) aria-hidden: 1.2.6 react: 19.2.8 react-dom: 19.2.8(react@19.2.8) - react-remove-scroll: 2.7.2(@types/react@19.2.17)(react@19.2.8) + react-remove-scroll: 2.7.2(@types/react@19.2.18)(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-popper@1.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-popper@1.3.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@floating-ui/react-dom': 2.1.9(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-arrow': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-rect': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-arrow': 1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-rect': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.18)(react@19.2.8) '@radix-ui/rect': 1.1.3 react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-portal@1.1.17(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-portal@1.1.17(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-presence@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-presence@1.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-primitive@2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-primitive@2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: - '@radix-ui/react-slot': 1.3.3(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-progress@1.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-progress@1.1.16(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-radio-group@1.4.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-radio-group@1.4.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-roving-focus@1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-roving-focus@1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-scroll-area@1.2.18(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-scroll-area@1.2.18(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/number': 1.1.3 '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-select@2.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-select@2.3.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/number': 1.1.3 '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-slot': 1.3.3(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-previous': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-previous': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) aria-hidden: 1.2.6 react: 19.2.8 react-dom: 19.2.8(react@19.2.8) - react-remove-scroll: 2.7.2(@types/react@19.2.17)(react@19.2.8) + react-remove-scroll: 2.7.2(@types/react@19.2.18)(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-separator@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-separator@1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-slider@1.4.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-slider@1.4.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/number': 1.1.3 '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-previous': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-previous': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-slot@1.3.3(@types/react@19.2.17)(react@19.2.8)': + '@radix-ui/react-slot@1.3.3(@types/react@19.2.18)(react@19.2.8)': dependencies: - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - '@radix-ui/react-switch@1.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-switch@1.3.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-tabs@1.1.21(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-tabs@1.1.21(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-toast@1.2.23(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-toast@1.2.23(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-toggle-group@1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-toggle-group@1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-toggle': 1.1.18(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-toggle': 1.1.18(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-toggle@1.1.18(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-toggle@1.1.18(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-toolbar@1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-toolbar@1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-separator': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-toggle-group': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-separator': 1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-toggle-group': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-tooltip@1.2.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-tooltip@1.2.16(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-slot': 1.3.3(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-use-callback-ref@1.1.4(@types/react@19.2.17)(react@19.2.8)': + '@radix-ui/react-use-callback-ref@1.1.4(@types/react@19.2.18)(react@19.2.8)': dependencies: react: 19.2.8 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - '@radix-ui/react-use-controllable-state@1.2.6(@types/react@19.2.17)(react@19.2.8)': + '@radix-ui/react-use-controllable-state@1.2.6(@types/react@19.2.18)(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - '@radix-ui/react-use-effect-event@0.0.5(@types/react@19.2.17)(react@19.2.8)': + '@radix-ui/react-use-effect-event@0.0.5(@types/react@19.2.18)(react@19.2.8)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - '@radix-ui/react-use-escape-keydown@1.1.5(@types/react@19.2.17)(react@19.2.8)': + '@radix-ui/react-use-escape-keydown@1.1.5(@types/react@19.2.18)(react@19.2.8)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - '@radix-ui/react-use-is-hydrated@0.1.3(@types/react@19.2.17)(react@19.2.8)': + '@radix-ui/react-use-is-hydrated@0.1.3(@types/react@19.2.18)(react@19.2.8)': dependencies: react: 19.2.8 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - '@radix-ui/react-use-layout-effect@1.1.4(@types/react@19.2.17)(react@19.2.8)': + '@radix-ui/react-use-layout-effect@1.1.4(@types/react@19.2.18)(react@19.2.8)': dependencies: react: 19.2.8 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - '@radix-ui/react-use-previous@1.1.4(@types/react@19.2.17)(react@19.2.8)': + '@radix-ui/react-use-previous@1.1.4(@types/react@19.2.18)(react@19.2.8)': dependencies: react: 19.2.8 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - '@radix-ui/react-use-rect@1.1.4(@types/react@19.2.17)(react@19.2.8)': + '@radix-ui/react-use-rect@1.1.4(@types/react@19.2.18)(react@19.2.8)': dependencies: '@radix-ui/rect': 1.1.3 react: 19.2.8 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - '@radix-ui/react-use-size@1.1.4(@types/react@19.2.17)(react@19.2.8)': + '@radix-ui/react-use-size@1.1.4(@types/react@19.2.18)(react@19.2.8)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - '@radix-ui/react-visually-hidden@1.2.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-visually-hidden@1.2.11(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) '@radix-ui/rect@1.1.3': {} - '@rolldown/binding-android-arm64@1.1.5': - optional: true - - '@rolldown/binding-darwin-arm64@1.1.5': + '@rolldown/binding-android-arm64@1.2.3': optional: true - '@rolldown/binding-darwin-x64@1.1.5': + '@rolldown/binding-darwin-arm64@1.2.3': optional: true - '@rolldown/binding-freebsd-x64@1.1.5': + '@rolldown/binding-darwin-x64@1.2.3': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.1.5': + '@rolldown/binding-freebsd-x64@1.2.3': optional: true - '@rolldown/binding-linux-arm64-gnu@1.1.5': + '@rolldown/binding-linux-arm-gnueabihf@1.2.3': optional: true - '@rolldown/binding-linux-arm64-musl@1.1.5': + '@rolldown/binding-linux-arm64-gnu@1.2.3': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.1.5': + '@rolldown/binding-linux-arm64-musl@1.2.3': optional: true - '@rolldown/binding-linux-s390x-gnu@1.1.5': + '@rolldown/binding-linux-ppc64-gnu@1.2.3': optional: true - '@rolldown/binding-linux-x64-gnu@1.1.5': + '@rolldown/binding-linux-s390x-gnu@1.2.3': optional: true - '@rolldown/binding-linux-x64-musl@1.1.5': + '@rolldown/binding-linux-x64-gnu@1.2.3': optional: true - '@rolldown/binding-openharmony-arm64@1.1.5': + '@rolldown/binding-linux-x64-musl@1.2.3': optional: true - '@rolldown/binding-wasm32-wasi@1.1.5': - dependencies: - '@emnapi/core': 1.11.1 - '@emnapi/runtime': 1.11.1 - '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + '@rolldown/binding-openharmony-arm64@1.2.3': optional: true - '@rolldown/binding-win32-arm64-msvc@1.1.5': + '@rolldown/binding-win32-arm64-msvc@1.2.3': optional: true - '@rolldown/binding-win32-x64-msvc@1.1.5': + '@rolldown/binding-win32-x64-msvc@1.2.3': optional: true '@rolldown/pluginutils@1.0.1': {} @@ -5644,28 +5616,41 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.3.3 '@tailwindcss/oxide-win32-x64-msvc': 4.3.3 - '@tailwindcss/vite@4.3.3(vite@8.1.5(esbuild@0.28.1)(jiti@2.7.0))': + '@tailwindcss/vite@4.3.3(vite@8.2.1(esbuild@0.28.1)(jiti@2.7.0))': dependencies: '@tailwindcss/node': 4.3.3 '@tailwindcss/oxide': 4.3.3 tailwindcss: 4.3.3 - vite: 8.1.5(esbuild@0.28.1)(jiti@2.7.0) + vite: 8.2.1(esbuild@0.28.1)(jiti@2.7.0) - '@tanstack/react-table@8.21.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@tanstack/react-store@0.11.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: - '@tanstack/table-core': 8.21.3 + '@tanstack/store': 0.11.1 react: 19.2.8 react-dom: 19.2.8(react@19.2.8) + use-sync-external-store: 1.6.0(react@19.2.8) - '@tanstack/react-virtual@3.14.8(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@tanstack/react-table@9.1.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: - '@tanstack/virtual-core': 3.17.6 + '@tanstack/react-store': 0.11.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@tanstack/table-core': 9.1.2 + react: 19.2.8 + transitivePeerDependencies: + - react-dom + + '@tanstack/react-virtual@3.14.9(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@tanstack/virtual-core': 3.17.7 react: 19.2.8 react-dom: 19.2.8(react@19.2.8) - '@tanstack/table-core@8.21.3': {} + '@tanstack/store@0.11.1': {} - '@tanstack/virtual-core@3.17.6': {} + '@tanstack/table-core@9.1.2': + dependencies: + '@tanstack/store': 0.11.1 + + '@tanstack/virtual-core@3.17.7': {} '@testing-library/dom@10.4.1': dependencies: @@ -5678,15 +5663,15 @@ snapshots: picocolors: 1.1.1 pretty-format: 27.5.1 - '@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@babel/runtime': 7.29.7 '@testing-library/dom': 10.4.1 react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) '@ts-morph/common@0.27.0': dependencies: @@ -5694,11 +5679,6 @@ snapshots: minimatch: 10.2.5 path-browserify: 1.0.1 - '@tybys/wasm-util@0.10.3': - dependencies: - tslib: 2.8.1 - optional: true - '@types/aria-query@5.0.4': {} '@types/chai@5.2.3': @@ -5714,11 +5694,11 @@ snapshots: '@types/json-schema@7.0.15': {} - '@types/react-dom@19.2.3(@types/react@19.2.17)': + '@types/react-dom@19.2.4(@types/react@19.2.18)': dependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - '@types/react@19.2.17': + '@types/react@19.2.18': dependencies: csstype: 3.2.3 @@ -5727,15 +5707,15 @@ snapshots: '@types/validate-npm-package-name@4.0.2': {} - '@typescript-eslint/eslint-plugin@8.65.0(@typescript-eslint/parser@8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0))(@typescript/typescript6@6.0.2)(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)': + '@typescript-eslint/eslint-plugin@8.67.0(@typescript-eslint/parser@8.67.0(@typescript/typescript6@6.0.2)(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0))(@typescript/typescript6@6.0.2)(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) - '@typescript-eslint/scope-manager': 8.65.0 - '@typescript-eslint/type-utils': 8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) - '@typescript-eslint/utils': 8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) - '@typescript-eslint/visitor-keys': 8.65.0 - eslint: 10.8.0(jiti@2.7.0)(supports-color@7.2.0) + '@typescript-eslint/parser': 8.67.0(@typescript/typescript6@6.0.2)(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) + '@typescript-eslint/scope-manager': 8.67.0 + '@typescript-eslint/type-utils': 8.67.0(@typescript/typescript6@6.0.2)(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) + '@typescript-eslint/utils': 8.67.0(@typescript/typescript6@6.0.2)(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) + '@typescript-eslint/visitor-keys': 8.67.0 + eslint: 10.8.1(jiti@2.7.0)(supports-color@7.2.0) ignore: 7.0.6 natural-compare: 1.4.0 ts-api-utils: 2.5.0(@typescript/typescript6@6.0.2) @@ -5743,56 +5723,56 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)': + '@typescript-eslint/parser@8.67.0(@typescript/typescript6@6.0.2)(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)': dependencies: - '@typescript-eslint/scope-manager': 8.65.0 - '@typescript-eslint/types': 8.65.0 - '@typescript-eslint/typescript-estree': 8.65.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0) - '@typescript-eslint/visitor-keys': 8.65.0 + '@typescript-eslint/scope-manager': 8.67.0 + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/typescript-estree': 8.67.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0) + '@typescript-eslint/visitor-keys': 8.67.0 debug: 4.4.3(supports-color@7.2.0) - eslint: 10.8.0(jiti@2.7.0)(supports-color@7.2.0) + eslint: 10.8.1(jiti@2.7.0)(supports-color@7.2.0) typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.65.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0)': + '@typescript-eslint/project-service@8.67.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.65.0(@typescript/typescript6@6.0.2) - '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/tsconfig-utils': 8.67.0(@typescript/typescript6@6.0.2) + '@typescript-eslint/types': 8.67.0 debug: 4.4.3(supports-color@7.2.0) typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.65.0': + '@typescript-eslint/scope-manager@8.67.0': dependencies: - '@typescript-eslint/types': 8.65.0 - '@typescript-eslint/visitor-keys': 8.65.0 + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/visitor-keys': 8.67.0 - '@typescript-eslint/tsconfig-utils@8.65.0(@typescript/typescript6@6.0.2)': + '@typescript-eslint/tsconfig-utils@8.67.0(@typescript/typescript6@6.0.2)': dependencies: typescript: '@typescript/typescript6@6.0.2' - '@typescript-eslint/type-utils@8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)': + '@typescript-eslint/type-utils@8.67.0(@typescript/typescript6@6.0.2)(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)': dependencies: - '@typescript-eslint/types': 8.65.0 - '@typescript-eslint/typescript-estree': 8.65.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0) - '@typescript-eslint/utils': 8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/typescript-estree': 8.67.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0) + '@typescript-eslint/utils': 8.67.0(@typescript/typescript6@6.0.2)(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) debug: 4.4.3(supports-color@7.2.0) - eslint: 10.8.0(jiti@2.7.0)(supports-color@7.2.0) + eslint: 10.8.1(jiti@2.7.0)(supports-color@7.2.0) ts-api-utils: 2.5.0(@typescript/typescript6@6.0.2) typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.65.0': {} + '@typescript-eslint/types@8.67.0': {} - '@typescript-eslint/typescript-estree@8.65.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0)': + '@typescript-eslint/typescript-estree@8.67.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0)': dependencies: - '@typescript-eslint/project-service': 8.65.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0) - '@typescript-eslint/tsconfig-utils': 8.65.0(@typescript/typescript6@6.0.2) - '@typescript-eslint/types': 8.65.0 - '@typescript-eslint/visitor-keys': 8.65.0 + '@typescript-eslint/project-service': 8.67.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0) + '@typescript-eslint/tsconfig-utils': 8.67.0(@typescript/typescript6@6.0.2) + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/visitor-keys': 8.67.0 debug: 4.4.3(supports-color@7.2.0) minimatch: 10.2.5 semver: 7.8.5 @@ -5802,20 +5782,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)': + '@typescript-eslint/utils@8.67.0(@typescript/typescript6@6.0.2)(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)': dependencies: - '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0)) - '@typescript-eslint/scope-manager': 8.65.0 - '@typescript-eslint/types': 8.65.0 - '@typescript-eslint/typescript-estree': 8.65.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0) - eslint: 10.8.0(jiti@2.7.0)(supports-color@7.2.0) + '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0)) + '@typescript-eslint/scope-manager': 8.67.0 + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/typescript-estree': 8.67.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0) + eslint: 10.8.1(jiti@2.7.0)(supports-color@7.2.0) typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.65.0': + '@typescript-eslint/visitor-keys@8.67.0': dependencies: - '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/types': 8.67.0 eslint-visitor-keys: 5.0.1 '@typescript/typescript-aix-ppc64@7.0.2': @@ -5882,10 +5862,10 @@ snapshots: dependencies: '@typescript/old': typescript@6.0.3 - '@vitejs/plugin-react@6.0.4(vite@8.1.5(esbuild@0.28.1)(jiti@2.7.0))': + '@vitejs/plugin-react@6.0.5(vite@8.2.1(esbuild@0.28.1)(jiti@2.7.0))': dependencies: '@rolldown/pluginutils': 1.0.1 - vite: 8.1.5(esbuild@0.28.1)(jiti@2.7.0) + vite: 8.2.1(esbuild@0.28.1)(jiti@2.7.0) '@vitest/coverage-v8@4.1.10(vitest@4.1.10)': dependencies: @@ -5899,7 +5879,7 @@ snapshots: obug: 2.1.4 std-env: 4.2.0 tinyrainbow: 3.1.0 - vitest: 4.1.10(@vitest/coverage-v8@4.1.10)(jsdom@30.0.0(@noble/hashes@1.8.0))(msw@2.12.14(@typescript/typescript6@6.0.2))(vite@8.1.5(esbuild@0.28.1)(jiti@2.7.0)) + vitest: 4.1.10(@vitest/coverage-v8@4.1.10)(jsdom@30.0.1(@noble/hashes@1.8.0))(msw@2.12.14(@typescript/typescript6@6.0.2))(vite@8.2.1(esbuild@0.28.1)(jiti@2.7.0)) '@vitest/expect@4.1.10': dependencies: @@ -5910,14 +5890,14 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.10(msw@2.12.14(@typescript/typescript6@6.0.2))(vite@8.1.5(esbuild@0.28.1)(jiti@2.7.0))': + '@vitest/mocker@4.1.10(msw@2.12.14(@typescript/typescript6@6.0.2))(vite@8.2.1(esbuild@0.28.1)(jiti@2.7.0))': dependencies: '@vitest/spy': 4.1.10 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.12.14(@typescript/typescript6@6.0.2) - vite: 8.1.5(esbuild@0.28.1)(jiti@2.7.0) + vite: 8.2.1(esbuild@0.28.1)(jiti@2.7.0) '@vitest/pretty-format@4.1.10': dependencies: @@ -6015,7 +5995,7 @@ snapshots: atomically@1.7.0: {} - axe-core@4.12.1: {} + axe-core@4.13.0: {} balanced-match@4.0.4: {} @@ -6323,11 +6303,11 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-plugin-react-hooks@7.1.1(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0): + eslint-plugin-react-hooks@7.1.1(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0): dependencies: '@babel/core': 7.29.7(supports-color@7.2.0) '@babel/parser': 7.29.7 - eslint: 10.8.0(jiti@2.7.0)(supports-color@7.2.0) + eslint: 10.8.1(jiti@2.7.0)(supports-color@7.2.0) hermes-parser: 0.25.1 zod: 4.4.3 zod-validation-error: 4.0.2(zod@4.4.3) @@ -6345,9 +6325,9 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0): + eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0): dependencies: - '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0)) + '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0)) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.23.5(supports-color@7.2.0) '@eslint/config-helpers': 0.7.0 @@ -6617,7 +6597,7 @@ snapshots: dependencies: is-glob: 4.0.3 - globals@17.8.0: {} + globals@17.11.0: {} gopd@1.2.0: {} @@ -6773,7 +6753,7 @@ snapshots: dependencies: argparse: 2.0.1 - jsdom@30.0.0(@noble/hashes@1.8.0): + jsdom@30.0.1(@noble/hashes@1.8.0): dependencies: '@asamuzakjp/css-color': 6.0.5 '@asamuzakjp/dom-selector': 8.3.0 @@ -7214,20 +7194,20 @@ snapshots: dependencies: find-up: 3.0.0 - playwright-core@1.62.0: {} + playwright-core@1.62.1: {} - playwright@1.62.0: + playwright@1.62.1: dependencies: - playwright-core: 1.62.0 + playwright-core: 1.62.1 optionalDependencies: fsevents: 2.3.2 - postcss-load-config@6.0.1(jiti@2.7.0)(postcss@8.5.23): + postcss-load-config@6.0.1(jiti@2.7.0)(postcss@8.5.26): dependencies: lilconfig: 3.1.3 optionalDependencies: jiti: 2.7.0 - postcss: 8.5.23 + postcss: 8.5.26 postcss-selector-parser@7.1.4: dependencies: @@ -7240,6 +7220,12 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.5.26: + dependencies: + nanoid: 3.3.17 + picocolors: 1.1.1 + source-map-js: 1.2.1 + powershell-utils@0.1.0: {} prelude-ls@1.2.1: {} @@ -7273,68 +7259,68 @@ snapshots: queue-microtask@1.2.3: {} - radix-ui@1.6.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8): + radix-ui@1.6.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8): dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-accessible-icon': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-accordion': 1.2.20(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-alert-dialog': 1.1.23(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-arrow': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-aspect-ratio': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-avatar': 1.2.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-checkbox': 1.3.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-collapsible': 1.1.20(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context-menu': 2.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-dialog': 1.1.23(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-dropdown-menu': 2.1.24(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-form': 0.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-hover-card': 1.1.23(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-label': 2.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-menubar': 1.1.24(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-navigation-menu': 1.2.22(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-one-time-password-field': 0.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-password-toggle-field': 0.1.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-popover': 1.1.23(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-progress': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-radio-group': 1.4.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-scroll-area': 1.2.18(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-select': 2.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-separator': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-slider': 1.4.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-slot': 1.3.3(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-switch': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-tabs': 1.1.21(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-toast': 1.2.23(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-toggle': 1.1.18(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-toggle-group': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-toolbar': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-tooltip': 1.2.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-escape-keydown': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-accessible-icon': 1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-accordion': 1.2.20(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-alert-dialog': 1.1.23(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-arrow': 1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-aspect-ratio': 1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-avatar': 1.2.6(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-checkbox': 1.3.11(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-collapsible': 1.1.20(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context-menu': 2.3.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-dialog': 1.1.23(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-dropdown-menu': 2.1.24(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-form': 0.1.16(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-hover-card': 1.1.23(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-label': 2.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-menubar': 1.1.24(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-navigation-menu': 1.2.22(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-one-time-password-field': 0.1.16(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-password-toggle-field': 0.1.11(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-popover': 1.1.23(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-progress': 1.1.16(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-radio-group': 1.4.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-scroll-area': 1.2.18(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-select': 2.3.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-separator': 1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-slider': 1.4.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-switch': 1.3.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-tabs': 1.1.21(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-toast': 1.2.23(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-toggle': 1.1.18(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-toggle-group': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-toolbar': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-tooltip': 1.2.16(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-escape-keydown': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) range-parser@1.3.0: {} @@ -7352,32 +7338,32 @@ snapshots: react-is@17.0.2: {} - react-remove-scroll-bar@2.3.8(@types/react@19.2.17)(react@19.2.8): + react-remove-scroll-bar@2.3.8(@types/react@19.2.18)(react@19.2.8): dependencies: react: 19.2.8 - react-style-singleton: 2.2.3(@types/react@19.2.17)(react@19.2.8) + react-style-singleton: 2.2.3(@types/react@19.2.18)(react@19.2.8) tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - react-remove-scroll@2.7.2(@types/react@19.2.17)(react@19.2.8): + react-remove-scroll@2.7.2(@types/react@19.2.18)(react@19.2.8): dependencies: react: 19.2.8 - react-remove-scroll-bar: 2.3.8(@types/react@19.2.17)(react@19.2.8) - react-style-singleton: 2.2.3(@types/react@19.2.17)(react@19.2.8) + react-remove-scroll-bar: 2.3.8(@types/react@19.2.18)(react@19.2.8) + react-style-singleton: 2.2.3(@types/react@19.2.18)(react@19.2.8) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.2.17)(react@19.2.8) - use-sidecar: 1.1.3(@types/react@19.2.17)(react@19.2.8) + use-callback-ref: 1.3.3(@types/react@19.2.18)(react@19.2.8) + use-sidecar: 1.1.3(@types/react@19.2.18)(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - react-style-singleton@2.2.3(@types/react@19.2.17)(react@19.2.8): + react-style-singleton@2.2.3(@types/react@19.2.18)(react@19.2.8): dependencies: get-nonce: 1.0.1 react: 19.2.8 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 react@19.2.8: {} @@ -7410,26 +7396,25 @@ snapshots: reusify@1.1.0: {} - rolldown@1.1.5: + rolldown@1.2.3: dependencies: - '@oxc-project/types': 0.139.0 + '@oxc-project/types': 0.143.0 '@rolldown/pluginutils': 1.0.1 optionalDependencies: - '@rolldown/binding-android-arm64': 1.1.5 - '@rolldown/binding-darwin-arm64': 1.1.5 - '@rolldown/binding-darwin-x64': 1.1.5 - '@rolldown/binding-freebsd-x64': 1.1.5 - '@rolldown/binding-linux-arm-gnueabihf': 1.1.5 - '@rolldown/binding-linux-arm64-gnu': 1.1.5 - '@rolldown/binding-linux-arm64-musl': 1.1.5 - '@rolldown/binding-linux-ppc64-gnu': 1.1.5 - '@rolldown/binding-linux-s390x-gnu': 1.1.5 - '@rolldown/binding-linux-x64-gnu': 1.1.5 - '@rolldown/binding-linux-x64-musl': 1.1.5 - '@rolldown/binding-openharmony-arm64': 1.1.5 - '@rolldown/binding-wasm32-wasi': 1.1.5 - '@rolldown/binding-win32-arm64-msvc': 1.1.5 - '@rolldown/binding-win32-x64-msvc': 1.1.5 + '@rolldown/binding-android-arm64': 1.2.3 + '@rolldown/binding-darwin-arm64': 1.2.3 + '@rolldown/binding-darwin-x64': 1.2.3 + '@rolldown/binding-freebsd-x64': 1.2.3 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.3 + '@rolldown/binding-linux-arm64-gnu': 1.2.3 + '@rolldown/binding-linux-arm64-musl': 1.2.3 + '@rolldown/binding-linux-ppc64-gnu': 1.2.3 + '@rolldown/binding-linux-s390x-gnu': 1.2.3 + '@rolldown/binding-linux-x64-gnu': 1.2.3 + '@rolldown/binding-linux-x64-musl': 1.2.3 + '@rolldown/binding-openharmony-arm64': 1.2.3 + '@rolldown/binding-win32-arm64-msvc': 1.2.3 + '@rolldown/binding-win32-x64-msvc': 1.2.3 rollup@4.62.2: dependencies: @@ -7517,7 +7502,7 @@ snapshots: setprototypeof@1.2.0: {} - shadcn@4.15.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0): + shadcn@4.17.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0): dependencies: '@babel/core': 7.29.7(supports-color@7.2.0) '@babel/parser': 7.29.7 @@ -7543,6 +7528,7 @@ snapshots: postcss-selector-parser: 7.1.4 prompts: 2.4.2 recast: 0.23.12 + socks: 2.8.9 stringify-object: 5.0.0 tailwind-merge: 3.6.0 ts-morph: 26.0.0 @@ -7599,6 +7585,13 @@ snapshots: sisteransi@1.0.5: {} + smart-buffer@4.2.0: {} + + socks@2.8.9: + dependencies: + ip-address: 10.3.1 + smart-buffer: 4.2.0 + source-map-js@1.2.1: {} source-map@0.6.1: {} @@ -7746,7 +7739,7 @@ snapshots: tslib@2.8.1: {} - tsup@8.5.1(@typescript/typescript6@6.0.2)(jiti@2.7.0)(postcss@8.5.23)(supports-color@7.2.0): + tsup@8.5.1(@typescript/typescript6@6.0.2)(jiti@2.7.0)(postcss@8.5.26)(supports-color@7.2.0): dependencies: bundle-require: 5.1.0(esbuild@0.28.1) cac: 6.7.14 @@ -7757,7 +7750,7 @@ snapshots: fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@2.7.0)(postcss@8.5.23) + postcss-load-config: 6.0.1(jiti@2.7.0)(postcss@8.5.26) resolve-from: 5.0.0 rollup: 4.62.2 source-map: 0.7.6 @@ -7766,7 +7759,7 @@ snapshots: tinyglobby: 0.2.17 tree-kill: 1.2.2 optionalDependencies: - postcss: 8.5.23 + postcss: 8.5.26 typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - jiti @@ -7791,13 +7784,13 @@ snapshots: media-typer: 1.1.1 mime-types: 3.0.2 - typescript-eslint@8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0): + typescript-eslint@8.67.0(@typescript/typescript6@6.0.2)(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0): dependencies: - '@typescript-eslint/eslint-plugin': 8.65.0(@typescript-eslint/parser@8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0))(@typescript/typescript6@6.0.2)(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) - '@typescript-eslint/parser': 8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) - '@typescript-eslint/typescript-estree': 8.65.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0) - '@typescript-eslint/utils': 8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) - eslint: 10.8.0(jiti@2.7.0)(supports-color@7.2.0) + '@typescript-eslint/eslint-plugin': 8.67.0(@typescript-eslint/parser@8.67.0(@typescript/typescript6@6.0.2)(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0))(@typescript/typescript6@6.0.2)(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) + '@typescript-eslint/parser': 8.67.0(@typescript/typescript6@6.0.2)(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) + '@typescript-eslint/typescript-estree': 8.67.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0) + '@typescript-eslint/utils': 8.67.0(@typescript/typescript6@6.0.2)(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) + eslint: 10.8.1(jiti@2.7.0)(supports-color@7.2.0) typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color @@ -7852,20 +7845,24 @@ snapshots: dependencies: punycode: 2.3.1 - use-callback-ref@1.3.3(@types/react@19.2.17)(react@19.2.8): + use-callback-ref@1.3.3(@types/react@19.2.18)(react@19.2.8): dependencies: react: 19.2.8 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - use-sidecar@1.1.3(@types/react@19.2.17)(react@19.2.8): + use-sidecar@1.1.3(@types/react@19.2.18)(react@19.2.8): dependencies: detect-node-es: 1.1.0 react: 19.2.8 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 + + use-sync-external-store@1.6.0(react@19.2.8): + dependencies: + react: 19.2.8 util-deprecate@1.0.2: {} @@ -7873,22 +7870,22 @@ snapshots: vary@1.1.2: {} - vite@8.1.5(esbuild@0.28.1)(jiti@2.7.0): + vite@8.2.1(esbuild@0.28.1)(jiti@2.7.0): dependencies: lightningcss: 1.33.0 picomatch: 4.0.5 - postcss: 8.5.23 - rolldown: 1.1.5 + postcss: 8.5.26 + rolldown: 1.2.3 tinyglobby: 0.2.17 optionalDependencies: esbuild: 0.28.1 fsevents: 2.3.3 jiti: 2.7.0 - vitest@4.1.10(@vitest/coverage-v8@4.1.10)(jsdom@30.0.0(@noble/hashes@1.8.0))(msw@2.12.14(@typescript/typescript6@6.0.2))(vite@8.1.5(esbuild@0.28.1)(jiti@2.7.0)): + vitest@4.1.10(@vitest/coverage-v8@4.1.10)(jsdom@30.0.1(@noble/hashes@1.8.0))(msw@2.12.14(@typescript/typescript6@6.0.2))(vite@8.2.1(esbuild@0.28.1)(jiti@2.7.0)): dependencies: '@vitest/expect': 4.1.10 - '@vitest/mocker': 4.1.10(msw@2.12.14(@typescript/typescript6@6.0.2))(vite@8.1.5(esbuild@0.28.1)(jiti@2.7.0)) + '@vitest/mocker': 4.1.10(msw@2.12.14(@typescript/typescript6@6.0.2))(vite@8.2.1(esbuild@0.28.1)(jiti@2.7.0)) '@vitest/pretty-format': 4.1.10 '@vitest/runner': 4.1.10 '@vitest/snapshot': 4.1.10 @@ -7905,11 +7902,11 @@ snapshots: tinyexec: 1.2.4 tinyglobby: 0.2.17 tinyrainbow: 3.1.0 - vite: 8.1.5(esbuild@0.28.1)(jiti@2.7.0) + vite: 8.2.1(esbuild@0.28.1)(jiti@2.7.0) why-is-node-running: 2.3.0 optionalDependencies: '@vitest/coverage-v8': 4.1.10(vitest@4.1.10) - jsdom: 30.0.0(@noble/hashes@1.8.0) + jsdom: 30.0.1(@noble/hashes@1.8.0) transitivePeerDependencies: - msw diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 77fc99d..b3bc654 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -10,5 +10,5 @@ overrides: js-yaml: 4.3.1 nanoid: 3.3.17 minimumReleaseAgeExclude: - - globals@17.8.0 + - globals@17.8.0 || 17.11.0 - jsdom@30.0.0 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 a1d7901..631059b 100644 --- a/src/core/data-table/create-data-table-card-view.tsx +++ b/src/core/data-table/create-data-table-card-view.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import type { ExpandedState, OnChangeFn, Row } from "@tanstack/react-table"; +import type { ExpandedState, OnChangeFn } from "@tanstack/react-table"; import { IconChevronDown } from "../icons"; import type { DataTableCardRendererProps, @@ -17,6 +17,7 @@ import { isDataTableInteractiveTarget, toggleDataTableExpandedState, } from "./data-table-utils"; +import type { DataTableTanStackRow as Row } from "./tanstack-v9"; type DataTableCardViewProps = { rows: Array>; diff --git a/src/core/data-table/create-data-table-toolbar.tsx b/src/core/data-table/create-data-table-toolbar.tsx index 8175cba..4bdea66 100644 --- a/src/core/data-table/create-data-table-toolbar.tsx +++ b/src/core/data-table/create-data-table-toolbar.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import type { Table as TanStackTable } from "@tanstack/react-table"; +import type { DataTableTanStackTable as TanStackTable } from "./tanstack-v9"; import { IconAdjustmentsHorizontal, IconLayoutGrid, @@ -248,7 +248,7 @@ export function createDataTableToolbar(ui: DataTableUiKit) { !column.id.startsWith("__") && column.getCanGroup(), ); - const groupedColumns = table.getState().grouping.flatMap((id) => { + const groupedColumns = table.store.state.grouping.flatMap((id) => { const column = table.getColumn(id); return column ? [column] : []; }); @@ -847,7 +847,7 @@ export function createDataTableToolbar(ui: DataTableUiKit) { ? column.columnDef.header : column.id; const moveGrouping = (nextIndex: number) => { - const nextGrouping = [...table.getState().grouping]; + const nextGrouping = [...table.store.state.grouping]; const [groupingId] = nextGrouping.splice(groupingIndex, 1); if (groupingId === undefined) return; nextGrouping.splice(nextIndex, 0, groupingId); diff --git a/src/core/data-table/create-data-table.tsx b/src/core/data-table/create-data-table.tsx index cd48b5c..bf63aeb 100644 --- a/src/core/data-table/create-data-table.tsx +++ b/src/core/data-table/create-data-table.tsx @@ -1,8 +1,6 @@ import * as React from "react"; import { flushSync } from "react-dom"; -import type { - Table as TanStackTable, -} from "@tanstack/react-table"; +import type { DataTableTanStackTable as TanStackTable } from "./tanstack-v9"; import type { DataTableActionErrorContext, DataTableApi, @@ -908,7 +906,7 @@ export function createDataTableWithPanels( if ( explicitlySizedColumnIds.has(columnId) || Object.prototype.hasOwnProperty.call( - table.getState().columnSizing, + table.store.state.columnSizing, columnId, ) ) { @@ -1123,7 +1121,7 @@ export function createDataTableWithPanels( table.setPagination(nextState.pagination); } if (nextState.rowSelection !== undefined) { - table.setRowSelection(nextState.rowSelection); + setCurrentRowSelection(nextState.rowSelection); } if (nextState.columnVisibility !== undefined) { table.setColumnVisibility(nextState.columnVisibility); @@ -1141,7 +1139,7 @@ export function createDataTableWithPanels( table.setColumnOrder(nextState.columnOrder); } if (nextState.columnPinning !== undefined) { - table.setColumnPinning(nextState.columnPinning); + setCurrentColumnPinning(nextState.columnPinning); } if (nextState.rowPinning !== undefined) { table.setRowPinning(nextState.rowPinning); @@ -1167,6 +1165,8 @@ export function createDataTableWithPanels( handleShowHiddenRowsChange, handleViewModeChange, setLocalSearchValue, + setCurrentColumnPinning, + setCurrentRowSelection, table, ], ); @@ -1881,8 +1881,8 @@ function cloneDataTableState(state: DataTableState): DataTableState { : undefined, }, rowPinning: { - top: state.rowPinning.top ? [...state.rowPinning.top] : undefined, - bottom: state.rowPinning.bottom ? [...state.rowPinning.bottom] : undefined, + top: [...state.rowPinning.top], + bottom: [...state.rowPinning.bottom], }, columnSizing: { ...state.columnSizing }, density: state.density, 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 37f6af4..f0579e7 100644 --- a/src/core/data-table/data-table-base-card-panel.tsx +++ b/src/core/data-table/data-table-base-card-panel.tsx @@ -1,7 +1,7 @@ import * as React from "react"; -import type { Row } from "@tanstack/react-table"; import { cn } from "../../lib/utils"; import type { DataTableCardPanelProps } from "./data-table-card-panel-types"; +import type { DataTableTanStackRow as Row } from "./tanstack-v9"; export function DataTableBaseCardPanel({ cardClassName, diff --git a/src/core/data-table/data-table-body-row.tsx b/src/core/data-table/data-table-body-row.tsx index e6d1db3..b8ba9fd 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 { flexRender, type Cell, type Row } from "@tanstack/react-table"; +import { flexRender } from "@tanstack/react-table"; import type { RowPinningPosition } from "@tanstack/react-table"; import type { DataTableColumnDef, @@ -19,6 +19,10 @@ import { import { renderEditableCell } from "./use-row-editing"; import { useDataTableVirtualRowMeasurement } from "./data-table-virtual-row-measurement"; import { cellAlignClassName, hideOnClassName } from "../types"; +import type { + DataTableTanStackCell as Cell, + DataTableTanStackRow as Row, +} from "./tanstack-v9"; export type DataTableRowEditingContext = { cancel: () => void; 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 3851ad5..c8166fd 100644 --- a/src/core/data-table/data-table-card-panel-types.ts +++ b/src/core/data-table/data-table-card-panel-types.ts @@ -1,7 +1,8 @@ import type * as React from "react"; -import type { ExpandedState, OnChangeFn, Row } from "@tanstack/react-table"; +import type { ExpandedState, OnChangeFn } from "@tanstack/react-table"; import type { DataTableLabels, DataTableProps } from "../types"; import type { DataTableUiClassNames, DataTableUiKit } from "../ui-kit"; +import type { DataTableTanStackRow as Row } from "./tanstack-v9"; export type DataTableCardPanelProps = { cardClassName: string | undefined; diff --git a/src/core/data-table/data-table-cell-content.tsx b/src/core/data-table/data-table-cell-content.tsx index 09e5382..910dd7e 100644 --- a/src/core/data-table/data-table-cell-content.tsx +++ b/src/core/data-table/data-table-cell-content.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import { flexRender, type CellContext } from "@tanstack/react-table"; +import { flexRender } from "@tanstack/react-table"; import { IconClock } from "../icons"; import type { DataTableCellOverflow, @@ -7,6 +7,7 @@ import type { } from "../types"; import type { DataTableUiClassNames } from "../ui-kit"; import { cn } from "../../lib/utils"; +import type { DataTableTanStackCellContext as CellContext } from "./tanstack-v9"; export function renderDataTableCellContent( context: CellContext, diff --git a/src/core/data-table/data-table-clipboard.ts b/src/core/data-table/data-table-clipboard.ts index bbe4811..4118a44 100644 --- a/src/core/data-table/data-table-clipboard.ts +++ b/src/core/data-table/data-table-clipboard.ts @@ -1,4 +1,3 @@ -import type { Column, Table as TanStackTable } from "@tanstack/react-table"; import type { DataTableCellSelection, DataTableClipboardCopyOptions, @@ -9,6 +8,10 @@ import { normalizeFilterValue, startCase, } from "./data-table-utils"; +import type { + DataTableTanStackColumn as Column, + DataTableTanStackTable as TanStackTable, +} from "./tanstack-v9"; export async function copyDataTableToClipboard({ clipboard, 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 1e6893f..b4c1d29 100644 --- a/src/core/data-table/data-table-grouping-faceting.test.tsx +++ b/src/core/data-table/data-table-grouping-faceting.test.tsx @@ -56,6 +56,43 @@ describe("DataTable grouping and faceting", () => { expect(apiRef.current?.getTable()?.getRowModel().rows).toHaveLength(3); }); + it("registers v9 context-based custom aggregation definitions", () => { + const apiRef = React.createRef>(); + + render( + + aggregateRows.reduce( + (total, row) => total + Number(getValue(row)), + 0, + ) * 2, + }, + }} + columns={[ + columns[0], + { + accessorKey: "score", + header: "Score", + aggregationFn: "doubledSum", + }, + ]} + data={rows} + getRowId={(row) => row.id} + initialState={{ grouping: ["team"] }} + />, + ); + + expect( + apiRef.current + ?.getTable() + ?.getRowModel() + .rows.map((row) => row.getValue("score")), + ).toEqual([10, 14]); + }); + it("uses local facet counts and lets server-provided options replace them", () => { const localRef = React.createRef>(); const { container, rerender } = render( diff --git a/src/core/data-table/data-table-header-cell.tsx b/src/core/data-table/data-table-header-cell.tsx index d8b0eb7..f86ad63 100644 --- a/src/core/data-table/data-table-header-cell.tsx +++ b/src/core/data-table/data-table-header-cell.tsx @@ -1,7 +1,7 @@ import * as React from "react"; import { flexRender } from "@tanstack/react-table"; import { IconChevronDown, IconSelector } from "../icons"; -import type { Header, SortingState } from "@tanstack/react-table"; +import type { SortingState } from "@tanstack/react-table"; import type { DataTableColumnDef, DataTableColumnGroupDef, @@ -16,6 +16,7 @@ import { isUtilityColumnId, } from "./data-table-utils"; import { headerAlignClassName, hideOnClassName } from "../types"; +import type { DataTableTanStackHeader as Header } from "./tanstack-v9"; type DataTableHeaderCellProps = { columnGroupHeaderHeight: DataTableProps["columnGroupHeaderHeight"]; 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 8967a09..2ce2ac9 100644 --- a/src/core/data-table/data-table-phase-zero.test.tsx +++ b/src/core/data-table/data-table-phase-zero.test.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import type { FilterFn } from "@tanstack/react-table"; +import type { DataTableTanStackFilterFn as FilterFn } from "./tanstack-v9"; import { afterAll, afterEach, 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 903b8ab..81a51af 100644 --- a/src/core/data-table/data-table-state-api.test.tsx +++ b/src/core/data-table/data-table-state-api.test.tsx @@ -673,7 +673,7 @@ describe("DataTable unified state API", () => { const snapshot = apiRef.current?.snapshot(); expect(snapshot?.sorting).toEqual([]); expect(snapshot?.sorting).not.toBe( - apiRef.current?.getTable()?.getState().sorting, + apiRef.current?.getTable()?.store.state.sorting, ); act(() => { diff --git a/src/core/data-table/data-table-table-panel.tsx b/src/core/data-table/data-table-table-panel.tsx index 77c5e14..c0ea715 100644 --- a/src/core/data-table/data-table-table-panel.tsx +++ b/src/core/data-table/data-table-table-panel.tsx @@ -1,11 +1,7 @@ import * as React from "react"; import type { - Column, ExpandedState, - Header, RowPinningPosition, - Row, - Table as TanStackTable, } from "@tanstack/react-table"; import type { DataTableDensity, @@ -23,6 +19,12 @@ import { DataTableHeaderCell } from "./data-table-header-cell"; import type { DataTableColumnLayout } from "./use-column-layout"; import { isDataTableLoadingRow, isUtilityColumnId } from "./data-table-utils"; import type { DataTableLabels } from "../types"; +import type { + DataTableTanStackColumn as Column, + DataTableTanStackHeader as Header, + DataTableTanStackRow as Row, + DataTableTanStackTable as TanStackTable, +} from "./tanstack-v9"; export type DataTableTablePanelProps = { ariaDescribedBy: string | undefined; diff --git a/src/core/data-table/data-table-toolbar-operations.tsx b/src/core/data-table/data-table-toolbar-operations.tsx index c5d38a5..5cd8e3b 100644 --- a/src/core/data-table/data-table-toolbar-operations.tsx +++ b/src/core/data-table/data-table-toolbar-operations.tsx @@ -1,5 +1,4 @@ import * as React from "react"; -import type { Table } from "@tanstack/react-table"; import { IconSearch } from "../icons"; import type { DataTableColumnFixed, @@ -8,6 +7,7 @@ import type { DataTableSavedView, } from "../types"; import type { DataTableUiKit } from "../ui-kit"; +import type { DataTableTanStackTable as Table } from "./tanstack-v9"; type ToolbarUi = Pick< DataTableUiKit, diff --git a/src/core/data-table/data-table-toolbar-section.tsx b/src/core/data-table/data-table-toolbar-section.tsx index e4de588..37e409a 100644 --- a/src/core/data-table/data-table-toolbar-section.tsx +++ b/src/core/data-table/data-table-toolbar-section.tsx @@ -1,10 +1,10 @@ import * as React from "react"; -import type { Table as TanStackTable } from "@tanstack/react-table"; import type { DataTableLabels, DataTableProps, DataTableSavedView, } from "../types"; +import type { DataTableTanStackTable as TanStackTable } from "./tanstack-v9"; type DataTableToolbarSectionProps = { allRows: Array; diff --git a/src/core/data-table/data-table-utils.ts b/src/core/data-table/data-table-utils.ts index c62ccaf..332ba6a 100644 --- a/src/core/data-table/data-table-utils.ts +++ b/src/core/data-table/data-table-utils.ts @@ -1,14 +1,10 @@ import type { - Column, - ColumnDef, - ColumnPinningState, ExpandedState, - Row, - Table as TanStackTable, } from "@tanstack/react-table"; import type { DataTableColumnDef, DataTableColumnFilterOption, + DataTableColumnPinningState, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, @@ -16,6 +12,12 @@ import type { } from "../types"; import type { DataTableUiClassNames } from "../ui-kit"; import { cn } from "../../lib/utils"; +import type { + DataTableTanStackColumn as Column, + DataTableTanStackColumnDef as ColumnDef, + DataTableTanStackRow as Row, + DataTableTanStackTable as TanStackTable, +} from "./tanstack-v9"; const DATA_TABLE_LOADING_ROW = Symbol("data-table-loading-row"); @@ -504,12 +506,12 @@ export function getDataTableExportRows( return table.getRowModel().rows; case "selected": return table - .getPrePaginationRowModel() + .getPrePaginatedRowModel() .rows.filter((row) => row.getIsSelected()); case "all": return table.getCoreRowModel().rows; default: - return table.getPrePaginationRowModel().rows; + return table.getPrePaginatedRowModel().rows; } } @@ -530,7 +532,7 @@ function escapeCsvCell(value: unknown, escapeFormulaValues: boolean) { export function getInitialColumnPinning( columns: Array>, -): ColumnPinningState { +): DataTableColumnPinningState { const left: Array = []; const right: Array = []; @@ -615,8 +617,11 @@ export function getAccessorKey( export function getFixedSide(column: Column) { const pinnedSide = column.getIsPinned(); - if (pinnedSide) { - return pinnedSide; + if (pinnedSide === "start") { + return "left" as const; + } + if (pinnedSide === "end") { + return "right" as const; } if (column.id === "__select__") { 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 b3b2cc2..5ddb07f 100644 --- a/src/core/data-table/data-table-virtual-card-panel.tsx +++ b/src/core/data-table/data-table-virtual-card-panel.tsx @@ -1,10 +1,10 @@ import * as React from "react"; -import type { Row } from "@tanstack/react-table"; import { useVirtualizer } from "@tanstack/react-virtual"; import { cn } from "../../lib/utils"; import { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS } from "../types"; import type { DataTableCardPanelProps } from "./data-table-card-panel-types"; import { useDataTableScrollViewport } from "./use-data-table-scroll-viewport"; +import type { DataTableTanStackRow as Row } from "./tanstack-v9"; export function DataTableVirtualCardPanel({ cardClassName, diff --git a/src/core/data-table/tanstack-v9.ts b/src/core/data-table/tanstack-v9.ts new file mode 100644 index 0000000..b4393f0 --- /dev/null +++ b/src/core/data-table/tanstack-v9.ts @@ -0,0 +1,144 @@ +import { + aggregationFns as builtInAggregationFns, + columnFacetingFeature, + columnFilteringFeature, + columnGroupingFeature, + columnOrderingFeature, + columnPinningFeature, + columnResizingFeature, + columnSizingFeature, + columnVisibilityFeature, + createExpandedRowModel, + createFacetedMinMaxValues, + createFacetedRowModel, + createFacetedUniqueValues, + createFilteredRowModel, + createGroupedRowModel, + createPaginatedRowModel, + createSortedRowModel, + filterFns as builtInFilterFns, + globalFilteringFeature, + rowAggregationFeature, + rowExpandingFeature, + rowPaginationFeature, + rowPinningFeature, + rowSelectionFeature, + rowSortingFeature, + sortFns as builtInSortFns, + tableFeatures, +} from "@tanstack/react-table"; +import type { + AggregationFnDef, + Cell, + CellContext, + Column, + ColumnDef, + FilterFn, + FilterFnOption, + Header, + HeaderContext, + Row, + RowData, + Table, +} from "@tanstack/react-table"; + +/** + * The v9 feature surface used by every data-table adapter. + * + * Keeping this registry in one module makes the new feature generic an + * implementation detail instead of leaking it through every public type. + * Function registries remain broad during the migration so existing named + * column definitions keep working. They can be narrowed once the v9 surface + * is fully audited. + */ +type DataTableAggregationRegistry = Record; +type BuiltInFilterFn = + (typeof builtInFilterFns)[keyof typeof builtInFilterFns]; + +export function createDataTableFeatures( + customAggregationFns: DataTableAggregationRegistry = {}, +) { + return tableFeatures({ + columnFacetingFeature, + columnFilteringFeature, + globalFilteringFeature, + rowAggregationFeature, + columnGroupingFeature, + columnOrderingFeature, + columnPinningFeature, + columnSizingFeature, + columnResizingFeature, + columnVisibilityFeature, + rowExpandingFeature, + rowPaginationFeature, + rowPinningFeature, + rowSelectionFeature, + rowSortingFeature, + expandedRowModel: createExpandedRowModel(), + facetedMinMaxValues: createFacetedMinMaxValues(), + facetedRowModel: createFacetedRowModel(), + facetedUniqueValues: createFacetedUniqueValues(), + filteredRowModel: createFilteredRowModel(), + groupedRowModel: createGroupedRowModel(), + paginatedRowModel: createPaginatedRowModel(), + sortedRowModel: createSortedRowModel(), + aggregationFns: { + ...(builtInAggregationFns as DataTableAggregationRegistry), + ...customAggregationFns, + }, + filterFns: builtInFilterFns as Record, + sortFns: builtInSortFns, + }); +} + +export const dataTableFeatures = createDataTableFeatures(); + +export type DataTableFeatures = typeof dataTableFeatures; +export type DataTableRowData = Extract; +export type DataTableTanStackTable = Table< + DataTableFeatures, + DataTableRowData +>; +export type DataTableTanStackRow = Row< + DataTableFeatures, + DataTableRowData +>; +export type DataTableTanStackColumn = Column< + DataTableFeatures, + DataTableRowData, + TValue +>; +export type DataTableTanStackCell = Cell< + DataTableFeatures, + DataTableRowData, + TValue +>; +export type DataTableTanStackHeader = Header< + DataTableFeatures, + DataTableRowData, + TValue +>; +export type DataTableTanStackColumnDef = ColumnDef< + DataTableFeatures, + DataTableRowData, + TValue +>; +export type DataTableTanStackCellContext = CellContext< + DataTableFeatures, + DataTableRowData, + TValue +>; +export type DataTableTanStackHeaderContext = + HeaderContext, TValue>; +export type DataTableTanStackFilterFn = FilterFn< + DataTableFeatures, + DataTableRowData +>; +export type DataTableTanStackFilterFnOption = FilterFnOption< + DataTableFeatures, + DataTableRowData +>; +export type DataTableTanStackAggregationFn = AggregationFnDef< + DataTableFeatures, + DataTableRowData +>; diff --git a/src/core/data-table/use-column-layout.ts b/src/core/data-table/use-column-layout.ts index 4a4c723..e918ed4 100644 --- a/src/core/data-table/use-column-layout.ts +++ b/src/core/data-table/use-column-layout.ts @@ -1,5 +1,5 @@ import * as React from "react"; -import type { Column, ColumnSizingState } from "@tanstack/react-table"; +import type { ColumnSizingState } from "@tanstack/react-table"; import type { DataTableColumnDef } from "../types"; import type { DataTableUiClassNames } from "../ui-kit"; import { @@ -12,6 +12,7 @@ import { hasExplicitDataTableColumnSize, isUtilityColumnId, } from "./data-table-utils"; +import type { DataTableTanStackColumn as Column } from "./tanstack-v9"; type ColumnLayoutMode = "fill" | "fit"; diff --git a/src/core/data-table/use-data-table-columns.tsx b/src/core/data-table/use-data-table-columns.tsx index cb5acec..5ef3d25 100644 --- a/src/core/data-table/use-data-table-columns.tsx +++ b/src/core/data-table/use-data-table-columns.tsx @@ -1,10 +1,8 @@ import * as React from "react"; import type { - ColumnDef, ExpandedState, OnChangeFn, RowPinningPosition, - Table as TanStackTable, } from "@tanstack/react-table"; import { IconChevronDown } from "../icons"; import type { @@ -23,6 +21,10 @@ import { toggleDataTableExpandedState, } from "./data-table-utils"; import { DATA_TABLE_DEFAULT_LABELS } from "./data-table-labels"; +import type { + DataTableTanStackColumnDef as ColumnDef, + DataTableTanStackTable as TanStackTable, +} from "./tanstack-v9"; type DataTableRowActionsComponentProps = { editableRows?: DataTableEditableRowsConfig; diff --git a/src/core/data-table/use-data-table-instance.ts b/src/core/data-table/use-data-table-instance.ts index b96d147..3b51e89 100644 --- a/src/core/data-table/use-data-table-instance.ts +++ b/src/core/data-table/use-data-table-instance.ts @@ -1,34 +1,23 @@ import * as React from "react"; -import { - getCoreRowModel, - getExpandedRowModel, - getFacetedMinMaxValues, - getFacetedRowModel, - getFacetedUniqueValues, - getFilteredRowModel, - getGroupedRowModel, - getPaginationRowModel, - getSortedRowModel, - useReactTable, -} from "@tanstack/react-table"; +import { useTable } from "@tanstack/react-table"; import type { - ColumnDef, ColumnFiltersState, ColumnOrderState, - ColumnPinningState, + ColumnPinningState as TanStackColumnPinningState, ColumnSizingState, + ColumnVisibilityState as VisibilityState, ExpandedState, GroupingState, - FilterFnOption, OnChangeFn, PaginationState, RowPinningState, - Row, + RowSelectionState, SortingState, - Table as TanStackTable, - VisibilityState, } from "@tanstack/react-table"; -import type { DataTableProps } from "../types"; +import type { + DataTableColumnPinningState, + DataTableProps, +} from "../types"; import { canReorderDataTableColumn, getColumnId, @@ -41,6 +30,39 @@ 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"; +import { + createDataTableFeatures, + type DataTableFeatures, + type DataTableTanStackColumn as Column, + type DataTableRowData, + type DataTableTanStackColumnDef as ColumnDef, + type DataTableTanStackFilterFnOption as FilterFnOption, + type DataTableTanStackRow as Row, + type DataTableTanStackTable as TanStackTable, +} from "./tanstack-v9"; + +export type DataTableRowsToRender = Array<{ + row: Row; + rowIndex: number; +}>; + +type DataTableInstanceResult = { + effectivePageCount: number; + footerTotalRowCount: number | undefined; + handleFooterPageIndexChange: (nextPageIndex: number) => void; + handleFooterPageSizeChange: (nextPageSize: number) => void; + isPageCountKnown: boolean; + renderedRows: Array>; + topPinnedRows: Array>; + bottomPinnedRows: Array>; + reorderColumn: (sourceColumnId: string, targetColumnId: string) => void; + rowsToRender: DataTableRowsToRender; + sentinelRef: React.RefObject; + table: TanStackTable; + virtualPaddingBottom: number; + virtualPaddingTop: number; + visibleLeafColumns: Array>; +}; export function useDataTableInstance({ autoResetPageIndex, @@ -114,7 +136,7 @@ export function useDataTableInstance({ dir: NonNullable["dir"]>; currentColumnFilters: ColumnFiltersState; currentColumnOrder: ColumnOrderState; - currentColumnPinning: ColumnPinningState; + currentColumnPinning: DataTableColumnPinningState; currentRowPinning: RowPinningState; currentColumnSizing: ColumnSizingState; currentExpanded: ExpandedState; @@ -144,7 +166,7 @@ export function useDataTableInstance({ hasNextPage?: DataTableProps["hasNextPage"]; handleColumnFiltersChange: OnChangeFn; handleColumnOrderChange: OnChangeFn; - handleColumnPinningChange: OnChangeFn; + handleColumnPinningChange: OnChangeFn; handleRowPinningChange: OnChangeFn; handleColumnVisibilityChange: OnChangeFn; handleExpandedChange: OnChangeFn; @@ -183,7 +205,7 @@ export function useDataTableInstance({ totalRowCount: DataTableProps["totalRowCount"]; virtualization: DataTableProps["virtualization"]; viewportHeight: number; -}) { +}): DataTableInstanceResult { const cachedGlobalFilterFn = useDataTableSearchIndex(); const generatedColumnIds = React.useMemo(() => { return getDataTableLeafColumns( @@ -216,7 +238,7 @@ export function useDataTableInstance({ ]; }, [currentColumnOrder, generatedColumnIds]); - const effectiveColumnPinning = React.useMemo(() => { + const effectiveColumnPinning = React.useMemo(() => { const columnIdSet = new Set(generatedColumnIds); const dataColumnIdSet = new Set( generatedColumnIds.filter( @@ -232,19 +254,45 @@ export function useDataTableInstance({ ); return { - left: [ + start: [ ...["__expand__", "__select__"].filter((columnId) => columnIdSet.has(columnId), ), ...dataLeft, ], - right: [ + end: [ ...dataRight, ...["__actions__"].filter((columnId) => columnIdSet.has(columnId)), ], }; }, [currentColumnPinning, generatedColumnIds]); + const handleTanStackColumnPinningChange = React.useCallback< + OnChangeFn + >( + (updater) => { + const nextValue = + typeof updater === "function" + ? updater(effectiveColumnPinning) + : updater; + const dataColumnIds = new Set( + generatedColumnIds.filter( + (columnId) => + !isUtilityColumnId(columnId) && columnId !== "__spacer__", + ), + ); + handleColumnPinningChange({ + left: nextValue.start.filter((columnId) => dataColumnIds.has(columnId)), + right: nextValue.end.filter((columnId) => dataColumnIds.has(columnId)), + }); + }, + [ + effectiveColumnPinning, + generatedColumnIds, + handleColumnPinningChange, + ], + ); + const effectiveRowPinning = React.useMemo(() => { const availableRowIds = new Set(); const visitRows = (rows: Array) => { @@ -275,11 +323,32 @@ export function useDataTableInstance({ tableGetRowId, ]); + const tanStackRowSelection = React.useMemo(() => { + return Object.fromEntries( + Object.entries(currentRowSelection).flatMap(([rowId, selected]) => + selected ? [[rowId, true as const]] : [], + ), + ); + }, [currentRowSelection]); + + const handleTanStackRowSelectionChange = React.useCallback< + OnChangeFn + >( + (updater) => { + const nextValue = + typeof updater === "function" + ? updater(tanStackRowSelection) + : updater; + setCurrentRowSelection({ ...nextValue }); + }, + [setCurrentRowSelection, tanStackRowSelection], + ); + const tableState = React.useMemo( () => ({ sorting: currentSorting, pagination: currentPagination, - rowSelection: currentRowSelection, + rowSelection: tanStackRowSelection, columnVisibility: effectiveColumnVisibility, columnFilters: currentColumnFilters, globalFilter: globalFilterValue, @@ -296,13 +365,13 @@ export function useDataTableInstance({ currentExpanded, currentGrouping, currentPagination, - currentRowSelection, currentSorting, effectiveColumnVisibility, effectiveColumnOrder, effectiveColumnPinning, effectiveRowPinning, globalFilterValue, + tanStackRowSelection, ], ); @@ -348,51 +417,15 @@ export function useDataTableInstance({ [setLocalColumnSizing], ); - const facetingNeeds = React.useMemo( - () => { - let uniqueValues = false; - let minMaxValues = false; - for (const { column } of getDataTableLeafColumns( - tableColumns as DataTableProps["columns"], - )) { - uniqueValues ||= column.meta?.filter?.type === "faceted"; - minMaxValues ||= column.meta?.filter?.type === "numberRange"; - } - return { minMaxValues, uniqueValues }; - }, - [tableColumns], + const features = React.useMemo( + () => createDataTableFeatures(aggregationFns), + [aggregationFns], ); - // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Table owns its instance functions. - const table = useReactTable({ - data: tableData, + const table = useTable>({ + features, + data: tableData as Array>, columns: tableColumns, - getCoreRowModel: getCoreRowModel(), - getFilteredRowModel: manualFiltering ? undefined : getFilteredRowModel(), - getFacetedRowModel: - (facetingNeeds.uniqueValues || facetingNeeds.minMaxValues) && - !manualFiltering - ? getFacetedRowModel() - : undefined, - getFacetedUniqueValues: - facetingNeeds.uniqueValues && !manualFiltering - ? getFacetedUniqueValues() - : undefined, - getFacetedMinMaxValues: - facetingNeeds.minMaxValues && !manualFiltering - ? getFacetedMinMaxValues() - : undefined, - getGroupedRowModel: - currentGrouping.length && !manualGrouping ? getGroupedRowModel() : undefined, - getSortedRowModel: manualSorting ? undefined : getSortedRowModel(), - getExpandedRowModel: - (getSubRows || currentGrouping.length) && !manualExpanding - ? getExpandedRowModel() - : undefined, - getPaginationRowModel: - manualPagination || infiniteScroll?.enabled - ? undefined - : getPaginationRowModel(), enableRowSelection: getRowCanSelect ? (row) => enableRowSelection && getRowCanSelect(row.original) : enableRowSelection, @@ -413,13 +446,19 @@ export function useDataTableInstance({ columnResizeMode, columnResizeDirection: dir, getRowId: tableGetRowId, - getSubRows, + getSubRows: getSubRows + ? (row, index) => + getSubRows(row, index) as + | Array> + | undefined + : undefined, getRowCanExpand: getSubRows ? (row) => getRowCanExpand?.(row.original) ?? row.subRows.length > 0 : undefined, globalFilterFn: globalFilterFn ?? cachedGlobalFilterFn, getColumnCanGlobalFilter: (column) => - column.columnDef.enableGlobalFilter !== false && + (column.columnDef as ColumnDef).enableGlobalFilter !== + false && typeof column.accessorFn === "function", manualSorting, manualGrouping, @@ -434,19 +473,25 @@ export function useDataTableInstance({ state: tableState, onSortingChange: setCurrentSorting, onPaginationChange: handlePaginationChange, - onRowSelectionChange: setCurrentRowSelection, + onRowSelectionChange: handleTanStackRowSelectionChange, onColumnVisibilityChange: handleColumnVisibilityChange, onColumnFiltersChange: handleColumnFiltersChange, onExpandedChange: handleExpandedChange, onGroupingChange: handleGroupingChange, onColumnOrderChange: handleColumnOrderChange, - onColumnPinningChange: handleColumnPinningChange, + onColumnPinningChange: handleTanStackColumnPinningChange, onRowPinningChange: handleRowPinningChange, onColumnSizingChange: handleColumnSizingChange, - aggregationFns, groupedColumnMode, }); - tableRef.current = table; + React.useLayoutEffect(() => { + tableRef.current = table; + return () => { + if (tableRef.current === table) { + tableRef.current = null; + } + }; + }, [table, tableRef]); const visibleLeafColumns = table.getVisibleLeafColumns(); const reorderColumn = React.useCallback( @@ -630,8 +675,3 @@ export function useDataTableInstance({ visibleLeafColumns, }; } - -export type DataTableRowsToRender = Array<{ - row: Row; - rowIndex: number; -}>; diff --git a/src/core/data-table/use-data-table-search-index.ts b/src/core/data-table/use-data-table-search-index.ts index 4827e64..446d67f 100644 --- a/src/core/data-table/use-data-table-search-index.ts +++ b/src/core/data-table/use-data-table-search-index.ts @@ -1,6 +1,9 @@ import * as React from "react"; -import type { FilterFn, Row } from "@tanstack/react-table"; import { normalizeDataTableSearchText } from "./data-table-utils"; +import type { + DataTableTanStackFilterFn as FilterFn, + DataTableTanStackRow as Row, +} from "./tanstack-v9"; /** * Caches each searchable cell against the application-owned row object and diff --git a/src/core/data-table/use-data-table-state.ts b/src/core/data-table/use-data-table-state.ts index 2838cf2..c66b020 100644 --- a/src/core/data-table/use-data-table-state.ts +++ b/src/core/data-table/use-data-table-state.ts @@ -2,16 +2,16 @@ import * as React from "react"; import type { ColumnFiltersState, ColumnOrderState, - ColumnPinningState, ColumnSizingState, + ColumnVisibilityState as VisibilityState, ExpandedState, GroupingState, PaginationState, RowPinningState, SortingState, - VisibilityState, } from "@tanstack/react-table"; import type { + DataTableColumnPinningState as ColumnPinningState, DataTableDensity, DataTableLabels, DataTableProps, 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 a77dc8b..0d974f3 100644 --- a/src/core/data-table/use-data-table-toolbar-features.ts +++ b/src/core/data-table/use-data-table-toolbar-features.ts @@ -2,16 +2,16 @@ import * as React from "react"; import { IconDownload } from "../icons"; import type { ColumnFiltersState, - ColumnPinningState, + ColumnVisibilityState as VisibilityState, OnChangeFn, - Table as TanStackTable, - VisibilityState, } from "@tanstack/react-table"; import type { DataTableColumnFixed, + DataTableColumnPinningState as ColumnPinningState, DataTableLabels, DataTableProps, } from "../types"; +import type { DataTableTanStackTable as TanStackTable } from "./tanstack-v9"; import { exportDataTableCsv, getAccessorKey, diff --git a/src/core/data-table/use-data-table-url-state.ts b/src/core/data-table/use-data-table-url-state.ts index a6cabcb..f257229 100644 --- a/src/core/data-table/use-data-table-url-state.ts +++ b/src/core/data-table/use-data-table-url-state.ts @@ -10,14 +10,13 @@ import { import type { ColumnFiltersState, ColumnOrderState, - ColumnPinningState, + ColumnVisibilityState as VisibilityState, GroupingState, - RowSelectionState, SortingState, Updater, - VisibilityState, } from "@tanstack/react-table"; import type { + DataTableColumnPinningState as ColumnPinningState, DataTableDensity, DataTableState, DataTableViewMode, @@ -32,6 +31,8 @@ export type DataTableUrlStateSlice = | "grouping" | "rowSelection"; +type DataTableUrlRowSelectionState = Record; + export type DataTableUrlEnhancedState = { columnFilters: ColumnFiltersState; columnVisibility: VisibilityState; @@ -39,7 +40,7 @@ export type DataTableUrlEnhancedState = { columnOrder: ColumnOrderState; columnPinning: ColumnPinningState; grouping: GroupingState; - rowSelection: RowSelectionState; + rowSelection: DataTableUrlRowSelectionState; }; export type DataTableUrlStateMigrationPayload = { @@ -67,7 +68,7 @@ const EMPTY_VISIBILITY: VisibilityState = {}; const EMPTY_ORDER: ColumnOrderState = []; const EMPTY_PINNING: ColumnPinningState = {}; const EMPTY_GROUPING: GroupingState = []; -const EMPTY_SELECTION: RowSelectionState = {}; +const EMPTY_SELECTION: DataTableUrlRowSelectionState = {}; export function useDataTableUrlState({ keyPrefix, @@ -108,7 +109,7 @@ export function useDataTableUrlState({ columnOrder: parseAsJson(validateStringArray), pinning: parseAsJson(validateColumnPinning), grouping: parseAsJson(validateStringArray), - selection: parseAsJson(validateBooleanRecord), + selection: parseAsJson(validateBooleanRecord), }, { clearOnDefault: true, @@ -380,7 +381,7 @@ export function useDataTableUrlState({ ); const setRowSelection = React.useCallback( - (updater: Updater) => { + (updater: Updater) => { if (!enabledSet.has("rowSelection")) return; const next = resolveUpdater(updater, rowSelection); void setState({ diff --git a/src/core/data-table/use-row-editing.tsx b/src/core/data-table/use-row-editing.tsx index be34b68..ee2276c 100644 --- a/src/core/data-table/use-row-editing.tsx +++ b/src/core/data-table/use-row-editing.tsx @@ -1,5 +1,4 @@ import * as React from "react"; -import type { CellContext } from "@tanstack/react-table"; import type { DataTableColumnDef, DataTableColumnType, @@ -7,6 +6,7 @@ import type { } from "../types"; import type { DataTableUiKit } from "../ui-kit"; import { getDataTableLeafColumns } from "./data-table-utils"; +import type { DataTableTanStackCellContext as CellContext } from "./tanstack-v9"; export function useRowEditing({ columns, diff --git a/src/core/types.ts b/src/core/types.ts index 8a03279..d97e384 100644 --- a/src/core/types.ts +++ b/src/core/types.ts @@ -1,24 +1,25 @@ import type * as React from "react"; import type { - AggregationFn, - CellContext, ColumnFiltersState, - ColumnDef, ColumnOrderState, - ColumnPinningState, ColumnSizingState, + ColumnVisibilityState as VisibilityState, ExpandedState, - FilterFnOption, GroupingState, - HeaderContext, PaginationState, - Row, RowPinningState, SortingState, - Table as TanStackTable, Updater, - VisibilityState, } from "@tanstack/react-table"; +import type { + DataTableTanStackAggregationFn, + DataTableTanStackCellContext as CellContext, + DataTableTanStackColumnDef as ColumnDef, + DataTableTanStackFilterFnOption as FilterFnOption, + DataTableTanStackHeaderContext as HeaderContext, + DataTableTanStackRow as Row, + DataTableTanStackTable as TanStackTable, +} from "./data-table/tanstack-v9"; export type DataTableViewMode = "table" | "card"; @@ -65,6 +66,14 @@ export type DataTableGridCommands = { export type DataTableAlign = "start" | "center" | "end"; export type DataTableColumnType = "text" | "numeric" | "date"; export type DataTableColumnFixed = "left" | "right"; +/** Physical pinning state retained at the public API and persistence boundary. */ +export type DataTableColumnPinningState = { + left?: Array; + right?: Array; +}; +/** A TanStack Table v9 context-based aggregation definition. */ +export type DataTableAggregationFn = + DataTableTanStackAggregationFn; export type DataTableContainerBreakpoint = "sm" | "md" | "lg" | "xl" | "2xl"; export type DataTableDensity = "compact" | "comfortable" | "spacious"; export type DataTableCardSizing = "fixed" | "content" | "fluid"; @@ -539,7 +548,7 @@ export type DataTableColumnPrefs = { visibility?: VisibilityState; sizing?: Record; order?: ColumnOrderState; - pinning?: ColumnPinningState; + pinning?: DataTableColumnPinningState; rowPinning?: RowPinningState; density?: DataTableDensity; }; @@ -590,7 +599,7 @@ export type DataTableState = { columnFilters: ColumnFiltersState; expanded: ExpandedState; columnOrder: ColumnOrderState; - columnPinning: ColumnPinningState; + columnPinning: DataTableColumnPinningState; rowPinning: RowPinningState; columnSizing: ColumnSizingState; /** Present in snapshots produced by 4.4+; optional for 4.x object-literal compatibility. */ @@ -831,7 +840,7 @@ export type DataTableProps = { /** 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>; + aggregationFns?: Record>; pageIndex?: number; pageSize?: number; /** Sizes an opt-in page from the measurable table scroll viewport. */ @@ -875,8 +884,8 @@ export type DataTableProps = { enableColumnReordering?: boolean; /** Default height for shared column-group header cells. */ columnGroupHeaderHeight?: React.CSSProperties["height"]; - columnPinning?: ColumnPinningState; - onColumnPinningChange?: (columnPinning: ColumnPinningState) => void; + columnPinning?: DataTableColumnPinningState; + onColumnPinningChange?: (columnPinning: DataTableColumnPinningState) => void; enableColumnPinning?: boolean; rowPinning?: RowPinningState; onRowPinningChange?: (rowPinning: RowPinningState) => void;