UNPKG

@visualjs/grid

Version:
82 lines (81 loc) 2.84 kB
import { PureComponent } from "preact/compat"; import { JSXInternal } from "preact/src/jsx"; import { Alignment, ScrollChangeReason } from "./constants"; import { RowInfo, CellInfo, ItemSize } from "./types"; export interface Props { className?: string; style?: JSXInternal.CSSProperties; rows: string[]; rowHeight: ItemSize; columns: string[]; pinnedLeftColumns?: string[]; pinnedRightColumns?: string[]; columnWidth: ItemSize; pinnedLeftClassName?: string; pinnedRightClassName?: string; throttleRate?: number; throttleTimeout?: number; overscanColumnCount?: number; overscanRowCount?: number; scrollTopOffset?: number; scrollLeftOffset?: number; scrollToColumnIndex?: number; scrollToColumnAlignment?: Alignment; scrollToRowIndex?: number; scrollToRowAlignment?: Alignment; renderRow(rowInfo: RowInfo): JSX.Element; renderCell(cellInfo: CellInfo): JSX.Element; onWheelHorizontal?: (ev: WheelEvent) => void; onScrollHorizontal?: (ev: Event) => void; onScrollVertical?: (ev: Event) => void; getScrollXNode?: (node: HTMLDivElement) => void; getScrollYNode?: (node: HTMLDivElement) => void; } export interface State { offsetLeft: number; offsetTop: number; scrollChangeReason: ScrollChangeReason; } export declare class VirtualGrid extends PureComponent<Props, State> { static defaultProps: { throttleRate: number; throttleTimeout: number; overscanRowCount: number; overscanColumnCount: number; }; itemSizeGetter: (itemSize: ItemSize, keyer: (index: number) => string) => (index: number) => number; private rowManager; private columnManager; private onScrollVertical; private onScrollHorizontal; private rootNode?; private scrollYNode?; private scrollXNode?; private rowStyleCache; private columnStyleCache; readonly state: State; componentDidMount(): void; componentWillReceiveProps(nextProps: Props): void; componentDidUpdate(_: Props, prevState: State): void; componentWillUnmount(): void; scrollTo({ top, left }: { top?: number; left?: number; }): void; getOffsetForColumn(index: number, scrollToAlignment?: Alignment, itemCount?: number): number; getOffsetForRow(index: number, scrollToAlignment?: Alignment, itemCount?: number): number; recomputeSizes(startRowIndex?: number, startColumnIndex?: number): void; private getSize; private getRowStyle; private getColumnStyle; private getPinnedColumnStyle; private handleMouseWheel; private handleScroll; private getNodeOffset; private getRootRef; private getScrollYRef; private getScrollXRef; private getPinnedLeftWidth; private getPinnedRightWidth; render(): JSXInternal.Element; }