UNPKG

@web-deps/event-manager

Version:

A JavaScript library for managing events. It can be used both on the frontend and backend.

65 lines (64 loc) 1.52 kB
var v = Object.defineProperty; var b = (t, r, e) => r in t ? v(t, r, { enumerable: !0, configurable: !0, writable: !0, value: e }) : t[r] = e; var o = (t, r, e) => (b(t, typeof r != "symbol" ? r + "" : r, e), e); class c { constructor(r, e, s) { o(this, "name"); o(this, "subject"); o(this, "data"); this.name = r, this.subject = e, s && (this.data = s); } } class d { } class f extends d { constructor(e, s) { super(); o(this, "subject"); o(this, "events"); o(this, "observers", {}); this.subject = e, this.events = s; for (const i of s) this.observers[i] = []; } eventIsRegistered(e) { return this.events.includes(e); } addObserver(e, s) { if (!this.eventIsRegistered(e)) throw new Error(` Failed to add observer. Event "${e}" is not registered. `); this.observers[e].push(s); } removeObserver(e, s) { if (!this.eventIsRegistered(e)) throw new Error(` Failed to remove observer. Event "${e}" is not registered. `); let i = this.observers[e]; const n = i.indexOf(s); n > -1 && i.splice(n, 1); } notifyObservers(e, s) { const i = this.observers[e]; for (const n of i) n( new c(e, this.subject, s) ); } emit(e, s) { if (!this.eventIsRegistered(e)) throw new Error(` Failed to emit event. Event "${e}" is not registered. `); this.notifyObservers(e, s); } } export { c as Event, f as EventEmitter };