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