vasille-jsx
Version:
The same framework which is designed to build bulletproof frontends (JSX components)
12 lines (11 loc) • 1.05 kB
TypeScript
import { Fragment, App, Runner, Reactive } from "vasille";
export interface CompositionProps {
slot?: (...args: any[]) => void;
}
export type Composed<Node, Element, TagOptions extends object, In extends CompositionProps, Out> = ($: In & {
callback?(data: Out | undefined): void;
}, node?: Fragment<Node, Element, TagOptions>, slot?: In["slot"]) => void;
export declare function view<Node, Element, TagOptions extends object, In extends CompositionProps, Out>(renderer: (node: Fragment<Node, Element, TagOptions>, input: In) => Out): Composed<Node, Element, TagOptions, In, Out>;
export declare function store<Out extends object>(fn: (ctx: Reactive) => Out): Out;
export declare function model<In extends object, Out extends object>(fn: (ctx: Reactive, o: In) => Out): (o: In, parent?: Reactive) => Out;
export declare function mount<Node, Element, TagOptions extends object, T>(tag: Element, view: ($: T, node: Fragment<Node, Element, TagOptions>) => unknown, runner: Runner<Node, Element, TagOptions>, $: T): App<Node, Element, TagOptions>;