UNPKG

synthetic-event

Version:

A collection of base classes for custom events and event targets.

56 lines (55 loc) 2.55 kB
import { Event } from "./Event.js"; import { EventListener } from "./EventListener.js"; import { EventListenerObject } from "./EventListenerObject.js"; /** * An event target that can dispatch events to registered listeners. */ export declare class EventTarget<TEventMap extends object = object> { /** * A collection of event listener functions. */ protected readonly listenerFunctions: Map<string, Set<EventListener<TEventMap[keyof TEventMap], string, this>>>; /** * A collection of event listener objects. */ protected readonly listenerObjects: Map<string, Set<EventListenerObject<TEventMap[keyof TEventMap], string, this>>>; /** * Constructs a new event target. */ constructor(); /** * Registers an event handler of a specific event type on the event target. * * @param type - The event type to listen for. * @param listener - An event listener or callback. */ addEventListener<T extends Extract<keyof TEventMap, string>>(type: T, listener: EventListener<TEventMap[T], T, this> | EventListenerObject<TEventMap[T], T, this>): void; /** * Removes an event handler of a specific event type from the event target. * * @param type - The event type to remove. * @param listener - The event listener to remove. */ hasEventListener<T extends Extract<keyof TEventMap, string>>(type: T, listener: EventListener<TEventMap[T], T, this> | EventListenerObject<TEventMap[T], T, this>): boolean; /** * Removes an event handler of a specific event type from the event target. * * @param type - The event type to remove. * @param listener - The event listener to remove. */ removeEventListener<T extends Extract<keyof TEventMap, string>>(type: T, listener: EventListener<TEventMap[T], T, this> | EventListenerObject<TEventMap[T], T, this>): void; /** * Dispatches an event at the specified event target, invoking the affected event listeners in the appropriate order. * * Event listeners can safely be added and removed while an event is being dispatched. * * @see https://262.ecma-international.org/#sec-map.prototype.foreach for more information on the iteration behavior. * @param event - The event to dispatch. * @param target - An event target. */ dispatchEvent<T extends Extract<keyof TEventMap, string>>(event: Event<T> & TEventMap[T], target?: EventTarget<TEventMap>): void; /** * Removes all listeners. */ clearEventListeners(): void; }