jelenjs
Version:
Core runtime library for JelenJS - an experimental UI framework with fine-grained reactivity
42 lines (41 loc) • 1.46 kB
TypeScript
/**
* Constants and global state for reactivity system
*/
export declare let currentEffect: EffectFunction | null;
export declare let currentContext: ReactiveContext | null;
export declare let microtaskPending: boolean;
export declare let globalEffectId: number;
export declare const CLEAN = 0;
export declare const STALE = 1;
export declare const PENDING = 2;
export declare let execCount: number;
export declare const defaultEquals: (value1: any, value2: any) => boolean;
export interface EffectFunction {
(): void;
id: number;
disposed: boolean;
running: boolean;
state: number;
cleanupFns: (() => void)[];
sources: SignalNode[];
sourceSlots: number[];
parentContext: ReactiveContext | null;
dispose: () => void;
updatedAt: number | null;
}
export interface SignalNode {
value: any;
subscribers: Set<EffectFunction>;
observers: EffectFunction[] | null;
observerSlots: number[] | null;
id?: string;
}
export interface ReactiveContext {
effects: Set<EffectFunction>;
}
export declare function setCurrentEffect(value: EffectFunction | null): EffectFunction | null;
export declare function setCurrentContext(value: ReactiveContext | null): ReactiveContext | null;
export declare function incrementEffectId(): number;
export declare function setMicrotaskPending(value: boolean): boolean;
export declare function incrementExecCount(): number;
export declare function getExecCount(): number;