UNPKG

@novo-learning/novo-sdk

Version:

SDK for the Novolanguage Speech Analysis API

45 lines 1.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EventBus = void 0; class EventBus { constructor(parent, identifier) { this.parent = parent; this.identifier = identifier; this.listeners = {}; } channel(identifier) { return new EventBus(this, identifier); } root() { let eb = this.parent; if (eb === undefined) { return this; } while (eb.parent) { eb = eb.parent; } return eb; } addEventListener(event, callbackFn) { this.listeners[event] = (this.listeners[event] || []).concat(callbackFn); } removeEventListener(event, callbackFn) { if (!callbackFn) { this.listeners[event] = []; } else { const index = (this.listeners[event] || []).findIndex((fn) => fn === callbackFn); if (index > -1) { this.listeners[event].splice(index, 1); } } } dispatch(event, data, broadcast) { (this.listeners[event] || []).forEach((callbackFn) => callbackFn(data)); if (broadcast !== false && this.parent) { this.parent.dispatch.apply(this.parent, [event, data, broadcast]); } } } exports.EventBus = EventBus; //# sourceMappingURL=event-bus.js.map