@microsoft/teams.common
Version:
<p> <a href="https://www.npmjs.com/package/@microsoft/teams.common" target="_blank"> <img src="https://img.shields.io/npm/v/@microsoft/teams.common" /> </a> <a href="https://www.npmjs.com/package/@microsoft/teams.common?activeTab=code"
36 lines (35 loc) • 874 B
JavaScript
class EventEmitter {
index = -1;
subscriptions = /* @__PURE__ */ new Map();
on(event, handler) {
const id = ++this.index;
const subs = this.subscriptions.get(event) || [];
subs.push({ id, handler });
this.subscriptions.set(event, subs);
return id;
}
once(event, handler) {
const id = this.on(event, (value) => {
this.off(id);
handler(value);
});
return id;
}
off(id) {
for (const [_, subs] of this.subscriptions.entries()) {
const i = subs.findIndex((s) => s.id === id);
if (i === -1) continue;
subs.splice(i, 1);
return;
}
}
emit(event, value) {
const subs = this.subscriptions.get(event) || [];
for (const sub of subs) {
sub.handler(value);
}
}
}
export { EventEmitter };
//# sourceMappingURL=event-emitter.mjs.map
//# sourceMappingURL=event-emitter.mjs.map