UNPKG

reactronic

Version:

Reactronic - Transactional Reactive State Management

42 lines (41 loc) 1.36 kB
export type BoolOnly<T> = Pick<T, { [P in keyof T]: T[P] extends boolean ? P : never; }[keyof T]>; export type GivenTypeOnly<T, V> = Pick<T, { [P in keyof T]: T[P] extends V ? P : never; }[keyof T]>; declare global { interface T extends Object { $$: { readonly [P in keyof T]-?: Ref<T[P]>; }; } } export declare function refs<O extends object = object>(owner: O): { readonly [P in keyof O]-?: Ref<O[P]>; }; export declare function toggleRefs<O extends object = object>(owner: O): { readonly [P in keyof BoolOnly<O>]: ToggleRef<O[P]>; }; export declare function customToggleRefs<T, O extends object = any>(owner: O, value1: T, value2: T): { readonly [P in keyof GivenTypeOnly<O, T | any>]: ToggleRef<O[P]>; }; export declare class Ref<T = any> { readonly owner: any; readonly name: string; readonly index: number; constructor(owner: any, name: string, index?: number); get variable(): T; set variable(value: T); nonReactively(): T; signalling(): T; nonSignalling(): T; static sameRefs(v1: Ref, v2: Ref): boolean; static similarRefs(v1: Ref, v2: Ref): boolean; } export declare class ToggleRef<T = boolean> extends Ref<T> { readonly valueOn: T; readonly valueOff: T; constructor(owner: any, name: string, valueOn: T, valueOff: T); toggle(): void; }