@tanstack/table-core 9.0.0-beta.15 → 9.0.0-beta.17

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.
Files changed (160) hide show
  1. package/dist/core/cells/constructCell.d.cts +2 -2
  2. package/dist/core/cells/constructCell.d.ts +2 -2
  3. package/dist/core/cells/coreCellsFeature.types.d.cts +2 -2
  4. package/dist/core/cells/coreCellsFeature.types.d.ts +2 -2
  5. package/dist/core/cells/coreCellsFeature.utils.d.cts +2 -2
  6. package/dist/core/cells/coreCellsFeature.utils.d.ts +2 -2
  7. package/dist/core/columns/constructColumn.d.cts +2 -2
  8. package/dist/core/columns/constructColumn.d.ts +2 -2
  9. package/dist/core/columns/coreColumnsFeature.types.d.cts +2 -2
  10. package/dist/core/columns/coreColumnsFeature.types.d.ts +2 -2
  11. package/dist/core/columns/coreColumnsFeature.utils.cjs +2 -2
  12. package/dist/core/columns/coreColumnsFeature.utils.cjs.map +1 -1
  13. package/dist/core/columns/coreColumnsFeature.utils.d.cts +8 -8
  14. package/dist/core/columns/coreColumnsFeature.utils.d.ts +8 -8
  15. package/dist/core/columns/coreColumnsFeature.utils.js +3 -3
  16. package/dist/core/columns/coreColumnsFeature.utils.js.map +1 -1
  17. package/dist/core/headers/buildHeaderGroups.d.cts +2 -2
  18. package/dist/core/headers/buildHeaderGroups.d.ts +2 -2
  19. package/dist/core/headers/constructHeader.d.cts +2 -2
  20. package/dist/core/headers/constructHeader.d.ts +2 -2
  21. package/dist/core/headers/coreHeadersFeature.utils.d.cts +6 -6
  22. package/dist/core/headers/coreHeadersFeature.utils.d.ts +6 -6
  23. package/dist/core/row-models/coreRowModelsFeature.utils.d.cts +13 -13
  24. package/dist/core/row-models/coreRowModelsFeature.utils.d.ts +13 -13
  25. package/dist/core/row-models/createCoreRowModel.cjs +1 -1
  26. package/dist/core/row-models/createCoreRowModel.cjs.map +1 -1
  27. package/dist/core/row-models/createCoreRowModel.d.cts +2 -2
  28. package/dist/core/row-models/createCoreRowModel.d.ts +2 -2
  29. package/dist/core/row-models/createCoreRowModel.js +2 -2
  30. package/dist/core/row-models/createCoreRowModel.js.map +1 -1
  31. package/dist/core/rows/constructRow.cjs +3 -2
  32. package/dist/core/rows/constructRow.cjs.map +1 -1
  33. package/dist/core/rows/constructRow.d.cts +2 -2
  34. package/dist/core/rows/constructRow.d.ts +2 -2
  35. package/dist/core/rows/constructRow.js +4 -2
  36. package/dist/core/rows/constructRow.js.map +1 -1
  37. package/dist/core/rows/coreRowsFeature.types.d.cts +2 -2
  38. package/dist/core/rows/coreRowsFeature.types.d.ts +2 -2
  39. package/dist/core/rows/coreRowsFeature.utils.cjs +3 -3
  40. package/dist/core/rows/coreRowsFeature.utils.cjs.map +1 -1
  41. package/dist/core/rows/coreRowsFeature.utils.d.cts +3 -3
  42. package/dist/core/rows/coreRowsFeature.utils.d.ts +3 -3
  43. package/dist/core/rows/coreRowsFeature.utils.js +4 -4
  44. package/dist/core/rows/coreRowsFeature.utils.js.map +1 -1
  45. package/dist/core/table/coreTablesFeature.types.d.cts +1 -1
  46. package/dist/core/table/coreTablesFeature.types.d.ts +1 -1
  47. package/dist/core/table/coreTablesFeature.utils.d.cts +5 -5
  48. package/dist/core/table/coreTablesFeature.utils.d.ts +5 -5
  49. package/dist/features/column-faceting/columnFacetingFeature.utils.d.cts +8 -8
  50. package/dist/features/column-faceting/columnFacetingFeature.utils.d.ts +8 -8
  51. package/dist/features/column-filtering/columnFilteringFeature.cjs +2 -2
  52. package/dist/features/column-filtering/columnFilteringFeature.cjs.map +1 -1
  53. package/dist/features/column-filtering/columnFilteringFeature.js +3 -3
  54. package/dist/features/column-filtering/columnFilteringFeature.js.map +1 -1
  55. package/dist/features/column-filtering/columnFilteringFeature.utils.d.cts +12 -12
  56. package/dist/features/column-filtering/columnFilteringFeature.utils.d.ts +12 -12
  57. package/dist/features/column-filtering/createFilteredRowModel.cjs +8 -5
  58. package/dist/features/column-filtering/createFilteredRowModel.cjs.map +1 -1
  59. package/dist/features/column-filtering/createFilteredRowModel.js +9 -6
  60. package/dist/features/column-filtering/createFilteredRowModel.js.map +1 -1
  61. package/dist/features/column-filtering/filterRowsUtils.cjs +3 -2
  62. package/dist/features/column-filtering/filterRowsUtils.cjs.map +1 -1
  63. package/dist/features/column-filtering/filterRowsUtils.js +3 -2
  64. package/dist/features/column-filtering/filterRowsUtils.js.map +1 -1
  65. package/dist/features/column-grouping/columnGroupingFeature.cjs +1 -1
  66. package/dist/features/column-grouping/columnGroupingFeature.cjs.map +1 -1
  67. package/dist/features/column-grouping/columnGroupingFeature.js +2 -2
  68. package/dist/features/column-grouping/columnGroupingFeature.js.map +1 -1
  69. package/dist/features/column-grouping/columnGroupingFeature.utils.cjs +3 -3
  70. package/dist/features/column-grouping/columnGroupingFeature.utils.cjs.map +1 -1
  71. package/dist/features/column-grouping/columnGroupingFeature.utils.d.cts +11 -11
  72. package/dist/features/column-grouping/columnGroupingFeature.utils.d.ts +11 -11
  73. package/dist/features/column-grouping/columnGroupingFeature.utils.js +4 -4
  74. package/dist/features/column-grouping/columnGroupingFeature.utils.js.map +1 -1
  75. package/dist/features/column-grouping/createGroupedRowModel.cjs +4 -5
  76. package/dist/features/column-grouping/createGroupedRowModel.cjs.map +1 -1
  77. package/dist/features/column-grouping/createGroupedRowModel.js +5 -6
  78. package/dist/features/column-grouping/createGroupedRowModel.js.map +1 -1
  79. package/dist/features/column-ordering/columnOrderingFeature.utils.d.cts +9 -9
  80. package/dist/features/column-ordering/columnOrderingFeature.utils.d.ts +9 -9
  81. package/dist/features/column-pinning/columnPinningFeature.utils.d.cts +29 -29
  82. package/dist/features/column-pinning/columnPinningFeature.utils.d.ts +29 -29
  83. package/dist/features/column-resizing/columnResizingFeature.utils.cjs +2 -5
  84. package/dist/features/column-resizing/columnResizingFeature.utils.cjs.map +1 -1
  85. package/dist/features/column-resizing/columnResizingFeature.utils.d.cts +6 -6
  86. package/dist/features/column-resizing/columnResizingFeature.utils.d.ts +6 -6
  87. package/dist/features/column-resizing/columnResizingFeature.utils.js +3 -6
  88. package/dist/features/column-resizing/columnResizingFeature.utils.js.map +1 -1
  89. package/dist/features/column-sizing/columnSizingFeature.utils.cjs +11 -4
  90. package/dist/features/column-sizing/columnSizingFeature.utils.cjs.map +1 -1
  91. package/dist/features/column-sizing/columnSizingFeature.utils.d.cts +12 -12
  92. package/dist/features/column-sizing/columnSizingFeature.utils.d.ts +12 -12
  93. package/dist/features/column-sizing/columnSizingFeature.utils.js +12 -5
  94. package/dist/features/column-sizing/columnSizingFeature.utils.js.map +1 -1
  95. package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs +12 -9
  96. package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs.map +1 -1
  97. package/dist/features/column-visibility/columnVisibilityFeature.utils.d.cts +14 -14
  98. package/dist/features/column-visibility/columnVisibilityFeature.utils.d.ts +14 -14
  99. package/dist/features/column-visibility/columnVisibilityFeature.utils.js +13 -10
  100. package/dist/features/column-visibility/columnVisibilityFeature.utils.js.map +1 -1
  101. package/dist/features/global-filtering/globalFilteringFeature.utils.d.cts +6 -6
  102. package/dist/features/global-filtering/globalFilteringFeature.utils.d.ts +6 -6
  103. package/dist/features/row-expanding/rowExpandingFeature.utils.cjs +21 -12
  104. package/dist/features/row-expanding/rowExpandingFeature.utils.cjs.map +1 -1
  105. package/dist/features/row-expanding/rowExpandingFeature.utils.d.cts +10 -10
  106. package/dist/features/row-expanding/rowExpandingFeature.utils.d.ts +10 -10
  107. package/dist/features/row-expanding/rowExpandingFeature.utils.js +22 -13
  108. package/dist/features/row-expanding/rowExpandingFeature.utils.js.map +1 -1
  109. package/dist/features/row-pagination/rowPaginationFeature.utils.d.cts +17 -17
  110. package/dist/features/row-pagination/rowPaginationFeature.utils.d.ts +17 -17
  111. package/dist/features/row-pinning/rowPinningFeature.utils.d.cts +7 -7
  112. package/dist/features/row-pinning/rowPinningFeature.utils.d.ts +7 -7
  113. package/dist/features/row-selection/rowSelectionFeature.utils.cjs +15 -12
  114. package/dist/features/row-selection/rowSelectionFeature.utils.cjs.map +1 -1
  115. package/dist/features/row-selection/rowSelectionFeature.utils.d.cts +27 -15
  116. package/dist/features/row-selection/rowSelectionFeature.utils.d.ts +27 -15
  117. package/dist/features/row-selection/rowSelectionFeature.utils.js +16 -13
  118. package/dist/features/row-selection/rowSelectionFeature.utils.js.map +1 -1
  119. package/dist/features/row-sorting/createSortedRowModel.cjs +1 -1
  120. package/dist/features/row-sorting/createSortedRowModel.cjs.map +1 -1
  121. package/dist/features/row-sorting/createSortedRowModel.js +2 -2
  122. package/dist/features/row-sorting/createSortedRowModel.js.map +1 -1
  123. package/dist/features/row-sorting/rowSortingFeature.utils.d.cts +16 -16
  124. package/dist/features/row-sorting/rowSortingFeature.utils.d.ts +16 -16
  125. package/dist/index.cjs +2 -0
  126. package/dist/index.d.cts +4 -4
  127. package/dist/index.d.ts +4 -4
  128. package/dist/index.js +2 -2
  129. package/dist/types/Column.d.cts +2 -4
  130. package/dist/types/Column.d.ts +2 -4
  131. package/dist/types/Table.d.cts +3 -16
  132. package/dist/types/Table.d.ts +3 -16
  133. package/dist/types/TableFeatures.d.cts +7 -7
  134. package/dist/types/TableFeatures.d.ts +7 -7
  135. package/dist/utils.cjs +24 -2
  136. package/dist/utils.cjs.map +1 -1
  137. package/dist/utils.d.cts +16 -5
  138. package/dist/utils.d.ts +16 -5
  139. package/dist/utils.js +23 -3
  140. package/dist/utils.js.map +1 -1
  141. package/package.json +2 -2
  142. package/src/core/columns/coreColumnsFeature.utils.ts +3 -3
  143. package/src/core/headers/coreHeadersFeature.types.ts +2 -2
  144. package/src/core/row-models/createCoreRowModel.ts +2 -2
  145. package/src/core/rows/constructRow.ts +3 -2
  146. package/src/core/rows/coreRowsFeature.utils.ts +4 -4
  147. package/src/features/column-filtering/columnFilteringFeature.ts +3 -2
  148. package/src/features/column-filtering/createFilteredRowModel.ts +13 -10
  149. package/src/features/column-filtering/filterRowsUtils.ts +3 -2
  150. package/src/features/column-grouping/columnGroupingFeature.ts +2 -1
  151. package/src/features/column-grouping/columnGroupingFeature.utils.ts +2 -2
  152. package/src/features/column-grouping/createGroupedRowModel.ts +10 -5
  153. package/src/features/column-resizing/columnResizingFeature.utils.ts +5 -6
  154. package/src/features/column-sizing/columnSizingFeature.utils.ts +27 -5
  155. package/src/features/column-visibility/columnVisibilityFeature.utils.ts +31 -15
  156. package/src/features/row-expanding/rowExpandingFeature.utils.ts +38 -13
  157. package/src/features/row-selection/rowSelectionFeature.utils.ts +35 -13
  158. package/src/features/row-sorting/createSortedRowModel.ts +6 -9
  159. package/src/types/Column.ts +3 -1
  160. package/src/utils.ts +24 -2
@@ -1,7 +1,7 @@
1
1
  import { CellData, RowData, Updater } from "../../types/type-utils.cjs";
2
- import { Column_Internal } from "../../types/Column.cjs";
2
+ import { Column } from "../../types/Column.cjs";
3
3
  import { Row } from "../../types/Row.cjs";
4
- import { Table_Internal } from "../../types/Table.cjs";
4
+ import { Table } from "../../types/Table.cjs";
5
5
  import { TableFeatures } from "../../types/TableFeatures.cjs";
6
6
  import { AggregationFn, GroupingState, Row_ColumnGrouping } from "./columnGroupingFeature.types.cjs";
7
7
  import { Cell } from "../../types/Cell.cjs";
@@ -30,7 +30,7 @@ declare function getDefaultGroupingState(): GroupingState;
30
30
  * column_toggleGrouping(column)
31
31
  * ```
32
32
  */
33
- declare function column_toggleGrouping<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): void;
33
+ declare function column_toggleGrouping<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): void;
34
34
  /**
35
35
  * Checks whether this column can be used for grouping.
36
36
  *
@@ -42,7 +42,7 @@ declare function column_toggleGrouping<TFeatures extends TableFeatures, TData ex
42
42
  * const canGroup = column_getCanGroup(column)
43
43
  * ```
44
44
  */
45
- declare function column_getCanGroup<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): boolean;
45
+ declare function column_getCanGroup<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): boolean;
46
46
  /**
47
47
  * Checks whether this column id is present in `state.grouping`.
48
48
  *
@@ -54,7 +54,7 @@ declare function column_getCanGroup<TFeatures extends TableFeatures, TData exten
54
54
  * const isGrouped = column_getIsGrouped(column)
55
55
  * ```
56
56
  */
57
- declare function column_getIsGrouped<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): boolean;
57
+ declare function column_getIsGrouped<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): boolean;
58
58
  /**
59
59
  * Finds this column's position in the ordered grouping state.
60
60
  *
@@ -65,7 +65,7 @@ declare function column_getIsGrouped<TFeatures extends TableFeatures, TData exte
65
65
  * const index = column_getGroupedIndex(column)
66
66
  * ```
67
67
  */
68
- declare function column_getGroupedIndex<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): number;
68
+ declare function column_getGroupedIndex<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): number;
69
69
  /**
70
70
  * Creates a header/control handler that toggles grouping for this column.
71
71
  *
@@ -76,7 +76,7 @@ declare function column_getGroupedIndex<TFeatures extends TableFeatures, TData e
76
76
  * const onClick = column_getToggleGroupingHandler(column)
77
77
  * ```
78
78
  */
79
- declare function column_getToggleGroupingHandler<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): () => void;
79
+ declare function column_getToggleGroupingHandler<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): () => void;
80
80
  /**
81
81
  * Chooses a built-in aggregation function from the first core row value.
82
82
  *
@@ -88,7 +88,7 @@ declare function column_getToggleGroupingHandler<TFeatures extends TableFeatures
88
88
  * const aggregationFn = column_getAutoAggregationFn(column)
89
89
  * ```
90
90
  */
91
- declare function column_getAutoAggregationFn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): AggregationFn<TFeatures, TData> | undefined;
91
+ declare function column_getAutoAggregationFn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): AggregationFn<TFeatures, TData> | undefined;
92
92
  /**
93
93
  * Resolves the aggregation function configured for a column.
94
94
  *
@@ -101,7 +101,7 @@ declare function column_getAutoAggregationFn<TFeatures extends TableFeatures, TD
101
101
  * const aggregationFn = column_getAggregationFn(column)
102
102
  * ```
103
103
  */
104
- declare function column_getAggregationFn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): AggregationFn<TFeatures, TData> | undefined;
104
+ declare function column_getAggregationFn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): AggregationFn<TFeatures, TData> | undefined;
105
105
  /**
106
106
  * Routes a grouping updater through the table's grouping change handler.
107
107
  *
@@ -113,7 +113,7 @@ declare function column_getAggregationFn<TFeatures extends TableFeatures, TData
113
113
  * table_setGrouping(table, (old) => [...old, 'status'])
114
114
  * ```
115
115
  */
116
- declare function table_setGrouping<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>, updater: Updater<GroupingState>): void;
116
+ declare function table_setGrouping<TFeatures extends TableFeatures, TData extends RowData>(table: Table<TFeatures, TData>, updater: Updater<GroupingState>): void;
117
117
  /**
118
118
  * Resets `grouping` to the configured initial state or feature default.
119
119
  *
@@ -126,7 +126,7 @@ declare function table_setGrouping<TFeatures extends TableFeatures, TData extend
126
126
  * table_resetGrouping(table, true)
127
127
  * ```
128
128
  */
129
- declare function table_resetGrouping<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean): void;
129
+ declare function table_resetGrouping<TFeatures extends TableFeatures, TData extends RowData>(table: Table<TFeatures, TData>, defaultState?: boolean): void;
130
130
  /**
131
131
  * Checks whether this row was created as a grouped row.
132
132
  *
@@ -1,7 +1,7 @@
1
1
  import { CellData, RowData, Updater } from "../../types/type-utils.js";
2
- import { Column_Internal } from "../../types/Column.js";
2
+ import { Column } from "../../types/Column.js";
3
3
  import { Row } from "../../types/Row.js";
4
- import { Table_Internal } from "../../types/Table.js";
4
+ import { Table } from "../../types/Table.js";
5
5
  import { TableFeatures } from "../../types/TableFeatures.js";
6
6
  import { AggregationFn, GroupingState, Row_ColumnGrouping } from "./columnGroupingFeature.types.js";
7
7
  import { Cell } from "../../types/Cell.js";
@@ -30,7 +30,7 @@ declare function getDefaultGroupingState(): GroupingState;
30
30
  * column_toggleGrouping(column)
31
31
  * ```
32
32
  */
33
- declare function column_toggleGrouping<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): void;
33
+ declare function column_toggleGrouping<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): void;
34
34
  /**
35
35
  * Checks whether this column can be used for grouping.
36
36
  *
@@ -42,7 +42,7 @@ declare function column_toggleGrouping<TFeatures extends TableFeatures, TData ex
42
42
  * const canGroup = column_getCanGroup(column)
43
43
  * ```
44
44
  */
45
- declare function column_getCanGroup<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): boolean;
45
+ declare function column_getCanGroup<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): boolean;
46
46
  /**
47
47
  * Checks whether this column id is present in `state.grouping`.
48
48
  *
@@ -54,7 +54,7 @@ declare function column_getCanGroup<TFeatures extends TableFeatures, TData exten
54
54
  * const isGrouped = column_getIsGrouped(column)
55
55
  * ```
56
56
  */
57
- declare function column_getIsGrouped<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): boolean;
57
+ declare function column_getIsGrouped<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): boolean;
58
58
  /**
59
59
  * Finds this column's position in the ordered grouping state.
60
60
  *
@@ -65,7 +65,7 @@ declare function column_getIsGrouped<TFeatures extends TableFeatures, TData exte
65
65
  * const index = column_getGroupedIndex(column)
66
66
  * ```
67
67
  */
68
- declare function column_getGroupedIndex<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): number;
68
+ declare function column_getGroupedIndex<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): number;
69
69
  /**
70
70
  * Creates a header/control handler that toggles grouping for this column.
71
71
  *
@@ -76,7 +76,7 @@ declare function column_getGroupedIndex<TFeatures extends TableFeatures, TData e
76
76
  * const onClick = column_getToggleGroupingHandler(column)
77
77
  * ```
78
78
  */
79
- declare function column_getToggleGroupingHandler<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): () => void;
79
+ declare function column_getToggleGroupingHandler<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): () => void;
80
80
  /**
81
81
  * Chooses a built-in aggregation function from the first core row value.
82
82
  *
@@ -88,7 +88,7 @@ declare function column_getToggleGroupingHandler<TFeatures extends TableFeatures
88
88
  * const aggregationFn = column_getAutoAggregationFn(column)
89
89
  * ```
90
90
  */
91
- declare function column_getAutoAggregationFn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): AggregationFn<TFeatures, TData> | undefined;
91
+ declare function column_getAutoAggregationFn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): AggregationFn<TFeatures, TData> | undefined;
92
92
  /**
93
93
  * Resolves the aggregation function configured for a column.
94
94
  *
@@ -101,7 +101,7 @@ declare function column_getAutoAggregationFn<TFeatures extends TableFeatures, TD
101
101
  * const aggregationFn = column_getAggregationFn(column)
102
102
  * ```
103
103
  */
104
- declare function column_getAggregationFn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): AggregationFn<TFeatures, TData> | undefined;
104
+ declare function column_getAggregationFn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): AggregationFn<TFeatures, TData> | undefined;
105
105
  /**
106
106
  * Routes a grouping updater through the table's grouping change handler.
107
107
  *
@@ -113,7 +113,7 @@ declare function column_getAggregationFn<TFeatures extends TableFeatures, TData
113
113
  * table_setGrouping(table, (old) => [...old, 'status'])
114
114
  * ```
115
115
  */
116
- declare function table_setGrouping<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>, updater: Updater<GroupingState>): void;
116
+ declare function table_setGrouping<TFeatures extends TableFeatures, TData extends RowData>(table: Table<TFeatures, TData>, updater: Updater<GroupingState>): void;
117
117
  /**
118
118
  * Resets `grouping` to the configured initial state or feature default.
119
119
  *
@@ -126,7 +126,7 @@ declare function table_setGrouping<TFeatures extends TableFeatures, TData extend
126
126
  * table_resetGrouping(table, true)
127
127
  * ```
128
128
  */
129
- declare function table_resetGrouping<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean): void;
129
+ declare function table_resetGrouping<TFeatures extends TableFeatures, TData extends RowData>(table: Table<TFeatures, TData>, defaultState?: boolean): void;
130
130
  /**
131
131
  * Checks whether this row was created as a grouped row.
132
132
  *
@@ -1,4 +1,4 @@
1
- import { cloneState, isFunction } from "../../utils.js";
1
+ import { cloneState, hasOwn, isFunction } from "../../utils.js";
2
2
 
3
3
  //#region src/features/column-grouping/columnGroupingFeature.utils.ts
4
4
  /**
@@ -181,12 +181,12 @@ function row_getIsGrouped(row) {
181
181
  * ```
182
182
  */
183
183
  function row_getGroupingValue(row, columnId) {
184
- var _row$_groupingValuesC, _row$_groupingValuesC2;
185
- if ((_row$_groupingValuesC = row._groupingValuesCache) === null || _row$_groupingValuesC === void 0 ? void 0 : _row$_groupingValuesC.hasOwnProperty(columnId)) return row._groupingValuesCache[columnId];
184
+ var _row$_groupingValuesC;
185
+ if (row._groupingValuesCache && hasOwn(row._groupingValuesCache, columnId)) return row._groupingValuesCache[columnId];
186
186
  const column = row.table.getColumn(columnId);
187
187
  if (!column.columnDef.getGroupingValue) return row.getValue(columnId);
188
188
  if (row._groupingValuesCache) row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(row.original);
189
- return (_row$_groupingValuesC2 = row._groupingValuesCache) === null || _row$_groupingValuesC2 === void 0 ? void 0 : _row$_groupingValuesC2[columnId];
189
+ return (_row$_groupingValuesC = row._groupingValuesCache) === null || _row$_groupingValuesC === void 0 ? void 0 : _row$_groupingValuesC[columnId];
190
190
  }
191
191
  /**
192
192
  * Checks whether this cell represents the grouped column for a grouped row.
@@ -1 +1 @@
1
- {"version":3,"file":"columnGroupingFeature.utils.js","names":[],"sources":["../../../src/features/column-grouping/columnGroupingFeature.utils.ts"],"sourcesContent":["import { cloneState, isFunction } from '../../utils'\nimport type { Column_Internal } from '../../types/Column'\nimport type { CellData, RowData, Updater } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { Table_Internal } from '../../types/Table'\nimport type { Row } from '../../types/Row'\nimport type { Cell } from '../../types/Cell'\nimport type {\n AggregationFn,\n GroupingState,\n Row_ColumnGrouping,\n} from './columnGroupingFeature.types'\n\n/**\n * Creates the default grouping state.\n *\n * The feature default is an empty array, meaning no columns are grouped. Reset\n * APIs use this value when `defaultState` is `true`.\n *\n * @example\n * ```ts\n * const grouping = getDefaultGroupingState()\n * ```\n */\nexport function getDefaultGroupingState(): GroupingState {\n return []\n}\n\n/**\n * Adds or removes this column id from the grouping state.\n *\n * Existing grouped columns keep their order. A column already present in\n * `state.grouping` is removed; otherwise it is appended.\n *\n * @example\n * ```ts\n * column_toggleGrouping(column)\n * ```\n */\nexport function column_toggleGrouping<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n table_setGrouping(column.table, (old) => {\n // Find any existing grouping for this column\n if (old.includes(column.id)) {\n return old.filter((d) => d !== column.id)\n }\n\n return [...old, column.id]\n })\n}\n\n/**\n * Checks whether this column can be used for grouping.\n *\n * Grouping must be enabled at the column and table level, and the column must\n * either have an accessor or provide `getGroupingValue`.\n *\n * @example\n * ```ts\n * const canGroup = column_getCanGroup(column)\n * ```\n */\nexport function column_getCanGroup<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n return (\n (column.columnDef.enableGrouping ?? true) &&\n (column.table.options.enableGrouping ?? true) &&\n (!!column.accessorFn || !!column.columnDef.getGroupingValue)\n )\n}\n\n/**\n * Checks whether this column id is present in `state.grouping`.\n *\n * The result only reflects grouping state, not whether the grouped row model has\n * been calculated yet.\n *\n * @example\n * ```ts\n * const isGrouped = column_getIsGrouped(column)\n * ```\n */\nexport function column_getIsGrouped<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): boolean {\n return !!column.table.atoms.grouping?.get()?.includes(column.id)\n}\n\n/**\n * Finds this column's position in the ordered grouping state.\n *\n * The result is `-1` when the column is not grouped.\n *\n * @example\n * ```ts\n * const index = column_getGroupedIndex(column)\n * ```\n */\nexport function column_getGroupedIndex<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): number {\n return column.table.atoms.grouping?.get()?.indexOf(column.id) ?? -1\n}\n\n/**\n * Creates a header/control handler that toggles grouping for this column.\n *\n * The handler is a no-op when `column_getCanGroup(column)` is false.\n *\n * @example\n * ```ts\n * const onClick = column_getToggleGroupingHandler(column)\n * ```\n */\nexport function column_getToggleGroupingHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n const canGroup = column_getCanGroup(column)\n\n return () => {\n if (!canGroup) return\n column_toggleGrouping(column)\n }\n}\n\n/**\n * Chooses a built-in aggregation function from the first core row value.\n *\n * Numeric columns default to `sum`, date-like values default to `extent`, and\n * other value types leave aggregation unspecified.\n *\n * @example\n * ```ts\n * const aggregationFn = column_getAutoAggregationFn(column)\n * ```\n */\nexport function column_getAutoAggregationFn<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n const aggregationFns:\n | Record<string, AggregationFn<TFeatures, TData>>\n | undefined = column.table._rowModelFns.aggregationFns\n\n const firstRow = column.table.getCoreRowModel().flatRows[0]\n\n const value = firstRow?.getValue(column.id)\n\n if (typeof value === 'number') {\n return aggregationFns?.sum\n }\n\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return aggregationFns?.extent\n }\n}\n\n/**\n * Resolves the aggregation function configured for a column.\n *\n * Function-valued `columnDef.aggregationFn` is returned directly, `'auto'`\n * delegates to `column_getAutoAggregationFn`, and string values are looked up in\n * the table's aggregation function registry.\n *\n * @example\n * ```ts\n * const aggregationFn = column_getAggregationFn(column)\n * ```\n */\nexport function column_getAggregationFn<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n const aggregationFns:\n | Record<string, AggregationFn<TFeatures, TData>>\n | undefined = column.table._rowModelFns.aggregationFns\n\n return isFunction(column.columnDef.aggregationFn)\n ? column.columnDef.aggregationFn\n : column.columnDef.aggregationFn === 'auto'\n ? column_getAutoAggregationFn(column)\n : aggregationFns?.[column.columnDef.aggregationFn as string]\n}\n\n/**\n * Routes a grouping updater through the table's grouping change handler.\n *\n * The updater may be a next `GroupingState` array or a function of the previous\n * grouping state, matching the instance `table.setGrouping` behavior.\n *\n * @example\n * ```ts\n * table_setGrouping(table, (old) => [...old, 'status'])\n * ```\n */\nexport function table_setGrouping<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, updater: Updater<GroupingState>) {\n table.options.onGroupingChange?.(updater)\n}\n\n/**\n * Resets `grouping` to the configured initial state or feature default.\n *\n * With no argument, the reset clones `table.initialState.grouping` when it\n * exists. Passing `true` ignores initial state and resets to `[]`.\n *\n * @example\n * ```ts\n * table_resetGrouping(table)\n * table_resetGrouping(table, true)\n * ```\n */\nexport function table_resetGrouping<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n table_setGrouping(\n table,\n defaultState ? [] : cloneState(table.initialState.grouping ?? []),\n )\n}\n\n/**\n * Checks whether this row was created as a grouped row.\n *\n * Grouped rows carry a `groupingColumnId`; ordinary leaf rows do not.\n *\n * @example\n * ```ts\n * const isGrouped = row_getIsGrouped(row)\n * ```\n */\nexport function row_getIsGrouped<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData> & Partial<Row_ColumnGrouping>) {\n return !!row.groupingColumnId\n}\n\n/**\n * Reads and caches this row's grouping value for a column.\n *\n * `columnDef.getGroupingValue` wins when provided; otherwise the normal row\n * accessor value is used.\n *\n * @example\n * ```ts\n * const groupValue = row_getGroupingValue(row, 'status')\n * ```\n */\nexport function row_getGroupingValue<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData> & Partial<Row_ColumnGrouping>, columnId: string) {\n if (row._groupingValuesCache?.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId]\n }\n\n const column = row.table.getColumn(columnId) as Column_Internal<\n TFeatures,\n TData\n >\n\n if (!column.columnDef.getGroupingValue) {\n return row.getValue(columnId)\n }\n\n if (row._groupingValuesCache) {\n row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(\n row.original,\n )\n }\n\n return row._groupingValuesCache?.[columnId]\n}\n\n/**\n * Checks whether this cell represents the grouped column for a grouped row.\n *\n * This is the cell that usually renders the grouped value and expansion control.\n *\n * @example\n * ```ts\n * const isGroupedCell = cell_getIsGrouped(cell)\n * ```\n */\nexport function cell_getIsGrouped<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(cell: Cell<TFeatures, TData, TValue>) {\n const row = cell.row as Row<TFeatures, TData> & Partial<Row_ColumnGrouping>\n return (\n column_getIsGrouped(cell.column) && cell.column.id === row.groupingColumnId\n )\n}\n\n/**\n * Checks whether this cell is a placeholder hidden by grouping.\n *\n * Placeholder cells belong to grouped columns other than the row's active\n * grouping column.\n *\n * @example\n * ```ts\n * const isPlaceholder = cell_getIsPlaceholder(cell)\n * ```\n */\nexport function cell_getIsPlaceholder<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(cell: Cell<TFeatures, TData, TValue>) {\n return !cell_getIsGrouped(cell) && column_getIsGrouped(cell.column)\n}\n\n/**\n * Checks whether this cell should render an aggregated value.\n *\n * Aggregated cells are non-placeholder, non-grouped cells on rows that have\n * subRows.\n *\n * @example\n * ```ts\n * const isAggregated = cell_getIsAggregated(cell)\n * ```\n */\nexport function cell_getIsAggregated<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(cell: Cell<TFeatures, TData, TValue>) {\n return (\n !cell_getIsGrouped(cell) &&\n !cell_getIsPlaceholder(cell) &&\n !!cell.row.subRows.length\n )\n}\n"],"mappings":";;;;;;;;;;;;;;AAwBA,SAAgB,0BAAyC;CACvD,OAAO,CAAC;AACV;;;;;;;;;;;;AAaA,SAAgB,sBAId,QAAmD;CACnD,kBAAkB,OAAO,QAAQ,QAAQ;EAEvC,IAAI,IAAI,SAAS,OAAO,EAAE,GACxB,OAAO,IAAI,QAAQ,MAAM,MAAM,OAAO,EAAE;EAG1C,OAAO,CAAC,GAAG,KAAK,OAAO,EAAE;CAC3B,CAAC;AACH;;;;;;;;;;;;AAaA,SAAgB,mBAId,QAAmD;CACnD,QACG,OAAO,UAAU,kBAAkB,UACnC,OAAO,MAAM,QAAQ,kBAAkB,UACvC,CAAC,CAAC,OAAO,cAAc,CAAC,CAAC,OAAO,UAAU;AAE/C;;;;;;;;;;;;AAaA,SAAgB,oBAId,QAA4D;;CAC5D,OAAO,CAAC,2BAAC,OAAO,MAAM,MAAM,yGAAU,IAAI,iFAAG,SAAS,OAAO,EAAE;AACjE;;;;;;;;;;;AAYA,SAAgB,uBAId,QAA2D;;CAC3D,kCAAO,OAAO,MAAM,MAAM,4GAAU,IAAI,mFAAG,QAAQ,OAAO,EAAE,MAAK;AACnE;;;;;;;;;;;AAYA,SAAgB,gCAId,QAAmD;CACnD,MAAM,WAAW,mBAAmB,MAAM;CAE1C,aAAa;EACX,IAAI,CAAC,UAAU;EACf,sBAAsB,MAAM;CAC9B;AACF;;;;;;;;;;;;AAaA,SAAgB,4BAId,QAAmD;CACnD,MAAM,iBAEU,OAAO,MAAM,aAAa;CAE1C,MAAM,WAAW,OAAO,MAAM,gBAAgB,CAAC,CAAC,SAAS;CAEzD,MAAM,4DAAQ,SAAU,SAAS,OAAO,EAAE;CAE1C,IAAI,OAAO,UAAU,UACnB,uEAAO,eAAgB;CAGzB,IAAI,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM,iBAC5C,uEAAO,eAAgB;AAE3B;;;;;;;;;;;;;AAcA,SAAgB,wBAId,QAAmD;CACnD,MAAM,iBAEU,OAAO,MAAM,aAAa;CAE1C,OAAO,WAAW,OAAO,UAAU,aAAa,IAC5C,OAAO,UAAU,gBACjB,OAAO,UAAU,kBAAkB,SACjC,4BAA4B,MAAM,oEAClC,eAAiB,OAAO,UAAU;AAC1C;;;;;;;;;;;;AAaA,SAAgB,kBAGd,OAAyC,SAAiC;;CAC1E,iDAAM,SAAQ,6GAAmB,OAAO;AAC1C;;;;;;;;;;;;;AAcA,SAAgB,oBAGd,OAAyC,cAAwB;CACjE,kBACE,OACA,eAAe,CAAC,IAAI,WAAW,MAAM,aAAa,YAAY,CAAC,CAAC,CAClE;AACF;;;;;;;;;;;AAYA,SAAgB,iBAGd,KAA0D;CAC1D,OAAO,CAAC,CAAC,IAAI;AACf;;;;;;;;;;;;AAaA,SAAgB,qBAGd,KAA0D,UAAkB;;CAC5E,6BAAI,IAAI,oGAAsB,eAAe,QAAQ,GACnD,OAAO,IAAI,qBAAqB;CAGlC,MAAM,SAAS,IAAI,MAAM,UAAU,QAAQ;CAK3C,IAAI,CAAC,OAAO,UAAU,kBACpB,OAAO,IAAI,SAAS,QAAQ;CAG9B,IAAI,IAAI,sBACN,IAAI,qBAAqB,YAAY,OAAO,UAAU,iBACpD,IAAI,QACN;CAGF,iCAAO,IAAI,sGAAuB;AACpC;;;;;;;;;;;AAYA,SAAgB,kBAId,MAAsC;CACtC,MAAM,MAAM,KAAK;CACjB,OACE,oBAAoB,KAAK,MAAM,KAAK,KAAK,OAAO,OAAO,IAAI;AAE/D;;;;;;;;;;;;AAaA,SAAgB,sBAId,MAAsC;CACtC,OAAO,CAAC,kBAAkB,IAAI,KAAK,oBAAoB,KAAK,MAAM;AACpE;;;;;;;;;;;;AAaA,SAAgB,qBAId,MAAsC;CACtC,OACE,CAAC,kBAAkB,IAAI,KACvB,CAAC,sBAAsB,IAAI,KAC3B,CAAC,CAAC,KAAK,IAAI,QAAQ;AAEvB"}
1
+ {"version":3,"file":"columnGroupingFeature.utils.js","names":[],"sources":["../../../src/features/column-grouping/columnGroupingFeature.utils.ts"],"sourcesContent":["import { cloneState, hasOwn, isFunction } from '../../utils'\nimport type { Column_Internal } from '../../types/Column'\nimport type { CellData, RowData, Updater } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { Table_Internal } from '../../types/Table'\nimport type { Row } from '../../types/Row'\nimport type { Cell } from '../../types/Cell'\nimport type {\n AggregationFn,\n GroupingState,\n Row_ColumnGrouping,\n} from './columnGroupingFeature.types'\n\n/**\n * Creates the default grouping state.\n *\n * The feature default is an empty array, meaning no columns are grouped. Reset\n * APIs use this value when `defaultState` is `true`.\n *\n * @example\n * ```ts\n * const grouping = getDefaultGroupingState()\n * ```\n */\nexport function getDefaultGroupingState(): GroupingState {\n return []\n}\n\n/**\n * Adds or removes this column id from the grouping state.\n *\n * Existing grouped columns keep their order. A column already present in\n * `state.grouping` is removed; otherwise it is appended.\n *\n * @example\n * ```ts\n * column_toggleGrouping(column)\n * ```\n */\nexport function column_toggleGrouping<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n table_setGrouping(column.table, (old) => {\n // Find any existing grouping for this column\n if (old.includes(column.id)) {\n return old.filter((d) => d !== column.id)\n }\n\n return [...old, column.id]\n })\n}\n\n/**\n * Checks whether this column can be used for grouping.\n *\n * Grouping must be enabled at the column and table level, and the column must\n * either have an accessor or provide `getGroupingValue`.\n *\n * @example\n * ```ts\n * const canGroup = column_getCanGroup(column)\n * ```\n */\nexport function column_getCanGroup<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n return (\n (column.columnDef.enableGrouping ?? true) &&\n (column.table.options.enableGrouping ?? true) &&\n (!!column.accessorFn || !!column.columnDef.getGroupingValue)\n )\n}\n\n/**\n * Checks whether this column id is present in `state.grouping`.\n *\n * The result only reflects grouping state, not whether the grouped row model has\n * been calculated yet.\n *\n * @example\n * ```ts\n * const isGrouped = column_getIsGrouped(column)\n * ```\n */\nexport function column_getIsGrouped<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): boolean {\n return !!column.table.atoms.grouping?.get()?.includes(column.id)\n}\n\n/**\n * Finds this column's position in the ordered grouping state.\n *\n * The result is `-1` when the column is not grouped.\n *\n * @example\n * ```ts\n * const index = column_getGroupedIndex(column)\n * ```\n */\nexport function column_getGroupedIndex<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): number {\n return column.table.atoms.grouping?.get()?.indexOf(column.id) ?? -1\n}\n\n/**\n * Creates a header/control handler that toggles grouping for this column.\n *\n * The handler is a no-op when `column_getCanGroup(column)` is false.\n *\n * @example\n * ```ts\n * const onClick = column_getToggleGroupingHandler(column)\n * ```\n */\nexport function column_getToggleGroupingHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n const canGroup = column_getCanGroup(column)\n\n return () => {\n if (!canGroup) return\n column_toggleGrouping(column)\n }\n}\n\n/**\n * Chooses a built-in aggregation function from the first core row value.\n *\n * Numeric columns default to `sum`, date-like values default to `extent`, and\n * other value types leave aggregation unspecified.\n *\n * @example\n * ```ts\n * const aggregationFn = column_getAutoAggregationFn(column)\n * ```\n */\nexport function column_getAutoAggregationFn<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n const aggregationFns:\n | Record<string, AggregationFn<TFeatures, TData>>\n | undefined = column.table._rowModelFns.aggregationFns\n\n const firstRow = column.table.getCoreRowModel().flatRows[0]\n\n const value = firstRow?.getValue(column.id)\n\n if (typeof value === 'number') {\n return aggregationFns?.sum\n }\n\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return aggregationFns?.extent\n }\n}\n\n/**\n * Resolves the aggregation function configured for a column.\n *\n * Function-valued `columnDef.aggregationFn` is returned directly, `'auto'`\n * delegates to `column_getAutoAggregationFn`, and string values are looked up in\n * the table's aggregation function registry.\n *\n * @example\n * ```ts\n * const aggregationFn = column_getAggregationFn(column)\n * ```\n */\nexport function column_getAggregationFn<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n const aggregationFns:\n | Record<string, AggregationFn<TFeatures, TData>>\n | undefined = column.table._rowModelFns.aggregationFns\n\n return isFunction(column.columnDef.aggregationFn)\n ? column.columnDef.aggregationFn\n : column.columnDef.aggregationFn === 'auto'\n ? column_getAutoAggregationFn(column)\n : aggregationFns?.[column.columnDef.aggregationFn as string]\n}\n\n/**\n * Routes a grouping updater through the table's grouping change handler.\n *\n * The updater may be a next `GroupingState` array or a function of the previous\n * grouping state, matching the instance `table.setGrouping` behavior.\n *\n * @example\n * ```ts\n * table_setGrouping(table, (old) => [...old, 'status'])\n * ```\n */\nexport function table_setGrouping<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, updater: Updater<GroupingState>) {\n table.options.onGroupingChange?.(updater)\n}\n\n/**\n * Resets `grouping` to the configured initial state or feature default.\n *\n * With no argument, the reset clones `table.initialState.grouping` when it\n * exists. Passing `true` ignores initial state and resets to `[]`.\n *\n * @example\n * ```ts\n * table_resetGrouping(table)\n * table_resetGrouping(table, true)\n * ```\n */\nexport function table_resetGrouping<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n table_setGrouping(\n table,\n defaultState ? [] : cloneState(table.initialState.grouping ?? []),\n )\n}\n\n/**\n * Checks whether this row was created as a grouped row.\n *\n * Grouped rows carry a `groupingColumnId`; ordinary leaf rows do not.\n *\n * @example\n * ```ts\n * const isGrouped = row_getIsGrouped(row)\n * ```\n */\nexport function row_getIsGrouped<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData> & Partial<Row_ColumnGrouping>) {\n return !!row.groupingColumnId\n}\n\n/**\n * Reads and caches this row's grouping value for a column.\n *\n * `columnDef.getGroupingValue` wins when provided; otherwise the normal row\n * accessor value is used.\n *\n * @example\n * ```ts\n * const groupValue = row_getGroupingValue(row, 'status')\n * ```\n */\nexport function row_getGroupingValue<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData> & Partial<Row_ColumnGrouping>, columnId: string) {\n if (row._groupingValuesCache && hasOwn(row._groupingValuesCache, columnId)) {\n return row._groupingValuesCache[columnId]\n }\n\n const column = row.table.getColumn(columnId) as Column_Internal<\n TFeatures,\n TData\n >\n\n if (!column.columnDef.getGroupingValue) {\n return row.getValue(columnId)\n }\n\n if (row._groupingValuesCache) {\n row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(\n row.original,\n )\n }\n\n return row._groupingValuesCache?.[columnId]\n}\n\n/**\n * Checks whether this cell represents the grouped column for a grouped row.\n *\n * This is the cell that usually renders the grouped value and expansion control.\n *\n * @example\n * ```ts\n * const isGroupedCell = cell_getIsGrouped(cell)\n * ```\n */\nexport function cell_getIsGrouped<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(cell: Cell<TFeatures, TData, TValue>) {\n const row = cell.row as Row<TFeatures, TData> & Partial<Row_ColumnGrouping>\n return (\n column_getIsGrouped(cell.column) && cell.column.id === row.groupingColumnId\n )\n}\n\n/**\n * Checks whether this cell is a placeholder hidden by grouping.\n *\n * Placeholder cells belong to grouped columns other than the row's active\n * grouping column.\n *\n * @example\n * ```ts\n * const isPlaceholder = cell_getIsPlaceholder(cell)\n * ```\n */\nexport function cell_getIsPlaceholder<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(cell: Cell<TFeatures, TData, TValue>) {\n return !cell_getIsGrouped(cell) && column_getIsGrouped(cell.column)\n}\n\n/**\n * Checks whether this cell should render an aggregated value.\n *\n * Aggregated cells are non-placeholder, non-grouped cells on rows that have\n * subRows.\n *\n * @example\n * ```ts\n * const isAggregated = cell_getIsAggregated(cell)\n * ```\n */\nexport function cell_getIsAggregated<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(cell: Cell<TFeatures, TData, TValue>) {\n return (\n !cell_getIsGrouped(cell) &&\n !cell_getIsPlaceholder(cell) &&\n !!cell.row.subRows.length\n )\n}\n"],"mappings":"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"}
@@ -47,7 +47,7 @@ function _createGroupedRowModel(table) {
47
47
  }
48
48
  const existingGrouping = grouping.filter((columnId) => require_coreColumnsFeature_utils.table_getColumn(table, columnId));
49
49
  const groupedFlatRows = [];
50
- const groupedRowsById = {};
50
+ const groupedRowsById = require_utils.makeObjectMap();
51
51
  const groupUpRecursively = (rows, depth = 0, parentId) => {
52
52
  if (depth >= existingGrouping.length) return rows.map((row) => {
53
53
  row.depth = depth;
@@ -73,15 +73,14 @@ function _createGroupedRowModel(table) {
73
73
  subRows,
74
74
  leafRows,
75
75
  getValue: (colId) => {
76
- var _row$_groupingValuesC;
77
76
  if (existingGrouping.includes(colId)) {
78
- if (row._valuesCache.hasOwnProperty(colId)) return row._valuesCache[colId];
77
+ if (require_utils.hasOwn(row._valuesCache, colId)) return row._valuesCache[colId];
79
78
  if (groupedRows[0]) row._valuesCache[colId] = groupedRows[0].getValue(colId) ?? void 0;
80
79
  return row._valuesCache[colId];
81
80
  }
82
- if ((_row$_groupingValuesC = row._groupingValuesCache) === null || _row$_groupingValuesC === void 0 ? void 0 : _row$_groupingValuesC.hasOwnProperty(colId)) return row._groupingValuesCache[colId];
81
+ if (row._groupingValuesCache && require_utils.hasOwn(row._groupingValuesCache, colId)) return row._groupingValuesCache[colId];
83
82
  const aggregateFn = require_columnGroupingFeature_utils.column_getAggregationFn(table.getColumn(colId));
84
- if (!row._groupingValuesCache) row._groupingValuesCache = {};
83
+ if (!row._groupingValuesCache) row._groupingValuesCache = require_utils.makeObjectMap();
85
84
  if (aggregateFn) {
86
85
  row._groupingValuesCache[colId] = aggregateFn(colId, leafRows, groupedRows);
87
86
  return row._groupingValuesCache[colId];
@@ -1 +1 @@
1
- {"version":3,"file":"createGroupedRowModel.cjs","names":["tableMemo","table_getColumn","flattenBy","constructRow","column_getAggregationFn","row_getGroupingValue"],"sources":["../../../src/features/column-grouping/createGroupedRowModel.ts"],"sourcesContent":["import { flattenBy, tableMemo } from '../../utils'\nimport { constructRow } from '../../core/rows/constructRow'\nimport { table_getColumn } from '../../core/columns/coreColumnsFeature.utils'\nimport { table_autoResetExpanded } from '../row-expanding/rowExpandingFeature.utils'\nimport { table_autoResetPageIndex } from '../row-pagination/rowPaginationFeature.utils'\nimport {\n column_getAggregationFn,\n row_getGroupingValue,\n} from './columnGroupingFeature.utils'\nimport type { Column } from '../../types/Column'\nimport type { Row_ColumnGrouping } from './columnGroupingFeature.types'\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 { RowData } from '../../types/type-utils'\n\n/**\n * Creates a memoized grouped 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 aggregation functions with the `aggregationFns` slot on the\n * `features` option:\n * `tableFeatures({ columnGroupingFeature, groupedRowModel: createGroupedRowModel(), aggregationFns })`.\n */\nexport function createGroupedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\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: 'columnGroupingFeature',\n table,\n fnName: 'table.getGroupedRowModel',\n memoDeps: () => [\n table.atoms.grouping?.get(),\n table.getPreGroupedRowModel(),\n ],\n fn: () => _createGroupedRowModel(table),\n onAfterUpdate: () => {\n table_autoResetExpanded(table)\n table_autoResetPageIndex(table)\n },\n })\n }\n}\n\nfunction _createGroupedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {\n const rowModel = table.getPreGroupedRowModel()\n const grouping = table.atoms.grouping?.get()\n\n if (!rowModel.rows.length || !grouping?.length) {\n rowModel.rows.forEach((row) => {\n row.depth = 0\n row.parentId = undefined\n })\n return rowModel\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter((columnId) =>\n table_getColumn(table, columnId),\n )\n\n const groupedFlatRows: Array<Row<TFeatures, TData>> &\n Partial<Row_ColumnGrouping> = []\n const groupedRowsById: Record<string, Row<TFeatures, TData>> = {}\n\n // Recursively group the data\n const groupUpRecursively = (\n rows: Array<Row<TFeatures, TData>>,\n depth = 0,\n parentId?: string,\n ) => {\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map((row) => {\n row.depth = depth\n\n groupedFlatRows.push(row)\n groupedRowsById[row.id] = row\n\n if (row.subRows.length) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id)\n }\n\n return row\n })\n }\n\n const columnId = existingGrouping[depth] as string\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId)\n\n // Perform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map(\n ([groupingValue, groupedRows], index) => {\n let id = `${columnId}:${groupingValue}`\n id = parentId ? `${parentId}>${id}` : id\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id)\n\n subRows.forEach((subRow) => {\n subRow.parentId = id\n })\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth\n ? flattenBy(groupedRows, (row) => row.subRows)\n : groupedRows\n\n const row = constructRow(\n table,\n id,\n leafRows[0]!.original,\n index,\n depth,\n undefined,\n parentId,\n ) as Row<TFeatures, TData> & Partial<Row_ColumnGrouping>\n\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: (colId: string) => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(colId)) {\n if (row._valuesCache.hasOwnProperty(colId)) {\n return row._valuesCache[colId]\n }\n\n if (groupedRows[0]) {\n row._valuesCache[colId] =\n groupedRows[0].getValue(colId) ?? undefined\n }\n\n return row._valuesCache[colId]\n }\n\n if (row._groupingValuesCache?.hasOwnProperty(colId)) {\n return row._groupingValuesCache[colId]\n }\n\n // Aggregate the values\n const column = table.getColumn(colId)\n const aggregateFn = column_getAggregationFn(\n column as Column<TFeatures, TData, unknown>,\n )\n\n if (!row._groupingValuesCache) row._groupingValuesCache = {}\n\n if (aggregateFn) {\n row._groupingValuesCache[colId] = aggregateFn(\n colId,\n leafRows,\n groupedRows,\n )\n\n return row._groupingValuesCache[colId]\n }\n },\n })\n\n subRows.forEach((subRow) => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n })\n\n return row\n },\n )\n\n return aggregatedGroupedRows\n }\n\n const groupedRows = groupUpRecursively(rowModel.rows, 0)\n\n groupedRows.forEach((subRow) => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n })\n\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById,\n }\n}\n\nfunction groupBy<TFeatures extends TableFeatures, TData extends RowData = any>(\n rows: Array<Row<TFeatures, TData>>,\n columnId: string,\n) {\n const groupMap = new Map<any, Array<Row<TFeatures, TData>>>()\n\n return rows.reduce((map, row) => {\n const resKey = `${row_getGroupingValue(row, columnId)}`\n const previous = map.get(resKey)\n if (!previous) {\n map.set(resKey, [row])\n } else {\n previous.push(row)\n }\n return map\n }, groupMap)\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"createGroupedRowModel.cjs","names":["tableMemo","table_getColumn","makeObjectMap","flattenBy","constructRow","hasOwn","column_getAggregationFn","row_getGroupingValue"],"sources":["../../../src/features/column-grouping/createGroupedRowModel.ts"],"sourcesContent":["import { flattenBy, hasOwn, makeObjectMap, tableMemo } from '../../utils'\nimport { constructRow } from '../../core/rows/constructRow'\nimport { table_getColumn } from '../../core/columns/coreColumnsFeature.utils'\nimport { table_autoResetExpanded } from '../row-expanding/rowExpandingFeature.utils'\nimport { table_autoResetPageIndex } from '../row-pagination/rowPaginationFeature.utils'\nimport {\n column_getAggregationFn,\n row_getGroupingValue,\n} from './columnGroupingFeature.utils'\nimport type { Column } from '../../types/Column'\nimport type { Row_ColumnGrouping } from './columnGroupingFeature.types'\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 { RowData } from '../../types/type-utils'\n\n/**\n * Creates a memoized grouped 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 aggregation functions with the `aggregationFns` slot on the\n * `features` option:\n * `tableFeatures({ columnGroupingFeature, groupedRowModel: createGroupedRowModel(), aggregationFns })`.\n */\nexport function createGroupedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\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: 'columnGroupingFeature',\n table,\n fnName: 'table.getGroupedRowModel',\n memoDeps: () => [\n table.atoms.grouping?.get(),\n table.getPreGroupedRowModel(),\n ],\n fn: () => _createGroupedRowModel(table),\n onAfterUpdate: () => {\n table_autoResetExpanded(table)\n table_autoResetPageIndex(table)\n },\n })\n }\n}\n\nfunction _createGroupedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {\n const rowModel = table.getPreGroupedRowModel()\n const grouping = table.atoms.grouping?.get()\n\n if (!rowModel.rows.length || !grouping?.length) {\n rowModel.rows.forEach((row) => {\n row.depth = 0\n row.parentId = undefined\n })\n return rowModel\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter((columnId) =>\n table_getColumn(table, columnId),\n )\n\n const groupedFlatRows: Array<Row<TFeatures, TData>> &\n Partial<Row_ColumnGrouping> = []\n const groupedRowsById = makeObjectMap<Row<TFeatures, TData>>()\n\n // Recursively group the data\n const groupUpRecursively = (\n rows: Array<Row<TFeatures, TData>>,\n depth = 0,\n parentId?: string,\n ) => {\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map((row) => {\n row.depth = depth\n\n groupedFlatRows.push(row)\n groupedRowsById[row.id] = row\n\n if (row.subRows.length) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id)\n }\n\n return row\n })\n }\n\n const columnId = existingGrouping[depth] as string\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId)\n\n // Perform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map(\n ([groupingValue, groupedRows], index) => {\n let id = `${columnId}:${groupingValue}`\n id = parentId ? `${parentId}>${id}` : id\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id)\n\n subRows.forEach((subRow) => {\n subRow.parentId = id\n })\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth\n ? flattenBy(groupedRows, (row) => row.subRows)\n : groupedRows\n\n const row = constructRow(\n table,\n id,\n leafRows[0]!.original,\n index,\n depth,\n undefined,\n parentId,\n ) as Row<TFeatures, TData> & Partial<Row_ColumnGrouping>\n\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: (colId: string) => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(colId)) {\n if (hasOwn(row._valuesCache, colId)) {\n return row._valuesCache[colId]\n }\n\n if (groupedRows[0]) {\n row._valuesCache[colId] =\n groupedRows[0].getValue(colId) ?? undefined\n }\n\n return row._valuesCache[colId]\n }\n\n if (\n row._groupingValuesCache &&\n hasOwn(row._groupingValuesCache, colId)\n ) {\n return row._groupingValuesCache[colId]\n }\n\n // Aggregate the values\n const column = table.getColumn(colId)\n const aggregateFn = column_getAggregationFn(\n column as Column<TFeatures, TData, unknown>,\n )\n\n if (!row._groupingValuesCache) {\n row._groupingValuesCache = makeObjectMap()\n }\n\n if (aggregateFn) {\n row._groupingValuesCache[colId] = aggregateFn(\n colId,\n leafRows,\n groupedRows,\n )\n\n return row._groupingValuesCache[colId]\n }\n },\n })\n\n subRows.forEach((subRow) => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n })\n\n return row\n },\n )\n\n return aggregatedGroupedRows\n }\n\n const groupedRows = groupUpRecursively(rowModel.rows, 0)\n\n groupedRows.forEach((subRow) => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n })\n\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById,\n }\n}\n\nfunction groupBy<TFeatures extends TableFeatures, TData extends RowData = any>(\n rows: Array<Row<TFeatures, TData>>,\n columnId: string,\n) {\n const groupMap = new Map<any, Array<Row<TFeatures, TData>>>()\n\n return rows.reduce((map, row) => {\n const resKey = `${row_getGroupingValue(row, columnId)}`\n const previous = map.get(resKey)\n if (!previous) {\n map.set(resKey, [row])\n } else {\n previous.push(row)\n }\n return map\n }, groupMap)\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { flattenBy, tableMemo } from "../../utils.js";
1
+ import { flattenBy, hasOwn, makeObjectMap, tableMemo } from "../../utils.js";
2
2
  import { table_getColumn } from "../../core/columns/coreColumnsFeature.utils.js";
3
3
  import { constructRow } from "../../core/rows/constructRow.js";
4
4
  import { table_autoResetPageIndex } from "../row-pagination/rowPaginationFeature.utils.js";
@@ -47,7 +47,7 @@ function _createGroupedRowModel(table) {
47
47
  }
48
48
  const existingGrouping = grouping.filter((columnId) => table_getColumn(table, columnId));
49
49
  const groupedFlatRows = [];
50
- const groupedRowsById = {};
50
+ const groupedRowsById = makeObjectMap();
51
51
  const groupUpRecursively = (rows, depth = 0, parentId) => {
52
52
  if (depth >= existingGrouping.length) return rows.map((row) => {
53
53
  row.depth = depth;
@@ -73,15 +73,14 @@ function _createGroupedRowModel(table) {
73
73
  subRows,
74
74
  leafRows,
75
75
  getValue: (colId) => {
76
- var _row$_groupingValuesC;
77
76
  if (existingGrouping.includes(colId)) {
78
- if (row._valuesCache.hasOwnProperty(colId)) return row._valuesCache[colId];
77
+ if (hasOwn(row._valuesCache, colId)) return row._valuesCache[colId];
79
78
  if (groupedRows[0]) row._valuesCache[colId] = groupedRows[0].getValue(colId) ?? void 0;
80
79
  return row._valuesCache[colId];
81
80
  }
82
- if ((_row$_groupingValuesC = row._groupingValuesCache) === null || _row$_groupingValuesC === void 0 ? void 0 : _row$_groupingValuesC.hasOwnProperty(colId)) return row._groupingValuesCache[colId];
81
+ if (row._groupingValuesCache && hasOwn(row._groupingValuesCache, colId)) return row._groupingValuesCache[colId];
83
82
  const aggregateFn = column_getAggregationFn(table.getColumn(colId));
84
- if (!row._groupingValuesCache) row._groupingValuesCache = {};
83
+ if (!row._groupingValuesCache) row._groupingValuesCache = makeObjectMap();
85
84
  if (aggregateFn) {
86
85
  row._groupingValuesCache[colId] = aggregateFn(colId, leafRows, groupedRows);
87
86
  return row._groupingValuesCache[colId];
@@ -1 +1 @@
1
- {"version":3,"file":"createGroupedRowModel.js","names":[],"sources":["../../../src/features/column-grouping/createGroupedRowModel.ts"],"sourcesContent":["import { flattenBy, tableMemo } from '../../utils'\nimport { constructRow } from '../../core/rows/constructRow'\nimport { table_getColumn } from '../../core/columns/coreColumnsFeature.utils'\nimport { table_autoResetExpanded } from '../row-expanding/rowExpandingFeature.utils'\nimport { table_autoResetPageIndex } from '../row-pagination/rowPaginationFeature.utils'\nimport {\n column_getAggregationFn,\n row_getGroupingValue,\n} from './columnGroupingFeature.utils'\nimport type { Column } from '../../types/Column'\nimport type { Row_ColumnGrouping } from './columnGroupingFeature.types'\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 { RowData } from '../../types/type-utils'\n\n/**\n * Creates a memoized grouped 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 aggregation functions with the `aggregationFns` slot on the\n * `features` option:\n * `tableFeatures({ columnGroupingFeature, groupedRowModel: createGroupedRowModel(), aggregationFns })`.\n */\nexport function createGroupedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\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: 'columnGroupingFeature',\n table,\n fnName: 'table.getGroupedRowModel',\n memoDeps: () => [\n table.atoms.grouping?.get(),\n table.getPreGroupedRowModel(),\n ],\n fn: () => _createGroupedRowModel(table),\n onAfterUpdate: () => {\n table_autoResetExpanded(table)\n table_autoResetPageIndex(table)\n },\n })\n }\n}\n\nfunction _createGroupedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {\n const rowModel = table.getPreGroupedRowModel()\n const grouping = table.atoms.grouping?.get()\n\n if (!rowModel.rows.length || !grouping?.length) {\n rowModel.rows.forEach((row) => {\n row.depth = 0\n row.parentId = undefined\n })\n return rowModel\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter((columnId) =>\n table_getColumn(table, columnId),\n )\n\n const groupedFlatRows: Array<Row<TFeatures, TData>> &\n Partial<Row_ColumnGrouping> = []\n const groupedRowsById: Record<string, Row<TFeatures, TData>> = {}\n\n // Recursively group the data\n const groupUpRecursively = (\n rows: Array<Row<TFeatures, TData>>,\n depth = 0,\n parentId?: string,\n ) => {\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map((row) => {\n row.depth = depth\n\n groupedFlatRows.push(row)\n groupedRowsById[row.id] = row\n\n if (row.subRows.length) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id)\n }\n\n return row\n })\n }\n\n const columnId = existingGrouping[depth] as string\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId)\n\n // Perform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map(\n ([groupingValue, groupedRows], index) => {\n let id = `${columnId}:${groupingValue}`\n id = parentId ? `${parentId}>${id}` : id\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id)\n\n subRows.forEach((subRow) => {\n subRow.parentId = id\n })\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth\n ? flattenBy(groupedRows, (row) => row.subRows)\n : groupedRows\n\n const row = constructRow(\n table,\n id,\n leafRows[0]!.original,\n index,\n depth,\n undefined,\n parentId,\n ) as Row<TFeatures, TData> & Partial<Row_ColumnGrouping>\n\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: (colId: string) => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(colId)) {\n if (row._valuesCache.hasOwnProperty(colId)) {\n return row._valuesCache[colId]\n }\n\n if (groupedRows[0]) {\n row._valuesCache[colId] =\n groupedRows[0].getValue(colId) ?? undefined\n }\n\n return row._valuesCache[colId]\n }\n\n if (row._groupingValuesCache?.hasOwnProperty(colId)) {\n return row._groupingValuesCache[colId]\n }\n\n // Aggregate the values\n const column = table.getColumn(colId)\n const aggregateFn = column_getAggregationFn(\n column as Column<TFeatures, TData, unknown>,\n )\n\n if (!row._groupingValuesCache) row._groupingValuesCache = {}\n\n if (aggregateFn) {\n row._groupingValuesCache[colId] = aggregateFn(\n colId,\n leafRows,\n groupedRows,\n )\n\n return row._groupingValuesCache[colId]\n }\n },\n })\n\n subRows.forEach((subRow) => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n })\n\n return row\n },\n )\n\n return aggregatedGroupedRows\n }\n\n const groupedRows = groupUpRecursively(rowModel.rows, 0)\n\n groupedRows.forEach((subRow) => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n })\n\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById,\n }\n}\n\nfunction groupBy<TFeatures extends TableFeatures, TData extends RowData = any>(\n rows: Array<Row<TFeatures, TData>>,\n columnId: string,\n) {\n const groupMap = new Map<any, Array<Row<TFeatures, TData>>>()\n\n return rows.reduce((map, row) => {\n const resKey = `${row_getGroupingValue(row, columnId)}`\n const previous = map.get(resKey)\n if (!previous) {\n map.set(resKey, [row])\n } else {\n previous.push(row)\n }\n return map\n }, groupMap)\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"createGroupedRowModel.js","names":[],"sources":["../../../src/features/column-grouping/createGroupedRowModel.ts"],"sourcesContent":["import { flattenBy, hasOwn, makeObjectMap, tableMemo } from '../../utils'\nimport { constructRow } from '../../core/rows/constructRow'\nimport { table_getColumn } from '../../core/columns/coreColumnsFeature.utils'\nimport { table_autoResetExpanded } from '../row-expanding/rowExpandingFeature.utils'\nimport { table_autoResetPageIndex } from '../row-pagination/rowPaginationFeature.utils'\nimport {\n column_getAggregationFn,\n row_getGroupingValue,\n} from './columnGroupingFeature.utils'\nimport type { Column } from '../../types/Column'\nimport type { Row_ColumnGrouping } from './columnGroupingFeature.types'\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 { RowData } from '../../types/type-utils'\n\n/**\n * Creates a memoized grouped 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 aggregation functions with the `aggregationFns` slot on the\n * `features` option:\n * `tableFeatures({ columnGroupingFeature, groupedRowModel: createGroupedRowModel(), aggregationFns })`.\n */\nexport function createGroupedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\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: 'columnGroupingFeature',\n table,\n fnName: 'table.getGroupedRowModel',\n memoDeps: () => [\n table.atoms.grouping?.get(),\n table.getPreGroupedRowModel(),\n ],\n fn: () => _createGroupedRowModel(table),\n onAfterUpdate: () => {\n table_autoResetExpanded(table)\n table_autoResetPageIndex(table)\n },\n })\n }\n}\n\nfunction _createGroupedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {\n const rowModel = table.getPreGroupedRowModel()\n const grouping = table.atoms.grouping?.get()\n\n if (!rowModel.rows.length || !grouping?.length) {\n rowModel.rows.forEach((row) => {\n row.depth = 0\n row.parentId = undefined\n })\n return rowModel\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter((columnId) =>\n table_getColumn(table, columnId),\n )\n\n const groupedFlatRows: Array<Row<TFeatures, TData>> &\n Partial<Row_ColumnGrouping> = []\n const groupedRowsById = makeObjectMap<Row<TFeatures, TData>>()\n\n // Recursively group the data\n const groupUpRecursively = (\n rows: Array<Row<TFeatures, TData>>,\n depth = 0,\n parentId?: string,\n ) => {\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map((row) => {\n row.depth = depth\n\n groupedFlatRows.push(row)\n groupedRowsById[row.id] = row\n\n if (row.subRows.length) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id)\n }\n\n return row\n })\n }\n\n const columnId = existingGrouping[depth] as string\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId)\n\n // Perform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map(\n ([groupingValue, groupedRows], index) => {\n let id = `${columnId}:${groupingValue}`\n id = parentId ? `${parentId}>${id}` : id\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id)\n\n subRows.forEach((subRow) => {\n subRow.parentId = id\n })\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth\n ? flattenBy(groupedRows, (row) => row.subRows)\n : groupedRows\n\n const row = constructRow(\n table,\n id,\n leafRows[0]!.original,\n index,\n depth,\n undefined,\n parentId,\n ) as Row<TFeatures, TData> & Partial<Row_ColumnGrouping>\n\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: (colId: string) => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(colId)) {\n if (hasOwn(row._valuesCache, colId)) {\n return row._valuesCache[colId]\n }\n\n if (groupedRows[0]) {\n row._valuesCache[colId] =\n groupedRows[0].getValue(colId) ?? undefined\n }\n\n return row._valuesCache[colId]\n }\n\n if (\n row._groupingValuesCache &&\n hasOwn(row._groupingValuesCache, colId)\n ) {\n return row._groupingValuesCache[colId]\n }\n\n // Aggregate the values\n const column = table.getColumn(colId)\n const aggregateFn = column_getAggregationFn(\n column as Column<TFeatures, TData, unknown>,\n )\n\n if (!row._groupingValuesCache) {\n row._groupingValuesCache = makeObjectMap()\n }\n\n if (aggregateFn) {\n row._groupingValuesCache[colId] = aggregateFn(\n colId,\n leafRows,\n groupedRows,\n )\n\n return row._groupingValuesCache[colId]\n }\n },\n })\n\n subRows.forEach((subRow) => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n })\n\n return row\n },\n )\n\n return aggregatedGroupedRows\n }\n\n const groupedRows = groupUpRecursively(rowModel.rows, 0)\n\n groupedRows.forEach((subRow) => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n })\n\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById,\n }\n}\n\nfunction groupBy<TFeatures extends TableFeatures, TData extends RowData = any>(\n rows: Array<Row<TFeatures, TData>>,\n columnId: string,\n) {\n const groupMap = new Map<any, Array<Row<TFeatures, TData>>>()\n\n return rows.reduce((map, row) => {\n const resKey = `${row_getGroupingValue(row, columnId)}`\n const previous = map.get(resKey)\n if (!previous) {\n map.set(resKey, [row])\n } else {\n previous.push(row)\n }\n return map\n }, groupMap)\n}\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { CellData, RowData, Updater } from "../../types/type-utils.cjs";
2
2
  import { ColumnPinningPosition } from "../column-pinning/columnPinningFeature.types.cjs";
3
3
  import { ColumnOrderState } from "./columnOrderingFeature.types.cjs";
4
- import { Column_Internal } from "../../types/Column.cjs";
5
- import { Table_Internal } from "../../types/Table.cjs";
4
+ import { Column } from "../../types/Column.cjs";
5
+ import { Table } from "../../types/Table.cjs";
6
6
  import { TableFeatures } from "../../types/TableFeatures.cjs";
7
7
 
8
8
  //#region src/features/column-ordering/columnOrderingFeature.utils.d.ts
@@ -29,7 +29,7 @@ declare function getDefaultColumnOrderState(): ColumnOrderState;
29
29
  * const index = column_getIndex(column, 'center')
30
30
  * ```
31
31
  */
32
- declare function column_getIndex<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>, position?: ColumnPinningPosition | 'center'): number;
32
+ declare function column_getIndex<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>, position?: ColumnPinningPosition | 'center'): number;
33
33
  /**
34
34
  * Checks whether this column is the first visible column in a pinning region.
35
35
  *
@@ -40,7 +40,7 @@ declare function column_getIndex<TFeatures extends TableFeatures, TData extends
40
40
  * const isFirst = column_getIsFirstColumn(column, 'left')
41
41
  * ```
42
42
  */
43
- declare function column_getIsFirstColumn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>, position?: ColumnPinningPosition | 'center'): boolean;
43
+ declare function column_getIsFirstColumn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>, position?: ColumnPinningPosition | 'center'): boolean;
44
44
  /**
45
45
  * Checks whether this column is the last visible column in a pinning region.
46
46
  *
@@ -51,7 +51,7 @@ declare function column_getIsFirstColumn<TFeatures extends TableFeatures, TData
51
51
  * const isLast = column_getIsLastColumn(column, 'right')
52
52
  * ```
53
53
  */
54
- declare function column_getIsLastColumn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>, position?: ColumnPinningPosition | 'center'): boolean;
54
+ declare function column_getIsLastColumn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>, position?: ColumnPinningPosition | 'center'): boolean;
55
55
  /**
56
56
  * Routes a column order updater through the table's column-order change handler.
57
57
  *
@@ -63,7 +63,7 @@ declare function column_getIsLastColumn<TFeatures extends TableFeatures, TData e
63
63
  * table_setColumnOrder(table, ['firstName', 'lastName', 'age'])
64
64
  * ```
65
65
  */
66
- declare function table_setColumnOrder<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>, updater: Updater<ColumnOrderState>): void;
66
+ declare function table_setColumnOrder<TFeatures extends TableFeatures, TData extends RowData>(table: Table<TFeatures, TData>, updater: Updater<ColumnOrderState>): void;
67
67
  /**
68
68
  * Resets `columnOrder` to the configured initial state or feature default.
69
69
  *
@@ -76,7 +76,7 @@ declare function table_setColumnOrder<TFeatures extends TableFeatures, TData ext
76
76
  * table_resetColumnOrder(table, true)
77
77
  * ```
78
78
  */
79
- declare function table_resetColumnOrder<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean): void;
79
+ declare function table_resetColumnOrder<TFeatures extends TableFeatures, TData extends RowData>(table: Table<TFeatures, TData>, defaultState?: boolean): void;
80
80
  /**
81
81
  * Creates the ordering function used to arrange leaf columns.
82
82
  *
@@ -88,7 +88,7 @@ declare function table_resetColumnOrder<TFeatures extends TableFeatures, TData e
88
88
  * const orderColumnsForTable = table_getOrderColumnsFn(table)
89
89
  * ```
90
90
  */
91
- declare function table_getOrderColumnsFn<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>): (columns: Array<Column_Internal<TFeatures, TData, unknown>>) => Column_Internal<TFeatures, TData, unknown>[];
91
+ declare function table_getOrderColumnsFn<TFeatures extends TableFeatures, TData extends RowData>(table: Table<TFeatures, TData>): (columns: Array<Column<TFeatures, TData, unknown>>) => Column<TFeatures, TData, unknown>[];
92
92
  /**
93
93
  * Applies grouped-column placement rules to an already ordered leaf-column list.
94
94
  *
@@ -101,7 +101,7 @@ declare function table_getOrderColumnsFn<TFeatures extends TableFeatures, TData
101
101
  * const orderedColumns = orderColumns(table, leafColumns)
102
102
  * ```
103
103
  */
104
- declare function orderColumns<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>, leafColumns: Array<Column_Internal<TFeatures, TData, unknown>>): Column_Internal<TFeatures, TData, unknown>[];
104
+ declare function orderColumns<TFeatures extends TableFeatures, TData extends RowData>(table: Table<TFeatures, TData>, leafColumns: Array<Column<TFeatures, TData, unknown>>): Column<TFeatures, TData, unknown>[];
105
105
  //#endregion
106
106
  export { column_getIndex, column_getIsFirstColumn, column_getIsLastColumn, getDefaultColumnOrderState, orderColumns, table_getOrderColumnsFn, table_resetColumnOrder, table_setColumnOrder };
107
107
  //# sourceMappingURL=columnOrderingFeature.utils.d.cts.map
@@ -1,8 +1,8 @@
1
1
  import { CellData, RowData, Updater } from "../../types/type-utils.js";
2
2
  import { ColumnPinningPosition } from "../column-pinning/columnPinningFeature.types.js";
3
3
  import { ColumnOrderState } from "./columnOrderingFeature.types.js";
4
- import { Column_Internal } from "../../types/Column.js";
5
- import { Table_Internal } from "../../types/Table.js";
4
+ import { Column } from "../../types/Column.js";
5
+ import { Table } from "../../types/Table.js";
6
6
  import { TableFeatures } from "../../types/TableFeatures.js";
7
7
 
8
8
  //#region src/features/column-ordering/columnOrderingFeature.utils.d.ts
@@ -29,7 +29,7 @@ declare function getDefaultColumnOrderState(): ColumnOrderState;
29
29
  * const index = column_getIndex(column, 'center')
30
30
  * ```
31
31
  */
32
- declare function column_getIndex<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>, position?: ColumnPinningPosition | 'center'): number;
32
+ declare function column_getIndex<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>, position?: ColumnPinningPosition | 'center'): number;
33
33
  /**
34
34
  * Checks whether this column is the first visible column in a pinning region.
35
35
  *
@@ -40,7 +40,7 @@ declare function column_getIndex<TFeatures extends TableFeatures, TData extends
40
40
  * const isFirst = column_getIsFirstColumn(column, 'left')
41
41
  * ```
42
42
  */
43
- declare function column_getIsFirstColumn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>, position?: ColumnPinningPosition | 'center'): boolean;
43
+ declare function column_getIsFirstColumn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>, position?: ColumnPinningPosition | 'center'): boolean;
44
44
  /**
45
45
  * Checks whether this column is the last visible column in a pinning region.
46
46
  *
@@ -51,7 +51,7 @@ declare function column_getIsFirstColumn<TFeatures extends TableFeatures, TData
51
51
  * const isLast = column_getIsLastColumn(column, 'right')
52
52
  * ```
53
53
  */
54
- declare function column_getIsLastColumn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>, position?: ColumnPinningPosition | 'center'): boolean;
54
+ declare function column_getIsLastColumn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>, position?: ColumnPinningPosition | 'center'): boolean;
55
55
  /**
56
56
  * Routes a column order updater through the table's column-order change handler.
57
57
  *
@@ -63,7 +63,7 @@ declare function column_getIsLastColumn<TFeatures extends TableFeatures, TData e
63
63
  * table_setColumnOrder(table, ['firstName', 'lastName', 'age'])
64
64
  * ```
65
65
  */
66
- declare function table_setColumnOrder<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>, updater: Updater<ColumnOrderState>): void;
66
+ declare function table_setColumnOrder<TFeatures extends TableFeatures, TData extends RowData>(table: Table<TFeatures, TData>, updater: Updater<ColumnOrderState>): void;
67
67
  /**
68
68
  * Resets `columnOrder` to the configured initial state or feature default.
69
69
  *
@@ -76,7 +76,7 @@ declare function table_setColumnOrder<TFeatures extends TableFeatures, TData ext
76
76
  * table_resetColumnOrder(table, true)
77
77
  * ```
78
78
  */
79
- declare function table_resetColumnOrder<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean): void;
79
+ declare function table_resetColumnOrder<TFeatures extends TableFeatures, TData extends RowData>(table: Table<TFeatures, TData>, defaultState?: boolean): void;
80
80
  /**
81
81
  * Creates the ordering function used to arrange leaf columns.
82
82
  *
@@ -88,7 +88,7 @@ declare function table_resetColumnOrder<TFeatures extends TableFeatures, TData e
88
88
  * const orderColumnsForTable = table_getOrderColumnsFn(table)
89
89
  * ```
90
90
  */
91
- declare function table_getOrderColumnsFn<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>): (columns: Array<Column_Internal<TFeatures, TData, unknown>>) => Column_Internal<TFeatures, TData, unknown>[];
91
+ declare function table_getOrderColumnsFn<TFeatures extends TableFeatures, TData extends RowData>(table: Table<TFeatures, TData>): (columns: Array<Column<TFeatures, TData, unknown>>) => Column<TFeatures, TData, unknown>[];
92
92
  /**
93
93
  * Applies grouped-column placement rules to an already ordered leaf-column list.
94
94
  *
@@ -101,7 +101,7 @@ declare function table_getOrderColumnsFn<TFeatures extends TableFeatures, TData
101
101
  * const orderedColumns = orderColumns(table, leafColumns)
102
102
  * ```
103
103
  */
104
- declare function orderColumns<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>, leafColumns: Array<Column_Internal<TFeatures, TData, unknown>>): Column_Internal<TFeatures, TData, unknown>[];
104
+ declare function orderColumns<TFeatures extends TableFeatures, TData extends RowData>(table: Table<TFeatures, TData>, leafColumns: Array<Column<TFeatures, TData, unknown>>): Column<TFeatures, TData, unknown>[];
105
105
  //#endregion
106
106
  export { column_getIndex, column_getIsFirstColumn, column_getIsLastColumn, getDefaultColumnOrderState, orderColumns, table_getOrderColumnsFn, table_resetColumnOrder, table_setColumnOrder };
107
107
  //# sourceMappingURL=columnOrderingFeature.utils.d.ts.map