UNPKG

@paperbits/common

Version:
41 lines (33 loc) 1.32 kB
import "../extensions"; import { EventManager } from "./eventManager"; interface EventListener { eventName: string; eventHandler: (...args) => void; } export class DefaultEventManager implements EventManager { private readonly eventListeners: EventListener[]; constructor() { this.eventListeners = []; } public addEventListener(eventName: string, eventHandler: (...args) => void): void { const exists = this.eventListeners.some(listener => listener.eventName === eventName && listener.eventHandler === eventHandler); if (!exists) { this.eventListeners.push({ eventName: eventName, eventHandler: eventHandler }); } } public removeEventListener(eventName: string, eventHandler: (...args) => void): void { const listener = this.eventListeners.find(listener => listener.eventName === eventName && listener.eventHandler === eventHandler); if (listener) { this.eventListeners.remove(listener); } } public dispatchEvent(eventName: string, args?: unknown): void { this.eventListeners .filter(listener => listener.eventName === eventName) .forEach(x => x.eventHandler(args)); } }