@tanstack/table-core 9.0.0-beta.47 → 9.0.0-beta.48

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 (171) hide show
  1. package/dist/core/row-models/coreRowModelsFeature.types.d.cts +1 -1
  2. package/dist/core/row-models/coreRowModelsFeature.types.d.ts +1 -1
  3. package/dist/core/row-models/coreRowModelsFeature.utils.cjs +1 -1
  4. package/dist/core/row-models/coreRowModelsFeature.utils.cjs.map +1 -1
  5. package/dist/core/row-models/coreRowModelsFeature.utils.d.cts +1 -1
  6. package/dist/core/row-models/coreRowModelsFeature.utils.d.ts +1 -1
  7. package/dist/core/row-models/coreRowModelsFeature.utils.js +1 -1
  8. package/dist/core/row-models/coreRowModelsFeature.utils.js.map +1 -1
  9. package/dist/features/aggregation/aggregationFeature.cjs +38 -0
  10. package/dist/features/aggregation/aggregationFeature.cjs.map +1 -0
  11. package/dist/features/aggregation/aggregationFeature.d.cts +10 -0
  12. package/dist/features/aggregation/aggregationFeature.d.ts +10 -0
  13. package/dist/features/aggregation/aggregationFeature.js +38 -0
  14. package/dist/features/aggregation/aggregationFeature.js.map +1 -0
  15. package/dist/features/aggregation/aggregationFeature.types.cjs +13 -0
  16. package/dist/features/aggregation/aggregationFeature.types.cjs.map +1 -0
  17. package/dist/features/aggregation/aggregationFeature.types.d.cts +172 -0
  18. package/dist/features/aggregation/aggregationFeature.types.d.ts +172 -0
  19. package/dist/features/aggregation/aggregationFeature.types.js +12 -0
  20. package/dist/features/aggregation/aggregationFeature.types.js.map +1 -0
  21. package/dist/features/aggregation/aggregationFeature.utils.cjs +198 -0
  22. package/dist/features/aggregation/aggregationFeature.utils.cjs.map +1 -0
  23. package/dist/features/aggregation/aggregationFeature.utils.d.cts +33 -0
  24. package/dist/features/aggregation/aggregationFeature.utils.d.ts +33 -0
  25. package/dist/features/aggregation/aggregationFeature.utils.js +192 -0
  26. package/dist/features/aggregation/aggregationFeature.utils.js.map +1 -0
  27. package/dist/features/aggregation/aggregationFns.cjs +240 -0
  28. package/dist/features/aggregation/aggregationFns.cjs.map +1 -0
  29. package/dist/features/aggregation/aggregationFns.d.cts +67 -0
  30. package/dist/features/aggregation/aggregationFns.d.ts +67 -0
  31. package/dist/features/aggregation/aggregationFns.js +229 -0
  32. package/dist/features/aggregation/aggregationFns.js.map +1 -0
  33. package/dist/features/column-filtering/columnFilteringFeature.types.d.cts +1 -1
  34. package/dist/features/column-filtering/columnFilteringFeature.types.d.ts +1 -1
  35. package/dist/{fns → features/column-filtering}/filterFns.cjs +1 -1
  36. package/dist/features/column-filtering/filterFns.cjs.map +1 -0
  37. package/dist/{fns → features/column-filtering}/filterFns.d.cts +4 -4
  38. package/dist/{fns → features/column-filtering}/filterFns.d.ts +4 -4
  39. package/dist/{fns → features/column-filtering}/filterFns.js +1 -1
  40. package/dist/features/column-filtering/filterFns.js.map +1 -0
  41. package/dist/features/column-grouping/columnGroupingFeature.cjs +3 -12
  42. package/dist/features/column-grouping/columnGroupingFeature.cjs.map +1 -1
  43. package/dist/features/column-grouping/columnGroupingFeature.d.cts +1 -1
  44. package/dist/features/column-grouping/columnGroupingFeature.d.ts +1 -1
  45. package/dist/features/column-grouping/columnGroupingFeature.js +4 -13
  46. package/dist/features/column-grouping/columnGroupingFeature.js.map +1 -1
  47. package/dist/features/column-grouping/columnGroupingFeature.types.d.cts +6 -87
  48. package/dist/features/column-grouping/columnGroupingFeature.types.d.ts +6 -87
  49. package/dist/features/column-grouping/columnGroupingFeature.utils.cjs +0 -64
  50. package/dist/features/column-grouping/columnGroupingFeature.utils.cjs.map +1 -1
  51. package/dist/features/column-grouping/columnGroupingFeature.utils.d.cts +2 -44
  52. package/dist/features/column-grouping/columnGroupingFeature.utils.d.ts +2 -44
  53. package/dist/features/column-grouping/columnGroupingFeature.utils.js +2 -63
  54. package/dist/features/column-grouping/columnGroupingFeature.utils.js.map +1 -1
  55. package/dist/features/column-grouping/createGroupedRowModel.cjs +23 -16
  56. package/dist/features/column-grouping/createGroupedRowModel.cjs.map +1 -1
  57. package/dist/features/column-grouping/createGroupedRowModel.d.cts +2 -6
  58. package/dist/features/column-grouping/createGroupedRowModel.d.ts +2 -6
  59. package/dist/features/column-grouping/createGroupedRowModel.js +25 -18
  60. package/dist/features/column-grouping/createGroupedRowModel.js.map +1 -1
  61. package/dist/features/global-filtering/globalFilteringFeature.utils.cjs +1 -1
  62. package/dist/features/global-filtering/globalFilteringFeature.utils.cjs.map +1 -1
  63. package/dist/features/global-filtering/globalFilteringFeature.utils.js +1 -1
  64. package/dist/features/global-filtering/globalFilteringFeature.utils.js.map +1 -1
  65. package/dist/features/row-sorting/rowSortingFeature.types.d.cts +1 -1
  66. package/dist/features/row-sorting/rowSortingFeature.types.d.ts +1 -1
  67. package/dist/features/row-sorting/rowSortingFeature.utils.cjs +1 -1
  68. package/dist/features/row-sorting/rowSortingFeature.utils.cjs.map +1 -1
  69. package/dist/features/row-sorting/rowSortingFeature.utils.js +1 -1
  70. package/dist/features/row-sorting/rowSortingFeature.utils.js.map +1 -1
  71. package/dist/{fns → features/row-sorting}/sortFns.cjs +1 -1
  72. package/dist/{fns/sortFns.js.map → features/row-sorting/sortFns.cjs.map} +1 -1
  73. package/dist/{fns → features/row-sorting}/sortFns.d.cts +4 -4
  74. package/dist/{fns → features/row-sorting}/sortFns.d.ts +4 -4
  75. package/dist/{fns → features/row-sorting}/sortFns.js +1 -1
  76. package/dist/features/row-sorting/sortFns.js.map +1 -0
  77. package/dist/features/stockFeatures.cjs +2 -0
  78. package/dist/features/stockFeatures.cjs.map +1 -1
  79. package/dist/features/stockFeatures.d.cts +2 -0
  80. package/dist/features/stockFeatures.d.ts +2 -0
  81. package/dist/features/stockFeatures.js +2 -0
  82. package/dist/features/stockFeatures.js.map +1 -1
  83. package/dist/index.cjs +7 -4
  84. package/dist/index.d.cts +7 -5
  85. package/dist/index.d.ts +7 -5
  86. package/dist/index.js +6 -4
  87. package/dist/static-functions.cjs +8 -3
  88. package/dist/static-functions.d.cts +3 -2
  89. package/dist/static-functions.d.ts +3 -2
  90. package/dist/static-functions.js +3 -2
  91. package/dist/types/Cell.d.cts +3 -1
  92. package/dist/types/Cell.d.ts +3 -1
  93. package/dist/types/Column.d.cts +4 -2
  94. package/dist/types/Column.d.ts +4 -2
  95. package/dist/types/ColumnDef.d.cts +5 -3
  96. package/dist/types/ColumnDef.d.ts +5 -3
  97. package/dist/types/Row.d.cts +3 -1
  98. package/dist/types/Row.d.ts +3 -1
  99. package/dist/types/RowModel.d.cts +1 -1
  100. package/dist/types/RowModel.d.ts +1 -1
  101. package/dist/types/RowModelFns.d.cts +3 -3
  102. package/dist/types/RowModelFns.d.ts +3 -3
  103. package/dist/types/Table.d.cts +1 -1
  104. package/dist/types/Table.d.ts +1 -1
  105. package/dist/types/TableFeatures.d.cts +4 -4
  106. package/dist/types/TableFeatures.d.ts +4 -4
  107. package/dist/types/TableOptions.d.cts +5 -3
  108. package/dist/types/TableOptions.d.ts +5 -3
  109. package/dist/types/TableState.d.cts +1 -1
  110. package/dist/types/TableState.d.ts +1 -1
  111. package/dist/worker/initTableWorker.cjs.map +1 -1
  112. package/dist/worker/initTableWorker.js.map +1 -1
  113. package/package.json +1 -1
  114. package/skills/aggregation/SKILL.md +131 -0
  115. package/skills/api-not-found/SKILL.md +1 -1
  116. package/skills/client-vs-server/SKILL.md +1 -1
  117. package/skills/column-faceting/SKILL.md +1 -1
  118. package/skills/column-filtering/SKILL.md +1 -1
  119. package/skills/column-ordering/SKILL.md +1 -1
  120. package/skills/column-pinning/SKILL.md +1 -1
  121. package/skills/column-resizing/SKILL.md +1 -1
  122. package/skills/column-sizing/SKILL.md +1 -1
  123. package/skills/column-visibility/SKILL.md +1 -1
  124. package/skills/core/SKILL.md +1 -1
  125. package/skills/custom-features/SKILL.md +1 -1
  126. package/skills/expanding/SKILL.md +1 -1
  127. package/skills/global-filtering/SKILL.md +1 -1
  128. package/skills/grouping/SKILL.md +12 -18
  129. package/skills/migrate-v8-to-v9/SKILL.md +15 -2
  130. package/skills/pagination/SKILL.md +1 -1
  131. package/skills/row-pinning/SKILL.md +1 -1
  132. package/skills/row-selection/SKILL.md +1 -1
  133. package/skills/sorting/SKILL.md +1 -1
  134. package/skills/table-features/SKILL.md +5 -2
  135. package/skills/typescript/SKILL.md +1 -1
  136. package/src/core/row-models/coreRowModelsFeature.utils.ts +1 -1
  137. package/src/features/aggregation/aggregationFeature.ts +59 -0
  138. package/src/features/aggregation/aggregationFeature.types.ts +312 -0
  139. package/src/features/aggregation/aggregationFeature.utils.ts +401 -0
  140. package/src/features/aggregation/aggregationFns.ts +336 -0
  141. package/src/features/column-filtering/columnFilteringFeature.types.ts +1 -1
  142. package/src/{fns → features/column-filtering}/filterFns.ts +4 -4
  143. package/src/features/column-grouping/columnGroupingFeature.ts +1 -20
  144. package/src/features/column-grouping/columnGroupingFeature.types.ts +4 -141
  145. package/src/features/column-grouping/columnGroupingFeature.utils.ts +1 -122
  146. package/src/features/column-grouping/createGroupedRowModel.ts +32 -41
  147. package/src/features/global-filtering/globalFilteringFeature.utils.ts +1 -1
  148. package/src/features/row-sorting/rowSortingFeature.types.ts +1 -1
  149. package/src/features/row-sorting/rowSortingFeature.utils.ts +1 -1
  150. package/src/{fns → features/row-sorting}/sortFns.ts +4 -7
  151. package/src/features/stockFeatures.ts +3 -0
  152. package/src/index.ts +7 -8
  153. package/src/static-functions.ts +1 -0
  154. package/src/types/Cell.ts +2 -0
  155. package/src/types/Column.ts +3 -1
  156. package/src/types/ColumnDef.ts +6 -3
  157. package/src/types/Row.ts +2 -0
  158. package/src/types/RowModelFns.ts +3 -3
  159. package/src/types/TableFeatures.ts +4 -4
  160. package/src/types/TableOptions.ts +5 -1
  161. package/src/worker/initTableWorker.ts +1 -1
  162. package/dist/fns/aggregationFns.cjs +0 -234
  163. package/dist/fns/aggregationFns.cjs.map +0 -1
  164. package/dist/fns/aggregationFns.d.cts +0 -139
  165. package/dist/fns/aggregationFns.d.ts +0 -139
  166. package/dist/fns/aggregationFns.js +0 -221
  167. package/dist/fns/aggregationFns.js.map +0 -1
  168. package/dist/fns/filterFns.cjs.map +0 -1
  169. package/dist/fns/filterFns.js.map +0 -1
  170. package/dist/fns/sortFns.cjs.map +0 -1
  171. package/src/fns/aggregationFns.ts +0 -303
@@ -1,83 +1,14 @@
1
- import { CellData, OnChangeFn, RowData, TransformDataValueFn, Updater } from "../../types/type-utils.cjs";
2
- import { BuiltInAggregationFn } from "../../fns/aggregationFns.cjs";
3
- import { ColumnDefTemplate } from "../../types/ColumnDef.cjs";
4
- import { Cell } from "../../types/Cell.cjs";
1
+ import { OnChangeFn, RowData, Updater } from "../../types/type-utils.cjs";
5
2
  import { Row } from "../../types/Row.cjs";
6
3
  import { RowModel } from "../../core/row-models/coreRowModelsFeature.types.cjs";
7
- import { IsAny, TableFeatures } from "../../types/TableFeatures.cjs";
4
+ import { TableFeatures } from "../../types/TableFeatures.cjs";
8
5
 
9
6
  //#region src/features/column-grouping/columnGroupingFeature.types.d.ts
10
7
  type GroupingState = Array<string>;
11
8
  interface TableState_ColumnGrouping {
12
9
  grouping: GroupingState;
13
10
  }
14
- interface RowModelFns_ColumnGrouping<in out TFeatures extends TableFeatures, in out TData extends RowData> {
15
- aggregationFns: Record<string, AggregationFn<TFeatures, TData>>;
16
- }
17
- interface AggregationFns {}
18
- interface AggregationFn<in out TFeatures extends TableFeatures, in out TData extends RowData> {
19
- (columnId: string, leafRows: Array<Row<TFeatures, TData>>, childRows: Array<Row<TFeatures, TData>>): any;
20
- /**
21
- * Normalizes each row's value before it is aggregated. Only honored by
22
- * aggregation functions built with `constructAggregationFn` (including the
23
- * value-based built-in aggregation functions).
24
- */
25
- resolveDataValue?: TransformDataValueFn;
26
- }
27
- /**
28
- * The definition object accepted by `constructAggregationFn`.
29
- *
30
- * `aggregate` is a value-level reducer: it receives the rows' (resolved)
31
- * values instead of the rows themselves, so normalization concerns stay in
32
- * `resolveDataValue`.
33
- */
34
- interface AggregationFnDef<in out TFeatures extends TableFeatures, in out TData extends RowData> {
35
- aggregate: (values: Array<any>, rows: Array<Row<TFeatures, TData>>, columnId: string) => any;
36
- /**
37
- * Which of the group's rows feed the aggregation: all of its `leafRows`
38
- * (the default) or its immediate `childRows`. For nested groups, child rows
39
- * expose already-aggregated values, which is faster for reaggregatable
40
- * computations like sums and extents.
41
- */
42
- fromRows?: 'leafRows' | 'childRows';
43
- resolveDataValue?: TransformDataValueFn;
44
- }
45
- /**
46
- * The shape returned by `constructAggregationFn`: an `AggregationFn` with its
47
- * definition attached, so variants can be built by spreading it into another
48
- * `constructAggregationFn` call.
49
- *
50
- * The call signature is generic so a created aggregation function can be used
51
- * with any table's rows, regardless of the feature set it was defined
52
- * against.
53
- */
54
- interface CreatedAggregationFn<in out TFeatures extends TableFeatures, in out TData extends RowData> extends AggregationFnDef<TFeatures, TData> {
55
- <TRowFeatures extends TableFeatures, TRowData extends RowData>(columnId: string, leafRows: Array<Row<TRowFeatures, TRowData>>, childRows: Array<Row<TRowFeatures, TRowData>>): any;
56
- }
57
- type CustomAggregationFns<TFeatures extends TableFeatures, TData extends RowData> = Record<string, AggregationFn<TFeatures, TData>>;
58
- /**
59
- * Resolves the valid string names for `columnDef.aggregationFn` for a feature
60
- * set.
61
- *
62
- * When the features object declares an `aggregationFns` registry
63
- * (`tableFeatures({ ..., aggregationFns })`), its keys are the only valid
64
- * names; a name is only assignable if an aggregation function is actually
65
- * registered for it. Otherwise this falls back to the global
66
- * declaration-merged `AggregationFns` interface.
67
- */
68
- type ExtractAggregationFnKeys<TFeatures extends TableFeatures> = IsAny<TFeatures> extends true ? keyof AggregationFns | BuiltInAggregationFn : TFeatures extends {
69
- aggregationFns: infer TAggregationFns extends object;
70
- } ? Extract<keyof TAggregationFns, string> : keyof AggregationFns;
71
- type AggregationFnOption<TFeatures extends TableFeatures, TData extends RowData> = 'auto' | ExtractAggregationFnKeys<TFeatures> | AggregationFn<TFeatures, TData>;
72
- interface ColumnDef_ColumnGrouping<in out TFeatures extends TableFeatures, in out TData extends RowData, TValue extends CellData = CellData> {
73
- /**
74
- * The cell to display each row for the column if the cell is an aggregate. If a function is passed, it will be passed a props object with the context of the cell and should return the property type for your adapter (the exact type depends on the adapter being used).
75
- */
76
- aggregatedCell?: ColumnDefTemplate<ReturnType<Cell<TFeatures, TData, TValue>['getContext']>>;
77
- /**
78
- * The resolved aggregation function for the column.
79
- */
80
- aggregationFn?: AggregationFnOption<TFeatures, TData>;
11
+ interface ColumnDef_ColumnGrouping<in out TFeatures extends TableFeatures, in out TData extends RowData> {
81
12
  /**
82
13
  * Allows this column to be added to grouping state.
83
14
  *
@@ -92,15 +23,7 @@ interface ColumnDef_ColumnGrouping<in out TFeatures extends TableFeatures, in ou
92
23
  */
93
24
  getGroupingValue?: (originalRow: TData, index: number, row: Row<TFeatures, TData>) => any;
94
25
  }
95
- interface Column_ColumnGrouping<in out TFeatures extends TableFeatures, in out TData extends RowData> {
96
- /**
97
- * Returns the aggregation function for the column.
98
- */
99
- getAggregationFn: () => AggregationFn<TFeatures, TData> | undefined;
100
- /**
101
- * Returns the automatically inferred aggregation function for the column.
102
- */
103
- getAutoAggregationFn: () => AggregationFn<TFeatures, TData> | undefined;
26
+ interface Column_ColumnGrouping {
104
27
  /**
105
28
  * Checks whether this column can currently be grouped.
106
29
  */
@@ -142,10 +65,6 @@ interface Row_ColumnGrouping {
142
65
  groupingValue?: unknown;
143
66
  }
144
67
  interface Cell_ColumnGrouping {
145
- /**
146
- * Checks whether this cell should render an aggregated value.
147
- */
148
- getIsAggregated: () => boolean;
149
68
  /**
150
69
  * Checks whether this cell represents the active grouping column.
151
70
  */
@@ -194,7 +113,7 @@ interface Table_ColumnGrouping<in out _TFeatures extends TableFeatures, in out _
194
113
  }
195
114
  interface Table_RowModels_Grouped<in out TFeatures extends TableFeatures, in out TData extends RowData> {
196
115
  /**
197
- * Resolves the row model after grouping and aggregation have been applied.
116
+ * Resolves the row model after grouping has been applied.
198
117
  */
199
118
  getGroupedRowModel: () => RowModel<TFeatures, TData>;
200
119
  /**
@@ -206,5 +125,5 @@ interface CachedRowModel_Grouped<in out TFeatures extends TableFeatures, in out
206
125
  groupedRowModel: () => RowModel<TFeatures, TData>;
207
126
  }
208
127
  //#endregion
209
- export { AggregationFn, AggregationFnDef, AggregationFnOption, AggregationFns, CachedRowModel_Grouped, Cell_ColumnGrouping, ColumnDef_ColumnGrouping, ColumnDefaultOptions, Column_ColumnGrouping, CreatedAggregationFn, CustomAggregationFns, ExtractAggregationFnKeys, GroupingColumnMode, GroupingState, RowModelFns_ColumnGrouping, Row_ColumnGrouping, TableOptions_ColumnGrouping, TableState_ColumnGrouping, Table_ColumnGrouping, Table_RowModels_Grouped };
128
+ export { CachedRowModel_Grouped, Cell_ColumnGrouping, ColumnDef_ColumnGrouping, ColumnDefaultOptions, Column_ColumnGrouping, GroupingColumnMode, GroupingState, Row_ColumnGrouping, TableOptions_ColumnGrouping, TableState_ColumnGrouping, Table_ColumnGrouping, Table_RowModels_Grouped };
210
129
  //# sourceMappingURL=columnGroupingFeature.types.d.cts.map
@@ -1,83 +1,14 @@
1
- import { CellData, OnChangeFn, RowData, TransformDataValueFn, Updater } from "../../types/type-utils.js";
2
- import { BuiltInAggregationFn } from "../../fns/aggregationFns.js";
3
- import { ColumnDefTemplate } from "../../types/ColumnDef.js";
4
- import { Cell } from "../../types/Cell.js";
1
+ import { OnChangeFn, RowData, Updater } from "../../types/type-utils.js";
5
2
  import { Row } from "../../types/Row.js";
6
3
  import { RowModel } from "../../core/row-models/coreRowModelsFeature.types.js";
7
- import { IsAny, TableFeatures } from "../../types/TableFeatures.js";
4
+ import { TableFeatures } from "../../types/TableFeatures.js";
8
5
 
9
6
  //#region src/features/column-grouping/columnGroupingFeature.types.d.ts
10
7
  type GroupingState = Array<string>;
11
8
  interface TableState_ColumnGrouping {
12
9
  grouping: GroupingState;
13
10
  }
14
- interface RowModelFns_ColumnGrouping<in out TFeatures extends TableFeatures, in out TData extends RowData> {
15
- aggregationFns: Record<string, AggregationFn<TFeatures, TData>>;
16
- }
17
- interface AggregationFns {}
18
- interface AggregationFn<in out TFeatures extends TableFeatures, in out TData extends RowData> {
19
- (columnId: string, leafRows: Array<Row<TFeatures, TData>>, childRows: Array<Row<TFeatures, TData>>): any;
20
- /**
21
- * Normalizes each row's value before it is aggregated. Only honored by
22
- * aggregation functions built with `constructAggregationFn` (including the
23
- * value-based built-in aggregation functions).
24
- */
25
- resolveDataValue?: TransformDataValueFn;
26
- }
27
- /**
28
- * The definition object accepted by `constructAggregationFn`.
29
- *
30
- * `aggregate` is a value-level reducer: it receives the rows' (resolved)
31
- * values instead of the rows themselves, so normalization concerns stay in
32
- * `resolveDataValue`.
33
- */
34
- interface AggregationFnDef<in out TFeatures extends TableFeatures, in out TData extends RowData> {
35
- aggregate: (values: Array<any>, rows: Array<Row<TFeatures, TData>>, columnId: string) => any;
36
- /**
37
- * Which of the group's rows feed the aggregation: all of its `leafRows`
38
- * (the default) or its immediate `childRows`. For nested groups, child rows
39
- * expose already-aggregated values, which is faster for reaggregatable
40
- * computations like sums and extents.
41
- */
42
- fromRows?: 'leafRows' | 'childRows';
43
- resolveDataValue?: TransformDataValueFn;
44
- }
45
- /**
46
- * The shape returned by `constructAggregationFn`: an `AggregationFn` with its
47
- * definition attached, so variants can be built by spreading it into another
48
- * `constructAggregationFn` call.
49
- *
50
- * The call signature is generic so a created aggregation function can be used
51
- * with any table's rows, regardless of the feature set it was defined
52
- * against.
53
- */
54
- interface CreatedAggregationFn<in out TFeatures extends TableFeatures, in out TData extends RowData> extends AggregationFnDef<TFeatures, TData> {
55
- <TRowFeatures extends TableFeatures, TRowData extends RowData>(columnId: string, leafRows: Array<Row<TRowFeatures, TRowData>>, childRows: Array<Row<TRowFeatures, TRowData>>): any;
56
- }
57
- type CustomAggregationFns<TFeatures extends TableFeatures, TData extends RowData> = Record<string, AggregationFn<TFeatures, TData>>;
58
- /**
59
- * Resolves the valid string names for `columnDef.aggregationFn` for a feature
60
- * set.
61
- *
62
- * When the features object declares an `aggregationFns` registry
63
- * (`tableFeatures({ ..., aggregationFns })`), its keys are the only valid
64
- * names; a name is only assignable if an aggregation function is actually
65
- * registered for it. Otherwise this falls back to the global
66
- * declaration-merged `AggregationFns` interface.
67
- */
68
- type ExtractAggregationFnKeys<TFeatures extends TableFeatures> = IsAny<TFeatures> extends true ? keyof AggregationFns | BuiltInAggregationFn : TFeatures extends {
69
- aggregationFns: infer TAggregationFns extends object;
70
- } ? Extract<keyof TAggregationFns, string> : keyof AggregationFns;
71
- type AggregationFnOption<TFeatures extends TableFeatures, TData extends RowData> = 'auto' | ExtractAggregationFnKeys<TFeatures> | AggregationFn<TFeatures, TData>;
72
- interface ColumnDef_ColumnGrouping<in out TFeatures extends TableFeatures, in out TData extends RowData, TValue extends CellData = CellData> {
73
- /**
74
- * The cell to display each row for the column if the cell is an aggregate. If a function is passed, it will be passed a props object with the context of the cell and should return the property type for your adapter (the exact type depends on the adapter being used).
75
- */
76
- aggregatedCell?: ColumnDefTemplate<ReturnType<Cell<TFeatures, TData, TValue>['getContext']>>;
77
- /**
78
- * The resolved aggregation function for the column.
79
- */
80
- aggregationFn?: AggregationFnOption<TFeatures, TData>;
11
+ interface ColumnDef_ColumnGrouping<in out TFeatures extends TableFeatures, in out TData extends RowData> {
81
12
  /**
82
13
  * Allows this column to be added to grouping state.
83
14
  *
@@ -92,15 +23,7 @@ interface ColumnDef_ColumnGrouping<in out TFeatures extends TableFeatures, in ou
92
23
  */
93
24
  getGroupingValue?: (originalRow: TData, index: number, row: Row<TFeatures, TData>) => any;
94
25
  }
95
- interface Column_ColumnGrouping<in out TFeatures extends TableFeatures, in out TData extends RowData> {
96
- /**
97
- * Returns the aggregation function for the column.
98
- */
99
- getAggregationFn: () => AggregationFn<TFeatures, TData> | undefined;
100
- /**
101
- * Returns the automatically inferred aggregation function for the column.
102
- */
103
- getAutoAggregationFn: () => AggregationFn<TFeatures, TData> | undefined;
26
+ interface Column_ColumnGrouping {
104
27
  /**
105
28
  * Checks whether this column can currently be grouped.
106
29
  */
@@ -142,10 +65,6 @@ interface Row_ColumnGrouping {
142
65
  groupingValue?: unknown;
143
66
  }
144
67
  interface Cell_ColumnGrouping {
145
- /**
146
- * Checks whether this cell should render an aggregated value.
147
- */
148
- getIsAggregated: () => boolean;
149
68
  /**
150
69
  * Checks whether this cell represents the active grouping column.
151
70
  */
@@ -194,7 +113,7 @@ interface Table_ColumnGrouping<in out _TFeatures extends TableFeatures, in out _
194
113
  }
195
114
  interface Table_RowModels_Grouped<in out TFeatures extends TableFeatures, in out TData extends RowData> {
196
115
  /**
197
- * Resolves the row model after grouping and aggregation have been applied.
116
+ * Resolves the row model after grouping has been applied.
198
117
  */
199
118
  getGroupedRowModel: () => RowModel<TFeatures, TData>;
200
119
  /**
@@ -206,5 +125,5 @@ interface CachedRowModel_Grouped<in out TFeatures extends TableFeatures, in out
206
125
  groupedRowModel: () => RowModel<TFeatures, TData>;
207
126
  }
208
127
  //#endregion
209
- export { AggregationFn, AggregationFnDef, AggregationFnOption, AggregationFns, CachedRowModel_Grouped, Cell_ColumnGrouping, ColumnDef_ColumnGrouping, ColumnDefaultOptions, Column_ColumnGrouping, CreatedAggregationFn, CustomAggregationFns, ExtractAggregationFnKeys, GroupingColumnMode, GroupingState, RowModelFns_ColumnGrouping, Row_ColumnGrouping, TableOptions_ColumnGrouping, TableState_ColumnGrouping, Table_ColumnGrouping, Table_RowModels_Grouped };
128
+ export { CachedRowModel_Grouped, Cell_ColumnGrouping, ColumnDef_ColumnGrouping, ColumnDefaultOptions, Column_ColumnGrouping, GroupingColumnMode, GroupingState, Row_ColumnGrouping, TableOptions_ColumnGrouping, TableState_ColumnGrouping, Table_ColumnGrouping, Table_RowModels_Grouped };
210
129
  //# sourceMappingURL=columnGroupingFeature.types.d.ts.map
@@ -91,53 +91,6 @@ function column_getToggleGroupingHandler(column) {
91
91
  };
92
92
  }
93
93
  /**
94
- * Chooses a built-in aggregation function from the first core row value.
95
- *
96
- * Numeric columns default to `sum`, date-like values default to `extent`, and
97
- * other value types leave aggregation unspecified.
98
- *
99
- * The chosen aggregation function is looked up in the table's
100
- * `aggregationFns` registry. When it is not registered there, this returns
101
- * `undefined` and warns in development instead of substituting a different
102
- * aggregation function.
103
- *
104
- * @example
105
- * ```ts
106
- * const aggregationFn = column_getAutoAggregationFn(column)
107
- * ```
108
- */
109
- function column_getAutoAggregationFn(column) {
110
- const aggregationFns = column.table._rowModelFns.aggregationFns;
111
- const value = column.table.getCoreRowModel().flatRows[0]?.getValue(column.id);
112
- let aggregationFnName;
113
- if (typeof value === "number") aggregationFnName = "sum";
114
- else if (Object.prototype.toString.call(value) === "[object Date]") aggregationFnName = "extent";
115
- if (!aggregationFnName) return;
116
- const aggregationFn = aggregationFns?.[aggregationFnName];
117
- if (process.env.NODE_ENV === "development" && !aggregationFn) console.warn(`aggregationFn '${aggregationFnName}' (auto) for column '${column.id}' is not registered`);
118
- return aggregationFn;
119
- }
120
- /**
121
- * Resolves the aggregation function configured for a column.
122
- *
123
- * Function-valued `columnDef.aggregationFn` is returned directly, `'auto'`
124
- * delegates to `column_getAutoAggregationFn`, and string values are looked up in
125
- * the table's aggregation function registry.
126
- *
127
- * @example
128
- * ```ts
129
- * const aggregationFn = column_getAggregationFn(column)
130
- * ```
131
- */
132
- function column_getAggregationFn(column) {
133
- const aggregationFns = column.table._rowModelFns.aggregationFns;
134
- if (require_utils.isFunction(column.columnDef.aggregationFn)) return column.columnDef.aggregationFn;
135
- if (column.columnDef.aggregationFn === "auto") return column_getAutoAggregationFn(column);
136
- const aggregationFn = aggregationFns?.[column.columnDef.aggregationFn];
137
- if (process.env.NODE_ENV === "development" && !aggregationFn && column.columnDef.aggregationFn != null) console.warn(`aggregationFn '${String(column.columnDef.aggregationFn)}' for column '${column.id}' is not registered`);
138
- return aggregationFn;
139
- }
140
- /**
141
94
  * Routes a grouping updater through the table's grouping change handler.
142
95
  *
143
96
  * The updater may be a next `GroupingState` array or a function of the previous
@@ -225,27 +178,10 @@ function cell_getIsGrouped(cell) {
225
178
  function cell_getIsPlaceholder(cell) {
226
179
  return !cell_getIsGrouped(cell) && column_getIsGrouped(cell.column);
227
180
  }
228
- /**
229
- * Checks whether this cell should render an aggregated value.
230
- *
231
- * Aggregated cells are non-placeholder, non-grouped cells on rows that have
232
- * subRows.
233
- *
234
- * @example
235
- * ```ts
236
- * const isAggregated = cell_getIsAggregated(cell)
237
- * ```
238
- */
239
- function cell_getIsAggregated(cell) {
240
- return !cell_getIsGrouped(cell) && !cell_getIsPlaceholder(cell) && !!cell.row.subRows.length;
241
- }
242
181
 
243
182
  //#endregion
244
- exports.cell_getIsAggregated = cell_getIsAggregated;
245
183
  exports.cell_getIsGrouped = cell_getIsGrouped;
246
184
  exports.cell_getIsPlaceholder = cell_getIsPlaceholder;
247
- exports.column_getAggregationFn = column_getAggregationFn;
248
- exports.column_getAutoAggregationFn = column_getAutoAggregationFn;
249
185
  exports.column_getCanGroup = column_getCanGroup;
250
186
  exports.column_getGroupedIndex = column_getGroupedIndex;
251
187
  exports.column_getIsGrouped = column_getIsGrouped;
@@ -1 +1 @@
1
- {"version":3,"file":"columnGroupingFeature.utils.cjs","names":["isFunction","cloneState","hasOwn"],"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 * The chosen aggregation function is looked up in the table's\n * `aggregationFns` registry. When it is not registered there, this returns\n * `undefined` and warns in development instead of substituting a different\n * aggregation function.\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 let aggregationFnName: string | undefined\n\n if (typeof value === 'number') {\n aggregationFnName = 'sum'\n } else if (Object.prototype.toString.call(value) === '[object Date]') {\n aggregationFnName = 'extent'\n }\n\n if (!aggregationFnName) {\n return undefined\n }\n\n const aggregationFn = aggregationFns?.[aggregationFnName]\n\n if (process.env.NODE_ENV === 'development' && !aggregationFn) {\n console.warn(\n `aggregationFn '${aggregationFnName}' (auto) for column '${column.id}' is not registered`,\n )\n }\n\n return aggregationFn\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 if (isFunction(column.columnDef.aggregationFn)) {\n return column.columnDef.aggregationFn\n }\n\n if (column.columnDef.aggregationFn === 'auto') {\n return column_getAutoAggregationFn(column)\n }\n\n const aggregationFn =\n aggregationFns?.[column.columnDef.aggregationFn as string]\n\n if (\n process.env.NODE_ENV === 'development' &&\n !aggregationFn &&\n column.columnDef.aggregationFn != null\n ) {\n console.warn(\n `aggregationFn '${String(column.columnDef.aggregationFn)}' for column '${column.id}' is not registered`,\n )\n }\n\n return aggregationFn\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 row.index,\n row,\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,CAAC,OAAO,MAAM,MAAM,UAAU,IAAI,CAAC,EAAE,SAAS,OAAO,EAAE;AACjE;;;;;;;;;;;AAYA,SAAgB,uBAId,QAA2D;CAC3D,OAAO,OAAO,MAAM,MAAM,UAAU,IAAI,CAAC,EAAE,QAAQ,OAAO,EAAE,KAAK;AACnE;;;;;;;;;;;AAYA,SAAgB,gCAId,QAAmD;CACnD,MAAM,WAAW,mBAAmB,MAAM;CAE1C,aAAa;EACX,IAAI,CAAC,UAAU;EACf,sBAAsB,MAAM;CAC9B;AACF;;;;;;;;;;;;;;;;;AAkBA,SAAgB,4BAId,QAAmD;CACnD,MAAM,iBAEU,OAAO,MAAM,aAAa;CAI1C,MAAM,QAFW,OAAO,MAAM,gBAAgB,CAAC,CAAC,SAAS,EAEnC,EAAE,SAAS,OAAO,EAAE;CAE1C,IAAI;CAEJ,IAAI,OAAO,UAAU,UACnB,oBAAoB;MACf,IAAI,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM,iBACnD,oBAAoB;CAGtB,IAAI,CAAC,mBACH;CAGF,MAAM,gBAAgB,iBAAiB;CAEvC,IAAI,QAAQ,IAAI,aAAa,iBAAiB,CAAC,eAC7C,QAAQ,KACN,kBAAkB,kBAAkB,uBAAuB,OAAO,GAAG,oBACvE;CAGF,OAAO;AACT;;;;;;;;;;;;;AAcA,SAAgB,wBAId,QAAmD;CACnD,MAAM,iBAEU,OAAO,MAAM,aAAa;CAE1C,IAAIA,yBAAW,OAAO,UAAU,aAAa,GAC3C,OAAO,OAAO,UAAU;CAG1B,IAAI,OAAO,UAAU,kBAAkB,QACrC,OAAO,4BAA4B,MAAM;CAG3C,MAAM,gBACJ,iBAAiB,OAAO,UAAU;CAEpC,IACE,QAAQ,IAAI,aAAa,iBACzB,CAAC,iBACD,OAAO,UAAU,iBAAiB,MAElC,QAAQ,KACN,kBAAkB,OAAO,OAAO,UAAU,aAAa,EAAE,gBAAgB,OAAO,GAAG,oBACrF;CAGF,OAAO;AACT;;;;;;;;;;;;AAaA,SAAgB,kBAGd,OAAyC,SAAiC;CAC1E,MAAM,QAAQ,mBAAmB,OAAO;AAC1C;;;;;;;;;;;;;AAcA,SAAgB,oBAGd,OAAyC,cAAwB;CACjE,kBACE,OACA,eAAe,CAAC,IAAIC,yBAAW,MAAM,aAAa,YAAY,CAAC,CAAC,CAClE;AACF;;;;;;;;;;;AAYA,SAAgB,iBAGd,KAA0D;CAC1D,OAAO,CAAC,CAAC,IAAI;AACf;;;;;;;;;;;;AAaA,SAAgB,qBAGd,KAA0D,UAAkB;CAC5E,IAAI,IAAI,wBAAwBC,qBAAO,IAAI,sBAAsB,QAAQ,GACvE,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,UACJ,IAAI,OACJ,GACF;CAGF,OAAO,IAAI,uBAAuB;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.cjs","names":["cloneState","hasOwn"],"sources":["../../../src/features/column-grouping/columnGroupingFeature.utils.ts"],"sourcesContent":["import { cloneState, hasOwn } 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 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 * 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 row.index,\n row,\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"],"mappings":";;;;;;;;;;;;;;AAuBA,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,CAAC,OAAO,MAAM,MAAM,UAAU,IAAI,CAAC,EAAE,SAAS,OAAO,EAAE;AACjE;;;;;;;;;;;AAYA,SAAgB,uBAId,QAA2D;CAC3D,OAAO,OAAO,MAAM,MAAM,UAAU,IAAI,CAAC,EAAE,QAAQ,OAAO,EAAE,KAAK;AACnE;;;;;;;;;;;AAYA,SAAgB,gCAId,QAAmD;CACnD,MAAM,WAAW,mBAAmB,MAAM;CAE1C,aAAa;EACX,IAAI,CAAC,UAAU;EACf,sBAAsB,MAAM;CAC9B;AACF;;;;;;;;;;;;AAaA,SAAgB,kBAGd,OAAyC,SAAiC;CAC1E,MAAM,QAAQ,mBAAmB,OAAO;AAC1C;;;;;;;;;;;;;AAcA,SAAgB,oBAGd,OAAyC,cAAwB;CACjE,kBACE,OACA,eAAe,CAAC,IAAIA,yBAAW,MAAM,aAAa,YAAY,CAAC,CAAC,CAClE;AACF;;;;;;;;;;;AAYA,SAAgB,iBAGd,KAA0D;CAC1D,OAAO,CAAC,CAAC,IAAI;AACf;;;;;;;;;;;;AAaA,SAAgB,qBAGd,KAA0D,UAAkB;CAC5E,IAAI,IAAI,wBAAwBC,qBAAO,IAAI,sBAAsB,QAAQ,GACvE,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,UACJ,IAAI,OACJ,GACF;CAGF,OAAO,IAAI,uBAAuB;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"}
@@ -1,5 +1,5 @@
1
1
  import { CellData, RowData, Updater } from "../../types/type-utils.cjs";
2
- import { AggregationFn, GroupingState, Row_ColumnGrouping } from "./columnGroupingFeature.types.cjs";
2
+ import { GroupingState, Row_ColumnGrouping } from "./columnGroupingFeature.types.cjs";
3
3
  import { Cell } from "../../types/Cell.cjs";
4
4
  import { Row } from "../../types/Row.cjs";
5
5
  import { Table } from "../../types/Table.cjs";
@@ -77,36 +77,6 @@ declare function column_getGroupedIndex<TFeatures extends TableFeatures, TData e
77
77
  * ```
78
78
  */
79
79
  declare function column_getToggleGroupingHandler<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): () => void;
80
- /**
81
- * Chooses a built-in aggregation function from the first core row value.
82
- *
83
- * Numeric columns default to `sum`, date-like values default to `extent`, and
84
- * other value types leave aggregation unspecified.
85
- *
86
- * The chosen aggregation function is looked up in the table's
87
- * `aggregationFns` registry. When it is not registered there, this returns
88
- * `undefined` and warns in development instead of substituting a different
89
- * aggregation function.
90
- *
91
- * @example
92
- * ```ts
93
- * const aggregationFn = column_getAutoAggregationFn(column)
94
- * ```
95
- */
96
- declare function column_getAutoAggregationFn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): AggregationFn<TFeatures, TData> | undefined;
97
- /**
98
- * Resolves the aggregation function configured for a column.
99
- *
100
- * Function-valued `columnDef.aggregationFn` is returned directly, `'auto'`
101
- * delegates to `column_getAutoAggregationFn`, and string values are looked up in
102
- * the table's aggregation function registry.
103
- *
104
- * @example
105
- * ```ts
106
- * const aggregationFn = column_getAggregationFn(column)
107
- * ```
108
- */
109
- declare function column_getAggregationFn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): AggregationFn<TFeatures, TData> | undefined;
110
80
  /**
111
81
  * Routes a grouping updater through the table's grouping change handler.
112
82
  *
@@ -178,18 +148,6 @@ declare function cell_getIsGrouped<TFeatures extends TableFeatures, TData extend
178
148
  * ```
179
149
  */
180
150
  declare function cell_getIsPlaceholder<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(cell: Cell<TFeatures, TData, TValue>): boolean;
181
- /**
182
- * Checks whether this cell should render an aggregated value.
183
- *
184
- * Aggregated cells are non-placeholder, non-grouped cells on rows that have
185
- * subRows.
186
- *
187
- * @example
188
- * ```ts
189
- * const isAggregated = cell_getIsAggregated(cell)
190
- * ```
191
- */
192
- declare function cell_getIsAggregated<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(cell: Cell<TFeatures, TData, TValue>): boolean;
193
151
  //#endregion
194
- export { cell_getIsAggregated, cell_getIsGrouped, cell_getIsPlaceholder, column_getAggregationFn, column_getAutoAggregationFn, column_getCanGroup, column_getGroupedIndex, column_getIsGrouped, column_getToggleGroupingHandler, column_toggleGrouping, getDefaultGroupingState, row_getGroupingValue, row_getIsGrouped, table_resetGrouping, table_setGrouping };
152
+ export { cell_getIsGrouped, cell_getIsPlaceholder, column_getCanGroup, column_getGroupedIndex, column_getIsGrouped, column_getToggleGroupingHandler, column_toggleGrouping, getDefaultGroupingState, row_getGroupingValue, row_getIsGrouped, table_resetGrouping, table_setGrouping };
195
153
  //# sourceMappingURL=columnGroupingFeature.utils.d.cts.map
@@ -1,5 +1,5 @@
1
1
  import { CellData, RowData, Updater } from "../../types/type-utils.js";
2
- import { AggregationFn, GroupingState, Row_ColumnGrouping } from "./columnGroupingFeature.types.js";
2
+ import { GroupingState, Row_ColumnGrouping } from "./columnGroupingFeature.types.js";
3
3
  import { Cell } from "../../types/Cell.js";
4
4
  import { Row } from "../../types/Row.js";
5
5
  import { Table } from "../../types/Table.js";
@@ -77,36 +77,6 @@ declare function column_getGroupedIndex<TFeatures extends TableFeatures, TData e
77
77
  * ```
78
78
  */
79
79
  declare function column_getToggleGroupingHandler<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): () => void;
80
- /**
81
- * Chooses a built-in aggregation function from the first core row value.
82
- *
83
- * Numeric columns default to `sum`, date-like values default to `extent`, and
84
- * other value types leave aggregation unspecified.
85
- *
86
- * The chosen aggregation function is looked up in the table's
87
- * `aggregationFns` registry. When it is not registered there, this returns
88
- * `undefined` and warns in development instead of substituting a different
89
- * aggregation function.
90
- *
91
- * @example
92
- * ```ts
93
- * const aggregationFn = column_getAutoAggregationFn(column)
94
- * ```
95
- */
96
- declare function column_getAutoAggregationFn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): AggregationFn<TFeatures, TData> | undefined;
97
- /**
98
- * Resolves the aggregation function configured for a column.
99
- *
100
- * Function-valued `columnDef.aggregationFn` is returned directly, `'auto'`
101
- * delegates to `column_getAutoAggregationFn`, and string values are looked up in
102
- * the table's aggregation function registry.
103
- *
104
- * @example
105
- * ```ts
106
- * const aggregationFn = column_getAggregationFn(column)
107
- * ```
108
- */
109
- declare function column_getAggregationFn<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column<TFeatures, TData, TValue>): AggregationFn<TFeatures, TData> | undefined;
110
80
  /**
111
81
  * Routes a grouping updater through the table's grouping change handler.
112
82
  *
@@ -178,18 +148,6 @@ declare function cell_getIsGrouped<TFeatures extends TableFeatures, TData extend
178
148
  * ```
179
149
  */
180
150
  declare function cell_getIsPlaceholder<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(cell: Cell<TFeatures, TData, TValue>): boolean;
181
- /**
182
- * Checks whether this cell should render an aggregated value.
183
- *
184
- * Aggregated cells are non-placeholder, non-grouped cells on rows that have
185
- * subRows.
186
- *
187
- * @example
188
- * ```ts
189
- * const isAggregated = cell_getIsAggregated(cell)
190
- * ```
191
- */
192
- declare function cell_getIsAggregated<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(cell: Cell<TFeatures, TData, TValue>): boolean;
193
151
  //#endregion
194
- export { cell_getIsAggregated, cell_getIsGrouped, cell_getIsPlaceholder, column_getAggregationFn, column_getAutoAggregationFn, column_getCanGroup, column_getGroupedIndex, column_getIsGrouped, column_getToggleGroupingHandler, column_toggleGrouping, getDefaultGroupingState, row_getGroupingValue, row_getIsGrouped, table_resetGrouping, table_setGrouping };
152
+ export { cell_getIsGrouped, cell_getIsPlaceholder, column_getCanGroup, column_getGroupedIndex, column_getIsGrouped, column_getToggleGroupingHandler, column_toggleGrouping, getDefaultGroupingState, row_getGroupingValue, row_getIsGrouped, table_resetGrouping, table_setGrouping };
195
153
  //# sourceMappingURL=columnGroupingFeature.utils.d.ts.map
@@ -1,4 +1,4 @@
1
- import { cloneState, hasOwn, isFunction } from "../../utils.js";
1
+ import { cloneState, hasOwn } from "../../utils.js";
2
2
 
3
3
  //#region src/features/column-grouping/columnGroupingFeature.utils.ts
4
4
  /**
@@ -91,53 +91,6 @@ function column_getToggleGroupingHandler(column) {
91
91
  };
92
92
  }
93
93
  /**
94
- * Chooses a built-in aggregation function from the first core row value.
95
- *
96
- * Numeric columns default to `sum`, date-like values default to `extent`, and
97
- * other value types leave aggregation unspecified.
98
- *
99
- * The chosen aggregation function is looked up in the table's
100
- * `aggregationFns` registry. When it is not registered there, this returns
101
- * `undefined` and warns in development instead of substituting a different
102
- * aggregation function.
103
- *
104
- * @example
105
- * ```ts
106
- * const aggregationFn = column_getAutoAggregationFn(column)
107
- * ```
108
- */
109
- function column_getAutoAggregationFn(column) {
110
- const aggregationFns = column.table._rowModelFns.aggregationFns;
111
- const value = column.table.getCoreRowModel().flatRows[0]?.getValue(column.id);
112
- let aggregationFnName;
113
- if (typeof value === "number") aggregationFnName = "sum";
114
- else if (Object.prototype.toString.call(value) === "[object Date]") aggregationFnName = "extent";
115
- if (!aggregationFnName) return;
116
- const aggregationFn = aggregationFns?.[aggregationFnName];
117
- if (process.env.NODE_ENV === "development" && !aggregationFn) console.warn(`aggregationFn '${aggregationFnName}' (auto) for column '${column.id}' is not registered`);
118
- return aggregationFn;
119
- }
120
- /**
121
- * Resolves the aggregation function configured for a column.
122
- *
123
- * Function-valued `columnDef.aggregationFn` is returned directly, `'auto'`
124
- * delegates to `column_getAutoAggregationFn`, and string values are looked up in
125
- * the table's aggregation function registry.
126
- *
127
- * @example
128
- * ```ts
129
- * const aggregationFn = column_getAggregationFn(column)
130
- * ```
131
- */
132
- function column_getAggregationFn(column) {
133
- const aggregationFns = column.table._rowModelFns.aggregationFns;
134
- if (isFunction(column.columnDef.aggregationFn)) return column.columnDef.aggregationFn;
135
- if (column.columnDef.aggregationFn === "auto") return column_getAutoAggregationFn(column);
136
- const aggregationFn = aggregationFns?.[column.columnDef.aggregationFn];
137
- if (process.env.NODE_ENV === "development" && !aggregationFn && column.columnDef.aggregationFn != null) console.warn(`aggregationFn '${String(column.columnDef.aggregationFn)}' for column '${column.id}' is not registered`);
138
- return aggregationFn;
139
- }
140
- /**
141
94
  * Routes a grouping updater through the table's grouping change handler.
142
95
  *
143
96
  * The updater may be a next `GroupingState` array or a function of the previous
@@ -225,21 +178,7 @@ function cell_getIsGrouped(cell) {
225
178
  function cell_getIsPlaceholder(cell) {
226
179
  return !cell_getIsGrouped(cell) && column_getIsGrouped(cell.column);
227
180
  }
228
- /**
229
- * Checks whether this cell should render an aggregated value.
230
- *
231
- * Aggregated cells are non-placeholder, non-grouped cells on rows that have
232
- * subRows.
233
- *
234
- * @example
235
- * ```ts
236
- * const isAggregated = cell_getIsAggregated(cell)
237
- * ```
238
- */
239
- function cell_getIsAggregated(cell) {
240
- return !cell_getIsGrouped(cell) && !cell_getIsPlaceholder(cell) && !!cell.row.subRows.length;
241
- }
242
181
 
243
182
  //#endregion
244
- export { cell_getIsAggregated, cell_getIsGrouped, cell_getIsPlaceholder, column_getAggregationFn, column_getAutoAggregationFn, column_getCanGroup, column_getGroupedIndex, column_getIsGrouped, column_getToggleGroupingHandler, column_toggleGrouping, getDefaultGroupingState, row_getGroupingValue, row_getIsGrouped, table_resetGrouping, table_setGrouping };
183
+ export { cell_getIsGrouped, cell_getIsPlaceholder, column_getCanGroup, column_getGroupedIndex, column_getIsGrouped, column_getToggleGroupingHandler, column_toggleGrouping, getDefaultGroupingState, row_getGroupingValue, row_getIsGrouped, table_resetGrouping, table_setGrouping };
245
184
  //# sourceMappingURL=columnGroupingFeature.utils.js.map