@tanstack/table-core 9.0.0-beta.5 → 9.0.0-beta.50
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/README.md +2 -0
- package/dist/core/cells/constructCell.cjs +1 -4
- package/dist/core/cells/constructCell.cjs.map +1 -1
- package/dist/core/cells/constructCell.d.cts +4 -4
- package/dist/core/cells/constructCell.d.ts +4 -4
- package/dist/core/cells/constructCell.js +1 -4
- package/dist/core/cells/constructCell.js.map +1 -1
- package/dist/core/cells/coreCellsFeature.types.d.cts +7 -7
- package/dist/core/cells/coreCellsFeature.types.d.ts +7 -7
- package/dist/core/cells/coreCellsFeature.utils.d.cts +4 -4
- package/dist/core/cells/coreCellsFeature.utils.d.ts +4 -4
- package/dist/core/columns/constructColumn.cjs +4 -5
- package/dist/core/columns/constructColumn.cjs.map +1 -1
- package/dist/core/columns/constructColumn.d.cts +3 -3
- package/dist/core/columns/constructColumn.d.ts +3 -3
- package/dist/core/columns/constructColumn.js +4 -5
- package/dist/core/columns/constructColumn.js.map +1 -1
- package/dist/core/columns/coreColumnsFeature.cjs +12 -18
- package/dist/core/columns/coreColumnsFeature.cjs.map +1 -1
- package/dist/core/columns/coreColumnsFeature.js +12 -18
- package/dist/core/columns/coreColumnsFeature.js.map +1 -1
- package/dist/core/columns/coreColumnsFeature.types.d.cts +7 -7
- package/dist/core/columns/coreColumnsFeature.types.d.ts +7 -7
- package/dist/core/columns/coreColumnsFeature.utils.cjs +4 -8
- package/dist/core/columns/coreColumnsFeature.utils.cjs.map +1 -1
- package/dist/core/columns/coreColumnsFeature.utils.d.cts +9 -9
- package/dist/core/columns/coreColumnsFeature.utils.d.ts +9 -9
- package/dist/core/columns/coreColumnsFeature.utils.js +5 -9
- package/dist/core/columns/coreColumnsFeature.utils.js.map +1 -1
- package/dist/core/coreFeatures.cjs.map +1 -1
- package/dist/core/coreFeatures.d.cts +1 -1
- package/dist/core/coreFeatures.d.ts +1 -1
- package/dist/core/coreFeatures.js.map +1 -1
- package/dist/core/headers/buildHeaderGroups.cjs +1 -2
- package/dist/core/headers/buildHeaderGroups.cjs.map +1 -1
- package/dist/core/headers/buildHeaderGroups.d.cts +2 -2
- package/dist/core/headers/buildHeaderGroups.d.ts +2 -2
- package/dist/core/headers/buildHeaderGroups.js +1 -2
- package/dist/core/headers/buildHeaderGroups.js.map +1 -1
- package/dist/core/headers/constructHeader.cjs +1 -4
- package/dist/core/headers/constructHeader.cjs.map +1 -1
- package/dist/core/headers/constructHeader.d.cts +2 -2
- package/dist/core/headers/constructHeader.d.ts +2 -2
- package/dist/core/headers/constructHeader.js +1 -4
- package/dist/core/headers/constructHeader.js.map +1 -1
- package/dist/core/headers/coreHeadersFeature.cjs +8 -11
- package/dist/core/headers/coreHeadersFeature.cjs.map +1 -1
- package/dist/core/headers/coreHeadersFeature.js +8 -11
- package/dist/core/headers/coreHeadersFeature.js.map +1 -1
- package/dist/core/headers/coreHeadersFeature.types.d.cts +6 -6
- package/dist/core/headers/coreHeadersFeature.types.d.ts +6 -6
- package/dist/core/headers/coreHeadersFeature.utils.cjs +8 -10
- package/dist/core/headers/coreHeadersFeature.utils.cjs.map +1 -1
- package/dist/core/headers/coreHeadersFeature.utils.d.cts +6 -6
- package/dist/core/headers/coreHeadersFeature.utils.d.ts +6 -6
- package/dist/core/headers/coreHeadersFeature.utils.js +8 -10
- package/dist/core/headers/coreHeadersFeature.utils.js.map +1 -1
- package/dist/core/row-models/coreRowModelsFeature.types.d.cts +7 -15
- package/dist/core/row-models/coreRowModelsFeature.types.d.ts +7 -15
- package/dist/core/row-models/coreRowModelsFeature.utils.cjs +8 -26
- package/dist/core/row-models/coreRowModelsFeature.utils.cjs.map +1 -1
- package/dist/core/row-models/coreRowModelsFeature.utils.d.cts +16 -16
- package/dist/core/row-models/coreRowModelsFeature.utils.d.ts +16 -16
- package/dist/core/row-models/coreRowModelsFeature.utils.js +8 -26
- package/dist/core/row-models/coreRowModelsFeature.utils.js.map +1 -1
- package/dist/core/row-models/createCoreRowModel.cjs +4 -6
- package/dist/core/row-models/createCoreRowModel.cjs.map +1 -1
- package/dist/core/row-models/createCoreRowModel.d.cts +2 -2
- package/dist/core/row-models/createCoreRowModel.d.ts +2 -2
- package/dist/core/row-models/createCoreRowModel.js +5 -7
- package/dist/core/row-models/createCoreRowModel.js.map +1 -1
- package/dist/core/rows/constructRow.cjs +6 -10
- package/dist/core/rows/constructRow.cjs.map +1 -1
- package/dist/core/rows/constructRow.d.cts +2 -2
- package/dist/core/rows/constructRow.d.ts +2 -2
- package/dist/core/rows/constructRow.js +7 -10
- package/dist/core/rows/constructRow.js.map +1 -1
- package/dist/core/rows/coreRowsFeature.cjs +18 -2
- package/dist/core/rows/coreRowsFeature.cjs.map +1 -1
- package/dist/core/rows/coreRowsFeature.js +19 -3
- package/dist/core/rows/coreRowsFeature.js.map +1 -1
- package/dist/core/rows/coreRowsFeature.types.d.cts +41 -7
- package/dist/core/rows/coreRowsFeature.types.d.ts +41 -7
- package/dist/core/rows/coreRowsFeature.utils.cjs +62 -8
- package/dist/core/rows/coreRowsFeature.utils.cjs.map +1 -1
- package/dist/core/rows/coreRowsFeature.utils.d.cts +24 -5
- package/dist/core/rows/coreRowsFeature.utils.d.ts +24 -5
- package/dist/core/rows/coreRowsFeature.utils.js +61 -10
- package/dist/core/rows/coreRowsFeature.utils.js.map +1 -1
- package/dist/core/table/constructTable.cjs +24 -14
- package/dist/core/table/constructTable.cjs.map +1 -1
- package/dist/core/table/constructTable.d.cts +1 -1
- package/dist/core/table/constructTable.d.ts +1 -1
- package/dist/core/table/constructTable.js +24 -14
- package/dist/core/table/constructTable.js.map +1 -1
- package/dist/core/table/coreTablesFeature.types.d.cts +32 -19
- package/dist/core/table/coreTablesFeature.types.d.ts +32 -19
- package/dist/core/table/coreTablesFeature.utils.cjs +38 -14
- package/dist/core/table/coreTablesFeature.utils.cjs.map +1 -1
- package/dist/core/table/coreTablesFeature.utils.d.cts +10 -7
- package/dist/core/table/coreTablesFeature.utils.d.ts +10 -7
- package/dist/core/table/coreTablesFeature.utils.js +38 -14
- package/dist/core/table/coreTablesFeature.utils.js.map +1 -1
- package/dist/experimental-worker-plugin.cjs +14 -0
- package/dist/experimental-worker-plugin.d.cts +5 -0
- package/dist/experimental-worker-plugin.d.ts +5 -0
- package/dist/experimental-worker-plugin.js +6 -0
- package/dist/features/aggregation/aggregationFeature.cjs +39 -0
- package/dist/features/aggregation/aggregationFeature.cjs.map +1 -0
- package/dist/features/aggregation/aggregationFeature.d.cts +10 -0
- package/dist/features/aggregation/aggregationFeature.d.ts +10 -0
- package/dist/features/aggregation/aggregationFeature.js +39 -0
- package/dist/features/aggregation/aggregationFeature.js.map +1 -0
- package/dist/features/aggregation/aggregationFeature.types.cjs +13 -0
- package/dist/features/aggregation/aggregationFeature.types.cjs.map +1 -0
- package/dist/features/aggregation/aggregationFeature.types.d.cts +195 -0
- package/dist/features/aggregation/aggregationFeature.types.d.ts +195 -0
- package/dist/features/aggregation/aggregationFeature.types.js +12 -0
- package/dist/features/aggregation/aggregationFeature.types.js.map +1 -0
- package/dist/features/aggregation/aggregationFeature.utils.cjs +212 -0
- package/dist/features/aggregation/aggregationFeature.utils.cjs.map +1 -0
- package/dist/features/aggregation/aggregationFeature.utils.d.cts +34 -0
- package/dist/features/aggregation/aggregationFeature.utils.d.ts +34 -0
- package/dist/features/aggregation/aggregationFeature.utils.js +206 -0
- package/dist/features/aggregation/aggregationFeature.utils.js.map +1 -0
- package/dist/features/aggregation/aggregationFns.cjs +246 -0
- package/dist/features/aggregation/aggregationFns.cjs.map +1 -0
- package/dist/features/aggregation/aggregationFns.d.cts +68 -0
- package/dist/features/aggregation/aggregationFns.d.ts +68 -0
- package/dist/features/aggregation/aggregationFns.js +235 -0
- package/dist/features/aggregation/aggregationFns.js.map +1 -0
- package/dist/features/column-faceting/columnFacetingFeature.cjs +12 -18
- package/dist/features/column-faceting/columnFacetingFeature.cjs.map +1 -1
- package/dist/features/column-faceting/columnFacetingFeature.js +12 -18
- package/dist/features/column-faceting/columnFacetingFeature.js.map +1 -1
- package/dist/features/column-faceting/columnFacetingFeature.types.d.cts +15 -33
- package/dist/features/column-faceting/columnFacetingFeature.types.d.ts +15 -33
- package/dist/features/column-faceting/columnFacetingFeature.utils.cjs +23 -12
- package/dist/features/column-faceting/columnFacetingFeature.utils.cjs.map +1 -1
- package/dist/features/column-faceting/columnFacetingFeature.utils.d.cts +9 -9
- package/dist/features/column-faceting/columnFacetingFeature.utils.d.ts +9 -9
- package/dist/features/column-faceting/columnFacetingFeature.utils.js +24 -12
- package/dist/features/column-faceting/columnFacetingFeature.utils.js.map +1 -1
- package/dist/features/column-faceting/createFacetedMinMaxValues.cjs +7 -4
- package/dist/features/column-faceting/createFacetedMinMaxValues.cjs.map +1 -1
- package/dist/features/column-faceting/createFacetedMinMaxValues.d.cts +1 -1
- package/dist/features/column-faceting/createFacetedMinMaxValues.d.ts +1 -1
- package/dist/features/column-faceting/createFacetedMinMaxValues.js +8 -5
- package/dist/features/column-faceting/createFacetedMinMaxValues.js.map +1 -1
- package/dist/features/column-faceting/createFacetedRowModel.cjs +10 -15
- package/dist/features/column-faceting/createFacetedRowModel.cjs.map +1 -1
- package/dist/features/column-faceting/createFacetedRowModel.d.cts +2 -2
- package/dist/features/column-faceting/createFacetedRowModel.d.ts +2 -2
- package/dist/features/column-faceting/createFacetedRowModel.js +10 -15
- package/dist/features/column-faceting/createFacetedRowModel.js.map +1 -1
- package/dist/features/column-faceting/createFacetedUniqueValues.cjs +10 -6
- package/dist/features/column-faceting/createFacetedUniqueValues.cjs.map +1 -1
- package/dist/features/column-faceting/createFacetedUniqueValues.d.cts +1 -1
- package/dist/features/column-faceting/createFacetedUniqueValues.d.ts +1 -1
- package/dist/features/column-faceting/createFacetedUniqueValues.js +11 -7
- package/dist/features/column-faceting/createFacetedUniqueValues.js.map +1 -1
- package/dist/features/column-filtering/columnFilteringFeature.cjs +2 -2
- package/dist/features/column-filtering/columnFilteringFeature.cjs.map +1 -1
- package/dist/features/column-filtering/columnFilteringFeature.js +3 -3
- package/dist/features/column-filtering/columnFilteringFeature.js.map +1 -1
- package/dist/features/column-filtering/columnFilteringFeature.types.d.cts +83 -29
- package/dist/features/column-filtering/columnFilteringFeature.types.d.ts +83 -29
- package/dist/features/column-filtering/columnFilteringFeature.utils.cjs +23 -17
- package/dist/features/column-filtering/columnFilteringFeature.utils.cjs.map +1 -1
- package/dist/features/column-filtering/columnFilteringFeature.utils.d.cts +18 -14
- package/dist/features/column-filtering/columnFilteringFeature.utils.d.ts +18 -14
- package/dist/features/column-filtering/columnFilteringFeature.utils.js +23 -17
- package/dist/features/column-filtering/columnFilteringFeature.utils.js.map +1 -1
- package/dist/features/column-filtering/createFilteredRowModel.cjs +29 -25
- package/dist/features/column-filtering/createFilteredRowModel.cjs.map +1 -1
- package/dist/features/column-filtering/createFilteredRowModel.d.cts +10 -4
- package/dist/features/column-filtering/createFilteredRowModel.d.ts +10 -4
- package/dist/features/column-filtering/createFilteredRowModel.js +30 -26
- package/dist/features/column-filtering/createFilteredRowModel.js.map +1 -1
- package/dist/features/column-filtering/filterFns.cjs +399 -0
- package/dist/features/column-filtering/filterFns.cjs.map +1 -0
- package/dist/features/column-filtering/filterFns.d.cts +210 -0
- package/dist/features/column-filtering/filterFns.d.ts +210 -0
- package/dist/features/column-filtering/filterFns.js +375 -0
- package/dist/features/column-filtering/filterFns.js.map +1 -0
- package/dist/features/column-filtering/filterRowsUtils.cjs +3 -2
- package/dist/features/column-filtering/filterRowsUtils.cjs.map +1 -1
- package/dist/features/column-filtering/filterRowsUtils.js +3 -2
- package/dist/features/column-filtering/filterRowsUtils.js.map +1 -1
- package/dist/features/column-grouping/columnGroupingFeature.cjs +4 -16
- package/dist/features/column-grouping/columnGroupingFeature.cjs.map +1 -1
- package/dist/features/column-grouping/columnGroupingFeature.d.cts +1 -1
- package/dist/features/column-grouping/columnGroupingFeature.d.ts +1 -1
- package/dist/features/column-grouping/columnGroupingFeature.js +6 -18
- package/dist/features/column-grouping/columnGroupingFeature.js.map +1 -1
- package/dist/features/column-grouping/columnGroupingFeature.types.d.cts +14 -50
- package/dist/features/column-grouping/columnGroupingFeature.types.d.ts +14 -50
- package/dist/features/column-grouping/columnGroupingFeature.utils.cjs +6 -61
- package/dist/features/column-grouping/columnGroupingFeature.utils.cjs.map +1 -1
- package/dist/features/column-grouping/columnGroupingFeature.utils.d.cts +12 -49
- package/dist/features/column-grouping/columnGroupingFeature.utils.d.ts +12 -49
- package/dist/features/column-grouping/columnGroupingFeature.utils.js +8 -60
- package/dist/features/column-grouping/columnGroupingFeature.utils.js.map +1 -1
- package/dist/features/column-grouping/createGroupedRowModel.cjs +37 -24
- package/dist/features/column-grouping/createGroupedRowModel.cjs.map +1 -1
- package/dist/features/column-grouping/createGroupedRowModel.d.cts +6 -4
- package/dist/features/column-grouping/createGroupedRowModel.d.ts +6 -4
- package/dist/features/column-grouping/createGroupedRowModel.js +39 -26
- package/dist/features/column-grouping/createGroupedRowModel.js.map +1 -1
- package/dist/features/column-ordering/columnOrderingFeature.cjs +17 -21
- package/dist/features/column-ordering/columnOrderingFeature.cjs.map +1 -1
- package/dist/features/column-ordering/columnOrderingFeature.js +18 -22
- package/dist/features/column-ordering/columnOrderingFeature.js.map +1 -1
- package/dist/features/column-ordering/columnOrderingFeature.types.d.cts +28 -3
- package/dist/features/column-ordering/columnOrderingFeature.types.d.ts +28 -3
- package/dist/features/column-ordering/columnOrderingFeature.utils.cjs +35 -15
- package/dist/features/column-ordering/columnOrderingFeature.utils.cjs.map +1 -1
- package/dist/features/column-ordering/columnOrderingFeature.utils.d.cts +26 -14
- package/dist/features/column-ordering/columnOrderingFeature.utils.d.ts +26 -14
- package/dist/features/column-ordering/columnOrderingFeature.utils.js +36 -17
- package/dist/features/column-ordering/columnOrderingFeature.utils.js.map +1 -1
- package/dist/features/column-pinning/columnPinningFeature.cjs +124 -143
- package/dist/features/column-pinning/columnPinningFeature.cjs.map +1 -1
- package/dist/features/column-pinning/columnPinningFeature.d.cts +6 -1
- package/dist/features/column-pinning/columnPinningFeature.d.ts +6 -1
- package/dist/features/column-pinning/columnPinningFeature.js +125 -144
- package/dist/features/column-pinning/columnPinningFeature.js.map +1 -1
- package/dist/features/column-pinning/columnPinningFeature.types.d.cts +52 -41
- package/dist/features/column-pinning/columnPinningFeature.types.d.ts +52 -41
- package/dist/features/column-pinning/columnPinningFeature.utils.cjs +161 -162
- package/dist/features/column-pinning/columnPinningFeature.utils.cjs.map +1 -1
- package/dist/features/column-pinning/columnPinningFeature.utils.d.cts +101 -92
- package/dist/features/column-pinning/columnPinningFeature.utils.d.ts +101 -92
- package/dist/features/column-pinning/columnPinningFeature.utils.js +148 -149
- package/dist/features/column-pinning/columnPinningFeature.utils.js.map +1 -1
- package/dist/features/column-resizing/columnResizingFeature.types.d.cts +1 -4
- package/dist/features/column-resizing/columnResizingFeature.types.d.ts +1 -4
- package/dist/features/column-resizing/columnResizingFeature.utils.cjs +84 -44
- package/dist/features/column-resizing/columnResizingFeature.utils.cjs.map +1 -1
- package/dist/features/column-resizing/columnResizingFeature.utils.d.cts +6 -6
- package/dist/features/column-resizing/columnResizingFeature.utils.d.ts +6 -6
- package/dist/features/column-resizing/columnResizingFeature.utils.js +85 -45
- package/dist/features/column-resizing/columnResizingFeature.utils.js.map +1 -1
- package/dist/features/column-sizing/columnSizingFeature.cjs +33 -67
- package/dist/features/column-sizing/columnSizingFeature.cjs.map +1 -1
- package/dist/features/column-sizing/columnSizingFeature.js +34 -68
- package/dist/features/column-sizing/columnSizingFeature.js.map +1 -1
- package/dist/features/column-sizing/columnSizingFeature.types.d.cts +52 -9
- package/dist/features/column-sizing/columnSizingFeature.types.d.ts +52 -9
- package/dist/features/column-sizing/columnSizingFeature.utils.cjs +88 -45
- package/dist/features/column-sizing/columnSizingFeature.utils.cjs.map +1 -1
- package/dist/features/column-sizing/columnSizingFeature.utils.d.cts +43 -25
- package/dist/features/column-sizing/columnSizingFeature.utils.d.ts +43 -25
- package/dist/features/column-sizing/columnSizingFeature.utils.js +88 -46
- package/dist/features/column-sizing/columnSizingFeature.utils.js.map +1 -1
- package/dist/features/column-visibility/columnVisibilityFeature.cjs +25 -36
- package/dist/features/column-visibility/columnVisibilityFeature.cjs.map +1 -1
- package/dist/features/column-visibility/columnVisibilityFeature.js +25 -36
- package/dist/features/column-visibility/columnVisibilityFeature.js.map +1 -1
- package/dist/features/column-visibility/columnVisibilityFeature.types.d.cts +3 -3
- package/dist/features/column-visibility/columnVisibilityFeature.types.d.ts +3 -3
- package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs +30 -29
- package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs.map +1 -1
- package/dist/features/column-visibility/columnVisibilityFeature.utils.d.cts +18 -18
- package/dist/features/column-visibility/columnVisibilityFeature.utils.d.ts +18 -18
- package/dist/features/column-visibility/columnVisibilityFeature.utils.js +31 -30
- package/dist/features/column-visibility/columnVisibilityFeature.utils.js.map +1 -1
- package/dist/features/global-filtering/globalFilteringFeature.cjs +1 -2
- package/dist/features/global-filtering/globalFilteringFeature.cjs.map +1 -1
- package/dist/features/global-filtering/globalFilteringFeature.js +1 -2
- package/dist/features/global-filtering/globalFilteringFeature.js.map +1 -1
- package/dist/features/global-filtering/globalFilteringFeature.types.d.cts +2 -2
- package/dist/features/global-filtering/globalFilteringFeature.types.d.ts +2 -2
- package/dist/features/global-filtering/globalFilteringFeature.utils.cjs +6 -6
- package/dist/features/global-filtering/globalFilteringFeature.utils.cjs.map +1 -1
- package/dist/features/global-filtering/globalFilteringFeature.utils.d.cts +8 -11
- package/dist/features/global-filtering/globalFilteringFeature.utils.d.ts +8 -11
- package/dist/features/global-filtering/globalFilteringFeature.utils.js +6 -6
- package/dist/features/global-filtering/globalFilteringFeature.utils.js.map +1 -1
- package/dist/features/row-expanding/createExpandedRowModel.cjs +6 -10
- package/dist/features/row-expanding/createExpandedRowModel.cjs.map +1 -1
- package/dist/features/row-expanding/createExpandedRowModel.d.cts +2 -2
- package/dist/features/row-expanding/createExpandedRowModel.d.ts +2 -2
- package/dist/features/row-expanding/createExpandedRowModel.js +6 -10
- package/dist/features/row-expanding/createExpandedRowModel.js.map +1 -1
- package/dist/features/row-expanding/rowExpandingFeature.types.d.cts +6 -15
- package/dist/features/row-expanding/rowExpandingFeature.types.d.ts +6 -15
- package/dist/features/row-expanding/rowExpandingFeature.utils.cjs +28 -26
- package/dist/features/row-expanding/rowExpandingFeature.utils.cjs.map +1 -1
- package/dist/features/row-expanding/rowExpandingFeature.utils.d.cts +10 -10
- package/dist/features/row-expanding/rowExpandingFeature.utils.d.ts +10 -10
- package/dist/features/row-expanding/rowExpandingFeature.utils.js +29 -27
- package/dist/features/row-expanding/rowExpandingFeature.utils.js.map +1 -1
- package/dist/features/row-pagination/createPaginatedRowModel.cjs +6 -10
- package/dist/features/row-pagination/createPaginatedRowModel.cjs.map +1 -1
- package/dist/features/row-pagination/createPaginatedRowModel.d.cts +2 -2
- package/dist/features/row-pagination/createPaginatedRowModel.d.ts +2 -2
- package/dist/features/row-pagination/createPaginatedRowModel.js +6 -10
- package/dist/features/row-pagination/createPaginatedRowModel.js.map +1 -1
- package/dist/features/row-pagination/rowPaginationFeature.types.d.cts +5 -14
- package/dist/features/row-pagination/rowPaginationFeature.types.d.ts +5 -14
- package/dist/features/row-pagination/rowPaginationFeature.utils.cjs +9 -15
- package/dist/features/row-pagination/rowPaginationFeature.utils.cjs.map +1 -1
- package/dist/features/row-pagination/rowPaginationFeature.utils.d.cts +17 -17
- package/dist/features/row-pagination/rowPaginationFeature.utils.d.ts +17 -17
- package/dist/features/row-pagination/rowPaginationFeature.utils.js +9 -15
- package/dist/features/row-pagination/rowPaginationFeature.utils.js.map +1 -1
- package/dist/features/row-pinning/rowPinningFeature.cjs +4 -16
- package/dist/features/row-pinning/rowPinningFeature.cjs.map +1 -1
- package/dist/features/row-pinning/rowPinningFeature.js +4 -16
- package/dist/features/row-pinning/rowPinningFeature.js.map +1 -1
- package/dist/features/row-pinning/rowPinningFeature.types.d.cts +2 -2
- package/dist/features/row-pinning/rowPinningFeature.types.d.ts +2 -2
- package/dist/features/row-pinning/rowPinningFeature.utils.cjs +9 -14
- package/dist/features/row-pinning/rowPinningFeature.utils.cjs.map +1 -1
- package/dist/features/row-pinning/rowPinningFeature.utils.d.cts +7 -7
- package/dist/features/row-pinning/rowPinningFeature.utils.d.ts +7 -7
- package/dist/features/row-pinning/rowPinningFeature.utils.js +9 -14
- package/dist/features/row-pinning/rowPinningFeature.utils.js.map +1 -1
- package/dist/features/row-selection/rowSelectionFeature.cjs +66 -22
- package/dist/features/row-selection/rowSelectionFeature.cjs.map +1 -1
- package/dist/features/row-selection/rowSelectionFeature.js +67 -23
- package/dist/features/row-selection/rowSelectionFeature.js.map +1 -1
- package/dist/features/row-selection/rowSelectionFeature.types.d.cts +49 -11
- package/dist/features/row-selection/rowSelectionFeature.types.d.ts +49 -11
- package/dist/features/row-selection/rowSelectionFeature.utils.cjs +128 -72
- package/dist/features/row-selection/rowSelectionFeature.utils.cjs.map +1 -1
- package/dist/features/row-selection/rowSelectionFeature.utils.d.cts +57 -30
- package/dist/features/row-selection/rowSelectionFeature.utils.d.ts +57 -30
- package/dist/features/row-selection/rowSelectionFeature.utils.js +129 -74
- package/dist/features/row-selection/rowSelectionFeature.utils.js.map +1 -1
- package/dist/features/row-sorting/createSortedRowModel.cjs +69 -50
- package/dist/features/row-sorting/createSortedRowModel.cjs.map +1 -1
- package/dist/features/row-sorting/createSortedRowModel.d.cts +10 -4
- package/dist/features/row-sorting/createSortedRowModel.d.ts +10 -4
- package/dist/features/row-sorting/createSortedRowModel.js +70 -51
- package/dist/features/row-sorting/createSortedRowModel.js.map +1 -1
- package/dist/features/row-sorting/rowSortingFeature.types.d.cts +54 -22
- package/dist/features/row-sorting/rowSortingFeature.types.d.ts +54 -22
- package/dist/features/row-sorting/rowSortingFeature.utils.cjs +31 -17
- package/dist/features/row-sorting/rowSortingFeature.utils.cjs.map +1 -1
- package/dist/features/row-sorting/rowSortingFeature.utils.d.cts +16 -16
- package/dist/features/row-sorting/rowSortingFeature.utils.d.ts +16 -16
- package/dist/features/row-sorting/rowSortingFeature.utils.js +31 -17
- package/dist/features/row-sorting/rowSortingFeature.utils.js.map +1 -1
- package/dist/features/row-sorting/sortFns.cjs +226 -0
- package/dist/features/row-sorting/sortFns.cjs.map +1 -0
- package/dist/features/row-sorting/sortFns.d.cts +98 -0
- package/dist/features/row-sorting/sortFns.d.ts +98 -0
- package/dist/features/row-sorting/sortFns.js +217 -0
- package/dist/features/row-sorting/sortFns.js.map +1 -0
- package/dist/features/stockFeatures.cjs +2 -0
- package/dist/features/stockFeatures.cjs.map +1 -1
- package/dist/features/stockFeatures.d.cts +2 -0
- package/dist/features/stockFeatures.d.ts +2 -0
- package/dist/features/stockFeatures.js +2 -0
- package/dist/features/stockFeatures.js.map +1 -1
- package/dist/flex-render.d.cts +1 -1
- package/dist/flex-render.d.ts +1 -1
- package/dist/helpers/columnHelper.cjs.map +1 -1
- package/dist/helpers/columnHelper.d.cts +2 -2
- package/dist/helpers/columnHelper.d.ts +2 -2
- package/dist/helpers/columnHelper.js.map +1 -1
- package/dist/helpers/metaHelper.cjs +30 -0
- package/dist/helpers/metaHelper.cjs.map +1 -0
- package/dist/helpers/metaHelper.d.cts +26 -0
- package/dist/helpers/metaHelper.d.ts +26 -0
- package/dist/helpers/metaHelper.js +29 -0
- package/dist/helpers/metaHelper.js.map +1 -0
- package/dist/helpers/tableFeatures.cjs +32 -3
- package/dist/helpers/tableFeatures.cjs.map +1 -1
- package/dist/helpers/tableFeatures.d.cts +34 -5
- package/dist/helpers/tableFeatures.d.ts +34 -5
- package/dist/helpers/tableFeatures.js +32 -3
- package/dist/helpers/tableFeatures.js.map +1 -1
- package/dist/index.cjs +23 -3
- package/dist/index.d.cts +31 -28
- package/dist/index.d.ts +31 -28
- package/dist/index.js +8 -5
- package/dist/static-functions.cjs +30 -19
- package/dist/static-functions.d.cts +8 -7
- package/dist/static-functions.d.ts +8 -7
- package/dist/static-functions.js +8 -7
- package/dist/store-reactivity-bindings.cjs +3 -3
- package/dist/store-reactivity-bindings.cjs.map +1 -1
- package/dist/store-reactivity-bindings.d.cts +1 -1
- package/dist/store-reactivity-bindings.d.ts +1 -1
- package/dist/store-reactivity-bindings.js +3 -3
- package/dist/store-reactivity-bindings.js.map +1 -1
- package/dist/types/Cell.d.cts +4 -2
- package/dist/types/Cell.d.ts +4 -2
- package/dist/types/Column.d.cts +15 -15
- package/dist/types/Column.d.ts +15 -15
- package/dist/types/ColumnDef.d.cts +30 -14
- package/dist/types/ColumnDef.d.ts +30 -14
- package/dist/types/Header.d.cts +2 -2
- package/dist/types/Header.d.ts +2 -2
- package/dist/types/HeaderGroup.d.cts +2 -2
- package/dist/types/HeaderGroup.d.ts +2 -2
- package/dist/types/Row.d.cts +6 -4
- package/dist/types/Row.d.ts +6 -4
- package/dist/types/RowModel.d.cts +11 -23
- package/dist/types/RowModel.d.ts +11 -23
- package/dist/types/RowModelFns.d.cts +4 -4
- package/dist/types/RowModelFns.d.ts +4 -4
- package/dist/types/Table.d.cts +26 -31
- package/dist/types/Table.d.ts +26 -31
- package/dist/types/TableFeatures.d.cts +350 -22
- package/dist/types/TableFeatures.d.ts +350 -22
- package/dist/types/TableOptions.d.cts +22 -14
- package/dist/types/TableOptions.d.ts +22 -14
- package/dist/types/TableState.d.cts +6 -6
- package/dist/types/TableState.d.ts +6 -6
- package/dist/types/type-utils.d.cts +8 -1
- package/dist/types/type-utils.d.ts +8 -1
- package/dist/utils.cjs +51 -29
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.cts +30 -8
- package/dist/utils.d.ts +30 -8
- package/dist/utils.js +49 -30
- package/dist/utils.js.map +1 -1
- package/dist/worker/createTableWorker.cjs +189 -0
- package/dist/worker/createTableWorker.cjs.map +1 -0
- package/dist/worker/createTableWorker.d.cts +102 -0
- package/dist/worker/createTableWorker.d.ts +102 -0
- package/dist/worker/createTableWorker.js +186 -0
- package/dist/worker/createTableWorker.js.map +1 -0
- package/dist/worker/createWorkerRowModel.cjs +78 -0
- package/dist/worker/createWorkerRowModel.cjs.map +1 -0
- package/dist/worker/createWorkerRowModel.d.cts +42 -0
- package/dist/worker/createWorkerRowModel.d.ts +42 -0
- package/dist/worker/createWorkerRowModel.js +78 -0
- package/dist/worker/createWorkerRowModel.js.map +1 -0
- package/dist/worker/initTableWorker.cjs +100 -0
- package/dist/worker/initTableWorker.cjs.map +1 -0
- package/dist/worker/initTableWorker.d.cts +33 -0
- package/dist/worker/initTableWorker.d.ts +33 -0
- package/dist/worker/initTableWorker.js +100 -0
- package/dist/worker/initTableWorker.js.map +1 -0
- package/dist/worker/rebuildRowModel.cjs +72 -0
- package/dist/worker/rebuildRowModel.cjs.map +1 -0
- package/dist/worker/rebuildRowModel.d.cts +9 -0
- package/dist/worker/rebuildRowModel.d.ts +9 -0
- package/dist/worker/rebuildRowModel.js +72 -0
- package/dist/worker/rebuildRowModel.js.map +1 -0
- package/dist/worker/serializeRowModel.cjs +53 -0
- package/dist/worker/serializeRowModel.cjs.map +1 -0
- package/dist/worker/serializeRowModel.js +52 -0
- package/dist/worker/serializeRowModel.js.map +1 -0
- package/dist/worker/tableWorkerProtocol.cjs +29 -0
- package/dist/worker/tableWorkerProtocol.cjs.map +1 -0
- package/dist/worker/tableWorkerProtocol.d.cts +88 -0
- package/dist/worker/tableWorkerProtocol.d.ts +88 -0
- package/dist/worker/tableWorkerProtocol.js +27 -0
- package/dist/worker/tableWorkerProtocol.js.map +1 -0
- package/package.json +8 -3
- package/skills/aggregation/SKILL.md +141 -0
- package/skills/api-not-found/SKILL.md +113 -0
- package/skills/client-vs-server/SKILL.md +164 -0
- package/skills/column-faceting/SKILL.md +97 -0
- package/skills/column-filtering/SKILL.md +87 -0
- package/skills/column-ordering/SKILL.md +75 -0
- package/skills/column-pinning/SKILL.md +89 -0
- package/skills/column-resizing/SKILL.md +91 -0
- package/skills/column-sizing/SKILL.md +72 -0
- package/skills/column-visibility/SKILL.md +75 -0
- package/skills/core/SKILL.md +175 -0
- package/skills/custom-features/SKILL.md +235 -0
- package/skills/expanding/SKILL.md +80 -0
- package/skills/global-filtering/SKILL.md +84 -0
- package/skills/grouping/SKILL.md +51 -401
- package/skills/migrate-v8-to-v9/SKILL.md +274 -416
- package/skills/pagination/SKILL.md +37 -344
- package/skills/row-pinning/SKILL.md +47 -234
- package/skills/row-selection/SKILL.md +75 -302
- package/skills/sorting/SKILL.md +45 -303
- package/skills/table-features/SKILL.md +159 -0
- package/skills/typescript/SKILL.md +126 -0
- package/src/core/cells/coreCellsFeature.types.ts +6 -6
- package/src/core/columns/constructColumn.ts +6 -0
- package/src/core/columns/coreColumnsFeature.types.ts +8 -8
- package/src/core/columns/coreColumnsFeature.utils.ts +4 -4
- package/src/core/coreFeatures.ts +1 -1
- package/src/core/headers/buildHeaderGroups.ts +4 -2
- package/src/core/headers/coreHeadersFeature.types.ts +12 -12
- package/src/core/headers/coreHeadersFeature.utils.ts +7 -8
- package/src/core/row-models/coreRowModelsFeature.types.ts +6 -20
- package/src/core/row-models/coreRowModelsFeature.utils.ts +8 -8
- package/src/core/row-models/createCoreRowModel.ts +7 -6
- package/src/core/rows/constructRow.ts +4 -2
- package/src/core/rows/coreRowsFeature.ts +21 -0
- package/src/core/rows/coreRowsFeature.types.ts +45 -8
- package/src/core/rows/coreRowsFeature.utils.ts +93 -5
- package/src/core/table/constructTable.ts +44 -6
- package/src/core/table/coreTablesFeature.types.ts +45 -20
- package/src/core/table/coreTablesFeature.utils.ts +59 -19
- package/src/experimental-worker-plugin.ts +22 -0
- package/src/features/aggregation/aggregationFeature.ts +60 -0
- package/src/features/aggregation/aggregationFeature.types.ts +339 -0
- package/src/features/aggregation/aggregationFeature.utils.ts +430 -0
- package/src/features/aggregation/aggregationFns.ts +345 -0
- package/src/features/column-faceting/columnFacetingFeature.types.ts +17 -48
- package/src/features/column-faceting/columnFacetingFeature.utils.ts +53 -18
- package/src/features/column-faceting/createFacetedMinMaxValues.ts +33 -7
- package/src/features/column-faceting/createFacetedRowModel.ts +8 -1
- package/src/features/column-faceting/createFacetedUniqueValues.ts +41 -10
- package/src/features/column-filtering/columnFilteringFeature.ts +3 -2
- package/src/features/column-filtering/columnFilteringFeature.types.ts +117 -41
- package/src/features/column-filtering/columnFilteringFeature.utils.ts +37 -23
- package/src/features/column-filtering/createFilteredRowModel.ts +28 -17
- package/src/features/column-filtering/filterFns.ts +533 -0
- package/src/features/column-filtering/filterRowsUtils.ts +3 -2
- package/src/features/column-grouping/columnGroupingFeature.ts +3 -21
- package/src/features/column-grouping/columnGroupingFeature.types.ts +21 -95
- package/src/features/column-grouping/columnGroupingFeature.utils.ts +4 -87
- package/src/features/column-grouping/createGroupedRowModel.ts +46 -45
- package/src/features/column-ordering/columnOrderingFeature.ts +12 -7
- package/src/features/column-ordering/columnOrderingFeature.types.ts +29 -3
- package/src/features/column-ordering/columnOrderingFeature.utils.ts +59 -8
- package/src/features/column-pinning/columnPinningFeature.ts +76 -59
- package/src/features/column-pinning/columnPinningFeature.types.ts +53 -42
- package/src/features/column-pinning/columnPinningFeature.utils.ts +184 -170
- package/src/features/column-resizing/columnResizingFeature.types.ts +1 -4
- package/src/features/column-resizing/columnResizingFeature.utils.ts +120 -52
- package/src/features/column-sizing/columnSizingFeature.ts +24 -24
- package/src/features/column-sizing/columnSizingFeature.types.ts +53 -8
- package/src/features/column-sizing/columnSizingFeature.utils.ts +143 -62
- package/src/features/column-visibility/columnVisibilityFeature.ts +4 -0
- package/src/features/column-visibility/columnVisibilityFeature.types.ts +4 -4
- package/src/features/column-visibility/columnVisibilityFeature.utils.ts +48 -30
- package/src/features/global-filtering/globalFilteringFeature.types.ts +4 -4
- package/src/features/global-filtering/globalFilteringFeature.utils.ts +13 -5
- package/src/features/row-expanding/rowExpandingFeature.types.ts +8 -23
- package/src/features/row-expanding/rowExpandingFeature.utils.ts +38 -13
- package/src/features/row-pagination/createPaginatedRowModel.ts +1 -1
- package/src/features/row-pagination/rowPaginationFeature.types.ts +6 -21
- package/src/features/row-pagination/rowPaginationFeature.utils.ts +1 -1
- package/src/features/row-pinning/rowPinningFeature.types.ts +4 -4
- package/src/features/row-selection/rowSelectionFeature.ts +53 -3
- package/src/features/row-selection/rowSelectionFeature.types.ts +54 -10
- package/src/features/row-selection/rowSelectionFeature.utils.ts +273 -91
- package/src/features/row-sorting/createSortedRowModel.ts +107 -75
- package/src/features/row-sorting/rowSortingFeature.types.ts +87 -34
- package/src/features/row-sorting/rowSortingFeature.utils.ts +49 -23
- package/src/features/row-sorting/sortFns.ts +366 -0
- package/src/features/stockFeatures.ts +3 -0
- package/src/helpers/columnHelper.ts +4 -4
- package/src/helpers/metaHelper.ts +24 -0
- package/src/helpers/tableFeatures.ts +37 -5
- package/src/index.ts +8 -8
- package/src/static-functions.ts +1 -0
- package/src/store-reactivity-bindings.ts +1 -1
- package/src/types/Cell.ts +4 -2
- package/src/types/Column.ts +13 -9
- package/src/types/ColumnDef.ts +40 -10
- package/src/types/Header.ts +2 -2
- package/src/types/HeaderGroup.ts +6 -6
- package/src/types/Row.ts +6 -4
- package/src/types/RowModel.ts +19 -74
- package/src/types/RowModelFns.ts +10 -10
- package/src/types/Table.ts +52 -27
- package/src/types/TableFeatures.ts +392 -14
- package/src/types/TableOptions.ts +67 -14
- package/src/types/TableState.ts +15 -1
- package/src/types/type-utils.ts +8 -0
- package/src/utils.ts +60 -8
- package/src/worker/createTableWorker.ts +357 -0
- package/src/worker/createWorkerRowModel.ts +121 -0
- package/src/worker/initTableWorker.ts +164 -0
- package/src/worker/rebuildRowModel.ts +120 -0
- package/src/worker/serializeRowModel.ts +80 -0
- package/src/worker/tableWorkerProtocol.ts +105 -0
- package/dist/fns/aggregationFns.cjs +0 -161
- package/dist/fns/aggregationFns.cjs.map +0 -1
- package/dist/fns/aggregationFns.d.cts +0 -85
- package/dist/fns/aggregationFns.d.ts +0 -85
- package/dist/fns/aggregationFns.js +0 -151
- package/dist/fns/aggregationFns.js.map +0 -1
- package/dist/fns/filterFns.cjs +0 -201
- package/dist/fns/filterFns.cjs.map +0 -1
- package/dist/fns/filterFns.d.cts +0 -167
- package/dist/fns/filterFns.d.ts +0 -167
- package/dist/fns/filterFns.js +0 -185
- package/dist/fns/filterFns.js.map +0 -1
- package/dist/fns/sortFns.cjs +0 -118
- package/dist/fns/sortFns.cjs.map +0 -1
- package/dist/fns/sortFns.d.cts +0 -65
- package/dist/fns/sortFns.d.ts +0 -65
- package/dist/fns/sortFns.js +0 -110
- package/dist/fns/sortFns.js.map +0 -1
- package/skills/column-definitions/SKILL.md +0 -333
- package/skills/column-layout/SKILL.md +0 -328
- package/skills/column-layout/references/subsystems.md +0 -220
- package/skills/customizing-feature-behavior/SKILL.md +0 -416
- package/skills/filtering/SKILL.md +0 -357
- package/skills/filtering/references/faceting-and-fuzzy.md +0 -191
- package/skills/row-expanding/SKILL.md +0 -348
- package/skills/setup/SKILL.md +0 -400
- package/skills/state-management/SKILL.md +0 -388
- package/src/fns/aggregationFns.ts +0 -245
- package/src/fns/filterFns.ts +0 -382
- package/src/fns/sortFns.ts +0 -217
|
@@ -7,84 +7,103 @@ const require_rowSortingFeature_utils = require('./rowSortingFeature.utils.cjs')
|
|
|
7
7
|
* Creates a memoized sorted row model factory.
|
|
8
8
|
*
|
|
9
9
|
* The factory reads the relevant table state atoms and options, then returns a row model function used by the table row-model pipeline.
|
|
10
|
+
*
|
|
11
|
+
* Register the sorting functions you use with the `sortFns` slot on the
|
|
12
|
+
* `features` option:
|
|
13
|
+
* `tableFeatures({ rowSortingFeature, sortedRowModel: createSortedRowModel(), sortFns: { alphanumeric: sortFn_alphanumeric } })`.
|
|
14
|
+
* Importing individual `sortFn_*` functions keeps unused built-ins out of
|
|
15
|
+
* your bundle; sorting functions passed directly to the `sortFn` column
|
|
16
|
+
* option need no registration at all.
|
|
10
17
|
*/
|
|
11
|
-
function createSortedRowModel(
|
|
18
|
+
function createSortedRowModel() {
|
|
12
19
|
return (_table) => {
|
|
13
20
|
const table = _table;
|
|
14
|
-
if (!table._rowModelFns.sortFns) table._rowModelFns.sortFns = sortFns;
|
|
15
21
|
return require_utils.tableMemo({
|
|
16
22
|
feature: "rowSortingFeature",
|
|
17
23
|
table,
|
|
18
24
|
fnName: "table.getSortedRowModel",
|
|
19
|
-
memoDeps: () =>
|
|
20
|
-
var _table$atoms$sorting;
|
|
21
|
-
return [(_table$atoms$sorting = table.atoms.sorting) === null || _table$atoms$sorting === void 0 ? void 0 : _table$atoms$sorting.get(), table.getPreSortedRowModel()];
|
|
22
|
-
},
|
|
25
|
+
memoDeps: () => [table.atoms.sorting?.get(), table.getPreSortedRowModel()],
|
|
23
26
|
fn: () => _createSortedRowModel(table),
|
|
24
27
|
onAfterUpdate: () => require_rowPaginationFeature_utils.table_autoResetPageIndex(table)
|
|
25
28
|
});
|
|
26
29
|
};
|
|
27
30
|
}
|
|
28
31
|
function _createSortedRowModel(table) {
|
|
29
|
-
var _table$atoms$sorting2;
|
|
30
32
|
const preSortedRowModel = table.getPreSortedRowModel();
|
|
31
|
-
const sorting =
|
|
32
|
-
if (!preSortedRowModel.rows.length || !
|
|
33
|
+
const sorting = table.atoms.sorting?.get();
|
|
34
|
+
if (!preSortedRowModel.rows.length || !sorting?.length) return preSortedRowModel;
|
|
33
35
|
const sortedFlatRows = [];
|
|
34
|
-
const availableSorting = sorting.filter((sort) =>
|
|
35
|
-
|
|
36
|
-
|
|
36
|
+
const availableSorting = sorting.filter((sort) => {
|
|
37
|
+
const column = table.getColumn(sort.id);
|
|
38
|
+
return column ? require_rowSortingFeature_utils.column_getCanSort(column) : false;
|
|
39
|
+
});
|
|
40
|
+
if (!availableSorting.length) return preSortedRowModel;
|
|
41
|
+
const resolvedSorting = [];
|
|
42
|
+
for (let i = 0; i < availableSorting.length; i++) {
|
|
43
|
+
const sortEntry = availableSorting[i];
|
|
37
44
|
const column = table.getColumn(sortEntry.id);
|
|
38
|
-
if (!column)
|
|
39
|
-
|
|
45
|
+
if (!column) continue;
|
|
46
|
+
resolvedSorting.push({
|
|
47
|
+
id: sortEntry.id,
|
|
48
|
+
desc: sortEntry.desc,
|
|
40
49
|
sortUndefined: column.columnDef.sortUndefined,
|
|
41
50
|
invertSorting: column.columnDef.invertSorting,
|
|
42
51
|
sortFn: require_rowSortingFeature_utils.column_getSortFn(column)
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
if (
|
|
60
|
-
|
|
61
|
-
if (sortUndefined === "last") return aUndefined ? 1 : -1;
|
|
62
|
-
sortInt = aUndefined && bUndefined ? 0 : aUndefined ? sortUndefined : -sortUndefined;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
if (sortInt === 0) sortInt = columnInfo.sortFn(rowA, rowB, sortEntry.id);
|
|
66
|
-
if (sortInt !== 0) {
|
|
67
|
-
if (isDesc) sortInt *= -1;
|
|
68
|
-
if (columnInfo.invertSorting) sortInt *= -1;
|
|
69
|
-
return sortInt;
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
const compareRows = (rowA, rowB) => {
|
|
55
|
+
for (let i = 0; i < resolvedSorting.length; i++) {
|
|
56
|
+
const sortEntry = resolvedSorting[i];
|
|
57
|
+
const sortUndefined = sortEntry.sortUndefined;
|
|
58
|
+
const isDesc = sortEntry.desc;
|
|
59
|
+
let sortInt = 0;
|
|
60
|
+
if (sortUndefined) {
|
|
61
|
+
const aValue = rowA.getValue(sortEntry.id);
|
|
62
|
+
const bValue = rowB.getValue(sortEntry.id);
|
|
63
|
+
const aUndefined = aValue === void 0;
|
|
64
|
+
const bUndefined = bValue === void 0;
|
|
65
|
+
if (aUndefined && bUndefined) continue;
|
|
66
|
+
if (aUndefined || bUndefined) {
|
|
67
|
+
if (sortUndefined === "first") return aUndefined ? -1 : 1;
|
|
68
|
+
if (sortUndefined === "last") return aUndefined ? 1 : -1;
|
|
69
|
+
sortInt = aUndefined ? sortUndefined : -sortUndefined;
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
if (sortInt === 0) sortInt = sortEntry.sortFn(rowA, rowB, sortEntry.id);
|
|
73
|
+
if (sortInt !== 0) {
|
|
74
|
+
if (isDesc) sortInt *= -1;
|
|
75
|
+
if (sortEntry.invertSorting) sortInt *= -1;
|
|
76
|
+
return sortInt;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return rowA.index - rowB.index;
|
|
80
|
+
};
|
|
81
|
+
const sortData = (rows) => {
|
|
82
|
+
const sortedData = rows.slice();
|
|
83
|
+
sortedData.sort(compareRows);
|
|
84
|
+
let changed = false;
|
|
74
85
|
for (let i = 0; i < sortedData.length; i++) {
|
|
75
86
|
const row = sortedData[i];
|
|
87
|
+
if (row !== rows[i]) changed = true;
|
|
76
88
|
if (row.subRows.length) {
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
89
|
+
const sortedSubRows = sortData(row.subRows);
|
|
90
|
+
if (sortedSubRows.changed) {
|
|
91
|
+
const cloned = Object.create(Object.getPrototypeOf(row));
|
|
92
|
+
require_utils.copyInstancePropertiesWithoutMemos(cloned, row);
|
|
93
|
+
cloned.subRows = sortedSubRows.rows;
|
|
94
|
+
sortedData[i] = cloned;
|
|
95
|
+
sortedFlatRows.push(cloned);
|
|
96
|
+
changed = true;
|
|
97
|
+
} else sortedFlatRows.push(row);
|
|
82
98
|
} else sortedFlatRows.push(row);
|
|
83
99
|
}
|
|
84
|
-
return
|
|
100
|
+
return {
|
|
101
|
+
rows: sortedData,
|
|
102
|
+
changed
|
|
103
|
+
};
|
|
85
104
|
};
|
|
86
105
|
return {
|
|
87
|
-
rows: sortData(preSortedRowModel.rows),
|
|
106
|
+
rows: sortData(preSortedRowModel.rows).rows,
|
|
88
107
|
flatRows: sortedFlatRows,
|
|
89
108
|
rowsById: preSortedRowModel.rowsById
|
|
90
109
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSortedRowModel.cjs","names":["tableMemo","table_autoResetPageIndex","column_getCanSort","column_getSortFn"],"sources":["../../../src/features/row-sorting/createSortedRowModel.ts"],"sourcesContent":["import { tableMemo } from '../../utils'\nimport { table_autoResetPageIndex } from '../row-pagination/rowPaginationFeature.utils'\nimport { column_getCanSort, column_getSortFn } from './rowSortingFeature.utils'\nimport type { Column_Internal } from '../../types/Column'\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 { SortFn
|
|
1
|
+
{"version":3,"file":"createSortedRowModel.cjs","names":["tableMemo","table_autoResetPageIndex","column_getCanSort","column_getSortFn"],"sources":["../../../src/features/row-sorting/createSortedRowModel.ts"],"sourcesContent":["import { copyInstancePropertiesWithoutMemos, tableMemo } from '../../utils'\nimport { table_autoResetPageIndex } from '../row-pagination/rowPaginationFeature.utils'\nimport { column_getCanSort, column_getSortFn } from './rowSortingFeature.utils'\nimport type { Column_Internal } from '../../types/Column'\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 { SortFn } from './rowSortingFeature.types'\nimport type { RowData } from '../../types/type-utils'\n\n/**\n * Creates a memoized sorted row model factory.\n *\n * The factory reads the relevant table state atoms and options, then returns a row model function used by the table row-model pipeline.\n *\n * Register the sorting functions you use with the `sortFns` slot on the\n * `features` option:\n * `tableFeatures({ rowSortingFeature, sortedRowModel: createSortedRowModel(), sortFns: { alphanumeric: sortFn_alphanumeric } })`.\n * Importing individual `sortFn_*` functions keeps unused built-ins out of\n * your bundle; sorting functions passed directly to the `sortFn` column\n * option need no registration at all.\n */\nexport function createSortedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(): (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData> {\n return (_table) => {\n const table = _table as unknown as Table_Internal<TFeatures, TData>\n return tableMemo({\n feature: 'rowSortingFeature',\n table,\n fnName: 'table.getSortedRowModel',\n memoDeps: () => [\n table.atoms.sorting?.get(),\n table.getPreSortedRowModel(),\n ],\n fn: () => _createSortedRowModel(table),\n onAfterUpdate: () => table_autoResetPageIndex(table),\n })\n }\n}\n\nfunction _createSortedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {\n const preSortedRowModel = table.getPreSortedRowModel()\n const sorting = table.atoms.sorting?.get()\n\n if (!preSortedRowModel.rows.length || !sorting?.length) {\n return preSortedRowModel\n }\n\n const sortedFlatRows: Array<Row<TFeatures, TData>> = []\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sorting.filter((sort) => {\n const column = table.getColumn(sort.id)\n return column ? column_getCanSort(column) : false\n })\n\n if (!availableSorting.length) {\n return preSortedRowModel\n }\n\n const resolvedSorting: Array<{\n id: string\n desc?: boolean\n sortUndefined?: false | -1 | 1 | 'first' | 'last'\n invertSorting?: boolean\n sortFn: SortFn<TFeatures, TData>\n }> = []\n\n for (let i = 0; i < availableSorting.length; i++) {\n const sortEntry = availableSorting[i]!\n const column: Column_Internal<TFeatures, TData> | undefined =\n table.getColumn(sortEntry.id)\n if (!column) {\n continue\n }\n\n resolvedSorting.push({\n id: sortEntry.id,\n desc: sortEntry.desc,\n sortUndefined: column.columnDef.sortUndefined,\n invertSorting: column.columnDef.invertSorting,\n sortFn: column_getSortFn(column),\n })\n }\n\n const compareRows = (\n rowA: Row<TFeatures, TData>,\n rowB: Row<TFeatures, TData>,\n ) => {\n for (let i = 0; i < resolvedSorting.length; i++) {\n const sortEntry = resolvedSorting[i]!\n const sortUndefined = sortEntry.sortUndefined\n const isDesc = sortEntry.desc\n\n let sortInt = 0\n\n // All sorting ints should always return in ascending order\n if (sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id)\n const bValue = rowB.getValue(sortEntry.id)\n\n const aUndefined = aValue === undefined\n const bUndefined = bValue === undefined\n\n if (aUndefined && bUndefined) {\n continue\n }\n\n if (aUndefined || bUndefined) {\n if (sortUndefined === 'first') return aUndefined ? -1 : 1\n if (sortUndefined === 'last') return aUndefined ? 1 : -1\n sortInt = aUndefined ? sortUndefined : -sortUndefined\n }\n }\n\n if (sortInt === 0) {\n sortInt = sortEntry.sortFn(rowA, rowB, sortEntry.id)\n }\n\n // If sorting is non-zero, take care of desc and inversion\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1\n }\n\n if (sortEntry.invertSorting) {\n sortInt *= -1\n }\n\n return sortInt\n }\n }\n\n return rowA.index - rowB.index\n }\n\n const sortData = (\n rows: Array<Row<TFeatures, TData>>,\n ): {\n rows: Array<Row<TFeatures, TData>>\n changed: boolean\n } => {\n const sortedData = rows.slice()\n\n sortedData.sort(compareRows)\n let changed = false\n\n // If there are sub-rows, sort them. Clone only rows that need mutation\n // (i.e. have subRows) so we don't corrupt the source row model.\n for (let i = 0; i < sortedData.length; i++) {\n const row = sortedData[i]!\n if (row !== rows[i]) {\n changed = true\n }\n\n if (row.subRows.length) {\n const sortedSubRows = sortData(row.subRows)\n\n if (sortedSubRows.changed) {\n // Preserve prototype chain so methods like getValue() remain accessible\n const cloned = Object.create(Object.getPrototypeOf(row))\n copyInstancePropertiesWithoutMemos(cloned, row)\n cloned.subRows = sortedSubRows.rows\n sortedData[i] = cloned\n sortedFlatRows.push(cloned)\n changed = true\n } else {\n sortedFlatRows.push(row)\n }\n } else {\n sortedFlatRows.push(row)\n }\n }\n\n return { rows: sortedData, changed }\n }\n\n return {\n rows: sortData(preSortedRowModel.rows).rows,\n flatRows: sortedFlatRows,\n rowsById: preSortedRowModel.rowsById,\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,16 +1,22 @@
|
|
|
1
1
|
import { RowData } from "../../types/type-utils.cjs";
|
|
2
|
-
import { SortFn, SortFns } from "./rowSortingFeature.types.cjs";
|
|
3
|
-
import { TableFeatures } from "../../types/TableFeatures.cjs";
|
|
4
|
-
import { Table } from "../../types/Table.cjs";
|
|
5
2
|
import { RowModel } from "../../core/row-models/coreRowModelsFeature.types.cjs";
|
|
3
|
+
import { Table } from "../../types/Table.cjs";
|
|
4
|
+
import { TableFeatures } from "../../types/TableFeatures.cjs";
|
|
6
5
|
|
|
7
6
|
//#region src/features/row-sorting/createSortedRowModel.d.ts
|
|
8
7
|
/**
|
|
9
8
|
* Creates a memoized sorted row model factory.
|
|
10
9
|
*
|
|
11
10
|
* The factory reads the relevant table state atoms and options, then returns a row model function used by the table row-model pipeline.
|
|
11
|
+
*
|
|
12
|
+
* Register the sorting functions you use with the `sortFns` slot on the
|
|
13
|
+
* `features` option:
|
|
14
|
+
* `tableFeatures({ rowSortingFeature, sortedRowModel: createSortedRowModel(), sortFns: { alphanumeric: sortFn_alphanumeric } })`.
|
|
15
|
+
* Importing individual `sortFn_*` functions keeps unused built-ins out of
|
|
16
|
+
* your bundle; sorting functions passed directly to the `sortFn` column
|
|
17
|
+
* option need no registration at all.
|
|
12
18
|
*/
|
|
13
|
-
declare function createSortedRowModel<TFeatures extends TableFeatures, TData extends RowData>(
|
|
19
|
+
declare function createSortedRowModel<TFeatures extends TableFeatures, TData extends RowData>(): (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData>;
|
|
14
20
|
//#endregion
|
|
15
21
|
export { createSortedRowModel };
|
|
16
22
|
//# sourceMappingURL=createSortedRowModel.d.cts.map
|
|
@@ -1,16 +1,22 @@
|
|
|
1
1
|
import { RowData } from "../../types/type-utils.js";
|
|
2
|
-
import { SortFn, SortFns } from "./rowSortingFeature.types.js";
|
|
3
|
-
import { TableFeatures } from "../../types/TableFeatures.js";
|
|
4
|
-
import { Table } from "../../types/Table.js";
|
|
5
2
|
import { RowModel } from "../../core/row-models/coreRowModelsFeature.types.js";
|
|
3
|
+
import { Table } from "../../types/Table.js";
|
|
4
|
+
import { TableFeatures } from "../../types/TableFeatures.js";
|
|
6
5
|
|
|
7
6
|
//#region src/features/row-sorting/createSortedRowModel.d.ts
|
|
8
7
|
/**
|
|
9
8
|
* Creates a memoized sorted row model factory.
|
|
10
9
|
*
|
|
11
10
|
* The factory reads the relevant table state atoms and options, then returns a row model function used by the table row-model pipeline.
|
|
11
|
+
*
|
|
12
|
+
* Register the sorting functions you use with the `sortFns` slot on the
|
|
13
|
+
* `features` option:
|
|
14
|
+
* `tableFeatures({ rowSortingFeature, sortedRowModel: createSortedRowModel(), sortFns: { alphanumeric: sortFn_alphanumeric } })`.
|
|
15
|
+
* Importing individual `sortFn_*` functions keeps unused built-ins out of
|
|
16
|
+
* your bundle; sorting functions passed directly to the `sortFn` column
|
|
17
|
+
* option need no registration at all.
|
|
12
18
|
*/
|
|
13
|
-
declare function createSortedRowModel<TFeatures extends TableFeatures, TData extends RowData>(
|
|
19
|
+
declare function createSortedRowModel<TFeatures extends TableFeatures, TData extends RowData>(): (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData>;
|
|
14
20
|
//#endregion
|
|
15
21
|
export { createSortedRowModel };
|
|
16
22
|
//# sourceMappingURL=createSortedRowModel.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { tableMemo } from "../../utils.js";
|
|
1
|
+
import { copyInstancePropertiesWithoutMemos, tableMemo } from "../../utils.js";
|
|
2
2
|
import { table_autoResetPageIndex } from "../row-pagination/rowPaginationFeature.utils.js";
|
|
3
3
|
import { column_getCanSort, column_getSortFn } from "./rowSortingFeature.utils.js";
|
|
4
4
|
|
|
@@ -7,84 +7,103 @@ import { column_getCanSort, column_getSortFn } from "./rowSortingFeature.utils.j
|
|
|
7
7
|
* Creates a memoized sorted row model factory.
|
|
8
8
|
*
|
|
9
9
|
* The factory reads the relevant table state atoms and options, then returns a row model function used by the table row-model pipeline.
|
|
10
|
+
*
|
|
11
|
+
* Register the sorting functions you use with the `sortFns` slot on the
|
|
12
|
+
* `features` option:
|
|
13
|
+
* `tableFeatures({ rowSortingFeature, sortedRowModel: createSortedRowModel(), sortFns: { alphanumeric: sortFn_alphanumeric } })`.
|
|
14
|
+
* Importing individual `sortFn_*` functions keeps unused built-ins out of
|
|
15
|
+
* your bundle; sorting functions passed directly to the `sortFn` column
|
|
16
|
+
* option need no registration at all.
|
|
10
17
|
*/
|
|
11
|
-
function createSortedRowModel(
|
|
18
|
+
function createSortedRowModel() {
|
|
12
19
|
return (_table) => {
|
|
13
20
|
const table = _table;
|
|
14
|
-
if (!table._rowModelFns.sortFns) table._rowModelFns.sortFns = sortFns;
|
|
15
21
|
return tableMemo({
|
|
16
22
|
feature: "rowSortingFeature",
|
|
17
23
|
table,
|
|
18
24
|
fnName: "table.getSortedRowModel",
|
|
19
|
-
memoDeps: () =>
|
|
20
|
-
var _table$atoms$sorting;
|
|
21
|
-
return [(_table$atoms$sorting = table.atoms.sorting) === null || _table$atoms$sorting === void 0 ? void 0 : _table$atoms$sorting.get(), table.getPreSortedRowModel()];
|
|
22
|
-
},
|
|
25
|
+
memoDeps: () => [table.atoms.sorting?.get(), table.getPreSortedRowModel()],
|
|
23
26
|
fn: () => _createSortedRowModel(table),
|
|
24
27
|
onAfterUpdate: () => table_autoResetPageIndex(table)
|
|
25
28
|
});
|
|
26
29
|
};
|
|
27
30
|
}
|
|
28
31
|
function _createSortedRowModel(table) {
|
|
29
|
-
var _table$atoms$sorting2;
|
|
30
32
|
const preSortedRowModel = table.getPreSortedRowModel();
|
|
31
|
-
const sorting =
|
|
32
|
-
if (!preSortedRowModel.rows.length || !
|
|
33
|
+
const sorting = table.atoms.sorting?.get();
|
|
34
|
+
if (!preSortedRowModel.rows.length || !sorting?.length) return preSortedRowModel;
|
|
33
35
|
const sortedFlatRows = [];
|
|
34
|
-
const availableSorting = sorting.filter((sort) =>
|
|
35
|
-
|
|
36
|
-
|
|
36
|
+
const availableSorting = sorting.filter((sort) => {
|
|
37
|
+
const column = table.getColumn(sort.id);
|
|
38
|
+
return column ? column_getCanSort(column) : false;
|
|
39
|
+
});
|
|
40
|
+
if (!availableSorting.length) return preSortedRowModel;
|
|
41
|
+
const resolvedSorting = [];
|
|
42
|
+
for (let i = 0; i < availableSorting.length; i++) {
|
|
43
|
+
const sortEntry = availableSorting[i];
|
|
37
44
|
const column = table.getColumn(sortEntry.id);
|
|
38
|
-
if (!column)
|
|
39
|
-
|
|
45
|
+
if (!column) continue;
|
|
46
|
+
resolvedSorting.push({
|
|
47
|
+
id: sortEntry.id,
|
|
48
|
+
desc: sortEntry.desc,
|
|
40
49
|
sortUndefined: column.columnDef.sortUndefined,
|
|
41
50
|
invertSorting: column.columnDef.invertSorting,
|
|
42
51
|
sortFn: column_getSortFn(column)
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
if (
|
|
60
|
-
|
|
61
|
-
if (sortUndefined === "last") return aUndefined ? 1 : -1;
|
|
62
|
-
sortInt = aUndefined && bUndefined ? 0 : aUndefined ? sortUndefined : -sortUndefined;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
if (sortInt === 0) sortInt = columnInfo.sortFn(rowA, rowB, sortEntry.id);
|
|
66
|
-
if (sortInt !== 0) {
|
|
67
|
-
if (isDesc) sortInt *= -1;
|
|
68
|
-
if (columnInfo.invertSorting) sortInt *= -1;
|
|
69
|
-
return sortInt;
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
const compareRows = (rowA, rowB) => {
|
|
55
|
+
for (let i = 0; i < resolvedSorting.length; i++) {
|
|
56
|
+
const sortEntry = resolvedSorting[i];
|
|
57
|
+
const sortUndefined = sortEntry.sortUndefined;
|
|
58
|
+
const isDesc = sortEntry.desc;
|
|
59
|
+
let sortInt = 0;
|
|
60
|
+
if (sortUndefined) {
|
|
61
|
+
const aValue = rowA.getValue(sortEntry.id);
|
|
62
|
+
const bValue = rowB.getValue(sortEntry.id);
|
|
63
|
+
const aUndefined = aValue === void 0;
|
|
64
|
+
const bUndefined = bValue === void 0;
|
|
65
|
+
if (aUndefined && bUndefined) continue;
|
|
66
|
+
if (aUndefined || bUndefined) {
|
|
67
|
+
if (sortUndefined === "first") return aUndefined ? -1 : 1;
|
|
68
|
+
if (sortUndefined === "last") return aUndefined ? 1 : -1;
|
|
69
|
+
sortInt = aUndefined ? sortUndefined : -sortUndefined;
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
if (sortInt === 0) sortInt = sortEntry.sortFn(rowA, rowB, sortEntry.id);
|
|
73
|
+
if (sortInt !== 0) {
|
|
74
|
+
if (isDesc) sortInt *= -1;
|
|
75
|
+
if (sortEntry.invertSorting) sortInt *= -1;
|
|
76
|
+
return sortInt;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return rowA.index - rowB.index;
|
|
80
|
+
};
|
|
81
|
+
const sortData = (rows) => {
|
|
82
|
+
const sortedData = rows.slice();
|
|
83
|
+
sortedData.sort(compareRows);
|
|
84
|
+
let changed = false;
|
|
74
85
|
for (let i = 0; i < sortedData.length; i++) {
|
|
75
86
|
const row = sortedData[i];
|
|
87
|
+
if (row !== rows[i]) changed = true;
|
|
76
88
|
if (row.subRows.length) {
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
89
|
+
const sortedSubRows = sortData(row.subRows);
|
|
90
|
+
if (sortedSubRows.changed) {
|
|
91
|
+
const cloned = Object.create(Object.getPrototypeOf(row));
|
|
92
|
+
copyInstancePropertiesWithoutMemos(cloned, row);
|
|
93
|
+
cloned.subRows = sortedSubRows.rows;
|
|
94
|
+
sortedData[i] = cloned;
|
|
95
|
+
sortedFlatRows.push(cloned);
|
|
96
|
+
changed = true;
|
|
97
|
+
} else sortedFlatRows.push(row);
|
|
82
98
|
} else sortedFlatRows.push(row);
|
|
83
99
|
}
|
|
84
|
-
return
|
|
100
|
+
return {
|
|
101
|
+
rows: sortedData,
|
|
102
|
+
changed
|
|
103
|
+
};
|
|
85
104
|
};
|
|
86
105
|
return {
|
|
87
|
-
rows: sortData(preSortedRowModel.rows),
|
|
106
|
+
rows: sortData(preSortedRowModel.rows).rows,
|
|
88
107
|
flatRows: sortedFlatRows,
|
|
89
108
|
rowsById: preSortedRowModel.rowsById
|
|
90
109
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSortedRowModel.js","names":[],"sources":["../../../src/features/row-sorting/createSortedRowModel.ts"],"sourcesContent":["import { tableMemo } from '../../utils'\nimport { table_autoResetPageIndex } from '../row-pagination/rowPaginationFeature.utils'\nimport { column_getCanSort, column_getSortFn } from './rowSortingFeature.utils'\nimport type { Column_Internal } from '../../types/Column'\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 { SortFn
|
|
1
|
+
{"version":3,"file":"createSortedRowModel.js","names":[],"sources":["../../../src/features/row-sorting/createSortedRowModel.ts"],"sourcesContent":["import { copyInstancePropertiesWithoutMemos, tableMemo } from '../../utils'\nimport { table_autoResetPageIndex } from '../row-pagination/rowPaginationFeature.utils'\nimport { column_getCanSort, column_getSortFn } from './rowSortingFeature.utils'\nimport type { Column_Internal } from '../../types/Column'\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 { SortFn } from './rowSortingFeature.types'\nimport type { RowData } from '../../types/type-utils'\n\n/**\n * Creates a memoized sorted row model factory.\n *\n * The factory reads the relevant table state atoms and options, then returns a row model function used by the table row-model pipeline.\n *\n * Register the sorting functions you use with the `sortFns` slot on the\n * `features` option:\n * `tableFeatures({ rowSortingFeature, sortedRowModel: createSortedRowModel(), sortFns: { alphanumeric: sortFn_alphanumeric } })`.\n * Importing individual `sortFn_*` functions keeps unused built-ins out of\n * your bundle; sorting functions passed directly to the `sortFn` column\n * option need no registration at all.\n */\nexport function createSortedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(): (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData> {\n return (_table) => {\n const table = _table as unknown as Table_Internal<TFeatures, TData>\n return tableMemo({\n feature: 'rowSortingFeature',\n table,\n fnName: 'table.getSortedRowModel',\n memoDeps: () => [\n table.atoms.sorting?.get(),\n table.getPreSortedRowModel(),\n ],\n fn: () => _createSortedRowModel(table),\n onAfterUpdate: () => table_autoResetPageIndex(table),\n })\n }\n}\n\nfunction _createSortedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {\n const preSortedRowModel = table.getPreSortedRowModel()\n const sorting = table.atoms.sorting?.get()\n\n if (!preSortedRowModel.rows.length || !sorting?.length) {\n return preSortedRowModel\n }\n\n const sortedFlatRows: Array<Row<TFeatures, TData>> = []\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sorting.filter((sort) => {\n const column = table.getColumn(sort.id)\n return column ? column_getCanSort(column) : false\n })\n\n if (!availableSorting.length) {\n return preSortedRowModel\n }\n\n const resolvedSorting: Array<{\n id: string\n desc?: boolean\n sortUndefined?: false | -1 | 1 | 'first' | 'last'\n invertSorting?: boolean\n sortFn: SortFn<TFeatures, TData>\n }> = []\n\n for (let i = 0; i < availableSorting.length; i++) {\n const sortEntry = availableSorting[i]!\n const column: Column_Internal<TFeatures, TData> | undefined =\n table.getColumn(sortEntry.id)\n if (!column) {\n continue\n }\n\n resolvedSorting.push({\n id: sortEntry.id,\n desc: sortEntry.desc,\n sortUndefined: column.columnDef.sortUndefined,\n invertSorting: column.columnDef.invertSorting,\n sortFn: column_getSortFn(column),\n })\n }\n\n const compareRows = (\n rowA: Row<TFeatures, TData>,\n rowB: Row<TFeatures, TData>,\n ) => {\n for (let i = 0; i < resolvedSorting.length; i++) {\n const sortEntry = resolvedSorting[i]!\n const sortUndefined = sortEntry.sortUndefined\n const isDesc = sortEntry.desc\n\n let sortInt = 0\n\n // All sorting ints should always return in ascending order\n if (sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id)\n const bValue = rowB.getValue(sortEntry.id)\n\n const aUndefined = aValue === undefined\n const bUndefined = bValue === undefined\n\n if (aUndefined && bUndefined) {\n continue\n }\n\n if (aUndefined || bUndefined) {\n if (sortUndefined === 'first') return aUndefined ? -1 : 1\n if (sortUndefined === 'last') return aUndefined ? 1 : -1\n sortInt = aUndefined ? sortUndefined : -sortUndefined\n }\n }\n\n if (sortInt === 0) {\n sortInt = sortEntry.sortFn(rowA, rowB, sortEntry.id)\n }\n\n // If sorting is non-zero, take care of desc and inversion\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1\n }\n\n if (sortEntry.invertSorting) {\n sortInt *= -1\n }\n\n return sortInt\n }\n }\n\n return rowA.index - rowB.index\n }\n\n const sortData = (\n rows: Array<Row<TFeatures, TData>>,\n ): {\n rows: Array<Row<TFeatures, TData>>\n changed: boolean\n } => {\n const sortedData = rows.slice()\n\n sortedData.sort(compareRows)\n let changed = false\n\n // If there are sub-rows, sort them. Clone only rows that need mutation\n // (i.e. have subRows) so we don't corrupt the source row model.\n for (let i = 0; i < sortedData.length; i++) {\n const row = sortedData[i]!\n if (row !== rows[i]) {\n changed = true\n }\n\n if (row.subRows.length) {\n const sortedSubRows = sortData(row.subRows)\n\n if (sortedSubRows.changed) {\n // Preserve prototype chain so methods like getValue() remain accessible\n const cloned = Object.create(Object.getPrototypeOf(row))\n copyInstancePropertiesWithoutMemos(cloned, row)\n cloned.subRows = sortedSubRows.rows\n sortedData[i] = cloned\n sortedFlatRows.push(cloned)\n changed = true\n } else {\n sortedFlatRows.push(row)\n }\n } else {\n sortedFlatRows.push(row)\n }\n }\n\n return { rows: sortedData, changed }\n }\n\n return {\n rows: sortData(preSortedRowModel.rows).rows,\n flatRows: sortedFlatRows,\n rowsById: preSortedRowModel.rowsById,\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { OnChangeFn, RowData, Updater } from "../../types/type-utils.cjs";
|
|
2
|
-
import { BuiltInSortFn } from "
|
|
1
|
+
import { OnChangeFn, RowData, TransformDataValueFn, Updater } from "../../types/type-utils.cjs";
|
|
2
|
+
import { BuiltInSortFn } from "./sortFns.cjs";
|
|
3
3
|
import { Row } from "../../types/Row.cjs";
|
|
4
|
-
import { TableFeatures } from "../../types/TableFeatures.cjs";
|
|
5
|
-
import { Table } from "../../types/Table.cjs";
|
|
6
4
|
import { RowModel } from "../../core/row-models/coreRowModelsFeature.types.cjs";
|
|
5
|
+
import { IsAny, TableFeatures } from "../../types/TableFeatures.cjs";
|
|
7
6
|
|
|
8
7
|
//#region src/features/row-sorting/rowSortingFeature.types.d.ts
|
|
9
8
|
type SortDirection = 'asc' | 'desc';
|
|
@@ -15,16 +14,57 @@ type SortingState = Array<ColumnSort>;
|
|
|
15
14
|
interface TableState_RowSorting {
|
|
16
15
|
sorting: SortingState;
|
|
17
16
|
}
|
|
18
|
-
interface RowModelFns_RowSorting<TFeatures extends TableFeatures, TData extends RowData> {
|
|
19
|
-
sortFns: Record<
|
|
17
|
+
interface RowModelFns_RowSorting<in out TFeatures extends TableFeatures, in out TData extends RowData> {
|
|
18
|
+
sortFns: Record<string, SortFn<TFeatures, TData>>;
|
|
20
19
|
}
|
|
21
20
|
interface SortFns {}
|
|
22
|
-
interface SortFn<TFeatures extends TableFeatures, TData extends RowData> {
|
|
21
|
+
interface SortFn<in out TFeatures extends TableFeatures, in out TData extends RowData> {
|
|
23
22
|
(rowA: Row<TFeatures, TData>, rowB: Row<TFeatures, TData>, columnId: string): number;
|
|
23
|
+
/**
|
|
24
|
+
* Normalizes each row's value before the two sides are compared. Only
|
|
25
|
+
* honored by sorting functions built with `constructSortFn` (including all
|
|
26
|
+
* built-in sorting functions).
|
|
27
|
+
*/
|
|
28
|
+
resolveDataValue?: TransformDataValueFn;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The definition object accepted by `constructSortFn`.
|
|
32
|
+
*
|
|
33
|
+
* `sort` is a value-level comparator: it receives both rows' (resolved) data
|
|
34
|
+
* values instead of the whole rows, so normalization concerns stay in
|
|
35
|
+
* `resolveDataValue`.
|
|
36
|
+
*/
|
|
37
|
+
interface SortFnDef<in out TFeatures extends TableFeatures, in out TData extends RowData> {
|
|
38
|
+
sort: (dataValueA: any, dataValueB: any, rowA: Row<TFeatures, TData>, rowB: Row<TFeatures, TData>, columnId: string) => number;
|
|
39
|
+
resolveDataValue?: TransformDataValueFn;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The shape returned by `constructSortFn`: a `SortFn` with its definition
|
|
43
|
+
* attached, so variants can be built by spreading it into another
|
|
44
|
+
* `constructSortFn` call.
|
|
45
|
+
*
|
|
46
|
+
* The call signature is generic so a created sorting function can be used
|
|
47
|
+
* with any table's rows, regardless of the feature set it was defined
|
|
48
|
+
* against.
|
|
49
|
+
*/
|
|
50
|
+
interface CreatedSortFn<in out TFeatures extends TableFeatures, in out TData extends RowData> extends SortFnDef<TFeatures, TData> {
|
|
51
|
+
<TRowFeatures extends TableFeatures, TRowData extends RowData>(rowA: Row<TRowFeatures, TRowData>, rowB: Row<TRowFeatures, TRowData>, columnId: string): number;
|
|
24
52
|
}
|
|
25
53
|
type CustomSortFns<TFeatures extends TableFeatures, TData extends RowData> = Record<string, SortFn<TFeatures, TData>>;
|
|
26
|
-
|
|
27
|
-
|
|
54
|
+
/**
|
|
55
|
+
* Resolves the valid string names for `columnDef.sortFn` for a feature set.
|
|
56
|
+
*
|
|
57
|
+
* When the features object declares a `sortFns` registry
|
|
58
|
+
* (`tableFeatures({ ..., sortFns })`), its keys are the only valid names; a
|
|
59
|
+
* name is only assignable if a sorting function is actually registered for it.
|
|
60
|
+
* Otherwise this falls back to the global declaration-merged `SortFns`
|
|
61
|
+
* interface.
|
|
62
|
+
*/
|
|
63
|
+
type ExtractSortFnKeys<TFeatures extends TableFeatures> = IsAny<TFeatures> extends true ? keyof SortFns | BuiltInSortFn : TFeatures extends {
|
|
64
|
+
sortFns: infer TSortFns extends object;
|
|
65
|
+
} ? Extract<keyof TSortFns, string> : keyof SortFns;
|
|
66
|
+
type SortFnOption<TFeatures extends TableFeatures, TData extends RowData> = 'auto' | ExtractSortFnKeys<TFeatures> | SortFn<TFeatures, TData>;
|
|
67
|
+
interface ColumnDef_RowSorting<in out TFeatures extends TableFeatures, in out TData extends RowData> {
|
|
28
68
|
/**
|
|
29
69
|
* Enables/Disables multi-sorting for this column.
|
|
30
70
|
*/
|
|
@@ -58,7 +98,7 @@ interface ColumnDef_RowSorting<TFeatures extends TableFeatures, TData extends Ro
|
|
|
58
98
|
*/
|
|
59
99
|
sortUndefined?: false | -1 | 1 | 'first' | 'last';
|
|
60
100
|
}
|
|
61
|
-
interface Column_RowSorting<TFeatures extends TableFeatures, TData extends RowData> {
|
|
101
|
+
interface Column_RowSorting<in out TFeatures extends TableFeatures, in out TData extends RowData> {
|
|
62
102
|
/**
|
|
63
103
|
* Removes this column from the table's sorting state
|
|
64
104
|
*/
|
|
@@ -150,7 +190,7 @@ interface TableOptions_RowSorting {
|
|
|
150
190
|
*/
|
|
151
191
|
sortDescFirst?: boolean;
|
|
152
192
|
}
|
|
153
|
-
interface Table_RowSorting<
|
|
193
|
+
interface Table_RowSorting<in out _TFeatures extends TableFeatures, in out _TData extends RowData> {
|
|
154
194
|
/**
|
|
155
195
|
* Resets `sorting` to `initialState.sorting`.
|
|
156
196
|
*
|
|
@@ -162,7 +202,7 @@ interface Table_RowSorting<TFeatures extends TableFeatures, TData extends RowDat
|
|
|
162
202
|
*/
|
|
163
203
|
setSorting: (updater: Updater<SortingState>) => void;
|
|
164
204
|
}
|
|
165
|
-
interface Table_RowModels_Sorted<TFeatures extends TableFeatures, TData extends RowData> {
|
|
205
|
+
interface Table_RowModels_Sorted<in out TFeatures extends TableFeatures, in out TData extends RowData> {
|
|
166
206
|
/**
|
|
167
207
|
* Reads the row model immediately before sorting.
|
|
168
208
|
*/
|
|
@@ -172,17 +212,9 @@ interface Table_RowModels_Sorted<TFeatures extends TableFeatures, TData extends
|
|
|
172
212
|
*/
|
|
173
213
|
getSortedRowModel: () => RowModel<TFeatures, TData>;
|
|
174
214
|
}
|
|
175
|
-
interface
|
|
176
|
-
/**
|
|
177
|
-
* Factory used to retrieve the sorted row model. If using server-side
|
|
178
|
-
* sorting, this is not required. To use client-side sorting, pass the
|
|
179
|
-
* exported `createSortedRowModel()` or implement your own factory.
|
|
180
|
-
*/
|
|
181
|
-
sortedRowModel?: (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData>;
|
|
182
|
-
}
|
|
183
|
-
interface CachedRowModel_Sorted<TFeatures extends TableFeatures, TData extends RowData> {
|
|
215
|
+
interface CachedRowModel_Sorted<in out TFeatures extends TableFeatures, in out TData extends RowData> {
|
|
184
216
|
sortedRowModel: () => RowModel<TFeatures, TData>;
|
|
185
217
|
}
|
|
186
218
|
//#endregion
|
|
187
|
-
export { CachedRowModel_Sorted, ColumnDef_RowSorting, ColumnSort, Column_RowSorting,
|
|
219
|
+
export { CachedRowModel_Sorted, ColumnDef_RowSorting, ColumnSort, Column_RowSorting, CreatedSortFn, CustomSortFns, ExtractSortFnKeys, RowModelFns_RowSorting, SortDirection, SortFn, SortFnDef, SortFnOption, SortFns, SortingState, TableOptions_RowSorting, TableState_RowSorting, Table_RowModels_Sorted, Table_RowSorting };
|
|
188
220
|
//# sourceMappingURL=rowSortingFeature.types.d.cts.map
|