aura-glass
Version:
A comprehensive glassmorphism design system for React applications with 142+ production-ready components
149 lines • 4.22 kB
TypeScript
import React from 'react';
export interface VirtualizationOptions {
itemHeight: number | ((index: number) => number);
containerHeight: number;
overscan?: number;
enableHorizontal?: boolean;
itemWidth?: number | ((index: number) => number);
containerWidth?: number;
threshold?: number;
onScroll?: (scrollTop: number, scrollLeft: number) => void;
}
export interface VirtualizedItem<T> {
index: number;
data: T;
style: React.CSSProperties;
}
export interface VirtualizationState<T> {
startIndex: number;
endIndex: number;
visibleItems: VirtualizedItem<T>[];
totalHeight: number;
totalWidth: number;
scrollTop: number;
scrollLeft: number;
}
/**
* High-performance virtualization hook for large datasets
*/
export declare function useVirtualization<T>(items: T[], options: VirtualizationOptions): VirtualizationState<T> & {
containerProps: React.HTMLAttributes<HTMLDivElement> & {
ref: React.RefObject<HTMLDivElement>;
};
scrollElementProps: React.HTMLAttributes<HTMLDivElement>;
measureElement: (index: number, element: HTMLElement) => void;
scrollToIndex: (index: number, align?: 'start' | 'center' | 'end') => void;
};
/**
* Hook for grid virtualization
*/
export declare function useGridVirtualization<T>(items: T[], options: {
itemHeight: number;
itemWidth: number;
containerHeight: number;
containerWidth: number;
columns: number;
gap?: number;
overscan?: number;
}): {
visibleItems: (VirtualizedItem<T> & {
row: number;
col: number;
})[];
totalHeight: number;
containerProps: {
onScroll: (e: React.UIEvent<HTMLDivElement>) => void;
style: {
height: number;
width: number;
overflow: string;
contain: string;
};
};
scrollElementProps: {
style: {
height: number;
width: number;
position: string;
contain: string;
};
};
};
/**
* Hook for infinite scroll with virtualization
*/
export declare function useInfiniteVirtualization<T>(items: T[], options: VirtualizationOptions & {
loadMore: () => Promise<T[]>;
hasMore: boolean;
isLoading: boolean;
}): {
isLoadingMore: boolean;
totalItems: number;
startIndex: number;
endIndex: number;
visibleItems: VirtualizedItem<T>[];
totalHeight: number;
totalWidth: number;
scrollTop: number;
scrollLeft: number;
containerProps: React.HTMLAttributes<HTMLDivElement> & {
ref: React.RefObject<HTMLDivElement>;
};
scrollElementProps: React.HTMLAttributes<HTMLDivElement>;
measureElement: (index: number, element: HTMLElement) => void;
scrollToIndex: (index: number, align?: "start" | "center" | "end") => void;
};
/**
* Hook for window virtualization (entire viewport)
*/
export declare function useWindowVirtualization<T>(items: T[], itemHeight: number | ((index: number) => number), overscan?: number): {
startIndex: number;
endIndex: number;
visibleItems: VirtualizedItem<T>[];
scrollY: number;
windowHeight: number;
};
/**
* Hook for table virtualization with fixed headers
*/
export declare function useTableVirtualization<T>(data: T[], options: {
rowHeight: number;
headerHeight: number;
containerHeight: number;
columns: Array<{
key: string;
width: number;
fixed?: boolean;
}>;
overscan?: number;
}): {
visibleRows: (VirtualizedItem<T> & {
columns: {
key: string;
width: number;
fixed?: boolean;
}[];
})[];
totalHeight: number;
totalWidth: number;
scrollTop: number;
scrollLeft: number;
headerHeight: number;
containerProps: {
onScroll: (e: React.UIEvent<HTMLDivElement>) => void;
style: {
height: number;
overflow: string;
contain: string;
};
};
scrollElementProps: {
style: {
height: number;
width: number;
position: string;
contain: string;
};
};
};
//# sourceMappingURL=useVirtualization.d.ts.map