dom-renderer
Version:
A light-weight DOM Renderer supports Web components standard & TypeScript language
36 lines (35 loc) • 1.92 kB
TypeScript
import 'scheduler-polyfill';
import { ReadableStream } from 'web-streams-polyfill';
import { DataObject, VNode } from './VDOM';
export type RenderMode = 'sync' | 'async';
export interface UpdateTask {
index?: number;
oldVNode?: VNode;
newVNode?: VNode;
}
export declare class DOMRenderer {
eventPattern: RegExp;
ariaPattern: RegExp;
document: Document;
protected treeCache: WeakMap<Node, VNode>;
protected signalCache: WeakMap<Node, AbortController>;
protected keyOf: ({ key, text, props, selector }: VNode, index?: number) => any;
protected vNodeOf: (list: VNode[], key?: VNode["key"]) => VNode;
protected propsKeyOf: (key: string) => string;
protected attrsNameOf: (key: string) => any;
protected updateProps<N extends DataObject, P extends DataObject>(node: N, oldProps?: P, newProps?: P, onDelete?: (node: N, key: string) => any, onAdd?: (node: N, key: string, value: any) => any): void;
protected deleteNode({ ref, node, children }: VNode): void;
protected commitChild(root: ParentNode, node: Node, index?: number): void;
protected diffVChildren(oldVNode: VNode, newVNode: VNode): Generator<UpdateTask>;
protected handleCustomEvent(node: EventTarget, event: string): void;
protected removeProperty: (node: Element, key: string) => void;
protected setProperty: (node: Element, key: string, value: string) => void;
protected patchNode(oldVNode: VNode, newVNode: VNode): VNode;
generateDOM(oldVRoot: VNode, newVRoot: VNode): Generator<VNode, void, unknown>;
patch(oldVRoot: VNode, newVRoot: VNode): VNode;
patchAsync(oldVRoot: VNode, newVRoot: VNode): Promise<VNode>;
render(vNode: VNode, node?: ParentNode, mode?: 'sync'): VNode;
render(vNode: VNode, node?: ParentNode, mode?: 'async'): Promise<VNode>;
renderToStaticMarkup(tree: VNode): string;
renderToReadableStream(tree: VNode): ReadableStream<string>;
}