UNPKG

@geogirafe/lib-geoportal

Version:

GeoGirafe is a flexible application to build online geoportals.

41 lines (40 loc) 1.28 kB
declare global { interface Object { __brainIsProxy?: boolean; __brainTarget: object; __brainParents: TProxy[]; __brainChildren: Map<string, TProxy>; __brainFullPaths: string[]; } } export type TProxy = InstanceType<typeof Proxy>; type TTarget = any; type Callback = (path: string, oldValue: TTarget, newValue: TTarget | TProxy, parents: TProxy[]) => void; export default class Brain<T> { private readonly initialState; private readonly stateProxy; private readonly externalCallback; private readonly targetToProxy; private readonly proxyToTarget; private readonly proxyChildren; private readonly proxyParents; private readonly proxyToFullPaths; private delayed; private readonly delayedCallbacks; constructor(initialState: TTarget, callback: Callback); private callback; private createProxy; private getOrCreateProxyForValue; private cleanProxyForValue; private handleGetVirtualProperties; private handleGetIgnored; private handleGetFunctions; private getHandler; private setHandler; private setArrayHandler; private getFullPath; private readonly objectHandler; delay(statechanges: (state: T) => void): void; getState(): T; } export {};