@tanstack/react-table 8.0.0-alpha.1 → 8.0.0-alpha.11

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 (96) hide show
  1. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -78
  2. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +1 -1
  3. package/build/cjs/index.js +67 -12
  4. package/build/cjs/index.js.map +1 -1
  5. package/build/esm/index.js +30 -3346
  6. package/build/esm/index.js.map +1 -1
  7. package/build/stats-html.html +1 -1
  8. package/build/stats-react.json +28 -632
  9. package/build/types/index.d.ts +3 -7
  10. package/build/umd/index.development.js +37 -3348
  11. package/build/umd/index.development.js.map +1 -1
  12. package/build/umd/index.production.js +1 -1
  13. package/build/umd/index.production.js.map +1 -1
  14. package/package.json +4 -1
  15. package/src/index.tsx +56 -7
  16. package/build/cjs/aggregationTypes.js +0 -130
  17. package/build/cjs/aggregationTypes.js.map +0 -1
  18. package/build/cjs/core.js +0 -493
  19. package/build/cjs/core.js.map +0 -1
  20. package/build/cjs/createTable.js +0 -103
  21. package/build/cjs/createTable.js.map +0 -1
  22. package/build/cjs/features/Expanding.js +0 -234
  23. package/build/cjs/features/Expanding.js.map +0 -1
  24. package/build/cjs/features/Filters.js +0 -396
  25. package/build/cjs/features/Filters.js.map +0 -1
  26. package/build/cjs/features/Grouping.js +0 -228
  27. package/build/cjs/features/Grouping.js.map +0 -1
  28. package/build/cjs/features/Headers.js +0 -483
  29. package/build/cjs/features/Headers.js.map +0 -1
  30. package/build/cjs/features/Ordering.js +0 -83
  31. package/build/cjs/features/Ordering.js.map +0 -1
  32. package/build/cjs/features/Pinning.js +0 -163
  33. package/build/cjs/features/Pinning.js.map +0 -1
  34. package/build/cjs/features/Sorting.js +0 -269
  35. package/build/cjs/features/Sorting.js.map +0 -1
  36. package/build/cjs/features/Visibility.js +0 -160
  37. package/build/cjs/features/Visibility.js.map +0 -1
  38. package/build/cjs/filterTypes.js +0 -172
  39. package/build/cjs/filterTypes.js.map +0 -1
  40. package/build/cjs/sortTypes.js +0 -121
  41. package/build/cjs/sortTypes.js.map +0 -1
  42. package/build/cjs/utils/columnFilterRowsFn.js +0 -130
  43. package/build/cjs/utils/columnFilterRowsFn.js.map +0 -1
  44. package/build/cjs/utils/expandRowsFn.js +0 -38
  45. package/build/cjs/utils/expandRowsFn.js.map +0 -1
  46. package/build/cjs/utils/globalFilterRowsFn.js +0 -100
  47. package/build/cjs/utils/globalFilterRowsFn.js.map +0 -1
  48. package/build/cjs/utils/groupRowsFn.js +0 -154
  49. package/build/cjs/utils/groupRowsFn.js.map +0 -1
  50. package/build/cjs/utils/sortRowsFn.js +0 -93
  51. package/build/cjs/utils/sortRowsFn.js.map +0 -1
  52. package/build/cjs/utils.js +0 -143
  53. package/build/cjs/utils.js.map +0 -1
  54. package/build/types/aggregationTypes.d.ts +0 -22
  55. package/build/types/core.d.ts +0 -122
  56. package/build/types/createTable.d.ts +0 -35
  57. package/build/types/features/Expanding.d.ts +0 -52
  58. package/build/types/features/Filters.d.ts +0 -93
  59. package/build/types/features/Grouping.d.ts +0 -82
  60. package/build/types/features/Headers.d.ts +0 -41
  61. package/build/types/features/Ordering.d.ts +0 -19
  62. package/build/types/features/Pinning.d.ts +0 -39
  63. package/build/types/features/Sorting.d.ts +0 -75
  64. package/build/types/features/Visibility.d.ts +0 -47
  65. package/build/types/filterTypes.d.ts +0 -50
  66. package/build/types/sortTypes.d.ts +0 -17
  67. package/build/types/types.d.ts +0 -122
  68. package/build/types/utils/columnFilterRowsFn.d.ts +0 -2
  69. package/build/types/utils/expandRowsFn.d.ts +0 -2
  70. package/build/types/utils/globalFilterRowsFn.d.ts +0 -2
  71. package/build/types/utils/groupRowsFn.d.ts +0 -2
  72. package/build/types/utils/sortRowsFn.d.ts +0 -2
  73. package/build/types/utils.d.ts +0 -24
  74. package/src/aggregationTypes.ts +0 -115
  75. package/src/core.tsx +0 -1194
  76. package/src/createTable.tsx +0 -181
  77. package/src/features/Expanding.ts +0 -388
  78. package/src/features/Filters.ts +0 -707
  79. package/src/features/Grouping.ts +0 -451
  80. package/src/features/Headers.ts +0 -907
  81. package/src/features/Ordering.ts +0 -134
  82. package/src/features/Pinning.ts +0 -213
  83. package/src/features/Sorting.ts +0 -487
  84. package/src/features/Visibility.ts +0 -281
  85. package/src/features/withColumnResizing.oldts +0 -281
  86. package/src/features/withPagination.oldts +0 -208
  87. package/src/features/withRowSelection.oldts +0 -467
  88. package/src/filterTypes.ts +0 -251
  89. package/src/sortTypes.ts +0 -159
  90. package/src/types.ts +0 -285
  91. package/src/utils/columnFilterRowsFn.ts +0 -162
  92. package/src/utils/expandRowsFn.ts +0 -53
  93. package/src/utils/globalFilterRowsFn.ts +0 -129
  94. package/src/utils/groupRowsFn.ts +0 -196
  95. package/src/utils/sortRowsFn.ts +0 -115
  96. package/src/utils.tsx +0 -243
@@ -1,251 +0,0 @@
1
- import { AccessorFn, Row } from './types'
2
-
3
- export const filterTypes = {
4
- includesString,
5
- includesStringSensitive,
6
- equalsString,
7
- equalsStringSensitive,
8
- arrIncludes,
9
- arrIncludesAll,
10
- equals,
11
- weakEquals,
12
- betweenNumberRange,
13
- }
14
-
15
- export type BuiltInFilterType = keyof typeof filterTypes
16
-
17
- function includesString<
18
- TData,
19
- TValue,
20
- TAccessor extends AccessorFn<TData>,
21
- TFilterFns,
22
- TSortingFns,
23
- TAggregationFns
24
- >(
25
- rows: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>[],
26
- columnIds: string[],
27
- filterValue: unknown
28
- ) {
29
- const search = String(filterValue).toLowerCase()
30
-
31
- rows = rows.filter(row => {
32
- return columnIds.some(id => {
33
- return String(row.values[id]).toLowerCase().includes(search)
34
- })
35
- })
36
- return rows
37
- }
38
-
39
- includesString.autoRemove = (val: any) => testFalsey(val)
40
-
41
- function includesStringSensitive<
42
- TData,
43
- TValue,
44
- TAccessor extends AccessorFn<TData>,
45
- TFilterFns,
46
- TSortingFns,
47
- TAggregationFns
48
- >(
49
- rows: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>[],
50
- columnIds: string[],
51
- filterValue: unknown
52
- ) {
53
- const search = String(filterValue)
54
-
55
- rows = rows.filter(row => {
56
- return columnIds.some(id => {
57
- return String(row.values[id]).includes(search)
58
- })
59
- })
60
- return rows
61
- }
62
-
63
- includesStringSensitive.autoRemove = (val: any) => testFalsey(val)
64
-
65
- function equalsString<
66
- TData,
67
- TValue,
68
- TAccessor extends AccessorFn<TData>,
69
- TFilterFns,
70
- TSortingFns,
71
- TAggregationFns
72
- >(
73
- rows: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>[],
74
- columnIds: string[],
75
- filterValue: unknown
76
- ) {
77
- const search = String(filterValue).toLowerCase()
78
-
79
- return rows.filter(row => {
80
- return columnIds.some(id => {
81
- const rowValue = row.values[id]
82
- return rowValue !== undefined
83
- ? String(rowValue).toLowerCase() === search
84
- : true
85
- })
86
- })
87
- }
88
-
89
- equalsString.autoRemove = (val: any) => testFalsey(val)
90
-
91
- function equalsStringSensitive<
92
- TData,
93
- TValue,
94
- TAccessor extends AccessorFn<TData>,
95
- TFilterFns,
96
- TSortingFns,
97
- TAggregationFns
98
- >(
99
- rows: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>[],
100
- columnIds: string[],
101
- filterValue: unknown
102
- ) {
103
- const search = String(filterValue)
104
- return rows.filter(row => {
105
- return columnIds.some(id => {
106
- const rowValue = row.values[id]
107
- return rowValue !== undefined ? String(rowValue) === search : true
108
- })
109
- })
110
- }
111
-
112
- equalsStringSensitive.autoRemove = (val: any) => testFalsey(val)
113
-
114
- function arrIncludes<
115
- TData,
116
- TValue,
117
- TAccessor extends AccessorFn<TData>,
118
- TFilterFns,
119
- TSortingFns,
120
- TAggregationFns
121
- >(
122
- rows: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>[],
123
- columnIds: string[],
124
- filterValue: unknown
125
- ) {
126
- return rows.filter(row => {
127
- return columnIds.some(id => {
128
- const rowValue = row.values[id]
129
- return rowValue.includes(filterValue)
130
- })
131
- })
132
- }
133
-
134
- arrIncludes.autoRemove = (val: any) => testFalsey(val) || !val?.length
135
-
136
- function arrIncludesAll<
137
- TData,
138
- TValue,
139
- TAccessor extends AccessorFn<TData>,
140
- TFilterFns,
141
- TSortingFns,
142
- TAggregationFns
143
- >(
144
- rows: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>[],
145
- columnIds: string[],
146
- filterValue: unknown[]
147
- ) {
148
- return rows.filter(row => {
149
- return columnIds.some(id => {
150
- const rowValue = row.values[id]
151
- return (
152
- rowValue &&
153
- rowValue.length &&
154
- filterValue.every(val => rowValue.includes(val))
155
- )
156
- })
157
- })
158
- }
159
-
160
- arrIncludesAll.autoRemove = (val: any) => testFalsey(val) || !val?.length
161
-
162
- function equals<
163
- TData,
164
- TValue,
165
- TAccessor extends AccessorFn<TData>,
166
- TFilterFns,
167
- TSortingFns,
168
- TAggregationFns
169
- >(
170
- rows: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>[],
171
- columnIds: string[],
172
- filterValue: unknown
173
- ) {
174
- return rows.filter(row => {
175
- return columnIds.some(id => {
176
- const rowValue = row.values[id]
177
- return rowValue === filterValue
178
- })
179
- })
180
- }
181
-
182
- equals.autoRemove = (val: any) => testFalsey(val)
183
-
184
- function weakEquals<
185
- TData,
186
- TValue,
187
- TAccessor extends AccessorFn<TData>,
188
- TFilterFns,
189
- TSortingFns,
190
- TAggregationFns
191
- >(
192
- rows: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>[],
193
- columnIds: string[],
194
- filterValue: unknown
195
- ) {
196
- return rows.filter(row => {
197
- return columnIds.some(id => {
198
- const rowValue = row.values[id]
199
- // eslint-disable-next-line eqeqeq
200
- return rowValue == filterValue
201
- })
202
- })
203
- }
204
-
205
- weakEquals.autoRemove = (val: any) => testFalsey(val)
206
-
207
- function betweenNumberRange<
208
- TData,
209
- TValue,
210
- TAccessor extends AccessorFn<TData>,
211
- TFilterFns,
212
- TSortingFns,
213
- TAggregationFns
214
- >(
215
- rows: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>[],
216
- columnIds: string[],
217
- filterValue: [unknown, unknown]
218
- ) {
219
- let [unsafeMin, unsafeMax] = filterValue || []
220
-
221
- let parsedMin =
222
- typeof unsafeMin !== 'number' ? parseFloat(unsafeMin as string) : unsafeMin
223
- let parsedMax =
224
- typeof unsafeMax !== 'number' ? parseFloat(unsafeMax as string) : unsafeMax
225
-
226
- let min =
227
- unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin
228
- let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax
229
-
230
- if (min > max) {
231
- const temp = min
232
- min = max
233
- max = temp
234
- }
235
-
236
- return rows.filter(row => {
237
- return columnIds.some(id => {
238
- const rowValue = row.values[id]
239
- return rowValue >= min && rowValue <= max
240
- })
241
- })
242
- }
243
-
244
- betweenNumberRange.autoRemove = (val: any) =>
245
- testFalsey(val) || (testFalsey(val[0]) && testFalsey(val[1]))
246
-
247
- // Utils
248
-
249
- function testFalsey(val: any) {
250
- return val === undefined || val === null || val === ''
251
- }
package/src/sortTypes.ts DELETED
@@ -1,159 +0,0 @@
1
- import { Row } from './types'
2
-
3
- const reSplitAlphaNumeric = /([0-9]+)/gm
4
-
5
- export const sortTypes = {
6
- alphanumeric,
7
- alphanumericCaseSensitive,
8
- text,
9
- textCaseSensitive,
10
- datetime,
11
- basic,
12
- }
13
-
14
- export type BuiltInSortType = keyof typeof sortTypes
15
-
16
- function alphanumeric<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>(
17
- rowA: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>,
18
- rowB: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>,
19
- columnId: string
20
- ) {
21
- return compareAlphanumeric(
22
- toString(rowA.values[columnId]).toLowerCase(),
23
- toString(rowB.values[columnId]).toLowerCase()
24
- )
25
- }
26
-
27
- function alphanumericCaseSensitive<
28
- TData,
29
- TValue,
30
- TFilterFns,
31
- TSortingFns,
32
- TAggregationFns
33
- >(
34
- rowA: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>,
35
- rowB: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>,
36
- columnId: string
37
- ) {
38
- return compareAlphanumeric(
39
- toString(rowA.values[columnId]),
40
- toString(rowB.values[columnId])
41
- )
42
- }
43
-
44
- // Mixed sorting is slow, but very inclusive of many edge cases.
45
- // It handles numbers, mixed alphanumeric combinations, and even
46
- // null, undefined, and Infinity
47
- function compareAlphanumeric(aStr: string, bStr: string) {
48
- // Split on number groups, but keep the delimiter
49
- // Then remove falsey split values
50
- const a = aStr.split(reSplitAlphaNumeric).filter(Boolean)
51
- const b = bStr.split(reSplitAlphaNumeric).filter(Boolean)
52
-
53
- // While
54
- while (a.length && b.length) {
55
- const aa = a.shift()!
56
- const bb = b.shift()!
57
-
58
- const an = parseInt(aa, 10)
59
- const bn = parseInt(bb, 10)
60
-
61
- const combo = [an, bn].sort()
62
-
63
- // Both are string
64
- if (isNaN(combo[0]!)) {
65
- if (aa > bb) {
66
- return 1
67
- }
68
- if (bb > aa) {
69
- return -1
70
- }
71
- continue
72
- }
73
-
74
- // One is a string, one is a number
75
- if (isNaN(combo[1]!)) {
76
- return isNaN(an) ? -1 : 1
77
- }
78
-
79
- // Both are numbers
80
- if (an > bn) {
81
- return 1
82
- }
83
- if (bn > an) {
84
- return -1
85
- }
86
- }
87
-
88
- return a.length - b.length
89
- }
90
-
91
- // The text filter is more basic (less numeric support)
92
- // but is much faster
93
- function text<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>(
94
- rowA: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>,
95
- rowB: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>,
96
- columnId: string
97
- ) {
98
- return compareBasic(
99
- toString(rowA.values[columnId]).toLowerCase(),
100
- toString(rowB.values[columnId]).toLowerCase()
101
- )
102
- }
103
-
104
- // The text filter is more basic (less numeric support)
105
- // but is much faster
106
- function textCaseSensitive<
107
- TData,
108
- TValue,
109
- TFilterFns,
110
- TSortingFns,
111
- TAggregationFns
112
- >(
113
- rowA: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>,
114
- rowB: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>,
115
- columnId: string
116
- ) {
117
- return compareBasic(
118
- toString(rowA.values[columnId]),
119
- toString(rowB.values[columnId])
120
- )
121
- }
122
-
123
- function datetime<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>(
124
- rowA: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>,
125
- rowB: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>,
126
- columnId: string
127
- ) {
128
- return compareBasic(
129
- (rowA.values[columnId] as Date).getTime(),
130
- (rowB.values[columnId] as Date).getTime()
131
- )
132
- }
133
-
134
- function basic<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>(
135
- rowA: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>,
136
- rowB: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>,
137
- columnId: string
138
- ) {
139
- return compareBasic(rowA.values[columnId], rowB.values[columnId])
140
- }
141
-
142
- // Utils
143
-
144
- function compareBasic(a: any, b: any) {
145
- return a === b ? 0 : a > b ? 1 : -1
146
- }
147
-
148
- function toString(a: any) {
149
- if (typeof a === 'number') {
150
- if (isNaN(a) || a === Infinity || a === -Infinity) {
151
- return ''
152
- }
153
- return String(a)
154
- }
155
- if (typeof a === 'string') {
156
- return a
157
- }
158
- return ''
159
- }
package/src/types.ts DELETED
@@ -1,285 +0,0 @@
1
- import React from 'react'
2
- // import * as TS from 'ts-toolbelt'
3
- import {
4
- CoreColumn,
5
- CoreColumnDef,
6
- CoreOptions,
7
- CoreRow,
8
- TableCore,
9
- } from './core'
10
- import {
11
- VisibilityInstance,
12
- VisibilityTableState,
13
- VisibilityColumn as ColumnVisibilityColumn,
14
- VisibilityOptions,
15
- VisibilityColumnDef,
16
- VisibilityRow,
17
- } from './features/Visibility'
18
- import {
19
- ColumnOrderInstance,
20
- ColumnOrderOptions,
21
- ColumnOrderTableState,
22
- } from './features/Ordering'
23
- import {
24
- ColumnPinningColumn,
25
- ColumnPinningColumnDef,
26
- ColumnPinningInstance,
27
- ColumnPinningOptions,
28
- ColumnPinningTableState,
29
- } from './features/Pinning'
30
- import { HeadersInstance, HeadersRow } from './features/Headers'
31
- import {
32
- FiltersColumn,
33
- FiltersColumnDef,
34
- FiltersInstance,
35
- FiltersOptions,
36
- FiltersTableState,
37
- } from './features/Filters'
38
- import {
39
- SortingColumn,
40
- SortingColumnDef,
41
- SortingInstance,
42
- SortingOptions,
43
- SortingTableState,
44
- } from './features/Sorting'
45
- import {
46
- GroupingColumn,
47
- GroupingColumnDef,
48
- GroupingInstance,
49
- GroupingOptions,
50
- GroupingRow,
51
- GroupingTableState,
52
- } from './features/Grouping'
53
- import {
54
- ExpandedInstance,
55
- ExpandedOptions,
56
- ExpandedTableState,
57
- } from './features/Expanding'
58
- import { Overwrite } from './utils'
59
-
60
- // declare global {
61
- // const process.env.NODE_ENV !== 'production': boolean
62
- // }
63
-
64
- export type ReactTable<
65
- TData,
66
- TValue,
67
- TFilterFns,
68
- TSortingFns,
69
- TAggregationFns
70
- > = TableCore<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> &
71
- VisibilityInstance<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> &
72
- ColumnOrderInstance<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> &
73
- ColumnPinningInstance<
74
- TData,
75
- TValue,
76
- TFilterFns,
77
- TSortingFns,
78
- TAggregationFns
79
- > &
80
- HeadersInstance<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> &
81
- FiltersInstance<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> &
82
- SortingInstance<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> &
83
- GroupingInstance<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> &
84
- ExpandedInstance<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
85
-
86
- export type Renderable<TProps> =
87
- | React.ReactNode
88
- | React.FunctionComponent<TProps>
89
- | React.Component<TProps>
90
-
91
- //
92
-
93
- export type Options<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> =
94
- CoreOptions<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> &
95
- VisibilityOptions &
96
- ColumnOrderOptions &
97
- ColumnPinningOptions &
98
- FiltersOptions<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> &
99
- SortingOptions<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> &
100
- GroupingOptions<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> &
101
- ExpandedOptions<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
102
-
103
- export type Updater<T> = T | ((old?: T) => T)
104
- export type OnChangeFn<T> = (updaterOrValue: Updater<T>, value: T) => void
105
-
106
- export type TableState = VisibilityTableState &
107
- ColumnOrderTableState &
108
- ColumnPinningTableState &
109
- FiltersTableState &
110
- SortingTableState &
111
- ExpandedTableState &
112
- GroupingTableState
113
-
114
- export type Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> =
115
- CoreRow<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> &
116
- VisibilityRow<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> &
117
- HeadersRow<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> &
118
- GroupingRow
119
-
120
- export type RowValues = {
121
- [key: string]: any
122
- }
123
-
124
- export type RowModel<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> =
125
- {
126
- rows: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>[]
127
- flatRows: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>[]
128
- rowsById: Record<
129
- string,
130
- Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
131
- >
132
- }
133
-
134
- export type AccessorFn<TData> = (originalRow: TData, index: number) => any
135
-
136
- export type ColumnDef<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> =
137
- CoreColumnDef<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> &
138
- VisibilityColumnDef &
139
- ColumnPinningColumnDef &
140
- FiltersColumnDef<TFilterFns> &
141
- SortingColumnDef<TSortingFns> &
142
- GroupingColumnDef<TAggregationFns>
143
-
144
- export type Column<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> =
145
- ColumnDef<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> &
146
- CoreColumn<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> &
147
- ColumnVisibilityColumn &
148
- ColumnPinningColumn &
149
- FiltersColumn<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> &
150
- SortingColumn<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> &
151
- GroupingColumn<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
152
-
153
- export type Cell<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> = {
154
- id: string
155
- rowId: string
156
- columnId: string
157
- value: TValue
158
- row: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
159
- column: Column<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
160
- getCellProps: PropGetter<CellProps>
161
- renderCell: () => React.ReactNode
162
- }
163
-
164
- export type Header<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> = {
165
- id: string
166
- depth: number
167
- column: Column<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
168
- getWidth: () => number
169
- subHeaders: Header<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>[]
170
- colSpan?: number
171
- rowSpan?: number
172
- getHeaderProps: PropGetter<HeaderProps>
173
- getFooterProps: PropGetter<HeaderProps>
174
- getLeafHeaders: () => Header<
175
- TData,
176
- TValue,
177
- TFilterFns,
178
- TSortingFns,
179
- TAggregationFns
180
- >[]
181
- isPlaceholder?: boolean
182
- placeholderId?: string
183
- renderHeader: (options?: { renderPlaceholder?: boolean }) => React.ReactNode
184
- renderFooter: (options?: { renderPlaceholder?: boolean }) => React.ReactNode
185
- }
186
-
187
- export type HeaderGroup<
188
- TData,
189
- TValue,
190
- TFilterFns,
191
- TSortingFns,
192
- TAggregationFns
193
- > = {
194
- id: string
195
- depth: number
196
- headers: Header<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>[]
197
- getHeaderGroupProps: PropGetter<HeaderGroupProps>
198
- getFooterGroupProps: PropGetter<FooterGroupProps>
199
- }
200
-
201
- export type HeaderRenderProps<THeader> = {
202
- header: THeader
203
- }
204
-
205
- export type FooterRenderProps<THeader> = {
206
- header: THeader
207
- }
208
-
209
- export type CellRenderProps<TCell, TRow> = {
210
- cell: TCell
211
- row: TRow
212
- }
213
-
214
- export type TableProps = {
215
- role: string
216
- }
217
-
218
- export type TableBodyProps = {
219
- role: string
220
- }
221
-
222
- export type TableHeadProps = {
223
- key: string
224
- role: string
225
- }
226
-
227
- export type TableFooterProps = {
228
- key: string
229
- role: string
230
- }
231
-
232
- export type HeaderGroupProps = {
233
- key: string
234
- role: string
235
- }
236
-
237
- export type FooterGroupProps = {
238
- key: string
239
- role: string
240
- }
241
-
242
- export type HeaderProps = {
243
- key: string
244
- role: string
245
- colSpan?: number
246
- rowSpan?: number
247
- }
248
-
249
- export type FooterProps = {
250
- key: string
251
- role: string
252
- colSpan?: number
253
- rowSpan?: number
254
- }
255
-
256
- export type RowProps = {
257
- key: string
258
- role: string
259
- }
260
-
261
- export type CellProps = {
262
- key: string
263
- role: string
264
- }
265
-
266
- //
267
-
268
- export type PropGetter<TBase> = <TGetter extends Getter<TBase>>(
269
- userProps?: TGetter
270
- ) => PropGetterValue<TBase, TGetter>
271
-
272
- export type Getter<TInitial> =
273
- | ((initial: TInitial) => object)
274
- | object
275
- | undefined
276
-
277
- export type PropGetterValue<TBase, TGetter> = TGetter extends undefined
278
- ? TBase
279
- : TGetter extends (...args: any[]) => infer TReturn
280
- ? Overwrite<TBase, TReturn>
281
- : TGetter extends object
282
- ? Overwrite<TBase, TGetter>
283
- : never
284
-
285
- export type NoInfer<A extends any> = [A][A extends any ? 0 : never]