import {Hooks} from './hooks'; export type Key = string | number; export interface VNode { sel: string | undefined; data: VNodeData | undefined; children: Array | undefined; elm: Node | undefined; text: string | undefined; key: Key; } export interface VNodeData { // modules - use any because Object type is useless props?: any; attrs?: any; class?: any; style?: any; dataset?: any; on?: any; hero?: any; attachData?: any; hook?: Hooks; key?: Key; ns?: string; // for SVGs fn?: () => VNode; // for thunks args?: Array; // for thunks [key: string]: any; // for any other 3rd party module // end of modules } export function vnode(sel: string | undefined, data: any | undefined, children: Array | undefined, text: string | undefined, elm: Element | Text | undefined): VNode { let key = data === undefined ? undefined : data.key; return {sel: sel, data: data, children: children, text: text, elm: elm, key: key}; } export default vnode;