@are-visual/virtual-table 0.0.1

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.
Files changed (46) hide show
  1. package/README.md +548 -0
  2. package/index.d.ts +311 -0
  3. package/index.esm.js +1771 -0
  4. package/index.esm.js.map +1 -0
  5. package/middleware/column-resize/index.d.ts +19 -0
  6. package/middleware/column-resize/index.js +130 -0
  7. package/middleware/column-resize/index.js.map +1 -0
  8. package/middleware/column-resize/styles.css +8 -0
  9. package/middleware/column-resize/styles.scss +10 -0
  10. package/middleware/empty/index.d.ts +10 -0
  11. package/middleware/empty/index.js +73 -0
  12. package/middleware/empty/index.js.map +1 -0
  13. package/middleware/expandable/index.d.ts +37 -0
  14. package/middleware/expandable/index.js +239 -0
  15. package/middleware/expandable/index.js.map +1 -0
  16. package/middleware/expandable/styles.css +49 -0
  17. package/middleware/expandable/styles.scss +73 -0
  18. package/middleware/horizontal-scroll-bar/index.d.ts +15 -0
  19. package/middleware/horizontal-scroll-bar/index.js +90 -0
  20. package/middleware/horizontal-scroll-bar/index.js.map +1 -0
  21. package/middleware/horizontal-scroll-bar/styles.css +11 -0
  22. package/middleware/horizontal-scroll-bar/styles.scss +13 -0
  23. package/middleware/loading/index.d.ts +7 -0
  24. package/middleware/loading/index.js +73 -0
  25. package/middleware/loading/index.js.map +1 -0
  26. package/middleware/loading/styles.css +17 -0
  27. package/middleware/loading/styles.scss +27 -0
  28. package/middleware/selection/index.d.ts +47 -0
  29. package/middleware/selection/index.js +282 -0
  30. package/middleware/selection/index.js.map +1 -0
  31. package/middleware/selection/styles.css +13 -0
  32. package/middleware/selection/styles.scss +20 -0
  33. package/middleware/summary/index.d.ts +36 -0
  34. package/middleware/summary/index.js +203 -0
  35. package/middleware/summary/index.js.map +1 -0
  36. package/middleware/summary/styles.css +36 -0
  37. package/middleware/summary/styles.scss +45 -0
  38. package/middleware/utils/getScrollbarSize.d.ts +5 -0
  39. package/middleware/utils/getScrollbarSize.js +15 -0
  40. package/middleware/utils/getScrollbarSize.js.map +1 -0
  41. package/middleware/utils/useControllableValue.d.ts +16 -0
  42. package/middleware/utils/useControllableValue.js +28 -0
  43. package/middleware/utils/useControllableValue.js.map +1 -0
  44. package/package.json +34 -0
  45. package/styles/table.css +142 -0
  46. package/styles/table.scss +186 -0
@@ -0,0 +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.ts","../../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/body.tsx","../../packages/virtual-table/src/core/header.tsx","../../packages/virtual-table/src/core/utils/on-resize.ts","../../packages/virtual-table/src/core/hooks/useColumnVirtualize.ts","../../packages/virtual-table/src/core/hooks/useRowRectManager.ts","../../packages/virtual-table/src/core/hooks/useRowVirtualize.ts","../../packages/virtual-table/src/core/root.tsx","../../packages/virtual-table/src/core/table.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nexport type validObjectValue = Record<string, any> | null | undefined\nexport type validArrayValue = any[] | null | undefined\n\nexport function shallowEqualObjects(\n objA: validObjectValue,\n objB: validObjectValue,\n): boolean {\n if (objA === objB) {\n return true\n }\n\n if (!objA || !objB) {\n return false\n }\n\n const aKeys = Object.keys(objA)\n const bKeys = Object.keys(objB)\n const len = aKeys.length\n\n if (bKeys.length !== len) {\n return false\n }\n\n for (let i = 0; i < len; i += 1) {\n const key = aKeys[i]\n\n if (objA[key] !== objB[key] || !Object.prototype.hasOwnProperty.call(objB, key)) {\n return false\n }\n }\n\n return true\n}\n\nexport function shallowEqualArrays(\n arrA: validArrayValue,\n arrB: validArrayValue,\n): boolean {\n if (arrA === arrB) {\n return true\n }\n\n if (!arrA || !arrB) {\n return false\n }\n\n const len = arrA.length\n\n if (arrB.length !== len) {\n return false\n }\n\n for (let i = 0; i < len; i += 1) {\n if (arrA[i] !== arrB[i]) {\n return false\n }\n }\n\n return true\n}\n\nexport function isShallowEqual(value: unknown, oldValue: unknown) {\n if (Object.is(value, oldValue)) {\n return true\n }\n if (Array.isArray(value) && Array.isArray(oldValue)) {\n if (shallowEqualArrays(value, oldValue)) {\n return true\n }\n if (value.length === oldValue.length) {\n const hasObject = value.findIndex((x) => typeof x === 'object' && x != null) > -1\n if (hasObject) {\n return value.every((state, index) => {\n if (Array.isArray(state)) {\n return shallowEqualArrays(state, oldValue[index] as unknown[])\n }\n if (typeof state === 'object' && state != null) {\n return shallowEqualObjects(\n state as Record<string, unknown>,\n oldValue[index] as Record<string, unknown>,\n )\n }\n return Object.is(state, oldValue[index])\n })\n }\n }\n return false\n }\n if (value instanceof Map && oldValue instanceof Map) {\n const keys = [...value.keys()]\n const oldKeys = [...oldValue.keys()]\n if (shallowEqualArrays(keys, oldKeys)) {\n const values = [...value.values()]\n const oldValues = [...oldValue.values()]\n if (isShallowEqual(values, oldValues)) {\n return true\n }\n }\n return false\n }\n if (typeof value === 'object' && value != null) {\n return shallowEqualObjects(value, oldValue as Record<string, unknown>)\n }\n return false\n}\n","/* eslint-disable react-compiler/react-compiler */\nimport { useRef } from 'react'\n\nimport { isShallowEqual } from '../../utils/equal'\n\n/**\n * 缓存数据(浅比较,如果是数组则对第一层进行浅比较)\n */\nexport function useShallowMemo<T>(pickData: () => T) {\n const nextState = pickData()\n const value = useRef<T>(nextState)\n\n if (!isShallowEqual(nextState, value.current)) {\n value.current = nextState\n }\n\n return value.current\n}\n","import type { Key } from 'react'\nimport type { ColumnType } from '../types'\n\nexport function getKey<T>(column: ColumnType<T>) {\n return 'key' in column ? (column.key as Key) : column.dataIndex as string\n}\n","export type FixedType = 'left' | 'right'\n\nexport function isValidFixedLeft(fixed: unknown) {\n return fixed === 'left'\n}\n\nexport function isValidFixedRight(fixed: unknown) {\n return fixed === 'right'\n}\n\nexport function isValidFixed(fixed: unknown) {\n return isValidFixedLeft(fixed) || isValidFixedRight(fixed)\n}\n","import type { Key } from 'react'\nimport { createContext, useContext } from 'react'\n\nexport interface TableColumnsContextType {\n widthList: Map<Key, number>\n setWidthList: (value: Map<Key, number>) => void\n}\n\nexport const ColumnSizes = createContext<TableColumnsContextType | null>(null)\n\nif (__DEV__) {\n ColumnSizes.displayName = 'VirtualTable.ColumnSizes'\n}\n\nexport function useColumnSizes() {\n const context = useContext(ColumnSizes)\n if (context == null) {\n throw new Error('useColumnSizes provider not found')\n }\n return context\n}\n","import type { Key, PropsWithChildren } from 'react'\nimport type { ColumnType, FixedType } from '../types'\nimport { createContext, useContext, useMemo } from 'react'\nimport { useShallowMemo } from '../hooks/useShallowMemo'\nimport { getKey } from '../utils/get-key'\nimport { isValidFixedLeft, isValidFixedRight } from '../utils/verification'\nimport { useColumnSizes } from './column-sizes'\n\nexport interface StickyContextState {\n size: Map<Key, number>\n /** 每一列设置的 fixed 值 */\n fixed: { key: Key, fixed: FixedType | undefined }[]\n}\n\nexport const Sticky = createContext<StickyContextState | null>(null)\n\nif (__DEV__) {\n Sticky.displayName = 'VirtualTable.Sticky'\n}\n\nexport function StickyContext(\n props: PropsWithChildren<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n columns: ColumnType<any>[]\n }>,\n) {\n const { columns, children } = props\n const { widthList } = useColumnSizes()\n\n const columnsFixedRecord = useMemo(() => {\n return columns.map((column) => {\n const key = getKey(column)\n return { key, fixed: column.fixed }\n })\n }, [columns])\n\n const stickySizes = useMemo(() => {\n let left = 0\n const leftOffset = columnsFixedRecord.reduce<number[]>((res, item, index) => {\n const { fixed, key } = item\n if (isValidFixedLeft(fixed)) {\n res[index] = left\n // eslint-disable-next-line react-compiler/react-compiler\n left += widthList.get(key) ?? 0\n }\n return res\n }, [])\n\n let right = 0\n const rightOffset = columnsFixedRecord.reduceRight((res, item, index) => {\n const { fixed, key } = item\n if (isValidFixedRight(fixed)) {\n res[index] = right\n right += widthList.get(key) ?? 0\n }\n return res\n }, [] as number[])\n\n return columnsFixedRecord.reduce((result, item, index) => {\n const { key, fixed } = item\n if (isValidFixedLeft(fixed)) {\n result.set(key, leftOffset[index])\n return result\n }\n if (isValidFixedRight(fixed)) {\n result.set(key, rightOffset[index])\n return result\n }\n return result\n }, new Map<Key, number>())\n }, [columnsFixedRecord, widthList])\n\n const shallowMemoFixedRecord = useShallowMemo(() => columnsFixedRecord)\n const shallowMemoStickySizes = useShallowMemo(() => stickySizes)\n\n const stickyState = useMemo((): StickyContextState => {\n return { size: shallowMemoStickySizes, fixed: shallowMemoFixedRecord }\n }, [shallowMemoFixedRecord, shallowMemoStickySizes])\n\n return (\n <Sticky.Provider value={stickyState}>\n {children}\n </Sticky.Provider>\n )\n}\n\nexport function useTableSticky() {\n const context = useContext(Sticky)\n if (context == null) {\n throw new Error('useTableSticky provider not found')\n }\n return context\n}\n","import type { ReactNode } from 'react'\nimport type { MergedMiddlewareRender } from './types'\n\ntype RenderOptions<T> = T extends ((children: ReactNode, options: infer Opt) => ReactNode) ? Opt : object\n\nexport function pipelineRender<T extends MergedMiddlewareRender>(\n node: ReactNode,\n render: T | undefined,\n options: RenderOptions<T>,\n): ReactNode {\n if (typeof render === 'function') {\n // @ts-expect-error: There is no way to declare the type correctly, but it works at runtime.\n return render(node, options)\n }\n return node\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { DetailedHTMLProps, HTMLAttributes, ReactElement } from 'react'\nimport type { MiddlewareRenderCell } from './pipeline/types'\nimport type { AnyObject, ColumnType } from './types'\nimport clsx from 'clsx'\nimport { memo } from 'react'\nimport { useTableSticky } from './context/sticky'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport { getKey } from './utils/get-key'\nimport { isValidFixed, isValidFixedLeft, isValidFixedRight } from './utils/verification'\n\ntype NativeProps = DetailedHTMLProps<\n HTMLAttributes<HTMLTableCellElement>,\n HTMLTableCellElement\n>\n\nexport interface CellProps<T> extends Omit<NativeProps, 'children'> {\n column: ColumnType<T>\n rowIndex: number\n rowData: T\n renderCell?: MiddlewareRenderCell\n}\n\nfunction getTableCellContent<T extends AnyObject>(\n index: number,\n data: T,\n column: ColumnType<any>,\n): any {\n const { render } = column\n const rowData = data as AnyObject\n if ('dataIndex' in column) {\n const dataIndex = column.dataIndex as string\n if (typeof render !== 'function') {\n return rowData[dataIndex]\n }\n return render(rowData[dataIndex], data, index)\n }\n return render?.(data, data, index) ?? null\n}\n\nfunction Cell<T>(props: CellProps<T>) {\n const {\n className,\n style,\n column,\n rowData,\n rowIndex,\n renderCell,\n ...restProps\n } = props\n\n const { align, fixed, onCell } = column\n const key = getKey(column)\n const { size: stickySizes } = useTableSticky()\n\n const {\n className: extraClassName,\n style: extraStyle,\n colSpan,\n rowSpan,\n ...extraProps\n } = onCell?.(rowData, rowIndex) ?? {}\n\n if (colSpan === 0 || rowSpan === 0) {\n return null\n }\n\n return pipelineRender(\n <td\n {...restProps}\n {...extraProps}\n colSpan={colSpan}\n rowSpan={rowSpan}\n className={clsx(\n 'virtual-table-cell',\n align != null && `virtual-table-align-${align}`,\n isValidFixed(fixed) && 'virtual-table-sticky-cell',\n className,\n column.className,\n extraClassName,\n )}\n style={{\n ...style,\n ...extraStyle,\n left: isValidFixedLeft(fixed) ? stickySizes.get(key) : undefined,\n right: isValidFixedRight(fixed) ? stickySizes.get(key) : undefined,\n }}\n >\n {getTableCellContent(rowIndex, rowData as AnyObject, column)}\n </td>,\n renderCell,\n { column },\n )\n}\n\nexport default memo(Cell) as <T>(props: CellProps<T>) => ReactElement\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { FC } from 'react'\nimport type { ColumnDescriptor, ColumnType } from './types'\n\nexport interface ColgroupProps {\n columns: ColumnDescriptor[]\n colRef?: (instance: HTMLTableColElement | null, column: ColumnType<any>, index: number) => void\n}\n\nconst Colgroup: FC<ColgroupProps> = (props) => {\n const { columns, colRef } = props\n\n return (\n <colgroup>\n {columns.map((item, index) => {\n const { key } = item\n if (item.type === 'blank') {\n return <col key={key} style={{ width: item.width }} />\n }\n\n const { column } = item\n\n return (\n <col\n key={key}\n ref={\n typeof colRef === 'function'\n ? (instance) => { colRef(instance, column, index) }\n : colRef\n }\n style={{\n width: column.width,\n minWidth: column.minWidth,\n }}\n />\n )\n })}\n </colgroup>\n )\n}\n\nexport default Colgroup\n","export type ScrollElement = HTMLElement | Window\n\nconst overflowStylePatterns = /auto|scroll|overlay|hidden/\n\nfunction isElement(node: unknown): node is Node {\n if (!(node instanceof Node)) {\n return false\n }\n const ELEMENT_NODE_TYPE = 1\n return node.nodeType === ELEMENT_NODE_TYPE\n}\n\nexport function getScrollParent(\n el: Element,\n root: ScrollElement | null | undefined = window,\n): ScrollElement {\n let node = el\n\n while (node !== root && isElement(node)) {\n if (node === document.body) {\n return root as HTMLElement\n }\n const { overflow, overflowY, overflowX } = window.getComputedStyle(node)\n if (overflowStylePatterns.test(overflow + overflowY + overflowX)) {\n return node as HTMLElement\n }\n node = node.parentNode as Element\n }\n return el.ownerDocument.defaultView ?? window\n}\n\nexport function isWindow(arg: unknown): arg is Window {\n return Object.prototype.toString.call(arg) === '[object Window]'\n}\n\nexport function isDocument(arg: unknown): arg is Document {\n return Object.prototype.toString.call(arg) === '[object HTMLDocument]'\n}\n\nexport function isRoot(arg: unknown): arg is HTMLElement {\n return Object.prototype.toString.call(arg) === '[object HTMLHtmlElement]'\n}\n\nexport function getScrollElement(el: unknown): Element {\n if (isDocument(el)) {\n return el.scrollingElement!\n }\n if (isElement(el)) {\n return el as Element\n }\n return document.scrollingElement!\n}\n","import type { RefObject } from 'react'\nimport type { ScrollElement } from '../../utils/dom'\nimport { useLayoutEffect, useRef, useState } from 'react'\nimport { isWindow } from '../../utils/dom'\n\nexport interface CalcSizeOptions {\n getScroller: () => ScrollElement | undefined\n root: RefObject<HTMLDivElement>\n}\n\nexport function useCalcSize(options: CalcSizeOptions) {\n const { getScroller, root } = options\n\n const [scrollContainerWidth, setScrollContainerWidth] = useState(0)\n const [scrollContainerHeight, setScrollContainerHeight] = useState(0)\n\n const [tableWidth, setTableWidth] = useState(0)\n const [tableHeight, setTableHeight] = useState(0)\n\n const scrollerContainerRef = useRef<HTMLElement | null>(null)\n\n useLayoutEffect(() => {\n const scrollerContainer = getScroller()\n if (scrollerContainer == null) return\n let scroller: HTMLElement\n if (isWindow(scrollerContainer)) {\n scroller = document.scrollingElement as HTMLElement\n } else {\n scroller = scrollerContainer\n }\n scrollerContainerRef.current = scroller\n const observer = new ResizeObserver((entries) => {\n const { width, height } = entries[0].contentRect\n setScrollContainerWidth(width)\n setScrollContainerHeight(height)\n })\n observer.observe(scroller)\n return () => {\n observer.disconnect()\n }\n }, [getScroller])\n\n useLayoutEffect(() => {\n const node = root.current\n if (node == null) return\n const observer = new ResizeObserver((entries) => {\n const { width, height } = entries[0].contentRect\n setTableWidth(width)\n setTableHeight(height)\n })\n observer.observe(node)\n return () => {\n observer.disconnect()\n }\n }, [root])\n\n return {\n scrollContainerWidth,\n scrollContainerHeight,\n tableWidth,\n tableHeight,\n }\n}\n","import type { PropsWithChildren } from 'react'\nimport type { CalcSizeOptions } from '../hooks/useCalcSize'\nimport { createContext, useContext, useMemo } from 'react'\nimport { useCalcSize } from '../hooks/useCalcSize'\n\nexport interface ContainerSizeState {\n scrollContainerWidth: number\n scrollContainerHeight: number\n tableWidth: number\n tableHeight: number\n}\n\nconst ContainerSize = createContext<ContainerSizeState | null>(null)\n\nexport function ContainerSizeContext(props: PropsWithChildren<CalcSizeOptions>) {\n const { getScroller, root, children } = props\n\n const {\n scrollContainerHeight,\n scrollContainerWidth,\n tableHeight,\n tableWidth,\n } = useCalcSize({ getScroller, root })\n\n const state = useMemo((): ContainerSizeState => {\n return {\n scrollContainerWidth,\n scrollContainerHeight,\n tableWidth,\n tableHeight,\n }\n }, [scrollContainerWidth, scrollContainerHeight, tableWidth, tableHeight])\n\n return (\n <ContainerSize.Provider value={state}>\n {children}\n </ContainerSize.Provider>\n )\n}\n\nexport function useContainerSize() {\n const context = useContext(ContainerSize)\n if (context == null) {\n throw new Error('useContainerSize provider not found')\n }\n return context\n}\n","import type { PropsWithChildren } from 'react'\nimport { createContext, useContext, useMemo, useRef } from 'react'\n\ntype Listener = (scrollLeft: number, node: HTMLElement) => void\n\nexport interface HorizontalScrollContextState {\n listen: (key: string, listener: Listener) => () => void\n notify: (key: string, 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 return {\n listen(key, listener) {\n listenerMap.current.set(key, listener)\n return () => {\n listenerMap.current.delete(key)\n }\n },\n notify(key, scrollLeft, node) {\n let rAF = window.requestAnimationFrame as ((fn: () => void) => void) | undefined\n if (rAF == null) {\n rAF = (fn: () => void) => {\n fn()\n }\n }\n rAF(() => {\n listenerMap.current.forEach((listener, itemKey) => {\n if (itemKey !== key) {\n listener(scrollLeft, node)\n }\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 { createContext, useContext } from 'react'\n\nexport interface TableRowManagerContextType {\n getRowHeightList: () => number[]\n updateRowHeight: (index: number, 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 }, [callback])\n\n const stableFn = useCallback((...args: unknown[]) => {\n return fn.current?.(...args) as unknown\n }, []) as unknown as T\n\n return stableFn\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Middleware, MiddlewareContext, MiddlewareResult } from './types'\nimport { isShallowEqual } from '../../utils/equal'\n\n/**\n * 创建中间件,内部会浅比较 options,只有 options 改变才会返回新的函数。\n */\nfunction createMiddleware<T, Args extends any[]>(\n hook: (ctx: MiddlewareContext<T>, ...args: Args) => MiddlewareResult<T>,\n): (...args: Args) => Middleware<T> {\n const cache = {\n current: null as Middleware<T> | null,\n options: null as Args | null | undefined,\n }\n\n return (...options: Args): Middleware<T> => {\n const useMiddleware: Middleware<T> = (ctx) => hook(ctx, ...options)\n\n if (isShallowEqual(options, cache.options)) {\n return cache.current ?? useMiddleware\n }\n\n cache.options = options\n cache.current = useMiddleware\n\n return useMiddleware\n }\n}\n\nexport type { MiddlewareResult }\nexport { createMiddleware }\n","import type { ReactNode } from 'react'\nimport type { OnRowType } from '../types'\nimport type { Middleware, MiddlewareContext, MiddlewareRenders, MiddlewareResult } from './types'\nimport clsx from 'clsx'\n\nexport interface Hook<T> { priority: number, hook: Middleware<T> }\nexport type UnsafeHook<T> = Middleware<T> | undefined | null | Hook<T>\n\ntype RenderFunctions<T> = {\n [K in keyof T]: (T[K])[]\n}\n\nexport function shakeUnsafeHooks<T>(hooks: UnsafeHook<T>[]): Hook<T>[] {\n if (Array.isArray(hooks)) {\n return hooks.filter((x) => {\n return x != null && (typeof x === 'function' || typeof x.hook === 'function')\n }).map((hook): Hook<T> => {\n if (typeof hook === 'function') {\n return { priority: 100, hook }\n }\n return hook!\n })\n }\n return []\n}\n\nexport class TablePipeline<T> {\n constructor() {\n this.use = this.use.bind(this)\n }\n\n hooks: Hook<T>[] = []\n\n setHooks(value: Hook<T>[]) {\n this.hooks = value\n }\n\n use(options: MiddlewareContext<T>): MiddlewareResult<T> {\n if (this.hooks.length === 0) {\n return options\n }\n\n const context: { current: MiddlewareResult<T> } = { current: options }\n\n const renderFunctionMap: RenderFunctions<Required<MiddlewareRenders>> = {\n render: [],\n renderRoot: [],\n renderContent: [],\n renderHeaderWrapper: [],\n renderHeaderRoot: [],\n renderHeader: [],\n renderHeaderRow: [],\n renderHeaderCell: [],\n renderBodyWrapper: [],\n renderBodyRoot: [],\n renderBody: [],\n renderRow: [],\n renderCell: [],\n }\n\n const rowClassNameFunctions: ((record: T, index: number) => string)[] = []\n const onRowFunctions: OnRowType<T>[] = []\n\n const hooks = this.hooks.slice()\n hooks.sort((a, b) => a.priority - b.priority)\n\n hooks.map((x) => x.hook).forEach((hook) => {\n const nextCtx = hook(context.current)\n const {\n render: _render,\n renderRoot: _renderRoot,\n renderContent: _renderContent,\n renderHeaderWrapper: _renderHeaderWrapper,\n renderHeaderRoot: _renderHeaderRoot,\n renderHeader: _renderHeader,\n renderHeaderRow: _renderHeaderRow,\n renderHeaderCell: _renderHeaderCell,\n renderBodyWrapper: _renderBodyWrapper,\n renderBodyRoot: _renderBodyRoot,\n renderBody: _renderBody,\n renderRow: _renderRow,\n renderCell: _renderCell,\n\n rowClassName,\n onRow,\n ...rest\n } = nextCtx\n\n Object.entries(renderFunctionMap).forEach(([key, value]) => {\n const target = nextCtx[key as keyof MiddlewareRenders]\n if (typeof target === 'function') {\n // @ts-expect-error: There is no way to declare the type correctly, but it works at runtime.\n value.push(target)\n }\n })\n\n if (typeof rowClassName === 'function') {\n rowClassNameFunctions.push(rowClassName)\n }\n if (typeof onRow === 'function') {\n onRowFunctions.push(onRow)\n }\n context.current = rest\n })\n\n Object.entries(renderFunctionMap).forEach(([key, renders]) => {\n if (renders.length > 0) {\n context.current[key as keyof MiddlewareRenders] = (children, args) => {\n // reduce 把 [render1, render2] 转为 render1(render2(children))\n return renders.reduce<ReactNode>((node, render) => {\n // @ts-expect-error: There is no way to declare the type correctly, but it works at runtime.\n return render(node, args)\n }, children)\n }\n }\n })\n\n if (rowClassNameFunctions.length > 0) {\n context.current.rowClassName = (record, index) => {\n return clsx(...rowClassNameFunctions.map((fn) => fn(record, index)))\n }\n }\n\n if (onRowFunctions.length > 0) {\n context.current.onRow = (record, index) => {\n return onRowFunctions.reduce((result, item) => {\n return { ...result, ...item(record, index) }\n }, {})\n }\n }\n\n return context.current\n }\n\n static defaultPipeline = new TablePipeline()\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Hook } from './table-pipeline'\nimport type { Middleware } from './types'\nimport { useMemo } from 'react'\nimport { shallowEqualArrays } from '../../utils/equal'\nimport { shakeUnsafeHooks, TablePipeline } from './table-pipeline'\n\nexport interface UseTablePipelineOptions<T = any> {\n pipeline?: TablePipeline<T>\n use?: (Middleware<T> | Hook<T>)[]\n}\n\nexport { TablePipeline }\nexport type { Hook }\n\nexport function useTablePipeline<T = any>(options: UseTablePipelineOptions<T>) {\n const { use, pipeline: extraPipeline } = options\n\n const cached = useMemo(() => ({ current: new TablePipeline<T>() }), [])\n\n if (use != null) {\n const nextHooks = shakeUnsafeHooks([...use, ...(extraPipeline?.hooks ?? [])])\n\n if (!shallowEqualArrays(cached.current.hooks, nextHooks)) {\n const pipeline = new TablePipeline<T>()\n pipeline.setHooks(nextHooks)\n cached.current = pipeline\n return pipeline\n }\n }\n\n return cached.current\n}\n","export function findLastIndex<T>(\n arr: T[],\n predicate: (value: T, index: number) => boolean,\n) {\n let result = -1\n for (let i = 0; i < arr.length; i += 1) {\n if (predicate(arr[i], i)) {\n result = i\n }\n }\n return result\n}\n","import type { DetailedHTMLProps, HTMLAttributes, ReactElement } from 'react'\nimport type { MiddlewareRenderCell, MiddlewareRenderRow } from './pipeline/types'\nimport type { InnerColumnDescriptor, OnRowType } from './types'\nimport clsx from 'clsx'\nimport { memo } from 'react'\nimport { findLastIndex } from '../utils/find-last-index'\nimport Cell from './cell'\nimport { useTableRowManager } from './context/row-manager'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport { isValidFixedLeft, isValidFixedRight } from './utils/verification'\n\ntype NativeProps = DetailedHTMLProps<\n HTMLAttributes<HTMLTableRowElement>,\n HTMLTableRowElement\n>\n\nexport interface RowProps<T> extends Omit<NativeProps, 'children'> {\n rowIndex: number\n rowData: T\n columns: InnerColumnDescriptor<T>\n onRow?: OnRowType<T>\n renderRow?: MiddlewareRenderRow\n renderCell?: MiddlewareRenderCell\n}\n\nfunction Row<T>(props: RowProps<T>) {\n const {\n className,\n rowIndex,\n rowData,\n columns: columnDescriptor,\n onRow,\n renderRow,\n renderCell,\n ...rest\n } = props\n\n const { updateRowHeight } = useTableRowManager()\n\n const { columns, descriptor } = columnDescriptor\n\n const lastFixedLeftColumnIndex = findLastIndex(descriptor, (x) => {\n if (x.type === 'blank') {\n return false\n }\n return isValidFixedLeft(x.column.fixed)\n })\n const firstFixedRightColumnIndex = descriptor.findIndex((x) => {\n if (x.type === 'blank') {\n return false\n }\n return isValidFixedRight(x.column.fixed)\n })\n\n const { className: extraClassName, ...extraProps } = onRow?.(rowData, rowIndex) ?? {}\n\n return pipelineRender(\n <tr\n {...rest}\n {...extraProps}\n className={clsx('virtual-table-row', className, extraClassName)}\n ref={(node) => {\n if (node == null) return\n // 小心陷阱:当 table 父元素为 display: none 时,依然会触发 updateRowHeight 函数,并设置高度为 0\n updateRowHeight(rowIndex, 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 type { CSSProperties, Key, Ref } from 'react'\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 { useEffect, useLayoutEffect, useRef } from 'react'\nimport { isShallowEqual } from '../utils/equal'\nimport { useMergedRef } from '../utils/ref'\nimport Colgroup from './colgroup'\nimport { useColumnSizes } from './context/column-sizes'\nimport { useHorizontalScrollContext } from './context/horizontal-scroll'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport Row from './row'\nimport { getKey } from './utils/get-key'\n\nexport interface TableBodyProps<T>\n extends Omit<NecessaryProps<T>, 'columns'>,\n Pick<RowProps<T>, 'onRow' | 'renderRow' | 'renderCell'> {\n className?: string\n style?: CSSProperties\n startIndex: number\n columns: InnerColumnDescriptor<T>\n bodyWrapperRef?: Ref<HTMLDivElement>\n bodyRootRef?: Ref<HTMLTableElement>\n bodyRef?: Ref<HTMLTableSectionElement>\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,\n columns: columnDescriptor,\n rowKey,\n startIndex,\n rowClassName,\n onRow,\n renderBodyWrapper,\n renderBodyRoot,\n renderBody,\n renderRow,\n renderCell,\n } = props\n\n const { columns, descriptor } = columnDescriptor\n\n const { listen, notify } = useHorizontalScrollContext()\n\n const { widthList, setWidthList } = useColumnSizes()\n const columnWidthsRef = useRef(new Map<Key, number>())\n useLayoutEffect(() => {\n const snap = widthList\n if (!isShallowEqual(snap, columnWidthsRef.current)) {\n setWidthList(new Map(columnWidthsRef.current))\n }\n })\n\n const bodyNode = pipelineRender(\n <tbody ref={bodyRef}>\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 tableNode = pipelineRender(\n <table\n className={clsx(className, 'virtual-table-body')}\n style={style}\n ref={bodyRootRef}\n >\n <Colgroup\n columns={descriptor}\n colRef={(node, column) => {\n if (node == null) return\n const key = getKey(column)\n columnWidthsRef.current.set(key, node.offsetWidth)\n }}\n />\n {bodyNode}\n </table>,\n renderBodyRoot,\n { columns, columnDescriptor: descriptor },\n )\n\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 const nextScrollLeft = node.scrollLeft\n notify(key, nextScrollLeft, 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 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}\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 { 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\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 const nextScrollLeft = node.scrollLeft\n notify(key, nextScrollLeft, 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} />\n }\n\n const { column } = item\n\n if (column.colSpan === 0) {\n return null\n }\n\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 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 { isWindow } from '../../utils/dom'\n\ninterface ResizeRect {\n width: number\n height: number\n}\n\nexport function onResize(target: Window | HTMLElement, callback: (rect: ResizeRect) => void) {\n if (isWindow(target)) {\n const listener = () => {\n callback({\n width: window.innerWidth,\n height: window.innerHeight,\n })\n }\n listener()\n window.addEventListener('resize', listener)\n return () => {\n window.removeEventListener('resize', listener)\n }\n } else {\n const observer = new ResizeObserver((entries) => {\n const rect = entries[0].contentRect\n callback({ width: rect.width, height: rect.height })\n })\n observer.observe(target)\n return () => {\n observer.disconnect()\n }\n }\n}\n","import type { Key, RefObject } from 'react'\nimport type { ColumnDescriptor, ColumnType } from '../types'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport { findLastIndex } from '../../utils/find-last-index'\nimport { getKey } from '../utils/get-key'\nimport { onResize } from '../utils/on-resize'\nimport { isValidFixedLeft, isValidFixedRight } from '../utils/verification'\nimport { useStableFn } from './useStableFn'\n\ninterface UseColumnVirtualizeOptions<T> {\n estimateSize: number\n overscan: number\n columns: ColumnType<T>[]\n bodyWrapper: RefObject<HTMLDivElement>\n columnWidths: Map<Key, number>\n disabled?: boolean\n}\n\ninterface Rect {\n index: number\n width: number\n left: number\n right: number\n}\n\nfunction anchorQuery(rects: Rect[], scrollLeft: number) {\n let left = 0\n let right = rects.length - 1\n let index = -1\n\n while (left <= right) {\n const mid = Math.floor((left + right) / 2)\n\n if (rects[mid].right > scrollLeft) {\n index = mid\n right = mid - 1\n } else {\n left = mid + 1\n }\n }\n\n if (index === -1) {\n return undefined\n }\n\n return rects[index]\n}\n\nfunction findFirstFixedRightIndex<T>(columns: ColumnType<T>[]) {\n let index = -1\n for (let i = columns.length - 1; i >= 0; i--) {\n const column = columns[i]\n if (isValidFixedRight(column.fixed)) {\n index = i\n } else {\n break\n }\n }\n return index\n}\n\nfunction findLastFixedLeftIndex<T>(columns: ColumnType<T>[]) {\n return findLastIndex(columns, (x) => isValidFixedLeft(x.fixed))\n}\n\nexport function useColumnVirtualize<T>(options: UseColumnVirtualizeOptions<T>) {\n const {\n estimateSize,\n overscan,\n columns: rawColumns,\n bodyWrapper,\n columnWidths,\n disabled = false,\n } = options\n\n const lastFixedLeftIndex = findLastFixedLeftIndex(rawColumns)\n const firstFixedRightIndex = findFirstFixedRightIndex(rawColumns)\n\n const leftKey = lastFixedLeftIndex > -1 ? getKey(rawColumns[lastFixedLeftIndex]) : null\n const rightKey = firstFixedRightIndex > -1 ? getKey(rawColumns[firstFixedRightIndex]) : null\n\n const [startIndex, setStartIndex] = useState(0)\n const [endIndex, setEndIndex] = useState(0)\n\n const rects = useMemo(() => {\n if (disabled) {\n return []\n }\n let left = 0\n return rawColumns.map((column, index): Rect => {\n const key = getKey(column)\n const width = columnWidths.get(key) ?? estimateSize\n const right = left + width\n const rect: Rect = {\n index,\n width,\n left,\n right,\n }\n\n left = right\n return rect\n })\n }, [rawColumns, columnWidths, estimateSize, disabled])\n\n // 锚点元素\n const anchorRef = useRef<Rect>({\n index: 0,\n width: estimateSize,\n left: 0,\n right: estimateSize,\n })\n\n const findAnchorRef = useStableFn((scrollLeft: number) => {\n return anchorQuery(rects, scrollLeft)\n })\n\n const updateBoundary = useStableFn((scrollLeft: number, count: number) => {\n const anchor = findAnchorRef(scrollLeft)\n if (anchor != null) {\n anchorRef.current = anchor\n setStartIndex(Math.max(0, anchor.index - overscan))\n setEndIndex(anchor.index + count + overscan)\n }\n })\n\n // 用来判断滚动方向\n const scrollLeftRef = useRef(0)\n useEffect(() => {\n if (disabled) return\n\n const scrollContainer = bodyWrapper.current\n if (scrollContainer == null) return\n\n const containerWidth = scrollContainer.offsetWidth\n let count = Math.ceil(containerWidth / estimateSize)\n\n const onScroll = () => {\n const scrollLeft = scrollContainer.scrollLeft\n // 滚动条向右移动(界面向左运动)\n const isScrollRight = scrollLeft > scrollLeftRef.current\n if (isScrollRight) {\n if (scrollLeft > anchorRef.current.right) {\n updateBoundary(scrollLeft, count)\n }\n } else {\n if (scrollLeft < anchorRef.current.left) {\n updateBoundary(scrollLeft, count)\n }\n }\n\n scrollLeftRef.current = scrollLeft\n }\n\n scrollContainer.addEventListener('scroll', onScroll)\n\n let prevWidth = 0\n const stop = onResize(scrollContainer, ({ width }) => {\n if (width === prevWidth || width === 0) {\n return\n }\n prevWidth = width\n const scrollLeft = scrollContainer.scrollLeft\n count = Math.ceil(width / estimateSize)\n updateBoundary(scrollLeft, count)\n })\n return () => {\n scrollContainer.removeEventListener('scroll', onScroll)\n stop()\n }\n }, [bodyWrapper, estimateSize, updateBoundary, overscan, findAnchorRef, disabled])\n\n const sum = (startIndex: number, endIndex?: number) => {\n return rects.slice(startIndex, endIndex).reduce((a, b) => a + b.width, 0)\n }\n\n const fixedLeftWidth = lastFixedLeftIndex > -1 ? sum(0, lastFixedLeftIndex + 1) : 0\n const fixedRightWidth = firstFixedRightIndex > -1 ? sum(firstFixedRightIndex) : 0\n\n // 设置 column.fixed 时,对应列将不会虚拟化,所以 blank 需要去除这些列的宽度\n const leftBlank = Math.max(0, sum(0, startIndex) - fixedLeftWidth)\n const rightBlank = Math.max(0, sum(endIndex) - fixedRightWidth)\n\n const columnSlice = useMemo(() => {\n if (disabled) {\n return rawColumns\n }\n const result = [\n ...rawColumns.slice(0, lastFixedLeftIndex + 1),\n ...rawColumns.slice(startIndex, endIndex),\n ...rawColumns.slice(firstFixedRightIndex),\n ]\n const unionKey = new Set<Key>()\n return result.filter((column) => {\n const key = getKey(column)\n if (unionKey.has(key)) {\n return false\n }\n unionKey.add(key)\n return true\n })\n }, [disabled, rawColumns, startIndex, endIndex, lastFixedLeftIndex, firstFixedRightIndex])\n\n const descriptor = useMemo(() => {\n return columnSlice.reduce<ColumnDescriptor<T>[]>((result, column) => {\n const key = getKey(column)\n if (key === leftKey) {\n result.push({ key, type: 'normal', column })\n result.push({ key: '_blank_left', type: 'blank', width: leftBlank })\n } else if (key === rightKey) {\n result.push({ key: '_blank_right', type: 'blank', width: rightBlank })\n result.push({ key, type: 'normal', column })\n } else {\n result.push({ key, type: 'normal', column })\n }\n return result\n }, [])\n }, [columnSlice, leftKey, rightKey, leftBlank, rightBlank])\n\n const columns = useMemo(() => {\n return { columns: columnSlice, descriptor }\n }, [columnSlice, descriptor])\n\n return { columns, columnSlice, lastFixedLeftIndex, firstFixedRightIndex }\n}\n","import { useCallback, useRef } from 'react'\nimport { useStableFn } from './useStableFn'\n\nexport interface RowRect {\n index: number\n height: number\n top: number\n bottom: number\n}\n\nexport interface UseRowRectManagerOptions {\n itemCount: number\n /** 预计每行高度 */\n estimateSize: number\n onChange?: (index: number, height: number, rects: RowRect[]) => void\n}\n\nexport function useRowRectManager(options: UseRowRectManagerOptions) {\n const { itemCount, estimateSize, onChange } = options\n const rowHeightList = useRef<number[]>([])\n\n const calc = () => {\n for (let i = 0; i < itemCount; i += 1) {\n const target = rowHeightList.current[i] as number | undefined\n if (target == null) {\n rowHeightList.current[i] = estimateSize\n }\n }\n rowHeightList.current = rowHeightList.current.slice(0, itemCount)\n }\n\n // eslint-disable-next-line react-compiler/react-compiler\n calc()\n\n // const initialCount = useRef(itemCount)\n // const [, forceUpdate] = useReducer((x) => !x, false)\n\n // useLayoutEffect(() => {\n // for (let i = 0; i < itemCount; i += 1) {\n // const target = rowHeightList.current[i]\n // if (target == null) {\n // rowHeightList.current[i] = estimatedRowHeight\n // }\n // }\n\n // // 数据量骤减时如果 row 数量不匹配则会导致容器高度错误\n // rowHeightList.current = rowHeightList.current.slice(0, itemCount)\n\n // // 这里的 useLayoutEffect 是为了在第一次渲染时,根据数据条数预先填充 row 的高度,这样内容足够高,容器才能滚动\n // // 但是 dataSource 一般是异步获取的,第一次渲染时,length 是空的,所以无法进行填充,这样可能导致容器不能滚动\n // // 所以 dataSource 有数据后,再填充一次,但是因为 useLayoutEffect 是渲染结束后才调用的,此时填充数据还是导致容器不能滚动,\n // // 所以,只在第一次 dataSource 不为空时强制触发一次更新\n // // 可能正因为这一次强制渲染,所以 VirtualTable 内部很多组件可能多次渲染。尝试优化为 calc 函数\n // if (initialCount.current === 0 && itemCount > 0) {\n // initialCount.current = itemCount\n // forceUpdate()\n // }\n // }, [itemCount, estimatedRowHeight])\n\n const rectList = useRef<RowRect[]>([])\n const updateRectList = () => {\n const result: RowRect[] = []\n let top = 0\n rowHeightList.current.forEach((item, index) => {\n if (index !== 0) {\n top += item\n }\n result.push({ index, height: item, top, bottom: top + item })\n })\n rectList.current = result\n }\n\n // DOM 渲染结束后,进行高度测量,再修改 rowHeightList\n // 小心陷阱:当 table 父元素为 display: none 时,依然会触发 updateRowHeight 函数,并设置高度为 0\n const updateRowHeight = useStableFn((index: number, height: number) => {\n rowHeightList.current[index] = height\n updateRectList()\n onChange?.(index, height, rectList.current)\n })\n\n const sum = (startIndex: number, endIndex?: number) => {\n return rowHeightList.current.slice(startIndex, endIndex).reduce((a, b) => a + b, 0)\n }\n\n return {\n rowHeightList,\n updateRowHeight,\n sum,\n rects: useCallback(() => rectList.current, []),\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n// import type { Dispatch, SetStateAction } from 'react'\nimport type { ScrollElement } from '../../utils/dom'\nimport type { RowRect } from './useRowRectManager'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport { getScrollElement, isRoot, isWindow } from '../../utils/dom'\nimport { onResize } from '../utils/on-resize'\nimport { useRowRectManager } from './useRowRectManager'\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\ninterface UseRowVirtualizeOptions<T = any> {\n getOffsetTop: () => number\n dataSource: T[]\n getScroller: () => ScrollElement | undefined\n estimateSize: number\n overscan: number\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 // 锚点元素,当前虚拟列表中,最接近滚动容器顶部的元素\n const anchorRef = useRef<RowRect>({\n index: 0,\n height: estimateSize,\n top: 0,\n bottom: estimateSize,\n })\n\n const {\n rowHeightList,\n rects,\n updateRowHeight,\n sum,\n } = useRowRectManager({\n itemCount: rawData.length,\n estimateSize,\n onChange(index, _height, rowRects) {\n if (anchorRef.current.index === index) {\n anchorRef.current = rowRects[index]\n }\n },\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(rects(), 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, rects])\n\n // TODO: React Compiler 测试 topBlank 和 bottomBlank\n const topBlank = sum(0, startIndex)\n const bottomBlank = sum(endIndex)\n\n const dataSlice = useMemo(() => {\n return rawData.slice(startIndex, endIndex)\n }, [rawData, startIndex, endIndex])\n\n return {\n startIndex,\n endIndex,\n\n rowHeightList,\n updateRowHeight,\n\n topBlank,\n bottomBlank,\n\n dataSlice,\n }\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 { TableRowManagerContextType } from './context/row-manager'\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 { TableRowManager } from './context/row-manager'\nimport { StickyContext } from './context/sticky'\nimport TableHeader from './header'\nimport { useColumnVirtualize } from './hooks/useColumnVirtualize'\nimport { useRowVirtualize } from './hooks/useRowVirtualize'\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 false */\n virtualHeader?: boolean\n\n pipeline?: TablePipeline<T>\n\n getOffsetTop?: () => number\n}\n\nfunction VirtualTableCore<T>(\n props: VirtualTableCoreProps<T>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const {\n bodyRootRef,\n className,\n style,\n tableBodyClassName,\n tableBodyStyle,\n columns: rawColumns,\n dataSource: rawData,\n rowKey: rawRowKey = 'key',\n estimatedRowHeight = 46,\n estimatedColumnWidth,\n overscanRows = 5,\n overscanColumns = 3,\n stickyHeader,\n pipeline = (TablePipeline.defaultPipeline as TablePipeline<T>),\n rowClassName: rawRowClassName,\n onRow,\n getOffsetTop: getOffsetTopImpl,\n virtualHeader = false,\n } = props\n\n const rootNode = useRef<HTMLDivElement>(null)\n\n const headerWrapperRef = useRef<HTMLDivElement>(null)\n const bodyWrapperRef = useRef<HTMLDivElement>(null)\n const bodyRoot = useRef<HTMLTableElement>(null)\n const mergedBodyRootRef = useMergedRef(bodyRoot, bodyRootRef)\n const bodyRef = useRef<HTMLTableSectionElement>(null)\n\n const getScroller = useCallback(() => {\n const root = rootNode.current\n if (root == null) return\n return getScrollParent(root)\n }, [])\n\n const getOffsetTop = useCallback(() => {\n if (typeof getOffsetTopImpl === 'function') {\n return getOffsetTopImpl()\n }\n const scrollContainer = getScroller()\n if (scrollContainer === rootNode.current) {\n return 0\n }\n if (isWindow(scrollContainer) || isRoot(scrollContainer)) {\n const top = rootNode.current?.getBoundingClientRect().top ?? 0\n return window.scrollY + top\n }\n return rootNode.current?.offsetTop ?? 0\n }, [getOffsetTopImpl, getScroller])\n\n const {\n dataSource,\n columns: pipelineColumns,\n rowKey,\n rowClassName,\n\n render,\n renderRoot,\n renderContent,\n renderHeaderWrapper,\n renderHeaderRoot,\n renderHeader,\n renderHeaderRow,\n renderHeaderCell,\n renderBodyWrapper,\n renderBodyRoot,\n renderBody,\n renderRow,\n renderCell,\n\n onRow: onPipelineRow,\n } = pipeline.use({\n dataSource: rawData,\n rowKey: rawRowKey,\n columns: rawColumns,\n estimatedRowHeight,\n headerWrapperRef,\n bodyWrapperRef,\n bodyRootRef: bodyRoot,\n bodyRef,\n rootRef: rootNode,\n getOffsetTop,\n getScroller,\n })\n\n const [columnWidths, setColumnWidths] = useState(() => new Map<Key, number>())\n const columnWidthsRef = useRef(columnWidths)\n const updateColumnWidths = (value: Map<Key, number>) => {\n columnWidthsRef.current = value\n setColumnWidths(value)\n }\n\n const tableColumnsContext = useMemo<TableColumnsContextType>(() => {\n return {\n widthList: columnWidths,\n setWidthList: updateColumnWidths,\n }\n }, [columnWidths])\n\n const {\n startIndex,\n dataSlice,\n updateRowHeight,\n rowHeightList,\n topBlank,\n bottomBlank,\n } = useRowVirtualize({\n getOffsetTop,\n dataSource,\n getScroller,\n estimateSize: estimatedRowHeight,\n overscan: overscanRows,\n })\n\n const { columns } = useColumnVirtualize<T>({\n estimateSize: estimatedColumnWidth ?? 100,\n overscan: overscanColumns,\n columns: pipelineColumns,\n bodyWrapper: bodyWrapperRef,\n columnWidths,\n disabled: estimatedColumnWidth == null,\n })\n\n if (__DEV__) {\n pipelineColumns.forEach((column) => {\n if (column.width == null && column.minWidth == null) {\n console.warn('Missing `width` in column', column)\n }\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (getKey(column) == null) {\n console.error('Missing `dataIndex` or `key` in column', column)\n }\n })\n }\n\n const onRowClassName = useCallback((record: T, index: number) => {\n return clsx(rawRowClassName?.(record, index), rowClassName?.(record, index))\n }, [rawRowClassName, rowClassName])\n\n const onRowProps: OnRowType<T> = useCallback((record, index) => {\n return { ...onRow?.(record, index), ...onPipelineRow?.(record, index) }\n }, [onPipelineRow, onRow])\n\n const hasFixedLeftColumn = pipelineColumns.some((x) => isValidFixedLeft(x.fixed))\n const hasFixedRightColumn = pipelineColumns.some((x) => isValidFixedRight(x.fixed))\n\n const rowManager = useMemo((): TableRowManagerContextType => {\n return {\n getRowHeightList() {\n return rowHeightList.current\n },\n updateRowHeight,\n }\n }, [rowHeightList, updateRowHeight])\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={{\n ...tableBodyStyle,\n paddingBottom: bottomBlank,\n paddingTop: topBlank,\n }}\n columns={columns}\n rowKey={rowKey}\n dataSource={dataSlice}\n startIndex={startIndex}\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 <TableRowManager.Provider value={rowManager}>\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 </TableRowManager.Provider>\n )\n}\n\nif (__DEV__) {\n VirtualTableCore.displayName = 'VirtualTable.Core'\n}\n\nexport default memo(forwardRef(VirtualTableCore)) as <T>(\n props: VirtualTableCoreProps<T> & RefAttributes<HTMLDivElement>,\n) => ReactElement\n"],"names":["shallowEqualObjects","objA","objB","aKeys","Object","keys","bKeys","len","length","i","key","prototype","hasOwnProperty","call","shallowEqualArrays","arrA","arrB","isShallowEqual","value","oldValue","is","Array","isArray","hasObject","findIndex","x","every","state","index","Map","concat","oldKeys","values","oldValues","useShallowMemo","pickData","nextState","useRef","current","getKey","column","dataIndex","isValidFixedLeft","fixed","isValidFixedRight","isValidFixed","ColumnSizes","createContext","__DEV__","displayName","useColumnSizes","context","useContext","Error","Sticky","StickyContext","props","columns","children","_useColumnSizes","widthList","columnsFixedRecord","useMemo","map","stickySizes","left","leftOffset","reduce","res","item","_widthList$get","get","right","rightOffset","reduceRight","_widthList$get2","result","set","shallowMemoFixedRecord","shallowMemoStickySizes","stickyState","size","_jsx","Provider","useTableSticky","pipelineRender","node","render","options","getTableCellContent","data","_render","rowData","Cell","_onCell","className","style","rowIndex","renderCell","restProps","_objectWithoutPropertiesLoose","_excluded","align","onCell","_useTableSticky","_ref","extraClassName","extraStyle","colSpan","rowSpan","extraProps","_excluded2","_extends","clsx","undefined","memo","Colgroup","colRef","type","width","ref","instance","minWidth","overflowStylePatterns","isElement","Node","ELEMENT_NODE_TYPE","nodeType","getScrollParent","el","root","_el$ownerDocument$def","window","document","body","_window$getComputedSt","getComputedStyle","overflow","overflowY","overflowX","test","parentNode","ownerDocument","defaultView","isWindow","arg","toString","isDocument","isRoot","getScrollElement","scrollingElement","useCalcSize","getScroller","_useState","useState","scrollContainerWidth","setScrollContainerWidth","_useState2","scrollContainerHeight","setScrollContainerHeight","_useState3","tableWidth","setTableWidth","_useState4","tableHeight","setTableHeight","scrollerContainerRef","useLayoutEffect","scrollerContainer","scroller","observer","ResizeObserver","entries","_entries$0$contentRec","contentRect","height","observe","disconnect","_entries$0$contentRec2","ContainerSize","ContainerSizeContext","_useCalcSize","useContainerSize","HorizontalScroll","HorizontalScrollContext","listenerMap","listen","listener","notify","scrollLeft","rAF","requestAnimationFrame","fn","forEach","itemKey","useHorizontalScrollContext","TableRowManager","useTableRowManager","useStableFn","callback","stableFn","useCallback","_len","arguments","args","_key","apply","createMiddleware","hook","cache","useMiddleware","ctx","_cache$current","shakeUnsafeHooks","hooks","filter","priority","TablePipeline","defineProperty","use","bind","_proto","setHooks","renderFunctionMap","renderRoot","renderContent","renderHeaderWrapper","renderHeaderRoot","renderHeader","renderHeaderRow","renderHeaderCell","renderBodyWrapper","renderBodyRoot","renderBody","renderRow","rowClassNameFunctions","onRowFunctions","slice","sort","a","b","nextCtx","rowClassName","onRow","rest","target","push","_ref2","renders","record","useTablePipeline","extraPipeline","pipeline","cached","_extraPipeline$hooks","nextHooks","findLastIndex","arr","predicate","Row","_onRow","columnDescriptor","_useTableRowManager","updateRowHeight","descriptor","lastFixedLeftColumnIndex","firstFixedRightColumnIndex","offsetHeight","assignRef","mergeRefs","refs","useMergedRef","_len2","_key2","TableBody","bodyWrapperRef","bodyRootRef","bodyRef","dataSource","rowKey","startIndex","_useHorizontalScrollC","setWidthList","columnWidthsRef","snap","bodyNode","e","_rowKey","tableNode","_jsxs","offsetWidth","wrapperRef","useEffect","onScroll","nextScrollLeft","dispose","addEventListener","removeEventListener","mergedRef","TableHeader","stickyHeader","headerWrapperRef","row","_column$onHeaderCell","onHeaderCell","thClassName","thStyle","Fragment","createElement","scope","title","columnWidths","theadNode","top","Number","isFinite","onResize","innerWidth","innerHeight","rect","anchorQuery","rects","mid","Math","floor","findFirstFixedRightIndex","findLastFixedLeftIndex","useColumnVirtualize","estimateSize","overscan","rawColumns","bodyWrapper","_options$disabled","disabled","lastFixedLeftIndex","firstFixedRightIndex","leftKey","rightKey","setStartIndex","endIndex","setEndIndex","_columnWidths$get","anchorRef","findAnchorRef","updateBoundary","count","anchor","max","scrollLeftRef","scrollContainer","containerWidth","ceil","isScrollRight","prevWidth","stop","sum","fixedLeftWidth","fixedRightWidth","leftBlank","rightBlank","columnSlice","unionKey","Set","has","add","useRowRectManager","itemCount","onChange","rowHeightList","calc","rectList","updateRectList","bottom","scrollTop","useRowVirtualize","getOffsetTop","rawData","_useRowRectManager","_height","rowRects","scrollTopRef","initial","container","getScrollTop","offsetTop","scrollY","element","calcCount","scrollerContainerHeight","prevCount","scrollElement","isScrollDown","prevHeight","stopListen","nextStartIndex","nextEndIndex","topBlank","bottomBlank","dataSlice","TableRoot","hasFixedLeftColumn","hasFixedRightColumn","bodyScrollContainer","rootNode","hasFixedLeft","setHasFixedLeft","hasFixedRight","setHasFixedRight","onCheckHasFixedEdge","clientWidth","scrollWidth","_scrollLeft","forwardRef","VirtualTableCore","tableBodyClassName","tableBodyStyle","_props$rowKey","rawRowKey","_props$estimatedRowHe","estimatedRowHeight","estimatedColumnWidth","_props$overscanRows","overscanRows","_props$overscanColumn","overscanColumns","_props$pipeline","defaultPipeline","rawRowClassName","getOffsetTopImpl","_props$virtualHeader","virtualHeader","bodyRoot","mergedBodyRootRef","_rootNode$current$off","_rootNode$current2","_rootNode$current$get","_rootNode$current","getBoundingClientRect","_pipeline$use","rootRef","pipelineColumns","onPipelineRow","setColumnWidths","updateColumnWidths","tableColumnsContext","_useRowVirtualize","_useColumnVirtualize","console","warn","error","onRowClassName","onRowProps","some","rowManager","getRowHeightList","fullHeaderColumns","headerColumns","contentNode","_Fragment","paddingBottom","paddingTop","rootMergedRef","table"],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import * as _are_visual_virtual_table from '@are-visual/virtual-table';
2
+ import { ColumnType } from '@are-visual/virtual-table';
3
+
4
+ declare module '@are-visual/virtual-table' {
5
+ interface ColumnExtra {
6
+ disableResize?: boolean;
7
+ /** Resize 时限制最大列宽 */
8
+ maxWidth?: number;
9
+ }
10
+ }
11
+ type Constraint<T> = number | ((column: ColumnType<T>) => (number | undefined | null));
12
+ interface ResizeOptions<T = any> {
13
+ storageKey: string;
14
+ min?: Constraint<T>;
15
+ max?: Constraint<T>;
16
+ }
17
+ declare const columnResize: <T = any>(args?: ResizeOptions<T> | undefined) => _are_visual_virtual_table.Middleware<T>;
18
+
19
+ export { type ResizeOptions, columnResize };
@@ -0,0 +1,130 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { createMiddleware, getKey } from '@are-visual/virtual-table';
3
+ import { useState, useCallback, isValidElement, useMemo } from 'react';
4
+ import { Resizable } from 'react-resizable';
5
+
6
+ function isObject(obj) {
7
+ return typeof obj === 'object' && obj != null;
8
+ }
9
+ function getValue(maybeValue, args) {
10
+ if (typeof maybeValue === 'function') {
11
+ return maybeValue(args);
12
+ }
13
+ return maybeValue;
14
+ }
15
+ function getConstraintValue(constraint, column) {
16
+ if (constraint == null) return undefined;
17
+ const result = getValue(constraint, column);
18
+ if (result == null) {
19
+ return undefined;
20
+ }
21
+ return [result, 0];
22
+ }
23
+ const resizeStorage = {
24
+ key(storageKey) {
25
+ return `${storageKey}_resize`;
26
+ },
27
+ get(storageKey) {
28
+ try {
29
+ const raw = window.localStorage.getItem(resizeStorage.key(storageKey)) ?? '{}';
30
+ const result = JSON.parse(raw);
31
+ if (isObject(result)) {
32
+ Object.entries(result).forEach(_ref => {
33
+ let [k, v] = _ref;
34
+ if (!Number.isFinite(v)) {
35
+ delete result[k];
36
+ }
37
+ });
38
+ return result;
39
+ }
40
+ return {};
41
+ } catch (_err) {
42
+ return {};
43
+ }
44
+ },
45
+ set(storageKey, value) {
46
+ window.localStorage.setItem(resizeStorage.key(storageKey), JSON.stringify(value));
47
+ }
48
+ };
49
+ function useColumnResize(ctx, args) {
50
+ const {
51
+ storageKey,
52
+ min,
53
+ max
54
+ } = args ?? {};
55
+ const {
56
+ columns: rawColumns
57
+ } = ctx;
58
+ const [columnWidths, setColumnWidths] = useState(() => {
59
+ if (storageKey == null) {
60
+ return {};
61
+ }
62
+ return resizeStorage.get(storageKey);
63
+ });
64
+ const handleResize = useCallback((columnKey, newWidth) => {
65
+ setColumnWidths(prevState => {
66
+ const result = {
67
+ ...prevState,
68
+ [`${columnKey}`]: newWidth
69
+ };
70
+ if (storageKey != null) {
71
+ resizeStorage.set(storageKey, result);
72
+ }
73
+ return result;
74
+ });
75
+ }, [storageKey]);
76
+ const renderHeaderCell = useCallback((children, options) => {
77
+ const {
78
+ column,
79
+ columnWidths
80
+ } = options;
81
+ if (column.disableResize) {
82
+ return children;
83
+ }
84
+ const key = getKey(column);
85
+ const width = Number.isFinite(column.width) ? column.width : columnWidths.get(key) ?? 0;
86
+ if (process.env.NODE_ENV === 'development') {
87
+ if (/*#__PURE__*/isValidElement(children) && children.type === Resizable) {
88
+ throw new Error('The columnResize plugin was registered multiple times.');
89
+ }
90
+ }
91
+ return jsx(Resizable, {
92
+ width: width,
93
+ axis: "x",
94
+ minConstraints: getConstraintValue(column.minWidth ?? min, column),
95
+ maxConstraints: getConstraintValue(column.maxWidth ?? max, column),
96
+ handle: jsx("div", {
97
+ className: "virtual-table-column-resize-handle"
98
+ }),
99
+ onResize: (_e, _ref2) => {
100
+ let {
101
+ size
102
+ } = _ref2;
103
+ handleResize(key, size.width);
104
+ },
105
+ children: children
106
+ });
107
+ }, [handleResize, max, min]);
108
+ const columns = useMemo(() => {
109
+ return rawColumns.map(column => {
110
+ const key = getKey(column).toString();
111
+ const width = columnWidths[key];
112
+ if (width != null && width !== column.width) {
113
+ return {
114
+ ...column,
115
+ width
116
+ };
117
+ }
118
+ return column;
119
+ });
120
+ }, [columnWidths, rawColumns]);
121
+ return {
122
+ ...ctx,
123
+ columns,
124
+ renderHeaderCell
125
+ };
126
+ }
127
+ const columnResize = createMiddleware(useColumnResize);
128
+
129
+ export { columnResize };
130
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../packages/virtual-table/src/middleware/column-resize/index.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { ColumnType, MiddlewareContext, MiddlewareRenderHeaderCell, MiddlewareResult } from '@are-visual/virtual-table'\nimport type { Key } from 'react'\nimport { createMiddleware, getKey } from '@are-visual/virtual-table'\nimport { isValidElement, useCallback, useMemo, useState } from 'react'\nimport { Resizable } from 'react-resizable'\n\ndeclare module '@are-visual/virtual-table' {\n interface ColumnExtra {\n disableResize?: boolean\n /** Resize 时限制最大列宽 */\n maxWidth?: number\n }\n}\n\ntype Constraint<T> = number | ((column: ColumnType<T>) => (number | undefined | null))\n\nexport interface ResizeOptions<T = any> {\n storageKey: string\n min?: Constraint<T>\n max?: Constraint<T>\n}\n\nfunction isObject(obj: unknown): obj is Record<string, unknown> {\n return typeof obj === 'object' && obj != null\n}\n\nfunction getValue<T, Args>(maybeValue: T | ((args: Args) => T), args: Args): T {\n if (typeof maybeValue === 'function') {\n return (maybeValue as (args: Args) => T)(args)\n }\n return maybeValue\n}\n\nfunction getConstraintValue<T>(\n constraint: Constraint<T> | undefined,\n column: ColumnType<T>,\n): [width: number, height: number] | undefined {\n if (constraint == null) return undefined\n const result = getValue(constraint, column)\n if (result == null) {\n return undefined\n }\n return [result, 0]\n}\n\nconst resizeStorage = {\n key(storageKey: string) {\n return `${storageKey}_resize`\n },\n get(storageKey: string): Record<string, number> {\n try {\n const raw = window.localStorage.getItem(resizeStorage.key(storageKey)) ?? '{}'\n const result = JSON.parse(raw)\n if (isObject(result)) {\n Object.entries(result).forEach(([k, v]) => {\n if (!Number.isFinite(v)) {\n delete result[k]\n }\n })\n return result as Record<string, number>\n }\n return {}\n } catch (_err) {\n return {}\n }\n },\n set(storageKey: string, value: Record<string, number>) {\n window.localStorage.setItem(resizeStorage.key(storageKey), JSON.stringify(value))\n },\n}\n\nfunction useColumnResize<T = any>(\n ctx: MiddlewareContext<T>,\n args?: ResizeOptions<T>,\n): MiddlewareResult<T> {\n const { storageKey, min, max } = args ?? {}\n const { columns: rawColumns } = ctx\n const [columnWidths, setColumnWidths] = useState<Record<string, number>>(() => {\n if (storageKey == null) {\n return {}\n }\n return resizeStorage.get(storageKey)\n })\n\n const handleResize = useCallback((columnKey: Key, newWidth: number) => {\n setColumnWidths((prevState) => {\n const result = {\n ...prevState,\n [`${columnKey}`]: newWidth,\n }\n if (storageKey != null) {\n resizeStorage.set(storageKey, result)\n }\n return result\n })\n }, [storageKey])\n\n const renderHeaderCell: MiddlewareRenderHeaderCell<T> = useCallback((children, options) => {\n const { column, columnWidths } = options\n\n if (column.disableResize) {\n return children\n }\n\n const key = getKey(column)\n\n const width = Number.isFinite(column.width) ? (column.width as number) : (columnWidths.get(key) ?? 0)\n\n if (__DEV__) {\n if (isValidElement(children) && children.type === Resizable) {\n throw new Error('The columnResize plugin was registered multiple times.')\n }\n }\n\n return (\n <Resizable\n width={width}\n axis=\"x\"\n minConstraints={getConstraintValue(column.minWidth ?? min, column)}\n maxConstraints={getConstraintValue(column.maxWidth ?? max, column)}\n handle={(\n <div className=\"virtual-table-column-resize-handle\" />\n )}\n onResize={(_e, { size }) => {\n handleResize(key, size.width)\n }}\n >\n {children}\n </Resizable>\n )\n }, [handleResize, max, min])\n\n const columns = useMemo(() => {\n return rawColumns.map((column) => {\n const key = getKey(column).toString()\n const width = columnWidths[key] as number | undefined\n if (width != null && width !== column.width) {\n return { ...column, width }\n }\n return column\n })\n }, [columnWidths, rawColumns])\n\n return { ...ctx, columns, renderHeaderCell }\n}\n\nexport const columnResize = createMiddleware(useColumnResize)\n"],"names":["isObject","obj","getValue","maybeValue","args","getConstraintValue","constraint","column","undefined","result","resizeStorage","key","storageKey","get","raw","window","localStorage","getItem","JSON","parse","Object","entries","forEach","_ref","k","v","Number","isFinite","_err","set","value","setItem","stringify","useColumnResize","ctx","min","max","columns","rawColumns","columnWidths","setColumnWidths","useState","handleResize","useCallback","columnKey","newWidth","prevState","renderHeaderCell","children","options","disableResize","getKey","width","__DEV__","isValidElement","type","Resizable","Error","_jsx","axis","minConstraints","minWidth","maxConstraints","maxWidth","handle","className","onResize","_e","_ref2","size","useMemo","map","toString","columnResize","createMiddleware"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ .virtual-table-column-resize-handle {
2
+ position: absolute;
3
+ right: 0;
4
+ top: 0;
5
+ width: var(--virtual-table-column-resize-handle-width, 10px);
6
+ height: 100%;
7
+ cursor: col-resize;
8
+ }
@@ -0,0 +1,10 @@
1
+ $virtual-table-column-resize-handle-width: var(--virtual-table-column-resize-handle-width, 10px);
2
+
3
+ .virtual-table-column-resize-handle {
4
+ position: absolute;
5
+ right: 0;
6
+ top: 0;
7
+ width: $virtual-table-column-resize-handle-width;
8
+ height: 100%;
9
+ cursor: col-resize;
10
+ }
@@ -0,0 +1,10 @@
1
+ import * as _are_visual_virtual_table from '@are-visual/virtual-table';
2
+ import { ReactNode, ComponentType } from 'react';
3
+
4
+ interface EmptyOptions {
5
+ children: ReactNode | ComponentType;
6
+ visible?: boolean;
7
+ }
8
+ declare const tableEmpty: <T = any>(args: EmptyOptions) => _are_visual_virtual_table.Middleware<T>;
9
+
10
+ export { type EmptyOptions, tableEmpty };
@@ -0,0 +1,73 @@
1
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
+ import { useContainerSize, createMiddleware } from '@are-visual/virtual-table';
3
+ import { useMemo, createElement, useCallback, isValidElement, cloneElement } from 'react';
4
+
5
+ const EmptyRow = props => {
6
+ const {
7
+ colSpan,
8
+ children
9
+ } = props;
10
+ const {
11
+ tableWidth
12
+ } = useContainerSize();
13
+ return jsx("tr", {
14
+ children: jsx("td", {
15
+ colSpan: colSpan,
16
+ children: jsx("div", {
17
+ style: {
18
+ boxSizing: 'border-box',
19
+ position: 'sticky',
20
+ left: 0,
21
+ top: 0,
22
+ padding: 16,
23
+ width: tableWidth <= 0 ? undefined : tableWidth
24
+ },
25
+ children: children
26
+ })
27
+ })
28
+ });
29
+ };
30
+
31
+ function useTableEmpty(ctx, args) {
32
+ const {
33
+ children: component,
34
+ visible = true
35
+ } = args;
36
+ const {
37
+ dataSource
38
+ } = ctx;
39
+ const isNoData = !Array.isArray(dataSource) ? true : dataSource.length === 0;
40
+ const showEmpty = isNoData && visible;
41
+ const node = useMemo(() => {
42
+ if (typeof component === 'function') {
43
+ return /*#__PURE__*/createElement(component);
44
+ }
45
+ return component;
46
+ }, [component]);
47
+ const renderBody = useCallback((children, options) => {
48
+ const {
49
+ columns
50
+ } = 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
+ return jsxs(Fragment, {
59
+ children: [children, node]
60
+ });
61
+ }, [node]);
62
+ if (!showEmpty) {
63
+ return ctx;
64
+ }
65
+ return {
66
+ ...ctx,
67
+ renderBody
68
+ };
69
+ }
70
+ const tableEmpty = createMiddleware(useTableEmpty);
71
+
72
+ export { tableEmpty };
73
+ //# sourceMappingURL=index.js.map