@inweb/eventemitter2
Version:
JavaScript event emitter
42 lines (40 loc) • 1.45 kB
JavaScript
class EventEmitter2 {
constructor() {
this._listeners = {};
}
addEventListener(type, listener) {
if (this._listeners[type] === undefined) this._listeners[type] = [];
this._listeners[type].push(listener);
return this;
}
removeEventListener(type, listener) {
if (this._listeners[type] === undefined) return this;
const listeners = this._listeners[type].filter((x => x !== listener));
if (listeners.length !== 0) this._listeners[type] = listeners; else delete this._listeners[type];
return this;
}
removeAllListeners(type) {
if (type) delete this._listeners[type]; else this._listeners = {};
return this;
}
emitEvent(event) {
if (this._listeners[event.type] === undefined) return false;
const invoke = this._listeners[event.type].slice();
invoke.forEach((listener => listener.call(this, event)));
return true;
}
on(type, listener) {
return this.addEventListener(type, listener);
}
off(type, listener) {
return this.removeEventListener(type, listener);
}
emit(type, ...args) {
if (typeof type === "string") return this.emitEvent({
type: type,
args: args
}); else if (typeof type === "object") return this.emitEvent(type); else return false;
}
}
export { EventEmitter2 };
//# sourceMappingURL=eventemitter2.module.js.map