uhtml
Version:
A micro HTML/SVG render
30 lines (25 loc) • 804 B
TypeScript
export type TemplateFunction<T> = (
template: TemplateStringsArray,
...values: any[]
) => T;
export interface Tag<T> extends TemplateFunction<Hole> {
for(object: object, id?: string): TemplateFunction<T>;
node: TemplateFunction<T>;
}
export type Renderable = Hole | HTMLElement | SVGElement;
export declare const html: Tag<HTMLElement>;
export declare const svg: Tag<SVGElement>;
export declare function render<T extends Node>(
node: T,
renderer: (() => Renderable) | Renderable,
): T;
/**
* Used for internal purposes, should be created using
* the `html` or `svg` template tags.
*/
export class Hole {
constructor(type: string, template: TemplateStringsArray, values: any[]);
readonly type: string;
readonly template: TemplateStringsArray;
readonly values: readonly any[];
}