vasille-jsx
Version:
The first Developer eXperience Orientated front-end framework (JSX components)
41 lines (40 loc) • 3.13 kB
TypeScript
import { Fragment, IValue } from "vasille";
type Magic<T extends object> = {
[K in keyof T]: T[K] | IValue<T[K]> | undefined;
};
export declare function readValue<T>(v: T | IValue<T>): T;
interface SlotOptions<Node, Element, TagOptions extends object, T extends object> {
model?: (input: T, ctx: Fragment<Node, Element, TagOptions>) => void;
slot?: (ctx: Fragment<Node, Element, TagOptions>) => void;
}
export declare function Slot<Node, Element, TagOptions extends object, T extends object = {}>(options: Magic<SlotOptions<Node, Element, TagOptions, T>> & T, ctx: Fragment<Node, Element, TagOptions>, defaultSlot?: (ctx: Fragment<Node, Element, TagOptions>) => void): void;
interface IfOptions {
condition: unknown;
slot?: () => void;
}
export declare function If<Node, Element, TagOptions extends object>({ condition, slot: magicSlot }: Magic<IfOptions>, ctx: Fragment<Node, Element, TagOptions>, defaultSlot?: () => void): void;
export declare function ElseIf<Node, Element, TagOptions extends object>({ condition, slot: magicSlot }: Magic<IfOptions>, ctx: Fragment<Node, Element, TagOptions>, defaultSlot?: () => void): void;
interface ElseOptions {
slot?: () => void;
}
export declare function Else<Node, Element, TagOptions extends object>({ slot: magicSlot }: Magic<ElseOptions>, ctx: Fragment<Node, Element, TagOptions>, defaultSlot?: () => void): void;
interface ForOptions<Node, Element, TagOptions extends object, T, K, V> {
of: T;
slot?: (ctx: Fragment<Node, Element, TagOptions>, value: T, index: K) => void;
}
export declare function For<Node, Element, TagOptions extends object, T extends Set<unknown> | Map<unknown, unknown> | unknown[], K = T extends unknown[] ? number : T extends Set<infer R> ? R : T extends Map<infer R, unknown> ? R : never, V = T extends (infer R)[] ? R : T extends Set<infer R> ? R : T extends Map<unknown, infer R> ? R : never>({ of, slot: magicSlot }: Magic<ForOptions<Node, Element, TagOptions, T, K, V>>, ctx: Fragment<Node, Element, TagOptions>, defaultSlot?: (ctx: Fragment<Node, Element, TagOptions>) => void): void;
interface WatchOptions<Node, Element, TagOptions extends object, T> {
model: T;
slot?: (ctx: Fragment<Node, Element, TagOptions>, value: T) => void;
}
export declare function Watch<Node, Element, TagOptions extends object, T>({ model, slot: magicSlot }: Magic<WatchOptions<Node, Element, TagOptions, T>>, ctx: Fragment<Node, Element, TagOptions>, defaultSlot?: (ctx: Fragment<Node, Element, TagOptions>) => void): void;
interface DebugOptions {
model: unknown;
}
export declare function Debug<Node, Element, TagOptions extends object>({ model }: DebugOptions, ctx: Fragment<Node, Element, TagOptions>): void;
interface DelayOptions<Node, Element, TagOptions extends object> {
time?: number;
slot?: (ctx: Fragment<Node, Element, TagOptions>) => unknown;
}
export declare function Delay<Node, Element, TagOptions extends object>({ time, slot }: Magic<DelayOptions<Node, Element, TagOptions>>, ctx: Fragment<Node, Element, TagOptions>, defaultSlot?: (ctx: Fragment<Node, Element, TagOptions>) => void): void;
export {};