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; if (!listener) { delete this.observers[event]; return; }
this.observers[event] = this.observers[event].filter((l) => l !== listener); }
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;