@tanstack/table-core 8.0.0-alpha.73 → 8.0.0-alpha.74

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/core.js CHANGED
@@ -39,7 +39,6 @@ var Headers = require('./features/Headers.js');
39
39
  // data: Batch[]
40
40
  // facets: Batch[]
41
41
  // }
42
- // export type TaskPriority = keyof CoreBatches
43
42
  function createTableInstance(options) {
44
43
  var _options$initialState;
45
44
 
@@ -78,64 +77,7 @@ function createTableInstance(options) {
78
77
  });
79
78
 
80
79
  const queued = [];
81
- let queuedTimeout = false; // let workScheduled = false
82
- // let working = false
83
- // let latestCallback: ReturnType<typeof requestIdleCallback>
84
- // let batchUid = 0
85
- // const onProgress = () => {}
86
- // const getBatch = () => {
87
- // instance.batches.data = instance.batches.data.filter(d => d.tasks.length)
88
- // instance.batches.facets = instance.batches.facets.filter(
89
- // d => d.tasks.length
90
- // )
91
- // return (
92
- // instance.batches.data.find(d => d.tasks.length) ??
93
- // instance.batches.facets.find(d => d.tasks.length)
94
- // )
95
- // }
96
- // const startWorkLoop = () => {
97
- // working = true
98
- // const workLoop = (deadline: IdleDeadline) => {
99
- // const batch = getBatch()
100
- // if (!batch) {
101
- // working = false
102
- // return
103
- // }
104
- // // Prioritize tasks
105
- // while (deadline.timeRemaining() > 0 && batch.tasks.length) {
106
- // batch.tasks.shift()!()
107
- // }
108
- // onProgress()
109
- // if (working) {
110
- // latestCallback = requestIdleCallback(workLoop, { timeout: 10000 })
111
- // }
112
- // }
113
- // latestCallback = requestIdleCallback(workLoop, { timeout: 10000 })
114
- // }
115
- // const startWork = () => {
116
- // if (getBatch() && !working) {
117
- // if (
118
- // (process.env.NODE_ENV === 'development' && instance.options.debugAll) ??
119
- // instance.options.debugTable
120
- // ) {
121
- // console.info('Starting work...')
122
- // }
123
- // startWorkLoop()
124
- // }
125
- // }
126
- // const stopWork = () => {
127
- // if (working) {
128
- // if (
129
- // (process.env.NODE_ENV === 'development' && instance.options.debugAll) ??
130
- // instance.options.debugTable
131
- // ) {
132
- // console.info('Stopping work...')
133
- // }
134
- // working = false
135
- // cancelIdleCallback(latestCallback)
136
- // }
137
- // }
138
-
80
+ let queuedTimeout = false;
139
81
  const midInstance = { ...instance,
140
82
  // init: () => {
141
83
  // startWork()
@@ -168,39 +110,6 @@ function createTableInstance(options) {
168
110
  }));
169
111
  }
170
112
  },
171
- // batches: {
172
- // data: [],
173
- // facets: [],
174
- // },
175
- // createBatch: priority => {
176
- // const batchId = batchUid++
177
- // let canceled: boolean
178
- // const batch: Batch = {
179
- // id: batchId,
180
- // priority,
181
- // tasks: [],
182
- // schedule: cb => {
183
- // if (canceled) return
184
- // batch.tasks.push(cb)
185
- // if (!working && !workScheduled) {
186
- // workScheduled = true
187
- // instance.queue(() => {
188
- // workScheduled = false
189
- // instance.setState(old => ({ ...old }))
190
- // })
191
- // }
192
- // },
193
- // cancel: () => {
194
- // canceled = true
195
- // batch.tasks = []
196
- // instance.batches[priority] = instance.batches[priority].filter(
197
- // b => b.id !== batchId
198
- // )
199
- // },
200
- // }
201
- // instance.batches[priority].push(batch)
202
- // return batch
203
- // },
204
113
  reset: () => {
205
114
  instance.setState(instance.initialState);
206
115
  },
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sources":["../../src/core.ts"],"sourcesContent":["import { functionalUpdate, RequiredKeys } from './utils'\n\nimport {\n Updater,\n TableOptions,\n TableState,\n TableInstance,\n Renderable,\n TableFeature,\n TableGenerics,\n InitialTableState,\n} from './types'\n\nimport { Columns } from './features/Columns'\nimport { Rows } from './features/Rows'\nimport { Cells } from './features/Cells'\nimport { ColumnSizing } from './features/ColumnSizing'\nimport { Expanding } from './features/Expanding'\nimport { Filters } from './features/Filters'\nimport { Grouping } from './features/Grouping'\nimport { Ordering } from './features/Ordering'\nimport { Pagination } from './features/Pagination'\nimport { Pinning } from './features/Pinning'\nimport { RowSelection } from './features/RowSelection'\nimport { Sorting } from './features/Sorting'\nimport { Visibility } from './features/Visibility'\nimport { Headers } from './features/Headers'\n//\n\nexport type CoreTableState = {\n // coreProgress: number\n}\n\nexport type CoreOptions<TGenerics extends TableGenerics> = {\n data: TGenerics['Row'][]\n state: Partial<TableState>\n onStateChange: (updater: Updater<TableState>) => void\n render: TGenerics['Renderer']\n debugAll?: boolean\n debugTable?: boolean\n debugHeaders?: boolean\n debugColumns?: boolean\n debugRows?: boolean\n initialState?: InitialTableState\n autoResetAll?: boolean\n mergeOptions?: <T>(defaultOptions: T, options: Partial<T>) => T\n meta?: TGenerics['TableMeta']\n // keepPreviousData?: boolean\n}\n\nexport type CoreInstance<TGenerics extends TableGenerics> = {\n // generics: TGenerics\n initialState: TableState\n reset: () => void\n options: RequiredKeys<TableOptions<TGenerics>, 'state'>\n setOptions: (newOptions: Updater<TableOptions<TGenerics>>) => void\n getState: () => TableState\n setState: (updater: Updater<TableState>) => void\n _queue: (cb: () => void) => void\n _render: <TProps>(\n template: Renderable<TGenerics, TProps>,\n props: TProps\n ) => string | null | TGenerics['Rendered']\n _features: readonly TableFeature[]\n // getOverallProgress: () => number\n // getProgressStage: () =>\n // | undefined\n // | 'coreRowModel'\n // | 'filteredRowModel'\n // | 'facetedRowModel'\n // createBatch: (priority: keyof CoreBatches) => Batch\n // init: () => void\n // willUpdate: () => void\n // destroy: () => void\n // batches: CoreBatches\n}\n\n// export type Batch = {\n// id: number\n// priority: keyof CoreBatches\n// tasks: (() => void)[]\n// schedule: (cb: () => void) => void\n// cancel: () => void\n// }\n\n// type CoreBatches = {\n// data: Batch[]\n// facets: Batch[]\n// }\n\n// export type TaskPriority = keyof CoreBatches\n\nexport function createTableInstance<TGenerics extends TableGenerics>(\n options: TableOptions<TGenerics>\n): TableInstance<TGenerics> {\n if (options.debugAll || options.debugTable) {\n console.info('Creating Table Instance...')\n }\n\n let instance = {\n _features: [\n Columns,\n Rows,\n Cells,\n Headers,\n Visibility,\n Ordering,\n Pinning,\n Filters,\n Sorting,\n Grouping,\n Expanding,\n Pagination,\n RowSelection,\n ColumnSizing,\n ] as const,\n } as unknown as CoreInstance<TGenerics>\n\n const defaultOptions = instance._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultOptions?.(instance))\n }, {}) as TableOptions<TGenerics>\n\n const mergeOptions = (options: TableOptions<TGenerics>) => {\n if (instance.options.mergeOptions) {\n return instance.options.mergeOptions(defaultOptions, options)\n }\n\n return {\n ...defaultOptions,\n ...options,\n }\n }\n\n const coreInitialState: CoreTableState = {\n // coreProgress: 1,\n }\n\n let initialState = {\n ...coreInitialState,\n ...(options.initialState ?? {}),\n } as TableState\n\n instance._features.forEach(feature => {\n initialState = feature.getInitialState?.(initialState) ?? initialState\n })\n\n const queued: (() => void)[] = []\n let queuedTimeout = false\n\n // let workScheduled = false\n // let working = false\n // let latestCallback: ReturnType<typeof requestIdleCallback>\n // let batchUid = 0\n // const onProgress = () => {}\n // const getBatch = () => {\n // instance.batches.data = instance.batches.data.filter(d => d.tasks.length)\n // instance.batches.facets = instance.batches.facets.filter(\n // d => d.tasks.length\n // )\n\n // return (\n // instance.batches.data.find(d => d.tasks.length) ??\n // instance.batches.facets.find(d => d.tasks.length)\n // )\n // }\n\n // const startWorkLoop = () => {\n // working = true\n\n // const workLoop = (deadline: IdleDeadline) => {\n // const batch = getBatch()\n\n // if (!batch) {\n // working = false\n // return\n // }\n // // Prioritize tasks\n // while (deadline.timeRemaining() > 0 && batch.tasks.length) {\n // batch.tasks.shift()!()\n // }\n\n // onProgress()\n\n // if (working) {\n // latestCallback = requestIdleCallback(workLoop, { timeout: 10000 })\n // }\n // }\n\n // latestCallback = requestIdleCallback(workLoop, { timeout: 10000 })\n // }\n\n // const startWork = () => {\n // if (getBatch() && !working) {\n // if (\n // (process.env.NODE_ENV === 'development' && instance.options.debugAll) ??\n // instance.options.debugTable\n // ) {\n // console.info('Starting work...')\n // }\n // startWorkLoop()\n // }\n // }\n\n // const stopWork = () => {\n // if (working) {\n // if (\n // (process.env.NODE_ENV === 'development' && instance.options.debugAll) ??\n // instance.options.debugTable\n // ) {\n // console.info('Stopping work...')\n // }\n\n // working = false\n // cancelIdleCallback(latestCallback)\n // }\n // }\n\n const midInstance: CoreInstance<TGenerics> = {\n ...instance,\n // init: () => {\n // startWork()\n // },\n // willUpdate: () => {\n // startWork()\n // },\n // destroy: () => {\n // stopWork()\n // },\n options: {\n ...defaultOptions,\n ...options,\n },\n initialState,\n _queue: cb => {\n queued.push(cb)\n\n if (!queuedTimeout) {\n queuedTimeout = true\n\n // Schedule a microtask to run the queued callbacks after\n // the current call stack (render, etc) has finished.\n Promise.resolve()\n .then(() => {\n while (queued.length) {\n queued.shift()!()\n }\n queuedTimeout = false\n })\n .catch(error =>\n setTimeout(() => {\n throw error\n })\n )\n }\n },\n // batches: {\n // data: [],\n // facets: [],\n // },\n // createBatch: priority => {\n // const batchId = batchUid++\n // let canceled: boolean\n\n // const batch: Batch = {\n // id: batchId,\n // priority,\n // tasks: [],\n // schedule: cb => {\n // if (canceled) return\n // batch.tasks.push(cb)\n\n // if (!working && !workScheduled) {\n // workScheduled = true\n // instance.queue(() => {\n // workScheduled = false\n // instance.setState(old => ({ ...old }))\n // })\n // }\n // },\n // cancel: () => {\n // canceled = true\n // batch.tasks = []\n // instance.batches[priority] = instance.batches[priority].filter(\n // b => b.id !== batchId\n // )\n // },\n // }\n\n // instance.batches[priority].push(batch)\n\n // return batch\n // },\n reset: () => {\n instance.setState(instance.initialState)\n },\n setOptions: updater => {\n const newOptions = functionalUpdate(updater, instance.options)\n instance.options = mergeOptions(newOptions)\n },\n _render: (template, props) => {\n if (typeof instance.options.render === 'function') {\n return instance.options.render(template, props)\n }\n\n if (typeof template === 'function') {\n return (template as Function)(props)\n }\n\n return template\n },\n\n getState: () => {\n return instance.options.state as TableState\n },\n\n setState: (updater: Updater<TableState>) => {\n instance.options.onStateChange?.(updater)\n },\n\n // getOverallProgress: () => {\n // const { coreProgress, filtersProgress, facetProgress } =\n // instance.getState()\n\n // return mean(() =>\n // [coreProgress, filtersProgress].filter(d => d < 1)\n // ) as number\n // },\n // getProgressStage: () => {\n // const { coreProgress, filtersProgress, facetProgress } =\n // instance.getState()\n\n // if (coreProgress < 1) {\n // return 'coreRowModel'\n // }\n\n // if (filtersProgress < 1) {\n // return 'filteredRowModel'\n // }\n\n // if (Object.values(facetProgress).some(d => d < 1)) {\n // return 'facetedRowModel'\n // }\n // },\n }\n\n instance = Object.assign(instance, midInstance)\n\n instance._features.forEach(feature => {\n return Object.assign(instance, feature.createInstance?.(instance))\n })\n\n return instance as TableInstance<TGenerics>\n}\n"],"names":["createTableInstance","options","debugAll","debugTable","console","info","instance","_features","Columns","Rows","Cells","Headers","Visibility","Ordering","Pinning","Filters","Sorting","Grouping","Expanding","Pagination","RowSelection","ColumnSizing","defaultOptions","reduce","obj","feature","Object","assign","getDefaultOptions","mergeOptions","coreInitialState","initialState","forEach","getInitialState","queued","queuedTimeout","midInstance","_queue","cb","push","Promise","resolve","then","length","shift","catch","error","setTimeout","reset","setState","setOptions","updater","newOptions","functionalUpdate","_render","template","props","render","getState","state","onStateChange","createInstance"],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sources":["../../src/core.ts"],"sourcesContent":["import { functionalUpdate, RequiredKeys } from './utils'\n\nimport {\n Updater,\n TableOptions,\n TableState,\n TableInstance,\n Renderable,\n TableFeature,\n TableGenerics,\n InitialTableState,\n} from './types'\n\nimport { Columns } from './features/Columns'\nimport { Rows } from './features/Rows'\nimport { Cells } from './features/Cells'\nimport { ColumnSizing } from './features/ColumnSizing'\nimport { Expanding } from './features/Expanding'\nimport { Filters } from './features/Filters'\nimport { Grouping } from './features/Grouping'\nimport { Ordering } from './features/Ordering'\nimport { Pagination } from './features/Pagination'\nimport { Pinning } from './features/Pinning'\nimport { RowSelection } from './features/RowSelection'\nimport { Sorting } from './features/Sorting'\nimport { Visibility } from './features/Visibility'\nimport { Headers } from './features/Headers'\n//\n\nexport type CoreTableState = {\n // coreProgress: number\n}\n\nexport type CoreOptions<TGenerics extends TableGenerics> = {\n data: TGenerics['Row'][]\n state: Partial<TableState>\n onStateChange: (updater: Updater<TableState>) => void\n render: TGenerics['Renderer']\n debugAll?: boolean\n debugTable?: boolean\n debugHeaders?: boolean\n debugColumns?: boolean\n debugRows?: boolean\n initialState?: InitialTableState\n autoResetAll?: boolean\n mergeOptions?: <T>(defaultOptions: T, options: Partial<T>) => T\n meta?: TGenerics['TableMeta']\n // keepPreviousData?: boolean\n}\n\nexport type CoreInstance<TGenerics extends TableGenerics> = {\n // generics: TGenerics\n initialState: TableState\n reset: () => void\n options: RequiredKeys<TableOptions<TGenerics>, 'state'>\n setOptions: (newOptions: Updater<TableOptions<TGenerics>>) => void\n getState: () => TableState\n setState: (updater: Updater<TableState>) => void\n _queue: (cb: () => void) => void\n _render: <TProps>(\n template: Renderable<TGenerics, TProps>,\n props: TProps\n ) => string | null | TGenerics['Rendered']\n _features: readonly TableFeature[]\n // getOverallProgress: () => number\n // getProgressStage: () =>\n // | undefined\n // | 'coreRowModel'\n // | 'filteredRowModel'\n // | 'facetedRowModel'\n // createBatch: (priority: keyof CoreBatches) => Batch\n // init: () => void\n // willUpdate: () => void\n // destroy: () => void\n // batches: CoreBatches\n}\n\n// export type Batch = {\n// id: number\n// priority: keyof CoreBatches\n// tasks: (() => void)[]\n// schedule: (cb: () => void) => void\n// cancel: () => void\n// }\n\n// type CoreBatches = {\n// data: Batch[]\n// facets: Batch[]\n// }\n\nexport function createTableInstance<TGenerics extends TableGenerics>(\n options: TableOptions<TGenerics>\n): TableInstance<TGenerics> {\n if (options.debugAll || options.debugTable) {\n console.info('Creating Table Instance...')\n }\n\n let instance = {\n _features: [\n Columns,\n Rows,\n Cells,\n Headers,\n Visibility,\n Ordering,\n Pinning,\n Filters,\n Sorting,\n Grouping,\n Expanding,\n Pagination,\n RowSelection,\n ColumnSizing,\n ] as const,\n } as unknown as CoreInstance<TGenerics>\n\n const defaultOptions = instance._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultOptions?.(instance))\n }, {}) as TableOptions<TGenerics>\n\n const mergeOptions = (options: TableOptions<TGenerics>) => {\n if (instance.options.mergeOptions) {\n return instance.options.mergeOptions(defaultOptions, options)\n }\n\n return {\n ...defaultOptions,\n ...options,\n }\n }\n\n const coreInitialState: CoreTableState = {\n // coreProgress: 1,\n }\n\n let initialState = {\n ...coreInitialState,\n ...(options.initialState ?? {}),\n } as TableState\n\n instance._features.forEach(feature => {\n initialState = feature.getInitialState?.(initialState) ?? initialState\n })\n\n const queued: (() => void)[] = []\n let queuedTimeout = false\n\n const midInstance: CoreInstance<TGenerics> = {\n ...instance,\n // init: () => {\n // startWork()\n // },\n // willUpdate: () => {\n // startWork()\n // },\n // destroy: () => {\n // stopWork()\n // },\n options: {\n ...defaultOptions,\n ...options,\n },\n initialState,\n _queue: cb => {\n queued.push(cb)\n\n if (!queuedTimeout) {\n queuedTimeout = true\n\n // Schedule a microtask to run the queued callbacks after\n // the current call stack (render, etc) has finished.\n Promise.resolve()\n .then(() => {\n while (queued.length) {\n queued.shift()!()\n }\n queuedTimeout = false\n })\n .catch(error =>\n setTimeout(() => {\n throw error\n })\n )\n }\n },\n reset: () => {\n instance.setState(instance.initialState)\n },\n setOptions: updater => {\n const newOptions = functionalUpdate(updater, instance.options)\n instance.options = mergeOptions(newOptions)\n },\n _render: (template, props) => {\n if (typeof instance.options.render === 'function') {\n return instance.options.render(template, props)\n }\n\n if (typeof template === 'function') {\n return (template as Function)(props)\n }\n\n return template\n },\n\n getState: () => {\n return instance.options.state as TableState\n },\n\n setState: (updater: Updater<TableState>) => {\n instance.options.onStateChange?.(updater)\n },\n\n // getOverallProgress: () => {\n // const { coreProgress, filtersProgress, facetProgress } =\n // instance.getState()\n\n // return mean(() =>\n // [coreProgress, filtersProgress].filter(d => d < 1)\n // ) as number\n // },\n // getProgressStage: () => {\n // const { coreProgress, filtersProgress, facetProgress } =\n // instance.getState()\n\n // if (coreProgress < 1) {\n // return 'coreRowModel'\n // }\n\n // if (filtersProgress < 1) {\n // return 'filteredRowModel'\n // }\n\n // if (Object.values(facetProgress).some(d => d < 1)) {\n // return 'facetedRowModel'\n // }\n // },\n }\n\n instance = Object.assign(instance, midInstance)\n\n instance._features.forEach(feature => {\n return Object.assign(instance, feature.createInstance?.(instance))\n })\n\n return instance as TableInstance<TGenerics>\n}\n"],"names":["createTableInstance","options","debugAll","debugTable","console","info","instance","_features","Columns","Rows","Cells","Headers","Visibility","Ordering","Pinning","Filters","Sorting","Grouping","Expanding","Pagination","RowSelection","ColumnSizing","defaultOptions","reduce","obj","feature","Object","assign","getDefaultOptions","mergeOptions","coreInitialState","initialState","forEach","getInitialState","queued","queuedTimeout","midInstance","_queue","cb","push","Promise","resolve","then","length","shift","catch","error","setTimeout","reset","setState","setOptions","updater","newOptions","functionalUpdate","_render","template","props","render","getState","state","onStateChange","createInstance"],"mappings":"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"}
@@ -16,69 +16,55 @@ var utils = require('../utils.js');
16
16
 
17
17
  function getCoreRowModel() {
18
18
  return instance => utils.memo(() => [instance.options.data], data => {
19
- // Access the row model using initial columns
20
- const rows = [];
21
- const flatRows = [];
22
- const rowsById = {};
23
- const leafColumns = instance.getAllLeafColumns();
19
+ const rowModel = {
20
+ rows: [],
21
+ flatRows: [],
22
+ rowsById: {}
23
+ };
24
+ let rows;
25
+ let row;
26
+ let originalRow;
24
27
 
25
- const accessRow = function (originalRow, rowIndex, depth, parentRows, parent) {
28
+ const accessRows = function (originalRows, depth, parent) {
26
29
  if (depth === void 0) {
27
30
  depth = 0;
28
31
  }
29
32
 
30
- const id = instance.getRowId(originalRow, rowIndex, parent);
31
-
32
- if (!id) {
33
- if (process.env.NODE_ENV !== 'production') {
34
- throw new Error("getRowId expected an ID, but got " + id);
35
- }
36
- }
33
+ rows = [];
37
34
 
38
- const values = {};
39
-
40
- for (let i = 0; i < leafColumns.length; i++) {
41
- const column = leafColumns[i];
42
-
43
- if (column && column.accessorFn) {
44
- values[column.id] = column.accessorFn(originalRow, rowIndex);
45
- }
46
- } // Make the row
35
+ for (let i = 0; i < originalRows.length; i++) {
36
+ originalRow = originalRows[i]; // This could be an expensive check at scale, so we should move it somewhere else, but where?
37
+ // if (!id) {
38
+ // if (process.env.NODE_ENV !== 'production') {
39
+ // throw new Error(`getRowId expected an ID, but got ${id}`)
40
+ // }
41
+ // }
42
+ // Make the row
47
43
 
44
+ row = instance.createRow(instance.getRowId(originalRow, i, parent), originalRow, i, depth); // Keep track of every row in a flat array
48
45
 
49
- const row = instance.createRow(id, originalRow, rowIndex, depth); // Push instance row into the parentRows array
46
+ rowModel.flatRows.push(row); // Also keep track of every row by its ID
50
47
 
51
- parentRows.push(row); // Keep track of every row in a flat array
48
+ rowModel.rowsById[row.id] = row; // Push instance row into parent
52
49
 
53
- flatRows.push(row); // Also keep track of every row by its ID
50
+ rows.push(row); // Get the original subrows
54
51
 
55
- rowsById[id] = row; // Get the original subrows
52
+ if (instance.options.getSubRows) {
53
+ var _row$originalSubRows;
56
54
 
57
- if (instance.options.getSubRows) {
58
- const originalSubRows = instance.options.getSubRows(originalRow, rowIndex); // Then recursively access them
55
+ row.originalSubRows = instance.options.getSubRows(originalRow, i); // Then recursively access them
59
56
 
60
- if (originalSubRows != null && originalSubRows.length) {
61
- row.originalSubRows = originalSubRows;
62
- const subRows = [];
63
-
64
- for (let i = 0; i < row.originalSubRows.length; i++) {
65
- accessRow(row.originalSubRows[i], i, depth + 1, subRows, row);
57
+ if ((_row$originalSubRows = row.originalSubRows) != null && _row$originalSubRows.length) {
58
+ row.subRows = accessRows(row.originalSubRows, depth + 1, row);
66
59
  }
67
-
68
- row.subRows = subRows;
69
60
  }
70
61
  }
71
- };
72
62
 
73
- for (let i = 0; i < data.length; i++) {
74
- accessRow(data[i], i, 0, rows);
75
- }
76
-
77
- return {
78
- rows,
79
- flatRows,
80
- rowsById
63
+ return rows;
81
64
  };
65
+
66
+ rowModel.rows = accessRows(data);
67
+ return rowModel;
82
68
  }, {
83
69
  key: process.env.NODE_ENV === 'development' && 'getRowModel',
84
70
  debug: () => {
@@ -1 +1 @@
1
- {"version":3,"file":"getCoreRowModel.js","sources":["../../../src/utils/getCoreRowModel.ts"],"sourcesContent":["import { TableInstance, Row, RowModel, TableGenerics } from '../types'\nimport { memo } from '../utils'\n\nexport function getCoreRowModel<TGenerics extends TableGenerics>(): (\n instance: TableInstance<TGenerics>\n) => () => RowModel<TGenerics> {\n return instance =>\n memo(\n () => [instance.options.data],\n (\n data\n ): {\n rows: Row<TGenerics>[]\n flatRows: Row<TGenerics>[]\n rowsById: Record<string, Row<TGenerics>>\n } => {\n // Access the row model using initial columns\n const rows: Row<TGenerics>[] = []\n const flatRows: Row<TGenerics>[] = []\n const rowsById: Record<string, Row<TGenerics>> = {}\n\n const leafColumns = instance.getAllLeafColumns()\n\n const accessRow = (\n originalRow: TGenerics['Row'],\n rowIndex: number,\n depth = 0,\n parentRows: Row<TGenerics>[],\n parent?: Row<TGenerics>\n ) => {\n const id = instance.getRowId(originalRow, rowIndex, parent)\n\n if (!id) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`getRowId expected an ID, but got ${id}`)\n }\n }\n\n const values: Record<string, any> = {}\n\n for (let i = 0; i < leafColumns.length; i++) {\n const column = leafColumns[i]\n if (column && column.accessorFn) {\n values[column.id] = column.accessorFn(originalRow, rowIndex)\n }\n }\n\n // Make the row\n const row = instance.createRow(id, originalRow, rowIndex, depth)\n\n // Push instance row into the parentRows array\n parentRows.push(row)\n // Keep track of every row in a flat array\n flatRows.push(row)\n // Also keep track of every row by its ID\n rowsById[id] = row\n\n // Get the original subrows\n if (instance.options.getSubRows) {\n const originalSubRows = instance.options.getSubRows(\n originalRow,\n rowIndex\n )\n\n // Then recursively access them\n if (originalSubRows?.length) {\n row.originalSubRows = originalSubRows\n const subRows: Row<TGenerics>[] = []\n\n for (let i = 0; i < row.originalSubRows.length; i++) {\n accessRow(\n row.originalSubRows[i] as TGenerics['Row'],\n i,\n depth + 1,\n subRows,\n row\n )\n }\n row.subRows = subRows\n }\n }\n }\n\n for (let i = 0; i < data.length; i++) {\n accessRow(data[i] as TGenerics['Row'], i, 0, rows)\n }\n\n return { rows, flatRows, rowsById }\n },\n {\n key: process.env.NODE_ENV === 'development' && 'getRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n onChange: () => {\n instance._autoResetPageIndex()\n },\n }\n )\n}\n"],"names":["getCoreRowModel","instance","memo","options","data","rows","flatRows","rowsById","leafColumns","getAllLeafColumns","accessRow","originalRow","rowIndex","depth","parentRows","parent","id","getRowId","process","env","NODE_ENV","Error","values","i","length","column","accessorFn","row","createRow","push","getSubRows","originalSubRows","subRows","key","debug","debugAll","debugTable","onChange","_autoResetPageIndex"],"mappings":"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"}
1
+ {"version":3,"file":"getCoreRowModel.js","sources":["../../../src/utils/getCoreRowModel.ts"],"sourcesContent":["import { TableInstance, Row, RowModel, TableGenerics } from '../types'\nimport { memo } from '../utils'\n\nexport function getCoreRowModel<TGenerics extends TableGenerics>(): (\n instance: TableInstance<TGenerics>\n) => () => RowModel<TGenerics> {\n return instance =>\n memo(\n () => [instance.options.data],\n (\n data\n ): {\n rows: Row<TGenerics>[]\n flatRows: Row<TGenerics>[]\n rowsById: Record<string, Row<TGenerics>>\n } => {\n const rowModel: RowModel<TGenerics> = {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n\n let rows\n let row\n let originalRow\n\n const accessRows = (\n originalRows: TGenerics['Row'][],\n depth = 0,\n parent?: Row<TGenerics>\n ): Row<TGenerics>[] => {\n rows = []\n\n for (let i = 0; i < originalRows.length; i++) {\n originalRow = originalRows[i]\n\n // This could be an expensive check at scale, so we should move it somewhere else, but where?\n // if (!id) {\n // if (process.env.NODE_ENV !== 'production') {\n // throw new Error(`getRowId expected an ID, but got ${id}`)\n // }\n // }\n\n // Make the row\n row = instance.createRow(\n instance.getRowId(originalRow, i, parent),\n originalRow,\n i,\n depth\n )\n\n // Keep track of every row in a flat array\n rowModel.flatRows.push(row)\n // Also keep track of every row by its ID\n rowModel.rowsById[row.id] = row\n // Push instance row into parent\n rows.push(row)\n\n // Get the original subrows\n if (instance.options.getSubRows) {\n row.originalSubRows = instance.options.getSubRows(originalRow, i)\n\n // Then recursively access them\n if (row.originalSubRows?.length) {\n row.subRows = accessRows(row.originalSubRows, depth + 1, row)\n }\n }\n }\n\n return rows\n }\n\n rowModel.rows = accessRows(data)\n\n return rowModel\n },\n {\n key: process.env.NODE_ENV === 'development' && 'getRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n onChange: () => {\n instance._autoResetPageIndex()\n },\n }\n )\n}\n"],"names":["getCoreRowModel","instance","memo","options","data","rowModel","rows","flatRows","rowsById","row","originalRow","accessRows","originalRows","depth","parent","i","length","createRow","getRowId","push","id","getSubRows","originalSubRows","subRows","key","process","env","NODE_ENV","debug","debugAll","debugTable","onChange","_autoResetPageIndex"],"mappings":";;;;;;;;;;;;;;;;AAGO,SAASA,eAAT,GAEwB;AAC7B,EAAA,OAAOC,QAAQ,IACbC,UAAI,CACF,MAAM,CAACD,QAAQ,CAACE,OAAT,CAAiBC,IAAlB,CADJ,EAGAA,IADF,IAMK;AACH,IAAA,MAAMC,QAA6B,GAAG;AACpCC,MAAAA,IAAI,EAAE,EAD8B;AAEpCC,MAAAA,QAAQ,EAAE,EAF0B;AAGpCC,MAAAA,QAAQ,EAAE,EAAA;AAH0B,KAAtC,CAAA;AAMA,IAAA,IAAIF,IAAJ,CAAA;AACA,IAAA,IAAIG,GAAJ,CAAA;AACA,IAAA,IAAIC,WAAJ,CAAA;;AAEA,IAAMC,MAAAA,UAAU,GAAG,UACjBC,YADiB,EAEjBC,KAFiB,EAGjBC,MAHiB,EAII;AAAA,MAAA,IAFrBD,KAEqB,KAAA,KAAA,CAAA,EAAA;AAFrBA,QAAAA,KAEqB,GAFb,CAEa,CAAA;AAAA,OAAA;;AACrBP,MAAAA,IAAI,GAAG,EAAP,CAAA;;AAEA,MAAA,KAAK,IAAIS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGH,YAAY,CAACI,MAAjC,EAAyCD,CAAC,EAA1C,EAA8C;AAC5CL,QAAAA,WAAW,GAAGE,YAAY,CAACG,CAAD,CAA1B,CAD4C;AAI5C;AACA;AACA;AACA;AACA;AAEA;;AACAN,QAAAA,GAAG,GAAGR,QAAQ,CAACgB,SAAT,CACJhB,QAAQ,CAACiB,QAAT,CAAkBR,WAAlB,EAA+BK,CAA/B,EAAkCD,MAAlC,CADI,EAEJJ,WAFI,EAGJK,CAHI,EAIJF,KAJI,CAAN,CAX4C;;AAmB5CR,QAAAA,QAAQ,CAACE,QAAT,CAAkBY,IAAlB,CAAuBV,GAAvB,EAnB4C;;AAqB5CJ,QAAAA,QAAQ,CAACG,QAAT,CAAkBC,GAAG,CAACW,EAAtB,CAAA,GAA4BX,GAA5B,CArB4C;;AAuB5CH,QAAAA,IAAI,CAACa,IAAL,CAAUV,GAAV,EAvB4C;;AA0B5C,QAAA,IAAIR,QAAQ,CAACE,OAAT,CAAiBkB,UAArB,EAAiC;AAAA,UAAA,IAAA,oBAAA,CAAA;;AAC/BZ,UAAAA,GAAG,CAACa,eAAJ,GAAsBrB,QAAQ,CAACE,OAAT,CAAiBkB,UAAjB,CAA4BX,WAA5B,EAAyCK,CAAzC,CAAtB,CAD+B;;AAI/B,UAAA,IAAA,CAAA,oBAAA,GAAIN,GAAG,CAACa,eAAR,KAAI,IAAA,IAAA,oBAAA,CAAqBN,MAAzB,EAAiC;AAC/BP,YAAAA,GAAG,CAACc,OAAJ,GAAcZ,UAAU,CAACF,GAAG,CAACa,eAAL,EAAsBT,KAAK,GAAG,CAA9B,EAAiCJ,GAAjC,CAAxB,CAAA;AACD,WAAA;AACF,SAAA;AACF,OAAA;;AAED,MAAA,OAAOH,IAAP,CAAA;AACD,KA5CD,CAAA;;AA8CAD,IAAAA,QAAQ,CAACC,IAAT,GAAgBK,UAAU,CAACP,IAAD,CAA1B,CAAA;AAEA,IAAA,OAAOC,QAAP,CAAA;AACD,GApEC,EAqEF;AACEmB,IAAAA,GAAG,EAAEC,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IAA0C,aADjD;AAEEC,IAAAA,KAAK,EAAE,MAAA;AAAA,MAAA,IAAA,qBAAA,CAAA;;AAAA,MAAM3B,OAAAA,CAAAA,qBAAAA,GAAAA,QAAQ,CAACE,OAAT,CAAiB0B,QAAvB,oCAAmC5B,QAAQ,CAACE,OAAT,CAAiB2B,UAApD,CAAA;AAAA,KAFT;AAGEC,IAAAA,QAAQ,EAAE,MAAM;AACd9B,MAAAA,QAAQ,CAAC+B,mBAAT,EAAA,CAAA;AACD,KAAA;AALH,GArEE,CADN,CAAA;AA8ED;;;;"}
@@ -3024,7 +3024,6 @@ function buildHeaderGroups(allColumns, columnsToGroup, instance, headerFamily) {
3024
3024
  // data: Batch[]
3025
3025
  // facets: Batch[]
3026
3026
  // }
3027
- // export type TaskPriority = keyof CoreBatches
3028
3027
  function createTableInstance(options) {
3029
3028
  var _options$initialState;
3030
3029
 
@@ -3063,64 +3062,7 @@ function createTableInstance(options) {
3063
3062
  });
3064
3063
 
3065
3064
  const queued = [];
3066
- let queuedTimeout = false; // let workScheduled = false
3067
- // let working = false
3068
- // let latestCallback: ReturnType<typeof requestIdleCallback>
3069
- // let batchUid = 0
3070
- // const onProgress = () => {}
3071
- // const getBatch = () => {
3072
- // instance.batches.data = instance.batches.data.filter(d => d.tasks.length)
3073
- // instance.batches.facets = instance.batches.facets.filter(
3074
- // d => d.tasks.length
3075
- // )
3076
- // return (
3077
- // instance.batches.data.find(d => d.tasks.length) ??
3078
- // instance.batches.facets.find(d => d.tasks.length)
3079
- // )
3080
- // }
3081
- // const startWorkLoop = () => {
3082
- // working = true
3083
- // const workLoop = (deadline: IdleDeadline) => {
3084
- // const batch = getBatch()
3085
- // if (!batch) {
3086
- // working = false
3087
- // return
3088
- // }
3089
- // // Prioritize tasks
3090
- // while (deadline.timeRemaining() > 0 && batch.tasks.length) {
3091
- // batch.tasks.shift()!()
3092
- // }
3093
- // onProgress()
3094
- // if (working) {
3095
- // latestCallback = requestIdleCallback(workLoop, { timeout: 10000 })
3096
- // }
3097
- // }
3098
- // latestCallback = requestIdleCallback(workLoop, { timeout: 10000 })
3099
- // }
3100
- // const startWork = () => {
3101
- // if (getBatch() && !working) {
3102
- // if (
3103
- // (process.env.NODE_ENV === 'development' && instance.options.debugAll) ??
3104
- // instance.options.debugTable
3105
- // ) {
3106
- // console.info('Starting work...')
3107
- // }
3108
- // startWorkLoop()
3109
- // }
3110
- // }
3111
- // const stopWork = () => {
3112
- // if (working) {
3113
- // if (
3114
- // (process.env.NODE_ENV === 'development' && instance.options.debugAll) ??
3115
- // instance.options.debugTable
3116
- // ) {
3117
- // console.info('Stopping work...')
3118
- // }
3119
- // working = false
3120
- // cancelIdleCallback(latestCallback)
3121
- // }
3122
- // }
3123
-
3065
+ let queuedTimeout = false;
3124
3066
  const midInstance = { ...instance,
3125
3067
  // init: () => {
3126
3068
  // startWork()
@@ -3153,39 +3095,6 @@ function createTableInstance(options) {
3153
3095
  }));
3154
3096
  }
3155
3097
  },
3156
- // batches: {
3157
- // data: [],
3158
- // facets: [],
3159
- // },
3160
- // createBatch: priority => {
3161
- // const batchId = batchUid++
3162
- // let canceled: boolean
3163
- // const batch: Batch = {
3164
- // id: batchId,
3165
- // priority,
3166
- // tasks: [],
3167
- // schedule: cb => {
3168
- // if (canceled) return
3169
- // batch.tasks.push(cb)
3170
- // if (!working && !workScheduled) {
3171
- // workScheduled = true
3172
- // instance.queue(() => {
3173
- // workScheduled = false
3174
- // instance.setState(old => ({ ...old }))
3175
- // })
3176
- // }
3177
- // },
3178
- // cancel: () => {
3179
- // canceled = true
3180
- // batch.tasks = []
3181
- // instance.batches[priority] = instance.batches[priority].filter(
3182
- // b => b.id !== batchId
3183
- // )
3184
- // },
3185
- // }
3186
- // instance.batches[priority].push(batch)
3187
- // return batch
3188
- // },
3189
3098
  reset: () => {
3190
3099
  instance.setState(instance.initialState);
3191
3100
  },
@@ -3296,69 +3205,55 @@ function createTable(_, __, options) {
3296
3205
 
3297
3206
  function getCoreRowModel() {
3298
3207
  return instance => memo(() => [instance.options.data], data => {
3299
- // Access the row model using initial columns
3300
- const rows = [];
3301
- const flatRows = [];
3302
- const rowsById = {};
3303
- const leafColumns = instance.getAllLeafColumns();
3208
+ const rowModel = {
3209
+ rows: [],
3210
+ flatRows: [],
3211
+ rowsById: {}
3212
+ };
3213
+ let rows;
3214
+ let row;
3215
+ let originalRow;
3304
3216
 
3305
- const accessRow = function (originalRow, rowIndex, depth, parentRows, parent) {
3217
+ const accessRows = function (originalRows, depth, parent) {
3306
3218
  if (depth === void 0) {
3307
3219
  depth = 0;
3308
3220
  }
3309
3221
 
3310
- const id = instance.getRowId(originalRow, rowIndex, parent);
3311
-
3312
- if (!id) {
3313
- if (process.env.NODE_ENV !== 'production') {
3314
- throw new Error("getRowId expected an ID, but got " + id);
3315
- }
3316
- }
3317
-
3318
- const values = {};
3319
-
3320
- for (let i = 0; i < leafColumns.length; i++) {
3321
- const column = leafColumns[i];
3322
-
3323
- if (column && column.accessorFn) {
3324
- values[column.id] = column.accessorFn(originalRow, rowIndex);
3325
- }
3326
- } // Make the row
3222
+ rows = [];
3327
3223
 
3224
+ for (let i = 0; i < originalRows.length; i++) {
3225
+ originalRow = originalRows[i]; // This could be an expensive check at scale, so we should move it somewhere else, but where?
3226
+ // if (!id) {
3227
+ // if (process.env.NODE_ENV !== 'production') {
3228
+ // throw new Error(`getRowId expected an ID, but got ${id}`)
3229
+ // }
3230
+ // }
3231
+ // Make the row
3328
3232
 
3329
- const row = instance.createRow(id, originalRow, rowIndex, depth); // Push instance row into the parentRows array
3233
+ row = instance.createRow(instance.getRowId(originalRow, i, parent), originalRow, i, depth); // Keep track of every row in a flat array
3330
3234
 
3331
- parentRows.push(row); // Keep track of every row in a flat array
3235
+ rowModel.flatRows.push(row); // Also keep track of every row by its ID
3332
3236
 
3333
- flatRows.push(row); // Also keep track of every row by its ID
3237
+ rowModel.rowsById[row.id] = row; // Push instance row into parent
3334
3238
 
3335
- rowsById[id] = row; // Get the original subrows
3239
+ rows.push(row); // Get the original subrows
3336
3240
 
3337
- if (instance.options.getSubRows) {
3338
- const originalSubRows = instance.options.getSubRows(originalRow, rowIndex); // Then recursively access them
3241
+ if (instance.options.getSubRows) {
3242
+ var _row$originalSubRows;
3339
3243
 
3340
- if (originalSubRows != null && originalSubRows.length) {
3341
- row.originalSubRows = originalSubRows;
3342
- const subRows = [];
3244
+ row.originalSubRows = instance.options.getSubRows(originalRow, i); // Then recursively access them
3343
3245
 
3344
- for (let i = 0; i < row.originalSubRows.length; i++) {
3345
- accessRow(row.originalSubRows[i], i, depth + 1, subRows, row);
3246
+ if ((_row$originalSubRows = row.originalSubRows) != null && _row$originalSubRows.length) {
3247
+ row.subRows = accessRows(row.originalSubRows, depth + 1, row);
3346
3248
  }
3347
-
3348
- row.subRows = subRows;
3349
3249
  }
3350
3250
  }
3351
- };
3352
-
3353
- for (let i = 0; i < data.length; i++) {
3354
- accessRow(data[i], i, 0, rows);
3355
- }
3356
3251
 
3357
- return {
3358
- rows,
3359
- flatRows,
3360
- rowsById
3252
+ return rows;
3361
3253
  };
3254
+
3255
+ rowModel.rows = accessRows(data);
3256
+ return rowModel;
3362
3257
  }, {
3363
3258
  key: process.env.NODE_ENV === 'development' && 'getRowModel',
3364
3259
  debug: () => {