/** * Placing produced values back onto the full row range. * * A child sequence only generates values for the rows its `parent` selected, so * the builder works with a compacted array plus the list of rows those values * belong to. These three helpers are that bookkeeping: which rows apply, in * what ORDER the child builds them, and how the dense values go back over * `count` rows with the filtered ones left `undefined`. Extracted from build.ts * (the in-RAM bulk builder) so that file stays focused; pure, with no * dependency back on it. */ import type { ExactLayout } from './per-row.js'; import type { Sequence, SequenceRegistry, SequenceSpec } from './types.js'; /** * The rows a sequence builds, in the order it builds them. * * For an unparented column that is simply every row. For a child it is the * rows the parent selected, ordered by their RANK inside the parent's exact * layout — which is not their row order. The streaming engine hands a child * that rank as its position, so a `` under `parent="Gender.M"`, or a text * column under one, would otherwise arrange its own quota over a differently * ordered subset and land every value on the wrong row. * * Falls back to row order when the parent kept no layout — a bare * `parent="Name"` with no value, or a parent the streaming engine would refuse * as a parent anyway. */ export declare function orderedRows(spec: SequenceSpec, mask: readonly boolean[], layouts: ReadonlyMap | undefined): number[]; /** * Spread `produced` over `count` rows, value i landing on row `rows[i]`. The * rows a sequence does not apply to stay `undefined`, which is what makes a * child render as empty rather than as a shifted neighbour's value. */ export declare function assembleAt(name: string, rows: readonly number[], produced: readonly string[], count: number): Sequence; /** * Which rows a sequence applies to. No `parent` → every row. `parent="Name"` → * rows where the parent produced anything. `parent="Name.value"` → rows where * the parent produced exactly that value. */ export declare function computeParentMask(spec: SequenceSpec, registry: SequenceRegistry, count: number): boolean[]; //# sourceMappingURL=assemble.d.ts.map