@tanstack/react-table 8.12.0 → 8.13.1

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 isNumberArray(d) {\n return Array.isArray(d) && d.every(val => typeof val === 'number');\n}\nfunction flattenBy(arr, getChildren) {\n const flat = [];\n const recurse = subArr => {\n subArr.forEach(item => {\n flat.push(item);\n const children = getChildren(item);\n if (children != null && children.length) {\n recurse(children);\n }\n });\n };\n recurse(arr);\n return flat;\n}\nfunction memo(getDeps, fn, opts) {\n let deps = [];\n let result;\n return depArgs => {\n let depTime;\n if (opts.key && opts.debug) depTime = Date.now();\n const newDeps = getDeps(depArgs);\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n if (!depsChanged) {\n return result;\n }\n deps = newDeps;\n let resultTime;\n if (opts.key && opts.debug) resultTime = Date.now();\n result = fn(...newDeps);\n opts == null || opts.onChange == null || opts.onChange(result);\n if (opts.key && opts.debug) {\n if (opts != null && opts.debug()) {\n const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;\n const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;\n const resultFpsPercentage = resultEndTime / 16;\n const pad = (str, num) => {\n str = String(str);\n while (str.length < num) {\n str = ' ' + str;\n }\n return str;\n };\n console.info(`%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`, `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(0, Math.min(120 - 120 * resultFpsPercentage, 120))}deg 100% 31%);`, opts == null ? void 0 : opts.key);\n }\n }\n return result;\n };\n}\nfunction getMemoOptions(tableOptions, debugLevel, key, onChange) {\n return {\n debug: () => {\n var _tableOptions$debugAl;\n return (_tableOptions$debugAl = tableOptions == null ? void 0 : tableOptions.debugAll) != null ? _tableOptions$debugAl : tableOptions[debugLevel];\n },\n key: process.env.NODE_ENV === 'development' && key,\n onChange\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 var _result;\n result = (_result = result) == null ? void 0 : _result[key];\n if (process.env.NODE_ENV !== 'production' && result === undefined) {\n console.warn(`\"${key}\" in deeply nested key \"${accessorKey}\" returned undefined.`);\n }\n }\n return result;\n };\n } else {\n accessorFn = originalRow => originalRow[resolvedColumnDef.accessorKey];\n }\n }\n if (!id) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(resolvedColumnDef.accessorFn ? `Columns require an id when using an accessorFn` : `Columns require an id when using a non-string header`);\n }\n throw new Error();\n }\n let column = {\n id: `${String(id)}`,\n accessorFn,\n parent: parent,\n depth,\n columnDef: resolvedColumnDef,\n columns: [],\n getFlatColumns: memo(() => [true], () => {\n var _column$columns;\n return [column, ...((_column$columns = column.columns) == null ? void 0 : _column$columns.flatMap(d => d.getFlatColumns()))];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getFlatColumns')),\n getLeafColumns: memo(() => [table._getOrderColumnsFn()], orderColumns => {\n var _column$columns2;\n if ((_column$columns2 = column.columns) != null && _column$columns2.length) {\n let leafColumns = column.columns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }\n return [column];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getLeafColumns'))\n };\n for (const feature of table._features) {\n feature.createColumn == null || feature.createColumn(column, table);\n }\n\n // Yes, we have to convert table to uknown, because we know more than the compiler here.\n return column;\n}\n\nconst debug = 'debugHeaders';\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 feature.createHeader == null || feature.createHeader(header, table);\n });\n return header;\n}\nconst Headers = {\n createTable: table => {\n // Header Groups\n\n table.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 == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter : [];\n const rightColumns = (_right$map$filter = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter : [];\n const centerColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n const headerGroups = buildHeaderGroups(allColumns, [...leftColumns, ...centerColumns, ...rightColumns], table);\n return headerGroups;\n }, getMemoOptions(table.options, debug, 'getHeaderGroups'));\n table.getCenterHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n leafColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n return buildHeaderGroups(allColumns, leafColumns, table, 'center');\n }, getMemoOptions(table.options, debug, 'getCenterHeaderGroups'));\n table.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 == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'left');\n }, getMemoOptions(table.options, debug, 'getLeftHeaderGroups'));\n table.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 == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'right');\n }, getMemoOptions(table.options, debug, 'getRightHeaderGroups'));\n\n // Footer Groups\n\n table.getFooterGroups = memo(() => [table.getHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getFooterGroups'));\n table.getLeftFooterGroups = memo(() => [table.getLeftHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getLeftFooterGroups'));\n table.getCenterFooterGroups = memo(() => [table.getCenterHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getCenterFooterGroups'));\n table.getRightFooterGroups = memo(() => [table.getRightHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getRightFooterGroups'));\n\n // Flat Headers\n\n table.getFlatHeaders = memo(() => [table.getHeaderGroups()], headerGroups => {\n return headerGroups.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getFlatHeaders'));\n table.getLeftFlatHeaders = memo(() => [table.getLeftHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeftFlatHeaders'));\n table.getCenterFlatHeaders = memo(() => [table.getCenterHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getCenterFlatHeaders'));\n table.getRightFlatHeaders = memo(() => [table.getRightHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getRightFlatHeaders'));\n\n // Leaf Headers\n\n table.getCenterLeafHeaders = memo(() => [table.getCenterFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders;\n return !((_header$subHeaders = header.subHeaders) != null && _header$subHeaders.length);\n });\n }, getMemoOptions(table.options, debug, 'getCenterLeafHeaders'));\n table.getLeftLeafHeaders = memo(() => [table.getLeftFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders2;\n return !((_header$subHeaders2 = header.subHeaders) != null && _header$subHeaders2.length);\n });\n }, getMemoOptions(table.options, debug, 'getLeftLeafHeaders'));\n table.getRightLeafHeaders = memo(() => [table.getRightFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders3;\n return !((_header$subHeaders3 = header.subHeaders) != null && _header$subHeaders3.length);\n });\n }, getMemoOptions(table.options, debug, 'getRightLeafHeaders'));\n table.getLeafHeaders = memo(() => [table.getLeftHeaderGroups(), table.getCenterHeaderGroups(), table.getRightHeaderGroups()], (left, center, right) => {\n var _left$0$headers, _left$, _center$0$headers, _center$, _right$0$headers, _right$;\n return [...((_left$0$headers = (_left$ = left[0]) == null ? void 0 : _left$.headers) != null ? _left$0$headers : []), ...((_center$0$headers = (_center$ = center[0]) == null ? void 0 : _center$.headers) != null ? _center$0$headers : []), ...((_right$0$headers = (_right$ = right[0]) == null ? void 0 : _right$.headers) != null ? _right$0$headers : [])].map(header => {\n return header.getLeafHeaders();\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeafHeaders'));\n }\n};\nfunction buildHeaderGroups(allColumns, columnsToGroup, table, headerFamily) {\n var _headerGroups$0$heade, _headerGroups$;\n // Find the max depth of the columns:\n // build the leaf column row\n // build each buffer row going up\n // placeholder for non-existent level\n // real column for existing level\n\n let maxDepth = 0;\n const findMaxDepth = function (columns, depth) {\n if (depth === void 0) {\n depth = 1;\n }\n maxDepth = Math.max(maxDepth, depth);\n columns.filter(column => column.getIsVisible()).forEach(column => {\n var _column$columns;\n if ((_column$columns = column.columns) != null && _column$columns.length) {\n findMaxDepth(column.columns, depth + 1);\n }\n }, 0);\n };\n findMaxDepth(allColumns);\n let headerGroups = [];\n const createHeaderGroup = (headersToGroup, depth) => {\n // The header group we are creating\n const headerGroup = {\n depth,\n id: [headerFamily, `${depth}`].filter(Boolean).join('_'),\n headers: []\n };\n\n // The parent columns we're going to scan next\n const pendingParentHeaders = [];\n\n // Scan each column for parents\n headersToGroup.forEach(headerToGroup => {\n // What is the latest (last) parent column?\n\n const latestPendingParentHeader = [...pendingParentHeaders].reverse()[0];\n const isLeafHeader = headerToGroup.column.depth === headerGroup.depth;\n let column;\n let isPlaceholder = false;\n if (isLeafHeader && headerToGroup.column.parent) {\n // The parent header is new\n column = headerToGroup.column.parent;\n } else {\n // The parent header is repeated\n column = headerToGroup.column;\n isPlaceholder = true;\n }\n if (latestPendingParentHeader && (latestPendingParentHeader == null ? void 0 : latestPendingParentHeader.column) === column) {\n // This column is repeated. Add it as a sub header to the next batch\n latestPendingParentHeader.subHeaders.push(headerToGroup);\n } else {\n // This is a new header. Let's create it\n const header = createHeader(table, column, {\n id: [headerFamily, depth, column.id, headerToGroup == null ? void 0 : headerToGroup.id].filter(Boolean).join('_'),\n isPlaceholder,\n placeholderId: isPlaceholder ? `${pendingParentHeaders.filter(d => d.column === column).length}` : undefined,\n depth,\n index: pendingParentHeaders.length\n });\n\n // Add the headerToGroup as a subHeader of the new header\n header.subHeaders.push(headerToGroup);\n // Add the new header to the pendingParentHeaders to get grouped\n // in the next batch\n pendingParentHeaders.push(header);\n }\n headerGroup.headers.push(headerToGroup);\n headerToGroup.headerGroup = headerGroup;\n });\n headerGroups.push(headerGroup);\n if (depth > 0) {\n createHeaderGroup(pendingParentHeaders, depth - 1);\n }\n };\n const bottomHeaders = columnsToGroup.map((column, index) => createHeader(table, column, {\n depth: maxDepth,\n index\n }));\n createHeaderGroup(bottomHeaders, maxDepth - 1);\n headerGroups.reverse();\n\n // headerGroups = headerGroups.filter(headerGroup => {\n // return !headerGroup.headers.every(header => header.isPlaceholder)\n // })\n\n const recurseHeadersForSpans = headers => {\n const filteredHeaders = headers.filter(header => header.column.getIsVisible());\n return filteredHeaders.map(header => {\n let colSpan = 0;\n let rowSpan = 0;\n let childRowSpans = [0];\n if (header.subHeaders && header.subHeaders.length) {\n childRowSpans = [];\n recurseHeadersForSpans(header.subHeaders).forEach(_ref => {\n let {\n colSpan: childColSpan,\n rowSpan: childRowSpan\n } = _ref;\n colSpan += childColSpan;\n childRowSpans.push(childRowSpan);\n });\n } else {\n colSpan = 1;\n }\n const minChildRowSpan = Math.min(...childRowSpans);\n rowSpan = rowSpan + minChildRowSpan;\n header.colSpan = colSpan;\n header.rowSpan = rowSpan;\n return {\n colSpan,\n rowSpan\n };\n });\n };\n recurseHeadersForSpans((_headerGroups$0$heade = (_headerGroups$ = headerGroups[0]) == null ? void 0 : _headerGroups$.headers) != null ? _headerGroups$0$heade : []);\n return headerGroups;\n}\n\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 columnResizeDirection: 'ltr',\n onColumnSizingChange: makeStateUpdater('columnSizing', table),\n onColumnSizingInfoChange: makeStateUpdater('columnSizingInfo', table)\n };\n },\n createColumn: (column, table) => {\n column.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 column.getStart = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(0, column.getIndex(position)).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getStart'));\n column.getAfter = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(column.getIndex(position) + 1).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getAfter'));\n column.resetSize = () => {\n table.setColumnSizing(_ref2 => {\n let {\n [column.id]: _,\n ...rest\n } = _ref2;\n return rest;\n });\n };\n column.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 column.getIsResizing = () => {\n return table.getState().columnSizingInfo.isResizingColumn === column.id;\n };\n },\n createHeader: (header, table) => {\n header.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 header.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 header.getResizeHandler = _contextDocument => {\n const column = table.getColumn(header.column.id);\n const canResize = column == null ? void 0 : column.getCanResize();\n return e => {\n if (!column || !canResize) {\n return;\n }\n e.persist == null || 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 deltaDirection = table.options.columnResizeDirection === 'rtl' ? -1 : 1;\n const deltaOffset = (clientXPos - ((_old$startOffset = old == null ? void 0 : old.startOffset) != null ? _old$startOffset : 0)) * deltaDirection;\n const deltaPercentage = Math.max(deltaOffset / ((_old$startSize = old == null ? void 0 : 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 contextDocument = _contextDocument || typeof document !== 'undefined' ? document : null;\n const mouseEvents = {\n moveHandler: e => onMove(e.clientX),\n upHandler: e => {\n contextDocument == null || contextDocument.removeEventListener('mousemove', mouseEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('mouseup', mouseEvents.upHandler);\n onEnd(e.clientX);\n }\n };\n const touchEvents = {\n moveHandler: e => {\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onMove(e.touches[0].clientX);\n return false;\n },\n upHandler: e => {\n var _e$touches$;\n contextDocument == null || contextDocument.removeEventListener('touchmove', touchEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('touchend', touchEvents.upHandler);\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onEnd((_e$touches$ = e.touches[0]) == null ? void 0 : _e$touches$.clientX);\n }\n };\n const passiveIfSupported = passiveEventSupported() ? {\n passive: false\n } : false;\n if (isTouchStartEvent(e)) {\n contextDocument == null || contextDocument.addEventListener('touchmove', touchEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.addEventListener('touchend', touchEvents.upHandler, passiveIfSupported);\n } else {\n contextDocument == null || contextDocument.addEventListener('mousemove', mouseEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.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 createTable: table => {\n table.setColumnSizing = updater => table.options.onColumnSizingChange == null ? void 0 : table.options.onColumnSizingChange(updater);\n table.setColumnSizingInfo = updater => table.options.onColumnSizingInfoChange == null ? void 0 : table.options.onColumnSizingInfoChange(updater);\n table.resetColumnSizing = defaultState => {\n var _table$initialState$c;\n table.setColumnSizing(defaultState ? {} : (_table$initialState$c = table.initialState.columnSizing) != null ? _table$initialState$c : {});\n };\n table.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 table.getTotalSize = () => {\n var _table$getHeaderGroup, _table$getHeaderGroup2;\n return (_table$getHeaderGroup = (_table$getHeaderGroup2 = table.getHeaderGroups()[0]) == null ? void 0 : _table$getHeaderGroup2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getHeaderGroup : 0;\n };\n table.getLeftTotalSize = () => {\n var _table$getLeftHeaderG, _table$getLeftHeaderG2;\n return (_table$getLeftHeaderG = (_table$getLeftHeaderG2 = table.getLeftHeaderGroups()[0]) == null ? void 0 : _table$getLeftHeaderG2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getLeftHeaderG : 0;\n };\n table.getCenterTotalSize = () => {\n var _table$getCenterHeade, _table$getCenterHeade2;\n return (_table$getCenterHeade = (_table$getCenterHeade2 = table.getCenterHeaderGroups()[0]) == null ? void 0 : _table$getCenterHeade2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getCenterHeade : 0;\n };\n table.getRightTotalSize = () => {\n var _table$getRightHeader, _table$getRightHeader2;\n return (_table$getRightHeader = (_table$getRightHeader2 = table.getRightHeaderGroups()[0]) == null ? void 0 : _table$getRightHeader2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getRightHeader : 0;\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 table._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 table.setExpanded = updater => table.options.onExpandedChange == null ? void 0 : table.options.onExpandedChange(updater);\n table.toggleAllRowsExpanded = expanded => {\n if (expanded != null ? expanded : !table.getIsAllRowsExpanded()) {\n table.setExpanded(true);\n } else {\n table.setExpanded({});\n }\n };\n table.resetExpanded = defaultState => {\n var _table$initialState$e, _table$initialState;\n table.setExpanded(defaultState ? {} : (_table$initialState$e = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.expanded) != null ? _table$initialState$e : {});\n };\n table.getCanSomeRowsExpand = () => {\n return table.getPrePaginationRowModel().flatRows.some(row => row.getCanExpand());\n };\n table.getToggleAllRowsExpandedHandler = () => {\n return e => {\n e.persist == null || e.persist();\n table.toggleAllRowsExpanded();\n };\n };\n table.getIsSomeRowsExpanded = () => {\n const expanded = table.getState().expanded;\n return expanded === true || Object.values(expanded).some(Boolean);\n };\n table.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 table.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 table.getPreExpandedRowModel = () => table.getSortedRowModel();\n table.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 createRow: (row, table) => {\n row.toggleExpanded = expanded => {\n table.setExpanded(old => {\n var _expanded;\n const exists = old === true ? true : !!(old != null && old[row.id]);\n let oldExpanded = {};\n if (old === true) {\n Object.keys(table.getRowModel().rowsById).forEach(rowId => {\n oldExpanded[rowId] = true;\n });\n } else {\n oldExpanded = old;\n }\n expanded = (_expanded = 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 row.getIsExpanded = () => {\n var _table$options$getIsR;\n const expanded = table.getState().expanded;\n return !!((_table$options$getIsR = table.options.getIsRowExpanded == null ? void 0 : table.options.getIsRowExpanded(row)) != null ? _table$options$getIsR : expanded === true || (expanded == null ? void 0 : expanded[row.id]));\n };\n row.getCanExpand = () => {\n var _table$options$getRow, _table$options$enable, _row$subRows;\n return (_table$options$getRow = table.options.getRowCanExpand == null ? void 0 : table.options.getRowCanExpand(row)) != null ? _table$options$getRow : ((_table$options$enable = table.options.enableExpanding) != null ? _table$options$enable : true) && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n row.getIsAllParentsExpanded = () => {\n let isFullyExpanded = true;\n let currentRow = row;\n while (isFullyExpanded && currentRow.parentId) {\n currentRow = table.getRow(currentRow.parentId, true);\n isFullyExpanded = currentRow.getIsExpanded();\n }\n return isFullyExpanded;\n };\n row.getToggleExpandedHandler = () => {\n const canExpand = row.getCanExpand();\n return () => {\n if (!canExpand) return;\n row.toggleExpanded();\n };\n };\n }\n};\n\nconst includesString = (row, columnId, filterValue) => {\n var _row$getValue;\n const search = filterValue.toLowerCase();\n return Boolean((_row$getValue = row.getValue(columnId)) == null || (_row$getValue = _row$getValue.toString()) == null || (_row$getValue = _row$getValue.toLowerCase()) == null ? void 0 : _row$getValue.includes(search));\n};\nincludesString.autoRemove = val => testFalsey(val);\nconst includesStringSensitive = (row, columnId, filterValue) => {\n var _row$getValue2;\n return Boolean((_row$getValue2 = row.getValue(columnId)) == null || (_row$getValue2 = _row$getValue2.toString()) == null ? void 0 : _row$getValue2.includes(filterValue));\n};\nincludesStringSensitive.autoRemove = val => testFalsey(val);\nconst equalsString = (row, columnId, filterValue) => {\n var _row$getValue3;\n return ((_row$getValue3 = row.getValue(columnId)) == null || (_row$getValue3 = _row$getValue3.toString()) == null ? void 0 : _row$getValue3.toLowerCase()) === (filterValue == null ? void 0 : filterValue.toLowerCase());\n};\nequalsString.autoRemove = val => testFalsey(val);\nconst arrIncludes = (row, columnId, filterValue) => {\n var _row$getValue4;\n return (_row$getValue4 = row.getValue(columnId)) == null ? void 0 : _row$getValue4.includes(filterValue);\n};\narrIncludes.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst arrIncludesAll = (row, columnId, filterValue) => {\n return !filterValue.some(val => {\n var _row$getValue5;\n return !((_row$getValue5 = row.getValue(columnId)) != null && _row$getValue5.includes(val));\n });\n};\narrIncludesAll.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst arrIncludesSome = (row, columnId, filterValue) => {\n return filterValue.some(val => {\n var _row$getValue6;\n return (_row$getValue6 = row.getValue(columnId)) == null ? void 0 : _row$getValue6.includes(val);\n });\n};\narrIncludesSome.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst equals = (row, columnId, filterValue) => {\n return row.getValue(columnId) === filterValue;\n};\nequals.autoRemove = val => testFalsey(val);\nconst weakEquals = (row, columnId, filterValue) => {\n return row.getValue(columnId) == filterValue;\n};\nweakEquals.autoRemove = val => testFalsey(val);\nconst inNumberRange = (row, columnId, filterValue) => {\n let [min, max] = filterValue;\n const rowValue = row.getValue(columnId);\n return rowValue >= min && rowValue <= max;\n};\ninNumberRange.resolveFilterValue = val => {\n let [unsafeMin, unsafeMax] = val;\n let parsedMin = typeof unsafeMin !== 'number' ? parseFloat(unsafeMin) : unsafeMin;\n let parsedMax = typeof unsafeMax !== 'number' ? parseFloat(unsafeMax) : unsafeMax;\n let min = unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin;\n let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax;\n if (min > max) {\n const temp = min;\n min = max;\n max = temp;\n }\n return [min, max];\n};\ninNumberRange.autoRemove = val => testFalsey(val) || testFalsey(val[0]) && testFalsey(val[1]);\n\n// Export\n\nconst filterFns = {\n includesString,\n includesStringSensitive,\n equalsString,\n arrIncludes,\n arrIncludesAll,\n arrIncludesSome,\n equals,\n weakEquals,\n inNumberRange\n};\n// Utils\n\nfunction testFalsey(val) {\n return val === undefined || val === null || val === '';\n}\n\n//\n\nconst Filters = {\n getDefaultColumnDef: () => {\n return {\n filterFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n columnFilters: [],\n globalFilter: undefined,\n // filtersProgress: 1,\n // facetProgress: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnFiltersChange: makeStateUpdater('columnFilters', table),\n onGlobalFilterChange: makeStateUpdater('globalFilter', table),\n filterFromLeafRows: false,\n maxLeafRowFilterDepth: 100,\n globalFilterFn: 'auto',\n getColumnCanGlobalFilter: column => {\n var _table$getCoreRowMode;\n const value = (_table$getCoreRowMode = table.getCoreRowModel().flatRows[0]) == null || (_table$getCoreRowMode = _table$getCoreRowMode._getAllCellsByColumnId()[column.id]) == null ? void 0 : _table$getCoreRowMode.getValue();\n return typeof value === 'string' || typeof value === 'number';\n }\n };\n },\n createColumn: (column, table) => {\n column.getAutoFilterFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return filterFns.includesString;\n }\n if (typeof value === 'number') {\n return filterFns.inNumberRange;\n }\n if (typeof value === 'boolean') {\n return filterFns.equals;\n }\n if (value !== null && typeof value === 'object') {\n return filterFns.equals;\n }\n if (Array.isArray(value)) {\n return filterFns.arrIncludes;\n }\n return filterFns.weakEquals;\n };\n column.getFilterFn = () => {\n var _table$options$filter, _table$options$filter2;\n return isFunction(column.columnDef.filterFn) ? column.columnDef.filterFn : column.columnDef.filterFn === 'auto' ? column.getAutoFilterFn() : // @ts-ignore\n (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[column.columnDef.filterFn]) != null ? _table$options$filter : filterFns[column.columnDef.filterFn];\n };\n column.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 column.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 == null ? void 0 : table.options.getColumnCanGlobalFilter(column)) != null ? _table$options$getCol : true) && !!column.accessorFn;\n };\n column.getIsFiltered = () => column.getFilterIndex() > -1;\n column.getFilterValue = () => {\n var _table$getState$colum;\n return (_table$getState$colum = table.getState().columnFilters) == null || (_table$getState$colum = _table$getState$colum.find(d => d.id === column.id)) == null ? void 0 : _table$getState$colum.value;\n };\n column.getFilterIndex = () => {\n var _table$getState$colum2, _table$getState$colum3;\n return (_table$getState$colum2 = (_table$getState$colum3 = table.getState().columnFilters) == null ? void 0 : _table$getState$colum3.findIndex(d => d.id === column.id)) != null ? _table$getState$colum2 : -1;\n };\n column.setFilterValue = value => {\n table.setColumnFilters(old => {\n const filterFn = column.getFilterFn();\n const previousfilter = old == null ? void 0 : old.find(d => d.id === column.id);\n const newFilter = functionalUpdate(value, previousfilter ? previousfilter.value : undefined);\n\n //\n if (shouldAutoRemoveFilter(filterFn, newFilter, column)) {\n var _old$filter;\n return (_old$filter = old == null ? void 0 : 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 == null ? void 0 : old.map(d => {\n if (d.id === column.id) {\n return newFilterObj;\n }\n return d;\n })) != null ? _old$map : [];\n }\n if (old != null && old.length) {\n return [...old, newFilterObj];\n }\n return [newFilterObj];\n });\n };\n column._getFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, column.id);\n column.getFacetedRowModel = () => {\n if (!column._getFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return column._getFacetedRowModel();\n };\n column._getFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, column.id);\n column.getFacetedUniqueValues = () => {\n if (!column._getFacetedUniqueValues) {\n return new Map();\n }\n return column._getFacetedUniqueValues();\n };\n column._getFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, column.id);\n column.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 createRow: (row, table) => {\n row.columnFilters = {};\n row.columnFiltersMeta = {};\n },\n createTable: table => {\n table.getGlobalAutoFilterFn = () => {\n return filterFns.includesString;\n };\n table.getGlobalFilterFn = () => {\n var _table$options$filter3, _table$options$filter4;\n const {\n globalFilterFn: globalFilterFn\n } = table.options;\n return isFunction(globalFilterFn) ? globalFilterFn : globalFilterFn === 'auto' ? table.getGlobalAutoFilterFn() : // @ts-ignore\n (_table$options$filter3 = (_table$options$filter4 = table.options.filterFns) == null ? void 0 : _table$options$filter4[globalFilterFn]) != null ? _table$options$filter3 : filterFns[globalFilterFn];\n };\n table.setColumnFilters = updater => {\n const leafColumns = table.getAllLeafColumns();\n const updateFn = old => {\n var _functionalUpdate;\n return (_functionalUpdate = functionalUpdate(updater, old)) == null ? void 0 : _functionalUpdate.filter(filter => {\n const column = leafColumns.find(d => d.id === filter.id);\n if (column) {\n const filterFn = column.getFilterFn();\n if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {\n return false;\n }\n }\n return true;\n });\n };\n table.options.onColumnFiltersChange == null || table.options.onColumnFiltersChange(updateFn);\n };\n table.setGlobalFilter = updater => {\n table.options.onGlobalFilterChange == null || table.options.onGlobalFilterChange(updater);\n };\n table.resetGlobalFilter = defaultState => {\n table.setGlobalFilter(defaultState ? undefined : table.initialState.globalFilter);\n };\n table.resetColumnFilters = defaultState => {\n var _table$initialState$c, _table$initialState;\n table.setColumnFilters(defaultState ? [] : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnFilters) != null ? _table$initialState$c : []);\n };\n table.getPreFilteredRowModel = () => table.getCoreRowModel();\n table.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 table._getGlobalFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, '__global__');\n table.getGlobalFacetedRowModel = () => {\n if (table.options.manualFiltering || !table._getGlobalFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getGlobalFacetedRowModel();\n };\n table._getGlobalFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, '__global__');\n table.getGlobalFacetedUniqueValues = () => {\n if (!table._getGlobalFacetedUniqueValues) {\n return new Map();\n }\n return table._getGlobalFacetedUniqueValues();\n };\n table._getGlobalFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, '__global__');\n table.getGlobalFacetedMinMaxValues = () => {\n if (!table._getGlobalFacetedMinMaxValues) {\n return;\n }\n return table._getGlobalFacetedMinMaxValues();\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 const values = leafRows.map(row => row.getValue(columnId));\n if (!isNumberArray(values)) {\n return;\n }\n if (values.length === 1) {\n return values[0];\n }\n const mid = Math.floor(values.length / 2);\n const nums = values.sort((a, b) => a - b);\n return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 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, _props$getValue;\n return (_toString = (_props$getValue = props.getValue()) == null || _props$getValue.toString == null ? void 0 : _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 column.toggleGrouping = () => {\n table.setGrouping(old => {\n // Find any existing grouping for this column\n if (old != null && old.includes(column.id)) {\n return old.filter(d => d !== column.id);\n }\n return [...(old != null ? old : []), column.id];\n });\n };\n column.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 column.getIsGrouped = () => {\n var _table$getState$group;\n return (_table$getState$group = table.getState().grouping) == null ? void 0 : _table$getState$group.includes(column.id);\n };\n column.getGroupedIndex = () => {\n var _table$getState$group2;\n return (_table$getState$group2 = table.getState().grouping) == null ? void 0 : _table$getState$group2.indexOf(column.id);\n };\n column.getToggleGroupingHandler = () => {\n const canGroup = column.getCanGroup();\n return () => {\n if (!canGroup) return;\n column.toggleGrouping();\n };\n };\n column.getAutoAggregationFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'number') {\n return aggregationFns.sum;\n }\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return aggregationFns.extent;\n }\n };\n column.getAggregationFn = () => {\n var _table$options$aggreg, _table$options$aggreg2;\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$aggreg2 = table.options.aggregationFns) == null ? void 0 : _table$options$aggreg2[column.columnDef.aggregationFn]) != null ? _table$options$aggreg : aggregationFns[column.columnDef.aggregationFn];\n };\n },\n createTable: table => {\n table.setGrouping = updater => table.options.onGroupingChange == null ? void 0 : table.options.onGroupingChange(updater);\n table.resetGrouping = defaultState => {\n var _table$initialState$g, _table$initialState;\n table.setGrouping(defaultState ? [] : (_table$initialState$g = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.grouping) != null ? _table$initialState$g : []);\n };\n table.getPreGroupedRowModel = () => table.getFilteredRowModel();\n table.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 createRow: (row, table) => {\n row.getIsGrouped = () => !!row.groupingColumnId;\n row.getGroupingValue = columnId => {\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.columnDef.getGroupingValue)) {\n return row.getValue(columnId);\n }\n row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(row.original);\n return row._groupingValuesCache[columnId];\n };\n row._groupingValuesCache = {};\n },\n createCell: (cell, column, row, table) => {\n cell.getIsGrouped = () => column.getIsGrouped() && column.id === row.groupingColumnId;\n cell.getIsPlaceholder = () => !cell.getIsGrouped() && column.getIsGrouped();\n cell.getIsAggregated = () => {\n var _row$subRows;\n return !cell.getIsGrouped() && !cell.getIsPlaceholder() && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n }\n};\nfunction orderColumns(leafColumns, grouping, groupedColumnMode) {\n if (!(grouping != null && grouping.length) || !groupedColumnMode) {\n return leafColumns;\n }\n const nonGroupingColumns = leafColumns.filter(col => !grouping.includes(col.id));\n if (groupedColumnMode === 'remove') {\n return nonGroupingColumns;\n }\n const groupingColumns = grouping.map(g => leafColumns.find(col => col.id === g)).filter(Boolean);\n return [...groupingColumns, ...nonGroupingColumns];\n}\n\n//\n\nconst Ordering = {\n getInitialState: state => {\n return {\n columnOrder: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnOrderChange: makeStateUpdater('columnOrder', table)\n };\n },\n createColumn: (column, table) => {\n column.getIndex = memo(position => [_getVisibleLeafColumns(table, position)], columns => columns.findIndex(d => d.id === column.id), getMemoOptions(table.options, 'debugColumns', 'getIndex'));\n column.getIsFirstColumn = position => {\n var _columns$;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns$ = columns[0]) == null ? void 0 : _columns$.id) === column.id;\n };\n column.getIsLastColumn = position => {\n var _columns;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns = columns[columns.length - 1]) == null ? void 0 : _columns.id) === column.id;\n };\n },\n createTable: table => {\n table.setColumnOrder = updater => table.options.onColumnOrderChange == null ? void 0 : table.options.onColumnOrderChange(updater);\n table.resetColumnOrder = defaultState => {\n var _table$initialState$c;\n table.setColumnOrder(defaultState ? [] : (_table$initialState$c = table.initialState.columnOrder) != null ? _table$initialState$c : []);\n };\n table._getOrderColumnsFn = memo(() => [table.getState().columnOrder, table.getState().grouping, table.options.groupedColumnMode], (columnOrder, grouping, groupedColumnMode) => columns => {\n // Sort grouped columns to the start of the column list\n // before the headers are built\n let orderedColumns = [];\n\n // If there is no order, return the normal columns\n if (!(columnOrder != null && columnOrder.length)) {\n orderedColumns = columns;\n } else {\n const columnOrderCopy = [...columnOrder];\n\n // If there is an order, make a copy of the columns\n const columnsCopy = [...columns];\n\n // And make a new ordered array of the columns\n\n // Loop over the columns and place them in order into the new array\n while (columnsCopy.length && columnOrderCopy.length) {\n const targetColumnId = columnOrderCopy.shift();\n const foundIndex = columnsCopy.findIndex(d => d.id === targetColumnId);\n if (foundIndex > -1) {\n orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]);\n }\n }\n\n // If there are any columns left, add them to the end\n orderedColumns = [...orderedColumns, ...columnsCopy];\n }\n return orderColumns(orderedColumns, grouping, groupedColumnMode);\n }, getMemoOptions(table.options, 'debugTable', '_getOrderColumnsFn'));\n }\n};\n\n//\n\nconst defaultPageIndex = 0;\nconst defaultPageSize = 10;\nconst getDefaultPaginationState = () => ({\n pageIndex: defaultPageIndex,\n pageSize: defaultPageSize\n});\nconst Pagination = {\n getInitialState: state => {\n return {\n ...state,\n pagination: {\n ...getDefaultPaginationState(),\n ...(state == null ? void 0 : state.pagination)\n }\n };\n },\n getDefaultOptions: table => {\n return {\n onPaginationChange: makeStateUpdater('pagination', table)\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._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 table.setPagination = updater => {\n const safeUpdater = old => {\n let newState = functionalUpdate(updater, old);\n return newState;\n };\n return table.options.onPaginationChange == null ? void 0 : table.options.onPaginationChange(safeUpdater);\n };\n table.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 table.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 table.resetPageIndex = defaultState => {\n var _table$initialState$p2, _table$initialState;\n table.setPageIndex(defaultState ? defaultPageIndex : (_table$initialState$p2 = (_table$initialState = table.initialState) == null || (_table$initialState = _table$initialState.pagination) == null ? void 0 : _table$initialState.pageIndex) != null ? _table$initialState$p2 : defaultPageIndex);\n };\n table.resetPageSize = defaultState => {\n var _table$initialState$p3, _table$initialState2;\n table.setPageSize(defaultState ? defaultPageSize : (_table$initialState$p3 = (_table$initialState2 = table.initialState) == null || (_table$initialState2 = _table$initialState2.pagination) == null ? void 0 : _table$initialState2.pageSize) != null ? _table$initialState$p3 : defaultPageSize);\n };\n table.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 table.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 table.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 }, getMemoOptions(table.options, 'debugTable', 'getPageOptions'));\n table.getCanPreviousPage = () => table.getState().pagination.pageIndex > 0;\n table.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 table.previousPage = () => {\n return table.setPageIndex(old => old - 1);\n };\n table.nextPage = () => {\n return table.setPageIndex(old => {\n return old + 1;\n });\n };\n table.getPrePaginationRowModel = () => table.getExpandedRowModel();\n table.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 table.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\nconst getDefaultColumnPinningState = () => ({\n left: [],\n right: []\n});\nconst getDefaultRowPinningState = () => ({\n top: [],\n bottom: []\n});\nconst Pinning = {\n getInitialState: state => {\n return {\n columnPinning: getDefaultColumnPinningState(),\n rowPinning: getDefaultRowPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnPinningChange: makeStateUpdater('columnPinning', table),\n onRowPinningChange: makeStateUpdater('rowPinning', table)\n };\n },\n createColumn: (column, table) => {\n column.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 == null ? void 0 : old.left) != null ? _old$left : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: [...((_old$right = old == null ? void 0 : old.right) != null ? _old$right : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds]\n };\n }\n if (position === 'left') {\n var _old$left2, _old$right2;\n return {\n left: [...((_old$left2 = old == null ? void 0 : old.left) != null ? _old$left2 : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds],\n right: ((_old$right2 = old == null ? void 0 : old.right) != null ? _old$right2 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n }\n return {\n left: ((_old$left3 = old == null ? void 0 : old.left) != null ? _old$left3 : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: ((_old$right3 = old == null ? void 0 : old.right) != null ? _old$right3 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n });\n };\n column.getCanPin = () => {\n const leafColumns = column.getLeafColumns();\n return leafColumns.some(d => {\n var _d$columnDef$enablePi, _ref, _table$options$enable;\n return ((_d$columnDef$enablePi = d.columnDef.enablePinning) != null ? _d$columnDef$enablePi : true) && ((_ref = (_table$options$enable = table.options.enableColumnPinning) != null ? _table$options$enable : table.options.enablePinning) != null ? _ref : true);\n });\n };\n column.getIsPinned = () => {\n const leafColumnIds = column.getLeafColumns().map(d => d.id);\n const {\n left,\n right\n } = table.getState().columnPinning;\n const isLeft = leafColumnIds.some(d => left == null ? void 0 : left.includes(d));\n const isRight = leafColumnIds.some(d => right == null ? void 0 : right.includes(d));\n return isLeft ? 'left' : isRight ? 'right' : false;\n };\n column.getPinnedIndex = () => {\n var _table$getState$colum, _table$getState$colum2;\n const position = column.getIsPinned();\n return position ? (_table$getState$colum = (_table$getState$colum2 = table.getState().columnPinning) == null || (_table$getState$colum2 = _table$getState$colum2[position]) == null ? void 0 : _table$getState$colum2.indexOf(column.id)) != null ? _table$getState$colum : -1 : 0;\n };\n },\n createRow: (row, table) => {\n row.pin = (position, includeLeafRows, includeParentRows) => {\n const leafRowIds = includeLeafRows ? row.getLeafRows().map(_ref2 => {\n let {\n id\n } = _ref2;\n return id;\n }) : [];\n const parentRowIds = includeParentRows ? row.getParentRows().map(_ref3 => {\n let {\n id\n } = _ref3;\n return id;\n }) : [];\n const rowIds = new Set([...parentRowIds, row.id, ...leafRowIds]);\n table.setRowPinning(old => {\n var _old$top3, _old$bottom3;\n if (position === 'bottom') {\n var _old$top, _old$bottom;\n return {\n top: ((_old$top = old == null ? void 0 : old.top) != null ? _old$top : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: [...((_old$bottom = old == null ? void 0 : old.bottom) != null ? _old$bottom : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)]\n };\n }\n if (position === 'top') {\n var _old$top2, _old$bottom2;\n return {\n top: [...((_old$top2 = old == null ? void 0 : old.top) != null ? _old$top2 : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)],\n bottom: ((_old$bottom2 = old == null ? void 0 : old.bottom) != null ? _old$bottom2 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n }\n return {\n top: ((_old$top3 = old == null ? void 0 : old.top) != null ? _old$top3 : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: ((_old$bottom3 = old == null ? void 0 : old.bottom) != null ? _old$bottom3 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n });\n };\n row.getCanPin = () => {\n var _ref4;\n const {\n enableRowPinning,\n enablePinning\n } = table.options;\n if (typeof enableRowPinning === 'function') {\n return enableRowPinning(row);\n }\n return (_ref4 = enableRowPinning != null ? enableRowPinning : enablePinning) != null ? _ref4 : true;\n };\n row.getIsPinned = () => {\n const rowIds = [row.id];\n const {\n top,\n bottom\n } = table.getState().rowPinning;\n const isTop = rowIds.some(d => top == null ? void 0 : top.includes(d));\n const isBottom = rowIds.some(d => bottom == null ? void 0 : bottom.includes(d));\n return isTop ? 'top' : isBottom ? 'bottom' : false;\n };\n row.getPinnedIndex = () => {\n var _table$_getPinnedRows, _visiblePinnedRowIds$;\n const position = row.getIsPinned();\n if (!position) return -1;\n const visiblePinnedRowIds = (_table$_getPinnedRows = table._getPinnedRows(position)) == null ? void 0 : _table$_getPinnedRows.map(_ref5 => {\n let {\n id\n } = _ref5;\n return id;\n });\n return (_visiblePinnedRowIds$ = visiblePinnedRowIds == null ? void 0 : visiblePinnedRowIds.indexOf(row.id)) != null ? _visiblePinnedRowIds$ : -1;\n };\n row.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 }, getMemoOptions(table.options, 'debugRows', 'getCenterVisibleCells'));\n row.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 }, getMemoOptions(table.options, 'debugRows', 'getLeftVisibleCells'));\n row.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 }, getMemoOptions(table.options, 'debugRows', 'getRightVisibleCells'));\n },\n createTable: table => {\n table.setColumnPinning = updater => table.options.onColumnPinningChange == null ? void 0 : table.options.onColumnPinningChange(updater);\n table.resetColumnPinning = defaultState => {\n var _table$initialState$c, _table$initialState;\n return table.setColumnPinning(defaultState ? getDefaultColumnPinningState() : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnPinning) != null ? _table$initialState$c : getDefaultColumnPinningState());\n };\n table.getIsSomeColumnsPinned = position => {\n var _pinningState$positio;\n const pinningState = table.getState().columnPinning;\n if (!position) {\n var _pinningState$left, _pinningState$right;\n return Boolean(((_pinningState$left = pinningState.left) == null ? void 0 : _pinningState$left.length) || ((_pinningState$right = pinningState.right) == null ? void 0 : _pinningState$right.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n };\n table.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 }, getMemoOptions(table.options, 'debugColumns', 'getLeftLeafColumns'));\n table.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 }, getMemoOptions(table.options, 'debugColumns', 'getRightLeafColumns'));\n table.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 }, getMemoOptions(table.options, 'debugColumns', 'getCenterLeafColumns'));\n table.setRowPinning = updater => table.options.onRowPinningChange == null ? void 0 : table.options.onRowPinningChange(updater);\n table.resetRowPinning = defaultState => {\n var _table$initialState$r, _table$initialState2;\n return table.setRowPinning(defaultState ? getDefaultRowPinningState() : (_table$initialState$r = (_table$initialState2 = table.initialState) == null ? void 0 : _table$initialState2.rowPinning) != null ? _table$initialState$r : getDefaultRowPinningState());\n };\n table.getIsSomeRowsPinned = position => {\n var _pinningState$positio2;\n const pinningState = table.getState().rowPinning;\n if (!position) {\n var _pinningState$top, _pinningState$bottom;\n return Boolean(((_pinningState$top = pinningState.top) == null ? void 0 : _pinningState$top.length) || ((_pinningState$bottom = pinningState.bottom) == null ? void 0 : _pinningState$bottom.length));\n }\n return Boolean((_pinningState$positio2 = pinningState[position]) == null ? void 0 : _pinningState$positio2.length);\n };\n table._getPinnedRows = memo(position => [table.getRowModel().rows, table.getState().rowPinning[position], position], (visibleRows, pinnedRowIds, position) => {\n var _table$options$keepPi;\n const rows = ((_table$options$keepPi = table.options.keepPinnedRows) != null ? _table$options$keepPi : true) ?\n //get all rows that are pinned even if they would not be otherwise visible\n //account for expanded parent rows, but not pagination or filtering\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => {\n const row = table.getRow(rowId, true);\n return row.getIsAllParentsExpanded() ? row : null;\n }) :\n //else get only visible rows that are pinned\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => visibleRows.find(row => row.id === rowId));\n return rows.filter(Boolean).map(d => ({\n ...d,\n position\n }));\n }, getMemoOptions(table.options, 'debugRows', '_getPinnedRows'));\n table.getTopRows = () => table._getPinnedRows('top');\n table.getBottomRows = () => table._getPinnedRows('bottom');\n table.getCenterRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.top, table.getState().rowPinning.bottom], (allRows, top, bottom) => {\n const topAndBottom = new Set([...(top != null ? top : []), ...(bottom != null ? bottom : [])]);\n return allRows.filter(d => !topAndBottom.has(d.id));\n }, getMemoOptions(table.options, 'debugRows', 'getCenterRows'));\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 createTable: table => {\n table.setRowSelection = updater => table.options.onRowSelectionChange == null ? void 0 : table.options.onRowSelectionChange(updater);\n table.resetRowSelection = defaultState => {\n var _table$initialState$r;\n return table.setRowSelection(defaultState ? {} : (_table$initialState$r = table.initialState.rowSelection) != null ? _table$initialState$r : {});\n };\n table.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 table.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, true, table);\n });\n return rowSelection;\n });\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 table.getPreSelectedRowModel = () => table.getCoreRowModel();\n table.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 }, getMemoOptions(table.options, 'debugTable', 'getSelectedRowModel'));\n table.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 }, getMemoOptions(table.options, 'debugTable', 'getFilteredSelectedRowModel'));\n table.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 }, getMemoOptions(table.options, 'debugTable', 'getGroupedSelectedRowModel'));\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 table.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 table.getIsAllPageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows.filter(row => row.getCanSelect());\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 table.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 table.getIsSomePageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows;\n return table.getIsAllPageRowsSelected() ? false : paginationFlatRows.filter(row => row.getCanSelect()).some(d => d.getIsSelected() || d.getIsSomeSelected());\n };\n table.getToggleAllRowsSelectedHandler = () => {\n return e => {\n table.toggleAllRowsSelected(e.target.checked);\n };\n };\n table.getToggleAllPageRowsSelectedHandler = () => {\n return e => {\n table.toggleAllPageRowsSelected(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row.toggleSelected = (value, opts) => {\n const isSelected = row.getIsSelected();\n table.setRowSelection(old => {\n var _opts$selectChildren;\n value = typeof value !== 'undefined' ? value : !isSelected;\n if (row.getCanSelect() && isSelected === value) {\n return old;\n }\n const selectedRowIds = {\n ...old\n };\n mutateRowIsSelected(selectedRowIds, row.id, value, (_opts$selectChildren = opts == null ? void 0 : opts.selectChildren) != null ? _opts$selectChildren : true, table);\n return selectedRowIds;\n });\n };\n row.getIsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isRowSelected(row, rowSelection);\n };\n row.getIsSomeSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'some';\n };\n row.getIsAllSubRowsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'all';\n };\n row.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 row.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 row.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 row.getToggleSelectedHandler = () => {\n const canSelect = row.getCanSelect();\n return e => {\n var _target;\n if (!canSelect) return;\n row.toggleSelected((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nconst mutateRowIsSelected = (selectedRowIds, id, value, includeChildren, table) => {\n var _row$subRows;\n const row = table.getRow(id, true);\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 (includeChildren && (_row$subRows = row.subRows) != null && _row$subRows.length && row.getCanSelectSubRows()) {\n row.subRows.forEach(row => mutateRowIsSelected(selectedRowIds, row.id, value, includeChildren, table));\n }\n};\nfunction selectRowsFn(table, rowModel) {\n const rowSelection = table.getState().rowSelection;\n const newSelectedFlatRows = [];\n const newSelectedRowsById = {};\n\n // Filters top level and nested rows\n const recurseRows = function (rows, depth) {\n return rows.map(row => {\n var _row$subRows2;\n const isSelected = isRowSelected(row, rowSelection);\n if (isSelected) {\n newSelectedFlatRows.push(row);\n newSelectedRowsById[row.id] = row;\n }\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length) {\n row = {\n ...row,\n subRows: recurseRows(row.subRows)\n };\n }\n if (isSelected) {\n return row;\n }\n }).filter(Boolean);\n };\n return {\n rows: recurseRows(rowModel.rows),\n flatRows: newSelectedFlatRows,\n rowsById: newSelectedRowsById\n };\n}\nfunction isRowSelected(row, selection) {\n var _selection$row$id;\n return (_selection$row$id = selection[row.id]) != null ? _selection$row$id : false;\n}\nfunction isSubRowSelected(row, selection, table) {\n var _row$subRows3;\n if (!((_row$subRows3 = row.subRows) != null && _row$subRows3.length)) return false;\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 (subRow.getCanSelect()) {\n if (isRowSelected(subRow, selection)) {\n someSelected = true;\n } else {\n allChildrenSelected = false;\n }\n }\n\n // Check row selection of nested subrows\n if (subRow.subRows && subRow.subRows.length) {\n const subRowChildrenSelected = isSubRowSelected(subRow, selection);\n if (subRowChildrenSelected === 'all') {\n someSelected = true;\n } else if (subRowChildrenSelected === 'some') {\n someSelected = true;\n allChildrenSelected = false;\n } else {\n allChildrenSelected = false;\n }\n }\n });\n return allChildrenSelected ? 'all' : someSelected ? 'some' : 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 sortUndefined: 1\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 column.getAutoSortingFn = () => {\n const firstRows = table.getFilteredRowModel().flatRows.slice(10);\n let isString = false;\n for (const row of firstRows) {\n const value = row == null ? void 0 : row.getValue(column.id);\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortingFns.datetime;\n }\n if (typeof value === 'string') {\n isString = true;\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortingFns.alphanumeric;\n }\n }\n }\n if (isString) {\n return sortingFns.text;\n }\n return sortingFns.basic;\n };\n column.getAutoSortDir = () => {\n const firstRow = table.getFilteredRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return 'asc';\n }\n return 'desc';\n };\n column.getSortingFn = () => {\n var _table$options$sortin, _table$options$sortin2;\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$sortin2 = table.options.sortingFns) == null ? void 0 : _table$options$sortin2[column.columnDef.sortingFn]) != null ? _table$options$sortin : sortingFns[column.columnDef.sortingFn];\n };\n column.toggleSorting = (desc, multi) => {\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // table.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n // this needs to be outside of table.setSorting to be in sync with rerender\n const nextSortingOrder = column.getNextSortingOrder();\n const hasManualValue = typeof desc !== 'undefined' && desc !== null;\n table.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old == null ? void 0 : old.find(d => d.id === column.id);\n const existingIndex = old == null ? void 0 : old.findIndex(d => d.id === column.id);\n let newSorting = [];\n\n // What should we do with this sort action?\n let sortAction;\n let nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc';\n\n // Multi-mode\n if (old != null && old.length && column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'add';\n }\n } else {\n // Normal mode\n if (old != null && old.length && existingIndex !== old.length - 1) {\n sortAction = 'replace';\n } else if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'replace';\n }\n }\n\n // Handle toggle states that will remove the sorting\n if (sortAction === 'toggle') {\n // If we are \"actually\" toggling (not a manual set value), should we remove the sorting?\n if (!hasManualValue) {\n // Is our intention to remove?\n if (!nextSortingOrder) {\n sortAction = 'remove';\n }\n }\n }\n if (sortAction === 'add') {\n 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 column.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 column.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 column.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 column.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 column.getIsSorted = () => {\n var _table$getState$sorti;\n const columnSort = (_table$getState$sorti = table.getState().sorting) == null ? void 0 : _table$getState$sorti.find(d => d.id === column.id);\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc';\n };\n column.getSortIndex = () => {\n var _table$getState$sorti2, _table$getState$sorti3;\n return (_table$getState$sorti2 = (_table$getState$sorti3 = table.getState().sorting) == null ? void 0 : _table$getState$sorti3.findIndex(d => d.id === column.id)) != null ? _table$getState$sorti2 : -1;\n };\n column.clearSorting = () => {\n //clear sorting for just 1 column\n table.setSorting(old => old != null && old.length ? old.filter(d => d.id !== column.id) : []);\n };\n column.getToggleSortingHandler = () => {\n const canSort = column.getCanSort();\n return e => {\n if (!canSort) return;\n e.persist == null || e.persist();\n column.toggleSorting == null || column.toggleSorting(undefined, column.getCanMultiSort() ? table.options.isMultiSortEvent == null ? void 0 : table.options.isMultiSortEvent(e) : false);\n };\n };\n },\n createTable: table => {\n table.setSorting = updater => table.options.onSortingChange == null ? void 0 : table.options.onSortingChange(updater);\n table.resetSorting = defaultState => {\n var _table$initialState$s, _table$initialState;\n table.setSorting(defaultState ? [] : (_table$initialState$s = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.sorting) != null ? _table$initialState$s : []);\n };\n table.getPreSortedRowModel = () => table.getGroupedRowModel();\n table.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\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 column.toggleVisibility = value => {\n if (column.getCanHide()) {\n table.setColumnVisibility(old => ({\n ...old,\n [column.id]: value != null ? value : !column.getIsVisible()\n }));\n }\n };\n column.getIsVisible = () => {\n var _table$getState$colum, _table$getState$colum2;\n return (_table$getState$colum = (_table$getState$colum2 = table.getState().columnVisibility) == null ? void 0 : _table$getState$colum2[column.id]) != null ? _table$getState$colum : true;\n };\n column.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 column.getToggleVisibilityHandler = () => {\n return e => {\n column.toggleVisibility == null || column.toggleVisibility(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row._getAllVisibleCells = memo(() => [row.getAllCells(), table.getState().columnVisibility], cells => {\n return cells.filter(cell => cell.column.getIsVisible());\n }, getMemoOptions(table.options, 'debugRows', '_getAllVisibleCells'));\n row.getVisibleCells = memo(() => [row.getLeftVisibleCells(), row.getCenterVisibleCells(), row.getRightVisibleCells()], (left, center, right) => [...left, ...center, ...right], getMemoOptions(table.options, 'debugRows', 'getVisibleCells'));\n },\n createTable: table => {\n const makeVisibleColumnsMethod = (key, getColumns) => {\n return memo(() => [getColumns(), getColumns().filter(d => d.getIsVisible()).map(d => d.id).join('_')], columns => {\n return columns.filter(d => d.getIsVisible == null ? void 0 : d.getIsVisible());\n }, getMemoOptions(table.options, 'debugColumns', key));\n };\n table.getVisibleFlatColumns = makeVisibleColumnsMethod('getVisibleFlatColumns', () => table.getAllFlatColumns());\n table.getVisibleLeafColumns = makeVisibleColumnsMethod('getVisibleLeafColumns', () => table.getAllLeafColumns());\n table.getLeftVisibleLeafColumns = makeVisibleColumnsMethod('getLeftVisibleLeafColumns', () => table.getLeftLeafColumns());\n table.getRightVisibleLeafColumns = makeVisibleColumnsMethod('getRightVisibleLeafColumns', () => table.getRightLeafColumns());\n table.getCenterVisibleLeafColumns = makeVisibleColumnsMethod('getCenterVisibleLeafColumns', () => table.getCenterLeafColumns());\n table.setColumnVisibility = updater => table.options.onColumnVisibilityChange == null ? void 0 : table.options.onColumnVisibilityChange(updater);\n table.resetColumnVisibility = defaultState => {\n var _table$initialState$c;\n table.setColumnVisibility(defaultState ? {} : (_table$initialState$c = table.initialState.columnVisibility) != null ? _table$initialState$c : {});\n };\n table.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 != null && column.getCanHide()) : value\n }), {}));\n };\n table.getIsAllColumnsVisible = () => !table.getAllLeafColumns().some(column => !(column.getIsVisible != null && column.getIsVisible()));\n table.getIsSomeColumnsVisible = () => table.getAllLeafColumns().some(column => column.getIsVisible == null ? void 0 : column.getIsVisible());\n table.getToggleAllColumnsVisibilityHandler = () => {\n return e => {\n var _target;\n table.toggleAllColumnsVisible((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nfunction _getVisibleLeafColumns(table, position) {\n return !position ? table.getVisibleLeafColumns() : position === 'center' ? table.getCenterVisibleLeafColumns() : position === 'left' ? table.getLeftVisibleLeafColumns() : table.getRightVisibleLeafColumns();\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 == null ? void 0 : feature.getDefaultOptions(table));\n }, {});\n const mergeOptions = options => {\n if (table.options.mergeOptions) {\n return table.options.mergeOptions(defaultOptions, options);\n }\n return {\n ...defaultOptions,\n ...options\n };\n };\n const coreInitialState = {};\n let initialState = {\n ...coreInitialState,\n ...((_options$initialState = options.initialState) != null ? _options$initialState : {})\n };\n table._features.forEach(feature => {\n var _feature$getInitialSt;\n initialState = (_feature$getInitialSt = feature.getInitialState == null ? void 0 : 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 == null || table.options.onStateChange(updater);\n },\n _getRowId: (row, index, parent) => {\n var _table$options$getRow;\n return (_table$options$getRow = table.options.getRowId == null ? void 0 : 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 //in next version, we should just pass in the row model as the optional 2nd arg\n getRow: (id, searchAll) => {\n let row = (searchAll ? table.getPrePaginationRowModel() : table.getRowModel()).rowsById[id];\n if (!row) {\n row = table.getCoreRowModel().rowsById[id];\n if (!row) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`getRow could not find row with ID: ${id}`);\n }\n throw new Error();\n }\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, _props$renderValue;\n return (_props$renderValue$to = (_props$renderValue = props.renderValue()) == null || _props$renderValue.toString == null ? void 0 : _props$renderValue.toString()) != null ? _props$renderValue$to : null;\n },\n ...table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultColumnDef == null ? void 0 : feature.getDefaultColumnDef());\n }, {}),\n ...defaultColumn\n };\n }, getMemoOptions(options, 'debugColumns', '_getDefaultColumnDef')),\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 }, getMemoOptions(options, 'debugColumns', 'getAllColumns')),\n getAllFlatColumns: memo(() => [table.getAllColumns()], allColumns => {\n return allColumns.flatMap(column => {\n return column.getFlatColumns();\n });\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumns')),\n _getAllFlatColumnsById: memo(() => [table.getAllFlatColumns()], flatColumns => {\n return flatColumns.reduce((acc, column) => {\n acc[column.id] = column;\n return acc;\n }, {});\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumnsById')),\n getAllLeafColumns: memo(() => [table.getAllColumns(), table._getOrderColumnsFn()], (allColumns, orderColumns) => {\n let leafColumns = allColumns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }, getMemoOptions(options, 'debugColumns', 'getAllLeafColumns')),\n getColumn: columnId => {\n const column = table._getAllFlatColumnsById()[columnId];\n if (process.env.NODE_ENV !== 'production' && !column) {\n console.error(`[Table] Column with id '${columnId}' does not exist.`);\n }\n return column;\n }\n };\n Object.assign(table, coreInstance);\n for (let index = 0; index < table._features.length; index++) {\n const feature = table._features[index];\n feature == null || feature.createTable == null || 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 }), getMemoOptions(table.options, 'debugCells', 'cell.getContext'))\n };\n table._features.forEach(feature => {\n feature.createCell == null || feature.createCell(cell, column, row, table);\n }, {});\n return cell;\n}\n\nconst createRow = (table, id, original, rowIndex, depth, subRows, parentId) => {\n let row = {\n id,\n index: rowIndex,\n original,\n depth,\n parentId,\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 != null && 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 != null && 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 getParentRow: () => row.parentId ? table.getRow(row.parentId, true) : undefined,\n getParentRows: () => {\n let parentRows = [];\n let currentRow = row;\n while (true) {\n const parentRow = currentRow.getParentRow();\n if (!parentRow) break;\n parentRows.push(parentRow);\n currentRow = parentRow;\n }\n return parentRows.reverse();\n },\n getAllCells: memo(() => [table.getAllLeafColumns()], leafColumns => {\n return leafColumns.map(column => {\n return createCell(table, row, column, column.id);\n });\n }, getMemoOptions(table.options, 'debugRows', 'getAllCells')),\n _getAllCellsByColumnId: memo(() => [row.getAllCells()], allCells => {\n return allCells.reduce((acc, cell) => {\n acc[cell.column.id] = cell;\n return acc;\n }, {});\n }, getMemoOptions(table.options, 'debugRows', 'getAllCellsByColumnId'))\n };\n for (let i = 0; i < table._features.length; i++) {\n const feature = table._features[i];\n feature == null || feature.createRow == null || 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, parentRow) {\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, parentRow), originalRows[i], i, depth, undefined, parentRow == null ? void 0 : parentRow.id);\n\n // Keep track of every row in a flat array\n rowModel.flatRows.push(row);\n // Also keep track of every row by its ID\n rowModel.rowsById[row.id] = row;\n // Push table row into parent\n rows.push(row);\n\n // Get the original subrows\n if (table.options.getSubRows) {\n var _row$originalSubRows;\n row.originalSubRows = table.options.getSubRows(originalRows[i], i);\n\n // Then recursively access them\n if ((_row$originalSubRows = row.originalSubRows) != null && _row$originalSubRows.length) {\n row.subRows = accessRows(row.originalSubRows, depth + 1, row);\n }\n }\n }\n return rows;\n };\n rowModel.rows = accessRows(data);\n return rowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getRowModel', () => table._autoResetPageIndex()));\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 var _row$subRows;\n let row = rowsToFilter[i];\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.columnFilters = row.columnFilters;\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && depth < maxDepth) {\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n if (filterRow(row) && !newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n if (filterRow(row) || newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n } else {\n row = newRow;\n if (filterRow(row)) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(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 var _row$subRows2;\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length && depth < maxDepth) {\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n }\n rows.push(row);\n newFilteredFlatRows.push(row);\n newFilteredRowsById[row.id] = row;\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\n\nfunction getFilteredRowModel() {\n return table => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter], (rowModel, columnFilters, globalFilter) => {\n if (!rowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n for (let i = 0; i < rowModel.flatRows.length; i++) {\n rowModel.flatRows[i].columnFilters = {};\n rowModel.flatRows[i].columnFiltersMeta = {};\n }\n return rowModel;\n }\n const resolvedColumnFilters = [];\n const resolvedGlobalFilters = [];\n (columnFilters != null ? columnFilters : []).forEach(d => {\n var _filterFn$resolveFilt;\n const column = table.getColumn(d.id);\n if (!column) {\n return;\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 == null ? void 0 : 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 == null ? void 0 : 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 }, getMemoOptions(table.options, 'debugTable', 'getFilteredRowModel', () => table._autoResetPageIndex()));\n}\n\nfunction getFacetedRowModel() {\n return (table, columnId) => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter, table.getFilteredRowModel()], (preRowModel, columnFilters, globalFilter) => {\n if (!preRowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n return preRowModel;\n }\n const filterableIds = [...columnFilters.map(d => d.id).filter(d => d !== columnId), globalFilter ? '__global__' : undefined].filter(Boolean);\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n return filterRows(preRowModel.rows, filterRowsImpl, table);\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedRowModel'));\n}\n\nfunction getFacetedUniqueValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n if (!facetedRowModel) return new Map();\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 }, getMemoOptions(table.options, 'debugTable', `getFacetedUniqueValues_${columnId}`));\n}\n\nfunction getFacetedMinMaxValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n var _facetedRowModel$flat;\n if (!facetedRowModel) return undefined;\n const firstValue = (_facetedRowModel$flat = facetedRowModel.flatRows[0]) == null ? void 0 : _facetedRowModel$flat.getUniqueValues(columnId);\n if (typeof firstValue === 'undefined') {\n return undefined;\n }\n let facetedMinMaxValues = [firstValue, firstValue];\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);\n for (let j = 0; j < values.length; j++) {\n const value = values[j];\n if (value < facetedMinMaxValues[0]) {\n facetedMinMaxValues[0] = value;\n } else if (value > facetedMinMaxValues[1]) {\n facetedMinMaxValues[1] = value;\n }\n }\n }\n return facetedMinMaxValues;\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedMinMaxValues'));\n}\n\nfunction getSortedRowModel() {\n return table => memo(() => [table.getState().sorting, table.getPreSortedRowModel()], (sorting, rowModel) => {\n if (!rowModel.rows.length || !(sorting != null && sorting.length)) {\n return rowModel;\n }\n const sortingState = table.getState().sorting;\n const sortedFlatRows = [];\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sortingState.filter(sort => {\n var _table$getColumn;\n return (_table$getColumn = table.getColumn(sort.id)) == null ? void 0 : _table$getColumn.getCanSort();\n });\n const columnInfoById = {};\n availableSorting.forEach(sortEntry => {\n const column = table.getColumn(sortEntry.id);\n if (!column) return;\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.map(row => ({\n ...row\n }));\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 == null ? void 0 : sortEntry.desc) != null ? _sortEntry$desc : false;\n let sortInt = 0;\n\n // All sorting ints should always return in ascending order\n if (columnInfo.sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id);\n const bValue = rowB.getValue(sortEntry.id);\n const aUndefined = aValue === undefined;\n const bUndefined = bValue === undefined;\n if (aUndefined || bUndefined) {\n sortInt = aUndefined && bUndefined ? 0 : aUndefined ? columnInfo.sortUndefined : -columnInfo.sortUndefined;\n }\n }\n if (sortInt === 0) {\n sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id);\n }\n\n // If sorting is non-zero, take care of desc and inversion\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1;\n }\n if (columnInfo.invertSorting) {\n sortInt *= -1;\n }\n return sortInt;\n }\n }\n return rowA.index - rowB.index;\n });\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n var _row$subRows;\n sortedFlatRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length) {\n row.subRows = sortData(row.subRows);\n }\n });\n return sortedData;\n };\n return {\n rows: sortData(rowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: rowModel.rowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getSortedRowModel', () => table._autoResetPageIndex()));\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, row.id);\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, undefined, parentId);\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 == null ? void 0 : 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 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 return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getGroupedRowModel', () => {\n table._queue(() => {\n table._autoResetExpanded();\n table._autoResetPageIndex();\n });\n }));\n}\nfunction groupBy(rows, columnId) {\n const groupMap = new Map();\n return rows.reduce((map, row) => {\n const resKey = `${row.getGroupingValue(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 }, getMemoOptions(table.options, 'debugTable', 'getExpandedRowModel'));\n}\nfunction expandRows(rowModel) {\n const expandedRows = [];\n const handleRow = row => {\n var _row$subRows;\n expandedRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && row.getIsExpanded()) {\n row.subRows.forEach(handleRow);\n }\n };\n rowModel.rows.forEach(handleRow);\n return {\n rows: expandedRows,\n flatRows: rowModel.flatRows,\n rowsById: rowModel.rowsById\n };\n}\n\nfunction getPaginationRowModel(opts) {\n return table => memo(() => [table.getState().pagination, table.getPrePaginationRowModel(), table.options.paginateExpandedRows ? undefined : table.getState().expanded], (pagination, rowModel) => {\n if (!rowModel.rows.length) {\n return rowModel;\n }\n const {\n pageSize,\n pageIndex\n } = pagination;\n let {\n rows,\n flatRows,\n rowsById\n } = rowModel;\n const pageStart = pageSize * pageIndex;\n const pageEnd = pageStart + pageSize;\n rows = rows.slice(pageStart, pageEnd);\n let paginatedRowModel;\n if (!table.options.paginateExpandedRows) {\n paginatedRowModel = expandRows({\n rows,\n flatRows,\n rowsById\n });\n } else {\n paginatedRowModel = {\n rows,\n flatRows,\n rowsById\n };\n }\n paginatedRowModel.flatRows = [];\n const handleRow = row => {\n paginatedRowModel.flatRows.push(row);\n if (row.subRows.length) {\n row.subRows.forEach(handleRow);\n }\n };\n paginatedRowModel.rows.forEach(handleRow);\n return paginatedRowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getPaginationRowModel'));\n}\n\nexport { ColumnSizing, Expanding, Filters, Grouping, Headers, Ordering, Pagination, Pinning, RowSelection, Sorting, Visibility, _getVisibleLeafColumns, aggregationFns, buildHeaderGroups, createCell, createColumn, createColumnHelper, createRow, createTable, defaultColumnSizing, expandRows, filterFns, flattenBy, functionalUpdate, getCoreRowModel, getExpandedRowModel, getFacetedMinMaxValues, getFacetedRowModel, getFacetedUniqueValues, getFilteredRowModel, getGroupedRowModel, getMemoOptions, getPaginationRowModel, getSortedRowModel, isFunction, isNumberArray, 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\n/**\n * If rendering headers, cells, or footers with custom markup, use flexRender instead of `cell.getValue()` or `cell.renderValue()`.\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","isNumberArray","Array","isArray","every","val","flattenBy","arr","getChildren","flat","recurse","subArr","forEach","item","push","children","length","memo","getDeps","fn","opts","result","deps","depArgs","depTime","debug","Date","now","newDeps","some","dep","index","resultTime","onChange","depEndTime","Math","round","resultEndTime","resultFpsPercentage","pad","str","num","String","console","info","max","min","getMemoOptions","tableOptions","debugLevel","_tableOptions$debugAl","debugAll","createColumn","table","columnDef","depth","parent","_ref","_resolvedColumnDef$id","resolvedColumnDef","_getDefaultColumnDef","accessorKey","accessorFn","id","replace","undefined","header","includes","originalRow","split","_result","Error","column","columns","getFlatColumns","_column$columns","flatMap","options","getLeafColumns","_getOrderColumnsFn","orderColumns","_column$columns2","leafColumns","feature","_features","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","getCenterHeaderGroups","getLeftHeaderGroups","_left$map$filter2","getRightHeaderGroups","_right$map$filter2","getFooterGroups","headerGroups","reverse","getLeftFooterGroups","getCenterFooterGroups","getRightFooterGroups","getFlatHeaders","headers","getLeftFlatHeaders","getCenterFlatHeaders","getRightFlatHeaders","getCenterLeafHeaders","flatHeaders","_header$subHeaders","getLeftLeafHeaders","_header$subHeaders2","getRightLeafHeaders","_header$subHeaders3","center","_left$0$headers","_left$","_center$0$headers","_center$","_right$0$headers","_right$","columnsToGroup","headerFamily","_headerGroups$0$heade","_headerGroups$","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","columnResizeDirection","onColumnSizingChange","onColumnSizingInfoChange","getSize","_column$columnDef$min","_column$columnDef$max","columnSize","getStart","position","_getVisibleLeafColumns","slice","getIndex","reduce","sum","getAfter","resetSize","setColumnSizing","_ref2","_","rest","getCanResize","_column$columnDef$ena","_table$options$enable","enableResizing","enableColumnResizing","getIsResizing","_header$column$getSiz","prevSiblingHeader","getResizeHandler","_contextDocument","getColumn","canResize","e","persist","isTouchStartEvent","touches","clientX","newColumnSizing","updateOffset","eventType","clientXPos","setColumnSizingInfo","_old$startOffset","_old$startSize","deltaDirection","_ref3","headerSize","onMove","onEnd","contextDocument","document","mouseEvents","moveHandler","upHandler","removeEventListener","touchEvents","cancelable","preventDefault","stopPropagation","_e$touches$","passiveIfSupported","passiveEventSupported","passive","addEventListener","resetColumnSizing","defaultState","_table$initialState$c","initialState","resetHeaderSizeInfo","_table$initialState$c2","getTotalSize","_table$getHeaderGroup","_table$getHeaderGroup2","getLeftTotalSize","_table$getLeftHeaderG","_table$getLeftHeaderG2","getCenterTotalSize","_table$getCenterHeade","_table$getCenterHeade2","getRightTotalSize","_table$getRightHeader","_table$getRightHeader2","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","_table$initialState","getCanSomeRowsExpand","getPrePaginationRowModel","flatRows","row","getCanExpand","getToggleAllRowsExpandedHandler","getIsSomeRowsExpanded","Object","values","keys","getRowModel","getIsExpanded","getExpandedDepth","rowsById","splitId","getPreExpandedRowModel","getSortedRowModel","getExpandedRowModel","_getExpandedRowModel","createRow","toggleExpanded","_expanded","exists","oldExpanded","rowId","_table$options$getIsR","getIsRowExpanded","_table$options$getRow","_row$subRows","getRowCanExpand","enableExpanding","subRows","getIsAllParentsExpanded","isFullyExpanded","currentRow","parentId","getRow","getToggleExpandedHandler","canExpand","includesString","filterValue","_row$getValue","search","toLowerCase","getValue","toString","autoRemove","testFalsey","includesStringSensitive","_row$getValue2","equalsString","_row$getValue3","arrIncludes","_row$getValue4","arrIncludesAll","_row$getValue5","arrIncludesSome","_row$getValue6","equals","weakEquals","inNumberRange","rowValue","resolveFilterValue","unsafeMin","unsafeMax","parsedMin","parseFloat","parsedMax","isNaN","Infinity","temp","filterFns","Filters","filterFn","columnFilters","globalFilter","onColumnFiltersChange","onGlobalFilterChange","filterFromLeafRows","maxLeafRowFilterDepth","globalFilterFn","getColumnCanGlobalFilter","_table$getCoreRowMode","value","getCoreRowModel","_getAllCellsByColumnId","getAutoFilterFn","firstRow","getFilterFn","_table$options$filter","_table$options$filter2","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","_table$getState$colum2","_table$getState$colum3","findIndex","setFilterValue","setColumnFilters","previousfilter","newFilter","_old$filter","shouldAutoRemoveFilter","newFilterObj","_old$map","_getFacetedRowModel","getFacetedRowModel","getPreFilteredRowModel","_getFacetedUniqueValues","getFacetedUniqueValues","Map","_getFacetedMinMaxValues","getFacetedMinMaxValues","columnFiltersMeta","getGlobalAutoFilterFn","getGlobalFilterFn","_table$options$filter3","_table$options$filter4","getAllLeafColumns","_functionalUpdate","setGlobalFilter","resetGlobalFilter","resetColumnFilters","getFilteredRowModel","_getFilteredRowModel","manualFiltering","_getGlobalFacetedRowModel","getGlobalFacetedRowModel","_getGlobalFacetedUniqueValues","getGlobalFacetedUniqueValues","_getGlobalFacetedMinMaxValues","getGlobalFacetedMinMaxValues","aggregationFns","_leafRows","childRows","next","nextValue","extent","mean","leafRows","count","median","mid","floor","nums","sort","a","b","unique","from","Set","uniqueCount","_columnId","Grouping","aggregatedCell","props","_toString","_props$getValue","aggregationFn","grouping","onGroupingChange","groupedColumnMode","toggleGrouping","setGrouping","getCanGroup","enableGrouping","getIsGrouped","_table$getState$group","getGroupedIndex","_table$getState$group2","indexOf","getToggleGroupingHandler","canGroup","getAutoAggregationFn","prototype","call","getAggregationFn","_table$options$aggreg","_table$options$aggreg2","resetGrouping","_table$initialState$g","getPreGroupedRowModel","getGroupedRowModel","_getGroupedRowModel","manualGrouping","groupingColumnId","getGroupingValue","_groupingValuesCache","hasOwnProperty","original","createCell","cell","getIsPlaceholder","getIsAggregated","nonGroupingColumns","col","g","Ordering","columnOrder","onColumnOrderChange","getIsFirstColumn","_columns$","getIsLastColumn","_columns","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","_table$initialState2","setPageSize","topRowIndex","setPageCount","_table$options$pageCo","newPageCount","getPageOptions","getPageCount","pageOptions","fill","i","getCanPreviousPage","getCanNextPage","previousPage","nextPage","getPaginationRowModel","_getPaginationRowModel","_table$options$pageCo2","ceil","rows","Pinning","rowPinning","top","bottom","onColumnPinningChange","onRowPinningChange","pin","columnIds","setColumnPinning","_old$left3","_old$right3","_old$left","_old$right","_old$left2","_old$right2","getCanPin","_d$columnDef$enablePi","enablePinning","enableColumnPinning","getIsPinned","leafColumnIds","isLeft","isRight","getPinnedIndex","includeLeafRows","includeParentRows","leafRowIds","getLeafRows","parentRowIds","getParentRows","rowIds","setRowPinning","_old$top3","_old$bottom3","_old$top","_old$bottom","_old$top2","_old$bottom2","has","_ref4","enableRowPinning","isTop","isBottom","_table$_getPinnedRows","_visiblePinnedRowIds$","visiblePinnedRowIds","_getPinnedRows","_ref5","getCenterVisibleCells","_getAllVisibleCells","allCells","leftAndRight","getLeftVisibleCells","getRightVisibleCells","resetColumnPinning","getIsSomeColumnsPinned","_pinningState$positio","pinningState","_pinningState$left","_pinningState$right","getLeftLeafColumns","getRightLeafColumns","getCenterLeafColumns","resetRowPinning","_table$initialState$r","getIsSomeRowsPinned","_pinningState$positio2","_pinningState$top","_pinningState$bottom","visibleRows","pinnedRowIds","_table$options$keepPi","keepPinnedRows","getTopRows","getBottomRows","getCenterRows","allRows","topAndBottom","RowSelection","rowSelection","onRowSelectionChange","enableRowSelection","enableMultiRowSelection","enableSubRowSelection","setRowSelection","resetRowSelection","toggleAllRowsSelected","getIsAllRowsSelected","preGroupedFlatRows","getCanSelect","toggleAllPageRowsSelected","resolvedValue","getIsAllPageRowsSelected","mutateRowIsSelected","getPreSelectedRowModel","getSelectedRowModel","rowModel","selectRowsFn","getFilteredSelectedRowModel","getGroupedSelectedRowModel","isAllRowsSelected","paginationFlatRows","isAllPageRowsSelected","getIsSomeRowsSelected","_table$getState$rowSe","totalSelected","getIsSomePageRowsSelected","getIsSelected","getIsSomeSelected","getToggleAllRowsSelectedHandler","target","checked","getToggleAllPageRowsSelectedHandler","toggleSelected","isSelected","_opts$selectChildren","selectedRowIds","selectChildren","isRowSelected","isSubRowSelected","getIsAllSubRowsSelected","getCanSelectSubRows","getCanMultiSelect","getToggleSelectedHandler","canSelect","_target","includeChildren","newSelectedFlatRows","newSelectedRowsById","recurseRows","_row$subRows2","selection","_selection$row$id","_row$subRows3","allChildrenSelected","someSelected","subRow","subRowChildrenSelected","reSplitAlphaNumeric","compareBasic","compareAlphanumeric","aStr","bStr","aa","bb","an","parseInt","bn","combo","sortingFns","alphanumeric","rowA","rowB","alphanumericCaseSensitive","text","textCaseSensitive","datetime","basic","Sorting","sorting","sortingFn","sortUndefined","onSortingChange","isMultiSortEvent","shiftKey","getAutoSortingFn","firstRows","isString","getAutoSortDir","getSortingFn","_table$options$sortin","_table$options$sortin2","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","_table$getState$sorti","columnSort","getSortIndex","_table$getState$sorti2","_table$getState$sorti3","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","getLeftVisibleLeafColumns","getRightVisibleLeafColumns","getCenterVisibleLeafColumns","resetColumnVisibility","toggleAllColumnsVisible","_value","getIsAllColumnsVisible","obj","getIsSomeColumnsVisible","getToggleAllColumnsVisibilityHandler","features","_options$initialState","debugTable","defaultOptions","assign","_feature$getInitialSt","queuedTimeout","coreInstance","cb","Promise","resolve","then","catch","error","setTimeout","reset","setOptions","newOptions","mergeOptions","onStateChange","_getRowId","getRowId","_getCoreRowModel","searchAll","defaultColumn","_defaultColumn","_props$renderValue$to","_props$renderValue","renderValue","_getColumnDefs","columnDefs","recurseColumns","groupingColumnDef","_getAllFlatColumnsById","flatColumns","acc","_cell$getValue","renderFallbackValue","rowIndex","_valuesCache","_uniqueValuesCache","getUniqueValues","getParentRow","parentRows","parentRow","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","createElement","data","accessRows","originalRows","_row$originalSubRows","getSubRows","originalSubRows","_table$getColumn","facetedRowModel","_facetedRowModel$flat","firstValue","facetedMinMaxValues","j","preRowModel","filterableIds","facetedUniqueValues","_facetedUniqueValues$","set","get","resolvedColumnFilters","resolvedGlobalFilters","_filterFn$resolveFilt","globallyFilterableColumns","currentColumnFilter","currentGlobalFilter","_globalFilterFn$resol","filterMeta","__global__","existingGrouping","groupedFlatRows","groupedRowsById","groupUpRecursively","rowGroupsMap","groupMap","resKey","previous","groupBy","aggregatedGroupedRows","entries","groupingValue","groupedRows","_groupedRows$0$getVal","aggregateFn","pageStart","pageEnd","paginatedRowModel","sortingState","sortedFlatRows","availableSorting","columnInfoById","sortEntry","invertSorting","sortData","sortedData","_sortEntry$desc","columnInfo","isDesc","sortInt","aUndefined","bUndefined","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 isNumberArray(d) {\n return Array.isArray(d) && d.every(val => typeof val === 'number');\n}\nfunction flattenBy(arr, getChildren) {\n const flat = [];\n const recurse = subArr => {\n subArr.forEach(item => {\n flat.push(item);\n const children = getChildren(item);\n if (children != null && children.length) {\n recurse(children);\n }\n });\n };\n recurse(arr);\n return flat;\n}\nfunction memo(getDeps, fn, opts) {\n let deps = [];\n let result;\n return depArgs => {\n let depTime;\n if (opts.key && opts.debug) depTime = Date.now();\n const newDeps = getDeps(depArgs);\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n if (!depsChanged) {\n return result;\n }\n deps = newDeps;\n let resultTime;\n if (opts.key && opts.debug) resultTime = Date.now();\n result = fn(...newDeps);\n opts == null || opts.onChange == null || opts.onChange(result);\n if (opts.key && opts.debug) {\n if (opts != null && opts.debug()) {\n const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;\n const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;\n const resultFpsPercentage = resultEndTime / 16;\n const pad = (str, num) => {\n str = String(str);\n while (str.length < num) {\n str = ' ' + str;\n }\n return str;\n };\n console.info(`%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`, `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(0, Math.min(120 - 120 * resultFpsPercentage, 120))}deg 100% 31%);`, opts == null ? void 0 : opts.key);\n }\n }\n return result;\n };\n}\nfunction getMemoOptions(tableOptions, debugLevel, key, onChange) {\n return {\n debug: () => {\n var _tableOptions$debugAl;\n return (_tableOptions$debugAl = tableOptions == null ? void 0 : tableOptions.debugAll) != null ? _tableOptions$debugAl : tableOptions[debugLevel];\n },\n key: process.env.NODE_ENV === 'development' && key,\n onChange\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 var _result;\n result = (_result = result) == null ? void 0 : _result[key];\n if (process.env.NODE_ENV !== 'production' && result === undefined) {\n console.warn(`\"${key}\" in deeply nested key \"${accessorKey}\" returned undefined.`);\n }\n }\n return result;\n };\n } else {\n accessorFn = originalRow => originalRow[resolvedColumnDef.accessorKey];\n }\n }\n if (!id) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(resolvedColumnDef.accessorFn ? `Columns require an id when using an accessorFn` : `Columns require an id when using a non-string header`);\n }\n throw new Error();\n }\n let column = {\n id: `${String(id)}`,\n accessorFn,\n parent: parent,\n depth,\n columnDef: resolvedColumnDef,\n columns: [],\n getFlatColumns: memo(() => [true], () => {\n var _column$columns;\n return [column, ...((_column$columns = column.columns) == null ? void 0 : _column$columns.flatMap(d => d.getFlatColumns()))];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getFlatColumns')),\n getLeafColumns: memo(() => [table._getOrderColumnsFn()], orderColumns => {\n var _column$columns2;\n if ((_column$columns2 = column.columns) != null && _column$columns2.length) {\n let leafColumns = column.columns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }\n return [column];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getLeafColumns'))\n };\n for (const feature of table._features) {\n feature.createColumn == null || feature.createColumn(column, table);\n }\n\n // Yes, we have to convert table to uknown, because we know more than the compiler here.\n return column;\n}\n\nconst debug = 'debugHeaders';\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 feature.createHeader == null || feature.createHeader(header, table);\n });\n return header;\n}\nconst Headers = {\n createTable: table => {\n // Header Groups\n\n table.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 == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter : [];\n const rightColumns = (_right$map$filter = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter : [];\n const centerColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n const headerGroups = buildHeaderGroups(allColumns, [...leftColumns, ...centerColumns, ...rightColumns], table);\n return headerGroups;\n }, getMemoOptions(table.options, debug, 'getHeaderGroups'));\n table.getCenterHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n leafColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n return buildHeaderGroups(allColumns, leafColumns, table, 'center');\n }, getMemoOptions(table.options, debug, 'getCenterHeaderGroups'));\n table.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 == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'left');\n }, getMemoOptions(table.options, debug, 'getLeftHeaderGroups'));\n table.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 == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'right');\n }, getMemoOptions(table.options, debug, 'getRightHeaderGroups'));\n\n // Footer Groups\n\n table.getFooterGroups = memo(() => [table.getHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getFooterGroups'));\n table.getLeftFooterGroups = memo(() => [table.getLeftHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getLeftFooterGroups'));\n table.getCenterFooterGroups = memo(() => [table.getCenterHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getCenterFooterGroups'));\n table.getRightFooterGroups = memo(() => [table.getRightHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getRightFooterGroups'));\n\n // Flat Headers\n\n table.getFlatHeaders = memo(() => [table.getHeaderGroups()], headerGroups => {\n return headerGroups.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getFlatHeaders'));\n table.getLeftFlatHeaders = memo(() => [table.getLeftHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeftFlatHeaders'));\n table.getCenterFlatHeaders = memo(() => [table.getCenterHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getCenterFlatHeaders'));\n table.getRightFlatHeaders = memo(() => [table.getRightHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getRightFlatHeaders'));\n\n // Leaf Headers\n\n table.getCenterLeafHeaders = memo(() => [table.getCenterFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders;\n return !((_header$subHeaders = header.subHeaders) != null && _header$subHeaders.length);\n });\n }, getMemoOptions(table.options, debug, 'getCenterLeafHeaders'));\n table.getLeftLeafHeaders = memo(() => [table.getLeftFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders2;\n return !((_header$subHeaders2 = header.subHeaders) != null && _header$subHeaders2.length);\n });\n }, getMemoOptions(table.options, debug, 'getLeftLeafHeaders'));\n table.getRightLeafHeaders = memo(() => [table.getRightFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders3;\n return !((_header$subHeaders3 = header.subHeaders) != null && _header$subHeaders3.length);\n });\n }, getMemoOptions(table.options, debug, 'getRightLeafHeaders'));\n table.getLeafHeaders = memo(() => [table.getLeftHeaderGroups(), table.getCenterHeaderGroups(), table.getRightHeaderGroups()], (left, center, right) => {\n var _left$0$headers, _left$, _center$0$headers, _center$, _right$0$headers, _right$;\n return [...((_left$0$headers = (_left$ = left[0]) == null ? void 0 : _left$.headers) != null ? _left$0$headers : []), ...((_center$0$headers = (_center$ = center[0]) == null ? void 0 : _center$.headers) != null ? _center$0$headers : []), ...((_right$0$headers = (_right$ = right[0]) == null ? void 0 : _right$.headers) != null ? _right$0$headers : [])].map(header => {\n return header.getLeafHeaders();\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeafHeaders'));\n }\n};\nfunction buildHeaderGroups(allColumns, columnsToGroup, table, headerFamily) {\n var _headerGroups$0$heade, _headerGroups$;\n // Find the max depth of the columns:\n // build the leaf column row\n // build each buffer row going up\n // placeholder for non-existent level\n // real column for existing level\n\n let maxDepth = 0;\n const findMaxDepth = function (columns, depth) {\n if (depth === void 0) {\n depth = 1;\n }\n maxDepth = Math.max(maxDepth, depth);\n columns.filter(column => column.getIsVisible()).forEach(column => {\n var _column$columns;\n if ((_column$columns = column.columns) != null && _column$columns.length) {\n findMaxDepth(column.columns, depth + 1);\n }\n }, 0);\n };\n findMaxDepth(allColumns);\n let headerGroups = [];\n const createHeaderGroup = (headersToGroup, depth) => {\n // The header group we are creating\n const headerGroup = {\n depth,\n id: [headerFamily, `${depth}`].filter(Boolean).join('_'),\n headers: []\n };\n\n // The parent columns we're going to scan next\n const pendingParentHeaders = [];\n\n // Scan each column for parents\n headersToGroup.forEach(headerToGroup => {\n // What is the latest (last) parent column?\n\n const latestPendingParentHeader = [...pendingParentHeaders].reverse()[0];\n const isLeafHeader = headerToGroup.column.depth === headerGroup.depth;\n let column;\n let isPlaceholder = false;\n if (isLeafHeader && headerToGroup.column.parent) {\n // The parent header is new\n column = headerToGroup.column.parent;\n } else {\n // The parent header is repeated\n column = headerToGroup.column;\n isPlaceholder = true;\n }\n if (latestPendingParentHeader && (latestPendingParentHeader == null ? void 0 : latestPendingParentHeader.column) === column) {\n // This column is repeated. Add it as a sub header to the next batch\n latestPendingParentHeader.subHeaders.push(headerToGroup);\n } else {\n // This is a new header. Let's create it\n const header = createHeader(table, column, {\n id: [headerFamily, depth, column.id, headerToGroup == null ? void 0 : headerToGroup.id].filter(Boolean).join('_'),\n isPlaceholder,\n placeholderId: isPlaceholder ? `${pendingParentHeaders.filter(d => d.column === column).length}` : undefined,\n depth,\n index: pendingParentHeaders.length\n });\n\n // Add the headerToGroup as a subHeader of the new header\n header.subHeaders.push(headerToGroup);\n // Add the new header to the pendingParentHeaders to get grouped\n // in the next batch\n pendingParentHeaders.push(header);\n }\n headerGroup.headers.push(headerToGroup);\n headerToGroup.headerGroup = headerGroup;\n });\n headerGroups.push(headerGroup);\n if (depth > 0) {\n createHeaderGroup(pendingParentHeaders, depth - 1);\n }\n };\n const bottomHeaders = columnsToGroup.map((column, index) => createHeader(table, column, {\n depth: maxDepth,\n index\n }));\n createHeaderGroup(bottomHeaders, maxDepth - 1);\n headerGroups.reverse();\n\n // headerGroups = headerGroups.filter(headerGroup => {\n // return !headerGroup.headers.every(header => header.isPlaceholder)\n // })\n\n const recurseHeadersForSpans = headers => {\n const filteredHeaders = headers.filter(header => header.column.getIsVisible());\n return filteredHeaders.map(header => {\n let colSpan = 0;\n let rowSpan = 0;\n let childRowSpans = [0];\n if (header.subHeaders && header.subHeaders.length) {\n childRowSpans = [];\n recurseHeadersForSpans(header.subHeaders).forEach(_ref => {\n let {\n colSpan: childColSpan,\n rowSpan: childRowSpan\n } = _ref;\n colSpan += childColSpan;\n childRowSpans.push(childRowSpan);\n });\n } else {\n colSpan = 1;\n }\n const minChildRowSpan = Math.min(...childRowSpans);\n rowSpan = rowSpan + minChildRowSpan;\n header.colSpan = colSpan;\n header.rowSpan = rowSpan;\n return {\n colSpan,\n rowSpan\n };\n });\n };\n recurseHeadersForSpans((_headerGroups$0$heade = (_headerGroups$ = headerGroups[0]) == null ? void 0 : _headerGroups$.headers) != null ? _headerGroups$0$heade : []);\n return headerGroups;\n}\n\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 columnResizeDirection: 'ltr',\n onColumnSizingChange: makeStateUpdater('columnSizing', table),\n onColumnSizingInfoChange: makeStateUpdater('columnSizingInfo', table)\n };\n },\n createColumn: (column, table) => {\n column.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 column.getStart = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(0, column.getIndex(position)).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getStart'));\n column.getAfter = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(column.getIndex(position) + 1).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getAfter'));\n column.resetSize = () => {\n table.setColumnSizing(_ref2 => {\n let {\n [column.id]: _,\n ...rest\n } = _ref2;\n return rest;\n });\n };\n column.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 column.getIsResizing = () => {\n return table.getState().columnSizingInfo.isResizingColumn === column.id;\n };\n },\n createHeader: (header, table) => {\n header.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 header.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 header.getResizeHandler = _contextDocument => {\n const column = table.getColumn(header.column.id);\n const canResize = column == null ? void 0 : column.getCanResize();\n return e => {\n if (!column || !canResize) {\n return;\n }\n e.persist == null || 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 deltaDirection = table.options.columnResizeDirection === 'rtl' ? -1 : 1;\n const deltaOffset = (clientXPos - ((_old$startOffset = old == null ? void 0 : old.startOffset) != null ? _old$startOffset : 0)) * deltaDirection;\n const deltaPercentage = Math.max(deltaOffset / ((_old$startSize = old == null ? void 0 : 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 contextDocument = _contextDocument || typeof document !== 'undefined' ? document : null;\n const mouseEvents = {\n moveHandler: e => onMove(e.clientX),\n upHandler: e => {\n contextDocument == null || contextDocument.removeEventListener('mousemove', mouseEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('mouseup', mouseEvents.upHandler);\n onEnd(e.clientX);\n }\n };\n const touchEvents = {\n moveHandler: e => {\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onMove(e.touches[0].clientX);\n return false;\n },\n upHandler: e => {\n var _e$touches$;\n contextDocument == null || contextDocument.removeEventListener('touchmove', touchEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('touchend', touchEvents.upHandler);\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onEnd((_e$touches$ = e.touches[0]) == null ? void 0 : _e$touches$.clientX);\n }\n };\n const passiveIfSupported = passiveEventSupported() ? {\n passive: false\n } : false;\n if (isTouchStartEvent(e)) {\n contextDocument == null || contextDocument.addEventListener('touchmove', touchEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.addEventListener('touchend', touchEvents.upHandler, passiveIfSupported);\n } else {\n contextDocument == null || contextDocument.addEventListener('mousemove', mouseEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.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 createTable: table => {\n table.setColumnSizing = updater => table.options.onColumnSizingChange == null ? void 0 : table.options.onColumnSizingChange(updater);\n table.setColumnSizingInfo = updater => table.options.onColumnSizingInfoChange == null ? void 0 : table.options.onColumnSizingInfoChange(updater);\n table.resetColumnSizing = defaultState => {\n var _table$initialState$c;\n table.setColumnSizing(defaultState ? {} : (_table$initialState$c = table.initialState.columnSizing) != null ? _table$initialState$c : {});\n };\n table.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 table.getTotalSize = () => {\n var _table$getHeaderGroup, _table$getHeaderGroup2;\n return (_table$getHeaderGroup = (_table$getHeaderGroup2 = table.getHeaderGroups()[0]) == null ? void 0 : _table$getHeaderGroup2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getHeaderGroup : 0;\n };\n table.getLeftTotalSize = () => {\n var _table$getLeftHeaderG, _table$getLeftHeaderG2;\n return (_table$getLeftHeaderG = (_table$getLeftHeaderG2 = table.getLeftHeaderGroups()[0]) == null ? void 0 : _table$getLeftHeaderG2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getLeftHeaderG : 0;\n };\n table.getCenterTotalSize = () => {\n var _table$getCenterHeade, _table$getCenterHeade2;\n return (_table$getCenterHeade = (_table$getCenterHeade2 = table.getCenterHeaderGroups()[0]) == null ? void 0 : _table$getCenterHeade2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getCenterHeade : 0;\n };\n table.getRightTotalSize = () => {\n var _table$getRightHeader, _table$getRightHeader2;\n return (_table$getRightHeader = (_table$getRightHeader2 = table.getRightHeaderGroups()[0]) == null ? void 0 : _table$getRightHeader2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getRightHeader : 0;\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 table._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 table.setExpanded = updater => table.options.onExpandedChange == null ? void 0 : table.options.onExpandedChange(updater);\n table.toggleAllRowsExpanded = expanded => {\n if (expanded != null ? expanded : !table.getIsAllRowsExpanded()) {\n table.setExpanded(true);\n } else {\n table.setExpanded({});\n }\n };\n table.resetExpanded = defaultState => {\n var _table$initialState$e, _table$initialState;\n table.setExpanded(defaultState ? {} : (_table$initialState$e = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.expanded) != null ? _table$initialState$e : {});\n };\n table.getCanSomeRowsExpand = () => {\n return table.getPrePaginationRowModel().flatRows.some(row => row.getCanExpand());\n };\n table.getToggleAllRowsExpandedHandler = () => {\n return e => {\n e.persist == null || e.persist();\n table.toggleAllRowsExpanded();\n };\n };\n table.getIsSomeRowsExpanded = () => {\n const expanded = table.getState().expanded;\n return expanded === true || Object.values(expanded).some(Boolean);\n };\n table.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 table.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 table.getPreExpandedRowModel = () => table.getSortedRowModel();\n table.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 createRow: (row, table) => {\n row.toggleExpanded = expanded => {\n table.setExpanded(old => {\n var _expanded;\n const exists = old === true ? true : !!(old != null && old[row.id]);\n let oldExpanded = {};\n if (old === true) {\n Object.keys(table.getRowModel().rowsById).forEach(rowId => {\n oldExpanded[rowId] = true;\n });\n } else {\n oldExpanded = old;\n }\n expanded = (_expanded = 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 row.getIsExpanded = () => {\n var _table$options$getIsR;\n const expanded = table.getState().expanded;\n return !!((_table$options$getIsR = table.options.getIsRowExpanded == null ? void 0 : table.options.getIsRowExpanded(row)) != null ? _table$options$getIsR : expanded === true || (expanded == null ? void 0 : expanded[row.id]));\n };\n row.getCanExpand = () => {\n var _table$options$getRow, _table$options$enable, _row$subRows;\n return (_table$options$getRow = table.options.getRowCanExpand == null ? void 0 : table.options.getRowCanExpand(row)) != null ? _table$options$getRow : ((_table$options$enable = table.options.enableExpanding) != null ? _table$options$enable : true) && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n row.getIsAllParentsExpanded = () => {\n let isFullyExpanded = true;\n let currentRow = row;\n while (isFullyExpanded && currentRow.parentId) {\n currentRow = table.getRow(currentRow.parentId, true);\n isFullyExpanded = currentRow.getIsExpanded();\n }\n return isFullyExpanded;\n };\n row.getToggleExpandedHandler = () => {\n const canExpand = row.getCanExpand();\n return () => {\n if (!canExpand) return;\n row.toggleExpanded();\n };\n };\n }\n};\n\nconst includesString = (row, columnId, filterValue) => {\n var _row$getValue;\n const search = filterValue.toLowerCase();\n return Boolean((_row$getValue = row.getValue(columnId)) == null || (_row$getValue = _row$getValue.toString()) == null || (_row$getValue = _row$getValue.toLowerCase()) == null ? void 0 : _row$getValue.includes(search));\n};\nincludesString.autoRemove = val => testFalsey(val);\nconst includesStringSensitive = (row, columnId, filterValue) => {\n var _row$getValue2;\n return Boolean((_row$getValue2 = row.getValue(columnId)) == null || (_row$getValue2 = _row$getValue2.toString()) == null ? void 0 : _row$getValue2.includes(filterValue));\n};\nincludesStringSensitive.autoRemove = val => testFalsey(val);\nconst equalsString = (row, columnId, filterValue) => {\n var _row$getValue3;\n return ((_row$getValue3 = row.getValue(columnId)) == null || (_row$getValue3 = _row$getValue3.toString()) == null ? void 0 : _row$getValue3.toLowerCase()) === (filterValue == null ? void 0 : filterValue.toLowerCase());\n};\nequalsString.autoRemove = val => testFalsey(val);\nconst arrIncludes = (row, columnId, filterValue) => {\n var _row$getValue4;\n return (_row$getValue4 = row.getValue(columnId)) == null ? void 0 : _row$getValue4.includes(filterValue);\n};\narrIncludes.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst arrIncludesAll = (row, columnId, filterValue) => {\n return !filterValue.some(val => {\n var _row$getValue5;\n return !((_row$getValue5 = row.getValue(columnId)) != null && _row$getValue5.includes(val));\n });\n};\narrIncludesAll.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst arrIncludesSome = (row, columnId, filterValue) => {\n return filterValue.some(val => {\n var _row$getValue6;\n return (_row$getValue6 = row.getValue(columnId)) == null ? void 0 : _row$getValue6.includes(val);\n });\n};\narrIncludesSome.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst equals = (row, columnId, filterValue) => {\n return row.getValue(columnId) === filterValue;\n};\nequals.autoRemove = val => testFalsey(val);\nconst weakEquals = (row, columnId, filterValue) => {\n return row.getValue(columnId) == filterValue;\n};\nweakEquals.autoRemove = val => testFalsey(val);\nconst inNumberRange = (row, columnId, filterValue) => {\n let [min, max] = filterValue;\n const rowValue = row.getValue(columnId);\n return rowValue >= min && rowValue <= max;\n};\ninNumberRange.resolveFilterValue = val => {\n let [unsafeMin, unsafeMax] = val;\n let parsedMin = typeof unsafeMin !== 'number' ? parseFloat(unsafeMin) : unsafeMin;\n let parsedMax = typeof unsafeMax !== 'number' ? parseFloat(unsafeMax) : unsafeMax;\n let min = unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin;\n let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax;\n if (min > max) {\n const temp = min;\n min = max;\n max = temp;\n }\n return [min, max];\n};\ninNumberRange.autoRemove = val => testFalsey(val) || testFalsey(val[0]) && testFalsey(val[1]);\n\n// Export\n\nconst filterFns = {\n includesString,\n includesStringSensitive,\n equalsString,\n arrIncludes,\n arrIncludesAll,\n arrIncludesSome,\n equals,\n weakEquals,\n inNumberRange\n};\n// Utils\n\nfunction testFalsey(val) {\n return val === undefined || val === null || val === '';\n}\n\n//\n\nconst Filters = {\n getDefaultColumnDef: () => {\n return {\n filterFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n columnFilters: [],\n globalFilter: undefined,\n // filtersProgress: 1,\n // facetProgress: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnFiltersChange: makeStateUpdater('columnFilters', table),\n onGlobalFilterChange: makeStateUpdater('globalFilter', table),\n filterFromLeafRows: false,\n maxLeafRowFilterDepth: 100,\n globalFilterFn: 'auto',\n getColumnCanGlobalFilter: column => {\n var _table$getCoreRowMode;\n const value = (_table$getCoreRowMode = table.getCoreRowModel().flatRows[0]) == null || (_table$getCoreRowMode = _table$getCoreRowMode._getAllCellsByColumnId()[column.id]) == null ? void 0 : _table$getCoreRowMode.getValue();\n return typeof value === 'string' || typeof value === 'number';\n }\n };\n },\n createColumn: (column, table) => {\n column.getAutoFilterFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return filterFns.includesString;\n }\n if (typeof value === 'number') {\n return filterFns.inNumberRange;\n }\n if (typeof value === 'boolean') {\n return filterFns.equals;\n }\n if (value !== null && typeof value === 'object') {\n return filterFns.equals;\n }\n if (Array.isArray(value)) {\n return filterFns.arrIncludes;\n }\n return filterFns.weakEquals;\n };\n column.getFilterFn = () => {\n var _table$options$filter, _table$options$filter2;\n return isFunction(column.columnDef.filterFn) ? column.columnDef.filterFn : column.columnDef.filterFn === 'auto' ? column.getAutoFilterFn() : // @ts-ignore\n (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[column.columnDef.filterFn]) != null ? _table$options$filter : filterFns[column.columnDef.filterFn];\n };\n column.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 column.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 == null ? void 0 : table.options.getColumnCanGlobalFilter(column)) != null ? _table$options$getCol : true) && !!column.accessorFn;\n };\n column.getIsFiltered = () => column.getFilterIndex() > -1;\n column.getFilterValue = () => {\n var _table$getState$colum;\n return (_table$getState$colum = table.getState().columnFilters) == null || (_table$getState$colum = _table$getState$colum.find(d => d.id === column.id)) == null ? void 0 : _table$getState$colum.value;\n };\n column.getFilterIndex = () => {\n var _table$getState$colum2, _table$getState$colum3;\n return (_table$getState$colum2 = (_table$getState$colum3 = table.getState().columnFilters) == null ? void 0 : _table$getState$colum3.findIndex(d => d.id === column.id)) != null ? _table$getState$colum2 : -1;\n };\n column.setFilterValue = value => {\n table.setColumnFilters(old => {\n const filterFn = column.getFilterFn();\n const previousfilter = old == null ? void 0 : old.find(d => d.id === column.id);\n const newFilter = functionalUpdate(value, previousfilter ? previousfilter.value : undefined);\n\n //\n if (shouldAutoRemoveFilter(filterFn, newFilter, column)) {\n var _old$filter;\n return (_old$filter = old == null ? void 0 : 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 == null ? void 0 : old.map(d => {\n if (d.id === column.id) {\n return newFilterObj;\n }\n return d;\n })) != null ? _old$map : [];\n }\n if (old != null && old.length) {\n return [...old, newFilterObj];\n }\n return [newFilterObj];\n });\n };\n column._getFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, column.id);\n column.getFacetedRowModel = () => {\n if (!column._getFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return column._getFacetedRowModel();\n };\n column._getFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, column.id);\n column.getFacetedUniqueValues = () => {\n if (!column._getFacetedUniqueValues) {\n return new Map();\n }\n return column._getFacetedUniqueValues();\n };\n column._getFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, column.id);\n column.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 createRow: (row, table) => {\n row.columnFilters = {};\n row.columnFiltersMeta = {};\n },\n createTable: table => {\n table.getGlobalAutoFilterFn = () => {\n return filterFns.includesString;\n };\n table.getGlobalFilterFn = () => {\n var _table$options$filter3, _table$options$filter4;\n const {\n globalFilterFn: globalFilterFn\n } = table.options;\n return isFunction(globalFilterFn) ? globalFilterFn : globalFilterFn === 'auto' ? table.getGlobalAutoFilterFn() : // @ts-ignore\n (_table$options$filter3 = (_table$options$filter4 = table.options.filterFns) == null ? void 0 : _table$options$filter4[globalFilterFn]) != null ? _table$options$filter3 : filterFns[globalFilterFn];\n };\n table.setColumnFilters = updater => {\n const leafColumns = table.getAllLeafColumns();\n const updateFn = old => {\n var _functionalUpdate;\n return (_functionalUpdate = functionalUpdate(updater, old)) == null ? void 0 : _functionalUpdate.filter(filter => {\n const column = leafColumns.find(d => d.id === filter.id);\n if (column) {\n const filterFn = column.getFilterFn();\n if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {\n return false;\n }\n }\n return true;\n });\n };\n table.options.onColumnFiltersChange == null || table.options.onColumnFiltersChange(updateFn);\n };\n table.setGlobalFilter = updater => {\n table.options.onGlobalFilterChange == null || table.options.onGlobalFilterChange(updater);\n };\n table.resetGlobalFilter = defaultState => {\n table.setGlobalFilter(defaultState ? undefined : table.initialState.globalFilter);\n };\n table.resetColumnFilters = defaultState => {\n var _table$initialState$c, _table$initialState;\n table.setColumnFilters(defaultState ? [] : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnFilters) != null ? _table$initialState$c : []);\n };\n table.getPreFilteredRowModel = () => table.getCoreRowModel();\n table.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 table._getGlobalFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, '__global__');\n table.getGlobalFacetedRowModel = () => {\n if (table.options.manualFiltering || !table._getGlobalFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getGlobalFacetedRowModel();\n };\n table._getGlobalFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, '__global__');\n table.getGlobalFacetedUniqueValues = () => {\n if (!table._getGlobalFacetedUniqueValues) {\n return new Map();\n }\n return table._getGlobalFacetedUniqueValues();\n };\n table._getGlobalFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, '__global__');\n table.getGlobalFacetedMinMaxValues = () => {\n if (!table._getGlobalFacetedMinMaxValues) {\n return;\n }\n return table._getGlobalFacetedMinMaxValues();\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 const values = leafRows.map(row => row.getValue(columnId));\n if (!isNumberArray(values)) {\n return;\n }\n if (values.length === 1) {\n return values[0];\n }\n const mid = Math.floor(values.length / 2);\n const nums = values.sort((a, b) => a - b);\n return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 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, _props$getValue;\n return (_toString = (_props$getValue = props.getValue()) == null || _props$getValue.toString == null ? void 0 : _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 column.toggleGrouping = () => {\n table.setGrouping(old => {\n // Find any existing grouping for this column\n if (old != null && old.includes(column.id)) {\n return old.filter(d => d !== column.id);\n }\n return [...(old != null ? old : []), column.id];\n });\n };\n column.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 column.getIsGrouped = () => {\n var _table$getState$group;\n return (_table$getState$group = table.getState().grouping) == null ? void 0 : _table$getState$group.includes(column.id);\n };\n column.getGroupedIndex = () => {\n var _table$getState$group2;\n return (_table$getState$group2 = table.getState().grouping) == null ? void 0 : _table$getState$group2.indexOf(column.id);\n };\n column.getToggleGroupingHandler = () => {\n const canGroup = column.getCanGroup();\n return () => {\n if (!canGroup) return;\n column.toggleGrouping();\n };\n };\n column.getAutoAggregationFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'number') {\n return aggregationFns.sum;\n }\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return aggregationFns.extent;\n }\n };\n column.getAggregationFn = () => {\n var _table$options$aggreg, _table$options$aggreg2;\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$aggreg2 = table.options.aggregationFns) == null ? void 0 : _table$options$aggreg2[column.columnDef.aggregationFn]) != null ? _table$options$aggreg : aggregationFns[column.columnDef.aggregationFn];\n };\n },\n createTable: table => {\n table.setGrouping = updater => table.options.onGroupingChange == null ? void 0 : table.options.onGroupingChange(updater);\n table.resetGrouping = defaultState => {\n var _table$initialState$g, _table$initialState;\n table.setGrouping(defaultState ? [] : (_table$initialState$g = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.grouping) != null ? _table$initialState$g : []);\n };\n table.getPreGroupedRowModel = () => table.getFilteredRowModel();\n table.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 createRow: (row, table) => {\n row.getIsGrouped = () => !!row.groupingColumnId;\n row.getGroupingValue = columnId => {\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.columnDef.getGroupingValue)) {\n return row.getValue(columnId);\n }\n row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(row.original);\n return row._groupingValuesCache[columnId];\n };\n row._groupingValuesCache = {};\n },\n createCell: (cell, column, row, table) => {\n cell.getIsGrouped = () => column.getIsGrouped() && column.id === row.groupingColumnId;\n cell.getIsPlaceholder = () => !cell.getIsGrouped() && column.getIsGrouped();\n cell.getIsAggregated = () => {\n var _row$subRows;\n return !cell.getIsGrouped() && !cell.getIsPlaceholder() && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n }\n};\nfunction orderColumns(leafColumns, grouping, groupedColumnMode) {\n if (!(grouping != null && grouping.length) || !groupedColumnMode) {\n return leafColumns;\n }\n const nonGroupingColumns = leafColumns.filter(col => !grouping.includes(col.id));\n if (groupedColumnMode === 'remove') {\n return nonGroupingColumns;\n }\n const groupingColumns = grouping.map(g => leafColumns.find(col => col.id === g)).filter(Boolean);\n return [...groupingColumns, ...nonGroupingColumns];\n}\n\n//\n\nconst Ordering = {\n getInitialState: state => {\n return {\n columnOrder: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnOrderChange: makeStateUpdater('columnOrder', table)\n };\n },\n createColumn: (column, table) => {\n column.getIndex = memo(position => [_getVisibleLeafColumns(table, position)], columns => columns.findIndex(d => d.id === column.id), getMemoOptions(table.options, 'debugColumns', 'getIndex'));\n column.getIsFirstColumn = position => {\n var _columns$;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns$ = columns[0]) == null ? void 0 : _columns$.id) === column.id;\n };\n column.getIsLastColumn = position => {\n var _columns;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns = columns[columns.length - 1]) == null ? void 0 : _columns.id) === column.id;\n };\n },\n createTable: table => {\n table.setColumnOrder = updater => table.options.onColumnOrderChange == null ? void 0 : table.options.onColumnOrderChange(updater);\n table.resetColumnOrder = defaultState => {\n var _table$initialState$c;\n table.setColumnOrder(defaultState ? [] : (_table$initialState$c = table.initialState.columnOrder) != null ? _table$initialState$c : []);\n };\n table._getOrderColumnsFn = memo(() => [table.getState().columnOrder, table.getState().grouping, table.options.groupedColumnMode], (columnOrder, grouping, groupedColumnMode) => columns => {\n // Sort grouped columns to the start of the column list\n // before the headers are built\n let orderedColumns = [];\n\n // If there is no order, return the normal columns\n if (!(columnOrder != null && columnOrder.length)) {\n orderedColumns = columns;\n } else {\n const columnOrderCopy = [...columnOrder];\n\n // If there is an order, make a copy of the columns\n const columnsCopy = [...columns];\n\n // And make a new ordered array of the columns\n\n // Loop over the columns and place them in order into the new array\n while (columnsCopy.length && columnOrderCopy.length) {\n const targetColumnId = columnOrderCopy.shift();\n const foundIndex = columnsCopy.findIndex(d => d.id === targetColumnId);\n if (foundIndex > -1) {\n orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]);\n }\n }\n\n // If there are any columns left, add them to the end\n orderedColumns = [...orderedColumns, ...columnsCopy];\n }\n return orderColumns(orderedColumns, grouping, groupedColumnMode);\n }, getMemoOptions(table.options, 'debugTable', '_getOrderColumnsFn'));\n }\n};\n\n//\n\nconst defaultPageIndex = 0;\nconst defaultPageSize = 10;\nconst getDefaultPaginationState = () => ({\n pageIndex: defaultPageIndex,\n pageSize: defaultPageSize\n});\nconst Pagination = {\n getInitialState: state => {\n return {\n ...state,\n pagination: {\n ...getDefaultPaginationState(),\n ...(state == null ? void 0 : state.pagination)\n }\n };\n },\n getDefaultOptions: table => {\n return {\n onPaginationChange: makeStateUpdater('pagination', table)\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._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 table.setPagination = updater => {\n const safeUpdater = old => {\n let newState = functionalUpdate(updater, old);\n return newState;\n };\n return table.options.onPaginationChange == null ? void 0 : table.options.onPaginationChange(safeUpdater);\n };\n table.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 table.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 table.resetPageIndex = defaultState => {\n var _table$initialState$p2, _table$initialState;\n table.setPageIndex(defaultState ? defaultPageIndex : (_table$initialState$p2 = (_table$initialState = table.initialState) == null || (_table$initialState = _table$initialState.pagination) == null ? void 0 : _table$initialState.pageIndex) != null ? _table$initialState$p2 : defaultPageIndex);\n };\n table.resetPageSize = defaultState => {\n var _table$initialState$p3, _table$initialState2;\n table.setPageSize(defaultState ? defaultPageSize : (_table$initialState$p3 = (_table$initialState2 = table.initialState) == null || (_table$initialState2 = _table$initialState2.pagination) == null ? void 0 : _table$initialState2.pageSize) != null ? _table$initialState$p3 : defaultPageSize);\n };\n table.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 //deprecated\n table.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 table.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 }, getMemoOptions(table.options, 'debugTable', 'getPageOptions'));\n table.getCanPreviousPage = () => table.getState().pagination.pageIndex > 0;\n table.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 table.previousPage = () => {\n return table.setPageIndex(old => old - 1);\n };\n table.nextPage = () => {\n return table.setPageIndex(old => {\n return old + 1;\n });\n };\n table.firstPage = () => {\n return table.setPageIndex(0);\n };\n table.lastPage = () => {\n return table.setPageIndex(table.getPageCount() - 1);\n };\n table.getPrePaginationRowModel = () => table.getExpandedRowModel();\n table.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 table.getPageCount = () => {\n var _table$options$pageCo2;\n return (_table$options$pageCo2 = table.options.pageCount) != null ? _table$options$pageCo2 : Math.ceil(table.getRowCount() / table.getState().pagination.pageSize);\n };\n table.getRowCount = () => {\n var _table$options$rowCou;\n return (_table$options$rowCou = table.options.rowCount) != null ? _table$options$rowCou : table.getPrePaginationRowModel().rows.length;\n };\n }\n};\n\n//\n\nconst getDefaultColumnPinningState = () => ({\n left: [],\n right: []\n});\nconst getDefaultRowPinningState = () => ({\n top: [],\n bottom: []\n});\nconst Pinning = {\n getInitialState: state => {\n return {\n columnPinning: getDefaultColumnPinningState(),\n rowPinning: getDefaultRowPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnPinningChange: makeStateUpdater('columnPinning', table),\n onRowPinningChange: makeStateUpdater('rowPinning', table)\n };\n },\n createColumn: (column, table) => {\n column.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 == null ? void 0 : old.left) != null ? _old$left : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: [...((_old$right = old == null ? void 0 : old.right) != null ? _old$right : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds]\n };\n }\n if (position === 'left') {\n var _old$left2, _old$right2;\n return {\n left: [...((_old$left2 = old == null ? void 0 : old.left) != null ? _old$left2 : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds],\n right: ((_old$right2 = old == null ? void 0 : old.right) != null ? _old$right2 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n }\n return {\n left: ((_old$left3 = old == null ? void 0 : old.left) != null ? _old$left3 : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: ((_old$right3 = old == null ? void 0 : old.right) != null ? _old$right3 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n });\n };\n column.getCanPin = () => {\n const leafColumns = column.getLeafColumns();\n return leafColumns.some(d => {\n var _d$columnDef$enablePi, _ref, _table$options$enable;\n return ((_d$columnDef$enablePi = d.columnDef.enablePinning) != null ? _d$columnDef$enablePi : true) && ((_ref = (_table$options$enable = table.options.enableColumnPinning) != null ? _table$options$enable : table.options.enablePinning) != null ? _ref : true);\n });\n };\n column.getIsPinned = () => {\n const leafColumnIds = column.getLeafColumns().map(d => d.id);\n const {\n left,\n right\n } = table.getState().columnPinning;\n const isLeft = leafColumnIds.some(d => left == null ? void 0 : left.includes(d));\n const isRight = leafColumnIds.some(d => right == null ? void 0 : right.includes(d));\n return isLeft ? 'left' : isRight ? 'right' : false;\n };\n column.getPinnedIndex = () => {\n var _table$getState$colum, _table$getState$colum2;\n const position = column.getIsPinned();\n return position ? (_table$getState$colum = (_table$getState$colum2 = table.getState().columnPinning) == null || (_table$getState$colum2 = _table$getState$colum2[position]) == null ? void 0 : _table$getState$colum2.indexOf(column.id)) != null ? _table$getState$colum : -1 : 0;\n };\n },\n createRow: (row, table) => {\n row.pin = (position, includeLeafRows, includeParentRows) => {\n const leafRowIds = includeLeafRows ? row.getLeafRows().map(_ref2 => {\n let {\n id\n } = _ref2;\n return id;\n }) : [];\n const parentRowIds = includeParentRows ? row.getParentRows().map(_ref3 => {\n let {\n id\n } = _ref3;\n return id;\n }) : [];\n const rowIds = new Set([...parentRowIds, row.id, ...leafRowIds]);\n table.setRowPinning(old => {\n var _old$top3, _old$bottom3;\n if (position === 'bottom') {\n var _old$top, _old$bottom;\n return {\n top: ((_old$top = old == null ? void 0 : old.top) != null ? _old$top : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: [...((_old$bottom = old == null ? void 0 : old.bottom) != null ? _old$bottom : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)]\n };\n }\n if (position === 'top') {\n var _old$top2, _old$bottom2;\n return {\n top: [...((_old$top2 = old == null ? void 0 : old.top) != null ? _old$top2 : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)],\n bottom: ((_old$bottom2 = old == null ? void 0 : old.bottom) != null ? _old$bottom2 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n }\n return {\n top: ((_old$top3 = old == null ? void 0 : old.top) != null ? _old$top3 : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: ((_old$bottom3 = old == null ? void 0 : old.bottom) != null ? _old$bottom3 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n });\n };\n row.getCanPin = () => {\n var _ref4;\n const {\n enableRowPinning,\n enablePinning\n } = table.options;\n if (typeof enableRowPinning === 'function') {\n return enableRowPinning(row);\n }\n return (_ref4 = enableRowPinning != null ? enableRowPinning : enablePinning) != null ? _ref4 : true;\n };\n row.getIsPinned = () => {\n const rowIds = [row.id];\n const {\n top,\n bottom\n } = table.getState().rowPinning;\n const isTop = rowIds.some(d => top == null ? void 0 : top.includes(d));\n const isBottom = rowIds.some(d => bottom == null ? void 0 : bottom.includes(d));\n return isTop ? 'top' : isBottom ? 'bottom' : false;\n };\n row.getPinnedIndex = () => {\n var _table$_getPinnedRows, _visiblePinnedRowIds$;\n const position = row.getIsPinned();\n if (!position) return -1;\n const visiblePinnedRowIds = (_table$_getPinnedRows = table._getPinnedRows(position)) == null ? void 0 : _table$_getPinnedRows.map(_ref5 => {\n let {\n id\n } = _ref5;\n return id;\n });\n return (_visiblePinnedRowIds$ = visiblePinnedRowIds == null ? void 0 : visiblePinnedRowIds.indexOf(row.id)) != null ? _visiblePinnedRowIds$ : -1;\n };\n row.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 }, getMemoOptions(table.options, 'debugRows', 'getCenterVisibleCells'));\n row.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 }, getMemoOptions(table.options, 'debugRows', 'getLeftVisibleCells'));\n row.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 }, getMemoOptions(table.options, 'debugRows', 'getRightVisibleCells'));\n },\n createTable: table => {\n table.setColumnPinning = updater => table.options.onColumnPinningChange == null ? void 0 : table.options.onColumnPinningChange(updater);\n table.resetColumnPinning = defaultState => {\n var _table$initialState$c, _table$initialState;\n return table.setColumnPinning(defaultState ? getDefaultColumnPinningState() : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnPinning) != null ? _table$initialState$c : getDefaultColumnPinningState());\n };\n table.getIsSomeColumnsPinned = position => {\n var _pinningState$positio;\n const pinningState = table.getState().columnPinning;\n if (!position) {\n var _pinningState$left, _pinningState$right;\n return Boolean(((_pinningState$left = pinningState.left) == null ? void 0 : _pinningState$left.length) || ((_pinningState$right = pinningState.right) == null ? void 0 : _pinningState$right.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n };\n table.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 }, getMemoOptions(table.options, 'debugColumns', 'getLeftLeafColumns'));\n table.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 }, getMemoOptions(table.options, 'debugColumns', 'getRightLeafColumns'));\n table.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 }, getMemoOptions(table.options, 'debugColumns', 'getCenterLeafColumns'));\n table.setRowPinning = updater => table.options.onRowPinningChange == null ? void 0 : table.options.onRowPinningChange(updater);\n table.resetRowPinning = defaultState => {\n var _table$initialState$r, _table$initialState2;\n return table.setRowPinning(defaultState ? getDefaultRowPinningState() : (_table$initialState$r = (_table$initialState2 = table.initialState) == null ? void 0 : _table$initialState2.rowPinning) != null ? _table$initialState$r : getDefaultRowPinningState());\n };\n table.getIsSomeRowsPinned = position => {\n var _pinningState$positio2;\n const pinningState = table.getState().rowPinning;\n if (!position) {\n var _pinningState$top, _pinningState$bottom;\n return Boolean(((_pinningState$top = pinningState.top) == null ? void 0 : _pinningState$top.length) || ((_pinningState$bottom = pinningState.bottom) == null ? void 0 : _pinningState$bottom.length));\n }\n return Boolean((_pinningState$positio2 = pinningState[position]) == null ? void 0 : _pinningState$positio2.length);\n };\n table._getPinnedRows = memo(position => [table.getRowModel().rows, table.getState().rowPinning[position], position], (visibleRows, pinnedRowIds, position) => {\n var _table$options$keepPi;\n const rows = ((_table$options$keepPi = table.options.keepPinnedRows) != null ? _table$options$keepPi : true) ?\n //get all rows that are pinned even if they would not be otherwise visible\n //account for expanded parent rows, but not pagination or filtering\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => {\n const row = table.getRow(rowId, true);\n return row.getIsAllParentsExpanded() ? row : null;\n }) :\n //else get only visible rows that are pinned\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => visibleRows.find(row => row.id === rowId));\n return rows.filter(Boolean).map(d => ({\n ...d,\n position\n }));\n }, getMemoOptions(table.options, 'debugRows', '_getPinnedRows'));\n table.getTopRows = () => table._getPinnedRows('top');\n table.getBottomRows = () => table._getPinnedRows('bottom');\n table.getCenterRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.top, table.getState().rowPinning.bottom], (allRows, top, bottom) => {\n const topAndBottom = new Set([...(top != null ? top : []), ...(bottom != null ? bottom : [])]);\n return allRows.filter(d => !topAndBottom.has(d.id));\n }, getMemoOptions(table.options, 'debugRows', 'getCenterRows'));\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 createTable: table => {\n table.setRowSelection = updater => table.options.onRowSelectionChange == null ? void 0 : table.options.onRowSelectionChange(updater);\n table.resetRowSelection = defaultState => {\n var _table$initialState$r;\n return table.setRowSelection(defaultState ? {} : (_table$initialState$r = table.initialState.rowSelection) != null ? _table$initialState$r : {});\n };\n table.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 table.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, true, table);\n });\n return rowSelection;\n });\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 table.getPreSelectedRowModel = () => table.getCoreRowModel();\n table.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 }, getMemoOptions(table.options, 'debugTable', 'getSelectedRowModel'));\n table.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 }, getMemoOptions(table.options, 'debugTable', 'getFilteredSelectedRowModel'));\n table.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 }, getMemoOptions(table.options, 'debugTable', 'getGroupedSelectedRowModel'));\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 table.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 table.getIsAllPageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows.filter(row => row.getCanSelect());\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 table.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 table.getIsSomePageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows;\n return table.getIsAllPageRowsSelected() ? false : paginationFlatRows.filter(row => row.getCanSelect()).some(d => d.getIsSelected() || d.getIsSomeSelected());\n };\n table.getToggleAllRowsSelectedHandler = () => {\n return e => {\n table.toggleAllRowsSelected(e.target.checked);\n };\n };\n table.getToggleAllPageRowsSelectedHandler = () => {\n return e => {\n table.toggleAllPageRowsSelected(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row.toggleSelected = (value, opts) => {\n const isSelected = row.getIsSelected();\n table.setRowSelection(old => {\n var _opts$selectChildren;\n value = typeof value !== 'undefined' ? value : !isSelected;\n if (row.getCanSelect() && isSelected === value) {\n return old;\n }\n const selectedRowIds = {\n ...old\n };\n mutateRowIsSelected(selectedRowIds, row.id, value, (_opts$selectChildren = opts == null ? void 0 : opts.selectChildren) != null ? _opts$selectChildren : true, table);\n return selectedRowIds;\n });\n };\n row.getIsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isRowSelected(row, rowSelection);\n };\n row.getIsSomeSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'some';\n };\n row.getIsAllSubRowsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'all';\n };\n row.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 row.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 row.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 row.getToggleSelectedHandler = () => {\n const canSelect = row.getCanSelect();\n return e => {\n var _target;\n if (!canSelect) return;\n row.toggleSelected((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nconst mutateRowIsSelected = (selectedRowIds, id, value, includeChildren, table) => {\n var _row$subRows;\n const row = table.getRow(id, true);\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 (includeChildren && (_row$subRows = row.subRows) != null && _row$subRows.length && row.getCanSelectSubRows()) {\n row.subRows.forEach(row => mutateRowIsSelected(selectedRowIds, row.id, value, includeChildren, table));\n }\n};\nfunction selectRowsFn(table, rowModel) {\n const rowSelection = table.getState().rowSelection;\n const newSelectedFlatRows = [];\n const newSelectedRowsById = {};\n\n // Filters top level and nested rows\n const recurseRows = function (rows, depth) {\n return rows.map(row => {\n var _row$subRows2;\n const isSelected = isRowSelected(row, rowSelection);\n if (isSelected) {\n newSelectedFlatRows.push(row);\n newSelectedRowsById[row.id] = row;\n }\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length) {\n row = {\n ...row,\n subRows: recurseRows(row.subRows)\n };\n }\n if (isSelected) {\n return row;\n }\n }).filter(Boolean);\n };\n return {\n rows: recurseRows(rowModel.rows),\n flatRows: newSelectedFlatRows,\n rowsById: newSelectedRowsById\n };\n}\nfunction isRowSelected(row, selection) {\n var _selection$row$id;\n return (_selection$row$id = selection[row.id]) != null ? _selection$row$id : false;\n}\nfunction isSubRowSelected(row, selection, table) {\n var _row$subRows3;\n if (!((_row$subRows3 = row.subRows) != null && _row$subRows3.length)) return false;\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 (subRow.getCanSelect()) {\n if (isRowSelected(subRow, selection)) {\n someSelected = true;\n } else {\n allChildrenSelected = false;\n }\n }\n\n // Check row selection of nested subrows\n if (subRow.subRows && subRow.subRows.length) {\n const subRowChildrenSelected = isSubRowSelected(subRow, selection);\n if (subRowChildrenSelected === 'all') {\n someSelected = true;\n } else if (subRowChildrenSelected === 'some') {\n someSelected = true;\n allChildrenSelected = false;\n } else {\n allChildrenSelected = false;\n }\n }\n });\n return allChildrenSelected ? 'all' : someSelected ? 'some' : 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 sortUndefined: 1\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 column.getAutoSortingFn = () => {\n const firstRows = table.getFilteredRowModel().flatRows.slice(10);\n let isString = false;\n for (const row of firstRows) {\n const value = row == null ? void 0 : row.getValue(column.id);\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortingFns.datetime;\n }\n if (typeof value === 'string') {\n isString = true;\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortingFns.alphanumeric;\n }\n }\n }\n if (isString) {\n return sortingFns.text;\n }\n return sortingFns.basic;\n };\n column.getAutoSortDir = () => {\n const firstRow = table.getFilteredRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return 'asc';\n }\n return 'desc';\n };\n column.getSortingFn = () => {\n var _table$options$sortin, _table$options$sortin2;\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$sortin2 = table.options.sortingFns) == null ? void 0 : _table$options$sortin2[column.columnDef.sortingFn]) != null ? _table$options$sortin : sortingFns[column.columnDef.sortingFn];\n };\n column.toggleSorting = (desc, multi) => {\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // table.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n // this needs to be outside of table.setSorting to be in sync with rerender\n const nextSortingOrder = column.getNextSortingOrder();\n const hasManualValue = typeof desc !== 'undefined' && desc !== null;\n table.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old == null ? void 0 : old.find(d => d.id === column.id);\n const existingIndex = old == null ? void 0 : old.findIndex(d => d.id === column.id);\n let newSorting = [];\n\n // What should we do with this sort action?\n let sortAction;\n let nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc';\n\n // Multi-mode\n if (old != null && old.length && column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'add';\n }\n } else {\n // Normal mode\n if (old != null && old.length && existingIndex !== old.length - 1) {\n sortAction = 'replace';\n } else if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'replace';\n }\n }\n\n // Handle toggle states that will remove the sorting\n if (sortAction === 'toggle') {\n // If we are \"actually\" toggling (not a manual set value), should we remove the sorting?\n if (!hasManualValue) {\n // Is our intention to remove?\n if (!nextSortingOrder) {\n sortAction = 'remove';\n }\n }\n }\n if (sortAction === 'add') {\n 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 column.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 column.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 column.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 column.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 column.getIsSorted = () => {\n var _table$getState$sorti;\n const columnSort = (_table$getState$sorti = table.getState().sorting) == null ? void 0 : _table$getState$sorti.find(d => d.id === column.id);\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc';\n };\n column.getSortIndex = () => {\n var _table$getState$sorti2, _table$getState$sorti3;\n return (_table$getState$sorti2 = (_table$getState$sorti3 = table.getState().sorting) == null ? void 0 : _table$getState$sorti3.findIndex(d => d.id === column.id)) != null ? _table$getState$sorti2 : -1;\n };\n column.clearSorting = () => {\n //clear sorting for just 1 column\n table.setSorting(old => old != null && old.length ? old.filter(d => d.id !== column.id) : []);\n };\n column.getToggleSortingHandler = () => {\n const canSort = column.getCanSort();\n return e => {\n if (!canSort) return;\n e.persist == null || e.persist();\n column.toggleSorting == null || column.toggleSorting(undefined, column.getCanMultiSort() ? table.options.isMultiSortEvent == null ? void 0 : table.options.isMultiSortEvent(e) : false);\n };\n };\n },\n createTable: table => {\n table.setSorting = updater => table.options.onSortingChange == null ? void 0 : table.options.onSortingChange(updater);\n table.resetSorting = defaultState => {\n var _table$initialState$s, _table$initialState;\n table.setSorting(defaultState ? [] : (_table$initialState$s = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.sorting) != null ? _table$initialState$s : []);\n };\n table.getPreSortedRowModel = () => table.getGroupedRowModel();\n table.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\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 column.toggleVisibility = value => {\n if (column.getCanHide()) {\n table.setColumnVisibility(old => ({\n ...old,\n [column.id]: value != null ? value : !column.getIsVisible()\n }));\n }\n };\n column.getIsVisible = () => {\n var _ref, _table$getState$colum;\n const childColumns = column.columns;\n return (_ref = childColumns.length ? childColumns.some(c => c.getIsVisible()) : (_table$getState$colum = table.getState().columnVisibility) == null ? void 0 : _table$getState$colum[column.id]) != null ? _ref : true;\n };\n column.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 column.getToggleVisibilityHandler = () => {\n return e => {\n column.toggleVisibility == null || column.toggleVisibility(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row._getAllVisibleCells = memo(() => [row.getAllCells(), table.getState().columnVisibility], cells => {\n return cells.filter(cell => cell.column.getIsVisible());\n }, getMemoOptions(table.options, 'debugRows', '_getAllVisibleCells'));\n row.getVisibleCells = memo(() => [row.getLeftVisibleCells(), row.getCenterVisibleCells(), row.getRightVisibleCells()], (left, center, right) => [...left, ...center, ...right], getMemoOptions(table.options, 'debugRows', 'getVisibleCells'));\n },\n createTable: table => {\n const makeVisibleColumnsMethod = (key, getColumns) => {\n return memo(() => [getColumns(), getColumns().filter(d => d.getIsVisible()).map(d => d.id).join('_')], columns => {\n return columns.filter(d => d.getIsVisible == null ? void 0 : d.getIsVisible());\n }, getMemoOptions(table.options, 'debugColumns', key));\n };\n table.getVisibleFlatColumns = makeVisibleColumnsMethod('getVisibleFlatColumns', () => table.getAllFlatColumns());\n table.getVisibleLeafColumns = makeVisibleColumnsMethod('getVisibleLeafColumns', () => table.getAllLeafColumns());\n table.getLeftVisibleLeafColumns = makeVisibleColumnsMethod('getLeftVisibleLeafColumns', () => table.getLeftLeafColumns());\n table.getRightVisibleLeafColumns = makeVisibleColumnsMethod('getRightVisibleLeafColumns', () => table.getRightLeafColumns());\n table.getCenterVisibleLeafColumns = makeVisibleColumnsMethod('getCenterVisibleLeafColumns', () => table.getCenterLeafColumns());\n table.setColumnVisibility = updater => table.options.onColumnVisibilityChange == null ? void 0 : table.options.onColumnVisibilityChange(updater);\n table.resetColumnVisibility = defaultState => {\n var _table$initialState$c;\n table.setColumnVisibility(defaultState ? {} : (_table$initialState$c = table.initialState.columnVisibility) != null ? _table$initialState$c : {});\n };\n table.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 != null && column.getCanHide()) : value\n }), {}));\n };\n table.getIsAllColumnsVisible = () => !table.getAllLeafColumns().some(column => !(column.getIsVisible != null && column.getIsVisible()));\n table.getIsSomeColumnsVisible = () => table.getAllLeafColumns().some(column => column.getIsVisible == null ? void 0 : column.getIsVisible());\n table.getToggleAllColumnsVisibilityHandler = () => {\n return e => {\n var _target;\n table.toggleAllColumnsVisible((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nfunction _getVisibleLeafColumns(table, position) {\n return !position ? table.getVisibleLeafColumns() : position === 'center' ? table.getCenterVisibleLeafColumns() : position === 'left' ? table.getLeftVisibleLeafColumns() : table.getRightVisibleLeafColumns();\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 == null ? void 0 : feature.getDefaultOptions(table));\n }, {});\n const mergeOptions = options => {\n if (table.options.mergeOptions) {\n return table.options.mergeOptions(defaultOptions, options);\n }\n return {\n ...defaultOptions,\n ...options\n };\n };\n const coreInitialState = {};\n let initialState = {\n ...coreInitialState,\n ...((_options$initialState = options.initialState) != null ? _options$initialState : {})\n };\n table._features.forEach(feature => {\n var _feature$getInitialSt;\n initialState = (_feature$getInitialSt = feature.getInitialState == null ? void 0 : 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 == null || table.options.onStateChange(updater);\n },\n _getRowId: (row, index, parent) => {\n var _table$options$getRow;\n return (_table$options$getRow = table.options.getRowId == null ? void 0 : 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 //in next version, we should just pass in the row model as the optional 2nd arg\n getRow: (id, searchAll) => {\n let row = (searchAll ? table.getPrePaginationRowModel() : table.getRowModel()).rowsById[id];\n if (!row) {\n row = table.getCoreRowModel().rowsById[id];\n if (!row) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`getRow could not find row with ID: ${id}`);\n }\n throw new Error();\n }\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, _props$renderValue;\n return (_props$renderValue$to = (_props$renderValue = props.renderValue()) == null || _props$renderValue.toString == null ? void 0 : _props$renderValue.toString()) != null ? _props$renderValue$to : null;\n },\n ...table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultColumnDef == null ? void 0 : feature.getDefaultColumnDef());\n }, {}),\n ...defaultColumn\n };\n }, getMemoOptions(options, 'debugColumns', '_getDefaultColumnDef')),\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 }, getMemoOptions(options, 'debugColumns', 'getAllColumns')),\n getAllFlatColumns: memo(() => [table.getAllColumns()], allColumns => {\n return allColumns.flatMap(column => {\n return column.getFlatColumns();\n });\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumns')),\n _getAllFlatColumnsById: memo(() => [table.getAllFlatColumns()], flatColumns => {\n return flatColumns.reduce((acc, column) => {\n acc[column.id] = column;\n return acc;\n }, {});\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumnsById')),\n getAllLeafColumns: memo(() => [table.getAllColumns(), table._getOrderColumnsFn()], (allColumns, orderColumns) => {\n let leafColumns = allColumns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }, getMemoOptions(options, 'debugColumns', 'getAllLeafColumns')),\n getColumn: columnId => {\n const column = table._getAllFlatColumnsById()[columnId];\n if (process.env.NODE_ENV !== 'production' && !column) {\n console.error(`[Table] Column with id '${columnId}' does not exist.`);\n }\n return column;\n }\n };\n Object.assign(table, coreInstance);\n for (let index = 0; index < table._features.length; index++) {\n const feature = table._features[index];\n feature == null || feature.createTable == null || 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 }), getMemoOptions(table.options, 'debugCells', 'cell.getContext'))\n };\n table._features.forEach(feature => {\n feature.createCell == null || feature.createCell(cell, column, row, table);\n }, {});\n return cell;\n}\n\nconst createRow = (table, id, original, rowIndex, depth, subRows, parentId) => {\n let row = {\n id,\n index: rowIndex,\n original,\n depth,\n parentId,\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 != null && 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 != null && 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 getParentRow: () => row.parentId ? table.getRow(row.parentId, true) : undefined,\n getParentRows: () => {\n let parentRows = [];\n let currentRow = row;\n while (true) {\n const parentRow = currentRow.getParentRow();\n if (!parentRow) break;\n parentRows.push(parentRow);\n currentRow = parentRow;\n }\n return parentRows.reverse();\n },\n getAllCells: memo(() => [table.getAllLeafColumns()], leafColumns => {\n return leafColumns.map(column => {\n return createCell(table, row, column, column.id);\n });\n }, getMemoOptions(table.options, 'debugRows', 'getAllCells')),\n _getAllCellsByColumnId: memo(() => [row.getAllCells()], allCells => {\n return allCells.reduce((acc, cell) => {\n acc[cell.column.id] = cell;\n return acc;\n }, {});\n }, getMemoOptions(table.options, 'debugRows', 'getAllCellsByColumnId'))\n };\n for (let i = 0; i < table._features.length; i++) {\n const feature = table._features[i];\n feature == null || feature.createRow == null || 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, parentRow) {\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, parentRow), originalRows[i], i, depth, undefined, parentRow == null ? void 0 : parentRow.id);\n\n // Keep track of every row in a flat array\n rowModel.flatRows.push(row);\n // Also keep track of every row by its ID\n rowModel.rowsById[row.id] = row;\n // Push table row into parent\n rows.push(row);\n\n // Get the original subrows\n if (table.options.getSubRows) {\n var _row$originalSubRows;\n row.originalSubRows = table.options.getSubRows(originalRows[i], i);\n\n // Then recursively access them\n if ((_row$originalSubRows = row.originalSubRows) != null && _row$originalSubRows.length) {\n row.subRows = accessRows(row.originalSubRows, depth + 1, row);\n }\n }\n }\n return rows;\n };\n rowModel.rows = accessRows(data);\n return rowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getRowModel', () => table._autoResetPageIndex()));\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 var _row$subRows;\n let row = rowsToFilter[i];\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.columnFilters = row.columnFilters;\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && depth < maxDepth) {\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n if (filterRow(row) && !newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n if (filterRow(row) || newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n } else {\n row = newRow;\n if (filterRow(row)) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(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 var _row$subRows2;\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length && depth < maxDepth) {\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n }\n rows.push(row);\n newFilteredFlatRows.push(row);\n newFilteredRowsById[row.id] = row;\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\n\nfunction getFilteredRowModel() {\n return table => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter], (rowModel, columnFilters, globalFilter) => {\n if (!rowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n for (let i = 0; i < rowModel.flatRows.length; i++) {\n rowModel.flatRows[i].columnFilters = {};\n rowModel.flatRows[i].columnFiltersMeta = {};\n }\n return rowModel;\n }\n const resolvedColumnFilters = [];\n const resolvedGlobalFilters = [];\n (columnFilters != null ? columnFilters : []).forEach(d => {\n var _filterFn$resolveFilt;\n const column = table.getColumn(d.id);\n if (!column) {\n return;\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 == null ? void 0 : 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 == null ? void 0 : 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 }, getMemoOptions(table.options, 'debugTable', 'getFilteredRowModel', () => table._autoResetPageIndex()));\n}\n\nfunction getFacetedRowModel() {\n return (table, columnId) => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter, table.getFilteredRowModel()], (preRowModel, columnFilters, globalFilter) => {\n if (!preRowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n return preRowModel;\n }\n const filterableIds = [...columnFilters.map(d => d.id).filter(d => d !== columnId), globalFilter ? '__global__' : undefined].filter(Boolean);\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n return filterRows(preRowModel.rows, filterRowsImpl, table);\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedRowModel'));\n}\n\nfunction getFacetedUniqueValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n if (!facetedRowModel) return new Map();\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 }, getMemoOptions(table.options, 'debugTable', `getFacetedUniqueValues_${columnId}`));\n}\n\nfunction getFacetedMinMaxValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n var _facetedRowModel$flat;\n if (!facetedRowModel) return undefined;\n const firstValue = (_facetedRowModel$flat = facetedRowModel.flatRows[0]) == null ? void 0 : _facetedRowModel$flat.getUniqueValues(columnId);\n if (typeof firstValue === 'undefined') {\n return undefined;\n }\n let facetedMinMaxValues = [firstValue, firstValue];\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);\n for (let j = 0; j < values.length; j++) {\n const value = values[j];\n if (value < facetedMinMaxValues[0]) {\n facetedMinMaxValues[0] = value;\n } else if (value > facetedMinMaxValues[1]) {\n facetedMinMaxValues[1] = value;\n }\n }\n }\n return facetedMinMaxValues;\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedMinMaxValues'));\n}\n\nfunction getSortedRowModel() {\n return table => memo(() => [table.getState().sorting, table.getPreSortedRowModel()], (sorting, rowModel) => {\n if (!rowModel.rows.length || !(sorting != null && sorting.length)) {\n return rowModel;\n }\n const sortingState = table.getState().sorting;\n const sortedFlatRows = [];\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sortingState.filter(sort => {\n var _table$getColumn;\n return (_table$getColumn = table.getColumn(sort.id)) == null ? void 0 : _table$getColumn.getCanSort();\n });\n const columnInfoById = {};\n availableSorting.forEach(sortEntry => {\n const column = table.getColumn(sortEntry.id);\n if (!column) return;\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.map(row => ({\n ...row\n }));\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 == null ? void 0 : sortEntry.desc) != null ? _sortEntry$desc : false;\n let sortInt = 0;\n\n // All sorting ints should always return in ascending order\n if (columnInfo.sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id);\n const bValue = rowB.getValue(sortEntry.id);\n const aUndefined = aValue === undefined;\n const bUndefined = bValue === undefined;\n if (aUndefined || bUndefined) {\n sortInt = aUndefined && bUndefined ? 0 : aUndefined ? columnInfo.sortUndefined : -columnInfo.sortUndefined;\n }\n }\n if (sortInt === 0) {\n sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id);\n }\n\n // If sorting is non-zero, take care of desc and inversion\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1;\n }\n if (columnInfo.invertSorting) {\n sortInt *= -1;\n }\n return sortInt;\n }\n }\n return rowA.index - rowB.index;\n });\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n var _row$subRows;\n sortedFlatRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length) {\n row.subRows = sortData(row.subRows);\n }\n });\n return sortedData;\n };\n return {\n rows: sortData(rowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: rowModel.rowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getSortedRowModel', () => table._autoResetPageIndex()));\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, row.id);\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, undefined, parentId);\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 == null ? void 0 : 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 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 return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getGroupedRowModel', () => {\n table._queue(() => {\n table._autoResetExpanded();\n table._autoResetPageIndex();\n });\n }));\n}\nfunction groupBy(rows, columnId) {\n const groupMap = new Map();\n return rows.reduce((map, row) => {\n const resKey = `${row.getGroupingValue(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 }, getMemoOptions(table.options, 'debugTable', 'getExpandedRowModel'));\n}\nfunction expandRows(rowModel) {\n const expandedRows = [];\n const handleRow = row => {\n var _row$subRows;\n expandedRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && row.getIsExpanded()) {\n row.subRows.forEach(handleRow);\n }\n };\n rowModel.rows.forEach(handleRow);\n return {\n rows: expandedRows,\n flatRows: rowModel.flatRows,\n rowsById: rowModel.rowsById\n };\n}\n\nfunction getPaginationRowModel(opts) {\n return table => memo(() => [table.getState().pagination, table.getPrePaginationRowModel(), table.options.paginateExpandedRows ? undefined : table.getState().expanded], (pagination, rowModel) => {\n if (!rowModel.rows.length) {\n return rowModel;\n }\n const {\n pageSize,\n pageIndex\n } = pagination;\n let {\n rows,\n flatRows,\n rowsById\n } = rowModel;\n const pageStart = pageSize * pageIndex;\n const pageEnd = pageStart + pageSize;\n rows = rows.slice(pageStart, pageEnd);\n let paginatedRowModel;\n if (!table.options.paginateExpandedRows) {\n paginatedRowModel = expandRows({\n rows,\n flatRows,\n rowsById\n });\n } else {\n paginatedRowModel = {\n rows,\n flatRows,\n rowsById\n };\n }\n paginatedRowModel.flatRows = [];\n const handleRow = row => {\n paginatedRowModel.flatRows.push(row);\n if (row.subRows.length) {\n row.subRows.forEach(handleRow);\n }\n };\n paginatedRowModel.rows.forEach(handleRow);\n return paginatedRowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getPaginationRowModel'));\n}\n\nexport { ColumnSizing, Expanding, Filters, Grouping, Headers, Ordering, Pagination, Pinning, RowSelection, Sorting, Visibility, _getVisibleLeafColumns, aggregationFns, buildHeaderGroups, createCell, createColumn, createColumnHelper, createRow, createTable, defaultColumnSizing, expandRows, filterFns, flattenBy, functionalUpdate, getCoreRowModel, getExpandedRowModel, getFacetedMinMaxValues, getFacetedRowModel, getFacetedUniqueValues, getFilteredRowModel, getGroupedRowModel, getMemoOptions, getPaginationRowModel, getSortedRowModel, isFunction, isNumberArray, 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\n/**\n * If rendering headers, cells, or footers with custom markup, use flexRender instead of `cell.getValue()` or `cell.renderValue()`.\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","isNumberArray","Array","isArray","every","val","flattenBy","arr","getChildren","flat","recurse","subArr","forEach","item","push","children","length","memo","getDeps","fn","opts","result","deps","depArgs","depTime","debug","Date","now","newDeps","some","dep","index","resultTime","onChange","depEndTime","Math","round","resultEndTime","resultFpsPercentage","pad","str","num","String","console","info","max","min","getMemoOptions","tableOptions","debugLevel","_tableOptions$debugAl","debugAll","createColumn","table","columnDef","depth","parent","_ref","_resolvedColumnDef$id","resolvedColumnDef","_getDefaultColumnDef","accessorKey","accessorFn","id","replace","undefined","header","includes","originalRow","split","_result","Error","column","columns","getFlatColumns","_column$columns","flatMap","options","getLeafColumns","_getOrderColumnsFn","orderColumns","_column$columns2","leafColumns","feature","_features","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","getCenterHeaderGroups","getLeftHeaderGroups","_left$map$filter2","getRightHeaderGroups","_right$map$filter2","getFooterGroups","headerGroups","reverse","getLeftFooterGroups","getCenterFooterGroups","getRightFooterGroups","getFlatHeaders","headers","getLeftFlatHeaders","getCenterFlatHeaders","getRightFlatHeaders","getCenterLeafHeaders","flatHeaders","_header$subHeaders","getLeftLeafHeaders","_header$subHeaders2","getRightLeafHeaders","_header$subHeaders3","center","_left$0$headers","_left$","_center$0$headers","_center$","_right$0$headers","_right$","columnsToGroup","headerFamily","_headerGroups$0$heade","_headerGroups$","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","columnResizeDirection","onColumnSizingChange","onColumnSizingInfoChange","getSize","_column$columnDef$min","_column$columnDef$max","columnSize","getStart","position","_getVisibleLeafColumns","slice","getIndex","reduce","sum","getAfter","resetSize","setColumnSizing","_ref2","_","rest","getCanResize","_column$columnDef$ena","_table$options$enable","enableResizing","enableColumnResizing","getIsResizing","_header$column$getSiz","prevSiblingHeader","getResizeHandler","_contextDocument","getColumn","canResize","e","persist","isTouchStartEvent","touches","clientX","newColumnSizing","updateOffset","eventType","clientXPos","setColumnSizingInfo","_old$startOffset","_old$startSize","deltaDirection","_ref3","headerSize","onMove","onEnd","contextDocument","document","mouseEvents","moveHandler","upHandler","removeEventListener","touchEvents","cancelable","preventDefault","stopPropagation","_e$touches$","passiveIfSupported","passiveEventSupported","passive","addEventListener","resetColumnSizing","defaultState","_table$initialState$c","initialState","resetHeaderSizeInfo","_table$initialState$c2","getTotalSize","_table$getHeaderGroup","_table$getHeaderGroup2","getLeftTotalSize","_table$getLeftHeaderG","_table$getLeftHeaderG2","getCenterTotalSize","_table$getCenterHeade","_table$getCenterHeade2","getRightTotalSize","_table$getRightHeader","_table$getRightHeader2","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","_table$initialState","getCanSomeRowsExpand","getPrePaginationRowModel","flatRows","row","getCanExpand","getToggleAllRowsExpandedHandler","getIsSomeRowsExpanded","Object","values","keys","getRowModel","getIsExpanded","getExpandedDepth","rowsById","splitId","getPreExpandedRowModel","getSortedRowModel","getExpandedRowModel","_getExpandedRowModel","createRow","toggleExpanded","_expanded","exists","oldExpanded","rowId","_table$options$getIsR","getIsRowExpanded","_table$options$getRow","_row$subRows","getRowCanExpand","enableExpanding","subRows","getIsAllParentsExpanded","isFullyExpanded","currentRow","parentId","getRow","getToggleExpandedHandler","canExpand","includesString","filterValue","_row$getValue","search","toLowerCase","getValue","toString","autoRemove","testFalsey","includesStringSensitive","_row$getValue2","equalsString","_row$getValue3","arrIncludes","_row$getValue4","arrIncludesAll","_row$getValue5","arrIncludesSome","_row$getValue6","equals","weakEquals","inNumberRange","rowValue","resolveFilterValue","unsafeMin","unsafeMax","parsedMin","parseFloat","parsedMax","isNaN","Infinity","temp","filterFns","Filters","filterFn","columnFilters","globalFilter","onColumnFiltersChange","onGlobalFilterChange","filterFromLeafRows","maxLeafRowFilterDepth","globalFilterFn","getColumnCanGlobalFilter","_table$getCoreRowMode","value","getCoreRowModel","_getAllCellsByColumnId","getAutoFilterFn","firstRow","getFilterFn","_table$options$filter","_table$options$filter2","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","_table$getState$colum2","_table$getState$colum3","findIndex","setFilterValue","setColumnFilters","previousfilter","newFilter","_old$filter","shouldAutoRemoveFilter","newFilterObj","_old$map","_getFacetedRowModel","getFacetedRowModel","getPreFilteredRowModel","_getFacetedUniqueValues","getFacetedUniqueValues","Map","_getFacetedMinMaxValues","getFacetedMinMaxValues","columnFiltersMeta","getGlobalAutoFilterFn","getGlobalFilterFn","_table$options$filter3","_table$options$filter4","getAllLeafColumns","_functionalUpdate","setGlobalFilter","resetGlobalFilter","resetColumnFilters","getFilteredRowModel","_getFilteredRowModel","manualFiltering","_getGlobalFacetedRowModel","getGlobalFacetedRowModel","_getGlobalFacetedUniqueValues","getGlobalFacetedUniqueValues","_getGlobalFacetedMinMaxValues","getGlobalFacetedMinMaxValues","aggregationFns","_leafRows","childRows","next","nextValue","extent","mean","leafRows","count","median","mid","floor","nums","sort","a","b","unique","from","Set","uniqueCount","_columnId","Grouping","aggregatedCell","props","_toString","_props$getValue","aggregationFn","grouping","onGroupingChange","groupedColumnMode","toggleGrouping","setGrouping","getCanGroup","enableGrouping","getIsGrouped","_table$getState$group","getGroupedIndex","_table$getState$group2","indexOf","getToggleGroupingHandler","canGroup","getAutoAggregationFn","prototype","call","getAggregationFn","_table$options$aggreg","_table$options$aggreg2","resetGrouping","_table$initialState$g","getPreGroupedRowModel","getGroupedRowModel","_getGroupedRowModel","manualGrouping","groupingColumnId","getGroupingValue","_groupingValuesCache","hasOwnProperty","original","createCell","cell","getIsPlaceholder","getIsAggregated","nonGroupingColumns","col","g","Ordering","columnOrder","onColumnOrderChange","getIsFirstColumn","_columns$","getIsLastColumn","_columns","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","_table$initialState2","setPageSize","topRowIndex","setPageCount","_table$options$pageCo","newPageCount","getPageOptions","getPageCount","pageOptions","fill","i","getCanPreviousPage","getCanNextPage","previousPage","nextPage","firstPage","lastPage","getPaginationRowModel","_getPaginationRowModel","_table$options$pageCo2","ceil","getRowCount","_table$options$rowCou","rowCount","rows","Pinning","rowPinning","top","bottom","onColumnPinningChange","onRowPinningChange","pin","columnIds","setColumnPinning","_old$left3","_old$right3","_old$left","_old$right","_old$left2","_old$right2","getCanPin","_d$columnDef$enablePi","enablePinning","enableColumnPinning","getIsPinned","leafColumnIds","isLeft","isRight","getPinnedIndex","includeLeafRows","includeParentRows","leafRowIds","getLeafRows","parentRowIds","getParentRows","rowIds","setRowPinning","_old$top3","_old$bottom3","_old$top","_old$bottom","_old$top2","_old$bottom2","has","_ref4","enableRowPinning","isTop","isBottom","_table$_getPinnedRows","_visiblePinnedRowIds$","visiblePinnedRowIds","_getPinnedRows","_ref5","getCenterVisibleCells","_getAllVisibleCells","allCells","leftAndRight","getLeftVisibleCells","getRightVisibleCells","resetColumnPinning","getIsSomeColumnsPinned","_pinningState$positio","pinningState","_pinningState$left","_pinningState$right","getLeftLeafColumns","getRightLeafColumns","getCenterLeafColumns","resetRowPinning","_table$initialState$r","getIsSomeRowsPinned","_pinningState$positio2","_pinningState$top","_pinningState$bottom","visibleRows","pinnedRowIds","_table$options$keepPi","keepPinnedRows","getTopRows","getBottomRows","getCenterRows","allRows","topAndBottom","RowSelection","rowSelection","onRowSelectionChange","enableRowSelection","enableMultiRowSelection","enableSubRowSelection","setRowSelection","resetRowSelection","toggleAllRowsSelected","getIsAllRowsSelected","preGroupedFlatRows","getCanSelect","toggleAllPageRowsSelected","resolvedValue","getIsAllPageRowsSelected","mutateRowIsSelected","getPreSelectedRowModel","getSelectedRowModel","rowModel","selectRowsFn","getFilteredSelectedRowModel","getGroupedSelectedRowModel","isAllRowsSelected","paginationFlatRows","isAllPageRowsSelected","getIsSomeRowsSelected","_table$getState$rowSe","totalSelected","getIsSomePageRowsSelected","getIsSelected","getIsSomeSelected","getToggleAllRowsSelectedHandler","target","checked","getToggleAllPageRowsSelectedHandler","toggleSelected","isSelected","_opts$selectChildren","selectedRowIds","selectChildren","isRowSelected","isSubRowSelected","getIsAllSubRowsSelected","getCanSelectSubRows","getCanMultiSelect","getToggleSelectedHandler","canSelect","_target","includeChildren","newSelectedFlatRows","newSelectedRowsById","recurseRows","_row$subRows2","selection","_selection$row$id","_row$subRows3","allChildrenSelected","someSelected","subRow","subRowChildrenSelected","reSplitAlphaNumeric","compareBasic","compareAlphanumeric","aStr","bStr","aa","bb","an","parseInt","bn","combo","sortingFns","alphanumeric","rowA","rowB","alphanumericCaseSensitive","text","textCaseSensitive","datetime","basic","Sorting","sorting","sortingFn","sortUndefined","onSortingChange","isMultiSortEvent","shiftKey","getAutoSortingFn","firstRows","isString","getAutoSortDir","getSortingFn","_table$options$sortin","_table$options$sortin2","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","_table$getState$sorti","columnSort","getSortIndex","_table$getState$sorti2","_table$getState$sorti3","clearSorting","getToggleSortingHandler","canSort","resetSorting","_table$initialState$s","getPreSortedRowModel","_getSortedRowModel","manualSorting","Visibility","columnVisibility","onColumnVisibilityChange","toggleVisibility","getCanHide","setColumnVisibility","childColumns","c","enableHiding","getToggleVisibilityHandler","getAllCells","cells","getVisibleCells","makeVisibleColumnsMethod","getColumns","getVisibleFlatColumns","getAllFlatColumns","getLeftVisibleLeafColumns","getRightVisibleLeafColumns","getCenterVisibleLeafColumns","resetColumnVisibility","toggleAllColumnsVisible","_value","getIsAllColumnsVisible","obj","getIsSomeColumnsVisible","getToggleAllColumnsVisibilityHandler","features","_options$initialState","debugTable","defaultOptions","assign","_feature$getInitialSt","queuedTimeout","coreInstance","cb","Promise","resolve","then","catch","error","setTimeout","reset","setOptions","newOptions","mergeOptions","onStateChange","_getRowId","getRowId","_getCoreRowModel","searchAll","defaultColumn","_defaultColumn","_props$renderValue$to","_props$renderValue","renderValue","_getColumnDefs","columnDefs","recurseColumns","groupingColumnDef","_getAllFlatColumnsById","flatColumns","acc","_cell$getValue","renderFallbackValue","rowIndex","_valuesCache","_uniqueValuesCache","getUniqueValues","getParentRow","parentRows","parentRow","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","createElement","data","accessRows","originalRows","_row$originalSubRows","getSubRows","originalSubRows","_table$getColumn","facetedRowModel","_facetedRowModel$flat","firstValue","facetedMinMaxValues","j","preRowModel","filterableIds","facetedUniqueValues","_facetedUniqueValues$","set","get","resolvedColumnFilters","resolvedGlobalFilters","_filterFn$resolveFilt","globallyFilterableColumns","currentColumnFilter","currentGlobalFilter","_globalFilterFn$resol","filterMeta","__global__","existingGrouping","groupedFlatRows","groupedRowsById","groupUpRecursively","rowGroupsMap","groupMap","resKey","previous","groupBy","aggregatedGroupedRows","entries","groupingValue","groupedRows","_groupedRows$0$getVal","aggregateFn","pageStart","pageEnd","paginatedRowModel","sortingState","sortedFlatRows","availableSorting","columnInfoById","sortEntry","invertSorting","sortData","sortedData","_sortEntry$desc","columnInfo","isDesc","sortInt","aUndefined","bUndefined","resolvedOptions","tableRef","useState","current","prev"],"mappings":"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"}