@tanstack/react-table 8.0.0-alpha.2 → 8.0.0-alpha.22

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 (99) 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 +96 -12
  4. package/build/cjs/index.js.map +1 -1
  5. package/build/esm/index.js +40 -3663
  6. package/build/esm/index.js.map +1 -1
  7. package/build/stats-html.html +1 -1
  8. package/build/stats-react.json +28 -676
  9. package/build/types/index.d.ts +13 -7
  10. package/build/umd/index.development.js +50 -3665
  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 +104 -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 -519
  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/ColumnSizing.js +0 -331
  23. package/build/cjs/features/ColumnSizing.js.map +0 -1
  24. package/build/cjs/features/Expanding.js +0 -234
  25. package/build/cjs/features/Expanding.js.map +0 -1
  26. package/build/cjs/features/Filters.js +0 -396
  27. package/build/cjs/features/Filters.js.map +0 -1
  28. package/build/cjs/features/Grouping.js +0 -228
  29. package/build/cjs/features/Grouping.js.map +0 -1
  30. package/build/cjs/features/Headers.js +0 -486
  31. package/build/cjs/features/Headers.js.map +0 -1
  32. package/build/cjs/features/Ordering.js +0 -83
  33. package/build/cjs/features/Ordering.js.map +0 -1
  34. package/build/cjs/features/Pinning.js +0 -163
  35. package/build/cjs/features/Pinning.js.map +0 -1
  36. package/build/cjs/features/Sorting.js +0 -269
  37. package/build/cjs/features/Sorting.js.map +0 -1
  38. package/build/cjs/features/Visibility.js +0 -160
  39. package/build/cjs/features/Visibility.js.map +0 -1
  40. package/build/cjs/filterTypes.js +0 -172
  41. package/build/cjs/filterTypes.js.map +0 -1
  42. package/build/cjs/sortTypes.js +0 -121
  43. package/build/cjs/sortTypes.js.map +0 -1
  44. package/build/cjs/utils/columnFilterRowsFn.js +0 -130
  45. package/build/cjs/utils/columnFilterRowsFn.js.map +0 -1
  46. package/build/cjs/utils/expandRowsFn.js +0 -38
  47. package/build/cjs/utils/expandRowsFn.js.map +0 -1
  48. package/build/cjs/utils/globalFilterRowsFn.js +0 -100
  49. package/build/cjs/utils/globalFilterRowsFn.js.map +0 -1
  50. package/build/cjs/utils/groupRowsFn.js +0 -154
  51. package/build/cjs/utils/groupRowsFn.js.map +0 -1
  52. package/build/cjs/utils/sortRowsFn.js +0 -93
  53. package/build/cjs/utils/sortRowsFn.js.map +0 -1
  54. package/build/cjs/utils.js +0 -143
  55. package/build/cjs/utils.js.map +0 -1
  56. package/build/types/aggregationTypes.d.ts +0 -22
  57. package/build/types/core.d.ts +0 -126
  58. package/build/types/createTable.d.ts +0 -35
  59. package/build/types/features/ColumnSizing.d.ts +0 -73
  60. package/build/types/features/Expanding.d.ts +0 -52
  61. package/build/types/features/Filters.d.ts +0 -93
  62. package/build/types/features/Grouping.d.ts +0 -82
  63. package/build/types/features/Headers.d.ts +0 -41
  64. package/build/types/features/Ordering.d.ts +0 -19
  65. package/build/types/features/Pinning.d.ts +0 -39
  66. package/build/types/features/Sorting.d.ts +0 -75
  67. package/build/types/features/Visibility.d.ts +0 -47
  68. package/build/types/filterTypes.d.ts +0 -50
  69. package/build/types/sortTypes.d.ts +0 -17
  70. package/build/types/types.d.ts +0 -124
  71. package/build/types/utils/columnFilterRowsFn.d.ts +0 -2
  72. package/build/types/utils/expandRowsFn.d.ts +0 -2
  73. package/build/types/utils/globalFilterRowsFn.d.ts +0 -2
  74. package/build/types/utils/groupRowsFn.d.ts +0 -2
  75. package/build/types/utils/sortRowsFn.d.ts +0 -2
  76. package/build/types/utils.d.ts +0 -24
  77. package/src/aggregationTypes.ts +0 -115
  78. package/src/core.tsx +0 -1232
  79. package/src/createTable.tsx +0 -181
  80. package/src/features/ColumnSizing.ts +0 -482
  81. package/src/features/Expanding.ts +0 -388
  82. package/src/features/Filters.ts +0 -707
  83. package/src/features/Grouping.ts +0 -451
  84. package/src/features/Headers.ts +0 -944
  85. package/src/features/Ordering.ts +0 -134
  86. package/src/features/Pinning.ts +0 -213
  87. package/src/features/Sorting.ts +0 -487
  88. package/src/features/Visibility.ts +0 -281
  89. package/src/features/withPagination.oldts +0 -208
  90. package/src/features/withRowSelection.oldts +0 -467
  91. package/src/filterTypes.ts +0 -251
  92. package/src/sortTypes.ts +0 -159
  93. package/src/types.ts +0 -314
  94. package/src/utils/columnFilterRowsFn.ts +0 -162
  95. package/src/utils/expandRowsFn.ts +0 -53
  96. package/src/utils/globalFilterRowsFn.ts +0 -129
  97. package/src/utils/groupRowsFn.ts +0 -196
  98. package/src/utils/sortRowsFn.ts +0 -115
  99. package/src/utils.tsx +0 -249
@@ -1,181 +0,0 @@
1
- import * as React from 'react'
2
- import { Cell, Column, Row } from '.'
3
- import { createTableInstance } from './core'
4
- import { ReactTable, ColumnDef, AccessorFn, Options } from './types'
5
- import { Overwrite } from './utils'
6
-
7
- type TableHelper<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> = {
8
- RowType<TTData>(): TableHelper<
9
- TTData,
10
- TValue,
11
- TFilterFns,
12
- TSortingFns,
13
- TAggregationFns
14
- >
15
-
16
- FilterFns: <TTFilterFns>(
17
- filterFns: TTFilterFns
18
- ) => TableHelper<TData, TValue, TTFilterFns, TSortingFns, TAggregationFns>
19
-
20
- SortingFns: <TTSortingFns>(
21
- sortingFns: TTSortingFns
22
- ) => TableHelper<TData, TValue, TFilterFns, TTSortingFns, TAggregationFns>
23
-
24
- AggregationFns: <TTAggregationFns>(
25
- aggregationFns: TTAggregationFns
26
- ) => TableHelper<TData, TValue, TFilterFns, TSortingFns, TTAggregationFns>
27
-
28
- createColumns: (
29
- columns: ColumnDef<
30
- TData,
31
- TValue,
32
- TFilterFns,
33
- TSortingFns,
34
- TAggregationFns
35
- >[]
36
- ) => ColumnDef<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>[]
37
-
38
- createGroup: (
39
- column: Overwrite<
40
- ColumnDef<TData, unknown, TFilterFns, TSortingFns, TAggregationFns>,
41
- { __generated?: never; accessorFn?: never; accessorKey?: never }
42
- >
43
- ) => ColumnDef<TData, unknown, TFilterFns, TSortingFns, TAggregationFns>
44
-
45
- createColumn: <TAccessor extends AccessorFn<TData> | keyof TData>(
46
- accessor: TAccessor,
47
- column: TAccessor extends (...args: any[]) => any
48
- ? // Accessor Fn
49
- Overwrite<
50
- ColumnDef<
51
- TData,
52
- ReturnType<TAccessor>,
53
- TFilterFns,
54
- TSortingFns,
55
- TAggregationFns
56
- >,
57
- {
58
- __generated?: never
59
- accessorFn?: never
60
- accessorKey?: never
61
- id: string
62
- }
63
- >
64
- : TAccessor extends keyof TData
65
- ? // Accessor Key
66
- Overwrite<
67
- ColumnDef<
68
- TData,
69
- TData[TAccessor],
70
- TFilterFns,
71
- TSortingFns,
72
- TAggregationFns
73
- >,
74
- { __generated?: never; accessorFn?: never; accessorKey?: never }
75
- >
76
- : never
77
- ) => ColumnDef<
78
- TData,
79
- TAccessor extends (...args: any[]) => any
80
- ? ReturnType<TAccessor>
81
- : TAccessor extends keyof TData
82
- ? TData[TAccessor]
83
- : never,
84
- TFilterFns,
85
- TSortingFns,
86
- TAggregationFns
87
- >
88
-
89
- useTable: <TData, TValue, TFilterFns, TSortingFns, TAggregationFns>(
90
- options: Options<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
91
- ) => ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
92
-
93
- types: {
94
- instance: ReactTable<
95
- TData,
96
- TValue,
97
- TFilterFns,
98
- TSortingFns,
99
- TAggregationFns
100
- >
101
- columnDef: ColumnDef<
102
- TData,
103
- TValue,
104
- TFilterFns,
105
- TSortingFns,
106
- TAggregationFns
107
- >
108
- column: Column<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
109
- row: Row<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
110
- cell: Cell<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
111
- }
112
- }
113
-
114
- export function createTable<
115
- TData,
116
- TValue,
117
- TFilterFns,
118
- TSortingFns,
119
- TAggregationFns
120
- >(): TableHelper<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> {
121
- return {
122
- RowType: () => createTable(),
123
- FilterFns: () => createTable(),
124
- SortingFns: () => createTable(),
125
- AggregationFns: () => createTable(),
126
- createColumns: columns => columns,
127
- createColumn: (accessor, column) => {
128
- column = {
129
- ...column,
130
- id: column.id,
131
- }
132
-
133
- if (typeof accessor === 'string') {
134
- return {
135
- ...column,
136
- id: column.id ?? accessor,
137
- accessorKey: accessor,
138
- __generated: true,
139
- }
140
- }
141
-
142
- if (typeof accessor === 'function') {
143
- return {
144
- ...column,
145
- accessorFn: accessor,
146
- __generated: true,
147
- }
148
- }
149
-
150
- throw new Error('Invalid accessor')
151
- },
152
- createGroup: column => ({
153
- ...column,
154
- __generated: true,
155
- }),
156
- useTable: <TData, TValue, TFilterFns, TSortingFns, TAggregationFns>(
157
- options: Options<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
158
- ): ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> => {
159
- const instanceRef = React.useRef<
160
- ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
161
- >(undefined!)
162
-
163
- const rerender = React.useReducer(() => ({}), {})[1]
164
-
165
- if (!instanceRef.current) {
166
- instanceRef.current = createTableInstance<
167
- TData,
168
- TValue,
169
- TFilterFns,
170
- TSortingFns,
171
- TAggregationFns
172
- >(options, rerender)
173
- }
174
-
175
- instanceRef.current.updateOptions(options)
176
-
177
- return instanceRef.current
178
- },
179
- types: undefined as any,
180
- } as TableHelper<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
181
- }
@@ -1,482 +0,0 @@
1
- import React, {
2
- ComponentProps,
3
- MouseEvent as ReactMouseEvent,
4
- PropsWithoutRef,
5
- PropsWithRef,
6
- TouchEvent as ReactTouchEvent,
7
- } from 'react'
8
- import {
9
- Column,
10
- Getter,
11
- Header,
12
- OnChangeFn,
13
- PropGetterValue,
14
- ReactTable,
15
- Updater,
16
- } from '../types'
17
- import { functionalUpdate, makeStateUpdater, memo, propGetter } from '../utils'
18
-
19
- //
20
-
21
- export type ColumnSizing = Record<string, number>
22
-
23
- export type ColumnSizingInfoState = {
24
- startOffset: null | number
25
- startSize: null | number
26
- deltaOffset: null | number
27
- deltaPercentage: null | number
28
- isResizingColumn: false | string
29
- columnSizingStart: [string, number][]
30
- }
31
-
32
- export type ColumnSizingTableState = {
33
- columnSizing: ColumnSizing
34
- columnSizingInfo: ColumnSizingInfoState
35
- }
36
-
37
- export type ColumnResizeMode = 'onChange' | 'onEnd'
38
-
39
- export type ColumnSizingOptions = {
40
- enableColumnResizing?: boolean
41
- columnResizeMode?: ColumnResizeMode
42
- onColumnSizingChange?: OnChangeFn<ColumnSizing>
43
- onColumnSizingInfoChange?: OnChangeFn<ColumnSizingInfoState>
44
- }
45
-
46
- export type ColumnSizingDefaultOptions = {
47
- columnResizeMode: ColumnResizeMode
48
- onColumnSizingChange: OnChangeFn<ColumnSizing>
49
- onColumnSizingInfoChange: OnChangeFn<ColumnSizingInfoState>
50
- }
51
-
52
- export type HeaderResizerProps = {
53
- title?: string
54
- onMouseDown?: (e: ReactMouseEvent) => void
55
- onTouchStart?: (e: ReactTouchEvent) => void
56
- draggable?: boolean
57
- role?: string
58
- }
59
-
60
- export type ColumnSizingInstance<
61
- TData,
62
- TValue,
63
- TFilterFns,
64
- TSortingFns,
65
- TAggregationFns
66
- > = {
67
- setColumnSizing: (updater: Updater<ColumnSizing>) => void
68
- setColumnSizingInfo: (updater: Updater<ColumnSizingInfoState>) => void
69
- resetColumnSizing: () => void
70
- resetColumnSize: (columnId: string) => void
71
- resetHeaderSize: (headerId: string) => void
72
- resetHeaderSizeInfo: () => void
73
- getColumnCanResize: (columnId: string) => boolean
74
- getHeaderCanResize: (headerId: string) => boolean
75
- getHeaderResizerProps: <TGetter extends Getter<HeaderResizerProps>>(
76
- columnId: string,
77
- userProps?: TGetter
78
- ) => undefined | PropGetterValue<HeaderResizerProps, TGetter>
79
- getColumnIsResizing: (columnId: string) => boolean
80
- getHeaderIsResizing: (headerId: string) => boolean
81
- }
82
-
83
- export type ColumnSizingColumnDef = {
84
- enableResizing?: boolean
85
- defaultCanResize?: boolean
86
- }
87
-
88
- export type ColumnSizingColumn<
89
- TData,
90
- TValue,
91
- TFilterFns,
92
- TSortingFns,
93
- TAggregationFns
94
- > = {
95
- getCanResize: () => boolean
96
- getIsResizing: () => boolean
97
- resetSize: () => void
98
- }
99
-
100
- export type ColumnSizingHeader<
101
- TData,
102
- TValue,
103
- TFilterFns,
104
- TSortingFns,
105
- TAggregationFns
106
- > = {
107
- getCanResize: () => boolean
108
- getIsResizing: () => boolean
109
- getResizerProps: <TGetter extends Getter<HeaderResizerProps>>(
110
- userProps?: TGetter
111
- ) => undefined | PropGetterValue<HeaderResizerProps, TGetter>
112
- resetSize: () => void
113
- }
114
-
115
- //
116
-
117
- export const defaultColumnSizing = {
118
- width: 150,
119
- minWidth: 20,
120
- maxWidth: Number.MAX_SAFE_INTEGER,
121
- }
122
-
123
- export function getInitialState(): ColumnSizingTableState {
124
- return {
125
- columnSizing: {},
126
- columnSizingInfo: {
127
- startOffset: null,
128
- startSize: null,
129
- deltaOffset: null,
130
- deltaPercentage: null,
131
- isResizingColumn: false,
132
- columnSizingStart: [],
133
- },
134
- }
135
- }
136
-
137
- export function getDefaultOptions<
138
- TData,
139
- TValue,
140
- TFilterFns,
141
- TSortingFns,
142
- TAggregationFns
143
- >(
144
- instance: ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
145
- ): ColumnSizingDefaultOptions {
146
- return {
147
- columnResizeMode: 'onEnd',
148
- onColumnSizingChange: makeStateUpdater('columnSizing', instance),
149
- onColumnSizingInfoChange: makeStateUpdater('columnSizingInfo', instance),
150
- }
151
- }
152
-
153
- export function getInstance<
154
- TData,
155
- TValue,
156
- TFilterFns,
157
- TSortingFns,
158
- TAggregationFns
159
- >(
160
- instance: ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
161
- ): ColumnSizingInstance<
162
- TData,
163
- TValue,
164
- TFilterFns,
165
- TSortingFns,
166
- TAggregationFns
167
- > {
168
- return {
169
- setColumnSizing: updater =>
170
- instance.options.onColumnSizingChange?.(
171
- updater,
172
- functionalUpdate(updater, instance.getState().columnSizing)
173
- ),
174
- setColumnSizingInfo: updater =>
175
- instance.options.onColumnSizingInfoChange?.(
176
- updater,
177
- functionalUpdate(updater, instance.getState().columnSizingInfo)
178
- ),
179
- resetColumnSizing: () => {
180
- instance.setColumnSizing(instance.initialState.columnSizing ?? {})
181
- },
182
- resetHeaderSizeInfo: () => {
183
- instance.setColumnSizingInfo(instance.initialState.columnSizingInfo ?? {})
184
- },
185
- resetColumnSize: columnId => {
186
- instance.setColumnSizing(({ [columnId]: _, ...rest }) => {
187
- return rest
188
- })
189
- },
190
- resetHeaderSize: headerId => {
191
- const header = instance.getHeader(headerId)
192
-
193
- if (!header) {
194
- return
195
- }
196
-
197
- return instance.resetColumnSize(header.column.id)
198
- },
199
- getHeaderCanResize: headerId => {
200
- const header = instance.getHeader(headerId)
201
-
202
- if (!header) {
203
- throw new Error()
204
- }
205
-
206
- return instance.getColumnCanResize(header.column.id)
207
- },
208
- getColumnCanResize: columnId => {
209
- const column = instance.getColumn(columnId)
210
-
211
- if (!column) {
212
- throw new Error()
213
- }
214
-
215
- return (
216
- column.enableResizing ??
217
- instance.options.enableColumnResizing ??
218
- column.defaultCanResize ??
219
- true
220
- )
221
- },
222
- getColumnIsResizing: columnId => {
223
- const column = instance.getColumn(columnId)
224
-
225
- if (!column) {
226
- throw new Error()
227
- }
228
-
229
- return instance.getState().columnSizingInfo.isResizingColumn === columnId
230
- },
231
- getHeaderIsResizing: headerId => {
232
- const header = instance.getHeader(headerId)
233
-
234
- if (!header) {
235
- throw new Error()
236
- }
237
-
238
- return instance.getColumnIsResizing(header.column.id)
239
- },
240
- getHeaderResizerProps: (headerId, userProps) => {
241
- const header = instance.getHeader(headerId)
242
-
243
- if (!header) {
244
- return
245
- }
246
-
247
- const column = instance.getColumn(header.column.id)
248
-
249
- if (!column) {
250
- return
251
- }
252
-
253
- const canResize = column.getCanResize()
254
-
255
- const onResizeStart = (e: ReactMouseEvent | ReactTouchEvent) => {
256
- if (isTouchStartEvent(e)) {
257
- // lets not respond to multiple touches (e.g. 2 or 3 fingers)
258
- if (e.touches && e.touches.length > 1) {
259
- return
260
- }
261
- }
262
-
263
- const columnSizingStart: [string, number][] = header
264
- .getLeafHeaders()
265
- .map(d => [d.column.id, d.getWidth()])
266
-
267
- const clientX = isTouchStartEvent(e)
268
- ? Math.round(e.touches[0].clientX)
269
- : e.clientX
270
-
271
- const updateOffset = (
272
- eventType: 'move' | 'end',
273
- clientXPos?: number
274
- ) => {
275
- if (typeof clientXPos !== 'number') {
276
- return
277
- }
278
-
279
- let newColumnSizing: ColumnSizing = {}
280
-
281
- instance.setColumnSizingInfo(old => {
282
- const deltaOffset = clientXPos - (old?.startOffset ?? 0)
283
- const deltaPercentage = Math.max(
284
- deltaOffset / (old?.startSize ?? 0),
285
- -0.999999
286
- )
287
-
288
- old.columnSizingStart.forEach(([columnId, headerWidth]) => {
289
- newColumnSizing[columnId] = Math.max(
290
- headerWidth + headerWidth * deltaPercentage,
291
- 0
292
- )
293
- })
294
-
295
- return {
296
- ...old,
297
- deltaOffset,
298
- deltaPercentage,
299
- }
300
- })
301
-
302
- if (
303
- instance.options.columnResizeMode === 'onChange' ||
304
- eventType === 'end'
305
- ) {
306
- instance.setColumnSizing(old => ({
307
- ...old,
308
- ...newColumnSizing,
309
- }))
310
- }
311
- }
312
-
313
- const onMove = (clientXPos?: number) => updateOffset('move', clientXPos)
314
-
315
- const onEnd = (clientXPos?: number) => {
316
- updateOffset('end', clientXPos)
317
-
318
- instance.setColumnSizingInfo(old => ({
319
- ...old,
320
- isResizingColumn: false,
321
- startOffset: null,
322
- startSize: null,
323
- deltaOffset: null,
324
- deltaPercentage: null,
325
- columnSizingStart: [],
326
- }))
327
- }
328
-
329
- const mouseEvents = {
330
- moveHandler: (e: MouseEvent) => onMove(e.clientX),
331
- upHandler: (e: MouseEvent) => {
332
- document.removeEventListener('mousemove', mouseEvents.moveHandler)
333
- document.removeEventListener('mouseup', mouseEvents.upHandler)
334
- onEnd(e.clientX)
335
- },
336
- }
337
-
338
- const touchEvents = {
339
- moveHandler: (e: TouchEvent) => {
340
- if (e.cancelable) {
341
- e.preventDefault()
342
- e.stopPropagation()
343
- }
344
- onMove(e.touches[0].clientX)
345
- return false
346
- },
347
- upHandler: (e: TouchEvent) => {
348
- document.removeEventListener('touchmove', touchEvents.moveHandler)
349
- document.removeEventListener('touchend', touchEvents.upHandler)
350
- if (e.cancelable) {
351
- e.preventDefault()
352
- e.stopPropagation()
353
- }
354
- onEnd(e.touches[0].clientX)
355
- },
356
- }
357
-
358
- const passiveIfSupported = passiveEventSupported()
359
- ? { passive: false }
360
- : false
361
-
362
- if (isTouchStartEvent(e)) {
363
- document.addEventListener(
364
- 'touchmove',
365
- touchEvents.moveHandler,
366
- passiveIfSupported
367
- )
368
- document.addEventListener(
369
- 'touchend',
370
- touchEvents.upHandler,
371
- passiveIfSupported
372
- )
373
- } else {
374
- document.addEventListener(
375
- 'mousemove',
376
- mouseEvents.moveHandler,
377
- passiveIfSupported
378
- )
379
- document.addEventListener(
380
- 'mouseup',
381
- mouseEvents.upHandler,
382
- passiveIfSupported
383
- )
384
- }
385
-
386
- instance.setColumnSizingInfo(old => ({
387
- ...old,
388
- startOffset: clientX,
389
- startSize: header.getWidth(),
390
- deltaOffset: 0,
391
- deltaPercentage: 0,
392
- columnSizingStart,
393
- isResizingColumn: header.column.id,
394
- }))
395
- }
396
-
397
- const initialProps: HeaderResizerProps = canResize
398
- ? {
399
- title: 'Toggle Grouping',
400
- draggable: false,
401
- role: 'separator',
402
- onMouseDown: (e: ReactMouseEvent) => {
403
- e.persist()
404
- onResizeStart(e)
405
- },
406
- onTouchStart: (e: ReactTouchEvent) => {
407
- e.persist()
408
- onResizeStart(e)
409
- },
410
- }
411
- : {}
412
-
413
- return propGetter(initialProps, userProps)
414
- },
415
- }
416
- }
417
-
418
- export function createColumn<
419
- TData,
420
- TValue,
421
- TFilterFns,
422
- TSortingFns,
423
- TAggregationFns
424
- >(
425
- column: Column<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>,
426
- instance: ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
427
- ): ColumnSizingColumn<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> {
428
- return {
429
- getIsResizing: () => instance.getColumnIsResizing(column.id),
430
- getCanResize: () => instance.getColumnCanResize(column.id),
431
- resetSize: () => instance.resetColumnSize(column.id),
432
- }
433
- }
434
-
435
- export function createHeader<
436
- TData,
437
- TValue,
438
- TFilterFns,
439
- TSortingFns,
440
- TAggregationFns
441
- >(
442
- header: Header<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>,
443
- instance: ReactTable<TData, TValue, TFilterFns, TSortingFns, TAggregationFns>
444
- ): ColumnSizingHeader<TData, TValue, TFilterFns, TSortingFns, TAggregationFns> {
445
- return {
446
- getIsResizing: () => instance.getHeaderIsResizing(header.id),
447
- getCanResize: () => instance.getHeaderCanResize(header.id),
448
- getResizerProps: userProps =>
449
- instance.getHeaderResizerProps(header.id, userProps),
450
- resetSize: () => instance.resetHeaderSize(header.id),
451
- }
452
- }
453
-
454
- let passiveSupported: boolean | null = null
455
- export function passiveEventSupported() {
456
- if (typeof passiveSupported === 'boolean') return passiveSupported
457
-
458
- let supported = false
459
- try {
460
- const options = {
461
- get passive() {
462
- supported = true
463
- return false
464
- },
465
- }
466
-
467
- const noop = () => {}
468
-
469
- window.addEventListener('test', noop, options)
470
- window.removeEventListener('test', noop)
471
- } catch (err) {
472
- supported = false
473
- }
474
- passiveSupported = supported
475
- return passiveSupported
476
- }
477
-
478
- function isTouchStartEvent(
479
- e: ReactTouchEvent | ReactMouseEvent
480
- ): e is ReactTouchEvent {
481
- return e.type === 'touchstart'
482
- }