bootstrap-native.mjs.map 283 KB

1
  1. {"version":3,"file":"bootstrap-native.mjs","sources":["../node_modules/.pnpm/@thednp+shorty@2.0.10/node_modules/@thednp/shorty/dist/shorty.mjs","../node_modules/.pnpm/@thednp+event-listener@2.0.8/node_modules/@thednp/event-listener/dist/event-listener.mjs","../src/strings/fadeClass.ts","../src/strings/showClass.ts","../src/strings/dataBsDismiss.ts","../src/strings/alertString.ts","../src/strings/alertComponent.ts","../src/util/isDisabled.ts","../src/version.ts","../src/components/base-component.ts","../src/components/alert.ts","../src/strings/activeClass.ts","../src/strings/dataBsToggle.ts","../src/strings/buttonString.ts","../src/strings/buttonComponent.ts","../src/components/button.ts","../src/strings/dataBsTarget.ts","../src/strings/carouselString.ts","../src/strings/carouselComponent.ts","../src/strings/dataBsParent.ts","../src/strings/dataBsContainer.ts","../src/util/getTargetElement.ts","../src/components/carousel.ts","../src/strings/collapsingClass.ts","../src/strings/collapseString.ts","../src/strings/collapseComponent.ts","../src/components/collapse.ts","../node_modules/.pnpm/@thednp+position-observer@1.0.7/node_modules/@thednp/position-observer/dist/index.mjs","../src/strings/dropdownClasses.ts","../src/strings/dropdownComponent.ts","../src/strings/dropdownMenuClass.ts","../src/util/isEmptyAnchor.ts","../src/components/dropdown.ts","../src/strings/modalString.ts","../src/strings/modalComponent.ts","../src/strings/offcanvasComponent.ts","../src/strings/fixedTopClass.ts","../src/strings/fixedBottomClass.ts","../src/strings/stickyTopClass.ts","../src/strings/positionStickyClass.ts","../src/util/scrollbar.ts","../src/strings/offcanvasString.ts","../src/util/popupContainer.ts","../src/util/backdrop.ts","../src/util/isVisible.ts","../src/components/modal.ts","../src/components/offcanvas.ts","../src/strings/popoverString.ts","../src/strings/popoverComponent.ts","../src/strings/tooltipString.ts","../src/util/getTipTemplate.ts","../src/util/tipClassPositions.ts","../src/util/styleTip.ts","../src/util/tooltipDefaults.ts","../src/strings/dataOriginalTitle.ts","../src/strings/tooltipComponent.ts","../src/util/setHtml.ts","../src/util/createTip.ts","../src/util/getElementContainer.ts","../src/components/tooltip.ts","../src/components/popover.ts","../src/strings/scrollspyString.ts","../src/strings/scrollspyComponent.ts","../src/components/scrollspy.ts","../src/strings/tabString.ts","../src/strings/tabComponent.ts","../src/components/tab.ts","../src/strings/toastString.ts","../src/strings/toastComponent.ts","../src/components/toast.ts","../src/util/init.ts"],"sourcesContent":["const Ce = \"2.0.10\", Me = \"aria-checked\", De = \"aria-description\", Le = \"aria-describedby\", Oe = \"aria-expanded\", xe = \"aria-haspopup\", X = \"aria-hidden\", ze = \"aria-label\", Ie = \"aria-labelledby\", Pe = \"aria-modal\", Fe = \"aria-pressed\", Be = \"aria-selected\", Ve = \"aria-valuemin\", He = \"aria-valuemax\", Ue = \"aria-valuenow\", We = \"aria-valuetext\", Y = \"abort\", tt = \"beforeunload\", et = \"blur\", nt = \"change\", ot = \"contextmenu\", U = \"DOMContentLoaded\", st = \"DOMMouseScroll\", rt = \"error\", ct = \"focus\", at = \"focusin\", it = \"focusout\", ut = \"gesturechange\", lt = \"gestureend\", dt = \"gesturestart\", ft = \"keydown\", pt = \"keypress\", gt = \"keyup\", mt = \"load\", vt = \"click\", bt = \"dblclick\", Et = \"mousedown\", ht = \"mouseup\", yt = \"hover\", wt = \"mouseenter\", At = \"mouseleave\", St = \"mousein\", kt = \"mouseout\", Nt = \"mouseover\", Tt = \"mousemove\", Ct = \"mousewheel\", Mt = \"move\", Dt = \"orientationchange\", Lt = \"pointercancel\", Ot = \"pointerdown\", xt = \"pointerleave\", zt = \"pointermove\", It = \"pointerup\", Pt = \"readystatechange\", Ft = \"reset\", Bt = \"resize\", Vt = \"select\", Ht = \"selectend\", Ut = \"selectstart\", Wt = \"scroll\", Rt = \"submit\", Qt = \"touchstart\", jt = \"touchmove\", Kt = \"touchcancel\", qt = \"touchend\", Gt = \"unload\", Re = {\n DOMContentLoaded: U,\n DOMMouseScroll: st,\n abort: Y,\n beforeunload: tt,\n blur: et,\n change: nt,\n click: vt,\n contextmenu: ot,\n dblclick: bt,\n error: rt,\n focus: ct,\n focusin: at,\n focusout: it,\n gesturechange: ut,\n gestureend: lt,\n gesturestart: dt,\n hover: yt,\n keydown: ft,\n keypress: pt,\n keyup: gt,\n load: mt,\n mousedown: Et,\n mousemove: Tt,\n mousein: St,\n mouseout: kt,\n mouseenter: wt,\n mouseleave: At,\n mouseover: Nt,\n mouseup: ht,\n mousewheel: Ct,\n move: Mt,\n orientationchange: Dt,\n pointercancel: Lt,\n pointerdown: Ot,\n pointerleave: xt,\n pointermove: zt,\n pointerup: It,\n readystatechange: Pt,\n reset: Ft,\n resize: Bt,\n scroll: Wt,\n select: Vt,\n selectend: Ht,\n selectstart: Ut,\n submit: Rt,\n touchcancel: Kt,\n touchend: qt,\n touchmove: jt,\n touchstart: Qt,\n unload: Gt\n}, Qe = \"drag\", je = \"dragstart\", Ke = \"dragenter\", qe = \"dragleave\", Ge = \"dragover\", Ze = \"dragend\", _e = \"loadstart\", $e = {\n start: \"mousedown\",\n end: \"mouseup\",\n move: \"mousemove\",\n cancel: \"mouseleave\"\n}, Je = { down: \"mousedown\", up: \"mouseup\" }, Xe = \"onmouseleave\" in document ? [\"mouseenter\", \"mouseleave\"] : [\"mouseover\", \"mouseout\"], Ye = {\n start: \"touchstart\",\n end: \"touchend\",\n move: \"touchmove\",\n cancel: \"touchcancel\"\n}, tn = { in: \"focusin\", out: \"focusout\" }, Zt = 'a[href], button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"]', en = {\n Backspace: \"Backspace\",\n Tab: \"Tab\",\n Enter: \"Enter\",\n Shift: \"Shift\",\n Control: \"Control\",\n Alt: \"Alt\",\n Pause: \"Pause\",\n CapsLock: \"CapsLock\",\n Escape: \"Escape\",\n Scape: \"Space\",\n ArrowLeft: \"ArrowLeft\",\n ArrowUp: \"ArrowUp\",\n ArrowRight: \"ArrowRight\",\n ArrowDown: \"ArrowDown\",\n Insert: \"Insert\",\n Delete: \"Delete\",\n Meta: \"Meta\",\n ContextMenu: \"ContextMenu\",\n ScrollLock: \"ScrollLock\"\n}, nn = \"Alt\", on = \"ArrowDown\", sn = \"ArrowUp\", rn = \"ArrowLeft\", cn = \"ArrowRight\", an = \"Backspace\", un = \"CapsLock\", ln = \"Control\", dn = \"Delete\", fn = \"Enter\", pn = \"NumpadEnter\", gn = \"Escape\", mn = \"Insert\", vn = \"Meta\", bn = \"Pause\", En = \"ScrollLock\", hn = \"Shift\", yn = \"Space\", wn = \"Tab\", _t = \"animationDuration\", $t = \"animationDelay\", W = \"animationName\", C = \"animationend\", Jt = \"transitionDuration\", Xt = \"transitionDelay\", M = \"transitionend\", R = \"transitionProperty\", An = \"addEventListener\", Sn = \"removeEventListener\", kn = {\n linear: \"linear\",\n easingSinusoidalIn: \"cubic-bezier(0.47,0,0.745,0.715)\",\n easingSinusoidalOut: \"cubic-bezier(0.39,0.575,0.565,1)\",\n easingSinusoidalInOut: \"cubic-bezier(0.445,0.05,0.55,0.95)\",\n easingQuadraticIn: \"cubic-bezier(0.550,0.085,0.680,0.530)\",\n easingQuadraticOut: \"cubic-bezier(0.250,0.460,0.450,0.940)\",\n easingQuadraticInOut: \"cubic-bezier(0.455,0.030,0.515,0.955)\",\n easingCubicIn: \"cubic-bezier(0.55,0.055,0.675,0.19)\",\n easingCubicOut: \"cubic-bezier(0.215,0.61,0.355,1)\",\n easingCubicInOut: \"cubic-bezier(0.645,0.045,0.355,1)\",\n easingQuarticIn: \"cubic-bezier(0.895,0.03,0.685,0.22)\",\n easingQuarticOut: \"cubic-bezier(0.165,0.84,0.44,1)\",\n easingQuarticInOut: \"cubic-bezier(0.77,0,0.175,1)\",\n easingQuinticIn: \"cubic-bezier(0.755,0.05,0.855,0.06)\",\n easingQuinticOut: \"cubic-bezier(0.23,1,0.32,1)\",\n easingQuinticInOut: \"cubic-bezier(0.86,0,0.07,1)\",\n easingExponentialIn: \"cubic-bezier(0.95,0.05,0.795,0.035)\",\n easingExponentialOut: \"cubic-bezier(0.19,1,0.22,1)\",\n easingExponentialInOut: \"cubic-bezier(1,0,0,1)\",\n easingCircularIn: \"cubic-bezier(0.6,0.04,0.98,0.335)\",\n easingCircularOut: \"cubic-bezier(0.075,0.82,0.165,1)\",\n easingCircularInOut: \"cubic-bezier(0.785,0.135,0.15,0.86)\",\n easingBackIn: \"cubic-bezier(0.6,-0.28,0.735,0.045)\",\n easingBackOut: \"cubic-bezier(0.175,0.885,0.32,1.275)\",\n easingBackInOut: \"cubic-bezier(0.68,-0.55,0.265,1.55)\"\n}, Nn = \"offsetHeight\", Tn = \"offsetWidth\", Cn = \"scrollHeight\", Mn = \"scrollWidth\", Dn = \"tabindex\", Ln = navigator.userAgentData, { userAgent: Yt } = navigator, On = Yt, xn = () => {\n const t = /iPhone|iPad|iPod|Android/i;\n return navigator?.userAgentData?.brands.some(\n (e) => t.test(e.brand)\n ) || t.test(navigator?.userAgent) || !1;\n}, zn = () => {\n const t = /(iPhone|iPod|iPad)/;\n return navigator?.userAgentData?.brands.some(\n (e) => t.test(e.brand)\n ) || t.test(\n navigator?.userAgent\n ) || !1;\n}, In = () => navigator?.userAgent?.includes(\"Firefox\") || !1, te = () => typeof CSS > \"u\" || !CSS.supports ? !1 : CSS.supports(\"-webkit-backdrop-filter\", \"none\"), Pn = () => [\"webkitPerspective\", \"perspective\"].some((t) => t in document.head.style), ee = () => {\n}, Q = (t, e, n, o) => {\n const s = o || !1;\n t.addEventListener(\n e,\n n,\n s\n );\n}, j = (t, e, n, o) => {\n const s = o || !1;\n t.removeEventListener(\n e,\n n,\n s\n );\n}, ne = (t, e, n, o) => {\n const s = (r) => {\n (r.target === t || r.currentTarget === t) && (n.apply(t, [r]), j(t, e, s, o));\n };\n Q(t, e, s, o);\n}, Fn = () => {\n let t = !1;\n try {\n const e = Object.defineProperty({}, \"passive\", {\n get: () => (t = !0, t)\n });\n ne(document, U, ee, e);\n } catch {\n }\n return t;\n}, Bn = () => [\"webkitTransform\", \"transform\"].some((t) => t in document.head.style), Vn = () => \"ontouchstart\" in window || \"msMaxTouchPoints\" in navigator, Hn = () => [\"webkitAnimation\", \"animation\"].some((t) => t in document.head.style), Un = () => [\"webkitTransition\", \"transition\"].some((t) => t in document.head.style), K = (t, e) => t.getAttribute(e), Wn = (t, e, n) => e.getAttributeNS(t, n), oe = (t, e) => t.hasAttribute(e), Rn = (t, e, n) => e.hasAttributeNS(t, n), Qn = (t, e, n) => t.setAttribute(e, n), jn = (t, e, n, o) => e.setAttributeNS(t, n, o), Kn = (t, e) => t.removeAttribute(e), qn = (t, e, n) => e.removeAttributeNS(t, n), Gn = (t, ...e) => {\n t.classList.add(...e);\n}, Zn = (t, ...e) => {\n t.classList.remove(...e);\n}, _n = (t, e) => t.classList.contains(e), { body: $n } = document, { documentElement: Jn } = document, { head: Xn } = document, Yn = (t) => Array.from(t), v = (t) => t != null && typeof t == \"object\" || !1, u = (t) => v(t) && typeof t.nodeType == \"number\" && [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].some(\n (e) => t.nodeType === e\n) || !1, i = (t) => u(t) && t.nodeType === 1 || !1, E = /* @__PURE__ */ new Map(), L = {\n data: E,\n set: (t, e, n) => {\n if (!i(t)) return;\n E.has(e) || E.set(e, /* @__PURE__ */ new Map()), E.get(e).set(t, n);\n },\n getAllFor: (t) => E.get(t) || null,\n get: (t, e) => {\n if (!i(t) || !e) return null;\n const n = L.getAllFor(e);\n return t && n && n.get(t) || null;\n },\n remove: (t, e) => {\n const n = L.getAllFor(e);\n !n || !i(t) || (n.delete(t), n.size === 0 && E.delete(e));\n }\n}, to = (t, e) => L.get(t, e), eo = (t) => t?.charAt(0).toUpperCase() + t?.slice(1), P = (t) => t?.trim().replace(\n /(?:^\\w|[A-Z]|\\b\\w)/g,\n (e, n) => n === 0 ? e.toLowerCase() : e.toUpperCase()\n).replace(/\\s+/g, \"\"), N = (t) => typeof t == \"string\" || !1, q = (t) => v(t) && t.constructor.name === \"Window\" || !1, G = (t) => u(t) && t.nodeType === 9 || !1, d = (t) => G(t) ? t : u(t) ? t.ownerDocument : q(t) ? t.document : globalThis.document, T = (t, ...e) => Object.assign(t, ...e), se = (t) => {\n if (!t) return;\n if (N(t))\n return d().createElement(t);\n const { tagName: e } = t, n = se(e);\n if (!n) return;\n const o = { ...t };\n return delete o.tagName, T(n, o);\n}, re = (t, e) => {\n if (!t || !e) return;\n if (N(e))\n return d().createElementNS(t, e);\n const { tagName: n } = e, o = re(t, n);\n if (!o) return;\n const s = { ...e };\n return delete s.tagName, T(o, s);\n}, Z = (t, e) => t.dispatchEvent(e), no = (t, e, n) => n.indexOf(t) === e, f = (t, e, n) => {\n const o = getComputedStyle(t, n), s = e.replace(\"webkit\", \"Webkit\").replace(/([A-Z])/g, \"-$1\").toLowerCase();\n return o.getPropertyValue(s);\n}, ce = (t) => {\n const e = f(t, W), n = f(t, $t), o = n.includes(\"ms\") ? 1 : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : 0;\n return Number.isNaN(s) ? 0 : s;\n}, ae = (t) => {\n const e = f(t, W), n = f(t, _t), o = n.includes(\"ms\") ? 1 : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : 0;\n return Number.isNaN(s) ? 0 : s;\n}, oo = (t, e) => {\n let n = 0;\n const o = new Event(C), s = ae(t), r = ce(t);\n if (s) {\n const a = (l) => {\n l.target === t && (e.apply(t, [l]), t.removeEventListener(C, a), n = 1);\n };\n t.addEventListener(C, a), setTimeout(() => {\n n || Z(t, o);\n }, s + r + 17);\n } else\n e.apply(t, [o]);\n}, ie = (t) => {\n const e = f(t, R), n = f(t, Xt), o = n.includes(\"ms\") ? 1 : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : 0;\n return Number.isNaN(s) ? 0 : s;\n}, ue = (t) => {\n const e = f(t, R), n = f(t, Jt), o = n.includes(\"ms\") ? 1 : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : 0;\n return Number.isNaN(s) ? 0 : s;\n}, so = (t, e) => {\n let n = 0;\n const o = new Event(M), s = ue(t), r = ie(t);\n if (s) {\n const a = (l) => {\n l.target === t && (e.apply(t, [l]), t.removeEventListener(M, a), n = 1);\n };\n t.addEventListener(M, a), setTimeout(() => {\n n || Z(t, o);\n }, s + r + 17);\n } else\n e.apply(t, [o]);\n}, ro = (t) => Float32Array.from(Array.from(t)), co = (t) => Float64Array.from(Array.from(t)), ao = (t, e) => t.focus(e), io = (t) => t?.trim().replace(/([a-z])([A-Z])/g, \"$1-$2\").replace(/\\s+/g, \"-\").toLowerCase(), F = (t) => [\"true\", !0].includes(t) ? !0 : [\"false\", !1].includes(t) ? !1 : [\"null\", \"\", null, void 0].includes(t) ? null : t !== \"\" && !Number.isNaN(+t) ? +t : t, S = (t) => Object.entries(t), uo = (t, e, n, o) => {\n if (!i(t)) return e;\n const s = { ...n }, r = { ...t.dataset }, a = { ...e }, l = {}, p = \"title\";\n return S(r).forEach(([c, g]) => {\n const A = o && typeof c == \"string\" && c.includes(o) ? P(c.replace(o, \"\")) : P(c);\n l[A] = F(g);\n }), S(s).forEach(([c, g]) => {\n s[c] = F(g);\n }), S(e).forEach(([c, g]) => {\n c in s ? a[c] = s[c] : c in l ? a[c] = l[c] : a[c] = c === p ? K(t, p) : g;\n }), a;\n}, lo = (t, e) => v(t) && (Object.hasOwn(t, e) || e in t), fo = (t) => Object.keys(t), po = (t) => Object.values(t), go = (t) => Object.fromEntries(t), mo = (t, e) => {\n const n = new CustomEvent(t, {\n cancelable: !0,\n bubbles: !0\n });\n return v(e) && T(n, e), n;\n}, vo = { passive: !0 }, bo = (t) => t.offsetHeight, Eo = (t, e) => {\n S(e).forEach(([n, o]) => {\n if (o && N(n) && n.includes(\"--\"))\n t.style.setProperty(n, o);\n else {\n const s = {};\n s[n] = o, T(t.style, s);\n }\n });\n}, O = (t) => v(t) && t.constructor.name === \"Map\" || !1, le = (t) => typeof t == \"number\" || !1, m = /* @__PURE__ */ new Map(), ho = {\n set: (t, e, n, o) => {\n i(t) && (o && o.length ? (m.has(t) || m.set(t, /* @__PURE__ */ new Map()), m.get(t).set(o, setTimeout(e, n))) : m.set(t, setTimeout(e, n)));\n },\n get: (t, e) => {\n if (!i(t)) return null;\n const n = m.get(t);\n return e && n && O(n) ? n.get(e) || null : le(n) ? n : null;\n },\n clear: (t, e) => {\n if (!i(t)) return;\n const n = m.get(t);\n e && e.length && O(n) ? (clearTimeout(n.get(e)), n.delete(e), n.size === 0 && m.delete(t)) : (clearTimeout(n), m.delete(t));\n }\n}, yo = (t) => t.toLowerCase(), wo = (t) => t.toUpperCase(), de = (t, e) => (u(e) ? e : d()).querySelectorAll(t), z = /* @__PURE__ */ new Map();\nfunction _(t) {\n const { shiftKey: e, code: n } = t, o = d(this), s = [\n ...de(Zt, this)\n ].filter(\n (l) => !oe(l, \"disabled\") && !K(l, X)\n );\n if (!s.length) return;\n const r = s[0], a = s[s.length - 1];\n n === \"Tab\" && (e && o.activeElement === r ? (a.focus(), t.preventDefault()) : !e && o.activeElement === a && (r.focus(), t.preventDefault()));\n}\nconst I = (t) => z.has(t) === !0, fe = (t) => {\n I(t) || (Q(t, \"keydown\", _), z.set(t, !0));\n}, pe = (t) => {\n I(t) && (j(t, \"keydown\", _), z.delete(t));\n}, Ao = (t) => {\n I(t) ? pe(t) : fe(t);\n}, b = (t) => i(t) && \"offsetWidth\" in t || !1, y = (t, e) => {\n const { width: n, height: o, top: s, right: r, bottom: a, left: l } = t.getBoundingClientRect();\n let p = 1, c = 1;\n if (e && b(t)) {\n const { offsetWidth: g, offsetHeight: A } = t;\n p = g > 0 ? Math.round(n) / g : 1, c = A > 0 ? Math.round(o) / A : 1;\n }\n return {\n width: n / p,\n height: o / c,\n top: s / c,\n right: r / p,\n bottom: a / c,\n left: l / p,\n x: l / p,\n y: s / c\n };\n}, So = (t) => d(t).body, w = (t) => d(t).documentElement, ko = (t) => d(t).head, ge = (t) => u(t) ? (t.nodeName || \"\").toLowerCase() : \"#document\", No = (t) => {\n const e = q(t), n = e ? t.scrollX : t.scrollLeft, o = e ? t.scrollY : t.scrollTop;\n return { x: n, y: o };\n}, me = (t) => u(t) && t.constructor.name === \"ShadowRoot\" || !1, k = (t) => t.nodeName === \"HTML\" ? t : i(t) && t.assignedSlot || u(t) && t.parentNode || me(t) && t.host || w(t), ve = (t) => t ? G(t) ? t.defaultView : u(t) ? t?.ownerDocument?.defaultView : t : window, be = (t) => u(t) && [\"TABLE\", \"TD\", \"TH\"].includes(t.nodeName) || !1, Ee = (t, e) => t.matches(e), D = (t) => f(t, \"position\") === \"static\", he = (t) => f(t, \"position\") === \"fixed\", $ = (t) => [\":popover-open\", \":modal\"].some((e) => {\n try {\n return Ee(t, e);\n } catch {\n return !1;\n }\n}), J = (t) => {\n const e = te(), n = i(t) ? getComputedStyle(t) : t;\n return n.transform !== \"none\" || n.perspective !== \"none\" || (n.containerType ? n.containerType !== \"normal\" : !1) || !e && (n.backdropFilter ? n.backdropFilter !== \"none\" : !1) || !e && (n.filter ? n.filter !== \"none\" : !1) || [\"transform\", \"perspective\", \"filter\"].some(\n (o) => (n.willChange || \"\").includes(o)\n ) || [\"paint\", \"layout\", \"strict\", \"content\"].some(\n (o) => (n.contain || \"\").includes(o)\n );\n}, ye = (t) => {\n let e = k(t);\n for (; i(e) && !x(e); ) {\n if (J(e))\n return e;\n if ($(e))\n return null;\n e = k(e);\n }\n return null;\n}, x = (t) => [\"html\", \"body\", \"#document\"].includes(ge(t)), B = (t) => {\n if (!b(t) || he(t))\n return null;\n let e = t.offsetParent;\n return w(t) === e && (e = e.ownerDocument.body), e;\n}, To = (t) => {\n const e = ve(t);\n if (!u(t) || $(t))\n return e;\n if (!b(t)) {\n let o = k(t);\n for (; o && !x(o); ) {\n if (i(o) && !D(o))\n return o;\n o = k(o);\n }\n return e;\n }\n let n = B(t);\n for (; n && be(n) && D(n); )\n n = B(n);\n return n && x(n) && D(n) && !J(n) ? e : n || ye(t) || e;\n}, we = (t) => {\n if (!b(t)) return !1;\n const { width: e, height: n } = y(t), { offsetWidth: o, offsetHeight: s } = t;\n return Math.round(e) !== o || Math.round(n) !== s;\n}, Co = (t, e, n) => {\n const o = b(e), s = y(\n t,\n o && we(e)\n ), r = { x: 0, y: 0 };\n if (o) {\n const a = y(e, !0);\n r.x = a.x + e.clientLeft, r.y = a.y + e.clientTop;\n }\n return {\n x: s.left + n.x - r.x,\n y: s.top + n.y - r.y,\n width: s.width,\n height: s.height\n };\n};\nlet V = 0, H = 0;\nconst h = /* @__PURE__ */ new Map(), Ae = (t, e) => {\n let n = e ? V : H;\n if (e) {\n const o = Ae(t), s = h.get(o) || /* @__PURE__ */ new Map();\n h.has(o) || h.set(o, s), O(s) && !s.has(e) ? (s.set(e, n), V += 1) : n = s.get(e);\n } else {\n const o = t.id || t;\n h.has(o) ? n = h.get(o) : (h.set(o, n), H += 1);\n }\n return n;\n}, Se = (t) => Array.isArray(t) || !1, Mo = (t) => u(t) && t.nodeName === \"CANVAS\" || !1, ke = (t) => b(t) && !!t.shadowRoot || !1, Do = (t) => {\n if (!u(t)) return !1;\n const { top: e, bottom: n } = y(t), { clientHeight: o } = w(t);\n return e <= o && n >= 0;\n}, Lo = (t) => {\n if (!i(t)) return !1;\n const { clientWidth: e, clientHeight: n } = w(t), { top: o, left: s, bottom: r, right: a } = y(t, !0);\n return o >= 0 && s >= 0 && r <= n && a <= e;\n}, Oo = (t) => Se(t) && t.every(i) || !1, xo = (t) => typeof t == \"function\" || !1, zo = (t) => v(t) && t.constructor.name === \"HTMLCollection\" || !1, Io = (t) => b(t) && t.tagName === \"IMG\" || !1, Po = (t) => {\n if (!N(t)) return !1;\n try {\n JSON.parse(t);\n } catch {\n return !1;\n }\n return !0;\n}, Fo = (t) => v(t) && t.constructor.name === \"WeakMap\" || !1, Bo = (t) => u(t) && [\"SVG\", \"Image\", \"Video\", \"Canvas\"].some(\n (e) => t.constructor.name.includes(e)\n) || !1, Vo = (t) => v(t) && t.constructor.name === \"NodeList\" || !1, Ho = (t) => w(t).dir === \"rtl\", Uo = (t) => u(t) && t.constructor.name.includes(\"SVG\") || !1, Ne = (t, e) => !t || !e ? null : t.closest(e) || Ne(t.getRootNode().host, e) || null, Wo = (t, e) => i(t) ? t : (i(e) ? e : d()).querySelector(t), Te = (t, e) => (u(e) ? e : d()).getElementsByTagName(\n t\n), Ro = (t) => [...Te(\"*\", t)].filter(ke), Qo = (t, e) => d(e).getElementById(t), jo = (t, e) => (e && u(e) ? e : d()).getElementsByClassName(\n t\n);\nexport {\n Yn as ArrayFrom,\n U as DOMContentLoadedEvent,\n st as DOMMouseScrollEvent,\n L as Data,\n ro as Float32ArrayFrom,\n co as Float64ArrayFrom,\n T as ObjectAssign,\n S as ObjectEntries,\n go as ObjectFromEntries,\n lo as ObjectHasOwn,\n fo as ObjectKeys,\n po as ObjectValues,\n ho as Timer,\n Y as abortEvent,\n Gn as addClass,\n An as addEventListener,\n fe as addFocusTrap,\n $t as animationDelay,\n _t as animationDuration,\n C as animationEndEvent,\n W as animationName,\n Me as ariaChecked,\n Le as ariaDescribedBy,\n De as ariaDescription,\n Oe as ariaExpanded,\n xe as ariaHasPopup,\n X as ariaHidden,\n ze as ariaLabel,\n Ie as ariaLabelledBy,\n Pe as ariaModal,\n Fe as ariaPressed,\n Be as ariaSelected,\n He as ariaValueMax,\n Ve as ariaValueMin,\n Ue as ariaValueNow,\n We as ariaValueText,\n tt as beforeunloadEvent,\n kn as bezierEasings,\n et as blurEvent,\n P as camelCase,\n eo as capitalize,\n nt as changeEvent,\n Ne as closest,\n ot as contextmenuEvent,\n mo as createCustomEvent,\n se as createElement,\n re as createElementNS,\n Z as dispatchEvent,\n no as distinct,\n $n as documentBody,\n Jn as documentElement,\n Xn as documentHead,\n Qe as dragEvent,\n Ze as dragendEvent,\n Ke as dragenterEvent,\n qe as dragleaveEvent,\n Ge as dragoverEvent,\n je as dragstartEvent,\n oo as emulateAnimationEnd,\n so as emulateTransitionEnd,\n rt as errorEvent,\n ao as focus,\n ct as focusEvent,\n tn as focusEvents,\n Zt as focusableSelector,\n at as focusinEvent,\n it as focusoutEvent,\n ut as gesturechangeEvent,\n lt as gestureendEvent,\n dt as gesturestartEvent,\n K as getAttribute,\n Wn as getAttributeNS,\n y as getBoundingClientRect,\n Ro as getCustomElements,\n d as getDocument,\n So as getDocumentBody,\n w as getDocumentElement,\n ko as getDocumentHead,\n ce as getElementAnimationDelay,\n ae as getElementAnimationDuration,\n Qo as getElementById,\n f as getElementStyle,\n ie as getElementTransitionDelay,\n ue as getElementTransitionDuration,\n jo as getElementsByClassName,\n Te as getElementsByTagName,\n to as getInstance,\n ge as getNodeName,\n No as getNodeScroll,\n To as getOffsetParent,\n k as getParentNode,\n Co as getRectRelativeToOffsetParent,\n Ae as getUID,\n ve as getWindow,\n _ as handleKeyboardNavigation,\n oe as hasAttribute,\n Rn as hasAttributeNS,\n _n as hasClass,\n I as hasFocusTrap,\n zn as isApple,\n Se as isArray,\n Mo as isCanvas,\n ke as isCustomElement,\n G as isDocument,\n i as isElement,\n Do as isElementInScrollRange,\n Lo as isElementInViewport,\n Oo as isElementsArray,\n In as isFirefox,\n xo as isFunction,\n zo as isHTMLCollection,\n b as isHTMLElement,\n Io as isHTMLImageElement,\n Po as isJSON,\n O as isMap,\n Bo as isMedia,\n xn as isMobile,\n u as isNode,\n Vo as isNodeList,\n le as isNumber,\n v as isObject,\n Ho as isRTL,\n Uo as isSVGElement,\n we as isScaledElement,\n me as isShadowRoot,\n N as isString,\n be as isTableElement,\n Fo as isWeakMap,\n te as isWebKit,\n q as isWindow,\n io as kebabCase,\n nn as keyAlt,\n on as keyArrowDown,\n rn as keyArrowLeft,\n cn as keyArrowRight,\n sn as keyArrowUp,\n an as keyBackspace,\n un as keyCapsLock,\n ln as keyControl,\n dn as keyDelete,\n fn as keyEnter,\n gn as keyEscape,\n mn as keyInsert,\n vn as keyMeta,\n pn as keyNumpadEnter,\n bn as keyPause,\n En as keyScrollLock,\n hn as keyShift,\n yn as keySpace,\n wn as keyTab,\n en as keyboardEventKeys,\n ft as keydownEvent,\n pt as keypressEvent,\n gt as keyupEvent,\n mt as loadEvent,\n _e as loadstartEvent,\n Ee as matches,\n Je as mouseClickEvents,\n Xe as mouseHoverEvents,\n $e as mouseSwipeEvents,\n vt as mouseclickEvent,\n bt as mousedblclickEvent,\n Et as mousedownEvent,\n wt as mouseenterEvent,\n yt as mousehoverEvent,\n St as mouseinEvent,\n At as mouseleaveEvent,\n Tt as mousemoveEvent,\n kt as mouseoutEvent,\n Nt as mouseoverEvent,\n ht as mouseupEvent,\n Ct as mousewheelEvent,\n Mt as moveEvent,\n Re as nativeEvents,\n ee as noop,\n uo as normalizeOptions,\n F as normalizeValue,\n j as off,\n Nn as offsetHeight,\n Tn as offsetWidth,\n Q as on,\n ne as one,\n Dt as orientationchangeEvent,\n vo as passiveHandler,\n Lt as pointercancelEvent,\n Ot as pointerdownEvent,\n xt as pointerleaveEvent,\n zt as pointermoveEvent,\n It as pointerupEvent,\n Wo as querySelector,\n de as querySelectorAll,\n Pt as readystatechangeEvent,\n bo as reflow,\n Kn as removeAttribute,\n qn as removeAttributeNS,\n Zn as removeClass,\n Sn as removeEventListener,\n pe as removeFocusTrap,\n Ft as resetEvent,\n Bt as resizeEvent,\n Wt as scrollEvent,\n Cn as scrollHeight,\n Mn as scrollWidth,\n Vt as selectEvent,\n Ht as selectendEvent,\n Ut as selectstartEvent,\n Qn as setAttribute,\n jn as setAttributeNS,\n Eo as setElementStyle,\n Rt as submitEvent,\n Pn as support3DTransform,\n Hn as supportAnimation,\n Fn as supportPassive,\n Vn as supportTouch,\n Bn as supportTransform,\n Un as supportTransition,\n Dn as tabindex,\n yo as toLowerCase,\n wo as toUpperCase,\n Ao as toggleFocusTrap,\n Ye as touchEvents,\n Kt as touchcancelEvent,\n qt as touchendEvent,\n jt as touchmoveEvent,\n Qt as touchstartEvent,\n Xt as transitionDelay,\n Jt as transitionDuration,\n M as transitionEndEvent,\n R as transitionProperty,\n Gt as unloadEvent,\n On as userAgent,\n Ln as userAgentData,\n Ce as version\n};\n//# sourceMappingURL=shorty.mjs.map\n","const g = \"2.0.8\", e = {}, f = (t) => {\n const { type: n, currentTarget: c } = t;\n e[n].forEach((a, s) => {\n c === s && a.forEach((o, i) => {\n i.apply(s, [t]), typeof o == \"object\" && o.once && r(s, n, i, o);\n });\n });\n}, E = (t, n, c, a) => {\n e[n] || (e[n] = /* @__PURE__ */ new Map());\n const s = e[n];\n s.has(t) || s.set(t, /* @__PURE__ */ new Map());\n const o = s.get(\n t\n ), { size: i } = o;\n o.set(c, a), i || t.addEventListener(\n n,\n f,\n a\n );\n}, r = (t, n, c, a) => {\n const s = e[n], o = s && s.get(t), i = o && o.get(c), d = i !== void 0 ? i : a;\n o && o.has(c) && o.delete(c), s && (!o || !o.size) && s.delete(t), (!s || !s.size) && delete e[n], (!o || !o.size) && t.removeEventListener(\n n,\n f,\n d\n );\n}, M = E, p = r;\nexport {\n E as addListener,\n f as globalListener,\n p as off,\n M as on,\n e as registry,\n r as removeListener,\n g as version\n};\n//# sourceMappingURL=event-listener.mjs.map\n","/**\n * Global namespace for most components `fade` class.\n */\nconst fadeClass = \"fade\";\nexport default fadeClass;\n","/**\n * Global namespace for most components `show` class.\n */\nconst showClass = \"show\";\nexport default showClass;\n","/**\n * Global namespace for most components `dismiss` option.\n */\nconst dataBsDismiss = \"data-bs-dismiss\";\nexport default dataBsDismiss;\n","/** @type {string} */\nconst alertString = \"alert\";\nexport default alertString;\n","/** @type {string} */\nconst alertComponent = \"Alert\";\nexport default alertComponent;\n","import { getAttribute, hasClass } from \"@thednp/shorty\";\n\n/**\n * Check if interactive element is disabled.\n * @param target either a `<button>` or an `<a>`\n * @returns whether the target is disabled\n */\nconst isDisabled = (target: Element) => {\n return hasClass(target, \"disabled\") ||\n getAttribute(target, \"disabled\") === \"true\";\n};\n\nexport default isDisabled;\n","import { version } from \"../package.json\";\n\nconst Version = version;\n\nexport default Version;\n","/* Native JavaScript for Bootstrap 5 | Base Component\n----------------------------------------------------- */\nimport {\n Data,\n isElement,\n isString,\n normalizeOptions,\n ObjectKeys,\n querySelector,\n} from \"@thednp/shorty\";\n\nimport type { BaseOptions } from \"~/interface/baseComponent\";\nimport Version from \"~/version\";\n\n/** Returns a new `BaseComponent` instance. */\nexport default class BaseComponent {\n declare element: Element;\n declare options?: BaseOptions;\n\n /**\n * @param target `Element` or selector string\n * @param config component instance options\n */\n constructor(target: Element | string, config?: BaseOptions) {\n let element: Element | null;\n\n try {\n if (isElement(target)) {\n element = target as Element;\n } else if (isString(target)) {\n element = querySelector(target);\n // istanbul ignore else @preserve\n if (!element) throw Error(`\"${target}\" is not a valid selector.`);\n } else {\n throw Error(`your target is not an instance of HTMLElement.`);\n }\n } catch (e) {\n throw Error(`${this.name} Error: ${(e as Error).message}`);\n }\n\n const prevInstance = Data.get<typeof this>(element, this.name);\n /* istanbul ignore else @preserve */\n if (prevInstance) {\n // remove previously attached event listeners\n // to avoid memory leaks\n prevInstance._toggleEventListeners();\n }\n\n this.element = element;\n this.options = this.defaults && ObjectKeys(this.defaults).length\n ? normalizeOptions(element, this.defaults, config || {}, \"bs\")\n : /* istanbul ignore next @preserve */ {};\n\n Data.set(element, this.name, this);\n }\n\n // istanbul ignore next @preserve\n get version() {\n return Version;\n }\n\n // istanbul ignore next @preserve\n get name() {\n return \"BaseComponent\";\n }\n\n // istanbul ignore next @preserve\n get defaults() {\n return {};\n }\n\n /** just to have something to extend from */\n // istanbul ignore next @preserve coverage wise this isn't important\n _toggleEventListeners = () => {\n // do something to please linters\n };\n\n /** Removes component from target element. */\n dispose() {\n Data.remove<typeof this>(this.element, this.name);\n ObjectKeys(this).forEach((prop) => {\n delete this[prop];\n });\n }\n}\n","/* Native JavaScript for Bootstrap 5 | Alert\n-------------------------------------------- */\nimport {\n createCustomEvent,\n dispatchEvent,\n emulateTransitionEnd,\n getInstance,\n hasClass,\n mouseclickEvent,\n PointerEvent,\n querySelector,\n removeClass,\n} from \"@thednp/shorty\";\n\nimport { addListener, removeListener } from \"@thednp/event-listener\";\n\nimport fadeClass from \"~/strings/fadeClass\";\nimport showClass from \"~/strings/showClass\";\nimport dataBsDismiss from \"~/strings/dataBsDismiss\";\nimport alertString from \"~/strings/alertString\";\nimport alertComponent from \"~/strings/alertComponent\";\nimport isDisabled from \"~/util/isDisabled\";\nimport type { AlertEvent } from \"~/interface/alert\";\n\nimport BaseComponent from \"./base-component\";\n\n// ALERT PRIVATE GC\n// ================\nconst alertSelector = `.${alertString}`;\nconst alertDismissSelector = `[${dataBsDismiss}=\"${alertString}\"]`;\n\n/**\n * Static method which returns an existing `Alert` instance associated\n * to a target `Element`.\n */\nconst getAlertInstance = (element: Element) =>\n getInstance<Alert>(element, alertComponent);\n\n/**\n * An `Alert` initialization callback.\n */\nconst alertInitCallback = (element: Element) => new Alert(element);\n\n// ALERT CUSTOM EVENTS\n// ===================\nconst closeAlertEvent = createCustomEvent<Record<string, never>, AlertEvent>(\n `close.bs.${alertString}`,\n);\nconst closedAlertEvent = createCustomEvent<Record<string, never>, AlertEvent>(\n `closed.bs.${alertString}`,\n);\n\n// ALERT EVENT HANDLER\n// ===================\n/**\n * Alert `transitionend` callback.\n *\n * @param that target Alert instance\n */\nconst alertTransitionEnd = (self: Alert) => {\n const { element } = self;\n dispatchEvent(element, closedAlertEvent);\n\n self._toggleEventListeners();\n self.dispose();\n element.remove();\n};\n\n// ALERT DEFINITION\n// ================\n/** Creates a new Alert instance. */\nexport default class Alert extends BaseComponent {\n static selector = alertSelector;\n static init = alertInitCallback;\n static getInstance = getAlertInstance;\n dismiss: HTMLElement | null;\n\n constructor(target: Element | string) {\n super(target);\n\n // the dismiss button\n this.dismiss = querySelector<HTMLElement>(\n alertDismissSelector,\n this.element,\n );\n\n // add event listener\n this._toggleEventListeners(true);\n }\n\n /** Returns component name string. */\n get name() {\n return alertComponent;\n }\n\n // ALERT PUBLIC METHODS\n // ====================\n /**\n * Public method that hides the `.alert` element from the user,\n * disposes the instance once animation is complete, then\n * removes the element from the DOM.\n */\n close = (e: PointerEvent<HTMLElement>) => {\n const { element, dismiss } = this;\n\n // istanbul ignore if @preserve\n if (!element || !hasClass(element, showClass)) return;\n // istanbul ignore if @preserve\n if (e && dismiss && isDisabled(dismiss)) return;\n dispatchEvent(element, closeAlertEvent);\n\n if (closeAlertEvent.defaultPrevented) return;\n\n removeClass(element, showClass);\n\n if (hasClass(element, fadeClass)) {\n emulateTransitionEnd(element, () => alertTransitionEnd(this));\n } else alertTransitionEnd(this);\n };\n /**\n * Toggle on / off the `click` event listener.\n *\n * @param add when `true`, event listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { dismiss, close } = this;\n // istanbul ignore else @preserve\n if (dismiss) {\n action(dismiss, mouseclickEvent, close);\n }\n };\n\n /** Remove the component from target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n","/**\n * Global namespace for most components active class.\n */\nconst activeClass = \"active\";\nexport default activeClass;\n","/**\n * Global namespace for most components `toggle` option.\n */\nconst dataBsToggle = \"data-bs-toggle\";\nexport default dataBsToggle;\n","/** @type {string} */\nconst buttonString = \"button\";\nexport default buttonString;\n","/** @type {string} */\nconst buttonComponent = \"Button\";\nexport default buttonComponent;\n","/* Native JavaScript for Bootstrap 5 | Button\n---------------------------------------------*/\nimport {\n addClass,\n ariaPressed,\n getInstance,\n hasClass,\n mouseclickEvent,\n PointerEvent,\n removeClass,\n setAttribute,\n} from \"@thednp/shorty\";\n\nimport { addListener, removeListener } from \"@thednp/event-listener\";\n\nimport activeClass from \"~/strings/activeClass\";\nimport dataBsToggle from \"~/strings/dataBsToggle\";\nimport buttonString from \"~/strings/buttonString\";\nimport buttonComponent from \"~/strings/buttonComponent\";\nimport BaseComponent from \"./base-component\";\nimport isDisabled from \"~/util/isDisabled\";\n\n// BUTTON PRIVATE GC\n// =================\nconst buttonSelector = `[${dataBsToggle}=\"${buttonString}\"]`;\n\n/**\n * Static method which returns an existing `Button` instance associated\n * to a target `Element`.\n */\nconst getButtonInstance = (element: Element) =>\n getInstance<Button>(element, buttonComponent);\n\n/** A `Button` initialization callback. */\nconst buttonInitCallback = (element: Element) => new Button(element);\n\n// BUTTON DEFINITION\n// =================\n/** Creates a new `Button` instance. */\nexport default class Button extends BaseComponent {\n static selector = buttonSelector;\n static init = buttonInitCallback;\n static getInstance = getButtonInstance;\n\n declare isActive: boolean;\n declare element: HTMLElement;\n\n /**\n * @param target usually a `.btn` element\n */\n constructor(target: Element | string) {\n super(target);\n\n // initialization element\n const { element } = this;\n\n // set initial state\n this.isActive = hasClass(element, activeClass);\n setAttribute(element, ariaPressed, String(!!this.isActive));\n\n // add event listener\n this._toggleEventListeners(true);\n }\n\n /**\n * Returns component name string.\n */\n get name() {\n return buttonComponent;\n }\n\n // BUTTON PUBLIC METHODS\n // =====================\n /**\n * Toggles the state of the target button.\n *\n * @param e usually `click` Event object\n */\n toggle = (e?: PointerEvent<HTMLElement>) => {\n if (e) e.preventDefault();\n\n const { element, isActive } = this;\n // istanbul ignore if @preserve\n if (isDisabled(element)) return;\n const action = isActive ? removeClass : addClass;\n action(element, activeClass);\n setAttribute(element, ariaPressed, isActive ? \"false\" : \"true\");\n this.isActive = hasClass(element, activeClass);\n };\n\n // BUTTON PRIVATE METHOD\n // =====================\n /**\n * Toggles on/off the `click` event listener.\n *\n * @param add when `true`, event listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n action(this.element, mouseclickEvent, this.toggle);\n };\n\n /** Removes the `Button` component from the target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n","/**\n * Global namespace for most components `target` option.\n */\nconst dataBsTarget = \"data-bs-target\";\nexport default dataBsTarget;\n","/** @type {string} */\nconst carouselString = \"carousel\";\nexport default carouselString;\n","/** @type {string} */\nconst carouselComponent = \"Carousel\";\nexport default carouselComponent;\n","/**\n * Global namespace for most components `parent` option.\n */\nconst dataBsParent = \"data-bs-parent\";\nexport default dataBsParent;\n","/**\n * Global namespace for most components `container` option.\n */\nconst dataBsContainer = \"data-bs-container\";\nexport default dataBsContainer;\n","import {\n closest,\n getAttribute,\n getDocument,\n querySelector,\n} from \"@thednp/shorty\";\n\nimport dataBsTarget from \"../strings/dataBsTarget\";\nimport dataBsParent from \"../strings/dataBsParent\";\nimport dataBsContainer from \"../strings/dataBsContainer\";\n\n/**\n * Returns the `Element` that THIS one targets\n * via `data-bs-target`, `href`, `data-bs-parent` or `data-bs-container`.\n *\n * @param element the target element\n * @returns the query result\n */\nconst getTargetElement = <T extends Element = HTMLElement>(element: T) => {\n const targetAttr = [dataBsTarget, dataBsParent, dataBsContainer, \"href\"];\n const doc = getDocument(element);\n\n return targetAttr\n .map((att) => {\n const attValue = getAttribute(element, att);\n if (attValue) {\n return att === dataBsParent\n ? closest<T>(element, attValue)\n : querySelector<T>(attValue, doc);\n }\n return null;\n })\n .filter((x) => x)[0];\n};\n\nexport default getTargetElement;\n","/* Native JavaScript for Bootstrap 5 | Carousel\n----------------------------------------------- */\nimport {\n addClass,\n closest,\n createCustomEvent,\n dispatchEvent,\n DragEvent,\n dragstartEvent,\n emulateTransitionEnd,\n getAttribute,\n getDocument,\n getElementsByClassName,\n getElementTransitionDuration,\n getInstance,\n hasClass,\n isElementInScrollRange,\n isRTL,\n keyArrowLeft,\n keyArrowRight,\n keydownEvent,\n matches,\n mouseclickEvent,\n mouseenterEvent,\n mouseleaveEvent,\n ObjectAssign,\n passiveHandler,\n pointerdownEvent,\n PointerEvent,\n pointermoveEvent,\n pointerupEvent,\n querySelector,\n querySelectorAll,\n reflow,\n removeClass,\n Timer,\n TouchEvent,\n touchstartEvent,\n} from \"@thednp/shorty\";\n\nimport { addListener, removeListener } from \"@thednp/event-listener\";\n\nimport activeClass from \"~/strings/activeClass\";\nimport dataBsTarget from \"~/strings/dataBsTarget\";\nimport carouselString from \"~/strings/carouselString\";\nimport carouselComponent from \"~/strings/carouselComponent\";\nimport getTargetElement from \"~/util/getTargetElement\";\nimport isDisabled from \"~/util/isDisabled\";\nimport BaseComponent from \"./base-component\";\nimport type { CarouselEvent, CarouselOptions } from \"~/interface/carousel\";\n\ntype CarouselEventProperties = {\n relatedTarget: EventTarget & HTMLElement;\n from: number;\n to: number;\n direction: \"left\" | \"right\";\n};\n\n// CAROUSEL PRIVATE GC\n// ===================\nconst carouselSelector = `[data-bs-ride=\"${carouselString}\"]`;\nconst carouselItem = `${carouselString}-item`;\nconst dataBsSlideTo = \"data-bs-slide-to\";\nconst dataBsSlide = \"data-bs-slide\";\nconst pausedClass = \"paused\";\n\nconst carouselDefaults: CarouselOptions = {\n pause: \"hover\",\n keyboard: false,\n touch: true,\n interval: 5000,\n};\n\n/**\n * Static method which returns an existing `Carousel` instance associated\n * to a target `Element`.\n */\nconst getCarouselInstance = (element: Element) =>\n getInstance<Carousel>(element, carouselComponent);\n\n/**\n * A `Carousel` initialization callback.\n */\nconst carouselInitCallback = (element: Element) => new Carousel(element);\n\nlet startX = 0;\nlet currentX = 0;\nlet endX = 0;\n\n// CAROUSEL CUSTOM EVENTS\n// ======================\nconst carouselSlideEvent = createCustomEvent<\n CarouselEventProperties,\n CarouselEvent\n>(`slide.bs.${carouselString}`);\nconst carouselSlidEvent = createCustomEvent<\n CarouselEventProperties,\n CarouselEvent\n>(`slid.bs.${carouselString}`);\n\n// CAROUSEL EVENT HANDLERS\n// =======================\n/**\n * The `transitionend` event listener of the `Carousel`.\n *\n * @param self the `Carousel` instance\n */\nconst carouselTransitionEndHandler = (self: Carousel) => {\n const { index, direction, element, slides, options } = self;\n\n // istanbul ignore else @preserve\n if (self.isAnimating) {\n const activeItem = getActiveIndex(self);\n const orientation = direction === \"left\" ? \"next\" : \"prev\";\n const directionClass = direction === \"left\" ? \"start\" : \"end\";\n\n addClass(slides[index], activeClass);\n removeClass(slides[index], `${carouselItem}-${orientation}`);\n removeClass(slides[index], `${carouselItem}-${directionClass}`);\n\n removeClass(slides[activeItem], activeClass);\n removeClass(slides[activeItem], `${carouselItem}-${directionClass}`);\n\n dispatchEvent(element, carouselSlidEvent);\n Timer.clear(element, dataBsSlide);\n\n // must check if a previous instance is disposed\n if (\n self.cycle && !getDocument(element).hidden && options.interval &&\n !self.isPaused\n ) {\n self.cycle();\n }\n }\n};\n\n/**\n * Handles the `mouseenter` events when *options.pause*\n * is set to `hover`.\n */\nfunction carouselPauseHandler(this: HTMLElement) {\n const self = getCarouselInstance(this);\n // istanbul ignore else @preserve\n if (self && !self.isPaused && !Timer.get(this, pausedClass)) {\n addClass(this, pausedClass);\n }\n}\n\n/**\n * Handles the `mouseleave` events when *options.pause*\n * is set to `hover`.\n */\nfunction carouselResumeHandler(this: HTMLElement) {\n const self = getCarouselInstance(this);\n // istanbul ignore else @preserve\n if (self && self.isPaused && !Timer.get(this, pausedClass)) {\n self.cycle();\n }\n}\n\n/**\n * Handles the `click` event for the `Carousel` indicators.\n *\n * @param e the `Event` object\n */\nfunction carouselIndicatorHandler(this: HTMLElement, e: MouseEvent) {\n e.preventDefault();\n const element = closest(this, carouselSelector) || getTargetElement(this);\n const self = element && getCarouselInstance(element);\n\n // istanbul ignore if @preserve\n if (isDisabled(this)) return;\n // istanbul ignore if @preserve\n if (!self || self.isAnimating) return;\n\n const newIndex = +(\n getAttribute(this, dataBsSlideTo) ||\n // istanbul ignore next @preserve\n 0\n );\n\n // istanbul ignore else @preserve\n if (\n this &&\n !hasClass(this, activeClass) && // event target is not active\n !Number.isNaN(newIndex)\n ) {\n // AND has the specific attribute\n self.to(newIndex); // do the slide\n }\n}\n\n/**\n * Handles the `click` event for the `Carousel` arrows.\n *\n * @param e the `Event` object\n */\nfunction carouselControlsHandler(this: HTMLElement, e: MouseEvent) {\n e.preventDefault();\n const element = closest(this, carouselSelector) || getTargetElement(this);\n const self = element && getCarouselInstance(element);\n\n // istanbul ignore if @preserve\n if (isDisabled(this)) return;\n // istanbul ignore if @preserve\n if (!self || self.isAnimating) return;\n\n const orientation = getAttribute(this, dataBsSlide);\n\n // istanbul ignore else @preserve\n if (orientation === \"next\") {\n self.next();\n } else if (orientation === \"prev\") {\n self.prev();\n }\n}\n\n/**\n * Handles the keyboard `keydown` event for the visible `Carousel` elements.\n *\n * @param e the `Event` object\n */\nconst carouselKeyHandler = (\n { code, target }: KeyboardEvent & { target: Node },\n) => {\n const doc = getDocument(target);\n const [element] = [...querySelectorAll<HTMLElement>(carouselSelector, doc)]\n .filter((x) => isElementInScrollRange(x));\n const self = getCarouselInstance(element);\n\n // istanbul ignore next @preserve\n if (\n !self || self.isAnimating || /textarea|input|select/i.test(target.nodeName)\n ) return;\n\n const RTL = isRTL(element);\n const arrowKeyNext = !RTL ? keyArrowRight : keyArrowLeft;\n const arrowKeyPrev = !RTL ? keyArrowLeft : keyArrowRight;\n\n // istanbul ignore else @preserve\n if (code === arrowKeyPrev) self.prev();\n else if (code === arrowKeyNext) self.next();\n};\n\n// CAROUSEL TOUCH HANDLERS\n// =======================\n/**\n * Prevents the `touchstart` and `dragstart` events for the `Carousel` element.\n *\n * @param e the `Event` object\n */\nfunction carouselDragHandler<T extends HTMLElement>(\n this: T,\n e: Event & (DragEvent<T> | TouchEvent<T>),\n) {\n const { target } = e;\n const self = getCarouselInstance(this);\n\n // istanbul ignore next @preserve\n if (\n self &&\n self.isTouch &&\n ((self.indicator && !self.indicator.contains(target)) ||\n !self.controls.includes(target))\n ) {\n e.stopImmediatePropagation();\n e.stopPropagation();\n e.preventDefault();\n }\n}\n\n// CAROUSEL POINTER HANDLERS\n// =========================\n/**\n * Handles the `pointerdown` event for the `Carousel` element.\n *\n * @param e the `Event` object\n */\nfunction carouselPointerDownHandler(\n this: HTMLElement,\n e: PointerEvent<HTMLElement>,\n) {\n const { target } = e;\n const self = getCarouselInstance(this);\n\n // istanbul ignore else @preserve\n if (!self || self.isAnimating || self.isTouch) return;\n\n // filter pointer event on controls & indicators\n const { controls, indicators } = self;\n // istanbul ignore else @preserve\n if (\n ![...controls, ...indicators].every((el) =>\n el === target || el.contains(target)\n )\n ) {\n startX = e.pageX;\n\n // istanbul ignore else @preserve\n if (this.contains(target)) {\n self.isTouch = true;\n toggleCarouselTouchHandlers(self, true);\n }\n }\n}\n\n/**\n * Handles the `pointermove` event for the `Carousel` element.\n *\n * @param e\n */\nconst carouselPointerMoveHandler = (e: PointerEvent<HTMLElement>) => {\n currentX = e.pageX;\n};\n\n/**\n * Handles the `pointerup` event for the `Carousel` element.\n *\n * @param e\n */\nconst carouselPointerUpHandler = (e: PointerEvent<HTMLElement>) => {\n const { target } = e;\n const doc = getDocument(target);\n const self = [...querySelectorAll(carouselSelector, doc)]\n .map((c) => getCarouselInstance(c) as Carousel)\n .find((i) => i.isTouch) as Carousel;\n\n // istanbul ignore if @preserve\n if (!self) return;\n\n const { element, index } = self;\n const RTL = isRTL(element);\n endX = e.pageX;\n\n self.isTouch = false;\n toggleCarouselTouchHandlers(self);\n\n if (\n !doc.getSelection()?.toString().length &&\n element.contains(target) &&\n Math.abs(startX - endX) > 120\n ) {\n // determine next index to slide to\n // istanbul ignore else @preserve\n if (currentX < startX) {\n self.to(index + (RTL ? -1 : 1));\n } else if (currentX > startX) {\n self.to(index + (RTL ? 1 : -1));\n }\n }\n\n // reset pointer position\n startX = 0;\n currentX = 0;\n endX = 0;\n};\n\n// CAROUSEL PRIVATE METHODS\n// ========================\n/**\n * Sets active indicator for the `Carousel` instance.\n *\n * @param self the `Carousel` instance\n * @param index the index of the new active indicator\n */\nconst activateCarouselIndicator = (self: Carousel, index: number) => {\n const { indicators } = self;\n [...indicators].forEach((x) => removeClass(x, activeClass));\n\n // istanbul ignore else @preserve\n if (self.indicators[index]) addClass(indicators[index], activeClass);\n};\n\n/**\n * Toggles the pointer event listeners for a given `Carousel` instance.\n *\n * @param self the `Carousel` instance\n * @param add when `TRUE` event listeners are added\n */\nconst toggleCarouselTouchHandlers = (self: Carousel, add?: boolean) => {\n const { element } = self;\n const action = add ? addListener : removeListener;\n action(\n getDocument(element),\n pointermoveEvent,\n carouselPointerMoveHandler,\n passiveHandler,\n );\n action(\n getDocument(element),\n pointerupEvent,\n carouselPointerUpHandler,\n passiveHandler,\n );\n};\n\n/**\n * Returns the index of the current active item.\n *\n * @param self the `Carousel` instance\n * @returns the query result\n */\nconst getActiveIndex = (self: Carousel) => {\n const { slides, element } = self;\n const activeItem = querySelector<HTMLElement>(\n `.${carouselItem}.${activeClass}`,\n element,\n );\n return activeItem ? [...slides].indexOf(activeItem) : -1;\n};\n\n// CAROUSEL DEFINITION\n// ===================\n/** Creates a new `Carousel` instance. */\nexport default class Carousel extends BaseComponent {\n static selector = carouselSelector;\n static init = carouselInitCallback;\n static getInstance = getCarouselInstance;\n declare element: HTMLElement;\n declare options: CarouselOptions;\n declare direction: \"right\" | \"left\";\n declare index: number;\n declare isTouch: boolean;\n declare slides: HTMLCollectionOf<HTMLElement>;\n declare controls: HTMLElement[];\n declare indicator: HTMLElement | null;\n declare indicators: HTMLElement[];\n\n /**\n * @param target mostly a `.carousel` element\n * @param config instance options\n */\n constructor(target: Element | string, config?: Partial<CarouselOptions>) {\n super(target, config);\n\n // initialization element\n const { element } = this;\n\n // additional properties\n this.direction = isRTL(element) ? \"right\" : \"left\";\n this.isTouch = false;\n\n // carousel elements\n // a LIVE collection is prefferable\n this.slides = getElementsByClassName(carouselItem, element);\n const { slides } = this;\n\n // invalidate when not enough items\n // no need to go further\n if (slides.length < 2) return;\n\n const activeIndex = getActiveIndex(this);\n // recover item from disposed instance\n const transitionItem = [...slides].find((s) =>\n matches(s, `.${carouselItem}-next`)\n );\n this.index = activeIndex;\n\n // external controls must be within same document context\n const doc = getDocument(element);\n\n this.controls = [\n ...querySelectorAll<HTMLElement>(`[${dataBsSlide}]`, element),\n ...querySelectorAll<HTMLElement>(\n `[${dataBsSlide}][${dataBsTarget}=\"#${element.id}\"]`,\n doc,\n ),\n ].filter((c, i, ar) => i === ar.indexOf(c));\n\n this.indicator = querySelector<HTMLElement>(\n `.${carouselString}-indicators`,\n element,\n );\n\n // a LIVE collection is preffered\n this.indicators = [\n ...(this.indicator\n ? querySelectorAll<HTMLElement>(`[${dataBsSlideTo}]`, this.indicator)\n /* istanbul ignore next @preserve */ : []),\n ...querySelectorAll<HTMLElement>(\n `[${dataBsSlideTo}][${dataBsTarget}=\"#${element.id}\"]`,\n doc,\n ),\n ].filter((c, i, ar) => i === ar.indexOf(c));\n\n // set JavaScript and DATA API options\n const { options } = this;\n\n // don't use TRUE as interval, it's actually 0, use the default 5000ms better\n this.options.interval = options.interval === true\n ? carouselDefaults.interval\n : options.interval;\n\n // set first slide active if none\n // istanbul ignore next @preserve - impossible to test\n if (transitionItem) {\n this.index = [...slides].indexOf(transitionItem);\n } else if (activeIndex < 0) {\n this.index = 0;\n addClass(slides[0], activeClass);\n if (this.indicators.length) activateCarouselIndicator(this, 0);\n }\n\n // istanbul ignore else @preserve\n if (this.indicators.length) activateCarouselIndicator(this, this.index);\n\n // attach event handlers\n this._toggleEventListeners(true);\n\n // start to cycle if interval is set\n if (options.interval) this.cycle();\n }\n\n /**\n * Returns component name string.\n */\n get name() {\n return carouselComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return carouselDefaults;\n }\n\n /**\n * Check if instance is paused.\n */\n get isPaused() {\n return hasClass(this.element, pausedClass);\n }\n\n /**\n * Check if instance is animating.\n */\n get isAnimating() {\n return querySelector(\n `.${carouselItem}-next,.${carouselItem}-prev`,\n this.element,\n ) !== null;\n }\n\n // CAROUSEL PUBLIC METHODS\n // =======================\n /** Slide automatically through items. */\n cycle() {\n const { element, options, isPaused, index } = this;\n\n Timer.clear(element, carouselString);\n if (isPaused) {\n Timer.clear(element, pausedClass);\n removeClass(element, pausedClass);\n }\n\n Timer.set(\n element,\n () => {\n // it's very important to check self.element\n // where instance might have been disposed\n // istanbul ignore else @preserve\n if (\n this.element && !this.isPaused && !this.isTouch &&\n isElementInScrollRange(element)\n ) {\n this.to(index + 1);\n }\n },\n options.interval as number,\n carouselString,\n );\n }\n\n /** Pause the automatic cycle. */\n pause() {\n const { element, options } = this;\n // istanbul ignore else @preserve\n if (this.isPaused || !options.interval) return;\n\n addClass(element, pausedClass);\n Timer.set(\n element,\n () => {\n /* ESLint is now happy */\n },\n 1,\n pausedClass,\n );\n }\n\n /** Slide to the next item. */\n next() {\n // istanbul ignore else @preserve\n if (!this.isAnimating) {\n this.to(this.index + 1);\n }\n }\n\n /** Slide to the previous item. */\n prev() {\n // istanbul ignore else @preserve\n if (!this.isAnimating) {\n this.to(this.index - 1);\n }\n }\n\n /**\n * Jump to the item with the `idx` index.\n *\n * @param idx the index of the item to jump to\n */\n to(idx: number) {\n const { element, slides, options } = this;\n const activeItem = getActiveIndex(this);\n const RTL = isRTL(element);\n let next = idx;\n\n // when controled via methods, make sure to check again\n // first return if we're on the same item #227\n // `to()` must be SPAM protected by Timer\n if (\n this.isAnimating || activeItem === next ||\n Timer.get(element, dataBsSlide)\n ) return;\n\n // determine transition direction\n // istanbul ignore else @preserve\n if (\n activeItem < next || (activeItem === 0 && next === slides.length - 1)\n ) {\n this.direction = RTL ? \"right\" : \"left\"; // next\n } else if (\n activeItem > next || (activeItem === slides.length - 1 && next === 0)\n ) {\n this.direction = RTL ? \"left\" : \"right\"; // prev\n }\n const { direction } = this;\n\n // find the right next index\n if (next < 0) {\n next = slides.length - 1;\n } else if (next >= slides.length) {\n next = 0;\n }\n\n // orientation, class name, eventProperties\n const orientation = direction === \"left\" ? \"next\" : \"prev\";\n const directionClass = direction === \"left\" ? \"start\" : \"end\";\n\n const eventProperties = {\n relatedTarget: slides[next],\n from: activeItem,\n to: next,\n direction,\n };\n\n // update event properties\n ObjectAssign(carouselSlideEvent, eventProperties);\n ObjectAssign(carouselSlidEvent, eventProperties);\n\n // discontinue when prevented\n dispatchEvent(element, carouselSlideEvent);\n if (carouselSlideEvent.defaultPrevented) return;\n\n // update index\n this.index = next;\n activateCarouselIndicator(this, next);\n\n if (\n getElementTransitionDuration(slides[next]) &&\n hasClass(element, \"slide\")\n ) {\n Timer.set(\n element,\n () => {\n addClass(slides[next], `${carouselItem}-${orientation}`);\n reflow(slides[next]);\n addClass(slides[next], `${carouselItem}-${directionClass}`);\n addClass(slides[activeItem], `${carouselItem}-${directionClass}`);\n\n // the instance might get diposed mid-animation\n emulateTransitionEnd(\n slides[next],\n () =>\n this.slides && this.slides.length &&\n carouselTransitionEndHandler(this),\n );\n },\n 0,\n dataBsSlide,\n );\n } else {\n addClass(slides[next], activeClass);\n removeClass(slides[activeItem], activeClass);\n\n Timer.set(\n element,\n () => {\n Timer.clear(element, dataBsSlide);\n // check for element, might have been disposed\n // istanbul ignore else @preserve\n if (element && options.interval && !this.isPaused) {\n this.cycle();\n }\n\n dispatchEvent(element, carouselSlidEvent);\n },\n 0,\n dataBsSlide,\n );\n }\n }\n\n /**\n * Toggles all event listeners for the `Carousel` instance.\n *\n * @param add when `TRUE` event listeners are added\n */\n _toggleEventListeners = (add?: boolean) => {\n const { element, options, slides, controls, indicators } = this;\n const { touch, pause, interval, keyboard } = options;\n const action = add ? addListener : removeListener;\n\n if (pause && interval) {\n action(element, mouseenterEvent, carouselPauseHandler);\n action(element, mouseleaveEvent, carouselResumeHandler);\n }\n\n if (touch && slides.length > 2) {\n action(\n element,\n pointerdownEvent,\n carouselPointerDownHandler,\n passiveHandler,\n );\n action(element, touchstartEvent, carouselDragHandler, { passive: false });\n action(element, dragstartEvent, carouselDragHandler, { passive: false });\n }\n\n // istanbul ignore else @preserve\n if (controls.length) {\n controls.forEach((arrow) => {\n action(arrow, mouseclickEvent, carouselControlsHandler);\n });\n }\n\n // istanbul ignore else @preserve\n if (indicators.length) {\n indicators.forEach((indicator) => {\n action(indicator, mouseclickEvent, carouselIndicatorHandler);\n });\n }\n\n if (keyboard) {\n action(getDocument(element), keydownEvent, carouselKeyHandler);\n }\n };\n\n /** Remove `Carousel` component from target. */\n dispose() {\n const { isAnimating } = this;\n\n const clone = {\n ...this,\n isAnimating,\n };\n this._toggleEventListeners();\n super.dispose();\n\n // istanbul ignore next @preserve - impossible to test in playwright\n if (clone.isAnimating) {\n emulateTransitionEnd(clone.slides[clone.index], () => {\n carouselTransitionEndHandler(clone);\n });\n }\n }\n}\n","/**\n * Global namespace for most components `collapsing` class.\n * As used by `Collapse` / `Tab`.\n */\nconst collapsingClass = \"collapsing\";\nexport default collapsingClass;\n","/** @type {string} */\nconst collapseString = \"collapse\";\nexport default collapseString;\n","/** @type {string} */\nconst collapseComponent = \"Collapse\";\nexport default collapseComponent;\n","/* Native JavaScript for Bootstrap 5 | Collapse\n----------------------------------------------- */\nimport {\n addClass,\n ariaExpanded,\n closest,\n createCustomEvent,\n dispatchEvent,\n emulateTransitionEnd,\n getDocument,\n getInstance,\n hasClass,\n isHTMLElement,\n isString,\n mouseclickEvent,\n MouseEvent,\n noop,\n querySelector,\n querySelectorAll,\n reflow,\n removeClass,\n setAttribute,\n setElementStyle,\n Timer,\n} from \"@thednp/shorty\";\n\nimport { addListener, removeListener } from \"@thednp/event-listener\";\n\nimport dataBsToggle from \"~/strings/dataBsToggle\";\nimport collapsingClass from \"~/strings/collapsingClass\";\nimport showClass from \"~/strings/showClass\";\nimport collapseString from \"~/strings/collapseString\";\nimport collapseComponent from \"~/strings/collapseComponent\";\nimport getTargetElement from \"~/util/getTargetElement\";\nimport BaseComponent from \"./base-component\";\nimport type { CollapseEvent, CollapseOptions } from \"~/interface/collapse\";\nimport isDisabled from \"~/util/isDisabled\";\n\n// COLLAPSE GC\n// ===========\nconst collapseSelector = `.${collapseString}`;\nconst collapseToggleSelector = `[${dataBsToggle}=\"${collapseString}\"]`;\nconst collapseDefaults = { parent: null };\n\n/**\n * Static method which returns an existing `Collapse` instance associated\n * to a target `Element`.\n */\nconst getCollapseInstance = (element: Element) =>\n getInstance<Collapse>(element, collapseComponent);\n\n/**\n * A `Collapse` initialization callback.\n */\nconst collapseInitCallback = (element: Element) => new Collapse(element);\n\n// COLLAPSE CUSTOM EVENTS\n// ======================\nconst showCollapseEvent = createCustomEvent<\n Record<string, never>,\n CollapseEvent\n>(`show.bs.${collapseString}`);\nconst shownCollapseEvent = createCustomEvent<\n Record<string, never>,\n CollapseEvent\n>(`shown.bs.${collapseString}`);\nconst hideCollapseEvent = createCustomEvent<\n Record<string, never>,\n CollapseEvent\n>(`hide.bs.${collapseString}`);\nconst hiddenCollapseEvent = createCustomEvent<\n Record<string, never>,\n CollapseEvent\n>(`hidden.bs.${collapseString}`);\n\n// COLLAPSE PRIVATE METHODS\n// ========================\n/**\n * Expand the designated `Element`.\n *\n * @param self the `Collapse` instance\n */\nconst expandCollapse = (self: Collapse) => {\n const { element, parent, triggers } = self;\n\n dispatchEvent(element, showCollapseEvent);\n if (!showCollapseEvent.defaultPrevented) {\n Timer.set(element, noop, 17);\n if (parent) Timer.set(parent, noop, 17);\n\n addClass(element, collapsingClass);\n removeClass(element, collapseString);\n\n setElementStyle(element, { height: `${element.scrollHeight}px` });\n\n emulateTransitionEnd(element, () => {\n Timer.clear(element);\n if (parent) Timer.clear(parent);\n\n triggers.forEach((btn) => setAttribute(btn, ariaExpanded, \"true\"));\n\n removeClass(element, collapsingClass);\n addClass(element, collapseString);\n addClass(element, showClass);\n\n setElementStyle(element, { height: \"\" });\n\n dispatchEvent(element, shownCollapseEvent);\n });\n }\n};\n\n/**\n * Collapse the designated `Element`.\n *\n * @param self the `Collapse` instance\n */\nconst collapseContent = (self: Collapse) => {\n const { element, parent, triggers } = self;\n\n dispatchEvent(element, hideCollapseEvent);\n\n if (!hideCollapseEvent.defaultPrevented) {\n Timer.set(element, noop, 17);\n if (parent) Timer.set(parent, noop, 17);\n\n setElementStyle(element, { height: `${element.scrollHeight}px` });\n\n removeClass(element, collapseString);\n removeClass(element, showClass);\n addClass(element, collapsingClass);\n\n reflow(element as HTMLElement);\n setElementStyle(element, { height: \"0px\" });\n\n emulateTransitionEnd(element, () => {\n Timer.clear(element);\n // istanbul ignore else @preserve\n if (parent) Timer.clear(parent);\n\n triggers.forEach((btn) => setAttribute(btn, ariaExpanded, \"false\"));\n\n removeClass(element, collapsingClass);\n addClass(element, collapseString);\n\n setElementStyle(element, { height: \"\" });\n\n dispatchEvent(element, hiddenCollapseEvent);\n });\n }\n};\n\n// COLLAPSE EVENT HANDLER\n// ======================\n/**\n * Handles the `click` event for the `Collapse` instance.\n *\n * @param e the `Event` object\n */\nconst collapseClickHandler = (e: MouseEvent<HTMLElement>) => {\n const { target } = e; // our target is `HTMLElement`\n const trigger = target &&\n closest(target, collapseToggleSelector);\n const element = trigger && getTargetElement(trigger);\n const self = element && getCollapseInstance(element);\n\n // istanbul ignore if @preserve\n if (trigger && isDisabled(trigger)) return;\n // istanbul ignore if @preserve\n if (!self) return;\n\n self.toggle();\n // event target is anchor link #398\n if (trigger?.tagName === \"A\") e.preventDefault();\n};\n\n// COLLAPSE DEFINITION\n// ===================\n\n/** Returns a new `Colapse` instance. */\nexport default class Collapse extends BaseComponent {\n static selector = collapseSelector;\n static init = collapseInitCallback;\n static getInstance = getCollapseInstance;\n declare element: HTMLElement;\n declare options: CollapseOptions;\n declare parent: Element | null;\n declare triggers: Element[];\n\n /**\n * @param target and `Element` that matches the selector\n * @param config instance options\n */\n constructor(target: Element | string, config?: Partial<CollapseOptions>) {\n super(target, config);\n\n // initialization element\n const { element, options } = this;\n const doc = getDocument(element);\n\n // set triggering elements\n this.triggers = [...querySelectorAll(collapseToggleSelector, doc)].filter(\n (btn) => getTargetElement(btn) === element,\n );\n\n // set parent accordion\n this.parent = isHTMLElement(options.parent)\n ? options.parent\n : isString(options.parent)\n ? getTargetElement(element) || querySelector(options.parent, doc)\n : null;\n\n // add event listeners\n this._toggleEventListeners(true);\n }\n\n /**\n * Returns component name string.\n */\n get name() {\n return collapseComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return collapseDefaults;\n }\n\n // COLLAPSE PUBLIC METHODS\n // =======================\n /** Hides the collapse. */\n hide() {\n const { triggers, element } = this;\n // istanbul ignore else @preserve\n if (!Timer.get(element)) {\n collapseContent(this);\n // istanbul ignore else @preserve\n if (triggers.length) {\n triggers.forEach((btn) => addClass(btn, `${collapseString}d`));\n }\n }\n }\n\n /** Shows the collapse. */\n show() {\n const { element, parent, triggers } = this;\n let activeCollapse;\n let activeCollapseInstance;\n\n if (parent) {\n activeCollapse = [\n ...querySelectorAll(`.${collapseString}.${showClass}`, parent),\n ].find((i) => getCollapseInstance(i));\n activeCollapseInstance = activeCollapse &&\n getCollapseInstance(activeCollapse);\n }\n\n if ((!parent || !Timer.get(parent)) && !Timer.get(element)) {\n if (activeCollapseInstance && activeCollapse !== element) {\n collapseContent(activeCollapseInstance);\n activeCollapseInstance.triggers.forEach((btn) => {\n addClass(btn, `${collapseString}d`);\n });\n }\n\n expandCollapse(this);\n // istanbul ignore else @preserve\n if (triggers.length) {\n triggers.forEach((btn) => removeClass(btn, `${collapseString}d`));\n }\n }\n }\n\n /** Toggles the visibility of the collapse. */\n toggle() {\n if (!hasClass(this.element, showClass)) this.show();\n else this.hide();\n }\n\n /**\n * Toggles on/off the event listener(s) of the `Collapse` instance.\n *\n * @param add when `true`, the event listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { triggers } = this;\n\n // istanbul ignore else @preserve\n if (triggers.length) {\n triggers.forEach((btn) => {\n action(btn, mouseclickEvent, collapseClickHandler);\n });\n }\n };\n\n /** Remove the `Collapse` component from the target `Element`. */\n dispose() {\n this._toggleEventListeners();\n\n super.dispose();\n }\n}\n","const p = (e) => e != null && typeof e == \"object\" || !1, d = (e) => p(e) && typeof e.nodeType == \"number\" && [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].some(\n (t) => e.nodeType === t\n) || !1, a = (e) => d(e) && e.nodeType === 1 || !1, k = (e) => typeof e == \"function\" || !1, v = \"1.0.7\", u = \"PositionObserver Error\";\nclass y {\n entries;\n static version = v;\n _tick;\n _root;\n _callback;\n /**\n * The constructor takes two arguments, a `callback`, which is called\n * whenever the position of an observed element changes and an `options` object.\n * The callback function should take an array of `PositionObserverEntry` objects\n * as its only argument, but it's not required.\n *\n * @param callback the callback that applies to all targets of this observer\n * @param options the options of this observer\n */\n constructor(t, i) {\n if (!k(t))\n throw new Error(`${u}: ${t} is not a function.`);\n this.entries = /* @__PURE__ */ new Map(), this._callback = t, this._root = a(i?.root) ? i.root : document?.documentElement, this._tick = 0;\n }\n /**\n * Start observing the position of the specified element.\n * If the element is not currently attached to the DOM,\n * it will NOT be added to the entries.\n *\n * @param target an `Element` target\n */\n observe = (t) => {\n if (!a(t))\n throw new Error(\n `${u}: ${t} is not an instance of Element.`\n );\n this._root.contains(t) && this._new(t).then(({ boundingClientRect: i }) => {\n if (i && !this.getEntry(t)) {\n const { clientWidth: s, clientHeight: n } = this._root;\n this.entries.set(t, {\n target: t,\n boundingClientRect: i,\n clientWidth: s,\n clientHeight: n\n });\n }\n this._tick || (this._tick = requestAnimationFrame(this._runCallback));\n });\n };\n /**\n * Stop observing the position of the specified element.\n *\n * @param target an `Element` target\n */\n unobserve = (t) => {\n this.entries.has(t) && this.entries.delete(t);\n };\n /**\n * Private method responsible for all the heavy duty,\n * the observer's runtime.\n */\n _runCallback = () => {\n if (!this.entries.size) return;\n const { clientWidth: t, clientHeight: i } = this._root, s = new Promise((n) => {\n const o = [];\n this.entries.forEach(\n ({\n target: r,\n boundingClientRect: c,\n clientWidth: _,\n clientHeight: f\n }) => {\n this._root.contains(r) && this._new(r).then(({ boundingClientRect: h, isIntersecting: m }) => {\n if (!m) return;\n const { left: b, top: w } = h;\n if (c.top !== w || c.left !== b || _ !== t || f !== i) {\n const l = {\n target: r,\n boundingClientRect: h,\n clientHeight: i,\n clientWidth: t\n };\n this.entries.set(r, l), o.push(l);\n }\n });\n }\n ), n(o);\n });\n this._tick = requestAnimationFrame(async () => {\n const n = await s;\n n.length && this._callback(n, this), this._runCallback();\n });\n };\n /**\n * Check intersection status and resolve it\n * right away.\n *\n * @param target an `Element` target\n */\n _new = (t) => new Promise((i) => {\n new IntersectionObserver(\n ([n], o) => {\n o.disconnect(), i(n);\n }\n ).observe(t);\n });\n /**\n * Find the entry for a given target.\n *\n * @param target an `HTMLElement` target\n */\n getEntry = (t) => this.entries.get(t);\n /**\n * Immediately stop observing all elements.\n */\n disconnect = () => {\n cancelAnimationFrame(this._tick), this.entries.clear(), this._tick = 0;\n };\n}\nexport {\n y as default\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * Global namespace for `Dropdown` types / classes.\n */\nconst dropdownMenuClasses = [\"dropdown\", \"dropup\", \"dropstart\", \"dropend\"];\nexport default dropdownMenuClasses;\n","/** @type {string} */\nconst dropdownComponent = \"Dropdown\";\nexport default dropdownComponent;\n","/**\n * Global namespace for `.dropdown-menu`.\n */\nconst dropdownMenuClass = \"dropdown-menu\";\nexport default dropdownMenuClass;\n","import { closest, getAttribute, hasAttribute } from \"@thednp/shorty\";\n\n/**\n * Checks if an *event.target* or its parent has an `href=\"#\"` value.\n * We need to prevent jumping around onclick, don't we?\n *\n * @param element the target element\n * @returns the query result\n */\nconst isEmptyAnchor = (element: HTMLElement) => {\n // `EventTarget` must be `HTMLElement`\n const parentAnchor = closest(element, \"A\");\n return (\n (element.tagName === \"A\" &&\n // anchor href starts with #\n hasAttribute(element, \"href\") &&\n (getAttribute(element, \"href\"))?.slice(-1) === \"#\") ||\n // OR a child of an anchor with href starts with #\n (parentAnchor &&\n hasAttribute(parentAnchor, \"href\") &&\n (getAttribute(parentAnchor, \"href\"))?.slice(-1) === \"#\")\n );\n};\nexport default isEmptyAnchor;\n","/* Native JavaScript for Bootstrap 5 | Dropdown\n----------------------------------------------- */\nimport {\n addClass,\n ariaExpanded,\n closest,\n createCustomEvent,\n CSS4Declaration,\n dispatchEvent,\n focus,\n focusEvent,\n getAttribute,\n getBoundingClientRect,\n getDocument,\n getDocumentElement,\n getElementsByClassName,\n getElementStyle,\n getInstance,\n hasClass,\n isHTMLElement,\n isRTL,\n keyArrowDown,\n keyArrowUp,\n KeyboardEvent,\n keydownEvent,\n keyEscape,\n keyupEvent,\n mouseclickEvent,\n mousedownEvent,\n MouseEvent,\n ObjectAssign,\n removeClass,\n setAttribute,\n setElementStyle,\n} from \"@thednp/shorty\";\n\nimport { addListener, removeListener } from \"@thednp/event-listener\";\nimport PositionObserver from \"@thednp/position-observer\";\n\nimport showClass from \"~/strings/showClass\";\nimport dataBsToggle from \"~/strings/dataBsToggle\";\nimport dropdownClasses from \"~/strings/dropdownClasses\";\nimport dropdownComponent from \"~/strings/dropdownComponent\";\nimport dropdownMenuClass from \"~/strings/dropdownMenuClass\";\nimport isEmptyAnchor from \"~/util/isEmptyAnchor\";\nimport isDisabled from \"~/util/isDisabled\";\nimport BaseComponent from \"./base-component\";\nimport type { DropdownEvent, DropdownOptions } from \"~/interface/dropdown\";\n\n// DROPDOWN PRIVATE GC\n// ===================\nconst [dropdownString, dropupString, dropstartString, dropendString] =\n dropdownClasses;\nconst dropdownSelector = `[${dataBsToggle}=\"${dropdownString}\"]`;\n\n/**\n * Static method which returns an existing `Dropdown` instance associated\n * to a target `Element`.\n */\nconst getDropdownInstance = (element: Element) =>\n getInstance<Dropdown>(element, dropdownComponent);\n\n/**\n * A `Dropdown` initialization callback.\n */\nconst dropdownInitCallback = (element: Element) => new Dropdown(element);\n\n// DROPDOWN PRIVATE GC\n// ===================\n// const dropdownMenuStartClass = `${dropdownMenuClass}-start`;\nconst dropdownMenuEndClass = `${dropdownMenuClass}-end`;\nconst verticalClass = [dropdownString, dropupString];\nconst horizontalClass = [dropstartString, dropendString];\nconst menuFocusTags = [\"A\", \"BUTTON\"];\n\nconst dropdownDefaults = {\n offset: 5, // [number] 5(px)\n display: \"dynamic\", // [dynamic|static]\n};\n\ntype DropdownEventProps = { relatedTarget: Element & EventTarget };\n\n// DROPDOWN CUSTOM EVENTS\n// ======================\nconst showDropdownEvent = createCustomEvent<DropdownEventProps, DropdownEvent>(\n `show.bs.${dropdownString}`,\n);\nconst shownDropdownEvent = createCustomEvent<DropdownEventProps, DropdownEvent>(\n `shown.bs.${dropdownString}`,\n);\nconst hideDropdownEvent = createCustomEvent<DropdownEventProps, DropdownEvent>(\n `hide.bs.${dropdownString}`,\n);\nconst hiddenDropdownEvent = createCustomEvent<\n DropdownEventProps,\n DropdownEvent\n>(`hidden.bs.${dropdownString}`);\nconst updatedDropdownEvent = createCustomEvent<\n DropdownEventProps,\n DropdownEvent\n>(`updated.bs.${dropdownString}`);\n\n// DROPDOWN PRIVATE METHODS\n// ========================\n/**\n * Apply specific style or class names to a `.dropdown-menu` to automatically\n * accomodate the layout and the page scroll.\n *\n * @param self the `Dropdown` instance\n */\nconst styleDropdown = (self: Dropdown) => {\n const { element, menu, parentElement, options } = self;\n const { offset } = options;\n // don't apply any style on mobile view\n // istanbul ignore if @preserve: this test requires a navbar\n if (getElementStyle(menu, \"position\") === \"static\") return;\n\n const RTL = isRTL(element);\n const menuEnd = hasClass(menu, dropdownMenuEndClass);\n\n // reset menu offset and position\n const resetProps = [\"margin\", \"top\", \"bottom\", \"left\", \"right\"];\n resetProps.forEach((p) => {\n const style: { [key: string]: string } = {};\n style[p] = \"\";\n setElementStyle(menu, style);\n });\n\n // set initial position class\n // take into account .btn-group parent as .dropdown\n // this requires navbar/btn-group/input-group\n let positionClass = dropdownClasses.find((c) => hasClass(parentElement, c)) ||\n /* istanbul ignore next @preserve: fallback position */\n dropdownString;\n\n const dropdownMargin: { [key: string]: number[] } = {\n dropdown: [offset, 0, 0],\n dropup: [0, 0, offset],\n dropstart: RTL ? [-1, 0, 0, offset] : [-1, offset, 0],\n dropend: RTL ? [-1, offset, 0] : [-1, 0, 0, offset],\n };\n\n const dropdownPosition: { [key: string]: Partial<CSS4Declaration> } = {\n dropdown: { top: \"100%\" },\n dropup: { top: \"auto\", bottom: \"100%\" },\n dropstart: RTL\n ? { left: \"100%\", right: \"auto\" }\n : { left: \"auto\", right: \"100%\" },\n dropend: RTL\n ? { left: \"auto\", right: \"100%\" }\n : { left: \"100%\", right: \"auto\" },\n menuStart: RTL\n ? { right: \"0\", left: \"auto\" }\n : { right: \"auto\", left: \"0\" },\n menuEnd: RTL ? { right: \"auto\", left: \"0\" } : { right: \"0\", left: \"auto\" },\n };\n\n const { offsetWidth: menuWidth, offsetHeight: menuHeight } = menu;\n\n const { clientWidth, clientHeight } = getDocumentElement(element);\n const {\n left: targetLeft,\n top: targetTop,\n width: targetWidth,\n height: targetHeight,\n } = getBoundingClientRect(element);\n\n // dropstart | dropend\n const leftFullExceed = targetLeft - menuWidth - offset < 0;\n // dropend\n const rightFullExceed =\n targetLeft + menuWidth + targetWidth + offset >= clientWidth;\n // dropstart | dropend\n const bottomExceed = targetTop + menuHeight + offset >= clientHeight;\n // dropdown\n const bottomFullExceed =\n targetTop + menuHeight + targetHeight + offset >= clientHeight;\n // dropup\n const topExceed = targetTop - menuHeight - offset < 0;\n // dropdown / dropup\n const leftExceed = ((!RTL && menuEnd) || (RTL && !menuEnd)) &&\n targetLeft + targetWidth - menuWidth < 0;\n const rightExceed = ((RTL && menuEnd) || (!RTL && !menuEnd)) &&\n targetLeft + menuWidth >= clientWidth;\n\n // recompute position\n // handle RTL as well\n if (\n horizontalClass.includes(positionClass) && leftFullExceed &&\n rightFullExceed\n ) {\n positionClass = dropdownString;\n }\n if (\n positionClass === dropstartString &&\n (!RTL ? leftFullExceed : rightFullExceed)\n ) {\n positionClass = dropendString;\n }\n if (\n positionClass === dropendString &&\n (RTL ? leftFullExceed : rightFullExceed)\n ) {\n positionClass = dropstartString;\n }\n if (positionClass === dropupString && topExceed && !bottomFullExceed) {\n positionClass = dropdownString;\n }\n if (positionClass === dropdownString && bottomFullExceed && !topExceed) {\n positionClass = dropupString;\n }\n\n // override position for horizontal classes\n if (horizontalClass.includes(positionClass) && bottomExceed) {\n ObjectAssign(dropdownPosition[positionClass], {\n top: \"auto\",\n bottom: 0,\n });\n }\n\n // override position for vertical classes\n if (verticalClass.includes(positionClass) && (leftExceed || rightExceed)) {\n // don't realign when menu is wider than window\n // in both RTL and non-RTL readability is KING\n let posAjust:\n | { left: \"auto\" | number; right: \"auto\" | number }\n | undefined = { left: \"auto\", right: \"auto\" };\n /* istanbul ignore else @preserve */\n if (!leftExceed && rightExceed && !RTL) {\n posAjust = { left: \"auto\", right: 0 };\n }\n /* istanbul ignore else @preserve */\n if (leftExceed && !rightExceed && RTL) {\n posAjust = { left: 0, right: \"auto\" };\n }\n /* istanbul ignore else @preserve */\n if (posAjust) {\n ObjectAssign(dropdownPosition[positionClass], posAjust);\n }\n }\n\n const margins: number[] = dropdownMargin[positionClass];\n setElementStyle(menu, {\n ...dropdownPosition[positionClass],\n margin: `${margins.map((x) => (x ? `${x}px` : x)).join(\" \")}`,\n });\n\n // override dropdown-menu-start | dropdown-menu-end\n if (verticalClass.includes(positionClass) && menuEnd) {\n // istanbul ignore else @preserve\n if (menuEnd) {\n const endAdjust = (!RTL && leftExceed) || (RTL && rightExceed)\n ? \"menuStart\"\n : /* istanbul ignore next @preserve */ \"menuEnd\";\n setElementStyle(menu, dropdownPosition[endAdjust]);\n }\n }\n // trigger updated event\n dispatchEvent(parentElement, updatedDropdownEvent);\n};\n\n/**\n * Returns an `Array` of focusable items in the given dropdown-menu.\n *\n * @param menu the target menu\n * @returns all children of the dropdown menu\n */\nconst getMenuItems = (menu: HTMLElement) => {\n return Array.from(menu.children)\n .map((c) => {\n if (c && menuFocusTags.includes(c.tagName)) return c as HTMLElement;\n const { firstElementChild } = c;\n if (\n firstElementChild && menuFocusTags.includes(firstElementChild.tagName)\n ) {\n return firstElementChild as HTMLElement;\n }\n return null;\n })\n .filter((c) => c);\n};\n\n/**\n * Toggles on/off the listeners for the events that close the dropdown\n * as well as event that request a new position for the dropdown.\n *\n * @param {Dropdown} self the `Dropdown` instance\n */\nconst toggleDropdownDismiss = (self: Dropdown) => {\n const { element, options, menu } = self;\n const action = self.open ? addListener : removeListener;\n const doc = getDocument(element);\n\n action(doc, mouseclickEvent, dropdownDismissHandler);\n action(doc, focusEvent, dropdownDismissHandler);\n action(doc, keydownEvent, dropdownPreventScroll);\n action(doc, keyupEvent, dropdownKeyHandler);\n\n // istanbul ignore else @preserve\n if (options.display === \"dynamic\") {\n if (self.open) self._observer.observe(menu);\n else self._observer.disconnect();\n }\n};\n\n/**\n * Returns the currently open `.dropdown` element.\n *\n * @param element target\n * @returns the query result\n */\nconst getCurrentOpenDropdown = (\n element: Element,\n): Element | undefined => {\n const currentParent = [...dropdownClasses, \"btn-group\", \"input-group\"]\n .map((c) =>\n getElementsByClassName(`${c} ${showClass}`, getDocument(element))\n )\n .find((x) => x.length);\n\n if (currentParent && currentParent.length) {\n return [...(currentParent[0].children as HTMLCollectionOf<Element>)]\n .find((x) =>\n dropdownClasses.some((c) => c === getAttribute(x, dataBsToggle))\n );\n }\n return undefined;\n};\n\n// DROPDOWN EVENT HANDLERS\n// =======================\n/**\n * Handles the `click` event for the `Dropdown` instance.\n *\n * @param e event object\n */\nconst dropdownDismissHandler = (e: MouseEvent) => {\n const { target, type } = e;\n\n // istanbul ignore if @preserve\n if (!isHTMLElement(target)) return;\n\n // some weird FF bug #409\n const element = getCurrentOpenDropdown(target);\n const self = element && getDropdownInstance(element);\n\n // istanbul ignore if @preserve\n if (!self) return;\n\n const { parentElement, menu } = self;\n\n const isForm = parentElement &&\n parentElement.contains(target) &&\n (target.tagName === \"form\" || closest(target, \"form\") !== null);\n\n if (\n [mouseclickEvent, mousedownEvent].includes(type) &&\n isEmptyAnchor(target)\n ) {\n e.preventDefault();\n }\n\n // istanbul ignore else @preserve\n if (\n !isForm && type !== focusEvent && target !== element && target !== menu\n ) {\n self.hide();\n }\n};\n\n/**\n * Handles `click` event listener for `Dropdown`.\n *\n * @param e event object\n */\nfunction dropdownClickHandler(this: HTMLElement, e: MouseEvent<HTMLElement>) {\n const self = getDropdownInstance(this);\n\n // istanbul ignore if @preserve\n if (isDisabled(this)) return;\n // istanbul ignore if @preserve\n if (!self) return;\n\n e.stopPropagation();\n self.toggle();\n // istanbul ignore else @preserve\n if (isEmptyAnchor(this)) e.preventDefault();\n}\n\n/**\n * Prevents scroll when dropdown-menu is visible.\n *\n * @param e event object\n */\nconst dropdownPreventScroll = (e: KeyboardEvent) => {\n // istanbul ignore else @preserve\n if ([keyArrowDown, keyArrowUp].includes(e.code)) e.preventDefault();\n};\n\n/**\n * Handles keyboard `keydown` events for `Dropdown`.\n *\n * @param e keyboard key\n */\nfunction dropdownKeyHandler(this: Element, e: KeyboardEvent) {\n const { code } = e;\n const element = getCurrentOpenDropdown(this) as HTMLElement;\n /* istanbul ignore if @preserve */\n if (!element) return;\n\n const self = getDropdownInstance(element);\n const { activeElement } = getDocument(element) as Document & {\n activeElement: HTMLElement;\n };\n\n // istanbul ignore if @preserve\n if (!self || !activeElement) return;\n\n const { menu, open } = self;\n const menuItems = getMenuItems(menu);\n\n // arrow up & down\n if (\n menuItems && menuItems.length && [keyArrowDown, keyArrowUp].includes(code)\n ) {\n let idx = menuItems.indexOf(activeElement);\n // istanbul ignore else @preserve\n if (activeElement === element) {\n idx = 0;\n } else if (code === keyArrowUp) {\n idx = idx > 1 ? idx - 1 : 0;\n } else if (code === keyArrowDown) {\n idx = idx < menuItems.length - 1 ? idx + 1 : idx;\n }\n // istanbul ignore else @preserve\n if (menuItems[idx]) focus(menuItems[idx] as HTMLElement);\n }\n\n if (keyEscape === code && open) {\n self.toggle();\n focus(element);\n }\n}\n\n// DROPDOWN DEFINITION\n// ===================\n/** Returns a new Dropdown instance. */\nexport default class Dropdown extends BaseComponent {\n static selector = dropdownSelector;\n static init = dropdownInitCallback;\n static getInstance = getDropdownInstance;\n declare element: HTMLElement;\n declare options: DropdownOptions;\n declare open: boolean;\n declare parentElement: HTMLElement;\n declare menu: HTMLElement;\n declare _observer: PositionObserver;\n\n /**\n * @param target Element or string selector\n * @param config the instance options\n */\n constructor(target: Element | string, config?: Partial<DropdownOptions>) {\n super(target, config);\n\n // initialization element\n const { parentElement } = this.element;\n const [menu] = getElementsByClassName<HTMLElement>(\n dropdownMenuClass,\n parentElement as ParentNode,\n );\n\n // invalidate when dropdown-menu is missing\n // istanbul ignore if @preserve\n if (!menu) return;\n\n // set targets\n this.parentElement = parentElement as HTMLElement;\n this.menu = menu;\n this._observer = new PositionObserver(\n () => styleDropdown(this),\n );\n\n // add event listener\n this._toggleEventListeners(true);\n }\n\n /**\n * Returns component name string.\n */\n get name() {\n return dropdownComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return dropdownDefaults;\n }\n\n // DROPDOWN PUBLIC METHODS\n // =======================\n /** Shows/hides the dropdown menu to the user. */\n toggle() {\n if (this.open) this.hide();\n else this.show();\n }\n\n /** Shows the dropdown menu to the user. */\n show() {\n const { element, open, menu, parentElement } = this;\n\n // istanbul ignore if @preserve\n if (open) return;\n const currentElement = getCurrentOpenDropdown(element);\n const currentInstance = currentElement &&\n getDropdownInstance(currentElement);\n if (currentInstance) currentInstance.hide();\n\n // dispatch event\n [showDropdownEvent, shownDropdownEvent, updatedDropdownEvent].forEach(\n (e) => {\n e.relatedTarget = element;\n },\n );\n\n dispatchEvent(parentElement, showDropdownEvent);\n // istanbul ignore if @preserve\n if (showDropdownEvent.defaultPrevented) return;\n\n addClass(menu, showClass);\n addClass(parentElement, showClass);\n setAttribute(element, ariaExpanded, \"true\");\n\n // change menu position\n styleDropdown(this);\n\n this.open = !open;\n\n focus(element); // focus the element\n toggleDropdownDismiss(this);\n dispatchEvent(parentElement, shownDropdownEvent);\n }\n\n /** Hides the dropdown menu from the user. */\n hide() {\n const { element, open, menu, parentElement } = this;\n\n // istanbul ignore if @preserve\n if (!open) return;\n\n [hideDropdownEvent, hiddenDropdownEvent].forEach((e) => {\n e.relatedTarget = element as HTMLElement;\n });\n\n dispatchEvent(parentElement, hideDropdownEvent);\n // istanbul ignore if @preserve\n if (hideDropdownEvent.defaultPrevented) return;\n\n removeClass(menu, showClass);\n removeClass(parentElement, showClass);\n setAttribute(element, ariaExpanded, \"false\");\n\n this.open = !open;\n // only re-attach handler if the instance is not disposed\n toggleDropdownDismiss(this);\n dispatchEvent(parentElement, hiddenDropdownEvent);\n }\n\n /**\n * Toggles on/off the `click` event listener of the `Dropdown`.\n *\n * @param add when `true`, it will add the event listener\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n action(this.element, mouseclickEvent, dropdownClickHandler);\n };\n\n /** Removes the `Dropdown` component from the target element. */\n dispose() {\n if (this.open) this.hide();\n\n this._toggleEventListeners();\n super.dispose();\n }\n}\n","/** @type {string} */\nconst modalString = \"modal\";\nexport default modalString;\n","/** @type {string} */\nconst modalComponent = \"Modal\";\nexport default modalComponent;\n","/** @type {string} */\nconst offcanvasComponent = \"Offcanvas\";\nexport default offcanvasComponent;\n","/**\n * Global namespace for components `fixed-top` class.\n */\nconst fixedTopClass = \"fixed-top\";\nexport default fixedTopClass;\n","/**\n * Global namespace for components `fixed-bottom` class.\n */\nconst fixedBottomClass = \"fixed-bottom\";\nexport default fixedBottomClass;\n","/**\n * Global namespace for components `sticky-top` class.\n */\nconst stickyTopClass = \"sticky-top\";\nexport default stickyTopClass;\n","/**\n * Global namespace for components `position-sticky` class.\n */\nconst positionStickyClass = \"position-sticky\";\nexport default positionStickyClass;\n","import {\n getDocumentBody,\n getDocumentElement,\n getElementsByClassName,\n getElementStyle,\n getWindow,\n hasClass,\n setElementStyle,\n} from \"@thednp/shorty\";\n\nimport fixedTopClass from \"../strings/fixedTopClass\";\nimport fixedBottomClass from \"../strings/fixedBottomClass\";\nimport stickyTopClass from \"../strings/stickyTopClass\";\nimport positionStickyClass from \"../strings/positionStickyClass\";\n\nconst getFixedItems = (parent?: ParentNode) => [\n ...getElementsByClassName<HTMLElement>(fixedTopClass, parent),\n ...getElementsByClassName<HTMLElement>(fixedBottomClass, parent),\n ...getElementsByClassName<HTMLElement>(stickyTopClass, parent),\n ...getElementsByClassName<HTMLElement>(positionStickyClass, parent),\n ...getElementsByClassName<HTMLElement>(\"is-fixed\", parent),\n];\n\n/**\n * Removes *padding* and *overflow* from the `<body>`\n * and all spacing from fixed items.\n *\n * @param element the target modal/offcanvas\n */\nexport const resetScrollbar = (element?: Element) => {\n const bd = getDocumentBody(element);\n setElementStyle(bd, {\n paddingRight: \"\",\n overflow: \"\",\n });\n\n const fixedItems = getFixedItems(bd);\n\n // istanbul ignore else @preserve\n if (fixedItems.length) {\n fixedItems.forEach((fixed) => {\n setElementStyle(fixed, {\n paddingRight: \"\",\n marginRight: \"\",\n });\n });\n }\n};\n\n/**\n * Returns the scrollbar width if the body does overflow\n * the window.\n *\n * @param element target element\n * @returns the scrollbar width value\n */\nexport const measureScrollbar = (element: Element) => {\n const { clientWidth } = getDocumentElement(element);\n const { innerWidth } = getWindow(element);\n return Math.abs(innerWidth - clientWidth);\n};\n\n/**\n * Sets the `<body>` and fixed items style when modal / offcanvas\n * is shown to the user.\n *\n * @param element the target modal/offcanvas\n * @param overflow body does overflow or not\n */\nexport const setScrollbar = (element: Element, overflow?: boolean) => {\n const bd = getDocumentBody(element);\n const bodyPad = parseInt(getElementStyle(bd, \"paddingRight\"), 10);\n const isOpen = getElementStyle(bd, \"overflow\") === \"hidden\";\n const sbWidth = isOpen && bodyPad\n ? /* istanbul ignore next */ 0\n : measureScrollbar(element);\n const fixedItems = getFixedItems(bd);\n\n // istanbul ignore if @preserve\n if (!overflow) return;\n\n setElementStyle(bd, {\n overflow: \"hidden\",\n paddingRight: `${bodyPad + sbWidth}px`,\n });\n\n // istanbul ignore if @preserve\n if (!fixedItems.length) return;\n\n fixedItems.forEach((fixed) => {\n const itemPadValue = getElementStyle(fixed, \"paddingRight\");\n fixed.style.paddingRight = `${parseInt(itemPadValue, 10) + sbWidth}px`;\n // istanbul ignore else @preserve\n if (\n [stickyTopClass, positionStickyClass].some((c) => hasClass(fixed, c))\n ) {\n const itemMValue = getElementStyle(fixed, \"marginRight\");\n fixed.style.marginRight = `${parseInt(itemMValue, 10) - sbWidth}px`;\n }\n });\n};\n","/** @type {string} */\nconst offcanvasString = \"offcanvas\";\nexport default offcanvasString;\n","import { createElement, getDocumentBody, isNode } from \"@thednp/shorty\";\n\n// the default container for Modal, Offcanvas, Popover and Tooltip\nconst popupContainer = createElement({\n tagName: \"div\",\n className: \"popup-container\",\n}) as HTMLElement;\n\nconst appendPopup = (target: Element, customContainer?: ParentNode) => {\n const containerIsBody = isNode(customContainer) &&\n customContainer.nodeName === \"BODY\";\n const lookup = isNode(customContainer) && !containerIsBody\n ? customContainer\n : popupContainer;\n const BODY = containerIsBody ? customContainer : getDocumentBody(target);\n\n // istanbul ignore else @preserve\n if (isNode(target)) {\n if (lookup === popupContainer) {\n BODY.append(popupContainer);\n }\n lookup.append(target);\n }\n};\n\nconst removePopup = (target: Element, customContainer?: ParentNode) => {\n const containerIsBody = isNode(customContainer) &&\n customContainer.nodeName === \"BODY\";\n const lookup = isNode(customContainer) && !containerIsBody\n ? customContainer\n : popupContainer;\n\n // istanbul ignore else @preserve\n if (isNode(target)) {\n target.remove();\n\n if (lookup === popupContainer && !popupContainer.children.length) {\n popupContainer.remove();\n }\n }\n};\n\nconst hasPopup = (target: Element, customContainer?: ParentNode) => {\n const lookup = isNode(customContainer) && customContainer.nodeName !== \"BODY\"\n ? customContainer\n : popupContainer;\n return isNode(target) && lookup.contains(target);\n};\n\nexport { appendPopup, hasPopup, popupContainer, removePopup };\n","import {\n addClass,\n createElement,\n getDocument,\n getDocumentBody,\n hasClass,\n querySelector,\n reflow,\n removeClass,\n} from \"@thednp/shorty\";\n\nimport fadeClass from \"../strings/fadeClass\";\nimport showClass from \"../strings/showClass\";\nimport modalString from \"../strings/modalString\";\nimport offcanvasString from \"../strings/offcanvasString\";\nimport { resetScrollbar } from \"./scrollbar\";\nimport { appendPopup, removePopup } from \"./popupContainer\";\n\nconst backdropString = \"backdrop\";\nconst modalBackdropClass = `${modalString}-${backdropString}`;\nconst offcanvasBackdropClass = `${offcanvasString}-${backdropString}`;\nconst modalActiveSelector = `.${modalString}.${showClass}`;\nconst offcanvasActiveSelector = `.${offcanvasString}.${showClass}`;\n\n// any document would suffice\nconst overlay = createElement(\"div\") as HTMLElement;\n\n/**\n * Returns the current active modal / offcancas element.\n *\n * @param element the context element\n * @returns the requested element\n */\nconst getCurrentOpen = (element?: Element) => {\n return querySelector(\n `${modalActiveSelector},${offcanvasActiveSelector}`,\n getDocument(element),\n );\n};\n\n/**\n * Toogles from a Modal overlay to an Offcanvas, or vice-versa.\n *\n * @param isModal\n */\nconst toggleOverlayType = (isModal?: boolean) => {\n const targetClass = isModal ? modalBackdropClass : offcanvasBackdropClass;\n [modalBackdropClass, offcanvasBackdropClass].forEach((c) => {\n removeClass(overlay, c);\n });\n addClass(overlay, targetClass);\n};\n\n/**\n * Append the overlay to DOM.\n *\n * @param element\n * @param hasFade\n * @param isModal\n */\nconst appendOverlay = (\n element: Element,\n hasFade: boolean,\n isModal?: boolean,\n) => {\n toggleOverlayType(isModal);\n appendPopup(overlay, getDocumentBody(element));\n if (hasFade) addClass(overlay, fadeClass);\n};\n\n/**\n * Shows the overlay to the user.\n */\nconst showOverlay = () => {\n if (!hasClass(overlay, showClass)) {\n addClass(overlay, showClass);\n reflow(overlay);\n }\n};\n\n/**\n * Hides the overlay from the user.\n */\nconst hideOverlay = () => {\n removeClass(overlay, showClass);\n};\n\n/**\n * Removes the overlay from DOM.\n *\n * @param element\n */\nconst removeOverlay = (element?: Element): void => {\n if (!getCurrentOpen(element)) {\n removeClass(overlay, fadeClass);\n removePopup(overlay, getDocumentBody(element));\n resetScrollbar(element);\n }\n};\n\nexport {\n appendOverlay,\n getCurrentOpen,\n hideOverlay,\n modalActiveSelector,\n modalBackdropClass,\n offcanvasActiveSelector,\n offcanvasBackdropClass,\n overlay,\n removeOverlay,\n showOverlay,\n toggleOverlayType,\n};\n","import { getElementStyle, isHTMLElement } from \"@thednp/shorty\";\n\n/**\n * @param element target\n * @returns the check result\n */\nconst isVisible = (element: HTMLElement) => {\n return isHTMLElement(element) &&\n getElementStyle(element, \"visibility\") !== \"hidden\" &&\n element.offsetParent !== null;\n};\nexport default isVisible;\n","/* Native JavaScript for Bootstrap 5 | Modal\n-------------------------------------------- */\nimport {\n addClass,\n ariaHidden,\n ariaModal,\n closest,\n createCustomEvent,\n CSS4Declaration,\n dispatchEvent,\n emulateTransitionEnd,\n focus,\n getDocument,\n getDocumentBody,\n getDocumentElement,\n getElementTransitionDuration,\n getInstance,\n hasClass,\n isRTL,\n KeyboardEvent,\n keydownEvent,\n keyEscape,\n mouseclickEvent,\n MouseEvent,\n querySelector,\n querySelectorAll,\n removeAttribute,\n removeClass,\n setAttribute,\n setElementStyle,\n Timer,\n toggleFocusTrap,\n} from \"@thednp/shorty\";\n\nimport { addListener, removeListener } from \"@thednp/event-listener\";\n\nimport dataBsToggle from \"~/strings/dataBsToggle\";\nimport dataBsDismiss from \"~/strings/dataBsDismiss\";\nimport fadeClass from \"~/strings/fadeClass\";\nimport showClass from \"~/strings/showClass\";\nimport modalString from \"~/strings/modalString\";\nimport modalComponent from \"~/strings/modalComponent\";\nimport offcanvasComponent from \"~/strings/offcanvasComponent\";\nimport getTargetElement from \"~/util/getTargetElement\";\nimport { measureScrollbar, setScrollbar } from \"~/util/scrollbar\";\nimport {\n appendOverlay,\n getCurrentOpen,\n hideOverlay,\n modalActiveSelector,\n overlay,\n removeOverlay,\n showOverlay,\n toggleOverlayType,\n} from \"~/util/backdrop\";\nimport isVisible from \"~/util/isVisible\";\nimport { hasPopup } from \"~/util/popupContainer\";\nimport isDisabled from \"~/util/isDisabled\";\nimport BaseComponent from \"./base-component\";\nimport { ModalEvent, ModalOptions } from \"~/interface/modal\";\n\n// MODAL PRIVATE GC\n// ================\nconst modalSelector = `.${modalString}`;\nconst modalToggleSelector = `[${dataBsToggle}=\"${modalString}\"]`;\nconst modalDismissSelector = `[${dataBsDismiss}=\"${modalString}\"]`;\nconst modalStaticClass = `${modalString}-static`;\n\nconst modalDefaults = {\n backdrop: true,\n keyboard: true,\n};\n\ntype ModalEventProps = {\n relatedTarget: Element & EventTarget | null;\n};\n\n/**\n * Static method which returns an existing `Modal` instance associated\n * to a target `Element`.\n */\nconst getModalInstance = (element: Element) =>\n getInstance<Modal>(element, modalComponent);\n\n/**\n * A `Modal` initialization callback.\n */\nconst modalInitCallback = (element: Element) => new Modal(element);\n\n// MODAL CUSTOM EVENTS\n// ===================\nconst showModalEvent = createCustomEvent<ModalEventProps, ModalEvent>(\n `show.bs.${modalString}`,\n);\nconst shownModalEvent = createCustomEvent<ModalEventProps, ModalEvent>(\n `shown.bs.${modalString}`,\n);\nconst hideModalEvent = createCustomEvent<ModalEventProps, ModalEvent>(\n `hide.bs.${modalString}`,\n);\nconst hiddenModalEvent = createCustomEvent<ModalEventProps, ModalEvent>(\n `hidden.bs.${modalString}`,\n);\n\n// MODAL PRIVATE METHODS\n// =====================\n/**\n * Applies special style for the `<body>` and fixed elements\n * when a modal instance is shown to the user.\n *\n * @param self the `Modal` instance\n */\nconst setModalScrollbar = (self: Modal) => {\n const { element } = self;\n const scrollbarWidth = measureScrollbar(element);\n const { clientHeight, scrollHeight } = getDocumentElement(element);\n const { clientHeight: modalHeight, scrollHeight: modalScrollHeight } =\n element;\n const modalOverflow = modalHeight !== modalScrollHeight;\n\n // istanbul ignore next @preserve: impossible to test?\n if (!modalOverflow && scrollbarWidth) {\n const pad = !isRTL(element)\n ? \"paddingRight\"\n // istanbul ignore next @preserve\n : \"paddingLeft\";\n const padStyle = { [pad]: `${scrollbarWidth}px` } as Partial<\n CSS4Declaration\n >;\n setElementStyle(element, padStyle);\n }\n setScrollbar(element, modalOverflow || clientHeight !== scrollHeight);\n};\n\n/**\n * Toggles on/off the listeners of events that close the modal.\n *\n * @param self the `Modal` instance\n * @param add when `true`, event listeners are added\n */\nconst toggleModalDismiss = (self: Modal, add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { element } = self;\n action(element, mouseclickEvent, modalDismissHandler);\n action(getDocument(element), keydownEvent, modalKeyHandler);\n\n if (add) self._observer.observe(element);\n else self._observer.disconnect();\n};\n\n/**\n * Executes after a modal is hidden to the user.\n *\n * @param self the `Modal` instance\n */\nconst afterModalHide = (self: Modal) => {\n const { triggers, element, relatedTarget } = self;\n removeOverlay(element);\n setElementStyle(element, { paddingRight: \"\", display: \"\" });\n toggleModalDismiss(self);\n\n const focusElement = showModalEvent.relatedTarget || triggers.find(isVisible);\n // istanbul ignore else @preserve\n if (focusElement) focus(focusElement);\n\n hiddenModalEvent.relatedTarget = relatedTarget || undefined;\n dispatchEvent(element, hiddenModalEvent);\n toggleFocusTrap(element);\n};\n\n/**\n * Executes after a modal is shown to the user.\n *\n * @param self the `Modal` instance\n */\nconst afterModalShow = (self: Modal) => {\n const { element, relatedTarget } = self;\n focus(element as HTMLElement);\n toggleModalDismiss(self, true);\n\n shownModalEvent.relatedTarget = relatedTarget || undefined;\n dispatchEvent(element, shownModalEvent);\n toggleFocusTrap(element);\n};\n\n/**\n * Executes before a modal is shown to the user.\n *\n * @param self the `Modal` instance\n */\nconst beforeModalShow = (self: Modal) => {\n const { element, hasFade } = self;\n setElementStyle(element, { display: \"block\" });\n setModalScrollbar(self);\n // istanbul ignore else @preserve\n if (!getCurrentOpen(element)) {\n setElementStyle(getDocumentBody(element), { overflow: \"hidden\" });\n }\n\n addClass(element, showClass);\n removeAttribute(element, ariaHidden);\n setAttribute(element, ariaModal, \"true\");\n\n if (hasFade) emulateTransitionEnd(element, () => afterModalShow(self));\n else afterModalShow(self);\n};\n\n/**\n * Executes before a modal is hidden to the user.\n *\n * @param self the `Modal` instance\n */\nconst beforeModalHide = (self: Modal) => {\n const { element, options, hasFade } = self;\n\n // callback can also be the transitionEvent object, we wanna make sure it's not\n // call is not forced and overlay is visible\n if (\n options.backdrop && hasFade && hasClass(overlay, showClass) &&\n !getCurrentOpen(element)\n ) {\n // AND no modal is visible\n hideOverlay();\n emulateTransitionEnd(overlay, () => afterModalHide(self));\n } else {\n afterModalHide(self);\n }\n};\n\n// MODAL EVENT HANDLERS\n// ====================\n/**\n * Handles the `click` event listener for modal.\n *\n * @param e the `Event` object\n */\nfunction modalClickHandler(this: HTMLElement, e: MouseEvent<HTMLElement>) {\n const element = getTargetElement(this);\n const self = element && getModalInstance(element);\n\n // istanbul ignore if @preserve\n if (isDisabled(this)) return;\n\n // istanbul ignore if @preserve\n if (!self) return;\n\n // istanbul ignore else @preserve\n if (this.tagName === \"A\") e.preventDefault();\n self.relatedTarget = this;\n self.toggle();\n}\n\n/**\n * Handles the `keydown` event listener for modal\n * to hide the modal when user type the `ESC` key.\n *\n * @param e the `Event` object\n */\nconst modalKeyHandler = ({ code, target }: KeyboardEvent<Element>) => {\n const element = querySelector(modalActiveSelector, getDocument(target));\n const self = element && getModalInstance(element);\n\n // istanbul ignore if @preserve\n if (!self) return;\n\n const { options } = self;\n // istanbul ignore else @preserve\n if (\n options.keyboard &&\n code === keyEscape && // the keyboard option is enabled and the key is 27\n hasClass(element, showClass)\n ) {\n // the modal is not visible\n self.relatedTarget = null;\n self.hide();\n }\n};\n\n/**\n * Handles the `click` event listeners that hide the modal.\n *\n * @param e the `Event` object\n */\nconst modalDismissHandler = (e: MouseEvent<HTMLElement>) => {\n const { currentTarget } = e;\n const self = currentTarget && getModalInstance(currentTarget);\n\n // the timer is needed\n // istanbul ignore if @preserve\n if (!self || !currentTarget || Timer.get(currentTarget)) return;\n\n const { options, isStatic, modalDialog } = self;\n const { backdrop } = options;\n const { target } = e;\n\n const selectedText = getDocument(currentTarget)?.getSelection()?.toString()\n .length;\n const targetInsideDialog = modalDialog.contains(target);\n const dismiss = target && closest(target, modalDismissSelector);\n\n // istanbul ignore else @preserve\n if (isStatic && !targetInsideDialog) {\n Timer.set(\n currentTarget,\n () => {\n addClass(currentTarget, modalStaticClass);\n emulateTransitionEnd(modalDialog, () => staticTransitionEnd(self));\n },\n 17,\n );\n } else if (\n dismiss || (!selectedText && !isStatic && !targetInsideDialog && backdrop)\n ) {\n self.relatedTarget = dismiss || null;\n self.hide();\n e.preventDefault();\n }\n};\n\n/**\n * Handles the `transitionend` event listeners for `Modal`.\n *\n * @param self the `Modal` instance\n */\nconst staticTransitionEnd = (self: Modal) => {\n const { element, modalDialog } = self;\n const duration = (getElementTransitionDuration(modalDialog) || 0) + 17;\n removeClass(element, modalStaticClass);\n // user must wait for zoom out transition\n Timer.set(element, () => Timer.clear(element), duration);\n};\n\n// MODAL DEFINITION\n// ================\n/** Returns a new `Modal` instance. */\nexport default class Modal extends BaseComponent {\n static selector = modalSelector;\n static init = modalInitCallback;\n static getInstance = getModalInstance;\n declare element: HTMLElement;\n declare options: ModalOptions;\n declare modalDialog: HTMLElement;\n declare triggers: HTMLElement[];\n declare isStatic: boolean;\n declare hasFade: boolean;\n declare relatedTarget: EventTarget & HTMLElement | null;\n declare _observer: ResizeObserver;\n\n /**\n * @param target usually the `.modal` element\n * @param config instance options\n */\n constructor(target: Element | string, config?: Partial<ModalOptions>) {\n super(target, config);\n\n // the modal\n const { element } = this;\n\n // the modal-dialog\n const modalDialog = querySelector<HTMLElement>(\n `.${modalString}-dialog`,\n element,\n );\n\n // istanbul ignore if @preserve\n if (!modalDialog) return;\n\n this.modalDialog = modalDialog;\n // modal can have multiple triggering elements\n this.triggers = [\n ...querySelectorAll<HTMLElement>(\n modalToggleSelector,\n getDocument(element),\n ),\n ].filter(\n (btn) => getTargetElement(btn) === element,\n );\n\n // additional internals\n this.isStatic = this.options.backdrop === \"static\";\n this.hasFade = hasClass(element, fadeClass);\n this.relatedTarget = null;\n this._observer = new ResizeObserver(() => this.update());\n\n // attach event listeners\n this._toggleEventListeners(true);\n }\n\n /**\n * Returns component name string.\n */\n get name() {\n return modalComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return modalDefaults;\n }\n\n // MODAL PUBLIC METHODS\n // ====================\n /** Toggles the visibility of the modal. */\n toggle() {\n if (hasClass(this.element, showClass)) this.hide();\n else this.show();\n }\n\n /** Shows the modal to the user. */\n show() {\n const { element, options, hasFade, relatedTarget } = this;\n const { backdrop } = options;\n let overlayDelay = 0;\n\n // istanbul ignore if @preserve\n if (hasClass(element, showClass)) return;\n\n showModalEvent.relatedTarget = relatedTarget || undefined;\n dispatchEvent(element, showModalEvent);\n\n // allow the event to be prevented\n // istanbul ignore else @preserve\n if (showModalEvent.defaultPrevented) return;\n\n // we elegantly hide any opened modal/offcanvas\n const currentOpen = getCurrentOpen(element);\n\n // istanbul ignore else @preserve\n if (currentOpen && currentOpen !== element) {\n const that = getModalInstance(currentOpen) ||\n // istanbul ignore next @preserve\n getInstance<typeof BaseComponent & { hide: () => void }>(\n currentOpen,\n offcanvasComponent,\n );\n // istanbul ignore else @preserve\n if (that) that.hide();\n }\n if (backdrop) {\n if (!hasPopup(overlay)) {\n appendOverlay(element, hasFade, true);\n } else {\n toggleOverlayType(true);\n }\n\n overlayDelay = getElementTransitionDuration(overlay);\n showOverlay();\n\n setTimeout(() => beforeModalShow(this), overlayDelay);\n } else {\n beforeModalShow(this);\n // istanbul ignore else @preserve\n if (currentOpen && hasClass(overlay, showClass)) {\n hideOverlay();\n }\n }\n }\n\n /** Hide the modal from the user. */\n hide() {\n const { element, hasFade, relatedTarget } = this;\n\n // istanbul ignore if @preserve\n if (!hasClass(element, showClass)) return;\n\n hideModalEvent.relatedTarget = relatedTarget || undefined;\n dispatchEvent(element, hideModalEvent);\n\n // istanbul ignore if @preserve\n if (hideModalEvent.defaultPrevented) return;\n\n removeClass(element, showClass);\n setAttribute(element, ariaHidden, \"true\");\n removeAttribute(element, ariaModal);\n\n if (hasFade) emulateTransitionEnd(element, () => beforeModalHide(this));\n else beforeModalHide(this);\n }\n\n /**\n * Updates the modal layout.\n */\n update = () => {\n // istanbul ignore else @preserve\n if (hasClass(this.element, showClass)) setModalScrollbar(this);\n };\n\n /**\n * Toggles on/off the `click` event listener of the `Modal` instance.\n *\n * @param add when `true`, event listener(s) is/are added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { triggers } = this;\n\n // istanbul ignore if @preserve\n if (!triggers.length) return;\n\n triggers.forEach((btn) => {\n // istanbul ignore else @preserve\n action(btn, mouseclickEvent, modalClickHandler);\n });\n };\n\n /** Removes the `Modal` component from target element. */\n dispose() {\n const clone = { ...this };\n const { modalDialog, hasFade } = clone;\n const callback = () => setTimeout(() => super.dispose(), 17);\n\n this.hide();\n this._toggleEventListeners();\n\n if (hasFade) {\n // use transitionend callback\n emulateTransitionEnd(modalDialog, callback);\n } else {\n callback();\n }\n }\n}\n","/* Native JavaScript for Bootstrap 5 | OffCanvas\n------------------------------------------------ */\nimport {\n addClass,\n ariaHidden,\n ariaModal,\n closest,\n createCustomEvent,\n dispatchEvent,\n emulateTransitionEnd,\n focus,\n getDocument,\n getDocumentBody,\n getDocumentElement,\n getElementTransitionDuration,\n getInstance,\n hasClass,\n keydownEvent,\n keyEscape,\n mouseclickEvent,\n MouseEvent,\n querySelector,\n querySelectorAll,\n removeAttribute,\n removeClass,\n setAttribute,\n setElementStyle,\n toggleFocusTrap,\n} from \"@thednp/shorty\";\n\nimport { addListener, removeListener } from \"@thednp/event-listener\";\n\nimport dataBsDismiss from \"~/strings/dataBsDismiss\";\nimport dataBsToggle from \"~/strings/dataBsToggle\";\nimport showClass from \"~/strings/showClass\";\nimport offcanvasString from \"~/strings/offcanvasString\";\nimport offcanvasComponent from \"~/strings/offcanvasComponent\";\nimport modalComponent from \"~/strings/modalComponent\";\n\nimport getTargetElement from \"~/util/getTargetElement\";\nimport isVisible from \"~/util/isVisible\";\nimport { setScrollbar } from \"~/util/scrollbar\";\nimport { hasPopup } from \"~/util/popupContainer\";\nimport {\n appendOverlay,\n getCurrentOpen,\n hideOverlay,\n offcanvasActiveSelector,\n overlay,\n removeOverlay,\n showOverlay,\n toggleOverlayType,\n} from \"~/util/backdrop\";\nimport isDisabled from \"~/util/isDisabled\";\nimport BaseComponent from \"./base-component\";\nimport { OffcanvasEvent, OffcanvasOptions } from \"~/interface/offcanvas\";\n\n// OFFCANVAS PRIVATE GC\n// ====================\nconst offcanvasSelector = `.${offcanvasString}`;\nconst offcanvasToggleSelector = `[${dataBsToggle}=\"${offcanvasString}\"]`;\nconst offcanvasDismissSelector = `[${dataBsDismiss}=\"${offcanvasString}\"]`;\nconst offcanvasTogglingClass = `${offcanvasString}-toggling`;\n\nconst offcanvasDefaults = {\n backdrop: true, // boolean\n keyboard: true, // boolean\n scroll: false, // boolean\n};\n\ntype OffCanvasEventProps = {\n relatedTarget: Element & EventTarget | undefined;\n};\n\n/**\n * Static method which returns an existing `Offcanvas` instance associated\n * to a target `Element`.\n */\nconst getOffcanvasInstance = (element: Element) =>\n getInstance<Offcanvas>(element, offcanvasComponent);\n\n/**\n * An `Offcanvas` initialization callback.\n */\nconst offcanvasInitCallback = (element: Element) => new Offcanvas(element);\n\n// OFFCANVAS CUSTOM EVENTS\n// =======================\nconst showOffcanvasEvent = createCustomEvent<\n OffCanvasEventProps,\n OffcanvasEvent\n>(`show.bs.${offcanvasString}`);\nconst shownOffcanvasEvent = createCustomEvent<\n OffCanvasEventProps,\n OffcanvasEvent\n>(`shown.bs.${offcanvasString}`);\nconst hideOffcanvasEvent = createCustomEvent<\n OffCanvasEventProps,\n OffcanvasEvent\n>(`hide.bs.${offcanvasString}`);\nconst hiddenOffcanvasEvent = createCustomEvent<\n OffCanvasEventProps,\n OffcanvasEvent\n>(`hidden.bs.${offcanvasString}`);\n\n// OFFCANVAS PRIVATE METHODS\n// =========================\n/**\n * Sets additional style for the `<body>` and other elements\n * when showing an offcanvas to the user.\n *\n * @param self the `Offcanvas` instance\n */\nconst setOffCanvasScrollbar = (self: Offcanvas) => {\n const { element } = self;\n const { clientHeight, scrollHeight } = getDocumentElement(element);\n setScrollbar(element, clientHeight !== scrollHeight);\n};\n\n/**\n * Toggles on/off the listeners of the events that close the offcanvas.\n *\n * @param self the `Offcanvas` instance\n * @param add when *true* listeners are added\n */\nconst toggleOffCanvasDismiss = (self: Offcanvas, add?: boolean) => {\n const action = add ? addListener : removeListener;\n const doc = getDocument(self.element);\n action(doc, keydownEvent, offcanvasKeyDismissHandler);\n action(doc, mouseclickEvent, offcanvasDismissHandler);\n};\n\n/**\n * Executes before showing the offcanvas.\n *\n * @param self the `Offcanvas` instance\n */\nconst beforeOffcanvasShow = (self: Offcanvas) => {\n const { element, options } = self;\n\n // istanbul ignore else @preserve\n if (!options.scroll) {\n setOffCanvasScrollbar(self);\n setElementStyle(getDocumentBody(element), { overflow: \"hidden\" });\n }\n\n addClass(element, offcanvasTogglingClass);\n addClass(element, showClass);\n setElementStyle(element, { visibility: \"visible\" });\n\n emulateTransitionEnd(element, () => showOffcanvasComplete(self));\n};\n\n/**\n * Executes before hiding the offcanvas.\n *\n * @param self the `Offcanvas` instance\n */\nconst beforeOffcanvasHide = (self: Offcanvas) => {\n const { element, options } = self;\n const currentOpen = getCurrentOpen(element);\n\n (element as HTMLElement).blur();\n\n if (!currentOpen && options.backdrop && hasClass(overlay, showClass)) {\n hideOverlay();\n }\n emulateTransitionEnd(element, () => hideOffcanvasComplete(self));\n};\n\n// OFFCANVAS EVENT HANDLERS\n// ========================\n/**\n * Handles the `click` event listeners.\n *\n * @param e the `Event` object\n */\nfunction offcanvasTriggerHandler(\n this: HTMLElement,\n e: MouseEvent<HTMLElement>,\n) {\n const element = getTargetElement(this);\n const self = element && getOffcanvasInstance(element);\n\n // istanbul ignore if @preserve\n if (isDisabled(this)) return;\n\n // istanbul ignore if @preserve\n if (!self) return;\n\n self.relatedTarget = this;\n self.toggle();\n\n // istanbul ignore else @preserve\n if (this.tagName === \"A\") e.preventDefault();\n}\n\n/**\n * Handles the event listeners that close the offcanvas.\n *\n * @param e the `Event` object\n */\nconst offcanvasDismissHandler = (e: MouseEvent<HTMLElement>) => {\n const { target } = e;\n const element = querySelector(\n offcanvasActiveSelector,\n getDocument(target),\n );\n // istanbul ignore else @preserve\n if (!element) return;\n\n const offCanvasDismiss = querySelector<HTMLElement>(\n offcanvasDismissSelector,\n element,\n );\n const self = getOffcanvasInstance(element);\n\n // istanbul ignore if @preserve\n if (!self) return;\n\n const { options, triggers } = self;\n const { backdrop } = options;\n const trigger = closest(target, offcanvasToggleSelector);\n const selection = getDocument(element).getSelection();\n\n // istanbul ignore if: a filter is required here @preserve\n if (overlay.contains(target) && backdrop === \"static\") return;\n\n // istanbul ignore else @preserve\n if (\n !(selection && selection.toString().length) &&\n ((!element.contains(target) &&\n backdrop &&\n // istanbul ignore next @preserve\n (!trigger || triggers.includes(target))) ||\n (offCanvasDismiss &&\n offCanvasDismiss.contains(target)))\n ) {\n self.relatedTarget = offCanvasDismiss && offCanvasDismiss.contains(target)\n ? offCanvasDismiss\n : undefined;\n self.hide();\n }\n\n // istanbul ignore next @preserve\n if (trigger && trigger.tagName === \"A\") e.preventDefault();\n};\n\n/**\n * Handles the `keydown` event listener for offcanvas\n * to hide it when user type the `ESC` key.\n *\n * @param e the `Event` object\n */\nconst offcanvasKeyDismissHandler = ({ code, target }: KeyboardEvent) => {\n const element = querySelector(\n offcanvasActiveSelector,\n getDocument(target as Node),\n );\n const self = element && getOffcanvasInstance(element);\n\n // istanbul ignore if @preserve\n if (!self) return;\n\n // istanbul ignore else @preserve\n if (self.options.keyboard && code === keyEscape) {\n self.relatedTarget = undefined;\n self.hide();\n }\n};\n\n/**\n * Handles the `transitionend` when showing the offcanvas.\n *\n * @param self the `Offcanvas` instance\n */\nconst showOffcanvasComplete = (self: Offcanvas) => {\n const { element } = self;\n removeClass(element, offcanvasTogglingClass);\n\n removeAttribute(element, ariaHidden);\n setAttribute(element, ariaModal, \"true\");\n setAttribute(element, \"role\", \"dialog\");\n\n dispatchEvent(element, shownOffcanvasEvent);\n\n toggleOffCanvasDismiss(self, true);\n focus(element);\n toggleFocusTrap(element);\n};\n\n/**\n * Handles the `transitionend` when hiding the offcanvas.\n *\n * @param self the `Offcanvas` instance\n */\nconst hideOffcanvasComplete = (self: Offcanvas) => {\n const { element, triggers } = self;\n\n setAttribute(element, ariaHidden, \"true\");\n removeAttribute(element, ariaModal);\n removeAttribute(element, \"role\");\n setElementStyle(element, { visibility: \"\" });\n\n const visibleTrigger = showOffcanvasEvent.relatedTarget ||\n triggers.find(isVisible);\n // istanbul ignore else @preserve\n if (visibleTrigger) focus(visibleTrigger);\n\n removeOverlay(element);\n\n dispatchEvent(element, hiddenOffcanvasEvent);\n removeClass(element, offcanvasTogglingClass);\n toggleFocusTrap(element);\n\n // must check for open instances\n if (!getCurrentOpen(element)) {\n toggleOffCanvasDismiss(self);\n }\n};\n\n// OFFCANVAS DEFINITION\n// ====================\n/** Returns a new `Offcanvas` instance. */\nexport default class Offcanvas extends BaseComponent {\n static selector = offcanvasSelector;\n static init = offcanvasInitCallback;\n static getInstance = getOffcanvasInstance;\n declare element: HTMLElement;\n declare options: OffcanvasOptions;\n declare triggers: HTMLElement[];\n declare relatedTarget: EventTarget & HTMLElement | undefined;\n\n /**\n * @param target usually an `.offcanvas` element\n * @param config instance options\n */\n constructor(\n target: Element | string,\n config?: Partial<OffcanvasOptions>,\n ) {\n super(target, config);\n\n // instance element\n const { element } = this;\n\n // all the triggering buttons\n this.triggers = [\n ...querySelectorAll<HTMLElement>(\n offcanvasToggleSelector,\n getDocument(element),\n ),\n ].filter(\n (btn) => getTargetElement(btn) === element,\n );\n\n // additional instance property\n this.relatedTarget = undefined;\n\n // attach event listeners\n this._toggleEventListeners(true);\n }\n\n /**\n * Returns component name string.\n */\n get name() {\n return offcanvasComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return offcanvasDefaults;\n }\n\n // OFFCANVAS PUBLIC METHODS\n // ========================\n /** Shows or hides the offcanvas from the user. */\n toggle() {\n if (hasClass(this.element, showClass)) this.hide();\n else this.show();\n }\n\n /** Shows the offcanvas to the user. */\n show() {\n const { element, options, relatedTarget } = this;\n let overlayDelay = 0;\n\n // istanbul ignore else @preserve\n if (hasClass(element, showClass)) return;\n\n showOffcanvasEvent.relatedTarget = relatedTarget || undefined;\n shownOffcanvasEvent.relatedTarget = relatedTarget || undefined;\n dispatchEvent(element, showOffcanvasEvent);\n\n // istanbul ignore else @preserve\n if (showOffcanvasEvent.defaultPrevented) return;\n\n // we elegantly hide any opened modal/offcanvas\n const currentOpen = getCurrentOpen(element);\n if (currentOpen && currentOpen !== element) {\n const that = getOffcanvasInstance(currentOpen) ||\n // istanbul ignore next @preserve\n getInstance<typeof BaseComponent & { hide: () => void }>(\n currentOpen,\n modalComponent,\n );\n\n // istanbul ignore else @preserve\n if (that) that.hide();\n }\n\n if (options.backdrop) {\n if (!hasPopup(overlay)) appendOverlay(element, true);\n else toggleOverlayType();\n\n overlayDelay = getElementTransitionDuration(overlay);\n showOverlay();\n\n setTimeout(() => beforeOffcanvasShow(this), overlayDelay);\n } else {\n beforeOffcanvasShow(this);\n // istanbul ignore next @preserve - this test was done on Modal\n if (currentOpen && hasClass(overlay, showClass)) hideOverlay();\n }\n }\n\n /** Hides the offcanvas from the user. */\n hide() {\n const { element, relatedTarget } = this;\n\n // istanbul ignore else @preserve\n if (!hasClass(element, showClass)) return;\n\n hideOffcanvasEvent.relatedTarget = relatedTarget || undefined;\n hiddenOffcanvasEvent.relatedTarget = relatedTarget || undefined;\n dispatchEvent(element, hideOffcanvasEvent);\n\n // istanbul ignore else @preserve\n if (hideOffcanvasEvent.defaultPrevented) return;\n\n addClass(element, offcanvasTogglingClass);\n removeClass(element, showClass);\n beforeOffcanvasHide(this);\n }\n\n /**\n * Toggles on/off the `click` event listeners.\n *\n * @param self the `Offcanvas` instance\n * @param add when *true*, listeners are added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n this.triggers.forEach((btn) => {\n action(btn, mouseclickEvent, offcanvasTriggerHandler);\n });\n };\n\n /** Removes the `Offcanvas` from the target element. */\n dispose() {\n const { element } = this;\n const isOpen = hasClass(element, showClass);\n const callback = () => setTimeout(() => super.dispose(), 1);\n\n this.hide();\n this._toggleEventListeners();\n\n if (isOpen) emulateTransitionEnd(element, callback);\n // istanbul ignore next @preserve\n else callback();\n }\n}\n","/** @type {string} */\nconst popoverString = \"popover\";\nexport default popoverString;\n","/** @type {string} */\nconst popoverComponent = \"Popover\";\nexport default popoverComponent;\n","/** @type {string} */\nconst tooltipString = \"tooltip\";\nexport default tooltipString;\n","import tooltipString from \"../strings/tooltipString\";\n\n/**\n * Returns a template for Popover / Tooltip.\n *\n * @param tipType the expected markup type\n * @returns the template markup\n */\nconst getTipTemplate = (tipType: string) => {\n const isTooltip = tipType === tooltipString;\n const bodyClass = isTooltip ? `${tipType}-inner` : `${tipType}-body`;\n const header = !isTooltip ? `<h3 class=\"${tipType}-header\"></h3>` : \"\";\n const arrow = `<div class=\"${tipType}-arrow\"></div>`;\n const body = `<div class=\"${bodyClass}\"></div>`;\n return `<div class=\"${tipType}\" role=\"${tooltipString}\">${\n header + arrow + body\n }</div>`;\n};\n\nexport default getTipTemplate;\n","const tipClassPositions = {\n top: \"top\",\n bottom: \"bottom\",\n left: \"start\",\n right: \"end\",\n};\n\nexport default tipClassPositions;\n","import {\n createCustomEvent,\n dispatchEvent,\n getBoundingClientRect,\n getDocumentElement,\n getElementStyle,\n getNodeScroll,\n getRectRelativeToOffsetParent,\n isHTMLElement,\n isRTL,\n setElementStyle,\n toLowerCase,\n} from \"@thednp/shorty\";\n\nimport tipClassPositions from \"./tipClassPositions\";\nimport Tooltip from \"../components/tooltip\";\nimport type { TooltipEvent } from \"../interface/tooltip\";\nimport type { PopoverEvent } from \"../interface/popover\";\n\n/**\n * Style popovers and tooltips.\n *\n * @param self the `Popover` / `Tooltip` instance\n */\nconst styleTip = (self: Tooltip) => {\n requestAnimationFrame(() => {\n const tipClasses = /\\b(top|bottom|start|end)+/;\n const { element, tooltip, container, offsetParent, options, arrow } = self;\n\n // istanbul ignore if @preserve\n if (!tooltip) return;\n const RTL = isRTL(element);\n const { x: scrollLeft, y: scrollTop } = getNodeScroll(offsetParent);\n\n // reset tooltip style (top: 0, left: 0 works best)\n setElementStyle(tooltip, {\n top: \"\",\n left: \"\",\n right: \"\",\n bottom: \"\",\n });\n const { offsetWidth: tipWidth, offsetHeight: tipHeight } = tooltip;\n const { clientWidth: htmlcw, clientHeight: htmlch, offsetWidth: htmlow } =\n getDocumentElement(element);\n let { placement } = options;\n const { clientWidth: parentCWidth, offsetWidth: parentOWidth } = container;\n const parentPosition = getElementStyle(\n container,\n \"position\",\n );\n const fixedParent = parentPosition === \"fixed\";\n const scrollbarWidth = fixedParent\n ? Math.abs(parentCWidth - parentOWidth)\n : Math.abs(htmlcw - htmlow);\n const leftBoundry = RTL && fixedParent\n ? /* istanbul ignore next @preserve */ scrollbarWidth\n : 0;\n const rightBoundry = htmlcw - (!RTL ? scrollbarWidth : 0) - 1;\n\n // reuse observer entry bounding box\n const observerEntry = self._observer.getEntry(element);\n const {\n width: elemWidth,\n height: elemHeight,\n left: elemRectLeft,\n right: elemRectRight,\n top: elemRectTop,\n } = observerEntry?.boundingClientRect ||\n getBoundingClientRect(element, true);\n\n const {\n x: elemOffsetLeft,\n y: elemOffsetTop,\n } = getRectRelativeToOffsetParent(\n element,\n offsetParent,\n { x: scrollLeft, y: scrollTop },\n );\n\n // reset arrow style\n setElementStyle(arrow as HTMLElement, {\n top: \"\",\n left: \"\",\n right: \"\",\n bottom: \"\",\n });\n let topPosition: number | string = 0;\n let bottomPosition: number | string = \"\";\n let leftPosition: number | string = 0;\n let rightPosition: number | string = \"\";\n let arrowTop: number | string = \"\";\n let arrowLeft: number | string = \"\";\n let arrowRight: number | string = \"\";\n\n const arrowWidth = arrow.offsetWidth || 0;\n const arrowHeight = arrow.offsetHeight || 0;\n const arrowAdjust = arrowWidth / 2;\n\n // check placement\n let topExceed = elemRectTop - tipHeight - arrowHeight < 0;\n let bottomExceed =\n elemRectTop + tipHeight + elemHeight + arrowHeight >= htmlch;\n let leftExceed = elemRectLeft - tipWidth - arrowWidth < leftBoundry;\n let rightExceed =\n elemRectLeft + tipWidth + elemWidth + arrowWidth >= rightBoundry;\n\n const horizontals = [\"left\", \"right\"];\n const verticals = [\"top\", \"bottom\"];\n\n topExceed = horizontals.includes(placement)\n ? elemRectTop + elemHeight / 2 - tipHeight / 2 - arrowHeight < 0\n : topExceed;\n bottomExceed = horizontals.includes(placement)\n ? elemRectTop + tipHeight / 2 + elemHeight / 2 + arrowHeight >= htmlch\n : bottomExceed;\n leftExceed = verticals.includes(placement)\n ? elemRectLeft + elemWidth / 2 - tipWidth / 2 < leftBoundry\n : leftExceed;\n rightExceed = verticals.includes(placement)\n ? elemRectLeft + tipWidth / 2 + elemWidth / 2 >= rightBoundry\n : rightExceed;\n\n // first remove side positions if both left and right limits are exceeded\n // we usually fall back to top|bottom\n placement = horizontals.includes(placement) && leftExceed && rightExceed\n ? \"top\"\n : placement;\n // recompute placement\n placement = placement === \"top\" && topExceed ? \"bottom\" : placement;\n placement = placement === \"bottom\" && bottomExceed ? \"top\" : placement;\n placement = placement === \"left\" && leftExceed ? \"right\" : placement;\n placement = placement === \"right\" && rightExceed\n ? \"left\"\n // istanbul ignore next @preserve\n : placement;\n\n // update tooltip/popover class\n // istanbul ignore else @preserve\n if (!tooltip.className.includes(placement)) {\n tooltip.className = tooltip.className.replace(\n tipClasses,\n tipClassPositions[placement],\n );\n }\n\n // compute tooltip / popover coordinates\n // istanbul ignore else @preserve\n if (horizontals.includes(placement)) {\n // secondary|side positions\n if (placement === \"left\") {\n // LEFT\n leftPosition = elemOffsetLeft - tipWidth - arrowWidth;\n } else {\n // RIGHT\n leftPosition = elemOffsetLeft + elemWidth + arrowWidth;\n }\n\n // adjust top and arrow\n if (topExceed && bottomExceed) {\n topPosition = 0;\n bottomPosition = 0;\n arrowTop = elemOffsetTop + elemHeight / 2 - arrowHeight / 2;\n } else if (topExceed) {\n topPosition = elemOffsetTop;\n bottomPosition = \"\";\n arrowTop = elemHeight / 2 - arrowWidth;\n } else if (bottomExceed) {\n topPosition = elemOffsetTop - tipHeight + elemHeight;\n bottomPosition = \"\";\n arrowTop = tipHeight - elemHeight / 2 - arrowWidth;\n } else {\n topPosition = elemOffsetTop - tipHeight / 2 + elemHeight / 2;\n arrowTop = tipHeight / 2 - arrowHeight / 2;\n }\n } else if (verticals.includes(placement)) {\n if (placement === \"top\") {\n topPosition = elemOffsetTop - tipHeight - arrowHeight;\n } else {\n // BOTTOM\n topPosition = elemOffsetTop + elemHeight + arrowHeight;\n }\n\n // adjust left | right and also the arrow\n if (leftExceed) {\n leftPosition = 0;\n arrowLeft = elemOffsetLeft + elemWidth / 2 - arrowAdjust;\n } else if (rightExceed) {\n leftPosition = \"auto\";\n rightPosition = 0;\n arrowRight = elemWidth / 2 + rightBoundry - elemRectRight - arrowAdjust;\n } else {\n leftPosition = elemOffsetLeft - tipWidth / 2 + elemWidth / 2;\n arrowLeft = tipWidth / 2 - arrowAdjust;\n }\n }\n\n // apply style to tooltip/popover\n setElementStyle(tooltip, {\n top: `${topPosition}px`,\n bottom: bottomPosition === \"\" ? \"\" : `${bottomPosition}px`,\n left: leftPosition === \"auto\" ? leftPosition : `${leftPosition}px`,\n right: rightPosition !== \"\" ? `${rightPosition}px` : \"\",\n });\n\n // update arrow placement\n // istanbul ignore else @preserve\n if (isHTMLElement(arrow)) {\n if (arrowTop !== \"\") {\n arrow.style.top = `${arrowTop}px`;\n }\n if (arrowLeft !== \"\") {\n arrow.style.left = `${arrowLeft}px`;\n } else if (arrowRight !== \"\") {\n arrow.style.right = `${arrowRight}px`;\n }\n }\n const updatedTooltipEvent = createCustomEvent<\n Record<string, unknown>,\n TooltipEvent | PopoverEvent\n >(\n `updated.bs.${toLowerCase(self.name)}`,\n );\n dispatchEvent(element, updatedTooltipEvent);\n });\n};\n\nexport default styleTip;\n","import getTipTemplate from \"./getTipTemplate\";\nimport tooltipString from \"../strings/tooltipString\";\nimport { TooltipOptions } from \"../interface/tooltip\";\n\nconst tooltipDefaults: TooltipOptions = {\n template: getTipTemplate(tooltipString),\n title: \"\",\n customClass: \"\",\n trigger: \"hover focus\",\n placement: \"top\",\n sanitizeFn: undefined,\n animation: true,\n delay: 200,\n container: document.body,\n content: \"\",\n dismissible: false,\n btnClose: \"\",\n};\nexport default tooltipDefaults;\n","/**\n * Global namespace for `data-bs-title` attribute.\n */\nconst dataOriginalTitle = \"data-original-title\";\nexport default dataOriginalTitle;\n","/** @type {string} */\nconst tooltipComponent = \"Tooltip\";\nexport default tooltipComponent;\n","import {\n isArray,\n isFunction,\n isHTMLElement,\n isNode,\n isNodeList,\n isString,\n} from \"@thednp/shorty\";\n\n/**\n * Append an existing `Element` to Popover / Tooltip component or HTML\n * markup string to be parsed & sanitized to be used as popover / tooltip content.\n *\n * @param element target\n * @param content the `Element` to append / string\n * @param sanitizeFn a function to sanitize string content\n */\nconst setHtml = (\n element: HTMLElement,\n content: Node[] | Node | string,\n sanitizeFn?: (s: string) => string,\n) => {\n // istanbul ignore else @preserve\n if (isString(content) && content.length) {\n let dirty = content.trim(); // fixing #233\n if (isFunction(sanitizeFn)) dirty = sanitizeFn(dirty);\n\n const domParser = new DOMParser();\n const tempDocument = domParser.parseFromString(dirty, \"text/html\");\n element.append(...[...tempDocument.body.childNodes]);\n } else if (isHTMLElement(content)) {\n element.append(content);\n } else if (\n isNodeList(content) || (isArray(content) && content.every(isNode))\n ) {\n element.append(...[...content]);\n }\n};\nexport default setHtml;\n","import {\n addClass,\n createElement,\n hasClass,\n isHTMLElement,\n isRTL,\n querySelector,\n setAttribute,\n} from \"@thednp/shorty\";\n\nimport tooltipComponent from \"../strings/tooltipComponent\";\nimport tooltipString from \"../strings/tooltipString\";\nimport popoverString from \"../strings/popoverString\";\nimport fadeClass from \"../strings/fadeClass\";\nimport tipClassPositions from \"./tipClassPositions\";\nimport setHtml from \"./setHtml\";\nimport Tooltip from \"../components/tooltip\";\nimport Popover from \"../components/popover\";\n\n/**\n * Creates a new tooltip / popover.\n *\n * @param self the `Tooltip` / `Popover` instance\n */\nconst createTip = (self: Tooltip | Popover) => {\n const isTooltip = self.name === tooltipComponent;\n\n const { id, element, options } = self;\n const {\n title,\n placement,\n template,\n animation,\n customClass,\n sanitizeFn,\n dismissible,\n content,\n btnClose,\n } = options;\n const tipString = isTooltip ? tooltipString : popoverString;\n const tipPositions = { ...tipClassPositions };\n let titleParts: Node[] = [];\n let contentParts: Node[] = [];\n\n if (isRTL(element)) {\n tipPositions.left = \"end\";\n tipPositions.right = \"start\";\n }\n\n // set initial popover class\n const placementClass = `bs-${tipString}-${tipPositions[placement]}`;\n\n // load template\n let tooltipTemplate: Node | string;\n if (isHTMLElement(template)) {\n tooltipTemplate = template;\n } else {\n const htmlMarkup = createElement(\"div\") as HTMLElement;\n setHtml(htmlMarkup, template, sanitizeFn);\n tooltipTemplate = htmlMarkup.firstChild as HTMLElement;\n }\n\n /* istanbul ignore if @preserve */\n if (!isHTMLElement(tooltipTemplate)) return;\n\n // set popover markup\n self.tooltip = tooltipTemplate.cloneNode(true) as HTMLElement;\n const { tooltip } = self;\n\n // set id and role attributes\n setAttribute(tooltip, \"id\", id);\n setAttribute(tooltip, \"role\", tooltipString);\n\n const bodyClass = isTooltip\n ? `${tooltipString}-inner`\n : `${popoverString}-body`;\n const tooltipHeader = isTooltip\n ? null\n : querySelector<HTMLElement>(`.${popoverString}-header`, tooltip);\n const tooltipBody = querySelector<HTMLElement>(`.${bodyClass}`, tooltip);\n\n // set arrow and enable access for styleTip\n self.arrow = querySelector<HTMLElement>(\n `.${tipString}-arrow`,\n tooltip,\n ) as HTMLElement;\n const { arrow } = self;\n\n if (isHTMLElement(title)) titleParts = [title.cloneNode(true)];\n else {\n const tempTitle = createElement(\"div\") as HTMLElement;\n setHtml(tempTitle, title, sanitizeFn);\n titleParts = [...[...tempTitle.childNodes]];\n }\n\n if (isHTMLElement(content)) contentParts = [content.cloneNode(true)];\n else {\n const tempContent = createElement(\"div\") as HTMLElement;\n setHtml(tempContent, content, sanitizeFn);\n contentParts = [...[...tempContent.childNodes]];\n }\n\n // set dismissible button\n if (dismissible) {\n if (title) {\n if (isHTMLElement(btnClose)) {\n titleParts = [...titleParts, btnClose.cloneNode(true)];\n } else {\n const tempBtn = createElement(\"div\") as HTMLElement;\n setHtml(tempBtn, btnClose, sanitizeFn);\n titleParts = [...titleParts, tempBtn.firstChild as Node];\n }\n } else {\n // istanbul ignore else @preserve\n if (tooltipHeader) tooltipHeader.remove();\n if (isHTMLElement(btnClose)) {\n contentParts = [...contentParts, btnClose.cloneNode(true)];\n } else {\n const tempBtn = createElement(\"div\") as HTMLElement;\n setHtml(tempBtn, btnClose, sanitizeFn);\n contentParts = [...contentParts, tempBtn.firstChild as Node];\n }\n }\n }\n\n // fill the template with content from options / data attributes\n // also sanitize title && content\n // istanbul ignore else @preserve\n if (!isTooltip) {\n // istanbul ignore else @preserve\n if (title && tooltipHeader) {\n setHtml(tooltipHeader, titleParts, sanitizeFn);\n }\n // istanbul ignore else @preserve\n if (content && tooltipBody) {\n setHtml(tooltipBody, contentParts, sanitizeFn);\n }\n // set btn\n self.btn = querySelector<HTMLButtonElement>(\".btn-close\", tooltip) ||\n undefined;\n } else if (title && tooltipBody) setHtml(tooltipBody, title, sanitizeFn);\n\n // Bootstrap 5.2.x\n addClass(tooltip, \"position-absolute\");\n addClass(arrow, \"position-absolute\");\n\n // set popover animation and placement\n // istanbul ignore else @preserve\n if (!hasClass(tooltip, tipString)) addClass(tooltip, tipString);\n // istanbul ignore else @preserve\n if (animation && !hasClass(tooltip, fadeClass)) {\n addClass(tooltip, fadeClass);\n }\n // istanbul ignore else @preserve\n if (customClass && !hasClass(tooltip, customClass)) {\n addClass(tooltip, customClass);\n }\n // istanbul ignore else @preserve\n if (!hasClass(tooltip, placementClass)) addClass(tooltip, placementClass);\n};\n\nexport default createTip;\n","import {\n getDocument,\n getElementStyle,\n getParentNode,\n isShadowRoot,\n isTableElement,\n} from \"@thednp/shorty\";\n\n/**\n * Returns an `HTMLElement` to be used as default value for *options.container*\n * for `Tooltip` / `Popover` components.\n *\n * @see https://github.com/floating-ui/floating-ui\n *\n * @param element the target\n * @returns the query result\n */\nconst getElementContainer = (element: Element) => {\n const majorBlockTags = [\"HTML\", \"BODY\"];\n const containers: HTMLElement[] = [];\n let { parentNode } = element;\n\n while (parentNode && !majorBlockTags.includes(parentNode.nodeName)) {\n parentNode = getParentNode(parentNode) as HTMLElement;\n // istanbul ignore else @preserve\n if (!(isShadowRoot(parentNode) || isTableElement(parentNode))) {\n containers.push(parentNode as HTMLElement);\n }\n }\n\n return (\n containers.find((c, i) => {\n if (\n ((getElementStyle(c, \"position\") !== \"relative\" ||\n getElementStyle(c, \"position\") === \"relative\" &&\n c.offsetHeight !== c.scrollHeight) &&\n containers.slice(i + 1).every((r) =>\n getElementStyle(r, \"position\") === \"static\"\n ))\n ) {\n return c;\n }\n return null;\n }) ||\n /* istanbul ignore next: optional guard */\n getDocument(element).body\n );\n};\n\nexport default getElementContainer;\n","/* Native JavaScript for Bootstrap 5 | Tooltip\n---------------------------------------------- */\nimport {\n addClass,\n ariaDescribedBy,\n closest,\n createCustomEvent,\n dispatchEvent,\n emulateTransitionEnd,\n focus,\n focusEvent,\n focusinEvent,\n focusoutEvent,\n getAttribute,\n getDocument,\n getElementStyle,\n getInstance,\n getUID,\n getWindow,\n hasAttribute,\n hasClass,\n isApple,\n mouseclickEvent,\n mousedownEvent,\n mouseenterEvent,\n mousehoverEvent,\n mouseleaveEvent,\n ObjectAssign,\n passiveHandler,\n removeAttribute,\n removeClass,\n setAttribute,\n Timer,\n toLowerCase,\n TouchEvent,\n touchstartEvent,\n} from \"@thednp/shorty\";\n\nimport { addListener, removeListener } from \"@thednp/event-listener\";\nimport PositionObserver from \"@thednp/position-observer\";\n\nimport dataBsToggle from \"~/strings/dataBsToggle\";\nimport dataOriginalTitle from \"~/strings/dataOriginalTitle\";\nimport showClass from \"~/strings/showClass\";\nimport tooltipString from \"~/strings/tooltipString\";\nimport tooltipComponent from \"~/strings/tooltipComponent\";\nimport popoverString from \"~/strings/popoverString\";\nimport popoverComponent from \"~/strings/popoverComponent\";\nimport modalString from \"~/strings/modalString\";\nimport offcanvasString from \"~/strings/offcanvasString\";\n\nimport styleTip from \"~/util/styleTip\";\nimport createTip from \"~/util/createTip\";\nimport { appendPopup, hasPopup, removePopup } from \"~/util/popupContainer\";\nimport getElementContainer from \"~/util/getElementContainer\";\nimport tooltipDefaults from \"~/util/tooltipDefaults\";\nimport BaseComponent from \"./base-component\";\nimport type { TooltipEvent, TooltipOptions } from \"~/interface/tooltip\";\nimport type { PopoverEvent, PopoverOptions } from \"~/interface/popover\";\n\n// TOOLTIP PRIVATE GC\n// ==================\nconst tooltipSelector =\n `[${dataBsToggle}=\"${tooltipString}\"],[data-tip=\"${tooltipString}\"]`;\nconst titleAttr = \"title\";\n\n/**\n * Static method which returns an existing `Tooltip` instance associated\n * to a target `Element`.\n */\nlet getTooltipInstance = (element: Element) =>\n getInstance<Tooltip>(element, tooltipComponent);\n\n/**\n * A `Tooltip` initialization callback.\n */\nconst tooltipInitCallback = (element: Element) => new Tooltip(element);\n\n// TOOLTIP PRIVATE METHODS\n// =======================\n/**\n * Removes the tooltip from the DOM.\n *\n * @param self the `Tooltip` instance\n */\nconst removeTooltip = (self: Tooltip) => {\n const { element, tooltip, container } = self;\n removeAttribute(element, ariaDescribedBy);\n removePopup(\n tooltip,\n container,\n );\n};\n\n/**\n * Check if container contains the tooltip.\n *\n * @param self Tooltip\n */\nconst hasTip = (self: Tooltip): boolean | undefined => {\n const { tooltip, container } = self;\n\n return tooltip &&\n hasPopup(tooltip, container);\n};\n\n/**\n * Executes after the instance has been disposed.\n *\n * @param self the `Tooltip` instance\n * @param callback the parent dispose callback\n */\nconst disposeTooltipComplete = (self: Tooltip, callback?: () => void) => {\n const { element } = self;\n self._toggleEventListeners();\n\n // istanbul ignore else @preserve\n if (\n hasAttribute(element, dataOriginalTitle) && self.name === tooltipComponent\n ) {\n toggleTooltipTitle(self);\n }\n // istanbul ignore else @preserve\n if (callback) callback();\n};\n\n/**\n * Toggles on/off the special `Tooltip` event listeners.\n *\n * @param self the `Tooltip` instance\n * @param add when `true`, event listeners are added\n */\nconst toggleTooltipAction = (self: Tooltip, add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { element } = self;\n\n action(\n getDocument(element),\n touchstartEvent,\n self.handleTouch,\n passiveHandler,\n );\n};\n\n/**\n * Executes after the tooltip was shown to the user.\n *\n * @param self the `Tooltip` instance\n */\nconst tooltipShownAction = (self: Tooltip) => {\n const { element } = self;\n const shownTooltipEvent = createCustomEvent<\n Record<string, never>,\n TooltipEvent | PopoverEvent\n >(\n `shown.bs.${toLowerCase(self.name)}`,\n );\n\n toggleTooltipAction(self, true);\n dispatchEvent(element, shownTooltipEvent);\n Timer.clear(element, \"in\");\n};\n\n/**\n * Executes after the tooltip was hidden to the user.\n *\n * @param self the `Tooltip` instance\n */\nconst tooltipHiddenAction = (self: Tooltip) => {\n const { element } = self;\n const hiddenTooltipEvent = createCustomEvent<\n Record<string, never>,\n TooltipEvent | PopoverEvent\n >(\n `hidden.bs.${toLowerCase(self.name)}`,\n );\n\n toggleTooltipAction(self);\n removeTooltip(self);\n dispatchEvent(element, hiddenTooltipEvent);\n\n Timer.clear(element, \"out\");\n};\n\n/**\n * Toggles on/off the `Tooltip` event listeners that hide/update the tooltip.\n *\n * @param self the `Tooltip` instance\n * @param add when `true`, event listeners are added\n */\nconst toggleTooltipOpenHandlers = (self: Tooltip, add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { element, tooltip } = self;\n const parentModal = closest(element, `.${modalString}`);\n const parentOffcanvas = closest(element, `.${offcanvasString}`);\n\n if (add) {\n [element, tooltip]\n .forEach((target) => self._observer.observe(target));\n } else self._observer.disconnect();\n\n // dismiss tooltips inside modal / offcanvas\n if (parentModal) {\n action(parentModal, `hide.bs.${modalString}`, self.handleHide);\n }\n if (parentOffcanvas) {\n action(parentOffcanvas, `hide.bs.${offcanvasString}`, self.handleHide);\n }\n};\n\n/**\n * Toggles the `title` and `data-original-title` attributes.\n *\n * @param self the `Tooltip` instance\n * @param content when `true`, event listeners are added\n */\nconst toggleTooltipTitle = (self: Tooltip, content?: string) => {\n // [0 - add, 1 - remove] | [0 - remove, 1 - add]\n const titleAtt = [dataOriginalTitle, titleAttr];\n const { element } = self;\n\n setAttribute(\n element,\n titleAtt[content ? 0 : 1],\n content ||\n getAttribute(element, titleAtt[0]) ||\n // istanbul ignore next @preserve\n \"\",\n );\n removeAttribute(element, titleAtt[content ? 1 : 0]);\n};\n\n// TOOLTIP DEFINITION\n// ==================\n/** Creates a new `Tooltip` instance. */\nexport default class Tooltip extends BaseComponent {\n static selector = tooltipSelector;\n static init = tooltipInitCallback;\n static getInstance = getTooltipInstance;\n static styleTip = styleTip;\n declare element: Element & HTMLOrSVGElement;\n declare options: TooltipOptions;\n declare btn?: HTMLElement;\n declare tooltip: HTMLElement;\n declare container: HTMLElement;\n declare offsetParent: Element | Window;\n declare arrow: HTMLElement;\n declare enabled: boolean;\n declare id: string;\n declare _observer: PositionObserver;\n\n /**\n * @param target the target element\n * @param config the instance options\n */\n constructor(target: Element | string, config?: Partial<TooltipOptions>) {\n super(target, config);\n\n const { element } = this;\n const isTooltip = this.name === tooltipComponent;\n const tipString = isTooltip ? tooltipString : popoverString;\n const tipComponent = isTooltip ? tooltipComponent : popoverComponent;\n\n // istanbul ignore next @preserve: this is to set Popover too\n getTooltipInstance = <T extends Tooltip>(elem: Element) =>\n getInstance<T>(elem, tipComponent);\n\n // additional properties\n this.enabled = true;\n /** Set unique ID for `aria-describedby`. */\n this.id = `${tipString}-${getUID(element, tipString)}`;\n\n // instance options\n const { options } = this;\n\n // invalidate\n // istanbul ignore else @preserve\n if (((!options.title && isTooltip) || (!isTooltip && !options.content))) {\n return;\n }\n\n // reset default options\n ObjectAssign(tooltipDefaults, { titleAttr: \"\" });\n\n // set title attributes and add event listeners\n // istanbul ignore else @preserve\n if (\n hasAttribute(element, titleAttr) && isTooltip &&\n typeof options.title === \"string\"\n ) {\n toggleTooltipTitle(this, options.title);\n }\n\n // set containers\n const container = getElementContainer(element);\n const offsetParent = [\"sticky\", \"fixed\", \"relative\"].some(\n (position) =>\n getElementStyle(container, \"position\") ===\n position,\n )\n ? container\n : getWindow(element);\n\n this.container = container;\n this.offsetParent = offsetParent;\n\n // create tooltip here\n createTip(this);\n\n /* istanbul ignore if @preserve */\n if (!this.tooltip) return;\n\n // create observer\n this._observer = new PositionObserver(() => this.update());\n\n // attach events\n this._toggleEventListeners(true);\n }\n\n /**\n * Returns component name string.\n */\n get name() {\n return tooltipComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return tooltipDefaults;\n }\n\n // TOOLTIP PUBLIC METHODS\n // ======================\n /** Handles the focus event on iOS. */\n // istanbul ignore next @preserve - impossible to test without Apple device\n handleFocus = () => focus(this.element as HTMLElement);\n /** Shows the tooltip. */\n handleShow = () => this.show();\n show() {\n const { options, tooltip, element, container, id } = this;\n const { animation } = options;\n const outTimer = Timer.get(element, \"out\");\n\n Timer.clear(element, \"out\");\n\n if (tooltip && !outTimer && !hasTip(this)) {\n Timer.set(\n element,\n () => {\n const showTooltipEvent = createCustomEvent<\n Record<string, never>,\n TooltipEvent | PopoverEvent\n >(\n `show.bs.${toLowerCase(this.name)}`,\n );\n dispatchEvent(element, showTooltipEvent);\n\n // istanbul ignore else @preserve\n if (!showTooltipEvent.defaultPrevented) {\n // append to container\n appendPopup(tooltip, container);\n\n setAttribute(element, ariaDescribedBy, `#${id}`);\n\n this.update();\n toggleTooltipOpenHandlers(this, true);\n\n // istanbul ignore else @preserve\n if (!hasClass(tooltip, showClass)) addClass(tooltip, showClass);\n // istanbul ignore else @preserve\n if (animation) {\n emulateTransitionEnd(tooltip, () => tooltipShownAction(this));\n } else tooltipShownAction(this);\n }\n },\n 17,\n \"in\",\n );\n }\n }\n\n /** Hides the tooltip. */\n handleHide = () => this.hide();\n hide() {\n const { options, tooltip, element } = this;\n const { animation, delay } = options;\n\n Timer.clear(element, \"in\");\n\n // istanbul ignore else @preserve\n if (tooltip && hasTip(this)) {\n Timer.set(\n element,\n () => {\n const hideTooltipEvent = createCustomEvent<\n Record<string, never>,\n TooltipEvent | PopoverEvent\n >(\n `hide.bs.${toLowerCase(this.name)}`,\n );\n dispatchEvent(element, hideTooltipEvent);\n\n // istanbul ignore else @preserve\n if (!hideTooltipEvent.defaultPrevented) {\n this.update();\n removeClass(tooltip, showClass);\n toggleTooltipOpenHandlers(this);\n\n // istanbul ignore else @preserve\n if (animation) {\n emulateTransitionEnd(tooltip, () => tooltipHiddenAction(this));\n } else tooltipHiddenAction(this);\n }\n },\n delay + 17,\n \"out\",\n );\n }\n }\n\n /** Updates the tooltip position. */\n update = () => {\n styleTip(this);\n };\n\n /** Toggles the tooltip visibility. */\n toggle = () => {\n const { tooltip } = this;\n\n if (tooltip && !hasTip(this)) this.show();\n else this.hide();\n };\n\n /** Enables the tooltip. */\n enable() {\n const { enabled } = this;\n // istanbul ignore else @preserve\n if (!enabled) {\n this._toggleEventListeners(true);\n this.enabled = !enabled;\n }\n }\n\n /** Disables the tooltip. */\n disable() {\n const { tooltip, enabled } = this;\n // istanbul ignore else @preserve\n if (enabled) {\n if (tooltip && hasTip(this)) this.hide();\n this._toggleEventListeners();\n this.enabled = !enabled;\n }\n }\n\n /** Toggles the `disabled` property. */\n toggleEnabled() {\n if (!this.enabled) this.enable();\n else this.disable();\n }\n\n /**\n * Handles the `touchstart` event listener for `Tooltip`\n *\n * @this {Tooltip}\n * @param {TouchEvent} e the `Event` object\n */\n handleTouch = ({ target }: TouchEvent) => {\n const { tooltip, element } = this;\n\n // istanbul ignore if @preserve\n if (\n (tooltip && tooltip.contains(target)) ||\n target === element ||\n (target && element.contains(target))\n ) {\n // smile for ESLint\n } else {\n this.hide();\n }\n };\n\n /**\n * Toggles on/off the `Tooltip` event listeners.\n *\n * @param add when `true`, event listeners are added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n // btn is only for dismissible popover\n const { element, options, btn } = this;\n const { trigger } = options;\n const isPopover = this.name !== tooltipComponent;\n const dismissible = isPopover && (options as PopoverOptions).dismissible\n ? true\n : false;\n\n // istanbul ignore else @preserve\n if (!trigger.includes(\"manual\")) {\n this.enabled = !!add;\n\n const triggerOptions = trigger.split(\" \");\n\n triggerOptions.forEach((tr) => {\n // istanbul ignore else @preserve\n if (tr === mousehoverEvent) {\n action(element, mousedownEvent, this.handleShow);\n action(element, mouseenterEvent, this.handleShow);\n\n // istanbul ignore else @preserve\n if (!dismissible) {\n action(element, mouseleaveEvent, this.handleHide);\n action(\n getDocument(element),\n touchstartEvent,\n this.handleTouch,\n passiveHandler,\n );\n }\n } else if (tr === mouseclickEvent) {\n action(element, tr, !dismissible ? this.toggle : this.handleShow);\n } else if (tr === focusEvent) {\n action(element, focusinEvent, this.handleShow);\n // istanbul ignore else @preserve\n if (!dismissible) action(element, focusoutEvent, this.handleHide);\n // istanbul ignore else @preserve\n if (isApple()) {\n action(element, mouseclickEvent, this.handleFocus);\n }\n }\n // istanbul ignore else @preserve\n if (dismissible && btn) {\n action(btn, mouseclickEvent, this.handleHide);\n }\n });\n }\n };\n\n /** Removes the `Tooltip` from the target element. */\n dispose() {\n const { tooltip, options } = this;\n const clone = { ...this, name: this.name };\n const callback = () =>\n setTimeout(\n () => disposeTooltipComplete(clone, () => super.dispose()),\n 17,\n );\n\n if (options.animation && hasTip(clone)) {\n this.options.delay = 0; // reset delay\n this.hide();\n emulateTransitionEnd(tooltip, callback);\n } else {\n callback();\n }\n }\n}\n","/* Native JavaScript for Bootstrap 5 | Popover\n---------------------------------------------- */\nimport { focus, getInstance, ObjectAssign } from \"@thednp/shorty\";\n\nimport dataBsToggle from \"~/strings/dataBsToggle\";\nimport popoverString from \"~/strings/popoverString\";\nimport popoverComponent from \"~/strings/popoverComponent\";\n\nimport getTipTemplate from \"~/util/getTipTemplate\";\nimport styleTip from \"~/util/styleTip\";\nimport tooltipDefaults from \"~/util/tooltipDefaults\";\nimport Tooltip from \"./tooltip\";\n\nimport type { PopoverOptions /* , PopoverEvent */ } from \"~/interface/popover\";\n\n// POPOVER PRIVATE GC\n// ==================\nconst popoverSelector =\n `[${dataBsToggle}=\"${popoverString}\"],[data-tip=\"${popoverString}\"]`;\n\nconst popoverDefaults: PopoverOptions = ObjectAssign({}, tooltipDefaults, {\n template: getTipTemplate(popoverString),\n content: \"\",\n dismissible: false,\n btnClose:\n '<button class=\"btn-close position-absolute top-0 end-0 m-1\" aria-label=\"Close\"></button>',\n});\n\n/**\n * Static method which returns an existing `Popover` instance associated\n * to a target `Element`.\n */\nconst getPopoverInstance = (element: Element) =>\n getInstance<Popover>(element, popoverComponent);\n\n/**\n * A `Popover` initialization callback.\n */\nconst popoverInitCallback = (element: Element) => new Popover(element);\n\n// POPOVER DEFINITION\n// ==================\n/** Returns a new `Popover` instance. */\nexport default class Popover extends Tooltip {\n static selector = popoverSelector;\n static init = popoverInitCallback;\n static getInstance = getPopoverInstance;\n static styleTip = styleTip;\n declare options: PopoverOptions;\n\n /**\n * @param target the target element\n * @param config the instance options\n */\n constructor(target: Element | string, config?: Partial<PopoverOptions>) {\n super(target, config);\n }\n /**\n * Returns component name string.\n */\n get name() {\n return popoverComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return popoverDefaults;\n }\n\n /* extend original `show()` */\n show = () => {\n super.show();\n // btn only exists within dismissible popover\n const { options, btn } = this;\n // istanbul ignore else @preserve\n if (options.dismissible && btn) setTimeout(() => focus(btn), 17);\n };\n}\n","/** @type {string} */\nconst scrollspyString = \"scrollspy\";\nexport default scrollspyString;\n","/** @type {string} */\nconst scrollspyComponent = \"ScrollSpy\";\nexport default scrollspyComponent;\n","/* Native JavaScript for Bootstrap 5 | ScrollSpy\n------------------------------------------------ */\nimport {\n addClass,\n closest,\n createCustomEvent,\n dispatchEvent,\n getAttribute,\n getBoundingClientRect,\n getDocument,\n getDocumentElement,\n getElementById,\n getElementsByTagName,\n getInstance,\n hasClass,\n mouseclickEvent,\n MouseEvent,\n querySelector,\n removeClass,\n} from \"@thednp/shorty\";\n\nimport PositionObserver from \"@thednp/position-observer\";\nimport { addListener, removeListener } from \"@thednp/event-listener\";\n\nimport activeClass from \"~/strings/activeClass\";\nimport scrollspyString from \"~/strings/scrollspyString\";\nimport scrollspyComponent from \"~/strings/scrollspyComponent\";\nimport isDisabled from \"~/util/isDisabled\";\nimport BaseComponent from \"./base-component\";\nimport { ScrollSpyEvent, ScrollSpyOptions } from \"~/interface/scrollspy\";\n\n// SCROLLSPY PRIVATE GC\n// ====================\nconst scrollspySelector = '[data-bs-spy=\"scroll\"]';\nconst scrollSpyAnchorSelector = \"[href]\";\n\nconst scrollspyDefaults: Partial<ScrollSpyOptions> = {\n offset: 10,\n target: undefined,\n};\n\ntype ScrollSpyEventProps = {\n relatedTarget: HTMLElement;\n};\n\n/**\n * Static method which returns an existing `ScrollSpy` instance associated\n * to a target `Element`.\n */\nconst getScrollSpyInstance = (element: Element) =>\n getInstance<ScrollSpy>(element, scrollspyComponent);\n\n/**\n * A `ScrollSpy` initialization callback.\n */\nconst scrollspyInitCallback = (element: Element) => new ScrollSpy(element);\n\n// SCROLLSPY CUSTOM EVENT\n// ======================\nconst activateScrollSpy = createCustomEvent<\n ScrollSpyEventProps,\n ScrollSpyEvent\n>(`activate.bs.${scrollspyString}`);\n\n// SCROLLSPY PRIVATE METHODS\n// =========================\n/**\n * Update the state of all items.\n *\n * @param self the `ScrollSpy` instance\n */\nconst updateSpyTargets = (self: ScrollSpy) => {\n const {\n target,\n _itemsLength,\n _observables,\n } = self;\n\n const links = getElementsByTagName<HTMLAnchorElement>(\"A\", target);\n const doc = getDocument(target);\n\n // only update items once or with each mutation\n // istanbul ignore else @preserve\n if (!links.length || _itemsLength === _observables.size) return;\n // reset arrays & update\n _observables.clear();\n\n Array.from(links).forEach((link) => {\n const hash = getAttribute(link, \"href\")?.slice(1);\n const targetItem = hash?.length ? doc.getElementById(hash) : null;\n\n if (targetItem && !isDisabled(link)) {\n self._observables.set(targetItem, link);\n }\n });\n self._itemsLength = self._observables.size;\n};\n\n/**\n * Clear all items of the target.\n *\n * @param target a single item\n */\nconst clear = (target: Element) => {\n Array.from(getElementsByTagName<HTMLAnchorElement>(\"A\", target)).forEach(\n (item) => {\n if (hasClass(item, activeClass)) removeClass(item, activeClass);\n },\n );\n};\n\n/**\n * Activates a new item.\n *\n * @param self the `ScrollSpy` instance\n * @param item a single item\n */\nconst activate = (self: ScrollSpy, item: HTMLElement) => {\n const { target, element } = self;\n\n // istanbul ignore else @preserve\n clear(target);\n\n self._activeItem = item;\n addClass(item, activeClass);\n\n // activate all parents\n let parentItem = item;\n while (parentItem !== target) {\n parentItem = parentItem.parentElement as HTMLElement;\n if (\n [\"nav\", \"dropdown-menu\", \"list-group\"].some((c) =>\n hasClass(parentItem, c)\n )\n ) {\n const parentLink = parentItem.previousElementSibling as\n | HTMLElement\n | null;\n\n // istanbul ignore else @preserve\n if (parentLink && !hasClass(parentLink, activeClass)) {\n addClass(parentLink, activeClass);\n }\n }\n }\n\n // dispatch\n activateScrollSpy.relatedTarget = item;\n dispatchEvent(element, activateScrollSpy);\n};\n\nconst getOffset = (self: ScrollSpy, target: HTMLElement) => {\n const { scrollTarget, element, options } = self;\n\n return (scrollTarget !== element\n ? getBoundingClientRect(target).top + scrollTarget.scrollTop\n : target.offsetTop) - (options.offset as number || 10);\n};\n\n// SCROLLSPY DEFINITION\n// ====================\n/** Returns a new `ScrollSpy` instance. */\nexport default class ScrollSpy extends BaseComponent {\n static selector = scrollspySelector;\n static init = scrollspyInitCallback;\n static getInstance = getScrollSpyInstance;\n declare element: HTMLElement;\n declare options: ScrollSpyOptions;\n declare target: HTMLElement;\n declare scrollTarget: HTMLElement;\n declare _itemsLength: number;\n declare _activeItem: HTMLElement | null;\n declare _observables: Map<HTMLElement, HTMLElement>;\n declare _observer: PositionObserver; //| IntersectionObserver;\n\n /**\n * @param target the target element\n * @param config the instance options\n */\n constructor(\n target: Element | string,\n config?: Partial<ScrollSpyOptions>,\n ) {\n super(target, config);\n\n // initialization element & options\n const { element, options } = this;\n\n // get target\n const spyTarget = querySelector(\n options.target,\n getDocument(element),\n );\n\n // invalidate\n if (!spyTarget) return;\n this.target = spyTarget;\n\n // set initial state\n this.scrollTarget = element.clientHeight < element.scrollHeight\n ? element\n : getDocumentElement(element);\n this._observables = new Map();\n\n // run an initial burst, we need to know the targets\n this.refresh();\n // updateSpyTargets(this);\n\n // create observer\n this._observer = new PositionObserver(() => {\n requestAnimationFrame(() => this.refresh());\n }, {\n root: this.scrollTarget,\n });\n\n // add event handlers\n this._toggleEventListeners(true);\n }\n\n /* eslint-disable */\n /**\n * Returns component name string.\n */\n get name() {\n return scrollspyComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return scrollspyDefaults;\n }\n /* eslint-enable */\n\n // SCROLLSPY PUBLIC METHODS\n // ========================\n /** Updates all items. */\n refresh = () => {\n const { target, scrollTarget } = this;\n // check if target is visible and invalidate\n // istanbul ignore if @preserve\n if (!target || target.offsetHeight === 0) return;\n\n updateSpyTargets(this);\n const { _itemsLength, _observables, _activeItem } = this;\n\n // istanbul ignore if @preserve\n if (!_itemsLength) return;\n const entries = _observables.entries().toArray();\n\n const { scrollTop, scrollHeight, clientHeight } = scrollTarget;\n\n if (scrollTop >= scrollHeight - clientHeight) {\n const newActiveItem = entries[_itemsLength - 1]?.[1];\n\n // istanbul ignore else @preserve\n if (_activeItem !== newActiveItem) activate(this, newActiveItem);\n return;\n }\n\n const firstOffset = entries[0]?.[0]\n ? getOffset(this, entries[0][0])\n : /* istanbul ignore next */ null;\n if (\n firstOffset !== null && scrollTop < firstOffset &&\n firstOffset > 0\n ) {\n this._activeItem = null;\n clear(target);\n return;\n }\n\n for (let i = 0; i < _itemsLength; i += 1) {\n const [targetItem, item] = entries[i];\n const offsetTop = getOffset(this, targetItem);\n const nextTarget = entries[i + 1]?.[0];\n const nextOffsetTop = nextTarget\n ? getOffset(this, nextTarget)\n : /* istanbul ignore next */ null;\n\n // istanbul ignore else @preserve\n if (\n _activeItem !== item &&\n scrollTop >= offsetTop &&\n (nextOffsetTop === null || scrollTop < nextOffsetTop)\n ) {\n activate(this, item);\n break;\n }\n }\n };\n\n /**\n * This method provides an event handle\n * for scrollspy\n * @param e the event listener object\n */\n _scrollTo = (e: MouseEvent<HTMLAnchorElement>) => {\n const item = closest(e.target, scrollSpyAnchorSelector);\n const hash = item && getAttribute(item, \"href\")?.slice(1);\n const targetItem = hash && getElementById(hash, this.target);\n\n // istanbul ignore else @preserve\n if (targetItem) {\n this.scrollTarget.scrollTo({\n top: targetItem.offsetTop,\n behavior: \"smooth\",\n });\n e.preventDefault();\n }\n };\n\n /**\n * Toggles on/off the component observer.\n *\n * @param self the ScrollSpy instance\n * @param add when `true`, listener is added\n */\n _toggleEventListeners = (\n add?: boolean,\n ) => {\n const { target, _observables, _observer, _scrollTo } = this;\n const action = add ? addListener : removeListener;\n action(target, mouseclickEvent, _scrollTo);\n\n if (add) {\n _observables?.forEach((_, targetItem) => _observer.observe(targetItem));\n } else _observer.disconnect();\n };\n\n /** Removes `ScrollSpy` from the target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n","/** @type {string} */\nconst tabString = \"tab\";\nexport default tabString;\n","/** @type {string} */\nconst tabComponent = \"Tab\";\nexport default tabComponent;\n","/* Native JavaScript for Bootstrap 5 | Tab\n------------------------------------------ */\nimport {\n addClass,\n ariaSelected,\n closest,\n createCustomEvent,\n dispatchEvent,\n emulateTransitionEnd,\n getElementsByClassName,\n getInstance,\n hasClass,\n isHTMLElement,\n mouseclickEvent,\n MouseEvent,\n querySelector,\n reflow,\n removeClass,\n setAttribute,\n Timer,\n} from \"@thednp/shorty\";\n\nimport { addListener, removeListener } from \"@thednp/event-listener\";\n\nimport collapsingClass from \"~/strings/collapsingClass\";\nimport activeClass from \"~/strings/activeClass\";\nimport fadeClass from \"~/strings/fadeClass\";\nimport showClass from \"~/strings/showClass\";\nimport dropdownClasses from \"~/strings/dropdownClasses\";\nimport dataBsToggle from \"~/strings/dataBsToggle\";\nimport tabString from \"~/strings/tabString\";\nimport tabComponent from \"~/strings/tabComponent\";\nimport getTargetElement from \"~/util/getTargetElement\";\nimport BaseComponent from \"./base-component\";\nimport type { /* TabOptions, */ TabEvent } from \"~/interface/tab\";\n\n// TAB PRIVATE GC\n// ================\nconst tabSelector = `[${dataBsToggle}=\"${tabString}\"]`;\n\n/**\n * Static method which returns an existing `Tab` instance associated\n * to a target `Element`.\n */\nconst getTabInstance = (element: Element) =>\n getInstance<Tab>(element, tabComponent);\n\n/** A `Tab` initialization callback. */\nconst tabInitCallback = (element: Element) => new Tab(element);\n\ntype TabEventProps = {\n relatedTarget: Element & EventTarget | undefined;\n};\n\n// TAB CUSTOM EVENTS\n// =================\nconst showTabEvent = createCustomEvent<TabEventProps, TabEvent>(\n `show.bs.${tabString}`,\n);\nconst shownTabEvent = createCustomEvent<TabEventProps, TabEvent>(\n `shown.bs.${tabString}`,\n);\nconst hideTabEvent = createCustomEvent<TabEventProps, TabEvent>(\n `hide.bs.${tabString}`,\n);\nconst hiddenTabEvent = createCustomEvent<TabEventProps, TabEvent>(\n `hidden.bs.${tabString}`,\n);\n\ninterface TabPrivate {\n tab: HTMLElement | null;\n content: HTMLElement | null;\n currentHeight: number;\n nextHeight: number;\n}\n\n/**\n * Stores the current active tab and its content\n * for a given `.nav` element.\n */\nconst tabPrivate: Map<HTMLElement, TabPrivate> = new Map();\n\n// TAB PRIVATE METHODS\n// ===================\n/**\n * Executes after tab transition has finished.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabEnd = (self: Tab) => {\n const { tabContent, nav } = self;\n\n // istanbul ignore else @preserve\n if (tabContent && hasClass(tabContent, collapsingClass)) {\n tabContent.style.height = \"\";\n removeClass(tabContent, collapsingClass);\n }\n\n // istanbul ignore else @preserve\n if (nav) Timer.clear(nav);\n};\n\n/**\n * Executes before showing the tab content.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabShow = (self: Tab) => {\n const { element, tabContent, content: nextContent, nav } = self;\n const { tab } = (isHTMLElement(nav) && tabPrivate.get(nav)) ||\n // istanbul ignore next @preserve\n { tab: null };\n\n // istanbul ignore else @preserve\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n const { currentHeight, nextHeight } = tabPrivate.get(element) ||\n // istanbul ignore next @preserve\n { currentHeight: 0, nextHeight: 0 };\n // istanbul ignore else @preserve: vitest won't validate this branch\n if (currentHeight !== nextHeight) {\n // enables height animation\n setTimeout(() => {\n tabContent.style.height = `${nextHeight}px`;\n reflow(tabContent);\n emulateTransitionEnd(tabContent, () => triggerTabEnd(self));\n }, 50);\n } else {\n triggerTabEnd(self);\n }\n } else if (nav) Timer.clear(nav);\n\n shownTabEvent.relatedTarget = tab as HTMLElement | undefined;\n\n dispatchEvent(element, shownTabEvent);\n};\n\n/**\n * Executes before hiding the tab.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabHide = (self: Tab) => {\n const { element, content: nextContent, tabContent, nav } = self;\n const { tab, content } = (nav && tabPrivate.get(nav)) ||\n // istanbul ignore next @preserve\n { tab: null, content: null };\n let currentHeight = 0;\n\n // istanbul ignore else @preserve\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n [content, nextContent].forEach((c) => {\n // istanbul ignore else @preserve\n if (c) addClass(c, \"overflow-hidden\");\n });\n currentHeight = content\n ? content.scrollHeight\n : /* istanbul ignore next @preserve */ 0;\n }\n\n // update relatedTarget and dispatch event\n showTabEvent.relatedTarget = tab as HTMLElement | undefined;\n hiddenTabEvent.relatedTarget = element as HTMLElement;\n dispatchEvent(element, showTabEvent);\n\n // istanbul ignore if @preserve\n if (showTabEvent.defaultPrevented) return;\n // istanbul ignore else @preserve\n if (nextContent) addClass(nextContent, activeClass);\n // istanbul ignore else @preserve\n if (content) removeClass(content, activeClass);\n\n // istanbul ignore else @preserve\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n const nextHeight = nextContent.scrollHeight;\n tabPrivate.set(element, {\n currentHeight,\n nextHeight,\n tab: null,\n content: null,\n });\n\n addClass(tabContent, collapsingClass);\n tabContent.style.height = `${currentHeight}px`;\n reflow(tabContent);\n [content, nextContent].forEach((c) => {\n // istanbul ignore else @preserve\n if (c) removeClass(c, \"overflow-hidden\");\n });\n }\n\n if (nextContent && nextContent && hasClass(nextContent, fadeClass)) {\n setTimeout(() => {\n addClass(nextContent, showClass);\n emulateTransitionEnd(nextContent, () => {\n triggerTabShow(self);\n });\n }, 1);\n } else {\n // istanbul ignore else @preserve\n if (nextContent) addClass(nextContent, showClass);\n triggerTabShow(self);\n }\n\n // istanbul ignore else @preserve\n if (tab) dispatchEvent(tab, hiddenTabEvent);\n};\n\n/**\n * Returns the current active tab and its target content.\n *\n * @param self the `Tab` instance\n * @returns the query result\n */\nconst getActiveTab = (\n self: Tab,\n): { tab: HTMLElement | null; content: HTMLElement | null } => {\n const { nav } = self;\n // istanbul ignore next @preserve\n if (!isHTMLElement(nav)) {\n return { tab: null, content: null };\n }\n\n const activeTabs = getElementsByClassName<HTMLElement>(\n activeClass,\n nav,\n );\n let tab: HTMLElement | null = null;\n // istanbul ignore else @preserve\n if (\n activeTabs.length === 1 &&\n !dropdownClasses.some((c) =>\n hasClass(activeTabs[0].parentElement as HTMLElement, c)\n )\n ) {\n [tab] = activeTabs;\n } else if (activeTabs.length > 1) {\n tab = activeTabs[activeTabs.length - 1];\n }\n const content = isHTMLElement(tab) ? getTargetElement(tab) : null;\n return { tab, content };\n};\n\n/**\n * Returns a parent dropdown.\n *\n * @param element the `Tab` element\n * @returns the parent dropdown\n */\nconst getParentDropdown = (element?: HTMLElement) => {\n // istanbul ignore next @preserve\n if (!isHTMLElement(element)) return null;\n const dropdown = closest(element, `.${dropdownClasses.join(\",.\")}`);\n return dropdown\n ? querySelector<HTMLElement>(`.${dropdownClasses[0]}-toggle`, dropdown)\n : null;\n};\n\n// TAB EVENT HANDLER\n// =================\n/**\n * Handles the `click` event listener.\n *\n * @param e the `Event` object\n */\nconst tabClickHandler = (e: MouseEvent<Element>) => {\n const element = closest(e.target, tabSelector);\n const self = element && getTabInstance(element);\n\n // istanbul ignore if @preserve\n if (!self) return;\n e.preventDefault();\n self.show();\n};\n\n// TAB DEFINITION\n// ==============\n/** Creates a new `Tab` instance. */\nexport default class Tab extends BaseComponent {\n static selector = tabSelector;\n static init = tabInitCallback;\n static getInstance = getTabInstance;\n declare element: HTMLElement;\n declare nav: HTMLElement | null;\n declare content: HTMLElement | null;\n declare tabContent: HTMLElement | null;\n declare nextContent: HTMLElement | null;\n declare dropdown: HTMLElement | null;\n\n /** @param target the target element */\n constructor(target: Element | string) {\n super(target);\n\n // initialization element\n const { element } = this;\n const content = getTargetElement(element);\n\n // no point initializing a tab without a corresponding content\n // istanbul ignore else @preserve\n if (!content) return;\n\n const nav = closest<HTMLElement>(element, \".nav\");\n const container = closest<HTMLElement>(\n content as HTMLElement,\n \".tab-content\",\n );\n\n this.nav = nav;\n this.content = content;\n this.tabContent = container;\n\n // event targets\n this.dropdown = getParentDropdown(element);\n\n // show first Tab instance of none is shown\n // suggested on #432\n const { tab } = getActiveTab(this);\n if (nav && !tab) {\n const firstTab = querySelector(tabSelector, nav);\n const firstTabContent = firstTab && getTargetElement(firstTab);\n\n // istanbul ignore else @preserve\n if (firstTabContent) {\n addClass(firstTab, activeClass);\n addClass(firstTabContent, showClass);\n addClass(firstTabContent, activeClass);\n setAttribute(element, ariaSelected, \"true\");\n }\n }\n\n // add event listener\n this._toggleEventListeners(true);\n }\n\n /**\n * Returns component name string.\n */\n get name() {\n return tabComponent;\n }\n\n // TAB PUBLIC METHODS\n // ==================\n /** Shows the tab to the user. */\n show() {\n const { element, content: nextContent, nav, dropdown } = this;\n\n // istanbul ignore else @preserve\n if ((nav && Timer.get(nav)) || hasClass(element, activeClass)) return;\n const { tab, content } = getActiveTab(this);\n\n // istanbul ignore else @preserve\n if (nav && tab) {\n tabPrivate.set(nav, { tab, content, currentHeight: 0, nextHeight: 0 });\n }\n\n // update relatedTarget and dispatch\n hideTabEvent.relatedTarget = element as HTMLElement;\n\n // istanbul ignore if @preserve\n if (!isHTMLElement(tab)) return;\n\n dispatchEvent(tab, hideTabEvent);\n\n // istanbul ignore else @preserve\n if (hideTabEvent.defaultPrevented) return;\n\n addClass(element, activeClass);\n setAttribute(element, ariaSelected, \"true\");\n\n const activeDropdown = isHTMLElement(tab) && getParentDropdown(tab);\n if (activeDropdown && hasClass(activeDropdown, activeClass)) {\n removeClass(activeDropdown, activeClass);\n }\n\n // istanbul ignore else @preserve\n if (nav) {\n const toggleTab = () => {\n // istanbul ignore else @preserve\n if (tab) {\n removeClass(tab, activeClass);\n setAttribute(tab, ariaSelected, \"false\");\n }\n if (dropdown && !hasClass(dropdown, activeClass)) {\n addClass(dropdown, activeClass);\n }\n };\n\n if (\n content &&\n (hasClass(content, fadeClass) ||\n (nextContent && hasClass(nextContent, fadeClass)))\n ) {\n Timer.set(nav, toggleTab, 1);\n } else toggleTab();\n }\n\n // istanbul ignore else @preserve\n if (content) {\n removeClass(content, showClass);\n if (hasClass(content, fadeClass)) {\n emulateTransitionEnd(content, () => triggerTabHide(this));\n } else {\n triggerTabHide(this);\n }\n }\n }\n\n /**\n * Toggles on/off the `click` event listener.\n *\n * @param add when `true`, event listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n action(this.element, mouseclickEvent, tabClickHandler);\n };\n\n /** Removes the `Tab` component from the target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n","/** @type {string} */\nconst toastString = \"toast\";\nexport default toastString;\n","/** @type {string} */\nconst toastComponent = \"Toast\";\nexport default toastComponent;\n","/* Native JavaScript for Bootstrap 5 | Toast\n-------------------------------------------- */\nimport {\n addClass,\n createCustomEvent,\n dispatchEvent,\n emulateTransitionEnd,\n focusinEvent,\n focusoutEvent,\n getDocument,\n getInstance,\n hasClass,\n mouseclickEvent,\n mouseenterEvent,\n MouseEvent,\n mouseleaveEvent,\n querySelector,\n querySelectorAll,\n reflow,\n removeClass,\n Timer,\n} from \"@thednp/shorty\";\n\nimport { addListener, removeListener } from \"@thednp/event-listener\";\n\nimport fadeClass from \"~/strings/fadeClass\";\nimport showClass from \"~/strings/showClass\";\nimport dataBsDismiss from \"~/strings/dataBsDismiss\";\nimport dataBsToggle from \"~/strings/dataBsToggle\";\nimport toastString from \"~/strings/toastString\";\nimport toastComponent from \"~/strings/toastComponent\";\nimport getTargetElement from \"~/util/getTargetElement\";\nimport isDisabled from \"~/util/isDisabled\";\nimport BaseComponent from \"./base-component\";\nimport { ToastEvent, ToastOptions } from \"~/interface/toast\";\n\n// TOAST PRIVATE GC\n// ================\nconst toastSelector = `.${toastString}`;\nconst toastDismissSelector = `[${dataBsDismiss}=\"${toastString}\"]`;\nconst toastToggleSelector = `[${dataBsToggle}=\"${toastString}\"]`;\nconst showingClass = \"showing\";\n/** @deprecated */\nconst hideClass = \"hide\";\n\nconst toastDefaults = {\n animation: true,\n autohide: true,\n delay: 5000,\n};\n\n/**\n * Static method which returns an existing `Toast` instance associated\n * to a target `Element`.\n */\nconst getToastInstance = (element: Element) =>\n getInstance<Toast>(element, toastComponent);\n\n/**\n * A `Toast` initialization callback.\n */\nconst toastInitCallback = (element: Element) => new Toast(element);\n\n// TOAST CUSTOM EVENTS\n// ===================\nconst showToastEvent = createCustomEvent<Record<string, never>, ToastEvent>(\n `show.bs.${toastString}`,\n);\nconst shownToastEvent = createCustomEvent<Record<string, never>, ToastEvent>(\n `shown.bs.${toastString}`,\n);\nconst hideToastEvent = createCustomEvent<Record<string, never>, ToastEvent>(\n `hide.bs.${toastString}`,\n);\nconst hiddenToastEvent = createCustomEvent<Record<string, never>, ToastEvent>(\n `hidden.bs.${toastString}`,\n);\n\n// TOAST PRIVATE METHODS\n// =====================\n/**\n * Executes after the toast is shown to the user.\n *\n * @param self the `Toast` instance\n */\nconst showToastComplete = (self: Toast) => {\n const { element, options } = self;\n removeClass(element, showingClass);\n Timer.clear(element, showingClass);\n\n dispatchEvent(element, shownToastEvent);\n // istanbul ignore else @preserve\n if (options.autohide) {\n Timer.set(element, () => self.hide(), options.delay, toastString);\n }\n};\n\n/**\n * Executes after the toast is hidden to the user.\n *\n * @param self the `Toast` instance\n */\nconst hideToastComplete = (self: Toast) => {\n const { element } = self;\n removeClass(element, showingClass);\n removeClass(element, showClass);\n addClass(element, hideClass); // B/C\n Timer.clear(element, toastString);\n dispatchEvent(element, hiddenToastEvent);\n};\n\n/**\n * Executes before hiding the toast.\n *\n * @param self the `Toast` instance\n */\nconst hideToast = (self: Toast) => {\n const { element, options } = self;\n addClass(element, showingClass);\n\n if (options.animation) {\n reflow(element as HTMLElement);\n emulateTransitionEnd(element, () => hideToastComplete(self));\n } else {\n hideToastComplete(self);\n }\n};\n\n/**\n * Executes before showing the toast.\n *\n * @param self the `Toast` instance\n */\nconst showToast = (self: Toast) => {\n const { element, options } = self;\n Timer.set(\n element,\n () => {\n removeClass(element, hideClass); // B/C\n reflow(element as HTMLElement);\n addClass(element, showClass);\n addClass(element, showingClass);\n\n if (options.animation) {\n emulateTransitionEnd(element, () => showToastComplete(self));\n } else {\n showToastComplete(self);\n }\n },\n 17,\n showingClass,\n );\n};\n\n// TOAST EVENT HANDLERS\n// ====================\n/**\n * Handles the `click` event listener for toast.\n *\n * @param e the `Event` object\n */\nfunction toastClickHandler(this: HTMLElement, e: Event) {\n const element = getTargetElement(this);\n const self = element && getToastInstance(element);\n\n // istanbul ignore if @preserve\n if (isDisabled(this)) return;\n // istanbul ignore if @preserve\n if (!self) return;\n // istanbul ignore else @preserve\n if (this.tagName === \"A\") e.preventDefault();\n self.relatedTarget = this;\n self.show();\n}\n\n/**\n * Executes when user interacts with the toast without closing it,\n * usually by hovering or focusing it.\n *\n * @param e the `Toast` instance\n */\nconst interactiveToastHandler = (e: MouseEvent<HTMLElement>) => {\n const element = e.target;\n const self = getToastInstance(element);\n const { type, relatedTarget } = e;\n\n // istanbul ignore if @preserve: a solid filter is required\n if (\n !self || element === relatedTarget ||\n element.contains(relatedTarget as Node)\n ) return;\n\n if ([mouseenterEvent, focusinEvent].includes(type)) {\n Timer.clear(element, toastString);\n } else {\n Timer.set(element, () => self.hide(), self.options.delay, toastString);\n }\n};\n\n// TOAST DEFINITION\n// ================\n/** Creates a new `Toast` instance. */\nexport default class Toast extends BaseComponent {\n static selector = toastSelector;\n static init = toastInitCallback;\n static getInstance = getToastInstance;\n declare element: HTMLElement;\n declare options: ToastOptions;\n declare dismiss: HTMLElement | null;\n declare triggers: HTMLElement[];\n declare relatedTarget: HTMLElement | null;\n\n /**\n * @param target the target `.toast` element\n * @param config the instance options\n */\n constructor(target: Element | string, config?: Partial<ToastOptions>) {\n super(target, config);\n const { element, options } = this;\n\n // set fadeClass, the options.animation will override the markup\n if (options.animation && !hasClass(element, fadeClass)) {\n addClass(element, fadeClass);\n } else if (!options.animation && hasClass(element, fadeClass)) {\n removeClass(element, fadeClass);\n }\n\n // dismiss button\n this.dismiss = querySelector<HTMLElement>(toastDismissSelector, element);\n\n // toast can have multiple triggering elements\n this.triggers = [\n ...querySelectorAll<HTMLElement>(\n toastToggleSelector,\n getDocument(element),\n ),\n ].filter(\n (btn) => getTargetElement(btn) === element,\n );\n\n // add event listener\n this._toggleEventListeners(true);\n }\n /**\n * Returns component name string.\n */\n get name() {\n return toastComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return toastDefaults;\n }\n /**\n * Returns *true* when toast is visible.\n */\n get isShown() {\n return hasClass(this.element, showClass);\n }\n\n // TOAST PUBLIC METHODS\n // ====================\n /** Shows the toast. */\n show = () => {\n const { element, isShown } = this;\n\n // istanbul ignore if @preserve\n if (!element || isShown) return;\n\n dispatchEvent(element, showToastEvent);\n if (!showToastEvent.defaultPrevented) showToast(this);\n };\n\n /** Hides the toast. */\n hide = () => {\n const { element, isShown } = this;\n\n // istanbul ignore if @preserve\n if (!element || !isShown) return;\n\n dispatchEvent(element, hideToastEvent);\n if (!hideToastEvent.defaultPrevented) hideToast(this);\n };\n\n /**\n * Toggles on/off the `click` event listener.\n *\n * @param add when `true`, it will add the listener\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { element, triggers, dismiss, options, hide } = this;\n\n // istanbul ignore else @preserve\n if (dismiss) {\n action(dismiss, mouseclickEvent, hide);\n }\n\n // istanbul ignore else @preserve\n if (options.autohide) {\n [focusinEvent, focusoutEvent, mouseenterEvent, mouseleaveEvent].forEach(\n (e) => action(element, e, interactiveToastHandler),\n );\n }\n // istanbul ignore else @preserve\n if (triggers.length) {\n triggers.forEach((btn) => {\n action(btn, mouseclickEvent, toastClickHandler);\n });\n }\n };\n\n /** Removes the `Toast` component from the target element. */\n dispose() {\n const { element, isShown } = this;\n this._toggleEventListeners();\n Timer.clear(element, toastString);\n\n if (isShown) removeClass(element, showClass);\n\n super.dispose();\n }\n}\n","import { Data, getElementsByTagName, matches } from \"@thednp/shorty\";\n\nimport { addListener } from \"@thednp/event-listener\";\n\nimport Alert from \"../components/alert\";\nimport Button from \"../components/button\";\nimport Carousel from \"../components/carousel\";\nimport Collapse from \"../components/collapse\";\nimport Dropdown from \"../components/dropdown\";\nimport Modal from \"../components/modal\";\nimport Offcanvas from \"../components/offcanvas\";\nimport Popover from \"../components/popover\";\nimport ScrollSpy from \"../components/scrollspy\";\nimport Tab from \"../components/tab\";\nimport Toast from \"../components/toast\";\nimport Tooltip from \"../components/tooltip\";\n\nconst componentsList = new Map<\n string,\n | typeof Alert\n | typeof Button\n | typeof Carousel\n | typeof Collapse\n | typeof Dropdown\n | typeof Modal\n | typeof Offcanvas\n | typeof Popover\n | typeof ScrollSpy\n | typeof Tab\n | typeof Toast\n | typeof Tooltip\n>();\n\ntype Component =\n | Alert\n | Button\n | Carousel\n | Collapse\n | Dropdown\n | Modal\n | Offcanvas\n | Popover\n | ScrollSpy\n | Tab\n | Toast\n | Tooltip;\n\n[\n Alert,\n Button,\n Carousel,\n Collapse,\n Dropdown,\n Modal,\n Offcanvas,\n Popover,\n ScrollSpy,\n Tab,\n Toast,\n Tooltip,\n].forEach((c) => componentsList.set(c.prototype.name, c));\n\n/**\n * Initialize all matched `Element`s for one component.\n *\n * @param callback\n * @param collection\n */\nconst initComponentDataAPI = (\n callback: (el: Element) => Component,\n collection: HTMLCollectionOf<Element> | Element[],\n) => {\n [...collection].forEach((x) => callback(x));\n};\n\n/**\n * Remove one component from a target container element or all in the page.\n *\n * @param component the component name\n * @param context parent `Node`\n */\nconst removeComponentDataAPI = <T>(component: string, context: ParentNode) => {\n const compData = Data.getAllFor(component) as Map<Element, T>;\n\n if (compData) {\n [...compData].forEach(([element, instance]) => {\n if (context.contains(element)) {\n (instance as T & { dispose: () => void }).dispose();\n }\n });\n }\n};\n\n/**\n * Initialize all BSN components for a target container.\n *\n * @param context parent `Node`\n */\nexport const initCallback = (context?: ParentNode) => {\n const lookUp = context && context.nodeName ? context : document;\n const elemCollection = [...getElementsByTagName<Element>(\"*\", lookUp)];\n\n componentsList.forEach((cs) => {\n const { init, selector } = cs;\n initComponentDataAPI(\n init,\n elemCollection.filter((item) => matches(item, selector)),\n );\n });\n};\n\n/**\n * Remove all BSN components for a target container.\n *\n * @param context parent `Node`\n */\nexport const removeDataAPI = (context?: ParentNode) => {\n const lookUp = context && context.nodeName ? context : document;\n\n componentsList.forEach((comp) => {\n removeComponentDataAPI(comp.prototype.name, lookUp);\n });\n};\n\n// Bulk initialize all components\nif (document.body) initCallback();\nelse {\n addListener(document, \"DOMContentLoaded\", () => initCallback(), {\n once: true,\n });\n}\n"],"names":["Le","Oe","X","Pe","Fe","Be","ct","at","it","ft","gt","vt","Et","yt","wt","At","Ot","zt","It","Qt","je","Zt","on","sn","rn","cn","gn","Jt","Xt","M","R","zn","t","e","ee","Q","n","o","j","K","oe","Qn","Kn","Gn","Zn","_n","v","u","i","E","L","to","P","N","q","G","d","T","se","Z","f","s","ie","ue","so","r","a","l","ao","F","S","uo","p","c","g","A","fo","mo","vo","bo","Eo","O","le","m","ho","yo","de","z","_","I","fe","pe","Ao","b","y","So","w","No","me","k","ve","be","Ee","we","Co","V","H","h","Ae","Se","Do","xo","Vo","Ho","Ne","Wo","Te","Qo","jo","fadeClass","showClass","dataBsDismiss","alertString","alertComponent","isDisabled","target","hasClass","getAttribute","Version","version","BaseComponent","config","element","isElement","isString","querySelector","prevInstance","Data","ObjectKeys","normalizeOptions","prop","alertSelector","alertDismissSelector","getAlertInstance","getInstance","alertInitCallback","Alert","closeAlertEvent","createCustomEvent","closedAlertEvent","alertTransitionEnd","self","dispatchEvent","dismiss","removeClass","emulateTransitionEnd","add","action","addListener","removeListener","close","mouseclickEvent","activeClass","dataBsToggle","buttonString","buttonComponent","buttonSelector","getButtonInstance","buttonInitCallback","Button","setAttribute","ariaPressed","isActive","addClass","dataBsTarget","carouselString","carouselComponent","dataBsParent","dataBsContainer","getTargetElement","targetAttr","doc","getDocument","att","attValue","closest","x","carouselSelector","carouselItem","dataBsSlideTo","dataBsSlide","pausedClass","carouselDefaults","getCarouselInstance","carouselInitCallback","Carousel","startX","currentX","endX","carouselSlideEvent","carouselSlidEvent","carouselTransitionEndHandler","index","direction","slides","options","activeItem","getActiveIndex","orientation","directionClass","Timer","carouselPauseHandler","carouselResumeHandler","carouselIndicatorHandler","newIndex","carouselControlsHandler","carouselKeyHandler","code","querySelectorAll","isElementInScrollRange","RTL","isRTL","keyArrowRight","keyArrowLeft","carouselDragHandler","carouselPointerDownHandler","controls","indicators","el","toggleCarouselTouchHandlers","carouselPointerMoveHandler","carouselPointerUpHandler","activateCarouselIndicator","pointermoveEvent","passiveHandler","pointerupEvent","getElementsByClassName","activeIndex","transitionItem","matches","ar","isPaused","idx","next","eventProperties","ObjectAssign","getElementTransitionDuration","reflow","touch","pause","interval","keyboard","mouseenterEvent","mouseleaveEvent","pointerdownEvent","touchstartEvent","dragstartEvent","arrow","indicator","keydownEvent","isAnimating","clone","collapsingClass","collapseString","collapseComponent","collapseSelector","collapseToggleSelector","collapseDefaults","getCollapseInstance","collapseInitCallback","Collapse","showCollapseEvent","shownCollapseEvent","hideCollapseEvent","hiddenCollapseEvent","expandCollapse","parent","triggers","noop","setElementStyle","btn","ariaExpanded","collapseContent","collapseClickHandler","trigger","isHTMLElement","activeCollapse","activeCollapseInstance","dropdownMenuClasses","dropdownComponent","dropdownMenuClass","isEmptyAnchor","parentAnchor","hasAttribute","dropdownString","dropupString","dropstartString","dropendString","dropdownClasses","dropdownSelector","getDropdownInstance","dropdownInitCallback","Dropdown","dropdownMenuEndClass","verticalClass","horizontalClass","menuFocusTags","dropdownDefaults","showDropdownEvent","shownDropdownEvent","hideDropdownEvent","hiddenDropdownEvent","updatedDropdownEvent","styleDropdown","menu","parentElement","offset","getElementStyle","menuEnd","style","positionClass","dropdownMargin","dropdownPosition","menuWidth","menuHeight","clientWidth","clientHeight","getDocumentElement","targetLeft","targetTop","targetWidth","targetHeight","getBoundingClientRect","leftFullExceed","rightFullExceed","bottomExceed","bottomFullExceed","topExceed","leftExceed","rightExceed","posAjust","margins","getMenuItems","firstElementChild","toggleDropdownDismiss","dropdownDismissHandler","focusEvent","dropdownPreventScroll","keyupEvent","dropdownKeyHandler","getCurrentOpenDropdown","currentParent","type","isForm","mousedownEvent","dropdownClickHandler","keyArrowDown","keyArrowUp","activeElement","open","menuItems","focus","keyEscape","PositionObserver","currentElement","currentInstance","modalString","modalComponent","offcanvasComponent","fixedTopClass","fixedBottomClass","stickyTopClass","positionStickyClass","getFixedItems","resetScrollbar","bd","getDocumentBody","fixedItems","fixed","measureScrollbar","innerWidth","getWindow","setScrollbar","overflow","bodyPad","sbWidth","itemPadValue","itemMValue","offcanvasString","popupContainer","createElement","appendPopup","customContainer","containerIsBody","isNode","lookup","BODY","removePopup","hasPopup","backdropString","modalBackdropClass","offcanvasBackdropClass","modalActiveSelector","offcanvasActiveSelector","overlay","getCurrentOpen","toggleOverlayType","isModal","targetClass","appendOverlay","hasFade","showOverlay","hideOverlay","removeOverlay","isVisible","modalSelector","modalToggleSelector","modalDismissSelector","modalStaticClass","modalDefaults","getModalInstance","modalInitCallback","Modal","showModalEvent","shownModalEvent","hideModalEvent","hiddenModalEvent","setModalScrollbar","scrollbarWidth","scrollHeight","modalHeight","modalScrollHeight","modalOverflow","padStyle","toggleModalDismiss","modalDismissHandler","modalKeyHandler","afterModalHide","relatedTarget","focusElement","toggleFocusTrap","afterModalShow","beforeModalShow","removeAttribute","ariaHidden","ariaModal","beforeModalHide","modalClickHandler","currentTarget","isStatic","modalDialog","backdrop","selectedText","targetInsideDialog","staticTransitionEnd","duration","overlayDelay","currentOpen","that","callback","offcanvasSelector","offcanvasToggleSelector","offcanvasDismissSelector","offcanvasTogglingClass","offcanvasDefaults","getOffcanvasInstance","offcanvasInitCallback","Offcanvas","showOffcanvasEvent","shownOffcanvasEvent","hideOffcanvasEvent","hiddenOffcanvasEvent","setOffCanvasScrollbar","toggleOffCanvasDismiss","offcanvasKeyDismissHandler","offcanvasDismissHandler","beforeOffcanvasShow","showOffcanvasComplete","beforeOffcanvasHide","hideOffcanvasComplete","offcanvasTriggerHandler","offCanvasDismiss","selection","visibleTrigger","isOpen","popoverString","popoverComponent","tooltipString","getTipTemplate","tipType","isTooltip","bodyClass","header","body","tipClassPositions","styleTip","tipClasses","tooltip","container","offsetParent","scrollLeft","scrollTop","getNodeScroll","tipWidth","tipHeight","htmlcw","htmlch","htmlow","placement","parentCWidth","parentOWidth","fixedParent","leftBoundry","rightBoundry","observerEntry","elemWidth","elemHeight","elemRectLeft","elemRectRight","elemRectTop","elemOffsetLeft","elemOffsetTop","getRectRelativeToOffsetParent","topPosition","bottomPosition","leftPosition","rightPosition","arrowTop","arrowLeft","arrowRight","arrowWidth","arrowHeight","arrowAdjust","horizontals","verticals","updatedTooltipEvent","toLowerCase","tooltipDefaults","dataOriginalTitle","tooltipComponent","setHtml","content","sanitizeFn","dirty","isFunction","tempDocument","isNodeList","isArray","createTip","id","title","template","animation","customClass","dismissible","btnClose","tipString","tipPositions","titleParts","contentParts","placementClass","tooltipTemplate","htmlMarkup","tooltipHeader","tooltipBody","tempTitle","tempContent","tempBtn","getElementContainer","majorBlockTags","containers","parentNode","getParentNode","isShadowRoot","isTableElement","tooltipSelector","titleAttr","getTooltipInstance","tooltipInitCallback","Tooltip","removeTooltip","ariaDescribedBy","hasTip","disposeTooltipComplete","toggleTooltipTitle","toggleTooltipAction","tooltipShownAction","shownTooltipEvent","tooltipHiddenAction","hiddenTooltipEvent","toggleTooltipOpenHandlers","parentModal","parentOffcanvas","titleAtt","tipComponent","elem","getUID","position","outTimer","showTooltipEvent","delay","hideTooltipEvent","enabled","tr","mousehoverEvent","focusinEvent","focusoutEvent","isApple","popoverSelector","popoverDefaults","getPopoverInstance","popoverInitCallback","Popover","scrollspyString","scrollspyComponent","scrollspySelector","scrollSpyAnchorSelector","scrollspyDefaults","getScrollSpyInstance","scrollspyInitCallback","ScrollSpy","activateScrollSpy","updateSpyTargets","_itemsLength","_observables","links","getElementsByTagName","link","hash","targetItem","clear","item","activate","parentItem","parentLink","getOffset","scrollTarget","spyTarget","_activeItem","entries","newActiveItem","firstOffset","offsetTop","nextTarget","nextOffsetTop","getElementById","_observer","_scrollTo","tabString","tabComponent","tabSelector","getTabInstance","tabInitCallback","Tab","showTabEvent","shownTabEvent","hideTabEvent","hiddenTabEvent","tabPrivate","triggerTabEnd","tabContent","nav","triggerTabShow","nextContent","tab","currentHeight","nextHeight","triggerTabHide","getActiveTab","activeTabs","getParentDropdown","dropdown","tabClickHandler","firstTab","firstTabContent","ariaSelected","activeDropdown","toggleTab","toastString","toastComponent","toastSelector","toastDismissSelector","toastToggleSelector","showingClass","hideClass","toastDefaults","getToastInstance","toastInitCallback","Toast","showToastEvent","shownToastEvent","hideToastEvent","hiddenToastEvent","showToastComplete","hideToastComplete","hideToast","showToast","toastClickHandler","interactiveToastHandler","isShown","hide","componentsList","initComponentDataAPI","collection","removeComponentDataAPI","component","context","compData","instance","initCallback","lookUp","elemCollection","cs","init","selector","removeDataAPI","comp"],"mappings":"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","x_google_ignoreList":[0,1,27]}