@tanstack/table-core 8.13.2 → 8.14.0

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 (101) 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.js.map +1 -1
  8. package/build/lib/core/table.d.ts +7 -11
  9. package/build/lib/core/table.js +21 -13
  10. package/build/lib/core/table.js.map +1 -1
  11. package/build/lib/features/ColumnFaceting.d.ts +34 -0
  12. package/build/lib/features/ColumnFaceting.js +42 -0
  13. package/build/lib/features/ColumnFaceting.js.map +1 -0
  14. package/build/lib/features/{Filters.d.ts → ColumnFiltering.d.ts} +29 -132
  15. package/build/lib/features/{Filters.js → ColumnFiltering.js} +8 -83
  16. package/build/lib/features/ColumnFiltering.js.map +1 -0
  17. package/build/lib/features/{Grouping.d.ts → ColumnGrouping.d.ts} +2 -3
  18. package/build/lib/features/{Grouping.js → ColumnGrouping.js} +3 -3
  19. package/build/lib/features/ColumnGrouping.js.map +1 -0
  20. package/build/lib/features/{Ordering.d.ts → ColumnOrdering.d.ts} +2 -3
  21. package/build/lib/features/{Ordering.js → ColumnOrdering.js} +9 -9
  22. package/build/lib/features/ColumnOrdering.js.map +1 -0
  23. package/build/lib/features/ColumnPinning.d.ts +126 -0
  24. package/build/lib/features/{Pinning.js → ColumnPinning.js} +4 -115
  25. package/build/lib/features/ColumnPinning.js.map +1 -0
  26. package/build/lib/features/ColumnSizing.d.ts +2 -3
  27. package/build/lib/features/ColumnSizing.js +3 -3
  28. package/build/lib/features/ColumnSizing.js.map +1 -1
  29. package/build/lib/features/{Visibility.d.ts → ColumnVisibility.d.ts} +2 -3
  30. package/build/lib/features/{Visibility.js → ColumnVisibility.js} +3 -3
  31. package/build/lib/features/ColumnVisibility.js.map +1 -0
  32. package/build/lib/features/GlobalFiltering.d.ts +100 -0
  33. package/build/lib/features/GlobalFiltering.js +85 -0
  34. package/build/lib/features/GlobalFiltering.js.map +1 -0
  35. package/build/lib/features/{Expanding.d.ts → RowExpanding.d.ts} +2 -3
  36. package/build/lib/features/{Expanding.js → RowExpanding.js} +3 -3
  37. package/build/lib/features/RowExpanding.js.map +1 -0
  38. package/build/lib/features/{Pagination.d.ts → RowPagination.d.ts} +2 -3
  39. package/build/lib/features/{Pagination.js → RowPagination.js} +3 -3
  40. package/build/lib/features/RowPagination.js.map +1 -0
  41. package/build/lib/features/RowPinning.d.ts +98 -0
  42. package/build/lib/features/RowPinning.js +145 -0
  43. package/build/lib/features/RowPinning.js.map +1 -0
  44. package/build/lib/features/RowSelection.d.ts +1 -2
  45. package/build/lib/features/RowSelection.js.map +1 -1
  46. package/build/lib/features/{Sorting.d.ts → RowSorting.d.ts} +5 -3
  47. package/build/lib/features/{Sorting.js → RowSorting.js} +3 -3
  48. package/build/lib/features/RowSorting.js.map +1 -0
  49. package/build/lib/filterFns.d.ts +1 -1
  50. package/build/lib/filterFns.js.map +1 -1
  51. package/build/lib/index.d.ts +21 -18
  52. package/build/lib/index.esm.js +1490 -1446
  53. package/build/lib/index.esm.js.map +1 -1
  54. package/build/lib/index.js +47 -41
  55. package/build/lib/index.js.map +1 -1
  56. package/build/lib/index.mjs +1490 -1446
  57. package/build/lib/index.mjs.map +1 -1
  58. package/build/lib/sortingFns.d.ts +1 -1
  59. package/build/lib/sortingFns.js.map +1 -1
  60. package/build/lib/types.d.ts +30 -16
  61. package/build/lib/utils/getFilteredRowModel.js.map +1 -1
  62. package/build/lib/utils/getSortedRowModel.js.map +1 -1
  63. package/build/umd/index.development.js +1500 -1453
  64. package/build/umd/index.development.js.map +1 -1
  65. package/build/umd/index.production.js +1 -1
  66. package/build/umd/index.production.js.map +1 -1
  67. package/package.json +1 -1
  68. package/src/aggregationFns.ts +1 -1
  69. package/src/core/column.ts +2 -2
  70. package/src/core/headers.ts +9 -3
  71. package/src/core/row.ts +1 -1
  72. package/src/core/table.ts +40 -32
  73. package/src/features/ColumnFaceting.ts +84 -0
  74. package/src/features/{Filters.ts → ColumnFiltering.ts} +44 -279
  75. package/src/features/{Grouping.ts → ColumnGrouping.ts} +6 -6
  76. package/src/features/{Ordering.ts → ColumnOrdering.ts} +11 -5
  77. package/src/features/ColumnPinning.ts +336 -0
  78. package/src/features/ColumnSizing.ts +10 -3
  79. package/src/features/{Visibility.ts → ColumnVisibility.ts} +2 -2
  80. package/src/features/GlobalFiltering.ts +218 -0
  81. package/src/features/{Expanding.ts → RowExpanding.ts} +9 -3
  82. package/src/features/{Pagination.ts → RowPagination.ts} +9 -3
  83. package/src/features/RowPinning.ts +273 -0
  84. package/src/features/RowSelection.ts +9 -2
  85. package/src/features/{Sorting.ts → RowSorting.ts} +5 -2
  86. package/src/filterFns.ts +1 -1
  87. package/src/index.ts +30 -18
  88. package/src/sortingFns.ts +1 -1
  89. package/src/types.ts +60 -23
  90. package/src/utils/getFilteredRowModel.ts +1 -1
  91. package/src/utils/getSortedRowModel.ts +1 -1
  92. package/build/lib/features/Expanding.js.map +0 -1
  93. package/build/lib/features/Filters.js.map +0 -1
  94. package/build/lib/features/Grouping.js.map +0 -1
  95. package/build/lib/features/Ordering.js.map +0 -1
  96. package/build/lib/features/Pagination.js.map +0 -1
  97. package/build/lib/features/Pinning.d.ts +0 -222
  98. package/build/lib/features/Pinning.js.map +0 -1
  99. package/build/lib/features/Sorting.js.map +0 -1
  100. package/build/lib/features/Visibility.js.map +0 -1
  101. 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,656 +498,1087 @@ 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
1485
  };
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];
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;
964
1490
  };
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;
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);
968
1494
  };
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;
1495
+ column.getToggleVisibilityHandler = () => {
1496
+ return e => {
1497
+ column.toggleVisibility == null || column.toggleVisibility(e.target.checked);
1498
+ };
972
1499
  };
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;
1500
+ },
1501
+ createRow: (row, table) => {
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'));
1506
+ },
1507
+ createTable: table => {
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));
977
1512
  };
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;
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 : {});
981
1522
  };
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
- });
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
+ }), {}));
1011
1530
  };
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();
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
+ };
1018
1538
  };
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();
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 GlobalFiltering = {
1548
+ getInitialState: state => {
1549
+ return {
1550
+ globalFilter: undefined,
1551
+ ...state
1025
1552
  };
1026
- column._getFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, column.id);
1027
- column.getFacetedMinMaxValues = () => {
1028
- if (!column._getFacetedMinMaxValues) {
1029
- return undefined;
1553
+ },
1554
+ getDefaultOptions: table => {
1555
+ return {
1556
+ onGlobalFilterChange: makeStateUpdater('globalFilter', table),
1557
+ globalFilterFn: 'auto',
1558
+ getColumnCanGlobalFilter: column => {
1559
+ var _table$getCoreRowMode;
1560
+ const value = (_table$getCoreRowMode = table.getCoreRowModel().flatRows[0]) == null || (_table$getCoreRowMode = _table$getCoreRowMode._getAllCellsByColumnId()[column.id]) == null ? void 0 : _table$getCoreRowMode.getValue();
1561
+ return typeof value === 'string' || typeof value === 'number';
1030
1562
  }
1031
- return column._getFacetedMinMaxValues();
1032
1563
  };
1033
- // () => [column.getFacetedRowModel()],
1034
- // facetedRowModel => getRowModelMinMaxValues(facetedRowModel, column.id),
1035
1564
  },
1036
- createRow: (row, table) => {
1037
- row.columnFilters = {};
1038
- row.columnFiltersMeta = {};
1565
+ createColumn: (column, table) => {
1566
+ column.getCanGlobalFilter = () => {
1567
+ var _column$columnDef$ena, _table$options$enable, _table$options$enable2, _table$options$getCol;
1568
+ 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;
1569
+ };
1039
1570
  },
1040
1571
  createTable: table => {
1041
1572
  table.getGlobalAutoFilterFn = () => {
1042
1573
  return filterFns.includesString;
1043
1574
  };
1044
1575
  table.getGlobalFilterFn = () => {
1045
- var _table$options$filter3, _table$options$filter4;
1576
+ var _table$options$filter, _table$options$filter2;
1046
1577
  const {
1047
1578
  globalFilterFn: globalFilterFn
1048
1579
  } = table.options;
1049
1580
  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);
1581
+ (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[globalFilterFn]) != null ? _table$options$filter : filterFns[globalFilterFn];
1068
1582
  };
1069
1583
  table.setGlobalFilter = updater => {
1070
1584
  table.options.onGlobalFilterChange == null || table.options.onGlobalFilterChange(updater);
@@ -1072,20 +1586,6 @@ const Filters = {
1072
1586
  table.resetGlobalFilter = defaultState => {
1073
1587
  table.setGlobalFilter(defaultState ? undefined : table.initialState.globalFilter);
1074
1588
  };
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 : []);
1078
- };
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();
1088
- };
1089
1589
  table._getGlobalFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, '__global__');
1090
1590
  table.getGlobalFacetedRowModel = () => {
1091
1591
  if (table.options.manualFiltering || !table._getGlobalFacetedRowModel) {
@@ -1109,289 +1609,161 @@ const Filters = {
1109
1609
  };
1110
1610
  }
1111
1611
  };
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
1612
 
1208
1613
  //
1209
1614
 
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
- },
1615
+ const RowExpanding = {
1220
1616
  getInitialState: state => {
1221
1617
  return {
1222
- grouping: [],
1618
+ expanded: {},
1223
1619
  ...state
1224
1620
  };
1225
1621
  },
1226
1622
  getDefaultOptions: table => {
1227
1623
  return {
1228
- onGroupingChange: makeStateUpdater('grouping', table),
1229
- groupedColumnMode: 'reorder'
1624
+ onExpandedChange: makeStateUpdater('expanded', table),
1625
+ paginateExpandedRows: true
1230
1626
  };
1231
1627
  },
1232
- 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
- });
1241
- };
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;
1245
- };
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);
1249
- };
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);
1253
- };
1254
- column.getToggleGroupingHandler = () => {
1255
- const canGroup = column.getCanGroup();
1256
- return () => {
1257
- if (!canGroup) return;
1258
- column.toggleGrouping();
1259
- };
1260
- };
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;
1628
+ createTable: table => {
1629
+ let registered = false;
1630
+ let queued = false;
1631
+ table._autoResetExpanded = () => {
1632
+ var _ref, _table$options$autoRe;
1633
+ if (!registered) {
1634
+ table._queue(() => {
1635
+ registered = true;
1636
+ });
1637
+ return;
1266
1638
  }
1267
- if (Object.prototype.toString.call(value) === '[object Date]') {
1268
- return aggregationFns.extent;
1639
+ if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetExpanded) != null ? _ref : !table.options.manualExpanding) {
1640
+ if (queued) return;
1641
+ queued = true;
1642
+ table._queue(() => {
1643
+ table.resetExpanded();
1644
+ queued = false;
1645
+ });
1269
1646
  }
1270
1647
  };
1271
- column.getAggregationFn = () => {
1272
- var _table$options$aggreg, _table$options$aggreg2;
1273
- if (!column) {
1274
- throw new Error();
1648
+ table.setExpanded = updater => table.options.onExpandedChange == null ? void 0 : table.options.onExpandedChange(updater);
1649
+ table.toggleAllRowsExpanded = expanded => {
1650
+ if (expanded != null ? expanded : !table.getIsAllRowsExpanded()) {
1651
+ table.setExpanded(true);
1652
+ } else {
1653
+ table.setExpanded({});
1275
1654
  }
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];
1277
1655
  };
1278
- },
1279
- 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 : []);
1656
+ table.resetExpanded = defaultState => {
1657
+ var _table$initialState$e, _table$initialState;
1658
+ table.setExpanded(defaultState ? {} : (_table$initialState$e = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.expanded) != null ? _table$initialState$e : {});
1284
1659
  };
1285
- table.getPreGroupedRowModel = () => table.getFilteredRowModel();
1286
- table.getGroupedRowModel = () => {
1287
- if (!table._getGroupedRowModel && table.options.getGroupedRowModel) {
1288
- table._getGroupedRowModel = table.options.getGroupedRowModel(table);
1289
- }
1290
- if (table.options.manualGrouping || !table._getGroupedRowModel) {
1291
- return table.getPreGroupedRowModel();
1292
- }
1293
- return table._getGroupedRowModel();
1660
+ table.getCanSomeRowsExpand = () => {
1661
+ return table.getPrePaginationRowModel().flatRows.some(row => row.getCanExpand());
1294
1662
  };
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];
1663
+ table.getToggleAllRowsExpandedHandler = () => {
1664
+ return e => {
1665
+ e.persist == null || e.persist();
1666
+ table.toggleAllRowsExpanded();
1667
+ };
1668
+ };
1669
+ table.getIsSomeRowsExpanded = () => {
1670
+ const expanded = table.getState().expanded;
1671
+ return expanded === true || Object.values(expanded).some(Boolean);
1672
+ };
1673
+ table.getIsAllRowsExpanded = () => {
1674
+ const expanded = table.getState().expanded;
1675
+
1676
+ // If expanded is true, save some cycles and return true
1677
+ if (typeof expanded === 'boolean') {
1678
+ return expanded === true;
1301
1679
  }
1302
- const column = table.getColumn(columnId);
1303
- if (!(column != null && column.columnDef.getGroupingValue)) {
1304
- return row.getValue(columnId);
1680
+ if (!Object.keys(expanded).length) {
1681
+ return false;
1305
1682
  }
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
1683
 
1332
- //
1684
+ // If any row is not expanded, return false
1685
+ if (table.getRowModel().flatRows.some(row => !row.getIsExpanded())) {
1686
+ return false;
1687
+ }
1333
1688
 
1334
- const Ordering = {
1335
- getInitialState: state => {
1336
- return {
1337
- columnOrder: [],
1338
- ...state
1689
+ // They must all be expanded :shrug:
1690
+ return true;
1339
1691
  };
1340
- },
1341
- getDefaultOptions: table => {
1342
- return {
1343
- onColumnOrderChange: makeStateUpdater('columnOrder', table)
1692
+ table.getExpandedDepth = () => {
1693
+ let maxDepth = 0;
1694
+ const rowIds = table.getState().expanded === true ? Object.keys(table.getRowModel().rowsById) : Object.keys(table.getState().expanded);
1695
+ rowIds.forEach(id => {
1696
+ const splitId = id.split('.');
1697
+ maxDepth = Math.max(maxDepth, splitId.length);
1698
+ });
1699
+ return maxDepth;
1700
+ };
1701
+ table.getPreExpandedRowModel = () => table.getSortedRowModel();
1702
+ table.getExpandedRowModel = () => {
1703
+ if (!table._getExpandedRowModel && table.options.getExpandedRowModel) {
1704
+ table._getExpandedRowModel = table.options.getExpandedRowModel(table);
1705
+ }
1706
+ if (table.options.manualExpanding || !table._getExpandedRowModel) {
1707
+ return table.getPreExpandedRowModel();
1708
+ }
1709
+ return table._getExpandedRowModel();
1344
1710
  };
1345
1711
  },
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;
1712
+ createRow: (row, table) => {
1713
+ row.toggleExpanded = expanded => {
1714
+ table.setExpanded(old => {
1715
+ var _expanded;
1716
+ const exists = old === true ? true : !!(old != null && old[row.id]);
1717
+ let oldExpanded = {};
1718
+ if (old === true) {
1719
+ Object.keys(table.getRowModel().rowsById).forEach(rowId => {
1720
+ oldExpanded[rowId] = true;
1721
+ });
1722
+ } else {
1723
+ oldExpanded = old;
1724
+ }
1725
+ expanded = (_expanded = expanded) != null ? _expanded : !exists;
1726
+ if (!exists && expanded) {
1727
+ return {
1728
+ ...oldExpanded,
1729
+ [row.id]: true
1730
+ };
1731
+ }
1732
+ if (exists && !expanded) {
1733
+ const {
1734
+ [row.id]: _,
1735
+ ...rest
1736
+ } = oldExpanded;
1737
+ return rest;
1738
+ }
1739
+ return old;
1740
+ });
1352
1741
  };
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;
1742
+ row.getIsExpanded = () => {
1743
+ var _table$options$getIsR;
1744
+ const expanded = table.getState().expanded;
1745
+ 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
1746
  };
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 : []);
1747
+ row.getCanExpand = () => {
1748
+ var _table$options$getRow, _table$options$enable, _row$subRows;
1749
+ 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
1750
  };
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];
1751
+ row.getIsAllParentsExpanded = () => {
1752
+ let isFullyExpanded = true;
1753
+ let currentRow = row;
1754
+ while (isFullyExpanded && currentRow.parentId) {
1755
+ currentRow = table.getRow(currentRow.parentId, true);
1756
+ isFullyExpanded = currentRow.getIsExpanded();
1392
1757
  }
1393
- return orderColumns(orderedColumns, grouping, groupedColumnMode);
1394
- }, getMemoOptions(table.options, 'debugTable', '_getOrderColumnsFn'));
1758
+ return isFullyExpanded;
1759
+ };
1760
+ row.getToggleExpandedHandler = () => {
1761
+ const canExpand = row.getCanExpand();
1762
+ return () => {
1763
+ if (!canExpand) return;
1764
+ row.toggleExpanded();
1765
+ };
1766
+ };
1395
1767
  }
1396
1768
  };
1397
1769
 
@@ -1403,7 +1775,7 @@ const getDefaultPaginationState = () => ({
1403
1775
  pageIndex: defaultPageIndex,
1404
1776
  pageSize: defaultPageSize
1405
1777
  });
1406
- const Pagination = {
1778
+ const RowPagination = {
1407
1779
  getInitialState: state => {
1408
1780
  return {
1409
1781
  ...state,
@@ -1550,88 +1922,34 @@ const Pagination = {
1550
1922
 
1551
1923
  //
1552
1924
 
1553
- const getDefaultColumnPinningState = () => ({
1554
- left: [],
1555
- right: []
1556
- });
1557
1925
  const getDefaultRowPinningState = () => ({
1558
1926
  top: [],
1559
1927
  bottom: []
1560
1928
  });
1561
- const Pinning = {
1929
+ const RowPinning = {
1562
1930
  getInitialState: state => {
1563
1931
  return {
1564
- columnPinning: getDefaultColumnPinningState(),
1565
1932
  rowPinning: getDefaultRowPinningState(),
1566
1933
  ...state
1567
1934
  };
1568
1935
  },
1569
1936
  getDefaultOptions: table => {
1570
1937
  return {
1571
- onColumnPinningChange: makeStateUpdater('columnPinning', table),
1572
1938
  onRowPinningChange: makeStateUpdater('rowPinning', table)
1573
1939
  };
1574
1940
  },
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
1941
  createRow: (row, table) => {
1624
1942
  row.pin = (position, includeLeafRows, includeParentRows) => {
1625
- const leafRowIds = includeLeafRows ? row.getLeafRows().map(_ref2 => {
1943
+ const leafRowIds = includeLeafRows ? row.getLeafRows().map(_ref => {
1626
1944
  let {
1627
1945
  id
1628
- } = _ref2;
1946
+ } = _ref;
1629
1947
  return id;
1630
1948
  }) : [];
1631
- const parentRowIds = includeParentRows ? row.getParentRows().map(_ref3 => {
1949
+ const parentRowIds = includeParentRows ? row.getParentRows().map(_ref2 => {
1632
1950
  let {
1633
1951
  id
1634
- } = _ref3;
1952
+ } = _ref2;
1635
1953
  return id;
1636
1954
  }) : [];
1637
1955
  const rowIds = new Set([...parentRowIds, row.id, ...leafRowIds]);
@@ -1658,7 +1976,7 @@ const Pinning = {
1658
1976
  });
1659
1977
  };
1660
1978
  row.getCanPin = () => {
1661
- var _ref4;
1979
+ var _ref3;
1662
1980
  const {
1663
1981
  enableRowPinning,
1664
1982
  enablePinning
@@ -1666,7 +1984,7 @@ const Pinning = {
1666
1984
  if (typeof enableRowPinning === 'function') {
1667
1985
  return enableRowPinning(row);
1668
1986
  }
1669
- return (_ref4 = enableRowPinning != null ? enableRowPinning : enablePinning) != null ? _ref4 : true;
1987
+ return (_ref3 = enableRowPinning != null ? enableRowPinning : enablePinning) != null ? _ref3 : true;
1670
1988
  };
1671
1989
  row.getIsPinned = () => {
1672
1990
  const rowIds = [row.id];
@@ -1681,72 +1999,30 @@ const Pinning = {
1681
1999
  row.getPinnedIndex = () => {
1682
2000
  var _table$_getPinnedRows, _visiblePinnedRowIds$;
1683
2001
  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);
2002
+ if (!position) return -1;
2003
+ const visiblePinnedRowIds = (_table$_getPinnedRows = table._getPinnedRows(position)) == null ? void 0 : _table$_getPinnedRows.map(_ref4 => {
2004
+ let {
2005
+ id
2006
+ } = _ref4;
2007
+ return id;
2008
+ });
2009
+ return (_visiblePinnedRowIds$ = visiblePinnedRowIds == null ? void 0 : visiblePinnedRowIds.indexOf(row.id)) != null ? _visiblePinnedRowIds$ : -1;
1726
2010
  };
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'));
2011
+ },
2012
+ createTable: table => {
1737
2013
  table.setRowPinning = updater => table.options.onRowPinningChange == null ? void 0 : table.options.onRowPinningChange(updater);
1738
2014
  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());
2015
+ var _table$initialState$r, _table$initialState;
2016
+ return table.setRowPinning(defaultState ? getDefaultRowPinningState() : (_table$initialState$r = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.rowPinning) != null ? _table$initialState$r : getDefaultRowPinningState());
1741
2017
  };
1742
2018
  table.getIsSomeRowsPinned = position => {
1743
- var _pinningState$positio2;
2019
+ var _pinningState$positio;
1744
2020
  const pinningState = table.getState().rowPinning;
1745
2021
  if (!position) {
1746
2022
  var _pinningState$top, _pinningState$bottom;
1747
2023
  return Boolean(((_pinningState$top = pinningState.top) == null ? void 0 : _pinningState$top.length) || ((_pinningState$bottom = pinningState.bottom) == null ? void 0 : _pinningState$bottom.length));
1748
2024
  }
1749
- return Boolean((_pinningState$positio2 = pinningState[position]) == null ? void 0 : _pinningState$positio2.length);
2025
+ return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);
1750
2026
  };
1751
2027
  table._getPinnedRows = memo(position => [table.getRowModel().rows, table.getState().rowPinning[position], position], (visibleRows, pinnedRowIds, position) => {
1752
2028
  var _table$options$keepPi;
@@ -2252,7 +2528,7 @@ const sortingFns = {
2252
2528
 
2253
2529
  //
2254
2530
 
2255
- const Sorting = {
2531
+ const RowSorting = {
2256
2532
  getInitialState: state => {
2257
2533
  return {
2258
2534
  sorting: [],
@@ -2459,99 +2735,22 @@ const Sorting = {
2459
2735
  }
2460
2736
  };
2461
2737
 
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];
2738
+ const builtInFeatures = [Headers, ColumnVisibility, ColumnOrdering, ColumnPinning, ColumnFaceting, ColumnFiltering, GlobalFiltering,
2739
+ //depends on ColumnFiltering and ColumnFaceting
2740
+ RowSorting, ColumnGrouping,
2741
+ //depends on RowSorting
2742
+ RowExpanding, RowPagination, RowPinning, RowSelection, ColumnSizing];
2545
2743
 
2546
2744
  //
2547
2745
 
2548
2746
  function createTable(options) {
2549
- var _options$initialState;
2550
- if (options.debugAll || options.debugTable) {
2747
+ var _options$_features, _options$initialState;
2748
+ if (process.env.NODE_ENV !== 'production' && (options.debugAll || options.debugTable)) {
2551
2749
  console.info('Creating Table Instance...');
2552
2750
  }
2751
+ const _features = [...builtInFeatures, ...((_options$_features = options._features) != null ? _options$_features : [])];
2553
2752
  let table = {
2554
- _features: features
2753
+ _features
2555
2754
  };
2556
2755
  const defaultOptions = table._features.reduce((obj, feature) => {
2557
2756
  return Object.assign(obj, feature.getDefaultOptions == null ? void 0 : feature.getDefaultOptions(table));
@@ -2577,7 +2776,7 @@ function createTable(options) {
2577
2776
  const queued = [];
2578
2777
  let queuedTimeout = false;
2579
2778
  const coreInstance = {
2580
- _features: features,
2779
+ _features,
2581
2780
  options: {
2582
2781
  ...defaultOptions,
2583
2782
  ...options
@@ -2641,232 +2840,77 @@ function createTable(options) {
2641
2840
  throw new Error();
2642
2841
  }
2643
2842
  }
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);
2843
+ return row;
2844
+ },
2845
+ _getDefaultColumnDef: memo(() => [table.options.defaultColumn], defaultColumn => {
2846
+ var _defaultColumn;
2847
+ defaultColumn = (_defaultColumn = defaultColumn) != null ? _defaultColumn : {};
2848
+ return {
2849
+ header: props => {
2850
+ const resolvedColumnDef = props.header.column.columnDef;
2851
+ if (resolvedColumnDef.accessorKey) {
2852
+ return resolvedColumnDef.accessorKey;
2853
+ }
2854
+ if (resolvedColumnDef.accessorFn) {
2855
+ return resolvedColumnDef.id;
2856
+ }
2857
+ return null;
2858
+ },
2859
+ // footer: props => props.header.column.id,
2860
+ cell: props => {
2861
+ var _props$renderValue$to, _props$renderValue;
2862
+ return (_props$renderValue$to = (_props$renderValue = props.renderValue()) == null || _props$renderValue.toString == null ? void 0 : _props$renderValue.toString()) != null ? _props$renderValue$to : null;
2863
+ },
2864
+ ...table._features.reduce((obj, feature) => {
2865
+ return Object.assign(obj, feature.getDefaultColumnDef == null ? void 0 : feature.getDefaultColumnDef());
2866
+ }, {}),
2867
+ ...defaultColumn
2868
+ };
2869
+ }, getMemoOptions(options, 'debugColumns', '_getDefaultColumnDef')),
2870
+ _getColumnDefs: () => table.options.columns,
2871
+ getAllColumns: memo(() => [table._getColumnDefs()], columnDefs => {
2872
+ const recurseColumns = function (columnDefs, parent, depth) {
2873
+ if (depth === void 0) {
2874
+ depth = 0;
2875
+ }
2876
+ return columnDefs.map(columnDef => {
2877
+ const column = createColumn(table, columnDef, depth, parent);
2878
+ const groupingColumnDef = columnDef;
2879
+ column.columns = groupingColumnDef.columns ? recurseColumns(groupingColumnDef.columns, column, depth + 1) : [];
2880
+ return column;
2881
+ });
2882
+ };
2883
+ return recurseColumns(columnDefs);
2884
+ }, getMemoOptions(options, 'debugColumns', 'getAllColumns')),
2885
+ getAllFlatColumns: memo(() => [table.getAllColumns()], allColumns => {
2886
+ return allColumns.flatMap(column => {
2887
+ return column.getFlatColumns();
2799
2888
  });
2800
- }, getMemoOptions(table.options, 'debugRows', 'getAllCells')),
2801
- _getAllCellsByColumnId: memo(() => [row.getAllCells()], allCells => {
2802
- return allCells.reduce((acc, cell) => {
2803
- acc[cell.column.id] = cell;
2889
+ }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumns')),
2890
+ _getAllFlatColumnsById: memo(() => [table.getAllFlatColumns()], flatColumns => {
2891
+ return flatColumns.reduce((acc, column) => {
2892
+ acc[column.id] = column;
2804
2893
  return acc;
2805
2894
  }, {});
2806
- }, getMemoOptions(table.options, 'debugRows', 'getAllCellsByColumnId'))
2895
+ }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumnsById')),
2896
+ getAllLeafColumns: memo(() => [table.getAllColumns(), table._getOrderColumnsFn()], (allColumns, orderColumns) => {
2897
+ let leafColumns = allColumns.flatMap(column => column.getLeafColumns());
2898
+ return orderColumns(leafColumns);
2899
+ }, getMemoOptions(options, 'debugColumns', 'getAllLeafColumns')),
2900
+ getColumn: columnId => {
2901
+ const column = table._getAllFlatColumnsById()[columnId];
2902
+ if (process.env.NODE_ENV !== 'production' && !column) {
2903
+ console.error(`[Table] Column with id '${columnId}' does not exist.`);
2904
+ }
2905
+ return column;
2906
+ }
2807
2907
  };
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);
2908
+ Object.assign(table, coreInstance);
2909
+ for (let index = 0; index < table._features.length; index++) {
2910
+ const feature = table._features[index];
2911
+ feature == null || feature.createTable == null || feature.createTable(table);
2811
2912
  }
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
- };
2913
+ return table;
2870
2914
  }
2871
2915
 
2872
2916
  function getCoreRowModel() {
@@ -2917,6 +2961,62 @@ function getCoreRowModel() {
2917
2961
  }, getMemoOptions(table.options, 'debugTable', 'getRowModel', () => table._autoResetPageIndex()));
2918
2962
  }
2919
2963
 
2964
+ function getExpandedRowModel() {
2965
+ return table => memo(() => [table.getState().expanded, table.getPreExpandedRowModel(), table.options.paginateExpandedRows], (expanded, rowModel, paginateExpandedRows) => {
2966
+ if (!rowModel.rows.length || expanded !== true && !Object.keys(expanded != null ? expanded : {}).length) {
2967
+ return rowModel;
2968
+ }
2969
+ if (!paginateExpandedRows) {
2970
+ // Only expand rows at this point if they are being paginated
2971
+ return rowModel;
2972
+ }
2973
+ return expandRows(rowModel);
2974
+ }, getMemoOptions(table.options, 'debugTable', 'getExpandedRowModel'));
2975
+ }
2976
+ function expandRows(rowModel) {
2977
+ const expandedRows = [];
2978
+ const handleRow = row => {
2979
+ var _row$subRows;
2980
+ expandedRows.push(row);
2981
+ if ((_row$subRows = row.subRows) != null && _row$subRows.length && row.getIsExpanded()) {
2982
+ row.subRows.forEach(handleRow);
2983
+ }
2984
+ };
2985
+ rowModel.rows.forEach(handleRow);
2986
+ return {
2987
+ rows: expandedRows,
2988
+ flatRows: rowModel.flatRows,
2989
+ rowsById: rowModel.rowsById
2990
+ };
2991
+ }
2992
+
2993
+ function getFacetedMinMaxValues() {
2994
+ return (table, columnId) => memo(() => {
2995
+ var _table$getColumn;
2996
+ return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];
2997
+ }, facetedRowModel => {
2998
+ var _facetedRowModel$flat;
2999
+ if (!facetedRowModel) return undefined;
3000
+ const firstValue = (_facetedRowModel$flat = facetedRowModel.flatRows[0]) == null ? void 0 : _facetedRowModel$flat.getUniqueValues(columnId);
3001
+ if (typeof firstValue === 'undefined') {
3002
+ return undefined;
3003
+ }
3004
+ let facetedMinMaxValues = [firstValue, firstValue];
3005
+ for (let i = 0; i < facetedRowModel.flatRows.length; i++) {
3006
+ const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);
3007
+ for (let j = 0; j < values.length; j++) {
3008
+ const value = values[j];
3009
+ if (value < facetedMinMaxValues[0]) {
3010
+ facetedMinMaxValues[0] = value;
3011
+ } else if (value > facetedMinMaxValues[1]) {
3012
+ facetedMinMaxValues[1] = value;
3013
+ }
3014
+ }
3015
+ }
3016
+ return facetedMinMaxValues;
3017
+ }, getMemoOptions(table.options, 'debugTable', 'getFacetedMinMaxValues'));
3018
+ }
3019
+
2920
3020
  function filterRows(rows, filterRowImpl, table) {
2921
3021
  if (table.options.filterFromLeafRows) {
2922
3022
  return filterRowModelFromLeafs(rows, filterRowImpl, table);
@@ -3012,6 +3112,48 @@ function filterRowModelFromRoot(rowsToFilter, filterRow, table) {
3012
3112
  };
3013
3113
  }
3014
3114
 
3115
+ function getFacetedRowModel() {
3116
+ return (table, columnId) => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter, table.getFilteredRowModel()], (preRowModel, columnFilters, globalFilter) => {
3117
+ if (!preRowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {
3118
+ return preRowModel;
3119
+ }
3120
+ const filterableIds = [...columnFilters.map(d => d.id).filter(d => d !== columnId), globalFilter ? '__global__' : undefined].filter(Boolean);
3121
+ const filterRowsImpl = row => {
3122
+ // Horizontally filter rows through each column
3123
+ for (let i = 0; i < filterableIds.length; i++) {
3124
+ if (row.columnFilters[filterableIds[i]] === false) {
3125
+ return false;
3126
+ }
3127
+ }
3128
+ return true;
3129
+ };
3130
+ return filterRows(preRowModel.rows, filterRowsImpl, table);
3131
+ }, getMemoOptions(table.options, 'debugTable', 'getFacetedRowModel'));
3132
+ }
3133
+
3134
+ function getFacetedUniqueValues() {
3135
+ return (table, columnId) => memo(() => {
3136
+ var _table$getColumn;
3137
+ return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];
3138
+ }, facetedRowModel => {
3139
+ if (!facetedRowModel) return new Map();
3140
+ let facetedUniqueValues = new Map();
3141
+ for (let i = 0; i < facetedRowModel.flatRows.length; i++) {
3142
+ const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);
3143
+ for (let j = 0; j < values.length; j++) {
3144
+ const value = values[j];
3145
+ if (facetedUniqueValues.has(value)) {
3146
+ var _facetedUniqueValues$;
3147
+ facetedUniqueValues.set(value, ((_facetedUniqueValues$ = facetedUniqueValues.get(value)) != null ? _facetedUniqueValues$ : 0) + 1);
3148
+ } else {
3149
+ facetedUniqueValues.set(value, 1);
3150
+ }
3151
+ }
3152
+ }
3153
+ return facetedUniqueValues;
3154
+ }, getMemoOptions(table.options, 'debugTable', `getFacetedUniqueValues_${columnId}`));
3155
+ }
3156
+
3015
3157
  function getFilteredRowModel() {
3016
3158
  return table => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter], (rowModel, columnFilters, globalFilter) => {
3017
3159
  if (!rowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {
@@ -3084,34 +3226,13 @@ function getFilteredRowModel() {
3084
3226
  })) {
3085
3227
  row.columnFilters.__global__ = true;
3086
3228
  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;
3229
+ }
3230
+ }
3231
+ if (row.columnFilters.__global__ !== true) {
3232
+ row.columnFilters.__global__ = false;
3233
+ }
3234
+ }
3113
3235
  }
3114
- const filterableIds = [...columnFilters.map(d => d.id).filter(d => d !== columnId), globalFilter ? '__global__' : undefined].filter(Boolean);
3115
3236
  const filterRowsImpl = row => {
3116
3237
  // Horizontally filter rows through each column
3117
3238
  for (let i = 0; i < filterableIds.length; i++) {
@@ -3121,141 +3242,10 @@ function getFacetedRowModel() {
3121
3242
  }
3122
3243
  return true;
3123
3244
  };
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
3245
 
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()));
3246
+ // Filter final rows using all of the active filters
3247
+ return filterRows(rowModel.rows, filterRowsImpl, table);
3248
+ }, getMemoOptions(table.options, 'debugTable', 'getFilteredRowModel', () => table._autoResetPageIndex()));
3259
3249
  }
3260
3250
 
3261
3251
  function getGroupedRowModel() {
@@ -3391,35 +3381,6 @@ function groupBy(rows, columnId) {
3391
3381
  }, groupMap);
3392
3382
  }
3393
3383
 
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
3384
  function getPaginationRowModel(opts) {
3424
3385
  return table => memo(() => [table.getState().pagination, table.getPrePaginationRowModel(), table.options.paginateExpandedRows ? undefined : table.getState().expanded], (pagination, rowModel) => {
3425
3386
  if (!rowModel.rows.length) {
@@ -3463,5 +3424,88 @@ function getPaginationRowModel(opts) {
3463
3424
  }, getMemoOptions(table.options, 'debugTable', 'getPaginationRowModel'));
3464
3425
  }
3465
3426
 
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 };
3427
+ function getSortedRowModel() {
3428
+ return table => memo(() => [table.getState().sorting, table.getPreSortedRowModel()], (sorting, rowModel) => {
3429
+ if (!rowModel.rows.length || !(sorting != null && sorting.length)) {
3430
+ return rowModel;
3431
+ }
3432
+ const sortingState = table.getState().sorting;
3433
+ const sortedFlatRows = [];
3434
+
3435
+ // Filter out sortings that correspond to non existing columns
3436
+ const availableSorting = sortingState.filter(sort => {
3437
+ var _table$getColumn;
3438
+ return (_table$getColumn = table.getColumn(sort.id)) == null ? void 0 : _table$getColumn.getCanSort();
3439
+ });
3440
+ const columnInfoById = {};
3441
+ availableSorting.forEach(sortEntry => {
3442
+ const column = table.getColumn(sortEntry.id);
3443
+ if (!column) return;
3444
+ columnInfoById[sortEntry.id] = {
3445
+ sortUndefined: column.columnDef.sortUndefined,
3446
+ invertSorting: column.columnDef.invertSorting,
3447
+ sortingFn: column.getSortingFn()
3448
+ };
3449
+ });
3450
+ const sortData = rows => {
3451
+ // This will also perform a stable sorting using the row index
3452
+ // if needed.
3453
+ const sortedData = rows.map(row => ({
3454
+ ...row
3455
+ }));
3456
+ sortedData.sort((rowA, rowB) => {
3457
+ for (let i = 0; i < availableSorting.length; i += 1) {
3458
+ var _sortEntry$desc;
3459
+ const sortEntry = availableSorting[i];
3460
+ const columnInfo = columnInfoById[sortEntry.id];
3461
+ const isDesc = (_sortEntry$desc = sortEntry == null ? void 0 : sortEntry.desc) != null ? _sortEntry$desc : false;
3462
+ let sortInt = 0;
3463
+
3464
+ // All sorting ints should always return in ascending order
3465
+ if (columnInfo.sortUndefined) {
3466
+ const aValue = rowA.getValue(sortEntry.id);
3467
+ const bValue = rowB.getValue(sortEntry.id);
3468
+ const aUndefined = aValue === undefined;
3469
+ const bUndefined = bValue === undefined;
3470
+ if (aUndefined || bUndefined) {
3471
+ sortInt = aUndefined && bUndefined ? 0 : aUndefined ? columnInfo.sortUndefined : -columnInfo.sortUndefined;
3472
+ }
3473
+ }
3474
+ if (sortInt === 0) {
3475
+ sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id);
3476
+ }
3477
+
3478
+ // If sorting is non-zero, take care of desc and inversion
3479
+ if (sortInt !== 0) {
3480
+ if (isDesc) {
3481
+ sortInt *= -1;
3482
+ }
3483
+ if (columnInfo.invertSorting) {
3484
+ sortInt *= -1;
3485
+ }
3486
+ return sortInt;
3487
+ }
3488
+ }
3489
+ return rowA.index - rowB.index;
3490
+ });
3491
+
3492
+ // If there are sub-rows, sort them
3493
+ sortedData.forEach(row => {
3494
+ var _row$subRows;
3495
+ sortedFlatRows.push(row);
3496
+ if ((_row$subRows = row.subRows) != null && _row$subRows.length) {
3497
+ row.subRows = sortData(row.subRows);
3498
+ }
3499
+ });
3500
+ return sortedData;
3501
+ };
3502
+ return {
3503
+ rows: sortData(rowModel.rows),
3504
+ flatRows: sortedFlatRows,
3505
+ rowsById: rowModel.rowsById
3506
+ };
3507
+ }, getMemoOptions(table.options, 'debugTable', 'getSortedRowModel', () => table._autoResetPageIndex()));
3508
+ }
3509
+
3510
+ export { ColumnFaceting, ColumnFiltering, ColumnGrouping, ColumnOrdering, ColumnPinning, ColumnSizing, ColumnVisibility, 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
3511
  //# sourceMappingURL=index.mjs.map