NK_Design/js/bootstrap.esm.min.js.map

1 line
209 KiB
Plaintext

{"version":3,"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/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/dom/selector-engine.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"],"names":["MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","toType","object","Object","prototype","toString","call","match","toLowerCase","getUID","prefix","Math","floor","random","document","getElementById","getSelector","element","selector","getAttribute","hrefAttribute","includes","startsWith","split","trim","getSelectorFromElement","querySelector","getElementFromSelector","getTransitionDurationFromElement","transitionDuration","transitionDelay","window","getComputedStyle","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","triggerTransitionEnd","dispatchEvent","Event","isElement","jquery","nodeType","getElement","length","isVisible","getClientRects","elementIsVisible","getPropertyValue","closedDetails","closest","summary","parentNode","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","getjQuery","jQuery","body","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","addEventListener","push","isRTL","dir","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","execute","executeAfterTransition","transitionElement","waitForTransition","emulatedDuration","called","handler","target","removeEventListener","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","indexOf","max","min","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","customEventsRegex","nativeEvents","Set","getUidEvent","uid","getEvent","bootstrapHandler","event","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","domElements","querySelectorAll","this","domElement","findHandler","events","delegationSelector","values","find","originalHandler","normalizeParameters","originalTypeEvent","delegationFunction","delegation","typeEvent","getTypeEvent","has","addHandler","test","wrapFunction","relatedTarget","handlers","previousFunction","replace","removeHandler","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","keys","on","one","inNamespace","isNamespace","elementEvent","slice","keyHandlers","trigger","args","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","evt","cancelable","key","defineProperty","get","preventDefault","elementMap","Map","Data","set","instance","instanceMap","size","console","error","Array","from","remove","delete","normalizeData","value","normalizeDataKey","chr","Manipulator","setDataAttribute","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","dataset","filter","pureKey","charAt","getDataAttribute","offset","rect","getBoundingClientRect","top","pageYOffset","left","pageXOffset","position","offsetTop","offsetLeft","Config","Default","DefaultType","Error","_getConfig","config","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","constructor","configTypes","property","expectedTypes","valueType","RegExp","TypeError","toUpperCase","VERSION","BaseComponent","super","_element","_config","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","static","getInstance","enableDismissTrigger","component","method","clickEvent","tagName","getOrCreateInstance","EVENT_CLOSE","EVENT_CLOSED","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","close","_destroyElement","each","data","undefined","DATA_API_KEY","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","EVENT_CLICK_DATA_API","Button","toggle","button","SelectorEngine","concat","Element","findOne","children","child","matches","parents","ancestor","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","map","join","el","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","leftCallback","rightCallback","endCallback","Swipe","isSupported","_deltaX","_supportPointerEvents","PointerEvent","_initEvents","_start","_eventIsPointerPenTouch","clientX","touches","_end","_handleSwipe","_move","absDeltaX","abs","direction","add","pointerType","navigator","maxTouchPoints","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","TOUCHEVENT_COMPAT_WAIT","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_DRAG_START","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_SLIDE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","SELECTOR_ACTIVE","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM","SELECTOR_ITEM_IMG","SELECTOR_NEXT_PREV","SELECTOR_INDICATORS","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","KEY_TO_DIRECTION","ArrowLeft","ArrowRight","interval","keyboard","slide","pause","wrap","touch","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","_addEventListeners","_slide","nextWhenVisible","hidden","cycle","_clearInterval","_updateInterval","setInterval","to","_getActive","activeIndex","_getItemIndex","order","defaultInterval","_keydown","_addTouchEventListeners","img","swipeConfig","clearTimeout","_getItemByOrder","isNext","_triggerSlideEvent","eventDirectionName","targetIndex","fromIndex","_setActiveIndicatorElement","activeIndicator","newActiveIndicator","elementInterval","parseInt","directionOrOrder","_directionToOrder","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","_orderToDirection","triggerSlidEvent","completeCallBack","clearInterval","action","ride","carouselInterface","slideIndex","dataApiClickHandler","carousels","carousel","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_DEEPER_CHILDREN","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","parent","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activeChildren","_getFirstLevelChildren","activeInstance","dimension","_getDimension","style","scrollSize","selected","triggerArray","isOpen","selectorElements","ESCAPE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","RIGHT_MOUSE_BUTTON","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_DROPUP","CLASS_NAME_DROPEND","CLASS_NAME_DROPSTART","SELECTOR_MENU","SELECTOR_NAVBAR","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","boundary","reference","display","popperConfig","autoClose","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","items","toggles","context","composedPath","isMenuTarget","isInput","isEscapeEvent","isUpOrDownEvent","stopPropagation","getToggleButton","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","rootElement","clickCallback","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","backdrop","createElement","append","EVENT_FOCUSIN","EVENT_KEYDOWN_TAB","TAB_NAV_FORWARD","TAB_NAV_BACKWARD","trapElement","autofocus","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","elements","shiftKey","EVENT_HIDE_PREVENTED","EVENT_RESIZE","EVENT_KEYDOWN_DISMISS","CLASS_NAME_OPEN","CLASS_NAME_STATIC","OPEN_SELECTOR","SELECTOR_DIALOG","SELECTOR_MODAL_BODY","Modal","_dialog","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_scrollBar","_adjustDialog","_toggleEscapeEventListener","_toggleResizeEventListener","_showElement","_hideModal","_isAnimated","htmlElement","handleUpdate","_triggerBackdropTransition","scrollTop","modalBody","enable","_resetAdjustments","isModalOverflowing","scrollHeight","clientHeight","initialOverflowY","overflowY","isBodyOverflowing","paddingLeft","paddingRight","showEvent","alreadyOpen","CLASS_NAME_SHOWING","CLASS_NAME_HIDING","CLASS_NAME_BACKDROP","scroll","Offcanvas","blur","uriAttributes","ARIA_ATTRIBUTE_PATTERN","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","sanitizeHtml","unsafeHtml","allowList","sanitizeFunction","createdDocument","DOMParser","parseFromString","elementName","attributeList","allowedAttributes","innerHTML","extraClass","template","content","html","sanitize","sanitizeFn","DefaultContentType","entry","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","toHtml","templateWrapper","_maybeSanitize","text","entries","_setContent","arg","templateElement","_putElementInTemplate","textContent","DISALLOWED_ATTRIBUTES","CLASS_NAME_MODAL","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","title","delay","container","fallbackPlacements","customClass","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_templateFactory","tip","_setListeners","disable","toggleEnabled","_initializeOnDelegatedTarget","click","_isWithActiveTrigger","_enter","_leave","_hideModalHandler","_disposePopper","_isWithContent","shadowRoot","isInTheDom","ownerDocument","_getTipElement","previousHoverState","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","setContent","isShown","_getDelegateConfig","attachment","phase","state","triggers","eventIn","eventOut","_fixTitle","originalTitle","_setTimeout","timeout","dataAttributes","dataAttribute","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","EVENT_ACTIVATE","EVENT_SCROLL","CLASS_NAME_DROPDOWN_ITEM","SELECTOR_DATA_SPY","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_LINK_ITEMS","SELECTOR_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE","METHOD_OFFSET","METHOD_POSITION","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","_getScrollHeight","autoMethod","offsetMethod","offsetBase","_getScrollTop","targets","targetSelector","targetBCR","height","sort","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","link","listGroup","item","navItem","activeNodes","node","spy","CLASS_NAME_DROPDOWN_MENU","SELECTOR_ACTIVE_UL","SELECTOR_DROPDOWN_ACTIVE_CHILD","Tab","listElement","itemSelector","hideEvent","complete","active","isTransitioning","_transitionComplete","dropdownChild","dropdownElement","dropdown","EVENT_MOUSEOVER","EVENT_MOUSEOUT","EVENT_FOCUSOUT","CLASS_NAME_HIDE","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","_onInteraction","isInteracting"],"mappings":"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","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): 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// Shoutout AngusCroll (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 getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href')\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n }\n\n selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n }\n\n return selector\n}\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element)\n\n if (selector) {\n return document.querySelector(selector) ? selector : null\n }\n\n return null\n}\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element)\n\n return selector ? document.querySelector(selector) : null\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(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 = callback => {\n if (typeof callback === 'function') {\n callback()\n }\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 getElementFromSelector,\n getjQuery,\n getNextActiveElement,\n getSelectorFromElement,\n getTransitionDurationFromElement,\n getUID,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop,\n onDOMContentLoaded,\n reflow,\n triggerTransitionEnd,\n toType\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\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}\nconst customEventsRegex = /^(mouseenter|mouseleave)/i\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 getUidEvent(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getEvent(element) {\n const uid = getUidEvent(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 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 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, handler, delegationSelector = null) {\n return Object.values(events)\n .find(event => event.originalHandler === handler && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const delegation = typeof handler === 'string'\n const originalHandler = delegation ? delegationFunction : handler\n let typeEvent = getTypeEvent(originalTypeEvent)\n\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent\n }\n\n return [delegation, originalHandler, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n if (!handler) {\n handler = delegationFunction\n delegationFunction = null\n }\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 (customEventsRegex.test(originalTypeEvent)) {\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 if (delegationFunction) {\n delegationFunction = wrapFunction(delegationFunction)\n } else {\n handler = wrapFunction(handler)\n }\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n const events = getEvent(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFunction = findHandler(handlers, originalHandler, delegation ? handler : null)\n\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n return\n }\n\n const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = delegation ?\n bootstrapDelegationHandler(element, handler, delegationFunction) :\n bootstrapHandler(element, handler)\n\n fn.delegationSelector = delegation ? handler : null\n fn.originalHandler = originalHandler\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, delegation)\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 of Object.keys(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n const event = storeElementEvent[handlerKey]\n removeHandler(element, events, typeEvent, event.originalHandler, 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 [delegation, originalHandler, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getEvent(element)\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof originalHandler !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!events || !events[typeEvent]) {\n return\n }\n\n removeHandler(element, events, typeEvent, originalHandler, delegation ? 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 const storeElementEvent = events[typeEvent] || {}\n for (const keyHandlers of Object.keys(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n const event = storeElementEvent[keyHandlers]\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n }\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = getTypeEvent(event)\n const inNamespace = event !== typeEvent\n\n let jQueryEvent = null\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n const evt = new Event(event, { bubbles, cancelable: true })\n\n // merge custom information in our event\n if (typeof args !== 'undefined') {\n for (const key of Object.keys(args)) {\n Object.defineProperty(evt, key, {\n get() {\n return args[key]\n }\n })\n }\n }\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\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): 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 (v5.1.3): 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 return value\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'))\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 offset(element) {\n const rect = element.getBoundingClientRect()\n\n return {\n top: rect.top + window.pageYOffset,\n left: rect.left + window.pageXOffset\n }\n },\n\n position(element) {\n return {\n top: element.offsetTop,\n left: element.offsetLeft\n }\n }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isElement, toType } from './index'\nimport Manipulator from '../dom/manipulator'\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 return {\n ...this.constructor.Default,\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 of Object.keys(configTypes)) {\n const expectedTypes = configTypes[property]\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 (v5.1.3): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\nimport { executeAfterTransition, getElement } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Config from './util/config'\n\n/**\n * Constants\n */\n\nconst VERSION = '5.1.3'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n constructor(element, config) {\n super()\n\n element = getElement(element)\n if (!element) {\n return\n }\n\n this._element = element\n this._config = this._getConfig(config)\n\n Data.set(this._element, this.constructor.DATA_KEY, this)\n }\n\n // Public\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY)\n EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null\n }\n }\n\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated)\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n // Static\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY)\n }\n\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n }\n\n static get VERSION() {\n return VERSION\n }\n\n static get DATA_KEY() {\n return `bs.${this.NAME}`\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`\n }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): 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'\nimport { getElementFromSelector, isDisabled } from './index'\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 = 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 (v5.1.3): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\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 (v5.1.3): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\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 (v5.1.3): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible } from '../util/index'\n\n/**\n * Constants\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\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Config from './config'\nimport EventHandler from '../dom/event-handler'\nimport { execute } from './index'\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 leftCallback: null,\n rightCallback: null,\n endCallback: null\n}\n\nconst DefaultType = {\n leftCallback: '(function|null)',\n rightCallback: '(function|null)',\n endCallback: '(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 (v5.1.3): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n getNextActiveElement,\n isRTL,\n isVisible,\n reflow,\n triggerTransitionEnd\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport Swipe from './util/swipe'\nimport BaseComponent from './base-component'\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_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\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 slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\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\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(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {\n triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n this._clearInterval()\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n this._clearInterval()\n if (this._config.interval && !this._isPaused) {\n this._updateInterval()\n\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval)\n }\n }\n\n to(index) {\n this._activeElement = this._getActive()\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._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 if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const order = index > activeIndex ?\n ORDER_NEXT :\n ORDER_PREV\n\n this._slide(order, this._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, event => this.pause(event))\n EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event))\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(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n\n const swipeConfig = {\n leftCallback: () => this._slide(DIRECTION_LEFT),\n rightCallback: () => this._slide(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(direction)\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode ?\n SelectorEngine.find(SELECTOR_ITEM, element.parentNode) :\n []\n\n return this._items.indexOf(element)\n }\n\n _getItemByOrder(order, activeElement) {\n const isNext = order === ORDER_NEXT\n return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap)\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(this._getActive())\n\n return EventHandler.trigger(this._element, EVENT_SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n }\n\n _setActiveIndicatorElement(element) {\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=\"${this._getItemIndex(element)}\"]`, 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(directionOrOrder, element) {\n const order = this._directionToOrder(directionOrOrder)\n const activeElement = this._getActive()\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || this._getItemByOrder(order, activeElement)\n\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n const isNext = order === ORDER_NEXT\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n const eventDirectionName = this._orderToDirection(order)\n\n if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {\n this._isSliding = false\n return\n }\n\n if (this._isSliding) {\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.defaultPrevented) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n this._activeElement = nextElement\n\n const triggerSlidEvent = () => {\n EventHandler.trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }\n\n if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\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 setTimeout(triggerSlidEvent, 0)\n }\n\n this._queueCallback(completeCallBack, activeElement, true)\n } else {\n activeElement.classList.remove(CLASS_NAME_ACTIVE)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n this._isSliding = false\n triggerSlidEvent()\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n _getActive() {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_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 (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) {\n return direction\n }\n\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 (![ORDER_NEXT, ORDER_PREV].includes(order)) {\n return order\n }\n\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 carouselInterface(element, config) {\n const data = Carousel.getOrCreateInstance(element, config)\n\n let { _config } = data\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Carousel.carouselInterface(this, config)\n })\n }\n\n static dataApiClickHandler(event) {\n const target = getElementFromSelector(this)\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n const slideIndex = this.getAttribute('data-bs-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel.carouselInterface(target, config)\n\n if (slideIndex) {\n Carousel.getInstance(target).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler)\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.carouselInterface(carousel, Carousel.getInstance(carousel))\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElement,\n getElementFromSelector,\n getSelectorFromElement,\n reflow\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\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 toggle: true,\n parent: null\n}\n\nconst DefaultType = {\n toggle: 'boolean',\n parent: '(null|element)'\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 = 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 = 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 = 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 const selector = getSelectorFromElement(this)\n const selectorElements = SelectorEngine.find(selector)\n\n for (const element of selectorElements) {\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 (v5.1.3): 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 getElement,\n getNextActiveElement,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\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'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]'\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'\n\nconst Default = {\n offset: [0, 2],\n boundary: 'clippingParents',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null,\n autoClose: true\n}\n\nconst DefaultType = {\n offset: '(array|string|function)',\n boundary: '(string|element)',\n reference: '(string|element|object)',\n display: 'string',\n popperConfig: '(null|object|function)',\n autoClose: '(boolean|string)'\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 this._menu = 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 // 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 ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\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 toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (const toggle of toggles) {\n const context = Dropdown.getInstance(toggle)\n if (!context || context._config.autoClose === false) {\n continue\n }\n\n if (!context._isShown()) {\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 input/textarea:\n // - And not a key in UP | DOWN | ESCAPE => not a dropdown command\n // If input/textarea && If key is other than ESCAPE\n // - If key is not UP or DOWN => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n\n const { target, key, delegateTarget } = event\n const isInput = /input|textarea/i.test(target.tagName)\n const isEscapeEvent = key === ESCAPE_KEY\n const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(key)\n\n if (!isInput && !(isUpOrDownEvent || isEscapeEvent)) {\n return\n }\n\n if (isInput && !isEscapeEvent) {\n // eslint-disable-next-line unicorn/no-lonely-if\n if (!isUpOrDownEvent || target.closest(SELECTOR_MENU)) {\n return\n }\n }\n\n const isActive = delegateTarget.classList.contains(CLASS_NAME_SHOW)\n\n if (!isActive && isEscapeEvent) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (isDisabled(this)) {\n return\n }\n\n const getToggleButton = SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, delegateTarget.parentNode)\n const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n if (isEscapeEvent) {\n instance.hide()\n getToggleButton.focus()\n return\n }\n\n if (isUpOrDownEvent) {\n instance.show()\n instance._selectMenuItem(event)\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 (v5.1.3): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine'\nimport Manipulator from '../dom/manipulator'\nimport { isElement } from './index'\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 (v5.1.3): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { execute, executeAfterTransition, getElement, reflow } from './index'\nimport Config from './config'\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 isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n isAnimated: false,\n rootElement: 'body', // give the choice to place backdrop under different elements\n clickCallback: null\n}\n\nconst DefaultType = {\n className: 'string',\n isVisible: 'boolean',\n isAnimated: 'boolean',\n rootElement: '(element|string)',\n clickCallback: '(function|null)'\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 (v5.1.3): util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport SelectorEngine from '../dom/selector-engine'\nimport Config from './config'\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 trapElement: null, // The element to trap focus inside of\n autofocus: true\n}\n\nconst DefaultType = {\n trapElement: 'element',\n autofocus: 'boolean'\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 (v5.1.3): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin, getElementFromSelector, isRTL, isVisible, reflow } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport ScrollBarHelper from './util/scrollbar'\nimport BaseComponent from './base-component'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\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_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 keyboard: true,\n focus: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: '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\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._toggleEscapeEventListener(true)\n this._toggleResizeEventListener(true)\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\n this._toggleEscapeEventListener(false)\n this._toggleResizeEventListener(false)\n\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 const clickCallback = () => {\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\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 isVisible,\n isAnimated: this._isAnimated(),\n clickCallback: isVisible ? clickCallback : null\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 _toggleEscapeEventListener(enable) {\n if (!enable) {\n EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS)\n return\n }\n\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 event.preventDefault()\n this.hide()\n return\n }\n\n this._triggerBackdropTransition()\n })\n }\n\n _toggleResizeEventListener(enable) {\n if (enable) {\n EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog())\n return\n }\n\n EventHandler.off(window, EVENT_RESIZE)\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 = 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 (v5.1.3): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isDisabled,\n isVisible\n} from './util/index'\nimport ScrollBarHelper from './util/scrollbar'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport SelectorEngine from './dom/selector-engine'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\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_HIDDEN = `hidden${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',\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) {\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 return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible: this._config.backdrop,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: () => this.hide()\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 (this._config.keyboard && event.key === ESCAPE_KEY) {\n this.hide()\n }\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 = 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\nenableDismissTrigger(Offcanvas)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): 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 * Shoutout 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 * Shoutout 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 (v5.1.3): util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer'\nimport { getElement, isElement } from '../util/index'\nimport SelectorEngine from '../dom/selector-engine'\nimport Config from './config'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n extraClass: '',\n template: '<div></div>',\n content: {}, // { selector : text , selector2 : text2 , }\n html: false,\n sanitize: true,\n sanitizeFn: null,\n allowList: DefaultAllowlist\n}\n\nconst DefaultType = {\n extraClass: '(string|function)',\n template: 'string',\n content: 'object',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n allowList: 'object'\n}\n\nconst DefaultContentType = {\n selector: '(string|element)',\n entry: '(string|element|function|null)'\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 typeof arg === 'function' ? arg(this) : arg\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 (v5.1.3): tooltip.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 findShadowRoot,\n getElement,\n getUID,\n isRTL,\n noop\n} from './util/index'\nimport { DefaultAllowlist } from './util/sanitizer'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport BaseComponent from './base-component'\nimport TemplateFactory from './util/template-factory'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\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 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 animation: true,\n template: '<div class=\"tooltip\" role=\"tooltip\">' +\n '<div class=\"tooltip-arrow\"></div>' +\n '<div class=\"tooltip-inner\"></div>' +\n '</div>',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: [0, 0],\n container: false,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n boundary: 'clippingParents',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n allowList: DefaultAllowlist,\n popperConfig: null\n}\n\nconst DefaultType = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(array|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacements: 'array',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n allowList: 'object',\n popperConfig: '(null|object|function)'\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\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 = false\n this._activeTrigger = {}\n this._popper = null\n this._templateFactory = null\n\n // Protected\n this.tip = null\n\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 static get Event() {\n return Event\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(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const context = this._initializeOnDelegatedTarget(event)\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter()\n } else {\n context._leave()\n }\n\n return\n }\n\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.tip) {\n this.tip.remove()\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.Event.SHOW)\n const shadowRoot = findShadowRoot(this._element)\n const isInTheDom = shadowRoot === null ?\n this._element.ownerDocument.documentElement.contains(this._element) :\n shadowRoot.contains(this._element)\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return\n }\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.Event.INSERTED)\n }\n\n if (this._popper) {\n this._popper.update()\n } else {\n this._createPopper(tip)\n }\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 const previousHoverState = this._isHovered\n\n this._isHovered = false\n EventHandler.trigger(this._element, this.constructor.Event.SHOWN)\n\n if (previousHoverState) {\n this._leave()\n }\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.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 = false\n\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n if (!this._isHovered) {\n tip.remove()\n }\n\n this._element.removeAttribute('aria-describedby')\n EventHandler.trigger(this._element, this.constructor.Event.HIDDEN)\n\n this._disposePopper()\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._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 let isShown = false\n if (this.tip) {\n isShown = this._isShown()\n this.tip.remove()\n this.tip = null\n }\n\n this._disposePopper()\n this.tip = this._createTipElement(content)\n\n if (isShown) {\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._config.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 = typeof this._config.placement === 'function' ?\n this._config.placement.call(this, tip, this._element) :\n this._config.placement\n const attachment = AttachmentMap[placement.toUpperCase()]\n this._popper = 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 typeof arg === 'function' ? arg.call(this._element) : arg\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 ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\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.Event.CLICK, this._config.selector, event => this.toggle(event))\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSEENTER :\n this.constructor.Event.FOCUSIN\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSELEAVE :\n this.constructor.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 if (this._config.selector) {\n this._config = {\n ...this._config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const title = this._config.originalTitle\n\n if (!title) {\n return\n }\n\n if (!this._element.getAttribute('aria-label') && !this._element.textContent) {\n this._element.setAttribute('aria-label', title)\n }\n\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 config.originalTitle = this._element.getAttribute('title') || ''\n config.title = this._resolvePossibleFunction(config.title) || config.originalTitle\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 in this._config) {\n if (this.constructor.Default[key] !== this._config[key]) {\n config[key] = this._config[key]\n }\n }\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\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 (v5.1.3): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport Tooltip from './tooltip'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\nconst Default = {\n ...Tooltip.Default,\n placement: 'right',\n offset: [0, 8],\n trigger: 'click',\n content: '',\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}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(null|string|element|function)'\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\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 static get Event() {\n return Event\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 (v5.1.3): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin, getElement, getSelectorFromElement } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\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_SCROLL = `scroll${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_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_LIST_ITEMS}, .${CLASS_NAME_DROPDOWN_ITEM}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\nconst Default = {\n offset: 10,\n method: 'auto',\n target: ''\n}\n\nconst DefaultType = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n this._scrollElement = this._element.tagName === 'BODY' ? window : this._element\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process())\n\n this.refresh()\n this._process()\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._offsets = []\n this._targets = []\n this._scrollHeight = this._getScrollHeight()\n\n const autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION\n const offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method\n const offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0\n const targets = SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target)\n .map(element => {\n const targetSelector = getSelectorFromElement(element)\n const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null\n\n if (!target) {\n return null\n }\n\n const targetBCR = target.getBoundingClientRect()\n\n return targetBCR.width || targetBCR.height ?\n [Manipulator[offsetMethod](target).top + offsetBase, targetSelector] :\n null\n })\n .filter(Boolean)\n .sort((a, b) => a[0] - b[0])\n\n for (const target of targets) {\n this._offsets.push(target[0])\n this._targets.push(target[1])\n }\n }\n\n dispose() {\n EventHandler.off(this._scrollElement, EVENT_KEY)\n super.dispose()\n }\n\n // Private\n\n _configAfterMerge(config) {\n config.target = getElement(config.target) || document.documentElement\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window ?\n this._scrollElement.pageYOffset :\n this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window ?\n window.innerHeight :\n this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n for (const i of this._offsets.keys()) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = SELECTOR_LINK_ITEMS.split(',')\n .map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const link = SelectorEngine.findOne(queries.join(','), this._config.target)\n\n link.classList.add(CLASS_NAME_ACTIVE)\n if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN))\n .classList.add(CLASS_NAME_ACTIVE)\n } else {\n for (const listGroup of SelectorEngine.parents(link, 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_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`)) {\n item.classList.add(CLASS_NAME_ACTIVE)\n }\n\n // Handle special case when .nav-link is inside .nav-item\n for (const navItem of SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS)) {\n for (const item of SelectorEngine.children(navItem, SELECTOR_NAV_LINKS)) {\n item.classList.add(CLASS_NAME_ACTIVE)\n }\n }\n }\n }\n\n EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {\n relatedTarget: target\n })\n }\n\n _clear() {\n const activeNodes = SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target)\n .filter(node => node.classList.contains(CLASS_NAME_ACTIVE))\n\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 (typeof data[config] === 'undefined') {\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 new ScrollSpy(spy) // eslint-disable-line no-new\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(ScrollSpy)\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin, getElementFromSelector, isDisabled, reflow } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\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}`\n\nconst CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_UL = ':scope > li > .active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active'\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n show() {\n if (this._element.parentNode &&\n this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n this._element.classList.contains(CLASS_NAME_ACTIVE)) {\n return\n }\n\n const target = getElementFromSelector(this._element)\n const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP)\n let previous\n\n if (listElement) {\n const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE\n previous = SelectorEngine.find(itemSelector, listElement)\n previous = previous[previous.length - 1]\n }\n\n const hideEvent = previous ?\n EventHandler.trigger(previous, EVENT_HIDE, { relatedTarget: this._element }) :\n null\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget: previous })\n\n if (showEvent.defaultPrevented || (hideEvent !== null && hideEvent.defaultPrevented)) {\n return\n }\n\n this._activate(this._element, listElement)\n\n const complete = () => {\n EventHandler.trigger(previous, EVENT_HIDDEN, { relatedTarget: this._element })\n EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget: previous })\n }\n\n if (target) {\n this._activate(target, target.parentNode, complete)\n } else {\n complete()\n }\n }\n\n // Private\n _activate(element, container, callback) {\n const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ?\n SelectorEngine.find(SELECTOR_ACTIVE_UL, container) :\n SelectorEngine.children(container, SELECTOR_ACTIVE)\n\n const active = activeElements[0]\n const isTransitioning = callback && (active && active.classList.contains(CLASS_NAME_FADE))\n\n const complete = () => this._transitionComplete(element, active, callback)\n\n if (active && isTransitioning) {\n active.classList.remove(CLASS_NAME_SHOW)\n this._queueCallback(complete, element, true)\n } else {\n complete()\n }\n }\n\n _transitionComplete(element, active, callback) {\n if (active) {\n active.classList.remove(CLASS_NAME_ACTIVE)\n\n const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode)\n\n if (dropdownChild) {\n dropdownChild.classList.remove(CLASS_NAME_ACTIVE)\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false)\n }\n }\n\n element.classList.add(CLASS_NAME_ACTIVE)\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true)\n }\n\n reflow(element)\n\n if (element.classList.contains(CLASS_NAME_FADE)) {\n element.classList.add(CLASS_NAME_SHOW)\n }\n\n let parent = element.parentNode\n if (parent && parent.nodeName === 'LI') {\n parent = parent.parentNode\n }\n\n if (parent && parent.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {\n const dropdownElement = element.closest(SELECTOR_DROPDOWN)\n\n if (dropdownElement) {\n for (const dropdown of SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement)) {\n dropdown.classList.add(CLASS_NAME_ACTIVE)\n }\n }\n\n element.setAttribute('aria-expanded', true)\n }\n\n if (callback) {\n callback()\n }\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 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 if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n const data = Tab.getOrCreateInstance(this)\n data.show()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tab)\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin, reflow } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\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._element.classList.contains(CLASS_NAME_SHOW)) {\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._element.classList.contains(CLASS_NAME_SHOW)) {\n this._element.classList.remove(CLASS_NAME_SHOW)\n }\n\n super.dispose()\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 case 'focusin':\n case 'focusout':\n this._hasKeyboardInteraction = isInteracting\n break\n default:\n break\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"]}