p2p-media-loader-core
Version:
P2P Media Loader core functionality
50 lines • 1.44 kB
JavaScript
export class EventTarget {
constructor() {
Object.defineProperty(this, "events", {
enumerable: true,
configurable: true,
writable: true,
value: new Map()
});
}
dispatchEvent(eventName, ...args) {
const listeners = this.events.get(eventName);
if (!listeners)
return;
for (const listener of listeners) {
listener(...args);
}
}
getEventDispatcher(eventName) {
let listeners = this.events.get(eventName);
if (!listeners) {
listeners = [];
this.events.set(eventName, listeners);
}
const definedListeners = listeners;
return (...args) => {
for (const listener of definedListeners) {
listener(...args);
}
};
}
addEventListener(eventName, listener) {
const listeners = this.events.get(eventName);
if (!listeners) {
this.events.set(eventName, [listener]);
}
else {
listeners.push(listener);
}
}
removeEventListener(eventName, listener) {
const listeners = this.events.get(eventName);
if (listeners) {
const index = listeners.indexOf(listener);
if (index !== -1) {
listeners.splice(index, 1);
}
}
}
}
//# sourceMappingURL=event-target.js.map