@geogirafe/lib-geoportal
Version:
GeoGirafe is a flexible application to build online geoportals.
41 lines (40 loc) • 1.28 kB
TypeScript
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 {};