@tanstack/table-core 9.0.0-beta.7 → 9.0.0-beta.70
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 +5 -1
- package/dist/core/cells/constructCell.d.ts +4 -6
- package/dist/core/cells/constructCell.js +4 -6
- package/dist/core/cells/coreCellsFeature.d.ts +1 -3
- package/dist/core/cells/coreCellsFeature.js +1 -2
- package/dist/core/cells/coreCellsFeature.types.d.ts +7 -9
- package/dist/core/cells/coreCellsFeature.utils.d.ts +5 -5
- package/dist/core/cells/coreCellsFeature.utils.js +1 -2
- package/dist/core/columns/constructColumn.d.ts +4 -6
- package/dist/core/columns/constructColumn.js +8 -9
- package/dist/core/columns/coreColumnsFeature.d.ts +1 -3
- package/dist/core/columns/coreColumnsFeature.js +13 -20
- package/dist/core/columns/coreColumnsFeature.types.d.ts +13 -15
- package/dist/core/columns/coreColumnsFeature.utils.d.ts +10 -12
- package/dist/core/columns/coreColumnsFeature.utils.js +19 -20
- package/dist/core/coreFeatures.d.ts +3 -3
- package/dist/core/coreFeatures.js +1 -2
- package/dist/core/headers/buildHeaderGroups.d.ts +3 -5
- package/dist/core/headers/buildHeaderGroups.js +99 -85
- package/dist/core/headers/constructHeader.d.ts +3 -5
- package/dist/core/headers/constructHeader.js +4 -6
- package/dist/core/headers/coreHeadersFeature.d.ts +1 -3
- package/dist/core/headers/coreHeadersFeature.js +9 -13
- package/dist/core/headers/coreHeadersFeature.types.d.ts +21 -11
- package/dist/core/headers/coreHeadersFeature.utils.d.ts +8 -8
- package/dist/core/headers/coreHeadersFeature.utils.js +14 -17
- package/dist/core/reactivity/coreReactivityFeature.types.d.ts +8 -3
- package/dist/core/reactivity/coreReactivityFeature.utils.d.ts +1 -3
- package/dist/core/reactivity/coreReactivityFeature.utils.js +1 -2
- package/dist/core/reactivity/renderPhaseReactivity.d.ts +80 -0
- package/dist/core/reactivity/renderPhaseReactivity.js +95 -0
- package/dist/core/row-models/coreRowModelsFeature.d.ts +1 -3
- package/dist/core/row-models/coreRowModelsFeature.js +1 -2
- package/dist/core/row-models/coreRowModelsFeature.types.d.ts +7 -17
- package/dist/core/row-models/coreRowModelsFeature.utils.d.ts +17 -19
- package/dist/core/row-models/coreRowModelsFeature.utils.js +9 -28
- package/dist/core/row-models/createCoreRowModel.d.ts +3 -5
- package/dist/core/row-models/createCoreRowModel.js +25 -24
- package/dist/core/rows/constructRow.d.ts +3 -5
- package/dist/core/rows/constructRow.js +9 -13
- package/dist/core/rows/coreRowsFeature.d.ts +1 -3
- package/dist/core/rows/coreRowsFeature.js +20 -5
- package/dist/core/rows/coreRowsFeature.types.d.ts +42 -10
- package/dist/core/rows/coreRowsFeature.utils.d.ts +26 -9
- package/dist/core/rows/coreRowsFeature.utils.js +65 -14
- package/dist/core/table/constructTable.d.ts +2 -4
- package/dist/core/table/constructTable.js +52 -23
- package/dist/core/table/coreTablesFeature.d.ts +1 -3
- package/dist/core/table/coreTablesFeature.js +1 -2
- package/dist/core/table/coreTablesFeature.types.d.ts +56 -25
- package/dist/core/table/coreTablesFeature.utils.d.ts +34 -12
- package/dist/core/table/coreTablesFeature.utils.js +69 -24
- package/dist/experimental-worker-plugin.d.ts +5 -0
- package/dist/experimental-worker-plugin.js +6 -0
- package/dist/features/cell-selection/cellSelectionFeature.d.ts +8 -0
- package/dist/features/cell-selection/cellSelectionFeature.js +128 -0
- package/dist/features/cell-selection/cellSelectionFeature.types.d.ts +296 -0
- package/dist/features/cell-selection/cellSelectionFeature.utils.d.ts +306 -0
- package/dist/features/cell-selection/cellSelectionFeature.utils.js +873 -0
- package/dist/features/cell-selection/cellSelectionGeometry.js +121 -0
- package/dist/features/cell-spanning/cellSpanningFeature.d.ts +13 -0
- package/dist/features/cell-spanning/cellSpanningFeature.js +47 -0
- package/dist/features/cell-spanning/cellSpanningFeature.types.d.ts +150 -0
- package/dist/features/cell-spanning/cellSpanningFeature.utils.d.ts +74 -0
- package/dist/features/cell-spanning/cellSpanningFeature.utils.js +262 -0
- package/dist/features/column-faceting/columnFacetingFeature.d.ts +1 -3
- package/dist/features/column-faceting/columnFacetingFeature.js +13 -20
- package/dist/features/column-faceting/columnFacetingFeature.types.d.ts +15 -35
- package/dist/features/column-faceting/columnFacetingFeature.utils.d.ts +10 -12
- package/dist/features/column-faceting/columnFacetingFeature.utils.js +25 -14
- package/dist/features/column-faceting/createFacetedMinMaxValues.d.ts +2 -4
- package/dist/features/column-faceting/createFacetedMinMaxValues.js +9 -7
- package/dist/features/column-faceting/createFacetedRowModel.d.ts +3 -5
- package/dist/features/column-faceting/createFacetedRowModel.js +12 -17
- package/dist/features/column-faceting/createFacetedUniqueValues.d.ts +2 -4
- package/dist/features/column-faceting/createFacetedUniqueValues.js +12 -9
- package/dist/features/column-filtering/columnFilteringFeature.d.ts +1 -3
- package/dist/features/column-filtering/columnFilteringFeature.js +4 -5
- package/dist/features/column-filtering/columnFilteringFeature.types.d.ts +85 -33
- package/dist/features/column-filtering/columnFilteringFeature.utils.d.ts +19 -17
- package/dist/features/column-filtering/columnFilteringFeature.utils.js +33 -21
- package/dist/features/column-filtering/createFilteredRowModel.d.ts +11 -7
- package/dist/features/column-filtering/createFilteredRowModel.js +33 -29
- package/dist/features/column-filtering/filterFns.d.ts +208 -0
- package/dist/features/column-filtering/filterFns.js +374 -0
- package/dist/features/column-filtering/filterRowsUtils.js +4 -4
- package/dist/features/column-grouping/columnGroupingFeature.d.ts +2 -4
- package/dist/features/column-grouping/columnGroupingFeature.js +7 -20
- package/dist/features/column-grouping/columnGroupingFeature.types.d.ts +14 -52
- package/dist/features/column-grouping/columnGroupingFeature.utils.d.ts +12 -51
- package/dist/features/column-grouping/columnGroupingFeature.utils.js +8 -61
- package/dist/features/column-grouping/createGroupedRowModel.d.ts +7 -7
- package/dist/features/column-grouping/createGroupedRowModel.js +69 -38
- package/dist/features/column-ordering/columnOrderingFeature.d.ts +1 -3
- package/dist/features/column-ordering/columnOrderingFeature.js +19 -24
- package/dist/features/column-ordering/columnOrderingFeature.types.d.ts +28 -5
- package/dist/features/column-ordering/columnOrderingFeature.utils.d.ts +26 -16
- package/dist/features/column-ordering/columnOrderingFeature.utils.js +36 -18
- package/dist/features/column-pinning/columnPinningFeature.d.ts +7 -4
- package/dist/features/column-pinning/columnPinningFeature.js +126 -146
- package/dist/features/column-pinning/columnPinningFeature.types.d.ts +53 -44
- package/dist/features/column-pinning/columnPinningFeature.utils.d.ts +100 -93
- package/dist/features/column-pinning/columnPinningFeature.utils.js +148 -150
- package/dist/features/column-resizing/columnResizingFeature.d.ts +1 -3
- package/dist/features/column-resizing/columnResizingFeature.js +1 -2
- package/dist/features/column-resizing/columnResizingFeature.types.d.ts +2 -7
- package/dist/features/column-resizing/columnResizingFeature.utils.d.ts +7 -9
- package/dist/features/column-resizing/columnResizingFeature.utils.js +86 -48
- package/dist/features/column-sizing/columnSizingFeature.d.ts +1 -3
- package/dist/features/column-sizing/columnSizingFeature.js +35 -70
- package/dist/features/column-sizing/columnSizingFeature.types.d.ts +52 -11
- package/dist/features/column-sizing/columnSizingFeature.utils.d.ts +43 -27
- package/dist/features/column-sizing/columnSizingFeature.utils.js +95 -54
- package/dist/features/column-visibility/columnVisibilityFeature.d.ts +1 -3
- package/dist/features/column-visibility/columnVisibilityFeature.js +26 -38
- package/dist/features/column-visibility/columnVisibilityFeature.types.d.ts +4 -6
- package/dist/features/column-visibility/columnVisibilityFeature.utils.d.ts +20 -20
- package/dist/features/column-visibility/columnVisibilityFeature.utils.js +32 -32
- package/dist/features/global-filtering/globalFilteringFeature.d.ts +1 -3
- package/dist/features/global-filtering/globalFilteringFeature.js +3 -4
- package/dist/features/global-filtering/globalFilteringFeature.types.d.ts +4 -6
- package/dist/features/global-filtering/globalFilteringFeature.utils.d.ts +10 -13
- package/dist/features/global-filtering/globalFilteringFeature.utils.js +7 -8
- package/dist/features/row-aggregation/aggregationFns.d.ts +66 -0
- package/dist/features/row-aggregation/aggregationFns.js +279 -0
- package/dist/features/row-aggregation/rowAggregationFeature.d.ts +8 -0
- package/dist/features/row-aggregation/rowAggregationFeature.js +35 -0
- package/dist/features/row-aggregation/rowAggregationFeature.types.d.ts +193 -0
- package/dist/features/row-aggregation/rowAggregationFeature.types.js +11 -0
- package/dist/features/row-aggregation/rowAggregationFeature.utils.d.ts +46 -0
- package/dist/features/row-aggregation/rowAggregationFeature.utils.js +235 -0
- package/dist/features/row-expanding/createExpandedRowModel.d.ts +3 -5
- package/dist/features/row-expanding/createExpandedRowModel.js +9 -13
- package/dist/features/row-expanding/rowExpandingFeature.d.ts +1 -3
- package/dist/features/row-expanding/rowExpandingFeature.js +1 -2
- package/dist/features/row-expanding/rowExpandingFeature.types.d.ts +6 -17
- package/dist/features/row-expanding/rowExpandingFeature.utils.d.ts +11 -16
- package/dist/features/row-expanding/rowExpandingFeature.utils.js +30 -33
- package/dist/features/row-pagination/createPaginatedRowModel.d.ts +3 -5
- package/dist/features/row-pagination/createPaginatedRowModel.js +7 -12
- package/dist/features/row-pagination/rowPaginationFeature.d.ts +1 -3
- package/dist/features/row-pagination/rowPaginationFeature.js +1 -2
- package/dist/features/row-pagination/rowPaginationFeature.types.d.ts +5 -16
- package/dist/features/row-pagination/rowPaginationFeature.utils.d.ts +18 -20
- package/dist/features/row-pagination/rowPaginationFeature.utils.js +10 -17
- package/dist/features/row-pinning/rowPinningFeature.d.ts +1 -3
- package/dist/features/row-pinning/rowPinningFeature.js +5 -18
- package/dist/features/row-pinning/rowPinningFeature.types.d.ts +3 -5
- package/dist/features/row-pinning/rowPinningFeature.utils.d.ts +8 -10
- package/dist/features/row-pinning/rowPinningFeature.utils.js +10 -16
- package/dist/features/row-selection/rowSelectionFeature.d.ts +1 -3
- package/dist/features/row-selection/rowSelectionFeature.js +68 -25
- package/dist/features/row-selection/rowSelectionFeature.types.d.ts +51 -15
- package/dist/features/row-selection/rowSelectionFeature.utils.d.ts +60 -35
- package/dist/features/row-selection/rowSelectionFeature.utils.js +142 -89
- package/dist/features/row-sorting/createSortedRowModel.d.ts +11 -7
- package/dist/features/row-sorting/createSortedRowModel.js +71 -53
- package/dist/features/row-sorting/rowSortingFeature.d.ts +1 -3
- package/dist/features/row-sorting/rowSortingFeature.js +1 -2
- package/dist/features/row-sorting/rowSortingFeature.types.d.ts +54 -24
- package/dist/features/row-sorting/rowSortingFeature.utils.d.ts +19 -22
- package/dist/features/row-sorting/rowSortingFeature.utils.js +36 -25
- package/dist/features/row-sorting/sortFns.d.ts +96 -0
- package/dist/features/row-sorting/sortFns.js +216 -0
- package/dist/features/stockFeatures.d.ts +7 -3
- package/dist/features/stockFeatures.js +7 -2
- package/dist/flex-render.d.ts +2 -4
- package/dist/flex-render.js +10 -3
- package/dist/helpers/columnHelper.d.ts +3 -5
- package/dist/helpers/columnHelper.js +1 -2
- package/dist/helpers/metaHelper.d.ts +25 -0
- package/dist/helpers/metaHelper.js +28 -0
- package/dist/helpers/tableFeatures.d.ts +35 -8
- package/dist/helpers/tableFeatures.js +33 -5
- package/dist/helpers/tableOptions.d.ts +1 -3
- package/dist/helpers/tableOptions.js +1 -2
- package/dist/index.d.ts +34 -27
- package/dist/index.js +10 -5
- package/dist/reactivity.d.ts +2 -1
- package/dist/reactivity.js +2 -1
- package/dist/static-functions.d.ts +11 -8
- package/dist/static-functions.js +11 -8
- package/dist/store-reactivity-bindings.d.ts +2 -4
- package/dist/store-reactivity-bindings.js +4 -5
- package/dist/types/Cell.d.ts +9 -5
- package/dist/types/Column.d.ts +13 -15
- package/dist/types/ColumnDef.d.ts +39 -21
- package/dist/types/Header.d.ts +3 -5
- package/dist/types/HeaderGroup.d.ts +3 -5
- package/dist/types/Row.d.ts +7 -7
- package/dist/types/RowModel.d.ts +11 -25
- package/dist/types/RowModelFns.d.ts +5 -7
- package/dist/types/Table.d.ts +29 -32
- package/dist/types/TableFeatures.d.ts +388 -24
- package/dist/types/TableOptions.d.ts +24 -14
- package/dist/types/TableState.d.ts +8 -8
- package/dist/types/type-utils.d.ts +10 -4
- package/dist/utils.d.ts +32 -26
- package/dist/utils.js +52 -32
- package/dist/worker/createTableWorker.d.ts +100 -0
- package/dist/worker/createTableWorker.js +185 -0
- package/dist/worker/createWorkerRowModel.d.ts +40 -0
- package/dist/worker/createWorkerRowModel.js +77 -0
- package/dist/worker/initTableWorker.d.ts +31 -0
- package/dist/worker/initTableWorker.js +99 -0
- package/dist/worker/rebuildRowModel.d.ts +11 -0
- package/dist/worker/rebuildRowModel.js +71 -0
- package/dist/worker/serializeRowModel.js +51 -0
- package/dist/worker/tableWorkerProtocol.d.ts +88 -0
- package/dist/worker/tableWorkerProtocol.js +26 -0
- package/package.json +12 -28
- package/skills/aggregation/SKILL.md +141 -0
- package/skills/api-not-found/SKILL.md +113 -0
- package/skills/cell-selection/SKILL.md +204 -0
- package/skills/cell-spanning/SKILL.md +162 -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 +275 -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/dist/core/cells/constructCell.cjs +0 -34
- package/dist/core/cells/constructCell.cjs.map +0 -1
- package/dist/core/cells/constructCell.d.cts +0 -17
- package/dist/core/cells/constructCell.js.map +0 -1
- package/dist/core/cells/coreCellsFeature.cjs +0 -21
- package/dist/core/cells/coreCellsFeature.cjs.map +0 -1
- package/dist/core/cells/coreCellsFeature.d.cts +0 -10
- package/dist/core/cells/coreCellsFeature.js.map +0 -1
- package/dist/core/cells/coreCellsFeature.types.d.cts +0 -57
- package/dist/core/cells/coreCellsFeature.utils.cjs +0 -57
- package/dist/core/cells/coreCellsFeature.utils.cjs.map +0 -1
- package/dist/core/cells/coreCellsFeature.utils.d.cts +0 -53
- package/dist/core/cells/coreCellsFeature.utils.js.map +0 -1
- package/dist/core/columns/constructColumn.cjs +0 -61
- package/dist/core/columns/constructColumn.cjs.map +0 -1
- package/dist/core/columns/constructColumn.d.cts +0 -16
- package/dist/core/columns/constructColumn.js.map +0 -1
- package/dist/core/columns/coreColumnsFeature.cjs +0 -70
- package/dist/core/columns/coreColumnsFeature.cjs.map +0 -1
- package/dist/core/columns/coreColumnsFeature.d.cts +0 -10
- package/dist/core/columns/coreColumnsFeature.js.map +0 -1
- package/dist/core/columns/coreColumnsFeature.types.d.cts +0 -94
- package/dist/core/columns/coreColumnsFeature.utils.cjs +0 -187
- package/dist/core/columns/coreColumnsFeature.utils.cjs.map +0 -1
- package/dist/core/columns/coreColumnsFeature.utils.d.cts +0 -119
- package/dist/core/columns/coreColumnsFeature.utils.js.map +0 -1
- package/dist/core/coreFeatures.cjs +0 -25
- package/dist/core/coreFeatures.cjs.map +0 -1
- package/dist/core/coreFeatures.d.cts +0 -26
- package/dist/core/coreFeatures.js.map +0 -1
- package/dist/core/headers/buildHeaderGroups.cjs +0 -103
- package/dist/core/headers/buildHeaderGroups.cjs.map +0 -1
- package/dist/core/headers/buildHeaderGroups.d.cts +0 -16
- package/dist/core/headers/buildHeaderGroups.js.map +0 -1
- package/dist/core/headers/constructHeader.cjs +0 -41
- package/dist/core/headers/constructHeader.cjs.map +0 -1
- package/dist/core/headers/constructHeader.d.cts +0 -22
- package/dist/core/headers/constructHeader.js.map +0 -1
- package/dist/core/headers/coreHeadersFeature.cjs +0 -55
- package/dist/core/headers/coreHeadersFeature.cjs.map +0 -1
- package/dist/core/headers/coreHeadersFeature.d.cts +0 -10
- package/dist/core/headers/coreHeadersFeature.js.map +0 -1
- package/dist/core/headers/coreHeadersFeature.types.d.cts +0 -106
- package/dist/core/headers/coreHeadersFeature.utils.cjs +0 -142
- package/dist/core/headers/coreHeadersFeature.utils.cjs.map +0 -1
- package/dist/core/headers/coreHeadersFeature.utils.d.cts +0 -85
- package/dist/core/headers/coreHeadersFeature.utils.js.map +0 -1
- package/dist/core/reactivity/coreReactivityFeature.types.d.cts +0 -48
- package/dist/core/reactivity/coreReactivityFeature.utils.cjs +0 -24
- package/dist/core/reactivity/coreReactivityFeature.utils.cjs.map +0 -1
- package/dist/core/reactivity/coreReactivityFeature.utils.d.cts +0 -24
- package/dist/core/reactivity/coreReactivityFeature.utils.js.map +0 -1
- package/dist/core/row-models/coreRowModelsFeature.cjs +0 -27
- package/dist/core/row-models/coreRowModelsFeature.cjs.map +0 -1
- package/dist/core/row-models/coreRowModelsFeature.d.cts +0 -10
- package/dist/core/row-models/coreRowModelsFeature.js.map +0 -1
- package/dist/core/row-models/coreRowModelsFeature.types.d.cts +0 -41
- package/dist/core/row-models/coreRowModelsFeature.utils.cjs +0 -215
- package/dist/core/row-models/coreRowModelsFeature.utils.cjs.map +0 -1
- package/dist/core/row-models/coreRowModelsFeature.utils.d.cts +0 -153
- package/dist/core/row-models/coreRowModelsFeature.utils.js.map +0 -1
- package/dist/core/row-models/createCoreRowModel.cjs +0 -52
- package/dist/core/row-models/createCoreRowModel.cjs.map +0 -1
- package/dist/core/row-models/createCoreRowModel.d.cts +0 -15
- package/dist/core/row-models/createCoreRowModel.js.map +0 -1
- package/dist/core/rows/constructRow.cjs +0 -44
- package/dist/core/rows/constructRow.cjs.map +0 -1
- package/dist/core/rows/constructRow.d.cts +0 -15
- package/dist/core/rows/constructRow.js.map +0 -1
- package/dist/core/rows/coreRowsFeature.cjs +0 -37
- package/dist/core/rows/coreRowsFeature.cjs.map +0 -1
- package/dist/core/rows/coreRowsFeature.d.cts +0 -10
- package/dist/core/rows/coreRowsFeature.js.map +0 -1
- package/dist/core/rows/coreRowsFeature.types.d.cts +0 -99
- package/dist/core/rows/coreRowsFeature.utils.cjs +0 -192
- package/dist/core/rows/coreRowsFeature.utils.cjs.map +0 -1
- package/dist/core/rows/coreRowsFeature.utils.d.cts +0 -127
- package/dist/core/rows/coreRowsFeature.utils.js.map +0 -1
- package/dist/core/table/constructTable.cjs +0 -118
- package/dist/core/table/constructTable.cjs.map +0 -1
- package/dist/core/table/constructTable.d.cts +0 -22
- package/dist/core/table/constructTable.js.map +0 -1
- package/dist/core/table/coreTablesFeature.cjs +0 -17
- package/dist/core/table/coreTablesFeature.cjs.map +0 -1
- package/dist/core/table/coreTablesFeature.d.cts +0 -10
- package/dist/core/table/coreTablesFeature.js.map +0 -1
- package/dist/core/table/coreTablesFeature.types.d.cts +0 -186
- package/dist/core/table/coreTablesFeature.utils.cjs +0 -96
- package/dist/core/table/coreTablesFeature.utils.cjs.map +0 -1
- package/dist/core/table/coreTablesFeature.utils.d.cts +0 -57
- package/dist/core/table/coreTablesFeature.utils.js.map +0 -1
- package/dist/features/column-faceting/columnFacetingFeature.cjs +0 -61
- package/dist/features/column-faceting/columnFacetingFeature.cjs.map +0 -1
- package/dist/features/column-faceting/columnFacetingFeature.d.cts +0 -10
- package/dist/features/column-faceting/columnFacetingFeature.js.map +0 -1
- package/dist/features/column-faceting/columnFacetingFeature.types.d.cts +0 -85
- package/dist/features/column-faceting/columnFacetingFeature.utils.cjs +0 -103
- package/dist/features/column-faceting/columnFacetingFeature.utils.cjs.map +0 -1
- package/dist/features/column-faceting/columnFacetingFeature.utils.d.cts +0 -84
- package/dist/features/column-faceting/columnFacetingFeature.utils.js.map +0 -1
- package/dist/features/column-faceting/createFacetedMinMaxValues.cjs +0 -44
- package/dist/features/column-faceting/createFacetedMinMaxValues.cjs.map +0 -1
- package/dist/features/column-faceting/createFacetedMinMaxValues.d.cts +0 -14
- package/dist/features/column-faceting/createFacetedMinMaxValues.js.map +0 -1
- package/dist/features/column-faceting/createFacetedRowModel.cjs +0 -50
- package/dist/features/column-faceting/createFacetedRowModel.cjs.map +0 -1
- package/dist/features/column-faceting/createFacetedRowModel.d.cts +0 -15
- package/dist/features/column-faceting/createFacetedRowModel.js.map +0 -1
- package/dist/features/column-faceting/createFacetedUniqueValues.cjs +0 -41
- package/dist/features/column-faceting/createFacetedUniqueValues.cjs.map +0 -1
- package/dist/features/column-faceting/createFacetedUniqueValues.d.cts +0 -14
- package/dist/features/column-faceting/createFacetedUniqueValues.js.map +0 -1
- package/dist/features/column-filtering/columnFilteringFeature.cjs +0 -50
- package/dist/features/column-filtering/columnFilteringFeature.cjs.map +0 -1
- package/dist/features/column-filtering/columnFilteringFeature.d.cts +0 -10
- package/dist/features/column-filtering/columnFilteringFeature.js.map +0 -1
- package/dist/features/column-filtering/columnFilteringFeature.types.d.cts +0 -160
- package/dist/features/column-filtering/columnFilteringFeature.utils.cjs +0 -212
- package/dist/features/column-filtering/columnFilteringFeature.utils.cjs.map +0 -1
- package/dist/features/column-filtering/columnFilteringFeature.utils.d.cts +0 -143
- package/dist/features/column-filtering/columnFilteringFeature.utils.js.map +0 -1
- package/dist/features/column-filtering/createFilteredRowModel.cjs +0 -110
- package/dist/features/column-filtering/createFilteredRowModel.cjs.map +0 -1
- package/dist/features/column-filtering/createFilteredRowModel.d.cts +0 -16
- package/dist/features/column-filtering/createFilteredRowModel.js.map +0 -1
- package/dist/features/column-filtering/filterRowsUtils.cjs +0 -81
- package/dist/features/column-filtering/filterRowsUtils.cjs.map +0 -1
- package/dist/features/column-filtering/filterRowsUtils.js.map +0 -1
- package/dist/features/column-grouping/columnGroupingFeature.cjs +0 -67
- package/dist/features/column-grouping/columnGroupingFeature.cjs.map +0 -1
- package/dist/features/column-grouping/columnGroupingFeature.d.cts +0 -10
- package/dist/features/column-grouping/columnGroupingFeature.js.map +0 -1
- package/dist/features/column-grouping/columnGroupingFeature.types.d.cts +0 -165
- package/dist/features/column-grouping/columnGroupingFeature.utils.cjs +0 -250
- package/dist/features/column-grouping/columnGroupingFeature.utils.cjs.map +0 -1
- package/dist/features/column-grouping/columnGroupingFeature.utils.d.cts +0 -190
- package/dist/features/column-grouping/columnGroupingFeature.utils.js.map +0 -1
- package/dist/features/column-grouping/createGroupedRowModel.cjs +0 -119
- package/dist/features/column-grouping/createGroupedRowModel.cjs.map +0 -1
- package/dist/features/column-grouping/createGroupedRowModel.d.cts +0 -16
- package/dist/features/column-grouping/createGroupedRowModel.js.map +0 -1
- package/dist/features/column-ordering/columnOrderingFeature.cjs +0 -58
- package/dist/features/column-ordering/columnOrderingFeature.cjs.map +0 -1
- package/dist/features/column-ordering/columnOrderingFeature.d.cts +0 -10
- package/dist/features/column-ordering/columnOrderingFeature.js.map +0 -1
- package/dist/features/column-ordering/columnOrderingFeature.types.d.cts +0 -56
- package/dist/features/column-ordering/columnOrderingFeature.utils.cjs +0 -172
- package/dist/features/column-ordering/columnOrderingFeature.utils.cjs.map +0 -1
- package/dist/features/column-ordering/columnOrderingFeature.utils.d.cts +0 -107
- package/dist/features/column-ordering/columnOrderingFeature.utils.js.map +0 -1
- package/dist/features/column-pinning/columnPinningFeature.cjs +0 -221
- package/dist/features/column-pinning/columnPinningFeature.cjs.map +0 -1
- package/dist/features/column-pinning/columnPinningFeature.d.cts +0 -10
- package/dist/features/column-pinning/columnPinningFeature.js.map +0 -1
- package/dist/features/column-pinning/columnPinningFeature.types.d.cts +0 -178
- package/dist/features/column-pinning/columnPinningFeature.utils.cjs +0 -585
- package/dist/features/column-pinning/columnPinningFeature.utils.cjs.map +0 -1
- package/dist/features/column-pinning/columnPinningFeature.utils.d.cts +0 -375
- package/dist/features/column-pinning/columnPinningFeature.utils.js.map +0 -1
- package/dist/features/column-resizing/columnResizingFeature.cjs +0 -41
- package/dist/features/column-resizing/columnResizingFeature.cjs.map +0 -1
- package/dist/features/column-resizing/columnResizingFeature.d.cts +0 -10
- package/dist/features/column-resizing/columnResizingFeature.js.map +0 -1
- package/dist/features/column-resizing/columnResizingFeature.types.d.cts +0 -81
- package/dist/features/column-resizing/columnResizingFeature.utils.cjs +0 -246
- package/dist/features/column-resizing/columnResizingFeature.utils.cjs.map +0 -1
- package/dist/features/column-resizing/columnResizingFeature.utils.d.cts +0 -109
- package/dist/features/column-resizing/columnResizingFeature.utils.js.map +0 -1
- package/dist/features/column-sizing/columnSizingFeature.cjs +0 -124
- package/dist/features/column-sizing/columnSizingFeature.cjs.map +0 -1
- package/dist/features/column-sizing/columnSizingFeature.d.cts +0 -10
- package/dist/features/column-sizing/columnSizingFeature.js.map +0 -1
- package/dist/features/column-sizing/columnSizingFeature.types.d.cts +0 -96
- package/dist/features/column-sizing/columnSizingFeature.utils.cjs +0 -256
- package/dist/features/column-sizing/columnSizingFeature.utils.cjs.map +0 -1
- package/dist/features/column-sizing/columnSizingFeature.utils.d.cts +0 -182
- package/dist/features/column-sizing/columnSizingFeature.utils.js.map +0 -1
- package/dist/features/column-visibility/columnVisibilityFeature.cjs +0 -94
- package/dist/features/column-visibility/columnVisibilityFeature.cjs.map +0 -1
- package/dist/features/column-visibility/columnVisibilityFeature.d.cts +0 -10
- package/dist/features/column-visibility/columnVisibilityFeature.js.map +0 -1
- package/dist/features/column-visibility/columnVisibilityFeature.types.d.cts +0 -97
- package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs +0 -283
- package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs.map +0 -1
- package/dist/features/column-visibility/columnVisibilityFeature.utils.d.cts +0 -189
- package/dist/features/column-visibility/columnVisibilityFeature.utils.js.map +0 -1
- package/dist/features/global-filtering/globalFilteringFeature.cjs +0 -41
- package/dist/features/global-filtering/globalFilteringFeature.cjs.map +0 -1
- package/dist/features/global-filtering/globalFilteringFeature.d.cts +0 -10
- package/dist/features/global-filtering/globalFilteringFeature.js.map +0 -1
- package/dist/features/global-filtering/globalFilteringFeature.types.d.cts +0 -71
- package/dist/features/global-filtering/globalFilteringFeature.utils.cjs +0 -88
- package/dist/features/global-filtering/globalFilteringFeature.utils.cjs.map +0 -1
- package/dist/features/global-filtering/globalFilteringFeature.utils.d.cts +0 -74
- package/dist/features/global-filtering/globalFilteringFeature.utils.js.map +0 -1
- package/dist/features/row-expanding/createExpandedRowModel.cjs +0 -59
- package/dist/features/row-expanding/createExpandedRowModel.cjs.map +0 -1
- package/dist/features/row-expanding/createExpandedRowModel.d.cts +0 -21
- package/dist/features/row-expanding/createExpandedRowModel.js.map +0 -1
- package/dist/features/row-expanding/rowExpandingFeature.cjs +0 -47
- package/dist/features/row-expanding/rowExpandingFeature.cjs.map +0 -1
- package/dist/features/row-expanding/rowExpandingFeature.d.cts +0 -10
- package/dist/features/row-expanding/rowExpandingFeature.js.map +0 -1
- package/dist/features/row-expanding/rowExpandingFeature.types.d.cts +0 -127
- package/dist/features/row-expanding/rowExpandingFeature.utils.cjs +0 -281
- package/dist/features/row-expanding/rowExpandingFeature.utils.cjs.map +0 -1
- package/dist/features/row-expanding/rowExpandingFeature.utils.d.cts +0 -191
- package/dist/features/row-expanding/rowExpandingFeature.utils.js.map +0 -1
- package/dist/features/row-pagination/createPaginatedRowModel.cjs +0 -62
- package/dist/features/row-pagination/createPaginatedRowModel.cjs.map +0 -1
- package/dist/features/row-pagination/createPaginatedRowModel.d.cts +0 -15
- package/dist/features/row-pagination/createPaginatedRowModel.js.map +0 -1
- package/dist/features/row-pagination/rowPaginationFeature.cjs +0 -45
- package/dist/features/row-pagination/rowPaginationFeature.cjs.map +0 -1
- package/dist/features/row-pagination/rowPaginationFeature.d.cts +0 -10
- package/dist/features/row-pagination/rowPaginationFeature.js.map +0 -1
- package/dist/features/row-pagination/rowPaginationFeature.types.d.cts +0 -135
- package/dist/features/row-pagination/rowPaginationFeature.utils.cjs +0 -312
- package/dist/features/row-pagination/rowPaginationFeature.utils.cjs.map +0 -1
- package/dist/features/row-pagination/rowPaginationFeature.utils.d.cts +0 -218
- package/dist/features/row-pagination/rowPaginationFeature.utils.js.map +0 -1
- package/dist/features/row-pinning/rowPinningFeature.cjs +0 -67
- package/dist/features/row-pinning/rowPinningFeature.cjs.map +0 -1
- package/dist/features/row-pinning/rowPinningFeature.d.cts +0 -10
- package/dist/features/row-pinning/rowPinningFeature.js.map +0 -1
- package/dist/features/row-pinning/rowPinningFeature.types.d.cts +0 -83
- package/dist/features/row-pinning/rowPinningFeature.utils.cjs +0 -229
- package/dist/features/row-pinning/rowPinningFeature.utils.cjs.map +0 -1
- package/dist/features/row-pinning/rowPinningFeature.utils.d.cts +0 -143
- package/dist/features/row-pinning/rowPinningFeature.utils.js.map +0 -1
- package/dist/features/row-selection/rowSelectionFeature.cjs +0 -75
- package/dist/features/row-selection/rowSelectionFeature.cjs.map +0 -1
- package/dist/features/row-selection/rowSelectionFeature.d.cts +0 -10
- package/dist/features/row-selection/rowSelectionFeature.js.map +0 -1
- package/dist/features/row-selection/rowSelectionFeature.types.d.cts +0 -136
- package/dist/features/row-selection/rowSelectionFeature.utils.cjs +0 -514
- package/dist/features/row-selection/rowSelectionFeature.utils.cjs.map +0 -1
- package/dist/features/row-selection/rowSelectionFeature.utils.d.cts +0 -318
- package/dist/features/row-selection/rowSelectionFeature.utils.js.map +0 -1
- package/dist/features/row-sorting/createSortedRowModel.cjs +0 -95
- package/dist/features/row-sorting/createSortedRowModel.cjs.map +0 -1
- package/dist/features/row-sorting/createSortedRowModel.d.cts +0 -16
- package/dist/features/row-sorting/createSortedRowModel.js.map +0 -1
- package/dist/features/row-sorting/rowSortingFeature.cjs +0 -55
- package/dist/features/row-sorting/rowSortingFeature.cjs.map +0 -1
- package/dist/features/row-sorting/rowSortingFeature.d.cts +0 -10
- package/dist/features/row-sorting/rowSortingFeature.js.map +0 -1
- package/dist/features/row-sorting/rowSortingFeature.types.d.cts +0 -188
- package/dist/features/row-sorting/rowSortingFeature.utils.cjs +0 -305
- package/dist/features/row-sorting/rowSortingFeature.utils.cjs.map +0 -1
- package/dist/features/row-sorting/rowSortingFeature.utils.d.cts +0 -193
- package/dist/features/row-sorting/rowSortingFeature.utils.js.map +0 -1
- package/dist/features/stockFeatures.cjs +0 -41
- package/dist/features/stockFeatures.cjs.map +0 -1
- package/dist/features/stockFeatures.d.cts +0 -41
- package/dist/features/stockFeatures.js.map +0 -1
- package/dist/flex-render.cjs +0 -29
- package/dist/flex-render.cjs.map +0 -1
- package/dist/flex-render.d.cts +0 -34
- package/dist/flex-render.js.map +0 -1
- 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 -130
- 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 -122
- package/dist/fns/sortFns.js.map +0 -1
- package/dist/helpers/columnHelper.cjs +0 -41
- package/dist/helpers/columnHelper.cjs.map +0 -1
- package/dist/helpers/columnHelper.d.cts +0 -71
- package/dist/helpers/columnHelper.js.map +0 -1
- package/dist/helpers/tableFeatures.cjs +0 -20
- package/dist/helpers/tableFeatures.cjs.map +0 -1
- package/dist/helpers/tableFeatures.d.cts +0 -18
- package/dist/helpers/tableFeatures.js.map +0 -1
- package/dist/helpers/tableOptions.cjs +0 -15
- package/dist/helpers/tableOptions.cjs.map +0 -1
- package/dist/helpers/tableOptions.d.cts +0 -57
- package/dist/helpers/tableOptions.js.map +0 -1
- package/dist/index.cjs +0 -133
- package/dist/index.d.cts +0 -78
- package/dist/reactivity.cjs +0 -4
- package/dist/reactivity.d.cts +0 -3
- package/dist/static-functions.cjs +0 -263
- package/dist/static-functions.d.cts +0 -21
- package/dist/store-reactivity-bindings.cjs +0 -44
- package/dist/store-reactivity-bindings.cjs.map +0 -1
- package/dist/store-reactivity-bindings.d.cts +0 -22
- package/dist/store-reactivity-bindings.js.map +0 -1
- package/dist/types/Cell.d.cts +0 -14
- package/dist/types/Column.d.cts +0 -36
- package/dist/types/ColumnDef.d.cts +0 -109
- package/dist/types/Header.d.cts +0 -16
- package/dist/types/HeaderGroup.d.cts +0 -10
- package/dist/types/Row.d.cts +0 -26
- package/dist/types/RowModel.d.cts +0 -36
- package/dist/types/RowModelFns.d.cts +0 -18
- package/dist/types/Table.d.cts +0 -70
- package/dist/types/TableFeatures.d.cts +0 -53
- package/dist/types/TableOptions.d.cts +0 -69
- package/dist/types/TableState.d.cts +0 -48
- package/dist/types/type-utils.d.cts +0 -23
- package/dist/utils.cjs +0 -243
- package/dist/utils.cjs.map +0 -1
- package/dist/utils.d.cts +0 -114
- package/dist/utils.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/core/cells/constructCell.ts +0 -55
- package/src/core/cells/coreCellsFeature.ts +0 -27
- package/src/core/cells/coreCellsFeature.types.ts +0 -68
- package/src/core/cells/coreCellsFeature.utils.ts +0 -68
- package/src/core/columns/constructColumn.ts +0 -119
- package/src/core/columns/coreColumnsFeature.ts +0 -73
- package/src/core/columns/coreColumnsFeature.types.ts +0 -108
- package/src/core/columns/coreColumnsFeature.utils.ts +0 -275
- package/src/core/coreFeatures.ts +0 -31
- package/src/core/headers/buildHeaderGroups.ts +0 -182
- package/src/core/headers/constructHeader.ts +0 -67
- package/src/core/headers/coreHeadersFeature.ts +0 -56
- package/src/core/headers/coreHeadersFeature.types.ts +0 -125
- package/src/core/headers/coreHeadersFeature.utils.ts +0 -200
- package/src/core/reactivity/coreReactivityFeature.types.ts +0 -56
- package/src/core/reactivity/coreReactivityFeature.utils.ts +0 -44
- package/src/core/row-models/coreRowModelsFeature.ts +0 -62
- package/src/core/row-models/coreRowModelsFeature.types.ts +0 -64
- package/src/core/row-models/coreRowModelsFeature.utils.ts +0 -272
- package/src/core/row-models/createCoreRowModel.ts +0 -93
- package/src/core/rows/constructRow.ts +0 -66
- package/src/core/rows/coreRowsFeature.ts +0 -62
- package/src/core/rows/coreRowsFeature.types.ts +0 -117
- package/src/core/rows/coreRowsFeature.utils.ts +0 -264
- package/src/core/table/constructTable.ts +0 -172
- package/src/core/table/coreTablesFeature.ts +0 -19
- package/src/core/table/coreTablesFeature.types.ts +0 -216
- package/src/core/table/coreTablesFeature.utils.ts +0 -131
- package/src/features/column-faceting/columnFacetingFeature.ts +0 -89
- package/src/features/column-faceting/columnFacetingFeature.types.ts +0 -109
- package/src/features/column-faceting/columnFacetingFeature.utils.ts +0 -145
- package/src/features/column-faceting/createFacetedMinMaxValues.ts +0 -66
- package/src/features/column-faceting/createFacetedRowModel.ts +0 -85
- package/src/features/column-faceting/createFacetedUniqueValues.ts +0 -66
- package/src/features/column-filtering/columnFilteringFeature.ts +0 -86
- package/src/features/column-filtering/columnFilteringFeature.types.ts +0 -232
- package/src/features/column-filtering/columnFilteringFeature.utils.ts +0 -331
- package/src/features/column-filtering/createFilteredRowModel.ts +0 -183
- package/src/features/column-filtering/filterRowsUtils.ts +0 -157
- package/src/features/column-grouping/columnGroupingFeature.ts +0 -115
- package/src/features/column-grouping/columnGroupingFeature.types.ts +0 -226
- package/src/features/column-grouping/columnGroupingFeature.utils.ts +0 -354
- package/src/features/column-grouping/createGroupedRowModel.ts +0 -220
- package/src/features/column-ordering/columnOrderingFeature.ts +0 -73
- package/src/features/column-ordering/columnOrderingFeature.types.ts +0 -60
- package/src/features/column-ordering/columnOrderingFeature.utils.ts +0 -241
- package/src/features/column-pinning/columnPinningFeature.ts +0 -316
- package/src/features/column-pinning/columnPinningFeature.types.ts +0 -192
- package/src/features/column-pinning/columnPinningFeature.utils.ts +0 -908
- package/src/features/column-resizing/columnResizingFeature.ts +0 -65
- package/src/features/column-resizing/columnResizingFeature.types.ts +0 -89
- package/src/features/column-resizing/columnResizingFeature.utils.ts +0 -364
- package/src/features/column-sizing/columnSizingFeature.ts +0 -145
- package/src/features/column-sizing/columnSizingFeature.types.ts +0 -102
- package/src/features/column-sizing/columnSizingFeature.utils.ts +0 -381
- package/src/features/column-visibility/columnVisibilityFeature.ts +0 -122
- package/src/features/column-visibility/columnVisibilityFeature.types.ts +0 -112
- package/src/features/column-visibility/columnVisibilityFeature.utils.ts +0 -384
- package/src/features/global-filtering/globalFilteringFeature.ts +0 -65
- package/src/features/global-filtering/globalFilteringFeature.types.ts +0 -91
- package/src/features/global-filtering/globalFilteringFeature.utils.ts +0 -118
- package/src/features/row-expanding/createExpandedRowModel.ts +0 -82
- package/src/features/row-expanding/rowExpandingFeature.ts +0 -94
- package/src/features/row-expanding/rowExpandingFeature.types.ts +0 -147
- package/src/features/row-expanding/rowExpandingFeature.utils.ts +0 -374
- package/src/features/row-pagination/createPaginatedRowModel.ts +0 -83
- package/src/features/row-pagination/rowPaginationFeature.ts +0 -95
- package/src/features/row-pagination/rowPaginationFeature.types.ts +0 -152
- package/src/features/row-pagination/rowPaginationFeature.utils.ts +0 -400
- package/src/features/row-pinning/rowPinningFeature.ts +0 -97
- package/src/features/row-pinning/rowPinningFeature.types.ts +0 -95
- package/src/features/row-pinning/rowPinningFeature.utils.ts +0 -323
- package/src/features/row-selection/rowSelectionFeature.ts +0 -140
- package/src/features/row-selection/rowSelectionFeature.types.ts +0 -151
- package/src/features/row-selection/rowSelectionFeature.utils.ts +0 -745
- package/src/features/row-sorting/createSortedRowModel.ts +0 -157
- package/src/features/row-sorting/rowSortingFeature.ts +0 -103
- package/src/features/row-sorting/rowSortingFeature.types.ts +0 -235
- package/src/features/row-sorting/rowSortingFeature.utils.ts +0 -489
- package/src/features/stockFeatures.ts +0 -53
- package/src/flex-render.ts +0 -70
- package/src/fns/aggregationFns.ts +0 -245
- package/src/fns/filterFns.ts +0 -382
- package/src/fns/sortFns.ts +0 -240
- package/src/helpers/columnHelper.ts +0 -122
- package/src/helpers/tableFeatures.ts +0 -24
- package/src/helpers/tableOptions.ts +0 -117
- package/src/index.ts +0 -138
- package/src/process-env.d.ts +0 -6
- package/src/reactivity.ts +0 -2
- package/src/static-functions.ts +0 -31
- package/src/store-reactivity-bindings.ts +0 -47
- package/src/types/Cell.ts +0 -21
- package/src/types/Column.ts +0 -51
- package/src/types/ColumnDef.ts +0 -228
- package/src/types/Header.ts +0 -23
- package/src/types/HeaderGroup.ts +0 -13
- package/src/types/Row.ts +0 -34
- package/src/types/RowModel.ts +0 -98
- package/src/types/RowModelFns.ts +0 -32
- package/src/types/Table.ts +0 -91
- package/src/types/TableFeatures.ts +0 -101
- package/src/types/TableOptions.ts +0 -101
- package/src/types/TableState.ts +0 -47
- package/src/types/type-utils.ts +0 -84
- package/src/utils.ts +0 -441
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
//#region src/features/cell-selection/cellSelectionGeometry.ts
|
|
2
|
+
function compareBounds(a, b) {
|
|
3
|
+
return a.minRowIndex - b.minRowIndex || a.minColumnIndex - b.minColumnIndex || a.maxRowIndex - b.maxRowIndex || a.maxColumnIndex - b.maxColumnIndex;
|
|
4
|
+
}
|
|
5
|
+
function intersectCellSelectionBounds(a, b) {
|
|
6
|
+
const intersection = {
|
|
7
|
+
minRowIndex: Math.max(a.minRowIndex, b.minRowIndex),
|
|
8
|
+
maxRowIndex: Math.min(a.maxRowIndex, b.maxRowIndex),
|
|
9
|
+
minColumnIndex: Math.max(a.minColumnIndex, b.minColumnIndex),
|
|
10
|
+
maxColumnIndex: Math.min(a.maxColumnIndex, b.maxColumnIndex)
|
|
11
|
+
};
|
|
12
|
+
return intersection.minRowIndex <= intersection.maxRowIndex && intersection.minColumnIndex <= intersection.maxColumnIndex ? intersection : void 0;
|
|
13
|
+
}
|
|
14
|
+
function subtractCellSelectionBounds(source, excluded) {
|
|
15
|
+
const intersection = intersectCellSelectionBounds(source, excluded);
|
|
16
|
+
if (!intersection) return [source];
|
|
17
|
+
const result = [];
|
|
18
|
+
if (source.minRowIndex < intersection.minRowIndex) result.push({
|
|
19
|
+
...source,
|
|
20
|
+
maxRowIndex: intersection.minRowIndex - 1
|
|
21
|
+
});
|
|
22
|
+
if (intersection.maxRowIndex < source.maxRowIndex) result.push({
|
|
23
|
+
...source,
|
|
24
|
+
minRowIndex: intersection.maxRowIndex + 1
|
|
25
|
+
});
|
|
26
|
+
if (source.minColumnIndex < intersection.minColumnIndex) result.push({
|
|
27
|
+
minRowIndex: intersection.minRowIndex,
|
|
28
|
+
maxRowIndex: intersection.maxRowIndex,
|
|
29
|
+
minColumnIndex: source.minColumnIndex,
|
|
30
|
+
maxColumnIndex: intersection.minColumnIndex - 1
|
|
31
|
+
});
|
|
32
|
+
if (intersection.maxColumnIndex < source.maxColumnIndex) result.push({
|
|
33
|
+
minRowIndex: intersection.minRowIndex,
|
|
34
|
+
maxRowIndex: intersection.maxRowIndex,
|
|
35
|
+
minColumnIndex: intersection.maxColumnIndex + 1,
|
|
36
|
+
maxColumnIndex: source.maxColumnIndex
|
|
37
|
+
});
|
|
38
|
+
return result;
|
|
39
|
+
}
|
|
40
|
+
function mergePair(a, b) {
|
|
41
|
+
if (a.minRowIndex === b.minRowIndex && a.maxRowIndex === b.maxRowIndex && (a.maxColumnIndex + 1 === b.minColumnIndex || b.maxColumnIndex + 1 === a.minColumnIndex)) return {
|
|
42
|
+
minRowIndex: a.minRowIndex,
|
|
43
|
+
maxRowIndex: a.maxRowIndex,
|
|
44
|
+
minColumnIndex: Math.min(a.minColumnIndex, b.minColumnIndex),
|
|
45
|
+
maxColumnIndex: Math.max(a.maxColumnIndex, b.maxColumnIndex)
|
|
46
|
+
};
|
|
47
|
+
if (a.minColumnIndex === b.minColumnIndex && a.maxColumnIndex === b.maxColumnIndex && (a.maxRowIndex + 1 === b.minRowIndex || b.maxRowIndex + 1 === a.minRowIndex)) return {
|
|
48
|
+
minRowIndex: Math.min(a.minRowIndex, b.minRowIndex),
|
|
49
|
+
maxRowIndex: Math.max(a.maxRowIndex, b.maxRowIndex),
|
|
50
|
+
minColumnIndex: a.minColumnIndex,
|
|
51
|
+
maxColumnIndex: a.maxColumnIndex
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
function mergeAdjacentCellSelectionBounds(input) {
|
|
55
|
+
const result = input.slice();
|
|
56
|
+
for (let i = 0; i < result.length; i++) for (let j = i + 1; j < result.length; j++) {
|
|
57
|
+
const merged = mergePair(result[i], result[j]);
|
|
58
|
+
if (!merged) continue;
|
|
59
|
+
result.splice(j, 1);
|
|
60
|
+
result[i] = merged;
|
|
61
|
+
i = -1;
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
return result.sort(compareBounds);
|
|
65
|
+
}
|
|
66
|
+
function addCellSelectionBounds(selected, included) {
|
|
67
|
+
let fragments = [included];
|
|
68
|
+
for (const existing of selected) {
|
|
69
|
+
fragments = fragments.flatMap((fragment) => subtractCellSelectionBounds(fragment, existing));
|
|
70
|
+
if (!fragments.length) return selected.slice();
|
|
71
|
+
}
|
|
72
|
+
return mergeAdjacentCellSelectionBounds([...selected, ...fragments]);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Grows a rectangle until it fully contains every merged-cell rectangle it
|
|
76
|
+
* touches.
|
|
77
|
+
*
|
|
78
|
+
* Merged cells make plain rectangles insufficient: a selection that clips part
|
|
79
|
+
* of a merge must cover the whole merge, and covering it can bring the
|
|
80
|
+
* rectangle into contact with further merges, so the expansion runs to a fixed
|
|
81
|
+
* point. The loop is bounded by the merge count, since each pass that changes
|
|
82
|
+
* the rectangle consumes at least one merge.
|
|
83
|
+
*/
|
|
84
|
+
function expandCellSelectionBounds(bounds, merges) {
|
|
85
|
+
let expanded = bounds;
|
|
86
|
+
let changed = true;
|
|
87
|
+
while (changed) {
|
|
88
|
+
changed = false;
|
|
89
|
+
for (const merge of merges) {
|
|
90
|
+
if (!intersectCellSelectionBounds(expanded, merge)) continue;
|
|
91
|
+
const union = {
|
|
92
|
+
minRowIndex: Math.min(expanded.minRowIndex, merge.minRowIndex),
|
|
93
|
+
maxRowIndex: Math.max(expanded.maxRowIndex, merge.maxRowIndex),
|
|
94
|
+
minColumnIndex: Math.min(expanded.minColumnIndex, merge.minColumnIndex),
|
|
95
|
+
maxColumnIndex: Math.max(expanded.maxColumnIndex, merge.maxColumnIndex)
|
|
96
|
+
};
|
|
97
|
+
if (union.minRowIndex !== expanded.minRowIndex || union.maxRowIndex !== expanded.maxRowIndex || union.minColumnIndex !== expanded.minColumnIndex || union.maxColumnIndex !== expanded.maxColumnIndex) {
|
|
98
|
+
expanded = union;
|
|
99
|
+
changed = true;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return expanded;
|
|
104
|
+
}
|
|
105
|
+
function applyCellSelectionBoundsOperations(operations) {
|
|
106
|
+
let selected = [];
|
|
107
|
+
for (const operation of operations) {
|
|
108
|
+
const bounds = {
|
|
109
|
+
minRowIndex: operation.minRowIndex,
|
|
110
|
+
maxRowIndex: operation.maxRowIndex,
|
|
111
|
+
minColumnIndex: operation.minColumnIndex,
|
|
112
|
+
maxColumnIndex: operation.maxColumnIndex
|
|
113
|
+
};
|
|
114
|
+
if (operation.operation === "exclude") selected = mergeAdjacentCellSelectionBounds(selected.flatMap((bound) => subtractCellSelectionBounds(bound, bounds)));
|
|
115
|
+
else selected = addCellSelectionBounds(selected, bounds);
|
|
116
|
+
}
|
|
117
|
+
return selected.sort(compareBounds);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
//#endregion
|
|
121
|
+
export { addCellSelectionBounds, applyCellSelectionBoundsOperations, expandCellSelectionBounds, intersectCellSelectionBounds, mergeAdjacentCellSelectionBounds, subtractCellSelectionBounds };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { TableFeature } from "../../types/TableFeatures.js";
|
|
2
|
+
//#region src/features/cell-spanning/cellSpanningFeature.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* Feature that merges adjacent cells that share a value into row-spanning
|
|
5
|
+
* cells, and lets a column def declare column-spanning cells per row.
|
|
6
|
+
*
|
|
7
|
+
* Stateless: spans are always derived from the rows that are currently
|
|
8
|
+
* rendered, so there is nothing to persist and nothing to configure beyond the
|
|
9
|
+
* column defs.
|
|
10
|
+
*/
|
|
11
|
+
declare const cellSpanningFeature: TableFeature;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { cellSpanningFeature };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { assignPrototypeAPIs, assignTableAPIs } from "../../utils.js";
|
|
2
|
+
import { cell_getColSpan, cell_getIsCovered, cell_getRowSpan, table_getCellSpanIndex } from "./cellSpanningFeature.utils.js";
|
|
3
|
+
|
|
4
|
+
//#region src/features/cell-spanning/cellSpanningFeature.ts
|
|
5
|
+
/**
|
|
6
|
+
* Feature that merges adjacent cells that share a value into row-spanning
|
|
7
|
+
* cells, and lets a column def declare column-spanning cells per row.
|
|
8
|
+
*
|
|
9
|
+
* Stateless: spans are always derived from the rows that are currently
|
|
10
|
+
* rendered, so there is nothing to persist and nothing to configure beyond the
|
|
11
|
+
* column defs.
|
|
12
|
+
*/
|
|
13
|
+
const cellSpanningFeature = {
|
|
14
|
+
getDefaultTableOptions: () => {
|
|
15
|
+
return { enableCellSpanning: true };
|
|
16
|
+
},
|
|
17
|
+
initRowInstanceData: (row) => {
|
|
18
|
+
row._cellSpanRowIndex = -1;
|
|
19
|
+
},
|
|
20
|
+
assignCellPrototype: (prototype, table) => {
|
|
21
|
+
assignPrototypeAPIs("cellSpanningFeature", prototype, table, {
|
|
22
|
+
cell_getColSpan: { fn: (cell) => cell_getColSpan(cell) },
|
|
23
|
+
cell_getIsCovered: { fn: (cell) => cell_getIsCovered(cell) },
|
|
24
|
+
cell_getRowSpan: { fn: (cell) => cell_getRowSpan(cell) }
|
|
25
|
+
});
|
|
26
|
+
},
|
|
27
|
+
constructTableAPIs: (table) => {
|
|
28
|
+
assignTableAPIs("cellSpanningFeature", table, { table_getCellSpanIndex: {
|
|
29
|
+
fn: () => table_getCellSpanIndex(table),
|
|
30
|
+
memoDeps: () => [
|
|
31
|
+
table.getRowModel().rows,
|
|
32
|
+
table.atoms.rowPinning?.get(),
|
|
33
|
+
table.options.keepPinnedRows,
|
|
34
|
+
table.atoms.columnVisibility?.get(),
|
|
35
|
+
table.atoms.columnOrder?.get(),
|
|
36
|
+
table.atoms.columnPinning?.get(),
|
|
37
|
+
table.atoms.grouping?.get(),
|
|
38
|
+
table.options.columns,
|
|
39
|
+
table.options.groupedColumnMode,
|
|
40
|
+
table.options.enableCellSpanning
|
|
41
|
+
]
|
|
42
|
+
} });
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
//#endregion
|
|
47
|
+
export { cellSpanningFeature };
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { CellData, RowData } from "../../types/type-utils.js";
|
|
2
|
+
import { Column } from "../../types/Column.js";
|
|
3
|
+
import { Row } from "../../types/Row.js";
|
|
4
|
+
import { Table } from "../../types/Table.js";
|
|
5
|
+
import { TableFeatures } from "../../types/TableFeatures.js";
|
|
6
|
+
//#region src/features/cell-spanning/cellSpanningFeature.types.d.ts
|
|
7
|
+
/**
|
|
8
|
+
* The table's cell span index for the rows that are currently rendered.
|
|
9
|
+
*
|
|
10
|
+
* Cell APIs read this; it is exposed for devtools and for virtualizers that
|
|
11
|
+
* need to know where a run's anchor sits relative to the rendered window.
|
|
12
|
+
*/
|
|
13
|
+
interface CellSpanIndex<in out TFeatures extends TableFeatures, in out TData extends RowData> {
|
|
14
|
+
/**
|
|
15
|
+
* Column spans per render-order row position, indexed by render-order column
|
|
16
|
+
* position. Holes are the common case: only rows that declared a column span
|
|
17
|
+
* get an array. In a stored array, the spanning cell holds its span and the
|
|
18
|
+
* cells it covers hold `0`; every other cell holds `1`.
|
|
19
|
+
*/
|
|
20
|
+
colSpans: Array<Int32Array | undefined>;
|
|
21
|
+
/**
|
|
22
|
+
* Render-order index for every visible column id. Hidden columns are absent.
|
|
23
|
+
*/
|
|
24
|
+
columnIndexes: Record<string, number>;
|
|
25
|
+
/**
|
|
26
|
+
* Row spans per column id, indexed by render-order row position. Only columns
|
|
27
|
+
* that produced at least one run longer than one row appear here; a missing
|
|
28
|
+
* column means every cell in it spans exactly one row. In a stored array, the
|
|
29
|
+
* run's anchor row holds the run length and the rows it covers hold `0`.
|
|
30
|
+
*/
|
|
31
|
+
rowSpans: Record<string, Int32Array>;
|
|
32
|
+
/**
|
|
33
|
+
* The exact ordered rows this index was built from, in render order:
|
|
34
|
+
* top-pinned rows, then the (paginated) center rows, then bottom-pinned
|
|
35
|
+
* rows. Cell reads compare against this to reject stale row positions.
|
|
36
|
+
*/
|
|
37
|
+
rows: ReadonlyArray<Row<TFeatures, TData>>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Context passed to a `spanRows` predicate for each candidate row.
|
|
41
|
+
*
|
|
42
|
+
* The run is anchored: `anchorRow` is the row whose cell will render the
|
|
43
|
+
* merged content, and every later row in the run is tested against it, which
|
|
44
|
+
* keeps runs transitive by construction. `previousRow` is provided for
|
|
45
|
+
* predicates that want a step-wise comparison instead.
|
|
46
|
+
*/
|
|
47
|
+
interface RowSpanContext<in out TFeatures extends TableFeatures, in out TData extends RowData, TValue extends CellData = CellData> {
|
|
48
|
+
anchorRow: Row<TFeatures, TData>;
|
|
49
|
+
anchorValue: TValue;
|
|
50
|
+
column: Column<TFeatures, TData, TValue>;
|
|
51
|
+
previousRow: Row<TFeatures, TData>;
|
|
52
|
+
row: Row<TFeatures, TData>;
|
|
53
|
+
table: Table<TFeatures, TData>;
|
|
54
|
+
value: TValue;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Context passed to a `spanColumns` resolver for each rendered row.
|
|
58
|
+
*/
|
|
59
|
+
interface ColSpanContext<in out TFeatures extends TableFeatures, in out TData extends RowData, TValue extends CellData = CellData> {
|
|
60
|
+
column: Column<TFeatures, TData, TValue>;
|
|
61
|
+
row: Row<TFeatures, TData>;
|
|
62
|
+
table: Table<TFeatures, TData>;
|
|
63
|
+
}
|
|
64
|
+
interface ColumnDef_CellSpanning<in out TFeatures extends TableFeatures, in out TData extends RowData, TValue extends CellData = CellData> {
|
|
65
|
+
/**
|
|
66
|
+
* Turns this column off for cell spanning even when the table allows it.
|
|
67
|
+
* Defaults to `true`.
|
|
68
|
+
*/
|
|
69
|
+
enableCellSpanning?: boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Makes this column's cell span the given number of columns per row,
|
|
72
|
+
* starting at itself and counted in the order columns actually render.
|
|
73
|
+
*
|
|
74
|
+
* Return `1` or less for no span. Larger values are clamped to the end of
|
|
75
|
+
* the cell's pinned region, so a span can never cross the start-pinned,
|
|
76
|
+
* center, or end-pinned boundary; pass `Infinity` for "the rest of my
|
|
77
|
+
* region". Hidden columns are not counted.
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```ts
|
|
81
|
+
* { accessorKey: 'label', spanColumns: ({ row }) => row.original.isSummary ? Infinity : 1 }
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
84
|
+
spanColumns?: number | ((context: ColSpanContext<TFeatures, TData, TValue>) => number);
|
|
85
|
+
/**
|
|
86
|
+
* Merges adjacent rows in this column into a single vertically spanning
|
|
87
|
+
* cell.
|
|
88
|
+
*
|
|
89
|
+
* `true` merges rows whose values for this column are the same value
|
|
90
|
+
* (`Object.is`). Nullish values never merge under the default comparison.
|
|
91
|
+
*
|
|
92
|
+
* A predicate replaces the comparison entirely and decides whether `row`
|
|
93
|
+
* joins the run anchored at `anchorRow`; it may merge nullish values. It is
|
|
94
|
+
* called once per candidate row each time the span index rebuilds, and each
|
|
95
|
+
* call allocates one context object, so keep it cheap.
|
|
96
|
+
*
|
|
97
|
+
* Spans are always recomputed from the rows that are actually rendered, so
|
|
98
|
+
* sorting, filtering, and paging only change which rows are adjacent. Runs
|
|
99
|
+
* never cross a page boundary, a pinned-row section boundary, a change of
|
|
100
|
+
* position in the row tree, or a grouped row. Ignored while this column is
|
|
101
|
+
* grouped.
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* ```ts
|
|
105
|
+
* { accessorKey: 'department', spanRows: true }
|
|
106
|
+
* ```
|
|
107
|
+
*/
|
|
108
|
+
spanRows?: boolean | ((context: RowSpanContext<TFeatures, TData, TValue>) => boolean);
|
|
109
|
+
}
|
|
110
|
+
interface TableOptions_CellSpanning {
|
|
111
|
+
/**
|
|
112
|
+
* Allows cells to span rows or columns. When `false` every cell reports a
|
|
113
|
+
* span of `1` and the span index is never built. Defaults to `true`.
|
|
114
|
+
*/
|
|
115
|
+
enableCellSpanning?: boolean;
|
|
116
|
+
}
|
|
117
|
+
interface Cell_CellSpanning {
|
|
118
|
+
/**
|
|
119
|
+
* Number of columns this cell spans when rendered. `1` when it does not
|
|
120
|
+
* span, and `0` when another cell's column span covers it.
|
|
121
|
+
*
|
|
122
|
+
* Never render a `0` as a `colSpan` attribute; skip the cell instead. See
|
|
123
|
+
* `getIsCovered`.
|
|
124
|
+
*/
|
|
125
|
+
getColSpan: () => number;
|
|
126
|
+
/**
|
|
127
|
+
* Whether another cell's span covers this cell. Skip rendering covered
|
|
128
|
+
* cells; the cell that covers them carries the content and the span
|
|
129
|
+
* attributes.
|
|
130
|
+
*/
|
|
131
|
+
getIsCovered: () => boolean;
|
|
132
|
+
/**
|
|
133
|
+
* Number of rows this cell spans when rendered. `1` when it does not span,
|
|
134
|
+
* and `0` when a spanning cell above it covers it, matching the
|
|
135
|
+
* `header.rowSpan` convention.
|
|
136
|
+
*
|
|
137
|
+
* Never render a `0` as a `rowSpan` attribute: in HTML, `rowspan="0"` means
|
|
138
|
+
* "span to the end of the row group", which merges the cell down the entire
|
|
139
|
+
* table section. Skip the cell instead. See `getIsCovered`.
|
|
140
|
+
*/
|
|
141
|
+
getRowSpan: () => number;
|
|
142
|
+
}
|
|
143
|
+
interface Table_CellSpanning<in out TFeatures extends TableFeatures, in out TData extends RowData> {
|
|
144
|
+
/**
|
|
145
|
+
* The memoized span index for the rows that are currently rendered.
|
|
146
|
+
*/
|
|
147
|
+
getCellSpanIndex: () => CellSpanIndex<TFeatures, TData>;
|
|
148
|
+
}
|
|
149
|
+
//#endregion
|
|
150
|
+
export { CellSpanIndex, Cell_CellSpanning, ColSpanContext, ColumnDef_CellSpanning, RowSpanContext, TableOptions_CellSpanning, Table_CellSpanning };
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { CellData, RowData } from "../../types/type-utils.js";
|
|
2
|
+
import { Column } from "../../types/Column.js";
|
|
3
|
+
import { Table } from "../../types/Table.js";
|
|
4
|
+
import { CellSpanIndex } from "./cellSpanningFeature.types.js";
|
|
5
|
+
import { Cell } from "../../types/Cell.js";
|
|
6
|
+
import { TableFeatures } from "../../types/TableFeatures.js";
|
|
7
|
+
//#region src/features/cell-spanning/cellSpanningFeature.utils.d.ts
|
|
8
|
+
/**
|
|
9
|
+
* Checks whether this column takes part in cell spanning.
|
|
10
|
+
*
|
|
11
|
+
* A column def opting out with `enableCellSpanning: false` wins over the table
|
|
12
|
+
* option, matching how the other per-column enable flags resolve.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* const canSpan = column_getCanSpan(column)
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
declare function column_getCanSpan<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Builds the table's cell span index for the rows that are currently rendered.
|
|
22
|
+
*
|
|
23
|
+
* Spans are always derived from scratch from the final row model, so sorting,
|
|
24
|
+
* filtering, pagination, expansion, and row pinning only change adjacency and
|
|
25
|
+
* the index follows. Nothing is persisted and there is nothing to configure.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* const spanIndex = table_getCellSpanIndex(table)
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
declare function table_getCellSpanIndex<TFeatures extends TableFeatures, TData extends RowData>(table: Table<TFeatures, TData>): CellSpanIndex<TFeatures, TData>;
|
|
33
|
+
/**
|
|
34
|
+
* Returns how many rows this cell spans.
|
|
35
|
+
*
|
|
36
|
+
* `1` when it does not span, and `0` when a spanning cell above it covers it,
|
|
37
|
+
* matching the `header.rowSpan` convention where `0` means "skip this cell".
|
|
38
|
+
*
|
|
39
|
+
* Deliberately not memoized: a per-cell memo would allocate a closure and a
|
|
40
|
+
* dependency array for every cell, costing more than the two lookups this
|
|
41
|
+
* performs against the table-level span index.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```ts
|
|
45
|
+
* const rowSpan = cell_getRowSpan(cell)
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
declare function cell_getRowSpan<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(cell: Cell<TFeatures, TData, TValue>): number;
|
|
49
|
+
/**
|
|
50
|
+
* Returns how many columns this cell spans.
|
|
51
|
+
*
|
|
52
|
+
* `1` when it does not span, and `0` when another cell's column span covers
|
|
53
|
+
* it.
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```ts
|
|
57
|
+
* const colSpan = cell_getColSpan(cell)
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
declare function cell_getColSpan<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(cell: Cell<TFeatures, TData, TValue>): number;
|
|
61
|
+
/**
|
|
62
|
+
* Checks whether another cell's span covers this cell.
|
|
63
|
+
*
|
|
64
|
+
* Covered cells must not be rendered; the cell that covers them carries the
|
|
65
|
+
* content and the span attributes.
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```ts
|
|
69
|
+
* const isCovered = cell_getIsCovered(cell)
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
declare function cell_getIsCovered<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(cell: Cell<TFeatures, TData, TValue>): boolean;
|
|
73
|
+
//#endregion
|
|
74
|
+
export { cell_getColSpan, cell_getIsCovered, cell_getRowSpan, column_getCanSpan, table_getCellSpanIndex };
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
import { callMemoOrStaticFn, isFunction, makeObjectMap } from "../../utils.js";
|
|
2
|
+
|
|
3
|
+
//#region src/features/cell-spanning/cellSpanningFeature.utils.ts
|
|
4
|
+
const EMPTY_ROW_SPANS = makeObjectMap();
|
|
5
|
+
const EMPTY_COLUMN_INDEXES = makeObjectMap();
|
|
6
|
+
const EMPTY_COL_SPANS = [];
|
|
7
|
+
const NO_SECTION_STARTS = [];
|
|
8
|
+
/**
|
|
9
|
+
* Resolves the rows in the order a renderer actually draws them, plus the
|
|
10
|
+
* positions at which a new visual section begins.
|
|
11
|
+
*
|
|
12
|
+
* Without row pinning this is the final row model itself, returned by
|
|
13
|
+
* reference so the common path allocates nothing. With row pinning it is the
|
|
14
|
+
* concatenation the three-list renderer walks: `getTopRows()`,
|
|
15
|
+
* `getCenterRows()`, `getBottomRows()`. `getCenterRows()` filters the row
|
|
16
|
+
* model by the pinned ids, so no row appears in two sections and every row
|
|
17
|
+
* gets exactly one position; with `keepPinnedRows` a pinned row that filtering
|
|
18
|
+
* removed from the row model still appears exactly once, in its pinned
|
|
19
|
+
* section.
|
|
20
|
+
*
|
|
21
|
+
* The pinning reads are optional-chained so the feature stays correct when
|
|
22
|
+
* `rowPinningFeature` is not registered.
|
|
23
|
+
*/
|
|
24
|
+
function getRenderedRows(table) {
|
|
25
|
+
const rows = table.getRowModel().rows;
|
|
26
|
+
const rowPinning = table.atoms.rowPinning?.get();
|
|
27
|
+
if (!rowPinning || !rowPinning.top.length && !rowPinning.bottom.length) return {
|
|
28
|
+
rows,
|
|
29
|
+
sectionStarts: NO_SECTION_STARTS
|
|
30
|
+
};
|
|
31
|
+
const pinnedTable = table;
|
|
32
|
+
const top = pinnedTable.getTopRows?.() ?? [];
|
|
33
|
+
const center = pinnedTable.getCenterRows?.() ?? rows;
|
|
34
|
+
const bottom = pinnedTable.getBottomRows?.() ?? [];
|
|
35
|
+
return {
|
|
36
|
+
rows: [
|
|
37
|
+
...top,
|
|
38
|
+
...center,
|
|
39
|
+
...bottom
|
|
40
|
+
],
|
|
41
|
+
sectionStarts: [top.length, top.length + center.length]
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Resolves the visible columns in the order cells render, plus the two
|
|
46
|
+
* boundaries between the start-pinned, center, and end-pinned regions.
|
|
47
|
+
*
|
|
48
|
+
* Read off a rendered row's visible cells rather than re-derived, so the
|
|
49
|
+
* ordering is the renderer's own by construction. `getVisibleCells` only
|
|
50
|
+
* exists when `columnVisibilityFeature` is registered; without it renderers
|
|
51
|
+
* walk `row.getAllCells()`, whose order is `table.getAllLeafColumns()`.
|
|
52
|
+
*/
|
|
53
|
+
function getRenderedColumns(table, firstRow) {
|
|
54
|
+
const cells = firstRow.getVisibleCells?.() ?? firstRow.getAllCells();
|
|
55
|
+
const columns = new Array(cells.length);
|
|
56
|
+
for (let i = 0; i < cells.length; i++) columns[i] = cells[i].column;
|
|
57
|
+
const pinning = table.atoms.columnPinning?.get();
|
|
58
|
+
let centerStart = 0;
|
|
59
|
+
let centerEnd = columns.length;
|
|
60
|
+
if (pinning) {
|
|
61
|
+
while (centerStart < centerEnd && pinning.start.includes(columns[centerStart].id)) centerStart++;
|
|
62
|
+
while (centerEnd > centerStart && pinning.end.includes(columns[centerEnd - 1].id)) centerEnd--;
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
columns,
|
|
66
|
+
centerStart,
|
|
67
|
+
centerEnd
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Checks whether this column takes part in cell spanning.
|
|
72
|
+
*
|
|
73
|
+
* A column def opting out with `enableCellSpanning: false` wins over the table
|
|
74
|
+
* option, matching how the other per-column enable flags resolve.
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```ts
|
|
78
|
+
* const canSpan = column_getCanSpan(column)
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
function column_getCanSpan(column) {
|
|
82
|
+
if (column.columnDef.enableCellSpanning === false) return false;
|
|
83
|
+
return column.table.options.enableCellSpanning ?? true;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Builds the table's cell span index for the rows that are currently rendered.
|
|
87
|
+
*
|
|
88
|
+
* Spans are always derived from scratch from the final row model, so sorting,
|
|
89
|
+
* filtering, pagination, expansion, and row pinning only change adjacency and
|
|
90
|
+
* the index follows. Nothing is persisted and there is nothing to configure.
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* ```ts
|
|
94
|
+
* const spanIndex = table_getCellSpanIndex(table)
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
function table_getCellSpanIndex(table) {
|
|
98
|
+
const { rows, sectionStarts } = getRenderedRows(table);
|
|
99
|
+
const rowCount = rows.length;
|
|
100
|
+
const empty = {
|
|
101
|
+
colSpans: EMPTY_COL_SPANS,
|
|
102
|
+
columnIndexes: EMPTY_COLUMN_INDEXES,
|
|
103
|
+
rowSpans: EMPTY_ROW_SPANS,
|
|
104
|
+
rows
|
|
105
|
+
};
|
|
106
|
+
if (!rowCount || table.options.enableCellSpanning === false) return empty;
|
|
107
|
+
const { columns, centerStart, centerEnd } = getRenderedColumns(table, rows[0]);
|
|
108
|
+
const columnCount = columns.length;
|
|
109
|
+
if (!columnCount) return empty;
|
|
110
|
+
const columnIndexes = makeObjectMap();
|
|
111
|
+
for (let c = 0; c < columnCount; c++) columnIndexes[columns[c].id] = c;
|
|
112
|
+
const breaks = new Uint8Array(rowCount);
|
|
113
|
+
for (let s = 0; s < sectionStarts.length; s++) {
|
|
114
|
+
const start = sectionStarts[s];
|
|
115
|
+
if (start < rowCount) breaks[start] = 1;
|
|
116
|
+
}
|
|
117
|
+
for (let r = 0; r < rowCount; r++) {
|
|
118
|
+
const row = rows[r];
|
|
119
|
+
row._cellSpanRowIndex = r;
|
|
120
|
+
const prev = r > 0 ? rows[r - 1] : void 0;
|
|
121
|
+
if (prev && (row.depth !== prev.depth || row.parentId !== prev.parentId) || row.getIsGrouped?.() === true) breaks[r] = 1;
|
|
122
|
+
}
|
|
123
|
+
const colSpans = [];
|
|
124
|
+
let anyColSpan = false;
|
|
125
|
+
for (let c = 0; c < columnCount; c++) {
|
|
126
|
+
const column = columns[c];
|
|
127
|
+
const spanColumns = column.columnDef.spanColumns;
|
|
128
|
+
if (spanColumns === void 0 || !column_getCanSpan(column)) continue;
|
|
129
|
+
const regionEnd = c < centerStart ? centerStart : c < centerEnd ? centerEnd : columnCount;
|
|
130
|
+
for (let r = 0; r < rowCount; r++) {
|
|
131
|
+
const existing = colSpans[r];
|
|
132
|
+
if (existing && existing[c] === 0) continue;
|
|
133
|
+
const requested = isFunction(spanColumns) ? spanColumns({
|
|
134
|
+
column,
|
|
135
|
+
row: rows[r],
|
|
136
|
+
table
|
|
137
|
+
}) : spanColumns;
|
|
138
|
+
if (!(requested > 1)) continue;
|
|
139
|
+
const span = Math.min(requested, regionEnd - c);
|
|
140
|
+
if (span < 2) continue;
|
|
141
|
+
const target = existing ?? (colSpans[r] = new Int32Array(columnCount).fill(1));
|
|
142
|
+
target[c] = span;
|
|
143
|
+
for (let k = c + 1; k < c + span; k++) target[k] = 0;
|
|
144
|
+
anyColSpan = true;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
const rowSpans = makeObjectMap();
|
|
148
|
+
for (let c = 0; c < columnCount; c++) {
|
|
149
|
+
const column = columns[c];
|
|
150
|
+
const spanRows = column.columnDef.spanRows;
|
|
151
|
+
if (!spanRows || !column_getCanSpan(column)) continue;
|
|
152
|
+
if (column.getIsGrouped?.() === true) continue;
|
|
153
|
+
const columnId = column.id;
|
|
154
|
+
const predicate = isFunction(spanRows) ? spanRows : void 0;
|
|
155
|
+
const spans = new Int32Array(rowCount).fill(1);
|
|
156
|
+
let anyRun = false;
|
|
157
|
+
let anchorIndex = -1;
|
|
158
|
+
let anchorValue;
|
|
159
|
+
let anchorColSpan = 1;
|
|
160
|
+
for (let r = 0; r < rowCount; r++) {
|
|
161
|
+
const row = rows[r];
|
|
162
|
+
const rowColSpans = anyColSpan ? colSpans[r] : void 0;
|
|
163
|
+
const cellColSpan = rowColSpans ? rowColSpans[c] : 1;
|
|
164
|
+
if (cellColSpan === 0) {
|
|
165
|
+
anchorIndex = -1;
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
const value = row.getValue(columnId);
|
|
169
|
+
if (anchorIndex !== -1 && !breaks[r] && cellColSpan === anchorColSpan && (predicate ? predicate({
|
|
170
|
+
anchorRow: rows[anchorIndex],
|
|
171
|
+
anchorValue,
|
|
172
|
+
column,
|
|
173
|
+
previousRow: rows[r - 1],
|
|
174
|
+
row,
|
|
175
|
+
table,
|
|
176
|
+
value
|
|
177
|
+
}) : value != null && Object.is(value, anchorValue))) {
|
|
178
|
+
spans[r] = 0;
|
|
179
|
+
spans[anchorIndex] = spans[anchorIndex] + 1;
|
|
180
|
+
anyRun = true;
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
anchorIndex = r;
|
|
184
|
+
anchorValue = value;
|
|
185
|
+
anchorColSpan = cellColSpan;
|
|
186
|
+
}
|
|
187
|
+
if (anyRun) rowSpans[columnId] = spans;
|
|
188
|
+
}
|
|
189
|
+
return {
|
|
190
|
+
colSpans,
|
|
191
|
+
columnIndexes,
|
|
192
|
+
rowSpans,
|
|
193
|
+
rows
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
function resolveRowIndex(index, cell) {
|
|
197
|
+
const rowIndex = cell.row._cellSpanRowIndex;
|
|
198
|
+
if (rowIndex === void 0 || index.rows[rowIndex] !== cell.row) return -1;
|
|
199
|
+
return rowIndex;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Returns how many rows this cell spans.
|
|
203
|
+
*
|
|
204
|
+
* `1` when it does not span, and `0` when a spanning cell above it covers it,
|
|
205
|
+
* matching the `header.rowSpan` convention where `0` means "skip this cell".
|
|
206
|
+
*
|
|
207
|
+
* Deliberately not memoized: a per-cell memo would allocate a closure and a
|
|
208
|
+
* dependency array for every cell, costing more than the two lookups this
|
|
209
|
+
* performs against the table-level span index.
|
|
210
|
+
*
|
|
211
|
+
* @example
|
|
212
|
+
* ```ts
|
|
213
|
+
* const rowSpan = cell_getRowSpan(cell)
|
|
214
|
+
* ```
|
|
215
|
+
*/
|
|
216
|
+
function cell_getRowSpan(cell) {
|
|
217
|
+
const table = cell.row.table;
|
|
218
|
+
const index = callMemoOrStaticFn(table, "getCellSpanIndex", table_getCellSpanIndex);
|
|
219
|
+
const spans = index.rowSpans[cell.column.id];
|
|
220
|
+
if (!spans) return 1;
|
|
221
|
+
const rowIndex = resolveRowIndex(index, cell);
|
|
222
|
+
if (rowIndex === -1) return 1;
|
|
223
|
+
return spans[rowIndex];
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Returns how many columns this cell spans.
|
|
227
|
+
*
|
|
228
|
+
* `1` when it does not span, and `0` when another cell's column span covers
|
|
229
|
+
* it.
|
|
230
|
+
*
|
|
231
|
+
* @example
|
|
232
|
+
* ```ts
|
|
233
|
+
* const colSpan = cell_getColSpan(cell)
|
|
234
|
+
* ```
|
|
235
|
+
*/
|
|
236
|
+
function cell_getColSpan(cell) {
|
|
237
|
+
const table = cell.row.table;
|
|
238
|
+
const index = callMemoOrStaticFn(table, "getCellSpanIndex", table_getCellSpanIndex);
|
|
239
|
+
const rowIndex = resolveRowIndex(index, cell);
|
|
240
|
+
if (rowIndex === -1) return 1;
|
|
241
|
+
const spans = index.colSpans[rowIndex];
|
|
242
|
+
if (!spans) return 1;
|
|
243
|
+
const columnIndex = index.columnIndexes[cell.column.id];
|
|
244
|
+
return columnIndex === void 0 ? 1 : spans[columnIndex];
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Checks whether another cell's span covers this cell.
|
|
248
|
+
*
|
|
249
|
+
* Covered cells must not be rendered; the cell that covers them carries the
|
|
250
|
+
* content and the span attributes.
|
|
251
|
+
*
|
|
252
|
+
* @example
|
|
253
|
+
* ```ts
|
|
254
|
+
* const isCovered = cell_getIsCovered(cell)
|
|
255
|
+
* ```
|
|
256
|
+
*/
|
|
257
|
+
function cell_getIsCovered(cell) {
|
|
258
|
+
return cell_getRowSpan(cell) === 0 || cell_getColSpan(cell) === 0;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
//#endregion
|
|
262
|
+
export { cell_getColSpan, cell_getIsCovered, cell_getRowSpan, column_getCanSpan, table_getCellSpanIndex };
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { TableFeature } from "../../types/TableFeatures.js";
|
|
2
|
-
|
|
3
2
|
//#region src/features/column-faceting/columnFacetingFeature.d.ts
|
|
4
3
|
/**
|
|
5
4
|
* Feature that derives faceted row models, unique values, and min/max values for filters.
|
|
6
5
|
*/
|
|
7
6
|
declare const columnFacetingFeature: TableFeature;
|
|
8
7
|
//#endregion
|
|
9
|
-
export { columnFacetingFeature };
|
|
10
|
-
//# sourceMappingURL=columnFacetingFeature.d.ts.map
|
|
8
|
+
export { columnFacetingFeature };
|