vscroll
Version:
Virtual scroll engine
65 lines (64 loc) • 2.51 kB
TypeScript
import { Item } from './item';
import { Settings } from './settings';
import { Logger } from './logger';
import { Reactive } from './reactive';
import { Direction } from '../inputs/index';
import { OnDataChanged, BufferUpdater, ItemsPredicate } from '../interfaces/index';
export declare class Buffer<Data> {
private _items;
private _absMinIndex;
private _absMaxIndex;
bof: Reactive<boolean>;
eof: Reactive<boolean>;
changeItems: OnDataChanged<Data>;
minIndexUser: number;
maxIndexUser: number;
startIndexUser: number;
startIndex: number;
private pristine;
private cache;
private checkCall;
private readonly logger;
constructor(settings: Settings<Data>, onDataChanged: OnDataChanged<Data>, logger: Logger);
dispose(): void;
reset(force: boolean, startIndex?: number): void;
setCurrentStartIndex(newStartIndex?: unknown): void;
set items(items: Item<Data>[]);
get items(): Item<Data>[];
set absMinIndex(value: number);
get absMinIndex(): number;
set absMaxIndex(value: number);
get absMaxIndex(): number;
private checkBOF;
private checkEOF;
get size(): number;
get cacheSize(): number;
get defaultSize(): number;
get minIndex(): number;
get maxIndex(): number;
get firstIndex(): number;
get lastIndex(): number;
get finiteAbsMinIndex(): number;
get finiteAbsMaxIndex(): number;
get($index: number): Item<Data> | undefined;
setItems(items: Item<Data>[]): boolean;
clip(): void;
getIndexToInsert(predicate?: ItemsPredicate, before?: number, after?: number): number;
private shiftExtremum;
insertVirtually(items: Data[], index: number, direction: Direction, fixRight: boolean): boolean;
removeVirtually(indexes: number[], fixRight: boolean): void;
fillEmpty(items: Data[], beforeIndex: number | undefined, afterIndex: number | undefined, fixRight: boolean, generator: (index: number, data: Data) => Item<Data>): boolean;
updateItems(predicate: BufferUpdater<Data>, generator: (index: number, data: Data) => Item<Data>, indexToTrack: number, fixRight: boolean): {
trackedIndex: number;
toRemove: Item<Data>[];
};
cacheItem(item: Item<Data>): void;
getFirstVisibleItemIndex(): number;
getLastVisibleItemIndex(): number;
getFirstVisibleItem(): Item<Data> | undefined;
getLastVisibleItem(): Item<Data> | undefined;
getEdgeVisibleItem(direction: Direction, opposite?: boolean): Item<Data> | undefined;
getVisibleItemsCount(): number;
getSizeByIndex(index: number): number;
checkDefaultSize(): boolean;
}