@tanstack/table-core 9.0.0-alpha.0 → 9.0.0-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/core/cells/constructCell.d.ts +7 -0
- package/dist/esm/core/cells/constructCell.js +21 -0
- package/dist/esm/core/cells/constructCell.js.map +1 -0
- package/dist/esm/core/cells/coreCellsFeature.d.ts +10 -0
- package/dist/esm/core/cells/coreCellsFeature.js +26 -0
- package/dist/esm/core/cells/coreCellsFeature.js.map +1 -0
- package/dist/esm/core/cells/coreCellsFeature.types.d.ts +52 -0
- package/dist/esm/core/cells/coreCellsFeature.utils.d.ts +13 -0
- package/dist/esm/core/cells/coreCellsFeature.utils.js +23 -0
- package/dist/esm/core/cells/coreCellsFeature.utils.js.map +1 -0
- package/dist/esm/core/columns/constructColumn.d.ts +6 -0
- package/dist/esm/core/columns/constructColumn.js +60 -0
- package/dist/esm/core/columns/constructColumn.js.map +1 -0
- package/dist/esm/core/columns/coreColumnsFeature.d.ts +10 -0
- package/dist/esm/core/columns/coreColumnsFeature.js +61 -0
- package/dist/esm/core/columns/coreColumnsFeature.js.map +1 -0
- package/dist/esm/core/columns/coreColumnsFeature.types.d.ts +84 -0
- package/dist/esm/core/columns/coreColumnsFeature.utils.d.ts +13 -0
- package/dist/esm/core/columns/coreColumnsFeature.utils.js +91 -0
- package/dist/esm/core/columns/coreColumnsFeature.utils.js.map +1 -0
- package/dist/esm/core/coreFeatures.d.ts +15 -0
- package/dist/esm/core/coreFeatures.js +18 -0
- package/dist/esm/core/coreFeatures.js.map +1 -0
- package/dist/esm/core/headers/buildHeaderGroups.d.ts +6 -0
- package/dist/esm/core/headers/buildHeaderGroups.js +99 -0
- package/dist/esm/core/headers/buildHeaderGroups.js.map +1 -0
- package/dist/esm/core/headers/constructHeader.d.ts +12 -0
- package/dist/esm/core/headers/constructHeader.js +28 -0
- package/dist/esm/core/headers/constructHeader.js.map +1 -0
- package/dist/esm/core/headers/coreHeadersFeature.d.ts +10 -0
- package/dist/esm/core/headers/coreHeadersFeature.js +68 -0
- package/dist/esm/core/headers/coreHeadersFeature.js.map +1 -0
- package/dist/esm/core/headers/coreHeadersFeature.types.d.ts +99 -0
- package/dist/esm/core/headers/coreHeadersFeature.utils.d.ts +15 -0
- package/dist/esm/core/headers/coreHeadersFeature.utils.js +85 -0
- package/dist/esm/core/headers/coreHeadersFeature.utils.js.map +1 -0
- package/dist/esm/core/row-models/coreRowModelsFeature.d.ts +10 -0
- package/dist/esm/core/row-models/coreRowModelsFeature.js +52 -0
- package/dist/esm/core/row-models/coreRowModelsFeature.js.map +1 -0
- package/dist/esm/core/row-models/coreRowModelsFeature.types.d.ts +39 -0
- package/dist/esm/core/row-models/coreRowModelsFeature.utils.d.ts +16 -0
- package/dist/esm/core/row-models/coreRowModelsFeature.utils.js +85 -0
- package/dist/esm/core/row-models/coreRowModelsFeature.utils.js.map +1 -0
- package/dist/esm/core/row-models/createCoreRowModel.d.ts +5 -0
- package/dist/esm/core/row-models/createCoreRowModel.js +54 -0
- package/dist/esm/core/row-models/createCoreRowModel.js.map +1 -0
- package/dist/esm/core/rows/constructRow.d.ts +5 -0
- package/dist/esm/core/rows/constructRow.js +29 -0
- package/dist/esm/core/rows/constructRow.js.map +1 -0
- package/dist/esm/core/rows/coreRowsFeature.d.ts +10 -0
- package/dist/esm/core/rows/coreRowsFeature.js +52 -0
- package/dist/esm/core/rows/coreRowsFeature.js.map +1 -0
- package/dist/esm/core/rows/coreRowsFeature.types.d.ts +91 -0
- package/dist/esm/core/rows/coreRowsFeature.utils.d.ts +15 -0
- package/dist/esm/core/rows/coreRowsFeature.utils.js +94 -0
- package/dist/esm/core/rows/coreRowsFeature.utils.js.map +1 -0
- package/dist/esm/core/table/constructTable.d.ts +9 -0
- package/dist/esm/core/table/constructTable.js +65 -0
- package/dist/esm/core/table/constructTable.js.map +1 -0
- package/dist/esm/core/table/coreTablesFeature.d.ts +10 -0
- package/dist/esm/core/table/coreTablesFeature.js +22 -0
- package/dist/esm/core/table/coreTablesFeature.js.map +1 -0
- package/dist/esm/core/table/coreTablesFeature.types.d.ts +105 -0
- package/dist/esm/core/table/coreTablesFeature.utils.d.ts +7 -0
- package/dist/esm/core/table/coreTablesFeature.utils.js +23 -0
- package/dist/esm/core/table/coreTablesFeature.utils.js.map +1 -0
- package/dist/esm/features/column-faceting/columnFacetingFeature.d.ts +10 -0
- package/dist/esm/features/column-faceting/columnFacetingFeature.js +80 -0
- package/dist/esm/features/column-faceting/columnFacetingFeature.js.map +1 -0
- package/dist/esm/features/column-faceting/columnFacetingFeature.types.d.ts +68 -0
- package/dist/esm/features/column-faceting/columnFacetingFeature.utils.d.ts +11 -0
- package/dist/esm/features/column-faceting/columnFacetingFeature.utils.js +33 -0
- package/dist/esm/features/column-faceting/columnFacetingFeature.utils.js.map +1 -0
- package/dist/esm/features/column-faceting/createFacetedMinMaxValues.d.ts +4 -0
- package/dist/esm/features/column-faceting/createFacetedMinMaxValues.js +41 -0
- package/dist/esm/features/column-faceting/createFacetedMinMaxValues.js.map +1 -0
- package/dist/esm/features/column-faceting/createFacetedRowModel.d.ts +5 -0
- package/dist/esm/features/column-faceting/createFacetedRowModel.js +47 -0
- package/dist/esm/features/column-faceting/createFacetedRowModel.js.map +1 -0
- package/dist/esm/features/column-faceting/createFacetedUniqueValues.d.ts +4 -0
- package/dist/esm/features/column-faceting/createFacetedUniqueValues.js +46 -0
- package/dist/esm/features/column-faceting/createFacetedUniqueValues.js.map +1 -0
- package/dist/esm/features/column-filtering/columnFilteringFeature.d.ts +11 -0
- package/dist/esm/features/column-filtering/columnFilteringFeature.js +69 -0
- package/dist/esm/features/column-filtering/columnFilteringFeature.js.map +1 -0
- package/dist/esm/features/column-filtering/columnFilteringFeature.types.d.ts +145 -0
- package/dist/esm/features/column-filtering/columnFilteringFeature.utils.d.ts +16 -0
- package/dist/esm/features/column-filtering/columnFilteringFeature.utils.js +118 -0
- package/dist/esm/features/column-filtering/columnFilteringFeature.utils.js.map +1 -0
- package/dist/esm/features/column-filtering/createFilteredRowModel.d.ts +6 -0
- package/dist/esm/features/column-filtering/createFilteredRowModel.js +110 -0
- package/dist/esm/features/column-filtering/createFilteredRowModel.js.map +1 -0
- package/dist/esm/features/column-filtering/filterRowsUtils.d.ts +6 -0
- package/dist/esm/{utils → features/column-filtering}/filterRowsUtils.js +15 -19
- package/dist/esm/features/column-filtering/filterRowsUtils.js.map +1 -0
- package/dist/esm/features/column-grouping/columnGroupingFeature.d.ts +10 -0
- package/dist/esm/features/column-grouping/columnGroupingFeature.js +91 -0
- package/dist/esm/features/column-grouping/columnGroupingFeature.js.map +1 -0
- package/dist/esm/features/column-grouping/columnGroupingFeature.types.d.ts +153 -0
- package/dist/esm/features/column-grouping/columnGroupingFeature.utils.d.ts +22 -0
- package/dist/esm/features/column-grouping/columnGroupingFeature.utils.js +99 -0
- package/dist/esm/features/column-grouping/columnGroupingFeature.utils.js.map +1 -0
- package/dist/esm/features/column-grouping/createGroupedRowModel.d.ts +6 -0
- package/dist/esm/features/column-grouping/createGroupedRowModel.js +144 -0
- package/dist/esm/features/column-grouping/createGroupedRowModel.js.map +1 -0
- package/dist/esm/features/column-ordering/columnOrderingFeature.d.ts +10 -0
- package/dist/esm/features/column-ordering/columnOrderingFeature.js +60 -0
- package/dist/esm/features/column-ordering/columnOrderingFeature.js.map +1 -0
- package/dist/{cjs/features/ColumnOrdering.d.cts → esm/features/column-ordering/columnOrderingFeature.types.d.ts} +8 -22
- package/dist/esm/features/column-ordering/columnOrderingFeature.utils.d.ts +14 -0
- package/dist/esm/features/column-ordering/columnOrderingFeature.utils.js +72 -0
- package/dist/esm/features/column-ordering/columnOrderingFeature.utils.js.map +1 -0
- package/dist/esm/features/column-pinning/columnPinningFeature.d.ts +10 -0
- package/dist/esm/features/column-pinning/columnPinningFeature.js +260 -0
- package/dist/esm/features/column-pinning/columnPinningFeature.js.map +1 -0
- package/dist/esm/features/column-pinning/columnPinningFeature.types.d.ts +157 -0
- package/dist/esm/features/column-pinning/columnPinningFeature.utils.d.ts +39 -0
- package/dist/esm/features/column-pinning/columnPinningFeature.utils.js +325 -0
- package/dist/esm/features/column-pinning/columnPinningFeature.utils.js.map +1 -0
- package/dist/esm/features/column-resizing/columnResizingFeature.d.ts +11 -0
- package/dist/esm/features/column-resizing/columnResizingFeature.js +52 -0
- package/dist/esm/features/column-resizing/columnResizingFeature.js.map +1 -0
- package/dist/esm/features/column-resizing/columnResizingFeature.types.d.ts +68 -0
- package/dist/esm/features/column-resizing/columnResizingFeature.utils.d.ts +14 -0
- package/dist/esm/features/column-resizing/columnResizingFeature.utils.js +193 -0
- package/dist/esm/features/column-resizing/columnResizingFeature.utils.js.map +1 -0
- package/dist/esm/features/column-sizing/columnSizingFeature.d.ts +11 -0
- package/dist/esm/features/column-sizing/columnSizingFeature.js +95 -0
- package/dist/esm/features/column-sizing/columnSizingFeature.js.map +1 -0
- package/dist/esm/features/column-sizing/columnSizingFeature.types.d.ts +81 -0
- package/dist/esm/features/column-sizing/columnSizingFeature.utils.d.ts +25 -0
- package/dist/esm/features/column-sizing/columnSizingFeature.utils.js +128 -0
- package/dist/esm/features/column-sizing/columnSizingFeature.utils.js.map +1 -0
- package/dist/esm/features/column-visibility/columnVisibilityFeature.d.ts +10 -0
- package/dist/esm/features/column-visibility/columnVisibilityFeature.js +100 -0
- package/dist/esm/features/column-visibility/columnVisibilityFeature.js.map +1 -0
- package/dist/esm/features/column-visibility/columnVisibilityFeature.types.d.ts +84 -0
- package/dist/esm/features/column-visibility/columnVisibilityFeature.utils.d.ts +22 -0
- package/dist/esm/features/column-visibility/columnVisibilityFeature.utils.js +105 -0
- package/dist/esm/features/column-visibility/columnVisibilityFeature.utils.js.map +1 -0
- package/dist/esm/features/global-filtering/globalFilteringFeature.d.ts +11 -0
- package/dist/esm/features/global-filtering/globalFilteringFeature.js +51 -0
- package/dist/esm/features/global-filtering/globalFilteringFeature.js.map +1 -0
- package/dist/esm/features/global-filtering/globalFilteringFeature.types.d.ts +59 -0
- package/dist/esm/features/global-filtering/globalFilteringFeature.utils.d.ts +10 -0
- package/dist/esm/features/global-filtering/globalFilteringFeature.utils.js +30 -0
- package/dist/esm/features/global-filtering/globalFilteringFeature.utils.js.map +1 -0
- package/dist/esm/features/row-expanding/createExpandedRowModel.d.ts +6 -0
- package/dist/esm/features/row-expanding/createExpandedRowModel.js +49 -0
- package/dist/esm/features/row-expanding/createExpandedRowModel.js.map +1 -0
- package/dist/esm/features/row-expanding/rowExpandingFeature.d.ts +10 -0
- package/dist/esm/features/row-expanding/rowExpandingFeature.js +74 -0
- package/dist/esm/features/row-expanding/rowExpandingFeature.js.map +1 -0
- package/dist/esm/features/row-expanding/rowExpandingFeature.types.d.ts +116 -0
- package/dist/esm/features/row-expanding/rowExpandingFeature.utils.d.ts +20 -0
- package/dist/esm/features/row-expanding/rowExpandingFeature.utils.js +125 -0
- package/dist/esm/features/row-expanding/rowExpandingFeature.utils.js.map +1 -0
- package/dist/esm/features/row-pagination/createPaginatedRowModel.d.ts +5 -0
- package/dist/esm/features/row-pagination/createPaginatedRowModel.js +58 -0
- package/dist/esm/features/row-pagination/createPaginatedRowModel.js.map +1 -0
- package/dist/esm/features/row-pagination/rowPaginationFeature.d.ts +10 -0
- package/dist/esm/features/row-pagination/rowPaginationFeature.js +78 -0
- package/dist/esm/features/row-pagination/rowPaginationFeature.js.map +1 -0
- package/dist/esm/features/row-pagination/rowPaginationFeature.types.d.ts +119 -0
- package/dist/esm/features/row-pagination/rowPaginationFeature.utils.d.ts +21 -0
- package/dist/esm/features/row-pagination/rowPaginationFeature.utils.js +126 -0
- package/dist/esm/features/row-pagination/rowPaginationFeature.utils.js.map +1 -0
- package/dist/esm/features/row-pinning/rowPinningFeature.d.ts +10 -0
- package/dist/esm/features/row-pinning/rowPinningFeature.js +80 -0
- package/dist/esm/features/row-pinning/rowPinningFeature.js.map +1 -0
- package/dist/esm/features/row-pinning/rowPinningFeature.types.d.ts +72 -0
- package/dist/esm/features/row-pinning/rowPinningFeature.utils.d.ts +16 -0
- package/dist/esm/features/row-pinning/rowPinningFeature.utils.js +115 -0
- package/dist/esm/features/row-pinning/rowPinningFeature.utils.js.map +1 -0
- package/dist/esm/features/row-selection/rowSelectionFeature.d.ts +10 -0
- package/dist/esm/features/row-selection/rowSelectionFeature.js +112 -0
- package/dist/esm/features/row-selection/rowSelectionFeature.js.map +1 -0
- package/dist/esm/features/row-selection/rowSelectionFeature.types.d.ts +123 -0
- package/dist/esm/features/row-selection/rowSelectionFeature.utils.d.ts +34 -0
- package/dist/esm/features/row-selection/rowSelectionFeature.utils.js +290 -0
- package/dist/esm/features/row-selection/rowSelectionFeature.utils.js.map +1 -0
- package/dist/esm/features/row-sorting/createSortedRowModel.d.ts +6 -0
- package/dist/esm/features/row-sorting/createSortedRowModel.js +94 -0
- package/dist/esm/features/row-sorting/createSortedRowModel.js.map +1 -0
- package/dist/esm/features/row-sorting/rowSortingFeature.d.ts +10 -0
- package/dist/esm/features/row-sorting/rowSortingFeature.js +82 -0
- package/dist/esm/features/row-sorting/rowSortingFeature.js.map +1 -0
- package/dist/esm/features/row-sorting/rowSortingFeature.types.d.ts +178 -0
- package/dist/esm/features/row-sorting/rowSortingFeature.utils.d.ts +20 -0
- package/dist/esm/features/row-sorting/rowSortingFeature.utils.js +181 -0
- package/dist/esm/features/row-sorting/rowSortingFeature.utils.js.map +1 -0
- package/dist/esm/features/stockFeatures.d.ts +31 -0
- package/dist/esm/features/stockFeatures.js +34 -0
- package/dist/esm/features/stockFeatures.js.map +1 -0
- package/dist/esm/fns/aggregationFns.d.ts +49 -0
- package/dist/esm/fns/aggregationFns.js +110 -0
- package/dist/esm/fns/aggregationFns.js.map +1 -0
- package/dist/esm/fns/filterFns.d.ts +76 -0
- package/dist/esm/fns/filterFns.js +134 -0
- package/dist/esm/fns/filterFns.js.map +1 -0
- package/dist/esm/fns/sortFns.d.ts +17 -0
- package/dist/esm/{sortingFns.js → fns/sortFns.js} +21 -15
- package/dist/esm/fns/sortFns.js.map +1 -0
- package/dist/esm/helpers/columnHelper.d.ts +61 -0
- package/dist/esm/{columnHelper.js → helpers/columnHelper.js} +1 -0
- package/dist/esm/helpers/columnHelper.js.map +1 -0
- package/dist/esm/helpers/tableFeatures.d.ts +13 -0
- package/dist/esm/helpers/tableFeatures.js +7 -0
- package/dist/esm/helpers/tableFeatures.js.map +1 -0
- package/dist/esm/helpers/tableHelper.d.ts +25 -0
- package/dist/esm/helpers/tableHelper.js +13 -0
- package/dist/esm/helpers/tableHelper.js.map +1 -0
- package/dist/esm/helpers/tableOptions.d.ts +23 -0
- package/dist/esm/helpers/tableOptions.js +7 -0
- package/dist/esm/helpers/tableOptions.js.map +1 -0
- package/dist/esm/index.d.ts +109 -33
- package/dist/esm/index.js +397 -65
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/Cell.d.ts +13 -0
- package/dist/esm/types/Column.d.ts +26 -0
- package/dist/esm/types/ColumnDef.d.ts +64 -0
- package/dist/esm/types/Header.d.ts +14 -0
- package/dist/esm/types/HeaderGroup.d.ts +12 -0
- package/dist/esm/types/Row.d.ts +19 -0
- package/dist/esm/types/RowModel.d.ts +23 -0
- package/dist/esm/types/RowModelFns.d.ts +15 -0
- package/dist/esm/types/Table.d.ts +53 -0
- package/dist/esm/types/TableFeatures.d.ts +77 -0
- package/dist/esm/types/TableOptions.d.ts +39 -0
- package/dist/esm/types/TableState.d.ts +23 -0
- package/dist/esm/types/type-utils.d.ts +22 -0
- package/dist/esm/utils.d.ts +66 -33
- package/dist/esm/utils.js +183 -52
- package/dist/esm/utils.js.map +1 -1
- package/package.json +21 -12
- package/src/core/cells/constructCell.ts +49 -0
- package/src/core/cells/coreCellsFeature.ts +44 -0
- package/src/core/cells/coreCellsFeature.types.ts +68 -0
- package/src/core/cells/coreCellsFeature.utils.ts +35 -0
- package/src/core/columns/constructColumn.ts +111 -0
- package/src/core/columns/coreColumnsFeature.ts +90 -0
- package/src/core/columns/coreColumnsFeature.types.ts +103 -0
- package/src/core/columns/coreColumnsFeature.utils.ts +160 -0
- package/src/core/coreFeatures.ts +24 -0
- package/src/core/headers/buildHeaderGroups.ts +177 -0
- package/src/core/headers/constructHeader.ts +61 -0
- package/src/core/headers/coreHeadersFeature.ts +98 -0
- package/src/core/headers/coreHeadersFeature.types.ts +123 -0
- package/src/core/headers/coreHeadersFeature.utils.ts +131 -0
- package/src/core/row-models/coreRowModelsFeature.ts +78 -0
- package/src/core/row-models/coreRowModelsFeature.types.ts +67 -0
- package/src/core/row-models/coreRowModelsFeature.utils.ts +140 -0
- package/src/core/row-models/createCoreRowModel.ts +88 -0
- package/src/core/rows/constructRow.ts +59 -0
- package/src/core/rows/coreRowsFeature.ts +84 -0
- package/src/core/rows/coreRowsFeature.types.ts +111 -0
- package/src/core/rows/coreRowsFeature.utils.ts +152 -0
- package/src/core/table/constructTable.ts +95 -0
- package/src/core/table/coreTablesFeature.ts +36 -0
- package/src/core/table/coreTablesFeature.types.ts +123 -0
- package/src/core/table/coreTablesFeature.utils.ts +40 -0
- package/src/features/column-faceting/columnFacetingFeature.ts +112 -0
- package/src/features/column-faceting/columnFacetingFeature.types.ts +97 -0
- package/src/features/column-faceting/columnFacetingFeature.utils.ts +77 -0
- package/src/features/column-faceting/createFacetedMinMaxValues.ts +63 -0
- package/src/features/column-faceting/createFacetedRowModel.ts +76 -0
- package/src/features/column-faceting/createFacetedUniqueValues.ts +60 -0
- package/src/features/column-filtering/columnFilteringFeature.ts +121 -0
- package/src/features/column-filtering/columnFilteringFeature.types.ts +219 -0
- package/src/features/column-filtering/columnFilteringFeature.utils.ts +213 -0
- package/src/features/column-filtering/createFilteredRowModel.ts +171 -0
- package/src/features/column-filtering/filterRowsUtils.ts +152 -0
- package/src/features/column-grouping/columnGroupingFeature.ts +151 -0
- package/src/features/column-grouping/columnGroupingFeature.types.ts +218 -0
- package/src/features/column-grouping/columnGroupingFeature.utils.ts +192 -0
- package/src/features/column-grouping/createGroupedRowModel.ts +215 -0
- package/src/features/column-ordering/columnOrderingFeature.ts +96 -0
- package/src/features/column-ordering/columnOrderingFeature.types.ts +49 -0
- package/src/features/column-ordering/columnOrderingFeature.utils.ts +133 -0
- package/src/features/column-pinning/columnPinningFeature.ts +324 -0
- package/src/features/column-pinning/columnPinningFeature.types.ts +176 -0
- package/src/features/column-pinning/columnPinningFeature.utils.ts +537 -0
- package/src/features/column-resizing/columnResizingFeature.ts +92 -0
- package/src/features/column-resizing/columnResizingFeature.types.ts +81 -0
- package/src/features/column-resizing/columnResizingFeature.utils.ts +265 -0
- package/src/features/column-sizing/columnSizingFeature.ts +146 -0
- package/src/features/column-sizing/columnSizingFeature.types.ts +92 -0
- package/src/features/column-sizing/columnSizingFeature.utils.ts +211 -0
- package/src/features/column-visibility/columnVisibilityFeature.ts +155 -0
- package/src/features/column-visibility/columnVisibilityFeature.types.ts +101 -0
- package/src/features/column-visibility/columnVisibilityFeature.utils.ts +183 -0
- package/src/features/global-filtering/globalFilteringFeature.ts +92 -0
- package/src/features/global-filtering/globalFilteringFeature.types.ts +84 -0
- package/src/features/global-filtering/globalFilteringFeature.utils.ts +60 -0
- package/src/features/row-expanding/createExpandedRowModel.ts +72 -0
- package/src/features/row-expanding/rowExpandingFeature.ts +122 -0
- package/src/features/row-expanding/rowExpandingFeature.types.ts +141 -0
- package/src/features/row-expanding/rowExpandingFeature.utils.ts +207 -0
- package/src/features/row-pagination/createPaginatedRowModel.ts +78 -0
- package/src/features/row-pagination/rowPaginationFeature.ts +121 -0
- package/src/features/row-pagination/rowPaginationFeature.types.ts +141 -0
- package/src/features/row-pagination/rowPaginationFeature.utils.ts +204 -0
- package/src/features/row-pinning/rowPinningFeature.ts +121 -0
- package/src/features/row-pinning/rowPinningFeature.types.ts +89 -0
- package/src/features/row-pinning/rowPinningFeature.utils.ts +197 -0
- package/src/features/row-selection/rowSelectionFeature.ts +164 -0
- package/src/features/row-selection/rowSelectionFeature.types.ts +143 -0
- package/src/features/row-selection/rowSelectionFeature.utils.ts +464 -0
- package/src/features/row-sorting/createSortedRowModel.ts +147 -0
- package/src/features/row-sorting/rowSortingFeature.ts +136 -0
- package/src/features/row-sorting/rowSortingFeature.types.ts +229 -0
- package/src/features/row-sorting/rowSortingFeature.utils.ts +320 -0
- package/src/features/stockFeatures.ts +48 -0
- package/src/fns/aggregationFns.ts +220 -0
- package/src/fns/filterFns.ts +379 -0
- package/src/{sortingFns.ts → fns/sortFns.ts} +66 -21
- package/src/helpers/columnHelper.ts +117 -0
- package/src/helpers/tableFeatures.ts +24 -0
- package/src/helpers/tableHelper.ts +61 -0
- package/src/helpers/tableOptions.ts +82 -0
- package/src/index.ts +156 -42
- package/src/types/Cell.ts +41 -0
- package/src/types/Column.ts +86 -0
- package/src/types/ColumnDef.ts +217 -0
- package/src/types/Header.ts +45 -0
- package/src/types/HeaderGroup.ts +24 -0
- package/src/types/Row.ts +55 -0
- package/src/types/RowModel.ts +137 -0
- package/src/types/RowModelFns.ts +51 -0
- package/src/types/Table.ts +125 -0
- package/src/types/TableFeatures.ts +150 -0
- package/src/types/TableOptions.ts +125 -0
- package/src/types/TableState.ts +88 -0
- package/src/types/type-utils.ts +84 -0
- package/src/utils.ts +344 -163
- package/dist/cjs/aggregationFns.cjs +0 -98
- package/dist/cjs/aggregationFns.cjs.map +0 -1
- package/dist/cjs/aggregationFns.d.cts +0 -14
- package/dist/cjs/columnHelper.cjs +0 -19
- package/dist/cjs/columnHelper.cjs.map +0 -1
- package/dist/cjs/columnHelper.d.cts +0 -9
- package/dist/cjs/core/cell.cjs +0 -38
- package/dist/cjs/core/cell.cjs.map +0 -1
- package/dist/cjs/core/cell.d.cts +0 -50
- package/dist/cjs/core/column.cjs +0 -81
- package/dist/cjs/core/column.cjs.map +0 -1
- package/dist/cjs/core/column.d.cts +0 -56
- package/dist/cjs/core/headers.cjs +0 -310
- package/dist/cjs/core/headers.cjs.map +0 -1
- package/dist/cjs/core/headers.d.cts +0 -195
- package/dist/cjs/core/row.cjs +0 -93
- package/dist/cjs/core/row.cjs.map +0 -1
- package/dist/cjs/core/row.d.cts +0 -92
- package/dist/cjs/core/table.cjs +0 -228
- package/dist/cjs/core/table.cjs.map +0 -1
- package/dist/cjs/core/table.d.cts +0 -221
- package/dist/cjs/features/ColumnFaceting.cjs +0 -29
- package/dist/cjs/features/ColumnFaceting.cjs.map +0 -1
- package/dist/cjs/features/ColumnFaceting.d.cts +0 -35
- package/dist/cjs/features/ColumnFiltering.cjs +0 -137
- package/dist/cjs/features/ColumnFiltering.cjs.map +0 -1
- package/dist/cjs/features/ColumnFiltering.d.cts +0 -195
- package/dist/cjs/features/ColumnGrouping.cjs +0 -134
- package/dist/cjs/features/ColumnGrouping.cjs.map +0 -1
- package/dist/cjs/features/ColumnGrouping.d.cts +0 -202
- package/dist/cjs/features/ColumnOrdering.cjs +0 -76
- package/dist/cjs/features/ColumnOrdering.cjs.map +0 -1
- package/dist/cjs/features/ColumnPinning.cjs +0 -145
- package/dist/cjs/features/ColumnPinning.cjs.map +0 -1
- package/dist/cjs/features/ColumnPinning.d.cts +0 -127
- package/dist/cjs/features/ColumnSizing.cjs +0 -308
- package/dist/cjs/features/ColumnSizing.cjs.map +0 -1
- package/dist/cjs/features/ColumnSizing.d.cts +0 -194
- package/dist/cjs/features/ColumnVisibility.cjs +0 -144
- package/dist/cjs/features/ColumnVisibility.cjs.map +0 -1
- package/dist/cjs/features/ColumnVisibility.d.cts +0 -130
- package/dist/cjs/features/GlobalFaceting.cjs +0 -29
- package/dist/cjs/features/GlobalFaceting.cjs.map +0 -1
- package/dist/cjs/features/GlobalFaceting.d.cts +0 -27
- package/dist/cjs/features/GlobalFiltering.cjs +0 -50
- package/dist/cjs/features/GlobalFiltering.cjs.map +0 -1
- package/dist/cjs/features/GlobalFiltering.d.cts +0 -80
- package/dist/cjs/features/RowExpanding.cjs +0 -154
- package/dist/cjs/features/RowExpanding.cjs.map +0 -1
- package/dist/cjs/features/RowExpanding.d.cts +0 -155
- package/dist/cjs/features/RowPagination.cjs +0 -162
- package/dist/cjs/features/RowPagination.cjs.map +0 -1
- package/dist/cjs/features/RowPagination.d.cts +0 -166
- package/dist/cjs/features/RowPinning.cjs +0 -133
- package/dist/cjs/features/RowPinning.cjs.map +0 -1
- package/dist/cjs/features/RowPinning.d.cts +0 -99
- package/dist/cjs/features/RowSelection.cjs +0 -298
- package/dist/cjs/features/RowSelection.cjs.map +0 -1
- package/dist/cjs/features/RowSelection.d.cts +0 -177
- package/dist/cjs/features/RowSorting.cjs +0 -201
- package/dist/cjs/features/RowSorting.cjs.map +0 -1
- package/dist/cjs/features/RowSorting.d.cts +0 -238
- package/dist/cjs/filterFns.cjs +0 -88
- package/dist/cjs/filterFns.cjs.map +0 -1
- package/dist/cjs/filterFns.d.cts +0 -14
- package/dist/cjs/index.cjs +0 -87
- package/dist/cjs/index.cjs.map +0 -1
- package/dist/cjs/index.d.cts +0 -34
- package/dist/cjs/sortingFns.cjs +0 -91
- package/dist/cjs/sortingFns.cjs.map +0 -1
- package/dist/cjs/sortingFns.d.cts +0 -12
- package/dist/cjs/types.d.cts +0 -120
- package/dist/cjs/utils/filterRowsUtils.cjs +0 -99
- package/dist/cjs/utils/filterRowsUtils.cjs.map +0 -1
- package/dist/cjs/utils/filterRowsUtils.d.cts +0 -3
- package/dist/cjs/utils/getCoreRowModel.cjs +0 -54
- package/dist/cjs/utils/getCoreRowModel.cjs.map +0 -1
- package/dist/cjs/utils/getCoreRowModel.d.cts +0 -3
- package/dist/cjs/utils/getExpandedRowModel.cjs +0 -41
- package/dist/cjs/utils/getExpandedRowModel.cjs.map +0 -1
- package/dist/cjs/utils/getExpandedRowModel.d.cts +0 -8
- package/dist/cjs/utils/getFacetedMinMaxValues.cjs +0 -36
- package/dist/cjs/utils/getFacetedMinMaxValues.cjs.map +0 -1
- package/dist/cjs/utils/getFacetedMinMaxValues.d.cts +0 -3
- package/dist/cjs/utils/getFacetedRowModel.cjs +0 -35
- package/dist/cjs/utils/getFacetedRowModel.cjs.map +0 -1
- package/dist/cjs/utils/getFacetedRowModel.d.cts +0 -3
- package/dist/cjs/utils/getFacetedUniqueValues.cjs +0 -38
- package/dist/cjs/utils/getFacetedUniqueValues.cjs.map +0 -1
- package/dist/cjs/utils/getFacetedUniqueValues.d.cts +0 -3
- package/dist/cjs/utils/getFilteredRowModel.cjs +0 -116
- package/dist/cjs/utils/getFilteredRowModel.cjs.map +0 -1
- package/dist/cjs/utils/getFilteredRowModel.d.cts +0 -3
- package/dist/cjs/utils/getGroupedRowModel.cjs +0 -118
- package/dist/cjs/utils/getGroupedRowModel.cjs.map +0 -1
- package/dist/cjs/utils/getGroupedRowModel.d.cts +0 -3
- package/dist/cjs/utils/getPaginationRowModel.cjs +0 -49
- package/dist/cjs/utils/getPaginationRowModel.cjs.map +0 -1
- package/dist/cjs/utils/getPaginationRowModel.d.cts +0 -5
- package/dist/cjs/utils/getSortedRowModel.cjs +0 -91
- package/dist/cjs/utils/getSortedRowModel.cjs.map +0 -1
- package/dist/cjs/utils/getSortedRowModel.d.cts +0 -3
- package/dist/cjs/utils.cjs +0 -100
- package/dist/cjs/utils.cjs.map +0 -1
- package/dist/cjs/utils.d.cts +0 -39
- package/dist/esm/aggregationFns.d.ts +0 -14
- package/dist/esm/aggregationFns.js +0 -98
- package/dist/esm/aggregationFns.js.map +0 -1
- package/dist/esm/columnHelper.d.ts +0 -9
- package/dist/esm/columnHelper.js.map +0 -1
- package/dist/esm/core/cell.d.ts +0 -50
- package/dist/esm/core/cell.js +0 -38
- package/dist/esm/core/cell.js.map +0 -1
- package/dist/esm/core/column.d.ts +0 -56
- package/dist/esm/core/column.js +0 -81
- package/dist/esm/core/column.js.map +0 -1
- package/dist/esm/core/headers.d.ts +0 -195
- package/dist/esm/core/headers.js +0 -310
- package/dist/esm/core/headers.js.map +0 -1
- package/dist/esm/core/row.d.ts +0 -92
- package/dist/esm/core/row.js +0 -93
- package/dist/esm/core/row.js.map +0 -1
- package/dist/esm/core/table.d.ts +0 -221
- package/dist/esm/core/table.js +0 -228
- package/dist/esm/core/table.js.map +0 -1
- package/dist/esm/features/ColumnFaceting.d.ts +0 -35
- package/dist/esm/features/ColumnFaceting.js +0 -29
- package/dist/esm/features/ColumnFaceting.js.map +0 -1
- package/dist/esm/features/ColumnFiltering.d.ts +0 -195
- package/dist/esm/features/ColumnFiltering.js +0 -137
- package/dist/esm/features/ColumnFiltering.js.map +0 -1
- package/dist/esm/features/ColumnGrouping.d.ts +0 -202
- package/dist/esm/features/ColumnGrouping.js +0 -134
- package/dist/esm/features/ColumnGrouping.js.map +0 -1
- package/dist/esm/features/ColumnOrdering.d.ts +0 -54
- package/dist/esm/features/ColumnOrdering.js +0 -76
- package/dist/esm/features/ColumnOrdering.js.map +0 -1
- package/dist/esm/features/ColumnPinning.d.ts +0 -127
- package/dist/esm/features/ColumnPinning.js +0 -145
- package/dist/esm/features/ColumnPinning.js.map +0 -1
- package/dist/esm/features/ColumnSizing.d.ts +0 -194
- package/dist/esm/features/ColumnSizing.js +0 -308
- package/dist/esm/features/ColumnSizing.js.map +0 -1
- package/dist/esm/features/ColumnVisibility.d.ts +0 -130
- package/dist/esm/features/ColumnVisibility.js +0 -144
- package/dist/esm/features/ColumnVisibility.js.map +0 -1
- package/dist/esm/features/GlobalFaceting.d.ts +0 -27
- package/dist/esm/features/GlobalFaceting.js +0 -29
- package/dist/esm/features/GlobalFaceting.js.map +0 -1
- package/dist/esm/features/GlobalFiltering.d.ts +0 -80
- package/dist/esm/features/GlobalFiltering.js +0 -50
- package/dist/esm/features/GlobalFiltering.js.map +0 -1
- package/dist/esm/features/RowExpanding.d.ts +0 -155
- package/dist/esm/features/RowExpanding.js +0 -154
- package/dist/esm/features/RowExpanding.js.map +0 -1
- package/dist/esm/features/RowPagination.d.ts +0 -166
- package/dist/esm/features/RowPagination.js +0 -162
- package/dist/esm/features/RowPagination.js.map +0 -1
- package/dist/esm/features/RowPinning.d.ts +0 -99
- package/dist/esm/features/RowPinning.js +0 -133
- package/dist/esm/features/RowPinning.js.map +0 -1
- package/dist/esm/features/RowSelection.d.ts +0 -177
- package/dist/esm/features/RowSelection.js +0 -298
- package/dist/esm/features/RowSelection.js.map +0 -1
- package/dist/esm/features/RowSorting.d.ts +0 -238
- package/dist/esm/features/RowSorting.js +0 -201
- package/dist/esm/features/RowSorting.js.map +0 -1
- package/dist/esm/filterFns.d.ts +0 -14
- package/dist/esm/filterFns.js +0 -88
- package/dist/esm/filterFns.js.map +0 -1
- package/dist/esm/sortingFns.d.ts +0 -12
- package/dist/esm/sortingFns.js.map +0 -1
- package/dist/esm/types.d.ts +0 -120
- package/dist/esm/utils/filterRowsUtils.d.ts +0 -3
- package/dist/esm/utils/filterRowsUtils.js.map +0 -1
- package/dist/esm/utils/getCoreRowModel.d.ts +0 -3
- package/dist/esm/utils/getCoreRowModel.js +0 -54
- package/dist/esm/utils/getCoreRowModel.js.map +0 -1
- package/dist/esm/utils/getExpandedRowModel.d.ts +0 -8
- package/dist/esm/utils/getExpandedRowModel.js +0 -41
- package/dist/esm/utils/getExpandedRowModel.js.map +0 -1
- package/dist/esm/utils/getFacetedMinMaxValues.d.ts +0 -3
- package/dist/esm/utils/getFacetedMinMaxValues.js +0 -36
- package/dist/esm/utils/getFacetedMinMaxValues.js.map +0 -1
- package/dist/esm/utils/getFacetedRowModel.d.ts +0 -3
- package/dist/esm/utils/getFacetedRowModel.js +0 -35
- package/dist/esm/utils/getFacetedRowModel.js.map +0 -1
- package/dist/esm/utils/getFacetedUniqueValues.d.ts +0 -3
- package/dist/esm/utils/getFacetedUniqueValues.js +0 -38
- package/dist/esm/utils/getFacetedUniqueValues.js.map +0 -1
- package/dist/esm/utils/getFilteredRowModel.d.ts +0 -3
- package/dist/esm/utils/getFilteredRowModel.js +0 -116
- package/dist/esm/utils/getFilteredRowModel.js.map +0 -1
- package/dist/esm/utils/getGroupedRowModel.d.ts +0 -3
- package/dist/esm/utils/getGroupedRowModel.js +0 -118
- package/dist/esm/utils/getGroupedRowModel.js.map +0 -1
- package/dist/esm/utils/getPaginationRowModel.d.ts +0 -5
- package/dist/esm/utils/getPaginationRowModel.js +0 -49
- package/dist/esm/utils/getPaginationRowModel.js.map +0 -1
- package/dist/esm/utils/getSortedRowModel.d.ts +0 -3
- package/dist/esm/utils/getSortedRowModel.js +0 -91
- package/dist/esm/utils/getSortedRowModel.js.map +0 -1
- package/src/aggregationFns.ts +0 -123
- package/src/columnHelper.ts +0 -91
- package/src/core/cell.ts +0 -91
- package/src/core/column.ts +0 -165
- package/src/core/headers.ts +0 -639
- package/src/core/row.ts +0 -201
- package/src/core/table.ts +0 -527
- package/src/features/ColumnFaceting.ts +0 -84
- package/src/features/ColumnFiltering.ts +0 -429
- package/src/features/ColumnGrouping.ts +0 -422
- package/src/features/ColumnOrdering.ts +0 -161
- package/src/features/ColumnPinning.ts +0 -336
- package/src/features/ColumnSizing.ts +0 -579
- package/src/features/ColumnVisibility.ts +0 -317
- package/src/features/GlobalFaceting.ts +0 -66
- package/src/features/GlobalFiltering.ts +0 -162
- package/src/features/RowExpanding.ts +0 -355
- package/src/features/RowPagination.ts +0 -396
- package/src/features/RowPinning.ts +0 -273
- package/src/features/RowSelection.ts +0 -668
- package/src/features/RowSorting.ts +0 -542
- package/src/filterFns.ts +0 -150
- package/src/types.ts +0 -361
- package/src/utils/filterRowsUtils.ts +0 -130
- package/src/utils/getCoreRowModel.ts +0 -82
- package/src/utils/getExpandedRowModel.ts +0 -51
- package/src/utils/getFacetedMinMaxValues.ts +0 -42
- package/src/utils/getFacetedRowModel.ts +0 -44
- package/src/utils/getFacetedUniqueValues.ts +0 -42
- package/src/utils/getFilteredRowModel.ts +0 -151
- package/src/utils/getGroupedRowModel.ts +0 -181
- package/src/utils/getPaginationRowModel.ts +0 -60
- package/src/utils/getSortedRowModel.ts +0 -121
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import type { Derived, Store } from '@tanstack/store'
|
|
2
|
+
import type { CoreFeatures } from '../coreFeatures'
|
|
3
|
+
import type { RowModelFns } from '../../types/RowModelFns'
|
|
4
|
+
import type { RowData, Updater } from '../../types/type-utils'
|
|
5
|
+
import type { TableFeatures } from '../../types/TableFeatures'
|
|
6
|
+
import type { CachedRowModels, CreateRowModels_All } from '../../types/RowModel'
|
|
7
|
+
import type { TableOptions } from '../../types/TableOptions'
|
|
8
|
+
import type { TableState } from '../../types/TableState'
|
|
9
|
+
|
|
10
|
+
export interface TableMeta<
|
|
11
|
+
TFeatures extends TableFeatures,
|
|
12
|
+
TData extends RowData,
|
|
13
|
+
> {}
|
|
14
|
+
|
|
15
|
+
export interface TableOptions_Table<
|
|
16
|
+
TFeatures extends TableFeatures,
|
|
17
|
+
TData extends RowData,
|
|
18
|
+
> {
|
|
19
|
+
/**
|
|
20
|
+
* The features that you want to enable for the table.
|
|
21
|
+
*/
|
|
22
|
+
_features: TFeatures
|
|
23
|
+
/**
|
|
24
|
+
* The row model options that you want to enable for the table.
|
|
25
|
+
*/
|
|
26
|
+
_rowModels?: CreateRowModels_All<TFeatures, TData>
|
|
27
|
+
/**
|
|
28
|
+
* Set this option to override any of the `autoReset...` feature options.
|
|
29
|
+
*/
|
|
30
|
+
autoResetAll?: boolean
|
|
31
|
+
/**
|
|
32
|
+
* The data for the table to display. When the `data` option changes reference, the table will reprocess the data.
|
|
33
|
+
*/
|
|
34
|
+
data: Array<TData>
|
|
35
|
+
/**
|
|
36
|
+
* Use this option to optionally pass initial state to the table. This state will be used when resetting various table states either automatically by the table (eg. `options.autoResetPageIndex`) or via functions like `table.resetRowSelection()`. Most reset function allow you optionally pass a flag to reset to a blank/default state instead of the initial state.
|
|
37
|
+
* Table state will not be reset when this object changes, which also means that the initial state object does not need to be stable.
|
|
38
|
+
*/
|
|
39
|
+
initialState?: Partial<TableState<TFeatures>>
|
|
40
|
+
/**
|
|
41
|
+
* This option is used to optionally implement the merging of table options.
|
|
42
|
+
*/
|
|
43
|
+
mergeOptions?: (
|
|
44
|
+
defaultOptions: TableOptions<TFeatures, TData>,
|
|
45
|
+
options: Partial<TableOptions<TFeatures, TData>>,
|
|
46
|
+
) => TableOptions<TFeatures, TData>
|
|
47
|
+
/**
|
|
48
|
+
* You can pass any object to `options.meta` and access it anywhere the `table` is available via `table.options.meta`.
|
|
49
|
+
*/
|
|
50
|
+
meta?: TableMeta<TFeatures, TData>
|
|
51
|
+
/**
|
|
52
|
+
* Pass in individual self-managed state to the table.
|
|
53
|
+
*/
|
|
54
|
+
state?: Partial<TableState<TFeatures>>
|
|
55
|
+
/**
|
|
56
|
+
* Optionally, provide your own external TanStack Store instance if you want to manage the table state externally.
|
|
57
|
+
*/
|
|
58
|
+
store?: Store<TableState<TFeatures>>
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export interface Table_CoreProperties<
|
|
62
|
+
TFeatures extends TableFeatures,
|
|
63
|
+
TData extends RowData,
|
|
64
|
+
> {
|
|
65
|
+
/**
|
|
66
|
+
* The features that are enabled for the table.
|
|
67
|
+
*/
|
|
68
|
+
_features: Partial<CoreFeatures> & TFeatures
|
|
69
|
+
/**
|
|
70
|
+
* Prototype cache for Cell objects - shared by all cells in this table
|
|
71
|
+
*/
|
|
72
|
+
_cellPrototype?: object
|
|
73
|
+
/**
|
|
74
|
+
* Prototype cache for Column objects - shared by all columns in this table
|
|
75
|
+
*/
|
|
76
|
+
_columnPrototype?: object
|
|
77
|
+
/**
|
|
78
|
+
* Prototype cache for Header objects - shared by all headers in this table
|
|
79
|
+
*/
|
|
80
|
+
_headerPrototype?: object
|
|
81
|
+
/**
|
|
82
|
+
* The row model processing functions that are used to process the data by features.
|
|
83
|
+
*/
|
|
84
|
+
_rowModelFns: RowModelFns<TFeatures, TData>
|
|
85
|
+
/**
|
|
86
|
+
* The row models that are enabled for the table.
|
|
87
|
+
*/
|
|
88
|
+
_rowModels: CachedRowModels<TFeatures, TData>
|
|
89
|
+
/**
|
|
90
|
+
* Prototype cache for Row objects - shared by all rows in this table
|
|
91
|
+
*/
|
|
92
|
+
_rowPrototype?: object
|
|
93
|
+
/**
|
|
94
|
+
* The base store for the table. This can be used to write to the table state.
|
|
95
|
+
*/
|
|
96
|
+
baseStore: Store<TableState<TFeatures>>
|
|
97
|
+
/**
|
|
98
|
+
* This is the resolved initial state of the table.
|
|
99
|
+
*/
|
|
100
|
+
initialState: TableState<TFeatures>
|
|
101
|
+
/**
|
|
102
|
+
* A read-only reference to the table's current options.
|
|
103
|
+
*/
|
|
104
|
+
options: TableOptions<TFeatures, TData>
|
|
105
|
+
/**
|
|
106
|
+
* Where the table state is stored.
|
|
107
|
+
*/
|
|
108
|
+
store: Derived<TableState<TFeatures>, [Store<TableState<TFeatures>>]>
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export interface Table_Table<
|
|
112
|
+
TFeatures extends TableFeatures,
|
|
113
|
+
TData extends RowData,
|
|
114
|
+
> extends Table_CoreProperties<TFeatures, TData> {
|
|
115
|
+
/**
|
|
116
|
+
* Call this function to reset the table state to the initial state.
|
|
117
|
+
*/
|
|
118
|
+
reset: () => void
|
|
119
|
+
/**
|
|
120
|
+
* This function can be used to update the table options.
|
|
121
|
+
*/
|
|
122
|
+
setOptions: (newOptions: Updater<TableOptions<TFeatures, TData>>) => void
|
|
123
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { functionalUpdate } from '../../utils'
|
|
2
|
+
import type { RowData, Updater } from '../../types/type-utils'
|
|
3
|
+
import type { TableFeatures } from '../../types/TableFeatures'
|
|
4
|
+
import type { Table_Internal } from '../../types/Table'
|
|
5
|
+
import type { TableOptions } from '../../types/TableOptions'
|
|
6
|
+
|
|
7
|
+
export function table_reset<
|
|
8
|
+
TFeatures extends TableFeatures,
|
|
9
|
+
TData extends RowData,
|
|
10
|
+
>(table: Table_Internal<TFeatures, TData>): void {
|
|
11
|
+
table.baseStore.setState(structuredClone(table.initialState))
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function table_mergeOptions<
|
|
15
|
+
TFeatures extends TableFeatures,
|
|
16
|
+
TData extends RowData,
|
|
17
|
+
>(
|
|
18
|
+
table: Table_Internal<TFeatures, TData>,
|
|
19
|
+
newOptions: TableOptions<TFeatures, TData>,
|
|
20
|
+
) {
|
|
21
|
+
if (table.options.mergeOptions) {
|
|
22
|
+
return table.options.mergeOptions(table.options, newOptions)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
return {
|
|
26
|
+
...table.options,
|
|
27
|
+
...newOptions,
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export function table_setOptions<
|
|
32
|
+
TFeatures extends TableFeatures,
|
|
33
|
+
TData extends RowData,
|
|
34
|
+
>(
|
|
35
|
+
table: Table_Internal<TFeatures, TData>,
|
|
36
|
+
updater: Updater<TableOptions<TFeatures, TData>>,
|
|
37
|
+
): void {
|
|
38
|
+
const newOptions = functionalUpdate(updater, table.options)
|
|
39
|
+
table.options = table_mergeOptions(table, newOptions)
|
|
40
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import {
|
|
2
|
+
assignPrototypeAPIs,
|
|
3
|
+
assignTableAPIs,
|
|
4
|
+
callMemoOrStaticFn,
|
|
5
|
+
} from '../../utils'
|
|
6
|
+
import {
|
|
7
|
+
column_getFacetedMinMaxValues,
|
|
8
|
+
column_getFacetedRowModel,
|
|
9
|
+
column_getFacetedUniqueValues,
|
|
10
|
+
table_getGlobalFacetedMinMaxValues,
|
|
11
|
+
table_getGlobalFacetedRowModel,
|
|
12
|
+
table_getGlobalFacetedUniqueValues,
|
|
13
|
+
} from './columnFacetingFeature.utils'
|
|
14
|
+
import type { RowData } from '../../types/type-utils'
|
|
15
|
+
import type { TableFeature, TableFeatures } from '../../types/TableFeatures'
|
|
16
|
+
import type { Column_Internal } from '../../types/Column'
|
|
17
|
+
// import type {
|
|
18
|
+
// CachedRowModel_Faceted,
|
|
19
|
+
// Column_ColumnFaceting,
|
|
20
|
+
// CreateRowModel_Faceted,
|
|
21
|
+
// } from './columnFacetingFeature.types'
|
|
22
|
+
|
|
23
|
+
interface ColumnFacetingFeatureConstructors<
|
|
24
|
+
TFeatures extends TableFeatures,
|
|
25
|
+
TData extends RowData,
|
|
26
|
+
> {
|
|
27
|
+
// CachedRowModel: CachedRowModel_Faceted<TFeatures, TData>
|
|
28
|
+
// Column: Column_ColumnFaceting<TFeatures, TData>
|
|
29
|
+
// CreateRowModels: CreateRowModel_Faceted<TFeatures, TData>
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export function constructColumnFacetingFeature<
|
|
33
|
+
TFeatures extends TableFeatures,
|
|
34
|
+
TData extends RowData,
|
|
35
|
+
>(): TableFeature<ColumnFacetingFeatureConstructors<TFeatures, TData>> {
|
|
36
|
+
return {
|
|
37
|
+
assignColumnPrototype: (prototype, table) => {
|
|
38
|
+
assignPrototypeAPIs('columnFacetingFeature', prototype, table, {
|
|
39
|
+
column_getFacetedRowModel: {
|
|
40
|
+
memoDeps: () => [
|
|
41
|
+
table.getPreFilteredRowModel().rows,
|
|
42
|
+
table.store.state.columnFilters,
|
|
43
|
+
table.store.state.globalFilter,
|
|
44
|
+
table.getFilteredRowModel().rows,
|
|
45
|
+
],
|
|
46
|
+
fn: (column) => column_getFacetedRowModel(column, column.table),
|
|
47
|
+
},
|
|
48
|
+
column_getFacetedMinMaxValues: {
|
|
49
|
+
memoDeps: (column: Column_Internal<TFeatures, TData>) => [
|
|
50
|
+
callMemoOrStaticFn(
|
|
51
|
+
column,
|
|
52
|
+
'getFacetedRowModel',
|
|
53
|
+
column_getFacetedRowModel,
|
|
54
|
+
column.table,
|
|
55
|
+
).flatRows,
|
|
56
|
+
],
|
|
57
|
+
fn: (column) => column_getFacetedMinMaxValues(column, column.table),
|
|
58
|
+
},
|
|
59
|
+
column_getFacetedUniqueValues: {
|
|
60
|
+
memoDeps: (column: Column_Internal<TFeatures, TData>) => [
|
|
61
|
+
callMemoOrStaticFn(
|
|
62
|
+
column,
|
|
63
|
+
'getFacetedRowModel',
|
|
64
|
+
column_getFacetedRowModel,
|
|
65
|
+
column.table,
|
|
66
|
+
).flatRows,
|
|
67
|
+
],
|
|
68
|
+
fn: (column) => column_getFacetedUniqueValues(column, column.table),
|
|
69
|
+
},
|
|
70
|
+
})
|
|
71
|
+
},
|
|
72
|
+
|
|
73
|
+
constructTableAPIs: (table) => {
|
|
74
|
+
assignTableAPIs('columnFacetingFeature', table, {
|
|
75
|
+
table_getGlobalFacetedRowModel: {
|
|
76
|
+
memoDeps: () => [
|
|
77
|
+
table.getPreFilteredRowModel().rows,
|
|
78
|
+
table.store.state.columnFilters,
|
|
79
|
+
table.store.state.globalFilter,
|
|
80
|
+
table.getFilteredRowModel().rows,
|
|
81
|
+
],
|
|
82
|
+
fn: () => table_getGlobalFacetedRowModel(table),
|
|
83
|
+
},
|
|
84
|
+
table_getGlobalFacetedMinMaxValues: {
|
|
85
|
+
memoDeps: () => [
|
|
86
|
+
callMemoOrStaticFn(
|
|
87
|
+
table,
|
|
88
|
+
'getGlobalFacetedRowModel',
|
|
89
|
+
table_getGlobalFacetedRowModel,
|
|
90
|
+
).flatRows,
|
|
91
|
+
],
|
|
92
|
+
fn: () => table_getGlobalFacetedMinMaxValues(table),
|
|
93
|
+
},
|
|
94
|
+
table_getGlobalFacetedUniqueValues: {
|
|
95
|
+
memoDeps: () => [
|
|
96
|
+
callMemoOrStaticFn(
|
|
97
|
+
table,
|
|
98
|
+
'getGlobalFacetedRowModel',
|
|
99
|
+
table_getGlobalFacetedRowModel,
|
|
100
|
+
).flatRows,
|
|
101
|
+
],
|
|
102
|
+
fn: () => table_getGlobalFacetedUniqueValues(table),
|
|
103
|
+
},
|
|
104
|
+
})
|
|
105
|
+
},
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* The Column Faceting feature adds column faceting APIs to the column objects.
|
|
111
|
+
*/
|
|
112
|
+
export const columnFacetingFeature = constructColumnFacetingFeature()
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import type { Table } from '../../types/Table'
|
|
2
|
+
import type { RowData } from '../../types/type-utils'
|
|
3
|
+
import type { TableFeatures } from '../../types/TableFeatures'
|
|
4
|
+
import type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'
|
|
5
|
+
|
|
6
|
+
export interface Column_ColumnFaceting<
|
|
7
|
+
TFeatures extends TableFeatures,
|
|
8
|
+
TData extends RowData,
|
|
9
|
+
> {
|
|
10
|
+
/**
|
|
11
|
+
* A function that **computes and returns** a min/max tuple derived from `column.getFacetedRowModel`. Useful for displaying faceted result values.
|
|
12
|
+
*/
|
|
13
|
+
getFacetedMinMaxValues: () => undefined | [number, number]
|
|
14
|
+
/**
|
|
15
|
+
* A function that **computes and returns** a row model with all other column filters applied, excluding its own filter. Useful for displaying faceted result counts.
|
|
16
|
+
*/
|
|
17
|
+
getFacetedRowModel: () => RowModel<TFeatures, TData>
|
|
18
|
+
/**
|
|
19
|
+
* Returns a `Map` of unique values and their occurrences derived from `column.getFacetedRowModel`. Useful for displaying faceted result values.
|
|
20
|
+
*/
|
|
21
|
+
getFacetedUniqueValues: () => Map<any, number>
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface Table_RowModels_Faceted<
|
|
25
|
+
TFeatures extends TableFeatures,
|
|
26
|
+
TData extends RowData,
|
|
27
|
+
> {
|
|
28
|
+
/**
|
|
29
|
+
* A function that **computes and returns** a min/max tuple derived from `column.getFacetedRowModel`. Useful for displaying faceted result values.
|
|
30
|
+
* > ⚠️ Requires that you pass a valid `getFacetedMinMaxValues` function to `options.getFacetedMinMaxValues`. A default implementation is provided via the exported `getFacetedMinMaxValues` function.
|
|
31
|
+
*/
|
|
32
|
+
getFacetedMinMaxValues: () => undefined | [number, number]
|
|
33
|
+
/**
|
|
34
|
+
* Returns the row model with all other column filters applied, excluding its own filter. Useful for displaying faceted result counts.
|
|
35
|
+
* > ⚠️ Requires that you pass a valid `getFacetedRowModel` function to `options.facetedRowModel`. A default implementation is provided via the exported `getFacetedRowModel` function.
|
|
36
|
+
*/
|
|
37
|
+
getFacetedRowModel: () => RowModel<TFeatures, TData>
|
|
38
|
+
/**
|
|
39
|
+
* A function that **computes and returns** a `Map` of unique values and their occurrences derived from `column.getFacetedRowModel`. Useful for displaying faceted result values.
|
|
40
|
+
* > ⚠️ Requires that you pass a valid `getFacetedUniqueValues` function to `options.getFacetedUniqueValues`. A default implementation is provided via the exported `getFacetedUniqueValues` function.
|
|
41
|
+
*/
|
|
42
|
+
getFacetedUniqueValues: () => Map<any, number>
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export interface CreateRowModel_Faceted<
|
|
46
|
+
TFeatures extends TableFeatures,
|
|
47
|
+
TData extends RowData,
|
|
48
|
+
> {
|
|
49
|
+
/**
|
|
50
|
+
* This function is used to retrieve the faceted min/max values. If using server-side faceting, this function is not required. To use client-side faceting, pass the exported `getFacetedMinMaxValues()` from your adapter to your table or implement your own.
|
|
51
|
+
*/
|
|
52
|
+
facetedMinMaxValues?: (
|
|
53
|
+
table: Table<TFeatures, TData>,
|
|
54
|
+
columnId: string,
|
|
55
|
+
) => () => [number, number] | undefined
|
|
56
|
+
/**
|
|
57
|
+
* This function is used to retrieve the faceted row model. If using server-side faceting, this function is not required. To use client-side faceting, pass the exported `getFacetedRowModel()` from your adapter to your table or implement your own.
|
|
58
|
+
*/
|
|
59
|
+
facetedRowModel?: (
|
|
60
|
+
table: Table<TFeatures, TData>,
|
|
61
|
+
columnId: string,
|
|
62
|
+
) => () => RowModel<TFeatures, TData>
|
|
63
|
+
/**
|
|
64
|
+
* This function is used to retrieve the faceted unique values. If using server-side faceting, this function is not required. To use client-side faceting, pass the exported `getFacetedUniqueValues()` from your adapter to your table or implement your own.
|
|
65
|
+
*/
|
|
66
|
+
facetedUniqueValues?: (
|
|
67
|
+
table: Table<TFeatures, TData>,
|
|
68
|
+
columnId: string,
|
|
69
|
+
) => () => Map<any, number>
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export interface CachedRowModel_Faceted<
|
|
73
|
+
TFeatures extends TableFeatures,
|
|
74
|
+
TData extends RowData,
|
|
75
|
+
> {
|
|
76
|
+
facetedRowModel?: (columnId: string) => () => RowModel<TFeatures, TData>
|
|
77
|
+
facetedMinMaxValues?: (columnId: string) => [number, number]
|
|
78
|
+
facetedUniqueValues?: (columnId: string) => Map<any, number>
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export interface Table_ColumnFaceting<
|
|
82
|
+
TFeatures extends TableFeatures,
|
|
83
|
+
TData extends RowData,
|
|
84
|
+
> {
|
|
85
|
+
/**
|
|
86
|
+
* Returns the min and max values for the global filter.
|
|
87
|
+
*/
|
|
88
|
+
getGlobalFacetedMinMaxValues: () => undefined | [number, number]
|
|
89
|
+
/**
|
|
90
|
+
* Returns the row model for the table after **global** filtering has been applied.
|
|
91
|
+
*/
|
|
92
|
+
getGlobalFacetedRowModel: () => RowModel<TFeatures, TData>
|
|
93
|
+
/**
|
|
94
|
+
* Returns the faceted unique values for the global filter.
|
|
95
|
+
*/
|
|
96
|
+
getGlobalFacetedUniqueValues: () => Map<any, number>
|
|
97
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { CellData, RowData } from '../../types/type-utils'
|
|
2
|
+
import type { TableFeatures } from '../../types/TableFeatures'
|
|
3
|
+
import type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'
|
|
4
|
+
import type { Table_Internal } from '../../types/Table'
|
|
5
|
+
import type { Column_Internal } from '../../types/Column'
|
|
6
|
+
|
|
7
|
+
export function column_getFacetedMinMaxValues<
|
|
8
|
+
TFeatures extends TableFeatures,
|
|
9
|
+
TData extends RowData,
|
|
10
|
+
TValue extends CellData = CellData,
|
|
11
|
+
>(
|
|
12
|
+
column: Column_Internal<TFeatures, TData, TValue>,
|
|
13
|
+
table: Table_Internal<TFeatures, TData>,
|
|
14
|
+
): [number, number] | undefined {
|
|
15
|
+
const facetedMinMaxValuesFn =
|
|
16
|
+
table.options._rowModels?.facetedMinMaxValues?.(table, column.id) ??
|
|
17
|
+
(() => undefined)
|
|
18
|
+
return facetedMinMaxValuesFn()
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function column_getFacetedRowModel<
|
|
22
|
+
TFeatures extends TableFeatures,
|
|
23
|
+
TData extends RowData,
|
|
24
|
+
TValue extends CellData = CellData,
|
|
25
|
+
>(
|
|
26
|
+
column: Column_Internal<TFeatures, TData, TValue> | undefined,
|
|
27
|
+
table: Table_Internal<TFeatures, TData>,
|
|
28
|
+
): RowModel<TFeatures, TData> {
|
|
29
|
+
const facetedRowModelFn =
|
|
30
|
+
table.options._rowModels?.facetedRowModel?.(table, column?.id ?? '') ??
|
|
31
|
+
(() => table.getPreFilteredRowModel())
|
|
32
|
+
return facetedRowModelFn()
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export function column_getFacetedUniqueValues<
|
|
36
|
+
TFeatures extends TableFeatures,
|
|
37
|
+
TData extends RowData,
|
|
38
|
+
TValue extends CellData = CellData,
|
|
39
|
+
>(
|
|
40
|
+
column: Column_Internal<TFeatures, TData, TValue>,
|
|
41
|
+
table: Table_Internal<TFeatures, TData>,
|
|
42
|
+
): Map<any, number> {
|
|
43
|
+
const facetedUniqueValuesFn =
|
|
44
|
+
table.options._rowModels?.facetedUniqueValues?.(table, column.id) ??
|
|
45
|
+
(() => new Map<any, number>())
|
|
46
|
+
return facetedUniqueValuesFn()
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export function table_getGlobalFacetedMinMaxValues<
|
|
50
|
+
TFeatures extends TableFeatures,
|
|
51
|
+
TData extends RowData,
|
|
52
|
+
>(table: Table_Internal<TFeatures, TData>): undefined | [number, number] {
|
|
53
|
+
const facetedMinMaxValuesFn =
|
|
54
|
+
table.options._rowModels?.facetedMinMaxValues?.(table, '__global__') ??
|
|
55
|
+
(() => undefined)
|
|
56
|
+
return facetedMinMaxValuesFn()
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export function table_getGlobalFacetedRowModel<
|
|
60
|
+
TFeatures extends TableFeatures,
|
|
61
|
+
TData extends RowData,
|
|
62
|
+
>(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {
|
|
63
|
+
const facetedRowModelFn =
|
|
64
|
+
table.options._rowModels?.facetedRowModel?.(table, '__global__') ??
|
|
65
|
+
(() => table.getPreFilteredRowModel())
|
|
66
|
+
return facetedRowModelFn()
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export function table_getGlobalFacetedUniqueValues<
|
|
70
|
+
TFeatures extends TableFeatures,
|
|
71
|
+
TData extends RowData,
|
|
72
|
+
>(table: Table_Internal<TFeatures, TData>): Map<any, number> {
|
|
73
|
+
const facetedUniqueValuesFn =
|
|
74
|
+
table.options._rowModels?.facetedUniqueValues?.(table, '__global__') ??
|
|
75
|
+
(() => new Map())
|
|
76
|
+
return facetedUniqueValuesFn()
|
|
77
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { callMemoOrStaticFn, tableMemo } from '../../utils'
|
|
2
|
+
import { column_getFacetedRowModel } from './columnFacetingFeature.utils'
|
|
3
|
+
import type { Row } from '../../types/Row'
|
|
4
|
+
import type { Table, Table_Internal } from '../../types/Table'
|
|
5
|
+
import type { TableFeatures } from '../../types/TableFeatures'
|
|
6
|
+
import type { RowData } from '../../types/type-utils'
|
|
7
|
+
|
|
8
|
+
export function createFacetedMinMaxValues<
|
|
9
|
+
TFeatures extends TableFeatures,
|
|
10
|
+
TData extends RowData = any,
|
|
11
|
+
>(): (
|
|
12
|
+
table: Table<TFeatures, TData>,
|
|
13
|
+
columnId: string,
|
|
14
|
+
) => () => undefined | [number, number] {
|
|
15
|
+
return (_table, columnId) => {
|
|
16
|
+
const table = _table as Table_Internal<TFeatures, TData>
|
|
17
|
+
return tableMemo({
|
|
18
|
+
feature: 'columnFacetingFeature',
|
|
19
|
+
fn: (flatRows) => _createFacetedMinMaxValues(columnId, flatRows),
|
|
20
|
+
fnName: 'table.getFacetedMinMaxValues',
|
|
21
|
+
memoDeps: () => {
|
|
22
|
+
const column = table.getColumn(columnId)
|
|
23
|
+
if (!column) return [table.getPreFilteredRowModel().flatRows]
|
|
24
|
+
return [
|
|
25
|
+
callMemoOrStaticFn(
|
|
26
|
+
column,
|
|
27
|
+
'getFacetedRowModel',
|
|
28
|
+
column_getFacetedRowModel,
|
|
29
|
+
table,
|
|
30
|
+
).flatRows,
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
table,
|
|
34
|
+
})
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function _createFacetedMinMaxValues<
|
|
39
|
+
TFeatures extends TableFeatures,
|
|
40
|
+
TData extends RowData = any,
|
|
41
|
+
>(
|
|
42
|
+
columnId: string,
|
|
43
|
+
flatRows: Array<Row<TFeatures, TData>>,
|
|
44
|
+
): undefined | [number, number] {
|
|
45
|
+
if (!flatRows.length) return undefined
|
|
46
|
+
|
|
47
|
+
const numericValues = flatRows
|
|
48
|
+
.map((flatRow) => flatRow.getValue(columnId))
|
|
49
|
+
.map(Number)
|
|
50
|
+
.filter((value) => !Number.isNaN(value))
|
|
51
|
+
|
|
52
|
+
if (!numericValues.length) return undefined
|
|
53
|
+
|
|
54
|
+
let facetedMinValue = numericValues[0]!
|
|
55
|
+
let facetedMaxValue = numericValues[0]!
|
|
56
|
+
|
|
57
|
+
for (const value of numericValues) {
|
|
58
|
+
if (value < facetedMinValue) facetedMinValue = value
|
|
59
|
+
if (value > facetedMaxValue) facetedMaxValue = value
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return [facetedMinValue, facetedMaxValue]
|
|
63
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { tableMemo } from '../../utils'
|
|
2
|
+
import { filterRows } from '../column-filtering/filterRowsUtils'
|
|
3
|
+
import type { Table, Table_Internal } from '../../types/Table'
|
|
4
|
+
import type {
|
|
5
|
+
ColumnFiltersState,
|
|
6
|
+
Row_ColumnFiltering,
|
|
7
|
+
} from '../column-filtering/columnFilteringFeature.types'
|
|
8
|
+
import type { TableFeatures } from '../../types/TableFeatures'
|
|
9
|
+
import type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'
|
|
10
|
+
import type { Row } from '../../types/Row'
|
|
11
|
+
import type { RowData } from '../../types/type-utils'
|
|
12
|
+
|
|
13
|
+
export function createFacetedRowModel<
|
|
14
|
+
TFeatures extends TableFeatures,
|
|
15
|
+
TData extends RowData = any,
|
|
16
|
+
>(): (
|
|
17
|
+
table: Table<TFeatures, TData>,
|
|
18
|
+
columnId: string,
|
|
19
|
+
) => () => RowModel<TFeatures, TData> {
|
|
20
|
+
return (_table, columnId) => {
|
|
21
|
+
const table = _table as Table_Internal<TFeatures, TData>
|
|
22
|
+
return tableMemo({
|
|
23
|
+
feature: 'columnFacetingFeature',
|
|
24
|
+
table,
|
|
25
|
+
fnName: 'createFacetedRowModel',
|
|
26
|
+
memoDeps: () => [
|
|
27
|
+
table.getPreFilteredRowModel(),
|
|
28
|
+
table.store.state.columnFilters,
|
|
29
|
+
table.store.state.globalFilter,
|
|
30
|
+
table.getFilteredRowModel(),
|
|
31
|
+
],
|
|
32
|
+
fn: (preRowModel, columnFilters, globalFilter) =>
|
|
33
|
+
_createFacetedRowModel(
|
|
34
|
+
table,
|
|
35
|
+
columnId,
|
|
36
|
+
preRowModel,
|
|
37
|
+
columnFilters,
|
|
38
|
+
globalFilter,
|
|
39
|
+
),
|
|
40
|
+
})
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function _createFacetedRowModel<
|
|
45
|
+
TFeatures extends TableFeatures,
|
|
46
|
+
TData extends RowData = any,
|
|
47
|
+
>(
|
|
48
|
+
table: Table_Internal<TFeatures, TData>,
|
|
49
|
+
columnId: string,
|
|
50
|
+
preRowModel: RowModel<TFeatures, TData>,
|
|
51
|
+
columnFilters?: ColumnFiltersState,
|
|
52
|
+
globalFilter?: string,
|
|
53
|
+
) {
|
|
54
|
+
if (!preRowModel.rows.length || (!columnFilters?.length && !globalFilter)) {
|
|
55
|
+
return preRowModel
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const filterableIds = [
|
|
59
|
+
...(columnFilters?.map((d) => d.id).filter((d) => d !== columnId) ?? []),
|
|
60
|
+
globalFilter ? '__global__' : undefined,
|
|
61
|
+
].filter(Boolean) as Array<string>
|
|
62
|
+
|
|
63
|
+
const filterRowsImpl = (
|
|
64
|
+
row: Row<TFeatures, TData> & Partial<Row_ColumnFiltering<TFeatures, TData>>,
|
|
65
|
+
) => {
|
|
66
|
+
// Horizontally filter rows through each column
|
|
67
|
+
for (const colId of filterableIds) {
|
|
68
|
+
if (row.columnFilters?.[colId] === false) {
|
|
69
|
+
return false
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return true
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return filterRows(preRowModel.rows, filterRowsImpl, table)
|
|
76
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { callMemoOrStaticFn, tableMemo } from '../../utils'
|
|
2
|
+
import { column_getFacetedRowModel } from './columnFacetingFeature.utils'
|
|
3
|
+
import type { Row } from '../../types/Row'
|
|
4
|
+
import type { Table, Table_Internal } from '../../types/Table'
|
|
5
|
+
import type { TableFeatures } from '../../types/TableFeatures'
|
|
6
|
+
import type { RowData } from '../../types/type-utils'
|
|
7
|
+
|
|
8
|
+
export function createFacetedUniqueValues<
|
|
9
|
+
TFeatures extends TableFeatures,
|
|
10
|
+
TData extends RowData = any,
|
|
11
|
+
>(): (
|
|
12
|
+
table: Table<TFeatures, TData>,
|
|
13
|
+
columnId: string,
|
|
14
|
+
) => () => Map<any, number> {
|
|
15
|
+
return (_table, columnId) => {
|
|
16
|
+
const table = _table as Table_Internal<TFeatures, TData>
|
|
17
|
+
return tableMemo({
|
|
18
|
+
feature: 'columnFacetingFeature',
|
|
19
|
+
table,
|
|
20
|
+
fnName: 'table.getFacetedUniqueValues',
|
|
21
|
+
memoDeps: () => {
|
|
22
|
+
const column = table.getColumn(columnId)
|
|
23
|
+
if (!column) return [table.getPreFilteredRowModel().flatRows]
|
|
24
|
+
return [
|
|
25
|
+
callMemoOrStaticFn(
|
|
26
|
+
column,
|
|
27
|
+
'getFacetedRowModel',
|
|
28
|
+
column_getFacetedRowModel,
|
|
29
|
+
table,
|
|
30
|
+
).flatRows,
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
fn: (flatRows) => _createFacetedUniqueValues(columnId, flatRows),
|
|
34
|
+
})
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function _createFacetedUniqueValues<
|
|
39
|
+
TFeatures extends TableFeatures,
|
|
40
|
+
TData extends RowData = any,
|
|
41
|
+
>(columnId: string, flatRows: Array<Row<TFeatures, TData>>): Map<any, number> {
|
|
42
|
+
const facetedUniqueValues = new Map<any, number>()
|
|
43
|
+
|
|
44
|
+
for (const row of flatRows) {
|
|
45
|
+
const values = row.getUniqueValues(columnId)
|
|
46
|
+
|
|
47
|
+
for (const value of values) {
|
|
48
|
+
if (facetedUniqueValues.has(value)) {
|
|
49
|
+
facetedUniqueValues.set(
|
|
50
|
+
value,
|
|
51
|
+
(facetedUniqueValues.get(value) ?? 0) + 1,
|
|
52
|
+
)
|
|
53
|
+
} else {
|
|
54
|
+
facetedUniqueValues.set(value, 1)
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return facetedUniqueValues
|
|
60
|
+
}
|