import { Injector, Block } from './injector'; import { IteratorBlock, RenderItemsGetter } from './iterate'; import { MountBlock, Scope } from './types'; import { Component } from './component'; declare type KeyExpr = (host: Component, scope?: Scope) => string; interface ItemLookup { [key: string]: KeyIteratorItemBlock; } interface KeyIteratorBlock extends IteratorBlock { keyExpr: KeyExpr; used: ItemLookup | null; rendered: ItemLookup | null; order: KeyIteratorItemBlock[]; needReorder: boolean; parentScope: Scope; } interface KeyIteratorItemBlock extends Block { next: this | null; } /** * Renders key iterator block */ export declare function mountKeyIterator(host: Component, injector: Injector, get: RenderItemsGetter, keyExpr: KeyExpr, body: MountBlock): KeyIteratorBlock; /** * Updates iterator block defined in `ctx` * @returns Returns `1` if iterator was updated, `0` otherwise */ export declare function updateKeyIterator(block: KeyIteratorBlock): number; export declare function unmountKeyIterator(block: KeyIteratorBlock): void; export declare function clearKeyIterator(block: KeyIteratorBlock): void; export {};