You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.6 KiB
JavaScript
48 lines
1.6 KiB
JavaScript
class EventEmitter {
|
|
#delegate;
|
|
|
|
constructor() {
|
|
this.#delegate = document.createDocumentFragment();
|
|
}
|
|
|
|
/**
|
|
* Appends an event listener for events whose type attribute value is type. The callback
|
|
* argument sets the callback that will be invoked when the event is dispatched.
|
|
*
|
|
* The options argument sets listener-specific options.
|
|
*
|
|
* When set to true, options's passive indicates that the callback will not cancel
|
|
* the event by invoking preventDefault().
|
|
*
|
|
* When set to true, options's once indicates that the callback will only be invoked
|
|
* once after which the event listener will be removed.
|
|
*
|
|
* @param {string} type
|
|
* @param {EventListener} callback
|
|
* @param {{once?: boolean, passive?: boolean} | undefined} options
|
|
*/
|
|
addEventListener(type, callback, options = undefined) {
|
|
this.#delegate.addEventListener(type, callback, options);
|
|
}
|
|
|
|
/**
|
|
* Removes the event listener in target's event listener list with the same type, callback, and options.
|
|
* @param {string} type
|
|
* @param {EventListener} callback
|
|
* @param {{once?: boolean, passive?: boolean} | undefined} options
|
|
*/
|
|
removeEventListener(type, callback, options = undefined) {
|
|
this.#delegate.removeEventListener(type, callback, options);
|
|
}
|
|
|
|
/**
|
|
* Dispatches a synthetic event event to target and returns true if either event's cancelable
|
|
* attribute value is false or its preventDefault() method was not invoked, and false otherwise.
|
|
* @param {Event} event
|
|
* @returns {boolean}
|
|
*/
|
|
dispatchEvent(event) {
|
|
return this.#delegate.dispatchEvent(event);
|
|
}
|
|
}
|