whale-plus
Version:
A Component Library for Vue 3
36 lines (34 loc) • 796 B
JavaScript
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);
});
}
}
export { EventEmitter };
//# sourceMappingURL=EventEmitter.mjs.map