@tanstack/table-core 8.0.0-alpha.28 → 8.0.0-alpha.34

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 (124) hide show
  1. package/build/cjs/aggregationTypes.js +1 -0
  2. package/build/cjs/aggregationTypes.js.map +1 -1
  3. package/build/cjs/core.js +50 -79
  4. package/build/cjs/core.js.map +1 -1
  5. package/build/cjs/createTable.js.map +1 -1
  6. package/build/cjs/features/ColumnSizing.js.map +1 -1
  7. package/build/cjs/features/Expanding.js +14 -18
  8. package/build/cjs/features/Expanding.js.map +1 -1
  9. package/build/cjs/features/Filters.js +29 -82
  10. package/build/cjs/features/Filters.js.map +1 -1
  11. package/build/cjs/features/Grouping.js +10 -16
  12. package/build/cjs/features/Grouping.js.map +1 -1
  13. package/build/cjs/features/Headers.js.map +1 -1
  14. package/build/cjs/features/Ordering.js.map +1 -1
  15. package/build/cjs/features/Pagination.js +10 -17
  16. package/build/cjs/features/Pagination.js.map +1 -1
  17. package/build/cjs/features/Pinning.js.map +1 -1
  18. package/build/cjs/features/RowSelection.js +9 -3
  19. package/build/cjs/features/RowSelection.js.map +1 -1
  20. package/build/cjs/features/Sorting.js +11 -17
  21. package/build/cjs/features/Sorting.js.map +1 -1
  22. package/build/cjs/features/Visibility.js.map +1 -1
  23. package/build/cjs/filterTypes.js.map +1 -1
  24. package/build/cjs/index.js +19 -12
  25. package/build/cjs/index.js.map +1 -1
  26. package/build/cjs/sortTypes.js.map +1 -1
  27. package/build/cjs/utils/filterRowsUtils.js.map +1 -1
  28. package/build/cjs/utils/getColumnFilteredRowModelSync.js +115 -0
  29. package/build/cjs/utils/getColumnFilteredRowModelSync.js.map +1 -0
  30. package/build/cjs/utils/getCoreRowModelAsync.js +127 -0
  31. package/build/cjs/utils/getCoreRowModelAsync.js.map +1 -0
  32. package/build/cjs/utils/getCoreRowModelSync.js +104 -0
  33. package/build/cjs/utils/getCoreRowModelSync.js.map +1 -0
  34. package/build/cjs/utils/getExpandedRowModel.js +61 -0
  35. package/build/cjs/utils/getExpandedRowModel.js.map +1 -0
  36. package/build/cjs/utils/getGlobalFilteredRowModelSync.js +91 -0
  37. package/build/cjs/utils/getGlobalFilteredRowModelSync.js.map +1 -0
  38. package/build/cjs/utils/getGroupedRowModel.js +176 -0
  39. package/build/cjs/utils/getGroupedRowModel.js.map +1 -0
  40. package/build/cjs/utils/getPaginationRowModel.js +61 -0
  41. package/build/cjs/utils/getPaginationRowModel.js.map +1 -0
  42. package/build/cjs/utils/getSortedRowModelSync.js +118 -0
  43. package/build/cjs/utils/getSortedRowModelSync.js.map +1 -0
  44. package/build/cjs/utils.js +159 -20
  45. package/build/cjs/utils.js.map +1 -1
  46. package/build/esm/index.js +893 -500
  47. package/build/esm/index.js.map +1 -1
  48. package/build/stats-html.html +1 -1
  49. package/build/stats-react.json +408 -300
  50. package/build/types/aggregationTypes.d.ts +1 -1
  51. package/build/types/core.d.ts +11 -1
  52. package/build/types/createTable.d.ts +2 -4
  53. package/build/types/features/Expanding.d.ts +2 -1
  54. package/build/types/features/Filters.d.ts +6 -2
  55. package/build/types/features/Grouping.d.ts +3 -2
  56. package/build/types/features/Pagination.d.ts +2 -1
  57. package/build/types/features/Sorting.d.ts +2 -1
  58. package/build/types/index.d.ts +8 -6
  59. package/build/types/types.d.ts +3 -2
  60. package/build/types/utils/getColumnFilteredRowModelAsync.d.ts +4 -0
  61. package/build/types/utils/getColumnFilteredRowModelSync.d.ts +2 -0
  62. package/build/types/utils/getCoreRowModelAsync.d.ts +4 -0
  63. package/build/types/utils/getCoreRowModelSync.d.ts +2 -0
  64. package/build/types/utils/getExpandedRowModel.d.ts +7 -0
  65. package/build/types/utils/getGlobalFilteredRowModelAsync.d.ts +4 -0
  66. package/build/types/utils/getGlobalFilteredRowModelSync.d.ts +2 -0
  67. package/build/types/utils/getGroupedRowModel.d.ts +2 -0
  68. package/build/types/utils/getPaginationRowModel.d.ts +4 -0
  69. package/build/types/utils/{sortRowsQuicksortFn.d.ts → getSortedRowModelAsync.d.ts} +3 -1
  70. package/build/types/utils/getSortedRowModelSync.d.ts +2 -0
  71. package/build/types/utils.d.ts +16 -0
  72. package/build/umd/index.development.js +903 -505
  73. package/build/umd/index.development.js.map +1 -1
  74. package/build/umd/index.production.js +1 -1
  75. package/build/umd/index.production.js.map +1 -1
  76. package/package.json +3 -1
  77. package/src/aggregationTypes.ts +1 -1
  78. package/src/core.tsx +66 -99
  79. package/src/createTable.tsx +2 -6
  80. package/src/features/Expanding.ts +21 -29
  81. package/src/features/Filters.ts +53 -100
  82. package/src/features/Grouping.ts +19 -21
  83. package/src/features/Pagination.ts +19 -28
  84. package/src/features/RowSelection.ts +5 -3
  85. package/src/features/Sorting.ts +20 -24
  86. package/src/index.tsx +8 -6
  87. package/src/types.ts +4 -1
  88. package/src/utils/getColumnFilteredRowModelAsync.ts +119 -0
  89. package/src/utils/getColumnFilteredRowModelSync.ts +99 -0
  90. package/src/utils/getCoreRowModelAsync.ts +105 -0
  91. package/src/utils/getCoreRowModelSync.ts +107 -0
  92. package/src/utils/getExpandedRowModel.ts +58 -0
  93. package/src/utils/getGlobalFilteredRowModelAsync.ts +97 -0
  94. package/src/utils/getGlobalFilteredRowModelSync.ts +76 -0
  95. package/src/utils/getGroupedRowModel.ts +191 -0
  96. package/src/utils/getPaginationRowModel.ts +45 -0
  97. package/src/utils/getSortedRowModelAsync.ts +201 -0
  98. package/src/utils/getSortedRowModelSync.ts +118 -0
  99. package/src/utils.tsx +193 -21
  100. package/build/cjs/utils/columnFilterRowsFn.js +0 -73
  101. package/build/cjs/utils/columnFilterRowsFn.js.map +0 -1
  102. package/build/cjs/utils/expandRowsFn.js +0 -37
  103. package/build/cjs/utils/expandRowsFn.js.map +0 -1
  104. package/build/cjs/utils/globalFilterRowsFn.js +0 -49
  105. package/build/cjs/utils/globalFilterRowsFn.js.map +0 -1
  106. package/build/cjs/utils/groupRowsFn.js +0 -155
  107. package/build/cjs/utils/groupRowsFn.js.map +0 -1
  108. package/build/cjs/utils/paginateRowsFn.js +0 -44
  109. package/build/cjs/utils/paginateRowsFn.js.map +0 -1
  110. package/build/cjs/utils/sortRowsFn.js +0 -94
  111. package/build/cjs/utils/sortRowsFn.js.map +0 -1
  112. package/build/types/utils/columnFilterRowsFn.d.ts +0 -2
  113. package/build/types/utils/expandRowsFn.d.ts +0 -2
  114. package/build/types/utils/globalFilterRowsFn.d.ts +0 -2
  115. package/build/types/utils/groupRowsFn.d.ts +0 -2
  116. package/build/types/utils/paginateRowsFn.d.ts +0 -2
  117. package/build/types/utils/sortRowsFn.d.ts +0 -2
  118. package/src/utils/columnFilterRowsFn.ts +0 -56
  119. package/src/utils/expandRowsFn.ts +0 -34
  120. package/src/utils/globalFilterRowsFn.ts +0 -39
  121. package/src/utils/groupRowsFn.ts +0 -174
  122. package/src/utils/paginateRowsFn.ts +0 -28
  123. package/src/utils/sortRowsFn.ts +0 -99
  124. package/src/utils/sortRowsQuicksortFn.ts +0 -174
@@ -109,6 +109,32 @@
109
109
  }
110
110
  function noop() {//
111
111
  }
112
+ function getBatchGroups(arr, count) {
113
+ var groups = [{
114
+ start: 0,
115
+ end: count - 1,
116
+ items: []
117
+ }];
118
+ var groupIndex = 0;
119
+ var group = groups[groupIndex];
120
+
121
+ for (var i = 0; i < arr.length; i++) {
122
+ if (i > group.end) {
123
+ groupIndex++;
124
+ groups[groupIndex] = {
125
+ start: i,
126
+ end: i + count - 1,
127
+ items: []
128
+ };
129
+ }
130
+
131
+ group = groups[groupIndex];
132
+ var _item = arr[i];
133
+ group.items.push(_item);
134
+ }
135
+
136
+ return groups;
137
+ }
112
138
  function makeStateUpdater(key, instance) {
113
139
  return function (updater) {
114
140
  instance.setState(function (old) {
@@ -151,7 +177,7 @@
151
177
  var result;
152
178
  return function () {
153
179
  var depTime;
154
- if (opts.key && opts.debug) depTime = performance.now();
180
+ if (opts.key && opts.debug) depTime = Date.now();
155
181
  var newDeps = getDeps();
156
182
  var depsChanged = newDeps.length !== deps.length || newDeps.some(function (dep, index) {
157
183
  return deps[index] !== dep;
@@ -160,15 +186,15 @@
160
186
  if (depsChanged) {
161
187
  var oldResult = result;
162
188
  var resultTime;
163
- if (opts.key && opts.debug) resultTime = performance.now();
189
+ if (opts.key && opts.debug) resultTime = Date.now();
164
190
  result = fn.apply(void 0, newDeps);
165
191
  deps = newDeps;
166
192
  opts == null ? void 0 : opts.onChange == null ? void 0 : opts.onChange(result, oldResult);
167
193
 
168
194
  if (opts.key && opts.debug) {
169
195
  if (opts != null && opts.debug()) {
170
- var depEndTime = Math.round((performance.now() - depTime) * 100) / 100;
171
- var resultEndTime = Math.round((performance.now() - resultTime) * 100) / 100;
196
+ var depEndTime = Math.round((Date.now() - depTime) * 100) / 100;
197
+ var resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;
172
198
  var resultFpsPercentage = resultEndTime / 16;
173
199
 
174
200
  var pad = function pad(str, num) {
@@ -206,22 +232,133 @@
206
232
 
207
233
  return result;
208
234
  };
209
- } // export function hashString(str: string, seed = 0): string {
210
- // let h1 = 0xdeadbeef ^ seed,
211
- // h2 = 0x41c6ce57 ^ seed
212
- // for (let i = 0, ch; i < str.length; i++) {
213
- // ch = str.charCodeAt(i)
214
- // h1 = Math.imul(h1 ^ ch, 2654435761)
215
- // h2 = Math.imul(h2 ^ ch, 1597334677)
216
- // }
217
- // h1 =
218
- // Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^
219
- // Math.imul(h2 ^ (h2 >>> 13), 3266489909)
220
- // h2 =
221
- // Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^
222
- // Math.imul(h1 ^ (h1 >>> 13), 3266489909)
223
- // return (4294967296 * (2097151 & h2) + (h1 >>> 0)).toString()
224
- // }
235
+ }
236
+ function incrementalMemo(getDeps, getInitialValue, schedule, opts) {
237
+ var _opts$timeout;
238
+
239
+ var oldDeps;
240
+ var deps;
241
+ var result;
242
+ var nextResultRef;
243
+ var tasks = [];
244
+ var totalTaskCount = 0;
245
+ var resultStartTime;
246
+ var batchIndex = 0;
247
+ var progress = 0;
248
+ var working = false;
249
+ var callback;
250
+ var timeout = (_opts$timeout = opts.timeout) != null ? _opts$timeout : 100;
251
+
252
+ var onProgress = function onProgress(latestResult, previousResult) {
253
+ progress = 1 - tasks.length / totalTaskCount;
254
+ opts.onProgress(progress, latestResult, previousResult);
255
+ };
256
+
257
+ return function () {
258
+ var scheduleFn = function scheduleFn(workFn) {
259
+ totalTaskCount++;
260
+ tasks.push(workFn);
261
+ };
262
+
263
+ var newDeps = getDeps();
264
+ var first = false;
265
+
266
+ if (!deps) {
267
+ first = true;
268
+ deps = [];
269
+ result = getInitialValue.apply(void 0, newDeps);
270
+ }
271
+
272
+ var depsChanged = newDeps.length !== deps.length || newDeps.some(function (dep, index) {
273
+ return deps[index] !== dep;
274
+ });
275
+
276
+ if (depsChanged) {
277
+ cancelIdleCallback(callback);
278
+ oldDeps = deps;
279
+ deps = newDeps;
280
+ totalTaskCount = 0;
281
+ tasks = [];
282
+ nextResultRef = {
283
+ current: getInitialValue.apply(void 0, newDeps)
284
+ };
285
+ resultStartTime = Date.now();
286
+ schedule.apply(void 0, newDeps)(nextResultRef)(scheduleFn);
287
+ }
288
+
289
+ var commitResult = function commitResult() {
290
+ cancelIdleCallback(callback);
291
+
292
+ if (opts.key && opts.debug) {
293
+ if (opts != null && opts.debug()) {
294
+ var resultEndTime = Math.round((Date.now() - resultStartTime) * 100) / 100;
295
+ var resultFpsPercentage = resultEndTime / batchIndex / 16;
296
+ console.info("%c\u23F1 " + resultEndTime + " ms / " + batchIndex + " tasks = " + Math.round(resultEndTime / batchIndex) + " ms/task", "\n font-size: .6rem;\n font-weight: bold;\n color: hsl(" + Math.max(0, Math.min(120 - 120 * resultFpsPercentage, 120)) + "deg 100% 31%);", opts == null ? void 0 : opts.key, _extends({
297
+ length: oldDeps.length + " -> " + deps.length
298
+ }, deps.map(function (_, index) {
299
+ if (oldDeps[index] !== deps[index]) {
300
+ return [index, oldDeps[index], deps[index]];
301
+ }
302
+
303
+ return false;
304
+ }).filter(Boolean).reduce(function (accu, _ref2) {
305
+ var _extends4;
306
+
307
+ var a = _ref2[0],
308
+ b = _ref2[1];
309
+ return _extends({}, accu, (_extends4 = {}, _extends4[a] = b, _extends4));
310
+ }, {}), {
311
+ parent: parent
312
+ }));
313
+ }
314
+ }
315
+
316
+ working = false;
317
+ var previousResult = result;
318
+ result = nextResultRef.current;
319
+ onProgress(result, previousResult);
320
+ opts.onChange(result, previousResult);
321
+ };
322
+
323
+ if (opts.initialSync && first) {
324
+ batchIndex = 1;
325
+ first = false;
326
+
327
+ for (var i = 0; i < tasks.length; i++) {
328
+ tasks[i]();
329
+ }
330
+
331
+ tasks = [];
332
+ commitResult();
333
+ } else if (!working && tasks.length) {
334
+ cancelIdleCallback(callback);
335
+ working = true;
336
+ batchIndex = 0;
337
+
338
+ var workLoop = function workLoop(deadline) {
339
+ while (tasks.length && deadline.timeRemaining() > 0) {
340
+ tasks.shift()();
341
+ }
342
+
343
+ if (!tasks.length) {
344
+ commitResult();
345
+ } else {
346
+ ++batchIndex;
347
+ onProgress(nextResultRef.current, result);
348
+ callback = requestIdleCallback(workLoop, {
349
+ timeout: timeout
350
+ });
351
+ }
352
+ };
353
+
354
+ callback = requestIdleCallback(workLoop, {
355
+ timeout: timeout
356
+ });
357
+ }
358
+
359
+ return result;
360
+ };
361
+ } // opts?.onChange?.(result, oldResult)
225
362
 
226
363
  //
227
364
  var defaultColumnSizing = {
@@ -552,6 +689,8 @@
552
689
  var registered = false;
553
690
  return {
554
691
  _notifyExpandedReset: function _notifyExpandedReset() {
692
+ instance._notifyPageIndexReset();
693
+
555
694
  if (!registered) {
556
695
  registered = true;
557
696
  return;
@@ -657,7 +796,7 @@
657
796
  var initialProps = {
658
797
  title: canExpand ? 'Toggle Expanded' : undefined,
659
798
  onClick: canExpand ? function (e) {
660
- e.persist();
799
+ e.persist == null ? void 0 : e.persist();
661
800
  instance.toggleRowExpanded(rowId);
662
801
  } : undefined
663
802
  };
@@ -667,7 +806,7 @@
667
806
  var initialProps = {
668
807
  title: 'Toggle All Expanded',
669
808
  onClick: function onClick(e) {
670
- e.persist();
809
+ e.persist == null ? void 0 : e.persist();
671
810
  instance.toggleAllRowsExpanded();
672
811
  }
673
812
  };
@@ -703,25 +842,19 @@
703
842
  });
704
843
  return maxDepth;
705
844
  },
706
- getExpandedRowModel: memo(function () {
707
- return [instance.getState().expanded, instance.getGroupedRowModel(), instance.options.expandRowsFn, instance.options.paginateExpandedRows];
708
- }, function (expanded, rowModel, expandRowsFn, paginateExpandedRows) {
709
- if (!expandRowsFn || // Do not expand if rows are not included in pagination
710
- !paginateExpandedRows || expanded !== true && !Object.keys(expanded != null ? expanded : {}).length) {
711
- return rowModel;
845
+ getPreExpandedRowModel: function getPreExpandedRowModel() {
846
+ return instance.getGroupedRowModel();
847
+ },
848
+ getExpandedRowModel: function getExpandedRowModel() {
849
+ if (!instance._getExpandedRowModel && instance.options.getExpandedRowModel) {
850
+ instance._getExpandedRowModel = instance.options.getExpandedRowModel(instance);
712
851
  }
713
852
 
714
- return expandRowsFn(instance, rowModel);
715
- }, {
716
- key: 'getExpandedRowModel',
717
- debug: function debug() {
718
- var _instance$options$deb;
719
-
720
- return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugTable;
853
+ if (!instance._getExpandedRowModel) {
854
+ return instance.getPreExpandedRowModel();
721
855
  }
722
- }),
723
- getPreExpandedRowModel: function getPreExpandedRowModel() {
724
- return instance.getGroupedRowModel();
856
+
857
+ return instance._getExpandedRowModel();
725
858
  }
726
859
  };
727
860
  },
@@ -909,7 +1042,9 @@
909
1042
  getInitialState: function getInitialState() {
910
1043
  return {
911
1044
  columnFilters: [],
912
- globalFilter: undefined
1045
+ globalFilter: undefined,
1046
+ columnFiltersProgress: 1,
1047
+ globalFilterProgress: 1
913
1048
  };
914
1049
  },
915
1050
  getDefaultOptions: function getDefaultOptions(instance) {
@@ -1008,6 +1143,8 @@
1008
1143
  var registered = false;
1009
1144
  return {
1010
1145
  _notifyFiltersReset: function _notifyFiltersReset() {
1146
+ instance._notifySortingReset();
1147
+
1011
1148
  if (!registered) {
1012
1149
  registered = true;
1013
1150
  return;
@@ -1017,16 +1154,12 @@
1017
1154
  return;
1018
1155
  }
1019
1156
 
1020
- if (instance.options.autoResetAll === true) {
1021
- instance.resetSorting();
1022
- } else {
1023
- if (instance.options.autoResetColumnFilters) {
1024
- instance.resetColumnFilters();
1025
- }
1157
+ if (instance.options.autoResetAll === true || instance.options.autoResetColumnFilters) {
1158
+ instance.resetColumnFilters();
1159
+ }
1026
1160
 
1027
- if (instance.options.autoResetGlobalFilter) {
1028
- instance.resetGlobalFilter();
1029
- }
1161
+ if (instance.options.autoResetAll === true || instance.options.autoResetGlobalFilter) {
1162
+ instance.resetGlobalFilter();
1030
1163
  }
1031
1164
  },
1032
1165
  getColumnAutoFilterFn: function getColumnAutoFilterFn(columnId) {
@@ -1103,7 +1236,7 @@
1103
1236
  instance.options.onGlobalFilterChange == null ? void 0 : instance.options.onGlobalFilterChange(updater, functionalUpdate(updater, instance.getState().globalFilter));
1104
1237
  },
1105
1238
  resetGlobalFilter: function resetGlobalFilter() {
1106
- instance.setGlobalFilter(undefined);
1239
+ instance.setGlobalFilter(instance.initialState.globalFilter);
1107
1240
  },
1108
1241
  getColumnCanColumnFilter: function getColumnCanColumnFilter(columnId) {
1109
1242
  var _ref3, _ref4, _ref5, _ref6, _ref7, _column$enableAllFilt;
@@ -1206,84 +1339,31 @@
1206
1339
  getPreColumnFilteredRowModel: function getPreColumnFilteredRowModel() {
1207
1340
  return instance.getCoreRowModel();
1208
1341
  },
1209
- getColumnFilteredRowModel: memo(function () {
1210
- return [instance.getState().columnFilters, instance.getCoreRowModel(), instance.options.columnFilterRowsFn];
1211
- }, function (columnFilters, rowModel, columnFiltersFn) {
1212
- var columnFilteredRowModel = function () {
1213
- if (!(columnFilters != null && columnFilters.length) || !columnFiltersFn) {
1214
- return rowModel;
1215
- }
1216
-
1217
- return columnFiltersFn(instance, rowModel);
1218
- }(); // Now that each filtered column has it's partially filtered rows,
1219
- // lets assign the final filtered rows to all of the other columns
1220
-
1221
-
1222
- var nonFilteredColumns = instance.getAllLeafColumns().filter(function (column) {
1223
- var _instance$getState$co5;
1224
-
1225
- return !((_instance$getState$co5 = instance.getState().columnFilters) != null && _instance$getState$co5.find(function (d) {
1226
- return d.id === column.id;
1227
- }));
1228
- }); // This essentially enables faceted filter options to be built easily
1229
- // using every column's preFilteredRows value
1230
-
1231
- nonFilteredColumns.forEach(function (column) {
1232
- column.getPreFilteredRows = function () {
1233
- return columnFilteredRowModel.rows;
1234
- };
1235
- });
1236
- return columnFilteredRowModel;
1237
- }, {
1238
- key: 'getColumnFilteredRowModel',
1239
- debug: function debug() {
1240
- var _instance$options$deb2;
1342
+ getColumnFilteredRowModel: function getColumnFilteredRowModel() {
1343
+ if (!instance._getColumnFilteredRowModel && instance.options.getColumnFilteredRowModel) {
1344
+ instance._getColumnFilteredRowModel = instance.options.getColumnFilteredRowModel(instance);
1345
+ }
1241
1346
 
1242
- return (_instance$options$deb2 = instance.options.debugAll) != null ? _instance$options$deb2 : instance.options.debugTable;
1347
+ if (!instance._getColumnFilteredRowModel) {
1348
+ return instance.getPreColumnFilteredRowModel();
1243
1349
  }
1244
- }),
1350
+
1351
+ return instance._getColumnFilteredRowModel();
1352
+ },
1245
1353
  getPreGlobalFilteredRowModel: function getPreGlobalFilteredRowModel() {
1246
1354
  return instance.getColumnFilteredRowModel();
1247
1355
  },
1248
- getGlobalFilteredRowModel: memo(function () {
1249
- return [instance.getState().globalFilter, instance.getColumnFilteredRowModel(), instance.options.globalFilterRowsFn];
1250
- }, function (globalFilterValue, columnFilteredRowModel, globalFiltersFn) {
1251
- var globalFilteredRowModel = function () {
1252
- if (!globalFiltersFn || !globalFilterValue) {
1253
- return columnFilteredRowModel;
1254
- }
1255
-
1256
- return globalFiltersFn(instance, columnFilteredRowModel);
1257
- }(); // Now that each filtered column has it's partially filtered rows,
1258
- // lets assign the final filtered rows to all of the other columns
1259
-
1260
-
1261
- var nonFilteredColumns = instance.getAllLeafColumns().filter(function (column) {
1262
- var _instance$getState$co6;
1263
-
1264
- return !((_instance$getState$co6 = instance.getState().columnFilters) != null && _instance$getState$co6.find(function (d) {
1265
- return d.id === column.id;
1266
- }));
1267
- }); // This essentially enables faceted filter options to be built easily
1268
- // using every column's preFilteredRows value
1269
-
1270
- nonFilteredColumns.forEach(function (column) {
1271
- column.getPreFilteredRows = function () {
1272
- return globalFilteredRowModel.rows;
1273
- };
1274
- });
1275
- return globalFilteredRowModel;
1276
- }, {
1277
- key: 'getGlobalFilteredRowModel',
1278
- debug: function debug() {
1279
- var _instance$options$deb3;
1356
+ getGlobalFilteredRowModel: function getGlobalFilteredRowModel() {
1357
+ if (!instance._getGlobalFilteredRowModel && instance.options.getGlobalFilteredRowModel) {
1358
+ instance._getGlobalFilteredRowModel = instance.options.getGlobalFilteredRowModel(instance);
1359
+ }
1280
1360
 
1281
- return (_instance$options$deb3 = instance.options.debugAll) != null ? _instance$options$deb3 : instance.options.debugTable;
1282
- },
1283
- onChange: function onChange() {
1284
- instance._notifySortingReset();
1361
+ if (!instance._getGlobalFilteredRowModel) {
1362
+ return instance.getPreGlobalFilteredRowModel();
1285
1363
  }
1286
- })
1364
+
1365
+ return instance._getGlobalFilteredRowModel();
1366
+ }
1287
1367
  };
1288
1368
  }
1289
1369
  };
@@ -1448,6 +1528,8 @@
1448
1528
  var registered = false;
1449
1529
  return {
1450
1530
  _notifyGroupingReset: function _notifyGroupingReset() {
1531
+ instance._notifyExpandedReset();
1532
+
1451
1533
  if (!registered) {
1452
1534
  registered = true;
1453
1535
  return;
@@ -1547,25 +1629,17 @@
1547
1629
  getPreGroupedRowModel: function getPreGroupedRowModel() {
1548
1630
  return instance.getSortedRowModel();
1549
1631
  },
1550
- getGroupedRowModel: memo(function () {
1551
- return [instance.getState().grouping, instance.getSortedRowModel(), instance.options.groupRowsFn];
1552
- }, function (grouping, rowModel, groupRowsFn) {
1553
- if (!groupRowsFn || !grouping.length) {
1554
- return rowModel;
1632
+ getGroupedRowModel: function getGroupedRowModel() {
1633
+ if (!instance._getGroupedRowModel && instance.options.getGroupedRowModel) {
1634
+ instance._getGroupedRowModel = instance.options.getGroupedRowModel(instance);
1555
1635
  }
1556
1636
 
1557
- return groupRowsFn(instance, rowModel);
1558
- }, {
1559
- key: 'getGroupedRowModel',
1560
- debug: function debug() {
1561
- var _instance$options$deb;
1562
-
1563
- return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugTable;
1564
- },
1565
- onChange: function onChange() {
1566
- return instance._notifyExpandedReset();
1637
+ if (!instance._getGroupedRowModel) {
1638
+ return instance.getPreGroupedRowModel();
1567
1639
  }
1568
- })
1640
+
1641
+ return instance._getGroupedRowModel();
1642
+ }
1569
1643
  };
1570
1644
  },
1571
1645
  createRow: function createRow(row, instance) {
@@ -1808,9 +1882,7 @@
1808
1882
  return instance.getState().pagination.pageIndex > 0;
1809
1883
  },
1810
1884
  getCanNextPage: function getCanNextPage() {
1811
- var _instance$getState$pa = instance.getState().pagination,
1812
- pageIndex = _instance$getState$pa.pageIndex,
1813
- pageSize = _instance$getState$pa.pageSize;
1885
+ var pageIndex = instance.getState().pagination.pageIndex;
1814
1886
  var pageCount = instance.getPageCount();
1815
1887
 
1816
1888
  if (pageCount === -1) {
@@ -1821,7 +1893,7 @@
1821
1893
  return false;
1822
1894
  }
1823
1895
 
1824
- return pageIndex < Math.ceil(instance.getPrePaginationRowModel().rows.length / pageSize) - 1;
1896
+ return pageIndex < pageCount - 1;
1825
1897
  },
1826
1898
  previousPage: function previousPage() {
1827
1899
  return instance.setPageIndex(function (old) {
@@ -1836,22 +1908,17 @@
1836
1908
  getPrePaginationRowModel: function getPrePaginationRowModel() {
1837
1909
  return instance.getExpandedRowModel();
1838
1910
  },
1839
- getPaginationRowModel: memo(function () {
1840
- return [instance.getState().pagination, instance.getExpandedRowModel(), instance.options.paginateRowsFn];
1841
- }, function (_pagination, rowModel, paginateRowsFn) {
1842
- if (!paginateRowsFn || !rowModel.rows.length) {
1843
- return rowModel;
1911
+ getPaginationRowModel: function getPaginationRowModel() {
1912
+ if (!instance._getPaginationRowModel && instance.options.getPaginationRowModel) {
1913
+ instance._getPaginationRowModel = instance.options.getPaginationRowModel(instance);
1844
1914
  }
1845
1915
 
1846
- return paginateRowsFn(instance, rowModel);
1847
- }, {
1848
- key: 'getPaginationRowModel',
1849
- debug: function debug() {
1850
- var _instance$options$deb2;
1851
-
1852
- return (_instance$options$deb2 = instance.options.debugAll) != null ? _instance$options$deb2 : instance.options.debugTable;
1916
+ if (!instance._getPaginationRowModel) {
1917
+ return instance.getPrePaginationRowModel();
1853
1918
  }
1854
- }),
1919
+
1920
+ return instance._getPaginationRowModel();
1921
+ },
1855
1922
  getPageCount: function getPageCount() {
1856
1923
  var pageCount = instance.getState().pagination.pageCount;
1857
1924
 
@@ -2169,7 +2236,9 @@
2169
2236
  return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugTable;
2170
2237
  },
2171
2238
  onChange: function onChange() {
2172
- return instance._notifyExpandedReset();
2239
+ instance.queue(function () {
2240
+ return instance._notifyExpandedReset();
2241
+ });
2173
2242
  }
2174
2243
  }),
2175
2244
  getFilteredSelectedRowModel: memo(function () {
@@ -2192,7 +2261,9 @@
2192
2261
  return (_instance$options$deb2 = instance.options.debugAll) != null ? _instance$options$deb2 : instance.options.debugTable;
2193
2262
  },
2194
2263
  onChange: function onChange() {
2195
- return instance._notifyExpandedReset();
2264
+ return instance.queue(function () {
2265
+ return instance._notifyExpandedReset();
2266
+ });
2196
2267
  }
2197
2268
  }),
2198
2269
  getGroupedSelectedRowModel: memo(function () {
@@ -2215,7 +2286,9 @@
2215
2286
  return (_instance$options$deb3 = instance.options.debugAll) != null ? _instance$options$deb3 : instance.options.debugTable;
2216
2287
  },
2217
2288
  onChange: function onChange() {
2218
- return instance._notifyExpandedReset();
2289
+ return instance.queue(function () {
2290
+ return instance._notifyExpandedReset();
2291
+ });
2219
2292
  }
2220
2293
  }),
2221
2294
  ///
@@ -2661,6 +2734,8 @@
2661
2734
  var registered = false;
2662
2735
  return {
2663
2736
  _notifySortingReset: function _notifySortingReset() {
2737
+ instance._notifyGroupingReset();
2738
+
2664
2739
  if (!registered) {
2665
2740
  registered = true;
2666
2741
  return;
@@ -2882,7 +2957,7 @@
2882
2957
  var initialProps = {
2883
2958
  title: canSort ? 'Toggle Sorting' : undefined,
2884
2959
  onClick: canSort ? function (e) {
2885
- e.persist();
2960
+ e.persist == null ? void 0 : e.persist();
2886
2961
  column.toggleSorting == null ? void 0 : column.toggleSorting(undefined, column.getCanMultiSort() ? instance.options.isMultiSortEvent == null ? void 0 : instance.options.isMultiSortEvent(e) : false);
2887
2962
  } : undefined
2888
2963
  };
@@ -2891,25 +2966,17 @@
2891
2966
  getPreSortedRowModel: function getPreSortedRowModel() {
2892
2967
  return instance.getGlobalFilteredRowModel();
2893
2968
  },
2894
- getSortedRowModel: memo(function () {
2895
- return [instance.getState().sorting, instance.getGlobalFilteredRowModel(), instance.options.sortRowsFn];
2896
- }, function (sorting, rowModel, sortingFn) {
2897
- if (!sortingFn || !(sorting != null && sorting.length)) {
2898
- return rowModel;
2969
+ getSortedRowModel: function getSortedRowModel() {
2970
+ if (!instance._getSortedRowModel && instance.options.getSortedRowModel) {
2971
+ instance._getSortedRowModel = instance.options.getSortedRowModel(instance);
2899
2972
  }
2900
2973
 
2901
- return sortingFn(instance, rowModel);
2902
- }, {
2903
- key: 'getSortedRowModel',
2904
- debug: function debug() {
2905
- var _instance$options$deb;
2906
-
2907
- return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugTable;
2908
- },
2909
- onChange: function onChange() {
2910
- instance._notifyGroupingReset();
2974
+ if (!instance._getSortedRowModel) {
2975
+ return instance.getPreSortedRowModel();
2911
2976
  }
2912
- })
2977
+
2978
+ return instance._getSortedRowModel();
2979
+ }
2913
2980
  };
2914
2981
  }
2915
2982
  };
@@ -3695,20 +3762,50 @@
3695
3762
  };
3696
3763
 
3697
3764
  instance.options = buildOptions(options);
3765
+ var coreInitialState = {
3766
+ coreProgress: 1
3767
+ };
3698
3768
 
3699
- var initialState = _extends({}, features.reduce(function (obj, feature) {
3769
+ var initialState = _extends({}, coreInitialState, features.reduce(function (obj, feature) {
3700
3770
  return Object.assign(obj, feature.getInitialState == null ? void 0 : feature.getInitialState());
3701
3771
  }, {}), (_options$initialState = options.initialState) != null ? _options$initialState : {});
3702
3772
 
3773
+ var queued = [];
3774
+ var queuedTimeout;
3775
+
3703
3776
  var finalInstance = _extends({}, instance, features.reduce(function (obj, feature) {
3704
3777
  return Object.assign(obj, feature.getInstance == null ? void 0 : feature.getInstance(instance));
3705
3778
  }, {}), {
3779
+ queue: function queue(cb) {
3780
+ queued.push(cb);
3781
+
3782
+ if (!queuedTimeout) {
3783
+ queuedTimeout = setTimeout(function () {
3784
+ instance.setState(function (old) {
3785
+ return _extends({}, old);
3786
+ });
3787
+ });
3788
+ }
3789
+ },
3790
+ willUpdate: function willUpdate() {
3791
+ clearTimeout(queuedTimeout);
3792
+
3793
+ while (queued.length) {
3794
+ queued.shift()();
3795
+ }
3796
+ },
3706
3797
  initialState: initialState,
3707
3798
  reset: function reset() {
3708
3799
  instance.setState(instance.initialState);
3709
3800
  },
3710
3801
  setOptions: function setOptions(updater) {
3711
- instance.options = buildOptions(functionalUpdate(updater, instance.options));
3802
+ var newOptions = functionalUpdate(updater, instance.options);
3803
+
3804
+ if (instance.options.mergeOptions) {
3805
+ instance.options = instance.options.mergeOptions(defaultOptions, newOptions);
3806
+ } else {
3807
+ instance.options = buildOptions(newOptions);
3808
+ }
3712
3809
  },
3713
3810
  render: function render(template, props) {
3714
3811
  if (typeof instance.options.render === 'function') {
@@ -4002,85 +4099,13 @@
4002
4099
 
4003
4100
  return row;
4004
4101
  },
4005
- getCoreRowModel: memo(function () {
4006
- return [instance.options.data];
4007
- }, function (data) {
4008
- // Access the row model using initial columns
4009
- var rows = [];
4010
- var flatRows = [];
4011
- var rowsById = {};
4012
- var leafColumns = instance.getAllLeafColumns();
4013
-
4014
- var accessRow = function accessRow(originalRow, rowIndex, depth, parentRows, parent) {
4015
- if (depth === void 0) {
4016
- depth = 0;
4017
- }
4018
-
4019
- var id = instance.getRowId(originalRow, rowIndex, parent);
4020
-
4021
- if (!id) {
4022
- {
4023
- throw new Error("getRowId expected an ID, but got " + id);
4024
- }
4025
- }
4026
-
4027
- var values = {};
4028
-
4029
- for (var i = 0; i < leafColumns.length; i++) {
4030
- var _column = leafColumns[i];
4031
-
4032
- if (_column && _column.accessorFn) {
4033
- values[_column.id] = _column.accessorFn(originalRow, rowIndex);
4034
- }
4035
- } // Make the row
4036
-
4037
-
4038
- var row = instance.createRow(id, originalRow, rowIndex, depth, values); // Push instance row into the parentRows array
4039
-
4040
- parentRows.push(row); // Keep track of every row in a flat array
4041
-
4042
- flatRows.push(row); // Also keep track of every row by its ID
4043
-
4044
- rowsById[id] = row; // Get the original subrows
4045
-
4046
- if (instance.options.getSubRows) {
4047
- var originalSubRows = instance.options.getSubRows(originalRow, rowIndex); // Then recursively access them
4048
-
4049
- if (originalSubRows != null && originalSubRows.length) {
4050
- row.originalSubRows = originalSubRows;
4051
- var subRows = [];
4052
-
4053
- for (var _i = 0; _i < row.originalSubRows.length; _i++) {
4054
- accessRow(row.originalSubRows[_i], _i, depth + 1, subRows, row);
4055
- }
4056
-
4057
- row.subRows = subRows;
4058
- }
4059
- }
4060
- };
4061
-
4062
- for (var i = 0; i < data.length; i++) {
4063
- accessRow(data[i], i, 0, rows);
4102
+ getCoreRowModel: function getCoreRowModel() {
4103
+ if (!instance._getCoreRowModel) {
4104
+ instance._getCoreRowModel = instance.options.getCoreRowModel(instance);
4064
4105
  }
4065
4106
 
4066
- return {
4067
- rows: rows,
4068
- flatRows: flatRows,
4069
- rowsById: rowsById
4070
- };
4071
- }, {
4072
- key: 'getRowModel',
4073
- debug: function debug() {
4074
- var _instance$options$deb10;
4075
-
4076
- return (_instance$options$deb10 = instance.options.debugAll) != null ? _instance$options$deb10 : instance.options.debugTable;
4077
- },
4078
- onChange: function onChange() {
4079
- instance._notifyFiltersReset();
4080
-
4081
- instance._notifyRowSelectionReset();
4082
- }
4083
- }),
4107
+ return instance._getCoreRowModel();
4108
+ },
4084
4109
  // The final calls start at the bottom of the model,
4085
4110
  // expanded rows, which then work their way up
4086
4111
  getRowModel: function getRowModel() {
@@ -4177,6 +4202,18 @@
4177
4202
  return (_instance$getRightHea = (_instance$getRightHea2 = instance.getRightHeaderGroups()[0]) == null ? void 0 : _instance$getRightHea2.headers.reduce(function (sum, header) {
4178
4203
  return sum + header.getWidth();
4179
4204
  }, 0)) != null ? _instance$getRightHea : 0;
4205
+ },
4206
+ getOverallProgress: function getOverallProgress() {
4207
+ var _instance$getState = instance.getState(),
4208
+ coreProgress = _instance$getState.coreProgress,
4209
+ columnFiltersProgress = _instance$getState.columnFiltersProgress,
4210
+ globalFilterProgress = _instance$getState.globalFilterProgress;
4211
+
4212
+ return mean(function () {
4213
+ return [coreProgress, columnFiltersProgress, globalFilterProgress].filter(function (d) {
4214
+ return d < 1;
4215
+ });
4216
+ });
4180
4217
  }
4181
4218
  });
4182
4219
 
@@ -4245,14 +4282,208 @@
4245
4282
  };
4246
4283
  }
4247
4284
 
4248
- function filterRowModelFromLeafs(rowsToFilter, filterRows, instance) {
4249
- var newFilteredFlatRows = [];
4250
- var newFilteredRowsById = {};
4251
-
4252
- var recurseFilterRows = function recurseFilterRows(rowsToFilter, depth) {
4253
- if (depth === void 0) {
4254
- depth = 0;
4255
- }
4285
+ function getCoreRowModelSync() {
4286
+ return function (instance) {
4287
+ return memo(function () {
4288
+ return [instance.options.data];
4289
+ }, function (data) {
4290
+ // Access the row model using initial columns
4291
+ var rows = [];
4292
+ var flatRows = [];
4293
+ var rowsById = {};
4294
+ var leafColumns = instance.getAllLeafColumns();
4295
+
4296
+ var accessRow = function accessRow(originalRow, rowIndex, depth, parentRows, parent) {
4297
+ if (depth === void 0) {
4298
+ depth = 0;
4299
+ }
4300
+
4301
+ var id = instance.getRowId(originalRow, rowIndex, parent);
4302
+
4303
+ if (!id) {
4304
+ {
4305
+ throw new Error("getRowId expected an ID, but got " + id);
4306
+ }
4307
+ }
4308
+
4309
+ var values = {};
4310
+
4311
+ for (var i = 0; i < leafColumns.length; i++) {
4312
+ var column = leafColumns[i];
4313
+
4314
+ if (column && column.accessorFn) {
4315
+ values[column.id] = column.accessorFn(originalRow, rowIndex);
4316
+ }
4317
+ } // Make the row
4318
+
4319
+
4320
+ var row = instance.createRow(id, originalRow, rowIndex, depth, values); // Push instance row into the parentRows array
4321
+
4322
+ parentRows.push(row); // Keep track of every row in a flat array
4323
+
4324
+ flatRows.push(row); // Also keep track of every row by its ID
4325
+
4326
+ rowsById[id] = row; // Get the original subrows
4327
+
4328
+ if (instance.options.getSubRows) {
4329
+ var originalSubRows = instance.options.getSubRows(originalRow, rowIndex); // Then recursively access them
4330
+
4331
+ if (originalSubRows != null && originalSubRows.length) {
4332
+ row.originalSubRows = originalSubRows;
4333
+ var subRows = [];
4334
+
4335
+ for (var _i = 0; _i < row.originalSubRows.length; _i++) {
4336
+ accessRow(row.originalSubRows[_i], _i, depth + 1, subRows, row);
4337
+ }
4338
+
4339
+ row.subRows = subRows;
4340
+ }
4341
+ }
4342
+ };
4343
+
4344
+ for (var i = 0; i < data.length; i++) {
4345
+ accessRow(data[i], i, 0, rows);
4346
+ }
4347
+
4348
+ return {
4349
+ rows: rows,
4350
+ flatRows: flatRows,
4351
+ rowsById: rowsById
4352
+ };
4353
+ }, {
4354
+ key: 'getRowModel',
4355
+ debug: function debug() {
4356
+ var _instance$options$deb;
4357
+
4358
+ return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugTable;
4359
+ },
4360
+ onChange: function onChange() {
4361
+ instance.queue(function () {
4362
+ instance._notifyFiltersReset();
4363
+
4364
+ instance._notifyRowSelectionReset();
4365
+ });
4366
+ }
4367
+ });
4368
+ };
4369
+ }
4370
+
4371
+ function getCoreRowModelAsync(opts) {
4372
+ return function (instance) {
4373
+ return incrementalMemo(function () {
4374
+ return [instance.options.data, instance.getAllLeafColumns()];
4375
+ }, function () {
4376
+ var rows = [];
4377
+ var flatRows = [];
4378
+ var rowsById = {};
4379
+ return {
4380
+ rows: rows,
4381
+ flatRows: flatRows,
4382
+ rowsById: rowsById
4383
+ };
4384
+ }, function (data, leafColumns) {
4385
+ return function (rowModelRef) {
4386
+ return function (scheduleTask) {
4387
+ var accessRows = function accessRows(originalRows, depth, parent) {
4388
+ if (depth === void 0) {
4389
+ depth = 0;
4390
+ }
4391
+
4392
+ var batchGroups = getBatchGroups(originalRows, 2000);
4393
+
4394
+ var _loop = function _loop(i) {
4395
+ var batchGroup = batchGroups[i];
4396
+ scheduleTask(function () {
4397
+ for (var _i = 0; _i < batchGroup.items.length; _i++) {
4398
+ var originalRow = batchGroup.items[_i];
4399
+ var rowIndex = batchGroup.start + _i;
4400
+ var id = instance.getRowId(originalRow, rowIndex, parent);
4401
+
4402
+ if (!id) {
4403
+ {
4404
+ throw new Error("getRowId expected an ID, but got " + id);
4405
+ }
4406
+ }
4407
+
4408
+ var values = {};
4409
+
4410
+ for (var _i2 = 0; _i2 < leafColumns.length; _i2++) {
4411
+ var column = leafColumns[_i2];
4412
+
4413
+ if (column && column.accessorFn) {
4414
+ values[column.id] = column.accessorFn(originalRow, rowIndex);
4415
+ }
4416
+ } // Make the row
4417
+
4418
+
4419
+ var row = instance.createRow(id, originalRow, rowIndex, depth, values); // Push instance row into the parentRows array
4420
+
4421
+ if (parent) {
4422
+ parent.subRows.push(row);
4423
+ } else {
4424
+ rowModelRef.current.rows.push(row);
4425
+ } // Keep track of every row in a flat array
4426
+
4427
+
4428
+ rowModelRef.current.flatRows.push(row); // Also keep track of every row by its ID
4429
+
4430
+ rowModelRef.current.rowsById[id] = row; // Get the original subrows
4431
+
4432
+ if (instance.options.getSubRows) {
4433
+ var originalSubRows = instance.options.getSubRows(originalRow, rowIndex); // Then recursively access them
4434
+
4435
+ if (originalSubRows != null && originalSubRows.length) {
4436
+ row.originalSubRows = originalSubRows;
4437
+ row.subRows = [];
4438
+ accessRows(row.originalSubRows, depth + 1, row);
4439
+ }
4440
+ }
4441
+ }
4442
+ });
4443
+ };
4444
+
4445
+ for (var i = 0; i < batchGroups.length; i++) {
4446
+ _loop(i);
4447
+ }
4448
+ };
4449
+
4450
+ accessRows(data);
4451
+ };
4452
+ };
4453
+ }, {
4454
+ key: 'getRowModel',
4455
+ initialSync: opts == null ? void 0 : opts.initialSync,
4456
+ onProgress: function onProgress(progress) {
4457
+ instance.setState(function (old) {
4458
+ return _extends({}, old, {
4459
+ coreProgress: progress
4460
+ });
4461
+ });
4462
+ },
4463
+ debug: function debug() {
4464
+ var _instance$options$deb;
4465
+
4466
+ return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugTable;
4467
+ },
4468
+ onChange: function onChange() {
4469
+ instance.queue(function () {
4470
+ instance._notifyFiltersReset();
4471
+
4472
+ instance._notifyRowSelectionReset();
4473
+ });
4474
+ }
4475
+ });
4476
+ };
4477
+ }
4478
+
4479
+ function filterRowModelFromLeafs(rowsToFilter, filterRows, instance) {
4480
+ var newFilteredFlatRows = [];
4481
+ var newFilteredRowsById = {};
4482
+
4483
+ var recurseFilterRows = function recurseFilterRows(rowsToFilter, depth) {
4484
+ if (depth === void 0) {
4485
+ depth = 0;
4486
+ }
4256
4487
 
4257
4488
  rowsToFilter = rowsToFilter.slice(); // Filter from children up first
4258
4489
 
@@ -4328,259 +4559,386 @@
4328
4559
  };
4329
4560
  }
4330
4561
 
4331
- function columnFilterRowsFn(instance, rowModel) {
4332
- var columnFilters = instance.getState().columnFilters;
4333
- var filterFromLeafRows = instance.options.filterFromLeafRows;
4334
-
4335
- var filterRows = function filterRows(rowsToFilter, depth) {
4336
- for (var i = 0; i < columnFilters.length; i++) {
4337
- var _columnFilters$i = columnFilters[i],
4338
- columnId = _columnFilters$i.id,
4339
- filterValue = _columnFilters$i.value; // Find the columnFilters column
4562
+ function getColumnFilteredRowModelSync() {
4563
+ return function (instance) {
4564
+ return memo(function () {
4565
+ return [instance.getState().columnFilters, instance.getCoreRowModel()];
4566
+ }, function (columnFilters, rowModel) {
4567
+ var columnFilteredRowModel = function () {
4568
+ if (!rowModel.rows.length || !columnFilters) {
4569
+ return rowModel;
4570
+ }
4340
4571
 
4341
- var column = instance.getColumn(columnId);
4572
+ var filterFromLeafRows = instance.options.filterFromLeafRows;
4342
4573
 
4343
- if (!column) {
4344
- {
4345
- console.warn("Table: Could not find a column with id: " + columnId);
4346
- }
4574
+ var filterRows = function filterRows(rowsToFilter, depth) {
4575
+ for (var i = 0; i < columnFilters.length; i++) {
4576
+ var _columnFilters$i = columnFilters[i],
4577
+ columnId = _columnFilters$i.id,
4578
+ filterValue = _columnFilters$i.value; // Find the columnFilters column
4347
4579
 
4348
- throw new Error();
4349
- }
4580
+ var column = instance.getColumn(columnId);
4350
4581
 
4351
- if (depth === 0) {
4352
- (function () {
4353
- var preFilteredRows = [].concat(rowsToFilter);
4582
+ if (!column) {
4583
+ {
4584
+ console.warn("Table: Could not find a column with id: " + columnId);
4585
+ }
4354
4586
 
4355
- column.getPreFilteredRows = function () {
4356
- return preFilteredRows;
4357
- };
4358
- })();
4359
- }
4587
+ throw new Error();
4588
+ }
4360
4589
 
4361
- var filterFn = instance.getColumnFilterFn(column.id);
4590
+ if (depth === 0) {
4591
+ (function () {
4592
+ var preFilteredRows = [].concat(rowsToFilter);
4362
4593
 
4363
- if (!filterFn) {
4364
- {
4365
- console.warn("Could not find a valid 'column.filterType' for column with the ID: " + column.id + ".");
4366
- }
4594
+ column.getPreFilteredRows = function () {
4595
+ return preFilteredRows;
4596
+ };
4597
+ })();
4598
+ }
4367
4599
 
4368
- continue;
4369
- } // Pass the rows, id, filterValue and column to the filterFn
4370
- // to get the filtered rows back
4600
+ var filterFn = instance.getColumnFilterFn(column.id);
4371
4601
 
4602
+ if (!filterFn) {
4603
+ {
4604
+ console.warn("Could not find a valid 'column.filterType' for column with the ID: " + column.id + ".");
4605
+ }
4372
4606
 
4373
- rowsToFilter = filterFn(rowsToFilter, [columnId], filterValue);
4374
- }
4607
+ continue;
4608
+ } // Pass the rows, id, filterValue and column to the filterFn
4609
+ // to get the filtered rows back
4375
4610
 
4376
- return rowsToFilter;
4377
- };
4378
4611
 
4379
- if (filterFromLeafRows) {
4380
- return filterRowModelFromLeafs(rowModel.rows, filterRows, instance);
4381
- }
4612
+ rowsToFilter = filterFn(rowsToFilter, [columnId], filterValue);
4613
+ }
4382
4614
 
4383
- return filterRowModelFromRoot(rowModel.rows, filterRows, instance);
4384
- }
4615
+ return rowsToFilter;
4616
+ };
4385
4617
 
4386
- function globalFilterRowsFn(instance, rowModel) {
4387
- var globalFilter = instance.getState().globalFilter;
4388
- var filterFromLeafRows = instance.options.filterFromLeafRows;
4389
- var filterFn = instance.getGlobalFilterFn();
4618
+ if (filterFromLeafRows) {
4619
+ return filterRowModelFromLeafs(rowModel.rows, filterRows, instance);
4620
+ }
4390
4621
 
4391
- if (!filterFn) {
4392
- {
4393
- console.warn("Could not find a valid 'globalFilterType'");
4394
- }
4622
+ return filterRowModelFromRoot(rowModel.rows, filterRows, instance);
4623
+ }(); // Now that each filtered column has it's partially filtered rows,
4624
+ // lets assign the final filtered rows to all of the other columns
4395
4625
 
4396
- return rowModel;
4397
- }
4398
4626
 
4399
- var filterableColumns = instance.getAllLeafColumns().filter(function (column) {
4400
- return column.getCanGlobalFilter();
4401
- });
4402
- var filterableColumnIds = filterableColumns.map(function (d) {
4403
- return d.id;
4404
- });
4627
+ var nonFilteredColumns = instance.getAllLeafColumns().filter(function (column) {
4628
+ var _instance$getState$co;
4405
4629
 
4406
- var filterRows = function filterRows(rows) {
4407
- return filterFn(rows, filterableColumnIds, globalFilter);
4408
- };
4630
+ return !((_instance$getState$co = instance.getState().columnFilters) != null && _instance$getState$co.find(function (d) {
4631
+ return d.id === column.id;
4632
+ }));
4633
+ }); // This essentially enables faceted filter options to be built easily
4634
+ // using every column's preFilteredRows value
4409
4635
 
4410
- if (filterFromLeafRows) {
4411
- filterRowModelFromLeafs(rowModel.rows, filterRows, instance);
4412
- }
4636
+ nonFilteredColumns.forEach(function (column) {
4637
+ column.getPreFilteredRows = function () {
4638
+ return columnFilteredRowModel.rows;
4639
+ };
4640
+ });
4641
+ return columnFilteredRowModel;
4642
+ }, {
4643
+ key: 'getColumnFilteredRowModelSync',
4644
+ debug: function debug() {
4645
+ var _instance$options$deb;
4413
4646
 
4414
- return filterRowModelFromRoot(rowModel.rows, filterRows, instance);
4647
+ return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugTable;
4648
+ },
4649
+ onChange: function onChange() {
4650
+ instance.queue(function () {
4651
+ instance._notifySortingReset();
4652
+ });
4653
+ }
4654
+ });
4655
+ };
4415
4656
  }
4416
4657
 
4417
- function sortRowsFn(instance, rowModel) {
4418
- var sortingState = instance.getState().sorting;
4419
- var sortedFlatRows = []; // Filter out sortings that correspond to non existing columns
4658
+ function getGlobalFilteredRowModelSync() {
4659
+ return function (instance) {
4660
+ return memo(function () {
4661
+ return [instance.getState().globalFilter, instance.getCoreRowModel()];
4662
+ }, function (globalFilter, rowModel) {
4663
+ var globalFilteredRowModel = function () {
4664
+ if (!rowModel.rows.length || !globalFilter) {
4665
+ return rowModel;
4666
+ }
4420
4667
 
4421
- var availableSorting = sortingState.filter(function (sort) {
4422
- return instance.getColumnCanSort(sort.id);
4423
- });
4424
- var columnInfoById = {};
4425
- availableSorting.forEach(function (sortEntry) {
4426
- var column = instance.getColumn(sortEntry.id);
4427
- columnInfoById[sortEntry.id] = {
4428
- sortUndefined: column.sortUndefined,
4429
- invertSorting: column.invertSorting,
4430
- sortingFn: instance.getColumnSortingFn(sortEntry.id)
4431
- };
4432
- });
4668
+ var filterFromLeafRows = instance.options.filterFromLeafRows;
4669
+ var filterFn = instance.getGlobalFilterFn();
4433
4670
 
4434
- var sortData = function sortData(rows) {
4435
- // This will also perform a stable sorting using the row index
4436
- // if needed.
4437
- var sortedData = rows.slice();
4438
- sortedData.sort(function (rowA, rowB) {
4439
- for (var i = 0; i < availableSorting.length; i += 1) {
4440
- var _sortEntry$desc;
4441
-
4442
- var sortEntry = availableSorting[i];
4443
- var columnInfo = columnInfoById[sortEntry.id];
4444
- var isDesc = (_sortEntry$desc = sortEntry == null ? void 0 : sortEntry.desc) != null ? _sortEntry$desc : false;
4445
-
4446
- if (columnInfo.sortUndefined) {
4447
- var aValue = rowA.values[sortEntry.id];
4448
- var bValue = rowB.values[sortEntry.id];
4449
- var aUndefined = typeof aValue === 'undefined';
4450
- var bUndefined = typeof bValue === 'undefined';
4451
-
4452
- if (aUndefined || bUndefined) {
4453
- return aUndefined && bUndefined ? 0 : aUndefined ? columnInfo.sortUndefined : -columnInfo.sortUndefined;
4671
+ if (!filterFn) {
4672
+ {
4673
+ console.warn("Could not find a valid 'globalFilterType'");
4454
4674
  }
4455
- } // This function should always return in ascending order
4456
4675
 
4676
+ return rowModel;
4677
+ }
4457
4678
 
4458
- var sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id);
4459
-
4460
- if (sortInt !== 0) {
4461
- if (isDesc) {
4462
- sortInt *= -1;
4463
- }
4679
+ var filterableColumns = instance.getAllLeafColumns().filter(function (column) {
4680
+ return column.getCanGlobalFilter();
4681
+ });
4682
+ var filterableColumnIds = filterableColumns.map(function (d) {
4683
+ return d.id;
4684
+ });
4464
4685
 
4465
- if (columnInfo.invertSorting) {
4466
- sortInt *= -1;
4467
- }
4686
+ var filterRows = function filterRows(rows) {
4687
+ return filterFn(rows, filterableColumnIds, globalFilter);
4688
+ };
4468
4689
 
4469
- return sortInt;
4690
+ if (filterFromLeafRows) {
4691
+ filterRowModelFromLeafs(rowModel.rows, filterRows, instance);
4470
4692
  }
4471
- }
4472
4693
 
4473
- return rowA.index - rowB.index;
4474
- }); // If there are sub-rows, sort them
4694
+ return filterRowModelFromRoot(rowModel.rows, filterRows, instance);
4695
+ }(); // Now that each filtered column has it's partially filtered rows,
4696
+ // lets assign the final filtered rows to all of the other columns
4475
4697
 
4476
- sortedData.forEach(function (row) {
4477
- sortedFlatRows.push(row);
4478
4698
 
4479
- if (!row.subRows || row.subRows.length <= 1) {
4480
- return;
4481
- }
4699
+ var nonFilteredColumns = instance.getAllLeafColumns().filter(function (column) {
4700
+ var _instance$getState$co;
4482
4701
 
4483
- row.subRows = sortData(row.subRows);
4484
- });
4485
- return sortedData;
4486
- };
4702
+ return !((_instance$getState$co = instance.getState().columnFilters) != null && _instance$getState$co.find(function (d) {
4703
+ return d.id === column.id;
4704
+ }));
4705
+ }); // This essentially enables faceted filter options to be built easily
4706
+ // using every column's preFilteredRows value
4487
4707
 
4488
- return {
4489
- rows: sortData(rowModel.rows),
4490
- flatRows: sortedFlatRows,
4491
- rowsById: rowModel.rowsById
4708
+ nonFilteredColumns.forEach(function (column) {
4709
+ column.getPreFilteredRows = function () {
4710
+ return globalFilteredRowModel.rows;
4711
+ };
4712
+ });
4713
+ return globalFilteredRowModel;
4714
+ }, {
4715
+ key: 'getGlobalFilteredRowModelSync',
4716
+ debug: function debug() {
4717
+ var _instance$options$deb;
4718
+
4719
+ return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugTable;
4720
+ },
4721
+ onChange: function onChange() {
4722
+ instance.queue(function () {
4723
+ instance._notifySortingReset();
4724
+ });
4725
+ }
4726
+ });
4492
4727
  };
4493
4728
  }
4494
4729
 
4495
- function groupRowsFn(instance, sortedRowModel) {
4496
- var groupingState = instance.getState().grouping; // Filter the grouping list down to columns that exist
4730
+ function getSortedRowModelSync() {
4731
+ return function (instance) {
4732
+ return memo(function () {
4733
+ return [instance.getState().sorting, instance.getGlobalFilteredRowModel()];
4734
+ }, function (sorting, rowModel) {
4735
+ if (!rowModel.rows.length || !(sorting != null && sorting.length)) {
4736
+ return rowModel;
4737
+ }
4738
+
4739
+ var sortingState = instance.getState().sorting;
4740
+ var sortedFlatRows = []; // Filter out sortings that correspond to non existing columns
4497
4741
 
4498
- var existingGrouping = groupingState.filter(function (columnId) {
4499
- return instance.getColumn(columnId);
4500
- }); // Find the columns that can or are aggregating
4501
- // Uses each column to aggregate rows into a single value
4742
+ var availableSorting = sortingState.filter(function (sort) {
4743
+ return instance.getColumnCanSort(sort.id);
4744
+ });
4745
+ var columnInfoById = {};
4746
+ availableSorting.forEach(function (sortEntry) {
4747
+ var column = instance.getColumn(sortEntry.id);
4748
+ columnInfoById[sortEntry.id] = {
4749
+ sortUndefined: column.sortUndefined,
4750
+ invertSorting: column.invertSorting,
4751
+ sortingFn: instance.getColumnSortingFn(sortEntry.id)
4752
+ };
4753
+ });
4502
4754
 
4503
- var aggregateRowsToValues = function aggregateRowsToValues(leafRows, groupedRows, depth) {
4504
- var values = {};
4505
- instance.getAllLeafColumns().forEach(function (column) {
4506
- // Don't aggregate columns that are in the grouping
4507
- if (existingGrouping.includes(column.id)) {
4508
- values[column.id] = groupedRows[0] ? groupedRows[0].values[column.id] : null;
4509
- return;
4510
- } // Aggregate the values
4755
+ var sortData = function sortData(rows) {
4756
+ // This will also perform a stable sorting using the row index
4757
+ // if needed.
4758
+ var sortedData = rows.slice();
4759
+ sortedData.sort(function (rowA, rowB) {
4760
+ for (var i = 0; i < availableSorting.length; i += 1) {
4761
+ var _sortEntry$desc;
4762
+
4763
+ var sortEntry = availableSorting[i];
4764
+ var columnInfo = columnInfoById[sortEntry.id];
4765
+ var isDesc = (_sortEntry$desc = sortEntry == null ? void 0 : sortEntry.desc) != null ? _sortEntry$desc : false;
4766
+
4767
+ if (columnInfo.sortUndefined) {
4768
+ var aValue = rowA.values[sortEntry.id];
4769
+ var bValue = rowB.values[sortEntry.id];
4770
+ var aUndefined = typeof aValue === 'undefined';
4771
+ var bUndefined = typeof bValue === 'undefined';
4772
+
4773
+ if (aUndefined || bUndefined) {
4774
+ return aUndefined && bUndefined ? 0 : aUndefined ? columnInfo.sortUndefined : -columnInfo.sortUndefined;
4775
+ }
4776
+ } // This function should always return in ascending order
4511
4777
 
4512
4778
 
4513
- var aggregateFn = instance.getColumnAggregationFn(column.id);
4779
+ var sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id);
4514
4780
 
4515
- if (aggregateFn) {
4516
- values[column.id] = aggregateFn(function () {
4517
- return leafRows.map(function (row) {
4518
- var columnValue = row.values[column.id];
4781
+ if (sortInt !== 0) {
4782
+ if (isDesc) {
4783
+ sortInt *= -1;
4784
+ }
4519
4785
 
4520
- if (!depth && column.aggregateValue) {
4521
- columnValue = column.aggregateValue(columnValue);
4786
+ if (columnInfo.invertSorting) {
4787
+ sortInt *= -1;
4788
+ }
4789
+
4790
+ return sortInt;
4522
4791
  }
4792
+ }
4523
4793
 
4524
- return columnValue;
4525
- });
4526
- }, function () {
4527
- return groupedRows.map(function (row) {
4528
- return row.values[column.id];
4529
- });
4794
+ return rowA.index - rowB.index;
4795
+ }); // If there are sub-rows, sort them
4796
+
4797
+ sortedData.forEach(function (row) {
4798
+ sortedFlatRows.push(row);
4799
+
4800
+ if (!row.subRows || row.subRows.length <= 1) {
4801
+ return;
4802
+ }
4803
+
4804
+ row.subRows = sortData(row.subRows);
4530
4805
  });
4531
- } else if (column.aggregationType) {
4532
- console.info({
4533
- column: column
4806
+ return sortedData;
4807
+ };
4808
+
4809
+ return {
4810
+ rows: sortData(rowModel.rows),
4811
+ flatRows: sortedFlatRows,
4812
+ rowsById: rowModel.rowsById
4813
+ };
4814
+ }, {
4815
+ key: 'getSortedRowModel',
4816
+ debug: function debug() {
4817
+ var _instance$options$deb;
4818
+
4819
+ return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugTable;
4820
+ },
4821
+ onChange: function onChange() {
4822
+ instance.queue(function () {
4823
+ instance._notifyGroupingReset();
4534
4824
  });
4535
- throw new Error("Table: Invalid column.aggregateType option for column listed above" );
4536
- } else {
4537
- values[column.id] = null;
4538
4825
  }
4539
4826
  });
4540
- return values;
4541
4827
  };
4828
+ }
4542
4829
 
4543
- var groupedFlatRows = [];
4544
- var groupedRowsById = {}; // const onlyGroupedFlatRows: Row[] = [];
4545
- // const onlyGroupedRowsById: Record<RowId, Row> = {};
4546
- // const nonGroupedFlatRows: Row[] = [];
4547
- // const nonGroupedRowsById: Record<RowId, Row> = {};
4548
- // Recursively group the data
4830
+ function getGroupedRowModelSync() {
4831
+ return function (instance) {
4832
+ return memo(function () {
4833
+ return [instance.getState().grouping, instance.getSortedRowModel()];
4834
+ }, function (grouping, rowModel) {
4835
+ if (!rowModel.rows.length || !grouping.length) {
4836
+ return rowModel;
4837
+ } // Filter the grouping list down to columns that exist
4549
4838
 
4550
- var groupUpRecursively = function groupUpRecursively(rows, depth, parentId) {
4551
- if (depth === void 0) {
4552
- depth = 0;
4553
- }
4554
4839
 
4555
- // This is the last level, just return the rows
4556
- if (depth === existingGrouping.length) {
4557
- return rows;
4558
- }
4840
+ var existingGrouping = grouping.filter(function (columnId) {
4841
+ return instance.getColumn(columnId);
4842
+ }); // Find the columns that can or are aggregating
4843
+ // Uses each column to aggregate rows into a single value
4559
4844
 
4560
- var columnId = existingGrouping[depth]; // Group the rows together for this level
4845
+ var aggregateRowsToValues = function aggregateRowsToValues(leafRows, groupedRows, depth) {
4846
+ var values = {};
4847
+ instance.getAllLeafColumns().forEach(function (column) {
4848
+ // Don't aggregate columns that are in the grouping
4849
+ if (existingGrouping.includes(column.id)) {
4850
+ values[column.id] = groupedRows[0] ? groupedRows[0].values[column.id] : null;
4851
+ return;
4852
+ } // Aggregate the values
4561
4853
 
4562
- var rowGroupsMap = groupBy(rows, columnId); // Peform aggregations for each group
4563
4854
 
4564
- var aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map(function (_ref, index) {
4565
- var groupingValue = _ref[0],
4566
- groupedRows = _ref[1];
4567
- var id = columnId + ":" + groupingValue;
4568
- id = parentId ? parentId + ">" + id : id; // First, Recurse to group sub rows before aggregation
4855
+ var aggregateFn = instance.getColumnAggregationFn(column.id);
4569
4856
 
4570
- var subRows = groupUpRecursively(groupedRows, depth + 1, id); // Flatten the leaf rows of the rows in this group
4857
+ if (aggregateFn) {
4858
+ values[column.id] = aggregateFn(function () {
4859
+ return leafRows.map(function (row) {
4860
+ var columnValue = row.values[column.id];
4571
4861
 
4572
- var leafRows = depth ? flattenBy(groupedRows, function (row) {
4573
- return row.subRows;
4574
- }) : groupedRows;
4575
- var values = aggregateRowsToValues(leafRows, groupedRows, depth);
4576
- var row = instance.createRow(id, undefined, index, depth, values);
4577
- Object.assign(row, {
4578
- groupingColumnId: columnId,
4579
- groupingValue: groupingValue,
4580
- subRows: subRows,
4581
- leafRows: leafRows
4582
- });
4583
- subRows.forEach(function (subRow) {
4862
+ if (!depth && column.aggregateValue) {
4863
+ columnValue = column.aggregateValue(columnValue);
4864
+ }
4865
+
4866
+ return columnValue;
4867
+ });
4868
+ }, function () {
4869
+ return groupedRows.map(function (row) {
4870
+ return row.values[column.id];
4871
+ });
4872
+ });
4873
+ } else if (column.aggregationType) {
4874
+ console.info({
4875
+ column: column
4876
+ });
4877
+ throw new Error("Table: Invalid column.aggregateType option for column listed above" );
4878
+ } else {
4879
+ values[column.id] = null;
4880
+ }
4881
+ });
4882
+ return values;
4883
+ };
4884
+
4885
+ var groupedFlatRows = [];
4886
+ var groupedRowsById = {}; // const onlyGroupedFlatRows: Row[] = [];
4887
+ // const onlyGroupedRowsById: Record<RowId, Row> = {};
4888
+ // const nonGroupedFlatRows: Row[] = [];
4889
+ // const nonGroupedRowsById: Record<RowId, Row> = {};
4890
+ // Recursively group the data
4891
+
4892
+ var groupUpRecursively = function groupUpRecursively(rows, depth, parentId) {
4893
+ if (depth === void 0) {
4894
+ depth = 0;
4895
+ }
4896
+
4897
+ // This is the last level, just return the rows
4898
+ if (depth === existingGrouping.length) {
4899
+ return rows;
4900
+ }
4901
+
4902
+ var columnId = existingGrouping[depth]; // Group the rows together for this level
4903
+
4904
+ var rowGroupsMap = groupBy(rows, columnId); // Peform aggregations for each group
4905
+
4906
+ var aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map(function (_ref, index) {
4907
+ var groupingValue = _ref[0],
4908
+ groupedRows = _ref[1];
4909
+ var id = columnId + ":" + groupingValue;
4910
+ id = parentId ? parentId + ">" + id : id; // First, Recurse to group sub rows before aggregation
4911
+
4912
+ var subRows = groupUpRecursively(groupedRows, depth + 1, id); // Flatten the leaf rows of the rows in this group
4913
+
4914
+ var leafRows = depth ? flattenBy(groupedRows, function (row) {
4915
+ return row.subRows;
4916
+ }) : groupedRows;
4917
+ var values = aggregateRowsToValues(leafRows, groupedRows, depth);
4918
+ var row = instance.createRow(id, undefined, index, depth, values);
4919
+ Object.assign(row, {
4920
+ groupingColumnId: columnId,
4921
+ groupingValue: groupingValue,
4922
+ subRows: subRows,
4923
+ leafRows: leafRows
4924
+ });
4925
+ subRows.forEach(function (subRow) {
4926
+ groupedFlatRows.push(subRow);
4927
+ groupedRowsById[subRow.id] = subRow; // if (subRow.getIsGrouped?.()) {
4928
+ // onlyGroupedFlatRows.push(subRow);
4929
+ // onlyGroupedRowsById[subRow.id] = subRow;
4930
+ // } else {
4931
+ // nonGroupedFlatRows.push(subRow);
4932
+ // nonGroupedRowsById[subRow.id] = subRow;
4933
+ // }
4934
+ });
4935
+ return row;
4936
+ });
4937
+ return aggregatedGroupedRows;
4938
+ };
4939
+
4940
+ var groupedRows = groupUpRecursively(rowModel.rows, 0, '');
4941
+ groupedRows.forEach(function (subRow) {
4584
4942
  groupedFlatRows.push(subRow);
4585
4943
  groupedRowsById[subRow.id] = subRow; // if (subRow.getIsGrouped?.()) {
4586
4944
  // onlyGroupedFlatRows.push(subRow);
@@ -4590,26 +4948,24 @@
4590
4948
  // nonGroupedRowsById[subRow.id] = subRow;
4591
4949
  // }
4592
4950
  });
4593
- return row;
4594
- });
4595
- return aggregatedGroupedRows;
4596
- };
4951
+ return {
4952
+ rows: groupedRows,
4953
+ flatRows: groupedFlatRows,
4954
+ rowsById: groupedRowsById
4955
+ };
4956
+ }, {
4957
+ key: 'getGroupedRowModel',
4958
+ debug: function debug() {
4959
+ var _instance$options$deb;
4597
4960
 
4598
- var groupedRows = groupUpRecursively(sortedRowModel.rows, 0, '');
4599
- groupedRows.forEach(function (subRow) {
4600
- groupedFlatRows.push(subRow);
4601
- groupedRowsById[subRow.id] = subRow; // if (subRow.getIsGrouped?.()) {
4602
- // onlyGroupedFlatRows.push(subRow);
4603
- // onlyGroupedRowsById[subRow.id] = subRow;
4604
- // } else {
4605
- // nonGroupedFlatRows.push(subRow);
4606
- // nonGroupedRowsById[subRow.id] = subRow;
4607
- // }
4608
- });
4609
- return {
4610
- rows: groupedRows,
4611
- flatRows: groupedFlatRows,
4612
- rowsById: groupedRowsById
4961
+ return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugTable;
4962
+ },
4963
+ onChange: function onChange() {
4964
+ instance.queue(function () {
4965
+ instance._notifyExpandedReset();
4966
+ });
4967
+ }
4968
+ });
4613
4969
  };
4614
4970
  }
4615
4971
 
@@ -4629,7 +4985,28 @@
4629
4985
  }, groupMap);
4630
4986
  }
4631
4987
 
4632
- function expandRowsFn(instance, sortedRowModel) {
4988
+ function getExpandedRowModel() {
4989
+ return function (instance) {
4990
+ return memo(function () {
4991
+ return [instance.getState().expanded, instance.getGroupedRowModel(), instance.options.paginateExpandedRows];
4992
+ }, function (expanded, rowModel, paginateExpandedRows) {
4993
+ if (!rowModel.rows.length || // Do not expand if rows are not included in pagination
4994
+ !paginateExpandedRows || expanded !== true && !Object.keys(expanded != null ? expanded : {}).length) {
4995
+ return rowModel;
4996
+ }
4997
+
4998
+ return expandRows(rowModel, instance);
4999
+ }, {
5000
+ key: 'getExpandedRowModel',
5001
+ debug: function debug() {
5002
+ var _instance$options$deb;
5003
+
5004
+ return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugTable;
5005
+ }
5006
+ });
5007
+ };
5008
+ }
5009
+ function expandRows(rowModel, instance) {
4633
5010
  var expandedRows = [];
4634
5011
 
4635
5012
  var handleRow = function handleRow(row) {
@@ -4642,37 +5019,53 @@
4642
5019
  }
4643
5020
  };
4644
5021
 
4645
- sortedRowModel.rows.forEach(handleRow);
5022
+ rowModel.rows.forEach(handleRow);
4646
5023
  return {
4647
5024
  rows: expandedRows,
4648
- flatRows: sortedRowModel.flatRows,
4649
- rowsById: sortedRowModel.rowsById
5025
+ flatRows: rowModel.flatRows,
5026
+ rowsById: rowModel.rowsById
4650
5027
  };
4651
5028
  }
4652
5029
 
4653
- function paginateRowsFn(instance, rowModel) {
4654
- var _instance$getState$pa = instance.getState().pagination,
4655
- pageSize = _instance$getState$pa.pageSize,
4656
- pageIndex = _instance$getState$pa.pageIndex;
4657
- var rows = rowModel.rows,
4658
- flatRows = rowModel.flatRows,
4659
- rowsById = rowModel.rowsById;
4660
- var pageStart = pageSize * pageIndex;
4661
- var pageEnd = pageStart + pageSize;
4662
- rows = rows.slice(pageStart, pageEnd);
4663
-
4664
- if (!instance.options.paginateExpandedRows) {
4665
- return expandRowsFn(instance, {
4666
- rows: rows,
4667
- flatRows: flatRows,
4668
- rowsById: rowsById
4669
- });
4670
- }
5030
+ function getPaginationRowModel(opts) {
5031
+ return function (instance) {
5032
+ return memo(function () {
5033
+ return [instance.getState().pagination, instance.getExpandedRowModel()];
5034
+ }, function (pagination, rowModel) {
5035
+ if (!rowModel.rows.length) {
5036
+ return rowModel;
5037
+ }
4671
5038
 
4672
- return {
4673
- rows: rows,
4674
- flatRows: flatRows,
4675
- rowsById: rowsById
5039
+ var pageSize = pagination.pageSize,
5040
+ pageIndex = pagination.pageIndex;
5041
+ var rows = rowModel.rows,
5042
+ flatRows = rowModel.flatRows,
5043
+ rowsById = rowModel.rowsById;
5044
+ var pageStart = pageSize * pageIndex;
5045
+ var pageEnd = pageStart + pageSize;
5046
+ rows = rows.slice(pageStart, pageEnd);
5047
+
5048
+ if (!instance.options.paginateExpandedRows) {
5049
+ return expandRows({
5050
+ rows: rows,
5051
+ flatRows: flatRows,
5052
+ rowsById: rowsById
5053
+ }, instance);
5054
+ }
5055
+
5056
+ return {
5057
+ rows: rows,
5058
+ flatRows: flatRows,
5059
+ rowsById: rowsById
5060
+ };
5061
+ }, {
5062
+ key: 'getPaginationRowModel',
5063
+ debug: function debug() {
5064
+ var _instance$options$deb;
5065
+
5066
+ return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugTable;
5067
+ }
5068
+ });
4676
5069
  };
4677
5070
  }
4678
5071
 
@@ -4688,26 +5081,31 @@
4688
5081
  exports.Sorting = Sorting;
4689
5082
  exports.Visibility = Visibility;
4690
5083
  exports.buildHeaderGroups = buildHeaderGroups;
4691
- exports.columnFilterRowsFn = columnFilterRowsFn;
4692
5084
  exports.createTableInstance = createTableInstance;
4693
5085
  exports.defaultColumnSizing = defaultColumnSizing;
4694
- exports.expandRowsFn = expandRowsFn;
5086
+ exports.expandRows = expandRows;
4695
5087
  exports.flattenBy = flattenBy;
4696
5088
  exports.functionalUpdate = functionalUpdate;
4697
- exports.globalFilterRowsFn = globalFilterRowsFn;
4698
- exports.groupRowsFn = groupRowsFn;
5089
+ exports.getBatchGroups = getBatchGroups;
5090
+ exports.getColumnFilteredRowModelSync = getColumnFilteredRowModelSync;
5091
+ exports.getCoreRowModelAsync = getCoreRowModelAsync;
5092
+ exports.getCoreRowModelSync = getCoreRowModelSync;
5093
+ exports.getExpandedRowModel = getExpandedRowModel;
5094
+ exports.getGlobalFilteredRowModelSync = getGlobalFilteredRowModelSync;
5095
+ exports.getGroupedRowModelSync = getGroupedRowModelSync;
5096
+ exports.getPaginationRowModel = getPaginationRowModel;
5097
+ exports.getSortedRowModelSync = getSortedRowModelSync;
5098
+ exports.incrementalMemo = incrementalMemo;
4699
5099
  exports.init = init;
4700
5100
  exports.isFunction = isFunction;
4701
5101
  exports.isRowSelected = isRowSelected;
4702
5102
  exports.makeStateUpdater = makeStateUpdater;
4703
5103
  exports.memo = memo;
4704
5104
  exports.noop = noop;
4705
- exports.paginateRowsFn = paginateRowsFn;
4706
5105
  exports.passiveEventSupported = passiveEventSupported;
4707
5106
  exports.propGetter = propGetter;
4708
5107
  exports.selectRowsFn = selectRowsFn;
4709
5108
  exports.shouldAutoRemoveFilter = shouldAutoRemoveFilter;
4710
- exports.sortRowsFn = sortRowsFn;
4711
5109
 
4712
5110
  Object.defineProperty(exports, '__esModule', { value: true });
4713
5111