@tanstack/react-table 8.7.2 → 8.7.4

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/lib/index.mjs","../../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?.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?.onChange?.(result);\n if (opts.key && opts.debug) {\n if (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?.key);\n }\n }\n return result;\n };\n}\n\nfunction createColumn(table, columnDef, depth, parent) {\n var _ref, _resolvedColumnDef$id;\n const defaultColumn = table._getDefaultColumnDef();\n const resolvedColumnDef = {\n ...defaultColumn,\n ...columnDef\n };\n const accessorKey = resolvedColumnDef.accessorKey;\n let id = (_ref = (_resolvedColumnDef$id = resolvedColumnDef.id) != null ? _resolvedColumnDef$id : accessorKey ? accessorKey.replace('.', '_') : undefined) != null ? _ref : 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 return [column, ...column.columns?.flatMap(d => d.getFlatColumns())];\n }, {\n key: process.env.NODE_ENV === 'production' && 'column.getFlatColumns',\n debug: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugColumns;\n }\n }),\n getLeafColumns: memo(() => [table._getOrderColumnsFn()], orderColumns => {\n if (column.columns?.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: () => {\n var _table$options$debugA2;\n return (_table$options$debugA2 = table.options.debugAll) != null ? _table$options$debugA2 : table.options.debugColumns;\n }\n })\n };\n column = table._features.reduce((obj, feature) => {\n return Object.assign(obj, 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 var _options$id;\n const id = (_options$id = options.id) != null ? _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?.(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 var _left$map$filter, _right$map$filter;\n const leftColumns = (_left$map$filter = left?.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter : [];\n const rightColumns = (_right$map$filter = right?.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter : [];\n const centerColumns = leafColumns.filter(column => !left?.includes(column.id) && !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: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugHeaders;\n }\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?.includes(column.id) && !right?.includes(column.id));\n return buildHeaderGroups(allColumns, leafColumns, table, 'center');\n }, {\n key: process.env.NODE_ENV === 'development' && 'getCenterHeaderGroups',\n debug: () => {\n var _table$options$debugA2;\n return (_table$options$debugA2 = table.options.debugAll) != null ? _table$options$debugA2 : table.options.debugHeaders;\n }\n }),\n getLeftHeaderGroups: memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left], (allColumns, leafColumns, left) => {\n var _left$map$filter2;\n const orderedLeafColumns = (_left$map$filter2 = left?.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'left');\n }, {\n key: process.env.NODE_ENV === 'development' && 'getLeftHeaderGroups',\n debug: () => {\n var _table$options$debugA3;\n return (_table$options$debugA3 = table.options.debugAll) != null ? _table$options$debugA3 : table.options.debugHeaders;\n }\n }),\n getRightHeaderGroups: memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.right], (allColumns, leafColumns, right) => {\n var _right$map$filter2;\n const orderedLeafColumns = (_right$map$filter2 = right?.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'right');\n }, {\n key: process.env.NODE_ENV === 'development' && 'getRightHeaderGroups',\n debug: () => {\n var _table$options$debugA4;\n return (_table$options$debugA4 = table.options.debugAll) != null ? _table$options$debugA4 : table.options.debugHeaders;\n }\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: () => {\n var _table$options$debugA5;\n return (_table$options$debugA5 = table.options.debugAll) != null ? _table$options$debugA5 : table.options.debugHeaders;\n }\n }),\n getLeftFooterGroups: memo(() => [table.getLeftHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getLeftFooterGroups',\n debug: () => {\n var _table$options$debugA6;\n return (_table$options$debugA6 = table.options.debugAll) != null ? _table$options$debugA6 : table.options.debugHeaders;\n }\n }),\n getCenterFooterGroups: memo(() => [table.getCenterHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getCenterFooterGroups',\n debug: () => {\n var _table$options$debugA7;\n return (_table$options$debugA7 = table.options.debugAll) != null ? _table$options$debugA7 : table.options.debugHeaders;\n }\n }),\n getRightFooterGroups: memo(() => [table.getRightHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getRightFooterGroups',\n debug: () => {\n var _table$options$debugA8;\n return (_table$options$debugA8 = table.options.debugAll) != null ? _table$options$debugA8 : table.options.debugHeaders;\n }\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: () => {\n var _table$options$debugA9;\n return (_table$options$debugA9 = table.options.debugAll) != null ? _table$options$debugA9 : table.options.debugHeaders;\n }\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: () => {\n var _table$options$debugA10;\n return (_table$options$debugA10 = table.options.debugAll) != null ? _table$options$debugA10 : table.options.debugHeaders;\n }\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: () => {\n var _table$options$debugA11;\n return (_table$options$debugA11 = table.options.debugAll) != null ? _table$options$debugA11 : table.options.debugHeaders;\n }\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: () => {\n var _table$options$debugA12;\n return (_table$options$debugA12 = table.options.debugAll) != null ? _table$options$debugA12 : table.options.debugHeaders;\n }\n }),\n // Leaf Headers\n\n getCenterLeafHeaders: memo(() => [table.getCenterFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => !header.subHeaders?.length);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getCenterLeafHeaders',\n debug: () => {\n var _table$options$debugA13;\n return (_table$options$debugA13 = table.options.debugAll) != null ? _table$options$debugA13 : table.options.debugHeaders;\n }\n }),\n getLeftLeafHeaders: memo(() => [table.getLeftFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => !header.subHeaders?.length);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getLeftLeafHeaders',\n debug: () => {\n var _table$options$debugA14;\n return (_table$options$debugA14 = table.options.debugAll) != null ? _table$options$debugA14 : table.options.debugHeaders;\n }\n }),\n getRightLeafHeaders: memo(() => [table.getRightFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => !header.subHeaders?.length);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getRightLeafHeaders',\n debug: () => {\n var _table$options$debugA15;\n return (_table$options$debugA15 = table.options.debugAll) != null ? _table$options$debugA15 : table.options.debugHeaders;\n }\n }),\n getLeafHeaders: memo(() => [table.getLeftHeaderGroups(), table.getCenterHeaderGroups(), table.getRightHeaderGroups()], (left, center, right) => {\n var _left$0$headers, _center$0$headers, _right$0$headers;\n return [...((_left$0$headers = left[0]?.headers) != null ? _left$0$headers : []), ...((_center$0$headers = center[0]?.headers) != null ? _center$0$headers : []), ...((_right$0$headers = right[0]?.headers) != null ? _right$0$headers : [])].map(header => {\n return header.getLeafHeaders();\n }).flat();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getLeafHeaders',\n debug: () => {\n var _table$options$debugA16;\n return (_table$options$debugA16 = table.options.debugAll) != null ? _table$options$debugA16 : table.options.debugHeaders;\n }\n })\n };\n }\n};\nfunction buildHeaderGroups(allColumns, columnsToGroup, table, headerFamily) {\n var _headerGroups$0$heade;\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 if (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?.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?.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$0$heade = headerGroups[0]?.headers) != null ? _headerGroups$0$heade : []);\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 var _column$columnDef$min, _ref, _column$columnDef$max;\n const columnSize = table.getState().columnSizing[column.id];\n return Math.min(Math.max((_column$columnDef$min = column.columnDef.minSize) != null ? _column$columnDef$min : defaultColumnSizing.minSize, (_ref = columnSize != null ? columnSize : column.columnDef.size) != null ? _ref : defaultColumnSizing.size), (_column$columnDef$max = column.columnDef.maxSize) != null ? _column$columnDef$max : 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(_ref2 => {\n let {\n [column.id]: _,\n ...rest\n } = _ref2;\n return rest;\n });\n },\n getCanResize: () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableResizing) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnResizing) != null ? _table$options$enable : 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 var _header$column$getSiz;\n sum += (_header$column$getSiz = header.column.getSize()) != null ? _header$column$getSiz : 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?.();\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 newColumnSizing = {};\n const updateOffset = (eventType, clientXPos) => {\n if (typeof clientXPos !== 'number') {\n return;\n }\n table.setColumnSizingInfo(old => {\n var _old$startOffset, _old$startSize;\n const deltaOffset = clientXPos - ((_old$startOffset = old?.startOffset) != null ? _old$startOffset : 0);\n const deltaPercentage = Math.max(deltaOffset / ((_old$startSize = old?.startSize) != null ? _old$startSize : 0), -0.999999);\n old.columnSizingStart.forEach(_ref3 => {\n let [columnId, headerSize] = _ref3;\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 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[0]?.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?.(updater),\n setColumnSizingInfo: updater => table.options.onColumnSizingInfoChange?.(updater),\n resetColumnSizing: defaultState => {\n var _table$initialState$c;\n table.setColumnSizing(defaultState ? {} : (_table$initialState$c = table.initialState.columnSizing) != null ? _table$initialState$c : {});\n },\n resetHeaderSizeInfo: defaultState => {\n var _table$initialState$c2;\n table.setColumnSizingInfo(defaultState ? getDefaultColumnSizingInfoState() : (_table$initialState$c2 = table.initialState.columnSizingInfo) != null ? _table$initialState$c2 : getDefaultColumnSizingInfoState());\n },\n getTotalSize: () => {\n var _table$getHeaderGroup;\n return (_table$getHeaderGroup = table.getHeaderGroups()[0]?.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getHeaderGroup : 0;\n },\n getLeftTotalSize: () => {\n var _table$getLeftHeaderG;\n return (_table$getLeftHeaderG = table.getLeftHeaderGroups()[0]?.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getLeftHeaderG : 0;\n },\n getCenterTotalSize: () => {\n var _table$getCenterHeade;\n return (_table$getCenterHeade = table.getCenterHeaderGroups()[0]?.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getCenterHeade : 0;\n },\n getRightTotalSize: () => {\n var _table$getRightHeader;\n return (_table$getRightHeader = table.getRightHeaderGroups()[0]?.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getRightHeader : 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 var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetExpanded) != null ? _ref : !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?.(updater),\n toggleAllRowsExpanded: expanded => {\n if (expanded != null ? expanded : !table.getIsAllRowsExpanded()) {\n table.setExpanded(true);\n } else {\n table.setExpanded({});\n }\n },\n resetExpanded: defaultState => {\n var _table$initialState$e;\n table.setExpanded(defaultState ? {} : (_table$initialState$e = table.initialState?.expanded) != null ? _table$initialState$e : {});\n },\n getCanSomeRowsExpand: () => {\n return table.getRowModel().flatRows.some(row => row.getCanExpand());\n },\n getToggleAllRowsExpandedHandler: () => {\n return e => {\n 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 var _expanded;\n const exists = old === true ? true : !!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 = expanded) != null ? _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 var _table$options$getIsR;\n const expanded = table.getState().expanded;\n return !!((_table$options$getIsR = table.options.getIsRowExpanded?.(row)) != null ? _table$options$getIsR : expanded === true || expanded?.[row.id]);\n },\n getCanExpand: () => {\n var _table$options$getRow, _table$options$enable;\n return (_table$options$getRow = table.options.getRowCanExpand?.(row)) != null ? _table$options$getRow : ((_table$options$enable = table.options.enableExpanding) != null ? _table$options$enable : true) && !!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 const search = filterValue.toLowerCase();\n return Boolean(row.getValue(columnId)?.toLowerCase().includes(search));\n};\nincludesString.autoRemove = val => testFalsey(val);\nconst includesStringSensitive = (row, columnId, filterValue) => {\n return Boolean(row.getValue(columnId)?.includes(filterValue));\n};\nincludesStringSensitive.autoRemove = val => testFalsey(val);\nconst equalsString = (row, columnId, filterValue) => {\n return row.getValue(columnId)?.toLowerCase() === filterValue.toLowerCase();\n};\nequalsString.autoRemove = val => testFalsey(val);\nconst arrIncludes = (row, columnId, filterValue) => {\n return row.getValue(columnId)?.includes(filterValue);\n};\narrIncludes.autoRemove = val => testFalsey(val) || !val?.length;\nconst arrIncludesAll = (row, columnId, filterValue) => {\n return !filterValue.some(val => !row.getValue(columnId)?.includes(val));\n};\narrIncludesAll.autoRemove = val => testFalsey(val) || !val?.length;\nconst arrIncludesSome = (row, columnId, filterValue) => {\n return filterValue.some(val => row.getValue(columnId)?.includes(val));\n};\narrIncludesSome.autoRemove = val => testFalsey(val) || !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 const value = table.getCoreRowModel().flatRows[0]?._getAllCellsByColumnId()[column.id]?.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?.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() : // @ts-ignore\n (_table$options$filter = table.options.filterFns?.[column.columnDef.filterFn]) != null ? _table$options$filter : filterFns[column.columnDef.filterFn];\n },\n getCanFilter: () => {\n var _column$columnDef$ena, _table$options$enable, _table$options$enable2;\n return ((_column$columnDef$ena = column.columnDef.enableColumnFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnFilters) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && !!column.accessorFn;\n },\n getCanGlobalFilter: () => {\n var _column$columnDef$ena2, _table$options$enable3, _table$options$enable4, _table$options$getCol;\n return ((_column$columnDef$ena2 = column.columnDef.enableGlobalFilter) != null ? _column$columnDef$ena2 : true) && ((_table$options$enable3 = table.options.enableGlobalFilter) != null ? _table$options$enable3 : true) && ((_table$options$enable4 = table.options.enableFilters) != null ? _table$options$enable4 : true) && ((_table$options$getCol = table.options.getColumnCanGlobalFilter?.(column)) != null ? _table$options$getCol : true) && !!column.accessorFn;\n },\n getIsFiltered: () => column.getFilterIndex() > -1,\n getFilterValue: () => table.getState().columnFilters?.find(d => d.id === column.id)?.value,\n getFilterIndex: () => {\n var _table$getState$colum;\n return (_table$getState$colum = table.getState().columnFilters?.findIndex(d => d.id === column.id)) != null ? _table$getState$colum : -1;\n },\n setFilterValue: value => {\n table.setColumnFilters(old => {\n const filterFn = column.getFilterFn();\n const previousfilter = 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 var _old$filter;\n return (_old$filter = old?.filter(d => d.id !== column.id)) != null ? _old$filter : [];\n }\n const newFilterObj = {\n id: column.id,\n value: newFilter\n };\n if (previousfilter) {\n var _old$map;\n return (_old$map = old?.map(d => {\n if (d.id === column.id) {\n return newFilterObj;\n }\n return d;\n })) != null ? _old$map : [];\n }\n if (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() : // @ts-ignore\n (_table$options$filter2 = table.options.filterFns?.[globalFilterFn]) != null ? _table$options$filter2 : filterFns[globalFilterFn];\n },\n setColumnFilters: updater => {\n const leafColumns = table.getAllLeafColumns();\n const updateFn = old => {\n return functionalUpdate(updater, old)?.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?.(updateFn);\n },\n setGlobalFilter: updater => {\n table.options.onGlobalFilterChange?.(updater);\n },\n resetGlobalFilter: defaultState => {\n table.setGlobalFilter(defaultState ? undefined : table.initialState.globalFilter);\n },\n resetColumnFilters: defaultState => {\n var _table$initialState$c;\n table.setColumnFilters(defaultState ? [] : (_table$initialState$c = table.initialState?.columnFilters) != null ? _table$initialState$c : []);\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 _toString;\n return (_toString = props.getValue()?.toString?.()) != null ? _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?.includes(column.id)) {\n return old.filter(d => d !== column.id);\n }\n return [...(old != null ? old : []), column.id];\n });\n },\n getCanGroup: () => {\n var _ref, _ref2, _ref3, _column$columnDef$ena;\n return (_ref = (_ref2 = (_ref3 = (_column$columnDef$ena = column.columnDef.enableGrouping) != null ? _column$columnDef$ena : true) != null ? _ref3 : table.options.enableGrouping) != null ? _ref2 : true) != null ? _ref : !!column.accessorFn;\n },\n getIsGrouped: () => {\n return table.getState().grouping?.includes(column.id);\n },\n getGroupedIndex: () => table.getState().grouping?.indexOf(column.id),\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?.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?.[column.columnDef.aggregationFn]) != null ? _table$options$aggreg : aggregationFns[column.columnDef.aggregationFn];\n }\n };\n },\n createTable: table => {\n return {\n setGrouping: updater => table.options.onGroupingChange?.(updater),\n resetGrouping: defaultState => {\n var _table$initialState$g;\n table.setGrouping(defaultState ? [] : (_table$initialState$g = table.initialState?.grouping) != null ? _table$initialState$g : []);\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: () => !cell.getIsGrouped() && !cell.getIsPlaceholder() && !!row.subRows?.length\n };\n }\n};\nfunction orderColumns(leafColumns, grouping, groupedColumnMode) {\n if (!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?.(updater),\n resetColumnOrder: defaultState => {\n var _table$initialState$c;\n table.setColumnOrder(defaultState ? [] : (_table$initialState$c = table.initialState.columnOrder) != null ? _table$initialState$c : []);\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?.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?.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 var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetPageIndex) != null ? _ref : !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?.(safeUpdater);\n },\n resetPagination: defaultState => {\n var _table$initialState$p;\n table.setPagination(defaultState ? getDefaultPaginationState() : (_table$initialState$p = table.initialState.pagination) != null ? _table$initialState$p : 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$p2;\n table.setPageIndex(defaultState ? defaultPageIndex : (_table$initialState$p2 = table.initialState?.pagination?.pageIndex) != null ? _table$initialState$p2 : defaultPageIndex);\n },\n resetPageSize: defaultState => {\n var _table$initialState$p3;\n table.setPageSize(defaultState ? defaultPageSize : (_table$initialState$p3 = table.initialState?.pagination?.pageSize) != null ? _table$initialState$p3 : 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 var _table$options$pageCo;\n let newPageCount = functionalUpdate(updater, (_table$options$pageCo = table.options.pageCount) != null ? _table$options$pageCo : -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: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;\n }\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 var _table$options$pageCo2;\n return (_table$options$pageCo2 = table.options.pageCount) != null ? _table$options$pageCo2 : 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 var _old$left3, _old$right3;\n if (position === 'right') {\n var _old$left, _old$right;\n return {\n left: ((_old$left = old?.left) != null ? _old$left : []).filter(d => !columnIds?.includes(d)),\n right: [...((_old$right = old?.right) != null ? _old$right : []).filter(d => !columnIds?.includes(d)), ...columnIds]\n };\n }\n if (position === 'left') {\n var _old$left2, _old$right2;\n return {\n left: [...((_old$left2 = old?.left) != null ? _old$left2 : []).filter(d => !columnIds?.includes(d)), ...columnIds],\n right: ((_old$right2 = old?.right) != null ? _old$right2 : []).filter(d => !columnIds?.includes(d))\n };\n }\n return {\n left: ((_old$left3 = old?.left) != null ? _old$left3 : []).filter(d => !columnIds?.includes(d)),\n right: ((_old$right3 = old?.right) != null ? _old$right3 : []).filter(d => !columnIds?.includes(d))\n };\n });\n },\n getCanPin: () => {\n const leafColumns = column.getLeafColumns();\n return leafColumns.some(d => {\n var _d$columnDef$enablePi, _table$options$enable;\n return ((_d$columnDef$enablePi = d.columnDef.enablePinning) != null ? _d$columnDef$enablePi : true) && ((_table$options$enable = table.options.enablePinning) != null ? _table$options$enable : true);\n });\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?.includes(d));\n const isRight = leafColumnIds.some(d => right?.includes(d));\n return isLeft ? 'left' : isRight ? 'right' : false;\n },\n getPinnedIndex: () => {\n var _table$getState$colum;\n const position = column.getIsPinned();\n return position ? (_table$getState$colum = table.getState().columnPinning?.[position]?.indexOf(column.id)) != null ? _table$getState$colum : -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 != null ? left : []), ...(right != null ? right : [])];\n return allCells.filter(d => !leftAndRight.includes(d.column.id));\n }, {\n key: process.env.NODE_ENV === 'production' && 'row.getCenterVisibleCells',\n debug: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugRows;\n }\n }),\n getLeftVisibleCells: memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left,,], (allCells, left) => {\n const cells = (left != null ? 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: () => {\n var _table$options$debugA2;\n return (_table$options$debugA2 = table.options.debugAll) != null ? _table$options$debugA2 : table.options.debugRows;\n }\n }),\n getRightVisibleCells: memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.right], (allCells, right) => {\n const cells = (right != null ? 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: () => {\n var _table$options$debugA3;\n return (_table$options$debugA3 = table.options.debugAll) != null ? _table$options$debugA3 : table.options.debugRows;\n }\n })\n };\n },\n createTable: table => {\n return {\n setColumnPinning: updater => table.options.onColumnPinningChange?.(updater),\n resetColumnPinning: defaultState => {\n var _table$initialState$c;\n return table.setColumnPinning(defaultState ? getDefaultPinningState() : (_table$initialState$c = table.initialState?.columnPinning) != null ? _table$initialState$c : getDefaultPinningState());\n },\n getIsSomeColumnsPinned: position => {\n const pinningState = table.getState().columnPinning;\n if (!position) {\n return Boolean(pinningState.left?.length || pinningState.right?.length);\n }\n return Boolean(pinningState[position]?.length);\n },\n getLeftLeafColumns: memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left], (allColumns, left) => {\n return (left != null ? left : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getLeftLeafColumns',\n debug: () => {\n var _table$options$debugA4;\n return (_table$options$debugA4 = table.options.debugAll) != null ? _table$options$debugA4 : table.options.debugColumns;\n }\n }),\n getRightLeafColumns: memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.right], (allColumns, right) => {\n return (right != null ? right : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getRightLeafColumns',\n debug: () => {\n var _table$options$debugA5;\n return (_table$options$debugA5 = table.options.debugAll) != null ? _table$options$debugA5 : table.options.debugColumns;\n }\n }),\n getCenterLeafColumns: memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allColumns.filter(d => !leftAndRight.includes(d.id));\n }, {\n key: process.env.NODE_ENV === 'development' && 'getCenterLeafColumns',\n debug: () => {\n var _table$options$debugA6;\n return (_table$options$debugA6 = table.options.debugAll) != null ? _table$options$debugA6 : table.options.debugColumns;\n }\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?.(updater),\n resetRowSelection: defaultState => {\n var _table$initialState$r;\n return table.setRowSelection(defaultState ? {} : (_table$initialState$r = table.initialState.rowSelection) != null ? _table$initialState$r : {});\n },\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: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;\n }\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: () => {\n var _table$options$debugA2;\n return (_table$options$debugA2 = table.options.debugAll) != null ? _table$options$debugA2 : table.options.debugTable;\n }\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: () => {\n var _table$options$debugA3;\n return (_table$options$debugA3 = table.options.debugAll) != null ? _table$options$debugA3 : table.options.debugTable;\n }\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 var _table$getState$rowSe;\n const totalSelected = Object.keys((_table$getState$rowSe = table.getState().rowSelection) != null ? _table$getState$rowSe : {}).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 var _table$options$enable;\n if (typeof table.options.enableRowSelection === 'function') {\n return table.options.enableRowSelection(row);\n }\n return (_table$options$enable = table.options.enableRowSelection) != null ? _table$options$enable : true;\n },\n getCanSelectSubRows: () => {\n var _table$options$enable2;\n if (typeof table.options.enableSubRowSelection === 'function') {\n return table.options.enableSubRowSelection(row);\n }\n return (_table$options$enable2 = table.options.enableSubRowSelection) != null ? _table$options$enable2 : true;\n },\n getCanMultiSelect: () => {\n var _table$options$enable3;\n if (typeof table.options.enableMultiRowSelection === 'function') {\n return table.options.enableMultiRowSelection(row);\n }\n return (_table$options$enable3 = table.options.enableMultiRowSelection) != null ? _table$options$enable3 : true;\n },\n getToggleSelectedHandler: () => {\n const canSelect = row.getCanSelect();\n return e => {\n if (!canSelect) return;\n row.toggleSelected(e.target?.checked);\n };\n }\n };\n }\n};\nconst mutateRowIsSelected = (selectedRowIds, id, value, table) => {\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?.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 const isSelected = isRowSelected(row, rowSelection);\n if (isSelected) {\n newSelectedFlatRows.push(row);\n newSelectedRowsById[row.id] = row;\n }\n if (row.subRows?.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 var _selection$row$id;\n return (_selection$row$id = selection[row.id]) != null ? _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?.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?.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?.[column.columnDef.sortingFn]) != null ? _table$options$sortin : 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?.find(d => d.id === column.id);\n const existingIndex = 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?.length && column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'add';\n }\n } else {\n // Normal mode\n if (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 var _table$options$maxMul;\n newSorting = [...old, {\n id: column.id,\n desc: nextDesc\n }];\n // Take latest n columns\n newSorting.splice(0, newSorting.length - ((_table$options$maxMul = table.options.maxMultiSortColCount) != null ? _table$options$maxMul : 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 var _ref, _column$columnDef$sor;\n const sortDescFirst = (_ref = (_column$columnDef$sor = column.columnDef.sortDescFirst) != null ? _column$columnDef$sor : table.options.sortDescFirst) != null ? _ref : column.getAutoSortDir() === 'desc';\n return sortDescFirst ? 'desc' : 'asc';\n },\n getNextSortingOrder: multi => {\n var _table$options$enable, _table$options$enable2;\n const firstSortDirection = column.getFirstSortDir();\n const isSorted = column.getIsSorted();\n if (!isSorted) {\n return firstSortDirection;\n }\n if (isSorted !== firstSortDirection && ((_table$options$enable = table.options.enableSortingRemoval) != null ? _table$options$enable : true) && (\n // If enableSortRemove, enable in general\n multi ? (_table$options$enable2 = table.options.enableMultiRemove) != null ? _table$options$enable2 : true : true) // If multi, don't allow if enableMultiRemove))\n ) {\n return false;\n }\n return isSorted === 'desc' ? 'asc' : 'desc';\n },\n getCanSort: () => {\n var _column$columnDef$ena, _table$options$enable3;\n return ((_column$columnDef$ena = column.columnDef.enableSorting) != null ? _column$columnDef$ena : true) && ((_table$options$enable3 = table.options.enableSorting) != null ? _table$options$enable3 : true) && !!column.accessorFn;\n },\n getCanMultiSort: () => {\n var _ref2, _column$columnDef$ena2;\n return (_ref2 = (_column$columnDef$ena2 = column.columnDef.enableMultiSort) != null ? _column$columnDef$ena2 : table.options.enableMultiSort) != null ? _ref2 : !!column.accessorFn;\n },\n getIsSorted: () => {\n const columnSort = table.getState().sorting?.find(d => d.id === column.id);\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc';\n },\n getSortIndex: () => {\n var _table$getState$sorti;\n return (_table$getState$sorti = table.getState().sorting?.findIndex(d => d.id === column.id)) != null ? _table$getState$sorti : -1;\n },\n clearSorting: () => {\n //clear sorting for just 1 column\n table.setSorting(old => 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?.();\n column.toggleSorting?.(undefined, column.getCanMultiSort() ? table.options.isMultiSortEvent?.(e) : false);\n };\n }\n };\n },\n createTable: table => {\n return {\n setSorting: updater => table.options.onSortingChange?.(updater),\n resetSorting: defaultState => {\n var _table$initialState$s;\n table.setSorting(defaultState ? [] : (_table$initialState$s = table.initialState?.sorting) != null ? _table$initialState$s : []);\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 != null ? value : !column.getIsVisible()\n }));\n }\n },\n getIsVisible: () => {\n var _table$getState$colum;\n return (_table$getState$colum = table.getState().columnVisibility?.[column.id]) != null ? _table$getState$colum : true;\n },\n getCanHide: () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableHiding) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableHiding) != null ? _table$options$enable : true);\n },\n getToggleVisibilityHandler: () => {\n return e => {\n 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: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugRows;\n }\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: () => {\n var _table$options$debugA2;\n return (_table$options$debugA2 = table.options.debugAll) != null ? _table$options$debugA2 : table.options.debugRows;\n }\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?.());\n }, {\n key,\n debug: () => {\n var _table$options$debugA3;\n return (_table$options$debugA3 = table.options.debugAll) != null ? _table$options$debugA3 : table.options.debugColumns;\n }\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?.(updater),\n resetColumnVisibility: defaultState => {\n var _table$initialState$c;\n table.setColumnVisibility(defaultState ? {} : (_table$initialState$c = table.initialState.columnVisibility) != null ? _table$initialState$c : {});\n },\n toggleAllColumnsVisible: value => {\n var _value;\n value = (_value = value) != null ? _value : !table.getIsAllColumnsVisible();\n table.setColumnVisibility(table.getAllLeafColumns().reduce((obj, column) => ({\n ...obj,\n [column.id]: !value ? !column.getCanHide?.() : value\n }), {}));\n },\n getIsAllColumnsVisible: () => !table.getAllLeafColumns().some(column => !column.getIsVisible?.()),\n getIsSomeColumnsVisible: () => table.getAllLeafColumns().some(column => column.getIsVisible?.()),\n getToggleAllColumnsVisibilityHandler: () => {\n return e => {\n table.toggleAllColumnsVisible(e.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 var _options$initialState;\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?.(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 = options.initialState) != null ? _options$initialState : {})\n };\n table._features.forEach(feature => {\n var _feature$getInitialSt;\n initialState = (_feature$getInitialSt = feature.getInitialState?.(initialState)) != null ? _feature$getInitialSt : 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?.(updater);\n },\n _getRowId: (row, index, parent) => {\n var _table$options$getRow;\n return (_table$options$getRow = table.options.getRowId?.(row, index, parent)) != null ? _table$options$getRow : `${parent ? [parent.id, index].join('.') : index}`;\n },\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 var _defaultColumn;\n defaultColumn = (_defaultColumn = defaultColumn) != null ? _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$to;\n return (_props$renderValue$to = props.renderValue()?.toString?.()) != null ? _props$renderValue$to : null;\n },\n ...table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultColumnDef?.());\n }, {}),\n ...defaultColumn\n };\n }, {\n debug: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugColumns;\n },\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: () => {\n var _table$options$debugA2;\n return (_table$options$debugA2 = table.options.debugAll) != null ? _table$options$debugA2 : table.options.debugColumns;\n }\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: () => {\n var _table$options$debugA3;\n return (_table$options$debugA3 = table.options.debugAll) != null ? _table$options$debugA3 : table.options.debugColumns;\n }\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: () => {\n var _table$options$debugA4;\n return (_table$options$debugA4 = table.options.debugAll) != null ? _table$options$debugA4 : table.options.debugColumns;\n }\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: () => {\n var _table$options$debugA5;\n return (_table$options$debugA5 = table.options.debugAll) != null ? _table$options$debugA5 : table.options.debugColumns;\n }\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?.(table));\n });\n return table;\n}\n\nfunction createCell(table, row, column, columnId) {\n const getRenderValue = () => {\n var _cell$getValue;\n return (_cell$getValue = cell.getValue()) != null ? _cell$getValue : table.options.renderFallbackValue;\n };\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?.(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 => {\n var _row$getValue;\n return (_row$getValue = row.getValue(columnId)) != null ? _row$getValue : table.options.renderFallbackValue;\n },\n subRows: subRows != null ? 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: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugRows;\n }\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: () => {\n var _table$options$debugA2;\n return (_table$options$debugA2 = table.options.debugAll) != null ? _table$options$debugA2 : table.options.debugRows;\n }\n })\n };\n for (let i = 0; i < table._features.length; i++) {\n const feature = table._features[i];\n Object.assign(row, 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 row.originalSubRows = table.options.getSubRows(originalRows[i], i);\n\n // Then recursively access them\n if (row.originalSubRows?.length) {\n row.subRows = accessRows(row.originalSubRows, depth + 1, row);\n }\n }\n }\n return rows;\n };\n rowModel.rows = accessRows(data);\n return rowModel;\n }, {\n key: process.env.NODE_ENV === 'development' && 'getRowModel',\n debug: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;\n },\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 var _table$options$maxLea;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea : 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 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?.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 var _table$options$maxLea2;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea2 = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea2 : 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 if (row.subRows?.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?.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 != null ? columnFilters : []).forEach(d => {\n var _filterFn$resolveFilt;\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$resolveFilt = filterFn.resolveFilterValue?.(d.value)) != null ? _filterFn$resolveFilt : 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 var _globalFilterFn$resol;\n resolvedGlobalFilters.push({\n id: column.id,\n filterFn: globalFilterFn,\n resolvedValue: (_globalFilterFn$resol = globalFilterFn.resolveFilterValue?.(globalFilter)) != null ? _globalFilterFn$resol : 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: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;\n },\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?.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: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;\n },\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 var _facetedUniqueValues$;\n facetedUniqueValues.set(value, ((_facetedUniqueValues$ = facetedUniqueValues.get(value)) != null ? _facetedUniqueValues$ : 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: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;\n },\n onChange: () => {}\n });\n}\n\nfunction getFacetedMinMaxValues() {\n return (table, columnId) => memo(() => [table.getColumn(columnId).getFacetedRowModel()], facetedRowModel => {\n const firstValue = facetedRowModel.flatRows[0]?.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: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;\n },\n onChange: () => {}\n });\n}\n\nfunction getSortedRowModel() {\n return table => memo(() => [table.getState().sorting, table.getPreSortedRowModel()], (sorting, rowModel) => {\n if (!rowModel.rows.length || !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 var _sortEntry$desc;\n const sortEntry = availableSorting[i];\n const columnInfo = columnInfoById[sortEntry.id];\n const isDesc = (_sortEntry$desc = sortEntry?.desc) != null ? _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 sortedFlatRows.push(row);\n if (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: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;\n },\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 var _groupedRows$0$getVal;\n row._valuesCache[columnId] = (_groupedRows$0$getVal = groupedRows[0].getValue(columnId)) != null ? _groupedRows$0$getVal : 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: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;\n },\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 != null ? 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: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;\n }\n });\n}\nfunction expandRows(rowModel) {\n const expandedRows = [];\n const handleRow = row => {\n expandedRows.push(row);\n if (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: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;\n }\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.mjs.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","_ref","_resolvedColumnDef$id","resolvedColumnDef","_getDefaultColumnDef","accessorKey","accessorFn","id","replace","undefined","header","includes","originalRow","split","Error","column","columns","getFlatColumns","flatMap","_table$options$debugA","options","debugAll","debugColumns","getLeafColumns","_getOrderColumnsFn","orderColumns","leafColumns","_table$options$debugA2","_features","reduce","obj","feature","Object","assign","createHeader","_options$id","isPlaceholder","placeholderId","subHeaders","colSpan","rowSpan","headerGroup","getLeafHeaders","leafHeaders","recurseHeader","h","map","getContext","Headers","createTable","getHeaderGroups","getAllColumns","getVisibleLeafColumns","getState","columnPinning","left","right","allColumns","_left$map$filter","_right$map$filter","leftColumns","columnId","find","filter","Boolean","rightColumns","buildHeaderGroups","debugHeaders","getCenterHeaderGroups","getLeftHeaderGroups","_left$map$filter2","_table$options$debugA3","getRightHeaderGroups","_right$map$filter2","_table$options$debugA4","getFooterGroups","headerGroups","reverse","_table$options$debugA5","getLeftFooterGroups","_table$options$debugA6","getCenterFooterGroups","_table$options$debugA7","getRightFooterGroups","_table$options$debugA8","getFlatHeaders","headers","_table$options$debugA9","getLeftFlatHeaders","_table$options$debugA10","getCenterFlatHeaders","_table$options$debugA11","getRightFlatHeaders","_table$options$debugA12","getCenterLeafHeaders","flatHeaders","_table$options$debugA13","getLeftLeafHeaders","_table$options$debugA14","getRightLeafHeaders","_table$options$debugA15","center","_left$0$headers","_center$0$headers","_right$0$headers","_table$options$debugA16","columnsToGroup","headerFamily","_headerGroups$0$heade","maxDepth","findMaxDepth","getIsVisible","createHeaderGroup","headersToGroup","join","pendingParentHeaders","headerToGroup","latestPendingParentHeader","bottomHeaders","recurseHeadersForSpans","childRowSpans","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","_column$columnDef$min","_column$columnDef$max","columnSize","getStart","position","getLeftVisibleLeafColumns","getRightVisibleLeafColumns","findIndex","prevSiblingColumn","resetSize","setColumnSizing","_ref2","_","rest","getCanResize","_column$columnDef$ena","_table$options$enable","enableResizing","enableColumnResizing","getIsResizing","sum","_header$column$getSiz","prevSiblingHeader","getResizeHandler","getColumn","canResize","e","persist","isTouchStartEvent","touches","clientX","newColumnSizing","updateOffset","eventType","clientXPos","setColumnSizingInfo","_old$startOffset","_old$startSize","_ref3","headerSize","onMove","onEnd","mouseEvents","moveHandler","upHandler","document","removeEventListener","touchEvents","cancelable","preventDefault","stopPropagation","passiveIfSupported","passiveEventSupported","passive","addEventListener","resetColumnSizing","defaultState","_table$initialState$c","initialState","resetHeaderSizeInfo","_table$initialState$c2","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","_table$options$autoRe","autoResetAll","autoResetExpanded","manualExpanding","_queue","resetExpanded","setExpanded","toggleAllRowsExpanded","getIsAllRowsExpanded","_table$initialState$e","getCanSomeRowsExpand","getRowModel","flatRows","row","getCanExpand","getToggleAllRowsExpandedHandler","getIsSomeRowsExpanded","values","keys","getIsExpanded","getExpandedDepth","rowsById","splitId","getPreExpandedRowModel","getSortedRowModel","getExpandedRowModel","_getExpandedRowModel","createRow","toggleExpanded","_expanded","exists","oldExpanded","rowId","_table$options$getIsR","getIsRowExpanded","_table$options$getRow","getRowCanExpand","enableExpanding","subRows","getToggleExpandedHandler","canExpand","includesString","filterValue","search","toLowerCase","getValue","autoRemove","val","testFalsey","includesStringSensitive","equalsString","arrIncludes","arrIncludesAll","arrIncludesSome","equals","weakEquals","inNumberRange","rowValue","resolveFilterValue","unsafeMin","unsafeMax","parsedMin","parseFloat","parsedMax","isNaN","Infinity","temp","filterFns","Filters","filterFn","columnFilters","globalFilter","onColumnFiltersChange","onGlobalFilterChange","filterFromLeafRows","maxLeafRowFilterDepth","globalFilterFn","getColumnCanGlobalFilter","value","getCoreRowModel","_getAllCellsByColumnId","getAutoFilterFn","Array","isArray","getFilterFn","_table$options$filter","getCanFilter","_table$options$enable2","enableColumnFilter","enableColumnFilters","enableFilters","getCanGlobalFilter","_column$columnDef$ena2","_table$options$enable3","_table$options$enable4","_table$options$getCol","enableGlobalFilter","getIsFiltered","getFilterIndex","getFilterValue","_table$getState$colum","setFilterValue","setColumnFilters","previousfilter","newFilter","_old$filter","shouldAutoRemoveFilter","newFilterObj","_old$map","_getFacetedRowModel","getFacetedRowModel","getPreFilteredRowModel","_getFacetedUniqueValues","getFacetedUniqueValues","Map","_getFacetedMinMaxValues","getFacetedMinMaxValues","columnFiltersMeta","getGlobalAutoFilterFn","getGlobalFilterFn","_table$options$filter2","getAllLeafColumns","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","_toString","toString","aggregationFn","grouping","onGroupingChange","groupedColumnMode","toggleGrouping","setGrouping","getCanGroup","enableGrouping","getIsGrouped","getGroupedIndex","indexOf","getToggleGroupingHandler","canGroup","getAutoAggregationFn","prototype","call","getAggregationFn","_table$options$aggreg","resetGrouping","_table$initialState$g","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","_table$initialState$p","setPageIndex","maxPageIndex","pageCount","_table$initialState$p2","resetPageSize","_table$initialState$p3","setPageSize","topRowIndex","floor","setPageCount","_table$options$pageCo","newPageCount","getPageOptions","getPageCount","pageOptions","fill","i","debugTable","getCanPreviousPage","getCanNextPage","previousPage","nextPage","getPrePaginationRowModel","getPaginationRowModel","_getPaginationRowModel","_table$options$pageCo2","ceil","rows","Pinning","onColumnPinningChange","pin","columnIds","setColumnPinning","_old$left3","_old$right3","_old$left","_old$right","_old$left2","_old$right2","getCanPin","_d$columnDef$enablePi","enablePinning","getIsPinned","leafColumnIds","isLeft","isRight","getPinnedIndex","getCenterVisibleCells","_getAllVisibleCells","allCells","leftAndRight","debugRows","getLeftVisibleCells","getRightVisibleCells","resetColumnPinning","getIsSomeColumnsPinned","pinningState","getLeftLeafColumns","getRightLeafColumns","getCenterLeafColumns","RowSelection","rowSelection","onRowSelectionChange","enableRowSelection","enableMultiRowSelection","enableSubRowSelection","setRowSelection","resetRowSelection","_table$initialState$r","toggleAllRowsSelected","getIsAllRowsSelected","preGroupedFlatRows","getCanSelect","toggleAllPageRowsSelected","resolvedValue","getIsAllPageRowsSelected","mutateRowIsSelected","getPreSelectedRowModel","getSelectedRowModel","rowModel","selectRowsFn","getFilteredSelectedRowModel","getGroupedSelectedRowModel","isAllRowsSelected","paginationFlatRows","isAllPageRowsSelected","getIsSomeRowsSelected","_table$getState$rowSe","totalSelected","getIsSomePageRowsSelected","getIsSelected","getIsSomeSelected","getToggleAllRowsSelectedHandler","target","checked","getToggleAllPageRowsSelectedHandler","toggleSelected","isSelected","selectedRowIds","isRowSelected","isSubRowSelected","getIsAllSubRowsSelected","getCanSelectSubRows","getCanMultiSelect","getToggleSelectedHandler","canSelect","getRow","newSelectedFlatRows","newSelectedRowsById","recurseRows","selection","_selection$row$id","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","_table$options$maxMul","getCanMultiSort","maxMultiSortColCount","getFirstSortDir","_column$columnDef$sor","sortDescFirst","firstSortDirection","isSorted","getIsSorted","enableSortingRemoval","enableMultiRemove","getCanSort","enableSorting","enableMultiSort","columnSort","getSortIndex","_table$getState$sorti","clearSorting","getToggleSortingHandler","canSort","resetSorting","_table$initialState$s","getPreSortedRowModel","_getSortedRowModel","manualSorting","Visibility","columnVisibility","onColumnVisibilityChange","toggleVisibility","getCanHide","setColumnVisibility","enableHiding","getToggleVisibilityHandler","getAllCells","cells","getVisibleCells","makeVisibleColumnsMethod","getColumns","getVisibleFlatColumns","getAllFlatColumns","getCenterVisibleLeafColumns","resetColumnVisibility","toggleAllColumnsVisible","_value","getIsAllColumnsVisible","getIsSomeColumnsVisible","getToggleAllColumnsVisibilityHandler","features","_options$initialState","defaultOptions","_feature$getInitialSt","queuedTimeout","coreInstance","cb","Promise","resolve","then","catch","error","setTimeout","reset","setOptions","newOptions","mergeOptions","onStateChange","_getRowId","getRowId","_getCoreRowModel","defaultColumn","_defaultColumn","_props$renderValue$to","renderValue","_getColumnDefs","columnDefs","recurseColumns","groupingColumnDef","_getAllFlatColumnsById","flatColumns","acc","_cell$getValue","renderFallbackValue","original","rowIndex","_valuesCache","_uniqueValuesCache","hasOwnProperty","getUniqueValues","_row$getValue","getLeafRows","filterRows","filterRowImpl","rowsToFilter","filterRow","_table$options$maxLea","newFilteredFlatRows","newFilteredRowsById","recurseFilterRows","newRow","filterRowModelFromLeafs","_table$options$maxLea2","filterRowModelFromRoot","expandRows","expandedRows","handleRow","accessor","display","group","Comp","component","proto","getPrototypeOf","isReactComponent","isClassComponent","$$typeof","description","isExoticComponent","React","data","accessRows","originalRows","getSubRows","originalSubRows","facetedRowModel","firstValue","facetedMinMaxValues","j","preRowModel","filterableIds","facetedUniqueValues","_facetedUniqueValues$","has","set","get","resolvedColumnFilters","resolvedGlobalFilters","_filterFn$resolveFilt","globallyFilterableColumns","currentColumnFilter","currentGlobalFilter","_globalFilterFn$resol","filterMeta","__global__","existingGrouping","groupedFlatRows","groupedRowsById","groupUpRecursively","parentId","rowGroupsMap","groupMap","resKey","previous","groupBy","aggregatedGroupedRows","entries","groupingValue","groupedRows","_groupedRows$0$getVal","aggregateFn","pageStart","pageEnd","paginatedRowModel","sortingState","sortedFlatRows","availableSorting","columnInfoById","sortEntry","sortUndefined","invertSorting","sortData","sortedData","_sortEntry$desc","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/lib/index.mjs","../../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?.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?.onChange?.(result);\n if (opts.key && opts.debug) {\n if (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?.key);\n }\n }\n return result;\n };\n}\n\nfunction createColumn(table, columnDef, depth, parent) {\n var _ref, _resolvedColumnDef$id;\n const defaultColumn = table._getDefaultColumnDef();\n const resolvedColumnDef = {\n ...defaultColumn,\n ...columnDef\n };\n const accessorKey = resolvedColumnDef.accessorKey;\n let id = (_ref = (_resolvedColumnDef$id = resolvedColumnDef.id) != null ? _resolvedColumnDef$id : accessorKey ? accessorKey.replace('.', '_') : undefined) != null ? _ref : 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 return [column, ...column.columns?.flatMap(d => d.getFlatColumns())];\n }, {\n key: process.env.NODE_ENV === 'production' && 'column.getFlatColumns',\n debug: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugColumns;\n }\n }),\n getLeafColumns: memo(() => [table._getOrderColumnsFn()], orderColumns => {\n if (column.columns?.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: () => {\n var _table$options$debugA2;\n return (_table$options$debugA2 = table.options.debugAll) != null ? _table$options$debugA2 : table.options.debugColumns;\n }\n })\n };\n column = table._features.reduce((obj, feature) => {\n return Object.assign(obj, 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 var _options$id;\n const id = (_options$id = options.id) != null ? _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?.(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 var _left$map$filter, _right$map$filter;\n const leftColumns = (_left$map$filter = left?.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter : [];\n const rightColumns = (_right$map$filter = right?.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter : [];\n const centerColumns = leafColumns.filter(column => !left?.includes(column.id) && !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: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugHeaders;\n }\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?.includes(column.id) && !right?.includes(column.id));\n return buildHeaderGroups(allColumns, leafColumns, table, 'center');\n }, {\n key: process.env.NODE_ENV === 'development' && 'getCenterHeaderGroups',\n debug: () => {\n var _table$options$debugA2;\n return (_table$options$debugA2 = table.options.debugAll) != null ? _table$options$debugA2 : table.options.debugHeaders;\n }\n }),\n getLeftHeaderGroups: memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left], (allColumns, leafColumns, left) => {\n var _left$map$filter2;\n const orderedLeafColumns = (_left$map$filter2 = left?.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'left');\n }, {\n key: process.env.NODE_ENV === 'development' && 'getLeftHeaderGroups',\n debug: () => {\n var _table$options$debugA3;\n return (_table$options$debugA3 = table.options.debugAll) != null ? _table$options$debugA3 : table.options.debugHeaders;\n }\n }),\n getRightHeaderGroups: memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.right], (allColumns, leafColumns, right) => {\n var _right$map$filter2;\n const orderedLeafColumns = (_right$map$filter2 = right?.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'right');\n }, {\n key: process.env.NODE_ENV === 'development' && 'getRightHeaderGroups',\n debug: () => {\n var _table$options$debugA4;\n return (_table$options$debugA4 = table.options.debugAll) != null ? _table$options$debugA4 : table.options.debugHeaders;\n }\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: () => {\n var _table$options$debugA5;\n return (_table$options$debugA5 = table.options.debugAll) != null ? _table$options$debugA5 : table.options.debugHeaders;\n }\n }),\n getLeftFooterGroups: memo(() => [table.getLeftHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getLeftFooterGroups',\n debug: () => {\n var _table$options$debugA6;\n return (_table$options$debugA6 = table.options.debugAll) != null ? _table$options$debugA6 : table.options.debugHeaders;\n }\n }),\n getCenterFooterGroups: memo(() => [table.getCenterHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getCenterFooterGroups',\n debug: () => {\n var _table$options$debugA7;\n return (_table$options$debugA7 = table.options.debugAll) != null ? _table$options$debugA7 : table.options.debugHeaders;\n }\n }),\n getRightFooterGroups: memo(() => [table.getRightHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getRightFooterGroups',\n debug: () => {\n var _table$options$debugA8;\n return (_table$options$debugA8 = table.options.debugAll) != null ? _table$options$debugA8 : table.options.debugHeaders;\n }\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: () => {\n var _table$options$debugA9;\n return (_table$options$debugA9 = table.options.debugAll) != null ? _table$options$debugA9 : table.options.debugHeaders;\n }\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: () => {\n var _table$options$debugA10;\n return (_table$options$debugA10 = table.options.debugAll) != null ? _table$options$debugA10 : table.options.debugHeaders;\n }\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: () => {\n var _table$options$debugA11;\n return (_table$options$debugA11 = table.options.debugAll) != null ? _table$options$debugA11 : table.options.debugHeaders;\n }\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: () => {\n var _table$options$debugA12;\n return (_table$options$debugA12 = table.options.debugAll) != null ? _table$options$debugA12 : table.options.debugHeaders;\n }\n }),\n // Leaf Headers\n\n getCenterLeafHeaders: memo(() => [table.getCenterFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => !header.subHeaders?.length);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getCenterLeafHeaders',\n debug: () => {\n var _table$options$debugA13;\n return (_table$options$debugA13 = table.options.debugAll) != null ? _table$options$debugA13 : table.options.debugHeaders;\n }\n }),\n getLeftLeafHeaders: memo(() => [table.getLeftFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => !header.subHeaders?.length);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getLeftLeafHeaders',\n debug: () => {\n var _table$options$debugA14;\n return (_table$options$debugA14 = table.options.debugAll) != null ? _table$options$debugA14 : table.options.debugHeaders;\n }\n }),\n getRightLeafHeaders: memo(() => [table.getRightFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => !header.subHeaders?.length);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getRightLeafHeaders',\n debug: () => {\n var _table$options$debugA15;\n return (_table$options$debugA15 = table.options.debugAll) != null ? _table$options$debugA15 : table.options.debugHeaders;\n }\n }),\n getLeafHeaders: memo(() => [table.getLeftHeaderGroups(), table.getCenterHeaderGroups(), table.getRightHeaderGroups()], (left, center, right) => {\n var _left$0$headers, _center$0$headers, _right$0$headers;\n return [...((_left$0$headers = left[0]?.headers) != null ? _left$0$headers : []), ...((_center$0$headers = center[0]?.headers) != null ? _center$0$headers : []), ...((_right$0$headers = right[0]?.headers) != null ? _right$0$headers : [])].map(header => {\n return header.getLeafHeaders();\n }).flat();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getLeafHeaders',\n debug: () => {\n var _table$options$debugA16;\n return (_table$options$debugA16 = table.options.debugAll) != null ? _table$options$debugA16 : table.options.debugHeaders;\n }\n })\n };\n }\n};\nfunction buildHeaderGroups(allColumns, columnsToGroup, table, headerFamily) {\n var _headerGroups$0$heade;\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 if (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?.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?.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$0$heade = headerGroups[0]?.headers) != null ? _headerGroups$0$heade : []);\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 var _column$columnDef$min, _ref, _column$columnDef$max;\n const columnSize = table.getState().columnSizing[column.id];\n return Math.min(Math.max((_column$columnDef$min = column.columnDef.minSize) != null ? _column$columnDef$min : defaultColumnSizing.minSize, (_ref = columnSize != null ? columnSize : column.columnDef.size) != null ? _ref : defaultColumnSizing.size), (_column$columnDef$max = column.columnDef.maxSize) != null ? _column$columnDef$max : 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(_ref2 => {\n let {\n [column.id]: _,\n ...rest\n } = _ref2;\n return rest;\n });\n },\n getCanResize: () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableResizing) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnResizing) != null ? _table$options$enable : 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 var _header$column$getSiz;\n sum += (_header$column$getSiz = header.column.getSize()) != null ? _header$column$getSiz : 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?.();\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 newColumnSizing = {};\n const updateOffset = (eventType, clientXPos) => {\n if (typeof clientXPos !== 'number') {\n return;\n }\n table.setColumnSizingInfo(old => {\n var _old$startOffset, _old$startSize;\n const deltaOffset = clientXPos - ((_old$startOffset = old?.startOffset) != null ? _old$startOffset : 0);\n const deltaPercentage = Math.max(deltaOffset / ((_old$startSize = old?.startSize) != null ? _old$startSize : 0), -0.999999);\n old.columnSizingStart.forEach(_ref3 => {\n let [columnId, headerSize] = _ref3;\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 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[0]?.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?.(updater),\n setColumnSizingInfo: updater => table.options.onColumnSizingInfoChange?.(updater),\n resetColumnSizing: defaultState => {\n var _table$initialState$c;\n table.setColumnSizing(defaultState ? {} : (_table$initialState$c = table.initialState.columnSizing) != null ? _table$initialState$c : {});\n },\n resetHeaderSizeInfo: defaultState => {\n var _table$initialState$c2;\n table.setColumnSizingInfo(defaultState ? getDefaultColumnSizingInfoState() : (_table$initialState$c2 = table.initialState.columnSizingInfo) != null ? _table$initialState$c2 : getDefaultColumnSizingInfoState());\n },\n getTotalSize: () => {\n var _table$getHeaderGroup;\n return (_table$getHeaderGroup = table.getHeaderGroups()[0]?.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getHeaderGroup : 0;\n },\n getLeftTotalSize: () => {\n var _table$getLeftHeaderG;\n return (_table$getLeftHeaderG = table.getLeftHeaderGroups()[0]?.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getLeftHeaderG : 0;\n },\n getCenterTotalSize: () => {\n var _table$getCenterHeade;\n return (_table$getCenterHeade = table.getCenterHeaderGroups()[0]?.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getCenterHeade : 0;\n },\n getRightTotalSize: () => {\n var _table$getRightHeader;\n return (_table$getRightHeader = table.getRightHeaderGroups()[0]?.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getRightHeader : 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 var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetExpanded) != null ? _ref : !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?.(updater),\n toggleAllRowsExpanded: expanded => {\n if (expanded != null ? expanded : !table.getIsAllRowsExpanded()) {\n table.setExpanded(true);\n } else {\n table.setExpanded({});\n }\n },\n resetExpanded: defaultState => {\n var _table$initialState$e;\n table.setExpanded(defaultState ? {} : (_table$initialState$e = table.initialState?.expanded) != null ? _table$initialState$e : {});\n },\n getCanSomeRowsExpand: () => {\n return table.getRowModel().flatRows.some(row => row.getCanExpand());\n },\n getToggleAllRowsExpandedHandler: () => {\n return e => {\n 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 var _expanded;\n const exists = old === true ? true : !!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 = expanded) != null ? _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 var _table$options$getIsR;\n const expanded = table.getState().expanded;\n return !!((_table$options$getIsR = table.options.getIsRowExpanded?.(row)) != null ? _table$options$getIsR : expanded === true || expanded?.[row.id]);\n },\n getCanExpand: () => {\n var _table$options$getRow, _table$options$enable;\n return (_table$options$getRow = table.options.getRowCanExpand?.(row)) != null ? _table$options$getRow : ((_table$options$enable = table.options.enableExpanding) != null ? _table$options$enable : true) && !!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 const search = filterValue.toLowerCase();\n return Boolean(row.getValue(columnId)?.toLowerCase().includes(search));\n};\nincludesString.autoRemove = val => testFalsey(val);\nconst includesStringSensitive = (row, columnId, filterValue) => {\n return Boolean(row.getValue(columnId)?.includes(filterValue));\n};\nincludesStringSensitive.autoRemove = val => testFalsey(val);\nconst equalsString = (row, columnId, filterValue) => {\n return row.getValue(columnId)?.toLowerCase() === filterValue.toLowerCase();\n};\nequalsString.autoRemove = val => testFalsey(val);\nconst arrIncludes = (row, columnId, filterValue) => {\n return row.getValue(columnId)?.includes(filterValue);\n};\narrIncludes.autoRemove = val => testFalsey(val) || !val?.length;\nconst arrIncludesAll = (row, columnId, filterValue) => {\n return !filterValue.some(val => !row.getValue(columnId)?.includes(val));\n};\narrIncludesAll.autoRemove = val => testFalsey(val) || !val?.length;\nconst arrIncludesSome = (row, columnId, filterValue) => {\n return filterValue.some(val => row.getValue(columnId)?.includes(val));\n};\narrIncludesSome.autoRemove = val => testFalsey(val) || !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 const value = table.getCoreRowModel().flatRows[0]?._getAllCellsByColumnId()[column.id]?.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?.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()\n // @ts-ignore \n : (_table$options$filter = table.options.filterFns?.[column.columnDef.filterFn]) != null ? _table$options$filter : filterFns[column.columnDef.filterFn];\n },\n getCanFilter: () => {\n var _column$columnDef$ena, _table$options$enable, _table$options$enable2;\n return ((_column$columnDef$ena = column.columnDef.enableColumnFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnFilters) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && !!column.accessorFn;\n },\n getCanGlobalFilter: () => {\n var _column$columnDef$ena2, _table$options$enable3, _table$options$enable4, _table$options$getCol;\n return ((_column$columnDef$ena2 = column.columnDef.enableGlobalFilter) != null ? _column$columnDef$ena2 : true) && ((_table$options$enable3 = table.options.enableGlobalFilter) != null ? _table$options$enable3 : true) && ((_table$options$enable4 = table.options.enableFilters) != null ? _table$options$enable4 : true) && ((_table$options$getCol = table.options.getColumnCanGlobalFilter?.(column)) != null ? _table$options$getCol : true) && !!column.accessorFn;\n },\n getIsFiltered: () => column.getFilterIndex() > -1,\n getFilterValue: () => table.getState().columnFilters?.find(d => d.id === column.id)?.value,\n getFilterIndex: () => {\n var _table$getState$colum;\n return (_table$getState$colum = table.getState().columnFilters?.findIndex(d => d.id === column.id)) != null ? _table$getState$colum : -1;\n },\n setFilterValue: value => {\n table.setColumnFilters(old => {\n const filterFn = column.getFilterFn();\n const previousfilter = 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 var _old$filter;\n return (_old$filter = old?.filter(d => d.id !== column.id)) != null ? _old$filter : [];\n }\n const newFilterObj = {\n id: column.id,\n value: newFilter\n };\n if (previousfilter) {\n var _old$map;\n return (_old$map = old?.map(d => {\n if (d.id === column.id) {\n return newFilterObj;\n }\n return d;\n })) != null ? _old$map : [];\n }\n if (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()\n // @ts-ignore\n : (_table$options$filter2 = table.options.filterFns?.[globalFilterFn]) != null ? _table$options$filter2 : filterFns[globalFilterFn];\n },\n setColumnFilters: updater => {\n const leafColumns = table.getAllLeafColumns();\n const updateFn = old => {\n return functionalUpdate(updater, old)?.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?.(updateFn);\n },\n setGlobalFilter: updater => {\n table.options.onGlobalFilterChange?.(updater);\n },\n resetGlobalFilter: defaultState => {\n table.setGlobalFilter(defaultState ? undefined : table.initialState.globalFilter);\n },\n resetColumnFilters: defaultState => {\n var _table$initialState$c;\n table.setColumnFilters(defaultState ? [] : (_table$initialState$c = table.initialState?.columnFilters) != null ? _table$initialState$c : []);\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 _toString;\n return (_toString = props.getValue()?.toString?.()) != null ? _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?.includes(column.id)) {\n return old.filter(d => d !== column.id);\n }\n return [...(old != null ? old : []), column.id];\n });\n },\n getCanGroup: () => {\n var _ref, _ref2, _ref3, _column$columnDef$ena;\n return (_ref = (_ref2 = (_ref3 = (_column$columnDef$ena = column.columnDef.enableGrouping) != null ? _column$columnDef$ena : true) != null ? _ref3 : table.options.enableGrouping) != null ? _ref2 : true) != null ? _ref : !!column.accessorFn;\n },\n getIsGrouped: () => {\n return table.getState().grouping?.includes(column.id);\n },\n getGroupedIndex: () => table.getState().grouping?.indexOf(column.id),\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?.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?.[column.columnDef.aggregationFn]) != null ? _table$options$aggreg : aggregationFns[column.columnDef.aggregationFn];\n }\n };\n },\n createTable: table => {\n return {\n setGrouping: updater => table.options.onGroupingChange?.(updater),\n resetGrouping: defaultState => {\n var _table$initialState$g;\n table.setGrouping(defaultState ? [] : (_table$initialState$g = table.initialState?.grouping) != null ? _table$initialState$g : []);\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: () => !cell.getIsGrouped() && !cell.getIsPlaceholder() && !!row.subRows?.length\n };\n }\n};\nfunction orderColumns(leafColumns, grouping, groupedColumnMode) {\n if (!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?.(updater),\n resetColumnOrder: defaultState => {\n var _table$initialState$c;\n table.setColumnOrder(defaultState ? [] : (_table$initialState$c = table.initialState.columnOrder) != null ? _table$initialState$c : []);\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?.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?.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 var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetPageIndex) != null ? _ref : !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?.(safeUpdater);\n },\n resetPagination: defaultState => {\n var _table$initialState$p;\n table.setPagination(defaultState ? getDefaultPaginationState() : (_table$initialState$p = table.initialState.pagination) != null ? _table$initialState$p : 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$p2;\n table.setPageIndex(defaultState ? defaultPageIndex : (_table$initialState$p2 = table.initialState?.pagination?.pageIndex) != null ? _table$initialState$p2 : defaultPageIndex);\n },\n resetPageSize: defaultState => {\n var _table$initialState$p3;\n table.setPageSize(defaultState ? defaultPageSize : (_table$initialState$p3 = table.initialState?.pagination?.pageSize) != null ? _table$initialState$p3 : 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 var _table$options$pageCo;\n let newPageCount = functionalUpdate(updater, (_table$options$pageCo = table.options.pageCount) != null ? _table$options$pageCo : -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: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;\n }\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 var _table$options$pageCo2;\n return (_table$options$pageCo2 = table.options.pageCount) != null ? _table$options$pageCo2 : 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 var _old$left3, _old$right3;\n if (position === 'right') {\n var _old$left, _old$right;\n return {\n left: ((_old$left = old?.left) != null ? _old$left : []).filter(d => !columnIds?.includes(d)),\n right: [...((_old$right = old?.right) != null ? _old$right : []).filter(d => !columnIds?.includes(d)), ...columnIds]\n };\n }\n if (position === 'left') {\n var _old$left2, _old$right2;\n return {\n left: [...((_old$left2 = old?.left) != null ? _old$left2 : []).filter(d => !columnIds?.includes(d)), ...columnIds],\n right: ((_old$right2 = old?.right) != null ? _old$right2 : []).filter(d => !columnIds?.includes(d))\n };\n }\n return {\n left: ((_old$left3 = old?.left) != null ? _old$left3 : []).filter(d => !columnIds?.includes(d)),\n right: ((_old$right3 = old?.right) != null ? _old$right3 : []).filter(d => !columnIds?.includes(d))\n };\n });\n },\n getCanPin: () => {\n const leafColumns = column.getLeafColumns();\n return leafColumns.some(d => {\n var _d$columnDef$enablePi, _table$options$enable;\n return ((_d$columnDef$enablePi = d.columnDef.enablePinning) != null ? _d$columnDef$enablePi : true) && ((_table$options$enable = table.options.enablePinning) != null ? _table$options$enable : true);\n });\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?.includes(d));\n const isRight = leafColumnIds.some(d => right?.includes(d));\n return isLeft ? 'left' : isRight ? 'right' : false;\n },\n getPinnedIndex: () => {\n var _table$getState$colum;\n const position = column.getIsPinned();\n return position ? (_table$getState$colum = table.getState().columnPinning?.[position]?.indexOf(column.id)) != null ? _table$getState$colum : -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 != null ? left : []), ...(right != null ? right : [])];\n return allCells.filter(d => !leftAndRight.includes(d.column.id));\n }, {\n key: process.env.NODE_ENV === 'production' && 'row.getCenterVisibleCells',\n debug: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugRows;\n }\n }),\n getLeftVisibleCells: memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left,,], (allCells, left) => {\n const cells = (left != null ? 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: () => {\n var _table$options$debugA2;\n return (_table$options$debugA2 = table.options.debugAll) != null ? _table$options$debugA2 : table.options.debugRows;\n }\n }),\n getRightVisibleCells: memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.right], (allCells, right) => {\n const cells = (right != null ? 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: () => {\n var _table$options$debugA3;\n return (_table$options$debugA3 = table.options.debugAll) != null ? _table$options$debugA3 : table.options.debugRows;\n }\n })\n };\n },\n createTable: table => {\n return {\n setColumnPinning: updater => table.options.onColumnPinningChange?.(updater),\n resetColumnPinning: defaultState => {\n var _table$initialState$c;\n return table.setColumnPinning(defaultState ? getDefaultPinningState() : (_table$initialState$c = table.initialState?.columnPinning) != null ? _table$initialState$c : getDefaultPinningState());\n },\n getIsSomeColumnsPinned: position => {\n const pinningState = table.getState().columnPinning;\n if (!position) {\n return Boolean(pinningState.left?.length || pinningState.right?.length);\n }\n return Boolean(pinningState[position]?.length);\n },\n getLeftLeafColumns: memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left], (allColumns, left) => {\n return (left != null ? left : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getLeftLeafColumns',\n debug: () => {\n var _table$options$debugA4;\n return (_table$options$debugA4 = table.options.debugAll) != null ? _table$options$debugA4 : table.options.debugColumns;\n }\n }),\n getRightLeafColumns: memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.right], (allColumns, right) => {\n return (right != null ? right : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getRightLeafColumns',\n debug: () => {\n var _table$options$debugA5;\n return (_table$options$debugA5 = table.options.debugAll) != null ? _table$options$debugA5 : table.options.debugColumns;\n }\n }),\n getCenterLeafColumns: memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allColumns.filter(d => !leftAndRight.includes(d.id));\n }, {\n key: process.env.NODE_ENV === 'development' && 'getCenterLeafColumns',\n debug: () => {\n var _table$options$debugA6;\n return (_table$options$debugA6 = table.options.debugAll) != null ? _table$options$debugA6 : table.options.debugColumns;\n }\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?.(updater),\n resetRowSelection: defaultState => {\n var _table$initialState$r;\n return table.setRowSelection(defaultState ? {} : (_table$initialState$r = table.initialState.rowSelection) != null ? _table$initialState$r : {});\n },\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: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;\n }\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: () => {\n var _table$options$debugA2;\n return (_table$options$debugA2 = table.options.debugAll) != null ? _table$options$debugA2 : table.options.debugTable;\n }\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: () => {\n var _table$options$debugA3;\n return (_table$options$debugA3 = table.options.debugAll) != null ? _table$options$debugA3 : table.options.debugTable;\n }\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 var _table$getState$rowSe;\n const totalSelected = Object.keys((_table$getState$rowSe = table.getState().rowSelection) != null ? _table$getState$rowSe : {}).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 var _table$options$enable;\n if (typeof table.options.enableRowSelection === 'function') {\n return table.options.enableRowSelection(row);\n }\n return (_table$options$enable = table.options.enableRowSelection) != null ? _table$options$enable : true;\n },\n getCanSelectSubRows: () => {\n var _table$options$enable2;\n if (typeof table.options.enableSubRowSelection === 'function') {\n return table.options.enableSubRowSelection(row);\n }\n return (_table$options$enable2 = table.options.enableSubRowSelection) != null ? _table$options$enable2 : true;\n },\n getCanMultiSelect: () => {\n var _table$options$enable3;\n if (typeof table.options.enableMultiRowSelection === 'function') {\n return table.options.enableMultiRowSelection(row);\n }\n return (_table$options$enable3 = table.options.enableMultiRowSelection) != null ? _table$options$enable3 : true;\n },\n getToggleSelectedHandler: () => {\n const canSelect = row.getCanSelect();\n return e => {\n if (!canSelect) return;\n row.toggleSelected(e.target?.checked);\n };\n }\n };\n }\n};\nconst mutateRowIsSelected = (selectedRowIds, id, value, table) => {\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?.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 const isSelected = isRowSelected(row, rowSelection);\n if (isSelected) {\n newSelectedFlatRows.push(row);\n newSelectedRowsById[row.id] = row;\n }\n if (row.subRows?.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 var _selection$row$id;\n return (_selection$row$id = selection[row.id]) != null ? _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?.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?.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?.[column.columnDef.sortingFn]) != null ? _table$options$sortin : 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?.find(d => d.id === column.id);\n const existingIndex = 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?.length && column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'add';\n }\n } else {\n // Normal mode\n if (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 var _table$options$maxMul;\n newSorting = [...old, {\n id: column.id,\n desc: nextDesc\n }];\n // Take latest n columns\n newSorting.splice(0, newSorting.length - ((_table$options$maxMul = table.options.maxMultiSortColCount) != null ? _table$options$maxMul : 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 var _ref, _column$columnDef$sor;\n const sortDescFirst = (_ref = (_column$columnDef$sor = column.columnDef.sortDescFirst) != null ? _column$columnDef$sor : table.options.sortDescFirst) != null ? _ref : column.getAutoSortDir() === 'desc';\n return sortDescFirst ? 'desc' : 'asc';\n },\n getNextSortingOrder: multi => {\n var _table$options$enable, _table$options$enable2;\n const firstSortDirection = column.getFirstSortDir();\n const isSorted = column.getIsSorted();\n if (!isSorted) {\n return firstSortDirection;\n }\n if (isSorted !== firstSortDirection && ((_table$options$enable = table.options.enableSortingRemoval) != null ? _table$options$enable : true) && (\n // If enableSortRemove, enable in general\n multi ? (_table$options$enable2 = table.options.enableMultiRemove) != null ? _table$options$enable2 : true : true) // If multi, don't allow if enableMultiRemove))\n ) {\n return false;\n }\n return isSorted === 'desc' ? 'asc' : 'desc';\n },\n getCanSort: () => {\n var _column$columnDef$ena, _table$options$enable3;\n return ((_column$columnDef$ena = column.columnDef.enableSorting) != null ? _column$columnDef$ena : true) && ((_table$options$enable3 = table.options.enableSorting) != null ? _table$options$enable3 : true) && !!column.accessorFn;\n },\n getCanMultiSort: () => {\n var _ref2, _column$columnDef$ena2;\n return (_ref2 = (_column$columnDef$ena2 = column.columnDef.enableMultiSort) != null ? _column$columnDef$ena2 : table.options.enableMultiSort) != null ? _ref2 : !!column.accessorFn;\n },\n getIsSorted: () => {\n const columnSort = table.getState().sorting?.find(d => d.id === column.id);\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc';\n },\n getSortIndex: () => {\n var _table$getState$sorti;\n return (_table$getState$sorti = table.getState().sorting?.findIndex(d => d.id === column.id)) != null ? _table$getState$sorti : -1;\n },\n clearSorting: () => {\n //clear sorting for just 1 column\n table.setSorting(old => 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?.();\n column.toggleSorting?.(undefined, column.getCanMultiSort() ? table.options.isMultiSortEvent?.(e) : false);\n };\n }\n };\n },\n createTable: table => {\n return {\n setSorting: updater => table.options.onSortingChange?.(updater),\n resetSorting: defaultState => {\n var _table$initialState$s;\n table.setSorting(defaultState ? [] : (_table$initialState$s = table.initialState?.sorting) != null ? _table$initialState$s : []);\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 != null ? value : !column.getIsVisible()\n }));\n }\n },\n getIsVisible: () => {\n var _table$getState$colum;\n return (_table$getState$colum = table.getState().columnVisibility?.[column.id]) != null ? _table$getState$colum : true;\n },\n getCanHide: () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableHiding) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableHiding) != null ? _table$options$enable : true);\n },\n getToggleVisibilityHandler: () => {\n return e => {\n 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: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugRows;\n }\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: () => {\n var _table$options$debugA2;\n return (_table$options$debugA2 = table.options.debugAll) != null ? _table$options$debugA2 : table.options.debugRows;\n }\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?.());\n }, {\n key,\n debug: () => {\n var _table$options$debugA3;\n return (_table$options$debugA3 = table.options.debugAll) != null ? _table$options$debugA3 : table.options.debugColumns;\n }\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?.(updater),\n resetColumnVisibility: defaultState => {\n var _table$initialState$c;\n table.setColumnVisibility(defaultState ? {} : (_table$initialState$c = table.initialState.columnVisibility) != null ? _table$initialState$c : {});\n },\n toggleAllColumnsVisible: value => {\n var _value;\n value = (_value = value) != null ? _value : !table.getIsAllColumnsVisible();\n table.setColumnVisibility(table.getAllLeafColumns().reduce((obj, column) => ({\n ...obj,\n [column.id]: !value ? !column.getCanHide?.() : value\n }), {}));\n },\n getIsAllColumnsVisible: () => !table.getAllLeafColumns().some(column => !column.getIsVisible?.()),\n getIsSomeColumnsVisible: () => table.getAllLeafColumns().some(column => column.getIsVisible?.()),\n getToggleAllColumnsVisibilityHandler: () => {\n return e => {\n table.toggleAllColumnsVisible(e.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 var _options$initialState;\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?.(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 = options.initialState) != null ? _options$initialState : {})\n };\n table._features.forEach(feature => {\n var _feature$getInitialSt;\n initialState = (_feature$getInitialSt = feature.getInitialState?.(initialState)) != null ? _feature$getInitialSt : 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?.(updater);\n },\n _getRowId: (row, index, parent) => {\n var _table$options$getRow;\n return (_table$options$getRow = table.options.getRowId?.(row, index, parent)) != null ? _table$options$getRow : `${parent ? [parent.id, index].join('.') : index}`;\n },\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 var _defaultColumn;\n defaultColumn = (_defaultColumn = defaultColumn) != null ? _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$to;\n return (_props$renderValue$to = props.renderValue()?.toString?.()) != null ? _props$renderValue$to : null;\n },\n ...table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultColumnDef?.());\n }, {}),\n ...defaultColumn\n };\n }, {\n debug: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugColumns;\n },\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: () => {\n var _table$options$debugA2;\n return (_table$options$debugA2 = table.options.debugAll) != null ? _table$options$debugA2 : table.options.debugColumns;\n }\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: () => {\n var _table$options$debugA3;\n return (_table$options$debugA3 = table.options.debugAll) != null ? _table$options$debugA3 : table.options.debugColumns;\n }\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: () => {\n var _table$options$debugA4;\n return (_table$options$debugA4 = table.options.debugAll) != null ? _table$options$debugA4 : table.options.debugColumns;\n }\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: () => {\n var _table$options$debugA5;\n return (_table$options$debugA5 = table.options.debugAll) != null ? _table$options$debugA5 : table.options.debugColumns;\n }\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?.(table));\n });\n return table;\n}\n\nfunction createCell(table, row, column, columnId) {\n const getRenderValue = () => {\n var _cell$getValue;\n return (_cell$getValue = cell.getValue()) != null ? _cell$getValue : table.options.renderFallbackValue;\n };\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?.(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 => {\n var _row$getValue;\n return (_row$getValue = row.getValue(columnId)) != null ? _row$getValue : table.options.renderFallbackValue;\n },\n subRows: subRows != null ? 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: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugRows;\n }\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: () => {\n var _table$options$debugA2;\n return (_table$options$debugA2 = table.options.debugAll) != null ? _table$options$debugA2 : table.options.debugRows;\n }\n })\n };\n for (let i = 0; i < table._features.length; i++) {\n const feature = table._features[i];\n Object.assign(row, 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 row.originalSubRows = table.options.getSubRows(originalRows[i], i);\n\n // Then recursively access them\n if (row.originalSubRows?.length) {\n row.subRows = accessRows(row.originalSubRows, depth + 1, row);\n }\n }\n }\n return rows;\n };\n rowModel.rows = accessRows(data);\n return rowModel;\n }, {\n key: process.env.NODE_ENV === 'development' && 'getRowModel',\n debug: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;\n },\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 var _table$options$maxLea;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea : 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 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?.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 var _table$options$maxLea2;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea2 = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea2 : 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 if (row.subRows?.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?.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 != null ? columnFilters : []).forEach(d => {\n var _filterFn$resolveFilt;\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$resolveFilt = filterFn.resolveFilterValue?.(d.value)) != null ? _filterFn$resolveFilt : 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 var _globalFilterFn$resol;\n resolvedGlobalFilters.push({\n id: column.id,\n filterFn: globalFilterFn,\n resolvedValue: (_globalFilterFn$resol = globalFilterFn.resolveFilterValue?.(globalFilter)) != null ? _globalFilterFn$resol : 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: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;\n },\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?.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: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;\n },\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 var _facetedUniqueValues$;\n facetedUniqueValues.set(value, ((_facetedUniqueValues$ = facetedUniqueValues.get(value)) != null ? _facetedUniqueValues$ : 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: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;\n },\n onChange: () => {}\n });\n}\n\nfunction getFacetedMinMaxValues() {\n return (table, columnId) => memo(() => [table.getColumn(columnId).getFacetedRowModel()], facetedRowModel => {\n const firstValue = facetedRowModel.flatRows[0]?.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: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;\n },\n onChange: () => {}\n });\n}\n\nfunction getSortedRowModel() {\n return table => memo(() => [table.getState().sorting, table.getPreSortedRowModel()], (sorting, rowModel) => {\n if (!rowModel.rows.length || !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 var _sortEntry$desc;\n const sortEntry = availableSorting[i];\n const columnInfo = columnInfoById[sortEntry.id];\n const isDesc = (_sortEntry$desc = sortEntry?.desc) != null ? _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 sortedFlatRows.push(row);\n if (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: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;\n },\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 var _groupedRows$0$getVal;\n row._valuesCache[columnId] = (_groupedRows$0$getVal = groupedRows[0].getValue(columnId)) != null ? _groupedRows$0$getVal : 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: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;\n },\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 != null ? 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: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;\n }\n });\n}\nfunction expandRows(rowModel) {\n const expandedRows = [];\n const handleRow = row => {\n expandedRows.push(row);\n if (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: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;\n }\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.mjs.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","_ref","_resolvedColumnDef$id","resolvedColumnDef","_getDefaultColumnDef","accessorKey","accessorFn","id","replace","undefined","header","includes","originalRow","split","Error","column","columns","getFlatColumns","flatMap","_table$options$debugA","options","debugAll","debugColumns","getLeafColumns","_getOrderColumnsFn","orderColumns","leafColumns","_table$options$debugA2","_features","reduce","obj","feature","Object","assign","createHeader","_options$id","isPlaceholder","placeholderId","subHeaders","colSpan","rowSpan","headerGroup","getLeafHeaders","leafHeaders","recurseHeader","h","map","getContext","Headers","createTable","getHeaderGroups","getAllColumns","getVisibleLeafColumns","getState","columnPinning","left","right","allColumns","_left$map$filter","_right$map$filter","leftColumns","columnId","find","filter","Boolean","rightColumns","buildHeaderGroups","debugHeaders","getCenterHeaderGroups","getLeftHeaderGroups","_left$map$filter2","_table$options$debugA3","getRightHeaderGroups","_right$map$filter2","_table$options$debugA4","getFooterGroups","headerGroups","reverse","_table$options$debugA5","getLeftFooterGroups","_table$options$debugA6","getCenterFooterGroups","_table$options$debugA7","getRightFooterGroups","_table$options$debugA8","getFlatHeaders","headers","_table$options$debugA9","getLeftFlatHeaders","_table$options$debugA10","getCenterFlatHeaders","_table$options$debugA11","getRightFlatHeaders","_table$options$debugA12","getCenterLeafHeaders","flatHeaders","_table$options$debugA13","getLeftLeafHeaders","_table$options$debugA14","getRightLeafHeaders","_table$options$debugA15","center","_left$0$headers","_center$0$headers","_right$0$headers","_table$options$debugA16","columnsToGroup","headerFamily","_headerGroups$0$heade","maxDepth","findMaxDepth","getIsVisible","createHeaderGroup","headersToGroup","join","pendingParentHeaders","headerToGroup","latestPendingParentHeader","bottomHeaders","recurseHeadersForSpans","childRowSpans","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","_column$columnDef$min","_column$columnDef$max","columnSize","getStart","position","getLeftVisibleLeafColumns","getRightVisibleLeafColumns","findIndex","prevSiblingColumn","resetSize","setColumnSizing","_ref2","_","rest","getCanResize","_column$columnDef$ena","_table$options$enable","enableResizing","enableColumnResizing","getIsResizing","sum","_header$column$getSiz","prevSiblingHeader","getResizeHandler","getColumn","canResize","e","persist","isTouchStartEvent","touches","clientX","newColumnSizing","updateOffset","eventType","clientXPos","setColumnSizingInfo","_old$startOffset","_old$startSize","_ref3","headerSize","onMove","onEnd","mouseEvents","moveHandler","upHandler","document","removeEventListener","touchEvents","cancelable","preventDefault","stopPropagation","passiveIfSupported","passiveEventSupported","passive","addEventListener","resetColumnSizing","defaultState","_table$initialState$c","initialState","resetHeaderSizeInfo","_table$initialState$c2","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","_table$options$autoRe","autoResetAll","autoResetExpanded","manualExpanding","_queue","resetExpanded","setExpanded","toggleAllRowsExpanded","getIsAllRowsExpanded","_table$initialState$e","getCanSomeRowsExpand","getRowModel","flatRows","row","getCanExpand","getToggleAllRowsExpandedHandler","getIsSomeRowsExpanded","values","keys","getIsExpanded","getExpandedDepth","rowsById","splitId","getPreExpandedRowModel","getSortedRowModel","getExpandedRowModel","_getExpandedRowModel","createRow","toggleExpanded","_expanded","exists","oldExpanded","rowId","_table$options$getIsR","getIsRowExpanded","_table$options$getRow","getRowCanExpand","enableExpanding","subRows","getToggleExpandedHandler","canExpand","includesString","filterValue","search","toLowerCase","getValue","autoRemove","val","testFalsey","includesStringSensitive","equalsString","arrIncludes","arrIncludesAll","arrIncludesSome","equals","weakEquals","inNumberRange","rowValue","resolveFilterValue","unsafeMin","unsafeMax","parsedMin","parseFloat","parsedMax","isNaN","Infinity","temp","filterFns","Filters","filterFn","columnFilters","globalFilter","onColumnFiltersChange","onGlobalFilterChange","filterFromLeafRows","maxLeafRowFilterDepth","globalFilterFn","getColumnCanGlobalFilter","value","getCoreRowModel","_getAllCellsByColumnId","getAutoFilterFn","Array","isArray","getFilterFn","_table$options$filter","getCanFilter","_table$options$enable2","enableColumnFilter","enableColumnFilters","enableFilters","getCanGlobalFilter","_column$columnDef$ena2","_table$options$enable3","_table$options$enable4","_table$options$getCol","enableGlobalFilter","getIsFiltered","getFilterIndex","getFilterValue","_table$getState$colum","setFilterValue","setColumnFilters","previousfilter","newFilter","_old$filter","shouldAutoRemoveFilter","newFilterObj","_old$map","_getFacetedRowModel","getFacetedRowModel","getPreFilteredRowModel","_getFacetedUniqueValues","getFacetedUniqueValues","Map","_getFacetedMinMaxValues","getFacetedMinMaxValues","columnFiltersMeta","getGlobalAutoFilterFn","getGlobalFilterFn","_table$options$filter2","getAllLeafColumns","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","_toString","toString","aggregationFn","grouping","onGroupingChange","groupedColumnMode","toggleGrouping","setGrouping","getCanGroup","enableGrouping","getIsGrouped","getGroupedIndex","indexOf","getToggleGroupingHandler","canGroup","getAutoAggregationFn","prototype","call","getAggregationFn","_table$options$aggreg","resetGrouping","_table$initialState$g","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","_table$initialState$p","setPageIndex","maxPageIndex","pageCount","_table$initialState$p2","resetPageSize","_table$initialState$p3","setPageSize","topRowIndex","floor","setPageCount","_table$options$pageCo","newPageCount","getPageOptions","getPageCount","pageOptions","fill","i","debugTable","getCanPreviousPage","getCanNextPage","previousPage","nextPage","getPrePaginationRowModel","getPaginationRowModel","_getPaginationRowModel","_table$options$pageCo2","ceil","rows","Pinning","onColumnPinningChange","pin","columnIds","setColumnPinning","_old$left3","_old$right3","_old$left","_old$right","_old$left2","_old$right2","getCanPin","_d$columnDef$enablePi","enablePinning","getIsPinned","leafColumnIds","isLeft","isRight","getPinnedIndex","getCenterVisibleCells","_getAllVisibleCells","allCells","leftAndRight","debugRows","getLeftVisibleCells","getRightVisibleCells","resetColumnPinning","getIsSomeColumnsPinned","pinningState","getLeftLeafColumns","getRightLeafColumns","getCenterLeafColumns","RowSelection","rowSelection","onRowSelectionChange","enableRowSelection","enableMultiRowSelection","enableSubRowSelection","setRowSelection","resetRowSelection","_table$initialState$r","toggleAllRowsSelected","getIsAllRowsSelected","preGroupedFlatRows","getCanSelect","toggleAllPageRowsSelected","resolvedValue","getIsAllPageRowsSelected","mutateRowIsSelected","getPreSelectedRowModel","getSelectedRowModel","rowModel","selectRowsFn","getFilteredSelectedRowModel","getGroupedSelectedRowModel","isAllRowsSelected","paginationFlatRows","isAllPageRowsSelected","getIsSomeRowsSelected","_table$getState$rowSe","totalSelected","getIsSomePageRowsSelected","getIsSelected","getIsSomeSelected","getToggleAllRowsSelectedHandler","target","checked","getToggleAllPageRowsSelectedHandler","toggleSelected","isSelected","selectedRowIds","isRowSelected","isSubRowSelected","getIsAllSubRowsSelected","getCanSelectSubRows","getCanMultiSelect","getToggleSelectedHandler","canSelect","getRow","newSelectedFlatRows","newSelectedRowsById","recurseRows","selection","_selection$row$id","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","_table$options$maxMul","getCanMultiSort","maxMultiSortColCount","getFirstSortDir","_column$columnDef$sor","sortDescFirst","firstSortDirection","isSorted","getIsSorted","enableSortingRemoval","enableMultiRemove","getCanSort","enableSorting","enableMultiSort","columnSort","getSortIndex","_table$getState$sorti","clearSorting","getToggleSortingHandler","canSort","resetSorting","_table$initialState$s","getPreSortedRowModel","_getSortedRowModel","manualSorting","Visibility","columnVisibility","onColumnVisibilityChange","toggleVisibility","getCanHide","setColumnVisibility","enableHiding","getToggleVisibilityHandler","getAllCells","cells","getVisibleCells","makeVisibleColumnsMethod","getColumns","getVisibleFlatColumns","getAllFlatColumns","getCenterVisibleLeafColumns","resetColumnVisibility","toggleAllColumnsVisible","_value","getIsAllColumnsVisible","getIsSomeColumnsVisible","getToggleAllColumnsVisibilityHandler","features","_options$initialState","defaultOptions","_feature$getInitialSt","queuedTimeout","coreInstance","cb","Promise","resolve","then","catch","error","setTimeout","reset","setOptions","newOptions","mergeOptions","onStateChange","_getRowId","getRowId","_getCoreRowModel","defaultColumn","_defaultColumn","_props$renderValue$to","renderValue","_getColumnDefs","columnDefs","recurseColumns","groupingColumnDef","_getAllFlatColumnsById","flatColumns","acc","_cell$getValue","renderFallbackValue","original","rowIndex","_valuesCache","_uniqueValuesCache","hasOwnProperty","getUniqueValues","_row$getValue","getLeafRows","filterRows","filterRowImpl","rowsToFilter","filterRow","_table$options$maxLea","newFilteredFlatRows","newFilteredRowsById","recurseFilterRows","newRow","filterRowModelFromLeafs","_table$options$maxLea2","filterRowModelFromRoot","expandRows","expandedRows","handleRow","accessor","display","group","Comp","component","proto","getPrototypeOf","isReactComponent","isClassComponent","$$typeof","description","isExoticComponent","React","data","accessRows","originalRows","getSubRows","originalSubRows","facetedRowModel","firstValue","facetedMinMaxValues","j","preRowModel","filterableIds","facetedUniqueValues","_facetedUniqueValues$","has","set","get","resolvedColumnFilters","resolvedGlobalFilters","_filterFn$resolveFilt","globallyFilterableColumns","currentColumnFilter","currentGlobalFilter","_globalFilterFn$resol","filterMeta","__global__","existingGrouping","groupedFlatRows","groupedRowsById","groupUpRecursively","parentId","rowGroupsMap","groupMap","resKey","previous","groupBy","aggregatedGroupedRows","entries","groupingValue","groupedRows","_groupedRows$0$getVal","aggregateFn","pageStart","pageEnd","paginatedRowModel","sortingState","sortedFlatRows","availableSorting","columnInfoById","sortEntry","sortUndefined","invertSorting","sortData","sortedData","_sortEntry$desc","columnInfo","isDesc","aUndefined","bUndefined","sortInt","resolvedOptions","tableRef","useState","current","prev"],"mappings":"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"}