{"version":3,"file":"js/npm.bootstrap.min-0229b0971b3e590df20b.js","mappings":"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","sources":["webpack://app/../../js/src/dom/data.js","webpack://app/../../js/src/util/index.js","webpack://app/../../js/src/dom/event-handler.js","webpack://app/../../js/src/dom/manipulator.js","webpack://app/../../js/src/util/config.js","webpack://app/../../js/src/base-component.js","webpack://app/../../js/src/dom/selector-engine.js","webpack://app/../../js/src/util/component-functions.js","webpack://app/../../js/src/alert.js","webpack://app/../../js/src/button.js","webpack://app/../../js/src/util/swipe.js","webpack://app/../../js/src/carousel.js","webpack://app/../../js/src/collapse.js","webpack://app/../../js/src/dropdown.js","webpack://app/../../js/src/util/backdrop.js","webpack://app/../../js/src/util/focustrap.js","webpack://app/../../js/src/util/scrollbar.js","webpack://app/../../js/src/modal.js","webpack://app/../../js/src/offcanvas.js","webpack://app/../../js/src/util/sanitizer.js","webpack://app/../../js/src/util/template-factory.js","webpack://app/../../js/src/tooltip.js","webpack://app/../../js/src/popover.js","webpack://app/../../js/src/scrollspy.js","webpack://app/../../js/src/tab.js","webpack://app/../../js/src/toast.js","webpack://app/../../js/index.umd.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map())\n }\n\n const instanceMap = elementMap.get(element)\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n return\n }\n\n instanceMap.set(key, instance)\n },\n\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null\n }\n\n return null\n },\n\n remove(element, key) {\n if (!elementMap.has(element)) {\n return\n }\n\n const instanceMap = elementMap.get(element)\n\n instanceMap.delete(key)\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element)\n }\n }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n if (selector && window.CSS && window.CSS.escape) {\n // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\n }\n\n return selector\n}\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n if (object === null || object === undefined) {\n return `${object}`\n }\n\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n if (!object || typeof object !== 'object') {\n return false\n }\n\n if (typeof object.jquery !== 'undefined') {\n object = object[0]\n }\n\n return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object\n }\n\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(parseSelector(object))\n }\n\n return null\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n // Handle `details` element as its content may falsie appear visible when it is closed\n const closedDetails = element.closest('details:not([open])')\n\n if (!closedDetails) {\n return elementIsVisible\n }\n\n if (closedDetails !== element) {\n const summary = element.closest('summary')\n if (summary && summary.parentNode !== closedDetails) {\n return false\n }\n\n if (summary === null) {\n return false\n }\n }\n\n return elementIsVisible\n}\n\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true\n }\n\n if (element.classList.contains('disabled')) {\n return true\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery\n }\n\n return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback()\n }\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\n const JQUERY_NO_CONFLICT = $.fn[name]\n $.fn[name] = plugin.jQueryInterface\n $.fn[name].Constructor = plugin\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT\n return plugin.jQueryInterface\n }\n }\n })\n}\n\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n }\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n defineJQueryPlugin,\n execute,\n executeAfterTransition,\n findShadowRoot,\n getElement,\n getjQuery,\n getNextActiveElement,\n getTransitionDurationFromElement,\n getUID,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop,\n onDOMContentLoaded,\n parseSelector,\n reflow,\n triggerTransitionEnd,\n toType\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index.js'\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n const uid = makeEventUid(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, { delegateTarget: element })\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(element, [event])\n }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector)\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue\n }\n\n hydrateObj(event, { delegateTarget: target })\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n return Object.values(events)\n .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string'\n // TODO: tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n let typeEvent = getTypeEvent(originalTypeEvent)\n\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent\n }\n\n return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (originalTypeEvent in customEvents) {\n const wrapFunction = fn => {\n return function (event) {\n if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n return fn.call(this, event)\n }\n }\n }\n\n callable = wrapFunction(callable)\n }\n\n const events = getElementEvents(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n return\n }\n\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = isDelegated ?\n bootstrapDelegationHandler(element, handler, callable) :\n bootstrapHandler(element, callable)\n\n fn.delegationSelector = isDelegated ? handler : null\n fn.callable = callable\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n if (!fn) {\n return\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {}\n\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n }\n }\n}\n\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '')\n return customEvents[event] || event\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false)\n },\n\n one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getElementEvents(element)\n const storeElementEvent = events[typeEvent] || {}\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return\n }\n\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n return\n }\n\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n }\n }\n\n for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n }\n }\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = getTypeEvent(event)\n const inNamespace = event !== typeEvent\n\n let jQueryEvent = null\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args)\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nfunction hydrateObj(obj, meta = {}) {\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value\n } catch {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value\n }\n })\n }\n }\n\n return obj\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n if (value === 'true') {\n return true\n }\n\n if (value === 'false') {\n return false\n }\n\n if (value === Number(value).toString()) {\n return Number(value)\n }\n\n if (value === '' || value === 'null') {\n return null\n }\n\n if (typeof value !== 'string') {\n return value\n }\n\n try {\n return JSON.parse(decodeURIComponent(value))\n } catch {\n return value\n }\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n for (const key of bsKeys) {\n let pureKey = key.replace(/^bs/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n }\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport { isElement, toType } from './index.js'\n\n/**\n * Class definition\n */\n\nclass Config {\n // Getters\n static get Default() {\n return {}\n }\n\n static get DefaultType() {\n return {}\n }\n\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!')\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n _configAfterMerge(config) {\n return config\n }\n\n _mergeConfigObj(config, element) {\n const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n return {\n ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {})\n }\n }\n\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const [property, expectedTypes] of Object.entries(configTypes)) {\n const value = config[property]\n const valueType = isElement(value) ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(\n `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n }\n }\n}\n\nexport default Config\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\nimport { executeAfterTransition, getElement } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '5.3.3'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n constructor(element, config) {\n super()\n\n element = getElement(element)\n if (!element) {\n return\n }\n\n this._element = element\n this._config = this._getConfig(config)\n\n Data.set(this._element, this.constructor.DATA_KEY, this)\n }\n\n // Public\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY)\n EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null\n }\n }\n\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated)\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n // Static\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY)\n }\n\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n }\n\n static get VERSION() {\n return VERSION\n }\n\n static get DATA_KEY() {\n return `bs.${this.NAME}`\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`\n }\n\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`\n }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible, parseSelector } from '../util/index.js'\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href')\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n }\n\n selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n }\n\n return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null\n}\n\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector)\n },\n\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector))\n },\n\n parents(element, selector) {\n const parents = []\n let ancestor = element.parentNode.closest(selector)\n\n while (ancestor) {\n parents.push(ancestor)\n ancestor = ancestor.parentNode.closest(selector)\n }\n\n return parents\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous]\n }\n\n previous = previous.previousElementSibling\n }\n\n return []\n },\n // TODO: this is now unused; remove later along with prev()\n next(element, selector) {\n let next = element.nextElementSibling\n\n while (next) {\n if (next.matches(selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n },\n\n focusableChildren(element) {\n const focusables = [\n 'a',\n 'button',\n 'input',\n 'textarea',\n 'select',\n 'details',\n '[tabindex]',\n '[contenteditable=\"true\"]'\n ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n },\n\n getSelectorFromElement(element) {\n const selector = getSelector(element)\n\n if (selector) {\n return SelectorEngine.findOne(selector) ? selector : null\n }\n\n return null\n },\n\n getElementFromSelector(element) {\n const selector = getSelector(element)\n\n return selector ? SelectorEngine.findOne(selector) : null\n },\n\n getMultipleElementsFromSelector(element) {\n const selector = getSelector(element)\n\n return selector ? SelectorEngine.find(selector) : []\n }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isDisabled } from './index.js'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`\n const name = component.NAME\n\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`)\n const instance = component.getOrCreateInstance(target)\n\n // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n instance[method]()\n })\n}\n\nexport {\n enableDismissTrigger\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { defineJQueryPlugin } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n if (closeEvent.defaultPrevented) {\n return\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n }\n\n // Private\n _destroyElement() {\n this._element.remove()\n EventHandler.trigger(this._element, EVENT_CLOSED)\n this.dispose()\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { defineJQueryPlugin } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this)\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n event.preventDefault()\n\n const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n const data = Button.getOrCreateInstance(button)\n\n data.toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button)\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n}\n\nconst DefaultType = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n constructor(element, config) {\n super()\n this._element = element\n\n if (!element || !Swipe.isSupported()) {\n return\n }\n\n this._config = this._getConfig(config)\n this._deltaX = 0\n this._supportPointerEvents = Boolean(window.PointerEvent)\n this._initEvents()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n dispose() {\n EventHandler.off(this._element, EVENT_KEY)\n }\n\n // Private\n _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX\n\n return\n }\n\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX\n }\n }\n\n _end(event) {\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX - this._deltaX\n }\n\n this._handleSwipe()\n execute(this._config.endCallback)\n }\n\n _move(event) {\n this._deltaX = event.touches && event.touches.length > 1 ?\n 0 :\n event.touches[0].clientX - this._deltaX\n }\n\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX)\n\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltaX / this._deltaX\n\n this._deltaX = 0\n\n if (!direction) {\n return\n }\n\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n }\n\n _initEvents() {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n }\n }\n\n _eventIsPointerPenTouch(event) {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n }\n\n // Static\n static isSupported() {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n }\n}\n\nexport default Swipe\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n defineJQueryPlugin,\n getNextActiveElement,\n isRTL,\n isVisible,\n reflow,\n triggerTransitionEnd\n} from './util/index.js'\nimport Swipe from './util/swipe.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n ride: false,\n touch: true,\n wrap: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)', // TODO:v6 remove boolean support\n keyboard: 'boolean',\n pause: '(string|boolean)',\n ride: '(boolean|string)',\n touch: 'boolean',\n wrap: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._interval = null\n this._activeElement = null\n this._isSliding = false\n this.touchTimeout = null\n this._swipeHelper = null\n\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n this._addEventListeners()\n\n if (this._config.ride === CLASS_NAME_CAROUSEL) {\n this.cycle()\n }\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n next() {\n this._slide(ORDER_NEXT)\n }\n\n nextWhenVisible() {\n // FIXME TODO use `document.visibilityState`\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next()\n }\n }\n\n prev() {\n this._slide(ORDER_PREV)\n }\n\n pause() {\n if (this._isSliding) {\n triggerTransitionEnd(this._element)\n }\n\n this._clearInterval()\n }\n\n cycle() {\n this._clearInterval()\n this._updateInterval()\n\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval)\n }\n\n _maybeEnableCycle() {\n if (!this._config.ride) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.cycle())\n return\n }\n\n this.cycle()\n }\n\n to(index) {\n const items = this._getItems()\n if (index > items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n return\n }\n\n const activeIndex = this._getItemIndex(this._getActive())\n if (activeIndex === index) {\n return\n }\n\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV\n\n this._slide(order, items[index])\n }\n\n dispose() {\n if (this._swipeHelper) {\n this._swipeHelper.dispose()\n }\n\n super.dispose()\n }\n\n // Private\n _configAfterMerge(config) {\n config.defaultInterval = config.interval\n return config\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n }\n\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault())\n }\n\n const endCallBack = () => {\n if (this._config.pause !== 'hover') {\n return\n }\n\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n\n const swipeConfig = {\n leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n endCallback: endCallBack\n }\n\n this._swipeHelper = new Swipe(this._element, swipeConfig)\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n const direction = KEY_TO_DIRECTION[event.key]\n if (direction) {\n event.preventDefault()\n this._slide(this._directionToOrder(direction))\n }\n }\n\n _getItemIndex(element) {\n return this._getItems().indexOf(element)\n }\n\n _setActiveIndicatorElement(index) {\n if (!this._indicatorsElement) {\n return\n }\n\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n activeIndicator.removeAttribute('aria-current')\n\n const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n\n if (newActiveIndicator) {\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE)\n newActiveIndicator.setAttribute('aria-current', 'true')\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || this._getActive()\n\n if (!element) {\n return\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n this._config.interval = elementInterval || this._config.defaultInterval\n }\n\n _slide(order, element = null) {\n if (this._isSliding) {\n return\n }\n\n const activeElement = this._getActive()\n const isNext = order === ORDER_NEXT\n const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap)\n\n if (nextElement === activeElement) {\n return\n }\n\n const nextElementIndex = this._getItemIndex(nextElement)\n\n const triggerEvent = eventName => {\n return EventHandler.trigger(this._element, eventName, {\n relatedTarget: nextElement,\n direction: this._orderToDirection(order),\n from: this._getItemIndex(activeElement),\n to: nextElementIndex\n })\n }\n\n const slideEvent = triggerEvent(EVENT_SLIDE)\n\n if (slideEvent.defaultPrevented) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n // TODO: change tests that use empty divs to avoid this check\n return\n }\n\n const isCycling = Boolean(this._interval)\n this.pause()\n\n this._isSliding = true\n\n this._setActiveIndicatorElement(nextElementIndex)\n this._activeElement = nextElement\n\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n\n nextElement.classList.add(orderClassName)\n\n reflow(nextElement)\n\n activeElement.classList.add(directionalClassName)\n nextElement.classList.add(directionalClassName)\n\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n this._isSliding = false\n\n triggerEvent(EVENT_SLID)\n }\n\n this._queueCallback(completeCallBack, activeElement, this._isAnimated())\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_SLIDE)\n }\n\n _getActive() {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n }\n\n _getItems() {\n return SelectorEngine.find(SELECTOR_ITEM, this._element)\n }\n\n _clearInterval() {\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n }\n\n _directionToOrder(direction) {\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n }\n\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n }\n\n _orderToDirection(order) {\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n }\n\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Carousel.getOrCreateInstance(this, config)\n\n if (typeof config === 'number') {\n data.to(config)\n return\n }\n\n if (typeof config === 'string') {\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this)\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n event.preventDefault()\n\n const carousel = Carousel.getOrCreateInstance(target)\n const slideIndex = this.getAttribute('data-bs-slide-to')\n\n if (slideIndex) {\n carousel.to(slideIndex)\n carousel._maybeEnableCycle()\n return\n }\n\n if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n carousel.next()\n carousel._maybeEnableCycle()\n return\n }\n\n carousel.prev()\n carousel._maybeEnableCycle()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n for (const carousel of carousels) {\n Carousel.getOrCreateInstance(carousel)\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n defineJQueryPlugin,\n getElement,\n reflow\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n parent: null,\n toggle: true\n}\n\nconst DefaultType = {\n parent: '(null|element)',\n toggle: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._isTransitioning = false\n this._triggerArray = []\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (const elem of toggleList) {\n const selector = SelectorEngine.getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector)\n .filter(foundElement => foundElement === this._element)\n\n if (selector !== null && filterElement.length) {\n this._triggerArray.push(elem)\n }\n }\n\n this._initializeChildren()\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n if (this._isShown()) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning || this._isShown()) {\n return\n }\n\n let activeChildren = []\n\n // find active children\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n .filter(element => element !== this._element)\n .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n }\n\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (startEvent.defaultPrevented) {\n return\n }\n\n for (const activeInstance of activeChildren) {\n activeInstance.hide()\n }\n\n const dimension = this._getDimension()\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE)\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n this._addAriaAndCollapsedClass(this._triggerArray, true)\n this._isTransitioning = true\n\n const complete = () => {\n this._isTransitioning = false\n\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n this._element.style[dimension] = ''\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n\n this._queueCallback(complete, this._element, true)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n if (startEvent.defaultPrevented) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n for (const trigger of this._triggerArray) {\n const element = SelectorEngine.getElementFromSelector(trigger)\n\n if (element && !this._isShown(element)) {\n this._addAriaAndCollapsedClass([trigger], false)\n }\n }\n\n this._isTransitioning = true\n\n const complete = () => {\n this._isTransitioning = false\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n\n this._queueCallback(complete, this._element, true)\n }\n\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW)\n }\n\n // Private\n _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle) // Coerce string values\n config.parent = getElement(config.parent)\n return config\n }\n\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n }\n\n _initializeChildren() {\n if (!this._config.parent) {\n return\n }\n\n const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n for (const element of children) {\n const selected = SelectorEngine.getElementFromSelector(element)\n\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected))\n }\n }\n }\n\n _getFirstLevelChildren(selector) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n // remove children if greater depth\n return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element))\n }\n\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return\n }\n\n for (const element of triggerArray) {\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n element.setAttribute('aria-expanded', isOpen)\n }\n }\n\n // Static\n static jQueryInterface(config) {\n const _config = {}\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n return this.each(function () {\n const data = Collapse.getOrCreateInstance(this, _config)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n event.preventDefault()\n }\n\n for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n defineJQueryPlugin,\n execute,\n getElement,\n getNextActiveElement,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center'\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)'\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME_SHOW}`\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR = '.navbar'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\nconst PLACEMENT_TOPCENTER = 'top'\nconst PLACEMENT_BOTTOMCENTER = 'bottom'\n\nconst Default = {\n autoClose: true,\n boundary: 'clippingParents',\n display: 'dynamic',\n offset: [0, 2],\n popperConfig: null,\n reference: 'toggle'\n}\n\nconst DefaultType = {\n autoClose: '(boolean|string)',\n boundary: '(string|element)',\n display: 'string',\n offset: '(array|string|function)',\n popperConfig: '(null|object|function)',\n reference: '(string|element|object)'\n}\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._popper = null\n this._parent = this._element.parentNode // dropdown wrapper\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n SelectorEngine.findOne(SELECTOR_MENU, this._parent)\n this._inNavbar = this._detectNavbar()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n return this._isShown() ? this.hide() : this.show()\n }\n\n show() {\n if (isDisabled(this._element) || this._isShown()) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._createPopper()\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop)\n }\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n this._menu.classList.add(CLASS_NAME_SHOW)\n this._element.classList.add(CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n }\n\n hide() {\n if (isDisabled(this._element) || !this._isShown()) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n this._completeHide(relatedTarget)\n }\n\n dispose() {\n if (this._popper) {\n this._popper.destroy()\n }\n\n super.dispose()\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Private\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop)\n }\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._menu.classList.remove(CLASS_NAME_SHOW)\n this._element.classList.remove(CLASS_NAME_SHOW)\n this._element.setAttribute('aria-expanded', 'false')\n Manipulator.removeDataAttribute(this._menu, 'popper')\n EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n }\n\n _getConfig(config) {\n config = super._getConfig(config)\n\n if (typeof config.reference === 'object' && !isElement(config.reference) &&\n typeof config.reference.getBoundingClientRect !== 'function'\n ) {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n }\n\n return config\n }\n\n _createPopper() {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = this._parent\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference)\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference\n }\n\n const popperConfig = this._getPopperConfig()\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n }\n\n _isShown() {\n return this._menu.classList.contains(CLASS_NAME_SHOW)\n }\n\n _getPlacement() {\n const parentDropdown = this._parent\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n return PLACEMENT_TOPCENTER\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n return PLACEMENT_BOTTOMCENTER\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n }\n\n _detectNavbar() {\n return this._element.closest(SELECTOR_NAVBAR) !== null\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n }\n\n // Disable Popper if we have a static display or Dropdown is in Navbar\n if (this._inNavbar || this._config.display === 'static') {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static') // TODO: v6 remove\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n }\n }\n\n _selectMenuItem({ key, target }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element))\n\n if (!items.length) {\n return\n }\n\n // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Dropdown.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n\n static clearMenus(event) {\n if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n return\n }\n\n const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN)\n\n for (const toggle of openToggles) {\n const context = Dropdown.getInstance(toggle)\n if (!context || context._config.autoClose === false) {\n continue\n }\n\n const composedPath = event.composedPath()\n const isMenuTarget = composedPath.includes(context._menu)\n if (\n composedPath.includes(context._element) ||\n (context._config.autoClose === 'inside' && !isMenuTarget) ||\n (context._config.autoClose === 'outside' && isMenuTarget)\n ) {\n continue\n }\n\n // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue\n }\n\n const relatedTarget = { relatedTarget: context._element }\n\n if (event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n context._completeHide(relatedTarget)\n }\n }\n\n static dataApiKeydownHandler(event) {\n // If not an UP | DOWN | ESCAPE key => not a dropdown command\n // If input/textarea && if key is other than ESCAPE => not a dropdown command\n\n const isInput = /input|textarea/i.test(event.target.tagName)\n const isEscapeEvent = event.key === ESCAPE_KEY\n const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n\n if (!isUpOrDownEvent && !isEscapeEvent) {\n return\n }\n\n if (isInput && !isEscapeEvent) {\n return\n }\n\n event.preventDefault()\n\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n this :\n (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n if (isUpOrDownEvent) {\n event.stopPropagation()\n instance.show()\n instance._selectMenuItem(event)\n return\n }\n\n if (instance._isShown()) { // else is escape and we check if it is shown\n event.stopPropagation()\n instance.hide()\n getToggleButton.focus()\n }\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n Dropdown.getOrCreateInstance(this).toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport {\n execute, executeAfterTransition, getElement, reflow\n} from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nconst Default = {\n className: 'modal-backdrop',\n clickCallback: null,\n isAnimated: false,\n isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n rootElement: 'body' // give the choice to place backdrop under different elements\n}\n\nconst DefaultType = {\n className: 'string',\n clickCallback: '(function|null)',\n isAnimated: 'boolean',\n isVisible: 'boolean',\n rootElement: '(element|string)'\n}\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n this._isAppended = false\n this._element = null\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._append()\n\n const element = this._getElement()\n if (this._config.isAnimated) {\n reflow(element)\n }\n\n element.classList.add(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n execute(callback)\n })\n }\n\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n this.dispose()\n execute(callback)\n })\n }\n\n dispose() {\n if (!this._isAppended) {\n return\n }\n\n EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n this._element.remove()\n this._isAppended = false\n }\n\n // Private\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div')\n backdrop.className = this._config.className\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE)\n }\n\n this._element = backdrop\n }\n\n return this._element\n }\n\n _configAfterMerge(config) {\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement)\n return config\n }\n\n _append() {\n if (this._isAppended) {\n return\n }\n\n const element = this._getElement()\n this._config.rootElement.append(element)\n\n EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback)\n })\n\n this._isAppended = true\n }\n\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nconst Default = {\n autofocus: true,\n trapElement: null // The element to trap focus inside of\n}\n\nconst DefaultType = {\n autofocus: 'boolean',\n trapElement: 'element'\n}\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n this._isActive = false\n this._lastTabNavDirection = null\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n activate() {\n if (this._isActive) {\n return\n }\n\n if (this._config.autofocus) {\n this._config.trapElement.focus()\n }\n\n EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n this._isActive = true\n }\n\n deactivate() {\n if (!this._isActive) {\n return\n }\n\n this._isActive = false\n EventHandler.off(document, EVENT_KEY)\n }\n\n // Private\n _handleFocusin(event) {\n const { trapElement } = this._config\n\n if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n return\n }\n\n const elements = SelectorEngine.focusableChildren(trapElement)\n\n if (elements.length === 0) {\n trapElement.focus()\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus()\n } else {\n elements[0].focus()\n }\n }\n\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return\n }\n\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n }\n}\n\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\nconst PROPERTY_PADDING = 'padding-right'\nconst PROPERTY_MARGIN = 'margin-right'\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body\n }\n\n // Public\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth\n return Math.abs(window.innerWidth - documentWidth)\n }\n\n hide() {\n const width = this.getWidth()\n this._disableOverFlow()\n // give padding to element to balance the hidden scrollbar width\n this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width)\n }\n\n reset() {\n this._resetElementAttributes(this._element, 'overflow')\n this._resetElementAttributes(this._element, PROPERTY_PADDING)\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING)\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN)\n }\n\n isOverflowing() {\n return this.getWidth() > 0\n }\n\n // Private\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow')\n this._element.style.overflow = 'hidden'\n }\n\n _setElementAttributes(selector, styleProperty, callback) {\n const scrollbarWidth = this.getWidth()\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return\n }\n\n this._saveInitialAttribute(element, styleProperty)\n const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty)\n element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`)\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _saveInitialAttribute(element, styleProperty) {\n const actualValue = element.style.getPropertyValue(styleProperty)\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProperty, actualValue)\n }\n }\n\n _resetElementAttributes(selector, styleProperty) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProperty)\n // We only want to remove the property if the value is `null`; the value can also be zero\n if (value === null) {\n element.style.removeProperty(styleProperty)\n return\n }\n\n Manipulator.removeDataAttribute(element, styleProperty)\n element.style.setProperty(styleProperty, value)\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector)\n return\n }\n\n for (const sel of SelectorEngine.find(selector, this._element)) {\n callBack(sel)\n }\n }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Backdrop from './util/backdrop.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport FocusTrap from './util/focustrap.js'\nimport {\n defineJQueryPlugin, isRTL, isVisible, reflow\n} from './util/index.js'\nimport ScrollBarHelper from './util/scrollbar.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst OPEN_SELECTOR = '.modal.show'\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\n\nconst Default = {\n backdrop: true,\n focus: true,\n keyboard: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n focus: 'boolean',\n keyboard: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\n this._backdrop = this._initializeBackDrop()\n this._focustrap = this._initializeFocusTrap()\n this._isShown = false\n this._isTransitioning = false\n this._scrollBar = new ScrollBarHelper()\n\n this._addEventListeners()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget\n })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n this._isTransitioning = true\n\n this._scrollBar.hide()\n\n document.body.classList.add(CLASS_NAME_OPEN)\n\n this._adjustDialog()\n\n this._backdrop.show(() => this._showElement(relatedTarget))\n }\n\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._isShown = false\n this._isTransitioning = true\n this._focustrap.deactivate()\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n this._queueCallback(() => this._hideModal(), this._element, this._isAnimated())\n }\n\n dispose() {\n EventHandler.off(window, EVENT_KEY)\n EventHandler.off(this._dialog, EVENT_KEY)\n\n this._backdrop.dispose()\n this._focustrap.deactivate()\n\n super.dispose()\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value,\n isAnimated: this._isAnimated()\n })\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n })\n }\n\n _showElement(relatedTarget) {\n // try to append dynamic modal\n if (!document.body.contains(this._element)) {\n document.body.append(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.scrollTop = 0\n\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n if (modalBody) {\n modalBody.scrollTop = 0\n }\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_SHOW)\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate()\n }\n\n this._isTransitioning = false\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget\n })\n }\n\n this._queueCallback(transitionComplete, this._dialog, this._isAnimated())\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return\n }\n\n if (this._config.keyboard) {\n this.hide()\n return\n }\n\n this._triggerBackdropTransition()\n })\n\n EventHandler.on(window, EVENT_RESIZE, () => {\n if (this._isShown && !this._isTransitioning) {\n this._adjustDialog()\n }\n })\n\n EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {\n if (this._element !== event.target || this._element !== event2.target) {\n return\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n return\n }\n\n if (this._config.backdrop) {\n this.hide()\n }\n })\n })\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._scrollBar.reset()\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n })\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE)\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n const initialOverflowY = this._element.style.overflowY\n // return if the following background transition hasn't yet completed\n if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n return\n }\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden'\n }\n\n this._element.classList.add(CLASS_NAME_STATIC)\n this._queueCallback(() => {\n this._element.classList.remove(CLASS_NAME_STATIC)\n this._queueCallback(() => {\n this._element.style.overflowY = initialOverflowY\n }, this._dialog)\n }, this._dialog)\n\n this._element.focus()\n }\n\n /**\n * The following methods are used to handle overflowing modals\n */\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n const scrollbarWidth = this._scrollBar.getWidth()\n const isBodyOverflowing = scrollbarWidth > 0\n\n if (isBodyOverflowing && !isModalOverflowing) {\n const property = isRTL() ? 'paddingLeft' : 'paddingRight'\n this._element.style[property] = `${scrollbarWidth}px`\n }\n\n if (!isBodyOverflowing && isModalOverflowing) {\n const property = isRTL() ? 'paddingRight' : 'paddingLeft'\n this._element.style[property] = `${scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n // Static\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](relatedTarget)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n EventHandler.one(target, EVENT_SHOW, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus()\n }\n })\n })\n\n // avoid conflict when clicking modal toggler while another one is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (alreadyOpen) {\n Modal.getInstance(alreadyOpen).hide()\n }\n\n const data = Modal.getOrCreateInstance(target)\n\n data.toggle(this)\n})\n\nenableDismissTrigger(Modal)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal)\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Backdrop from './util/backdrop.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport FocusTrap from './util/focustrap.js'\nimport {\n defineJQueryPlugin,\n isDisabled,\n isVisible\n} from './util/index.js'\nimport ScrollBarHelper from './util/scrollbar.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\nconst CLASS_NAME_HIDING = 'hiding'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n scroll: false\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._isShown = false\n this._backdrop = this._initializeBackDrop()\n this._focustrap = this._initializeFocusTrap()\n this._addEventListeners()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n this._backdrop.show()\n\n if (!this._config.scroll) {\n new ScrollBarHelper().hide()\n }\n\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.classList.add(CLASS_NAME_SHOWING)\n\n const completeCallBack = () => {\n if (!this._config.scroll || this._config.backdrop) {\n this._focustrap.activate()\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n this._element.classList.remove(CLASS_NAME_SHOWING)\n EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n }\n\n this._queueCallback(completeCallBack, this._element, true)\n }\n\n hide() {\n if (!this._isShown) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._focustrap.deactivate()\n this._element.blur()\n this._isShown = false\n this._element.classList.add(CLASS_NAME_HIDING)\n this._backdrop.hide()\n\n const completeCallback = () => {\n this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n\n if (!this._config.scroll) {\n new ScrollBarHelper().reset()\n }\n\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._queueCallback(completeCallback, this._element, true)\n }\n\n dispose() {\n this._backdrop.dispose()\n this._focustrap.deactivate()\n super.dispose()\n }\n\n // Private\n _initializeBackDrop() {\n const clickCallback = () => {\n if (this._config.backdrop === 'static') {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n return\n }\n\n this.hide()\n }\n\n // 'static' option will be translated to true, and booleans will keep their value\n const isVisible = Boolean(this._config.backdrop)\n\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: isVisible ? clickCallback : null\n })\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n })\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return\n }\n\n if (this._config.keyboard) {\n this.hide()\n return\n }\n\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n })\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus()\n }\n })\n\n // avoid conflict when clicking a toggler of an offcanvas, while another is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (alreadyOpen && alreadyOpen !== target) {\n Offcanvas.getInstance(alreadyOpen).hide()\n }\n\n const data = Offcanvas.getOrCreateInstance(target)\n data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n Offcanvas.getOrCreateInstance(selector).show()\n }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n if (getComputedStyle(element).position !== 'fixed') {\n Offcanvas.getOrCreateInstance(element).hide()\n }\n }\n})\n\nenableDismissTrigger(Offcanvas)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n dd: [],\n div: [],\n dl: [],\n dt: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n// js-docs-end allow-list\n\nconst uriAttributes = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n])\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\n// eslint-disable-next-line unicorn/better-regex\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase()\n\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue))\n }\n\n return true\n }\n\n // Check if a regular expression validates the attribute.\n return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n .some(regex => regex.test(attributeName))\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n if (!unsafeHtml.length) {\n return unsafeHtml\n }\n\n if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n return sanitizeFunction(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n for (const element of elements) {\n const elementName = element.nodeName.toLowerCase()\n\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove()\n continue\n }\n\n const attributeList = [].concat(...element.attributes)\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || [])\n\n for (const attribute of attributeList) {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName)\n }\n }\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer.js'\nimport { execute, getElement, isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n allowList: DefaultAllowlist,\n content: {}, // { selector : text , selector2 : text2 , }\n extraClass: '',\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: '
'\n}\n\nconst DefaultType = {\n allowList: 'object',\n content: 'object',\n extraClass: '(string|function)',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n template: 'string'\n}\n\nconst DefaultContentType = {\n entry: '(string|element|function|null)',\n selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n getContent() {\n return Object.values(this._config.content)\n .map(config => this._resolvePossibleFunction(config))\n .filter(Boolean)\n }\n\n hasContent() {\n return this.getContent().length > 0\n }\n\n changeContent(content) {\n this._checkContent(content)\n this._config.content = { ...this._config.content, ...content }\n return this\n }\n\n toHtml() {\n const templateWrapper = document.createElement('div')\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector)\n }\n\n const template = templateWrapper.children[0]\n const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n if (extraClass) {\n template.classList.add(...extraClass.split(' '))\n }\n\n return template\n }\n\n // Private\n _typeCheckConfig(config) {\n super._typeCheckConfig(config)\n this._checkContent(config.content)\n }\n\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n }\n }\n\n _setContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template)\n\n if (!templateElement) {\n return\n }\n\n content = this._resolvePossibleFunction(content)\n\n if (!content) {\n templateElement.remove()\n return\n }\n\n if (isElement(content)) {\n this._putElementInTemplate(getElement(content), templateElement)\n return\n }\n\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content)\n return\n }\n\n templateElement.textContent = content\n }\n\n _maybeSanitize(arg) {\n return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n }\n\n _resolvePossibleFunction(arg) {\n return execute(arg, [this])\n }\n\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = ''\n templateElement.append(element)\n return\n }\n\n templateElement.textContent = element.textContent\n }\n}\n\nexport default TemplateFactory\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport {\n defineJQueryPlugin, execute, findShadowRoot, getElement, getUID, isRTL, noop\n} from './util/index.js'\nimport { DefaultAllowlist } from './util/sanitizer.js'\nimport TemplateFactory from './util/template-factory.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n allowList: DefaultAllowlist,\n animation: true,\n boundary: 'clippingParents',\n container: false,\n customClass: '',\n delay: 0,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n html: false,\n offset: [0, 6],\n placement: 'top',\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: '
' +\n '
' +\n '
' +\n '
',\n title: '',\n trigger: 'hover focus'\n}\n\nconst DefaultType = {\n allowList: 'object',\n animation: 'boolean',\n boundary: '(string|element)',\n container: '(string|element|boolean)',\n customClass: '(string|function)',\n delay: '(number|object)',\n fallbackPlacements: 'array',\n html: 'boolean',\n offset: '(array|string|function)',\n placement: '(string|function)',\n popperConfig: '(null|object|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n selector: '(string|boolean)',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n }\n\n super(element, config)\n\n // Private\n this._isEnabled = true\n this._timeout = 0\n this._isHovered = null\n this._activeTrigger = {}\n this._popper = null\n this._templateFactory = null\n this._newContent = null\n\n // Protected\n this.tip = null\n\n this._setListeners()\n\n if (!this._config.selector) {\n this._fixTitle()\n }\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle() {\n if (!this._isEnabled) {\n return\n }\n\n this._activeTrigger.click = !this._activeTrigger.click\n if (this._isShown()) {\n this._leave()\n return\n }\n\n this._enter()\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n if (this._element.getAttribute('data-bs-original-title')) {\n this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'))\n }\n\n this._disposePopper()\n super.dispose()\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n if (!(this._isWithContent() && this._isEnabled)) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))\n const shadowRoot = findShadowRoot(this._element)\n const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return\n }\n\n // TODO: v6 remove this or make it optional\n this._disposePopper()\n\n const tip = this._getTipElement()\n\n this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n const { container } = this._config\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip)\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n }\n\n this._popper = this._createPopper(tip)\n\n tip.classList.add(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop)\n }\n }\n\n const complete = () => {\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n if (this._isHovered === false) {\n this._leave()\n }\n\n this._isHovered = false\n }\n\n this._queueCallback(complete, this.tip, this._isAnimated())\n }\n\n hide() {\n if (!this._isShown()) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const tip = this._getTipElement()\n tip.classList.remove(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop)\n }\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n this._isHovered = null // it is a trick to support manual triggering\n\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n if (!this._isHovered) {\n this._disposePopper()\n }\n\n this._element.removeAttribute('aria-describedby')\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n }\n\n this._queueCallback(complete, this.tip, this._isAnimated())\n }\n\n update() {\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Protected\n _isWithContent() {\n return Boolean(this._getTitle())\n }\n\n _getTipElement() {\n if (!this.tip) {\n this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n }\n\n return this.tip\n }\n\n _createTipElement(content) {\n const tip = this._getTemplateFactory(content).toHtml()\n\n // TODO: remove this check in v6\n if (!tip) {\n return null\n }\n\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n // TODO: v6 the following can be achieved with CSS only\n tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n const tipId = getUID(this.constructor.NAME).toString()\n\n tip.setAttribute('id', tipId)\n\n if (this._isAnimated()) {\n tip.classList.add(CLASS_NAME_FADE)\n }\n\n return tip\n }\n\n setContent(content) {\n this._newContent = content\n if (this._isShown()) {\n this._disposePopper()\n this.show()\n }\n }\n\n _getTemplateFactory(content) {\n if (this._templateFactory) {\n this._templateFactory.changeContent(content)\n } else {\n this._templateFactory = new TemplateFactory({\n ...this._config,\n // the `content` var has to be after `this._config`\n // to override config.content in case of popover\n content,\n extraClass: this._resolvePossibleFunction(this._config.customClass)\n })\n }\n\n return this._templateFactory\n }\n\n _getContentForTemplate() {\n return {\n [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n }\n }\n\n _getTitle() {\n return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title')\n }\n\n // Private\n _initializeOnDelegatedTarget(event) {\n return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n }\n\n _isAnimated() {\n return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n }\n\n _isShown() {\n return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n }\n\n _createPopper(tip) {\n const placement = execute(this._config.placement, [this, tip, this._element])\n const attachment = AttachmentMap[placement.toUpperCase()]\n return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _resolvePossibleFunction(arg) {\n return execute(arg, [this._element])\n }\n\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [\n {\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n },\n {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n },\n {\n name: 'preSetPlacement',\n enabled: true,\n phase: 'beforeMain',\n fn: data => {\n // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n this._getTipElement().setAttribute('data-popper-placement', data.state.placement)\n }\n }\n ]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n }\n }\n\n _setListeners() {\n const triggers = this._config.trigger.split(' ')\n\n for (const trigger of triggers) {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event)\n context.toggle()\n })\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.eventName(EVENT_MOUSEENTER) :\n this.constructor.eventName(EVENT_FOCUSIN)\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.eventName(EVENT_MOUSELEAVE) :\n this.constructor.eventName(EVENT_FOCUSOUT)\n\n EventHandler.on(this._element, eventIn, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event)\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n context._enter()\n })\n EventHandler.on(this._element, eventOut, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event)\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n context._element.contains(event.relatedTarget)\n\n context._leave()\n })\n }\n }\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide()\n }\n }\n\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title')\n\n if (!title) {\n return\n }\n\n if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n this._element.setAttribute('aria-label', title)\n }\n\n this._element.setAttribute('data-bs-original-title', title) // DO NOT USE IT. Is only for backwards compatibility\n this._element.removeAttribute('title')\n }\n\n _enter() {\n if (this._isShown() || this._isHovered) {\n this._isHovered = true\n return\n }\n\n this._isHovered = true\n\n this._setTimeout(() => {\n if (this._isHovered) {\n this.show()\n }\n }, this._config.delay.show)\n }\n\n _leave() {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n this._isHovered = false\n\n this._setTimeout(() => {\n if (!this._isHovered) {\n this.hide()\n }\n }, this._config.delay.hide)\n }\n\n _setTimeout(handler, timeout) {\n clearTimeout(this._timeout)\n this._timeout = setTimeout(handler, timeout)\n }\n\n _isWithActiveTrigger() {\n return Object.values(this._activeTrigger).includes(true)\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n for (const dataAttribute of Object.keys(dataAttributes)) {\n if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n delete dataAttributes[dataAttribute]\n }\n }\n\n config = {\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n config = this._mergeConfigObj(config)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n _configAfterMerge(config) {\n config.container = config.container === false ? document.body : getElement(config.container)\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n for (const [key, value] of Object.entries(this._config)) {\n if (this.constructor.Default[key] !== value) {\n config[key] = value\n }\n }\n\n config.selector = false\n config.trigger = 'manual'\n\n // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n return config\n }\n\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n\n if (this.tip) {\n this.tip.remove()\n this.tip = null\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Tooltip from './tooltip.js'\nimport { defineJQueryPlugin } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\nconst Default = {\n ...Tooltip.Default,\n content: '',\n offset: [0, 8],\n placement: 'right',\n template: '
' +\n '
' +\n '

' +\n '
' +\n '
',\n trigger: 'click'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(null|string|element|function)'\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Overrides\n _isWithContent() {\n return this._getTitle() || this._getContent()\n }\n\n // Private\n _getContentForTemplate() {\n return {\n [SELECTOR_TITLE]: this._getTitle(),\n [SELECTOR_CONTENT]: this._getContent()\n }\n }\n\n _getContent() {\n return this._resolvePossibleFunction(this._config.content)\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n defineJQueryPlugin, getElement, isDisabled, isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst Default = {\n offset: null, // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: '0px 0px -25%',\n smoothScroll: false,\n target: null,\n threshold: [0.1, 0.5, 1]\n}\n\nconst DefaultType = {\n offset: '(number|null)', // TODO v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: 'string',\n smoothScroll: 'boolean',\n target: 'element',\n threshold: 'array'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n // this._element is the observablesContainer and config.target the menu links wrapper\n this._targetLinks = new Map()\n this._observableSections = new Map()\n this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n this._activeTarget = null\n this._observer = null\n this._previousScrollData = {\n visibleEntryTop: 0,\n parentScrollTop: 0\n }\n this.refresh() // initialize\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n refresh() {\n this._initializeTargetsAndObservables()\n this._maybeEnableSmoothScroll()\n\n if (this._observer) {\n this._observer.disconnect()\n } else {\n this._observer = this._getNewObserver()\n }\n\n for (const section of this._observableSections.values()) {\n this._observer.observe(section)\n }\n }\n\n dispose() {\n this._observer.disconnect()\n super.dispose()\n }\n\n // Private\n _configAfterMerge(config) {\n // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n config.target = getElement(config.target) || document.body\n\n // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin\n\n if (typeof config.threshold === 'string') {\n config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n }\n\n return config\n }\n\n _maybeEnableSmoothScroll() {\n if (!this._config.smoothScroll) {\n return\n }\n\n // unregister any previous listeners\n EventHandler.off(this._config.target, EVENT_CLICK)\n\n EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n const observableSection = this._observableSections.get(event.target.hash)\n if (observableSection) {\n event.preventDefault()\n const root = this._rootElement || window\n const height = observableSection.offsetTop - this._element.offsetTop\n if (root.scrollTo) {\n root.scrollTo({ top: height, behavior: 'smooth' })\n return\n }\n\n // Chrome 60 doesn't support `scrollTo`\n root.scrollTop = height\n }\n })\n }\n\n _getNewObserver() {\n const options = {\n root: this._rootElement,\n threshold: this._config.threshold,\n rootMargin: this._config.rootMargin\n }\n\n return new IntersectionObserver(entries => this._observerCallback(entries), options)\n }\n\n // The logic of selection\n _observerCallback(entries) {\n const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`)\n const activate = entry => {\n this._previousScrollData.visibleEntryTop = entry.target.offsetTop\n this._process(targetElement(entry))\n }\n\n const parentScrollTop = (this._rootElement || document.documentElement).scrollTop\n const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop\n this._previousScrollData.parentScrollTop = parentScrollTop\n\n for (const entry of entries) {\n if (!entry.isIntersecting) {\n this._activeTarget = null\n this._clearActiveClass(targetElement(entry))\n\n continue\n }\n\n const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop\n // if we are scrolling down, pick the bigger offsetTop\n if (userScrollsDown && entryIsLowerThanPrevious) {\n activate(entry)\n // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n if (!parentScrollTop) {\n return\n }\n\n continue\n }\n\n // if we are scrolling up, pick the smallest offsetTop\n if (!userScrollsDown && !entryIsLowerThanPrevious) {\n activate(entry)\n }\n }\n }\n\n _initializeTargetsAndObservables() {\n this._targetLinks = new Map()\n this._observableSections = new Map()\n\n const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n\n for (const anchor of targetLinks) {\n // ensure that the anchor has an id and is not disabled\n if (!anchor.hash || isDisabled(anchor)) {\n continue\n }\n\n const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element)\n\n // ensure that the observableSection exists & is visible\n if (isVisible(observableSection)) {\n this._targetLinks.set(decodeURI(anchor.hash), anchor)\n this._observableSections.set(anchor.hash, observableSection)\n }\n }\n }\n\n _process(target) {\n if (this._activeTarget === target) {\n return\n }\n\n this._clearActiveClass(this._config.target)\n this._activeTarget = target\n target.classList.add(CLASS_NAME_ACTIVE)\n this._activateParents(target)\n\n EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n }\n\n _activateParents(target) {\n // Activate dropdown parents\n if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, target.closest(SELECTOR_DROPDOWN))\n .classList.add(CLASS_NAME_ACTIVE)\n return\n }\n\n for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n // Set triggered links parents as active\n // With both