UNPKG

toosoon-events

Version:

Project providing services implemented as singleton class instances

57 lines (56 loc) 1.57 kB
/** * Utility abstract class for creating multiple event listeners * * @exports * @class EventManager * @abstract */ export class EventManager { /** * Add a listener to this manager listeners */ on(listener) { if (!this.listeners.length) this.bind?.(); if (!this.listeners.includes(listener)) this.listeners.push(listener); return () => this.off(listener); } /** * Remove a listener from this manager listeners */ off(listener) { this.listeners = this.listeners.filter((_listener) => _listener !== listener); if (!this.listeners.length) this.unbind?.(); } } /** * Utility abstract class for creating multiple events listeners * * @exports * @class EventsManager * @abstract */ export class EventsManager { /** * Add a listener to this manager listeners */ on(eventKey, listener) { if (!this.listeners[eventKey]) this.listeners[eventKey] = []; if (!this.listeners[eventKey].length) this.bind?.(eventKey); if (!this.listeners[eventKey].includes(listener)) this.listeners[eventKey].push(listener); return () => this.off(eventKey, listener); } /** * Remove a listener gtom this manager listeners */ off(eventKey, listener) { this.listeners[eventKey] = this.listeners[eventKey]?.filter((_listener) => _listener !== listener) ?? []; if (!this.listeners[eventKey].length) this.unbind?.(eventKey); } }