@economic/taco 2.47.0-server.6 → 2.47.0-server.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -30,7 +30,7 @@ function getPaddingEndOffset(table, options) {
30
30
  return ROW_HEIGHT_ESTIMATES.medium * ((_options$virtualiserP = options === null || options === void 0 ? void 0 : options.virtualiserPaddingEndOffset) !== null && _options$virtualiserP !== void 0 ? _options$virtualiserP : 1) * bottomRows.length;
31
31
  }
32
32
  function useTableRenderer(renderers, table, tableRef, length, defaultRowActiveIndex, options) {
33
- var _table$getState$group, _table$getCenterRows, _virtualItems$padding, _virtualItems$padding2, _virtualItems$padding3, _ref2, _virtualItems;
33
+ var _table$getState$group, _table$getCenterRows, _virtualItems$padding, _virtualItems$padding2, _virtualItems$padding3, _virtualItems$end, _virtualItems;
34
34
  var tableMeta = table.options.meta;
35
35
  var isTableRowGrouped = !!((_table$getState$group = table.getState().grouping) !== null && _table$getState$group !== void 0 && _table$getState$group.length);
36
36
  var rows = (_table$getCenterRows = table.getCenterRows()) !== null && _table$getCenterRows !== void 0 ? _table$getCenterRows : [];
@@ -83,7 +83,7 @@ function useTableRenderer(renderers, table, tableRef, length, defaultRowActiveIn
83
83
  var paddingStartIndex = isTableRowGrouped && count > 1 ? 1 : 0;
84
84
  var startValue = isTableRowGrouped ? ((_virtualItems$padding = virtualItems[paddingStartIndex]) === null || _virtualItems$padding === void 0 ? void 0 : _virtualItems$padding.start) - ((_virtualItems$padding2 = virtualItems[paddingStartIndex]) === null || _virtualItems$padding2 === void 0 ? void 0 : _virtualItems$padding2.size) : (_virtualItems$padding3 = virtualItems[paddingStartIndex]) === null || _virtualItems$padding3 === void 0 ? void 0 : _virtualItems$padding3.start;
85
85
  // styling for offsetting rows - this "is" the virtualisation
86
- var _ref = virtualItems.length > 0 ? [Math.max(0, startValue !== null && startValue !== void 0 ? startValue : 0), Math.max(0, (_ref2 = totalSize - ((_virtualItems = virtualItems[virtualItems.length - 1]) === null || _virtualItems === void 0 ? void 0 : _virtualItems.end)) !== null && _ref2 !== void 0 ? _ref2 : 0)] : [0, 0],
86
+ var _ref = virtualItems.length > 0 ? [Math.max(0, startValue !== null && startValue !== void 0 ? startValue : 0), Math.max(0, totalSize - ((_virtualItems$end = (_virtualItems = virtualItems[virtualItems.length - 1]) === null || _virtualItems === void 0 ? void 0 : _virtualItems.end) !== null && _virtualItems$end !== void 0 ? _virtualItems$end : 0))] : [0, 0],
87
87
  paddingTop = _ref[0],
88
88
  paddingBottom = _ref[1];
89
89
  // ensure default active rows are scrolled to
@@ -102,8 +102,8 @@ function useTableRenderer(renderers, table, tableRef, length, defaultRowActiveIn
102
102
  if (count || table.getBottomRows().length) {
103
103
  style = {
104
104
  height: totalSize,
105
- paddingBottom: paddingBottom,
106
- paddingTop: paddingTop
105
+ paddingBottom: isNaN(paddingBottom) ? 0 : paddingBottom,
106
+ paddingTop: isNaN(paddingTop) ? 0 : paddingTop
107
107
  };
108
108
  }
109
109
  // only render non sticky rows
@@ -1 +1 @@
1
- {"version":3,"file":"useTableRenderer.js","sources":["../../../../../../../../../src/primitives/Table/Core/features/useTableRenderer.tsx"],"sourcesContent":["import React, { CSSProperties } from 'react';\nimport { Table as ReactTable, TableMeta as ReactTableMeta, Row as ReactTableRow } from '@tanstack/react-table';\nimport {\n useVirtualizer,\n defaultRangeExtractor,\n ScrollToOptions as ReactVirtualScrollToOptions,\n VirtualItem,\n} from '@tanstack/react-virtual';\nimport { ROW_HEIGHT_ESTIMATES } from '../util/rows';\nimport { Row } from '../components/Row/Row';\nimport { useTableRenderers, useTableRenderOptions } from '../types';\nimport { TableRef } from '../../types';\nimport { SkeletonRow } from '../components/Row/BuiltIns/SkeletonRow';\n\n// scroll padding end is designed to always show half of the next row\nfunction getScrollPaddingEndOffset<TType = unknown>(table: ReactTable<TType>) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n let offset = 2;\n\n if (tableMeta.footer.isEnabled) {\n offset += 1;\n }\n\n if (table.getHeaderGroups().length > 1) {\n offset += table.getHeaderGroups().length - 1;\n }\n\n let height = ROW_HEIGHT_ESTIMATES.medium * offset;\n\n const bottomRows = table.getBottomRows();\n\n if (bottomRows.length) {\n // 1.4 offsets for half rows and also accounts for increased row heights (which is likely in pinned rows)\n height += ROW_HEIGHT_ESTIMATES[tableMeta.rowHeight.height] * 1.4 * bottomRows.length;\n }\n\n return height;\n}\n\n// scroll padding end is designed to always show half of the next row\nfunction getPaddingEndOffset<TType = unknown>(table: ReactTable<TType>, options?: useTableRenderOptions) {\n const bottomRows = table.getBottomRows() ?? [];\n return ROW_HEIGHT_ESTIMATES.medium * (options?.virtualiserPaddingEndOffset ?? 1) * bottomRows.length;\n}\n\nexport function useTableRenderer<TType = unknown>(\n renderers: useTableRenderers<TType>,\n table: ReactTable<TType>,\n tableRef: React.RefObject<TableRef>,\n length: number,\n defaultRowActiveIndex?: number | undefined,\n options?: useTableRenderOptions\n) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const isTableRowGrouped = !!table.getState().grouping?.length;\n const rows = table.getCenterRows() ?? [];\n\n // expanded rows\n const { createRowMeasurer, estimateSize } = useRowHeightVirtualisation<TType>(table);\n\n // row groups\n const rangeExtractor = useRowGroupVirtualisation<TType>(table);\n\n // account for thead and tfoot in the scroll area - both are always medium row height\n const scrollPaddingStart = ROW_HEIGHT_ESTIMATES.medium;\n\n const count = tableMeta.server.isEnabled && tableMeta.server._experimentalDataLoader2 ? length : rows.length;\n\n const virtualiser = useVirtualizer({\n count,\n estimateSize,\n getScrollElement: () => tableRef.current,\n overscan: tableMeta.printing.isPrinting ? count : undefined,\n rangeExtractor,\n // correctly sets the scroll padding offset, e.g. when keyboard navigating rows in the list\n scrollPaddingStart,\n scrollPaddingEnd: getScrollPaddingEndOffset(table),\n paddingEnd: getPaddingEndOffset(table, options),\n });\n\n const totalSize = virtualiser.getTotalSize();\n const virtualItems = virtualiser.getVirtualItems();\n\n const scrollToIndex = React.useCallback(\n (index: number, options: ReactVirtualScrollToOptions = { align: 'auto', behavior: 'smooth' }) => {\n const notSmooth: ReactVirtualScrollToOptions = { ...options, behavior: 'auto' };\n\n if (tableRef.current) {\n if (index === 0) {\n virtualiser.scrollToOffset(0, notSmooth);\n } else if (index === count - 1) {\n // sometimes the last row doesn't fully show, so we just force scroll to the bottom\n tableRef.current.scrollTop = tableRef.current.scrollHeight;\n } else {\n virtualiser.scrollToIndex(index, options);\n }\n }\n },\n [virtualItems.length, tableRef.current, totalSize, count]\n );\n\n // use row 1 not 0, because 0 might be sticky in grouped tables and it's start value will always be 0\n const paddingStartIndex = isTableRowGrouped && count > 1 ? 1 : 0;\n\n const startValue = isTableRowGrouped\n ? virtualItems[paddingStartIndex]?.start - virtualItems[paddingStartIndex]?.size\n : virtualItems[paddingStartIndex]?.start;\n\n // styling for offsetting rows - this \"is\" the virtualisation\n const [paddingTop, paddingBottom] =\n virtualItems.length > 0\n ? [Math.max(0, startValue ?? 0), Math.max(0, totalSize - virtualItems[virtualItems.length - 1]?.end ?? 0)]\n : [0, 0];\n\n // ensure default active rows are scrolled to\n React.useEffect(() => {\n if (defaultRowActiveIndex) {\n scrollToIndex(defaultRowActiveIndex, { align: 'center', behavior: 'auto' });\n }\n }, []);\n\n // rendered output\n let style: CSSProperties = {};\n let content: (JSX.Element | null)[] | null = null;\n\n // bottom rows aren't virtualised (they're sticky) but we need to set the height\n if (count || table.getBottomRows().length) {\n style = {\n height: totalSize,\n paddingBottom,\n paddingTop,\n };\n }\n\n // only render non sticky rows\n if (count) {\n content = virtualItems.map(virtualRow => {\n // there appears to be a react-virtual bug where it inserts a single `undefined` item at the end of the row, which crashes here\n if (!virtualRow) {\n return null;\n }\n\n let row: ReactTableRow<TType> | undefined;\n\n if (tableMeta.server.isEnabled && tableMeta.server._experimentalDataLoader2) {\n const currentPageIndex =\n (Math.floor(virtualRow.index / tableMeta.server.pageSize) * tableMeta.server.pageSize) /\n tableMeta.server.pageSize;\n const pagePosition = tableMeta.server.pages?.indexOf(currentPageIndex) ?? -1;\n\n if (pagePosition > -1) {\n // \"flatten\" row indexes down into the dataloader2 dataset size\n // for example, with a page size of 100...\n // row index 14267 is actually one of index 67, 167, 267 etc within the dataset (depending on number of pages stored)\n const fakeIndex = pagePosition * tableMeta.server.pageSize + (virtualRow.index % tableMeta.server.pageSize);\n row = rows[fakeIndex];\n }\n } else {\n row = rows[virtualRow.index];\n }\n\n if (!row?.original) {\n return (\n <SkeletonRow\n key={virtualRow.index}\n index={virtualRow.index}\n scrollDirection={virtualiser.scrollDirection ?? undefined}\n table={table}\n />\n );\n }\n\n const measureRow = createRowMeasurer(virtualiser.resizeItem, virtualRow);\n return (\n <Row\n key={row.id}\n row={row}\n index={virtualRow.index}\n scrollDirection={virtualiser.scrollDirection ?? undefined}\n table={table}\n measureRow={measureRow}\n renderer={renderers.row}\n cellRenderer={renderers.cell}\n />\n );\n });\n }\n\n return {\n rows: content,\n style,\n scrollToIndex,\n };\n}\n\n// support varying row heights - variable row heights, row expansion\nfunction useRowHeightVirtualisation<TType = unknown>(table: ReactTable<TType>) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const rows = table.getRowModel().rows;\n const expandedState = table.getState().expanded;\n\n const [expandedRowHeightsCache, setExpandedRowHeightsCache] = React.useState<Record<number, number>>({});\n\n // look at all registered expanded row heights and use them to form a more accurate average size\n // it might be worth considering if taking the max, or an upper bound, would be better\n const averageExpandedRowHeight = React.useMemo(() => {\n const values: number[] = Object.values(expandedRowHeightsCache);\n return values.length ? values.reduce((a, b) => a + b, 0) / values.length : 0;\n }, [expandedRowHeightsCache]);\n\n // row heights\n const estimateSize = React.useCallback(\n (index: number) => {\n const rowHeight = tableMeta.rowHeight.height\n ? ROW_HEIGHT_ESTIMATES[tableMeta.rowHeight.height]\n : ROW_HEIGHT_ESTIMATES.medium;\n\n if (expandedState === true || rows[index]?.getIsExpanded?.()) {\n return rowHeight + averageExpandedRowHeight;\n }\n\n return rowHeight;\n },\n [tableMeta.rowHeight.height, averageExpandedRowHeight, expandedState]\n );\n\n const createRowMeasurer = React.useCallback(\n (resizeItem: (item: VirtualItem, size: number) => void, virtualRow: VirtualItem) =>\n (rowHeight: number, expansionHeight?: number) => {\n // register the expansion height so that it can be used to determine an average\n if (expansionHeight) {\n setExpandedRowHeightsCache(cache => ({ ...cache, [virtualRow.index]: expansionHeight }));\n }\n\n // update the whole row's size to include the expanded height\n resizeItem(virtualRow, rowHeight + (expansionHeight ?? 0));\n },\n []\n );\n\n return { estimateSize, createRowMeasurer };\n}\n\n// support virtualised row groups (where the row group headers are sticky)\nfunction useRowGroupVirtualisation<TType = unknown>(table: ReactTable<TType>) {\n const rows = table.getRowModel().rows;\n const isTableGrouped = !!table.getState().grouping.length;\n\n const rowGroupIndexes = React.useMemo(() => {\n const indexes: number[] = [];\n\n if (isTableGrouped) {\n rows.forEach((row, index) => {\n if (row.getIsGrouped()) {\n indexes.push(index);\n }\n });\n }\n\n return indexes;\n }, [rows]);\n\n // this is taken from the react-virtual docs/examples\n const rangeExtractor = React.useCallback(\n range => {\n const activeRowGroupIndex =\n [...rowGroupIndexes].reverse().find(index => range.startIndex >= index) ?? rowGroupIndexes[0];\n\n const next = new Set([activeRowGroupIndex, ...defaultRangeExtractor(range)]);\n return [...next].sort((a, b) => a - b);\n },\n [rowGroupIndexes]\n );\n\n return isTableGrouped ? rangeExtractor : undefined;\n}\n"],"names":["getScrollPaddingEndOffset","table","tableMeta","options","meta","offset","footer","isEnabled","getHeaderGroups","length","height","ROW_HEIGHT_ESTIMATES","medium","bottomRows","getBottomRows","rowHeight","getPaddingEndOffset","_table$getBottomRows","_options$virtualiserP","virtualiserPaddingEndOffset","useTableRenderer","renderers","tableRef","defaultRowActiveIndex","isTableRowGrouped","_table$getState$group","getState","grouping","rows","_table$getCenterRows","getCenterRows","_useRowHeightVirtuali","useRowHeightVirtualisation","createRowMeasurer","estimateSize","rangeExtractor","useRowGroupVirtualisation","scrollPaddingStart","count","server","_experimentalDataLoader2","virtualiser","useVirtualizer","getScrollElement","current","overscan","printing","isPrinting","undefined","scrollPaddingEnd","paddingEnd","totalSize","getTotalSize","virtualItems","getVirtualItems","scrollToIndex","React","useCallback","index","align","behavior","notSmooth","_extends","scrollToOffset","scrollTop","scrollHeight","paddingStartIndex","startValue","_virtualItems$padding","start","_virtualItems$padding2","size","_virtualItems$padding3","_ref","Math","max","_ref2","_virtualItems","end","paddingTop","paddingBottom","useEffect","style","content","map","virtualRow","row","_tableMeta$server$pag","_tableMeta$server$pag2","currentPageIndex","floor","pageSize","pagePosition","pages","indexOf","fakeIndex","_row","original","_virtualiser$scrollDi","SkeletonRow","key","scrollDirection","measureRow","resizeItem","Row","id","_virtualiser$scrollDi2","renderer","cellRenderer","cell","getRowModel","expandedState","expanded","_React$useState","useState","expandedRowHeightsCache","setExpandedRowHeightsCache","averageExpandedRowHeight","useMemo","values","Object","reduce","a","b","_rows$index","_rows$index$getIsExpa","getIsExpanded","call","expansionHeight","cache","_extends2","isTableGrouped","rowGroupIndexes","indexes","forEach","getIsGrouped","push","range","activeRowGroupIndex","_reverse$find","concat","reverse","find","startIndex","next","Set","defaultRangeExtractor","sort"],"mappings":"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"}
1
+ {"version":3,"file":"useTableRenderer.js","sources":["../../../../../../../../../src/primitives/Table/Core/features/useTableRenderer.tsx"],"sourcesContent":["import React, { CSSProperties } from 'react';\nimport { Table as ReactTable, TableMeta as ReactTableMeta, Row as ReactTableRow } from '@tanstack/react-table';\nimport {\n useVirtualizer,\n defaultRangeExtractor,\n ScrollToOptions as ReactVirtualScrollToOptions,\n VirtualItem,\n} from '@tanstack/react-virtual';\nimport { ROW_HEIGHT_ESTIMATES } from '../util/rows';\nimport { Row } from '../components/Row/Row';\nimport { useTableRenderers, useTableRenderOptions } from '../types';\nimport { TableRef } from '../../types';\nimport { SkeletonRow } from '../components/Row/BuiltIns/SkeletonRow';\n\n// scroll padding end is designed to always show half of the next row\nfunction getScrollPaddingEndOffset<TType = unknown>(table: ReactTable<TType>) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n let offset = 2;\n\n if (tableMeta.footer.isEnabled) {\n offset += 1;\n }\n\n if (table.getHeaderGroups().length > 1) {\n offset += table.getHeaderGroups().length - 1;\n }\n\n let height = ROW_HEIGHT_ESTIMATES.medium * offset;\n\n const bottomRows = table.getBottomRows();\n\n if (bottomRows.length) {\n // 1.4 offsets for half rows and also accounts for increased row heights (which is likely in pinned rows)\n height += ROW_HEIGHT_ESTIMATES[tableMeta.rowHeight.height] * 1.4 * bottomRows.length;\n }\n\n return height;\n}\n\n// scroll padding end is designed to always show half of the next row\nfunction getPaddingEndOffset<TType = unknown>(table: ReactTable<TType>, options?: useTableRenderOptions) {\n const bottomRows = table.getBottomRows() ?? [];\n return ROW_HEIGHT_ESTIMATES.medium * (options?.virtualiserPaddingEndOffset ?? 1) * bottomRows.length;\n}\n\nexport function useTableRenderer<TType = unknown>(\n renderers: useTableRenderers<TType>,\n table: ReactTable<TType>,\n tableRef: React.RefObject<TableRef>,\n length: number,\n defaultRowActiveIndex?: number | undefined,\n options?: useTableRenderOptions\n) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const isTableRowGrouped = !!table.getState().grouping?.length;\n const rows = table.getCenterRows() ?? [];\n\n // expanded rows\n const { createRowMeasurer, estimateSize } = useRowHeightVirtualisation<TType>(table);\n\n // row groups\n const rangeExtractor = useRowGroupVirtualisation<TType>(table);\n\n // account for thead and tfoot in the scroll area - both are always medium row height\n const scrollPaddingStart = ROW_HEIGHT_ESTIMATES.medium;\n\n const count = tableMeta.server.isEnabled && tableMeta.server._experimentalDataLoader2 ? length : rows.length;\n\n const virtualiser = useVirtualizer({\n count,\n estimateSize,\n getScrollElement: () => tableRef.current,\n overscan: tableMeta.printing.isPrinting ? count : undefined,\n rangeExtractor,\n // correctly sets the scroll padding offset, e.g. when keyboard navigating rows in the list\n scrollPaddingStart,\n scrollPaddingEnd: getScrollPaddingEndOffset(table),\n paddingEnd: getPaddingEndOffset(table, options),\n });\n\n const totalSize = virtualiser.getTotalSize();\n const virtualItems = virtualiser.getVirtualItems();\n\n const scrollToIndex = React.useCallback(\n (index: number, options: ReactVirtualScrollToOptions = { align: 'auto', behavior: 'smooth' }) => {\n const notSmooth: ReactVirtualScrollToOptions = { ...options, behavior: 'auto' };\n\n if (tableRef.current) {\n if (index === 0) {\n virtualiser.scrollToOffset(0, notSmooth);\n } else if (index === count - 1) {\n // sometimes the last row doesn't fully show, so we just force scroll to the bottom\n tableRef.current.scrollTop = tableRef.current.scrollHeight;\n } else {\n virtualiser.scrollToIndex(index, options);\n }\n }\n },\n [virtualItems.length, tableRef.current, totalSize, count]\n );\n\n // use row 1 not 0, because 0 might be sticky in grouped tables and it's start value will always be 0\n const paddingStartIndex = isTableRowGrouped && count > 1 ? 1 : 0;\n\n const startValue = isTableRowGrouped\n ? virtualItems[paddingStartIndex]?.start - virtualItems[paddingStartIndex]?.size\n : virtualItems[paddingStartIndex]?.start;\n\n // styling for offsetting rows - this \"is\" the virtualisation\n const [paddingTop, paddingBottom] =\n virtualItems.length > 0\n ? [Math.max(0, startValue ?? 0), Math.max(0, totalSize - (virtualItems[virtualItems.length - 1]?.end ?? 0))]\n : [0, 0];\n\n // ensure default active rows are scrolled to\n React.useEffect(() => {\n if (defaultRowActiveIndex) {\n scrollToIndex(defaultRowActiveIndex, { align: 'center', behavior: 'auto' });\n }\n }, []);\n\n // rendered output\n let style: CSSProperties = {};\n let content: (JSX.Element | null)[] | null = null;\n\n // bottom rows aren't virtualised (they're sticky) but we need to set the height\n if (count || table.getBottomRows().length) {\n style = {\n height: totalSize,\n paddingBottom: isNaN(paddingBottom) ? 0 : paddingBottom,\n paddingTop: isNaN(paddingTop) ? 0 : paddingTop,\n };\n }\n\n // only render non sticky rows\n if (count) {\n content = virtualItems.map(virtualRow => {\n // there appears to be a react-virtual bug where it inserts a single `undefined` item at the end of the row, which crashes here\n if (!virtualRow) {\n return null;\n }\n\n let row: ReactTableRow<TType> | undefined;\n\n if (tableMeta.server.isEnabled && tableMeta.server._experimentalDataLoader2) {\n const currentPageIndex =\n (Math.floor(virtualRow.index / tableMeta.server.pageSize) * tableMeta.server.pageSize) /\n tableMeta.server.pageSize;\n const pagePosition = tableMeta.server.pages?.indexOf(currentPageIndex) ?? -1;\n\n if (pagePosition > -1) {\n // \"flatten\" row indexes down into the dataloader2 dataset size\n // for example, with a page size of 100...\n // row index 14267 is actually one of index 67, 167, 267 etc within the dataset (depending on number of pages stored)\n const fakeIndex = pagePosition * tableMeta.server.pageSize + (virtualRow.index % tableMeta.server.pageSize);\n row = rows[fakeIndex];\n }\n } else {\n row = rows[virtualRow.index];\n }\n\n if (!row?.original) {\n return (\n <SkeletonRow\n key={virtualRow.index}\n index={virtualRow.index}\n scrollDirection={virtualiser.scrollDirection ?? undefined}\n table={table}\n />\n );\n }\n\n const measureRow = createRowMeasurer(virtualiser.resizeItem, virtualRow);\n return (\n <Row\n key={row.id}\n row={row}\n index={virtualRow.index}\n scrollDirection={virtualiser.scrollDirection ?? undefined}\n table={table}\n measureRow={measureRow}\n renderer={renderers.row}\n cellRenderer={renderers.cell}\n />\n );\n });\n }\n\n return {\n rows: content,\n style,\n scrollToIndex,\n };\n}\n\n// support varying row heights - variable row heights, row expansion\nfunction useRowHeightVirtualisation<TType = unknown>(table: ReactTable<TType>) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const rows = table.getRowModel().rows;\n const expandedState = table.getState().expanded;\n\n const [expandedRowHeightsCache, setExpandedRowHeightsCache] = React.useState<Record<number, number>>({});\n\n // look at all registered expanded row heights and use them to form a more accurate average size\n // it might be worth considering if taking the max, or an upper bound, would be better\n const averageExpandedRowHeight = React.useMemo(() => {\n const values: number[] = Object.values(expandedRowHeightsCache);\n return values.length ? values.reduce((a, b) => a + b, 0) / values.length : 0;\n }, [expandedRowHeightsCache]);\n\n // row heights\n const estimateSize = React.useCallback(\n (index: number) => {\n const rowHeight = tableMeta.rowHeight.height\n ? ROW_HEIGHT_ESTIMATES[tableMeta.rowHeight.height]\n : ROW_HEIGHT_ESTIMATES.medium;\n\n if (expandedState === true || rows[index]?.getIsExpanded?.()) {\n return rowHeight + averageExpandedRowHeight;\n }\n\n return rowHeight;\n },\n [tableMeta.rowHeight.height, averageExpandedRowHeight, expandedState]\n );\n\n const createRowMeasurer = React.useCallback(\n (resizeItem: (item: VirtualItem, size: number) => void, virtualRow: VirtualItem) =>\n (rowHeight: number, expansionHeight?: number) => {\n // register the expansion height so that it can be used to determine an average\n if (expansionHeight) {\n setExpandedRowHeightsCache(cache => ({ ...cache, [virtualRow.index]: expansionHeight }));\n }\n\n // update the whole row's size to include the expanded height\n resizeItem(virtualRow, rowHeight + (expansionHeight ?? 0));\n },\n []\n );\n\n return { estimateSize, createRowMeasurer };\n}\n\n// support virtualised row groups (where the row group headers are sticky)\nfunction useRowGroupVirtualisation<TType = unknown>(table: ReactTable<TType>) {\n const rows = table.getRowModel().rows;\n const isTableGrouped = !!table.getState().grouping.length;\n\n const rowGroupIndexes = React.useMemo(() => {\n const indexes: number[] = [];\n\n if (isTableGrouped) {\n rows.forEach((row, index) => {\n if (row.getIsGrouped()) {\n indexes.push(index);\n }\n });\n }\n\n return indexes;\n }, [rows]);\n\n // this is taken from the react-virtual docs/examples\n const rangeExtractor = React.useCallback(\n range => {\n const activeRowGroupIndex =\n [...rowGroupIndexes].reverse().find(index => range.startIndex >= index) ?? rowGroupIndexes[0];\n\n const next = new Set([activeRowGroupIndex, ...defaultRangeExtractor(range)]);\n return [...next].sort((a, b) => a - b);\n },\n [rowGroupIndexes]\n );\n\n return isTableGrouped ? rangeExtractor : undefined;\n}\n"],"names":["getScrollPaddingEndOffset","table","tableMeta","options","meta","offset","footer","isEnabled","getHeaderGroups","length","height","ROW_HEIGHT_ESTIMATES","medium","bottomRows","getBottomRows","rowHeight","getPaddingEndOffset","_table$getBottomRows","_options$virtualiserP","virtualiserPaddingEndOffset","useTableRenderer","renderers","tableRef","defaultRowActiveIndex","isTableRowGrouped","_table$getState$group","getState","grouping","rows","_table$getCenterRows","getCenterRows","_useRowHeightVirtuali","useRowHeightVirtualisation","createRowMeasurer","estimateSize","rangeExtractor","useRowGroupVirtualisation","scrollPaddingStart","count","server","_experimentalDataLoader2","virtualiser","useVirtualizer","getScrollElement","current","overscan","printing","isPrinting","undefined","scrollPaddingEnd","paddingEnd","totalSize","getTotalSize","virtualItems","getVirtualItems","scrollToIndex","React","useCallback","index","align","behavior","notSmooth","_extends","scrollToOffset","scrollTop","scrollHeight","paddingStartIndex","startValue","_virtualItems$padding","start","_virtualItems$padding2","size","_virtualItems$padding3","_ref","Math","max","_virtualItems$end","_virtualItems","end","paddingTop","paddingBottom","useEffect","style","content","isNaN","map","virtualRow","row","_tableMeta$server$pag","_tableMeta$server$pag2","currentPageIndex","floor","pageSize","pagePosition","pages","indexOf","fakeIndex","_row","original","_virtualiser$scrollDi","SkeletonRow","key","scrollDirection","measureRow","resizeItem","Row","id","_virtualiser$scrollDi2","renderer","cellRenderer","cell","getRowModel","expandedState","expanded","_React$useState","useState","expandedRowHeightsCache","setExpandedRowHeightsCache","averageExpandedRowHeight","useMemo","values","Object","reduce","a","b","_rows$index","_rows$index$getIsExpa","getIsExpanded","call","expansionHeight","cache","_extends2","isTableGrouped","rowGroupIndexes","indexes","forEach","getIsGrouped","push","range","activeRowGroupIndex","_reverse$find","concat","reverse","find","startIndex","next","Set","defaultRangeExtractor","sort"],"mappings":"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"}
@@ -12806,7 +12806,7 @@ function getPaddingEndOffset(table, options) {
12806
12806
  return ROW_HEIGHT_ESTIMATES.medium * ((_options$virtualiserP = options === null || options === void 0 ? void 0 : options.virtualiserPaddingEndOffset) !== null && _options$virtualiserP !== void 0 ? _options$virtualiserP : 1) * bottomRows.length;
12807
12807
  }
12808
12808
  function useTableRenderer(renderers, table, tableRef, length, defaultRowActiveIndex, options) {
12809
- var _table$getState$group, _table$getCenterRows, _virtualItems$padding, _virtualItems$padding2, _virtualItems$padding3, _ref2, _virtualItems;
12809
+ var _table$getState$group, _table$getCenterRows, _virtualItems$padding, _virtualItems$padding2, _virtualItems$padding3, _virtualItems$end, _virtualItems;
12810
12810
  var tableMeta = table.options.meta;
12811
12811
  var isTableRowGrouped = !!((_table$getState$group = table.getState().grouping) !== null && _table$getState$group !== void 0 && _table$getState$group.length);
12812
12812
  var rows = (_table$getCenterRows = table.getCenterRows()) !== null && _table$getCenterRows !== void 0 ? _table$getCenterRows : [];
@@ -12859,7 +12859,7 @@ function useTableRenderer(renderers, table, tableRef, length, defaultRowActiveIn
12859
12859
  var paddingStartIndex = isTableRowGrouped && count > 1 ? 1 : 0;
12860
12860
  var startValue = isTableRowGrouped ? ((_virtualItems$padding = virtualItems[paddingStartIndex]) === null || _virtualItems$padding === void 0 ? void 0 : _virtualItems$padding.start) - ((_virtualItems$padding2 = virtualItems[paddingStartIndex]) === null || _virtualItems$padding2 === void 0 ? void 0 : _virtualItems$padding2.size) : (_virtualItems$padding3 = virtualItems[paddingStartIndex]) === null || _virtualItems$padding3 === void 0 ? void 0 : _virtualItems$padding3.start;
12861
12861
  // styling for offsetting rows - this "is" the virtualisation
12862
- var _ref = virtualItems.length > 0 ? [Math.max(0, startValue !== null && startValue !== void 0 ? startValue : 0), Math.max(0, (_ref2 = totalSize - ((_virtualItems = virtualItems[virtualItems.length - 1]) === null || _virtualItems === void 0 ? void 0 : _virtualItems.end)) !== null && _ref2 !== void 0 ? _ref2 : 0)] : [0, 0],
12862
+ var _ref = virtualItems.length > 0 ? [Math.max(0, startValue !== null && startValue !== void 0 ? startValue : 0), Math.max(0, totalSize - ((_virtualItems$end = (_virtualItems = virtualItems[virtualItems.length - 1]) === null || _virtualItems === void 0 ? void 0 : _virtualItems.end) !== null && _virtualItems$end !== void 0 ? _virtualItems$end : 0))] : [0, 0],
12863
12863
  paddingTop = _ref[0],
12864
12864
  paddingBottom = _ref[1];
12865
12865
  // ensure default active rows are scrolled to
@@ -12878,8 +12878,8 @@ function useTableRenderer(renderers, table, tableRef, length, defaultRowActiveIn
12878
12878
  if (count || table.getBottomRows().length) {
12879
12879
  style = {
12880
12880
  height: totalSize,
12881
- paddingBottom: paddingBottom,
12882
- paddingTop: paddingTop
12881
+ paddingBottom: isNaN(paddingBottom) ? 0 : paddingBottom,
12882
+ paddingTop: isNaN(paddingTop) ? 0 : paddingTop
12883
12883
  };
12884
12884
  }
12885
12885
  // only render non sticky rows