@tanstack/table-core 8.0.0-alpha.64 → 8.0.0-alpha.68
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.
- package/build/cjs/aggregationFns.js +25 -37
- package/build/cjs/aggregationFns.js.map +1 -1
- package/build/cjs/core.js +167 -47
- package/build/cjs/core.js.map +1 -1
- package/build/cjs/createTable.js +24 -40
- package/build/cjs/createTable.js.map +1 -1
- package/build/cjs/features/Cells.js +29 -35
- package/build/cjs/features/Cells.js.map +1 -1
- package/build/cjs/features/ColumnSizing.js +126 -218
- package/build/cjs/features/ColumnSizing.js.map +1 -1
- package/build/cjs/features/Columns.js +59 -86
- package/build/cjs/features/Columns.js.map +1 -1
- package/build/cjs/features/Expanding.js +78 -125
- package/build/cjs/features/Expanding.js.map +1 -1
- package/build/cjs/features/Filters.js +143 -218
- package/build/cjs/features/Filters.js.map +1 -1
- package/build/cjs/features/Grouping.js +70 -116
- package/build/cjs/features/Grouping.js.map +1 -1
- package/build/cjs/features/Headers.js +125 -205
- package/build/cjs/features/Headers.js.map +1 -1
- package/build/cjs/features/Ordering.js +31 -43
- package/build/cjs/features/Ordering.js.map +1 -1
- package/build/cjs/features/Pagination.js +64 -72
- package/build/cjs/features/Pagination.js.map +1 -1
- package/build/cjs/features/Pinning.js +96 -177
- package/build/cjs/features/Pinning.js.map +1 -1
- package/build/cjs/features/RowSelection.js +134 -205
- package/build/cjs/features/RowSelection.js.map +1 -1
- package/build/cjs/features/Rows.js +32 -22
- package/build/cjs/features/Rows.js.map +1 -1
- package/build/cjs/features/Sorting.js +62 -131
- package/build/cjs/features/Sorting.js.map +1 -1
- package/build/cjs/features/Visibility.js +53 -120
- package/build/cjs/features/Visibility.js.map +1 -1
- package/build/cjs/filterFns.js +52 -133
- package/build/cjs/filterFns.js.map +1 -1
- package/build/cjs/index.js +13 -13
- package/build/cjs/sortingFns.js +21 -21
- package/build/cjs/sortingFns.js.map +1 -1
- package/build/cjs/utils/filterRowsUtils.js +56 -41
- package/build/cjs/utils/filterRowsUtils.js.map +1 -1
- package/build/cjs/utils/getCoreRowModel.js +98 -0
- package/build/cjs/utils/getCoreRowModel.js.map +1 -0
- package/build/cjs/utils/getExpandedRowModel.js +18 -22
- package/build/cjs/utils/getExpandedRowModel.js.map +1 -1
- package/build/cjs/utils/getFacetedMinMaxValues.js +48 -0
- package/build/cjs/utils/getFacetedMinMaxValues.js.map +1 -0
- package/build/cjs/utils/getFacetedRowModel.js +50 -0
- package/build/cjs/utils/getFacetedRowModel.js.map +1 -0
- package/build/cjs/utils/getFacetedUniqueValues.js +48 -0
- package/build/cjs/utils/getFacetedUniqueValues.js.map +1 -0
- package/build/cjs/utils/getFilteredRowModel.js +130 -0
- package/build/cjs/utils/getFilteredRowModel.js.map +1 -0
- package/build/cjs/utils/getGroupedRowModel.js +126 -136
- package/build/cjs/utils/getGroupedRowModel.js.map +1 -1
- package/build/cjs/utils/getPaginationRowModel.js +39 -39
- package/build/cjs/utils/getPaginationRowModel.js.map +1 -1
- package/build/cjs/utils/getSortedRowModel.js +112 -0
- package/build/cjs/utils/getSortedRowModel.js.map +1 -0
- package/build/cjs/utils.js +36 -211
- package/build/cjs/utils.js.map +1 -1
- package/build/esm/index.js +1970 -2956
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +390 -482
- package/build/types/core.d.ts +3 -5
- package/build/types/features/Cells.d.ts +1 -1
- package/build/types/features/ColumnSizing.d.ts +2 -13
- package/build/types/features/Columns.d.ts +1 -1
- package/build/types/features/Expanding.d.ts +1 -6
- package/build/types/features/Filters.d.ts +42 -30
- package/build/types/features/Grouping.d.ts +4 -10
- package/build/types/features/Pinning.d.ts +0 -4
- package/build/types/features/RowSelection.d.ts +1 -7
- package/build/types/features/Rows.d.ts +4 -3
- package/build/types/features/Sorting.d.ts +3 -14
- package/build/types/features/Visibility.d.ts +0 -4
- package/build/types/filterFns.d.ts +10 -52
- package/build/types/index.d.ts +6 -5
- package/build/types/types.d.ts +5 -17
- package/build/types/utils/filterRowsUtils.d.ts +3 -2
- package/build/types/utils/getCoreRowModel.d.ts +2 -0
- package/build/types/utils/getFacetedMinMaxValues.d.ts +2 -0
- package/build/types/utils/getFacetedRowModel.d.ts +2 -0
- package/build/types/utils/getFacetedUniqueValues.d.ts +2 -0
- package/build/types/utils/{getCoreRowModelSync.d.ts → getFilteredRowModel.d.ts} +1 -1
- package/build/types/utils/getGroupedRowModel.d.ts +1 -1
- package/build/types/utils/getSortedRowModel.d.ts +2 -0
- package/build/types/utils.d.ts +2 -18
- package/build/umd/index.development.js +1948 -2935
- package/build/umd/index.development.js.map +1 -1
- package/build/umd/index.production.js +1 -1
- package/build/umd/index.production.js.map +1 -1
- package/package.json +2 -1
- package/src/core.ts +197 -46
- package/src/features/Cells.ts +10 -12
- package/src/features/ColumnSizing.ts +72 -129
- package/src/features/Columns.ts +16 -15
- package/src/features/Expanding.ts +58 -105
- package/src/features/Filters.ts +223 -226
- package/src/features/Grouping.ts +51 -79
- package/src/features/Headers.ts +18 -40
- package/src/features/Ordering.ts +1 -1
- package/src/features/Pagination.ts +1 -1
- package/src/features/Pinning.ts +73 -92
- package/src/features/RowSelection.ts +71 -120
- package/src/features/Rows.ts +21 -6
- package/src/features/Sorting.ts +39 -99
- package/src/features/Visibility.ts +21 -50
- package/src/filterFns.ts +74 -147
- package/src/index.ts +12 -5
- package/src/sortingFns.ts +11 -11
- package/src/types.ts +5 -18
- package/src/utils/filterRowsUtils.ts +59 -56
- package/src/utils/{getCoreRowModelSync.ts → getCoreRowModel.ts} +3 -9
- package/src/utils/getExpandedRowModel.ts +2 -2
- package/src/utils/getFacetedMinMaxValues.ts +37 -0
- package/src/utils/getFacetedRowModel.ts +50 -0
- package/src/utils/getFacetedUniqueValues.ts +37 -0
- package/src/utils/getFilteredRowModel.ts +150 -0
- package/src/utils/getGroupedRowModel.ts +53 -62
- package/src/utils/getPaginationRowModel.ts +1 -1
- package/src/utils/{getSortedRowModelSync.ts → getSortedRowModel.ts} +7 -7
- package/src/utils.ts +29 -239
- package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -112
- package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
- package/build/cjs/utils/getColumnFilteredRowModelSync.js +0 -115
- package/build/cjs/utils/getColumnFilteredRowModelSync.js.map +0 -1
- package/build/cjs/utils/getCoreRowModelAsync.js +0 -125
- package/build/cjs/utils/getCoreRowModelAsync.js.map +0 -1
- package/build/cjs/utils/getCoreRowModelSync.js +0 -102
- package/build/cjs/utils/getCoreRowModelSync.js.map +0 -1
- package/build/cjs/utils/getGlobalFilteredRowModelSync.js +0 -91
- package/build/cjs/utils/getGlobalFilteredRowModelSync.js.map +0 -1
- package/build/cjs/utils/getSortedRowModelSync.js +0 -118
- package/build/cjs/utils/getSortedRowModelSync.js.map +0 -1
- package/build/types/utils/getColumnFilteredRowModelAsync.d.ts +0 -4
- package/build/types/utils/getColumnFilteredRowModelSync.d.ts +0 -2
- package/build/types/utils/getCoreRowModelAsync.d.ts +0 -4
- package/build/types/utils/getGlobalFilteredRowModelAsync.d.ts +0 -4
- package/build/types/utils/getGlobalFilteredRowModelSync.d.ts +0 -2
- package/build/types/utils/getSortedRowModelAsync.d.ts +0 -13
- package/build/types/utils/getSortedRowModelSync.d.ts +0 -2
- package/src/utils/getColumnFilteredRowModelAsync.ts +0 -118
- package/src/utils/getColumnFilteredRowModelSync.ts +0 -102
- package/src/utils/getCoreRowModelAsync.ts +0 -104
- package/src/utils/getGlobalFilteredRowModelAsync.ts +0 -96
- package/src/utils/getGlobalFilteredRowModelSync.ts +0 -79
- package/src/utils/getSortedRowModelAsync.ts +0 -200
|
@@ -2,7 +2,7 @@ import { TableInstance, Row, RowModel, TableGenerics } from '../types'
|
|
|
2
2
|
import { SortingFn } from '../features/Sorting'
|
|
3
3
|
import { memo } from '../utils'
|
|
4
4
|
|
|
5
|
-
export function
|
|
5
|
+
export function getSortedRowModel<TGenerics extends TableGenerics>(): (
|
|
6
6
|
instance: TableInstance<TGenerics>
|
|
7
7
|
) => () => RowModel<TGenerics> {
|
|
8
8
|
return instance =>
|
|
@@ -19,7 +19,7 @@ export function getSortedRowModelSync<TGenerics extends TableGenerics>(): (
|
|
|
19
19
|
|
|
20
20
|
// Filter out sortings that correspond to non existing columns
|
|
21
21
|
const availableSorting = sortingState.filter(sort =>
|
|
22
|
-
instance.
|
|
22
|
+
instance.getColumn(sort.id).getCanSort()
|
|
23
23
|
)
|
|
24
24
|
|
|
25
25
|
const columnInfoById: Record<
|
|
@@ -32,12 +32,12 @@ export function getSortedRowModelSync<TGenerics extends TableGenerics>(): (
|
|
|
32
32
|
> = {}
|
|
33
33
|
|
|
34
34
|
availableSorting.forEach(sortEntry => {
|
|
35
|
-
const column = instance.getColumn(sortEntry.id)
|
|
35
|
+
const column = instance.getColumn(sortEntry.id)
|
|
36
36
|
|
|
37
37
|
columnInfoById[sortEntry.id] = {
|
|
38
38
|
sortUndefined: column.sortUndefined,
|
|
39
39
|
invertSorting: column.invertSorting,
|
|
40
|
-
sortingFn:
|
|
40
|
+
sortingFn: column.getSortingFn(),
|
|
41
41
|
}
|
|
42
42
|
})
|
|
43
43
|
|
|
@@ -53,8 +53,8 @@ export function getSortedRowModelSync<TGenerics extends TableGenerics>(): (
|
|
|
53
53
|
const isDesc = sortEntry?.desc ?? false
|
|
54
54
|
|
|
55
55
|
if (columnInfo.sortUndefined) {
|
|
56
|
-
const aValue = rowA.
|
|
57
|
-
const bValue = rowB.
|
|
56
|
+
const aValue = rowA.getValue(sortEntry.id)
|
|
57
|
+
const bValue = rowB.getValue(sortEntry.id)
|
|
58
58
|
|
|
59
59
|
const aUndefined = typeof aValue === 'undefined'
|
|
60
60
|
const bUndefined = typeof bValue === 'undefined'
|
|
@@ -106,7 +106,7 @@ export function getSortedRowModelSync<TGenerics extends TableGenerics>(): (
|
|
|
106
106
|
}
|
|
107
107
|
},
|
|
108
108
|
{
|
|
109
|
-
key: 'getSortedRowModel',
|
|
109
|
+
key: process.env.NODE_ENV === 'development' && 'getSortedRowModel',
|
|
110
110
|
debug: () => instance.options.debugAll ?? instance.options.debugTable,
|
|
111
111
|
onChange: () => {
|
|
112
112
|
instance.queue(() => {
|
package/src/utils.ts
CHANGED
|
@@ -21,35 +21,6 @@ export function noop() {
|
|
|
21
21
|
//
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
export function getBatchGroups<T>(arr: T[], count: number) {
|
|
25
|
-
const groups: { start: number; end: number; items: T[] }[] = [
|
|
26
|
-
{
|
|
27
|
-
start: 0,
|
|
28
|
-
end: count - 1,
|
|
29
|
-
items: [],
|
|
30
|
-
},
|
|
31
|
-
]
|
|
32
|
-
|
|
33
|
-
let groupIndex = 0
|
|
34
|
-
let group = groups[groupIndex]
|
|
35
|
-
|
|
36
|
-
for (let i = 0; i < arr.length; i++) {
|
|
37
|
-
if (i > group.end) {
|
|
38
|
-
groupIndex++
|
|
39
|
-
groups[groupIndex] = {
|
|
40
|
-
start: i,
|
|
41
|
-
end: i + count - 1,
|
|
42
|
-
items: [],
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
group = groups[groupIndex]
|
|
46
|
-
const item = arr[i]
|
|
47
|
-
group.items.push(item)
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
return groups
|
|
51
|
-
}
|
|
52
|
-
|
|
53
24
|
export function makeStateUpdater(key: keyof TableState, instance: unknown) {
|
|
54
25
|
return (updater: Updater<any>) => {
|
|
55
26
|
;(instance as any).setState(<TTableState>(old: TTableState) => {
|
|
@@ -92,9 +63,9 @@ export function memo<TDeps extends readonly any[], TResult>(
|
|
|
92
63
|
getDeps: () => [...TDeps],
|
|
93
64
|
fn: (...args: NoInfer<[...TDeps]>) => TResult,
|
|
94
65
|
opts: {
|
|
95
|
-
key:
|
|
66
|
+
key: any
|
|
96
67
|
debug?: () => any
|
|
97
|
-
onChange?: (result: TResult
|
|
68
|
+
onChange?: (result: TResult) => void
|
|
98
69
|
}
|
|
99
70
|
): () => TResult {
|
|
100
71
|
let deps: any[] = []
|
|
@@ -110,227 +81,46 @@ export function memo<TDeps extends readonly any[], TResult>(
|
|
|
110
81
|
newDeps.length !== deps.length ||
|
|
111
82
|
newDeps.some((dep: any, index: number) => deps[index] !== dep)
|
|
112
83
|
|
|
113
|
-
if (depsChanged) {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
84
|
+
if (!depsChanged) {
|
|
85
|
+
return result!
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
deps = newDeps
|
|
89
|
+
|
|
90
|
+
let resultTime: number
|
|
91
|
+
if (opts.key && opts.debug) resultTime = Date.now()
|
|
92
|
+
|
|
93
|
+
result = fn(...newDeps)
|
|
94
|
+
opts?.onChange?.(result)
|
|
120
95
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
const resultFpsPercentage = resultEndTime / 16
|
|
96
|
+
if (opts.key && opts.debug) {
|
|
97
|
+
if (opts?.debug()) {
|
|
98
|
+
const depEndTime = Math.round((Date.now() - depTime!) * 100) / 100
|
|
99
|
+
const resultEndTime = Math.round((Date.now() - resultTime!) * 100) / 100
|
|
100
|
+
const resultFpsPercentage = resultEndTime / 16
|
|
127
101
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
}
|
|
133
|
-
return str
|
|
102
|
+
const pad = (str: number | string, num: number) => {
|
|
103
|
+
str = String(str)
|
|
104
|
+
while (str.length < num) {
|
|
105
|
+
str = ' ' + str
|
|
134
106
|
}
|
|
107
|
+
return str
|
|
108
|
+
}
|
|
135
109
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
110
|
+
console.info(
|
|
111
|
+
`%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,
|
|
112
|
+
`
|
|
139
113
|
font-size: .6rem;
|
|
140
114
|
font-weight: bold;
|
|
141
115
|
color: hsl(${Math.max(
|
|
142
116
|
0,
|
|
143
117
|
Math.min(120 - 120 * resultFpsPercentage, 120)
|
|
144
118
|
)}deg 100% 31%);`,
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
length: `${deps.length} -> ${newDeps.length}`,
|
|
148
|
-
...newDeps
|
|
149
|
-
.map((_, index) => {
|
|
150
|
-
if (deps[index] !== newDeps[index]) {
|
|
151
|
-
return [index, deps[index], newDeps[index]]
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
return false
|
|
155
|
-
})
|
|
156
|
-
.filter(Boolean)
|
|
157
|
-
.reduce(
|
|
158
|
-
(accu, [a, b]: any) => ({
|
|
159
|
-
...accu,
|
|
160
|
-
[a]: b,
|
|
161
|
-
}),
|
|
162
|
-
{}
|
|
163
|
-
),
|
|
164
|
-
parent,
|
|
165
|
-
}
|
|
166
|
-
)
|
|
167
|
-
}
|
|
119
|
+
opts?.key
|
|
120
|
+
)
|
|
168
121
|
}
|
|
169
|
-
|
|
170
|
-
oldResult = undefined
|
|
171
122
|
}
|
|
172
123
|
|
|
173
124
|
return result!
|
|
174
125
|
}
|
|
175
126
|
}
|
|
176
|
-
|
|
177
|
-
type WorkFn = () => void
|
|
178
|
-
|
|
179
|
-
export function incrementalMemo<TDeps extends readonly any[], TResult>(
|
|
180
|
-
getDeps: () => [...TDeps],
|
|
181
|
-
getInitialValue: (...args: NoInfer<[...TDeps]>) => TResult,
|
|
182
|
-
schedule: (
|
|
183
|
-
...args: NoInfer<[...TDeps]>
|
|
184
|
-
) => (resultRef: {
|
|
185
|
-
current: TResult
|
|
186
|
-
}) => (scheduler: (workFn: WorkFn) => void) => void,
|
|
187
|
-
opts: {
|
|
188
|
-
key: string
|
|
189
|
-
onProgress: (
|
|
190
|
-
progress: number,
|
|
191
|
-
nextResult: TResult,
|
|
192
|
-
result?: TResult
|
|
193
|
-
) => void
|
|
194
|
-
onChange: (result: TResult, previousResult?: TResult) => void
|
|
195
|
-
initialSync?: boolean
|
|
196
|
-
timeout?: number
|
|
197
|
-
debug?: () => any
|
|
198
|
-
}
|
|
199
|
-
): () => TResult {
|
|
200
|
-
let oldDeps: any[]
|
|
201
|
-
let deps: any[]
|
|
202
|
-
let result: TResult | undefined
|
|
203
|
-
let nextResultRef: { current: TResult }
|
|
204
|
-
let tasks: WorkFn[] = []
|
|
205
|
-
let totalTaskCount = 0
|
|
206
|
-
let resultStartTime: number
|
|
207
|
-
let batchIndex = 0
|
|
208
|
-
let progress = 0
|
|
209
|
-
let working = false
|
|
210
|
-
let callback: ReturnType<typeof requestIdleCallback>
|
|
211
|
-
|
|
212
|
-
const timeout = opts.timeout ?? 100
|
|
213
|
-
|
|
214
|
-
const onProgress = (latestResult: TResult, previousResult?: TResult) => {
|
|
215
|
-
progress = 1 - tasks.length / totalTaskCount
|
|
216
|
-
opts.onProgress(progress, latestResult, previousResult)
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
return () => {
|
|
220
|
-
const scheduleFn = (workFn: WorkFn) => {
|
|
221
|
-
totalTaskCount++
|
|
222
|
-
tasks.push(workFn)
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
const newDeps = getDeps()
|
|
226
|
-
|
|
227
|
-
let first = false
|
|
228
|
-
|
|
229
|
-
if (!deps) {
|
|
230
|
-
first = true
|
|
231
|
-
deps = []
|
|
232
|
-
result = getInitialValue(...newDeps)
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
const depsChanged =
|
|
236
|
-
newDeps.length !== deps.length ||
|
|
237
|
-
newDeps.some((dep: any, index: number) => deps[index] !== dep)
|
|
238
|
-
|
|
239
|
-
if (depsChanged) {
|
|
240
|
-
cancelIdleCallback(callback)
|
|
241
|
-
oldDeps = deps
|
|
242
|
-
deps = newDeps
|
|
243
|
-
totalTaskCount = 0
|
|
244
|
-
tasks = []
|
|
245
|
-
nextResultRef = { current: getInitialValue(...newDeps) }
|
|
246
|
-
resultStartTime = Date.now()
|
|
247
|
-
schedule(...newDeps)(nextResultRef)(scheduleFn)
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
const commitResult = () => {
|
|
251
|
-
cancelIdleCallback(callback)
|
|
252
|
-
|
|
253
|
-
if (opts.key && opts.debug) {
|
|
254
|
-
if (opts?.debug()) {
|
|
255
|
-
const resultEndTime =
|
|
256
|
-
Math.round((Date.now() - resultStartTime!) * 100) / 100
|
|
257
|
-
const resultFpsPercentage = resultEndTime / batchIndex / 16
|
|
258
|
-
|
|
259
|
-
console.info(
|
|
260
|
-
`%c⏱ ${resultEndTime} ms / ${batchIndex} tasks = ${Math.round(
|
|
261
|
-
resultEndTime / batchIndex
|
|
262
|
-
)} ms/task`,
|
|
263
|
-
`
|
|
264
|
-
font-size: .6rem;
|
|
265
|
-
font-weight: bold;
|
|
266
|
-
color: hsl(${Math.max(
|
|
267
|
-
0,
|
|
268
|
-
Math.min(120 - 120 * resultFpsPercentage, 120)
|
|
269
|
-
)}deg 100% 31%);`,
|
|
270
|
-
opts?.key,
|
|
271
|
-
{
|
|
272
|
-
length: `${oldDeps.length} -> ${deps.length}`,
|
|
273
|
-
...deps
|
|
274
|
-
.map((_, index) => {
|
|
275
|
-
if (oldDeps[index] !== deps[index]) {
|
|
276
|
-
return [index, oldDeps[index], deps[index]]
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
return false
|
|
280
|
-
})
|
|
281
|
-
.filter(Boolean)
|
|
282
|
-
.reduce(
|
|
283
|
-
(accu, [a, b]: any) => ({
|
|
284
|
-
...accu,
|
|
285
|
-
[a]: b,
|
|
286
|
-
}),
|
|
287
|
-
{}
|
|
288
|
-
),
|
|
289
|
-
parent,
|
|
290
|
-
}
|
|
291
|
-
)
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
working = false
|
|
296
|
-
let previousResult = result
|
|
297
|
-
result = nextResultRef.current
|
|
298
|
-
onProgress(result, previousResult)
|
|
299
|
-
opts.onChange(result, previousResult)
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
if (opts.initialSync && first) {
|
|
303
|
-
batchIndex = 1
|
|
304
|
-
first = false
|
|
305
|
-
for (let i = 0; i < tasks.length; i++) {
|
|
306
|
-
tasks[i]()
|
|
307
|
-
}
|
|
308
|
-
tasks = []
|
|
309
|
-
commitResult()
|
|
310
|
-
} else if (!working && tasks.length) {
|
|
311
|
-
cancelIdleCallback(callback)
|
|
312
|
-
working = true
|
|
313
|
-
batchIndex = 0
|
|
314
|
-
|
|
315
|
-
const workLoop = (deadline: any) => {
|
|
316
|
-
while (tasks.length && deadline.timeRemaining() > 0) {
|
|
317
|
-
tasks.shift()!()
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
if (!tasks.length) {
|
|
321
|
-
commitResult()
|
|
322
|
-
} else {
|
|
323
|
-
++batchIndex
|
|
324
|
-
onProgress(nextResultRef.current, result)
|
|
325
|
-
callback = requestIdleCallback(workLoop, { timeout })
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
callback = requestIdleCallback(workLoop, { timeout })
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
return result!
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
// opts?.onChange?.(result, oldResult)
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* table-core
|
|
3
|
-
*
|
|
4
|
-
* Copyright (c) TanStack
|
|
5
|
-
*
|
|
6
|
-
* This source code is licensed under the MIT license found in the
|
|
7
|
-
* LICENSE.md file in the root directory of this source tree.
|
|
8
|
-
*
|
|
9
|
-
* @license MIT
|
|
10
|
-
*/
|
|
11
|
-
'use strict';
|
|
12
|
-
|
|
13
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
14
|
-
|
|
15
|
-
function _extends() {
|
|
16
|
-
_extends = Object.assign || function (target) {
|
|
17
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
18
|
-
var source = arguments[i];
|
|
19
|
-
|
|
20
|
-
for (var key in source) {
|
|
21
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
22
|
-
target[key] = source[key];
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
return target;
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
return _extends.apply(this, arguments);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
function _objectWithoutPropertiesLoose(source, excluded) {
|
|
34
|
-
if (source == null) return {};
|
|
35
|
-
var target = {};
|
|
36
|
-
var sourceKeys = Object.keys(source);
|
|
37
|
-
var key, i;
|
|
38
|
-
|
|
39
|
-
for (i = 0; i < sourceKeys.length; i++) {
|
|
40
|
-
key = sourceKeys[i];
|
|
41
|
-
if (excluded.indexOf(key) >= 0) continue;
|
|
42
|
-
target[key] = source[key];
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
return target;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
function _unsupportedIterableToArray(o, minLen) {
|
|
49
|
-
if (!o) return;
|
|
50
|
-
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
51
|
-
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
52
|
-
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
53
|
-
if (n === "Map" || n === "Set") return Array.from(o);
|
|
54
|
-
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
function _arrayLikeToArray(arr, len) {
|
|
58
|
-
if (len == null || len > arr.length) len = arr.length;
|
|
59
|
-
|
|
60
|
-
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
|
61
|
-
|
|
62
|
-
return arr2;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
function _createForOfIteratorHelperLoose(o, allowArrayLike) {
|
|
66
|
-
var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
|
|
67
|
-
if (it) return (it = it.call(o)).next.bind(it);
|
|
68
|
-
|
|
69
|
-
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
|
|
70
|
-
if (it) o = it;
|
|
71
|
-
var i = 0;
|
|
72
|
-
return function () {
|
|
73
|
-
if (i >= o.length) return {
|
|
74
|
-
done: true
|
|
75
|
-
};
|
|
76
|
-
return {
|
|
77
|
-
done: false,
|
|
78
|
-
value: o[i++]
|
|
79
|
-
};
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
function _toPrimitive(input, hint) {
|
|
87
|
-
if (typeof input !== "object" || input === null) return input;
|
|
88
|
-
var prim = input[Symbol.toPrimitive];
|
|
89
|
-
|
|
90
|
-
if (prim !== undefined) {
|
|
91
|
-
var res = prim.call(input, hint || "default");
|
|
92
|
-
if (typeof res !== "object") return res;
|
|
93
|
-
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
return (hint === "string" ? String : Number)(input);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
function _toPropertyKey(arg) {
|
|
100
|
-
var key = _toPrimitive(arg, "string");
|
|
101
|
-
|
|
102
|
-
return typeof key === "symbol" ? key : String(key);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
exports.arrayLikeToArray = _arrayLikeToArray;
|
|
106
|
-
exports.createForOfIteratorHelperLoose = _createForOfIteratorHelperLoose;
|
|
107
|
-
exports["extends"] = _extends;
|
|
108
|
-
exports.objectWithoutPropertiesLoose = _objectWithoutPropertiesLoose;
|
|
109
|
-
exports.toPrimitive = _toPrimitive;
|
|
110
|
-
exports.toPropertyKey = _toPropertyKey;
|
|
111
|
-
exports.unsupportedIterableToArray = _unsupportedIterableToArray;
|
|
112
|
-
//# sourceMappingURL=_rollupPluginBabelHelpers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_rollupPluginBabelHelpers.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* table-core
|
|
3
|
-
*
|
|
4
|
-
* Copyright (c) TanStack
|
|
5
|
-
*
|
|
6
|
-
* This source code is licensed under the MIT license found in the
|
|
7
|
-
* LICENSE.md file in the root directory of this source tree.
|
|
8
|
-
*
|
|
9
|
-
* @license MIT
|
|
10
|
-
*/
|
|
11
|
-
'use strict';
|
|
12
|
-
|
|
13
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
14
|
-
|
|
15
|
-
var utils = require('../utils.js');
|
|
16
|
-
var filterRowsUtils = require('./filterRowsUtils.js');
|
|
17
|
-
|
|
18
|
-
function getColumnFilteredRowModelSync() {
|
|
19
|
-
return function (instance) {
|
|
20
|
-
return utils.memo(function () {
|
|
21
|
-
return [instance.getState().columnFilters, instance.getPreColumnFilteredRowModel()];
|
|
22
|
-
}, function (columnFilters, rowModel) {
|
|
23
|
-
var columnFilteredRowModel = function () {
|
|
24
|
-
if (!rowModel.rows.length || !(columnFilters != null && columnFilters.length)) {
|
|
25
|
-
return rowModel;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
var filterFromLeafRows = instance.options.filterFromLeafRows;
|
|
29
|
-
|
|
30
|
-
var filterRows = function filterRows(rowsToFilter, depth) {
|
|
31
|
-
for (var i = 0; i < columnFilters.length; i++) {
|
|
32
|
-
var _columnFilters$i = columnFilters[i],
|
|
33
|
-
columnId = _columnFilters$i.id,
|
|
34
|
-
filterValue = _columnFilters$i.value; // Find the columnFilters column
|
|
35
|
-
|
|
36
|
-
var column = instance.getColumn(columnId);
|
|
37
|
-
|
|
38
|
-
if (!column) {
|
|
39
|
-
if (process.env.NODE_ENV !== 'production') {
|
|
40
|
-
console.warn("Table: Could not find a column with id: " + columnId);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
throw new Error();
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
if (depth === 0) {
|
|
47
|
-
(function () {
|
|
48
|
-
var preFilteredRows = [].concat(rowsToFilter);
|
|
49
|
-
|
|
50
|
-
column.getPreFilteredRows = function () {
|
|
51
|
-
return preFilteredRows;
|
|
52
|
-
};
|
|
53
|
-
})();
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
var filterFn = instance.getColumnFilterFn(column.id);
|
|
57
|
-
|
|
58
|
-
if (!filterFn) {
|
|
59
|
-
if (process.env.NODE_ENV !== 'production') {
|
|
60
|
-
console.warn("Could not find a valid 'column.filterFn' for column with the ID: " + column.id + ".");
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
continue;
|
|
64
|
-
} // Pass the rows, id, filterValue and column to the filterFn
|
|
65
|
-
// to get the filtered rows back
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
rowsToFilter = filterFn(rowsToFilter, [columnId], filterValue);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
return rowsToFilter;
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
if (filterFromLeafRows) {
|
|
75
|
-
return filterRowsUtils.filterRowModelFromLeafs(rowModel.rows, filterRows, instance);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
return filterRowsUtils.filterRowModelFromRoot(rowModel.rows, filterRows, instance);
|
|
79
|
-
}(); // Now that each filtered column has it's partially filtered rows,
|
|
80
|
-
// lets assign the final filtered rows to all of the other columns
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
var nonFilteredColumns = instance.getAllLeafColumns().filter(function (column) {
|
|
84
|
-
var _instance$getState$co;
|
|
85
|
-
|
|
86
|
-
return !((_instance$getState$co = instance.getState().columnFilters) != null && _instance$getState$co.find(function (d) {
|
|
87
|
-
return d.id === column.id;
|
|
88
|
-
}));
|
|
89
|
-
}); // This essentially enables faceted filter options to be built easily
|
|
90
|
-
// using every column's preFilteredRows value
|
|
91
|
-
|
|
92
|
-
nonFilteredColumns.forEach(function (column) {
|
|
93
|
-
column.getPreFilteredRows = function () {
|
|
94
|
-
return columnFilteredRowModel.rows;
|
|
95
|
-
};
|
|
96
|
-
});
|
|
97
|
-
return columnFilteredRowModel;
|
|
98
|
-
}, {
|
|
99
|
-
key: 'getColumnFilteredRowModelSync',
|
|
100
|
-
debug: function debug() {
|
|
101
|
-
var _instance$options$deb;
|
|
102
|
-
|
|
103
|
-
return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugTable;
|
|
104
|
-
},
|
|
105
|
-
onChange: function onChange() {
|
|
106
|
-
instance.queue(function () {
|
|
107
|
-
instance._autoResetPageIndex();
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
});
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
exports.getColumnFilteredRowModelSync = getColumnFilteredRowModelSync;
|
|
115
|
-
//# sourceMappingURL=getColumnFilteredRowModelSync.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getColumnFilteredRowModelSync.js","sources":["../../../src/utils/getColumnFilteredRowModelSync.ts"],"sourcesContent":["import { TableInstance, RowModel, TableGenerics, Row } from '../types'\nimport { memo } from '../utils'\nimport {\n filterRowModelFromLeafs,\n filterRowModelFromRoot,\n} from './filterRowsUtils'\n\nexport function getColumnFilteredRowModelSync<\n TGenerics extends TableGenerics\n>(): (instance: TableInstance<TGenerics>) => () => RowModel<TGenerics> {\n return instance =>\n memo(\n () => [\n instance.getState().columnFilters,\n instance.getPreColumnFilteredRowModel(),\n ],\n (columnFilters, rowModel) => {\n const columnFilteredRowModel: RowModel<TGenerics> = (() => {\n if (!rowModel.rows.length || !columnFilters?.length) {\n return rowModel\n }\n\n const filterFromLeafRows = instance.options.filterFromLeafRows\n\n const filterRows = (\n rowsToFilter: Row<TGenerics>[],\n depth: number\n ) => {\n for (let i = 0; i < columnFilters.length; i++) {\n const { id: columnId, value: filterValue } = columnFilters[i]\n // Find the columnFilters column\n const column = instance.getColumn(columnId)\n\n if (!column) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Table: Could not find a column with id: ${columnId}`\n )\n }\n throw new Error()\n }\n\n if (depth === 0) {\n const preFilteredRows = [...rowsToFilter]\n column.getPreFilteredRows = () => preFilteredRows\n }\n\n const filterFn = instance.getColumnFilterFn(column.id)\n\n if (!filterFn) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Could not find a valid 'column.filterFn' for column with the ID: ${column.id}.`\n )\n }\n continue\n }\n\n // Pass the rows, id, filterValue and column to the filterFn\n // to get the filtered rows back\n rowsToFilter = filterFn(rowsToFilter, [columnId], filterValue)\n }\n\n return rowsToFilter\n }\n\n if (filterFromLeafRows) {\n return filterRowModelFromLeafs(rowModel.rows, filterRows, instance)\n }\n\n return filterRowModelFromRoot(rowModel.rows, filterRows, instance)\n })()\n\n // Now that each filtered column has it's partially filtered rows,\n // lets assign the final filtered rows to all of the other columns\n const nonFilteredColumns = instance\n .getAllLeafColumns()\n .filter(\n column =>\n !instance.getState().columnFilters?.find(d => d.id === column.id)\n )\n\n // This essentially enables faceted filter options to be built easily\n // using every column's preFilteredRows value\n\n nonFilteredColumns.forEach(column => {\n column.getPreFilteredRows = () => columnFilteredRowModel.rows\n })\n\n return columnFilteredRowModel\n },\n {\n key: 'getColumnFilteredRowModelSync',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n onChange: () => {\n instance.queue(() => {\n instance._autoResetPageIndex()\n })\n },\n }\n )\n}\n"],"names":["getColumnFilteredRowModelSync","instance","memo","getState","columnFilters","getPreColumnFilteredRowModel","rowModel","columnFilteredRowModel","rows","length","filterFromLeafRows","options","filterRows","rowsToFilter","depth","i","columnId","id","filterValue","value","column","getColumn","process","env","NODE_ENV","console","warn","Error","preFilteredRows","getPreFilteredRows","filterFn","getColumnFilterFn","filterRowModelFromLeafs","filterRowModelFromRoot","nonFilteredColumns","getAllLeafColumns","filter","find","d","forEach","key","debug","debugAll","debugTable","onChange","queue","_autoResetPageIndex"],"mappings":"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"}
|