/** * Keyed list rendering plugin for templates. * * @example * ```ts * import { html as baseHtml, signal } from "balises"; * import eachPlugin, { each } from "balises/each"; * * const html = baseHtml.with(eachPlugin); * const items = signal([{ id: 1, name: "Alice" }, { id: 2, name: "Bob" }]); * * html``.render(); * ``` */ import { ReadonlySignal, type Reactive } from "./signals/index.js"; import { Template, type InterpolationPlugin } from "./template.js"; declare const EACH: unique symbol; /** Each descriptor returned by each() */ export interface EachDescriptor { readonly [EACH]: true; /** @internal */ __list__: T[] | Reactive | (() => T[]); /** @internal */ __keyFn__: (item: T, index: number) => unknown; /** @internal */ __renderFn__: (item: ReadonlySignal, index: number) => Template; } /** * Create a keyed list descriptor for efficient list rendering. * * @param list - Array, signal, or getter returning the list * @param keyFn - Extract unique key from each item * @param renderFn - Render function receiving ReadonlySignal for reactive updates */ export declare function each(list: T[] | Reactive | (() => T[]), keyFn: (item: T, index: number) => unknown, renderFn: (item: ReadonlySignal, index: number) => Template): EachDescriptor; /** Plugin that handles each() descriptors in templates. */ declare const eachPlugin: InterpolationPlugin; export default eachPlugin; //# sourceMappingURL=each.d.ts.map