export type ScrollDirection = 'forward' | 'reverse' | 'auto'; export type LayoutMode = 'vertical' | 'horizontal' | 'grid' | 'masonry'; export interface ItemSize { index: number; size: number; offset: number; } export interface VirtualItem { index: number; offset: number; size: number; isSticky?: boolean; } export interface ScrollState { scrollOffset: number; scrollUpdateWasRequested: boolean; isScrolling: boolean; scrollDirection: ScrollDirection; } export interface MeasurementCache { [key: number]: number; } export interface ItemWrapperProps { item: T; index: number; style: React.CSSProperties; children: React.ReactNode; } export interface VirtualListProps { items: T[]; renderItem: (props: RenderItemProps) => React.ReactNode; itemWrapper?: (props: ItemWrapperProps) => React.ReactNode; itemKey?: (index: number, item: T) => string | number; height?: number | string; width?: number | string; itemSize?: number | ((index: number) => number); overscan?: number; scrollDirection?: ScrollDirection; onScroll?: (offset: number, direction: ScrollDirection) => void; className?: string; itemClassName?: string; style?: React.CSSProperties; estimatedItemSize?: number; getItemSize?: (index: number) => number; stickyIndices?: number[]; onScrollEnd?: () => void; scrollMargin?: number; innerRef?: React.Ref; scrollOffsetRef?: React.MutableRefObject; innerClassName?: string; innerStyle?: React.CSSProperties; itemStyle?: React.CSSProperties; footer?: React.ReactNode; } export interface VirtualGridProps { items: T[]; renderItem: (props: RenderItemProps) => React.ReactNode; itemKey?: (index: number, item: T) => string | number; height?: number | string; width?: number | string; columnCount?: number | "auto"; rowHeight?: number | ((index: number) => number); columnWidth?: number | ((index: number) => number); gap?: number; layout?: "grid" | "masonry"; overscan?: number; estimatedItemHeight?: number; containerClassName?: string; containerStyle?: React.CSSProperties; innerClassName?: string; innerStyle?: React.CSSProperties; onScroll?: (scrollTop: number, scrollLeft: number) => void; onVisibleRangeChange?: (start: number, end: number) => void; itemClassName?: string; itemStyle?: React.CSSProperties; } export interface VirtualGridItem { index: number; key: string | number; } export interface RenderItemProps { item: T; index: number; /** * @deprecated * Virtual styles are handled internally. * Use itemWrapper instead. */ style?: React.CSSProperties; isScrolling: boolean; } export interface GridPosition { x: number; y: number; width: number; height: number; } export interface UseVirtualListOptions { items: T[]; itemSize?: number | ((index: number) => number); containerHeight: number; containerWidth?: number; overscan?: number; scrollDirection?: ScrollDirection; estimatedItemSize?: number; onScroll?: (offset: number) => void; } export interface VirtualRange { startIndex: number; endIndex: number; overscanStartIndex: number; overscanEndIndex: number; } //# sourceMappingURL=types.d.ts.map