comic-plus
Version:
<p align="center"> <img width="200px" src="./logo.png"/> </p>
30 lines (29 loc) • 745 B
JavaScript
;
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
class EventEmitter {
constructor() {
this.listeners = {};
}
emit(event, ...args) {
if (!this.listeners[event]) {
return;
}
this.listeners[event].forEach((listener) => {
listener(...args);
});
}
on(event, callback) {
if (!this.listeners[event]) {
this.listeners[event] = [];
}
this.listeners[event].push(callback);
}
off(event, callback) {
if (!this.listeners[event]) {
return;
}
this.listeners[event] = this.listeners[event].filter((listener) => listener !== callback);
}
}
const emitter = new EventEmitter();
exports.default = emitter;