Skip to main content
Module

x/i18next/EventEmitter.js

i18next: learn once - translate everywhere
Go to Latest
File
class EventEmitter { constructor() { this.observers = {}; }
on(events, listener) { events.split(' ').forEach((event) => { this.observers[event] = this.observers[event] || []; this.observers[event].push(listener); }); return this; }
off(event, listener) { if (!this.observers[event]) { return; }
this.observers[event].forEach(() => { if (!listener) { delete this.observers[event]; } else { const index = this.observers[event].indexOf(listener); if (index > -1) { this.observers[event].splice(index, 1); } } }); }
emit(event, ...args) { if (this.observers[event]) { const cloned = [].concat(this.observers[event]); cloned.forEach((observer) => { observer(...args); }); }
if (this.observers['*']) { const cloned = [].concat(this.observers['*']); cloned.forEach((observer) => { observer.apply(observer, [event, ...args]); }); } }}
export default EventEmitter;