@tanstack/table-core 9.0.0-alpha.10 → 9.0.0-alpha.12
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 +62 -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 -66
- 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 -50
- 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 +89 -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 -164
- package/dist/cjs/aggregationFns.cjs +0 -94
- 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 -92
- 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 -232
- package/dist/cjs/core/table.cjs.map +0 -1
- package/dist/cjs/core/table.d.cts +0 -229
- 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 -133
- 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 -307
- 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 -152
- 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 -161
- 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 -132
- 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 -296
- 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 -200
- 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 -88
- 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 -35
- 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 -37
- 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 -88
- package/dist/cjs/utils/getSortedRowModel.cjs.map +0 -1
- package/dist/cjs/utils/getSortedRowModel.d.cts +0 -3
- package/dist/cjs/utils.cjs +0 -98
- 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 -94
- 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 -92
- package/dist/esm/core/row.js.map +0 -1
- package/dist/esm/core/table.d.ts +0 -229
- package/dist/esm/core/table.js +0 -232
- 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 -133
- 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 -307
- 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 -152
- 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 -161
- 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 -132
- 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 -296
- 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 -200
- 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 -35
- 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 -37
- 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 -88
- 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 -563
- 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 -277
- 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,69 @@
|
|
|
1
|
+
import { assignTableAPIs, assignPrototypeAPIs, makeStateUpdater } from "../../utils.js";
|
|
2
|
+
import { table_resetColumnFilters, table_setColumnFilters, column_setFilterValue, column_getFilterIndex, column_getFilterValue, column_getIsFiltered, column_getCanFilter, column_getFilterFn, column_getAutoFilterFn, getDefaultColumnFiltersState } from "./columnFilteringFeature.utils.js";
|
|
3
|
+
function constructColumnFilteringFeature() {
|
|
4
|
+
return {
|
|
5
|
+
getInitialState: (initialState) => {
|
|
6
|
+
return {
|
|
7
|
+
columnFilters: getDefaultColumnFiltersState(),
|
|
8
|
+
...initialState
|
|
9
|
+
};
|
|
10
|
+
},
|
|
11
|
+
getDefaultColumnDef: () => {
|
|
12
|
+
return {
|
|
13
|
+
filterFn: "auto"
|
|
14
|
+
};
|
|
15
|
+
},
|
|
16
|
+
getDefaultTableOptions: (table) => {
|
|
17
|
+
return {
|
|
18
|
+
onColumnFiltersChange: makeStateUpdater("columnFilters", table),
|
|
19
|
+
filterFromLeafRows: false,
|
|
20
|
+
maxLeafRowFilterDepth: 100
|
|
21
|
+
};
|
|
22
|
+
},
|
|
23
|
+
assignColumnPrototype: (prototype, table) => {
|
|
24
|
+
assignPrototypeAPIs("columnFilteringFeature", prototype, table, {
|
|
25
|
+
column_getAutoFilterFn: {
|
|
26
|
+
fn: (column) => column_getAutoFilterFn(column)
|
|
27
|
+
},
|
|
28
|
+
column_getFilterFn: {
|
|
29
|
+
fn: (column) => column_getFilterFn(column)
|
|
30
|
+
},
|
|
31
|
+
column_getCanFilter: {
|
|
32
|
+
fn: (column) => column_getCanFilter(column)
|
|
33
|
+
},
|
|
34
|
+
column_getIsFiltered: {
|
|
35
|
+
fn: (column) => column_getIsFiltered(column)
|
|
36
|
+
},
|
|
37
|
+
column_getFilterValue: {
|
|
38
|
+
fn: (column) => column_getFilterValue(column)
|
|
39
|
+
},
|
|
40
|
+
column_getFilterIndex: {
|
|
41
|
+
fn: (column) => column_getFilterIndex(column)
|
|
42
|
+
},
|
|
43
|
+
column_setFilterValue: {
|
|
44
|
+
fn: (column, value) => column_setFilterValue(column, value)
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
},
|
|
48
|
+
initRowInstanceData: (row) => {
|
|
49
|
+
row.columnFilters = {};
|
|
50
|
+
row.columnFiltersMeta = {};
|
|
51
|
+
},
|
|
52
|
+
constructTableAPIs: (table) => {
|
|
53
|
+
assignTableAPIs("columnFilteringFeature", table, {
|
|
54
|
+
table_setColumnFilters: {
|
|
55
|
+
fn: (updater) => table_setColumnFilters(table, updater)
|
|
56
|
+
},
|
|
57
|
+
table_resetColumnFilters: {
|
|
58
|
+
fn: (defaultState) => table_resetColumnFilters(table, defaultState)
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
const columnFilteringFeature = constructColumnFilteringFeature();
|
|
65
|
+
export {
|
|
66
|
+
columnFilteringFeature,
|
|
67
|
+
constructColumnFilteringFeature
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=columnFilteringFeature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"columnFilteringFeature.js","sources":["../../../../src/features/column-filtering/columnFilteringFeature.ts"],"sourcesContent":["import {\n assignPrototypeAPIs,\n assignTableAPIs,\n makeStateUpdater,\n} from '../../utils'\nimport {\n column_getAutoFilterFn,\n column_getCanFilter,\n column_getFilterFn,\n column_getFilterIndex,\n column_getFilterValue,\n column_getIsFiltered,\n column_setFilterValue,\n getDefaultColumnFiltersState,\n table_resetColumnFilters,\n table_setColumnFilters,\n} from './columnFilteringFeature.utils'\nimport type { RowData } from '../../types/type-utils'\nimport type { TableFeature, TableFeatures } from '../../types/TableFeatures'\n// import type {\n// CachedRowModel_Filtered,\n// ColumnDef_ColumnFiltering,\n// Column_ColumnFiltering,\n// CreateRowModel_Filtered,\n// RowModelFns_ColumnFiltering,\n// Row_ColumnFiltering,\n// TableOptions_ColumnFiltering,\n// TableState_ColumnFiltering,\n// Table_ColumnFiltering,\n// } from './columnFilteringFeature.types'\n\ninterface ColumnFilteringFeatureConstructors<\n TFeatures extends TableFeatures,\n TData extends RowData,\n> {\n // CachedRowModel: CachedRowModel_Filtered<TFeatures, TData>\n // Column: Column_ColumnFiltering<TFeatures, TData>\n // ColumnDef: ColumnDef_ColumnFiltering<TFeatures, TData>\n // CreateRowModels: CreateRowModel_Filtered<TFeatures, TData>\n // Row: Row_ColumnFiltering<TFeatures, TData>\n // RowModelFns: RowModelFns_ColumnFiltering<TFeatures, TData>\n // Table: Table_ColumnFiltering<TFeatures, TData>\n // TableOptions: TableOptions_ColumnFiltering<TFeatures, TData>\n // TableState: TableState_ColumnFiltering\n}\n\nexport function constructColumnFilteringFeature<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(): TableFeature<ColumnFilteringFeatureConstructors<TFeatures, TData>> {\n return {\n getInitialState: (initialState) => {\n return {\n columnFilters: getDefaultColumnFiltersState(),\n ...initialState,\n }\n },\n\n getDefaultColumnDef: () => {\n return {\n filterFn: 'auto',\n }\n },\n\n getDefaultTableOptions: (table) => {\n return {\n onColumnFiltersChange: makeStateUpdater('columnFilters', table),\n filterFromLeafRows: false,\n maxLeafRowFilterDepth: 100,\n }\n },\n\n assignColumnPrototype: (prototype, table) => {\n assignPrototypeAPIs('columnFilteringFeature', prototype, table, {\n column_getAutoFilterFn: {\n fn: (column) => column_getAutoFilterFn(column),\n },\n column_getFilterFn: {\n fn: (column) => column_getFilterFn(column),\n },\n column_getCanFilter: {\n fn: (column) => column_getCanFilter(column),\n },\n column_getIsFiltered: {\n fn: (column) => column_getIsFiltered(column),\n },\n column_getFilterValue: {\n fn: (column) => column_getFilterValue(column),\n },\n column_getFilterIndex: {\n fn: (column) => column_getFilterIndex(column),\n },\n column_setFilterValue: {\n fn: (column, value) => column_setFilterValue(column, value),\n },\n })\n },\n\n initRowInstanceData: (row) => {\n ;(row as any).columnFilters = {}\n ;(row as any).columnFiltersMeta = {}\n },\n\n constructTableAPIs: (table) => {\n assignTableAPIs('columnFilteringFeature', table, {\n table_setColumnFilters: {\n fn: (updater) => table_setColumnFilters(table, updater),\n },\n table_resetColumnFilters: {\n fn: (defaultState) => table_resetColumnFilters(table, defaultState),\n },\n })\n },\n }\n}\n\n/**\n * The Column Filtering feature adds column filtering state and APIs to the table, row, and column objects.\n * **Note:** This does not include Global Filtering. The globalFilteringFeature feature has been split out into its own standalone feature.\n */\nexport const columnFilteringFeature = constructColumnFilteringFeature()\n"],"names":[],"mappings":";;AA8CO,SAAS,kCAGwD;AACtE,SAAO;AAAA,IACL,iBAAiB,CAAC,iBAAiB;AACjC,aAAO;AAAA,QACL,eAAe,6BAAA;AAAA,QACf,GAAG;AAAA,MAAA;AAAA,IAEP;AAAA,IAEA,qBAAqB,MAAM;AACzB,aAAO;AAAA,QACL,UAAU;AAAA,MAAA;AAAA,IAEd;AAAA,IAEA,wBAAwB,CAAC,UAAU;AACjC,aAAO;AAAA,QACL,uBAAuB,iBAAiB,iBAAiB,KAAK;AAAA,QAC9D,oBAAoB;AAAA,QACpB,uBAAuB;AAAA,MAAA;AAAA,IAE3B;AAAA,IAEA,uBAAuB,CAAC,WAAW,UAAU;AAC3C,0BAAoB,0BAA0B,WAAW,OAAO;AAAA,QAC9D,wBAAwB;AAAA,UACtB,IAAI,CAAC,WAAW,uBAAuB,MAAM;AAAA,QAAA;AAAA,QAE/C,oBAAoB;AAAA,UAClB,IAAI,CAAC,WAAW,mBAAmB,MAAM;AAAA,QAAA;AAAA,QAE3C,qBAAqB;AAAA,UACnB,IAAI,CAAC,WAAW,oBAAoB,MAAM;AAAA,QAAA;AAAA,QAE5C,sBAAsB;AAAA,UACpB,IAAI,CAAC,WAAW,qBAAqB,MAAM;AAAA,QAAA;AAAA,QAE7C,uBAAuB;AAAA,UACrB,IAAI,CAAC,WAAW,sBAAsB,MAAM;AAAA,QAAA;AAAA,QAE9C,uBAAuB;AAAA,UACrB,IAAI,CAAC,WAAW,sBAAsB,MAAM;AAAA,QAAA;AAAA,QAE9C,uBAAuB;AAAA,UACrB,IAAI,CAAC,QAAQ,UAAU,sBAAsB,QAAQ,KAAK;AAAA,QAAA;AAAA,MAC5D,CACD;AAAA,IACH;AAAA,IAEA,qBAAqB,CAAC,QAAQ;AAC1B,UAAY,gBAAgB,CAAA;AAC5B,UAAY,oBAAoB,CAAA;AAAA,IACpC;AAAA,IAEA,oBAAoB,CAAC,UAAU;AAC7B,sBAAgB,0BAA0B,OAAO;AAAA,QAC/C,wBAAwB;AAAA,UACtB,IAAI,CAAC,YAAY,uBAAuB,OAAO,OAAO;AAAA,QAAA;AAAA,QAExD,0BAA0B;AAAA,UACxB,IAAI,CAAC,iBAAiB,yBAAyB,OAAO,YAAY;AAAA,QAAA;AAAA,MACpE,CACD;AAAA,IACH;AAAA,EAAA;AAEJ;AAMO,MAAM,yBAAyB,gCAAA;"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { Table } from '../../types/Table.js';
|
|
2
|
+
import { BuiltInFilterFn } from '../../fns/filterFns.js';
|
|
3
|
+
import { CellData, OnChangeFn, RowData, Updater } from '../../types/type-utils.js';
|
|
4
|
+
import { TableFeatures } from '../../types/TableFeatures.js';
|
|
5
|
+
import { RowModel } from '../../core/row-models/coreRowModelsFeature.types';
|
|
6
|
+
import { Row } from '../../types/Row.js';
|
|
7
|
+
import { Column } from '../../types/Column.js';
|
|
8
|
+
export interface FilterMeta {
|
|
9
|
+
}
|
|
10
|
+
export interface FilterFns {
|
|
11
|
+
}
|
|
12
|
+
export interface TableState_ColumnFiltering {
|
|
13
|
+
columnFilters: ColumnFiltersState;
|
|
14
|
+
}
|
|
15
|
+
export type ColumnFiltersState = Array<ColumnFilter>;
|
|
16
|
+
export interface ColumnFilter {
|
|
17
|
+
id: string;
|
|
18
|
+
value: unknown;
|
|
19
|
+
}
|
|
20
|
+
export interface ResolvedColumnFilter<TFeatures extends TableFeatures, TData extends RowData> {
|
|
21
|
+
filterFn: FilterFn<TFeatures, TData>;
|
|
22
|
+
id: string;
|
|
23
|
+
resolvedValue: unknown;
|
|
24
|
+
}
|
|
25
|
+
export interface RowModelFns_ColumnFiltering<TFeatures extends TableFeatures, TData extends RowData> {
|
|
26
|
+
filterFns: Record<keyof FilterFns, FilterFn<TFeatures, TData>>;
|
|
27
|
+
}
|
|
28
|
+
export interface FilterFn<TFeatures extends TableFeatures, TData extends RowData> {
|
|
29
|
+
(row: Row<TFeatures, TData>, columnId: string, filterValue: any, addMeta?: (meta: FilterMeta) => void): boolean;
|
|
30
|
+
autoRemove?: ColumnFilterAutoRemoveTestFn<TFeatures, TData>;
|
|
31
|
+
resolveFilterValue?: TransformFilterValueFn<TFeatures, TData>;
|
|
32
|
+
}
|
|
33
|
+
export type TransformFilterValueFn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData> = (value: any, column?: Column<TFeatures, TData, TValue>) => TValue;
|
|
34
|
+
export type ColumnFilterAutoRemoveTestFn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData> = (value: any, column?: Column<TFeatures, TData, TValue>) => boolean;
|
|
35
|
+
export type CustomFilterFns<TFeatures extends TableFeatures, TData extends RowData> = Record<string, FilterFn<TFeatures, TData>>;
|
|
36
|
+
export type FilterFnOption<TFeatures extends TableFeatures, TData extends RowData> = 'auto' | BuiltInFilterFn | keyof FilterFns | FilterFn<TFeatures, TData>;
|
|
37
|
+
export interface ColumnDef_ColumnFiltering<TFeatures extends TableFeatures, TData extends RowData> {
|
|
38
|
+
/**
|
|
39
|
+
* Enables/disables the **column** filter for this column.
|
|
40
|
+
*/
|
|
41
|
+
enableColumnFilter?: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* The filter function to use with this column. Can be the name of a built-in filter function or a custom filter function.
|
|
44
|
+
*/
|
|
45
|
+
filterFn?: FilterFnOption<TFeatures, TData>;
|
|
46
|
+
}
|
|
47
|
+
export interface Column_ColumnFiltering<TFeatures extends TableFeatures, TData extends RowData> {
|
|
48
|
+
/**
|
|
49
|
+
* Returns an automatically calculated filter function for the column based off of the columns first known value.
|
|
50
|
+
*/
|
|
51
|
+
getAutoFilterFn: () => FilterFn<TFeatures, TData>;
|
|
52
|
+
/**
|
|
53
|
+
* Returns whether or not the column can be **column** filtered.
|
|
54
|
+
*/
|
|
55
|
+
getCanFilter: () => boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Returns the filter function (either user-defined or automatic, depending on configuration) for the columnId specified.
|
|
58
|
+
*/
|
|
59
|
+
getFilterFn: () => FilterFn<TFeatures, TData>;
|
|
60
|
+
/**
|
|
61
|
+
* Returns the index (including `-1`) of the column filter in the table's `state.columnFilters` array.
|
|
62
|
+
*/
|
|
63
|
+
getFilterIndex: () => number;
|
|
64
|
+
/**
|
|
65
|
+
* Returns the current filter value for the column.
|
|
66
|
+
*/
|
|
67
|
+
getFilterValue: () => unknown;
|
|
68
|
+
/**
|
|
69
|
+
* Returns whether or not the column is currently filtered.
|
|
70
|
+
*/
|
|
71
|
+
getIsFiltered: () => boolean;
|
|
72
|
+
/**
|
|
73
|
+
* A function that sets the current filter value for the column. You can pass it a value or an updater function for immutability-safe operations on existing values.
|
|
74
|
+
*/
|
|
75
|
+
setFilterValue: (updater: Updater<any>) => void;
|
|
76
|
+
}
|
|
77
|
+
export interface Row_ColumnFiltering<TFeatures extends TableFeatures, TData extends RowData> {
|
|
78
|
+
/**
|
|
79
|
+
* The column filters map for the row. This object tracks whether a row is passing/failing specific filters by their column ID.
|
|
80
|
+
*/
|
|
81
|
+
columnFilters: Record<string, boolean>;
|
|
82
|
+
/**
|
|
83
|
+
* The column filters meta map for the row. This object tracks any filter meta for a row as optionally provided during the filtering process.
|
|
84
|
+
*/
|
|
85
|
+
columnFiltersMeta: Record<string, FilterMeta>;
|
|
86
|
+
}
|
|
87
|
+
export interface TableOptions_ColumnFiltering<TFeatures extends TableFeatures, TData extends RowData> {
|
|
88
|
+
/**
|
|
89
|
+
* Enables/disables **column** filtering for all columns.
|
|
90
|
+
*/
|
|
91
|
+
enableColumnFilters?: boolean;
|
|
92
|
+
/**
|
|
93
|
+
* Enables/disables all filtering for the table.
|
|
94
|
+
*/
|
|
95
|
+
enableFilters?: boolean;
|
|
96
|
+
/**
|
|
97
|
+
* By default, filtering is done from parent rows down (so if a parent row is filtered out, all of its children will be filtered out as well). Setting this option to `true` will cause filtering to be done from leaf rows up (which means parent rows will be included so long as one of their child or grand-child rows is also included).
|
|
98
|
+
*/
|
|
99
|
+
filterFromLeafRows?: boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Disables the `getFilteredRowModel` from being used to filter data. This may be useful if your table needs to dynamically support both client-side and server-side filtering.
|
|
102
|
+
*/
|
|
103
|
+
manualFiltering?: boolean;
|
|
104
|
+
/**
|
|
105
|
+
* By default, filtering is done for all rows (max depth of 100), no matter if they are root level parent rows or the child leaf rows of a parent row. Setting this option to `0` will cause filtering to only be applied to the root level parent rows, with all sub-rows remaining unfiltered. Similarly, setting this option to `1` will cause filtering to only be applied to child leaf rows 1 level deep, and so on.
|
|
106
|
+
|
|
107
|
+
* This is useful for situations where you want a row's entire child hierarchy to be visible regardless of the applied filter.
|
|
108
|
+
*/
|
|
109
|
+
maxLeafRowFilterDepth?: number;
|
|
110
|
+
/**
|
|
111
|
+
* If provided, this function will be called with an `updaterFn` when `state.columnFilters` changes. This overrides the default internal state management, so you will need to persist the state change either fully or partially outside of the table.
|
|
112
|
+
*/
|
|
113
|
+
onColumnFiltersChange?: OnChangeFn<ColumnFiltersState>;
|
|
114
|
+
}
|
|
115
|
+
export interface Table_ColumnFiltering {
|
|
116
|
+
/**
|
|
117
|
+
* Resets the **columnFilters** state to `initialState.columnFilters`, or `true` can be passed to force a default blank state reset to `[]`.
|
|
118
|
+
*/
|
|
119
|
+
resetColumnFilters: (defaultState?: boolean) => void;
|
|
120
|
+
/**
|
|
121
|
+
* Sets or updates the `state.columnFilters` state.
|
|
122
|
+
*/
|
|
123
|
+
setColumnFilters: (updater: Updater<ColumnFiltersState>) => void;
|
|
124
|
+
}
|
|
125
|
+
export interface Table_RowModels_Filtered<TFeatures extends TableFeatures, TData extends RowData> {
|
|
126
|
+
/**
|
|
127
|
+
* Returns the row model for the table after **column** filtering has been applied.
|
|
128
|
+
*/
|
|
129
|
+
getFilteredRowModel: () => RowModel<TFeatures, TData>;
|
|
130
|
+
/**
|
|
131
|
+
* Returns the row model for the table before any **column** filtering has been applied.
|
|
132
|
+
*/
|
|
133
|
+
getPreFilteredRowModel: () => RowModel<TFeatures, TData>;
|
|
134
|
+
}
|
|
135
|
+
export interface CreateRowModel_Filtered<TFeatures extends TableFeatures, TData extends RowData> {
|
|
136
|
+
/**
|
|
137
|
+
* If provided, this function is called **once** per table and should return a **new function** which will calculate and return the row model for the table when it's filtered.
|
|
138
|
+
* - For server-side filtering, this function is unnecessary and can be ignored since the server should already return the filtered row model.
|
|
139
|
+
* - For client-side filtering, this function is required. A default implementation is provided via any table adapter's `{ getFilteredRowModel }` export.
|
|
140
|
+
*/
|
|
141
|
+
filteredRowModel?: (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData>;
|
|
142
|
+
}
|
|
143
|
+
export interface CachedRowModel_Filtered<TFeatures extends TableFeatures, TData extends RowData> {
|
|
144
|
+
filteredRowModel: () => RowModel<TFeatures, TData>;
|
|
145
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { CellData, RowData, Updater } from '../../types/type-utils.js';
|
|
2
|
+
import { TableFeatures } from '../../types/TableFeatures.js';
|
|
3
|
+
import { Table_Internal } from '../../types/Table.js';
|
|
4
|
+
import { Column_Internal } from '../../types/Column.js';
|
|
5
|
+
import { ColumnFiltersState, FilterFn } from './columnFilteringFeature.types';
|
|
6
|
+
export declare function getDefaultColumnFiltersState(): ColumnFiltersState;
|
|
7
|
+
export declare function column_getAutoFilterFn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): FilterFn<TFeatures, TData> | undefined;
|
|
8
|
+
export declare function column_getFilterFn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): FilterFn<TFeatures, TData> | undefined;
|
|
9
|
+
export declare function column_getCanFilter<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): boolean;
|
|
10
|
+
export declare function column_getIsFiltered<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): boolean;
|
|
11
|
+
export declare function column_getFilterValue<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): unknown;
|
|
12
|
+
export declare function column_getFilterIndex<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): number;
|
|
13
|
+
export declare function column_setFilterValue<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>, value: any): void;
|
|
14
|
+
export declare function table_setColumnFilters<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>, updater: Updater<ColumnFiltersState>): void;
|
|
15
|
+
export declare function table_resetColumnFilters<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean): void;
|
|
16
|
+
export declare function shouldAutoRemoveFilter<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(filterFn?: FilterFn<TFeatures, TData>, value?: any, column?: Column_Internal<TFeatures, TData, TValue>): boolean;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { isFunction, functionalUpdate } from "../../utils.js";
|
|
2
|
+
function getDefaultColumnFiltersState() {
|
|
3
|
+
return structuredClone([]);
|
|
4
|
+
}
|
|
5
|
+
function column_getAutoFilterFn(column) {
|
|
6
|
+
const filterFns = column.table._rowModelFns.filterFns;
|
|
7
|
+
const firstRow = column.table.getCoreRowModel().flatRows[0];
|
|
8
|
+
const value = firstRow ? firstRow.getValue(column.id) : void 0;
|
|
9
|
+
if (typeof value === "string") {
|
|
10
|
+
return filterFns?.includesString;
|
|
11
|
+
}
|
|
12
|
+
if (typeof value === "number") {
|
|
13
|
+
return filterFns?.inNumberRange;
|
|
14
|
+
}
|
|
15
|
+
if (typeof value === "boolean") {
|
|
16
|
+
return filterFns?.equals;
|
|
17
|
+
}
|
|
18
|
+
if (value !== null && typeof value === "object") {
|
|
19
|
+
return filterFns?.equals;
|
|
20
|
+
}
|
|
21
|
+
if (Array.isArray(value)) {
|
|
22
|
+
return filterFns?.arrIncludes;
|
|
23
|
+
}
|
|
24
|
+
return filterFns?.weakEquals;
|
|
25
|
+
}
|
|
26
|
+
function column_getFilterFn(column) {
|
|
27
|
+
let filterFn = null;
|
|
28
|
+
const filterFns = column.table._rowModelFns.filterFns;
|
|
29
|
+
filterFn = isFunction(column.columnDef.filterFn) ? column.columnDef.filterFn : column.columnDef.filterFn === "auto" ? column_getAutoFilterFn(column) : filterFns?.[column.columnDef.filterFn];
|
|
30
|
+
if (process.env.NODE_ENV === "development" && !filterFn) {
|
|
31
|
+
console.warn(
|
|
32
|
+
`Could not find a valid 'column.filterFn' for column with the ID: ${column.id}.`
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
return filterFn;
|
|
36
|
+
}
|
|
37
|
+
function column_getCanFilter(column) {
|
|
38
|
+
return (column.columnDef.enableColumnFilter ?? true) && (column.table.options.enableColumnFilters ?? true) && (column.table.options.enableFilters ?? true) && !!column.accessorFn;
|
|
39
|
+
}
|
|
40
|
+
function column_getIsFiltered(column) {
|
|
41
|
+
return column_getFilterIndex(column) > -1;
|
|
42
|
+
}
|
|
43
|
+
function column_getFilterValue(column) {
|
|
44
|
+
return column.table.store.state.columnFilters?.find((d) => d.id === column.id)?.value;
|
|
45
|
+
}
|
|
46
|
+
function column_getFilterIndex(column) {
|
|
47
|
+
return column.table.store.state.columnFilters?.findIndex(
|
|
48
|
+
(d) => d.id === column.id
|
|
49
|
+
) ?? -1;
|
|
50
|
+
}
|
|
51
|
+
function column_setFilterValue(column, value) {
|
|
52
|
+
table_setColumnFilters(column.table, (old) => {
|
|
53
|
+
const filterFn = column_getFilterFn(column);
|
|
54
|
+
const previousFilter = old.find((d) => d.id === column.id);
|
|
55
|
+
const newFilter = functionalUpdate(
|
|
56
|
+
value,
|
|
57
|
+
previousFilter ? previousFilter.value : void 0
|
|
58
|
+
);
|
|
59
|
+
if (shouldAutoRemoveFilter(filterFn, newFilter, column)) {
|
|
60
|
+
return old.filter((d) => d.id !== column.id);
|
|
61
|
+
}
|
|
62
|
+
const newFilterObj = { id: column.id, value: newFilter };
|
|
63
|
+
if (previousFilter) {
|
|
64
|
+
return old.map((d) => {
|
|
65
|
+
if (d.id === column.id) {
|
|
66
|
+
return newFilterObj;
|
|
67
|
+
}
|
|
68
|
+
return d;
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
if (old.length) {
|
|
72
|
+
return [...old, newFilterObj];
|
|
73
|
+
}
|
|
74
|
+
return [newFilterObj];
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
function table_setColumnFilters(table, updater) {
|
|
78
|
+
const leafColumns = table.getAllLeafColumns();
|
|
79
|
+
const updateFn = (old) => {
|
|
80
|
+
return functionalUpdate(updater, old).filter((filter) => {
|
|
81
|
+
const column = leafColumns.find((d) => d.id === filter.id);
|
|
82
|
+
if (column) {
|
|
83
|
+
const filterFn = column_getFilterFn(column);
|
|
84
|
+
if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return true;
|
|
89
|
+
});
|
|
90
|
+
};
|
|
91
|
+
table.options.onColumnFiltersChange?.(updateFn);
|
|
92
|
+
}
|
|
93
|
+
function table_resetColumnFilters(table, defaultState) {
|
|
94
|
+
table_setColumnFilters(
|
|
95
|
+
table,
|
|
96
|
+
defaultState ? [] : table.initialState.columnFilters ?? []
|
|
97
|
+
);
|
|
98
|
+
}
|
|
99
|
+
function shouldAutoRemoveFilter(filterFn, value, column) {
|
|
100
|
+
return (filterFn && filterFn.autoRemove ? filterFn.autoRemove(
|
|
101
|
+
value,
|
|
102
|
+
column
|
|
103
|
+
) : false) || typeof value === "undefined" || typeof value === "string" && !value;
|
|
104
|
+
}
|
|
105
|
+
export {
|
|
106
|
+
column_getAutoFilterFn,
|
|
107
|
+
column_getCanFilter,
|
|
108
|
+
column_getFilterFn,
|
|
109
|
+
column_getFilterIndex,
|
|
110
|
+
column_getFilterValue,
|
|
111
|
+
column_getIsFiltered,
|
|
112
|
+
column_setFilterValue,
|
|
113
|
+
getDefaultColumnFiltersState,
|
|
114
|
+
shouldAutoRemoveFilter,
|
|
115
|
+
table_resetColumnFilters,
|
|
116
|
+
table_setColumnFilters
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=columnFilteringFeature.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"columnFilteringFeature.utils.js","sources":["../../../../src/features/column-filtering/columnFilteringFeature.utils.ts"],"sourcesContent":["import { functionalUpdate, isFunction } from '../../utils'\nimport type { CellData, RowData, Updater } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { Table_Internal } from '../../types/Table'\nimport type { Column_Internal } from '../../types/Column'\nimport type {\n ColumnFiltersState,\n FilterFn,\n} from './columnFilteringFeature.types'\n\nexport function getDefaultColumnFiltersState(): ColumnFiltersState {\n return structuredClone([])\n}\n\nexport function column_getAutoFilterFn<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n const filterFns = column.table._rowModelFns.filterFns as\n | Record<string, FilterFn<TFeatures, TData>>\n | undefined\n\n const firstRow = column.table.getCoreRowModel().flatRows[0]\n\n const value = firstRow ? firstRow.getValue(column.id) : undefined\n\n if (typeof value === 'string') {\n return filterFns?.includesString\n }\n\n if (typeof value === 'number') {\n return filterFns?.inNumberRange\n }\n\n if (typeof value === 'boolean') {\n return filterFns?.equals\n }\n\n if (value !== null && typeof value === 'object') {\n return filterFns?.equals\n }\n\n if (Array.isArray(value)) {\n return filterFns?.arrIncludes\n }\n\n return filterFns?.weakEquals\n}\n\nexport function column_getFilterFn<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(\n column: Column_Internal<TFeatures, TData, TValue>,\n): FilterFn<TFeatures, TData> | undefined {\n let filterFn = null\n const filterFns = column.table._rowModelFns.filterFns as\n | Record<string, FilterFn<TFeatures, TData>>\n | undefined\n filterFn = isFunction(column.columnDef.filterFn)\n ? column.columnDef.filterFn\n : column.columnDef.filterFn === 'auto'\n ? column_getAutoFilterFn(column)\n : filterFns?.[column.columnDef.filterFn as string]\n\n if (process.env.NODE_ENV === 'development' && !filterFn) {\n console.warn(\n `Could not find a valid 'column.filterFn' for column with the ID: ${column.id}.`,\n )\n }\n\n return filterFn\n}\n\nexport function column_getCanFilter<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n return (\n (column.columnDef.enableColumnFilter ?? true) &&\n (column.table.options.enableColumnFilters ?? true) &&\n (column.table.options.enableFilters ?? true) &&\n !!column.accessorFn\n )\n}\n\nexport function column_getIsFiltered<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n return column_getFilterIndex(column) > -1\n}\n\nexport function column_getFilterValue<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n return column.table.store.state.columnFilters?.find((d) => d.id === column.id)\n ?.value\n}\n\nexport function column_getFilterIndex<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): number {\n return (\n column.table.store.state.columnFilters?.findIndex(\n (d) => d.id === column.id,\n ) ?? -1\n )\n}\n\nexport function column_setFilterValue<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>, value: any) {\n table_setColumnFilters(column.table, (old) => {\n const filterFn = column_getFilterFn(column)\n const previousFilter = old.find((d) => d.id === column.id)\n\n const newFilter = functionalUpdate(\n value,\n previousFilter ? previousFilter.value : undefined,\n )\n\n if (shouldAutoRemoveFilter(filterFn, newFilter, column)) {\n return old.filter((d) => d.id !== column.id)\n }\n\n const newFilterObj = { id: column.id, value: newFilter }\n\n if (previousFilter) {\n return old.map((d) => {\n if (d.id === column.id) {\n return newFilterObj\n }\n return d\n })\n }\n\n if (old.length) {\n return [...old, newFilterObj]\n }\n\n return [newFilterObj]\n })\n}\n\nexport function table_setColumnFilters<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table_Internal<TFeatures, TData>,\n updater: Updater<ColumnFiltersState>,\n) {\n const leafColumns = table.getAllLeafColumns()\n\n const updateFn = (old: ColumnFiltersState) => {\n return functionalUpdate(updater, old).filter((filter) => {\n const column = leafColumns.find((d) => d.id === filter.id)\n\n if (column) {\n const filterFn = column_getFilterFn(column)\n\n if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {\n return false\n }\n }\n\n return true\n })\n }\n\n table.options.onColumnFiltersChange?.(updateFn)\n}\n\nexport function table_resetColumnFilters<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n table_setColumnFilters(\n table,\n defaultState ? [] : (table.initialState.columnFilters ?? []),\n )\n}\n\nexport function shouldAutoRemoveFilter<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(\n filterFn?: FilterFn<TFeatures, TData>,\n value?: any,\n column?: Column_Internal<TFeatures, TData, TValue>,\n) {\n return (\n (filterFn && filterFn.autoRemove\n ? filterFn.autoRemove(\n value,\n column as Column_Internal<TFeatures, TData, unknown>,\n )\n : false) ||\n typeof value === 'undefined' ||\n (typeof value === 'string' && !value)\n )\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { RowData } from '../../types/type-utils.js';
|
|
2
|
+
import { TableFeatures } from '../../types/TableFeatures.js';
|
|
3
|
+
import { RowModel } from '../../core/row-models/coreRowModelsFeature.types';
|
|
4
|
+
import { Table } from '../../types/Table.js';
|
|
5
|
+
import { FilterFn, FilterFns } from './columnFilteringFeature.types';
|
|
6
|
+
export declare function createFilteredRowModel<TFeatures extends TableFeatures, TData extends RowData = any>(filterFns: Record<keyof FilterFns, FilterFn<TFeatures, TData>>): (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData>;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { tableMemo } from "../../utils.js";
|
|
2
|
+
import { table_getColumn } from "../../core/columns/coreColumnsFeature.utils.js";
|
|
3
|
+
import { table_getGlobalFilterFn, column_getCanGlobalFilter } from "../global-filtering/globalFilteringFeature.utils.js";
|
|
4
|
+
import { table_autoResetPageIndex } from "../row-pagination/rowPaginationFeature.utils.js";
|
|
5
|
+
import { filterRows } from "./filterRowsUtils.js";
|
|
6
|
+
import { column_getFilterFn } from "./columnFilteringFeature.utils.js";
|
|
7
|
+
function createFilteredRowModel(filterFns) {
|
|
8
|
+
return (_table) => {
|
|
9
|
+
const table = _table;
|
|
10
|
+
if (!table._rowModelFns.filterFns) table._rowModelFns.filterFns = filterFns;
|
|
11
|
+
return tableMemo({
|
|
12
|
+
feature: "columnFilteringFeature",
|
|
13
|
+
table,
|
|
14
|
+
fnName: "table.getFilteredRowModel",
|
|
15
|
+
memoDeps: () => [
|
|
16
|
+
table.getPreFilteredRowModel(),
|
|
17
|
+
table.store.state.columnFilters,
|
|
18
|
+
table.store.state.globalFilter
|
|
19
|
+
],
|
|
20
|
+
fn: () => _createFilteredRowModel(table),
|
|
21
|
+
onAfterUpdate: () => table_autoResetPageIndex(table)
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function _createFilteredRowModel(table) {
|
|
26
|
+
const rowModel = table.getPreFilteredRowModel();
|
|
27
|
+
const { columnFilters, globalFilter } = table.store.state;
|
|
28
|
+
if (!rowModel.rows.length || !columnFilters?.length && !globalFilter) {
|
|
29
|
+
for (const row of rowModel.flatRows) {
|
|
30
|
+
row.columnFilters = {};
|
|
31
|
+
row.columnFiltersMeta = {};
|
|
32
|
+
}
|
|
33
|
+
return rowModel;
|
|
34
|
+
}
|
|
35
|
+
const resolvedColumnFilters = [];
|
|
36
|
+
const resolvedGlobalFilters = [];
|
|
37
|
+
columnFilters?.forEach((columnFilter) => {
|
|
38
|
+
const column = table_getColumn(table, columnFilter.id);
|
|
39
|
+
if (!column) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const filterFn = column_getFilterFn(column);
|
|
43
|
+
resolvedColumnFilters.push({
|
|
44
|
+
id: columnFilter.id,
|
|
45
|
+
filterFn,
|
|
46
|
+
resolvedValue: filterFn.resolveFilterValue?.(columnFilter.value) ?? columnFilter.value
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
const filterableIds = columnFilters?.map((d) => d.id) ?? [];
|
|
50
|
+
const globalFilterFn = table_getGlobalFilterFn(table);
|
|
51
|
+
const globallyFilterableColumns = table.getAllLeafColumns().filter((column) => column_getCanGlobalFilter(column));
|
|
52
|
+
if (globalFilter && globalFilterFn && globallyFilterableColumns.length) {
|
|
53
|
+
filterableIds.push("__global__");
|
|
54
|
+
globallyFilterableColumns.forEach((column) => {
|
|
55
|
+
resolvedGlobalFilters.push({
|
|
56
|
+
id: column.id,
|
|
57
|
+
filterFn: globalFilterFn,
|
|
58
|
+
resolvedValue: globalFilterFn.resolveFilterValue?.(globalFilter) ?? globalFilter
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
for (const row of rowModel.flatRows) {
|
|
63
|
+
row.columnFilters = {};
|
|
64
|
+
if (resolvedColumnFilters.length) {
|
|
65
|
+
for (const currentColumnFilter of resolvedColumnFilters) {
|
|
66
|
+
const id = currentColumnFilter.id;
|
|
67
|
+
row.columnFilters[id] = currentColumnFilter.filterFn(
|
|
68
|
+
row,
|
|
69
|
+
id,
|
|
70
|
+
currentColumnFilter.resolvedValue,
|
|
71
|
+
(filterMeta) => {
|
|
72
|
+
!row.columnFiltersMeta ? row.columnFiltersMeta = {} : row.columnFiltersMeta[id] = filterMeta;
|
|
73
|
+
}
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (resolvedGlobalFilters.length) {
|
|
78
|
+
for (const currentGlobalFilter of resolvedGlobalFilters) {
|
|
79
|
+
const id = currentGlobalFilter.id;
|
|
80
|
+
if (currentGlobalFilter.filterFn(
|
|
81
|
+
row,
|
|
82
|
+
id,
|
|
83
|
+
currentGlobalFilter.resolvedValue,
|
|
84
|
+
(filterMeta) => {
|
|
85
|
+
!row.columnFiltersMeta ? row.columnFiltersMeta = {} : row.columnFiltersMeta[id] = filterMeta;
|
|
86
|
+
}
|
|
87
|
+
)) {
|
|
88
|
+
row.columnFilters.__global__ = true;
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
if (row.columnFilters.__global__ !== true) {
|
|
93
|
+
row.columnFilters.__global__ = false;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const filterRowsImpl = (row) => {
|
|
98
|
+
for (const columnId of filterableIds) {
|
|
99
|
+
if (row.columnFilters[columnId] === false) {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return true;
|
|
104
|
+
};
|
|
105
|
+
return filterRows(rowModel.rows, filterRowsImpl, table);
|
|
106
|
+
}
|
|
107
|
+
export {
|
|
108
|
+
createFilteredRowModel
|
|
109
|
+
};
|
|
110
|
+
//# sourceMappingURL=createFilteredRowModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createFilteredRowModel.js","sources":["../../../../src/features/column-filtering/createFilteredRowModel.ts"],"sourcesContent":["import { tableMemo } from '../../utils'\nimport { table_getColumn } from '../../core/columns/coreColumnsFeature.utils'\nimport {\n column_getCanGlobalFilter,\n table_getGlobalFilterFn,\n} from '../global-filtering/globalFilteringFeature.utils'\nimport { table_autoResetPageIndex } from '../row-pagination/rowPaginationFeature.utils'\nimport { filterRows } from './filterRowsUtils'\nimport { column_getFilterFn } from './columnFilteringFeature.utils'\nimport type { RowData } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'\nimport type { Table, Table_Internal } from '../../types/Table'\nimport type { Row } from '../../types/Row'\nimport type {\n FilterFn,\n FilterFns,\n ResolvedColumnFilter,\n Row_ColumnFiltering,\n} from './columnFilteringFeature.types'\n\nexport function createFilteredRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(\n filterFns: Record<keyof FilterFns, FilterFn<TFeatures, TData>>,\n): (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData> {\n return (_table) => {\n const table = _table as Table_Internal<TFeatures, TData>\n if (!table._rowModelFns.filterFns) table._rowModelFns.filterFns = filterFns\n return tableMemo({\n feature: 'columnFilteringFeature',\n table,\n fnName: 'table.getFilteredRowModel',\n memoDeps: () => [\n table.getPreFilteredRowModel(),\n table.store.state.columnFilters,\n table.store.state.globalFilter,\n ],\n fn: () => _createFilteredRowModel(table),\n onAfterUpdate: () => table_autoResetPageIndex(table),\n })\n }\n}\n\nfunction _createFilteredRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {\n const rowModel = table.getPreFilteredRowModel()\n const { columnFilters, globalFilter } = table.store.state\n\n if (!rowModel.rows.length || (!columnFilters?.length && !globalFilter)) {\n for (const row of rowModel.flatRows as Array<\n Row<TFeatures, TData> & Partial<Row_ColumnFiltering<TFeatures, TData>>\n >) {\n row.columnFilters = {}\n row.columnFiltersMeta = {}\n }\n return rowModel\n }\n\n const resolvedColumnFilters: Array<ResolvedColumnFilter<TFeatures, TData>> =\n []\n const resolvedGlobalFilters: Array<ResolvedColumnFilter<TFeatures, TData>> =\n []\n\n columnFilters?.forEach((columnFilter) => {\n const column = table_getColumn(table, columnFilter.id)\n\n if (!column) {\n return\n }\n\n const filterFn = column_getFilterFn(column)!\n\n resolvedColumnFilters.push({\n id: columnFilter.id,\n filterFn,\n resolvedValue:\n filterFn.resolveFilterValue?.(columnFilter.value) ?? columnFilter.value,\n })\n })\n\n const filterableIds = columnFilters?.map((d) => d.id) ?? []\n\n const globalFilterFn = table_getGlobalFilterFn(table)\n\n const globallyFilterableColumns = table\n .getAllLeafColumns()\n .filter((column) => column_getCanGlobalFilter(column))\n\n if (globalFilter && globalFilterFn && globallyFilterableColumns.length) {\n filterableIds.push('__global__')\n\n globallyFilterableColumns.forEach((column) => {\n resolvedGlobalFilters.push({\n id: column.id,\n filterFn: globalFilterFn,\n resolvedValue:\n globalFilterFn.resolveFilterValue?.(globalFilter) ?? globalFilter,\n })\n })\n }\n\n // Flag the pre-filtered row model with each filter state\n for (const row of rowModel.flatRows as Array<\n Row<TFeatures, TData> & Partial<Row_ColumnFiltering<TFeatures, TData>>\n >) {\n row.columnFilters = {}\n\n if (resolvedColumnFilters.length) {\n for (const currentColumnFilter of resolvedColumnFilters) {\n const id = currentColumnFilter.id\n\n // Tag the row with the column filter state\n row.columnFilters[id] = currentColumnFilter.filterFn(\n row,\n id,\n currentColumnFilter.resolvedValue,\n (filterMeta) => {\n !row.columnFiltersMeta\n ? (row.columnFiltersMeta = {})\n : (row.columnFiltersMeta[id] = filterMeta)\n },\n )\n }\n }\n\n if (resolvedGlobalFilters.length) {\n for (const currentGlobalFilter of resolvedGlobalFilters) {\n const id = currentGlobalFilter.id\n // Tag the row with the first truthy global filter state\n if (\n currentGlobalFilter.filterFn(\n row,\n id,\n currentGlobalFilter.resolvedValue,\n (filterMeta) => {\n !row.columnFiltersMeta\n ? (row.columnFiltersMeta = {})\n : (row.columnFiltersMeta[id] = filterMeta)\n },\n )\n ) {\n row.columnFilters.__global__ = true\n break\n }\n }\n\n if (row.columnFilters.__global__ !== true) {\n row.columnFilters.__global__ = false\n }\n }\n }\n\n const filterRowsImpl = (\n row: Row<TFeatures, TData> & Row_ColumnFiltering<TFeatures, TData>,\n ) => {\n // Horizontally filter rows through each column\n for (const columnId of filterableIds) {\n if (row.columnFilters[columnId] === false) {\n return false\n }\n }\n return true\n }\n\n // Filter final rows using all of the active filters\n return filterRows(rowModel.rows, filterRowsImpl as any, table)\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { RowModel } from '../../core/row-models/coreRowModelsFeature.types';
|
|
2
|
+
import { Row } from '../../types/Row.js';
|
|
3
|
+
import { Table_Internal } from '../../types/Table.js';
|
|
4
|
+
import { TableFeatures } from '../../types/TableFeatures.js';
|
|
5
|
+
import { RowData } from '../../types/type-utils.js';
|
|
6
|
+
export declare function filterRows<TFeatures extends TableFeatures, TData extends RowData>(rows: Array<Row<TFeatures, TData>>, filterRowImpl: (row: Row<TFeatures, TData>) => any, table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { constructRow } from "../../core/rows/constructRow.js";
|
|
2
2
|
function filterRows(rows, filterRowImpl, table) {
|
|
3
3
|
if (table.options.filterFromLeafRows) {
|
|
4
4
|
return filterRowModelFromLeafs(rows, filterRowImpl, table);
|
|
@@ -10,11 +10,9 @@ function filterRowModelFromLeafs(rowsToFilter, filterRow, table) {
|
|
|
10
10
|
const newFilteredRowsById = {};
|
|
11
11
|
const maxDepth = table.options.maxLeafRowFilterDepth ?? 100;
|
|
12
12
|
const recurseFilterRows = (rowsToFilter2, depth = 0) => {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
let row = rowsToFilter2[i];
|
|
17
|
-
const newRow = _createRow(
|
|
13
|
+
const filteredRows = [];
|
|
14
|
+
for (let row of rowsToFilter2) {
|
|
15
|
+
const newRow = constructRow(
|
|
18
16
|
table,
|
|
19
17
|
row.id,
|
|
20
18
|
row.original,
|
|
@@ -24,17 +22,17 @@ function filterRowModelFromLeafs(rowsToFilter, filterRow, table) {
|
|
|
24
22
|
row.parentId
|
|
25
23
|
);
|
|
26
24
|
newRow.columnFilters = row.columnFilters;
|
|
27
|
-
if (
|
|
25
|
+
if (row.subRows.length && depth < maxDepth) {
|
|
28
26
|
newRow.subRows = recurseFilterRows(row.subRows, depth + 1);
|
|
29
27
|
row = newRow;
|
|
30
28
|
if (filterRow(row) && !newRow.subRows.length) {
|
|
31
|
-
|
|
29
|
+
filteredRows.push(row);
|
|
32
30
|
newFilteredRowsById[row.id] = row;
|
|
33
31
|
newFilteredFlatRows.push(row);
|
|
34
32
|
continue;
|
|
35
33
|
}
|
|
36
34
|
if (filterRow(row) || newRow.subRows.length) {
|
|
37
|
-
|
|
35
|
+
filteredRows.push(row);
|
|
38
36
|
newFilteredRowsById[row.id] = row;
|
|
39
37
|
newFilteredFlatRows.push(row);
|
|
40
38
|
continue;
|
|
@@ -42,13 +40,13 @@ function filterRowModelFromLeafs(rowsToFilter, filterRow, table) {
|
|
|
42
40
|
} else {
|
|
43
41
|
row = newRow;
|
|
44
42
|
if (filterRow(row)) {
|
|
45
|
-
|
|
43
|
+
filteredRows.push(row);
|
|
46
44
|
newFilteredRowsById[row.id] = row;
|
|
47
45
|
newFilteredFlatRows.push(row);
|
|
48
46
|
}
|
|
49
47
|
}
|
|
50
48
|
}
|
|
51
|
-
return
|
|
49
|
+
return filteredRows;
|
|
52
50
|
};
|
|
53
51
|
return {
|
|
54
52
|
rows: recurseFilterRows(rowsToFilter),
|
|
@@ -61,14 +59,12 @@ function filterRowModelFromRoot(rowsToFilter, filterRow, table) {
|
|
|
61
59
|
const newFilteredRowsById = {};
|
|
62
60
|
const maxDepth = table.options.maxLeafRowFilterDepth ?? 100;
|
|
63
61
|
const recurseFilterRows = (rowsToFilter2, depth = 0) => {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
for (let i = 0; i < rowsToFilter2.length; i++) {
|
|
67
|
-
let row = rowsToFilter2[i];
|
|
62
|
+
const filteredRows = [];
|
|
63
|
+
for (let row of rowsToFilter2) {
|
|
68
64
|
const pass = filterRow(row);
|
|
69
65
|
if (pass) {
|
|
70
|
-
if (
|
|
71
|
-
const newRow =
|
|
66
|
+
if (row.subRows.length && depth < maxDepth) {
|
|
67
|
+
const newRow = constructRow(
|
|
72
68
|
table,
|
|
73
69
|
row.id,
|
|
74
70
|
row.original,
|
|
@@ -80,12 +76,12 @@ function filterRowModelFromRoot(rowsToFilter, filterRow, table) {
|
|
|
80
76
|
newRow.subRows = recurseFilterRows(row.subRows, depth + 1);
|
|
81
77
|
row = newRow;
|
|
82
78
|
}
|
|
83
|
-
|
|
79
|
+
filteredRows.push(row);
|
|
84
80
|
newFilteredFlatRows.push(row);
|
|
85
81
|
newFilteredRowsById[row.id] = row;
|
|
86
82
|
}
|
|
87
83
|
}
|
|
88
|
-
return
|
|
84
|
+
return filteredRows;
|
|
89
85
|
};
|
|
90
86
|
return {
|
|
91
87
|
rows: recurseFilterRows(rowsToFilter),
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filterRowsUtils.js","sources":["../../../../src/features/column-filtering/filterRowsUtils.ts"],"sourcesContent":["import { constructRow } from '../../core/rows/constructRow'\nimport type { Row_ColumnFiltering } from './columnFilteringFeature.types'\nimport type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'\nimport type { Row } from '../../types/Row'\nimport type { Table_Internal } from '../../types/Table'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { RowData } from '../../types/type-utils'\n\nexport function filterRows<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n rows: Array<Row<TFeatures, TData>>,\n filterRowImpl: (row: Row<TFeatures, TData>) => any,\n table: Table_Internal<TFeatures, TData>,\n) {\n if (table.options.filterFromLeafRows) {\n return filterRowModelFromLeafs(rows, filterRowImpl, table)\n }\n\n return filterRowModelFromRoot(rows, filterRowImpl, table)\n}\n\nfunction filterRowModelFromLeafs<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n rowsToFilter: Array<Row<TFeatures, TData>>,\n filterRow: (\n row: Row<TFeatures, TData>,\n ) => Array<Row<TFeatures, TData>> | undefined,\n table: Table_Internal<TFeatures, TData>,\n): RowModel<TFeatures, TData> {\n const newFilteredFlatRows: Array<Row<TFeatures, TData>> = []\n const newFilteredRowsById: Record<string, Row<TFeatures, TData>> = {}\n const maxDepth = table.options.maxLeafRowFilterDepth ?? 100\n\n const recurseFilterRows = (\n rowsToFilter: Array<\n Row<TFeatures, TData> & Partial<Row_ColumnFiltering<TFeatures, TData>>\n >,\n depth = 0,\n ) => {\n const filteredRows: Array<Row<TFeatures, TData>> &\n Partial<Row_ColumnFiltering<TFeatures, TData>> = []\n\n // Filter from children up first\n for (let row of rowsToFilter) {\n const newRow = constructRow(\n table,\n row.id,\n row.original,\n row.index,\n row.depth,\n undefined,\n row.parentId,\n ) as Row<TFeatures, TData> &\n Partial<Row_ColumnFiltering<TFeatures, TData>>\n newRow.columnFilters = row.columnFilters\n\n if (row.subRows.length && depth < maxDepth) {\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1)\n row = newRow\n\n if (filterRow(row) && !newRow.subRows.length) {\n filteredRows.push(row)\n newFilteredRowsById[row.id] = row\n newFilteredFlatRows.push(row)\n continue\n }\n\n if (filterRow(row) || newRow.subRows.length) {\n filteredRows.push(row)\n newFilteredRowsById[row.id] = row\n newFilteredFlatRows.push(row)\n continue\n }\n } else {\n row = newRow\n if (filterRow(row)) {\n filteredRows.push(row)\n newFilteredRowsById[row.id] = row\n newFilteredFlatRows.push(row)\n }\n }\n }\n\n return filteredRows\n }\n\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById,\n }\n}\n\nfunction filterRowModelFromRoot<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n rowsToFilter: Array<Row<TFeatures, TData>>,\n filterRow: (row: Row<TFeatures, TData>) => any,\n table: Table_Internal<TFeatures, TData>,\n): RowModel<TFeatures, TData> {\n const newFilteredFlatRows: Array<Row<TFeatures, TData>> = []\n const newFilteredRowsById: Record<string, Row<TFeatures, TData>> = {}\n const maxDepth = table.options.maxLeafRowFilterDepth ?? 100\n\n // Filters top level and nested rows\n const recurseFilterRows = (\n rowsToFilter: Array<Row<TFeatures, TData>>,\n depth = 0,\n ) => {\n // Filter from parents downward first\n\n const filteredRows: Array<Row<TFeatures, TData>> = []\n\n // Apply the filter to any subRows\n for (let row of rowsToFilter) {\n const pass = filterRow(row)\n\n if (pass) {\n if (row.subRows.length && depth < maxDepth) {\n const newRow = constructRow(\n table,\n row.id,\n row.original,\n row.index,\n row.depth,\n undefined,\n row.parentId,\n )\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1)\n row = newRow\n }\n\n filteredRows.push(row)\n newFilteredFlatRows.push(row)\n newFilteredRowsById[row.id] = row\n }\n }\n\n return filteredRows\n }\n\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById,\n }\n}\n"],"names":["rowsToFilter"],"mappings":";AAQO,SAAS,WAId,MACA,eACA,OACA;AACA,MAAI,MAAM,QAAQ,oBAAoB;AACpC,WAAO,wBAAwB,MAAM,eAAe,KAAK;AAAA,EAC3D;AAEA,SAAO,uBAAuB,MAAM,eAAe,KAAK;AAC1D;AAEA,SAAS,wBAIP,cACA,WAGA,OAC4B;AAC5B,QAAM,sBAAoD,CAAA;AAC1D,QAAM,sBAA6D,CAAA;AACnE,QAAM,WAAW,MAAM,QAAQ,yBAAyB;AAExD,QAAM,oBAAoB,CACxBA,eAGA,QAAQ,MACL;AACH,UAAM,eAC6C,CAAA;AAGnD,aAAS,OAAOA,eAAc;AAC5B,YAAM,SAAS;AAAA,QACb;AAAA,QACA,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ;AAAA,QACA,IAAI;AAAA,MAAA;AAGN,aAAO,gBAAgB,IAAI;AAE3B,UAAI,IAAI,QAAQ,UAAU,QAAQ,UAAU;AAC1C,eAAO,UAAU,kBAAkB,IAAI,SAAS,QAAQ,CAAC;AACzD,cAAM;AAEN,YAAI,UAAU,GAAG,KAAK,CAAC,OAAO,QAAQ,QAAQ;AAC5C,uBAAa,KAAK,GAAG;AACrB,8BAAoB,IAAI,EAAE,IAAI;AAC9B,8BAAoB,KAAK,GAAG;AAC5B;AAAA,QACF;AAEA,YAAI,UAAU,GAAG,KAAK,OAAO,QAAQ,QAAQ;AAC3C,uBAAa,KAAK,GAAG;AACrB,8BAAoB,IAAI,EAAE,IAAI;AAC9B,8BAAoB,KAAK,GAAG;AAC5B;AAAA,QACF;AAAA,MACF,OAAO;AACL,cAAM;AACN,YAAI,UAAU,GAAG,GAAG;AAClB,uBAAa,KAAK,GAAG;AACrB,8BAAoB,IAAI,EAAE,IAAI;AAC9B,8BAAoB,KAAK,GAAG;AAAA,QAC9B;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,MAAM,kBAAkB,YAAY;AAAA,IACpC,UAAU;AAAA,IACV,UAAU;AAAA,EAAA;AAEd;AAEA,SAAS,uBAIP,cACA,WACA,OAC4B;AAC5B,QAAM,sBAAoD,CAAA;AAC1D,QAAM,sBAA6D,CAAA;AACnE,QAAM,WAAW,MAAM,QAAQ,yBAAyB;AAGxD,QAAM,oBAAoB,CACxBA,eACA,QAAQ,MACL;AAGH,UAAM,eAA6C,CAAA;AAGnD,aAAS,OAAOA,eAAc;AAC5B,YAAM,OAAO,UAAU,GAAG;AAE1B,UAAI,MAAM;AACR,YAAI,IAAI,QAAQ,UAAU,QAAQ,UAAU;AAC1C,gBAAM,SAAS;AAAA,YACb;AAAA,YACA,IAAI;AAAA,YACJ,IAAI;AAAA,YACJ,IAAI;AAAA,YACJ,IAAI;AAAA,YACJ;AAAA,YACA,IAAI;AAAA,UAAA;AAEN,iBAAO,UAAU,kBAAkB,IAAI,SAAS,QAAQ,CAAC;AACzD,gBAAM;AAAA,QACR;AAEA,qBAAa,KAAK,GAAG;AACrB,4BAAoB,KAAK,GAAG;AAC5B,4BAAoB,IAAI,EAAE,IAAI;AAAA,MAChC;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,MAAM,kBAAkB,YAAY;AAAA,IACpC,UAAU;AAAA,IACV,UAAU;AAAA,EAAA;AAEd;"}
|