van-hmr/lib/vanx/vanx.d.ts

25 lines
1.0 KiB
TypeScript
Raw Normal View History

2025-02-03 14:13:41 -05:00
import * as Van from "../van/van.members.js";
export type StateOf<T> = { readonly [K in keyof T]: Van.State<T[K]> }
export type ValueType<T> = T extends (infer V)[] ? V : T[keyof T]
export type KeyType<T> = T extends unknown[] ? number : string
export type ReplacementFunc<T> =
T extends (infer V)[] ? (items: V[]) => readonly V[] :
(items: [string, T[keyof T]][]) => readonly [string, T[keyof T]][]
declare const vanX:{
calc: <R>(f: () => R) => R
reactive: <T extends object>(obj: T) => T
noreactive: <T extends object>(obj: T) => T,
stateFields: <T extends object>(obj: T) => StateOf<T>
raw: <T extends object>(obj: T) => T,
list: <T extends object, ElementType extends Element>(
container: (() => ElementType) | ElementType, items: T,
itemFunc: (v: Van.State<ValueType<T>>,
deleter: () => void, k: KeyType<T>) => Node
) => ElementType,
replace: <T extends object>(obj: T, replacement: ReplacementFunc<T> | T) => T,
compact: <T extends object>(obj: T) => T,
}
export default vanX;