@tanstack/table-core 8.1.4 → 8.2.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 (43) 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.map +1 -1
  14. package/build/cjs/features/Visibility.js.map +1 -1
  15. package/build/cjs/filterFns.js.map +1 -1
  16. package/build/cjs/utils/getFacetedMinMaxValues.js +1 -3
  17. package/build/cjs/utils/getFacetedMinMaxValues.js.map +1 -1
  18. package/build/esm/index.js +3 -5
  19. package/build/esm/index.js.map +1 -1
  20. package/build/stats-html.html +1 -1
  21. package/build/stats-react.json +304 -304
  22. package/build/types/index.d.ts +92 -89
  23. package/build/umd/index.development.js +3 -5
  24. package/build/umd/index.development.js.map +1 -1
  25. package/build/umd/index.production.js +1 -1
  26. package/build/umd/index.production.js.map +1 -1
  27. package/package.json +1 -1
  28. package/src/aggregationFns.ts +8 -11
  29. package/src/core/cell.ts +14 -14
  30. package/src/core/column.ts +57 -46
  31. package/src/core/headers.ts +32 -32
  32. package/src/core/row.ts +7 -7
  33. package/src/core/table.ts +11 -10
  34. package/src/features/ColumnSizing.ts +5 -5
  35. package/src/features/Filters.ts +9 -14
  36. package/src/features/Grouping.ts +15 -10
  37. package/src/features/Ordering.ts +4 -2
  38. package/src/features/Pinning.ts +10 -10
  39. package/src/features/Sorting.ts +2 -2
  40. package/src/features/Visibility.ts +11 -11
  41. package/src/filterFns.ts +13 -7
  42. package/src/types.ts +16 -12
  43. package/src/utils/getFacetedMinMaxValues.ts +1 -1
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tanstack/table-core",
3
3
  "author": "Tanner Linsley",
4
- "version": "8.1.4",
4
+ "version": "8.2.0",
5
5
  "description": "Headless UI for building powerful tables & datagrids for TS/JS.",
6
6
  "license": "MIT",
7
7
  "homepage": "https://github.com/tanstack/table#readme",
@@ -3,20 +3,17 @@ import { AggregationFn } from './features/Grouping'
3
3
  const sum: AggregationFn<any> = (columnId, _leafRows, childRows) => {
4
4
  // It's faster to just add the aggregations together instead of
5
5
  // process leaf nodes individually
6
- return childRows.reduce(
7
- (sum, next) => {
8
- const nextValue = next.getValue(columnId)
9
- return sum + (typeof nextValue === 'number' ? nextValue : 0)
10
- },
11
- 0
12
- )
6
+ return childRows.reduce((sum, next) => {
7
+ const nextValue = next.getValue(columnId)
8
+ return sum + (typeof nextValue === 'number' ? nextValue : 0)
9
+ }, 0)
13
10
  }
14
11
 
15
12
  const min: AggregationFn<any> = (columnId, _leafRows, childRows) => {
16
13
  let min: number | undefined
17
14
 
18
15
  childRows.forEach(row => {
19
- const value = row.getValue(columnId)
16
+ const value = row.getValue<number>(columnId)
20
17
 
21
18
  if (
22
19
  value != null &&
@@ -33,7 +30,7 @@ const max: AggregationFn<any> = (columnId, _leafRows, childRows) => {
33
30
  let max: number | undefined
34
31
 
35
32
  childRows.forEach(row => {
36
- const value = row.getValue(columnId)
33
+ const value = row.getValue<number>(columnId)
37
34
  if (
38
35
  value != null &&
39
36
  (max! < value || (max === undefined && value >= value))
@@ -50,7 +47,7 @@ const extent: AggregationFn<any> = (columnId, _leafRows, childRows) => {
50
47
  let max: number | undefined
51
48
 
52
49
  childRows.forEach(row => {
53
- const value = row.getValue(columnId)
50
+ const value = row.getValue<number>(columnId)
54
51
  if (value != null) {
55
52
  if (min === undefined) {
56
53
  if (value >= value) min = max = value
@@ -69,7 +66,7 @@ const mean: AggregationFn<any> = (columnId, leafRows) => {
69
66
  let sum = 0
70
67
 
71
68
  leafRows.forEach(row => {
72
- let value = row.getValue(columnId)
69
+ let value = row.getValue<number>(columnId)
73
70
  if (value != null && (value = +value) >= value) {
74
71
  ++count, (sum += value)
75
72
  }
package/src/core/cell.ts CHANGED
@@ -1,31 +1,31 @@
1
1
  import { RowData, Cell, Column, Row, Table } from '../types'
2
2
 
3
- export type CoreCell<TData extends RowData> = {
3
+ export type CoreCell<TData extends RowData, TValue> = {
4
4
  id: string
5
- getValue: () => any
6
- renderValue: () => unknown
5
+ getValue: <TTValue = TValue>() => TTValue
6
+ renderValue: <TTValue = TValue>() => TTValue | null
7
7
  row: Row<TData>
8
- column: Column<TData>
8
+ column: Column<TData, TValue>
9
9
  getContext: () => {
10
10
  table: Table<TData>
11
- column: Column<TData>
11
+ column: Column<TData, TValue>
12
12
  row: Row<TData>
13
- cell: Cell<TData>
14
- getValue: () => any
15
- renderValue: () => any
13
+ cell: Cell<TData, TValue>
14
+ getValue: <TTValue = TValue>() => TTValue
15
+ renderValue: <TTValue = TValue>() => TTValue | null
16
16
  }
17
17
  }
18
18
 
19
- export function createCell<TData extends RowData>(
19
+ export function createCell<TData extends RowData, TValue>(
20
20
  table: Table<TData>,
21
21
  row: Row<TData>,
22
- column: Column<TData>,
22
+ column: Column<TData, TValue>,
23
23
  columnId: string
24
24
  ) {
25
25
  const getRenderValue = () =>
26
26
  cell.getValue() ?? table.options.renderFallbackValue
27
27
 
28
- const cell: CoreCell<TData> = {
28
+ const cell: CoreCell<TData, TValue> = {
29
29
  id: `${row.id}_${column.id}`,
30
30
  row,
31
31
  column,
@@ -35,7 +35,7 @@ export function createCell<TData extends RowData>(
35
35
  table,
36
36
  column,
37
37
  row,
38
- cell: cell as Cell<TData>,
38
+ cell: cell as Cell<TData, TValue>,
39
39
  getValue: cell.getValue,
40
40
  renderValue: cell.renderValue,
41
41
  }),
@@ -45,7 +45,7 @@ export function createCell<TData extends RowData>(
45
45
  Object.assign(
46
46
  cell,
47
47
  feature.createCell?.(
48
- cell as Cell<TData>,
48
+ cell as Cell<TData, TValue>,
49
49
  column,
50
50
  row as Row<TData>,
51
51
  table
@@ -53,5 +53,5 @@ export function createCell<TData extends RowData>(
53
53
  )
54
54
  }, {})
55
55
 
56
- return cell as Cell<TData>
56
+ return cell as Cell<TData, TValue>
57
57
  }
@@ -1,14 +1,11 @@
1
1
  import {
2
- Cell,
3
2
  Column,
4
- Header,
5
- TableGenerics,
6
3
  Table,
7
- Row,
8
4
  AccessorFn,
9
5
  ColumnDef,
10
6
  ColumnDefTemplate,
11
7
  RowData,
8
+ ColumnMeta,
12
9
  } from '../types'
13
10
  import { memo, UnionToIntersection } from '../utils'
14
11
  import { CoreCell } from './cell'
@@ -16,64 +13,78 @@ import { CoreHeader } from './headers'
16
13
 
17
14
  export type CoreColumnDefType = 'data' | 'display' | 'group'
18
15
 
19
- type CoreColumnDefBase<TData extends RowData> = {
16
+ type CoreColumnDefBase<TData extends RowData, TValue> = {
20
17
  columns?: ColumnDef<TData>[]
21
- header?: ColumnDefTemplate<ReturnType<CoreHeader<TData>['getContext']>>
22
- footer?: ColumnDefTemplate<ReturnType<CoreHeader<TData>['getContext']>>
23
- cell?: ColumnDefTemplate<ReturnType<CoreCell<TData>['getContext']>>
24
- meta?: unknown
18
+ header?: ColumnDefTemplate<
19
+ ReturnType<CoreHeader<TData, TValue>['getContext']>
20
+ >
21
+ footer?: ColumnDefTemplate<
22
+ ReturnType<CoreHeader<TData, TValue>['getContext']>
23
+ >
24
+ cell?: ColumnDefTemplate<ReturnType<CoreCell<TData, TValue>['getContext']>>
25
+ meta?: ColumnMeta
25
26
  }
26
27
 
27
- type CoreColumnDefDisplay<TData extends RowData> = CoreColumnDefBase<TData> & {
28
+ type CoreColumnDefDisplay<TData extends RowData, TValue> = CoreColumnDefBase<
29
+ TData,
30
+ TValue
31
+ > & {
28
32
  id: string
29
33
  }
30
34
 
31
- type CoreColumnDefDisplayWithStringHeader<TData extends RowData> =
32
- CoreColumnDefBase<TData> & {
33
- header: string
34
- id?: string
35
- }
35
+ type CoreColumnDefDisplayWithStringHeader<
36
+ TData extends RowData,
37
+ TValue
38
+ > = CoreColumnDefBase<TData, TValue> & {
39
+ header: string
40
+ id?: string
41
+ }
36
42
 
37
- type CoreColumnDefAccessorFn<TData extends RowData> =
38
- CoreColumnDefBase<TData> & {
39
- accessorFn: AccessorFn<TData>
40
- id: string
41
- // accessorKey?: never
42
- }
43
+ type CoreColumnDefAccessorFn<
44
+ TData extends RowData,
45
+ TValue = unknown
46
+ > = CoreColumnDefBase<TData, TValue> & {
47
+ accessorFn: AccessorFn<TData, TValue>
48
+ id: string
49
+ // accessorKey?: never
50
+ }
43
51
 
44
- type CoreColumnDefAccessorKey<TData extends RowData> =
45
- CoreColumnDefBase<TData> & {
46
- accessorKey: keyof TData
47
- id?: string
48
- // accessorFn?: never
49
- }
52
+ type CoreColumnDefAccessorKey<
53
+ TData extends RowData,
54
+ TValue
55
+ > = CoreColumnDefBase<TData, TValue> & {
56
+ accessorKey: keyof TData
57
+ id?: string
58
+ // accessorFn?: never
59
+ }
50
60
 
51
- export type CoreColumnDef<TData extends RowData> =
52
- | CoreColumnDefDisplay<TData>
53
- | CoreColumnDefDisplayWithStringHeader<TData>
61
+ export type CoreColumnDef<TData extends RowData, TValue> =
62
+ | CoreColumnDefDisplay<TData, TValue>
63
+ | CoreColumnDefDisplayWithStringHeader<TData, TValue>
54
64
  | CoreColumnDefAccessorFn<TData>
55
- | CoreColumnDefAccessorKey<TData>
65
+ | CoreColumnDefAccessorKey<TData, TValue>
56
66
 
57
- export type CoreColumnDefResolved<TData extends RowData> = Partial<
58
- UnionToIntersection<CoreColumnDef<TData>>
59
- >
67
+ export type CoreColumnDefResolved<
68
+ TData extends RowData,
69
+ TValue = unknown
70
+ > = Partial<UnionToIntersection<CoreColumnDef<TData, TValue>>>
60
71
 
61
- export type CoreColumn<TData extends RowData> = {
72
+ export type CoreColumn<TData extends RowData, TValue> = {
62
73
  id: string
63
74
  depth: number
64
- accessorFn?: AccessorFn<TData>
75
+ accessorFn?: AccessorFn<TData, TValue>
65
76
  columnDef: ColumnDef<TData>
66
- columns: Column<TData>[]
67
- parent?: Column<TData>
68
- getFlatColumns: () => Column<TData>[]
69
- getLeafColumns: () => Column<TData>[]
77
+ columns: Column<TData, TValue>[]
78
+ parent?: Column<TData, TValue>
79
+ getFlatColumns: () => Column<TData, TValue>[]
80
+ getLeafColumns: () => Column<TData, TValue>[]
70
81
  }
71
82
 
72
- export function createColumn<TData extends RowData>(
83
+ export function createColumn<TData extends RowData, TValue>(
73
84
  table: Table<TData>,
74
85
  columnDef: ColumnDef<TData>,
75
86
  depth: number,
76
- parent?: Column<TData>
87
+ parent?: Column<TData, TValue>
77
88
  ) {
78
89
  const defaultColumn = table._getDefaultColumnDef()
79
90
 
@@ -109,7 +120,7 @@ export function createColumn<TData extends RowData>(
109
120
  throw new Error()
110
121
  }
111
122
 
112
- let column: CoreColumn<TData> = {
123
+ let column: CoreColumn<TData, any> = {
113
124
  id: `${String(id)}`,
114
125
  accessorFn,
115
126
  parent: parent as any,
@@ -120,7 +131,7 @@ export function createColumn<TData extends RowData>(
120
131
  () => [true],
121
132
  () => {
122
133
  return [
123
- column as Column<TData>,
134
+ column as Column<TData, TValue>,
124
135
  ...column.columns?.flatMap(d => d.getFlatColumns()),
125
136
  ]
126
137
  },
@@ -140,7 +151,7 @@ export function createColumn<TData extends RowData>(
140
151
  return orderColumns(leafColumns)
141
152
  }
142
153
 
143
- return [column as Column<TData>]
154
+ return [column as Column<TData, TValue>]
144
155
  },
145
156
  {
146
157
  key: process.env.NODE_ENV === 'production' && 'column.getLeafColumns',
@@ -154,5 +165,5 @@ export function createColumn<TData extends RowData>(
154
165
  }, column)
155
166
 
156
167
  // Yes, we have to convert table to uknown, because we know more than the compiler here.
157
- return column as Column<TData>
168
+ return column as Column<TData, TValue>
158
169
  }
@@ -5,25 +5,25 @@ import { TableFeature } from './table'
5
5
  export type CoreHeaderGroup<TData extends RowData> = {
6
6
  id: string
7
7
  depth: number
8
- headers: Header<TData>[]
8
+ headers: Header<TData, unknown>[]
9
9
  }
10
10
 
11
- export type CoreHeader<TData extends RowData> = {
11
+ export type CoreHeader<TData extends RowData, TValue> = {
12
12
  id: string
13
13
  index: number
14
14
  depth: number
15
- column: Column<TData>
15
+ column: Column<TData, TValue>
16
16
  headerGroup: HeaderGroup<TData>
17
- subHeaders: Header<TData>[]
17
+ subHeaders: Header<TData, TValue>[]
18
18
  colSpan: number
19
19
  rowSpan: number
20
- getLeafHeaders: () => Header<TData>[]
20
+ getLeafHeaders: () => Header<TData, unknown>[]
21
21
  isPlaceholder: boolean
22
22
  placeholderId?: string
23
23
  getContext: () => {
24
24
  table: Table<TData>
25
- header: Header<TData>
26
- column: Column<TData>
25
+ header: Header<TData, TValue>
26
+ column: Column<TData, TValue>
27
27
  }
28
28
  }
29
29
 
@@ -38,22 +38,22 @@ export type HeadersInstance<TData extends RowData> = {
38
38
  getCenterFooterGroups: () => HeaderGroup<TData>[]
39
39
  getRightFooterGroups: () => HeaderGroup<TData>[]
40
40
 
41
- getFlatHeaders: () => Header<TData>[]
42
- getLeftFlatHeaders: () => Header<TData>[]
43
- getCenterFlatHeaders: () => Header<TData>[]
44
- getRightFlatHeaders: () => Header<TData>[]
41
+ getFlatHeaders: () => Header<TData, unknown>[]
42
+ getLeftFlatHeaders: () => Header<TData, unknown>[]
43
+ getCenterFlatHeaders: () => Header<TData, unknown>[]
44
+ getRightFlatHeaders: () => Header<TData, unknown>[]
45
45
 
46
- getLeafHeaders: () => Header<TData>[]
47
- getLeftLeafHeaders: () => Header<TData>[]
48
- getCenterLeafHeaders: () => Header<TData>[]
49
- getRightLeafHeaders: () => Header<TData>[]
46
+ getLeafHeaders: () => Header<TData, unknown>[]
47
+ getLeftLeafHeaders: () => Header<TData, unknown>[]
48
+ getCenterLeafHeaders: () => Header<TData, unknown>[]
49
+ getRightLeafHeaders: () => Header<TData, unknown>[]
50
50
  }
51
51
 
52
52
  //
53
53
 
54
- function createHeader<TData extends RowData>(
54
+ function createHeader<TData extends RowData, TValue>(
55
55
  table: Table<TData>,
56
- column: Column<TData>,
56
+ column: Column<TData, TValue>,
57
57
  options: {
58
58
  id?: string
59
59
  isPlaceholder?: boolean
@@ -64,7 +64,7 @@ function createHeader<TData extends RowData>(
64
64
  ) {
65
65
  const id = options.id ?? column.id
66
66
 
67
- let header: CoreHeader<TData> = {
67
+ let header: CoreHeader<TData, TValue> = {
68
68
  id,
69
69
  column,
70
70
  index: options.index,
@@ -75,23 +75,23 @@ function createHeader<TData extends RowData>(
75
75
  colSpan: 0,
76
76
  rowSpan: 0,
77
77
  headerGroup: null!,
78
- getLeafHeaders: (): Header<TData>[] => {
79
- const leafHeaders: CoreHeader<TData>[] = []
78
+ getLeafHeaders: (): Header<TData, unknown>[] => {
79
+ const leafHeaders: Header<TData, unknown>[] = []
80
80
 
81
- const recurseHeader = (h: CoreHeader<TData>) => {
81
+ const recurseHeader = (h: CoreHeader<TData, unknown>) => {
82
82
  if (h.subHeaders && h.subHeaders.length) {
83
83
  h.subHeaders.map(recurseHeader)
84
84
  }
85
- leafHeaders.push(h)
85
+ leafHeaders.push(h as Header<TData, unknown>)
86
86
  }
87
87
 
88
88
  recurseHeader(header)
89
89
 
90
- return leafHeaders as Header<TData>[]
90
+ return leafHeaders
91
91
  },
92
92
  getContext: () => ({
93
93
  table,
94
- header: header as Header<TData>,
94
+ header: header as Header<TData, TValue>,
95
95
  column,
96
96
  }),
97
97
  }
@@ -100,7 +100,7 @@ function createHeader<TData extends RowData>(
100
100
  Object.assign(header, feature.createHeader?.(header, table))
101
101
  })
102
102
 
103
- return header as Header<TData>
103
+ return header as Header<TData, TValue>
104
104
  }
105
105
 
106
106
  export const Headers: TableFeature = {
@@ -387,8 +387,8 @@ export const Headers: TableFeature = {
387
387
  }
388
388
 
389
389
  export function buildHeaderGroups<TData extends RowData>(
390
- allColumns: Column<TData>[],
391
- columnsToGroup: Column<TData>[],
390
+ allColumns: Column<TData, unknown>[],
391
+ columnsToGroup: Column<TData, unknown>[],
392
392
  table: Table<TData>,
393
393
  headerFamily?: 'center' | 'left' | 'right'
394
394
  ) {
@@ -400,7 +400,7 @@ export function buildHeaderGroups<TData extends RowData>(
400
400
 
401
401
  let maxDepth = 0
402
402
 
403
- const findMaxDepth = (columns: Column<TData>[], depth = 1) => {
403
+ const findMaxDepth = (columns: Column<TData, unknown>[], depth = 1) => {
404
404
  maxDepth = Math.max(maxDepth, depth)
405
405
 
406
406
  columns
@@ -417,7 +417,7 @@ export function buildHeaderGroups<TData extends RowData>(
417
417
  let headerGroups: HeaderGroup<TData>[] = []
418
418
 
419
419
  const createHeaderGroup = (
420
- headersToGroup: Header<TData>[],
420
+ headersToGroup: Header<TData, unknown>[],
421
421
  depth: number
422
422
  ) => {
423
423
  // The header group we are creating
@@ -428,7 +428,7 @@ export function buildHeaderGroups<TData extends RowData>(
428
428
  }
429
429
 
430
430
  // The parent columns we're going to scan next
431
- const pendingParentHeaders: Header<TData>[] = []
431
+ const pendingParentHeaders: Header<TData, unknown>[] = []
432
432
 
433
433
  // Scan each column for parents
434
434
  headersToGroup.forEach(headerToGroup => {
@@ -438,7 +438,7 @@ export function buildHeaderGroups<TData extends RowData>(
438
438
 
439
439
  const isLeafHeader = headerToGroup.column.depth === headerGroup.depth
440
440
 
441
- let column: Column<TData>
441
+ let column: Column<TData, unknown>
442
442
  let isPlaceholder = false
443
443
 
444
444
  if (isLeafHeader && headerToGroup.column.parent) {
@@ -504,7 +504,7 @@ export function buildHeaderGroups<TData extends RowData>(
504
504
  // })
505
505
 
506
506
  const recurseHeadersForSpans = (
507
- headers: Header<TData>[]
507
+ headers: Header<TData, unknown>[]
508
508
  ): { colSpan: number; rowSpan: number }[] => {
509
509
  const filteredHeaders = headers.filter(header =>
510
510
  header.column.getIsVisible()
package/src/core/row.ts CHANGED
@@ -7,14 +7,14 @@ export type CoreRow<TData extends RowData> = {
7
7
  index: number
8
8
  original?: TData
9
9
  depth: number
10
- _valuesCache: Record<string, any>
11
- getValue: (columnId: string) => any
12
- renderValue: (columnId: string) => unknown
10
+ _valuesCache: Record<string, unknown>
11
+ getValue: <TValue>(columnId: string) => TValue
12
+ renderValue: <TValue>(columnId: string) => TValue
13
13
  subRows: Row<TData>[]
14
14
  getLeafRows: () => Row<TData>[]
15
15
  originalSubRows?: TData[]
16
- getAllCells: () => Cell<TData>[]
17
- _getAllCellsByColumnId: () => Record<string, Cell<TData>>
16
+ getAllCells: () => Cell<TData, unknown>[]
17
+ _getAllCellsByColumnId: () => Record<string, Cell<TData, unknown>>
18
18
  }
19
19
 
20
20
  export const createRow = <TData extends RowData>(
@@ -47,7 +47,7 @@ export const createRow = <TData extends RowData>(
47
47
  rowIndex
48
48
  )
49
49
 
50
- return row._valuesCache[columnId]
50
+ return row._valuesCache[columnId] as any
51
51
  },
52
52
  renderValue: columnId =>
53
53
  row.getValue(columnId) ?? table.options.renderFallbackValue,
@@ -72,7 +72,7 @@ export const createRow = <TData extends RowData>(
72
72
  return allCells.reduce((acc, cell) => {
73
73
  acc[cell.column.id] = cell
74
74
  return acc
75
- }, {} as Record<string, Cell<TData>>)
75
+ }, {} as Record<string, Cell<TData, unknown>>)
76
76
  },
77
77
  {
78
78
  key:
package/src/core/table.ts CHANGED
@@ -13,6 +13,7 @@ import {
13
13
  ColumnDef,
14
14
  TableOptions,
15
15
  RowData,
16
+ TableMeta,
16
17
  } from '../types'
17
18
 
18
19
  //
@@ -75,7 +76,7 @@ export type CoreOptions<TData extends RowData> = {
75
76
  defaultOptions: TableOptions<TData>,
76
77
  options: Partial<TableOptions<TData>>
77
78
  ) => TableOptions<TData>
78
- meta?: unknown
79
+ meta?: TableMeta
79
80
  getCoreRowModel: (table: Table<any>) => () => RowModel<any>
80
81
  getSubRows?: (originalRow: TData, index: number) => undefined | TData[]
81
82
  getRowId?: (originalRow: TData, index: number, parent?: Row<TData>) => string
@@ -100,11 +101,11 @@ export type CoreInstance<TData extends RowData> = {
100
101
  getRow: (id: string) => Row<TData>
101
102
  _getDefaultColumnDef: () => Partial<ColumnDef<TData>>
102
103
  _getColumnDefs: () => ColumnDef<TData>[]
103
- _getAllFlatColumnsById: () => Record<string, Column<TData>>
104
- getAllColumns: () => Column<TData>[]
105
- getAllFlatColumns: () => Column<TData>[]
106
- getAllLeafColumns: () => Column<TData>[]
107
- getColumn: (columnId: string) => Column<TData>
104
+ _getAllFlatColumnsById: () => Record<string, Column<TData, unknown>>
105
+ getAllColumns: () => Column<TData, unknown>[]
106
+ getAllFlatColumns: () => Column<TData, unknown>[]
107
+ getAllLeafColumns: () => Column<TData, unknown>[]
108
+ getColumn: (columnId: string) => Column<TData, unknown>
108
109
  }
109
110
 
110
111
  export function createTable<TData extends RowData>(
@@ -231,7 +232,7 @@ export function createTable<TData extends RowData>(
231
232
  return {
232
233
  header: props => props.header.column.id,
233
234
  footer: props => props.header.column.id,
234
- cell: props => (props.renderValue() as any)?.toString?.() ?? null,
235
+ cell: props => props.renderValue<any>()?.toString?.() ?? null,
235
236
  ...table._features.reduce((obj, feature) => {
236
237
  return Object.assign(obj, feature.getDefaultColumnDef?.())
237
238
  }, {}),
@@ -251,9 +252,9 @@ export function createTable<TData extends RowData>(
251
252
  columnDefs => {
252
253
  const recurseColumns = (
253
254
  columnDefs: ColumnDef<TData>[],
254
- parent?: Column<TData>,
255
+ parent?: Column<TData, unknown>,
255
256
  depth = 0
256
- ): Column<TData>[] => {
257
+ ): Column<TData, unknown>[] => {
257
258
  return columnDefs.map(columnDef => {
258
259
  const column = createColumn(table, columnDef, depth, parent)
259
260
 
@@ -292,7 +293,7 @@ export function createTable<TData extends RowData>(
292
293
  return flatColumns.reduce((acc, column) => {
293
294
  acc[column.id] = column
294
295
  return acc
295
- }, {} as Record<string, Column<TData>>)
296
+ }, {} as Record<string, Column<TData, unknown>>)
296
297
  },
297
298
  {
298
299
  key: process.env.NODE_ENV === 'development' && 'getAllFlatColumnsById',
@@ -115,8 +115,8 @@ export const ColumnSizing: TableFeature = {
115
115
  }
116
116
  },
117
117
 
118
- createColumn: <TData extends RowData>(
119
- column: Column<TData>,
118
+ createColumn: <TData extends RowData, TValue>(
119
+ column: Column<TData, TValue>,
120
120
  table: Table<TData>
121
121
  ): ColumnSizingColumn => {
122
122
  return {
@@ -167,15 +167,15 @@ export const ColumnSizing: TableFeature = {
167
167
  }
168
168
  },
169
169
 
170
- createHeader: <TData extends RowData>(
171
- header: Header<TData>,
170
+ createHeader: <TData extends RowData, TValue>(
171
+ header: Header<TData, TValue>,
172
172
  table: Table<TData>
173
173
  ): ColumnSizingHeader => {
174
174
  return {
175
175
  getSize: () => {
176
176
  let sum = 0
177
177
 
178
- const recurse = (header: Header<TData>) => {
178
+ const recurse = (header: Header<TData, TValue>) => {
179
179
  if (header.subHeaders.length) {
180
180
  header.subHeaders.forEach(recurse)
181
181
  } else {
@@ -9,14 +9,9 @@ import {
9
9
  Row,
10
10
  Updater,
11
11
  RowData,
12
+ FilterMeta,
12
13
  } from '../types'
13
- import {
14
- functionalUpdate,
15
- isFunction,
16
- makeStateUpdater,
17
- memo,
18
- Overwrite,
19
- } from '../utils'
14
+ import { functionalUpdate, isFunction, makeStateUpdater } from '../utils'
20
15
 
21
16
  export type FiltersTableState = {
22
17
  columnFilters: ColumnFiltersState
@@ -41,7 +36,7 @@ export type FilterFn<TData extends RowData> = {
41
36
  row: Row<TData>,
42
37
  columnId: string,
43
38
  filterValue: any,
44
- addMeta: (meta: any) => void
39
+ addMeta: (meta: FilterMeta) => void
45
40
  ): boolean
46
41
 
47
42
  resolveFilterValue?: TransformFilterValueFn<TData>
@@ -50,12 +45,12 @@ export type FilterFn<TData extends RowData> = {
50
45
 
51
46
  export type TransformFilterValueFn<TData extends RowData> = (
52
47
  value: any,
53
- column?: Column<TData>
48
+ column?: Column<TData, unknown>
54
49
  ) => unknown
55
50
 
56
51
  export type ColumnFilterAutoRemoveTestFn<TData extends RowData> = (
57
52
  value: any,
58
- column?: Column<TData>
53
+ column?: Column<TData, unknown>
59
54
  ) => boolean
60
55
 
61
56
  export type CustomFilterFns<TData extends RowData> = Record<
@@ -93,7 +88,7 @@ export type FiltersColumn<TData extends RowData> = {
93
88
 
94
89
  export type FiltersRow<TData extends RowData> = {
95
90
  columnFilters: Record<string, boolean>
96
- columnFiltersMeta: Record<string, any>
91
+ columnFiltersMeta: Record<string, FilterMeta>
97
92
  }
98
93
 
99
94
  export type FiltersOptions<TData extends RowData> = {
@@ -110,7 +105,7 @@ export type FiltersOptions<TData extends RowData> = {
110
105
  globalFilterFn?: FilterFnOption<TData>
111
106
  onGlobalFilterChange?: OnChangeFn<any>
112
107
  enableGlobalFilter?: boolean
113
- getColumnCanGlobalFilter?: (column: Column<TData>) => boolean
108
+ getColumnCanGlobalFilter?: (column: Column<TData, unknown>) => boolean
114
109
 
115
110
  // Faceting
116
111
  getFacetedRowModel?: (
@@ -189,7 +184,7 @@ export const Filters: TableFeature = {
189
184
  },
190
185
 
191
186
  createColumn: <TData extends RowData>(
192
- column: Column<TData>,
187
+ column: Column<TData, unknown>,
193
188
  table: Table<TData>
194
189
  ): FiltersColumn<TData> => {
195
190
  return {
@@ -451,7 +446,7 @@ export const Filters: TableFeature = {
451
446
  export function shouldAutoRemoveFilter<TData extends RowData>(
452
447
  filterFn?: FilterFn<TData>,
453
448
  value?: any,
454
- column?: Column<TData>
449
+ column?: Column<TData, unknown>
455
450
  ) {
456
451
  return (
457
452
  (filterFn && filterFn.autoRemove