vasille-jsx
Version:
The same framework which is designed to build bulletproof frontends (JSX components)
32 lines (31 loc) • 2.56 kB
TypeScript
import { Fragment, IValue } from "vasille";
interface SlotOptions<Node, Element, TagOptions extends object, T extends object> {
model?: (input: T, ctx: Fragment<Node, Element, TagOptions>) => void;
slot?: (input: object, ctx: Fragment<Node, Element, TagOptions>) => void;
}
export declare function Slot<Node, Element, TagOptions extends object, T extends object = {}>({ model, slot, ...options }: SlotOptions<Node, Element, TagOptions, T> & T, ctx: Fragment<Node, Element, TagOptions>, defaultSlot?: (ctx: Fragment<Node, Element, TagOptions>) => void): void;
interface SwitchOptions<Node, Element, TagOptions extends object> {
cases: {
$case: IValue<unknown>;
slot: (ctx: Fragment<Node, Element, TagOptions>) => void;
}[];
default?: (ctx: Fragment<Node, Element, TagOptions>) => void;
slot?: never;
}
export declare function Switch<Node, Element, TagOptions extends object>(options: SwitchOptions<Node, Element, TagOptions>, ctx: Fragment<Node, Element, TagOptions>): 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: model, slot: _slot }: 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: IValue<T>;
slot?: (ctx: Fragment<Node, Element, TagOptions>, value: T) => void;
}
export declare function Watch<Node, Element, TagOptions extends object, T>({ $model, slot: _slot }: WatchOptions<Node, Element, TagOptions, T>, ctx: Fragment<Node, Element, TagOptions>, defaultSlot?: (ctx: Fragment<Node, Element, TagOptions>) => void): 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: _slot }: DelayOptions<Node, Element, TagOptions>, ctx: Fragment<Node, Element, TagOptions>, defaultSlot?: (ctx: Fragment<Node, Element, TagOptions>) => void): void;
export {};