UNPKG

ripple

Version:

Ripple is an elegant TypeScript UI framework

94 lines (79 loc) 2.09 kB
import type { Tracked, Derived } from './runtime.js'; import type { Context } from './context.js'; export { Tracked, Derived }; export type Component = { b: null | Block; c: null | Map<Context<any>, any>; e: null | Array<{ b: Block; fn: Function; r: null | Block | Derived; }>; p: null | Component; m: boolean; }; export type Dependency = { c: number; t: Tracked | Derived; n: null | Dependency; }; export type DeferredTrackedEntry = { b: Block; // boundary block r: number; // request version id }; export type Block = { co: null | Component; d: null | Dependency; first: null | Block; f: number; fn: any; last: null | Block; next: null | Block; p: null | Block; prev: null | Block; s: any; // teardown function t: (() => {}) | null; }; export type TryBoundaryState = { p: boolean; // whether pending_fn exists b: () => number; // begin request, returns request id r: (request_id: number, show_resolved_branch?: boolean) => boolean; // complete request, returns whether the request was active c: ((error: any) => void) | null; // catch function rd: (request_id: number, reject_fn: (reason: any) => void) => void; // register deferred reject function pb: (block: Block) => void; // register paused block rp: (old_request_id: number) => number; // replace request, returns new request id }; export type BlockWithTryBoundary = Omit<Block, 's'> & { s: TryBoundaryState; }; export type BlockWithTryBoundaryAndCatch = Omit<BlockWithTryBoundary, 's'> & { s: TryBoundaryState & { c: NonNullable<TryBoundaryState['c']> }; }; export type CompatApi = { createRoot: () => void; createComponent: (node: any, children_fn: () => any) => void; jsx: (type: any, props: any) => any; }; export type CompatOptions = { [key: string]: CompatApi; }; declare global { interface Element { __attributes?: { checked?: boolean; value?: string; }; __click?: () => void; __ripple_block?: Block; } interface Event { __root?: EventTarget; } interface HTMLSelectElement { __value?: unknown; } interface Text { __t?: string | null; } }