type-alias / @typed/template

Rendered

A union type representing all possible rendered values. Can be a single Node, a DocumentFragment, a Wire, or an array of these.

Package version
1.0.0-beta.7
Category
Native output shapes
Since
1.0.0

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

Other public imports

These import paths expose the same declaration. Each page retains its own public name and signature.

Source