@are-visual/virtual-table 0.2.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -2,6 +2,12 @@ import * as react from 'react';
2
2
  import { DetailedHTMLProps, HTMLAttributes, Key, ReactNode, TdHTMLAttributes, RefObject, ReactElement, CSSProperties, Ref, RefAttributes } from 'react';
3
3
 
4
4
  type ScrollElement = HTMLElement | Window;
5
+ declare function getScrollParent(el: Element, root?: ScrollElement | null | undefined): ScrollElement;
6
+ declare function isWindow(arg: unknown): arg is Window;
7
+ declare function isDocument(arg: unknown): arg is Document;
8
+ declare function isRoot(arg: unknown): arg is HTMLElement;
9
+ declare function getScrollElement(el: unknown): Element;
10
+ declare function getScrollTop(node: ScrollElement): number;
5
11
 
6
12
  type FixedType = 'left' | 'right';
7
13
  declare function isValidFixedLeft(fixed: unknown): fixed is "left";
@@ -78,6 +84,7 @@ interface RenderOptions<T = any> {
78
84
  column: ColumnType<T>;
79
85
  columnWidths: Map<Key, number>;
80
86
  rowIndex: number;
87
+ startRowIndex: number;
81
88
  columns: ColumnType<T>[];
82
89
  rowData: T;
83
90
  columnDescriptor: ColumnDescriptor<T>[];
@@ -92,12 +99,13 @@ type MiddlewareRenderHeaderRoot<T = any> = (children: ReactNode, options: Pretti
92
99
  type MiddlewareRenderHeader<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'columns' | 'columnDescriptor'>>) => ReactNode;
93
100
  type MiddlewareRenderHeaderRow<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'columns' | 'columnDescriptor'>>) => ReactNode;
94
101
  type MiddlewareRenderHeaderCell<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'columns' | 'columnDescriptor' | 'column' | 'columnWidths'>>) => ReactNode;
95
- type MiddlewareRenderBodyWrapper<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'columns' | 'columnDescriptor'>>) => ReactNode;
96
- type MiddlewareRenderBodyRoot<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'columns' | 'columnDescriptor'>>) => ReactNode;
97
- type MiddlewareRenderBody<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'columns' | 'columnDescriptor'>>) => ReactNode;
102
+ type MiddlewareRenderBodyWrapper<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'columns' | 'columnDescriptor' | 'startRowIndex'>>) => ReactNode;
103
+ type MiddlewareRenderBodyRoot<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'columns' | 'columnDescriptor' | 'startRowIndex'>>) => ReactNode;
104
+ type MiddlewareRenderBody<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'columns' | 'columnDescriptor' | 'startRowIndex'>>) => ReactNode;
105
+ type MiddlewareRenderBodyContent<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'columns' | 'columnDescriptor' | 'startRowIndex'>>) => ReactNode;
98
106
  type MiddlewareRenderRow<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'columns' | 'columnDescriptor' | 'rowIndex' | 'rowData'>>) => ReactNode;
99
107
  type MiddlewareRenderCell<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'column'>>) => ReactNode;
100
- type MergedMiddlewareRender<T = any> = MiddlewareRender<T> | MiddlewareRenderRoot<T> | MiddlewareRenderContent<T> | MiddlewareRenderHeaderWrapper<T> | MiddlewareRenderHeaderRoot<T> | MiddlewareRenderHeader<T> | MiddlewareRenderHeaderRow<T> | MiddlewareRenderHeaderCell<T> | MiddlewareRenderBodyWrapper<T> | MiddlewareRenderBodyRoot<T> | MiddlewareRenderBody<T> | MiddlewareRenderRow<T> | MiddlewareRenderCell<T>;
108
+ type MergedMiddlewareRender<T = any> = MiddlewareRender<T> | MiddlewareRenderRoot<T> | MiddlewareRenderContent<T> | MiddlewareRenderHeaderWrapper<T> | MiddlewareRenderHeaderRoot<T> | MiddlewareRenderHeader<T> | MiddlewareRenderHeaderRow<T> | MiddlewareRenderHeaderCell<T> | MiddlewareRenderBodyWrapper<T> | MiddlewareRenderBodyRoot<T> | MiddlewareRenderBody<T> | MiddlewareRenderBodyContent<T> | MiddlewareRenderRow<T> | MiddlewareRenderCell<T>;
101
109
  interface MiddlewareRenders {
102
110
  /**
103
111
  * 自定义最外层渲染,children 为 整个 VirtualTable。
@@ -152,6 +160,10 @@ interface MiddlewareRenders {
152
160
  * @note 注意:出于性能考虑,**需要自行对函数 memo**
153
161
  */
154
162
  renderBody?: MiddlewareRenderBody;
163
+ /**
164
+ * 默认情况下 children 是 ReactNode[],即 tbody 下渲染的各个 Row
165
+ */
166
+ renderBodyContent?: MiddlewareRenderBodyContent;
155
167
  /**
156
168
  * children 为 tr
157
169
  * @note 注意:出于性能考虑,**需要自行对函数 memo**
@@ -281,6 +293,7 @@ interface TableBodyProps<T> extends Omit<NecessaryProps<T>, 'columns'>, Pick<Row
281
293
  renderBodyWrapper?: MiddlewareRenderBodyWrapper;
282
294
  renderBodyRoot?: MiddlewareRenderBodyRoot;
283
295
  renderBody?: MiddlewareRenderBody;
296
+ renderBodyContent?: MiddlewareRenderBodyContent;
284
297
  }
285
298
 
286
299
  interface VirtualTableCoreProps<T> extends NecessaryProps<T>, Pick<TableBodyProps<T>, 'rowClassName' | 'onRow'> {
@@ -325,4 +338,4 @@ type PossibleRef<T> = Ref<T> | undefined;
325
338
  declare function mergeRefs<T>(...refs: PossibleRef<T>[]): (node: T | null) => void;
326
339
  declare function useMergedRef<T>(...refs: PossibleRef<T>[]): (node: T | null) => void;
327
340
 
328
- export { type AlignType, type AnyObject, _default$2 as Colgroup, type ColumnDescriptor, type ColumnExtra, type ColumnType, type ContainerSizeState, type FixedType, type HorizontalScrollContextState, type MergedMiddlewareRender, type Middleware, type MiddlewareContext, type MiddlewareRender, type MiddlewareRenderBody, type MiddlewareRenderBodyRoot, type MiddlewareRenderBodyWrapper, type MiddlewareRenderCell, type MiddlewareRenderContent, type MiddlewareRenderHeader, type MiddlewareRenderHeaderCell, type MiddlewareRenderHeaderRoot, type MiddlewareRenderHeaderRow, type MiddlewareRenderHeaderWrapper, type MiddlewareRenderRoot, type MiddlewareRenderRow, type MiddlewareRenders, type MiddlewareResult, type OnRowType, type PipelineRender, type PipelineRenderOptions, type StickyContextState, type TableColumnsContextType, TablePipeline, type TableRowManagerContextType, type UseTablePipelineOptions, _default as VirtualTable, _default$3 as VirtualTableCell, type CellProps as VirtualTableCellProps, type VirtualTableCoreProps as VirtualTableProps, _default$1 as VirtualTableRow, type RowProps as VirtualTableRowProps, createMiddleware, findLastIndex, getKey, isValidFixed, isValidFixedLeft, isValidFixedRight, mergeRefs, onResize, useColumnSizes, useContainerSize, useHorizontalScrollContext, useMergedRef, useShallowMemo, useStableFn, useTablePipeline, useTableRowManager, useTableSticky };
341
+ export { type AlignType, type AnyObject, _default$2 as Colgroup, type ColumnDescriptor, type ColumnExtra, type ColumnType, type ContainerSizeState, type FixedType, type HorizontalScrollContextState, type MergedMiddlewareRender, type Middleware, type MiddlewareContext, type MiddlewareRender, type MiddlewareRenderBody, type MiddlewareRenderBodyContent, type MiddlewareRenderBodyRoot, type MiddlewareRenderBodyWrapper, type MiddlewareRenderCell, type MiddlewareRenderContent, type MiddlewareRenderHeader, type MiddlewareRenderHeaderCell, type MiddlewareRenderHeaderRoot, type MiddlewareRenderHeaderRow, type MiddlewareRenderHeaderWrapper, type MiddlewareRenderRoot, type MiddlewareRenderRow, type MiddlewareRenders, type MiddlewareResult, type OnRowType, type PipelineRender, type PipelineRenderOptions, type ScrollElement, type StickyContextState, type TableColumnsContextType, TablePipeline, type TableRowManagerContextType, type UseTablePipelineOptions, _default as VirtualTable, _default$3 as VirtualTableCell, type CellProps as VirtualTableCellProps, type VirtualTableCoreProps as VirtualTableProps, _default$1 as VirtualTableRow, type RowProps as VirtualTableRowProps, createMiddleware, findLastIndex, getKey, getScrollElement, getScrollParent, getScrollTop, isDocument, isRoot, isValidFixed, isValidFixedLeft, isValidFixedRight, isWindow, mergeRefs, onResize, useColumnSizes, useContainerSize, useHorizontalScrollContext, useMergedRef, useShallowMemo, useStableFn, useTablePipeline, useTableRowManager, useTableSticky };
package/index.esm.js CHANGED
@@ -373,6 +373,16 @@ function getScrollElement(el) {
373
373
  }
374
374
  return document.scrollingElement;
375
375
  }
376
+ function getScrollTop(node) {
377
+ var result = 0;
378
+ if (isWindow(node) || isRoot(node)) {
379
+ result = window.scrollY;
380
+ } else {
381
+ var element = getScrollElement(node);
382
+ result = element.scrollTop;
383
+ }
384
+ return result;
385
+ }
376
386
 
377
387
  function useCalcSize(options) {
378
388
  var getScroller = options.getScroller,
@@ -575,7 +585,7 @@ function createMiddleware(hook) {
575
585
  };
576
586
  }
577
587
 
578
- var _excluded$2 = ["render", "renderRoot", "renderContent", "renderHeaderWrapper", "renderHeaderRoot", "renderHeader", "renderHeaderRow", "renderHeaderCell", "renderBodyWrapper", "renderBodyRoot", "renderBody", "renderRow", "renderCell", "rowClassName", "onRow"];
588
+ var _excluded$2 = ["render", "renderRoot", "renderContent", "renderHeaderWrapper", "renderHeaderRoot", "renderHeader", "renderHeaderRow", "renderHeaderCell", "renderBodyWrapper", "renderBodyRoot", "renderBody", "renderBodyContent", "renderRow", "renderCell", "rowClassName", "onRow"];
579
589
  function shakeUnsafeHooks(hooks) {
580
590
  if (Array.isArray(hooks)) {
581
591
  return hooks.filter(function (x) {
@@ -625,6 +635,7 @@ var TablePipeline = /*#__PURE__*/function () {
625
635
  renderBodyWrapper: [],
626
636
  renderBodyRoot: [],
627
637
  renderBody: [],
638
+ renderBodyContent: [],
628
639
  renderRow: [],
629
640
  renderCell: []
630
641
  };
@@ -649,6 +660,7 @@ var TablePipeline = /*#__PURE__*/function () {
649
660
  nextCtx.renderBodyWrapper;
650
661
  nextCtx.renderBodyRoot;
651
662
  nextCtx.renderBody;
663
+ nextCtx.renderBodyContent;
652
664
  nextCtx.renderRow;
653
665
  nextCtx.renderCell;
654
666
  var rowClassName = nextCtx.rowClassName,
@@ -1055,6 +1067,7 @@ function TableBody(props) {
1055
1067
  renderBodyWrapper = props.renderBodyWrapper,
1056
1068
  renderBodyRoot = props.renderBodyRoot,
1057
1069
  renderBody = props.renderBody,
1070
+ renderBodyContent = props.renderBodyContent,
1058
1071
  renderRow = props.renderRow,
1059
1072
  renderCell = props.renderCell;
1060
1073
  var _useRowVirtualize = useRowVirtualize({
@@ -1071,7 +1084,12 @@ function TableBody(props) {
1071
1084
  rowHeightList = _useRowVirtualize.rowHeightList,
1072
1085
  topBlank = _useRowVirtualize.topBlank,
1073
1086
  bottomBlank = _useRowVirtualize.bottomBlank;
1087
+ // Record<rowIndex, Map(rowHeight)>
1088
+ // 一个 Row 可能有多个行高。例如:默认情况下,只有一个行高,展开后,展开面板的高度也被认为是同一个 Row 的
1089
+ // 所以可展开时,行高有多个,所有行高之和,则为 Row 的高度
1090
+ // 行高之间使用唯一的 key 作为区分
1074
1091
  var rowHeights = useRef(new Map());
1092
+ // 更新行高。一般会在 body 渲染后、展开面板中调用
1075
1093
  var updateRowHeight = useCallback(function (index, key, height) {
1076
1094
  var _rowHeights$current$g;
1077
1095
  var target = (_rowHeights$current$g = rowHeights.current.get(index)) != null ? _rowHeights$current$g : new Map();
@@ -1092,6 +1110,8 @@ function TableBody(props) {
1092
1110
  if (elm == null) return;
1093
1111
  var bodyHeight = elm.offsetHeight;
1094
1112
  if (bodyHeight === 0) return;
1113
+ // body 的 ref 回调函数中,说明 body 渲染完成,也就意味着所有的 tr 也已经渲染完成,
1114
+ // 现在可以获取 tr 的高度,记录准确行高
1095
1115
  var heights = rowHeights.current;
1096
1116
  heights.forEach(function (row, rowIndex) {
1097
1117
  var height = Array.from(row.values()).reduce(function (res, x) {
@@ -1102,23 +1122,29 @@ function TableBody(props) {
1102
1122
  updateRowRectList();
1103
1123
  rowHeights.current.clear();
1104
1124
  });
1125
+ var bodyContent = pipelineRender(dataSource.map(function (e, rowIndex) {
1126
+ var _rowKey = e[rowKey];
1127
+ return jsx(Row$1, {
1128
+ className: clsx(rowClassName == null ? undefined : rowClassName(e, rowIndex)),
1129
+ rowIndex: rowIndex + startIndex,
1130
+ rowData: e,
1131
+ columns: columnDescriptor,
1132
+ onRow: onRow,
1133
+ renderRow: renderRow,
1134
+ renderCell: renderCell
1135
+ }, _rowKey);
1136
+ }), renderBodyContent, {
1137
+ columns: columns,
1138
+ columnDescriptor: descriptor,
1139
+ startRowIndex: startIndex
1140
+ });
1105
1141
  var bodyNode = pipelineRender(jsx("tbody", {
1106
1142
  ref: tbodyRef,
1107
- children: dataSource.map(function (e, rowIndex) {
1108
- var _rowKey = e[rowKey];
1109
- return jsx(Row$1, {
1110
- className: clsx(rowClassName == null ? undefined : rowClassName(e, rowIndex)),
1111
- rowIndex: rowIndex + startIndex,
1112
- rowData: e,
1113
- columns: columnDescriptor,
1114
- onRow: onRow,
1115
- renderRow: renderRow,
1116
- renderCell: renderCell
1117
- }, _rowKey);
1118
- })
1143
+ children: bodyContent
1119
1144
  }), renderBody, {
1120
1145
  columns: columns,
1121
- columnDescriptor: descriptor
1146
+ columnDescriptor: descriptor,
1147
+ startRowIndex: startIndex
1122
1148
  });
1123
1149
  var _useColumnSizes = useColumnSizes(),
1124
1150
  setWidthList = _useColumnSizes.setWidthList;
@@ -1135,7 +1161,8 @@ function TableBody(props) {
1135
1161
  }), bodyNode]
1136
1162
  }), renderBodyRoot, {
1137
1163
  columns: columns,
1138
- columnDescriptor: descriptor
1164
+ columnDescriptor: descriptor,
1165
+ startRowIndex: startIndex
1139
1166
  });
1140
1167
  var _useHorizontalScrollC = useHorizontalScrollContext(),
1141
1168
  listen = _useHorizontalScrollC.listen,
@@ -1171,7 +1198,8 @@ function TableBody(props) {
1171
1198
  children: tableNode
1172
1199
  }), renderBodyWrapper, {
1173
1200
  columns: columns,
1174
- columnDescriptor: descriptor
1201
+ columnDescriptor: descriptor,
1202
+ startRowIndex: startIndex
1175
1203
  })
1176
1204
  });
1177
1205
  }
@@ -1670,6 +1698,7 @@ function VirtualTableCore(props, ref) {
1670
1698
  renderBodyWrapper = _pipeline$use.renderBodyWrapper,
1671
1699
  renderBodyRoot = _pipeline$use.renderBodyRoot,
1672
1700
  renderBody = _pipeline$use.renderBody,
1701
+ renderBodyContent = _pipeline$use.renderBodyContent,
1673
1702
  renderRow = _pipeline$use.renderRow,
1674
1703
  renderCell = _pipeline$use.renderCell,
1675
1704
  onPipelineRow = _pipeline$use.onRow;
@@ -1758,6 +1787,7 @@ function VirtualTableCore(props, ref) {
1758
1787
  renderBodyWrapper: renderBodyWrapper,
1759
1788
  renderBodyRoot: renderBodyRoot,
1760
1789
  renderBody: renderBody,
1790
+ renderBodyContent: renderBodyContent,
1761
1791
  renderRow: renderRow,
1762
1792
  renderCell: renderCell
1763
1793
  })]
@@ -1798,5 +1828,5 @@ if (process.env.NODE_ENV === 'development') {
1798
1828
  }
1799
1829
  var table = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(VirtualTableCore));
1800
1830
 
1801
- export { Colgroup$1 as Colgroup, table as VirtualTable, Cell$1 as VirtualTableCell, Row$1 as VirtualTableRow, createMiddleware, findLastIndex, getKey, isValidFixed, isValidFixedLeft, isValidFixedRight, mergeRefs, onResize, useColumnSizes, useContainerSize, useHorizontalScrollContext, useMergedRef, useShallowMemo, useStableFn, useTablePipeline, useTableRowManager, useTableSticky };
1831
+ export { Colgroup$1 as Colgroup, table as VirtualTable, Cell$1 as VirtualTableCell, Row$1 as VirtualTableRow, createMiddleware, findLastIndex, getKey, getScrollElement, getScrollParent, getScrollTop, isDocument, isRoot, isValidFixed, isValidFixedLeft, isValidFixedRight, isWindow, mergeRefs, onResize, useColumnSizes, useContainerSize, useHorizontalScrollContext, useMergedRef, useShallowMemo, useStableFn, useTablePipeline, useTableRowManager, useTableSticky };
1802
1832
  //# sourceMappingURL=index.esm.js.map
package/index.esm.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../../packages/virtual-table/src/utils/equal.ts","../../packages/virtual-table/src/core/hooks/useShallowMemo.ts","../../packages/virtual-table/src/core/utils/get-key.ts","../../packages/virtual-table/src/core/utils/verification.ts","../../packages/virtual-table/src/core/context/column-sizes.tsx","../../packages/virtual-table/src/core/context/sticky.tsx","../../packages/virtual-table/src/core/pipeline/render-pipeline.ts","../../packages/virtual-table/src/core/cell.tsx","../../packages/virtual-table/src/core/colgroup.tsx","../../packages/virtual-table/src/utils/dom.ts","../../packages/virtual-table/src/core/hooks/useCalcSize.ts","../../packages/virtual-table/src/core/context/container-size.tsx","../../packages/virtual-table/src/core/context/horizontal-scroll.tsx","../../packages/virtual-table/src/core/context/row-manager.tsx","../../packages/virtual-table/src/core/hooks/useStableFn.ts","../../packages/virtual-table/src/core/pipeline/create-middleware.ts","../../packages/virtual-table/src/core/pipeline/table-pipeline.ts","../../packages/virtual-table/src/core/pipeline/useTablePipeline.ts","../../packages/virtual-table/src/utils/find-last-index.ts","../../packages/virtual-table/src/core/row.tsx","../../packages/virtual-table/src/utils/ref.ts","../../packages/virtual-table/src/core/utils/on-resize.ts","../../packages/virtual-table/src/core/hooks/useRowVirtualize.ts","../../packages/virtual-table/src/core/body.tsx","../../packages/virtual-table/src/core/header.tsx","../../packages/virtual-table/src/core/hooks/useColumnVirtualize.ts","../../packages/virtual-table/src/core/root.tsx","../../packages/virtual-table/src/core/table.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nexport type validObjectValue = Record<string, any> | null | undefined\nexport type validArrayValue = any[] | null | undefined\n\nexport function shallowEqualObjects(\n objA: validObjectValue,\n objB: validObjectValue,\n): boolean {\n if (objA === objB) {\n return true\n }\n\n if (!objA || !objB) {\n return false\n }\n\n const aKeys = Object.keys(objA)\n const bKeys = Object.keys(objB)\n const len = aKeys.length\n\n if (bKeys.length !== len) {\n return false\n }\n\n for (let i = 0; i < len; i += 1) {\n const key = aKeys[i]\n\n if (objA[key] !== objB[key] || !Object.prototype.hasOwnProperty.call(objB, key)) {\n return false\n }\n }\n\n return true\n}\n\nexport function shallowEqualArrays(\n arrA: validArrayValue,\n arrB: validArrayValue,\n): boolean {\n if (arrA === arrB) {\n return true\n }\n\n if (!arrA || !arrB) {\n return false\n }\n\n const len = arrA.length\n\n if (arrB.length !== len) {\n return false\n }\n\n for (let i = 0; i < len; i += 1) {\n if (arrA[i] !== arrB[i]) {\n return false\n }\n }\n\n return true\n}\n\nexport function isShallowEqual(value: unknown, oldValue: unknown) {\n if (Object.is(value, oldValue)) {\n return true\n }\n if (Array.isArray(value) && Array.isArray(oldValue)) {\n if (shallowEqualArrays(value, oldValue)) {\n return true\n }\n if (value.length === oldValue.length) {\n const hasObject = value.findIndex((x) => typeof x === 'object' && x != null) > -1\n if (hasObject) {\n return value.every((state, index) => {\n if (Array.isArray(state)) {\n return shallowEqualArrays(state, oldValue[index] as unknown[])\n }\n if (typeof state === 'object' && state != null) {\n return shallowEqualObjects(\n state as Record<string, unknown>,\n oldValue[index] as Record<string, unknown>,\n )\n }\n return Object.is(state, oldValue[index])\n })\n }\n }\n return false\n }\n if (value instanceof Map && oldValue instanceof Map) {\n const keys = Array.from(value.keys())\n const oldKeys = Array.from(oldValue.keys())\n if (isShallowEqual(keys, oldKeys)) {\n const values = Array.from(value.values())\n const oldValues = Array.from(oldValue.values())\n if (isShallowEqual(values, oldValues)) {\n return true\n }\n }\n return false\n }\n if (typeof value === 'object' && value != null) {\n return shallowEqualObjects(value, oldValue as Record<string, unknown>)\n }\n return false\n}\n","/* eslint-disable react-compiler/react-compiler */\nimport { useRef } from 'react'\n\nimport { isShallowEqual } from '../../utils/equal'\n\n/**\n * 缓存数据(浅比较,如果是数组则对第一层进行浅比较)\n */\nexport function useShallowMemo<T>(pickData: () => T) {\n const nextState = pickData()\n const value = useRef<T>(nextState)\n\n if (!isShallowEqual(nextState, value.current)) {\n value.current = nextState\n }\n\n return value.current\n}\n","import type { Key } from 'react'\nimport type { ColumnType } from '../types'\n\nexport function getKey<T>(column: ColumnType<T>) {\n return 'key' in column ? (column.key as Key) : column.dataIndex as string\n}\n","export type FixedType = 'left' | 'right'\n\nexport function isValidFixedLeft(fixed: unknown) {\n return fixed === 'left'\n}\n\nexport function isValidFixedRight(fixed: unknown) {\n return fixed === 'right'\n}\n\nexport function isValidFixed(fixed: unknown) {\n return isValidFixedLeft(fixed) || isValidFixedRight(fixed)\n}\n","import type { Key } from 'react'\nimport { createContext, useContext } from 'react'\n\nexport interface TableColumnsContextType {\n widthList: Map<Key, number>\n setWidthList: (value: Map<Key, number>) => void\n}\n\nexport const ColumnSizes = createContext<TableColumnsContextType | null>(null)\n\nif (__DEV__) {\n ColumnSizes.displayName = 'VirtualTable.ColumnSizes'\n}\n\nexport function useColumnSizes() {\n const context = useContext(ColumnSizes)\n if (context == null) {\n throw new Error('useColumnSizes provider not found')\n }\n return context\n}\n","import type { Key, PropsWithChildren } from 'react'\nimport type { ColumnType, FixedType } from '../types'\nimport { createContext, useContext, useMemo } from 'react'\nimport { useShallowMemo } from '../hooks/useShallowMemo'\nimport { getKey } from '../utils/get-key'\nimport { isValidFixedLeft, isValidFixedRight } from '../utils/verification'\nimport { useColumnSizes } from './column-sizes'\n\nexport interface StickyContextState {\n size: Map<Key, number>\n /** 每一列设置的 fixed 值 */\n fixed: { key: Key, fixed: FixedType | undefined }[]\n}\n\nexport const Sticky = createContext<StickyContextState | null>(null)\n\nif (__DEV__) {\n Sticky.displayName = 'VirtualTable.Sticky'\n}\n\nexport function StickyContext(\n props: PropsWithChildren<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n columns: ColumnType<any>[]\n }>,\n) {\n const { columns, children } = props\n const { widthList } = useColumnSizes()\n\n const columnsFixedRecord = useMemo(() => {\n return columns.map((column) => {\n const key = getKey(column)\n return { key, fixed: column.fixed }\n })\n }, [columns])\n\n const stickySizes = useMemo(() => {\n let left = 0\n const leftOffset = columnsFixedRecord.reduce<number[]>((res, item, index) => {\n const { fixed, key } = item\n if (isValidFixedLeft(fixed)) {\n res[index] = left\n // eslint-disable-next-line react-compiler/react-compiler\n left += widthList.get(key) ?? 0\n }\n return res\n }, [])\n\n let right = 0\n const rightOffset = columnsFixedRecord.reduceRight((res, item, index) => {\n const { fixed, key } = item\n if (isValidFixedRight(fixed)) {\n res[index] = right\n right += widthList.get(key) ?? 0\n }\n return res\n }, [] as number[])\n\n return columnsFixedRecord.reduce((result, item, index) => {\n const { key, fixed } = item\n if (isValidFixedLeft(fixed)) {\n result.set(key, leftOffset[index])\n return result\n }\n if (isValidFixedRight(fixed)) {\n result.set(key, rightOffset[index])\n return result\n }\n return result\n }, new Map<Key, number>())\n }, [columnsFixedRecord, widthList])\n\n const shallowMemoFixedRecord = useShallowMemo(() => columnsFixedRecord)\n const shallowMemoStickySizes = useShallowMemo(() => stickySizes)\n\n const stickyState = useMemo((): StickyContextState => {\n return { size: shallowMemoStickySizes, fixed: shallowMemoFixedRecord }\n }, [shallowMemoFixedRecord, shallowMemoStickySizes])\n\n return (\n <Sticky.Provider value={stickyState}>\n {children}\n </Sticky.Provider>\n )\n}\n\nexport function useTableSticky() {\n const context = useContext(Sticky)\n if (context == null) {\n throw new Error('useTableSticky provider not found')\n }\n return context\n}\n","import type { ReactNode } from 'react'\nimport type { MergedMiddlewareRender } from './types'\n\ntype RenderOptions<T> = T extends ((children: ReactNode, options: infer Opt) => ReactNode) ? Opt : object\n\nexport function pipelineRender<T extends MergedMiddlewareRender>(\n node: ReactNode,\n render: T | undefined,\n options: RenderOptions<T>,\n): ReactNode {\n if (typeof render === 'function') {\n // @ts-expect-error: There is no way to declare the type correctly, but it works at runtime.\n return render(node, options)\n }\n return node\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { DetailedHTMLProps, HTMLAttributes, ReactElement } from 'react'\nimport type { MiddlewareRenderCell } from './pipeline/types'\nimport type { AnyObject, ColumnType } from './types'\nimport clsx from 'clsx'\nimport { memo } from 'react'\nimport { useTableSticky } from './context/sticky'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport { getKey } from './utils/get-key'\nimport { isValidFixed, isValidFixedLeft, isValidFixedRight } from './utils/verification'\n\ntype NativeProps = DetailedHTMLProps<\n HTMLAttributes<HTMLTableCellElement>,\n HTMLTableCellElement\n>\n\nexport interface CellProps<T> extends Omit<NativeProps, 'children'> {\n column: ColumnType<T>\n rowIndex: number\n rowData: T\n renderCell?: MiddlewareRenderCell\n}\n\nfunction getTableCellContent<T extends AnyObject>(\n index: number,\n data: T,\n column: ColumnType<any>,\n): any {\n const { render } = column\n const rowData = data as AnyObject\n if ('dataIndex' in column) {\n const dataIndex = column.dataIndex as string\n if (typeof render !== 'function') {\n return rowData[dataIndex]\n }\n return render(rowData[dataIndex], data, index)\n }\n return render?.(data, data, index) ?? null\n}\n\nfunction Cell<T>(props: CellProps<T>) {\n const {\n className,\n style,\n column,\n rowData,\n rowIndex,\n renderCell,\n ...restProps\n } = props\n\n const { align, fixed, onCell } = column\n const key = getKey(column)\n const { size: stickySizes } = useTableSticky()\n\n const {\n className: extraClassName,\n style: extraStyle,\n colSpan,\n rowSpan,\n ...extraProps\n } = onCell?.(rowData, rowIndex) ?? {}\n\n if (colSpan === 0 || rowSpan === 0) {\n return null\n }\n\n return pipelineRender(\n <td\n {...restProps}\n {...extraProps}\n colSpan={colSpan}\n rowSpan={rowSpan}\n className={clsx(\n 'virtual-table-cell',\n align != null && `virtual-table-align-${align}`,\n isValidFixed(fixed) && 'virtual-table-sticky-cell',\n className,\n column.className,\n extraClassName,\n )}\n style={{\n ...style,\n ...extraStyle,\n left: isValidFixedLeft(fixed) ? stickySizes.get(key) : undefined,\n right: isValidFixedRight(fixed) ? stickySizes.get(key) : undefined,\n }}\n >\n {getTableCellContent(rowIndex, rowData as AnyObject, column)}\n </td>,\n renderCell,\n { column },\n )\n}\n\nexport default memo(Cell) as <T>(props: CellProps<T>) => ReactElement\n","import type { FC, Key } from 'react'\nimport type { ColumnDescriptor } from './types'\nimport { memo, useRef } from 'react'\nimport { isShallowEqual } from '../utils/equal'\n\nexport interface ColgroupProps {\n columns: ColumnDescriptor[]\n onColumnSizesMeasure?: (columnSizes: Map<Key, number>) => void\n}\n\nconst Colgroup: FC<ColgroupProps> = (props) => {\n const { columns, onColumnSizesMeasure } = props\n\n const enableMeasure = onColumnSizesMeasure != null\n const columnSizes = new Map<Key, number>()\n const prevColumnSizes = useRef(new Map<Key, number>())\n\n return (\n <colgroup\n ref={() => {\n if (!enableMeasure) return\n if (!isShallowEqual(columnSizes, prevColumnSizes.current)) {\n onColumnSizesMeasure(columnSizes)\n prevColumnSizes.current = columnSizes\n }\n }}\n >\n {columns.map((item) => {\n const { key } = item\n if (item.type === 'blank') {\n return <col key={key} className=\"blank\" style={{ width: item.width }} />\n }\n\n const { column } = item\n\n return (\n <col\n key={key}\n ref={(node) => {\n if (node == null || !enableMeasure) return\n columnSizes.set(key, node.offsetWidth)\n }}\n style={{\n width: column.width,\n minWidth: column.minWidth,\n }}\n />\n )\n })}\n </colgroup>\n )\n}\n\nexport default memo(Colgroup)\n","export type ScrollElement = HTMLElement | Window\n\nconst overflowStylePatterns = /auto|scroll|overlay|hidden/\n\nfunction isElement(node: unknown): node is Node {\n if (!(node instanceof Node)) {\n return false\n }\n const ELEMENT_NODE_TYPE = 1\n return node.nodeType === ELEMENT_NODE_TYPE\n}\n\nexport function getScrollParent(\n el: Element,\n root: ScrollElement | null | undefined = window,\n): ScrollElement {\n let node = el\n\n while (node !== root && isElement(node)) {\n if (node === document.body) {\n return root as HTMLElement\n }\n const { overflow, overflowY, overflowX } = window.getComputedStyle(node)\n if (overflowStylePatterns.test(overflow + overflowY + overflowX)) {\n return node as HTMLElement\n }\n node = node.parentNode as Element\n }\n return el.ownerDocument.defaultView ?? window\n}\n\nexport function isWindow(arg: unknown): arg is Window {\n return Object.prototype.toString.call(arg) === '[object Window]'\n}\n\nexport function isDocument(arg: unknown): arg is Document {\n return Object.prototype.toString.call(arg) === '[object HTMLDocument]'\n}\n\nexport function isRoot(arg: unknown): arg is HTMLElement {\n return Object.prototype.toString.call(arg) === '[object HTMLHtmlElement]'\n}\n\nexport function getScrollElement(el: unknown): Element {\n if (isDocument(el)) {\n return el.scrollingElement!\n }\n if (isElement(el)) {\n return el as Element\n }\n return document.scrollingElement!\n}\n","import type { RefObject } from 'react'\nimport type { ScrollElement } from '../../utils/dom'\nimport { useLayoutEffect, useRef, useState } from 'react'\nimport { isWindow } from '../../utils/dom'\n\nexport interface CalcSizeOptions {\n getScroller: () => ScrollElement | undefined\n root: RefObject<HTMLDivElement>\n}\n\nexport function useCalcSize(options: CalcSizeOptions) {\n const { getScroller, root } = options\n\n const [scrollContainerWidth, setScrollContainerWidth] = useState(0)\n const [scrollContainerHeight, setScrollContainerHeight] = useState(0)\n\n const [tableWidth, setTableWidth] = useState(0)\n const [tableHeight, setTableHeight] = useState(0)\n\n const scrollerContainerRef = useRef<HTMLElement | null>(null)\n\n useLayoutEffect(() => {\n const scrollerContainer = getScroller()\n if (scrollerContainer == null) return\n let scroller: HTMLElement\n if (isWindow(scrollerContainer)) {\n scroller = document.scrollingElement as HTMLElement\n } else {\n scroller = scrollerContainer\n }\n scrollerContainerRef.current = scroller\n const observer = new ResizeObserver((entries) => {\n const { width, height } = entries[0].contentRect\n setScrollContainerWidth(width)\n setScrollContainerHeight(height)\n })\n observer.observe(scroller)\n return () => {\n observer.disconnect()\n }\n }, [getScroller])\n\n useLayoutEffect(() => {\n const node = root.current\n if (node == null) return\n const observer = new ResizeObserver((entries) => {\n const { width, height } = entries[0].contentRect\n setTableWidth(width)\n setTableHeight(height)\n })\n observer.observe(node)\n return () => {\n observer.disconnect()\n }\n }, [root])\n\n return {\n scrollContainerWidth,\n scrollContainerHeight,\n tableWidth,\n tableHeight,\n }\n}\n","import type { PropsWithChildren } from 'react'\nimport type { CalcSizeOptions } from '../hooks/useCalcSize'\nimport { createContext, useContext, useMemo } from 'react'\nimport { useCalcSize } from '../hooks/useCalcSize'\n\nexport interface ContainerSizeState {\n scrollContainerWidth: number\n scrollContainerHeight: number\n tableWidth: number\n tableHeight: number\n}\n\nconst ContainerSize = createContext<ContainerSizeState | null>(null)\n\nexport function ContainerSizeContext(props: PropsWithChildren<CalcSizeOptions>) {\n const { getScroller, root, children } = props\n\n const {\n scrollContainerHeight,\n scrollContainerWidth,\n tableHeight,\n tableWidth,\n } = useCalcSize({ getScroller, root })\n\n const state = useMemo((): ContainerSizeState => {\n return {\n scrollContainerWidth,\n scrollContainerHeight,\n tableWidth,\n tableHeight,\n }\n }, [scrollContainerWidth, scrollContainerHeight, tableWidth, tableHeight])\n\n return (\n <ContainerSize.Provider value={state}>\n {children}\n </ContainerSize.Provider>\n )\n}\n\nexport function useContainerSize() {\n const context = useContext(ContainerSize)\n if (context == null) {\n throw new Error('useContainerSize provider not found')\n }\n return context\n}\n","import type { PropsWithChildren } from 'react'\nimport { createContext, useContext, useMemo, useRef } from 'react'\n\ntype Listener = (scrollLeft: number, node: HTMLElement) => void\n\nexport interface HorizontalScrollContextState {\n listen: (key: string, listener: Listener) => () => void\n notify: (key: string, options: { scrollLeft: () => number, node: HTMLElement }) => void\n}\n\nconst HorizontalScroll = createContext<HorizontalScrollContextState | null>(null)\n\nif (__DEV__) {\n HorizontalScroll.displayName = 'VirtualTable.HorizontalScroll'\n}\n\nexport function HorizontalScrollContext(props: PropsWithChildren) {\n const { children } = props\n\n const listenerMap = useRef(new Map<string, Listener>())\n const context = useMemo((): HorizontalScrollContextState => {\n const skipEvent = new Set<string>()\n return {\n listen(key, listener) {\n listenerMap.current.set(key, (scrollLeft, node) => {\n listener(scrollLeft, node)\n })\n return () => {\n listenerMap.current.delete(key)\n }\n },\n notify(key, options) {\n if (skipEvent.has(key)) {\n skipEvent.delete(key)\n return\n }\n const { scrollLeft, node } = options\n let rAF = window.requestAnimationFrame as ((fn: () => void) => void) | undefined\n if (rAF == null) {\n rAF = (fn: () => void) => {\n fn()\n }\n }\n listenerMap.current.forEach((listener, itemKey) => {\n if (key === itemKey) return\n skipEvent.add(itemKey)\n rAF(() => {\n listener(scrollLeft(), node)\n })\n })\n },\n }\n }, [])\n\n return <HorizontalScroll.Provider value={context}>{children}</HorizontalScroll.Provider>\n}\n\nexport function useHorizontalScrollContext() {\n const context = useContext(HorizontalScroll)\n\n if (context == null) {\n throw new Error('useHorizontalScrollContext provider not found')\n }\n\n return context\n}\n","import type { Key } from 'react'\nimport { createContext, useContext } from 'react'\n\nexport interface TableRowManagerContextType {\n getRowHeightList: () => number[]\n /**\n * @param index rowIndex\n * @param key 唯一的 key,用于去重\n * @param height 行高\n */\n updateRowHeight: (index: number, key: Key, height: number) => void\n}\n\nexport const TableRowManager = createContext<TableRowManagerContextType | null>(null)\n\nif (__DEV__) {\n TableRowManager.displayName = 'VirtualTable.RowManager'\n}\n\nexport function useTableRowManager() {\n const context = useContext(TableRowManager)\n if (context == null) {\n throw new Error('useTableRowManager provider not found')\n }\n return context\n}\n","import { useCallback, useLayoutEffect, useRef } from 'react'\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport function useStableFn<T extends Function>(callback: T): T {\n const fn = useRef<T | null>(null)\n useLayoutEffect(() => {\n fn.current = callback\n })\n\n const stableFn = useCallback((...args: unknown[]) => {\n return fn.current?.(...args) as unknown\n }, []) as unknown as T\n\n return stableFn\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Middleware, MiddlewareContext, MiddlewareResult } from './types'\nimport { isShallowEqual } from '../../utils/equal'\n\n/**\n * 创建中间件,内部会浅比较 options,只有 options 改变才会返回新的函数。\n */\nfunction createMiddleware<T, Args extends any[]>(\n hook: (ctx: MiddlewareContext<T>, ...args: Args) => MiddlewareResult<T>,\n): (...args: Args) => Middleware<T> {\n const cache = {\n current: null as Middleware<T> | null,\n options: null as Args | null | undefined,\n }\n\n return (...options: Args): Middleware<T> => {\n const useMiddleware: Middleware<T> = (ctx) => hook(ctx, ...options)\n\n if (isShallowEqual(options, cache.options)) {\n return cache.current ?? useMiddleware\n }\n\n cache.options = options\n cache.current = useMiddleware\n\n return useMiddleware\n }\n}\n\nexport type { MiddlewareResult }\nexport { createMiddleware }\n","import type { ReactNode } from 'react'\nimport type { OnRowType } from '../types'\nimport type { Middleware, MiddlewareContext, MiddlewareRenders, MiddlewareResult } from './types'\nimport clsx from 'clsx'\n\nexport interface Hook<T> { priority: number, hook: Middleware<T> }\nexport type UnsafeHook<T> = Middleware<T> | undefined | null | Hook<T>\n\ntype RenderFunctions<T> = {\n [K in keyof T]: (T[K])[]\n}\n\nexport function shakeUnsafeHooks<T>(hooks: UnsafeHook<T>[]): Hook<T>[] {\n if (Array.isArray(hooks)) {\n return hooks.filter((x) => {\n return x != null && (typeof x === 'function' || typeof x.hook === 'function')\n }).map((hook): Hook<T> => {\n if (typeof hook === 'function') {\n return { priority: 100, hook }\n }\n return hook!\n })\n }\n return []\n}\n\nexport class TablePipeline<T> {\n constructor() {\n this.use = this.use.bind(this)\n }\n\n hooks: Hook<T>[] = []\n\n setHooks(value: Hook<T>[]) {\n this.hooks = value\n }\n\n use(options: MiddlewareContext<T>): MiddlewareResult<T> {\n if (this.hooks.length === 0) {\n return options\n }\n\n const context: { current: MiddlewareResult<T> } = { current: options }\n\n const renderFunctionMap: RenderFunctions<Required<MiddlewareRenders>> = {\n render: [],\n renderRoot: [],\n renderContent: [],\n renderHeaderWrapper: [],\n renderHeaderRoot: [],\n renderHeader: [],\n renderHeaderRow: [],\n renderHeaderCell: [],\n renderBodyWrapper: [],\n renderBodyRoot: [],\n renderBody: [],\n renderRow: [],\n renderCell: [],\n }\n\n const rowClassNameFunctions: ((record: T, index: number) => string)[] = []\n const onRowFunctions: OnRowType<T>[] = []\n\n const hooks = this.hooks.slice()\n hooks.sort((a, b) => a.priority - b.priority)\n\n hooks.map((x) => x.hook).forEach((hook) => {\n const nextCtx = hook(context.current)\n const {\n render: _render,\n renderRoot: _renderRoot,\n renderContent: _renderContent,\n renderHeaderWrapper: _renderHeaderWrapper,\n renderHeaderRoot: _renderHeaderRoot,\n renderHeader: _renderHeader,\n renderHeaderRow: _renderHeaderRow,\n renderHeaderCell: _renderHeaderCell,\n renderBodyWrapper: _renderBodyWrapper,\n renderBodyRoot: _renderBodyRoot,\n renderBody: _renderBody,\n renderRow: _renderRow,\n renderCell: _renderCell,\n\n rowClassName,\n onRow,\n ...rest\n } = nextCtx\n\n Object.entries(renderFunctionMap).forEach(([key, value]) => {\n const target = nextCtx[key as keyof MiddlewareRenders]\n if (typeof target === 'function') {\n // @ts-expect-error: There is no way to declare the type correctly, but it works at runtime.\n value.push(target)\n }\n })\n\n if (typeof rowClassName === 'function') {\n rowClassNameFunctions.push(rowClassName)\n }\n if (typeof onRow === 'function') {\n onRowFunctions.push(onRow)\n }\n context.current = rest\n })\n\n Object.entries(renderFunctionMap).forEach(([key, renders]) => {\n if (renders.length > 0) {\n context.current[key as keyof MiddlewareRenders] = (children, args) => {\n // reduce 把 [render1, render2] 转为 render2(render1(children))\n return renders.reduce<ReactNode>((node, render) => {\n // @ts-expect-error: There is no way to declare the type correctly, but it works at runtime.\n return render(node, args)\n }, children)\n }\n }\n })\n\n if (rowClassNameFunctions.length > 0) {\n context.current.rowClassName = (record, index) => {\n return clsx(...rowClassNameFunctions.map((fn) => fn(record, index)))\n }\n }\n\n if (onRowFunctions.length > 0) {\n context.current.onRow = (record, index) => {\n return onRowFunctions.reduce((result, item) => {\n return { ...result, ...item(record, index) }\n }, {})\n }\n }\n\n return context.current\n }\n\n static defaultPipeline = new TablePipeline()\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Hook } from './table-pipeline'\nimport type { Middleware } from './types'\nimport { useMemo } from 'react'\nimport { shallowEqualArrays } from '../../utils/equal'\nimport { shakeUnsafeHooks, TablePipeline } from './table-pipeline'\n\nexport interface UseTablePipelineOptions<T = any> {\n pipeline?: TablePipeline<T>\n use?: (Middleware<T> | Hook<T>)[]\n}\n\nexport { TablePipeline }\nexport type { Hook }\n\nexport function useTablePipeline<T = any>(options: UseTablePipelineOptions<T>) {\n const { use, pipeline: extraPipeline } = options\n\n const cached = useMemo(() => ({ current: new TablePipeline<T>() }), [])\n\n if (use != null) {\n const nextHooks = shakeUnsafeHooks([...use, ...(extraPipeline?.hooks ?? [])])\n\n if (!shallowEqualArrays(cached.current.hooks, nextHooks)) {\n const pipeline = new TablePipeline<T>()\n pipeline.setHooks(nextHooks)\n cached.current = pipeline\n return pipeline\n }\n }\n\n return cached.current\n}\n","export function findLastIndex<T>(\n arr: T[],\n predicate: (value: T, index: number) => boolean,\n) {\n let result = -1\n for (let i = 0; i < arr.length; i += 1) {\n if (predicate(arr[i], i)) {\n result = i\n }\n }\n return result\n}\n","import type { DetailedHTMLProps, HTMLAttributes, ReactElement } from 'react'\nimport type { MiddlewareRenderCell, MiddlewareRenderRow } from './pipeline/types'\nimport type { InnerColumnDescriptor, OnRowType } from './types'\nimport clsx from 'clsx'\nimport { memo } from 'react'\nimport { findLastIndex } from '../utils/find-last-index'\nimport Cell from './cell'\nimport { useTableRowManager } from './context/row-manager'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport { isValidFixedLeft, isValidFixedRight } from './utils/verification'\n\ntype NativeProps = DetailedHTMLProps<\n HTMLAttributes<HTMLTableRowElement>,\n HTMLTableRowElement\n>\n\nexport interface RowProps<T> extends Omit<NativeProps, 'children'> {\n rowIndex: number\n rowData: T\n columns: InnerColumnDescriptor<T>\n onRow?: OnRowType<T>\n renderRow?: MiddlewareRenderRow\n renderCell?: MiddlewareRenderCell\n}\n\nfunction Row<T>(props: RowProps<T>) {\n const {\n className,\n rowIndex,\n rowData,\n columns: columnDescriptor,\n onRow,\n renderRow,\n renderCell,\n ...rest\n } = props\n\n const { updateRowHeight } = useTableRowManager()\n\n const { columns, descriptor } = columnDescriptor\n\n const lastFixedLeftColumnIndex = findLastIndex(descriptor, (x) => {\n if (x.type === 'blank') {\n return false\n }\n return isValidFixedLeft(x.column.fixed)\n })\n const firstFixedRightColumnIndex = descriptor.findIndex((x) => {\n if (x.type === 'blank') {\n return false\n }\n return isValidFixedRight(x.column.fixed)\n })\n\n const { className: extraClassName, ...extraProps } = onRow?.(rowData, rowIndex) ?? {}\n\n return pipelineRender(\n <tr\n {...rest}\n {...extraProps}\n className={clsx('virtual-table-row', className, extraClassName)}\n ref={(node) => {\n if (node == null) return\n // 小心陷阱:当 table 父元素为 display: none 时,依然会触发 updateRowHeight 函数,并设置高度为 0\n updateRowHeight(rowIndex, rowIndex, node.offsetHeight)\n }}\n >\n {descriptor.map((item, index) => {\n const { key } = item\n if (item.type === 'blank') {\n return <td key={key} />\n }\n const { column } = item\n return (\n <Cell\n key={key}\n className={clsx(\n lastFixedLeftColumnIndex === index && 'virtual-table-cell-fix-left-last',\n firstFixedRightColumnIndex === index\n && 'virtual-table-cell-fix-right-first',\n )}\n column={column}\n rowIndex={rowIndex}\n rowData={rowData}\n renderCell={renderCell}\n />\n )\n })}\n </tr>,\n renderRow,\n { columns, rowIndex, rowData, columnDescriptor: descriptor },\n )\n}\n\nexport default memo(Row) as <T>(props: RowProps<T>) => ReactElement\n","import type { MutableRefObject, Ref } from 'react'\nimport { useCallback } from 'react'\n\ntype PossibleRef<T> = Ref<T> | undefined\n\nexport function assignRef<T>(ref: PossibleRef<T>, value: T) {\n if (typeof ref === 'function') {\n ref(value)\n } else if (typeof ref === 'object' && ref !== null && 'current' in ref) {\n (ref as MutableRefObject<T>).current = value\n }\n}\n\nexport function mergeRefs<T>(...refs: PossibleRef<T>[]) {\n return (node: T | null) => {\n refs.forEach((ref) => assignRef(ref, node))\n }\n}\n\nexport function useMergedRef<T>(...refs: PossibleRef<T>[]) {\n // eslint-disable-next-line react-compiler/react-compiler\n return useCallback(mergeRefs(...refs), refs)\n}\n","import { isWindow } from '../../utils/dom'\n\ninterface ResizeRect {\n width: number\n height: number\n}\n\nexport function onResize(target: Window | HTMLElement, callback: (rect: ResizeRect) => void) {\n if (isWindow(target)) {\n const listener = () => {\n callback({\n width: window.innerWidth,\n height: window.innerHeight,\n })\n }\n listener()\n window.addEventListener('resize', listener)\n return () => {\n window.removeEventListener('resize', listener)\n }\n } else {\n const observer = new ResizeObserver((entries) => {\n const rect = entries[0].contentRect\n callback({ width: rect.width, height: rect.height })\n })\n observer.observe(target)\n return () => {\n observer.disconnect()\n }\n }\n}\n","/* eslint-disable react-compiler/react-compiler */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { ScrollElement } from '../../utils/dom'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport { getScrollElement, isRoot, isWindow } from '../../utils/dom'\nimport { onResize } from '../utils/on-resize'\n\nexport interface RowRect {\n index: number\n height: number\n top: number\n bottom: number\n}\n\ninterface UseRowVirtualizeOptions<T = any> {\n getOffsetTop: () => number\n dataSource: T[]\n getScroller: () => ScrollElement | undefined\n estimateSize: number\n overscan: number\n}\n\nfunction anchorQuery(rects: RowRect[], scrollTop: number) {\n let left = 0\n let right = rects.length - 1\n let index = -1\n\n while (left <= right) {\n const mid = Math.floor((left + right) / 2)\n\n if (rects[mid].bottom > scrollTop) {\n index = mid\n right = mid - 1\n } else {\n left = mid + 1\n }\n }\n\n if (index === -1) {\n return undefined\n }\n\n return rects[index]\n}\n\nexport function useRowVirtualize<T = any>(options: UseRowVirtualizeOptions<T>) {\n const {\n getOffsetTop,\n dataSource: rawData,\n getScroller,\n estimateSize,\n overscan,\n } = options\n\n const [startIndex, setStartIndex] = useState(0)\n const [endIndex, setEndIndex] = useState(0)\n\n const dataSlice = useMemo(() => {\n return rawData.slice(startIndex, endIndex)\n }, [rawData, startIndex, endIndex])\n\n // 行高信息(先填充预估高度,DOM渲染后再更新成实际高度)\n const rowHeights = useRef<number[]>([])\n const fillRowHeights = () => {\n const len = rawData.length\n for (let i = 0; i < len; i++) {\n const target = rowHeights.current[i] as number | undefined\n // 由于 fillRowHeights 是在渲染阶段调用,防止重复渲染时 estimateSize 覆盖了真实 DOM 的高度\n if (target == null) {\n rowHeights.current[i] = estimateSize\n }\n }\n rowHeights.current = rowHeights.current.slice(0, len)\n }\n fillRowHeights()\n\n // 布局信息(也就是锚点元素需要的信息,top,bottom,height,index)\n const rowRects = useRef<RowRect[]>([])\n const updateRowRectList = (shouldSkip = false) => {\n if (shouldSkip && rowRects.current.length > 0) {\n return\n }\n const { rects } = rowHeights.current.reduce((result, height, index) => {\n const nextTop = result.top + height\n result.rects.push({\n index,\n top: result.top,\n height,\n bottom: nextTop,\n })\n result.top = nextTop\n return result\n }, { top: 0, rects: [] as RowRect[] })\n rowRects.current = rects\n }\n\n const setRowHeight = (index: number, height: number) => {\n rowHeights.current[index] = height\n }\n\n // 锚点元素,当前虚拟列表中,最接近滚动容器顶部的元素\n const anchorRef = useRef<RowRect>({\n index: 0,\n height: estimateSize,\n top: 0,\n bottom: estimateSize,\n })\n\n // 用来判断滚动方向\n const scrollTopRef = useRef(0)\n const initial = useRef(false)\n useEffect(() => {\n const container = getScroller()\n if (container == null) return\n\n let count = 0\n\n const getScrollTop = () => {\n const offsetTop = getOffsetTop()\n let result = 0\n if (isWindow(container) || isRoot(container)) {\n result = window.scrollY\n } else {\n const element = getScrollElement(container)\n result = element.scrollTop\n }\n return Math.max(result - offsetTop, 0)\n }\n\n const calcCount = (scrollerContainerHeight: number) => {\n const prevCount = count\n count = Math.ceil(scrollerContainerHeight / estimateSize)\n return { prevCount }\n }\n\n const updateBoundary = (scrollTop: number) => {\n const anchor = anchorQuery(rowRects.current, scrollTop)\n if (anchor != null) {\n anchorRef.current = anchor\n setStartIndex(Math.max(0, anchor.index - overscan))\n setEndIndex(anchor.index + count + overscan)\n }\n }\n\n const onScroll = (e: Event) => {\n const offsetTop = getOffsetTop()\n const scrollElement = getScrollElement(e.target)\n const scrollTop = Math.max(0, scrollElement.scrollTop - offsetTop)\n\n // 是否为向下滚动\n const isScrollDown = scrollTop > scrollTopRef.current\n\n if (isScrollDown) {\n // 如果滚动距离比较小,没有超出锚点元素的边界,就不需要计算 startIndex、endIndex 了\n if (scrollTop > anchorRef.current.bottom) {\n updateBoundary(scrollTop)\n }\n } else {\n if (scrollTop < anchorRef.current.top) {\n updateBoundary(scrollTop)\n }\n }\n\n scrollTopRef.current = scrollTop\n }\n\n let prevHeight = 0\n const stopListen = onResize(container, (rect) => {\n // 处理父元素 display:none 容器高度丢失,导致显示 row 不准确\n if (rect.height === prevHeight || rect.height === 0) {\n return\n }\n prevHeight = rect.height\n calcCount(rect.height)\n const scrollTop = getScrollTop()\n if (!initial.current) {\n initial.current = true\n let nextStartIndex = 0\n // 判断一下当前滚动位置,计算 startIndex(场景:SPA 页面切换且渲染非异步数据)\n if (scrollTop >= estimateSize) {\n nextStartIndex = Math.max(Math.floor(scrollTop / estimateSize) - 1 - overscan, 0)\n }\n const nextEndIndex = nextStartIndex + count + overscan\n setStartIndex(nextStartIndex)\n setEndIndex(nextEndIndex)\n } else {\n updateBoundary(scrollTop)\n }\n })\n\n container.addEventListener('scroll', onScroll)\n return () => {\n stopListen()\n container.removeEventListener('scroll', onScroll)\n }\n }, [estimateSize, getOffsetTop, getScroller, overscan])\n\n const sum = (startIndex: number, endIndex?: number) => {\n return rowHeights.current.slice(startIndex, endIndex).reduce((a, b) => a + b, 0)\n }\n // TODO: React Compiler 测试 topBlank 和 bottomBlank\n const topBlank = sum(0, startIndex)\n const bottomBlank = sum(endIndex)\n\n return {\n startIndex,\n endIndex,\n\n rowHeightList: rowHeights,\n updateRowRectList,\n setRowHeight,\n\n topBlank,\n bottomBlank,\n\n dataSlice,\n }\n}\n","import type { CSSProperties, Key, Ref } from 'react'\nimport type { ScrollElement } from '../utils/dom'\nimport type { TableRowManagerContextType } from './context/row-manager'\nimport type { NecessaryProps } from './internal'\nimport type {\n MiddlewareRenderBody,\n MiddlewareRenderBodyRoot,\n MiddlewareRenderBodyWrapper,\n} from './pipeline/types'\nimport type { RowProps } from './row'\nimport type { AnyObject, InnerColumnDescriptor } from './types'\nimport clsx from 'clsx'\nimport { useCallback, useEffect, useMemo, useRef } from 'react'\nimport { useMergedRef } from '../utils/ref'\nimport Colgroup from './colgroup'\nimport { useColumnSizes } from './context/column-sizes'\nimport { useHorizontalScrollContext } from './context/horizontal-scroll'\nimport { TableRowManager } from './context/row-manager'\nimport { useRowVirtualize } from './hooks/useRowVirtualize'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport Row from './row'\n\nexport interface TableBodyProps<T>\n extends Omit<NecessaryProps<T>, 'columns'>,\n Pick<RowProps<T>, 'onRow' | 'renderRow' | 'renderCell'> {\n className?: string\n style?: CSSProperties\n columns: InnerColumnDescriptor<T>\n bodyWrapperRef?: Ref<HTMLDivElement>\n bodyRootRef?: Ref<HTMLTableElement>\n bodyRef?: Ref<HTMLTableSectionElement>\n overscan: number\n estimateSize: number\n getOffsetTop: () => number\n getScroller: () => ScrollElement | undefined\n rowClassName?: (record: T, index: number) => string\n renderBodyWrapper?: MiddlewareRenderBodyWrapper\n renderBodyRoot?: MiddlewareRenderBodyRoot\n renderBody?: MiddlewareRenderBody\n}\n\nfunction TableBody<T>(props: TableBodyProps<T>) {\n const {\n bodyWrapperRef,\n bodyRootRef,\n bodyRef,\n className,\n style,\n dataSource: rawData,\n columns: columnDescriptor,\n rowKey,\n\n overscan,\n estimateSize,\n\n getScroller,\n getOffsetTop,\n\n rowClassName,\n onRow,\n renderBodyWrapper,\n renderBodyRoot,\n renderBody,\n renderRow,\n renderCell,\n } = props\n\n const {\n startIndex,\n dataSlice: dataSource,\n setRowHeight,\n updateRowRectList,\n rowHeightList,\n topBlank,\n bottomBlank,\n } = useRowVirtualize({\n getOffsetTop,\n dataSource: rawData,\n getScroller,\n estimateSize,\n overscan,\n })\n\n const rowHeights = useRef(new Map<number, Map<Key, number>>())\n const updateRowHeight = useCallback((index: number, key: Key, height: number) => {\n const target = rowHeights.current.get(index) ?? new Map<Key, number>()\n target.set(key, height)\n rowHeights.current.set(index, target)\n }, [])\n\n const rowManageState = useMemo<TableRowManagerContextType>(() => {\n return { updateRowHeight, getRowHeightList: () => rowHeightList.current }\n }, [rowHeightList, updateRowHeight])\n\n const { columns, descriptor } = columnDescriptor\n const tbodyRef = useMergedRef(bodyRef, (elm) => {\n if (elm == null) return\n\n const bodyHeight = elm.offsetHeight\n if (bodyHeight === 0) return\n\n const heights = rowHeights.current\n heights.forEach((row, rowIndex) => {\n const height = Array.from(row.values()).reduce((res, x) => res + x, 0)\n setRowHeight(rowIndex, height)\n })\n updateRowRectList()\n rowHeights.current.clear()\n })\n\n const bodyNode = pipelineRender(\n <tbody ref={tbodyRef}>\n {dataSource.map((e, rowIndex) => {\n const _rowKey = (e as AnyObject)[rowKey as string]\n return (\n <Row\n key={_rowKey}\n className={clsx(rowClassName?.(e, rowIndex))}\n rowIndex={rowIndex + startIndex}\n rowData={e}\n columns={columnDescriptor}\n onRow={onRow}\n renderRow={renderRow}\n renderCell={renderCell}\n />\n )\n })}\n </tbody>,\n renderBody,\n { columns, columnDescriptor: descriptor },\n )\n\n const { setWidthList } = useColumnSizes()\n\n const tableNode = pipelineRender(\n <table\n className={clsx(className, 'virtual-table-body')}\n style={{ ...style, paddingBottom: bottomBlank, paddingTop: topBlank }}\n ref={bodyRootRef}\n >\n <Colgroup\n columns={descriptor}\n onColumnSizesMeasure={setWidthList}\n />\n {bodyNode}\n </table>,\n renderBodyRoot,\n { columns, columnDescriptor: descriptor },\n )\n\n const { listen, notify } = useHorizontalScrollContext()\n const wrapperRef = useRef<HTMLDivElement>(null)\n useEffect(() => {\n const node = wrapperRef.current\n if (node == null) return\n\n const key = 'virtual-table-body'\n const onScroll = () => {\n notify(key, { scrollLeft: () => node.scrollLeft, node })\n }\n const dispose = listen(key, (scrollLeft) => {\n node.scrollLeft = scrollLeft\n })\n node.addEventListener('scroll', onScroll)\n return () => {\n node.removeEventListener('scroll', onScroll)\n dispose()\n }\n }, [listen, notify])\n\n const mergedRef = useMergedRef(wrapperRef, bodyWrapperRef)\n\n return (\n <TableRowManager.Provider value={rowManageState}>\n {pipelineRender(\n <div\n ref={mergedRef}\n className=\"virtual-table-body-wrapper\"\n >\n {tableNode}\n </div>,\n renderBodyWrapper,\n { columns, columnDescriptor: descriptor },\n )}\n </TableRowManager.Provider>\n )\n}\n\nexport default TableBody\n","import type { CSSProperties, FC, RefObject } from 'react'\nimport type {\n MiddlewareRenderHeader,\n MiddlewareRenderHeaderCell,\n MiddlewareRenderHeaderRoot,\n MiddlewareRenderHeaderRow,\n MiddlewareRenderHeaderWrapper,\n} from './pipeline/types'\nimport type { InnerColumnDescriptor } from './types'\nimport clsx from 'clsx'\nimport { createElement, Fragment, useEffect, useRef } from 'react'\nimport { findLastIndex } from '../utils/find-last-index'\nimport { useMergedRef } from '../utils/ref'\nimport Colgroup from './colgroup'\nimport { useColumnSizes } from './context/column-sizes'\nimport { useHorizontalScrollContext } from './context/horizontal-scroll'\nimport { useTableSticky } from './context/sticky'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport { getKey } from './utils/get-key'\nimport { isValidFixed, isValidFixedLeft, isValidFixedRight } from './utils/verification'\n\nexport interface TableHeaderProps {\n className?: string\n style?: CSSProperties\n\n wrapperRef?: RefObject<HTMLDivElement>\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n columns: InnerColumnDescriptor<any>\n\n /** 开启表头 sticky,设置为 true 则默认 top 为 0,为 number 则是偏移量 */\n stickyHeader?: number | boolean\n\n renderHeaderWrapper?: MiddlewareRenderHeaderWrapper\n renderHeaderRoot?: MiddlewareRenderHeaderRoot\n renderHeader?: MiddlewareRenderHeader\n renderHeaderRow?: MiddlewareRenderHeaderRow\n renderHeaderCell?: MiddlewareRenderHeaderCell\n}\n\nconst TableHeader: FC<TableHeaderProps> = (props) => {\n const {\n className,\n style,\n wrapperRef,\n columns: columnDescriptor,\n stickyHeader,\n renderHeaderWrapper,\n renderHeaderRoot,\n renderHeader,\n renderHeaderRow,\n renderHeaderCell,\n } = props\n\n const { columns, descriptor } = columnDescriptor\n const lastColumn = columns[columns.length - 1]\n\n const { widthList } = useColumnSizes()\n const { size: stickySizes } = useTableSticky()\n\n const lastFixedLeftColumnIndex = findLastIndex(descriptor, (x) => {\n if (x.type === 'blank') {\n return false\n }\n return isValidFixedLeft(x.column.fixed)\n })\n const firstFixedRightColumnIndex = descriptor.findIndex((x) => {\n if (x.type === 'blank') {\n return false\n }\n return isValidFixedRight(x.column.fixed)\n })\n const { listen, notify } = useHorizontalScrollContext()\n\n const headerWrapperRef = useRef<HTMLDivElement>(null)\n useEffect(() => {\n const node = headerWrapperRef.current\n if (node == null) return\n const key = 'virtual-table-header'\n const onScroll = () => {\n notify(key, { scrollLeft: () => node.scrollLeft, node })\n }\n const dispose = listen(key, (scrollLeft) => {\n node.scrollLeft = scrollLeft\n })\n node.addEventListener('scroll', onScroll)\n return () => {\n node.removeEventListener('scroll', onScroll)\n dispose()\n }\n }, [listen, notify])\n\n const row = pipelineRender(\n <tr>\n {descriptor.map((item, index) => {\n const { key } = item\n if (item.type === 'blank') {\n return <th key={key} data-blank />\n }\n\n const { column } = item\n\n if (column.colSpan === 0) {\n return null\n }\n\n const isLast = getKey(lastColumn) === key\n const {\n className: thClassName,\n style: thStyle,\n ...rest\n } = column.onHeaderCell?.(column, index) ?? {}\n\n return (\n <Fragment key={key}>\n {pipelineRender(\n createElement(\n 'th',\n {\n scope: 'col',\n ...rest,\n colSpan: column.colSpan,\n className: clsx(\n 'virtual-table-header-cell',\n isLast && 'no-split',\n column.align != null && `virtual-table-align-${column.align}`,\n isValidFixed(column.fixed) && 'virtual-table-sticky-cell',\n lastFixedLeftColumnIndex === index && 'virtual-table-cell-fix-left-last',\n firstFixedRightColumnIndex === index && 'virtual-table-cell-fix-right-first',\n column.className,\n thClassName,\n ),\n style: {\n ...thStyle,\n left: isValidFixedLeft(column.fixed) ? stickySizes.get(key) : undefined,\n right: isValidFixedRight(column.fixed)\n ? stickySizes.get(key)\n : undefined,\n },\n },\n column.title,\n ),\n renderHeaderCell,\n { column, columns, columnWidths: widthList, columnDescriptor: descriptor },\n )}\n </Fragment>\n )\n })}\n </tr>,\n renderHeaderRow,\n { columns, columnDescriptor: descriptor },\n )\n\n const theadNode = pipelineRender(\n <thead className=\"virtual-table-thead\">{row}</thead>,\n renderHeader,\n { columns, columnDescriptor: descriptor },\n )\n\n const tableNode = pipelineRender(\n <table\n style={style}\n >\n <Colgroup columns={descriptor} />\n {theadNode}\n </table>,\n renderHeaderRoot,\n { columns, columnDescriptor: descriptor },\n )\n\n const mergedRef = useMergedRef(wrapperRef, headerWrapperRef)\n\n return pipelineRender(\n <div\n ref={mergedRef}\n className={clsx('virtual-table-header', className, {\n 'virtual-table-header-sticky': stickyHeader,\n })}\n style={{\n top: Number.isFinite(stickyHeader) ? (stickyHeader as number) : undefined,\n }}\n >\n {tableNode}\n </div>,\n renderHeaderWrapper,\n { columns, columnDescriptor: descriptor },\n )\n}\n\nexport default TableHeader\n","import type { Key, RefObject } from 'react'\nimport type { ColumnDescriptor, ColumnType } from '../types'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport { findLastIndex } from '../../utils/find-last-index'\nimport { getKey } from '../utils/get-key'\nimport { onResize } from '../utils/on-resize'\nimport { isValidFixedLeft, isValidFixedRight } from '../utils/verification'\nimport { useStableFn } from './useStableFn'\n\ninterface UseColumnVirtualizeOptions<T> {\n estimateSize: number\n 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, OnRowType } from './types'\nimport clsx from 'clsx'\nimport {\n forwardRef,\n memo,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { getScrollParent, isRoot, isWindow } from '../utils/dom'\nimport { useMergedRef } from '../utils/ref'\nimport TableBody from './body'\nimport { ColumnSizes } from './context/column-sizes'\nimport { ContainerSizeContext } from './context/container-size'\nimport { HorizontalScrollContext } from './context/horizontal-scroll'\nimport { StickyContext } from './context/sticky'\nimport TableHeader from './header'\nimport { useColumnVirtualize } from './hooks/useColumnVirtualize'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport { TablePipeline } from './pipeline/useTablePipeline'\nimport TableRoot from './root'\nimport { getKey } from './utils/get-key'\nimport { isValidFixedLeft, isValidFixedRight } from './utils/verification'\n\nexport interface VirtualTableCoreProps<T>\n extends NecessaryProps<T>,\n Pick<TableBodyProps<T>, 'rowClassName' | 'onRow'> {\n bodyRootRef?: Ref<HTMLTableElement>\n\n className?: string\n style?: CSSProperties\n\n tableBodyClassName?: string\n tableBodyStyle?: CSSProperties\n\n /** 开启表头 sticky,设置为 true 则默认 top 为 0,为 number 则是偏移量 */\n stickyHeader?: number | boolean\n\n /** 预计每列宽度,需要横向虚拟化时,设置它 */\n estimatedColumnWidth?: number\n /** 预计每行高度 @default 46 */\n estimatedRowHeight?: number\n /** 在头和尾额外渲染多少行 @default 5 */\n overscanRows?: number\n /** 横向虚拟化时,在头和尾额外渲染多少列 @default 3 */\n overscanColumns?: number\n\n /** 开启表头虚拟滚动 @default true */\n virtualHeader?: boolean\n\n /**\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 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 rootNode = useRef<HTMLDivElement>(null)\n\n const headerWrapperRef = useRef<HTMLDivElement>(null)\n const bodyWrapperRef = useRef<HTMLDivElement>(null)\n const bodyRoot = useRef<HTMLTableElement>(null)\n const mergedBodyRootRef = useMergedRef(bodyRoot, bodyRootRef)\n const bodyRef = useRef<HTMLTableSectionElement>(null)\n\n const getScroller = useCallback(() => {\n const root = rootNode.current\n if (root == null) return\n return getScrollParent(root)\n }, [])\n\n const getOffsetTop = useCallback(() => {\n if (typeof getOffsetTopImpl === 'function') {\n return getOffsetTopImpl()\n }\n const scrollContainer = getScroller()\n if (scrollContainer === rootNode.current) {\n return 0\n }\n if (isWindow(scrollContainer) || isRoot(scrollContainer)) {\n const top = rootNode.current?.getBoundingClientRect().top ?? 0\n return window.scrollY + top\n }\n return rootNode.current?.offsetTop ?? 0\n }, [getOffsetTopImpl, getScroller])\n\n const {\n dataSource,\n columns: pipelineColumns,\n rowKey,\n rowClassName,\n\n render,\n renderRoot,\n renderContent,\n renderHeaderWrapper,\n renderHeaderRoot,\n renderHeader,\n renderHeaderRow,\n renderHeaderCell,\n renderBodyWrapper,\n renderBodyRoot,\n renderBody,\n renderRow,\n renderCell,\n\n onRow: onPipelineRow,\n } = pipeline.use({\n dataSource: rawData,\n rowKey: rawRowKey,\n columns: rawColumns,\n estimatedRowHeight,\n headerWrapperRef,\n bodyWrapperRef,\n bodyRootRef: bodyRoot,\n bodyRef,\n rootRef: rootNode,\n getOffsetTop,\n getScroller,\n })\n\n const [columnWidths, setColumnWidths] = useState(() => new Map<Key, number>())\n const columnWidthsRef = useRef(columnWidths)\n const updateColumnWidths = useCallback((value: Map<Key, number>) => {\n columnWidthsRef.current = value\n setColumnWidths(value)\n }, [])\n\n const tableColumnsContext = useMemo<TableColumnsContextType>(() => {\n return {\n widthList: columnWidths,\n setWidthList: updateColumnWidths,\n }\n }, [columnWidths, updateColumnWidths])\n\n const { columns } = useColumnVirtualize<T>({\n estimateSize: estimatedColumnWidth ?? 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 const contentNode = pipelineRender(\n <>\n <TableHeader\n wrapperRef={headerWrapperRef}\n columns={headerColumns}\n stickyHeader={stickyHeader}\n renderHeaderWrapper={renderHeaderWrapper}\n renderHeaderRoot={renderHeaderRoot}\n renderHeader={renderHeader}\n renderHeaderRow={renderHeaderRow}\n renderHeaderCell={renderHeaderCell}\n />\n <TableBody\n bodyWrapperRef={bodyWrapperRef}\n bodyRootRef={mergedBodyRootRef}\n bodyRef={bodyRef}\n className={tableBodyClassName}\n style={tableBodyStyle}\n columns={columns}\n rowKey={rowKey}\n dataSource={dataSource}\n overscan={overscanRows}\n estimateSize={estimatedRowHeight}\n getScroller={getScroller}\n getOffsetTop={getOffsetTop}\n rowClassName={onRowClassName}\n onRow={onRowProps}\n renderBodyWrapper={renderBodyWrapper}\n renderBodyRoot={renderBodyRoot}\n renderBody={renderBody}\n renderRow={renderRow}\n renderCell={renderCell}\n />\n </>,\n renderContent,\n { columns: columns.columns, columnDescriptor: columns.descriptor },\n )\n\n const rootMergedRef = useMergedRef(rootNode, ref)\n const table = pipelineRender(\n <TableRoot\n ref={rootMergedRef}\n className={className}\n style={style}\n hasFixedLeftColumn={hasFixedLeftColumn}\n hasFixedRightColumn={hasFixedRightColumn}\n renderRoot={renderRoot}\n bodyScrollContainer={bodyWrapperRef}\n >\n {contentNode}\n </TableRoot>,\n render,\n { columns: columns.columns, columnDescriptor: columns.descriptor },\n )\n\n return (\n <ColumnSizes.Provider value={tableColumnsContext}>\n <StickyContext columns={pipelineColumns}>\n <ContainerSizeContext getScroller={getScroller} root={rootNode}>\n <HorizontalScrollContext>{table}</HorizontalScrollContext>\n </ContainerSizeContext>\n </StickyContext>\n </ColumnSizes.Provider>\n )\n}\n\nif (__DEV__) {\n VirtualTableCore.displayName = 'VirtualTable.Core'\n}\n\nexport default memo(forwardRef(VirtualTableCore)) as <T>(\n props: VirtualTableCoreProps<T> & RefAttributes<HTMLDivElement>,\n) => ReactElement\n"],"names":["shallowEqualObjects","objA","objB","aKeys","Object","keys","bKeys","len","length","i","key","prototype","hasOwnProperty","call","shallowEqualArrays","arrA","arrB","isShallowEqual","value","oldValue","is","Array","isArray","hasObject","findIndex","x","every","state","index","Map","from","oldKeys","values","oldValues","useShallowMemo","pickData","nextState","useRef","current","getKey","column","dataIndex","isValidFixedLeft","fixed","isValidFixedRight","isValidFixed","ColumnSizes","createContext","__DEV__","displayName","useColumnSizes","context","useContext","Error","Sticky","StickyContext","props","columns","children","_useColumnSizes","widthList","columnsFixedRecord","useMemo","map","stickySizes","left","leftOffset","reduce","res","item","_widthList$get","get","right","rightOffset","reduceRight","_widthList$get2","result","set","shallowMemoFixedRecord","shallowMemoStickySizes","stickyState","size","_jsx","Provider","useTableSticky","pipelineRender","node","render","options","getTableCellContent","data","_render","rowData","Cell","_onCell","className","style","rowIndex","renderCell","restProps","_objectWithoutPropertiesLoose","_excluded","align","onCell","_useTableSticky","_ref","extraClassName","extraStyle","colSpan","rowSpan","extraProps","_excluded2","_extends","clsx","undefined","memo","Colgroup","onColumnSizesMeasure","enableMeasure","columnSizes","prevColumnSizes","ref","type","width","offsetWidth","minWidth","overflowStylePatterns","isElement","Node","ELEMENT_NODE_TYPE","nodeType","getScrollParent","el","root","_el$ownerDocument$def","window","document","body","_window$getComputedSt","getComputedStyle","overflow","overflowY","overflowX","test","parentNode","ownerDocument","defaultView","isWindow","arg","toString","isDocument","isRoot","getScrollElement","scrollingElement","useCalcSize","getScroller","_useState","useState","scrollContainerWidth","setScrollContainerWidth","_useState2","scrollContainerHeight","setScrollContainerHeight","_useState3","tableWidth","setTableWidth","_useState4","tableHeight","setTableHeight","scrollerContainerRef","useLayoutEffect","scrollerContainer","scroller","observer","ResizeObserver","entries","_entries$0$contentRec","contentRect","height","observe","disconnect","_entries$0$contentRec2","ContainerSize","ContainerSizeContext","_useCalcSize","useContainerSize","HorizontalScroll","HorizontalScrollContext","listenerMap","skipEvent","Set","listen","listener","scrollLeft","notify","has","rAF","requestAnimationFrame","fn","forEach","itemKey","add","useHorizontalScrollContext","TableRowManager","useTableRowManager","useStableFn","callback","stableFn","useCallback","_len","arguments","args","_key","apply","createMiddleware","hook","cache","useMiddleware","ctx","concat","_cache$current","shakeUnsafeHooks","hooks","filter","priority","TablePipeline","defineProperty","use","bind","_proto","setHooks","renderFunctionMap","renderRoot","renderContent","renderHeaderWrapper","renderHeaderRoot","renderHeader","renderHeaderRow","renderHeaderCell","renderBodyWrapper","renderBodyRoot","renderBody","renderRow","rowClassNameFunctions","onRowFunctions","slice","sort","a","b","nextCtx","rowClassName","onRow","rest","target","push","_ref2","renders","record","useTablePipeline","extraPipeline","pipeline","cached","_extraPipeline$hooks","nextHooks","findLastIndex","arr","predicate","Row","_onRow","columnDescriptor","_useTableRowManager","updateRowHeight","descriptor","lastFixedLeftColumnIndex","firstFixedRightColumnIndex","offsetHeight","assignRef","mergeRefs","refs","useMergedRef","_len2","_key2","onResize","innerWidth","innerHeight","addEventListener","removeEventListener","rect","anchorQuery","rects","scrollTop","mid","Math","floor","bottom","useRowVirtualize","getOffsetTop","rawData","dataSource","estimateSize","overscan","startIndex","setStartIndex","endIndex","setEndIndex","dataSlice","rowHeights","fillRowHeights","rowRects","updateRowRectList","shouldSkip","_rowHeights$current$r","nextTop","top","setRowHeight","anchorRef","scrollTopRef","initial","useEffect","container","count","getScrollTop","offsetTop","scrollY","element","max","calcCount","scrollerContainerHeight","prevCount","ceil","updateBoundary","anchor","onScroll","e","scrollElement","isScrollDown","prevHeight","stopListen","nextStartIndex","nextEndIndex","sum","topBlank","bottomBlank","rowHeightList","TableBody","bodyWrapperRef","bodyRootRef","bodyRef","rowKey","_useRowVirtualize","_rowHeights$current$g","rowManageState","getRowHeightList","tbodyRef","elm","bodyHeight","heights","row","clear","bodyNode","_rowKey","setWidthList","tableNode","_jsxs","paddingBottom","paddingTop","_useHorizontalScrollC","wrapperRef","dispose","mergedRef","TableHeader","stickyHeader","lastColumn","headerWrapperRef","_column$onHeaderCell","isLast","onHeaderCell","thClassName","thStyle","Fragment","createElement","scope","title","columnWidths","theadNode","Number","isFinite","findFirstFixedRightIndex","findLastFixedLeftIndex","useColumnVirtualize","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","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","_rootNode$current$off","_rootNode$current2","_rootNode$current$get","_rootNode$current","getBoundingClientRect","_pipeline$use","rootRef","pipelineColumns","onPipelineRow","setColumnWidths","columnWidthsRef","updateColumnWidths","tableColumnsContext","_useColumnVirtualize","onRowClassName","onRowProps","some","fullHeaderColumns","headerColumns","contentNode","_Fragment","rootMergedRef","table"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../../packages/virtual-table/src/utils/equal.ts","../../packages/virtual-table/src/core/hooks/useShallowMemo.ts","../../packages/virtual-table/src/core/utils/get-key.ts","../../packages/virtual-table/src/core/utils/verification.ts","../../packages/virtual-table/src/core/context/column-sizes.tsx","../../packages/virtual-table/src/core/context/sticky.tsx","../../packages/virtual-table/src/core/pipeline/render-pipeline.ts","../../packages/virtual-table/src/core/cell.tsx","../../packages/virtual-table/src/core/colgroup.tsx","../../packages/virtual-table/src/utils/dom.ts","../../packages/virtual-table/src/core/hooks/useCalcSize.ts","../../packages/virtual-table/src/core/context/container-size.tsx","../../packages/virtual-table/src/core/context/horizontal-scroll.tsx","../../packages/virtual-table/src/core/context/row-manager.tsx","../../packages/virtual-table/src/core/hooks/useStableFn.ts","../../packages/virtual-table/src/core/pipeline/create-middleware.ts","../../packages/virtual-table/src/core/pipeline/table-pipeline.ts","../../packages/virtual-table/src/core/pipeline/useTablePipeline.ts","../../packages/virtual-table/src/utils/find-last-index.ts","../../packages/virtual-table/src/core/row.tsx","../../packages/virtual-table/src/utils/ref.ts","../../packages/virtual-table/src/core/utils/on-resize.ts","../../packages/virtual-table/src/core/hooks/useRowVirtualize.ts","../../packages/virtual-table/src/core/body.tsx","../../packages/virtual-table/src/core/header.tsx","../../packages/virtual-table/src/core/hooks/useColumnVirtualize.ts","../../packages/virtual-table/src/core/root.tsx","../../packages/virtual-table/src/core/table.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nexport type validObjectValue = Record<string, any> | null | undefined\nexport type validArrayValue = any[] | null | undefined\n\nexport function shallowEqualObjects(\n objA: validObjectValue,\n objB: validObjectValue,\n): boolean {\n if (objA === objB) {\n return true\n }\n\n if (!objA || !objB) {\n return false\n }\n\n const aKeys = Object.keys(objA)\n const bKeys = Object.keys(objB)\n const len = aKeys.length\n\n if (bKeys.length !== len) {\n return false\n }\n\n for (let i = 0; i < len; i += 1) {\n const key = aKeys[i]\n\n if (objA[key] !== objB[key] || !Object.prototype.hasOwnProperty.call(objB, key)) {\n return false\n }\n }\n\n return true\n}\n\nexport function shallowEqualArrays(\n arrA: validArrayValue,\n arrB: validArrayValue,\n): boolean {\n if (arrA === arrB) {\n return true\n }\n\n if (!arrA || !arrB) {\n return false\n }\n\n const len = arrA.length\n\n if (arrB.length !== len) {\n return false\n }\n\n for (let i = 0; i < len; i += 1) {\n if (arrA[i] !== arrB[i]) {\n return false\n }\n }\n\n return true\n}\n\nexport function isShallowEqual(value: unknown, oldValue: unknown) {\n if (Object.is(value, oldValue)) {\n return true\n }\n if (Array.isArray(value) && Array.isArray(oldValue)) {\n if (shallowEqualArrays(value, oldValue)) {\n return true\n }\n if (value.length === oldValue.length) {\n const hasObject = value.findIndex((x) => typeof x === 'object' && x != null) > -1\n if (hasObject) {\n return value.every((state, index) => {\n if (Array.isArray(state)) {\n return shallowEqualArrays(state, oldValue[index] as unknown[])\n }\n if (typeof state === 'object' && state != null) {\n return shallowEqualObjects(\n state as Record<string, unknown>,\n oldValue[index] as Record<string, unknown>,\n )\n }\n return Object.is(state, oldValue[index])\n })\n }\n }\n return false\n }\n if (value instanceof Map && oldValue instanceof Map) {\n const keys = Array.from(value.keys())\n const oldKeys = Array.from(oldValue.keys())\n if (isShallowEqual(keys, oldKeys)) {\n const values = Array.from(value.values())\n const oldValues = Array.from(oldValue.values())\n if (isShallowEqual(values, oldValues)) {\n return true\n }\n }\n return false\n }\n if (typeof value === 'object' && value != null) {\n return shallowEqualObjects(value, oldValue as Record<string, unknown>)\n }\n return false\n}\n","/* eslint-disable react-compiler/react-compiler */\nimport { useRef } from 'react'\n\nimport { isShallowEqual } from '../../utils/equal'\n\n/**\n * 缓存数据(浅比较,如果是数组则对第一层进行浅比较)\n */\nexport function useShallowMemo<T>(pickData: () => T) {\n const nextState = pickData()\n const value = useRef<T>(nextState)\n\n if (!isShallowEqual(nextState, value.current)) {\n value.current = nextState\n }\n\n return value.current\n}\n","import type { Key } from 'react'\nimport type { ColumnType } from '../types'\n\nexport function getKey<T>(column: ColumnType<T>) {\n return 'key' in column ? (column.key as Key) : column.dataIndex as string\n}\n","export type FixedType = 'left' | 'right'\n\nexport function isValidFixedLeft(fixed: unknown) {\n return fixed === 'left'\n}\n\nexport function isValidFixedRight(fixed: unknown) {\n return fixed === 'right'\n}\n\nexport function isValidFixed(fixed: unknown) {\n return isValidFixedLeft(fixed) || isValidFixedRight(fixed)\n}\n","import type { Key } from 'react'\nimport { createContext, useContext } from 'react'\n\nexport interface TableColumnsContextType {\n widthList: Map<Key, number>\n setWidthList: (value: Map<Key, number>) => void\n}\n\nexport const ColumnSizes = createContext<TableColumnsContextType | null>(null)\n\nif (__DEV__) {\n ColumnSizes.displayName = 'VirtualTable.ColumnSizes'\n}\n\nexport function useColumnSizes() {\n const context = useContext(ColumnSizes)\n if (context == null) {\n throw new Error('useColumnSizes provider not found')\n }\n return context\n}\n","import type { Key, PropsWithChildren } from 'react'\nimport type { ColumnType, FixedType } from '../types'\nimport { createContext, useContext, useMemo } from 'react'\nimport { useShallowMemo } from '../hooks/useShallowMemo'\nimport { getKey } from '../utils/get-key'\nimport { isValidFixedLeft, isValidFixedRight } from '../utils/verification'\nimport { useColumnSizes } from './column-sizes'\n\nexport interface StickyContextState {\n size: Map<Key, number>\n /** 每一列设置的 fixed 值 */\n fixed: { key: Key, fixed: FixedType | undefined }[]\n}\n\nexport const Sticky = createContext<StickyContextState | null>(null)\n\nif (__DEV__) {\n Sticky.displayName = 'VirtualTable.Sticky'\n}\n\nexport function StickyContext(\n props: PropsWithChildren<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n columns: ColumnType<any>[]\n }>,\n) {\n const { columns, children } = props\n const { widthList } = useColumnSizes()\n\n const columnsFixedRecord = useMemo(() => {\n return columns.map((column) => {\n const key = getKey(column)\n return { key, fixed: column.fixed }\n })\n }, [columns])\n\n const stickySizes = useMemo(() => {\n let left = 0\n const leftOffset = columnsFixedRecord.reduce<number[]>((res, item, index) => {\n const { fixed, key } = item\n if (isValidFixedLeft(fixed)) {\n res[index] = left\n // eslint-disable-next-line react-compiler/react-compiler\n left += widthList.get(key) ?? 0\n }\n return res\n }, [])\n\n let right = 0\n const rightOffset = columnsFixedRecord.reduceRight((res, item, index) => {\n const { fixed, key } = item\n if (isValidFixedRight(fixed)) {\n res[index] = right\n right += widthList.get(key) ?? 0\n }\n return res\n }, [] as number[])\n\n return columnsFixedRecord.reduce((result, item, index) => {\n const { key, fixed } = item\n if (isValidFixedLeft(fixed)) {\n result.set(key, leftOffset[index])\n return result\n }\n if (isValidFixedRight(fixed)) {\n result.set(key, rightOffset[index])\n return result\n }\n return result\n }, new Map<Key, number>())\n }, [columnsFixedRecord, widthList])\n\n const shallowMemoFixedRecord = useShallowMemo(() => columnsFixedRecord)\n const shallowMemoStickySizes = useShallowMemo(() => stickySizes)\n\n const stickyState = useMemo((): StickyContextState => {\n return { size: shallowMemoStickySizes, fixed: shallowMemoFixedRecord }\n }, [shallowMemoFixedRecord, shallowMemoStickySizes])\n\n return (\n <Sticky.Provider value={stickyState}>\n {children}\n </Sticky.Provider>\n )\n}\n\nexport function useTableSticky() {\n const context = useContext(Sticky)\n if (context == null) {\n throw new Error('useTableSticky provider not found')\n }\n return context\n}\n","import type { ReactNode } from 'react'\nimport type { MergedMiddlewareRender } from './types'\n\ntype RenderOptions<T> = T extends ((children: ReactNode, options: infer Opt) => ReactNode) ? Opt : object\n\nexport function pipelineRender<T extends MergedMiddlewareRender>(\n node: ReactNode,\n render: T | undefined,\n options: RenderOptions<T>,\n): ReactNode {\n if (typeof render === 'function') {\n // @ts-expect-error: There is no way to declare the type correctly, but it works at runtime.\n return render(node, options)\n }\n return node\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { DetailedHTMLProps, HTMLAttributes, ReactElement } from 'react'\nimport type { MiddlewareRenderCell } from './pipeline/types'\nimport type { AnyObject, ColumnType } from './types'\nimport clsx from 'clsx'\nimport { memo } from 'react'\nimport { useTableSticky } from './context/sticky'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport { getKey } from './utils/get-key'\nimport { isValidFixed, isValidFixedLeft, isValidFixedRight } from './utils/verification'\n\ntype NativeProps = DetailedHTMLProps<\n HTMLAttributes<HTMLTableCellElement>,\n HTMLTableCellElement\n>\n\nexport interface CellProps<T> extends Omit<NativeProps, 'children'> {\n column: ColumnType<T>\n rowIndex: number\n rowData: T\n renderCell?: MiddlewareRenderCell\n}\n\nfunction getTableCellContent<T extends AnyObject>(\n index: number,\n data: T,\n column: ColumnType<any>,\n): any {\n const { render } = column\n const rowData = data as AnyObject\n if ('dataIndex' in column) {\n const dataIndex = column.dataIndex as string\n if (typeof render !== 'function') {\n return rowData[dataIndex]\n }\n return render(rowData[dataIndex], data, index)\n }\n return render?.(data, data, index) ?? null\n}\n\nfunction Cell<T>(props: CellProps<T>) {\n const {\n className,\n style,\n column,\n rowData,\n rowIndex,\n renderCell,\n ...restProps\n } = props\n\n const { align, fixed, onCell } = column\n const key = getKey(column)\n const { size: stickySizes } = useTableSticky()\n\n const {\n className: extraClassName,\n style: extraStyle,\n colSpan,\n rowSpan,\n ...extraProps\n } = onCell?.(rowData, rowIndex) ?? {}\n\n if (colSpan === 0 || rowSpan === 0) {\n return null\n }\n\n return pipelineRender(\n <td\n {...restProps}\n {...extraProps}\n colSpan={colSpan}\n rowSpan={rowSpan}\n className={clsx(\n 'virtual-table-cell',\n align != null && `virtual-table-align-${align}`,\n isValidFixed(fixed) && 'virtual-table-sticky-cell',\n className,\n column.className,\n extraClassName,\n )}\n style={{\n ...style,\n ...extraStyle,\n left: isValidFixedLeft(fixed) ? stickySizes.get(key) : undefined,\n right: isValidFixedRight(fixed) ? stickySizes.get(key) : undefined,\n }}\n >\n {getTableCellContent(rowIndex, rowData as AnyObject, column)}\n </td>,\n renderCell,\n { column },\n )\n}\n\nexport default memo(Cell) as <T>(props: CellProps<T>) => ReactElement\n","import type { FC, Key } from 'react'\nimport type { ColumnDescriptor } from './types'\nimport { memo, useRef } from 'react'\nimport { isShallowEqual } from '../utils/equal'\n\nexport interface ColgroupProps {\n columns: ColumnDescriptor[]\n onColumnSizesMeasure?: (columnSizes: Map<Key, number>) => void\n}\n\nconst Colgroup: FC<ColgroupProps> = (props) => {\n const { columns, onColumnSizesMeasure } = props\n\n const enableMeasure = onColumnSizesMeasure != null\n const columnSizes = new Map<Key, number>()\n const prevColumnSizes = useRef(new Map<Key, number>())\n\n return (\n <colgroup\n ref={() => {\n if (!enableMeasure) return\n if (!isShallowEqual(columnSizes, prevColumnSizes.current)) {\n onColumnSizesMeasure(columnSizes)\n prevColumnSizes.current = columnSizes\n }\n }}\n >\n {columns.map((item) => {\n const { key } = item\n if (item.type === 'blank') {\n return <col key={key} className=\"blank\" style={{ width: item.width }} />\n }\n\n const { column } = item\n\n return (\n <col\n key={key}\n ref={(node) => {\n if (node == null || !enableMeasure) return\n columnSizes.set(key, node.offsetWidth)\n }}\n style={{\n width: column.width,\n minWidth: column.minWidth,\n }}\n />\n )\n })}\n </colgroup>\n )\n}\n\nexport default memo(Colgroup)\n","export type ScrollElement = HTMLElement | Window\n\nconst overflowStylePatterns = /auto|scroll|overlay|hidden/\n\nfunction isElement(node: unknown): node is Node {\n if (!(node instanceof Node)) {\n return false\n }\n const ELEMENT_NODE_TYPE = 1\n return node.nodeType === ELEMENT_NODE_TYPE\n}\n\nexport function getScrollParent(\n el: Element,\n root: ScrollElement | null | undefined = window,\n): ScrollElement {\n let node = el\n\n while (node !== root && isElement(node)) {\n if (node === document.body) {\n return root as HTMLElement\n }\n const { overflow, overflowY, overflowX } = window.getComputedStyle(node)\n if (overflowStylePatterns.test(overflow + overflowY + overflowX)) {\n return node as HTMLElement\n }\n node = node.parentNode as Element\n }\n return el.ownerDocument.defaultView ?? window\n}\n\nexport function isWindow(arg: unknown): arg is Window {\n return Object.prototype.toString.call(arg) === '[object Window]'\n}\n\nexport function isDocument(arg: unknown): arg is Document {\n return Object.prototype.toString.call(arg) === '[object HTMLDocument]'\n}\n\nexport function isRoot(arg: unknown): arg is HTMLElement {\n return Object.prototype.toString.call(arg) === '[object HTMLHtmlElement]'\n}\n\nexport function getScrollElement(el: unknown): Element {\n if (isDocument(el)) {\n return el.scrollingElement!\n }\n if (isElement(el)) {\n return el as Element\n }\n return document.scrollingElement!\n}\n\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","import type { RefObject } from 'react'\nimport type { ScrollElement } from '../../utils/dom'\nimport { useLayoutEffect, useRef, useState } from 'react'\nimport { isWindow } from '../../utils/dom'\n\nexport interface CalcSizeOptions {\n getScroller: () => ScrollElement | undefined\n root: RefObject<HTMLDivElement>\n}\n\nexport function useCalcSize(options: CalcSizeOptions) {\n const { getScroller, root } = options\n\n const [scrollContainerWidth, setScrollContainerWidth] = useState(0)\n const [scrollContainerHeight, setScrollContainerHeight] = useState(0)\n\n const [tableWidth, setTableWidth] = useState(0)\n const [tableHeight, setTableHeight] = useState(0)\n\n const scrollerContainerRef = useRef<HTMLElement | null>(null)\n\n useLayoutEffect(() => {\n const scrollerContainer = getScroller()\n if (scrollerContainer == null) return\n let scroller: HTMLElement\n if (isWindow(scrollerContainer)) {\n scroller = document.scrollingElement as HTMLElement\n } else {\n scroller = scrollerContainer\n }\n scrollerContainerRef.current = scroller\n const observer = new ResizeObserver((entries) => {\n const { width, height } = entries[0].contentRect\n setScrollContainerWidth(width)\n setScrollContainerHeight(height)\n })\n observer.observe(scroller)\n return () => {\n observer.disconnect()\n }\n }, [getScroller])\n\n useLayoutEffect(() => {\n const node = root.current\n if (node == null) return\n const observer = new ResizeObserver((entries) => {\n const { width, height } = entries[0].contentRect\n setTableWidth(width)\n setTableHeight(height)\n })\n observer.observe(node)\n return () => {\n observer.disconnect()\n }\n }, [root])\n\n return {\n scrollContainerWidth,\n scrollContainerHeight,\n tableWidth,\n tableHeight,\n }\n}\n","import type { PropsWithChildren } from 'react'\nimport type { CalcSizeOptions } from '../hooks/useCalcSize'\nimport { createContext, useContext, useMemo } from 'react'\nimport { useCalcSize } from '../hooks/useCalcSize'\n\nexport interface ContainerSizeState {\n scrollContainerWidth: number\n scrollContainerHeight: number\n tableWidth: number\n tableHeight: number\n}\n\nconst ContainerSize = createContext<ContainerSizeState | null>(null)\n\nexport function ContainerSizeContext(props: PropsWithChildren<CalcSizeOptions>) {\n const { getScroller, root, children } = props\n\n const {\n scrollContainerHeight,\n scrollContainerWidth,\n tableHeight,\n tableWidth,\n } = useCalcSize({ getScroller, root })\n\n const state = useMemo((): ContainerSizeState => {\n return {\n scrollContainerWidth,\n scrollContainerHeight,\n tableWidth,\n tableHeight,\n }\n }, [scrollContainerWidth, scrollContainerHeight, tableWidth, tableHeight])\n\n return (\n <ContainerSize.Provider value={state}>\n {children}\n </ContainerSize.Provider>\n )\n}\n\nexport function useContainerSize() {\n const context = useContext(ContainerSize)\n if (context == null) {\n throw new Error('useContainerSize provider not found')\n }\n return context\n}\n","import type { PropsWithChildren } from 'react'\nimport { createContext, useContext, useMemo, useRef } from 'react'\n\ntype Listener = (scrollLeft: number, node: HTMLElement) => void\n\nexport interface HorizontalScrollContextState {\n listen: (key: string, listener: Listener) => () => void\n notify: (key: string, options: { scrollLeft: () => number, node: HTMLElement }) => void\n}\n\nconst HorizontalScroll = createContext<HorizontalScrollContextState | null>(null)\n\nif (__DEV__) {\n HorizontalScroll.displayName = 'VirtualTable.HorizontalScroll'\n}\n\nexport function HorizontalScrollContext(props: PropsWithChildren) {\n const { children } = props\n\n const listenerMap = useRef(new Map<string, Listener>())\n const context = useMemo((): HorizontalScrollContextState => {\n const skipEvent = new Set<string>()\n return {\n listen(key, listener) {\n listenerMap.current.set(key, (scrollLeft, node) => {\n listener(scrollLeft, node)\n })\n return () => {\n listenerMap.current.delete(key)\n }\n },\n notify(key, options) {\n if (skipEvent.has(key)) {\n skipEvent.delete(key)\n return\n }\n const { scrollLeft, node } = options\n let rAF = window.requestAnimationFrame as ((fn: () => void) => void) | undefined\n if (rAF == null) {\n rAF = (fn: () => void) => {\n fn()\n }\n }\n listenerMap.current.forEach((listener, itemKey) => {\n if (key === itemKey) return\n skipEvent.add(itemKey)\n rAF(() => {\n listener(scrollLeft(), node)\n })\n })\n },\n }\n }, [])\n\n return <HorizontalScroll.Provider value={context}>{children}</HorizontalScroll.Provider>\n}\n\nexport function useHorizontalScrollContext() {\n const context = useContext(HorizontalScroll)\n\n if (context == null) {\n throw new Error('useHorizontalScrollContext provider not found')\n }\n\n return context\n}\n","import type { Key } from 'react'\nimport { createContext, useContext } from 'react'\n\nexport interface TableRowManagerContextType {\n getRowHeightList: () => number[]\n /**\n * @param index rowIndex\n * @param key 唯一的 key,用于去重\n * @param height 行高\n */\n updateRowHeight: (index: number, key: Key, height: number) => void\n}\n\nexport const TableRowManager = createContext<TableRowManagerContextType | null>(null)\n\nif (__DEV__) {\n TableRowManager.displayName = 'VirtualTable.RowManager'\n}\n\nexport function useTableRowManager() {\n const context = useContext(TableRowManager)\n if (context == null) {\n throw new Error('useTableRowManager provider not found')\n }\n return context\n}\n","import { useCallback, useLayoutEffect, useRef } from 'react'\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport function useStableFn<T extends Function>(callback: T): T {\n const fn = useRef<T | null>(null)\n useLayoutEffect(() => {\n fn.current = callback\n })\n\n const stableFn = useCallback((...args: unknown[]) => {\n return fn.current?.(...args) as unknown\n }, []) as unknown as T\n\n return stableFn\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Middleware, MiddlewareContext, MiddlewareResult } from './types'\nimport { isShallowEqual } from '../../utils/equal'\n\n/**\n * 创建中间件,内部会浅比较 options,只有 options 改变才会返回新的函数。\n */\nfunction createMiddleware<T, Args extends any[]>(\n hook: (ctx: MiddlewareContext<T>, ...args: Args) => MiddlewareResult<T>,\n): (...args: Args) => Middleware<T> {\n const cache = {\n current: null as Middleware<T> | null,\n options: null as Args | null | undefined,\n }\n\n return (...options: Args): Middleware<T> => {\n const useMiddleware: Middleware<T> = (ctx) => hook(ctx, ...options)\n\n if (isShallowEqual(options, cache.options)) {\n return cache.current ?? useMiddleware\n }\n\n cache.options = options\n cache.current = useMiddleware\n\n return useMiddleware\n }\n}\n\nexport type { MiddlewareResult }\nexport { createMiddleware }\n","import type { ReactNode } from 'react'\nimport type { OnRowType } from '../types'\nimport type { Middleware, MiddlewareContext, MiddlewareRenders, MiddlewareResult } from './types'\nimport clsx from 'clsx'\n\nexport interface Hook<T> { priority: number, hook: Middleware<T> }\nexport type UnsafeHook<T> = Middleware<T> | undefined | null | Hook<T>\n\ntype RenderFunctions<T> = {\n [K in keyof T]: (T[K])[]\n}\n\nexport function shakeUnsafeHooks<T>(hooks: UnsafeHook<T>[]): Hook<T>[] {\n if (Array.isArray(hooks)) {\n return hooks.filter((x) => {\n return x != null && (typeof x === 'function' || typeof x.hook === 'function')\n }).map((hook): Hook<T> => {\n if (typeof hook === 'function') {\n return { priority: 100, hook }\n }\n return hook!\n })\n }\n return []\n}\n\nexport class TablePipeline<T> {\n constructor() {\n this.use = this.use.bind(this)\n }\n\n hooks: Hook<T>[] = []\n\n setHooks(value: Hook<T>[]) {\n this.hooks = value\n }\n\n use(options: MiddlewareContext<T>): MiddlewareResult<T> {\n if (this.hooks.length === 0) {\n return options\n }\n\n const context: { current: MiddlewareResult<T> } = { current: options }\n\n const renderFunctionMap: RenderFunctions<Required<MiddlewareRenders>> = {\n render: [],\n renderRoot: [],\n renderContent: [],\n renderHeaderWrapper: [],\n renderHeaderRoot: [],\n renderHeader: [],\n renderHeaderRow: [],\n renderHeaderCell: [],\n renderBodyWrapper: [],\n renderBodyRoot: [],\n renderBody: [],\n 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, ReactElement } from 'react'\nimport type { MiddlewareRenderCell, MiddlewareRenderRow } from './pipeline/types'\nimport type { InnerColumnDescriptor, OnRowType } from './types'\nimport clsx from 'clsx'\nimport { memo } from 'react'\nimport { findLastIndex } from '../utils/find-last-index'\nimport Cell from './cell'\nimport { useTableRowManager } from './context/row-manager'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport { isValidFixedLeft, isValidFixedRight } from './utils/verification'\n\ntype NativeProps = DetailedHTMLProps<\n HTMLAttributes<HTMLTableRowElement>,\n HTMLTableRowElement\n>\n\nexport interface RowProps<T> extends Omit<NativeProps, 'children'> {\n rowIndex: number\n rowData: T\n columns: InnerColumnDescriptor<T>\n onRow?: OnRowType<T>\n renderRow?: MiddlewareRenderRow\n renderCell?: MiddlewareRenderCell\n}\n\nfunction Row<T>(props: RowProps<T>) {\n const {\n className,\n rowIndex,\n rowData,\n columns: columnDescriptor,\n onRow,\n renderRow,\n renderCell,\n ...rest\n } = props\n\n const { updateRowHeight } = useTableRowManager()\n\n const { columns, descriptor } = columnDescriptor\n\n const lastFixedLeftColumnIndex = findLastIndex(descriptor, (x) => {\n if (x.type === 'blank') {\n return false\n }\n return isValidFixedLeft(x.column.fixed)\n })\n const firstFixedRightColumnIndex = descriptor.findIndex((x) => {\n if (x.type === 'blank') {\n return false\n }\n return isValidFixedRight(x.column.fixed)\n })\n\n const { className: extraClassName, ...extraProps } = onRow?.(rowData, rowIndex) ?? {}\n\n return pipelineRender(\n <tr\n {...rest}\n {...extraProps}\n className={clsx('virtual-table-row', className, extraClassName)}\n ref={(node) => {\n if (node == null) return\n // 小心陷阱:当 table 父元素为 display: none 时,依然会触发 updateRowHeight 函数,并设置高度为 0\n updateRowHeight(rowIndex, rowIndex, node.offsetHeight)\n }}\n >\n {descriptor.map((item, index) => {\n const { key } = item\n if (item.type === 'blank') {\n return <td key={key} />\n }\n const { column } = item\n return (\n <Cell\n key={key}\n className={clsx(\n lastFixedLeftColumnIndex === index && 'virtual-table-cell-fix-left-last',\n firstFixedRightColumnIndex === index\n && 'virtual-table-cell-fix-right-first',\n )}\n column={column}\n rowIndex={rowIndex}\n rowData={rowData}\n renderCell={renderCell}\n />\n )\n })}\n </tr>,\n renderRow,\n { columns, rowIndex, rowData, columnDescriptor: descriptor },\n )\n}\n\nexport default memo(Row) as <T>(props: RowProps<T>) => ReactElement\n","import type { MutableRefObject, Ref } from 'react'\nimport { useCallback } from 'react'\n\ntype PossibleRef<T> = Ref<T> | undefined\n\nexport function assignRef<T>(ref: PossibleRef<T>, value: T) {\n if (typeof ref === 'function') {\n ref(value)\n } else if (typeof ref === 'object' && ref !== null && 'current' in ref) {\n (ref as MutableRefObject<T>).current = value\n }\n}\n\nexport function mergeRefs<T>(...refs: PossibleRef<T>[]) {\n return (node: T | null) => {\n refs.forEach((ref) => assignRef(ref, node))\n }\n}\n\nexport function useMergedRef<T>(...refs: PossibleRef<T>[]) {\n // eslint-disable-next-line react-compiler/react-compiler\n return useCallback(mergeRefs(...refs), refs)\n}\n","import { isWindow } from '../../utils/dom'\n\ninterface ResizeRect {\n width: number\n height: number\n}\n\nexport function onResize(target: Window | HTMLElement, callback: (rect: ResizeRect) => void) {\n if (isWindow(target)) {\n const listener = () => {\n callback({\n width: window.innerWidth,\n height: window.innerHeight,\n })\n }\n listener()\n window.addEventListener('resize', listener)\n return () => {\n window.removeEventListener('resize', listener)\n }\n } else {\n const observer = new ResizeObserver((entries) => {\n const rect = entries[0].contentRect\n callback({ width: rect.width, height: rect.height })\n })\n observer.observe(target)\n return () => {\n observer.disconnect()\n }\n }\n}\n","/* eslint-disable react-compiler/react-compiler */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { ScrollElement } from '../../utils/dom'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport { getScrollElement, isRoot, isWindow } from '../../utils/dom'\nimport { onResize } from '../utils/on-resize'\n\nexport interface RowRect {\n index: number\n height: number\n top: number\n bottom: number\n}\n\ninterface UseRowVirtualizeOptions<T = any> {\n getOffsetTop: () => number\n dataSource: T[]\n getScroller: () => ScrollElement | undefined\n estimateSize: number\n overscan: number\n}\n\nfunction anchorQuery(rects: RowRect[], scrollTop: number) {\n let left = 0\n let right = rects.length - 1\n let index = -1\n\n while (left <= right) {\n const mid = Math.floor((left + right) / 2)\n\n if (rects[mid].bottom > scrollTop) {\n index = mid\n right = mid - 1\n } else {\n left = mid + 1\n }\n }\n\n if (index === -1) {\n return undefined\n }\n\n return rects[index]\n}\n\nexport function useRowVirtualize<T = any>(options: UseRowVirtualizeOptions<T>) {\n const {\n getOffsetTop,\n dataSource: rawData,\n getScroller,\n estimateSize,\n overscan,\n } = options\n\n const [startIndex, setStartIndex] = useState(0)\n const [endIndex, setEndIndex] = useState(0)\n\n const dataSlice = useMemo(() => {\n return rawData.slice(startIndex, endIndex)\n }, [rawData, startIndex, endIndex])\n\n // 行高信息(先填充预估高度,DOM渲染后再更新成实际高度)\n const rowHeights = useRef<number[]>([])\n const fillRowHeights = () => {\n const len = rawData.length\n for (let i = 0; i < len; i++) {\n const target = rowHeights.current[i] as number | undefined\n // 由于 fillRowHeights 是在渲染阶段调用,防止重复渲染时 estimateSize 覆盖了真实 DOM 的高度\n if (target == null) {\n rowHeights.current[i] = estimateSize\n }\n }\n rowHeights.current = rowHeights.current.slice(0, len)\n }\n fillRowHeights()\n\n // 布局信息(也就是锚点元素需要的信息,top,bottom,height,index)\n const rowRects = useRef<RowRect[]>([])\n const updateRowRectList = (shouldSkip = false) => {\n if (shouldSkip && rowRects.current.length > 0) {\n return\n }\n const { rects } = rowHeights.current.reduce((result, height, index) => {\n const nextTop = result.top + height\n result.rects.push({\n index,\n top: result.top,\n height,\n bottom: nextTop,\n })\n result.top = nextTop\n return result\n }, { top: 0, rects: [] as RowRect[] })\n rowRects.current = rects\n }\n\n const setRowHeight = (index: number, height: number) => {\n rowHeights.current[index] = height\n }\n\n // 锚点元素,当前虚拟列表中,最接近滚动容器顶部的元素\n const anchorRef = useRef<RowRect>({\n index: 0,\n height: estimateSize,\n top: 0,\n bottom: estimateSize,\n })\n\n // 用来判断滚动方向\n const scrollTopRef = useRef(0)\n const initial = useRef(false)\n useEffect(() => {\n const container = getScroller()\n if (container == null) return\n\n let count = 0\n\n const getScrollTop = () => {\n const offsetTop = getOffsetTop()\n let result = 0\n if (isWindow(container) || isRoot(container)) {\n result = window.scrollY\n } else {\n const element = getScrollElement(container)\n result = element.scrollTop\n }\n return Math.max(result - offsetTop, 0)\n }\n\n const calcCount = (scrollerContainerHeight: number) => {\n const prevCount = count\n count = Math.ceil(scrollerContainerHeight / estimateSize)\n return { prevCount }\n }\n\n const updateBoundary = (scrollTop: number) => {\n const anchor = anchorQuery(rowRects.current, scrollTop)\n if (anchor != null) {\n anchorRef.current = anchor\n setStartIndex(Math.max(0, anchor.index - overscan))\n setEndIndex(anchor.index + count + overscan)\n }\n }\n\n const onScroll = (e: Event) => {\n const offsetTop = getOffsetTop()\n const scrollElement = getScrollElement(e.target)\n const scrollTop = Math.max(0, scrollElement.scrollTop - offsetTop)\n\n // 是否为向下滚动\n const isScrollDown = scrollTop > scrollTopRef.current\n\n if (isScrollDown) {\n // 如果滚动距离比较小,没有超出锚点元素的边界,就不需要计算 startIndex、endIndex 了\n if (scrollTop > anchorRef.current.bottom) {\n updateBoundary(scrollTop)\n }\n } else {\n if (scrollTop < anchorRef.current.top) {\n updateBoundary(scrollTop)\n }\n }\n\n scrollTopRef.current = scrollTop\n }\n\n let prevHeight = 0\n const stopListen = onResize(container, (rect) => {\n // 处理父元素 display:none 容器高度丢失,导致显示 row 不准确\n if (rect.height === prevHeight || rect.height === 0) {\n return\n }\n prevHeight = rect.height\n calcCount(rect.height)\n const scrollTop = getScrollTop()\n if (!initial.current) {\n initial.current = true\n let nextStartIndex = 0\n // 判断一下当前滚动位置,计算 startIndex(场景:SPA 页面切换且渲染非异步数据)\n if (scrollTop >= estimateSize) {\n nextStartIndex = Math.max(Math.floor(scrollTop / estimateSize) - 1 - overscan, 0)\n }\n const nextEndIndex = nextStartIndex + count + overscan\n setStartIndex(nextStartIndex)\n setEndIndex(nextEndIndex)\n } else {\n updateBoundary(scrollTop)\n }\n })\n\n container.addEventListener('scroll', onScroll)\n return () => {\n stopListen()\n container.removeEventListener('scroll', onScroll)\n }\n }, [estimateSize, getOffsetTop, getScroller, overscan])\n\n const sum = (startIndex: number, endIndex?: number) => {\n return rowHeights.current.slice(startIndex, endIndex).reduce((a, b) => a + b, 0)\n }\n // TODO: React Compiler 测试 topBlank 和 bottomBlank\n const topBlank = sum(0, startIndex)\n const bottomBlank = sum(endIndex)\n\n return {\n startIndex,\n endIndex,\n\n rowHeightList: rowHeights,\n updateRowRectList,\n setRowHeight,\n\n topBlank,\n bottomBlank,\n\n dataSlice,\n }\n}\n","import type { CSSProperties, Key, Ref } from 'react'\nimport type { ScrollElement } from '../utils/dom'\nimport type { TableRowManagerContextType } from './context/row-manager'\nimport type { NecessaryProps } from './internal'\nimport type {\n MiddlewareRenderBody,\n MiddlewareRenderBodyContent,\n MiddlewareRenderBodyRoot,\n MiddlewareRenderBodyWrapper,\n} from './pipeline/types'\nimport type { RowProps } from './row'\nimport type { AnyObject, InnerColumnDescriptor } from './types'\nimport clsx from 'clsx'\nimport { useCallback, useEffect, useMemo, useRef } from 'react'\nimport { useMergedRef } from '../utils/ref'\nimport Colgroup from './colgroup'\nimport { useColumnSizes } from './context/column-sizes'\nimport { useHorizontalScrollContext } from './context/horizontal-scroll'\nimport { TableRowManager } from './context/row-manager'\nimport { useRowVirtualize } from './hooks/useRowVirtualize'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport Row from './row'\n\nexport interface TableBodyProps<T>\n extends Omit<NecessaryProps<T>, 'columns'>,\n Pick<RowProps<T>, 'onRow' | 'renderRow' | 'renderCell'> {\n className?: string\n style?: CSSProperties\n columns: InnerColumnDescriptor<T>\n bodyWrapperRef?: Ref<HTMLDivElement>\n bodyRootRef?: Ref<HTMLTableElement>\n bodyRef?: Ref<HTMLTableSectionElement>\n overscan: number\n estimateSize: number\n getOffsetTop: () => number\n getScroller: () => ScrollElement | undefined\n rowClassName?: (record: T, index: number) => string\n renderBodyWrapper?: MiddlewareRenderBodyWrapper\n renderBodyRoot?: MiddlewareRenderBodyRoot\n renderBody?: MiddlewareRenderBody\n 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 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 dataSlice: dataSource,\n setRowHeight,\n updateRowRectList,\n rowHeightList,\n topBlank,\n bottomBlank,\n } = useRowVirtualize({\n getOffsetTop,\n dataSource: rawData,\n getScroller,\n estimateSize,\n overscan,\n })\n\n // Record<rowIndex, Map(rowHeight)>\n // 一个 Row 可能有多个行高。例如:默认情况下,只有一个行高,展开后,展开面板的高度也被认为是同一个 Row 的\n // 所以可展开时,行高有多个,所有行高之和,则为 Row 的高度\n // 行高之间使用唯一的 key 作为区分\n const rowHeights = useRef(new Map<number, Map<Key, number>>())\n\n // 更新行高。一般会在 body 渲染后、展开面板中调用\n const updateRowHeight = useCallback((index: number, key: Key, height: number) => {\n const target = rowHeights.current.get(index) ?? new Map<Key, number>()\n target.set(key, height)\n rowHeights.current.set(index, target)\n }, [])\n\n const rowManageState = useMemo<TableRowManagerContextType>(() => {\n return { updateRowHeight, getRowHeightList: () => rowHeightList.current }\n }, [rowHeightList, updateRowHeight])\n\n const { columns, descriptor } = columnDescriptor\n const tbodyRef = useMergedRef(bodyRef, (elm) => {\n if (elm == null) return\n\n const bodyHeight = elm.offsetHeight\n if (bodyHeight === 0) return\n\n // body 的 ref 回调函数中,说明 body 渲染完成,也就意味着所有的 tr 也已经渲染完成,\n // 现在可以获取 tr 的高度,记录准确行高\n const heights = rowHeights.current\n heights.forEach((row, rowIndex) => {\n const height = Array.from(row.values()).reduce((res, x) => res + x, 0)\n setRowHeight(rowIndex, height)\n })\n updateRowRectList()\n rowHeights.current.clear()\n })\n\n const bodyContent = pipelineRender(dataSource.map((e, rowIndex) => {\n const _rowKey = (e as AnyObject)[rowKey as string]\n return (\n <Row\n key={_rowKey}\n className={clsx(rowClassName?.(e, rowIndex))}\n rowIndex={rowIndex + startIndex}\n rowData={e}\n columns={columnDescriptor}\n onRow={onRow}\n renderRow={renderRow}\n renderCell={renderCell}\n />\n )\n }), 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 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, useEffect, useRef } from 'react'\nimport { findLastIndex } from '../utils/find-last-index'\nimport { useMergedRef } from '../utils/ref'\nimport Colgroup from './colgroup'\nimport { useColumnSizes } from './context/column-sizes'\nimport { useHorizontalScrollContext } from './context/horizontal-scroll'\nimport { useTableSticky } from './context/sticky'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport { getKey } from './utils/get-key'\nimport { isValidFixed, isValidFixedLeft, isValidFixedRight } from './utils/verification'\n\nexport interface TableHeaderProps {\n className?: string\n style?: CSSProperties\n\n wrapperRef?: RefObject<HTMLDivElement>\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n columns: InnerColumnDescriptor<any>\n\n /** 开启表头 sticky,设置为 true 则默认 top 为 0,为 number 则是偏移量 */\n stickyHeader?: number | boolean\n\n renderHeaderWrapper?: MiddlewareRenderHeaderWrapper\n renderHeaderRoot?: MiddlewareRenderHeaderRoot\n renderHeader?: MiddlewareRenderHeader\n renderHeaderRow?: MiddlewareRenderHeaderRow\n renderHeaderCell?: MiddlewareRenderHeaderCell\n}\n\nconst TableHeader: FC<TableHeaderProps> = (props) => {\n const {\n className,\n style,\n wrapperRef,\n columns: columnDescriptor,\n stickyHeader,\n renderHeaderWrapper,\n renderHeaderRoot,\n renderHeader,\n renderHeaderRow,\n renderHeaderCell,\n } = props\n\n const { columns, descriptor } = columnDescriptor\n const lastColumn = columns[columns.length - 1]\n\n const { widthList } = useColumnSizes()\n const { size: stickySizes } = useTableSticky()\n\n const lastFixedLeftColumnIndex = findLastIndex(descriptor, (x) => {\n if (x.type === 'blank') {\n return false\n }\n return isValidFixedLeft(x.column.fixed)\n })\n const firstFixedRightColumnIndex = descriptor.findIndex((x) => {\n if (x.type === 'blank') {\n return false\n }\n return isValidFixedRight(x.column.fixed)\n })\n const { listen, notify } = useHorizontalScrollContext()\n\n const headerWrapperRef = useRef<HTMLDivElement>(null)\n useEffect(() => {\n const node = headerWrapperRef.current\n if (node == null) return\n const key = 'virtual-table-header'\n const onScroll = () => {\n notify(key, { scrollLeft: () => node.scrollLeft, node })\n }\n const dispose = listen(key, (scrollLeft) => {\n node.scrollLeft = scrollLeft\n })\n node.addEventListener('scroll', onScroll)\n return () => {\n node.removeEventListener('scroll', onScroll)\n dispose()\n }\n }, [listen, notify])\n\n const row = pipelineRender(\n <tr>\n {descriptor.map((item, index) => {\n const { key } = item\n if (item.type === 'blank') {\n return <th key={key} data-blank />\n }\n\n const { column } = item\n\n if (column.colSpan === 0) {\n return null\n }\n\n const isLast = getKey(lastColumn) === key\n const {\n className: thClassName,\n style: thStyle,\n ...rest\n } = column.onHeaderCell?.(column, index) ?? {}\n\n return (\n <Fragment key={key}>\n {pipelineRender(\n createElement(\n 'th',\n {\n scope: 'col',\n ...rest,\n colSpan: column.colSpan,\n className: clsx(\n 'virtual-table-header-cell',\n isLast && 'no-split',\n column.align != null && `virtual-table-align-${column.align}`,\n isValidFixed(column.fixed) && 'virtual-table-sticky-cell',\n lastFixedLeftColumnIndex === index && 'virtual-table-cell-fix-left-last',\n firstFixedRightColumnIndex === index && 'virtual-table-cell-fix-right-first',\n column.className,\n thClassName,\n ),\n style: {\n ...thStyle,\n left: isValidFixedLeft(column.fixed) ? stickySizes.get(key) : undefined,\n right: isValidFixedRight(column.fixed)\n ? stickySizes.get(key)\n : undefined,\n },\n },\n column.title,\n ),\n renderHeaderCell,\n { column, columns, columnWidths: widthList, columnDescriptor: descriptor },\n )}\n </Fragment>\n )\n })}\n </tr>,\n renderHeaderRow,\n { columns, columnDescriptor: descriptor },\n )\n\n const theadNode = pipelineRender(\n <thead className=\"virtual-table-thead\">{row}</thead>,\n renderHeader,\n { columns, columnDescriptor: descriptor },\n )\n\n const tableNode = pipelineRender(\n <table\n style={style}\n >\n <Colgroup columns={descriptor} />\n {theadNode}\n </table>,\n renderHeaderRoot,\n { columns, columnDescriptor: descriptor },\n )\n\n const mergedRef = useMergedRef(wrapperRef, headerWrapperRef)\n\n return pipelineRender(\n <div\n ref={mergedRef}\n className={clsx('virtual-table-header', className, {\n 'virtual-table-header-sticky': stickyHeader,\n })}\n style={{\n top: Number.isFinite(stickyHeader) ? (stickyHeader as number) : undefined,\n }}\n >\n {tableNode}\n </div>,\n renderHeaderWrapper,\n { columns, columnDescriptor: descriptor },\n )\n}\n\nexport default TableHeader\n","import type { Key, RefObject } from 'react'\nimport type { ColumnDescriptor, ColumnType } from '../types'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport { findLastIndex } from '../../utils/find-last-index'\nimport { getKey } from '../utils/get-key'\nimport { onResize } from '../utils/on-resize'\nimport { isValidFixedLeft, isValidFixedRight } from '../utils/verification'\nimport { useStableFn } from './useStableFn'\n\ninterface UseColumnVirtualizeOptions<T> {\n estimateSize: number\n 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, OnRowType } from './types'\nimport clsx from 'clsx'\nimport {\n forwardRef,\n memo,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { getScrollParent, isRoot, isWindow } from '../utils/dom'\nimport { useMergedRef } from '../utils/ref'\nimport TableBody from './body'\nimport { ColumnSizes } from './context/column-sizes'\nimport { ContainerSizeContext } from './context/container-size'\nimport { HorizontalScrollContext } from './context/horizontal-scroll'\nimport { StickyContext } from './context/sticky'\nimport TableHeader from './header'\nimport { useColumnVirtualize } from './hooks/useColumnVirtualize'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport { TablePipeline } from './pipeline/useTablePipeline'\nimport TableRoot from './root'\nimport { getKey } from './utils/get-key'\nimport { isValidFixedLeft, isValidFixedRight } from './utils/verification'\n\nexport interface VirtualTableCoreProps<T>\n extends NecessaryProps<T>,\n Pick<TableBodyProps<T>, 'rowClassName' | 'onRow'> {\n bodyRootRef?: Ref<HTMLTableElement>\n\n className?: string\n style?: CSSProperties\n\n tableBodyClassName?: string\n tableBodyStyle?: CSSProperties\n\n /** 开启表头 sticky,设置为 true 则默认 top 为 0,为 number 则是偏移量 */\n stickyHeader?: number | boolean\n\n /** 预计每列宽度,需要横向虚拟化时,设置它 */\n estimatedColumnWidth?: number\n /** 预计每行高度 @default 46 */\n estimatedRowHeight?: number\n /** 在头和尾额外渲染多少行 @default 5 */\n overscanRows?: number\n /** 横向虚拟化时,在头和尾额外渲染多少列 @default 3 */\n overscanColumns?: number\n\n /** 开启表头虚拟滚动 @default true */\n virtualHeader?: boolean\n\n /**\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 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 rootNode = useRef<HTMLDivElement>(null)\n\n const headerWrapperRef = useRef<HTMLDivElement>(null)\n const bodyWrapperRef = useRef<HTMLDivElement>(null)\n const bodyRoot = useRef<HTMLTableElement>(null)\n const mergedBodyRootRef = useMergedRef(bodyRoot, bodyRootRef)\n const bodyRef = useRef<HTMLTableSectionElement>(null)\n\n const getScroller = useCallback(() => {\n const root = rootNode.current\n if (root == null) return\n return getScrollParent(root)\n }, [])\n\n const getOffsetTop = useCallback(() => {\n if (typeof getOffsetTopImpl === 'function') {\n return getOffsetTopImpl()\n }\n const scrollContainer = getScroller()\n if (scrollContainer === rootNode.current) {\n return 0\n }\n if (isWindow(scrollContainer) || isRoot(scrollContainer)) {\n const top = rootNode.current?.getBoundingClientRect().top ?? 0\n return window.scrollY + top\n }\n return rootNode.current?.offsetTop ?? 0\n }, [getOffsetTopImpl, getScroller])\n\n const {\n dataSource,\n columns: pipelineColumns,\n rowKey,\n rowClassName,\n\n render,\n renderRoot,\n renderContent,\n renderHeaderWrapper,\n renderHeaderRoot,\n renderHeader,\n renderHeaderRow,\n renderHeaderCell,\n renderBodyWrapper,\n renderBodyRoot,\n renderBody,\n 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 })\n\n const [columnWidths, setColumnWidths] = useState(() => new Map<Key, number>())\n const columnWidthsRef = useRef(columnWidths)\n const updateColumnWidths = useCallback((value: Map<Key, number>) => {\n columnWidthsRef.current = value\n setColumnWidths(value)\n }, [])\n\n const tableColumnsContext = useMemo<TableColumnsContextType>(() => {\n return {\n widthList: columnWidths,\n setWidthList: updateColumnWidths,\n }\n }, [columnWidths, updateColumnWidths])\n\n const { columns } = useColumnVirtualize<T>({\n estimateSize: estimatedColumnWidth ?? 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 const contentNode = pipelineRender(\n <>\n <TableHeader\n wrapperRef={headerWrapperRef}\n columns={headerColumns}\n stickyHeader={stickyHeader}\n renderHeaderWrapper={renderHeaderWrapper}\n renderHeaderRoot={renderHeaderRoot}\n renderHeader={renderHeader}\n renderHeaderRow={renderHeaderRow}\n renderHeaderCell={renderHeaderCell}\n />\n <TableBody\n bodyWrapperRef={bodyWrapperRef}\n bodyRootRef={mergedBodyRootRef}\n bodyRef={bodyRef}\n className={tableBodyClassName}\n style={tableBodyStyle}\n columns={columns}\n rowKey={rowKey}\n dataSource={dataSource}\n overscan={overscanRows}\n estimateSize={estimatedRowHeight}\n getScroller={getScroller}\n getOffsetTop={getOffsetTop}\n rowClassName={onRowClassName}\n onRow={onRowProps}\n renderBodyWrapper={renderBodyWrapper}\n renderBodyRoot={renderBodyRoot}\n renderBody={renderBody}\n 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","isValidFixedLeft","fixed","isValidFixedRight","isValidFixed","ColumnSizes","createContext","__DEV__","displayName","useColumnSizes","context","useContext","Error","Sticky","StickyContext","props","columns","children","_useColumnSizes","widthList","columnsFixedRecord","useMemo","map","stickySizes","left","leftOffset","reduce","res","item","_widthList$get","get","right","rightOffset","reduceRight","_widthList$get2","result","set","shallowMemoFixedRecord","shallowMemoStickySizes","stickyState","size","_jsx","Provider","useTableSticky","pipelineRender","node","render","options","getTableCellContent","data","_render","rowData","Cell","_onCell","className","style","rowIndex","renderCell","restProps","_objectWithoutPropertiesLoose","_excluded","align","onCell","_useTableSticky","_ref","extraClassName","extraStyle","colSpan","rowSpan","extraProps","_excluded2","_extends","clsx","undefined","memo","Colgroup","onColumnSizesMeasure","enableMeasure","columnSizes","prevColumnSizes","ref","type","width","offsetWidth","minWidth","overflowStylePatterns","isElement","Node","ELEMENT_NODE_TYPE","nodeType","getScrollParent","el","root","_el$ownerDocument$def","window","document","body","_window$getComputedSt","getComputedStyle","overflow","overflowY","overflowX","test","parentNode","ownerDocument","defaultView","isWindow","arg","toString","isDocument","isRoot","getScrollElement","scrollingElement","getScrollTop","scrollY","element","scrollTop","useCalcSize","getScroller","_useState","useState","scrollContainerWidth","setScrollContainerWidth","_useState2","scrollContainerHeight","setScrollContainerHeight","_useState3","tableWidth","setTableWidth","_useState4","tableHeight","setTableHeight","scrollerContainerRef","useLayoutEffect","scrollerContainer","scroller","observer","ResizeObserver","entries","_entries$0$contentRec","contentRect","height","observe","disconnect","_entries$0$contentRec2","ContainerSize","ContainerSizeContext","_useCalcSize","useContainerSize","HorizontalScroll","HorizontalScrollContext","listenerMap","skipEvent","Set","listen","listener","scrollLeft","notify","has","rAF","requestAnimationFrame","fn","forEach","itemKey","add","useHorizontalScrollContext","TableRowManager","useTableRowManager","useStableFn","callback","stableFn","useCallback","_len","arguments","args","_key","apply","createMiddleware","hook","cache","useMiddleware","ctx","concat","_cache$current","shakeUnsafeHooks","hooks","filter","priority","TablePipeline","defineProperty","use","bind","_proto","setHooks","renderFunctionMap","renderRoot","renderContent","renderHeaderWrapper","renderHeaderRoot","renderHeader","renderHeaderRow","renderHeaderCell","renderBodyWrapper","renderBodyRoot","renderBody","renderBodyContent","renderRow","rowClassNameFunctions","onRowFunctions","slice","sort","a","b","nextCtx","rowClassName","onRow","rest","target","push","_ref2","renders","record","useTablePipeline","extraPipeline","pipeline","cached","_extraPipeline$hooks","nextHooks","findLastIndex","arr","predicate","Row","_onRow","columnDescriptor","_useTableRowManager","updateRowHeight","descriptor","lastFixedLeftColumnIndex","firstFixedRightColumnIndex","offsetHeight","assignRef","mergeRefs","refs","useMergedRef","_len2","_key2","onResize","innerWidth","innerHeight","addEventListener","removeEventListener","rect","anchorQuery","rects","mid","Math","floor","bottom","useRowVirtualize","getOffsetTop","rawData","dataSource","estimateSize","overscan","startIndex","setStartIndex","endIndex","setEndIndex","dataSlice","rowHeights","fillRowHeights","rowRects","updateRowRectList","shouldSkip","_rowHeights$current$r","nextTop","top","setRowHeight","anchorRef","scrollTopRef","initial","useEffect","container","count","offsetTop","max","calcCount","scrollerContainerHeight","prevCount","ceil","updateBoundary","anchor","onScroll","e","scrollElement","isScrollDown","prevHeight","stopListen","nextStartIndex","nextEndIndex","sum","topBlank","bottomBlank","rowHeightList","TableBody","bodyWrapperRef","bodyRootRef","bodyRef","rowKey","_useRowVirtualize","_rowHeights$current$g","rowManageState","getRowHeightList","tbodyRef","elm","bodyHeight","heights","row","clear","bodyContent","_rowKey","startRowIndex","bodyNode","setWidthList","tableNode","_jsxs","paddingBottom","paddingTop","_useHorizontalScrollC","wrapperRef","dispose","mergedRef","TableHeader","stickyHeader","lastColumn","headerWrapperRef","_column$onHeaderCell","isLast","onHeaderCell","thClassName","thStyle","Fragment","createElement","scope","title","columnWidths","theadNode","Number","isFinite","findFirstFixedRightIndex","findLastFixedLeftIndex","useColumnVirtualize","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","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","_rootNode$current$off","_rootNode$current2","_rootNode$current$get","_rootNode$current","getBoundingClientRect","_pipeline$use","rootRef","pipelineColumns","onPipelineRow","setColumnWidths","columnWidthsRef","updateColumnWidths","tableColumnsContext","_useColumnVirtualize","onRowClassName","onRowProps","some","fullHeaderColumns","headerColumns","contentNode","rootMergedRef","table"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { useContainerSize, createMiddleware } from '@are-visual/virtual-table';
3
- import { useMemo, createElement, useCallback, isValidElement, cloneElement } from 'react';
3
+ import { useMemo, createElement, useCallback } from 'react';
4
4
 
5
5
  const EmptyRow = props => {
6
6
  const {
@@ -13,6 +13,9 @@ const EmptyRow = props => {
13
13
  return jsx("tr", {
14
14
  children: jsx("td", {
15
15
  colSpan: colSpan,
16
+ style: {
17
+ padding: 0
18
+ },
16
19
  children: jsx("div", {
17
20
  style: {
18
21
  boxSizing: 'border-box',
@@ -44,19 +47,15 @@ function useTableEmpty(ctx, args) {
44
47
  }
45
48
  return component;
46
49
  }, [component]);
47
- const renderBody = useCallback((children, options) => {
50
+ const renderBodyContent = useCallback((children, options) => {
48
51
  const {
49
- columns
52
+ columnDescriptor
50
53
  } = options;
51
- if (/*#__PURE__*/isValidElement(children)) {
52
- const childrenProps = children.props;
53
- return /*#__PURE__*/cloneElement(children, childrenProps, [...(Array.isArray(childrenProps.children) ? childrenProps.children : []), jsx(EmptyRow, {
54
- colSpan: columns.length,
55
- children: node
56
- }, "virtual-table-placeholder$")]);
57
- }
58
54
  return jsxs(Fragment, {
59
- children: [children, node]
55
+ children: [children, jsx(EmptyRow, {
56
+ colSpan: columnDescriptor.length,
57
+ children: node
58
+ }, "virtual-table-placeholder$")]
60
59
  });
61
60
  }, [node]);
62
61
  if (!showEmpty) {
@@ -64,7 +63,7 @@ function useTableEmpty(ctx, args) {
64
63
  }
65
64
  return {
66
65
  ...ctx,
67
- renderBody
66
+ renderBodyContent
68
67
  };
69
68
  }
70
69
  const tableEmpty = createMiddleware(useTableEmpty);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../packages/virtual-table/src/middleware/empty/empty-row.tsx","../../../../packages/virtual-table/src/middleware/empty/index.tsx"],"sourcesContent":["import type { FC, ReactNode } from 'react'\nimport { useContainerSize } from '@are-visual/virtual-table'\n\nexport interface EmptyRowProps {\n colSpan: number\n children: ReactNode\n}\n\nconst EmptyRow: FC<EmptyRowProps> = (props) => {\n const { colSpan, children } = props\n const { tableWidth } = useContainerSize()\n\n return (\n <tr>\n <td colSpan={colSpan}>\n <div\n style={{\n boxSizing: 'border-box',\n position: 'sticky',\n left: 0,\n top: 0,\n padding: 16,\n width: tableWidth <= 0 ? undefined : tableWidth,\n }}\n >\n {children}\n </div>\n </td>\n </tr>\n )\n}\n\nexport default EmptyRow\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { MiddlewareContext, MiddlewareRenderBody, MiddlewareResult } from '@are-visual/virtual-table'\nimport type { ComponentType, ReactNode } from 'react'\nimport { createMiddleware } from '@are-visual/virtual-table'\nimport { cloneElement, createElement, isValidElement, useCallback, useMemo } from 'react'\nimport EmptyRow from './empty-row'\n\nexport interface EmptyOptions {\n children: ReactNode | ComponentType\n visible?: boolean\n}\n\nfunction useTableEmpty<T = any>(ctx: MiddlewareContext<T>, args: EmptyOptions): MiddlewareResult<T> {\n const { children: component, visible = true } = args\n const { dataSource } = ctx\n\n const isNoData = !Array.isArray(dataSource) ? true : dataSource.length === 0\n const showEmpty = isNoData && visible\n\n const node = useMemo(() => {\n if (typeof component === 'function') {\n return createElement(component)\n }\n return component\n }, [component])\n\n const renderBody: MiddlewareRenderBody = useCallback((children, options) => {\n const { columns } = options\n\n if (isValidElement(children)) {\n const childrenProps = children.props as Record<string, unknown>\n return cloneElement(children, childrenProps, [\n ...(Array.isArray(childrenProps.children) ? childrenProps.children : []),\n <EmptyRow key=\"virtual-table-placeholder$\" colSpan={columns.length}>{node}</EmptyRow>,\n ])\n }\n\n return (\n <>\n {children}\n {node}\n </>\n )\n }, [node])\n\n if (!showEmpty) {\n return ctx\n }\n\n return {\n ...ctx,\n renderBody,\n }\n}\n\nexport const tableEmpty = createMiddleware(useTableEmpty)\n"],"names":["EmptyRow","props","colSpan","children","tableWidth","useContainerSize","_jsx","style","boxSizing","position","left","top","padding","width","undefined","useTableEmpty","ctx","args","component","visible","dataSource","isNoData","Array","isArray","length","showEmpty","node","useMemo","createElement","renderBody","useCallback","options","columns","isValidElement","childrenProps","cloneElement","_jsxs","_Fragment","tableEmpty","createMiddleware"],"mappings":";;;;AAQA,MAAMA,QAAQ,GAAuBC,KAAK,IAAI;EAC5C,MAAM;IAAEC,OAAO;AAAEC,IAAAA;AAAU,GAAA,GAAGF,KAAK;EACnC,MAAM;AAAEG,IAAAA;GAAY,GAAGC,gBAAgB,EAAE;EAEzC,OACEC;cACEA,GAAI,CAAA,IAAA,EAAA;AAAAJ,MAAAA,OAAO,EAAEA,OAAO;AAAAC,MAAAA,QAAA,EAClBG,GACE,CAAA,KAAA,EAAA;AAAAC,QAAAA,KAAK,EAAE;AACLC,UAAAA,SAAS,EAAE,YAAY;AACvBC,UAAAA,QAAQ,EAAE,QAAQ;AAClBC,UAAAA,IAAI,EAAE,CAAC;AACPC,UAAAA,GAAG,EAAE,CAAC;AACNC,UAAAA,OAAO,EAAE,EAAE;AACXC,UAAAA,KAAK,EAAET,UAAU,IAAI,CAAC,GAAGU,SAAS,GAAGV;SACtC;AAAAD,QAAAA,QAAA,EAEAA;OAAQ;KAER;AAAA,GAAA,CACF;AAET,CAAC;;AClBD,SAASY,aAAaA,CAAUC,GAAyB,EAAEC,IAAkB,EAAA;EAC3E,MAAM;AAAEd,IAAAA,QAAQ,EAAEe,SAAS;AAAEC,IAAAA,OAAO,GAAG;AAAI,GAAE,GAAGF,IAAI;EACpD,MAAM;AAAEG,IAAAA;AAAY,GAAA,GAAGJ,GAAG;AAE1B,EAAA,MAAMK,QAAQ,GAAG,CAACC,KAAK,CAACC,OAAO,CAACH,UAAU,CAAC,GAAG,IAAI,GAAGA,UAAU,CAACI,MAAM,KAAK,CAAC;AAC5E,EAAA,MAAMC,SAAS,GAAGJ,QAAQ,IAAIF,OAAO;AAErC,EAAA,MAAMO,IAAI,GAAGC,OAAO,CAAC,MAAK;AACxB,IAAA,IAAI,OAAOT,SAAS,KAAK,UAAU,EAAE;MACnC,oBAAOU,aAAa,CAACV,SAAS,CAAC;AACjC;AACA,IAAA,OAAOA,SAAS;AAClB,GAAC,EAAE,CAACA,SAAS,CAAC,CAAC;EAEf,MAAMW,UAAU,GAAyBC,WAAW,CAAC,CAAC3B,QAAQ,EAAE4B,OAAO,KAAI;IACzE,MAAM;AAAEC,MAAAA;AAAS,KAAA,GAAGD,OAAO;AAE3B,IAAA,iBAAIE,cAAc,CAAC9B,QAAQ,CAAC,EAAE;AAC5B,MAAA,MAAM+B,aAAa,GAAG/B,QAAQ,CAACF,KAAgC;MAC/D,oBAAOkC,YAAY,CAAChC,QAAQ,EAAE+B,aAAa,EAAE,CAC3C,IAAIZ,KAAK,CAACC,OAAO,CAACW,aAAa,CAAC/B,QAAQ,CAAC,GAAG+B,aAAa,CAAC/B,QAAQ,GAAG,EAAE,CAAC,EACxEG,GAAC,CAAAN,QAAQ,EAAkC;QAAAE,OAAO,EAAE8B,OAAO,CAACR,MAAM;AAAGrB,QAAAA,QAAA,EAAAuB;AAAvD,OAAA,EAAA,4BAA4B,CAA2C,CACtF,CAAC;AACJ;IAEA,OACEU,IACG,CAAAC,QAAA,EAAA;AAAAlC,MAAAA,QAAA,EAAA,CAAAA,QAAQ,EACRuB,IAAI;AAAA,KAAA,CACJ;AAEP,GAAC,EAAE,CAACA,IAAI,CAAC,CAAC;EAEV,IAAI,CAACD,SAAS,EAAE;AACd,IAAA,OAAOT,GAAG;AACZ;EAEA,OAAO;AACL,IAAA,GAAGA,GAAG;AACNa,IAAAA;GACD;AACH;MAEaS,UAAU,GAAGC,gBAAgB,CAACxB,aAAa;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../packages/virtual-table/src/middleware/empty/empty-row.tsx","../../../../packages/virtual-table/src/middleware/empty/index.tsx"],"sourcesContent":["import type { FC, ReactNode } from 'react'\nimport { useContainerSize } from '@are-visual/virtual-table'\n\nexport interface EmptyRowProps {\n colSpan: number\n children: ReactNode\n}\n\nconst EmptyRow: FC<EmptyRowProps> = (props) => {\n const { colSpan, children } = props\n const { tableWidth } = useContainerSize()\n\n return (\n <tr>\n <td colSpan={colSpan} style={{ padding: 0 }}>\n <div\n style={{\n boxSizing: 'border-box',\n position: 'sticky',\n left: 0,\n top: 0,\n padding: 16,\n width: tableWidth <= 0 ? undefined : tableWidth,\n }}\n >\n {children}\n </div>\n </td>\n </tr>\n )\n}\n\nexport default EmptyRow\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { MiddlewareContext, MiddlewareRenderBodyContent, MiddlewareResult } from '@are-visual/virtual-table'\nimport type { ComponentType, ReactNode } from 'react'\nimport { createMiddleware } from '@are-visual/virtual-table'\nimport { createElement, useCallback, useMemo } from 'react'\nimport EmptyRow from './empty-row'\n\nexport interface EmptyOptions {\n children: ReactNode | ComponentType\n visible?: boolean\n}\n\nfunction useTableEmpty<T = any>(ctx: MiddlewareContext<T>, args: EmptyOptions): MiddlewareResult<T> {\n const { children: component, visible = true } = args\n const { dataSource } = ctx\n\n const isNoData = !Array.isArray(dataSource) ? true : dataSource.length === 0\n const showEmpty = isNoData && visible\n\n const node = useMemo(() => {\n if (typeof component === 'function') {\n return createElement(component)\n }\n return component\n }, [component])\n\n const renderBodyContent: MiddlewareRenderBodyContent = useCallback((children, options) => {\n const { columnDescriptor } = options\n\n return (\n <>\n {children}\n <EmptyRow key=\"virtual-table-placeholder$\" colSpan={columnDescriptor.length}>{node}</EmptyRow>\n </>\n )\n }, [node])\n\n if (!showEmpty) {\n return ctx\n }\n\n return {\n ...ctx,\n renderBodyContent,\n }\n}\n\nexport const tableEmpty = createMiddleware(useTableEmpty)\n"],"names":["EmptyRow","props","colSpan","children","tableWidth","useContainerSize","_jsx","style","padding","boxSizing","position","left","top","width","undefined","useTableEmpty","ctx","args","component","visible","dataSource","isNoData","Array","isArray","length","showEmpty","node","useMemo","createElement","renderBodyContent","useCallback","options","columnDescriptor","_jsxs","_Fragment","tableEmpty","createMiddleware"],"mappings":";;;;AAQA,MAAMA,QAAQ,GAAuBC,KAAK,IAAI;EAC5C,MAAM;IAAEC,OAAO;AAAEC,IAAAA;AAAU,GAAA,GAAGF,KAAK;EACnC,MAAM;AAAEG,IAAAA;GAAY,GAAGC,gBAAgB,EAAE;EAEzC,OACEC,GACE,CAAA,IAAA,EAAA;AAAAH,IAAAA,QAAA,EAAAG,GAAA,CAAA,IAAA,EAAA;AAAIJ,MAAAA,OAAO,EAAEA,OAAO;AAAEK,MAAAA,KAAK,EAAE;AAAEC,QAAAA,OAAO,EAAE;OAAG;AACzCL,MAAAA,QAAA,EAAAG,GAAA,CAAA,KAAA,EAAA;AACEC,QAAAA,KAAK,EAAE;AACLE,UAAAA,SAAS,EAAE,YAAY;AACvBC,UAAAA,QAAQ,EAAE,QAAQ;AAClBC,UAAAA,IAAI,EAAE,CAAC;AACPC,UAAAA,GAAG,EAAE,CAAC;AACNJ,UAAAA,OAAO,EAAE,EAAE;AACXK,UAAAA,KAAK,EAAET,UAAU,IAAI,CAAC,GAAGU,SAAS,GAAGV;SACtC;AAAAD,QAAAA,QAAA,EAEAA;OAAQ;KAER;AAAA,GAAA,CACF;AAET,CAAC;;AClBD,SAASY,aAAaA,CAAUC,GAAyB,EAAEC,IAAkB,EAAA;EAC3E,MAAM;AAAEd,IAAAA,QAAQ,EAAEe,SAAS;AAAEC,IAAAA,OAAO,GAAG;AAAI,GAAE,GAAGF,IAAI;EACpD,MAAM;AAAEG,IAAAA;AAAY,GAAA,GAAGJ,GAAG;AAE1B,EAAA,MAAMK,QAAQ,GAAG,CAACC,KAAK,CAACC,OAAO,CAACH,UAAU,CAAC,GAAG,IAAI,GAAGA,UAAU,CAACI,MAAM,KAAK,CAAC;AAC5E,EAAA,MAAMC,SAAS,GAAGJ,QAAQ,IAAIF,OAAO;AAErC,EAAA,MAAMO,IAAI,GAAGC,OAAO,CAAC,MAAK;AACxB,IAAA,IAAI,OAAOT,SAAS,KAAK,UAAU,EAAE;MACnC,oBAAOU,aAAa,CAACV,SAAS,CAAC;AACjC;AACA,IAAA,OAAOA,SAAS;AAClB,GAAC,EAAE,CAACA,SAAS,CAAC,CAAC;EAEf,MAAMW,iBAAiB,GAAgCC,WAAW,CAAC,CAAC3B,QAAQ,EAAE4B,OAAO,KAAI;IACvF,MAAM;AAAEC,MAAAA;AAAkB,KAAA,GAAGD,OAAO;IAEpC,OACEE,IACG,CAAAC,QAAA,EAAA;AAAA/B,MAAAA,QAAA,EAAA,CAAAA,QAAQ,EACTG,GAAC,CAAAN,QAAQ;QAAkCE,OAAO,EAAE8B,gBAAgB,CAACR,MAAM;kBAAGE;OAAI,EAApE,4BAA4B,CAAoD;AAAA,KAAA,CAC7F;AAEP,GAAC,EAAE,CAACA,IAAI,CAAC,CAAC;EAEV,IAAI,CAACD,SAAS,EAAE;AACd,IAAA,OAAOT,GAAG;AACZ;EAEA,OAAO;AACL,IAAA,GAAGA,GAAG;AACNa,IAAAA;GACD;AACH;MAEaM,UAAU,GAAGC,gBAAgB,CAACrB,aAAa;;;;"}
@@ -1,13 +1,87 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import { createMiddleware, onResize } from '@are-visual/virtual-table';
3
- import { useState, useEffect, useMemo } from 'react';
2
+ import { getKey, useTableSticky, isValidFixed, isValidFixedLeft, isValidFixedRight, useTableRowManager, findLastIndex, createMiddleware, onResize } from '@are-visual/virtual-table';
3
+ import { memo, useState, useEffect, useMemo } from 'react';
4
+ import clsx from 'clsx';
4
5
 
6
+ function LoadingCell(props) {
7
+ const {
8
+ column,
9
+ className
10
+ } = props;
11
+ const {
12
+ align,
13
+ fixed
14
+ } = column;
15
+ const key = getKey(column);
16
+ const {
17
+ size: stickySizes
18
+ } = useTableSticky();
19
+ return jsx("td", {
20
+ className: clsx('virtual-table-cell', className, align != null && `virtual-table-align-${align}`, isValidFixed(fixed) && 'virtual-table-sticky-cell'),
21
+ style: {
22
+ left: isValidFixedLeft(fixed) ? stickySizes.get(key) : undefined,
23
+ right: isValidFixedRight(fixed) ? stickySizes.get(key) : undefined
24
+ },
25
+ children: jsx("div", {
26
+ className: "virtual-table-loading-skeleton"
27
+ })
28
+ });
29
+ }
30
+ var LoadingCell$1 = /*#__PURE__*/memo(LoadingCell);
31
+
32
+ function LoadingRow(props) {
33
+ const {
34
+ descriptor,
35
+ style,
36
+ rowIndex
37
+ } = props;
38
+ const {
39
+ updateRowHeight
40
+ } = useTableRowManager();
41
+ const lastFixedLeftColumnIndex = findLastIndex(descriptor, x => {
42
+ if (x.type === 'blank') {
43
+ return false;
44
+ }
45
+ return isValidFixedLeft(x.column.fixed);
46
+ });
47
+ const firstFixedRightColumnIndex = descriptor.findIndex(x => {
48
+ if (x.type === 'blank') {
49
+ return false;
50
+ }
51
+ return isValidFixedRight(x.column.fixed);
52
+ });
53
+ return jsx("tr", {
54
+ className: "virtual-table-row virtual-table-loading-cell",
55
+ style: style,
56
+ ref: node => {
57
+ if (node == null) return;
58
+ updateRowHeight(rowIndex, rowIndex, node.offsetHeight);
59
+ },
60
+ children: descriptor.map((item, index) => {
61
+ const {
62
+ key
63
+ } = item;
64
+ if (item.type === 'blank') {
65
+ return jsx("td", {}, key);
66
+ }
67
+ const {
68
+ column
69
+ } = item;
70
+ return jsx(LoadingCell$1, {
71
+ className: clsx(lastFixedLeftColumnIndex === index && 'virtual-table-cell-fix-left-last', firstFixedRightColumnIndex === index && 'virtual-table-cell-fix-right-first'),
72
+ column: column
73
+ }, key);
74
+ })
75
+ });
76
+ }
77
+ var LoadingRow$1 = /*#__PURE__*/memo(LoadingRow);
78
+
79
+ const EMPTY_ARR = [];
5
80
  function useTableLoading(ctx, options) {
6
81
  const {
7
82
  loading = false
8
83
  } = options ?? {};
9
84
  const {
10
- columns: rawColumns,
11
85
  estimatedRowHeight,
12
86
  headerWrapperRef,
13
87
  getScroller
@@ -34,37 +108,27 @@ function useTableLoading(ctx, options) {
34
108
  };
35
109
  });
36
110
  }, [count]);
37
- const columns = useMemo(() => {
38
- if (!loading) {
39
- return rawColumns;
40
- }
41
- return rawColumns.map(column => {
42
- return {
43
- ...column,
44
- onCell() {
45
- return {
46
- className: 'virtual-table-loading-cell',
47
- style: {
48
- height: estimatedRowHeight
49
- }
50
- };
51
- },
52
- render() {
53
- return jsx("div", {
54
- className: "virtual-table-loading-skeleton"
55
- });
56
- }
57
- };
58
- });
59
- }, [loading, rawColumns, estimatedRowHeight]);
60
111
  if (!loading) {
61
112
  return ctx;
62
113
  }
63
114
  return {
64
115
  ...ctx,
65
- columns,
66
- rowKey: 'key',
67
- dataSource: fakeDataSource
116
+ dataSource: EMPTY_ARR,
117
+ renderBodyContent: (_ignore, _ref2) => {
118
+ let {
119
+ columnDescriptor,
120
+ startRowIndex
121
+ } = _ref2;
122
+ return fakeDataSource.map((item, index) => {
123
+ return jsx(LoadingRow$1, {
124
+ style: {
125
+ height: estimatedRowHeight
126
+ },
127
+ descriptor: columnDescriptor,
128
+ rowIndex: index + startRowIndex
129
+ }, item.key);
130
+ });
131
+ }
68
132
  };
69
133
  }
70
134
  const tableLoading = createMiddleware(useTableLoading);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../packages/virtual-table/src/middleware/loading/index.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { ColumnType, MiddlewareContext, MiddlewareResult } from '@are-visual/virtual-table'\nimport { createMiddleware, onResize } from '@are-visual/virtual-table'\nimport { useEffect, useMemo, useState } from 'react'\n\nfunction useTableLoading<T = any>(\n ctx: MiddlewareContext<T>,\n options?: { loading?: boolean },\n): MiddlewareResult<T> {\n const { loading = false } = options ?? {}\n const { columns: rawColumns, estimatedRowHeight, headerWrapperRef, getScroller } = ctx\n\n const [count, setCount] = useState(10)\n\n useEffect(() => {\n const header = headerWrapperRef.current\n const container = getScroller()\n if (container == null) return\n return onResize(container, ({ height }) => {\n const headerHeight = header?.offsetHeight ?? 0\n setCount(Math.ceil((height - headerHeight) / estimatedRowHeight))\n })\n }, [getScroller, headerWrapperRef, estimatedRowHeight])\n\n const fakeDataSource = useMemo(() => {\n return Array.from({ length: count }, (_, index) => {\n return { key: index }\n }) as T[]\n }, [count])\n\n const columns = useMemo((): ColumnType<T>[] => {\n if (!loading) {\n return rawColumns\n }\n\n return rawColumns.map((column): ColumnType<T> => {\n return {\n ...column,\n onCell() {\n return { className: 'virtual-table-loading-cell', style: { height: estimatedRowHeight } }\n },\n render() {\n return <div className=\"virtual-table-loading-skeleton\" />\n },\n }\n })\n }, [loading, rawColumns, estimatedRowHeight])\n\n if (!loading) {\n return ctx\n }\n\n return {\n ...ctx,\n columns,\n rowKey: 'key',\n dataSource: fakeDataSource,\n }\n}\n\nexport const tableLoading = createMiddleware(useTableLoading)\n"],"names":["useTableLoading","ctx","options","loading","columns","rawColumns","estimatedRowHeight","headerWrapperRef","getScroller","count","setCount","useState","useEffect","header","current","container","onResize","_ref","height","headerHeight","offsetHeight","Math","ceil","fakeDataSource","useMemo","Array","from","length","_","index","key","map","column","onCell","className","style","render","_jsx","rowKey","dataSource","tableLoading","createMiddleware"],"mappings":";;;;AAKA,SAASA,eAAeA,CACtBC,GAAyB,EACzBC,OAA+B,EAAA;EAE/B,MAAM;AAAEC,IAAAA,OAAO,GAAG;GAAO,GAAGD,OAAO,IAAI,EAAE;EACzC,MAAM;AAAEE,IAAAA,OAAO,EAAEC,UAAU;IAAEC,kBAAkB;IAAEC,gBAAgB;AAAEC,IAAAA;AAAa,GAAA,GAAGP,GAAG;EAEtF,MAAM,CAACQ,KAAK,EAAEC,QAAQ,CAAC,GAAGC,QAAQ,CAAC,EAAE,CAAC;AAEtCC,EAAAA,SAAS,CAAC,MAAK;AACb,IAAA,MAAMC,MAAM,GAAGN,gBAAgB,CAACO,OAAO;AACvC,IAAA,MAAMC,SAAS,GAAGP,WAAW,EAAE;IAC/B,IAAIO,SAAS,IAAI,IAAI,EAAE;AACvB,IAAA,OAAOC,QAAQ,CAACD,SAAS,EAAEE,IAAA,IAAe;MAAA,IAAd;AAAEC,QAAAA;AAAQ,OAAA,GAAAD,IAAA;AACpC,MAAA,MAAME,YAAY,GAAGN,MAAM,EAAEO,YAAY,IAAI,CAAC;AAC9CV,MAAAA,QAAQ,CAACW,IAAI,CAACC,IAAI,CAAC,CAACJ,MAAM,GAAGC,YAAY,IAAIb,kBAAkB,CAAC,CAAC;AACnE,KAAC,CAAC;GACH,EAAE,CAACE,WAAW,EAAED,gBAAgB,EAAED,kBAAkB,CAAC,CAAC;AAEvD,EAAA,MAAMiB,cAAc,GAAGC,OAAO,CAAC,MAAK;IAClC,OAAOC,KAAK,CAACC,IAAI,CAAC;AAAEC,MAAAA,MAAM,EAAElB;AAAK,KAAE,EAAE,CAACmB,CAAC,EAAEC,KAAK,KAAI;MAChD,OAAO;AAAEC,QAAAA,GAAG,EAAED;OAAO;AACvB,KAAC,CAAQ;AACX,GAAC,EAAE,CAACpB,KAAK,CAAC,CAAC;AAEX,EAAA,MAAML,OAAO,GAAGoB,OAAO,CAAC,MAAsB;IAC5C,IAAI,CAACrB,OAAO,EAAE;AACZ,MAAA,OAAOE,UAAU;AACnB;AAEA,IAAA,OAAOA,UAAU,CAAC0B,GAAG,CAAEC,MAAM,IAAmB;MAC9C,OAAO;AACL,QAAA,GAAGA,MAAM;AACTC,QAAAA,MAAMA,GAAA;UACJ,OAAO;AAAEC,YAAAA,SAAS,EAAE,4BAA4B;AAAEC,YAAAA,KAAK,EAAE;AAAEjB,cAAAA,MAAM,EAAEZ;AAAkB;WAAI;SAC1F;AACD8B,QAAAA,MAAMA,GAAA;UACJ,OAAOC,GAAK,CAAA,KAAA,EAAA;AAAAH,YAAAA,SAAS,EAAC;YAAmC;AAC3D;OACD;AACH,KAAC,CAAC;GACH,EAAE,CAAC/B,OAAO,EAAEE,UAAU,EAAEC,kBAAkB,CAAC,CAAC;EAE7C,IAAI,CAACH,OAAO,EAAE;AACZ,IAAA,OAAOF,GAAG;AACZ;EAEA,OAAO;AACL,IAAA,GAAGA,GAAG;IACNG,OAAO;AACPkC,IAAAA,MAAM,EAAE,KAAK;AACbC,IAAAA,UAAU,EAAEhB;GACb;AACH;MAEaiB,YAAY,GAAGC,gBAAgB,CAACzC,eAAe;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../packages/virtual-table/src/middleware/loading/cell.tsx","../../../../packages/virtual-table/src/middleware/loading/row.tsx","../../../../packages/virtual-table/src/middleware/loading/index.tsx"],"sourcesContent":["import type { ColumnType } from '@are-visual/virtual-table'\nimport type { ReactElement } from 'react'\nimport { getKey, isValidFixed, isValidFixedLeft, isValidFixedRight, useTableSticky } from '@are-visual/virtual-table'\nimport clsx from 'clsx'\nimport { memo } from 'react'\n\nexport interface CellProps<T> {\n className?: string\n column: ColumnType<T>\n}\n\nfunction LoadingCell<T>(props: CellProps<T>) {\n const { column, className } = props\n\n const { align, fixed } = column\n const key = getKey(column)\n const { size: stickySizes } = useTableSticky()\n\n return (\n <td\n className={clsx(\n 'virtual-table-cell',\n className,\n align != null && `virtual-table-align-${align}`,\n isValidFixed(fixed) && 'virtual-table-sticky-cell',\n )}\n style={{\n left: isValidFixedLeft(fixed) ? stickySizes.get(key) : undefined,\n right: isValidFixedRight(fixed) ? stickySizes.get(key) : undefined,\n }}\n >\n <div className=\"virtual-table-loading-skeleton\" />\n </td>\n )\n}\n\nexport default memo(LoadingCell) as <T>(props: CellProps<T>) => ReactElement\n","import type { ColumnDescriptor } from '@are-visual/virtual-table'\nimport type { CSSProperties, ReactElement } from 'react'\nimport { findLastIndex, isValidFixedLeft, isValidFixedRight, useTableRowManager } from '@are-visual/virtual-table'\nimport clsx from 'clsx'\nimport { memo } from 'react'\nimport LoadingCell from './cell'\n\nexport interface RowProps<T> {\n style?: CSSProperties\n descriptor: ColumnDescriptor<T>[]\n rowIndex: number\n}\n\nfunction LoadingRow<T>(props: RowProps<T>) {\n const { descriptor, style, rowIndex } = props\n\n const { updateRowHeight } = useTableRowManager()\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 return (\n <tr\n className=\"virtual-table-row virtual-table-loading-cell\"\n style={style}\n ref={(node) => {\n if (node == null) return\n updateRowHeight(rowIndex, rowIndex, node.offsetHeight)\n }}\n >\n {descriptor.map((item, index) => {\n const { key } = item\n if (item.type === 'blank') {\n return <td key={key} />\n }\n const { column } = item\n return (\n <LoadingCell\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 />\n )\n })}\n </tr>\n )\n}\n\nexport default memo(LoadingRow) as <T>(props: RowProps<T>) => ReactElement\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { MiddlewareContext, MiddlewareResult } from '@are-visual/virtual-table'\nimport { createMiddleware, onResize } from '@are-visual/virtual-table'\nimport { useEffect, useMemo, useState } from 'react'\nimport LoadingRow from './row'\n\nconst EMPTY_ARR: unknown[] = []\n\nfunction useTableLoading<T = any>(\n ctx: MiddlewareContext<T>,\n options?: { loading?: boolean },\n): MiddlewareResult<T> {\n const { loading = false } = options ?? {}\n const { estimatedRowHeight, headerWrapperRef, getScroller } = ctx\n\n const [count, setCount] = useState(10)\n\n useEffect(() => {\n const header = headerWrapperRef.current\n const container = getScroller()\n if (container == null) return\n return onResize(container, ({ height }) => {\n const headerHeight = header?.offsetHeight ?? 0\n setCount(Math.ceil((height - headerHeight) / estimatedRowHeight))\n })\n }, [getScroller, headerWrapperRef, estimatedRowHeight])\n\n const fakeDataSource = useMemo(() => {\n return Array.from({ length: count }, (_, index) => {\n return { key: index }\n })\n }, [count])\n\n if (!loading) {\n return ctx\n }\n\n return {\n ...ctx,\n dataSource: EMPTY_ARR as T[],\n renderBodyContent: (_ignore, { columnDescriptor, startRowIndex }) => {\n return fakeDataSource.map((item, index) => {\n return (\n <LoadingRow\n key={item.key}\n style={{ height: estimatedRowHeight }}\n descriptor={columnDescriptor}\n rowIndex={index + startRowIndex}\n />\n )\n })\n },\n }\n}\n\nexport const tableLoading = createMiddleware(useTableLoading)\n"],"names":["LoadingCell","props","column","className","align","fixed","key","getKey","size","stickySizes","useTableSticky","_jsx","clsx","isValidFixed","style","left","isValidFixedLeft","get","undefined","right","isValidFixedRight","children","memo","LoadingRow","descriptor","rowIndex","updateRowHeight","useTableRowManager","lastFixedLeftColumnIndex","findLastIndex","x","type","firstFixedRightColumnIndex","findIndex","ref","node","offsetHeight","map","item","index","EMPTY_ARR","useTableLoading","ctx","options","loading","estimatedRowHeight","headerWrapperRef","getScroller","count","setCount","useState","useEffect","header","current","container","onResize","_ref","height","headerHeight","Math","ceil","fakeDataSource","useMemo","Array","from","length","_","dataSource","renderBodyContent","_ignore","_ref2","columnDescriptor","startRowIndex","tableLoading","createMiddleware"],"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.2.2",
3
+ "version": "0.4.0",
4
4
  "main": "./index.esm.js",
5
5
  "types": "./index.d.ts",
6
6
  "sideEffects": false,