@tanstack/table-core 8.0.0-alpha.67 → 8.0.0-alpha.68

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 (126) hide show
  1. package/build/cjs/aggregationFns.js +25 -37
  2. package/build/cjs/aggregationFns.js.map +1 -1
  3. package/build/cjs/core.js +167 -46
  4. package/build/cjs/core.js.map +1 -1
  5. package/build/cjs/createTable.js +24 -40
  6. package/build/cjs/createTable.js.map +1 -1
  7. package/build/cjs/features/Cells.js +28 -34
  8. package/build/cjs/features/Cells.js.map +1 -1
  9. package/build/cjs/features/ColumnSizing.js +90 -107
  10. package/build/cjs/features/ColumnSizing.js.map +1 -1
  11. package/build/cjs/features/Columns.js +52 -79
  12. package/build/cjs/features/Columns.js.map +1 -1
  13. package/build/cjs/features/Expanding.js +48 -57
  14. package/build/cjs/features/Expanding.js.map +1 -1
  15. package/build/cjs/features/Filters.js +96 -191
  16. package/build/cjs/features/Filters.js.map +1 -1
  17. package/build/cjs/features/Grouping.js +52 -70
  18. package/build/cjs/features/Grouping.js.map +1 -1
  19. package/build/cjs/features/Headers.js +109 -165
  20. package/build/cjs/features/Headers.js.map +1 -1
  21. package/build/cjs/features/Ordering.js +30 -42
  22. package/build/cjs/features/Ordering.js.map +1 -1
  23. package/build/cjs/features/Pagination.js +63 -71
  24. package/build/cjs/features/Pagination.js.map +1 -1
  25. package/build/cjs/features/Pinning.js +65 -121
  26. package/build/cjs/features/Pinning.js.map +1 -1
  27. package/build/cjs/features/RowSelection.js +92 -111
  28. package/build/cjs/features/RowSelection.js.map +1 -1
  29. package/build/cjs/features/Rows.js +32 -22
  30. package/build/cjs/features/Rows.js.map +1 -1
  31. package/build/cjs/features/Sorting.js +49 -68
  32. package/build/cjs/features/Sorting.js.map +1 -1
  33. package/build/cjs/features/Visibility.js +43 -87
  34. package/build/cjs/features/Visibility.js.map +1 -1
  35. package/build/cjs/filterFns.js +48 -72
  36. package/build/cjs/filterFns.js.map +1 -1
  37. package/build/cjs/index.js +13 -13
  38. package/build/cjs/sortingFns.js +21 -21
  39. package/build/cjs/sortingFns.js.map +1 -1
  40. package/build/cjs/utils/filterRowsUtils.js +49 -55
  41. package/build/cjs/utils/filterRowsUtils.js.map +1 -1
  42. package/build/cjs/utils/getCoreRowModel.js +98 -0
  43. package/build/cjs/utils/getCoreRowModel.js.map +1 -0
  44. package/build/cjs/utils/getExpandedRowModel.js +17 -21
  45. package/build/cjs/utils/getExpandedRowModel.js.map +1 -1
  46. package/build/cjs/utils/getFacetedMinMaxValues.js +48 -0
  47. package/build/cjs/utils/getFacetedMinMaxValues.js.map +1 -0
  48. package/build/cjs/utils/getFacetedRowModel.js +50 -0
  49. package/build/cjs/utils/getFacetedRowModel.js.map +1 -0
  50. package/build/cjs/utils/getFacetedUniqueValues.js +48 -0
  51. package/build/cjs/utils/getFacetedUniqueValues.js.map +1 -0
  52. package/build/cjs/utils/getFilteredRowModel.js +130 -0
  53. package/build/cjs/utils/getFilteredRowModel.js.map +1 -0
  54. package/build/cjs/utils/getGroupedRowModel.js +126 -136
  55. package/build/cjs/utils/getGroupedRowModel.js.map +1 -1
  56. package/build/cjs/utils/getPaginationRowModel.js +39 -39
  57. package/build/cjs/utils/getPaginationRowModel.js.map +1 -1
  58. package/build/cjs/utils/getSortedRowModel.js +112 -0
  59. package/build/cjs/utils/getSortedRowModel.js.map +1 -0
  60. package/build/cjs/utils.js +36 -207
  61. package/build/cjs/utils.js.map +1 -1
  62. package/build/esm/index.js +1729 -2313
  63. package/build/esm/index.js.map +1 -1
  64. package/build/stats-html.html +1 -1
  65. package/build/stats-react.json +421 -481
  66. package/build/types/core.d.ts +3 -5
  67. package/build/types/features/Cells.d.ts +1 -1
  68. package/build/types/features/Columns.d.ts +1 -1
  69. package/build/types/features/Filters.d.ts +10 -5
  70. package/build/types/features/Grouping.d.ts +4 -3
  71. package/build/types/features/Rows.d.ts +4 -3
  72. package/build/types/index.d.ts +6 -4
  73. package/build/types/types.d.ts +3 -13
  74. package/build/types/utils/filterRowsUtils.d.ts +3 -3
  75. package/build/types/utils/getCoreRowModel.d.ts +2 -0
  76. package/build/types/utils/getFacetedMinMaxValues.d.ts +2 -0
  77. package/build/types/utils/getFacetedRowModel.d.ts +2 -0
  78. package/build/types/utils/getFacetedUniqueValues.d.ts +2 -0
  79. package/build/types/utils/{getCoreRowModelSync.d.ts → getFilteredRowModel.d.ts} +1 -1
  80. package/build/types/utils/getGroupedRowModel.d.ts +1 -1
  81. package/build/types/utils/getSortedRowModel.d.ts +2 -0
  82. package/build/types/utils.d.ts +1 -17
  83. package/build/umd/index.development.js +1730 -2316
  84. package/build/umd/index.development.js.map +1 -1
  85. package/build/umd/index.production.js +1 -1
  86. package/build/umd/index.production.js.map +1 -1
  87. package/package.json +1 -1
  88. package/src/core.ts +197 -45
  89. package/src/features/Cells.ts +7 -11
  90. package/src/features/ColumnSizing.ts +6 -5
  91. package/src/features/Columns.ts +4 -8
  92. package/src/features/Filters.ts +95 -156
  93. package/src/features/Grouping.ts +16 -20
  94. package/src/features/Rows.ts +21 -6
  95. package/src/features/Sorting.ts +2 -2
  96. package/src/filterFns.ts +9 -9
  97. package/src/index.ts +12 -4
  98. package/src/sortingFns.ts +11 -11
  99. package/src/types.ts +3 -16
  100. package/src/utils/filterRowsUtils.ts +47 -68
  101. package/src/utils/{getCoreRowModelSync.ts → getCoreRowModel.ts} +2 -8
  102. package/src/utils/getFacetedMinMaxValues.ts +37 -0
  103. package/src/utils/getFacetedRowModel.ts +50 -0
  104. package/src/utils/getFacetedUniqueValues.ts +37 -0
  105. package/src/utils/{getFilteredRowModelSync.ts → getFilteredRowModel.ts} +29 -20
  106. package/src/utils/getGroupedRowModel.ts +52 -61
  107. package/src/utils/{getSortedRowModelSync.ts → getSortedRowModel.ts} +3 -3
  108. package/src/utils.ts +28 -236
  109. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -112
  110. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
  111. package/build/cjs/utils/getCoreRowModelAsync.js +0 -125
  112. package/build/cjs/utils/getCoreRowModelAsync.js.map +0 -1
  113. package/build/cjs/utils/getCoreRowModelSync.js +0 -102
  114. package/build/cjs/utils/getCoreRowModelSync.js.map +0 -1
  115. package/build/cjs/utils/getFilteredRowModelSync.js +0 -125
  116. package/build/cjs/utils/getFilteredRowModelSync.js.map +0 -1
  117. package/build/cjs/utils/getSortedRowModelSync.js +0 -118
  118. package/build/cjs/utils/getSortedRowModelSync.js.map +0 -1
  119. package/build/types/utils/getCoreRowModelAsync.d.ts +0 -4
  120. package/build/types/utils/getFilteredRowModelAsync.d.ts +0 -4
  121. package/build/types/utils/getFilteredRowModelSync.d.ts +0 -2
  122. package/build/types/utils/getSortedRowModelAsync.d.ts +0 -13
  123. package/build/types/utils/getSortedRowModelSync.d.ts +0 -2
  124. package/src/utils/getCoreRowModelAsync.ts +0 -104
  125. package/src/utils/getFilteredRowModelAsync.ts +0 -157
  126. package/src/utils/getSortedRowModelAsync.ts +0 -200
@@ -12,71 +12,65 @@
12
12
 
13
13
  Object.defineProperty(exports, '__esModule', { value: true });
14
14
 
15
- var _rollupPluginBabelHelpers = require('../_virtual/_rollupPluginBabelHelpers.js');
16
15
  var aggregationFns = require('../aggregationFns.js');
17
16
  var utils = require('../utils.js');
18
17
 
19
18
  //
20
- var Grouping = {
21
- getDefaultColumn: function getDefaultColumn() {
19
+ const Grouping = {
20
+ getDefaultColumn: () => {
22
21
  return {
23
22
  aggregationFn: 'auto'
24
23
  };
25
24
  },
26
- getInitialState: function getInitialState(state) {
27
- return _rollupPluginBabelHelpers["extends"]({
28
- grouping: []
29
- }, state);
25
+ getInitialState: state => {
26
+ return {
27
+ grouping: [],
28
+ ...state
29
+ };
30
30
  },
31
- getDefaultOptions: function getDefaultOptions(instance) {
31
+ getDefaultOptions: instance => {
32
32
  return {
33
33
  onGroupingChange: utils.makeStateUpdater('grouping', instance),
34
34
  groupedColumnMode: 'reorder'
35
35
  };
36
36
  },
37
- createColumn: function createColumn(column, instance) {
37
+ createColumn: (column, instance) => {
38
38
  return {
39
- toggleGrouping: function toggleGrouping() {
40
- instance.setGrouping(function (old) {
39
+ toggleGrouping: () => {
40
+ instance.setGrouping(old => {
41
41
  // Find any existing grouping for this column
42
42
  if (old != null && old.includes(column.id)) {
43
- return old.filter(function (d) {
44
- return d !== column.id;
45
- });
43
+ return old.filter(d => d !== column.id);
46
44
  }
47
45
 
48
- return [].concat(old != null ? old : [], [column.id]);
46
+ return [...(old != null ? old : []), column.id];
49
47
  });
50
48
  },
51
- getCanGroup: function getCanGroup() {
49
+ getCanGroup: () => {
52
50
  var _ref, _ref2, _ref3, _column$enableGroupin;
53
51
 
54
52
  return (_ref = (_ref2 = (_ref3 = (_column$enableGroupin = column.enableGrouping) != null ? _column$enableGroupin : true) != null ? _ref3 : instance.options.enableGrouping) != null ? _ref2 : true) != null ? _ref : !!column.accessorFn;
55
53
  },
56
- getIsGrouped: function getIsGrouped() {
54
+ getIsGrouped: () => {
57
55
  var _instance$getState$gr;
58
56
 
59
57
  return (_instance$getState$gr = instance.getState().grouping) == null ? void 0 : _instance$getState$gr.includes(column.id);
60
58
  },
61
- getGroupedIndex: function getGroupedIndex() {
59
+ getGroupedIndex: () => {
62
60
  var _instance$getState$gr2;
63
61
 
64
62
  return (_instance$getState$gr2 = instance.getState().grouping) == null ? void 0 : _instance$getState$gr2.indexOf(column.id);
65
63
  },
66
- getToggleGroupingHandler: function getToggleGroupingHandler() {
67
- var canGroup = column.getCanGroup();
68
- return function () {
64
+ getToggleGroupingHandler: () => {
65
+ const canGroup = column.getCanGroup();
66
+ return () => {
69
67
  if (!canGroup) return;
70
68
  column.toggleGrouping();
71
69
  };
72
- }
73
- };
74
- },
75
- createInstance: function createInstance(instance) {
76
- return {
77
- getColumnAutoAggregationFn: function getColumnAutoAggregationFn(columnId) {
78
- var firstRow = instance.getCoreRowModel().flatRows[0];
79
- var value = firstRow == null ? void 0 : firstRow.values[columnId];
70
+ },
71
+ getColumnAutoAggregationFn: () => {
72
+ const firstRow = instance.getCoreRowModel().flatRows[0];
73
+ const value = firstRow == null ? void 0 : firstRow.getValue(column.id);
80
74
 
81
75
  if (typeof value === 'number') {
82
76
  return aggregationFns.aggregationFns.sum;
@@ -88,30 +82,29 @@ var Grouping = {
88
82
 
89
83
  return aggregationFns.aggregationFns.count;
90
84
  },
91
- getColumnAggregationFn: function getColumnAggregationFn(columnId) {
85
+ getColumnAggregationFn: () => {
92
86
  var _ref4;
93
87
 
94
- var column = instance.getColumn(columnId);
95
- var userAggregationFns = instance.options.aggregationFns;
88
+ const userAggregationFns = instance.options.aggregationFns;
96
89
 
97
90
  if (!column) {
98
91
  throw new Error();
99
92
  }
100
93
 
101
- return utils.isFunction(column.aggregationFn) ? column.aggregationFn : column.aggregationFn === 'auto' ? instance.getColumnAutoAggregationFn(columnId) : (_ref4 = userAggregationFns == null ? void 0 : userAggregationFns[column.aggregationFn]) != null ? _ref4 : aggregationFns.aggregationFns[column.aggregationFn];
102
- },
103
- setGrouping: function setGrouping(updater) {
104
- return instance.options.onGroupingChange == null ? void 0 : instance.options.onGroupingChange(updater);
105
- },
106
- resetGrouping: function resetGrouping() {
94
+ return utils.isFunction(column.aggregationFn) ? column.aggregationFn : column.aggregationFn === 'auto' ? column.getColumnAutoAggregationFn() : (_ref4 = userAggregationFns == null ? void 0 : userAggregationFns[column.aggregationFn]) != null ? _ref4 : aggregationFns.aggregationFns[column.aggregationFn];
95
+ }
96
+ };
97
+ },
98
+ createInstance: instance => {
99
+ return {
100
+ setGrouping: updater => instance.options.onGroupingChange == null ? void 0 : instance.options.onGroupingChange(updater),
101
+ resetGrouping: () => {
107
102
  var _instance$initialStat, _instance$initialStat2;
108
103
 
109
104
  instance.setGrouping((_instance$initialStat = (_instance$initialStat2 = instance.initialState) == null ? void 0 : _instance$initialStat2.grouping) != null ? _instance$initialStat : []);
110
105
  },
111
- getPreGroupedRowModel: function getPreGroupedRowModel() {
112
- return instance.getSortedRowModel();
113
- },
114
- getGroupedRowModel: function getGroupedRowModel() {
106
+ getPreGroupedRowModel: () => instance.getSortedRowModel(),
107
+ getGroupedRowModel: () => {
115
108
  if (!instance._getGroupedRowModel && instance.options.getGroupedRowModel) {
116
109
  instance._getGroupedRowModel = instance.options.getGroupedRowModel(instance);
117
110
  }
@@ -124,36 +117,31 @@ var Grouping = {
124
117
  }
125
118
  };
126
119
  },
127
- createRow: function createRow(row, instance) {
120
+ createRow: (row, instance) => {
128
121
  return {
129
- getIsGrouped: function getIsGrouped() {
130
- return !!row.groupingColumnId;
131
- }
122
+ getIsGrouped: () => !!row.groupingColumnId,
123
+ groupingValuesCache: {}
132
124
  };
133
125
  },
134
- createCell: function createCell(cell, column, row, instance) {
126
+ createCell: (cell, column, row, instance) => {
135
127
  return {
136
- getIsGrouped: function getIsGrouped() {
137
- return column.getIsGrouped() && column.id === row.groupingColumnId;
138
- },
139
- getIsPlaceholder: function getIsPlaceholder() {
140
- return !cell.getIsGrouped() && column.getIsGrouped();
141
- },
142
- getIsAggregated: function getIsAggregated() {
128
+ getIsGrouped: () => column.getIsGrouped() && column.id === row.groupingColumnId,
129
+ getIsPlaceholder: () => !cell.getIsGrouped() && column.getIsGrouped(),
130
+ getIsAggregated: () => {
143
131
  var _row$subRows;
144
132
 
145
133
  return !cell.getIsGrouped() && !cell.getIsPlaceholder() && ((_row$subRows = row.subRows) == null ? void 0 : _row$subRows.length) > 1;
146
134
  },
147
- renderAggregatedCell: function renderAggregatedCell() {
135
+ renderAggregatedCell: () => {
148
136
  var _column$aggregatedCel;
149
137
 
150
- var template = (_column$aggregatedCel = column.aggregatedCell) != null ? _column$aggregatedCel : column.cell;
138
+ const template = (_column$aggregatedCel = column.aggregatedCell) != null ? _column$aggregatedCel : column.cell;
151
139
  return template ? instance.render(template, {
152
- instance: instance,
153
- column: column,
154
- row: row,
155
- cell: cell,
156
- value: cell.value
140
+ instance,
141
+ column,
142
+ row,
143
+ cell,
144
+ getValue: cell.getValue
157
145
  }) : null;
158
146
  }
159
147
  };
@@ -164,20 +152,14 @@ function orderColumns(leafColumns, grouping, groupedColumnMode) {
164
152
  return leafColumns;
165
153
  }
166
154
 
167
- var nonGroupingColumns = leafColumns.filter(function (col) {
168
- return !grouping.includes(col.id);
169
- });
155
+ const nonGroupingColumns = leafColumns.filter(col => !grouping.includes(col.id));
170
156
 
171
157
  if (groupedColumnMode === 'remove') {
172
158
  return nonGroupingColumns;
173
159
  }
174
160
 
175
- var groupingColumns = grouping.map(function (g) {
176
- return leafColumns.find(function (col) {
177
- return col.id === g;
178
- });
179
- }).filter(Boolean);
180
- return [].concat(groupingColumns, nonGroupingColumns);
161
+ const groupingColumns = grouping.map(g => leafColumns.find(col => col.id === g)).filter(Boolean);
162
+ return [...groupingColumns, ...nonGroupingColumns];
181
163
  }
182
164
 
183
165
  exports.Grouping = Grouping;
@@ -1 +1 @@
1
- {"version":3,"file":"Grouping.js","sources":["../../../src/features/Grouping.ts"],"sourcesContent":["import { RowModel } from '..'\nimport { BuiltInAggregationFn, aggregationFns } from '../aggregationFns'\nimport {\n Cell,\n Column,\n OnChangeFn,\n TableInstance,\n Row,\n Updater,\n Renderable,\n TableGenerics,\n TableFeature,\n} from '../types'\nimport { isFunction, makeStateUpdater, Overwrite } from '../utils'\n\nexport type GroupingState = string[]\n\nexport type AggregationFn<TGenerics extends TableGenerics> = (\n getLeafValues: () => TGenerics['Row'][],\n getChildValues: () => TGenerics['Row'][]\n) => any\n\nexport type CustomAggregationFns<TGenerics extends TableGenerics> = Record<\n string,\n AggregationFn<TGenerics>\n>\n\nexport type AggregationFnOption<TGenerics extends TableGenerics> =\n | 'auto'\n | BuiltInAggregationFn\n | keyof TGenerics['AggregationFns']\n | AggregationFn<TGenerics>\n\nexport type GroupingTableState = {\n grouping: GroupingState\n}\n\nexport type GroupingColumnDef<TGenerics extends TableGenerics> = {\n aggregationFn?: AggregationFnOption<Overwrite<TGenerics, { Value: any }>>\n aggregateValue?: (columnValue: unknown) => any\n aggregatedCell?: Renderable<\n TGenerics,\n {\n instance: TableInstance<TGenerics>\n row: Row<TGenerics>\n column: Column<TGenerics>\n cell: Cell<TGenerics>\n value: TGenerics['Value']\n }\n >\n enableGrouping?: boolean\n}\n\nexport type GroupingColumn<TGenerics extends TableGenerics> = {\n aggregationFn?: AggregationFnOption<Overwrite<TGenerics, { Value: any }>>\n getCanGroup: () => boolean\n getIsGrouped: () => boolean\n getGroupedIndex: () => number\n toggleGrouping: () => void\n getToggleGroupingHandler: () => () => void\n}\n\nexport type GroupingRow = {\n groupingColumnId?: string\n groupingValue?: any\n getIsGrouped: () => boolean\n}\n\nexport type GroupingCell<TGenerics extends TableGenerics> = {\n getIsGrouped: () => boolean\n getIsPlaceholder: () => boolean\n getIsAggregated: () => boolean\n renderAggregatedCell: () => string | null | TGenerics['Rendered']\n}\n\nexport type ColumnDefaultOptions = {\n // Column\n onGroupingChange: OnChangeFn<GroupingState>\n enableGrouping: boolean\n}\n\nexport type GroupingOptions<TGenerics extends TableGenerics> = {\n manualGrouping?: boolean\n aggregationFns?: TGenerics['AggregationFns']\n onGroupingChange?: OnChangeFn<GroupingState>\n enableGrouping?: boolean\n enableGroupingRemoval?: boolean\n getGroupedRowModel?: (\n instance: TableInstance<TGenerics>\n ) => () => RowModel<TGenerics>\n\n groupedColumnMode?: false | 'reorder' | 'remove'\n}\n\nexport type GroupingColumnMode = false | 'reorder' | 'remove'\n\nexport type GroupingInstance<TGenerics extends TableGenerics> = {\n getColumnAutoAggregationFn: (\n columnId: string\n ) => AggregationFn<TGenerics> | undefined\n getColumnAggregationFn: (\n columnId: string\n ) => AggregationFn<TGenerics> | undefined\n setGrouping: (updater: Updater<GroupingState>) => void\n resetGrouping: () => void\n getPreGroupedRowModel: () => RowModel<TGenerics>\n getGroupedRowModel: () => RowModel<TGenerics>\n _getGroupedRowModel?: () => RowModel<TGenerics>\n}\n\n//\n\nexport const Grouping: TableFeature = {\n getDefaultColumn: <\n TGenerics extends TableGenerics\n >(): GroupingColumnDef<TGenerics> => {\n return {\n aggregationFn: 'auto',\n }\n },\n\n getInitialState: (state): GroupingTableState => {\n return {\n grouping: [],\n ...state,\n }\n },\n\n getDefaultOptions: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): GroupingOptions<TGenerics> => {\n return {\n onGroupingChange: makeStateUpdater('grouping', instance),\n groupedColumnMode: 'reorder',\n }\n },\n\n createColumn: <TGenerics extends TableGenerics>(\n column: Column<TGenerics>,\n instance: TableInstance<TGenerics>\n ): GroupingColumn<TGenerics> => {\n return {\n toggleGrouping: () => {\n instance.setGrouping(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 getCanGroup: () => {\n return (\n column.enableGrouping ??\n true ??\n instance.options.enableGrouping ??\n true ??\n !!column.accessorFn\n )\n },\n\n getIsGrouped: () => {\n return instance.getState().grouping?.includes(column.id)\n },\n\n getGroupedIndex: () => instance.getState().grouping?.indexOf(column.id),\n\n getToggleGroupingHandler: () => {\n const canGroup = column.getCanGroup()\n\n return () => {\n if (!canGroup) return\n column.toggleGrouping()\n }\n },\n }\n },\n\n createInstance: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): GroupingInstance<TGenerics> => {\n return {\n getColumnAutoAggregationFn: columnId => {\n const firstRow = instance.getCoreRowModel().flatRows[0]\n\n const value = firstRow?.values[columnId]\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 return aggregationFns.count\n },\n getColumnAggregationFn: columnId => {\n const column = instance.getColumn(columnId)\n const userAggregationFns = instance.options.aggregationFns\n\n if (!column) {\n throw new Error()\n }\n\n return isFunction(column.aggregationFn)\n ? column.aggregationFn\n : column.aggregationFn === 'auto'\n ? instance.getColumnAutoAggregationFn(columnId)\n : (userAggregationFns as Record<string, any>)?.[\n column.aggregationFn as string\n ] ??\n (aggregationFns[\n column.aggregationFn as BuiltInAggregationFn\n ] as AggregationFn<TGenerics>)\n },\n\n setGrouping: updater => instance.options.onGroupingChange?.(updater),\n\n resetGrouping: () => {\n instance.setGrouping(instance.initialState?.grouping ?? [])\n },\n\n getPreGroupedRowModel: () => instance.getSortedRowModel(),\n getGroupedRowModel: () => {\n if (\n !instance._getGroupedRowModel &&\n instance.options.getGroupedRowModel\n ) {\n instance._getGroupedRowModel =\n instance.options.getGroupedRowModel(instance)\n }\n\n if (instance.options.manualGrouping || !instance._getGroupedRowModel) {\n return instance.getPreGroupedRowModel()\n }\n\n return instance._getGroupedRowModel()\n },\n }\n },\n\n createRow: <TGenerics extends TableGenerics>(\n row: Row<TGenerics>,\n instance: TableInstance<TGenerics>\n ): GroupingRow => {\n return {\n getIsGrouped: () => !!row.groupingColumnId,\n }\n },\n\n createCell: <TGenerics extends TableGenerics>(\n cell: Cell<TGenerics>,\n column: Column<TGenerics>,\n row: Row<TGenerics>,\n instance: TableInstance<TGenerics>\n ): GroupingCell<TGenerics> => {\n return {\n getIsGrouped: () =>\n column.getIsGrouped() && column.id === row.groupingColumnId,\n getIsPlaceholder: () => !cell.getIsGrouped() && column.getIsGrouped(),\n getIsAggregated: () =>\n !cell.getIsGrouped() &&\n !cell.getIsPlaceholder() &&\n row.subRows?.length > 1,\n renderAggregatedCell: () => {\n const template = column.aggregatedCell ?? column.cell\n\n return template\n ? instance.render(template, {\n instance,\n column,\n row,\n cell,\n value: cell.value,\n })\n : null\n },\n }\n },\n}\n\nexport function orderColumns<TGenerics extends TableGenerics>(\n leafColumns: Column<TGenerics>[],\n grouping: string[],\n groupedColumnMode?: GroupingColumnMode\n) {\n if (!grouping?.length || !groupedColumnMode) {\n return leafColumns\n }\n\n const nonGroupingColumns = leafColumns.filter(\n col => !grouping.includes(col.id)\n )\n\n if (groupedColumnMode === 'remove') {\n return nonGroupingColumns\n }\n\n const groupingColumns = grouping\n .map(g => leafColumns.find(col => col.id === g)!)\n .filter(Boolean)\n\n return [...groupingColumns, ...nonGroupingColumns]\n}\n"],"names":["Grouping","getDefaultColumn","aggregationFn","getInitialState","state","_extends","grouping","getDefaultOptions","instance","onGroupingChange","makeStateUpdater","groupedColumnMode","createColumn","column","toggleGrouping","setGrouping","old","includes","id","filter","d","getCanGroup","enableGrouping","options","accessorFn","getIsGrouped","getState","getGroupedIndex","indexOf","getToggleGroupingHandler","canGroup","createInstance","getColumnAutoAggregationFn","columnId","firstRow","getCoreRowModel","flatRows","value","values","aggregationFns","sum","Object","prototype","toString","call","extent","count","getColumnAggregationFn","getColumn","userAggregationFns","Error","isFunction","updater","resetGrouping","initialState","getPreGroupedRowModel","getSortedRowModel","getGroupedRowModel","_getGroupedRowModel","manualGrouping","createRow","row","groupingColumnId","createCell","cell","getIsPlaceholder","getIsAggregated","subRows","length","renderAggregatedCell","template","aggregatedCell","render","orderColumns","leafColumns","nonGroupingColumns","col","groupingColumns","map","g","find","Boolean"],"mappings":"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"}
1
+ {"version":3,"file":"Grouping.js","sources":["../../../src/features/Grouping.ts"],"sourcesContent":["import { RowModel } from '..'\nimport { BuiltInAggregationFn, aggregationFns } from '../aggregationFns'\nimport {\n Cell,\n Column,\n OnChangeFn,\n TableInstance,\n Row,\n Updater,\n Renderable,\n TableGenerics,\n TableFeature,\n} from '../types'\nimport { isFunction, makeStateUpdater, Overwrite } from '../utils'\n\nexport type GroupingState = string[]\n\nexport type AggregationFn<TGenerics extends TableGenerics> = (\n getLeafValues: () => TGenerics['Row'][],\n getChildValues: () => TGenerics['Row'][]\n) => any\n\nexport type CustomAggregationFns<TGenerics extends TableGenerics> = Record<\n string,\n AggregationFn<TGenerics>\n>\n\nexport type AggregationFnOption<TGenerics extends TableGenerics> =\n | 'auto'\n | BuiltInAggregationFn\n | keyof TGenerics['AggregationFns']\n | AggregationFn<TGenerics>\n\nexport type GroupingTableState = {\n grouping: GroupingState\n}\n\nexport type GroupingColumnDef<TGenerics extends TableGenerics> = {\n aggregationFn?: AggregationFnOption<Overwrite<TGenerics, { Value: any }>>\n aggregateValue?: (columnValue: unknown) => any\n aggregatedCell?: Renderable<\n TGenerics,\n {\n instance: TableInstance<TGenerics>\n row: Row<TGenerics>\n column: Column<TGenerics>\n cell: Cell<TGenerics>\n getValue: () => TGenerics['Value']\n }\n >\n enableGrouping?: boolean\n}\n\nexport type GroupingColumn<TGenerics extends TableGenerics> = {\n aggregationFn?: AggregationFnOption<Overwrite<TGenerics, { Value: any }>>\n getCanGroup: () => boolean\n getIsGrouped: () => boolean\n getGroupedIndex: () => number\n toggleGrouping: () => void\n getToggleGroupingHandler: () => () => void\n getColumnAutoAggregationFn: () => AggregationFn<TGenerics> | undefined\n getColumnAggregationFn: () => AggregationFn<TGenerics> | undefined\n}\n\nexport type GroupingRow = {\n groupingColumnId?: string\n groupingValue?: any\n getIsGrouped: () => boolean\n groupingValuesCache: Record<string, any>\n}\n\nexport type GroupingCell<TGenerics extends TableGenerics> = {\n getIsGrouped: () => boolean\n getIsPlaceholder: () => boolean\n getIsAggregated: () => boolean\n renderAggregatedCell: () => string | null | TGenerics['Rendered']\n}\n\nexport type ColumnDefaultOptions = {\n // Column\n onGroupingChange: OnChangeFn<GroupingState>\n enableGrouping: boolean\n}\n\nexport type GroupingOptions<TGenerics extends TableGenerics> = {\n manualGrouping?: boolean\n aggregationFns?: TGenerics['AggregationFns']\n onGroupingChange?: OnChangeFn<GroupingState>\n enableGrouping?: boolean\n enableGroupingRemoval?: boolean\n getGroupedRowModel?: (\n instance: TableInstance<TGenerics>\n ) => () => RowModel<TGenerics>\n\n groupedColumnMode?: false | 'reorder' | 'remove'\n}\n\nexport type GroupingColumnMode = false | 'reorder' | 'remove'\n\nexport type GroupingInstance<TGenerics extends TableGenerics> = {\n setGrouping: (updater: Updater<GroupingState>) => void\n resetGrouping: () => void\n getPreGroupedRowModel: () => RowModel<TGenerics>\n getGroupedRowModel: () => RowModel<TGenerics>\n _getGroupedRowModel?: () => RowModel<TGenerics>\n}\n\n//\n\nexport const Grouping: TableFeature = {\n getDefaultColumn: <\n TGenerics extends TableGenerics\n >(): GroupingColumnDef<TGenerics> => {\n return {\n aggregationFn: 'auto',\n }\n },\n\n getInitialState: (state): GroupingTableState => {\n return {\n grouping: [],\n ...state,\n }\n },\n\n getDefaultOptions: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): GroupingOptions<TGenerics> => {\n return {\n onGroupingChange: makeStateUpdater('grouping', instance),\n groupedColumnMode: 'reorder',\n }\n },\n\n createColumn: <TGenerics extends TableGenerics>(\n column: Column<TGenerics>,\n instance: TableInstance<TGenerics>\n ): GroupingColumn<TGenerics> => {\n return {\n toggleGrouping: () => {\n instance.setGrouping(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 getCanGroup: () => {\n return (\n column.enableGrouping ??\n true ??\n instance.options.enableGrouping ??\n true ??\n !!column.accessorFn\n )\n },\n\n getIsGrouped: () => {\n return instance.getState().grouping?.includes(column.id)\n },\n\n getGroupedIndex: () => instance.getState().grouping?.indexOf(column.id),\n\n getToggleGroupingHandler: () => {\n const canGroup = column.getCanGroup()\n\n return () => {\n if (!canGroup) return\n column.toggleGrouping()\n }\n },\n getColumnAutoAggregationFn: () => {\n const firstRow = instance.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 return aggregationFns.count\n },\n getColumnAggregationFn: () => {\n const userAggregationFns = instance.options.aggregationFns\n\n if (!column) {\n throw new Error()\n }\n\n return isFunction(column.aggregationFn)\n ? column.aggregationFn\n : column.aggregationFn === 'auto'\n ? column.getColumnAutoAggregationFn()\n : (userAggregationFns as Record<string, any>)?.[\n column.aggregationFn as string\n ] ??\n (aggregationFns[\n column.aggregationFn as BuiltInAggregationFn\n ] as AggregationFn<TGenerics>)\n },\n }\n },\n\n createInstance: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): GroupingInstance<TGenerics> => {\n return {\n setGrouping: updater => instance.options.onGroupingChange?.(updater),\n\n resetGrouping: () => {\n instance.setGrouping(instance.initialState?.grouping ?? [])\n },\n\n getPreGroupedRowModel: () => instance.getSortedRowModel(),\n getGroupedRowModel: () => {\n if (\n !instance._getGroupedRowModel &&\n instance.options.getGroupedRowModel\n ) {\n instance._getGroupedRowModel =\n instance.options.getGroupedRowModel(instance)\n }\n\n if (instance.options.manualGrouping || !instance._getGroupedRowModel) {\n return instance.getPreGroupedRowModel()\n }\n\n return instance._getGroupedRowModel()\n },\n }\n },\n\n createRow: <TGenerics extends TableGenerics>(\n row: Row<TGenerics>,\n instance: TableInstance<TGenerics>\n ): GroupingRow => {\n return {\n getIsGrouped: () => !!row.groupingColumnId,\n groupingValuesCache: {},\n }\n },\n\n createCell: <TGenerics extends TableGenerics>(\n cell: Cell<TGenerics>,\n column: Column<TGenerics>,\n row: Row<TGenerics>,\n instance: TableInstance<TGenerics>\n ): GroupingCell<TGenerics> => {\n return {\n getIsGrouped: () =>\n column.getIsGrouped() && column.id === row.groupingColumnId,\n getIsPlaceholder: () => !cell.getIsGrouped() && column.getIsGrouped(),\n getIsAggregated: () =>\n !cell.getIsGrouped() &&\n !cell.getIsPlaceholder() &&\n row.subRows?.length > 1,\n renderAggregatedCell: () => {\n const template = column.aggregatedCell ?? column.cell\n\n return template\n ? instance.render(template, {\n instance,\n column,\n row,\n cell,\n getValue: cell.getValue,\n })\n : null\n },\n }\n },\n}\n\nexport function orderColumns<TGenerics extends TableGenerics>(\n leafColumns: Column<TGenerics>[],\n grouping: string[],\n groupedColumnMode?: GroupingColumnMode\n) {\n if (!grouping?.length || !groupedColumnMode) {\n return leafColumns\n }\n\n const nonGroupingColumns = leafColumns.filter(\n col => !grouping.includes(col.id)\n )\n\n if (groupedColumnMode === 'remove') {\n return nonGroupingColumns\n }\n\n const groupingColumns = grouping\n .map(g => leafColumns.find(col => col.id === g)!)\n .filter(Boolean)\n\n return [...groupingColumns, ...nonGroupingColumns]\n}\n"],"names":["Grouping","getDefaultColumn","aggregationFn","getInitialState","state","grouping","getDefaultOptions","instance","onGroupingChange","makeStateUpdater","groupedColumnMode","createColumn","column","toggleGrouping","setGrouping","old","includes","id","filter","d","getCanGroup","enableGrouping","options","accessorFn","getIsGrouped","getState","getGroupedIndex","indexOf","getToggleGroupingHandler","canGroup","getColumnAutoAggregationFn","firstRow","getCoreRowModel","flatRows","value","getValue","aggregationFns","sum","Object","prototype","toString","call","extent","count","getColumnAggregationFn","userAggregationFns","Error","isFunction","createInstance","updater","resetGrouping","initialState","getPreGroupedRowModel","getSortedRowModel","getGroupedRowModel","_getGroupedRowModel","manualGrouping","createRow","row","groupingColumnId","groupingValuesCache","createCell","cell","getIsPlaceholder","getIsAggregated","subRows","length","renderAggregatedCell","template","aggregatedCell","render","orderColumns","leafColumns","nonGroupingColumns","col","groupingColumns","map","g","find","Boolean"],"mappings":"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"}