UNPKG

hexa-viewer-communicator

Version:

A simple API for <hexa-viewer>

32 lines (26 loc) 907 B
import { EventObservableTypes, IEventObservable } from './interfaces/event-observable.interface'; export class EventObservable implements IEventObservable { private _stack: { [id: number]: Array<Function> }; constructor() { this._stack = {}; } private initStock(id: EventObservableTypes) { this._stack[id] = []; } add(id: EventObservableTypes, fu: Function) { if (!this._stack[id]) this.initStock(id); this._stack[id].push(fu); } invoke(id: EventObservableTypes, discharge: boolean, params?: Array<any>) { if (!this._stack[id]) this.initStock(id); if (params) this._stack[id].forEach((f) => f(...params)); else this._stack[id].forEach((f) => f()); if (discharge) this.initStock(id); } destroy() { this._stack = {}; } }