vanilla-recycler-view
Version:
high performance UI rendering library for web browser
99 lines • 2.68 kB
TypeScript
import '../modules/zoom-listener';
import { VirtualElement } from './';
export declare const DEFAULT_ITEM_SIZE = 50;
/**
* @deprecated
*/
export declare enum DIRECTION {
VERTICAL = "vertical",
HORIZONTAL = "horizontal"
}
export interface Reusable<T> {
wrapperElement: HTMLElement;
renderer: VanillaRecyclerViewRenderer<T>;
}
export interface SizeParams<T> {
api: VanillaRecyclerView<T>;
data: T;
index: number;
}
export interface InitializeParams<T> {
api: VanillaRecyclerView<T>;
data: T;
index: number;
}
export interface MountParams<T> {
api: VanillaRecyclerView<T>;
data: T;
index: number;
}
export interface UnmountParams<T> {
api: VanillaRecyclerView<T>;
data: T;
index: number;
}
export interface VanillaRecyclerViewRenderer<T> {
initialize: (params: InitializeParams<T>) => void;
getLayout: () => HTMLElement;
getId?: () => string;
getPosition?: () => string;
onMount?: (params: MountParams<T>) => boolean;
onUnmount?: (params: UnmountParams<T>) => void;
}
export interface RendererConstructor<T> {
new (): VanillaRecyclerViewRenderer<T>;
}
export interface VanillaRecyclerViewOptions<T> {
data: T[];
direction?: DIRECTION;
preload?: number;
/**
* @deprecated
*/
size?: ((params: SizeParams<T>) => number) | number;
renderer: RendererConstructor<T>;
}
export interface VanillaRecyclerViewAPI<T> {
calculateSize: () => void;
getMaxScrollSize: () => number;
splice: (start: number, end?: number) => void;
insert: (index: number, ...data: T[]) => void;
push: (...items: T[]) => void;
}
export declare class VanillaRecyclerView<T> implements VanillaRecyclerViewAPI<T> {
private root;
_direction: DIRECTION;
_preload: number;
_size: ((params: SizeParams<T>) => number) | number;
_renderer: RendererConstructor<T>;
container: HTMLDivElement;
virtualElements: VirtualElement<T>[];
mountedVirtualElements: VirtualElement<T>[];
pendingUnmount: VirtualElement<T>[];
reusables: Reusable<T>[];
constructor(root: HTMLDivElement, options: VanillaRecyclerViewOptions<T>);
private onScroll;
/**
* parse size option
* @param data
*/
private getSize;
private createReusable;
private getNextReusable;
setData(data: T[]): void;
calculateSize(): void;
getMaxScrollSize(): number;
/**
* @deprecated
*/
splice(start: number, end?: number): void;
/**
* @deprecated
*/
insert(index: number, ...data: T[]): void;
/**
* @deprecated
*/
push(...items: T[]): void;
}
//# sourceMappingURL=recycler-view.d.ts.map