UNPKG

use-app-events

Version:

Event system for global communication in vanilla JavaScript and React.

44 lines (43 loc) 1.2 kB
import e from "../lib/heap.js"; import m from "../utils/generateId.js"; import y from "../lib/options.js"; const E = (f) => { const { debug: v, scopeKey: t, shouldBeCalledOnce: p } = f || {}, g = typeof t == "string"; function h(r, i) { v ?? y.debug; const l = []; let a, o; return Array.isArray(r) ? (o = r, a = m("event-group-")) : o = [r], o.forEach((n) => { const c = e.eventListeners.findIndex((s) => { const u = s.scopeKey === t; return g && !u ? !1 : s.eventType === n && s.callback.toString() === i.toString(); }), L = { eventType: n, callback: i, scopeKey: t, shouldBeCalledOnce: p, eventGroupId: a }, d = c !== -1; if (d) { const u = { ...e.eventListeners[c], scopeKey: t, shouldBeCalledOnce: p, callback: i }; e.eventListeners = [...e.eventListeners], e.eventListeners[c] = u; } d || (e.eventListeners = [...e.eventListeners, L]), l.push(L); }), () => { e.eventListeners = e.eventListeners.filter((n) => !l.includes(n)); }; } return h; }; export { E as base_createListenForEvents };