# Rendered

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

## Signatures

```ts
export type Rendered = Rendered.Value | ReadonlyArray<Rendered>;
```

```ts
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

```ts
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]
```
