synthetic-event
Version:
A collection of base classes for custom events and event targets.
56 lines (55 loc) • 2.55 kB
TypeScript
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;
}