UNPKG

typed-dom

Version:

A value-level and type-level DOM builder.

61 lines (60 loc) 3.52 kB
declare global { interface ShadowHostHTMLElementTagNameMap { 'article': HTMLElement; 'aside': HTMLElement; 'blockquote': HTMLQuoteElement; 'body': HTMLBodyElement; 'div': HTMLDivElement; 'footer': HTMLElement; 'h1': HTMLHeadingElement; 'h2': HTMLHeadingElement; 'h3': HTMLHeadingElement; 'h4': HTMLHeadingElement; 'h5': HTMLHeadingElement; 'h6': HTMLHeadingElement; 'header': HTMLElement; 'main': HTMLElement; 'nav': HTMLElement; 'p': HTMLParagraphElement; 'section': HTMLElement; 'span': HTMLSpanElement; } interface HTMLElementTagNameMap extends ShadowHostHTMLElementTagNameMap { } } export declare const enum NS { HTML = "HTML", SVG = "SVG", Math = "MathML" } interface NodeEvent<N extends Node> extends Event { readonly target: Node; readonly currentTarget: N; } type NodeEventListener<N extends Node> = (ev: NodeEvent<N>) => void; export type TagNameMap = object; export type Attrs<E extends Element = Element> = Record<string, string | NodeEventListener<E> | null | undefined>; export type Children = Iterable<string | Node> | string | undefined; export interface Factory<M extends TagNameMap> { <T extends keyof M & string>(tag: T, children?: Children): M[T]; <T extends keyof M & string>(tag: T, attrs: Attrs<Extract<M[T], Element>> | undefined, children?: Children): M[T]; } export declare function shadow<M extends ShadowHostHTMLElementTagNameMap>(el: keyof M & string | Extract<M[keyof M & string], Element>, factory?: Factory<M>): ShadowRoot; export declare function shadow<M extends ShadowHostHTMLElementTagNameMap>(el: keyof M & string | Extract<M[keyof M & string], Element>, children?: Children, factory?: Factory<M>): ShadowRoot; export declare function shadow<M extends ShadowHostHTMLElementTagNameMap>(el: keyof M & string | Extract<M[keyof M & string], Element>, opts?: ShadowRootInit, factory?: Factory<M>): ShadowRoot; export declare function shadow<M extends ShadowHostHTMLElementTagNameMap>(el: keyof M & string | Extract<M[keyof M & string], Element>, opts?: ShadowRootInit, children?: Children, factory?: Factory<M>): ShadowRoot; export declare function frag(children?: Children): DocumentFragment; export declare const html: Factory<HTMLElementTagNameMap>; export declare const svg: Factory<SVGElementTagNameMap>; export declare const math: Factory<MathMLElementTagNameMap>; export declare function text(source: string): Text; export declare function element<M extends HTMLElementTagNameMap>(context: Document | ShadowRoot, ns: NS.HTML): Factory<M>; export declare function element<M extends SVGElementTagNameMap>(context: Document | ShadowRoot, ns: NS.SVG): Factory<M>; export declare function element<M extends MathMLElementTagNameMap>(context: Document | ShadowRoot, ns: NS.Math): Factory<M>; export declare function define<E extends Element>(el: E, attrs?: Attrs<E>, children?: Children): E; export declare function define<E extends Element | DocumentFragment | ShadowRoot>(node: E, children?: Children): E; export declare function isChildren(value: Attrs | Children | ShadowRootInit): value is NonNullable<Children>; export declare function append<N extends ParentNode & Node>(node: N, children: Children): N; export declare function prepend<N extends ParentNode & Node>(node: N, children: Children): N; export declare function defrag<N extends Node | string>(nodes: ArrayLike<N>): N[]; export {};