@novo-learning/novo-sdk
Version:
SDK for the Novolanguage Speech Analysis API
45 lines • 1.35 kB
JavaScript
;
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