@lifeart/gxt
Version:
<img align="right" width="95" height="95" alt="Philosopher’s stone, logo of PostCSS" src="./public/logo.png">
59 lines (58 loc) • 2.49 kB
TypeScript
import { ComponentReturnType, type Component } from '../component';
import { api as HTML_API } from '../dom-api';
import { Cell, MergedCell } from '../reactive';
import { $context, RENDERED_NODES_PROPERTY, COMPONENT_ID_PROPERTY } from '../shared';
export declare function getFirstNode(rawItem: Node | ComponentReturnType | GenericReturnType | Array<Node | ComponentReturnType | GenericReturnType>): Node;
type GenericReturnType = Array<ComponentReturnType | Node> | ComponentReturnType | Node;
type ListComponentArgs<T> = {
tag: Cell<T[]> | MergedCell;
key: string | null;
ctx: Component<any>;
ItemComponent: (item: T, index?: number | MergedCell) => GenericReturnType;
};
type RenderTarget = HTMLElement | DocumentFragment;
export declare class BasicListComponent<T extends {
id: number;
}> {
keyMap: Map<string, GenericReturnType>;
indexMap: Map<string, number>;
nodes: Node[];
[RENDERED_NODES_PROPERTY]: never[];
[COMPONENT_ID_PROPERTY]: number;
ItemComponent: (item: T, index: number | MergedCell, ctx: Component<any>) => GenericReturnType;
bottomMarker: Comment;
topMarker: Comment;
key: string;
tag: Cell<T[]> | MergedCell;
isSync: boolean;
isFirstRender: boolean;
get ctx(): this;
keyGenerator(items: T[], keyForItem: (item: T, index: number) => string): Generator<string, void, unknown>;
api: typeof HTML_API;
args: {
[$context]: Component<any>;
};
constructor({ tag, ctx, key, ItemComponent }: ListComponentArgs<T>, outlet: RenderTarget, topMarker: Comment);
setupKeyForItem(): void;
keyForItem(item: T, index: number): string;
getTargetNode(amountOfKeys: number): Comment;
updateItems(items: T[], amountOfKeys: number, removedIndexes: number[]): void;
}
export declare class SyncListComponent<T extends {
id: number;
}> extends BasicListComponent<T> {
constructor(params: ListComponentArgs<T>, outlet: RenderTarget, topMarker: Comment);
fastCleanup(): boolean;
syncList(items: T[]): void;
destroyItem(row: GenericReturnType, key: string): void;
}
export declare class AsyncListComponent<T extends {
id: number;
}> extends BasicListComponent<T> {
destroyPromise: Promise<void[]> | null;
constructor(params: ListComponentArgs<any>, outlet: RenderTarget, topMarker: Comment);
fastCleanup(): Promise<boolean>;
syncList(items: T[]): Promise<void>;
destroyItem(row: GenericReturnType, key: string): Promise<void>;
}
export {};