@react95/core
Version:
Windows 95 styleguide
36 lines (35 loc) • 939 B
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
class Emitter {
constructor() {
this.listeners = {};
}
on(eventName, callback) {
var _a;
if (!this.listeners[eventName]) {
this.listeners[eventName] = [];
}
(_a = this.listeners[eventName]) == null ? void 0 : _a.push(callback);
}
off(eventName, callback) {
var _a;
if (this.listeners[eventName]) {
this.listeners[eventName] = (_a = this.listeners[eventName]) == null ? void 0 : _a.filter(
(cb) => cb !== callback
);
}
}
emit(eventName, data) {
var _a;
if (this.listeners[eventName]) {
(_a = this.listeners[eventName]) == null ? void 0 : _a.forEach((callback) => {
try {
callback(data);
} catch (error) {
console.error(`Error in event listener for ${eventName}:`, error);
}
});
}
}
}
exports.Emitter = Emitter;