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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | 3x 21x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 6x 6x 4x 2x 2x 2x 2x | export type EventName = "datafile_set" | "context_set" | "sticky_set";
export type EventDetails = Record<string, unknown>;
export type EventCallback = (details: EventDetails) => void;
export type Listeners = Record<EventName, EventCallback[]> | {}; // eslint-disable-line
export class Emitter {
listeners: Listeners;
constructor() {
this.listeners = {};
}
on(eventName: EventName, callback: EventCallback) {
if (!this.listeners[eventName]) {
this.listeners[eventName] = [];
}
const listeners = this.listeners[eventName];
listeners.push(callback);
let isActive = true;
return function unsubscribe() {
Iif (!isActive) {
return;
}
isActive = false;
const index = listeners.indexOf(callback);
if (index !== -1) {
listeners.splice(index, 1);
}
};
}
trigger(eventName: EventName, details: EventDetails = {}) {
const listeners = this.listeners[eventName];
if (!listeners) {
return;
}
listeners.forEach(function (listener) {
try {
listener(details);
} catch (err) {
console.error(err);
}
});
}
clearAll() {
this.listeners = {};
}
}
|