@are-visual/virtual-table 0.10.0 → 0.10.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.esm.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
2
2
  import clsx from 'clsx';
3
- import { useRef, createContext, useContext, useMemo, memo, useState, useLayoutEffect, useCallback, useEffect, Fragment, createElement, forwardRef } from 'react';
3
+ import { useRef, createContext, useContext, useMemo, memo, useLayoutEffect, useState, useCallback, useEffect, Fragment, createElement, forwardRef } from 'react';
4
4
 
5
5
  function _arrayLikeToArray(r, a) {
6
6
  (null == a || a > r.length) && (a = r.length);
@@ -322,46 +322,6 @@ function Cell(props) {
322
322
  }
323
323
  var Cell$1 = /*#__PURE__*/memo(Cell);
324
324
 
325
- var Colgroup = function Colgroup(props) {
326
- var columns = props.columns,
327
- onColumnSizesMeasure = props.onColumnSizesMeasure;
328
- var enableMeasure = onColumnSizesMeasure != null;
329
- var columnSizes = new Map();
330
- var prevColumnSizes = useRef(new Map());
331
- return jsx("colgroup", {
332
- ref: function ref() {
333
- if (!enableMeasure) return;
334
- if (!isShallowEqual(columnSizes, prevColumnSizes.current)) {
335
- onColumnSizesMeasure(columnSizes);
336
- prevColumnSizes.current = columnSizes;
337
- }
338
- },
339
- children: columns.map(function (item) {
340
- var key = item.key;
341
- if (item.type === 'blank') {
342
- return jsx("col", {
343
- className: "blank",
344
- style: {
345
- width: item.width
346
- }
347
- }, key);
348
- }
349
- var column = item.column;
350
- return jsx("col", {
351
- ref: function ref(node) {
352
- if (node == null || !enableMeasure) return;
353
- columnSizes.set(key, node.offsetWidth);
354
- },
355
- style: {
356
- width: column.width,
357
- minWidth: column.minWidth
358
- }
359
- }, key);
360
- })
361
- });
362
- };
363
- var Colgroup$1 = /*#__PURE__*/memo(Colgroup);
364
-
365
325
  var overflowStylePatterns = /auto|scroll|overlay|hidden/;
366
326
  function isElement(node) {
367
327
  if (!(node instanceof Node)) {
@@ -427,6 +387,90 @@ function getRelativeOffsetTop(el, ancestor) {
427
387
  return elRect.top - ancestorRect.top - ancestorBorderTop + ancestorScrollTop;
428
388
  }
429
389
 
390
+ function onResize(target, callback) {
391
+ if (isWindow(target)) {
392
+ var listener = function listener() {
393
+ callback({
394
+ width: window.innerWidth,
395
+ height: window.innerHeight
396
+ });
397
+ };
398
+ listener();
399
+ window.addEventListener('resize', listener);
400
+ return function () {
401
+ window.removeEventListener('resize', listener);
402
+ };
403
+ } else {
404
+ var observer = new ResizeObserver(function (entries) {
405
+ var rect = entries[0].contentRect;
406
+ callback({
407
+ width: rect.width,
408
+ height: rect.height
409
+ });
410
+ });
411
+ observer.observe(target);
412
+ return function () {
413
+ observer.disconnect();
414
+ };
415
+ }
416
+ }
417
+
418
+ var Colgroup = function Colgroup(props) {
419
+ var columns = props.columns,
420
+ onColumnSizesMeasure = props.onColumnSizesMeasure;
421
+ var enableMeasure = onColumnSizesMeasure != null;
422
+ var columnSizes = new Map();
423
+ var prevColumnSizes = useRef(new Map());
424
+ var node = useRef(null);
425
+ useLayoutEffect(function () {
426
+ if (!enableMeasure) return;
427
+ var colgroupNode = node.current;
428
+ if (colgroupNode == null) return;
429
+ return onResize(colgroupNode, function (_ref) {
430
+ var width = _ref.width;
431
+ if (width === 0) return;
432
+ var sizes = new Map();
433
+ columnSizes.forEach(function (item, key) {
434
+ sizes.set(key, item());
435
+ });
436
+ if (!isShallowEqual(sizes, prevColumnSizes.current)) {
437
+ onColumnSizesMeasure(sizes);
438
+ prevColumnSizes.current = sizes;
439
+ }
440
+ });
441
+ });
442
+ return jsx("colgroup", {
443
+ ref: node,
444
+ children: columns.map(function (item) {
445
+ var key = item.key;
446
+ if (item.type === 'blank') {
447
+ return jsx("col", {
448
+ className: "blank",
449
+ style: {
450
+ width: item.width
451
+ }
452
+ }, key);
453
+ }
454
+ var column = item.column;
455
+ return jsx("col", {
456
+ ref: function ref(node) {
457
+ if (node == null || !enableMeasure) return;
458
+ // eslint-disable-next-line react-compiler/react-compiler
459
+ columnSizes.set(key, function () {
460
+ return node.offsetWidth;
461
+ });
462
+ },
463
+ "data-col-key": key,
464
+ style: {
465
+ width: column.width,
466
+ minWidth: column.minWidth
467
+ }
468
+ }, key);
469
+ })
470
+ });
471
+ };
472
+ var Colgroup$1 = /*#__PURE__*/memo(Colgroup);
473
+
430
474
  function useCalcSize(options) {
431
475
  var getScroller = options.getScroller,
432
476
  root = options.root;
@@ -588,34 +632,6 @@ function useTableRowManager() {
588
632
  return context;
589
633
  }
590
634
 
591
- function onResize(target, callback) {
592
- if (isWindow(target)) {
593
- var listener = function listener() {
594
- callback({
595
- width: window.innerWidth,
596
- height: window.innerHeight
597
- });
598
- };
599
- listener();
600
- window.addEventListener('resize', listener);
601
- return function () {
602
- window.removeEventListener('resize', listener);
603
- };
604
- } else {
605
- var observer = new ResizeObserver(function (entries) {
606
- var rect = entries[0].contentRect;
607
- callback({
608
- width: rect.width,
609
- height: rect.height
610
- });
611
- });
612
- observer.observe(target);
613
- return function () {
614
- observer.disconnect();
615
- };
616
- }
617
- }
618
-
619
635
  function anchorQuery$1(rects, scrollTop) {
620
636
  var left = 0;
621
637
  var right = rects.length - 1;
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/utils/on-resize.ts","../../packages/virtual-table/src/core/hooks/useRowVirtualize.ts","../../packages/virtual-table/src/core/hooks/useStableFn.ts","../../packages/virtual-table/src/core/hooks/useTableInstance.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/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 { NecessaryProps } from '../internal'\nimport type { AnyObject, 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\nexport function getRowKey<T>(rowData: T, rowKey: NecessaryProps<T>['rowKey']): Key {\n if (typeof rowKey === 'function') {\n return rowKey(rowData)\n }\n return (rowData as AnyObject)[rowKey as string] as Key\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 data-col-key={key}\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 HTMLHtmlElement {\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\nexport function getScrollTop(node: ScrollElement) {\n let result = 0\n if (isWindow(node) || isRoot(node)) {\n result = window.scrollY\n } else {\n const element = getScrollElement(node)\n result = element.scrollTop\n }\n return result\n}\n\nexport function getRelativeOffsetTop(el: HTMLElement, ancestor: HTMLElement): number {\n const elRect = el.getBoundingClientRect()\n const ancestorRect = ancestor.getBoundingClientRect()\n const ancestorBorderTop = Number.parseFloat(window.getComputedStyle(ancestor).borderTopWidth) || 0\n const ancestorScrollTop = ancestor.scrollTop\n return elRect.top - ancestorRect.top - ancestorBorderTop + ancestorScrollTop\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 rowKey\n * @param key 唯一的 key,用于去重\n * @param height 行高\n */\n setRowHeightByRowKey: (rowKey: Key, 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 { 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 { Key, MutableRefObject } from 'react'\nimport type { ScrollElement } from '../../utils/dom'\nimport type { NecessaryProps } from '../internal'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { getScrollElement, isRoot, isWindow } from '../../utils/dom'\nimport { getRowKey } from '../utils/get-key'\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 rowKey: NecessaryProps<T>['rowKey']\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 const NormalRowHeightKey = 'NormalRow'\n\nexport function useRowVirtualize<T = any>(options: UseRowVirtualizeOptions<T>) {\n const {\n getOffsetTop,\n rowKey,\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 /**\n * 记录的所有行高信息\n * 一个 Row 可能有多个行高。例如:默认情况下,只有一个行高,展开后,展开面板的高度也被认为是同一个 Row 的\n * 所以可展开时,行高有多个,所有行高之和,则为 Row 的高度\n * 行高之间使用唯一的 key 作为区分\n * Record<rowKey, Map<key, height>>\n */\n const rowHeightByRowKey = useRef(new Map<Key, Map<Key, number>>())\n const setRowHeightByRowKey = useCallback((rowKey: Key, key: Key, height: number) => {\n const target = rowHeightByRowKey.current.get(rowKey) ?? new Map<Key, number>()\n target.set(key, height)\n rowHeightByRowKey.current.set(rowKey, target)\n }, [])\n\n const getAllRowHeights = () => {\n const heights: number[] = []\n rawData.forEach((item) => {\n const key = getRowKey(item, rowKey)\n const row = rowHeightByRowKey.current.get(key)\n if (row == null) {\n heights.push(estimateSize)\n } else {\n let height = 0\n row.forEach((x) => height += x)\n heights.push(height)\n }\n })\n return heights\n }\n\n // 行高信息(先填充预估高度,DOM渲染后再更新成实际高度)\n const fillRowHeights = () => {\n if (rawData.length === 0) {\n rowHeightByRowKey.current.clear()\n return\n }\n rawData.forEach((item) => {\n const key = getRowKey(item, rowKey)\n const row = rowHeightByRowKey.current.get(key) ?? new Map<Key, number>()\n const target = row.get(NormalRowHeightKey)\n if (target == null) {\n row.set(NormalRowHeightKey, estimateSize)\n }\n rowHeightByRowKey.current.set(key, row)\n })\n }\n fillRowHeights()\n\n // 强制设置类型为 number[],在后面会初始化,只是为了减少 getAllRowHeights 的调用\n const rowHeights = useRef<number[]>() as MutableRefObject<number[]>\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (rowHeights.current == null) {\n rowHeights.current = getAllRowHeights()\n } else if (rawData.length !== rowHeights.current.length) {\n // 这个判断条件主要是为了处理:空数据切换为有数据时 tbody 上 padding 缺失的问题\n rowHeights.current = getAllRowHeights()\n }\n\n // 布局信息(也就是锚点元素需要的信息,top,bottom,height,index)\n const rowRects = useRef<RowRect[]>([])\n const updateRowRects = () => {\n const { rects } = rawData.reduce((result, rowData, index) => {\n const key = getRowKey(rowData, rowKey)\n\n let height = 0\n rowHeightByRowKey.current.get(key)?.forEach((item) => {\n height += item\n })\n\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 /** 刷新布局信息,行高变化的时候调用,要重新组织布局信息(rowRects) */\n const flushLayout = (fn?: () => void) => {\n fn?.()\n updateRowRects()\n // 组件渲染后会触发 flushLayout,表示行高有更新所以需要更新一下 rowHeights\n // 避免展开行之后记录的还是之前的行高信息,否则滚动后底部会出现空白区域\n rowHeights.current = rowRects.current.map((x) => x.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 flushLayout,\n rowHeightByRowKey,\n setRowHeightByRowKey,\n\n topBlank,\n bottomBlank,\n\n dataSlice,\n }\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","import type { TableInstance as Instance, TableInstanceBuildIn } from '../types'\nimport { useState } from 'react'\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\ntype InstanceShape = TableInstanceBuildIn & Pick<Instance, 'extend'> & Record<PropertyKey, Function>\n\nclass TableInstance {\n constructor() {\n this.getInstance = this.getInstance.bind(this)\n }\n\n getInstance() {\n const buildInMethods: (keyof TableInstanceBuildIn)[] = [\n 'getCurrentProps',\n 'getColumns',\n 'getDataSource',\n 'getDOM',\n 'getRowHeightMap',\n 'getRowVirtualizeState',\n 'getScrollValueByRowIndex',\n 'getScrollValueByColumnKey',\n 'scrollToRow',\n 'scrollToColumn',\n 'scrollTo',\n 'getColumnByKey',\n 'getColumnByIndex',\n 'getColumnKeyByIndex',\n 'getColumnWidths',\n 'getColumnWidthByKey',\n ]\n\n const extendInstance: InstanceShape = {\n ...buildInMethods.reduce<TableInstanceBuildIn>((result, fnName) => {\n result[fnName] = () => {\n throw new Error(`${fnName}() has not been implemented yet`)\n }\n return result\n }, {} as TableInstanceBuildIn),\n extend: (args) => {\n Object.keys(args).forEach((fnName) => {\n extendInstance[fnName] = args[fnName]\n })\n },\n }\n return extendInstance\n }\n}\n\nexport function useTableInstance<T>(instance?: Instance<T>) {\n const [state] = useState(() => {\n if (instance == null) {\n return new TableInstance().getInstance()\n }\n return instance\n })\n return state as Instance<T>\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 renderBodyContent: [],\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 renderBodyContent: _renderBodyContent,\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, Key, 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 { pipelineRender } from './pipeline/render-pipeline'\nimport { isValidFixedLeft, isValidFixedRight } from './utils/verification'\n\ntype NativeProps = DetailedHTMLProps<\n HTMLAttributes<HTMLTableRowElement>,\n HTMLTableRowElement\n>\n\nexport interface OnRefCallbackArgs<T> {\n node: HTMLTableRowElement | null\n rowKey: Key\n rowIndex: number\n rowData: T\n}\n\nexport interface RowProps<T> extends Omit<NativeProps, 'children'> {\n rowIndex: number\n rowKey: Key\n rowData: T\n columns: InnerColumnDescriptor<T>\n onRow?: OnRowType<T>\n renderRow?: MiddlewareRenderRow\n renderCell?: MiddlewareRenderCell\n onRefCallback?: (args: OnRefCallbackArgs<T>) => void\n}\n\nfunction Row<T>(props: RowProps<T>) {\n const {\n className,\n rowKey,\n rowIndex,\n rowData,\n columns: columnDescriptor,\n onRow,\n renderRow,\n renderCell,\n onRefCallback,\n ...rest\n } = props\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 data-row-index={rowIndex}\n ref={(node) => {\n onRefCallback?.({ node, rowKey, rowIndex, rowData })\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, rowKey, 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 type { CSSProperties, 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 MiddlewareRenderBodyContent,\n MiddlewareRenderBodyRoot,\n MiddlewareRenderBodyWrapper,\n} from './pipeline/types'\nimport type { OnRefCallbackArgs, RowProps } from './row'\nimport type { InnerColumnDescriptor, TableInstance, TableInstanceBuildIn } 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 { NormalRowHeightKey, useRowVirtualize } from './hooks/useRowVirtualize'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport Row from './row'\nimport { getRowKey } from './utils/get-key'\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 instance: TableInstance\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 renderBodyContent?: MiddlewareRenderBodyContent\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 instance,\n\n overscan,\n estimateSize,\n\n getScroller,\n getOffsetTop,\n\n rowClassName,\n onRow,\n renderBodyWrapper,\n renderBodyRoot,\n renderBody,\n renderBodyContent,\n renderRow,\n renderCell,\n } = props\n\n const {\n startIndex,\n endIndex,\n dataSlice: dataSource,\n rowHeightByRowKey,\n setRowHeightByRowKey,\n flushLayout,\n rowHeightList,\n topBlank,\n bottomBlank,\n } = useRowVirtualize({\n getOffsetTop,\n rowKey,\n dataSource: rawData,\n getScroller,\n estimateSize,\n overscan,\n })\n\n instance.extend({\n getRowVirtualizeState: () => ({ startIndex, endIndex, overscan, estimateSize }),\n getRowHeightMap: () => rowHeightByRowKey.current,\n } satisfies Partial<TableInstanceBuildIn>)\n\n const tbodyRef = useMergedRef(bodyRef, (elm) => {\n if (elm == null) return\n\n const bodyHeight = elm.offsetHeight\n if (bodyHeight === 0) return\n\n // body 的 ref 回调函数中,说明 body 渲染完成,也就意味着所有的 tr 也已经渲染完成,\n // 现在可以记录所有 tr 的高度\n flushLayout()\n })\n\n // 测量行高\n const onMeasureRowHeight = useCallback((args: OnRefCallbackArgs<T>) => {\n const { node, rowKey } = args\n if (node == null) return\n // 小心陷阱:当 table 父元素为 display: none 时,依然会触发,并设置高度为 0\n setRowHeightByRowKey(rowKey, NormalRowHeightKey, node.offsetHeight)\n }, [setRowHeightByRowKey])\n\n const { columns, descriptor } = columnDescriptor\n\n const bodyContent = pipelineRender(dataSource.map((e, rowIndex) => {\n const key = getRowKey(e, rowKey)\n return (\n <Row\n key={key}\n className={clsx(rowClassName?.(e, rowIndex))}\n rowKey={key}\n rowIndex={rowIndex + startIndex}\n rowData={e}\n columns={columnDescriptor}\n onRow={onRow}\n renderRow={renderRow}\n renderCell={renderCell}\n onRefCallback={onMeasureRowHeight}\n />\n )\n }), renderBodyContent, { columns, columnDescriptor: descriptor, startRowIndex: startIndex })\n\n const bodyNode = pipelineRender(\n <tbody ref={tbodyRef}>{bodyContent}</tbody>,\n renderBody,\n { columns, columnDescriptor: descriptor, startRowIndex: startIndex },\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, startRowIndex: startIndex },\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 // 滚动到指定行。注意:如果 estimatedRowHeight 不够准确时,不一定能准确滚动到目标位置\n instance.extend({\n getScrollValueByRowIndex(index) {\n const scroller = getScroller()\n if (scroller == null) {\n return 0\n }\n\n const { stickyHeader } = instance.getCurrentProps()\n const { headerWrapper } = instance.getDOM()\n\n let offset = 0\n // 没有 sticky,就要计算 header 高度\n if (stickyHeader == null || stickyHeader === false) {\n const headerOffsetHeight = headerWrapper == null ? 0 : headerWrapper.offsetHeight\n offset = headerOffsetHeight\n } else {\n offset = Number.isFinite(stickyHeader) ? (stickyHeader as number) * -1 : 0\n }\n\n const targetScrollTop = rowHeightList.current.slice(0, index).reduce((a, b) => a + b, 0)\n return targetScrollTop + getOffsetTop() + offset\n },\n scrollToRow(index, behavior) {\n instance.scrollTo({ top: instance.getScrollValueByRowIndex(index), behavior })\n },\n } satisfies Partial<TableInstanceBuildIn>)\n\n const rowManageState = useMemo<TableRowManagerContextType>(() => {\n return {\n setRowHeightByRowKey,\n getRowHeightList: () => rowHeightList.current,\n }\n }, [rowHeightList, setRowHeightByRowKey])\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, startRowIndex: startIndex },\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, memo, 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 memo(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 defaultColumnWidth: 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 defaultColumnWidth,\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, rawColumn, index) => {\n const key = getKey(rawColumn)\n let column = rawColumn\n if (column.width == null && column.minWidth == null) {\n column = { ...column, width: defaultColumnWidth }\n }\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, defaultColumnWidth])\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, ColumnType, OnRowType, TableInstance, TableInstanceBuildIn } from './types'\nimport clsx from 'clsx'\nimport {\n forwardRef,\n memo,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { getRelativeOffsetTop, 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 { useTableInstance } from './hooks/useTableInstance'\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 instance?: TableInstance\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 /**\n * 缺失宽度设置时的默认值(与虚拟化无关)\n * @default 100\n */\n defaultColumnWidth?: number\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 instance: rawInstance,\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 defaultColumnWidth = 100,\n pipeline = (TablePipeline.defaultPipeline as TablePipeline<T>),\n rowClassName: rawRowClassName,\n onRow,\n getOffsetTop: getOffsetTopImpl,\n virtualHeader = true,\n } = props\n\n const instance = useTableInstance(rawInstance)\n instance.extend({\n getCurrentProps: () => props,\n } satisfies Partial<TableInstanceBuildIn>)\n\n const rootNode = useRef<HTMLDivElement>(null)\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 const root = rootNode.current\n if (root == null || scrollContainer == null || scrollContainer === root) {\n return 0\n }\n if (isWindow(scrollContainer) || isRoot(scrollContainer)) {\n const top = root.getBoundingClientRect().top\n return window.scrollY + top\n }\n return getRelativeOffsetTop(root, scrollContainer)\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 renderBodyContent,\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 instance,\n })\n\n instance.extend({\n getColumns: () => pipelineColumns,\n getDataSource: () => dataSource,\n } satisfies Partial<TableInstanceBuildIn>)\n\n const [columnWidths, setColumnWidths] = useState(() => new Map<Key, number>())\n const columnWidthsRef = useRef(columnWidths)\n const updateColumnWidths = useCallback((value: Map<Key, number>) => {\n const result = new Map(columnWidthsRef.current)\n value.forEach((width, key) => {\n result.set(key, width)\n })\n columnWidthsRef.current = result\n setColumnWidths(result)\n }, [])\n instance.extend({\n getColumnWidths: () => columnWidthsRef.current,\n getColumnWidthByKey: (columnKey) => columnWidthsRef.current.get(columnKey),\n } satisfies Partial<TableInstanceBuildIn>)\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 ?? defaultColumnWidth,\n defaultColumnWidth,\n overscan: overscanColumns,\n columns: pipelineColumns,\n bodyWrapper: bodyWrapperRef,\n columnWidths,\n disabled: estimatedColumnWidth == null,\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 instance.extend({\n getDOM: () => {\n return {\n root: rootNode.current,\n headerWrapper: headerWrapperRef.current,\n bodyWrapper: bodyWrapperRef.current,\n bodyRoot: bodyRoot.current,\n body: bodyRef.current,\n }\n },\n scrollTo: (options) => {\n const { left, top } = options\n if (left != null) {\n if (__DEV__) {\n if (bodyWrapperRef.current == null) {\n console.error('The bodyWrapper DOM is not obtained, and scrolling is not possible.')\n }\n }\n bodyWrapperRef.current?.scrollTo(options)\n }\n if (top != null) {\n const scroller = getScroller()\n if (scroller == null) {\n console.error('The scroller DOM is not obtained, and scrolling is not possible.')\n return\n }\n scroller.scrollTo(options)\n }\n },\n getScrollValueByColumnKey: (key) => {\n let scrollLeft = 0\n let leftFixedWidth = 0\n // pipelineColumns 是一个经过中间件处理的 columns\n // 因为中间件可能会处理 columns,比如:添加、删除、排序 columns\n for (const element of pipelineColumns) {\n const columnKey = getKey(element)\n const width = columnWidths.get(columnKey) ?? 0\n if (isValidFixedLeft(element.fixed)) {\n leftFixedWidth += width\n }\n if (columnKey === key) {\n break\n }\n scrollLeft += width\n }\n return scrollLeft - leftFixedWidth\n },\n scrollToColumn: (key, behavior) => {\n instance.scrollTo({ left: instance.getScrollValueByColumnKey(key), behavior })\n },\n getColumnByKey: (key) => {\n return pipelineColumns.find((x) => getKey(x) === key)\n },\n getColumnByIndex: (index) => {\n return pipelineColumns[index] as ColumnType<T> | undefined\n },\n getColumnKeyByIndex: (index) => {\n const column = instance.getColumnByIndex(index)\n if (column != null) {\n return getKey(column)\n }\n },\n } satisfies Partial<TableInstanceBuildIn>)\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 instance={instance}\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 renderBodyContent={renderBodyContent}\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","getRowKey","rowData","rowKey","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","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","getScrollTop","scrollY","element","scrollTop","getRelativeOffsetTop","ancestor","elRect","getBoundingClientRect","ancestorRect","ancestorBorderTop","Number","parseFloat","borderTopWidth","ancestorScrollTop","top","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","onResize","target","callback","innerWidth","innerHeight","addEventListener","removeEventListener","rect","anchorQuery","rects","mid","Math","floor","bottom","NormalRowHeightKey","useRowVirtualize","getOffsetTop","rawData","dataSource","estimateSize","overscan","startIndex","setStartIndex","endIndex","setEndIndex","dataSlice","slice","rowHeightByRowKey","setRowHeightByRowKey","useCallback","_rowHeightByRowKey$cu","getAllRowHeights","heights","row","push","fillRowHeights","clear","_rowHeightByRowKey$cu2","rowHeights","rowRects","updateRowRects","_rawData$reduce","_rowHeightByRowKey$cu3","nextTop","flushLayout","anchorRef","scrollTopRef","initial","useEffect","container","count","offsetTop","max","calcCount","scrollerContainerHeight","prevCount","ceil","updateBoundary","anchor","onScroll","e","scrollElement","isScrollDown","prevHeight","stopListen","nextStartIndex","nextEndIndex","sum","a","b","topBlank","bottomBlank","rowHeightList","useStableFn","stableFn","_len","arguments","args","_key","apply","TableInstance","getInstance","bind","_proto","buildInMethods","extendInstance","fnName","extend","useTableInstance","instance","createMiddleware","hook","cache","useMiddleware","ctx","concat","_cache$current","shakeUnsafeHooks","hooks","filter","priority","TablePipeline","defineProperty","use","setHooks","renderFunctionMap","renderRoot","renderContent","renderHeaderWrapper","renderHeaderRoot","renderHeader","renderHeaderRow","renderHeaderCell","renderBodyWrapper","renderBodyRoot","renderBody","renderBodyContent","renderRow","rowClassNameFunctions","onRowFunctions","sort","nextCtx","rowClassName","onRow","rest","_ref2","renders","record","useTablePipeline","extraPipeline","pipeline","cached","_extraPipeline$hooks","nextHooks","findLastIndex","arr","predicate","Row","_onRow","columnDescriptor","onRefCallback","descriptor","lastFixedLeftColumnIndex","firstFixedRightColumnIndex","assignRef","mergeRefs","refs","useMergedRef","_len2","_key2","TableBody","bodyWrapperRef","bodyRootRef","bodyRef","_useRowVirtualize","getRowVirtualizeState","getRowHeightMap","tbodyRef","elm","bodyHeight","offsetHeight","onMeasureRowHeight","bodyContent","startRowIndex","bodyNode","setWidthList","tableNode","_jsxs","paddingBottom","paddingTop","_useHorizontalScrollC","wrapperRef","dispose","mergedRef","getScrollValueByRowIndex","_instance$getCurrentP","getCurrentProps","stickyHeader","_instance$getDOM","getDOM","headerWrapper","offset","headerOffsetHeight","isFinite","targetScrollTop","scrollToRow","behavior","scrollTo","rowManageState","getRowHeightList","TableHeader","lastColumn","headerWrapperRef","_column$onHeaderCell","isLast","onHeaderCell","thClassName","thStyle","Fragment","createElement","scope","title","columnWidths","theadNode","findFirstFixedRightIndex","findLastFixedLeftIndex","useColumnVirtualize","defaultColumnWidth","rawColumns","bodyWrapper","_options$disabled","disabled","lastFixedLeftIndex","firstFixedRightIndex","leftKey","rightKey","_columnWidths$get","findAnchorRef","scrollLeftRef","scrollContainer","containerWidth","isScrollRight","prevWidth","stop","fixedLeftWidth","fixedRightWidth","leftBlank","rightBlank","columnSlice","unionKey","rawColumn","TableRoot","hasFixedLeftColumn","hasFixedRightColumn","bodyScrollContainer","rootNode","hasFixedLeft","setHasFixedLeft","hasFixedRight","setHasFixedRight","onCheckHasFixedEdge","clientWidth","scrollWidth","_scrollLeft","forwardRef","VirtualTableCore","rawInstance","tableBodyClassName","tableBodyStyle","_props$rowKey","rawRowKey","_props$estimatedRowHe","estimatedRowHeight","estimatedColumnWidth","_props$overscanRows","overscanRows","_props$overscanColumn","overscanColumns","_props$defaultColumnW","_props$pipeline","defaultPipeline","rawRowClassName","getOffsetTopImpl","_props$virtualHeader","virtualHeader","bodyRoot","mergedBodyRootRef","_pipeline$use","rootRef","pipelineColumns","onPipelineRow","getColumns","getDataSource","setColumnWidths","columnWidthsRef","updateColumnWidths","getColumnWidths","getColumnWidthByKey","columnKey","tableColumnsContext","_useColumnVirtualize","onRowClassName","onRowProps","some","fullHeaderColumns","headerColumns","_bodyWrapperRef$curre","console","error","getScrollValueByColumnKey","leftFixedWidth","_iterator","_createForOfIteratorHelperLoose","_step","done","scrollToColumn","getColumnByKey","find","getColumnByIndex","getColumnKeyByIndex","contentNode","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/utils/dom.ts","../../packages/virtual-table/src/core/utils/on-resize.ts","../../packages/virtual-table/src/core/colgroup.tsx","../../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/useRowVirtualize.ts","../../packages/virtual-table/src/core/hooks/useStableFn.ts","../../packages/virtual-table/src/core/hooks/useTableInstance.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/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 { NecessaryProps } from '../internal'\nimport type { AnyObject, 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\nexport function getRowKey<T>(rowData: T, rowKey: NecessaryProps<T>['rowKey']): Key {\n if (typeof rowKey === 'function') {\n return rowKey(rowData)\n }\n return (rowData as AnyObject)[rowKey as string] as Key\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 data-col-key={key}\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","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 HTMLHtmlElement {\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\nexport function getScrollTop(node: ScrollElement) {\n let result = 0\n if (isWindow(node) || isRoot(node)) {\n result = window.scrollY\n } else {\n const element = getScrollElement(node)\n result = element.scrollTop\n }\n return result\n}\n\nexport function getRelativeOffsetTop(el: HTMLElement, ancestor: HTMLElement): number {\n const elRect = el.getBoundingClientRect()\n const ancestorRect = ancestor.getBoundingClientRect()\n const ancestorBorderTop = Number.parseFloat(window.getComputedStyle(ancestor).borderTopWidth) || 0\n const ancestorScrollTop = ancestor.scrollTop\n return elRect.top - ancestorRect.top - ancestorBorderTop + ancestorScrollTop\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","import type { FC, Key } from 'react'\nimport type { ColumnDescriptor } from './types'\nimport { memo, useLayoutEffect, useRef } from 'react'\nimport { isShallowEqual } from '../utils/equal'\nimport { onResize } from './utils/on-resize'\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 const node = useRef<HTMLTableColElement>(null)\n useLayoutEffect(() => {\n if (!enableMeasure) return\n const colgroupNode = node.current\n if (colgroupNode == null) return\n return onResize(colgroupNode, ({ width }) => {\n if (width === 0) return\n const sizes = new Map<Key, number>()\n columnSizes.forEach((item, key) => {\n sizes.set(key, item())\n })\n if (!isShallowEqual(sizes, prevColumnSizes.current)) {\n onColumnSizesMeasure(sizes)\n prevColumnSizes.current = sizes\n }\n })\n })\n\n return (\n <colgroup ref={node}>\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 // eslint-disable-next-line react-compiler/react-compiler\n columnSizes.set(key, () => node.offsetWidth)\n }}\n data-col-key={key}\n style={{\n width: column.width,\n minWidth: column.minWidth,\n }}\n />\n )\n })}\n </colgroup>\n )\n}\n\nexport default memo(Colgroup)\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 rowKey\n * @param key 唯一的 key,用于去重\n * @param height 行高\n */\n setRowHeightByRowKey: (rowKey: Key, 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","/* eslint-disable react-compiler/react-compiler */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Key, MutableRefObject } from 'react'\nimport type { ScrollElement } from '../../utils/dom'\nimport type { NecessaryProps } from '../internal'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { getScrollElement, isRoot, isWindow } from '../../utils/dom'\nimport { getRowKey } from '../utils/get-key'\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 rowKey: NecessaryProps<T>['rowKey']\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 const NormalRowHeightKey = 'NormalRow'\n\nexport function useRowVirtualize<T = any>(options: UseRowVirtualizeOptions<T>) {\n const {\n getOffsetTop,\n rowKey,\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 /**\n * 记录的所有行高信息\n * 一个 Row 可能有多个行高。例如:默认情况下,只有一个行高,展开后,展开面板的高度也被认为是同一个 Row 的\n * 所以可展开时,行高有多个,所有行高之和,则为 Row 的高度\n * 行高之间使用唯一的 key 作为区分\n * Record<rowKey, Map<key, height>>\n */\n const rowHeightByRowKey = useRef(new Map<Key, Map<Key, number>>())\n const setRowHeightByRowKey = useCallback((rowKey: Key, key: Key, height: number) => {\n const target = rowHeightByRowKey.current.get(rowKey) ?? new Map<Key, number>()\n target.set(key, height)\n rowHeightByRowKey.current.set(rowKey, target)\n }, [])\n\n const getAllRowHeights = () => {\n const heights: number[] = []\n rawData.forEach((item) => {\n const key = getRowKey(item, rowKey)\n const row = rowHeightByRowKey.current.get(key)\n if (row == null) {\n heights.push(estimateSize)\n } else {\n let height = 0\n row.forEach((x) => height += x)\n heights.push(height)\n }\n })\n return heights\n }\n\n // 行高信息(先填充预估高度,DOM渲染后再更新成实际高度)\n const fillRowHeights = () => {\n if (rawData.length === 0) {\n rowHeightByRowKey.current.clear()\n return\n }\n rawData.forEach((item) => {\n const key = getRowKey(item, rowKey)\n const row = rowHeightByRowKey.current.get(key) ?? new Map<Key, number>()\n const target = row.get(NormalRowHeightKey)\n if (target == null) {\n row.set(NormalRowHeightKey, estimateSize)\n }\n rowHeightByRowKey.current.set(key, row)\n })\n }\n fillRowHeights()\n\n // 强制设置类型为 number[],在后面会初始化,只是为了减少 getAllRowHeights 的调用\n const rowHeights = useRef<number[]>() as MutableRefObject<number[]>\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (rowHeights.current == null) {\n rowHeights.current = getAllRowHeights()\n } else if (rawData.length !== rowHeights.current.length) {\n // 这个判断条件主要是为了处理:空数据切换为有数据时 tbody 上 padding 缺失的问题\n rowHeights.current = getAllRowHeights()\n }\n\n // 布局信息(也就是锚点元素需要的信息,top,bottom,height,index)\n const rowRects = useRef<RowRect[]>([])\n const updateRowRects = () => {\n const { rects } = rawData.reduce((result, rowData, index) => {\n const key = getRowKey(rowData, rowKey)\n\n let height = 0\n rowHeightByRowKey.current.get(key)?.forEach((item) => {\n height += item\n })\n\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 /** 刷新布局信息,行高变化的时候调用,要重新组织布局信息(rowRects) */\n const flushLayout = (fn?: () => void) => {\n fn?.()\n updateRowRects()\n // 组件渲染后会触发 flushLayout,表示行高有更新所以需要更新一下 rowHeights\n // 避免展开行之后记录的还是之前的行高信息,否则滚动后底部会出现空白区域\n rowHeights.current = rowRects.current.map((x) => x.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 flushLayout,\n rowHeightByRowKey,\n setRowHeightByRowKey,\n\n topBlank,\n bottomBlank,\n\n dataSlice,\n }\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","import type { TableInstance as Instance, TableInstanceBuildIn } from '../types'\nimport { useState } from 'react'\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\ntype InstanceShape = TableInstanceBuildIn & Pick<Instance, 'extend'> & Record<PropertyKey, Function>\n\nclass TableInstance {\n constructor() {\n this.getInstance = this.getInstance.bind(this)\n }\n\n getInstance() {\n const buildInMethods: (keyof TableInstanceBuildIn)[] = [\n 'getCurrentProps',\n 'getColumns',\n 'getDataSource',\n 'getDOM',\n 'getRowHeightMap',\n 'getRowVirtualizeState',\n 'getScrollValueByRowIndex',\n 'getScrollValueByColumnKey',\n 'scrollToRow',\n 'scrollToColumn',\n 'scrollTo',\n 'getColumnByKey',\n 'getColumnByIndex',\n 'getColumnKeyByIndex',\n 'getColumnWidths',\n 'getColumnWidthByKey',\n ]\n\n const extendInstance: InstanceShape = {\n ...buildInMethods.reduce<TableInstanceBuildIn>((result, fnName) => {\n result[fnName] = () => {\n throw new Error(`${fnName}() has not been implemented yet`)\n }\n return result\n }, {} as TableInstanceBuildIn),\n extend: (args) => {\n Object.keys(args).forEach((fnName) => {\n extendInstance[fnName] = args[fnName]\n })\n },\n }\n return extendInstance\n }\n}\n\nexport function useTableInstance<T>(instance?: Instance<T>) {\n const [state] = useState(() => {\n if (instance == null) {\n return new TableInstance().getInstance()\n }\n return instance\n })\n return state as Instance<T>\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 renderBodyContent: [],\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 renderBodyContent: _renderBodyContent,\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, Key, 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 { pipelineRender } from './pipeline/render-pipeline'\nimport { isValidFixedLeft, isValidFixedRight } from './utils/verification'\n\ntype NativeProps = DetailedHTMLProps<\n HTMLAttributes<HTMLTableRowElement>,\n HTMLTableRowElement\n>\n\nexport interface OnRefCallbackArgs<T> {\n node: HTMLTableRowElement | null\n rowKey: Key\n rowIndex: number\n rowData: T\n}\n\nexport interface RowProps<T> extends Omit<NativeProps, 'children'> {\n rowIndex: number\n rowKey: Key\n rowData: T\n columns: InnerColumnDescriptor<T>\n onRow?: OnRowType<T>\n renderRow?: MiddlewareRenderRow\n renderCell?: MiddlewareRenderCell\n onRefCallback?: (args: OnRefCallbackArgs<T>) => void\n}\n\nfunction Row<T>(props: RowProps<T>) {\n const {\n className,\n rowKey,\n rowIndex,\n rowData,\n columns: columnDescriptor,\n onRow,\n renderRow,\n renderCell,\n onRefCallback,\n ...rest\n } = props\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 data-row-index={rowIndex}\n ref={(node) => {\n onRefCallback?.({ node, rowKey, rowIndex, rowData })\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, rowKey, 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 type { CSSProperties, 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 MiddlewareRenderBodyContent,\n MiddlewareRenderBodyRoot,\n MiddlewareRenderBodyWrapper,\n} from './pipeline/types'\nimport type { OnRefCallbackArgs, RowProps } from './row'\nimport type { InnerColumnDescriptor, TableInstance, TableInstanceBuildIn } 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 { NormalRowHeightKey, useRowVirtualize } from './hooks/useRowVirtualize'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport Row from './row'\nimport { getRowKey } from './utils/get-key'\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 instance: TableInstance\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 renderBodyContent?: MiddlewareRenderBodyContent\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 instance,\n\n overscan,\n estimateSize,\n\n getScroller,\n getOffsetTop,\n\n rowClassName,\n onRow,\n renderBodyWrapper,\n renderBodyRoot,\n renderBody,\n renderBodyContent,\n renderRow,\n renderCell,\n } = props\n\n const {\n startIndex,\n endIndex,\n dataSlice: dataSource,\n rowHeightByRowKey,\n setRowHeightByRowKey,\n flushLayout,\n rowHeightList,\n topBlank,\n bottomBlank,\n } = useRowVirtualize({\n getOffsetTop,\n rowKey,\n dataSource: rawData,\n getScroller,\n estimateSize,\n overscan,\n })\n\n instance.extend({\n getRowVirtualizeState: () => ({ startIndex, endIndex, overscan, estimateSize }),\n getRowHeightMap: () => rowHeightByRowKey.current,\n } satisfies Partial<TableInstanceBuildIn>)\n\n const tbodyRef = useMergedRef(bodyRef, (elm) => {\n if (elm == null) return\n\n const bodyHeight = elm.offsetHeight\n if (bodyHeight === 0) return\n\n // body 的 ref 回调函数中,说明 body 渲染完成,也就意味着所有的 tr 也已经渲染完成,\n // 现在可以记录所有 tr 的高度\n flushLayout()\n })\n\n // 测量行高\n const onMeasureRowHeight = useCallback((args: OnRefCallbackArgs<T>) => {\n const { node, rowKey } = args\n if (node == null) return\n // 小心陷阱:当 table 父元素为 display: none 时,依然会触发,并设置高度为 0\n setRowHeightByRowKey(rowKey, NormalRowHeightKey, node.offsetHeight)\n }, [setRowHeightByRowKey])\n\n const { columns, descriptor } = columnDescriptor\n\n const bodyContent = pipelineRender(dataSource.map((e, rowIndex) => {\n const key = getRowKey(e, rowKey)\n return (\n <Row\n key={key}\n className={clsx(rowClassName?.(e, rowIndex))}\n rowKey={key}\n rowIndex={rowIndex + startIndex}\n rowData={e}\n columns={columnDescriptor}\n onRow={onRow}\n renderRow={renderRow}\n renderCell={renderCell}\n onRefCallback={onMeasureRowHeight}\n />\n )\n }), renderBodyContent, { columns, columnDescriptor: descriptor, startRowIndex: startIndex })\n\n const bodyNode = pipelineRender(\n <tbody ref={tbodyRef}>{bodyContent}</tbody>,\n renderBody,\n { columns, columnDescriptor: descriptor, startRowIndex: startIndex },\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, startRowIndex: startIndex },\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 // 滚动到指定行。注意:如果 estimatedRowHeight 不够准确时,不一定能准确滚动到目标位置\n instance.extend({\n getScrollValueByRowIndex(index) {\n const scroller = getScroller()\n if (scroller == null) {\n return 0\n }\n\n const { stickyHeader } = instance.getCurrentProps()\n const { headerWrapper } = instance.getDOM()\n\n let offset = 0\n // 没有 sticky,就要计算 header 高度\n if (stickyHeader == null || stickyHeader === false) {\n const headerOffsetHeight = headerWrapper == null ? 0 : headerWrapper.offsetHeight\n offset = headerOffsetHeight\n } else {\n offset = Number.isFinite(stickyHeader) ? (stickyHeader as number) * -1 : 0\n }\n\n const targetScrollTop = rowHeightList.current.slice(0, index).reduce((a, b) => a + b, 0)\n return targetScrollTop + getOffsetTop() + offset\n },\n scrollToRow(index, behavior) {\n instance.scrollTo({ top: instance.getScrollValueByRowIndex(index), behavior })\n },\n } satisfies Partial<TableInstanceBuildIn>)\n\n const rowManageState = useMemo<TableRowManagerContextType>(() => {\n return {\n setRowHeightByRowKey,\n getRowHeightList: () => rowHeightList.current,\n }\n }, [rowHeightList, setRowHeightByRowKey])\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, startRowIndex: startIndex },\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, memo, 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 memo(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 defaultColumnWidth: 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 defaultColumnWidth,\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, rawColumn, index) => {\n const key = getKey(rawColumn)\n let column = rawColumn\n if (column.width == null && column.minWidth == null) {\n column = { ...column, width: defaultColumnWidth }\n }\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, defaultColumnWidth])\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, ColumnType, OnRowType, TableInstance, TableInstanceBuildIn } from './types'\nimport clsx from 'clsx'\nimport {\n forwardRef,\n memo,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { getRelativeOffsetTop, 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 { useTableInstance } from './hooks/useTableInstance'\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 instance?: TableInstance\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 /**\n * 缺失宽度设置时的默认值(与虚拟化无关)\n * @default 100\n */\n defaultColumnWidth?: number\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 instance: rawInstance,\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 defaultColumnWidth = 100,\n pipeline = (TablePipeline.defaultPipeline as TablePipeline<T>),\n rowClassName: rawRowClassName,\n onRow,\n getOffsetTop: getOffsetTopImpl,\n virtualHeader = true,\n } = props\n\n const instance = useTableInstance(rawInstance)\n instance.extend({\n getCurrentProps: () => props,\n } satisfies Partial<TableInstanceBuildIn>)\n\n const rootNode = useRef<HTMLDivElement>(null)\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 const root = rootNode.current\n if (root == null || scrollContainer == null || scrollContainer === root) {\n return 0\n }\n if (isWindow(scrollContainer) || isRoot(scrollContainer)) {\n const top = root.getBoundingClientRect().top\n return window.scrollY + top\n }\n return getRelativeOffsetTop(root, scrollContainer)\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 renderBodyContent,\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 instance,\n })\n\n instance.extend({\n getColumns: () => pipelineColumns,\n getDataSource: () => dataSource,\n } satisfies Partial<TableInstanceBuildIn>)\n\n const [columnWidths, setColumnWidths] = useState(() => new Map<Key, number>())\n const columnWidthsRef = useRef(columnWidths)\n const updateColumnWidths = useCallback((value: Map<Key, number>) => {\n const result = new Map(columnWidthsRef.current)\n value.forEach((width, key) => {\n result.set(key, width)\n })\n columnWidthsRef.current = result\n setColumnWidths(result)\n }, [])\n instance.extend({\n getColumnWidths: () => columnWidthsRef.current,\n getColumnWidthByKey: (columnKey) => columnWidthsRef.current.get(columnKey),\n } satisfies Partial<TableInstanceBuildIn>)\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 ?? defaultColumnWidth,\n defaultColumnWidth,\n overscan: overscanColumns,\n columns: pipelineColumns,\n bodyWrapper: bodyWrapperRef,\n columnWidths,\n disabled: estimatedColumnWidth == null,\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 instance.extend({\n getDOM: () => {\n return {\n root: rootNode.current,\n headerWrapper: headerWrapperRef.current,\n bodyWrapper: bodyWrapperRef.current,\n bodyRoot: bodyRoot.current,\n body: bodyRef.current,\n }\n },\n scrollTo: (options) => {\n const { left, top } = options\n if (left != null) {\n if (__DEV__) {\n if (bodyWrapperRef.current == null) {\n console.error('The bodyWrapper DOM is not obtained, and scrolling is not possible.')\n }\n }\n bodyWrapperRef.current?.scrollTo(options)\n }\n if (top != null) {\n const scroller = getScroller()\n if (scroller == null) {\n console.error('The scroller DOM is not obtained, and scrolling is not possible.')\n return\n }\n scroller.scrollTo(options)\n }\n },\n getScrollValueByColumnKey: (key) => {\n let scrollLeft = 0\n let leftFixedWidth = 0\n // pipelineColumns 是一个经过中间件处理的 columns\n // 因为中间件可能会处理 columns,比如:添加、删除、排序 columns\n for (const element of pipelineColumns) {\n const columnKey = getKey(element)\n const width = columnWidths.get(columnKey) ?? 0\n if (isValidFixedLeft(element.fixed)) {\n leftFixedWidth += width\n }\n if (columnKey === key) {\n break\n }\n scrollLeft += width\n }\n return scrollLeft - leftFixedWidth\n },\n scrollToColumn: (key, behavior) => {\n instance.scrollTo({ left: instance.getScrollValueByColumnKey(key), behavior })\n },\n getColumnByKey: (key) => {\n return pipelineColumns.find((x) => getKey(x) === key)\n },\n getColumnByIndex: (index) => {\n return pipelineColumns[index] as ColumnType<T> | undefined\n },\n getColumnKeyByIndex: (index) => {\n const column = instance.getColumnByIndex(index)\n if (column != null) {\n return getKey(column)\n }\n },\n } satisfies Partial<TableInstanceBuildIn>)\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 instance={instance}\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 renderBodyContent={renderBodyContent}\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","getRowKey","rowData","rowKey","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","Cell","_onCell","className","style","rowIndex","renderCell","restProps","_objectWithoutPropertiesLoose","_excluded","align","onCell","_useTableSticky","_ref","extraClassName","extraStyle","colSpan","rowSpan","extraProps","_excluded2","_extends","clsx","undefined","memo","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","getScrollTop","scrollY","element","scrollTop","getRelativeOffsetTop","ancestor","elRect","getBoundingClientRect","ancestorRect","ancestorBorderTop","Number","parseFloat","borderTopWidth","ancestorScrollTop","top","onResize","target","callback","listener","width","innerWidth","height","innerHeight","addEventListener","removeEventListener","observer","ResizeObserver","entries","rect","contentRect","observe","disconnect","Colgroup","onColumnSizesMeasure","enableMeasure","columnSizes","prevColumnSizes","useLayoutEffect","colgroupNode","sizes","forEach","ref","type","offsetWidth","minWidth","useCalcSize","getScroller","_useState","useState","scrollContainerWidth","setScrollContainerWidth","_useState2","scrollContainerHeight","setScrollContainerHeight","_useState3","tableWidth","setTableWidth","_useState4","tableHeight","setTableHeight","scrollerContainerRef","scrollerContainer","scroller","_entries$0$contentRec","_entries$0$contentRec2","ContainerSize","ContainerSizeContext","_useCalcSize","useContainerSize","HorizontalScroll","HorizontalScrollContext","listenerMap","skipEvent","Set","listen","scrollLeft","notify","has","rAF","requestAnimationFrame","fn","itemKey","add","useHorizontalScrollContext","TableRowManager","useTableRowManager","anchorQuery","rects","mid","Math","floor","bottom","NormalRowHeightKey","useRowVirtualize","getOffsetTop","rawData","dataSource","estimateSize","overscan","startIndex","setStartIndex","endIndex","setEndIndex","dataSlice","slice","rowHeightByRowKey","setRowHeightByRowKey","useCallback","_rowHeightByRowKey$cu","getAllRowHeights","heights","row","push","fillRowHeights","clear","_rowHeightByRowKey$cu2","rowHeights","rowRects","updateRowRects","_rawData$reduce","_rowHeightByRowKey$cu3","nextTop","flushLayout","anchorRef","scrollTopRef","initial","useEffect","container","count","offsetTop","max","calcCount","scrollerContainerHeight","prevCount","ceil","updateBoundary","anchor","onScroll","e","scrollElement","isScrollDown","prevHeight","stopListen","nextStartIndex","nextEndIndex","sum","a","b","topBlank","bottomBlank","rowHeightList","useStableFn","stableFn","_len","arguments","args","_key","apply","TableInstance","getInstance","bind","_proto","buildInMethods","extendInstance","fnName","extend","useTableInstance","instance","createMiddleware","hook","cache","useMiddleware","ctx","concat","_cache$current","shakeUnsafeHooks","hooks","filter","priority","TablePipeline","defineProperty","use","setHooks","renderFunctionMap","renderRoot","renderContent","renderHeaderWrapper","renderHeaderRoot","renderHeader","renderHeaderRow","renderHeaderCell","renderBodyWrapper","renderBodyRoot","renderBody","renderBodyContent","renderRow","rowClassNameFunctions","onRowFunctions","sort","nextCtx","rowClassName","onRow","rest","_ref2","renders","record","useTablePipeline","extraPipeline","pipeline","cached","_extraPipeline$hooks","nextHooks","findLastIndex","arr","predicate","Row","_onRow","columnDescriptor","onRefCallback","descriptor","lastFixedLeftColumnIndex","firstFixedRightColumnIndex","assignRef","mergeRefs","refs","useMergedRef","_len2","_key2","TableBody","bodyWrapperRef","bodyRootRef","bodyRef","_useRowVirtualize","getRowVirtualizeState","getRowHeightMap","tbodyRef","elm","bodyHeight","offsetHeight","onMeasureRowHeight","bodyContent","startRowIndex","bodyNode","setWidthList","tableNode","_jsxs","paddingBottom","paddingTop","_useHorizontalScrollC","wrapperRef","dispose","mergedRef","getScrollValueByRowIndex","_instance$getCurrentP","getCurrentProps","stickyHeader","_instance$getDOM","getDOM","headerWrapper","offset","headerOffsetHeight","isFinite","targetScrollTop","scrollToRow","behavior","scrollTo","rowManageState","getRowHeightList","TableHeader","lastColumn","headerWrapperRef","_column$onHeaderCell","isLast","onHeaderCell","thClassName","thStyle","Fragment","createElement","scope","title","columnWidths","theadNode","findFirstFixedRightIndex","findLastFixedLeftIndex","useColumnVirtualize","defaultColumnWidth","rawColumns","bodyWrapper","_options$disabled","disabled","lastFixedLeftIndex","firstFixedRightIndex","leftKey","rightKey","_columnWidths$get","findAnchorRef","scrollLeftRef","scrollContainer","containerWidth","isScrollRight","prevWidth","stop","fixedLeftWidth","fixedRightWidth","leftBlank","rightBlank","columnSlice","unionKey","rawColumn","TableRoot","hasFixedLeftColumn","hasFixedRightColumn","bodyScrollContainer","rootNode","hasFixedLeft","setHasFixedLeft","hasFixedRight","setHasFixedRight","onCheckHasFixedEdge","clientWidth","scrollWidth","_scrollLeft","forwardRef","VirtualTableCore","rawInstance","tableBodyClassName","tableBodyStyle","_props$rowKey","rawRowKey","_props$estimatedRowHe","estimatedRowHeight","estimatedColumnWidth","_props$overscanRows","overscanRows","_props$overscanColumn","overscanColumns","_props$defaultColumnW","_props$pipeline","defaultPipeline","rawRowClassName","getOffsetTopImpl","_props$virtualHeader","virtualHeader","bodyRoot","mergedBodyRootRef","_pipeline$use","rootRef","pipelineColumns","onPipelineRow","getColumns","getDataSource","setColumnWidths","columnWidthsRef","updateColumnWidths","getColumnWidths","getColumnWidthByKey","columnKey","tableColumnsContext","_useColumnVirtualize","onRowClassName","onRowProps","some","fullHeaderColumns","headerColumns","_bodyWrapperRef$curre","console","error","getScrollValueByColumnKey","leftFixedWidth","_iterator","_createForOfIteratorHelperLoose","_step","done","scrollToColumn","getColumnByKey","find","getColumnByIndex","getColumnKeyByIndex","contentNode","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.10.0",
3
+ "version": "0.10.2",
4
4
  "main": "./index.esm.js",
5
5
  "types": "./index.d.ts",
6
6
  "sideEffects": false,