@tanstack/table-core 8.9.0 → 8.9.2

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.
@@ -12,6 +12,8 @@
12
12
 
13
13
  Object.defineProperty(exports, '__esModule', { value: true });
14
14
 
15
+ var utils = require('./utils.js');
16
+
15
17
  const sum = (columnId, _leafRows, childRows) => {
16
18
  // It's faster to just add the aggregations together instead of
17
19
  // process leaf nodes individually
@@ -72,16 +74,16 @@ const median = (columnId, leafRows) => {
72
74
  if (!leafRows.length) {
73
75
  return;
74
76
  }
75
- let min = 0;
76
- let max = 0;
77
- leafRows.forEach(row => {
78
- let value = row.getValue(columnId);
79
- if (typeof value === 'number') {
80
- min = Math.min(min, value);
81
- max = Math.max(max, value);
82
- }
83
- });
84
- return (min + max) / 2;
77
+ const values = leafRows.map(row => row.getValue(columnId));
78
+ if (!utils.isNumberArray(values)) {
79
+ return;
80
+ }
81
+ if (values.length === 1) {
82
+ return values[0];
83
+ }
84
+ const mid = Math.floor(values.length / 2);
85
+ const nums = values.sort((a, b) => a - b);
86
+ return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2;
85
87
  };
86
88
  const unique = (columnId, leafRows) => {
87
89
  return Array.from(new Set(leafRows.map(d => d.getValue(columnId))).values());
@@ -1 +1 @@
1
- {"version":3,"file":"aggregationFns.js","sources":["../../src/aggregationFns.ts"],"sourcesContent":["import { AggregationFn } from './features/Grouping'\n\nconst sum: AggregationFn<any> = (columnId, _leafRows, childRows) => {\n // It's faster to just add the aggregations together instead of\n // process leaf nodes individually\n return childRows.reduce((sum, next) => {\n const nextValue = next.getValue(columnId)\n return sum + (typeof nextValue === 'number' ? nextValue : 0)\n }, 0)\n}\n\nconst min: AggregationFn<any> = (columnId, _leafRows, childRows) => {\n let min: number | undefined\n\n childRows.forEach(row => {\n const value = row.getValue<number>(columnId)\n\n if (\n value != null &&\n (min! > value || (min === undefined && value >= value))\n ) {\n min = value\n }\n })\n\n return min\n}\n\nconst max: AggregationFn<any> = (columnId, _leafRows, childRows) => {\n let max: number | undefined\n\n childRows.forEach(row => {\n const value = row.getValue<number>(columnId)\n if (\n value != null &&\n (max! < value || (max === undefined && value >= value))\n ) {\n max = value\n }\n })\n\n return max\n}\n\nconst extent: AggregationFn<any> = (columnId, _leafRows, childRows) => {\n let min: number | undefined\n let max: number | undefined\n\n childRows.forEach(row => {\n const value = row.getValue<number>(columnId)\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value\n } else {\n if (min > value) min = value\n if (max! < value) max = value\n }\n }\n })\n\n return [min, max]\n}\n\nconst mean: AggregationFn<any> = (columnId, leafRows) => {\n let count = 0\n let sum = 0\n\n leafRows.forEach(row => {\n let value = row.getValue<number>(columnId)\n if (value != null && (value = +value) >= value) {\n ++count, (sum += value)\n }\n })\n\n if (count) return sum / count\n\n return\n}\n\nconst median: AggregationFn<any> = (columnId, leafRows) => {\n if (!leafRows.length) {\n return\n }\n\n let min = 0\n let max = 0\n\n leafRows.forEach(row => {\n let value = row.getValue(columnId)\n if (typeof value === 'number') {\n min = Math.min(min, value)\n max = Math.max(max, value)\n }\n })\n\n return (min + max) / 2\n}\n\nconst unique: AggregationFn<any> = (columnId, leafRows) => {\n return Array.from(new Set(leafRows.map(d => d.getValue(columnId))).values())\n}\n\nconst uniqueCount: AggregationFn<any> = (columnId, leafRows) => {\n return new Set(leafRows.map(d => d.getValue(columnId))).size\n}\n\nconst count: AggregationFn<any> = (_columnId, leafRows) => {\n return leafRows.length\n}\n\nexport const aggregationFns = {\n sum,\n min,\n max,\n extent,\n mean,\n median,\n unique,\n uniqueCount,\n count,\n}\n\nexport type BuiltInAggregationFn = keyof typeof aggregationFns\n"],"names":["sum","columnId","_leafRows","childRows","reduce","next","nextValue","getValue","min","forEach","row","value","undefined","max","extent","mean","leafRows","count","median","length","Math","unique","Array","from","Set","map","d","values","uniqueCount","size","_columnId","aggregationFns"],"mappings":"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"}
1
+ {"version":3,"file":"aggregationFns.js","sources":["../../src/aggregationFns.ts"],"sourcesContent":["import { AggregationFn } from './features/Grouping'\nimport { isNumberArray } from './utils'\n\nconst sum: AggregationFn<any> = (columnId, _leafRows, childRows) => {\n // It's faster to just add the aggregations together instead of\n // process leaf nodes individually\n return childRows.reduce((sum, next) => {\n const nextValue = next.getValue(columnId)\n return sum + (typeof nextValue === 'number' ? nextValue : 0)\n }, 0)\n}\n\nconst min: AggregationFn<any> = (columnId, _leafRows, childRows) => {\n let min: number | undefined\n\n childRows.forEach(row => {\n const value = row.getValue<number>(columnId)\n\n if (\n value != null &&\n (min! > value || (min === undefined && value >= value))\n ) {\n min = value\n }\n })\n\n return min\n}\n\nconst max: AggregationFn<any> = (columnId, _leafRows, childRows) => {\n let max: number | undefined\n\n childRows.forEach(row => {\n const value = row.getValue<number>(columnId)\n if (\n value != null &&\n (max! < value || (max === undefined && value >= value))\n ) {\n max = value\n }\n })\n\n return max\n}\n\nconst extent: AggregationFn<any> = (columnId, _leafRows, childRows) => {\n let min: number | undefined\n let max: number | undefined\n\n childRows.forEach(row => {\n const value = row.getValue<number>(columnId)\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value\n } else {\n if (min > value) min = value\n if (max! < value) max = value\n }\n }\n })\n\n return [min, max]\n}\n\nconst mean: AggregationFn<any> = (columnId, leafRows) => {\n let count = 0\n let sum = 0\n\n leafRows.forEach(row => {\n let value = row.getValue<number>(columnId)\n if (value != null && (value = +value) >= value) {\n ++count, (sum += value)\n }\n })\n\n if (count) return sum / count\n\n return\n}\n\nconst median: AggregationFn<any> = (columnId, leafRows) => {\n if (!leafRows.length) {\n return\n }\n\n const values = leafRows.map(row => row.getValue(columnId))\n if (!isNumberArray(values)) {\n return\n }\n if (values.length === 1) {\n return values[0]\n }\n\n const mid = Math.floor(values.length / 2)\n const nums = values.sort((a, b) => a - b)\n return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1]! + nums[mid]!) / 2\n}\n\nconst unique: AggregationFn<any> = (columnId, leafRows) => {\n return Array.from(new Set(leafRows.map(d => d.getValue(columnId))).values())\n}\n\nconst uniqueCount: AggregationFn<any> = (columnId, leafRows) => {\n return new Set(leafRows.map(d => d.getValue(columnId))).size\n}\n\nconst count: AggregationFn<any> = (_columnId, leafRows) => {\n return leafRows.length\n}\n\nexport const aggregationFns = {\n sum,\n min,\n max,\n extent,\n mean,\n median,\n unique,\n uniqueCount,\n count,\n}\n\nexport type BuiltInAggregationFn = keyof typeof aggregationFns\n"],"names":["sum","columnId","_leafRows","childRows","reduce","next","nextValue","getValue","min","forEach","row","value","undefined","max","extent","mean","leafRows","count","median","length","values","map","isNumberArray","mid","Math","floor","nums","sort","a","b","unique","Array","from","Set","d","uniqueCount","size","_columnId","aggregationFns"],"mappings":"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"}
@@ -33,6 +33,9 @@ function makeStateUpdater(key, instance) {
33
33
  function isFunction(d) {
34
34
  return d instanceof Function;
35
35
  }
36
+ function isNumberArray(d) {
37
+ return Array.isArray(d) && d.every(val => typeof val === 'number');
38
+ }
36
39
  function flattenBy(arr, getChildren) {
37
40
  const flat = [];
38
41
  const recurse = subArr => {
@@ -1280,16 +1283,16 @@ const median = (columnId, leafRows) => {
1280
1283
  if (!leafRows.length) {
1281
1284
  return;
1282
1285
  }
1283
- let min = 0;
1284
- let max = 0;
1285
- leafRows.forEach(row => {
1286
- let value = row.getValue(columnId);
1287
- if (typeof value === 'number') {
1288
- min = Math.min(min, value);
1289
- max = Math.max(max, value);
1290
- }
1291
- });
1292
- return (min + max) / 2;
1286
+ const values = leafRows.map(row => row.getValue(columnId));
1287
+ if (!isNumberArray(values)) {
1288
+ return;
1289
+ }
1290
+ if (values.length === 1) {
1291
+ return values[0];
1292
+ }
1293
+ const mid = Math.floor(values.length / 2);
1294
+ const nums = values.sort((a, b) => a - b);
1295
+ return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2;
1293
1296
  };
1294
1297
  const unique = (columnId, leafRows) => {
1295
1298
  return Array.from(new Set(leafRows.map(d => d.getValue(columnId))).values());
@@ -3356,7 +3359,11 @@ function getSortedRowModel() {
3356
3359
  const aUndefined = typeof aValue === 'undefined';
3357
3360
  const bUndefined = typeof bValue === 'undefined';
3358
3361
  if (aUndefined || bUndefined) {
3359
- return aUndefined && bUndefined ? 0 : aUndefined ? columnInfo.sortUndefined : -columnInfo.sortUndefined;
3362
+ let undefinedSort = aUndefined && bUndefined ? 0 : aUndefined ? columnInfo.sortUndefined : -columnInfo.sortUndefined;
3363
+ if (isDesc && undefinedSort !== 0) {
3364
+ undefinedSort *= -1;
3365
+ }
3366
+ return undefinedSort;
3360
3367
  }
3361
3368
  }
3362
3369
 
@@ -3628,5 +3635,5 @@ function getPaginationRowModel(opts) {
3628
3635
  });
3629
3636
  }
3630
3637
 
3631
- export { ColumnSizing, Expanding, Filters, Grouping, Headers, Ordering, Pagination, Pinning, RowSelection, Sorting, Visibility, aggregationFns, buildHeaderGroups, createCell, createColumn, createColumnHelper, createRow, createTable, defaultColumnSizing, expandRows, filterFns, flattenBy, functionalUpdate, getCoreRowModel, getExpandedRowModel, getFacetedMinMaxValues, getFacetedRowModel, getFacetedUniqueValues, getFilteredRowModel, getGroupedRowModel, getPaginationRowModel, getSortedRowModel, isFunction, isRowSelected, isSubRowSelected, makeStateUpdater, memo, noop, orderColumns, passiveEventSupported, reSplitAlphaNumeric, selectRowsFn, shouldAutoRemoveFilter, sortingFns };
3638
+ export { ColumnSizing, Expanding, Filters, Grouping, Headers, Ordering, Pagination, Pinning, RowSelection, Sorting, Visibility, aggregationFns, buildHeaderGroups, createCell, createColumn, createColumnHelper, createRow, createTable, defaultColumnSizing, expandRows, filterFns, flattenBy, functionalUpdate, getCoreRowModel, getExpandedRowModel, getFacetedMinMaxValues, getFacetedRowModel, getFacetedUniqueValues, getFilteredRowModel, getGroupedRowModel, getPaginationRowModel, getSortedRowModel, isFunction, isNumberArray, isRowSelected, isSubRowSelected, makeStateUpdater, memo, noop, orderColumns, passiveEventSupported, reSplitAlphaNumeric, selectRowsFn, shouldAutoRemoveFilter, sortingFns };
3632
3639
  //# sourceMappingURL=index.esm.js.map