UNPKG

toosoon-events

Version:

Project providing services implemented as singleton class instances

89 lines (88 loc) 2.68 kB
/** * Utility abstract class for creating multiple event listeners * * @exports * @class EventManager * @abstract * @template {Function} EventListener */ export declare abstract class EventManager<EventListener extends (...args: any[]) => void> { /** * Array of listeners bound to this manager event */ protected listeners: EventListener[]; /** * Add a listener to this manager listeners * * @param {EventListener} listener The listener to add * @returns {Function} The `off` function to remove the listener */ on(listener: EventListener): () => void; /** * Remove a listener from this manager listeners * * @param {EventListener} listener The listener to remove */ off(listener: EventListener): void; /** * Trigger this manager listeners * * @param {any[]} args The arguments to pass to the listeners */ emit(...args: Parameters<EventListener>): void; /** * Bind event listeners */ protected bind?(): void; /** * Unbind event listeners */ protected unbind?(): void; } /** * Utility abstract class for creating multiple events listeners * * @exports * @class EventsManager * @abstract * @template {string} EventKey * @template {Function} EventListener */ export declare abstract class EventsManager<EventKey extends string, EventListener extends (...args: any[]) => void> { /** * Arrays of listeners bound to this manager events */ protected listeners: { [key in EventKey]?: EventListener[]; }; /** * Add a listener to this manager listeners * * @param {EventKey} eventKey The event key to add the listener to * @param {EventListener} listener The listener to add * @returns {Function} The `off` function to remove the listener */ on(eventKey: EventKey, listener: EventListener): () => void; /** * Remove a listener gtom this manager listeners * * @param {EventKey} eventKey The event key to remove the listener from * @param {EventListener} listener The listener to remove */ off(eventKey: EventKey, listener: EventListener): void; /** * Trigger this manager listeners * * @param {EventKey} eventKey The event key to remove the listener from * @param {any[]} args The arguments to pass to the listeners */ emit(eventKey: EventKey, ...args: Parameters<EventListener>): void; /** * Bind events listeners */ protected bind?(eventKey: EventKey): void; /** * Unbind events listeners */ protected unbind?(eventKey: EventKey): void; }