@tanstack/table-core 8.0.0-alpha.84 → 8.0.0-alpha.87

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 (46) hide show
  1. package/build/cjs/aggregationFns.js +50 -51
  2. package/build/cjs/aggregationFns.js.map +1 -1
  3. package/build/cjs/features/Expanding.js +0 -1
  4. package/build/cjs/features/Expanding.js.map +1 -1
  5. package/build/cjs/features/Filters.js +1 -2
  6. package/build/cjs/features/Filters.js.map +1 -1
  7. package/build/cjs/features/Grouping.js +5 -5
  8. package/build/cjs/features/Grouping.js.map +1 -1
  9. package/build/cjs/features/Sorting.js.map +1 -1
  10. package/build/cjs/features/Visibility.js +0 -5
  11. package/build/cjs/features/Visibility.js.map +1 -1
  12. package/build/cjs/index.js +0 -1
  13. package/build/cjs/index.js.map +1 -1
  14. package/build/cjs/sortingFns.js +53 -51
  15. package/build/cjs/sortingFns.js.map +1 -1
  16. package/build/cjs/utils/getExpandedRowModel.js +2 -2
  17. package/build/cjs/utils/getExpandedRowModel.js.map +1 -1
  18. package/build/cjs/utils/getGroupedRowModel.js +5 -13
  19. package/build/cjs/utils/getGroupedRowModel.js.map +1 -1
  20. package/build/cjs/utils/getPaginationRowModel.js +1 -1
  21. package/build/cjs/utils/getPaginationRowModel.js.map +1 -1
  22. package/build/esm/index.js +118 -131
  23. package/build/esm/index.js.map +1 -1
  24. package/build/stats-html.html +1 -1
  25. package/build/stats-react.json +324 -324
  26. package/build/types/aggregationFns.d.ts +10 -19
  27. package/build/types/features/Expanding.d.ts +0 -1
  28. package/build/types/features/Filters.d.ts +0 -2
  29. package/build/types/features/Grouping.d.ts +6 -8
  30. package/build/types/features/Sorting.d.ts +3 -3
  31. package/build/types/features/Visibility.d.ts +5 -6
  32. package/build/types/sortingFns.d.ts +7 -14
  33. package/build/umd/index.development.js +117 -131
  34. package/build/umd/index.development.js.map +1 -1
  35. package/build/umd/index.production.js +1 -1
  36. package/build/umd/index.production.js.map +1 -1
  37. package/package.json +1 -1
  38. package/src/aggregationFns.ts +44 -40
  39. package/src/features/Expanding.ts +0 -2
  40. package/src/features/Filters.ts +0 -5
  41. package/src/features/Grouping.ts +15 -18
  42. package/src/features/Sorting.ts +4 -4
  43. package/src/features/Visibility.ts +7 -16
  44. package/src/sortingFns.ts +59 -81
  45. package/src/utils/getExpandedRowModel.ts +1 -5
  46. package/src/utils/getGroupedRowModel.ts +8 -17
@@ -815,7 +815,6 @@ const Expanding = {
815
815
  return {
816
816
  onExpandedChange: makeStateUpdater('expanded', instance),
817
817
  autoResetExpanded: true,
818
- expandSubRows: true,
819
818
  paginateExpandedRows: true
820
819
  };
821
820
  },
@@ -1212,8 +1211,7 @@ const Filters = {
1212
1211
  createRow: (row, instance) => {
1213
1212
  return {
1214
1213
  columnFilters: {},
1215
- columnFiltersMeta: {},
1216
- subRowsByFacetId: {}
1214
+ columnFiltersMeta: {}
1217
1215
  };
1218
1216
  },
1219
1217
  createInstance: instance => {
@@ -1304,53 +1302,42 @@ function shouldAutoRemoveFilter(filterFn, value, column) {
1304
1302
  return (filterFn && filterFn.autoRemove ? filterFn.autoRemove(value, column) : false) || typeof value === 'undefined' || typeof value === 'string' && !value;
1305
1303
  }
1306
1304
 
1307
- const aggregationFns = {
1308
- sum,
1309
- min,
1310
- max,
1311
- extent,
1312
- mean,
1313
- median,
1314
- unique,
1315
- uniqueCount,
1316
- count
1317
- };
1318
-
1319
- function sum(_getLeafValues, getChildValues) {
1305
+ const sum = (columnId, _leafRows, childRows) => {
1320
1306
  // It's faster to just add the aggregations together instead of
1321
1307
  // process leaf nodes individually
1322
- return getChildValues().reduce((sum, next) => sum + (typeof next === 'number' ? next : 0), 0);
1323
- }
1308
+ return childRows.reduce((sum, next) => sum + (typeof next === 'number' ? next : 0), 0);
1309
+ };
1324
1310
 
1325
- function min(_getLeafValues, getChildValues) {
1311
+ const min = (columnId, _leafRows, childRows) => {
1326
1312
  let min;
1313
+ childRows.forEach(row => {
1314
+ const value = row.getValue(columnId);
1327
1315
 
1328
- for (const value of getChildValues()) {
1329
1316
  if (value != null && (min > value || min === undefined && value >= value)) {
1330
1317
  min = value;
1331
1318
  }
1332
- }
1333
-
1319
+ });
1334
1320
  return min;
1335
- }
1321
+ };
1336
1322
 
1337
- function max(_getLeafValues, getChildValues) {
1323
+ const max = (columnId, _leafRows, childRows) => {
1338
1324
  let max;
1325
+ childRows.forEach(row => {
1326
+ const value = row.getValue(columnId);
1339
1327
 
1340
- for (const value of getChildValues()) {
1341
1328
  if (value != null && (max < value || max === undefined && value >= value)) {
1342
1329
  max = value;
1343
1330
  }
1344
- }
1345
-
1331
+ });
1346
1332
  return max;
1347
- }
1333
+ };
1348
1334
 
1349
- function extent(_getLeafValues, getChildValues) {
1335
+ const extent = (columnId, _leafRows, childRows) => {
1350
1336
  let min;
1351
1337
  let max;
1338
+ childRows.forEach(row => {
1339
+ const value = row.getValue(columnId);
1352
1340
 
1353
- for (const value of getChildValues()) {
1354
1341
  if (value != null) {
1355
1342
  if (min === undefined) {
1356
1343
  if (value >= value) min = max = value;
@@ -1359,54 +1346,65 @@ function extent(_getLeafValues, getChildValues) {
1359
1346
  if (max < value) max = value;
1360
1347
  }
1361
1348
  }
1362
- }
1363
-
1349
+ });
1364
1350
  return [min, max];
1365
- }
1351
+ };
1366
1352
 
1367
- function mean(getLeafValues) {
1353
+ const mean = (columnId, leafRows) => {
1368
1354
  let count = 0;
1369
1355
  let sum = 0;
1356
+ leafRows.forEach(row => {
1357
+ let value = row.getValue(columnId);
1370
1358
 
1371
- for (let value of getLeafValues()) {
1372
1359
  if (value != null && (value = +value) >= value) {
1373
1360
  ++count, sum += value;
1374
1361
  }
1375
- }
1376
-
1362
+ });
1377
1363
  if (count) return sum / count;
1378
1364
  return;
1379
- }
1380
-
1381
- function median(getLeafValues) {
1382
- const leafValues = getLeafValues();
1365
+ };
1383
1366
 
1384
- if (!leafValues.length) {
1367
+ const median = (columnId, leafRows) => {
1368
+ if (!leafRows.length) {
1385
1369
  return;
1386
1370
  }
1387
1371
 
1388
1372
  let min = 0;
1389
1373
  let max = 0;
1390
- leafValues.forEach(value => {
1374
+ leafRows.forEach(row => {
1375
+ let value = row.getValue(columnId);
1376
+
1391
1377
  if (typeof value === 'number') {
1392
1378
  min = Math.min(min, value);
1393
1379
  max = Math.max(max, value);
1394
1380
  }
1395
1381
  });
1396
1382
  return (min + max) / 2;
1397
- }
1383
+ };
1398
1384
 
1399
- function unique(getLeafValues) {
1400
- return Array.from(new Set(getLeafValues()).values());
1401
- }
1385
+ const unique = (columnId, leafRows) => {
1386
+ return Array.from(new Set(leafRows.map(d => d.getValue(columnId))).values());
1387
+ };
1402
1388
 
1403
- function uniqueCount(getLeafValues) {
1404
- return new Set(getLeafValues()).size;
1405
- }
1389
+ const uniqueCount = (columnId, leafRows) => {
1390
+ return new Set(leafRows.map(d => d.getValue(columnId))).size;
1391
+ };
1406
1392
 
1407
- function count(getLeafValues) {
1408
- return getLeafValues().length;
1409
- }
1393
+ const count = (_columnId, leafRows) => {
1394
+ return leafRows.length;
1395
+ };
1396
+
1397
+ const aggregationFns = {
1398
+ sum,
1399
+ min,
1400
+ max,
1401
+ extent,
1402
+ mean,
1403
+ median,
1404
+ unique,
1405
+ uniqueCount,
1406
+ count
1407
+ };
1410
1408
 
1411
1409
  //
1412
1410
  const Grouping = {
@@ -1461,7 +1459,7 @@ const Grouping = {
1461
1459
  column.toggleGrouping();
1462
1460
  };
1463
1461
  },
1464
- getColumnAutoAggregationFn: () => {
1462
+ getAutoAggregationFn: () => {
1465
1463
  const firstRow = instance.getCoreRowModel().flatRows[0];
1466
1464
  const value = firstRow == null ? void 0 : firstRow.getValue(column.id);
1467
1465
 
@@ -1475,7 +1473,7 @@ const Grouping = {
1475
1473
 
1476
1474
  return aggregationFns.count;
1477
1475
  },
1478
- getColumnAggregationFn: () => {
1476
+ getAggregationFn: () => {
1479
1477
  var _ref4;
1480
1478
 
1481
1479
  const userAggregationFns = instance.options.aggregationFns;
@@ -1484,7 +1482,7 @@ const Grouping = {
1484
1482
  throw new Error();
1485
1483
  }
1486
1484
 
1487
- return isFunction(column.aggregationFn) ? column.aggregationFn : column.aggregationFn === 'auto' ? column.getColumnAutoAggregationFn() : (_ref4 = userAggregationFns == null ? void 0 : userAggregationFns[column.aggregationFn]) != null ? _ref4 : aggregationFns[column.aggregationFn];
1485
+ return isFunction(column.aggregationFn) ? column.aggregationFn : column.aggregationFn === 'auto' ? column.getAutoAggregationFn() : (_ref4 = userAggregationFns == null ? void 0 : userAggregationFns[column.aggregationFn]) != null ? _ref4 : aggregationFns[column.aggregationFn];
1488
1486
  }
1489
1487
  };
1490
1488
  },
@@ -1510,10 +1508,10 @@ const Grouping = {
1510
1508
  }
1511
1509
  };
1512
1510
  },
1513
- createRow: (row, instance) => {
1511
+ createRow: row => {
1514
1512
  return {
1515
1513
  getIsGrouped: () => !!row.groupingColumnId,
1516
- groupingValuesCache: {}
1514
+ _groupingValuesCache: {}
1517
1515
  };
1518
1516
  },
1519
1517
  createCell: (cell, column, row, instance) => {
@@ -2332,21 +2330,54 @@ function isRowSelected(row, selection, instance) {
2332
2330
  }
2333
2331
 
2334
2332
  const reSplitAlphaNumeric = /([0-9]+)/gm;
2335
- const sortingFns = {
2336
- alphanumeric,
2337
- alphanumericCaseSensitive,
2338
- text,
2339
- textCaseSensitive,
2340
- datetime,
2341
- basic
2342
- };
2343
2333
 
2344
- function alphanumeric(rowA, rowB, columnId) {
2334
+ const alphanumeric = (rowA, rowB, columnId) => {
2345
2335
  return compareAlphanumeric(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());
2346
- }
2336
+ };
2347
2337
 
2348
- function alphanumericCaseSensitive(rowA, rowB, columnId) {
2338
+ const alphanumericCaseSensitive = (rowA, rowB, columnId) => {
2349
2339
  return compareAlphanumeric(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));
2340
+ }; // The text filter is more basic (less numeric support)
2341
+ // but is much faster
2342
+
2343
+
2344
+ const text = (rowA, rowB, columnId) => {
2345
+ return compareBasic(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());
2346
+ }; // The text filter is more basic (less numeric support)
2347
+ // but is much faster
2348
+
2349
+
2350
+ const textCaseSensitive = (rowA, rowB, columnId) => {
2351
+ return compareBasic(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));
2352
+ };
2353
+
2354
+ const datetime = (rowA, rowB, columnId) => {
2355
+ return compareBasic(rowA.getValue(columnId).getTime(), rowB.getValue(columnId).getTime());
2356
+ };
2357
+
2358
+ const basic = (rowA, rowB, columnId) => {
2359
+ return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId));
2360
+ }; // Utils
2361
+
2362
+
2363
+ function compareBasic(a, b) {
2364
+ return a === b ? 0 : a > b ? 1 : -1;
2365
+ }
2366
+
2367
+ function toString(a) {
2368
+ if (typeof a === 'number') {
2369
+ if (isNaN(a) || a === Infinity || a === -Infinity) {
2370
+ return '';
2371
+ }
2372
+
2373
+ return String(a);
2374
+ }
2375
+
2376
+ if (typeof a === 'string') {
2377
+ return a;
2378
+ }
2379
+
2380
+ return '';
2350
2381
  } // Mixed sorting is slow, but very inclusive of many edge cases.
2351
2382
  // It handles numbers, mixed alphanumeric combinations, and even
2352
2383
  // null, undefined, and Infinity
@@ -2393,48 +2424,17 @@ function compareAlphanumeric(aStr, bStr) {
2393
2424
  }
2394
2425
 
2395
2426
  return a.length - b.length;
2396
- } // The text filter is more basic (less numeric support)
2397
- // but is much faster
2398
-
2399
-
2400
- function text(rowA, rowB, columnId) {
2401
- return compareBasic(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());
2402
- } // The text filter is more basic (less numeric support)
2403
- // but is much faster
2404
-
2405
-
2406
- function textCaseSensitive(rowA, rowB, columnId) {
2407
- return compareBasic(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));
2408
- }
2409
-
2410
- function datetime(rowA, rowB, columnId) {
2411
- return compareBasic(rowA.getValue(columnId).getTime(), rowB.getValue(columnId).getTime());
2412
- }
2413
-
2414
- function basic(rowA, rowB, columnId) {
2415
- return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId));
2416
- } // Utils
2427
+ } // Exports
2417
2428
 
2418
2429
 
2419
- function compareBasic(a, b) {
2420
- return a === b ? 0 : a > b ? 1 : -1;
2421
- }
2422
-
2423
- function toString(a) {
2424
- if (typeof a === 'number') {
2425
- if (isNaN(a) || a === Infinity || a === -Infinity) {
2426
- return '';
2427
- }
2428
-
2429
- return String(a);
2430
- }
2431
-
2432
- if (typeof a === 'string') {
2433
- return a;
2434
- }
2435
-
2436
- return '';
2437
- }
2430
+ const sortingFns = {
2431
+ alphanumeric,
2432
+ alphanumericCaseSensitive,
2433
+ text,
2434
+ textCaseSensitive,
2435
+ datetime,
2436
+ basic
2437
+ };
2438
2438
 
2439
2439
  //
2440
2440
  const Sorting = {
@@ -2658,11 +2658,6 @@ const Visibility = {
2658
2658
  onColumnVisibilityChange: makeStateUpdater('columnVisibility', instance)
2659
2659
  };
2660
2660
  },
2661
- getDefaultColumnDef: () => {
2662
- return {
2663
- defaultIsVisible: true
2664
- };
2665
- },
2666
2661
  createColumn: (column, instance) => {
2667
2662
  return {
2668
2663
  toggleVisibility: value => {
@@ -3648,25 +3643,17 @@ function getGroupedRowModel() {
3648
3643
  return row._valuesCache[columnId];
3649
3644
  }
3650
3645
 
3651
- if (row.groupingValuesCache.hasOwnProperty(columnId)) {
3652
- return row.groupingValuesCache[columnId];
3646
+ if (row._groupingValuesCache.hasOwnProperty(columnId)) {
3647
+ return row._groupingValuesCache[columnId];
3653
3648
  } // Aggregate the values
3654
3649
 
3655
3650
 
3656
3651
  const column = instance.getColumn(columnId);
3657
- const aggregateFn = column.getColumnAggregationFn();
3652
+ const aggregateFn = column.getAggregationFn();
3658
3653
 
3659
3654
  if (aggregateFn) {
3660
- row.groupingValuesCache[columnId] = aggregateFn(() => leafRows.map(row => {
3661
- let columnValue = row.getValue(columnId);
3662
-
3663
- if (!depth && column.columnDef.aggregateValue) {
3664
- columnValue = column.columnDef.aggregateValue(columnValue);
3665
- }
3666
-
3667
- return columnValue;
3668
- }), () => groupedRows.map(row => row.getValue(columnId)));
3669
- return row.groupingValuesCache[columnId];
3655
+ row._groupingValuesCache[columnId] = aggregateFn(columnId, leafRows, groupedRows);
3656
+ return row._groupingValuesCache[columnId];
3670
3657
  } else if (column.aggregationFn) {
3671
3658
  console.info({
3672
3659
  column
@@ -3746,7 +3733,7 @@ function getExpandedRowModel() {
3746
3733
  return rowModel;
3747
3734
  }
3748
3735
 
3749
- return expandRows(rowModel, instance);
3736
+ return expandRows(rowModel);
3750
3737
  }, {
3751
3738
  key: process.env.NODE_ENV === 'development' && 'getExpandedRowModel',
3752
3739
  debug: () => {
@@ -3764,7 +3751,7 @@ function expandRows(rowModel, instance) {
3764
3751
 
3765
3752
  expandedRows.push(row);
3766
3753
 
3767
- if (instance.options.expandSubRows && (_row$subRows = row.subRows) != null && _row$subRows.length && row.getIsExpanded()) {
3754
+ if ((_row$subRows = row.subRows) != null && _row$subRows.length && row.getIsExpanded()) {
3768
3755
  row.subRows.forEach(handleRow);
3769
3756
  }
3770
3757
  };
@@ -3801,7 +3788,7 @@ function getPaginationRowModel(opts) {
3801
3788
  rows,
3802
3789
  flatRows,
3803
3790
  rowsById
3804
- }, instance);
3791
+ });
3805
3792
  }
3806
3793
 
3807
3794
  return {
@@ -3819,5 +3806,5 @@ function getPaginationRowModel(opts) {
3819
3806
  });
3820
3807
  }
3821
3808
 
3822
- export { ColumnSizing, Expanding, Filters, Grouping, Headers, Ordering, Pagination, Pinning, RowSelection, Sorting, Visibility, aggregationFns, buildHeaderGroups, createColumn, createRow, createTableFactory, createTableInstance, defaultColumnSizing, expandRows, filterFns, flattenBy, functionalUpdate, getCoreRowModel, getExpandedRowModel, getFacetedMinMaxValues, getFacetedRowModel, getFacetedUniqueValues, getFilteredRowModel, getGroupedRowModel, getPaginationRowModel, getSortedRowModel, isFunction, isRowSelected, makeStateUpdater, mean, memo, noop, orderColumns, passiveEventSupported, reSplitAlphaNumeric, selectRowsFn, shouldAutoRemoveFilter, sortingFns };
3809
+ export { ColumnSizing, Expanding, Filters, Grouping, Headers, Ordering, Pagination, Pinning, RowSelection, Sorting, Visibility, aggregationFns, buildHeaderGroups, createColumn, createRow, createTableFactory, createTableInstance, defaultColumnSizing, expandRows, filterFns, flattenBy, functionalUpdate, getCoreRowModel, getExpandedRowModel, getFacetedMinMaxValues, getFacetedRowModel, getFacetedUniqueValues, getFilteredRowModel, getGroupedRowModel, getPaginationRowModel, getSortedRowModel, isFunction, isRowSelected, makeStateUpdater, memo, noop, orderColumns, passiveEventSupported, reSplitAlphaNumeric, selectRowsFn, shouldAutoRemoveFilter, sortingFns };
3823
3810
  //# sourceMappingURL=index.js.map