UNPKG

@turbox3d/reactivity

Version:

Large-scale reactive state management library

65 lines (64 loc) 2.44 kB
import { ECollectType } from '../const/enums'; import { KeyPathType } from '../core/domain'; import { MaterialCallStackRecord } from './materialCallStack'; export declare enum EEventName { storeOnActive = "storeOnActive", beforeStoreChange = "beforeStoreChange", afterStoreChange = "afterStoreChange", asyncAfterStoreChange = "asyncAfterStoreChange", setProperty = "setProperty", materialCallStackChange = "materialCallStackChange" } export interface SetPropertyEvent { stackId?: number; domain: string; keyPath: Array<{ type: KeyPathType; value: string; }>; newValue: any; oldValue: any; time: number; type: ECollectType; } export interface BeforeStoreChangeEvent { domain?: string; method: string; args: any[]; state: any; time: number; stackId?: number; } export interface AfterStoreChangeEvent { domain?: string; method: string; args: any[]; state: any; async: boolean; time: number; stackId?: number; } export interface MaterialCallStackChangeEvent { stack: MaterialCallStackRecord[]; action: 'POP' | 'PUSH'; time: number; currentStack?: MaterialCallStackRecord; } declare class Emitter { private listeners; on(eventName: EEventName.storeOnActive, callback: () => void): void; on(eventName: EEventName.setProperty, callback: (event: SetPropertyEvent) => void): void; on(eventName: EEventName.beforeStoreChange, callback: (event: BeforeStoreChangeEvent) => void): void; on(eventName: EEventName.afterStoreChange, callback: (event: AfterStoreChangeEvent) => void): void; on(eventName: EEventName.asyncAfterStoreChange, callback: (event: AfterStoreChangeEvent) => void): void; on(eventName: EEventName.materialCallStackChange, callback: (event: MaterialCallStackChangeEvent) => void): void; emit(eventName: EEventName.storeOnActive): void; emit(eventName: EEventName.setProperty, args: SetPropertyEvent): void; emit(eventName: EEventName.beforeStoreChange, args: BeforeStoreChangeEvent): void; emit(eventName: EEventName.afterStoreChange, args: AfterStoreChangeEvent): void; emit(eventName: EEventName.asyncAfterStoreChange, args: AfterStoreChangeEvent): void; emit(eventName: EEventName.materialCallStackChange, args: MaterialCallStackChangeEvent): void; off(eventName: EEventName): void; } export declare const emitter: Emitter; export {};