Spaces:
Running
Running
File size: 1,465 Bytes
2b7aae2 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | export interface BaseEvent {
type: string;
}
/**
* Event object.
*/
export interface Event extends BaseEvent {
target?: any;
[attachment: string]: any;
}
export type EventListener<E, T, U> = (event: E & { type: T } & { target: U }) => void;
/**
* JavaScript events for custom objects
*
* @source src/core/EventDispatcher.js
*/
export class EventDispatcher<E extends BaseEvent = Event> {
/**
* Creates eventDispatcher object. It needs to be call with '.call' to add the functionality to an object.
*/
constructor();
/**
* Adds a listener to an event type.
* @param type The type of event to listen to.
* @param listener The function that gets called when the event is fired.
*/
addEventListener<T extends E['type']>(type: T, listener: EventListener<E, T, this>): void;
/**
* Checks if listener is added to an event type.
* @param type The type of event to listen to.
* @param listener The function that gets called when the event is fired.
*/
hasEventListener<T extends E['type']>(type: T, listener: EventListener<E, T, this>): boolean;
/**
* Removes a listener from an event type.
* @param type The type of the listener that gets removed.
* @param listener The listener function that gets removed.
*/
removeEventListener<T extends E['type']>(type: T, listener: EventListener<E, T, this>): void;
/**
* Fire an event type.
* @param type The type of event that gets fired.
*/
dispatchEvent(event: E): void;
}
|