@tanstack/table-core 8.13.2 → 8.15.1

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 (108) hide show
  1. package/build/lib/aggregationFns.d.ts +1 -1
  2. package/build/lib/aggregationFns.js.map +1 -1
  3. package/build/lib/core/column.js +1 -1
  4. package/build/lib/core/column.js.map +1 -1
  5. package/build/lib/core/headers.d.ts +1 -2
  6. package/build/lib/core/headers.js.map +1 -1
  7. package/build/lib/core/row.d.ts +1 -1
  8. package/build/lib/core/row.js.map +1 -1
  9. package/build/lib/core/table.d.ts +7 -11
  10. package/build/lib/core/table.js +24 -13
  11. package/build/lib/core/table.js.map +1 -1
  12. package/build/lib/features/ColumnFaceting.d.ts +34 -0
  13. package/build/lib/features/ColumnFaceting.js +42 -0
  14. package/build/lib/features/ColumnFaceting.js.map +1 -0
  15. package/build/lib/features/ColumnFiltering.d.ts +194 -0
  16. package/build/lib/features/{Filters.js → ColumnFiltering.js} +8 -83
  17. package/build/lib/features/ColumnFiltering.js.map +1 -0
  18. package/build/lib/features/{Grouping.d.ts → ColumnGrouping.d.ts} +2 -3
  19. package/build/lib/features/{Grouping.js → ColumnGrouping.js} +3 -3
  20. package/build/lib/features/ColumnGrouping.js.map +1 -0
  21. package/build/lib/features/{Ordering.d.ts → ColumnOrdering.d.ts} +2 -3
  22. package/build/lib/features/{Ordering.js → ColumnOrdering.js} +9 -9
  23. package/build/lib/features/ColumnOrdering.js.map +1 -0
  24. package/build/lib/features/ColumnPinning.d.ts +126 -0
  25. package/build/lib/features/{Pinning.js → ColumnPinning.js} +4 -115
  26. package/build/lib/features/ColumnPinning.js.map +1 -0
  27. package/build/lib/features/ColumnSizing.d.ts +2 -3
  28. package/build/lib/features/ColumnSizing.js +3 -3
  29. package/build/lib/features/ColumnSizing.js.map +1 -1
  30. package/build/lib/features/{Visibility.d.ts → ColumnVisibility.d.ts} +2 -3
  31. package/build/lib/features/{Visibility.js → ColumnVisibility.js} +3 -3
  32. package/build/lib/features/ColumnVisibility.js.map +1 -0
  33. package/build/lib/features/GlobalFaceting.d.ts +26 -0
  34. package/build/lib/features/GlobalFaceting.js +42 -0
  35. package/build/lib/features/GlobalFaceting.js.map +1 -0
  36. package/build/lib/features/GlobalFiltering.d.ts +79 -0
  37. package/build/lib/features/GlobalFiltering.js +63 -0
  38. package/build/lib/features/GlobalFiltering.js.map +1 -0
  39. package/build/lib/features/{Expanding.d.ts → RowExpanding.d.ts} +2 -3
  40. package/build/lib/features/{Expanding.js → RowExpanding.js} +3 -3
  41. package/build/lib/features/RowExpanding.js.map +1 -0
  42. package/build/lib/features/{Pagination.d.ts → RowPagination.d.ts} +2 -3
  43. package/build/lib/features/{Pagination.js → RowPagination.js} +3 -3
  44. package/build/lib/features/RowPagination.js.map +1 -0
  45. package/build/lib/features/RowPinning.d.ts +98 -0
  46. package/build/lib/features/RowPinning.js +145 -0
  47. package/build/lib/features/RowPinning.js.map +1 -0
  48. package/build/lib/features/RowSelection.d.ts +1 -2
  49. package/build/lib/features/RowSelection.js.map +1 -1
  50. package/build/lib/features/{Sorting.d.ts → RowSorting.d.ts} +5 -3
  51. package/build/lib/features/{Sorting.js → RowSorting.js} +3 -3
  52. package/build/lib/features/RowSorting.js.map +1 -0
  53. package/build/lib/filterFns.d.ts +1 -1
  54. package/build/lib/filterFns.js.map +1 -1
  55. package/build/lib/index.d.ts +22 -18
  56. package/build/lib/index.esm.js +1509 -1457
  57. package/build/lib/index.esm.js.map +1 -1
  58. package/build/lib/index.js +49 -41
  59. package/build/lib/index.js.map +1 -1
  60. package/build/lib/index.mjs +1509 -1457
  61. package/build/lib/index.mjs.map +1 -1
  62. package/build/lib/sortingFns.d.ts +1 -1
  63. package/build/lib/sortingFns.js.map +1 -1
  64. package/build/lib/types.d.ts +32 -17
  65. package/build/lib/utils/getFilteredRowModel.js.map +1 -1
  66. package/build/lib/utils/getSortedRowModel.js.map +1 -1
  67. package/build/umd/index.development.js +1520 -1464
  68. package/build/umd/index.development.js.map +1 -1
  69. package/build/umd/index.production.js +1 -1
  70. package/build/umd/index.production.js.map +1 -1
  71. package/package.json +1 -1
  72. package/src/aggregationFns.ts +1 -1
  73. package/src/core/column.ts +2 -2
  74. package/src/core/headers.ts +9 -3
  75. package/src/core/row.ts +1 -1
  76. package/src/core/table.ts +42 -32
  77. package/src/features/ColumnFaceting.ts +84 -0
  78. package/src/features/ColumnFiltering.ts +429 -0
  79. package/src/features/{Grouping.ts → ColumnGrouping.ts} +6 -6
  80. package/src/features/{Ordering.ts → ColumnOrdering.ts} +11 -5
  81. package/src/features/ColumnPinning.ts +336 -0
  82. package/src/features/ColumnSizing.ts +10 -3
  83. package/src/features/{Visibility.ts → ColumnVisibility.ts} +2 -2
  84. package/src/features/GlobalFaceting.ts +66 -0
  85. package/src/features/GlobalFiltering.ts +162 -0
  86. package/src/features/{Expanding.ts → RowExpanding.ts} +9 -3
  87. package/src/features/{Pagination.ts → RowPagination.ts} +9 -3
  88. package/src/features/RowPinning.ts +273 -0
  89. package/src/features/RowSelection.ts +9 -2
  90. package/src/features/{Sorting.ts → RowSorting.ts} +5 -2
  91. package/src/filterFns.ts +1 -1
  92. package/src/index.ts +31 -18
  93. package/src/sortingFns.ts +1 -1
  94. package/src/types.ts +66 -25
  95. package/src/utils/getFilteredRowModel.ts +1 -1
  96. package/src/utils/getSortedRowModel.ts +1 -1
  97. package/build/lib/features/Expanding.js.map +0 -1
  98. package/build/lib/features/Filters.d.ts +0 -297
  99. package/build/lib/features/Filters.js.map +0 -1
  100. package/build/lib/features/Grouping.js.map +0 -1
  101. package/build/lib/features/Ordering.js.map +0 -1
  102. package/build/lib/features/Pagination.js.map +0 -1
  103. package/build/lib/features/Pinning.d.ts +0 -222
  104. package/build/lib/features/Pinning.js.map +0 -1
  105. package/build/lib/features/Sorting.js.map +0 -1
  106. package/build/lib/features/Visibility.js.map +0 -1
  107. package/src/features/Filters.ts +0 -664
  108. package/src/features/Pinning.ts +0 -573
@@ -8,6 +8,63 @@
8
8
  *
9
9
  * @license MIT
10
10
  */
11
+ // type Person = {
12
+ // firstName: string
13
+ // lastName: string
14
+ // age: number
15
+ // visits: number
16
+ // status: string
17
+ // progress: number
18
+ // createdAt: Date
19
+ // nested: {
20
+ // foo: [
21
+ // {
22
+ // bar: 'bar'
23
+ // }
24
+ // ]
25
+ // bar: { subBar: boolean }[]
26
+ // baz: {
27
+ // foo: 'foo'
28
+ // bar: {
29
+ // baz: 'baz'
30
+ // }
31
+ // }
32
+ // }
33
+ // }
34
+
35
+ // const test: DeepKeys<Person> = 'nested.foo.0.bar'
36
+ // const test2: DeepKeys<Person> = 'nested.bar'
37
+
38
+ // const helper = createColumnHelper<Person>()
39
+
40
+ // helper.accessor('nested.foo', {
41
+ // cell: info => info.getValue(),
42
+ // })
43
+
44
+ // helper.accessor('nested.foo.0.bar', {
45
+ // cell: info => info.getValue(),
46
+ // })
47
+
48
+ // helper.accessor('nested.bar', {
49
+ // cell: info => info.getValue(),
50
+ // })
51
+
52
+ function createColumnHelper() {
53
+ return {
54
+ accessor: (accessor, column) => {
55
+ return typeof accessor === 'function' ? {
56
+ ...column,
57
+ accessorFn: accessor
58
+ } : {
59
+ ...column,
60
+ accessorKey: accessor
61
+ };
62
+ },
63
+ display: column => column,
64
+ group: column => column
65
+ };
66
+ }
67
+
11
68
  // Is this type a tuple?
12
69
 
13
70
  // If this type is a tuple, what indices are allowed?
@@ -98,6 +155,32 @@ function getMemoOptions(tableOptions, debugLevel, key, onChange) {
98
155
  };
99
156
  }
100
157
 
158
+ function createCell(table, row, column, columnId) {
159
+ const getRenderValue = () => {
160
+ var _cell$getValue;
161
+ return (_cell$getValue = cell.getValue()) != null ? _cell$getValue : table.options.renderFallbackValue;
162
+ };
163
+ const cell = {
164
+ id: `${row.id}_${column.id}`,
165
+ row,
166
+ column,
167
+ getValue: () => row.getValue(columnId),
168
+ renderValue: getRenderValue,
169
+ getContext: memo(() => [table, column, row, cell], (table, column, row, cell) => ({
170
+ table,
171
+ column,
172
+ row,
173
+ cell: cell,
174
+ getValue: cell.getValue,
175
+ renderValue: cell.renderValue
176
+ }), getMemoOptions(table.options, 'debugCells', 'cell.getContext'))
177
+ };
178
+ table._features.forEach(feature => {
179
+ feature.createCell == null || feature.createCell(cell, column, row, table);
180
+ }, {});
181
+ return cell;
182
+ }
183
+
101
184
  function createColumn(table, columnDef, depth, parent) {
102
185
  var _ref, _resolvedColumnDef$id;
103
186
  const defaultColumn = table._getDefaultColumnDef();
@@ -158,7 +241,7 @@ function createColumn(table, columnDef, depth, parent) {
158
241
  feature.createColumn == null || feature.createColumn(column, table);
159
242
  }
160
243
 
161
- // Yes, we have to convert table to uknown, because we know more than the compiler here.
244
+ // Yes, we have to convert table to unknown, because we know more than the compiler here.
162
245
  return column;
163
246
  }
164
247
 
@@ -415,677 +498,1054 @@ function buildHeaderGroups(allColumns, columnsToGroup, table, headerFamily) {
415
498
  return headerGroups;
416
499
  }
417
500
 
418
- //
501
+ const createRow = (table, id, original, rowIndex, depth, subRows, parentId) => {
502
+ let row = {
503
+ id,
504
+ index: rowIndex,
505
+ original,
506
+ depth,
507
+ parentId,
508
+ _valuesCache: {},
509
+ _uniqueValuesCache: {},
510
+ getValue: columnId => {
511
+ if (row._valuesCache.hasOwnProperty(columnId)) {
512
+ return row._valuesCache[columnId];
513
+ }
514
+ const column = table.getColumn(columnId);
515
+ if (!(column != null && column.accessorFn)) {
516
+ return undefined;
517
+ }
518
+ row._valuesCache[columnId] = column.accessorFn(row.original, rowIndex);
519
+ return row._valuesCache[columnId];
520
+ },
521
+ getUniqueValues: columnId => {
522
+ if (row._uniqueValuesCache.hasOwnProperty(columnId)) {
523
+ return row._uniqueValuesCache[columnId];
524
+ }
525
+ const column = table.getColumn(columnId);
526
+ if (!(column != null && column.accessorFn)) {
527
+ return undefined;
528
+ }
529
+ if (!column.columnDef.getUniqueValues) {
530
+ row._uniqueValuesCache[columnId] = [row.getValue(columnId)];
531
+ return row._uniqueValuesCache[columnId];
532
+ }
533
+ row._uniqueValuesCache[columnId] = column.columnDef.getUniqueValues(row.original, rowIndex);
534
+ return row._uniqueValuesCache[columnId];
535
+ },
536
+ renderValue: columnId => {
537
+ var _row$getValue;
538
+ return (_row$getValue = row.getValue(columnId)) != null ? _row$getValue : table.options.renderFallbackValue;
539
+ },
540
+ subRows: subRows != null ? subRows : [],
541
+ getLeafRows: () => flattenBy(row.subRows, d => d.subRows),
542
+ getParentRow: () => row.parentId ? table.getRow(row.parentId, true) : undefined,
543
+ getParentRows: () => {
544
+ let parentRows = [];
545
+ let currentRow = row;
546
+ while (true) {
547
+ const parentRow = currentRow.getParentRow();
548
+ if (!parentRow) break;
549
+ parentRows.push(parentRow);
550
+ currentRow = parentRow;
551
+ }
552
+ return parentRows.reverse();
553
+ },
554
+ getAllCells: memo(() => [table.getAllLeafColumns()], leafColumns => {
555
+ return leafColumns.map(column => {
556
+ return createCell(table, row, column, column.id);
557
+ });
558
+ }, getMemoOptions(table.options, 'debugRows', 'getAllCells')),
559
+ _getAllCellsByColumnId: memo(() => [row.getAllCells()], allCells => {
560
+ return allCells.reduce((acc, cell) => {
561
+ acc[cell.column.id] = cell;
562
+ return acc;
563
+ }, {});
564
+ }, getMemoOptions(table.options, 'debugRows', 'getAllCellsByColumnId'))
565
+ };
566
+ for (let i = 0; i < table._features.length; i++) {
567
+ const feature = table._features[i];
568
+ feature == null || feature.createRow == null || feature.createRow(row, table);
569
+ }
570
+ return row;
571
+ };
419
572
 
420
573
  //
421
574
 
422
- const defaultColumnSizing = {
423
- size: 150,
424
- minSize: 20,
425
- maxSize: Number.MAX_SAFE_INTEGER
426
- };
427
- const getDefaultColumnSizingInfoState = () => ({
428
- startOffset: null,
429
- startSize: null,
430
- deltaOffset: null,
431
- deltaPercentage: null,
432
- isResizingColumn: false,
433
- columnSizingStart: []
434
- });
435
- const ColumnSizing = {
436
- getDefaultColumnDef: () => {
437
- return defaultColumnSizing;
438
- },
439
- getInitialState: state => {
440
- return {
441
- columnSizing: {},
442
- columnSizingInfo: getDefaultColumnSizingInfoState(),
443
- ...state
444
- };
445
- },
446
- getDefaultOptions: table => {
447
- return {
448
- columnResizeMode: 'onEnd',
449
- columnResizeDirection: 'ltr',
450
- onColumnSizingChange: makeStateUpdater('columnSizing', table),
451
- onColumnSizingInfoChange: makeStateUpdater('columnSizingInfo', table)
452
- };
453
- },
575
+ const ColumnFaceting = {
454
576
  createColumn: (column, table) => {
455
- column.getSize = () => {
456
- var _column$columnDef$min, _ref, _column$columnDef$max;
457
- const columnSize = table.getState().columnSizing[column.id];
458
- return Math.min(Math.max((_column$columnDef$min = column.columnDef.minSize) != null ? _column$columnDef$min : defaultColumnSizing.minSize, (_ref = columnSize != null ? columnSize : column.columnDef.size) != null ? _ref : defaultColumnSizing.size), (_column$columnDef$max = column.columnDef.maxSize) != null ? _column$columnDef$max : defaultColumnSizing.maxSize);
459
- };
460
- column.getStart = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(0, column.getIndex(position)).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getStart'));
461
- column.getAfter = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(column.getIndex(position) + 1).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getAfter'));
462
- column.resetSize = () => {
463
- table.setColumnSizing(_ref2 => {
464
- let {
465
- [column.id]: _,
466
- ...rest
467
- } = _ref2;
468
- return rest;
469
- });
470
- };
471
- column.getCanResize = () => {
472
- var _column$columnDef$ena, _table$options$enable;
473
- return ((_column$columnDef$ena = column.columnDef.enableResizing) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnResizing) != null ? _table$options$enable : true);
474
- };
475
- column.getIsResizing = () => {
476
- return table.getState().columnSizingInfo.isResizingColumn === column.id;
577
+ column._getFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, column.id);
578
+ column.getFacetedRowModel = () => {
579
+ if (!column._getFacetedRowModel) {
580
+ return table.getPreFilteredRowModel();
581
+ }
582
+ return column._getFacetedRowModel();
477
583
  };
478
- },
479
- createHeader: (header, table) => {
480
- header.getSize = () => {
481
- let sum = 0;
482
- const recurse = header => {
483
- if (header.subHeaders.length) {
484
- header.subHeaders.forEach(recurse);
485
- } else {
486
- var _header$column$getSiz;
487
- sum += (_header$column$getSiz = header.column.getSize()) != null ? _header$column$getSiz : 0;
488
- }
489
- };
490
- recurse(header);
491
- return sum;
584
+ column._getFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, column.id);
585
+ column.getFacetedUniqueValues = () => {
586
+ if (!column._getFacetedUniqueValues) {
587
+ return new Map();
588
+ }
589
+ return column._getFacetedUniqueValues();
492
590
  };
493
- header.getStart = () => {
494
- if (header.index > 0) {
495
- const prevSiblingHeader = header.headerGroup.headers[header.index - 1];
496
- return prevSiblingHeader.getStart() + prevSiblingHeader.getSize();
591
+ column._getFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, column.id);
592
+ column.getFacetedMinMaxValues = () => {
593
+ if (!column._getFacetedMinMaxValues) {
594
+ return undefined;
497
595
  }
498
- return 0;
499
- };
500
- header.getResizeHandler = _contextDocument => {
501
- const column = table.getColumn(header.column.id);
502
- const canResize = column == null ? void 0 : column.getCanResize();
503
- return e => {
504
- if (!column || !canResize) {
505
- return;
506
- }
507
- e.persist == null || e.persist();
508
- if (isTouchStartEvent(e)) {
509
- // lets not respond to multiple touches (e.g. 2 or 3 fingers)
510
- if (e.touches && e.touches.length > 1) {
511
- return;
512
- }
513
- }
514
- const startSize = header.getSize();
515
- const columnSizingStart = header ? header.getLeafHeaders().map(d => [d.column.id, d.column.getSize()]) : [[column.id, column.getSize()]];
516
- const clientX = isTouchStartEvent(e) ? Math.round(e.touches[0].clientX) : e.clientX;
517
- const newColumnSizing = {};
518
- const updateOffset = (eventType, clientXPos) => {
519
- if (typeof clientXPos !== 'number') {
520
- return;
521
- }
522
- table.setColumnSizingInfo(old => {
523
- var _old$startOffset, _old$startSize;
524
- const deltaDirection = table.options.columnResizeDirection === 'rtl' ? -1 : 1;
525
- const deltaOffset = (clientXPos - ((_old$startOffset = old == null ? void 0 : old.startOffset) != null ? _old$startOffset : 0)) * deltaDirection;
526
- const deltaPercentage = Math.max(deltaOffset / ((_old$startSize = old == null ? void 0 : old.startSize) != null ? _old$startSize : 0), -0.999999);
527
- old.columnSizingStart.forEach(_ref3 => {
528
- let [columnId, headerSize] = _ref3;
529
- newColumnSizing[columnId] = Math.round(Math.max(headerSize + headerSize * deltaPercentage, 0) * 100) / 100;
530
- });
531
- return {
532
- ...old,
533
- deltaOffset,
534
- deltaPercentage
535
- };
536
- });
537
- if (table.options.columnResizeMode === 'onChange' || eventType === 'end') {
538
- table.setColumnSizing(old => ({
539
- ...old,
540
- ...newColumnSizing
541
- }));
542
- }
543
- };
544
- const onMove = clientXPos => updateOffset('move', clientXPos);
545
- const onEnd = clientXPos => {
546
- updateOffset('end', clientXPos);
547
- table.setColumnSizingInfo(old => ({
548
- ...old,
549
- isResizingColumn: false,
550
- startOffset: null,
551
- startSize: null,
552
- deltaOffset: null,
553
- deltaPercentage: null,
554
- columnSizingStart: []
555
- }));
556
- };
557
- const contextDocument = _contextDocument || typeof document !== 'undefined' ? document : null;
558
- const mouseEvents = {
559
- moveHandler: e => onMove(e.clientX),
560
- upHandler: e => {
561
- contextDocument == null || contextDocument.removeEventListener('mousemove', mouseEvents.moveHandler);
562
- contextDocument == null || contextDocument.removeEventListener('mouseup', mouseEvents.upHandler);
563
- onEnd(e.clientX);
564
- }
565
- };
566
- const touchEvents = {
567
- moveHandler: e => {
568
- if (e.cancelable) {
569
- e.preventDefault();
570
- e.stopPropagation();
571
- }
572
- onMove(e.touches[0].clientX);
573
- return false;
574
- },
575
- upHandler: e => {
576
- var _e$touches$;
577
- contextDocument == null || contextDocument.removeEventListener('touchmove', touchEvents.moveHandler);
578
- contextDocument == null || contextDocument.removeEventListener('touchend', touchEvents.upHandler);
579
- if (e.cancelable) {
580
- e.preventDefault();
581
- e.stopPropagation();
582
- }
583
- onEnd((_e$touches$ = e.touches[0]) == null ? void 0 : _e$touches$.clientX);
584
- }
585
- };
586
- const passiveIfSupported = passiveEventSupported() ? {
587
- passive: false
588
- } : false;
589
- if (isTouchStartEvent(e)) {
590
- contextDocument == null || contextDocument.addEventListener('touchmove', touchEvents.moveHandler, passiveIfSupported);
591
- contextDocument == null || contextDocument.addEventListener('touchend', touchEvents.upHandler, passiveIfSupported);
592
- } else {
593
- contextDocument == null || contextDocument.addEventListener('mousemove', mouseEvents.moveHandler, passiveIfSupported);
594
- contextDocument == null || contextDocument.addEventListener('mouseup', mouseEvents.upHandler, passiveIfSupported);
595
- }
596
- table.setColumnSizingInfo(old => ({
597
- ...old,
598
- startOffset: clientX,
599
- startSize,
600
- deltaOffset: 0,
601
- deltaPercentage: 0,
602
- columnSizingStart,
603
- isResizingColumn: column.id
604
- }));
605
- };
606
- };
607
- },
608
- createTable: table => {
609
- table.setColumnSizing = updater => table.options.onColumnSizingChange == null ? void 0 : table.options.onColumnSizingChange(updater);
610
- table.setColumnSizingInfo = updater => table.options.onColumnSizingInfoChange == null ? void 0 : table.options.onColumnSizingInfoChange(updater);
611
- table.resetColumnSizing = defaultState => {
612
- var _table$initialState$c;
613
- table.setColumnSizing(defaultState ? {} : (_table$initialState$c = table.initialState.columnSizing) != null ? _table$initialState$c : {});
614
- };
615
- table.resetHeaderSizeInfo = defaultState => {
616
- var _table$initialState$c2;
617
- table.setColumnSizingInfo(defaultState ? getDefaultColumnSizingInfoState() : (_table$initialState$c2 = table.initialState.columnSizingInfo) != null ? _table$initialState$c2 : getDefaultColumnSizingInfoState());
618
- };
619
- table.getTotalSize = () => {
620
- var _table$getHeaderGroup, _table$getHeaderGroup2;
621
- return (_table$getHeaderGroup = (_table$getHeaderGroup2 = table.getHeaderGroups()[0]) == null ? void 0 : _table$getHeaderGroup2.headers.reduce((sum, header) => {
622
- return sum + header.getSize();
623
- }, 0)) != null ? _table$getHeaderGroup : 0;
624
- };
625
- table.getLeftTotalSize = () => {
626
- var _table$getLeftHeaderG, _table$getLeftHeaderG2;
627
- return (_table$getLeftHeaderG = (_table$getLeftHeaderG2 = table.getLeftHeaderGroups()[0]) == null ? void 0 : _table$getLeftHeaderG2.headers.reduce((sum, header) => {
628
- return sum + header.getSize();
629
- }, 0)) != null ? _table$getLeftHeaderG : 0;
630
- };
631
- table.getCenterTotalSize = () => {
632
- var _table$getCenterHeade, _table$getCenterHeade2;
633
- return (_table$getCenterHeade = (_table$getCenterHeade2 = table.getCenterHeaderGroups()[0]) == null ? void 0 : _table$getCenterHeade2.headers.reduce((sum, header) => {
634
- return sum + header.getSize();
635
- }, 0)) != null ? _table$getCenterHeade : 0;
636
- };
637
- table.getRightTotalSize = () => {
638
- var _table$getRightHeader, _table$getRightHeader2;
639
- return (_table$getRightHeader = (_table$getRightHeader2 = table.getRightHeaderGroups()[0]) == null ? void 0 : _table$getRightHeader2.headers.reduce((sum, header) => {
640
- return sum + header.getSize();
641
- }, 0)) != null ? _table$getRightHeader : 0;
596
+ return column._getFacetedMinMaxValues();
642
597
  };
643
598
  }
644
599
  };
645
- let passiveSupported = null;
646
- function passiveEventSupported() {
647
- if (typeof passiveSupported === 'boolean') return passiveSupported;
648
- let supported = false;
649
- try {
650
- const options = {
651
- get passive() {
652
- supported = true;
653
- return false;
654
- }
655
- };
656
- const noop = () => {};
657
- window.addEventListener('test', noop, options);
658
- window.removeEventListener('test', noop);
659
- } catch (err) {
660
- supported = false;
600
+
601
+ const includesString = (row, columnId, filterValue) => {
602
+ var _row$getValue;
603
+ const search = filterValue.toLowerCase();
604
+ return Boolean((_row$getValue = row.getValue(columnId)) == null || (_row$getValue = _row$getValue.toString()) == null || (_row$getValue = _row$getValue.toLowerCase()) == null ? void 0 : _row$getValue.includes(search));
605
+ };
606
+ includesString.autoRemove = val => testFalsey(val);
607
+ const includesStringSensitive = (row, columnId, filterValue) => {
608
+ var _row$getValue2;
609
+ return Boolean((_row$getValue2 = row.getValue(columnId)) == null || (_row$getValue2 = _row$getValue2.toString()) == null ? void 0 : _row$getValue2.includes(filterValue));
610
+ };
611
+ includesStringSensitive.autoRemove = val => testFalsey(val);
612
+ const equalsString = (row, columnId, filterValue) => {
613
+ var _row$getValue3;
614
+ return ((_row$getValue3 = row.getValue(columnId)) == null || (_row$getValue3 = _row$getValue3.toString()) == null ? void 0 : _row$getValue3.toLowerCase()) === (filterValue == null ? void 0 : filterValue.toLowerCase());
615
+ };
616
+ equalsString.autoRemove = val => testFalsey(val);
617
+ const arrIncludes = (row, columnId, filterValue) => {
618
+ var _row$getValue4;
619
+ return (_row$getValue4 = row.getValue(columnId)) == null ? void 0 : _row$getValue4.includes(filterValue);
620
+ };
621
+ arrIncludes.autoRemove = val => testFalsey(val) || !(val != null && val.length);
622
+ const arrIncludesAll = (row, columnId, filterValue) => {
623
+ return !filterValue.some(val => {
624
+ var _row$getValue5;
625
+ return !((_row$getValue5 = row.getValue(columnId)) != null && _row$getValue5.includes(val));
626
+ });
627
+ };
628
+ arrIncludesAll.autoRemove = val => testFalsey(val) || !(val != null && val.length);
629
+ const arrIncludesSome = (row, columnId, filterValue) => {
630
+ return filterValue.some(val => {
631
+ var _row$getValue6;
632
+ return (_row$getValue6 = row.getValue(columnId)) == null ? void 0 : _row$getValue6.includes(val);
633
+ });
634
+ };
635
+ arrIncludesSome.autoRemove = val => testFalsey(val) || !(val != null && val.length);
636
+ const equals = (row, columnId, filterValue) => {
637
+ return row.getValue(columnId) === filterValue;
638
+ };
639
+ equals.autoRemove = val => testFalsey(val);
640
+ const weakEquals = (row, columnId, filterValue) => {
641
+ return row.getValue(columnId) == filterValue;
642
+ };
643
+ weakEquals.autoRemove = val => testFalsey(val);
644
+ const inNumberRange = (row, columnId, filterValue) => {
645
+ let [min, max] = filterValue;
646
+ const rowValue = row.getValue(columnId);
647
+ return rowValue >= min && rowValue <= max;
648
+ };
649
+ inNumberRange.resolveFilterValue = val => {
650
+ let [unsafeMin, unsafeMax] = val;
651
+ let parsedMin = typeof unsafeMin !== 'number' ? parseFloat(unsafeMin) : unsafeMin;
652
+ let parsedMax = typeof unsafeMax !== 'number' ? parseFloat(unsafeMax) : unsafeMax;
653
+ let min = unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin;
654
+ let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax;
655
+ if (min > max) {
656
+ const temp = min;
657
+ min = max;
658
+ max = temp;
661
659
  }
662
- passiveSupported = supported;
663
- return passiveSupported;
664
- }
665
- function isTouchStartEvent(e) {
666
- return e.type === 'touchstart';
660
+ return [min, max];
661
+ };
662
+ inNumberRange.autoRemove = val => testFalsey(val) || testFalsey(val[0]) && testFalsey(val[1]);
663
+
664
+ // Export
665
+
666
+ const filterFns = {
667
+ includesString,
668
+ includesStringSensitive,
669
+ equalsString,
670
+ arrIncludes,
671
+ arrIncludesAll,
672
+ arrIncludesSome,
673
+ equals,
674
+ weakEquals,
675
+ inNumberRange
676
+ };
677
+ // Utils
678
+
679
+ function testFalsey(val) {
680
+ return val === undefined || val === null || val === '';
667
681
  }
668
682
 
669
683
  //
670
684
 
671
- const Expanding = {
685
+ const ColumnFiltering = {
686
+ getDefaultColumnDef: () => {
687
+ return {
688
+ filterFn: 'auto'
689
+ };
690
+ },
672
691
  getInitialState: state => {
673
692
  return {
674
- expanded: {},
693
+ columnFilters: [],
675
694
  ...state
676
695
  };
677
696
  },
678
697
  getDefaultOptions: table => {
679
698
  return {
680
- onExpandedChange: makeStateUpdater('expanded', table),
681
- paginateExpandedRows: true
699
+ onColumnFiltersChange: makeStateUpdater('columnFilters', table),
700
+ filterFromLeafRows: false,
701
+ maxLeafRowFilterDepth: 100
682
702
  };
683
703
  },
684
- createTable: table => {
685
- let registered = false;
686
- let queued = false;
687
- table._autoResetExpanded = () => {
688
- var _ref, _table$options$autoRe;
689
- if (!registered) {
690
- table._queue(() => {
691
- registered = true;
692
- });
693
- return;
694
- }
695
- if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetExpanded) != null ? _ref : !table.options.manualExpanding) {
696
- if (queued) return;
697
- queued = true;
698
- table._queue(() => {
699
- table.resetExpanded();
700
- queued = false;
701
- });
704
+ createColumn: (column, table) => {
705
+ column.getAutoFilterFn = () => {
706
+ const firstRow = table.getCoreRowModel().flatRows[0];
707
+ const value = firstRow == null ? void 0 : firstRow.getValue(column.id);
708
+ if (typeof value === 'string') {
709
+ return filterFns.includesString;
702
710
  }
703
- };
704
- table.setExpanded = updater => table.options.onExpandedChange == null ? void 0 : table.options.onExpandedChange(updater);
705
- table.toggleAllRowsExpanded = expanded => {
706
- if (expanded != null ? expanded : !table.getIsAllRowsExpanded()) {
707
- table.setExpanded(true);
708
- } else {
709
- table.setExpanded({});
711
+ if (typeof value === 'number') {
712
+ return filterFns.inNumberRange;
710
713
  }
711
- };
712
- table.resetExpanded = defaultState => {
713
- var _table$initialState$e, _table$initialState;
714
- table.setExpanded(defaultState ? {} : (_table$initialState$e = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.expanded) != null ? _table$initialState$e : {});
715
- };
716
- table.getCanSomeRowsExpand = () => {
717
- return table.getPrePaginationRowModel().flatRows.some(row => row.getCanExpand());
718
- };
719
- table.getToggleAllRowsExpandedHandler = () => {
720
- return e => {
721
- e.persist == null || e.persist();
722
- table.toggleAllRowsExpanded();
723
- };
724
- };
725
- table.getIsSomeRowsExpanded = () => {
726
- const expanded = table.getState().expanded;
727
- return expanded === true || Object.values(expanded).some(Boolean);
728
- };
729
- table.getIsAllRowsExpanded = () => {
730
- const expanded = table.getState().expanded;
731
-
732
- // If expanded is true, save some cycles and return true
733
- if (typeof expanded === 'boolean') {
734
- return expanded === true;
714
+ if (typeof value === 'boolean') {
715
+ return filterFns.equals;
735
716
  }
736
- if (!Object.keys(expanded).length) {
737
- return false;
717
+ if (value !== null && typeof value === 'object') {
718
+ return filterFns.equals;
738
719
  }
739
-
740
- // If any row is not expanded, return false
741
- if (table.getRowModel().flatRows.some(row => !row.getIsExpanded())) {
742
- return false;
720
+ if (Array.isArray(value)) {
721
+ return filterFns.arrIncludes;
743
722
  }
744
-
745
- // They must all be expanded :shrug:
746
- return true;
723
+ return filterFns.weakEquals;
747
724
  };
748
- table.getExpandedDepth = () => {
749
- let maxDepth = 0;
750
- const rowIds = table.getState().expanded === true ? Object.keys(table.getRowModel().rowsById) : Object.keys(table.getState().expanded);
751
- rowIds.forEach(id => {
752
- const splitId = id.split('.');
753
- maxDepth = Math.max(maxDepth, splitId.length);
754
- });
755
- return maxDepth;
725
+ column.getFilterFn = () => {
726
+ var _table$options$filter, _table$options$filter2;
727
+ return isFunction(column.columnDef.filterFn) ? column.columnDef.filterFn : column.columnDef.filterFn === 'auto' ? column.getAutoFilterFn() : // @ts-ignore
728
+ (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[column.columnDef.filterFn]) != null ? _table$options$filter : filterFns[column.columnDef.filterFn];
756
729
  };
757
- table.getPreExpandedRowModel = () => table.getSortedRowModel();
758
- table.getExpandedRowModel = () => {
759
- if (!table._getExpandedRowModel && table.options.getExpandedRowModel) {
760
- table._getExpandedRowModel = table.options.getExpandedRowModel(table);
761
- }
762
- if (table.options.manualExpanding || !table._getExpandedRowModel) {
763
- return table.getPreExpandedRowModel();
764
- }
765
- return table._getExpandedRowModel();
730
+ column.getCanFilter = () => {
731
+ var _column$columnDef$ena, _table$options$enable, _table$options$enable2;
732
+ return ((_column$columnDef$ena = column.columnDef.enableColumnFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnFilters) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && !!column.accessorFn;
766
733
  };
767
- },
768
- createRow: (row, table) => {
769
- row.toggleExpanded = expanded => {
770
- table.setExpanded(old => {
771
- var _expanded;
772
- const exists = old === true ? true : !!(old != null && old[row.id]);
773
- let oldExpanded = {};
774
- if (old === true) {
775
- Object.keys(table.getRowModel().rowsById).forEach(rowId => {
776
- oldExpanded[rowId] = true;
777
- });
778
- } else {
779
- oldExpanded = old;
734
+ column.getIsFiltered = () => column.getFilterIndex() > -1;
735
+ column.getFilterValue = () => {
736
+ var _table$getState$colum;
737
+ return (_table$getState$colum = table.getState().columnFilters) == null || (_table$getState$colum = _table$getState$colum.find(d => d.id === column.id)) == null ? void 0 : _table$getState$colum.value;
738
+ };
739
+ column.getFilterIndex = () => {
740
+ var _table$getState$colum2, _table$getState$colum3;
741
+ return (_table$getState$colum2 = (_table$getState$colum3 = table.getState().columnFilters) == null ? void 0 : _table$getState$colum3.findIndex(d => d.id === column.id)) != null ? _table$getState$colum2 : -1;
742
+ };
743
+ column.setFilterValue = value => {
744
+ table.setColumnFilters(old => {
745
+ const filterFn = column.getFilterFn();
746
+ const previousFilter = old == null ? void 0 : old.find(d => d.id === column.id);
747
+ const newFilter = functionalUpdate(value, previousFilter ? previousFilter.value : undefined);
748
+
749
+ //
750
+ if (shouldAutoRemoveFilter(filterFn, newFilter, column)) {
751
+ var _old$filter;
752
+ return (_old$filter = old == null ? void 0 : old.filter(d => d.id !== column.id)) != null ? _old$filter : [];
780
753
  }
781
- expanded = (_expanded = expanded) != null ? _expanded : !exists;
782
- if (!exists && expanded) {
783
- return {
784
- ...oldExpanded,
785
- [row.id]: true
786
- };
754
+ const newFilterObj = {
755
+ id: column.id,
756
+ value: newFilter
757
+ };
758
+ if (previousFilter) {
759
+ var _old$map;
760
+ return (_old$map = old == null ? void 0 : old.map(d => {
761
+ if (d.id === column.id) {
762
+ return newFilterObj;
763
+ }
764
+ return d;
765
+ })) != null ? _old$map : [];
787
766
  }
788
- if (exists && !expanded) {
789
- const {
790
- [row.id]: _,
791
- ...rest
792
- } = oldExpanded;
793
- return rest;
767
+ if (old != null && old.length) {
768
+ return [...old, newFilterObj];
794
769
  }
795
- return old;
770
+ return [newFilterObj];
796
771
  });
797
772
  };
798
- row.getIsExpanded = () => {
799
- var _table$options$getIsR;
800
- const expanded = table.getState().expanded;
801
- return !!((_table$options$getIsR = table.options.getIsRowExpanded == null ? void 0 : table.options.getIsRowExpanded(row)) != null ? _table$options$getIsR : expanded === true || (expanded == null ? void 0 : expanded[row.id]));
773
+ },
774
+ createRow: (row, _table) => {
775
+ row.columnFilters = {};
776
+ row.columnFiltersMeta = {};
777
+ },
778
+ createTable: table => {
779
+ table.setColumnFilters = updater => {
780
+ const leafColumns = table.getAllLeafColumns();
781
+ const updateFn = old => {
782
+ var _functionalUpdate;
783
+ return (_functionalUpdate = functionalUpdate(updater, old)) == null ? void 0 : _functionalUpdate.filter(filter => {
784
+ const column = leafColumns.find(d => d.id === filter.id);
785
+ if (column) {
786
+ const filterFn = column.getFilterFn();
787
+ if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {
788
+ return false;
789
+ }
790
+ }
791
+ return true;
792
+ });
793
+ };
794
+ table.options.onColumnFiltersChange == null || table.options.onColumnFiltersChange(updateFn);
802
795
  };
803
- row.getCanExpand = () => {
804
- var _table$options$getRow, _table$options$enable, _row$subRows;
805
- return (_table$options$getRow = table.options.getRowCanExpand == null ? void 0 : table.options.getRowCanExpand(row)) != null ? _table$options$getRow : ((_table$options$enable = table.options.enableExpanding) != null ? _table$options$enable : true) && !!((_row$subRows = row.subRows) != null && _row$subRows.length);
796
+ table.resetColumnFilters = defaultState => {
797
+ var _table$initialState$c, _table$initialState;
798
+ table.setColumnFilters(defaultState ? [] : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnFilters) != null ? _table$initialState$c : []);
806
799
  };
807
- row.getIsAllParentsExpanded = () => {
808
- let isFullyExpanded = true;
809
- let currentRow = row;
810
- while (isFullyExpanded && currentRow.parentId) {
811
- currentRow = table.getRow(currentRow.parentId, true);
812
- isFullyExpanded = currentRow.getIsExpanded();
800
+ table.getPreFilteredRowModel = () => table.getCoreRowModel();
801
+ table.getFilteredRowModel = () => {
802
+ if (!table._getFilteredRowModel && table.options.getFilteredRowModel) {
803
+ table._getFilteredRowModel = table.options.getFilteredRowModel(table);
813
804
  }
814
- return isFullyExpanded;
815
- };
816
- row.getToggleExpandedHandler = () => {
817
- const canExpand = row.getCanExpand();
818
- return () => {
819
- if (!canExpand) return;
820
- row.toggleExpanded();
821
- };
805
+ if (table.options.manualFiltering || !table._getFilteredRowModel) {
806
+ return table.getPreFilteredRowModel();
807
+ }
808
+ return table._getFilteredRowModel();
822
809
  };
823
810
  }
824
811
  };
812
+ function shouldAutoRemoveFilter(filterFn, value, column) {
813
+ return (filterFn && filterFn.autoRemove ? filterFn.autoRemove(value, column) : false) || typeof value === 'undefined' || typeof value === 'string' && !value;
814
+ }
825
815
 
826
- const includesString = (row, columnId, filterValue) => {
827
- var _row$getValue;
828
- const search = filterValue.toLowerCase();
829
- return Boolean((_row$getValue = row.getValue(columnId)) == null || (_row$getValue = _row$getValue.toString()) == null || (_row$getValue = _row$getValue.toLowerCase()) == null ? void 0 : _row$getValue.includes(search));
830
- };
831
- includesString.autoRemove = val => testFalsey(val);
832
- const includesStringSensitive = (row, columnId, filterValue) => {
833
- var _row$getValue2;
834
- return Boolean((_row$getValue2 = row.getValue(columnId)) == null || (_row$getValue2 = _row$getValue2.toString()) == null ? void 0 : _row$getValue2.includes(filterValue));
835
- };
836
- includesStringSensitive.autoRemove = val => testFalsey(val);
837
- const equalsString = (row, columnId, filterValue) => {
838
- var _row$getValue3;
839
- return ((_row$getValue3 = row.getValue(columnId)) == null || (_row$getValue3 = _row$getValue3.toString()) == null ? void 0 : _row$getValue3.toLowerCase()) === (filterValue == null ? void 0 : filterValue.toLowerCase());
840
- };
841
- equalsString.autoRemove = val => testFalsey(val);
842
- const arrIncludes = (row, columnId, filterValue) => {
843
- var _row$getValue4;
844
- return (_row$getValue4 = row.getValue(columnId)) == null ? void 0 : _row$getValue4.includes(filterValue);
816
+ const sum = (columnId, _leafRows, childRows) => {
817
+ // It's faster to just add the aggregations together instead of
818
+ // process leaf nodes individually
819
+ return childRows.reduce((sum, next) => {
820
+ const nextValue = next.getValue(columnId);
821
+ return sum + (typeof nextValue === 'number' ? nextValue : 0);
822
+ }, 0);
845
823
  };
846
- arrIncludes.autoRemove = val => testFalsey(val) || !(val != null && val.length);
847
- const arrIncludesAll = (row, columnId, filterValue) => {
848
- return !filterValue.some(val => {
849
- var _row$getValue5;
850
- return !((_row$getValue5 = row.getValue(columnId)) != null && _row$getValue5.includes(val));
824
+ const min = (columnId, _leafRows, childRows) => {
825
+ let min;
826
+ childRows.forEach(row => {
827
+ const value = row.getValue(columnId);
828
+ if (value != null && (min > value || min === undefined && value >= value)) {
829
+ min = value;
830
+ }
851
831
  });
832
+ return min;
852
833
  };
853
- arrIncludesAll.autoRemove = val => testFalsey(val) || !(val != null && val.length);
854
- const arrIncludesSome = (row, columnId, filterValue) => {
855
- return filterValue.some(val => {
856
- var _row$getValue6;
857
- return (_row$getValue6 = row.getValue(columnId)) == null ? void 0 : _row$getValue6.includes(val);
834
+ const max = (columnId, _leafRows, childRows) => {
835
+ let max;
836
+ childRows.forEach(row => {
837
+ const value = row.getValue(columnId);
838
+ if (value != null && (max < value || max === undefined && value >= value)) {
839
+ max = value;
840
+ }
858
841
  });
842
+ return max;
859
843
  };
860
- arrIncludesSome.autoRemove = val => testFalsey(val) || !(val != null && val.length);
861
- const equals = (row, columnId, filterValue) => {
862
- return row.getValue(columnId) === filterValue;
863
- };
864
- equals.autoRemove = val => testFalsey(val);
865
- const weakEquals = (row, columnId, filterValue) => {
866
- return row.getValue(columnId) == filterValue;
844
+ const extent = (columnId, _leafRows, childRows) => {
845
+ let min;
846
+ let max;
847
+ childRows.forEach(row => {
848
+ const value = row.getValue(columnId);
849
+ if (value != null) {
850
+ if (min === undefined) {
851
+ if (value >= value) min = max = value;
852
+ } else {
853
+ if (min > value) min = value;
854
+ if (max < value) max = value;
855
+ }
856
+ }
857
+ });
858
+ return [min, max];
859
+ };
860
+ const mean = (columnId, leafRows) => {
861
+ let count = 0;
862
+ let sum = 0;
863
+ leafRows.forEach(row => {
864
+ let value = row.getValue(columnId);
865
+ if (value != null && (value = +value) >= value) {
866
+ ++count, sum += value;
867
+ }
868
+ });
869
+ if (count) return sum / count;
870
+ return;
871
+ };
872
+ const median = (columnId, leafRows) => {
873
+ if (!leafRows.length) {
874
+ return;
875
+ }
876
+ const values = leafRows.map(row => row.getValue(columnId));
877
+ if (!isNumberArray(values)) {
878
+ return;
879
+ }
880
+ if (values.length === 1) {
881
+ return values[0];
882
+ }
883
+ const mid = Math.floor(values.length / 2);
884
+ const nums = values.sort((a, b) => a - b);
885
+ return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2;
886
+ };
887
+ const unique = (columnId, leafRows) => {
888
+ return Array.from(new Set(leafRows.map(d => d.getValue(columnId))).values());
889
+ };
890
+ const uniqueCount = (columnId, leafRows) => {
891
+ return new Set(leafRows.map(d => d.getValue(columnId))).size;
892
+ };
893
+ const count = (_columnId, leafRows) => {
894
+ return leafRows.length;
895
+ };
896
+ const aggregationFns = {
897
+ sum,
898
+ min,
899
+ max,
900
+ extent,
901
+ mean,
902
+ median,
903
+ unique,
904
+ uniqueCount,
905
+ count
906
+ };
907
+
908
+ //
909
+
910
+ const ColumnGrouping = {
911
+ getDefaultColumnDef: () => {
912
+ return {
913
+ aggregatedCell: props => {
914
+ var _toString, _props$getValue;
915
+ return (_toString = (_props$getValue = props.getValue()) == null || _props$getValue.toString == null ? void 0 : _props$getValue.toString()) != null ? _toString : null;
916
+ },
917
+ aggregationFn: 'auto'
918
+ };
919
+ },
920
+ getInitialState: state => {
921
+ return {
922
+ grouping: [],
923
+ ...state
924
+ };
925
+ },
926
+ getDefaultOptions: table => {
927
+ return {
928
+ onGroupingChange: makeStateUpdater('grouping', table),
929
+ groupedColumnMode: 'reorder'
930
+ };
931
+ },
932
+ createColumn: (column, table) => {
933
+ column.toggleGrouping = () => {
934
+ table.setGrouping(old => {
935
+ // Find any existing grouping for this column
936
+ if (old != null && old.includes(column.id)) {
937
+ return old.filter(d => d !== column.id);
938
+ }
939
+ return [...(old != null ? old : []), column.id];
940
+ });
941
+ };
942
+ column.getCanGroup = () => {
943
+ var _ref, _ref2, _ref3, _column$columnDef$ena;
944
+ return (_ref = (_ref2 = (_ref3 = (_column$columnDef$ena = column.columnDef.enableGrouping) != null ? _column$columnDef$ena : true) != null ? _ref3 : table.options.enableGrouping) != null ? _ref2 : true) != null ? _ref : !!column.accessorFn;
945
+ };
946
+ column.getIsGrouped = () => {
947
+ var _table$getState$group;
948
+ return (_table$getState$group = table.getState().grouping) == null ? void 0 : _table$getState$group.includes(column.id);
949
+ };
950
+ column.getGroupedIndex = () => {
951
+ var _table$getState$group2;
952
+ return (_table$getState$group2 = table.getState().grouping) == null ? void 0 : _table$getState$group2.indexOf(column.id);
953
+ };
954
+ column.getToggleGroupingHandler = () => {
955
+ const canGroup = column.getCanGroup();
956
+ return () => {
957
+ if (!canGroup) return;
958
+ column.toggleGrouping();
959
+ };
960
+ };
961
+ column.getAutoAggregationFn = () => {
962
+ const firstRow = table.getCoreRowModel().flatRows[0];
963
+ const value = firstRow == null ? void 0 : firstRow.getValue(column.id);
964
+ if (typeof value === 'number') {
965
+ return aggregationFns.sum;
966
+ }
967
+ if (Object.prototype.toString.call(value) === '[object Date]') {
968
+ return aggregationFns.extent;
969
+ }
970
+ };
971
+ column.getAggregationFn = () => {
972
+ var _table$options$aggreg, _table$options$aggreg2;
973
+ if (!column) {
974
+ throw new Error();
975
+ }
976
+ return isFunction(column.columnDef.aggregationFn) ? column.columnDef.aggregationFn : column.columnDef.aggregationFn === 'auto' ? column.getAutoAggregationFn() : (_table$options$aggreg = (_table$options$aggreg2 = table.options.aggregationFns) == null ? void 0 : _table$options$aggreg2[column.columnDef.aggregationFn]) != null ? _table$options$aggreg : aggregationFns[column.columnDef.aggregationFn];
977
+ };
978
+ },
979
+ createTable: table => {
980
+ table.setGrouping = updater => table.options.onGroupingChange == null ? void 0 : table.options.onGroupingChange(updater);
981
+ table.resetGrouping = defaultState => {
982
+ var _table$initialState$g, _table$initialState;
983
+ table.setGrouping(defaultState ? [] : (_table$initialState$g = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.grouping) != null ? _table$initialState$g : []);
984
+ };
985
+ table.getPreGroupedRowModel = () => table.getFilteredRowModel();
986
+ table.getGroupedRowModel = () => {
987
+ if (!table._getGroupedRowModel && table.options.getGroupedRowModel) {
988
+ table._getGroupedRowModel = table.options.getGroupedRowModel(table);
989
+ }
990
+ if (table.options.manualGrouping || !table._getGroupedRowModel) {
991
+ return table.getPreGroupedRowModel();
992
+ }
993
+ return table._getGroupedRowModel();
994
+ };
995
+ },
996
+ createRow: (row, table) => {
997
+ row.getIsGrouped = () => !!row.groupingColumnId;
998
+ row.getGroupingValue = columnId => {
999
+ if (row._groupingValuesCache.hasOwnProperty(columnId)) {
1000
+ return row._groupingValuesCache[columnId];
1001
+ }
1002
+ const column = table.getColumn(columnId);
1003
+ if (!(column != null && column.columnDef.getGroupingValue)) {
1004
+ return row.getValue(columnId);
1005
+ }
1006
+ row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(row.original);
1007
+ return row._groupingValuesCache[columnId];
1008
+ };
1009
+ row._groupingValuesCache = {};
1010
+ },
1011
+ createCell: (cell, column, row, table) => {
1012
+ cell.getIsGrouped = () => column.getIsGrouped() && column.id === row.groupingColumnId;
1013
+ cell.getIsPlaceholder = () => !cell.getIsGrouped() && column.getIsGrouped();
1014
+ cell.getIsAggregated = () => {
1015
+ var _row$subRows;
1016
+ return !cell.getIsGrouped() && !cell.getIsPlaceholder() && !!((_row$subRows = row.subRows) != null && _row$subRows.length);
1017
+ };
1018
+ }
1019
+ };
1020
+ function orderColumns(leafColumns, grouping, groupedColumnMode) {
1021
+ if (!(grouping != null && grouping.length) || !groupedColumnMode) {
1022
+ return leafColumns;
1023
+ }
1024
+ const nonGroupingColumns = leafColumns.filter(col => !grouping.includes(col.id));
1025
+ if (groupedColumnMode === 'remove') {
1026
+ return nonGroupingColumns;
1027
+ }
1028
+ const groupingColumns = grouping.map(g => leafColumns.find(col => col.id === g)).filter(Boolean);
1029
+ return [...groupingColumns, ...nonGroupingColumns];
1030
+ }
1031
+
1032
+ //
1033
+
1034
+ const ColumnOrdering = {
1035
+ getInitialState: state => {
1036
+ return {
1037
+ columnOrder: [],
1038
+ ...state
1039
+ };
1040
+ },
1041
+ getDefaultOptions: table => {
1042
+ return {
1043
+ onColumnOrderChange: makeStateUpdater('columnOrder', table)
1044
+ };
1045
+ },
1046
+ createColumn: (column, table) => {
1047
+ column.getIndex = memo(position => [_getVisibleLeafColumns(table, position)], columns => columns.findIndex(d => d.id === column.id), getMemoOptions(table.options, 'debugColumns', 'getIndex'));
1048
+ column.getIsFirstColumn = position => {
1049
+ var _columns$;
1050
+ const columns = _getVisibleLeafColumns(table, position);
1051
+ return ((_columns$ = columns[0]) == null ? void 0 : _columns$.id) === column.id;
1052
+ };
1053
+ column.getIsLastColumn = position => {
1054
+ var _columns;
1055
+ const columns = _getVisibleLeafColumns(table, position);
1056
+ return ((_columns = columns[columns.length - 1]) == null ? void 0 : _columns.id) === column.id;
1057
+ };
1058
+ },
1059
+ createTable: table => {
1060
+ table.setColumnOrder = updater => table.options.onColumnOrderChange == null ? void 0 : table.options.onColumnOrderChange(updater);
1061
+ table.resetColumnOrder = defaultState => {
1062
+ var _table$initialState$c;
1063
+ table.setColumnOrder(defaultState ? [] : (_table$initialState$c = table.initialState.columnOrder) != null ? _table$initialState$c : []);
1064
+ };
1065
+ table._getOrderColumnsFn = memo(() => [table.getState().columnOrder, table.getState().grouping, table.options.groupedColumnMode], (columnOrder, grouping, groupedColumnMode) => columns => {
1066
+ // Sort grouped columns to the start of the column list
1067
+ // before the headers are built
1068
+ let orderedColumns = [];
1069
+
1070
+ // If there is no order, return the normal columns
1071
+ if (!(columnOrder != null && columnOrder.length)) {
1072
+ orderedColumns = columns;
1073
+ } else {
1074
+ const columnOrderCopy = [...columnOrder];
1075
+
1076
+ // If there is an order, make a copy of the columns
1077
+ const columnsCopy = [...columns];
1078
+
1079
+ // And make a new ordered array of the columns
1080
+
1081
+ // Loop over the columns and place them in order into the new array
1082
+ while (columnsCopy.length && columnOrderCopy.length) {
1083
+ const targetColumnId = columnOrderCopy.shift();
1084
+ const foundIndex = columnsCopy.findIndex(d => d.id === targetColumnId);
1085
+ if (foundIndex > -1) {
1086
+ orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]);
1087
+ }
1088
+ }
1089
+
1090
+ // If there are any columns left, add them to the end
1091
+ orderedColumns = [...orderedColumns, ...columnsCopy];
1092
+ }
1093
+ return orderColumns(orderedColumns, grouping, groupedColumnMode);
1094
+ }, getMemoOptions(table.options, 'debugTable', '_getOrderColumnsFn'));
1095
+ }
1096
+ };
1097
+
1098
+ //
1099
+
1100
+ const getDefaultColumnPinningState = () => ({
1101
+ left: [],
1102
+ right: []
1103
+ });
1104
+ const ColumnPinning = {
1105
+ getInitialState: state => {
1106
+ return {
1107
+ columnPinning: getDefaultColumnPinningState(),
1108
+ ...state
1109
+ };
1110
+ },
1111
+ getDefaultOptions: table => {
1112
+ return {
1113
+ onColumnPinningChange: makeStateUpdater('columnPinning', table)
1114
+ };
1115
+ },
1116
+ createColumn: (column, table) => {
1117
+ column.pin = position => {
1118
+ const columnIds = column.getLeafColumns().map(d => d.id).filter(Boolean);
1119
+ table.setColumnPinning(old => {
1120
+ var _old$left3, _old$right3;
1121
+ if (position === 'right') {
1122
+ var _old$left, _old$right;
1123
+ return {
1124
+ left: ((_old$left = old == null ? void 0 : old.left) != null ? _old$left : []).filter(d => !(columnIds != null && columnIds.includes(d))),
1125
+ right: [...((_old$right = old == null ? void 0 : old.right) != null ? _old$right : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds]
1126
+ };
1127
+ }
1128
+ if (position === 'left') {
1129
+ var _old$left2, _old$right2;
1130
+ return {
1131
+ left: [...((_old$left2 = old == null ? void 0 : old.left) != null ? _old$left2 : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds],
1132
+ right: ((_old$right2 = old == null ? void 0 : old.right) != null ? _old$right2 : []).filter(d => !(columnIds != null && columnIds.includes(d)))
1133
+ };
1134
+ }
1135
+ return {
1136
+ left: ((_old$left3 = old == null ? void 0 : old.left) != null ? _old$left3 : []).filter(d => !(columnIds != null && columnIds.includes(d))),
1137
+ right: ((_old$right3 = old == null ? void 0 : old.right) != null ? _old$right3 : []).filter(d => !(columnIds != null && columnIds.includes(d)))
1138
+ };
1139
+ });
1140
+ };
1141
+ column.getCanPin = () => {
1142
+ const leafColumns = column.getLeafColumns();
1143
+ return leafColumns.some(d => {
1144
+ var _d$columnDef$enablePi, _ref, _table$options$enable;
1145
+ return ((_d$columnDef$enablePi = d.columnDef.enablePinning) != null ? _d$columnDef$enablePi : true) && ((_ref = (_table$options$enable = table.options.enableColumnPinning) != null ? _table$options$enable : table.options.enablePinning) != null ? _ref : true);
1146
+ });
1147
+ };
1148
+ column.getIsPinned = () => {
1149
+ const leafColumnIds = column.getLeafColumns().map(d => d.id);
1150
+ const {
1151
+ left,
1152
+ right
1153
+ } = table.getState().columnPinning;
1154
+ const isLeft = leafColumnIds.some(d => left == null ? void 0 : left.includes(d));
1155
+ const isRight = leafColumnIds.some(d => right == null ? void 0 : right.includes(d));
1156
+ return isLeft ? 'left' : isRight ? 'right' : false;
1157
+ };
1158
+ column.getPinnedIndex = () => {
1159
+ var _table$getState$colum, _table$getState$colum2;
1160
+ const position = column.getIsPinned();
1161
+ return position ? (_table$getState$colum = (_table$getState$colum2 = table.getState().columnPinning) == null || (_table$getState$colum2 = _table$getState$colum2[position]) == null ? void 0 : _table$getState$colum2.indexOf(column.id)) != null ? _table$getState$colum : -1 : 0;
1162
+ };
1163
+ },
1164
+ createRow: (row, table) => {
1165
+ row.getCenterVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allCells, left, right) => {
1166
+ const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];
1167
+ return allCells.filter(d => !leftAndRight.includes(d.column.id));
1168
+ }, getMemoOptions(table.options, 'debugRows', 'getCenterVisibleCells'));
1169
+ row.getLeftVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left], (allCells, left) => {
1170
+ const cells = (left != null ? left : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({
1171
+ ...d,
1172
+ position: 'left'
1173
+ }));
1174
+ return cells;
1175
+ }, getMemoOptions(table.options, 'debugRows', 'getLeftVisibleCells'));
1176
+ row.getRightVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.right], (allCells, right) => {
1177
+ const cells = (right != null ? right : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({
1178
+ ...d,
1179
+ position: 'right'
1180
+ }));
1181
+ return cells;
1182
+ }, getMemoOptions(table.options, 'debugRows', 'getRightVisibleCells'));
1183
+ },
1184
+ createTable: table => {
1185
+ table.setColumnPinning = updater => table.options.onColumnPinningChange == null ? void 0 : table.options.onColumnPinningChange(updater);
1186
+ table.resetColumnPinning = defaultState => {
1187
+ var _table$initialState$c, _table$initialState;
1188
+ return table.setColumnPinning(defaultState ? getDefaultColumnPinningState() : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnPinning) != null ? _table$initialState$c : getDefaultColumnPinningState());
1189
+ };
1190
+ table.getIsSomeColumnsPinned = position => {
1191
+ var _pinningState$positio;
1192
+ const pinningState = table.getState().columnPinning;
1193
+ if (!position) {
1194
+ var _pinningState$left, _pinningState$right;
1195
+ return Boolean(((_pinningState$left = pinningState.left) == null ? void 0 : _pinningState$left.length) || ((_pinningState$right = pinningState.right) == null ? void 0 : _pinningState$right.length));
1196
+ }
1197
+ return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);
1198
+ };
1199
+ table.getLeftLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left], (allColumns, left) => {
1200
+ return (left != null ? left : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);
1201
+ }, getMemoOptions(table.options, 'debugColumns', 'getLeftLeafColumns'));
1202
+ table.getRightLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.right], (allColumns, right) => {
1203
+ return (right != null ? right : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);
1204
+ }, getMemoOptions(table.options, 'debugColumns', 'getRightLeafColumns'));
1205
+ table.getCenterLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, left, right) => {
1206
+ const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];
1207
+ return allColumns.filter(d => !leftAndRight.includes(d.id));
1208
+ }, getMemoOptions(table.options, 'debugColumns', 'getCenterLeafColumns'));
1209
+ }
867
1210
  };
868
- weakEquals.autoRemove = val => testFalsey(val);
869
- const inNumberRange = (row, columnId, filterValue) => {
870
- let [min, max] = filterValue;
871
- const rowValue = row.getValue(columnId);
872
- return rowValue >= min && rowValue <= max;
1211
+
1212
+ //
1213
+
1214
+ //
1215
+
1216
+ const defaultColumnSizing = {
1217
+ size: 150,
1218
+ minSize: 20,
1219
+ maxSize: Number.MAX_SAFE_INTEGER
873
1220
  };
874
- inNumberRange.resolveFilterValue = val => {
875
- let [unsafeMin, unsafeMax] = val;
876
- let parsedMin = typeof unsafeMin !== 'number' ? parseFloat(unsafeMin) : unsafeMin;
877
- let parsedMax = typeof unsafeMax !== 'number' ? parseFloat(unsafeMax) : unsafeMax;
878
- let min = unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin;
879
- let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax;
880
- if (min > max) {
881
- const temp = min;
882
- min = max;
883
- max = temp;
1221
+ const getDefaultColumnSizingInfoState = () => ({
1222
+ startOffset: null,
1223
+ startSize: null,
1224
+ deltaOffset: null,
1225
+ deltaPercentage: null,
1226
+ isResizingColumn: false,
1227
+ columnSizingStart: []
1228
+ });
1229
+ const ColumnSizing = {
1230
+ getDefaultColumnDef: () => {
1231
+ return defaultColumnSizing;
1232
+ },
1233
+ getInitialState: state => {
1234
+ return {
1235
+ columnSizing: {},
1236
+ columnSizingInfo: getDefaultColumnSizingInfoState(),
1237
+ ...state
1238
+ };
1239
+ },
1240
+ getDefaultOptions: table => {
1241
+ return {
1242
+ columnResizeMode: 'onEnd',
1243
+ columnResizeDirection: 'ltr',
1244
+ onColumnSizingChange: makeStateUpdater('columnSizing', table),
1245
+ onColumnSizingInfoChange: makeStateUpdater('columnSizingInfo', table)
1246
+ };
1247
+ },
1248
+ createColumn: (column, table) => {
1249
+ column.getSize = () => {
1250
+ var _column$columnDef$min, _ref, _column$columnDef$max;
1251
+ const columnSize = table.getState().columnSizing[column.id];
1252
+ return Math.min(Math.max((_column$columnDef$min = column.columnDef.minSize) != null ? _column$columnDef$min : defaultColumnSizing.minSize, (_ref = columnSize != null ? columnSize : column.columnDef.size) != null ? _ref : defaultColumnSizing.size), (_column$columnDef$max = column.columnDef.maxSize) != null ? _column$columnDef$max : defaultColumnSizing.maxSize);
1253
+ };
1254
+ column.getStart = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(0, column.getIndex(position)).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getStart'));
1255
+ column.getAfter = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(column.getIndex(position) + 1).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getAfter'));
1256
+ column.resetSize = () => {
1257
+ table.setColumnSizing(_ref2 => {
1258
+ let {
1259
+ [column.id]: _,
1260
+ ...rest
1261
+ } = _ref2;
1262
+ return rest;
1263
+ });
1264
+ };
1265
+ column.getCanResize = () => {
1266
+ var _column$columnDef$ena, _table$options$enable;
1267
+ return ((_column$columnDef$ena = column.columnDef.enableResizing) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnResizing) != null ? _table$options$enable : true);
1268
+ };
1269
+ column.getIsResizing = () => {
1270
+ return table.getState().columnSizingInfo.isResizingColumn === column.id;
1271
+ };
1272
+ },
1273
+ createHeader: (header, table) => {
1274
+ header.getSize = () => {
1275
+ let sum = 0;
1276
+ const recurse = header => {
1277
+ if (header.subHeaders.length) {
1278
+ header.subHeaders.forEach(recurse);
1279
+ } else {
1280
+ var _header$column$getSiz;
1281
+ sum += (_header$column$getSiz = header.column.getSize()) != null ? _header$column$getSiz : 0;
1282
+ }
1283
+ };
1284
+ recurse(header);
1285
+ return sum;
1286
+ };
1287
+ header.getStart = () => {
1288
+ if (header.index > 0) {
1289
+ const prevSiblingHeader = header.headerGroup.headers[header.index - 1];
1290
+ return prevSiblingHeader.getStart() + prevSiblingHeader.getSize();
1291
+ }
1292
+ return 0;
1293
+ };
1294
+ header.getResizeHandler = _contextDocument => {
1295
+ const column = table.getColumn(header.column.id);
1296
+ const canResize = column == null ? void 0 : column.getCanResize();
1297
+ return e => {
1298
+ if (!column || !canResize) {
1299
+ return;
1300
+ }
1301
+ e.persist == null || e.persist();
1302
+ if (isTouchStartEvent(e)) {
1303
+ // lets not respond to multiple touches (e.g. 2 or 3 fingers)
1304
+ if (e.touches && e.touches.length > 1) {
1305
+ return;
1306
+ }
1307
+ }
1308
+ const startSize = header.getSize();
1309
+ const columnSizingStart = header ? header.getLeafHeaders().map(d => [d.column.id, d.column.getSize()]) : [[column.id, column.getSize()]];
1310
+ const clientX = isTouchStartEvent(e) ? Math.round(e.touches[0].clientX) : e.clientX;
1311
+ const newColumnSizing = {};
1312
+ const updateOffset = (eventType, clientXPos) => {
1313
+ if (typeof clientXPos !== 'number') {
1314
+ return;
1315
+ }
1316
+ table.setColumnSizingInfo(old => {
1317
+ var _old$startOffset, _old$startSize;
1318
+ const deltaDirection = table.options.columnResizeDirection === 'rtl' ? -1 : 1;
1319
+ const deltaOffset = (clientXPos - ((_old$startOffset = old == null ? void 0 : old.startOffset) != null ? _old$startOffset : 0)) * deltaDirection;
1320
+ const deltaPercentage = Math.max(deltaOffset / ((_old$startSize = old == null ? void 0 : old.startSize) != null ? _old$startSize : 0), -0.999999);
1321
+ old.columnSizingStart.forEach(_ref3 => {
1322
+ let [columnId, headerSize] = _ref3;
1323
+ newColumnSizing[columnId] = Math.round(Math.max(headerSize + headerSize * deltaPercentage, 0) * 100) / 100;
1324
+ });
1325
+ return {
1326
+ ...old,
1327
+ deltaOffset,
1328
+ deltaPercentage
1329
+ };
1330
+ });
1331
+ if (table.options.columnResizeMode === 'onChange' || eventType === 'end') {
1332
+ table.setColumnSizing(old => ({
1333
+ ...old,
1334
+ ...newColumnSizing
1335
+ }));
1336
+ }
1337
+ };
1338
+ const onMove = clientXPos => updateOffset('move', clientXPos);
1339
+ const onEnd = clientXPos => {
1340
+ updateOffset('end', clientXPos);
1341
+ table.setColumnSizingInfo(old => ({
1342
+ ...old,
1343
+ isResizingColumn: false,
1344
+ startOffset: null,
1345
+ startSize: null,
1346
+ deltaOffset: null,
1347
+ deltaPercentage: null,
1348
+ columnSizingStart: []
1349
+ }));
1350
+ };
1351
+ const contextDocument = _contextDocument || typeof document !== 'undefined' ? document : null;
1352
+ const mouseEvents = {
1353
+ moveHandler: e => onMove(e.clientX),
1354
+ upHandler: e => {
1355
+ contextDocument == null || contextDocument.removeEventListener('mousemove', mouseEvents.moveHandler);
1356
+ contextDocument == null || contextDocument.removeEventListener('mouseup', mouseEvents.upHandler);
1357
+ onEnd(e.clientX);
1358
+ }
1359
+ };
1360
+ const touchEvents = {
1361
+ moveHandler: e => {
1362
+ if (e.cancelable) {
1363
+ e.preventDefault();
1364
+ e.stopPropagation();
1365
+ }
1366
+ onMove(e.touches[0].clientX);
1367
+ return false;
1368
+ },
1369
+ upHandler: e => {
1370
+ var _e$touches$;
1371
+ contextDocument == null || contextDocument.removeEventListener('touchmove', touchEvents.moveHandler);
1372
+ contextDocument == null || contextDocument.removeEventListener('touchend', touchEvents.upHandler);
1373
+ if (e.cancelable) {
1374
+ e.preventDefault();
1375
+ e.stopPropagation();
1376
+ }
1377
+ onEnd((_e$touches$ = e.touches[0]) == null ? void 0 : _e$touches$.clientX);
1378
+ }
1379
+ };
1380
+ const passiveIfSupported = passiveEventSupported() ? {
1381
+ passive: false
1382
+ } : false;
1383
+ if (isTouchStartEvent(e)) {
1384
+ contextDocument == null || contextDocument.addEventListener('touchmove', touchEvents.moveHandler, passiveIfSupported);
1385
+ contextDocument == null || contextDocument.addEventListener('touchend', touchEvents.upHandler, passiveIfSupported);
1386
+ } else {
1387
+ contextDocument == null || contextDocument.addEventListener('mousemove', mouseEvents.moveHandler, passiveIfSupported);
1388
+ contextDocument == null || contextDocument.addEventListener('mouseup', mouseEvents.upHandler, passiveIfSupported);
1389
+ }
1390
+ table.setColumnSizingInfo(old => ({
1391
+ ...old,
1392
+ startOffset: clientX,
1393
+ startSize,
1394
+ deltaOffset: 0,
1395
+ deltaPercentage: 0,
1396
+ columnSizingStart,
1397
+ isResizingColumn: column.id
1398
+ }));
1399
+ };
1400
+ };
1401
+ },
1402
+ createTable: table => {
1403
+ table.setColumnSizing = updater => table.options.onColumnSizingChange == null ? void 0 : table.options.onColumnSizingChange(updater);
1404
+ table.setColumnSizingInfo = updater => table.options.onColumnSizingInfoChange == null ? void 0 : table.options.onColumnSizingInfoChange(updater);
1405
+ table.resetColumnSizing = defaultState => {
1406
+ var _table$initialState$c;
1407
+ table.setColumnSizing(defaultState ? {} : (_table$initialState$c = table.initialState.columnSizing) != null ? _table$initialState$c : {});
1408
+ };
1409
+ table.resetHeaderSizeInfo = defaultState => {
1410
+ var _table$initialState$c2;
1411
+ table.setColumnSizingInfo(defaultState ? getDefaultColumnSizingInfoState() : (_table$initialState$c2 = table.initialState.columnSizingInfo) != null ? _table$initialState$c2 : getDefaultColumnSizingInfoState());
1412
+ };
1413
+ table.getTotalSize = () => {
1414
+ var _table$getHeaderGroup, _table$getHeaderGroup2;
1415
+ return (_table$getHeaderGroup = (_table$getHeaderGroup2 = table.getHeaderGroups()[0]) == null ? void 0 : _table$getHeaderGroup2.headers.reduce((sum, header) => {
1416
+ return sum + header.getSize();
1417
+ }, 0)) != null ? _table$getHeaderGroup : 0;
1418
+ };
1419
+ table.getLeftTotalSize = () => {
1420
+ var _table$getLeftHeaderG, _table$getLeftHeaderG2;
1421
+ return (_table$getLeftHeaderG = (_table$getLeftHeaderG2 = table.getLeftHeaderGroups()[0]) == null ? void 0 : _table$getLeftHeaderG2.headers.reduce((sum, header) => {
1422
+ return sum + header.getSize();
1423
+ }, 0)) != null ? _table$getLeftHeaderG : 0;
1424
+ };
1425
+ table.getCenterTotalSize = () => {
1426
+ var _table$getCenterHeade, _table$getCenterHeade2;
1427
+ return (_table$getCenterHeade = (_table$getCenterHeade2 = table.getCenterHeaderGroups()[0]) == null ? void 0 : _table$getCenterHeade2.headers.reduce((sum, header) => {
1428
+ return sum + header.getSize();
1429
+ }, 0)) != null ? _table$getCenterHeade : 0;
1430
+ };
1431
+ table.getRightTotalSize = () => {
1432
+ var _table$getRightHeader, _table$getRightHeader2;
1433
+ return (_table$getRightHeader = (_table$getRightHeader2 = table.getRightHeaderGroups()[0]) == null ? void 0 : _table$getRightHeader2.headers.reduce((sum, header) => {
1434
+ return sum + header.getSize();
1435
+ }, 0)) != null ? _table$getRightHeader : 0;
1436
+ };
884
1437
  }
885
- return [min, max];
886
- };
887
- inNumberRange.autoRemove = val => testFalsey(val) || testFalsey(val[0]) && testFalsey(val[1]);
888
-
889
- // Export
890
-
891
- const filterFns = {
892
- includesString,
893
- includesStringSensitive,
894
- equalsString,
895
- arrIncludes,
896
- arrIncludesAll,
897
- arrIncludesSome,
898
- equals,
899
- weakEquals,
900
- inNumberRange
901
1438
  };
902
- // Utils
903
-
904
- function testFalsey(val) {
905
- return val === undefined || val === null || val === '';
1439
+ let passiveSupported = null;
1440
+ function passiveEventSupported() {
1441
+ if (typeof passiveSupported === 'boolean') return passiveSupported;
1442
+ let supported = false;
1443
+ try {
1444
+ const options = {
1445
+ get passive() {
1446
+ supported = true;
1447
+ return false;
1448
+ }
1449
+ };
1450
+ const noop = () => {};
1451
+ window.addEventListener('test', noop, options);
1452
+ window.removeEventListener('test', noop);
1453
+ } catch (err) {
1454
+ supported = false;
1455
+ }
1456
+ passiveSupported = supported;
1457
+ return passiveSupported;
1458
+ }
1459
+ function isTouchStartEvent(e) {
1460
+ return e.type === 'touchstart';
906
1461
  }
907
1462
 
908
1463
  //
909
1464
 
910
- const Filters = {
911
- getDefaultColumnDef: () => {
912
- return {
913
- filterFn: 'auto'
914
- };
915
- },
1465
+ const ColumnVisibility = {
916
1466
  getInitialState: state => {
917
1467
  return {
918
- columnFilters: [],
919
- globalFilter: undefined,
920
- // filtersProgress: 1,
921
- // facetProgress: {},
1468
+ columnVisibility: {},
922
1469
  ...state
923
1470
  };
924
1471
  },
925
1472
  getDefaultOptions: table => {
926
1473
  return {
927
- onColumnFiltersChange: makeStateUpdater('columnFilters', table),
928
- onGlobalFilterChange: makeStateUpdater('globalFilter', table),
929
- filterFromLeafRows: false,
930
- maxLeafRowFilterDepth: 100,
931
- globalFilterFn: 'auto',
932
- getColumnCanGlobalFilter: column => {
933
- var _table$getCoreRowMode;
934
- const value = (_table$getCoreRowMode = table.getCoreRowModel().flatRows[0]) == null || (_table$getCoreRowMode = _table$getCoreRowMode._getAllCellsByColumnId()[column.id]) == null ? void 0 : _table$getCoreRowMode.getValue();
935
- return typeof value === 'string' || typeof value === 'number';
936
- }
1474
+ onColumnVisibilityChange: makeStateUpdater('columnVisibility', table)
937
1475
  };
938
1476
  },
939
1477
  createColumn: (column, table) => {
940
- column.getAutoFilterFn = () => {
941
- const firstRow = table.getCoreRowModel().flatRows[0];
942
- const value = firstRow == null ? void 0 : firstRow.getValue(column.id);
943
- if (typeof value === 'string') {
944
- return filterFns.includesString;
945
- }
946
- if (typeof value === 'number') {
947
- return filterFns.inNumberRange;
948
- }
949
- if (typeof value === 'boolean') {
950
- return filterFns.equals;
951
- }
952
- if (value !== null && typeof value === 'object') {
953
- return filterFns.equals;
954
- }
955
- if (Array.isArray(value)) {
956
- return filterFns.arrIncludes;
1478
+ column.toggleVisibility = value => {
1479
+ if (column.getCanHide()) {
1480
+ table.setColumnVisibility(old => ({
1481
+ ...old,
1482
+ [column.id]: value != null ? value : !column.getIsVisible()
1483
+ }));
957
1484
  }
958
- return filterFns.weakEquals;
959
- };
960
- column.getFilterFn = () => {
961
- var _table$options$filter, _table$options$filter2;
962
- return isFunction(column.columnDef.filterFn) ? column.columnDef.filterFn : column.columnDef.filterFn === 'auto' ? column.getAutoFilterFn() : // @ts-ignore
963
- (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[column.columnDef.filterFn]) != null ? _table$options$filter : filterFns[column.columnDef.filterFn];
964
- };
965
- column.getCanFilter = () => {
966
- var _column$columnDef$ena, _table$options$enable, _table$options$enable2;
967
- return ((_column$columnDef$ena = column.columnDef.enableColumnFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnFilters) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && !!column.accessorFn;
968
- };
969
- column.getCanGlobalFilter = () => {
970
- var _column$columnDef$ena2, _table$options$enable3, _table$options$enable4, _table$options$getCol;
971
- return ((_column$columnDef$ena2 = column.columnDef.enableGlobalFilter) != null ? _column$columnDef$ena2 : true) && ((_table$options$enable3 = table.options.enableGlobalFilter) != null ? _table$options$enable3 : true) && ((_table$options$enable4 = table.options.enableFilters) != null ? _table$options$enable4 : true) && ((_table$options$getCol = table.options.getColumnCanGlobalFilter == null ? void 0 : table.options.getColumnCanGlobalFilter(column)) != null ? _table$options$getCol : true) && !!column.accessorFn;
972
- };
973
- column.getIsFiltered = () => column.getFilterIndex() > -1;
974
- column.getFilterValue = () => {
975
- var _table$getState$colum;
976
- return (_table$getState$colum = table.getState().columnFilters) == null || (_table$getState$colum = _table$getState$colum.find(d => d.id === column.id)) == null ? void 0 : _table$getState$colum.value;
977
- };
978
- column.getFilterIndex = () => {
979
- var _table$getState$colum2, _table$getState$colum3;
980
- return (_table$getState$colum2 = (_table$getState$colum3 = table.getState().columnFilters) == null ? void 0 : _table$getState$colum3.findIndex(d => d.id === column.id)) != null ? _table$getState$colum2 : -1;
981
- };
982
- column.setFilterValue = value => {
983
- table.setColumnFilters(old => {
984
- const filterFn = column.getFilterFn();
985
- const previousfilter = old == null ? void 0 : old.find(d => d.id === column.id);
986
- const newFilter = functionalUpdate(value, previousfilter ? previousfilter.value : undefined);
987
-
988
- //
989
- if (shouldAutoRemoveFilter(filterFn, newFilter, column)) {
990
- var _old$filter;
991
- return (_old$filter = old == null ? void 0 : old.filter(d => d.id !== column.id)) != null ? _old$filter : [];
992
- }
993
- const newFilterObj = {
994
- id: column.id,
995
- value: newFilter
996
- };
997
- if (previousfilter) {
998
- var _old$map;
999
- return (_old$map = old == null ? void 0 : old.map(d => {
1000
- if (d.id === column.id) {
1001
- return newFilterObj;
1002
- }
1003
- return d;
1004
- })) != null ? _old$map : [];
1005
- }
1006
- if (old != null && old.length) {
1007
- return [...old, newFilterObj];
1008
- }
1009
- return [newFilterObj];
1010
- });
1011
1485
  };
1012
- column._getFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, column.id);
1013
- column.getFacetedRowModel = () => {
1014
- if (!column._getFacetedRowModel) {
1015
- return table.getPreFilteredRowModel();
1016
- }
1017
- return column._getFacetedRowModel();
1486
+ column.getIsVisible = () => {
1487
+ var _ref, _table$getState$colum;
1488
+ const childColumns = column.columns;
1489
+ return (_ref = childColumns.length ? childColumns.some(c => c.getIsVisible()) : (_table$getState$colum = table.getState().columnVisibility) == null ? void 0 : _table$getState$colum[column.id]) != null ? _ref : true;
1018
1490
  };
1019
- column._getFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, column.id);
1020
- column.getFacetedUniqueValues = () => {
1021
- if (!column._getFacetedUniqueValues) {
1022
- return new Map();
1023
- }
1024
- return column._getFacetedUniqueValues();
1491
+ column.getCanHide = () => {
1492
+ var _column$columnDef$ena, _table$options$enable;
1493
+ return ((_column$columnDef$ena = column.columnDef.enableHiding) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableHiding) != null ? _table$options$enable : true);
1025
1494
  };
1026
- column._getFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, column.id);
1027
- column.getFacetedMinMaxValues = () => {
1028
- if (!column._getFacetedMinMaxValues) {
1029
- return undefined;
1030
- }
1031
- return column._getFacetedMinMaxValues();
1495
+ column.getToggleVisibilityHandler = () => {
1496
+ return e => {
1497
+ column.toggleVisibility == null || column.toggleVisibility(e.target.checked);
1498
+ };
1032
1499
  };
1033
- // () => [column.getFacetedRowModel()],
1034
- // facetedRowModel => getRowModelMinMaxValues(facetedRowModel, column.id),
1035
1500
  },
1036
1501
  createRow: (row, table) => {
1037
- row.columnFilters = {};
1038
- row.columnFiltersMeta = {};
1502
+ row._getAllVisibleCells = memo(() => [row.getAllCells(), table.getState().columnVisibility], cells => {
1503
+ return cells.filter(cell => cell.column.getIsVisible());
1504
+ }, getMemoOptions(table.options, 'debugRows', '_getAllVisibleCells'));
1505
+ row.getVisibleCells = memo(() => [row.getLeftVisibleCells(), row.getCenterVisibleCells(), row.getRightVisibleCells()], (left, center, right) => [...left, ...center, ...right], getMemoOptions(table.options, 'debugRows', 'getVisibleCells'));
1039
1506
  },
1040
1507
  createTable: table => {
1041
- table.getGlobalAutoFilterFn = () => {
1042
- return filterFns.includesString;
1043
- };
1044
- table.getGlobalFilterFn = () => {
1045
- var _table$options$filter3, _table$options$filter4;
1046
- const {
1047
- globalFilterFn: globalFilterFn
1048
- } = table.options;
1049
- return isFunction(globalFilterFn) ? globalFilterFn : globalFilterFn === 'auto' ? table.getGlobalAutoFilterFn() : // @ts-ignore
1050
- (_table$options$filter3 = (_table$options$filter4 = table.options.filterFns) == null ? void 0 : _table$options$filter4[globalFilterFn]) != null ? _table$options$filter3 : filterFns[globalFilterFn];
1051
- };
1052
- table.setColumnFilters = updater => {
1053
- const leafColumns = table.getAllLeafColumns();
1054
- const updateFn = old => {
1055
- var _functionalUpdate;
1056
- return (_functionalUpdate = functionalUpdate(updater, old)) == null ? void 0 : _functionalUpdate.filter(filter => {
1057
- const column = leafColumns.find(d => d.id === filter.id);
1058
- if (column) {
1059
- const filterFn = column.getFilterFn();
1060
- if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {
1061
- return false;
1062
- }
1063
- }
1064
- return true;
1065
- });
1066
- };
1067
- table.options.onColumnFiltersChange == null || table.options.onColumnFiltersChange(updateFn);
1068
- };
1069
- table.setGlobalFilter = updater => {
1070
- table.options.onGlobalFilterChange == null || table.options.onGlobalFilterChange(updater);
1508
+ const makeVisibleColumnsMethod = (key, getColumns) => {
1509
+ return memo(() => [getColumns(), getColumns().filter(d => d.getIsVisible()).map(d => d.id).join('_')], columns => {
1510
+ return columns.filter(d => d.getIsVisible == null ? void 0 : d.getIsVisible());
1511
+ }, getMemoOptions(table.options, 'debugColumns', key));
1071
1512
  };
1072
- table.resetGlobalFilter = defaultState => {
1073
- table.setGlobalFilter(defaultState ? undefined : table.initialState.globalFilter);
1513
+ table.getVisibleFlatColumns = makeVisibleColumnsMethod('getVisibleFlatColumns', () => table.getAllFlatColumns());
1514
+ table.getVisibleLeafColumns = makeVisibleColumnsMethod('getVisibleLeafColumns', () => table.getAllLeafColumns());
1515
+ table.getLeftVisibleLeafColumns = makeVisibleColumnsMethod('getLeftVisibleLeafColumns', () => table.getLeftLeafColumns());
1516
+ table.getRightVisibleLeafColumns = makeVisibleColumnsMethod('getRightVisibleLeafColumns', () => table.getRightLeafColumns());
1517
+ table.getCenterVisibleLeafColumns = makeVisibleColumnsMethod('getCenterVisibleLeafColumns', () => table.getCenterLeafColumns());
1518
+ table.setColumnVisibility = updater => table.options.onColumnVisibilityChange == null ? void 0 : table.options.onColumnVisibilityChange(updater);
1519
+ table.resetColumnVisibility = defaultState => {
1520
+ var _table$initialState$c;
1521
+ table.setColumnVisibility(defaultState ? {} : (_table$initialState$c = table.initialState.columnVisibility) != null ? _table$initialState$c : {});
1074
1522
  };
1075
- table.resetColumnFilters = defaultState => {
1076
- var _table$initialState$c, _table$initialState;
1077
- table.setColumnFilters(defaultState ? [] : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnFilters) != null ? _table$initialState$c : []);
1523
+ table.toggleAllColumnsVisible = value => {
1524
+ var _value;
1525
+ value = (_value = value) != null ? _value : !table.getIsAllColumnsVisible();
1526
+ table.setColumnVisibility(table.getAllLeafColumns().reduce((obj, column) => ({
1527
+ ...obj,
1528
+ [column.id]: !value ? !(column.getCanHide != null && column.getCanHide()) : value
1529
+ }), {}));
1078
1530
  };
1079
- table.getPreFilteredRowModel = () => table.getCoreRowModel();
1080
- table.getFilteredRowModel = () => {
1081
- if (!table._getFilteredRowModel && table.options.getFilteredRowModel) {
1082
- table._getFilteredRowModel = table.options.getFilteredRowModel(table);
1083
- }
1084
- if (table.options.manualFiltering || !table._getFilteredRowModel) {
1085
- return table.getPreFilteredRowModel();
1086
- }
1087
- return table._getFilteredRowModel();
1531
+ table.getIsAllColumnsVisible = () => !table.getAllLeafColumns().some(column => !(column.getIsVisible != null && column.getIsVisible()));
1532
+ table.getIsSomeColumnsVisible = () => table.getAllLeafColumns().some(column => column.getIsVisible == null ? void 0 : column.getIsVisible());
1533
+ table.getToggleAllColumnsVisibilityHandler = () => {
1534
+ return e => {
1535
+ var _target;
1536
+ table.toggleAllColumnsVisible((_target = e.target) == null ? void 0 : _target.checked);
1537
+ };
1088
1538
  };
1539
+ }
1540
+ };
1541
+ function _getVisibleLeafColumns(table, position) {
1542
+ return !position ? table.getVisibleLeafColumns() : position === 'center' ? table.getCenterVisibleLeafColumns() : position === 'left' ? table.getLeftVisibleLeafColumns() : table.getRightVisibleLeafColumns();
1543
+ }
1544
+
1545
+ //
1546
+
1547
+ const GlobalFaceting = {
1548
+ createTable: table => {
1089
1549
  table._getGlobalFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, '__global__');
1090
1550
  table.getGlobalFacetedRowModel = () => {
1091
1551
  if (table.options.manualFiltering || !table._getGlobalFacetedRowModel) {
@@ -1109,289 +1569,207 @@ const Filters = {
1109
1569
  };
1110
1570
  }
1111
1571
  };
1112
- function shouldAutoRemoveFilter(filterFn, value, column) {
1113
- return (filterFn && filterFn.autoRemove ? filterFn.autoRemove(value, column) : false) || typeof value === 'undefined' || typeof value === 'string' && !value;
1114
- }
1115
-
1116
- const sum = (columnId, _leafRows, childRows) => {
1117
- // It's faster to just add the aggregations together instead of
1118
- // process leaf nodes individually
1119
- return childRows.reduce((sum, next) => {
1120
- const nextValue = next.getValue(columnId);
1121
- return sum + (typeof nextValue === 'number' ? nextValue : 0);
1122
- }, 0);
1123
- };
1124
- const min = (columnId, _leafRows, childRows) => {
1125
- let min;
1126
- childRows.forEach(row => {
1127
- const value = row.getValue(columnId);
1128
- if (value != null && (min > value || min === undefined && value >= value)) {
1129
- min = value;
1130
- }
1131
- });
1132
- return min;
1133
- };
1134
- const max = (columnId, _leafRows, childRows) => {
1135
- let max;
1136
- childRows.forEach(row => {
1137
- const value = row.getValue(columnId);
1138
- if (value != null && (max < value || max === undefined && value >= value)) {
1139
- max = value;
1140
- }
1141
- });
1142
- return max;
1143
- };
1144
- const extent = (columnId, _leafRows, childRows) => {
1145
- let min;
1146
- let max;
1147
- childRows.forEach(row => {
1148
- const value = row.getValue(columnId);
1149
- if (value != null) {
1150
- if (min === undefined) {
1151
- if (value >= value) min = max = value;
1152
- } else {
1153
- if (min > value) min = value;
1154
- if (max < value) max = value;
1155
- }
1156
- }
1157
- });
1158
- return [min, max];
1159
- };
1160
- const mean = (columnId, leafRows) => {
1161
- let count = 0;
1162
- let sum = 0;
1163
- leafRows.forEach(row => {
1164
- let value = row.getValue(columnId);
1165
- if (value != null && (value = +value) >= value) {
1166
- ++count, sum += value;
1167
- }
1168
- });
1169
- if (count) return sum / count;
1170
- return;
1171
- };
1172
- const median = (columnId, leafRows) => {
1173
- if (!leafRows.length) {
1174
- return;
1175
- }
1176
- const values = leafRows.map(row => row.getValue(columnId));
1177
- if (!isNumberArray(values)) {
1178
- return;
1179
- }
1180
- if (values.length === 1) {
1181
- return values[0];
1182
- }
1183
- const mid = Math.floor(values.length / 2);
1184
- const nums = values.sort((a, b) => a - b);
1185
- return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2;
1186
- };
1187
- const unique = (columnId, leafRows) => {
1188
- return Array.from(new Set(leafRows.map(d => d.getValue(columnId))).values());
1189
- };
1190
- const uniqueCount = (columnId, leafRows) => {
1191
- return new Set(leafRows.map(d => d.getValue(columnId))).size;
1192
- };
1193
- const count = (_columnId, leafRows) => {
1194
- return leafRows.length;
1195
- };
1196
- const aggregationFns = {
1197
- sum,
1198
- min,
1199
- max,
1200
- extent,
1201
- mean,
1202
- median,
1203
- unique,
1204
- uniqueCount,
1205
- count
1206
- };
1207
1572
 
1208
1573
  //
1209
1574
 
1210
- const Grouping = {
1211
- getDefaultColumnDef: () => {
1212
- return {
1213
- aggregatedCell: props => {
1214
- var _toString, _props$getValue;
1215
- return (_toString = (_props$getValue = props.getValue()) == null || _props$getValue.toString == null ? void 0 : _props$getValue.toString()) != null ? _toString : null;
1216
- },
1217
- aggregationFn: 'auto'
1218
- };
1219
- },
1575
+ const GlobalFiltering = {
1220
1576
  getInitialState: state => {
1221
1577
  return {
1222
- grouping: [],
1578
+ globalFilter: undefined,
1223
1579
  ...state
1224
1580
  };
1225
1581
  },
1226
1582
  getDefaultOptions: table => {
1227
1583
  return {
1228
- onGroupingChange: makeStateUpdater('grouping', table),
1229
- groupedColumnMode: 'reorder'
1584
+ onGlobalFilterChange: makeStateUpdater('globalFilter', table),
1585
+ globalFilterFn: 'auto',
1586
+ getColumnCanGlobalFilter: column => {
1587
+ var _table$getCoreRowMode;
1588
+ const value = (_table$getCoreRowMode = table.getCoreRowModel().flatRows[0]) == null || (_table$getCoreRowMode = _table$getCoreRowMode._getAllCellsByColumnId()[column.id]) == null ? void 0 : _table$getCoreRowMode.getValue();
1589
+ return typeof value === 'string' || typeof value === 'number';
1590
+ }
1230
1591
  };
1231
1592
  },
1232
1593
  createColumn: (column, table) => {
1233
- column.toggleGrouping = () => {
1234
- table.setGrouping(old => {
1235
- // Find any existing grouping for this column
1236
- if (old != null && old.includes(column.id)) {
1237
- return old.filter(d => d !== column.id);
1238
- }
1239
- return [...(old != null ? old : []), column.id];
1240
- });
1594
+ column.getCanGlobalFilter = () => {
1595
+ var _column$columnDef$ena, _table$options$enable, _table$options$enable2, _table$options$getCol;
1596
+ return ((_column$columnDef$ena = column.columnDef.enableGlobalFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableGlobalFilter) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && ((_table$options$getCol = table.options.getColumnCanGlobalFilter == null ? void 0 : table.options.getColumnCanGlobalFilter(column)) != null ? _table$options$getCol : true) && !!column.accessorFn;
1241
1597
  };
1242
- column.getCanGroup = () => {
1243
- var _ref, _ref2, _ref3, _column$columnDef$ena;
1244
- return (_ref = (_ref2 = (_ref3 = (_column$columnDef$ena = column.columnDef.enableGrouping) != null ? _column$columnDef$ena : true) != null ? _ref3 : table.options.enableGrouping) != null ? _ref2 : true) != null ? _ref : !!column.accessorFn;
1598
+ },
1599
+ createTable: table => {
1600
+ table.getGlobalAutoFilterFn = () => {
1601
+ return filterFns.includesString;
1245
1602
  };
1246
- column.getIsGrouped = () => {
1247
- var _table$getState$group;
1248
- return (_table$getState$group = table.getState().grouping) == null ? void 0 : _table$getState$group.includes(column.id);
1603
+ table.getGlobalFilterFn = () => {
1604
+ var _table$options$filter, _table$options$filter2;
1605
+ const {
1606
+ globalFilterFn: globalFilterFn
1607
+ } = table.options;
1608
+ return isFunction(globalFilterFn) ? globalFilterFn : globalFilterFn === 'auto' ? table.getGlobalAutoFilterFn() : (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[globalFilterFn]) != null ? _table$options$filter : filterFns[globalFilterFn];
1249
1609
  };
1250
- column.getGroupedIndex = () => {
1251
- var _table$getState$group2;
1252
- return (_table$getState$group2 = table.getState().grouping) == null ? void 0 : _table$getState$group2.indexOf(column.id);
1610
+ table.setGlobalFilter = updater => {
1611
+ table.options.onGlobalFilterChange == null || table.options.onGlobalFilterChange(updater);
1253
1612
  };
1254
- column.getToggleGroupingHandler = () => {
1255
- const canGroup = column.getCanGroup();
1256
- return () => {
1257
- if (!canGroup) return;
1258
- column.toggleGrouping();
1259
- };
1613
+ table.resetGlobalFilter = defaultState => {
1614
+ table.setGlobalFilter(defaultState ? undefined : table.initialState.globalFilter);
1260
1615
  };
1261
- column.getAutoAggregationFn = () => {
1262
- const firstRow = table.getCoreRowModel().flatRows[0];
1263
- const value = firstRow == null ? void 0 : firstRow.getValue(column.id);
1264
- if (typeof value === 'number') {
1265
- return aggregationFns.sum;
1266
- }
1267
- if (Object.prototype.toString.call(value) === '[object Date]') {
1268
- return aggregationFns.extent;
1269
- }
1616
+ }
1617
+ };
1618
+
1619
+ //
1620
+
1621
+ const RowExpanding = {
1622
+ getInitialState: state => {
1623
+ return {
1624
+ expanded: {},
1625
+ ...state
1270
1626
  };
1271
- column.getAggregationFn = () => {
1272
- var _table$options$aggreg, _table$options$aggreg2;
1273
- if (!column) {
1274
- throw new Error();
1275
- }
1276
- return isFunction(column.columnDef.aggregationFn) ? column.columnDef.aggregationFn : column.columnDef.aggregationFn === 'auto' ? column.getAutoAggregationFn() : (_table$options$aggreg = (_table$options$aggreg2 = table.options.aggregationFns) == null ? void 0 : _table$options$aggreg2[column.columnDef.aggregationFn]) != null ? _table$options$aggreg : aggregationFns[column.columnDef.aggregationFn];
1627
+ },
1628
+ getDefaultOptions: table => {
1629
+ return {
1630
+ onExpandedChange: makeStateUpdater('expanded', table),
1631
+ paginateExpandedRows: true
1277
1632
  };
1278
1633
  },
1279
1634
  createTable: table => {
1280
- table.setGrouping = updater => table.options.onGroupingChange == null ? void 0 : table.options.onGroupingChange(updater);
1281
- table.resetGrouping = defaultState => {
1282
- var _table$initialState$g, _table$initialState;
1283
- table.setGrouping(defaultState ? [] : (_table$initialState$g = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.grouping) != null ? _table$initialState$g : []);
1284
- };
1285
- table.getPreGroupedRowModel = () => table.getFilteredRowModel();
1286
- table.getGroupedRowModel = () => {
1287
- if (!table._getGroupedRowModel && table.options.getGroupedRowModel) {
1288
- table._getGroupedRowModel = table.options.getGroupedRowModel(table);
1635
+ let registered = false;
1636
+ let queued = false;
1637
+ table._autoResetExpanded = () => {
1638
+ var _ref, _table$options$autoRe;
1639
+ if (!registered) {
1640
+ table._queue(() => {
1641
+ registered = true;
1642
+ });
1643
+ return;
1289
1644
  }
1290
- if (table.options.manualGrouping || !table._getGroupedRowModel) {
1291
- return table.getPreGroupedRowModel();
1645
+ if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetExpanded) != null ? _ref : !table.options.manualExpanding) {
1646
+ if (queued) return;
1647
+ queued = true;
1648
+ table._queue(() => {
1649
+ table.resetExpanded();
1650
+ queued = false;
1651
+ });
1292
1652
  }
1293
- return table._getGroupedRowModel();
1294
1653
  };
1295
- },
1296
- createRow: (row, table) => {
1297
- row.getIsGrouped = () => !!row.groupingColumnId;
1298
- row.getGroupingValue = columnId => {
1299
- if (row._groupingValuesCache.hasOwnProperty(columnId)) {
1300
- return row._groupingValuesCache[columnId];
1654
+ table.setExpanded = updater => table.options.onExpandedChange == null ? void 0 : table.options.onExpandedChange(updater);
1655
+ table.toggleAllRowsExpanded = expanded => {
1656
+ if (expanded != null ? expanded : !table.getIsAllRowsExpanded()) {
1657
+ table.setExpanded(true);
1658
+ } else {
1659
+ table.setExpanded({});
1660
+ }
1661
+ };
1662
+ table.resetExpanded = defaultState => {
1663
+ var _table$initialState$e, _table$initialState;
1664
+ table.setExpanded(defaultState ? {} : (_table$initialState$e = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.expanded) != null ? _table$initialState$e : {});
1665
+ };
1666
+ table.getCanSomeRowsExpand = () => {
1667
+ return table.getPrePaginationRowModel().flatRows.some(row => row.getCanExpand());
1668
+ };
1669
+ table.getToggleAllRowsExpandedHandler = () => {
1670
+ return e => {
1671
+ e.persist == null || e.persist();
1672
+ table.toggleAllRowsExpanded();
1673
+ };
1674
+ };
1675
+ table.getIsSomeRowsExpanded = () => {
1676
+ const expanded = table.getState().expanded;
1677
+ return expanded === true || Object.values(expanded).some(Boolean);
1678
+ };
1679
+ table.getIsAllRowsExpanded = () => {
1680
+ const expanded = table.getState().expanded;
1681
+
1682
+ // If expanded is true, save some cycles and return true
1683
+ if (typeof expanded === 'boolean') {
1684
+ return expanded === true;
1301
1685
  }
1302
- const column = table.getColumn(columnId);
1303
- if (!(column != null && column.columnDef.getGroupingValue)) {
1304
- return row.getValue(columnId);
1686
+ if (!Object.keys(expanded).length) {
1687
+ return false;
1305
1688
  }
1306
- row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(row.original);
1307
- return row._groupingValuesCache[columnId];
1308
- };
1309
- row._groupingValuesCache = {};
1310
- },
1311
- createCell: (cell, column, row, table) => {
1312
- cell.getIsGrouped = () => column.getIsGrouped() && column.id === row.groupingColumnId;
1313
- cell.getIsPlaceholder = () => !cell.getIsGrouped() && column.getIsGrouped();
1314
- cell.getIsAggregated = () => {
1315
- var _row$subRows;
1316
- return !cell.getIsGrouped() && !cell.getIsPlaceholder() && !!((_row$subRows = row.subRows) != null && _row$subRows.length);
1317
- };
1318
- }
1319
- };
1320
- function orderColumns(leafColumns, grouping, groupedColumnMode) {
1321
- if (!(grouping != null && grouping.length) || !groupedColumnMode) {
1322
- return leafColumns;
1323
- }
1324
- const nonGroupingColumns = leafColumns.filter(col => !grouping.includes(col.id));
1325
- if (groupedColumnMode === 'remove') {
1326
- return nonGroupingColumns;
1327
- }
1328
- const groupingColumns = grouping.map(g => leafColumns.find(col => col.id === g)).filter(Boolean);
1329
- return [...groupingColumns, ...nonGroupingColumns];
1330
- }
1331
1689
 
1332
- //
1690
+ // If any row is not expanded, return false
1691
+ if (table.getRowModel().flatRows.some(row => !row.getIsExpanded())) {
1692
+ return false;
1693
+ }
1333
1694
 
1334
- const Ordering = {
1335
- getInitialState: state => {
1336
- return {
1337
- columnOrder: [],
1338
- ...state
1695
+ // They must all be expanded :shrug:
1696
+ return true;
1339
1697
  };
1340
- },
1341
- getDefaultOptions: table => {
1342
- return {
1343
- onColumnOrderChange: makeStateUpdater('columnOrder', table)
1698
+ table.getExpandedDepth = () => {
1699
+ let maxDepth = 0;
1700
+ const rowIds = table.getState().expanded === true ? Object.keys(table.getRowModel().rowsById) : Object.keys(table.getState().expanded);
1701
+ rowIds.forEach(id => {
1702
+ const splitId = id.split('.');
1703
+ maxDepth = Math.max(maxDepth, splitId.length);
1704
+ });
1705
+ return maxDepth;
1706
+ };
1707
+ table.getPreExpandedRowModel = () => table.getSortedRowModel();
1708
+ table.getExpandedRowModel = () => {
1709
+ if (!table._getExpandedRowModel && table.options.getExpandedRowModel) {
1710
+ table._getExpandedRowModel = table.options.getExpandedRowModel(table);
1711
+ }
1712
+ if (table.options.manualExpanding || !table._getExpandedRowModel) {
1713
+ return table.getPreExpandedRowModel();
1714
+ }
1715
+ return table._getExpandedRowModel();
1344
1716
  };
1345
1717
  },
1346
- createColumn: (column, table) => {
1347
- column.getIndex = memo(position => [_getVisibleLeafColumns(table, position)], columns => columns.findIndex(d => d.id === column.id), getMemoOptions(table.options, 'debugColumns', 'getIndex'));
1348
- column.getIsFirstColumn = position => {
1349
- var _columns$;
1350
- const columns = _getVisibleLeafColumns(table, position);
1351
- return ((_columns$ = columns[0]) == null ? void 0 : _columns$.id) === column.id;
1718
+ createRow: (row, table) => {
1719
+ row.toggleExpanded = expanded => {
1720
+ table.setExpanded(old => {
1721
+ var _expanded;
1722
+ const exists = old === true ? true : !!(old != null && old[row.id]);
1723
+ let oldExpanded = {};
1724
+ if (old === true) {
1725
+ Object.keys(table.getRowModel().rowsById).forEach(rowId => {
1726
+ oldExpanded[rowId] = true;
1727
+ });
1728
+ } else {
1729
+ oldExpanded = old;
1730
+ }
1731
+ expanded = (_expanded = expanded) != null ? _expanded : !exists;
1732
+ if (!exists && expanded) {
1733
+ return {
1734
+ ...oldExpanded,
1735
+ [row.id]: true
1736
+ };
1737
+ }
1738
+ if (exists && !expanded) {
1739
+ const {
1740
+ [row.id]: _,
1741
+ ...rest
1742
+ } = oldExpanded;
1743
+ return rest;
1744
+ }
1745
+ return old;
1746
+ });
1352
1747
  };
1353
- column.getIsLastColumn = position => {
1354
- var _columns;
1355
- const columns = _getVisibleLeafColumns(table, position);
1356
- return ((_columns = columns[columns.length - 1]) == null ? void 0 : _columns.id) === column.id;
1748
+ row.getIsExpanded = () => {
1749
+ var _table$options$getIsR;
1750
+ const expanded = table.getState().expanded;
1751
+ return !!((_table$options$getIsR = table.options.getIsRowExpanded == null ? void 0 : table.options.getIsRowExpanded(row)) != null ? _table$options$getIsR : expanded === true || (expanded == null ? void 0 : expanded[row.id]));
1357
1752
  };
1358
- },
1359
- createTable: table => {
1360
- table.setColumnOrder = updater => table.options.onColumnOrderChange == null ? void 0 : table.options.onColumnOrderChange(updater);
1361
- table.resetColumnOrder = defaultState => {
1362
- var _table$initialState$c;
1363
- table.setColumnOrder(defaultState ? [] : (_table$initialState$c = table.initialState.columnOrder) != null ? _table$initialState$c : []);
1753
+ row.getCanExpand = () => {
1754
+ var _table$options$getRow, _table$options$enable, _row$subRows;
1755
+ return (_table$options$getRow = table.options.getRowCanExpand == null ? void 0 : table.options.getRowCanExpand(row)) != null ? _table$options$getRow : ((_table$options$enable = table.options.enableExpanding) != null ? _table$options$enable : true) && !!((_row$subRows = row.subRows) != null && _row$subRows.length);
1364
1756
  };
1365
- table._getOrderColumnsFn = memo(() => [table.getState().columnOrder, table.getState().grouping, table.options.groupedColumnMode], (columnOrder, grouping, groupedColumnMode) => columns => {
1366
- // Sort grouped columns to the start of the column list
1367
- // before the headers are built
1368
- let orderedColumns = [];
1369
-
1370
- // If there is no order, return the normal columns
1371
- if (!(columnOrder != null && columnOrder.length)) {
1372
- orderedColumns = columns;
1373
- } else {
1374
- const columnOrderCopy = [...columnOrder];
1375
-
1376
- // If there is an order, make a copy of the columns
1377
- const columnsCopy = [...columns];
1378
-
1379
- // And make a new ordered array of the columns
1380
-
1381
- // Loop over the columns and place them in order into the new array
1382
- while (columnsCopy.length && columnOrderCopy.length) {
1383
- const targetColumnId = columnOrderCopy.shift();
1384
- const foundIndex = columnsCopy.findIndex(d => d.id === targetColumnId);
1385
- if (foundIndex > -1) {
1386
- orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]);
1387
- }
1388
- }
1389
-
1390
- // If there are any columns left, add them to the end
1391
- orderedColumns = [...orderedColumns, ...columnsCopy];
1757
+ row.getIsAllParentsExpanded = () => {
1758
+ let isFullyExpanded = true;
1759
+ let currentRow = row;
1760
+ while (isFullyExpanded && currentRow.parentId) {
1761
+ currentRow = table.getRow(currentRow.parentId, true);
1762
+ isFullyExpanded = currentRow.getIsExpanded();
1392
1763
  }
1393
- return orderColumns(orderedColumns, grouping, groupedColumnMode);
1394
- }, getMemoOptions(table.options, 'debugTable', '_getOrderColumnsFn'));
1764
+ return isFullyExpanded;
1765
+ };
1766
+ row.getToggleExpandedHandler = () => {
1767
+ const canExpand = row.getCanExpand();
1768
+ return () => {
1769
+ if (!canExpand) return;
1770
+ row.toggleExpanded();
1771
+ };
1772
+ };
1395
1773
  }
1396
1774
  };
1397
1775
 
@@ -1403,7 +1781,7 @@ const getDefaultPaginationState = () => ({
1403
1781
  pageIndex: defaultPageIndex,
1404
1782
  pageSize: defaultPageSize
1405
1783
  });
1406
- const Pagination = {
1784
+ const RowPagination = {
1407
1785
  getInitialState: state => {
1408
1786
  return {
1409
1787
  ...state,
@@ -1550,88 +1928,34 @@ const Pagination = {
1550
1928
 
1551
1929
  //
1552
1930
 
1553
- const getDefaultColumnPinningState = () => ({
1554
- left: [],
1555
- right: []
1556
- });
1557
1931
  const getDefaultRowPinningState = () => ({
1558
1932
  top: [],
1559
1933
  bottom: []
1560
1934
  });
1561
- const Pinning = {
1935
+ const RowPinning = {
1562
1936
  getInitialState: state => {
1563
1937
  return {
1564
- columnPinning: getDefaultColumnPinningState(),
1565
1938
  rowPinning: getDefaultRowPinningState(),
1566
1939
  ...state
1567
1940
  };
1568
1941
  },
1569
1942
  getDefaultOptions: table => {
1570
1943
  return {
1571
- onColumnPinningChange: makeStateUpdater('columnPinning', table),
1572
1944
  onRowPinningChange: makeStateUpdater('rowPinning', table)
1573
1945
  };
1574
1946
  },
1575
- createColumn: (column, table) => {
1576
- column.pin = position => {
1577
- const columnIds = column.getLeafColumns().map(d => d.id).filter(Boolean);
1578
- table.setColumnPinning(old => {
1579
- var _old$left3, _old$right3;
1580
- if (position === 'right') {
1581
- var _old$left, _old$right;
1582
- return {
1583
- left: ((_old$left = old == null ? void 0 : old.left) != null ? _old$left : []).filter(d => !(columnIds != null && columnIds.includes(d))),
1584
- right: [...((_old$right = old == null ? void 0 : old.right) != null ? _old$right : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds]
1585
- };
1586
- }
1587
- if (position === 'left') {
1588
- var _old$left2, _old$right2;
1589
- return {
1590
- left: [...((_old$left2 = old == null ? void 0 : old.left) != null ? _old$left2 : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds],
1591
- right: ((_old$right2 = old == null ? void 0 : old.right) != null ? _old$right2 : []).filter(d => !(columnIds != null && columnIds.includes(d)))
1592
- };
1593
- }
1594
- return {
1595
- left: ((_old$left3 = old == null ? void 0 : old.left) != null ? _old$left3 : []).filter(d => !(columnIds != null && columnIds.includes(d))),
1596
- right: ((_old$right3 = old == null ? void 0 : old.right) != null ? _old$right3 : []).filter(d => !(columnIds != null && columnIds.includes(d)))
1597
- };
1598
- });
1599
- };
1600
- column.getCanPin = () => {
1601
- const leafColumns = column.getLeafColumns();
1602
- return leafColumns.some(d => {
1603
- var _d$columnDef$enablePi, _ref, _table$options$enable;
1604
- return ((_d$columnDef$enablePi = d.columnDef.enablePinning) != null ? _d$columnDef$enablePi : true) && ((_ref = (_table$options$enable = table.options.enableColumnPinning) != null ? _table$options$enable : table.options.enablePinning) != null ? _ref : true);
1605
- });
1606
- };
1607
- column.getIsPinned = () => {
1608
- const leafColumnIds = column.getLeafColumns().map(d => d.id);
1609
- const {
1610
- left,
1611
- right
1612
- } = table.getState().columnPinning;
1613
- const isLeft = leafColumnIds.some(d => left == null ? void 0 : left.includes(d));
1614
- const isRight = leafColumnIds.some(d => right == null ? void 0 : right.includes(d));
1615
- return isLeft ? 'left' : isRight ? 'right' : false;
1616
- };
1617
- column.getPinnedIndex = () => {
1618
- var _table$getState$colum, _table$getState$colum2;
1619
- const position = column.getIsPinned();
1620
- return position ? (_table$getState$colum = (_table$getState$colum2 = table.getState().columnPinning) == null || (_table$getState$colum2 = _table$getState$colum2[position]) == null ? void 0 : _table$getState$colum2.indexOf(column.id)) != null ? _table$getState$colum : -1 : 0;
1621
- };
1622
- },
1623
1947
  createRow: (row, table) => {
1624
1948
  row.pin = (position, includeLeafRows, includeParentRows) => {
1625
- const leafRowIds = includeLeafRows ? row.getLeafRows().map(_ref2 => {
1949
+ const leafRowIds = includeLeafRows ? row.getLeafRows().map(_ref => {
1626
1950
  let {
1627
1951
  id
1628
- } = _ref2;
1952
+ } = _ref;
1629
1953
  return id;
1630
1954
  }) : [];
1631
- const parentRowIds = includeParentRows ? row.getParentRows().map(_ref3 => {
1955
+ const parentRowIds = includeParentRows ? row.getParentRows().map(_ref2 => {
1632
1956
  let {
1633
1957
  id
1634
- } = _ref3;
1958
+ } = _ref2;
1635
1959
  return id;
1636
1960
  }) : [];
1637
1961
  const rowIds = new Set([...parentRowIds, row.id, ...leafRowIds]);
@@ -1658,7 +1982,7 @@ const Pinning = {
1658
1982
  });
1659
1983
  };
1660
1984
  row.getCanPin = () => {
1661
- var _ref4;
1985
+ var _ref3;
1662
1986
  const {
1663
1987
  enableRowPinning,
1664
1988
  enablePinning
@@ -1666,7 +1990,7 @@ const Pinning = {
1666
1990
  if (typeof enableRowPinning === 'function') {
1667
1991
  return enableRowPinning(row);
1668
1992
  }
1669
- return (_ref4 = enableRowPinning != null ? enableRowPinning : enablePinning) != null ? _ref4 : true;
1993
+ return (_ref3 = enableRowPinning != null ? enableRowPinning : enablePinning) != null ? _ref3 : true;
1670
1994
  };
1671
1995
  row.getIsPinned = () => {
1672
1996
  const rowIds = [row.id];
@@ -1681,72 +2005,30 @@ const Pinning = {
1681
2005
  row.getPinnedIndex = () => {
1682
2006
  var _table$_getPinnedRows, _visiblePinnedRowIds$;
1683
2007
  const position = row.getIsPinned();
1684
- if (!position) return -1;
1685
- const visiblePinnedRowIds = (_table$_getPinnedRows = table._getPinnedRows(position)) == null ? void 0 : _table$_getPinnedRows.map(_ref5 => {
1686
- let {
1687
- id
1688
- } = _ref5;
1689
- return id;
1690
- });
1691
- return (_visiblePinnedRowIds$ = visiblePinnedRowIds == null ? void 0 : visiblePinnedRowIds.indexOf(row.id)) != null ? _visiblePinnedRowIds$ : -1;
1692
- };
1693
- row.getCenterVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allCells, left, right) => {
1694
- const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];
1695
- return allCells.filter(d => !leftAndRight.includes(d.column.id));
1696
- }, getMemoOptions(table.options, 'debugRows', 'getCenterVisibleCells'));
1697
- row.getLeftVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left], (allCells, left) => {
1698
- const cells = (left != null ? left : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({
1699
- ...d,
1700
- position: 'left'
1701
- }));
1702
- return cells;
1703
- }, getMemoOptions(table.options, 'debugRows', 'getLeftVisibleCells'));
1704
- row.getRightVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.right], (allCells, right) => {
1705
- const cells = (right != null ? right : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({
1706
- ...d,
1707
- position: 'right'
1708
- }));
1709
- return cells;
1710
- }, getMemoOptions(table.options, 'debugRows', 'getRightVisibleCells'));
1711
- },
1712
- createTable: table => {
1713
- table.setColumnPinning = updater => table.options.onColumnPinningChange == null ? void 0 : table.options.onColumnPinningChange(updater);
1714
- table.resetColumnPinning = defaultState => {
1715
- var _table$initialState$c, _table$initialState;
1716
- return table.setColumnPinning(defaultState ? getDefaultColumnPinningState() : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnPinning) != null ? _table$initialState$c : getDefaultColumnPinningState());
1717
- };
1718
- table.getIsSomeColumnsPinned = position => {
1719
- var _pinningState$positio;
1720
- const pinningState = table.getState().columnPinning;
1721
- if (!position) {
1722
- var _pinningState$left, _pinningState$right;
1723
- return Boolean(((_pinningState$left = pinningState.left) == null ? void 0 : _pinningState$left.length) || ((_pinningState$right = pinningState.right) == null ? void 0 : _pinningState$right.length));
1724
- }
1725
- return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);
2008
+ if (!position) return -1;
2009
+ const visiblePinnedRowIds = (_table$_getPinnedRows = table._getPinnedRows(position)) == null ? void 0 : _table$_getPinnedRows.map(_ref4 => {
2010
+ let {
2011
+ id
2012
+ } = _ref4;
2013
+ return id;
2014
+ });
2015
+ return (_visiblePinnedRowIds$ = visiblePinnedRowIds == null ? void 0 : visiblePinnedRowIds.indexOf(row.id)) != null ? _visiblePinnedRowIds$ : -1;
1726
2016
  };
1727
- table.getLeftLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left], (allColumns, left) => {
1728
- return (left != null ? left : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);
1729
- }, getMemoOptions(table.options, 'debugColumns', 'getLeftLeafColumns'));
1730
- table.getRightLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.right], (allColumns, right) => {
1731
- return (right != null ? right : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);
1732
- }, getMemoOptions(table.options, 'debugColumns', 'getRightLeafColumns'));
1733
- table.getCenterLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, left, right) => {
1734
- const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];
1735
- return allColumns.filter(d => !leftAndRight.includes(d.id));
1736
- }, getMemoOptions(table.options, 'debugColumns', 'getCenterLeafColumns'));
2017
+ },
2018
+ createTable: table => {
1737
2019
  table.setRowPinning = updater => table.options.onRowPinningChange == null ? void 0 : table.options.onRowPinningChange(updater);
1738
2020
  table.resetRowPinning = defaultState => {
1739
- var _table$initialState$r, _table$initialState2;
1740
- return table.setRowPinning(defaultState ? getDefaultRowPinningState() : (_table$initialState$r = (_table$initialState2 = table.initialState) == null ? void 0 : _table$initialState2.rowPinning) != null ? _table$initialState$r : getDefaultRowPinningState());
2021
+ var _table$initialState$r, _table$initialState;
2022
+ return table.setRowPinning(defaultState ? getDefaultRowPinningState() : (_table$initialState$r = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.rowPinning) != null ? _table$initialState$r : getDefaultRowPinningState());
1741
2023
  };
1742
2024
  table.getIsSomeRowsPinned = position => {
1743
- var _pinningState$positio2;
2025
+ var _pinningState$positio;
1744
2026
  const pinningState = table.getState().rowPinning;
1745
2027
  if (!position) {
1746
2028
  var _pinningState$top, _pinningState$bottom;
1747
2029
  return Boolean(((_pinningState$top = pinningState.top) == null ? void 0 : _pinningState$top.length) || ((_pinningState$bottom = pinningState.bottom) == null ? void 0 : _pinningState$bottom.length));
1748
2030
  }
1749
- return Boolean((_pinningState$positio2 = pinningState[position]) == null ? void 0 : _pinningState$positio2.length);
2031
+ return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);
1750
2032
  };
1751
2033
  table._getPinnedRows = memo(position => [table.getRowModel().rows, table.getState().rowPinning[position], position], (visibleRows, pinnedRowIds, position) => {
1752
2034
  var _table$options$keepPi;
@@ -2252,7 +2534,7 @@ const sortingFns = {
2252
2534
 
2253
2535
  //
2254
2536
 
2255
- const Sorting = {
2537
+ const RowSorting = {
2256
2538
  getInitialState: state => {
2257
2539
  return {
2258
2540
  sorting: [],
@@ -2459,99 +2741,24 @@ const Sorting = {
2459
2741
  }
2460
2742
  };
2461
2743
 
2462
- //
2463
-
2464
- const Visibility = {
2465
- getInitialState: state => {
2466
- return {
2467
- columnVisibility: {},
2468
- ...state
2469
- };
2470
- },
2471
- getDefaultOptions: table => {
2472
- return {
2473
- onColumnVisibilityChange: makeStateUpdater('columnVisibility', table)
2474
- };
2475
- },
2476
- createColumn: (column, table) => {
2477
- column.toggleVisibility = value => {
2478
- if (column.getCanHide()) {
2479
- table.setColumnVisibility(old => ({
2480
- ...old,
2481
- [column.id]: value != null ? value : !column.getIsVisible()
2482
- }));
2483
- }
2484
- };
2485
- column.getIsVisible = () => {
2486
- var _ref, _table$getState$colum;
2487
- const childColumns = column.columns;
2488
- return (_ref = childColumns.length ? childColumns.some(c => c.getIsVisible()) : (_table$getState$colum = table.getState().columnVisibility) == null ? void 0 : _table$getState$colum[column.id]) != null ? _ref : true;
2489
- };
2490
- column.getCanHide = () => {
2491
- var _column$columnDef$ena, _table$options$enable;
2492
- return ((_column$columnDef$ena = column.columnDef.enableHiding) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableHiding) != null ? _table$options$enable : true);
2493
- };
2494
- column.getToggleVisibilityHandler = () => {
2495
- return e => {
2496
- column.toggleVisibility == null || column.toggleVisibility(e.target.checked);
2497
- };
2498
- };
2499
- },
2500
- createRow: (row, table) => {
2501
- row._getAllVisibleCells = memo(() => [row.getAllCells(), table.getState().columnVisibility], cells => {
2502
- return cells.filter(cell => cell.column.getIsVisible());
2503
- }, getMemoOptions(table.options, 'debugRows', '_getAllVisibleCells'));
2504
- row.getVisibleCells = memo(() => [row.getLeftVisibleCells(), row.getCenterVisibleCells(), row.getRightVisibleCells()], (left, center, right) => [...left, ...center, ...right], getMemoOptions(table.options, 'debugRows', 'getVisibleCells'));
2505
- },
2506
- createTable: table => {
2507
- const makeVisibleColumnsMethod = (key, getColumns) => {
2508
- return memo(() => [getColumns(), getColumns().filter(d => d.getIsVisible()).map(d => d.id).join('_')], columns => {
2509
- return columns.filter(d => d.getIsVisible == null ? void 0 : d.getIsVisible());
2510
- }, getMemoOptions(table.options, 'debugColumns', key));
2511
- };
2512
- table.getVisibleFlatColumns = makeVisibleColumnsMethod('getVisibleFlatColumns', () => table.getAllFlatColumns());
2513
- table.getVisibleLeafColumns = makeVisibleColumnsMethod('getVisibleLeafColumns', () => table.getAllLeafColumns());
2514
- table.getLeftVisibleLeafColumns = makeVisibleColumnsMethod('getLeftVisibleLeafColumns', () => table.getLeftLeafColumns());
2515
- table.getRightVisibleLeafColumns = makeVisibleColumnsMethod('getRightVisibleLeafColumns', () => table.getRightLeafColumns());
2516
- table.getCenterVisibleLeafColumns = makeVisibleColumnsMethod('getCenterVisibleLeafColumns', () => table.getCenterLeafColumns());
2517
- table.setColumnVisibility = updater => table.options.onColumnVisibilityChange == null ? void 0 : table.options.onColumnVisibilityChange(updater);
2518
- table.resetColumnVisibility = defaultState => {
2519
- var _table$initialState$c;
2520
- table.setColumnVisibility(defaultState ? {} : (_table$initialState$c = table.initialState.columnVisibility) != null ? _table$initialState$c : {});
2521
- };
2522
- table.toggleAllColumnsVisible = value => {
2523
- var _value;
2524
- value = (_value = value) != null ? _value : !table.getIsAllColumnsVisible();
2525
- table.setColumnVisibility(table.getAllLeafColumns().reduce((obj, column) => ({
2526
- ...obj,
2527
- [column.id]: !value ? !(column.getCanHide != null && column.getCanHide()) : value
2528
- }), {}));
2529
- };
2530
- table.getIsAllColumnsVisible = () => !table.getAllLeafColumns().some(column => !(column.getIsVisible != null && column.getIsVisible()));
2531
- table.getIsSomeColumnsVisible = () => table.getAllLeafColumns().some(column => column.getIsVisible == null ? void 0 : column.getIsVisible());
2532
- table.getToggleAllColumnsVisibilityHandler = () => {
2533
- return e => {
2534
- var _target;
2535
- table.toggleAllColumnsVisible((_target = e.target) == null ? void 0 : _target.checked);
2536
- };
2537
- };
2538
- }
2539
- };
2540
- function _getVisibleLeafColumns(table, position) {
2541
- return !position ? table.getVisibleLeafColumns() : position === 'center' ? table.getCenterVisibleLeafColumns() : position === 'left' ? table.getLeftVisibleLeafColumns() : table.getRightVisibleLeafColumns();
2542
- }
2543
-
2544
- const features = [Headers, Visibility, Ordering, Pinning, Filters, Sorting, Grouping, Expanding, Pagination, RowSelection, ColumnSizing];
2744
+ const builtInFeatures = [Headers, ColumnVisibility, ColumnOrdering, ColumnPinning, ColumnFaceting, ColumnFiltering, GlobalFaceting,
2745
+ //depends on ColumnFaceting
2746
+ GlobalFiltering,
2747
+ //depends on ColumnFiltering
2748
+ RowSorting, ColumnGrouping,
2749
+ //depends on RowSorting
2750
+ RowExpanding, RowPagination, RowPinning, RowSelection, ColumnSizing];
2545
2751
 
2546
2752
  //
2547
2753
 
2548
2754
  function createTable(options) {
2549
- var _options$initialState;
2550
- if (options.debugAll || options.debugTable) {
2755
+ var _options$_features, _options$initialState;
2756
+ if (process.env.NODE_ENV !== 'production' && (options.debugAll || options.debugTable)) {
2551
2757
  console.info('Creating Table Instance...');
2552
2758
  }
2759
+ const _features = [...builtInFeatures, ...((_options$_features = options._features) != null ? _options$_features : [])];
2553
2760
  let table = {
2554
- _features: features
2761
+ _features
2555
2762
  };
2556
2763
  const defaultOptions = table._features.reduce((obj, feature) => {
2557
2764
  return Object.assign(obj, feature.getDefaultOptions == null ? void 0 : feature.getDefaultOptions(table));
@@ -2577,7 +2784,7 @@ function createTable(options) {
2577
2784
  const queued = [];
2578
2785
  let queuedTimeout = false;
2579
2786
  const coreInstance = {
2580
- _features: features,
2787
+ _features,
2581
2788
  options: {
2582
2789
  ...defaultOptions,
2583
2790
  ...options
@@ -2641,232 +2848,77 @@ function createTable(options) {
2641
2848
  throw new Error();
2642
2849
  }
2643
2850
  }
2644
- return row;
2645
- },
2646
- _getDefaultColumnDef: memo(() => [table.options.defaultColumn], defaultColumn => {
2647
- var _defaultColumn;
2648
- defaultColumn = (_defaultColumn = defaultColumn) != null ? _defaultColumn : {};
2649
- return {
2650
- header: props => {
2651
- const resolvedColumnDef = props.header.column.columnDef;
2652
- if (resolvedColumnDef.accessorKey) {
2653
- return resolvedColumnDef.accessorKey;
2654
- }
2655
- if (resolvedColumnDef.accessorFn) {
2656
- return resolvedColumnDef.id;
2657
- }
2658
- return null;
2659
- },
2660
- // footer: props => props.header.column.id,
2661
- cell: props => {
2662
- var _props$renderValue$to, _props$renderValue;
2663
- return (_props$renderValue$to = (_props$renderValue = props.renderValue()) == null || _props$renderValue.toString == null ? void 0 : _props$renderValue.toString()) != null ? _props$renderValue$to : null;
2664
- },
2665
- ...table._features.reduce((obj, feature) => {
2666
- return Object.assign(obj, feature.getDefaultColumnDef == null ? void 0 : feature.getDefaultColumnDef());
2667
- }, {}),
2668
- ...defaultColumn
2669
- };
2670
- }, getMemoOptions(options, 'debugColumns', '_getDefaultColumnDef')),
2671
- _getColumnDefs: () => table.options.columns,
2672
- getAllColumns: memo(() => [table._getColumnDefs()], columnDefs => {
2673
- const recurseColumns = function (columnDefs, parent, depth) {
2674
- if (depth === void 0) {
2675
- depth = 0;
2676
- }
2677
- return columnDefs.map(columnDef => {
2678
- const column = createColumn(table, columnDef, depth, parent);
2679
- const groupingColumnDef = columnDef;
2680
- column.columns = groupingColumnDef.columns ? recurseColumns(groupingColumnDef.columns, column, depth + 1) : [];
2681
- return column;
2682
- });
2683
- };
2684
- return recurseColumns(columnDefs);
2685
- }, getMemoOptions(options, 'debugColumns', 'getAllColumns')),
2686
- getAllFlatColumns: memo(() => [table.getAllColumns()], allColumns => {
2687
- return allColumns.flatMap(column => {
2688
- return column.getFlatColumns();
2689
- });
2690
- }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumns')),
2691
- _getAllFlatColumnsById: memo(() => [table.getAllFlatColumns()], flatColumns => {
2692
- return flatColumns.reduce((acc, column) => {
2693
- acc[column.id] = column;
2694
- return acc;
2695
- }, {});
2696
- }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumnsById')),
2697
- getAllLeafColumns: memo(() => [table.getAllColumns(), table._getOrderColumnsFn()], (allColumns, orderColumns) => {
2698
- let leafColumns = allColumns.flatMap(column => column.getLeafColumns());
2699
- return orderColumns(leafColumns);
2700
- }, getMemoOptions(options, 'debugColumns', 'getAllLeafColumns')),
2701
- getColumn: columnId => {
2702
- const column = table._getAllFlatColumnsById()[columnId];
2703
- if (process.env.NODE_ENV !== 'production' && !column) {
2704
- console.error(`[Table] Column with id '${columnId}' does not exist.`);
2705
- }
2706
- return column;
2707
- }
2708
- };
2709
- Object.assign(table, coreInstance);
2710
- for (let index = 0; index < table._features.length; index++) {
2711
- const feature = table._features[index];
2712
- feature == null || feature.createTable == null || feature.createTable(table);
2713
- }
2714
- return table;
2715
- }
2716
-
2717
- function createCell(table, row, column, columnId) {
2718
- const getRenderValue = () => {
2719
- var _cell$getValue;
2720
- return (_cell$getValue = cell.getValue()) != null ? _cell$getValue : table.options.renderFallbackValue;
2721
- };
2722
- const cell = {
2723
- id: `${row.id}_${column.id}`,
2724
- row,
2725
- column,
2726
- getValue: () => row.getValue(columnId),
2727
- renderValue: getRenderValue,
2728
- getContext: memo(() => [table, column, row, cell], (table, column, row, cell) => ({
2729
- table,
2730
- column,
2731
- row,
2732
- cell: cell,
2733
- getValue: cell.getValue,
2734
- renderValue: cell.renderValue
2735
- }), getMemoOptions(table.options, 'debugCells', 'cell.getContext'))
2736
- };
2737
- table._features.forEach(feature => {
2738
- feature.createCell == null || feature.createCell(cell, column, row, table);
2739
- }, {});
2740
- return cell;
2741
- }
2742
-
2743
- const createRow = (table, id, original, rowIndex, depth, subRows, parentId) => {
2744
- let row = {
2745
- id,
2746
- index: rowIndex,
2747
- original,
2748
- depth,
2749
- parentId,
2750
- _valuesCache: {},
2751
- _uniqueValuesCache: {},
2752
- getValue: columnId => {
2753
- if (row._valuesCache.hasOwnProperty(columnId)) {
2754
- return row._valuesCache[columnId];
2755
- }
2756
- const column = table.getColumn(columnId);
2757
- if (!(column != null && column.accessorFn)) {
2758
- return undefined;
2759
- }
2760
- row._valuesCache[columnId] = column.accessorFn(row.original, rowIndex);
2761
- return row._valuesCache[columnId];
2762
- },
2763
- getUniqueValues: columnId => {
2764
- if (row._uniqueValuesCache.hasOwnProperty(columnId)) {
2765
- return row._uniqueValuesCache[columnId];
2766
- }
2767
- const column = table.getColumn(columnId);
2768
- if (!(column != null && column.accessorFn)) {
2769
- return undefined;
2770
- }
2771
- if (!column.columnDef.getUniqueValues) {
2772
- row._uniqueValuesCache[columnId] = [row.getValue(columnId)];
2773
- return row._uniqueValuesCache[columnId];
2774
- }
2775
- row._uniqueValuesCache[columnId] = column.columnDef.getUniqueValues(row.original, rowIndex);
2776
- return row._uniqueValuesCache[columnId];
2777
- },
2778
- renderValue: columnId => {
2779
- var _row$getValue;
2780
- return (_row$getValue = row.getValue(columnId)) != null ? _row$getValue : table.options.renderFallbackValue;
2781
- },
2782
- subRows: subRows != null ? subRows : [],
2783
- getLeafRows: () => flattenBy(row.subRows, d => d.subRows),
2784
- getParentRow: () => row.parentId ? table.getRow(row.parentId, true) : undefined,
2785
- getParentRows: () => {
2786
- let parentRows = [];
2787
- let currentRow = row;
2788
- while (true) {
2789
- const parentRow = currentRow.getParentRow();
2790
- if (!parentRow) break;
2791
- parentRows.push(parentRow);
2792
- currentRow = parentRow;
2793
- }
2794
- return parentRows.reverse();
2795
- },
2796
- getAllCells: memo(() => [table.getAllLeafColumns()], leafColumns => {
2797
- return leafColumns.map(column => {
2798
- return createCell(table, row, column, column.id);
2851
+ return row;
2852
+ },
2853
+ _getDefaultColumnDef: memo(() => [table.options.defaultColumn], defaultColumn => {
2854
+ var _defaultColumn;
2855
+ defaultColumn = (_defaultColumn = defaultColumn) != null ? _defaultColumn : {};
2856
+ return {
2857
+ header: props => {
2858
+ const resolvedColumnDef = props.header.column.columnDef;
2859
+ if (resolvedColumnDef.accessorKey) {
2860
+ return resolvedColumnDef.accessorKey;
2861
+ }
2862
+ if (resolvedColumnDef.accessorFn) {
2863
+ return resolvedColumnDef.id;
2864
+ }
2865
+ return null;
2866
+ },
2867
+ // footer: props => props.header.column.id,
2868
+ cell: props => {
2869
+ var _props$renderValue$to, _props$renderValue;
2870
+ return (_props$renderValue$to = (_props$renderValue = props.renderValue()) == null || _props$renderValue.toString == null ? void 0 : _props$renderValue.toString()) != null ? _props$renderValue$to : null;
2871
+ },
2872
+ ...table._features.reduce((obj, feature) => {
2873
+ return Object.assign(obj, feature.getDefaultColumnDef == null ? void 0 : feature.getDefaultColumnDef());
2874
+ }, {}),
2875
+ ...defaultColumn
2876
+ };
2877
+ }, getMemoOptions(options, 'debugColumns', '_getDefaultColumnDef')),
2878
+ _getColumnDefs: () => table.options.columns,
2879
+ getAllColumns: memo(() => [table._getColumnDefs()], columnDefs => {
2880
+ const recurseColumns = function (columnDefs, parent, depth) {
2881
+ if (depth === void 0) {
2882
+ depth = 0;
2883
+ }
2884
+ return columnDefs.map(columnDef => {
2885
+ const column = createColumn(table, columnDef, depth, parent);
2886
+ const groupingColumnDef = columnDef;
2887
+ column.columns = groupingColumnDef.columns ? recurseColumns(groupingColumnDef.columns, column, depth + 1) : [];
2888
+ return column;
2889
+ });
2890
+ };
2891
+ return recurseColumns(columnDefs);
2892
+ }, getMemoOptions(options, 'debugColumns', 'getAllColumns')),
2893
+ getAllFlatColumns: memo(() => [table.getAllColumns()], allColumns => {
2894
+ return allColumns.flatMap(column => {
2895
+ return column.getFlatColumns();
2799
2896
  });
2800
- }, getMemoOptions(table.options, 'debugRows', 'getAllCells')),
2801
- _getAllCellsByColumnId: memo(() => [row.getAllCells()], allCells => {
2802
- return allCells.reduce((acc, cell) => {
2803
- acc[cell.column.id] = cell;
2897
+ }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumns')),
2898
+ _getAllFlatColumnsById: memo(() => [table.getAllFlatColumns()], flatColumns => {
2899
+ return flatColumns.reduce((acc, column) => {
2900
+ acc[column.id] = column;
2804
2901
  return acc;
2805
2902
  }, {});
2806
- }, getMemoOptions(table.options, 'debugRows', 'getAllCellsByColumnId'))
2903
+ }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumnsById')),
2904
+ getAllLeafColumns: memo(() => [table.getAllColumns(), table._getOrderColumnsFn()], (allColumns, orderColumns) => {
2905
+ let leafColumns = allColumns.flatMap(column => column.getLeafColumns());
2906
+ return orderColumns(leafColumns);
2907
+ }, getMemoOptions(options, 'debugColumns', 'getAllLeafColumns')),
2908
+ getColumn: columnId => {
2909
+ const column = table._getAllFlatColumnsById()[columnId];
2910
+ if (process.env.NODE_ENV !== 'production' && !column) {
2911
+ console.error(`[Table] Column with id '${columnId}' does not exist.`);
2912
+ }
2913
+ return column;
2914
+ }
2807
2915
  };
2808
- for (let i = 0; i < table._features.length; i++) {
2809
- const feature = table._features[i];
2810
- feature == null || feature.createRow == null || feature.createRow(row, table);
2916
+ Object.assign(table, coreInstance);
2917
+ for (let index = 0; index < table._features.length; index++) {
2918
+ const feature = table._features[index];
2919
+ feature == null || feature.createTable == null || feature.createTable(table);
2811
2920
  }
2812
- return row;
2813
- };
2814
-
2815
- // type Person = {
2816
- // firstName: string
2817
- // lastName: string
2818
- // age: number
2819
- // visits: number
2820
- // status: string
2821
- // progress: number
2822
- // createdAt: Date
2823
- // nested: {
2824
- // foo: [
2825
- // {
2826
- // bar: 'bar'
2827
- // }
2828
- // ]
2829
- // bar: { subBar: boolean }[]
2830
- // baz: {
2831
- // foo: 'foo'
2832
- // bar: {
2833
- // baz: 'baz'
2834
- // }
2835
- // }
2836
- // }
2837
- // }
2838
-
2839
- // const test: DeepKeys<Person> = 'nested.foo.0.bar'
2840
- // const test2: DeepKeys<Person> = 'nested.bar'
2841
-
2842
- // const helper = createColumnHelper<Person>()
2843
-
2844
- // helper.accessor('nested.foo', {
2845
- // cell: info => info.getValue(),
2846
- // })
2847
-
2848
- // helper.accessor('nested.foo.0.bar', {
2849
- // cell: info => info.getValue(),
2850
- // })
2851
-
2852
- // helper.accessor('nested.bar', {
2853
- // cell: info => info.getValue(),
2854
- // })
2855
-
2856
- function createColumnHelper() {
2857
- return {
2858
- accessor: (accessor, column) => {
2859
- return typeof accessor === 'function' ? {
2860
- ...column,
2861
- accessorFn: accessor
2862
- } : {
2863
- ...column,
2864
- accessorKey: accessor
2865
- };
2866
- },
2867
- display: column => column,
2868
- group: column => column
2869
- };
2921
+ return table;
2870
2922
  }
2871
2923
 
2872
2924
  function getCoreRowModel() {
@@ -2917,6 +2969,62 @@ function getCoreRowModel() {
2917
2969
  }, getMemoOptions(table.options, 'debugTable', 'getRowModel', () => table._autoResetPageIndex()));
2918
2970
  }
2919
2971
 
2972
+ function getExpandedRowModel() {
2973
+ return table => memo(() => [table.getState().expanded, table.getPreExpandedRowModel(), table.options.paginateExpandedRows], (expanded, rowModel, paginateExpandedRows) => {
2974
+ if (!rowModel.rows.length || expanded !== true && !Object.keys(expanded != null ? expanded : {}).length) {
2975
+ return rowModel;
2976
+ }
2977
+ if (!paginateExpandedRows) {
2978
+ // Only expand rows at this point if they are being paginated
2979
+ return rowModel;
2980
+ }
2981
+ return expandRows(rowModel);
2982
+ }, getMemoOptions(table.options, 'debugTable', 'getExpandedRowModel'));
2983
+ }
2984
+ function expandRows(rowModel) {
2985
+ const expandedRows = [];
2986
+ const handleRow = row => {
2987
+ var _row$subRows;
2988
+ expandedRows.push(row);
2989
+ if ((_row$subRows = row.subRows) != null && _row$subRows.length && row.getIsExpanded()) {
2990
+ row.subRows.forEach(handleRow);
2991
+ }
2992
+ };
2993
+ rowModel.rows.forEach(handleRow);
2994
+ return {
2995
+ rows: expandedRows,
2996
+ flatRows: rowModel.flatRows,
2997
+ rowsById: rowModel.rowsById
2998
+ };
2999
+ }
3000
+
3001
+ function getFacetedMinMaxValues() {
3002
+ return (table, columnId) => memo(() => {
3003
+ var _table$getColumn;
3004
+ return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];
3005
+ }, facetedRowModel => {
3006
+ var _facetedRowModel$flat;
3007
+ if (!facetedRowModel) return undefined;
3008
+ const firstValue = (_facetedRowModel$flat = facetedRowModel.flatRows[0]) == null ? void 0 : _facetedRowModel$flat.getUniqueValues(columnId);
3009
+ if (typeof firstValue === 'undefined') {
3010
+ return undefined;
3011
+ }
3012
+ let facetedMinMaxValues = [firstValue, firstValue];
3013
+ for (let i = 0; i < facetedRowModel.flatRows.length; i++) {
3014
+ const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);
3015
+ for (let j = 0; j < values.length; j++) {
3016
+ const value = values[j];
3017
+ if (value < facetedMinMaxValues[0]) {
3018
+ facetedMinMaxValues[0] = value;
3019
+ } else if (value > facetedMinMaxValues[1]) {
3020
+ facetedMinMaxValues[1] = value;
3021
+ }
3022
+ }
3023
+ }
3024
+ return facetedMinMaxValues;
3025
+ }, getMemoOptions(table.options, 'debugTable', 'getFacetedMinMaxValues'));
3026
+ }
3027
+
2920
3028
  function filterRows(rows, filterRowImpl, table) {
2921
3029
  if (table.options.filterFromLeafRows) {
2922
3030
  return filterRowModelFromLeafs(rows, filterRowImpl, table);
@@ -3012,6 +3120,48 @@ function filterRowModelFromRoot(rowsToFilter, filterRow, table) {
3012
3120
  };
3013
3121
  }
3014
3122
 
3123
+ function getFacetedRowModel() {
3124
+ return (table, columnId) => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter, table.getFilteredRowModel()], (preRowModel, columnFilters, globalFilter) => {
3125
+ if (!preRowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {
3126
+ return preRowModel;
3127
+ }
3128
+ const filterableIds = [...columnFilters.map(d => d.id).filter(d => d !== columnId), globalFilter ? '__global__' : undefined].filter(Boolean);
3129
+ const filterRowsImpl = row => {
3130
+ // Horizontally filter rows through each column
3131
+ for (let i = 0; i < filterableIds.length; i++) {
3132
+ if (row.columnFilters[filterableIds[i]] === false) {
3133
+ return false;
3134
+ }
3135
+ }
3136
+ return true;
3137
+ };
3138
+ return filterRows(preRowModel.rows, filterRowsImpl, table);
3139
+ }, getMemoOptions(table.options, 'debugTable', 'getFacetedRowModel'));
3140
+ }
3141
+
3142
+ function getFacetedUniqueValues() {
3143
+ return (table, columnId) => memo(() => {
3144
+ var _table$getColumn;
3145
+ return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];
3146
+ }, facetedRowModel => {
3147
+ if (!facetedRowModel) return new Map();
3148
+ let facetedUniqueValues = new Map();
3149
+ for (let i = 0; i < facetedRowModel.flatRows.length; i++) {
3150
+ const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);
3151
+ for (let j = 0; j < values.length; j++) {
3152
+ const value = values[j];
3153
+ if (facetedUniqueValues.has(value)) {
3154
+ var _facetedUniqueValues$;
3155
+ facetedUniqueValues.set(value, ((_facetedUniqueValues$ = facetedUniqueValues.get(value)) != null ? _facetedUniqueValues$ : 0) + 1);
3156
+ } else {
3157
+ facetedUniqueValues.set(value, 1);
3158
+ }
3159
+ }
3160
+ }
3161
+ return facetedUniqueValues;
3162
+ }, getMemoOptions(table.options, 'debugTable', `getFacetedUniqueValues_${columnId}`));
3163
+ }
3164
+
3015
3165
  function getFilteredRowModel() {
3016
3166
  return table => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter], (rowModel, columnFilters, globalFilter) => {
3017
3167
  if (!rowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {
@@ -3084,34 +3234,13 @@ function getFilteredRowModel() {
3084
3234
  })) {
3085
3235
  row.columnFilters.__global__ = true;
3086
3236
  break;
3087
- }
3088
- }
3089
- if (row.columnFilters.__global__ !== true) {
3090
- row.columnFilters.__global__ = false;
3091
- }
3092
- }
3093
- }
3094
- const filterRowsImpl = row => {
3095
- // Horizontally filter rows through each column
3096
- for (let i = 0; i < filterableIds.length; i++) {
3097
- if (row.columnFilters[filterableIds[i]] === false) {
3098
- return false;
3099
- }
3100
- }
3101
- return true;
3102
- };
3103
-
3104
- // Filter final rows using all of the active filters
3105
- return filterRows(rowModel.rows, filterRowsImpl, table);
3106
- }, getMemoOptions(table.options, 'debugTable', 'getFilteredRowModel', () => table._autoResetPageIndex()));
3107
- }
3108
-
3109
- function getFacetedRowModel() {
3110
- return (table, columnId) => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter, table.getFilteredRowModel()], (preRowModel, columnFilters, globalFilter) => {
3111
- if (!preRowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {
3112
- return preRowModel;
3237
+ }
3238
+ }
3239
+ if (row.columnFilters.__global__ !== true) {
3240
+ row.columnFilters.__global__ = false;
3241
+ }
3242
+ }
3113
3243
  }
3114
- const filterableIds = [...columnFilters.map(d => d.id).filter(d => d !== columnId), globalFilter ? '__global__' : undefined].filter(Boolean);
3115
3244
  const filterRowsImpl = row => {
3116
3245
  // Horizontally filter rows through each column
3117
3246
  for (let i = 0; i < filterableIds.length; i++) {
@@ -3121,141 +3250,10 @@ function getFacetedRowModel() {
3121
3250
  }
3122
3251
  return true;
3123
3252
  };
3124
- return filterRows(preRowModel.rows, filterRowsImpl, table);
3125
- }, getMemoOptions(table.options, 'debugTable', 'getFacetedRowModel'));
3126
- }
3127
-
3128
- function getFacetedUniqueValues() {
3129
- return (table, columnId) => memo(() => {
3130
- var _table$getColumn;
3131
- return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];
3132
- }, facetedRowModel => {
3133
- if (!facetedRowModel) return new Map();
3134
- let facetedUniqueValues = new Map();
3135
- for (let i = 0; i < facetedRowModel.flatRows.length; i++) {
3136
- const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);
3137
- for (let j = 0; j < values.length; j++) {
3138
- const value = values[j];
3139
- if (facetedUniqueValues.has(value)) {
3140
- var _facetedUniqueValues$;
3141
- facetedUniqueValues.set(value, ((_facetedUniqueValues$ = facetedUniqueValues.get(value)) != null ? _facetedUniqueValues$ : 0) + 1);
3142
- } else {
3143
- facetedUniqueValues.set(value, 1);
3144
- }
3145
- }
3146
- }
3147
- return facetedUniqueValues;
3148
- }, getMemoOptions(table.options, 'debugTable', `getFacetedUniqueValues_${columnId}`));
3149
- }
3150
-
3151
- function getFacetedMinMaxValues() {
3152
- return (table, columnId) => memo(() => {
3153
- var _table$getColumn;
3154
- return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];
3155
- }, facetedRowModel => {
3156
- var _facetedRowModel$flat;
3157
- if (!facetedRowModel) return undefined;
3158
- const firstValue = (_facetedRowModel$flat = facetedRowModel.flatRows[0]) == null ? void 0 : _facetedRowModel$flat.getUniqueValues(columnId);
3159
- if (typeof firstValue === 'undefined') {
3160
- return undefined;
3161
- }
3162
- let facetedMinMaxValues = [firstValue, firstValue];
3163
- for (let i = 0; i < facetedRowModel.flatRows.length; i++) {
3164
- const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);
3165
- for (let j = 0; j < values.length; j++) {
3166
- const value = values[j];
3167
- if (value < facetedMinMaxValues[0]) {
3168
- facetedMinMaxValues[0] = value;
3169
- } else if (value > facetedMinMaxValues[1]) {
3170
- facetedMinMaxValues[1] = value;
3171
- }
3172
- }
3173
- }
3174
- return facetedMinMaxValues;
3175
- }, getMemoOptions(table.options, 'debugTable', 'getFacetedMinMaxValues'));
3176
- }
3177
-
3178
- function getSortedRowModel() {
3179
- return table => memo(() => [table.getState().sorting, table.getPreSortedRowModel()], (sorting, rowModel) => {
3180
- if (!rowModel.rows.length || !(sorting != null && sorting.length)) {
3181
- return rowModel;
3182
- }
3183
- const sortingState = table.getState().sorting;
3184
- const sortedFlatRows = [];
3185
-
3186
- // Filter out sortings that correspond to non existing columns
3187
- const availableSorting = sortingState.filter(sort => {
3188
- var _table$getColumn;
3189
- return (_table$getColumn = table.getColumn(sort.id)) == null ? void 0 : _table$getColumn.getCanSort();
3190
- });
3191
- const columnInfoById = {};
3192
- availableSorting.forEach(sortEntry => {
3193
- const column = table.getColumn(sortEntry.id);
3194
- if (!column) return;
3195
- columnInfoById[sortEntry.id] = {
3196
- sortUndefined: column.columnDef.sortUndefined,
3197
- invertSorting: column.columnDef.invertSorting,
3198
- sortingFn: column.getSortingFn()
3199
- };
3200
- });
3201
- const sortData = rows => {
3202
- // This will also perform a stable sorting using the row index
3203
- // if needed.
3204
- const sortedData = rows.map(row => ({
3205
- ...row
3206
- }));
3207
- sortedData.sort((rowA, rowB) => {
3208
- for (let i = 0; i < availableSorting.length; i += 1) {
3209
- var _sortEntry$desc;
3210
- const sortEntry = availableSorting[i];
3211
- const columnInfo = columnInfoById[sortEntry.id];
3212
- const isDesc = (_sortEntry$desc = sortEntry == null ? void 0 : sortEntry.desc) != null ? _sortEntry$desc : false;
3213
- let sortInt = 0;
3214
-
3215
- // All sorting ints should always return in ascending order
3216
- if (columnInfo.sortUndefined) {
3217
- const aValue = rowA.getValue(sortEntry.id);
3218
- const bValue = rowB.getValue(sortEntry.id);
3219
- const aUndefined = aValue === undefined;
3220
- const bUndefined = bValue === undefined;
3221
- if (aUndefined || bUndefined) {
3222
- sortInt = aUndefined && bUndefined ? 0 : aUndefined ? columnInfo.sortUndefined : -columnInfo.sortUndefined;
3223
- }
3224
- }
3225
- if (sortInt === 0) {
3226
- sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id);
3227
- }
3228
-
3229
- // If sorting is non-zero, take care of desc and inversion
3230
- if (sortInt !== 0) {
3231
- if (isDesc) {
3232
- sortInt *= -1;
3233
- }
3234
- if (columnInfo.invertSorting) {
3235
- sortInt *= -1;
3236
- }
3237
- return sortInt;
3238
- }
3239
- }
3240
- return rowA.index - rowB.index;
3241
- });
3242
3253
 
3243
- // If there are sub-rows, sort them
3244
- sortedData.forEach(row => {
3245
- var _row$subRows;
3246
- sortedFlatRows.push(row);
3247
- if ((_row$subRows = row.subRows) != null && _row$subRows.length) {
3248
- row.subRows = sortData(row.subRows);
3249
- }
3250
- });
3251
- return sortedData;
3252
- };
3253
- return {
3254
- rows: sortData(rowModel.rows),
3255
- flatRows: sortedFlatRows,
3256
- rowsById: rowModel.rowsById
3257
- };
3258
- }, getMemoOptions(table.options, 'debugTable', 'getSortedRowModel', () => table._autoResetPageIndex()));
3254
+ // Filter final rows using all of the active filters
3255
+ return filterRows(rowModel.rows, filterRowsImpl, table);
3256
+ }, getMemoOptions(table.options, 'debugTable', 'getFilteredRowModel', () => table._autoResetPageIndex()));
3259
3257
  }
3260
3258
 
3261
3259
  function getGroupedRowModel() {
@@ -3391,35 +3389,6 @@ function groupBy(rows, columnId) {
3391
3389
  }, groupMap);
3392
3390
  }
3393
3391
 
3394
- function getExpandedRowModel() {
3395
- return table => memo(() => [table.getState().expanded, table.getPreExpandedRowModel(), table.options.paginateExpandedRows], (expanded, rowModel, paginateExpandedRows) => {
3396
- if (!rowModel.rows.length || expanded !== true && !Object.keys(expanded != null ? expanded : {}).length) {
3397
- return rowModel;
3398
- }
3399
- if (!paginateExpandedRows) {
3400
- // Only expand rows at this point if they are being paginated
3401
- return rowModel;
3402
- }
3403
- return expandRows(rowModel);
3404
- }, getMemoOptions(table.options, 'debugTable', 'getExpandedRowModel'));
3405
- }
3406
- function expandRows(rowModel) {
3407
- const expandedRows = [];
3408
- const handleRow = row => {
3409
- var _row$subRows;
3410
- expandedRows.push(row);
3411
- if ((_row$subRows = row.subRows) != null && _row$subRows.length && row.getIsExpanded()) {
3412
- row.subRows.forEach(handleRow);
3413
- }
3414
- };
3415
- rowModel.rows.forEach(handleRow);
3416
- return {
3417
- rows: expandedRows,
3418
- flatRows: rowModel.flatRows,
3419
- rowsById: rowModel.rowsById
3420
- };
3421
- }
3422
-
3423
3392
  function getPaginationRowModel(opts) {
3424
3393
  return table => memo(() => [table.getState().pagination, table.getPrePaginationRowModel(), table.options.paginateExpandedRows ? undefined : table.getState().expanded], (pagination, rowModel) => {
3425
3394
  if (!rowModel.rows.length) {
@@ -3463,5 +3432,88 @@ function getPaginationRowModel(opts) {
3463
3432
  }, getMemoOptions(table.options, 'debugTable', 'getPaginationRowModel'));
3464
3433
  }
3465
3434
 
3466
- export { ColumnSizing, Expanding, Filters, Grouping, Headers, Ordering, Pagination, Pinning, RowSelection, Sorting, Visibility, _getVisibleLeafColumns, aggregationFns, buildHeaderGroups, createCell, createColumn, createColumnHelper, createRow, createTable, defaultColumnSizing, expandRows, filterFns, flattenBy, functionalUpdate, getCoreRowModel, getExpandedRowModel, getFacetedMinMaxValues, getFacetedRowModel, getFacetedUniqueValues, getFilteredRowModel, getGroupedRowModel, getMemoOptions, getPaginationRowModel, getSortedRowModel, isFunction, isNumberArray, isRowSelected, isSubRowSelected, makeStateUpdater, memo, noop, orderColumns, passiveEventSupported, reSplitAlphaNumeric, selectRowsFn, shouldAutoRemoveFilter, sortingFns };
3435
+ function getSortedRowModel() {
3436
+ return table => memo(() => [table.getState().sorting, table.getPreSortedRowModel()], (sorting, rowModel) => {
3437
+ if (!rowModel.rows.length || !(sorting != null && sorting.length)) {
3438
+ return rowModel;
3439
+ }
3440
+ const sortingState = table.getState().sorting;
3441
+ const sortedFlatRows = [];
3442
+
3443
+ // Filter out sortings that correspond to non existing columns
3444
+ const availableSorting = sortingState.filter(sort => {
3445
+ var _table$getColumn;
3446
+ return (_table$getColumn = table.getColumn(sort.id)) == null ? void 0 : _table$getColumn.getCanSort();
3447
+ });
3448
+ const columnInfoById = {};
3449
+ availableSorting.forEach(sortEntry => {
3450
+ const column = table.getColumn(sortEntry.id);
3451
+ if (!column) return;
3452
+ columnInfoById[sortEntry.id] = {
3453
+ sortUndefined: column.columnDef.sortUndefined,
3454
+ invertSorting: column.columnDef.invertSorting,
3455
+ sortingFn: column.getSortingFn()
3456
+ };
3457
+ });
3458
+ const sortData = rows => {
3459
+ // This will also perform a stable sorting using the row index
3460
+ // if needed.
3461
+ const sortedData = rows.map(row => ({
3462
+ ...row
3463
+ }));
3464
+ sortedData.sort((rowA, rowB) => {
3465
+ for (let i = 0; i < availableSorting.length; i += 1) {
3466
+ var _sortEntry$desc;
3467
+ const sortEntry = availableSorting[i];
3468
+ const columnInfo = columnInfoById[sortEntry.id];
3469
+ const isDesc = (_sortEntry$desc = sortEntry == null ? void 0 : sortEntry.desc) != null ? _sortEntry$desc : false;
3470
+ let sortInt = 0;
3471
+
3472
+ // All sorting ints should always return in ascending order
3473
+ if (columnInfo.sortUndefined) {
3474
+ const aValue = rowA.getValue(sortEntry.id);
3475
+ const bValue = rowB.getValue(sortEntry.id);
3476
+ const aUndefined = aValue === undefined;
3477
+ const bUndefined = bValue === undefined;
3478
+ if (aUndefined || bUndefined) {
3479
+ sortInt = aUndefined && bUndefined ? 0 : aUndefined ? columnInfo.sortUndefined : -columnInfo.sortUndefined;
3480
+ }
3481
+ }
3482
+ if (sortInt === 0) {
3483
+ sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id);
3484
+ }
3485
+
3486
+ // If sorting is non-zero, take care of desc and inversion
3487
+ if (sortInt !== 0) {
3488
+ if (isDesc) {
3489
+ sortInt *= -1;
3490
+ }
3491
+ if (columnInfo.invertSorting) {
3492
+ sortInt *= -1;
3493
+ }
3494
+ return sortInt;
3495
+ }
3496
+ }
3497
+ return rowA.index - rowB.index;
3498
+ });
3499
+
3500
+ // If there are sub-rows, sort them
3501
+ sortedData.forEach(row => {
3502
+ var _row$subRows;
3503
+ sortedFlatRows.push(row);
3504
+ if ((_row$subRows = row.subRows) != null && _row$subRows.length) {
3505
+ row.subRows = sortData(row.subRows);
3506
+ }
3507
+ });
3508
+ return sortedData;
3509
+ };
3510
+ return {
3511
+ rows: sortData(rowModel.rows),
3512
+ flatRows: sortedFlatRows,
3513
+ rowsById: rowModel.rowsById
3514
+ };
3515
+ }, getMemoOptions(table.options, 'debugTable', 'getSortedRowModel', () => table._autoResetPageIndex()));
3516
+ }
3517
+
3518
+ export { ColumnFaceting, ColumnFiltering, ColumnGrouping, ColumnOrdering, ColumnPinning, ColumnSizing, ColumnVisibility, GlobalFaceting, GlobalFiltering, Headers, RowExpanding, RowPagination, RowPinning, RowSelection, RowSorting, _getVisibleLeafColumns, aggregationFns, buildHeaderGroups, createCell, createColumn, createColumnHelper, createRow, createTable, defaultColumnSizing, expandRows, filterFns, flattenBy, functionalUpdate, getCoreRowModel, getExpandedRowModel, getFacetedMinMaxValues, getFacetedRowModel, getFacetedUniqueValues, getFilteredRowModel, getGroupedRowModel, getMemoOptions, getPaginationRowModel, getSortedRowModel, isFunction, isNumberArray, isRowSelected, isSubRowSelected, makeStateUpdater, memo, noop, orderColumns, passiveEventSupported, reSplitAlphaNumeric, selectRowsFn, shouldAutoRemoveFilter, sortingFns };
3467
3519
  //# sourceMappingURL=index.esm.js.map