25 lines
1.0 KiB
TypeScript
25 lines
1.0 KiB
TypeScript
|
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;
|