@are-visual/virtual-table 0.1.0 → 0.1.2

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/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { DetailedHTMLProps, HTMLAttributes, Key, ReactNode, TdHTMLAttributes, RefObject, ReactElement, FC, CSSProperties, Ref, RefAttributes } from 'react';
1
+ import * as react from 'react';
2
+ import { DetailedHTMLProps, HTMLAttributes, Key, ReactNode, TdHTMLAttributes, RefObject, ReactElement, CSSProperties, Ref, RefAttributes } from 'react';
2
3
 
3
4
  type ScrollElement = HTMLElement | Window;
4
5
 
@@ -170,13 +171,13 @@ interface CellProps<T> extends Omit<NativeProps$1, 'children'> {
170
171
  rowData: T;
171
172
  renderCell?: MiddlewareRenderCell;
172
173
  }
173
- declare const _default$2: <T>(props: CellProps<T>) => ReactElement;
174
+ declare const _default$3: <T>(props: CellProps<T>) => ReactElement;
174
175
 
175
176
  interface ColgroupProps {
176
177
  columns: ColumnDescriptor[];
177
178
  onColumnSizesMeasure?: (columnSizes: Map<Key, number>) => void;
178
179
  }
179
- declare const Colgroup: FC<ColgroupProps>;
180
+ declare const _default$2: react.NamedExoticComponent<ColgroupProps>;
180
181
 
181
182
  interface TableColumnsContextType {
182
183
  widthList: Map<Key, number>;
@@ -319,4 +320,4 @@ type PossibleRef<T> = Ref<T> | undefined;
319
320
  declare function mergeRefs<T>(...refs: PossibleRef<T>[]): (node: T | null) => void;
320
321
  declare function useMergedRef<T>(...refs: PossibleRef<T>[]): (node: T | null) => void;
321
322
 
322
- export { type AlignType, type AnyObject, Colgroup, type ColumnDescriptor, type ColumnExtra, type ColumnType, type ContainerSizeState, type FixedType, type HorizontalScrollContextState, type MergedMiddlewareRender, type Middleware, type MiddlewareContext, type MiddlewareRender, type MiddlewareRenderBody, type MiddlewareRenderBodyRoot, type MiddlewareRenderBodyWrapper, type MiddlewareRenderCell, type MiddlewareRenderContent, type MiddlewareRenderHeader, type MiddlewareRenderHeaderCell, type MiddlewareRenderHeaderRoot, type MiddlewareRenderHeaderRow, type MiddlewareRenderHeaderWrapper, type MiddlewareRenderRoot, type MiddlewareRenderRow, type MiddlewareRenders, type MiddlewareResult, type OnRowType, type PipelineRender, type PipelineRenderOptions, type StickyContextState, type TableColumnsContextType, TablePipeline, type TableRowManagerContextType, type UseTablePipelineOptions, _default as VirtualTable, _default$2 as VirtualTableCell, type CellProps as VirtualTableCellProps, type VirtualTableCoreProps as VirtualTableProps, _default$1 as VirtualTableRow, type RowProps as VirtualTableRowProps, createMiddleware, findLastIndex, getKey, isValidFixed, isValidFixedLeft, isValidFixedRight, mergeRefs, onResize, useColumnSizes, useContainerSize, useHorizontalScrollContext, useMergedRef, useShallowMemo, useStableFn, useTablePipeline, useTableRowManager, useTableSticky };
323
+ export { type AlignType, type AnyObject, _default$2 as Colgroup, type ColumnDescriptor, type ColumnExtra, type ColumnType, type ContainerSizeState, type FixedType, type HorizontalScrollContextState, type MergedMiddlewareRender, type Middleware, type MiddlewareContext, type MiddlewareRender, type MiddlewareRenderBody, type MiddlewareRenderBodyRoot, type MiddlewareRenderBodyWrapper, type MiddlewareRenderCell, type MiddlewareRenderContent, type MiddlewareRenderHeader, type MiddlewareRenderHeaderCell, type MiddlewareRenderHeaderRoot, type MiddlewareRenderHeaderRow, type MiddlewareRenderHeaderWrapper, type MiddlewareRenderRoot, type MiddlewareRenderRow, type MiddlewareRenders, type MiddlewareResult, type OnRowType, type PipelineRender, type PipelineRenderOptions, type StickyContextState, type TableColumnsContextType, TablePipeline, type TableRowManagerContextType, type UseTablePipelineOptions, _default as VirtualTable, _default$3 as VirtualTableCell, type CellProps as VirtualTableCellProps, type VirtualTableCoreProps as VirtualTableProps, _default$1 as VirtualTableRow, type RowProps as VirtualTableRowProps, createMiddleware, findLastIndex, getKey, isValidFixed, isValidFixedLeft, isValidFixedRight, mergeRefs, onResize, useColumnSizes, useContainerSize, useHorizontalScrollContext, useMergedRef, useShallowMemo, useStableFn, useTablePipeline, useTableRowManager, useTableSticky };
package/index.esm.js CHANGED
@@ -87,11 +87,11 @@ function isShallowEqual(value, oldValue) {
87
87
  return false;
88
88
  }
89
89
  if (value instanceof Map && oldValue instanceof Map) {
90
- var keys = [].concat(value.keys());
91
- var oldKeys = [].concat(oldValue.keys());
92
- if (shallowEqualArrays(keys, oldKeys)) {
93
- var values = [].concat(value.values());
94
- var oldValues = [].concat(oldValue.values());
90
+ var keys = Array.from(value.keys());
91
+ var oldKeys = Array.from(oldValue.keys());
92
+ if (isShallowEqual(keys, oldKeys)) {
93
+ var values = Array.from(value.values());
94
+ var oldValues = Array.from(oldValue.values());
95
95
  if (isShallowEqual(values, oldValues)) {
96
96
  return true;
97
97
  }
@@ -290,11 +290,15 @@ var Colgroup = function Colgroup(props) {
290
290
  var columns = props.columns,
291
291
  onColumnSizesMeasure = props.onColumnSizesMeasure;
292
292
  var enableMeasure = onColumnSizesMeasure != null;
293
- var columnSizes = useRef(new Map());
293
+ var columnSizes = new Map();
294
+ var prevColumnSizes = useRef(new Map());
294
295
  return jsx("colgroup", {
295
296
  ref: function ref() {
296
297
  if (!enableMeasure) return;
297
- onColumnSizesMeasure(columnSizes.current);
298
+ if (!isShallowEqual(columnSizes, prevColumnSizes.current)) {
299
+ onColumnSizesMeasure(columnSizes);
300
+ prevColumnSizes.current = columnSizes;
301
+ }
298
302
  },
299
303
  children: columns.map(function (item) {
300
304
  var key = item.key;
@@ -302,8 +306,7 @@ var Colgroup = function Colgroup(props) {
302
306
  return jsx("col", {
303
307
  className: "blank",
304
308
  style: {
305
- width: item.width,
306
- color: '#f00'
309
+ width: item.width
307
310
  }
308
311
  }, key);
309
312
  }
@@ -311,7 +314,7 @@ var Colgroup = function Colgroup(props) {
311
314
  return jsx("col", {
312
315
  ref: function ref(node) {
313
316
  if (node == null || !enableMeasure) return;
314
- columnSizes.current.set(key, node.offsetWidth);
317
+ columnSizes.set(key, node.offsetWidth);
315
318
  },
316
319
  style: {
317
320
  width: column.width,
@@ -321,6 +324,7 @@ var Colgroup = function Colgroup(props) {
321
324
  })
322
325
  });
323
326
  };
327
+ var Colgroup$1 = /*#__PURE__*/memo(Colgroup);
324
328
 
325
329
  var overflowStylePatterns = /auto|scroll|overlay|hidden/;
326
330
  function isElement(node) {
@@ -672,7 +676,7 @@ var TablePipeline = /*#__PURE__*/function () {
672
676
  renders = _ref2[1];
673
677
  if (renders.length > 0) {
674
678
  context.current[key] = function (children, args) {
675
- // reduce 把 [render1, render2] 转为 render1(render2(children))
679
+ // reduce 把 [render1, render2] 转为 render2(render1(children))
676
680
  return renders.reduce(function (node, render) {
677
681
  // @ts-expect-error: There is no way to declare the type correctly, but it works at runtime.
678
682
  return render(node, args);
@@ -1090,7 +1094,7 @@ function TableBody(props) {
1090
1094
  if (bodyHeight === 0) return;
1091
1095
  var heights = rowHeights.current;
1092
1096
  heights.forEach(function (row, rowIndex) {
1093
- var height = [].concat(row.values()).reduce(function (res, x) {
1097
+ var height = Array.from(row.values()).reduce(function (res, x) {
1094
1098
  return res + x;
1095
1099
  }, 0);
1096
1100
  setRowHeight(rowIndex, height);
@@ -1117,13 +1121,7 @@ function TableBody(props) {
1117
1121
  columnDescriptor: descriptor
1118
1122
  });
1119
1123
  var _useColumnSizes = useColumnSizes(),
1120
- widthList = _useColumnSizes.widthList,
1121
1124
  setWidthList = _useColumnSizes.setWidthList;
1122
- var onColumnSizesMeasure = useCallback(function (columnSizes) {
1123
- if (!isShallowEqual(widthList, columnSizes)) {
1124
- setWidthList(new Map(columnSizes));
1125
- }
1126
- }, [setWidthList, widthList]);
1127
1125
  var tableNode = pipelineRender(jsxs("table", {
1128
1126
  className: clsx(className, 'virtual-table-body'),
1129
1127
  style: _extends({}, style, {
@@ -1131,9 +1129,9 @@ function TableBody(props) {
1131
1129
  paddingTop: topBlank
1132
1130
  }),
1133
1131
  ref: bodyRootRef,
1134
- children: [jsx(Colgroup, {
1132
+ children: [jsx(Colgroup$1, {
1135
1133
  columns: descriptor,
1136
- onColumnSizesMeasure: onColumnSizesMeasure
1134
+ onColumnSizesMeasure: setWidthList
1137
1135
  }), bodyNode]
1138
1136
  }), renderBodyRoot, {
1139
1137
  columns: columns,
@@ -1283,7 +1281,7 @@ var TableHeader = function TableHeader(props) {
1283
1281
  });
1284
1282
  var tableNode = pipelineRender(jsxs("table", {
1285
1283
  style: style,
1286
- children: [jsx(Colgroup, {
1284
+ children: [jsx(Colgroup$1, {
1287
1285
  columns: descriptor
1288
1286
  }), theadNode]
1289
1287
  }), renderHeaderRoot, {
@@ -1672,16 +1670,16 @@ function VirtualTableCore(props, ref) {
1672
1670
  columnWidths = _useState[0],
1673
1671
  setColumnWidths = _useState[1];
1674
1672
  var columnWidthsRef = useRef(columnWidths);
1675
- var updateColumnWidths = function updateColumnWidths(value) {
1673
+ var updateColumnWidths = useCallback(function (value) {
1676
1674
  columnWidthsRef.current = value;
1677
1675
  setColumnWidths(value);
1678
- };
1676
+ }, []);
1679
1677
  var tableColumnsContext = useMemo(function () {
1680
1678
  return {
1681
1679
  widthList: columnWidths,
1682
1680
  setWidthList: updateColumnWidths
1683
1681
  };
1684
- }, [columnWidths]);
1682
+ }, [columnWidths, updateColumnWidths]);
1685
1683
  var _useColumnVirtualize = useColumnVirtualize({
1686
1684
  estimateSize: estimatedColumnWidth != null ? estimatedColumnWidth : 100,
1687
1685
  overscan: overscanColumns,
@@ -1801,5 +1799,5 @@ if (process.env.NODE_ENV === 'development') {
1801
1799
  }
1802
1800
  var table = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(VirtualTableCore));
1803
1801
 
1804
- export { Colgroup, table as VirtualTable, Cell$1 as VirtualTableCell, Row$1 as VirtualTableRow, createMiddleware, findLastIndex, getKey, isValidFixed, isValidFixedLeft, isValidFixedRight, mergeRefs, onResize, useColumnSizes, useContainerSize, useHorizontalScrollContext, useMergedRef, useShallowMemo, useStableFn, useTablePipeline, useTableRowManager, useTableSticky };
1802
+ export { Colgroup$1 as Colgroup, table as VirtualTable, Cell$1 as VirtualTableCell, Row$1 as VirtualTableRow, createMiddleware, findLastIndex, getKey, isValidFixed, isValidFixedLeft, isValidFixedRight, mergeRefs, onResize, useColumnSizes, useContainerSize, useHorizontalScrollContext, useMergedRef, useShallowMemo, useStableFn, useTablePipeline, useTableRowManager, useTableSticky };
1805
1803
  //# sourceMappingURL=index.esm.js.map
package/index.esm.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../../packages/virtual-table/src/utils/equal.ts","../../packages/virtual-table/src/core/hooks/useShallowMemo.ts","../../packages/virtual-table/src/core/utils/get-key.ts","../../packages/virtual-table/src/core/utils/verification.ts","../../packages/virtual-table/src/core/context/column-sizes.tsx","../../packages/virtual-table/src/core/context/sticky.tsx","../../packages/virtual-table/src/core/pipeline/render-pipeline.ts","../../packages/virtual-table/src/core/cell.tsx","../../packages/virtual-table/src/core/colgroup.tsx","../../packages/virtual-table/src/utils/dom.ts","../../packages/virtual-table/src/core/hooks/useCalcSize.ts","../../packages/virtual-table/src/core/context/container-size.tsx","../../packages/virtual-table/src/core/context/horizontal-scroll.tsx","../../packages/virtual-table/src/core/context/row-manager.tsx","../../packages/virtual-table/src/core/hooks/useStableFn.ts","../../packages/virtual-table/src/core/pipeline/create-middleware.ts","../../packages/virtual-table/src/core/pipeline/table-pipeline.ts","../../packages/virtual-table/src/core/pipeline/useTablePipeline.ts","../../packages/virtual-table/src/utils/find-last-index.ts","../../packages/virtual-table/src/core/row.tsx","../../packages/virtual-table/src/utils/ref.ts","../../packages/virtual-table/src/core/utils/on-resize.ts","../../packages/virtual-table/src/core/hooks/useRowVirtualize.ts","../../packages/virtual-table/src/core/body.tsx","../../packages/virtual-table/src/core/header.tsx","../../packages/virtual-table/src/core/hooks/useColumnVirtualize.ts","../../packages/virtual-table/src/core/root.tsx","../../packages/virtual-table/src/core/table.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nexport type validObjectValue = Record<string, any> | null | undefined\nexport type validArrayValue = any[] | null | undefined\n\nexport function shallowEqualObjects(\n objA: validObjectValue,\n objB: validObjectValue,\n): boolean {\n if (objA === objB) {\n return true\n }\n\n if (!objA || !objB) {\n return false\n }\n\n const aKeys = Object.keys(objA)\n const bKeys = Object.keys(objB)\n const len = aKeys.length\n\n if (bKeys.length !== len) {\n return false\n }\n\n for (let i = 0; i < len; i += 1) {\n const key = aKeys[i]\n\n if (objA[key] !== objB[key] || !Object.prototype.hasOwnProperty.call(objB, key)) {\n return false\n }\n }\n\n return true\n}\n\nexport function shallowEqualArrays(\n arrA: validArrayValue,\n arrB: validArrayValue,\n): boolean {\n if (arrA === arrB) {\n return true\n }\n\n if (!arrA || !arrB) {\n return false\n }\n\n const len = arrA.length\n\n if (arrB.length !== len) {\n return false\n }\n\n for (let i = 0; i < len; i += 1) {\n if (arrA[i] !== arrB[i]) {\n return false\n }\n }\n\n return true\n}\n\nexport function isShallowEqual(value: unknown, oldValue: unknown) {\n if (Object.is(value, oldValue)) {\n return true\n }\n if (Array.isArray(value) && Array.isArray(oldValue)) {\n if (shallowEqualArrays(value, oldValue)) {\n return true\n }\n if (value.length === oldValue.length) {\n const hasObject = value.findIndex((x) => typeof x === 'object' && x != null) > -1\n if (hasObject) {\n return value.every((state, index) => {\n if (Array.isArray(state)) {\n return shallowEqualArrays(state, oldValue[index] as unknown[])\n }\n if (typeof state === 'object' && state != null) {\n return shallowEqualObjects(\n state as Record<string, unknown>,\n oldValue[index] as Record<string, unknown>,\n )\n }\n return Object.is(state, oldValue[index])\n })\n }\n }\n return false\n }\n if (value instanceof Map && oldValue instanceof Map) {\n const keys = [...value.keys()]\n const oldKeys = [...oldValue.keys()]\n if (shallowEqualArrays(keys, oldKeys)) {\n const values = [...value.values()]\n const oldValues = [...oldValue.values()]\n if (isShallowEqual(values, oldValues)) {\n return true\n }\n }\n return false\n }\n if (typeof value === 'object' && value != null) {\n return shallowEqualObjects(value, oldValue as Record<string, unknown>)\n }\n return false\n}\n","/* eslint-disable react-compiler/react-compiler */\nimport { useRef } from 'react'\n\nimport { isShallowEqual } from '../../utils/equal'\n\n/**\n * 缓存数据(浅比较,如果是数组则对第一层进行浅比较)\n */\nexport function useShallowMemo<T>(pickData: () => T) {\n const nextState = pickData()\n const value = useRef<T>(nextState)\n\n if (!isShallowEqual(nextState, value.current)) {\n value.current = nextState\n }\n\n return value.current\n}\n","import type { Key } from 'react'\nimport type { ColumnType } from '../types'\n\nexport function getKey<T>(column: ColumnType<T>) {\n return 'key' in column ? (column.key as Key) : column.dataIndex as string\n}\n","export type FixedType = 'left' | 'right'\n\nexport function isValidFixedLeft(fixed: unknown) {\n return fixed === 'left'\n}\n\nexport function isValidFixedRight(fixed: unknown) {\n return fixed === 'right'\n}\n\nexport function isValidFixed(fixed: unknown) {\n return isValidFixedLeft(fixed) || isValidFixedRight(fixed)\n}\n","import type { Key } from 'react'\nimport { createContext, useContext } from 'react'\n\nexport interface TableColumnsContextType {\n widthList: Map<Key, number>\n setWidthList: (value: Map<Key, number>) => void\n}\n\nexport const ColumnSizes = createContext<TableColumnsContextType | null>(null)\n\nif (__DEV__) {\n ColumnSizes.displayName = 'VirtualTable.ColumnSizes'\n}\n\nexport function useColumnSizes() {\n const context = useContext(ColumnSizes)\n if (context == null) {\n throw new Error('useColumnSizes provider not found')\n }\n return context\n}\n","import type { Key, PropsWithChildren } from 'react'\nimport type { ColumnType, FixedType } from '../types'\nimport { createContext, useContext, useMemo } from 'react'\nimport { useShallowMemo } from '../hooks/useShallowMemo'\nimport { getKey } from '../utils/get-key'\nimport { isValidFixedLeft, isValidFixedRight } from '../utils/verification'\nimport { useColumnSizes } from './column-sizes'\n\nexport interface StickyContextState {\n size: Map<Key, number>\n /** 每一列设置的 fixed 值 */\n fixed: { key: Key, fixed: FixedType | undefined }[]\n}\n\nexport const Sticky = createContext<StickyContextState | null>(null)\n\nif (__DEV__) {\n Sticky.displayName = 'VirtualTable.Sticky'\n}\n\nexport function StickyContext(\n props: PropsWithChildren<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n columns: ColumnType<any>[]\n }>,\n) {\n const { columns, children } = props\n const { widthList } = useColumnSizes()\n\n const columnsFixedRecord = useMemo(() => {\n return columns.map((column) => {\n const key = getKey(column)\n return { key, fixed: column.fixed }\n })\n }, [columns])\n\n const stickySizes = useMemo(() => {\n let left = 0\n const leftOffset = columnsFixedRecord.reduce<number[]>((res, item, index) => {\n const { fixed, key } = item\n if (isValidFixedLeft(fixed)) {\n res[index] = left\n // eslint-disable-next-line react-compiler/react-compiler\n left += widthList.get(key) ?? 0\n }\n return res\n }, [])\n\n let right = 0\n const rightOffset = columnsFixedRecord.reduceRight((res, item, index) => {\n const { fixed, key } = item\n if (isValidFixedRight(fixed)) {\n res[index] = right\n right += widthList.get(key) ?? 0\n }\n return res\n }, [] as number[])\n\n return columnsFixedRecord.reduce((result, item, index) => {\n const { key, fixed } = item\n if (isValidFixedLeft(fixed)) {\n result.set(key, leftOffset[index])\n return result\n }\n if (isValidFixedRight(fixed)) {\n result.set(key, rightOffset[index])\n return result\n }\n return result\n }, new Map<Key, number>())\n }, [columnsFixedRecord, widthList])\n\n const shallowMemoFixedRecord = useShallowMemo(() => columnsFixedRecord)\n const shallowMemoStickySizes = useShallowMemo(() => stickySizes)\n\n const stickyState = useMemo((): StickyContextState => {\n return { size: shallowMemoStickySizes, fixed: shallowMemoFixedRecord }\n }, [shallowMemoFixedRecord, shallowMemoStickySizes])\n\n return (\n <Sticky.Provider value={stickyState}>\n {children}\n </Sticky.Provider>\n )\n}\n\nexport function useTableSticky() {\n const context = useContext(Sticky)\n if (context == null) {\n throw new Error('useTableSticky provider not found')\n }\n return context\n}\n","import type { ReactNode } from 'react'\nimport type { MergedMiddlewareRender } from './types'\n\ntype RenderOptions<T> = T extends ((children: ReactNode, options: infer Opt) => ReactNode) ? Opt : object\n\nexport function pipelineRender<T extends MergedMiddlewareRender>(\n node: ReactNode,\n render: T | undefined,\n options: RenderOptions<T>,\n): ReactNode {\n if (typeof render === 'function') {\n // @ts-expect-error: There is no way to declare the type correctly, but it works at runtime.\n return render(node, options)\n }\n return node\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { DetailedHTMLProps, HTMLAttributes, ReactElement } from 'react'\nimport type { MiddlewareRenderCell } from './pipeline/types'\nimport type { AnyObject, ColumnType } from './types'\nimport clsx from 'clsx'\nimport { memo } from 'react'\nimport { useTableSticky } from './context/sticky'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport { getKey } from './utils/get-key'\nimport { isValidFixed, isValidFixedLeft, isValidFixedRight } from './utils/verification'\n\ntype NativeProps = DetailedHTMLProps<\n HTMLAttributes<HTMLTableCellElement>,\n HTMLTableCellElement\n>\n\nexport interface CellProps<T> extends Omit<NativeProps, 'children'> {\n column: ColumnType<T>\n rowIndex: number\n rowData: T\n renderCell?: MiddlewareRenderCell\n}\n\nfunction getTableCellContent<T extends AnyObject>(\n index: number,\n data: T,\n column: ColumnType<any>,\n): any {\n const { render } = column\n const rowData = data as AnyObject\n if ('dataIndex' in column) {\n const dataIndex = column.dataIndex as string\n if (typeof render !== 'function') {\n return rowData[dataIndex]\n }\n return render(rowData[dataIndex], data, index)\n }\n return render?.(data, data, index) ?? null\n}\n\nfunction Cell<T>(props: CellProps<T>) {\n const {\n className,\n style,\n column,\n rowData,\n rowIndex,\n renderCell,\n ...restProps\n } = props\n\n const { align, fixed, onCell } = column\n const key = getKey(column)\n const { size: stickySizes } = useTableSticky()\n\n const {\n className: extraClassName,\n style: extraStyle,\n colSpan,\n rowSpan,\n ...extraProps\n } = onCell?.(rowData, rowIndex) ?? {}\n\n if (colSpan === 0 || rowSpan === 0) {\n return null\n }\n\n return pipelineRender(\n <td\n {...restProps}\n {...extraProps}\n colSpan={colSpan}\n rowSpan={rowSpan}\n className={clsx(\n 'virtual-table-cell',\n align != null && `virtual-table-align-${align}`,\n isValidFixed(fixed) && 'virtual-table-sticky-cell',\n className,\n column.className,\n extraClassName,\n )}\n style={{\n ...style,\n ...extraStyle,\n left: isValidFixedLeft(fixed) ? stickySizes.get(key) : undefined,\n right: isValidFixedRight(fixed) ? stickySizes.get(key) : undefined,\n }}\n >\n {getTableCellContent(rowIndex, rowData as AnyObject, column)}\n </td>,\n renderCell,\n { column },\n )\n}\n\nexport default memo(Cell) as <T>(props: CellProps<T>) => ReactElement\n","import type { FC, Key } from 'react'\nimport type { ColumnDescriptor } from './types'\nimport { useRef } from 'react'\n\nexport interface ColgroupProps {\n columns: ColumnDescriptor[]\n onColumnSizesMeasure?: (columnSizes: Map<Key, number>) => void\n}\n\nconst Colgroup: FC<ColgroupProps> = (props) => {\n const { columns, onColumnSizesMeasure } = props\n\n const enableMeasure = onColumnSizesMeasure != null\n const columnSizes = useRef(new Map<Key, number>())\n\n return (\n <colgroup\n ref={() => {\n if (!enableMeasure) return\n onColumnSizesMeasure(columnSizes.current)\n }}\n >\n {columns.map((item) => {\n const { key } = item\n if (item.type === 'blank') {\n return <col key={key} className=\"blank\" style={{ width: item.width, color: '#f00' }} />\n }\n\n const { column } = item\n\n return (\n <col\n key={key}\n ref={(node) => {\n if (node == null || !enableMeasure) return\n columnSizes.current.set(key, node.offsetWidth)\n }}\n style={{\n width: column.width,\n minWidth: column.minWidth,\n }}\n />\n )\n })}\n </colgroup>\n )\n}\n\nexport default Colgroup\n","export type ScrollElement = HTMLElement | Window\n\nconst overflowStylePatterns = /auto|scroll|overlay|hidden/\n\nfunction isElement(node: unknown): node is Node {\n if (!(node instanceof Node)) {\n return false\n }\n const ELEMENT_NODE_TYPE = 1\n return node.nodeType === ELEMENT_NODE_TYPE\n}\n\nexport function getScrollParent(\n el: Element,\n root: ScrollElement | null | undefined = window,\n): ScrollElement {\n let node = el\n\n while (node !== root && isElement(node)) {\n if (node === document.body) {\n return root as HTMLElement\n }\n const { overflow, overflowY, overflowX } = window.getComputedStyle(node)\n if (overflowStylePatterns.test(overflow + overflowY + overflowX)) {\n return node as HTMLElement\n }\n node = node.parentNode as Element\n }\n return el.ownerDocument.defaultView ?? window\n}\n\nexport function isWindow(arg: unknown): arg is Window {\n return Object.prototype.toString.call(arg) === '[object Window]'\n}\n\nexport function isDocument(arg: unknown): arg is Document {\n return Object.prototype.toString.call(arg) === '[object HTMLDocument]'\n}\n\nexport function isRoot(arg: unknown): arg is HTMLElement {\n return Object.prototype.toString.call(arg) === '[object HTMLHtmlElement]'\n}\n\nexport function getScrollElement(el: unknown): Element {\n if (isDocument(el)) {\n return el.scrollingElement!\n }\n if (isElement(el)) {\n return el as Element\n }\n return document.scrollingElement!\n}\n","import type { RefObject } from 'react'\nimport type { ScrollElement } from '../../utils/dom'\nimport { useLayoutEffect, useRef, useState } from 'react'\nimport { isWindow } from '../../utils/dom'\n\nexport interface CalcSizeOptions {\n getScroller: () => ScrollElement | undefined\n root: RefObject<HTMLDivElement>\n}\n\nexport function useCalcSize(options: CalcSizeOptions) {\n const { getScroller, root } = options\n\n const [scrollContainerWidth, setScrollContainerWidth] = useState(0)\n const [scrollContainerHeight, setScrollContainerHeight] = useState(0)\n\n const [tableWidth, setTableWidth] = useState(0)\n const [tableHeight, setTableHeight] = useState(0)\n\n const scrollerContainerRef = useRef<HTMLElement | null>(null)\n\n useLayoutEffect(() => {\n const scrollerContainer = getScroller()\n if (scrollerContainer == null) return\n let scroller: HTMLElement\n if (isWindow(scrollerContainer)) {\n scroller = document.scrollingElement as HTMLElement\n } else {\n scroller = scrollerContainer\n }\n scrollerContainerRef.current = scroller\n const observer = new ResizeObserver((entries) => {\n const { width, height } = entries[0].contentRect\n setScrollContainerWidth(width)\n setScrollContainerHeight(height)\n })\n observer.observe(scroller)\n return () => {\n observer.disconnect()\n }\n }, [getScroller])\n\n useLayoutEffect(() => {\n const node = root.current\n if (node == null) return\n const observer = new ResizeObserver((entries) => {\n const { width, height } = entries[0].contentRect\n setTableWidth(width)\n setTableHeight(height)\n })\n observer.observe(node)\n return () => {\n observer.disconnect()\n }\n }, [root])\n\n return {\n scrollContainerWidth,\n scrollContainerHeight,\n tableWidth,\n tableHeight,\n }\n}\n","import type { PropsWithChildren } from 'react'\nimport type { CalcSizeOptions } from '../hooks/useCalcSize'\nimport { createContext, useContext, useMemo } from 'react'\nimport { useCalcSize } from '../hooks/useCalcSize'\n\nexport interface ContainerSizeState {\n scrollContainerWidth: number\n scrollContainerHeight: number\n tableWidth: number\n tableHeight: number\n}\n\nconst ContainerSize = createContext<ContainerSizeState | null>(null)\n\nexport function ContainerSizeContext(props: PropsWithChildren<CalcSizeOptions>) {\n const { getScroller, root, children } = props\n\n const {\n scrollContainerHeight,\n scrollContainerWidth,\n tableHeight,\n tableWidth,\n } = useCalcSize({ getScroller, root })\n\n const state = useMemo((): ContainerSizeState => {\n return {\n scrollContainerWidth,\n scrollContainerHeight,\n tableWidth,\n tableHeight,\n }\n }, [scrollContainerWidth, scrollContainerHeight, tableWidth, tableHeight])\n\n return (\n <ContainerSize.Provider value={state}>\n {children}\n </ContainerSize.Provider>\n )\n}\n\nexport function useContainerSize() {\n const context = useContext(ContainerSize)\n if (context == null) {\n throw new Error('useContainerSize provider not found')\n }\n return context\n}\n","import type { PropsWithChildren } from 'react'\nimport { createContext, useContext, useMemo, useRef } from 'react'\n\ntype Listener = (scrollLeft: number, node: HTMLElement) => void\n\nexport interface HorizontalScrollContextState {\n listen: (key: string, listener: Listener) => () => void\n notify: (key: string, options: { scrollLeft: () => number, node: HTMLElement }) => void\n}\n\nconst HorizontalScroll = createContext<HorizontalScrollContextState | null>(null)\n\nif (__DEV__) {\n HorizontalScroll.displayName = 'VirtualTable.HorizontalScroll'\n}\n\nexport function HorizontalScrollContext(props: PropsWithChildren) {\n const { children } = props\n\n const listenerMap = useRef(new Map<string, Listener>())\n const context = useMemo((): HorizontalScrollContextState => {\n const skipEvent = new Set<string>()\n return {\n listen(key, listener) {\n listenerMap.current.set(key, (scrollLeft, node) => {\n listener(scrollLeft, node)\n })\n return () => {\n listenerMap.current.delete(key)\n }\n },\n notify(key, options) {\n if (skipEvent.has(key)) {\n skipEvent.delete(key)\n return\n }\n const { scrollLeft, node } = options\n let rAF = window.requestAnimationFrame as ((fn: () => void) => void) | undefined\n if (rAF == null) {\n rAF = (fn: () => void) => {\n fn()\n }\n }\n listenerMap.current.forEach((listener, itemKey) => {\n if (key === itemKey) return\n skipEvent.add(itemKey)\n rAF(() => {\n listener(scrollLeft(), node)\n })\n })\n },\n }\n }, [])\n\n return <HorizontalScroll.Provider value={context}>{children}</HorizontalScroll.Provider>\n}\n\nexport function useHorizontalScrollContext() {\n const context = useContext(HorizontalScroll)\n\n if (context == null) {\n throw new Error('useHorizontalScrollContext provider not found')\n }\n\n return context\n}\n","import type { Key } from 'react'\nimport { createContext, useContext } from 'react'\n\nexport interface TableRowManagerContextType {\n getRowHeightList: () => number[]\n /**\n * @param index rowIndex\n * @param key 唯一的 key,用于去重\n * @param height 行高\n */\n updateRowHeight: (index: number, key: Key, height: number) => void\n}\n\nexport const TableRowManager = createContext<TableRowManagerContextType | null>(null)\n\nif (__DEV__) {\n TableRowManager.displayName = 'VirtualTable.RowManager'\n}\n\nexport function useTableRowManager() {\n const context = useContext(TableRowManager)\n if (context == null) {\n throw new Error('useTableRowManager provider not found')\n }\n return context\n}\n","import { useCallback, useLayoutEffect, useRef } from 'react'\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport function useStableFn<T extends Function>(callback: T): T {\n const fn = useRef<T | null>(null)\n useLayoutEffect(() => {\n fn.current = callback\n })\n\n const stableFn = useCallback((...args: unknown[]) => {\n return fn.current?.(...args) as unknown\n }, []) as unknown as T\n\n return stableFn\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Middleware, MiddlewareContext, MiddlewareResult } from './types'\nimport { isShallowEqual } from '../../utils/equal'\n\n/**\n * 创建中间件,内部会浅比较 options,只有 options 改变才会返回新的函数。\n */\nfunction createMiddleware<T, Args extends any[]>(\n hook: (ctx: MiddlewareContext<T>, ...args: Args) => MiddlewareResult<T>,\n): (...args: Args) => Middleware<T> {\n const cache = {\n current: null as Middleware<T> | null,\n options: null as Args | null | undefined,\n }\n\n return (...options: Args): Middleware<T> => {\n const useMiddleware: Middleware<T> = (ctx) => hook(ctx, ...options)\n\n if (isShallowEqual(options, cache.options)) {\n return cache.current ?? useMiddleware\n }\n\n cache.options = options\n cache.current = useMiddleware\n\n return useMiddleware\n }\n}\n\nexport type { MiddlewareResult }\nexport { createMiddleware }\n","import type { ReactNode } from 'react'\nimport type { OnRowType } from '../types'\nimport type { Middleware, MiddlewareContext, MiddlewareRenders, MiddlewareResult } from './types'\nimport clsx from 'clsx'\n\nexport interface Hook<T> { priority: number, hook: Middleware<T> }\nexport type UnsafeHook<T> = Middleware<T> | undefined | null | Hook<T>\n\ntype RenderFunctions<T> = {\n [K in keyof T]: (T[K])[]\n}\n\nexport function shakeUnsafeHooks<T>(hooks: UnsafeHook<T>[]): Hook<T>[] {\n if (Array.isArray(hooks)) {\n return hooks.filter((x) => {\n return x != null && (typeof x === 'function' || typeof x.hook === 'function')\n }).map((hook): Hook<T> => {\n if (typeof hook === 'function') {\n return { priority: 100, hook }\n }\n return hook!\n })\n }\n return []\n}\n\nexport class TablePipeline<T> {\n constructor() {\n this.use = this.use.bind(this)\n }\n\n hooks: Hook<T>[] = []\n\n setHooks(value: Hook<T>[]) {\n this.hooks = value\n }\n\n use(options: MiddlewareContext<T>): MiddlewareResult<T> {\n if (this.hooks.length === 0) {\n return options\n }\n\n const context: { current: MiddlewareResult<T> } = { current: options }\n\n const renderFunctionMap: RenderFunctions<Required<MiddlewareRenders>> = {\n render: [],\n renderRoot: [],\n renderContent: [],\n renderHeaderWrapper: [],\n renderHeaderRoot: [],\n renderHeader: [],\n renderHeaderRow: [],\n renderHeaderCell: [],\n renderBodyWrapper: [],\n renderBodyRoot: [],\n renderBody: [],\n renderRow: [],\n renderCell: [],\n }\n\n const rowClassNameFunctions: ((record: T, index: number) => string)[] = []\n const onRowFunctions: OnRowType<T>[] = []\n\n const hooks = this.hooks.slice()\n hooks.sort((a, b) => a.priority - b.priority)\n\n hooks.map((x) => x.hook).forEach((hook) => {\n const nextCtx = hook(context.current)\n const {\n render: _render,\n renderRoot: _renderRoot,\n renderContent: _renderContent,\n renderHeaderWrapper: _renderHeaderWrapper,\n renderHeaderRoot: _renderHeaderRoot,\n renderHeader: _renderHeader,\n renderHeaderRow: _renderHeaderRow,\n renderHeaderCell: _renderHeaderCell,\n renderBodyWrapper: _renderBodyWrapper,\n renderBodyRoot: _renderBodyRoot,\n renderBody: _renderBody,\n renderRow: _renderRow,\n renderCell: _renderCell,\n\n rowClassName,\n onRow,\n ...rest\n } = nextCtx\n\n Object.entries(renderFunctionMap).forEach(([key, value]) => {\n const target = nextCtx[key as keyof MiddlewareRenders]\n if (typeof target === 'function') {\n // @ts-expect-error: There is no way to declare the type correctly, but it works at runtime.\n value.push(target)\n }\n })\n\n if (typeof rowClassName === 'function') {\n rowClassNameFunctions.push(rowClassName)\n }\n if (typeof onRow === 'function') {\n onRowFunctions.push(onRow)\n }\n context.current = rest\n })\n\n Object.entries(renderFunctionMap).forEach(([key, renders]) => {\n if (renders.length > 0) {\n context.current[key as keyof MiddlewareRenders] = (children, args) => {\n // reduce 把 [render1, render2] 转为 render1(render2(children))\n return renders.reduce<ReactNode>((node, render) => {\n // @ts-expect-error: There is no way to declare the type correctly, but it works at runtime.\n return render(node, args)\n }, children)\n }\n }\n })\n\n if (rowClassNameFunctions.length > 0) {\n context.current.rowClassName = (record, index) => {\n return clsx(...rowClassNameFunctions.map((fn) => fn(record, index)))\n }\n }\n\n if (onRowFunctions.length > 0) {\n context.current.onRow = (record, index) => {\n return onRowFunctions.reduce((result, item) => {\n return { ...result, ...item(record, index) }\n }, {})\n }\n }\n\n return context.current\n }\n\n static defaultPipeline = new TablePipeline()\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Hook } from './table-pipeline'\nimport type { Middleware } from './types'\nimport { useMemo } from 'react'\nimport { shallowEqualArrays } from '../../utils/equal'\nimport { shakeUnsafeHooks, TablePipeline } from './table-pipeline'\n\nexport interface UseTablePipelineOptions<T = any> {\n pipeline?: TablePipeline<T>\n use?: (Middleware<T> | Hook<T>)[]\n}\n\nexport { TablePipeline }\nexport type { Hook }\n\nexport function useTablePipeline<T = any>(options: UseTablePipelineOptions<T>) {\n const { use, pipeline: extraPipeline } = options\n\n const cached = useMemo(() => ({ current: new TablePipeline<T>() }), [])\n\n if (use != null) {\n const nextHooks = shakeUnsafeHooks([...use, ...(extraPipeline?.hooks ?? [])])\n\n if (!shallowEqualArrays(cached.current.hooks, nextHooks)) {\n const pipeline = new TablePipeline<T>()\n pipeline.setHooks(nextHooks)\n cached.current = pipeline\n return pipeline\n }\n }\n\n return cached.current\n}\n","export function findLastIndex<T>(\n arr: T[],\n predicate: (value: T, index: number) => boolean,\n) {\n let result = -1\n for (let i = 0; i < arr.length; i += 1) {\n if (predicate(arr[i], i)) {\n result = i\n }\n }\n return result\n}\n","import type { DetailedHTMLProps, HTMLAttributes, ReactElement } from 'react'\nimport type { MiddlewareRenderCell, MiddlewareRenderRow } from './pipeline/types'\nimport type { InnerColumnDescriptor, OnRowType } from './types'\nimport clsx from 'clsx'\nimport { memo } from 'react'\nimport { findLastIndex } from '../utils/find-last-index'\nimport Cell from './cell'\nimport { useTableRowManager } from './context/row-manager'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport { isValidFixedLeft, isValidFixedRight } from './utils/verification'\n\ntype NativeProps = DetailedHTMLProps<\n HTMLAttributes<HTMLTableRowElement>,\n HTMLTableRowElement\n>\n\nexport interface RowProps<T> extends Omit<NativeProps, 'children'> {\n rowIndex: number\n rowData: T\n columns: InnerColumnDescriptor<T>\n onRow?: OnRowType<T>\n renderRow?: MiddlewareRenderRow\n renderCell?: MiddlewareRenderCell\n}\n\nfunction Row<T>(props: RowProps<T>) {\n const {\n className,\n rowIndex,\n rowData,\n columns: columnDescriptor,\n onRow,\n renderRow,\n renderCell,\n ...rest\n } = props\n\n const { updateRowHeight } = useTableRowManager()\n\n const { columns, descriptor } = columnDescriptor\n\n const lastFixedLeftColumnIndex = findLastIndex(descriptor, (x) => {\n if (x.type === 'blank') {\n return false\n }\n return isValidFixedLeft(x.column.fixed)\n })\n const firstFixedRightColumnIndex = descriptor.findIndex((x) => {\n if (x.type === 'blank') {\n return false\n }\n return isValidFixedRight(x.column.fixed)\n })\n\n const { className: extraClassName, ...extraProps } = onRow?.(rowData, rowIndex) ?? {}\n\n return pipelineRender(\n <tr\n {...rest}\n {...extraProps}\n className={clsx('virtual-table-row', className, extraClassName)}\n ref={(node) => {\n if (node == null) return\n // 小心陷阱:当 table 父元素为 display: none 时,依然会触发 updateRowHeight 函数,并设置高度为 0\n updateRowHeight(rowIndex, rowIndex, node.offsetHeight)\n }}\n >\n {descriptor.map((item, index) => {\n const { key } = item\n if (item.type === 'blank') {\n return <td key={key} />\n }\n const { column } = item\n return (\n <Cell\n key={key}\n className={clsx(\n lastFixedLeftColumnIndex === index && 'virtual-table-cell-fix-left-last',\n firstFixedRightColumnIndex === index\n && 'virtual-table-cell-fix-right-first',\n )}\n column={column}\n rowIndex={rowIndex}\n rowData={rowData}\n renderCell={renderCell}\n />\n )\n })}\n </tr>,\n renderRow,\n { columns, rowIndex, rowData, columnDescriptor: descriptor },\n )\n}\n\nexport default memo(Row) as <T>(props: RowProps<T>) => ReactElement\n","import type { MutableRefObject, Ref } from 'react'\nimport { useCallback } from 'react'\n\ntype PossibleRef<T> = Ref<T> | undefined\n\nexport function assignRef<T>(ref: PossibleRef<T>, value: T) {\n if (typeof ref === 'function') {\n ref(value)\n } else if (typeof ref === 'object' && ref !== null && 'current' in ref) {\n (ref as MutableRefObject<T>).current = value\n }\n}\n\nexport function mergeRefs<T>(...refs: PossibleRef<T>[]) {\n return (node: T | null) => {\n refs.forEach((ref) => assignRef(ref, node))\n }\n}\n\nexport function useMergedRef<T>(...refs: PossibleRef<T>[]) {\n // eslint-disable-next-line react-compiler/react-compiler\n return useCallback(mergeRefs(...refs), refs)\n}\n","import { isWindow } from '../../utils/dom'\n\ninterface ResizeRect {\n width: number\n height: number\n}\n\nexport function onResize(target: Window | HTMLElement, callback: (rect: ResizeRect) => void) {\n if (isWindow(target)) {\n const listener = () => {\n callback({\n width: window.innerWidth,\n height: window.innerHeight,\n })\n }\n listener()\n window.addEventListener('resize', listener)\n return () => {\n window.removeEventListener('resize', listener)\n }\n } else {\n const observer = new ResizeObserver((entries) => {\n const rect = entries[0].contentRect\n callback({ width: rect.width, height: rect.height })\n })\n observer.observe(target)\n return () => {\n observer.disconnect()\n }\n }\n}\n","/* eslint-disable react-compiler/react-compiler */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { ScrollElement } from '../../utils/dom'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport { getScrollElement, isRoot, isWindow } from '../../utils/dom'\nimport { onResize } from '../utils/on-resize'\n\nexport interface RowRect {\n index: number\n height: number\n top: number\n bottom: number\n}\n\ninterface UseRowVirtualizeOptions<T = any> {\n getOffsetTop: () => number\n dataSource: T[]\n getScroller: () => ScrollElement | undefined\n estimateSize: number\n overscan: number\n}\n\nfunction anchorQuery(rects: RowRect[], scrollTop: number) {\n let left = 0\n let right = rects.length - 1\n let index = -1\n\n while (left <= right) {\n const mid = Math.floor((left + right) / 2)\n\n if (rects[mid].bottom > scrollTop) {\n index = mid\n right = mid - 1\n } else {\n left = mid + 1\n }\n }\n\n if (index === -1) {\n return undefined\n }\n\n return rects[index]\n}\n\nexport function useRowVirtualize<T = any>(options: UseRowVirtualizeOptions<T>) {\n const {\n getOffsetTop,\n dataSource: rawData,\n getScroller,\n estimateSize,\n overscan,\n } = options\n\n const [startIndex, setStartIndex] = useState(0)\n const [endIndex, setEndIndex] = useState(0)\n\n const dataSlice = useMemo(() => {\n return rawData.slice(startIndex, endIndex)\n }, [rawData, startIndex, endIndex])\n\n // 行高信息(先填充预估高度,DOM渲染后再更新成实际高度)\n const rowHeights = useRef<number[]>([])\n const fillRowHeights = () => {\n const len = rawData.length\n for (let i = 0; i < len; i++) {\n const target = rowHeights.current[i] as number | undefined\n // 由于 fillRowHeights 是在渲染阶段调用,防止重复渲染时 estimateSize 覆盖了真实 DOM 的高度\n if (target == null) {\n rowHeights.current[i] = estimateSize\n }\n }\n rowHeights.current = rowHeights.current.slice(0, len)\n }\n fillRowHeights()\n\n // 布局信息(也就是锚点元素需要的信息,top,bottom,height,index)\n const rowRects = useRef<RowRect[]>([])\n const updateRowRectList = (shouldSkip = false) => {\n if (shouldSkip && rowRects.current.length > 0) {\n return\n }\n const { rects } = rowHeights.current.reduce((result, height, index) => {\n const nextTop = result.top + height\n result.rects.push({\n index,\n top: result.top,\n height,\n bottom: nextTop,\n })\n result.top = nextTop\n return result\n }, { top: 0, rects: [] as RowRect[] })\n rowRects.current = rects\n }\n\n const setRowHeight = (index: number, height: number) => {\n rowHeights.current[index] = height\n }\n\n // 锚点元素,当前虚拟列表中,最接近滚动容器顶部的元素\n const anchorRef = useRef<RowRect>({\n index: 0,\n height: estimateSize,\n top: 0,\n bottom: estimateSize,\n })\n\n // 用来判断滚动方向\n const scrollTopRef = useRef(0)\n const initial = useRef(false)\n useEffect(() => {\n const container = getScroller()\n if (container == null) return\n\n let count = 0\n\n const getScrollTop = () => {\n const offsetTop = getOffsetTop()\n let result = 0\n if (isWindow(container) || isRoot(container)) {\n result = window.scrollY\n } else {\n const element = getScrollElement(container)\n result = element.scrollTop\n }\n return Math.max(result - offsetTop, 0)\n }\n\n const calcCount = (scrollerContainerHeight: number) => {\n const prevCount = count\n count = Math.ceil(scrollerContainerHeight / estimateSize)\n return { prevCount }\n }\n\n const updateBoundary = (scrollTop: number) => {\n const anchor = anchorQuery(rowRects.current, scrollTop)\n if (anchor != null) {\n anchorRef.current = anchor\n setStartIndex(Math.max(0, anchor.index - overscan))\n setEndIndex(anchor.index + count + overscan)\n }\n }\n\n const onScroll = (e: Event) => {\n const offsetTop = getOffsetTop()\n const scrollElement = getScrollElement(e.target)\n const scrollTop = Math.max(0, scrollElement.scrollTop - offsetTop)\n\n // 是否为向下滚动\n const isScrollDown = scrollTop > scrollTopRef.current\n\n if (isScrollDown) {\n // 如果滚动距离比较小,没有超出锚点元素的边界,就不需要计算 startIndex、endIndex 了\n if (scrollTop > anchorRef.current.bottom) {\n updateBoundary(scrollTop)\n }\n } else {\n if (scrollTop < anchorRef.current.top) {\n updateBoundary(scrollTop)\n }\n }\n\n scrollTopRef.current = scrollTop\n }\n\n let prevHeight = 0\n const stopListen = onResize(container, (rect) => {\n // 处理父元素 display:none 容器高度丢失,导致显示 row 不准确\n if (rect.height === prevHeight || rect.height === 0) {\n return\n }\n prevHeight = rect.height\n calcCount(rect.height)\n const scrollTop = getScrollTop()\n if (!initial.current) {\n initial.current = true\n let nextStartIndex = 0\n // 判断一下当前滚动位置,计算 startIndex(场景:SPA 页面切换且渲染非异步数据)\n if (scrollTop >= estimateSize) {\n nextStartIndex = Math.max(Math.floor(scrollTop / estimateSize) - 1 - overscan, 0)\n }\n const nextEndIndex = nextStartIndex + count + overscan\n setStartIndex(nextStartIndex)\n setEndIndex(nextEndIndex)\n } else {\n updateBoundary(scrollTop)\n }\n })\n\n container.addEventListener('scroll', onScroll)\n return () => {\n stopListen()\n container.removeEventListener('scroll', onScroll)\n }\n }, [estimateSize, getOffsetTop, getScroller, overscan])\n\n const sum = (startIndex: number, endIndex?: number) => {\n return rowHeights.current.slice(startIndex, endIndex).reduce((a, b) => a + b, 0)\n }\n // TODO: React Compiler 测试 topBlank 和 bottomBlank\n const topBlank = sum(0, startIndex)\n const bottomBlank = sum(endIndex)\n\n return {\n startIndex,\n endIndex,\n\n rowHeightList: rowHeights,\n updateRowRectList,\n setRowHeight,\n\n topBlank,\n bottomBlank,\n\n dataSlice,\n }\n}\n","import type { CSSProperties, Key, Ref } from 'react'\nimport type { ScrollElement } from '../utils/dom'\nimport type { TableRowManagerContextType } from './context/row-manager'\nimport type { NecessaryProps } from './internal'\nimport type {\n MiddlewareRenderBody,\n MiddlewareRenderBodyRoot,\n MiddlewareRenderBodyWrapper,\n} from './pipeline/types'\nimport type { RowProps } from './row'\nimport type { AnyObject, InnerColumnDescriptor } from './types'\nimport clsx from 'clsx'\nimport { useCallback, useEffect, useMemo, useRef } from 'react'\nimport { isShallowEqual } from '../utils/equal'\nimport { useMergedRef } from '../utils/ref'\nimport Colgroup from './colgroup'\nimport { useColumnSizes } from './context/column-sizes'\nimport { useHorizontalScrollContext } from './context/horizontal-scroll'\nimport { TableRowManager } from './context/row-manager'\nimport { useRowVirtualize } from './hooks/useRowVirtualize'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport Row from './row'\n\nexport interface TableBodyProps<T>\n extends Omit<NecessaryProps<T>, 'columns'>,\n Pick<RowProps<T>, 'onRow' | 'renderRow' | 'renderCell'> {\n className?: string\n style?: CSSProperties\n columns: InnerColumnDescriptor<T>\n bodyWrapperRef?: Ref<HTMLDivElement>\n bodyRootRef?: Ref<HTMLTableElement>\n bodyRef?: Ref<HTMLTableSectionElement>\n overscan: number\n estimateSize: number\n getOffsetTop: () => number\n getScroller: () => ScrollElement | undefined\n rowClassName?: (record: T, index: number) => string\n renderBodyWrapper?: MiddlewareRenderBodyWrapper\n renderBodyRoot?: MiddlewareRenderBodyRoot\n renderBody?: MiddlewareRenderBody\n}\n\nfunction TableBody<T>(props: TableBodyProps<T>) {\n const {\n bodyWrapperRef,\n bodyRootRef,\n bodyRef,\n className,\n style,\n dataSource: rawData,\n columns: columnDescriptor,\n rowKey,\n\n overscan,\n estimateSize,\n\n getScroller,\n getOffsetTop,\n\n rowClassName,\n onRow,\n renderBodyWrapper,\n renderBodyRoot,\n renderBody,\n renderRow,\n renderCell,\n } = props\n\n const {\n startIndex,\n dataSlice: dataSource,\n setRowHeight,\n updateRowRectList,\n rowHeightList,\n topBlank,\n bottomBlank,\n } = useRowVirtualize({\n getOffsetTop,\n dataSource: rawData,\n getScroller,\n estimateSize,\n overscan,\n })\n\n const rowHeights = useRef(new Map<number, Map<Key, number>>())\n const updateRowHeight = useCallback((index: number, key: Key, height: number) => {\n const target = rowHeights.current.get(index) ?? new Map<Key, number>()\n target.set(key, height)\n rowHeights.current.set(index, target)\n }, [])\n\n const rowManageState = useMemo<TableRowManagerContextType>(() => {\n return { updateRowHeight, getRowHeightList: () => rowHeightList.current }\n }, [rowHeightList, updateRowHeight])\n\n const { columns, descriptor } = columnDescriptor\n const tbodyRef = useMergedRef(bodyRef, (elm) => {\n if (elm == null) return\n\n const bodyHeight = elm.offsetHeight\n if (bodyHeight === 0) return\n\n const heights = rowHeights.current\n heights.forEach((row, rowIndex) => {\n const height = [...row.values()].reduce((res, x) => res + x, 0)\n setRowHeight(rowIndex, height)\n })\n updateRowRectList()\n rowHeights.current.clear()\n })\n\n const bodyNode = pipelineRender(\n <tbody ref={tbodyRef}>\n {dataSource.map((e, rowIndex) => {\n const _rowKey = (e as AnyObject)[rowKey as string]\n return (\n <Row\n key={_rowKey}\n className={clsx(rowClassName?.(e, rowIndex))}\n rowIndex={rowIndex + startIndex}\n rowData={e}\n columns={columnDescriptor}\n onRow={onRow}\n renderRow={renderRow}\n renderCell={renderCell}\n />\n )\n })}\n </tbody>,\n renderBody,\n { columns, columnDescriptor: descriptor },\n )\n\n const { widthList, setWidthList } = useColumnSizes()\n const onColumnSizesMeasure = useCallback((columnSizes: Map<Key, number>) => {\n if (!isShallowEqual(widthList, columnSizes)) {\n setWidthList(new Map(columnSizes))\n }\n }, [setWidthList, widthList])\n\n const tableNode = pipelineRender(\n <table\n className={clsx(className, 'virtual-table-body')}\n style={{ ...style, paddingBottom: bottomBlank, paddingTop: topBlank }}\n ref={bodyRootRef}\n >\n <Colgroup\n columns={descriptor}\n onColumnSizesMeasure={onColumnSizesMeasure}\n />\n {bodyNode}\n </table>,\n renderBodyRoot,\n { columns, columnDescriptor: descriptor },\n )\n\n const { listen, notify } = useHorizontalScrollContext()\n const wrapperRef = useRef<HTMLDivElement>(null)\n useEffect(() => {\n const node = wrapperRef.current\n if (node == null) return\n\n const key = 'virtual-table-body'\n const onScroll = () => {\n notify(key, { scrollLeft: () => node.scrollLeft, node })\n }\n const dispose = listen(key, (scrollLeft) => {\n node.scrollLeft = scrollLeft\n })\n node.addEventListener('scroll', onScroll)\n return () => {\n node.removeEventListener('scroll', onScroll)\n dispose()\n }\n }, [listen, notify])\n\n const mergedRef = useMergedRef(wrapperRef, bodyWrapperRef)\n\n return (\n <TableRowManager.Provider value={rowManageState}>\n {pipelineRender(\n <div\n ref={mergedRef}\n className=\"virtual-table-body-wrapper\"\n >\n {tableNode}\n </div>,\n renderBodyWrapper,\n { columns, columnDescriptor: descriptor },\n )}\n </TableRowManager.Provider>\n )\n}\n\nexport default TableBody\n","import type { CSSProperties, FC, RefObject } from 'react'\nimport type {\n MiddlewareRenderHeader,\n MiddlewareRenderHeaderCell,\n MiddlewareRenderHeaderRoot,\n MiddlewareRenderHeaderRow,\n MiddlewareRenderHeaderWrapper,\n} from './pipeline/types'\nimport type { InnerColumnDescriptor } from './types'\nimport clsx from 'clsx'\nimport { createElement, Fragment, useEffect, useRef } from 'react'\nimport { findLastIndex } from '../utils/find-last-index'\nimport { useMergedRef } from '../utils/ref'\nimport Colgroup from './colgroup'\nimport { useColumnSizes } from './context/column-sizes'\nimport { useHorizontalScrollContext } from './context/horizontal-scroll'\nimport { useTableSticky } from './context/sticky'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport { getKey } from './utils/get-key'\nimport { isValidFixed, isValidFixedLeft, isValidFixedRight } from './utils/verification'\n\nexport interface TableHeaderProps {\n className?: string\n style?: CSSProperties\n\n wrapperRef?: RefObject<HTMLDivElement>\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n columns: InnerColumnDescriptor<any>\n\n /** 开启表头 sticky,设置为 true 则默认 top 为 0,为 number 则是偏移量 */\n stickyHeader?: number | boolean\n\n renderHeaderWrapper?: MiddlewareRenderHeaderWrapper\n renderHeaderRoot?: MiddlewareRenderHeaderRoot\n renderHeader?: MiddlewareRenderHeader\n renderHeaderRow?: MiddlewareRenderHeaderRow\n renderHeaderCell?: MiddlewareRenderHeaderCell\n}\n\nconst TableHeader: FC<TableHeaderProps> = (props) => {\n const {\n className,\n style,\n wrapperRef,\n columns: columnDescriptor,\n stickyHeader,\n renderHeaderWrapper,\n renderHeaderRoot,\n renderHeader,\n renderHeaderRow,\n renderHeaderCell,\n } = props\n\n const { columns, descriptor } = columnDescriptor\n const lastColumn = columns[columns.length - 1]\n\n const { widthList } = useColumnSizes()\n const { size: stickySizes } = useTableSticky()\n\n const lastFixedLeftColumnIndex = findLastIndex(descriptor, (x) => {\n if (x.type === 'blank') {\n return false\n }\n return isValidFixedLeft(x.column.fixed)\n })\n const firstFixedRightColumnIndex = descriptor.findIndex((x) => {\n if (x.type === 'blank') {\n return false\n }\n return isValidFixedRight(x.column.fixed)\n })\n const { listen, notify } = useHorizontalScrollContext()\n\n const headerWrapperRef = useRef<HTMLDivElement>(null)\n useEffect(() => {\n const node = headerWrapperRef.current\n if (node == null) return\n const key = 'virtual-table-header'\n const onScroll = () => {\n notify(key, { scrollLeft: () => node.scrollLeft, node })\n }\n const dispose = listen(key, (scrollLeft) => {\n node.scrollLeft = scrollLeft\n })\n node.addEventListener('scroll', onScroll)\n return () => {\n node.removeEventListener('scroll', onScroll)\n dispose()\n }\n }, [listen, notify])\n\n const row = pipelineRender(\n <tr>\n {descriptor.map((item, index) => {\n const { key } = item\n if (item.type === 'blank') {\n return <th key={key} data-blank />\n }\n\n const { column } = item\n\n if (column.colSpan === 0) {\n return null\n }\n\n const isLast = getKey(lastColumn) === key\n const {\n className: thClassName,\n style: thStyle,\n ...rest\n } = column.onHeaderCell?.(column, index) ?? {}\n\n return (\n <Fragment key={key}>\n {pipelineRender(\n createElement(\n 'th',\n {\n scope: 'col',\n ...rest,\n colSpan: column.colSpan,\n className: clsx(\n 'virtual-table-header-cell',\n isLast && 'no-split',\n column.align != null && `virtual-table-align-${column.align}`,\n isValidFixed(column.fixed) && 'virtual-table-sticky-cell',\n lastFixedLeftColumnIndex === index && 'virtual-table-cell-fix-left-last',\n firstFixedRightColumnIndex === index && 'virtual-table-cell-fix-right-first',\n column.className,\n thClassName,\n ),\n style: {\n ...thStyle,\n left: isValidFixedLeft(column.fixed) ? stickySizes.get(key) : undefined,\n right: isValidFixedRight(column.fixed)\n ? stickySizes.get(key)\n : undefined,\n },\n },\n column.title,\n ),\n renderHeaderCell,\n { column, columns, columnWidths: widthList, columnDescriptor: descriptor },\n )}\n </Fragment>\n )\n })}\n </tr>,\n renderHeaderRow,\n { columns, columnDescriptor: descriptor },\n )\n\n const theadNode = pipelineRender(\n <thead className=\"virtual-table-thead\">{row}</thead>,\n renderHeader,\n { columns, columnDescriptor: descriptor },\n )\n\n const tableNode = pipelineRender(\n <table\n style={style}\n >\n <Colgroup columns={descriptor} />\n {theadNode}\n </table>,\n renderHeaderRoot,\n { columns, columnDescriptor: descriptor },\n )\n\n const mergedRef = useMergedRef(wrapperRef, headerWrapperRef)\n\n return pipelineRender(\n <div\n ref={mergedRef}\n className={clsx('virtual-table-header', className, {\n 'virtual-table-header-sticky': stickyHeader,\n })}\n style={{\n top: Number.isFinite(stickyHeader) ? (stickyHeader as number) : undefined,\n }}\n >\n {tableNode}\n </div>,\n renderHeaderWrapper,\n { columns, columnDescriptor: descriptor },\n )\n}\n\nexport default TableHeader\n","import type { Key, RefObject } from 'react'\nimport type { ColumnDescriptor, ColumnType } from '../types'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport { findLastIndex } from '../../utils/find-last-index'\nimport { getKey } from '../utils/get-key'\nimport { onResize } from '../utils/on-resize'\nimport { isValidFixedLeft, isValidFixedRight } from '../utils/verification'\nimport { useStableFn } from './useStableFn'\n\ninterface UseColumnVirtualizeOptions<T> {\n estimateSize: number\n overscan: number\n columns: ColumnType<T>[]\n bodyWrapper: RefObject<HTMLDivElement>\n columnWidths: Map<Key, number>\n disabled?: boolean\n}\n\ninterface Rect {\n index: number\n width: number\n left: number\n right: number\n}\n\nfunction anchorQuery(rects: Rect[], scrollLeft: number) {\n let left = 0\n let right = rects.length - 1\n let index = -1\n\n while (left <= right) {\n const mid = Math.floor((left + right) / 2)\n\n if (rects[mid].right > scrollLeft) {\n index = mid\n right = mid - 1\n } else {\n left = mid + 1\n }\n }\n\n if (index === -1) {\n return undefined\n }\n\n return rects[index]\n}\n\nfunction findFirstFixedRightIndex<T>(columns: ColumnType<T>[]) {\n let index = -1\n for (let i = columns.length - 1; i >= 0; i--) {\n const column = columns[i]\n if (isValidFixedRight(column.fixed)) {\n index = i\n } else {\n break\n }\n }\n return index\n}\n\nfunction findLastFixedLeftIndex<T>(columns: ColumnType<T>[]) {\n return findLastIndex(columns, (x) => isValidFixedLeft(x.fixed))\n}\n\nexport function useColumnVirtualize<T>(options: UseColumnVirtualizeOptions<T>) {\n const {\n estimateSize,\n overscan,\n columns: rawColumns,\n bodyWrapper,\n columnWidths,\n disabled = false,\n } = options\n\n const lastFixedLeftIndex = findLastFixedLeftIndex(rawColumns)\n const firstFixedRightIndex = findFirstFixedRightIndex(rawColumns)\n\n const leftKey = lastFixedLeftIndex > -1 ? getKey(rawColumns[lastFixedLeftIndex]) : null\n const rightKey = firstFixedRightIndex > -1 ? getKey(rawColumns[firstFixedRightIndex]) : null\n\n const [startIndex, setStartIndex] = useState(0)\n const [endIndex, setEndIndex] = useState(0)\n\n const rects = useMemo(() => {\n if (disabled) {\n return []\n }\n let left = 0\n return rawColumns.map((column, index): Rect => {\n const key = getKey(column)\n const width = columnWidths.get(key) ?? estimateSize\n const right = left + width\n const rect: Rect = {\n index,\n width,\n left,\n right,\n }\n\n left = right\n return rect\n })\n }, [rawColumns, columnWidths, estimateSize, disabled])\n\n // 锚点元素\n const anchorRef = useRef<Rect>({\n index: 0,\n width: estimateSize,\n left: 0,\n right: estimateSize,\n })\n\n const findAnchorRef = useStableFn((scrollLeft: number) => {\n return anchorQuery(rects, scrollLeft)\n })\n\n const updateBoundary = useStableFn((scrollLeft: number, count: number) => {\n const anchor = findAnchorRef(scrollLeft)\n if (anchor != null) {\n anchorRef.current = anchor\n setStartIndex(Math.max(0, anchor.index - overscan))\n setEndIndex(anchor.index + count + overscan)\n }\n })\n\n // 用来判断滚动方向\n const scrollLeftRef = useRef(0)\n useEffect(() => {\n if (disabled) return\n\n const scrollContainer = bodyWrapper.current\n if (scrollContainer == null) return\n\n const containerWidth = scrollContainer.offsetWidth\n let count = Math.ceil(containerWidth / estimateSize)\n\n const onScroll = () => {\n const scrollLeft = scrollContainer.scrollLeft\n // 滚动条向右移动(界面向左运动)\n const isScrollRight = scrollLeft > scrollLeftRef.current\n if (isScrollRight) {\n if (scrollLeft > anchorRef.current.right) {\n updateBoundary(scrollLeft, count)\n }\n } else {\n if (scrollLeft < anchorRef.current.left) {\n updateBoundary(scrollLeft, count)\n }\n }\n\n scrollLeftRef.current = scrollLeft\n }\n\n scrollContainer.addEventListener('scroll', onScroll)\n\n let prevWidth = 0\n const stop = onResize(scrollContainer, ({ width }) => {\n if (width === prevWidth || width === 0) {\n return\n }\n prevWidth = width\n const scrollLeft = scrollContainer.scrollLeft\n count = Math.ceil(width / estimateSize)\n updateBoundary(scrollLeft, count)\n })\n return () => {\n scrollContainer.removeEventListener('scroll', onScroll)\n stop()\n }\n }, [bodyWrapper, estimateSize, updateBoundary, overscan, findAnchorRef, disabled])\n\n const sum = (startIndex: number, endIndex?: number) => {\n return rects.slice(startIndex, endIndex).reduce((a, b) => a + b.width, 0)\n }\n\n const fixedLeftWidth = lastFixedLeftIndex > -1 ? sum(0, lastFixedLeftIndex + 1) : 0\n const fixedRightWidth = firstFixedRightIndex > -1 ? sum(firstFixedRightIndex) : 0\n\n // 设置 column.fixed 时,对应列将不会虚拟化,所以 blank 需要去除这些列的宽度\n const leftBlank = Math.max(0, sum(0, startIndex) - fixedLeftWidth)\n const rightBlank = Math.max(0, sum(endIndex) - fixedRightWidth)\n\n const columnSlice = useMemo(() => {\n if (disabled) {\n return rawColumns\n }\n const result = [\n ...rawColumns.slice(0, lastFixedLeftIndex + 1),\n ...rawColumns.slice(startIndex, endIndex),\n ...rawColumns.slice(firstFixedRightIndex),\n ]\n const unionKey = new Set<Key>()\n return result.filter((column) => {\n const key = getKey(column)\n if (unionKey.has(key)) {\n return false\n }\n unionKey.add(key)\n return true\n })\n }, [disabled, rawColumns, startIndex, endIndex, lastFixedLeftIndex, firstFixedRightIndex])\n\n const descriptor = useMemo(() => {\n return columnSlice.reduce<ColumnDescriptor<T>[]>((result, column, index) => {\n const key = getKey(column)\n if (key === leftKey) {\n result.push({ type: 'normal', key, column })\n result.push({ type: 'blank', key: '_blank_left', width: leftBlank })\n } else if (leftKey == null && index === 0) {\n result.push({ type: 'blank', key: '_blank_left', width: leftBlank })\n result.push({ type: 'normal', key, column })\n } else if (key === rightKey) {\n result.push({ type: 'blank', key: '_blank_right', width: rightBlank })\n result.push({ type: 'normal', key, column })\n } else if (rightKey == null && index === columnSlice.length - 1) {\n result.push({ type: 'normal', key, column })\n result.push({ type: 'blank', key: '_blank_right', width: rightBlank })\n } else {\n result.push({ type: 'normal', key, column })\n }\n return result\n }, [])\n }, [columnSlice, leftKey, rightKey, leftBlank, rightBlank])\n\n const columns = useMemo(() => {\n return { columns: columnSlice, descriptor }\n }, [columnSlice, descriptor])\n\n return { columns, columnSlice, lastFixedLeftIndex, firstFixedRightIndex }\n}\n","import type { CSSProperties, ForwardedRef, ReactNode, RefObject } from 'react'\nimport type { PipelineRender } from './pipeline/types'\nimport clsx from 'clsx'\nimport { forwardRef, useEffect, useRef, useState } from 'react'\nimport { useMergedRef } from '../utils/ref'\nimport { useHorizontalScrollContext } from './context/horizontal-scroll'\nimport { pipelineRender } from './pipeline/render-pipeline'\n\nexport interface TableRootProps {\n className?: string\n style?: CSSProperties\n children?: ReactNode\n hasFixedLeftColumn?: boolean\n hasFixedRightColumn?: boolean\n bodyScrollContainer: RefObject<HTMLElement>\n renderRoot?: PipelineRender\n}\n\nfunction TableRoot(props: TableRootProps, ref: ForwardedRef<HTMLDivElement>) {\n const {\n className,\n style,\n children,\n hasFixedLeftColumn,\n hasFixedRightColumn,\n renderRoot,\n bodyScrollContainer,\n } = props\n\n const rootNode = useRef<HTMLDivElement>(null)\n\n const [hasFixedLeft, setHasFixedLeft] = useState(false)\n const [hasFixedRight, setHasFixedRight] = useState(false)\n\n const { listen } = useHorizontalScrollContext()\n useEffect(() => {\n if (!hasFixedLeftColumn && !hasFixedRightColumn) {\n return\n }\n const onCheckHasFixedEdge = (node: HTMLElement) => {\n const { scrollLeft, clientWidth, scrollWidth } = node\n if (hasFixedLeftColumn) {\n setHasFixedLeft(scrollLeft !== 0)\n }\n if (hasFixedRightColumn) {\n setHasFixedRight(!(scrollLeft + clientWidth >= scrollWidth))\n }\n }\n const node = bodyScrollContainer.current\n if (node != null) {\n onCheckHasFixedEdge(node)\n }\n return listen('__root', (_scrollLeft, node) => {\n onCheckHasFixedEdge(node)\n })\n }, [bodyScrollContainer, hasFixedLeftColumn, hasFixedRightColumn, listen])\n\n const mergedRef = useMergedRef(ref, rootNode)\n return pipelineRender(\n <div\n ref={mergedRef}\n className={clsx(\n 'virtual-table',\n hasFixedLeft && 'virtual-table-has-fix-left',\n hasFixedRight && 'virtual-table-has-fix-right',\n className,\n )}\n style={style}\n >\n {children}\n </div>,\n renderRoot,\n {},\n )\n}\n\nexport default forwardRef(TableRoot)\n","import type { CSSProperties, ForwardedRef, Key, ReactElement, Ref, RefAttributes } from 'react'\nimport type { TableBodyProps } from './body'\nimport type { TableColumnsContextType } from './context/column-sizes'\nimport type { NecessaryProps } from './internal'\nimport type { ColumnDescriptor, OnRowType } from './types'\nimport clsx from 'clsx'\nimport {\n forwardRef,\n memo,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { getScrollParent, isRoot, isWindow } from '../utils/dom'\nimport { useMergedRef } from '../utils/ref'\nimport TableBody from './body'\nimport { ColumnSizes } from './context/column-sizes'\nimport { ContainerSizeContext } from './context/container-size'\nimport { HorizontalScrollContext } from './context/horizontal-scroll'\nimport { StickyContext } from './context/sticky'\nimport TableHeader from './header'\nimport { useColumnVirtualize } from './hooks/useColumnVirtualize'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport { TablePipeline } from './pipeline/useTablePipeline'\nimport TableRoot from './root'\nimport { getKey } from './utils/get-key'\nimport { isValidFixedLeft, isValidFixedRight } from './utils/verification'\n\nexport interface VirtualTableCoreProps<T>\n extends NecessaryProps<T>,\n Pick<TableBodyProps<T>, 'rowClassName' | 'onRow'> {\n bodyRootRef?: Ref<HTMLTableElement>\n\n className?: string\n style?: CSSProperties\n\n tableBodyClassName?: string\n tableBodyStyle?: CSSProperties\n\n /** 开启表头 sticky,设置为 true 则默认 top 为 0,为 number 则是偏移量 */\n stickyHeader?: number | boolean\n\n /** 预计每列宽度,需要横向虚拟化时,设置它 */\n estimatedColumnWidth?: number\n /** 预计每行高度 @default 46 */\n estimatedRowHeight?: number\n /** 在头和尾额外渲染多少行 @default 5 */\n overscanRows?: number\n /** 横向虚拟化时,在头和尾额外渲染多少列 @default 3 */\n overscanColumns?: number\n\n /** 开启表头虚拟滚动 @default true */\n virtualHeader?: boolean\n\n pipeline?: TablePipeline<T>\n\n getOffsetTop?: () => number\n}\n\nfunction VirtualTableCore<T>(\n props: VirtualTableCoreProps<T>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const {\n bodyRootRef,\n className,\n style,\n tableBodyClassName,\n tableBodyStyle,\n columns: rawColumns,\n dataSource: rawData,\n rowKey: rawRowKey = 'key',\n estimatedRowHeight = 46,\n estimatedColumnWidth,\n overscanRows = 5,\n overscanColumns = 3,\n stickyHeader,\n pipeline = (TablePipeline.defaultPipeline as TablePipeline<T>),\n rowClassName: rawRowClassName,\n onRow,\n getOffsetTop: getOffsetTopImpl,\n virtualHeader = true,\n } = props\n\n const rootNode = useRef<HTMLDivElement>(null)\n\n const headerWrapperRef = useRef<HTMLDivElement>(null)\n const bodyWrapperRef = useRef<HTMLDivElement>(null)\n const bodyRoot = useRef<HTMLTableElement>(null)\n const mergedBodyRootRef = useMergedRef(bodyRoot, bodyRootRef)\n const bodyRef = useRef<HTMLTableSectionElement>(null)\n\n const getScroller = useCallback(() => {\n const root = rootNode.current\n if (root == null) return\n return getScrollParent(root)\n }, [])\n\n const getOffsetTop = useCallback(() => {\n if (typeof getOffsetTopImpl === 'function') {\n return getOffsetTopImpl()\n }\n const scrollContainer = getScroller()\n if (scrollContainer === rootNode.current) {\n return 0\n }\n if (isWindow(scrollContainer) || isRoot(scrollContainer)) {\n const top = rootNode.current?.getBoundingClientRect().top ?? 0\n return window.scrollY + top\n }\n return rootNode.current?.offsetTop ?? 0\n }, [getOffsetTopImpl, getScroller])\n\n const {\n dataSource,\n columns: pipelineColumns,\n rowKey,\n rowClassName,\n\n render,\n renderRoot,\n renderContent,\n renderHeaderWrapper,\n renderHeaderRoot,\n renderHeader,\n renderHeaderRow,\n renderHeaderCell,\n renderBodyWrapper,\n renderBodyRoot,\n renderBody,\n renderRow,\n renderCell,\n\n onRow: onPipelineRow,\n } = pipeline.use({\n dataSource: rawData,\n rowKey: rawRowKey,\n columns: rawColumns,\n estimatedRowHeight,\n headerWrapperRef,\n bodyWrapperRef,\n bodyRootRef: bodyRoot,\n bodyRef,\n rootRef: rootNode,\n getOffsetTop,\n getScroller,\n })\n\n const [columnWidths, setColumnWidths] = useState(() => new Map<Key, number>())\n const columnWidthsRef = useRef(columnWidths)\n const updateColumnWidths = (value: Map<Key, number>) => {\n columnWidthsRef.current = value\n setColumnWidths(value)\n }\n\n const tableColumnsContext = useMemo<TableColumnsContextType>(() => {\n return {\n widthList: columnWidths,\n setWidthList: updateColumnWidths,\n }\n }, [columnWidths])\n\n const { columns } = useColumnVirtualize<T>({\n estimateSize: estimatedColumnWidth ?? 100,\n overscan: overscanColumns,\n columns: pipelineColumns,\n bodyWrapper: bodyWrapperRef,\n columnWidths,\n disabled: estimatedColumnWidth == null,\n })\n\n if (__DEV__) {\n pipelineColumns.forEach((column) => {\n if (column.width == null && column.minWidth == null) {\n console.warn('Missing `width` in column', column)\n }\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (getKey(column) == null) {\n console.error('Missing `dataIndex` or `key` in column', column)\n }\n })\n }\n\n const onRowClassName = useCallback((record: T, index: number) => {\n return clsx(rawRowClassName?.(record, index), rowClassName?.(record, index))\n }, [rawRowClassName, rowClassName])\n\n const onRowProps: OnRowType<T> = useCallback((record, index) => {\n return { ...onRow?.(record, index), ...onPipelineRow?.(record, index) }\n }, [onPipelineRow, onRow])\n\n const hasFixedLeftColumn = pipelineColumns.some((x) => isValidFixedLeft(x.fixed))\n const hasFixedRightColumn = pipelineColumns.some((x) => isValidFixedRight(x.fixed))\n\n const fullHeaderColumns = useMemo(() => {\n return {\n columns: pipelineColumns,\n descriptor: pipelineColumns.map((column): ColumnDescriptor => {\n const key = getKey(column)\n return {\n key,\n type: 'normal',\n column,\n }\n }),\n }\n }, [pipelineColumns])\n\n const headerColumns = useMemo(() => {\n if (virtualHeader) {\n return columns\n }\n return fullHeaderColumns\n }, [virtualHeader, fullHeaderColumns, columns])\n\n const contentNode = pipelineRender(\n <>\n <TableHeader\n wrapperRef={headerWrapperRef}\n columns={headerColumns}\n stickyHeader={stickyHeader}\n renderHeaderWrapper={renderHeaderWrapper}\n renderHeaderRoot={renderHeaderRoot}\n renderHeader={renderHeader}\n renderHeaderRow={renderHeaderRow}\n renderHeaderCell={renderHeaderCell}\n />\n <TableBody\n bodyWrapperRef={bodyWrapperRef}\n bodyRootRef={mergedBodyRootRef}\n bodyRef={bodyRef}\n className={tableBodyClassName}\n style={tableBodyStyle}\n columns={columns}\n rowKey={rowKey}\n dataSource={dataSource}\n overscan={overscanRows}\n estimateSize={estimatedRowHeight}\n getScroller={getScroller}\n getOffsetTop={getOffsetTop}\n rowClassName={onRowClassName}\n onRow={onRowProps}\n renderBodyWrapper={renderBodyWrapper}\n renderBodyRoot={renderBodyRoot}\n renderBody={renderBody}\n renderRow={renderRow}\n renderCell={renderCell}\n />\n </>,\n renderContent,\n { columns: columns.columns, columnDescriptor: columns.descriptor },\n )\n\n const rootMergedRef = useMergedRef(rootNode, ref)\n const table = pipelineRender(\n <TableRoot\n ref={rootMergedRef}\n className={className}\n style={style}\n hasFixedLeftColumn={hasFixedLeftColumn}\n hasFixedRightColumn={hasFixedRightColumn}\n renderRoot={renderRoot}\n bodyScrollContainer={bodyWrapperRef}\n >\n {contentNode}\n </TableRoot>,\n render,\n { columns: columns.columns, columnDescriptor: columns.descriptor },\n )\n\n return (\n <ColumnSizes.Provider value={tableColumnsContext}>\n <StickyContext columns={pipelineColumns}>\n <ContainerSizeContext getScroller={getScroller} root={rootNode}>\n <HorizontalScrollContext>{table}</HorizontalScrollContext>\n </ContainerSizeContext>\n </StickyContext>\n </ColumnSizes.Provider>\n )\n}\n\nif (__DEV__) {\n VirtualTableCore.displayName = 'VirtualTable.Core'\n}\n\nexport default memo(forwardRef(VirtualTableCore)) as <T>(\n props: VirtualTableCoreProps<T> & RefAttributes<HTMLDivElement>,\n) => ReactElement\n"],"names":["shallowEqualObjects","objA","objB","aKeys","Object","keys","bKeys","len","length","i","key","prototype","hasOwnProperty","call","shallowEqualArrays","arrA","arrB","isShallowEqual","value","oldValue","is","Array","isArray","hasObject","findIndex","x","every","state","index","Map","concat","oldKeys","values","oldValues","useShallowMemo","pickData","nextState","useRef","current","getKey","column","dataIndex","isValidFixedLeft","fixed","isValidFixedRight","isValidFixed","ColumnSizes","createContext","__DEV__","displayName","useColumnSizes","context","useContext","Error","Sticky","StickyContext","props","columns","children","_useColumnSizes","widthList","columnsFixedRecord","useMemo","map","stickySizes","left","leftOffset","reduce","res","item","_widthList$get","get","right","rightOffset","reduceRight","_widthList$get2","result","set","shallowMemoFixedRecord","shallowMemoStickySizes","stickyState","size","_jsx","Provider","useTableSticky","pipelineRender","node","render","options","getTableCellContent","data","_render","rowData","Cell","_onCell","className","style","rowIndex","renderCell","restProps","_objectWithoutPropertiesLoose","_excluded","align","onCell","_useTableSticky","_ref","extraClassName","extraStyle","colSpan","rowSpan","extraProps","_excluded2","_extends","clsx","undefined","memo","Colgroup","onColumnSizesMeasure","enableMeasure","columnSizes","ref","type","width","color","offsetWidth","minWidth","overflowStylePatterns","isElement","Node","ELEMENT_NODE_TYPE","nodeType","getScrollParent","el","root","_el$ownerDocument$def","window","document","body","_window$getComputedSt","getComputedStyle","overflow","overflowY","overflowX","test","parentNode","ownerDocument","defaultView","isWindow","arg","toString","isDocument","isRoot","getScrollElement","scrollingElement","useCalcSize","getScroller","_useState","useState","scrollContainerWidth","setScrollContainerWidth","_useState2","scrollContainerHeight","setScrollContainerHeight","_useState3","tableWidth","setTableWidth","_useState4","tableHeight","setTableHeight","scrollerContainerRef","useLayoutEffect","scrollerContainer","scroller","observer","ResizeObserver","entries","_entries$0$contentRec","contentRect","height","observe","disconnect","_entries$0$contentRec2","ContainerSize","ContainerSizeContext","_useCalcSize","useContainerSize","HorizontalScroll","HorizontalScrollContext","listenerMap","skipEvent","Set","listen","listener","scrollLeft","notify","has","rAF","requestAnimationFrame","fn","forEach","itemKey","add","useHorizontalScrollContext","TableRowManager","useTableRowManager","useStableFn","callback","stableFn","useCallback","_len","arguments","args","_key","apply","createMiddleware","hook","cache","useMiddleware","ctx","_cache$current","shakeUnsafeHooks","hooks","filter","priority","TablePipeline","defineProperty","use","bind","_proto","setHooks","renderFunctionMap","renderRoot","renderContent","renderHeaderWrapper","renderHeaderRoot","renderHeader","renderHeaderRow","renderHeaderCell","renderBodyWrapper","renderBodyRoot","renderBody","renderRow","rowClassNameFunctions","onRowFunctions","slice","sort","a","b","nextCtx","rowClassName","onRow","rest","target","push","_ref2","renders","record","useTablePipeline","extraPipeline","pipeline","cached","_extraPipeline$hooks","nextHooks","findLastIndex","arr","predicate","Row","_onRow","columnDescriptor","_useTableRowManager","updateRowHeight","descriptor","lastFixedLeftColumnIndex","firstFixedRightColumnIndex","offsetHeight","assignRef","mergeRefs","refs","useMergedRef","_len2","_key2","onResize","innerWidth","innerHeight","addEventListener","removeEventListener","rect","anchorQuery","rects","scrollTop","mid","Math","floor","bottom","useRowVirtualize","getOffsetTop","rawData","dataSource","estimateSize","overscan","startIndex","setStartIndex","endIndex","setEndIndex","dataSlice","rowHeights","fillRowHeights","rowRects","updateRowRectList","shouldSkip","_rowHeights$current$r","nextTop","top","setRowHeight","anchorRef","scrollTopRef","initial","useEffect","container","count","getScrollTop","offsetTop","scrollY","element","max","calcCount","scrollerContainerHeight","prevCount","ceil","updateBoundary","anchor","onScroll","e","scrollElement","isScrollDown","prevHeight","stopListen","nextStartIndex","nextEndIndex","sum","topBlank","bottomBlank","rowHeightList","TableBody","bodyWrapperRef","bodyRootRef","bodyRef","rowKey","_useRowVirtualize","_rowHeights$current$g","rowManageState","getRowHeightList","tbodyRef","elm","bodyHeight","heights","row","clear","bodyNode","_rowKey","setWidthList","tableNode","_jsxs","paddingBottom","paddingTop","_useHorizontalScrollC","wrapperRef","dispose","mergedRef","TableHeader","stickyHeader","lastColumn","headerWrapperRef","_column$onHeaderCell","isLast","onHeaderCell","thClassName","thStyle","Fragment","createElement","scope","title","columnWidths","theadNode","Number","isFinite","findFirstFixedRightIndex","findLastFixedLeftIndex","useColumnVirtualize","rawColumns","bodyWrapper","_options$disabled","disabled","lastFixedLeftIndex","firstFixedRightIndex","leftKey","rightKey","_columnWidths$get","findAnchorRef","scrollLeftRef","scrollContainer","containerWidth","isScrollRight","prevWidth","stop","fixedLeftWidth","fixedRightWidth","leftBlank","rightBlank","columnSlice","unionKey","TableRoot","hasFixedLeftColumn","hasFixedRightColumn","bodyScrollContainer","rootNode","hasFixedLeft","setHasFixedLeft","hasFixedRight","setHasFixedRight","onCheckHasFixedEdge","clientWidth","scrollWidth","_scrollLeft","forwardRef","VirtualTableCore","tableBodyClassName","tableBodyStyle","_props$rowKey","rawRowKey","_props$estimatedRowHe","estimatedRowHeight","estimatedColumnWidth","_props$overscanRows","overscanRows","_props$overscanColumn","overscanColumns","_props$pipeline","defaultPipeline","rawRowClassName","getOffsetTopImpl","_props$virtualHeader","virtualHeader","bodyRoot","mergedBodyRootRef","_rootNode$current$off","_rootNode$current2","_rootNode$current$get","_rootNode$current","getBoundingClientRect","_pipeline$use","rootRef","pipelineColumns","onPipelineRow","setColumnWidths","columnWidthsRef","updateColumnWidths","tableColumnsContext","_useColumnVirtualize","console","warn","error","onRowClassName","onRowProps","some","fullHeaderColumns","headerColumns","contentNode","_Fragment","rootMergedRef","table"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../../packages/virtual-table/src/utils/equal.ts","../../packages/virtual-table/src/core/hooks/useShallowMemo.ts","../../packages/virtual-table/src/core/utils/get-key.ts","../../packages/virtual-table/src/core/utils/verification.ts","../../packages/virtual-table/src/core/context/column-sizes.tsx","../../packages/virtual-table/src/core/context/sticky.tsx","../../packages/virtual-table/src/core/pipeline/render-pipeline.ts","../../packages/virtual-table/src/core/cell.tsx","../../packages/virtual-table/src/core/colgroup.tsx","../../packages/virtual-table/src/utils/dom.ts","../../packages/virtual-table/src/core/hooks/useCalcSize.ts","../../packages/virtual-table/src/core/context/container-size.tsx","../../packages/virtual-table/src/core/context/horizontal-scroll.tsx","../../packages/virtual-table/src/core/context/row-manager.tsx","../../packages/virtual-table/src/core/hooks/useStableFn.ts","../../packages/virtual-table/src/core/pipeline/create-middleware.ts","../../packages/virtual-table/src/core/pipeline/table-pipeline.ts","../../packages/virtual-table/src/core/pipeline/useTablePipeline.ts","../../packages/virtual-table/src/utils/find-last-index.ts","../../packages/virtual-table/src/core/row.tsx","../../packages/virtual-table/src/utils/ref.ts","../../packages/virtual-table/src/core/utils/on-resize.ts","../../packages/virtual-table/src/core/hooks/useRowVirtualize.ts","../../packages/virtual-table/src/core/body.tsx","../../packages/virtual-table/src/core/header.tsx","../../packages/virtual-table/src/core/hooks/useColumnVirtualize.ts","../../packages/virtual-table/src/core/root.tsx","../../packages/virtual-table/src/core/table.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nexport type validObjectValue = Record<string, any> | null | undefined\nexport type validArrayValue = any[] | null | undefined\n\nexport function shallowEqualObjects(\n objA: validObjectValue,\n objB: validObjectValue,\n): boolean {\n if (objA === objB) {\n return true\n }\n\n if (!objA || !objB) {\n return false\n }\n\n const aKeys = Object.keys(objA)\n const bKeys = Object.keys(objB)\n const len = aKeys.length\n\n if (bKeys.length !== len) {\n return false\n }\n\n for (let i = 0; i < len; i += 1) {\n const key = aKeys[i]\n\n if (objA[key] !== objB[key] || !Object.prototype.hasOwnProperty.call(objB, key)) {\n return false\n }\n }\n\n return true\n}\n\nexport function shallowEqualArrays(\n arrA: validArrayValue,\n arrB: validArrayValue,\n): boolean {\n if (arrA === arrB) {\n return true\n }\n\n if (!arrA || !arrB) {\n return false\n }\n\n const len = arrA.length\n\n if (arrB.length !== len) {\n return false\n }\n\n for (let i = 0; i < len; i += 1) {\n if (arrA[i] !== arrB[i]) {\n return false\n }\n }\n\n return true\n}\n\nexport function isShallowEqual(value: unknown, oldValue: unknown) {\n if (Object.is(value, oldValue)) {\n return true\n }\n if (Array.isArray(value) && Array.isArray(oldValue)) {\n if (shallowEqualArrays(value, oldValue)) {\n return true\n }\n if (value.length === oldValue.length) {\n const hasObject = value.findIndex((x) => typeof x === 'object' && x != null) > -1\n if (hasObject) {\n return value.every((state, index) => {\n if (Array.isArray(state)) {\n return shallowEqualArrays(state, oldValue[index] as unknown[])\n }\n if (typeof state === 'object' && state != null) {\n return shallowEqualObjects(\n state as Record<string, unknown>,\n oldValue[index] as Record<string, unknown>,\n )\n }\n return Object.is(state, oldValue[index])\n })\n }\n }\n return false\n }\n if (value instanceof Map && oldValue instanceof Map) {\n const keys = Array.from(value.keys())\n const oldKeys = Array.from(oldValue.keys())\n if (isShallowEqual(keys, oldKeys)) {\n const values = Array.from(value.values())\n const oldValues = Array.from(oldValue.values())\n if (isShallowEqual(values, oldValues)) {\n return true\n }\n }\n return false\n }\n if (typeof value === 'object' && value != null) {\n return shallowEqualObjects(value, oldValue as Record<string, unknown>)\n }\n return false\n}\n","/* eslint-disable react-compiler/react-compiler */\nimport { useRef } from 'react'\n\nimport { isShallowEqual } from '../../utils/equal'\n\n/**\n * 缓存数据(浅比较,如果是数组则对第一层进行浅比较)\n */\nexport function useShallowMemo<T>(pickData: () => T) {\n const nextState = pickData()\n const value = useRef<T>(nextState)\n\n if (!isShallowEqual(nextState, value.current)) {\n value.current = nextState\n }\n\n return value.current\n}\n","import type { Key } from 'react'\nimport type { ColumnType } from '../types'\n\nexport function getKey<T>(column: ColumnType<T>) {\n return 'key' in column ? (column.key as Key) : column.dataIndex as string\n}\n","export type FixedType = 'left' | 'right'\n\nexport function isValidFixedLeft(fixed: unknown) {\n return fixed === 'left'\n}\n\nexport function isValidFixedRight(fixed: unknown) {\n return fixed === 'right'\n}\n\nexport function isValidFixed(fixed: unknown) {\n return isValidFixedLeft(fixed) || isValidFixedRight(fixed)\n}\n","import type { Key } from 'react'\nimport { createContext, useContext } from 'react'\n\nexport interface TableColumnsContextType {\n widthList: Map<Key, number>\n setWidthList: (value: Map<Key, number>) => void\n}\n\nexport const ColumnSizes = createContext<TableColumnsContextType | null>(null)\n\nif (__DEV__) {\n ColumnSizes.displayName = 'VirtualTable.ColumnSizes'\n}\n\nexport function useColumnSizes() {\n const context = useContext(ColumnSizes)\n if (context == null) {\n throw new Error('useColumnSizes provider not found')\n }\n return context\n}\n","import type { Key, PropsWithChildren } from 'react'\nimport type { ColumnType, FixedType } from '../types'\nimport { createContext, useContext, useMemo } from 'react'\nimport { useShallowMemo } from '../hooks/useShallowMemo'\nimport { getKey } from '../utils/get-key'\nimport { isValidFixedLeft, isValidFixedRight } from '../utils/verification'\nimport { useColumnSizes } from './column-sizes'\n\nexport interface StickyContextState {\n size: Map<Key, number>\n /** 每一列设置的 fixed 值 */\n fixed: { key: Key, fixed: FixedType | undefined }[]\n}\n\nexport const Sticky = createContext<StickyContextState | null>(null)\n\nif (__DEV__) {\n Sticky.displayName = 'VirtualTable.Sticky'\n}\n\nexport function StickyContext(\n props: PropsWithChildren<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n columns: ColumnType<any>[]\n }>,\n) {\n const { columns, children } = props\n const { widthList } = useColumnSizes()\n\n const columnsFixedRecord = useMemo(() => {\n return columns.map((column) => {\n const key = getKey(column)\n return { key, fixed: column.fixed }\n })\n }, [columns])\n\n const stickySizes = useMemo(() => {\n let left = 0\n const leftOffset = columnsFixedRecord.reduce<number[]>((res, item, index) => {\n const { fixed, key } = item\n if (isValidFixedLeft(fixed)) {\n res[index] = left\n // eslint-disable-next-line react-compiler/react-compiler\n left += widthList.get(key) ?? 0\n }\n return res\n }, [])\n\n let right = 0\n const rightOffset = columnsFixedRecord.reduceRight((res, item, index) => {\n const { fixed, key } = item\n if (isValidFixedRight(fixed)) {\n res[index] = right\n right += widthList.get(key) ?? 0\n }\n return res\n }, [] as number[])\n\n return columnsFixedRecord.reduce((result, item, index) => {\n const { key, fixed } = item\n if (isValidFixedLeft(fixed)) {\n result.set(key, leftOffset[index])\n return result\n }\n if (isValidFixedRight(fixed)) {\n result.set(key, rightOffset[index])\n return result\n }\n return result\n }, new Map<Key, number>())\n }, [columnsFixedRecord, widthList])\n\n const shallowMemoFixedRecord = useShallowMemo(() => columnsFixedRecord)\n const shallowMemoStickySizes = useShallowMemo(() => stickySizes)\n\n const stickyState = useMemo((): StickyContextState => {\n return { size: shallowMemoStickySizes, fixed: shallowMemoFixedRecord }\n }, [shallowMemoFixedRecord, shallowMemoStickySizes])\n\n return (\n <Sticky.Provider value={stickyState}>\n {children}\n </Sticky.Provider>\n )\n}\n\nexport function useTableSticky() {\n const context = useContext(Sticky)\n if (context == null) {\n throw new Error('useTableSticky provider not found')\n }\n return context\n}\n","import type { ReactNode } from 'react'\nimport type { MergedMiddlewareRender } from './types'\n\ntype RenderOptions<T> = T extends ((children: ReactNode, options: infer Opt) => ReactNode) ? Opt : object\n\nexport function pipelineRender<T extends MergedMiddlewareRender>(\n node: ReactNode,\n render: T | undefined,\n options: RenderOptions<T>,\n): ReactNode {\n if (typeof render === 'function') {\n // @ts-expect-error: There is no way to declare the type correctly, but it works at runtime.\n return render(node, options)\n }\n return node\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { DetailedHTMLProps, HTMLAttributes, ReactElement } from 'react'\nimport type { MiddlewareRenderCell } from './pipeline/types'\nimport type { AnyObject, ColumnType } from './types'\nimport clsx from 'clsx'\nimport { memo } from 'react'\nimport { useTableSticky } from './context/sticky'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport { getKey } from './utils/get-key'\nimport { isValidFixed, isValidFixedLeft, isValidFixedRight } from './utils/verification'\n\ntype NativeProps = DetailedHTMLProps<\n HTMLAttributes<HTMLTableCellElement>,\n HTMLTableCellElement\n>\n\nexport interface CellProps<T> extends Omit<NativeProps, 'children'> {\n column: ColumnType<T>\n rowIndex: number\n rowData: T\n renderCell?: MiddlewareRenderCell\n}\n\nfunction getTableCellContent<T extends AnyObject>(\n index: number,\n data: T,\n column: ColumnType<any>,\n): any {\n const { render } = column\n const rowData = data as AnyObject\n if ('dataIndex' in column) {\n const dataIndex = column.dataIndex as string\n if (typeof render !== 'function') {\n return rowData[dataIndex]\n }\n return render(rowData[dataIndex], data, index)\n }\n return render?.(data, data, index) ?? null\n}\n\nfunction Cell<T>(props: CellProps<T>) {\n const {\n className,\n style,\n column,\n rowData,\n rowIndex,\n renderCell,\n ...restProps\n } = props\n\n const { align, fixed, onCell } = column\n const key = getKey(column)\n const { size: stickySizes } = useTableSticky()\n\n const {\n className: extraClassName,\n style: extraStyle,\n colSpan,\n rowSpan,\n ...extraProps\n } = onCell?.(rowData, rowIndex) ?? {}\n\n if (colSpan === 0 || rowSpan === 0) {\n return null\n }\n\n return pipelineRender(\n <td\n {...restProps}\n {...extraProps}\n colSpan={colSpan}\n rowSpan={rowSpan}\n className={clsx(\n 'virtual-table-cell',\n align != null && `virtual-table-align-${align}`,\n isValidFixed(fixed) && 'virtual-table-sticky-cell',\n className,\n column.className,\n extraClassName,\n )}\n style={{\n ...style,\n ...extraStyle,\n left: isValidFixedLeft(fixed) ? stickySizes.get(key) : undefined,\n right: isValidFixedRight(fixed) ? stickySizes.get(key) : undefined,\n }}\n >\n {getTableCellContent(rowIndex, rowData as AnyObject, column)}\n </td>,\n renderCell,\n { column },\n )\n}\n\nexport default memo(Cell) as <T>(props: CellProps<T>) => ReactElement\n","import type { FC, Key } from 'react'\nimport type { ColumnDescriptor } from './types'\nimport { memo, useRef } from 'react'\nimport { isShallowEqual } from '../utils/equal'\n\nexport interface ColgroupProps {\n columns: ColumnDescriptor[]\n onColumnSizesMeasure?: (columnSizes: Map<Key, number>) => void\n}\n\nconst Colgroup: FC<ColgroupProps> = (props) => {\n const { columns, onColumnSizesMeasure } = props\n\n const enableMeasure = onColumnSizesMeasure != null\n const columnSizes = new Map<Key, number>()\n const prevColumnSizes = useRef(new Map<Key, number>())\n\n return (\n <colgroup\n ref={() => {\n if (!enableMeasure) return\n if (!isShallowEqual(columnSizes, prevColumnSizes.current)) {\n onColumnSizesMeasure(columnSizes)\n prevColumnSizes.current = columnSizes\n }\n }}\n >\n {columns.map((item) => {\n const { key } = item\n if (item.type === 'blank') {\n return <col key={key} className=\"blank\" style={{ width: item.width }} />\n }\n\n const { column } = item\n\n return (\n <col\n key={key}\n ref={(node) => {\n if (node == null || !enableMeasure) return\n columnSizes.set(key, node.offsetWidth)\n }}\n style={{\n width: column.width,\n minWidth: column.minWidth,\n }}\n />\n )\n })}\n </colgroup>\n )\n}\n\nexport default memo(Colgroup)\n","export type ScrollElement = HTMLElement | Window\n\nconst overflowStylePatterns = /auto|scroll|overlay|hidden/\n\nfunction isElement(node: unknown): node is Node {\n if (!(node instanceof Node)) {\n return false\n }\n const ELEMENT_NODE_TYPE = 1\n return node.nodeType === ELEMENT_NODE_TYPE\n}\n\nexport function getScrollParent(\n el: Element,\n root: ScrollElement | null | undefined = window,\n): ScrollElement {\n let node = el\n\n while (node !== root && isElement(node)) {\n if (node === document.body) {\n return root as HTMLElement\n }\n const { overflow, overflowY, overflowX } = window.getComputedStyle(node)\n if (overflowStylePatterns.test(overflow + overflowY + overflowX)) {\n return node as HTMLElement\n }\n node = node.parentNode as Element\n }\n return el.ownerDocument.defaultView ?? window\n}\n\nexport function isWindow(arg: unknown): arg is Window {\n return Object.prototype.toString.call(arg) === '[object Window]'\n}\n\nexport function isDocument(arg: unknown): arg is Document {\n return Object.prototype.toString.call(arg) === '[object HTMLDocument]'\n}\n\nexport function isRoot(arg: unknown): arg is HTMLElement {\n return Object.prototype.toString.call(arg) === '[object HTMLHtmlElement]'\n}\n\nexport function getScrollElement(el: unknown): Element {\n if (isDocument(el)) {\n return el.scrollingElement!\n }\n if (isElement(el)) {\n return el as Element\n }\n return document.scrollingElement!\n}\n","import type { RefObject } from 'react'\nimport type { ScrollElement } from '../../utils/dom'\nimport { useLayoutEffect, useRef, useState } from 'react'\nimport { isWindow } from '../../utils/dom'\n\nexport interface CalcSizeOptions {\n getScroller: () => ScrollElement | undefined\n root: RefObject<HTMLDivElement>\n}\n\nexport function useCalcSize(options: CalcSizeOptions) {\n const { getScroller, root } = options\n\n const [scrollContainerWidth, setScrollContainerWidth] = useState(0)\n const [scrollContainerHeight, setScrollContainerHeight] = useState(0)\n\n const [tableWidth, setTableWidth] = useState(0)\n const [tableHeight, setTableHeight] = useState(0)\n\n const scrollerContainerRef = useRef<HTMLElement | null>(null)\n\n useLayoutEffect(() => {\n const scrollerContainer = getScroller()\n if (scrollerContainer == null) return\n let scroller: HTMLElement\n if (isWindow(scrollerContainer)) {\n scroller = document.scrollingElement as HTMLElement\n } else {\n scroller = scrollerContainer\n }\n scrollerContainerRef.current = scroller\n const observer = new ResizeObserver((entries) => {\n const { width, height } = entries[0].contentRect\n setScrollContainerWidth(width)\n setScrollContainerHeight(height)\n })\n observer.observe(scroller)\n return () => {\n observer.disconnect()\n }\n }, [getScroller])\n\n useLayoutEffect(() => {\n const node = root.current\n if (node == null) return\n const observer = new ResizeObserver((entries) => {\n const { width, height } = entries[0].contentRect\n setTableWidth(width)\n setTableHeight(height)\n })\n observer.observe(node)\n return () => {\n observer.disconnect()\n }\n }, [root])\n\n return {\n scrollContainerWidth,\n scrollContainerHeight,\n tableWidth,\n tableHeight,\n }\n}\n","import type { PropsWithChildren } from 'react'\nimport type { CalcSizeOptions } from '../hooks/useCalcSize'\nimport { createContext, useContext, useMemo } from 'react'\nimport { useCalcSize } from '../hooks/useCalcSize'\n\nexport interface ContainerSizeState {\n scrollContainerWidth: number\n scrollContainerHeight: number\n tableWidth: number\n tableHeight: number\n}\n\nconst ContainerSize = createContext<ContainerSizeState | null>(null)\n\nexport function ContainerSizeContext(props: PropsWithChildren<CalcSizeOptions>) {\n const { getScroller, root, children } = props\n\n const {\n scrollContainerHeight,\n scrollContainerWidth,\n tableHeight,\n tableWidth,\n } = useCalcSize({ getScroller, root })\n\n const state = useMemo((): ContainerSizeState => {\n return {\n scrollContainerWidth,\n scrollContainerHeight,\n tableWidth,\n tableHeight,\n }\n }, [scrollContainerWidth, scrollContainerHeight, tableWidth, tableHeight])\n\n return (\n <ContainerSize.Provider value={state}>\n {children}\n </ContainerSize.Provider>\n )\n}\n\nexport function useContainerSize() {\n const context = useContext(ContainerSize)\n if (context == null) {\n throw new Error('useContainerSize provider not found')\n }\n return context\n}\n","import type { PropsWithChildren } from 'react'\nimport { createContext, useContext, useMemo, useRef } from 'react'\n\ntype Listener = (scrollLeft: number, node: HTMLElement) => void\n\nexport interface HorizontalScrollContextState {\n listen: (key: string, listener: Listener) => () => void\n notify: (key: string, options: { scrollLeft: () => number, node: HTMLElement }) => void\n}\n\nconst HorizontalScroll = createContext<HorizontalScrollContextState | null>(null)\n\nif (__DEV__) {\n HorizontalScroll.displayName = 'VirtualTable.HorizontalScroll'\n}\n\nexport function HorizontalScrollContext(props: PropsWithChildren) {\n const { children } = props\n\n const listenerMap = useRef(new Map<string, Listener>())\n const context = useMemo((): HorizontalScrollContextState => {\n const skipEvent = new Set<string>()\n return {\n listen(key, listener) {\n listenerMap.current.set(key, (scrollLeft, node) => {\n listener(scrollLeft, node)\n })\n return () => {\n listenerMap.current.delete(key)\n }\n },\n notify(key, options) {\n if (skipEvent.has(key)) {\n skipEvent.delete(key)\n return\n }\n const { scrollLeft, node } = options\n let rAF = window.requestAnimationFrame as ((fn: () => void) => void) | undefined\n if (rAF == null) {\n rAF = (fn: () => void) => {\n fn()\n }\n }\n listenerMap.current.forEach((listener, itemKey) => {\n if (key === itemKey) return\n skipEvent.add(itemKey)\n rAF(() => {\n listener(scrollLeft(), node)\n })\n })\n },\n }\n }, [])\n\n return <HorizontalScroll.Provider value={context}>{children}</HorizontalScroll.Provider>\n}\n\nexport function useHorizontalScrollContext() {\n const context = useContext(HorizontalScroll)\n\n if (context == null) {\n throw new Error('useHorizontalScrollContext provider not found')\n }\n\n return context\n}\n","import type { Key } from 'react'\nimport { createContext, useContext } from 'react'\n\nexport interface TableRowManagerContextType {\n getRowHeightList: () => number[]\n /**\n * @param index rowIndex\n * @param key 唯一的 key,用于去重\n * @param height 行高\n */\n updateRowHeight: (index: number, key: Key, height: number) => void\n}\n\nexport const TableRowManager = createContext<TableRowManagerContextType | null>(null)\n\nif (__DEV__) {\n TableRowManager.displayName = 'VirtualTable.RowManager'\n}\n\nexport function useTableRowManager() {\n const context = useContext(TableRowManager)\n if (context == null) {\n throw new Error('useTableRowManager provider not found')\n }\n return context\n}\n","import { useCallback, useLayoutEffect, useRef } from 'react'\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport function useStableFn<T extends Function>(callback: T): T {\n const fn = useRef<T | null>(null)\n useLayoutEffect(() => {\n fn.current = callback\n })\n\n const stableFn = useCallback((...args: unknown[]) => {\n return fn.current?.(...args) as unknown\n }, []) as unknown as T\n\n return stableFn\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Middleware, MiddlewareContext, MiddlewareResult } from './types'\nimport { isShallowEqual } from '../../utils/equal'\n\n/**\n * 创建中间件,内部会浅比较 options,只有 options 改变才会返回新的函数。\n */\nfunction createMiddleware<T, Args extends any[]>(\n hook: (ctx: MiddlewareContext<T>, ...args: Args) => MiddlewareResult<T>,\n): (...args: Args) => Middleware<T> {\n const cache = {\n current: null as Middleware<T> | null,\n options: null as Args | null | undefined,\n }\n\n return (...options: Args): Middleware<T> => {\n const useMiddleware: Middleware<T> = (ctx) => hook(ctx, ...options)\n\n if (isShallowEqual(options, cache.options)) {\n return cache.current ?? useMiddleware\n }\n\n cache.options = options\n cache.current = useMiddleware\n\n return useMiddleware\n }\n}\n\nexport type { MiddlewareResult }\nexport { createMiddleware }\n","import type { ReactNode } from 'react'\nimport type { OnRowType } from '../types'\nimport type { Middleware, MiddlewareContext, MiddlewareRenders, MiddlewareResult } from './types'\nimport clsx from 'clsx'\n\nexport interface Hook<T> { priority: number, hook: Middleware<T> }\nexport type UnsafeHook<T> = Middleware<T> | undefined | null | Hook<T>\n\ntype RenderFunctions<T> = {\n [K in keyof T]: (T[K])[]\n}\n\nexport function shakeUnsafeHooks<T>(hooks: UnsafeHook<T>[]): Hook<T>[] {\n if (Array.isArray(hooks)) {\n return hooks.filter((x) => {\n return x != null && (typeof x === 'function' || typeof x.hook === 'function')\n }).map((hook): Hook<T> => {\n if (typeof hook === 'function') {\n return { priority: 100, hook }\n }\n return hook!\n })\n }\n return []\n}\n\nexport class TablePipeline<T> {\n constructor() {\n this.use = this.use.bind(this)\n }\n\n hooks: Hook<T>[] = []\n\n setHooks(value: Hook<T>[]) {\n this.hooks = value\n }\n\n use(options: MiddlewareContext<T>): MiddlewareResult<T> {\n if (this.hooks.length === 0) {\n return options\n }\n\n const context: { current: MiddlewareResult<T> } = { current: options }\n\n const renderFunctionMap: RenderFunctions<Required<MiddlewareRenders>> = {\n render: [],\n renderRoot: [],\n renderContent: [],\n renderHeaderWrapper: [],\n renderHeaderRoot: [],\n renderHeader: [],\n renderHeaderRow: [],\n renderHeaderCell: [],\n renderBodyWrapper: [],\n renderBodyRoot: [],\n renderBody: [],\n renderRow: [],\n renderCell: [],\n }\n\n const rowClassNameFunctions: ((record: T, index: number) => string)[] = []\n const onRowFunctions: OnRowType<T>[] = []\n\n const hooks = this.hooks.slice()\n hooks.sort((a, b) => a.priority - b.priority)\n\n hooks.map((x) => x.hook).forEach((hook) => {\n const nextCtx = hook(context.current)\n const {\n render: _render,\n renderRoot: _renderRoot,\n renderContent: _renderContent,\n renderHeaderWrapper: _renderHeaderWrapper,\n renderHeaderRoot: _renderHeaderRoot,\n renderHeader: _renderHeader,\n renderHeaderRow: _renderHeaderRow,\n renderHeaderCell: _renderHeaderCell,\n renderBodyWrapper: _renderBodyWrapper,\n renderBodyRoot: _renderBodyRoot,\n renderBody: _renderBody,\n renderRow: _renderRow,\n renderCell: _renderCell,\n\n rowClassName,\n onRow,\n ...rest\n } = nextCtx\n\n Object.entries(renderFunctionMap).forEach(([key, value]) => {\n const target = nextCtx[key as keyof MiddlewareRenders]\n if (typeof target === 'function') {\n // @ts-expect-error: There is no way to declare the type correctly, but it works at runtime.\n value.push(target)\n }\n })\n\n if (typeof rowClassName === 'function') {\n rowClassNameFunctions.push(rowClassName)\n }\n if (typeof onRow === 'function') {\n onRowFunctions.push(onRow)\n }\n context.current = rest\n })\n\n Object.entries(renderFunctionMap).forEach(([key, renders]) => {\n if (renders.length > 0) {\n context.current[key as keyof MiddlewareRenders] = (children, args) => {\n // reduce 把 [render1, render2] 转为 render2(render1(children))\n return renders.reduce<ReactNode>((node, render) => {\n // @ts-expect-error: There is no way to declare the type correctly, but it works at runtime.\n return render(node, args)\n }, children)\n }\n }\n })\n\n if (rowClassNameFunctions.length > 0) {\n context.current.rowClassName = (record, index) => {\n return clsx(...rowClassNameFunctions.map((fn) => fn(record, index)))\n }\n }\n\n if (onRowFunctions.length > 0) {\n context.current.onRow = (record, index) => {\n return onRowFunctions.reduce((result, item) => {\n return { ...result, ...item(record, index) }\n }, {})\n }\n }\n\n return context.current\n }\n\n static defaultPipeline = new TablePipeline()\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Hook } from './table-pipeline'\nimport type { Middleware } from './types'\nimport { useMemo } from 'react'\nimport { shallowEqualArrays } from '../../utils/equal'\nimport { shakeUnsafeHooks, TablePipeline } from './table-pipeline'\n\nexport interface UseTablePipelineOptions<T = any> {\n pipeline?: TablePipeline<T>\n use?: (Middleware<T> | Hook<T>)[]\n}\n\nexport { TablePipeline }\nexport type { Hook }\n\nexport function useTablePipeline<T = any>(options: UseTablePipelineOptions<T>) {\n const { use, pipeline: extraPipeline } = options\n\n const cached = useMemo(() => ({ current: new TablePipeline<T>() }), [])\n\n if (use != null) {\n const nextHooks = shakeUnsafeHooks([...use, ...(extraPipeline?.hooks ?? [])])\n\n if (!shallowEqualArrays(cached.current.hooks, nextHooks)) {\n const pipeline = new TablePipeline<T>()\n pipeline.setHooks(nextHooks)\n cached.current = pipeline\n return pipeline\n }\n }\n\n return cached.current\n}\n","export function findLastIndex<T>(\n arr: T[],\n predicate: (value: T, index: number) => boolean,\n) {\n let result = -1\n for (let i = 0; i < arr.length; i += 1) {\n if (predicate(arr[i], i)) {\n result = i\n }\n }\n return result\n}\n","import type { DetailedHTMLProps, HTMLAttributes, ReactElement } from 'react'\nimport type { MiddlewareRenderCell, MiddlewareRenderRow } from './pipeline/types'\nimport type { InnerColumnDescriptor, OnRowType } from './types'\nimport clsx from 'clsx'\nimport { memo } from 'react'\nimport { findLastIndex } from '../utils/find-last-index'\nimport Cell from './cell'\nimport { useTableRowManager } from './context/row-manager'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport { isValidFixedLeft, isValidFixedRight } from './utils/verification'\n\ntype NativeProps = DetailedHTMLProps<\n HTMLAttributes<HTMLTableRowElement>,\n HTMLTableRowElement\n>\n\nexport interface RowProps<T> extends Omit<NativeProps, 'children'> {\n rowIndex: number\n rowData: T\n columns: InnerColumnDescriptor<T>\n onRow?: OnRowType<T>\n renderRow?: MiddlewareRenderRow\n renderCell?: MiddlewareRenderCell\n}\n\nfunction Row<T>(props: RowProps<T>) {\n const {\n className,\n rowIndex,\n rowData,\n columns: columnDescriptor,\n onRow,\n renderRow,\n renderCell,\n ...rest\n } = props\n\n const { updateRowHeight } = useTableRowManager()\n\n const { columns, descriptor } = columnDescriptor\n\n const lastFixedLeftColumnIndex = findLastIndex(descriptor, (x) => {\n if (x.type === 'blank') {\n return false\n }\n return isValidFixedLeft(x.column.fixed)\n })\n const firstFixedRightColumnIndex = descriptor.findIndex((x) => {\n if (x.type === 'blank') {\n return false\n }\n return isValidFixedRight(x.column.fixed)\n })\n\n const { className: extraClassName, ...extraProps } = onRow?.(rowData, rowIndex) ?? {}\n\n return pipelineRender(\n <tr\n {...rest}\n {...extraProps}\n className={clsx('virtual-table-row', className, extraClassName)}\n ref={(node) => {\n if (node == null) return\n // 小心陷阱:当 table 父元素为 display: none 时,依然会触发 updateRowHeight 函数,并设置高度为 0\n updateRowHeight(rowIndex, rowIndex, node.offsetHeight)\n }}\n >\n {descriptor.map((item, index) => {\n const { key } = item\n if (item.type === 'blank') {\n return <td key={key} />\n }\n const { column } = item\n return (\n <Cell\n key={key}\n className={clsx(\n lastFixedLeftColumnIndex === index && 'virtual-table-cell-fix-left-last',\n firstFixedRightColumnIndex === index\n && 'virtual-table-cell-fix-right-first',\n )}\n column={column}\n rowIndex={rowIndex}\n rowData={rowData}\n renderCell={renderCell}\n />\n )\n })}\n </tr>,\n renderRow,\n { columns, rowIndex, rowData, columnDescriptor: descriptor },\n )\n}\n\nexport default memo(Row) as <T>(props: RowProps<T>) => ReactElement\n","import type { MutableRefObject, Ref } from 'react'\nimport { useCallback } from 'react'\n\ntype PossibleRef<T> = Ref<T> | undefined\n\nexport function assignRef<T>(ref: PossibleRef<T>, value: T) {\n if (typeof ref === 'function') {\n ref(value)\n } else if (typeof ref === 'object' && ref !== null && 'current' in ref) {\n (ref as MutableRefObject<T>).current = value\n }\n}\n\nexport function mergeRefs<T>(...refs: PossibleRef<T>[]) {\n return (node: T | null) => {\n refs.forEach((ref) => assignRef(ref, node))\n }\n}\n\nexport function useMergedRef<T>(...refs: PossibleRef<T>[]) {\n // eslint-disable-next-line react-compiler/react-compiler\n return useCallback(mergeRefs(...refs), refs)\n}\n","import { isWindow } from '../../utils/dom'\n\ninterface ResizeRect {\n width: number\n height: number\n}\n\nexport function onResize(target: Window | HTMLElement, callback: (rect: ResizeRect) => void) {\n if (isWindow(target)) {\n const listener = () => {\n callback({\n width: window.innerWidth,\n height: window.innerHeight,\n })\n }\n listener()\n window.addEventListener('resize', listener)\n return () => {\n window.removeEventListener('resize', listener)\n }\n } else {\n const observer = new ResizeObserver((entries) => {\n const rect = entries[0].contentRect\n callback({ width: rect.width, height: rect.height })\n })\n observer.observe(target)\n return () => {\n observer.disconnect()\n }\n }\n}\n","/* eslint-disable react-compiler/react-compiler */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { ScrollElement } from '../../utils/dom'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport { getScrollElement, isRoot, isWindow } from '../../utils/dom'\nimport { onResize } from '../utils/on-resize'\n\nexport interface RowRect {\n index: number\n height: number\n top: number\n bottom: number\n}\n\ninterface UseRowVirtualizeOptions<T = any> {\n getOffsetTop: () => number\n dataSource: T[]\n getScroller: () => ScrollElement | undefined\n estimateSize: number\n overscan: number\n}\n\nfunction anchorQuery(rects: RowRect[], scrollTop: number) {\n let left = 0\n let right = rects.length - 1\n let index = -1\n\n while (left <= right) {\n const mid = Math.floor((left + right) / 2)\n\n if (rects[mid].bottom > scrollTop) {\n index = mid\n right = mid - 1\n } else {\n left = mid + 1\n }\n }\n\n if (index === -1) {\n return undefined\n }\n\n return rects[index]\n}\n\nexport function useRowVirtualize<T = any>(options: UseRowVirtualizeOptions<T>) {\n const {\n getOffsetTop,\n dataSource: rawData,\n getScroller,\n estimateSize,\n overscan,\n } = options\n\n const [startIndex, setStartIndex] = useState(0)\n const [endIndex, setEndIndex] = useState(0)\n\n const dataSlice = useMemo(() => {\n return rawData.slice(startIndex, endIndex)\n }, [rawData, startIndex, endIndex])\n\n // 行高信息(先填充预估高度,DOM渲染后再更新成实际高度)\n const rowHeights = useRef<number[]>([])\n const fillRowHeights = () => {\n const len = rawData.length\n for (let i = 0; i < len; i++) {\n const target = rowHeights.current[i] as number | undefined\n // 由于 fillRowHeights 是在渲染阶段调用,防止重复渲染时 estimateSize 覆盖了真实 DOM 的高度\n if (target == null) {\n rowHeights.current[i] = estimateSize\n }\n }\n rowHeights.current = rowHeights.current.slice(0, len)\n }\n fillRowHeights()\n\n // 布局信息(也就是锚点元素需要的信息,top,bottom,height,index)\n const rowRects = useRef<RowRect[]>([])\n const updateRowRectList = (shouldSkip = false) => {\n if (shouldSkip && rowRects.current.length > 0) {\n return\n }\n const { rects } = rowHeights.current.reduce((result, height, index) => {\n const nextTop = result.top + height\n result.rects.push({\n index,\n top: result.top,\n height,\n bottom: nextTop,\n })\n result.top = nextTop\n return result\n }, { top: 0, rects: [] as RowRect[] })\n rowRects.current = rects\n }\n\n const setRowHeight = (index: number, height: number) => {\n rowHeights.current[index] = height\n }\n\n // 锚点元素,当前虚拟列表中,最接近滚动容器顶部的元素\n const anchorRef = useRef<RowRect>({\n index: 0,\n height: estimateSize,\n top: 0,\n bottom: estimateSize,\n })\n\n // 用来判断滚动方向\n const scrollTopRef = useRef(0)\n const initial = useRef(false)\n useEffect(() => {\n const container = getScroller()\n if (container == null) return\n\n let count = 0\n\n const getScrollTop = () => {\n const offsetTop = getOffsetTop()\n let result = 0\n if (isWindow(container) || isRoot(container)) {\n result = window.scrollY\n } else {\n const element = getScrollElement(container)\n result = element.scrollTop\n }\n return Math.max(result - offsetTop, 0)\n }\n\n const calcCount = (scrollerContainerHeight: number) => {\n const prevCount = count\n count = Math.ceil(scrollerContainerHeight / estimateSize)\n return { prevCount }\n }\n\n const updateBoundary = (scrollTop: number) => {\n const anchor = anchorQuery(rowRects.current, scrollTop)\n if (anchor != null) {\n anchorRef.current = anchor\n setStartIndex(Math.max(0, anchor.index - overscan))\n setEndIndex(anchor.index + count + overscan)\n }\n }\n\n const onScroll = (e: Event) => {\n const offsetTop = getOffsetTop()\n const scrollElement = getScrollElement(e.target)\n const scrollTop = Math.max(0, scrollElement.scrollTop - offsetTop)\n\n // 是否为向下滚动\n const isScrollDown = scrollTop > scrollTopRef.current\n\n if (isScrollDown) {\n // 如果滚动距离比较小,没有超出锚点元素的边界,就不需要计算 startIndex、endIndex 了\n if (scrollTop > anchorRef.current.bottom) {\n updateBoundary(scrollTop)\n }\n } else {\n if (scrollTop < anchorRef.current.top) {\n updateBoundary(scrollTop)\n }\n }\n\n scrollTopRef.current = scrollTop\n }\n\n let prevHeight = 0\n const stopListen = onResize(container, (rect) => {\n // 处理父元素 display:none 容器高度丢失,导致显示 row 不准确\n if (rect.height === prevHeight || rect.height === 0) {\n return\n }\n prevHeight = rect.height\n calcCount(rect.height)\n const scrollTop = getScrollTop()\n if (!initial.current) {\n initial.current = true\n let nextStartIndex = 0\n // 判断一下当前滚动位置,计算 startIndex(场景:SPA 页面切换且渲染非异步数据)\n if (scrollTop >= estimateSize) {\n nextStartIndex = Math.max(Math.floor(scrollTop / estimateSize) - 1 - overscan, 0)\n }\n const nextEndIndex = nextStartIndex + count + overscan\n setStartIndex(nextStartIndex)\n setEndIndex(nextEndIndex)\n } else {\n updateBoundary(scrollTop)\n }\n })\n\n container.addEventListener('scroll', onScroll)\n return () => {\n stopListen()\n container.removeEventListener('scroll', onScroll)\n }\n }, [estimateSize, getOffsetTop, getScroller, overscan])\n\n const sum = (startIndex: number, endIndex?: number) => {\n return rowHeights.current.slice(startIndex, endIndex).reduce((a, b) => a + b, 0)\n }\n // TODO: React Compiler 测试 topBlank 和 bottomBlank\n const topBlank = sum(0, startIndex)\n const bottomBlank = sum(endIndex)\n\n return {\n startIndex,\n endIndex,\n\n rowHeightList: rowHeights,\n updateRowRectList,\n setRowHeight,\n\n topBlank,\n bottomBlank,\n\n dataSlice,\n }\n}\n","import type { CSSProperties, Key, Ref } from 'react'\nimport type { ScrollElement } from '../utils/dom'\nimport type { TableRowManagerContextType } from './context/row-manager'\nimport type { NecessaryProps } from './internal'\nimport type {\n MiddlewareRenderBody,\n MiddlewareRenderBodyRoot,\n MiddlewareRenderBodyWrapper,\n} from './pipeline/types'\nimport type { RowProps } from './row'\nimport type { AnyObject, InnerColumnDescriptor } from './types'\nimport clsx from 'clsx'\nimport { useCallback, useEffect, useMemo, useRef } from 'react'\nimport { useMergedRef } from '../utils/ref'\nimport Colgroup from './colgroup'\nimport { useColumnSizes } from './context/column-sizes'\nimport { useHorizontalScrollContext } from './context/horizontal-scroll'\nimport { TableRowManager } from './context/row-manager'\nimport { useRowVirtualize } from './hooks/useRowVirtualize'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport Row from './row'\n\nexport interface TableBodyProps<T>\n extends Omit<NecessaryProps<T>, 'columns'>,\n Pick<RowProps<T>, 'onRow' | 'renderRow' | 'renderCell'> {\n className?: string\n style?: CSSProperties\n columns: InnerColumnDescriptor<T>\n bodyWrapperRef?: Ref<HTMLDivElement>\n bodyRootRef?: Ref<HTMLTableElement>\n bodyRef?: Ref<HTMLTableSectionElement>\n overscan: number\n estimateSize: number\n getOffsetTop: () => number\n getScroller: () => ScrollElement | undefined\n rowClassName?: (record: T, index: number) => string\n renderBodyWrapper?: MiddlewareRenderBodyWrapper\n renderBodyRoot?: MiddlewareRenderBodyRoot\n renderBody?: MiddlewareRenderBody\n}\n\nfunction TableBody<T>(props: TableBodyProps<T>) {\n const {\n bodyWrapperRef,\n bodyRootRef,\n bodyRef,\n className,\n style,\n dataSource: rawData,\n columns: columnDescriptor,\n rowKey,\n\n overscan,\n estimateSize,\n\n getScroller,\n getOffsetTop,\n\n rowClassName,\n onRow,\n renderBodyWrapper,\n renderBodyRoot,\n renderBody,\n renderRow,\n renderCell,\n } = props\n\n const {\n startIndex,\n dataSlice: dataSource,\n setRowHeight,\n updateRowRectList,\n rowHeightList,\n topBlank,\n bottomBlank,\n } = useRowVirtualize({\n getOffsetTop,\n dataSource: rawData,\n getScroller,\n estimateSize,\n overscan,\n })\n\n const rowHeights = useRef(new Map<number, Map<Key, number>>())\n const updateRowHeight = useCallback((index: number, key: Key, height: number) => {\n const target = rowHeights.current.get(index) ?? new Map<Key, number>()\n target.set(key, height)\n rowHeights.current.set(index, target)\n }, [])\n\n const rowManageState = useMemo<TableRowManagerContextType>(() => {\n return { updateRowHeight, getRowHeightList: () => rowHeightList.current }\n }, [rowHeightList, updateRowHeight])\n\n const { columns, descriptor } = columnDescriptor\n const tbodyRef = useMergedRef(bodyRef, (elm) => {\n if (elm == null) return\n\n const bodyHeight = elm.offsetHeight\n if (bodyHeight === 0) return\n\n const heights = rowHeights.current\n heights.forEach((row, rowIndex) => {\n const height = Array.from(row.values()).reduce((res, x) => res + x, 0)\n setRowHeight(rowIndex, height)\n })\n updateRowRectList()\n rowHeights.current.clear()\n })\n\n const bodyNode = pipelineRender(\n <tbody ref={tbodyRef}>\n {dataSource.map((e, rowIndex) => {\n const _rowKey = (e as AnyObject)[rowKey as string]\n return (\n <Row\n key={_rowKey}\n className={clsx(rowClassName?.(e, rowIndex))}\n rowIndex={rowIndex + startIndex}\n rowData={e}\n columns={columnDescriptor}\n onRow={onRow}\n renderRow={renderRow}\n renderCell={renderCell}\n />\n )\n })}\n </tbody>,\n renderBody,\n { columns, columnDescriptor: descriptor },\n )\n\n const { setWidthList } = useColumnSizes()\n\n const tableNode = pipelineRender(\n <table\n className={clsx(className, 'virtual-table-body')}\n style={{ ...style, paddingBottom: bottomBlank, paddingTop: topBlank }}\n ref={bodyRootRef}\n >\n <Colgroup\n columns={descriptor}\n onColumnSizesMeasure={setWidthList}\n />\n {bodyNode}\n </table>,\n renderBodyRoot,\n { columns, columnDescriptor: descriptor },\n )\n\n const { listen, notify } = useHorizontalScrollContext()\n const wrapperRef = useRef<HTMLDivElement>(null)\n useEffect(() => {\n const node = wrapperRef.current\n if (node == null) return\n\n const key = 'virtual-table-body'\n const onScroll = () => {\n notify(key, { scrollLeft: () => node.scrollLeft, node })\n }\n const dispose = listen(key, (scrollLeft) => {\n node.scrollLeft = scrollLeft\n })\n node.addEventListener('scroll', onScroll)\n return () => {\n node.removeEventListener('scroll', onScroll)\n dispose()\n }\n }, [listen, notify])\n\n const mergedRef = useMergedRef(wrapperRef, bodyWrapperRef)\n\n return (\n <TableRowManager.Provider value={rowManageState}>\n {pipelineRender(\n <div\n ref={mergedRef}\n className=\"virtual-table-body-wrapper\"\n >\n {tableNode}\n </div>,\n renderBodyWrapper,\n { columns, columnDescriptor: descriptor },\n )}\n </TableRowManager.Provider>\n )\n}\n\nexport default TableBody\n","import type { CSSProperties, FC, RefObject } from 'react'\nimport type {\n MiddlewareRenderHeader,\n MiddlewareRenderHeaderCell,\n MiddlewareRenderHeaderRoot,\n MiddlewareRenderHeaderRow,\n MiddlewareRenderHeaderWrapper,\n} from './pipeline/types'\nimport type { InnerColumnDescriptor } from './types'\nimport clsx from 'clsx'\nimport { createElement, Fragment, useEffect, useRef } from 'react'\nimport { findLastIndex } from '../utils/find-last-index'\nimport { useMergedRef } from '../utils/ref'\nimport Colgroup from './colgroup'\nimport { useColumnSizes } from './context/column-sizes'\nimport { useHorizontalScrollContext } from './context/horizontal-scroll'\nimport { useTableSticky } from './context/sticky'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport { getKey } from './utils/get-key'\nimport { isValidFixed, isValidFixedLeft, isValidFixedRight } from './utils/verification'\n\nexport interface TableHeaderProps {\n className?: string\n style?: CSSProperties\n\n wrapperRef?: RefObject<HTMLDivElement>\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n columns: InnerColumnDescriptor<any>\n\n /** 开启表头 sticky,设置为 true 则默认 top 为 0,为 number 则是偏移量 */\n stickyHeader?: number | boolean\n\n renderHeaderWrapper?: MiddlewareRenderHeaderWrapper\n renderHeaderRoot?: MiddlewareRenderHeaderRoot\n renderHeader?: MiddlewareRenderHeader\n renderHeaderRow?: MiddlewareRenderHeaderRow\n renderHeaderCell?: MiddlewareRenderHeaderCell\n}\n\nconst TableHeader: FC<TableHeaderProps> = (props) => {\n const {\n className,\n style,\n wrapperRef,\n columns: columnDescriptor,\n stickyHeader,\n renderHeaderWrapper,\n renderHeaderRoot,\n renderHeader,\n renderHeaderRow,\n renderHeaderCell,\n } = props\n\n const { columns, descriptor } = columnDescriptor\n const lastColumn = columns[columns.length - 1]\n\n const { widthList } = useColumnSizes()\n const { size: stickySizes } = useTableSticky()\n\n const lastFixedLeftColumnIndex = findLastIndex(descriptor, (x) => {\n if (x.type === 'blank') {\n return false\n }\n return isValidFixedLeft(x.column.fixed)\n })\n const firstFixedRightColumnIndex = descriptor.findIndex((x) => {\n if (x.type === 'blank') {\n return false\n }\n return isValidFixedRight(x.column.fixed)\n })\n const { listen, notify } = useHorizontalScrollContext()\n\n const headerWrapperRef = useRef<HTMLDivElement>(null)\n useEffect(() => {\n const node = headerWrapperRef.current\n if (node == null) return\n const key = 'virtual-table-header'\n const onScroll = () => {\n notify(key, { scrollLeft: () => node.scrollLeft, node })\n }\n const dispose = listen(key, (scrollLeft) => {\n node.scrollLeft = scrollLeft\n })\n node.addEventListener('scroll', onScroll)\n return () => {\n node.removeEventListener('scroll', onScroll)\n dispose()\n }\n }, [listen, notify])\n\n const row = pipelineRender(\n <tr>\n {descriptor.map((item, index) => {\n const { key } = item\n if (item.type === 'blank') {\n return <th key={key} data-blank />\n }\n\n const { column } = item\n\n if (column.colSpan === 0) {\n return null\n }\n\n const isLast = getKey(lastColumn) === key\n const {\n className: thClassName,\n style: thStyle,\n ...rest\n } = column.onHeaderCell?.(column, index) ?? {}\n\n return (\n <Fragment key={key}>\n {pipelineRender(\n createElement(\n 'th',\n {\n scope: 'col',\n ...rest,\n colSpan: column.colSpan,\n className: clsx(\n 'virtual-table-header-cell',\n isLast && 'no-split',\n column.align != null && `virtual-table-align-${column.align}`,\n isValidFixed(column.fixed) && 'virtual-table-sticky-cell',\n lastFixedLeftColumnIndex === index && 'virtual-table-cell-fix-left-last',\n firstFixedRightColumnIndex === index && 'virtual-table-cell-fix-right-first',\n column.className,\n thClassName,\n ),\n style: {\n ...thStyle,\n left: isValidFixedLeft(column.fixed) ? stickySizes.get(key) : undefined,\n right: isValidFixedRight(column.fixed)\n ? stickySizes.get(key)\n : undefined,\n },\n },\n column.title,\n ),\n renderHeaderCell,\n { column, columns, columnWidths: widthList, columnDescriptor: descriptor },\n )}\n </Fragment>\n )\n })}\n </tr>,\n renderHeaderRow,\n { columns, columnDescriptor: descriptor },\n )\n\n const theadNode = pipelineRender(\n <thead className=\"virtual-table-thead\">{row}</thead>,\n renderHeader,\n { columns, columnDescriptor: descriptor },\n )\n\n const tableNode = pipelineRender(\n <table\n style={style}\n >\n <Colgroup columns={descriptor} />\n {theadNode}\n </table>,\n renderHeaderRoot,\n { columns, columnDescriptor: descriptor },\n )\n\n const mergedRef = useMergedRef(wrapperRef, headerWrapperRef)\n\n return pipelineRender(\n <div\n ref={mergedRef}\n className={clsx('virtual-table-header', className, {\n 'virtual-table-header-sticky': stickyHeader,\n })}\n style={{\n top: Number.isFinite(stickyHeader) ? (stickyHeader as number) : undefined,\n }}\n >\n {tableNode}\n </div>,\n renderHeaderWrapper,\n { columns, columnDescriptor: descriptor },\n )\n}\n\nexport default TableHeader\n","import type { Key, RefObject } from 'react'\nimport type { ColumnDescriptor, ColumnType } from '../types'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport { findLastIndex } from '../../utils/find-last-index'\nimport { getKey } from '../utils/get-key'\nimport { onResize } from '../utils/on-resize'\nimport { isValidFixedLeft, isValidFixedRight } from '../utils/verification'\nimport { useStableFn } from './useStableFn'\n\ninterface UseColumnVirtualizeOptions<T> {\n estimateSize: number\n overscan: number\n columns: ColumnType<T>[]\n bodyWrapper: RefObject<HTMLDivElement>\n columnWidths: Map<Key, number>\n disabled?: boolean\n}\n\ninterface Rect {\n index: number\n width: number\n left: number\n right: number\n}\n\nfunction anchorQuery(rects: Rect[], scrollLeft: number) {\n let left = 0\n let right = rects.length - 1\n let index = -1\n\n while (left <= right) {\n const mid = Math.floor((left + right) / 2)\n\n if (rects[mid].right > scrollLeft) {\n index = mid\n right = mid - 1\n } else {\n left = mid + 1\n }\n }\n\n if (index === -1) {\n return undefined\n }\n\n return rects[index]\n}\n\nfunction findFirstFixedRightIndex<T>(columns: ColumnType<T>[]) {\n let index = -1\n for (let i = columns.length - 1; i >= 0; i--) {\n const column = columns[i]\n if (isValidFixedRight(column.fixed)) {\n index = i\n } else {\n break\n }\n }\n return index\n}\n\nfunction findLastFixedLeftIndex<T>(columns: ColumnType<T>[]) {\n return findLastIndex(columns, (x) => isValidFixedLeft(x.fixed))\n}\n\nexport function useColumnVirtualize<T>(options: UseColumnVirtualizeOptions<T>) {\n const {\n estimateSize,\n overscan,\n columns: rawColumns,\n bodyWrapper,\n columnWidths,\n disabled = false,\n } = options\n\n const lastFixedLeftIndex = findLastFixedLeftIndex(rawColumns)\n const firstFixedRightIndex = findFirstFixedRightIndex(rawColumns)\n\n const leftKey = lastFixedLeftIndex > -1 ? getKey(rawColumns[lastFixedLeftIndex]) : null\n const rightKey = firstFixedRightIndex > -1 ? getKey(rawColumns[firstFixedRightIndex]) : null\n\n const [startIndex, setStartIndex] = useState(0)\n const [endIndex, setEndIndex] = useState(0)\n\n const rects = useMemo(() => {\n if (disabled) {\n return []\n }\n let left = 0\n return rawColumns.map((column, index): Rect => {\n const key = getKey(column)\n const width = columnWidths.get(key) ?? estimateSize\n const right = left + width\n const rect: Rect = {\n index,\n width,\n left,\n right,\n }\n\n left = right\n return rect\n })\n }, [rawColumns, columnWidths, estimateSize, disabled])\n\n // 锚点元素\n const anchorRef = useRef<Rect>({\n index: 0,\n width: estimateSize,\n left: 0,\n right: estimateSize,\n })\n\n const findAnchorRef = useStableFn((scrollLeft: number) => {\n return anchorQuery(rects, scrollLeft)\n })\n\n const updateBoundary = useStableFn((scrollLeft: number, count: number) => {\n const anchor = findAnchorRef(scrollLeft)\n if (anchor != null) {\n anchorRef.current = anchor\n setStartIndex(Math.max(0, anchor.index - overscan))\n setEndIndex(anchor.index + count + overscan)\n }\n })\n\n // 用来判断滚动方向\n const scrollLeftRef = useRef(0)\n useEffect(() => {\n if (disabled) return\n\n const scrollContainer = bodyWrapper.current\n if (scrollContainer == null) return\n\n const containerWidth = scrollContainer.offsetWidth\n let count = Math.ceil(containerWidth / estimateSize)\n\n const onScroll = () => {\n const scrollLeft = scrollContainer.scrollLeft\n // 滚动条向右移动(界面向左运动)\n const isScrollRight = scrollLeft > scrollLeftRef.current\n if (isScrollRight) {\n if (scrollLeft > anchorRef.current.right) {\n updateBoundary(scrollLeft, count)\n }\n } else {\n if (scrollLeft < anchorRef.current.left) {\n updateBoundary(scrollLeft, count)\n }\n }\n\n scrollLeftRef.current = scrollLeft\n }\n\n scrollContainer.addEventListener('scroll', onScroll)\n\n let prevWidth = 0\n const stop = onResize(scrollContainer, ({ width }) => {\n if (width === prevWidth || width === 0) {\n return\n }\n prevWidth = width\n const scrollLeft = scrollContainer.scrollLeft\n count = Math.ceil(width / estimateSize)\n updateBoundary(scrollLeft, count)\n })\n return () => {\n scrollContainer.removeEventListener('scroll', onScroll)\n stop()\n }\n }, [bodyWrapper, estimateSize, updateBoundary, overscan, findAnchorRef, disabled])\n\n const sum = (startIndex: number, endIndex?: number) => {\n return rects.slice(startIndex, endIndex).reduce((a, b) => a + b.width, 0)\n }\n\n const fixedLeftWidth = lastFixedLeftIndex > -1 ? sum(0, lastFixedLeftIndex + 1) : 0\n const fixedRightWidth = firstFixedRightIndex > -1 ? sum(firstFixedRightIndex) : 0\n\n // 设置 column.fixed 时,对应列将不会虚拟化,所以 blank 需要去除这些列的宽度\n const leftBlank = Math.max(0, sum(0, startIndex) - fixedLeftWidth)\n const rightBlank = Math.max(0, sum(endIndex) - fixedRightWidth)\n\n const columnSlice = useMemo(() => {\n if (disabled) {\n return rawColumns\n }\n const result = [\n ...rawColumns.slice(0, lastFixedLeftIndex + 1),\n ...rawColumns.slice(startIndex, endIndex),\n ...rawColumns.slice(firstFixedRightIndex),\n ]\n const unionKey = new Set<Key>()\n return result.filter((column) => {\n const key = getKey(column)\n if (unionKey.has(key)) {\n return false\n }\n unionKey.add(key)\n return true\n })\n }, [disabled, rawColumns, startIndex, endIndex, lastFixedLeftIndex, firstFixedRightIndex])\n\n const descriptor = useMemo(() => {\n return columnSlice.reduce<ColumnDescriptor<T>[]>((result, column, index) => {\n const key = getKey(column)\n if (key === leftKey) {\n result.push({ type: 'normal', key, column })\n result.push({ type: 'blank', key: '_blank_left', width: leftBlank })\n } else if (leftKey == null && index === 0) {\n result.push({ type: 'blank', key: '_blank_left', width: leftBlank })\n result.push({ type: 'normal', key, column })\n } else if (key === rightKey) {\n result.push({ type: 'blank', key: '_blank_right', width: rightBlank })\n result.push({ type: 'normal', key, column })\n } else if (rightKey == null && index === columnSlice.length - 1) {\n result.push({ type: 'normal', key, column })\n result.push({ type: 'blank', key: '_blank_right', width: rightBlank })\n } else {\n result.push({ type: 'normal', key, column })\n }\n return result\n }, [])\n }, [columnSlice, leftKey, rightKey, leftBlank, rightBlank])\n\n const columns = useMemo(() => {\n return { columns: columnSlice, descriptor }\n }, [columnSlice, descriptor])\n\n return { columns, columnSlice, lastFixedLeftIndex, firstFixedRightIndex }\n}\n","import type { CSSProperties, ForwardedRef, ReactNode, RefObject } from 'react'\nimport type { PipelineRender } from './pipeline/types'\nimport clsx from 'clsx'\nimport { forwardRef, useEffect, useRef, useState } from 'react'\nimport { useMergedRef } from '../utils/ref'\nimport { useHorizontalScrollContext } from './context/horizontal-scroll'\nimport { pipelineRender } from './pipeline/render-pipeline'\n\nexport interface TableRootProps {\n className?: string\n style?: CSSProperties\n children?: ReactNode\n hasFixedLeftColumn?: boolean\n hasFixedRightColumn?: boolean\n bodyScrollContainer: RefObject<HTMLElement>\n renderRoot?: PipelineRender\n}\n\nfunction TableRoot(props: TableRootProps, ref: ForwardedRef<HTMLDivElement>) {\n const {\n className,\n style,\n children,\n hasFixedLeftColumn,\n hasFixedRightColumn,\n renderRoot,\n bodyScrollContainer,\n } = props\n\n const rootNode = useRef<HTMLDivElement>(null)\n\n const [hasFixedLeft, setHasFixedLeft] = useState(false)\n const [hasFixedRight, setHasFixedRight] = useState(false)\n\n const { listen } = useHorizontalScrollContext()\n useEffect(() => {\n if (!hasFixedLeftColumn && !hasFixedRightColumn) {\n return\n }\n const onCheckHasFixedEdge = (node: HTMLElement) => {\n const { scrollLeft, clientWidth, scrollWidth } = node\n if (hasFixedLeftColumn) {\n setHasFixedLeft(scrollLeft !== 0)\n }\n if (hasFixedRightColumn) {\n setHasFixedRight(!(scrollLeft + clientWidth >= scrollWidth))\n }\n }\n const node = bodyScrollContainer.current\n if (node != null) {\n onCheckHasFixedEdge(node)\n }\n return listen('__root', (_scrollLeft, node) => {\n onCheckHasFixedEdge(node)\n })\n }, [bodyScrollContainer, hasFixedLeftColumn, hasFixedRightColumn, listen])\n\n const mergedRef = useMergedRef(ref, rootNode)\n return pipelineRender(\n <div\n ref={mergedRef}\n className={clsx(\n 'virtual-table',\n hasFixedLeft && 'virtual-table-has-fix-left',\n hasFixedRight && 'virtual-table-has-fix-right',\n className,\n )}\n style={style}\n >\n {children}\n </div>,\n renderRoot,\n {},\n )\n}\n\nexport default forwardRef(TableRoot)\n","import type { CSSProperties, ForwardedRef, Key, ReactElement, Ref, RefAttributes } from 'react'\nimport type { TableBodyProps } from './body'\nimport type { TableColumnsContextType } from './context/column-sizes'\nimport type { NecessaryProps } from './internal'\nimport type { ColumnDescriptor, OnRowType } from './types'\nimport clsx from 'clsx'\nimport {\n forwardRef,\n memo,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { getScrollParent, isRoot, isWindow } from '../utils/dom'\nimport { useMergedRef } from '../utils/ref'\nimport TableBody from './body'\nimport { ColumnSizes } from './context/column-sizes'\nimport { ContainerSizeContext } from './context/container-size'\nimport { HorizontalScrollContext } from './context/horizontal-scroll'\nimport { StickyContext } from './context/sticky'\nimport TableHeader from './header'\nimport { useColumnVirtualize } from './hooks/useColumnVirtualize'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport { TablePipeline } from './pipeline/useTablePipeline'\nimport TableRoot from './root'\nimport { getKey } from './utils/get-key'\nimport { isValidFixedLeft, isValidFixedRight } from './utils/verification'\n\nexport interface VirtualTableCoreProps<T>\n extends NecessaryProps<T>,\n Pick<TableBodyProps<T>, 'rowClassName' | 'onRow'> {\n bodyRootRef?: Ref<HTMLTableElement>\n\n className?: string\n style?: CSSProperties\n\n tableBodyClassName?: string\n tableBodyStyle?: CSSProperties\n\n /** 开启表头 sticky,设置为 true 则默认 top 为 0,为 number 则是偏移量 */\n stickyHeader?: number | boolean\n\n /** 预计每列宽度,需要横向虚拟化时,设置它 */\n estimatedColumnWidth?: number\n /** 预计每行高度 @default 46 */\n estimatedRowHeight?: number\n /** 在头和尾额外渲染多少行 @default 5 */\n overscanRows?: number\n /** 横向虚拟化时,在头和尾额外渲染多少列 @default 3 */\n overscanColumns?: number\n\n /** 开启表头虚拟滚动 @default true */\n virtualHeader?: boolean\n\n pipeline?: TablePipeline<T>\n\n getOffsetTop?: () => number\n}\n\nfunction VirtualTableCore<T>(\n props: VirtualTableCoreProps<T>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const {\n bodyRootRef,\n className,\n style,\n tableBodyClassName,\n tableBodyStyle,\n columns: rawColumns,\n dataSource: rawData,\n rowKey: rawRowKey = 'key',\n estimatedRowHeight = 46,\n estimatedColumnWidth,\n overscanRows = 5,\n overscanColumns = 3,\n stickyHeader,\n pipeline = (TablePipeline.defaultPipeline as TablePipeline<T>),\n rowClassName: rawRowClassName,\n onRow,\n getOffsetTop: getOffsetTopImpl,\n virtualHeader = true,\n } = props\n\n const rootNode = useRef<HTMLDivElement>(null)\n\n const headerWrapperRef = useRef<HTMLDivElement>(null)\n const bodyWrapperRef = useRef<HTMLDivElement>(null)\n const bodyRoot = useRef<HTMLTableElement>(null)\n const mergedBodyRootRef = useMergedRef(bodyRoot, bodyRootRef)\n const bodyRef = useRef<HTMLTableSectionElement>(null)\n\n const getScroller = useCallback(() => {\n const root = rootNode.current\n if (root == null) return\n return getScrollParent(root)\n }, [])\n\n const getOffsetTop = useCallback(() => {\n if (typeof getOffsetTopImpl === 'function') {\n return getOffsetTopImpl()\n }\n const scrollContainer = getScroller()\n if (scrollContainer === rootNode.current) {\n return 0\n }\n if (isWindow(scrollContainer) || isRoot(scrollContainer)) {\n const top = rootNode.current?.getBoundingClientRect().top ?? 0\n return window.scrollY + top\n }\n return rootNode.current?.offsetTop ?? 0\n }, [getOffsetTopImpl, getScroller])\n\n const {\n dataSource,\n columns: pipelineColumns,\n rowKey,\n rowClassName,\n\n render,\n renderRoot,\n renderContent,\n renderHeaderWrapper,\n renderHeaderRoot,\n renderHeader,\n renderHeaderRow,\n renderHeaderCell,\n renderBodyWrapper,\n renderBodyRoot,\n renderBody,\n renderRow,\n renderCell,\n\n onRow: onPipelineRow,\n } = pipeline.use({\n dataSource: rawData,\n rowKey: rawRowKey,\n columns: rawColumns,\n estimatedRowHeight,\n headerWrapperRef,\n bodyWrapperRef,\n bodyRootRef: bodyRoot,\n bodyRef,\n rootRef: rootNode,\n getOffsetTop,\n getScroller,\n })\n\n const [columnWidths, setColumnWidths] = useState(() => new Map<Key, number>())\n const columnWidthsRef = useRef(columnWidths)\n const updateColumnWidths = useCallback((value: Map<Key, number>) => {\n columnWidthsRef.current = value\n setColumnWidths(value)\n }, [])\n\n const tableColumnsContext = useMemo<TableColumnsContextType>(() => {\n return {\n widthList: columnWidths,\n setWidthList: updateColumnWidths,\n }\n }, [columnWidths, updateColumnWidths])\n\n const { columns } = useColumnVirtualize<T>({\n estimateSize: estimatedColumnWidth ?? 100,\n overscan: overscanColumns,\n columns: pipelineColumns,\n bodyWrapper: bodyWrapperRef,\n columnWidths,\n disabled: estimatedColumnWidth == null,\n })\n\n if (__DEV__) {\n pipelineColumns.forEach((column) => {\n if (column.width == null && column.minWidth == null) {\n console.warn('Missing `width` in column', column)\n }\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (getKey(column) == null) {\n console.error('Missing `dataIndex` or `key` in column', column)\n }\n })\n }\n\n const onRowClassName = useCallback((record: T, index: number) => {\n return clsx(rawRowClassName?.(record, index), rowClassName?.(record, index))\n }, [rawRowClassName, rowClassName])\n\n const onRowProps: OnRowType<T> = useCallback((record, index) => {\n return { ...onRow?.(record, index), ...onPipelineRow?.(record, index) }\n }, [onPipelineRow, onRow])\n\n const hasFixedLeftColumn = pipelineColumns.some((x) => isValidFixedLeft(x.fixed))\n const hasFixedRightColumn = pipelineColumns.some((x) => isValidFixedRight(x.fixed))\n\n const fullHeaderColumns = useMemo(() => {\n return {\n columns: pipelineColumns,\n descriptor: pipelineColumns.map((column): ColumnDescriptor => {\n const key = getKey(column)\n return {\n key,\n type: 'normal',\n column,\n }\n }),\n }\n }, [pipelineColumns])\n\n const headerColumns = useMemo(() => {\n if (virtualHeader) {\n return columns\n }\n return fullHeaderColumns\n }, [virtualHeader, fullHeaderColumns, columns])\n\n const contentNode = pipelineRender(\n <>\n <TableHeader\n wrapperRef={headerWrapperRef}\n columns={headerColumns}\n stickyHeader={stickyHeader}\n renderHeaderWrapper={renderHeaderWrapper}\n renderHeaderRoot={renderHeaderRoot}\n renderHeader={renderHeader}\n renderHeaderRow={renderHeaderRow}\n renderHeaderCell={renderHeaderCell}\n />\n <TableBody\n bodyWrapperRef={bodyWrapperRef}\n bodyRootRef={mergedBodyRootRef}\n bodyRef={bodyRef}\n className={tableBodyClassName}\n style={tableBodyStyle}\n columns={columns}\n rowKey={rowKey}\n dataSource={dataSource}\n overscan={overscanRows}\n estimateSize={estimatedRowHeight}\n getScroller={getScroller}\n getOffsetTop={getOffsetTop}\n rowClassName={onRowClassName}\n onRow={onRowProps}\n renderBodyWrapper={renderBodyWrapper}\n renderBodyRoot={renderBodyRoot}\n renderBody={renderBody}\n renderRow={renderRow}\n renderCell={renderCell}\n />\n </>,\n renderContent,\n { columns: columns.columns, columnDescriptor: columns.descriptor },\n )\n\n const rootMergedRef = useMergedRef(rootNode, ref)\n const table = pipelineRender(\n <TableRoot\n ref={rootMergedRef}\n className={className}\n style={style}\n hasFixedLeftColumn={hasFixedLeftColumn}\n hasFixedRightColumn={hasFixedRightColumn}\n renderRoot={renderRoot}\n bodyScrollContainer={bodyWrapperRef}\n >\n {contentNode}\n </TableRoot>,\n render,\n { columns: columns.columns, columnDescriptor: columns.descriptor },\n )\n\n return (\n <ColumnSizes.Provider value={tableColumnsContext}>\n <StickyContext columns={pipelineColumns}>\n <ContainerSizeContext getScroller={getScroller} root={rootNode}>\n <HorizontalScrollContext>{table}</HorizontalScrollContext>\n </ContainerSizeContext>\n </StickyContext>\n </ColumnSizes.Provider>\n )\n}\n\nif (__DEV__) {\n VirtualTableCore.displayName = 'VirtualTable.Core'\n}\n\nexport default memo(forwardRef(VirtualTableCore)) as <T>(\n props: VirtualTableCoreProps<T> & RefAttributes<HTMLDivElement>,\n) => ReactElement\n"],"names":["shallowEqualObjects","objA","objB","aKeys","Object","keys","bKeys","len","length","i","key","prototype","hasOwnProperty","call","shallowEqualArrays","arrA","arrB","isShallowEqual","value","oldValue","is","Array","isArray","hasObject","findIndex","x","every","state","index","Map","from","oldKeys","values","oldValues","useShallowMemo","pickData","nextState","useRef","current","getKey","column","dataIndex","isValidFixedLeft","fixed","isValidFixedRight","isValidFixed","ColumnSizes","createContext","__DEV__","displayName","useColumnSizes","context","useContext","Error","Sticky","StickyContext","props","columns","children","_useColumnSizes","widthList","columnsFixedRecord","useMemo","map","stickySizes","left","leftOffset","reduce","res","item","_widthList$get","get","right","rightOffset","reduceRight","_widthList$get2","result","set","shallowMemoFixedRecord","shallowMemoStickySizes","stickyState","size","_jsx","Provider","useTableSticky","pipelineRender","node","render","options","getTableCellContent","data","_render","rowData","Cell","_onCell","className","style","rowIndex","renderCell","restProps","_objectWithoutPropertiesLoose","_excluded","align","onCell","_useTableSticky","_ref","extraClassName","extraStyle","colSpan","rowSpan","extraProps","_excluded2","_extends","clsx","undefined","memo","Colgroup","onColumnSizesMeasure","enableMeasure","columnSizes","prevColumnSizes","ref","type","width","offsetWidth","minWidth","overflowStylePatterns","isElement","Node","ELEMENT_NODE_TYPE","nodeType","getScrollParent","el","root","_el$ownerDocument$def","window","document","body","_window$getComputedSt","getComputedStyle","overflow","overflowY","overflowX","test","parentNode","ownerDocument","defaultView","isWindow","arg","toString","isDocument","isRoot","getScrollElement","scrollingElement","useCalcSize","getScroller","_useState","useState","scrollContainerWidth","setScrollContainerWidth","_useState2","scrollContainerHeight","setScrollContainerHeight","_useState3","tableWidth","setTableWidth","_useState4","tableHeight","setTableHeight","scrollerContainerRef","useLayoutEffect","scrollerContainer","scroller","observer","ResizeObserver","entries","_entries$0$contentRec","contentRect","height","observe","disconnect","_entries$0$contentRec2","ContainerSize","ContainerSizeContext","_useCalcSize","useContainerSize","HorizontalScroll","HorizontalScrollContext","listenerMap","skipEvent","Set","listen","listener","scrollLeft","notify","has","rAF","requestAnimationFrame","fn","forEach","itemKey","add","useHorizontalScrollContext","TableRowManager","useTableRowManager","useStableFn","callback","stableFn","useCallback","_len","arguments","args","_key","apply","createMiddleware","hook","cache","useMiddleware","ctx","concat","_cache$current","shakeUnsafeHooks","hooks","filter","priority","TablePipeline","defineProperty","use","bind","_proto","setHooks","renderFunctionMap","renderRoot","renderContent","renderHeaderWrapper","renderHeaderRoot","renderHeader","renderHeaderRow","renderHeaderCell","renderBodyWrapper","renderBodyRoot","renderBody","renderRow","rowClassNameFunctions","onRowFunctions","slice","sort","a","b","nextCtx","rowClassName","onRow","rest","target","push","_ref2","renders","record","useTablePipeline","extraPipeline","pipeline","cached","_extraPipeline$hooks","nextHooks","findLastIndex","arr","predicate","Row","_onRow","columnDescriptor","_useTableRowManager","updateRowHeight","descriptor","lastFixedLeftColumnIndex","firstFixedRightColumnIndex","offsetHeight","assignRef","mergeRefs","refs","useMergedRef","_len2","_key2","onResize","innerWidth","innerHeight","addEventListener","removeEventListener","rect","anchorQuery","rects","scrollTop","mid","Math","floor","bottom","useRowVirtualize","getOffsetTop","rawData","dataSource","estimateSize","overscan","startIndex","setStartIndex","endIndex","setEndIndex","dataSlice","rowHeights","fillRowHeights","rowRects","updateRowRectList","shouldSkip","_rowHeights$current$r","nextTop","top","setRowHeight","anchorRef","scrollTopRef","initial","useEffect","container","count","getScrollTop","offsetTop","scrollY","element","max","calcCount","scrollerContainerHeight","prevCount","ceil","updateBoundary","anchor","onScroll","e","scrollElement","isScrollDown","prevHeight","stopListen","nextStartIndex","nextEndIndex","sum","topBlank","bottomBlank","rowHeightList","TableBody","bodyWrapperRef","bodyRootRef","bodyRef","rowKey","_useRowVirtualize","_rowHeights$current$g","rowManageState","getRowHeightList","tbodyRef","elm","bodyHeight","heights","row","clear","bodyNode","_rowKey","setWidthList","tableNode","_jsxs","paddingBottom","paddingTop","_useHorizontalScrollC","wrapperRef","dispose","mergedRef","TableHeader","stickyHeader","lastColumn","headerWrapperRef","_column$onHeaderCell","isLast","onHeaderCell","thClassName","thStyle","Fragment","createElement","scope","title","columnWidths","theadNode","Number","isFinite","findFirstFixedRightIndex","findLastFixedLeftIndex","useColumnVirtualize","rawColumns","bodyWrapper","_options$disabled","disabled","lastFixedLeftIndex","firstFixedRightIndex","leftKey","rightKey","_columnWidths$get","findAnchorRef","scrollLeftRef","scrollContainer","containerWidth","isScrollRight","prevWidth","stop","fixedLeftWidth","fixedRightWidth","leftBlank","rightBlank","columnSlice","unionKey","TableRoot","hasFixedLeftColumn","hasFixedRightColumn","bodyScrollContainer","rootNode","hasFixedLeft","setHasFixedLeft","hasFixedRight","setHasFixedRight","onCheckHasFixedEdge","clientWidth","scrollWidth","_scrollLeft","forwardRef","VirtualTableCore","tableBodyClassName","tableBodyStyle","_props$rowKey","rawRowKey","_props$estimatedRowHe","estimatedRowHeight","estimatedColumnWidth","_props$overscanRows","overscanRows","_props$overscanColumn","overscanColumns","_props$pipeline","defaultPipeline","rawRowClassName","getOffsetTopImpl","_props$virtualHeader","virtualHeader","bodyRoot","mergedBodyRootRef","_rootNode$current$off","_rootNode$current2","_rootNode$current$get","_rootNode$current","getBoundingClientRect","_pipeline$use","rootRef","pipelineColumns","onPipelineRow","setColumnWidths","columnWidthsRef","updateColumnWidths","tableColumnsContext","_useColumnVirtualize","console","warn","error","onRowClassName","onRowProps","some","fullHeaderColumns","headerColumns","contentNode","_Fragment","rootMergedRef","table"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@are-visual/virtual-table",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "main": "./index.esm.js",
5
5
  "types": "./index.d.ts",
6
6
  "sideEffects": false,