@egjs/infinitegrid
Version:
A module used to arrange elements including content infinitely according to grid type. With this module, you can implement various grids composed of different card elements whose sizes vary. It guarantees performance by maintaining the number of DOMs the
41 lines (40 loc) • 1.37 kB
TypeScript
import Component from "@egjs/component";
import { DiffResult } from "@egjs/list-differ";
export interface RendererItem {
key: string | number;
renderKey?: string;
element?: Element | null;
}
export interface OnRendererUpdated<T extends RendererItem = RendererItem> {
items: T[];
elements: Element[];
isChanged: boolean;
isItemChanged: boolean;
state: Record<string, any>;
diffResult: DiffResult<T>;
}
export interface OnRendererUpdate {
state: Record<string, any>;
}
export interface RendererEvents<T extends RendererItem = RendererItem> {
update: OnRendererUpdate;
updated: OnRendererUpdated<T>;
requestUpdate: OnRendererUpdate;
}
export declare class Renderer<Item extends RendererItem = RendererItem> extends Component<RendererEvents> {
protected items: Item[];
protected container: Element | null;
protected rendererKey: number;
private _diffResult;
private _updateTimer;
private _state;
private _isItemChanged;
updateKey(): void;
getItems(): Item[];
setContainer(container: Element): void;
render(nextItems: Item[], state?: Record<string, any>): DiffResult<Item>;
update(state?: Record<string, any>): void;
updated(nextElements?: ArrayLike<Element>): boolean;
syncItems(items: Item[], state?: Record<string, any>): DiffResult<Item>;
destroy(): void;
}