0
0
mirror of https://github.com/twbs/bootstrap.git synced 2024-12-01 13:24:25 +01:00
Bootstrap/dist/js/bootstrap.min.js.map
XhmikosR c877cefcef
Release v5.3.0-alpha2 (#38244)
* Bump version to 5.3.0-alpha2

* Dist
2023-03-24 16:30:16 +02:00

1 line
212 KiB
Plaintext

{"version":3,"names":["TRANSITION_END","parseSelector","selector","window","CSS","escape","replace","match","id","triggerTransitionEnd","element","dispatchEvent","Event","isElement","object","jquery","nodeType","getElement","length","document","querySelector","isVisible","getClientRects","elementIsVisible","getComputedStyle","getPropertyValue","closedDetails","closest","summary","parentNode","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","getAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","getjQuery","jQuery","body","DOMContentLoadedCallbacks","isRTL","dir","defineJQueryPlugin","plugin","callback","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","readyState","addEventListener","push","execute","possibleCallback","args","defaultValue","executeAfterTransition","transitionElement","waitForTransition","emulatedDuration","transitionDuration","transitionDelay","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","split","getTransitionDurationFromElement","called","handler","target","removeEventListener","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","indexOf","Math","max","min","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","uid","getElementEvents","findHandler","events","callable","delegationSelector","Object","values","find","event","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","has","addHandler","oneOff","wrapFunction","relatedTarget","delegateTarget","call","this","handlers","previousFunction","domElements","querySelectorAll","domElement","hydrateObj","EventHandler","off","type","apply","bootstrapDelegationHandler","bootstrapHandler","removeHandler","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","entries","includes","on","one","inNamespace","isNamespace","startsWith","elementEvent","keys","slice","keyHandlers","trigger","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","evt","cancelable","preventDefault","obj","meta","key","value","_unused","defineProperty","configurable","get","elementMap","Map","Data","set","instance","instanceMap","size","console","error","Array","from","remove","delete","normalizeData","toString","JSON","parse","decodeURIComponent","normalizeDataKey","chr","toLowerCase","Manipulator","setDataAttribute","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","dataset","filter","pureKey","charAt","getDataAttribute","Config","Default","DefaultType","Error","_getConfig","config","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","constructor","configTypes","property","expectedTypes","valueType","prototype","RegExp","test","TypeError","toUpperCase","BaseComponent","super","_element","_config","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","static","getInstance","VERSION","getSelector","hrefAttribute","trim","SelectorEngine","concat","Element","findOne","children","child","matches","parents","ancestor","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","map","join","el","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","enableDismissTrigger","component","method","clickEvent","tagName","getOrCreateInstance","Alert","close","_destroyElement","each","data","undefined","SELECTOR_DATA_TOGGLE","Button","toggle","button","endCallback","leftCallback","rightCallback","Swipe","isSupported","_deltaX","_supportPointerEvents","PointerEvent","_initEvents","_start","_eventIsPointerPenTouch","clientX","touches","_end","_handleSwipe","_move","absDeltaX","abs","direction","add","pointerType","navigator","maxTouchPoints","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLID","CLASS_NAME_CAROUSEL","CLASS_NAME_ACTIVE","KEY_TO_DIRECTION","ArrowLeft","ArrowRight","interval","keyboard","pause","ride","touch","wrap","Carousel","_interval","_activeElement","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","_addEventListeners","cycle","_slide","nextWhenVisible","hidden","_clearInterval","_updateInterval","setInterval","_maybeEnableCycle","to","items","_getItems","activeIndex","_getItemIndex","_getActive","order","defaultInterval","_keydown","_addTouchEventListeners","img","swipeConfig","_directionToOrder","endCallBack","clearTimeout","_setActiveIndicatorElement","activeIndicator","newActiveIndicator","elementInterval","parseInt","isNext","nextElement","nextElementIndex","triggerEvent","eventName","_orderToDirection","isCycling","directionalClassName","orderClassName","completeCallBack","_isAnimated","SELECTOR_ACTIVE","clearInterval","carousel","slideIndex","carousels","CLASS_NAME_SHOW","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","parent","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activeChildren","_getFirstLevelChildren","activeInstance","dimension","_getDimension","style","scrollSize","complete","getBoundingClientRect","selected","triggerArray","isOpen","ARROW_UP_KEY","ARROW_DOWN_KEY","EVENT_CLICK_DATA_API","EVENT_KEYDOWN_DATA_API","SELECTOR_DATA_TOGGLE_SHOWN","SELECTOR_MENU","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","autoClose","boundary","display","offset","popperConfig","reference","Dropdown","_popper","_parent","_menu","_inNavbar","_detectNavbar","_createPopper","focus","_completeHide","destroy","update","Popper","referenceElement","_getPopperConfig","createPopper","_getPlacement","parentDropdown","isEnd","_getOffset","popperData","defaultBsPopperConfig","placement","modifiers","options","enabled","_selectMenuItem","openToggles","context","composedPath","isMenuTarget","isInput","isEscapeEvent","isUpOrDownEvent","getToggleButton","stopPropagation","dataApiKeydownHandler","clearMenus","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","ScrollBarHelper","getWidth","documentWidth","clientWidth","innerWidth","width","_disableOverFlow","_setElementAttributes","calculatedValue","reset","_resetElementAttributes","isOverflowing","_saveInitialAttribute","overflow","styleProperty","scrollbarWidth","_applyManipulationCallback","setProperty","actualValue","removeProperty","callBack","sel","EVENT_MOUSEDOWN","className","clickCallback","rootElement","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","backdrop","createElement","append","TAB_NAV_BACKWARD","autofocus","trapElement","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","elements","shiftKey","EVENT_HIDDEN","EVENT_SHOW","CLASS_NAME_OPEN","CLASS_NAME_STATIC","Modal","_dialog","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_scrollBar","_adjustDialog","_showElement","_hideModal","htmlElement","handleUpdate","scrollTop","modalBody","transitionComplete","_triggerBackdropTransition","event2","_resetAdjustments","isModalOverflowing","scrollHeight","clientHeight","initialOverflowY","overflowY","isBodyOverflowing","paddingLeft","paddingRight","showEvent","alreadyOpen","CLASS_NAME_SHOWING","CLASS_NAME_HIDING","OPEN_SELECTOR","EVENT_HIDE_PREVENTED","scroll","Offcanvas","blur","completeCallback","position","uriAttributes","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attribute","allowedAttributeList","attributeName","nodeName","nodeValue","attributeRegex","some","regex","DefaultAllowlist","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","i","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","allowList","content","extraClass","html","sanitize","sanitizeFn","template","DefaultContentType","entry","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","toHtml","templateWrapper","innerHTML","_maybeSanitize","text","_setContent","arg","templateElement","_putElementInTemplate","textContent","unsafeHtml","sanitizeFunction","createdDocument","DOMParser","parseFromString","elementName","attributeList","allowedAttributes","sanitizeHtml","DISALLOWED_ATTRIBUTES","CLASS_NAME_FADE","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","container","customClass","delay","fallbackPlacements","title","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","click","_leave","_enter","_hideModalHandler","_disposePopper","_isWithContent","isInTheDom","ownerDocument","_getTipElement","_isWithActiveTrigger","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","prefix","floor","random","getElementById","getUID","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","attachment","phase","state","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","Popover","_getContent","EVENT_CLICK","SELECTOR_TARGET_LINKS","rootMargin","smoothScroll","threshold","ScrollSpy","_targetLinks","_observableSections","_rootElement","_activeTarget","_observer","_previousScrollData","visibleEntryTop","parentScrollTop","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","disconnect","_getNewObserver","section","observe","observableSection","hash","height","offsetTop","scrollTo","top","behavior","IntersectionObserver","_observerCallback","targetElement","_process","userScrollsDown","isIntersecting","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","_activateParents","listGroup","item","activeNodes","node","spy","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","SELECTOR_INNER_ELEM","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","active","_getActiveElem","hideEvent","_deactivate","_activate","relatedElem","_toggleDropDown","nextActiveElement","preventScroll","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","open","CLASS_NAME_HIDE","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting"],"sources":["../../js/src/util/index.js","../../js/src/dom/event-handler.js","../../js/src/dom/data.js","../../js/src/dom/manipulator.js","../../js/src/util/config.js","../../js/src/base-component.js","../../js/src/dom/selector-engine.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/util/swipe.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/util/scrollbar.js","../../js/src/util/backdrop.js","../../js/src/util/focustrap.js","../../js/src/modal.js","../../js/src/offcanvas.js","../../js/src/util/sanitizer.js","../../js/src/util/template-factory.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/index.umd.js"],"sourcesContent":["/**\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 let evt = new Event(event, { bubbles, cancelable: true })\n evt = hydrateObj(evt, 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/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 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 { isElement, toType } from './index.js'\nimport Manipulator from '../dom/manipulator.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 { executeAfterTransition, getElement } from './util/index.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '5.3.0-alpha2'\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 parseSelector(selector)\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 { isDisabled } from './index.js'\nimport SelectorEngine from '../dom/selector-engine.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 { defineJQueryPlugin } from './util/index.js'\nimport EventHandler from './dom/event-handler.js'\nimport BaseComponent from './base-component.js'\nimport { enableDismissTrigger } from './util/component-functions.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 { defineJQueryPlugin } from './util/index.js'\nimport EventHandler from './dom/event-handler.js'\nimport BaseComponent from './base-component.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 Config from './config.js'\nimport EventHandler from '../dom/event-handler.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 {\n defineJQueryPlugin,\n getNextActiveElement,\n isRTL,\n isVisible,\n reflow,\n triggerTransitionEnd\n} from './util/index.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Swipe from './util/swipe.js'\nimport BaseComponent from './base-component.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 {\n defineJQueryPlugin,\n getElement,\n reflow\n} from './util/index.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport BaseComponent from './base-component.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 <a> 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 {\n defineJQueryPlugin,\n execute,\n getElement,\n getNextActiveElement,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop\n} from './util/index.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport BaseComponent from './base-component.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/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Manipulator from '../dom/manipulator.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 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 { execute, executeAfterTransition, getElement, reflow } from './index.js'\nimport Config from './config.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 modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin, isRTL, isVisible, reflow } from './util/index.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport ScrollBarHelper from './util/scrollbar.js'\nimport BaseComponent from './base-component.js'\nimport Backdrop from './util/backdrop.js'\nimport FocusTrap from './util/focustrap.js'\nimport { enableDismissTrigger } from './util/component-functions.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 for (const htmlElement of [window, this._dialog]) {\n EventHandler.off(htmlElement, EVENT_KEY)\n }\n\n this._backdrop.dispose()\n this._focustrap.deactivate()\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 {\n defineJQueryPlugin,\n isDisabled,\n isVisible\n} from './util/index.js'\nimport ScrollBarHelper from './util/scrollbar.js'\nimport EventHandler from './dom/event-handler.js'\nimport BaseComponent from './base-component.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Backdrop from './util/backdrop.js'\nimport FocusTrap from './util/focustrap.js'\nimport { enableDismissTrigger } from './util/component-functions.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\nconst uriAttributes = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\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) || DATA_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 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 div: [],\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\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\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 { DefaultAllowlist, sanitizeHtml } from './sanitizer.js'\nimport { execute, getElement, isElement } from './index.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.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: '<div></div>'\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 { defineJQueryPlugin, execute, findShadowRoot, getElement, getUID, isRTL, noop } from './util/index.js'\nimport { DefaultAllowlist } from './util/sanitizer.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport BaseComponent from './base-component.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, 0],\n placement: 'top',\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: '<div class=\"tooltip\" role=\"tooltip\">' +\n '<div class=\"tooltip-arrow\"></div>' +\n '<div class=\"tooltip-inner\"></div>' +\n '</div>',\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 on v6\n if (!tip) {\n return null\n }\n\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n // todo: on 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 { defineJQueryPlugin } from './util/index.js'\nimport Tooltip from './tooltip.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: '<div class=\"popover\" role=\"tooltip\">' +\n '<div class=\"popover-arrow\"></div>' +\n '<h3 class=\"popover-header\"></h3>' +\n '<div class=\"popover-body\"></div>' +\n '</div>',\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 { defineJQueryPlugin, getElement, isDisabled, isVisible } from './util/index.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport BaseComponent from './base-component.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(anchor.hash, this._element)\n\n // ensure that the observableSection exists & is visible\n if (isVisible(observableSection)) {\n this._targetLinks.set(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 <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n item.classList.add(CLASS_NAME_ACTIVE)\n }\n }\n }\n\n _clearActiveClass(parent) {\n parent.classList.remove(CLASS_NAME_ACTIVE)\n\n const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent)\n for (const node of activeNodes) {\n node.classList.remove(CLASS_NAME_ACTIVE)\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = ScrollSpy.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]()\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n ScrollSpy.getOrCreateInstance(spy)\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(ScrollSpy)\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin, getNextActiveElement, isDisabled } from './util/index.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport BaseComponent from './base-component.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\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}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_DROPDOWN = 'dropdown'\n\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu'\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = ':not(.dropdown-toggle)'\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]' // todo:v6: could be only `tab`\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n constructor(element) {\n super(element)\n this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n if (!this._parent) {\n return\n // todo: should Throw exception on v6\n // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)\n }\n\n // Set up initial aria attributes\n this._setInitialAttributes(this._parent, this._getChildren())\n\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n show() { // Shows this elem and deactivate the active sibling if exists\n const innerElem = this._element\n if (this._elemIsActive(innerElem)) {\n return\n }\n\n // Search for active tab on same parent to deactivate it\n const active = this._getActiveElem()\n\n const hideEvent = active ?\n EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\n null\n\n const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n return\n }\n\n this._deactivate(active, innerElem)\n this._activate(innerElem, active)\n }\n\n // Private\n _activate(element, relatedElem) {\n if (!element) {\n return\n }\n\n element.classList.add(CLASS_NAME_ACTIVE)\n\n this._activate(SelectorEngine.getElementFromSelector(element)) // Search and activate/show the proper section\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.add(CLASS_NAME_SHOW)\n return\n }\n\n element.removeAttribute('tabindex')\n element.setAttribute('aria-selected', true)\n this._toggleDropDown(element, true)\n EventHandler.trigger(element, EVENT_SHOWN, {\n relatedTarget: relatedElem\n })\n }\n\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n }\n\n _deactivate(element, relatedElem) {\n if (!element) {\n return\n }\n\n element.classList.remove(CLASS_NAME_ACTIVE)\n element.blur()\n\n this._deactivate(SelectorEngine.getElementFromSelector(element)) // Search and deactivate the shown section too\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.remove(CLASS_NAME_SHOW)\n return\n }\n\n element.setAttribute('aria-selected', false)\n element.setAttribute('tabindex', '-1')\n this._toggleDropDown(element, false)\n EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n }\n\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n }\n\n _keydown(event) {\n if (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key))) {\n return\n }\n\n event.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n event.preventDefault()\n const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n const nextActiveElement = getNextActiveElement(this._getChildren().filter(element => !isDisabled(element)), event.target, isNext, true)\n\n if (nextActiveElement) {\n nextActiveElement.focus({ preventScroll: true })\n Tab.getOrCreateInstance(nextActiveElement).show()\n }\n }\n\n _getChildren() { // collection of inner elements\n return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n }\n\n _getActiveElem() {\n return this._getChildren().find(child => this._elemIsActive(child)) || null\n }\n\n _setInitialAttributes(parent, children) {\n this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n for (const child of children) {\n this._setInitialAttributesOnChild(child)\n }\n }\n\n _setInitialAttributesOnChild(child) {\n child = this._getInnerElement(child)\n const isActive = this._elemIsActive(child)\n const outerElem = this._getOuterElement(child)\n child.setAttribute('aria-selected', isActive)\n\n if (outerElem !== child) {\n this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n }\n\n if (!isActive) {\n child.setAttribute('tabindex', '-1')\n }\n\n this._setAttributeIfNotExists(child, 'role', 'tab')\n\n // set attributes to the related panel too\n this._setInitialAttributesOnTargetPanel(child)\n }\n\n _setInitialAttributesOnTargetPanel(child) {\n const target = SelectorEngine.getElementFromSelector(child)\n\n if (!target) {\n return\n }\n\n this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n if (child.id) {\n this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`)\n }\n }\n\n _toggleDropDown(element, open) {\n const outerElem = this._getOuterElement(element)\n if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n return\n }\n\n const toggle = (selector, className) => {\n const element = SelectorEngine.findOne(selector, outerElem)\n if (element) {\n element.classList.toggle(className, open)\n }\n }\n\n toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE)\n toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW)\n outerElem.setAttribute('aria-expanded', open)\n }\n\n _setAttributeIfNotExists(element, attribute, value) {\n if (!element.hasAttribute(attribute)) {\n element.setAttribute(attribute, value)\n }\n }\n\n _elemIsActive(elem) {\n return elem.classList.contains(CLASS_NAME_ACTIVE)\n }\n\n // Try to get the inner element (usually the .nav-link)\n _getInnerElement(elem) {\n return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n }\n\n // Try to get the outer element (usually the .nav-item)\n _getOuterElement(elem) {\n return elem.closest(SELECTOR_OUTER) || elem\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tab.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]()\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n Tab.getOrCreateInstance(element)\n }\n})\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tab)\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin, reflow } from './util/index.js'\nimport EventHandler from './dom/event-handler.js'\nimport BaseComponent from './base-component.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n}\n\nconst Default = {\n animation: true,\n autohide: true,\n delay: 5000\n}\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._timeout = null\n this._hasMouseInteraction = false\n this._hasKeyboardInteraction = false\n this._setListeners()\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() {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._clearTimeout()\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE)\n }\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_SHOWING)\n EventHandler.trigger(this._element, EVENT_SHOWN)\n\n this._maybeScheduleHide()\n }\n\n this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n reflow(this._element)\n this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING)\n\n this._queueCallback(complete, this._element, this._config.animation)\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 const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.classList.add(CLASS_NAME_SHOWING)\n this._queueCallback(complete, this._element, this._config.animation)\n }\n\n dispose() {\n this._clearTimeout()\n\n if (this.isShown()) {\n this._element.classList.remove(CLASS_NAME_SHOW)\n }\n\n super.dispose()\n }\n\n isShown() {\n return this._element.classList.contains(CLASS_NAME_SHOW)\n }\n\n // Private\n\n _maybeScheduleHide() {\n if (!this._config.autohide) {\n return\n }\n\n if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n return\n }\n\n this._timeout = setTimeout(() => {\n this.hide()\n }, this._config.delay)\n }\n\n _onInteraction(event, isInteracting) {\n switch (event.type) {\n case 'mouseover':\n case 'mouseout': {\n this._hasMouseInteraction = isInteracting\n break\n }\n\n case 'focusin':\n case 'focusout': {\n this._hasKeyboardInteraction = isInteracting\n break\n }\n\n default: {\n break\n }\n }\n\n if (isInteracting) {\n this._clearTimeout()\n return\n }\n\n const nextElement = event.relatedTarget\n if (this._element === nextElement || this._element.contains(nextElement)) {\n return\n }\n\n this._maybeScheduleHide()\n }\n\n _setListeners() {\n EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n }\n\n _clearTimeout() {\n clearTimeout(this._timeout)\n this._timeout = null\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Toast.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](this)\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Toast)\n\nexport default Toast\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap index.umd.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Alert from './src/alert.js'\nimport Button from './src/button.js'\nimport Carousel from './src/carousel.js'\nimport Collapse from './src/collapse.js'\nimport Dropdown from './src/dropdown.js'\nimport Modal from './src/modal.js'\nimport Offcanvas from './src/offcanvas.js'\nimport Popover from './src/popover.js'\nimport ScrollSpy from './src/scrollspy.js'\nimport Tab from './src/tab.js'\nimport Toast from './src/toast.js'\nimport Tooltip from './src/tooltip.js'\n\nexport default {\n Alert,\n Button,\n Carousel,\n Collapse,\n Dropdown,\n Modal,\n Offcanvas,\n Popover,\n ScrollSpy,\n Tab,\n Toast,\n Tooltip\n}\n"],"mappings":"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"}