@are-visual/virtual-table 0.3.0 → 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
@@ -84,6 +84,7 @@ interface RenderOptions<T = any> {
84
84
  column: ColumnType<T>;
85
85
  columnWidths: Map<Key, number>;
86
86
  rowIndex: number;
87
+ startRowIndex: number;
87
88
  columns: ColumnType<T>[];
88
89
  rowData: T;
89
90
  columnDescriptor: ColumnDescriptor<T>[];
@@ -98,12 +99,13 @@ type MiddlewareRenderHeaderRoot<T = any> = (children: ReactNode, options: Pretti
98
99
  type MiddlewareRenderHeader<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'columns' | 'columnDescriptor'>>) => ReactNode;
99
100
  type MiddlewareRenderHeaderRow<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'columns' | 'columnDescriptor'>>) => ReactNode;
100
101
  type MiddlewareRenderHeaderCell<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'columns' | 'columnDescriptor' | 'column' | 'columnWidths'>>) => ReactNode;
101
- type MiddlewareRenderBodyWrapper<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'columns' | 'columnDescriptor'>>) => ReactNode;
102
- type MiddlewareRenderBodyRoot<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'columns' | 'columnDescriptor'>>) => ReactNode;
103
- 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;
104
106
  type MiddlewareRenderRow<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'columns' | 'columnDescriptor' | 'rowIndex' | 'rowData'>>) => ReactNode;
105
107
  type MiddlewareRenderCell<T = any> = (children: ReactNode, options: Prettify<Pick<RenderOptions<T>, 'column'>>) => ReactNode;
106
- 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>;
107
109
  interface MiddlewareRenders {
108
110
  /**
109
111
  * 自定义最外层渲染,children 为 整个 VirtualTable。
@@ -158,6 +160,10 @@ interface MiddlewareRenders {
158
160
  * @note 注意:出于性能考虑,**需要自行对函数 memo**
159
161
  */
160
162
  renderBody?: MiddlewareRenderBody;
163
+ /**
164
+ * 默认情况下 children 是 ReactNode[],即 tbody 下渲染的各个 Row
165
+ */
166
+ renderBodyContent?: MiddlewareRenderBodyContent;
161
167
  /**
162
168
  * children 为 tr
163
169
  * @note 注意:出于性能考虑,**需要自行对函数 memo**
@@ -287,6 +293,7 @@ interface TableBodyProps<T> extends Omit<NecessaryProps<T>, 'columns'>, Pick<Row
287
293
  renderBodyWrapper?: MiddlewareRenderBodyWrapper;
288
294
  renderBodyRoot?: MiddlewareRenderBodyRoot;
289
295
  renderBody?: MiddlewareRenderBody;
296
+ renderBodyContent?: MiddlewareRenderBodyContent;
290
297
  }
291
298
 
292
299
  interface VirtualTableCoreProps<T> extends NecessaryProps<T>, Pick<TableBodyProps<T>, 'rowClassName' | 'onRow'> {
@@ -331,4 +338,4 @@ type PossibleRef<T> = Ref<T> | undefined;
331
338
  declare function mergeRefs<T>(...refs: PossibleRef<T>[]): (node: T | null) => void;
332
339
  declare function useMergedRef<T>(...refs: PossibleRef<T>[]): (node: T | null) => void;
333
340
 
334
- 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 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 };
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
@@ -585,7 +585,7 @@ function createMiddleware(hook) {
585
585
  };
586
586
  }
587
587
 
588
- 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"];
589
589
  function shakeUnsafeHooks(hooks) {
590
590
  if (Array.isArray(hooks)) {
591
591
  return hooks.filter(function (x) {
@@ -635,6 +635,7 @@ var TablePipeline = /*#__PURE__*/function () {
635
635
  renderBodyWrapper: [],
636
636
  renderBodyRoot: [],
637
637
  renderBody: [],
638
+ renderBodyContent: [],
638
639
  renderRow: [],
639
640
  renderCell: []
640
641
  };
@@ -659,6 +660,7 @@ var TablePipeline = /*#__PURE__*/function () {
659
660
  nextCtx.renderBodyWrapper;
660
661
  nextCtx.renderBodyRoot;
661
662
  nextCtx.renderBody;
663
+ nextCtx.renderBodyContent;
662
664
  nextCtx.renderRow;
663
665
  nextCtx.renderCell;
664
666
  var rowClassName = nextCtx.rowClassName,
@@ -1065,6 +1067,7 @@ function TableBody(props) {
1065
1067
  renderBodyWrapper = props.renderBodyWrapper,
1066
1068
  renderBodyRoot = props.renderBodyRoot,
1067
1069
  renderBody = props.renderBody,
1070
+ renderBodyContent = props.renderBodyContent,
1068
1071
  renderRow = props.renderRow,
1069
1072
  renderCell = props.renderCell;
1070
1073
  var _useRowVirtualize = useRowVirtualize({
@@ -1119,23 +1122,29 @@ function TableBody(props) {
1119
1122
  updateRowRectList();
1120
1123
  rowHeights.current.clear();
1121
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
+ });
1122
1141
  var bodyNode = pipelineRender(jsx("tbody", {
1123
1142
  ref: tbodyRef,
1124
- children: dataSource.map(function (e, rowIndex) {
1125
- var _rowKey = e[rowKey];
1126
- return jsx(Row$1, {
1127
- className: clsx(rowClassName == null ? undefined : rowClassName(e, rowIndex)),
1128
- rowIndex: rowIndex + startIndex,
1129
- rowData: e,
1130
- columns: columnDescriptor,
1131
- onRow: onRow,
1132
- renderRow: renderRow,
1133
- renderCell: renderCell
1134
- }, _rowKey);
1135
- })
1143
+ children: bodyContent
1136
1144
  }), renderBody, {
1137
1145
  columns: columns,
1138
- columnDescriptor: descriptor
1146
+ columnDescriptor: descriptor,
1147
+ startRowIndex: startIndex
1139
1148
  });
1140
1149
  var _useColumnSizes = useColumnSizes(),
1141
1150
  setWidthList = _useColumnSizes.setWidthList;
@@ -1152,7 +1161,8 @@ function TableBody(props) {
1152
1161
  }), bodyNode]
1153
1162
  }), renderBodyRoot, {
1154
1163
  columns: columns,
1155
- columnDescriptor: descriptor
1164
+ columnDescriptor: descriptor,
1165
+ startRowIndex: startIndex
1156
1166
  });
1157
1167
  var _useHorizontalScrollC = useHorizontalScrollContext(),
1158
1168
  listen = _useHorizontalScrollC.listen,
@@ -1188,7 +1198,8 @@ function TableBody(props) {
1188
1198
  children: tableNode
1189
1199
  }), renderBodyWrapper, {
1190
1200
  columns: columns,
1191
- columnDescriptor: descriptor
1201
+ columnDescriptor: descriptor,
1202
+ startRowIndex: startIndex
1192
1203
  })
1193
1204
  });
1194
1205
  }
@@ -1687,6 +1698,7 @@ function VirtualTableCore(props, ref) {
1687
1698
  renderBodyWrapper = _pipeline$use.renderBodyWrapper,
1688
1699
  renderBodyRoot = _pipeline$use.renderBodyRoot,
1689
1700
  renderBody = _pipeline$use.renderBody,
1701
+ renderBodyContent = _pipeline$use.renderBodyContent,
1690
1702
  renderRow = _pipeline$use.renderRow,
1691
1703
  renderCell = _pipeline$use.renderCell,
1692
1704
  onPipelineRow = _pipeline$use.onRow;
@@ -1775,6 +1787,7 @@ function VirtualTableCore(props, ref) {
1775
1787
  renderBodyWrapper: renderBodyWrapper,
1776
1788
  renderBodyRoot: renderBodyRoot,
1777
1789
  renderBody: renderBody,
1790
+ renderBodyContent: renderBodyContent,
1778
1791
  renderRow: renderRow,
1779
1792
  renderCell: renderCell
1780
1793
  })]
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\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 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 // 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 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","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","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","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,8 +1,7 @@
1
1
  import * as _are_visual_virtual_table from '@are-visual/virtual-table';
2
2
 
3
- declare const loadingKey: unique symbol;
4
3
  declare const tableLoading: <T = any>(options?: {
5
4
  loading?: boolean;
6
5
  } | undefined) => _are_visual_virtual_table.Middleware<T>;
7
6
 
8
- export { loadingKey, tableLoading };
7
+ export { tableLoading };
@@ -1,14 +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
 
5
- const loadingKey = Symbol.for('virtual-table-loading-mock-data');
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 = [];
6
80
  function useTableLoading(ctx, options) {
7
81
  const {
8
82
  loading = false
9
83
  } = options ?? {};
10
84
  const {
11
- columns: rawColumns,
12
85
  estimatedRowHeight,
13
86
  headerWrapperRef,
14
87
  getScroller
@@ -31,45 +104,34 @@ function useTableLoading(ctx, options) {
31
104
  length: count
32
105
  }, (_, index) => {
33
106
  return {
34
- key: index,
35
- [loadingKey]: true
107
+ key: index
36
108
  };
37
109
  });
38
110
  }, [count]);
39
- const columns = useMemo(() => {
40
- if (!loading) {
41
- return rawColumns;
42
- }
43
- return rawColumns.map(column => {
44
- return {
45
- ...column,
46
- onCell() {
47
- return {
48
- className: 'virtual-table-loading-cell',
49
- style: {
50
- height: estimatedRowHeight
51
- }
52
- };
53
- },
54
- render() {
55
- return jsx("div", {
56
- className: "virtual-table-loading-skeleton"
57
- });
58
- }
59
- };
60
- });
61
- }, [loading, rawColumns, estimatedRowHeight]);
62
111
  if (!loading) {
63
112
  return ctx;
64
113
  }
65
114
  return {
66
115
  ...ctx,
67
- columns,
68
- rowKey: 'key',
69
- 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
+ }
70
132
  };
71
133
  }
72
134
  const tableLoading = createMiddleware(useTableLoading);
73
135
 
74
- export { loadingKey, tableLoading };
136
+ export { tableLoading };
75
137
  //# sourceMappingURL=index.js.map
@@ -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\nexport const loadingKey = Symbol.for('virtual-table-loading-mock-data')\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, [loadingKey]: true }\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":["loadingKey","Symbol","for","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":";;;;AAKO,MAAMA,UAAU,GAAGC,MAAM,CAACC,GAAG,CAAC,iCAAiC;AAEtE,SAASC,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,KAAK;AAAE,QAAA,CAAChC,UAAU,GAAG;OAAM;AAC3C,KAAC,CAAQ;AACX,GAAC,EAAE,CAACY,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.3.0",
3
+ "version": "0.4.0",
4
4
  "main": "./index.esm.js",
5
5
  "types": "./index.d.ts",
6
6
  "sideEffects": false,