import { wdomSymbol } from '../utils/universalRef.js'; export type UseDataStoreValue = { [key: string | symbol]: unknown; }; export type Props = Partial>; export type CompKey = Props; export type TagFunction = (prop: Props, children?: MiddleStateWDomChildren) => ((renew: Renew, prop: Props, children: WDom[]) => (props: Props) => MiddleStateWDom) | MiddleStateWDom; export type Renew = () => boolean; export type Component = (renew: Renew, props: T, childen: WDom[]) => (props: T) => MiddleStateWDom; export type LComponent = (props: T, childen: WDom[]) => (props: T) => MiddleStateWDom; export type TagFunctionResolver = { ctor: Function; props: Props; children: WDom[]; resolve: (compKey?: CompKey) => WDom; rd?: boolean; }; export type FragmentFunction = (props: Props, children: WDom[]) => WDom; export type NodePointer = { value: WDom | undefined; }; export type MiddleStateWDom = WDom | number | string | boolean | null | MiddleStateWDomChildren; export type MiddleStateWDomChildren = MiddleStateWDom[]; export type WDomType = 'c' | 'f' | 'e' | 'l' | 't' | 'et'; export interface WDom { type?: string | null; isRoot?: boolean; tag?: string; props?: Props; op?: Props; ctor?: Function; children?: WDom[]; oc?: WDom[]; getParent?: () => WDom | undefined; text?: string | number; compKey?: CompKey; reRender?: () => WDom; compProps?: Props; compChild?: WDom[]; we?: HTMLElement; ae?: HTMLElement; el?: HTMLElement | DocumentFragment | Text; nr?: RenderType; oi?: number; il?: boolean; rs?: TagFunctionResolver; [wdomSymbol]?: boolean | 'provider'; } export type RenderType = 'A' | 'D' | 'R' | 'U' | 'S' | 'T' | 'N'; export type ComponentSubKey = 'vd' | 'up' | 'upR' | 'upS' | 'upD' | 'upCB' | 'mts' | 'umts' | 'wdCB'; export type ComponentMap = WeakMap; export type ComponentInfo = { /** Component invoked by the renderer, before its VDOM is available. */ ctor?: TagFunction; vd: { value: null | WDom; }; up: () => void; upR: (() => void)[]; upS: { value: number; }; upD: unknown[][]; upCB: (() => void)[]; mts: (() => void)[]; umts: (() => void)[]; wdCB: (() => void | (() => void))[]; }; export type Param = { updater: Updater; props: Props; member: Member; children: WDom[]; }; export type RedrawQueueList = { compKey: CompKey; exec: () => void; }[];