UNPKG

tav-media

Version:

Cross platform media editing framework

34 lines (33 loc) 1.01 kB
export class EventManager { constructor() { this.listenersMap = {}; } on(eventName, listener) { if (this.listenersMap[eventName] === undefined) { this.listenersMap[eventName] = []; } this.listenersMap[eventName].push(listener); return; } off(eventName, listener) { const listenerList = this.listenersMap[eventName]; if (listenerList === undefined) return; if (listener === undefined) { delete this.listenersMap[eventName]; return; } const index = listenerList.findIndex((fn) => fn === listener); listenerList.splice(index, 1); return; } emit(eventName, ...payload) { const listenerList = this.listenersMap[eventName]; if (listenerList === undefined || listenerList.length < 1) return false; for (const listener of listenerList) { listener(...payload); } return true; } }