import React, { ReactNode } from 'react'; import { FlattenData, GroupFlattenData } from '@douyinfe/semi-foundation/lib/cjs/table/bodyFoundation'; import Store from '@douyinfe/semi-foundation/lib/cjs/utils/Store'; import { BaseProps } from '../../_base/baseComponent'; import type { ExpandedRowRender, Virtualized, GetVirtualizedListRef, ColumnProps, Size, BodyScrollEvent, Scroll, Fixed, TableComponents, RowExpandable, VirtualizedOnScroll, RowKey } from '../interface'; export interface BodyProps extends BaseProps { tableLayout?: 'fixed' | 'auto'; anyColumnFixed?: boolean; columns?: ColumnProps[]; dataSource?: Record[]; disabledRowKeysSet: Set; emptySlot?: ReactNode; expandedRowKeys?: (string | number)[]; expandedRowRender?: ExpandedRowRender>; fixed?: Fixed; forwardedRef?: React.MutableRefObject | ((instance: any) => void); handleBodyScroll?: (e: BodyScrollEvent) => void; handleWheel?: (e: React.WheelEvent) => void; includeHeader?: boolean; prefixCls?: string; scroll?: Scroll; selectedRowKeysSet: Set; showHeader?: boolean; size?: Size; virtualized?: Virtualized; components?: TableComponents; store: Store; groups?: Map[]>[]; rowKey?: RowKey>; childrenRecordName?: string; rowExpandable?: RowExpandable>; renderExpandIcon: (record: Record, isNested: boolean) => ReactNode | null; headerRef?: React.MutableRefObject | ((instance: any) => void); onScroll?: VirtualizedOnScroll; keepDOM?: boolean; } export interface BodyState { virtualizedData?: Array; cache?: { virtualizedScrollTop?: number; virtualizedScrollLeft?: number; }; cachedExpandBtnShouldInRow?: boolean; cachedExpandRelatedProps?: any[]; hoveredRowKey?: string | number; } export interface BodyContext { getVirtualizedListRef: GetVirtualizedListRef; flattenedColumns: ColumnProps[]; getCellWidths: (flattenedColumns: ColumnProps[]) => number[]; } declare const _default: React.ForwardRefExoticComponent & React.RefAttributes>; export default _default; export interface RenderExpandedRowProps { style?: React.CSSProperties; components?: TableComponents; renderExpandIcon: (record?: Record, isNested?: boolean) => ReactNode | null; expandedRowRender?: ExpandedRowRender>; record?: Record; columns?: ColumnProps[]; expanded?: boolean; index?: number; rowKey?: RowKey>; virtualized?: Virtualized; level?: number; keepDOM?: boolean; displayNone?: boolean; } export interface RenderSectionRowProps { dataSource?: Record[]; columns?: ColumnProps[]; rowKey?: RowKey>; group?: any; groupKey: string | number; index?: number; expanded?: boolean; }