@tanstack/table-core 8.0.0-alpha.53 → 8.0.0-alpha.57
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 +9 -384
- package/build/cjs/core.js.map +1 -1
- package/build/cjs/createTable.js.map +1 -1
- package/build/cjs/features/Cells.js +122 -0
- package/build/cjs/features/Cells.js.map +1 -0
- package/build/cjs/features/ColumnSizing.js +90 -37
- package/build/cjs/features/ColumnSizing.js.map +1 -1
- package/build/cjs/features/Columns.js +216 -0
- package/build/cjs/features/Columns.js.map +1 -0
- package/build/cjs/features/Expanding.js +1 -1
- package/build/cjs/features/Expanding.js.map +1 -1
- package/build/cjs/features/Filters.js +1 -1
- package/build/cjs/features/Filters.js.map +1 -1
- package/build/cjs/features/Grouping.js +1 -1
- package/build/cjs/features/Grouping.js.map +1 -1
- package/build/cjs/features/Headers.js +78 -153
- package/build/cjs/features/Headers.js.map +1 -1
- package/build/cjs/features/Ordering.js +2 -2
- package/build/cjs/features/Ordering.js.map +1 -1
- package/build/cjs/features/Pagination.js +1 -1
- package/build/cjs/features/Pagination.js.map +1 -1
- package/build/cjs/features/Pinning.js +172 -2
- package/build/cjs/features/Pinning.js.map +1 -1
- package/build/cjs/features/RowSelection.js +1 -1
- package/build/cjs/features/RowSelection.js.map +1 -1
- package/build/cjs/features/Rows.js +99 -0
- package/build/cjs/features/Rows.js.map +1 -0
- package/build/cjs/features/Sorting.js +1 -1
- package/build/cjs/features/Sorting.js.map +1 -1
- package/build/cjs/features/Visibility.js +51 -17
- package/build/cjs/features/Visibility.js.map +1 -1
- package/build/cjs/filterFns.js.map +1 -1
- package/build/cjs/sortingFns.js.map +1 -1
- package/build/cjs/utils/filterRowsUtils.js.map +1 -1
- package/build/cjs/utils/getColumnFilteredRowModelSync.js.map +1 -1
- package/build/cjs/utils/getCoreRowModelAsync.js.map +1 -1
- package/build/cjs/utils/getCoreRowModelSync.js.map +1 -1
- package/build/cjs/utils/getExpandedRowModel.js.map +1 -1
- package/build/cjs/utils/getGlobalFilteredRowModelSync.js.map +1 -1
- package/build/cjs/utils/getGroupedRowModel.js.map +1 -1
- package/build/cjs/utils/getPaginationRowModel.js.map +1 -1
- package/build/cjs/utils/getSortedRowModelSync.js.map +1 -1
- package/build/cjs/utils.js +2 -2
- package/build/cjs/utils.js.map +1 -1
- package/build/esm/index.js +879 -693
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +420 -318
- package/build/types/core.d.ts +5 -82
- package/build/types/createTable.d.ts +4 -4
- package/build/types/features/Cells.d.ts +14 -0
- package/build/types/features/ColumnSizing.d.ts +31 -23
- package/build/types/features/Columns.d.ts +54 -0
- package/build/types/features/Expanding.d.ts +6 -6
- package/build/types/features/Filters.d.ts +14 -14
- package/build/types/features/Grouping.d.ts +16 -16
- package/build/types/features/Headers.d.ts +5 -13
- package/build/types/features/Ordering.d.ts +5 -5
- package/build/types/features/Pagination.d.ts +5 -5
- package/build/types/features/Pinning.d.ts +21 -7
- package/build/types/features/RowSelection.d.ts +8 -8
- package/build/types/features/Rows.d.ts +29 -0
- package/build/types/features/Sorting.d.ts +12 -12
- package/build/types/features/Visibility.d.ts +11 -6
- package/build/types/filterFns.d.ts +10 -10
- package/build/types/sortingFns.d.ts +7 -7
- package/build/types/types.d.ts +37 -33
- package/build/types/utils/filterRowsUtils.d.ts +3 -3
- package/build/types/utils/getColumnFilteredRowModelAsync.d.ts +2 -2
- package/build/types/utils/getColumnFilteredRowModelSync.d.ts +2 -2
- package/build/types/utils/getCoreRowModelAsync.d.ts +2 -2
- package/build/types/utils/getCoreRowModelSync.d.ts +2 -2
- package/build/types/utils/getExpandedRowModel.d.ts +3 -3
- package/build/types/utils/getGlobalFilteredRowModelAsync.d.ts +2 -2
- package/build/types/utils/getGlobalFilteredRowModelSync.d.ts +2 -2
- package/build/types/utils/getGroupedRowModel.d.ts +2 -2
- package/build/types/utils/getPaginationRowModel.d.ts +2 -2
- package/build/types/utils/getSortedRowModelAsync.d.ts +4 -4
- package/build/types/utils/getSortedRowModelSync.d.ts +2 -2
- package/build/types/utils.d.ts +0 -1
- package/build/umd/index.development.js +857 -671
- 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 +1 -1
- package/src/core.ts +32 -554
- package/src/createTable.ts +12 -5
- package/src/features/Cells.ts +156 -0
- package/src/features/ColumnSizing.ts +109 -58
- package/src/features/Columns.ts +290 -0
- package/src/features/Expanding.ts +6 -7
- package/src/features/Filters.ts +14 -15
- package/src/features/Grouping.ts +16 -17
- package/src/features/Headers.ts +51 -142
- package/src/features/Ordering.ts +8 -7
- package/src/features/Pagination.ts +5 -6
- package/src/features/Pinning.ts +198 -8
- package/src/features/RowSelection.ts +9 -10
- package/src/features/Rows.ts +151 -0
- package/src/features/Sorting.ts +12 -13
- package/src/features/Visibility.ts +73 -27
- package/src/filterFns.ts +10 -10
- package/src/sortingFns.ts +7 -7
- package/src/types.ts +47 -65
- package/src/utils/filterRowsUtils.ts +3 -3
- package/src/utils/getColumnFilteredRowModelAsync.ts +2 -2
- package/src/utils/getColumnFilteredRowModelSync.ts +2 -2
- package/src/utils/getCoreRowModelAsync.ts +2 -2
- package/src/utils/getCoreRowModelSync.ts +2 -2
- package/src/utils/getExpandedRowModel.ts +3 -3
- package/src/utils/getGlobalFilteredRowModelAsync.ts +2 -2
- package/src/utils/getGlobalFilteredRowModelSync.ts +2 -2
- package/src/utils/getGroupedRowModel.ts +3 -3
- package/src/utils/getPaginationRowModel.ts +2 -2
- package/src/utils/getSortedRowModelAsync.ts +4 -4
- package/src/utils/getSortedRowModelSync.ts +2 -2
- package/src/utils.ts +3 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSortedRowModelSync.js","sources":["../../../src/utils/getSortedRowModelSync.ts"],"sourcesContent":["import { TableInstance, Row, RowModel,
|
|
1
|
+
{"version":3,"file":"getSortedRowModelSync.js","sources":["../../../src/utils/getSortedRowModelSync.ts"],"sourcesContent":["import { TableInstance, Row, RowModel, TableGenerics } from '../types'\nimport { SortingFn } from '../features/Sorting'\nimport { memo } from '../utils'\n\nexport function getSortedRowModelSync<TGenerics extends TableGenerics>(): (\n instance: TableInstance<TGenerics>\n) => () => RowModel<TGenerics> {\n return instance =>\n memo(\n () => [instance.getState().sorting, instance.getPreSortedRowModel()],\n (sorting, rowModel) => {\n if (!rowModel.rows.length || !sorting?.length) {\n return rowModel\n }\n\n const sortingState = instance.getState().sorting\n\n const sortedFlatRows: Row<TGenerics>[] = []\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sortingState.filter(sort =>\n instance.getColumnCanSort(sort.id)\n )\n\n const columnInfoById: Record<\n string,\n {\n sortUndefined?: false | -1 | 1\n invertSorting?: boolean\n sortingFn: SortingFn<TGenerics>\n }\n > = {}\n\n availableSorting.forEach(sortEntry => {\n const column = instance.getColumn(sortEntry.id)!\n\n columnInfoById[sortEntry.id] = {\n sortUndefined: column.sortUndefined,\n invertSorting: column.invertSorting,\n sortingFn: instance.getColumnSortingFn(sortEntry.id)!,\n }\n })\n\n const sortData = (rows: Row<TGenerics>[]) => {\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = rows.slice()\n\n sortedData.sort((rowA, rowB) => {\n for (let i = 0; i < availableSorting.length; i += 1) {\n const sortEntry = availableSorting[i]!\n const columnInfo = columnInfoById[sortEntry.id]!\n const isDesc = sortEntry?.desc ?? false\n\n if (columnInfo.sortUndefined) {\n const aValue = rowA.values[sortEntry.id]\n const bValue = rowB.values[sortEntry.id]\n\n const aUndefined = typeof aValue === 'undefined'\n const bUndefined = typeof bValue === 'undefined'\n\n if (aUndefined || bUndefined) {\n return aUndefined && bUndefined\n ? 0\n : aUndefined\n ? columnInfo.sortUndefined\n : -columnInfo.sortUndefined\n }\n }\n\n // This function should always return in ascending order\n let sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id)\n\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1\n }\n\n if (columnInfo.invertSorting) {\n sortInt *= -1\n }\n\n return sortInt\n }\n }\n\n return rowA.index - rowB.index\n })\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n sortedFlatRows.push(row)\n if (!row.subRows || row.subRows.length <= 1) {\n return\n }\n row.subRows = sortData(row.subRows)\n })\n\n return sortedData\n }\n\n return {\n rows: sortData(rowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: rowModel.rowsById,\n }\n },\n {\n key: 'getSortedRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n onChange: () => {\n instance.queue(() => {\n instance.queueResetGrouping()\n })\n },\n }\n )\n}\n"],"names":["getSortedRowModelSync","instance","memo","getState","sorting","getPreSortedRowModel","rowModel","rows","length","sortingState","sortedFlatRows","availableSorting","filter","sort","getColumnCanSort","id","columnInfoById","forEach","sortEntry","column","getColumn","sortUndefined","invertSorting","sortingFn","getColumnSortingFn","sortData","sortedData","slice","rowA","rowB","i","columnInfo","isDesc","desc","aValue","values","bValue","aUndefined","bUndefined","sortInt","index","row","push","subRows","flatRows","rowsById","key","debug","options","debugAll","debugTable","onChange","queue","queueResetGrouping"],"mappings":"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"}
|
package/build/cjs/utils.js
CHANGED
|
@@ -14,10 +14,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
14
14
|
|
|
15
15
|
var _rollupPluginBabelHelpers = require('./_virtual/_rollupPluginBabelHelpers.js');
|
|
16
16
|
|
|
17
|
-
// export type DefinedGenericKeys<T extends
|
|
17
|
+
// export type DefinedGenericKeys<T extends TableGenerics> = {
|
|
18
18
|
// [K in keyof T]: 0 extends 1 & T[K] ? never : T[K] extends {} ? K : never
|
|
19
19
|
// }[keyof T]
|
|
20
|
-
// export type DefinedGenerics<T extends
|
|
20
|
+
// export type DefinedGenerics<T extends TableGenerics> = Pick<
|
|
21
21
|
// T,
|
|
22
22
|
// DefinedGenericKeys<T>
|
|
23
23
|
// >
|
package/build/cjs/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../src/utils.ts"],"sourcesContent":["import { Getter, NoInfer, PropGetterValue, TableState, Updater } from './types'\n\nexport type IsAny<T> = 0 extends 1 & T ? true : false\nexport type PartialKeys<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>\nexport type RequiredKeys<T, K extends keyof T> = Omit<T, K> &\n Required<Pick<T, K>>\nexport type Overwrite<T, U extends { [TKey in keyof T]?: any }> = Omit<\n T,\n keyof U\n> &\n U\n\nexport type IfDefined<T, N> = 0 extends 1 & T ? N : T extends {} ? T : N\n\n// export type DefinedGenericKeys<T extends AnyGenerics> = {\n// [K in keyof T]: 0 extends 1 & T[K] ? never : T[K] extends {} ? K : never\n// }[keyof T]\n\n// export type DefinedGenerics<T extends AnyGenerics> = Pick<\n// T,\n// DefinedGenericKeys<T>\n// >\n\nexport type DataUpdateFunction<T> = (input: T) => T\n\nexport function functionalUpdate<T>(updater: Updater<T>, input: T): T {\n return typeof updater === 'function'\n ? (updater as DataUpdateFunction<T>)(input)\n : updater\n}\n\nexport function noop() {\n //\n}\n\nexport function getBatchGroups<T>(arr: T[], count: number) {\n const groups: { start: number; end: number; items: T[] }[] = [\n {\n start: 0,\n end: count - 1,\n items: [],\n },\n ]\n\n let groupIndex = 0\n let group = groups[groupIndex]\n\n for (let i = 0; i < arr.length; i++) {\n if (i > group.end) {\n groupIndex++\n groups[groupIndex] = {\n start: i,\n end: i + count - 1,\n items: [],\n }\n }\n group = groups[groupIndex]\n const item = arr[i]\n group.items.push(item)\n }\n\n return groups\n}\n\nexport function makeStateUpdater(key: keyof TableState, instance: unknown) {\n return (updater: Updater<any>) => {\n ;(instance as any).setState(<TTableState>(old: TTableState) => {\n return {\n ...old,\n [key]: functionalUpdate(updater, (old as any)[key]),\n }\n })\n }\n}\n\ntype AnyFunction = (...args: any) => any\n\nexport function isFunction<T extends AnyFunction>(d: any): d is T {\n return d instanceof Function\n}\n\nexport function flattenBy<TNode>(\n arr: TNode[],\n getChildren: (item: TNode) => TNode[]\n) {\n const flat: TNode[] = []\n\n const recurse = (subArr: TNode[]) => {\n subArr.forEach(item => {\n flat.push(item)\n const children = getChildren(item)\n if (children?.length) {\n recurse(children)\n }\n })\n }\n\n recurse(arr)\n\n return flat\n}\n\ntype PropGetterImpl = <TBaseProps, TGetter extends Getter<TBaseProps>>(\n initial: TBaseProps,\n userProps?: TGetter\n) => PropGetterValue<TBaseProps, TGetter>\n\n// @ts-ignore // Just rely on the type, not the implementation\nexport const propGetter: PropGetterImpl = (initial, getter) => {\n if (isFunction(getter)) {\n return getter(initial)\n }\n\n return {\n ...initial,\n ...(getter ?? {}),\n }\n}\n\nexport function memo<TDeps extends readonly any[], TResult>(\n getDeps: () => [...TDeps],\n fn: (...args: NoInfer<[...TDeps]>) => TResult,\n opts: {\n key: string\n debug?: () => any\n onChange?: (result: TResult, previousResult?: TResult) => void\n }\n): () => TResult {\n let deps: any[] = []\n let result: TResult | undefined\n\n return () => {\n let depTime: number\n if (opts.key && opts.debug) depTime = Date.now()\n\n const newDeps = getDeps()\n\n const depsChanged =\n newDeps.length !== deps.length ||\n newDeps.some((dep: any, index: number) => deps[index] !== dep)\n\n if (depsChanged) {\n let oldResult = result\n let resultTime: number\n if (opts.key && opts.debug) resultTime = Date.now()\n result = fn(...newDeps)\n deps = newDeps\n opts?.onChange?.(result, oldResult)\n\n if (opts.key && opts.debug) {\n if (opts?.debug()) {\n const depEndTime = Math.round((Date.now() - depTime!) * 100) / 100\n const resultEndTime =\n Math.round((Date.now() - resultTime!) * 100) / 100\n const resultFpsPercentage = resultEndTime / 16\n\n const pad = (str: number | string, num: number) => {\n str = String(str)\n while (str.length < num) {\n str = ' ' + str\n }\n return str\n }\n\n console.info(\n `%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120)\n )}deg 100% 31%);`,\n opts?.key,\n {\n length: `${deps.length} -> ${newDeps.length}`,\n ...newDeps\n .map((_, index) => {\n if (deps[index] !== newDeps[index]) {\n return [index, deps[index], newDeps[index]]\n }\n\n return false\n })\n .filter(Boolean)\n .reduce(\n (accu, [a, b]: any) => ({\n ...accu,\n [a]: b,\n }),\n {}\n ),\n parent,\n }\n )\n }\n }\n\n oldResult = undefined\n }\n\n return result!\n }\n}\n\ntype WorkFn = () => void\n\nexport function incrementalMemo<TDeps extends readonly any[], TResult>(\n getDeps: () => [...TDeps],\n getInitialValue: (...args: NoInfer<[...TDeps]>) => TResult,\n schedule: (\n ...args: NoInfer<[...TDeps]>\n ) => (resultRef: {\n current: TResult\n }) => (scheduler: (workFn: WorkFn) => void) => void,\n opts: {\n key: string\n onProgress: (\n progress: number,\n nextResult: TResult,\n result?: TResult\n ) => void\n onChange: (result: TResult, previousResult?: TResult) => void\n initialSync?: boolean\n timeout?: number\n debug?: () => any\n }\n): () => TResult {\n let oldDeps: any[]\n let deps: any[]\n let result: TResult | undefined\n let nextResultRef: { current: TResult }\n let tasks: WorkFn[] = []\n let totalTaskCount = 0\n let resultStartTime: number\n let batchIndex = 0\n let progress = 0\n let working = false\n let callback: ReturnType<typeof requestIdleCallback>\n\n const timeout = opts.timeout ?? 100\n\n const onProgress = (latestResult: TResult, previousResult?: TResult) => {\n progress = 1 - tasks.length / totalTaskCount\n opts.onProgress(progress, latestResult, previousResult)\n }\n\n return () => {\n const scheduleFn = (workFn: WorkFn) => {\n totalTaskCount++\n tasks.push(workFn)\n }\n\n const newDeps = getDeps()\n\n let first = false\n\n if (!deps) {\n first = true\n deps = []\n result = getInitialValue(...newDeps)\n }\n\n const depsChanged =\n newDeps.length !== deps.length ||\n newDeps.some((dep: any, index: number) => deps[index] !== dep)\n\n if (depsChanged) {\n cancelIdleCallback(callback)\n oldDeps = deps\n deps = newDeps\n totalTaskCount = 0\n tasks = []\n nextResultRef = { current: getInitialValue(...newDeps) }\n resultStartTime = Date.now()\n schedule(...newDeps)(nextResultRef)(scheduleFn)\n }\n\n const commitResult = () => {\n cancelIdleCallback(callback)\n\n if (opts.key && opts.debug) {\n if (opts?.debug()) {\n const resultEndTime =\n Math.round((Date.now() - resultStartTime!) * 100) / 100\n const resultFpsPercentage = resultEndTime / batchIndex / 16\n\n console.info(\n `%c⏱ ${resultEndTime} ms / ${batchIndex} tasks = ${Math.round(\n resultEndTime / batchIndex\n )} ms/task`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120)\n )}deg 100% 31%);`,\n opts?.key,\n {\n length: `${oldDeps.length} -> ${deps.length}`,\n ...deps\n .map((_, index) => {\n if (oldDeps[index] !== deps[index]) {\n return [index, oldDeps[index], deps[index]]\n }\n\n return false\n })\n .filter(Boolean)\n .reduce(\n (accu, [a, b]: any) => ({\n ...accu,\n [a]: b,\n }),\n {}\n ),\n parent,\n }\n )\n }\n }\n\n working = false\n let previousResult = result\n result = nextResultRef.current\n onProgress(result, previousResult)\n opts.onChange(result, previousResult)\n }\n\n if (opts.initialSync && first) {\n batchIndex = 1\n first = false\n for (let i = 0; i < tasks.length; i++) {\n tasks[i]()\n }\n tasks = []\n commitResult()\n } else if (!working && tasks.length) {\n cancelIdleCallback(callback)\n working = true\n batchIndex = 0\n\n const workLoop = (deadline: any) => {\n while (tasks.length && deadline.timeRemaining() > 0) {\n tasks.shift()!()\n }\n\n if (!tasks.length) {\n commitResult()\n } else {\n ++batchIndex\n onProgress(nextResultRef.current, result)\n callback = requestIdleCallback(workLoop, { timeout })\n }\n }\n\n callback = requestIdleCallback(workLoop, { timeout })\n }\n\n return result!\n }\n}\n\n// opts?.onChange?.(result, oldResult)\n"],"names":["functionalUpdate","updater","input","noop","getBatchGroups","arr","count","groups","start","end","items","groupIndex","group","i","length","item","push","makeStateUpdater","key","instance","setState","old","_extends","isFunction","d","Function","flattenBy","getChildren","flat","recurse","subArr","forEach","children","propGetter","initial","getter","memo","getDeps","fn","opts","deps","result","depTime","debug","Date","now","newDeps","depsChanged","some","dep","index","oldResult","resultTime","onChange","depEndTime","Math","round","resultEndTime","resultFpsPercentage","pad","str","num","String","console","info","max","min","map","_","filter","Boolean","reduce","accu","a","b","parent","undefined","incrementalMemo","getInitialValue","schedule","oldDeps","nextResultRef","tasks","totalTaskCount","resultStartTime","batchIndex","progress","working","callback","timeout","onProgress","latestResult","previousResult","scheduleFn","workFn","first","cancelIdleCallback","current","commitResult","initialSync","workLoop","deadline","timeRemaining","shift","requestIdleCallback"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../src/utils.ts"],"sourcesContent":["import { Getter, NoInfer, PropGetterValue, TableState, Updater } from './types'\n\nexport type IsAny<T> = 0 extends 1 & T ? true : false\nexport type PartialKeys<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>\nexport type RequiredKeys<T, K extends keyof T> = Omit<T, K> &\n Required<Pick<T, K>>\nexport type Overwrite<T, U extends { [TKey in keyof T]?: any }> = Omit<\n T,\n keyof U\n> &\n U\n\nexport type IfDefined<T, N> = 0 extends 1 & T ? N : T extends {} ? T : N\n\n// export type DefinedGenericKeys<T extends TableGenerics> = {\n// [K in keyof T]: 0 extends 1 & T[K] ? never : T[K] extends {} ? K : never\n// }[keyof T]\n\n// export type DefinedGenerics<T extends TableGenerics> = Pick<\n// T,\n// DefinedGenericKeys<T>\n// >\n\nexport function functionalUpdate<T>(updater: Updater<T>, input: T): T {\n return typeof updater === 'function'\n ? (updater as (input: T) => T)(input)\n : updater\n}\n\nexport function noop() {\n //\n}\n\nexport function getBatchGroups<T>(arr: T[], count: number) {\n const groups: { start: number; end: number; items: T[] }[] = [\n {\n start: 0,\n end: count - 1,\n items: [],\n },\n ]\n\n let groupIndex = 0\n let group = groups[groupIndex]\n\n for (let i = 0; i < arr.length; i++) {\n if (i > group.end) {\n groupIndex++\n groups[groupIndex] = {\n start: i,\n end: i + count - 1,\n items: [],\n }\n }\n group = groups[groupIndex]\n const item = arr[i]\n group.items.push(item)\n }\n\n return groups\n}\n\nexport function makeStateUpdater(key: keyof TableState, instance: unknown) {\n return (updater: Updater<any>) => {\n ;(instance as any).setState(<TTableState>(old: TTableState) => {\n return {\n ...old,\n [key]: functionalUpdate(updater, (old as any)[key]),\n }\n })\n }\n}\n\ntype AnyFunction = (...args: any) => any\n\nexport function isFunction<T extends AnyFunction>(d: any): d is T {\n return d instanceof Function\n}\n\nexport function flattenBy<TNode>(\n arr: TNode[],\n getChildren: (item: TNode) => TNode[]\n) {\n const flat: TNode[] = []\n\n const recurse = (subArr: TNode[]) => {\n subArr.forEach(item => {\n flat.push(item)\n const children = getChildren(item)\n if (children?.length) {\n recurse(children)\n }\n })\n }\n\n recurse(arr)\n\n return flat\n}\n\ntype PropGetterImpl = <TBaseProps, TGetter extends Getter<TBaseProps>>(\n initial: TBaseProps,\n userProps?: TGetter\n) => PropGetterValue<TBaseProps, TGetter>\n\n// @ts-ignore // Just rely on the type, not the implementation\nexport const propGetter: PropGetterImpl = (initial, getter) => {\n if (isFunction(getter)) {\n return getter(initial)\n }\n\n return {\n ...initial,\n ...(getter ?? {}),\n }\n}\n\nexport function memo<TDeps extends readonly any[], TResult>(\n getDeps: () => [...TDeps],\n fn: (...args: NoInfer<[...TDeps]>) => TResult,\n opts: {\n key: string\n debug?: () => any\n onChange?: (result: TResult, previousResult?: TResult) => void\n }\n): () => TResult {\n let deps: any[] = []\n let result: TResult | undefined\n\n return () => {\n let depTime: number\n if (opts.key && opts.debug) depTime = Date.now()\n\n const newDeps = getDeps()\n\n const depsChanged =\n newDeps.length !== deps.length ||\n newDeps.some((dep: any, index: number) => deps[index] !== dep)\n\n if (depsChanged) {\n let oldResult = result\n let resultTime: number\n if (opts.key && opts.debug) resultTime = Date.now()\n result = fn(...newDeps)\n deps = newDeps\n opts?.onChange?.(result, oldResult)\n\n if (opts.key && opts.debug) {\n if (opts?.debug()) {\n const depEndTime = Math.round((Date.now() - depTime!) * 100) / 100\n const resultEndTime =\n Math.round((Date.now() - resultTime!) * 100) / 100\n const resultFpsPercentage = resultEndTime / 16\n\n const pad = (str: number | string, num: number) => {\n str = String(str)\n while (str.length < num) {\n str = ' ' + str\n }\n return str\n }\n\n console.info(\n `%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120)\n )}deg 100% 31%);`,\n opts?.key,\n {\n length: `${deps.length} -> ${newDeps.length}`,\n ...newDeps\n .map((_, index) => {\n if (deps[index] !== newDeps[index]) {\n return [index, deps[index], newDeps[index]]\n }\n\n return false\n })\n .filter(Boolean)\n .reduce(\n (accu, [a, b]: any) => ({\n ...accu,\n [a]: b,\n }),\n {}\n ),\n parent,\n }\n )\n }\n }\n\n oldResult = undefined\n }\n\n return result!\n }\n}\n\ntype WorkFn = () => void\n\nexport function incrementalMemo<TDeps extends readonly any[], TResult>(\n getDeps: () => [...TDeps],\n getInitialValue: (...args: NoInfer<[...TDeps]>) => TResult,\n schedule: (\n ...args: NoInfer<[...TDeps]>\n ) => (resultRef: {\n current: TResult\n }) => (scheduler: (workFn: WorkFn) => void) => void,\n opts: {\n key: string\n onProgress: (\n progress: number,\n nextResult: TResult,\n result?: TResult\n ) => void\n onChange: (result: TResult, previousResult?: TResult) => void\n initialSync?: boolean\n timeout?: number\n debug?: () => any\n }\n): () => TResult {\n let oldDeps: any[]\n let deps: any[]\n let result: TResult | undefined\n let nextResultRef: { current: TResult }\n let tasks: WorkFn[] = []\n let totalTaskCount = 0\n let resultStartTime: number\n let batchIndex = 0\n let progress = 0\n let working = false\n let callback: ReturnType<typeof requestIdleCallback>\n\n const timeout = opts.timeout ?? 100\n\n const onProgress = (latestResult: TResult, previousResult?: TResult) => {\n progress = 1 - tasks.length / totalTaskCount\n opts.onProgress(progress, latestResult, previousResult)\n }\n\n return () => {\n const scheduleFn = (workFn: WorkFn) => {\n totalTaskCount++\n tasks.push(workFn)\n }\n\n const newDeps = getDeps()\n\n let first = false\n\n if (!deps) {\n first = true\n deps = []\n result = getInitialValue(...newDeps)\n }\n\n const depsChanged =\n newDeps.length !== deps.length ||\n newDeps.some((dep: any, index: number) => deps[index] !== dep)\n\n if (depsChanged) {\n cancelIdleCallback(callback)\n oldDeps = deps\n deps = newDeps\n totalTaskCount = 0\n tasks = []\n nextResultRef = { current: getInitialValue(...newDeps) }\n resultStartTime = Date.now()\n schedule(...newDeps)(nextResultRef)(scheduleFn)\n }\n\n const commitResult = () => {\n cancelIdleCallback(callback)\n\n if (opts.key && opts.debug) {\n if (opts?.debug()) {\n const resultEndTime =\n Math.round((Date.now() - resultStartTime!) * 100) / 100\n const resultFpsPercentage = resultEndTime / batchIndex / 16\n\n console.info(\n `%c⏱ ${resultEndTime} ms / ${batchIndex} tasks = ${Math.round(\n resultEndTime / batchIndex\n )} ms/task`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120)\n )}deg 100% 31%);`,\n opts?.key,\n {\n length: `${oldDeps.length} -> ${deps.length}`,\n ...deps\n .map((_, index) => {\n if (oldDeps[index] !== deps[index]) {\n return [index, oldDeps[index], deps[index]]\n }\n\n return false\n })\n .filter(Boolean)\n .reduce(\n (accu, [a, b]: any) => ({\n ...accu,\n [a]: b,\n }),\n {}\n ),\n parent,\n }\n )\n }\n }\n\n working = false\n let previousResult = result\n result = nextResultRef.current\n onProgress(result, previousResult)\n opts.onChange(result, previousResult)\n }\n\n if (opts.initialSync && first) {\n batchIndex = 1\n first = false\n for (let i = 0; i < tasks.length; i++) {\n tasks[i]()\n }\n tasks = []\n commitResult()\n } else if (!working && tasks.length) {\n cancelIdleCallback(callback)\n working = true\n batchIndex = 0\n\n const workLoop = (deadline: any) => {\n while (tasks.length && deadline.timeRemaining() > 0) {\n tasks.shift()!()\n }\n\n if (!tasks.length) {\n commitResult()\n } else {\n ++batchIndex\n onProgress(nextResultRef.current, result)\n callback = requestIdleCallback(workLoop, { timeout })\n }\n }\n\n callback = requestIdleCallback(workLoop, { timeout })\n }\n\n return result!\n }\n}\n\n// opts?.onChange?.(result, oldResult)\n"],"names":["functionalUpdate","updater","input","noop","getBatchGroups","arr","count","groups","start","end","items","groupIndex","group","i","length","item","push","makeStateUpdater","key","instance","setState","old","_extends","isFunction","d","Function","flattenBy","getChildren","flat","recurse","subArr","forEach","children","propGetter","initial","getter","memo","getDeps","fn","opts","deps","result","depTime","debug","Date","now","newDeps","depsChanged","some","dep","index","oldResult","resultTime","onChange","depEndTime","Math","round","resultEndTime","resultFpsPercentage","pad","str","num","String","console","info","max","min","map","_","filter","Boolean","reduce","accu","a","b","parent","undefined","incrementalMemo","getInitialValue","schedule","oldDeps","nextResultRef","tasks","totalTaskCount","resultStartTime","batchIndex","progress","working","callback","timeout","onProgress","latestResult","previousResult","scheduleFn","workFn","first","cancelIdleCallback","current","commitResult","initialSync","workLoop","deadline","timeRemaining","shift","requestIdleCallback"],"mappings":";;;;;;;;;;;;;;;;AAcA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEO,SAASA,gBAAT,CAA6BC,OAA7B,EAAkDC,KAAlD,EAA+D;AACpE,EAAO,OAAA,OAAOD,OAAP,KAAmB,UAAnB,GACFA,OAAD,CAA6BC,KAA7B,CADG,GAEHD,OAFJ,CAAA;AAGD,CAAA;AAEM,SAASE,IAAT,GAAgB;AAEtB,CAAA;AAEM,SAASC,cAAT,CAA2BC,GAA3B,EAAqCC,KAArC,EAAoD;AACzD,EAAMC,IAAAA,MAAoD,GAAG,CAC3D;AACEC,IAAAA,KAAK,EAAE,CADT;AAEEC,IAAAA,GAAG,EAAEH,KAAK,GAAG,CAFf;AAGEI,IAAAA,KAAK,EAAE,EAAA;AAHT,GAD2D,CAA7D,CAAA;AAQA,EAAIC,IAAAA,UAAU,GAAG,CAAjB,CAAA;AACA,EAAA,IAAIC,KAAK,GAAGL,MAAM,CAACI,UAAD,CAAlB,CAAA;;AAEA,EAAA,KAAK,IAAIE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGR,GAAG,CAACS,MAAxB,EAAgCD,CAAC,EAAjC,EAAqC;AACnC,IAAA,IAAIA,CAAC,GAAGD,KAAK,CAACH,GAAd,EAAmB;AACjBE,MAAAA,UAAU,EAAA,CAAA;AACVJ,MAAAA,MAAM,CAACI,UAAD,CAAN,GAAqB;AACnBH,QAAAA,KAAK,EAAEK,CADY;AAEnBJ,QAAAA,GAAG,EAAEI,CAAC,GAAGP,KAAJ,GAAY,CAFE;AAGnBI,QAAAA,KAAK,EAAE,EAAA;AAHY,OAArB,CAAA;AAKD,KAAA;;AACDE,IAAAA,KAAK,GAAGL,MAAM,CAACI,UAAD,CAAd,CAAA;AACA,IAAA,IAAMI,KAAI,GAAGV,GAAG,CAACQ,CAAD,CAAhB,CAAA;AACAD,IAAAA,KAAK,CAACF,KAAN,CAAYM,IAAZ,CAAiBD,KAAjB,CAAA,CAAA;AACD,GAAA;;AAED,EAAA,OAAOR,MAAP,CAAA;AACD,CAAA;AAEM,SAASU,gBAAT,CAA0BC,GAA1B,EAAiDC,QAAjD,EAAoE;AACzE,EAAO,OAAA,UAAClB,OAAD,EAA2B;AAC9BkB,IAAAA,QAAD,CAAkBC,QAAlB,CAA2B,UAAcC,GAAd,EAAmC;AAAA,MAAA,IAAA,SAAA,CAAA;;AAC7D,MAAA,OAAAC,oCAAA,CAAA,EAAA,EACKD,GADL,GAAA,SAAA,GAAA,EAAA,EAAA,SAAA,CAEGH,GAFH,CAAA,GAESlB,gBAAgB,CAACC,OAAD,EAAWoB,GAAD,CAAaH,GAAb,CAAV,CAFzB,EAAA,SAAA,EAAA,CAAA;AAID,KALA,CAAA,CAAA;AAMF,GAPD,CAAA;AAQD,CAAA;AAIM,SAASK,UAAT,CAA2CC,CAA3C,EAA2D;AAChE,EAAOA,OAAAA,CAAC,YAAYC,QAApB,CAAA;AACD,CAAA;AAEM,SAASC,SAAT,CACLrB,GADK,EAELsB,WAFK,EAGL;AACA,EAAMC,IAAAA,IAAa,GAAG,EAAtB,CAAA;;AAEA,EAAA,IAAMC,OAAO,GAAG,SAAVA,OAAU,CAACC,MAAD,EAAqB;AACnCA,IAAAA,MAAM,CAACC,OAAP,CAAe,UAAAhB,IAAI,EAAI;AACrBa,MAAAA,IAAI,CAACZ,IAAL,CAAUD,IAAV,CAAA,CAAA;AACA,MAAA,IAAMiB,QAAQ,GAAGL,WAAW,CAACZ,IAAD,CAA5B,CAAA;;AACA,MAAA,IAAIiB,QAAJ,IAAA,IAAA,IAAIA,QAAQ,CAAElB,MAAd,EAAsB;AACpBe,QAAAA,OAAO,CAACG,QAAD,CAAP,CAAA;AACD,OAAA;AACF,KAND,CAAA,CAAA;AAOD,GARD,CAAA;;AAUAH,EAAAA,OAAO,CAACxB,GAAD,CAAP,CAAA;AAEA,EAAA,OAAOuB,IAAP,CAAA;AACD,CAAA;AAOD;AACO,IAAMK,UAA0B,GAAG,SAA7BA,UAA6B,CAACC,OAAD,EAAUC,MAAV,EAAqB;AAC7D,EAAA,IAAIZ,UAAU,CAACY,MAAD,CAAd,EAAwB;AACtB,IAAOA,OAAAA,MAAM,CAACD,OAAD,CAAb,CAAA;AACD,GAAA;;AAED,EAAA,OAAAZ,oCAAA,CAAA,EAAA,EACKY,OADL,EAEMC,MAFN,IAEMA,IAAAA,GAAAA,MAFN,GAEgB,EAFhB,CAAA,CAAA;AAID,EATM;AAWA,SAASC,IAAT,CACLC,OADK,EAELC,EAFK,EAGLC,IAHK,EAQU;AACf,EAAIC,IAAAA,IAAW,GAAG,EAAlB,CAAA;AACA,EAAA,IAAIC,MAAJ,CAAA;AAEA,EAAA,OAAO,YAAM;AACX,IAAA,IAAIC,OAAJ,CAAA;AACA,IAAA,IAAIH,IAAI,CAACrB,GAAL,IAAYqB,IAAI,CAACI,KAArB,EAA4BD,OAAO,GAAGE,IAAI,CAACC,GAAL,EAAV,CAAA;AAE5B,IAAMC,IAAAA,OAAO,GAAGT,OAAO,EAAvB,CAAA;AAEA,IAAA,IAAMU,WAAW,GACfD,OAAO,CAAChC,MAAR,KAAmB0B,IAAI,CAAC1B,MAAxB,IACAgC,OAAO,CAACE,IAAR,CAAa,UAACC,GAAD,EAAWC,KAAX,EAAA;AAAA,MAAA,OAA6BV,IAAI,CAACU,KAAD,CAAJ,KAAgBD,GAA7C,CAAA;AAAA,KAAb,CAFF,CAAA;;AAIA,IAAA,IAAIF,WAAJ,EAAiB;AACf,MAAII,IAAAA,SAAS,GAAGV,MAAhB,CAAA;AACA,MAAA,IAAIW,UAAJ,CAAA;AACA,MAAA,IAAIb,IAAI,CAACrB,GAAL,IAAYqB,IAAI,CAACI,KAArB,EAA4BS,UAAU,GAAGR,IAAI,CAACC,GAAL,EAAb,CAAA;AAC5BJ,MAAAA,MAAM,GAAGH,EAAE,CAAF,KAAA,CAAA,KAAA,CAAA,EAAMQ,OAAN,CAAT,CAAA;AACAN,MAAAA,IAAI,GAAGM,OAAP,CAAA;AACAP,MAAAA,IAAI,IAAA,IAAJ,GAAAA,KAAAA,CAAAA,GAAAA,IAAI,CAAEc,QAAN,IAAAd,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAI,CAAEc,QAAN,CAAiBZ,MAAjB,EAAyBU,SAAzB,CAAA,CAAA;;AAEA,MAAA,IAAIZ,IAAI,CAACrB,GAAL,IAAYqB,IAAI,CAACI,KAArB,EAA4B;AAC1B,QAAA,IAAIJ,IAAJ,IAAIA,IAAAA,IAAAA,IAAI,CAAEI,KAAN,EAAJ,EAAmB;AACjB,UAAA,IAAMW,UAAU,GAAGC,IAAI,CAACC,KAAL,CAAW,CAACZ,IAAI,CAACC,GAAL,EAAaH,GAAAA,OAAd,IAA0B,GAArC,IAA4C,GAA/D,CAAA;AACA,UAAA,IAAMe,aAAa,GACjBF,IAAI,CAACC,KAAL,CAAW,CAACZ,IAAI,CAACC,GAAL,EAAaO,GAAAA,UAAd,IAA6B,GAAxC,IAA+C,GADjD,CAAA;AAEA,UAAA,IAAMM,mBAAmB,GAAGD,aAAa,GAAG,EAA5C,CAAA;;AAEA,UAAME,IAAAA,GAAG,GAAG,SAANA,GAAM,CAACC,GAAD,EAAuBC,GAAvB,EAAuC;AACjDD,YAAAA,GAAG,GAAGE,MAAM,CAACF,GAAD,CAAZ,CAAA;;AACA,YAAA,OAAOA,GAAG,CAAC9C,MAAJ,GAAa+C,GAApB,EAAyB;AACvBD,cAAAA,GAAG,GAAG,GAAA,GAAMA,GAAZ,CAAA;AACD,aAAA;;AACD,YAAA,OAAOA,GAAP,CAAA;AACD,WAND,CAAA;;AAQAG,UAAAA,OAAO,CAACC,IAAR,eACSL,GAAG,CAACF,aAAD,EAAgB,CAAhB,CADZ,GAAA,IAAA,GACmCE,GAAG,CAACL,UAAD,EAAa,CAAb,CADtC,uGAKeC,IAAI,CAACU,GAAL,CACX,CADW,EAEXV,IAAI,CAACW,GAAL,CAAS,MAAM,GAAMR,GAAAA,mBAArB,EAA0C,GAA1C,CAFW,CALf,GAAA,gBAAA,EASEnB,IATF,IASEA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAI,CAAErB,GATR,EAAAI,oCAAA,CAAA;AAWIR,YAAAA,MAAM,EAAK0B,IAAI,CAAC1B,MAAV,GAAA,MAAA,GAAuBgC,OAAO,CAAChC,MAAAA;AAXzC,WAYOgC,EAAAA,OAAO,CACPqB,GADA,CACI,UAACC,CAAD,EAAIlB,KAAJ,EAAc;AACjB,YAAIV,IAAAA,IAAI,CAACU,KAAD,CAAJ,KAAgBJ,OAAO,CAACI,KAAD,CAA3B,EAAoC;AAClC,cAAA,OAAO,CAACA,KAAD,EAAQV,IAAI,CAACU,KAAD,CAAZ,EAAqBJ,OAAO,CAACI,KAAD,CAA5B,CAAP,CAAA;AACD,aAAA;;AAED,YAAA,OAAO,KAAP,CAAA;AACD,WAPA,CAAA,CAQAmB,MARA,CAQOC,OARP,EASAC,MATA,CAUC,UAACC,IAAD,EAAA,IAAA,EAAA;AAAA,YAAA,IAAA,SAAA,CAAA;;AAAA,YAAA,IAAQC,CAAR,GAAA,IAAA,CAAA,CAAA,CAAA;AAAA,gBAAWC,CAAX,GAAA,IAAA,CAAA,CAAA,CAAA,CAAA;AAAA,YAAA,OAAApD,oCAAA,CAAA,EAAA,EACKkD,IADL,GAAA,SAAA,GAAA,EAAA,EAAA,SAAA,CAEGC,CAFH,CAAA,GAEOC,CAFP,EAAA,SAAA,EAAA,CAAA;AAAA,WAVD,EAcC,EAdD,CAZP,EAAA;AA4BIC,YAAAA,MAAM,EAANA,MAAAA;AA5BJ,WAAA,CAAA,CAAA,CAAA;AA+BD,SAAA;AACF,OAAA;;AAEDxB,MAAAA,SAAS,GAAGyB,SAAZ,CAAA;AACD,KAAA;;AAED,IAAA,OAAOnC,MAAP,CAAA;AACD,GAvED,CAAA;AAwED,CAAA;AAIM,SAASoC,eAAT,CACLxC,OADK,EAELyC,eAFK,EAGLC,QAHK,EAQLxC,IARK,EAoBU;AAAA,EAAA,IAAA,aAAA,CAAA;;AACf,EAAA,IAAIyC,OAAJ,CAAA;AACA,EAAA,IAAIxC,IAAJ,CAAA;AACA,EAAA,IAAIC,MAAJ,CAAA;AACA,EAAA,IAAIwC,aAAJ,CAAA;AACA,EAAIC,IAAAA,KAAe,GAAG,EAAtB,CAAA;AACA,EAAIC,IAAAA,cAAc,GAAG,CAArB,CAAA;AACA,EAAA,IAAIC,eAAJ,CAAA;AACA,EAAIC,IAAAA,UAAU,GAAG,CAAjB,CAAA;AACA,EAAIC,IAAAA,QAAQ,GAAG,CAAf,CAAA;AACA,EAAIC,IAAAA,OAAO,GAAG,KAAd,CAAA;AACA,EAAA,IAAIC,QAAJ,CAAA;AAEA,EAAA,IAAMC,OAAO,GAAGlD,CAAAA,aAAAA,GAAAA,IAAI,CAACkD,OAAR,4BAAmB,GAAhC,CAAA;;AAEA,EAAMC,IAAAA,UAAU,GAAG,SAAbA,UAAa,CAACC,YAAD,EAAwBC,cAAxB,EAAqD;AACtEN,IAAAA,QAAQ,GAAG,CAAA,GAAIJ,KAAK,CAACpE,MAAN,GAAeqE,cAA9B,CAAA;AACA5C,IAAAA,IAAI,CAACmD,UAAL,CAAgBJ,QAAhB,EAA0BK,YAA1B,EAAwCC,cAAxC,CAAA,CAAA;AACD,GAHD,CAAA;;AAKA,EAAA,OAAO,YAAM;AACX,IAAA,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAACC,MAAD,EAAoB;AACrCX,MAAAA,cAAc,EAAA,CAAA;AACdD,MAAAA,KAAK,CAAClE,IAAN,CAAW8E,MAAX,CAAA,CAAA;AACD,KAHD,CAAA;;AAKA,IAAMhD,IAAAA,OAAO,GAAGT,OAAO,EAAvB,CAAA;AAEA,IAAI0D,IAAAA,KAAK,GAAG,KAAZ,CAAA;;AAEA,IAAI,IAAA,CAACvD,IAAL,EAAW;AACTuD,MAAAA,KAAK,GAAG,IAAR,CAAA;AACAvD,MAAAA,IAAI,GAAG,EAAP,CAAA;AACAC,MAAAA,MAAM,GAAGqC,eAAe,CAAf,KAAA,CAAA,KAAA,CAAA,EAAmBhC,OAAnB,CAAT,CAAA;AACD,KAAA;;AAED,IAAA,IAAMC,WAAW,GACfD,OAAO,CAAChC,MAAR,KAAmB0B,IAAI,CAAC1B,MAAxB,IACAgC,OAAO,CAACE,IAAR,CAAa,UAACC,GAAD,EAAWC,KAAX,EAAA;AAAA,MAAA,OAA6BV,IAAI,CAACU,KAAD,CAAJ,KAAgBD,GAA7C,CAAA;AAAA,KAAb,CAFF,CAAA;;AAIA,IAAA,IAAIF,WAAJ,EAAiB;AACfiD,MAAAA,kBAAkB,CAACR,QAAD,CAAlB,CAAA;AACAR,MAAAA,OAAO,GAAGxC,IAAV,CAAA;AACAA,MAAAA,IAAI,GAAGM,OAAP,CAAA;AACAqC,MAAAA,cAAc,GAAG,CAAjB,CAAA;AACAD,MAAAA,KAAK,GAAG,EAAR,CAAA;AACAD,MAAAA,aAAa,GAAG;AAAEgB,QAAAA,OAAO,EAAEnB,eAAe,CAAA,KAAf,SAAmBhC,OAAnB,CAAA;AAAX,OAAhB,CAAA;AACAsC,MAAAA,eAAe,GAAGxC,IAAI,CAACC,GAAL,EAAlB,CAAA;AACAkC,MAAAA,QAAQ,CAAR,KAAA,CAAA,KAAA,CAAA,EAAYjC,OAAZ,CAAqBmC,CAAAA,aAArB,EAAoCY,UAApC,CAAA,CAAA;AACD,KAAA;;AAED,IAAA,IAAMK,YAAY,GAAG,SAAfA,YAAe,GAAM;AACzBF,MAAAA,kBAAkB,CAACR,QAAD,CAAlB,CAAA;;AAEA,MAAA,IAAIjD,IAAI,CAACrB,GAAL,IAAYqB,IAAI,CAACI,KAArB,EAA4B;AAC1B,QAAA,IAAIJ,IAAJ,IAAIA,IAAAA,IAAAA,IAAI,CAAEI,KAAN,EAAJ,EAAmB;AACjB,UAAA,IAAMc,aAAa,GACjBF,IAAI,CAACC,KAAL,CAAW,CAACZ,IAAI,CAACC,GAAL,EAAauC,GAAAA,eAAd,IAAkC,GAA7C,IAAoD,GADtD,CAAA;AAEA,UAAA,IAAM1B,mBAAmB,GAAGD,aAAa,GAAG4B,UAAhB,GAA6B,EAAzD,CAAA;AAEAtB,UAAAA,OAAO,CAACC,IAAR,CACSP,WAAAA,GAAAA,aADT,cAC+B4B,UAD/B,GAAA,WAAA,GACqD9B,IAAI,CAACC,KAAL,CACjDC,aAAa,GAAG4B,UADiC,CADrD,0FAOS9B,IAAI,CAACU,GAAL,CACX,CADW,EAEXV,IAAI,CAACW,GAAL,CAAS,MAAM,GAAMR,GAAAA,mBAArB,EAA0C,GAA1C,CAFW,CAPT,GAAA,gBAAA,EAWEnB,IAXF,IAWEA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAI,CAAErB,GAXR,EAAAI,oCAAA,CAAA;AAaIR,YAAAA,MAAM,EAAKkE,OAAO,CAAClE,MAAb,GAAA,MAAA,GAA0B0B,IAAI,CAAC1B,MAAAA;AAbzC,WAcO0B,EAAAA,IAAI,CACJ2B,GADA,CACI,UAACC,CAAD,EAAIlB,KAAJ,EAAc;AACjB,YAAI8B,IAAAA,OAAO,CAAC9B,KAAD,CAAP,KAAmBV,IAAI,CAACU,KAAD,CAA3B,EAAoC;AAClC,cAAA,OAAO,CAACA,KAAD,EAAQ8B,OAAO,CAAC9B,KAAD,CAAf,EAAwBV,IAAI,CAACU,KAAD,CAA5B,CAAP,CAAA;AACD,aAAA;;AAED,YAAA,OAAO,KAAP,CAAA;AACD,WAPA,CAAA,CAQAmB,MARA,CAQOC,OARP,EASAC,MATA,CAUC,UAACC,IAAD,EAAA,KAAA,EAAA;AAAA,YAAA,IAAA,SAAA,CAAA;;AAAA,YAAA,IAAQC,CAAR,GAAA,KAAA,CAAA,CAAA,CAAA;AAAA,gBAAWC,CAAX,GAAA,KAAA,CAAA,CAAA,CAAA,CAAA;AAAA,YAAA,OAAApD,oCAAA,CAAA,EAAA,EACKkD,IADL,GAAA,SAAA,GAAA,EAAA,EAAA,SAAA,CAEGC,CAFH,CAAA,GAEOC,CAFP,EAAA,SAAA,EAAA,CAAA;AAAA,WAVD,EAcC,EAdD,CAdP,EAAA;AA8BIC,YAAAA,MAAM,EAANA,MAAAA;AA9BJ,WAAA,CAAA,CAAA,CAAA;AAiCD,SAAA;AACF,OAAA;;AAEDY,MAAAA,OAAO,GAAG,KAAV,CAAA;AACA,MAAIK,IAAAA,cAAc,GAAGnD,MAArB,CAAA;AACAA,MAAAA,MAAM,GAAGwC,aAAa,CAACgB,OAAvB,CAAA;AACAP,MAAAA,UAAU,CAACjD,MAAD,EAASmD,cAAT,CAAV,CAAA;AACArD,MAAAA,IAAI,CAACc,QAAL,CAAcZ,MAAd,EAAsBmD,cAAtB,CAAA,CAAA;AACD,KAlDD,CAAA;;AAoDA,IAAA,IAAIrD,IAAI,CAAC4D,WAAL,IAAoBJ,KAAxB,EAA+B;AAC7BV,MAAAA,UAAU,GAAG,CAAb,CAAA;AACAU,MAAAA,KAAK,GAAG,KAAR,CAAA;;AACA,MAAA,KAAK,IAAIlF,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqE,KAAK,CAACpE,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;AACrCqE,QAAAA,KAAK,CAACrE,CAAD,CAAL,EAAA,CAAA;AACD,OAAA;;AACDqE,MAAAA,KAAK,GAAG,EAAR,CAAA;AACAgB,MAAAA,YAAY,EAAA,CAAA;AACb,KARD,MAQO,IAAI,CAACX,OAAD,IAAYL,KAAK,CAACpE,MAAtB,EAA8B;AACnCkF,MAAAA,kBAAkB,CAACR,QAAD,CAAlB,CAAA;AACAD,MAAAA,OAAO,GAAG,IAAV,CAAA;AACAF,MAAAA,UAAU,GAAG,CAAb,CAAA;;AAEA,MAAA,IAAMe,QAAQ,GAAG,SAAXA,QAAW,CAACC,QAAD,EAAmB;AAClC,QAAOnB,OAAAA,KAAK,CAACpE,MAAN,IAAgBuF,QAAQ,CAACC,aAAT,EAA2B,GAAA,CAAlD,EAAqD;AACnDpB,UAAAA,KAAK,CAACqB,KAAN,EAAA,EAAA,CAAA;AACD,SAAA;;AAED,QAAA,IAAI,CAACrB,KAAK,CAACpE,MAAX,EAAmB;AACjBoF,UAAAA,YAAY,EAAA,CAAA;AACb,SAFD,MAEO;AACL,UAAA,EAAEb,UAAF,CAAA;AACAK,UAAAA,UAAU,CAACT,aAAa,CAACgB,OAAf,EAAwBxD,MAAxB,CAAV,CAAA;AACA+C,UAAAA,QAAQ,GAAGgB,mBAAmB,CAACJ,QAAD,EAAW;AAAEX,YAAAA,OAAO,EAAPA,OAAAA;AAAF,WAAX,CAA9B,CAAA;AACD,SAAA;AACF,OAZD,CAAA;;AAcAD,MAAAA,QAAQ,GAAGgB,mBAAmB,CAACJ,QAAD,EAAW;AAAEX,QAAAA,OAAO,EAAPA,OAAAA;AAAF,OAAX,CAA9B,CAAA;AACD,KAAA;;AAED,IAAA,OAAOhD,MAAP,CAAA;AACD,GAlHD,CAAA;AAmHD;;;;;;;;;;;;"}
|