@are-visual/virtual-table 0.1.1 → 0.1.3
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 +1 -1
- package/index.esm.js +8 -13
- package/index.esm.js.map +1 -1
- package/middleware/selection/index.js +1 -2
- package/middleware/selection/index.js.map +1 -1
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -175,7 +175,7 @@ declare const _default$3: <T>(props: CellProps<T>) => ReactElement;
|
|
|
175
175
|
|
|
176
176
|
interface ColgroupProps {
|
|
177
177
|
columns: ColumnDescriptor[];
|
|
178
|
-
onColumnSizesMeasure?: (columnSizes: Map<Key, number
|
|
178
|
+
onColumnSizesMeasure?: (columnSizes: Map<Key, number>) => void;
|
|
179
179
|
}
|
|
180
180
|
declare const _default$2: react.NamedExoticComponent<ColgroupProps>;
|
|
181
181
|
|
package/index.esm.js
CHANGED
|
@@ -290,15 +290,15 @@ var Colgroup = function Colgroup(props) {
|
|
|
290
290
|
var columns = props.columns,
|
|
291
291
|
onColumnSizesMeasure = props.onColumnSizesMeasure;
|
|
292
292
|
var enableMeasure = onColumnSizesMeasure != null;
|
|
293
|
-
var columnSizes =
|
|
293
|
+
var columnSizes = new Map();
|
|
294
294
|
var prevColumnSizes = useRef(new Map());
|
|
295
295
|
return jsx("colgroup", {
|
|
296
296
|
ref: function ref() {
|
|
297
297
|
if (!enableMeasure) return;
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
298
|
+
if (!isShallowEqual(columnSizes, prevColumnSizes.current)) {
|
|
299
|
+
onColumnSizesMeasure(columnSizes);
|
|
300
|
+
prevColumnSizes.current = columnSizes;
|
|
301
|
+
}
|
|
302
302
|
},
|
|
303
303
|
children: columns.map(function (item) {
|
|
304
304
|
var key = item.key;
|
|
@@ -314,7 +314,7 @@ var Colgroup = function Colgroup(props) {
|
|
|
314
314
|
return jsx("col", {
|
|
315
315
|
ref: function ref(node) {
|
|
316
316
|
if (node == null || !enableMeasure) return;
|
|
317
|
-
columnSizes.
|
|
317
|
+
columnSizes.set(key, node.offsetWidth);
|
|
318
318
|
},
|
|
319
319
|
style: {
|
|
320
320
|
width: column.width,
|
|
@@ -676,7 +676,7 @@ var TablePipeline = /*#__PURE__*/function () {
|
|
|
676
676
|
renders = _ref2[1];
|
|
677
677
|
if (renders.length > 0) {
|
|
678
678
|
context.current[key] = function (children, args) {
|
|
679
|
-
// reduce 把 [render1, render2] 转为 render1(
|
|
679
|
+
// reduce 把 [render1, render2] 转为 render2(render1(children))
|
|
680
680
|
return renders.reduce(function (node, render) {
|
|
681
681
|
// @ts-expect-error: There is no way to declare the type correctly, but it works at runtime.
|
|
682
682
|
return render(node, args);
|
|
@@ -1122,11 +1122,6 @@ function TableBody(props) {
|
|
|
1122
1122
|
});
|
|
1123
1123
|
var _useColumnSizes = useColumnSizes(),
|
|
1124
1124
|
setWidthList = _useColumnSizes.setWidthList;
|
|
1125
|
-
var onColumnSizesMeasure = useCallback(function (columnSizes, oldValue) {
|
|
1126
|
-
if (!isShallowEqual(oldValue, columnSizes)) {
|
|
1127
|
-
setWidthList(columnSizes);
|
|
1128
|
-
}
|
|
1129
|
-
}, [setWidthList]);
|
|
1130
1125
|
var tableNode = pipelineRender(jsxs("table", {
|
|
1131
1126
|
className: clsx(className, 'virtual-table-body'),
|
|
1132
1127
|
style: _extends({}, style, {
|
|
@@ -1136,7 +1131,7 @@ function TableBody(props) {
|
|
|
1136
1131
|
ref: bodyRootRef,
|
|
1137
1132
|
children: [jsx(Colgroup$1, {
|
|
1138
1133
|
columns: descriptor,
|
|
1139
|
-
onColumnSizesMeasure:
|
|
1134
|
+
onColumnSizesMeasure: setWidthList
|
|
1140
1135
|
}), bodyNode]
|
|
1141
1136
|
}), renderBodyRoot, {
|
|
1142
1137
|
columns: columns,
|
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'\n\nexport interface ColgroupProps {\n columns: ColumnDescriptor[]\n onColumnSizesMeasure?: (columnSizes: Map<Key, number>, oldColumnSizes: Map<Key, number>) => void\n}\n\nconst Colgroup: FC<ColgroupProps> = (props) => {\n const { columns, onColumnSizesMeasure } = props\n\n const enableMeasure = onColumnSizesMeasure != null\n const columnSizes = useRef(new Map<Key, number>())\n const prevColumnSizes = useRef(new Map<Key, number>())\n\n return (\n <colgroup\n ref={() => {\n if (!enableMeasure) return\n const result = columnSizes.current\n onColumnSizesMeasure(result, prevColumnSizes.current)\n prevColumnSizes.current = result\n columnSizes.current = new Map()\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.current.set(key, node.offsetWidth)\n }}\n style={{\n width: column.width,\n minWidth: column.minWidth,\n }}\n />\n )\n })}\n </colgroup>\n )\n}\n\nexport default memo(Colgroup)\n","export type ScrollElement = HTMLElement | Window\n\nconst overflowStylePatterns = /auto|scroll|overlay|hidden/\n\nfunction isElement(node: unknown): node is Node {\n if (!(node instanceof Node)) {\n return false\n }\n const ELEMENT_NODE_TYPE = 1\n return node.nodeType === ELEMENT_NODE_TYPE\n}\n\nexport function getScrollParent(\n el: Element,\n root: ScrollElement | null | undefined = window,\n): ScrollElement {\n let node = el\n\n while (node !== root && isElement(node)) {\n if (node === document.body) {\n return root as HTMLElement\n }\n const { overflow, overflowY, overflowX } = window.getComputedStyle(node)\n if (overflowStylePatterns.test(overflow + overflowY + overflowX)) {\n return node as HTMLElement\n }\n node = node.parentNode as Element\n }\n return el.ownerDocument.defaultView ?? window\n}\n\nexport function isWindow(arg: unknown): arg is Window {\n return Object.prototype.toString.call(arg) === '[object Window]'\n}\n\nexport function isDocument(arg: unknown): arg is Document {\n return Object.prototype.toString.call(arg) === '[object HTMLDocument]'\n}\n\nexport function isRoot(arg: unknown): arg is HTMLElement {\n return Object.prototype.toString.call(arg) === '[object HTMLHtmlElement]'\n}\n\nexport function getScrollElement(el: unknown): Element {\n if (isDocument(el)) {\n return el.scrollingElement!\n }\n if (isElement(el)) {\n return el as Element\n }\n return document.scrollingElement!\n}\n","import type { RefObject } from 'react'\nimport type { ScrollElement } from '../../utils/dom'\nimport { useLayoutEffect, useRef, useState } from 'react'\nimport { isWindow } from '../../utils/dom'\n\nexport interface CalcSizeOptions {\n getScroller: () => ScrollElement | undefined\n root: RefObject<HTMLDivElement>\n}\n\nexport function useCalcSize(options: CalcSizeOptions) {\n const { getScroller, root } = options\n\n const [scrollContainerWidth, setScrollContainerWidth] = useState(0)\n const [scrollContainerHeight, setScrollContainerHeight] = useState(0)\n\n const [tableWidth, setTableWidth] = useState(0)\n const [tableHeight, setTableHeight] = useState(0)\n\n const scrollerContainerRef = useRef<HTMLElement | null>(null)\n\n useLayoutEffect(() => {\n const scrollerContainer = getScroller()\n if (scrollerContainer == null) return\n let scroller: HTMLElement\n if (isWindow(scrollerContainer)) {\n scroller = document.scrollingElement as HTMLElement\n } else {\n scroller = scrollerContainer\n }\n scrollerContainerRef.current = scroller\n const observer = new ResizeObserver((entries) => {\n const { width, height } = entries[0].contentRect\n setScrollContainerWidth(width)\n setScrollContainerHeight(height)\n })\n observer.observe(scroller)\n return () => {\n observer.disconnect()\n }\n }, [getScroller])\n\n useLayoutEffect(() => {\n const node = root.current\n if (node == null) return\n const observer = new ResizeObserver((entries) => {\n const { width, height } = entries[0].contentRect\n setTableWidth(width)\n setTableHeight(height)\n })\n observer.observe(node)\n return () => {\n observer.disconnect()\n }\n }, [root])\n\n return {\n scrollContainerWidth,\n scrollContainerHeight,\n tableWidth,\n tableHeight,\n }\n}\n","import type { PropsWithChildren } from 'react'\nimport type { CalcSizeOptions } from '../hooks/useCalcSize'\nimport { createContext, useContext, useMemo } from 'react'\nimport { useCalcSize } from '../hooks/useCalcSize'\n\nexport interface ContainerSizeState {\n scrollContainerWidth: number\n scrollContainerHeight: number\n tableWidth: number\n tableHeight: number\n}\n\nconst ContainerSize = createContext<ContainerSizeState | null>(null)\n\nexport function ContainerSizeContext(props: PropsWithChildren<CalcSizeOptions>) {\n const { getScroller, root, children } = props\n\n const {\n scrollContainerHeight,\n scrollContainerWidth,\n tableHeight,\n tableWidth,\n } = useCalcSize({ getScroller, root })\n\n const state = useMemo((): ContainerSizeState => {\n return {\n scrollContainerWidth,\n scrollContainerHeight,\n tableWidth,\n tableHeight,\n }\n }, [scrollContainerWidth, scrollContainerHeight, tableWidth, tableHeight])\n\n return (\n <ContainerSize.Provider value={state}>\n {children}\n </ContainerSize.Provider>\n )\n}\n\nexport function useContainerSize() {\n const context = useContext(ContainerSize)\n if (context == null) {\n throw new Error('useContainerSize provider not found')\n }\n return context\n}\n","import type { PropsWithChildren } from 'react'\nimport { createContext, useContext, useMemo, useRef } from 'react'\n\ntype Listener = (scrollLeft: number, node: HTMLElement) => void\n\nexport interface HorizontalScrollContextState {\n listen: (key: string, listener: Listener) => () => void\n notify: (key: string, options: { scrollLeft: () => number, node: HTMLElement }) => void\n}\n\nconst HorizontalScroll = createContext<HorizontalScrollContextState | null>(null)\n\nif (__DEV__) {\n HorizontalScroll.displayName = 'VirtualTable.HorizontalScroll'\n}\n\nexport function HorizontalScrollContext(props: PropsWithChildren) {\n const { children } = props\n\n const listenerMap = useRef(new Map<string, Listener>())\n const context = useMemo((): HorizontalScrollContextState => {\n const skipEvent = new Set<string>()\n return {\n listen(key, listener) {\n listenerMap.current.set(key, (scrollLeft, node) => {\n listener(scrollLeft, node)\n })\n return () => {\n listenerMap.current.delete(key)\n }\n },\n notify(key, options) {\n if (skipEvent.has(key)) {\n skipEvent.delete(key)\n return\n }\n const { scrollLeft, node } = options\n let rAF = window.requestAnimationFrame as ((fn: () => void) => void) | undefined\n if (rAF == null) {\n rAF = (fn: () => void) => {\n fn()\n }\n }\n listenerMap.current.forEach((listener, itemKey) => {\n if (key === itemKey) return\n skipEvent.add(itemKey)\n rAF(() => {\n listener(scrollLeft(), node)\n })\n })\n },\n }\n }, [])\n\n return <HorizontalScroll.Provider value={context}>{children}</HorizontalScroll.Provider>\n}\n\nexport function useHorizontalScrollContext() {\n const context = useContext(HorizontalScroll)\n\n if (context == null) {\n throw new Error('useHorizontalScrollContext provider not found')\n }\n\n return context\n}\n","import type { Key } from 'react'\nimport { createContext, useContext } from 'react'\n\nexport interface TableRowManagerContextType {\n getRowHeightList: () => number[]\n /**\n * @param index rowIndex\n * @param key 唯一的 key,用于去重\n * @param height 行高\n */\n updateRowHeight: (index: number, key: Key, height: number) => void\n}\n\nexport const TableRowManager = createContext<TableRowManagerContextType | null>(null)\n\nif (__DEV__) {\n TableRowManager.displayName = 'VirtualTable.RowManager'\n}\n\nexport function useTableRowManager() {\n const context = useContext(TableRowManager)\n if (context == null) {\n throw new Error('useTableRowManager provider not found')\n }\n return context\n}\n","import { useCallback, useLayoutEffect, useRef } from 'react'\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport function useStableFn<T extends Function>(callback: T): T {\n const fn = useRef<T | null>(null)\n useLayoutEffect(() => {\n fn.current = callback\n })\n\n const stableFn = useCallback((...args: unknown[]) => {\n return fn.current?.(...args) as unknown\n }, []) as unknown as T\n\n return stableFn\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Middleware, MiddlewareContext, MiddlewareResult } from './types'\nimport { isShallowEqual } from '../../utils/equal'\n\n/**\n * 创建中间件,内部会浅比较 options,只有 options 改变才会返回新的函数。\n */\nfunction createMiddleware<T, Args extends any[]>(\n hook: (ctx: MiddlewareContext<T>, ...args: Args) => MiddlewareResult<T>,\n): (...args: Args) => Middleware<T> {\n const cache = {\n current: null as Middleware<T> | null,\n options: null as Args | null | undefined,\n }\n\n return (...options: Args): Middleware<T> => {\n const useMiddleware: Middleware<T> = (ctx) => hook(ctx, ...options)\n\n if (isShallowEqual(options, cache.options)) {\n return cache.current ?? useMiddleware\n }\n\n cache.options = options\n cache.current = useMiddleware\n\n return useMiddleware\n }\n}\n\nexport type { MiddlewareResult }\nexport { createMiddleware }\n","import type { ReactNode } from 'react'\nimport type { OnRowType } from '../types'\nimport type { Middleware, MiddlewareContext, MiddlewareRenders, MiddlewareResult } from './types'\nimport clsx from 'clsx'\n\nexport interface Hook<T> { priority: number, hook: Middleware<T> }\nexport type UnsafeHook<T> = Middleware<T> | undefined | null | Hook<T>\n\ntype RenderFunctions<T> = {\n [K in keyof T]: (T[K])[]\n}\n\nexport function shakeUnsafeHooks<T>(hooks: UnsafeHook<T>[]): Hook<T>[] {\n if (Array.isArray(hooks)) {\n return hooks.filter((x) => {\n return x != null && (typeof x === 'function' || typeof x.hook === 'function')\n }).map((hook): Hook<T> => {\n if (typeof hook === 'function') {\n return { priority: 100, hook }\n }\n return hook!\n })\n }\n return []\n}\n\nexport class TablePipeline<T> {\n constructor() {\n this.use = this.use.bind(this)\n }\n\n hooks: Hook<T>[] = []\n\n setHooks(value: Hook<T>[]) {\n this.hooks = value\n }\n\n use(options: MiddlewareContext<T>): MiddlewareResult<T> {\n if (this.hooks.length === 0) {\n return options\n }\n\n const context: { current: MiddlewareResult<T> } = { current: options }\n\n const renderFunctionMap: RenderFunctions<Required<MiddlewareRenders>> = {\n render: [],\n renderRoot: [],\n renderContent: [],\n renderHeaderWrapper: [],\n renderHeaderRoot: [],\n renderHeader: [],\n renderHeaderRow: [],\n renderHeaderCell: [],\n renderBodyWrapper: [],\n renderBodyRoot: [],\n renderBody: [],\n renderRow: [],\n renderCell: [],\n }\n\n const rowClassNameFunctions: ((record: T, index: number) => string)[] = []\n const onRowFunctions: OnRowType<T>[] = []\n\n const hooks = this.hooks.slice()\n hooks.sort((a, b) => a.priority - b.priority)\n\n hooks.map((x) => x.hook).forEach((hook) => {\n const nextCtx = hook(context.current)\n const {\n render: _render,\n renderRoot: _renderRoot,\n renderContent: _renderContent,\n renderHeaderWrapper: _renderHeaderWrapper,\n renderHeaderRoot: _renderHeaderRoot,\n renderHeader: _renderHeader,\n renderHeaderRow: _renderHeaderRow,\n renderHeaderCell: _renderHeaderCell,\n renderBodyWrapper: _renderBodyWrapper,\n renderBodyRoot: _renderBodyRoot,\n renderBody: _renderBody,\n renderRow: _renderRow,\n renderCell: _renderCell,\n\n rowClassName,\n onRow,\n ...rest\n } = nextCtx\n\n Object.entries(renderFunctionMap).forEach(([key, value]) => {\n const target = nextCtx[key as keyof MiddlewareRenders]\n if (typeof target === 'function') {\n // @ts-expect-error: There is no way to declare the type correctly, but it works at runtime.\n value.push(target)\n }\n })\n\n if (typeof rowClassName === 'function') {\n rowClassNameFunctions.push(rowClassName)\n }\n if (typeof onRow === 'function') {\n onRowFunctions.push(onRow)\n }\n context.current = rest\n })\n\n Object.entries(renderFunctionMap).forEach(([key, renders]) => {\n if (renders.length > 0) {\n context.current[key as keyof MiddlewareRenders] = (children, args) => {\n // reduce 把 [render1, render2] 转为 render1(render2(children))\n return renders.reduce<ReactNode>((node, render) => {\n // @ts-expect-error: There is no way to declare the type correctly, but it works at runtime.\n return render(node, args)\n }, children)\n }\n }\n })\n\n if (rowClassNameFunctions.length > 0) {\n context.current.rowClassName = (record, index) => {\n return clsx(...rowClassNameFunctions.map((fn) => fn(record, index)))\n }\n }\n\n if (onRowFunctions.length > 0) {\n context.current.onRow = (record, index) => {\n return onRowFunctions.reduce((result, item) => {\n return { ...result, ...item(record, index) }\n }, {})\n }\n }\n\n return context.current\n }\n\n static defaultPipeline = new TablePipeline()\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Hook } from './table-pipeline'\nimport type { Middleware } from './types'\nimport { useMemo } from 'react'\nimport { shallowEqualArrays } from '../../utils/equal'\nimport { shakeUnsafeHooks, TablePipeline } from './table-pipeline'\n\nexport interface UseTablePipelineOptions<T = any> {\n pipeline?: TablePipeline<T>\n use?: (Middleware<T> | Hook<T>)[]\n}\n\nexport { TablePipeline }\nexport type { Hook }\n\nexport function useTablePipeline<T = any>(options: UseTablePipelineOptions<T>) {\n const { use, pipeline: extraPipeline } = options\n\n const cached = useMemo(() => ({ current: new TablePipeline<T>() }), [])\n\n if (use != null) {\n const nextHooks = shakeUnsafeHooks([...use, ...(extraPipeline?.hooks ?? [])])\n\n if (!shallowEqualArrays(cached.current.hooks, nextHooks)) {\n const pipeline = new TablePipeline<T>()\n pipeline.setHooks(nextHooks)\n cached.current = pipeline\n return pipeline\n }\n }\n\n return cached.current\n}\n","export function findLastIndex<T>(\n arr: T[],\n predicate: (value: T, index: number) => boolean,\n) {\n let result = -1\n for (let i = 0; i < arr.length; i += 1) {\n if (predicate(arr[i], i)) {\n result = i\n }\n }\n return result\n}\n","import type { DetailedHTMLProps, HTMLAttributes, ReactElement } from 'react'\nimport type { MiddlewareRenderCell, MiddlewareRenderRow } from './pipeline/types'\nimport type { InnerColumnDescriptor, OnRowType } from './types'\nimport clsx from 'clsx'\nimport { memo } from 'react'\nimport { findLastIndex } from '../utils/find-last-index'\nimport Cell from './cell'\nimport { useTableRowManager } from './context/row-manager'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport { isValidFixedLeft, isValidFixedRight } from './utils/verification'\n\ntype NativeProps = DetailedHTMLProps<\n HTMLAttributes<HTMLTableRowElement>,\n HTMLTableRowElement\n>\n\nexport interface RowProps<T> extends Omit<NativeProps, 'children'> {\n rowIndex: number\n rowData: T\n columns: InnerColumnDescriptor<T>\n onRow?: OnRowType<T>\n renderRow?: MiddlewareRenderRow\n renderCell?: MiddlewareRenderCell\n}\n\nfunction Row<T>(props: RowProps<T>) {\n const {\n className,\n rowIndex,\n rowData,\n columns: columnDescriptor,\n onRow,\n renderRow,\n renderCell,\n ...rest\n } = props\n\n const { updateRowHeight } = useTableRowManager()\n\n const { columns, descriptor } = columnDescriptor\n\n const lastFixedLeftColumnIndex = findLastIndex(descriptor, (x) => {\n if (x.type === 'blank') {\n return false\n }\n return isValidFixedLeft(x.column.fixed)\n })\n const firstFixedRightColumnIndex = descriptor.findIndex((x) => {\n if (x.type === 'blank') {\n return false\n }\n return isValidFixedRight(x.column.fixed)\n })\n\n const { className: extraClassName, ...extraProps } = onRow?.(rowData, rowIndex) ?? {}\n\n return pipelineRender(\n <tr\n {...rest}\n {...extraProps}\n className={clsx('virtual-table-row', className, extraClassName)}\n ref={(node) => {\n if (node == null) return\n // 小心陷阱:当 table 父元素为 display: none 时,依然会触发 updateRowHeight 函数,并设置高度为 0\n updateRowHeight(rowIndex, rowIndex, node.offsetHeight)\n }}\n >\n {descriptor.map((item, index) => {\n const { key } = item\n if (item.type === 'blank') {\n return <td key={key} />\n }\n const { column } = item\n return (\n <Cell\n key={key}\n className={clsx(\n lastFixedLeftColumnIndex === index && 'virtual-table-cell-fix-left-last',\n firstFixedRightColumnIndex === index\n && 'virtual-table-cell-fix-right-first',\n )}\n column={column}\n rowIndex={rowIndex}\n rowData={rowData}\n renderCell={renderCell}\n />\n )\n })}\n </tr>,\n renderRow,\n { columns, rowIndex, rowData, columnDescriptor: descriptor },\n )\n}\n\nexport default memo(Row) as <T>(props: RowProps<T>) => ReactElement\n","import type { MutableRefObject, Ref } from 'react'\nimport { useCallback } from 'react'\n\ntype PossibleRef<T> = Ref<T> | undefined\n\nexport function assignRef<T>(ref: PossibleRef<T>, value: T) {\n if (typeof ref === 'function') {\n ref(value)\n } else if (typeof ref === 'object' && ref !== null && 'current' in ref) {\n (ref as MutableRefObject<T>).current = value\n }\n}\n\nexport function mergeRefs<T>(...refs: PossibleRef<T>[]) {\n return (node: T | null) => {\n refs.forEach((ref) => assignRef(ref, node))\n }\n}\n\nexport function useMergedRef<T>(...refs: PossibleRef<T>[]) {\n // eslint-disable-next-line react-compiler/react-compiler\n return useCallback(mergeRefs(...refs), refs)\n}\n","import { isWindow } from '../../utils/dom'\n\ninterface ResizeRect {\n width: number\n height: number\n}\n\nexport function onResize(target: Window | HTMLElement, callback: (rect: ResizeRect) => void) {\n if (isWindow(target)) {\n const listener = () => {\n callback({\n width: window.innerWidth,\n height: window.innerHeight,\n })\n }\n listener()\n window.addEventListener('resize', listener)\n return () => {\n window.removeEventListener('resize', listener)\n }\n } else {\n const observer = new ResizeObserver((entries) => {\n const rect = entries[0].contentRect\n callback({ width: rect.width, height: rect.height })\n })\n observer.observe(target)\n return () => {\n observer.disconnect()\n }\n }\n}\n","/* eslint-disable react-compiler/react-compiler */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { ScrollElement } from '../../utils/dom'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport { getScrollElement, isRoot, isWindow } from '../../utils/dom'\nimport { onResize } from '../utils/on-resize'\n\nexport interface RowRect {\n index: number\n height: number\n top: number\n bottom: number\n}\n\ninterface UseRowVirtualizeOptions<T = any> {\n getOffsetTop: () => number\n dataSource: T[]\n getScroller: () => ScrollElement | undefined\n estimateSize: number\n overscan: number\n}\n\nfunction anchorQuery(rects: RowRect[], scrollTop: number) {\n let left = 0\n let right = rects.length - 1\n let index = -1\n\n while (left <= right) {\n const mid = Math.floor((left + right) / 2)\n\n if (rects[mid].bottom > scrollTop) {\n index = mid\n right = mid - 1\n } else {\n left = mid + 1\n }\n }\n\n if (index === -1) {\n return undefined\n }\n\n return rects[index]\n}\n\nexport function useRowVirtualize<T = any>(options: UseRowVirtualizeOptions<T>) {\n const {\n getOffsetTop,\n dataSource: rawData,\n getScroller,\n estimateSize,\n overscan,\n } = options\n\n const [startIndex, setStartIndex] = useState(0)\n const [endIndex, setEndIndex] = useState(0)\n\n const dataSlice = useMemo(() => {\n return rawData.slice(startIndex, endIndex)\n }, [rawData, startIndex, endIndex])\n\n // 行高信息(先填充预估高度,DOM渲染后再更新成实际高度)\n const rowHeights = useRef<number[]>([])\n const fillRowHeights = () => {\n const len = rawData.length\n for (let i = 0; i < len; i++) {\n const target = rowHeights.current[i] as number | undefined\n // 由于 fillRowHeights 是在渲染阶段调用,防止重复渲染时 estimateSize 覆盖了真实 DOM 的高度\n if (target == null) {\n rowHeights.current[i] = estimateSize\n }\n }\n rowHeights.current = rowHeights.current.slice(0, len)\n }\n fillRowHeights()\n\n // 布局信息(也就是锚点元素需要的信息,top,bottom,height,index)\n const rowRects = useRef<RowRect[]>([])\n const updateRowRectList = (shouldSkip = false) => {\n if (shouldSkip && rowRects.current.length > 0) {\n return\n }\n const { rects } = rowHeights.current.reduce((result, height, index) => {\n const nextTop = result.top + height\n result.rects.push({\n index,\n top: result.top,\n height,\n bottom: nextTop,\n })\n result.top = nextTop\n return result\n }, { top: 0, rects: [] as RowRect[] })\n rowRects.current = rects\n }\n\n const setRowHeight = (index: number, height: number) => {\n rowHeights.current[index] = height\n }\n\n // 锚点元素,当前虚拟列表中,最接近滚动容器顶部的元素\n const anchorRef = useRef<RowRect>({\n index: 0,\n height: estimateSize,\n top: 0,\n bottom: estimateSize,\n })\n\n // 用来判断滚动方向\n const scrollTopRef = useRef(0)\n const initial = useRef(false)\n useEffect(() => {\n const container = getScroller()\n if (container == null) return\n\n let count = 0\n\n const getScrollTop = () => {\n const offsetTop = getOffsetTop()\n let result = 0\n if (isWindow(container) || isRoot(container)) {\n result = window.scrollY\n } else {\n const element = getScrollElement(container)\n result = element.scrollTop\n }\n return Math.max(result - offsetTop, 0)\n }\n\n const calcCount = (scrollerContainerHeight: number) => {\n const prevCount = count\n count = Math.ceil(scrollerContainerHeight / estimateSize)\n return { prevCount }\n }\n\n const updateBoundary = (scrollTop: number) => {\n const anchor = anchorQuery(rowRects.current, scrollTop)\n if (anchor != null) {\n anchorRef.current = anchor\n setStartIndex(Math.max(0, anchor.index - overscan))\n setEndIndex(anchor.index + count + overscan)\n }\n }\n\n const onScroll = (e: Event) => {\n const offsetTop = getOffsetTop()\n const scrollElement = getScrollElement(e.target)\n const scrollTop = Math.max(0, scrollElement.scrollTop - offsetTop)\n\n // 是否为向下滚动\n const isScrollDown = scrollTop > scrollTopRef.current\n\n if (isScrollDown) {\n // 如果滚动距离比较小,没有超出锚点元素的边界,就不需要计算 startIndex、endIndex 了\n if (scrollTop > anchorRef.current.bottom) {\n updateBoundary(scrollTop)\n }\n } else {\n if (scrollTop < anchorRef.current.top) {\n updateBoundary(scrollTop)\n }\n }\n\n scrollTopRef.current = scrollTop\n }\n\n let prevHeight = 0\n const stopListen = onResize(container, (rect) => {\n // 处理父元素 display:none 容器高度丢失,导致显示 row 不准确\n if (rect.height === prevHeight || rect.height === 0) {\n return\n }\n prevHeight = rect.height\n calcCount(rect.height)\n const scrollTop = getScrollTop()\n if (!initial.current) {\n initial.current = true\n let nextStartIndex = 0\n // 判断一下当前滚动位置,计算 startIndex(场景:SPA 页面切换且渲染非异步数据)\n if (scrollTop >= estimateSize) {\n nextStartIndex = Math.max(Math.floor(scrollTop / estimateSize) - 1 - overscan, 0)\n }\n const nextEndIndex = nextStartIndex + count + overscan\n setStartIndex(nextStartIndex)\n setEndIndex(nextEndIndex)\n } else {\n updateBoundary(scrollTop)\n }\n })\n\n container.addEventListener('scroll', onScroll)\n return () => {\n stopListen()\n container.removeEventListener('scroll', onScroll)\n }\n }, [estimateSize, getOffsetTop, getScroller, overscan])\n\n const sum = (startIndex: number, endIndex?: number) => {\n return rowHeights.current.slice(startIndex, endIndex).reduce((a, b) => a + b, 0)\n }\n // TODO: React Compiler 测试 topBlank 和 bottomBlank\n const topBlank = sum(0, startIndex)\n const bottomBlank = sum(endIndex)\n\n return {\n startIndex,\n endIndex,\n\n rowHeightList: rowHeights,\n updateRowRectList,\n setRowHeight,\n\n topBlank,\n bottomBlank,\n\n dataSlice,\n }\n}\n","import type { CSSProperties, Key, Ref } from 'react'\nimport type { ScrollElement } from '../utils/dom'\nimport type { TableRowManagerContextType } from './context/row-manager'\nimport type { NecessaryProps } from './internal'\nimport type {\n MiddlewareRenderBody,\n MiddlewareRenderBodyRoot,\n MiddlewareRenderBodyWrapper,\n} from './pipeline/types'\nimport type { RowProps } from './row'\nimport type { AnyObject, InnerColumnDescriptor } from './types'\nimport clsx from 'clsx'\nimport { useCallback, useEffect, useMemo, useRef } from 'react'\nimport { isShallowEqual } from '../utils/equal'\nimport { useMergedRef } from '../utils/ref'\nimport Colgroup from './colgroup'\nimport { useColumnSizes } from './context/column-sizes'\nimport { useHorizontalScrollContext } from './context/horizontal-scroll'\nimport { TableRowManager } from './context/row-manager'\nimport { useRowVirtualize } from './hooks/useRowVirtualize'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport Row from './row'\n\nexport interface TableBodyProps<T>\n extends Omit<NecessaryProps<T>, 'columns'>,\n Pick<RowProps<T>, 'onRow' | 'renderRow' | 'renderCell'> {\n className?: string\n style?: CSSProperties\n columns: InnerColumnDescriptor<T>\n bodyWrapperRef?: Ref<HTMLDivElement>\n bodyRootRef?: Ref<HTMLTableElement>\n bodyRef?: Ref<HTMLTableSectionElement>\n overscan: number\n estimateSize: number\n getOffsetTop: () => number\n getScroller: () => ScrollElement | undefined\n rowClassName?: (record: T, index: number) => string\n renderBodyWrapper?: MiddlewareRenderBodyWrapper\n renderBodyRoot?: MiddlewareRenderBodyRoot\n renderBody?: MiddlewareRenderBody\n}\n\nfunction TableBody<T>(props: TableBodyProps<T>) {\n const {\n bodyWrapperRef,\n bodyRootRef,\n bodyRef,\n className,\n style,\n dataSource: rawData,\n columns: columnDescriptor,\n rowKey,\n\n overscan,\n estimateSize,\n\n getScroller,\n getOffsetTop,\n\n rowClassName,\n onRow,\n renderBodyWrapper,\n renderBodyRoot,\n renderBody,\n renderRow,\n renderCell,\n } = props\n\n const {\n startIndex,\n dataSlice: dataSource,\n setRowHeight,\n updateRowRectList,\n rowHeightList,\n topBlank,\n bottomBlank,\n } = useRowVirtualize({\n getOffsetTop,\n dataSource: rawData,\n getScroller,\n estimateSize,\n overscan,\n })\n\n const rowHeights = useRef(new Map<number, Map<Key, number>>())\n const updateRowHeight = useCallback((index: number, key: Key, height: number) => {\n const target = rowHeights.current.get(index) ?? new Map<Key, number>()\n target.set(key, height)\n rowHeights.current.set(index, target)\n }, [])\n\n const rowManageState = useMemo<TableRowManagerContextType>(() => {\n return { updateRowHeight, getRowHeightList: () => rowHeightList.current }\n }, [rowHeightList, updateRowHeight])\n\n const { columns, descriptor } = columnDescriptor\n const tbodyRef = useMergedRef(bodyRef, (elm) => {\n if (elm == null) return\n\n const bodyHeight = elm.offsetHeight\n if (bodyHeight === 0) return\n\n const heights = rowHeights.current\n heights.forEach((row, rowIndex) => {\n const height = 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 const onColumnSizesMeasure = useCallback((columnSizes: Map<Key, number>, oldValue: Map<Key, number>) => {\n if (!isShallowEqual(oldValue, columnSizes)) {\n setWidthList(columnSizes)\n }\n }, [setWidthList])\n\n const tableNode = pipelineRender(\n <table\n className={clsx(className, 'virtual-table-body')}\n style={{ ...style, paddingBottom: bottomBlank, paddingTop: topBlank }}\n ref={bodyRootRef}\n >\n <Colgroup\n columns={descriptor}\n onColumnSizesMeasure={onColumnSizesMeasure}\n />\n {bodyNode}\n </table>,\n renderBodyRoot,\n { columns, columnDescriptor: descriptor },\n )\n\n const { listen, notify } = useHorizontalScrollContext()\n const wrapperRef = useRef<HTMLDivElement>(null)\n useEffect(() => {\n const node = wrapperRef.current\n if (node == null) return\n\n const key = 'virtual-table-body'\n const onScroll = () => {\n notify(key, { scrollLeft: () => node.scrollLeft, node })\n }\n const dispose = listen(key, (scrollLeft) => {\n node.scrollLeft = scrollLeft\n })\n node.addEventListener('scroll', onScroll)\n return () => {\n node.removeEventListener('scroll', onScroll)\n dispose()\n }\n }, [listen, notify])\n\n const mergedRef = useMergedRef(wrapperRef, bodyWrapperRef)\n\n return (\n <TableRowManager.Provider value={rowManageState}>\n {pipelineRender(\n <div\n ref={mergedRef}\n className=\"virtual-table-body-wrapper\"\n >\n {tableNode}\n </div>,\n renderBodyWrapper,\n { columns, columnDescriptor: descriptor },\n )}\n </TableRowManager.Provider>\n )\n}\n\nexport default TableBody\n","import type { CSSProperties, FC, RefObject } from 'react'\nimport type {\n MiddlewareRenderHeader,\n MiddlewareRenderHeaderCell,\n MiddlewareRenderHeaderRoot,\n MiddlewareRenderHeaderRow,\n MiddlewareRenderHeaderWrapper,\n} from './pipeline/types'\nimport type { InnerColumnDescriptor } from './types'\nimport clsx from 'clsx'\nimport { createElement, Fragment, useEffect, useRef } from 'react'\nimport { findLastIndex } from '../utils/find-last-index'\nimport { useMergedRef } from '../utils/ref'\nimport Colgroup from './colgroup'\nimport { useColumnSizes } from './context/column-sizes'\nimport { useHorizontalScrollContext } from './context/horizontal-scroll'\nimport { useTableSticky } from './context/sticky'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport { getKey } from './utils/get-key'\nimport { isValidFixed, isValidFixedLeft, isValidFixedRight } from './utils/verification'\n\nexport interface TableHeaderProps {\n className?: string\n style?: CSSProperties\n\n wrapperRef?: RefObject<HTMLDivElement>\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n columns: InnerColumnDescriptor<any>\n\n /** 开启表头 sticky,设置为 true 则默认 top 为 0,为 number 则是偏移量 */\n stickyHeader?: number | boolean\n\n renderHeaderWrapper?: MiddlewareRenderHeaderWrapper\n renderHeaderRoot?: MiddlewareRenderHeaderRoot\n renderHeader?: MiddlewareRenderHeader\n renderHeaderRow?: MiddlewareRenderHeaderRow\n renderHeaderCell?: MiddlewareRenderHeaderCell\n}\n\nconst TableHeader: FC<TableHeaderProps> = (props) => {\n const {\n className,\n style,\n wrapperRef,\n columns: columnDescriptor,\n stickyHeader,\n renderHeaderWrapper,\n renderHeaderRoot,\n renderHeader,\n renderHeaderRow,\n renderHeaderCell,\n } = props\n\n const { columns, descriptor } = columnDescriptor\n const lastColumn = columns[columns.length - 1]\n\n const { widthList } = useColumnSizes()\n const { size: stickySizes } = useTableSticky()\n\n const lastFixedLeftColumnIndex = findLastIndex(descriptor, (x) => {\n if (x.type === 'blank') {\n return false\n }\n return isValidFixedLeft(x.column.fixed)\n })\n const firstFixedRightColumnIndex = descriptor.findIndex((x) => {\n if (x.type === 'blank') {\n return false\n }\n return isValidFixedRight(x.column.fixed)\n })\n const { listen, notify } = useHorizontalScrollContext()\n\n const headerWrapperRef = useRef<HTMLDivElement>(null)\n useEffect(() => {\n const node = headerWrapperRef.current\n if (node == null) return\n const key = 'virtual-table-header'\n const onScroll = () => {\n notify(key, { scrollLeft: () => node.scrollLeft, node })\n }\n const dispose = listen(key, (scrollLeft) => {\n node.scrollLeft = scrollLeft\n })\n node.addEventListener('scroll', onScroll)\n return () => {\n node.removeEventListener('scroll', onScroll)\n dispose()\n }\n }, [listen, notify])\n\n const row = pipelineRender(\n <tr>\n {descriptor.map((item, index) => {\n const { key } = item\n if (item.type === 'blank') {\n return <th key={key} data-blank />\n }\n\n const { column } = item\n\n if (column.colSpan === 0) {\n return null\n }\n\n const isLast = getKey(lastColumn) === key\n const {\n className: thClassName,\n style: thStyle,\n ...rest\n } = column.onHeaderCell?.(column, index) ?? {}\n\n return (\n <Fragment key={key}>\n {pipelineRender(\n createElement(\n 'th',\n {\n scope: 'col',\n ...rest,\n colSpan: column.colSpan,\n className: clsx(\n 'virtual-table-header-cell',\n isLast && 'no-split',\n column.align != null && `virtual-table-align-${column.align}`,\n isValidFixed(column.fixed) && 'virtual-table-sticky-cell',\n lastFixedLeftColumnIndex === index && 'virtual-table-cell-fix-left-last',\n firstFixedRightColumnIndex === index && 'virtual-table-cell-fix-right-first',\n column.className,\n thClassName,\n ),\n style: {\n ...thStyle,\n left: isValidFixedLeft(column.fixed) ? stickySizes.get(key) : undefined,\n right: isValidFixedRight(column.fixed)\n ? stickySizes.get(key)\n : undefined,\n },\n },\n column.title,\n ),\n renderHeaderCell,\n { column, columns, columnWidths: widthList, columnDescriptor: descriptor },\n )}\n </Fragment>\n )\n })}\n </tr>,\n renderHeaderRow,\n { columns, columnDescriptor: descriptor },\n )\n\n const theadNode = pipelineRender(\n <thead className=\"virtual-table-thead\">{row}</thead>,\n renderHeader,\n { columns, columnDescriptor: descriptor },\n )\n\n const tableNode = pipelineRender(\n <table\n style={style}\n >\n <Colgroup columns={descriptor} />\n {theadNode}\n </table>,\n renderHeaderRoot,\n { columns, columnDescriptor: descriptor },\n )\n\n const mergedRef = useMergedRef(wrapperRef, headerWrapperRef)\n\n return pipelineRender(\n <div\n ref={mergedRef}\n className={clsx('virtual-table-header', className, {\n 'virtual-table-header-sticky': stickyHeader,\n })}\n style={{\n top: Number.isFinite(stickyHeader) ? (stickyHeader as number) : undefined,\n }}\n >\n {tableNode}\n </div>,\n renderHeaderWrapper,\n { columns, columnDescriptor: descriptor },\n )\n}\n\nexport default TableHeader\n","import type { Key, RefObject } from 'react'\nimport type { ColumnDescriptor, ColumnType } from '../types'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport { findLastIndex } from '../../utils/find-last-index'\nimport { getKey } from '../utils/get-key'\nimport { onResize } from '../utils/on-resize'\nimport { isValidFixedLeft, isValidFixedRight } from '../utils/verification'\nimport { useStableFn } from './useStableFn'\n\ninterface UseColumnVirtualizeOptions<T> {\n estimateSize: number\n overscan: number\n columns: ColumnType<T>[]\n bodyWrapper: RefObject<HTMLDivElement>\n columnWidths: Map<Key, number>\n disabled?: boolean\n}\n\ninterface Rect {\n index: number\n width: number\n left: number\n right: number\n}\n\nfunction anchorQuery(rects: Rect[], scrollLeft: number) {\n let left = 0\n let right = rects.length - 1\n let index = -1\n\n while (left <= right) {\n const mid = Math.floor((left + right) / 2)\n\n if (rects[mid].right > scrollLeft) {\n index = mid\n right = mid - 1\n } else {\n left = mid + 1\n }\n }\n\n if (index === -1) {\n return undefined\n }\n\n return rects[index]\n}\n\nfunction findFirstFixedRightIndex<T>(columns: ColumnType<T>[]) {\n let index = -1\n for (let i = columns.length - 1; i >= 0; i--) {\n const column = columns[i]\n if (isValidFixedRight(column.fixed)) {\n index = i\n } else {\n break\n }\n }\n return index\n}\n\nfunction findLastFixedLeftIndex<T>(columns: ColumnType<T>[]) {\n return findLastIndex(columns, (x) => isValidFixedLeft(x.fixed))\n}\n\nexport function useColumnVirtualize<T>(options: UseColumnVirtualizeOptions<T>) {\n const {\n estimateSize,\n overscan,\n columns: rawColumns,\n bodyWrapper,\n columnWidths,\n disabled = false,\n } = options\n\n const lastFixedLeftIndex = findLastFixedLeftIndex(rawColumns)\n const firstFixedRightIndex = findFirstFixedRightIndex(rawColumns)\n\n const leftKey = lastFixedLeftIndex > -1 ? getKey(rawColumns[lastFixedLeftIndex]) : null\n const rightKey = firstFixedRightIndex > -1 ? getKey(rawColumns[firstFixedRightIndex]) : null\n\n const [startIndex, setStartIndex] = useState(0)\n const [endIndex, setEndIndex] = useState(0)\n\n const rects = useMemo(() => {\n if (disabled) {\n return []\n }\n let left = 0\n return rawColumns.map((column, index): Rect => {\n const key = getKey(column)\n const width = columnWidths.get(key) ?? estimateSize\n const right = left + width\n const rect: Rect = {\n index,\n width,\n left,\n right,\n }\n\n left = right\n return rect\n })\n }, [rawColumns, columnWidths, estimateSize, disabled])\n\n // 锚点元素\n const anchorRef = useRef<Rect>({\n index: 0,\n width: estimateSize,\n left: 0,\n right: estimateSize,\n })\n\n const findAnchorRef = useStableFn((scrollLeft: number) => {\n return anchorQuery(rects, scrollLeft)\n })\n\n const updateBoundary = useStableFn((scrollLeft: number, count: number) => {\n const anchor = findAnchorRef(scrollLeft)\n if (anchor != null) {\n anchorRef.current = anchor\n setStartIndex(Math.max(0, anchor.index - overscan))\n setEndIndex(anchor.index + count + overscan)\n }\n })\n\n // 用来判断滚动方向\n const scrollLeftRef = useRef(0)\n useEffect(() => {\n if (disabled) return\n\n const scrollContainer = bodyWrapper.current\n if (scrollContainer == null) return\n\n const containerWidth = scrollContainer.offsetWidth\n let count = Math.ceil(containerWidth / estimateSize)\n\n const onScroll = () => {\n const scrollLeft = scrollContainer.scrollLeft\n // 滚动条向右移动(界面向左运动)\n const isScrollRight = scrollLeft > scrollLeftRef.current\n if (isScrollRight) {\n if (scrollLeft > anchorRef.current.right) {\n updateBoundary(scrollLeft, count)\n }\n } else {\n if (scrollLeft < anchorRef.current.left) {\n updateBoundary(scrollLeft, count)\n }\n }\n\n scrollLeftRef.current = scrollLeft\n }\n\n scrollContainer.addEventListener('scroll', onScroll)\n\n let prevWidth = 0\n const stop = onResize(scrollContainer, ({ width }) => {\n if (width === prevWidth || width === 0) {\n return\n }\n prevWidth = width\n const scrollLeft = scrollContainer.scrollLeft\n count = Math.ceil(width / estimateSize)\n updateBoundary(scrollLeft, count)\n })\n return () => {\n scrollContainer.removeEventListener('scroll', onScroll)\n stop()\n }\n }, [bodyWrapper, estimateSize, updateBoundary, overscan, findAnchorRef, disabled])\n\n const sum = (startIndex: number, endIndex?: number) => {\n return rects.slice(startIndex, endIndex).reduce((a, b) => a + b.width, 0)\n }\n\n const fixedLeftWidth = lastFixedLeftIndex > -1 ? sum(0, lastFixedLeftIndex + 1) : 0\n const fixedRightWidth = firstFixedRightIndex > -1 ? sum(firstFixedRightIndex) : 0\n\n // 设置 column.fixed 时,对应列将不会虚拟化,所以 blank 需要去除这些列的宽度\n const leftBlank = Math.max(0, sum(0, startIndex) - fixedLeftWidth)\n const rightBlank = Math.max(0, sum(endIndex) - fixedRightWidth)\n\n const columnSlice = useMemo(() => {\n if (disabled) {\n return rawColumns\n }\n const result = [\n ...rawColumns.slice(0, lastFixedLeftIndex + 1),\n ...rawColumns.slice(startIndex, endIndex),\n ...rawColumns.slice(firstFixedRightIndex),\n ]\n const unionKey = new Set<Key>()\n return result.filter((column) => {\n const key = getKey(column)\n if (unionKey.has(key)) {\n return false\n }\n unionKey.add(key)\n return true\n })\n }, [disabled, rawColumns, startIndex, endIndex, lastFixedLeftIndex, firstFixedRightIndex])\n\n const descriptor = useMemo(() => {\n return columnSlice.reduce<ColumnDescriptor<T>[]>((result, column, index) => {\n const key = getKey(column)\n if (key === leftKey) {\n result.push({ type: 'normal', key, column })\n result.push({ type: 'blank', key: '_blank_left', width: leftBlank })\n } else if (leftKey == null && index === 0) {\n result.push({ type: 'blank', key: '_blank_left', width: leftBlank })\n result.push({ type: 'normal', key, column })\n } else if (key === rightKey) {\n result.push({ type: 'blank', key: '_blank_right', width: rightBlank })\n result.push({ type: 'normal', key, column })\n } else if (rightKey == null && index === columnSlice.length - 1) {\n result.push({ type: 'normal', key, column })\n result.push({ type: 'blank', key: '_blank_right', width: rightBlank })\n } else {\n result.push({ type: 'normal', key, column })\n }\n return result\n }, [])\n }, [columnSlice, leftKey, rightKey, leftBlank, rightBlank])\n\n const columns = useMemo(() => {\n return { columns: columnSlice, descriptor }\n }, [columnSlice, descriptor])\n\n return { columns, columnSlice, lastFixedLeftIndex, firstFixedRightIndex }\n}\n","import type { CSSProperties, ForwardedRef, ReactNode, RefObject } from 'react'\nimport type { PipelineRender } from './pipeline/types'\nimport clsx from 'clsx'\nimport { forwardRef, useEffect, useRef, useState } from 'react'\nimport { useMergedRef } from '../utils/ref'\nimport { useHorizontalScrollContext } from './context/horizontal-scroll'\nimport { pipelineRender } from './pipeline/render-pipeline'\n\nexport interface TableRootProps {\n className?: string\n style?: CSSProperties\n children?: ReactNode\n hasFixedLeftColumn?: boolean\n hasFixedRightColumn?: boolean\n bodyScrollContainer: RefObject<HTMLElement>\n renderRoot?: PipelineRender\n}\n\nfunction TableRoot(props: TableRootProps, ref: ForwardedRef<HTMLDivElement>) {\n const {\n className,\n style,\n children,\n hasFixedLeftColumn,\n hasFixedRightColumn,\n renderRoot,\n bodyScrollContainer,\n } = props\n\n const rootNode = useRef<HTMLDivElement>(null)\n\n const [hasFixedLeft, setHasFixedLeft] = useState(false)\n const [hasFixedRight, setHasFixedRight] = useState(false)\n\n const { listen } = useHorizontalScrollContext()\n useEffect(() => {\n if (!hasFixedLeftColumn && !hasFixedRightColumn) {\n return\n }\n const onCheckHasFixedEdge = (node: HTMLElement) => {\n const { scrollLeft, clientWidth, scrollWidth } = node\n if (hasFixedLeftColumn) {\n setHasFixedLeft(scrollLeft !== 0)\n }\n if (hasFixedRightColumn) {\n setHasFixedRight(!(scrollLeft + clientWidth >= scrollWidth))\n }\n }\n const node = bodyScrollContainer.current\n if (node != null) {\n onCheckHasFixedEdge(node)\n }\n return listen('__root', (_scrollLeft, node) => {\n onCheckHasFixedEdge(node)\n })\n }, [bodyScrollContainer, hasFixedLeftColumn, hasFixedRightColumn, listen])\n\n const mergedRef = useMergedRef(ref, rootNode)\n return pipelineRender(\n <div\n ref={mergedRef}\n className={clsx(\n 'virtual-table',\n hasFixedLeft && 'virtual-table-has-fix-left',\n hasFixedRight && 'virtual-table-has-fix-right',\n className,\n )}\n style={style}\n >\n {children}\n </div>,\n renderRoot,\n {},\n )\n}\n\nexport default forwardRef(TableRoot)\n","import type { CSSProperties, ForwardedRef, Key, ReactElement, Ref, RefAttributes } from 'react'\nimport type { TableBodyProps } from './body'\nimport type { TableColumnsContextType } from './context/column-sizes'\nimport type { NecessaryProps } from './internal'\nimport type { ColumnDescriptor, OnRowType } from './types'\nimport clsx from 'clsx'\nimport {\n forwardRef,\n memo,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { getScrollParent, isRoot, isWindow } from '../utils/dom'\nimport { useMergedRef } from '../utils/ref'\nimport TableBody from './body'\nimport { ColumnSizes } from './context/column-sizes'\nimport { ContainerSizeContext } from './context/container-size'\nimport { HorizontalScrollContext } from './context/horizontal-scroll'\nimport { StickyContext } from './context/sticky'\nimport TableHeader from './header'\nimport { useColumnVirtualize } from './hooks/useColumnVirtualize'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport { TablePipeline } from './pipeline/useTablePipeline'\nimport TableRoot from './root'\nimport { getKey } from './utils/get-key'\nimport { isValidFixedLeft, isValidFixedRight } from './utils/verification'\n\nexport interface VirtualTableCoreProps<T>\n extends NecessaryProps<T>,\n Pick<TableBodyProps<T>, 'rowClassName' | 'onRow'> {\n bodyRootRef?: Ref<HTMLTableElement>\n\n className?: string\n style?: CSSProperties\n\n tableBodyClassName?: string\n tableBodyStyle?: CSSProperties\n\n /** 开启表头 sticky,设置为 true 则默认 top 为 0,为 number 则是偏移量 */\n stickyHeader?: number | boolean\n\n /** 预计每列宽度,需要横向虚拟化时,设置它 */\n estimatedColumnWidth?: number\n /** 预计每行高度 @default 46 */\n estimatedRowHeight?: number\n /** 在头和尾额外渲染多少行 @default 5 */\n overscanRows?: number\n /** 横向虚拟化时,在头和尾额外渲染多少列 @default 3 */\n overscanColumns?: number\n\n /** 开启表头虚拟滚动 @default true */\n virtualHeader?: boolean\n\n pipeline?: TablePipeline<T>\n\n getOffsetTop?: () => number\n}\n\nfunction VirtualTableCore<T>(\n props: VirtualTableCoreProps<T>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const {\n bodyRootRef,\n className,\n style,\n tableBodyClassName,\n tableBodyStyle,\n columns: rawColumns,\n dataSource: rawData,\n rowKey: rawRowKey = 'key',\n estimatedRowHeight = 46,\n estimatedColumnWidth,\n overscanRows = 5,\n overscanColumns = 3,\n stickyHeader,\n pipeline = (TablePipeline.defaultPipeline as TablePipeline<T>),\n rowClassName: rawRowClassName,\n onRow,\n getOffsetTop: getOffsetTopImpl,\n virtualHeader = true,\n } = props\n\n const rootNode = useRef<HTMLDivElement>(null)\n\n const headerWrapperRef = useRef<HTMLDivElement>(null)\n const bodyWrapperRef = useRef<HTMLDivElement>(null)\n const bodyRoot = useRef<HTMLTableElement>(null)\n const mergedBodyRootRef = useMergedRef(bodyRoot, bodyRootRef)\n const bodyRef = useRef<HTMLTableSectionElement>(null)\n\n const getScroller = useCallback(() => {\n const root = rootNode.current\n if (root == null) return\n return getScrollParent(root)\n }, [])\n\n const getOffsetTop = useCallback(() => {\n if (typeof getOffsetTopImpl === 'function') {\n return getOffsetTopImpl()\n }\n const scrollContainer = getScroller()\n if (scrollContainer === rootNode.current) {\n return 0\n }\n if (isWindow(scrollContainer) || isRoot(scrollContainer)) {\n const top = rootNode.current?.getBoundingClientRect().top ?? 0\n return window.scrollY + top\n }\n return rootNode.current?.offsetTop ?? 0\n }, [getOffsetTopImpl, getScroller])\n\n const {\n dataSource,\n columns: pipelineColumns,\n rowKey,\n rowClassName,\n\n render,\n renderRoot,\n renderContent,\n renderHeaderWrapper,\n renderHeaderRoot,\n renderHeader,\n renderHeaderRow,\n renderHeaderCell,\n renderBodyWrapper,\n renderBodyRoot,\n renderBody,\n renderRow,\n renderCell,\n\n onRow: onPipelineRow,\n } = pipeline.use({\n dataSource: rawData,\n rowKey: rawRowKey,\n columns: rawColumns,\n estimatedRowHeight,\n headerWrapperRef,\n bodyWrapperRef,\n bodyRootRef: bodyRoot,\n bodyRef,\n rootRef: rootNode,\n getOffsetTop,\n getScroller,\n })\n\n const [columnWidths, setColumnWidths] = useState(() => new Map<Key, number>())\n const columnWidthsRef = useRef(columnWidths)\n const updateColumnWidths = useCallback((value: Map<Key, number>) => {\n columnWidthsRef.current = value\n setColumnWidths(value)\n }, [])\n\n const tableColumnsContext = useMemo<TableColumnsContextType>(() => {\n return {\n widthList: columnWidths,\n setWidthList: updateColumnWidths,\n }\n }, [columnWidths, updateColumnWidths])\n\n const { columns } = useColumnVirtualize<T>({\n estimateSize: estimatedColumnWidth ?? 100,\n overscan: overscanColumns,\n columns: pipelineColumns,\n bodyWrapper: bodyWrapperRef,\n columnWidths,\n disabled: estimatedColumnWidth == null,\n })\n\n if (__DEV__) {\n pipelineColumns.forEach((column) => {\n if (column.width == null && column.minWidth == null) {\n console.warn('Missing `width` in column', column)\n }\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (getKey(column) == null) {\n console.error('Missing `dataIndex` or `key` in column', column)\n }\n })\n }\n\n const onRowClassName = useCallback((record: T, index: number) => {\n return clsx(rawRowClassName?.(record, index), rowClassName?.(record, index))\n }, [rawRowClassName, rowClassName])\n\n const onRowProps: OnRowType<T> = useCallback((record, index) => {\n return { ...onRow?.(record, index), ...onPipelineRow?.(record, index) }\n }, [onPipelineRow, onRow])\n\n const hasFixedLeftColumn = pipelineColumns.some((x) => isValidFixedLeft(x.fixed))\n const hasFixedRightColumn = pipelineColumns.some((x) => isValidFixedRight(x.fixed))\n\n const fullHeaderColumns = useMemo(() => {\n return {\n columns: pipelineColumns,\n descriptor: pipelineColumns.map((column): ColumnDescriptor => {\n const key = getKey(column)\n return {\n key,\n type: 'normal',\n column,\n }\n }),\n }\n }, [pipelineColumns])\n\n const headerColumns = useMemo(() => {\n if (virtualHeader) {\n return columns\n }\n return fullHeaderColumns\n }, [virtualHeader, fullHeaderColumns, columns])\n\n const contentNode = pipelineRender(\n <>\n <TableHeader\n wrapperRef={headerWrapperRef}\n columns={headerColumns}\n stickyHeader={stickyHeader}\n renderHeaderWrapper={renderHeaderWrapper}\n renderHeaderRoot={renderHeaderRoot}\n renderHeader={renderHeader}\n renderHeaderRow={renderHeaderRow}\n renderHeaderCell={renderHeaderCell}\n />\n <TableBody\n bodyWrapperRef={bodyWrapperRef}\n bodyRootRef={mergedBodyRootRef}\n bodyRef={bodyRef}\n className={tableBodyClassName}\n style={tableBodyStyle}\n columns={columns}\n rowKey={rowKey}\n dataSource={dataSource}\n overscan={overscanRows}\n estimateSize={estimatedRowHeight}\n getScroller={getScroller}\n getOffsetTop={getOffsetTop}\n rowClassName={onRowClassName}\n onRow={onRowProps}\n renderBodyWrapper={renderBodyWrapper}\n renderBodyRoot={renderBodyRoot}\n renderBody={renderBody}\n renderRow={renderRow}\n renderCell={renderCell}\n />\n </>,\n renderContent,\n { columns: columns.columns, columnDescriptor: columns.descriptor },\n )\n\n const rootMergedRef = useMergedRef(rootNode, ref)\n const table = pipelineRender(\n <TableRoot\n ref={rootMergedRef}\n className={className}\n style={style}\n hasFixedLeftColumn={hasFixedLeftColumn}\n hasFixedRightColumn={hasFixedRightColumn}\n renderRoot={renderRoot}\n bodyScrollContainer={bodyWrapperRef}\n >\n {contentNode}\n </TableRoot>,\n render,\n { columns: columns.columns, columnDescriptor: columns.descriptor },\n )\n\n return (\n <ColumnSizes.Provider value={tableColumnsContext}>\n <StickyContext columns={pipelineColumns}>\n <ContainerSizeContext getScroller={getScroller} root={rootNode}>\n <HorizontalScrollContext>{table}</HorizontalScrollContext>\n </ContainerSizeContext>\n </StickyContext>\n </ColumnSizes.Provider>\n )\n}\n\nif (__DEV__) {\n VirtualTableCore.displayName = 'VirtualTable.Core'\n}\n\nexport default memo(forwardRef(VirtualTableCore)) as <T>(\n props: VirtualTableCoreProps<T> & RefAttributes<HTMLDivElement>,\n) => ReactElement\n"],"names":["shallowEqualObjects","objA","objB","aKeys","Object","keys","bKeys","len","length","i","key","prototype","hasOwnProperty","call","shallowEqualArrays","arrA","arrB","isShallowEqual","value","oldValue","is","Array","isArray","hasObject","findIndex","x","every","state","index","Map","from","oldKeys","values","oldValues","useShallowMemo","pickData","nextState","useRef","current","getKey","column","dataIndex","isValidFixedLeft","fixed","isValidFixedRight","isValidFixed","ColumnSizes","createContext","__DEV__","displayName","useColumnSizes","context","useContext","Error","Sticky","StickyContext","props","columns","children","_useColumnSizes","widthList","columnsFixedRecord","useMemo","map","stickySizes","left","leftOffset","reduce","res","item","_widthList$get","get","right","rightOffset","reduceRight","_widthList$get2","result","set","shallowMemoFixedRecord","shallowMemoStickySizes","stickyState","size","_jsx","Provider","useTableSticky","pipelineRender","node","render","options","getTableCellContent","data","_render","rowData","Cell","_onCell","className","style","rowIndex","renderCell","restProps","_objectWithoutPropertiesLoose","_excluded","align","onCell","_useTableSticky","_ref","extraClassName","extraStyle","colSpan","rowSpan","extraProps","_excluded2","_extends","clsx","undefined","memo","Colgroup","onColumnSizesMeasure","enableMeasure","columnSizes","prevColumnSizes","ref","type","width","offsetWidth","minWidth","overflowStylePatterns","isElement","Node","ELEMENT_NODE_TYPE","nodeType","getScrollParent","el","root","_el$ownerDocument$def","window","document","body","_window$getComputedSt","getComputedStyle","overflow","overflowY","overflowX","test","parentNode","ownerDocument","defaultView","isWindow","arg","toString","isDocument","isRoot","getScrollElement","scrollingElement","useCalcSize","getScroller","_useState","useState","scrollContainerWidth","setScrollContainerWidth","_useState2","scrollContainerHeight","setScrollContainerHeight","_useState3","tableWidth","setTableWidth","_useState4","tableHeight","setTableHeight","scrollerContainerRef","useLayoutEffect","scrollerContainer","scroller","observer","ResizeObserver","entries","_entries$0$contentRec","contentRect","height","observe","disconnect","_entries$0$contentRec2","ContainerSize","ContainerSizeContext","_useCalcSize","useContainerSize","HorizontalScroll","HorizontalScrollContext","listenerMap","skipEvent","Set","listen","listener","scrollLeft","notify","has","rAF","requestAnimationFrame","fn","forEach","itemKey","add","useHorizontalScrollContext","TableRowManager","useTableRowManager","useStableFn","callback","stableFn","useCallback","_len","arguments","args","_key","apply","createMiddleware","hook","cache","useMiddleware","ctx","concat","_cache$current","shakeUnsafeHooks","hooks","filter","priority","TablePipeline","defineProperty","use","bind","_proto","setHooks","renderFunctionMap","renderRoot","renderContent","renderHeaderWrapper","renderHeaderRoot","renderHeader","renderHeaderRow","renderHeaderCell","renderBodyWrapper","renderBodyRoot","renderBody","renderRow","rowClassNameFunctions","onRowFunctions","slice","sort","a","b","nextCtx","rowClassName","onRow","rest","target","push","_ref2","renders","record","useTablePipeline","extraPipeline","pipeline","cached","_extraPipeline$hooks","nextHooks","findLastIndex","arr","predicate","Row","_onRow","columnDescriptor","_useTableRowManager","updateRowHeight","descriptor","lastFixedLeftColumnIndex","firstFixedRightColumnIndex","offsetHeight","assignRef","mergeRefs","refs","useMergedRef","_len2","_key2","onResize","innerWidth","innerHeight","addEventListener","removeEventListener","rect","anchorQuery","rects","scrollTop","mid","Math","floor","bottom","useRowVirtualize","getOffsetTop","rawData","dataSource","estimateSize","overscan","startIndex","setStartIndex","endIndex","setEndIndex","dataSlice","rowHeights","fillRowHeights","rowRects","updateRowRectList","shouldSkip","_rowHeights$current$r","nextTop","top","setRowHeight","anchorRef","scrollTopRef","initial","useEffect","container","count","getScrollTop","offsetTop","scrollY","element","max","calcCount","scrollerContainerHeight","prevCount","ceil","updateBoundary","anchor","onScroll","e","scrollElement","isScrollDown","prevHeight","stopListen","nextStartIndex","nextEndIndex","sum","topBlank","bottomBlank","rowHeightList","TableBody","bodyWrapperRef","bodyRootRef","bodyRef","rowKey","_useRowVirtualize","_rowHeights$current$g","rowManageState","getRowHeightList","tbodyRef","elm","bodyHeight","heights","row","clear","bodyNode","_rowKey","setWidthList","tableNode","_jsxs","paddingBottom","paddingTop","_useHorizontalScrollC","wrapperRef","dispose","mergedRef","TableHeader","stickyHeader","lastColumn","headerWrapperRef","_column$onHeaderCell","isLast","onHeaderCell","thClassName","thStyle","Fragment","createElement","scope","title","columnWidths","theadNode","Number","isFinite","findFirstFixedRightIndex","findLastFixedLeftIndex","useColumnVirtualize","rawColumns","bodyWrapper","_options$disabled","disabled","lastFixedLeftIndex","firstFixedRightIndex","leftKey","rightKey","_columnWidths$get","findAnchorRef","scrollLeftRef","scrollContainer","containerWidth","isScrollRight","prevWidth","stop","fixedLeftWidth","fixedRightWidth","leftBlank","rightBlank","columnSlice","unionKey","TableRoot","hasFixedLeftColumn","hasFixedRightColumn","bodyScrollContainer","rootNode","hasFixedLeft","setHasFixedLeft","hasFixedRight","setHasFixedRight","onCheckHasFixedEdge","clientWidth","scrollWidth","_scrollLeft","forwardRef","VirtualTableCore","tableBodyClassName","tableBodyStyle","_props$rowKey","rawRowKey","_props$estimatedRowHe","estimatedRowHeight","estimatedColumnWidth","_props$overscanRows","overscanRows","_props$overscanColumn","overscanColumns","_props$pipeline","defaultPipeline","rawRowClassName","getOffsetTopImpl","_props$virtualHeader","virtualHeader","bodyRoot","mergedBodyRootRef","_rootNode$current$off","_rootNode$current2","_rootNode$current$get","_rootNode$current","getBoundingClientRect","_pipeline$use","rootRef","pipelineColumns","onPipelineRow","setColumnWidths","columnWidthsRef","updateColumnWidths","tableColumnsContext","_useColumnVirtualize","console","warn","error","onRowClassName","onRowProps","some","fullHeaderColumns","headerColumns","contentNode","_Fragment","rootMergedRef","table"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../../packages/virtual-table/src/utils/equal.ts","../../packages/virtual-table/src/core/hooks/useShallowMemo.ts","../../packages/virtual-table/src/core/utils/get-key.ts","../../packages/virtual-table/src/core/utils/verification.ts","../../packages/virtual-table/src/core/context/column-sizes.tsx","../../packages/virtual-table/src/core/context/sticky.tsx","../../packages/virtual-table/src/core/pipeline/render-pipeline.ts","../../packages/virtual-table/src/core/cell.tsx","../../packages/virtual-table/src/core/colgroup.tsx","../../packages/virtual-table/src/utils/dom.ts","../../packages/virtual-table/src/core/hooks/useCalcSize.ts","../../packages/virtual-table/src/core/context/container-size.tsx","../../packages/virtual-table/src/core/context/horizontal-scroll.tsx","../../packages/virtual-table/src/core/context/row-manager.tsx","../../packages/virtual-table/src/core/hooks/useStableFn.ts","../../packages/virtual-table/src/core/pipeline/create-middleware.ts","../../packages/virtual-table/src/core/pipeline/table-pipeline.ts","../../packages/virtual-table/src/core/pipeline/useTablePipeline.ts","../../packages/virtual-table/src/utils/find-last-index.ts","../../packages/virtual-table/src/core/row.tsx","../../packages/virtual-table/src/utils/ref.ts","../../packages/virtual-table/src/core/utils/on-resize.ts","../../packages/virtual-table/src/core/hooks/useRowVirtualize.ts","../../packages/virtual-table/src/core/body.tsx","../../packages/virtual-table/src/core/header.tsx","../../packages/virtual-table/src/core/hooks/useColumnVirtualize.ts","../../packages/virtual-table/src/core/root.tsx","../../packages/virtual-table/src/core/table.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nexport type validObjectValue = Record<string, any> | null | undefined\nexport type validArrayValue = any[] | null | undefined\n\nexport function shallowEqualObjects(\n objA: validObjectValue,\n objB: validObjectValue,\n): boolean {\n if (objA === objB) {\n return true\n }\n\n if (!objA || !objB) {\n return false\n }\n\n const aKeys = Object.keys(objA)\n const bKeys = Object.keys(objB)\n const len = aKeys.length\n\n if (bKeys.length !== len) {\n return false\n }\n\n for (let i = 0; i < len; i += 1) {\n const key = aKeys[i]\n\n if (objA[key] !== objB[key] || !Object.prototype.hasOwnProperty.call(objB, key)) {\n return false\n }\n }\n\n return true\n}\n\nexport function shallowEqualArrays(\n arrA: validArrayValue,\n arrB: validArrayValue,\n): boolean {\n if (arrA === arrB) {\n return true\n }\n\n if (!arrA || !arrB) {\n return false\n }\n\n const len = arrA.length\n\n if (arrB.length !== len) {\n return false\n }\n\n for (let i = 0; i < len; i += 1) {\n if (arrA[i] !== arrB[i]) {\n return false\n }\n }\n\n return true\n}\n\nexport function isShallowEqual(value: unknown, oldValue: unknown) {\n if (Object.is(value, oldValue)) {\n return true\n }\n if (Array.isArray(value) && Array.isArray(oldValue)) {\n if (shallowEqualArrays(value, oldValue)) {\n return true\n }\n if (value.length === oldValue.length) {\n const hasObject = value.findIndex((x) => typeof x === 'object' && x != null) > -1\n if (hasObject) {\n return value.every((state, index) => {\n if (Array.isArray(state)) {\n return shallowEqualArrays(state, oldValue[index] as unknown[])\n }\n if (typeof state === 'object' && state != null) {\n return shallowEqualObjects(\n state as Record<string, unknown>,\n oldValue[index] as Record<string, unknown>,\n )\n }\n return Object.is(state, oldValue[index])\n })\n }\n }\n return false\n }\n if (value instanceof Map && oldValue instanceof Map) {\n const keys = Array.from(value.keys())\n const oldKeys = Array.from(oldValue.keys())\n if (isShallowEqual(keys, oldKeys)) {\n const values = Array.from(value.values())\n const oldValues = Array.from(oldValue.values())\n if (isShallowEqual(values, oldValues)) {\n return true\n }\n }\n return false\n }\n if (typeof value === 'object' && value != null) {\n return shallowEqualObjects(value, oldValue as Record<string, unknown>)\n }\n return false\n}\n","/* eslint-disable react-compiler/react-compiler */\nimport { useRef } from 'react'\n\nimport { isShallowEqual } from '../../utils/equal'\n\n/**\n * 缓存数据(浅比较,如果是数组则对第一层进行浅比较)\n */\nexport function useShallowMemo<T>(pickData: () => T) {\n const nextState = pickData()\n const value = useRef<T>(nextState)\n\n if (!isShallowEqual(nextState, value.current)) {\n value.current = nextState\n }\n\n return value.current\n}\n","import type { Key } from 'react'\nimport type { ColumnType } from '../types'\n\nexport function getKey<T>(column: ColumnType<T>) {\n return 'key' in column ? (column.key as Key) : column.dataIndex as string\n}\n","export type FixedType = 'left' | 'right'\n\nexport function isValidFixedLeft(fixed: unknown) {\n return fixed === 'left'\n}\n\nexport function isValidFixedRight(fixed: unknown) {\n return fixed === 'right'\n}\n\nexport function isValidFixed(fixed: unknown) {\n return isValidFixedLeft(fixed) || isValidFixedRight(fixed)\n}\n","import type { Key } from 'react'\nimport { createContext, useContext } from 'react'\n\nexport interface TableColumnsContextType {\n widthList: Map<Key, number>\n setWidthList: (value: Map<Key, number>) => void\n}\n\nexport const ColumnSizes = createContext<TableColumnsContextType | null>(null)\n\nif (__DEV__) {\n ColumnSizes.displayName = 'VirtualTable.ColumnSizes'\n}\n\nexport function useColumnSizes() {\n const context = useContext(ColumnSizes)\n if (context == null) {\n throw new Error('useColumnSizes provider not found')\n }\n return context\n}\n","import type { Key, PropsWithChildren } from 'react'\nimport type { ColumnType, FixedType } from '../types'\nimport { createContext, useContext, useMemo } from 'react'\nimport { useShallowMemo } from '../hooks/useShallowMemo'\nimport { getKey } from '../utils/get-key'\nimport { isValidFixedLeft, isValidFixedRight } from '../utils/verification'\nimport { useColumnSizes } from './column-sizes'\n\nexport interface StickyContextState {\n size: Map<Key, number>\n /** 每一列设置的 fixed 值 */\n fixed: { key: Key, fixed: FixedType | undefined }[]\n}\n\nexport const Sticky = createContext<StickyContextState | null>(null)\n\nif (__DEV__) {\n Sticky.displayName = 'VirtualTable.Sticky'\n}\n\nexport function StickyContext(\n props: PropsWithChildren<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n columns: ColumnType<any>[]\n }>,\n) {\n const { columns, children } = props\n const { widthList } = useColumnSizes()\n\n const columnsFixedRecord = useMemo(() => {\n return columns.map((column) => {\n const key = getKey(column)\n return { key, fixed: column.fixed }\n })\n }, [columns])\n\n const stickySizes = useMemo(() => {\n let left = 0\n const leftOffset = columnsFixedRecord.reduce<number[]>((res, item, index) => {\n const { fixed, key } = item\n if (isValidFixedLeft(fixed)) {\n res[index] = left\n // eslint-disable-next-line react-compiler/react-compiler\n left += widthList.get(key) ?? 0\n }\n return res\n }, [])\n\n let right = 0\n const rightOffset = columnsFixedRecord.reduceRight((res, item, index) => {\n const { fixed, key } = item\n if (isValidFixedRight(fixed)) {\n res[index] = right\n right += widthList.get(key) ?? 0\n }\n return res\n }, [] as number[])\n\n return columnsFixedRecord.reduce((result, item, index) => {\n const { key, fixed } = item\n if (isValidFixedLeft(fixed)) {\n result.set(key, leftOffset[index])\n return result\n }\n if (isValidFixedRight(fixed)) {\n result.set(key, rightOffset[index])\n return result\n }\n return result\n }, new Map<Key, number>())\n }, [columnsFixedRecord, widthList])\n\n const shallowMemoFixedRecord = useShallowMemo(() => columnsFixedRecord)\n const shallowMemoStickySizes = useShallowMemo(() => stickySizes)\n\n const stickyState = useMemo((): StickyContextState => {\n return { size: shallowMemoStickySizes, fixed: shallowMemoFixedRecord }\n }, [shallowMemoFixedRecord, shallowMemoStickySizes])\n\n return (\n <Sticky.Provider value={stickyState}>\n {children}\n </Sticky.Provider>\n )\n}\n\nexport function useTableSticky() {\n const context = useContext(Sticky)\n if (context == null) {\n throw new Error('useTableSticky provider not found')\n }\n return context\n}\n","import type { ReactNode } from 'react'\nimport type { MergedMiddlewareRender } from './types'\n\ntype RenderOptions<T> = T extends ((children: ReactNode, options: infer Opt) => ReactNode) ? Opt : object\n\nexport function pipelineRender<T extends MergedMiddlewareRender>(\n node: ReactNode,\n render: T | undefined,\n options: RenderOptions<T>,\n): ReactNode {\n if (typeof render === 'function') {\n // @ts-expect-error: There is no way to declare the type correctly, but it works at runtime.\n return render(node, options)\n }\n return node\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { DetailedHTMLProps, HTMLAttributes, ReactElement } from 'react'\nimport type { MiddlewareRenderCell } from './pipeline/types'\nimport type { AnyObject, ColumnType } from './types'\nimport clsx from 'clsx'\nimport { memo } from 'react'\nimport { useTableSticky } from './context/sticky'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport { getKey } from './utils/get-key'\nimport { isValidFixed, isValidFixedLeft, isValidFixedRight } from './utils/verification'\n\ntype NativeProps = DetailedHTMLProps<\n HTMLAttributes<HTMLTableCellElement>,\n HTMLTableCellElement\n>\n\nexport interface CellProps<T> extends Omit<NativeProps, 'children'> {\n column: ColumnType<T>\n rowIndex: number\n rowData: T\n renderCell?: MiddlewareRenderCell\n}\n\nfunction getTableCellContent<T extends AnyObject>(\n index: number,\n data: T,\n column: ColumnType<any>,\n): any {\n const { render } = column\n const rowData = data as AnyObject\n if ('dataIndex' in column) {\n const dataIndex = column.dataIndex as string\n if (typeof render !== 'function') {\n return rowData[dataIndex]\n }\n return render(rowData[dataIndex], data, index)\n }\n return render?.(data, data, index) ?? null\n}\n\nfunction Cell<T>(props: CellProps<T>) {\n const {\n className,\n style,\n column,\n rowData,\n rowIndex,\n renderCell,\n ...restProps\n } = props\n\n const { align, fixed, onCell } = column\n const key = getKey(column)\n const { size: stickySizes } = useTableSticky()\n\n const {\n className: extraClassName,\n style: extraStyle,\n colSpan,\n rowSpan,\n ...extraProps\n } = onCell?.(rowData, rowIndex) ?? {}\n\n if (colSpan === 0 || rowSpan === 0) {\n return null\n }\n\n return pipelineRender(\n <td\n {...restProps}\n {...extraProps}\n colSpan={colSpan}\n rowSpan={rowSpan}\n className={clsx(\n 'virtual-table-cell',\n align != null && `virtual-table-align-${align}`,\n isValidFixed(fixed) && 'virtual-table-sticky-cell',\n className,\n column.className,\n extraClassName,\n )}\n style={{\n ...style,\n ...extraStyle,\n left: isValidFixedLeft(fixed) ? stickySizes.get(key) : undefined,\n right: isValidFixedRight(fixed) ? stickySizes.get(key) : undefined,\n }}\n >\n {getTableCellContent(rowIndex, rowData as AnyObject, column)}\n </td>,\n renderCell,\n { column },\n )\n}\n\nexport default memo(Cell) as <T>(props: CellProps<T>) => ReactElement\n","import type { FC, Key } from 'react'\nimport type { ColumnDescriptor } from './types'\nimport { memo, useRef } from 'react'\nimport { isShallowEqual } from '../utils/equal'\n\nexport interface ColgroupProps {\n columns: ColumnDescriptor[]\n onColumnSizesMeasure?: (columnSizes: Map<Key, number>) => void\n}\n\nconst Colgroup: FC<ColgroupProps> = (props) => {\n const { columns, onColumnSizesMeasure } = props\n\n const enableMeasure = onColumnSizesMeasure != null\n const columnSizes = new Map<Key, number>()\n const prevColumnSizes = useRef(new Map<Key, number>())\n\n return (\n <colgroup\n ref={() => {\n if (!enableMeasure) return\n if (!isShallowEqual(columnSizes, prevColumnSizes.current)) {\n onColumnSizesMeasure(columnSizes)\n prevColumnSizes.current = columnSizes\n }\n }}\n >\n {columns.map((item) => {\n const { key } = item\n if (item.type === 'blank') {\n return <col key={key} className=\"blank\" style={{ width: item.width }} />\n }\n\n const { column } = item\n\n return (\n <col\n key={key}\n ref={(node) => {\n if (node == null || !enableMeasure) return\n columnSizes.set(key, node.offsetWidth)\n }}\n style={{\n width: column.width,\n minWidth: column.minWidth,\n }}\n />\n )\n })}\n </colgroup>\n )\n}\n\nexport default memo(Colgroup)\n","export type ScrollElement = HTMLElement | Window\n\nconst overflowStylePatterns = /auto|scroll|overlay|hidden/\n\nfunction isElement(node: unknown): node is Node {\n if (!(node instanceof Node)) {\n return false\n }\n const ELEMENT_NODE_TYPE = 1\n return node.nodeType === ELEMENT_NODE_TYPE\n}\n\nexport function getScrollParent(\n el: Element,\n root: ScrollElement | null | undefined = window,\n): ScrollElement {\n let node = el\n\n while (node !== root && isElement(node)) {\n if (node === document.body) {\n return root as HTMLElement\n }\n const { overflow, overflowY, overflowX } = window.getComputedStyle(node)\n if (overflowStylePatterns.test(overflow + overflowY + overflowX)) {\n return node as HTMLElement\n }\n node = node.parentNode as Element\n }\n return el.ownerDocument.defaultView ?? window\n}\n\nexport function isWindow(arg: unknown): arg is Window {\n return Object.prototype.toString.call(arg) === '[object Window]'\n}\n\nexport function isDocument(arg: unknown): arg is Document {\n return Object.prototype.toString.call(arg) === '[object HTMLDocument]'\n}\n\nexport function isRoot(arg: unknown): arg is HTMLElement {\n return Object.prototype.toString.call(arg) === '[object HTMLHtmlElement]'\n}\n\nexport function getScrollElement(el: unknown): Element {\n if (isDocument(el)) {\n return el.scrollingElement!\n }\n if (isElement(el)) {\n return el as Element\n }\n return document.scrollingElement!\n}\n","import type { RefObject } from 'react'\nimport type { ScrollElement } from '../../utils/dom'\nimport { useLayoutEffect, useRef, useState } from 'react'\nimport { isWindow } from '../../utils/dom'\n\nexport interface CalcSizeOptions {\n getScroller: () => ScrollElement | undefined\n root: RefObject<HTMLDivElement>\n}\n\nexport function useCalcSize(options: CalcSizeOptions) {\n const { getScroller, root } = options\n\n const [scrollContainerWidth, setScrollContainerWidth] = useState(0)\n const [scrollContainerHeight, setScrollContainerHeight] = useState(0)\n\n const [tableWidth, setTableWidth] = useState(0)\n const [tableHeight, setTableHeight] = useState(0)\n\n const scrollerContainerRef = useRef<HTMLElement | null>(null)\n\n useLayoutEffect(() => {\n const scrollerContainer = getScroller()\n if (scrollerContainer == null) return\n let scroller: HTMLElement\n if (isWindow(scrollerContainer)) {\n scroller = document.scrollingElement as HTMLElement\n } else {\n scroller = scrollerContainer\n }\n scrollerContainerRef.current = scroller\n const observer = new ResizeObserver((entries) => {\n const { width, height } = entries[0].contentRect\n setScrollContainerWidth(width)\n setScrollContainerHeight(height)\n })\n observer.observe(scroller)\n return () => {\n observer.disconnect()\n }\n }, [getScroller])\n\n useLayoutEffect(() => {\n const node = root.current\n if (node == null) return\n const observer = new ResizeObserver((entries) => {\n const { width, height } = entries[0].contentRect\n setTableWidth(width)\n setTableHeight(height)\n })\n observer.observe(node)\n return () => {\n observer.disconnect()\n }\n }, [root])\n\n return {\n scrollContainerWidth,\n scrollContainerHeight,\n tableWidth,\n tableHeight,\n }\n}\n","import type { PropsWithChildren } from 'react'\nimport type { CalcSizeOptions } from '../hooks/useCalcSize'\nimport { createContext, useContext, useMemo } from 'react'\nimport { useCalcSize } from '../hooks/useCalcSize'\n\nexport interface ContainerSizeState {\n scrollContainerWidth: number\n scrollContainerHeight: number\n tableWidth: number\n tableHeight: number\n}\n\nconst ContainerSize = createContext<ContainerSizeState | null>(null)\n\nexport function ContainerSizeContext(props: PropsWithChildren<CalcSizeOptions>) {\n const { getScroller, root, children } = props\n\n const {\n scrollContainerHeight,\n scrollContainerWidth,\n tableHeight,\n tableWidth,\n } = useCalcSize({ getScroller, root })\n\n const state = useMemo((): ContainerSizeState => {\n return {\n scrollContainerWidth,\n scrollContainerHeight,\n tableWidth,\n tableHeight,\n }\n }, [scrollContainerWidth, scrollContainerHeight, tableWidth, tableHeight])\n\n return (\n <ContainerSize.Provider value={state}>\n {children}\n </ContainerSize.Provider>\n )\n}\n\nexport function useContainerSize() {\n const context = useContext(ContainerSize)\n if (context == null) {\n throw new Error('useContainerSize provider not found')\n }\n return context\n}\n","import type { PropsWithChildren } from 'react'\nimport { createContext, useContext, useMemo, useRef } from 'react'\n\ntype Listener = (scrollLeft: number, node: HTMLElement) => void\n\nexport interface HorizontalScrollContextState {\n listen: (key: string, listener: Listener) => () => void\n notify: (key: string, options: { scrollLeft: () => number, node: HTMLElement }) => void\n}\n\nconst HorizontalScroll = createContext<HorizontalScrollContextState | null>(null)\n\nif (__DEV__) {\n HorizontalScroll.displayName = 'VirtualTable.HorizontalScroll'\n}\n\nexport function HorizontalScrollContext(props: PropsWithChildren) {\n const { children } = props\n\n const listenerMap = useRef(new Map<string, Listener>())\n const context = useMemo((): HorizontalScrollContextState => {\n const skipEvent = new Set<string>()\n return {\n listen(key, listener) {\n listenerMap.current.set(key, (scrollLeft, node) => {\n listener(scrollLeft, node)\n })\n return () => {\n listenerMap.current.delete(key)\n }\n },\n notify(key, options) {\n if (skipEvent.has(key)) {\n skipEvent.delete(key)\n return\n }\n const { scrollLeft, node } = options\n let rAF = window.requestAnimationFrame as ((fn: () => void) => void) | undefined\n if (rAF == null) {\n rAF = (fn: () => void) => {\n fn()\n }\n }\n listenerMap.current.forEach((listener, itemKey) => {\n if (key === itemKey) return\n skipEvent.add(itemKey)\n rAF(() => {\n listener(scrollLeft(), node)\n })\n })\n },\n }\n }, [])\n\n return <HorizontalScroll.Provider value={context}>{children}</HorizontalScroll.Provider>\n}\n\nexport function useHorizontalScrollContext() {\n const context = useContext(HorizontalScroll)\n\n if (context == null) {\n throw new Error('useHorizontalScrollContext provider not found')\n }\n\n return context\n}\n","import type { Key } from 'react'\nimport { createContext, useContext } from 'react'\n\nexport interface TableRowManagerContextType {\n getRowHeightList: () => number[]\n /**\n * @param index rowIndex\n * @param key 唯一的 key,用于去重\n * @param height 行高\n */\n updateRowHeight: (index: number, key: Key, height: number) => void\n}\n\nexport const TableRowManager = createContext<TableRowManagerContextType | null>(null)\n\nif (__DEV__) {\n TableRowManager.displayName = 'VirtualTable.RowManager'\n}\n\nexport function useTableRowManager() {\n const context = useContext(TableRowManager)\n if (context == null) {\n throw new Error('useTableRowManager provider not found')\n }\n return context\n}\n","import { useCallback, useLayoutEffect, useRef } from 'react'\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport function useStableFn<T extends Function>(callback: T): T {\n const fn = useRef<T | null>(null)\n useLayoutEffect(() => {\n fn.current = callback\n })\n\n const stableFn = useCallback((...args: unknown[]) => {\n return fn.current?.(...args) as unknown\n }, []) as unknown as T\n\n return stableFn\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Middleware, MiddlewareContext, MiddlewareResult } from './types'\nimport { isShallowEqual } from '../../utils/equal'\n\n/**\n * 创建中间件,内部会浅比较 options,只有 options 改变才会返回新的函数。\n */\nfunction createMiddleware<T, Args extends any[]>(\n hook: (ctx: MiddlewareContext<T>, ...args: Args) => MiddlewareResult<T>,\n): (...args: Args) => Middleware<T> {\n const cache = {\n current: null as Middleware<T> | null,\n options: null as Args | null | undefined,\n }\n\n return (...options: Args): Middleware<T> => {\n const useMiddleware: Middleware<T> = (ctx) => hook(ctx, ...options)\n\n if (isShallowEqual(options, cache.options)) {\n return cache.current ?? useMiddleware\n }\n\n cache.options = options\n cache.current = useMiddleware\n\n return useMiddleware\n }\n}\n\nexport type { MiddlewareResult }\nexport { createMiddleware }\n","import type { ReactNode } from 'react'\nimport type { OnRowType } from '../types'\nimport type { Middleware, MiddlewareContext, MiddlewareRenders, MiddlewareResult } from './types'\nimport clsx from 'clsx'\n\nexport interface Hook<T> { priority: number, hook: Middleware<T> }\nexport type UnsafeHook<T> = Middleware<T> | undefined | null | Hook<T>\n\ntype RenderFunctions<T> = {\n [K in keyof T]: (T[K])[]\n}\n\nexport function shakeUnsafeHooks<T>(hooks: UnsafeHook<T>[]): Hook<T>[] {\n if (Array.isArray(hooks)) {\n return hooks.filter((x) => {\n return x != null && (typeof x === 'function' || typeof x.hook === 'function')\n }).map((hook): Hook<T> => {\n if (typeof hook === 'function') {\n return { priority: 100, hook }\n }\n return hook!\n })\n }\n return []\n}\n\nexport class TablePipeline<T> {\n constructor() {\n this.use = this.use.bind(this)\n }\n\n hooks: Hook<T>[] = []\n\n setHooks(value: Hook<T>[]) {\n this.hooks = value\n }\n\n use(options: MiddlewareContext<T>): MiddlewareResult<T> {\n if (this.hooks.length === 0) {\n return options\n }\n\n const context: { current: MiddlewareResult<T> } = { current: options }\n\n const renderFunctionMap: RenderFunctions<Required<MiddlewareRenders>> = {\n render: [],\n renderRoot: [],\n renderContent: [],\n renderHeaderWrapper: [],\n renderHeaderRoot: [],\n renderHeader: [],\n renderHeaderRow: [],\n renderHeaderCell: [],\n renderBodyWrapper: [],\n renderBodyRoot: [],\n renderBody: [],\n renderRow: [],\n renderCell: [],\n }\n\n const rowClassNameFunctions: ((record: T, index: number) => string)[] = []\n const onRowFunctions: OnRowType<T>[] = []\n\n const hooks = this.hooks.slice()\n hooks.sort((a, b) => a.priority - b.priority)\n\n hooks.map((x) => x.hook).forEach((hook) => {\n const nextCtx = hook(context.current)\n const {\n render: _render,\n renderRoot: _renderRoot,\n renderContent: _renderContent,\n renderHeaderWrapper: _renderHeaderWrapper,\n renderHeaderRoot: _renderHeaderRoot,\n renderHeader: _renderHeader,\n renderHeaderRow: _renderHeaderRow,\n renderHeaderCell: _renderHeaderCell,\n renderBodyWrapper: _renderBodyWrapper,\n renderBodyRoot: _renderBodyRoot,\n renderBody: _renderBody,\n renderRow: _renderRow,\n renderCell: _renderCell,\n\n rowClassName,\n onRow,\n ...rest\n } = nextCtx\n\n Object.entries(renderFunctionMap).forEach(([key, value]) => {\n const target = nextCtx[key as keyof MiddlewareRenders]\n if (typeof target === 'function') {\n // @ts-expect-error: There is no way to declare the type correctly, but it works at runtime.\n value.push(target)\n }\n })\n\n if (typeof rowClassName === 'function') {\n rowClassNameFunctions.push(rowClassName)\n }\n if (typeof onRow === 'function') {\n onRowFunctions.push(onRow)\n }\n context.current = rest\n })\n\n Object.entries(renderFunctionMap).forEach(([key, renders]) => {\n if (renders.length > 0) {\n context.current[key as keyof MiddlewareRenders] = (children, args) => {\n // reduce 把 [render1, render2] 转为 render2(render1(children))\n return renders.reduce<ReactNode>((node, render) => {\n // @ts-expect-error: There is no way to declare the type correctly, but it works at runtime.\n return render(node, args)\n }, children)\n }\n }\n })\n\n if (rowClassNameFunctions.length > 0) {\n context.current.rowClassName = (record, index) => {\n return clsx(...rowClassNameFunctions.map((fn) => fn(record, index)))\n }\n }\n\n if (onRowFunctions.length > 0) {\n context.current.onRow = (record, index) => {\n return onRowFunctions.reduce((result, item) => {\n return { ...result, ...item(record, index) }\n }, {})\n }\n }\n\n return context.current\n }\n\n static defaultPipeline = new TablePipeline()\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Hook } from './table-pipeline'\nimport type { Middleware } from './types'\nimport { useMemo } from 'react'\nimport { shallowEqualArrays } from '../../utils/equal'\nimport { shakeUnsafeHooks, TablePipeline } from './table-pipeline'\n\nexport interface UseTablePipelineOptions<T = any> {\n pipeline?: TablePipeline<T>\n use?: (Middleware<T> | Hook<T>)[]\n}\n\nexport { TablePipeline }\nexport type { Hook }\n\nexport function useTablePipeline<T = any>(options: UseTablePipelineOptions<T>) {\n const { use, pipeline: extraPipeline } = options\n\n const cached = useMemo(() => ({ current: new TablePipeline<T>() }), [])\n\n if (use != null) {\n const nextHooks = shakeUnsafeHooks([...use, ...(extraPipeline?.hooks ?? [])])\n\n if (!shallowEqualArrays(cached.current.hooks, nextHooks)) {\n const pipeline = new TablePipeline<T>()\n pipeline.setHooks(nextHooks)\n cached.current = pipeline\n return pipeline\n }\n }\n\n return cached.current\n}\n","export function findLastIndex<T>(\n arr: T[],\n predicate: (value: T, index: number) => boolean,\n) {\n let result = -1\n for (let i = 0; i < arr.length; i += 1) {\n if (predicate(arr[i], i)) {\n result = i\n }\n }\n return result\n}\n","import type { DetailedHTMLProps, HTMLAttributes, ReactElement } from 'react'\nimport type { MiddlewareRenderCell, MiddlewareRenderRow } from './pipeline/types'\nimport type { InnerColumnDescriptor, OnRowType } from './types'\nimport clsx from 'clsx'\nimport { memo } from 'react'\nimport { findLastIndex } from '../utils/find-last-index'\nimport Cell from './cell'\nimport { useTableRowManager } from './context/row-manager'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport { isValidFixedLeft, isValidFixedRight } from './utils/verification'\n\ntype NativeProps = DetailedHTMLProps<\n HTMLAttributes<HTMLTableRowElement>,\n HTMLTableRowElement\n>\n\nexport interface RowProps<T> extends Omit<NativeProps, 'children'> {\n rowIndex: number\n rowData: T\n columns: InnerColumnDescriptor<T>\n onRow?: OnRowType<T>\n renderRow?: MiddlewareRenderRow\n renderCell?: MiddlewareRenderCell\n}\n\nfunction Row<T>(props: RowProps<T>) {\n const {\n className,\n rowIndex,\n rowData,\n columns: columnDescriptor,\n onRow,\n renderRow,\n renderCell,\n ...rest\n } = props\n\n const { updateRowHeight } = useTableRowManager()\n\n const { columns, descriptor } = columnDescriptor\n\n const lastFixedLeftColumnIndex = findLastIndex(descriptor, (x) => {\n if (x.type === 'blank') {\n return false\n }\n return isValidFixedLeft(x.column.fixed)\n })\n const firstFixedRightColumnIndex = descriptor.findIndex((x) => {\n if (x.type === 'blank') {\n return false\n }\n return isValidFixedRight(x.column.fixed)\n })\n\n const { className: extraClassName, ...extraProps } = onRow?.(rowData, rowIndex) ?? {}\n\n return pipelineRender(\n <tr\n {...rest}\n {...extraProps}\n className={clsx('virtual-table-row', className, extraClassName)}\n ref={(node) => {\n if (node == null) return\n // 小心陷阱:当 table 父元素为 display: none 时,依然会触发 updateRowHeight 函数,并设置高度为 0\n updateRowHeight(rowIndex, rowIndex, node.offsetHeight)\n }}\n >\n {descriptor.map((item, index) => {\n const { key } = item\n if (item.type === 'blank') {\n return <td key={key} />\n }\n const { column } = item\n return (\n <Cell\n key={key}\n className={clsx(\n lastFixedLeftColumnIndex === index && 'virtual-table-cell-fix-left-last',\n firstFixedRightColumnIndex === index\n && 'virtual-table-cell-fix-right-first',\n )}\n column={column}\n rowIndex={rowIndex}\n rowData={rowData}\n renderCell={renderCell}\n />\n )\n })}\n </tr>,\n renderRow,\n { columns, rowIndex, rowData, columnDescriptor: descriptor },\n )\n}\n\nexport default memo(Row) as <T>(props: RowProps<T>) => ReactElement\n","import type { MutableRefObject, Ref } from 'react'\nimport { useCallback } from 'react'\n\ntype PossibleRef<T> = Ref<T> | undefined\n\nexport function assignRef<T>(ref: PossibleRef<T>, value: T) {\n if (typeof ref === 'function') {\n ref(value)\n } else if (typeof ref === 'object' && ref !== null && 'current' in ref) {\n (ref as MutableRefObject<T>).current = value\n }\n}\n\nexport function mergeRefs<T>(...refs: PossibleRef<T>[]) {\n return (node: T | null) => {\n refs.forEach((ref) => assignRef(ref, node))\n }\n}\n\nexport function useMergedRef<T>(...refs: PossibleRef<T>[]) {\n // eslint-disable-next-line react-compiler/react-compiler\n return useCallback(mergeRefs(...refs), refs)\n}\n","import { isWindow } from '../../utils/dom'\n\ninterface ResizeRect {\n width: number\n height: number\n}\n\nexport function onResize(target: Window | HTMLElement, callback: (rect: ResizeRect) => void) {\n if (isWindow(target)) {\n const listener = () => {\n callback({\n width: window.innerWidth,\n height: window.innerHeight,\n })\n }\n listener()\n window.addEventListener('resize', listener)\n return () => {\n window.removeEventListener('resize', listener)\n }\n } else {\n const observer = new ResizeObserver((entries) => {\n const rect = entries[0].contentRect\n callback({ width: rect.width, height: rect.height })\n })\n observer.observe(target)\n return () => {\n observer.disconnect()\n }\n }\n}\n","/* eslint-disable react-compiler/react-compiler */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { ScrollElement } from '../../utils/dom'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport { getScrollElement, isRoot, isWindow } from '../../utils/dom'\nimport { onResize } from '../utils/on-resize'\n\nexport interface RowRect {\n index: number\n height: number\n top: number\n bottom: number\n}\n\ninterface UseRowVirtualizeOptions<T = any> {\n getOffsetTop: () => number\n dataSource: T[]\n getScroller: () => ScrollElement | undefined\n estimateSize: number\n overscan: number\n}\n\nfunction anchorQuery(rects: RowRect[], scrollTop: number) {\n let left = 0\n let right = rects.length - 1\n let index = -1\n\n while (left <= right) {\n const mid = Math.floor((left + right) / 2)\n\n if (rects[mid].bottom > scrollTop) {\n index = mid\n right = mid - 1\n } else {\n left = mid + 1\n }\n }\n\n if (index === -1) {\n return undefined\n }\n\n return rects[index]\n}\n\nexport function useRowVirtualize<T = any>(options: UseRowVirtualizeOptions<T>) {\n const {\n getOffsetTop,\n dataSource: rawData,\n getScroller,\n estimateSize,\n overscan,\n } = options\n\n const [startIndex, setStartIndex] = useState(0)\n const [endIndex, setEndIndex] = useState(0)\n\n const dataSlice = useMemo(() => {\n return rawData.slice(startIndex, endIndex)\n }, [rawData, startIndex, endIndex])\n\n // 行高信息(先填充预估高度,DOM渲染后再更新成实际高度)\n const rowHeights = useRef<number[]>([])\n const fillRowHeights = () => {\n const len = rawData.length\n for (let i = 0; i < len; i++) {\n const target = rowHeights.current[i] as number | undefined\n // 由于 fillRowHeights 是在渲染阶段调用,防止重复渲染时 estimateSize 覆盖了真实 DOM 的高度\n if (target == null) {\n rowHeights.current[i] = estimateSize\n }\n }\n rowHeights.current = rowHeights.current.slice(0, len)\n }\n fillRowHeights()\n\n // 布局信息(也就是锚点元素需要的信息,top,bottom,height,index)\n const rowRects = useRef<RowRect[]>([])\n const updateRowRectList = (shouldSkip = false) => {\n if (shouldSkip && rowRects.current.length > 0) {\n return\n }\n const { rects } = rowHeights.current.reduce((result, height, index) => {\n const nextTop = result.top + height\n result.rects.push({\n index,\n top: result.top,\n height,\n bottom: nextTop,\n })\n result.top = nextTop\n return result\n }, { top: 0, rects: [] as RowRect[] })\n rowRects.current = rects\n }\n\n const setRowHeight = (index: number, height: number) => {\n rowHeights.current[index] = height\n }\n\n // 锚点元素,当前虚拟列表中,最接近滚动容器顶部的元素\n const anchorRef = useRef<RowRect>({\n index: 0,\n height: estimateSize,\n top: 0,\n bottom: estimateSize,\n })\n\n // 用来判断滚动方向\n const scrollTopRef = useRef(0)\n const initial = useRef(false)\n useEffect(() => {\n const container = getScroller()\n if (container == null) return\n\n let count = 0\n\n const getScrollTop = () => {\n const offsetTop = getOffsetTop()\n let result = 0\n if (isWindow(container) || isRoot(container)) {\n result = window.scrollY\n } else {\n const element = getScrollElement(container)\n result = element.scrollTop\n }\n return Math.max(result - offsetTop, 0)\n }\n\n const calcCount = (scrollerContainerHeight: number) => {\n const prevCount = count\n count = Math.ceil(scrollerContainerHeight / estimateSize)\n return { prevCount }\n }\n\n const updateBoundary = (scrollTop: number) => {\n const anchor = anchorQuery(rowRects.current, scrollTop)\n if (anchor != null) {\n anchorRef.current = anchor\n setStartIndex(Math.max(0, anchor.index - overscan))\n setEndIndex(anchor.index + count + overscan)\n }\n }\n\n const onScroll = (e: Event) => {\n const offsetTop = getOffsetTop()\n const scrollElement = getScrollElement(e.target)\n const scrollTop = Math.max(0, scrollElement.scrollTop - offsetTop)\n\n // 是否为向下滚动\n const isScrollDown = scrollTop > scrollTopRef.current\n\n if (isScrollDown) {\n // 如果滚动距离比较小,没有超出锚点元素的边界,就不需要计算 startIndex、endIndex 了\n if (scrollTop > anchorRef.current.bottom) {\n updateBoundary(scrollTop)\n }\n } else {\n if (scrollTop < anchorRef.current.top) {\n updateBoundary(scrollTop)\n }\n }\n\n scrollTopRef.current = scrollTop\n }\n\n let prevHeight = 0\n const stopListen = onResize(container, (rect) => {\n // 处理父元素 display:none 容器高度丢失,导致显示 row 不准确\n if (rect.height === prevHeight || rect.height === 0) {\n return\n }\n prevHeight = rect.height\n calcCount(rect.height)\n const scrollTop = getScrollTop()\n if (!initial.current) {\n initial.current = true\n let nextStartIndex = 0\n // 判断一下当前滚动位置,计算 startIndex(场景:SPA 页面切换且渲染非异步数据)\n if (scrollTop >= estimateSize) {\n nextStartIndex = Math.max(Math.floor(scrollTop / estimateSize) - 1 - overscan, 0)\n }\n const nextEndIndex = nextStartIndex + count + overscan\n setStartIndex(nextStartIndex)\n setEndIndex(nextEndIndex)\n } else {\n updateBoundary(scrollTop)\n }\n })\n\n container.addEventListener('scroll', onScroll)\n return () => {\n stopListen()\n container.removeEventListener('scroll', onScroll)\n }\n }, [estimateSize, getOffsetTop, getScroller, overscan])\n\n const sum = (startIndex: number, endIndex?: number) => {\n return rowHeights.current.slice(startIndex, endIndex).reduce((a, b) => a + b, 0)\n }\n // TODO: React Compiler 测试 topBlank 和 bottomBlank\n const topBlank = sum(0, startIndex)\n const bottomBlank = sum(endIndex)\n\n return {\n startIndex,\n endIndex,\n\n rowHeightList: rowHeights,\n updateRowRectList,\n setRowHeight,\n\n topBlank,\n bottomBlank,\n\n dataSlice,\n }\n}\n","import type { CSSProperties, Key, Ref } from 'react'\nimport type { ScrollElement } from '../utils/dom'\nimport type { TableRowManagerContextType } from './context/row-manager'\nimport type { NecessaryProps } from './internal'\nimport type {\n MiddlewareRenderBody,\n MiddlewareRenderBodyRoot,\n MiddlewareRenderBodyWrapper,\n} from './pipeline/types'\nimport type { RowProps } from './row'\nimport type { AnyObject, InnerColumnDescriptor } from './types'\nimport clsx from 'clsx'\nimport { useCallback, useEffect, useMemo, useRef } from 'react'\nimport { useMergedRef } from '../utils/ref'\nimport Colgroup from './colgroup'\nimport { useColumnSizes } from './context/column-sizes'\nimport { useHorizontalScrollContext } from './context/horizontal-scroll'\nimport { TableRowManager } from './context/row-manager'\nimport { useRowVirtualize } from './hooks/useRowVirtualize'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport Row from './row'\n\nexport interface TableBodyProps<T>\n extends Omit<NecessaryProps<T>, 'columns'>,\n Pick<RowProps<T>, 'onRow' | 'renderRow' | 'renderCell'> {\n className?: string\n style?: CSSProperties\n columns: InnerColumnDescriptor<T>\n bodyWrapperRef?: Ref<HTMLDivElement>\n bodyRootRef?: Ref<HTMLTableElement>\n bodyRef?: Ref<HTMLTableSectionElement>\n overscan: number\n estimateSize: number\n getOffsetTop: () => number\n getScroller: () => ScrollElement | undefined\n rowClassName?: (record: T, index: number) => string\n renderBodyWrapper?: MiddlewareRenderBodyWrapper\n renderBodyRoot?: MiddlewareRenderBodyRoot\n renderBody?: MiddlewareRenderBody\n}\n\nfunction TableBody<T>(props: TableBodyProps<T>) {\n const {\n bodyWrapperRef,\n bodyRootRef,\n bodyRef,\n className,\n style,\n dataSource: rawData,\n columns: columnDescriptor,\n rowKey,\n\n overscan,\n estimateSize,\n\n getScroller,\n getOffsetTop,\n\n rowClassName,\n onRow,\n renderBodyWrapper,\n renderBodyRoot,\n renderBody,\n renderRow,\n renderCell,\n } = props\n\n const {\n startIndex,\n dataSlice: dataSource,\n setRowHeight,\n updateRowRectList,\n rowHeightList,\n topBlank,\n bottomBlank,\n } = useRowVirtualize({\n getOffsetTop,\n dataSource: rawData,\n getScroller,\n estimateSize,\n overscan,\n })\n\n const rowHeights = useRef(new Map<number, Map<Key, number>>())\n const updateRowHeight = useCallback((index: number, key: Key, height: number) => {\n const target = rowHeights.current.get(index) ?? new Map<Key, number>()\n target.set(key, height)\n rowHeights.current.set(index, target)\n }, [])\n\n const rowManageState = useMemo<TableRowManagerContextType>(() => {\n return { updateRowHeight, getRowHeightList: () => rowHeightList.current }\n }, [rowHeightList, updateRowHeight])\n\n const { columns, descriptor } = columnDescriptor\n const tbodyRef = useMergedRef(bodyRef, (elm) => {\n if (elm == null) return\n\n const bodyHeight = elm.offsetHeight\n if (bodyHeight === 0) return\n\n const heights = rowHeights.current\n heights.forEach((row, rowIndex) => {\n const height = Array.from(row.values()).reduce((res, x) => res + x, 0)\n setRowHeight(rowIndex, height)\n })\n updateRowRectList()\n rowHeights.current.clear()\n })\n\n const bodyNode = pipelineRender(\n <tbody ref={tbodyRef}>\n {dataSource.map((e, rowIndex) => {\n const _rowKey = (e as AnyObject)[rowKey as string]\n return (\n <Row\n key={_rowKey}\n className={clsx(rowClassName?.(e, rowIndex))}\n rowIndex={rowIndex + startIndex}\n rowData={e}\n columns={columnDescriptor}\n onRow={onRow}\n renderRow={renderRow}\n renderCell={renderCell}\n />\n )\n })}\n </tbody>,\n renderBody,\n { columns, columnDescriptor: descriptor },\n )\n\n const { setWidthList } = useColumnSizes()\n\n const tableNode = pipelineRender(\n <table\n className={clsx(className, 'virtual-table-body')}\n style={{ ...style, paddingBottom: bottomBlank, paddingTop: topBlank }}\n ref={bodyRootRef}\n >\n <Colgroup\n columns={descriptor}\n onColumnSizesMeasure={setWidthList}\n />\n {bodyNode}\n </table>,\n renderBodyRoot,\n { columns, columnDescriptor: descriptor },\n )\n\n const { listen, notify } = useHorizontalScrollContext()\n const wrapperRef = useRef<HTMLDivElement>(null)\n useEffect(() => {\n const node = wrapperRef.current\n if (node == null) return\n\n const key = 'virtual-table-body'\n const onScroll = () => {\n notify(key, { scrollLeft: () => node.scrollLeft, node })\n }\n const dispose = listen(key, (scrollLeft) => {\n node.scrollLeft = scrollLeft\n })\n node.addEventListener('scroll', onScroll)\n return () => {\n node.removeEventListener('scroll', onScroll)\n dispose()\n }\n }, [listen, notify])\n\n const mergedRef = useMergedRef(wrapperRef, bodyWrapperRef)\n\n return (\n <TableRowManager.Provider value={rowManageState}>\n {pipelineRender(\n <div\n ref={mergedRef}\n className=\"virtual-table-body-wrapper\"\n >\n {tableNode}\n </div>,\n renderBodyWrapper,\n { columns, columnDescriptor: descriptor },\n )}\n </TableRowManager.Provider>\n )\n}\n\nexport default TableBody\n","import type { CSSProperties, FC, RefObject } from 'react'\nimport type {\n MiddlewareRenderHeader,\n MiddlewareRenderHeaderCell,\n MiddlewareRenderHeaderRoot,\n MiddlewareRenderHeaderRow,\n MiddlewareRenderHeaderWrapper,\n} from './pipeline/types'\nimport type { InnerColumnDescriptor } from './types'\nimport clsx from 'clsx'\nimport { createElement, Fragment, useEffect, useRef } from 'react'\nimport { findLastIndex } from '../utils/find-last-index'\nimport { useMergedRef } from '../utils/ref'\nimport Colgroup from './colgroup'\nimport { useColumnSizes } from './context/column-sizes'\nimport { useHorizontalScrollContext } from './context/horizontal-scroll'\nimport { useTableSticky } from './context/sticky'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport { getKey } from './utils/get-key'\nimport { isValidFixed, isValidFixedLeft, isValidFixedRight } from './utils/verification'\n\nexport interface TableHeaderProps {\n className?: string\n style?: CSSProperties\n\n wrapperRef?: RefObject<HTMLDivElement>\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n columns: InnerColumnDescriptor<any>\n\n /** 开启表头 sticky,设置为 true 则默认 top 为 0,为 number 则是偏移量 */\n stickyHeader?: number | boolean\n\n renderHeaderWrapper?: MiddlewareRenderHeaderWrapper\n renderHeaderRoot?: MiddlewareRenderHeaderRoot\n renderHeader?: MiddlewareRenderHeader\n renderHeaderRow?: MiddlewareRenderHeaderRow\n renderHeaderCell?: MiddlewareRenderHeaderCell\n}\n\nconst TableHeader: FC<TableHeaderProps> = (props) => {\n const {\n className,\n style,\n wrapperRef,\n columns: columnDescriptor,\n stickyHeader,\n renderHeaderWrapper,\n renderHeaderRoot,\n renderHeader,\n renderHeaderRow,\n renderHeaderCell,\n } = props\n\n const { columns, descriptor } = columnDescriptor\n const lastColumn = columns[columns.length - 1]\n\n const { widthList } = useColumnSizes()\n const { size: stickySizes } = useTableSticky()\n\n const lastFixedLeftColumnIndex = findLastIndex(descriptor, (x) => {\n if (x.type === 'blank') {\n return false\n }\n return isValidFixedLeft(x.column.fixed)\n })\n const firstFixedRightColumnIndex = descriptor.findIndex((x) => {\n if (x.type === 'blank') {\n return false\n }\n return isValidFixedRight(x.column.fixed)\n })\n const { listen, notify } = useHorizontalScrollContext()\n\n const headerWrapperRef = useRef<HTMLDivElement>(null)\n useEffect(() => {\n const node = headerWrapperRef.current\n if (node == null) return\n const key = 'virtual-table-header'\n const onScroll = () => {\n notify(key, { scrollLeft: () => node.scrollLeft, node })\n }\n const dispose = listen(key, (scrollLeft) => {\n node.scrollLeft = scrollLeft\n })\n node.addEventListener('scroll', onScroll)\n return () => {\n node.removeEventListener('scroll', onScroll)\n dispose()\n }\n }, [listen, notify])\n\n const row = pipelineRender(\n <tr>\n {descriptor.map((item, index) => {\n const { key } = item\n if (item.type === 'blank') {\n return <th key={key} data-blank />\n }\n\n const { column } = item\n\n if (column.colSpan === 0) {\n return null\n }\n\n const isLast = getKey(lastColumn) === key\n const {\n className: thClassName,\n style: thStyle,\n ...rest\n } = column.onHeaderCell?.(column, index) ?? {}\n\n return (\n <Fragment key={key}>\n {pipelineRender(\n createElement(\n 'th',\n {\n scope: 'col',\n ...rest,\n colSpan: column.colSpan,\n className: clsx(\n 'virtual-table-header-cell',\n isLast && 'no-split',\n column.align != null && `virtual-table-align-${column.align}`,\n isValidFixed(column.fixed) && 'virtual-table-sticky-cell',\n lastFixedLeftColumnIndex === index && 'virtual-table-cell-fix-left-last',\n firstFixedRightColumnIndex === index && 'virtual-table-cell-fix-right-first',\n column.className,\n thClassName,\n ),\n style: {\n ...thStyle,\n left: isValidFixedLeft(column.fixed) ? stickySizes.get(key) : undefined,\n right: isValidFixedRight(column.fixed)\n ? stickySizes.get(key)\n : undefined,\n },\n },\n column.title,\n ),\n renderHeaderCell,\n { column, columns, columnWidths: widthList, columnDescriptor: descriptor },\n )}\n </Fragment>\n )\n })}\n </tr>,\n renderHeaderRow,\n { columns, columnDescriptor: descriptor },\n )\n\n const theadNode = pipelineRender(\n <thead className=\"virtual-table-thead\">{row}</thead>,\n renderHeader,\n { columns, columnDescriptor: descriptor },\n )\n\n const tableNode = pipelineRender(\n <table\n style={style}\n >\n <Colgroup columns={descriptor} />\n {theadNode}\n </table>,\n renderHeaderRoot,\n { columns, columnDescriptor: descriptor },\n )\n\n const mergedRef = useMergedRef(wrapperRef, headerWrapperRef)\n\n return pipelineRender(\n <div\n ref={mergedRef}\n className={clsx('virtual-table-header', className, {\n 'virtual-table-header-sticky': stickyHeader,\n })}\n style={{\n top: Number.isFinite(stickyHeader) ? (stickyHeader as number) : undefined,\n }}\n >\n {tableNode}\n </div>,\n renderHeaderWrapper,\n { columns, columnDescriptor: descriptor },\n )\n}\n\nexport default TableHeader\n","import type { Key, RefObject } from 'react'\nimport type { ColumnDescriptor, ColumnType } from '../types'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport { findLastIndex } from '../../utils/find-last-index'\nimport { getKey } from '../utils/get-key'\nimport { onResize } from '../utils/on-resize'\nimport { isValidFixedLeft, isValidFixedRight } from '../utils/verification'\nimport { useStableFn } from './useStableFn'\n\ninterface UseColumnVirtualizeOptions<T> {\n estimateSize: number\n overscan: number\n columns: ColumnType<T>[]\n bodyWrapper: RefObject<HTMLDivElement>\n columnWidths: Map<Key, number>\n disabled?: boolean\n}\n\ninterface Rect {\n index: number\n width: number\n left: number\n right: number\n}\n\nfunction anchorQuery(rects: Rect[], scrollLeft: number) {\n let left = 0\n let right = rects.length - 1\n let index = -1\n\n while (left <= right) {\n const mid = Math.floor((left + right) / 2)\n\n if (rects[mid].right > scrollLeft) {\n index = mid\n right = mid - 1\n } else {\n left = mid + 1\n }\n }\n\n if (index === -1) {\n return undefined\n }\n\n return rects[index]\n}\n\nfunction findFirstFixedRightIndex<T>(columns: ColumnType<T>[]) {\n let index = -1\n for (let i = columns.length - 1; i >= 0; i--) {\n const column = columns[i]\n if (isValidFixedRight(column.fixed)) {\n index = i\n } else {\n break\n }\n }\n return index\n}\n\nfunction findLastFixedLeftIndex<T>(columns: ColumnType<T>[]) {\n return findLastIndex(columns, (x) => isValidFixedLeft(x.fixed))\n}\n\nexport function useColumnVirtualize<T>(options: UseColumnVirtualizeOptions<T>) {\n const {\n estimateSize,\n overscan,\n columns: rawColumns,\n bodyWrapper,\n columnWidths,\n disabled = false,\n } = options\n\n const lastFixedLeftIndex = findLastFixedLeftIndex(rawColumns)\n const firstFixedRightIndex = findFirstFixedRightIndex(rawColumns)\n\n const leftKey = lastFixedLeftIndex > -1 ? getKey(rawColumns[lastFixedLeftIndex]) : null\n const rightKey = firstFixedRightIndex > -1 ? getKey(rawColumns[firstFixedRightIndex]) : null\n\n const [startIndex, setStartIndex] = useState(0)\n const [endIndex, setEndIndex] = useState(0)\n\n const rects = useMemo(() => {\n if (disabled) {\n return []\n }\n let left = 0\n return rawColumns.map((column, index): Rect => {\n const key = getKey(column)\n const width = columnWidths.get(key) ?? estimateSize\n const right = left + width\n const rect: Rect = {\n index,\n width,\n left,\n right,\n }\n\n left = right\n return rect\n })\n }, [rawColumns, columnWidths, estimateSize, disabled])\n\n // 锚点元素\n const anchorRef = useRef<Rect>({\n index: 0,\n width: estimateSize,\n left: 0,\n right: estimateSize,\n })\n\n const findAnchorRef = useStableFn((scrollLeft: number) => {\n return anchorQuery(rects, scrollLeft)\n })\n\n const updateBoundary = useStableFn((scrollLeft: number, count: number) => {\n const anchor = findAnchorRef(scrollLeft)\n if (anchor != null) {\n anchorRef.current = anchor\n setStartIndex(Math.max(0, anchor.index - overscan))\n setEndIndex(anchor.index + count + overscan)\n }\n })\n\n // 用来判断滚动方向\n const scrollLeftRef = useRef(0)\n useEffect(() => {\n if (disabled) return\n\n const scrollContainer = bodyWrapper.current\n if (scrollContainer == null) return\n\n const containerWidth = scrollContainer.offsetWidth\n let count = Math.ceil(containerWidth / estimateSize)\n\n const onScroll = () => {\n const scrollLeft = scrollContainer.scrollLeft\n // 滚动条向右移动(界面向左运动)\n const isScrollRight = scrollLeft > scrollLeftRef.current\n if (isScrollRight) {\n if (scrollLeft > anchorRef.current.right) {\n updateBoundary(scrollLeft, count)\n }\n } else {\n if (scrollLeft < anchorRef.current.left) {\n updateBoundary(scrollLeft, count)\n }\n }\n\n scrollLeftRef.current = scrollLeft\n }\n\n scrollContainer.addEventListener('scroll', onScroll)\n\n let prevWidth = 0\n const stop = onResize(scrollContainer, ({ width }) => {\n if (width === prevWidth || width === 0) {\n return\n }\n prevWidth = width\n const scrollLeft = scrollContainer.scrollLeft\n count = Math.ceil(width / estimateSize)\n updateBoundary(scrollLeft, count)\n })\n return () => {\n scrollContainer.removeEventListener('scroll', onScroll)\n stop()\n }\n }, [bodyWrapper, estimateSize, updateBoundary, overscan, findAnchorRef, disabled])\n\n const sum = (startIndex: number, endIndex?: number) => {\n return rects.slice(startIndex, endIndex).reduce((a, b) => a + b.width, 0)\n }\n\n const fixedLeftWidth = lastFixedLeftIndex > -1 ? sum(0, lastFixedLeftIndex + 1) : 0\n const fixedRightWidth = firstFixedRightIndex > -1 ? sum(firstFixedRightIndex) : 0\n\n // 设置 column.fixed 时,对应列将不会虚拟化,所以 blank 需要去除这些列的宽度\n const leftBlank = Math.max(0, sum(0, startIndex) - fixedLeftWidth)\n const rightBlank = Math.max(0, sum(endIndex) - fixedRightWidth)\n\n const columnSlice = useMemo(() => {\n if (disabled) {\n return rawColumns\n }\n const result = [\n ...rawColumns.slice(0, lastFixedLeftIndex + 1),\n ...rawColumns.slice(startIndex, endIndex),\n ...rawColumns.slice(firstFixedRightIndex),\n ]\n const unionKey = new Set<Key>()\n return result.filter((column) => {\n const key = getKey(column)\n if (unionKey.has(key)) {\n return false\n }\n unionKey.add(key)\n return true\n })\n }, [disabled, rawColumns, startIndex, endIndex, lastFixedLeftIndex, firstFixedRightIndex])\n\n const descriptor = useMemo(() => {\n return columnSlice.reduce<ColumnDescriptor<T>[]>((result, column, index) => {\n const key = getKey(column)\n if (key === leftKey) {\n result.push({ type: 'normal', key, column })\n result.push({ type: 'blank', key: '_blank_left', width: leftBlank })\n } else if (leftKey == null && index === 0) {\n result.push({ type: 'blank', key: '_blank_left', width: leftBlank })\n result.push({ type: 'normal', key, column })\n } else if (key === rightKey) {\n result.push({ type: 'blank', key: '_blank_right', width: rightBlank })\n result.push({ type: 'normal', key, column })\n } else if (rightKey == null && index === columnSlice.length - 1) {\n result.push({ type: 'normal', key, column })\n result.push({ type: 'blank', key: '_blank_right', width: rightBlank })\n } else {\n result.push({ type: 'normal', key, column })\n }\n return result\n }, [])\n }, [columnSlice, leftKey, rightKey, leftBlank, rightBlank])\n\n const columns = useMemo(() => {\n return { columns: columnSlice, descriptor }\n }, [columnSlice, descriptor])\n\n return { columns, columnSlice, lastFixedLeftIndex, firstFixedRightIndex }\n}\n","import type { CSSProperties, ForwardedRef, ReactNode, RefObject } from 'react'\nimport type { PipelineRender } from './pipeline/types'\nimport clsx from 'clsx'\nimport { forwardRef, useEffect, useRef, useState } from 'react'\nimport { useMergedRef } from '../utils/ref'\nimport { useHorizontalScrollContext } from './context/horizontal-scroll'\nimport { pipelineRender } from './pipeline/render-pipeline'\n\nexport interface TableRootProps {\n className?: string\n style?: CSSProperties\n children?: ReactNode\n hasFixedLeftColumn?: boolean\n hasFixedRightColumn?: boolean\n bodyScrollContainer: RefObject<HTMLElement>\n renderRoot?: PipelineRender\n}\n\nfunction TableRoot(props: TableRootProps, ref: ForwardedRef<HTMLDivElement>) {\n const {\n className,\n style,\n children,\n hasFixedLeftColumn,\n hasFixedRightColumn,\n renderRoot,\n bodyScrollContainer,\n } = props\n\n const rootNode = useRef<HTMLDivElement>(null)\n\n const [hasFixedLeft, setHasFixedLeft] = useState(false)\n const [hasFixedRight, setHasFixedRight] = useState(false)\n\n const { listen } = useHorizontalScrollContext()\n useEffect(() => {\n if (!hasFixedLeftColumn && !hasFixedRightColumn) {\n return\n }\n const onCheckHasFixedEdge = (node: HTMLElement) => {\n const { scrollLeft, clientWidth, scrollWidth } = node\n if (hasFixedLeftColumn) {\n setHasFixedLeft(scrollLeft !== 0)\n }\n if (hasFixedRightColumn) {\n setHasFixedRight(!(scrollLeft + clientWidth >= scrollWidth))\n }\n }\n const node = bodyScrollContainer.current\n if (node != null) {\n onCheckHasFixedEdge(node)\n }\n return listen('__root', (_scrollLeft, node) => {\n onCheckHasFixedEdge(node)\n })\n }, [bodyScrollContainer, hasFixedLeftColumn, hasFixedRightColumn, listen])\n\n const mergedRef = useMergedRef(ref, rootNode)\n return pipelineRender(\n <div\n ref={mergedRef}\n className={clsx(\n 'virtual-table',\n hasFixedLeft && 'virtual-table-has-fix-left',\n hasFixedRight && 'virtual-table-has-fix-right',\n className,\n )}\n style={style}\n >\n {children}\n </div>,\n renderRoot,\n {},\n )\n}\n\nexport default forwardRef(TableRoot)\n","import type { CSSProperties, ForwardedRef, Key, ReactElement, Ref, RefAttributes } from 'react'\nimport type { TableBodyProps } from './body'\nimport type { TableColumnsContextType } from './context/column-sizes'\nimport type { NecessaryProps } from './internal'\nimport type { ColumnDescriptor, OnRowType } from './types'\nimport clsx from 'clsx'\nimport {\n forwardRef,\n memo,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { getScrollParent, isRoot, isWindow } from '../utils/dom'\nimport { useMergedRef } from '../utils/ref'\nimport TableBody from './body'\nimport { ColumnSizes } from './context/column-sizes'\nimport { ContainerSizeContext } from './context/container-size'\nimport { HorizontalScrollContext } from './context/horizontal-scroll'\nimport { StickyContext } from './context/sticky'\nimport TableHeader from './header'\nimport { useColumnVirtualize } from './hooks/useColumnVirtualize'\nimport { pipelineRender } from './pipeline/render-pipeline'\nimport { TablePipeline } from './pipeline/useTablePipeline'\nimport TableRoot from './root'\nimport { getKey } from './utils/get-key'\nimport { isValidFixedLeft, isValidFixedRight } from './utils/verification'\n\nexport interface VirtualTableCoreProps<T>\n extends NecessaryProps<T>,\n Pick<TableBodyProps<T>, 'rowClassName' | 'onRow'> {\n bodyRootRef?: Ref<HTMLTableElement>\n\n className?: string\n style?: CSSProperties\n\n tableBodyClassName?: string\n tableBodyStyle?: CSSProperties\n\n /** 开启表头 sticky,设置为 true 则默认 top 为 0,为 number 则是偏移量 */\n stickyHeader?: number | boolean\n\n /** 预计每列宽度,需要横向虚拟化时,设置它 */\n estimatedColumnWidth?: number\n /** 预计每行高度 @default 46 */\n estimatedRowHeight?: number\n /** 在头和尾额外渲染多少行 @default 5 */\n overscanRows?: number\n /** 横向虚拟化时,在头和尾额外渲染多少列 @default 3 */\n overscanColumns?: number\n\n /** 开启表头虚拟滚动 @default true */\n virtualHeader?: boolean\n\n pipeline?: TablePipeline<T>\n\n getOffsetTop?: () => number\n}\n\nfunction VirtualTableCore<T>(\n props: VirtualTableCoreProps<T>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const {\n bodyRootRef,\n className,\n style,\n tableBodyClassName,\n tableBodyStyle,\n columns: rawColumns,\n dataSource: rawData,\n rowKey: rawRowKey = 'key',\n estimatedRowHeight = 46,\n estimatedColumnWidth,\n overscanRows = 5,\n overscanColumns = 3,\n stickyHeader,\n pipeline = (TablePipeline.defaultPipeline as TablePipeline<T>),\n rowClassName: rawRowClassName,\n onRow,\n getOffsetTop: getOffsetTopImpl,\n virtualHeader = true,\n } = props\n\n const rootNode = useRef<HTMLDivElement>(null)\n\n const headerWrapperRef = useRef<HTMLDivElement>(null)\n const bodyWrapperRef = useRef<HTMLDivElement>(null)\n const bodyRoot = useRef<HTMLTableElement>(null)\n const mergedBodyRootRef = useMergedRef(bodyRoot, bodyRootRef)\n const bodyRef = useRef<HTMLTableSectionElement>(null)\n\n const getScroller = useCallback(() => {\n const root = rootNode.current\n if (root == null) return\n return getScrollParent(root)\n }, [])\n\n const getOffsetTop = useCallback(() => {\n if (typeof getOffsetTopImpl === 'function') {\n return getOffsetTopImpl()\n }\n const scrollContainer = getScroller()\n if (scrollContainer === rootNode.current) {\n return 0\n }\n if (isWindow(scrollContainer) || isRoot(scrollContainer)) {\n const top = rootNode.current?.getBoundingClientRect().top ?? 0\n return window.scrollY + top\n }\n return rootNode.current?.offsetTop ?? 0\n }, [getOffsetTopImpl, getScroller])\n\n const {\n dataSource,\n columns: pipelineColumns,\n rowKey,\n rowClassName,\n\n render,\n renderRoot,\n renderContent,\n renderHeaderWrapper,\n renderHeaderRoot,\n renderHeader,\n renderHeaderRow,\n renderHeaderCell,\n renderBodyWrapper,\n renderBodyRoot,\n renderBody,\n renderRow,\n renderCell,\n\n onRow: onPipelineRow,\n } = pipeline.use({\n dataSource: rawData,\n rowKey: rawRowKey,\n columns: rawColumns,\n estimatedRowHeight,\n headerWrapperRef,\n bodyWrapperRef,\n bodyRootRef: bodyRoot,\n bodyRef,\n rootRef: rootNode,\n getOffsetTop,\n getScroller,\n })\n\n const [columnWidths, setColumnWidths] = useState(() => new Map<Key, number>())\n const columnWidthsRef = useRef(columnWidths)\n const updateColumnWidths = useCallback((value: Map<Key, number>) => {\n columnWidthsRef.current = value\n setColumnWidths(value)\n }, [])\n\n const tableColumnsContext = useMemo<TableColumnsContextType>(() => {\n return {\n widthList: columnWidths,\n setWidthList: updateColumnWidths,\n }\n }, [columnWidths, updateColumnWidths])\n\n const { columns } = useColumnVirtualize<T>({\n estimateSize: estimatedColumnWidth ?? 100,\n overscan: overscanColumns,\n columns: pipelineColumns,\n bodyWrapper: bodyWrapperRef,\n columnWidths,\n disabled: estimatedColumnWidth == null,\n })\n\n if (__DEV__) {\n pipelineColumns.forEach((column) => {\n if (column.width == null && column.minWidth == null) {\n console.warn('Missing `width` in column', column)\n }\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (getKey(column) == null) {\n console.error('Missing `dataIndex` or `key` in column', column)\n }\n })\n }\n\n const onRowClassName = useCallback((record: T, index: number) => {\n return clsx(rawRowClassName?.(record, index), rowClassName?.(record, index))\n }, [rawRowClassName, rowClassName])\n\n const onRowProps: OnRowType<T> = useCallback((record, index) => {\n return { ...onRow?.(record, index), ...onPipelineRow?.(record, index) }\n }, [onPipelineRow, onRow])\n\n const hasFixedLeftColumn = pipelineColumns.some((x) => isValidFixedLeft(x.fixed))\n const hasFixedRightColumn = pipelineColumns.some((x) => isValidFixedRight(x.fixed))\n\n const fullHeaderColumns = useMemo(() => {\n return {\n columns: pipelineColumns,\n descriptor: pipelineColumns.map((column): ColumnDescriptor => {\n const key = getKey(column)\n return {\n key,\n type: 'normal',\n column,\n }\n }),\n }\n }, [pipelineColumns])\n\n const headerColumns = useMemo(() => {\n if (virtualHeader) {\n return columns\n }\n return fullHeaderColumns\n }, [virtualHeader, fullHeaderColumns, columns])\n\n const contentNode = pipelineRender(\n <>\n <TableHeader\n wrapperRef={headerWrapperRef}\n columns={headerColumns}\n stickyHeader={stickyHeader}\n renderHeaderWrapper={renderHeaderWrapper}\n renderHeaderRoot={renderHeaderRoot}\n renderHeader={renderHeader}\n renderHeaderRow={renderHeaderRow}\n renderHeaderCell={renderHeaderCell}\n />\n <TableBody\n bodyWrapperRef={bodyWrapperRef}\n bodyRootRef={mergedBodyRootRef}\n bodyRef={bodyRef}\n className={tableBodyClassName}\n style={tableBodyStyle}\n columns={columns}\n rowKey={rowKey}\n dataSource={dataSource}\n overscan={overscanRows}\n estimateSize={estimatedRowHeight}\n getScroller={getScroller}\n getOffsetTop={getOffsetTop}\n rowClassName={onRowClassName}\n onRow={onRowProps}\n renderBodyWrapper={renderBodyWrapper}\n renderBodyRoot={renderBodyRoot}\n renderBody={renderBody}\n renderRow={renderRow}\n renderCell={renderCell}\n />\n </>,\n renderContent,\n { columns: columns.columns, columnDescriptor: columns.descriptor },\n )\n\n const rootMergedRef = useMergedRef(rootNode, ref)\n const table = pipelineRender(\n <TableRoot\n ref={rootMergedRef}\n className={className}\n style={style}\n hasFixedLeftColumn={hasFixedLeftColumn}\n hasFixedRightColumn={hasFixedRightColumn}\n renderRoot={renderRoot}\n bodyScrollContainer={bodyWrapperRef}\n >\n {contentNode}\n </TableRoot>,\n render,\n { columns: columns.columns, columnDescriptor: columns.descriptor },\n )\n\n return (\n <ColumnSizes.Provider value={tableColumnsContext}>\n <StickyContext columns={pipelineColumns}>\n <ContainerSizeContext getScroller={getScroller} root={rootNode}>\n <HorizontalScrollContext>{table}</HorizontalScrollContext>\n </ContainerSizeContext>\n </StickyContext>\n </ColumnSizes.Provider>\n )\n}\n\nif (__DEV__) {\n VirtualTableCore.displayName = 'VirtualTable.Core'\n}\n\nexport default memo(forwardRef(VirtualTableCore)) as <T>(\n props: VirtualTableCoreProps<T> & RefAttributes<HTMLDivElement>,\n) => ReactElement\n"],"names":["shallowEqualObjects","objA","objB","aKeys","Object","keys","bKeys","len","length","i","key","prototype","hasOwnProperty","call","shallowEqualArrays","arrA","arrB","isShallowEqual","value","oldValue","is","Array","isArray","hasObject","findIndex","x","every","state","index","Map","from","oldKeys","values","oldValues","useShallowMemo","pickData","nextState","useRef","current","getKey","column","dataIndex","isValidFixedLeft","fixed","isValidFixedRight","isValidFixed","ColumnSizes","createContext","__DEV__","displayName","useColumnSizes","context","useContext","Error","Sticky","StickyContext","props","columns","children","_useColumnSizes","widthList","columnsFixedRecord","useMemo","map","stickySizes","left","leftOffset","reduce","res","item","_widthList$get","get","right","rightOffset","reduceRight","_widthList$get2","result","set","shallowMemoFixedRecord","shallowMemoStickySizes","stickyState","size","_jsx","Provider","useTableSticky","pipelineRender","node","render","options","getTableCellContent","data","_render","rowData","Cell","_onCell","className","style","rowIndex","renderCell","restProps","_objectWithoutPropertiesLoose","_excluded","align","onCell","_useTableSticky","_ref","extraClassName","extraStyle","colSpan","rowSpan","extraProps","_excluded2","_extends","clsx","undefined","memo","Colgroup","onColumnSizesMeasure","enableMeasure","columnSizes","prevColumnSizes","ref","type","width","offsetWidth","minWidth","overflowStylePatterns","isElement","Node","ELEMENT_NODE_TYPE","nodeType","getScrollParent","el","root","_el$ownerDocument$def","window","document","body","_window$getComputedSt","getComputedStyle","overflow","overflowY","overflowX","test","parentNode","ownerDocument","defaultView","isWindow","arg","toString","isDocument","isRoot","getScrollElement","scrollingElement","useCalcSize","getScroller","_useState","useState","scrollContainerWidth","setScrollContainerWidth","_useState2","scrollContainerHeight","setScrollContainerHeight","_useState3","tableWidth","setTableWidth","_useState4","tableHeight","setTableHeight","scrollerContainerRef","useLayoutEffect","scrollerContainer","scroller","observer","ResizeObserver","entries","_entries$0$contentRec","contentRect","height","observe","disconnect","_entries$0$contentRec2","ContainerSize","ContainerSizeContext","_useCalcSize","useContainerSize","HorizontalScroll","HorizontalScrollContext","listenerMap","skipEvent","Set","listen","listener","scrollLeft","notify","has","rAF","requestAnimationFrame","fn","forEach","itemKey","add","useHorizontalScrollContext","TableRowManager","useTableRowManager","useStableFn","callback","stableFn","useCallback","_len","arguments","args","_key","apply","createMiddleware","hook","cache","useMiddleware","ctx","concat","_cache$current","shakeUnsafeHooks","hooks","filter","priority","TablePipeline","defineProperty","use","bind","_proto","setHooks","renderFunctionMap","renderRoot","renderContent","renderHeaderWrapper","renderHeaderRoot","renderHeader","renderHeaderRow","renderHeaderCell","renderBodyWrapper","renderBodyRoot","renderBody","renderRow","rowClassNameFunctions","onRowFunctions","slice","sort","a","b","nextCtx","rowClassName","onRow","rest","target","push","_ref2","renders","record","useTablePipeline","extraPipeline","pipeline","cached","_extraPipeline$hooks","nextHooks","findLastIndex","arr","predicate","Row","_onRow","columnDescriptor","_useTableRowManager","updateRowHeight","descriptor","lastFixedLeftColumnIndex","firstFixedRightColumnIndex","offsetHeight","assignRef","mergeRefs","refs","useMergedRef","_len2","_key2","onResize","innerWidth","innerHeight","addEventListener","removeEventListener","rect","anchorQuery","rects","scrollTop","mid","Math","floor","bottom","useRowVirtualize","getOffsetTop","rawData","dataSource","estimateSize","overscan","startIndex","setStartIndex","endIndex","setEndIndex","dataSlice","rowHeights","fillRowHeights","rowRects","updateRowRectList","shouldSkip","_rowHeights$current$r","nextTop","top","setRowHeight","anchorRef","scrollTopRef","initial","useEffect","container","count","getScrollTop","offsetTop","scrollY","element","max","calcCount","scrollerContainerHeight","prevCount","ceil","updateBoundary","anchor","onScroll","e","scrollElement","isScrollDown","prevHeight","stopListen","nextStartIndex","nextEndIndex","sum","topBlank","bottomBlank","rowHeightList","TableBody","bodyWrapperRef","bodyRootRef","bodyRef","rowKey","_useRowVirtualize","_rowHeights$current$g","rowManageState","getRowHeightList","tbodyRef","elm","bodyHeight","heights","row","clear","bodyNode","_rowKey","setWidthList","tableNode","_jsxs","paddingBottom","paddingTop","_useHorizontalScrollC","wrapperRef","dispose","mergedRef","TableHeader","stickyHeader","lastColumn","headerWrapperRef","_column$onHeaderCell","isLast","onHeaderCell","thClassName","thStyle","Fragment","createElement","scope","title","columnWidths","theadNode","Number","isFinite","findFirstFixedRightIndex","findLastFixedLeftIndex","useColumnVirtualize","rawColumns","bodyWrapper","_options$disabled","disabled","lastFixedLeftIndex","firstFixedRightIndex","leftKey","rightKey","_columnWidths$get","findAnchorRef","scrollLeftRef","scrollContainer","containerWidth","isScrollRight","prevWidth","stop","fixedLeftWidth","fixedRightWidth","leftBlank","rightBlank","columnSlice","unionKey","TableRoot","hasFixedLeftColumn","hasFixedRightColumn","bodyScrollContainer","rootNode","hasFixedLeft","setHasFixedLeft","hasFixedRight","setHasFixedRight","onCheckHasFixedEdge","clientWidth","scrollWidth","_scrollLeft","forwardRef","VirtualTableCore","tableBodyClassName","tableBodyStyle","_props$rowKey","rawRowKey","_props$estimatedRowHe","estimatedRowHeight","estimatedColumnWidth","_props$overscanRows","overscanRows","_props$overscanColumn","overscanColumns","_props$pipeline","defaultPipeline","rawRowClassName","getOffsetTopImpl","_props$virtualHeader","virtualHeader","bodyRoot","mergedBodyRootRef","_rootNode$current$off","_rootNode$current2","_rootNode$current$get","_rootNode$current","getBoundingClientRect","_pipeline$use","rootRef","pipelineColumns","onPipelineRow","setColumnWidths","columnWidthsRef","updateColumnWidths","tableColumnsContext","_useColumnVirtualize","console","warn","error","onRowClassName","onRowProps","some","fullHeaderColumns","headerColumns","contentNode","_Fragment","rootMergedRef","table"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAIgB,SAAAA,mBAAmBA,CACjCC,IAAsB,EACtBC,IAAsB,EAAA;EAEtB,IAAID,IAAI,KAAKC,IAAI,EAAE;AACjB,IAAA,OAAO,IAAI;AACb;AAEA,EAAA,IAAI,CAACD,IAAI,IAAI,CAACC,IAAI,EAAE;AAClB,IAAA,OAAO,KAAK;AACd;AAEA,EAAA,IAAMC,KAAK,GAAGC,MAAM,CAACC,IAAI,CAACJ,IAAI,CAAC;AAC/B,EAAA,IAAMK,KAAK,GAAGF,MAAM,CAACC,IAAI,CAACH,IAAI,CAAC;AAC/B,EAAA,IAAMK,GAAG,GAAGJ,KAAK,CAACK,MAAM;AAExB,EAAA,IAAIF,KAAK,CAACE,MAAM,KAAKD,GAAG,EAAE;AACxB,IAAA,OAAO,KAAK;AACd;AAEA,EAAA,KAAK,IAAIE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,GAAG,EAAEE,CAAC,IAAI,CAAC,EAAE;AAC/B,IAAA,IAAMC,GAAG,GAAGP,KAAK,CAACM,CAAC,CAAC;IAEpB,IAAIR,IAAI,CAACS,GAAG,CAAC,KAAKR,IAAI,CAACQ,GAAG,CAAC,IAAI,CAACN,MAAM,CAACO,SAAS,CAACC,cAAc,CAACC,IAAI,CAACX,IAAI,EAAEQ,GAAG,CAAC,EAAE;AAC/E,MAAA,OAAO,KAAK;AACd;AACF;AAEA,EAAA,OAAO,IAAI;AACb;AAEgB,SAAAI,kBAAkBA,CAChCC,IAAqB,EACrBC,IAAqB,EAAA;EAErB,IAAID,IAAI,KAAKC,IAAI,EAAE;AACjB,IAAA,OAAO,IAAI;AACb;AAEA,EAAA,IAAI,CAACD,IAAI,IAAI,CAACC,IAAI,EAAE;AAClB,IAAA,OAAO,KAAK;AACd;AAEA,EAAA,IAAMT,GAAG,GAAGQ,IAAI,CAACP,MAAM;AAEvB,EAAA,IAAIQ,IAAI,CAACR,MAAM,KAAKD,GAAG,EAAE;AACvB,IAAA,OAAO,KAAK;AACd;AAEA,EAAA,KAAK,IAAIE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,GAAG,EAAEE,CAAC,IAAI,CAAC,EAAE;IAC/B,IAAIM,IAAI,CAACN,CAAC,CAAC,KAAKO,IAAI,CAACP,CAAC,CAAC,EAAE;AACvB,MAAA,OAAO,KAAK;AACd;AACF;AAEA,EAAA,OAAO,IAAI;AACb;AAEgB,SAAAQ,cAAcA,CAACC,KAAc,EAAEC,QAAiB,EAAA;EAC9D,IAAIf,MAAM,CAACgB,EAAE,CAACF,KAAK,EAAEC,QAAQ,CAAC,EAAE;AAC9B,IAAA,OAAO,IAAI;AACb;AACA,EAAA,IAAIE,KAAK,CAACC,OAAO,CAACJ,KAAK,CAAC,IAAIG,KAAK,CAACC,OAAO,CAACH,QAAQ,CAAC,EAAE;AACnD,IAAA,IAAIL,kBAAkB,CAACI,KAAK,EAAEC,QAAQ,CAAC,EAAE;AACvC,MAAA,OAAO,IAAI;AACb;AACA,IAAA,IAAID,KAAK,CAACV,MAAM,KAAKW,QAAQ,CAACX,MAAM,EAAE;AACpC,MAAA,IAAMe,SAAS,GAAGL,KAAK,CAACM,SAAS,CAAC,UAACC,CAAC,EAAA;AAAA,QAAA,OAAK,OAAOA,CAAC,KAAK,QAAQ,IAAIA,CAAC,IAAI,IAAI;OAAC,CAAA,GAAG,EAAE;AACjF,MAAA,IAAIF,SAAS,EAAE;QACb,OAAOL,KAAK,CAACQ,KAAK,CAAC,UAACC,KAAK,EAAEC,KAAK,EAAI;AAClC,UAAA,IAAIP,KAAK,CAACC,OAAO,CAACK,KAAK,CAAC,EAAE;YACxB,OAAOb,kBAAkB,CAACa,KAAK,EAAER,QAAQ,CAACS,KAAK,CAAc,CAAC;AAChE;UACA,IAAI,OAAOD,KAAK,KAAK,QAAQ,IAAIA,KAAK,IAAI,IAAI,EAAE;YAC9C,OAAO3B,mBAAmB,CACxB2B,KAAgC,EAChCR,QAAQ,CAACS,KAAK,CAA4B,CAC3C;AACH;UACA,OAAOxB,MAAM,CAACgB,EAAE,CAACO,KAAK,EAAER,QAAQ,CAACS,KAAK,CAAC,CAAC;AAC1C,SAAC,CAAC;AACJ;AACF;AACA,IAAA,OAAO,KAAK;AACd;AACA,EAAA,IAAIV,KAAK,YAAYW,GAAG,IAAIV,QAAQ,YAAYU,GAAG,EAAE;IACnD,IAAMxB,IAAI,GAAGgB,KAAK,CAACS,IAAI,CAACZ,KAAK,CAACb,IAAI,EAAE,CAAC;IACrC,IAAM0B,OAAO,GAAGV,KAAK,CAACS,IAAI,CAACX,QAAQ,CAACd,IAAI,EAAE,CAAC;AAC3C,IAAA,IAAIY,cAAc,CAACZ,IAAI,EAAE0B,OAAO,CAAC,EAAE;MACjC,IAAMC,MAAM,GAAGX,KAAK,CAACS,IAAI,CAACZ,KAAK,CAACc,MAAM,EAAE,CAAC;MACzC,IAAMC,SAAS,GAAGZ,KAAK,CAACS,IAAI,CAACX,QAAQ,CAACa,MAAM,EAAE,CAAC;AAC/C,MAAA,IAAIf,cAAc,CAACe,MAAM,EAAEC,SAAS,CAAC,EAAE;AACrC,QAAA,OAAO,IAAI;AACb;AACF;AACA,IAAA,OAAO,KAAK;AACd;EACA,IAAI,OAAOf,KAAK,KAAK,QAAQ,IAAIA,KAAK,IAAI,IAAI,EAAE;AAC9C,IAAA,OAAOlB,mBAAmB,CAACkB,KAAK,EAAEC,QAAmC,CAAC;AACxE;AACA,EAAA,OAAO,KAAK;AACd;;ACzGA;AAKA;;AAEG;AACG,SAAUe,cAAcA,CAAIC,QAAiB,EAAA;AACjD,EAAA,IAAMC,SAAS,GAAGD,QAAQ,EAAE;AAC5B,EAAA,IAAMjB,KAAK,GAAGmB,MAAM,CAAID,SAAS,CAAC;EAElC,IAAI,CAACnB,cAAc,CAACmB,SAAS,EAAElB,KAAK,CAACoB,OAAO,CAAC,EAAE;IAC7CpB,KAAK,CAACoB,OAAO,GAAGF,SAAS;AAC3B;EAEA,OAAOlB,KAAK,CAACoB,OAAO;AACtB;;ACdM,SAAUC,MAAMA,CAAIC,MAAqB,EAAA;EAC7C,OAAO,KAAK,IAAIA,MAAM,GAAIA,MAAM,CAAC9B,GAAW,GAAG8B,MAAM,CAACC,SAAmB;AAC3E;;ACHM,SAAUC,gBAAgBA,CAACC,KAAc,EAAA;EAC7C,OAAOA,KAAK,KAAK,MAAM;AACzB;AAEM,SAAUC,iBAAiBA,CAACD,KAAc,EAAA;EAC9C,OAAOA,KAAK,KAAK,OAAO;AAC1B;AAEM,SAAUE,YAAYA,CAACF,KAAc,EAAA;EACzC,OAAOD,gBAAgB,CAACC,KAAK,CAAC,IAAIC,iBAAiB,CAACD,KAAK,CAAC;AAC5D;;ACJO,IAAMG,WAAW,gBAAGC,aAAa,CAAiC,IAAI,CAAC;AAE9E,IAAIC,OAAAA,CAAAA,GAAAA,CAAAA,QAAAA,KAAAA,aAAO,EAAE;EACXF,WAAW,CAACG,WAAW,GAAG,0BAA0B;AACtD;SAEgBC,cAAcA,GAAA;AAC5B,EAAA,IAAMC,OAAO,GAAGC,UAAU,CAACN,WAAW,CAAC;EACvC,IAAIK,OAAO,IAAI,IAAI,EAAE;AACnB,IAAA,MAAM,IAAIE,KAAK,CAAC,mCAAmC,CAAC;AACtD;AACA,EAAA,OAAOF,OAAO;AAChB;;ACNO,IAAMG,MAAM,gBAAGP,aAAa,CAA4B,IAAI,CAAC;AAEpE,IAAIC,OAAAA,CAAAA,GAAAA,CAAAA,QAAAA,KAAAA,aAAO,EAAE;EACXM,MAAM,CAACL,WAAW,GAAG,qBAAqB;AAC5C;AAEM,SAAUM,aAAaA,CAC3BC,KAGE,EAAA;AAEF,EAAA,IAAQC,OAAO,GAAeD,KAAK,CAA3BC,OAAO;IAAEC,QAAQ,GAAKF,KAAK,CAAlBE,QAAQ;AACzB,EAAA,IAAAC,eAAA,GAAsBT,cAAc,EAAE;IAA9BU,SAAS,GAAAD,eAAA,CAATC,SAAS;AAEjB,EAAA,IAAMC,kBAAkB,GAAGC,OAAO,CAAC,YAAK;AACtC,IAAA,OAAOL,OAAO,CAACM,GAAG,CAAC,UAACvB,MAAM,EAAI;AAC5B,MAAA,IAAM9B,GAAG,GAAG6B,MAAM,CAACC,MAAM,CAAC;MAC1B,OAAO;AAAE9B,QAAAA,GAAG,EAAHA,GAAG;QAAEiC,KAAK,EAAEH,MAAM,CAACG;OAAO;AACrC,KAAC,CAAC;AACJ,GAAC,EAAE,CAACc,OAAO,CAAC,CAAC;AAEb,EAAA,IAAMO,WAAW,GAAGF,OAAO,CAAC,YAAK;IAC/B,IAAIG,IAAI,GAAG,CAAC;AACZ,IAAA,IAAMC,UAAU,GAAGL,kBAAkB,CAACM,MAAM,CAAW,UAACC,GAAG,EAAEC,IAAI,EAAEzC,KAAK,EAAI;AAC1E,MAAA,IAAQe,KAAK,GAAU0B,IAAI,CAAnB1B,KAAK;QAAEjC,GAAG,GAAK2D,IAAI,CAAZ3D,GAAG;AAClB,MAAA,IAAIgC,gBAAgB,CAACC,KAAK,CAAC,EAAE;AAAA,QAAA,IAAA2B,cAAA;AAC3BF,QAAAA,GAAG,CAACxC,KAAK,CAAC,GAAGqC,IAAI;AACjB;AACAA,QAAAA,IAAI,IAAAK,CAAAA,cAAA,GAAIV,SAAS,CAACW,GAAG,CAAC7D,GAAG,CAAC,KAAA,IAAA,GAAA4D,cAAA,GAAI,CAAC;AACjC;AACA,MAAA,OAAOF,GAAG;KACX,EAAE,EAAE,CAAC;IAEN,IAAII,KAAK,GAAG,CAAC;AACb,IAAA,IAAMC,WAAW,GAAGZ,kBAAkB,CAACa,WAAW,CAAC,UAACN,GAAG,EAAEC,IAAI,EAAEzC,KAAK,EAAI;AACtE,MAAA,IAAQe,KAAK,GAAU0B,IAAI,CAAnB1B,KAAK;QAAEjC,GAAG,GAAK2D,IAAI,CAAZ3D,GAAG;AAClB,MAAA,IAAIkC,iBAAiB,CAACD,KAAK,CAAC,EAAE;AAAA,QAAA,IAAAgC,eAAA;AAC5BP,QAAAA,GAAG,CAACxC,KAAK,CAAC,GAAG4C,KAAK;AAClBA,QAAAA,KAAK,IAAAG,CAAAA,eAAA,GAAIf,SAAS,CAACW,GAAG,CAAC7D,GAAG,CAAC,KAAA,IAAA,GAAAiE,eAAA,GAAI,CAAC;AAClC;AACA,MAAA,OAAOP,GAAG;KACX,EAAE,EAAc,CAAC;IAElB,OAAOP,kBAAkB,CAACM,MAAM,CAAC,UAACS,MAAM,EAAEP,IAAI,EAAEzC,KAAK,EAAI;AACvD,MAAA,IAAQlB,GAAG,GAAY2D,IAAI,CAAnB3D,GAAG;QAAEiC,KAAK,GAAK0B,IAAI,CAAd1B,KAAK;AAClB,MAAA,IAAID,gBAAgB,CAACC,KAAK,CAAC,EAAE;QAC3BiC,MAAM,CAACC,GAAG,CAACnE,GAAG,EAAEwD,UAAU,CAACtC,KAAK,CAAC,CAAC;AAClC,QAAA,OAAOgD,MAAM;AACf;AACA,MAAA,IAAIhC,iBAAiB,CAACD,KAAK,CAAC,EAAE;QAC5BiC,MAAM,CAACC,GAAG,CAACnE,GAAG,EAAE+D,WAAW,CAAC7C,KAAK,CAAC,CAAC;AACnC,QAAA,OAAOgD,MAAM;AACf;AACA,MAAA,OAAOA,MAAM;AACf,KAAC,EAAE,IAAI/C,GAAG,EAAe,CAAC;AAC5B,GAAC,EAAE,CAACgC,kBAAkB,EAAED,SAAS,CAAC,CAAC;EAEnC,IAAMkB,sBAAsB,GAAG5C,cAAc,CAAC,YAAA;AAAA,IAAA,OAAM2B,kBAAkB;GAAC,CAAA;EACvE,IAAMkB,sBAAsB,GAAG7C,cAAc,CAAC,YAAA;AAAA,IAAA,OAAM8B,WAAW;GAAC,CAAA;AAEhE,EAAA,IAAMgB,WAAW,GAAGlB,OAAO,CAAC,YAAyB;IACnD,OAAO;AAAEmB,MAAAA,IAAI,EAAEF,sBAAsB;AAAEpC,MAAAA,KAAK,EAAEmC;KAAwB;AACxE,GAAC,EAAE,CAACA,sBAAsB,EAAEC,sBAAsB,CAAC,CAAC;AAEpD,EAAA,OACEG,GAAA,CAAC5B,MAAM,CAAC6B,QAAQ,EAAA;AAACjE,IAAAA,KAAK,EAAE8D,WAAW;AAAAtB,IAAAA,QAAA,EAChCA;AAAQ,GAAA,CACO;AAEtB;SAEgB0B,cAAcA,GAAA;AAC5B,EAAA,IAAMjC,OAAO,GAAGC,UAAU,CAACE,MAAM,CAAC;EAClC,IAAIH,OAAO,IAAI,IAAI,EAAE;AACnB,IAAA,MAAM,IAAIE,KAAK,CAAC,mCAAmC,CAAC;AACtD;AACA,EAAA,OAAOF,OAAO;AAChB;;SCvFgBkC,cAAcA,CAC5BC,IAAe,EACfC,MAAqB,EACrBC,OAAyB,EAAA;AAEzB,EAAA,IAAI,OAAOD,MAAM,KAAK,UAAU,EAAE;AAChC;AACA,IAAA,OAAOA,MAAM,CAACD,IAAI,EAAEE,OAAO,CAAC;AAC9B;AACA,EAAA,OAAOF,IAAI;AACb;;;;ACQA,SAASG,mBAAmBA,CAC1B7D,KAAa,EACb8D,IAAO,EACPlD,MAAuB,EAAA;AAAA,EAAA,IAAAmD,OAAA;AAEvB,EAAA,IAAQJ,MAAM,GAAK/C,MAAM,CAAjB+C,MAAM;EACd,IAAMK,OAAO,GAAGF,IAAiB;EACjC,IAAI,WAAW,IAAIlD,MAAM,EAAE;AACzB,IAAA,IAAMC,SAAS,GAAGD,MAAM,CAACC,SAAmB;AAC5C,IAAA,IAAI,OAAO8C,MAAM,KAAK,UAAU,EAAE;MAChC,OAAOK,OAAO,CAACnD,SAAS,CAAC;AAC3B;IACA,OAAO8C,MAAM,CAACK,OAAO,CAACnD,SAAS,CAAC,EAAEiD,IAAI,EAAE9D,KAAK,CAAC;AAChD;AACA,EAAA,OAAA,CAAA+D,OAAA,GAAOJ,MAAM,IAAA,IAAA,GAAA,SAAA,GAANA,MAAM,CAAGG,IAAI,EAAEA,IAAI,EAAE9D,KAAK,CAAC,KAAA+D,IAAAA,GAAAA,OAAA,GAAI,IAAI;AAC5C;AAEA,SAASE,IAAIA,CAAIrC,KAAmB,EAAA;AAAA,EAAA,IAAAsC,OAAA;AAClC,EAAA,IACEC,SAAS,GAOPvC,KAAK,CAPPuC,SAAS;IACTC,KAAK,GAMHxC,KAAK,CANPwC,KAAK;IACLxD,MAAM,GAKJgB,KAAK,CALPhB,MAAM;IACNoD,OAAO,GAILpC,KAAK,CAJPoC,OAAO;IACPK,QAAQ,GAGNzC,KAAK,CAHPyC,QAAQ;IACRC,UAAU,GAER1C,KAAK,CAFP0C,UAAU;AACPC,IAAAA,SAAS,GAAAC,6BAAA,CACV5C,KAAK,EAAA6C,WAAA,CAAA;AAET,EAAA,IAAQC,KAAK,GAAoB9D,MAAM,CAA/B8D,KAAK;IAAE3D,KAAK,GAAaH,MAAM,CAAxBG,KAAK;IAAE4D,MAAM,GAAK/D,MAAM,CAAjB+D,MAAM;AAC5B,EAAA,IAAM7F,GAAG,GAAG6B,MAAM,CAACC,MAAM,CAAC;AAC1B,EAAA,IAAAgE,eAAA,GAA8BpB,cAAc,EAAE;IAAhCpB,WAAW,GAAAwC,eAAA,CAAjBvB,IAAI;AAEZ,EAAA,IAAAwB,IAAA,GAAAX,CAAAA,OAAA,GAMIS,MAAM,uBAANA,MAAM,CAAGX,OAAO,EAAEK,QAAQ,CAAC,KAAA,IAAA,GAAAH,OAAA,GAAI,EAAE;IALxBY,cAAc,GAAAD,IAAA,CAAzBV,SAAS;IACFY,UAAU,GAAAF,IAAA,CAAjBT,KAAK;IACLY,OAAO,GAAAH,IAAA,CAAPG,OAAO;IACPC,OAAO,GAAAJ,IAAA,CAAPI,OAAO;AACJC,IAAAA,UAAU,GAAAV,6BAAA,CAAAK,IAAA,EAAAM,YAAA,CAAA;AAGf,EAAA,IAAIH,OAAO,KAAK,CAAC,IAAIC,OAAO,KAAK,CAAC,EAAE;AAClC,IAAA,OAAO,IAAI;AACb;EAEA,OAAOxB,cAAc,CACnBH,GACM,CAAA,IAAA,EAAA8B,QAAA,CAAA,EAAA,EAAAb,SAAS,EACTW,UAAU,EAAA;AACdF,IAAAA,OAAO,EAAEA,OAAO;AAChBC,IAAAA,OAAO,EAAEA,OAAO;IAChBd,SAAS,EAAEkB,IAAI,CACb,oBAAoB,EACpBX,KAAK,IAAI,IAAI,IAA2BA,sBAAAA,GAAAA,KAAO,EAC/CzD,YAAY,CAACF,KAAK,CAAC,IAAI,2BAA2B,EAClDoD,SAAS,EACTvD,MAAM,CAACuD,SAAS,EAChBW,cAAc,CACf;AACDV,IAAAA,KAAK,EAAAgB,QAAA,CACAhB,EAAAA,EAAAA,KAAK,EACLW,UAAU,EAAA;AACb1C,MAAAA,IAAI,EAAEvB,gBAAgB,CAACC,KAAK,CAAC,GAAGqB,WAAW,CAACO,GAAG,CAAC7D,GAAG,CAAC,GAAGwG,SAAS;AAChE1C,MAAAA,KAAK,EAAE5B,iBAAiB,CAACD,KAAK,CAAC,GAAGqB,WAAW,CAACO,GAAG,CAAC7D,GAAG,CAAC,GAAGwG;KAC1D,CAAA;AAAAxD,IAAAA,QAAA,EAEA+B,mBAAmB,CAACQ,QAAQ,EAAEL,OAAoB,EAAEpD,MAAM;GACxD,CAAA,CAAA,EACL0D,UAAU,EACV;AAAE1D,IAAAA,MAAM,EAANA;AAAM,GAAE,CACX;AACH;AAEA,aAAe2E,aAAAA,IAAI,CAACtB,IAAI,CAA6C;;ACrFrE,IAAMuB,QAAQ,GAAsB,SAA9BA,QAAQA,CAAuB5D,KAAK,EAAI;AAC5C,EAAA,IAAQC,OAAO,GAA2BD,KAAK,CAAvCC,OAAO;IAAE4D,oBAAoB,GAAK7D,KAAK,CAA9B6D,oBAAoB;AAErC,EAAA,IAAMC,aAAa,GAAGD,oBAAoB,IAAI,IAAI;AAClD,EAAA,IAAME,WAAW,GAAG,IAAI1F,GAAG,EAAe;EAC1C,IAAM2F,eAAe,GAAGnF,MAAM,CAAC,IAAIR,GAAG,EAAe,CAAC;EAEtD,OACEqD,GAAA,CAAA,UAAA,EAAA;AACEuC,IAAAA,GAAG,EAAE,SAALA,GAAGA,GAAO;MACR,IAAI,CAACH,aAAa,EAAE;MACpB,IAAI,CAACrG,cAAc,CAACsG,WAAW,EAAEC,eAAe,CAAClF,OAAO,CAAC,EAAE;QACzD+E,oBAAoB,CAACE,WAAW,CAAC;QACjCC,eAAe,CAAClF,OAAO,GAAGiF,WAAW;AACvC;KACD;AAAA7D,IAAAA,QAAA,EAEAD,OAAO,CAACM,GAAG,CAAC,UAACM,IAAI,EAAI;AACpB,MAAA,IAAQ3D,GAAG,GAAK2D,IAAI,CAAZ3D,GAAG;AACX,MAAA,IAAI2D,IAAI,CAACqD,IAAI,KAAK,OAAO,EAAE;QACzB,OAAOxC;AAAea,UAAAA,SAAS,EAAC,OAAO;AAACC,UAAAA,KAAK,EAAE;YAAE2B,KAAK,EAAEtD,IAAI,CAACsD;;SAA5C,EAAAjH,GAAG,CAAoD;AAC1E;AAEA,MAAA,IAAQ8B,MAAM,GAAK6B,IAAI,CAAf7B,MAAM;MAEd,OACE0C,GAEE,CAAA,KAAA,EAAA;AAAAuC,QAAAA,GAAG,EAAE,SAALA,GAAGA,CAAGnC,IAAI,EAAI;AACZ,UAAA,IAAIA,IAAI,IAAI,IAAI,IAAI,CAACgC,aAAa,EAAE;UACpCC,WAAW,CAAC1C,GAAG,CAACnE,GAAG,EAAE4E,IAAI,CAACsC,WAAW,CAAC;SACvC;AACD5B,QAAAA,KAAK,EAAE;UACL2B,KAAK,EAAEnF,MAAM,CAACmF,KAAK;UACnBE,QAAQ,EAAErF,MAAM,CAACqF;;OAPd,EAAAnH,GAAG,CASR;KAEL;AACQ,GAAA,CAAA;AAEf,CAAC;AAED,iBAAeyG,aAAAA,IAAI,CAACC,QAAQ,CAAC;;ACnD7B,IAAMU,qBAAqB,GAAG,4BAA4B;AAE1D,SAASC,SAASA,CAACzC,IAAa,EAAA;AAC9B,EAAA,IAAI,EAAEA,IAAI,YAAY0C,IAAI,CAAC,EAAE;AAC3B,IAAA,OAAO,KAAK;AACd;EACA,IAAMC,iBAAiB,GAAG,CAAC;AAC3B,EAAA,OAAO3C,IAAI,CAAC4C,QAAQ,KAAKD,iBAAiB;AAC5C;SAEgBE,eAAeA,CAC7BC,EAAW,EACXC,MAA+C;AAAA,EAAA,IAAAC,qBAAA;AAAA,EAAA,IAA/CD;AAAAA,IAAAA,OAAyCE,MAAM;AAAA;EAE/C,IAAIjD,IAAI,GAAG8C,EAAE;EAEb,OAAO9C,IAAI,KAAK+C,IAAI,IAAIN,SAAS,CAACzC,IAAI,CAAC,EAAE;AACvC,IAAA,IAAIA,IAAI,KAAKkD,QAAQ,CAACC,IAAI,EAAE;AAC1B,MAAA,OAAOJ,IAAmB;AAC5B;AACA,IAAA,IAAAK,qBAAA,GAA2CH,MAAM,CAACI,gBAAgB,CAACrD,IAAI,CAAC;MAAhEsD,QAAQ,GAAAF,qBAAA,CAARE,QAAQ;MAAEC,SAAS,GAAAH,qBAAA,CAATG,SAAS;MAAEC,SAAS,GAAAJ,qBAAA,CAATI,SAAS;IACtC,IAAIhB,qBAAqB,CAACiB,IAAI,CAACH,QAAQ,GAAGC,SAAS,GAAGC,SAAS,CAAC,EAAE;AAChE,MAAA,OAAOxD,IAAmB;AAC5B;IACAA,IAAI,GAAGA,IAAI,CAAC0D,UAAqB;AACnC;EACA,OAAAV,CAAAA,qBAAA,GAAOF,EAAE,CAACa,aAAa,CAACC,WAAW,KAAA,IAAA,GAAAZ,qBAAA,GAAIC,MAAM;AAC/C;AAEM,SAAUY,QAAQA,CAACC,GAAY,EAAA;EACnC,OAAOhJ,MAAM,CAACO,SAAS,CAAC0I,QAAQ,CAACxI,IAAI,CAACuI,GAAG,CAAC,KAAK,iBAAiB;AAClE;AAEM,SAAUE,UAAUA,CAACF,GAAY,EAAA;EACrC,OAAOhJ,MAAM,CAACO,SAAS,CAAC0I,QAAQ,CAACxI,IAAI,CAACuI,GAAG,CAAC,KAAK,uBAAuB;AACxE;AAEM,SAAUG,MAAMA,CAACH,GAAY,EAAA;EACjC,OAAOhJ,MAAM,CAACO,SAAS,CAAC0I,QAAQ,CAACxI,IAAI,CAACuI,GAAG,CAAC,KAAK,0BAA0B;AAC3E;AAEM,SAAUI,gBAAgBA,CAACpB,EAAW,EAAA;AAC1C,EAAA,IAAIkB,UAAU,CAAClB,EAAE,CAAC,EAAE;IAClB,OAAOA,EAAE,CAACqB,gBAAiB;AAC7B;AACA,EAAA,IAAI1B,SAAS,CAACK,EAAE,CAAC,EAAE;AACjB,IAAA,OAAOA,EAAa;AACtB;EACA,OAAOI,QAAQ,CAACiB,gBAAiB;AACnC;;ACzCM,SAAUC,WAAWA,CAAClE,OAAwB,EAAA;AAClD,EAAA,IAAQmE,WAAW,GAAWnE,OAAO,CAA7BmE,WAAW;IAAEtB,IAAI,GAAK7C,OAAO,CAAhB6C,IAAI;AAEzB,EAAA,IAAAuB,SAAA,GAAwDC,QAAQ,CAAC,CAAC,CAAC;AAA5DC,IAAAA,oBAAoB,GAAAF,SAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,uBAAuB,GAAAH,SAAA,CAAA,CAAA,CAAA;AACpD,EAAA,IAAAI,UAAA,GAA0DH,QAAQ,CAAC,CAAC,CAAC;AAA9DI,IAAAA,qBAAqB,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAEE,IAAAA,wBAAwB,GAAAF,UAAA,CAAA,CAAA,CAAA;AAEtD,EAAA,IAAAG,UAAA,GAAoCN,QAAQ,CAAC,CAAC,CAAC;AAAxCO,IAAAA,UAAU,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAEE,IAAAA,aAAa,GAAAF,UAAA,CAAA,CAAA,CAAA;AAChC,EAAA,IAAAG,UAAA,GAAsCT,QAAQ,CAAC,CAAC,CAAC;AAA1CU,IAAAA,WAAW,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAEE,IAAAA,cAAc,GAAAF,UAAA,CAAA,CAAA,CAAA;AAElC,EAAA,IAAMG,oBAAoB,GAAGpI,MAAM,CAAqB,IAAI,CAAC;AAE7DqI,EAAAA,eAAe,CAAC,YAAK;AACnB,IAAA,IAAMC,iBAAiB,GAAGhB,WAAW,EAAE;IACvC,IAAIgB,iBAAiB,IAAI,IAAI,EAAE;AAC/B,IAAA,IAAIC,QAAqB;AACzB,IAAA,IAAIzB,QAAQ,CAACwB,iBAAiB,CAAC,EAAE;MAC/BC,QAAQ,GAAGpC,QAAQ,CAACiB,gBAA+B;AACrD,KAAC,MAAM;AACLmB,MAAAA,QAAQ,GAAGD,iBAAiB;AAC9B;IACAF,oBAAoB,CAACnI,OAAO,GAAGsI,QAAQ;AACvC,IAAA,IAAMC,QAAQ,GAAG,IAAIC,cAAc,CAAC,UAACC,OAAO,EAAI;AAC9C,MAAA,IAAAC,qBAAA,GAA0BD,OAAO,CAAC,CAAC,CAAC,CAACE,WAAW;QAAxCtD,KAAK,GAAAqD,qBAAA,CAALrD,KAAK;QAAEuD,MAAM,GAAAF,qBAAA,CAANE,MAAM;MACrBnB,uBAAuB,CAACpC,KAAK,CAAC;MAC9BuC,wBAAwB,CAACgB,MAAM,CAAC;AAClC,KAAC,CAAC;AACFL,IAAAA,QAAQ,CAACM,OAAO,CAACP,QAAQ,CAAC;AAC1B,IAAA,OAAO,YAAK;MACVC,QAAQ,CAACO,UAAU,EAAE;KACtB;AACH,GAAC,EAAE,CAACzB,WAAW,CAAC,CAAC;AAEjBe,EAAAA,eAAe,CAAC,YAAK;AACnB,IAAA,IAAMpF,IAAI,GAAG+C,IAAI,CAAC/F,OAAO;IACzB,IAAIgD,IAAI,IAAI,IAAI,EAAE;AAClB,IAAA,IAAMuF,QAAQ,GAAG,IAAIC,cAAc,CAAC,UAACC,OAAO,EAAI;AAC9C,MAAA,IAAAM,sBAAA,GAA0BN,OAAO,CAAC,CAAC,CAAC,CAACE,WAAW;QAAxCtD,KAAK,GAAA0D,sBAAA,CAAL1D,KAAK;QAAEuD,MAAM,GAAAG,sBAAA,CAANH,MAAM;MACrBb,aAAa,CAAC1C,KAAK,CAAC;MACpB6C,cAAc,CAACU,MAAM,CAAC;AACxB,KAAC,CAAC;AACFL,IAAAA,QAAQ,CAACM,OAAO,CAAC7F,IAAI,CAAC;AACtB,IAAA,OAAO,YAAK;MACVuF,QAAQ,CAACO,UAAU,EAAE;KACtB;AACH,GAAC,EAAE,CAAC/C,IAAI,CAAC,CAAC;EAEV,OAAO;AACLyB,IAAAA,oBAAoB,EAApBA,oBAAoB;AACpBG,IAAAA,qBAAqB,EAArBA,qBAAqB;AACrBG,IAAAA,UAAU,EAAVA,UAAU;AACVG,IAAAA,WAAW,EAAXA;GACD;AACH;;AClDA,IAAMe,aAAa,gBAAGvI,aAAa,CAA4B,IAAI,CAAC;AAE9D,SAAUwI,oBAAoBA,CAAC/H,KAAyC,EAAA;AAC5E,EAAA,IAAQmG,WAAW,GAAqBnG,KAAK,CAArCmG,WAAW;IAAEtB,IAAI,GAAe7E,KAAK,CAAxB6E,IAAI;IAAE3E,QAAQ,GAAKF,KAAK,CAAlBE,QAAQ;EAEnC,IAAA8H,YAAA,GAKI9B,WAAW,CAAC;AAAEC,MAAAA,WAAW,EAAXA,WAAW;AAAEtB,MAAAA,IAAI,EAAJA;AAAI,KAAE,CAAC;IAJpC4B,qBAAqB,GAAAuB,YAAA,CAArBvB,qBAAqB;IACrBH,oBAAoB,GAAA0B,YAAA,CAApB1B,oBAAoB;IACpBS,WAAW,GAAAiB,YAAA,CAAXjB,WAAW;IACXH,UAAU,GAAAoB,YAAA,CAAVpB,UAAU;AAGZ,EAAA,IAAMzI,KAAK,GAAGmC,OAAO,CAAC,YAAyB;IAC7C,OAAO;AACLgG,MAAAA,oBAAoB,EAApBA,oBAAoB;AACpBG,MAAAA,qBAAqB,EAArBA,qBAAqB;AACrBG,MAAAA,UAAU,EAAVA,UAAU;AACVG,MAAAA,WAAW,EAAXA;KACD;GACF,EAAE,CAACT,oBAAoB,EAAEG,qBAAqB,EAAEG,UAAU,EAAEG,WAAW,CAAC,CAAC;AAE1E,EAAA,OACErF,GAAA,CAACoG,aAAa,CAACnG,QAAQ,EAAA;AAACjE,IAAAA,KAAK,EAAES,KAAK;AAAA+B,IAAAA,QAAA,EACjCA;AAAQ,GAAA,CACc;AAE7B;SAEgB+H,gBAAgBA,GAAA;AAC9B,EAAA,IAAMtI,OAAO,GAAGC,UAAU,CAACkI,aAAa,CAAC;EACzC,IAAInI,OAAO,IAAI,IAAI,EAAE;AACnB,IAAA,MAAM,IAAIE,KAAK,CAAC,qCAAqC,CAAC;AACxD;AACA,EAAA,OAAOF,OAAO;AAChB;;ACpCA,IAAMuI,gBAAgB,gBAAG3I,aAAa,CAAsC,IAAI,CAAC;AAEjF,IAAIC,OAAAA,CAAAA,GAAAA,CAAAA,QAAAA,KAAAA,aAAO,EAAE;EACX0I,gBAAgB,CAACzI,WAAW,GAAG,+BAA+B;AAChE;AAEM,SAAU0I,uBAAuBA,CAACnI,KAAwB,EAAA;AAC9D,EAAA,IAAQE,QAAQ,GAAKF,KAAK,CAAlBE,QAAQ;EAEhB,IAAMkI,WAAW,GAAGvJ,MAAM,CAAC,IAAIR,GAAG,EAAoB,CAAC;AACvD,EAAA,IAAMsB,OAAO,GAAGW,OAAO,CAAC,YAAmC;AACzD,IAAA,IAAM+H,SAAS,GAAG,IAAIC,GAAG,EAAU;IACnC,OAAO;AACLC,MAAAA,MAAM,WAANA,MAAMA,CAACrL,GAAG,EAAEsL,QAAQ,EAAA;QAClBJ,WAAW,CAACtJ,OAAO,CAACuC,GAAG,CAACnE,GAAG,EAAE,UAACuL,UAAU,EAAE3G,IAAI,EAAI;AAChD0G,UAAAA,QAAQ,CAACC,UAAU,EAAE3G,IAAI,CAAC;AAC5B,SAAC,CAAC;AACF,QAAA,OAAO,YAAK;AACVsG,UAAAA,WAAW,CAACtJ,OAAO,CAAO,QAAA,CAAA,CAAC5B,GAAG,CAAC;SAChC;OACF;AACDwL,MAAAA,MAAM,WAANA,MAAMA,CAACxL,GAAG,EAAE8E,OAAO,EAAA;AACjB,QAAA,IAAIqG,SAAS,CAACM,GAAG,CAACzL,GAAG,CAAC,EAAE;UACtBmL,SAAS,CAAA,QAAA,CAAO,CAACnL,GAAG,CAAC;AACrB,UAAA;AACF;AACA,QAAA,IAAQuL,UAAU,GAAWzG,OAAO,CAA5ByG,UAAU;UAAE3G,IAAI,GAAKE,OAAO,CAAhBF,IAAI;AACxB,QAAA,IAAI8G,GAAG,GAAG7D,MAAM,CAAC8D,qBAA+D;QAChF,IAAID,GAAG,IAAI,IAAI,EAAE;AACfA,UAAAA,GAAG,GAAG,SAANA,GAAGA,CAAIE,EAAc,EAAI;AACvBA,YAAAA,EAAE,EAAE;WACL;AACH;QACAV,WAAW,CAACtJ,OAAO,CAACiK,OAAO,CAAC,UAACP,QAAQ,EAAEQ,OAAO,EAAI;UAChD,IAAI9L,GAAG,KAAK8L,OAAO,EAAE;AACrBX,UAAAA,SAAS,CAACY,GAAG,CAACD,OAAO,CAAC;AACtBJ,UAAAA,GAAG,CAAC,YAAK;AACPJ,YAAAA,QAAQ,CAACC,UAAU,EAAE,EAAE3G,IAAI,CAAC;AAC9B,WAAC,CAAC;AACJ,SAAC,CAAC;AACJ;KACD;GACF,EAAE,EAAE,CAAC;AAEN,EAAA,OAAOJ,GAAA,CAACwG,gBAAgB,CAACvG,QAAQ,EAAA;AAACjE,IAAAA,KAAK,EAAEiC,OAAO;AAAAO,IAAAA,QAAA,EAAGA;AAAQ,GAAA,CAA6B;AAC1F;SAEgBgJ,0BAA0BA,GAAA;AACxC,EAAA,IAAMvJ,OAAO,GAAGC,UAAU,CAACsI,gBAAgB,CAAC;EAE5C,IAAIvI,OAAO,IAAI,IAAI,EAAE;AACnB,IAAA,MAAM,IAAIE,KAAK,CAAC,+CAA+C,CAAC;AAClE;AAEA,EAAA,OAAOF,OAAO;AAChB;;ACpDO,IAAMwJ,eAAe,gBAAG5J,aAAa,CAAoC,IAAI,CAAC;AAErF,IAAIC,OAAAA,CAAAA,GAAAA,CAAAA,QAAAA,KAAAA,aAAO,EAAE;EACX2J,eAAe,CAAC1J,WAAW,GAAG,yBAAyB;AACzD;SAEgB2J,kBAAkBA,GAAA;AAChC,EAAA,IAAMzJ,OAAO,GAAGC,UAAU,CAACuJ,eAAe,CAAC;EAC3C,IAAIxJ,OAAO,IAAI,IAAI,EAAE;AACnB,IAAA,MAAM,IAAIE,KAAK,CAAC,uCAAuC,CAAC;AAC1D;AACA,EAAA,OAAOF,OAAO;AAChB;;ACvBA;AACM,SAAU0J,WAAWA,CAAqBC,QAAW,EAAA;AACzD,EAAA,IAAMR,EAAE,GAAGjK,MAAM,CAAW,IAAI,CAAC;AACjCqI,EAAAA,eAAe,CAAC,YAAK;IACnB4B,EAAE,CAAChK,OAAO,GAAGwK,QAAQ;AACvB,GAAC,CAAC;AAEF,EAAA,IAAMC,QAAQ,GAAGC,WAAW,CAAC,YAAuB;AAAA,IAAA,KAAA,IAAAC,IAAA,GAAAC,SAAA,CAAA1M,MAAA,EAAnB2M,IAAe,GAAA9L,IAAAA,KAAA,CAAA4L,IAAA,GAAAG,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAH,IAAA,EAAAG,IAAA,EAAA,EAAA;AAAfD,MAAAA,IAAe,CAAAC,IAAA,CAAAF,GAAAA,SAAA,CAAAE,IAAA,CAAA;AAAA;AAC9C,IAAA,OAAOd,EAAE,CAAChK,OAAO,IAAA,IAAA,GAAA,SAAA,GAAVgK,EAAE,CAAChK,OAAO,CAAA+K,KAAA,CAAVf,EAAE,EAAca,IAAI,CAAY;GACxC,EAAE,EAAE,CAAiB;AAEtB,EAAA,OAAOJ,QAAQ;AACjB;;ACVA;;AAEG;AACH,SAASO,gBAAgBA,CACvBC,IAAuE,EAAA;AAEvE,EAAA,IAAMC,KAAK,GAAG;AACZlL,IAAAA,OAAO,EAAE,IAA4B;AACrCkD,IAAAA,OAAO,EAAE;GACV;AAED,EAAA,OAAO,YAAoC;AAAA,IAAA,KAAA,IAAAyH,IAAA,GAAAC,SAAA,CAAA1M,MAAA,EAAhCgF,OAAa,GAAAnE,IAAAA,KAAA,CAAA4L,IAAA,GAAAG,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAH,IAAA,EAAAG,IAAA,EAAA,EAAA;AAAb5H,MAAAA,OAAa,CAAA4H,IAAA,CAAAF,GAAAA,SAAA,CAAAE,IAAA,CAAA;AAAA;AACtB,IAAA,IAAMK,aAAa,GAAkB,SAA/BA,aAAaA,CAAmBC,GAAG,EAAA;MAAA,OAAKH,IAAI,CAAAF,KAAA,CAAA,SAAA,EAAA,CAACK,GAAG,CAAAC,CAAAA,MAAA,CAAKnI,OAAO,CAAC,CAAA;AAAA,KAAA;IAEnE,IAAIvE,cAAc,CAACuE,OAAO,EAAEgI,KAAK,CAAChI,OAAO,CAAC,EAAE;AAAA,MAAA,IAAAoI,cAAA;MAC1C,OAAAA,CAAAA,cAAA,GAAOJ,KAAK,CAAClL,OAAO,KAAAsL,IAAAA,GAAAA,cAAA,GAAIH,aAAa;AACvC;IAEAD,KAAK,CAAChI,OAAO,GAAGA,OAAO;IACvBgI,KAAK,CAAClL,OAAO,GAAGmL,aAAa;AAE7B,IAAA,OAAOA,aAAa;GACrB;AACH;;;ACfM,SAAUI,gBAAgBA,CAAIC,KAAsB,EAAA;AACxD,EAAA,IAAIzM,KAAK,CAACC,OAAO,CAACwM,KAAK,CAAC,EAAE;AACxB,IAAA,OAAOA,KAAK,CAACC,MAAM,CAAC,UAACtM,CAAC,EAAI;AACxB,MAAA,OAAOA,CAAC,IAAI,IAAI,KAAK,OAAOA,CAAC,KAAK,UAAU,IAAI,OAAOA,CAAC,CAAC8L,IAAI,KAAK,UAAU,CAAC;AAC/E,KAAC,CAAC,CAACxJ,GAAG,CAAC,UAACwJ,IAAI,EAAa;AACvB,MAAA,IAAI,OAAOA,IAAI,KAAK,UAAU,EAAE;QAC9B,OAAO;AAAES,UAAAA,QAAQ,EAAE,GAAG;AAAET,UAAAA,IAAI,EAAJA;SAAM;AAChC;AACA,MAAA,OAAOA,IAAK;AACd,KAAC,CAAC;AACJ;AACA,EAAA,OAAO,EAAE;AACX;AAEA,IAAaU,aAAa,gBAAA,YAAA;AACxB,EAAA,SAAAA,gBAAA;AAIA7N,IAAAA,MAAA,CAAA8N,cAAA,CAAA,IAAA,EAAA,OAAA,EAAA;;;;aAAmB;AAAE,KAAA,CAAA;IAHnB,IAAI,CAACC,GAAG,GAAG,IAAI,CAACA,GAAG,CAACC,IAAI,CAAC,IAAI,CAAC;AAChC;AAAC,EAAA,IAAAC,MAAA,GAAAJ,aAAA,CAAAtN,SAAA;AAAA0N,EAAAA,MAAA,CAIDC,QAAQ,GAAR,SAAAA,QAAQA,CAACpN,KAAgB,EAAA;IACvB,IAAI,CAAC4M,KAAK,GAAG5M,KAAK;GACnB;AAAAmN,EAAAA,MAAA,CAEDF,GAAG,GAAH,SAAAA,GAAGA,CAAC3I,OAA6B,EAAA;AAC/B,IAAA,IAAI,IAAI,CAACsI,KAAK,CAACtN,MAAM,KAAK,CAAC,EAAE;AAC3B,MAAA,OAAOgF,OAAO;AAChB;AAEA,IAAA,IAAMrC,OAAO,GAAqC;AAAEb,MAAAA,OAAO,EAAEkD;KAAS;AAEtE,IAAA,IAAM+I,iBAAiB,GAAiD;AACtEhJ,MAAAA,MAAM,EAAE,EAAE;AACViJ,MAAAA,UAAU,EAAE,EAAE;AACdC,MAAAA,aAAa,EAAE,EAAE;AACjBC,MAAAA,mBAAmB,EAAE,EAAE;AACvBC,MAAAA,gBAAgB,EAAE,EAAE;AACpBC,MAAAA,YAAY,EAAE,EAAE;AAChBC,MAAAA,eAAe,EAAE,EAAE;AACnBC,MAAAA,gBAAgB,EAAE,EAAE;AACpBC,MAAAA,iBAAiB,EAAE,EAAE;AACrBC,MAAAA,cAAc,EAAE,EAAE;AAClBC,MAAAA,UAAU,EAAE,EAAE;AACdC,MAAAA,SAAS,EAAE,EAAE;AACbhJ,MAAAA,UAAU,EAAE;KACb;IAED,IAAMiJ,qBAAqB,GAA6C,EAAE;IAC1E,IAAMC,cAAc,GAAmB,EAAE;IAEzC,IAAMtB,KAAK,GAAG,IAAI,CAACA,KAAK,CAACuB,KAAK,EAAE;AAChCvB,IAAAA,KAAK,CAACwB,IAAI,CAAC,UAACC,CAAC,EAAEC,CAAC,EAAA;AAAA,MAAA,OAAKD,CAAC,CAACvB,QAAQ,GAAGwB,CAAC,CAACxB,QAAQ;KAAC,CAAA;AAE7CF,IAAAA,KAAK,CAAC/J,GAAG,CAAC,UAACtC,CAAC,EAAA;MAAA,OAAKA,CAAC,CAAC8L,IAAI;AAAA,KAAA,CAAC,CAAChB,OAAO,CAAC,UAACgB,IAAI,EAAI;AACxC,MAAA,IAAMkC,OAAO,GAAGlC,IAAI,CAACpK,OAAO,CAACb,OAAO,CAAC;AACrC,MAkBImN,OAAO,CAjBTlK,MAAM;QAiBJkK,OAAO,CAhBTjB,UAAU;QAgBRiB,OAAO,CAfThB,aAAa;QAeXgB,OAAO,CAdTf,mBAAmB;QAcjBe,OAAO,CAbTd,gBAAgB;QAadc,OAAO,CAZTb,YAAY;QAYVa,OAAO,CAXTZ,eAAe;QAWbY,OAAO,CAVTX,gBAAgB;QAUdW,OAAO,CATTV,iBAAiB;QASfU,OAAO,CARTT,cAAc;QAQZS,OAAO,CAPTR,UAAU;QAORQ,OAAO,CANTP,SAAS;QAMPO,OAAO,CALTvJ,UAAU;YAEVwJ,YAAY,GAGVD,OAAO,CAHTC,YAAY;QACZC,KAAK,GAEHF,OAAO,CAFTE,KAAK;AACFC,QAAAA,IAAI,GAAAxJ,6BAAA,CACLqJ,OAAO,EAAApJ,WAAA;MAEXjG,MAAM,CAAC2K,OAAO,CAACwD,iBAAiB,CAAC,CAAChC,OAAO,CAAC,UAAA9F,IAAA,EAAiB;QAAA,IAAf/F,GAAG,GAAA+F,IAAA,CAAA,CAAA,CAAA;AAAEvF,UAAAA,KAAK,GAAAuF,IAAA,CAAA,CAAA,CAAA;AACpD,QAAA,IAAMoJ,MAAM,GAAGJ,OAAO,CAAC/O,GAA8B,CAAC;AACtD,QAAA,IAAI,OAAOmP,MAAM,KAAK,UAAU,EAAE;AAChC;AACA3O,UAAAA,KAAK,CAAC4O,IAAI,CAACD,MAAM,CAAC;AACpB;AACF,OAAC,CAAC;AAEF,MAAA,IAAI,OAAOH,YAAY,KAAK,UAAU,EAAE;AACtCP,QAAAA,qBAAqB,CAACW,IAAI,CAACJ,YAAY,CAAC;AAC1C;AACA,MAAA,IAAI,OAAOC,KAAK,KAAK,UAAU,EAAE;AAC/BP,QAAAA,cAAc,CAACU,IAAI,CAACH,KAAK,CAAC;AAC5B;MACAxM,OAAO,CAACb,OAAO,GAAGsN,IAAI;AACxB,KAAC,CAAC;IAEFxP,MAAM,CAAC2K,OAAO,CAACwD,iBAAiB,CAAC,CAAChC,OAAO,CAAC,UAAAwD,KAAA,EAAmB;MAAA,IAAjBrP,GAAG,GAAAqP,KAAA,CAAA,CAAA,CAAA;AAAEC,QAAAA,OAAO,GAAAD,KAAA,CAAA,CAAA,CAAA;AACtD,MAAA,IAAIC,OAAO,CAACxP,MAAM,GAAG,CAAC,EAAE;QACtB2C,OAAO,CAACb,OAAO,CAAC5B,GAA8B,CAAC,GAAG,UAACgD,QAAQ,EAAEyJ,IAAI,EAAI;AACnE;UACA,OAAO6C,OAAO,CAAC7L,MAAM,CAAY,UAACmB,IAAI,EAAEC,MAAM,EAAI;AAChD;AACA,YAAA,OAAOA,MAAM,CAACD,IAAI,EAAE6H,IAAI,CAAC;WAC1B,EAAEzJ,QAAQ,CAAC;SACb;AACH;AACF,KAAC,CAAC;AAEF,IAAA,IAAIyL,qBAAqB,CAAC3O,MAAM,GAAG,CAAC,EAAE;MACpC2C,OAAO,CAACb,OAAO,CAACoN,YAAY,GAAG,UAACO,MAAM,EAAErO,KAAK,EAAI;QAC/C,OAAOqF,IAAI,CAAAoG,KAAA,CAAA,SAAA,EAAI8B,qBAAqB,CAACpL,GAAG,CAAC,UAACuI,EAAE,EAAA;AAAA,UAAA,OAAKA,EAAE,CAAC2D,MAAM,EAAErO,KAAK,CAAC;AAAA,SAAA,CAAC,CAAC;OACrE;AACH;AAEA,IAAA,IAAIwN,cAAc,CAAC5O,MAAM,GAAG,CAAC,EAAE;MAC7B2C,OAAO,CAACb,OAAO,CAACqN,KAAK,GAAG,UAACM,MAAM,EAAErO,KAAK,EAAI;QACxC,OAAOwN,cAAc,CAACjL,MAAM,CAAC,UAACS,MAAM,EAAEP,IAAI,EAAI;UAC5C,OAAA2C,QAAA,KAAYpC,MAAM,EAAKP,IAAI,CAAC4L,MAAM,EAAErO,KAAK,CAAC,CAAA;SAC3C,EAAE,EAAE,CAAC;OACP;AACH;IAEA,OAAOuB,OAAO,CAACb,OAAO;GACvB;AAAA,EAAA,OAAA2L,aAAA;AAAA,CAAA,EAAA;AAEM7N,MAAA,CAAA8N,cAAA,CAAAD,aAAA,EAAA,iBAAA,EAAA;;;;EAAkB/M,KAAA,EAAA,IAAI+M,aAAa;EAApB;;ACvHlB,SAAUiC,gBAAgBA,CAAU1K,OAAmC,EAAA;AAC3E,EAAA,IAAQ2I,GAAG,GAA8B3I,OAAO,CAAxC2I,GAAG;IAAYgC,aAAa,GAAK3K,OAAO,CAAnC4K,QAAQ;EAErB,IAAMC,MAAM,GAAGvM,OAAO,CAAC,YAAA;IAAA,OAAO;MAAExB,OAAO,EAAE,IAAI2L,aAAa;KAAO;GAAC,EAAE,EAAE,CAAC;EAEvE,IAAIE,GAAG,IAAI,IAAI,EAAE;AAAA,IAAA,IAAAmC,oBAAA;IACf,IAAMC,SAAS,GAAG1C,gBAAgB,CAAA,EAAA,CAAAF,MAAA,CAAKQ,GAAG,GAAAmC,oBAAA,GAAMH,aAAa,IAAbA,IAAAA,GAAAA,SAAAA,GAAAA,aAAa,CAAErC,KAAK,KAAA,IAAA,GAAAwC,oBAAA,GAAI,EAAE,CAAE,CAAC;IAE7E,IAAI,CAACxP,kBAAkB,CAACuP,MAAM,CAAC/N,OAAO,CAACwL,KAAK,EAAEyC,SAAS,CAAC,EAAE;AACxD,MAAA,IAAMH,QAAQ,GAAG,IAAInC,aAAa,EAAK;AACvCmC,MAAAA,QAAQ,CAAC9B,QAAQ,CAACiC,SAAS,CAAC;MAC5BF,MAAM,CAAC/N,OAAO,GAAG8N,QAAQ;AACzB,MAAA,OAAOA,QAAQ;AACjB;AACF;EAEA,OAAOC,MAAM,CAAC/N,OAAO;AACvB;;AChCgB,SAAAkO,aAAaA,CAC3BC,GAAQ,EACRC,SAA+C,EAAA;EAE/C,IAAI9L,MAAM,GAAG,EAAE;AACf,EAAA,KAAK,IAAInE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGgQ,GAAG,CAACjQ,MAAM,EAAEC,CAAC,IAAI,CAAC,EAAE;IACtC,IAAIiQ,SAAS,CAACD,GAAG,CAAChQ,CAAC,CAAC,EAAEA,CAAC,CAAC,EAAE;AACxBmE,MAAAA,MAAM,GAAGnE,CAAC;AACZ;AACF;AACA,EAAA,OAAOmE,MAAM;AACf;;;;ACcA,SAAS+L,GAAGA,CAAInN,KAAkB,EAAA;AAAA,EAAA,IAAAoN,MAAA;AAChC,EAAA,IACE7K,SAAS,GAQPvC,KAAK,CARPuC,SAAS;IACTE,QAAQ,GAONzC,KAAK,CAPPyC,QAAQ;IACRL,OAAO,GAMLpC,KAAK,CANPoC,OAAO;IACEiL,gBAAgB,GAKvBrN,KAAK,CALPC,OAAO;IACPkM,KAAK,GAIHnM,KAAK,CAJPmM,KAAK;IACLT,SAAS,GAGP1L,KAAK,CAHP0L,SAAS;IACThJ,UAAU,GAER1C,KAAK,CAFP0C,UAAU;AACP0J,IAAAA,IAAI,GAAAxJ,6BAAA,CACL5C,KAAK,EAAA6C,WAAA,CAAA;AAET,EAAA,IAAAyK,mBAAA,GAA4BlE,kBAAkB,EAAE;IAAxCmE,eAAe,GAAAD,mBAAA,CAAfC,eAAe;AAEvB,EAAA,IAAQtN,OAAO,GAAiBoN,gBAAgB,CAAxCpN,OAAO;IAAEuN,UAAU,GAAKH,gBAAgB,CAA/BG,UAAU;EAE3B,IAAMC,wBAAwB,GAAGT,aAAa,CAACQ,UAAU,EAAE,UAACvP,CAAC,EAAI;AAC/D,IAAA,IAAIA,CAAC,CAACiG,IAAI,KAAK,OAAO,EAAE;AACtB,MAAA,OAAO,KAAK;AACd;AACA,IAAA,OAAOhF,gBAAgB,CAACjB,CAAC,CAACe,MAAM,CAACG,KAAK,CAAC;AACzC,GAAC,CAAC;EACF,IAAMuO,0BAA0B,GAAGF,UAAU,CAACxP,SAAS,CAAC,UAACC,CAAC,EAAI;AAC5D,IAAA,IAAIA,CAAC,CAACiG,IAAI,KAAK,OAAO,EAAE;AACtB,MAAA,OAAO,KAAK;AACd;AACA,IAAA,OAAO9E,iBAAiB,CAACnB,CAAC,CAACe,MAAM,CAACG,KAAK,CAAC;AAC1C,GAAC,CAAC;AAEF,EAAA,IAAA8D,IAAA,GAAAmK,CAAAA,MAAA,GAAqDjB,KAAK,uBAALA,KAAK,CAAG/J,OAAO,EAAEK,QAAQ,CAAC,KAAA,IAAA,GAAA2K,MAAA,GAAI,EAAE;IAAlElK,cAAc,GAAAD,IAAA,CAAzBV,SAAS;AAAqBe,IAAAA,UAAU,GAAAV,6BAAA,CAAAK,IAAA,EAAAM,UAAA,CAAA;EAEhD,OAAO1B,cAAc,CACnBH,GACM,CAAA,IAAA,EAAA8B,QAAA,CAAA,EAAA,EAAA4I,IAAI,EACJ9I,UAAU,EAAA;IACdf,SAAS,EAAEkB,IAAI,CAAC,mBAAmB,EAAElB,SAAS,EAAEW,cAAc,CAAC;AAC/De,IAAAA,GAAG,EAAE,SAALA,GAAGA,CAAGnC,IAAI,EAAI;MACZ,IAAIA,IAAI,IAAI,IAAI,EAAE;AAClB;MACAyL,eAAe,CAAC9K,QAAQ,EAAEA,QAAQ,EAAEX,IAAI,CAAC6L,YAAY,CAAC;KACvD;IAAAzN,QAAA,EAEAsN,UAAU,CAACjN,GAAG,CAAC,UAACM,IAAI,EAAEzC,KAAK,EAAI;AAC9B,MAAA,IAAQlB,GAAG,GAAK2D,IAAI,CAAZ3D,GAAG;AACX,MAAA,IAAI2D,IAAI,CAACqD,IAAI,KAAK,OAAO,EAAE;QACzB,OAAOxC,GAAA,CAAA,IAAA,EAAA,EAAA,EAASxE,GAAG,CAAI;AACzB;AACA,MAAA,IAAQ8B,MAAM,GAAK6B,IAAI,CAAf7B,MAAM;MACd,OACE0C,GAAC,CAAAW,MAAI,EAEH;AAAAE,QAAAA,SAAS,EAAEkB,IAAI,CACbgK,wBAAwB,KAAKrP,KAAK,IAAI,kCAAkC,EACxEsP,0BAA0B,KAAKtP,KAAK,IACjC,oCAAoC,CACxC;AACDY,QAAAA,MAAM,EAAEA,MAAM;AACdyD,QAAAA,QAAQ,EAAEA,QAAQ;AAClBL,QAAAA,OAAO,EAAEA,OAAO;AAChBM,QAAAA,UAAU,EAAEA;OATP,EAAAxF,GAAG,CAUR;KAEL;GACE,CAAA,CAAA,EACLwO,SAAS,EACT;AAAEzL,IAAAA,OAAO,EAAPA,OAAO;AAAEwC,IAAAA,QAAQ,EAARA,QAAQ;AAAEL,IAAAA,OAAO,EAAPA,OAAO;AAAEiL,IAAAA,gBAAgB,EAAEG;AAAU,GAAE,CAC7D;AACH;AAEA,YAAe7J,aAAAA,IAAI,CAACwJ,GAAG,CAA4C;;ACzFnD,SAAAS,SAASA,CAAI3J,GAAmB,EAAEvG,KAAQ,EAAA;AACxD,EAAA,IAAI,OAAOuG,GAAG,KAAK,UAAU,EAAE;IAC7BA,GAAG,CAACvG,KAAK,CAAC;AACZ,GAAC,MAAM,IAAI,OAAOuG,GAAG,KAAK,QAAQ,IAAIA,GAAG,KAAK,IAAI,IAAI,SAAS,IAAIA,GAAG,EAAE;IACrEA,GAA2B,CAACnF,OAAO,GAAGpB,KAAK;AAC9C;AACF;AAEgB,SAAAmQ,SAASA,GAA6B;AAAA,EAAA,KAAA,IAAApE,IAAA,GAAAC,SAAA,CAAA1M,MAAA,EAAtB8Q,IAAsB,GAAAjQ,IAAAA,KAAA,CAAA4L,IAAA,GAAAG,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAH,IAAA,EAAAG,IAAA,EAAA,EAAA;AAAtBkE,IAAAA,IAAsB,CAAAlE,IAAA,CAAAF,GAAAA,SAAA,CAAAE,IAAA,CAAA;AAAA;EACpD,OAAO,UAAC9H,IAAc,EAAI;AACxBgM,IAAAA,IAAI,CAAC/E,OAAO,CAAC,UAAC9E,GAAG,EAAA;AAAA,MAAA,OAAK2J,SAAS,CAAC3J,GAAG,EAAEnC,IAAI,CAAC;KAAC,CAAA;GAC5C;AACH;AAEgB,SAAAiM,YAAYA,GAA6B;AAAA,EAAA,KAAA,IAAAC,KAAA,GAAAtE,SAAA,CAAA1M,MAAA,EAAtB8Q,IAAsB,GAAAjQ,IAAAA,KAAA,CAAAmQ,KAAA,GAAAC,KAAA,GAAA,CAAA,EAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA,EAAA,EAAA;AAAtBH,IAAAA,IAAsB,CAAAG,KAAA,CAAAvE,GAAAA,SAAA,CAAAuE,KAAA,CAAA;AAAA;AACvD;EACA,OAAOzE,WAAW,CAACqE,SAAS,CAAAhE,KAAA,YAAIiE,IAAI,CAAC,EAAEA,IAAI,CAAC;AAC9C;;ACfgB,SAAAI,QAAQA,CAAC7B,MAA4B,EAAE/C,QAAoC,EAAA;AACzF,EAAA,IAAI3D,QAAQ,CAAC0G,MAAM,CAAC,EAAE;AACpB,IAAA,IAAM7D,QAAQ,GAAG,SAAXA,QAAQA,GAAQ;AACpBc,MAAAA,QAAQ,CAAC;QACPnF,KAAK,EAAEY,MAAM,CAACoJ,UAAU;QACxBzG,MAAM,EAAE3C,MAAM,CAACqJ;AAChB,OAAA,CAAC;KACH;AACD5F,IAAAA,QAAQ,EAAE;AACVzD,IAAAA,MAAM,CAACsJ,gBAAgB,CAAC,QAAQ,EAAE7F,QAAQ,CAAC;AAC3C,IAAA,OAAO,YAAK;AACVzD,MAAAA,MAAM,CAACuJ,mBAAmB,CAAC,QAAQ,EAAE9F,QAAQ,CAAC;KAC/C;AACH,GAAC,MAAM;AACL,IAAA,IAAMnB,QAAQ,GAAG,IAAIC,cAAc,CAAC,UAACC,OAAO,EAAI;AAC9C,MAAA,IAAMgH,IAAI,GAAGhH,OAAO,CAAC,CAAC,CAAC,CAACE,WAAW;AACnC6B,MAAAA,QAAQ,CAAC;QAAEnF,KAAK,EAAEoK,IAAI,CAACpK,KAAK;QAAEuD,MAAM,EAAE6G,IAAI,CAAC7G;AAAM,OAAE,CAAC;AACtD,KAAC,CAAC;AACFL,IAAAA,QAAQ,CAACM,OAAO,CAAC0E,MAAM,CAAC;AACxB,IAAA,OAAO,YAAK;MACVhF,QAAQ,CAACO,UAAU,EAAE;KACtB;AACH;AACF;;ACRA,SAAS4G,aAAWA,CAACC,KAAgB,EAAEC,SAAiB,EAAA;EACtD,IAAIjO,IAAI,GAAG,CAAC;AACZ,EAAA,IAAIO,KAAK,GAAGyN,KAAK,CAACzR,MAAM,GAAG,CAAC;EAC5B,IAAIoB,KAAK,GAAG,EAAE;EAEd,OAAOqC,IAAI,IAAIO,KAAK,EAAE;AACpB,IAAA,IAAM2N,GAAG,GAAGC,IAAI,CAACC,KAAK,CAAC,CAACpO,IAAI,GAAGO,KAAK,IAAI,CAAC,CAAC;IAE1C,IAAIyN,KAAK,CAACE,GAAG,CAAC,CAACG,MAAM,GAAGJ,SAAS,EAAE;AACjCtQ,MAAAA,KAAK,GAAGuQ,GAAG;MACX3N,KAAK,GAAG2N,GAAG,GAAG,CAAC;AACjB,KAAC,MAAM;MACLlO,IAAI,GAAGkO,GAAG,GAAG,CAAC;AAChB;AACF;AAEA,EAAA,IAAIvQ,KAAK,KAAK,EAAE,EAAE;AAChB,IAAA,OAAOsF,SAAS;AAClB;EAEA,OAAO+K,KAAK,CAACrQ,KAAK,CAAC;AACrB;AAEM,SAAU2Q,gBAAgBA,CAAU/M,OAAmC,EAAA;AAC3E,EAAA,IACEgN,YAAY,GAKVhN,OAAO,CALTgN,YAAY;IACAC,OAAO,GAIjBjN,OAAO,CAJTkN,UAAU;IACV/I,WAAW,GAGTnE,OAAO,CAHTmE,WAAW;IACXgJ,YAAY,GAEVnN,OAAO,CAFTmN,YAAY;IACZC,QAAQ,GACNpN,OAAO,CADToN,QAAQ;AAGV,EAAA,IAAAhJ,SAAA,GAAoCC,QAAQ,CAAC,CAAC,CAAC;AAAxCgJ,IAAAA,UAAU,GAAAjJ,SAAA,CAAA,CAAA,CAAA;AAAEkJ,IAAAA,aAAa,GAAAlJ,SAAA,CAAA,CAAA,CAAA;AAChC,EAAA,IAAAI,UAAA,GAAgCH,QAAQ,CAAC,CAAC,CAAC;AAApCkJ,IAAAA,QAAQ,GAAA/I,UAAA,CAAA,CAAA,CAAA;AAAEgJ,IAAAA,WAAW,GAAAhJ,UAAA,CAAA,CAAA,CAAA;AAE5B,EAAA,IAAMiJ,SAAS,GAAGnP,OAAO,CAAC,YAAK;AAC7B,IAAA,OAAO2O,OAAO,CAACpD,KAAK,CAACwD,UAAU,EAAEE,QAAQ,CAAC;GAC3C,EAAE,CAACN,OAAO,EAAEI,UAAU,EAAEE,QAAQ,CAAC,CAAC;AAEnC;AACA,EAAA,IAAMG,UAAU,GAAG7Q,MAAM,CAAW,EAAE,CAAC;AACvC,EAAA,IAAM8Q,cAAc,GAAG,SAAjBA,cAAcA,GAAQ;AAC1B,IAAA,IAAM5S,GAAG,GAAGkS,OAAO,CAACjS,MAAM;IAC1B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,GAAG,EAAEE,CAAC,EAAE,EAAE;AAC5B,MAAA,IAAMoP,MAAM,GAAGqD,UAAU,CAAC5Q,OAAO,CAAC7B,CAAC,CAAuB;AAC1D;MACA,IAAIoP,MAAM,IAAI,IAAI,EAAE;AAClBqD,QAAAA,UAAU,CAAC5Q,OAAO,CAAC7B,CAAC,CAAC,GAAGkS,YAAY;AACtC;AACF;AACAO,IAAAA,UAAU,CAAC5Q,OAAO,GAAG4Q,UAAU,CAAC5Q,OAAO,CAAC+M,KAAK,CAAC,CAAC,EAAE9O,GAAG,CAAC;GACtD;AACD4S,EAAAA,cAAc,EAAE;AAEhB;AACA,EAAA,IAAMC,QAAQ,GAAG/Q,MAAM,CAAY,EAAE,CAAC;AACtC,EAAA,IAAMgR,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIC,UAAU,EAAY;AAAA,IAAA,IAAtBA,UAAU,KAAA,SAAA,EAAA;AAAVA,MAAAA,UAAU,GAAG,KAAK;AAAA;IAC3C,IAAIA,UAAU,IAAIF,QAAQ,CAAC9Q,OAAO,CAAC9B,MAAM,GAAG,CAAC,EAAE;AAC7C,MAAA;AACF;AACA,IAAA,IAAA+S,qBAAA,GAAkBL,UAAU,CAAC5Q,OAAO,CAAC6B,MAAM,CAAC,UAACS,MAAM,EAAEsG,MAAM,EAAEtJ,KAAK,EAAI;AACpE,QAAA,IAAM4R,OAAO,GAAG5O,MAAM,CAAC6O,GAAG,GAAGvI,MAAM;AACnCtG,QAAAA,MAAM,CAACqN,KAAK,CAACnC,IAAI,CAAC;AAChBlO,UAAAA,KAAK,EAALA,KAAK;UACL6R,GAAG,EAAE7O,MAAM,CAAC6O,GAAG;AACfvI,UAAAA,MAAM,EAANA,MAAM;AACNoH,UAAAA,MAAM,EAAEkB;AACT,SAAA,CAAC;QACF5O,MAAM,CAAC6O,GAAG,GAAGD,OAAO;AACpB,QAAA,OAAO5O,MAAM;AACf,OAAC,EAAE;AAAE6O,QAAAA,GAAG,EAAE,CAAC;AAAExB,QAAAA,KAAK,EAAE;AAAiB,OAAA,CAAC;MAV9BA,KAAK,GAAAsB,qBAAA,CAALtB,KAAK;IAWbmB,QAAQ,CAAC9Q,OAAO,GAAG2P,KAAK;GACzB;EAED,IAAMyB,YAAY,GAAG,SAAfA,YAAYA,CAAI9R,KAAa,EAAEsJ,MAAc,EAAI;AACrDgI,IAAAA,UAAU,CAAC5Q,OAAO,CAACV,KAAK,CAAC,GAAGsJ,MAAM;GACnC;AAED;EACA,IAAMyI,SAAS,GAAGtR,MAAM,CAAU;AAChCT,IAAAA,KAAK,EAAE,CAAC;AACRsJ,IAAAA,MAAM,EAAEyH,YAAY;AACpBc,IAAAA,GAAG,EAAE,CAAC;AACNnB,IAAAA,MAAM,EAAEK;AACT,GAAA,CAAC;AAEF;AACA,EAAA,IAAMiB,YAAY,GAAGvR,MAAM,CAAC,CAAC,CAAC;AAC9B,EAAA,IAAMwR,OAAO,GAAGxR,MAAM,CAAC,KAAK,CAAC;AAC7ByR,EAAAA,SAAS,CAAC,YAAK;AACb,IAAA,IAAMC,SAAS,GAAGpK,WAAW,EAAE;IAC/B,IAAIoK,SAAS,IAAI,IAAI,EAAE;IAEvB,IAAIC,KAAK,GAAG,CAAC;AAEb,IAAA,IAAMC,YAAY,GAAG,SAAfA,YAAYA,GAAQ;AACxB,MAAA,IAAMC,SAAS,GAAG1B,YAAY,EAAE;MAChC,IAAI5N,MAAM,GAAG,CAAC;MACd,IAAIuE,QAAQ,CAAC4K,SAAS,CAAC,IAAIxK,MAAM,CAACwK,SAAS,CAAC,EAAE;QAC5CnP,MAAM,GAAG2D,MAAM,CAAC4L,OAAO;AACzB,OAAC,MAAM;AACL,QAAA,IAAMC,OAAO,GAAG5K,gBAAgB,CAACuK,SAAS,CAAC;QAC3CnP,MAAM,GAAGwP,OAAO,CAAClC,SAAS;AAC5B;MACA,OAAOE,IAAI,CAACiC,GAAG,CAACzP,MAAM,GAAGsP,SAAS,EAAE,CAAC,CAAC;KACvC;AAED,IAAA,IAAMI,SAAS,GAAG,SAAZA,SAASA,CAAIC,uBAA+B,EAAI;MACpD,IAAMC,SAAS,GAAGR,KAAK;MACvBA,KAAK,GAAG5B,IAAI,CAACqC,IAAI,CAACF,uBAAuB,GAAG5B,YAAY,CAAC;MACzD,OAAO;AAAE6B,QAAAA,SAAS,EAATA;OAAW;KACrB;AAED,IAAA,IAAME,cAAc,GAAG,SAAjBA,cAAcA,CAAIxC,SAAiB,EAAI;MAC3C,IAAMyC,MAAM,GAAG3C,aAAW,CAACoB,QAAQ,CAAC9Q,OAAO,EAAE4P,SAAS,CAAC;MACvD,IAAIyC,MAAM,IAAI,IAAI,EAAE;QAClBhB,SAAS,CAACrR,OAAO,GAAGqS,MAAM;AAC1B7B,QAAAA,aAAa,CAACV,IAAI,CAACiC,GAAG,CAAC,CAAC,EAAEM,MAAM,CAAC/S,KAAK,GAAGgR,QAAQ,CAAC,CAAC;QACnDI,WAAW,CAAC2B,MAAM,CAAC/S,KAAK,GAAGoS,KAAK,GAAGpB,QAAQ,CAAC;AAC9C;KACD;AAED,IAAA,IAAMgC,QAAQ,GAAG,SAAXA,QAAQA,CAAIC,CAAQ,EAAI;AAC5B,MAAA,IAAMX,SAAS,GAAG1B,YAAY,EAAE;AAChC,MAAA,IAAMsC,aAAa,GAAGtL,gBAAgB,CAACqL,CAAC,CAAChF,MAAM,CAAC;AAChD,MAAA,IAAMqC,SAAS,GAAGE,IAAI,CAACiC,GAAG,CAAC,CAAC,EAAES,aAAa,CAAC5C,SAAS,GAAGgC,SAAS,CAAC;AAElE;AACA,MAAA,IAAMa,YAAY,GAAG7C,SAAS,GAAG0B,YAAY,CAACtR,OAAO;AAErD,MAAA,IAAIyS,YAAY,EAAE;AAChB;AACA,QAAA,IAAI7C,SAAS,GAAGyB,SAAS,CAACrR,OAAO,CAACgQ,MAAM,EAAE;UACxCoC,cAAc,CAACxC,SAAS,CAAC;AAC3B;AACF,OAAC,MAAM;AACL,QAAA,IAAIA,SAAS,GAAGyB,SAAS,CAACrR,OAAO,CAACmR,GAAG,EAAE;UACrCiB,cAAc,CAACxC,SAAS,CAAC;AAC3B;AACF;MAEA0B,YAAY,CAACtR,OAAO,GAAG4P,SAAS;KACjC;IAED,IAAI8C,UAAU,GAAG,CAAC;IAClB,IAAMC,UAAU,GAAGvD,QAAQ,CAACqC,SAAS,EAAE,UAAChC,IAAI,EAAI;AAC9C;MACA,IAAIA,IAAI,CAAC7G,MAAM,KAAK8J,UAAU,IAAIjD,IAAI,CAAC7G,MAAM,KAAK,CAAC,EAAE;AACnD,QAAA;AACF;MACA8J,UAAU,GAAGjD,IAAI,CAAC7G,MAAM;AACxBoJ,MAAAA,SAAS,CAACvC,IAAI,CAAC7G,MAAM,CAAC;AACtB,MAAA,IAAMgH,SAAS,GAAG+B,YAAY,EAAE;AAChC,MAAA,IAAI,CAACJ,OAAO,CAACvR,OAAO,EAAE;QACpBuR,OAAO,CAACvR,OAAO,GAAG,IAAI;QACtB,IAAI4S,cAAc,GAAG,CAAC;AACtB;QACA,IAAIhD,SAAS,IAAIS,YAAY,EAAE;AAC7BuC,UAAAA,cAAc,GAAG9C,IAAI,CAACiC,GAAG,CAACjC,IAAI,CAACC,KAAK,CAACH,SAAS,GAAGS,YAAY,CAAC,GAAG,CAAC,GAAGC,QAAQ,EAAE,CAAC,CAAC;AACnF;AACA,QAAA,IAAMuC,YAAY,GAAGD,cAAc,GAAGlB,KAAK,GAAGpB,QAAQ;QACtDE,aAAa,CAACoC,cAAc,CAAC;QAC7BlC,WAAW,CAACmC,YAAY,CAAC;AAC3B,OAAC,MAAM;QACLT,cAAc,CAACxC,SAAS,CAAC;AAC3B;AACF,KAAC,CAAC;AAEF6B,IAAAA,SAAS,CAAClC,gBAAgB,CAAC,QAAQ,EAAE+C,QAAQ,CAAC;AAC9C,IAAA,OAAO,YAAK;AACVK,MAAAA,UAAU,EAAE;AACZlB,MAAAA,SAAS,CAACjC,mBAAmB,CAAC,QAAQ,EAAE8C,QAAQ,CAAC;KAClD;GACF,EAAE,CAACjC,YAAY,EAAEH,YAAY,EAAE7I,WAAW,EAAEiJ,QAAQ,CAAC,CAAC;EAEvD,IAAMwC,GAAG,GAAG,SAANA,GAAGA,CAAIvC,UAAkB,EAAEE,QAAiB,EAAI;AACpD,IAAA,OAAOG,UAAU,CAAC5Q,OAAO,CAAC+M,KAAK,CAACwD,UAAU,EAAEE,QAAQ,CAAC,CAAC5O,MAAM,CAAC,UAACoL,CAAC,EAAEC,CAAC,EAAA;MAAA,OAAKD,CAAC,GAAGC,CAAC;AAAA,KAAA,EAAE,CAAC,CAAC;GACjF;AACD;AACA,EAAA,IAAM6F,QAAQ,GAAGD,GAAG,CAAC,CAAC,EAAEvC,UAAU,CAAC;AACnC,EAAA,IAAMyC,WAAW,GAAGF,GAAG,CAACrC,QAAQ,CAAC;EAEjC,OAAO;AACLF,IAAAA,UAAU,EAAVA,UAAU;AACVE,IAAAA,QAAQ,EAARA,QAAQ;AAERwC,IAAAA,aAAa,EAAErC,UAAU;AACzBG,IAAAA,iBAAiB,EAAjBA,iBAAiB;AACjBK,IAAAA,YAAY,EAAZA,YAAY;AAEZ2B,IAAAA,QAAQ,EAARA,QAAQ;AACRC,IAAAA,WAAW,EAAXA,WAAW;AAEXrC,IAAAA,SAAS,EAATA;GACD;AACH;;AChLA,SAASuC,SAASA,CAAIhS,KAAwB,EAAA;AAC5C,EAAA,IACEiS,cAAc,GAsBZjS,KAAK,CAtBPiS,cAAc;IACdC,WAAW,GAqBTlS,KAAK,CArBPkS,WAAW;IACXC,OAAO,GAoBLnS,KAAK,CApBPmS,OAAO;IACP5P,SAAS,GAmBPvC,KAAK,CAnBPuC,SAAS;IACTC,KAAK,GAkBHxC,KAAK,CAlBPwC,KAAK;IACOyM,OAAO,GAiBjBjP,KAAK,CAjBPkP,UAAU;IACD7B,gBAAgB,GAgBvBrN,KAAK,CAhBPC,OAAO;IACPmS,MAAM,GAeJpS,KAAK,CAfPoS,MAAM;IAENhD,QAAQ,GAaNpP,KAAK,CAbPoP,QAAQ;IACRD,YAAY,GAYVnP,KAAK,CAZPmP,YAAY;IAEZhJ,WAAW,GAUTnG,KAAK,CAVPmG,WAAW;IACX6I,YAAY,GASVhP,KAAK,CATPgP,YAAY;IAEZ9C,YAAY,GAOVlM,KAAK,CAPPkM,YAAY;IACZC,KAAK,GAMHnM,KAAK,CANPmM,KAAK;IACLZ,iBAAiB,GAKfvL,KAAK,CALPuL,iBAAiB;IACjBC,cAAc,GAIZxL,KAAK,CAJPwL,cAAc;IACdC,UAAU,GAGRzL,KAAK,CAHPyL,UAAU;IACVC,SAAS,GAEP1L,KAAK,CAFP0L,SAAS;IACThJ,UAAU,GACR1C,KAAK,CADP0C,UAAU;EAGZ,IAAA2P,iBAAA,GAQItD,gBAAgB,CAAC;AACnBC,MAAAA,YAAY,EAAZA,YAAY;AACZE,MAAAA,UAAU,EAAED,OAAO;AACnB9I,MAAAA,WAAW,EAAXA,WAAW;AACXgJ,MAAAA,YAAY,EAAZA,YAAY;AACZC,MAAAA,QAAQ,EAARA;AACD,KAAA,CAAC;IAbAC,UAAU,GAAAgD,iBAAA,CAAVhD,UAAU;IACCH,UAAU,GAAAmD,iBAAA,CAArB5C,SAAS;IACTS,YAAY,GAAAmC,iBAAA,CAAZnC,YAAY;IACZL,iBAAiB,GAAAwC,iBAAA,CAAjBxC,iBAAiB;IACjBkC,aAAa,GAAAM,iBAAA,CAAbN,aAAa;IACbF,QAAQ,GAAAQ,iBAAA,CAARR,QAAQ;IACRC,WAAW,GAAAO,iBAAA,CAAXP,WAAW;EASb,IAAMpC,UAAU,GAAG7Q,MAAM,CAAC,IAAIR,GAAG,EAA4B,CAAC;EAC9D,IAAMkP,eAAe,GAAG/D,WAAW,CAAC,UAACpL,KAAa,EAAElB,GAAQ,EAAEwK,MAAc,EAAI;AAAA,IAAA,IAAA4K,qBAAA;AAC9E,IAAA,IAAMjG,MAAM,GAAAiG,CAAAA,qBAAA,GAAG5C,UAAU,CAAC5Q,OAAO,CAACiC,GAAG,CAAC3C,KAAK,CAAC,KAAAkU,IAAAA,GAAAA,qBAAA,GAAI,IAAIjU,GAAG,EAAe;AACtEgO,IAAAA,MAAM,CAAChL,GAAG,CAACnE,GAAG,EAAEwK,MAAM,CAAC;IACvBgI,UAAU,CAAC5Q,OAAO,CAACuC,GAAG,CAACjD,KAAK,EAAEiO,MAAM,CAAC;GACtC,EAAE,EAAE,CAAC;AAEN,EAAA,IAAMkG,cAAc,GAAGjS,OAAO,CAA6B,YAAK;IAC9D,OAAO;AAAEiN,MAAAA,eAAe,EAAfA,eAAe;MAAEiF,gBAAgB,EAAE,SAAlBA,gBAAgBA,GAAA;QAAA,OAAQT,aAAa,CAACjT,OAAO;AAAA;KAAE;AAC3E,GAAC,EAAE,CAACiT,aAAa,EAAExE,eAAe,CAAC,CAAC;AAEpC,EAAA,IAAQtN,OAAO,GAAiBoN,gBAAgB,CAAxCpN,OAAO;IAAEuN,UAAU,GAAKH,gBAAgB,CAA/BG,UAAU;EAC3B,IAAMiF,QAAQ,GAAG1E,YAAY,CAACoE,OAAO,EAAE,UAACO,GAAG,EAAI;IAC7C,IAAIA,GAAG,IAAI,IAAI,EAAE;AAEjB,IAAA,IAAMC,UAAU,GAAGD,GAAG,CAAC/E,YAAY;IACnC,IAAIgF,UAAU,KAAK,CAAC,EAAE;AAEtB,IAAA,IAAMC,OAAO,GAAGlD,UAAU,CAAC5Q,OAAO;AAClC8T,IAAAA,OAAO,CAAC7J,OAAO,CAAC,UAAC8J,GAAG,EAAEpQ,QAAQ,EAAI;AAChC,MAAA,IAAMiF,MAAM,GAAG7J,KAAK,CAACS,IAAI,CAACuU,GAAG,CAACrU,MAAM,EAAE,CAAC,CAACmC,MAAM,CAAC,UAACC,GAAG,EAAE3C,CAAC,EAAA;QAAA,OAAK2C,GAAG,GAAG3C,CAAC;AAAA,OAAA,EAAE,CAAC,CAAC;AACtEiS,MAAAA,YAAY,CAACzN,QAAQ,EAAEiF,MAAM,CAAC;AAChC,KAAC,CAAC;AACFmI,IAAAA,iBAAiB,EAAE;AACnBH,IAAAA,UAAU,CAAC5Q,OAAO,CAACgU,KAAK,EAAE;AAC5B,GAAC,CAAC;AAEF,EAAA,IAAMC,QAAQ,GAAGlR,cAAc,CAC7BH,GAAO,CAAA,OAAA,EAAA;AAAAuC,IAAAA,GAAG,EAAEwO,QAAQ;IAAAvS,QAAA,EACjBgP,UAAU,CAAC3O,GAAG,CAAC,UAAC8Q,CAAC,EAAE5O,QAAQ,EAAI;AAC9B,MAAA,IAAMuQ,OAAO,GAAI3B,CAAe,CAACe,MAAgB,CAAC;MAClD,OACE1Q,IAACyL,KAAG,EAAA;QAEF5K,SAAS,EAAEkB,IAAI,CAACyI,YAAY,IAAA,IAAA,GAAA,SAAA,GAAZA,YAAY,CAAGmF,CAAC,EAAE5O,QAAQ,CAAC,CAAC;QAC5CA,QAAQ,EAAEA,QAAQ,GAAG4M,UAAU;AAC/BjN,QAAAA,OAAO,EAAEiP,CAAC;AACVpR,QAAAA,OAAO,EAAEoN,gBAAgB;AACzBlB,QAAAA,KAAK,EAAEA,KAAK;AACZT,QAAAA,SAAS,EAAEA,SAAS;AACpBhJ,QAAAA,UAAU,EAAEA;OAPP,EAAAsQ,OAAO,CAQZ;KAEL;GAAC,CACI,EACRvH,UAAU,EACV;AAAExL,IAAAA,OAAO,EAAPA,OAAO;AAAEoN,IAAAA,gBAAgB,EAAEG;AAAU,GAAE,CAC1C;AAED,EAAA,IAAArN,eAAA,GAAyBT,cAAc,EAAE;IAAjCuT,YAAY,GAAA9S,eAAA,CAAZ8S,YAAY;AAEpB,EAAA,IAAMC,SAAS,GAAGrR,cAAc,CAC9BsR,IAAA,CAAA,OAAA,EAAA;AACE5Q,IAAAA,SAAS,EAAEkB,IAAI,CAAClB,SAAS,EAAE,oBAAoB,CAAC;IAChDC,KAAK,EAAAgB,QAAA,CAAA,EAAA,EAAOhB,KAAK,EAAA;AAAE4Q,MAAAA,aAAa,EAAEtB,WAAW;AAAEuB,MAAAA,UAAU,EAAExB;KAAU,CAAA;AACrE5N,IAAAA,GAAG,EAAEiO,WAAW;AAEhBhS,IAAAA,QAAA,EAAA,CAAAwB,GAAA,CAACkC,UAAQ,EAAA;AACP3D,MAAAA,OAAO,EAAEuN,UAAU;AACnB3J,MAAAA,oBAAoB,EAAEoP;KAAY,CAClC,EACDF,QAAQ;GACH,CAAA,EACRvH,cAAc,EACd;AAAEvL,IAAAA,OAAO,EAAPA,OAAO;AAAEoN,IAAAA,gBAAgB,EAAEG;AAAY,GAAA,CAC1C;AAED,EAAA,IAAA8F,qBAAA,GAA2BpK,0BAA0B,EAAE;IAA/CX,MAAM,GAAA+K,qBAAA,CAAN/K,MAAM;IAAEG,MAAM,GAAA4K,qBAAA,CAAN5K,MAAM;AACtB,EAAA,IAAM6K,UAAU,GAAG1U,MAAM,CAAiB,IAAI,CAAC;AAC/CyR,EAAAA,SAAS,CAAC,YAAK;AACb,IAAA,IAAMxO,IAAI,GAAGyR,UAAU,CAACzU,OAAO;IAC/B,IAAIgD,IAAI,IAAI,IAAI,EAAE;IAElB,IAAM5E,GAAG,GAAG,oBAAoB;AAChC,IAAA,IAAMkU,QAAQ,GAAG,SAAXA,QAAQA,GAAQ;MACpB1I,MAAM,CAACxL,GAAG,EAAE;QAAEuL,UAAU,EAAE,SAAZA,UAAUA,GAAA;UAAA,OAAQ3G,IAAI,CAAC2G,UAAU;AAAA,SAAA;AAAE3G,QAAAA,IAAI,EAAJA;AAAI,OAAE,CAAC;KACzD;IACD,IAAM0R,OAAO,GAAGjL,MAAM,CAACrL,GAAG,EAAE,UAACuL,UAAU,EAAI;MACzC3G,IAAI,CAAC2G,UAAU,GAAGA,UAAU;AAC9B,KAAC,CAAC;AACF3G,IAAAA,IAAI,CAACuM,gBAAgB,CAAC,QAAQ,EAAE+C,QAAQ,CAAC;AACzC,IAAA,OAAO,YAAK;AACVtP,MAAAA,IAAI,CAACwM,mBAAmB,CAAC,QAAQ,EAAE8C,QAAQ,CAAC;AAC5CoC,MAAAA,OAAO,EAAE;KACV;AACH,GAAC,EAAE,CAACjL,MAAM,EAAEG,MAAM,CAAC,CAAC;AAEpB,EAAA,IAAM+K,SAAS,GAAG1F,YAAY,CAACwF,UAAU,EAAEtB,cAAc,CAAC;AAE1D,EAAA,OACEvQ,GAAC,CAAAyH,eAAe,CAACxH,QAAQ;AAACjE,IAAAA,KAAK,EAAE6U,cAAc;AAAArS,IAAAA,QAAA,EAC5C2B,cAAc,CACbH,GAAA,CAAA,KAAA,EAAA;AACEuC,MAAAA,GAAG,EAAEwP,SAAS;AACdlR,MAAAA,SAAS,EAAC,4BAA4B;gBAErC2Q;KAAS,CACN,EACN3H,iBAAiB,EACjB;AAAEtL,MAAAA,OAAO,EAAPA,OAAO;AAAEoN,MAAAA,gBAAgB,EAAEG;KAAY;AAC1C,GAAA,CACwB;AAE/B;;;AClJA,IAAMkG,WAAW,GAAyB,SAApCA,WAAWA,CAA0B1T,KAAK,EAAI;AAClD,EAAA,IACEuC,SAAS,GAUPvC,KAAK,CAVPuC,SAAS;IACTC,KAAK,GASHxC,KAAK,CATPwC,KAAK;IACL+Q,UAAU,GAQRvT,KAAK,CARPuT,UAAU;IACDlG,gBAAgB,GAOvBrN,KAAK,CAPPC,OAAO;IACP0T,YAAY,GAMV3T,KAAK,CANP2T,YAAY;IACZzI,mBAAmB,GAKjBlL,KAAK,CALPkL,mBAAmB;IACnBC,gBAAgB,GAIdnL,KAAK,CAJPmL,gBAAgB;IAChBC,YAAY,GAGVpL,KAAK,CAHPoL,YAAY;IACZC,eAAe,GAEbrL,KAAK,CAFPqL,eAAe;IACfC,gBAAgB,GACdtL,KAAK,CADPsL,gBAAgB;AAGlB,EAAA,IAAQrL,OAAO,GAAiBoN,gBAAgB,CAAxCpN,OAAO;IAAEuN,UAAU,GAAKH,gBAAgB,CAA/BG,UAAU;EAC3B,IAAMoG,UAAU,GAAG3T,OAAO,CAACA,OAAO,CAACjD,MAAM,GAAG,CAAC,CAAC;AAE9C,EAAA,IAAAmD,eAAA,GAAsBT,cAAc,EAAE;IAA9BU,SAAS,GAAAD,eAAA,CAATC,SAAS;AACjB,EAAA,IAAA4C,eAAA,GAA8BpB,cAAc,EAAE;IAAhCpB,WAAW,GAAAwC,eAAA,CAAjBvB,IAAI;EAEZ,IAAMgM,wBAAwB,GAAGT,aAAa,CAACQ,UAAU,EAAE,UAACvP,CAAC,EAAI;AAC/D,IAAA,IAAIA,CAAC,CAACiG,IAAI,KAAK,OAAO,EAAE;AACtB,MAAA,OAAO,KAAK;AACd;AACA,IAAA,OAAOhF,gBAAgB,CAACjB,CAAC,CAACe,MAAM,CAACG,KAAK,CAAC;AACzC,GAAC,CAAC;EACF,IAAMuO,0BAA0B,GAAGF,UAAU,CAACxP,SAAS,CAAC,UAACC,CAAC,EAAI;AAC5D,IAAA,IAAIA,CAAC,CAACiG,IAAI,KAAK,OAAO,EAAE;AACtB,MAAA,OAAO,KAAK;AACd;AACA,IAAA,OAAO9E,iBAAiB,CAACnB,CAAC,CAACe,MAAM,CAACG,KAAK,CAAC;AAC1C,GAAC,CAAC;AACF,EAAA,IAAAmU,qBAAA,GAA2BpK,0BAA0B,EAAE;IAA/CX,MAAM,GAAA+K,qBAAA,CAAN/K,MAAM;IAAEG,MAAM,GAAA4K,qBAAA,CAAN5K,MAAM;AAEtB,EAAA,IAAMmL,gBAAgB,GAAGhV,MAAM,CAAiB,IAAI,CAAC;AACrDyR,EAAAA,SAAS,CAAC,YAAK;AACb,IAAA,IAAMxO,IAAI,GAAG+R,gBAAgB,CAAC/U,OAAO;IACrC,IAAIgD,IAAI,IAAI,IAAI,EAAE;IAClB,IAAM5E,GAAG,GAAG,sBAAsB;AAClC,IAAA,IAAMkU,QAAQ,GAAG,SAAXA,QAAQA,GAAQ;MACpB1I,MAAM,CAACxL,GAAG,EAAE;QAAEuL,UAAU,EAAE,SAAZA,UAAUA,GAAA;UAAA,OAAQ3G,IAAI,CAAC2G,UAAU;AAAA,SAAA;AAAE3G,QAAAA,IAAI,EAAJA;AAAI,OAAE,CAAC;KACzD;IACD,IAAM0R,OAAO,GAAGjL,MAAM,CAACrL,GAAG,EAAE,UAACuL,UAAU,EAAI;MACzC3G,IAAI,CAAC2G,UAAU,GAAGA,UAAU;AAC9B,KAAC,CAAC;AACF3G,IAAAA,IAAI,CAACuM,gBAAgB,CAAC,QAAQ,EAAE+C,QAAQ,CAAC;AACzC,IAAA,OAAO,YAAK;AACVtP,MAAAA,IAAI,CAACwM,mBAAmB,CAAC,QAAQ,EAAE8C,QAAQ,CAAC;AAC5CoC,MAAAA,OAAO,EAAE;KACV;AACH,GAAC,EAAE,CAACjL,MAAM,EAAEG,MAAM,CAAC,CAAC;AAEpB,EAAA,IAAMmK,GAAG,GAAGhR,cAAc,CACxBH;cACG8L,UAAU,CAACjN,GAAG,CAAC,UAACM,IAAI,EAAEzC,KAAK,EAAI;AAAA,MAAA,IAAA0V,oBAAA;AAC9B,MAAA,IAAQ5W,GAAG,GAAK2D,IAAI,CAAZ3D,GAAG;AACX,MAAA,IAAI2D,IAAI,CAACqD,IAAI,KAAK,OAAO,EAAE;QACzB,OAAOxC,GAAA,CAAA,IAAA,EAAA;AAAA,UAAA,YAAA,EAAA;SAAA,EAASxE,GAAG,CAAe;AACpC;AAEA,MAAA,IAAQ8B,MAAM,GAAK6B,IAAI,CAAf7B,MAAM;AAEd,MAAA,IAAIA,MAAM,CAACoE,OAAO,KAAK,CAAC,EAAE;AACxB,QAAA,OAAO,IAAI;AACb;AAEA,MAAA,IAAM2Q,MAAM,GAAGhV,MAAM,CAAC6U,UAAU,CAAC,KAAK1W,GAAG;MACzC,IAAA+F,IAAA,IAAA6Q,oBAAA,GAII9U,MAAM,CAACgV,YAAY,uBAAnBhV,MAAM,CAACgV,YAAY,CAAGhV,MAAM,EAAEZ,KAAK,CAAC,YAAA0V,oBAAA,GAAI,EAAE;QAHjCG,WAAW,GAAAhR,IAAA,CAAtBV,SAAS;QACF2R,OAAO,GAAAjR,IAAA,CAAdT,KAAK;AACF4J,QAAAA,IAAI,GAAAxJ,6BAAA,CAAAK,IAAA,EAAAJ,SAAA,CAAA;MAGT,OACEnB,IAACyS,QAAQ,EAAA;AAAAjU,QAAAA,QAAA,EACN2B,cAAc,cACbuS,aAAa,CACX,IAAI,EAAA5Q,QAAA,CAAA;AAEF6Q,UAAAA,KAAK,EAAE;AAAK,SAAA,EACTjI,IAAI,EAAA;UACPhJ,OAAO,EAAEpE,MAAM,CAACoE,OAAO;UACvBb,SAAS,EAAEkB,IAAI,CACb,2BAA2B,EAC3BsQ,MAAM,IAAI,UAAU,EACpB/U,MAAM,CAAC8D,KAAK,IAAI,IAAI,IAA2B9D,sBAAAA,GAAAA,MAAM,CAAC8D,KAAO,EAC7DzD,YAAY,CAACL,MAAM,CAACG,KAAK,CAAC,IAAI,2BAA2B,EACzDsO,wBAAwB,KAAKrP,KAAK,IAAI,kCAAkC,EACxEsP,0BAA0B,KAAKtP,KAAK,IAAI,oCAAoC,EAC5EY,MAAM,CAACuD,SAAS,EAChB0R,WAAW,CACZ;UACDzR,KAAK,EAAAgB,QAAA,CAAA,EAAA,EACA0Q,OAAO,EAAA;AACVzT,YAAAA,IAAI,EAAEvB,gBAAgB,CAACF,MAAM,CAACG,KAAK,CAAC,GAAGqB,WAAW,CAACO,GAAG,CAAC7D,GAAG,CAAC,GAAGwG,SAAS;AACvE1C,YAAAA,KAAK,EAAE5B,iBAAiB,CAACJ,MAAM,CAACG,KAAK,CAAC,GAClCqB,WAAW,CAACO,GAAG,CAAC7D,GAAG,CAAC,GACpBwG;AAAS,WAAA;AACd,SAAA,CAAA,EAEH1E,MAAM,CAACsV,KAAK,CACb,EACDhJ,gBAAgB,EAChB;AAAEtM,UAAAA,MAAM,EAANA,MAAM;AAAEiB,UAAAA,OAAO,EAAPA,OAAO;AAAEsU,UAAAA,YAAY,EAAEnU,SAAS;AAAEiN,UAAAA,gBAAgB,EAAEG;SAAY;OA7B/D,EAAAtQ,GAAG,CA+BP;KAEd;GAAC,CACC,EACLmO,eAAe,EACf;AAAEpL,IAAAA,OAAO,EAAPA,OAAO;AAAEoN,IAAAA,gBAAgB,EAAEG;AAAU,GAAE,CAC1C;AAED,EAAA,IAAMgH,SAAS,GAAG3S,cAAc,CAC9BH;AAAOa,IAAAA,SAAS,EAAC,qBAAqB;AAAArC,IAAAA,QAAA,EAAE2S;GAAG,CAAS,EACpDzH,YAAY,EACZ;AAAEnL,IAAAA,OAAO,EAAPA,OAAO;AAAEoN,IAAAA,gBAAgB,EAAEG;AAAY,GAAA,CAC1C;AAED,EAAA,IAAM0F,SAAS,GAAGrR,cAAc,CAC9BsR,IACE,CAAA,OAAA,EAAA;AAAA3Q,IAAAA,KAAK,EAAEA,KAAK;AAEZtC,IAAAA,QAAA,EAAA,CAAAwB,GAAA,CAACkC,UAAQ,EAAA;AAAC3D,MAAAA,OAAO,EAAEuN;KAAc,CAAA,EAChCgH,SAAS;GAAA,CACJ,EACRrJ,gBAAgB,EAChB;AAAElL,IAAAA,OAAO,EAAPA,OAAO;AAAEoN,IAAAA,gBAAgB,EAAEG;AAAU,GAAE,CAC1C;AAED,EAAA,IAAMiG,SAAS,GAAG1F,YAAY,CAACwF,UAAU,EAAEM,gBAAgB,CAAC;AAE5D,EAAA,OAAOhS,cAAc,CACnBH,GACE,CAAA,KAAA,EAAA;AAAAuC,IAAAA,GAAG,EAAEwP,SAAS;AACdlR,IAAAA,SAAS,EAAEkB,IAAI,CAAC,sBAAsB,EAAElB,SAAS,EAAE;AACjD,MAAA,6BAA6B,EAAEoR;KAChC,CAAC;AACFnR,IAAAA,KAAK,EAAE;MACLyN,GAAG,EAAEwE,MAAM,CAACC,QAAQ,CAACf,YAAY,CAAC,GAAIA,YAAuB,GAAGjQ;KACjE;AAAAxD,IAAAA,QAAA,EAEAgT;GAAS,CACN,EACNhI,mBAAmB,EACnB;AAAEjL,IAAAA,OAAO,EAAPA,OAAO;AAAEoN,IAAAA,gBAAgB,EAAEG;AAAU,GAAE,CAC1C;AACH,CAAC;;AClKD,SAASgB,WAAWA,CAACC,KAAa,EAAEhG,UAAkB,EAAA;EACpD,IAAIhI,IAAI,GAAG,CAAC;AACZ,EAAA,IAAIO,KAAK,GAAGyN,KAAK,CAACzR,MAAM,GAAG,CAAC;EAC5B,IAAIoB,KAAK,GAAG,EAAE;EAEd,OAAOqC,IAAI,IAAIO,KAAK,EAAE;AACpB,IAAA,IAAM2N,GAAG,GAAGC,IAAI,CAACC,KAAK,CAAC,CAACpO,IAAI,GAAGO,KAAK,IAAI,CAAC,CAAC;IAE1C,IAAIyN,KAAK,CAACE,GAAG,CAAC,CAAC3N,KAAK,GAAGyH,UAAU,EAAE;AACjCrK,MAAAA,KAAK,GAAGuQ,GAAG;MACX3N,KAAK,GAAG2N,GAAG,GAAG,CAAC;AACjB,KAAC,MAAM;MACLlO,IAAI,GAAGkO,GAAG,GAAG,CAAC;AAChB;AACF;AAEA,EAAA,IAAIvQ,KAAK,KAAK,EAAE,EAAE;AAChB,IAAA,OAAOsF,SAAS;AAClB;EAEA,OAAO+K,KAAK,CAACrQ,KAAK,CAAC;AACrB;AAEA,SAASuW,wBAAwBA,CAAI1U,OAAwB,EAAA;EAC3D,IAAI7B,KAAK,GAAG,EAAE;AACd,EAAA,KAAK,IAAInB,CAAC,GAAGgD,OAAO,CAACjD,MAAM,GAAG,CAAC,EAAEC,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;AAC5C,IAAA,IAAM+B,MAAM,GAAGiB,OAAO,CAAChD,CAAC,CAAC;AACzB,IAAA,IAAImC,iBAAiB,CAACJ,MAAM,CAACG,KAAK,CAAC,EAAE;AACnCf,MAAAA,KAAK,GAAGnB,CAAC;AACX,KAAC,MAAM;AACL,MAAA;AACF;AACF;AACA,EAAA,OAAOmB,KAAK;AACd;AAEA,SAASwW,sBAAsBA,CAAI3U,OAAwB,EAAA;AACzD,EAAA,OAAO+M,aAAa,CAAC/M,OAAO,EAAE,UAAChC,CAAC,EAAA;AAAA,IAAA,OAAKiB,gBAAgB,CAACjB,CAAC,CAACkB,KAAK,CAAC;GAAC,CAAA;AACjE;AAEM,SAAU0V,mBAAmBA,CAAI7S,OAAsC,EAAA;AAC3E,EAAA,IACEmN,YAAY,GAMVnN,OAAO,CANTmN,YAAY;IACZC,QAAQ,GAKNpN,OAAO,CALToN,QAAQ;IACC0F,UAAU,GAIjB9S,OAAO,CAJT/B,OAAO;IACP8U,WAAW,GAGT/S,OAAO,CAHT+S,WAAW;IACXR,YAAY,GAEVvS,OAAO,CAFTuS,YAAY;IAAAS,iBAAA,GAEVhT,OAAO,CADTiT,QAAQ;AAARA,IAAAA,QAAQ,GAAAD,iBAAA,KAAG,SAAA,GAAA,KAAK,GAAAA,iBAAA;AAGlB,EAAA,IAAME,kBAAkB,GAAGN,sBAAsB,CAACE,UAAU,CAAC;AAC7D,EAAA,IAAMK,oBAAoB,GAAGR,wBAAwB,CAACG,UAAU,CAAC;AAEjE,EAAA,IAAMM,OAAO,GAAGF,kBAAkB,GAAG,EAAE,GAAGnW,MAAM,CAAC+V,UAAU,CAACI,kBAAkB,CAAC,CAAC,GAAG,IAAI;AACvF,EAAA,IAAMG,QAAQ,GAAGF,oBAAoB,GAAG,EAAE,GAAGpW,MAAM,CAAC+V,UAAU,CAACK,oBAAoB,CAAC,CAAC,GAAG,IAAI;AAE5F,EAAA,IAAA/O,SAAA,GAAoCC,QAAQ,CAAC,CAAC,CAAC;AAAxCgJ,IAAAA,UAAU,GAAAjJ,SAAA,CAAA,CAAA,CAAA;AAAEkJ,IAAAA,aAAa,GAAAlJ,SAAA,CAAA,CAAA,CAAA;AAChC,EAAA,IAAAI,UAAA,GAAgCH,QAAQ,CAAC,CAAC,CAAC;AAApCkJ,IAAAA,QAAQ,GAAA/I,UAAA,CAAA,CAAA,CAAA;AAAEgJ,IAAAA,WAAW,GAAAhJ,UAAA,CAAA,CAAA,CAAA;AAE5B,EAAA,IAAMiI,KAAK,GAAGnO,OAAO,CAAC,YAAK;AACzB,IAAA,IAAI2U,QAAQ,EAAE;AACZ,MAAA,OAAO,EAAE;AACX;IACA,IAAIxU,IAAI,GAAG,CAAC;IACZ,OAAOqU,UAAU,CAACvU,GAAG,CAAC,UAACvB,MAAM,EAAEZ,KAAK,EAAU;AAAA,MAAA,IAAAkX,iBAAA;AAC5C,MAAA,IAAMpY,GAAG,GAAG6B,MAAM,CAACC,MAAM,CAAC;AAC1B,MAAA,IAAMmF,KAAK,GAAA,CAAAmR,iBAAA,GAAGf,YAAY,CAACxT,GAAG,CAAC7D,GAAG,CAAC,KAAAoY,IAAAA,GAAAA,iBAAA,GAAInG,YAAY;AACnD,MAAA,IAAMnO,KAAK,GAAGP,IAAI,GAAG0D,KAAK;AAC1B,MAAA,IAAMoK,IAAI,GAAS;AACjBnQ,QAAAA,KAAK,EAALA,KAAK;AACL+F,QAAAA,KAAK,EAALA,KAAK;AACL1D,QAAAA,IAAI,EAAJA,IAAI;AACJO,QAAAA,KAAK,EAALA;OACD;AAEDP,MAAAA,IAAI,GAAGO,KAAK;AACZ,MAAA,OAAOuN,IAAI;AACb,KAAC,CAAC;GACH,EAAE,CAACuG,UAAU,EAAEP,YAAY,EAAEpF,YAAY,EAAE8F,QAAQ,CAAC,CAAC;AAEtD;EACA,IAAM9E,SAAS,GAAGtR,MAAM,CAAO;AAC7BT,IAAAA,KAAK,EAAE,CAAC;AACR+F,IAAAA,KAAK,EAAEgL,YAAY;AACnB1O,IAAAA,IAAI,EAAE,CAAC;AACPO,IAAAA,KAAK,EAAEmO;AACR,GAAA,CAAC;AAEF,EAAA,IAAMoG,aAAa,GAAGlM,WAAW,CAAC,UAACZ,UAAkB,EAAI;AACvD,IAAA,OAAO+F,WAAW,CAACC,KAAK,EAAEhG,UAAU,CAAC;AACvC,GAAC,CAAC;EAEF,IAAMyI,cAAc,GAAG7H,WAAW,CAAC,UAACZ,UAAkB,EAAE+H,KAAa,EAAI;AACvE,IAAA,IAAMW,MAAM,GAAGoE,aAAa,CAAC9M,UAAU,CAAC;IACxC,IAAI0I,MAAM,IAAI,IAAI,EAAE;MAClBhB,SAAS,CAACrR,OAAO,GAAGqS,MAAM;AAC1B7B,MAAAA,aAAa,CAACV,IAAI,CAACiC,GAAG,CAAC,CAAC,EAAEM,MAAM,CAAC/S,KAAK,GAAGgR,QAAQ,CAAC,CAAC;MACnDI,WAAW,CAAC2B,MAAM,CAAC/S,KAAK,GAAGoS,KAAK,GAAGpB,QAAQ,CAAC;AAC9C;AACF,GAAC,CAAC;AAEF;AACA,EAAA,IAAMoG,aAAa,GAAG3W,MAAM,CAAC,CAAC,CAAC;AAC/ByR,EAAAA,SAAS,CAAC,YAAK;AACb,IAAA,IAAI2E,QAAQ,EAAE;AAEd,IAAA,IAAMQ,eAAe,GAAGV,WAAW,CAACjW,OAAO;IAC3C,IAAI2W,eAAe,IAAI,IAAI,EAAE;AAE7B,IAAA,IAAMC,cAAc,GAAGD,eAAe,CAACrR,WAAW;IAClD,IAAIoM,KAAK,GAAG5B,IAAI,CAACqC,IAAI,CAACyE,cAAc,GAAGvG,YAAY,CAAC;AAEpD,IAAA,IAAMiC,QAAQ,GAAG,SAAXA,QAAQA,GAAQ;AACpB,MAAA,IAAM3I,UAAU,GAAGgN,eAAe,CAAChN,UAAU;AAC7C;AACA,MAAA,IAAMkN,aAAa,GAAGlN,UAAU,GAAG+M,aAAa,CAAC1W,OAAO;AACxD,MAAA,IAAI6W,aAAa,EAAE;AACjB,QAAA,IAAIlN,UAAU,GAAG0H,SAAS,CAACrR,OAAO,CAACkC,KAAK,EAAE;AACxCkQ,UAAAA,cAAc,CAACzI,UAAU,EAAE+H,KAAK,CAAC;AACnC;AACF,OAAC,MAAM;AACL,QAAA,IAAI/H,UAAU,GAAG0H,SAAS,CAACrR,OAAO,CAAC2B,IAAI,EAAE;AACvCyQ,UAAAA,cAAc,CAACzI,UAAU,EAAE+H,KAAK,CAAC;AACnC;AACF;MAEAgF,aAAa,CAAC1W,OAAO,GAAG2J,UAAU;KACnC;AAEDgN,IAAAA,eAAe,CAACpH,gBAAgB,CAAC,QAAQ,EAAE+C,QAAQ,CAAC;IAEpD,IAAIwE,SAAS,GAAG,CAAC;IACjB,IAAMC,IAAI,GAAG3H,QAAQ,CAACuH,eAAe,EAAE,UAAAxS,IAAA,EAAc;AAAA,MAAA,IAAXkB,KAAK,GAAAlB,IAAA,CAALkB,KAAK;AAC7C,MAAA,IAAIA,KAAK,KAAKyR,SAAS,IAAIzR,KAAK,KAAK,CAAC,EAAE;AACtC,QAAA;AACF;AACAyR,MAAAA,SAAS,GAAGzR,KAAK;AACjB,MAAA,IAAMsE,UAAU,GAAGgN,eAAe,CAAChN,UAAU;MAC7C+H,KAAK,GAAG5B,IAAI,CAACqC,IAAI,CAAC9M,KAAK,GAAGgL,YAAY,CAAC;AACvC+B,MAAAA,cAAc,CAACzI,UAAU,EAAE+H,KAAK,CAAC;AACnC,KAAC,CAAC;AACF,IAAA,OAAO,YAAK;AACViF,MAAAA,eAAe,CAACnH,mBAAmB,CAAC,QAAQ,EAAE8C,QAAQ,CAAC;AACvDyE,MAAAA,IAAI,EAAE;KACP;AACH,GAAC,EAAE,CAACd,WAAW,EAAE5F,YAAY,EAAE+B,cAAc,EAAE9B,QAAQ,EAAEmG,aAAa,EAAEN,QAAQ,CAAC,CAAC;EAElF,IAAMrD,GAAG,GAAG,SAANA,GAAGA,CAAIvC,UAAkB,EAAEE,QAAiB,EAAI;AACpD,IAAA,OAAOd,KAAK,CAAC5C,KAAK,CAACwD,UAAU,EAAEE,QAAQ,CAAC,CAAC5O,MAAM,CAAC,UAACoL,CAAC,EAAEC,CAAC,EAAA;AAAA,MAAA,OAAKD,CAAC,GAAGC,CAAC,CAAC7H,KAAK;AAAA,KAAA,EAAE,CAAC,CAAC;GAC1E;AAED,EAAA,IAAM2R,cAAc,GAAGZ,kBAAkB,GAAG,EAAE,GAAGtD,GAAG,CAAC,CAAC,EAAEsD,kBAAkB,GAAG,CAAC,CAAC,GAAG,CAAC;AACnF,EAAA,IAAMa,eAAe,GAAGZ,oBAAoB,GAAG,EAAE,GAAGvD,GAAG,CAACuD,oBAAoB,CAAC,GAAG,CAAC;AAEjF;AACA,EAAA,IAAMa,SAAS,GAAGpH,IAAI,CAACiC,GAAG,CAAC,CAAC,EAAEe,GAAG,CAAC,CAAC,EAAEvC,UAAU,CAAC,GAAGyG,cAAc,CAAC;AAClE,EAAA,IAAMG,UAAU,GAAGrH,IAAI,CAACiC,GAAG,CAAC,CAAC,EAAEe,GAAG,CAACrC,QAAQ,CAAC,GAAGwG,eAAe,CAAC;AAE/D,EAAA,IAAMG,WAAW,GAAG5V,OAAO,CAAC,YAAK;AAC/B,IAAA,IAAI2U,QAAQ,EAAE;AACZ,MAAA,OAAOH,UAAU;AACnB;AACA,IAAA,IAAM1T,MAAM,GAAA,EAAA,CAAA+I,MAAA,CACP2K,UAAU,CAACjJ,KAAK,CAAC,CAAC,EAAEqJ,kBAAkB,GAAG,CAAC,CAAC,EAC3CJ,UAAU,CAACjJ,KAAK,CAACwD,UAAU,EAAEE,QAAQ,CAAC,EACtCuF,UAAU,CAACjJ,KAAK,CAACsJ,oBAAoB,CAAC,CAC1C;AACD,IAAA,IAAMgB,QAAQ,GAAG,IAAI7N,GAAG,EAAO;AAC/B,IAAA,OAAOlH,MAAM,CAACmJ,MAAM,CAAC,UAACvL,MAAM,EAAI;AAC9B,MAAA,IAAM9B,GAAG,GAAG6B,MAAM,CAACC,MAAM,CAAC;AAC1B,MAAA,IAAImX,QAAQ,CAACxN,GAAG,CAACzL,GAAG,CAAC,EAAE;AACrB,QAAA,OAAO,KAAK;AACd;AACAiZ,MAAAA,QAAQ,CAAClN,GAAG,CAAC/L,GAAG,CAAC;AACjB,MAAA,OAAO,IAAI;AACb,KAAC,CAAC;AACJ,GAAC,EAAE,CAAC+X,QAAQ,EAAEH,UAAU,EAAEzF,UAAU,EAAEE,QAAQ,EAAE2F,kBAAkB,EAAEC,oBAAoB,CAAC,CAAC;AAE1F,EAAA,IAAM3H,UAAU,GAAGlN,OAAO,CAAC,YAAK;IAC9B,OAAO4V,WAAW,CAACvV,MAAM,CAAwB,UAACS,MAAM,EAAEpC,MAAM,EAAEZ,KAAK,EAAI;AACzE,MAAA,IAAMlB,GAAG,GAAG6B,MAAM,CAACC,MAAM,CAAC;MAC1B,IAAI9B,GAAG,KAAKkY,OAAO,EAAE;QACnBhU,MAAM,CAACkL,IAAI,CAAC;AAAEpI,UAAAA,IAAI,EAAE,QAAQ;AAAEhH,UAAAA,GAAG,EAAHA,GAAG;AAAE8B,UAAAA,MAAM,EAANA;AAAM,SAAE,CAAC;QAC5CoC,MAAM,CAACkL,IAAI,CAAC;AAAEpI,UAAAA,IAAI,EAAE,OAAO;AAAEhH,UAAAA,GAAG,EAAE,aAAa;AAAEiH,UAAAA,KAAK,EAAE6R;AAAS,SAAE,CAAC;OACrE,MAAM,IAAIZ,OAAO,IAAI,IAAI,IAAIhX,KAAK,KAAK,CAAC,EAAE;QACzCgD,MAAM,CAACkL,IAAI,CAAC;AAAEpI,UAAAA,IAAI,EAAE,OAAO;AAAEhH,UAAAA,GAAG,EAAE,aAAa;AAAEiH,UAAAA,KAAK,EAAE6R;AAAS,SAAE,CAAC;QACpE5U,MAAM,CAACkL,IAAI,CAAC;AAAEpI,UAAAA,IAAI,EAAE,QAAQ;AAAEhH,UAAAA,GAAG,EAAHA,GAAG;AAAE8B,UAAAA,MAAM,EAANA;AAAM,SAAE,CAAC;AAC9C,OAAC,MAAM,IAAI9B,GAAG,KAAKmY,QAAQ,EAAE;QAC3BjU,MAAM,CAACkL,IAAI,CAAC;AAAEpI,UAAAA,IAAI,EAAE,OAAO;AAAEhH,UAAAA,GAAG,EAAE,cAAc;AAAEiH,UAAAA,KAAK,EAAE8R;AAAU,SAAE,CAAC;QACtE7U,MAAM,CAACkL,IAAI,CAAC;AAAEpI,UAAAA,IAAI,EAAE,QAAQ;AAAEhH,UAAAA,GAAG,EAAHA,GAAG;AAAE8B,UAAAA,MAAM,EAANA;AAAM,SAAE,CAAC;AAC9C,OAAC,MAAM,IAAIqW,QAAQ,IAAI,IAAI,IAAIjX,KAAK,KAAK8X,WAAW,CAAClZ,MAAM,GAAG,CAAC,EAAE;QAC/DoE,MAAM,CAACkL,IAAI,CAAC;AAAEpI,UAAAA,IAAI,EAAE,QAAQ;AAAEhH,UAAAA,GAAG,EAAHA,GAAG;AAAE8B,UAAAA,MAAM,EAANA;AAAM,SAAE,CAAC;QAC5CoC,MAAM,CAACkL,IAAI,CAAC;AAAEpI,UAAAA,IAAI,EAAE,OAAO;AAAEhH,UAAAA,GAAG,EAAE,cAAc;AAAEiH,UAAAA,KAAK,EAAE8R;AAAU,SAAE,CAAC;AACxE,OAAC,MAAM;QACL7U,MAAM,CAACkL,IAAI,CAAC;AAAEpI,UAAAA,IAAI,EAAE,QAAQ;AAAEhH,UAAAA,GAAG,EAAHA,GAAG;AAAE8B,UAAAA,MAAM,EAANA;AAAM,SAAE,CAAC;AAC9C;AACA,MAAA,OAAOoC,MAAM;KACd,EAAE,EAAE,CAAC;AACR,GAAC,EAAE,CAAC8U,WAAW,EAAEd,OAAO,EAAEC,QAAQ,EAAEW,SAAS,EAAEC,UAAU,CAAC,CAAC;AAE3D,EAAA,IAAMhW,OAAO,GAAGK,OAAO,CAAC,YAAK;IAC3B,OAAO;AAAEL,MAAAA,OAAO,EAAEiW,WAAW;AAAE1I,MAAAA,UAAU,EAAVA;KAAY;AAC7C,GAAC,EAAE,CAAC0I,WAAW,EAAE1I,UAAU,CAAC,CAAC;EAE7B,OAAO;AAAEvN,IAAAA,OAAO,EAAPA,OAAO;AAAEiW,IAAAA,WAAW,EAAXA,WAAW;AAAEhB,IAAAA,kBAAkB,EAAlBA,kBAAkB;AAAEC,IAAAA,oBAAoB,EAApBA;GAAsB;AAC3E;;ACpNA,SAASiB,SAASA,CAACpW,KAAqB,EAAEiE,GAAiC,EAAA;AACzE,EAAA,IACE1B,SAAS,GAOPvC,KAAK,CAPPuC,SAAS;IACTC,KAAK,GAMHxC,KAAK,CANPwC,KAAK;IACLtC,QAAQ,GAKNF,KAAK,CALPE,QAAQ;IACRmW,kBAAkB,GAIhBrW,KAAK,CAJPqW,kBAAkB;IAClBC,mBAAmB,GAGjBtW,KAAK,CAHPsW,mBAAmB;IACnBtL,UAAU,GAERhL,KAAK,CAFPgL,UAAU;IACVuL,mBAAmB,GACjBvW,KAAK,CADPuW,mBAAmB;AAGrB,EAAA,IAAMC,QAAQ,GAAG3X,MAAM,CAAiB,IAAI,CAAC;AAE7C,EAAA,IAAAuH,SAAA,GAAwCC,QAAQ,CAAC,KAAK,CAAC;AAAhDoQ,IAAAA,YAAY,GAAArQ,SAAA,CAAA,CAAA,CAAA;AAAEsQ,IAAAA,eAAe,GAAAtQ,SAAA,CAAA,CAAA,CAAA;AACpC,EAAA,IAAAI,UAAA,GAA0CH,QAAQ,CAAC,KAAK,CAAC;AAAlDsQ,IAAAA,aAAa,GAAAnQ,UAAA,CAAA,CAAA,CAAA;AAAEoQ,IAAAA,gBAAgB,GAAApQ,UAAA,CAAA,CAAA,CAAA;AAEtC,EAAA,IAAA8M,qBAAA,GAAmBpK,0BAA0B,EAAE;IAAvCX,MAAM,GAAA+K,qBAAA,CAAN/K,MAAM;AACd+H,EAAAA,SAAS,CAAC,YAAK;AACb,IAAA,IAAI,CAAC+F,kBAAkB,IAAI,CAACC,mBAAmB,EAAE;AAC/C,MAAA;AACF;AACA,IAAA,IAAMO,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAI/U,IAAiB,EAAI;AAChD,MAAA,IAAQ2G,UAAU,GAA+B3G,IAAI,CAA7C2G,UAAU;QAAEqO,WAAW,GAAkBhV,IAAI,CAAjCgV,WAAW;QAAEC,WAAW,GAAKjV,IAAI,CAApBiV,WAAW;AAC5C,MAAA,IAAIV,kBAAkB,EAAE;AACtBK,QAAAA,eAAe,CAACjO,UAAU,KAAK,CAAC,CAAC;AACnC;AACA,MAAA,IAAI6N,mBAAmB,EAAE;QACvBM,gBAAgB,CAAC,EAAEnO,UAAU,GAAGqO,WAAW,IAAIC,WAAW,CAAC,CAAC;AAC9D;KACD;AACD,IAAA,IAAMjV,IAAI,GAAGyU,mBAAmB,CAACzX,OAAO;IACxC,IAAIgD,IAAI,IAAI,IAAI,EAAE;MAChB+U,mBAAmB,CAAC/U,IAAI,CAAC;AAC3B;IACA,OAAOyG,MAAM,CAAC,QAAQ,EAAE,UAACyO,WAAW,EAAElV,IAAI,EAAI;MAC5C+U,mBAAmB,CAAC/U,IAAI,CAAC;AAC3B,KAAC,CAAC;GACH,EAAE,CAACyU,mBAAmB,EAAEF,kBAAkB,EAAEC,mBAAmB,EAAE/N,MAAM,CAAC,CAAC;AAE1E,EAAA,IAAMkL,SAAS,GAAG1F,YAAY,CAAC9J,GAAG,EAAEuS,QAAQ,CAAC;AAC7C,EAAA,OAAO3U,cAAc,CACnBH,GACE,CAAA,KAAA,EAAA;AAAAuC,IAAAA,GAAG,EAAEwP,SAAS;AACdlR,IAAAA,SAAS,EAAEkB,IAAI,CACb,eAAe,EACfgT,YAAY,IAAI,4BAA4B,EAC5CE,aAAa,IAAI,6BAA6B,EAC9CpU,SAAS,CACV;AACDC,IAAAA,KAAK,EAAEA,KAAK;AAEXtC,IAAAA,QAAA,EAAAA;IACG,EACN8K,UAAU,EACV,EAAE,CACH;AACH;AAEA,kBAAeiM,aAAAA,UAAU,CAACb,SAAS,CAAC;;AChBpC,SAASc,gBAAgBA,CACvBlX,KAA+B,EAC/BiE,GAAiC,EAAA;AAEjC,EAAA,IACEiO,WAAW,GAkBTlS,KAAK,CAlBPkS,WAAW;IACX3P,SAAS,GAiBPvC,KAAK,CAjBPuC,SAAS;IACTC,KAAK,GAgBHxC,KAAK,CAhBPwC,KAAK;IACL2U,kBAAkB,GAehBnX,KAAK,CAfPmX,kBAAkB;IAClBC,cAAc,GAcZpX,KAAK,CAdPoX,cAAc;IACLtC,UAAU,GAajB9U,KAAK,CAbPC,OAAO;IACKgP,OAAO,GAYjBjP,KAAK,CAZPkP,UAAU;IAAAmI,aAAA,GAYRrX,KAAK,CAXPoS,MAAM;AAAEkF,IAAAA,SAAS,GAAAD,aAAA,KAAG,SAAA,GAAA,KAAK,GAAAA,aAAA;IAAAE,qBAAA,GAWvBvX,KAAK,CAVPwX,kBAAkB;AAAlBA,IAAAA,kBAAkB,GAAAD,qBAAA,KAAG,SAAA,GAAA,EAAE,GAAAA,qBAAA;IACvBE,oBAAoB,GASlBzX,KAAK,CATPyX,oBAAoB;IAAAC,mBAAA,GASlB1X,KAAK,CARP2X,YAAY;AAAZA,IAAAA,YAAY,GAAAD,mBAAA,KAAG,SAAA,GAAA,CAAC,GAAAA,mBAAA;IAAAE,qBAAA,GAQd5X,KAAK,CAPP6X,eAAe;AAAfA,IAAAA,eAAe,GAAAD,qBAAA,KAAG,SAAA,GAAA,CAAC,GAAAA,qBAAA;IACnBjE,YAAY,GAMV3T,KAAK,CANP2T,YAAY;IAAAmE,eAAA,GAMV9X,KAAK,CALP4M,QAAQ;AAARA,IAAAA,QAAQ,GAAAkL,eAAA,KAAA,SAAA,GAAIrN,aAAa,CAACsN,eAAoC,GAAAD,eAAA;IAChDE,eAAe,GAI3BhY,KAAK,CAJPkM,YAAY;IACZC,KAAK,GAGHnM,KAAK,CAHPmM,KAAK;IACS8L,gBAAgB,GAE5BjY,KAAK,CAFPgP,YAAY;IAAAkJ,oBAAA,GAEVlY,KAAK,CADPmY,aAAa;AAAbA,IAAAA,aAAa,GAAAD,oBAAA,KAAG,SAAA,GAAA,IAAI,GAAAA,oBAAA;AAGtB,EAAA,IAAM1B,QAAQ,GAAG3X,MAAM,CAAiB,IAAI,CAAC;AAE7C,EAAA,IAAMgV,gBAAgB,GAAGhV,MAAM,CAAiB,IAAI,CAAC;AACrD,EAAA,IAAMoT,cAAc,GAAGpT,MAAM,CAAiB,IAAI,CAAC;AACnD,EAAA,IAAMuZ,QAAQ,GAAGvZ,MAAM,CAAmB,IAAI,CAAC;AAC/C,EAAA,IAAMwZ,iBAAiB,GAAGtK,YAAY,CAACqK,QAAQ,EAAElG,WAAW,CAAC;AAC7D,EAAA,IAAMC,OAAO,GAAGtT,MAAM,CAA0B,IAAI,CAAC;AAErD,EAAA,IAAMsH,WAAW,GAAGqD,WAAW,CAAC,YAAK;AACnC,IAAA,IAAM3E,IAAI,GAAG2R,QAAQ,CAAC1X,OAAO;IAC7B,IAAI+F,IAAI,IAAI,IAAI,EAAE;IAClB,OAAOF,eAAe,CAACE,IAAI,CAAC;GAC7B,EAAE,EAAE,CAAC;AAEN,EAAA,IAAMmK,YAAY,GAAGxF,WAAW,CAAC,YAAK;IAAA,IAAA8O,qBAAA,EAAAC,kBAAA;AACpC,IAAA,IAAI,OAAON,gBAAgB,KAAK,UAAU,EAAE;MAC1C,OAAOA,gBAAgB,EAAE;AAC3B;AACA,IAAA,IAAMxC,eAAe,GAAGtP,WAAW,EAAE;AACrC,IAAA,IAAIsP,eAAe,KAAKe,QAAQ,CAAC1X,OAAO,EAAE;AACxC,MAAA,OAAO,CAAC;AACV;IACA,IAAI6G,QAAQ,CAAC8P,eAAe,CAAC,IAAI1P,MAAM,CAAC0P,eAAe,CAAC,EAAE;MAAA,IAAA+C,qBAAA,EAAAC,iBAAA;MACxD,IAAMxI,GAAG,IAAAuI,qBAAA,GAAA,CAAAC,iBAAA,GAAGjC,QAAQ,CAAC1X,OAAO,KAAA,IAAA,GAAA,SAAA,GAAhB2Z,iBAAA,CAAkBC,qBAAqB,EAAE,CAACzI,GAAG,KAAAuI,IAAAA,GAAAA,qBAAA,GAAI,CAAC;AAC9D,MAAA,OAAOzT,MAAM,CAAC4L,OAAO,GAAGV,GAAG;AAC7B;AACA,IAAA,OAAA,CAAAqI,qBAAA,GAAA,CAAAC,kBAAA,GAAO/B,QAAQ,CAAC1X,OAAO,KAAhByZ,IAAAA,GAAAA,SAAAA,GAAAA,kBAAA,CAAkB7H,SAAS,KAAA4H,IAAAA,GAAAA,qBAAA,GAAI,CAAC;AACzC,GAAC,EAAE,CAACL,gBAAgB,EAAE9R,WAAW,CAAC,CAAC;AAEnC,EAAA,IAAAwS,aAAA,GAqBI/L,QAAQ,CAACjC,GAAG,CAAC;AACfuE,MAAAA,UAAU,EAAED,OAAO;AACnBmD,MAAAA,MAAM,EAAEkF,SAAS;AACjBrX,MAAAA,OAAO,EAAE6U,UAAU;AACnB0C,MAAAA,kBAAkB,EAAlBA,kBAAkB;AAClB3D,MAAAA,gBAAgB,EAAhBA,gBAAgB;AAChB5B,MAAAA,cAAc,EAAdA,cAAc;AACdC,MAAAA,WAAW,EAAEkG,QAAQ;AACrBjG,MAAAA,OAAO,EAAPA,OAAO;AACPyG,MAAAA,OAAO,EAAEpC,QAAQ;AACjBxH,MAAAA,YAAY,EAAZA,YAAY;AACZ7I,MAAAA,WAAW,EAAXA;AACD,KAAA,CAAC;IAhCA+I,UAAU,GAAAyJ,aAAA,CAAVzJ,UAAU;IACD2J,eAAe,GAAAF,aAAA,CAAxB1Y,OAAO;IACPmS,MAAM,GAAAuG,aAAA,CAANvG,MAAM;IACNlG,YAAY,GAAAyM,aAAA,CAAZzM,YAAY;IAEZnK,MAAM,GAAA4W,aAAA,CAAN5W,MAAM;IACNiJ,UAAU,GAAA2N,aAAA,CAAV3N,UAAU;IACVC,aAAa,GAAA0N,aAAA,CAAb1N,aAAa;IACbC,mBAAmB,GAAAyN,aAAA,CAAnBzN,mBAAmB;IACnBC,gBAAgB,GAAAwN,aAAA,CAAhBxN,gBAAgB;IAChBC,YAAY,GAAAuN,aAAA,CAAZvN,YAAY;IACZC,eAAe,GAAAsN,aAAA,CAAftN,eAAe;IACfC,gBAAgB,GAAAqN,aAAA,CAAhBrN,gBAAgB;IAChBC,iBAAiB,GAAAoN,aAAA,CAAjBpN,iBAAiB;IACjBC,cAAc,GAAAmN,aAAA,CAAdnN,cAAc;IACdC,UAAU,GAAAkN,aAAA,CAAVlN,UAAU;IACVC,SAAS,GAAAiN,aAAA,CAATjN,SAAS;IACThJ,UAAU,GAAAiW,aAAA,CAAVjW,UAAU;IAEHoW,aAAa,GAAAH,aAAA,CAApBxM,KAAK;EAeP,IAAA/F,SAAA,GAAwCC,QAAQ,CAAC,YAAA;MAAA,OAAM,IAAIhI,GAAG,EAAe;KAAC,CAAA;AAAvEkW,IAAAA,YAAY,GAAAnO,SAAA,CAAA,CAAA,CAAA;AAAE2S,IAAAA,eAAe,GAAA3S,SAAA,CAAA,CAAA,CAAA;AACpC,EAAA,IAAM4S,eAAe,GAAGna,MAAM,CAAC0V,YAAY,CAAC;AAC5C,EAAA,IAAM0E,kBAAkB,GAAGzP,WAAW,CAAC,UAAC9L,KAAuB,EAAI;IACjEsb,eAAe,CAACla,OAAO,GAAGpB,KAAK;IAC/Bqb,eAAe,CAACrb,KAAK,CAAC;GACvB,EAAE,EAAE,CAAC;AAEN,EAAA,IAAMwb,mBAAmB,GAAG5Y,OAAO,CAA0B,YAAK;IAChE,OAAO;AACLF,MAAAA,SAAS,EAAEmU,YAAY;AACvBtB,MAAAA,YAAY,EAAEgG;KACf;AACH,GAAC,EAAE,CAAC1E,YAAY,EAAE0E,kBAAkB,CAAC,CAAC;EAEtC,IAAAE,oBAAA,GAAoBtE,mBAAmB,CAAI;AACzC1F,MAAAA,YAAY,EAAEsI,oBAAoB,IAApBA,IAAAA,GAAAA,oBAAoB,GAAI,GAAG;AACzCrI,MAAAA,QAAQ,EAAEyI,eAAe;AACzB5X,MAAAA,OAAO,EAAE4Y,eAAe;AACxB9D,MAAAA,WAAW,EAAE9C,cAAc;AAC3BsC,MAAAA,YAAY,EAAZA,YAAY;MACZU,QAAQ,EAAEwC,oBAAoB,IAAI;AACnC,KAAA,CAAC;IAPMxX,OAAO,GAAAkZ,oBAAA,CAAPlZ,OAAO;AASf,EAAA,IAAIT,OAAAA,CAAAA,GAAAA,CAAAA,QAAAA,KAAAA,aAAO,EAAE;AACXqZ,IAAAA,eAAe,CAAC9P,OAAO,CAAC,UAAC/J,MAAM,EAAI;MACjC,IAAIA,MAAM,CAACmF,KAAK,IAAI,IAAI,IAAInF,MAAM,CAACqF,QAAQ,IAAI,IAAI,EAAE;AACnD+U,QAAAA,OAAO,CAACC,IAAI,CAAC,2BAA2B,EAAEra,MAAM,CAAC;AACnD;AACA;AACA,MAAA,IAAID,MAAM,CAACC,MAAM,CAAC,IAAI,IAAI,EAAE;AAC1Boa,QAAAA,OAAO,CAACE,KAAK,CAAC,wCAAwC,EAAEta,MAAM,CAAC;AACjE;AACF,KAAC,CAAC;AACJ;EAEA,IAAMua,cAAc,GAAG/P,WAAW,CAAC,UAACiD,MAAS,EAAErO,KAAa,EAAI;AAC9D,IAAA,OAAOqF,IAAI,CAACuU,eAAe,uBAAfA,eAAe,CAAGvL,MAAM,EAAErO,KAAK,CAAC,EAAE8N,YAAY,uBAAZA,YAAY,CAAGO,MAAM,EAAErO,KAAK,CAAC,CAAC;AAC9E,GAAC,EAAE,CAAC4Z,eAAe,EAAE9L,YAAY,CAAC,CAAC;EAEnC,IAAMsN,UAAU,GAAiBhQ,WAAW,CAAC,UAACiD,MAAM,EAAErO,KAAK,EAAI;AAC7D,IAAA,OAAAoF,QAAA,CAAY2I,EAAAA,EAAAA,KAAK,uBAALA,KAAK,CAAGM,MAAM,EAAErO,KAAK,CAAC,EAAK0a,aAAa,IAAbA,IAAAA,GAAAA,SAAAA,GAAAA,aAAa,CAAGrM,MAAM,EAAErO,KAAK,CAAC,CAAA;AACvE,GAAC,EAAE,CAAC0a,aAAa,EAAE3M,KAAK,CAAC,CAAC;AAE1B,EAAA,IAAMkK,kBAAkB,GAAGwC,eAAe,CAACY,IAAI,CAAC,UAACxb,CAAC,EAAA;AAAA,IAAA,OAAKiB,gBAAgB,CAACjB,CAAC,CAACkB,KAAK,CAAC;GAAC,CAAA;AACjF,EAAA,IAAMmX,mBAAmB,GAAGuC,eAAe,CAACY,IAAI,CAAC,UAACxb,CAAC,EAAA;AAAA,IAAA,OAAKmB,iBAAiB,CAACnB,CAAC,CAACkB,KAAK,CAAC;GAAC,CAAA;AAEnF,EAAA,IAAMua,iBAAiB,GAAGpZ,OAAO,CAAC,YAAK;IACrC,OAAO;AACLL,MAAAA,OAAO,EAAE4Y,eAAe;AACxBrL,MAAAA,UAAU,EAAEqL,eAAe,CAACtY,GAAG,CAAC,UAACvB,MAAM,EAAsB;AAC3D,QAAA,IAAM9B,GAAG,GAAG6B,MAAM,CAACC,MAAM,CAAC;QAC1B,OAAO;AACL9B,UAAAA,GAAG,EAAHA,GAAG;AACHgH,UAAAA,IAAI,EAAE,QAAQ;AACdlF,UAAAA,MAAM,EAANA;SACD;OACF;KACF;AACH,GAAC,EAAE,CAAC6Z,eAAe,CAAC,CAAC;AAErB,EAAA,IAAMc,aAAa,GAAGrZ,OAAO,CAAC,YAAK;AACjC,IAAA,IAAI6X,aAAa,EAAE;AACjB,MAAA,OAAOlY,OAAO;AAChB;AACA,IAAA,OAAOyZ,iBAAiB;GACzB,EAAE,CAACvB,aAAa,EAAEuB,iBAAiB,EAAEzZ,OAAO,CAAC,CAAC;AAE/C,EAAA,IAAM2Z,WAAW,GAAG/X,cAAc,CAChCsR,IACE,CAAA0G,UAAA,EAAA;AAAA3Z,IAAAA,QAAA,EAAA,CAAAwB,GAAA,CAACgS,WAAW,EAAA;AACVH,MAAAA,UAAU,EAAEM,gBAAgB;AAC5B5T,MAAAA,OAAO,EAAE0Z,aAAa;AACtBhG,MAAAA,YAAY,EAAEA,YAAY;AAC1BzI,MAAAA,mBAAmB,EAAEA,mBAAmB;AACxCC,MAAAA,gBAAgB,EAAEA,gBAAgB;AAClCC,MAAAA,YAAY,EAAEA,YAAY;AAC1BC,MAAAA,eAAe,EAAEA,eAAe;AAChCC,MAAAA,gBAAgB,EAAEA;MAClB,EACF5J,GAAA,CAACsQ,SAAS,EAAA;AACRC,MAAAA,cAAc,EAAEA,cAAc;AAC9BC,MAAAA,WAAW,EAAEmG,iBAAiB;AAC9BlG,MAAAA,OAAO,EAAEA,OAAO;AAChB5P,MAAAA,SAAS,EAAE4U,kBAAkB;AAC7B3U,MAAAA,KAAK,EAAE4U,cAAc;AACrBnX,MAAAA,OAAO,EAAEA,OAAO;AAChBmS,MAAAA,MAAM,EAAEA,MAAM;AACdlD,MAAAA,UAAU,EAAEA,UAAU;AACtBE,MAAAA,QAAQ,EAAEuI,YAAY;AACtBxI,MAAAA,YAAY,EAAEqI,kBAAkB;AAChCrR,MAAAA,WAAW,EAAEA,WAAW;AACxB6I,MAAAA,YAAY,EAAEA,YAAY;AAC1B9C,MAAAA,YAAY,EAAEqN,cAAc;AAC5BpN,MAAAA,KAAK,EAAEqN,UAAU;AACjBjO,MAAAA,iBAAiB,EAAEA,iBAAiB;AACpCC,MAAAA,cAAc,EAAEA,cAAc;AAC9BC,MAAAA,UAAU,EAAEA,UAAU;AACtBC,MAAAA,SAAS,EAAEA,SAAS;AACpBhJ,MAAAA,UAAU,EAAEA;MACZ;GACD,CAAA,EACHuI,aAAa,EACb;IAAEhL,OAAO,EAAEA,OAAO,CAACA,OAAO;IAAEoN,gBAAgB,EAAEpN,OAAO,CAACuN;AAAU,GAAE,CACnE;AAED,EAAA,IAAMsM,aAAa,GAAG/L,YAAY,CAACyI,QAAQ,EAAEvS,GAAG,CAAC;AACjD,EAAA,IAAM8V,KAAK,GAAGlY,cAAc,CAC1BH,GAAA,CAAC0U,WAAS,EACR;AAAAnS,IAAAA,GAAG,EAAE6V,aAAa;AAClBvX,IAAAA,SAAS,EAAEA,SAAS;AACpBC,IAAAA,KAAK,EAAEA,KAAK;AACZ6T,IAAAA,kBAAkB,EAAEA,kBAAkB;AACtCC,IAAAA,mBAAmB,EAAEA,mBAAmB;AACxCtL,IAAAA,UAAU,EAAEA,UAAU;AACtBuL,IAAAA,mBAAmB,EAAEtE,cAAc;cAElC2H;GAAW,CACF,EACZ7X,MAAM,EACN;IAAE9B,OAAO,EAAEA,OAAO,CAACA,OAAO;IAAEoN,gBAAgB,EAAEpN,OAAO,CAACuN;AAAY,GAAA,CACnE;AAED,EAAA,OACE9L,GAAC,CAAApC,WAAW,CAACqC,QAAQ;AAACjE,IAAAA,KAAK,EAAEwb,mBAAmB;AAAAhZ,IAAAA,QAAA,EAC9CwB,IAAC3B,aAAa,EAAA;AAACE,MAAAA,OAAO,EAAE4Y,eAAe;AACrC3Y,MAAAA,QAAA,EAAAwB,GAAA,CAACqG,oBAAoB,EAAA;AAAC5B,QAAAA,WAAW,EAAEA,WAAW;AAAEtB,QAAAA,IAAI,EAAE2R,QAAQ;AAAAtW,QAAAA,QAAA,EAC5DwB,GAAC,CAAAyG,uBAAuB;oBAAE4R;SAAK;;KAEnB;AAAA,GAAA,CACK;AAE3B;AAEA,IAAIva,OAAAA,CAAAA,GAAAA,CAAAA,QAAAA,KAAAA,aAAO,EAAE;EACX0X,gBAAgB,CAACzX,WAAW,GAAG,mBAAmB;AACpD;AAEA,YAAA,aAAekE,IAAI,cAACsT,UAAU,CAACC,gBAAgB,CAAC,CAE/B;;;;"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { createMiddleware, useShallowMemo, useStableFn } from '@are-visual/virtual-table';
|
|
2
|
+
import { useMergedRef, createMiddleware, useShallowMemo, useStableFn } from '@are-visual/virtual-table';
|
|
3
3
|
import { useControllableValue } from '@are-visual/virtual-table/middleware/utils/useControllableValue';
|
|
4
4
|
import { forwardRef, useRef, useEffect, createElement, useCallback, useMemo, isValidElement } from 'react';
|
|
5
|
-
import { useMergedRef } from '@are-visual/virtual-table/utils/ref';
|
|
6
5
|
import clsx from 'clsx';
|
|
7
6
|
|
|
8
7
|
function Selection(props, ref) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../packages/virtual-table/src/middleware/selection/selection.tsx","../../../../packages/virtual-table/src/middleware/selection/table-selection.tsx"],"sourcesContent":["import type { ComponentType, DetailedHTMLProps, ForwardedRef, InputHTMLAttributes } from 'react'\nimport type { SelectionProps as BaseProps } from './types'\nimport { useMergedRef } from '@are-visual/virtual-table/utils/ref'\nimport clsx from 'clsx'\nimport { createElement, forwardRef, useEffect, useRef } from 'react'\n\ntype InputProps = DetailedHTMLProps<InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>\nexport interface SelectionProps extends BaseProps,\n Omit<InputProps, 'type' | 'onChange' | 'checked' | 'value' | 'defaultChecked' | 'defaultValue' | 'disabled'> {\n component?: ComponentType<BaseProps>\n}\n\nfunction Selection(props: SelectionProps, ref: ForwardedRef<HTMLInputElement>) {\n const {\n className,\n multiple,\n indeterminate,\n value = false,\n onChange,\n component,\n ...rest\n } = props\n\n const isCustomComponent = component != null\n\n const inputNode = useRef<HTMLInputElement>(null)\n\n useEffect(() => {\n if (isCustomComponent) return\n const input = inputNode.current\n if (input == null) return\n input.indeterminate = !!indeterminate\n }, [isCustomComponent, indeterminate])\n\n const mergedRef = useMergedRef(inputNode, ref)\n\n if (isCustomComponent) {\n return createElement(component, props)\n }\n\n return (\n <input\n {...rest}\n ref={mergedRef}\n className={clsx('virtual-table-selection', className)}\n type={multiple ? 'checkbox' : 'radio'}\n checked={value}\n onChange={(e) => {\n onChange?.(e.target.checked, e.nativeEvent)\n }}\n />\n )\n}\n\nexport default forwardRef(Selection)\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { AnyObject, ColumnType, MiddlewareContext, MiddlewareResult } from '@are-visual/virtual-table'\nimport type { Key, ReactNode } from 'react'\nimport type { SelectionColumnTitleProps, TableRowSelection } from './types'\n\nimport { createMiddleware, useShallowMemo, useStableFn } from '@are-visual/virtual-table'\nimport { useControllableValue } from '@are-visual/virtual-table/middleware/utils/useControllableValue'\nimport { isValidElement, useCallback, useMemo, useRef } from 'react'\nimport Selection from './selection'\n\nexport const SELECTION_COLUMN_KEY = 'VirtualTable.SELECTION_COLUMN'\n\nconst EMPTY_ARR: AnyObject[] = []\n\nexport function isSelectionColumn<T = any>(column: ColumnType<T>) {\n return column.key === SELECTION_COLUMN_KEY\n}\n\nfunction useSelection<T = any>(\n ctx: MiddlewareContext<T>,\n options?: TableRowSelection<T>,\n): MiddlewareResult<T> {\n const disablePlugin = options == null\n\n const { columns: rawColumns } = ctx\n const rowKey = ctx.rowKey as string\n const dataSource = disablePlugin ? EMPTY_ARR : (ctx.dataSource as AnyObject[])\n\n const {\n defaultSelectedRowKeys,\n\n component,\n preserveSelectedRowKeys,\n multiple = true,\n getSelectionProps,\n onSelect,\n hideSelectAll = false,\n fixed,\n columnWidth,\n columnTitle,\n\n extraColumnProps,\n\n // checkStrictly 属性使用场景:\n // const dataSource = [{ key: 1, name: \"张三\", children: [{ key: 1.1, name: \"李四\" }] }]\n // dataSource 中含有 children 属性,antd Table 组件会显示为“树形”结构,Table 左侧会新增一个展开按钮,点击后会显示“李四”的数据\n // 勾选“张三”的时候,会把对应 children 全部选中。如果 checkStrictly=false 则不选中。\n // checkStrictly: _checkStrictly,\n\n renderCell,\n onCell,\n } = options ?? {}\n\n const [selectedRowKeys = [], setSelectedRowKeys] = useControllableValue<Key[]>(\n options ?? {},\n {\n defaultValue: defaultSelectedRowKeys,\n valuePropName: 'selectedRowKeys',\n trigger: 'onChange',\n },\n )\n\n const rowClassName = useCallback((record: T) => {\n const key = (record as AnyObject)[rowKey] as Key\n const checked = selectedRowKeys.includes(key)\n return checked ? 'virtual-table-row-selected' : ''\n }, [rowKey, selectedRowKeys])\n\n const selectionPropsList = useShallowMemo(() => {\n return dataSource.map((row) => {\n if (!getSelectionProps) return {}\n return getSelectionProps(row as T)\n })\n })\n\n // 当有某一行数据 Checkbox disabled 时,过滤它\n const allKeys: Key[] = useShallowMemo(() => {\n return dataSource\n .filter((_data, index) => !selectionPropsList[index].disabled)\n .map((x) => x[rowKey] as Key)\n })\n\n // preserveSelectedRowKeys=true 时,勾选过的数据,都会在这里存一份\n const cache = useRef(new Map<Key, T>())\n\n const allDisabled = !selectionPropsList.some((item) => !item.disabled)\n\n const getRowsByKeys = useStableFn((keys: Key[]) => {\n const result: (T | undefined)[] = []\n keys.forEach((key) => {\n let value = dataSource.find((row) => row[rowKey] === key) as T | undefined\n\n // 在 cache 中还是找不到对应的数据,就放弃寻找,填入一个 undefined(与 antd 默认表现一致)\n // 场景: selectedRowKeys 中有一个在 dataSource 中不存在的 key,用这个 key 是找不到数据的\n if (value == null && preserveSelectedRowKeys) {\n value = cache.current.get(key)\n }\n\n if (value == null && !preserveSelectedRowKeys) return\n\n result.push(value)\n })\n return result\n })\n\n const prevSelectedIndex = useRef<number | null>(null)\n\n const mergeColumns = useMemo(() => {\n if (disablePlugin) {\n return rawColumns\n }\n\n const isSelected = selectedRowKeys.length > 0\n const indeterminate = isSelected && allKeys.length > selectedRowKeys.length\n const isSelectedAll = isSelected\n ? allKeys.length > 0 && allKeys.every((key) => selectedRowKeys.includes(key))\n : false\n\n const shakeDeadKeys = (keys: Key[]) => {\n const unionKeys = new Set(keys)\n if (!preserveSelectedRowKeys) {\n return Array.from(unionKeys).filter((key) => {\n return allKeys.includes(key)\n })\n }\n return Array.from(unionKeys)\n }\n\n const multipleSelect = (currentIndex: number, nextChecked: boolean) => {\n const index = prevSelectedIndex.current ?? currentIndex\n const startIndex = Math.min(index, currentIndex)\n const endIndex = Math.max(index, currentIndex)\n const rangeKeys = allKeys.slice(startIndex, endIndex + 1)\n const shouldSelected = rangeKeys.some((rangeKey) => !selectedRowKeys.includes(rangeKey))\n prevSelectedIndex.current = shouldSelected ? endIndex : null\n const keys = nextChecked\n ? shakeDeadKeys([...selectedRowKeys, ...rangeKeys])\n : shakeDeadKeys(selectedRowKeys.filter((x) => !rangeKeys.includes(x)))\n const rows = getRowsByKeys(keys)\n setSelectedRowKeys(keys, rows, { type: 'multiple' })\n }\n\n const onSelectAll = () => {\n const keys = shakeDeadKeys([...selectedRowKeys, ...allKeys])\n const rows = getRowsByKeys(keys)\n setSelectedRowKeys(keys, rows, { type: 'all' })\n }\n\n const onSelectInvert = () => {\n const keys = allKeys.filter((key) => !selectedRowKeys.includes(key))\n const rows = getRowsByKeys(keys)\n setSelectedRowKeys(keys, rows, { type: 'invert' })\n }\n\n const onClearAll = () => {\n setSelectedRowKeys([], [], { type: 'none' })\n }\n\n const columnTitleProps: SelectionColumnTitleProps = {\n indeterminate,\n value: isSelectedAll,\n disabled: allDisabled,\n multiple,\n onChange: (checked) => {\n if (checked) {\n onSelectAll()\n } else {\n onClearAll()\n }\n },\n onClear: onClearAll,\n onSelectAll,\n onSelectInvert,\n allKeys,\n }\n\n const onCreateTitle = () => {\n if (!multiple) {\n if (isValidElement(columnTitle)) {\n return columnTitle\n }\n if (typeof columnTitle === 'function') {\n return columnTitle(undefined, columnTitleProps)\n }\n return null\n }\n\n let title: ReactNode = (\n <div className=\"virtual-table-selection\">\n <Selection\n component={component}\n multiple={multiple}\n value={isSelectedAll}\n indeterminate={indeterminate}\n disabled={allDisabled}\n onChange={(checked) => {\n if (checked) {\n onSelectAll()\n } else {\n onClearAll()\n }\n }}\n />\n </div>\n )\n if (isValidElement(columnTitle)) {\n title = columnTitle\n } else if (typeof columnTitle === 'function') {\n title = columnTitle(title, columnTitleProps)\n }\n return title\n }\n\n const column: ColumnType<T> = {\n ...extraColumnProps,\n title: hideSelectAll ? undefined : onCreateTitle(),\n width: columnWidth ?? 32,\n align: 'center',\n fixed: fixed ? 'left' : undefined,\n key: SELECTION_COLUMN_KEY,\n render(_value, record, index) {\n const key = (record as AnyObject)[rowKey] as Key\n const checked = selectedRowKeys.includes(key)\n const extraProps = selectionPropsList[index]\n\n const updateCache = () => {\n if (preserveSelectedRowKeys) {\n cache.current.set(key, record)\n }\n }\n\n const node = (\n <Selection\n {...extraProps}\n component={component}\n value={checked}\n multiple={multiple}\n onChange={(nextChecked, e) => {\n updateCache()\n if (multiple && (e as PointerEvent).shiftKey) {\n multipleSelect(index, nextChecked)\n return\n }\n if (nextChecked) {\n prevSelectedIndex.current = index\n } else {\n prevSelectedIndex.current = null\n }\n let keys: Key[] = [key]\n if (multiple) {\n keys = nextChecked ? shakeDeadKeys([...selectedRowKeys, key]) : shakeDeadKeys(selectedRowKeys.filter((x) => x !== key))\n }\n const rows = getRowsByKeys(keys)\n // @ts-expect-error rows 并不是安全的 T[] 类型,因为有 preserveSelectedRowKeys 功能存在,在此处只能忽略类型错误\n onSelect?.(record, nextChecked, rows, e)\n setSelectedRowKeys(keys, rows, { type: 'single' })\n }}\n />\n )\n\n if (typeof renderCell === 'function') {\n return renderCell(checked, record, index, node)\n }\n\n return node\n },\n onCell,\n onHeaderCell() {\n return { className: 'virtual-table-selection-column' }\n },\n }\n\n return [column, ...rawColumns]\n }, [\n disablePlugin,\n extraColumnProps,\n allDisabled,\n allKeys,\n columnTitle,\n columnWidth,\n fixed,\n getRowsByKeys,\n hideSelectAll,\n onCell,\n onSelect,\n preserveSelectedRowKeys,\n rawColumns,\n renderCell,\n rowKey,\n selectedRowKeys,\n selectionPropsList,\n setSelectedRowKeys,\n multiple,\n component,\n ])\n\n if (disablePlugin) {\n return ctx\n }\n\n return {\n ...ctx,\n rowClassName,\n columns: mergeColumns,\n }\n}\n\n/**\n * 为 Table 实现多选、单选功能,不传入 options 则是禁用插件\n */\nexport const tableSelection = createMiddleware(useSelection)\n"],"names":["Selection","props","ref","className","multiple","indeterminate","value","onChange","component","rest","isCustomComponent","inputNode","useRef","useEffect","input","current","mergedRef","useMergedRef","createElement","_jsx","clsx","type","checked","e","target","nativeEvent","forwardRef","SELECTION_COLUMN_KEY","EMPTY_ARR","useSelection","ctx","options","disablePlugin","columns","rawColumns","rowKey","dataSource","defaultSelectedRowKeys","preserveSelectedRowKeys","getSelectionProps","onSelect","hideSelectAll","fixed","columnWidth","columnTitle","extraColumnProps","renderCell","onCell","selectedRowKeys","setSelectedRowKeys","useControllableValue","defaultValue","valuePropName","trigger","rowClassName","useCallback","record","key","includes","selectionPropsList","useShallowMemo","map","row","allKeys","filter","_data","index","disabled","x","cache","Map","allDisabled","some","item","getRowsByKeys","useStableFn","keys","result","forEach","find","get","push","prevSelectedIndex","mergeColumns","useMemo","isSelected","length","isSelectedAll","every","shakeDeadKeys","unionKeys","Set","Array","from","multipleSelect","currentIndex","nextChecked","startIndex","Math","min","endIndex","max","rangeKeys","slice","shouldSelected","rangeKey","rows","onSelectAll","onSelectInvert","onClearAll","columnTitleProps","onClear","onCreateTitle","isValidElement","undefined","title","children","column","width","align","render","_value","extraProps","updateCache","set","node","shiftKey","onHeaderCell","tableSelection","createMiddleware"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../packages/virtual-table/src/middleware/selection/selection.tsx","../../../../packages/virtual-table/src/middleware/selection/table-selection.tsx"],"sourcesContent":["import type { ComponentType, DetailedHTMLProps, ForwardedRef, InputHTMLAttributes } from 'react'\nimport type { SelectionProps as BaseProps } from './types'\nimport { useMergedRef } from '@are-visual/virtual-table'\nimport clsx from 'clsx'\nimport { createElement, forwardRef, useEffect, useRef } from 'react'\n\ntype InputProps = DetailedHTMLProps<InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>\nexport interface SelectionProps extends BaseProps,\n Omit<InputProps, 'type' | 'onChange' | 'checked' | 'value' | 'defaultChecked' | 'defaultValue' | 'disabled'> {\n component?: ComponentType<BaseProps>\n}\n\nfunction Selection(props: SelectionProps, ref: ForwardedRef<HTMLInputElement>) {\n const {\n className,\n multiple,\n indeterminate,\n value = false,\n onChange,\n component,\n ...rest\n } = props\n\n const isCustomComponent = component != null\n\n const inputNode = useRef<HTMLInputElement>(null)\n\n useEffect(() => {\n if (isCustomComponent) return\n const input = inputNode.current\n if (input == null) return\n input.indeterminate = !!indeterminate\n }, [isCustomComponent, indeterminate])\n\n const mergedRef = useMergedRef(inputNode, ref)\n\n if (isCustomComponent) {\n return createElement(component, props)\n }\n\n return (\n <input\n {...rest}\n ref={mergedRef}\n className={clsx('virtual-table-selection', className)}\n type={multiple ? 'checkbox' : 'radio'}\n checked={value}\n onChange={(e) => {\n onChange?.(e.target.checked, e.nativeEvent)\n }}\n />\n )\n}\n\nexport default forwardRef(Selection)\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { AnyObject, ColumnType, MiddlewareContext, MiddlewareResult } from '@are-visual/virtual-table'\nimport type { Key, ReactNode } from 'react'\nimport type { SelectionColumnTitleProps, TableRowSelection } from './types'\n\nimport { createMiddleware, useShallowMemo, useStableFn } from '@are-visual/virtual-table'\nimport { useControllableValue } from '@are-visual/virtual-table/middleware/utils/useControllableValue'\nimport { isValidElement, useCallback, useMemo, useRef } from 'react'\nimport Selection from './selection'\n\nexport const SELECTION_COLUMN_KEY = 'VirtualTable.SELECTION_COLUMN'\n\nconst EMPTY_ARR: AnyObject[] = []\n\nexport function isSelectionColumn<T = any>(column: ColumnType<T>) {\n return column.key === SELECTION_COLUMN_KEY\n}\n\nfunction useSelection<T = any>(\n ctx: MiddlewareContext<T>,\n options?: TableRowSelection<T>,\n): MiddlewareResult<T> {\n const disablePlugin = options == null\n\n const { columns: rawColumns } = ctx\n const rowKey = ctx.rowKey as string\n const dataSource = disablePlugin ? EMPTY_ARR : (ctx.dataSource as AnyObject[])\n\n const {\n defaultSelectedRowKeys,\n\n component,\n preserveSelectedRowKeys,\n multiple = true,\n getSelectionProps,\n onSelect,\n hideSelectAll = false,\n fixed,\n columnWidth,\n columnTitle,\n\n extraColumnProps,\n\n // checkStrictly 属性使用场景:\n // const dataSource = [{ key: 1, name: \"张三\", children: [{ key: 1.1, name: \"李四\" }] }]\n // dataSource 中含有 children 属性,antd Table 组件会显示为“树形”结构,Table 左侧会新增一个展开按钮,点击后会显示“李四”的数据\n // 勾选“张三”的时候,会把对应 children 全部选中。如果 checkStrictly=false 则不选中。\n // checkStrictly: _checkStrictly,\n\n renderCell,\n onCell,\n } = options ?? {}\n\n const [selectedRowKeys = [], setSelectedRowKeys] = useControllableValue<Key[]>(\n options ?? {},\n {\n defaultValue: defaultSelectedRowKeys,\n valuePropName: 'selectedRowKeys',\n trigger: 'onChange',\n },\n )\n\n const rowClassName = useCallback((record: T) => {\n const key = (record as AnyObject)[rowKey] as Key\n const checked = selectedRowKeys.includes(key)\n return checked ? 'virtual-table-row-selected' : ''\n }, [rowKey, selectedRowKeys])\n\n const selectionPropsList = useShallowMemo(() => {\n return dataSource.map((row) => {\n if (!getSelectionProps) return {}\n return getSelectionProps(row as T)\n })\n })\n\n // 当有某一行数据 Checkbox disabled 时,过滤它\n const allKeys: Key[] = useShallowMemo(() => {\n return dataSource\n .filter((_data, index) => !selectionPropsList[index].disabled)\n .map((x) => x[rowKey] as Key)\n })\n\n // preserveSelectedRowKeys=true 时,勾选过的数据,都会在这里存一份\n const cache = useRef(new Map<Key, T>())\n\n const allDisabled = !selectionPropsList.some((item) => !item.disabled)\n\n const getRowsByKeys = useStableFn((keys: Key[]) => {\n const result: (T | undefined)[] = []\n keys.forEach((key) => {\n let value = dataSource.find((row) => row[rowKey] === key) as T | undefined\n\n // 在 cache 中还是找不到对应的数据,就放弃寻找,填入一个 undefined(与 antd 默认表现一致)\n // 场景: selectedRowKeys 中有一个在 dataSource 中不存在的 key,用这个 key 是找不到数据的\n if (value == null && preserveSelectedRowKeys) {\n value = cache.current.get(key)\n }\n\n if (value == null && !preserveSelectedRowKeys) return\n\n result.push(value)\n })\n return result\n })\n\n const prevSelectedIndex = useRef<number | null>(null)\n\n const mergeColumns = useMemo(() => {\n if (disablePlugin) {\n return rawColumns\n }\n\n const isSelected = selectedRowKeys.length > 0\n const indeterminate = isSelected && allKeys.length > selectedRowKeys.length\n const isSelectedAll = isSelected\n ? allKeys.length > 0 && allKeys.every((key) => selectedRowKeys.includes(key))\n : false\n\n const shakeDeadKeys = (keys: Key[]) => {\n const unionKeys = new Set(keys)\n if (!preserveSelectedRowKeys) {\n return Array.from(unionKeys).filter((key) => {\n return allKeys.includes(key)\n })\n }\n return Array.from(unionKeys)\n }\n\n const multipleSelect = (currentIndex: number, nextChecked: boolean) => {\n const index = prevSelectedIndex.current ?? currentIndex\n const startIndex = Math.min(index, currentIndex)\n const endIndex = Math.max(index, currentIndex)\n const rangeKeys = allKeys.slice(startIndex, endIndex + 1)\n const shouldSelected = rangeKeys.some((rangeKey) => !selectedRowKeys.includes(rangeKey))\n prevSelectedIndex.current = shouldSelected ? endIndex : null\n const keys = nextChecked\n ? shakeDeadKeys([...selectedRowKeys, ...rangeKeys])\n : shakeDeadKeys(selectedRowKeys.filter((x) => !rangeKeys.includes(x)))\n const rows = getRowsByKeys(keys)\n setSelectedRowKeys(keys, rows, { type: 'multiple' })\n }\n\n const onSelectAll = () => {\n const keys = shakeDeadKeys([...selectedRowKeys, ...allKeys])\n const rows = getRowsByKeys(keys)\n setSelectedRowKeys(keys, rows, { type: 'all' })\n }\n\n const onSelectInvert = () => {\n const keys = allKeys.filter((key) => !selectedRowKeys.includes(key))\n const rows = getRowsByKeys(keys)\n setSelectedRowKeys(keys, rows, { type: 'invert' })\n }\n\n const onClearAll = () => {\n setSelectedRowKeys([], [], { type: 'none' })\n }\n\n const columnTitleProps: SelectionColumnTitleProps = {\n indeterminate,\n value: isSelectedAll,\n disabled: allDisabled,\n multiple,\n onChange: (checked) => {\n if (checked) {\n onSelectAll()\n } else {\n onClearAll()\n }\n },\n onClear: onClearAll,\n onSelectAll,\n onSelectInvert,\n allKeys,\n }\n\n const onCreateTitle = () => {\n if (!multiple) {\n if (isValidElement(columnTitle)) {\n return columnTitle\n }\n if (typeof columnTitle === 'function') {\n return columnTitle(undefined, columnTitleProps)\n }\n return null\n }\n\n let title: ReactNode = (\n <div className=\"virtual-table-selection\">\n <Selection\n component={component}\n multiple={multiple}\n value={isSelectedAll}\n indeterminate={indeterminate}\n disabled={allDisabled}\n onChange={(checked) => {\n if (checked) {\n onSelectAll()\n } else {\n onClearAll()\n }\n }}\n />\n </div>\n )\n if (isValidElement(columnTitle)) {\n title = columnTitle\n } else if (typeof columnTitle === 'function') {\n title = columnTitle(title, columnTitleProps)\n }\n return title\n }\n\n const column: ColumnType<T> = {\n ...extraColumnProps,\n title: hideSelectAll ? undefined : onCreateTitle(),\n width: columnWidth ?? 32,\n align: 'center',\n fixed: fixed ? 'left' : undefined,\n key: SELECTION_COLUMN_KEY,\n render(_value, record, index) {\n const key = (record as AnyObject)[rowKey] as Key\n const checked = selectedRowKeys.includes(key)\n const extraProps = selectionPropsList[index]\n\n const updateCache = () => {\n if (preserveSelectedRowKeys) {\n cache.current.set(key, record)\n }\n }\n\n const node = (\n <Selection\n {...extraProps}\n component={component}\n value={checked}\n multiple={multiple}\n onChange={(nextChecked, e) => {\n updateCache()\n if (multiple && (e as PointerEvent).shiftKey) {\n multipleSelect(index, nextChecked)\n return\n }\n if (nextChecked) {\n prevSelectedIndex.current = index\n } else {\n prevSelectedIndex.current = null\n }\n let keys: Key[] = [key]\n if (multiple) {\n keys = nextChecked ? shakeDeadKeys([...selectedRowKeys, key]) : shakeDeadKeys(selectedRowKeys.filter((x) => x !== key))\n }\n const rows = getRowsByKeys(keys)\n // @ts-expect-error rows 并不是安全的 T[] 类型,因为有 preserveSelectedRowKeys 功能存在,在此处只能忽略类型错误\n onSelect?.(record, nextChecked, rows, e)\n setSelectedRowKeys(keys, rows, { type: 'single' })\n }}\n />\n )\n\n if (typeof renderCell === 'function') {\n return renderCell(checked, record, index, node)\n }\n\n return node\n },\n onCell,\n onHeaderCell() {\n return { className: 'virtual-table-selection-column' }\n },\n }\n\n return [column, ...rawColumns]\n }, [\n disablePlugin,\n extraColumnProps,\n allDisabled,\n allKeys,\n columnTitle,\n columnWidth,\n fixed,\n getRowsByKeys,\n hideSelectAll,\n onCell,\n onSelect,\n preserveSelectedRowKeys,\n rawColumns,\n renderCell,\n rowKey,\n selectedRowKeys,\n selectionPropsList,\n setSelectedRowKeys,\n multiple,\n component,\n ])\n\n if (disablePlugin) {\n return ctx\n }\n\n return {\n ...ctx,\n rowClassName,\n columns: mergeColumns,\n }\n}\n\n/**\n * 为 Table 实现多选、单选功能,不传入 options 则是禁用插件\n */\nexport const tableSelection = createMiddleware(useSelection)\n"],"names":["Selection","props","ref","className","multiple","indeterminate","value","onChange","component","rest","isCustomComponent","inputNode","useRef","useEffect","input","current","mergedRef","useMergedRef","createElement","_jsx","clsx","type","checked","e","target","nativeEvent","forwardRef","SELECTION_COLUMN_KEY","EMPTY_ARR","useSelection","ctx","options","disablePlugin","columns","rawColumns","rowKey","dataSource","defaultSelectedRowKeys","preserveSelectedRowKeys","getSelectionProps","onSelect","hideSelectAll","fixed","columnWidth","columnTitle","extraColumnProps","renderCell","onCell","selectedRowKeys","setSelectedRowKeys","useControllableValue","defaultValue","valuePropName","trigger","rowClassName","useCallback","record","key","includes","selectionPropsList","useShallowMemo","map","row","allKeys","filter","_data","index","disabled","x","cache","Map","allDisabled","some","item","getRowsByKeys","useStableFn","keys","result","forEach","find","get","push","prevSelectedIndex","mergeColumns","useMemo","isSelected","length","isSelectedAll","every","shakeDeadKeys","unionKeys","Set","Array","from","multipleSelect","currentIndex","nextChecked","startIndex","Math","min","endIndex","max","rangeKeys","slice","shouldSelected","rangeKey","rows","onSelectAll","onSelectInvert","onClearAll","columnTitleProps","onClear","onCreateTitle","isValidElement","undefined","title","children","column","width","align","render","_value","extraProps","updateCache","set","node","shiftKey","onHeaderCell","tableSelection","createMiddleware"],"mappings":"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"}
|