@tanstack/table-core 8.1.4 → 8.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/build/cjs/aggregationFns.js.map +1 -1
  2. package/build/cjs/core/cell.js.map +1 -1
  3. package/build/cjs/core/column.js.map +1 -1
  4. package/build/cjs/core/headers.js.map +1 -1
  5. package/build/cjs/core/row.js.map +1 -1
  6. package/build/cjs/core/table.js +2 -2
  7. package/build/cjs/core/table.js.map +1 -1
  8. package/build/cjs/features/ColumnSizing.js.map +1 -1
  9. package/build/cjs/features/Filters.js.map +1 -1
  10. package/build/cjs/features/Grouping.js.map +1 -1
  11. package/build/cjs/features/Ordering.js.map +1 -1
  12. package/build/cjs/features/Pinning.js.map +1 -1
  13. package/build/cjs/features/Sorting.js +33 -26
  14. package/build/cjs/features/Sorting.js.map +1 -1
  15. package/build/cjs/features/Visibility.js.map +1 -1
  16. package/build/cjs/filterFns.js.map +1 -1
  17. package/build/cjs/sortingFns.js +6 -1
  18. package/build/cjs/sortingFns.js.map +1 -1
  19. package/build/cjs/utils/getCoreRowModel.js.map +1 -1
  20. package/build/cjs/utils/getFacetedMinMaxValues.js +1 -3
  21. package/build/cjs/utils/getFacetedMinMaxValues.js.map +1 -1
  22. package/build/cjs/utils/getGroupedRowModel.js +1 -1
  23. package/build/cjs/utils/getGroupedRowModel.js.map +1 -1
  24. package/build/esm/index.js +43 -33
  25. package/build/esm/index.js.map +1 -1
  26. package/build/stats-html.html +1 -1
  27. package/build/stats-react.json +310 -310
  28. package/build/types/index.d.ts +94 -90
  29. package/build/umd/index.development.js +43 -33
  30. package/build/umd/index.development.js.map +1 -1
  31. package/build/umd/index.production.js +1 -1
  32. package/build/umd/index.production.js.map +1 -1
  33. package/package.json +1 -1
  34. package/src/aggregationFns.ts +8 -11
  35. package/src/core/cell.ts +14 -14
  36. package/src/core/column.ts +58 -47
  37. package/src/core/headers.ts +32 -32
  38. package/src/core/row.ts +9 -9
  39. package/src/core/table.ts +11 -10
  40. package/src/features/ColumnSizing.ts +5 -5
  41. package/src/features/Filters.ts +9 -14
  42. package/src/features/Grouping.ts +15 -10
  43. package/src/features/Ordering.ts +4 -2
  44. package/src/features/Pinning.ts +10 -10
  45. package/src/features/Sorting.ts +40 -29
  46. package/src/features/Visibility.ts +11 -11
  47. package/src/filterFns.ts +13 -7
  48. package/src/sortingFns.ts +7 -4
  49. package/src/types.ts +16 -12
  50. package/src/utils/getCoreRowModel.ts +1 -1
  51. package/src/utils/getFacetedMinMaxValues.ts +1 -1
  52. package/src/utils/getGroupedRowModel.ts +7 -1
@@ -8,43 +8,43 @@
8
8
  *
9
9
  * @license MIT
10
10
  */
11
- declare type CoreCell<TData extends RowData> = {
11
+ declare type CoreCell<TData extends RowData, TValue> = {
12
12
  id: string;
13
- getValue: () => any;
14
- renderValue: () => unknown;
13
+ getValue: <TTValue = TValue>() => TTValue;
14
+ renderValue: <TTValue = TValue>() => TTValue | null;
15
15
  row: Row<TData>;
16
- column: Column<TData>;
16
+ column: Column<TData, TValue>;
17
17
  getContext: () => {
18
18
  table: Table<TData>;
19
- column: Column<TData>;
19
+ column: Column<TData, TValue>;
20
20
  row: Row<TData>;
21
- cell: Cell<TData>;
22
- getValue: () => any;
23
- renderValue: () => any;
21
+ cell: Cell<TData, TValue>;
22
+ getValue: <TTValue = TValue>() => TTValue;
23
+ renderValue: <TTValue = TValue>() => TTValue | null;
24
24
  };
25
25
  };
26
26
 
27
27
  declare type CoreHeaderGroup<TData extends RowData> = {
28
28
  id: string;
29
29
  depth: number;
30
- headers: Header<TData>[];
30
+ headers: Header<TData, unknown>[];
31
31
  };
32
- declare type CoreHeader<TData extends RowData> = {
32
+ declare type CoreHeader<TData extends RowData, TValue> = {
33
33
  id: string;
34
34
  index: number;
35
35
  depth: number;
36
- column: Column<TData>;
36
+ column: Column<TData, TValue>;
37
37
  headerGroup: HeaderGroup<TData>;
38
- subHeaders: Header<TData>[];
38
+ subHeaders: Header<TData, TValue>[];
39
39
  colSpan: number;
40
40
  rowSpan: number;
41
- getLeafHeaders: () => Header<TData>[];
41
+ getLeafHeaders: () => Header<TData, unknown>[];
42
42
  isPlaceholder: boolean;
43
43
  placeholderId?: string;
44
44
  getContext: () => {
45
45
  table: Table<TData>;
46
- header: Header<TData>;
47
- column: Column<TData>;
46
+ header: Header<TData, TValue>;
47
+ column: Column<TData, TValue>;
48
48
  };
49
49
  };
50
50
  declare type HeadersInstance<TData extends RowData> = {
@@ -56,54 +56,54 @@ declare type HeadersInstance<TData extends RowData> = {
56
56
  getLeftFooterGroups: () => HeaderGroup<TData>[];
57
57
  getCenterFooterGroups: () => HeaderGroup<TData>[];
58
58
  getRightFooterGroups: () => HeaderGroup<TData>[];
59
- getFlatHeaders: () => Header<TData>[];
60
- getLeftFlatHeaders: () => Header<TData>[];
61
- getCenterFlatHeaders: () => Header<TData>[];
62
- getRightFlatHeaders: () => Header<TData>[];
63
- getLeafHeaders: () => Header<TData>[];
64
- getLeftLeafHeaders: () => Header<TData>[];
65
- getCenterLeafHeaders: () => Header<TData>[];
66
- getRightLeafHeaders: () => Header<TData>[];
59
+ getFlatHeaders: () => Header<TData, unknown>[];
60
+ getLeftFlatHeaders: () => Header<TData, unknown>[];
61
+ getCenterFlatHeaders: () => Header<TData, unknown>[];
62
+ getRightFlatHeaders: () => Header<TData, unknown>[];
63
+ getLeafHeaders: () => Header<TData, unknown>[];
64
+ getLeftLeafHeaders: () => Header<TData, unknown>[];
65
+ getCenterLeafHeaders: () => Header<TData, unknown>[];
66
+ getRightLeafHeaders: () => Header<TData, unknown>[];
67
67
  };
68
68
  declare const Headers: TableFeature;
69
- declare function buildHeaderGroups<TData extends RowData>(allColumns: Column<TData>[], columnsToGroup: Column<TData>[], table: Table<TData>, headerFamily?: 'center' | 'left' | 'right'): HeaderGroup<TData>[];
69
+ declare function buildHeaderGroups<TData extends RowData>(allColumns: Column<TData, unknown>[], columnsToGroup: Column<TData, unknown>[], table: Table<TData>, headerFamily?: 'center' | 'left' | 'right'): HeaderGroup<TData>[];
70
70
 
71
71
  declare type CoreColumnDefType = 'data' | 'display' | 'group';
72
- declare type CoreColumnDefBase<TData extends RowData> = {
72
+ declare type CoreColumnDefBase<TData extends RowData, TValue> = {
73
73
  columns?: ColumnDef<TData>[];
74
- header?: ColumnDefTemplate<ReturnType<CoreHeader<TData>['getContext']>>;
75
- footer?: ColumnDefTemplate<ReturnType<CoreHeader<TData>['getContext']>>;
76
- cell?: ColumnDefTemplate<ReturnType<CoreCell<TData>['getContext']>>;
77
- meta?: unknown;
74
+ header?: ColumnDefTemplate<ReturnType<CoreHeader<TData, TValue>['getContext']>>;
75
+ footer?: ColumnDefTemplate<ReturnType<CoreHeader<TData, TValue>['getContext']>>;
76
+ cell?: ColumnDefTemplate<ReturnType<CoreCell<TData, TValue>['getContext']>>;
77
+ meta?: ColumnMeta;
78
78
  };
79
- declare type CoreColumnDefDisplay<TData extends RowData> = CoreColumnDefBase<TData> & {
79
+ declare type CoreColumnDefDisplay<TData extends RowData, TValue> = CoreColumnDefBase<TData, TValue> & {
80
80
  id: string;
81
81
  };
82
- declare type CoreColumnDefDisplayWithStringHeader<TData extends RowData> = CoreColumnDefBase<TData> & {
82
+ declare type CoreColumnDefDisplayWithStringHeader<TData extends RowData, TValue> = CoreColumnDefBase<TData, TValue> & {
83
83
  header: string;
84
84
  id?: string;
85
85
  };
86
- declare type CoreColumnDefAccessorFn<TData extends RowData> = CoreColumnDefBase<TData> & {
87
- accessorFn: AccessorFn<TData>;
86
+ declare type CoreColumnDefAccessorFn<TData extends RowData, TValue = unknown> = CoreColumnDefBase<TData, TValue> & {
87
+ accessorFn: AccessorFn<TData, TValue>;
88
88
  id: string;
89
89
  };
90
- declare type CoreColumnDefAccessorKey<TData extends RowData> = CoreColumnDefBase<TData> & {
90
+ declare type CoreColumnDefAccessorKey<TData extends RowData, TValue> = CoreColumnDefBase<TData, TValue> & {
91
91
  accessorKey: keyof TData;
92
92
  id?: string;
93
93
  };
94
- declare type CoreColumnDef<TData extends RowData> = CoreColumnDefDisplay<TData> | CoreColumnDefDisplayWithStringHeader<TData> | CoreColumnDefAccessorFn<TData> | CoreColumnDefAccessorKey<TData>;
95
- declare type CoreColumnDefResolved<TData extends RowData> = Partial<UnionToIntersection<CoreColumnDef<TData>>>;
96
- declare type CoreColumn<TData extends RowData> = {
94
+ declare type CoreColumnDef<TData extends RowData, TValue> = CoreColumnDefDisplay<TData, TValue> | CoreColumnDefDisplayWithStringHeader<TData, TValue> | CoreColumnDefAccessorFn<TData> | CoreColumnDefAccessorKey<TData, TValue>;
95
+ declare type CoreColumnDefResolved<TData extends RowData, TValue = unknown> = Partial<UnionToIntersection<CoreColumnDef<TData, TValue>>>;
96
+ declare type CoreColumn<TData extends RowData, TValue> = {
97
97
  id: string;
98
98
  depth: number;
99
- accessorFn?: AccessorFn<TData>;
99
+ accessorFn?: AccessorFn<TData, TValue>;
100
100
  columnDef: ColumnDef<TData>;
101
- columns: Column<TData>[];
102
- parent?: Column<TData>;
103
- getFlatColumns: () => Column<TData>[];
104
- getLeafColumns: () => Column<TData>[];
101
+ columns: Column<TData, TValue>[];
102
+ parent?: Column<TData, TValue>;
103
+ getFlatColumns: () => Column<TData, TValue>[];
104
+ getLeafColumns: () => Column<TData, TValue>[];
105
105
  };
106
- declare function createColumn<TData extends RowData>(table: Table<TData>, columnDef: ColumnDef<TData>, depth: number, parent?: Column<TData>): Column<TData>;
106
+ declare function createColumn<TData extends RowData, TValue>(table: Table<TData>, columnDef: ColumnDef<TData>, depth: number, parent?: Column<TData, TValue>): Column<TData, TValue>;
107
107
 
108
108
  declare type VisibilityState = Record<string, boolean>;
109
109
  declare type VisibilityTableState = {
@@ -117,11 +117,11 @@ declare type VisibilityDefaultOptions = {
117
117
  onColumnVisibilityChange: OnChangeFn<VisibilityState>;
118
118
  };
119
119
  declare type VisibilityInstance<TData extends RowData> = {
120
- getVisibleFlatColumns: () => Column<TData>[];
121
- getVisibleLeafColumns: () => Column<TData>[];
122
- getLeftVisibleLeafColumns: () => Column<TData>[];
123
- getRightVisibleLeafColumns: () => Column<TData>[];
124
- getCenterVisibleLeafColumns: () => Column<TData>[];
120
+ getVisibleFlatColumns: () => Column<TData, unknown>[];
121
+ getVisibleLeafColumns: () => Column<TData, unknown>[];
122
+ getLeftVisibleLeafColumns: () => Column<TData, unknown>[];
123
+ getRightVisibleLeafColumns: () => Column<TData, unknown>[];
124
+ getCenterVisibleLeafColumns: () => Column<TData, unknown>[];
125
125
  setColumnVisibility: (updater: Updater<VisibilityState>) => void;
126
126
  resetColumnVisibility: (defaultState?: boolean) => void;
127
127
  toggleAllColumnsVisible: (value?: boolean) => void;
@@ -133,8 +133,8 @@ declare type VisibilityColumnDef = {
133
133
  enableHiding?: boolean;
134
134
  };
135
135
  declare type VisibilityRow<TData extends RowData> = {
136
- _getAllVisibleCells: () => Cell<TData>[];
137
- getVisibleCells: () => Cell<TData>[];
136
+ _getAllVisibleCells: () => Cell<TData, unknown>[];
137
+ getVisibleCells: () => Cell<TData, unknown>[];
138
138
  };
139
139
  declare type VisibilityColumn = {
140
140
  getCanHide: () => boolean;
@@ -157,7 +157,7 @@ declare type ColumnOrderDefaultOptions = {
157
157
  declare type ColumnOrderInstance<TData extends RowData> = {
158
158
  setColumnOrder: (updater: Updater<ColumnOrderState>) => void;
159
159
  resetColumnOrder: (defaultState?: boolean) => void;
160
- _getOrderColumnsFn: () => (columns: Column<TData>[]) => Column<TData>[];
160
+ _getOrderColumnsFn: () => (columns: Column<TData, unknown>[]) => Column<TData, unknown>[];
161
161
  };
162
162
  declare const Ordering: TableFeature;
163
163
 
@@ -186,17 +186,17 @@ declare type ColumnPinningColumn = {
186
186
  pin: (position: ColumnPinningPosition) => void;
187
187
  };
188
188
  declare type ColumnPinningRow<TData extends RowData> = {
189
- getLeftVisibleCells: () => Cell<TData>[];
190
- getCenterVisibleCells: () => Cell<TData>[];
191
- getRightVisibleCells: () => Cell<TData>[];
189
+ getLeftVisibleCells: () => Cell<TData, unknown>[];
190
+ getCenterVisibleCells: () => Cell<TData, unknown>[];
191
+ getRightVisibleCells: () => Cell<TData, unknown>[];
192
192
  };
193
193
  declare type ColumnPinningInstance<TData extends RowData> = {
194
194
  setColumnPinning: (updater: Updater<ColumnPinningState>) => void;
195
195
  resetColumnPinning: (defaultState?: boolean) => void;
196
196
  getIsSomeColumnsPinned: (position?: ColumnPinningPosition) => boolean;
197
- getLeftLeafColumns: () => Column<TData>[];
198
- getRightLeafColumns: () => Column<TData>[];
199
- getCenterLeafColumns: () => Column<TData>[];
197
+ getLeftLeafColumns: () => Column<TData, unknown>[];
198
+ getRightLeafColumns: () => Column<TData, unknown>[];
199
+ getCenterLeafColumns: () => Column<TData, unknown>[];
200
200
  };
201
201
  declare const Pinning: TableFeature;
202
202
 
@@ -228,12 +228,12 @@ declare type ResolvedColumnFilter<TData extends RowData> = {
228
228
  filterFn: FilterFn<TData>;
229
229
  };
230
230
  declare type FilterFn<TData extends RowData> = {
231
- (row: Row<TData>, columnId: string, filterValue: any, addMeta: (meta: any) => void): boolean;
231
+ (row: Row<TData>, columnId: string, filterValue: any, addMeta: (meta: FilterMeta) => void): boolean;
232
232
  resolveFilterValue?: TransformFilterValueFn<TData>;
233
233
  autoRemove?: ColumnFilterAutoRemoveTestFn<TData>;
234
234
  };
235
- declare type TransformFilterValueFn<TData extends RowData> = (value: any, column?: Column<TData>) => unknown;
236
- declare type ColumnFilterAutoRemoveTestFn<TData extends RowData> = (value: any, column?: Column<TData>) => boolean;
235
+ declare type TransformFilterValueFn<TData extends RowData> = (value: any, column?: Column<TData, unknown>) => unknown;
236
+ declare type ColumnFilterAutoRemoveTestFn<TData extends RowData> = (value: any, column?: Column<TData, unknown>) => boolean;
237
237
  declare type CustomFilterFns<TData extends RowData> = Record<string, FilterFn<TData>>;
238
238
  declare type FilterFnOption<TData extends RowData> = 'auto' | BuiltInFilterFn | FilterFn<TData>;
239
239
  declare type FiltersColumnDef<TData extends RowData> = {
@@ -259,7 +259,7 @@ declare type FiltersColumn<TData extends RowData> = {
259
259
  };
260
260
  declare type FiltersRow<TData extends RowData> = {
261
261
  columnFilters: Record<string, boolean>;
262
- columnFiltersMeta: Record<string, any>;
262
+ columnFiltersMeta: Record<string, FilterMeta>;
263
263
  };
264
264
  declare type FiltersOptions<TData extends RowData> = {
265
265
  enableFilters?: boolean;
@@ -271,7 +271,7 @@ declare type FiltersOptions<TData extends RowData> = {
271
271
  globalFilterFn?: FilterFnOption<TData>;
272
272
  onGlobalFilterChange?: OnChangeFn<any>;
273
273
  enableGlobalFilter?: boolean;
274
- getColumnCanGlobalFilter?: (column: Column<TData>) => boolean;
274
+ getColumnCanGlobalFilter?: (column: Column<TData, unknown>) => boolean;
275
275
  getFacetedRowModel?: (table: Table<TData>, columnId: string) => () => RowModel<TData>;
276
276
  getFacetedUniqueValues?: (table: Table<TData>, columnId: string) => () => Map<any, number>;
277
277
  getFacetedMinMaxValues?: (table: Table<TData>, columnId: string) => () => undefined | [number, number];
@@ -294,7 +294,7 @@ declare type FiltersInstance<TData extends RowData> = {
294
294
  _getGlobalFacetedMinMaxValues?: () => undefined | [number, number];
295
295
  };
296
296
  declare const Filters: TableFeature;
297
- declare function shouldAutoRemoveFilter<TData extends RowData>(filterFn?: FilterFn<TData>, value?: any, column?: Column<TData>): boolean;
297
+ declare function shouldAutoRemoveFilter<TData extends RowData>(filterFn?: FilterFn<TData>, value?: any, column?: Column<TData, unknown>): boolean;
298
298
 
299
299
  declare const reSplitAlphaNumeric: RegExp;
300
300
  declare const sortingFns: {
@@ -333,6 +333,7 @@ declare type SortingColumn<TData extends RowData> = {
333
333
  getAutoSortingFn: () => SortingFn<TData>;
334
334
  getAutoSortDir: () => SortDirection;
335
335
  getSortingFn: () => SortingFn<TData>;
336
+ getFirstSortDir: () => SortDirection;
336
337
  getNextSortingOrder: () => SortDirection | false;
337
338
  getCanSort: () => boolean;
338
339
  getCanMultiSort: () => boolean;
@@ -383,9 +384,9 @@ declare type GroupingTableState = {
383
384
  declare type AggregationFn<TData extends RowData> = (columnId: string, leafRows: Row<TData>[], childRows: Row<TData>[]) => any;
384
385
  declare type CustomAggregationFns = Record<string, AggregationFn<any>>;
385
386
  declare type AggregationFnOption<TData extends RowData> = 'auto' | BuiltInAggregationFn | AggregationFn<TData>;
386
- declare type GroupingColumnDef<TData extends RowData> = {
387
+ declare type GroupingColumnDef<TData extends RowData, TValue> = {
387
388
  aggregationFn?: AggregationFnOption<TData>;
388
- aggregatedCell?: ColumnDefTemplate<ReturnType<Cell<TData>['getContext']>>;
389
+ aggregatedCell?: ColumnDefTemplate<ReturnType<Cell<TData, TValue>['getContext']>>;
389
390
  enableGrouping?: boolean;
390
391
  };
391
392
  declare type GroupingColumn<TData extends RowData> = {
@@ -399,7 +400,7 @@ declare type GroupingColumn<TData extends RowData> = {
399
400
  };
400
401
  declare type GroupingRow = {
401
402
  groupingColumnId?: string;
402
- groupingValue?: any;
403
+ groupingValue?: unknown;
403
404
  getIsGrouped: () => boolean;
404
405
  _groupingValuesCache: Record<string, any>;
405
406
  };
@@ -428,7 +429,7 @@ declare type GroupingInstance<TData extends RowData> = {
428
429
  _getGroupedRowModel?: () => RowModel<TData>;
429
430
  };
430
431
  declare const Grouping: TableFeature;
431
- declare function orderColumns<TData extends RowData>(leafColumns: Column<TData>[], grouping: string[], groupedColumnMode?: GroupingColumnMode): Column<TData>[];
432
+ declare function orderColumns<TData extends RowData>(leafColumns: Column<TData, unknown>[], grouping: string[], groupedColumnMode?: GroupingColumnMode): Column<TData, unknown>[];
432
433
 
433
434
  declare type ExpandedStateList = Record<string, boolean>;
434
435
  declare type ExpandedState = true | Record<string, boolean>;
@@ -613,22 +614,28 @@ declare function isSubRowSelected<TData extends RowData>(row: Row<TData>, select
613
614
  declare type CoreRow<TData extends RowData> = {
614
615
  id: string;
615
616
  index: number;
616
- original?: TData;
617
+ original: TData;
617
618
  depth: number;
618
- _valuesCache: Record<string, any>;
619
- getValue: (columnId: string) => any;
620
- renderValue: (columnId: string) => unknown;
619
+ _valuesCache: Record<string, unknown>;
620
+ getValue: <TValue>(columnId: string) => TValue;
621
+ renderValue: <TValue>(columnId: string) => TValue;
621
622
  subRows: Row<TData>[];
622
623
  getLeafRows: () => Row<TData>[];
623
624
  originalSubRows?: TData[];
624
- getAllCells: () => Cell<TData>[];
625
- _getAllCellsByColumnId: () => Record<string, Cell<TData>>;
625
+ getAllCells: () => Cell<TData, unknown>[];
626
+ _getAllCellsByColumnId: () => Record<string, Cell<TData, unknown>>;
626
627
  };
627
- declare const createRow: <TData extends RowData>(table: Table<TData>, id: string, original: TData | undefined, rowIndex: number, depth: number, subRows?: Row<TData>[] | undefined) => Row<TData>;
628
+ declare const createRow: <TData extends unknown>(table: Table<TData>, id: string, original: TData, rowIndex: number, depth: number, subRows?: Row<TData>[] | undefined) => Row<TData>;
628
629
 
630
+ interface TableMeta {
631
+ }
632
+ interface ColumnMeta {
633
+ }
634
+ interface FilterMeta {
635
+ }
629
636
  declare type Updater<T> = T | ((old: T) => T);
630
637
  declare type OnChangeFn<T> = (updaterOrValue: Updater<T>) => void;
631
- declare type RowData = object | any[];
638
+ declare type RowData = unknown | object | any[];
632
639
  declare type TableGenerics = {
633
640
  Row?: any;
634
641
  Value?: any;
@@ -642,20 +649,17 @@ declare type TableOptions<TData extends RowData> = PartialKeys<TableOptionsResol
642
649
  declare type TableState = CoreTableState & VisibilityTableState & ColumnOrderTableState & ColumnPinningTableState & FiltersTableState & SortingTableState & ExpandedTableState & GroupingTableState & ColumnSizingTableState & PaginationTableState & RowSelectionTableState;
643
650
  declare type InitialTableState = Partial<CoreTableState & VisibilityTableState & ColumnOrderTableState & ColumnPinningTableState & FiltersTableState & SortingTableState & ExpandedTableState & GroupingTableState & ColumnSizingTableState & PaginationInitialTableState & RowSelectionTableState>;
644
651
  declare type Row<TData extends RowData> = CoreRow<TData> & VisibilityRow<TData> & ColumnPinningRow<TData> & FiltersRow<TData> & GroupingRow & RowSelectionRow & ExpandedRow;
645
- declare type RowValues = {
646
- [key: string]: any;
647
- };
648
652
  declare type RowModel<TData extends RowData> = {
649
653
  rows: Row<TData>[];
650
654
  flatRows: Row<TData>[];
651
655
  rowsById: Record<string, Row<TData>>;
652
656
  };
653
- declare type AccessorFn<TData extends RowData> = (originalRow: TData, index: number) => any;
657
+ declare type AccessorFn<TData extends RowData, TValue = unknown> = (originalRow: TData, index: number) => TValue;
654
658
  declare type ColumnDefTemplate<TProps extends object> = string | ((props: TProps) => any);
655
- declare type ColumnDef<TData extends RowData> = CoreColumnDef<TData> & VisibilityColumnDef & ColumnPinningColumnDef & FiltersColumnDef<TData> & SortingColumnDef<TData> & GroupingColumnDef<TData> & ColumnSizingColumnDef;
656
- declare type Column<TData extends RowData> = CoreColumn<TData> & VisibilityColumn & ColumnPinningColumn & FiltersColumn<TData> & SortingColumn<TData> & GroupingColumn<TData> & ColumnSizingColumn;
657
- declare type Cell<TData extends RowData> = CoreCell<TData> & GroupingCell;
658
- declare type Header<TData extends RowData> = CoreHeader<TData> & ColumnSizingHeader;
659
+ declare type ColumnDef<TData extends RowData, TValue extends any = unknown> = CoreColumnDef<TData, TValue> & VisibilityColumnDef & ColumnPinningColumnDef & FiltersColumnDef<TData> & SortingColumnDef<TData> & GroupingColumnDef<TData, TValue> & ColumnSizingColumnDef;
660
+ declare type Column<TData extends RowData, TValue> = CoreColumn<TData, TValue> & VisibilityColumn & ColumnPinningColumn & FiltersColumn<TData> & SortingColumn<TData> & GroupingColumn<TData> & ColumnSizingColumn;
661
+ declare type Cell<TData extends RowData, TValue> = CoreCell<TData, TValue> & GroupingCell;
662
+ declare type Header<TData extends RowData, TValue> = CoreHeader<TData, TValue> & ColumnSizingHeader;
659
663
  declare type HeaderGroup<TData extends RowData> = CoreHeaderGroup<TData>;
660
664
  declare type NoInfer<A extends any> = [A][A extends any ? 0 : never];
661
665
 
@@ -701,7 +705,7 @@ declare type CoreOptions<TData extends RowData> = {
701
705
  initialState?: InitialTableState;
702
706
  autoResetAll?: boolean;
703
707
  mergeOptions?: (defaultOptions: TableOptions<TData>, options: Partial<TableOptions<TData>>) => TableOptions<TData>;
704
- meta?: unknown;
708
+ meta?: TableMeta;
705
709
  getCoreRowModel: (table: Table<any>) => () => RowModel<any>;
706
710
  getSubRows?: (originalRow: TData, index: number) => undefined | TData[];
707
711
  getRowId?: (originalRow: TData, index: number, parent?: Row<TData>) => string;
@@ -725,11 +729,11 @@ declare type CoreInstance<TData extends RowData> = {
725
729
  getRow: (id: string) => Row<TData>;
726
730
  _getDefaultColumnDef: () => Partial<ColumnDef<TData>>;
727
731
  _getColumnDefs: () => ColumnDef<TData>[];
728
- _getAllFlatColumnsById: () => Record<string, Column<TData>>;
729
- getAllColumns: () => Column<TData>[];
730
- getAllFlatColumns: () => Column<TData>[];
731
- getAllLeafColumns: () => Column<TData>[];
732
- getColumn: (columnId: string) => Column<TData>;
732
+ _getAllFlatColumnsById: () => Record<string, Column<TData, unknown>>;
733
+ getAllColumns: () => Column<TData, unknown>[];
734
+ getAllFlatColumns: () => Column<TData, unknown>[];
735
+ getAllLeafColumns: () => Column<TData, unknown>[];
736
+ getColumn: (columnId: string) => Column<TData, unknown>;
733
737
  };
734
738
  declare function createTable<TData extends RowData>(options: TableOptionsResolved<TData>): Table<TData>;
735
739
 
@@ -758,4 +762,4 @@ declare function getPaginationRowModel<TData extends RowData>(opts?: {
758
762
  initialSync: boolean;
759
763
  }): (table: Table<TData>) => () => RowModel<TData>;
760
764
 
761
- export { AccessorFn, AggregationFn, AggregationFnOption, AnyRender, BuiltInAggregationFn, BuiltInFilterFn, BuiltInSortingFn, Cell, Column, ColumnDef, ColumnDefTemplate, ColumnDefaultOptions, ColumnFilter, ColumnFilterAutoRemoveTestFn, ColumnFiltersState, ColumnOrderDefaultOptions, ColumnOrderInstance, ColumnOrderOptions, ColumnOrderState, ColumnOrderTableState, ColumnPinningColumn, ColumnPinningColumnDef, ColumnPinningDefaultOptions, ColumnPinningInstance, ColumnPinningOptions, ColumnPinningPosition, ColumnPinningRow, ColumnPinningState, ColumnPinningTableState, ColumnResizeMode, ColumnSizing, ColumnSizingColumn, ColumnSizingColumnDef, ColumnSizingDefaultOptions, ColumnSizingHeader, ColumnSizingInfoState, ColumnSizingInstance, ColumnSizingOptions, ColumnSizingState, ColumnSizingTableState, ColumnSort, CoreColumn, CoreColumnDef, CoreColumnDefResolved, CoreColumnDefType, CoreHeader, CoreHeaderGroup, CoreInstance, CoreOptions, CoreRow, CoreTableState, CustomAggregationFns, CustomFilterFns, CustomSortingFns, ExpandedInstance, ExpandedOptions, ExpandedRow, ExpandedState, ExpandedStateList, ExpandedTableState, Expanding, FilterFn, FilterFnOption, Filters, FiltersColumn, FiltersColumnDef, FiltersInstance, FiltersOptions, FiltersRow, FiltersTableState, Grouping, GroupingCell, GroupingColumn, GroupingColumnDef, GroupingColumnMode, GroupingInstance, GroupingOptions, GroupingRow, GroupingState, GroupingTableState, Header, HeaderGroup, Headers, HeadersInstance, IfDefined, InitialTableState, NoInfer, OnChangeFn, Ordering, Overwrite, Pagination, PaginationDefaultOptions, PaginationInitialTableState, PaginationInstance, PaginationOptions, PaginationState, PaginationTableState, PartialKeys, Pinning, RequiredKeys, ResolvedColumnFilter, Row, RowData, RowModel, RowSelection, RowSelectionInstance, RowSelectionOptions, RowSelectionRow, RowSelectionState, RowSelectionTableState, RowValues, SortDirection, Sorting, SortingColumn, SortingColumnDef, SortingFn, SortingFnOption, SortingInstance, SortingOptions, SortingState, SortingTableState, Table, TableFeature, TableGenerics, TableOptions, TableOptionsResolved, TableState, TransformFilterValueFn, UnionToIntersection, Updater, Visibility, VisibilityColumn, VisibilityColumnDef, VisibilityDefaultOptions, VisibilityInstance, VisibilityOptions, VisibilityRow, VisibilityState, VisibilityTableState, aggregationFns, buildHeaderGroups, createColumn, createRow, createTable, defaultColumnSizing, expandRows, filterFns, flattenBy, functionalUpdate, getCoreRowModel, getExpandedRowModel, getFacetedMinMaxValues, getFacetedRowModel, getFacetedUniqueValues, getFilteredRowModel, getGroupedRowModel, getPaginationRowModel, getSortedRowModel, isFunction, isRowSelected, isSubRowSelected, makeStateUpdater, memo, noop, orderColumns, passiveEventSupported, reSplitAlphaNumeric, selectRowsFn, shouldAutoRemoveFilter, sortingFns };
765
+ export { AccessorFn, AggregationFn, AggregationFnOption, AnyRender, BuiltInAggregationFn, BuiltInFilterFn, BuiltInSortingFn, Cell, Column, ColumnDef, ColumnDefTemplate, ColumnDefaultOptions, ColumnFilter, ColumnFilterAutoRemoveTestFn, ColumnFiltersState, ColumnMeta, ColumnOrderDefaultOptions, ColumnOrderInstance, ColumnOrderOptions, ColumnOrderState, ColumnOrderTableState, ColumnPinningColumn, ColumnPinningColumnDef, ColumnPinningDefaultOptions, ColumnPinningInstance, ColumnPinningOptions, ColumnPinningPosition, ColumnPinningRow, ColumnPinningState, ColumnPinningTableState, ColumnResizeMode, ColumnSizing, ColumnSizingColumn, ColumnSizingColumnDef, ColumnSizingDefaultOptions, ColumnSizingHeader, ColumnSizingInfoState, ColumnSizingInstance, ColumnSizingOptions, ColumnSizingState, ColumnSizingTableState, ColumnSort, CoreColumn, CoreColumnDef, CoreColumnDefResolved, CoreColumnDefType, CoreHeader, CoreHeaderGroup, CoreInstance, CoreOptions, CoreRow, CoreTableState, CustomAggregationFns, CustomFilterFns, CustomSortingFns, ExpandedInstance, ExpandedOptions, ExpandedRow, ExpandedState, ExpandedStateList, ExpandedTableState, Expanding, FilterFn, FilterFnOption, FilterMeta, Filters, FiltersColumn, FiltersColumnDef, FiltersInstance, FiltersOptions, FiltersRow, FiltersTableState, Grouping, GroupingCell, GroupingColumn, GroupingColumnDef, GroupingColumnMode, GroupingInstance, GroupingOptions, GroupingRow, GroupingState, GroupingTableState, Header, HeaderGroup, Headers, HeadersInstance, IfDefined, InitialTableState, NoInfer, OnChangeFn, Ordering, Overwrite, Pagination, PaginationDefaultOptions, PaginationInitialTableState, PaginationInstance, PaginationOptions, PaginationState, PaginationTableState, PartialKeys, Pinning, RequiredKeys, ResolvedColumnFilter, Row, RowData, RowModel, RowSelection, RowSelectionInstance, RowSelectionOptions, RowSelectionRow, RowSelectionState, RowSelectionTableState, SortDirection, Sorting, SortingColumn, SortingColumnDef, SortingFn, SortingFnOption, SortingInstance, SortingOptions, SortingState, SortingTableState, Table, TableFeature, TableGenerics, TableMeta, TableOptions, TableOptionsResolved, TableState, TransformFilterValueFn, UnionToIntersection, Updater, Visibility, VisibilityColumn, VisibilityColumnDef, VisibilityDefaultOptions, VisibilityInstance, VisibilityOptions, VisibilityRow, VisibilityState, VisibilityTableState, aggregationFns, buildHeaderGroups, createColumn, createRow, createTable, defaultColumnSizing, expandRows, filterFns, flattenBy, functionalUpdate, getCoreRowModel, getExpandedRowModel, getFacetedMinMaxValues, getFacetedRowModel, getFacetedUniqueValues, getFilteredRowModel, getGroupedRowModel, getPaginationRowModel, getSortedRowModel, isFunction, isRowSelected, isSubRowSelected, makeStateUpdater, memo, noop, orderColumns, passiveEventSupported, reSplitAlphaNumeric, selectRowsFn, shouldAutoRemoveFilter, sortingFns };
@@ -2353,7 +2353,12 @@
2353
2353
  };
2354
2354
 
2355
2355
  const datetime = (rowA, rowB, columnId) => {
2356
- return compareBasic(rowA.getValue(columnId).getTime(), rowB.getValue(columnId).getTime());
2356
+ const a = rowA.getValue(columnId);
2357
+ const b = rowB.getValue(columnId); // Can handle nullish values
2358
+ // Use > and < because == (and ===) doesn't work with
2359
+ // Date objects (would require calling getTime()).
2360
+
2361
+ return a > b ? 1 : a < b ? -1 : 0;
2357
2362
  };
2358
2363
 
2359
2364
  const basic = (rowA, rowB, columnId) => {
@@ -2514,18 +2519,17 @@
2514
2519
  // }
2515
2520
  // this needs to be outside of table.setSorting to be in sync with rerender
2516
2521
  const nextSortingOrder = column.getNextSortingOrder();
2522
+ const hasManualValue = typeof desc !== 'undefined' && desc !== null;
2517
2523
  table.setSorting(old => {
2518
- var _table$options$enable, _table$options$enable2;
2519
-
2520
2524
  // Find any existing sorting for this column
2521
2525
  const existingSorting = old == null ? void 0 : old.find(d => d.id === column.id);
2522
2526
  const existingIndex = old == null ? void 0 : old.findIndex(d => d.id === column.id);
2523
- const hasDescDefined = typeof desc !== 'undefined' && desc !== null;
2524
2527
  let newSorting = []; // What should we do with this sort action?
2525
2528
 
2526
2529
  let sortAction;
2530
+ let nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc'; // Multi-mode
2527
2531
 
2528
- if (column.getCanMultiSort() && multi) {
2532
+ if (old != null && old.length && column.getCanMultiSort() && multi) {
2529
2533
  if (existingSorting) {
2530
2534
  sortAction = 'toggle';
2531
2535
  } else {
@@ -2543,63 +2547,71 @@
2543
2547
  } // Handle toggle states that will remove the sorting
2544
2548
 
2545
2549
 
2546
- if (sortAction === 'toggle' && ( // Must be toggling
2547
- (_table$options$enable = table.options.enableSortingRemoval) != null ? _table$options$enable : true) && // If enableSortRemove, enable in general
2548
- !hasDescDefined && ( // Must not be setting desc
2549
- multi ? (_table$options$enable2 = table.options.enableMultiRemove) != null ? _table$options$enable2 : true : true) && // If multi, don't allow if enableMultiRemove
2550
- !nextSortingOrder // Finally, detect if it should indeed be removed
2551
- ) {
2552
- sortAction = 'remove';
2550
+ if (sortAction === 'toggle') {
2551
+ // If we are "actually" toggling (not a manual set value), should we remove the sorting?
2552
+ if (!hasManualValue) {
2553
+ // Is our intention to remove?
2554
+ if (!nextSortingOrder) {
2555
+ sortAction = 'remove';
2556
+ }
2557
+ }
2553
2558
  }
2554
2559
 
2555
- if (sortAction === 'replace') {
2556
- newSorting = [{
2557
- id: column.id,
2558
- desc: hasDescDefined ? desc : nextSortingOrder === 'desc'
2559
- }];
2560
- } else if (sortAction === 'add' && old != null && old.length) {
2560
+ if (sortAction === 'add') {
2561
2561
  var _table$options$maxMul;
2562
2562
 
2563
2563
  newSorting = [...old, {
2564
2564
  id: column.id,
2565
- desc: hasDescDefined ? desc : nextSortingOrder === 'desc'
2565
+ desc: nextDesc
2566
2566
  }]; // Take latest n columns
2567
2567
 
2568
2568
  newSorting.splice(0, newSorting.length - ((_table$options$maxMul = table.options.maxMultiSortColCount) != null ? _table$options$maxMul : Number.MAX_SAFE_INTEGER));
2569
- } else if (sortAction === 'toggle' && old != null && old.length) {
2569
+ } else if (sortAction === 'toggle') {
2570
2570
  // This flips (or sets) the
2571
2571
  newSorting = old.map(d => {
2572
2572
  if (d.id === column.id) {
2573
2573
  return { ...d,
2574
- desc: hasDescDefined ? desc : nextSortingOrder === 'desc'
2574
+ desc: nextDesc
2575
2575
  };
2576
2576
  }
2577
2577
 
2578
2578
  return d;
2579
2579
  });
2580
- } else if (sortAction === 'remove' && old != null && old.length) {
2580
+ } else if (sortAction === 'remove') {
2581
2581
  newSorting = old.filter(d => d.id !== column.id);
2582
+ } else {
2583
+ newSorting = [{
2584
+ id: column.id,
2585
+ desc: nextDesc
2586
+ }];
2582
2587
  }
2583
2588
 
2584
2589
  return newSorting;
2585
2590
  });
2586
2591
  },
2587
- getNextSortingOrder: () => {
2592
+ getFirstSortDir: () => {
2588
2593
  var _ref, _column$columnDef$sor;
2589
2594
 
2590
2595
  const sortDescFirst = (_ref = (_column$columnDef$sor = column.columnDef.sortDescFirst) != null ? _column$columnDef$sor : table.options.sortDescFirst) != null ? _ref : column.getAutoSortDir() === 'desc';
2591
- const firstSortDirection = sortDescFirst ? 'desc' : 'asc';
2596
+ return sortDescFirst ? 'desc' : 'asc';
2597
+ },
2598
+ getNextSortingOrder: multi => {
2599
+ var _table$options$enable, _table$options$enable2;
2600
+
2601
+ const firstSortDirection = column.getFirstSortDir();
2592
2602
  const isSorted = column.getIsSorted();
2593
2603
 
2594
2604
  if (!isSorted) {
2595
2605
  return firstSortDirection;
2596
2606
  }
2597
2607
 
2598
- if (isSorted === firstSortDirection) {
2599
- return isSorted === 'desc' ? 'asc' : 'desc';
2600
- } else {
2608
+ if (isSorted !== firstSortDirection && ((_table$options$enable = table.options.enableSortingRemoval) != null ? _table$options$enable : true) && ( // If enableSortRemove, enable in general
2609
+ multi ? (_table$options$enable2 = table.options.enableMultiRemove) != null ? _table$options$enable2 : true : true) // If multi, don't allow if enableMultiRemove))
2610
+ ) {
2601
2611
  return false;
2602
2612
  }
2613
+
2614
+ return isSorted === 'desc' ? 'asc' : 'desc';
2603
2615
  },
2604
2616
  getCanSort: () => {
2605
2617
  var _column$columnDef$ena, _table$options$enable3;
@@ -2881,9 +2893,9 @@
2881
2893
  header: props => props.header.column.id,
2882
2894
  footer: props => props.header.column.id,
2883
2895
  cell: props => {
2884
- var _toString, _props$renderValue;
2896
+ var _props$renderValue$to, _props$renderValue;
2885
2897
 
2886
- return (_toString = (_props$renderValue = props.renderValue()) == null ? void 0 : _props$renderValue.toString == null ? void 0 : _props$renderValue.toString()) != null ? _toString : null;
2898
+ return (_props$renderValue$to = (_props$renderValue = props.renderValue()) == null ? void 0 : _props$renderValue.toString == null ? void 0 : _props$renderValue.toString()) != null ? _props$renderValue$to : null;
2887
2899
  },
2888
2900
  ...table._features.reduce((obj, feature) => {
2889
2901
  return Object.assign(obj, feature.getDefaultColumnDef == null ? void 0 : feature.getDefaultColumnDef());
@@ -3413,9 +3425,7 @@
3413
3425
  let facetedMinMaxValues = [firstValue, firstValue];
3414
3426
 
3415
3427
  for (let i = 0; i < facetedRowModel.flatRows.length; i++) {
3416
- var _facetedRowModel$flat2;
3417
-
3418
- const value = (_facetedRowModel$flat2 = facetedRowModel.flatRows[i]) == null ? void 0 : _facetedRowModel$flat2.getValue(columnId);
3428
+ const value = facetedRowModel.flatRows[i].getValue(columnId);
3419
3429
 
3420
3430
  if (value < facetedMinMaxValues[0]) {
3421
3431
  facetedMinMaxValues[0] = value;
@@ -3565,7 +3575,7 @@
3565
3575
  const subRows = groupUpRecursively(groupedRows, depth + 1, id); // Flatten the leaf rows of the rows in this group
3566
3576
 
3567
3577
  const leafRows = depth ? flattenBy(groupedRows, row => row.subRows) : groupedRows;
3568
- const row = createRow(table, id, undefined, index, depth);
3578
+ const row = createRow(table, id, leafRows[0].original, index, depth);
3569
3579
  Object.assign(row, {
3570
3580
  groupingColumnId: columnId,
3571
3581
  groupingValue,