@tanstack/table-core 8.0.0-alpha.27 → 8.0.0-alpha.32

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 (122) 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 +29 -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.map +1 -1
  19. package/build/cjs/features/Sorting.js +11 -17
  20. package/build/cjs/features/Sorting.js.map +1 -1
  21. package/build/cjs/features/Visibility.js.map +1 -1
  22. package/build/cjs/filterTypes.js.map +1 -1
  23. package/build/cjs/index.js +19 -12
  24. package/build/cjs/index.js.map +1 -1
  25. package/build/cjs/sortTypes.js.map +1 -1
  26. package/build/cjs/utils/filterRowsUtils.js.map +1 -1
  27. package/build/cjs/utils/getColumnFilteredRowModelSync.js +113 -0
  28. package/build/cjs/utils/getColumnFilteredRowModelSync.js.map +1 -0
  29. package/build/cjs/utils/getCoreRowModelAsync.js +125 -0
  30. package/build/cjs/utils/getCoreRowModelAsync.js.map +1 -0
  31. package/build/cjs/utils/getCoreRowModelSync.js +102 -0
  32. package/build/cjs/utils/getCoreRowModelSync.js.map +1 -0
  33. package/build/cjs/utils/getExpandedRowModel.js +61 -0
  34. package/build/cjs/utils/getExpandedRowModel.js.map +1 -0
  35. package/build/cjs/utils/getGlobalFilteredRowModelSync.js +89 -0
  36. package/build/cjs/utils/getGlobalFilteredRowModelSync.js.map +1 -0
  37. package/build/cjs/utils/getGroupedRowModel.js +174 -0
  38. package/build/cjs/utils/getGroupedRowModel.js.map +1 -0
  39. package/build/cjs/utils/getPaginationRowModel.js +61 -0
  40. package/build/cjs/utils/getPaginationRowModel.js.map +1 -0
  41. package/build/cjs/utils/getSortedRowModelSync.js +116 -0
  42. package/build/cjs/utils/getSortedRowModelSync.js.map +1 -0
  43. package/build/cjs/utils.js +159 -21
  44. package/build/cjs/utils.js.map +1 -1
  45. package/build/esm/index.js +857 -505
  46. package/build/esm/index.js.map +1 -1
  47. package/build/stats-html.html +1 -1
  48. package/build/stats-react.json +406 -312
  49. package/build/types/aggregationTypes.d.ts +1 -1
  50. package/build/types/core.d.ts +9 -1
  51. package/build/types/createTable.d.ts +2 -4
  52. package/build/types/features/Expanding.d.ts +2 -1
  53. package/build/types/features/Filters.d.ts +6 -2
  54. package/build/types/features/Grouping.d.ts +3 -2
  55. package/build/types/features/Pagination.d.ts +2 -1
  56. package/build/types/features/Sorting.d.ts +2 -1
  57. package/build/types/index.d.ts +8 -6
  58. package/build/types/types.d.ts +3 -2
  59. package/build/types/utils/getColumnFilteredRowModelAsync.d.ts +4 -0
  60. package/build/types/utils/getColumnFilteredRowModelSync.d.ts +2 -0
  61. package/build/types/utils/getCoreRowModelAsync.d.ts +4 -0
  62. package/build/types/utils/getCoreRowModelSync.d.ts +2 -0
  63. package/build/types/utils/getExpandedRowModel.d.ts +7 -0
  64. package/build/types/utils/getGlobalFilteredRowModelAsync.d.ts +4 -0
  65. package/build/types/utils/getGlobalFilteredRowModelSync.d.ts +2 -0
  66. package/build/types/utils/getGroupedRowModel.d.ts +2 -0
  67. package/build/types/utils/getPaginationRowModel.d.ts +4 -0
  68. package/build/types/utils/{sortRowsQuicksortFn.d.ts → getSortedRowModelAsync.d.ts} +3 -1
  69. package/build/types/utils/getSortedRowModelSync.d.ts +2 -0
  70. package/build/types/utils.d.ts +16 -0
  71. package/build/umd/index.development.js +872 -513
  72. package/build/umd/index.development.js.map +1 -1
  73. package/build/umd/index.production.js +1 -1
  74. package/build/umd/index.production.js.map +1 -1
  75. package/package.json +1 -1
  76. package/src/aggregationTypes.ts +1 -1
  77. package/src/core.tsx +46 -99
  78. package/src/createTable.tsx +2 -6
  79. package/src/features/Expanding.ts +21 -29
  80. package/src/features/Filters.ts +53 -100
  81. package/src/features/Grouping.ts +19 -21
  82. package/src/features/Pagination.ts +19 -28
  83. package/src/features/Sorting.ts +20 -24
  84. package/src/index.tsx +8 -6
  85. package/src/types.ts +4 -1
  86. package/src/utils/getColumnFilteredRowModelAsync.ts +117 -0
  87. package/src/utils/getColumnFilteredRowModelSync.ts +97 -0
  88. package/src/utils/getCoreRowModelAsync.ts +103 -0
  89. package/src/utils/getCoreRowModelSync.ts +105 -0
  90. package/src/utils/getExpandedRowModel.ts +58 -0
  91. package/src/utils/getGlobalFilteredRowModelAsync.ts +95 -0
  92. package/src/utils/getGlobalFilteredRowModelSync.ts +74 -0
  93. package/src/utils/getGroupedRowModel.ts +187 -0
  94. package/src/utils/getPaginationRowModel.ts +45 -0
  95. package/src/utils/getSortedRowModelAsync.ts +199 -0
  96. package/src/utils/getSortedRowModelSync.ts +116 -0
  97. package/src/utils.tsx +193 -22
  98. package/build/cjs/utils/columnFilterRowsFn.js +0 -73
  99. package/build/cjs/utils/columnFilterRowsFn.js.map +0 -1
  100. package/build/cjs/utils/expandRowsFn.js +0 -37
  101. package/build/cjs/utils/expandRowsFn.js.map +0 -1
  102. package/build/cjs/utils/globalFilterRowsFn.js +0 -49
  103. package/build/cjs/utils/globalFilterRowsFn.js.map +0 -1
  104. package/build/cjs/utils/groupRowsFn.js +0 -155
  105. package/build/cjs/utils/groupRowsFn.js.map +0 -1
  106. package/build/cjs/utils/paginateRowsFn.js +0 -44
  107. package/build/cjs/utils/paginateRowsFn.js.map +0 -1
  108. package/build/cjs/utils/sortRowsFn.js +0 -94
  109. package/build/cjs/utils/sortRowsFn.js.map +0 -1
  110. package/build/types/utils/columnFilterRowsFn.d.ts +0 -2
  111. package/build/types/utils/expandRowsFn.d.ts +0 -2
  112. package/build/types/utils/globalFilterRowsFn.d.ts +0 -2
  113. package/build/types/utils/groupRowsFn.d.ts +0 -2
  114. package/build/types/utils/paginateRowsFn.d.ts +0 -2
  115. package/build/types/utils/sortRowsFn.d.ts +0 -2
  116. package/src/utils/columnFilterRowsFn.ts +0 -56
  117. package/src/utils/expandRowsFn.ts +0 -34
  118. package/src/utils/globalFilterRowsFn.ts +0 -39
  119. package/src/utils/groupRowsFn.ts +0 -174
  120. package/src/utils/paginateRowsFn.ts +0 -28
  121. package/src/utils/sortRowsFn.ts +0 -99
  122. package/src/utils/sortRowsQuicksortFn.ts +0 -174
@@ -8,8 +8,6 @@
8
8
  *
9
9
  * @license MIT
10
10
  */
11
- import { performance } from 'perf_hooks';
12
-
13
11
  function _extends() {
14
12
  _extends = Object.assign || function (target) {
15
13
  for (var i = 1; i < arguments.length; i++) {
@@ -105,6 +103,32 @@ function functionalUpdate(updater, input) {
105
103
  }
106
104
  function noop() {//
107
105
  }
106
+ function getBatchGroups(arr, count) {
107
+ var groups = [{
108
+ start: 0,
109
+ end: count - 1,
110
+ items: []
111
+ }];
112
+ var groupIndex = 0;
113
+ var group = groups[groupIndex];
114
+
115
+ for (var i = 0; i < arr.length; i++) {
116
+ if (i > group.end) {
117
+ groupIndex++;
118
+ groups[groupIndex] = {
119
+ start: i,
120
+ end: i + count - 1,
121
+ items: []
122
+ };
123
+ }
124
+
125
+ group = groups[groupIndex];
126
+ var _item = arr[i];
127
+ group.items.push(_item);
128
+ }
129
+
130
+ return groups;
131
+ }
108
132
  function makeStateUpdater(key, instance) {
109
133
  return function (updater) {
110
134
  instance.setState(function (old) {
@@ -147,7 +171,7 @@ function memo(getDeps, fn, opts) {
147
171
  var result;
148
172
  return function () {
149
173
  var depTime;
150
- if (opts.key && opts.debug) depTime = performance.now();
174
+ if (opts.key && opts.debug) depTime = Date.now();
151
175
  var newDeps = getDeps();
152
176
  var depsChanged = newDeps.length !== deps.length || newDeps.some(function (dep, index) {
153
177
  return deps[index] !== dep;
@@ -156,15 +180,15 @@ function memo(getDeps, fn, opts) {
156
180
  if (depsChanged) {
157
181
  var oldResult = result;
158
182
  var resultTime;
159
- if (opts.key && opts.debug) resultTime = performance.now();
183
+ if (opts.key && opts.debug) resultTime = Date.now();
160
184
  result = fn.apply(void 0, newDeps);
161
185
  deps = newDeps;
162
186
  opts == null ? void 0 : opts.onChange == null ? void 0 : opts.onChange(result, oldResult);
163
187
 
164
188
  if (opts.key && opts.debug) {
165
189
  if (opts != null && opts.debug()) {
166
- var depEndTime = Math.round((performance.now() - depTime) * 100) / 100;
167
- var resultEndTime = Math.round((performance.now() - resultTime) * 100) / 100;
190
+ var depEndTime = Math.round((Date.now() - depTime) * 100) / 100;
191
+ var resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;
168
192
  var resultFpsPercentage = resultEndTime / 16;
169
193
 
170
194
  var pad = function pad(str, num) {
@@ -202,22 +226,133 @@ function memo(getDeps, fn, opts) {
202
226
 
203
227
  return result;
204
228
  };
205
- } // export function hashString(str: string, seed = 0): string {
206
- // let h1 = 0xdeadbeef ^ seed,
207
- // h2 = 0x41c6ce57 ^ seed
208
- // for (let i = 0, ch; i < str.length; i++) {
209
- // ch = str.charCodeAt(i)
210
- // h1 = Math.imul(h1 ^ ch, 2654435761)
211
- // h2 = Math.imul(h2 ^ ch, 1597334677)
212
- // }
213
- // h1 =
214
- // Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^
215
- // Math.imul(h2 ^ (h2 >>> 13), 3266489909)
216
- // h2 =
217
- // Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^
218
- // Math.imul(h1 ^ (h1 >>> 13), 3266489909)
219
- // return (4294967296 * (2097151 & h2) + (h1 >>> 0)).toString()
220
- // }
229
+ }
230
+ function incrementalMemo(getDeps, getInitialValue, schedule, opts) {
231
+ var _opts$timeout;
232
+
233
+ var oldDeps;
234
+ var deps;
235
+ var result;
236
+ var nextResultRef;
237
+ var tasks = [];
238
+ var totalTaskCount = 0;
239
+ var resultStartTime;
240
+ var batchIndex = 0;
241
+ var progress = 0;
242
+ var working = false;
243
+ var callback;
244
+ var timeout = (_opts$timeout = opts.timeout) != null ? _opts$timeout : 100;
245
+
246
+ var onProgress = function onProgress(latestResult, previousResult) {
247
+ progress = 1 - tasks.length / totalTaskCount;
248
+ opts.onProgress(progress, latestResult, previousResult);
249
+ };
250
+
251
+ return function () {
252
+ var scheduleFn = function scheduleFn(workFn) {
253
+ totalTaskCount++;
254
+ tasks.push(workFn);
255
+ };
256
+
257
+ var newDeps = getDeps();
258
+ var first = false;
259
+
260
+ if (!deps) {
261
+ first = true;
262
+ deps = [];
263
+ result = getInitialValue.apply(void 0, newDeps);
264
+ }
265
+
266
+ var depsChanged = newDeps.length !== deps.length || newDeps.some(function (dep, index) {
267
+ return deps[index] !== dep;
268
+ });
269
+
270
+ if (depsChanged) {
271
+ cancelIdleCallback(callback);
272
+ oldDeps = deps;
273
+ deps = newDeps;
274
+ totalTaskCount = 0;
275
+ tasks = [];
276
+ nextResultRef = {
277
+ current: getInitialValue.apply(void 0, newDeps)
278
+ };
279
+ resultStartTime = Date.now();
280
+ schedule.apply(void 0, newDeps)(nextResultRef)(scheduleFn);
281
+ }
282
+
283
+ var commitResult = function commitResult() {
284
+ cancelIdleCallback(callback);
285
+
286
+ if (opts.key && opts.debug) {
287
+ if (opts != null && opts.debug()) {
288
+ var resultEndTime = Math.round((Date.now() - resultStartTime) * 100) / 100;
289
+ var resultFpsPercentage = resultEndTime / batchIndex / 16;
290
+ 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({
291
+ length: oldDeps.length + " -> " + deps.length
292
+ }, deps.map(function (_, index) {
293
+ if (oldDeps[index] !== deps[index]) {
294
+ return [index, oldDeps[index], deps[index]];
295
+ }
296
+
297
+ return false;
298
+ }).filter(Boolean).reduce(function (accu, _ref2) {
299
+ var _extends4;
300
+
301
+ var a = _ref2[0],
302
+ b = _ref2[1];
303
+ return _extends({}, accu, (_extends4 = {}, _extends4[a] = b, _extends4));
304
+ }, {}), {
305
+ parent: parent
306
+ }));
307
+ }
308
+ }
309
+
310
+ working = false;
311
+ var previousResult = result;
312
+ result = nextResultRef.current;
313
+ onProgress(result, previousResult);
314
+ opts.onChange(result, previousResult);
315
+ };
316
+
317
+ if (opts.initialSync && first) {
318
+ batchIndex = 1;
319
+ first = false;
320
+
321
+ for (var i = 0; i < tasks.length; i++) {
322
+ tasks[i]();
323
+ }
324
+
325
+ tasks = [];
326
+ commitResult();
327
+ } else if (!working && tasks.length) {
328
+ cancelIdleCallback(callback);
329
+ working = true;
330
+ batchIndex = 0;
331
+
332
+ var workLoop = function workLoop(deadline) {
333
+ while (tasks.length && deadline.timeRemaining() > 0) {
334
+ tasks.shift()();
335
+ }
336
+
337
+ if (!tasks.length) {
338
+ commitResult();
339
+ } else {
340
+ ++batchIndex;
341
+ onProgress(nextResultRef.current, result);
342
+ callback = requestIdleCallback(workLoop, {
343
+ timeout: timeout
344
+ });
345
+ }
346
+ };
347
+
348
+ callback = requestIdleCallback(workLoop, {
349
+ timeout: timeout
350
+ });
351
+ }
352
+
353
+ return result;
354
+ };
355
+ } // opts?.onChange?.(result, oldResult)
221
356
 
222
357
  //
223
358
  var defaultColumnSizing = {
@@ -548,6 +683,8 @@ var Expanding = {
548
683
  var registered = false;
549
684
  return {
550
685
  _notifyExpandedReset: function _notifyExpandedReset() {
686
+ instance._notifyPageIndexReset();
687
+
551
688
  if (!registered) {
552
689
  registered = true;
553
690
  return;
@@ -653,7 +790,7 @@ var Expanding = {
653
790
  var initialProps = {
654
791
  title: canExpand ? 'Toggle Expanded' : undefined,
655
792
  onClick: canExpand ? function (e) {
656
- e.persist();
793
+ e.persist == null ? void 0 : e.persist();
657
794
  instance.toggleRowExpanded(rowId);
658
795
  } : undefined
659
796
  };
@@ -663,7 +800,7 @@ var Expanding = {
663
800
  var initialProps = {
664
801
  title: 'Toggle All Expanded',
665
802
  onClick: function onClick(e) {
666
- e.persist();
803
+ e.persist == null ? void 0 : e.persist();
667
804
  instance.toggleAllRowsExpanded();
668
805
  }
669
806
  };
@@ -699,25 +836,19 @@ var Expanding = {
699
836
  });
700
837
  return maxDepth;
701
838
  },
702
- getExpandedRowModel: memo(function () {
703
- return [instance.getState().expanded, instance.getGroupedRowModel(), instance.options.expandRowsFn, instance.options.paginateExpandedRows];
704
- }, function (expanded, rowModel, expandRowsFn, paginateExpandedRows) {
705
- if (!expandRowsFn || // Do not expand if rows are not included in pagination
706
- !paginateExpandedRows || expanded !== true && !Object.keys(expanded != null ? expanded : {}).length) {
707
- return rowModel;
839
+ getPreExpandedRowModel: function getPreExpandedRowModel() {
840
+ return instance.getGroupedRowModel();
841
+ },
842
+ getExpandedRowModel: function getExpandedRowModel() {
843
+ if (!instance._getExpandedRowModel && instance.options.getExpandedRowModel) {
844
+ instance._getExpandedRowModel = instance.options.getExpandedRowModel(instance);
708
845
  }
709
846
 
710
- return expandRowsFn(instance, rowModel);
711
- }, {
712
- key: 'getExpandedRowModel',
713
- debug: function debug() {
714
- var _instance$options$deb;
715
-
716
- return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugTable;
847
+ if (!instance._getExpandedRowModel) {
848
+ return instance.getPreExpandedRowModel();
717
849
  }
718
- }),
719
- getPreExpandedRowModel: function getPreExpandedRowModel() {
720
- return instance.getGroupedRowModel();
850
+
851
+ return instance._getExpandedRowModel();
721
852
  }
722
853
  };
723
854
  },
@@ -905,7 +1036,9 @@ var Filters = {
905
1036
  getInitialState: function getInitialState() {
906
1037
  return {
907
1038
  columnFilters: [],
908
- globalFilter: undefined
1039
+ globalFilter: undefined,
1040
+ columnFiltersProgress: 1,
1041
+ globalFilterProgress: 1
909
1042
  };
910
1043
  },
911
1044
  getDefaultOptions: function getDefaultOptions(instance) {
@@ -1004,6 +1137,8 @@ var Filters = {
1004
1137
  var registered = false;
1005
1138
  return {
1006
1139
  _notifyFiltersReset: function _notifyFiltersReset() {
1140
+ instance._notifySortingReset();
1141
+
1007
1142
  if (!registered) {
1008
1143
  registered = true;
1009
1144
  return;
@@ -1013,16 +1148,12 @@ var Filters = {
1013
1148
  return;
1014
1149
  }
1015
1150
 
1016
- if (instance.options.autoResetAll === true) {
1017
- instance.resetSorting();
1018
- } else {
1019
- if (instance.options.autoResetColumnFilters) {
1020
- instance.resetColumnFilters();
1021
- }
1151
+ if (instance.options.autoResetAll === true || instance.options.autoResetColumnFilters) {
1152
+ instance.resetColumnFilters();
1153
+ }
1022
1154
 
1023
- if (instance.options.autoResetGlobalFilter) {
1024
- instance.resetGlobalFilter();
1025
- }
1155
+ if (instance.options.autoResetAll === true || instance.options.autoResetGlobalFilter) {
1156
+ instance.resetGlobalFilter();
1026
1157
  }
1027
1158
  },
1028
1159
  getColumnAutoFilterFn: function getColumnAutoFilterFn(columnId) {
@@ -1099,7 +1230,7 @@ var Filters = {
1099
1230
  instance.options.onGlobalFilterChange == null ? void 0 : instance.options.onGlobalFilterChange(updater, functionalUpdate(updater, instance.getState().globalFilter));
1100
1231
  },
1101
1232
  resetGlobalFilter: function resetGlobalFilter() {
1102
- instance.setGlobalFilter(undefined);
1233
+ instance.setGlobalFilter(instance.initialState.globalFilter);
1103
1234
  },
1104
1235
  getColumnCanColumnFilter: function getColumnCanColumnFilter(columnId) {
1105
1236
  var _ref3, _ref4, _ref5, _ref6, _ref7, _column$enableAllFilt;
@@ -1202,84 +1333,31 @@ var Filters = {
1202
1333
  getPreColumnFilteredRowModel: function getPreColumnFilteredRowModel() {
1203
1334
  return instance.getCoreRowModel();
1204
1335
  },
1205
- getColumnFilteredRowModel: memo(function () {
1206
- return [instance.getState().columnFilters, instance.getCoreRowModel(), instance.options.columnFilterRowsFn];
1207
- }, function (columnFilters, rowModel, columnFiltersFn) {
1208
- var columnFilteredRowModel = function () {
1209
- if (!(columnFilters != null && columnFilters.length) || !columnFiltersFn) {
1210
- return rowModel;
1211
- }
1212
-
1213
- return columnFiltersFn(instance, rowModel);
1214
- }(); // Now that each filtered column has it's partially filtered rows,
1215
- // lets assign the final filtered rows to all of the other columns
1216
-
1217
-
1218
- var nonFilteredColumns = instance.getAllLeafColumns().filter(function (column) {
1219
- var _instance$getState$co5;
1220
-
1221
- return !((_instance$getState$co5 = instance.getState().columnFilters) != null && _instance$getState$co5.find(function (d) {
1222
- return d.id === column.id;
1223
- }));
1224
- }); // This essentially enables faceted filter options to be built easily
1225
- // using every column's preFilteredRows value
1226
-
1227
- nonFilteredColumns.forEach(function (column) {
1228
- column.getPreFilteredRows = function () {
1229
- return columnFilteredRowModel.rows;
1230
- };
1231
- });
1232
- return columnFilteredRowModel;
1233
- }, {
1234
- key: 'getColumnFilteredRowModel',
1235
- debug: function debug() {
1236
- var _instance$options$deb2;
1336
+ getColumnFilteredRowModel: function getColumnFilteredRowModel() {
1337
+ if (!instance._getColumnFilteredRowModel && instance.options.getColumnFilteredRowModel) {
1338
+ instance._getColumnFilteredRowModel = instance.options.getColumnFilteredRowModel(instance);
1339
+ }
1237
1340
 
1238
- return (_instance$options$deb2 = instance.options.debugAll) != null ? _instance$options$deb2 : instance.options.debugTable;
1341
+ if (!instance._getColumnFilteredRowModel) {
1342
+ return instance.getPreColumnFilteredRowModel();
1239
1343
  }
1240
- }),
1344
+
1345
+ return instance._getColumnFilteredRowModel();
1346
+ },
1241
1347
  getPreGlobalFilteredRowModel: function getPreGlobalFilteredRowModel() {
1242
1348
  return instance.getColumnFilteredRowModel();
1243
1349
  },
1244
- getGlobalFilteredRowModel: memo(function () {
1245
- return [instance.getState().globalFilter, instance.getColumnFilteredRowModel(), instance.options.globalFilterRowsFn];
1246
- }, function (globalFilterValue, columnFilteredRowModel, globalFiltersFn) {
1247
- var globalFilteredRowModel = function () {
1248
- if (!globalFiltersFn || !globalFilterValue) {
1249
- return columnFilteredRowModel;
1250
- }
1251
-
1252
- return globalFiltersFn(instance, columnFilteredRowModel);
1253
- }(); // Now that each filtered column has it's partially filtered rows,
1254
- // lets assign the final filtered rows to all of the other columns
1255
-
1256
-
1257
- var nonFilteredColumns = instance.getAllLeafColumns().filter(function (column) {
1258
- var _instance$getState$co6;
1259
-
1260
- return !((_instance$getState$co6 = instance.getState().columnFilters) != null && _instance$getState$co6.find(function (d) {
1261
- return d.id === column.id;
1262
- }));
1263
- }); // This essentially enables faceted filter options to be built easily
1264
- // using every column's preFilteredRows value
1265
-
1266
- nonFilteredColumns.forEach(function (column) {
1267
- column.getPreFilteredRows = function () {
1268
- return globalFilteredRowModel.rows;
1269
- };
1270
- });
1271
- return globalFilteredRowModel;
1272
- }, {
1273
- key: 'getGlobalFilteredRowModel',
1274
- debug: function debug() {
1275
- var _instance$options$deb3;
1350
+ getGlobalFilteredRowModel: function getGlobalFilteredRowModel() {
1351
+ if (!instance._getGlobalFilteredRowModel && instance.options.getGlobalFilteredRowModel) {
1352
+ instance._getGlobalFilteredRowModel = instance.options.getGlobalFilteredRowModel(instance);
1353
+ }
1276
1354
 
1277
- return (_instance$options$deb3 = instance.options.debugAll) != null ? _instance$options$deb3 : instance.options.debugTable;
1278
- },
1279
- onChange: function onChange() {
1280
- instance._notifySortingReset();
1355
+ if (!instance._getGlobalFilteredRowModel) {
1356
+ return instance.getPreGlobalFilteredRowModel();
1281
1357
  }
1282
- })
1358
+
1359
+ return instance._getGlobalFilteredRowModel();
1360
+ }
1283
1361
  };
1284
1362
  }
1285
1363
  };
@@ -1444,6 +1522,8 @@ var Grouping = {
1444
1522
  var registered = false;
1445
1523
  return {
1446
1524
  _notifyGroupingReset: function _notifyGroupingReset() {
1525
+ instance._notifyExpandedReset();
1526
+
1447
1527
  if (!registered) {
1448
1528
  registered = true;
1449
1529
  return;
@@ -1543,25 +1623,17 @@ var Grouping = {
1543
1623
  getPreGroupedRowModel: function getPreGroupedRowModel() {
1544
1624
  return instance.getSortedRowModel();
1545
1625
  },
1546
- getGroupedRowModel: memo(function () {
1547
- return [instance.getState().grouping, instance.getSortedRowModel(), instance.options.groupRowsFn];
1548
- }, function (grouping, rowModel, groupRowsFn) {
1549
- if (!groupRowsFn || !grouping.length) {
1550
- return rowModel;
1626
+ getGroupedRowModel: function getGroupedRowModel() {
1627
+ if (!instance._getGroupedRowModel && instance.options.getGroupedRowModel) {
1628
+ instance._getGroupedRowModel = instance.options.getGroupedRowModel(instance);
1551
1629
  }
1552
1630
 
1553
- return groupRowsFn(instance, rowModel);
1554
- }, {
1555
- key: 'getGroupedRowModel',
1556
- debug: function debug() {
1557
- var _instance$options$deb;
1558
-
1559
- return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugTable;
1560
- },
1561
- onChange: function onChange() {
1562
- return instance._notifyExpandedReset();
1631
+ if (!instance._getGroupedRowModel) {
1632
+ return instance.getPreGroupedRowModel();
1563
1633
  }
1564
- })
1634
+
1635
+ return instance._getGroupedRowModel();
1636
+ }
1565
1637
  };
1566
1638
  },
1567
1639
  createRow: function createRow(row, instance) {
@@ -1804,9 +1876,7 @@ var Pagination = {
1804
1876
  return instance.getState().pagination.pageIndex > 0;
1805
1877
  },
1806
1878
  getCanNextPage: function getCanNextPage() {
1807
- var _instance$getState$pa = instance.getState().pagination,
1808
- pageIndex = _instance$getState$pa.pageIndex,
1809
- pageSize = _instance$getState$pa.pageSize;
1879
+ var pageIndex = instance.getState().pagination.pageIndex;
1810
1880
  var pageCount = instance.getPageCount();
1811
1881
 
1812
1882
  if (pageCount === -1) {
@@ -1817,7 +1887,7 @@ var Pagination = {
1817
1887
  return false;
1818
1888
  }
1819
1889
 
1820
- return pageIndex < Math.ceil(instance.getPrePaginationRowModel().rows.length / pageSize) - 1;
1890
+ return pageIndex < pageCount - 1;
1821
1891
  },
1822
1892
  previousPage: function previousPage() {
1823
1893
  return instance.setPageIndex(function (old) {
@@ -1832,22 +1902,17 @@ var Pagination = {
1832
1902
  getPrePaginationRowModel: function getPrePaginationRowModel() {
1833
1903
  return instance.getExpandedRowModel();
1834
1904
  },
1835
- getPaginationRowModel: memo(function () {
1836
- return [instance.getState().pagination, instance.getExpandedRowModel(), instance.options.paginateRowsFn];
1837
- }, function (_pagination, rowModel, paginateRowsFn) {
1838
- if (!paginateRowsFn || !rowModel.rows.length) {
1839
- return rowModel;
1905
+ getPaginationRowModel: function getPaginationRowModel() {
1906
+ if (!instance._getPaginationRowModel && instance.options.getPaginationRowModel) {
1907
+ instance._getPaginationRowModel = instance.options.getPaginationRowModel(instance);
1840
1908
  }
1841
1909
 
1842
- return paginateRowsFn(instance, rowModel);
1843
- }, {
1844
- key: 'getPaginationRowModel',
1845
- debug: function debug() {
1846
- var _instance$options$deb2;
1847
-
1848
- return (_instance$options$deb2 = instance.options.debugAll) != null ? _instance$options$deb2 : instance.options.debugTable;
1910
+ if (!instance._getPaginationRowModel) {
1911
+ return instance.getPrePaginationRowModel();
1849
1912
  }
1850
- }),
1913
+
1914
+ return instance._getPaginationRowModel();
1915
+ },
1851
1916
  getPageCount: function getPageCount() {
1852
1917
  var pageCount = instance.getState().pagination.pageCount;
1853
1918
 
@@ -2657,6 +2722,8 @@ var Sorting = {
2657
2722
  var registered = false;
2658
2723
  return {
2659
2724
  _notifySortingReset: function _notifySortingReset() {
2725
+ instance._notifyGroupingReset();
2726
+
2660
2727
  if (!registered) {
2661
2728
  registered = true;
2662
2729
  return;
@@ -2878,7 +2945,7 @@ var Sorting = {
2878
2945
  var initialProps = {
2879
2946
  title: canSort ? 'Toggle Sorting' : undefined,
2880
2947
  onClick: canSort ? function (e) {
2881
- e.persist();
2948
+ e.persist == null ? void 0 : e.persist();
2882
2949
  column.toggleSorting == null ? void 0 : column.toggleSorting(undefined, column.getCanMultiSort() ? instance.options.isMultiSortEvent == null ? void 0 : instance.options.isMultiSortEvent(e) : false);
2883
2950
  } : undefined
2884
2951
  };
@@ -2887,25 +2954,17 @@ var Sorting = {
2887
2954
  getPreSortedRowModel: function getPreSortedRowModel() {
2888
2955
  return instance.getGlobalFilteredRowModel();
2889
2956
  },
2890
- getSortedRowModel: memo(function () {
2891
- return [instance.getState().sorting, instance.getGlobalFilteredRowModel(), instance.options.sortRowsFn];
2892
- }, function (sorting, rowModel, sortingFn) {
2893
- if (!sortingFn || !(sorting != null && sorting.length)) {
2894
- return rowModel;
2957
+ getSortedRowModel: function getSortedRowModel() {
2958
+ if (!instance._getSortedRowModel && instance.options.getSortedRowModel) {
2959
+ instance._getSortedRowModel = instance.options.getSortedRowModel(instance);
2895
2960
  }
2896
2961
 
2897
- return sortingFn(instance, rowModel);
2898
- }, {
2899
- key: 'getSortedRowModel',
2900
- debug: function debug() {
2901
- var _instance$options$deb;
2902
-
2903
- return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugTable;
2904
- },
2905
- onChange: function onChange() {
2906
- instance._notifyGroupingReset();
2962
+ if (!instance._getSortedRowModel) {
2963
+ return instance.getPreSortedRowModel();
2907
2964
  }
2908
- })
2965
+
2966
+ return instance._getSortedRowModel();
2967
+ }
2909
2968
  };
2910
2969
  }
2911
2970
  };
@@ -3691,8 +3750,11 @@ function createTableInstance(options) {
3691
3750
  };
3692
3751
 
3693
3752
  instance.options = buildOptions(options);
3753
+ var coreInitialState = {
3754
+ coreProgress: 1
3755
+ };
3694
3756
 
3695
- var initialState = _extends({}, features.reduce(function (obj, feature) {
3757
+ var initialState = _extends({}, coreInitialState, features.reduce(function (obj, feature) {
3696
3758
  return Object.assign(obj, feature.getInitialState == null ? void 0 : feature.getInitialState());
3697
3759
  }, {}), (_options$initialState = options.initialState) != null ? _options$initialState : {});
3698
3760
 
@@ -3704,7 +3766,13 @@ function createTableInstance(options) {
3704
3766
  instance.setState(instance.initialState);
3705
3767
  },
3706
3768
  setOptions: function setOptions(updater) {
3707
- instance.options = buildOptions(functionalUpdate(updater, instance.options));
3769
+ var newOptions = functionalUpdate(updater, instance.options);
3770
+
3771
+ if (instance.options.mergeOptions) {
3772
+ instance.options = instance.options.mergeOptions(defaultOptions, newOptions);
3773
+ } else {
3774
+ instance.options = buildOptions(newOptions);
3775
+ }
3708
3776
  },
3709
3777
  render: function render(template, props) {
3710
3778
  if (typeof instance.options.render === 'function') {
@@ -4000,85 +4068,13 @@ function createTableInstance(options) {
4000
4068
 
4001
4069
  return row;
4002
4070
  },
4003
- getCoreRowModel: memo(function () {
4004
- return [instance.options.data];
4005
- }, function (data) {
4006
- // Access the row model using initial columns
4007
- var rows = [];
4008
- var flatRows = [];
4009
- var rowsById = {};
4010
- var leafColumns = instance.getAllLeafColumns();
4011
-
4012
- var accessRow = function accessRow(originalRow, rowIndex, depth, parentRows, parent) {
4013
- if (depth === void 0) {
4014
- depth = 0;
4015
- }
4016
-
4017
- var id = instance.getRowId(originalRow, rowIndex, parent);
4018
-
4019
- if (!id) {
4020
- if (process.env.NODE_ENV !== 'production') {
4021
- throw new Error("getRowId expected an ID, but got " + id);
4022
- }
4023
- }
4024
-
4025
- var values = {};
4026
-
4027
- for (var i = 0; i < leafColumns.length; i++) {
4028
- var _column = leafColumns[i];
4029
-
4030
- if (_column && _column.accessorFn) {
4031
- values[_column.id] = _column.accessorFn(originalRow, rowIndex);
4032
- }
4033
- } // Make the row
4034
-
4035
-
4036
- var row = instance.createRow(id, originalRow, rowIndex, depth, values); // Push instance row into the parentRows array
4037
-
4038
- parentRows.push(row); // Keep track of every row in a flat array
4039
-
4040
- flatRows.push(row); // Also keep track of every row by its ID
4041
-
4042
- rowsById[id] = row; // Get the original subrows
4043
-
4044
- if (instance.options.getSubRows) {
4045
- var originalSubRows = instance.options.getSubRows(originalRow, rowIndex); // Then recursively access them
4046
-
4047
- if (originalSubRows != null && originalSubRows.length) {
4048
- row.originalSubRows = originalSubRows;
4049
- var subRows = [];
4050
-
4051
- for (var _i = 0; _i < row.originalSubRows.length; _i++) {
4052
- accessRow(row.originalSubRows[_i], _i, depth + 1, subRows, row);
4053
- }
4054
-
4055
- row.subRows = subRows;
4056
- }
4057
- }
4058
- };
4059
-
4060
- for (var i = 0; i < data.length; i++) {
4061
- accessRow(data[i], i, 0, rows);
4071
+ getCoreRowModel: function getCoreRowModel() {
4072
+ if (!instance._getCoreRowModel) {
4073
+ instance._getCoreRowModel = instance.options.getCoreRowModel(instance);
4062
4074
  }
4063
4075
 
4064
- return {
4065
- rows: rows,
4066
- flatRows: flatRows,
4067
- rowsById: rowsById
4068
- };
4069
- }, {
4070
- key: 'getRowModel',
4071
- debug: function debug() {
4072
- var _instance$options$deb10;
4073
-
4074
- return (_instance$options$deb10 = instance.options.debugAll) != null ? _instance$options$deb10 : instance.options.debugTable;
4075
- },
4076
- onChange: function onChange() {
4077
- instance._notifyFiltersReset();
4078
-
4079
- instance._notifyRowSelectionReset();
4080
- }
4081
- }),
4076
+ return instance._getCoreRowModel();
4077
+ },
4082
4078
  // The final calls start at the bottom of the model,
4083
4079
  // expanded rows, which then work their way up
4084
4080
  getRowModel: function getRowModel() {
@@ -4181,6 +4177,18 @@ function createTableInstance(options) {
4181
4177
  return (_instance$getRightHea = (_instance$getRightHea2 = instance.getRightHeaderGroups()[0]) == null ? void 0 : _instance$getRightHea2.headers.reduce(function (sum, header) {
4182
4178
  return sum + header.getWidth();
4183
4179
  }, 0)) != null ? _instance$getRightHea : 0;
4180
+ },
4181
+ getOverallProgress: function getOverallProgress() {
4182
+ var _instance$getState = instance.getState(),
4183
+ coreProgress = _instance$getState.coreProgress,
4184
+ columnFiltersProgress = _instance$getState.columnFiltersProgress,
4185
+ globalFilterProgress = _instance$getState.globalFilterProgress;
4186
+
4187
+ return mean(function () {
4188
+ return [coreProgress, columnFiltersProgress, globalFilterProgress].filter(function (d) {
4189
+ return d < 1;
4190
+ });
4191
+ });
4184
4192
  }
4185
4193
  });
4186
4194
 
@@ -4249,21 +4257,211 @@ function _createTable(_, __, __options) {
4249
4257
  };
4250
4258
  }
4251
4259
 
4252
- function filterRowModelFromLeafs(rowsToFilter, filterRows, instance) {
4253
- var newFilteredFlatRows = [];
4254
- var newFilteredRowsById = {};
4255
-
4256
- var recurseFilterRows = function recurseFilterRows(rowsToFilter, depth) {
4257
- if (depth === void 0) {
4258
- depth = 0;
4259
- }
4260
-
4261
- rowsToFilter = rowsToFilter.slice(); // Filter from children up first
4260
+ function getCoreRowModelSync() {
4261
+ return function (instance) {
4262
+ return memo(function () {
4263
+ return [instance.options.data];
4264
+ }, function (data) {
4265
+ // Access the row model using initial columns
4266
+ var rows = [];
4267
+ var flatRows = [];
4268
+ var rowsById = {};
4269
+ var leafColumns = instance.getAllLeafColumns();
4262
4270
 
4263
- for (var i = 0; i < rowsToFilter.length; i++) {
4264
- var _row$subRows;
4271
+ var accessRow = function accessRow(originalRow, rowIndex, depth, parentRows, parent) {
4272
+ if (depth === void 0) {
4273
+ depth = 0;
4274
+ }
4265
4275
 
4266
- var row = rowsToFilter[i];
4276
+ var id = instance.getRowId(originalRow, rowIndex, parent);
4277
+
4278
+ if (!id) {
4279
+ if (process.env.NODE_ENV !== 'production') {
4280
+ throw new Error("getRowId expected an ID, but got " + id);
4281
+ }
4282
+ }
4283
+
4284
+ var values = {};
4285
+
4286
+ for (var i = 0; i < leafColumns.length; i++) {
4287
+ var column = leafColumns[i];
4288
+
4289
+ if (column && column.accessorFn) {
4290
+ values[column.id] = column.accessorFn(originalRow, rowIndex);
4291
+ }
4292
+ } // Make the row
4293
+
4294
+
4295
+ var row = instance.createRow(id, originalRow, rowIndex, depth, values); // Push instance row into the parentRows array
4296
+
4297
+ parentRows.push(row); // Keep track of every row in a flat array
4298
+
4299
+ flatRows.push(row); // Also keep track of every row by its ID
4300
+
4301
+ rowsById[id] = row; // Get the original subrows
4302
+
4303
+ if (instance.options.getSubRows) {
4304
+ var originalSubRows = instance.options.getSubRows(originalRow, rowIndex); // Then recursively access them
4305
+
4306
+ if (originalSubRows != null && originalSubRows.length) {
4307
+ row.originalSubRows = originalSubRows;
4308
+ var subRows = [];
4309
+
4310
+ for (var _i = 0; _i < row.originalSubRows.length; _i++) {
4311
+ accessRow(row.originalSubRows[_i], _i, depth + 1, subRows, row);
4312
+ }
4313
+
4314
+ row.subRows = subRows;
4315
+ }
4316
+ }
4317
+ };
4318
+
4319
+ for (var i = 0; i < data.length; i++) {
4320
+ accessRow(data[i], i, 0, rows);
4321
+ }
4322
+
4323
+ return {
4324
+ rows: rows,
4325
+ flatRows: flatRows,
4326
+ rowsById: rowsById
4327
+ };
4328
+ }, {
4329
+ key: 'getRowModel',
4330
+ debug: function debug() {
4331
+ var _instance$options$deb;
4332
+
4333
+ return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugTable;
4334
+ },
4335
+ onChange: function onChange() {
4336
+ instance._notifyFiltersReset();
4337
+
4338
+ instance._notifyRowSelectionReset();
4339
+ }
4340
+ });
4341
+ };
4342
+ }
4343
+
4344
+ function getCoreRowModelAsync(opts) {
4345
+ return function (instance) {
4346
+ return incrementalMemo(function () {
4347
+ return [instance.options.data, instance.getAllLeafColumns()];
4348
+ }, function () {
4349
+ var rows = [];
4350
+ var flatRows = [];
4351
+ var rowsById = {};
4352
+ return {
4353
+ rows: rows,
4354
+ flatRows: flatRows,
4355
+ rowsById: rowsById
4356
+ };
4357
+ }, function (data, leafColumns) {
4358
+ return function (rowModelRef) {
4359
+ return function (scheduleTask) {
4360
+ var accessRows = function accessRows(originalRows, depth, parent) {
4361
+ if (depth === void 0) {
4362
+ depth = 0;
4363
+ }
4364
+
4365
+ var batchGroups = getBatchGroups(originalRows, 2000);
4366
+
4367
+ var _loop = function _loop(i) {
4368
+ var batchGroup = batchGroups[i];
4369
+ scheduleTask(function () {
4370
+ for (var _i = 0; _i < batchGroup.items.length; _i++) {
4371
+ var originalRow = batchGroup.items[_i];
4372
+ var rowIndex = batchGroup.start + _i;
4373
+ var id = instance.getRowId(originalRow, rowIndex, parent);
4374
+
4375
+ if (!id) {
4376
+ if (process.env.NODE_ENV !== 'production') {
4377
+ throw new Error("getRowId expected an ID, but got " + id);
4378
+ }
4379
+ }
4380
+
4381
+ var values = {};
4382
+
4383
+ for (var _i2 = 0; _i2 < leafColumns.length; _i2++) {
4384
+ var column = leafColumns[_i2];
4385
+
4386
+ if (column && column.accessorFn) {
4387
+ values[column.id] = column.accessorFn(originalRow, rowIndex);
4388
+ }
4389
+ } // Make the row
4390
+
4391
+
4392
+ var row = instance.createRow(id, originalRow, rowIndex, depth, values); // Push instance row into the parentRows array
4393
+
4394
+ if (parent) {
4395
+ parent.subRows.push(row);
4396
+ } else {
4397
+ rowModelRef.current.rows.push(row);
4398
+ } // Keep track of every row in a flat array
4399
+
4400
+
4401
+ rowModelRef.current.flatRows.push(row); // Also keep track of every row by its ID
4402
+
4403
+ rowModelRef.current.rowsById[id] = row; // Get the original subrows
4404
+
4405
+ if (instance.options.getSubRows) {
4406
+ var originalSubRows = instance.options.getSubRows(originalRow, rowIndex); // Then recursively access them
4407
+
4408
+ if (originalSubRows != null && originalSubRows.length) {
4409
+ row.originalSubRows = originalSubRows;
4410
+ row.subRows = [];
4411
+ accessRows(row.originalSubRows, depth + 1, row);
4412
+ }
4413
+ }
4414
+ }
4415
+ });
4416
+ };
4417
+
4418
+ for (var i = 0; i < batchGroups.length; i++) {
4419
+ _loop(i);
4420
+ }
4421
+ };
4422
+
4423
+ accessRows(data);
4424
+ };
4425
+ };
4426
+ }, {
4427
+ key: 'getRowModel',
4428
+ initialSync: opts == null ? void 0 : opts.initialSync,
4429
+ onProgress: function onProgress(progress) {
4430
+ instance.setState(function (old) {
4431
+ return _extends({}, old, {
4432
+ coreProgress: progress
4433
+ });
4434
+ });
4435
+ },
4436
+ debug: function debug() {
4437
+ var _instance$options$deb;
4438
+
4439
+ return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugTable;
4440
+ },
4441
+ onChange: function onChange() {
4442
+ instance._notifyFiltersReset();
4443
+
4444
+ instance._notifyRowSelectionReset();
4445
+ }
4446
+ });
4447
+ };
4448
+ }
4449
+
4450
+ function filterRowModelFromLeafs(rowsToFilter, filterRows, instance) {
4451
+ var newFilteredFlatRows = [];
4452
+ var newFilteredRowsById = {};
4453
+
4454
+ var recurseFilterRows = function recurseFilterRows(rowsToFilter, depth) {
4455
+ if (depth === void 0) {
4456
+ depth = 0;
4457
+ }
4458
+
4459
+ rowsToFilter = rowsToFilter.slice(); // Filter from children up first
4460
+
4461
+ for (var i = 0; i < rowsToFilter.length; i++) {
4462
+ var _row$subRows;
4463
+
4464
+ var row = rowsToFilter[i];
4267
4465
 
4268
4466
  if (!((_row$subRows = row.subRows) != null && _row$subRows.length)) {
4269
4467
  continue;
@@ -4332,259 +4530,380 @@ function filterRowModelFromRoot(rowsToFilter, filterRows, instance) {
4332
4530
  };
4333
4531
  }
4334
4532
 
4335
- function columnFilterRowsFn(instance, rowModel) {
4336
- var columnFilters = instance.getState().columnFilters;
4337
- var filterFromLeafRows = instance.options.filterFromLeafRows;
4533
+ function getColumnFilteredRowModelSync() {
4534
+ return function (instance) {
4535
+ return memo(function () {
4536
+ return [instance.getState().columnFilters, instance.getCoreRowModel()];
4537
+ }, function (columnFilters, rowModel) {
4538
+ var columnFilteredRowModel = function () {
4539
+ if (!rowModel.rows.length || !columnFilters) {
4540
+ return rowModel;
4541
+ }
4338
4542
 
4339
- var filterRows = function filterRows(rowsToFilter, depth) {
4340
- for (var i = 0; i < columnFilters.length; i++) {
4341
- var _columnFilters$i = columnFilters[i],
4342
- columnId = _columnFilters$i.id,
4343
- filterValue = _columnFilters$i.value; // Find the columnFilters column
4543
+ var filterFromLeafRows = instance.options.filterFromLeafRows;
4344
4544
 
4345
- var column = instance.getColumn(columnId);
4545
+ var filterRows = function filterRows(rowsToFilter, depth) {
4546
+ for (var i = 0; i < columnFilters.length; i++) {
4547
+ var _columnFilters$i = columnFilters[i],
4548
+ columnId = _columnFilters$i.id,
4549
+ filterValue = _columnFilters$i.value; // Find the columnFilters column
4346
4550
 
4347
- if (!column) {
4348
- if (process.env.NODE_ENV !== 'production') {
4349
- console.warn("Table: Could not find a column with id: " + columnId);
4350
- }
4551
+ var column = instance.getColumn(columnId);
4351
4552
 
4352
- throw new Error();
4353
- }
4553
+ if (!column) {
4554
+ if (process.env.NODE_ENV !== 'production') {
4555
+ console.warn("Table: Could not find a column with id: " + columnId);
4556
+ }
4354
4557
 
4355
- if (depth === 0) {
4356
- (function () {
4357
- var preFilteredRows = [].concat(rowsToFilter);
4558
+ throw new Error();
4559
+ }
4358
4560
 
4359
- column.getPreFilteredRows = function () {
4360
- return preFilteredRows;
4361
- };
4362
- })();
4363
- }
4561
+ if (depth === 0) {
4562
+ (function () {
4563
+ var preFilteredRows = [].concat(rowsToFilter);
4364
4564
 
4365
- var filterFn = instance.getColumnFilterFn(column.id);
4565
+ column.getPreFilteredRows = function () {
4566
+ return preFilteredRows;
4567
+ };
4568
+ })();
4569
+ }
4366
4570
 
4367
- if (!filterFn) {
4368
- if (process.env.NODE_ENV !== 'production') {
4369
- console.warn("Could not find a valid 'column.filterType' for column with the ID: " + column.id + ".");
4370
- }
4571
+ var filterFn = instance.getColumnFilterFn(column.id);
4371
4572
 
4372
- continue;
4373
- } // Pass the rows, id, filterValue and column to the filterFn
4374
- // to get the filtered rows back
4573
+ if (!filterFn) {
4574
+ if (process.env.NODE_ENV !== 'production') {
4575
+ console.warn("Could not find a valid 'column.filterType' for column with the ID: " + column.id + ".");
4576
+ }
4375
4577
 
4578
+ continue;
4579
+ } // Pass the rows, id, filterValue and column to the filterFn
4580
+ // to get the filtered rows back
4376
4581
 
4377
- rowsToFilter = filterFn(rowsToFilter, [columnId], filterValue);
4378
- }
4379
4582
 
4380
- return rowsToFilter;
4381
- };
4583
+ rowsToFilter = filterFn(rowsToFilter, [columnId], filterValue);
4584
+ }
4382
4585
 
4383
- if (filterFromLeafRows) {
4384
- return filterRowModelFromLeafs(rowModel.rows, filterRows, instance);
4385
- }
4586
+ return rowsToFilter;
4587
+ };
4386
4588
 
4387
- return filterRowModelFromRoot(rowModel.rows, filterRows, instance);
4388
- }
4589
+ if (filterFromLeafRows) {
4590
+ return filterRowModelFromLeafs(rowModel.rows, filterRows, instance);
4591
+ }
4389
4592
 
4390
- function globalFilterRowsFn(instance, rowModel) {
4391
- var globalFilter = instance.getState().globalFilter;
4392
- var filterFromLeafRows = instance.options.filterFromLeafRows;
4393
- var filterFn = instance.getGlobalFilterFn();
4593
+ return filterRowModelFromRoot(rowModel.rows, filterRows, instance);
4594
+ }(); // Now that each filtered column has it's partially filtered rows,
4595
+ // lets assign the final filtered rows to all of the other columns
4394
4596
 
4395
- if (!filterFn) {
4396
- if (process.env.NODE_ENV !== 'production') {
4397
- console.warn("Could not find a valid 'globalFilterType'");
4398
- }
4399
4597
 
4400
- return rowModel;
4401
- }
4598
+ var nonFilteredColumns = instance.getAllLeafColumns().filter(function (column) {
4599
+ var _instance$getState$co;
4402
4600
 
4403
- var filterableColumns = instance.getAllLeafColumns().filter(function (column) {
4404
- return column.getCanGlobalFilter();
4405
- });
4406
- var filterableColumnIds = filterableColumns.map(function (d) {
4407
- return d.id;
4408
- });
4601
+ return !((_instance$getState$co = instance.getState().columnFilters) != null && _instance$getState$co.find(function (d) {
4602
+ return d.id === column.id;
4603
+ }));
4604
+ }); // This essentially enables faceted filter options to be built easily
4605
+ // using every column's preFilteredRows value
4409
4606
 
4410
- var filterRows = function filterRows(rows) {
4411
- return filterFn(rows, filterableColumnIds, globalFilter);
4412
- };
4413
-
4414
- if (filterFromLeafRows) {
4415
- filterRowModelFromLeafs(rowModel.rows, filterRows, instance);
4416
- }
4607
+ nonFilteredColumns.forEach(function (column) {
4608
+ column.getPreFilteredRows = function () {
4609
+ return columnFilteredRowModel.rows;
4610
+ };
4611
+ });
4612
+ return columnFilteredRowModel;
4613
+ }, {
4614
+ key: 'getColumnFilteredRowModelSync',
4615
+ debug: function debug() {
4616
+ var _instance$options$deb;
4417
4617
 
4418
- return filterRowModelFromRoot(rowModel.rows, filterRows, instance);
4618
+ return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugTable;
4619
+ },
4620
+ onChange: function onChange() {
4621
+ instance._notifySortingReset();
4622
+ }
4623
+ });
4624
+ };
4419
4625
  }
4420
4626
 
4421
- function sortRowsFn(instance, rowModel) {
4422
- var sortingState = instance.getState().sorting;
4423
- var sortedFlatRows = []; // Filter out sortings that correspond to non existing columns
4627
+ function getGlobalFilteredRowModelSync() {
4628
+ return function (instance) {
4629
+ return memo(function () {
4630
+ return [instance.getState().globalFilter, instance.getCoreRowModel()];
4631
+ }, function (globalFilter, rowModel) {
4632
+ var globalFilteredRowModel = function () {
4633
+ if (!rowModel.rows.length || !globalFilter) {
4634
+ return rowModel;
4635
+ }
4424
4636
 
4425
- var availableSorting = sortingState.filter(function (sort) {
4426
- return instance.getColumnCanSort(sort.id);
4427
- });
4428
- var columnInfoById = {};
4429
- availableSorting.forEach(function (sortEntry) {
4430
- var column = instance.getColumn(sortEntry.id);
4431
- columnInfoById[sortEntry.id] = {
4432
- sortUndefined: column.sortUndefined,
4433
- invertSorting: column.invertSorting,
4434
- sortingFn: instance.getColumnSortingFn(sortEntry.id)
4435
- };
4436
- });
4637
+ var filterFromLeafRows = instance.options.filterFromLeafRows;
4638
+ var filterFn = instance.getGlobalFilterFn();
4437
4639
 
4438
- var sortData = function sortData(rows) {
4439
- // This will also perform a stable sorting using the row index
4440
- // if needed.
4441
- var sortedData = rows.slice();
4442
- sortedData.sort(function (rowA, rowB) {
4443
- for (var i = 0; i < availableSorting.length; i += 1) {
4444
- var _sortEntry$desc;
4445
-
4446
- var sortEntry = availableSorting[i];
4447
- var columnInfo = columnInfoById[sortEntry.id];
4448
- var isDesc = (_sortEntry$desc = sortEntry == null ? void 0 : sortEntry.desc) != null ? _sortEntry$desc : false;
4449
-
4450
- if (columnInfo.sortUndefined) {
4451
- var aValue = rowA.values[sortEntry.id];
4452
- var bValue = rowB.values[sortEntry.id];
4453
- var aUndefined = typeof aValue === 'undefined';
4454
- var bUndefined = typeof bValue === 'undefined';
4455
-
4456
- if (aUndefined || bUndefined) {
4457
- return aUndefined && bUndefined ? 0 : aUndefined ? columnInfo.sortUndefined : -columnInfo.sortUndefined;
4640
+ if (!filterFn) {
4641
+ if (process.env.NODE_ENV !== 'production') {
4642
+ console.warn("Could not find a valid 'globalFilterType'");
4458
4643
  }
4459
- } // This function should always return in ascending order
4460
-
4461
4644
 
4462
- var sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id);
4645
+ return rowModel;
4646
+ }
4463
4647
 
4464
- if (sortInt !== 0) {
4465
- if (isDesc) {
4466
- sortInt *= -1;
4467
- }
4648
+ var filterableColumns = instance.getAllLeafColumns().filter(function (column) {
4649
+ return column.getCanGlobalFilter();
4650
+ });
4651
+ var filterableColumnIds = filterableColumns.map(function (d) {
4652
+ return d.id;
4653
+ });
4468
4654
 
4469
- if (columnInfo.invertSorting) {
4470
- sortInt *= -1;
4471
- }
4655
+ var filterRows = function filterRows(rows) {
4656
+ return filterFn(rows, filterableColumnIds, globalFilter);
4657
+ };
4472
4658
 
4473
- return sortInt;
4659
+ if (filterFromLeafRows) {
4660
+ filterRowModelFromLeafs(rowModel.rows, filterRows, instance);
4474
4661
  }
4475
- }
4476
4662
 
4477
- return rowA.index - rowB.index;
4478
- }); // If there are sub-rows, sort them
4663
+ return filterRowModelFromRoot(rowModel.rows, filterRows, instance);
4664
+ }(); // Now that each filtered column has it's partially filtered rows,
4665
+ // lets assign the final filtered rows to all of the other columns
4479
4666
 
4480
- sortedData.forEach(function (row) {
4481
- sortedFlatRows.push(row);
4482
4667
 
4483
- if (!row.subRows || row.subRows.length <= 1) {
4484
- return;
4485
- }
4668
+ var nonFilteredColumns = instance.getAllLeafColumns().filter(function (column) {
4669
+ var _instance$getState$co;
4486
4670
 
4487
- row.subRows = sortData(row.subRows);
4488
- });
4489
- return sortedData;
4490
- };
4671
+ return !((_instance$getState$co = instance.getState().columnFilters) != null && _instance$getState$co.find(function (d) {
4672
+ return d.id === column.id;
4673
+ }));
4674
+ }); // This essentially enables faceted filter options to be built easily
4675
+ // using every column's preFilteredRows value
4491
4676
 
4492
- return {
4493
- rows: sortData(rowModel.rows),
4494
- flatRows: sortedFlatRows,
4495
- rowsById: rowModel.rowsById
4677
+ nonFilteredColumns.forEach(function (column) {
4678
+ column.getPreFilteredRows = function () {
4679
+ return globalFilteredRowModel.rows;
4680
+ };
4681
+ });
4682
+ return globalFilteredRowModel;
4683
+ }, {
4684
+ key: 'getGlobalFilteredRowModelSync',
4685
+ debug: function debug() {
4686
+ var _instance$options$deb;
4687
+
4688
+ return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugTable;
4689
+ },
4690
+ onChange: function onChange() {
4691
+ instance._notifySortingReset();
4692
+ }
4693
+ });
4496
4694
  };
4497
4695
  }
4498
4696
 
4499
- function groupRowsFn(instance, sortedRowModel) {
4500
- var groupingState = instance.getState().grouping; // Filter the grouping list down to columns that exist
4697
+ function getSortedRowModelSync() {
4698
+ return function (instance) {
4699
+ return memo(function () {
4700
+ return [instance.getState().sorting, instance.getGlobalFilteredRowModel()];
4701
+ }, function (sorting, rowModel) {
4702
+ if (!rowModel.rows.length || !(sorting != null && sorting.length)) {
4703
+ return rowModel;
4704
+ }
4501
4705
 
4502
- var existingGrouping = groupingState.filter(function (columnId) {
4503
- return instance.getColumn(columnId);
4504
- }); // Find the columns that can or are aggregating
4505
- // Uses each column to aggregate rows into a single value
4706
+ var sortingState = instance.getState().sorting;
4707
+ var sortedFlatRows = []; // Filter out sortings that correspond to non existing columns
4506
4708
 
4507
- var aggregateRowsToValues = function aggregateRowsToValues(leafRows, groupedRows, depth) {
4508
- var values = {};
4509
- instance.getAllLeafColumns().forEach(function (column) {
4510
- // Don't aggregate columns that are in the grouping
4511
- if (existingGrouping.includes(column.id)) {
4512
- values[column.id] = groupedRows[0] ? groupedRows[0].values[column.id] : null;
4513
- return;
4514
- } // Aggregate the values
4709
+ var availableSorting = sortingState.filter(function (sort) {
4710
+ return instance.getColumnCanSort(sort.id);
4711
+ });
4712
+ var columnInfoById = {};
4713
+ availableSorting.forEach(function (sortEntry) {
4714
+ var column = instance.getColumn(sortEntry.id);
4715
+ columnInfoById[sortEntry.id] = {
4716
+ sortUndefined: column.sortUndefined,
4717
+ invertSorting: column.invertSorting,
4718
+ sortingFn: instance.getColumnSortingFn(sortEntry.id)
4719
+ };
4720
+ });
4515
4721
 
4722
+ var sortData = function sortData(rows) {
4723
+ // This will also perform a stable sorting using the row index
4724
+ // if needed.
4725
+ var sortedData = rows.slice();
4726
+ sortedData.sort(function (rowA, rowB) {
4727
+ for (var i = 0; i < availableSorting.length; i += 1) {
4728
+ var _sortEntry$desc;
4729
+
4730
+ var sortEntry = availableSorting[i];
4731
+ var columnInfo = columnInfoById[sortEntry.id];
4732
+ var isDesc = (_sortEntry$desc = sortEntry == null ? void 0 : sortEntry.desc) != null ? _sortEntry$desc : false;
4733
+
4734
+ if (columnInfo.sortUndefined) {
4735
+ var aValue = rowA.values[sortEntry.id];
4736
+ var bValue = rowB.values[sortEntry.id];
4737
+ var aUndefined = typeof aValue === 'undefined';
4738
+ var bUndefined = typeof bValue === 'undefined';
4739
+
4740
+ if (aUndefined || bUndefined) {
4741
+ return aUndefined && bUndefined ? 0 : aUndefined ? columnInfo.sortUndefined : -columnInfo.sortUndefined;
4742
+ }
4743
+ } // This function should always return in ascending order
4516
4744
 
4517
- var aggregateFn = instance.getColumnAggregationFn(column.id);
4518
4745
 
4519
- if (aggregateFn) {
4520
- values[column.id] = aggregateFn(function () {
4521
- return leafRows.map(function (row) {
4522
- var columnValue = row.values[column.id];
4746
+ var sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id);
4523
4747
 
4524
- if (!depth && column.aggregateValue) {
4525
- columnValue = column.aggregateValue(columnValue);
4748
+ if (sortInt !== 0) {
4749
+ if (isDesc) {
4750
+ sortInt *= -1;
4751
+ }
4752
+
4753
+ if (columnInfo.invertSorting) {
4754
+ sortInt *= -1;
4755
+ }
4756
+
4757
+ return sortInt;
4526
4758
  }
4759
+ }
4527
4760
 
4528
- return columnValue;
4529
- });
4530
- }, function () {
4531
- return groupedRows.map(function (row) {
4532
- return row.values[column.id];
4533
- });
4534
- });
4535
- } else if (column.aggregationType) {
4536
- console.info({
4537
- column: column
4761
+ return rowA.index - rowB.index;
4762
+ }); // If there are sub-rows, sort them
4763
+
4764
+ sortedData.forEach(function (row) {
4765
+ sortedFlatRows.push(row);
4766
+
4767
+ if (!row.subRows || row.subRows.length <= 1) {
4768
+ return;
4769
+ }
4770
+
4771
+ row.subRows = sortData(row.subRows);
4538
4772
  });
4539
- throw new Error(process.env.NODE_ENV !== 'production' ? "Table: Invalid column.aggregateType option for column listed above" : '');
4540
- } else {
4541
- values[column.id] = null;
4773
+ return sortedData;
4774
+ };
4775
+
4776
+ return {
4777
+ rows: sortData(rowModel.rows),
4778
+ flatRows: sortedFlatRows,
4779
+ rowsById: rowModel.rowsById
4780
+ };
4781
+ }, {
4782
+ key: 'getSortedRowModel',
4783
+ debug: function debug() {
4784
+ var _instance$options$deb;
4785
+
4786
+ return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugTable;
4787
+ },
4788
+ onChange: function onChange() {
4789
+ instance._notifyGroupingReset();
4542
4790
  }
4543
4791
  });
4544
- return values;
4545
4792
  };
4793
+ }
4546
4794
 
4547
- var groupedFlatRows = [];
4548
- var groupedRowsById = {}; // const onlyGroupedFlatRows: Row[] = [];
4549
- // const onlyGroupedRowsById: Record<RowId, Row> = {};
4550
- // const nonGroupedFlatRows: Row[] = [];
4551
- // const nonGroupedRowsById: Record<RowId, Row> = {};
4552
- // Recursively group the data
4795
+ function getGroupedRowModelSync() {
4796
+ return function (instance) {
4797
+ return memo(function () {
4798
+ return [instance.getState().grouping, instance.getSortedRowModel()];
4799
+ }, function (grouping, rowModel) {
4800
+ if (!rowModel.rows.length || !grouping.length) {
4801
+ return rowModel;
4802
+ } // Filter the grouping list down to columns that exist
4553
4803
 
4554
- var groupUpRecursively = function groupUpRecursively(rows, depth, parentId) {
4555
- if (depth === void 0) {
4556
- depth = 0;
4557
- }
4558
4804
 
4559
- // This is the last level, just return the rows
4560
- if (depth === existingGrouping.length) {
4561
- return rows;
4562
- }
4805
+ var existingGrouping = grouping.filter(function (columnId) {
4806
+ return instance.getColumn(columnId);
4807
+ }); // Find the columns that can or are aggregating
4808
+ // Uses each column to aggregate rows into a single value
4563
4809
 
4564
- var columnId = existingGrouping[depth]; // Group the rows together for this level
4810
+ var aggregateRowsToValues = function aggregateRowsToValues(leafRows, groupedRows, depth) {
4811
+ var values = {};
4812
+ instance.getAllLeafColumns().forEach(function (column) {
4813
+ // Don't aggregate columns that are in the grouping
4814
+ if (existingGrouping.includes(column.id)) {
4815
+ values[column.id] = groupedRows[0] ? groupedRows[0].values[column.id] : null;
4816
+ return;
4817
+ } // Aggregate the values
4565
4818
 
4566
- var rowGroupsMap = groupBy(rows, columnId); // Peform aggregations for each group
4567
4819
 
4568
- var aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map(function (_ref, index) {
4569
- var groupingValue = _ref[0],
4570
- groupedRows = _ref[1];
4571
- var id = columnId + ":" + groupingValue;
4572
- id = parentId ? parentId + ">" + id : id; // First, Recurse to group sub rows before aggregation
4820
+ var aggregateFn = instance.getColumnAggregationFn(column.id);
4573
4821
 
4574
- var subRows = groupUpRecursively(groupedRows, depth + 1, id); // Flatten the leaf rows of the rows in this group
4822
+ if (aggregateFn) {
4823
+ values[column.id] = aggregateFn(function () {
4824
+ return leafRows.map(function (row) {
4825
+ var columnValue = row.values[column.id];
4575
4826
 
4576
- var leafRows = depth ? flattenBy(groupedRows, function (row) {
4577
- return row.subRows;
4578
- }) : groupedRows;
4579
- var values = aggregateRowsToValues(leafRows, groupedRows, depth);
4580
- var row = instance.createRow(id, undefined, index, depth, values);
4581
- Object.assign(row, {
4582
- groupingColumnId: columnId,
4583
- groupingValue: groupingValue,
4584
- subRows: subRows,
4585
- leafRows: leafRows
4586
- });
4587
- subRows.forEach(function (subRow) {
4827
+ if (!depth && column.aggregateValue) {
4828
+ columnValue = column.aggregateValue(columnValue);
4829
+ }
4830
+
4831
+ return columnValue;
4832
+ });
4833
+ }, function () {
4834
+ return groupedRows.map(function (row) {
4835
+ return row.values[column.id];
4836
+ });
4837
+ });
4838
+ } else if (column.aggregationType) {
4839
+ console.info({
4840
+ column: column
4841
+ });
4842
+ throw new Error(process.env.NODE_ENV !== 'production' ? "Table: Invalid column.aggregateType option for column listed above" : '');
4843
+ } else {
4844
+ values[column.id] = null;
4845
+ }
4846
+ });
4847
+ return values;
4848
+ };
4849
+
4850
+ var groupedFlatRows = [];
4851
+ var groupedRowsById = {}; // const onlyGroupedFlatRows: Row[] = [];
4852
+ // const onlyGroupedRowsById: Record<RowId, Row> = {};
4853
+ // const nonGroupedFlatRows: Row[] = [];
4854
+ // const nonGroupedRowsById: Record<RowId, Row> = {};
4855
+ // Recursively group the data
4856
+
4857
+ var groupUpRecursively = function groupUpRecursively(rows, depth, parentId) {
4858
+ if (depth === void 0) {
4859
+ depth = 0;
4860
+ }
4861
+
4862
+ // This is the last level, just return the rows
4863
+ if (depth === existingGrouping.length) {
4864
+ return rows;
4865
+ }
4866
+
4867
+ var columnId = existingGrouping[depth]; // Group the rows together for this level
4868
+
4869
+ var rowGroupsMap = groupBy(rows, columnId); // Peform aggregations for each group
4870
+
4871
+ var aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map(function (_ref, index) {
4872
+ var groupingValue = _ref[0],
4873
+ groupedRows = _ref[1];
4874
+ var id = columnId + ":" + groupingValue;
4875
+ id = parentId ? parentId + ">" + id : id; // First, Recurse to group sub rows before aggregation
4876
+
4877
+ var subRows = groupUpRecursively(groupedRows, depth + 1, id); // Flatten the leaf rows of the rows in this group
4878
+
4879
+ var leafRows = depth ? flattenBy(groupedRows, function (row) {
4880
+ return row.subRows;
4881
+ }) : groupedRows;
4882
+ var values = aggregateRowsToValues(leafRows, groupedRows, depth);
4883
+ var row = instance.createRow(id, undefined, index, depth, values);
4884
+ Object.assign(row, {
4885
+ groupingColumnId: columnId,
4886
+ groupingValue: groupingValue,
4887
+ subRows: subRows,
4888
+ leafRows: leafRows
4889
+ });
4890
+ subRows.forEach(function (subRow) {
4891
+ groupedFlatRows.push(subRow);
4892
+ groupedRowsById[subRow.id] = subRow; // if (subRow.getIsGrouped?.()) {
4893
+ // onlyGroupedFlatRows.push(subRow);
4894
+ // onlyGroupedRowsById[subRow.id] = subRow;
4895
+ // } else {
4896
+ // nonGroupedFlatRows.push(subRow);
4897
+ // nonGroupedRowsById[subRow.id] = subRow;
4898
+ // }
4899
+ });
4900
+ return row;
4901
+ });
4902
+ return aggregatedGroupedRows;
4903
+ };
4904
+
4905
+ var groupedRows = groupUpRecursively(rowModel.rows, 0, '');
4906
+ groupedRows.forEach(function (subRow) {
4588
4907
  groupedFlatRows.push(subRow);
4589
4908
  groupedRowsById[subRow.id] = subRow; // if (subRow.getIsGrouped?.()) {
4590
4909
  // onlyGroupedFlatRows.push(subRow);
@@ -4594,26 +4913,22 @@ function groupRowsFn(instance, sortedRowModel) {
4594
4913
  // nonGroupedRowsById[subRow.id] = subRow;
4595
4914
  // }
4596
4915
  });
4597
- return row;
4598
- });
4599
- return aggregatedGroupedRows;
4600
- };
4916
+ return {
4917
+ rows: groupedRows,
4918
+ flatRows: groupedFlatRows,
4919
+ rowsById: groupedRowsById
4920
+ };
4921
+ }, {
4922
+ key: 'getGroupedRowModel',
4923
+ debug: function debug() {
4924
+ var _instance$options$deb;
4601
4925
 
4602
- var groupedRows = groupUpRecursively(sortedRowModel.rows, 0, '');
4603
- groupedRows.forEach(function (subRow) {
4604
- groupedFlatRows.push(subRow);
4605
- groupedRowsById[subRow.id] = subRow; // if (subRow.getIsGrouped?.()) {
4606
- // onlyGroupedFlatRows.push(subRow);
4607
- // onlyGroupedRowsById[subRow.id] = subRow;
4608
- // } else {
4609
- // nonGroupedFlatRows.push(subRow);
4610
- // nonGroupedRowsById[subRow.id] = subRow;
4611
- // }
4612
- });
4613
- return {
4614
- rows: groupedRows,
4615
- flatRows: groupedFlatRows,
4616
- rowsById: groupedRowsById
4926
+ return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugTable;
4927
+ },
4928
+ onChange: function onChange() {
4929
+ return instance._notifyExpandedReset();
4930
+ }
4931
+ });
4617
4932
  };
4618
4933
  }
4619
4934
 
@@ -4633,7 +4948,28 @@ function groupBy(rows, columnId) {
4633
4948
  }, groupMap);
4634
4949
  }
4635
4950
 
4636
- function expandRowsFn(instance, sortedRowModel) {
4951
+ function getExpandedRowModel() {
4952
+ return function (instance) {
4953
+ return memo(function () {
4954
+ return [instance.getState().expanded, instance.getGroupedRowModel(), instance.options.paginateExpandedRows];
4955
+ }, function (expanded, rowModel, paginateExpandedRows) {
4956
+ if (!rowModel.rows.length || // Do not expand if rows are not included in pagination
4957
+ !paginateExpandedRows || expanded !== true && !Object.keys(expanded != null ? expanded : {}).length) {
4958
+ return rowModel;
4959
+ }
4960
+
4961
+ return expandRows(rowModel, instance);
4962
+ }, {
4963
+ key: 'getExpandedRowModel',
4964
+ debug: function debug() {
4965
+ var _instance$options$deb;
4966
+
4967
+ return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugTable;
4968
+ }
4969
+ });
4970
+ };
4971
+ }
4972
+ function expandRows(rowModel, instance) {
4637
4973
  var expandedRows = [];
4638
4974
 
4639
4975
  var handleRow = function handleRow(row) {
@@ -4646,39 +4982,55 @@ function expandRowsFn(instance, sortedRowModel) {
4646
4982
  }
4647
4983
  };
4648
4984
 
4649
- sortedRowModel.rows.forEach(handleRow);
4985
+ rowModel.rows.forEach(handleRow);
4650
4986
  return {
4651
4987
  rows: expandedRows,
4652
- flatRows: sortedRowModel.flatRows,
4653
- rowsById: sortedRowModel.rowsById
4988
+ flatRows: rowModel.flatRows,
4989
+ rowsById: rowModel.rowsById
4654
4990
  };
4655
4991
  }
4656
4992
 
4657
- function paginateRowsFn(instance, rowModel) {
4658
- var _instance$getState$pa = instance.getState().pagination,
4659
- pageSize = _instance$getState$pa.pageSize,
4660
- pageIndex = _instance$getState$pa.pageIndex;
4661
- var rows = rowModel.rows,
4662
- flatRows = rowModel.flatRows,
4663
- rowsById = rowModel.rowsById;
4664
- var pageStart = pageSize * pageIndex;
4665
- var pageEnd = pageStart + pageSize;
4666
- rows = rows.slice(pageStart, pageEnd);
4667
-
4668
- if (!instance.options.paginateExpandedRows) {
4669
- return expandRowsFn(instance, {
4670
- rows: rows,
4671
- flatRows: flatRows,
4672
- rowsById: rowsById
4673
- });
4674
- }
4993
+ function getPaginationRowModel(opts) {
4994
+ return function (instance) {
4995
+ return memo(function () {
4996
+ return [instance.getState().pagination, instance.getExpandedRowModel()];
4997
+ }, function (pagination, rowModel) {
4998
+ if (!rowModel.rows.length) {
4999
+ return rowModel;
5000
+ }
4675
5001
 
4676
- return {
4677
- rows: rows,
4678
- flatRows: flatRows,
4679
- rowsById: rowsById
5002
+ var pageSize = pagination.pageSize,
5003
+ pageIndex = pagination.pageIndex;
5004
+ var rows = rowModel.rows,
5005
+ flatRows = rowModel.flatRows,
5006
+ rowsById = rowModel.rowsById;
5007
+ var pageStart = pageSize * pageIndex;
5008
+ var pageEnd = pageStart + pageSize;
5009
+ rows = rows.slice(pageStart, pageEnd);
5010
+
5011
+ if (!instance.options.paginateExpandedRows) {
5012
+ return expandRows({
5013
+ rows: rows,
5014
+ flatRows: flatRows,
5015
+ rowsById: rowsById
5016
+ }, instance);
5017
+ }
5018
+
5019
+ return {
5020
+ rows: rows,
5021
+ flatRows: flatRows,
5022
+ rowsById: rowsById
5023
+ };
5024
+ }, {
5025
+ key: 'getPaginationRowModel',
5026
+ debug: function debug() {
5027
+ var _instance$options$deb;
5028
+
5029
+ return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugTable;
5030
+ }
5031
+ });
4680
5032
  };
4681
5033
  }
4682
5034
 
4683
- export { ColumnSizing, Expanding, Filters, Grouping, Headers, Ordering, Pagination, Pinning, RowSelection, Sorting, Visibility, buildHeaderGroups, columnFilterRowsFn, createTableInstance, defaultColumnSizing, expandRowsFn, flattenBy, functionalUpdate, globalFilterRowsFn, groupRowsFn, init, isFunction, isRowSelected, makeStateUpdater, memo, noop, paginateRowsFn, passiveEventSupported, propGetter, selectRowsFn, shouldAutoRemoveFilter, sortRowsFn };
5035
+ export { ColumnSizing, Expanding, Filters, Grouping, Headers, Ordering, Pagination, Pinning, RowSelection, Sorting, Visibility, buildHeaderGroups, createTableInstance, defaultColumnSizing, expandRows, flattenBy, functionalUpdate, getBatchGroups, getColumnFilteredRowModelSync, getCoreRowModelAsync, getCoreRowModelSync, getExpandedRowModel, getGlobalFilteredRowModelSync, getGroupedRowModelSync, getPaginationRowModel, getSortedRowModelSync, incrementalMemo, init, isFunction, isRowSelected, makeStateUpdater, memo, noop, passiveEventSupported, propGetter, selectRowsFn, shouldAutoRemoveFilter };
4684
5036
  //# sourceMappingURL=index.js.map