UNPKG

@inweb/eventemitter2

Version:

JavaScript event emitter

42 lines (40 loc) 1.45 kB
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