Import
import { Rendered } from "@typed/template";Signatures
export type Rendered = Rendered.Value | ReadonlyArray<Rendered>;export declare namespace Rendered {
type Value = Node | DocumentFragment | Wire;
type Values<T extends Rendered> = [
T
] extends [
ReadonlyArray<infer R>
] ? ReadonlyArray<R | Exclude<T, ReadonlyArray<any>>> : ReadonlyArray<T>;
type Elements<T extends Rendered> = ReadonlyArray<[
Node
] extends [
Exclude<T, DocumentFragment | Wire | ReadonlyArray<Rendered>>
] ? HTMLElement | SVGElement : Exclude<T, DocumentFragment | Wire | ReadonlyArray<Rendered>>>;
}Why
Renderer output can preserve arbitrary DOM shape and identity without forcing a single wrapper element.
Ownership and lifetime
The type describes existing DOM values. Ownership stays with the producer and the bounded render range that consumes them.
Examples
import type { Rendered } from "@typed/template/Wire"
// Rendered can be various DOM node types
const node: Rendered = document.createElement("div")
const fragment: Rendered = document.createDocumentFragment()
const array: Rendered = [node, fragment]Members
Rendered.ElementsExtract the elements from a Rendered type
Rendered.ValueSingle rendered value type.
Rendered.ValuesExtract the values from a Rendered type
Other public imports
These import paths expose the same declaration. Each page retains its own public name and signature.