whale-plus
Version:
A Component Library for Vue 3
40 lines (36 loc) • 886 B
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
class EventEmitter {
constructor() {
this.events = /* @__PURE__ */ new Map();
}
on(event, listener) {
if (!this.events.has(event)) {
this.events.set(event, /* @__PURE__ */ new Set());
}
this.events.get(event).add(listener);
}
off(event, listener) {
if (!this.events.has(event)) {
return;
}
this.events.get(event).delete(listener);
}
once(event, listener) {
const onceListener = (...args) => {
listener(...args);
this.off(event, onceListener);
};
this.on(event, onceListener);
}
emit(event, ...args) {
if (!this.events.has(event)) {
return;
}
this.events.get(event).forEach((listener) => {
listener(...args);
});
}
}
exports.EventEmitter = EventEmitter;
//# sourceMappingURL=EventEmitter.js.map