Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 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 | 6x 5x 5x 5x 5x 6x 8x 8x 4x 8x 6x 8x 2x 6x 6x 3x 3x 2x 2x 5x 5x 5x 6x | function mastercardEventEmitter_injector() {
/** @type {import('./types').MastercardEventEmitter} */
return class MastercardEventEmitter {
constructor () {
this._emitter = new EventTarget();
this._eventData = new WeakMap();
this._callbacks = new Map();
}
/** @type {import('./types').MastercardEventEmitter['on']} */
on(eventName, callback) {
const proxiedEventHandler = (/** @type {object} */ event) => {
callback(this._eventData.get(event));
}
if (!this._callbacks.has(eventName)) {
this._callbacks.set(eventName, new WeakMap());
}
if (this._callbacks.get(eventName).has(callback)) {
// Don't double register!
return;
}
// This is so we can look up the actual event handler when calling .off
this._callbacks.get(eventName).set(callback, proxiedEventHandler);
this._emitter.addEventListener(eventName, proxiedEventHandler);
}
/** @type {import('./types').MastercardEventEmitter['off']} */
off(eventName, callback) {
const proxiedEventHandler = this._callbacks.get(eventName)?.get(callback);
if (proxiedEventHandler) {
this._emitter.removeEventListener(eventName, proxiedEventHandler);
this._callbacks.get(eventName)?.delete(callback);
}
}
/** @type {import('./types').MastercardEventEmitter['emit']} */
emit(eventName, eventData) {
const newEvent = new Event(eventName);
this._eventData.set(newEvent, eventData);
this._emitter.dispatchEvent(newEvent);
}
}
}
export { mastercardEventEmitter_injector }; |