domsubi
Version:
A Virtual-DOM Library for JavaScript
240 lines (239 loc) • 12 kB
TypeScript
import { Cell, Stream, StreamSink } from "sodiumjs";
export declare abstract class DOMContext {
abstract contains(o: DOMContext): boolean;
abstract render(value: DOMSource, old_value: DOMSource): void;
}
export declare type EventStreamMap = {
abort: StreamSink<UIEvent>;
animationcancel: StreamSink<AnimationEvent>;
animationend: StreamSink<AnimationEvent>;
animationiteration: StreamSink<AnimationEvent>;
animationstart: StreamSink<AnimationEvent>;
auxclick: StreamSink<MouseEvent>;
blur: StreamSink<FocusEvent>;
cancel: StreamSink<Event>;
canplay: StreamSink<Event>;
canplaythrough: StreamSink<Event>;
change: StreamSink<Event>;
click: StreamSink<MouseEvent>;
close: StreamSink<Event>;
contextmenu: StreamSink<MouseEvent>;
cuechange: StreamSink<Event>;
dblclick: StreamSink<MouseEvent>;
drag: StreamSink<DragEvent>;
dragend: StreamSink<DragEvent>;
dragenter: StreamSink<DragEvent>;
dragexit: StreamSink<Event>;
dragleave: StreamSink<DragEvent>;
dragover: StreamSink<DragEvent>;
dragstart: StreamSink<DragEvent>;
drop: StreamSink<DragEvent>;
durationchange: StreamSink<Event>;
emptied: StreamSink<Event>;
ended: StreamSink<Event>;
error: StreamSink<ErrorEvent>;
focus: StreamSink<FocusEvent>;
focusin: StreamSink<FocusEvent>;
focusout: StreamSink<FocusEvent>;
gotpointercapture: StreamSink<PointerEvent>;
input: StreamSink<Event>;
invalid: StreamSink<Event>;
keydown: StreamSink<KeyboardEvent>;
keypress: StreamSink<KeyboardEvent>;
keyup: StreamSink<KeyboardEvent>;
load: StreamSink<Event>;
loadeddata: StreamSink<Event>;
loadedmetadata: StreamSink<Event>;
loadstart: StreamSink<Event>;
lostpointercapture: StreamSink<PointerEvent>;
mousedown: StreamSink<MouseEvent>;
mouseenter: StreamSink<MouseEvent>;
mouseleave: StreamSink<MouseEvent>;
mousemove: StreamSink<MouseEvent>;
mouseout: StreamSink<MouseEvent>;
mouseover: StreamSink<MouseEvent>;
mouseup: StreamSink<MouseEvent>;
pause: StreamSink<Event>;
play: StreamSink<Event>;
playing: StreamSink<Event>;
pointercancel: StreamSink<PointerEvent>;
pointerdown: StreamSink<PointerEvent>;
pointerenter: StreamSink<PointerEvent>;
pointerleave: StreamSink<PointerEvent>;
pointermove: StreamSink<PointerEvent>;
pointerout: StreamSink<PointerEvent>;
pointerover: StreamSink<PointerEvent>;
pointerup: StreamSink<PointerEvent>;
progress: StreamSink<ProgressEvent>;
ratechange: StreamSink<Event>;
reset: StreamSink<Event>;
resize: StreamSink<UIEvent>;
scroll: StreamSink<Event>;
securitypolicyviolation: StreamSink<SecurityPolicyViolationEvent>;
seeked: StreamSink<Event>;
seeking: StreamSink<Event>;
select: StreamSink<Event>;
selectionchange: StreamSink<Event>;
selectstart: StreamSink<Event>;
stalled: StreamSink<Event>;
slotchange: StreamSink<Event>;
submit: StreamSink<Event>;
suspend: StreamSink<Event>;
timeupdate: StreamSink<Event>;
toggle: StreamSink<Event>;
touchcancel: StreamSink<TouchEvent>;
touchend: StreamSink<TouchEvent>;
touchmove: StreamSink<TouchEvent>;
touchstart: StreamSink<TouchEvent>;
transitioncancel: StreamSink<TransitionEvent>;
transitionend: StreamSink<TransitionEvent>;
transitionrun: StreamSink<TransitionEvent>;
transitionstart: StreamSink<TransitionEvent>;
volumechange: StreamSink<Event>;
waiting: StreamSink<Event>;
wheel: StreamSink<WheelEvent>;
} & {
[key: string]: StreamSink<Event>;
};
export declare type DOMEventHandlerExpr<E extends Event> = {
handleEvent(e: E): any;
} | ((e: E) => any) | string | null;
export declare type DOMEventHandler = Partial<{
onabort: DOMEventHandlerExpr<UIEvent>;
onanimationcancel: DOMEventHandlerExpr<AnimationEvent>;
onanimationend: DOMEventHandlerExpr<AnimationEvent>;
onanimationiteration: DOMEventHandlerExpr<AnimationEvent>;
onanimationstart: DOMEventHandlerExpr<AnimationEvent>;
onauxclick: DOMEventHandlerExpr<MouseEvent>;
onblur: DOMEventHandlerExpr<FocusEvent>;
oncancel: DOMEventHandlerExpr<Event>;
oncanplay: DOMEventHandlerExpr<Event>;
oncanplaythrough: DOMEventHandlerExpr<Event>;
onchange: DOMEventHandlerExpr<Event>;
onclick: DOMEventHandlerExpr<MouseEvent>;
onclose: DOMEventHandlerExpr<Event>;
oncontextmenu: DOMEventHandlerExpr<MouseEvent>;
oncuechange: DOMEventHandlerExpr<Event>;
ondblclick: DOMEventHandlerExpr<MouseEvent>;
ondrag: DOMEventHandlerExpr<DragEvent>;
ondragend: DOMEventHandlerExpr<DragEvent>;
ondragenter: DOMEventHandlerExpr<DragEvent>;
ondragexit: DOMEventHandlerExpr<Event>;
ondragleave: DOMEventHandlerExpr<DragEvent>;
ondragover: DOMEventHandlerExpr<DragEvent>;
ondragstart: DOMEventHandlerExpr<DragEvent>;
ondrop: DOMEventHandlerExpr<DragEvent>;
ondurationchange: DOMEventHandlerExpr<Event>;
onemptied: DOMEventHandlerExpr<Event>;
onended: DOMEventHandlerExpr<Event>;
onerror: DOMEventHandlerExpr<ErrorEvent>;
onfocus: DOMEventHandlerExpr<FocusEvent>;
onfocusin: DOMEventHandlerExpr<FocusEvent>;
onfocusout: DOMEventHandlerExpr<FocusEvent>;
onformdata: DOMEventHandlerExpr<Event & {
formdata: FormData;
}>;
ongotpointercapture: DOMEventHandlerExpr<PointerEvent>;
oninput: DOMEventHandlerExpr<Event>;
oninvalid: DOMEventHandlerExpr<Event>;
onkeydown: DOMEventHandlerExpr<KeyboardEvent>;
onkeypress: DOMEventHandlerExpr<KeyboardEvent>;
onkeyup: DOMEventHandlerExpr<KeyboardEvent>;
onload: DOMEventHandlerExpr<Event>;
onloadeddata: DOMEventHandlerExpr<Event>;
onloadedmetadata: DOMEventHandlerExpr<Event>;
onloadstart: DOMEventHandlerExpr<Event>;
onlostpointercapture: DOMEventHandlerExpr<PointerEvent>;
onmousedown: DOMEventHandlerExpr<MouseEvent>;
onmouseenter: DOMEventHandlerExpr<MouseEvent>;
onmouseleave: DOMEventHandlerExpr<MouseEvent>;
onmousemove: DOMEventHandlerExpr<MouseEvent>;
onmouseout: DOMEventHandlerExpr<MouseEvent>;
onmouseover: DOMEventHandlerExpr<MouseEvent>;
onmouseup: DOMEventHandlerExpr<MouseEvent>;
onpause: DOMEventHandlerExpr<Event>;
onplay: DOMEventHandlerExpr<Event>;
onplaying: DOMEventHandlerExpr<Event>;
onpointercancel: DOMEventHandlerExpr<PointerEvent>;
onpointerdown: DOMEventHandlerExpr<PointerEvent>;
onpointerenter: DOMEventHandlerExpr<PointerEvent>;
onpointerleave: DOMEventHandlerExpr<PointerEvent>;
onpointermove: DOMEventHandlerExpr<PointerEvent>;
onpointerout: DOMEventHandlerExpr<PointerEvent>;
onpointerover: DOMEventHandlerExpr<PointerEvent>;
onpointerup: DOMEventHandlerExpr<PointerEvent>;
onprogress: DOMEventHandlerExpr<ProgressEvent>;
onratechange: DOMEventHandlerExpr<Event>;
onreset: DOMEventHandlerExpr<Event>;
onresize: DOMEventHandlerExpr<UIEvent>;
onscroll: DOMEventHandlerExpr<Event>;
onsecuritypolicyviolation: DOMEventHandlerExpr<SecurityPolicyViolationEvent>;
onseeked: DOMEventHandlerExpr<Event>;
onseeking: DOMEventHandlerExpr<Event>;
onselect: DOMEventHandlerExpr<Event>;
onselectionchange: DOMEventHandlerExpr<Event>;
onselectstart: DOMEventHandlerExpr<Event>;
onslotchange: DOMEventHandlerExpr<Event>;
onstalled: DOMEventHandlerExpr<Event>;
onsubmit: DOMEventHandlerExpr<Event>;
onsuspend: DOMEventHandlerExpr<Event>;
ontimeupdate: DOMEventHandlerExpr<Event>;
ontoggle: DOMEventHandlerExpr<Event>;
ontouchcancel: DOMEventHandlerExpr<TouchEvent>;
ontouchend: DOMEventHandlerExpr<TouchEvent>;
ontouchmove: DOMEventHandlerExpr<TouchEvent>;
ontouchstart: DOMEventHandlerExpr<TouchEvent>;
ontransitioncancel: DOMEventHandlerExpr<TransitionEvent>;
ontransitionend: DOMEventHandlerExpr<TransitionEvent>;
ontransitionrun: DOMEventHandlerExpr<TransitionEvent>;
ontransitionstart: DOMEventHandlerExpr<TransitionEvent>;
onvolumechange: DOMEventHandlerExpr<Event>;
onwaiting: DOMEventHandlerExpr<Event>;
onwheel: DOMEventHandlerExpr<WheelEvent>;
}>;
export interface WebComponentConstructor extends CustomElementConstructor {
tag: string;
shadowOpen: boolean;
prefix?: string;
observedAttributes?: string[];
observedMutation?: MutationObserverInit;
}
export interface WebComponentClass {
attributeChangedCallback?(name: string, oldValue: string, newValue: string): void;
connectedCallback?(): void;
disconnectedCallback?(): void;
adoptedCallback?(olddoc: Document, newdoc: Document): void;
}
export declare type HTMLAttrName = "abbr" | "accept" | "accept-charset" | "accesskey" | "action" | "allow" | "allowfullscreen" | "allowpaymentrequest" | "alt" | "as" | "async" | "autocapitalize" | "autocomplete" | "autofocus" | "autoplay" | "charset" | "checked" | "cite" | "class" | "color" | "cols" | "colspan" | "content" | "contenteditable" | "controls" | "coords" | "crossorigin" | "data" | "datetime" | "decoding" | "default" | "defer" | "dir" | "dir" | "dirname" | "disabled" | "download" | "draggable" | "enctype" | "enterkeyhint" | "for" | "form" | "formaction" | "formenctype" | "formmethod" | "formnovalidate" | "formtarget" | "headers" | "height" | "hidden" | "high" | "href" | "hreflang" | "http-equiv" | "id" | "imagesizes" | "imagesrcset" | "inputmode" | "integrity" | "is" | "ismap" | "itemid" | "itemprop" | "itemref" | "itemscope" | "itemtype" | "kind" | "label" | "lang" | "list" | "loop" | "low" | "manifest" | "max" | "maxlength" | "media" | "method" | "min" | "minlength" | "multiple" | "muted" | "name" | "nomodule" | "nonce" | "novalidate" | "open" | "optimum" | "pattern" | "ping" | "placeholder" | "playsinline" | "poster" | "preload" | "readonly" | "referrerpolicy" | "rel" | "required" | "reversed" | "rows" | "rowspan" | "sandbox" | "scope" | "selected" | "shape" | "size" | "sizes" | "slot" | "span" | "spellcheck" | "src" | "srcdoc" | "srclang" | "srcset" | "start" | "step" | "style" | "tabindex" | "target" | "title" | "translate" | "type" | "usemap" | "value";
export declare type CSSPropertyName = {
[P in keyof CSSStyleDeclaration]: CSSStyleDeclaration[P] extends string ? P : never;
}[keyof CSSStyleDeclaration];
export declare type ElementSource = ({
$?: AttributesSource;
} & {
[P in keyof HTMLElementTagNameMap]?: NodeSource;
}) | {
[key: string]: NodeSource | AttributesSource | Cell<AttributesSource>;
};
export declare type DOMStringSource = string | number | boolean | null | undefined | {
toString(): string;
};
export declare type TextNodeSource = DOMStringSource;
export declare type DocumentFragmentSource = NodeSource[];
export declare type NodeSource = Node | TextNodeSource | DocumentFragmentSource | ElementSource | Stream<NodeSource> | Cell<NodeSource>;
export declare type AttrValue = DOMStringSource | string[] | DOMEventHandler[keyof DOMEventHandler] | StyleSource | DatasetSource | Promise<AttrValue> | Cell<AttrValue>;
export declare type StyleSource = {
[P in CSSPropertyName]: Cell<DOMStringSource> | DOMStringSource;
};
export declare type DatasetSource = {
[key: string]: Cell<DOMStringSource> | DOMStringSource;
};
export declare type AttributesSource = ({
[P in HTMLAttrName]?: AttrValue;
} & DOMEventHandler & {
[key: string]: AttrValue | DOMEventHandler[keyof DOMEventHandler];
}) | Stream<AttributesSource> | Cell<AttributesSource>;
export declare type AttrSource = AttributesSource | StyleSource | DatasetSource;
export declare type PointReference = [Node] | [Node, Node];
export declare type FRPV<V> = Promise<V> | Cell<V> | Stream<V>;
export declare type DOMSource = NodeSource | AttrSource | AttrValue | StyleSource | DatasetSource;