UNPKG

reactronic

Version:

Reactronic - Transactional Reactive State Management

65 lines (64 loc) 2.52 kB
export type GetMergedItemKey<T = unknown> = (item: T) => string | undefined; export type MergeListReader<T> = { readonly isStrict: boolean; readonly count: number; readonly addedCount: number; readonly removedCount: number; readonly isMergeInProgress: boolean; lookup(key: string): MergedItem<T> | undefined; firstMergedItem(): MergedItem<T> | undefined; lastMergedItem(): MergedItem<T> | undefined; items(onlyAfter?: MergedItem<T>): Generator<MergedItem<T>>; addedItems(reset?: boolean): Generator<MergedItem<T>>; removedItems(reset?: boolean): Generator<MergedItem<T>>; isAdded(item: MergedItem<T>): boolean; isMoved(item: MergedItem<T>): boolean; isRemoved(item: MergedItem<T>): boolean; isActual(item: MergedItem<T>): boolean; }; export type MergedItem<T> = { readonly instance: T; readonly index: number; readonly next?: MergedItem<T>; readonly prev?: MergedItem<T>; aux?: MergedItem<T>; }; export declare class MergeList<T> implements MergeListReader<T> { readonly getKey: GetMergedItemKey<T>; private strict; private map; private tag; private current; private added; private removed; private lastNotFoundKey; private strictNextItem?; constructor(getKey: GetMergedItemKey<T>, strict?: boolean); get isStrict(): boolean; set isStrict(value: boolean); get count(): number; get addedCount(): number; get removedCount(): number; get isMergeInProgress(): boolean; lookup(key: string | undefined): MergedItem<T> | undefined; tryMergeAsExisting(key: string, resolution?: { isDuplicate: boolean; }, error?: string): MergedItem<T> | undefined; mergeAsAdded(instance: T): MergedItem<T>; mergeAsRemoved(item: MergedItem<T>): void; move(item: MergedItem<T>, after: MergedItem<T>): void; beginMerge(): void; endMerge(error?: unknown): void; resetAddedAndRemovedLists(): void; firstMergedItem(): MergedItem<T> | undefined; lastMergedItem(): MergedItem<T> | undefined; items(onlyAfter?: MergedItem<T>): Generator<MergedItem<T>>; addedItems(reset?: boolean): Generator<MergedItem<T>>; removedItems(reset?: boolean): Generator<MergedItem<T>>; isAdded(item: MergedItem<T>): boolean; isMoved(item: MergedItem<T>): boolean; isRemoved(item: MergedItem<T>): boolean; isActual(item: MergedItem<T>): boolean; markAsMoved(item: MergedItem<T>): void; static createItem<T>(instance: T): MergedItem<T>; }