UNPKG

@caspingus/lt

Version:

A utility library of helpers and extensions useful when working with Learnosity APIs.

43 lines (42 loc) 1.52 kB
import e from "./logger.js"; //#region src/utils/dom.js function t(e, n, r = 5) { let i = document.getElementById(e); i ? n(i) : r > 0 ? setTimeout(() => t(e, n, r - 1), 10) : console.warn(`Element with ID "${e}" not found after ${r} attempts.`); } function n(t, n, i) { let a = i.dispatchEvent || !1, o = i.name || "lt:datatable", s = i.root || document.body, c = i.state || { activeObservers: /* @__PURE__ */ new Set() }, l = { childList: !0, subtree: !0, ...i.observeConfig }; if (c.activeObservers.has(t)) return e.debug(`${c.logPrefix}Already observing`, t), () => {}; let u = s.querySelector(t); if (u) return e.debug(`${c.logPrefix}Element already in DOM`, t), n(u), () => {}; c.activeObservers.add(t); let d = new MutationObserver((i, l) => { for (let u of i) if (u.type === "childList") { for (let i of u.addedNodes) if (i.nodeType === 1) { if (e.debug(`${c.logPrefix}Observing changes: `, s, i), i.matches && i.matches(t)) { l.disconnect(), e.debug(`${c.logPrefix}Disconnecting ${t}`), c.activeObservers.delete(t), r(t, o, a), n(i); return; } if (i.querySelector) { let s = i.querySelector(t); if (s) { l.disconnect(), e.debug(`${c.logPrefix}Disconnecting ${t}`), c.activeObservers.delete(t), r(t, o, a), n(s); return; } } } } }); e.debug(`${c.logPrefix}Observing for ${t}`), d.observe(s, l); } function r(e, t, n) { if (!n) return; let r = new CustomEvent(t); document.dispatchEvent(r); } //#endregion export { t as n, n as t };