UNPKG

mostly-dom

Version:
57 lines (56 loc) 1.74 kB
import * as hooks from './hooks'; import { CSSProperties } from './CSS'; import { ElementProperties } from './HtmlProperties'; import { VNodeEvents } from './VNodeEventTypes'; export interface VNode<T extends Node = any, Props = any> { tagName: string | undefined; props: Props; children: Array<VNode> | undefined; text: string | undefined; key: string | number | undefined; element: T | undefined; namespace: string | undefined; scope: string | undefined; parent: VNode<Element> | undefined; } export interface ElementVNode<T extends Element = Element, Props = any> extends VNode<T, Props> { tagName: string; element: T; namespace: string; text: undefined; } export interface TextVNode extends VNode<Text> { tagName: undefined; children: undefined; text: string; key: undefined; element: Text; namespace: undefined; scope: undefined; } export interface VNodeProps<T extends Element = Element, EventMap extends VNodeEvents<T, ElementEventMap> = VNodeEvents<T, ElementEventMap>> extends ElementProperties { key?: string | number; class?: { [className: string]: Boolean; }; attrs?: { [attributeName: string]: any; }; style?: VNodeStyle; on?: EventMap; listener?: EventListener; focus?: boolean; scope?: string; init?: hooks.InitHook; create?: hooks.CreateHook<T>; update?: hooks.UpdateHook<T>; insert?: hooks.InsertHook<T>; remove?: hooks.RemoveHook<T>; destroy?: hooks.DestroyHook<T>; prepatch?: hooks.PrepatchHook<T>; postpatch?: hooks.PostpatchHook<T>; } export interface VNodeStyle extends CSSProperties { delayed?: CSSProperties; remove?: CSSProperties; }