/*! * Bootstrap v5.1.3 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ import * as Popper from "@popperjs/core"; const MAX_UID = 1e6, MILLISECONDS_MULTIPLIER = 1e3, TRANSITION_END = "transitionend", toType = (e) => null == e ? `${e}` : {}.toString .call(e) .match(/\s([a-z]+)/i)[1] .toLowerCase(), getUID = (e) => { do { e += Math.floor(1e6 * Math.random()); } while (document.getElementById(e)); return e; }, getSelector = (e) => { let t = e.getAttribute("data-bs-target"); if (!t || "#" === t) { let i = e.getAttribute("href"); if (!i || (!i.includes("#") && !i.startsWith("."))) return null; i.includes("#") && !i.startsWith("#") && (i = `#${i.split("#")[1]}`), (t = i && "#" !== i ? i.trim() : null); } return t; }, getSelectorFromElement = (e) => { const t = getSelector(e); return t && document.querySelector(t) ? t : null; }, getElementFromSelector = (e) => { const t = getSelector(e); return t ? document.querySelector(t) : null; }, getTransitionDurationFromElement = (e) => { if (!e) return 0; let { transitionDuration: t, transitionDelay: i } = window.getComputedStyle(e); const n = Number.parseFloat(t), s = Number.parseFloat(i); return n || s ? ((t = t.split(",")[0]), (i = i.split(",")[0]), 1e3 * (Number.parseFloat(t) + Number.parseFloat(i))) : 0; }, triggerTransitionEnd = (e) => { e.dispatchEvent(new Event(TRANSITION_END)); }, isElement = (e) => !(!e || "object" != typeof e) && (void 0 !== e.jquery && (e = e[0]), void 0 !== e.nodeType), getElement = (e) => isElement(e) ? e.jquery ? e[0] : e : "string" == typeof e && e.length > 0 ? document.querySelector(e) : null, typeCheckConfig = (e, t, i) => { Object.keys(i).forEach((n) => { const s = i[n], o = t[n], r = o && isElement(o) ? "element" : null == (a = o) ? `${a}` : {}.toString .call(a) .match(/\s([a-z]+)/i)[1] .toLowerCase(); var a; if (!new RegExp(s).test(r)) throw new TypeError( `${e.toUpperCase()}: Option "${n}" provided type "${r}" but expected type "${s}".`, ); }); }, isVisible = (e) => !(!isElement(e) || 0 === e.getClientRects().length) && "visible" === getComputedStyle(e).getPropertyValue("visibility"), isDisabled = (e) => !e || e.nodeType !== Node.ELEMENT_NODE || !!e.classList.contains("disabled") || (void 0 !== e.disabled ? e.disabled : e.hasAttribute("disabled") && "false" !== e.getAttribute("disabled")), findShadowRoot = (e) => { if (!document.documentElement.attachShadow) return null; if ("function" == typeof e.getRootNode) { const t = e.getRootNode(); return t instanceof ShadowRoot ? t : null; } return e instanceof ShadowRoot ? e : e.parentNode ? findShadowRoot(e.parentNode) : null; }, noop = () => {}, reflow = (e) => { e.offsetHeight; }, getjQuery = () => { const { jQuery: e } = window; return e && !document.body.hasAttribute("data-bs-no-jquery") ? e : null; }, DOMContentLoadedCallbacks = [], onDOMContentLoaded = (e) => { "loading" === document.readyState ? (DOMContentLoadedCallbacks.length || document.addEventListener("DOMContentLoaded", () => { DOMContentLoadedCallbacks.forEach((e) => e()); }), DOMContentLoadedCallbacks.push(e)) : e(); }, isRTL = () => "rtl" === document.documentElement.dir, defineJQueryPlugin = (e) => { var t; (t = () => { const t = getjQuery(); if (t) { const i = e.NAME, n = t.fn[i]; (t.fn[i] = e.jQueryInterface), (t.fn[i].Constructor = e), (t.fn[i].noConflict = () => ((t.fn[i] = n), e.jQueryInterface)); } }), "loading" === document.readyState ? (DOMContentLoadedCallbacks.length || document.addEventListener("DOMContentLoaded", () => { DOMContentLoadedCallbacks.forEach((e) => e()); }), DOMContentLoadedCallbacks.push(t)) : t(); }, execute = (e) => { "function" == typeof e && e(); }, executeAfterTransition = (e, t, i = !0) => { if (!i) return void execute(e); const n = getTransitionDurationFromElement(t) + 5; let s = !1; const o = ({ target: i }) => { i === t && ((s = !0), t.removeEventListener(TRANSITION_END, o), execute(e)); }; t.addEventListener(TRANSITION_END, o), setTimeout(() => { s || triggerTransitionEnd(t); }, n); }, getNextActiveElement = (e, t, i, n) => { let s = e.indexOf(t); if (-1 === s) return e[!i && n ? e.length - 1 : 0]; const o = e.length; return ( (s += i ? 1 : -1), n && (s = (s + o) % o), e[Math.max(0, Math.min(s, o - 1))] ); }, namespaceRegex = /[^.]*(?=\..*)\.|.*/, stripNameRegex = /\..*/, stripUidRegex = /::\d+$/, eventRegistry = {}; let uidEvent = 1; const customEvents = { mouseenter: "mouseover", mouseleave: "mouseout" }, customEventsRegex = /^(mouseenter|mouseleave)/i, nativeEvents = new Set([ "click", "dblclick", "mouseup", "mousedown", "contextmenu", "mousewheel", "DOMMouseScroll", "mouseover", "mouseout", "mousemove", "selectstart", "selectend", "keydown", "keypress", "keyup", "orientationchange", "touchstart", "touchmove", "touchend", "touchcancel", "pointerdown", "pointermove", "pointerup", "pointerleave", "pointercancel", "gesturestart", "gesturechange", "gestureend", "focus", "blur", "change", "reset", "select", "submit", "focusin", "focusout", "load", "unload", "beforeunload", "resize", "move", "DOMContentLoaded", "readystatechange", "error", "abort", "scroll", ]); function getUidEvent(e, t) { return (t && `${t}::${uidEvent++}`) || e.uidEvent || uidEvent++; } function getEvent(e) { const t = getUidEvent(e); return ( (e.uidEvent = t), (eventRegistry[t] = eventRegistry[t] || {}), eventRegistry[t] ); } function bootstrapHandler(e, t) { return function i(n) { return ( (n.delegateTarget = e), i.oneOff && EventHandler.off(e, n.type, t), t.apply(e, [n]) ); }; } function bootstrapDelegationHandler(e, t, i) { return function n(s) { const o = e.querySelectorAll(t); for (let { target: r } = s; r && r !== this; r = r.parentNode) for (let a = o.length; a--; ) if (o[a] === r) return ( (s.delegateTarget = r), n.oneOff && EventHandler.off(e, s.type, t, i), i.apply(r, [s]) ); return null; }; } function findHandler(e, t, i = null) { const n = Object.keys(e); for (let s = 0, o = n.length; s < o; s++) { const o = e[n[s]]; if (o.originalHandler === t && o.delegationSelector === i) return o; } return null; } function normalizeParams(e, t, i) { const n = "string" == typeof t, s = n ? i : t; let o = getTypeEvent(e); return nativeEvents.has(o) || (o = e), [n, s, o]; } function addHandler(e, t, i, n, s) { if ("string" != typeof t || !e) return; if ((i || ((i = n), (n = null)), customEventsRegex.test(t))) { const e = (e) => function (t) { if ( !t.relatedTarget || (t.relatedTarget !== t.delegateTarget && !t.delegateTarget.contains(t.relatedTarget)) ) return e.call(this, t); }; n ? (n = e(n)) : (i = e(i)); } const [o, r, a] = normalizeParams(t, i, n), l = getEvent(e), c = l[a] || (l[a] = {}), E = findHandler(c, r, o ? i : null); if (E) return void (E.oneOff = E.oneOff && s); const _ = getUidEvent(r, t.replace(namespaceRegex, "")), h = o ? bootstrapDelegationHandler(e, i, n) : bootstrapHandler(e, i); (h.delegationSelector = o ? i : null), (h.originalHandler = r), (h.oneOff = s), (h.uidEvent = _), (c[_] = h), e.addEventListener(a, h, o); } function removeHandler(e, t, i, n, s) { const o = findHandler(t[i], n, s); o && (e.removeEventListener(i, o, Boolean(s)), delete t[i][o.uidEvent]); } function removeNamespacedHandlers(e, t, i, n) { const s = t[i] || {}; Object.keys(s).forEach((o) => { if (o.includes(n)) { const n = s[o]; removeHandler(e, t, i, n.originalHandler, n.delegationSelector); } }); } function getTypeEvent(e) { return (e = e.replace(stripNameRegex, "")), customEvents[e] || e; } const EventHandler = { on(e, t, i, n) { addHandler(e, t, i, n, !1); }, one(e, t, i, n) { addHandler(e, t, i, n, !0); }, off(e, t, i, n) { if ("string" != typeof t || !e) return; const [s, o, r] = normalizeParams(t, i, n), a = r !== t, l = getEvent(e), c = t.startsWith("."); if (void 0 !== o) { if (!l || !l[r]) return; return void removeHandler(e, l, r, o, s ? i : null); } c && Object.keys(l).forEach((i) => { removeNamespacedHandlers(e, l, i, t.slice(1)); }); const E = l[r] || {}; Object.keys(E).forEach((i) => { const n = i.replace(stripUidRegex, ""); if (!a || t.includes(n)) { const t = E[i]; removeHandler(e, l, r, t.originalHandler, t.delegationSelector); } }); }, trigger(e, t, i) { if ("string" != typeof t || !e) return null; const n = getjQuery(), s = getTypeEvent(t), o = t !== s, r = nativeEvents.has(s); let a, l = !0, c = !0, E = !1, _ = null; return ( o && n && ((a = n.Event(t, i)), n(e).trigger(a), (l = !a.isPropagationStopped()), (c = !a.isImmediatePropagationStopped()), (E = a.isDefaultPrevented())), r ? ((_ = document.createEvent("HTMLEvents")), _.initEvent(s, l, !0)) : (_ = new CustomEvent(t, { bubbles: l, cancelable: !0 })), void 0 !== i && Object.keys(i).forEach((e) => { Object.defineProperty(_, e, { get: () => i[e] }); }), E && _.preventDefault(), c && e.dispatchEvent(_), _.defaultPrevented && void 0 !== a && a.preventDefault(), _ ); }, }, elementMap = new Map(), Data = { set(e, t, i) { elementMap.has(e) || elementMap.set(e, new Map()); const n = elementMap.get(e); n.has(t) || 0 === n.size ? n.set(t, i) : console.error( `Bootstrap doesn't allow more than one instance per element. Bound instance: ${ Array.from(n.keys())[0] }.`, ); }, get: (e, t) => (elementMap.has(e) && elementMap.get(e).get(t)) || null, remove(e, t) { if (!elementMap.has(e)) return; const i = elementMap.get(e); i.delete(t), 0 === i.size && elementMap.delete(e); }, }, VERSION = "5.1.3"; class BaseComponent { constructor(e) { (e = getElement(e)) && ((this._element = e), Data.set(this._element, this.constructor.DATA_KEY, this)); } dispose() { Data.remove(this._element, this.constructor.DATA_KEY), EventHandler.off(this._element, this.constructor.EVENT_KEY), Object.getOwnPropertyNames(this).forEach((e) => { this[e] = null; }); } _queueCallback(e, t, i = !0) { executeAfterTransition(e, t, i); } static getInstance(e) { return Data.get(getElement(e), this.DATA_KEY); } static getOrCreateInstance(e, t = {}) { return this.getInstance(e) || new this(e, "object" == typeof t ? t : null); } static get VERSION() { return "5.1.3"; } static get NAME() { throw new Error( 'You have to implement the static method "NAME", for each component!', ); } static get DATA_KEY() { return `bs.${this.NAME}`; } static get EVENT_KEY() { return `.${this.DATA_KEY}`; } } const enableDismissTrigger = (e, t = "hide") => { const i = `click.dismiss${e.EVENT_KEY}`, n = e.NAME; EventHandler.on(document, i, `[data-bs-dismiss="${n}"]`, function (i) { if ( (["A", "AREA"].includes(this.tagName) && i.preventDefault(), isDisabled(this)) ) return; const s = getElementFromSelector(this) || this.closest(`.${n}`); e.getOrCreateInstance(s)[t](); }); }, NAME$d = "alert", DATA_KEY$c = "bs.alert", EVENT_KEY$c = ".bs.alert", EVENT_CLOSE = "close.bs.alert", EVENT_CLOSED = "closed.bs.alert", CLASS_NAME_FADE$5 = "fade", CLASS_NAME_SHOW$8 = "show"; class Alert extends BaseComponent { static get NAME() { return NAME$d; } close() { if (EventHandler.trigger(this._element, EVENT_CLOSE).defaultPrevented) return; this._element.classList.remove("show"); const e = this._element.classList.contains("fade"); this._queueCallback(() => this._destroyElement(), this._element, e); } _destroyElement() { this._element.remove(), EventHandler.trigger(this._element, EVENT_CLOSED), this.dispose(); } static jQueryInterface(e) { return this.each(function () { const t = Alert.getOrCreateInstance(this); if ("string" == typeof e) { if (void 0 === t[e] || e.startsWith("_") || "constructor" === e) throw new TypeError(`No method named "${e}"`); t[e](this); } }); } } enableDismissTrigger(Alert, "close"), defineJQueryPlugin(Alert); const NAME$c = "button", DATA_KEY$b = "bs.button", EVENT_KEY$b = ".bs.button", DATA_API_KEY$7 = ".data-api", CLASS_NAME_ACTIVE$3 = "active", SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="button"]', EVENT_CLICK_DATA_API$6 = "click.bs.button.data-api"; class Button extends BaseComponent { static get NAME() { return NAME$c; } toggle() { this._element.setAttribute( "aria-pressed", this._element.classList.toggle("active"), ); } static jQueryInterface(e) { return this.each(function () { const t = Button.getOrCreateInstance(this); "toggle" === e && t[e](); }); } } function normalizeData(e) { return ( "true" === e || ("false" !== e && (e === Number(e).toString() ? Number(e) : "" === e || "null" === e ? null : e)) ); } function normalizeDataKey(e) { return e.replace(/[A-Z]/g, (e) => `-${e.toLowerCase()}`); } EventHandler.on( document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, (e) => { e.preventDefault(); const t = e.target.closest(SELECTOR_DATA_TOGGLE$5); Button.getOrCreateInstance(t).toggle(); }, ), defineJQueryPlugin(Button); const Manipulator = { setDataAttribute(e, t, i) { e.setAttribute(`data-bs-${normalizeDataKey(t)}`, i); }, removeDataAttribute(e, t) { e.removeAttribute(`data-bs-${normalizeDataKey(t)}`); }, getDataAttributes(e) { if (!e) return {}; const t = {}; return ( Object.keys(e.dataset) .filter((e) => e.startsWith("bs")) .forEach((i) => { let n = i.replace(/^bs/, ""); (n = n.charAt(0).toLowerCase() + n.slice(1, n.length)), (t[n] = normalizeData(e.dataset[i])); }), t ); }, getDataAttribute: (e, t) => normalizeData(e.getAttribute(`data-bs-${normalizeDataKey(t)}`)), offset(e) { const t = e.getBoundingClientRect(); return { top: t.top + window.pageYOffset, left: t.left + window.pageXOffset, }; }, position: (e) => ({ top: e.offsetTop, left: e.offsetLeft }), }, NODE_TEXT = 3, SelectorEngine = { find: (e, t = document.documentElement) => [].concat(...Element.prototype.querySelectorAll.call(t, e)), findOne: (e, t = document.documentElement) => Element.prototype.querySelector.call(t, e), children: (e, t) => [].concat(...e.children).filter((e) => e.matches(t)), parents(e, t) { const i = []; let n = e.parentNode; for (; n && n.nodeType === Node.ELEMENT_NODE && 3 !== n.nodeType; ) n.matches(t) && i.push(n), (n = n.parentNode); return i; }, prev(e, t) { let i = e.previousElementSibling; for (; i; ) { if (i.matches(t)) return [i]; i = i.previousElementSibling; } return []; }, next(e, t) { let i = e.nextElementSibling; for (; i; ) { if (i.matches(t)) return [i]; i = i.nextElementSibling; } return []; }, focusableChildren(e) { const t = [ "a", "button", "input", "textarea", "select", "details", "[tabindex]", '[contenteditable="true"]', ] .map((e) => `${e}:not([tabindex^="-"])`) .join(", "); return this.find(t, e).filter((e) => !isDisabled(e) && isVisible(e)); }, }, NAME$b = "carousel", DATA_KEY$a = "bs.carousel", EVENT_KEY$a = ".bs.carousel", DATA_API_KEY$6 = ".data-api", ARROW_LEFT_KEY = "ArrowLeft", ARROW_RIGHT_KEY = "ArrowRight", TOUCHEVENT_COMPAT_WAIT = 500, SWIPE_THRESHOLD = 40, Default$a = { interval: 5e3, keyboard: !0, slide: !1, pause: "hover", wrap: !0, touch: !0, }, DefaultType$a = { interval: "(number|boolean)", keyboard: "boolean", slide: "(boolean|string)", pause: "(string|boolean)", wrap: "boolean", touch: "boolean", }, ORDER_NEXT = "next", ORDER_PREV = "prev", DIRECTION_LEFT = "left", DIRECTION_RIGHT = "right", KEY_TO_DIRECTION = { ArrowLeft: DIRECTION_RIGHT, ArrowRight: DIRECTION_LEFT }, EVENT_SLIDE = "slide.bs.carousel", EVENT_SLID = "slid.bs.carousel", EVENT_KEYDOWN = "keydown.bs.carousel", EVENT_MOUSEENTER = "mouseenter.bs.carousel", EVENT_MOUSELEAVE = "mouseleave.bs.carousel", EVENT_TOUCHSTART = "touchstart.bs.carousel", EVENT_TOUCHMOVE = "touchmove.bs.carousel", EVENT_TOUCHEND = "touchend.bs.carousel", EVENT_POINTERDOWN = "pointerdown.bs.carousel", EVENT_POINTERUP = "pointerup.bs.carousel", EVENT_DRAG_START = "dragstart.bs.carousel", EVENT_LOAD_DATA_API$2 = "load.bs.carousel.data-api", EVENT_CLICK_DATA_API$5 = "click.bs.carousel.data-api", CLASS_NAME_CAROUSEL = "carousel", CLASS_NAME_ACTIVE$2 = "active", CLASS_NAME_SLIDE = "slide", CLASS_NAME_END = "carousel-item-end", CLASS_NAME_START = "carousel-item-start", CLASS_NAME_NEXT = "carousel-item-next", CLASS_NAME_PREV = "carousel-item-prev", CLASS_NAME_POINTER_EVENT = "pointer-event", SELECTOR_ACTIVE$1 = ".active", SELECTOR_ACTIVE_ITEM = ".active.carousel-item", SELECTOR_ITEM = ".carousel-item", SELECTOR_ITEM_IMG = ".carousel-item img", SELECTOR_NEXT_PREV = ".carousel-item-next, .carousel-item-prev", SELECTOR_INDICATORS = ".carousel-indicators", SELECTOR_INDICATOR = "[data-bs-target]", SELECTOR_DATA_SLIDE = "[data-bs-slide], [data-bs-slide-to]", SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]', POINTER_TYPE_TOUCH = "touch", POINTER_TYPE_PEN = "pen"; class Carousel extends BaseComponent { constructor(e, t) { super(e), (this._items = null), (this._interval = null), (this._activeElement = null), (this._isPaused = !1), (this._isSliding = !1), (this.touchTimeout = null), (this.touchStartX = 0), (this.touchDeltaX = 0), (this._config = this._getConfig(t)), (this._indicatorsElement = SelectorEngine.findOne( SELECTOR_INDICATORS, this._element, )), (this._touchSupported = "ontouchstart" in document.documentElement || navigator.maxTouchPoints > 0), (this._pointerEvent = Boolean(window.PointerEvent)), this._addEventListeners(); } static get Default() { return Default$a; } static get NAME() { return NAME$b; } next() { this._slide(ORDER_NEXT); } nextWhenVisible() { !document.hidden && isVisible(this._element) && this.next(); } prev() { this._slide(ORDER_PREV); } pause(e) { e || (this._isPaused = !0), SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element) && (triggerTransitionEnd(this._element), this.cycle(!0)), clearInterval(this._interval), (this._interval = null); } cycle(e) { e || (this._isPaused = !1), this._interval && (clearInterval(this._interval), (this._interval = null)), this._config && this._config.interval && !this._isPaused && (this._updateInterval(), (this._interval = setInterval( (document.visibilityState ? this.nextWhenVisible : this.next).bind( this, ), this._config.interval, ))); } to(e) { this._activeElement = SelectorEngine.findOne( SELECTOR_ACTIVE_ITEM, this._element, ); const t = this._getItemIndex(this._activeElement); if (e > this._items.length - 1 || e < 0) return; if (this._isSliding) return void EventHandler.one(this._element, EVENT_SLID, () => this.to(e)); if (t === e) return this.pause(), void this.cycle(); const i = e > t ? ORDER_NEXT : ORDER_PREV; this._slide(i, this._items[e]); } _getConfig(e) { return ( (e = { ...Default$a, ...Manipulator.getDataAttributes(this._element), ...("object" == typeof e ? e : {}), }), typeCheckConfig(NAME$b, e, DefaultType$a), e ); } _handleSwipe() { const e = Math.abs(this.touchDeltaX); if (e <= 40) return; const t = e / this.touchDeltaX; (this.touchDeltaX = 0), t && this._slide(t > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT); } _addEventListeners() { this._config.keyboard && EventHandler.on(this._element, EVENT_KEYDOWN, (e) => this._keydown(e)), "hover" === this._config.pause && (EventHandler.on(this._element, EVENT_MOUSEENTER, (e) => this.pause(e)), EventHandler.on(this._element, EVENT_MOUSELEAVE, (e) => this.cycle(e))), this._config.touch && this._touchSupported && this._addTouchEventListeners(); } _addTouchEventListeners() { const e = (e) => this._pointerEvent && ("pen" === e.pointerType || "touch" === e.pointerType), t = (t) => { e(t) ? (this.touchStartX = t.clientX) : this._pointerEvent || (this.touchStartX = t.touches[0].clientX); }, i = (e) => { this.touchDeltaX = e.touches && e.touches.length > 1 ? 0 : e.touches[0].clientX - this.touchStartX; }, n = (t) => { e(t) && (this.touchDeltaX = t.clientX - this.touchStartX), this._handleSwipe(), "hover" === this._config.pause && (this.pause(), this.touchTimeout && clearTimeout(this.touchTimeout), (this.touchTimeout = setTimeout( (e) => this.cycle(e), 500 + this._config.interval, ))); }; SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach((e) => { EventHandler.on(e, EVENT_DRAG_START, (e) => e.preventDefault()); }), this._pointerEvent ? (EventHandler.on(this._element, EVENT_POINTERDOWN, (e) => t(e)), EventHandler.on(this._element, EVENT_POINTERUP, (e) => n(e)), this._element.classList.add("pointer-event")) : (EventHandler.on(this._element, EVENT_TOUCHSTART, (e) => t(e)), EventHandler.on(this._element, EVENT_TOUCHMOVE, (e) => i(e)), EventHandler.on(this._element, EVENT_TOUCHEND, (e) => n(e))); } _keydown(e) { if (/input|textarea/i.test(e.target.tagName)) return; const t = KEY_TO_DIRECTION[e.key]; t && (e.preventDefault(), this._slide(t)); } _getItemIndex(e) { return ( (this._items = e && e.parentNode ? SelectorEngine.find(SELECTOR_ITEM, e.parentNode) : []), this._items.indexOf(e) ); } _getItemByOrder(e, t) { const i = e === ORDER_NEXT; return getNextActiveElement(this._items, t, i, this._config.wrap); } _triggerSlideEvent(e, t) { const i = this._getItemIndex(e), n = this._getItemIndex( SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element), ); return EventHandler.trigger(this._element, EVENT_SLIDE, { relatedTarget: e, direction: t, from: n, to: i, }); } _setActiveIndicatorElement(e) { if (this._indicatorsElement) { const t = SelectorEngine.findOne(".active", this._indicatorsElement); t.classList.remove("active"), t.removeAttribute("aria-current"); const i = SelectorEngine.find( "[data-bs-target]", this._indicatorsElement, ); for (let t = 0; t < i.length; t++) if ( Number.parseInt(i[t].getAttribute("data-bs-slide-to"), 10) === this._getItemIndex(e) ) { i[t].classList.add("active"), i[t].setAttribute("aria-current", "true"); break; } } } _updateInterval() { const e = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); if (!e) return; const t = Number.parseInt(e.getAttribute("data-bs-interval"), 10); t ? ((this._config.defaultInterval = this._config.defaultInterval || this._config.interval), (this._config.interval = t)) : (this._config.interval = this._config.defaultInterval || this._config.interval); } _slide(e, t) { const i = this._directionToOrder(e), n = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element), s = this._getItemIndex(n), o = t || this._getItemByOrder(i, n), r = this._getItemIndex(o), a = Boolean(this._interval), l = i === ORDER_NEXT, c = l ? CLASS_NAME_START : CLASS_NAME_END, E = l ? CLASS_NAME_NEXT : CLASS_NAME_PREV, _ = this._orderToDirection(i); if (o && o.classList.contains("active")) return void (this._isSliding = !1); if (this._isSliding) return; if (this._triggerSlideEvent(o, _).defaultPrevented) return; if (!n || !o) return; (this._isSliding = !0), a && this.pause(), this._setActiveIndicatorElement(o), (this._activeElement = o); const h = () => { EventHandler.trigger(this._element, EVENT_SLID, { relatedTarget: o, direction: _, from: s, to: r, }); }; if (this._element.classList.contains("slide")) { o.classList.add(E), reflow(o), n.classList.add(c), o.classList.add(c); const e = () => { o.classList.remove(c, E), o.classList.add("active"), n.classList.remove("active", E, c), (this._isSliding = !1), setTimeout(h, 0); }; this._queueCallback(e, n, !0); } else n.classList.remove("active"), o.classList.add("active"), (this._isSliding = !1), h(); a && this.cycle(); } _directionToOrder(e) { return [DIRECTION_RIGHT, DIRECTION_LEFT].includes(e) ? isRTL() ? e === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT : e === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV : e; } _orderToDirection(e) { return [ORDER_NEXT, ORDER_PREV].includes(e) ? isRTL() ? e === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT : e === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT : e; } static carouselInterface(e, t) { const i = Carousel.getOrCreateInstance(e, t); let { _config: n } = i; "object" == typeof t && (n = { ...n, ...t }); const s = "string" == typeof t ? t : n.slide; if ("number" == typeof t) i.to(t); else if ("string" == typeof s) { if (void 0 === i[s]) throw new TypeError(`No method named "${s}"`); i[s](); } else n.interval && n.ride && (i.pause(), i.cycle()); } static jQueryInterface(e) { return this.each(function () { Carousel.carouselInterface(this, e); }); } static dataApiClickHandler(e) { const t = getElementFromSelector(this); if (!t || !t.classList.contains("carousel")) return; const i = { ...Manipulator.getDataAttributes(t), ...Manipulator.getDataAttributes(this), }, n = this.getAttribute("data-bs-slide-to"); n && (i.interval = !1), Carousel.carouselInterface(t, i), n && Carousel.getInstance(t).to(n), e.preventDefault(); } } EventHandler.on( document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler, ), EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => { const e = SelectorEngine.find(SELECTOR_DATA_RIDE); for (let t = 0, i = e.length; t < i; t++) Carousel.carouselInterface(e[t], Carousel.getInstance(e[t])); }), defineJQueryPlugin(Carousel); const NAME$a = "collapse", DATA_KEY$9 = "bs.collapse", EVENT_KEY$9 = ".bs.collapse", DATA_API_KEY$5 = ".data-api", Default$9 = { toggle: !0, parent: null }, DefaultType$9 = { toggle: "boolean", parent: "(null|element)" }, EVENT_SHOW$5 = "show.bs.collapse", EVENT_SHOWN$5 = "shown.bs.collapse", EVENT_HIDE$5 = "hide.bs.collapse", EVENT_HIDDEN$5 = "hidden.bs.collapse", EVENT_CLICK_DATA_API$4 = "click.bs.collapse.data-api", CLASS_NAME_SHOW$7 = "show", CLASS_NAME_COLLAPSE = "collapse", CLASS_NAME_COLLAPSING = "collapsing", CLASS_NAME_COLLAPSED = "collapsed", CLASS_NAME_DEEPER_CHILDREN = ":scope .collapse .collapse", CLASS_NAME_HORIZONTAL = "collapse-horizontal", WIDTH = "width", HEIGHT = "height", SELECTOR_ACTIVES = ".collapse.show, .collapse.collapsing", SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="collapse"]'; class Collapse extends BaseComponent { constructor(e, t) { super(e), (this._isTransitioning = !1), (this._config = this._getConfig(t)), (this._triggerArray = []); const i = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4); for (let e = 0, t = i.length; e < t; e++) { const t = i[e], n = getSelectorFromElement(t), s = SelectorEngine.find(n).filter((e) => e === this._element); null !== n && s.length && ((this._selector = n), this._triggerArray.push(t)); } this._initializeChildren(), this._config.parent || this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()), this._config.toggle && this.toggle(); } static get Default() { return Default$9; } static get NAME() { return NAME$a; } toggle() { this._isShown() ? this.hide() : this.show(); } show() { if (this._isTransitioning || this._isShown()) return; let e, t = []; if (this._config.parent) { const e = SelectorEngine.find( CLASS_NAME_DEEPER_CHILDREN, this._config.parent, ); t = SelectorEngine.find(SELECTOR_ACTIVES, this._config.parent).filter( (t) => !e.includes(t), ); } const i = SelectorEngine.findOne(this._selector); if (t.length) { const n = t.find((e) => i !== e); if (((e = n ? Collapse.getInstance(n) : null), e && e._isTransitioning)) return; } if (EventHandler.trigger(this._element, EVENT_SHOW$5).defaultPrevented) return; t.forEach((t) => { i !== t && Collapse.getOrCreateInstance(t, { toggle: !1 }).hide(), e || Data.set(t, DATA_KEY$9, null); }); const n = this._getDimension(); this._element.classList.remove("collapse"), this._element.classList.add("collapsing"), (this._element.style[n] = 0), this._addAriaAndCollapsedClass(this._triggerArray, !0), (this._isTransitioning = !0); const s = `scroll${n[0].toUpperCase() + n.slice(1)}`; this._queueCallback( () => { (this._isTransitioning = !1), this._element.classList.remove("collapsing"), this._element.classList.add("collapse", "show"), (this._element.style[n] = ""), EventHandler.trigger(this._element, EVENT_SHOWN$5); }, this._element, !0, ), (this._element.style[n] = `${this._element[s]}px`); } hide() { if (this._isTransitioning || !this._isShown()) return; if (EventHandler.trigger(this._element, EVENT_HIDE$5).defaultPrevented) return; const e = this._getDimension(); (this._element.style[e] = `${this._element.getBoundingClientRect()[e]}px`), reflow(this._element), this._element.classList.add("collapsing"), this._element.classList.remove("collapse", "show"); const t = this._triggerArray.length; for (let e = 0; e < t; e++) { const t = this._triggerArray[e], i = getElementFromSelector(t); i && !this._isShown(i) && this._addAriaAndCollapsedClass([t], !1); } (this._isTransitioning = !0), (this._element.style[e] = ""), this._queueCallback( () => { (this._isTransitioning = !1), this._element.classList.remove("collapsing"), this._element.classList.add("collapse"), EventHandler.trigger(this._element, EVENT_HIDDEN$5); }, this._element, !0, ); } _isShown(e = this._element) { return e.classList.contains("show"); } _getConfig(e) { return ( ((e = { ...Default$9, ...Manipulator.getDataAttributes(this._element), ...e, }).toggle = Boolean(e.toggle)), (e.parent = getElement(e.parent)), typeCheckConfig(NAME$a, e, DefaultType$9), e ); } _getDimension() { return this._element.classList.contains("collapse-horizontal") ? WIDTH : HEIGHT; } _initializeChildren() { if (!this._config.parent) return; const e = SelectorEngine.find( CLASS_NAME_DEEPER_CHILDREN, this._config.parent, ); SelectorEngine.find(SELECTOR_DATA_TOGGLE$4, this._config.parent) .filter((t) => !e.includes(t)) .forEach((e) => { const t = getElementFromSelector(e); t && this._addAriaAndCollapsedClass([e], this._isShown(t)); }); } _addAriaAndCollapsedClass(e, t) { e.length && e.forEach((e) => { t ? e.classList.remove("collapsed") : e.classList.add("collapsed"), e.setAttribute("aria-expanded", t); }); } static jQueryInterface(e) { return this.each(function () { const t = {}; "string" == typeof e && /show|hide/.test(e) && (t.toggle = !1); const i = Collapse.getOrCreateInstance(this, t); if ("string" == typeof e) { if (void 0 === i[e]) throw new TypeError(`No method named "${e}"`); i[e](); } }); } } EventHandler.on( document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (e) { ("A" === e.target.tagName || (e.delegateTarget && "A" === e.delegateTarget.tagName)) && e.preventDefault(); const t = getSelectorFromElement(this); SelectorEngine.find(t).forEach((e) => { Collapse.getOrCreateInstance(e, { toggle: !1 }).toggle(); }); }, ), defineJQueryPlugin(Collapse); const NAME$9 = "dropdown", DATA_KEY$8 = "bs.dropdown", EVENT_KEY$8 = ".bs.dropdown", DATA_API_KEY$4 = ".data-api", ESCAPE_KEY$2 = "Escape", SPACE_KEY = "Space", TAB_KEY$1 = "Tab", ARROW_UP_KEY = "ArrowUp", ARROW_DOWN_KEY = "ArrowDown", RIGHT_MOUSE_BUTTON = 2, REGEXP_KEYDOWN = new RegExp("ArrowUp|ArrowDown|Escape"), EVENT_HIDE$4 = "hide.bs.dropdown", EVENT_HIDDEN$4 = "hidden.bs.dropdown", EVENT_SHOW$4 = "show.bs.dropdown", EVENT_SHOWN$4 = "shown.bs.dropdown", EVENT_CLICK_DATA_API$3 = "click.bs.dropdown.data-api", EVENT_KEYDOWN_DATA_API = "keydown.bs.dropdown.data-api", EVENT_KEYUP_DATA_API = "keyup.bs.dropdown.data-api", CLASS_NAME_SHOW$6 = "show", CLASS_NAME_DROPUP = "dropup", CLASS_NAME_DROPEND = "dropend", CLASS_NAME_DROPSTART = "dropstart", CLASS_NAME_NAVBAR = "navbar", SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="dropdown"]', SELECTOR_MENU = ".dropdown-menu", SELECTOR_NAVBAR_NAV = ".navbar-nav", SELECTOR_VISIBLE_ITEMS = ".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)", PLACEMENT_TOP = isRTL() ? "top-end" : "top-start", PLACEMENT_TOPEND = isRTL() ? "top-start" : "top-end", PLACEMENT_BOTTOM = isRTL() ? "bottom-end" : "bottom-start", PLACEMENT_BOTTOMEND = isRTL() ? "bottom-start" : "bottom-end", PLACEMENT_RIGHT = isRTL() ? "left-start" : "right-start", PLACEMENT_LEFT = isRTL() ? "right-start" : "left-start", Default$8 = { offset: [0, 2], boundary: "clippingParents", reference: "toggle", display: "dynamic", popperConfig: null, autoClose: !0, }, DefaultType$8 = { offset: "(array|string|function)", boundary: "(string|element)", reference: "(string|element|object)", display: "string", popperConfig: "(null|object|function)", autoClose: "(boolean|string)", }; class Dropdown extends BaseComponent { constructor(e, t) { super(e), (this._popper = null), (this._config = this._getConfig(t)), (this._menu = this._getMenuElement()), (this._inNavbar = this._detectNavbar()); } static get Default() { return Default$8; } static get DefaultType() { return DefaultType$8; } static get NAME() { return NAME$9; } toggle() { return this._isShown() ? this.hide() : this.show(); } show() { if (isDisabled(this._element) || this._isShown(this._menu)) return; const e = { relatedTarget: this._element }; if (EventHandler.trigger(this._element, EVENT_SHOW$4, e).defaultPrevented) return; const t = Dropdown.getParentFromElement(this._element); this._inNavbar ? Manipulator.setDataAttribute(this._menu, "popper", "none") : this._createPopper(t), "ontouchstart" in document.documentElement && !t.closest(".navbar-nav") && [] .concat(...document.body.children) .forEach((e) => EventHandler.on(e, "mouseover", noop)), this._element.focus(), this._element.setAttribute("aria-expanded", !0), this._menu.classList.add("show"), this._element.classList.add("show"), EventHandler.trigger(this._element, EVENT_SHOWN$4, e); } hide() { if (isDisabled(this._element) || !this._isShown(this._menu)) return; const e = { relatedTarget: this._element }; this._completeHide(e); } dispose() { this._popper && this._popper.destroy(), super.dispose(); } update() { (this._inNavbar = this._detectNavbar()), this._popper && this._popper.update(); } _completeHide(e) { EventHandler.trigger(this._element, EVENT_HIDE$4, e).defaultPrevented || ("ontouchstart" in document.documentElement && [] .concat(...document.body.children) .forEach((e) => EventHandler.off(e, "mouseover", noop)), this._popper && this._popper.destroy(), this._menu.classList.remove("show"), this._element.classList.remove("show"), this._element.setAttribute("aria-expanded", "false"), Manipulator.removeDataAttribute(this._menu, "popper"), EventHandler.trigger(this._element, EVENT_HIDDEN$4, e)); } _getConfig(e) { if ( ((e = { ...this.constructor.Default, ...Manipulator.getDataAttributes(this._element), ...e, }), typeCheckConfig(NAME$9, e, this.constructor.DefaultType), "object" == typeof e.reference && !isElement(e.reference) && "function" != typeof e.reference.getBoundingClientRect) ) throw new TypeError( `${NAME$9.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`, ); return e; } _createPopper(e) { if (void 0 === Popper) throw new TypeError( "Bootstrap's dropdowns require Popper (https://popper.js.org)", ); let t = this._element; "parent" === this._config.reference ? (t = e) : isElement(this._config.reference) ? (t = getElement(this._config.reference)) : "object" == typeof this._config.reference && (t = this._config.reference); const i = this._getPopperConfig(), n = i.modifiers.find((e) => "applyStyles" === e.name && !1 === e.enabled); (this._popper = Popper.createPopper(t, this._menu, i)), n && Manipulator.setDataAttribute(this._menu, "popper", "static"); } _isShown(e = this._element) { return e.classList.contains("show"); } _getMenuElement() { return SelectorEngine.next(this._element, SELECTOR_MENU)[0]; } _getPlacement() { const e = this._element.parentNode; if (e.classList.contains("dropend")) return PLACEMENT_RIGHT; if (e.classList.contains("dropstart")) return PLACEMENT_LEFT; const t = "end" === getComputedStyle(this._menu).getPropertyValue("--bs-position").trim(); return e.classList.contains("dropup") ? t ? PLACEMENT_TOPEND : PLACEMENT_TOP : t ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM; } _detectNavbar() { return null !== this._element.closest(".navbar"); } _getOffset() { const { offset: e } = this._config; return "string" == typeof e ? e.split(",").map((e) => Number.parseInt(e, 10)) : "function" == typeof e ? (t) => e(t, this._element) : e; } _getPopperConfig() { const e = { placement: this._getPlacement(), modifiers: [ { name: "preventOverflow", options: { boundary: this._config.boundary }, }, { name: "offset", options: { offset: this._getOffset() } }, ], }; return ( "static" === this._config.display && (e.modifiers = [{ name: "applyStyles", enabled: !1 }]), { ...e, ...("function" == typeof this._config.popperConfig ? this._config.popperConfig(e) : this._config.popperConfig), } ); } _selectMenuItem({ key: e, target: t }) { const i = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter( isVisible, ); i.length && getNextActiveElement(i, t, "ArrowDown" === e, !i.includes(t)).focus(); } static jQueryInterface(e) { return this.each(function () { const t = Dropdown.getOrCreateInstance(this, e); if ("string" == typeof e) { if (void 0 === t[e]) throw new TypeError(`No method named "${e}"`); t[e](); } }); } static clearMenus(e) { if (e && (2 === e.button || ("keyup" === e.type && "Tab" !== e.key))) return; const t = SelectorEngine.find(SELECTOR_DATA_TOGGLE$3); for (let i = 0, n = t.length; i < n; i++) { const n = Dropdown.getInstance(t[i]); if (!n || !1 === n._config.autoClose) continue; if (!n._isShown()) continue; const s = { relatedTarget: n._element }; if (e) { const t = e.composedPath(), i = t.includes(n._menu); if ( t.includes(n._element) || ("inside" === n._config.autoClose && !i) || ("outside" === n._config.autoClose && i) ) continue; if ( n._menu.contains(e.target) && (("keyup" === e.type && "Tab" === e.key) || /input|select|option|textarea|form/i.test(e.target.tagName)) ) continue; "click" === e.type && (s.clickEvent = e); } n._completeHide(s); } } static getParentFromElement(e) { return getElementFromSelector(e) || e.parentNode; } static dataApiKeydownHandler(e) { if ( /input|textarea/i.test(e.target.tagName) ? "Space" === e.key || ("Escape" !== e.key && (("ArrowDown" !== e.key && "ArrowUp" !== e.key) || e.target.closest(SELECTOR_MENU))) : !REGEXP_KEYDOWN.test(e.key) ) return; const t = this.classList.contains("show"); if (!t && "Escape" === e.key) return; if ((e.preventDefault(), e.stopPropagation(), isDisabled(this))) return; const i = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0], n = Dropdown.getOrCreateInstance(i); if ("Escape" !== e.key) return "ArrowUp" === e.key || "ArrowDown" === e.key ? (t || n.show(), void n._selectMenuItem(e)) : void ((t && "Space" !== e.key) || Dropdown.clearMenus()); n.hide(); } } EventHandler.on( document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler, ), EventHandler.on( document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler, ), EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus), EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus), EventHandler.on( document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (e) { e.preventDefault(), Dropdown.getOrCreateInstance(this).toggle(); }, ), defineJQueryPlugin(Dropdown); const SELECTOR_FIXED_CONTENT = ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top", SELECTOR_STICKY_CONTENT = ".sticky-top"; class ScrollBarHelper { constructor() { this._element = document.body; } getWidth() { const e = document.documentElement.clientWidth; return Math.abs(window.innerWidth - e); } hide() { const e = this.getWidth(); this._disableOverFlow(), this._setElementAttributes(this._element, "paddingRight", (t) => t + e), this._setElementAttributes( SELECTOR_FIXED_CONTENT, "paddingRight", (t) => t + e, ), this._setElementAttributes(".sticky-top", "marginRight", (t) => t - e); } _disableOverFlow() { this._saveInitialAttribute(this._element, "overflow"), (this._element.style.overflow = "hidden"); } _setElementAttributes(e, t, i) { const n = this.getWidth(); this._applyManipulationCallback(e, (e) => { if (e !== this._element && window.innerWidth > e.clientWidth + n) return; this._saveInitialAttribute(e, t); const s = window.getComputedStyle(e)[t]; e.style[t] = `${i(Number.parseFloat(s))}px`; }); } reset() { this._resetElementAttributes(this._element, "overflow"), this._resetElementAttributes(this._element, "paddingRight"), this._resetElementAttributes(SELECTOR_FIXED_CONTENT, "paddingRight"), this._resetElementAttributes(".sticky-top", "marginRight"); } _saveInitialAttribute(e, t) { const i = e.style[t]; i && Manipulator.setDataAttribute(e, t, i); } _resetElementAttributes(e, t) { this._applyManipulationCallback(e, (e) => { const i = Manipulator.getDataAttribute(e, t); void 0 === i ? e.style.removeProperty(t) : (Manipulator.removeDataAttribute(e, t), (e.style[t] = i)); }); } _applyManipulationCallback(e, t) { isElement(e) ? t(e) : SelectorEngine.find(e, this._element).forEach(t); } isOverflowing() { return this.getWidth() > 0; } } const Default$7 = { className: "modal-backdrop", isVisible: !0, isAnimated: !1, rootElement: "body", clickCallback: null, }, DefaultType$7 = { className: "string", isVisible: "boolean", isAnimated: "boolean", rootElement: "(element|string)", clickCallback: "(function|null)", }, NAME$8 = "backdrop", CLASS_NAME_FADE$4 = "fade", CLASS_NAME_SHOW$5 = "show", EVENT_MOUSEDOWN = "mousedown.bs.backdrop"; class Backdrop { constructor(e) { (this._config = this._getConfig(e)), (this._isAppended = !1), (this._element = null); } show(e) { this._config.isVisible ? (this._append(), this._config.isAnimated && reflow(this._getElement()), this._getElement().classList.add("show"), this._emulateAnimation(() => { execute(e); })) : execute(e); } hide(e) { this._config.isVisible ? (this._getElement().classList.remove("show"), this._emulateAnimation(() => { this.dispose(), execute(e); })) : execute(e); } _getElement() { if (!this._element) { const e = document.createElement("div"); (e.className = this._config.className), this._config.isAnimated && e.classList.add("fade"), (this._element = e); } return this._element; } _getConfig(e) { return ( ((e = { ...Default$7, ...("object" == typeof e ? e : {}) }).rootElement = getElement(e.rootElement)), typeCheckConfig(NAME$8, e, DefaultType$7), e ); } _append() { this._isAppended || (this._config.rootElement.append(this._getElement()), EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, () => { execute(this._config.clickCallback); }), (this._isAppended = !0)); } dispose() { this._isAppended && (EventHandler.off(this._element, EVENT_MOUSEDOWN), this._element.remove(), (this._isAppended = !1)); } _emulateAnimation(e) { executeAfterTransition(e, this._getElement(), this._config.isAnimated); } } const Default$6 = { trapElement: null, autofocus: !0 }, DefaultType$6 = { trapElement: "element", autofocus: "boolean" }, NAME$7 = "focustrap", DATA_KEY$7 = "bs.focustrap", EVENT_KEY$7 = ".bs.focustrap", EVENT_FOCUSIN$1 = "focusin.bs.focustrap", EVENT_KEYDOWN_TAB = "keydown.tab.bs.focustrap", TAB_KEY = "Tab", TAB_NAV_FORWARD = "forward", TAB_NAV_BACKWARD = "backward"; class FocusTrap { constructor(e) { (this._config = this._getConfig(e)), (this._isActive = !1), (this._lastTabNavDirection = null); } activate() { const { trapElement: e, autofocus: t } = this._config; this._isActive || (t && e.focus(), EventHandler.off(document, EVENT_KEY$7), EventHandler.on(document, EVENT_FOCUSIN$1, (e) => this._handleFocusin(e)), EventHandler.on(document, EVENT_KEYDOWN_TAB, (e) => this._handleKeydown(e), ), (this._isActive = !0)); } deactivate() { this._isActive && ((this._isActive = !1), EventHandler.off(document, EVENT_KEY$7)); } _handleFocusin(e) { const { target: t } = e, { trapElement: i } = this._config; if (t === document || t === i || i.contains(t)) return; const n = SelectorEngine.focusableChildren(i); 0 === n.length ? i.focus() : "backward" === this._lastTabNavDirection ? n[n.length - 1].focus() : n[0].focus(); } _handleKeydown(e) { "Tab" === e.key && (this._lastTabNavDirection = e.shiftKey ? "backward" : "forward"); } _getConfig(e) { return ( (e = { ...Default$6, ...("object" == typeof e ? e : {}) }), typeCheckConfig(NAME$7, e, DefaultType$6), e ); } } const NAME$6 = "modal", DATA_KEY$6 = "bs.modal", EVENT_KEY$6 = ".bs.modal", DATA_API_KEY$3 = ".data-api", ESCAPE_KEY$1 = "Escape", Default$5 = { backdrop: !0, keyboard: !0, focus: !0 }, DefaultType$5 = { backdrop: "(boolean|string)", keyboard: "boolean", focus: "boolean", }, EVENT_HIDE$3 = "hide.bs.modal", EVENT_HIDE_PREVENTED = "hidePrevented.bs.modal", EVENT_HIDDEN$3 = "hidden.bs.modal", EVENT_SHOW$3 = "show.bs.modal", EVENT_SHOWN$3 = "shown.bs.modal", EVENT_RESIZE = "resize.bs.modal", EVENT_CLICK_DISMISS = "click.dismiss.bs.modal", EVENT_KEYDOWN_DISMISS$1 = "keydown.dismiss.bs.modal", EVENT_MOUSEUP_DISMISS = "mouseup.dismiss.bs.modal", EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss.bs.modal", EVENT_CLICK_DATA_API$2 = "click.bs.modal.data-api", CLASS_NAME_OPEN = "modal-open", CLASS_NAME_FADE$3 = "fade", CLASS_NAME_SHOW$4 = "show", CLASS_NAME_STATIC = "modal-static", OPEN_SELECTOR$1 = ".modal.show", SELECTOR_DIALOG = ".modal-dialog", SELECTOR_MODAL_BODY = ".modal-body", SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="modal"]'; class Modal extends BaseComponent { constructor(e, t) { super(e), (this._config = this._getConfig(t)), (this._dialog = SelectorEngine.findOne(".modal-dialog", this._element)), (this._backdrop = this._initializeBackDrop()), (this._focustrap = this._initializeFocusTrap()), (this._isShown = !1), (this._ignoreBackdropClick = !1), (this._isTransitioning = !1), (this._scrollBar = new ScrollBarHelper()); } static get Default() { return Default$5; } static get NAME() { return NAME$6; } toggle(e) { return this._isShown ? this.hide() : this.show(e); } show(e) { this._isShown || this._isTransitioning || EventHandler.trigger(this._element, EVENT_SHOW$3, { relatedTarget: e }) .defaultPrevented || ((this._isShown = !0), this._isAnimated() && (this._isTransitioning = !0), this._scrollBar.hide(), document.body.classList.add("modal-open"), this._adjustDialog(), this._setEscapeEvent(), this._setResizeEvent(), EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => { EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, (e) => { e.target === this._element && (this._ignoreBackdropClick = !0); }); }), this._showBackdrop(() => this._showElement(e))); } hide() { if (!this._isShown || this._isTransitioning) return; if (EventHandler.trigger(this._element, EVENT_HIDE$3).defaultPrevented) return; this._isShown = !1; const e = this._isAnimated(); e && (this._isTransitioning = !0), this._setEscapeEvent(), this._setResizeEvent(), this._focustrap.deactivate(), this._element.classList.remove("show"), EventHandler.off(this._element, EVENT_CLICK_DISMISS), EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS), this._queueCallback(() => this._hideModal(), this._element, e); } dispose() { [window, this._dialog].forEach((e) => EventHandler.off(e, ".bs.modal")), this._backdrop.dispose(), this._focustrap.deactivate(), super.dispose(); } handleUpdate() { this._adjustDialog(); } _initializeBackDrop() { return new Backdrop({ isVisible: Boolean(this._config.backdrop), isAnimated: this._isAnimated(), }); } _initializeFocusTrap() { return new FocusTrap({ trapElement: this._element }); } _getConfig(e) { return ( (e = { ...Default$5, ...Manipulator.getDataAttributes(this._element), ...("object" == typeof e ? e : {}), }), typeCheckConfig(NAME$6, e, DefaultType$5), e ); } _showElement(e) { const t = this._isAnimated(), i = SelectorEngine.findOne(".modal-body", this._dialog); (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE) || document.body.append(this._element), (this._element.style.display = "block"), this._element.removeAttribute("aria-hidden"), this._element.setAttribute("aria-modal", !0), this._element.setAttribute("role", "dialog"), (this._element.scrollTop = 0), i && (i.scrollTop = 0), t && reflow(this._element), this._element.classList.add("show"), this._queueCallback( () => { this._config.focus && this._focustrap.activate(), (this._isTransitioning = !1), EventHandler.trigger(this._element, EVENT_SHOWN$3, { relatedTarget: e, }); }, this._dialog, t, ); } _setEscapeEvent() { this._isShown ? EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, (e) => { this._config.keyboard && "Escape" === e.key ? (e.preventDefault(), this.hide()) : this._config.keyboard || "Escape" !== e.key || this._triggerBackdropTransition(); }) : EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS$1); } _setResizeEvent() { this._isShown ? EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog()) : EventHandler.off(window, EVENT_RESIZE); } _hideModal() { (this._element.style.display = "none"), this._element.setAttribute("aria-hidden", !0), this._element.removeAttribute("aria-modal"), this._element.removeAttribute("role"), (this._isTransitioning = !1), this._backdrop.hide(() => { document.body.classList.remove("modal-open"), this._resetAdjustments(), this._scrollBar.reset(), EventHandler.trigger(this._element, EVENT_HIDDEN$3); }); } _showBackdrop(e) { EventHandler.on(this._element, EVENT_CLICK_DISMISS, (e) => { this._ignoreBackdropClick ? (this._ignoreBackdropClick = !1) : e.target === e.currentTarget && (!0 === this._config.backdrop ? this.hide() : "static" === this._config.backdrop && this._triggerBackdropTransition()); }), this._backdrop.show(e); } _isAnimated() { return this._element.classList.contains("fade"); } _triggerBackdropTransition() { if ( EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED).defaultPrevented ) return; const { classList: e, scrollHeight: t, style: i } = this._element, n = t > document.documentElement.clientHeight; (!n && "hidden" === i.overflowY) || e.contains("modal-static") || (n || (i.overflowY = "hidden"), e.add("modal-static"), this._queueCallback(() => { e.remove("modal-static"), n || this._queueCallback(() => { i.overflowY = ""; }, this._dialog); }, this._dialog), this._element.focus()); } _adjustDialog() { const e = this._element.scrollHeight > document.documentElement.clientHeight, t = this._scrollBar.getWidth(), i = t > 0; ((!i && e && !isRTL()) || (i && !e && isRTL())) && (this._element.style.paddingLeft = `${t}px`), ((i && !e && !isRTL()) || (!i && e && isRTL())) && (this._element.style.paddingRight = `${t}px`); } _resetAdjustments() { (this._element.style.paddingLeft = ""), (this._element.style.paddingRight = ""); } static jQueryInterface(e, t) { return this.each(function () { const i = Modal.getOrCreateInstance(this, e); if ("string" == typeof e) { if (void 0 === i[e]) throw new TypeError(`No method named "${e}"`); i[e](t); } }); } } EventHandler.on( document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (e) { const t = getElementFromSelector(this); ["A", "AREA"].includes(this.tagName) && e.preventDefault(), EventHandler.one(t, EVENT_SHOW$3, (e) => { e.defaultPrevented || EventHandler.one(t, EVENT_HIDDEN$3, () => { isVisible(this) && this.focus(); }); }); const i = SelectorEngine.findOne(".modal.show"); i && Modal.getInstance(i).hide(), Modal.getOrCreateInstance(t).toggle(this); }, ), enableDismissTrigger(Modal), defineJQueryPlugin(Modal); const NAME$5 = "offcanvas", DATA_KEY$5 = "bs.offcanvas", EVENT_KEY$5 = ".bs.offcanvas", DATA_API_KEY$2 = ".data-api", EVENT_LOAD_DATA_API$1 = "load.bs.offcanvas.data-api", ESCAPE_KEY = "Escape", Default$4 = { backdrop: !0, keyboard: !0, scroll: !1 }, DefaultType$4 = { backdrop: "boolean", keyboard: "boolean", scroll: "boolean", }, CLASS_NAME_SHOW$3 = "show", CLASS_NAME_BACKDROP = "offcanvas-backdrop", OPEN_SELECTOR = ".offcanvas.show", EVENT_SHOW$2 = "show.bs.offcanvas", EVENT_SHOWN$2 = "shown.bs.offcanvas", EVENT_HIDE$2 = "hide.bs.offcanvas", EVENT_HIDDEN$2 = "hidden.bs.offcanvas", EVENT_CLICK_DATA_API$1 = "click.bs.offcanvas.data-api", EVENT_KEYDOWN_DISMISS = "keydown.dismiss.bs.offcanvas", SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="offcanvas"]'; class Offcanvas extends BaseComponent { constructor(e, t) { super(e), (this._config = this._getConfig(t)), (this._isShown = !1), (this._backdrop = this._initializeBackDrop()), (this._focustrap = this._initializeFocusTrap()), this._addEventListeners(); } static get NAME() { return NAME$5; } static get Default() { return Default$4; } toggle(e) { return this._isShown ? this.hide() : this.show(e); } show(e) { this._isShown || EventHandler.trigger(this._element, EVENT_SHOW$2, { relatedTarget: e }) .defaultPrevented || ((this._isShown = !0), (this._element.style.visibility = "visible"), this._backdrop.show(), this._config.scroll || new ScrollBarHelper().hide(), this._element.removeAttribute("aria-hidden"), this._element.setAttribute("aria-modal", !0), this._element.setAttribute("role", "dialog"), this._element.classList.add("show"), this._queueCallback( () => { this._config.scroll || this._focustrap.activate(), EventHandler.trigger(this._element, EVENT_SHOWN$2, { relatedTarget: e, }); }, this._element, !0, )); } hide() { this._isShown && (EventHandler.trigger(this._element, EVENT_HIDE$2).defaultPrevented || (this._focustrap.deactivate(), this._element.blur(), (this._isShown = !1), this._element.classList.remove("show"), this._backdrop.hide(), this._queueCallback( () => { this._element.setAttribute("aria-hidden", !0), this._element.removeAttribute("aria-modal"), this._element.removeAttribute("role"), (this._element.style.visibility = "hidden"), this._config.scroll || new ScrollBarHelper().reset(), EventHandler.trigger(this._element, EVENT_HIDDEN$2); }, this._element, !0, ))); } dispose() { this._backdrop.dispose(), this._focustrap.deactivate(), super.dispose(); } _getConfig(e) { return ( (e = { ...Default$4, ...Manipulator.getDataAttributes(this._element), ...("object" == typeof e ? e : {}), }), typeCheckConfig(NAME$5, e, DefaultType$4), e ); } _initializeBackDrop() { return new Backdrop({ className: CLASS_NAME_BACKDROP, isVisible: this._config.backdrop, isAnimated: !0, rootElement: this._element.parentNode, clickCallback: () => this.hide(), }); } _initializeFocusTrap() { return new FocusTrap({ trapElement: this._element }); } _addEventListeners() { EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, (e) => { this._config.keyboard && "Escape" === e.key && this.hide(); }); } static jQueryInterface(e) { return this.each(function () { const t = Offcanvas.getOrCreateInstance(this, e); if ("string" == typeof e) { if (void 0 === t[e] || e.startsWith("_") || "constructor" === e) throw new TypeError(`No method named "${e}"`); t[e](this); } }); } } EventHandler.on( document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (e) { const t = getElementFromSelector(this); if ( (["A", "AREA"].includes(this.tagName) && e.preventDefault(), isDisabled(this)) ) return; EventHandler.one(t, EVENT_HIDDEN$2, () => { isVisible(this) && this.focus(); }); const i = SelectorEngine.findOne(OPEN_SELECTOR); i && i !== t && Offcanvas.getInstance(i).hide(), Offcanvas.getOrCreateInstance(t).toggle(this); }, ), EventHandler.on(window, EVENT_LOAD_DATA_API$1, () => SelectorEngine.find(OPEN_SELECTOR).forEach((e) => Offcanvas.getOrCreateInstance(e).show(), ), ), enableDismissTrigger(Offcanvas), defineJQueryPlugin(Offcanvas); const uriAttributes = new Set([ "background", "cite", "href", "itemtype", "longdesc", "poster", "src", "xlink:href", ]), ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i, SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i, DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i, allowedAttribute = (e, t) => { const i = e.nodeName.toLowerCase(); if (t.includes(i)) return ( !uriAttributes.has(i) || Boolean( SAFE_URL_PATTERN.test(e.nodeValue) || DATA_URL_PATTERN.test(e.nodeValue), ) ); const n = t.filter((e) => e instanceof RegExp); for (let e = 0, t = n.length; e < t; e++) if (n[e].test(i)) return !0; return !1; }, DefaultAllowlist = { "*": ["class", "dir", "id", "lang", "role", ARIA_ATTRIBUTE_PATTERN], a: ["target", "href", "title", "rel"], area: [], b: [], br: [], col: [], code: [], div: [], em: [], hr: [], h1: [], h2: [], h3: [], h4: [], h5: [], h6: [], i: [], img: ["src", "srcset", "alt", "title", "width", "height"], li: [], ol: [], p: [], pre: [], s: [], small: [], span: [], sub: [], sup: [], strong: [], u: [], ul: [], }; function sanitizeHtml(e, t, i) { if (!e.length) return e; if (i && "function" == typeof i) return i(e); const n = new window.DOMParser().parseFromString(e, "text/html"), s = [].concat(...n.body.querySelectorAll("*")); for (let e = 0, i = s.length; e < i; e++) { const i = s[e], n = i.nodeName.toLowerCase(); if (!Object.keys(t).includes(n)) { i.remove(); continue; } const o = [].concat(...i.attributes), r = [].concat(t["*"] || [], t[n] || []); o.forEach((e) => { allowedAttribute(e, r) || i.removeAttribute(e.nodeName); }); } return n.body.innerHTML; } const NAME$4 = "tooltip", DATA_KEY$4 = "bs.tooltip", EVENT_KEY$4 = ".bs.tooltip", CLASS_PREFIX$1 = "bs-tooltip", DISALLOWED_ATTRIBUTES = new Set(["sanitize", "allowList", "sanitizeFn"]), DefaultType$3 = { animation: "boolean", template: "string", title: "(string|element|function)", trigger: "string", delay: "(number|object)", html: "boolean", selector: "(string|boolean)", placement: "(string|function)", offset: "(array|string|function)", container: "(string|element|boolean)", fallbackPlacements: "array", boundary: "(string|element)", customClass: "(string|function)", sanitize: "boolean", sanitizeFn: "(null|function)", allowList: "object", popperConfig: "(null|object|function)", }, AttachmentMap = { AUTO: "auto", TOP: "top", RIGHT: isRTL() ? "left" : "right", BOTTOM: "bottom", LEFT: isRTL() ? "right" : "left", }, Default$3 = { animation: !0, template: '