@tanstack/react-table 8.5.28 → 8.6.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.production.js","sources":["../../../table-core/build/esm/index.js","../../src/index.tsx"],"sourcesContent":["/**\n * table-core\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\n// Is this type a tuple?\n\n// If this type is a tuple, what indices are allowed?\n\n///\n\nfunction functionalUpdate(updater, input) {\n return typeof updater === 'function' ? updater(input) : updater;\n}\nfunction noop() {\n //\n}\nfunction makeStateUpdater(key, instance) {\n return updater => {\n instance.setState(old => {\n return {\n ...old,\n [key]: functionalUpdate(updater, old[key])\n };\n });\n };\n}\nfunction isFunction(d) {\n return d instanceof Function;\n}\nfunction flattenBy(arr, getChildren) {\n const flat = [];\n const recurse = subArr => {\n subArr.forEach(item => {\n flat.push(item);\n const children = getChildren(item);\n if (children != null && children.length) {\n recurse(children);\n }\n });\n };\n recurse(arr);\n return flat;\n}\nfunction memo(getDeps, fn, opts) {\n let deps = [];\n let result;\n return () => {\n let depTime;\n if (opts.key && opts.debug) depTime = Date.now();\n const newDeps = getDeps();\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n if (!depsChanged) {\n return result;\n }\n deps = newDeps;\n let resultTime;\n if (opts.key && opts.debug) resultTime = Date.now();\n result = fn(...newDeps);\n opts == null ? void 0 : opts.onChange == null ? void 0 : opts.onChange(result);\n if (opts.key && opts.debug) {\n if (opts != null && opts.debug()) {\n const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;\n const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;\n const resultFpsPercentage = resultEndTime / 16;\n const pad = (str, num) => {\n str = String(str);\n while (str.length < num) {\n str = ' ' + str;\n }\n return str;\n };\n console.info(`%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`, `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(0, Math.min(120 - 120 * resultFpsPercentage, 120))}deg 100% 31%);`, opts == null ? void 0 : opts.key);\n }\n }\n return result;\n };\n}\n\nfunction createColumn(table, columnDef, depth, parent) {\n const defaultColumn = table._getDefaultColumnDef();\n const resolvedColumnDef = {\n ...defaultColumn,\n ...columnDef\n };\n const accessorKey = resolvedColumnDef.accessorKey;\n let id = resolvedColumnDef.id ?? (accessorKey ? accessorKey.replace('.', '_') : undefined) ?? (typeof resolvedColumnDef.header === 'string' ? resolvedColumnDef.header : undefined);\n let accessorFn;\n if (resolvedColumnDef.accessorFn) {\n accessorFn = resolvedColumnDef.accessorFn;\n } else if (accessorKey) {\n // Support deep accessor keys\n if (accessorKey.includes('.')) {\n accessorFn = originalRow => {\n let result = originalRow;\n for (const key of accessorKey.split('.')) {\n result = result[key];\n if (process.env.NODE_ENV !== 'production' && result === undefined) {\n throw new Error(`\"${key}\" in deeply nested key \"${accessorKey}\" returned undefined.`);\n }\n }\n return result;\n };\n } else {\n accessorFn = originalRow => originalRow[resolvedColumnDef.accessorKey];\n }\n }\n if (!id) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(resolvedColumnDef.accessorFn ? `Columns require an id when using an accessorFn` : `Columns require an id when using a non-string header`);\n }\n throw new Error();\n }\n let column = {\n id: `${String(id)}`,\n accessorFn,\n parent: parent,\n depth,\n columnDef: resolvedColumnDef,\n columns: [],\n getFlatColumns: memo(() => [true], () => {\n var _column$columns;\n return [column, ...((_column$columns = column.columns) == null ? void 0 : _column$columns.flatMap(d => d.getFlatColumns()))];\n }, {\n key: process.env.NODE_ENV === 'production' && 'column.getFlatColumns',\n debug: () => table.options.debugAll ?? table.options.debugColumns\n }),\n getLeafColumns: memo(() => [table._getOrderColumnsFn()], orderColumns => {\n var _column$columns2;\n if ((_column$columns2 = column.columns) != null && _column$columns2.length) {\n let leafColumns = column.columns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }\n return [column];\n }, {\n key: process.env.NODE_ENV === 'production' && 'column.getLeafColumns',\n debug: () => table.options.debugAll ?? table.options.debugColumns\n })\n };\n column = table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.createColumn == null ? void 0 : feature.createColumn(column, table));\n }, column);\n\n // Yes, we have to convert table to uknown, because we know more than the compiler here.\n return column;\n}\n\n//\n\nfunction createHeader(table, column, options) {\n const id = options.id ?? column.id;\n let header = {\n id,\n column,\n index: options.index,\n isPlaceholder: !!options.isPlaceholder,\n placeholderId: options.placeholderId,\n depth: options.depth,\n subHeaders: [],\n colSpan: 0,\n rowSpan: 0,\n headerGroup: null,\n getLeafHeaders: () => {\n const leafHeaders = [];\n const recurseHeader = h => {\n if (h.subHeaders && h.subHeaders.length) {\n h.subHeaders.map(recurseHeader);\n }\n leafHeaders.push(h);\n };\n recurseHeader(header);\n return leafHeaders;\n },\n getContext: () => ({\n table,\n header: header,\n column\n })\n };\n table._features.forEach(feature => {\n Object.assign(header, feature.createHeader == null ? void 0 : feature.createHeader(header, table));\n });\n return header;\n}\nconst Headers = {\n createTable: table => {\n return {\n // Header Groups\n\n getHeaderGroups: memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n const leftColumns = (left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) ?? [];\n const rightColumns = (right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) ?? [];\n const centerColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n const headerGroups = buildHeaderGroups(allColumns, [...leftColumns, ...centerColumns, ...rightColumns], table);\n return headerGroups;\n }, {\n key: process.env.NODE_ENV === 'development' && 'getHeaderGroups',\n debug: () => table.options.debugAll ?? table.options.debugHeaders\n }),\n getCenterHeaderGroups: memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n leafColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n return buildHeaderGroups(allColumns, leafColumns, table, 'center');\n }, {\n key: process.env.NODE_ENV === 'development' && 'getCenterHeaderGroups',\n debug: () => table.options.debugAll ?? table.options.debugHeaders\n }),\n getLeftHeaderGroups: memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left], (allColumns, leafColumns, left) => {\n const orderedLeafColumns = (left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) ?? [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'left');\n }, {\n key: process.env.NODE_ENV === 'development' && 'getLeftHeaderGroups',\n debug: () => table.options.debugAll ?? table.options.debugHeaders\n }),\n getRightHeaderGroups: memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.right], (allColumns, leafColumns, right) => {\n const orderedLeafColumns = (right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) ?? [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'right');\n }, {\n key: process.env.NODE_ENV === 'development' && 'getRightHeaderGroups',\n debug: () => table.options.debugAll ?? table.options.debugHeaders\n }),\n // Footer Groups\n\n getFooterGroups: memo(() => [table.getHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getFooterGroups',\n debug: () => table.options.debugAll ?? table.options.debugHeaders\n }),\n getLeftFooterGroups: memo(() => [table.getLeftHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getLeftFooterGroups',\n debug: () => table.options.debugAll ?? table.options.debugHeaders\n }),\n getCenterFooterGroups: memo(() => [table.getCenterHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getCenterFooterGroups',\n debug: () => table.options.debugAll ?? table.options.debugHeaders\n }),\n getRightFooterGroups: memo(() => [table.getRightHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getRightFooterGroups',\n debug: () => table.options.debugAll ?? table.options.debugHeaders\n }),\n // Flat Headers\n\n getFlatHeaders: memo(() => [table.getHeaderGroups()], headerGroups => {\n return headerGroups.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getFlatHeaders',\n debug: () => table.options.debugAll ?? table.options.debugHeaders\n }),\n getLeftFlatHeaders: memo(() => [table.getLeftHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getLeftFlatHeaders',\n debug: () => table.options.debugAll ?? table.options.debugHeaders\n }),\n getCenterFlatHeaders: memo(() => [table.getCenterHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getCenterFlatHeaders',\n debug: () => table.options.debugAll ?? table.options.debugHeaders\n }),\n getRightFlatHeaders: memo(() => [table.getRightHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getRightFlatHeaders',\n debug: () => table.options.debugAll ?? table.options.debugHeaders\n }),\n // Leaf Headers\n\n getCenterLeafHeaders: memo(() => [table.getCenterFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders;\n return !((_header$subHeaders = header.subHeaders) != null && _header$subHeaders.length);\n });\n }, {\n key: process.env.NODE_ENV === 'development' && 'getCenterLeafHeaders',\n debug: () => table.options.debugAll ?? table.options.debugHeaders\n }),\n getLeftLeafHeaders: memo(() => [table.getLeftFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders2;\n return !((_header$subHeaders2 = header.subHeaders) != null && _header$subHeaders2.length);\n });\n }, {\n key: process.env.NODE_ENV === 'development' && 'getLeftLeafHeaders',\n debug: () => table.options.debugAll ?? table.options.debugHeaders\n }),\n getRightLeafHeaders: memo(() => [table.getRightFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders3;\n return !((_header$subHeaders3 = header.subHeaders) != null && _header$subHeaders3.length);\n });\n }, {\n key: process.env.NODE_ENV === 'development' && 'getRightLeafHeaders',\n debug: () => table.options.debugAll ?? table.options.debugHeaders\n }),\n getLeafHeaders: memo(() => [table.getLeftHeaderGroups(), table.getCenterHeaderGroups(), table.getRightHeaderGroups()], (left, center, right) => {\n var _left$, _center$, _right$;\n return [...(((_left$ = left[0]) == null ? void 0 : _left$.headers) ?? []), ...(((_center$ = center[0]) == null ? void 0 : _center$.headers) ?? []), ...(((_right$ = right[0]) == null ? void 0 : _right$.headers) ?? [])].map(header => {\n return header.getLeafHeaders();\n }).flat();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getLeafHeaders',\n debug: () => table.options.debugAll ?? table.options.debugHeaders\n })\n };\n }\n};\nfunction buildHeaderGroups(allColumns, columnsToGroup, table, headerFamily) {\n var _headerGroups$;\n // Find the max depth of the columns:\n // build the leaf column row\n // build each buffer row going up\n // placeholder for non-existent level\n // real column for existing level\n\n let maxDepth = 0;\n const findMaxDepth = function (columns, depth) {\n if (depth === void 0) {\n depth = 1;\n }\n maxDepth = Math.max(maxDepth, depth);\n columns.filter(column => column.getIsVisible()).forEach(column => {\n var _column$columns;\n if ((_column$columns = column.columns) != null && _column$columns.length) {\n findMaxDepth(column.columns, depth + 1);\n }\n }, 0);\n };\n findMaxDepth(allColumns);\n let headerGroups = [];\n const createHeaderGroup = (headersToGroup, depth) => {\n // The header group we are creating\n const headerGroup = {\n depth,\n id: [headerFamily, `${depth}`].filter(Boolean).join('_'),\n headers: []\n };\n\n // The parent columns we're going to scan next\n const pendingParentHeaders = [];\n\n // Scan each column for parents\n headersToGroup.forEach(headerToGroup => {\n // What is the latest (last) parent column?\n\n const latestPendingParentHeader = [...pendingParentHeaders].reverse()[0];\n const isLeafHeader = headerToGroup.column.depth === headerGroup.depth;\n let column;\n let isPlaceholder = false;\n if (isLeafHeader && headerToGroup.column.parent) {\n // The parent header is new\n column = headerToGroup.column.parent;\n } else {\n // The parent header is repeated\n column = headerToGroup.column;\n isPlaceholder = true;\n }\n if (latestPendingParentHeader && (latestPendingParentHeader == null ? void 0 : latestPendingParentHeader.column) === column) {\n // This column is repeated. Add it as a sub header to the next batch\n latestPendingParentHeader.subHeaders.push(headerToGroup);\n } else {\n // This is a new header. Let's create it\n const header = createHeader(table, column, {\n id: [headerFamily, depth, column.id, headerToGroup == null ? void 0 : headerToGroup.id].filter(Boolean).join('_'),\n isPlaceholder,\n placeholderId: isPlaceholder ? `${pendingParentHeaders.filter(d => d.column === column).length}` : undefined,\n depth,\n index: pendingParentHeaders.length\n });\n\n // Add the headerToGroup as a subHeader of the new header\n header.subHeaders.push(headerToGroup);\n // Add the new header to the pendingParentHeaders to get grouped\n // in the next batch\n pendingParentHeaders.push(header);\n }\n headerGroup.headers.push(headerToGroup);\n headerToGroup.headerGroup = headerGroup;\n });\n headerGroups.push(headerGroup);\n if (depth > 0) {\n createHeaderGroup(pendingParentHeaders, depth - 1);\n }\n };\n const bottomHeaders = columnsToGroup.map((column, index) => createHeader(table, column, {\n depth: maxDepth,\n index\n }));\n createHeaderGroup(bottomHeaders, maxDepth - 1);\n headerGroups.reverse();\n\n // headerGroups = headerGroups.filter(headerGroup => {\n // return !headerGroup.headers.every(header => header.isPlaceholder)\n // })\n\n const recurseHeadersForSpans = headers => {\n const filteredHeaders = headers.filter(header => header.column.getIsVisible());\n return filteredHeaders.map(header => {\n let colSpan = 0;\n let rowSpan = 0;\n let childRowSpans = [0];\n if (header.subHeaders && header.subHeaders.length) {\n childRowSpans = [];\n recurseHeadersForSpans(header.subHeaders).forEach(_ref => {\n let {\n colSpan: childColSpan,\n rowSpan: childRowSpan\n } = _ref;\n colSpan += childColSpan;\n childRowSpans.push(childRowSpan);\n });\n } else {\n colSpan = 1;\n }\n const minChildRowSpan = Math.min(...childRowSpans);\n rowSpan = rowSpan + minChildRowSpan;\n header.colSpan = colSpan;\n header.rowSpan = rowSpan;\n return {\n colSpan,\n rowSpan\n };\n });\n };\n recurseHeadersForSpans(((_headerGroups$ = headerGroups[0]) == null ? void 0 : _headerGroups$.headers) ?? []);\n return headerGroups;\n}\n\n//\n\nconst defaultColumnSizing = {\n size: 150,\n minSize: 20,\n maxSize: Number.MAX_SAFE_INTEGER\n};\nconst getDefaultColumnSizingInfoState = () => ({\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n isResizingColumn: false,\n columnSizingStart: []\n});\nconst ColumnSizing = {\n getDefaultColumnDef: () => {\n return defaultColumnSizing;\n },\n getInitialState: state => {\n return {\n columnSizing: {},\n columnSizingInfo: getDefaultColumnSizingInfoState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n columnResizeMode: 'onEnd',\n onColumnSizingChange: makeStateUpdater('columnSizing', table),\n onColumnSizingInfoChange: makeStateUpdater('columnSizingInfo', table)\n };\n },\n createColumn: (column, table) => {\n return {\n getSize: () => {\n const columnSize = table.getState().columnSizing[column.id];\n return Math.min(Math.max(column.columnDef.minSize ?? defaultColumnSizing.minSize, columnSize ?? column.columnDef.size ?? defaultColumnSizing.size), column.columnDef.maxSize ?? defaultColumnSizing.maxSize);\n },\n getStart: position => {\n const columns = !position ? table.getVisibleLeafColumns() : position === 'left' ? table.getLeftVisibleLeafColumns() : table.getRightVisibleLeafColumns();\n const index = columns.findIndex(d => d.id === column.id);\n if (index > 0) {\n const prevSiblingColumn = columns[index - 1];\n return prevSiblingColumn.getStart(position) + prevSiblingColumn.getSize();\n }\n return 0;\n },\n resetSize: () => {\n table.setColumnSizing(_ref => {\n let {\n [column.id]: _,\n ...rest\n } = _ref;\n return rest;\n });\n },\n getCanResize: () => {\n return (column.columnDef.enableResizing ?? true) && (table.options.enableColumnResizing ?? true);\n },\n getIsResizing: () => {\n return table.getState().columnSizingInfo.isResizingColumn === column.id;\n }\n };\n },\n createHeader: (header, table) => {\n return {\n getSize: () => {\n let sum = 0;\n const recurse = header => {\n if (header.subHeaders.length) {\n header.subHeaders.forEach(recurse);\n } else {\n sum += header.column.getSize() ?? 0;\n }\n };\n recurse(header);\n return sum;\n },\n getStart: () => {\n if (header.index > 0) {\n const prevSiblingHeader = header.headerGroup.headers[header.index - 1];\n return prevSiblingHeader.getStart() + prevSiblingHeader.getSize();\n }\n return 0;\n },\n getResizeHandler: () => {\n const column = table.getColumn(header.column.id);\n const canResize = column.getCanResize();\n return e => {\n if (!canResize) {\n return;\n }\n e.persist == null ? void 0 : e.persist();\n if (isTouchStartEvent(e)) {\n // lets not respond to multiple touches (e.g. 2 or 3 fingers)\n if (e.touches && e.touches.length > 1) {\n return;\n }\n }\n const startSize = header.getSize();\n const columnSizingStart = header ? header.getLeafHeaders().map(d => [d.column.id, d.column.getSize()]) : [[column.id, column.getSize()]];\n const clientX = isTouchStartEvent(e) ? Math.round(e.touches[0].clientX) : e.clientX;\n const updateOffset = (eventType, clientXPos) => {\n if (typeof clientXPos !== 'number') {\n return;\n }\n let newColumnSizing = {};\n table.setColumnSizingInfo(old => {\n const deltaOffset = clientXPos - ((old == null ? void 0 : old.startOffset) ?? 0);\n const deltaPercentage = Math.max(deltaOffset / ((old == null ? void 0 : old.startSize) ?? 0), -0.999999);\n old.columnSizingStart.forEach(_ref2 => {\n let [columnId, headerSize] = _ref2;\n newColumnSizing[columnId] = Math.round(Math.max(headerSize + headerSize * deltaPercentage, 0) * 100) / 100;\n });\n return {\n ...old,\n deltaOffset,\n deltaPercentage\n };\n });\n if (table.options.columnResizeMode === 'onChange' || eventType === 'end') {\n table.setColumnSizing(old => ({\n ...old,\n ...newColumnSizing\n }));\n }\n };\n const onMove = clientXPos => updateOffset('move', clientXPos);\n const onEnd = clientXPos => {\n updateOffset('end', clientXPos);\n table.setColumnSizingInfo(old => ({\n ...old,\n isResizingColumn: false,\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n columnSizingStart: []\n }));\n };\n const mouseEvents = {\n moveHandler: e => onMove(e.clientX),\n upHandler: e => {\n document.removeEventListener('mousemove', mouseEvents.moveHandler);\n document.removeEventListener('mouseup', mouseEvents.upHandler);\n onEnd(e.clientX);\n }\n };\n const touchEvents = {\n moveHandler: e => {\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onMove(e.touches[0].clientX);\n return false;\n },\n upHandler: e => {\n var _e$touches$;\n document.removeEventListener('touchmove', touchEvents.moveHandler);\n document.removeEventListener('touchend', touchEvents.upHandler);\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onEnd((_e$touches$ = e.touches[0]) == null ? void 0 : _e$touches$.clientX);\n }\n };\n const passiveIfSupported = passiveEventSupported() ? {\n passive: false\n } : false;\n if (isTouchStartEvent(e)) {\n document.addEventListener('touchmove', touchEvents.moveHandler, passiveIfSupported);\n document.addEventListener('touchend', touchEvents.upHandler, passiveIfSupported);\n } else {\n document.addEventListener('mousemove', mouseEvents.moveHandler, passiveIfSupported);\n document.addEventListener('mouseup', mouseEvents.upHandler, passiveIfSupported);\n }\n table.setColumnSizingInfo(old => ({\n ...old,\n startOffset: clientX,\n startSize,\n deltaOffset: 0,\n deltaPercentage: 0,\n columnSizingStart,\n isResizingColumn: column.id\n }));\n };\n }\n };\n },\n createTable: table => {\n return {\n setColumnSizing: updater => table.options.onColumnSizingChange == null ? void 0 : table.options.onColumnSizingChange(updater),\n setColumnSizingInfo: updater => table.options.onColumnSizingInfoChange == null ? void 0 : table.options.onColumnSizingInfoChange(updater),\n resetColumnSizing: defaultState => {\n table.setColumnSizing(defaultState ? {} : table.initialState.columnSizing ?? {});\n },\n resetHeaderSizeInfo: defaultState => {\n table.setColumnSizingInfo(defaultState ? getDefaultColumnSizingInfoState() : table.initialState.columnSizingInfo ?? getDefaultColumnSizingInfoState());\n },\n getTotalSize: () => {\n var _table$getHeaderGroup;\n return ((_table$getHeaderGroup = table.getHeaderGroups()[0]) == null ? void 0 : _table$getHeaderGroup.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) ?? 0;\n },\n getLeftTotalSize: () => {\n var _table$getLeftHeaderG;\n return ((_table$getLeftHeaderG = table.getLeftHeaderGroups()[0]) == null ? void 0 : _table$getLeftHeaderG.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) ?? 0;\n },\n getCenterTotalSize: () => {\n var _table$getCenterHeade;\n return ((_table$getCenterHeade = table.getCenterHeaderGroups()[0]) == null ? void 0 : _table$getCenterHeade.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) ?? 0;\n },\n getRightTotalSize: () => {\n var _table$getRightHeader;\n return ((_table$getRightHeader = table.getRightHeaderGroups()[0]) == null ? void 0 : _table$getRightHeader.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) ?? 0;\n }\n };\n }\n};\nlet passiveSupported = null;\nfunction passiveEventSupported() {\n if (typeof passiveSupported === 'boolean') return passiveSupported;\n let supported = false;\n try {\n const options = {\n get passive() {\n supported = true;\n return false;\n }\n };\n const noop = () => {};\n window.addEventListener('test', noop, options);\n window.removeEventListener('test', noop);\n } catch (err) {\n supported = false;\n }\n passiveSupported = supported;\n return passiveSupported;\n}\nfunction isTouchStartEvent(e) {\n return e.type === 'touchstart';\n}\n\n//\n\nconst Expanding = {\n getInitialState: state => {\n return {\n expanded: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onExpandedChange: makeStateUpdater('expanded', table),\n paginateExpandedRows: true\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n return {\n _autoResetExpanded: () => {\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if (table.options.autoResetAll ?? table.options.autoResetExpanded ?? !table.options.manualExpanding) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetExpanded();\n queued = false;\n });\n }\n },\n setExpanded: updater => table.options.onExpandedChange == null ? void 0 : table.options.onExpandedChange(updater),\n toggleAllRowsExpanded: expanded => {\n if (expanded ?? !table.getIsAllRowsExpanded()) {\n table.setExpanded(true);\n } else {\n table.setExpanded({});\n }\n },\n resetExpanded: defaultState => {\n var _table$initialState;\n table.setExpanded(defaultState ? {} : ((_table$initialState = table.initialState) == null ? void 0 : _table$initialState.expanded) ?? {});\n },\n getCanSomeRowsExpand: () => {\n return table.getRowModel().flatRows.some(row => row.getCanExpand());\n },\n getToggleAllRowsExpandedHandler: () => {\n return e => {\n e.persist == null ? void 0 : e.persist();\n table.toggleAllRowsExpanded();\n };\n },\n getIsSomeRowsExpanded: () => {\n const expanded = table.getState().expanded;\n return expanded === true || Object.values(expanded).some(Boolean);\n },\n getIsAllRowsExpanded: () => {\n const expanded = table.getState().expanded;\n\n // If expanded is true, save some cycles and return true\n if (typeof expanded === 'boolean') {\n return expanded === true;\n }\n if (!Object.keys(expanded).length) {\n return false;\n }\n\n // If any row is not expanded, return false\n if (table.getRowModel().flatRows.some(row => !row.getIsExpanded())) {\n return false;\n }\n\n // They must all be expanded :shrug:\n return true;\n },\n getExpandedDepth: () => {\n let maxDepth = 0;\n const rowIds = table.getState().expanded === true ? Object.keys(table.getRowModel().rowsById) : Object.keys(table.getState().expanded);\n rowIds.forEach(id => {\n const splitId = id.split('.');\n maxDepth = Math.max(maxDepth, splitId.length);\n });\n return maxDepth;\n },\n getPreExpandedRowModel: () => table.getSortedRowModel(),\n getExpandedRowModel: () => {\n if (!table._getExpandedRowModel && table.options.getExpandedRowModel) {\n table._getExpandedRowModel = table.options.getExpandedRowModel(table);\n }\n if (table.options.manualExpanding || !table._getExpandedRowModel) {\n return table.getPreExpandedRowModel();\n }\n return table._getExpandedRowModel();\n }\n };\n },\n createRow: (row, table) => {\n return {\n toggleExpanded: expanded => {\n table.setExpanded(old => {\n const exists = old === true ? true : !!(old != null && old[row.id]);\n let oldExpanded = {};\n if (old === true) {\n Object.keys(table.getRowModel().rowsById).forEach(rowId => {\n oldExpanded[rowId] = true;\n });\n } else {\n oldExpanded = old;\n }\n expanded = expanded ?? !exists;\n if (!exists && expanded) {\n return {\n ...oldExpanded,\n [row.id]: true\n };\n }\n if (exists && !expanded) {\n const {\n [row.id]: _,\n ...rest\n } = oldExpanded;\n return rest;\n }\n return old;\n });\n },\n getIsExpanded: () => {\n const expanded = table.getState().expanded;\n return !!((table.options.getIsRowExpanded == null ? void 0 : table.options.getIsRowExpanded(row)) ?? (expanded === true || expanded != null && expanded[row.id]));\n },\n getCanExpand: () => {\n var _row$subRows;\n return (table.options.getRowCanExpand == null ? void 0 : table.options.getRowCanExpand(row)) ?? ((table.options.enableExpanding ?? true) && !!((_row$subRows = row.subRows) != null && _row$subRows.length));\n },\n getToggleExpandedHandler: () => {\n const canExpand = row.getCanExpand();\n return () => {\n if (!canExpand) return;\n row.toggleExpanded();\n };\n }\n };\n }\n};\n\nconst includesString = (row, columnId, filterValue) => {\n var _row$getValue;\n const search = filterValue.toLowerCase();\n return Boolean((_row$getValue = row.getValue(columnId)) == null ? void 0 : _row$getValue.toLowerCase().includes(search));\n};\nincludesString.autoRemove = val => testFalsey(val);\nconst includesStringSensitive = (row, columnId, filterValue) => {\n var _row$getValue2;\n return Boolean((_row$getValue2 = row.getValue(columnId)) == null ? void 0 : _row$getValue2.includes(filterValue));\n};\nincludesStringSensitive.autoRemove = val => testFalsey(val);\nconst equalsString = (row, columnId, filterValue) => {\n var _row$getValue3;\n return ((_row$getValue3 = row.getValue(columnId)) == null ? void 0 : _row$getValue3.toLowerCase()) === filterValue.toLowerCase();\n};\nequalsString.autoRemove = val => testFalsey(val);\nconst arrIncludes = (row, columnId, filterValue) => {\n var _row$getValue4;\n return (_row$getValue4 = row.getValue(columnId)) == null ? void 0 : _row$getValue4.includes(filterValue);\n};\narrIncludes.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst arrIncludesAll = (row, columnId, filterValue) => {\n return !filterValue.some(val => {\n var _row$getValue5;\n return !((_row$getValue5 = row.getValue(columnId)) != null && _row$getValue5.includes(val));\n });\n};\narrIncludesAll.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst arrIncludesSome = (row, columnId, filterValue) => {\n return filterValue.some(val => {\n var _row$getValue6;\n return (_row$getValue6 = row.getValue(columnId)) == null ? void 0 : _row$getValue6.includes(val);\n });\n};\narrIncludesSome.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst equals = (row, columnId, filterValue) => {\n return row.getValue(columnId) === filterValue;\n};\nequals.autoRemove = val => testFalsey(val);\nconst weakEquals = (row, columnId, filterValue) => {\n return row.getValue(columnId) == filterValue;\n};\nweakEquals.autoRemove = val => testFalsey(val);\nconst inNumberRange = (row, columnId, filterValue) => {\n let [min, max] = filterValue;\n const rowValue = row.getValue(columnId);\n return rowValue >= min && rowValue <= max;\n};\ninNumberRange.resolveFilterValue = val => {\n let [unsafeMin, unsafeMax] = val;\n let parsedMin = typeof unsafeMin !== 'number' ? parseFloat(unsafeMin) : unsafeMin;\n let parsedMax = typeof unsafeMax !== 'number' ? parseFloat(unsafeMax) : unsafeMax;\n let min = unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin;\n let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax;\n if (min > max) {\n const temp = min;\n min = max;\n max = temp;\n }\n return [min, max];\n};\ninNumberRange.autoRemove = val => testFalsey(val) || testFalsey(val[0]) && testFalsey(val[1]);\n\n// Export\n\nconst filterFns = {\n includesString,\n includesStringSensitive,\n equalsString,\n arrIncludes,\n arrIncludesAll,\n arrIncludesSome,\n equals,\n weakEquals,\n inNumberRange\n};\n// Utils\n\nfunction testFalsey(val) {\n return val === undefined || val === null || val === '';\n}\n\n//\n\nconst Filters = {\n getDefaultColumnDef: () => {\n return {\n filterFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n columnFilters: [],\n globalFilter: undefined,\n // filtersProgress: 1,\n // facetProgress: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnFiltersChange: makeStateUpdater('columnFilters', table),\n onGlobalFilterChange: makeStateUpdater('globalFilter', table),\n filterFromLeafRows: false,\n globalFilterFn: 'auto',\n getColumnCanGlobalFilter: column => {\n var _table$getCoreRowMode, _table$getCoreRowMode2;\n const value = (_table$getCoreRowMode = table.getCoreRowModel().flatRows[0]) == null ? void 0 : (_table$getCoreRowMode2 = _table$getCoreRowMode._getAllCellsByColumnId()[column.id]) == null ? void 0 : _table$getCoreRowMode2.getValue();\n return typeof value === 'string' || typeof value === 'number';\n }\n };\n },\n createColumn: (column, table) => {\n return {\n getAutoFilterFn: () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return filterFns.includesString;\n }\n if (typeof value === 'number') {\n return filterFns.inNumberRange;\n }\n if (typeof value === 'boolean') {\n return filterFns.equals;\n }\n if (value !== null && typeof value === 'object') {\n return filterFns.equals;\n }\n if (Array.isArray(value)) {\n return filterFns.arrIncludes;\n }\n return filterFns.weakEquals;\n },\n getFilterFn: () => {\n var _table$options$filter;\n return isFunction(column.columnDef.filterFn) ? column.columnDef.filterFn : column.columnDef.filterFn === 'auto' ? column.getAutoFilterFn() : ((_table$options$filter = table.options.filterFns) == null ? void 0 : _table$options$filter[column.columnDef.filterFn]) ?? filterFns[column.columnDef.filterFn];\n },\n getCanFilter: () => {\n return (column.columnDef.enableColumnFilter ?? true) && (table.options.enableColumnFilters ?? true) && (table.options.enableFilters ?? true) && !!column.accessorFn;\n },\n getCanGlobalFilter: () => {\n return (column.columnDef.enableGlobalFilter ?? true) && (table.options.enableGlobalFilter ?? true) && (table.options.enableFilters ?? true) && ((table.options.getColumnCanGlobalFilter == null ? void 0 : table.options.getColumnCanGlobalFilter(column)) ?? true) && !!column.accessorFn;\n },\n getIsFiltered: () => column.getFilterIndex() > -1,\n getFilterValue: () => {\n var _table$getState$colum, _table$getState$colum2;\n return (_table$getState$colum = table.getState().columnFilters) == null ? void 0 : (_table$getState$colum2 = _table$getState$colum.find(d => d.id === column.id)) == null ? void 0 : _table$getState$colum2.value;\n },\n getFilterIndex: () => {\n var _table$getState$colum3;\n return ((_table$getState$colum3 = table.getState().columnFilters) == null ? void 0 : _table$getState$colum3.findIndex(d => d.id === column.id)) ?? -1;\n },\n setFilterValue: value => {\n table.setColumnFilters(old => {\n const filterFn = column.getFilterFn();\n const previousfilter = old == null ? void 0 : old.find(d => d.id === column.id);\n const newFilter = functionalUpdate(value, previousfilter ? previousfilter.value : undefined);\n\n //\n if (shouldAutoRemoveFilter(filterFn, newFilter, column)) {\n return (old == null ? void 0 : old.filter(d => d.id !== column.id)) ?? [];\n }\n const newFilterObj = {\n id: column.id,\n value: newFilter\n };\n if (previousfilter) {\n return (old == null ? void 0 : old.map(d => {\n if (d.id === column.id) {\n return newFilterObj;\n }\n return d;\n })) ?? [];\n }\n if (old != null && old.length) {\n return [...old, newFilterObj];\n }\n return [newFilterObj];\n });\n },\n _getFacetedRowModel: table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, column.id),\n getFacetedRowModel: () => {\n if (!column._getFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return column._getFacetedRowModel();\n },\n _getFacetedUniqueValues: table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, column.id),\n getFacetedUniqueValues: () => {\n if (!column._getFacetedUniqueValues) {\n return new Map();\n }\n return column._getFacetedUniqueValues();\n },\n _getFacetedMinMaxValues: table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, column.id),\n getFacetedMinMaxValues: () => {\n if (!column._getFacetedMinMaxValues) {\n return undefined;\n }\n return column._getFacetedMinMaxValues();\n }\n // () => [column.getFacetedRowModel()],\n // facetedRowModel => getRowModelMinMaxValues(facetedRowModel, column.id),\n };\n },\n\n createRow: (row, table) => {\n return {\n columnFilters: {},\n columnFiltersMeta: {}\n };\n },\n createTable: table => {\n return {\n getGlobalAutoFilterFn: () => {\n return filterFns.includesString;\n },\n getGlobalFilterFn: () => {\n var _table$options$filter2;\n const {\n globalFilterFn: globalFilterFn\n } = table.options;\n return isFunction(globalFilterFn) ? globalFilterFn : globalFilterFn === 'auto' ? table.getGlobalAutoFilterFn() : ((_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[globalFilterFn]) ?? filterFns[globalFilterFn];\n },\n setColumnFilters: updater => {\n const leafColumns = table.getAllLeafColumns();\n const updateFn = old => {\n var _functionalUpdate;\n return (_functionalUpdate = functionalUpdate(updater, old)) == null ? void 0 : _functionalUpdate.filter(filter => {\n const column = leafColumns.find(d => d.id === filter.id);\n if (column) {\n const filterFn = column.getFilterFn();\n if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {\n return false;\n }\n }\n return true;\n });\n };\n table.options.onColumnFiltersChange == null ? void 0 : table.options.onColumnFiltersChange(updateFn);\n },\n setGlobalFilter: updater => {\n table.options.onGlobalFilterChange == null ? void 0 : table.options.onGlobalFilterChange(updater);\n },\n resetGlobalFilter: defaultState => {\n table.setGlobalFilter(defaultState ? undefined : table.initialState.globalFilter);\n },\n resetColumnFilters: defaultState => {\n var _table$initialState;\n table.setColumnFilters(defaultState ? [] : ((_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnFilters) ?? []);\n },\n getPreFilteredRowModel: () => table.getCoreRowModel(),\n getFilteredRowModel: () => {\n if (!table._getFilteredRowModel && table.options.getFilteredRowModel) {\n table._getFilteredRowModel = table.options.getFilteredRowModel(table);\n }\n if (table.options.manualFiltering || !table._getFilteredRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getFilteredRowModel();\n },\n _getGlobalFacetedRowModel: table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, '__global__'),\n getGlobalFacetedRowModel: () => {\n if (table.options.manualFiltering || !table._getGlobalFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getGlobalFacetedRowModel();\n },\n _getGlobalFacetedUniqueValues: table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, '__global__'),\n getGlobalFacetedUniqueValues: () => {\n if (!table._getGlobalFacetedUniqueValues) {\n return new Map();\n }\n return table._getGlobalFacetedUniqueValues();\n },\n _getGlobalFacetedMinMaxValues: table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, '__global__'),\n getGlobalFacetedMinMaxValues: () => {\n if (!table._getGlobalFacetedMinMaxValues) {\n return;\n }\n return table._getGlobalFacetedMinMaxValues();\n }\n };\n }\n};\nfunction shouldAutoRemoveFilter(filterFn, value, column) {\n return (filterFn && filterFn.autoRemove ? filterFn.autoRemove(value, column) : false) || typeof value === 'undefined' || typeof value === 'string' && !value;\n}\n\nconst sum = (columnId, _leafRows, childRows) => {\n // It's faster to just add the aggregations together instead of\n // process leaf nodes individually\n return childRows.reduce((sum, next) => {\n const nextValue = next.getValue(columnId);\n return sum + (typeof nextValue === 'number' ? nextValue : 0);\n }, 0);\n};\nconst min = (columnId, _leafRows, childRows) => {\n let min;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (min > value || min === undefined && value >= value)) {\n min = value;\n }\n });\n return min;\n};\nconst max = (columnId, _leafRows, childRows) => {\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (max < value || max === undefined && value >= value)) {\n max = value;\n }\n });\n return max;\n};\nconst extent = (columnId, _leafRows, childRows) => {\n let min;\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n });\n return [min, max];\n};\nconst mean = (columnId, leafRows) => {\n let count = 0;\n let sum = 0;\n leafRows.forEach(row => {\n let value = row.getValue(columnId);\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n });\n if (count) return sum / count;\n return;\n};\nconst median = (columnId, leafRows) => {\n if (!leafRows.length) {\n return;\n }\n let min = 0;\n let max = 0;\n leafRows.forEach(row => {\n let value = row.getValue(columnId);\n if (typeof value === 'number') {\n min = Math.min(min, value);\n max = Math.max(max, value);\n }\n });\n return (min + max) / 2;\n};\nconst unique = (columnId, leafRows) => {\n return Array.from(new Set(leafRows.map(d => d.getValue(columnId))).values());\n};\nconst uniqueCount = (columnId, leafRows) => {\n return new Set(leafRows.map(d => d.getValue(columnId))).size;\n};\nconst count = (_columnId, leafRows) => {\n return leafRows.length;\n};\nconst aggregationFns = {\n sum,\n min,\n max,\n extent,\n mean,\n median,\n unique,\n uniqueCount,\n count\n};\n\n//\n\nconst Grouping = {\n getDefaultColumnDef: () => {\n return {\n aggregatedCell: props => {\n var _props$getValue;\n return ((_props$getValue = props.getValue()) == null ? void 0 : _props$getValue.toString == null ? void 0 : _props$getValue.toString()) ?? null;\n },\n aggregationFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n grouping: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onGroupingChange: makeStateUpdater('grouping', table),\n groupedColumnMode: 'reorder'\n };\n },\n createColumn: (column, table) => {\n return {\n toggleGrouping: () => {\n table.setGrouping(old => {\n // Find any existing grouping for this column\n if (old != null && old.includes(column.id)) {\n return old.filter(d => d !== column.id);\n }\n return [...(old ?? []), column.id];\n });\n },\n getCanGroup: () => {\n return column.columnDef.enableGrouping ?? true ?? table.options.enableGrouping ?? true ?? !!column.accessorFn;\n },\n getIsGrouped: () => {\n var _table$getState$group;\n return (_table$getState$group = table.getState().grouping) == null ? void 0 : _table$getState$group.includes(column.id);\n },\n getGroupedIndex: () => {\n var _table$getState$group2;\n return (_table$getState$group2 = table.getState().grouping) == null ? void 0 : _table$getState$group2.indexOf(column.id);\n },\n getToggleGroupingHandler: () => {\n const canGroup = column.getCanGroup();\n return () => {\n if (!canGroup) return;\n column.toggleGrouping();\n };\n },\n getAutoAggregationFn: () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'number') {\n return aggregationFns.sum;\n }\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return aggregationFns.extent;\n }\n },\n getAggregationFn: () => {\n var _table$options$aggreg;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.aggregationFn) ? column.columnDef.aggregationFn : column.columnDef.aggregationFn === 'auto' ? column.getAutoAggregationFn() : ((_table$options$aggreg = table.options.aggregationFns) == null ? void 0 : _table$options$aggreg[column.columnDef.aggregationFn]) ?? aggregationFns[column.columnDef.aggregationFn];\n }\n };\n },\n createTable: table => {\n return {\n setGrouping: updater => table.options.onGroupingChange == null ? void 0 : table.options.onGroupingChange(updater),\n resetGrouping: defaultState => {\n var _table$initialState;\n table.setGrouping(defaultState ? [] : ((_table$initialState = table.initialState) == null ? void 0 : _table$initialState.grouping) ?? []);\n },\n getPreGroupedRowModel: () => table.getFilteredRowModel(),\n getGroupedRowModel: () => {\n if (!table._getGroupedRowModel && table.options.getGroupedRowModel) {\n table._getGroupedRowModel = table.options.getGroupedRowModel(table);\n }\n if (table.options.manualGrouping || !table._getGroupedRowModel) {\n return table.getPreGroupedRowModel();\n }\n return table._getGroupedRowModel();\n }\n };\n },\n createRow: row => {\n return {\n getIsGrouped: () => !!row.groupingColumnId,\n _groupingValuesCache: {}\n };\n },\n createCell: (cell, column, row, table) => {\n return {\n getIsGrouped: () => column.getIsGrouped() && column.id === row.groupingColumnId,\n getIsPlaceholder: () => !cell.getIsGrouped() && column.getIsGrouped(),\n getIsAggregated: () => {\n var _row$subRows;\n return !cell.getIsGrouped() && !cell.getIsPlaceholder() && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n }\n };\n }\n};\nfunction orderColumns(leafColumns, grouping, groupedColumnMode) {\n if (!(grouping != null && grouping.length) || !groupedColumnMode) {\n return leafColumns;\n }\n const nonGroupingColumns = leafColumns.filter(col => !grouping.includes(col.id));\n if (groupedColumnMode === 'remove') {\n return nonGroupingColumns;\n }\n const groupingColumns = grouping.map(g => leafColumns.find(col => col.id === g)).filter(Boolean);\n return [...groupingColumns, ...nonGroupingColumns];\n}\n\n//\n\nconst Ordering = {\n getInitialState: state => {\n return {\n columnOrder: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnOrderChange: makeStateUpdater('columnOrder', table)\n };\n },\n createTable: table => {\n return {\n setColumnOrder: updater => table.options.onColumnOrderChange == null ? void 0 : table.options.onColumnOrderChange(updater),\n resetColumnOrder: defaultState => {\n table.setColumnOrder(defaultState ? [] : table.initialState.columnOrder ?? []);\n },\n _getOrderColumnsFn: memo(() => [table.getState().columnOrder, table.getState().grouping, table.options.groupedColumnMode], (columnOrder, grouping, groupedColumnMode) => columns => {\n // Sort grouped columns to the start of the column list\n // before the headers are built\n let orderedColumns = [];\n\n // If there is no order, return the normal columns\n if (!(columnOrder != null && columnOrder.length)) {\n orderedColumns = columns;\n } else {\n const columnOrderCopy = [...columnOrder];\n\n // If there is an order, make a copy of the columns\n const columnsCopy = [...columns];\n\n // And make a new ordered array of the columns\n\n // Loop over the columns and place them in order into the new array\n while (columnsCopy.length && columnOrderCopy.length) {\n const targetColumnId = columnOrderCopy.shift();\n const foundIndex = columnsCopy.findIndex(d => d.id === targetColumnId);\n if (foundIndex > -1) {\n orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]);\n }\n }\n\n // If there are any columns left, add them to the end\n orderedColumns = [...orderedColumns, ...columnsCopy];\n }\n return orderColumns(orderedColumns, grouping, groupedColumnMode);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getOrderColumnsFn'\n // debug: () => table.options.debugAll ?? table.options.debugTable,\n })\n };\n }\n};\n\n//\n\nconst defaultPageIndex = 0;\nconst defaultPageSize = 10;\nconst getDefaultPaginationState = () => ({\n pageIndex: defaultPageIndex,\n pageSize: defaultPageSize\n});\nconst Pagination = {\n getInitialState: state => {\n return {\n ...state,\n pagination: {\n ...getDefaultPaginationState(),\n ...(state == null ? void 0 : state.pagination)\n }\n };\n },\n getDefaultOptions: table => {\n return {\n onPaginationChange: makeStateUpdater('pagination', table)\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n return {\n _autoResetPageIndex: () => {\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if (table.options.autoResetAll ?? table.options.autoResetPageIndex ?? !table.options.manualPagination) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetPageIndex();\n queued = false;\n });\n }\n },\n setPagination: updater => {\n const safeUpdater = old => {\n let newState = functionalUpdate(updater, old);\n return newState;\n };\n return table.options.onPaginationChange == null ? void 0 : table.options.onPaginationChange(safeUpdater);\n },\n resetPagination: defaultState => {\n table.setPagination(defaultState ? getDefaultPaginationState() : table.initialState.pagination ?? getDefaultPaginationState());\n },\n setPageIndex: updater => {\n table.setPagination(old => {\n let pageIndex = functionalUpdate(updater, old.pageIndex);\n const maxPageIndex = typeof table.options.pageCount === 'undefined' || table.options.pageCount === -1 ? Number.MAX_SAFE_INTEGER : table.options.pageCount - 1;\n pageIndex = Math.max(0, Math.min(pageIndex, maxPageIndex));\n return {\n ...old,\n pageIndex\n };\n });\n },\n resetPageIndex: defaultState => {\n var _table$initialState, _table$initialState$p;\n table.setPageIndex(defaultState ? defaultPageIndex : ((_table$initialState = table.initialState) == null ? void 0 : (_table$initialState$p = _table$initialState.pagination) == null ? void 0 : _table$initialState$p.pageIndex) ?? defaultPageIndex);\n },\n resetPageSize: defaultState => {\n var _table$initialState2, _table$initialState2$;\n table.setPageSize(defaultState ? defaultPageSize : ((_table$initialState2 = table.initialState) == null ? void 0 : (_table$initialState2$ = _table$initialState2.pagination) == null ? void 0 : _table$initialState2$.pageSize) ?? defaultPageSize);\n },\n setPageSize: updater => {\n table.setPagination(old => {\n const pageSize = Math.max(1, functionalUpdate(updater, old.pageSize));\n const topRowIndex = old.pageSize * old.pageIndex;\n const pageIndex = Math.floor(topRowIndex / pageSize);\n return {\n ...old,\n pageIndex,\n pageSize\n };\n });\n },\n setPageCount: updater => table.setPagination(old => {\n let newPageCount = functionalUpdate(updater, table.options.pageCount ?? -1);\n if (typeof newPageCount === 'number') {\n newPageCount = Math.max(-1, newPageCount);\n }\n return {\n ...old,\n pageCount: newPageCount\n };\n }),\n getPageOptions: memo(() => [table.getPageCount()], pageCount => {\n let pageOptions = [];\n if (pageCount && pageCount > 0) {\n pageOptions = [...new Array(pageCount)].fill(null).map((_, i) => i);\n }\n return pageOptions;\n }, {\n key: process.env.NODE_ENV === 'development' && 'getPageOptions',\n debug: () => table.options.debugAll ?? table.options.debugTable\n }),\n getCanPreviousPage: () => table.getState().pagination.pageIndex > 0,\n getCanNextPage: () => {\n const {\n pageIndex\n } = table.getState().pagination;\n const pageCount = table.getPageCount();\n if (pageCount === -1) {\n return true;\n }\n if (pageCount === 0) {\n return false;\n }\n return pageIndex < pageCount - 1;\n },\n previousPage: () => {\n return table.setPageIndex(old => old - 1);\n },\n nextPage: () => {\n return table.setPageIndex(old => {\n return old + 1;\n });\n },\n getPrePaginationRowModel: () => table.getExpandedRowModel(),\n getPaginationRowModel: () => {\n if (!table._getPaginationRowModel && table.options.getPaginationRowModel) {\n table._getPaginationRowModel = table.options.getPaginationRowModel(table);\n }\n if (table.options.manualPagination || !table._getPaginationRowModel) {\n return table.getPrePaginationRowModel();\n }\n return table._getPaginationRowModel();\n },\n getPageCount: () => {\n return table.options.pageCount ?? Math.ceil(table.getPrePaginationRowModel().rows.length / table.getState().pagination.pageSize);\n }\n };\n }\n};\n\n//\n\nconst getDefaultPinningState = () => ({\n left: [],\n right: []\n});\nconst Pinning = {\n getInitialState: state => {\n return {\n columnPinning: getDefaultPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnPinningChange: makeStateUpdater('columnPinning', table)\n };\n },\n createColumn: (column, table) => {\n return {\n pin: position => {\n const columnIds = column.getLeafColumns().map(d => d.id).filter(Boolean);\n table.setColumnPinning(old => {\n if (position === 'right') {\n return {\n left: ((old == null ? void 0 : old.left) ?? []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: [...((old == null ? void 0 : old.right) ?? []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds]\n };\n }\n if (position === 'left') {\n return {\n left: [...((old == null ? void 0 : old.left) ?? []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds],\n right: ((old == null ? void 0 : old.right) ?? []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n }\n return {\n left: ((old == null ? void 0 : old.left) ?? []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: ((old == null ? void 0 : old.right) ?? []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n });\n },\n getCanPin: () => {\n const leafColumns = column.getLeafColumns();\n return leafColumns.some(d => (d.columnDef.enablePinning ?? true) && (table.options.enablePinning ?? true));\n },\n getIsPinned: () => {\n const leafColumnIds = column.getLeafColumns().map(d => d.id);\n const {\n left,\n right\n } = table.getState().columnPinning;\n const isLeft = leafColumnIds.some(d => left == null ? void 0 : left.includes(d));\n const isRight = leafColumnIds.some(d => right == null ? void 0 : right.includes(d));\n return isLeft ? 'left' : isRight ? 'right' : false;\n },\n getPinnedIndex: () => {\n var _table$getState$colum, _table$getState$colum2;\n const position = column.getIsPinned();\n return position ? ((_table$getState$colum = table.getState().columnPinning) == null ? void 0 : (_table$getState$colum2 = _table$getState$colum[position]) == null ? void 0 : _table$getState$colum2.indexOf(column.id)) ?? -1 : 0;\n }\n };\n },\n createRow: (row, table) => {\n return {\n getCenterVisibleCells: memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allCells, left, right) => {\n const leftAndRight = [...(left ?? []), ...(right ?? [])];\n return allCells.filter(d => !leftAndRight.includes(d.column.id));\n }, {\n key: process.env.NODE_ENV === 'production' && 'row.getCenterVisibleCells',\n debug: () => table.options.debugAll ?? table.options.debugRows\n }),\n getLeftVisibleCells: memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left,,], (allCells, left) => {\n const cells = (left ?? []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'left'\n }));\n return cells;\n }, {\n key: process.env.NODE_ENV === 'production' && 'row.getLeftVisibleCells',\n debug: () => table.options.debugAll ?? table.options.debugRows\n }),\n getRightVisibleCells: memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.right], (allCells, right) => {\n const cells = (right ?? []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'right'\n }));\n return cells;\n }, {\n key: process.env.NODE_ENV === 'production' && 'row.getRightVisibleCells',\n debug: () => table.options.debugAll ?? table.options.debugRows\n })\n };\n },\n createTable: table => {\n return {\n setColumnPinning: updater => table.options.onColumnPinningChange == null ? void 0 : table.options.onColumnPinningChange(updater),\n resetColumnPinning: defaultState => {\n var _table$initialState;\n return table.setColumnPinning(defaultState ? getDefaultPinningState() : ((_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnPinning) ?? getDefaultPinningState());\n },\n getIsSomeColumnsPinned: position => {\n var _pinningState$positio;\n const pinningState = table.getState().columnPinning;\n if (!position) {\n var _pinningState$left, _pinningState$right;\n return Boolean(((_pinningState$left = pinningState.left) == null ? void 0 : _pinningState$left.length) || ((_pinningState$right = pinningState.right) == null ? void 0 : _pinningState$right.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n },\n getLeftLeafColumns: memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left], (allColumns, left) => {\n return (left ?? []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getLeftLeafColumns',\n debug: () => table.options.debugAll ?? table.options.debugColumns\n }),\n getRightLeafColumns: memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.right], (allColumns, right) => {\n return (right ?? []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getRightLeafColumns',\n debug: () => table.options.debugAll ?? table.options.debugColumns\n }),\n getCenterLeafColumns: memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, left, right) => {\n const leftAndRight = [...(left ?? []), ...(right ?? [])];\n return allColumns.filter(d => !leftAndRight.includes(d.id));\n }, {\n key: process.env.NODE_ENV === 'development' && 'getCenterLeafColumns',\n debug: () => table.options.debugAll ?? table.options.debugColumns\n })\n };\n }\n};\n\n//\n\nconst RowSelection = {\n getInitialState: state => {\n return {\n rowSelection: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onRowSelectionChange: makeStateUpdater('rowSelection', table),\n enableRowSelection: true,\n enableMultiRowSelection: true,\n enableSubRowSelection: true\n // enableGroupingRowSelection: false,\n // isAdditiveSelectEvent: (e: unknown) => !!e.metaKey,\n // isInclusiveSelectEvent: (e: unknown) => !!e.shiftKey,\n };\n },\n\n createTable: table => {\n return {\n setRowSelection: updater => table.options.onRowSelectionChange == null ? void 0 : table.options.onRowSelectionChange(updater),\n resetRowSelection: defaultState => table.setRowSelection(defaultState ? {} : table.initialState.rowSelection ?? {}),\n toggleAllRowsSelected: value => {\n table.setRowSelection(old => {\n value = typeof value !== 'undefined' ? value : !table.getIsAllRowsSelected();\n const rowSelection = {\n ...old\n };\n const preGroupedFlatRows = table.getPreGroupedRowModel().flatRows;\n\n // We don't use `mutateRowIsSelected` here for performance reasons.\n // All of the rows are flat already, so it wouldn't be worth it\n if (value) {\n preGroupedFlatRows.forEach(row => {\n if (!row.getCanSelect()) {\n return;\n }\n rowSelection[row.id] = true;\n });\n } else {\n preGroupedFlatRows.forEach(row => {\n delete rowSelection[row.id];\n });\n }\n return rowSelection;\n });\n },\n toggleAllPageRowsSelected: value => table.setRowSelection(old => {\n const resolvedValue = typeof value !== 'undefined' ? value : !table.getIsAllPageRowsSelected();\n const rowSelection = {\n ...old\n };\n table.getRowModel().rows.forEach(row => {\n mutateRowIsSelected(rowSelection, row.id, resolvedValue, table);\n });\n return rowSelection;\n }),\n // addRowSelectionRange: rowId => {\n // const {\n // rows,\n // rowsById,\n // options: { selectGroupingRows, selectSubRows },\n // } = table\n\n // const findSelectedRow = (rows: Row[]) => {\n // let found\n // rows.find(d => {\n // if (d.getIsSelected()) {\n // found = d\n // return true\n // }\n // const subFound = findSelectedRow(d.subRows || [])\n // if (subFound) {\n // found = subFound\n // return true\n // }\n // return false\n // })\n // return found\n // }\n\n // const firstRow = findSelectedRow(rows) || rows[0]\n // const lastRow = rowsById[rowId]\n\n // let include = false\n // const selectedRowIds = {}\n\n // const addRow = (row: Row) => {\n // mutateRowIsSelected(selectedRowIds, row.id, true, {\n // rowsById,\n // selectGroupingRows: selectGroupingRows!,\n // selectSubRows: selectSubRows!,\n // })\n // }\n\n // table.rows.forEach(row => {\n // const isFirstRow = row.id === firstRow.id\n // const isLastRow = row.id === lastRow.id\n\n // if (isFirstRow || isLastRow) {\n // if (!include) {\n // include = true\n // } else if (include) {\n // addRow(row)\n // include = false\n // }\n // }\n\n // if (include) {\n // addRow(row)\n // }\n // })\n\n // table.setRowSelection(selectedRowIds)\n // },\n getPreSelectedRowModel: () => table.getCoreRowModel(),\n getSelectedRowModel: memo(() => [table.getState().rowSelection, table.getCoreRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getSelectedRowModel',\n debug: () => table.options.debugAll ?? table.options.debugTable\n }),\n getFilteredSelectedRowModel: memo(() => [table.getState().rowSelection, table.getFilteredRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, {\n key: process.env.NODE_ENV === 'production' && 'getFilteredSelectedRowModel',\n debug: () => table.options.debugAll ?? table.options.debugTable\n }),\n getGroupedSelectedRowModel: memo(() => [table.getState().rowSelection, table.getSortedRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, {\n key: process.env.NODE_ENV === 'production' && 'getGroupedSelectedRowModel',\n debug: () => table.options.debugAll ?? table.options.debugTable\n }),\n ///\n\n // getGroupingRowCanSelect: rowId => {\n // const row = table.getRow(rowId)\n\n // if (!row) {\n // throw new Error()\n // }\n\n // if (typeof table.options.enableGroupingRowSelection === 'function') {\n // return table.options.enableGroupingRowSelection(row)\n // }\n\n // return table.options.enableGroupingRowSelection ?? false\n // },\n\n getIsAllRowsSelected: () => {\n const preGroupedFlatRows = table.getFilteredRowModel().flatRows;\n const {\n rowSelection\n } = table.getState();\n let isAllRowsSelected = Boolean(preGroupedFlatRows.length && Object.keys(rowSelection).length);\n if (isAllRowsSelected) {\n if (preGroupedFlatRows.some(row => row.getCanSelect() && !rowSelection[row.id])) {\n isAllRowsSelected = false;\n }\n }\n return isAllRowsSelected;\n },\n getIsAllPageRowsSelected: () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows;\n const {\n rowSelection\n } = table.getState();\n let isAllPageRowsSelected = !!paginationFlatRows.length;\n if (isAllPageRowsSelected && paginationFlatRows.some(row => !rowSelection[row.id])) {\n isAllPageRowsSelected = false;\n }\n return isAllPageRowsSelected;\n },\n getIsSomeRowsSelected: () => {\n const totalSelected = Object.keys(table.getState().rowSelection ?? {}).length;\n return totalSelected > 0 && totalSelected < table.getFilteredRowModel().flatRows.length;\n },\n getIsSomePageRowsSelected: () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows;\n return table.getIsAllPageRowsSelected() ? false : paginationFlatRows.some(d => d.getIsSelected() || d.getIsSomeSelected());\n },\n getToggleAllRowsSelectedHandler: () => {\n return e => {\n table.toggleAllRowsSelected(e.target.checked);\n };\n },\n getToggleAllPageRowsSelectedHandler: () => {\n return e => {\n table.toggleAllPageRowsSelected(e.target.checked);\n };\n }\n };\n },\n createRow: (row, table) => {\n return {\n toggleSelected: value => {\n const isSelected = row.getIsSelected();\n table.setRowSelection(old => {\n value = typeof value !== 'undefined' ? value : !isSelected;\n if (isSelected === value) {\n return old;\n }\n const selectedRowIds = {\n ...old\n };\n mutateRowIsSelected(selectedRowIds, row.id, value, table);\n return selectedRowIds;\n });\n },\n getIsSelected: () => {\n const {\n rowSelection\n } = table.getState();\n return isRowSelected(row, rowSelection);\n },\n getIsSomeSelected: () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'some';\n },\n getIsAllSubRowsSelected: () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'all';\n },\n getCanSelect: () => {\n if (typeof table.options.enableRowSelection === 'function') {\n return table.options.enableRowSelection(row);\n }\n return table.options.enableRowSelection ?? true;\n },\n getCanSelectSubRows: () => {\n if (typeof table.options.enableSubRowSelection === 'function') {\n return table.options.enableSubRowSelection(row);\n }\n return table.options.enableSubRowSelection ?? true;\n },\n getCanMultiSelect: () => {\n if (typeof table.options.enableMultiRowSelection === 'function') {\n return table.options.enableMultiRowSelection(row);\n }\n return table.options.enableMultiRowSelection ?? true;\n },\n getToggleSelectedHandler: () => {\n const canSelect = row.getCanSelect();\n return e => {\n var _target;\n if (!canSelect) return;\n row.toggleSelected((_target = e.target) == null ? void 0 : _target.checked);\n };\n }\n };\n }\n};\nconst mutateRowIsSelected = (selectedRowIds, id, value, table) => {\n var _row$subRows;\n const row = table.getRow(id);\n\n // const isGrouped = row.getIsGrouped()\n\n // if ( // TODO: enforce grouping row selection rules\n // !isGrouped ||\n // (isGrouped && table.options.enableGroupingRowSelection)\n // ) {\n if (value) {\n if (!row.getCanMultiSelect()) {\n Object.keys(selectedRowIds).forEach(key => delete selectedRowIds[key]);\n }\n if (row.getCanSelect()) {\n selectedRowIds[id] = true;\n }\n } else {\n delete selectedRowIds[id];\n }\n // }\n\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && row.getCanSelectSubRows()) {\n row.subRows.forEach(row => mutateRowIsSelected(selectedRowIds, row.id, value, table));\n }\n};\nfunction selectRowsFn(table, rowModel) {\n const rowSelection = table.getState().rowSelection;\n const newSelectedFlatRows = [];\n const newSelectedRowsById = {};\n\n // Filters top level and nested rows\n const recurseRows = function (rows, depth) {\n return rows.map(row => {\n var _row$subRows2;\n const isSelected = isRowSelected(row, rowSelection);\n if (isSelected) {\n newSelectedFlatRows.push(row);\n newSelectedRowsById[row.id] = row;\n }\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length) {\n row = {\n ...row,\n subRows: recurseRows(row.subRows)\n };\n }\n if (isSelected) {\n return row;\n }\n }).filter(Boolean);\n };\n return {\n rows: recurseRows(rowModel.rows),\n flatRows: newSelectedFlatRows,\n rowsById: newSelectedRowsById\n };\n}\nfunction isRowSelected(row, selection) {\n return selection[row.id] ?? false;\n}\nfunction isSubRowSelected(row, selection, table) {\n if (row.subRows && row.subRows.length) {\n let allChildrenSelected = true;\n let someSelected = false;\n row.subRows.forEach(subRow => {\n // Bail out early if we know both of these\n if (someSelected && !allChildrenSelected) {\n return;\n }\n if (isRowSelected(subRow, selection)) {\n someSelected = true;\n } else {\n allChildrenSelected = false;\n }\n });\n return allChildrenSelected ? 'all' : someSelected ? 'some' : false;\n }\n return false;\n}\n\nconst reSplitAlphaNumeric = /([0-9]+)/gm;\nconst alphanumeric = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\nconst alphanumericCaseSensitive = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst text = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst textCaseSensitive = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\nconst datetime = (rowA, rowB, columnId) => {\n const a = rowA.getValue(columnId);\n const b = rowB.getValue(columnId);\n\n // Can handle nullish values\n // Use > and < because == (and ===) doesn't work with\n // Date objects (would require calling getTime()).\n return a > b ? 1 : a < b ? -1 : 0;\n};\nconst basic = (rowA, rowB, columnId) => {\n return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId));\n};\n\n// Utils\n\nfunction compareBasic(a, b) {\n return a === b ? 0 : a > b ? 1 : -1;\n}\nfunction toString(a) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return '';\n }\n return String(a);\n }\n if (typeof a === 'string') {\n return a;\n }\n return '';\n}\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nfunction compareAlphanumeric(aStr, bStr) {\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n const a = aStr.split(reSplitAlphaNumeric).filter(Boolean);\n const b = bStr.split(reSplitAlphaNumeric).filter(Boolean);\n\n // While\n while (a.length && b.length) {\n const aa = a.shift();\n const bb = b.shift();\n const an = parseInt(aa, 10);\n const bn = parseInt(bb, 10);\n const combo = [an, bn].sort();\n\n // Both are string\n if (isNaN(combo[0])) {\n if (aa > bb) {\n return 1;\n }\n if (bb > aa) {\n return -1;\n }\n continue;\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1])) {\n return isNaN(an) ? -1 : 1;\n }\n\n // Both are numbers\n if (an > bn) {\n return 1;\n }\n if (bn > an) {\n return -1;\n }\n }\n return a.length - b.length;\n}\n\n// Exports\n\nconst sortingFns = {\n alphanumeric,\n alphanumericCaseSensitive,\n text,\n textCaseSensitive,\n datetime,\n basic\n};\n\n//\n\nconst Sorting = {\n getInitialState: state => {\n return {\n sorting: [],\n ...state\n };\n },\n getDefaultColumnDef: () => {\n return {\n sortingFn: 'auto'\n };\n },\n getDefaultOptions: table => {\n return {\n onSortingChange: makeStateUpdater('sorting', table),\n isMultiSortEvent: e => {\n return e.shiftKey;\n }\n };\n },\n createColumn: (column, table) => {\n return {\n getAutoSortingFn: () => {\n const firstRows = table.getFilteredRowModel().flatRows.slice(10);\n let isString = false;\n for (const row of firstRows) {\n const value = row == null ? void 0 : row.getValue(column.id);\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortingFns.datetime;\n }\n if (typeof value === 'string') {\n isString = true;\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortingFns.alphanumeric;\n }\n }\n }\n if (isString) {\n return sortingFns.text;\n }\n return sortingFns.basic;\n },\n getAutoSortDir: () => {\n const firstRow = table.getFilteredRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return 'asc';\n }\n return 'desc';\n },\n getSortingFn: () => {\n var _table$options$sortin;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.sortingFn) ? column.columnDef.sortingFn : column.columnDef.sortingFn === 'auto' ? column.getAutoSortingFn() : ((_table$options$sortin = table.options.sortingFns) == null ? void 0 : _table$options$sortin[column.columnDef.sortingFn]) ?? sortingFns[column.columnDef.sortingFn];\n },\n toggleSorting: (desc, multi) => {\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // table.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n // this needs to be outside of table.setSorting to be in sync with rerender\n const nextSortingOrder = column.getNextSortingOrder();\n const hasManualValue = typeof desc !== 'undefined' && desc !== null;\n table.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old == null ? void 0 : old.find(d => d.id === column.id);\n const existingIndex = old == null ? void 0 : old.findIndex(d => d.id === column.id);\n let newSorting = [];\n\n // What should we do with this sort action?\n let sortAction;\n let nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc';\n\n // Multi-mode\n if (old != null && old.length && column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'add';\n }\n } else {\n // Normal mode\n if (old != null && old.length && existingIndex !== old.length - 1) {\n sortAction = 'replace';\n } else if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'replace';\n }\n }\n\n // Handle toggle states that will remove the sorting\n if (sortAction === 'toggle') {\n // If we are \"actually\" toggling (not a manual set value), should we remove the sorting?\n if (!hasManualValue) {\n // Is our intention to remove?\n if (!nextSortingOrder) {\n sortAction = 'remove';\n }\n }\n }\n if (sortAction === 'add') {\n newSorting = [...old, {\n id: column.id,\n desc: nextDesc\n }];\n // Take latest n columns\n newSorting.splice(0, newSorting.length - (table.options.maxMultiSortColCount ?? Number.MAX_SAFE_INTEGER));\n } else if (sortAction === 'toggle') {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === column.id) {\n return {\n ...d,\n desc: nextDesc\n };\n }\n return d;\n });\n } else if (sortAction === 'remove') {\n newSorting = old.filter(d => d.id !== column.id);\n } else {\n newSorting = [{\n id: column.id,\n desc: nextDesc\n }];\n }\n return newSorting;\n });\n },\n getFirstSortDir: () => {\n const sortDescFirst = column.columnDef.sortDescFirst ?? table.options.sortDescFirst ?? column.getAutoSortDir() === 'desc';\n return sortDescFirst ? 'desc' : 'asc';\n },\n getNextSortingOrder: multi => {\n const firstSortDirection = column.getFirstSortDir();\n const isSorted = column.getIsSorted();\n if (!isSorted) {\n return firstSortDirection;\n }\n if (isSorted !== firstSortDirection && (table.options.enableSortingRemoval ?? true) && (\n // If enableSortRemove, enable in general\n multi ? table.options.enableMultiRemove ?? true : true) // If multi, don't allow if enableMultiRemove))\n ) {\n return false;\n }\n return isSorted === 'desc' ? 'asc' : 'desc';\n },\n getCanSort: () => {\n return (column.columnDef.enableSorting ?? true) && (table.options.enableSorting ?? true) && !!column.accessorFn;\n },\n getCanMultiSort: () => {\n return column.columnDef.enableMultiSort ?? table.options.enableMultiSort ?? !!column.accessorFn;\n },\n getIsSorted: () => {\n var _table$getState$sorti;\n const columnSort = (_table$getState$sorti = table.getState().sorting) == null ? void 0 : _table$getState$sorti.find(d => d.id === column.id);\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc';\n },\n getSortIndex: () => {\n var _table$getState$sorti2;\n return ((_table$getState$sorti2 = table.getState().sorting) == null ? void 0 : _table$getState$sorti2.findIndex(d => d.id === column.id)) ?? -1;\n },\n clearSorting: () => {\n //clear sorting for just 1 column\n table.setSorting(old => old != null && old.length ? old.filter(d => d.id !== column.id) : []);\n },\n getToggleSortingHandler: () => {\n const canSort = column.getCanSort();\n return e => {\n if (!canSort) return;\n e.persist == null ? void 0 : e.persist();\n column.toggleSorting == null ? void 0 : column.toggleSorting(undefined, column.getCanMultiSort() ? table.options.isMultiSortEvent == null ? void 0 : table.options.isMultiSortEvent(e) : false);\n };\n }\n };\n },\n createTable: table => {\n return {\n setSorting: updater => table.options.onSortingChange == null ? void 0 : table.options.onSortingChange(updater),\n resetSorting: defaultState => {\n var _table$initialState;\n table.setSorting(defaultState ? [] : ((_table$initialState = table.initialState) == null ? void 0 : _table$initialState.sorting) ?? []);\n },\n getPreSortedRowModel: () => table.getGroupedRowModel(),\n getSortedRowModel: () => {\n if (!table._getSortedRowModel && table.options.getSortedRowModel) {\n table._getSortedRowModel = table.options.getSortedRowModel(table);\n }\n if (table.options.manualSorting || !table._getSortedRowModel) {\n return table.getPreSortedRowModel();\n }\n return table._getSortedRowModel();\n }\n };\n }\n};\n\n//\n\nconst Visibility = {\n getInitialState: state => {\n return {\n columnVisibility: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', table)\n };\n },\n createColumn: (column, table) => {\n return {\n toggleVisibility: value => {\n if (column.getCanHide()) {\n table.setColumnVisibility(old => ({\n ...old,\n [column.id]: value ?? !column.getIsVisible()\n }));\n }\n },\n getIsVisible: () => {\n var _table$getState$colum;\n return ((_table$getState$colum = table.getState().columnVisibility) == null ? void 0 : _table$getState$colum[column.id]) ?? true;\n },\n getCanHide: () => {\n return (column.columnDef.enableHiding ?? true) && (table.options.enableHiding ?? true);\n },\n getToggleVisibilityHandler: () => {\n return e => {\n column.toggleVisibility == null ? void 0 : column.toggleVisibility(e.target.checked);\n };\n }\n };\n },\n createRow: (row, table) => {\n return {\n _getAllVisibleCells: memo(() => [row.getAllCells(), table.getState().columnVisibility], cells => {\n return cells.filter(cell => cell.column.getIsVisible());\n }, {\n key: process.env.NODE_ENV === 'production' && 'row._getAllVisibleCells',\n debug: () => table.options.debugAll ?? table.options.debugRows\n }),\n getVisibleCells: memo(() => [row.getLeftVisibleCells(), row.getCenterVisibleCells(), row.getRightVisibleCells()], (left, center, right) => [...left, ...center, ...right], {\n key: process.env.NODE_ENV === 'development' && 'row.getVisibleCells',\n debug: () => table.options.debugAll ?? table.options.debugRows\n })\n };\n },\n createTable: table => {\n const makeVisibleColumnsMethod = (key, getColumns) => {\n return memo(() => [getColumns(), getColumns().filter(d => d.getIsVisible()).map(d => d.id).join('_')], columns => {\n return columns.filter(d => d.getIsVisible == null ? void 0 : d.getIsVisible());\n }, {\n key,\n debug: () => table.options.debugAll ?? table.options.debugColumns\n });\n };\n return {\n getVisibleFlatColumns: makeVisibleColumnsMethod('getVisibleFlatColumns', () => table.getAllFlatColumns()),\n getVisibleLeafColumns: makeVisibleColumnsMethod('getVisibleLeafColumns', () => table.getAllLeafColumns()),\n getLeftVisibleLeafColumns: makeVisibleColumnsMethod('getLeftVisibleLeafColumns', () => table.getLeftLeafColumns()),\n getRightVisibleLeafColumns: makeVisibleColumnsMethod('getRightVisibleLeafColumns', () => table.getRightLeafColumns()),\n getCenterVisibleLeafColumns: makeVisibleColumnsMethod('getCenterVisibleLeafColumns', () => table.getCenterLeafColumns()),\n setColumnVisibility: updater => table.options.onColumnVisibilityChange == null ? void 0 : table.options.onColumnVisibilityChange(updater),\n resetColumnVisibility: defaultState => {\n table.setColumnVisibility(defaultState ? {} : table.initialState.columnVisibility ?? {});\n },\n toggleAllColumnsVisible: value => {\n value = value ?? !table.getIsAllColumnsVisible();\n table.setColumnVisibility(table.getAllLeafColumns().reduce((obj, column) => ({\n ...obj,\n [column.id]: !value ? !(column.getCanHide != null && column.getCanHide()) : value\n }), {}));\n },\n getIsAllColumnsVisible: () => !table.getAllLeafColumns().some(column => !(column.getIsVisible != null && column.getIsVisible())),\n getIsSomeColumnsVisible: () => table.getAllLeafColumns().some(column => column.getIsVisible == null ? void 0 : column.getIsVisible()),\n getToggleAllColumnsVisibilityHandler: () => {\n return e => {\n var _target;\n table.toggleAllColumnsVisible((_target = e.target) == null ? void 0 : _target.checked);\n };\n }\n };\n }\n};\n\nconst features = [Headers, Visibility, Ordering, Pinning, Filters, Sorting, Grouping, Expanding, Pagination, RowSelection, ColumnSizing];\n\n//\n\nfunction createTable(options) {\n if (options.debugAll || options.debugTable) {\n console.info('Creating Table Instance...');\n }\n let table = {\n _features: features\n };\n const defaultOptions = table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultOptions == null ? void 0 : feature.getDefaultOptions(table));\n }, {});\n const mergeOptions = options => {\n if (table.options.mergeOptions) {\n return table.options.mergeOptions(defaultOptions, options);\n }\n return {\n ...defaultOptions,\n ...options\n };\n };\n const coreInitialState = {};\n let initialState = {\n ...coreInitialState,\n ...(options.initialState ?? {})\n };\n table._features.forEach(feature => {\n initialState = (feature.getInitialState == null ? void 0 : feature.getInitialState(initialState)) ?? initialState;\n });\n const queued = [];\n let queuedTimeout = false;\n const coreInstance = {\n _features: features,\n options: {\n ...defaultOptions,\n ...options\n },\n initialState,\n _queue: cb => {\n queued.push(cb);\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().then(() => {\n while (queued.length) {\n queued.shift()();\n }\n queuedTimeout = false;\n }).catch(error => setTimeout(() => {\n throw error;\n }));\n }\n },\n reset: () => {\n table.setState(table.initialState);\n },\n setOptions: updater => {\n const newOptions = functionalUpdate(updater, table.options);\n table.options = mergeOptions(newOptions);\n },\n getState: () => {\n return table.options.state;\n },\n setState: updater => {\n table.options.onStateChange == null ? void 0 : table.options.onStateChange(updater);\n },\n _getRowId: (row, index, parent) => (table.options.getRowId == null ? void 0 : table.options.getRowId(row, index, parent)) ?? `${parent ? [parent.id, index].join('.') : index}`,\n getCoreRowModel: () => {\n if (!table._getCoreRowModel) {\n table._getCoreRowModel = table.options.getCoreRowModel(table);\n }\n return table._getCoreRowModel();\n },\n // The final calls start at the bottom of the model,\n // expanded rows, which then work their way up\n\n getRowModel: () => {\n return table.getPaginationRowModel();\n },\n getRow: id => {\n const row = table.getRowModel().rowsById[id];\n if (!row) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`getRow expected an ID, but got ${id}`);\n }\n throw new Error();\n }\n return row;\n },\n _getDefaultColumnDef: memo(() => [table.options.defaultColumn], defaultColumn => {\n defaultColumn = defaultColumn ?? {};\n return {\n header: props => {\n const resolvedColumnDef = props.header.column.columnDef;\n if (resolvedColumnDef.accessorKey) {\n return resolvedColumnDef.accessorKey;\n }\n if (resolvedColumnDef.accessorFn) {\n return resolvedColumnDef.id;\n }\n return null;\n },\n // footer: props => props.header.column.id,\n cell: props => {\n var _props$renderValue;\n return ((_props$renderValue = props.renderValue()) == null ? void 0 : _props$renderValue.toString == null ? void 0 : _props$renderValue.toString()) ?? null;\n },\n ...table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultColumnDef == null ? void 0 : feature.getDefaultColumnDef());\n }, {}),\n ...defaultColumn\n };\n }, {\n debug: () => table.options.debugAll ?? table.options.debugColumns,\n key: process.env.NODE_ENV === 'development' && 'getDefaultColumnDef'\n }),\n _getColumnDefs: () => table.options.columns,\n getAllColumns: memo(() => [table._getColumnDefs()], columnDefs => {\n const recurseColumns = function (columnDefs, parent, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n return columnDefs.map(columnDef => {\n const column = createColumn(table, columnDef, depth, parent);\n const groupingColumnDef = columnDef;\n column.columns = groupingColumnDef.columns ? recurseColumns(groupingColumnDef.columns, column, depth + 1) : [];\n return column;\n });\n };\n return recurseColumns(columnDefs);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getAllColumns',\n debug: () => table.options.debugAll ?? table.options.debugColumns\n }),\n getAllFlatColumns: memo(() => [table.getAllColumns()], allColumns => {\n return allColumns.flatMap(column => {\n return column.getFlatColumns();\n });\n }, {\n key: process.env.NODE_ENV === 'development' && 'getAllFlatColumns',\n debug: () => table.options.debugAll ?? table.options.debugColumns\n }),\n _getAllFlatColumnsById: memo(() => [table.getAllFlatColumns()], flatColumns => {\n return flatColumns.reduce((acc, column) => {\n acc[column.id] = column;\n return acc;\n }, {});\n }, {\n key: process.env.NODE_ENV === 'development' && 'getAllFlatColumnsById',\n debug: () => table.options.debugAll ?? table.options.debugColumns\n }),\n getAllLeafColumns: memo(() => [table.getAllColumns(), table._getOrderColumnsFn()], (allColumns, orderColumns) => {\n let leafColumns = allColumns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getAllLeafColumns',\n debug: () => table.options.debugAll ?? table.options.debugColumns\n }),\n getColumn: columnId => {\n const column = table._getAllFlatColumnsById()[columnId];\n if (!column) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`[Table] Column with id ${columnId} does not exist.`);\n }\n throw new Error();\n }\n return column;\n }\n };\n Object.assign(table, coreInstance);\n table._features.forEach(feature => {\n return Object.assign(table, feature.createTable == null ? void 0 : feature.createTable(table));\n });\n return table;\n}\n\nfunction createCell(table, row, column, columnId) {\n const getRenderValue = () => cell.getValue() ?? table.options.renderFallbackValue;\n const cell = {\n id: `${row.id}_${column.id}`,\n row,\n column,\n getValue: () => row.getValue(columnId),\n renderValue: getRenderValue,\n getContext: memo(() => [table, column, row, cell], (table, column, row, cell) => ({\n table,\n column,\n row,\n cell: cell,\n getValue: cell.getValue,\n renderValue: cell.renderValue\n }), {\n key: process.env.NODE_ENV === 'development' && 'cell.getContext',\n debug: () => table.options.debugAll\n })\n };\n table._features.forEach(feature => {\n Object.assign(cell, feature.createCell == null ? void 0 : feature.createCell(cell, column, row, table));\n }, {});\n return cell;\n}\n\nconst createRow = (table, id, original, rowIndex, depth, subRows) => {\n let row = {\n id,\n index: rowIndex,\n original,\n depth,\n _valuesCache: {},\n _uniqueValuesCache: {},\n getValue: columnId => {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!column.accessorFn) {\n return undefined;\n }\n row._valuesCache[columnId] = column.accessorFn(row.original, rowIndex);\n return row._valuesCache[columnId];\n },\n getUniqueValues: columnId => {\n if (row._uniqueValuesCache.hasOwnProperty(columnId)) {\n return row._uniqueValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!column.accessorFn) {\n return undefined;\n }\n if (!column.columnDef.getUniqueValues) {\n row._uniqueValuesCache[columnId] = [row.getValue(columnId)];\n return row._uniqueValuesCache[columnId];\n }\n row._uniqueValuesCache[columnId] = column.columnDef.getUniqueValues(row.original, rowIndex);\n return row._uniqueValuesCache[columnId];\n },\n renderValue: columnId => row.getValue(columnId) ?? table.options.renderFallbackValue,\n subRows: subRows ?? [],\n getLeafRows: () => flattenBy(row.subRows, d => d.subRows),\n getAllCells: memo(() => [table.getAllLeafColumns()], leafColumns => {\n return leafColumns.map(column => {\n return createCell(table, row, column, column.id);\n });\n }, {\n key: process.env.NODE_ENV === 'development' && 'row.getAllCells',\n debug: () => table.options.debugAll ?? table.options.debugRows\n }),\n _getAllCellsByColumnId: memo(() => [row.getAllCells()], allCells => {\n return allCells.reduce((acc, cell) => {\n acc[cell.column.id] = cell;\n return acc;\n }, {});\n }, {\n key: process.env.NODE_ENV === 'production' && 'row.getAllCellsByColumnId',\n debug: () => table.options.debugAll ?? table.options.debugRows\n })\n };\n for (let i = 0; i < table._features.length; i++) {\n const feature = table._features[i];\n Object.assign(row, feature == null ? void 0 : feature.createRow == null ? void 0 : feature.createRow(row, table));\n }\n return row;\n};\n\n// type Person = {\n// firstName: string\n// lastName: string\n// age: number\n// visits: number\n// status: string\n// progress: number\n// createdAt: Date\n// nested: {\n// foo: [\n// {\n// bar: 'bar'\n// }\n// ]\n// bar: { subBar: boolean }[]\n// baz: {\n// foo: 'foo'\n// bar: {\n// baz: 'baz'\n// }\n// }\n// }\n// }\n\n// const test: DeepKeys<Person> = 'nested.foo.0.bar'\n// const test2: DeepKeys<Person> = 'nested.bar'\n\n// const helper = createColumnHelper<Person>()\n\n// helper.accessor('nested.foo', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.foo.0.bar', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.bar', {\n// cell: info => info.getValue(),\n// })\n\nfunction createColumnHelper() {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function' ? {\n ...column,\n accessorFn: accessor\n } : {\n ...column,\n accessorKey: accessor\n };\n },\n display: column => column,\n group: column => column\n };\n}\n\nfunction getCoreRowModel() {\n return table => memo(() => [table.options.data], data => {\n const rowModel = {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n const accessRows = function (originalRows, depth, parent) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n for (let i = 0; i < originalRows.length; i++) {\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 const row = createRow(table, table._getRowId(originalRows[i], i, parent), originalRows[i], i, depth);\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 table row into parent\n rows.push(row);\n\n // Get the original subrows\n if (table.options.getSubRows) {\n var _row$originalSubRows;\n row.originalSubRows = table.options.getSubRows(originalRows[i], i);\n\n // Then recursively access them\n if ((_row$originalSubRows = row.originalSubRows) != null && _row$originalSubRows.length) {\n row.subRows = accessRows(row.originalSubRows, depth + 1, row);\n }\n }\n }\n return rows;\n };\n rowModel.rows = accessRows(data);\n return rowModel;\n }, {\n key: process.env.NODE_ENV === 'development' && 'getRowModel',\n debug: () => table.options.debugAll ?? table.options.debugTable,\n onChange: () => {\n table._autoResetPageIndex();\n }\n });\n}\n\nfunction filterRows(rows, filterRowImpl, table) {\n if (table.options.filterFromLeafRows) {\n return filterRowModelFromLeafs(rows, filterRowImpl, table);\n }\n return filterRowModelFromRoot(rows, filterRowImpl, table);\n}\nfunction filterRowModelFromLeafs(rowsToFilter, filterRow, table) {\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const recurseFilterRows = function (rowsToFilter, depth) {\n const rows = [];\n\n // Filter from children up first\n for (let i = 0; i < rowsToFilter.length; i++) {\n var _row$subRows;\n let row = rowsToFilter[i];\n const newRow = createRow(table, row.id, row.original, row.index, row.depth);\n newRow.columnFilters = row.columnFilters;\n if ((_row$subRows = row.subRows) != null && _row$subRows.length) {\n newRow.subRows = recurseFilterRows(row.subRows);\n row = newRow;\n if (filterRow(row) && !newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredRowsById[i] = row;\n continue;\n }\n if (filterRow(row) || newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredRowsById[i] = row;\n continue;\n }\n } else {\n row = newRow;\n if (filterRow(row)) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredRowsById[i] = row;\n }\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\nfunction filterRowModelFromRoot(rowsToFilter, filterRow, table) {\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n\n // Filters top level and nested rows\n const recurseFilterRows = function (rowsToFilter, depth) {\n // Filter from parents downward first\n\n const rows = [];\n\n // Apply the filter to any subRows\n for (let i = 0; i < rowsToFilter.length; i++) {\n let row = rowsToFilter[i];\n const pass = filterRow(row);\n if (pass) {\n var _row$subRows2;\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length) {\n const newRow = createRow(table, row.id, row.original, row.index, row.depth);\n newRow.subRows = recurseFilterRows(row.subRows);\n row = newRow;\n }\n rows.push(row);\n newFilteredFlatRows.push(row);\n newFilteredRowsById[row.id] = row;\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\n\nfunction getFilteredRowModel() {\n return table => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter], (rowModel, columnFilters, globalFilter) => {\n if (!rowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n for (let i = 0; i < rowModel.flatRows.length; i++) {\n rowModel.flatRows[i].columnFilters = {};\n rowModel.flatRows[i].columnFiltersMeta = {};\n }\n return rowModel;\n }\n const resolvedColumnFilters = [];\n const resolvedGlobalFilters = [];\n (columnFilters ?? []).forEach(d => {\n const column = table.getColumn(d.id);\n if (!column) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Table: Could not find a column to filter with columnId: ${d.id}`);\n }\n }\n const filterFn = column.getFilterFn();\n if (!filterFn) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Could not find a valid 'column.filterFn' for column with the ID: ${column.id}.`);\n }\n return;\n }\n resolvedColumnFilters.push({\n id: d.id,\n filterFn,\n resolvedValue: (filterFn.resolveFilterValue == null ? void 0 : filterFn.resolveFilterValue(d.value)) ?? d.value\n });\n });\n const filterableIds = columnFilters.map(d => d.id);\n const globalFilterFn = table.getGlobalFilterFn();\n const globallyFilterableColumns = table.getAllLeafColumns().filter(column => column.getCanGlobalFilter());\n if (globalFilter && globalFilterFn && globallyFilterableColumns.length) {\n filterableIds.push('__global__');\n globallyFilterableColumns.forEach(column => {\n resolvedGlobalFilters.push({\n id: column.id,\n filterFn: globalFilterFn,\n resolvedValue: (globalFilterFn.resolveFilterValue == null ? void 0 : globalFilterFn.resolveFilterValue(globalFilter)) ?? globalFilter\n });\n });\n }\n let currentColumnFilter;\n let currentGlobalFilter;\n\n // Flag the prefiltered row model with each filter state\n for (let j = 0; j < rowModel.flatRows.length; j++) {\n const row = rowModel.flatRows[j];\n row.columnFilters = {};\n if (resolvedColumnFilters.length) {\n for (let i = 0; i < resolvedColumnFilters.length; i++) {\n currentColumnFilter = resolvedColumnFilters[i];\n const id = currentColumnFilter.id;\n\n // Tag the row with the column filter state\n row.columnFilters[id] = currentColumnFilter.filterFn(row, id, currentColumnFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n });\n }\n }\n if (resolvedGlobalFilters.length) {\n for (let i = 0; i < resolvedGlobalFilters.length; i++) {\n currentGlobalFilter = resolvedGlobalFilters[i];\n const id = currentGlobalFilter.id;\n // Tag the row with the first truthy global filter state\n if (currentGlobalFilter.filterFn(row, id, currentGlobalFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n })) {\n row.columnFilters.__global__ = true;\n break;\n }\n }\n if (row.columnFilters.__global__ !== true) {\n row.columnFilters.__global__ = false;\n }\n }\n }\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n\n // Filter final rows using all of the active filters\n return filterRows(rowModel.rows, filterRowsImpl, table);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getFilteredRowModel',\n debug: () => table.options.debugAll ?? table.options.debugTable,\n onChange: () => {\n table._autoResetPageIndex();\n }\n });\n}\n\nfunction getFacetedRowModel() {\n return (table, columnId) => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter, table.getFilteredRowModel()], (preRowModel, columnFilters, globalFilter) => {\n if (!preRowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n return preRowModel;\n }\n const filterableIds = [...columnFilters.map(d => d.id).filter(d => d !== columnId), globalFilter ? '__global__' : undefined].filter(Boolean);\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n return filterRows(preRowModel.rows, filterRowsImpl, table);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getFacetedRowModel_' + columnId,\n debug: () => table.options.debugAll ?? table.options.debugTable,\n onChange: () => {}\n });\n}\n\nfunction getFacetedUniqueValues() {\n return (table, columnId) => memo(() => [table.getColumn(columnId).getFacetedRowModel()], facetedRowModel => {\n let facetedUniqueValues = new Map();\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);\n for (let j = 0; j < values.length; j++) {\n const value = values[j];\n if (facetedUniqueValues.has(value)) {\n facetedUniqueValues.set(value, (facetedUniqueValues.get(value) ?? 0) + 1);\n } else {\n facetedUniqueValues.set(value, 1);\n }\n }\n }\n return facetedUniqueValues;\n }, {\n key: process.env.NODE_ENV === 'development' && 'getFacetedUniqueValues_' + columnId,\n debug: () => table.options.debugAll ?? table.options.debugTable,\n onChange: () => {}\n });\n}\n\nfunction getFacetedMinMaxValues() {\n return (table, columnId) => memo(() => [table.getColumn(columnId).getFacetedRowModel()], facetedRowModel => {\n var _facetedRowModel$flat;\n const firstValue = (_facetedRowModel$flat = facetedRowModel.flatRows[0]) == null ? void 0 : _facetedRowModel$flat.getUniqueValues(columnId);\n if (typeof firstValue === 'undefined') {\n return undefined;\n }\n let facetedMinMaxValues = [firstValue, firstValue];\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);\n for (let j = 0; j < values.length; j++) {\n const value = values[j];\n if (value < facetedMinMaxValues[0]) {\n facetedMinMaxValues[0] = value;\n } else if (value > facetedMinMaxValues[1]) {\n facetedMinMaxValues[1] = value;\n }\n }\n }\n return facetedMinMaxValues;\n }, {\n key: process.env.NODE_ENV === 'development' && 'getFacetedMinMaxValues_' + columnId,\n debug: () => table.options.debugAll ?? table.options.debugTable,\n onChange: () => {}\n });\n}\n\nfunction getSortedRowModel() {\n return table => memo(() => [table.getState().sorting, table.getPreSortedRowModel()], (sorting, rowModel) => {\n if (!rowModel.rows.length || !(sorting != null && sorting.length)) {\n return rowModel;\n }\n const sortingState = table.getState().sorting;\n const sortedFlatRows = [];\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sortingState.filter(sort => table.getColumn(sort.id).getCanSort());\n const columnInfoById = {};\n availableSorting.forEach(sortEntry => {\n const column = table.getColumn(sortEntry.id);\n columnInfoById[sortEntry.id] = {\n sortUndefined: column.columnDef.sortUndefined,\n invertSorting: column.columnDef.invertSorting,\n sortingFn: column.getSortingFn()\n };\n });\n const sortData = rows => {\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = [...rows];\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 == null ? void 0 : sortEntry.desc) ?? false;\n if (columnInfo.sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id);\n const bValue = rowB.getValue(sortEntry.id);\n const aUndefined = typeof aValue === 'undefined';\n const bUndefined = typeof bValue === 'undefined';\n if (aUndefined || bUndefined) {\n return aUndefined && bUndefined ? 0 : aUndefined ? columnInfo.sortUndefined : -columnInfo.sortUndefined;\n }\n }\n\n // This function should always return in ascending order\n let sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id);\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1;\n }\n if (columnInfo.invertSorting) {\n sortInt *= -1;\n }\n return sortInt;\n }\n }\n return rowA.index - rowB.index;\n });\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n var _row$subRows;\n sortedFlatRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length) {\n row.subRows = sortData(row.subRows);\n }\n });\n return sortedData;\n };\n return {\n rows: sortData(rowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: rowModel.rowsById\n };\n }, {\n key: process.env.NODE_ENV === 'development' && 'getSortedRowModel',\n debug: () => table.options.debugAll ?? table.options.debugTable,\n onChange: () => {\n table._autoResetPageIndex();\n }\n });\n}\n\nfunction getGroupedRowModel() {\n return table => memo(() => [table.getState().grouping, table.getPreGroupedRowModel()], (grouping, rowModel) => {\n if (!rowModel.rows.length || !grouping.length) {\n return rowModel;\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter(columnId => table.getColumn(columnId));\n const groupedFlatRows = [];\n const groupedRowsById = {};\n // const onlyGroupedFlatRows: Row[] = [];\n // const onlyGroupedRowsById: Record<RowId, Row> = {};\n // const nonGroupedFlatRows: Row[] = [];\n // const nonGroupedRowsById: Record<RowId, Row> = {};\n\n // Recursively group the data\n const groupUpRecursively = function (rows, depth, parentId) {\n if (depth === void 0) {\n depth = 0;\n }\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map(row => {\n row.depth = depth;\n groupedFlatRows.push(row);\n groupedRowsById[row.id] = row;\n if (row.subRows) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1);\n }\n return row;\n });\n }\n const columnId = existingGrouping[depth];\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId);\n\n // Peform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map((_ref, index) => {\n let [groupingValue, groupedRows] = _ref;\n let id = `${columnId}:${groupingValue}`;\n id = parentId ? `${parentId}>${id}` : id;\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id);\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth ? flattenBy(groupedRows, row => row.subRows) : groupedRows;\n const row = createRow(table, id, leafRows[0].original, index, depth);\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: columnId => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(columnId)) {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n if (groupedRows[0]) {\n row._valuesCache[columnId] = groupedRows[0].getValue(columnId) ?? undefined;\n }\n return row._valuesCache[columnId];\n }\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n\n // Aggregate the values\n const column = table.getColumn(columnId);\n const aggregateFn = column.getAggregationFn();\n if (aggregateFn) {\n row._groupingValuesCache[columnId] = aggregateFn(columnId, leafRows, groupedRows);\n return row._groupingValuesCache[columnId];\n }\n }\n });\n subRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n\n return row;\n });\n return aggregatedGroupedRows;\n };\n const groupedRows = groupUpRecursively(rowModel.rows, 0, '');\n groupedRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById\n };\n }, {\n key: process.env.NODE_ENV === 'development' && 'getGroupedRowModel',\n debug: () => table.options.debugAll ?? table.options.debugTable,\n onChange: () => {\n table._queue(() => {\n table._autoResetExpanded();\n table._autoResetPageIndex();\n });\n }\n });\n}\nfunction groupBy(rows, columnId) {\n const groupMap = new Map();\n return rows.reduce((map, row) => {\n const resKey = `${row.getValue(columnId)}`;\n const previous = map.get(resKey);\n if (!previous) {\n map.set(resKey, [row]);\n } else {\n previous.push(row);\n }\n return map;\n }, groupMap);\n}\n\nfunction getExpandedRowModel() {\n return table => memo(() => [table.getState().expanded, table.getPreExpandedRowModel(), table.options.paginateExpandedRows], (expanded, rowModel, paginateExpandedRows) => {\n if (!rowModel.rows.length || expanded !== true && !Object.keys(expanded ?? {}).length) {\n return rowModel;\n }\n if (!paginateExpandedRows) {\n // Only expand rows at this point if they are being paginated\n return rowModel;\n }\n return expandRows(rowModel);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getExpandedRowModel',\n debug: () => table.options.debugAll ?? table.options.debugTable\n });\n}\nfunction expandRows(rowModel) {\n const expandedRows = [];\n const handleRow = row => {\n var _row$subRows;\n expandedRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && row.getIsExpanded()) {\n row.subRows.forEach(handleRow);\n }\n };\n rowModel.rows.forEach(handleRow);\n return {\n rows: expandedRows,\n flatRows: rowModel.flatRows,\n rowsById: rowModel.rowsById\n };\n}\n\nfunction getPaginationRowModel(opts) {\n return table => memo(() => [table.getState().pagination, table.getPrePaginationRowModel(), table.options.paginateExpandedRows ? undefined : table.getState().expanded], (pagination, rowModel) => {\n if (!rowModel.rows.length) {\n return rowModel;\n }\n const {\n pageSize,\n pageIndex\n } = pagination;\n let {\n rows,\n flatRows,\n rowsById\n } = rowModel;\n const pageStart = pageSize * pageIndex;\n const pageEnd = pageStart + pageSize;\n rows = rows.slice(pageStart, pageEnd);\n let paginatedRowModel;\n if (!table.options.paginateExpandedRows) {\n paginatedRowModel = expandRows({\n rows,\n flatRows,\n rowsById\n });\n } else {\n paginatedRowModel = {\n rows,\n flatRows,\n rowsById\n };\n }\n paginatedRowModel.flatRows = [];\n const handleRow = row => {\n paginatedRowModel.flatRows.push(row);\n if (row.subRows.length) {\n row.subRows.forEach(handleRow);\n }\n };\n paginatedRowModel.rows.forEach(handleRow);\n return paginatedRowModel;\n }, {\n key: process.env.NODE_ENV === 'development' && 'getPaginationRowModel',\n debug: () => table.options.debugAll ?? table.options.debugTable\n });\n}\n\nexport { ColumnSizing, Expanding, Filters, Grouping, Headers, Ordering, Pagination, Pinning, RowSelection, Sorting, Visibility, aggregationFns, buildHeaderGroups, createCell, createColumn, createColumnHelper, createRow, createTable, defaultColumnSizing, expandRows, filterFns, flattenBy, functionalUpdate, getCoreRowModel, getExpandedRowModel, getFacetedMinMaxValues, getFacetedRowModel, getFacetedUniqueValues, getFilteredRowModel, getGroupedRowModel, getPaginationRowModel, getSortedRowModel, isFunction, isRowSelected, isSubRowSelected, makeStateUpdater, memo, noop, orderColumns, passiveEventSupported, reSplitAlphaNumeric, selectRowsFn, shouldAutoRemoveFilter, sortingFns };\n//# sourceMappingURL=index.js.map\n","import * as React from 'react'\nexport * from '@tanstack/table-core'\n\nimport {\n TableOptions,\n TableOptionsResolved,\n RowData,\n createTable,\n} from '@tanstack/table-core'\n\nexport type Renderable<TProps> = React.ReactNode | React.ComponentType<TProps>\n\n//\n\nexport function flexRender<TProps extends object>(\n Comp: Renderable<TProps>,\n props: TProps\n): React.ReactNode | JSX.Element {\n return !Comp ? null : isReactComponent<TProps>(Comp) ? (\n <Comp {...props} />\n ) : (\n Comp\n )\n}\n\nfunction isReactComponent<TProps>(\n component: unknown\n): component is React.ComponentType<TProps> {\n return (\n isClassComponent(component) ||\n typeof component === 'function' ||\n isExoticComponent(component)\n )\n}\n\nfunction isClassComponent(component: any) {\n return (\n typeof component === 'function' &&\n (() => {\n const proto = Object.getPrototypeOf(component)\n return proto.prototype && proto.prototype.isReactComponent\n })()\n )\n}\n\nfunction isExoticComponent(component: any) {\n return (\n typeof component === 'object' &&\n typeof component.$$typeof === 'symbol' &&\n ['react.memo', 'react.forward_ref'].includes(component.$$typeof.description)\n )\n}\n\nexport function useReactTable<TData extends RowData>(\n options: TableOptions<TData>\n) {\n // Compose in the generic options to the user options\n const resolvedOptions: TableOptionsResolved<TData> = {\n state: {}, // Dummy state\n onStateChange: () => {}, // noop\n renderFallbackValue: null,\n ...options,\n }\n\n // Create a new table and store it in state\n const [tableRef] = React.useState(() => ({\n current: createTable<TData>(resolvedOptions),\n }))\n\n // By default, manage table state here using the table's initial state\n const [state, setState] = React.useState(() => tableRef.current.initialState)\n\n // Compose the default state above with any user state. This will allow the user\n // to only control a subset of the state if desired.\n tableRef.current.setOptions(prev => ({\n ...prev,\n ...options,\n state: {\n ...state,\n ...options.state,\n },\n // Similarly, we'll maintain both our internal state and any user-provided\n // state.\n onStateChange: updater => {\n setState(updater)\n options.onStateChange?.(updater)\n },\n }))\n\n return tableRef.current\n}\n"],"names":["functionalUpdate","updater","input","makeStateUpdater","key","instance","setState","old","isFunction","d","Function","flattenBy","arr","getChildren","flat","recurse","subArr","forEach","item","push","children","length","memo","getDeps","fn","opts","result","deps","depTime","debug","Date","now","newDeps","some","dep","index","resultTime","onChange","depEndTime","Math","round","resultEndTime","resultFpsPercentage","pad","str","num","String","console","info","max","min","createColumn","table","columnDef","depth","parent","resolvedColumnDef","_getDefaultColumnDef","accessorKey","accessorFn","id","replace","undefined","header","includes","originalRow","split","Error","column","columns","getFlatColumns","_column$columns","flatMap","options","debugAll","debugColumns","getLeafColumns","_getOrderColumnsFn","orderColumns","_column$columns2","leafColumns","_features","reduce","obj","feature","Object","assign","createHeader","isPlaceholder","placeholderId","subHeaders","colSpan","rowSpan","headerGroup","getLeafHeaders","leafHeaders","recurseHeader","h","map","getContext","Headers","createTable","getHeaderGroups","getAllColumns","getVisibleLeafColumns","getState","columnPinning","left","right","allColumns","leftColumns","columnId","find","filter","Boolean","rightColumns","buildHeaderGroups","debugHeaders","getCenterHeaderGroups","getLeftHeaderGroups","getRightHeaderGroups","getFooterGroups","headerGroups","reverse","getLeftFooterGroups","getCenterFooterGroups","getRightFooterGroups","getFlatHeaders","headers","getLeftFlatHeaders","getCenterFlatHeaders","getRightFlatHeaders","getCenterLeafHeaders","flatHeaders","_header$subHeaders","getLeftLeafHeaders","_header$subHeaders2","getRightLeafHeaders","_header$subHeaders3","center","_left$","_center$","_right$","columnsToGroup","headerFamily","_headerGroups$","maxDepth","findMaxDepth","getIsVisible","createHeaderGroup","headersToGroup","join","pendingParentHeaders","headerToGroup","latestPendingParentHeader","bottomHeaders","recurseHeadersForSpans","childRowSpans","_ref","childColSpan","childRowSpan","defaultColumnSizing","size","minSize","maxSize","Number","MAX_SAFE_INTEGER","ColumnSizing","getDefaultColumnDef","getInitialState","state","columnSizing","columnSizingInfo","startOffset","startSize","deltaOffset","deltaPercentage","isResizingColumn","columnSizingStart","getDefaultOptions","columnResizeMode","onColumnSizingChange","onColumnSizingInfoChange","getSize","columnSize","getStart","position","getLeftVisibleLeafColumns","getRightVisibleLeafColumns","findIndex","prevSiblingColumn","resetSize","setColumnSizing","_","rest","getCanResize","enableResizing","enableColumnResizing","getIsResizing","sum","prevSiblingHeader","getResizeHandler","getColumn","canResize","e","persist","isTouchStartEvent","touches","clientX","updateOffset","eventType","clientXPos","newColumnSizing","setColumnSizingInfo","_ref2","headerSize","onMove","onEnd","mouseEvents","moveHandler","upHandler","document","removeEventListener","touchEvents","cancelable","preventDefault","stopPropagation","_e$touches$","passiveIfSupported","passiveEventSupported","passive","addEventListener","resetColumnSizing","defaultState","initialState","resetHeaderSizeInfo","getTotalSize","_table$getHeaderGroup","getLeftTotalSize","_table$getLeftHeaderG","getCenterTotalSize","_table$getCenterHeade","getRightTotalSize","_table$getRightHeader","passiveSupported","supported","noop","window","err","type","Expanding","expanded","onExpandedChange","paginateExpandedRows","registered","queued","_autoResetExpanded","autoResetAll","autoResetExpanded","manualExpanding","_queue","resetExpanded","setExpanded","toggleAllRowsExpanded","getIsAllRowsExpanded","_table$initialState","getCanSomeRowsExpand","getRowModel","flatRows","row","getCanExpand","getToggleAllRowsExpandedHandler","getIsSomeRowsExpanded","values","keys","getIsExpanded","getExpandedDepth","rowsById","splitId","getPreExpandedRowModel","getSortedRowModel","getExpandedRowModel","_getExpandedRowModel","createRow","toggleExpanded","exists","oldExpanded","rowId","getIsRowExpanded","_row$subRows","getRowCanExpand","enableExpanding","subRows","getToggleExpandedHandler","canExpand","includesString","filterValue","_row$getValue","search","toLowerCase","getValue","autoRemove","val","testFalsey","includesStringSensitive","_row$getValue2","equalsString","_row$getValue3","arrIncludes","_row$getValue4","arrIncludesAll","_row$getValue5","arrIncludesSome","_row$getValue6","equals","weakEquals","inNumberRange","rowValue","resolveFilterValue","unsafeMin","unsafeMax","parsedMin","parseFloat","parsedMax","isNaN","Infinity","temp","filterFns","Filters","filterFn","columnFilters","globalFilter","onColumnFiltersChange","onGlobalFilterChange","filterFromLeafRows","globalFilterFn","getColumnCanGlobalFilter","_table$getCoreRowMode","_table$getCoreRowMode2","value","getCoreRowModel","_getAllCellsByColumnId","getAutoFilterFn","firstRow","Array","isArray","getFilterFn","_table$options$filter","getCanFilter","enableColumnFilter","enableColumnFilters","enableFilters","getCanGlobalFilter","enableGlobalFilter","getIsFiltered","getFilterIndex","getFilterValue","_table$getState$colum","_table$getState$colum2","_table$getState$colum3","setFilterValue","setColumnFilters","previousfilter","newFilter","shouldAutoRemoveFilter","newFilterObj","_getFacetedRowModel","getFacetedRowModel","getPreFilteredRowModel","_getFacetedUniqueValues","getFacetedUniqueValues","Map","_getFacetedMinMaxValues","getFacetedMinMaxValues","columnFiltersMeta","getGlobalAutoFilterFn","getGlobalFilterFn","_table$options$filter2","getAllLeafColumns","_functionalUpdate","setGlobalFilter","resetGlobalFilter","resetColumnFilters","getFilteredRowModel","_getFilteredRowModel","manualFiltering","_getGlobalFacetedRowModel","getGlobalFacetedRowModel","_getGlobalFacetedUniqueValues","getGlobalFacetedUniqueValues","_getGlobalFacetedMinMaxValues","getGlobalFacetedMinMaxValues","aggregationFns","_leafRows","childRows","next","nextValue","extent","mean","leafRows","count","median","unique","from","Set","uniqueCount","_columnId","Grouping","aggregatedCell","props","_props$getValue","toString","aggregationFn","grouping","onGroupingChange","groupedColumnMode","toggleGrouping","setGrouping","getCanGroup","enableGrouping","getIsGrouped","_table$getState$group","getGroupedIndex","_table$getState$group2","indexOf","getToggleGroupingHandler","canGroup","getAutoAggregationFn","prototype","call","getAggregationFn","_table$options$aggreg","resetGrouping","getPreGroupedRowModel","getGroupedRowModel","_getGroupedRowModel","manualGrouping","groupingColumnId","_groupingValuesCache","createCell","cell","getIsPlaceholder","getIsAggregated","nonGroupingColumns","col","g","Ordering","columnOrder","onColumnOrderChange","setColumnOrder","resetColumnOrder","orderedColumns","columnOrderCopy","columnsCopy","targetColumnId","shift","foundIndex","splice","Pagination","pagination","pageIndex","pageSize","onPaginationChange","_autoResetPageIndex","autoResetPageIndex","manualPagination","resetPageIndex","setPagination","resetPagination","setPageIndex","maxPageIndex","pageCount","_table$initialState$p","resetPageSize","_table$initialState2","_table$initialState2$","setPageSize","topRowIndex","floor","setPageCount","newPageCount","getPageOptions","getPageCount","pageOptions","fill","i","debugTable","getCanPreviousPage","getCanNextPage","previousPage","nextPage","getPrePaginationRowModel","getPaginationRowModel","_getPaginationRowModel","ceil","rows","Pinning","onColumnPinningChange","pin","columnIds","setColumnPinning","getCanPin","enablePinning","getIsPinned","leafColumnIds","isLeft","isRight","getPinnedIndex","getCenterVisibleCells","_getAllVisibleCells","allCells","leftAndRight","debugRows","getLeftVisibleCells","getRightVisibleCells","resetColumnPinning","getIsSomeColumnsPinned","_pinningState$positio","pinningState","_pinningState$left","_pinningState$right","getLeftLeafColumns","getRightLeafColumns","getCenterLeafColumns","RowSelection","rowSelection","onRowSelectionChange","enableRowSelection","enableMultiRowSelection","enableSubRowSelection","setRowSelection","resetRowSelection","toggleAllRowsSelected","getIsAllRowsSelected","preGroupedFlatRows","getCanSelect","toggleAllPageRowsSelected","resolvedValue","getIsAllPageRowsSelected","mutateRowIsSelected","getPreSelectedRowModel","getSelectedRowModel","rowModel","selectRowsFn","getFilteredSelectedRowModel","getGroupedSelectedRowModel","isAllRowsSelected","paginationFlatRows","isAllPageRowsSelected","getIsSomeRowsSelected","totalSelected","getIsSomePageRowsSelected","getIsSelected","getIsSomeSelected","getToggleAllRowsSelectedHandler","target","checked","getToggleAllPageRowsSelectedHandler","toggleSelected","isSelected","selectedRowIds","isRowSelected","isSubRowSelected","getIsAllSubRowsSelected","getCanSelectSubRows","getCanMultiSelect","getToggleSelectedHandler","canSelect","_target","getRow","newSelectedFlatRows","newSelectedRowsById","recurseRows","_row$subRows2","selection","allChildrenSelected","someSelected","subRow","reSplitAlphaNumeric","compareBasic","a","b","compareAlphanumeric","aStr","bStr","aa","bb","an","parseInt","bn","combo","sort","sortingFns","alphanumeric","rowA","rowB","alphanumericCaseSensitive","text","textCaseSensitive","datetime","basic","Sorting","sorting","sortingFn","onSortingChange","isMultiSortEvent","shiftKey","getAutoSortingFn","firstRows","slice","isString","getAutoSortDir","getSortingFn","_table$options$sortin","toggleSorting","desc","multi","nextSortingOrder","getNextSortingOrder","hasManualValue","setSorting","existingSorting","existingIndex","sortAction","newSorting","nextDesc","getCanMultiSort","maxMultiSortColCount","getFirstSortDir","sortDescFirst","firstSortDirection","isSorted","getIsSorted","enableSortingRemoval","enableMultiRemove","getCanSort","enableSorting","enableMultiSort","_table$getState$sorti","columnSort","getSortIndex","_table$getState$sorti2","clearSorting","getToggleSortingHandler","canSort","resetSorting","getPreSortedRowModel","_getSortedRowModel","manualSorting","Visibility","columnVisibility","onColumnVisibilityChange","toggleVisibility","getCanHide","setColumnVisibility","enableHiding","getToggleVisibilityHandler","getAllCells","cells","getVisibleCells","makeVisibleColumnsMethod","getColumns","getVisibleFlatColumns","getAllFlatColumns","getCenterVisibleLeafColumns","resetColumnVisibility","toggleAllColumnsVisible","getIsAllColumnsVisible","getIsSomeColumnsVisible","getToggleAllColumnsVisibilityHandler","features","defaultOptions","queuedTimeout","coreInstance","cb","Promise","resolve","then","catch","error","setTimeout","reset","setOptions","newOptions","mergeOptions","onStateChange","_getRowId","getRowId","_getCoreRowModel","defaultColumn","_props$renderValue","renderValue","_getColumnDefs","columnDefs","recurseColumns","groupingColumnDef","_getAllFlatColumnsById","flatColumns","acc","renderFallbackValue","original","rowIndex","_valuesCache","_uniqueValuesCache","hasOwnProperty","getUniqueValues","getLeafRows","filterRows","filterRowImpl","rowsToFilter","filterRow","newFilteredFlatRows","newFilteredRowsById","recurseFilterRows","newRow","filterRowModelFromLeafs","filterRowModelFromRoot","expandRows","expandedRows","handleRow","accessor","display","group","Comp","component","proto","getPrototypeOf","isReactComponent","isClassComponent","$$typeof","description","isExoticComponent","React","data","accessRows","originalRows","_row$originalSubRows","getSubRows","originalSubRows","facetedRowModel","_facetedRowModel$flat","firstValue","facetedMinMaxValues","j","preRowModel","filterableIds","facetedUniqueValues","has","set","get","resolvedColumnFilters","resolvedGlobalFilters","globallyFilterableColumns","currentColumnFilter","currentGlobalFilter","filterMeta","__global__","existingGrouping","groupedFlatRows","groupedRowsById","groupUpRecursively","parentId","rowGroupsMap","groupMap","resKey","previous","groupBy","aggregatedGroupedRows","entries","groupingValue","groupedRows","aggregateFn","pageStart","pageEnd","paginatedRowModel","sortingState","sortedFlatRows","availableSorting","columnInfoById","sortEntry","sortUndefined","invertSorting","sortData","sortedData","columnInfo","isDesc","aUndefined","bUndefined","sortInt","resolvedOptions","tableRef","useState","current","prev"],"mappings":"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"}
1
+ {"version":3,"file":"index.production.js","sources":["../../../table-core/build/esm/index.js","../../src/index.tsx"],"sourcesContent":["/**\n * table-core\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\n// Is this type a tuple?\n\n// If this type is a tuple, what indices are allowed?\n\n///\n\nfunction functionalUpdate(updater, input) {\n return typeof updater === 'function' ? updater(input) : updater;\n}\nfunction noop() {\n //\n}\nfunction makeStateUpdater(key, instance) {\n return updater => {\n instance.setState(old => {\n return {\n ...old,\n [key]: functionalUpdate(updater, old[key])\n };\n });\n };\n}\nfunction isFunction(d) {\n return d instanceof Function;\n}\nfunction flattenBy(arr, getChildren) {\n const flat = [];\n const recurse = subArr => {\n subArr.forEach(item => {\n flat.push(item);\n const children = getChildren(item);\n if (children != null && children.length) {\n recurse(children);\n }\n });\n };\n recurse(arr);\n return flat;\n}\nfunction memo(getDeps, fn, opts) {\n let deps = [];\n let result;\n return () => {\n let depTime;\n if (opts.key && opts.debug) depTime = Date.now();\n const newDeps = getDeps();\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n if (!depsChanged) {\n return result;\n }\n deps = newDeps;\n let resultTime;\n if (opts.key && opts.debug) resultTime = Date.now();\n result = fn(...newDeps);\n opts == null ? void 0 : opts.onChange == null ? void 0 : opts.onChange(result);\n if (opts.key && opts.debug) {\n if (opts != null && opts.debug()) {\n const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;\n const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;\n const resultFpsPercentage = resultEndTime / 16;\n const pad = (str, num) => {\n str = String(str);\n while (str.length < num) {\n str = ' ' + str;\n }\n return str;\n };\n console.info(`%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`, `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(0, Math.min(120 - 120 * resultFpsPercentage, 120))}deg 100% 31%);`, opts == null ? void 0 : opts.key);\n }\n }\n return result;\n };\n}\n\nfunction createColumn(table, columnDef, depth, parent) {\n const defaultColumn = table._getDefaultColumnDef();\n const resolvedColumnDef = {\n ...defaultColumn,\n ...columnDef\n };\n const accessorKey = resolvedColumnDef.accessorKey;\n let id = resolvedColumnDef.id ?? (accessorKey ? accessorKey.replace('.', '_') : undefined) ?? (typeof resolvedColumnDef.header === 'string' ? resolvedColumnDef.header : undefined);\n let accessorFn;\n if (resolvedColumnDef.accessorFn) {\n accessorFn = resolvedColumnDef.accessorFn;\n } else if (accessorKey) {\n // Support deep accessor keys\n if (accessorKey.includes('.')) {\n accessorFn = originalRow => {\n let result = originalRow;\n for (const key of accessorKey.split('.')) {\n result = result[key];\n if (process.env.NODE_ENV !== 'production' && result === undefined) {\n throw new Error(`\"${key}\" in deeply nested key \"${accessorKey}\" returned undefined.`);\n }\n }\n return result;\n };\n } else {\n accessorFn = originalRow => originalRow[resolvedColumnDef.accessorKey];\n }\n }\n if (!id) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(resolvedColumnDef.accessorFn ? `Columns require an id when using an accessorFn` : `Columns require an id when using a non-string header`);\n }\n throw new Error();\n }\n let column = {\n id: `${String(id)}`,\n accessorFn,\n parent: parent,\n depth,\n columnDef: resolvedColumnDef,\n columns: [],\n getFlatColumns: memo(() => [true], () => {\n var _column$columns;\n return [column, ...((_column$columns = column.columns) == null ? void 0 : _column$columns.flatMap(d => d.getFlatColumns()))];\n }, {\n key: process.env.NODE_ENV === 'production' && 'column.getFlatColumns',\n debug: () => table.options.debugAll ?? table.options.debugColumns\n }),\n getLeafColumns: memo(() => [table._getOrderColumnsFn()], orderColumns => {\n var _column$columns2;\n if ((_column$columns2 = column.columns) != null && _column$columns2.length) {\n let leafColumns = column.columns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }\n return [column];\n }, {\n key: process.env.NODE_ENV === 'production' && 'column.getLeafColumns',\n debug: () => table.options.debugAll ?? table.options.debugColumns\n })\n };\n column = table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.createColumn == null ? void 0 : feature.createColumn(column, table));\n }, column);\n\n // Yes, we have to convert table to uknown, because we know more than the compiler here.\n return column;\n}\n\n//\n\nfunction createHeader(table, column, options) {\n const id = options.id ?? column.id;\n let header = {\n id,\n column,\n index: options.index,\n isPlaceholder: !!options.isPlaceholder,\n placeholderId: options.placeholderId,\n depth: options.depth,\n subHeaders: [],\n colSpan: 0,\n rowSpan: 0,\n headerGroup: null,\n getLeafHeaders: () => {\n const leafHeaders = [];\n const recurseHeader = h => {\n if (h.subHeaders && h.subHeaders.length) {\n h.subHeaders.map(recurseHeader);\n }\n leafHeaders.push(h);\n };\n recurseHeader(header);\n return leafHeaders;\n },\n getContext: () => ({\n table,\n header: header,\n column\n })\n };\n table._features.forEach(feature => {\n Object.assign(header, feature.createHeader == null ? void 0 : feature.createHeader(header, table));\n });\n return header;\n}\nconst Headers = {\n createTable: table => {\n return {\n // Header Groups\n\n getHeaderGroups: memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n const leftColumns = (left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) ?? [];\n const rightColumns = (right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) ?? [];\n const centerColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n const headerGroups = buildHeaderGroups(allColumns, [...leftColumns, ...centerColumns, ...rightColumns], table);\n return headerGroups;\n }, {\n key: process.env.NODE_ENV === 'development' && 'getHeaderGroups',\n debug: () => table.options.debugAll ?? table.options.debugHeaders\n }),\n getCenterHeaderGroups: memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n leafColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n return buildHeaderGroups(allColumns, leafColumns, table, 'center');\n }, {\n key: process.env.NODE_ENV === 'development' && 'getCenterHeaderGroups',\n debug: () => table.options.debugAll ?? table.options.debugHeaders\n }),\n getLeftHeaderGroups: memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left], (allColumns, leafColumns, left) => {\n const orderedLeafColumns = (left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) ?? [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'left');\n }, {\n key: process.env.NODE_ENV === 'development' && 'getLeftHeaderGroups',\n debug: () => table.options.debugAll ?? table.options.debugHeaders\n }),\n getRightHeaderGroups: memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.right], (allColumns, leafColumns, right) => {\n const orderedLeafColumns = (right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) ?? [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'right');\n }, {\n key: process.env.NODE_ENV === 'development' && 'getRightHeaderGroups',\n debug: () => table.options.debugAll ?? table.options.debugHeaders\n }),\n // Footer Groups\n\n getFooterGroups: memo(() => [table.getHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getFooterGroups',\n debug: () => table.options.debugAll ?? table.options.debugHeaders\n }),\n getLeftFooterGroups: memo(() => [table.getLeftHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getLeftFooterGroups',\n debug: () => table.options.debugAll ?? table.options.debugHeaders\n }),\n getCenterFooterGroups: memo(() => [table.getCenterHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getCenterFooterGroups',\n debug: () => table.options.debugAll ?? table.options.debugHeaders\n }),\n getRightFooterGroups: memo(() => [table.getRightHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getRightFooterGroups',\n debug: () => table.options.debugAll ?? table.options.debugHeaders\n }),\n // Flat Headers\n\n getFlatHeaders: memo(() => [table.getHeaderGroups()], headerGroups => {\n return headerGroups.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getFlatHeaders',\n debug: () => table.options.debugAll ?? table.options.debugHeaders\n }),\n getLeftFlatHeaders: memo(() => [table.getLeftHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getLeftFlatHeaders',\n debug: () => table.options.debugAll ?? table.options.debugHeaders\n }),\n getCenterFlatHeaders: memo(() => [table.getCenterHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getCenterFlatHeaders',\n debug: () => table.options.debugAll ?? table.options.debugHeaders\n }),\n getRightFlatHeaders: memo(() => [table.getRightHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getRightFlatHeaders',\n debug: () => table.options.debugAll ?? table.options.debugHeaders\n }),\n // Leaf Headers\n\n getCenterLeafHeaders: memo(() => [table.getCenterFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders;\n return !((_header$subHeaders = header.subHeaders) != null && _header$subHeaders.length);\n });\n }, {\n key: process.env.NODE_ENV === 'development' && 'getCenterLeafHeaders',\n debug: () => table.options.debugAll ?? table.options.debugHeaders\n }),\n getLeftLeafHeaders: memo(() => [table.getLeftFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders2;\n return !((_header$subHeaders2 = header.subHeaders) != null && _header$subHeaders2.length);\n });\n }, {\n key: process.env.NODE_ENV === 'development' && 'getLeftLeafHeaders',\n debug: () => table.options.debugAll ?? table.options.debugHeaders\n }),\n getRightLeafHeaders: memo(() => [table.getRightFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders3;\n return !((_header$subHeaders3 = header.subHeaders) != null && _header$subHeaders3.length);\n });\n }, {\n key: process.env.NODE_ENV === 'development' && 'getRightLeafHeaders',\n debug: () => table.options.debugAll ?? table.options.debugHeaders\n }),\n getLeafHeaders: memo(() => [table.getLeftHeaderGroups(), table.getCenterHeaderGroups(), table.getRightHeaderGroups()], (left, center, right) => {\n var _left$, _center$, _right$;\n return [...(((_left$ = left[0]) == null ? void 0 : _left$.headers) ?? []), ...(((_center$ = center[0]) == null ? void 0 : _center$.headers) ?? []), ...(((_right$ = right[0]) == null ? void 0 : _right$.headers) ?? [])].map(header => {\n return header.getLeafHeaders();\n }).flat();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getLeafHeaders',\n debug: () => table.options.debugAll ?? table.options.debugHeaders\n })\n };\n }\n};\nfunction buildHeaderGroups(allColumns, columnsToGroup, table, headerFamily) {\n var _headerGroups$;\n // Find the max depth of the columns:\n // build the leaf column row\n // build each buffer row going up\n // placeholder for non-existent level\n // real column for existing level\n\n let maxDepth = 0;\n const findMaxDepth = function (columns, depth) {\n if (depth === void 0) {\n depth = 1;\n }\n maxDepth = Math.max(maxDepth, depth);\n columns.filter(column => column.getIsVisible()).forEach(column => {\n var _column$columns;\n if ((_column$columns = column.columns) != null && _column$columns.length) {\n findMaxDepth(column.columns, depth + 1);\n }\n }, 0);\n };\n findMaxDepth(allColumns);\n let headerGroups = [];\n const createHeaderGroup = (headersToGroup, depth) => {\n // The header group we are creating\n const headerGroup = {\n depth,\n id: [headerFamily, `${depth}`].filter(Boolean).join('_'),\n headers: []\n };\n\n // The parent columns we're going to scan next\n const pendingParentHeaders = [];\n\n // Scan each column for parents\n headersToGroup.forEach(headerToGroup => {\n // What is the latest (last) parent column?\n\n const latestPendingParentHeader = [...pendingParentHeaders].reverse()[0];\n const isLeafHeader = headerToGroup.column.depth === headerGroup.depth;\n let column;\n let isPlaceholder = false;\n if (isLeafHeader && headerToGroup.column.parent) {\n // The parent header is new\n column = headerToGroup.column.parent;\n } else {\n // The parent header is repeated\n column = headerToGroup.column;\n isPlaceholder = true;\n }\n if (latestPendingParentHeader && (latestPendingParentHeader == null ? void 0 : latestPendingParentHeader.column) === column) {\n // This column is repeated. Add it as a sub header to the next batch\n latestPendingParentHeader.subHeaders.push(headerToGroup);\n } else {\n // This is a new header. Let's create it\n const header = createHeader(table, column, {\n id: [headerFamily, depth, column.id, headerToGroup == null ? void 0 : headerToGroup.id].filter(Boolean).join('_'),\n isPlaceholder,\n placeholderId: isPlaceholder ? `${pendingParentHeaders.filter(d => d.column === column).length}` : undefined,\n depth,\n index: pendingParentHeaders.length\n });\n\n // Add the headerToGroup as a subHeader of the new header\n header.subHeaders.push(headerToGroup);\n // Add the new header to the pendingParentHeaders to get grouped\n // in the next batch\n pendingParentHeaders.push(header);\n }\n headerGroup.headers.push(headerToGroup);\n headerToGroup.headerGroup = headerGroup;\n });\n headerGroups.push(headerGroup);\n if (depth > 0) {\n createHeaderGroup(pendingParentHeaders, depth - 1);\n }\n };\n const bottomHeaders = columnsToGroup.map((column, index) => createHeader(table, column, {\n depth: maxDepth,\n index\n }));\n createHeaderGroup(bottomHeaders, maxDepth - 1);\n headerGroups.reverse();\n\n // headerGroups = headerGroups.filter(headerGroup => {\n // return !headerGroup.headers.every(header => header.isPlaceholder)\n // })\n\n const recurseHeadersForSpans = headers => {\n const filteredHeaders = headers.filter(header => header.column.getIsVisible());\n return filteredHeaders.map(header => {\n let colSpan = 0;\n let rowSpan = 0;\n let childRowSpans = [0];\n if (header.subHeaders && header.subHeaders.length) {\n childRowSpans = [];\n recurseHeadersForSpans(header.subHeaders).forEach(_ref => {\n let {\n colSpan: childColSpan,\n rowSpan: childRowSpan\n } = _ref;\n colSpan += childColSpan;\n childRowSpans.push(childRowSpan);\n });\n } else {\n colSpan = 1;\n }\n const minChildRowSpan = Math.min(...childRowSpans);\n rowSpan = rowSpan + minChildRowSpan;\n header.colSpan = colSpan;\n header.rowSpan = rowSpan;\n return {\n colSpan,\n rowSpan\n };\n });\n };\n recurseHeadersForSpans(((_headerGroups$ = headerGroups[0]) == null ? void 0 : _headerGroups$.headers) ?? []);\n return headerGroups;\n}\n\n//\n\nconst defaultColumnSizing = {\n size: 150,\n minSize: 20,\n maxSize: Number.MAX_SAFE_INTEGER\n};\nconst getDefaultColumnSizingInfoState = () => ({\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n isResizingColumn: false,\n columnSizingStart: []\n});\nconst ColumnSizing = {\n getDefaultColumnDef: () => {\n return defaultColumnSizing;\n },\n getInitialState: state => {\n return {\n columnSizing: {},\n columnSizingInfo: getDefaultColumnSizingInfoState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n columnResizeMode: 'onEnd',\n onColumnSizingChange: makeStateUpdater('columnSizing', table),\n onColumnSizingInfoChange: makeStateUpdater('columnSizingInfo', table)\n };\n },\n createColumn: (column, table) => {\n return {\n getSize: () => {\n const columnSize = table.getState().columnSizing[column.id];\n return Math.min(Math.max(column.columnDef.minSize ?? defaultColumnSizing.minSize, columnSize ?? column.columnDef.size ?? defaultColumnSizing.size), column.columnDef.maxSize ?? defaultColumnSizing.maxSize);\n },\n getStart: position => {\n const columns = !position ? table.getVisibleLeafColumns() : position === 'left' ? table.getLeftVisibleLeafColumns() : table.getRightVisibleLeafColumns();\n const index = columns.findIndex(d => d.id === column.id);\n if (index > 0) {\n const prevSiblingColumn = columns[index - 1];\n return prevSiblingColumn.getStart(position) + prevSiblingColumn.getSize();\n }\n return 0;\n },\n resetSize: () => {\n table.setColumnSizing(_ref => {\n let {\n [column.id]: _,\n ...rest\n } = _ref;\n return rest;\n });\n },\n getCanResize: () => {\n return (column.columnDef.enableResizing ?? true) && (table.options.enableColumnResizing ?? true);\n },\n getIsResizing: () => {\n return table.getState().columnSizingInfo.isResizingColumn === column.id;\n }\n };\n },\n createHeader: (header, table) => {\n return {\n getSize: () => {\n let sum = 0;\n const recurse = header => {\n if (header.subHeaders.length) {\n header.subHeaders.forEach(recurse);\n } else {\n sum += header.column.getSize() ?? 0;\n }\n };\n recurse(header);\n return sum;\n },\n getStart: () => {\n if (header.index > 0) {\n const prevSiblingHeader = header.headerGroup.headers[header.index - 1];\n return prevSiblingHeader.getStart() + prevSiblingHeader.getSize();\n }\n return 0;\n },\n getResizeHandler: () => {\n const column = table.getColumn(header.column.id);\n const canResize = column.getCanResize();\n return e => {\n if (!canResize) {\n return;\n }\n e.persist == null ? void 0 : e.persist();\n if (isTouchStartEvent(e)) {\n // lets not respond to multiple touches (e.g. 2 or 3 fingers)\n if (e.touches && e.touches.length > 1) {\n return;\n }\n }\n const startSize = header.getSize();\n const columnSizingStart = header ? header.getLeafHeaders().map(d => [d.column.id, d.column.getSize()]) : [[column.id, column.getSize()]];\n const clientX = isTouchStartEvent(e) ? Math.round(e.touches[0].clientX) : e.clientX;\n const updateOffset = (eventType, clientXPos) => {\n if (typeof clientXPos !== 'number') {\n return;\n }\n let newColumnSizing = {};\n table.setColumnSizingInfo(old => {\n const deltaOffset = clientXPos - ((old == null ? void 0 : old.startOffset) ?? 0);\n const deltaPercentage = Math.max(deltaOffset / ((old == null ? void 0 : old.startSize) ?? 0), -0.999999);\n old.columnSizingStart.forEach(_ref2 => {\n let [columnId, headerSize] = _ref2;\n newColumnSizing[columnId] = Math.round(Math.max(headerSize + headerSize * deltaPercentage, 0) * 100) / 100;\n });\n return {\n ...old,\n deltaOffset,\n deltaPercentage\n };\n });\n if (table.options.columnResizeMode === 'onChange' || eventType === 'end') {\n table.setColumnSizing(old => ({\n ...old,\n ...newColumnSizing\n }));\n }\n };\n const onMove = clientXPos => updateOffset('move', clientXPos);\n const onEnd = clientXPos => {\n updateOffset('end', clientXPos);\n table.setColumnSizingInfo(old => ({\n ...old,\n isResizingColumn: false,\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n columnSizingStart: []\n }));\n };\n const mouseEvents = {\n moveHandler: e => onMove(e.clientX),\n upHandler: e => {\n document.removeEventListener('mousemove', mouseEvents.moveHandler);\n document.removeEventListener('mouseup', mouseEvents.upHandler);\n onEnd(e.clientX);\n }\n };\n const touchEvents = {\n moveHandler: e => {\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onMove(e.touches[0].clientX);\n return false;\n },\n upHandler: e => {\n var _e$touches$;\n document.removeEventListener('touchmove', touchEvents.moveHandler);\n document.removeEventListener('touchend', touchEvents.upHandler);\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onEnd((_e$touches$ = e.touches[0]) == null ? void 0 : _e$touches$.clientX);\n }\n };\n const passiveIfSupported = passiveEventSupported() ? {\n passive: false\n } : false;\n if (isTouchStartEvent(e)) {\n document.addEventListener('touchmove', touchEvents.moveHandler, passiveIfSupported);\n document.addEventListener('touchend', touchEvents.upHandler, passiveIfSupported);\n } else {\n document.addEventListener('mousemove', mouseEvents.moveHandler, passiveIfSupported);\n document.addEventListener('mouseup', mouseEvents.upHandler, passiveIfSupported);\n }\n table.setColumnSizingInfo(old => ({\n ...old,\n startOffset: clientX,\n startSize,\n deltaOffset: 0,\n deltaPercentage: 0,\n columnSizingStart,\n isResizingColumn: column.id\n }));\n };\n }\n };\n },\n createTable: table => {\n return {\n setColumnSizing: updater => table.options.onColumnSizingChange == null ? void 0 : table.options.onColumnSizingChange(updater),\n setColumnSizingInfo: updater => table.options.onColumnSizingInfoChange == null ? void 0 : table.options.onColumnSizingInfoChange(updater),\n resetColumnSizing: defaultState => {\n table.setColumnSizing(defaultState ? {} : table.initialState.columnSizing ?? {});\n },\n resetHeaderSizeInfo: defaultState => {\n table.setColumnSizingInfo(defaultState ? getDefaultColumnSizingInfoState() : table.initialState.columnSizingInfo ?? getDefaultColumnSizingInfoState());\n },\n getTotalSize: () => {\n var _table$getHeaderGroup;\n return ((_table$getHeaderGroup = table.getHeaderGroups()[0]) == null ? void 0 : _table$getHeaderGroup.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) ?? 0;\n },\n getLeftTotalSize: () => {\n var _table$getLeftHeaderG;\n return ((_table$getLeftHeaderG = table.getLeftHeaderGroups()[0]) == null ? void 0 : _table$getLeftHeaderG.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) ?? 0;\n },\n getCenterTotalSize: () => {\n var _table$getCenterHeade;\n return ((_table$getCenterHeade = table.getCenterHeaderGroups()[0]) == null ? void 0 : _table$getCenterHeade.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) ?? 0;\n },\n getRightTotalSize: () => {\n var _table$getRightHeader;\n return ((_table$getRightHeader = table.getRightHeaderGroups()[0]) == null ? void 0 : _table$getRightHeader.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) ?? 0;\n }\n };\n }\n};\nlet passiveSupported = null;\nfunction passiveEventSupported() {\n if (typeof passiveSupported === 'boolean') return passiveSupported;\n let supported = false;\n try {\n const options = {\n get passive() {\n supported = true;\n return false;\n }\n };\n const noop = () => {};\n window.addEventListener('test', noop, options);\n window.removeEventListener('test', noop);\n } catch (err) {\n supported = false;\n }\n passiveSupported = supported;\n return passiveSupported;\n}\nfunction isTouchStartEvent(e) {\n return e.type === 'touchstart';\n}\n\n//\n\nconst Expanding = {\n getInitialState: state => {\n return {\n expanded: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onExpandedChange: makeStateUpdater('expanded', table),\n paginateExpandedRows: true\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n return {\n _autoResetExpanded: () => {\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if (table.options.autoResetAll ?? table.options.autoResetExpanded ?? !table.options.manualExpanding) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetExpanded();\n queued = false;\n });\n }\n },\n setExpanded: updater => table.options.onExpandedChange == null ? void 0 : table.options.onExpandedChange(updater),\n toggleAllRowsExpanded: expanded => {\n if (expanded ?? !table.getIsAllRowsExpanded()) {\n table.setExpanded(true);\n } else {\n table.setExpanded({});\n }\n },\n resetExpanded: defaultState => {\n var _table$initialState;\n table.setExpanded(defaultState ? {} : ((_table$initialState = table.initialState) == null ? void 0 : _table$initialState.expanded) ?? {});\n },\n getCanSomeRowsExpand: () => {\n return table.getRowModel().flatRows.some(row => row.getCanExpand());\n },\n getToggleAllRowsExpandedHandler: () => {\n return e => {\n e.persist == null ? void 0 : e.persist();\n table.toggleAllRowsExpanded();\n };\n },\n getIsSomeRowsExpanded: () => {\n const expanded = table.getState().expanded;\n return expanded === true || Object.values(expanded).some(Boolean);\n },\n getIsAllRowsExpanded: () => {\n const expanded = table.getState().expanded;\n\n // If expanded is true, save some cycles and return true\n if (typeof expanded === 'boolean') {\n return expanded === true;\n }\n if (!Object.keys(expanded).length) {\n return false;\n }\n\n // If any row is not expanded, return false\n if (table.getRowModel().flatRows.some(row => !row.getIsExpanded())) {\n return false;\n }\n\n // They must all be expanded :shrug:\n return true;\n },\n getExpandedDepth: () => {\n let maxDepth = 0;\n const rowIds = table.getState().expanded === true ? Object.keys(table.getRowModel().rowsById) : Object.keys(table.getState().expanded);\n rowIds.forEach(id => {\n const splitId = id.split('.');\n maxDepth = Math.max(maxDepth, splitId.length);\n });\n return maxDepth;\n },\n getPreExpandedRowModel: () => table.getSortedRowModel(),\n getExpandedRowModel: () => {\n if (!table._getExpandedRowModel && table.options.getExpandedRowModel) {\n table._getExpandedRowModel = table.options.getExpandedRowModel(table);\n }\n if (table.options.manualExpanding || !table._getExpandedRowModel) {\n return table.getPreExpandedRowModel();\n }\n return table._getExpandedRowModel();\n }\n };\n },\n createRow: (row, table) => {\n return {\n toggleExpanded: expanded => {\n table.setExpanded(old => {\n const exists = old === true ? true : !!(old != null && old[row.id]);\n let oldExpanded = {};\n if (old === true) {\n Object.keys(table.getRowModel().rowsById).forEach(rowId => {\n oldExpanded[rowId] = true;\n });\n } else {\n oldExpanded = old;\n }\n expanded = expanded ?? !exists;\n if (!exists && expanded) {\n return {\n ...oldExpanded,\n [row.id]: true\n };\n }\n if (exists && !expanded) {\n const {\n [row.id]: _,\n ...rest\n } = oldExpanded;\n return rest;\n }\n return old;\n });\n },\n getIsExpanded: () => {\n const expanded = table.getState().expanded;\n return !!((table.options.getIsRowExpanded == null ? void 0 : table.options.getIsRowExpanded(row)) ?? (expanded === true || expanded != null && expanded[row.id]));\n },\n getCanExpand: () => {\n var _row$subRows;\n return (table.options.getRowCanExpand == null ? void 0 : table.options.getRowCanExpand(row)) ?? ((table.options.enableExpanding ?? true) && !!((_row$subRows = row.subRows) != null && _row$subRows.length));\n },\n getToggleExpandedHandler: () => {\n const canExpand = row.getCanExpand();\n return () => {\n if (!canExpand) return;\n row.toggleExpanded();\n };\n }\n };\n }\n};\n\nconst includesString = (row, columnId, filterValue) => {\n var _row$getValue;\n const search = filterValue.toLowerCase();\n return Boolean((_row$getValue = row.getValue(columnId)) == null ? void 0 : _row$getValue.toLowerCase().includes(search));\n};\nincludesString.autoRemove = val => testFalsey(val);\nconst includesStringSensitive = (row, columnId, filterValue) => {\n var _row$getValue2;\n return Boolean((_row$getValue2 = row.getValue(columnId)) == null ? void 0 : _row$getValue2.includes(filterValue));\n};\nincludesStringSensitive.autoRemove = val => testFalsey(val);\nconst equalsString = (row, columnId, filterValue) => {\n var _row$getValue3;\n return ((_row$getValue3 = row.getValue(columnId)) == null ? void 0 : _row$getValue3.toLowerCase()) === filterValue.toLowerCase();\n};\nequalsString.autoRemove = val => testFalsey(val);\nconst arrIncludes = (row, columnId, filterValue) => {\n var _row$getValue4;\n return (_row$getValue4 = row.getValue(columnId)) == null ? void 0 : _row$getValue4.includes(filterValue);\n};\narrIncludes.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst arrIncludesAll = (row, columnId, filterValue) => {\n return !filterValue.some(val => {\n var _row$getValue5;\n return !((_row$getValue5 = row.getValue(columnId)) != null && _row$getValue5.includes(val));\n });\n};\narrIncludesAll.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst arrIncludesSome = (row, columnId, filterValue) => {\n return filterValue.some(val => {\n var _row$getValue6;\n return (_row$getValue6 = row.getValue(columnId)) == null ? void 0 : _row$getValue6.includes(val);\n });\n};\narrIncludesSome.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst equals = (row, columnId, filterValue) => {\n return row.getValue(columnId) === filterValue;\n};\nequals.autoRemove = val => testFalsey(val);\nconst weakEquals = (row, columnId, filterValue) => {\n return row.getValue(columnId) == filterValue;\n};\nweakEquals.autoRemove = val => testFalsey(val);\nconst inNumberRange = (row, columnId, filterValue) => {\n let [min, max] = filterValue;\n const rowValue = row.getValue(columnId);\n return rowValue >= min && rowValue <= max;\n};\ninNumberRange.resolveFilterValue = val => {\n let [unsafeMin, unsafeMax] = val;\n let parsedMin = typeof unsafeMin !== 'number' ? parseFloat(unsafeMin) : unsafeMin;\n let parsedMax = typeof unsafeMax !== 'number' ? parseFloat(unsafeMax) : unsafeMax;\n let min = unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin;\n let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax;\n if (min > max) {\n const temp = min;\n min = max;\n max = temp;\n }\n return [min, max];\n};\ninNumberRange.autoRemove = val => testFalsey(val) || testFalsey(val[0]) && testFalsey(val[1]);\n\n// Export\n\nconst filterFns = {\n includesString,\n includesStringSensitive,\n equalsString,\n arrIncludes,\n arrIncludesAll,\n arrIncludesSome,\n equals,\n weakEquals,\n inNumberRange\n};\n// Utils\n\nfunction testFalsey(val) {\n return val === undefined || val === null || val === '';\n}\n\n//\n\nconst Filters = {\n getDefaultColumnDef: () => {\n return {\n filterFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n columnFilters: [],\n globalFilter: undefined,\n // filtersProgress: 1,\n // facetProgress: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnFiltersChange: makeStateUpdater('columnFilters', table),\n onGlobalFilterChange: makeStateUpdater('globalFilter', table),\n filterFromLeafRows: false,\n maxLeafRowFilterDepth: 100,\n globalFilterFn: 'auto',\n getColumnCanGlobalFilter: column => {\n var _table$getCoreRowMode, _table$getCoreRowMode2;\n const value = (_table$getCoreRowMode = table.getCoreRowModel().flatRows[0]) == null ? void 0 : (_table$getCoreRowMode2 = _table$getCoreRowMode._getAllCellsByColumnId()[column.id]) == null ? void 0 : _table$getCoreRowMode2.getValue();\n return typeof value === 'string' || typeof value === 'number';\n }\n };\n },\n createColumn: (column, table) => {\n return {\n getAutoFilterFn: () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return filterFns.includesString;\n }\n if (typeof value === 'number') {\n return filterFns.inNumberRange;\n }\n if (typeof value === 'boolean') {\n return filterFns.equals;\n }\n if (value !== null && typeof value === 'object') {\n return filterFns.equals;\n }\n if (Array.isArray(value)) {\n return filterFns.arrIncludes;\n }\n return filterFns.weakEquals;\n },\n getFilterFn: () => {\n var _table$options$filter;\n return isFunction(column.columnDef.filterFn) ? column.columnDef.filterFn : column.columnDef.filterFn === 'auto' ? column.getAutoFilterFn() : ((_table$options$filter = table.options.filterFns) == null ? void 0 : _table$options$filter[column.columnDef.filterFn]) ?? filterFns[column.columnDef.filterFn];\n },\n getCanFilter: () => {\n return (column.columnDef.enableColumnFilter ?? true) && (table.options.enableColumnFilters ?? true) && (table.options.enableFilters ?? true) && !!column.accessorFn;\n },\n getCanGlobalFilter: () => {\n return (column.columnDef.enableGlobalFilter ?? true) && (table.options.enableGlobalFilter ?? true) && (table.options.enableFilters ?? true) && ((table.options.getColumnCanGlobalFilter == null ? void 0 : table.options.getColumnCanGlobalFilter(column)) ?? true) && !!column.accessorFn;\n },\n getIsFiltered: () => column.getFilterIndex() > -1,\n getFilterValue: () => {\n var _table$getState$colum, _table$getState$colum2;\n return (_table$getState$colum = table.getState().columnFilters) == null ? void 0 : (_table$getState$colum2 = _table$getState$colum.find(d => d.id === column.id)) == null ? void 0 : _table$getState$colum2.value;\n },\n getFilterIndex: () => {\n var _table$getState$colum3;\n return ((_table$getState$colum3 = table.getState().columnFilters) == null ? void 0 : _table$getState$colum3.findIndex(d => d.id === column.id)) ?? -1;\n },\n setFilterValue: value => {\n table.setColumnFilters(old => {\n const filterFn = column.getFilterFn();\n const previousfilter = old == null ? void 0 : old.find(d => d.id === column.id);\n const newFilter = functionalUpdate(value, previousfilter ? previousfilter.value : undefined);\n\n //\n if (shouldAutoRemoveFilter(filterFn, newFilter, column)) {\n return (old == null ? void 0 : old.filter(d => d.id !== column.id)) ?? [];\n }\n const newFilterObj = {\n id: column.id,\n value: newFilter\n };\n if (previousfilter) {\n return (old == null ? void 0 : old.map(d => {\n if (d.id === column.id) {\n return newFilterObj;\n }\n return d;\n })) ?? [];\n }\n if (old != null && old.length) {\n return [...old, newFilterObj];\n }\n return [newFilterObj];\n });\n },\n _getFacetedRowModel: table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, column.id),\n getFacetedRowModel: () => {\n if (!column._getFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return column._getFacetedRowModel();\n },\n _getFacetedUniqueValues: table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, column.id),\n getFacetedUniqueValues: () => {\n if (!column._getFacetedUniqueValues) {\n return new Map();\n }\n return column._getFacetedUniqueValues();\n },\n _getFacetedMinMaxValues: table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, column.id),\n getFacetedMinMaxValues: () => {\n if (!column._getFacetedMinMaxValues) {\n return undefined;\n }\n return column._getFacetedMinMaxValues();\n }\n // () => [column.getFacetedRowModel()],\n // facetedRowModel => getRowModelMinMaxValues(facetedRowModel, column.id),\n };\n },\n\n createRow: (row, table) => {\n return {\n columnFilters: {},\n columnFiltersMeta: {}\n };\n },\n createTable: table => {\n return {\n getGlobalAutoFilterFn: () => {\n return filterFns.includesString;\n },\n getGlobalFilterFn: () => {\n var _table$options$filter2;\n const {\n globalFilterFn: globalFilterFn\n } = table.options;\n return isFunction(globalFilterFn) ? globalFilterFn : globalFilterFn === 'auto' ? table.getGlobalAutoFilterFn() : ((_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[globalFilterFn]) ?? filterFns[globalFilterFn];\n },\n setColumnFilters: updater => {\n const leafColumns = table.getAllLeafColumns();\n const updateFn = old => {\n var _functionalUpdate;\n return (_functionalUpdate = functionalUpdate(updater, old)) == null ? void 0 : _functionalUpdate.filter(filter => {\n const column = leafColumns.find(d => d.id === filter.id);\n if (column) {\n const filterFn = column.getFilterFn();\n if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {\n return false;\n }\n }\n return true;\n });\n };\n table.options.onColumnFiltersChange == null ? void 0 : table.options.onColumnFiltersChange(updateFn);\n },\n setGlobalFilter: updater => {\n table.options.onGlobalFilterChange == null ? void 0 : table.options.onGlobalFilterChange(updater);\n },\n resetGlobalFilter: defaultState => {\n table.setGlobalFilter(defaultState ? undefined : table.initialState.globalFilter);\n },\n resetColumnFilters: defaultState => {\n var _table$initialState;\n table.setColumnFilters(defaultState ? [] : ((_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnFilters) ?? []);\n },\n getPreFilteredRowModel: () => table.getCoreRowModel(),\n getFilteredRowModel: () => {\n if (!table._getFilteredRowModel && table.options.getFilteredRowModel) {\n table._getFilteredRowModel = table.options.getFilteredRowModel(table);\n }\n if (table.options.manualFiltering || !table._getFilteredRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getFilteredRowModel();\n },\n _getGlobalFacetedRowModel: table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, '__global__'),\n getGlobalFacetedRowModel: () => {\n if (table.options.manualFiltering || !table._getGlobalFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getGlobalFacetedRowModel();\n },\n _getGlobalFacetedUniqueValues: table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, '__global__'),\n getGlobalFacetedUniqueValues: () => {\n if (!table._getGlobalFacetedUniqueValues) {\n return new Map();\n }\n return table._getGlobalFacetedUniqueValues();\n },\n _getGlobalFacetedMinMaxValues: table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, '__global__'),\n getGlobalFacetedMinMaxValues: () => {\n if (!table._getGlobalFacetedMinMaxValues) {\n return;\n }\n return table._getGlobalFacetedMinMaxValues();\n }\n };\n }\n};\nfunction shouldAutoRemoveFilter(filterFn, value, column) {\n return (filterFn && filterFn.autoRemove ? filterFn.autoRemove(value, column) : false) || typeof value === 'undefined' || typeof value === 'string' && !value;\n}\n\nconst sum = (columnId, _leafRows, childRows) => {\n // It's faster to just add the aggregations together instead of\n // process leaf nodes individually\n return childRows.reduce((sum, next) => {\n const nextValue = next.getValue(columnId);\n return sum + (typeof nextValue === 'number' ? nextValue : 0);\n }, 0);\n};\nconst min = (columnId, _leafRows, childRows) => {\n let min;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (min > value || min === undefined && value >= value)) {\n min = value;\n }\n });\n return min;\n};\nconst max = (columnId, _leafRows, childRows) => {\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (max < value || max === undefined && value >= value)) {\n max = value;\n }\n });\n return max;\n};\nconst extent = (columnId, _leafRows, childRows) => {\n let min;\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n });\n return [min, max];\n};\nconst mean = (columnId, leafRows) => {\n let count = 0;\n let sum = 0;\n leafRows.forEach(row => {\n let value = row.getValue(columnId);\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n });\n if (count) return sum / count;\n return;\n};\nconst median = (columnId, leafRows) => {\n if (!leafRows.length) {\n return;\n }\n let min = 0;\n let max = 0;\n leafRows.forEach(row => {\n let value = row.getValue(columnId);\n if (typeof value === 'number') {\n min = Math.min(min, value);\n max = Math.max(max, value);\n }\n });\n return (min + max) / 2;\n};\nconst unique = (columnId, leafRows) => {\n return Array.from(new Set(leafRows.map(d => d.getValue(columnId))).values());\n};\nconst uniqueCount = (columnId, leafRows) => {\n return new Set(leafRows.map(d => d.getValue(columnId))).size;\n};\nconst count = (_columnId, leafRows) => {\n return leafRows.length;\n};\nconst aggregationFns = {\n sum,\n min,\n max,\n extent,\n mean,\n median,\n unique,\n uniqueCount,\n count\n};\n\n//\n\nconst Grouping = {\n getDefaultColumnDef: () => {\n return {\n aggregatedCell: props => {\n var _props$getValue;\n return ((_props$getValue = props.getValue()) == null ? void 0 : _props$getValue.toString == null ? void 0 : _props$getValue.toString()) ?? null;\n },\n aggregationFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n grouping: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onGroupingChange: makeStateUpdater('grouping', table),\n groupedColumnMode: 'reorder'\n };\n },\n createColumn: (column, table) => {\n return {\n toggleGrouping: () => {\n table.setGrouping(old => {\n // Find any existing grouping for this column\n if (old != null && old.includes(column.id)) {\n return old.filter(d => d !== column.id);\n }\n return [...(old ?? []), column.id];\n });\n },\n getCanGroup: () => {\n return column.columnDef.enableGrouping ?? true ?? table.options.enableGrouping ?? true ?? !!column.accessorFn;\n },\n getIsGrouped: () => {\n var _table$getState$group;\n return (_table$getState$group = table.getState().grouping) == null ? void 0 : _table$getState$group.includes(column.id);\n },\n getGroupedIndex: () => {\n var _table$getState$group2;\n return (_table$getState$group2 = table.getState().grouping) == null ? void 0 : _table$getState$group2.indexOf(column.id);\n },\n getToggleGroupingHandler: () => {\n const canGroup = column.getCanGroup();\n return () => {\n if (!canGroup) return;\n column.toggleGrouping();\n };\n },\n getAutoAggregationFn: () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'number') {\n return aggregationFns.sum;\n }\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return aggregationFns.extent;\n }\n },\n getAggregationFn: () => {\n var _table$options$aggreg;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.aggregationFn) ? column.columnDef.aggregationFn : column.columnDef.aggregationFn === 'auto' ? column.getAutoAggregationFn() : ((_table$options$aggreg = table.options.aggregationFns) == null ? void 0 : _table$options$aggreg[column.columnDef.aggregationFn]) ?? aggregationFns[column.columnDef.aggregationFn];\n }\n };\n },\n createTable: table => {\n return {\n setGrouping: updater => table.options.onGroupingChange == null ? void 0 : table.options.onGroupingChange(updater),\n resetGrouping: defaultState => {\n var _table$initialState;\n table.setGrouping(defaultState ? [] : ((_table$initialState = table.initialState) == null ? void 0 : _table$initialState.grouping) ?? []);\n },\n getPreGroupedRowModel: () => table.getFilteredRowModel(),\n getGroupedRowModel: () => {\n if (!table._getGroupedRowModel && table.options.getGroupedRowModel) {\n table._getGroupedRowModel = table.options.getGroupedRowModel(table);\n }\n if (table.options.manualGrouping || !table._getGroupedRowModel) {\n return table.getPreGroupedRowModel();\n }\n return table._getGroupedRowModel();\n }\n };\n },\n createRow: row => {\n return {\n getIsGrouped: () => !!row.groupingColumnId,\n _groupingValuesCache: {}\n };\n },\n createCell: (cell, column, row, table) => {\n return {\n getIsGrouped: () => column.getIsGrouped() && column.id === row.groupingColumnId,\n getIsPlaceholder: () => !cell.getIsGrouped() && column.getIsGrouped(),\n getIsAggregated: () => {\n var _row$subRows;\n return !cell.getIsGrouped() && !cell.getIsPlaceholder() && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n }\n };\n }\n};\nfunction orderColumns(leafColumns, grouping, groupedColumnMode) {\n if (!(grouping != null && grouping.length) || !groupedColumnMode) {\n return leafColumns;\n }\n const nonGroupingColumns = leafColumns.filter(col => !grouping.includes(col.id));\n if (groupedColumnMode === 'remove') {\n return nonGroupingColumns;\n }\n const groupingColumns = grouping.map(g => leafColumns.find(col => col.id === g)).filter(Boolean);\n return [...groupingColumns, ...nonGroupingColumns];\n}\n\n//\n\nconst Ordering = {\n getInitialState: state => {\n return {\n columnOrder: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnOrderChange: makeStateUpdater('columnOrder', table)\n };\n },\n createTable: table => {\n return {\n setColumnOrder: updater => table.options.onColumnOrderChange == null ? void 0 : table.options.onColumnOrderChange(updater),\n resetColumnOrder: defaultState => {\n table.setColumnOrder(defaultState ? [] : table.initialState.columnOrder ?? []);\n },\n _getOrderColumnsFn: memo(() => [table.getState().columnOrder, table.getState().grouping, table.options.groupedColumnMode], (columnOrder, grouping, groupedColumnMode) => columns => {\n // Sort grouped columns to the start of the column list\n // before the headers are built\n let orderedColumns = [];\n\n // If there is no order, return the normal columns\n if (!(columnOrder != null && columnOrder.length)) {\n orderedColumns = columns;\n } else {\n const columnOrderCopy = [...columnOrder];\n\n // If there is an order, make a copy of the columns\n const columnsCopy = [...columns];\n\n // And make a new ordered array of the columns\n\n // Loop over the columns and place them in order into the new array\n while (columnsCopy.length && columnOrderCopy.length) {\n const targetColumnId = columnOrderCopy.shift();\n const foundIndex = columnsCopy.findIndex(d => d.id === targetColumnId);\n if (foundIndex > -1) {\n orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]);\n }\n }\n\n // If there are any columns left, add them to the end\n orderedColumns = [...orderedColumns, ...columnsCopy];\n }\n return orderColumns(orderedColumns, grouping, groupedColumnMode);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getOrderColumnsFn'\n // debug: () => table.options.debugAll ?? table.options.debugTable,\n })\n };\n }\n};\n\n//\n\nconst defaultPageIndex = 0;\nconst defaultPageSize = 10;\nconst getDefaultPaginationState = () => ({\n pageIndex: defaultPageIndex,\n pageSize: defaultPageSize\n});\nconst Pagination = {\n getInitialState: state => {\n return {\n ...state,\n pagination: {\n ...getDefaultPaginationState(),\n ...(state == null ? void 0 : state.pagination)\n }\n };\n },\n getDefaultOptions: table => {\n return {\n onPaginationChange: makeStateUpdater('pagination', table)\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n return {\n _autoResetPageIndex: () => {\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if (table.options.autoResetAll ?? table.options.autoResetPageIndex ?? !table.options.manualPagination) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetPageIndex();\n queued = false;\n });\n }\n },\n setPagination: updater => {\n const safeUpdater = old => {\n let newState = functionalUpdate(updater, old);\n return newState;\n };\n return table.options.onPaginationChange == null ? void 0 : table.options.onPaginationChange(safeUpdater);\n },\n resetPagination: defaultState => {\n table.setPagination(defaultState ? getDefaultPaginationState() : table.initialState.pagination ?? getDefaultPaginationState());\n },\n setPageIndex: updater => {\n table.setPagination(old => {\n let pageIndex = functionalUpdate(updater, old.pageIndex);\n const maxPageIndex = typeof table.options.pageCount === 'undefined' || table.options.pageCount === -1 ? Number.MAX_SAFE_INTEGER : table.options.pageCount - 1;\n pageIndex = Math.max(0, Math.min(pageIndex, maxPageIndex));\n return {\n ...old,\n pageIndex\n };\n });\n },\n resetPageIndex: defaultState => {\n var _table$initialState, _table$initialState$p;\n table.setPageIndex(defaultState ? defaultPageIndex : ((_table$initialState = table.initialState) == null ? void 0 : (_table$initialState$p = _table$initialState.pagination) == null ? void 0 : _table$initialState$p.pageIndex) ?? defaultPageIndex);\n },\n resetPageSize: defaultState => {\n var _table$initialState2, _table$initialState2$;\n table.setPageSize(defaultState ? defaultPageSize : ((_table$initialState2 = table.initialState) == null ? void 0 : (_table$initialState2$ = _table$initialState2.pagination) == null ? void 0 : _table$initialState2$.pageSize) ?? defaultPageSize);\n },\n setPageSize: updater => {\n table.setPagination(old => {\n const pageSize = Math.max(1, functionalUpdate(updater, old.pageSize));\n const topRowIndex = old.pageSize * old.pageIndex;\n const pageIndex = Math.floor(topRowIndex / pageSize);\n return {\n ...old,\n pageIndex,\n pageSize\n };\n });\n },\n setPageCount: updater => table.setPagination(old => {\n let newPageCount = functionalUpdate(updater, table.options.pageCount ?? -1);\n if (typeof newPageCount === 'number') {\n newPageCount = Math.max(-1, newPageCount);\n }\n return {\n ...old,\n pageCount: newPageCount\n };\n }),\n getPageOptions: memo(() => [table.getPageCount()], pageCount => {\n let pageOptions = [];\n if (pageCount && pageCount > 0) {\n pageOptions = [...new Array(pageCount)].fill(null).map((_, i) => i);\n }\n return pageOptions;\n }, {\n key: process.env.NODE_ENV === 'development' && 'getPageOptions',\n debug: () => table.options.debugAll ?? table.options.debugTable\n }),\n getCanPreviousPage: () => table.getState().pagination.pageIndex > 0,\n getCanNextPage: () => {\n const {\n pageIndex\n } = table.getState().pagination;\n const pageCount = table.getPageCount();\n if (pageCount === -1) {\n return true;\n }\n if (pageCount === 0) {\n return false;\n }\n return pageIndex < pageCount - 1;\n },\n previousPage: () => {\n return table.setPageIndex(old => old - 1);\n },\n nextPage: () => {\n return table.setPageIndex(old => {\n return old + 1;\n });\n },\n getPrePaginationRowModel: () => table.getExpandedRowModel(),\n getPaginationRowModel: () => {\n if (!table._getPaginationRowModel && table.options.getPaginationRowModel) {\n table._getPaginationRowModel = table.options.getPaginationRowModel(table);\n }\n if (table.options.manualPagination || !table._getPaginationRowModel) {\n return table.getPrePaginationRowModel();\n }\n return table._getPaginationRowModel();\n },\n getPageCount: () => {\n return table.options.pageCount ?? Math.ceil(table.getPrePaginationRowModel().rows.length / table.getState().pagination.pageSize);\n }\n };\n }\n};\n\n//\n\nconst getDefaultPinningState = () => ({\n left: [],\n right: []\n});\nconst Pinning = {\n getInitialState: state => {\n return {\n columnPinning: getDefaultPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnPinningChange: makeStateUpdater('columnPinning', table)\n };\n },\n createColumn: (column, table) => {\n return {\n pin: position => {\n const columnIds = column.getLeafColumns().map(d => d.id).filter(Boolean);\n table.setColumnPinning(old => {\n if (position === 'right') {\n return {\n left: ((old == null ? void 0 : old.left) ?? []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: [...((old == null ? void 0 : old.right) ?? []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds]\n };\n }\n if (position === 'left') {\n return {\n left: [...((old == null ? void 0 : old.left) ?? []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds],\n right: ((old == null ? void 0 : old.right) ?? []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n }\n return {\n left: ((old == null ? void 0 : old.left) ?? []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: ((old == null ? void 0 : old.right) ?? []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n });\n },\n getCanPin: () => {\n const leafColumns = column.getLeafColumns();\n return leafColumns.some(d => (d.columnDef.enablePinning ?? true) && (table.options.enablePinning ?? true));\n },\n getIsPinned: () => {\n const leafColumnIds = column.getLeafColumns().map(d => d.id);\n const {\n left,\n right\n } = table.getState().columnPinning;\n const isLeft = leafColumnIds.some(d => left == null ? void 0 : left.includes(d));\n const isRight = leafColumnIds.some(d => right == null ? void 0 : right.includes(d));\n return isLeft ? 'left' : isRight ? 'right' : false;\n },\n getPinnedIndex: () => {\n var _table$getState$colum, _table$getState$colum2;\n const position = column.getIsPinned();\n return position ? ((_table$getState$colum = table.getState().columnPinning) == null ? void 0 : (_table$getState$colum2 = _table$getState$colum[position]) == null ? void 0 : _table$getState$colum2.indexOf(column.id)) ?? -1 : 0;\n }\n };\n },\n createRow: (row, table) => {\n return {\n getCenterVisibleCells: memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allCells, left, right) => {\n const leftAndRight = [...(left ?? []), ...(right ?? [])];\n return allCells.filter(d => !leftAndRight.includes(d.column.id));\n }, {\n key: process.env.NODE_ENV === 'production' && 'row.getCenterVisibleCells',\n debug: () => table.options.debugAll ?? table.options.debugRows\n }),\n getLeftVisibleCells: memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left,,], (allCells, left) => {\n const cells = (left ?? []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'left'\n }));\n return cells;\n }, {\n key: process.env.NODE_ENV === 'production' && 'row.getLeftVisibleCells',\n debug: () => table.options.debugAll ?? table.options.debugRows\n }),\n getRightVisibleCells: memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.right], (allCells, right) => {\n const cells = (right ?? []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'right'\n }));\n return cells;\n }, {\n key: process.env.NODE_ENV === 'production' && 'row.getRightVisibleCells',\n debug: () => table.options.debugAll ?? table.options.debugRows\n })\n };\n },\n createTable: table => {\n return {\n setColumnPinning: updater => table.options.onColumnPinningChange == null ? void 0 : table.options.onColumnPinningChange(updater),\n resetColumnPinning: defaultState => {\n var _table$initialState;\n return table.setColumnPinning(defaultState ? getDefaultPinningState() : ((_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnPinning) ?? getDefaultPinningState());\n },\n getIsSomeColumnsPinned: position => {\n var _pinningState$positio;\n const pinningState = table.getState().columnPinning;\n if (!position) {\n var _pinningState$left, _pinningState$right;\n return Boolean(((_pinningState$left = pinningState.left) == null ? void 0 : _pinningState$left.length) || ((_pinningState$right = pinningState.right) == null ? void 0 : _pinningState$right.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n },\n getLeftLeafColumns: memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left], (allColumns, left) => {\n return (left ?? []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getLeftLeafColumns',\n debug: () => table.options.debugAll ?? table.options.debugColumns\n }),\n getRightLeafColumns: memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.right], (allColumns, right) => {\n return (right ?? []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getRightLeafColumns',\n debug: () => table.options.debugAll ?? table.options.debugColumns\n }),\n getCenterLeafColumns: memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, left, right) => {\n const leftAndRight = [...(left ?? []), ...(right ?? [])];\n return allColumns.filter(d => !leftAndRight.includes(d.id));\n }, {\n key: process.env.NODE_ENV === 'development' && 'getCenterLeafColumns',\n debug: () => table.options.debugAll ?? table.options.debugColumns\n })\n };\n }\n};\n\n//\n\nconst RowSelection = {\n getInitialState: state => {\n return {\n rowSelection: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onRowSelectionChange: makeStateUpdater('rowSelection', table),\n enableRowSelection: true,\n enableMultiRowSelection: true,\n enableSubRowSelection: true\n // enableGroupingRowSelection: false,\n // isAdditiveSelectEvent: (e: unknown) => !!e.metaKey,\n // isInclusiveSelectEvent: (e: unknown) => !!e.shiftKey,\n };\n },\n\n createTable: table => {\n return {\n setRowSelection: updater => table.options.onRowSelectionChange == null ? void 0 : table.options.onRowSelectionChange(updater),\n resetRowSelection: defaultState => table.setRowSelection(defaultState ? {} : table.initialState.rowSelection ?? {}),\n toggleAllRowsSelected: value => {\n table.setRowSelection(old => {\n value = typeof value !== 'undefined' ? value : !table.getIsAllRowsSelected();\n const rowSelection = {\n ...old\n };\n const preGroupedFlatRows = table.getPreGroupedRowModel().flatRows;\n\n // We don't use `mutateRowIsSelected` here for performance reasons.\n // All of the rows are flat already, so it wouldn't be worth it\n if (value) {\n preGroupedFlatRows.forEach(row => {\n if (!row.getCanSelect()) {\n return;\n }\n rowSelection[row.id] = true;\n });\n } else {\n preGroupedFlatRows.forEach(row => {\n delete rowSelection[row.id];\n });\n }\n return rowSelection;\n });\n },\n toggleAllPageRowsSelected: value => table.setRowSelection(old => {\n const resolvedValue = typeof value !== 'undefined' ? value : !table.getIsAllPageRowsSelected();\n const rowSelection = {\n ...old\n };\n table.getRowModel().rows.forEach(row => {\n mutateRowIsSelected(rowSelection, row.id, resolvedValue, table);\n });\n return rowSelection;\n }),\n // addRowSelectionRange: rowId => {\n // const {\n // rows,\n // rowsById,\n // options: { selectGroupingRows, selectSubRows },\n // } = table\n\n // const findSelectedRow = (rows: Row[]) => {\n // let found\n // rows.find(d => {\n // if (d.getIsSelected()) {\n // found = d\n // return true\n // }\n // const subFound = findSelectedRow(d.subRows || [])\n // if (subFound) {\n // found = subFound\n // return true\n // }\n // return false\n // })\n // return found\n // }\n\n // const firstRow = findSelectedRow(rows) || rows[0]\n // const lastRow = rowsById[rowId]\n\n // let include = false\n // const selectedRowIds = {}\n\n // const addRow = (row: Row) => {\n // mutateRowIsSelected(selectedRowIds, row.id, true, {\n // rowsById,\n // selectGroupingRows: selectGroupingRows!,\n // selectSubRows: selectSubRows!,\n // })\n // }\n\n // table.rows.forEach(row => {\n // const isFirstRow = row.id === firstRow.id\n // const isLastRow = row.id === lastRow.id\n\n // if (isFirstRow || isLastRow) {\n // if (!include) {\n // include = true\n // } else if (include) {\n // addRow(row)\n // include = false\n // }\n // }\n\n // if (include) {\n // addRow(row)\n // }\n // })\n\n // table.setRowSelection(selectedRowIds)\n // },\n getPreSelectedRowModel: () => table.getCoreRowModel(),\n getSelectedRowModel: memo(() => [table.getState().rowSelection, table.getCoreRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getSelectedRowModel',\n debug: () => table.options.debugAll ?? table.options.debugTable\n }),\n getFilteredSelectedRowModel: memo(() => [table.getState().rowSelection, table.getFilteredRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, {\n key: process.env.NODE_ENV === 'production' && 'getFilteredSelectedRowModel',\n debug: () => table.options.debugAll ?? table.options.debugTable\n }),\n getGroupedSelectedRowModel: memo(() => [table.getState().rowSelection, table.getSortedRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, {\n key: process.env.NODE_ENV === 'production' && 'getGroupedSelectedRowModel',\n debug: () => table.options.debugAll ?? table.options.debugTable\n }),\n ///\n\n // getGroupingRowCanSelect: rowId => {\n // const row = table.getRow(rowId)\n\n // if (!row) {\n // throw new Error()\n // }\n\n // if (typeof table.options.enableGroupingRowSelection === 'function') {\n // return table.options.enableGroupingRowSelection(row)\n // }\n\n // return table.options.enableGroupingRowSelection ?? false\n // },\n\n getIsAllRowsSelected: () => {\n const preGroupedFlatRows = table.getFilteredRowModel().flatRows;\n const {\n rowSelection\n } = table.getState();\n let isAllRowsSelected = Boolean(preGroupedFlatRows.length && Object.keys(rowSelection).length);\n if (isAllRowsSelected) {\n if (preGroupedFlatRows.some(row => row.getCanSelect() && !rowSelection[row.id])) {\n isAllRowsSelected = false;\n }\n }\n return isAllRowsSelected;\n },\n getIsAllPageRowsSelected: () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows;\n const {\n rowSelection\n } = table.getState();\n let isAllPageRowsSelected = !!paginationFlatRows.length;\n if (isAllPageRowsSelected && paginationFlatRows.some(row => !rowSelection[row.id])) {\n isAllPageRowsSelected = false;\n }\n return isAllPageRowsSelected;\n },\n getIsSomeRowsSelected: () => {\n const totalSelected = Object.keys(table.getState().rowSelection ?? {}).length;\n return totalSelected > 0 && totalSelected < table.getFilteredRowModel().flatRows.length;\n },\n getIsSomePageRowsSelected: () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows;\n return table.getIsAllPageRowsSelected() ? false : paginationFlatRows.some(d => d.getIsSelected() || d.getIsSomeSelected());\n },\n getToggleAllRowsSelectedHandler: () => {\n return e => {\n table.toggleAllRowsSelected(e.target.checked);\n };\n },\n getToggleAllPageRowsSelectedHandler: () => {\n return e => {\n table.toggleAllPageRowsSelected(e.target.checked);\n };\n }\n };\n },\n createRow: (row, table) => {\n return {\n toggleSelected: value => {\n const isSelected = row.getIsSelected();\n table.setRowSelection(old => {\n value = typeof value !== 'undefined' ? value : !isSelected;\n if (isSelected === value) {\n return old;\n }\n const selectedRowIds = {\n ...old\n };\n mutateRowIsSelected(selectedRowIds, row.id, value, table);\n return selectedRowIds;\n });\n },\n getIsSelected: () => {\n const {\n rowSelection\n } = table.getState();\n return isRowSelected(row, rowSelection);\n },\n getIsSomeSelected: () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'some';\n },\n getIsAllSubRowsSelected: () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'all';\n },\n getCanSelect: () => {\n if (typeof table.options.enableRowSelection === 'function') {\n return table.options.enableRowSelection(row);\n }\n return table.options.enableRowSelection ?? true;\n },\n getCanSelectSubRows: () => {\n if (typeof table.options.enableSubRowSelection === 'function') {\n return table.options.enableSubRowSelection(row);\n }\n return table.options.enableSubRowSelection ?? true;\n },\n getCanMultiSelect: () => {\n if (typeof table.options.enableMultiRowSelection === 'function') {\n return table.options.enableMultiRowSelection(row);\n }\n return table.options.enableMultiRowSelection ?? true;\n },\n getToggleSelectedHandler: () => {\n const canSelect = row.getCanSelect();\n return e => {\n var _target;\n if (!canSelect) return;\n row.toggleSelected((_target = e.target) == null ? void 0 : _target.checked);\n };\n }\n };\n }\n};\nconst mutateRowIsSelected = (selectedRowIds, id, value, table) => {\n var _row$subRows;\n const row = table.getRow(id);\n\n // const isGrouped = row.getIsGrouped()\n\n // if ( // TODO: enforce grouping row selection rules\n // !isGrouped ||\n // (isGrouped && table.options.enableGroupingRowSelection)\n // ) {\n if (value) {\n if (!row.getCanMultiSelect()) {\n Object.keys(selectedRowIds).forEach(key => delete selectedRowIds[key]);\n }\n if (row.getCanSelect()) {\n selectedRowIds[id] = true;\n }\n } else {\n delete selectedRowIds[id];\n }\n // }\n\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && row.getCanSelectSubRows()) {\n row.subRows.forEach(row => mutateRowIsSelected(selectedRowIds, row.id, value, table));\n }\n};\nfunction selectRowsFn(table, rowModel) {\n const rowSelection = table.getState().rowSelection;\n const newSelectedFlatRows = [];\n const newSelectedRowsById = {};\n\n // Filters top level and nested rows\n const recurseRows = function (rows, depth) {\n return rows.map(row => {\n var _row$subRows2;\n const isSelected = isRowSelected(row, rowSelection);\n if (isSelected) {\n newSelectedFlatRows.push(row);\n newSelectedRowsById[row.id] = row;\n }\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length) {\n row = {\n ...row,\n subRows: recurseRows(row.subRows)\n };\n }\n if (isSelected) {\n return row;\n }\n }).filter(Boolean);\n };\n return {\n rows: recurseRows(rowModel.rows),\n flatRows: newSelectedFlatRows,\n rowsById: newSelectedRowsById\n };\n}\nfunction isRowSelected(row, selection) {\n return selection[row.id] ?? false;\n}\nfunction isSubRowSelected(row, selection, table) {\n if (row.subRows && row.subRows.length) {\n let allChildrenSelected = true;\n let someSelected = false;\n row.subRows.forEach(subRow => {\n // Bail out early if we know both of these\n if (someSelected && !allChildrenSelected) {\n return;\n }\n if (isRowSelected(subRow, selection)) {\n someSelected = true;\n } else {\n allChildrenSelected = false;\n }\n });\n return allChildrenSelected ? 'all' : someSelected ? 'some' : false;\n }\n return false;\n}\n\nconst reSplitAlphaNumeric = /([0-9]+)/gm;\nconst alphanumeric = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\nconst alphanumericCaseSensitive = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst text = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst textCaseSensitive = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\nconst datetime = (rowA, rowB, columnId) => {\n const a = rowA.getValue(columnId);\n const b = rowB.getValue(columnId);\n\n // Can handle nullish values\n // Use > and < because == (and ===) doesn't work with\n // Date objects (would require calling getTime()).\n return a > b ? 1 : a < b ? -1 : 0;\n};\nconst basic = (rowA, rowB, columnId) => {\n return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId));\n};\n\n// Utils\n\nfunction compareBasic(a, b) {\n return a === b ? 0 : a > b ? 1 : -1;\n}\nfunction toString(a) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return '';\n }\n return String(a);\n }\n if (typeof a === 'string') {\n return a;\n }\n return '';\n}\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nfunction compareAlphanumeric(aStr, bStr) {\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n const a = aStr.split(reSplitAlphaNumeric).filter(Boolean);\n const b = bStr.split(reSplitAlphaNumeric).filter(Boolean);\n\n // While\n while (a.length && b.length) {\n const aa = a.shift();\n const bb = b.shift();\n const an = parseInt(aa, 10);\n const bn = parseInt(bb, 10);\n const combo = [an, bn].sort();\n\n // Both are string\n if (isNaN(combo[0])) {\n if (aa > bb) {\n return 1;\n }\n if (bb > aa) {\n return -1;\n }\n continue;\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1])) {\n return isNaN(an) ? -1 : 1;\n }\n\n // Both are numbers\n if (an > bn) {\n return 1;\n }\n if (bn > an) {\n return -1;\n }\n }\n return a.length - b.length;\n}\n\n// Exports\n\nconst sortingFns = {\n alphanumeric,\n alphanumericCaseSensitive,\n text,\n textCaseSensitive,\n datetime,\n basic\n};\n\n//\n\nconst Sorting = {\n getInitialState: state => {\n return {\n sorting: [],\n ...state\n };\n },\n getDefaultColumnDef: () => {\n return {\n sortingFn: 'auto'\n };\n },\n getDefaultOptions: table => {\n return {\n onSortingChange: makeStateUpdater('sorting', table),\n isMultiSortEvent: e => {\n return e.shiftKey;\n }\n };\n },\n createColumn: (column, table) => {\n return {\n getAutoSortingFn: () => {\n const firstRows = table.getFilteredRowModel().flatRows.slice(10);\n let isString = false;\n for (const row of firstRows) {\n const value = row == null ? void 0 : row.getValue(column.id);\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortingFns.datetime;\n }\n if (typeof value === 'string') {\n isString = true;\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortingFns.alphanumeric;\n }\n }\n }\n if (isString) {\n return sortingFns.text;\n }\n return sortingFns.basic;\n },\n getAutoSortDir: () => {\n const firstRow = table.getFilteredRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return 'asc';\n }\n return 'desc';\n },\n getSortingFn: () => {\n var _table$options$sortin;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.sortingFn) ? column.columnDef.sortingFn : column.columnDef.sortingFn === 'auto' ? column.getAutoSortingFn() : ((_table$options$sortin = table.options.sortingFns) == null ? void 0 : _table$options$sortin[column.columnDef.sortingFn]) ?? sortingFns[column.columnDef.sortingFn];\n },\n toggleSorting: (desc, multi) => {\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // table.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n // this needs to be outside of table.setSorting to be in sync with rerender\n const nextSortingOrder = column.getNextSortingOrder();\n const hasManualValue = typeof desc !== 'undefined' && desc !== null;\n table.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old == null ? void 0 : old.find(d => d.id === column.id);\n const existingIndex = old == null ? void 0 : old.findIndex(d => d.id === column.id);\n let newSorting = [];\n\n // What should we do with this sort action?\n let sortAction;\n let nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc';\n\n // Multi-mode\n if (old != null && old.length && column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'add';\n }\n } else {\n // Normal mode\n if (old != null && old.length && existingIndex !== old.length - 1) {\n sortAction = 'replace';\n } else if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'replace';\n }\n }\n\n // Handle toggle states that will remove the sorting\n if (sortAction === 'toggle') {\n // If we are \"actually\" toggling (not a manual set value), should we remove the sorting?\n if (!hasManualValue) {\n // Is our intention to remove?\n if (!nextSortingOrder) {\n sortAction = 'remove';\n }\n }\n }\n if (sortAction === 'add') {\n newSorting = [...old, {\n id: column.id,\n desc: nextDesc\n }];\n // Take latest n columns\n newSorting.splice(0, newSorting.length - (table.options.maxMultiSortColCount ?? Number.MAX_SAFE_INTEGER));\n } else if (sortAction === 'toggle') {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === column.id) {\n return {\n ...d,\n desc: nextDesc\n };\n }\n return d;\n });\n } else if (sortAction === 'remove') {\n newSorting = old.filter(d => d.id !== column.id);\n } else {\n newSorting = [{\n id: column.id,\n desc: nextDesc\n }];\n }\n return newSorting;\n });\n },\n getFirstSortDir: () => {\n const sortDescFirst = column.columnDef.sortDescFirst ?? table.options.sortDescFirst ?? column.getAutoSortDir() === 'desc';\n return sortDescFirst ? 'desc' : 'asc';\n },\n getNextSortingOrder: multi => {\n const firstSortDirection = column.getFirstSortDir();\n const isSorted = column.getIsSorted();\n if (!isSorted) {\n return firstSortDirection;\n }\n if (isSorted !== firstSortDirection && (table.options.enableSortingRemoval ?? true) && (\n // If enableSortRemove, enable in general\n multi ? table.options.enableMultiRemove ?? true : true) // If multi, don't allow if enableMultiRemove))\n ) {\n return false;\n }\n return isSorted === 'desc' ? 'asc' : 'desc';\n },\n getCanSort: () => {\n return (column.columnDef.enableSorting ?? true) && (table.options.enableSorting ?? true) && !!column.accessorFn;\n },\n getCanMultiSort: () => {\n return column.columnDef.enableMultiSort ?? table.options.enableMultiSort ?? !!column.accessorFn;\n },\n getIsSorted: () => {\n var _table$getState$sorti;\n const columnSort = (_table$getState$sorti = table.getState().sorting) == null ? void 0 : _table$getState$sorti.find(d => d.id === column.id);\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc';\n },\n getSortIndex: () => {\n var _table$getState$sorti2;\n return ((_table$getState$sorti2 = table.getState().sorting) == null ? void 0 : _table$getState$sorti2.findIndex(d => d.id === column.id)) ?? -1;\n },\n clearSorting: () => {\n //clear sorting for just 1 column\n table.setSorting(old => old != null && old.length ? old.filter(d => d.id !== column.id) : []);\n },\n getToggleSortingHandler: () => {\n const canSort = column.getCanSort();\n return e => {\n if (!canSort) return;\n e.persist == null ? void 0 : e.persist();\n column.toggleSorting == null ? void 0 : column.toggleSorting(undefined, column.getCanMultiSort() ? table.options.isMultiSortEvent == null ? void 0 : table.options.isMultiSortEvent(e) : false);\n };\n }\n };\n },\n createTable: table => {\n return {\n setSorting: updater => table.options.onSortingChange == null ? void 0 : table.options.onSortingChange(updater),\n resetSorting: defaultState => {\n var _table$initialState;\n table.setSorting(defaultState ? [] : ((_table$initialState = table.initialState) == null ? void 0 : _table$initialState.sorting) ?? []);\n },\n getPreSortedRowModel: () => table.getGroupedRowModel(),\n getSortedRowModel: () => {\n if (!table._getSortedRowModel && table.options.getSortedRowModel) {\n table._getSortedRowModel = table.options.getSortedRowModel(table);\n }\n if (table.options.manualSorting || !table._getSortedRowModel) {\n return table.getPreSortedRowModel();\n }\n return table._getSortedRowModel();\n }\n };\n }\n};\n\n//\n\nconst Visibility = {\n getInitialState: state => {\n return {\n columnVisibility: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', table)\n };\n },\n createColumn: (column, table) => {\n return {\n toggleVisibility: value => {\n if (column.getCanHide()) {\n table.setColumnVisibility(old => ({\n ...old,\n [column.id]: value ?? !column.getIsVisible()\n }));\n }\n },\n getIsVisible: () => {\n var _table$getState$colum;\n return ((_table$getState$colum = table.getState().columnVisibility) == null ? void 0 : _table$getState$colum[column.id]) ?? true;\n },\n getCanHide: () => {\n return (column.columnDef.enableHiding ?? true) && (table.options.enableHiding ?? true);\n },\n getToggleVisibilityHandler: () => {\n return e => {\n column.toggleVisibility == null ? void 0 : column.toggleVisibility(e.target.checked);\n };\n }\n };\n },\n createRow: (row, table) => {\n return {\n _getAllVisibleCells: memo(() => [row.getAllCells(), table.getState().columnVisibility], cells => {\n return cells.filter(cell => cell.column.getIsVisible());\n }, {\n key: process.env.NODE_ENV === 'production' && 'row._getAllVisibleCells',\n debug: () => table.options.debugAll ?? table.options.debugRows\n }),\n getVisibleCells: memo(() => [row.getLeftVisibleCells(), row.getCenterVisibleCells(), row.getRightVisibleCells()], (left, center, right) => [...left, ...center, ...right], {\n key: process.env.NODE_ENV === 'development' && 'row.getVisibleCells',\n debug: () => table.options.debugAll ?? table.options.debugRows\n })\n };\n },\n createTable: table => {\n const makeVisibleColumnsMethod = (key, getColumns) => {\n return memo(() => [getColumns(), getColumns().filter(d => d.getIsVisible()).map(d => d.id).join('_')], columns => {\n return columns.filter(d => d.getIsVisible == null ? void 0 : d.getIsVisible());\n }, {\n key,\n debug: () => table.options.debugAll ?? table.options.debugColumns\n });\n };\n return {\n getVisibleFlatColumns: makeVisibleColumnsMethod('getVisibleFlatColumns', () => table.getAllFlatColumns()),\n getVisibleLeafColumns: makeVisibleColumnsMethod('getVisibleLeafColumns', () => table.getAllLeafColumns()),\n getLeftVisibleLeafColumns: makeVisibleColumnsMethod('getLeftVisibleLeafColumns', () => table.getLeftLeafColumns()),\n getRightVisibleLeafColumns: makeVisibleColumnsMethod('getRightVisibleLeafColumns', () => table.getRightLeafColumns()),\n getCenterVisibleLeafColumns: makeVisibleColumnsMethod('getCenterVisibleLeafColumns', () => table.getCenterLeafColumns()),\n setColumnVisibility: updater => table.options.onColumnVisibilityChange == null ? void 0 : table.options.onColumnVisibilityChange(updater),\n resetColumnVisibility: defaultState => {\n table.setColumnVisibility(defaultState ? {} : table.initialState.columnVisibility ?? {});\n },\n toggleAllColumnsVisible: value => {\n value = value ?? !table.getIsAllColumnsVisible();\n table.setColumnVisibility(table.getAllLeafColumns().reduce((obj, column) => ({\n ...obj,\n [column.id]: !value ? !(column.getCanHide != null && column.getCanHide()) : value\n }), {}));\n },\n getIsAllColumnsVisible: () => !table.getAllLeafColumns().some(column => !(column.getIsVisible != null && column.getIsVisible())),\n getIsSomeColumnsVisible: () => table.getAllLeafColumns().some(column => column.getIsVisible == null ? void 0 : column.getIsVisible()),\n getToggleAllColumnsVisibilityHandler: () => {\n return e => {\n var _target;\n table.toggleAllColumnsVisible((_target = e.target) == null ? void 0 : _target.checked);\n };\n }\n };\n }\n};\n\nconst features = [Headers, Visibility, Ordering, Pinning, Filters, Sorting, Grouping, Expanding, Pagination, RowSelection, ColumnSizing];\n\n//\n\nfunction createTable(options) {\n if (options.debugAll || options.debugTable) {\n console.info('Creating Table Instance...');\n }\n let table = {\n _features: features\n };\n const defaultOptions = table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultOptions == null ? void 0 : feature.getDefaultOptions(table));\n }, {});\n const mergeOptions = options => {\n if (table.options.mergeOptions) {\n return table.options.mergeOptions(defaultOptions, options);\n }\n return {\n ...defaultOptions,\n ...options\n };\n };\n const coreInitialState = {};\n let initialState = {\n ...coreInitialState,\n ...(options.initialState ?? {})\n };\n table._features.forEach(feature => {\n initialState = (feature.getInitialState == null ? void 0 : feature.getInitialState(initialState)) ?? initialState;\n });\n const queued = [];\n let queuedTimeout = false;\n const coreInstance = {\n _features: features,\n options: {\n ...defaultOptions,\n ...options\n },\n initialState,\n _queue: cb => {\n queued.push(cb);\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().then(() => {\n while (queued.length) {\n queued.shift()();\n }\n queuedTimeout = false;\n }).catch(error => setTimeout(() => {\n throw error;\n }));\n }\n },\n reset: () => {\n table.setState(table.initialState);\n },\n setOptions: updater => {\n const newOptions = functionalUpdate(updater, table.options);\n table.options = mergeOptions(newOptions);\n },\n getState: () => {\n return table.options.state;\n },\n setState: updater => {\n table.options.onStateChange == null ? void 0 : table.options.onStateChange(updater);\n },\n _getRowId: (row, index, parent) => (table.options.getRowId == null ? void 0 : table.options.getRowId(row, index, parent)) ?? `${parent ? [parent.id, index].join('.') : index}`,\n getCoreRowModel: () => {\n if (!table._getCoreRowModel) {\n table._getCoreRowModel = table.options.getCoreRowModel(table);\n }\n return table._getCoreRowModel();\n },\n // The final calls start at the bottom of the model,\n // expanded rows, which then work their way up\n\n getRowModel: () => {\n return table.getPaginationRowModel();\n },\n getRow: id => {\n const row = table.getRowModel().rowsById[id];\n if (!row) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`getRow expected an ID, but got ${id}`);\n }\n throw new Error();\n }\n return row;\n },\n _getDefaultColumnDef: memo(() => [table.options.defaultColumn], defaultColumn => {\n defaultColumn = defaultColumn ?? {};\n return {\n header: props => {\n const resolvedColumnDef = props.header.column.columnDef;\n if (resolvedColumnDef.accessorKey) {\n return resolvedColumnDef.accessorKey;\n }\n if (resolvedColumnDef.accessorFn) {\n return resolvedColumnDef.id;\n }\n return null;\n },\n // footer: props => props.header.column.id,\n cell: props => {\n var _props$renderValue;\n return ((_props$renderValue = props.renderValue()) == null ? void 0 : _props$renderValue.toString == null ? void 0 : _props$renderValue.toString()) ?? null;\n },\n ...table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultColumnDef == null ? void 0 : feature.getDefaultColumnDef());\n }, {}),\n ...defaultColumn\n };\n }, {\n debug: () => table.options.debugAll ?? table.options.debugColumns,\n key: process.env.NODE_ENV === 'development' && 'getDefaultColumnDef'\n }),\n _getColumnDefs: () => table.options.columns,\n getAllColumns: memo(() => [table._getColumnDefs()], columnDefs => {\n const recurseColumns = function (columnDefs, parent, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n return columnDefs.map(columnDef => {\n const column = createColumn(table, columnDef, depth, parent);\n const groupingColumnDef = columnDef;\n column.columns = groupingColumnDef.columns ? recurseColumns(groupingColumnDef.columns, column, depth + 1) : [];\n return column;\n });\n };\n return recurseColumns(columnDefs);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getAllColumns',\n debug: () => table.options.debugAll ?? table.options.debugColumns\n }),\n getAllFlatColumns: memo(() => [table.getAllColumns()], allColumns => {\n return allColumns.flatMap(column => {\n return column.getFlatColumns();\n });\n }, {\n key: process.env.NODE_ENV === 'development' && 'getAllFlatColumns',\n debug: () => table.options.debugAll ?? table.options.debugColumns\n }),\n _getAllFlatColumnsById: memo(() => [table.getAllFlatColumns()], flatColumns => {\n return flatColumns.reduce((acc, column) => {\n acc[column.id] = column;\n return acc;\n }, {});\n }, {\n key: process.env.NODE_ENV === 'development' && 'getAllFlatColumnsById',\n debug: () => table.options.debugAll ?? table.options.debugColumns\n }),\n getAllLeafColumns: memo(() => [table.getAllColumns(), table._getOrderColumnsFn()], (allColumns, orderColumns) => {\n let leafColumns = allColumns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getAllLeafColumns',\n debug: () => table.options.debugAll ?? table.options.debugColumns\n }),\n getColumn: columnId => {\n const column = table._getAllFlatColumnsById()[columnId];\n if (!column) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`[Table] Column with id ${columnId} does not exist.`);\n }\n throw new Error();\n }\n return column;\n }\n };\n Object.assign(table, coreInstance);\n table._features.forEach(feature => {\n return Object.assign(table, feature.createTable == null ? void 0 : feature.createTable(table));\n });\n return table;\n}\n\nfunction createCell(table, row, column, columnId) {\n const getRenderValue = () => cell.getValue() ?? table.options.renderFallbackValue;\n const cell = {\n id: `${row.id}_${column.id}`,\n row,\n column,\n getValue: () => row.getValue(columnId),\n renderValue: getRenderValue,\n getContext: memo(() => [table, column, row, cell], (table, column, row, cell) => ({\n table,\n column,\n row,\n cell: cell,\n getValue: cell.getValue,\n renderValue: cell.renderValue\n }), {\n key: process.env.NODE_ENV === 'development' && 'cell.getContext',\n debug: () => table.options.debugAll\n })\n };\n table._features.forEach(feature => {\n Object.assign(cell, feature.createCell == null ? void 0 : feature.createCell(cell, column, row, table));\n }, {});\n return cell;\n}\n\nconst createRow = (table, id, original, rowIndex, depth, subRows) => {\n let row = {\n id,\n index: rowIndex,\n original,\n depth,\n _valuesCache: {},\n _uniqueValuesCache: {},\n getValue: columnId => {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!column.accessorFn) {\n return undefined;\n }\n row._valuesCache[columnId] = column.accessorFn(row.original, rowIndex);\n return row._valuesCache[columnId];\n },\n getUniqueValues: columnId => {\n if (row._uniqueValuesCache.hasOwnProperty(columnId)) {\n return row._uniqueValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!column.accessorFn) {\n return undefined;\n }\n if (!column.columnDef.getUniqueValues) {\n row._uniqueValuesCache[columnId] = [row.getValue(columnId)];\n return row._uniqueValuesCache[columnId];\n }\n row._uniqueValuesCache[columnId] = column.columnDef.getUniqueValues(row.original, rowIndex);\n return row._uniqueValuesCache[columnId];\n },\n renderValue: columnId => row.getValue(columnId) ?? table.options.renderFallbackValue,\n subRows: subRows ?? [],\n getLeafRows: () => flattenBy(row.subRows, d => d.subRows),\n getAllCells: memo(() => [table.getAllLeafColumns()], leafColumns => {\n return leafColumns.map(column => {\n return createCell(table, row, column, column.id);\n });\n }, {\n key: process.env.NODE_ENV === 'development' && 'row.getAllCells',\n debug: () => table.options.debugAll ?? table.options.debugRows\n }),\n _getAllCellsByColumnId: memo(() => [row.getAllCells()], allCells => {\n return allCells.reduce((acc, cell) => {\n acc[cell.column.id] = cell;\n return acc;\n }, {});\n }, {\n key: process.env.NODE_ENV === 'production' && 'row.getAllCellsByColumnId',\n debug: () => table.options.debugAll ?? table.options.debugRows\n })\n };\n for (let i = 0; i < table._features.length; i++) {\n const feature = table._features[i];\n Object.assign(row, feature == null ? void 0 : feature.createRow == null ? void 0 : feature.createRow(row, table));\n }\n return row;\n};\n\n// type Person = {\n// firstName: string\n// lastName: string\n// age: number\n// visits: number\n// status: string\n// progress: number\n// createdAt: Date\n// nested: {\n// foo: [\n// {\n// bar: 'bar'\n// }\n// ]\n// bar: { subBar: boolean }[]\n// baz: {\n// foo: 'foo'\n// bar: {\n// baz: 'baz'\n// }\n// }\n// }\n// }\n\n// const test: DeepKeys<Person> = 'nested.foo.0.bar'\n// const test2: DeepKeys<Person> = 'nested.bar'\n\n// const helper = createColumnHelper<Person>()\n\n// helper.accessor('nested.foo', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.foo.0.bar', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.bar', {\n// cell: info => info.getValue(),\n// })\n\nfunction createColumnHelper() {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function' ? {\n ...column,\n accessorFn: accessor\n } : {\n ...column,\n accessorKey: accessor\n };\n },\n display: column => column,\n group: column => column\n };\n}\n\nfunction getCoreRowModel() {\n return table => memo(() => [table.options.data], data => {\n const rowModel = {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n const accessRows = function (originalRows, depth, parent) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n for (let i = 0; i < originalRows.length; i++) {\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 const row = createRow(table, table._getRowId(originalRows[i], i, parent), originalRows[i], i, depth);\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 table row into parent\n rows.push(row);\n\n // Get the original subrows\n if (table.options.getSubRows) {\n var _row$originalSubRows;\n row.originalSubRows = table.options.getSubRows(originalRows[i], i);\n\n // Then recursively access them\n if ((_row$originalSubRows = row.originalSubRows) != null && _row$originalSubRows.length) {\n row.subRows = accessRows(row.originalSubRows, depth + 1, row);\n }\n }\n }\n return rows;\n };\n rowModel.rows = accessRows(data);\n return rowModel;\n }, {\n key: process.env.NODE_ENV === 'development' && 'getRowModel',\n debug: () => table.options.debugAll ?? table.options.debugTable,\n onChange: () => {\n table._autoResetPageIndex();\n }\n });\n}\n\nfunction filterRows(rows, filterRowImpl, table) {\n if (table.options.filterFromLeafRows) {\n return filterRowModelFromLeafs(rows, filterRowImpl, table);\n }\n return filterRowModelFromRoot(rows, filterRowImpl, table);\n}\nfunction filterRowModelFromLeafs(rowsToFilter, filterRow, table) {\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = table.options.maxLeafRowFilterDepth ?? 100;\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n\n // Filter from children up first\n for (let i = 0; i < rowsToFilter.length; i++) {\n var _row$subRows;\n let row = rowsToFilter[i];\n const newRow = createRow(table, row.id, row.original, row.index, row.depth);\n newRow.columnFilters = row.columnFilters;\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && depth < maxDepth) {\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n if (filterRow(row) && !newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredRowsById[i] = row;\n continue;\n }\n if (filterRow(row) || newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredRowsById[i] = row;\n continue;\n }\n } else {\n row = newRow;\n if (filterRow(row)) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredRowsById[i] = row;\n }\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\nfunction filterRowModelFromRoot(rowsToFilter, filterRow, table) {\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = table.options.maxLeafRowFilterDepth ?? 100;\n\n // Filters top level and nested rows\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n // Filter from parents downward first\n\n const rows = [];\n\n // Apply the filter to any subRows\n for (let i = 0; i < rowsToFilter.length; i++) {\n let row = rowsToFilter[i];\n const pass = filterRow(row);\n if (pass) {\n var _row$subRows2;\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length && depth < maxDepth) {\n const newRow = createRow(table, row.id, row.original, row.index, row.depth);\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n }\n rows.push(row);\n newFilteredFlatRows.push(row);\n newFilteredRowsById[row.id] = row;\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\n\nfunction getFilteredRowModel() {\n return table => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter], (rowModel, columnFilters, globalFilter) => {\n if (!rowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n for (let i = 0; i < rowModel.flatRows.length; i++) {\n rowModel.flatRows[i].columnFilters = {};\n rowModel.flatRows[i].columnFiltersMeta = {};\n }\n return rowModel;\n }\n const resolvedColumnFilters = [];\n const resolvedGlobalFilters = [];\n (columnFilters ?? []).forEach(d => {\n const column = table.getColumn(d.id);\n if (!column) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Table: Could not find a column to filter with columnId: ${d.id}`);\n }\n }\n const filterFn = column.getFilterFn();\n if (!filterFn) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Could not find a valid 'column.filterFn' for column with the ID: ${column.id}.`);\n }\n return;\n }\n resolvedColumnFilters.push({\n id: d.id,\n filterFn,\n resolvedValue: (filterFn.resolveFilterValue == null ? void 0 : filterFn.resolveFilterValue(d.value)) ?? d.value\n });\n });\n const filterableIds = columnFilters.map(d => d.id);\n const globalFilterFn = table.getGlobalFilterFn();\n const globallyFilterableColumns = table.getAllLeafColumns().filter(column => column.getCanGlobalFilter());\n if (globalFilter && globalFilterFn && globallyFilterableColumns.length) {\n filterableIds.push('__global__');\n globallyFilterableColumns.forEach(column => {\n resolvedGlobalFilters.push({\n id: column.id,\n filterFn: globalFilterFn,\n resolvedValue: (globalFilterFn.resolveFilterValue == null ? void 0 : globalFilterFn.resolveFilterValue(globalFilter)) ?? globalFilter\n });\n });\n }\n let currentColumnFilter;\n let currentGlobalFilter;\n\n // Flag the prefiltered row model with each filter state\n for (let j = 0; j < rowModel.flatRows.length; j++) {\n const row = rowModel.flatRows[j];\n row.columnFilters = {};\n if (resolvedColumnFilters.length) {\n for (let i = 0; i < resolvedColumnFilters.length; i++) {\n currentColumnFilter = resolvedColumnFilters[i];\n const id = currentColumnFilter.id;\n\n // Tag the row with the column filter state\n row.columnFilters[id] = currentColumnFilter.filterFn(row, id, currentColumnFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n });\n }\n }\n if (resolvedGlobalFilters.length) {\n for (let i = 0; i < resolvedGlobalFilters.length; i++) {\n currentGlobalFilter = resolvedGlobalFilters[i];\n const id = currentGlobalFilter.id;\n // Tag the row with the first truthy global filter state\n if (currentGlobalFilter.filterFn(row, id, currentGlobalFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n })) {\n row.columnFilters.__global__ = true;\n break;\n }\n }\n if (row.columnFilters.__global__ !== true) {\n row.columnFilters.__global__ = false;\n }\n }\n }\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n\n // Filter final rows using all of the active filters\n return filterRows(rowModel.rows, filterRowsImpl, table);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getFilteredRowModel',\n debug: () => table.options.debugAll ?? table.options.debugTable,\n onChange: () => {\n table._autoResetPageIndex();\n }\n });\n}\n\nfunction getFacetedRowModel() {\n return (table, columnId) => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter, table.getFilteredRowModel()], (preRowModel, columnFilters, globalFilter) => {\n if (!preRowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n return preRowModel;\n }\n const filterableIds = [...columnFilters.map(d => d.id).filter(d => d !== columnId), globalFilter ? '__global__' : undefined].filter(Boolean);\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n return filterRows(preRowModel.rows, filterRowsImpl, table);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getFacetedRowModel_' + columnId,\n debug: () => table.options.debugAll ?? table.options.debugTable,\n onChange: () => {}\n });\n}\n\nfunction getFacetedUniqueValues() {\n return (table, columnId) => memo(() => [table.getColumn(columnId).getFacetedRowModel()], facetedRowModel => {\n let facetedUniqueValues = new Map();\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);\n for (let j = 0; j < values.length; j++) {\n const value = values[j];\n if (facetedUniqueValues.has(value)) {\n facetedUniqueValues.set(value, (facetedUniqueValues.get(value) ?? 0) + 1);\n } else {\n facetedUniqueValues.set(value, 1);\n }\n }\n }\n return facetedUniqueValues;\n }, {\n key: process.env.NODE_ENV === 'development' && 'getFacetedUniqueValues_' + columnId,\n debug: () => table.options.debugAll ?? table.options.debugTable,\n onChange: () => {}\n });\n}\n\nfunction getFacetedMinMaxValues() {\n return (table, columnId) => memo(() => [table.getColumn(columnId).getFacetedRowModel()], facetedRowModel => {\n var _facetedRowModel$flat;\n const firstValue = (_facetedRowModel$flat = facetedRowModel.flatRows[0]) == null ? void 0 : _facetedRowModel$flat.getUniqueValues(columnId);\n if (typeof firstValue === 'undefined') {\n return undefined;\n }\n let facetedMinMaxValues = [firstValue, firstValue];\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);\n for (let j = 0; j < values.length; j++) {\n const value = values[j];\n if (value < facetedMinMaxValues[0]) {\n facetedMinMaxValues[0] = value;\n } else if (value > facetedMinMaxValues[1]) {\n facetedMinMaxValues[1] = value;\n }\n }\n }\n return facetedMinMaxValues;\n }, {\n key: process.env.NODE_ENV === 'development' && 'getFacetedMinMaxValues_' + columnId,\n debug: () => table.options.debugAll ?? table.options.debugTable,\n onChange: () => {}\n });\n}\n\nfunction getSortedRowModel() {\n return table => memo(() => [table.getState().sorting, table.getPreSortedRowModel()], (sorting, rowModel) => {\n if (!rowModel.rows.length || !(sorting != null && sorting.length)) {\n return rowModel;\n }\n const sortingState = table.getState().sorting;\n const sortedFlatRows = [];\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sortingState.filter(sort => table.getColumn(sort.id).getCanSort());\n const columnInfoById = {};\n availableSorting.forEach(sortEntry => {\n const column = table.getColumn(sortEntry.id);\n columnInfoById[sortEntry.id] = {\n sortUndefined: column.columnDef.sortUndefined,\n invertSorting: column.columnDef.invertSorting,\n sortingFn: column.getSortingFn()\n };\n });\n const sortData = rows => {\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = [...rows];\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 == null ? void 0 : sortEntry.desc) ?? false;\n if (columnInfo.sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id);\n const bValue = rowB.getValue(sortEntry.id);\n const aUndefined = typeof aValue === 'undefined';\n const bUndefined = typeof bValue === 'undefined';\n if (aUndefined || bUndefined) {\n return aUndefined && bUndefined ? 0 : aUndefined ? columnInfo.sortUndefined : -columnInfo.sortUndefined;\n }\n }\n\n // This function should always return in ascending order\n let sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id);\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1;\n }\n if (columnInfo.invertSorting) {\n sortInt *= -1;\n }\n return sortInt;\n }\n }\n return rowA.index - rowB.index;\n });\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n var _row$subRows;\n sortedFlatRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length) {\n row.subRows = sortData(row.subRows);\n }\n });\n return sortedData;\n };\n return {\n rows: sortData(rowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: rowModel.rowsById\n };\n }, {\n key: process.env.NODE_ENV === 'development' && 'getSortedRowModel',\n debug: () => table.options.debugAll ?? table.options.debugTable,\n onChange: () => {\n table._autoResetPageIndex();\n }\n });\n}\n\nfunction getGroupedRowModel() {\n return table => memo(() => [table.getState().grouping, table.getPreGroupedRowModel()], (grouping, rowModel) => {\n if (!rowModel.rows.length || !grouping.length) {\n return rowModel;\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter(columnId => table.getColumn(columnId));\n const groupedFlatRows = [];\n const groupedRowsById = {};\n // const onlyGroupedFlatRows: Row[] = [];\n // const onlyGroupedRowsById: Record<RowId, Row> = {};\n // const nonGroupedFlatRows: Row[] = [];\n // const nonGroupedRowsById: Record<RowId, Row> = {};\n\n // Recursively group the data\n const groupUpRecursively = function (rows, depth, parentId) {\n if (depth === void 0) {\n depth = 0;\n }\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map(row => {\n row.depth = depth;\n groupedFlatRows.push(row);\n groupedRowsById[row.id] = row;\n if (row.subRows) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1);\n }\n return row;\n });\n }\n const columnId = existingGrouping[depth];\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId);\n\n // Peform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map((_ref, index) => {\n let [groupingValue, groupedRows] = _ref;\n let id = `${columnId}:${groupingValue}`;\n id = parentId ? `${parentId}>${id}` : id;\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id);\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth ? flattenBy(groupedRows, row => row.subRows) : groupedRows;\n const row = createRow(table, id, leafRows[0].original, index, depth);\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: columnId => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(columnId)) {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n if (groupedRows[0]) {\n row._valuesCache[columnId] = groupedRows[0].getValue(columnId) ?? undefined;\n }\n return row._valuesCache[columnId];\n }\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n\n // Aggregate the values\n const column = table.getColumn(columnId);\n const aggregateFn = column.getAggregationFn();\n if (aggregateFn) {\n row._groupingValuesCache[columnId] = aggregateFn(columnId, leafRows, groupedRows);\n return row._groupingValuesCache[columnId];\n }\n }\n });\n subRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n\n return row;\n });\n return aggregatedGroupedRows;\n };\n const groupedRows = groupUpRecursively(rowModel.rows, 0, '');\n groupedRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById\n };\n }, {\n key: process.env.NODE_ENV === 'development' && 'getGroupedRowModel',\n debug: () => table.options.debugAll ?? table.options.debugTable,\n onChange: () => {\n table._queue(() => {\n table._autoResetExpanded();\n table._autoResetPageIndex();\n });\n }\n });\n}\nfunction groupBy(rows, columnId) {\n const groupMap = new Map();\n return rows.reduce((map, row) => {\n const resKey = `${row.getValue(columnId)}`;\n const previous = map.get(resKey);\n if (!previous) {\n map.set(resKey, [row]);\n } else {\n previous.push(row);\n }\n return map;\n }, groupMap);\n}\n\nfunction getExpandedRowModel() {\n return table => memo(() => [table.getState().expanded, table.getPreExpandedRowModel(), table.options.paginateExpandedRows], (expanded, rowModel, paginateExpandedRows) => {\n if (!rowModel.rows.length || expanded !== true && !Object.keys(expanded ?? {}).length) {\n return rowModel;\n }\n if (!paginateExpandedRows) {\n // Only expand rows at this point if they are being paginated\n return rowModel;\n }\n return expandRows(rowModel);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getExpandedRowModel',\n debug: () => table.options.debugAll ?? table.options.debugTable\n });\n}\nfunction expandRows(rowModel) {\n const expandedRows = [];\n const handleRow = row => {\n var _row$subRows;\n expandedRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && row.getIsExpanded()) {\n row.subRows.forEach(handleRow);\n }\n };\n rowModel.rows.forEach(handleRow);\n return {\n rows: expandedRows,\n flatRows: rowModel.flatRows,\n rowsById: rowModel.rowsById\n };\n}\n\nfunction getPaginationRowModel(opts) {\n return table => memo(() => [table.getState().pagination, table.getPrePaginationRowModel(), table.options.paginateExpandedRows ? undefined : table.getState().expanded], (pagination, rowModel) => {\n if (!rowModel.rows.length) {\n return rowModel;\n }\n const {\n pageSize,\n pageIndex\n } = pagination;\n let {\n rows,\n flatRows,\n rowsById\n } = rowModel;\n const pageStart = pageSize * pageIndex;\n const pageEnd = pageStart + pageSize;\n rows = rows.slice(pageStart, pageEnd);\n let paginatedRowModel;\n if (!table.options.paginateExpandedRows) {\n paginatedRowModel = expandRows({\n rows,\n flatRows,\n rowsById\n });\n } else {\n paginatedRowModel = {\n rows,\n flatRows,\n rowsById\n };\n }\n paginatedRowModel.flatRows = [];\n const handleRow = row => {\n paginatedRowModel.flatRows.push(row);\n if (row.subRows.length) {\n row.subRows.forEach(handleRow);\n }\n };\n paginatedRowModel.rows.forEach(handleRow);\n return paginatedRowModel;\n }, {\n key: process.env.NODE_ENV === 'development' && 'getPaginationRowModel',\n debug: () => table.options.debugAll ?? table.options.debugTable\n });\n}\n\nexport { ColumnSizing, Expanding, Filters, Grouping, Headers, Ordering, Pagination, Pinning, RowSelection, Sorting, Visibility, aggregationFns, buildHeaderGroups, createCell, createColumn, createColumnHelper, createRow, createTable, defaultColumnSizing, expandRows, filterFns, flattenBy, functionalUpdate, getCoreRowModel, getExpandedRowModel, getFacetedMinMaxValues, getFacetedRowModel, getFacetedUniqueValues, getFilteredRowModel, getGroupedRowModel, getPaginationRowModel, getSortedRowModel, isFunction, isRowSelected, isSubRowSelected, makeStateUpdater, memo, noop, orderColumns, passiveEventSupported, reSplitAlphaNumeric, selectRowsFn, shouldAutoRemoveFilter, sortingFns };\n//# sourceMappingURL=index.js.map\n","import * as React from 'react'\nexport * from '@tanstack/table-core'\n\nimport {\n TableOptions,\n TableOptionsResolved,\n RowData,\n createTable,\n} from '@tanstack/table-core'\n\nexport type Renderable<TProps> = React.ReactNode | React.ComponentType<TProps>\n\n//\n\nexport function flexRender<TProps extends object>(\n Comp: Renderable<TProps>,\n props: TProps\n): React.ReactNode | JSX.Element {\n return !Comp ? null : isReactComponent<TProps>(Comp) ? (\n <Comp {...props} />\n ) : (\n Comp\n )\n}\n\nfunction isReactComponent<TProps>(\n component: unknown\n): component is React.ComponentType<TProps> {\n return (\n isClassComponent(component) ||\n typeof component === 'function' ||\n isExoticComponent(component)\n )\n}\n\nfunction isClassComponent(component: any) {\n return (\n typeof component === 'function' &&\n (() => {\n const proto = Object.getPrototypeOf(component)\n return proto.prototype && proto.prototype.isReactComponent\n })()\n )\n}\n\nfunction isExoticComponent(component: any) {\n return (\n typeof component === 'object' &&\n typeof component.$$typeof === 'symbol' &&\n ['react.memo', 'react.forward_ref'].includes(component.$$typeof.description)\n )\n}\n\nexport function useReactTable<TData extends RowData>(\n options: TableOptions<TData>\n) {\n // Compose in the generic options to the user options\n const resolvedOptions: TableOptionsResolved<TData> = {\n state: {}, // Dummy state\n onStateChange: () => {}, // noop\n renderFallbackValue: null,\n ...options,\n }\n\n // Create a new table and store it in state\n const [tableRef] = React.useState(() => ({\n current: createTable<TData>(resolvedOptions),\n }))\n\n // By default, manage table state here using the table's initial state\n const [state, setState] = React.useState(() => tableRef.current.initialState)\n\n // Compose the default state above with any user state. This will allow the user\n // to only control a subset of the state if desired.\n tableRef.current.setOptions(prev => ({\n ...prev,\n ...options,\n state: {\n ...state,\n ...options.state,\n },\n // Similarly, we'll maintain both our internal state and any user-provided\n // state.\n onStateChange: updater => {\n setState(updater)\n options.onStateChange?.(updater)\n },\n }))\n\n return tableRef.current\n}\n"],"names":["functionalUpdate","updater","input","makeStateUpdater","key","instance","setState","old","isFunction","d","Function","flattenBy","arr","getChildren","flat","recurse","subArr","forEach","item","push","children","length","memo","getDeps","fn","opts","result","deps","depTime","debug","Date","now","newDeps","some","dep","index","resultTime","onChange","depEndTime","Math","round","resultEndTime","resultFpsPercentage","pad","str","num","String","console","info","max","min","createColumn","table","columnDef","depth","parent","resolvedColumnDef","_getDefaultColumnDef","accessorKey","accessorFn","id","replace","undefined","header","includes","originalRow","split","Error","column","columns","getFlatColumns","_column$columns","flatMap","options","debugAll","debugColumns","getLeafColumns","_getOrderColumnsFn","orderColumns","_column$columns2","leafColumns","_features","reduce","obj","feature","Object","assign","createHeader","isPlaceholder","placeholderId","subHeaders","colSpan","rowSpan","headerGroup","getLeafHeaders","leafHeaders","recurseHeader","h","map","getContext","Headers","createTable","getHeaderGroups","getAllColumns","getVisibleLeafColumns","getState","columnPinning","left","right","allColumns","leftColumns","columnId","find","filter","Boolean","rightColumns","buildHeaderGroups","debugHeaders","getCenterHeaderGroups","getLeftHeaderGroups","getRightHeaderGroups","getFooterGroups","headerGroups","reverse","getLeftFooterGroups","getCenterFooterGroups","getRightFooterGroups","getFlatHeaders","headers","getLeftFlatHeaders","getCenterFlatHeaders","getRightFlatHeaders","getCenterLeafHeaders","flatHeaders","_header$subHeaders","getLeftLeafHeaders","_header$subHeaders2","getRightLeafHeaders","_header$subHeaders3","center","_left$","_center$","_right$","columnsToGroup","headerFamily","_headerGroups$","maxDepth","findMaxDepth","getIsVisible","createHeaderGroup","headersToGroup","join","pendingParentHeaders","headerToGroup","latestPendingParentHeader","bottomHeaders","recurseHeadersForSpans","childRowSpans","_ref","childColSpan","childRowSpan","defaultColumnSizing","size","minSize","maxSize","Number","MAX_SAFE_INTEGER","ColumnSizing","getDefaultColumnDef","getInitialState","state","columnSizing","columnSizingInfo","startOffset","startSize","deltaOffset","deltaPercentage","isResizingColumn","columnSizingStart","getDefaultOptions","columnResizeMode","onColumnSizingChange","onColumnSizingInfoChange","getSize","columnSize","getStart","position","getLeftVisibleLeafColumns","getRightVisibleLeafColumns","findIndex","prevSiblingColumn","resetSize","setColumnSizing","_","rest","getCanResize","enableResizing","enableColumnResizing","getIsResizing","sum","prevSiblingHeader","getResizeHandler","getColumn","canResize","e","persist","isTouchStartEvent","touches","clientX","updateOffset","eventType","clientXPos","newColumnSizing","setColumnSizingInfo","_ref2","headerSize","onMove","onEnd","mouseEvents","moveHandler","upHandler","document","removeEventListener","touchEvents","cancelable","preventDefault","stopPropagation","_e$touches$","passiveIfSupported","passiveEventSupported","passive","addEventListener","resetColumnSizing","defaultState","initialState","resetHeaderSizeInfo","getTotalSize","_table$getHeaderGroup","getLeftTotalSize","_table$getLeftHeaderG","getCenterTotalSize","_table$getCenterHeade","getRightTotalSize","_table$getRightHeader","passiveSupported","supported","noop","window","err","type","Expanding","expanded","onExpandedChange","paginateExpandedRows","registered","queued","_autoResetExpanded","autoResetAll","autoResetExpanded","manualExpanding","_queue","resetExpanded","setExpanded","toggleAllRowsExpanded","getIsAllRowsExpanded","_table$initialState","getCanSomeRowsExpand","getRowModel","flatRows","row","getCanExpand","getToggleAllRowsExpandedHandler","getIsSomeRowsExpanded","values","keys","getIsExpanded","getExpandedDepth","rowsById","splitId","getPreExpandedRowModel","getSortedRowModel","getExpandedRowModel","_getExpandedRowModel","createRow","toggleExpanded","exists","oldExpanded","rowId","getIsRowExpanded","_row$subRows","getRowCanExpand","enableExpanding","subRows","getToggleExpandedHandler","canExpand","includesString","filterValue","_row$getValue","search","toLowerCase","getValue","autoRemove","val","testFalsey","includesStringSensitive","_row$getValue2","equalsString","_row$getValue3","arrIncludes","_row$getValue4","arrIncludesAll","_row$getValue5","arrIncludesSome","_row$getValue6","equals","weakEquals","inNumberRange","rowValue","resolveFilterValue","unsafeMin","unsafeMax","parsedMin","parseFloat","parsedMax","isNaN","Infinity","temp","filterFns","Filters","filterFn","columnFilters","globalFilter","onColumnFiltersChange","onGlobalFilterChange","filterFromLeafRows","maxLeafRowFilterDepth","globalFilterFn","getColumnCanGlobalFilter","_table$getCoreRowMode","_table$getCoreRowMode2","value","getCoreRowModel","_getAllCellsByColumnId","getAutoFilterFn","firstRow","Array","isArray","getFilterFn","_table$options$filter","getCanFilter","enableColumnFilter","enableColumnFilters","enableFilters","getCanGlobalFilter","enableGlobalFilter","getIsFiltered","getFilterIndex","getFilterValue","_table$getState$colum","_table$getState$colum2","_table$getState$colum3","setFilterValue","setColumnFilters","previousfilter","newFilter","shouldAutoRemoveFilter","newFilterObj","_getFacetedRowModel","getFacetedRowModel","getPreFilteredRowModel","_getFacetedUniqueValues","getFacetedUniqueValues","Map","_getFacetedMinMaxValues","getFacetedMinMaxValues","columnFiltersMeta","getGlobalAutoFilterFn","getGlobalFilterFn","_table$options$filter2","getAllLeafColumns","_functionalUpdate","setGlobalFilter","resetGlobalFilter","resetColumnFilters","getFilteredRowModel","_getFilteredRowModel","manualFiltering","_getGlobalFacetedRowModel","getGlobalFacetedRowModel","_getGlobalFacetedUniqueValues","getGlobalFacetedUniqueValues","_getGlobalFacetedMinMaxValues","getGlobalFacetedMinMaxValues","aggregationFns","_leafRows","childRows","next","nextValue","extent","mean","leafRows","count","median","unique","from","Set","uniqueCount","_columnId","Grouping","aggregatedCell","props","_props$getValue","toString","aggregationFn","grouping","onGroupingChange","groupedColumnMode","toggleGrouping","setGrouping","getCanGroup","enableGrouping","getIsGrouped","_table$getState$group","getGroupedIndex","_table$getState$group2","indexOf","getToggleGroupingHandler","canGroup","getAutoAggregationFn","prototype","call","getAggregationFn","_table$options$aggreg","resetGrouping","getPreGroupedRowModel","getGroupedRowModel","_getGroupedRowModel","manualGrouping","groupingColumnId","_groupingValuesCache","createCell","cell","getIsPlaceholder","getIsAggregated","nonGroupingColumns","col","g","Ordering","columnOrder","onColumnOrderChange","setColumnOrder","resetColumnOrder","orderedColumns","columnOrderCopy","columnsCopy","targetColumnId","shift","foundIndex","splice","Pagination","pagination","pageIndex","pageSize","onPaginationChange","_autoResetPageIndex","autoResetPageIndex","manualPagination","resetPageIndex","setPagination","resetPagination","setPageIndex","maxPageIndex","pageCount","_table$initialState$p","resetPageSize","_table$initialState2","_table$initialState2$","setPageSize","topRowIndex","floor","setPageCount","newPageCount","getPageOptions","getPageCount","pageOptions","fill","i","debugTable","getCanPreviousPage","getCanNextPage","previousPage","nextPage","getPrePaginationRowModel","getPaginationRowModel","_getPaginationRowModel","ceil","rows","Pinning","onColumnPinningChange","pin","columnIds","setColumnPinning","getCanPin","enablePinning","getIsPinned","leafColumnIds","isLeft","isRight","getPinnedIndex","getCenterVisibleCells","_getAllVisibleCells","allCells","leftAndRight","debugRows","getLeftVisibleCells","getRightVisibleCells","resetColumnPinning","getIsSomeColumnsPinned","_pinningState$positio","pinningState","_pinningState$left","_pinningState$right","getLeftLeafColumns","getRightLeafColumns","getCenterLeafColumns","RowSelection","rowSelection","onRowSelectionChange","enableRowSelection","enableMultiRowSelection","enableSubRowSelection","setRowSelection","resetRowSelection","toggleAllRowsSelected","getIsAllRowsSelected","preGroupedFlatRows","getCanSelect","toggleAllPageRowsSelected","resolvedValue","getIsAllPageRowsSelected","mutateRowIsSelected","getPreSelectedRowModel","getSelectedRowModel","rowModel","selectRowsFn","getFilteredSelectedRowModel","getGroupedSelectedRowModel","isAllRowsSelected","paginationFlatRows","isAllPageRowsSelected","getIsSomeRowsSelected","totalSelected","getIsSomePageRowsSelected","getIsSelected","getIsSomeSelected","getToggleAllRowsSelectedHandler","target","checked","getToggleAllPageRowsSelectedHandler","toggleSelected","isSelected","selectedRowIds","isRowSelected","isSubRowSelected","getIsAllSubRowsSelected","getCanSelectSubRows","getCanMultiSelect","getToggleSelectedHandler","canSelect","_target","getRow","newSelectedFlatRows","newSelectedRowsById","recurseRows","_row$subRows2","selection","allChildrenSelected","someSelected","subRow","reSplitAlphaNumeric","compareBasic","a","b","compareAlphanumeric","aStr","bStr","aa","bb","an","parseInt","bn","combo","sort","sortingFns","alphanumeric","rowA","rowB","alphanumericCaseSensitive","text","textCaseSensitive","datetime","basic","Sorting","sorting","sortingFn","onSortingChange","isMultiSortEvent","shiftKey","getAutoSortingFn","firstRows","slice","isString","getAutoSortDir","getSortingFn","_table$options$sortin","toggleSorting","desc","multi","nextSortingOrder","getNextSortingOrder","hasManualValue","setSorting","existingSorting","existingIndex","sortAction","newSorting","nextDesc","getCanMultiSort","maxMultiSortColCount","getFirstSortDir","sortDescFirst","firstSortDirection","isSorted","getIsSorted","enableSortingRemoval","enableMultiRemove","getCanSort","enableSorting","enableMultiSort","_table$getState$sorti","columnSort","getSortIndex","_table$getState$sorti2","clearSorting","getToggleSortingHandler","canSort","resetSorting","getPreSortedRowModel","_getSortedRowModel","manualSorting","Visibility","columnVisibility","onColumnVisibilityChange","toggleVisibility","getCanHide","setColumnVisibility","enableHiding","getToggleVisibilityHandler","getAllCells","cells","getVisibleCells","makeVisibleColumnsMethod","getColumns","getVisibleFlatColumns","getAllFlatColumns","getCenterVisibleLeafColumns","resetColumnVisibility","toggleAllColumnsVisible","getIsAllColumnsVisible","getIsSomeColumnsVisible","getToggleAllColumnsVisibilityHandler","features","defaultOptions","queuedTimeout","coreInstance","cb","Promise","resolve","then","catch","error","setTimeout","reset","setOptions","newOptions","mergeOptions","onStateChange","_getRowId","getRowId","_getCoreRowModel","defaultColumn","_props$renderValue","renderValue","_getColumnDefs","columnDefs","recurseColumns","groupingColumnDef","_getAllFlatColumnsById","flatColumns","acc","renderFallbackValue","original","rowIndex","_valuesCache","_uniqueValuesCache","hasOwnProperty","getUniqueValues","getLeafRows","filterRows","filterRowImpl","rowsToFilter","filterRow","newFilteredFlatRows","newFilteredRowsById","recurseFilterRows","newRow","filterRowModelFromLeafs","filterRowModelFromRoot","expandRows","expandedRows","handleRow","accessor","display","group","Comp","component","proto","getPrototypeOf","isReactComponent","isClassComponent","$$typeof","description","isExoticComponent","React","data","accessRows","originalRows","_row$originalSubRows","getSubRows","originalSubRows","facetedRowModel","_facetedRowModel$flat","firstValue","facetedMinMaxValues","j","preRowModel","filterableIds","facetedUniqueValues","has","set","get","resolvedColumnFilters","resolvedGlobalFilters","globallyFilterableColumns","currentColumnFilter","currentGlobalFilter","filterMeta","__global__","existingGrouping","groupedFlatRows","groupedRowsById","groupUpRecursively","parentId","rowGroupsMap","groupMap","resKey","previous","groupBy","aggregatedGroupedRows","entries","groupingValue","groupedRows","aggregateFn","pageStart","pageEnd","paginatedRowModel","sortingState","sortedFlatRows","availableSorting","columnInfoById","sortEntry","sortUndefined","invertSorting","sortData","sortedData","columnInfo","isDesc","aUndefined","bUndefined","sortInt","resolvedOptions","tableRef","useState","current","prev"],"mappings":"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"}